--- /dev/null
+# -*- text -*-
+# Copyright (C) 2025 The FreeRADIUS Server project and contributors
+# This work is licensed under CC-BY version 4.0 https://creativecommons.org/licenses/by/4.0
+# Version $Id$
+
+proto der
+proto-dictionary der
+
+load-dictionary dictionary.test
+
+fuzzer-out der
+max-buffer-size 2048
+
+proto-dictionary-root Test-Seq-Of
+
+decode-pair 30 06 02 01 01 02 01 02
+match Test-Seq-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
+
+proto-dictionary-root Test-Seq-Of
+
+decode-pair 30 06 02 01 01 01 01 FF
+match Attribute Test-Seq-Of is a sequence-of, but received tag 1
+
+proto-dictionary-root Test-Set-Of
+
+decode-pair 31 06 02 01 01 02 01 02
+match Test-Set-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
+
+decode-pair 31 07 02 02 00 80 02 01 02
+match Set tags are not in ascending order. Previous item has more data
+
+proto-dictionary-root Test-Set-Of
+
+decode-pair 31 06 02 01 01 01 01 FF
+match Attribute Test-Set-Of is a set-of DER type 'integer', but found DER type 'boolean'
+
+proto-dictionary-root Test-String-Max
+
+decode-pair 16 02 68 69
+match Test-String-Max = "hi"
+
+decode-pair 1681f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Data length (247) exceeds max size (5)
+
+proto-dictionary-root Foo
+
+# Test the fuzzer with a dictionary of DER-encoded PKCS#10 requests
+
+decode-pair 30 03 02 01 80
+match Foo = { Test-Integer = -128 }
+
+decode-pair 30 03 02 01 7F
+match Foo = { Test-Integer = 127 }
+
+decode-pair 30 04 02 02 00 80
+match Foo = { Test-Integer = 128 }
+
+decode-pair 30 04 02 02 FF 80
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 04 02 02 00 70
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 04 02 02 80 00
+match Foo = { Test-Integer = -32768 }
+
+decode-pair 30 04 02 02 7F FF
+match Foo = { Test-Integer = 32767 }
+
+decode-pair 30 05 02 03 00 80 00
+match Foo = { Test-Integer = 32768 }
+
+decode-pair 30 05 02 03 FF 80 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 05 02 03 00 70 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 05 02 03 80 00 00
+match Foo = { Test-Integer = -8388608 }
+
+decode-pair 30 05 02 03 7F FF FF
+match Foo = { Test-Integer = 8388607 }
+
+decode-pair 30 06 02 04 00 80 00 00
+match Foo = { Test-Integer = 8388608 }
+
+decode-pair 30 06 02 04 FF 80 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 06 02 04 00 70 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 06 02 04 80 00 00 00
+match Foo = { Test-Integer = -2147483648 }
+
+decode-pair 30 06 02 04 7F FF FF FF
+match Foo = { Test-Integer = 2147483647 }
+
+decode-pair 30 07 02 05 00 80 00 00 00
+match Foo = { Test-Integer = 2147483648 }
+
+decode-pair 30 07 02 05 FF 80 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 07 02 05 00 70 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 07 02 05 80 00 00 00 00
+match Foo = { Test-Integer = -549755813888 }
+
+decode-pair 30 07 02 05 7F FF FF FF FF
+match Foo = { Test-Integer = 549755813887 }
+
+decode-pair 30 08 02 06 00 80 00 00 00 00
+match Foo = { Test-Integer = 549755813888 }
+
+decode-pair 30 08 02 06 FF 80 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 08 02 06 00 70 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 08 02 06 80 00 00 00 00 00
+match Foo = { Test-Integer = -140737488355328 }
+
+decode-pair 30 08 02 06 7F FF FF FF FF FF
+match Foo = { Test-Integer = 140737488355327 }
+
+decode-pair 30 09 02 07 00 80 00 00 00 00 00
+match Foo = { Test-Integer = 140737488355328 }
+
+decode-pair 30 09 02 07 FF 80 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 09 02 07 00 70 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 09 02 07 80 00 00 00 00 00 00
+match Foo = { Test-Integer = -36028797018963968 }
+
+decode-pair 30 09 02 07 7F FF FF FF FF FF FF
+match Foo = { Test-Integer = 36028797018963967 }
+
+decode-pair 30 0A 02 08 00 80 00 00 00 00 00 00
+match Foo = { Test-Integer = 36028797018963968 }
+
+decode-pair 30 0A 02 08 FF 80 00 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 0A 02 08 00 70 00 00 00 00 00 00
+match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
+
+decode-pair 30 0A 02 08 80 00 00 00 00 00 00 00
+match Foo = { Test-Integer = -9223372036854775808 }
+
+decode-pair 30 0A 02 08 7F FF FF FF FF FF FF FF
+match Foo = { Test-Integer = 9223372036854775807 }
+
+decode-pair 30 0B 02 09 00 80 00 00 00 00 00 00 00
+match Integer too large (9)
+
+decode-pair 30 13 02 11 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+match Integer too large (17)
+
+proto-dictionary-root Bar
+
+decode-pair 30 03 01 01 00
+match Bar = { Test-Boolean = no }
+
+decode-pair 30 03 01 01 FF
+match Bar = { Test-Boolean = yes }
+
+decode-pair 30 03 01 01 01
+match Boolean is not correctly DER encoded (0x00 or 0xff).
+
+proto-dictionary-root Foo-Bar
+
+decode-pair 30 06 02 01 09 01 01 00
+match Foo-Bar = { Test-Integer = 9, Test-Boolean = no }
+
+decode-pair 30 06 02 01 09 01 01 FF
+match Foo-Bar = { Test-Integer = 9, Test-Boolean = yes }
+
+decode-pair 30 06 02 01 01 01 01 FF
+match Foo-Bar = { Test-Integer = ::DEFAULT, Test-Boolean = yes }
+
+decode-pair 30 03 01 01 FF
+match Foo-Bar = { Test-Integer = ::DEFAULT, Test-Boolean = yes }
+
+decode-pair 30 06 02 01 09 01 01 01
+match Boolean is not correctly DER encoded (0x00 or 0xff).
+
+decode-pair 30 06 02 02 09 01 01 FF
+match Length field too large (127): Failed decoding header
+
+proto-dictionary-root SEQ-BITSTRING-OCTETS
+
+decode-pair 30 04 03 02 00 01
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x0001 }
+
+decode-pair 30 03 03 01 00
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x00 }
+
+decode-pair 30 04 03 02 01 02
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x0102 }
+
+decode-pair 30 04 03 02 01 03
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x0102 }
+
+decode-pair 30 05 03 03 01 03 03
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x010302 }
+
+decode-pair 30 09 03 07 04 0A 3B 5F 29 1C D0
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x040a3b5f291cd0 }
+
+decode-pair 30 09 03 07 04 0A 3B 5F 29 1C DF
+match Seq-Bitstring-Octets = { Test-Bitstring = 0x040a3b5f291cd0 }
+
+decode-pair 30 04 03 01
+match Insufficient data for length field (4): Failed decoding header
+
+decode-pair 30 04 03 01 08
+match Insufficient data for length field (4): Failed decoding header
+
+decode-pair 30 04 03 01 01
+match Insufficient data for length field (4): Failed decoding header
+
+proto-dictionary-root Bitstring-Struct
+
+decode-pair 03 02 00 01
+match Bitstring-Struct = { foo = 1 }
+
+decode-pair 03 02 00 00
+match Bitstring-Struct = { foo = 0 }
+
+decode-pair 03 03 00 FB FB
+match Bitstring-Struct = { foo = 251, bar = 15, foo-bar = 11 }
+
+decode-pair 03 03 00 FF FF
+match Bitstring-Struct = { foo = 255, bar = 15, foo-bar = 15 }
+
+decode-pair 03 04 00 FF FF FF
+# match Bitstring structure decoder didn't consume all data
+
+proto-dictionary-root Bitstring-Struct-7
+
+decode-pair 03 02 01 FB
+match Bitstring-Struct-7 = { foo = 3, bar = yes, foo-bar = 13 }
+
+proto-dictionary-root Octetstring
+
+decode-pair 04 01 00
+match Octetstring = 0x00
+
+decode-pair 04 01 FF
+match Octetstring = 0xff
+
+decode-pair 04 08 ff ff ff ff ff ff ff ff
+match Octetstring = 0xffffffffffffffff
+
+proto-dictionary-root Seq-Octetstring
+
+decode-pair 30 03 04 01 00
+match Seq-Octetstring = { Octetstring = 0x00 }
+
+decode-pair 30 03 04 01 FF
+match Seq-Octetstring = { Octetstring = 0xff }
+
+decode-pair 30 0A 04 08 ff ff ff ff ff ff ff ff
+match Seq-Octetstring = { Octetstring = 0xffffffffffffffff }
+
+proto-dictionary-root Test-Null
+
+decode-pair 05 00
+match Test-NULL = no
+
+proto-dictionary-root Test-Enumerated
+
+decode-pair 0a 02 04 d2
+match Test-Enumerated = 1234
+
+proto-dictionary-root Seq-Null
+
+decode-pair 30 02 05 00
+match Seq-Null = { Test-Null = no }
+
+decode-pair 30 02 05 01
+match Insufficient data for length field (1): Failed decoding header
+
+proto-dictionary-root Seq-Integer-Null
+
+decode-pair 30 05 02 01 01 05 00
+match Seq-Integer-Null = { Test-Integer = 1, Test-Null = no }
+
+proto-dictionary-root Test-Oid
+
+decode-pair 06 03 88 37 03
+match Test-Oid = "2.999.3"
+
+decode-pair 06 09 2a 86 48 86 f7 0d 01 01 0B
+match Test-Oid = "1.2.840.113549.1.1.11"
+
+decode-pair 06 0A 2a 86 48 ff 86 f7 0d 01 01 0b
+match Test-Oid = "1.2.840.266451853.1.1.11"
+
+decode-pair 06 0B 2a 86 48 ff ff 86 f7 0d 01 01 0b
+match Test-Oid = "1.2.840.34357754765.1.1.11"
+
+decode-pair 06 0C 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+match Test-Oid = "1.2.840.4398044527501.1.1.11"
+
+decode-pair 06 0C 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.34359738367.13.1.1.11"
+
+decode-pair 06 0D 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.4398046511103.13.1.1.11"
+
+decode-pair 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.562949953421311.13.1.1.11"
+
+decode-pair 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.72057594037927935.13.1.1.11"
+
+decode-pair 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Test-Oid = "1.2.840.9223372036854775807.13.1.1.11"
+
+decode-pair 06 11 2a 86 48 ff ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 06 12 2a 86 48 ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 06 19 2a 86 48 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+proto-dictionary-root Seq-Oid
+
+decode-pair 30 05 06 03 88 37 03
+match Seq-Oid = { Test-Oid = "2.999.3" }
+
+decode-pair 30 0b 06 09 2a 86 48 86 f7 0d 01 01 0B
+match Seq-Oid = { Test-Oid = "1.2.840.113549.1.1.11" }
+
+decode-pair 30 0C 06 0A 2a 86 48 ff 86 f7 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.266451853.1.1.11" }
+
+decode-pair 30 0d 06 0B 2a 86 48 ff ff 86 f7 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.34357754765.1.1.11" }
+
+decode-pair 30 0e 06 0C 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.4398044527501.1.1.11" }
+
+decode-pair 30 0e 06 0C 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.34359738367.13.1.1.11" }
+
+decode-pair 30 0f 06 0D 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.4398046511103.13.1.1.11" }
+
+decode-pair 30 10 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.562949953421311.13.1.1.11" }
+
+decode-pair 30 11 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.72057594037927935.13.1.1.11" }
+
+decode-pair 30 12 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match Seq-Oid = { Test-Oid = "1.2.840.9223372036854775807.13.1.1.11" }
+
+decode-pair 30 13 06 11 2a 86 48 ff ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 30 14 06 12 2a 86 48 ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+decode-pair 30 1b 06 19 2a 86 48 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
+match OID subidentifier too large (9 chunks)
+
+proto-dictionary-root Test-String
+
+# Test IA5String
+decode-pair 16 02 68 69
+match Test-String = "hi"
+
+decode-pair 1681f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 16820783496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+
+# Test UTF8String
+decode-pair 0c81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 0c820783496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+
+decode-pair 0c 04 f0 9f 98 8e
+match Test-String = "😎"
+
+decode-pair 0c 04 f0 9f 98
+match Insufficient data for length field (4): Failed decoding header
+
+# Test PrintableString
+decode-pair 13 02 68 69
+match Test-String = "hi"
+
+decode-pair 134a4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?"
+
+decode-pair 1381f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 138208af496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 13820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+decode-pair 13 01 21
+match Invalid character in a string (33)
+
+# Test T61String
+decode-pair 140c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1481f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 14820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+# Test VisibleString
+decode-pair 1a0c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1a81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 1a820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+# Test GeneralString
+decode-pair 1b0c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1b81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 1b820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+# Test UniversalString
+decode-pair 1c0c68656c6c6f20746865726521
+match Test-String = "hello there!"
+
+decode-pair 1c81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
+
+decode-pair 1c820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+
+proto-dictionary-root Seq-String
+
+# Test IA5String
+decode-pair 30 04 16 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 81 fa 16 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 87 16 82 07 83 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end." }
+
+# Test UTF8String
+decode-pair 30 04 0c 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 81 fa 0c 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 87 0c 82 07 83 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end." }
+
+decode-pair 30 06 0c 04 f0 9f 98 8e
+match Seq-String = { Test-String = "😎" }
+
+decode-pair 30 06 0c 04 f0 9f 98
+match Insufficient data for length field (6): Failed decoding header
+
+# Test PrintableString
+decode-pair 30 04 13 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 13 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 13 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 13 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 13 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+decode-pair 30 03 13 01 21
+match Invalid character in a string (33)
+
+# Test T61String
+decode-pair 30 04 14 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 14 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 14 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 14 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 14 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+# Test VisibleString
+decode-pair 30 04 1A 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 1A 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 1A 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 1A 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 1A 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+# Test GeneralString
+decode-pair 30 04 1B 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 1B 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 1B 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 1B 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 1B 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+# Test UniversalString
+decode-pair 30 04 1c 02 68 69
+match Seq-String = { Test-String = "hi" }
+
+decode-pair 30 4c 1c 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
+match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
+
+decode-pair 30 81 fa 1c 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 08 b3 1c 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
+
+decode-pair 30 82 07 7D 1c 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
+match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
+
+proto-dictionary-root Test-Date
+
+decode-pair 17 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
+match Test-Date = "2019-12-16T03:02:10Z"
+
+# Test GeneralizedTime
+decode-pair 180f32303139313231363033303231305a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 18 13 32 30 31 35313233313233353935392e3132335a
+match Test-Date = "2015-12-31T23:59:59Z"
+
+decode-pair 181132303139313231363033303231302e305a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181132303139313231363033303231302e315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181232303139313231363033303231302e30315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181432303139313231363033303231302e303030315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 181632303139313231363033303231302e3030303030315a
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 18 13 32 303139313231363033303231302e30303031
+match Test-Date = "2019-12-16T03:02:10Z"
+
+decode-pair 18 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
+match Insufficient data for generalized time or incorrect length
+
+decode-pair 18 14 32 30 31 39 31 32 31 36 30 33 00 32 31 30 2e 30 30 30 31 5a
+match Generalized time contains null byte
+
+decode-pair 18 14 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 30 30 00 31 5a
+match Generalized time contains null byte in subseconds
+
+decode-pair 18 10 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 5a
+match Insufficient data for subseconds
+
+proto-dictionary-root Seq-Date
+
+decode-pair 30 0F 17 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
+match Seq-Date = { Test-Date = "2019-12-16T03:02:10Z" }
+
+# Test GeneralizedTime
+decode-pair 30 11 180f32303139313231363033303231305a
+match Seq-Date = { Test-Date = "2019-12-16T03:02:10Z" }
+
+# Test Set
+proto-dictionary-root Set-Bool-Integer
+
+decode-pair 3106010100020109
+match Set-Bool-Integer = { Test-Bool = no, Test-Integer = 9 }
+
+decode-pair 3106020109010100
+match Expected parent type 'int64', got attribute Test-Bool of type bool
+
+# Test sub_type
+proto der
+proto-dictionary der
+proto-dictionary-root Test-String-UTF8
+
+decode-pair 0c 04 f0 9f 98 8e
+match Test-String-UTF8 = "😎"
+
+# Test Context-Specific
+proto-dictionary-root Test-Context-Specific
+
+decode-pair 80 01 00
+match Test-Context-Specific = no
+
+# Test-Encode
+#proto der
+#proto-dictionary pkcs10
+#fuzzer-out der
+
+proto-dictionary-root Test-Boolean
+
+decode-pair 01 01 FF
+match Test-Boolean = yes
+
+# proto der
+proto-dictionary der
+# proto-dictionary-root Test-Boolean
+
+encode-pair Test-Boolean = yes
+match 01 01 ff
+
+encode-pair Test-Boolean = no
+match 01 01 00
+
+encode-pair Test-Integer = 1
+match 02 01 01
+
+encode-pair Test-Integer = 549755813887
+match 02 05 7f ff ff ff ff
+
+encode-pair Test-Integer = 9223372036854775807
+match 02 08 7f ff ff ff ff ff ff ff
+
+# Test Bitstring
+
+encode-pair Test-Bitstring = 0x040a3b5f291cd0
+match 03 07 04 0a 3b 5f 29 1c d0
+
+encode-pair Bitstring-Struct = { foo = 1 }
+match 03 02 00 01
+
+encode-pair Bitstring-Struct = { foo = 0 }
+match 03 02 00 00
+
+encode-pair Bitstring-Struct = { foo = 251, bar = 15, foo-bar = 11 }
+match 03 03 00 fb fb
+
+encode-pair Bitstring-Struct = { foo = 255, bar = 15, foo-bar = 15 }
+match 03 03 00 ff ff
+
+encode-pair Octetstring = 0x00
+match 04 01 00
+
+encode-pair Octetstring = 0xff
+match 04 01 ff
+
+encode-pair Octetstring = 0xffffffffffffffff
+match 04 08 ff ff ff ff ff ff ff ff
+
+encode-pair Test-NULL = 0
+match 05 00
+
+encode-pair Test-NULL = 1
+match 05 00
+
+encode-pair Test-NULL = 1234
+match 05 00
+
+# Test Enumerated Encoding
+encode-pair Test-Enumerated = 1234
+match 0a 02 04 d2
+
+encode-pair Test-Enumerated = A
+match Failed parsing string as type 'int64'
+
+# Test UTC Time
+encode-pair Test-UTC = "2019-12-16T03:02:10Z"
+match 17 0d 31 39 31 32 31 36 30 33 30 32 31 30 5a
+
+# Test GeneralizedTime
+encode-pair Test-Generalized-Time = "2019-12-16T03:02:10Z"
+match 18 0f 32 30 31 39 31 32 31 36 30 33 30 32 31 30 5a
+
+encode-pair Test-Generalized-Time = "2019-12-16T03:02:10.0000Z"
+match 18 0f 32 30 31 39 31 32 31 36 30 33 30 32 31 30 5a
+
+encode-pair Test-Generalized-Time = "2019-12-16T03:02:10.0100Z"
+match 18 12 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 30 31 5a
+
+encode-pair Test-Generalized-Time = "2015-12-31T23:59:59.1230Z"
+match 18 13 32 30 31 35 31 32 33 31 32 33 35 39 35 39 2e 31 32 33 5a
+
+encode-pair Test-String = "foo"
+match 0c 03 66 6f 6f
+
+# Test UTF8 Encoding
+
+encode-pair Test-String-UTF8 = "In a hole in the ground there lived a hobbit."
+match 0c 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test PrintableString Encoding
+
+encode-pair Test-String-Printable = "In a hole in the ground there lived a hobbit."
+match 13 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+encode-pair Test-String-Printable = "Bad character !"
+match 13 0f 42 61 64 20 63 68 61 72 61 63 74 65 72 20 21
+
+# Test T61String Encoding
+
+encode-pair Test-String-T61 = "In a hole in the ground there lived a hobbit."
+match 14 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+encode-pair Test-String-T61 = "Bad character {}"
+match 14 10 42 61 64 20 63 68 61 72 61 63 74 65 72 20 7b 7d
+
+# Test IA5String Encoding
+
+encode-pair Test-String-IA5 = "In a hole in the ground there lived a hobbit."
+match 16 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test VisibleString Encoding
+encode-pair Test-String-Visible = "In a hole in the ground there lived a hobbit."
+match 1a 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test GeneralString Encoding
+encode-pair Test-String-General = "In a hole in the ground there lived a hobbit."
+match 1b 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+# Test UniversalString Encoding
+encode-pair Test-String-Universal = "In a hole in the ground there lived a hobbit."
+match 1c 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
+
+max-buffer-size 2048
+
+# Test UTF8 Encoding
+
+encode-pair Test-String-UTF8 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+match 0c 82 07 83 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 e2 80 93 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 e2 80 93 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 e2 80 93 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 e2 80 99 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 e2 80 93 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test PrintableString Encoding
+
+encode-pair Test-String-Printable = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 13 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test T61String Encoding
+encode-pair Test-String-T61 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 14 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test IA5String Encoding
+encode-pair Test-String-IA5 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
+match 16 82 07 83 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 e2 80 93 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 e2 80 93 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 e2 80 93 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 e2 80 99 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 e2 80 93 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test VisibleString Encoding
+encode-pair Test-String-Visible = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 1a 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test GeneralString Encoding
+encode-pair Test-String-General = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 1b 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test UniversalString Encoding
+encode-pair Test-String-Universal = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
+match 1c 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
+
+# Test Sequence
+
+encode-pair Foo = { Test-Integer = 127 }
+match 30 03 02 01 7f
+
+encode-pair Foo-Bar = { Test-Integer = 9, Test-Boolean = no }
+match 30 06 02 01 09 01 01 00
+
+encode-pair Foo-Bar = { Test-Integer = 9, Test-Boolean = yes }
+match 30 06 02 01 09 01 01 ff
+
+encode-pair Test-Sequence-TLV = { Test-Integer = 9, Test-Boolean = no }
+match 30 06 02 01 09 01 01 00
+
+encode-pair Test-Sequence-TLV = { Test-Integer = 9, Test-Boolean = yes }
+match 30 06 02 01 09 01 01 ff
+
+encode-pair Test-Sequence-Group = { Test-Integer = 9 }
+match 30 03 02 01 09
+
+encode-pair Test-Sequence-Group = { Test-Integer = 9, Test-Boolean = yes }
+match 30 06 02 01 09 01 01 ff
+
+encode-pair Test-Set-Struct = { Test-Integer = 9, Test-Boolean = no }
+match 31 06 01 01 00 02 01 09
+
+encode-pair Test-Set-Struct = { Test-Integer = 9, Test-Boolean = yes }
+match 31 06 01 01 ff 02 01 09
+
+encode-pair Test-Set-TLV = { Test-Integer = 9, Test-Boolean = no }
+match 31 06 01 01 00 02 01 09
+
+encode-pair Test-Set-TLV = { Test-Integer = 9, Test-Boolean = yes }
+match 31 06 01 01 ff 02 01 09
+
+encode-pair Test-Set-GROUP = { Test-Integer = 9 }
+match 31 03 02 01 09
+
+encode-pair Test-Set-GROUP = { Test-Integer = 9, Test-Boolean = yes }
+match 31 06 01 01 ff 02 01 09
+
+encode-pair Test-Oid = "2.999.3"
+match 06 03 88 37 03
+
+encode-pair Test-Oid = "1.2.840.113549.1.1.11"
+match 06 09 2a 86 48 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.266451853.1.1.11"
+match 06 0a 2a 86 48 ff 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.34357754765.1.1.11"
+match 06 0b 2a 86 48 ff ff 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.4398044527501.1.1.11"
+match 06 0c 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.34359738367.13.1.1.11"
+match 06 0c 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.4398046511103.13.1.1.11"
+match 06 0d 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.562949953421311.13.1.1.11"
+match 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.72057594037927935.13.1.1.11"
+match 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Oid = "1.2.840.9223372036854775807.13.1.1.11"
+match 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.113549.1.1.11" }
+match 30 0b 06 09 2a 86 48 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.266451853.1.1.11" }
+match 30 0c 06 0a 2a 86 48 ff 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.34357754765.1.1.11" }
+match 30 0d 06 0b 2a 86 48 ff ff 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.4398044527501.1.1.11" }
+match 30 0e 06 0c 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.34359738367.13.1.1.11" }
+match 30 0e 06 0c 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.4398046511103.13.1.1.11" }
+match 30 0f 06 0d 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.562949953421311.13.1.1.11" }
+match 30 10 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.72057594037927935.13.1.1.11" }
+match 30 11 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Seq-Oid = { Test-Oid = "1.2.840.9223372036854775807.13.1.1.11" }
+match 30 12 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
+
+encode-pair Test-Seq-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
+match 30 06 02 01 01 02 01 02
+
+encode-pair Test-Set-Of = { Test-First-Integer = 1, Test-First-Integer = 2580 }
+match 31 07 02 01 01 02 02 0a 14
+
+encode-pair Test-Set-Of = { Test-First-Integer = 2, Test-First-Integer = 1 }
+match 31 06 02 01 01 02 01 02
+
+encode-pair Test-Set-Of-Group = { Test-First-Integer = 2, Test-First-Integer = 1 }
+match 31 06 02 01 01 02 01 02
+
+encode-pair Foo-Bar = { Test-Integer = 1, Test-Boolean = yes }
+match 30 03 01 01 ff
+
+encode-pair Issuer = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }
+match 30 3f 31 24 30 22 06 03 55 04 0a 13 1b 44 69 67 69 74 61 6c 20 53 69 67 6e 61 74 75 72 65 20 54 72 75 73 74 20 43 6f 2e 31 17 30 15 06 03 55 04 03 13 0e 44 53 54 20 52 6f 6f 74 20 43 41 20 58 33
+
+count
+match 565
decode-pair 30 81 D0 30 81 83 02 01 00 30 0F 31 0D 30 0B 06 03 55 04 03 0C 04 74 65 73 74 30 2A 30 05 06 03 2B 65 70 03 21 00 FB 16 E6 BD 64 5F B0 3D 75 5D 0C 20 70 42 BF 80 AA 7C BA 38 5B EC DB 9C 19 FC FE 0B C9 5B 18 98 A0 41 30 3F 06 09 2A 86 48 86 F7 0D 01 09 0E 31 32 30 30 30 2E 06 03 55 1D 11 04 27 30 25 A0 23 06 0A 2B 06 01 04 01 82 37 14 02 03 A0 15 0C 13 61 64 64 72 65 73 73 40 64 6F 6D 61 69 6E 2E 74 65 73 74 30 05 06 03 2B 65 70 03 41 00 52 9E 45 7A 71 C5 D6 B6 73 44 65 3E EF 08 85 FB F0 F5 6D FC 83 44 5D 1D CD 6C F6 B2 5E 38 9E 5B 6E F2 22 E3 1C ED DA 21 F3 93 61 6A 6A 66 56 83 83 50 6A DC BE C5 71 BE C8 7F 8C 99 02 C1 39 0B
match CertificateRequest = { certificationRequestInfo = { version = 0, subject = { RelativeDistinguishedName = { AttributeTypeandValue = { OID = "2.5.4.3", Value-Thing = "test" } } }, subjectPublicKeyInfo = { algorithm = { OID = "1.3.101.112" }, subjectPublicKey = 0x00fb16e6bd645fb03d755d0c207042bf80aa7cba385becdb9c19fcfe0bc95b1898 }, Attributes = { Attribute-thing = { OID = "1.2.840.113549.1.9.14", Extensions = { joint-iso-itu-t = { ds = { certificateExtension = { subjectAltName = { otherName = { type-id = "1.3.6.1.4.1.311.20.2.3", Value-thing = { userPrincipalName = "address@domain.test" } } } } } } } } } }, signatureAlgorithm = { OID = "1.3.101.112" }, signature = 0x00529e457a71c5d6b67344653eef0885fbf0f56dfc83445d1dcd6cf6b25e389e5b6ef222e31cedda21f393616a6a66568383506adcbec571bec87f8c9902c1390b }
+
+count
+match 9
decode-pair 31 3F 31 24 30 22 06 03 55 04 0A 13 1B 44 69 67 69 74 61 6C 20 53 69 67 6E 61 74 75 72 65 20 54 72 75 73 74 20 43 6F 2E 31 17 30 15 06 03 55 04 03 13 0E 44 53 54 20 52 6F 6F 74 20 43 41 20 58 33
match Issuer-Set = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }
-proto-dictionary-root Test-Seq-Of
-
-decode-pair 30 06 02 01 01 02 01 02
-match Test-Seq-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
-
-proto-dictionary-root Test-Seq-Of
-
-decode-pair 30 06 02 01 01 01 01 FF
-match Attribute Test-Seq-Of is a sequence-of, but received tag 1
-
-proto-dictionary-root Test-Set-Of
-
-decode-pair 31 06 02 01 01 02 01 02
-match Test-Set-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
-
-decode-pair 31 07 02 02 00 80 02 01 02
-match Set tags are not in ascending order. Previous item has more data
-
-proto-dictionary-root Test-Set-Of
-
-decode-pair 31 06 02 01 01 01 01 FF
-match Attribute Test-Set-Of is a set-of DER type 'integer', but found DER type 'boolean'
-
-proto-dictionary-root Test-String-Max
-
-decode-pair 16 02 68 69
-match Test-String-Max = "hi"
-
-decode-pair 1681f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Data length (247) exceeds max size (5)
-
-proto-dictionary-root Foo
-
-# Test the fuzzer with a dictionary of DER-encoded PKCS#10 requests
-
-decode-pair 30 03 02 01 80
-match Foo = { Test-Integer = -128 }
-
-decode-pair 30 03 02 01 7F
-match Foo = { Test-Integer = 127 }
-
-decode-pair 30 04 02 02 00 80
-match Foo = { Test-Integer = 128 }
-
-decode-pair 30 04 02 02 FF 80
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 04 02 02 00 70
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 04 02 02 80 00
-match Foo = { Test-Integer = -32768 }
-
-decode-pair 30 04 02 02 7F FF
-match Foo = { Test-Integer = 32767 }
-
-decode-pair 30 05 02 03 00 80 00
-match Foo = { Test-Integer = 32768 }
-
-decode-pair 30 05 02 03 FF 80 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 05 02 03 00 70 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 05 02 03 80 00 00
-match Foo = { Test-Integer = -8388608 }
-
-decode-pair 30 05 02 03 7F FF FF
-match Foo = { Test-Integer = 8388607 }
-
-decode-pair 30 06 02 04 00 80 00 00
-match Foo = { Test-Integer = 8388608 }
-
-decode-pair 30 06 02 04 FF 80 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 06 02 04 00 70 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 06 02 04 80 00 00 00
-match Foo = { Test-Integer = -2147483648 }
-
-decode-pair 30 06 02 04 7F FF FF FF
-match Foo = { Test-Integer = 2147483647 }
-
-decode-pair 30 07 02 05 00 80 00 00 00
-match Foo = { Test-Integer = 2147483648 }
-
-decode-pair 30 07 02 05 FF 80 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 07 02 05 00 70 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 07 02 05 80 00 00 00 00
-match Foo = { Test-Integer = -549755813888 }
-
-decode-pair 30 07 02 05 7F FF FF FF FF
-match Foo = { Test-Integer = 549755813887 }
-
-decode-pair 30 08 02 06 00 80 00 00 00 00
-match Foo = { Test-Integer = 549755813888 }
-
-decode-pair 30 08 02 06 FF 80 00 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 08 02 06 00 70 00 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 08 02 06 80 00 00 00 00 00
-match Foo = { Test-Integer = -140737488355328 }
-
-decode-pair 30 08 02 06 7F FF FF FF FF FF
-match Foo = { Test-Integer = 140737488355327 }
-
-decode-pair 30 09 02 07 00 80 00 00 00 00 00
-match Foo = { Test-Integer = 140737488355328 }
-
-decode-pair 30 09 02 07 FF 80 00 00 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 09 02 07 00 70 00 00 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 09 02 07 80 00 00 00 00 00 00
-match Foo = { Test-Integer = -36028797018963968 }
-
-decode-pair 30 09 02 07 7F FF FF FF FF FF FF
-match Foo = { Test-Integer = 36028797018963967 }
-
-decode-pair 30 0A 02 08 00 80 00 00 00 00 00 00
-match Foo = { Test-Integer = 36028797018963968 }
-
-decode-pair 30 0A 02 08 FF 80 00 00 00 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 0A 02 08 00 70 00 00 00 00 00 00
-match Integer is not correctly DER encoded. First two bytes are all 0s or all 1s.
-
-decode-pair 30 0A 02 08 80 00 00 00 00 00 00 00
-match Foo = { Test-Integer = -9223372036854775808 }
-
-decode-pair 30 0A 02 08 7F FF FF FF FF FF FF FF
-match Foo = { Test-Integer = 9223372036854775807 }
-
-decode-pair 30 0B 02 09 00 80 00 00 00 00 00 00 00
-match Integer too large (9)
-
-decode-pair 30 13 02 11 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-match Integer too large (17)
-
-proto-dictionary-root Bar
-
-decode-pair 30 03 01 01 00
-match Bar = { Test-Boolean = no }
-
-decode-pair 30 03 01 01 FF
-match Bar = { Test-Boolean = yes }
-
-decode-pair 30 03 01 01 01
-match Boolean is not correctly DER encoded (0x00 or 0xff).
-
-proto-dictionary-root Foo-Bar
-
-decode-pair 30 06 02 01 09 01 01 00
-match Foo-Bar = { Test-Integer = 9, Test-Boolean = no }
-
-decode-pair 30 06 02 01 09 01 01 FF
-match Foo-Bar = { Test-Integer = 9, Test-Boolean = yes }
-
-decode-pair 30 06 02 01 01 01 01 FF
-match Foo-Bar = { Test-Integer = ::DEFAULT, Test-Boolean = yes }
-
-decode-pair 30 03 01 01 FF
-match Foo-Bar = { Test-Integer = ::DEFAULT, Test-Boolean = yes }
-
-decode-pair 30 06 02 01 09 01 01 01
-match Boolean is not correctly DER encoded (0x00 or 0xff).
-
-decode-pair 30 06 02 02 09 01 01 FF
-match Length field too large (127): Failed decoding header
-
-proto-dictionary-root SEQ-BITSTRING-OCTETS
-
-decode-pair 30 04 03 02 00 01
-match Seq-Bitstring-Octets = { Test-Bitstring = 0x0001 }
-
-decode-pair 30 03 03 01 00
-match Seq-Bitstring-Octets = { Test-Bitstring = 0x00 }
-
-decode-pair 30 04 03 02 01 02
-match Seq-Bitstring-Octets = { Test-Bitstring = 0x0102 }
-
-decode-pair 30 04 03 02 01 03
-match Seq-Bitstring-Octets = { Test-Bitstring = 0x0102 }
-
-decode-pair 30 05 03 03 01 03 03
-match Seq-Bitstring-Octets = { Test-Bitstring = 0x010302 }
-
-decode-pair 30 09 03 07 04 0A 3B 5F 29 1C D0
-match Seq-Bitstring-Octets = { Test-Bitstring = 0x040a3b5f291cd0 }
-
-decode-pair 30 09 03 07 04 0A 3B 5F 29 1C DF
-match Seq-Bitstring-Octets = { Test-Bitstring = 0x040a3b5f291cd0 }
-
-decode-pair 30 04 03 01
-match Insufficient data for length field (4): Failed decoding header
-
-decode-pair 30 04 03 01 08
-match Insufficient data for length field (4): Failed decoding header
-
-decode-pair 30 04 03 01 01
-match Insufficient data for length field (4): Failed decoding header
-
-proto-dictionary-root Bitstring-Struct
-
-decode-pair 03 02 00 01
-match Bitstring-Struct = { foo = 1 }
-
-decode-pair 03 02 00 00
-match Bitstring-Struct = { foo = 0 }
-
-decode-pair 03 03 00 FB FB
-match Bitstring-Struct = { foo = 251, bar = 15, foo-bar = 11 }
-
-decode-pair 03 03 00 FF FF
-match Bitstring-Struct = { foo = 255, bar = 15, foo-bar = 15 }
-
-decode-pair 03 04 00 FF FF FF
-# match Bitstring structure decoder didn't consume all data
-
-proto-dictionary-root Bitstring-Struct-7
-
-decode-pair 03 02 01 FB
-match Bitstring-Struct-7 = { foo = 3, bar = yes, foo-bar = 13 }
-
-proto-dictionary-root Octetstring
-
-decode-pair 04 01 00
-match Octetstring = 0x00
-
-decode-pair 04 01 FF
-match Octetstring = 0xff
-
-decode-pair 04 08 ff ff ff ff ff ff ff ff
-match Octetstring = 0xffffffffffffffff
-
-proto-dictionary-root Seq-Octetstring
-
-decode-pair 30 03 04 01 00
-match Seq-Octetstring = { Octetstring = 0x00 }
-
-decode-pair 30 03 04 01 FF
-match Seq-Octetstring = { Octetstring = 0xff }
-
-decode-pair 30 0A 04 08 ff ff ff ff ff ff ff ff
-match Seq-Octetstring = { Octetstring = 0xffffffffffffffff }
-
-proto-dictionary-root Test-Null
-
-decode-pair 05 00
-match Test-NULL = no
-
-proto-dictionary-root Test-Enumerated
-
-decode-pair 0a 02 04 d2
-match Test-Enumerated = 1234
-
-proto-dictionary-root Seq-Null
-
-decode-pair 30 02 05 00
-match Seq-Null = { Test-Null = no }
-
-decode-pair 30 02 05 01
-match Insufficient data for length field (1): Failed decoding header
-
-proto-dictionary-root Seq-Integer-Null
-
-decode-pair 30 05 02 01 01 05 00
-match Seq-Integer-Null = { Test-Integer = 1, Test-Null = no }
-
-proto-dictionary-root Test-Oid
-
-decode-pair 06 03 88 37 03
-match Test-Oid = "2.999.3"
-
-decode-pair 06 09 2a 86 48 86 f7 0d 01 01 0B
-match Test-Oid = "1.2.840.113549.1.1.11"
-
-decode-pair 06 0A 2a 86 48 ff 86 f7 0d 01 01 0b
-match Test-Oid = "1.2.840.266451853.1.1.11"
-
-decode-pair 06 0B 2a 86 48 ff ff 86 f7 0d 01 01 0b
-match Test-Oid = "1.2.840.34357754765.1.1.11"
-
-decode-pair 06 0C 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
-match Test-Oid = "1.2.840.4398044527501.1.1.11"
-
-decode-pair 06 0C 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
-match Test-Oid = "1.2.840.34359738367.13.1.1.11"
-
-decode-pair 06 0D 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
-match Test-Oid = "1.2.840.4398046511103.13.1.1.11"
-
-decode-pair 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
-match Test-Oid = "1.2.840.562949953421311.13.1.1.11"
-
-decode-pair 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
-match Test-Oid = "1.2.840.72057594037927935.13.1.1.11"
-
-decode-pair 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
-match Test-Oid = "1.2.840.9223372036854775807.13.1.1.11"
-
-decode-pair 06 11 2a 86 48 ff ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
-match OID subidentifier too large (9 chunks)
-
-decode-pair 06 12 2a 86 48 ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
-match OID subidentifier too large (9 chunks)
-
-decode-pair 06 19 2a 86 48 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
-match OID subidentifier too large (9 chunks)
-
-proto-dictionary-root Seq-Oid
-
-decode-pair 30 05 06 03 88 37 03
-match Seq-Oid = { Test-Oid = "2.999.3" }
-
-decode-pair 30 0b 06 09 2a 86 48 86 f7 0d 01 01 0B
-match Seq-Oid = { Test-Oid = "1.2.840.113549.1.1.11" }
-
-decode-pair 30 0C 06 0A 2a 86 48 ff 86 f7 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.266451853.1.1.11" }
-
-decode-pair 30 0d 06 0B 2a 86 48 ff ff 86 f7 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.34357754765.1.1.11" }
-
-decode-pair 30 0e 06 0C 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.4398044527501.1.1.11" }
-
-decode-pair 30 0e 06 0C 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.34359738367.13.1.1.11" }
-
-decode-pair 30 0f 06 0D 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.4398046511103.13.1.1.11" }
-
-decode-pair 30 10 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.562949953421311.13.1.1.11" }
-
-decode-pair 30 11 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.72057594037927935.13.1.1.11" }
-
-decode-pair 30 12 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
-match Seq-Oid = { Test-Oid = "1.2.840.9223372036854775807.13.1.1.11" }
-
-decode-pair 30 13 06 11 2a 86 48 ff ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
-match OID subidentifier too large (9 chunks)
-
-decode-pair 30 14 06 12 2a 86 48 ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
-match OID subidentifier too large (9 chunks)
-
-decode-pair 30 1b 06 19 2a 86 48 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 86 f7 0d 01 01 0b
-match OID subidentifier too large (9 chunks)
-
-proto-dictionary-root Test-String
-
-# Test IA5String
-decode-pair 16 02 68 69
-match Test-String = "hi"
-
-decode-pair 1681f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 16820783496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
-
-# Test UTF8String
-decode-pair 0c81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 0c820783496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
-
-decode-pair 0c 04 f0 9f 98 8e
-match Test-String = "😎"
-
-decode-pair 0c 04 f0 9f 98
-match Insufficient data for length field (4): Failed decoding header
-
-# Test PrintableString
-decode-pair 13 02 68 69
-match Test-String = "hi"
-
-decode-pair 134a4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
-match Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?"
-
-decode-pair 1381f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 138208af496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 13820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-
-decode-pair 13 01 21
-match Invalid character in a string (33)
-
-# Test T61String
-decode-pair 140c68656c6c6f20746865726521
-match Test-String = "hello there!"
-
-decode-pair 1481f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 14820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-
-# Test VisibleString
-decode-pair 1a0c68656c6c6f20746865726521
-match Test-String = "hello there!"
-
-decode-pair 1a81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 1a820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-
-# Test GeneralString
-decode-pair 1b0c68656c6c6f20746865726521
-match Test-String = "hello there!"
-
-decode-pair 1b81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 1b820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-
-# Test UniversalString
-decode-pair 1c0c68656c6c6f20746865726521
-match Test-String = "hello there!"
-
-decode-pair 1c81f7496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort."
-
-decode-pair 1c820779496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-
-proto-dictionary-root Seq-String
-
-# Test IA5String
-decode-pair 30 04 16 02 68 69
-match Seq-String = { Test-String = "hi" }
-
-decode-pair 30 81 fa 16 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 07 87 16 82 07 83 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end." }
-
-# Test UTF8String
-decode-pair 30 04 0c 02 68 69
-match Seq-String = { Test-String = "hi" }
-
-decode-pair 30 81 fa 0c 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 07 87 0c 82 07 83 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f61747320e280932074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c20e28093205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c656420697420e2809320616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f757273e2809920726573706563742c20627574206865206761696e656420e280932077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end." }
-
-decode-pair 30 06 0c 04 f0 9f 98 8e
-match Seq-String = { Test-String = "😎" }
-
-decode-pair 30 06 0c 04 f0 9f 98
-match Insufficient data for length field (6): Failed decoding header
-
-# Test PrintableString
-decode-pair 30 04 13 02 68 69
-match Seq-String = { Test-String = "hi" }
-
-decode-pair 30 4c 13 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
-match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
-
-decode-pair 30 81 fa 13 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 08 b3 13 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 07 7D 13 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
-
-decode-pair 30 03 13 01 21
-match Invalid character in a string (33)
-
-# Test T61String
-decode-pair 30 04 14 02 68 69
-match Seq-String = { Test-String = "hi" }
-
-decode-pair 30 4c 14 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
-match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
-
-decode-pair 30 81 fa 14 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 08 b3 14 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 07 7D 14 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
-
-# Test VisibleString
-decode-pair 30 04 1A 02 68 69
-match Seq-String = { Test-String = "hi" }
-
-decode-pair 30 4c 1A 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
-match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
-
-decode-pair 30 81 fa 1A 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 08 b3 1A 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 07 7D 1A 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
-
-# Test GeneralString
-decode-pair 30 04 1B 02 68 69
-match Seq-String = { Test-String = "hi" }
-
-decode-pair 30 4c 1B 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
-match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
-
-decode-pair 30 81 fa 1B 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 08 b3 1B 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 07 7D 1B 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
-
-# Test UniversalString
-decode-pair 30 04 1c 02 68 69
-match Seq-String = { Test-String = "hi" }
-
-decode-pair 30 4c 1c 4a 4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839202728292b2c2d2e2f3a3d3f
-match Seq-String = { Test-String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 '()+,-./:=?" }
-
-decode-pair 30 81 fa 1c 81 f7 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 08 b3 1c 82 08 af 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort." }
-
-decode-pair 30 82 07 7D 1c 82 07 79 496e206120686f6c6520696e207468652067726f756e64207468657265206c69766564206120686f626269742e204e6f742061206e617374792c2064697274792c2077657420686f6c652c2066696c6c656420776974682074686520656e6473206f6620776f726d7320616e6420616e206f6f7a7920736d656c6c2c206e6f72207965742061206472792c20626172652c2073616e647920686f6c652077697468206e6f7468696e6720696e20697420746f2073697420646f776e206f6e206f7220746f206561743a20697420776173206120686f626269742d686f6c652c20616e642074686174206d65616e7320636f6d666f72742e20497420686164206120706572666563746c7920726f756e6420646f6f72206c696b65206120706f7274686f6c652c207061696e74656420677265656e2c20776974682061207368696e792079656c6c6f77206272617373206b6e6f6220696e20746865206578616374206d6964646c652e2054686520646f6f72206f70656e6564206f6e20746f206120747562652d7368617065642068616c6c206c696b6520612074756e6e656c3a2061207665727920636f6d666f727461626c652074756e6e656c20776974686f757420736d6f6b652c20776974682070616e656c6c65642077616c6c732c20616e6420666c6f6f72732074696c656420616e642063617270657465642c2070726f7669646564207769746820706f6c69736865642063686169727320616e64206c6f747320616e64206c6f7473206f66207065677320666f72206861747320616e6420636f617473202d2074686520686f626269742077617320666f6e64206f662076697369746f72732e205468652074756e6e656c20776f756e64206f6e20616e64206f6e2c20676f696e6720666169726c7920627574206e6f7420717569746520737472616967687420696e746f207468652073696465206f66207468652068696c6c202d205468652048696c6c2c20617320616c6c207468652070656f706c6520666f72206d616e79206d696c657320726f756e642063616c6c6564206974202d20616e64206d616e79206c6974746c6520726f756e6420646f6f7273206f70656e6564206f7574206f662069742c206669727374206f6e206f6e65207369646520616e64207468656e206f6e20616e6f746865722e204e6f20676f696e6720757073746169727320666f722074686520686f626269743a20626564726f6f6d732c2062617468726f6f6d732c2063656c6c6172732c2070616e747269657320286c6f7473206f66207468657365292c2077617264726f62657320286865206861642077686f6c6520726f6f6d73206465766f74656420746f20636c6f74686573292c206b69746368656e732c2064696e696e672d726f6f6d732c20616c6c2077657265206f6e207468652073616d6520666c6f6f722c20616e6420696e64656564206f6e207468652073616d6520706173736167652e20546865206265737420726f6f6d73207765726520616c6c206f6e20746865206c6566742d68616e6420736964652028676f696e6720696e292c20666f72207468657365207765726520746865206f6e6c79206f6e657320746f20686176652077696e646f77732c20646565702d73657420726f756e642077696e646f7773206c6f6f6b696e67206f766572206869732067617264656e2c20616e64206d6561646f7773206265796f6e642c20736c6f70696e6720646f776e20746f207468652072697665722e205468697320686f6262697420776173206120766572792077656c6c2d746f2d646f20686f626269742c20616e6420686973206e616d65207761732042616767696e732e205468652042616767696e7365732068617665206c6976656420696e20746865206e65696768626f7572686f6f64206f66205468652048696c6c20666f722074696d65206f7574206f66206d696e642c20616e642070656f706c6520636f6e73696465726564207468656d2076657279207265737065637461626c652c206e6f74206f6e6c792062656361757365206d6f7374206f66207468656d207765726520726963682c2062757420616c736f20626563617573652074686579206e657665722068616420616e7920616476656e7475726573206f722064696420616e797468696e6720756e65787065637465643a20796f7520636f756c642074656c6c207768617420612042616767696e7320776f756c6420736179206f6e20616e79207175657374696f6e20776974686f75742074686520626f74686572206f662061736b696e672068696d2e205468697320697320612073746f7279206f6620686f7720612042616767696e732068616420616e20616476656e747572652c20616e6420666f756e642068696d73656c6620646f696e6720616e6420736179696e67207468696e677320616c746f67657468657220756e65787065637465642e204865206d61792068617665206c6f737420746865206e65696768626f7572732720726573706563742c20627574206865206761696e6564202d2077656c6c2c20796f752077696c6c207365652077686574686572206865206761696e656420616e797468696e6720696e2074686520656e642e
-match Seq-String = { Test-String = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end." }
-
-proto-dictionary-root Test-Date
-
-decode-pair 17 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
-match Test-Date = "2019-12-16T03:02:10Z"
-
-# Test GeneralizedTime
-decode-pair 180f32303139313231363033303231305a
-match Test-Date = "2019-12-16T03:02:10Z"
-
-decode-pair 18 13 32 30 31 35313233313233353935392e3132335a
-match Test-Date = "2015-12-31T23:59:59Z"
-
-decode-pair 181132303139313231363033303231302e305a
-match Test-Date = "2019-12-16T03:02:10Z"
-
-decode-pair 181132303139313231363033303231302e315a
-match Test-Date = "2019-12-16T03:02:10Z"
-
-decode-pair 181232303139313231363033303231302e30315a
-match Test-Date = "2019-12-16T03:02:10Z"
-
-decode-pair 181432303139313231363033303231302e303030315a
-match Test-Date = "2019-12-16T03:02:10Z"
-
-decode-pair 181632303139313231363033303231302e3030303030315a
-match Test-Date = "2019-12-16T03:02:10Z"
-
-decode-pair 18 13 32 303139313231363033303231302e30303031
-match Test-Date = "2019-12-16T03:02:10Z"
-
-decode-pair 18 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
-match Insufficient data for generalized time or incorrect length
-
-decode-pair 18 14 32 30 31 39 31 32 31 36 30 33 00 32 31 30 2e 30 30 30 31 5a
-match Generalized time contains null byte
-
-decode-pair 18 14 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 30 30 00 31 5a
-match Generalized time contains null byte in subseconds
-
-decode-pair 18 10 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 5a
-match Insufficient data for subseconds
-
-proto-dictionary-root Seq-Date
-
-decode-pair 30 0F 17 0D 31 39 31 32 31 36 30 33 30 32 31 30 5A
-match Seq-Date = { Test-Date = "2019-12-16T03:02:10Z" }
-
-# Test GeneralizedTime
-decode-pair 30 11 180f32303139313231363033303231305a
-match Seq-Date = { Test-Date = "2019-12-16T03:02:10Z" }
-
-# Test Set
-proto-dictionary-root Set-Bool-Integer
-
-decode-pair 3106010100020109
-match Set-Bool-Integer = { Test-Bool = no, Test-Integer = 9 }
-
-decode-pair 3106020109010100
-match Expected parent type 'int64', got attribute Test-Bool of type bool
-
-# Test sub_type
-proto der
-proto-dictionary der
-proto-dictionary-root Test-String-UTF8
-
-decode-pair 0c 04 f0 9f 98 8e
-match Test-String-UTF8 = "😎"
-
-# Test Context-Specific
-proto-dictionary-root Test-Context-Specific
-
-decode-pair 80 01 00
-match Test-Context-Specific = no
-
-# Test-Encode
-#proto der
-#proto-dictionary pkcs10
-#fuzzer-out der
-
-proto-dictionary-root Test-Boolean
-
-decode-pair 01 01 FF
-match Test-Boolean = yes
-
-# proto der
-proto-dictionary der
-# proto-dictionary-root Test-Boolean
-
-encode-pair Test-Boolean = yes
-match 01 01 ff
-
-encode-pair Test-Boolean = no
-match 01 01 00
-
-encode-pair Test-Integer = 1
-match 02 01 01
-
-encode-pair Test-Integer = 549755813887
-match 02 05 7f ff ff ff ff
-
-encode-pair Test-Integer = 9223372036854775807
-match 02 08 7f ff ff ff ff ff ff ff
-
-# Test Bitstring
-
-encode-pair Test-Bitstring = 0x040a3b5f291cd0
-match 03 07 04 0a 3b 5f 29 1c d0
-
-encode-pair Bitstring-Struct = { foo = 1 }
-match 03 02 00 01
-
-encode-pair Bitstring-Struct = { foo = 0 }
-match 03 02 00 00
-
-encode-pair Bitstring-Struct = { foo = 251, bar = 15, foo-bar = 11 }
-match 03 03 00 fb fb
-
-encode-pair Bitstring-Struct = { foo = 255, bar = 15, foo-bar = 15 }
-match 03 03 00 ff ff
-
-encode-pair Octetstring = 0x00
-match 04 01 00
-
-encode-pair Octetstring = 0xff
-match 04 01 ff
-
-encode-pair Octetstring = 0xffffffffffffffff
-match 04 08 ff ff ff ff ff ff ff ff
-
-encode-pair Test-NULL = 0
-match 05 00
-
-encode-pair Test-NULL = 1
-match 05 00
-
-encode-pair Test-NULL = 1234
-match 05 00
-
-# Test Enumerated Encoding
-encode-pair Test-Enumerated = 1234
-match 0a 02 04 d2
-
-encode-pair Test-Enumerated = A
-match Failed parsing string as type 'int64'
-
-# Test UTC Time
-encode-pair Test-UTC = "2019-12-16T03:02:10Z"
-match 17 0d 31 39 31 32 31 36 30 33 30 32 31 30 5a
-
-# Test GeneralizedTime
-encode-pair Test-Generalized-Time = "2019-12-16T03:02:10Z"
-match 18 0f 32 30 31 39 31 32 31 36 30 33 30 32 31 30 5a
-
-encode-pair Test-Generalized-Time = "2019-12-16T03:02:10.0000Z"
-match 18 0f 32 30 31 39 31 32 31 36 30 33 30 32 31 30 5a
-
-encode-pair Test-Generalized-Time = "2019-12-16T03:02:10.0100Z"
-match 18 12 32 30 31 39 31 32 31 36 30 33 30 32 31 30 2e 30 31 5a
-
-encode-pair Test-Generalized-Time = "2015-12-31T23:59:59.1230Z"
-match 18 13 32 30 31 35 31 32 33 31 32 33 35 39 35 39 2e 31 32 33 5a
-
-encode-pair Test-String = "foo"
-match 0c 03 66 6f 6f
-
-# Test UTF8 Encoding
-
-encode-pair Test-String-UTF8 = "In a hole in the ground there lived a hobbit."
-match 0c 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
-
-# Test PrintableString Encoding
-
-encode-pair Test-String-Printable = "In a hole in the ground there lived a hobbit."
-match 13 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
-
-encode-pair Test-String-Printable = "Bad character !"
-match 13 0f 42 61 64 20 63 68 61 72 61 63 74 65 72 20 21
-
-# Test T61String Encoding
-
-encode-pair Test-String-T61 = "In a hole in the ground there lived a hobbit."
-match 14 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
-
-encode-pair Test-String-T61 = "Bad character {}"
-match 14 10 42 61 64 20 63 68 61 72 61 63 74 65 72 20 7b 7d
-
-# Test IA5String Encoding
-
-encode-pair Test-String-IA5 = "In a hole in the ground there lived a hobbit."
-match 16 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
-
-# Test VisibleString Encoding
-encode-pair Test-String-Visible = "In a hole in the ground there lived a hobbit."
-match 1a 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
-
-# Test GeneralString Encoding
-encode-pair Test-String-General = "In a hole in the ground there lived a hobbit."
-match 1b 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
-
-# Test UniversalString Encoding
-encode-pair Test-String-Universal = "In a hole in the ground there lived a hobbit."
-match 1c 2d 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e
-
-max-buffer-size 2048
-
-# Test UTF8 Encoding
-
-encode-pair Test-String-UTF8 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
-match 0c 82 07 83 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 e2 80 93 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 e2 80 93 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 e2 80 93 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 e2 80 99 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 e2 80 93 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
-
-# Test PrintableString Encoding
-
-encode-pair Test-String-Printable = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-match 13 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
-
-# Test T61String Encoding
-encode-pair Test-String-T61 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-match 14 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
-
-# Test IA5String Encoding
-encode-pair Test-String-IA5 = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats – the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill – The Hill, as all the people for many miles round called it – and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours’ respect, but he gained – well, you will see whether he gained anything in the end."
-match 16 82 07 83 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 e2 80 93 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 e2 80 93 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 e2 80 93 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 e2 80 99 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 e2 80 93 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
-
-# Test VisibleString Encoding
-encode-pair Test-String-Visible = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-match 1a 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
-
-# Test GeneralString Encoding
-encode-pair Test-String-General = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-match 1b 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
-
-# Test UniversalString Encoding
-encode-pair Test-String-Universal = "In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort. It had a perfectly round door like a porthole, painted green, with a shiny yellow brass knob in the exact middle. The door opened on to a tube-shaped hall like a tunnel: a very comfortable tunnel without smoke, with panelled walls, and floors tiled and carpeted, provided with polished chairs and lots and lots of pegs for hats and coats - the hobbit was fond of visitors. The tunnel wound on and on, going fairly but not quite straight into the side of the hill - The Hill, as all the people for many miles round called it - and many little round doors opened out of it, first on one side and then on another. No going upstairs for the hobbit: bedrooms, bathrooms, cellars, pantries (lots of these), wardrobes (he had whole rooms devoted to clothes), kitchens, dining-rooms, all were on the same floor, and indeed on the same passage. The best rooms were all on the left-hand side (going in), for these were the only ones to have windows, deep-set round windows looking over his garden, and meadows beyond, sloping down to the river. This hobbit was a very well-to-do hobbit, and his name was Baggins. The Bagginses have lived in the neighbourhood of The Hill for time out of mind, and people considered them very respectable, not only because most of them were rich, but also because they never had any adventures or did anything unexpected: you could tell what a Baggins would say on any question without the bother of asking him. This is a story of how a Baggins had an adventure, and found himself doing and saying things altogether unexpected. He may have lost the neighbours' respect, but he gained - well, you will see whether he gained anything in the end."
-match 1c 82 07 79 49 6e 20 61 20 68 6f 6c 65 20 69 6e 20 74 68 65 20 67 72 6f 75 6e 64 20 74 68 65 72 65 20 6c 69 76 65 64 20 61 20 68 6f 62 62 69 74 2e 20 4e 6f 74 20 61 20 6e 61 73 74 79 2c 20 64 69 72 74 79 2c 20 77 65 74 20 68 6f 6c 65 2c 20 66 69 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 65 6e 64 73 20 6f 66 20 77 6f 72 6d 73 20 61 6e 64 20 61 6e 20 6f 6f 7a 79 20 73 6d 65 6c 6c 2c 20 6e 6f 72 20 79 65 74 20 61 20 64 72 79 2c 20 62 61 72 65 2c 20 73 61 6e 64 79 20 68 6f 6c 65 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 20 69 6e 20 69 74 20 74 6f 20 73 69 74 20 64 6f 77 6e 20 6f 6e 20 6f 72 20 74 6f 20 65 61 74 3a 20 69 74 20 77 61 73 20 61 20 68 6f 62 62 69 74 2d 68 6f 6c 65 2c 20 61 6e 64 20 74 68 61 74 20 6d 65 61 6e 73 20 63 6f 6d 66 6f 72 74 2e 20 49 74 20 68 61 64 20 61 20 70 65 72 66 65 63 74 6c 79 20 72 6f 75 6e 64 20 64 6f 6f 72 20 6c 69 6b 65 20 61 20 70 6f 72 74 68 6f 6c 65 2c 20 70 61 69 6e 74 65 64 20 67 72 65 65 6e 2c 20 77 69 74 68 20 61 20 73 68 69 6e 79 20 79 65 6c 6c 6f 77 20 62 72 61 73 73 20 6b 6e 6f 62 20 69 6e 20 74 68 65 20 65 78 61 63 74 20 6d 69 64 64 6c 65 2e 20 54 68 65 20 64 6f 6f 72 20 6f 70 65 6e 65 64 20 6f 6e 20 74 6f 20 61 20 74 75 62 65 2d 73 68 61 70 65 64 20 68 61 6c 6c 20 6c 69 6b 65 20 61 20 74 75 6e 6e 65 6c 3a 20 61 20 76 65 72 79 20 63 6f 6d 66 6f 72 74 61 62 6c 65 20 74 75 6e 6e 65 6c 20 77 69 74 68 6f 75 74 20 73 6d 6f 6b 65 2c 20 77 69 74 68 20 70 61 6e 65 6c 6c 65 64 20 77 61 6c 6c 73 2c 20 61 6e 64 20 66 6c 6f 6f 72 73 20 74 69 6c 65 64 20 61 6e 64 20 63 61 72 70 65 74 65 64 2c 20 70 72 6f 76 69 64 65 64 20 77 69 74 68 20 70 6f 6c 69 73 68 65 64 20 63 68 61 69 72 73 20 61 6e 64 20 6c 6f 74 73 20 61 6e 64 20 6c 6f 74 73 20 6f 66 20 70 65 67 73 20 66 6f 72 20 68 61 74 73 20 61 6e 64 20 63 6f 61 74 73 20 2d 20 74 68 65 20 68 6f 62 62 69 74 20 77 61 73 20 66 6f 6e 64 20 6f 66 20 76 69 73 69 74 6f 72 73 2e 20 54 68 65 20 74 75 6e 6e 65 6c 20 77 6f 75 6e 64 20 6f 6e 20 61 6e 64 20 6f 6e 2c 20 67 6f 69 6e 67 20 66 61 69 72 6c 79 20 62 75 74 20 6e 6f 74 20 71 75 69 74 65 20 73 74 72 61 69 67 68 74 20 69 6e 74 6f 20 74 68 65 20 73 69 64 65 20 6f 66 20 74 68 65 20 68 69 6c 6c 20 2d 20 54 68 65 20 48 69 6c 6c 2c 20 61 73 20 61 6c 6c 20 74 68 65 20 70 65 6f 70 6c 65 20 66 6f 72 20 6d 61 6e 79 20 6d 69 6c 65 73 20 72 6f 75 6e 64 20 63 61 6c 6c 65 64 20 69 74 20 2d 20 61 6e 64 20 6d 61 6e 79 20 6c 69 74 74 6c 65 20 72 6f 75 6e 64 20 64 6f 6f 72 73 20 6f 70 65 6e 65 64 20 6f 75 74 20 6f 66 20 69 74 2c 20 66 69 72 73 74 20 6f 6e 20 6f 6e 65 20 73 69 64 65 20 61 6e 64 20 74 68 65 6e 20 6f 6e 20 61 6e 6f 74 68 65 72 2e 20 4e 6f 20 67 6f 69 6e 67 20 75 70 73 74 61 69 72 73 20 66 6f 72 20 74 68 65 20 68 6f 62 62 69 74 3a 20 62 65 64 72 6f 6f 6d 73 2c 20 62 61 74 68 72 6f 6f 6d 73 2c 20 63 65 6c 6c 61 72 73 2c 20 70 61 6e 74 72 69 65 73 20 28 6c 6f 74 73 20 6f 66 20 74 68 65 73 65 29 2c 20 77 61 72 64 72 6f 62 65 73 20 28 68 65 20 68 61 64 20 77 68 6f 6c 65 20 72 6f 6f 6d 73 20 64 65 76 6f 74 65 64 20 74 6f 20 63 6c 6f 74 68 65 73 29 2c 20 6b 69 74 63 68 65 6e 73 2c 20 64 69 6e 69 6e 67 2d 72 6f 6f 6d 73 2c 20 61 6c 6c 20 77 65 72 65 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 66 6c 6f 6f 72 2c 20 61 6e 64 20 69 6e 64 65 65 64 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 61 73 73 61 67 65 2e 20 54 68 65 20 62 65 73 74 20 72 6f 6f 6d 73 20 77 65 72 65 20 61 6c 6c 20 6f 6e 20 74 68 65 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 28 67 6f 69 6e 67 20 69 6e 29 2c 20 66 6f 72 20 74 68 65 73 65 20 77 65 72 65 20 74 68 65 20 6f 6e 6c 79 20 6f 6e 65 73 20 74 6f 20 68 61 76 65 20 77 69 6e 64 6f 77 73 2c 20 64 65 65 70 2d 73 65 74 20 72 6f 75 6e 64 20 77 69 6e 64 6f 77 73 20 6c 6f 6f 6b 69 6e 67 20 6f 76 65 72 20 68 69 73 20 67 61 72 64 65 6e 2c 20 61 6e 64 20 6d 65 61 64 6f 77 73 20 62 65 79 6f 6e 64 2c 20 73 6c 6f 70 69 6e 67 20 64 6f 77 6e 20 74 6f 20 74 68 65 20 72 69 76 65 72 2e 20 54 68 69 73 20 68 6f 62 62 69 74 20 77 61 73 20 61 20 76 65 72 79 20 77 65 6c 6c 2d 74 6f 2d 64 6f 20 68 6f 62 62 69 74 2c 20 61 6e 64 20 68 69 73 20 6e 61 6d 65 20 77 61 73 20 42 61 67 67 69 6e 73 2e 20 54 68 65 20 42 61 67 67 69 6e 73 65 73 20 68 61 76 65 20 6c 69 76 65 64 20 69 6e 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 68 6f 6f 64 20 6f 66 20 54 68 65 20 48 69 6c 6c 20 66 6f 72 20 74 69 6d 65 20 6f 75 74 20 6f 66 20 6d 69 6e 64 2c 20 61 6e 64 20 70 65 6f 70 6c 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 6d 20 76 65 72 79 20 72 65 73 70 65 63 74 61 62 6c 65 2c 20 6e 6f 74 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 6d 6f 73 74 20 6f 66 20 74 68 65 6d 20 77 65 72 65 20 72 69 63 68 2c 20 62 75 74 20 61 6c 73 6f 20 62 65 63 61 75 73 65 20 74 68 65 79 20 6e 65 76 65 72 20 68 61 64 20 61 6e 79 20 61 64 76 65 6e 74 75 72 65 73 20 6f 72 20 64 69 64 20 61 6e 79 74 68 69 6e 67 20 75 6e 65 78 70 65 63 74 65 64 3a 20 79 6f 75 20 63 6f 75 6c 64 20 74 65 6c 6c 20 77 68 61 74 20 61 20 42 61 67 67 69 6e 73 20 77 6f 75 6c 64 20 73 61 79 20 6f 6e 20 61 6e 79 20 71 75 65 73 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 74 68 65 20 62 6f 74 68 65 72 20 6f 66 20 61 73 6b 69 6e 67 20 68 69 6d 2e 20 54 68 69 73 20 69 73 20 61 20 73 74 6f 72 79 20 6f 66 20 68 6f 77 20 61 20 42 61 67 67 69 6e 73 20 68 61 64 20 61 6e 20 61 64 76 65 6e 74 75 72 65 2c 20 61 6e 64 20 66 6f 75 6e 64 20 68 69 6d 73 65 6c 66 20 64 6f 69 6e 67 20 61 6e 64 20 73 61 79 69 6e 67 20 74 68 69 6e 67 73 20 61 6c 74 6f 67 65 74 68 65 72 20 75 6e 65 78 70 65 63 74 65 64 2e 20 48 65 20 6d 61 79 20 68 61 76 65 20 6c 6f 73 74 20 74 68 65 20 6e 65 69 67 68 62 6f 75 72 73 27 20 72 65 73 70 65 63 74 2c 20 62 75 74 20 68 65 20 67 61 69 6e 65 64 20 2d 20 77 65 6c 6c 2c 20 79 6f 75 20 77 69 6c 6c 20 73 65 65 20 77 68 65 74 68 65 72 20 68 65 20 67 61 69 6e 65 64 20 61 6e 79 74 68 69 6e 67 20 69 6e 20 74 68 65 20 65 6e 64 2e
-
-# Test Sequence
-
-encode-pair Foo = { Test-Integer = 127 }
-match 30 03 02 01 7f
-
-encode-pair Foo-Bar = { Test-Integer = 9, Test-Boolean = no }
-match 30 06 02 01 09 01 01 00
-
-encode-pair Foo-Bar = { Test-Integer = 9, Test-Boolean = yes }
-match 30 06 02 01 09 01 01 ff
-
-encode-pair Test-Sequence-TLV = { Test-Integer = 9, Test-Boolean = no }
-match 30 06 02 01 09 01 01 00
-
-encode-pair Test-Sequence-TLV = { Test-Integer = 9, Test-Boolean = yes }
-match 30 06 02 01 09 01 01 ff
-
-encode-pair Test-Sequence-Group = { Test-Integer = 9 }
-match 30 03 02 01 09
-
-encode-pair Test-Sequence-Group = { Test-Integer = 9, Test-Boolean = yes }
-match 30 06 02 01 09 01 01 ff
-
-encode-pair Test-Set-Struct = { Test-Integer = 9, Test-Boolean = no }
-match 31 06 01 01 00 02 01 09
-
-encode-pair Test-Set-Struct = { Test-Integer = 9, Test-Boolean = yes }
-match 31 06 01 01 ff 02 01 09
-
-encode-pair Test-Set-TLV = { Test-Integer = 9, Test-Boolean = no }
-match 31 06 01 01 00 02 01 09
-
-encode-pair Test-Set-TLV = { Test-Integer = 9, Test-Boolean = yes }
-match 31 06 01 01 ff 02 01 09
-
-encode-pair Test-Set-GROUP = { Test-Integer = 9 }
-match 31 03 02 01 09
-
-encode-pair Test-Set-GROUP = { Test-Integer = 9, Test-Boolean = yes }
-match 31 06 01 01 ff 02 01 09
-
-encode-pair Test-Oid = "2.999.3"
-match 06 03 88 37 03
-
-encode-pair Test-Oid = "1.2.840.113549.1.1.11"
-match 06 09 2a 86 48 86 f7 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.266451853.1.1.11"
-match 06 0a 2a 86 48 ff 86 f7 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.34357754765.1.1.11"
-match 06 0b 2a 86 48 ff ff 86 f7 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.4398044527501.1.1.11"
-match 06 0c 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.34359738367.13.1.1.11"
-match 06 0c 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.4398046511103.13.1.1.11"
-match 06 0d 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.562949953421311.13.1.1.11"
-match 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.72057594037927935.13.1.1.11"
-match 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Test-Oid = "1.2.840.9223372036854775807.13.1.1.11"
-match 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.113549.1.1.11" }
-match 30 0b 06 09 2a 86 48 86 f7 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.266451853.1.1.11" }
-match 30 0c 06 0a 2a 86 48 ff 86 f7 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.34357754765.1.1.11" }
-match 30 0d 06 0b 2a 86 48 ff ff 86 f7 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.4398044527501.1.1.11" }
-match 30 0e 06 0c 2a 86 48 ff ff ff 86 f7 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.34359738367.13.1.1.11" }
-match 30 0e 06 0c 2a 86 48 ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.4398046511103.13.1.1.11" }
-match 30 0f 06 0d 2a 86 48 ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.562949953421311.13.1.1.11" }
-match 30 10 06 0e 2a 86 48 ff ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.72057594037927935.13.1.1.11" }
-match 30 11 06 0f 2a 86 48 ff ff ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Seq-Oid = { Test-Oid = "1.2.840.9223372036854775807.13.1.1.11" }
-match 30 12 06 10 2a 86 48 ff ff ff ff ff ff ff ff 7f 0d 01 01 0b
-
-encode-pair Test-Seq-Of = { Test-First-Integer = 1, Test-First-Integer = 2 }
-match 30 06 02 01 01 02 01 02
-
-encode-pair Test-Set-Of = { Test-First-Integer = 1, Test-First-Integer = 2580 }
-match 31 07 02 01 01 02 02 0a 14
-
-encode-pair Test-Set-Of = { Test-First-Integer = 2, Test-First-Integer = 1 }
-match 31 06 02 01 01 02 01 02
-
-encode-pair Test-Set-Of-Group = { Test-First-Integer = 2, Test-First-Integer = 1 }
-match 31 06 02 01 01 02 01 02
-
-encode-pair Foo-Bar = { Test-Integer = 1, Test-Boolean = yes }
-match 30 03 01 01 ff
-
-encode-pair Issuer = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }
-match 30 3f 31 24 30 22 06 03 55 04 0a 13 1b 44 69 67 69 74 61 6c 20 53 69 67 6e 61 74 75 72 65 20 54 72 75 73 74 20 43 6f 2e 31 17 30 15 06 03 55 04 03 13 0e 44 53 54 20 52 6f 6f 74 20 43 41 20 58 33
+count
+match 35
encode-pair Certificate = { tbsCertificate = { version = { VersionNum = 2 }, serialNumber = 0x0a0141420000015385736a0b85eca708, signature = { iso = { member-body = { us = { rsadsi = { pkcs = { pkcs-1 = { sha256WithRSAEncryption = no } } } } } } }, issuer = { RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Digital Signature Trust Co." } } } } }, RelativeDistinguishedName = { AttributeTypeAndValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "DST Root CA X3" } } } } } }, validity = { notBefore = "2016-03-17T16:40:46Z", notAfter = "2021-03-17T16:40:46Z" }, subject = { RelativeDistinguishedName = { AttributeTypeandValue = { joint-iso-itu-t = { ds = { attributeType = { countryName = "US" } } } } }, RelativeDistinguishedName = { AttributeTypeandValue = { joint-iso-itu-t = { ds = { attributeType = { organizationName = "Let's Encrypt" } } } } }, RelativeDistinguishedName = { AttributeTypeandValue = { joint-iso-itu-t = { ds = { attributeType = { commonName = "Let's Encrypt Authority X3" } } } } } }, subjectPublicKeyInfo = { algorithm = { iso = { member-body = { us = { rsadsi = { pkcs = { pkcs-1 = { rsaEncryption = no } } } } } } }, subjectPublicKey = 0x003082010a02820101009cd30cf05ae52e47b7725d3783b3686330ead735261925e1bdbe35f170922fb7b84b4105aba99e350858ecb12ac468870ba3e375e4e6f3a76271ba7981601fd7919a9ff3d0786771c8690e9591cffee699e9603c48cc7eca4d7712249d471b5aebb9ec1e37001c9cac7ba705eace4aebbd41e53698b9cbfd6d3c9668df232a42900c867467c87fa59ab8526114133f65e98287cbdbfa0e56f68689f3853f9786afb0dc1aef6b0d95167dc42ba065b299043675806bac4af31b9049782fa2964f2a20252904c674c0d031cd8f31389516baa833b843f1b11fc3307fa27931133d2d36f8e3fcf2336ab93931c5afc48d0d1d641633aafa8429b6d40bc0d87dc3930203010001 }, extensions = { Critical = { joint-iso-itu-t = { ds = { certificateExtension = { basicConstraints = { cA = yes, pathLenConstraint = 0 } } } }, joint-iso-itu-t = { ds = { certificateExtension = { keyUsage = { digitalSignature = yes, nonRepudation = no, keyEncipherment = no, dataEncipherment = no, keyAgreement = no, keyCertSign = yes, cRLSign = yes, encipherOnly = no } } } } }, iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { pe = { authorityInfoAccess = { accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.1", accessLocation = { uniformResourceIdentifier = "http://isrg.trustid.ocsp.identrust.com" } }, accessDescription = { accessMethod = "1.3.6.1.5.5.7.48.2", accessLocation = { uniformResourceIdentifier = "http://apps.identrust.com/roots/dstrootcax3.p7c" } } } } } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { authorityKeyIdentifier = { keyIdentifier = 0xc4a7b1a47b2c71fadbe14b9075ffc41560858910 } } } }, joint-iso-itu-t = { ds = { certificateExtension = { certificatePolicies = { policyInformation = { policyIdentifier = "2.23.140.1.2.1" }, policyInformation = { policyIdentifier = "1.3.6.1.4.1.44947.1.1.1", policyQualifiers = { policyQualifierInfo = { iso = { identified-organization = { dod = { internet = { security = { mechanisms = { pkix = { raw.2 = { raw.1 = 0x1622687474703a2f2f6370732e726f6f742d78312e6c657473656e63727970742e6f7267 } } } } } } } } } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { cRLDIstributionPoints = { distributionPoint = { distributionPointName = { fullName = { uniformResourceIdentifier = "http://crl.identrust.com/DSTROOTCAX3CRL.crl" } } } } } } }, joint-iso-itu-t = { ds = { certificateExtension = { subjectKeyIdentifier = 0xa84a6a63047dddbae6d139b7a64565eff3a8eca1 } } } } }, signatureAlgorithm = { iso = { member-body = { us = { rsadsi = { pkcs = { pkcs-1 = { sha256WithRSAEncryption = no } } } } } } }, signature = 0x00dd33d711f3635838dd1815fb0955be7656b97048a56947277bc2240892f15a1f4a1229372474511c6268b8cd957067e5f7a4bc4e2851cd9be8ae879dead8ba5aa1019adcf0dd6a1d6ad83e57239ea61e04629affd705cab71f3fc00a48bc94b0b66562e0c154e5a32aad20c4e9e6bbdcc8f6b5c332a398cc77a8e67965072bcb28fe3a165281ce520c2e5f83e8d50633fb776cce40ea329e1f925c41c1746c5b5d0a5f33cc4d9fac38f02f7b2c629dd9a3916f251b2f90b119463df67e1ba67a87b9a37a6d18fa25a5918715e0f2162f58b0062f2c6826c64b98cdda9f0cf97f90ed434a12444e6f737a28eaa4aa6e7b4c7d87dde0c90244a787afc3345bb442 }
match 30 82 04 92 30 82 03 7a a0 03 02 01 02 02 10 0a 01 41 42 00 00 01 53 85 73 6a 0b 85 ec a7 08 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 30 3f 31 24 30 22 06 03 55 04 0a 13 1b 44 69 67 69 74 61 6c 20 53 69 67 6e 61 74 75 72 65 20 54 72 75 73 74 20 43 6f 2e 31 17 30 15 06 03 55 04 03 13 0e 44 53 54 20 52 6f 6f 74 20 43 41 20 58 33 30 1e 17 0d 31 36 30 33 31 37 31 36 34 30 34 36 5a 17 0d 32 31 30 33 31 37 31 36 34 30 34 36 5a 30 4a 31 0b 30 09 06 03 55 04 06 13 02 55 53 31 16 30 14 06 03 55 04 0a 13 0d 4c 65 74 27 73 20 45 6e 63 72 79 70 74 31 23 30 21 06 03 55 04 03 13 1a 4c 65 74 27 73 20 45 6e 63 72 79 70 74 20 41 75 74 68 6f 72 69 74 79 20 58 33 30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 82 01 0a 02 82 01 01 00 9c d3 0c f0 5a e5 2e 47 b7 72 5d 37 83 b3 68 63 30 ea d7 35 26 19 25 e1 bd be 35 f1 70 92 2f b7 b8 4b 41 05 ab a9 9e 35 08 58 ec b1 2a c4 68 87 0b a3 e3 75 e4 e6 f3 a7 62 71 ba 79 81 60 1f d7 91 9a 9f f3 d0 78 67 71 c8 69 0e 95 91 cf fe e6 99 e9 60 3c 48 cc 7e ca 4d 77 12 24 9d 47 1b 5a eb b9 ec 1e 37 00 1c 9c ac 7b a7 05 ea ce 4a eb bd 41 e5 36 98 b9 cb fd 6d 3c 96 68 df 23 2a 42 90 0c 86 74 67 c8 7f a5 9a b8 52 61 14 13 3f 65 e9 82 87 cb db fa 0e 56 f6 86 89 f3 85 3f 97 86 af b0 dc 1a ef 6b 0d 95 16 7d c4 2b a0 65 b2 99 04 36 75 80 6b ac 4a f3 1b 90 49 78 2f a2 96 4f 2a 20 25 29 04 c6 74 c0 d0 31 cd 8f 31 38 95 16 ba a8 33 b8 43 f1 b1 1f c3 30 7f a2 79 31 13 3d 2d 36 f8 e3 fc f2 33 6a b9 39 31 c5 af c4 8d 0d 1d 64 16 33 aa fa 84 29 b6 d4 0b c0 d8 7d c3 93 02 03 01 00 01 a3 82 01 7d 30 82 01 79 30 12 06 03 55 1d 13 01 01 ff 04 08 30 06 01 01 ff 02 01 00 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 01 86 30 7f 06 08 2b 06 01 05 05 07 01 01 04 73 30 71 30 32 06 08 2b 06 01 05 05 07 30 01 86 26 68 74 74 70 3a 2f 2f 69 73 72 67 2e 74 72 75 73 74 69 64 2e 6f 63 73 70 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 30 3b 06 08 2b 06 01 05 05 07 30 02 86 2f 68 74 74 70 3a 2f 2f 61 70 70 73 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 72 6f 6f 74 73 2f 64 73 74 72 6f 6f 74 63 61 78 33 2e 70 37 63 30 1f 06 03 55 1d 23 04 18 30 16 80 14 c4 a7 b1 a4 7b 2c 71 fa db e1 4b 90 75 ff c4 15 60 85 89 10 30 54 06 03 55 1d 20 04 4d 30 4b 30 08 06 06 67 81 0c 01 02 01 30 3f 06 0b 2b 06 01 04 01 82 df 13 01 01 01 30 30 30 2e 06 08 2b 06 01 05 05 07 02 01 16 22 68 74 74 70 3a 2f 2f 63 70 73 2e 72 6f 6f 74 2d 78 31 2e 6c 65 74 73 65 6e 63 72 79 70 74 2e 6f 72 67 30 3c 06 03 55 1d 1f 04 35 30 33 30 31 a0 2f a0 2d 86 2b 68 74 74 70 3a 2f 2f 63 72 6c 2e 69 64 65 6e 74 72 75 73 74 2e 63 6f 6d 2f 44 53 54 52 4f 4f 54 43 41 58 33 43 52 4c 2e 63 72 6c 30 1d 06 03 55 1d 0e 04 16 04 14 a8 4a 6a 63 04 7d dd ba e6 d1 39 b7 a6 45 65 ef f3 a8 ec a1 30 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82 01 01 00 dd 33 d7 11 f3 63 58 38 dd 18 15 fb 09 55 be 76 56 b9 70 48 a5 69 47 27 7b c2 24 08 92 f1 5a 1f 4a 12 29 37 24 74 51 1c 62 68 b8 cd 95 70 67 e5 f7 a4 bc 4e 28 51 cd 9b e8 ae 87 9d ea d8 ba 5a a1 01 9a dc f0 dd 6a 1d 6a d8 3e 57 23 9e a6 1e 04 62 9a ff d7 05 ca b7 1f 3f c0 0a 48 bc 94 b0 b6 65 62 e0 c1 54 e5 a3 2a ad 20 c4 e9 e6 bb dc c8 f6 b5 c3 32 a3 98 cc 77 a8 e6 79 65 07 2b cb 28 fe 3a 16 52 81 ce 52 0c 2e 5f 83 e8 d5 06 33 fb 77 6c ce 40 ea 32 9e 1f 92 5c 41 c1 74 6c 5b 5d 0a 5f 33 cc 4d 9f ac 38 f0 2f 7b 2c 62 9d d9 a3 91 6f 25 1b 2f 90 b1 19 46 3d f6 7e 1b a6 7a 87 b9 a3 7a 6d 18 fa 25 a5 91 87 15 e0 f2 16 2f 58 b0 06 2f 2c 68 26 c6 4b 98 cd da 9f 0c f9 7f 90 ed 43 4a 12 44 4e 6f 73 7a 28 ea a4 aa 6e 7b 4c 7d 87 dd e0 c9 02 44 a7 87 af c3 34 5b b4 42
+
+count
+match 18