diff --git a/src/Acornima/EcmaVersion.cs b/src/Acornima/EcmaVersion.cs
index c4bc8a0..fb2828b 100644
--- a/src/Acornima/EcmaVersion.cs
+++ b/src/Acornima/EcmaVersion.cs
@@ -15,6 +15,7 @@ public enum EcmaVersion
ES12 = 12,
ES13 = 13,
ES14 = 14,
+ ES15 = 15,
ES2015 = ES6,
ES2016 = ES7,
@@ -25,9 +26,10 @@ public enum EcmaVersion
ES2021 = ES12,
ES2022 = ES13,
ES2023 = ES14,
+ ES2024 = ES15,
///
- /// The latest version which is fully supported ().
+ /// The latest version which is fully supported ().
///
- Latest = ES2023,
+ Latest = ES2024,
}
diff --git a/src/Acornima/Helpers/StackGuard.cs b/src/Acornima/Helpers/StackGuard.cs
index 143b4d0..1c00841 100644
--- a/src/Acornima/Helpers/StackGuard.cs
+++ b/src/Acornima/Helpers/StackGuard.cs
@@ -25,4 +25,9 @@ public static void EnsureSufficientExecutionStack(int recursionDepth)
RuntimeHelpers.EnsureSufficientExecutionStack();
}
}
+
+ public interface IRecursionDepthProvider
+ {
+ ref int CurrentDepth { get; }
+ }
}
diff --git a/src/Acornima/Parser.cs b/src/Acornima/Parser.cs
index f85ea35..4a545c9 100644
--- a/src/Acornima/Parser.cs
+++ b/src/Acornima/Parser.cs
@@ -10,7 +10,7 @@ namespace Acornima;
// https://github.com/acornjs/acorn/blob/8.11.3/acorn/src/index.js
-public sealed partial class Parser : IParser
+public sealed partial class Parser : IParser, StackGuard.IRecursionDepthProvider
{
private readonly ParserOptions _options;
private readonly TokenizerOptions _tokenizerOptions;
@@ -28,12 +28,15 @@ internal Parser(ParserOptions options, IExtension? extension)
_tokenizer = extension is null
? new Tokenizer(options.GetTokenizerOptions(), extension: null)
: extension.CreateTokenizer(options.GetTokenizerOptions());
+ _tokenizer._recursionDepthProvider = this;
_tokenizerOptions = _tokenizer.Options;
_isReservedWord = _isReservedWordBind = null!;
}
public ParserOptions Options => _options;
+ ref int StackGuard.IRecursionDepthProvider.CurrentDepth => ref _recursionDepth;
+
public Script ParseScript(string input, string? sourceFile = null, bool strict = false)
=> ParseScript(input ?? ThrowArgumentNullException(nameof(input)), 0, input.Length, sourceFile, strict);
diff --git a/src/Acornima/Properties/RegExpConversionErrorMessages.Designer.cs b/src/Acornima/Properties/RegExpConversionErrorMessages.Designer.cs
index 235fbd9..d3687cb 100644
--- a/src/Acornima/Properties/RegExpConversionErrorMessages.Designer.cs
+++ b/src/Acornima/Properties/RegExpConversionErrorMessages.Designer.cs
@@ -19,7 +19,7 @@ namespace Acornima {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class RegExpConversionErrorMessages {
@@ -115,7 +115,7 @@ internal static string RegExpInconvertibleUnicodePropertyEscape {
}
///
- /// Looks up a localized string similar to Unicode sets mode (flag v) is not supported currently.
+ /// Looks up a localized string similar to Conversion of Unicode sets mode (flag v) regular expressions to .NET Regex is not supported.
///
internal static string RegExpUnicodeSetsModeNotSupported {
get {
diff --git a/src/Acornima/Properties/RegExpConversionErrorMessages.resx b/src/Acornima/Properties/RegExpConversionErrorMessages.resx
index 48de12e..b87866b 100644
--- a/src/Acornima/Properties/RegExpConversionErrorMessages.resx
+++ b/src/Acornima/Properties/RegExpConversionErrorMessages.resx
@@ -136,7 +136,7 @@
Inconvertible Unicode property escape
- Unicode sets mode (flag v) is not supported currently
+ Conversion of Unicode sets mode (flag v) regular expressions to .NET Regex is not supported
Cannot map group name '{0}' to a unique group name in the adapted regex
diff --git a/src/Acornima/Properties/SyntaxErrorMessages.Designer.cs b/src/Acornima/Properties/SyntaxErrorMessages.Designer.cs
index 22612b9..7f0eabd 100644
--- a/src/Acornima/Properties/SyntaxErrorMessages.Designer.cs
+++ b/src/Acornima/Properties/SyntaxErrorMessages.Designer.cs
@@ -699,6 +699,15 @@ internal static string RegExpInvalidCharacterClass {
}
}
+ ///
+ /// Looks up a localized string similar to Invalid regular expression: /{0}/{1}: Invalid character in character class.
+ ///
+ internal static string RegExpInvalidCharacterInClass {
+ get {
+ return ResourceManager.GetString("RegExpInvalidCharacterInClass", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Invalid regular expression: /{0}/{1}: Invalid property name in character class.
///
@@ -708,6 +717,15 @@ internal static string RegExpInvalidClassPropertyName {
}
}
+ ///
+ /// Looks up a localized string similar to Invalid regular expression: /{0}/{1}: Invalid set operation in character class.
+ ///
+ internal static string RegExpInvalidClassSetOperation {
+ get {
+ return ResourceManager.GetString("RegExpInvalidClassSetOperation", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Invalid regular expression: /{0}/{1}: Invalid decimal escape.
///
@@ -807,6 +825,15 @@ internal static string RegExpMultipleFlagDashes {
}
}
+ ///
+ /// Looks up a localized string similar to Invalid regular expression: /{0}/{1}: Negated character class may contain strings.
+ ///
+ internal static string RegExpNegatedCharacterClassWithStrings {
+ get {
+ return ResourceManager.GetString("RegExpNegatedCharacterClassWithStrings", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Invalid regular expression: /{0}/{1}: Nothing to repeat.
///
diff --git a/src/Acornima/Properties/SyntaxErrorMessages.resx b/src/Acornima/Properties/SyntaxErrorMessages.resx
index e679baf..1b01722 100644
--- a/src/Acornima/Properties/SyntaxErrorMessages.resx
+++ b/src/Acornima/Properties/SyntaxErrorMessages.resx
@@ -398,10 +398,18 @@
Invalid regular expression: /{0}/{1}: Invalid character class
https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
+
+ Invalid regular expression: /{0}/{1}: Invalid character in character class
+ https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
+
Invalid regular expression: /{0}/{1}: Invalid property name in character class
https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
+
+ Invalid regular expression: /{0}/{1}: Invalid set operation in character class
+ https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
+
Invalid regular expression: /{0}/{1}: Invalid decimal escape
https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
@@ -446,6 +454,10 @@
Invalid regular expression: /{0}/{1}: Multiple dashes in flag group
https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
+
+ Invalid regular expression: /{0}/{1}: Negated character class may contain strings
+ https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
+
Invalid regular expression: /{0}/{1}: Nothing to repeat
https://github.com/v8/v8/blob/14.8.3/src/regexp/regexp-error.h
diff --git a/src/Acornima/Tokenizer.RegExpParser.Legacy.cs b/src/Acornima/Tokenizer.RegExpParser.Legacy.cs
index b156464..2424527 100644
--- a/src/Acornima/Tokenizer.RegExpParser.Legacy.cs
+++ b/src/Acornima/Tokenizer.RegExpParser.Legacy.cs
@@ -19,13 +19,13 @@ private LegacyMode() { }
public void ProcessChar(char ch, Action? appender, RegExpParser parser)
{
- ref readonly var sb = ref parser._stringBuilder;
+ var sb = parser._stringBuilder;
appender?.Invoke(sb!, ch);
}
public void ProcessSetSpecialChar(char ch, RegExpParser parser)
{
- ref readonly var sb = ref parser._stringBuilder;
+ var sb = parser._stringBuilder;
sb?.Append(ch);
}
@@ -37,7 +37,7 @@ public void ProcessSetChar(char ch, Action? appender, RegEx
private static void ProcessSetChar(char ch, int charCode, Action? appender, RegExpParser parser, int startIndex)
{
- ref readonly var sb = ref parser._stringBuilder;
+ var sb = parser._stringBuilder;
if (parser._setRangeStart >= 0)
{
@@ -71,14 +71,31 @@ private static void ProcessSetChar(char ch, int charCode, Action/ --> @"k", /[\k]/ --> @"[k]").
sb?.Append(ch);
- parser.ClearFollowingQuantifierError();
+
+ if (!parser.WithinSet)
+ {
+ parser.ClearFollowingQuantifierError();
+ }
break;
}
diff --git a/src/Acornima/Tokenizer.RegExpParser.Unicode.cs b/src/Acornima/Tokenizer.RegExpParser.Unicode.cs
index 374c21b..5a0cc3a 100644
--- a/src/Acornima/Tokenizer.RegExpParser.Unicode.cs
+++ b/src/Acornima/Tokenizer.RegExpParser.Unicode.cs
@@ -13,21 +13,21 @@ public partial class Tokenizer
{
internal partial class RegExpParser
{
- private const string MatchSurrogatePairRegex = "[\uD800-\uDBFF][\uDC00-\uDFFF]";
- private const string MatchLoneSurrogateRegex = "[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?? appender, RegExpParser parser)
{
- ref readonly var sb = ref parser._stringBuilder;
- ref readonly var pattern = ref parser._pattern;
+ var sb = parser._stringBuilder;
+ var pattern = parser._pattern;
ref var i = ref parser._index;
if (!ch.IsSurrogate())
@@ -95,7 +95,7 @@ public void ProcessSetSpecialChar(char ch, RegExpParser parser) { }
public void ProcessSetChar(char ch, Action? appender, RegExpParser parser, int startIndex)
{
- ref readonly var pattern = ref parser._pattern;
+ var pattern = parser._pattern;
ref var i = ref parser._index;
if (ch.IsHighSurrogate() && ((char)pattern.CharCodeAt(i + 1)).IsLowSurrogate())
@@ -110,6 +110,23 @@ public void ProcessSetChar(char ch, Action? appender, RegEx
}
}
+ public void ProcessSetStart(char ch, RegExpParser parser)
+ {
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+
+ parser._setStartIndex = i;
+ parser._setRangeStart = SetRangeNotStarted;
+
+ ProcessSetSpecialChar(ch, parser);
+
+ if ((ch = (char)pattern.CharCodeAt(i + 1)) == '^')
+ {
+ ProcessSetSpecialChar(ch, parser);
+ i++;
+ }
+ }
+
private static void AddSetCodePoint(int cp, RegExpParser parser, int startIndex)
{
Debug.Assert(cp is >= 0 and <= UnicodeHelper.LastCodePoint, "Invalid end code point.");
@@ -153,8 +170,8 @@ private static void AddSetCodePoint(int cp, RegExpParser parser, int startIndex)
public bool RewriteSet(RegExpParser parser)
{
- ref readonly var sb = ref parser._stringBuilder;
- ref readonly var pattern = ref parser._pattern;
+ var sb = parser._stringBuilder;
+ var pattern = parser._pattern;
if (sb is not null)
{
@@ -534,7 +551,7 @@ private static void AddStandardCharClass(ref ArrayList set, char
set.AddRange(ranges);
}
- private static bool ValidateUnicodeProperty(ReadOnlyMemory expression, bool translateToRanges, RegExpParser parser, out CodePointRange[]? codePointRanges)
+ internal static bool ValidateUnicodeProperty(ReadOnlyMemory expression, bool translateToRanges, RegExpParser parser, out CodePointRange[]? codePointRanges)
{
var index = expression.Span.IndexOf('=');
if (index >= 0)
@@ -591,7 +608,7 @@ private static bool ValidateUnicodeProperty(ReadOnlyMemory expression, boo
public void RewriteDot(RegExpParser parser)
{
- ref readonly var sb = ref parser._stringBuilder;
+ var sb = parser._stringBuilder;
if (sb is not null)
{
// '.' has to be adjusted to also match all surrogate pairs.
@@ -624,11 +641,16 @@ public void HandleInvalidRangeQuantifier(RegExpParser parser, int startIndex)
}
public bool AdjustEscapeSequence(RegExpParser parser, out RegExpConversionError? conversionError)
+ {
+ return AdjustEscapeSequence(allowStringProperties: false, parser, out conversionError);
+ }
+
+ internal static bool AdjustEscapeSequence(bool allowStringProperties, RegExpParser parser, out RegExpConversionError? conversionError)
{
// https://tc39.es/ecma262/#prod-AtomEscape
- ref readonly var sb = ref parser._stringBuilder;
- ref readonly var pattern = ref parser._pattern;
+ var sb = parser._stringBuilder;
+ var pattern = parser._pattern;
ref var i = ref parser._index;
ushort charCode, charCode2;
@@ -645,11 +667,10 @@ public bool AdjustEscapeSequence(RegExpParser parser, out RegExpConversionError?
// * /\u{FFFF}/u --> "\uFFFF" (+ negative lookahead/lookbehind in the case of lone surrogates)
// * /\u{1F4A9}/u --> "\uD83D\uDCA9"
- if (parser._tokenizer._options._ecmaVersion < EcmaVersion.ES6
- || !TryReadCodePoint(pattern, ref i, endIndex: pattern.Length, out cp))
+ if (!TryReadCodePoint(pattern, ref i, endIndex: pattern.Length, out cp))
{
parser.ReportSyntaxError(startIndex, RegExpInvalidUnicodeEscape);
- cp = default; // keeps the compiler happy
+ cp = default; // unreachable, just to keep the compiler happy
}
if (!parser.WithinSet)
@@ -727,23 +748,22 @@ public bool AdjustEscapeSequence(RegExpParser parser, out RegExpConversionError?
// CharacterEscape -> c ControlLetter
case 'c':
- if (i + 1 < pattern.Length)
+ cp = pattern.CharCodeAt(i + 1);
+ if (((char)cp).IsBasicLatinLetter())
{
- if (pattern[i + 1].IsBasicLatinLetter())
- {
- charCode = (ushort)(char.ToUpperInvariant(pattern[++i]) - '@');
+ i++;
+ charCode = (ushort)(cp & 0x1F); // value is equal to the character code modulo 32
- if (!parser.WithinSet)
- {
- parser._appendCharSafe?.Invoke(sb!, (char)charCode);
- parser.ClearFollowingQuantifierError();
- }
- else
- {
- AddSetCodePoint(charCode, parser, startIndex);
- }
- break;
+ if (!parser.WithinSet)
+ {
+ parser._appendCharSafe?.Invoke(sb!, (char)charCode);
+ parser.ClearFollowingQuantifierError();
}
+ else
+ {
+ AddSetCodePoint(charCode, parser, startIndex);
+ }
+ break;
}
parser.ReportSyntaxError(startIndex, RegExpInvalidUnicodeEscape);
@@ -871,10 +891,13 @@ public bool AdjustEscapeSequence(RegExpParser parser, out RegExpConversionError?
if (pattern.CharCodeAt(i + 1) == '{')
{
CodePointRange[]? codePointRanges = null;
+ ReadOnlyMemory expression;
endIndex = pattern.IndexOf('}', i + 2);
+
if (endIndex < 0
- || !ValidateUnicodeProperty(pattern.AsMemory(i + 2, endIndex - (i + 2)), translateToRanges: sb is not null, parser, out codePointRanges))
+ || !ValidateUnicodeProperty(expression = pattern.AsMemory(i + 2, endIndex - (i + 2)), translateToRanges: sb is not null, parser, out codePointRanges)
+ && (!allowStringProperties || ch == 'P' || !UnicodeProperties.IsAllowedBinaryOfStringsValue(expression, parser._tokenizer._options._ecmaVersion)))
{
if (!parser.WithinSet)
{
diff --git a/src/Acornima/Tokenizer.RegExpParser.UnicodeSets.cs b/src/Acornima/Tokenizer.RegExpParser.UnicodeSets.cs
new file mode 100644
index 0000000..bb61228
--- /dev/null
+++ b/src/Acornima/Tokenizer.RegExpParser.UnicodeSets.cs
@@ -0,0 +1,666 @@
+using System;
+using System.Runtime.CompilerServices;
+using System.Text;
+using Acornima.Helpers;
+
+namespace Acornima;
+
+using static SyntaxErrorMessages;
+
+public partial class Tokenizer
+{
+ internal sealed partial class RegExpParser
+ {
+ private sealed class UnicodeSetsMode : IMode
+ {
+ // Return values for class set parsing methods.
+ // Indicates whether the parsed construct can match multi-code-point strings.
+ private const int CharSetNone = 0; // Nothing parsed
+ private const int CharSetOk = 1; // Parsed, cannot contain strings
+ private const int CharSetString = 2; // Parsed, can contain strings
+
+ public static readonly UnicodeSetsMode Instance = new();
+
+ private UnicodeSetsMode() { }
+
+ // Outside character classes, flag 'v' behaves like flag 'u'.
+ // Since only validation is currently supported for flag 'v', parser._stringBuilder is always null.
+
+ public void ProcessChar(char ch, Action? appender, RegExpParser parser)
+ {
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+
+ if (ch.IsHighSurrogate() && ((char)pattern.CharCodeAt(i + 1)).IsLowSurrogate())
+ {
+ i++;
+ }
+ }
+
+ public void ProcessSetSpecialChar(char ch, RegExpParser parser)
+ {
+ // Not called for this mode, ProcessSetStart handles all set logic.
+ throw new InvalidOperationException();
+ }
+
+ public void ProcessSetChar(char ch, Action? appender, RegExpParser parser, int startIndex)
+ {
+ // Not called for this mode, ProcessSetStart handles all set logic.
+ throw new InvalidOperationException();
+ }
+
+ public bool RewriteSet(RegExpParser parser)
+ {
+ // Not called for this mode as it's validation only.
+ throw new InvalidOperationException();
+ }
+
+ public void RewriteDot(RegExpParser parser)
+ {
+ // No-op for this mode as it's validation only.
+ }
+
+ public bool AllowsQuantifierAfterGroup(RegExpGroupType groupType)
+ {
+ // Same as flag 'u'.
+ return groupType is RegExpGroupType.Capturing or RegExpGroupType.NamedCapturing or RegExpGroupType.NonCapturing;
+ }
+
+ public void HandleInvalidRangeQuantifier(RegExpParser parser, int startIndex)
+ {
+ // Same as flag 'u'.
+ parser.ReportSyntaxError(startIndex, RegExpIncompleteQuantifier);
+ }
+
+ public bool AdjustEscapeSequence(RegExpParser parser, out RegExpConversionError? conversionError)
+ {
+ return UnicodeMode.AdjustEscapeSequence(allowStringProperties: true, parser, out conversionError);
+ }
+
+ #region Character class parsing
+
+ // Based on: https://github.com/acornjs/acorn/blob/8.16.0/acorn/src/regexp.js
+
+ public void ProcessSetStart(char ch, RegExpParser parser)
+ {
+ // Parse the entire [...] block recursively.
+
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+ var start = i;
+
+ // We're positioned at '['. Advance past it.
+ i++;
+
+ var negate = Eat('^', pattern, ref i);
+
+ var result = ClassSetExpression(parser);
+
+ // i is now at ']', the main loop will advance past it.
+
+ if (negate && result == CharSetString)
+ {
+ parser.ReportSyntaxError(start, RegExpNegatedCharacterClassWithStrings);
+ }
+
+ parser.ClearFollowingQuantifierError();
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassSetExpression
+ // https://tc39.es/ecma262/#prod-ClassUnion
+ // https://tc39.es/ecma262/#prod-ClassIntersection
+ // https://tc39.es/ecma262/#prod-ClassSubtraction
+ private static int ClassSetExpression(RegExpParser parser)
+ {
+ // NOTE: `regexp_classContents` and `regexp_classSetExpression` was merged into this method
+ // to keep the call stack shallow. Common error checking was moved here from call sites.
+ // `regexp_eatClassSetRange` and a call to `regexp_eatClassSetOperand` were also merged into this method
+ // to match the error reporting behavior of V8 and to avoid reparsing of escape sequences.
+
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+ int start;
+ int left, right;
+
+ int result = CharSetOk, subResult;
+
+ for (var isSetOperationAllowed = true; ; isSetOperationAllowed = false)
+ {
+ // https://tc39.es/ecma262/#prod-ClassUnion
+ if (pattern.CharCodeAt(i) == ']')
+ {
+ return result;
+ }
+ else if (EatClassSetCharacter(parser, out left))
+ {
+ // https://tc39.es/ecma262/#prod-ClassSetRange
+ if (Eat('-', pattern, ref i))
+ {
+ start = i;
+ if (Eat('-', pattern, ref i))
+ {
+ goto ClassSubtraction;
+ }
+ else if (EatClassSetCharacter(parser, out right))
+ {
+ if (left > right)
+ {
+ parser.ReportSyntaxError(start, RegExpRangeOutOfOrderCharacterClass);
+ }
+
+ isSetOperationAllowed = false;
+
+ if (Eat('-', pattern, ref i))
+ {
+ if (Eat('-', pattern, ref i))
+ {
+ goto ClassSubtraction;
+ }
+ else
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidCharacterClass);
+ }
+ }
+ }
+ else if (EatNestedClassOrClassStringDisjunction(parser) != CharSetNone)
+ {
+ parser.ReportSyntaxError(start, RegExpInvalidCharacterClass);
+ }
+ else
+ {
+ goto UnexpectedCharacter;
+ }
+ }
+ }
+ else if ((subResult = EatNestedClassOrClassStringDisjunction(parser)) != CharSetNone)
+ {
+ if (subResult == CharSetString)
+ {
+ result = CharSetString;
+ }
+
+ if (Eat('-', pattern, ref i))
+ {
+ if (Eat('-', pattern, ref i))
+ {
+ goto ClassSubtraction;
+ }
+ else
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidCharacterClass);
+ }
+ }
+ }
+ else
+ {
+ goto UnexpectedCharacter;
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassIntersection
+ if (!EatChars('&', '&', pattern, ref i))
+ {
+ goto MaybeClassSubtraction;
+ }
+
+ if (!isSetOperationAllowed)
+ {
+ parser.ReportSyntaxError(i - 2, RegExpInvalidClassSetOperation);
+ }
+
+ do
+ {
+ if (pattern.CharCodeAt(i) != '&')
+ {
+ // https://tc39.es/ecma262/#prod-ClassSetOperand
+ if (EatClassSetCharacter(parser, out right))
+ {
+ continue;
+ }
+ else if ((subResult = EatNestedClassOrClassStringDisjunction(parser)) != CharSetNone)
+ {
+ if (subResult != CharSetString)
+ {
+ result = CharSetOk;
+ }
+
+ continue;
+ }
+ }
+
+ goto UnexpectedCharacter;
+ }
+ while (EatChars('&', '&', pattern, ref i));
+
+ right = pattern.CharCodeAt(i);
+ if (right == ']')
+ {
+ return result;
+ }
+ else if (right >= 0)
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidClassSetOperation);
+ }
+ else
+ {
+ goto Unterminated;
+ }
+
+ MaybeClassSubtraction:
+ // https://tc39.es/ecma262/#prod-ClassSubtraction
+ if (!EatChars('-', '-', pattern, ref i))
+ {
+ continue;
+ }
+
+ ClassSubtraction:
+ if (!isSetOperationAllowed)
+ {
+ parser.ReportSyntaxError(i - 2, RegExpInvalidClassSetOperation);
+ }
+
+ do
+ {
+ // https://tc39.es/ecma262/#prod-ClassSetOperand
+ if (EatClassSetCharacter(parser, out right)
+ || EatNestedClassOrClassStringDisjunction(parser) != CharSetNone)
+ {
+ continue;
+ }
+
+ goto UnexpectedCharacter;
+ }
+ while (EatChars('-', '-', pattern, ref i));
+
+ right = pattern.CharCodeAt(i);
+ if (right == ']')
+ {
+ return result;
+ }
+ else if (right >= 0)
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidClassSetOperation);
+ }
+ else
+ {
+ goto Unterminated;
+ }
+ }
+
+ UnexpectedCharacter:
+ if (pattern.CharCodeAt(i) == '\\')
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidEscape);
+ }
+ else if (pattern.CharCodeAt(i) >= 0)
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidCharacterInClass);
+ }
+
+ Unterminated:
+ parser.ReportSyntaxError(i, RegExpUnterminatedCharacterClass);
+ return CharSetNone; // unreachable, just to keep the compiler happy
+ }
+
+ // https://tc39.es/ecma262/#prod-NestedClass
+ // https://tc39.es/ecma262/#prod-ClassStringDisjunction
+ private static int EatNestedClassOrClassStringDisjunction(RegExpParser parser)
+ {
+ // NOTE: `regexp_eatNestedClass` and `regexp_eatClassStringDisjunction ` was merged into this single method.
+
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+ var start = i;
+
+ if (pattern.CharCodeAt(i) == '\\')
+ {
+ var result = EatCharacterClassEscape(parser);
+ if (result != CharSetNone)
+ {
+ i++;
+ return result;
+ }
+
+ // \q{...}
+ if (pattern.CharCodeAt(i + 1) == 'q')
+ {
+ i += 2;
+
+ if (!Eat('{', pattern, ref i))
+ {
+ parser.ReportSyntaxError(start, RegExpInvalidEscape);
+ }
+
+ result = ClassStringDisjunctionContents(parser);
+
+ if (!Eat('}', pattern, ref i))
+ {
+ if (pattern.CharCodeAt(i) == '\\')
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidEscape);
+ }
+ else
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidCharacterInClass);
+ }
+ }
+
+ return result;
+ }
+ }
+
+ if (Eat('[', pattern, ref i))
+ {
+ var negate = Eat('^', pattern, ref i);
+
+ ref var recursionDepth = ref parser._recursionDepthProvider.CurrentDepth;
+ StackGuard.EnsureSufficientExecutionStack(++recursionDepth);
+
+ var result = ClassSetExpression(parser);
+
+ recursionDepth--;
+
+ if (negate && result == CharSetString)
+ {
+ parser.ReportSyntaxError(start, RegExpNegatedCharacterClassWithStrings);
+ }
+
+ i++;
+ return result;
+ }
+
+ return CharSetNone;
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents
+ private static int ClassStringDisjunctionContents(RegExpParser parser)
+ {
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+
+ var result = ClassString(parser);
+ while (Eat('|', pattern, ref i))
+ {
+ if (ClassString(parser) == CharSetString)
+ {
+ result = CharSetString;
+ }
+ }
+
+ return result;
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassString
+ // https://tc39.es/ecma262/#prod-NonEmptyClassString
+ private static int ClassString(RegExpParser parser)
+ {
+ var count = 0;
+ while (EatClassSetCharacter(parser, out _))
+ {
+ count++;
+ }
+
+ return count == 1 ? CharSetOk : CharSetString;
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassSetCharacter
+ private static bool EatClassSetCharacter(RegExpParser parser, out int cp)
+ {
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+
+ if (pattern.CharCodeAt(i) == '\\')
+ {
+ if (EatCharacterEscape(parser, out cp))
+ {
+ i++;
+ return true;
+ }
+
+ return false;
+ }
+
+ cp = pattern.CodePointAt(i, pattern.Length);
+ if (cp <= char.MaxValue)
+ {
+ if (cp < 0 || IsClassSetSyntaxCharacter((char)cp))
+ {
+ return false;
+ }
+
+ if (cp == pattern.CharCodeAt(i + 1) && IsClassSetReservedDoublePunctuatorCharacter((char)cp))
+ {
+ parser.ReportSyntaxError(i, RegExpInvalidClassSetOperation);
+ }
+ }
+
+ i += UnicodeHelper.GetCodePointLength((uint)cp);
+ return true;
+ }
+
+ private static bool EatCharacterEscape(RegExpParser parser, out int cp)
+ {
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+
+ ushort charCode, charCode2;
+ var startIndex = i++;
+ int endIndex;
+ var ch = pattern[i];
+ switch (ch)
+ {
+ // CharacterEscape -> RegExpUnicodeEscapeSequence -> u{ CodePoint }
+ case 'u' when pattern.CharCodeAt(i + 1) == '{':
+ if (TryReadCodePoint(pattern, ref i, endIndex: pattern.Length, out cp))
+ {
+ return true;
+ }
+
+ parser.ReportSyntaxError(startIndex, RegExpInvalidUnicodeEscape);
+ break;
+
+ // CharacterEscape -> RegExpUnicodeEscapeSequence
+ case 'u':
+ if (TryReadHexEscape(pattern, ref i, endIndex: pattern.Length, charCodeLength: 4, out charCode))
+ {
+ if (((char)charCode).IsHighSurrogate() && i + 2 < pattern.Length && pattern[i + 1] == '\\' && pattern[i + 2] == 'u')
+ {
+ endIndex = i + 2;
+ if (TryReadHexEscape(pattern, ref endIndex, endIndex: pattern.Length, charCodeLength: 4, out charCode2) && ((char)charCode2).IsLowSurrogate())
+ {
+ i = endIndex;
+ cp = (int)UnicodeHelper.GetCodePoint((char)charCode, (char)charCode2);
+ return true;
+ }
+ }
+
+ cp = charCode;
+ return true;
+ }
+
+ parser.ReportSyntaxError(startIndex, RegExpInvalidUnicodeEscape);
+ break;
+
+ // CharacterEscape -> HexEscapeSequence
+ case 'x':
+ if (TryReadHexEscape(pattern, ref i, endIndex: pattern.Length, charCodeLength: 2, out charCode))
+ {
+ cp = charCode;
+ return true;
+ }
+
+ parser.ReportSyntaxError(startIndex, RegExpInvalidEscape);
+ break;
+
+ // CharacterEscape -> c ControlLetter
+ case 'c':
+ cp = pattern.CharCodeAt(i + 1);
+ if (((char)cp).IsBasicLatinLetter())
+ {
+ i++;
+ cp = (ushort)(cp & 0x1F); // value is equal to the character code modulo 32
+ return true;
+ }
+
+ parser.ReportSyntaxError(startIndex, RegExpInvalidUnicodeEscape);
+ break;
+
+ // CharacterEscape -> 0 [lookahead ∉ DecimalDigit]
+ case '0':
+ if (!((char)pattern.CharCodeAt(i + 1)).IsDecimalDigit())
+ {
+ cp = 0;
+ return true;
+ }
+
+ parser.ReportSyntaxError(startIndex, RegExpInvalidDecimalEscape);
+ break;
+
+ // DecimalEscape
+ case >= '1' and <= '9':
+ if (ch >= '8')
+ {
+ parser.ReportSyntaxError(startIndex, RegExpInvalidEscape);
+ }
+ else
+ {
+ parser.ReportSyntaxError(startIndex, RegExpInvalidDecimalEscape);
+ }
+
+ break;
+
+ default:
+ if (TryGetSimpleEscapeCharCode(ch, withinSet: true, out charCode)
+ || IsClassSetReservedPunctuator(ch))
+ {
+ cp = charCode;
+ return true;
+ }
+
+ break;
+ }
+
+ i = startIndex;
+ cp = default;
+ return false;
+ }
+
+ private static int EatCharacterClassEscape(RegExpParser parser)
+ {
+ var pattern = parser._pattern;
+ ref var i = ref parser._index;
+ var startIndex = i++;
+ int endIndex;
+
+ var ch = pattern.CharCodeAt(i);
+ switch (ch)
+ {
+ case 'd' or 'D' or 's' or 'S' or 'w' or 'W':
+ return CharSetOk;
+
+ case 'p' or 'P':
+ if (pattern.CharCodeAt(i + 1) == '{')
+ {
+ endIndex = pattern.IndexOf('}', i + 2);
+ if (endIndex >= 0)
+ {
+ var expression = pattern.AsMemory(i + 2, endIndex - (i + 2));
+
+ // First check if it's a valid unicode property (non-string).
+ if (UnicodeMode.ValidateUnicodeProperty(expression, translateToRanges: false, parser, out _))
+ {
+ i = endIndex;
+ return CharSetOk;
+ }
+
+ // In flag 'v' mode, check binary properties of strings (e.g. Basic_Emoji).
+ if (UnicodeProperties.IsAllowedBinaryOfStringsValue(expression, parser._tokenizer._options._ecmaVersion))
+ {
+ if (ch == 'P')
+ {
+ parser.ReportSyntaxError(startIndex, RegExpInvalidClassPropertyName);
+ }
+
+ i = endIndex;
+ return CharSetString;
+ }
+ }
+ }
+
+ parser.ReportSyntaxError(startIndex, RegExpInvalidClassPropertyName);
+ break;
+ }
+
+ i = startIndex;
+ return CharSetNone;
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static bool IsClassSetReservedDoublePunctuatorCharacter(char ch)
+ {
+ return ch == '!'
+ || ch.IsInRange('#', '&') // # $ % &
+ || ch.IsInRange('*', ',') // * + ,
+ || ch == '.'
+ || ch.IsInRange(':', '@') // : ; < = > ? @
+ || ch == '^'
+ || ch == '`'
+ || ch == '~';
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static bool IsClassSetSyntaxCharacter(char ch)
+ {
+ return ch == '(' || ch == ')'
+ || ch == '-' || ch == '/'
+ || ch.IsInRange('[', ']') // [ \ ]
+ || ch.IsInRange('{', '}'); // { | }
+ }
+
+ // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator
+ // ! # % & , - : ; < = > @ ` ~
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static bool IsClassSetReservedPunctuator(char ch)
+ {
+ return ch == '!'
+ || ch == '#'
+ || ch == '%'
+ || ch == '&'
+ || ch == ','
+ || ch == '-'
+ || ch.IsInRange(':', '>') // : ; < = >
+ || ch == '@'
+ || ch == '`'
+ || ch == '~';
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static bool Eat(char ch, string pattern, ref int i)
+ {
+ if (pattern.CharCodeAt(i) == ch)
+ {
+ i++;
+ return true;
+ }
+
+ return false;
+ }
+
+ // Try to eat a two-character sequence (e.g. '&&' or '--').
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ private static bool EatChars(char ch1, char ch2, string pattern, ref int i)
+ {
+ if (pattern.CharCodeAt(i) == ch1 && pattern.CharCodeAt(i + 1) == ch2)
+ {
+ i += 2;
+ return true;
+ }
+
+ return false;
+ }
+
+ #endregion
+ }
+ }
+}
diff --git a/src/Acornima/Tokenizer.RegExpParser.cs b/src/Acornima/Tokenizer.RegExpParser.cs
index e6e97e8..cd12090 100644
--- a/src/Acornima/Tokenizer.RegExpParser.cs
+++ b/src/Acornima/Tokenizer.RegExpParser.cs
@@ -29,7 +29,7 @@ internal enum RegExpFlags : byte
UnicodeSets = 1 << 7
}
- internal sealed partial class RegExpParser
+ internal sealed partial class RegExpParser : StackGuard.IRecursionDepthProvider
{
private const string MatchAnyRegex = @"[\s\S]"; // .NET equivalent of /[^]/
private const string MatchNoneRegex = @"[^\s\S]"; // .NET equivalent of /[]/
@@ -119,6 +119,7 @@ private static RegexOptions FlagsToOptions(RegExpFlags flags, bool compiled)
}
private readonly Tokenizer _tokenizer;
+ private readonly StackGuard.IRecursionDepthProvider _recursionDepthProvider;
private string _pattern;
private int _patternStartIndex;
@@ -128,6 +129,8 @@ private static RegexOptions FlagsToOptions(RegExpFlags flags, bool compiled)
internal RegExpParser(Tokenizer tokenizer)
{
_tokenizer = tokenizer;
+ _recursionDepthProvider = tokenizer._recursionDepthProvider ?? this;
+
_pattern = null!;
_flagsOriginal = null!;
}
@@ -141,7 +144,7 @@ internal void Reset(string pattern, int patternStartIndex, string flags, int fla
}
private RegExpConversionError ReportConversionFailure(int index, string reason,
- [CallerArgumentExpression(nameof(reason))] string code = Tokenizer.UnknownError)
+ [CallerArgumentExpression(nameof(reason))] string code = UnknownError)
{
return (RegExpConversionError)_tokenizer.RaiseRecoverable(_patternStartIndex + index,
string.Format(null, RegExpConversionFailed, typeof(Regex), _pattern, _flagsOriginal, reason),
@@ -149,14 +152,14 @@ private RegExpConversionError ReportConversionFailure(int index, string reason,
}
private RegExpConversionError ReportConversionFailure(int index, string reasonFormat, object?[] args,
- [CallerArgumentExpression(nameof(reasonFormat))] string code = Tokenizer.UnknownError)
+ [CallerArgumentExpression(nameof(reasonFormat))] string code = UnknownError)
{
return ReportConversionFailure(index, string.Format(null, reasonFormat, args), code);
}
[DoesNotReturn]
private void ReportSyntaxError(int index, string messageFormat,
- [CallerArgumentExpression(nameof(messageFormat))] string code = Tokenizer.UnknownError)
+ [CallerArgumentExpression(nameof(messageFormat))] string code = UnknownError)
{
_tokenizer.Raise(_patternStartIndex + index, string.Format(null, messageFormat, _pattern, _flagsOriginal), code: code);
}
@@ -165,20 +168,21 @@ public RegExpParseResult Parse()
{
RegExpConversionError? conversionError;
- if ((_flags & RegExpFlags.UnicodeSets) != 0)
+ if ((_flags & RegExpFlags.UnicodeSets) != 0
+ && _tokenizer._options._regExpParseMode != RegExpParseMode.Validate)
{
- if (_tokenizer._options._regExpParseMode == RegExpParseMode.Validate)
- {
- _tokenizer.Raise(_patternStartIndex, RegExpUnicodeSetsModeNotSupported, RegExpConversionError.s_factory);
- }
- else
- {
- conversionError = ReportConversionFailure(0, RegExpUnicodeSetsModeNotSupported);
- return new RegExpParseResult(conversionError);
- }
+ // Validate syntax first so callers get proper syntax errors (e.g. unterminated class)
+ // before the conversion-not-supported error. Uses validateOnly to force a null
+ // StringBuilder without mutating the shared TokenizerOptions.
+ ParseCore(validateOnly: true, out _, out _, out _);
+
+ conversionError = ReportConversionFailure(0, RegExpUnicodeSetsModeNotSupported);
+ return new RegExpParseResult(conversionError);
}
- var adaptedPattern = ParseCore(out var capturingGroups, out conversionError, out var canCompile);
+ var adaptedPattern = ParseCore(validateOnly: _tokenizer._options._regExpParseMode == RegExpParseMode.Validate,
+ out var capturingGroups, out conversionError, out var canCompile);
+
if (adaptedPattern is null)
{
// NOTE: ParseCore should return null
@@ -205,13 +209,13 @@ public RegExpParseResult Parse()
}
}
- internal string? ParseCore(out ArrayList capturingGroups, out RegExpConversionError? conversionError, out bool canCompile)
+ internal string? ParseCore(bool validateOnly, out ArrayList capturingGroups, out RegExpConversionError? conversionError, out bool canCompile)
{
_tokenizer.AcquireStringBuilder(out var sb);
try
{
StringBuilder? adaptedPatternBuilder;
- if (_tokenizer._options._regExpParseMode == RegExpParseMode.Validate)
+ if (validateOnly)
{
_auxiliaryStringBuilder = sb;
adaptedPatternBuilder = null;
@@ -229,9 +233,11 @@ public RegExpParseResult Parse()
ResetParseContext(adaptedPatternBuilder);
- var adaptedPattern = (_flags & RegExpFlags.Unicode) != 0
- ? ParsePattern(UnicodeMode.Instance, out conversionError)
+ var adaptedPattern =
+ (_flags & RegExpFlags.UnicodeSets) != 0 ? ParsePattern(UnicodeSetsMode.Instance, out conversionError)
+ : (_flags & RegExpFlags.Unicode) != 0 ? ParsePattern(UnicodeMode.Instance, out conversionError)
: ParsePattern(LegacyMode.Instance, out conversionError);
+
capturingGroups = _capturingGroups;
canCompile = _canCompile;
return adaptedPattern;
@@ -251,10 +257,11 @@ private void CheckBracesBalance()
_capturingGroups = default;
_capturingGroupNames?.Clear();
- var isUnicode = (_flags & RegExpFlags.Unicode) != 0;
+ var isUnicodeSets = (_flags & RegExpFlags.UnicodeSets) != 0;
+ var isUnicode = isUnicodeSets || (_flags & RegExpFlags.Unicode) != 0;
var inGroup = 0;
var inQuantifier = false;
- var inSet = false;
+ var setDepth = 0;
// Potential problematic constructs:
// * Escaped opening/closing brackets (\(, \), \[, \], \{, \}, \<, \>) --> These are handled (see below).
@@ -277,7 +284,7 @@ private void CheckBracesBalance()
switch (ch)
{
case '(':
- if (inSet)
+ if (setDepth > 0)
{
break;
}
@@ -314,7 +321,7 @@ private void CheckBracesBalance()
break;
case ')':
- if (inSet)
+ if (setDepth > 0)
{
break;
}
@@ -328,7 +335,7 @@ private void CheckBracesBalance()
break;
case '{':
- if (inSet)
+ if (setDepth > 0)
{
break;
}
@@ -345,7 +352,7 @@ private void CheckBracesBalance()
break;
case '}':
- if (inSet)
+ if (setDepth > 0)
{
break;
}
@@ -362,18 +369,18 @@ private void CheckBracesBalance()
break;
case '[':
- if (inSet)
+ if (setDepth > 0 && !isUnicodeSets)
{
break;
}
- inSet = true;
+ setDepth++;
break;
case ']':
- if (inSet)
+ if (setDepth > 0)
{
- inSet = false;
+ setDepth--;
}
else if (isUnicode)
{
@@ -392,7 +399,7 @@ private void CheckBracesBalance()
ReportSyntaxError(_pattern.Length, RegExpUnterminatedGroup);
}
- if (inSet)
+ if (setDepth > 0)
{
ReportSyntaxError(_pattern.Length, RegExpUnterminatedCharacterClass);
}
@@ -426,16 +433,7 @@ private void CheckBracesBalance()
switch (ch)
{
case '[' when !WithinSet:
- _setStartIndex = i;
- _setRangeStart = SetRangeNotStarted;
-
- mode.ProcessSetSpecialChar(ch, this);
-
- if ((ch = (char)_pattern.CharCodeAt(i + 1)) == '^')
- {
- mode.ProcessSetSpecialChar(ch, this);
- i++;
- }
+ mode.ProcessSetStart(ch, this);
break;
case '-' when WithinSet:
@@ -784,8 +782,8 @@ private static bool TryGetSimpleEscapeCharCode(char ch, bool withinSet, out usho
// CharacterEscape -> ControlEscape
case 'f': charCode = '\f'; return true;
case 'n': charCode = '\n'; return true;
- case 't': charCode = '\t'; return true;
case 'r': charCode = '\r'; return true;
+ case 't': charCode = '\t'; return true;
case 'v': charCode = '\v'; return true;
// CharacterEscape -> IdentityEscape -> '/'
@@ -1345,9 +1343,13 @@ private void SetFollowingQuantifierError(string message, [CallerArgumentExpressi
// from the global _flags due to inline modifier groups like (?s:...) or (?-m:...).
private RegExpFlags _effectiveFlags;
+ private int _recursionDepth;
+
+ ref int StackGuard.IRecursionDepthProvider.CurrentDepth => ref _recursionDepth;
+
private void ResetParseContext(StringBuilder? sb)
{
- // _auxiliaryStringBuilder, _index and _capturingGroupNames are reset externally.
+ // _auxiliaryStringBuilder, _index, _capturingGroupNames, _setRangeStart are reset externally.
// _capturingGroups is not reused.
_stringBuilder = sb;
@@ -1370,7 +1372,6 @@ private void ResetParseContext(StringBuilder? sb)
}
_setStartIndex = -1;
- _setRangeStart = 0;
SetFollowingQuantifierError(RegExpNothingToRepeat);
@@ -1379,6 +1380,8 @@ private void ResetParseContext(StringBuilder? sb)
_canCompile = true;
_effectiveFlags = _flags;
+
+ _recursionDepth = 0;
}
internal void ReleaseReferencesAndLargeBuffers()
@@ -1414,6 +1417,8 @@ private interface IMode
void ProcessSetChar(char ch, Action? appender, RegExpParser parser, int startIndex);
+ void ProcessSetStart(char ch, RegExpParser parser);
+
bool RewriteSet(RegExpParser parser);
void RewriteDot(RegExpParser parser);
diff --git a/src/Acornima/Tokenizer.cs b/src/Acornima/Tokenizer.cs
index 9875b50..034ddf1 100644
--- a/src/Acornima/Tokenizer.cs
+++ b/src/Acornima/Tokenizer.cs
@@ -22,6 +22,7 @@ public sealed partial class Tokenizer : ITokenizer
private readonly TokenizerOptions _options;
private readonly IExtension? _extension;
+ internal StackGuard.IRecursionDepthProvider? _recursionDepthProvider;
internal RegExpParser? _regExpParser;
internal Tokenizer(TokenizerOptions options, IExtension? extension)
@@ -142,7 +143,7 @@ internal bool TryReadToken(int cp)
{
// https://github.com/acornjs/acorn/blob/8.11.3/acorn/src/tokenize.js > `pp.readToken = function`, `pp.getTokenFromCode = function`
- // NOTE: `getTokenFromCode` and `readToken` was merged into a single method (`TryReadToken`).
+ // NOTE: `getTokenFromCode` and `readToken` were merged into a single method (`TryReadToken`).
// The merged method was also changed to return success instead of throwing on invalid token.
// Identifier or keyword. '\uXXXX' sequences are allowed in
diff --git a/src/Acornima/UnicodeProperties.cs b/src/Acornima/UnicodeProperties.cs
index 91aa612..a2e1ff3 100644
--- a/src/Acornima/UnicodeProperties.cs
+++ b/src/Acornima/UnicodeProperties.cs
@@ -12,6 +12,7 @@ internal static class UnicodeProperties
private static readonly Dictionary, KeyValuePair> s_generalCategoryLookup = new(StringSliceEqualityComparer.Instance);
private static readonly Dictionary, EcmaVersion> s_scriptValueLookup = new(StringSliceEqualityComparer.Instance);
private static readonly Dictionary, EcmaVersion> s_binaryValueLookup = new(StringSliceEqualityComparer.Instance);
+ private static readonly Dictionary, EcmaVersion> s_binaryOfStringsValueLookup = new(StringSliceEqualityComparer.Instance);
static UnicodeProperties()
{
@@ -76,7 +77,7 @@ static void PopulateVersionLookup(Dictionary, EcmaVersion>
}
PopulateVersionLookup(s_scriptValueLookup, EcmaVersion.ES14,
- "Hrkt", "Katakana_Or_Hiragana", "Kawi", "Nag_Mundari", "Nagm", "Unknown", "Zzzz");
+ "Berf", "Beria_Erfe", "Gara", "Garay", "Gukh", "Gurung_Khema", "Hrkt", "Katakana_Or_Hiragana", "Kawi", "Kirat_Rai", "Krai", "Nag_Mundari", "Nagm", "Ol_Onal", "Onao", "Sidetic", "Sidt", "Sunu", "Sunuwar", "Tai_Yo", "Tayo", "Todhri", "Todr", "Tolong_Siki", "Tols", "Tulu_Tigalari", "Tutg", "Unknown", "Zzzz");
PopulateVersionLookup(s_scriptValueLookup, EcmaVersion.ES13,
"Cypro_Minoan", "Cpmn", "Old_Uyghur", "Ougr", "Tangsa", "Tnsa", "Toto", "Vithkuqi", "Vith");
@@ -93,6 +94,7 @@ static void PopulateVersionLookup(Dictionary, EcmaVersion>
PopulateVersionLookup(s_scriptValueLookup, EcmaVersion.ES9,
"Adlam", "Adlm", "Ahom", "Anatolian_Hieroglyphs", "Hluw", "Arabic", "Arab", "Armenian", "Armn", "Avestan", "Avst", "Balinese", "Bali", "Bamum", "Bamu", "Bassa_Vah", "Bass", "Batak", "Batk", "Bengali", "Beng", "Bhaiksuki", "Bhks", "Bopomofo", "Bopo", "Brahmi", "Brah", "Braille", "Brai", "Buginese", "Bugi", "Buhid", "Buhd", "Canadian_Aboriginal", "Cans", "Carian", "Cari", "Caucasian_Albanian", "Aghb", "Chakma", "Cakm", "Cham", "Cham", "Cherokee", "Cher", "Common", "Zyyy", "Coptic", "Copt", "Qaac", "Cuneiform", "Xsux", "Cypriot", "Cprt", "Cyrillic", "Cyrl", "Deseret", "Dsrt", "Devanagari", "Deva", "Duployan", "Dupl", "Egyptian_Hieroglyphs", "Egyp", "Elbasan", "Elba", "Ethiopic", "Ethi", "Georgian", "Geor", "Glagolitic", "Glag", "Gothic", "Goth", "Grantha", "Gran", "Greek", "Grek", "Gujarati", "Gujr", "Gurmukhi", "Guru", "Han", "Hani", "Hangul", "Hang", "Hanunoo", "Hano", "Hatran", "Hatr", "Hebrew", "Hebr", "Hiragana", "Hira", "Imperial_Aramaic", "Armi", "Inherited", "Zinh", "Qaai", "Inscriptional_Pahlavi", "Phli", "Inscriptional_Parthian", "Prti", "Javanese", "Java", "Kaithi", "Kthi", "Kannada", "Knda", "Katakana", "Kana", "Kayah_Li", "Kali", "Kharoshthi", "Khar", "Khmer", "Khmr", "Khojki", "Khoj", "Khudawadi", "Sind", "Lao", "Laoo", "Latin", "Latn", "Lepcha", "Lepc", "Limbu", "Limb", "Linear_A", "Lina", "Linear_B", "Linb", "Lisu", "Lisu", "Lycian", "Lyci", "Lydian", "Lydi", "Mahajani", "Mahj", "Malayalam", "Mlym", "Mandaic", "Mand", "Manichaean", "Mani", "Marchen", "Marc", "Masaram_Gondi", "Gonm", "Meetei_Mayek", "Mtei", "Mende_Kikakui", "Mend", "Meroitic_Cursive", "Merc", "Meroitic_Hieroglyphs", "Mero", "Miao", "Plrd", "Modi", "Mongolian", "Mong", "Mro", "Mroo", "Multani", "Mult", "Myanmar", "Mymr", "Nabataean", "Nbat", "New_Tai_Lue", "Talu", "Newa", "Newa", "Nko", "Nkoo", "Nushu", "Nshu", "Ogham", "Ogam", "Ol_Chiki", "Olck", "Old_Hungarian", "Hung", "Old_Italic", "Ital", "Old_North_Arabian", "Narb", "Old_Permic", "Perm", "Old_Persian", "Xpeo", "Old_South_Arabian", "Sarb", "Old_Turkic", "Orkh", "Oriya", "Orya", "Osage", "Osge", "Osmanya", "Osma", "Pahawh_Hmong", "Hmng", "Palmyrene", "Palm", "Pau_Cin_Hau", "Pauc", "Phags_Pa", "Phag", "Phoenician", "Phnx", "Psalter_Pahlavi", "Phlp", "Rejang", "Rjng", "Runic", "Runr", "Samaritan", "Samr", "Saurashtra", "Saur", "Sharada", "Shrd", "Shavian", "Shaw", "Siddham", "Sidd", "SignWriting", "Sgnw", "Sinhala", "Sinh", "Sora_Sompeng", "Sora", "Soyombo", "Soyo", "Sundanese", "Sund", "Syloti_Nagri", "Sylo", "Syriac", "Syrc", "Tagalog", "Tglg", "Tagbanwa", "Tagb", "Tai_Le", "Tale", "Tai_Tham", "Lana", "Tai_Viet", "Tavt", "Takri", "Takr", "Tamil", "Taml", "Tangut", "Tang", "Telugu", "Telu", "Thaana", "Thaa", "Thai", "Tibetan", "Tibt", "Tifinagh", "Tfng", "Tirhuta", "Tirh", "Ugaritic", "Ugar", "Vai", "Vaii", "Warang_Citi", "Wara", "Yi", "Yiii", "Zanabazar_Square", "Zanb");
+ // https://tc39.es/ecma262/#table-binary-unicode-properties
PopulateVersionLookup(s_binaryValueLookup, EcmaVersion.ES12,
"EBase", "EComp", "EMod", "EPres", "ExtPict");
@@ -101,6 +103,10 @@ static void PopulateVersionLookup(Dictionary, EcmaVersion>
PopulateVersionLookup(s_binaryValueLookup, EcmaVersion.ES9,
"ASCII", "ASCII_Hex_Digit", "AHex", "Alphabetic", "Alpha", "Any", "Assigned", "Bidi_Control", "Bidi_C", "Bidi_Mirrored", "Bidi_M", "Case_Ignorable", "CI", "Cased", "Changes_When_Casefolded", "CWCF", "Changes_When_Casemapped", "CWCM", "Changes_When_Lowercased", "CWL", "Changes_When_NFKC_Casefolded", "CWKCF", "Changes_When_Titlecased", "CWT", "Changes_When_Uppercased", "CWU", "Dash", "Default_Ignorable_Code_Point", "DI", "Deprecated", "Dep", "Diacritic", "Dia", "Emoji", "Emoji_Component", "Emoji_Modifier", "Emoji_Modifier_Base", "Emoji_Presentation", "Extender", "Ext", "Grapheme_Base", "Gr_Base", "Grapheme_Extend", "Gr_Ext", "Hex_Digit", "Hex", "IDS_Binary_Operator", "IDSB", "IDS_Trinary_Operator", "IDST", "ID_Continue", "IDC", "ID_Start", "IDS", "Ideographic", "Ideo", "Join_Control", "Join_C", "Logical_Order_Exception", "LOE", "Lowercase", "Lower", "Math", "Noncharacter_Code_Point", "NChar", "Pattern_Syntax", "Pat_Syn", "Pattern_White_Space", "Pat_WS", "Quotation_Mark", "QMark", "Radical", "Regional_Indicator", "RI", "Sentence_Terminal", "STerm", "Soft_Dotted", "SD", "Terminal_Punctuation", "Term", "Unified_Ideograph", "UIdeo", "Uppercase", "Upper", "Variation_Selector", "VS", "White_Space", "space", "XID_Continue", "XIDC", "XID_Start", "XIDS");
+
+ // https://tc39.es/ecma262/#table-binary-unicode-properties-of-strings
+ PopulateVersionLookup(s_binaryOfStringsValueLookup, EcmaVersion.ES15,
+ "Basic_Emoji", "Emoji_Keycap_Sequence", "RGI_Emoji_Modifier_Sequence", "RGI_Emoji_Flag_Sequence", "RGI_Emoji_Tag_Sequence", "RGI_Emoji_ZWJ_Sequence", "RGI_Emoji");
}
public static bool IsAllowedGeneralCategoryValue(ReadOnlyMemory propertyValue)
@@ -125,4 +131,9 @@ public static bool IsAllowedBinaryValue(ReadOnlyMemory propertyValue, Ecma
{
return s_binaryValueLookup.TryGetValue(propertyValue, out var version) && ecmaVersion >= version;
}
+
+ public static bool IsAllowedBinaryOfStringsValue(ReadOnlyMemory propertyValue, EcmaVersion ecmaVersion)
+ {
+ return s_binaryOfStringsValueLookup.TryGetValue(propertyValue, out var version) && ecmaVersion >= version;
+ }
}
diff --git a/test/Acornima.Tests.Test262/Test262Harness.settings.json b/test/Acornima.Tests.Test262/Test262Harness.settings.json
index e0f94e1..4ae12cd 100644
--- a/test/Acornima.Tests.Test262/Test262Harness.settings.json
+++ b/test/Acornima.Tests.Test262/Test262Harness.settings.json
@@ -8,7 +8,6 @@
"import-assertions",
"import-defer",
"json-modules",
- "regexp-v-flag",
"source-phase-imports"
],
"ExcludedFlags": [],
diff --git a/test/Acornima.Tests/Fixtures.RegExp/Generator/Program.cs b/test/Acornima.Tests/Fixtures.RegExp/Generator/Program.cs
index c58d4bb..8905050 100644
--- a/test/Acornima.Tests/Fixtures.RegExp/Generator/Program.cs
+++ b/test/Acornima.Tests/Fixtures.RegExp/Generator/Program.cs
@@ -47,6 +47,9 @@ static string DecodeStringIfEscaped(string value) => JavaScriptString.IsStringLi
: value;
var tokenizerOptions = new TokenizerOptions { ExperimentalESFeatures = ExperimentalESFeatures.RegExpModifiers, RegExpParseMode = RegExpParseMode.AdaptToInterpreted, Tolerant = true };
+var tokenizer = new Tokenizer(string.Empty, tokenizerOptions);
+var regexParser = new Tokenizer.RegExpParser(tokenizer);
+
var output = new List();
var lineNumber = 0;
var testCaseCount = 0;
@@ -72,9 +75,11 @@ static string DecodeStringIfEscaped(string value) => JavaScriptString.IsStringLi
var pattern = DecodeStringIfEscaped(parts[0]);
var flags = DecodeStringIfEscaped(parts[1]);
+ var validateOnly = flags.Contains('v');
+
+ regexParser.Reset(pattern, patternStartIndex: 0, flags, flagsStartIndex: 0);
- var regexParser = new Tokenizer.RegExpParser(pattern, flags, tokenizerOptions);
- try { adaptedPattern = regexParser.ParseCore(out _, out _, out _) ?? ")inconvertible("; }
+ try { adaptedPattern = regexParser.ParseCore(validateOnly, out _, out _, out _) ?? ")inconvertible("; }
catch (SyntaxErrorException) { adaptedPattern = ")syntax-error("; }
var encodedDotnetPattern = JavaScriptString.Encode(adaptedPattern, addDoubleQuotes: false);
if (adaptedPattern != encodedDotnetPattern)
diff --git a/test/Acornima.Tests/Fixtures.RegExp/testcases.template.txt b/test/Acornima.Tests/Fixtures.RegExp/testcases.template.txt
index 89493f0..5f25967 100644
--- a/test/Acornima.Tests/Fixtures.RegExp/testcases.template.txt
+++ b/test/Acornima.Tests/Fixtures.RegExp/testcases.template.txt
@@ -1,4 +1,4 @@
-# This file defines test cases for regular expression conversion testing (see RegExpTests.ExecuteTestCase).
+# This file defines test cases for regular expression conversion testing (see RegExpTests.ExecuteTestCase).
# Each uncommented, non-whitespace line specifies a test case in a tab-delimited format, with the following fields:
# JS regexp pattern | JS regexp flags | expected .NET regexp pattern (*) | a string to test the regexp | expected matches in JSON format (*) | hints (optional)
# (*) These fields are not specified in the template file but generated using the Generator tool.
@@ -8,842 +8,1272 @@
( (
( u (
+( v (
) )
) u )
+) v )
[(] (
[(] u (
+[(] v (
[)] )
[)] u )
+[)] v )
{ {
{ u {
+{ v {
} }
} u }
+} v }
[{] {
[{] u {
+[{] v {
[}] }
[}] u }
+[}] v }
[{|}] {}
[{|}] u {}
+[{|}] v {}
[ [
[ u [
+[ v [
] ]
] u ]
+] v ]
[[] [
[[] u [
+[[] v [
[]] ]
[]] u ]
+[]] v ]
\2(x)) x
\2(x)) u x !ignore-error-message
+\2(x)) v x !ignore-error-message
\2(x))() x
\2(x))() u x
+\2(x))() v x
# Empty pattern
"x\ud83d💩\udca9X"
u "x\ud83d💩\udca9X"
+ v "x\ud83d💩\udca9X"
# Literal characters
x "x\ud83d💩\udca9X"
x u "x\ud83d💩\udca9X"
+x v "x\ud83d💩\udca9X"
x i "x\ud83d💩\udca9X"
x ui "x\ud83d💩\udca9X"
+x vi "x\ud83d💩\udca9X"
X "x\ud83d💩\udca9X"
X u "x\ud83d💩\udca9X"
+X v "x\ud83d💩\udca9X"
X i "x\ud83d💩\udca9X"
X ui "x\ud83d💩\udca9X"
+X vi "x\ud83d💩\udca9X"
\x "x\ud83d💩\udca9X"
\x u "x\ud83d💩\udca9X"
+\x v "x\ud83d💩\udca9X"
\x i "x\ud83d💩\udca9X"
\x ui "x\ud83d💩\udca9X"
+\x vi "x\ud83d💩\udca9X"
\X "x\ud83d💩\udca9X"
\X u "x\ud83d💩\udca9X"
+\X v "x\ud83d💩\udca9X"
\X i "x\ud83d💩\udca9X"
\X ui "x\ud83d💩\udca9X"
+\X vi "x\ud83d💩\udca9X"
x* "x\ud83d💩\udca9X"
x* u "x\ud83d💩\udca9X"
+x* v "x\ud83d💩\udca9X"
x* i "x\ud83d💩\udca9X"
x* ui "x\ud83d💩\udca9X"
+x* vi "x\ud83d💩\udca9X"
X* "x\ud83d💩\udca9X"
X* u "x\ud83d💩\udca9X"
+X* v "x\ud83d💩\udca9X"
X* i "x\ud83d💩\udca9X"
X* ui "x\ud83d💩\udca9X"
+X* vi "x\ud83d💩\udca9X"
\x* "x\ud83d💩\udca9X"
\x* u "x\ud83d💩\udca9X"
+\x* v "x\ud83d💩\udca9X"
\x* i "x\ud83d💩\udca9X"
\x* ui "x\ud83d💩\udca9X"
+\x* vi "x\ud83d💩\udca9X"
\X* "x\ud83d💩\udca9X"
\X* u "x\ud83d💩\udca9X"
+\X* v "x\ud83d💩\udca9X"
\X* i "x\ud83d💩\udca9X"
\X* ui "x\ud83d💩\udca9X"
+\X* vi "x\ud83d💩\udca9X"
[x] "x\ud83d💩\udca9X"
[x] u "x\ud83d💩\udca9X"
+[x] v "x\ud83d💩\udca9X"
[x] i "x\ud83d💩\udca9X"
[x] ui "x\ud83d💩\udca9X"
+[x] vi "x\ud83d💩\udca9X"
[X] "x\ud83d💩\udca9X"
[X] u "x\ud83d💩\udca9X"
+[X] v "x\ud83d💩\udca9X"
[X] i "x\ud83d💩\udca9X"
[X] ui "x\ud83d💩\udca9X"
+[X] vi "x\ud83d💩\udca9X"
[\x] "x\ud83d💩\udca9X"
[\x] u "x\ud83d💩\udca9X"
+[\x] v "x\ud83d💩\udca9X"
[\x] i "x\ud83d💩\udca9X"
[\x] ui "x\ud83d💩\udca9X"
+[\x] vi "x\ud83d💩\udca9X"
[\X] "x\ud83d💩\udca9X"
[\X] u "x\ud83d💩\udca9X"
+[\X] v "x\ud83d💩\udca9X"
[\X] i "x\ud83d💩\udca9X"
[\X] ui "x\ud83d💩\udca9X"
+[\X] vi "x\ud83d💩\udca9X"
[^x] "x\ud83d💩\udca9X"
[^x] u "x\ud83d💩\udca9X"
+[^x] v "x\ud83d💩\udca9X"
[^x] i "x\ud83d💩\udca9X"
[^x] ui "x\ud83d💩\udca9X"
+[^x] vi "x\ud83d💩\udca9X"
[^X] "x\ud83d💩\udca9X"
[^X] u "x\ud83d💩\udca9X"
+[^X] v "x\ud83d💩\udca9X"
[^X] i "x\ud83d💩\udca9X"
[^X] ui "x\ud83d💩\udca9X"
+[^X] vi "x\ud83d💩\udca9X"
[^\x] "x\ud83d💩\udca9X"
[^\x] u "x\ud83d💩\udca9X"
+[^\x] v "x\ud83d💩\udca9X"
[^\x] i "x\ud83d💩\udca9X"
[^\x] ui "x\ud83d💩\udca9X"
+[^\x] vi "x\ud83d💩\udca9X"
[^\X] "x\ud83d💩\udca9X"
[^\X] u "x\ud83d💩\udca9X"
+[^\X] v "x\ud83d💩\udca9X"
[^\X] i "x\ud83d💩\udca9X"
[^\X] ui "x\ud83d💩\udca9X"
+[^\X] vi "x\ud83d💩\udca9X"
<.+?>
<.+?> u
+<.+?> v
victor jagt zwölf boxkämpfer quer über den großen sylter deich i VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH
victor jagt zwölf boxkämpfer quer über den großen sylter deich ui VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH
+victor jagt zwölf boxkämpfer quer über den großen sylter deich vi VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH
VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH i victor jagt zwölf boxkämpfer quer über den großen sylter deich
VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH ui victor jagt zwölf boxkämpfer quer über den großen sylter deich
+VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH vi victor jagt zwölf boxkämpfer quer über den großen sylter deich
høj bly gom vandt fræk sexquiz på wc i HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC
høj bly gom vandt fræk sexquiz på wc ui HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC
+høj bly gom vandt fræk sexquiz på wc vi HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC
HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC i høj bly gom vandt fræk sexquiz på wc
HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC ui høj bly gom vandt fræk sexquiz på wc
+HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC vi høj bly gom vandt fræk sexquiz på wc
törkylempijävongahdus i TÖRKYLEMPIJÄVONGAHDUS
törkylempijävongahdus ui TÖRKYLEMPIJÄVONGAHDUS
+törkylempijävongahdus vi TÖRKYLEMPIJÄVONGAHDUS
TÖRKYLEMPIJÄVONGAHDUS i törkylempijävongahdus
TÖRKYLEMPIJÄVONGAHDUS ui törkylempijävongahdus
+TÖRKYLEMPIJÄVONGAHDUS vi törkylempijävongahdus
kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa i KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA
kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa ui KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA
+kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa vi KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA
KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA i kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa
KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA ui kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa
+KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA vi kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa
flygande bäckasiner söka hwila på mjuka tuvor i FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR
flygande bäckasiner söka hwila på mjuka tuvor ui FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR
+flygande bäckasiner söka hwila på mjuka tuvor vi FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR
FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR i flygande bäckasiner söka hwila på mjuka tuvor
FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR ui flygande bäckasiner söka hwila på mjuka tuvor
+FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR vi flygande bäckasiner söka hwila på mjuka tuvor
à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz i À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ
à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz ui À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ
+à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz vi À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ
À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ i à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz
À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ ui à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz
+À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ vi à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz
benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú i BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ
benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú ui BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ
+benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú vi BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ
BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ i benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú
BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ ui benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú
+BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ vi benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú
příliš žluťoučký kůň úpěl ďábelské ódy i PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY
příliš žluťoučký kůň úpěl ďábelské ódy ui PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY
+příliš žluťoučký kůň úpěl ďábelské ódy vi PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY
PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY i příliš žluťoučký kůň úpěl ďábelské ódy
PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY ui příliš žluťoučký kůň úpěl ďábelské ódy
+PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY vi příliš žluťoučký kůň úpěl ďábelské ódy
kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso i KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO
kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso ui KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO
+kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso vi KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO
KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO i kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso
KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO ui kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso
+KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO vi kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso
stróż pchnął kość w quiz gędźb vel fax myjń i STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ
stróż pchnął kość w quiz gędźb vel fax myjń ui STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ
+stróż pchnął kość w quiz gędźb vel fax myjń vi STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ
STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ i stróż pchnął kość w quiz gędźb vel fax myjń
STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ ui stróż pchnął kość w quiz gędźb vel fax myjń
+STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ vi stróż pchnął kość w quiz gędźb vel fax myjń
árvíztűrő tükörfúrógép i ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
árvíztűrő tükörfúrógép ui ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
+árvíztűrő tükörfúrógép vi ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP i árvíztűrő tükörfúrógép
ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP ui árvíztűrő tükörfúrógép
+ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP vi árvíztűrő tükörfúrógép
zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq i ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ
zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq ui ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ
+zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq vi ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ
ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ i zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq
ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ ui zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq
+ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ vi zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq
cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn i CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN
cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn ui CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN
+cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn vi CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN
CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN i cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn
CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN ui cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn
+CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN vi cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn
pijamalı hasta yağız şoföre çabucak güvendi i PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI
pijamalı hasta yağız şoföre çabucak güvendi ui PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI
+pijamalı hasta yağız şoföre çabucak güvendi vi PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI
PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI i pijamalı hasta yağız şoföre çabucak güvendi
PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI ui pijamalı hasta yağız şoföre çabucak güvendi
+PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI vi pijamalı hasta yağız şoföre çabucak güvendi
[victor jagt zwölf boxkämpfer quer über den großen sylter deich] i VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH
[victor jagt zwölf boxkämpfer quer über den großen sylter deich] ui VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH
+[victor jagt zwölf boxkämpfer quer über den großen sylter deich] vi VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH
[VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH] i victor jagt zwölf boxkämpfer quer über den großen sylter deich
[VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH] ui victor jagt zwölf boxkämpfer quer über den großen sylter deich
+[VICTOR JAGT ZWÖLF BOXKÄMPFER QUER ÜBER DEN GROßEN SYLTER DEICH] vi victor jagt zwölf boxkämpfer quer über den großen sylter deich
[høj bly gom vandt fræk sexquiz på wc] i HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC
[høj bly gom vandt fræk sexquiz på wc] ui HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC
+[høj bly gom vandt fræk sexquiz på wc] vi HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC
[HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC] i høj bly gom vandt fræk sexquiz på wc
[HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC] ui høj bly gom vandt fræk sexquiz på wc
+[HØJ BLY GOM VANDT FRÆK SEXQUIZ PÅ WC] vi høj bly gom vandt fræk sexquiz på wc
[törkylempijävongahdus] i TÖRKYLEMPIJÄVONGAHDUS
[törkylempijävongahdus] ui TÖRKYLEMPIJÄVONGAHDUS
+[törkylempijävongahdus] vi TÖRKYLEMPIJÄVONGAHDUS
[TÖRKYLEMPIJÄVONGAHDUS] i törkylempijävongahdus
[TÖRKYLEMPIJÄVONGAHDUS] ui törkylempijävongahdus
+[TÖRKYLEMPIJÄVONGAHDUS] vi törkylempijävongahdus
[kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa] i KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA
[kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa] ui KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA
+[kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa] vi KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA
[KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA] i kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa
[KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA] ui kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa
+[KÆMI NÝ ÖXI HÉR, YKIST ÞJÓFUM NÚ BÆÐI VÍL OG ÁDREPA] vi kæmi ný öxi hér, ykist þjófum nú bæði víl og ádrepa
[flygande bäckasiner söka hwila på mjuka tuvor] i FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR
[flygande bäckasiner söka hwila på mjuka tuvor] ui FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR
+[flygande bäckasiner söka hwila på mjuka tuvor] vi FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR
[FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR] i flygande bäckasiner söka hwila på mjuka tuvor
[FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR] ui flygande bäckasiner söka hwila på mjuka tuvor
+[FLYGANDE BÄCKASINER SÖKA HWILA PÅ MJUKA TUVOR] vi flygande bäckasiner söka hwila på mjuka tuvor
[à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz] i À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ
[à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz] ui À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ
+[à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz] vi À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ
[À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ] i à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz
[À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ] ui à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz
+[À NOITE, VOVÔ KOWALSKY VÊ O ÍMÃ CAIR NO PÉ DO PINGÜIM QUEIXOSO E VOVÓ PÕE AÇÚCAR NO CHÁ DE TÂMARAS DO JABUTI FELIZ] vi à noite, vovô kowalsky vê o ímã cair no pé do pingüim queixoso e vovó põe açúcar no chá de tâmaras do jabuti feliz
[benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú] i BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ
[benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú] ui BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ
+[benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú] vi BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ
[BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ] i benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú
[BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ] ui benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú
+[BENJAMÍN PIDIÓ UNA BEBIDA DE KIWI Y FRESA NOÉ, SIN VERGÜENZA, LA MÁS EXQUISITA CHAMPAÑA DEL MENÚ] vi benjamín pidió una bebida de kiwi y fresa noé, sin vergüenza, la más exquisita champaña del menú
[příliš žluťoučký kůň úpěl ďábelské ódy] i PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY
[příliš žluťoučký kůň úpěl ďábelské ódy] ui PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY
+[příliš žluťoučký kůň úpěl ďábelské ódy] vi PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY
[PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY] i příliš žluťoučký kůň úpěl ďábelské ódy
[PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY] ui příliš žluťoučký kůň úpěl ďábelské ódy
+[PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY] vi příliš žluťoučký kůň úpěl ďábelské ódy
[kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso] i KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO
[kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso] ui KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO
+[kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso] vi KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO
[KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO] i kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso
[KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO] ui kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso
+[KŔDEĽ ŠŤASTNÝCH ĎATĽOV UČÍ PRI ÚSTÍ VÁHU MĹKVEHO KOŇA OBHRÝZAŤ KÔRU A ŽRAŤ ČERSTVÉ MÄSO] vi kŕdeľ šťastných ďatľov učí pri ústí váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso
[stróż pchnął kość w quiz gędźb vel fax myjń] i STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ
[stróż pchnął kość w quiz gędźb vel fax myjń] ui STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ
+[stróż pchnął kość w quiz gędźb vel fax myjń] vi STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ
[STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ] i stróż pchnął kość w quiz gędźb vel fax myjń
[STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ] ui stróż pchnął kość w quiz gędźb vel fax myjń
+[STRÓŻ PCHNĄŁ KOŚĆ W QUIZ GĘDŹB VEL FAX MYJŃ] vi stróż pchnął kość w quiz gędźb vel fax myjń
[árvíztűrő tükörfúrógép] i ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
[árvíztűrő tükörfúrógép] ui ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
+[árvíztűrő tükörfúrógép] vi ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
[ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP] i árvíztűrő tükörfúrógép
[ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP] ui árvíztűrő tükörfúrógép
+[ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP] vi árvíztűrő tükörfúrógép
[zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq] i ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ
[zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq] ui ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ
+[zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq] vi ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ
[ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ] i zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq
[ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ] ui zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq
+[ZƏFƏR, JAKETINI DƏ PAPAĞıNı DA GÖTÜR, BU AXŞAM HAVA ÇOX SOYUQ OLACAQ] vi zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq
[cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn] i CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN
[cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn] ui CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN
+[cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn] vi CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN
[CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN] i cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn
[CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN] ui cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn
+[CEM VÎ FEQOYÊ PÎS ZÊDETIR JI ÇAR GULÊN XWEŞIK HEBÛN] vi cem vî feqoyê pîs zêdetir ji çar gulên xweşik hebûn
[pijamalı hasta yağız şoföre çabucak güvendi] i PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI
[pijamalı hasta yağız şoföre çabucak güvendi] ui PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI
+[pijamalı hasta yağız şoföre çabucak güvendi] vi PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI
[PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI] i pijamalı hasta yağız şoföre çabucak güvendi
[PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI] ui pijamalı hasta yağız şoföre çabucak güvendi
+[PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI] vi pijamalı hasta yağız şoföre çabucak güvendi
# Escaped syntax characters
\/\^\$\\\.\*\+\?\(\)\[\]\{\}\| x/^$\.*+?()[]{}|-X
\/\^\$\\\.\*\+\?\(\)\[\]\{\}\| u x/^$\.*+?()[]{}|-X
+\/\^\$\\\.\*\+\?\(\)\[\]\{\}\| v x/^$\.*+?()[]{}|-X
\/?\^?\$?\\?\.?\**?\++?\???\(?\)?\[?\]?\{{1}?\}{1}?\|? x/^$\.*+?()[]{}|-X
\/?\^?\$?\\?\.?\**?\++?\???\(?\)?\[?\]?\{{1}?\}{1}?\|? u x/^$\.*+?()[]{}|-X
+\/?\^?\$?\\?\.?\**?\++?\???\(?\)?\[?\]?\{{1}?\}{1}?\|? v x/^$\.*+?()[]{}|-X
[\/\^\$\\\.\*\+\?\(\)\[\]\{\}\|-] x/^$\.*+?()[]{}|-X
[\/\^\$\\\.\*\+\?\(\)\[\]\{\}\|-] u x/^$\.*+?()[]{}|-X
+[\/\^\$\\\.\*\+\?\(\)\[\]\{\}\|-] v x/^$\.*+?()[]{}|-X
[/^$\\.*+?()[\]{}|-] x/^$\.*+?()[]{}|-X
[/^$\\.*+?()[\]{}|-] u x/^$\.*+?()[]{}|-X
+[/^$\\.*+?()[\]{}|-] v x/^$\.*+?()[]{}|-X !ignore-error-message
[/^$\\.*+?()[\]{}|\-] x/^$\.*+?()[]{}|-X
[/^$\\.*+?()[\]{}|\-] u x/^$\.*+?()[]{}|-X
+[/^$\\.*+?()[\]{}|\-] v x/^$\.*+?()[]{}|-X !ignore-error-message
[^\/\^\$\\\.\*\+\?\(\)\[\]\{\}\|-] x/^$\.*+?()[]{}|-X
[^\/\^\$\\\.\*\+\?\(\)\[\]\{\}\|-] u x/^$\.*+?()[]{}|-X
+[^\/\^\$\\\.\*\+\?\(\)\[\]\{\}\|-] v x/^$\.*+?()[]{}|-X
[^/^$\\.*+?()[\]{}|-] x/^$\.*+?()[]{}|-X
[^/^$\\.*+?()[\]{}|-] u x/^$\.*+?()[]{}|-X
+[^/^$\\.*+?()[\]{}|-] v x/^$\.*+?()[]{}|-X !ignore-error-message
[^/^$\\.*+?()[\]{}|\-] x/^$\.*+?()[]{}|-X
[^/^$\\.*+?()[\]{}|\-] u x/^$\.*+?()[]{}|-X
+[^/^$\\.*+?()[\]{}|\-] v x/^$\.*+?()[]{}|-X !ignore-error-message
# Surrogate pairs
. "\ud83d💩💫💩\udca9"
. u "\ud83d💩💫💩\udca9"
+. v "\ud83d💩💫💩\udca9"
💩 "\ud83d💩💫💩\udca9"
💩 u "\ud83d💩💫💩\udca9"
+💩 v "\ud83d💩💫💩\udca9"
💩? "\ud83d💩💫💩\udca9"
💩? u "\ud83d💩💫💩\udca9"
+💩? v "\ud83d💩💫💩\udca9"
(💩|💫)+ "\ud83d💩💫💩\udca9"
(💩|💫)+ u "\ud83d💩💫💩\udca9"
+(💩|💫)+ v "\ud83d💩💫💩\udca9"
\ud83d\udca9? "\ud83d💩💫💩\udca9"
\ud83d\udca9? u "\ud83d💩💫💩\udca9"
+\ud83d\udca9? v "\ud83d💩💫💩\udca9"
\u{1F4A9}? u "\ud83d💩💫💩\udca9"
+\u{1F4A9}? v "\ud83d💩💫💩\udca9"
"\\ud83d\udca9" "\ud83d💩💫💩\udca9"
"\\ud83d\udca9" u "\ud83d💩💫💩\udca9"
+"\\ud83d\udca9" v "\ud83d💩💫💩\udca9"
"\\u{d83d}\udca9" u "\ud83d💩💫💩\udca9"
+"\\u{d83d}\udca9" v "\ud83d💩💫💩\udca9"
"\\u{d83d}\\udca9" u "\ud83d💩💫💩\udca9"
+"\\u{d83d}\\udca9" v "\ud83d💩💫💩\udca9"
"\ud83d\\udca9" "\ud83d💩💫💩\udca9"
"\ud83d\\udca9" u "\ud83d💩💫💩\udca9"
+"\ud83d\\udca9" v "\ud83d💩💫💩\udca9"
"\ud83d\\u{dca9}" u "\ud83d💩💫💩\udca9"
+"\ud83d\\u{dca9}" v "\ud83d💩💫💩\udca9"
"\\ud83d\\u{dca9}" u "\ud83d💩💫💩\udca9"
+"\\ud83d\\u{dca9}" v "\ud83d💩💫💩\udca9"
[💩] "\ud83d💩💫💩\udca9"
[💩] u "\ud83d💩💫💩\udca9"
+[💩] v "\ud83d💩💫💩\udca9"
[\ud83d\udca9] "\ud83d💩💫💩\udca9"
[\ud83d\udca9] u "\ud83d💩💫💩\udca9"
+[\ud83d\udca9] v "\ud83d💩💫💩\udca9"
[\u{1F4A9}] u "\ud83d💩💫💩\udca9"
+[\u{1F4A9}] v "\ud83d💩💫💩\udca9"
"[\\ud83d\udca9]" "\ud83d💩💫💩\udca9"
"[\\ud83d\udca9]" u "\ud83d💩💫💩\udca9"
+"[\\ud83d\udca9]" v "\ud83d💩💫💩\udca9"
"[\\u{d83d}\udca9]" u "\ud83d💩💫💩\udca9"
+"[\\u{d83d}\udca9]" v "\ud83d💩💫💩\udca9"
"[\\u{d83d}\\udca9]" u "\ud83d💩💫💩\udca9"
+"[\\u{d83d}\\udca9]" v "\ud83d💩💫💩\udca9"
"[\ud83d\\udca9]" "\ud83d💩💫💩\udca9"
"[\ud83d\\udca9]" u "\ud83d💩💫💩\udca9"
+"[\ud83d\\udca9]" v "\ud83d💩💫💩\udca9"
"[\ud83d\\u{dca9}]" u "\ud83d💩💫💩\udca9"
+"[\ud83d\\u{dca9}]" v "\ud83d💩💫💩\udca9"
"[\\ud83d\\u{dca9}]" u "\ud83d💩💫💩\udca9"
+"[\\ud83d\\u{dca9}]" v "\ud83d💩💫💩\udca9"
[💩-💫] "\ud83d💩💫💩\udca9"
[💩-💫] u "\ud83d💩💫💩\udca9"
+[💩-💫] v "\ud83d💩💫💩\udca9"
[\ud83d\udca9-💫] "\ud83d💩💫💩\udca9"
[\ud83d\udca9-💫] u "\ud83d💩💫💩\udca9"
+[\ud83d\udca9-💫] v "\ud83d💩💫💩\udca9"
[\u{1F4A9}-💫] "\ud83d💩💫💩\udca9"
[\u{1F4A9}-💫] u "\ud83d💩💫💩\udca9"
+[\u{1F4A9}-💫] v "\ud83d💩💫💩\udca9"
"[\\ud83d\udca9-💫]" "\ud83d💩💫💩\udca9"
"[\\ud83d\udca9-💫]" u "\ud83d💩💫💩\udca9"
+"[\\ud83d\udca9-💫]" v "\ud83d💩💫💩\udca9"
"[\\u{d83d}\udca9-💫]" u "\ud83d💩💫💩\udca9"
+"[\\u{d83d}\udca9-💫]" v "\ud83d💩💫💩\udca9"
"[\\u{d83d}\\udca9-💫]" u "\ud83d💩💫💩\udca9"
+"[\\u{d83d}\\udca9-💫]" v "\ud83d💩💫💩\udca9"
"[\ud83d\\udca9-💫]" "\ud83d💩💫💩\udca9"
"[\ud83d\\udca9-💫]" u "\ud83d💩💫💩\udca9"
+"[\ud83d\\udca9-💫]" v "\ud83d💩💫💩\udca9"
"[\ud83d\\u{dca9}-💫]" u "\ud83d💩💫💩\udca9"
+"[\ud83d\\u{dca9}-💫]" v "\ud83d💩💫💩\udca9"
"[\\ud83d\\u{dca9}-💫]" u "\ud83d💩💫💩\udca9"
+"[\\ud83d\\u{dca9}-💫]" v "\ud83d💩💫💩\udca9"
[💩-\ud83d\udcab] "\ud83d💩💫💩\udcab"
[💩-\ud83d\udcab] u "\ud83d💩💫💩\udcab"
+[💩-\ud83d\udcab] v "\ud83d💩💫💩\udcab"
[💩-\u{1F4AB}] u "\ud83d💩💫💩\udcab"
+[💩-\u{1F4AB}] v "\ud83d💩💫💩\udcab"
"[💩-\\ud83d\udcab]" "\ud83d💩💫💩\udcab"
"[💩-\\ud83d\udcab]" u "\ud83d💩💫💩\udcab"
+"[💩-\\ud83d\udcab]" v "\ud83d💩💫💩\udcab"
"[💩-\\u{d83d}\udcab]" u "\ud83d💩💫💩\udcab"
+"[💩-\\u{d83d}\udcab]" v "\ud83d💩💫💩\udcab"
"[💩-\\u{d83d}\\udcab]" u "\ud83d💩💫💩\udcab"
+"[💩-\\u{d83d}\\udcab]" v "\ud83d💩💫💩\udcab"
"[💩-\ud83d\\udcab]" "\ud83d💩💫💩\udcab"
"[💩-\ud83d\\udcab]" u "\ud83d💩💫💩\udcab"
+"[💩-\ud83d\\udcab]" v "\ud83d💩💫💩\udcab"
"[💩-\ud83d\\u{dcab}]" u "\ud83d💩💫💩\udcab"
+"[💩-\ud83d\\u{dcab}]" v "\ud83d💩💫💩\udcab"
"[💩-\\ud83d\\u{dcab}]" u "\ud83d💩💫💩\udcab"
+"[💩-\\ud83d\\u{dcab}]" v "\ud83d💩💫💩\udcab"
[\ud83d\udca9-\ud83d\udcab] "\ud83d💩💫💩\udcab"
[\ud83d\udca9-\ud83d\udcab] u "\ud83d💩💫💩\udcab"
+[\ud83d\udca9-\ud83d\udcab] v "\ud83d💩💫💩\udcab"
[\u{1F4A9}-\ud83d\udcab] u "\ud83d💩💫💩\udcab"
+[\u{1F4A9}-\ud83d\udcab] v "\ud83d💩💫💩\udcab"
[\ud83d\udca9-\u{1F4AB}] u "\ud83d💩💫💩\udcab"
+[\ud83d\udca9-\u{1F4AB}] v "\ud83d💩💫💩\udcab"
[\u{1F4A9}-\u{1F4AB}] u "\ud83d💩💫💩\udcab"
+[\u{1F4A9}-\u{1F4AB}] v "\ud83d💩💫💩\udcab"
[💫-💩] "\ud83d💩💫💩\udca9"
[💫-💩] u "\ud83d💩💫💩\udca9"
+[💫-💩] v "\ud83d💩💫💩\udca9"
[\ud83c\udc00-\ud83c\udfff] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc00-\ud83c\udfff] v "\ud83d💩💫💩\udca9"
[\ud83c\udc00-\ud83d\udfff] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc00-\ud83d\udfff] v "\ud83d💩💫💩\udca9"
[\ud83c\udc00-\ud83e\udfff] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc00-\ud83e\udfff] v "\ud83d💩💫💩\udca9"
[\ud83c\udc01-\ud83c\udfff] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc01-\ud83c\udfff] v "\ud83d💩💫💩\udca9"
[\ud83c\udc01-\ud83d\udfff] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc01-\ud83d\udfff] v "\ud83d💩💫💩\udca9"
[\ud83c\udc01-\ud83e\udfff] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc01-\ud83e\udfff] v "\ud83d💩💫💩\udca9"
[\ud83c\udc00-\ud83c\udffe] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc00-\ud83c\udffe] v "\ud83d💩💫💩\udca9"
[\ud83c\udc00-\ud83d\udffe] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc00-\ud83d\udffe] v "\ud83d💩💫💩\udca9"
[\ud83c\udc00-\ud83e\udffe] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc00-\ud83e\udffe] v "\ud83d💩💫💩\udca9"
[\ud83c\udc01-\ud83c\udffe] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc01-\ud83c\udffe] v "\ud83d💩💫💩\udca9"
[\ud83c\udc01-\ud83d\udffe] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc01-\ud83d\udffe] v "\ud83d💩💫💩\udca9"
[\ud83c\udc01-\ud83e\udffe] u "\ud83d💩💫💩\udca9"
+[\ud83c\udc01-\ud83e\udffe] v "\ud83d💩💫💩\udca9"
[\uFFFE-\u{10001}] u "\uFFFD\uFFFE\uFFFF\u{10000}\u{10001}\u{10002}\udcab\ud83d"
+[\uFFFE-\u{10001}] v "\uFFFD\uFFFE\uFFFF\u{10000}\u{10001}\u{10002}\udcab\ud83d"
[^\uFFFE-\u{10001}] u "\uFFFD\uFFFE\uFFFF\u{10000}\u{10001}\u{10002}\udcab\ud83d"
+[^\uFFFE-\u{10001}] v "\uFFFD\uFFFE\uFFFF\u{10000}\u{10001}\u{10002}\udcab\ud83d"
# Lone surrogates
"\ud83d" "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"\ud83d" u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+"\ud83d" v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
\ud83d "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
\ud83d u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+\ud83d v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
\u{d83d} u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+\u{d83d} v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"\ud83d?" "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"\ud83d?" u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+"\ud83d?" v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"[\ud83d]" "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"[\ud83d]" u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+"[\ud83d]" v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
[\ud83d] "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
[\ud83d] u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+[\ud83d] v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
[\u{d83d}] u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+[\u{d83d}] v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"\udca9" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\udca9" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"\udca9" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\udca9 "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\udca9 u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+\udca9 v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\u{dca9} u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+\u{dca9} v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\udca9?" "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"\udca9?" u "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
+"\udca9?" v "\ud83d \ud83d\udca9 \udca9\ud83d \ud83d"
"[\udca9]" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\udca9]" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"[\udca9]" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\udca9] "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\udca9] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[\udca9] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\u{dca9}] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[\u{dca9}] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\ud83d\udca9" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\ud83d\udca9" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"\\ud83d\udca9" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\ud83d\\udca9" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\ud83d\\udca9" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"\ud83d\\udca9" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\u{d83d}\udca9" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\u{d83d}\udca9" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"\\u{d83d}\udca9" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\ud83d\\u{dca9}" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\ud83d\\u{dca9}" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"\ud83d\\u{dca9}" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\u{d83d}\\udca9" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\u{d83d}\\udca9" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"\\u{d83d}\\udca9" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\ud83d\\u{dca9}" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"\\ud83d\\u{dca9}" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"\\ud83d\\u{dca9}" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\ud83d\udca9]" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\ud83d\udca9]" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"[\\ud83d\udca9]" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\ud83d\\udca9]" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\ud83d\\udca9]" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"[\ud83d\\udca9]" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\u{d83d}\udca9]" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\u{d83d}\udca9]" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"[\\u{d83d}\udca9]" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\ud83d\\u{dca9}]" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\ud83d\\u{dca9}]" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"[\ud83d\\u{dca9}]" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\u{d83d}\\udca9]" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\u{d83d}\\udca9]" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"[\\u{d83d}\\udca9]" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\ud83d\\u{dca9}]" "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
"[\\ud83d\\u{dca9}]" u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+"[\\ud83d\\u{dca9}]" v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\u{d83d}\u{dca9} u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+\u{d83d}\u{dca9} v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\u{d83d}|\u{dca9} u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+\u{d83d}|\u{dca9} v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\u{d83d}\u{dca9}] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[\u{d83d}\u{dca9}] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
. u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+. v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
. us "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+. vs "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[^] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[^] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\D u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+\D v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\S u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+\S v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
\W u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+\W v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\D] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[\D] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\S] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[\S] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\W] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[\W] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[^\d] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[^\d] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[^\s] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[^\s] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[^\w] u "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
+[^\w] v "\udca9 \ud83d\udca9 \udca9\ud83d \udca9"
[\u{d7fd}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{d802}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{d802}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{d800}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{d800}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7fd}-\u{d7ff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7fd}-\u{d7ff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{d802}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{d802}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d7ff}-\u{d800}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d7ff}-\u{d800}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d800}-\u{d802}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d800}-\u{d802}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{d802}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{d802}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbfd}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbfd}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbfd}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbfd}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbfd}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbfd}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbfd}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbfd}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbfd}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbfd}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbfd}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbfd}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbfd}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbfd}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbff}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbff}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbff}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbff}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbff}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbff}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbff}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbff}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbff}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbff}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dbff}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dbff}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc00}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc00}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc00}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc00}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc00}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc00}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc00}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc00}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc00}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc00}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc02}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc02}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc02}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc02}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc02}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc02}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dc02}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dc02}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dffd}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dffd}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dffd}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dffd}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dffd}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dffd}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dfff}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dfff}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{dfff}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{dfff}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[\u{e000}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[\u{e000}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{d802}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{d802}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{d800}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{d800}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7fd}-\u{d7ff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7fd}-\u{d7ff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{d802}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{d802}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d7ff}-\u{d800}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d7ff}-\u{d800}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d800}-\u{d802}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d800}-\u{d802}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{d802}-\u{dbfd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{d802}-\u{dbfd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbfd}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbfd}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbfd}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbfd}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbfd}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbfd}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbfd}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbfd}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbfd}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbfd}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbfd}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbfd}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbfd}-\u{dbff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbfd}-\u{dbff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbff}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbff}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbff}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbff}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbff}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbff}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbff}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbff}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbff}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbff}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dbff}-\u{dc00}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dbff}-\u{dc00}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc00}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc00}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc00}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc00}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc00}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc00}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc00}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc00}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc00}-\u{dc02}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc00}-\u{dc02}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc02}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc02}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc02}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc02}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc02}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc02}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dc02}-\u{dffd}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dc02}-\u{dffd}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dffd}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dffd}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dffd}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dffd}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dffd}-\u{dfff}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dffd}-\u{dfff}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dfff}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{dfff}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
[^\u{dfff}-\u{e000}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"^
+[^\u{dfff}-\u{e000}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"^
[^\u{e000}-\u{e002}] u "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
+[^\u{e000}-\u{e002}] v "\ud7fd \ud7ff \ud800 \ud802 \udbfd \udbff \udc00 \udc02 \udffd \udfff \ue000 \ue002"
(.+).*\1 u "\ud800\udc00\ud800"
+(.+).*\1 v "\ud800\udc00\ud800"
(.+).*\1 u "\ud800\udc00\ud800\udc00"
+(.+).*\1 v "\ud800\udc00\ud800\udc00"
# Common character escape sequences
\t\r\n\v\f "\0\t\r\n\v\f\b"
\t\r\n\v\f u "\0\t\r\n\v\f\b"
+\t\r\n\v\f v "\0\t\r\n\v\f\b"
"\t\r\n\v\f" "\0\t\r\n\v\f\b"
"\t\r\n\v\f" u "\0\t\r\n\v\f\b"
+"\t\r\n\v\f" v "\0\t\r\n\v\f\b"
\t?\r*\n+\v{1}\f{0,} "\0\t\r\n\v\f\b"
\t?\r*\n+\v{1}\f{0,} u "\0\t\r\n\v\f\b"
+\t?\r*\n+\v{1}\f{0,} v "\0\t\r\n\v\f\b"
[\t\r\n\v\f\b] "\0\t\r\n\v\f\b"
[\t\r\n\v\f\b] u "\0\t\r\n\v\f\b"
+[\t\r\n\v\f\b] v "\0\t\r\n\v\f\b"
"[\t\r\n\v\f\b]" "\0\t\r\n\v\f\b"
"[\t\r\n\v\f\b]" u "\0\t\r\n\v\f\b"
+"[\t\r\n\v\f\b]" v "\0\t\r\n\v\f\b"
[^\t\r\n\v\f\b] "\0\t\r\n\v\f\b"
[^\t\r\n\v\f\b] u "\0\t\r\n\v\f\b"
+[^\t\r\n\v\f\b] v "\0\t\r\n\v\f\b"
"[^\t\r\n\v\f\b]" "\0\t\r\n\v\f\b"
"[^\t\r\n\v\f\b]" u "\0\t\r\n\v\f\b"
+"[^\t\r\n\v\f\b]" v "\0\t\r\n\v\f\b"
"[\\b-\t\n\-\\r]" "\0\t\r\n\v\f\b"
"[\\b-\t\n\-\\r]" u "\0\t\r\n\v\f\b"
+"[\\b-\t\n\-\\r]" v "\0\t\r\n\v\f\b"
# Caret notation character escape sequences
\c \c
\c u \c
+\c v \c
\c\cA "\\c\x01"
\c\cA u "\\c\x01"
+\c\cA v "\\c\x01"
\c$ \c
\c$ u \c
+\c$ v \c
\c( \c(
\c( u \c( !ignore-error-message
+\c( v \c( !ignore-error-message
\c) \c)
\c) u \c) !ignore-error-message
+\c) v \c) !ignore-error-message
\c* \c
\c* u \c
+\c* v \c
\c+ \c
\c+ u \c
+\c+ v \c
\c. \cx
\c. u \cx
+\c. v \cx
\c0 \c0
\c0 u \c0
+\c0 v \c0
\c9 \c9
\c9 u \c9
+\c9 v \c9
\c< \c<
\c< u \c<
+\c< v \c<
\c> \c>
\c> u \c>
+\c> v \c>
\c? \c
\c? u \c
+\c? v \c
\c@ \c@
\c@ u \c@
+\c@ v \c@
\cA "\x01"
\cA u "\x01"
+\cA v "\x01"
\cZ "\x1A"
\cZ u "\x1A"
+\cZ v "\x1A"
\c[ \c[
\c[ u \c[ !ignore-error-message
+\c[ v \c[ !ignore-error-message
\c/ \c/
\c/ u \c/
+\c/ v \c/
\c] \c]
\c] u \c] !ignore-error-message
+\c] v \c] !ignore-error-message
\c_ \c_
\c_ u \c_
+\c_ v \c_
\c^ \c^
\c^ u \c^
+\c^ v \c^
\ca "\x01"
\ca u "\x01"
+\ca v "\x01"
\cz "\x1A"
\cz u "\x1A"
+\cz v "\x1A"
\c{ \c{
\c{ u \c{ !ignore-error-message
+\c{ v \c{ !ignore-error-message
\c| \c
\c| u \c
+\c| v \c
\c} \c}
\c} u \c} !ignore-error-message
+\c} v \c} !ignore-error-message
\c(x) \cx
\c(x) u \cx
+\c(x) v \cx
\c \c
\c u \c
+\c v \c
\c[x] \cx
\c[x] u \cx
+\c[x] v \cx
\c{2} \cc
\c{2} u \cc
+\c{2} v \cc
\cI\cM\cJ\cK\cL\cH "\0\t\r\n\v\f\b"
\cI\cM\cJ\cK\cL\cH u "\0\t\r\n\v\f\b"
+\cI\cM\cJ\cK\cL\cH v "\0\t\r\n\v\f\b"
\cI?\cM*\cJ+\cK{1}\cL{0,}\cH{1,2} "\0\t\r\n\v\f\b"
\cI?\cM*\cJ+\cK{1}\cL{0,}\cH{1,2} u "\0\t\r\n\v\f\b"
+\cI?\cM*\cJ+\cK{1}\cL{0,}\cH{1,2} v "\0\t\r\n\v\f\b"
[\c] \c
[\c] u \c
+[\c] v \c
[\c\cA] "\\c\x01"
[\c\cA] u "\\c\x01"
+[\c\cA] v "\\c\x01"
[\c-d] [ac\dc]
[\c-d] u [ac\dc]
+[\c-d] v [ac\dc]
[\c-b] [ac\dc]
[\c-b] u [ac\dc]
+[\c-b] v [ac\dc]
[[-\c] [ac\dc]
[[-\c] u [ac\dc]
+[[-\c] v [ac\dc] !ignore-error-message
[b-\c] [ac\dc]
[b-\c] u [ac\dc]
+[b-\c] v [ac\dc]
[[-\c-d] [ac\dc]
[[-\c-d] u [ac\dc]
+[[-\c-d] v [ac\dc] !ignore-error-message
[\c$] \c$
[\c$] u \c$
+[\c$] v \c$
[\c(] \c(
[\c(] u \c(
+[\c(] v \c(
[\c)] \c)
[\c)] u \c)
+[\c)] v \c)
[\c*] \c*
[\c*] u \c*
+[\c*] v \c*
[\c+] \c+
[\c+] u \c+
+[\c+] v \c+
[\c.] \c.
[\c.] u \c.
+[\c.] v \c.
[\c0] "\\c0\x10"
[\c0] u "\\c0\x10"
+[\c0] v "\\c0\x10"
[\c9] "\\c9\x19"
[\c9] u "\\c9\x19"
+[\c9] v "\\c9\x19"
[\c<] \c<
[\c<] u \c<
+[\c<] v \c<
[\c>] \c>
[\c>] u \c>
+[\c>] v \c>
[\c?] \c?
[\c?] u \c?
+[\c?] v \c?
[\c@] \c@
[\c@] u \c@
+[\c@] v \c@
[\cA] "\\cA\x01"
[\cA] u "\\cA\x01"
+[\cA] v "\\cA\x01"
[\cZ] "\\cZ\x1A"
[\cZ] u "\\cZ\x1A"
+[\cZ] v "\\cZ\x1A"
[\c[] \c[
[\c[] u \c[
+[\c[] v \c[ !ignore-error-message
[\c_] "\\c_\x1F"
[\c_] u "\\c_\x1F"
+[\c_] v "\\c_\x1F"
[\c/] \c/
[\c/] u \c/
+[\c/] v \c/
[\c]] \c]
[\c]] u \c] !ignore-error-message
+[\c]] v \c] !ignore-error-message
[\c^] \c^
[\c^] u \c^
+[\c^] v \c^
[\ca] "\\ca\x01"
[\ca] u "\\ca\x01"
+[\ca] v "\\ca\x01"
[\cz] "\\cz\x1A"
[\cz] u "\\cz\x1A"
+[\cz] v "\\cz\x1A"
[\c{] \c{
[\c{] u \c{
+[\c{] v \c{
[\c|] \c|
[\c|] u \c|
+[\c|] v \c|
[\c}] \c}
[\c}] u \c}
+[\c}] v \c}
[\cI\cM\cJ\cK\cL\cH] "\0\t\r\n\v\f\b"
[\cI\cM\cJ\cK\cL\cH] u "\0\t\r\n\v\f\b"
+[\cI\cM\cJ\cK\cL\cH] v "\0\t\r\n\v\f\b"
[^\cI\cM\cJ\cK\cL\cH] "\0\t\r\n\v\f\b"
[^\cI\cM\cJ\cK\cL\cH] u "\0\t\r\n\v\f\b"
+[^\cI\cM\cJ\cK\cL\cH] v "\0\t\r\n\v\f\b"
"[\\cH-\t\n\-\\cM]" "\0\t\r\n\v\f\b"
"[\\cH-\t\n\-\\cM]" u "\0\t\r\n\v\f\b"
+"[\\cH-\t\n\-\\cM]" v "\0\t\r\n\v\f\b"
# Octal character escape sequences
\0 "\0\t\r\n\v\f\b 0123456789"
\0 u "\0\t\r\n\v\f\b 0123456789"
+\0 v "\0\t\r\n\v\f\b 0123456789"
\00 "\0\t\r\n\v\f\b 0123456789"
\00 u "\0\t\r\n\v\f\b 0123456789"
+\00 v "\0\t\r\n\v\f\b 0123456789"
\000 "\0\t\r\n\v\f\b 0123456789"
\0000 "\0\t\r\n\v\f\b 0123456789"
\1 "\0\t\r\n\v\f\b 0123456789"
\1 u "\0\t\r\n\v\f\b 0123456789"
+\1 v "\0\t\r\n\v\f\b 0123456789"
\01 "\0\t\r\n\v\f\b 0123456789"
\01 u "\0\t\r\n\v\f\b 0123456789"
+\01 v "\0\t\r\n\v\f\b 0123456789"
\001 "\0\t\r\n\v\f\b 0123456789"
\0001 "\0\t\r\n\v\f\b 0123456789"
\7 "\0\t\r\n\v\f\b 0123456789"
\7 u "\0\t\r\n\v\f\b 0123456789"
+\7 v "\0\t\r\n\v\f\b 0123456789"
\07 "\0\t\r\n\v\f\b 0123456789"
\07 u "\0\t\r\n\v\f\b 0123456789"
+\07 v "\0\t\r\n\v\f\b 0123456789"
\007 "\0\t\r\n\v\f\b 0123456789"
\0007 "\0\t\r\n\v\f\b 0123456789"
\8 "\0\t\r\n\v\f\b 0123456789"
\8 u "\0\t\r\n\v\f\b 0123456789"
+\8 v "\0\t\r\n\v\f\b 0123456789"
\08 "\0\t\r\n\v\f\b 0123456789"
\08 u "\0\t\r\n\v\f\b 0123456789"
+\08 v "\0\t\r\n\v\f\b 0123456789"
\008 "\0\t\r\n\v\f\b 0123456789"
\0008 "\0\t\r\n\v\f\b 0123456789"
\9 "\0\t\r\n\v\f\b 0123456789"
\9 u "\0\t\r\n\v\f\b 0123456789"
+\9 v "\0\t\r\n\v\f\b 0123456789"
\09 "\0\t\r\n\v\f\b 0123456789"
\09 u "\0\t\r\n\v\f\b 0123456789"
+\09 v "\0\t\r\n\v\f\b 0123456789"
\009 "\0\t\r\n\v\f\b 0123456789"
\0009 "\0\t\r\n\v\f\b 0123456789"
@@ -864,36 +1294,46 @@ PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI ui pijamalı hasta yağız ş
[\0] "\0\t\r\n\v\f\b 0123456789"
[\0] u "\0\t\r\n\v\f\b 0123456789"
+[\0] v "\0\t\r\n\v\f\b 0123456789"
[\00] "\0\t\r\n\v\f\b 0123456789"
[\00] u "\0\t\r\n\v\f\b 0123456789"
+[\00] v "\0\t\r\n\v\f\b 0123456789"
[\000] "\0\t\r\n\v\f\b 0123456789"
[\0000] "\0\t\r\n\v\f\b 0123456789"
[\1] "\0\t\r\n\v\f\b 0123456789"
[\1] u "\0\t\r\n\v\f\b 0123456789"
+[\1] v "\0\t\r\n\v\f\b 0123456789"
[\01] "\0\t\r\n\v\f\b 0123456789"
[\01] u "\0\t\r\n\v\f\b 0123456789"
+[\01] v "\0\t\r\n\v\f\b 0123456789"
[\001] "\0\t\r\n\v\f\b 0123456789"
[\0001] "\0\t\r\n\v\f\b 0123456789"
[\7] "\0\t\r\n\v\f\b 0123456789"
[\7] u "\0\t\r\n\v\f\b 0123456789"
+[\7] v "\0\t\r\n\v\f\b 0123456789"
[\07] "\0\t\r\n\v\f\b 0123456789"
[\07] u "\0\t\r\n\v\f\b 0123456789"
+[\07] v "\0\t\r\n\v\f\b 0123456789"
[\007] "\0\t\r\n\v\f\b 0123456789"
[\0007] "\0\t\r\n\v\f\b 0123456789"
[\8] "\0\t\r\n\v\f\b 0123456789"
[\8] u "\0\t\r\n\v\f\b 0123456789"
+[\8] v "\0\t\r\n\v\f\b 0123456789"
[\08] "\0\t\r\n\v\f\b 0123456789"
[\08] u "\0\t\r\n\v\f\b 0123456789"
+[\08] v "\0\t\r\n\v\f\b 0123456789"
[\008] "\0\t\r\n\v\f\b 0123456789"
[\0008] "\0\t\r\n\v\f\b 0123456789"
[\9] "\0\t\r\n\v\f\b 0123456789"
[\9] u "\0\t\r\n\v\f\b 0123456789"
+[\9] v "\0\t\r\n\v\f\b 0123456789"
[\09] "\0\t\r\n\v\f\b 0123456789"
[\09] u "\0\t\r\n\v\f\b 0123456789"
+[\09] v "\0\t\r\n\v\f\b 0123456789"
[\009] "\0\t\r\n\v\f\b 0123456789"
[\0009] "\0\t\r\n\v\f\b 0123456789"
@@ -912,80 +1352,101 @@ PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI ui pijamalı hasta yağız ş
[\0-\b] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\0-\b] u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+[\0-\b] v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\000-\b] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\0000-\b] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\0-\b]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\0-\b]" u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+"[\\0-\b]" v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\000-\b]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\0000-\b]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\7-\b] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\7-\b] u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+[\7-\b] v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\007-\b] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\0007-\b] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\7-\b]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\7-\b]" u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+"[\\7-\b]" v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\007-\b]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\\0007-\b]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\71] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\71] u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+[6-\71] v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\071] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\0071] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\x36-\\71]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\x36-\\71]" u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+"[\x36-\\71]" v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\x36-\\071]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
"[\x36-\\0071]" "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\8] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\8] u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+[6-\8] v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\08] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\9] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\9] u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+[6-\9] v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[6-\09] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\0-\00] "\0\x077\x1f7\x3f\x7f\xff 0123456789"
[\0-\00] u "\0\x077\x1f7\x3f\x7f\xff 0123456789"
+[\0-\00] v "\0\x077\x1f7\x3f\x7f\xff 0123456789"
\0(x)\1\x02 "\0xx\x02"
\0(x)\1\x02 u "\0xx\x02"
+\0(x)\1\x02 v "\0xx\x02"
\0(?x)\1\x02 "\0xx\x02"
\0(?x)\1\x02 u "\0xx\x02"
+\0(?x)\1\x02 v "\0xx\x02"
\0(?:x)\1\x02 "\0x\x01\x02"
\0(?:x)\1\x02 u "\0x\x01\x02"
+\0(?:x)\1\x02 v "\0x\x01\x02"
(?=x)\1?\x02 "\0x\x01\x02"
(?=x)\1?\x02 u "\0x\x01\x02"
+(?=x)\1?\x02 v "\0x\x01\x02"
(?!x)\1?\x02 "\0x\x01\x02"
(?!x)\1?\x02 u "\0x\x01\x02"
+(?!x)\1?\x02 v "\0x\x01\x02"
(?<=x)\1\x02 "\0x\x01\x02"
(?<=x)\1\x02 u "\0x\x01\x02"
+(?<=x)\1\x02 v "\0x\x01\x02"
(? x0>
\x0> u x0>
+\x0> v x0>
\x0? x0
\x0? u x0
+\x0? v x0
\x0A "\x0A"
\x0A u "\x0A"
+\x0A v "\x0A"
\x0F "\x0F"
\x0F u "\x0F"
+\x0F v "\x0F"
\x0G x0G
\x0G u x0G
+\x0G v x0G
\x0[ x0[
\x0[ u x0[ !ignore-error-message
+\x0[ v x0[ !ignore-error-message
\x0] x0]
\x0] u x0] !ignore-error-message
+\x0] v x0] !ignore-error-message
\x0^ x0
\x0^ u x0
+\x0^ v x0
\x0a "\x0a"
\x0a u "\x0a"
+\x0a v "\x0a"
\x0f "\x0f"
\x0f u "\x0f"
+\x0f v "\x0f"
\x0g x0g
\x0g u x0g
+\x0g v x0g
\x0{ x0{
\x0{ u x0{ !ignore-error-message
+\x0{ v x0{ !ignore-error-message
\x0| x0
\x0| u x0
+\x0| v x0
\x0} x0}
\x0} u x0} !ignore-error-message
+\x0} v x0} !ignore-error-message
\xff "\xff"
\xff u "\xff"
+\xff v "\xff"
\xgf xgf
\xgf u xgf
+\xgf v xgf
\x3f0 ?0
\x3f0 u ?0
+\x3f0 v ?0
\x00\x09\x0d\x0a\x0b\x0C\x08 "\0\t\r\n\v\f\b"
\x00\x09\x0d\x0a\x0b\x0C\x08 u "\0\t\r\n\v\f\b"
+\x00\x09\x0d\x0a\x0b\x0C\x08 v "\0\t\r\n\v\f\b"
\x00\x09?\x0d*\x0a+\x0b{1}\x0C{0,}\x08{1,2} "\0\t\r\n\v\f\b"
\x00\x09?\x0d*\x0a+\x0b{1}\x0C{0,}\x08{1,2} u "\0\t\r\n\v\f\b"
+\x00\x09?\x0d*\x0a+\x0b{1}\x0C{0,}\x08{1,2} v "\0\t\r\n\v\f\b"
[\x] \x
[\x] u \x
+[\x] v \x
[\x*] \x*
[\x*] u \x*
+[\x*] v \x*
[\x0] \x0
[\x0] u \x0
+[\x0] v \x0
[\xA] \xA
[\xA] u \xA
+[\xA] v \xA
[\xf] \xf
[\xf] u \xf
+[\xf] v \xf
[\x0$] \x0$
[\x0$] u \x0$
+[\x0$] v \x0$
[\x0(] \x0(
[\x0(] u \x0(
+[\x0(] v \x0(
[\x0)] \x0)
[\x0)] u \x0)
+[\x0)] v \x0)
[\x0*] \x0*
[\x0*] u \x0*
+[\x0*] v \x0*
[\x0+] \x0+
[\x0+] u \x0+
+[\x0+] v \x0+
[\x0.] \x0.
[\x0.] u \x0.
+[\x0.] v \x0.
[\x00] "\\x00\x00"
[\x00] u "\\x00\x00"
+[\x00] v "\\x00\x00"
[\x09] "\\x09\x09"
[\x09] u "\\x09\x09"
+[\x09] v "\\x09\x09"
[\x0<] \x0<
[\x0<] u \x0<
+[\x0<] v \x0<
[\x0>] \x0>
[\x0>] u \x0>
+[\x0>] v \x0>
[\x0?] \x0?
[\x0?] u \x0?
+[\x0?] v \x0?
[\x0A] "\\x0A\x0A"
[\x0A] u "\\x0A\x0A"
+[\x0A] v "\\x0A\x0A"
[\x0F] "\\x0F\x0F"
[\x0F] u "\\x0F\x0F"
+[\x0F] v "\\x0F\x0F"
[\x0G] \x0G
[\x0G] u \x0G
+[\x0G] v \x0G
[\x0[] \x0[
[\x0[] u \x0[
+[\x0[] v \x0[ !ignore-error-message
[\x0]] \x0]
[\x0]] u \x0] !ignore-error-message
+[\x0]] v \x0] !ignore-error-message
[\x0^] \x0^
[\x0^] u \x0^
+[\x0^] v \x0^
[\x0a] "\\x0a\x0a"
[\x0a] u "\\x0a\x0a"
+[\x0a] v "\\x0a\x0a"
[\x0f] "\\x0f\x0f"
[\x0f] u "\\x0f\x0f"
+[\x0f] v "\\x0f\x0f"
[\x0g] \x0g
[\x0g] u \x0g
+[\x0g] v \x0g
[\x0{] \x0{
[\x0{] u \x0{
+[\x0{] v \x0{
[\x0|] \x0|
[\x0|] u \x0|
+[\x0|] v \x0|
[\x0}] \x0}
[\x0}] u \x0}
+[\x0}] v \x0}
[\xff] "\\xff\xff"
[\xff] u "\\xff\xff"
+[\xff] v "\\xff\xff"
[\xgf] \xgf
[\xgf] u \xgf
+[\xgf] v \xgf
[\x3f0] ?0
[\x3f0] u ?0
+[\x3f0] v ?0
[\x00\x09\x0d\x0a\x0b\x0C\x08] "\0\t\r\n\v\f\b"
[\x00\x09\x0d\x0a\x0b\x0C\x08] u "\0\t\r\n\v\f\b"
+[\x00\x09\x0d\x0a\x0b\x0C\x08] v "\0\t\r\n\v\f\b"
[^\x00\x09\x0d\x0a\x0b\x0C\x08] "\0\t\r\n\v\f\b"
[^\x00\x09\x0d\x0a\x0b\x0C\x08] u "\0\t\r\n\v\f\b"
+[^\x00\x09\x0d\x0a\x0b\x0C\x08] v "\0\t\r\n\v\f\b"
"[\\x08-\t\n\-\\x0D]" "\0\t\r\n\v\f\b"
"[\\x08-\t\n\-\\x0D]" u "\0\t\r\n\v\f\b"
+"[\\x08-\t\n\-\\x0D]" v "\0\t\r\n\v\f\b"
# Hexadecimal character escape sequences (4 digits)
\u u
\u u u
+\u v u
\u* u
\u* u u
+\u* v u
\u0 u0
\u0 u u0
+\u0 v u0
\uA uA
\uA u uA
+\uA v uA
\uf uf
\uf u uf
+\uf v uf
\u00 u00
\u00 u u00
+\u00 v u00
\u0A u0A
\u0A u u0A
+\u0A v u0A
\u0f u0f
\u0f u u0f
+\u0f v u0f
\u000 u000
\u000 u u000
+\u000 v u000
\u00A u00A
\u00A u u00A
+\u00A v u00A
\u00f u00f
\u00f u u00f
+\u00f v u00f
\u000$ u000
\u000$ u u000
+\u000$ v u000
\u000( u000(
\u000( u u000( !ignore-error-message
+\u000( v u000( !ignore-error-message
\u000) u000)
\u000) u u000) !ignore-error-message
+\u000) v u000) !ignore-error-message
\u000* u000
\u000* u u000
+\u000* v u000
\u000+ u000
\u000+ u u000
+\u000+ v u000
\u000. u000y
\u000. u u000y
+\u000. v u000y
\u0000 "\u0000"
\u0000 u "\u0000"
+\u0000 v "\u0000"
\u0009 "\u0009"
\u0009 u "\u0009"
+\u0009 v "\u0009"
\u000< u000<
\u000< u u000<
+\u000< v u000<
\u000> u000>
\u000> u u000>
+\u000> v u000>
\u000? u000
\u000? u u000
+\u000? v u000
\u000A "\u000A"
\u000A u "\u000A"
+\u000A v "\u000A"
\u000F "\u000F"
\u000F u "\u000F"
+\u000F v "\u000F"
\u000G u000G
\u000G u u000G
+\u000G v u000G
\u000[ u000[
\u000[ u u000[ !ignore-error-message
+\u000[ v u000[ !ignore-error-message
\u000] u000]
\u000] u u000] !ignore-error-message
+\u000] v u000] !ignore-error-message
\u000^ u000
\u000^ u u000
+\u000^ v u000
\u000a "\u000a"
\u000a u "\u000a"
+\u000a v "\u000a"
\u000f "\u000f"
\u000f u "\u000f"
+\u000f v "\u000f"
\u000g u000g
\u000g u u000g
+\u000g v u000g
\u000{ u000{
\u000{ u u000{ !ignore-error-message
+\u000{ v u000{ !ignore-error-message
\u000| u000
\u000| u u000
+\u000| v u000
\u000} u000}
\u000} u u000} !ignore-error-message
+\u000} v u000} !ignore-error-message
\uffff "\uffff"
\uffff u "\uffff"
+\uffff v "\uffff"
\uffgf uffgf
\uffgf u uffgf
+\uffgf v uffgf
\u003f0 ?0
\u003f0 u ?0
+\u003f0 v ?0
\u0000\u0009\u000d\u000a\u000b\u000C\u0008 "\0\t\r\n\v\f\b"
\u0000\u0009\u000d\u000a\u000b\u000C\u0008 u "\0\t\r\n\v\f\b"
+\u0000\u0009\u000d\u000a\u000b\u000C\u0008 v "\0\t\r\n\v\f\b"
\u0000\u0009?\u000d*\u000a+\u000b{1}\u000C{0,}\u0008{1,2} "\0\t\r\n\v\f\b"
\u0000\u0009?\u000d*\u000a+\u000b{1}\u000C{0,}\u0008{1,2} u "\0\t\r\n\v\f\b"
+\u0000\u0009?\u000d*\u000a+\u000b{1}\u000C{0,}\u0008{1,2} v "\0\t\r\n\v\f\b"
[\u] \u
[\u] u \u
+[\u] v \u
[\u*] \u*
[\u*] u \u*
+[\u*] v \u*
[\u0] \u0
[\u0] u \u0
+[\u0] v \u0
[\uA] \uA
[\uA] u \uA
+[\uA] v \uA
[\uf] \uf
[\uf] u \uf
+[\uf] v \uf
[\u00] \u00
[\u00] u \u00
+[\u00] v \u00
[\u0A] \u0A
[\u0A] u \u0A
+[\u0A] v \u0A
[\u0f] \u0f
[\u0f] u \u0f
+[\u0f] v \u0f
[\u000] \u000
[\u000] u \u000
+[\u000] v \u000
[\u00A] \u00A
[\u00A] u \u00A
+[\u00A] v \u00A
[\u00f] \u00f
[\u00f] u \u00f
+[\u00f] v \u00f
[\u000$] \u000$
[\u000$] u \u000$
+[\u000$] v \u000$
[\u000(] \u000(
[\u000(] u \u000(
+[\u000(] v \u000(
[\u000)] \u000)
[\u000)] u \u000)
+[\u000)] v \u000)
[\u000*] \u000*
[\u000*] u \u000*
+[\u000*] v \u000*
[\u000+] \u000+
[\u000+] u \u000+
+[\u000+] v \u000+
[\u000.] \u000.
[\u000.] u \u000.
+[\u000.] v \u000.
[\u0000] "\\u0000\u0000"
[\u0000] u "\\u0000\u0000"
+[\u0000] v "\\u0000\u0000"
[\u0009] "\\u0009\u0009"
[\u0009] u "\\u0009\u0009"
+[\u0009] v "\\u0009\u0009"
[\u000<] \u000<
[\u000<] u \u000<
+[\u000<] v \u000<
[\u000>] \u000>
[\u000>] u \u000>
+[\u000>] v \u000>
[\u000?] \u000?
[\u000?] u \u000?
+[\u000?] v \u000?
[\u000A] "\\u000A\u000A"
[\u000A] u "\\u000A\u000A"
+[\u000A] v "\\u000A\u000A"
[\u000F] "\\u000F\u000F"
[\u000F] u "\\u000F\u000F"
+[\u000F] v "\\u000F\u000F"
[\u000G] \u000G
[\u000G] u \u000G
+[\u000G] v \u000G
[\u000[] \u000[
[\u000[] u \u000[
+[\u000[] v \u000[ !ignore-error-message
[\u000]] \u000]
[\u000]] u \u000] !ignore-error-message
+[\u000]] v \u000] !ignore-error-message
[\u000^] \u000^
[\u000^] u \u000^
+[\u000^] v \u000^
[\u000a] "\\u000a\u000a"
[\u000a] u "\\u000a\u000a"
+[\u000a] v "\\u000a\u000a"
[\u000f] "\\u000f\u000f"
[\u000f] u "\\u000f\u000f"
+[\u000f] v "\\u000f\u000f"
[\u000g] \u000g
[\u000g] u \u000g
+[\u000g] v \u000g
[\u000{] \u000{
[\u000{] u \u000{
+[\u000{] v \u000{
[\u000|] \u000|
[\u000|] u \u000|
+[\u000|] v \u000|
[\u000}] \u000}
[\u000}] u \u000}
+[\u000}] v \u000}
[\uffff] "\\uffff\uffff"
[\uffff] u "\\uffff\uffff"
+[\uffff] v "\\uffff\uffff"
[\uffgf] \uffgf
[\uffgf] u \uffgf
+[\uffgf] v \uffgf
[\u003f0] ?0
[\u003f0] u ?0
+[\u003f0] v ?0
[\u0000\u0009\u000d\u000a\u000b\u000C\u0008] "\0\t\r\n\v\f\b"
[\u0000\u0009\u000d\u000a\u000b\u000C\u0008] u "\0\t\r\n\v\f\b"
+[\u0000\u0009\u000d\u000a\u000b\u000C\u0008] v "\0\t\r\n\v\f\b"
[^\u0000\u0009\u000d\u000a\u000b\u000C\u0008] "\0\t\r\n\v\f\b"
[^\u0000\u0009\u000d\u000a\u000b\u000C\u0008] u "\0\t\r\n\v\f\b"
+[^\u0000\u0009\u000d\u000a\u000b\u000C\u0008] v "\0\t\r\n\v\f\b"
"[\\u0008-\t\n\-\\u000D]" "\0\t\r\n\v\f\b"
"[\\u0008-\t\n\-\\u000D]" u "\0\t\r\n\v\f\b"
+"[\\u0008-\t\n\-\\u000D]" v "\0\t\r\n\v\f\b"
# Hexadecimal character escape sequences (Unicode code points)
\u{ u{
\u{ u u{ !ignore-error-message
+\u{ v u{ !ignore-error-message
\u{} u{}
\u{} u u{}
+\u{} v u{}
\u{?} u{}
\u{?} u u{}
+\u{?} v u{}
\u{-1} u{-1}
\u{-1} u u{-1}
+\u{-1} v u{-1}
\u{-0} u{-0}
\u{-0} u u{-0}
+\u{-0} v u{-0}
\u{0}
\u{0} u "\0"
+\u{0} v "\0"
\u{1} u
\u{1} u "\x01"
+\u{1} v "\x01"
\u{10FFFF} u{10FFFF}
\u{10FFFF} u "\udbff\udfff"
+\u{10FFFF} v "\udbff\udfff"
\u{110000} u{110000} !skip-on-netframework # (the adapted pattern is correct but makes the Regex ctor hang on .NET Framework)
\u{110000} u u{110000}
+\u{110000} v u{110000}
\u{80000000} u{80000000} !skip-on-netframework # (the adapted pattern is correct but makes the Regex ctor hang on .NET Framework)
\u{80000000} u u{80000000}
+\u{80000000} v u{80000000}
\u{1,} uu
\u{1,} u uu
+\u{1,} v uu
\u{a} u{a}
\u{a} u "\n"
+\u{a} v "\n"
\u{f} u{f}
\u{f} u "\x0f"
+\u{f} v "\x0f"
\u{g} u{g}
\u{g} u u{g}
+\u{g} v u{g}
\u{7F} u "\x7F"
+\u{7F} v "\x7F"
\u{d7ff} u "\ud7ff"
+\u{d7ff} v "\ud7ff"
\u{d800} u "\ud800"
+\u{d800} v "\ud800"
\u{dfff} u "\udfff"
+\u{dfff} v "\udfff"
\u{e000} u "\ue000"
+\u{e000} v "\ue000"
\u{1F4A9} u "\uD83D\uDCA9"
+\u{1F4A9} v "\uD83D\uDCA9"
\u{0}\u{9}\u{d}\u{a}\u{b}\u{C}\u{00000000000000008} u "\0\t\r\n\v\f\b"
+\u{0}\u{9}\u{d}\u{a}\u{b}\u{C}\u{00000000000000008} v "\0\t\r\n\v\f\b"
\u{0}\u{9}?\u{d}*\u{a}+\u{b}{1}\u{C}{0,}\u{00000000000000008}{1,2} u "\0\t\r\n\v\f\b"
+\u{0}\u{9}?\u{d}*\u{a}+\u{b}{1}\u{C}{0,}\u{00000000000000008}{1,2} v "\0\t\r\n\v\f\b"
[\u{] \u{
[\u{] u \u{
+[\u{] v \u{
[\u{}] \u{}
[\u{}] u \u{}
+[\u{}] v \u{}
[\u{?}] \u{?}
[\u{?}] u \u{?}
+[\u{?}] v \u{?}
[\u{-1}] \u{-1}
[\u{-1}] u \u{-1}
+[\u{-1}] v \u{-1}
[\u{-0}] \u{-0}
[\u{-0}] u \u{-0}
+[\u{-0}] v \u{-0}
[\u{0}] "\\u{0}\0"
[\u{0}] u "\\u{0}\0"
+[\u{0}] v "\\u{0}\0"
[\u{1}] "\\u{1}\x01"
[\u{1}] u "\\u{1}\x01"
+[\u{1}] v "\\u{1}\x01"
[\u{10FFFF}] "\\u{10FFFF}\udbff\udfff"
[\u{10FFFF}] u "\\u{10FFFF}\udbff\udfff"
+[\u{10FFFF}] v "\\u{10FFFF}\udbff\udfff"
[\u{110000}] \u{110000}
[\u{110000}] u \u{110000}
+[\u{110000}] v \u{110000}
[\u{80000000}] \u{80000000}
[\u{80000000}] u \u{80000000}
+[\u{80000000}] v \u{80000000}
[\u{1,}] \u{1,}
[\u{1,}] u \u{1,}
+[\u{1,}] v \u{1,}
[\u{a}] "\\u{a}\n"
[\u{a}] u "\\u{a}\n"
+[\u{a}] v "\\u{a}\n"
[\u{f}] "\\u{f}\x0f"
[\u{f}] u "\\u{f}\x0f"
+[\u{f}] v "\\u{f}\x0f"
[\u{g}] \u{g}
[\u{g}] u \u{g}
+[\u{g}] v \u{g}
[\u{7F}] u "\x7F"
+[\u{7F}] v "\x7F"
[\u{d7ff}] u "\ud7ff"
+[\u{d7ff}] v "\ud7ff"
[\u{d800}] u "\ud800"
+[\u{d800}] v "\ud800"
[\u{dfff}] u "\udfff"
+[\u{dfff}] v "\udfff"
[\u{e000}] u "\ue000"
+[\u{e000}] v "\ue000"
[\u{1F4A9}] u "\uD83D\uDCA9"
+[\u{1F4A9}] v "\uD83D\uDCA9"
[^\u{7F}] u "\x7F"
+[^\u{7F}] v "\x7F"
[^\u{d7ff}] u "\ud7ff"
+[^\u{d7ff}] v "\ud7ff"
[^\u{d800}] u "\ud800"
+[^\u{d800}] v "\ud800"
[^\u{dfff}] u "\udfff"
+[^\u{dfff}] v "\udfff"
[^\u{e000}] u "\ue000"
+[^\u{e000}] v "\ue000"
[^\u{1F4A9}] u "\uD83D\uDCA9"
+[^\u{1F4A9}] v "\uD83D\uDCA9"
[\u{0}\u{9}\u{d}\u{a}\u{b}\u{C}\u{00000000000000008}] u "\0\t\r\n\v\f\b"
+[\u{0}\u{9}\u{d}\u{a}\u{b}\u{C}\u{00000000000000008}] v "\0\t\r\n\v\f\b"
[^\u{0}\u{9}\u{d}\u{a}\u{b}\u{C}\u{00000000000000008}] u "\0\t\r\n\v\f\b"
+[^\u{0}\u{9}\u{d}\u{a}\u{b}\u{C}\u{00000000000000008}] v "\0\t\r\n\v\f\b"
"[\\u{8}-\t\n\-\\u{D}]" u "\0\t\r\n\v\f\b"
+"[\\u{8}-\t\n\-\\u{D}]" v "\0\t\r\n\v\f\b"
# Identity character escape sequences (.NET-specific edge cases)
\<\A\Z\z\G\a\e\>
\<\A\Z\z\G\a\e\> u
+\<\A\Z\z\G\a\e\> v
\\A*\Z+\z{1}\G{0,}\a{1,2}\e*\>{1}
\\A*\Z+\z{1}\G{0,}\a{1,2}\e*\>{1} u
+\\A*\Z+\z{1}\G{0,}\a{1,2}\e*\>{1} v
[\<\A\Z\z\G\a\e\>]
[\<\A\Z\z\G\a\e\>] u
+[\<\A\Z\z\G\a\e\>] v
# Dot
. "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
. u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+. v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
. s "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
. us "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+. vs "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.* "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.* u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+.* v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.* s "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.* us "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+.* vs "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^. m "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^. um "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+^. vm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^. sm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^. usm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+^. vsm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.$ m "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.$ um "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+.$ vm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.$ sm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
.$ usm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+.$ vsm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^.$ m "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^.$ um "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+^.$ vm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^.$ sm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
^.$ usm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+^.$ vsm "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
. m \na\n\n\na\n
. um \na\n\n\na\n
+. vm \na\n\n\na\n
. sm \na\n\n\na\n
. usm \na\n\n\na\n
+. vsm \na\n\n\na\n
.* m \na\n\n\na\n
.* um \na\n\n\na\n
+.* vm \na\n\n\na\n
.* sm \na\n\n\na\n
.* usm \na\n\n\na\n
+.* vsm \na\n\n\na\n
[.] "abc.123"
[.] u "abc.123"
+[.] v "abc.123"
[^.] "abc.123"
[^.] u "abc.123"
+[^.] v "abc.123"
# Standard character classes
\d "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\d u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\d v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\d i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\d ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\d vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\D "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\D u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\D v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\D i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\D ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\D vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\s "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\s u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\s v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\s i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\s ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\s vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\S "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\S u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\S v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\S i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\S ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\S vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\w "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\w u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\w v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\w i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\w ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\w vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\W "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\W u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\W v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\W i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\W ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+\W vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\d* "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
\s* "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
@@ -1502,459 +2191,721 @@ PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI ui pijamalı hasta yağız ş
[\d] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\d] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\d] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\d] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\d] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\d] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\D] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\D] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\D] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\D] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\D] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\D] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\s] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\s] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\s] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\s] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\s] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\s] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\S] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\S] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\S] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\S] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\S] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\S] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\w] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\w] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\w] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\w] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\w] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\w] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\W] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\W] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\W] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\W] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[\W] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[\W] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\d] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\d] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\d] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\d] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\d] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\d] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\D] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\D] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\D] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\D] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\D] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\D] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\s] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\s] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\s] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\s] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\s] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\s] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\S] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\S] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\S] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\S] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\S] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\S] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\w] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\w] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\w] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\w] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\w] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\w] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\W] "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\W] u "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\W] v "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\W] i "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
[^\W] ui "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
+[^\W] vi "09\naz\rAZ\r\nMṎbẏDžNjʱⱼªﹴ̒𛲝ःꨯ҈꙰9🯶ᛮ𐍁³𖭞 \u2028\u2029\u0001\udc4f\udbc9_⁔-֊(﴿)₎«⸠»⸝#𐩒+﬩$𑿞^˨¦🫅"
# Unicode property escapes
\p p
\p u p
+\p v p
\p{ p{
\p{ u p{ !ignore-error-message
+\p{ v p{ !ignore-error-message
\p{} p{}
\p{} u p{}
+\p{} v p{}
\p{ } p{ }
\p{ } u p{ }
+\p{ } v p{ }
\p{?} p{}
\p{?} u p{}
+\p{?} v p{}
\p{1} p
\p{1} u p
+\p{1} v p
\p{1,} pp
\p{1,} u pp
+\p{1,} v pp
\p{Script=Latn} p{Script=Latn}
-\p{Script=Latn} u p{Script=Latn} !ignore-error-message !skip-validation
+\p{Script=Latn} u p{Script=Latn}
+\p{Script=Latn} v p{Script=Latn}
\p{General_Category=Currency_Symbol} u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{General_Category=Currency_Symbol} v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Basic_Emoji} u 💩x💫x💩
+\p{Basic_Emoji} v 💩x💫x💩
\P P
\P u P
+\P v P
\P{ P{
\P{ u P{ !ignore-error-message
+\P{ v P{ !ignore-error-message
\P{} P{}
\P{} u P{}
+\P{} v P{}
\P{ } P{ }
\P{ } u P{ }
+\P{ } v P{ }
\P{?} P{}
\P{?} u P{}
+\P{?} v P{}
\P{1} P
\P{1} u P
+\P{1} v P
\P{1,} PP
\P{1,} u PP
+\P{1,} v PP
\P{Script=Latn} P{Script=Latn}
-\P{Script=Latn} u P{Script=Latn} !ignore-error-message !skip-validation
+\P{Script=Latn} u P{Script=Latn}
+\P{Script=Latn} v P{Script=Latn}
\P{General_Category=Currency_Symbol} u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\P{General_Category=Currency_Symbol} v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\P{Basic_Emoji} u 💩x💫x💩
+\P{Basic_Emoji} v 💩x💫x💩
[\p] \p
[\p] u \p
+[\p] v \p
[\p{] \p{
[\p{] u \p{
+[\p{] v \p{
[\p{}] \p{}
[\p{}] u \p{}
+[\p{}] v \p{}
[\p{ }] \p{ }
[\p{ }] u \p{ }
+[\p{ }] v \p{ }
[\p{?}] \p{?}
[\p{?}] u \p{?}
+[\p{?}] v \p{?}
[\p{1}] \p{1}
[\p{1}] u \p{1}
+[\p{1}] v \p{1}
[\p{1,}] \p{1,}
[\p{1,}] u \p{1,}
+[\p{1,}] v \p{1,}
[\p{Script=Latn}] \p{Script=Latn}
-[\p{Script=Latn}] u \p{Script=Latn} !ignore-error-message !skip-validation
+[\p{Script=Latn}] u \p{Script=Latn}
+[\p{Script=Latn}] v \p{Script=Latn}
[\p{General_Category=Currency_Symbol}] u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\p{General_Category=Currency_Symbol}] v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\p{Basic_Emoji}] u 💩x💫x💩
+[\p{Basic_Emoji}] v 💩x💫x💩
+[^\p{Basic_Emoji}] u 💩x💫x💩
+[^\p{Basic_Emoji}] v 💩x💫x💩
[\P] \P
[\P] u \P
+[\P] v \P
[\P{] \P{
[\P{] u \P{
+[\P{] v \P{
[\P{}] \P{}
[\P{}] u \P{}
+[\P{}] v \P{}
[\P{ }] \P{ }
[\P{ }] u \P{ }
+[\P{ }] v \P{ }
[\P{?}] \P{?}
[\P{?}] u \P{?}
+[\P{?}] v \P{?}
[\P{1}] \P{1}
[\P{1}] u \P{1}
+[\P{1}] v \P{1}
[\P{1,}] \P{1,}
[\P{1,}] u \P{1,}
+[\P{1,}] v \P{1,}
[\P{Script=Latn}] \P{Script=Latn}
-[\P{Script=Latn}] u \P{Script=Latn} !ignore-error-message !skip-validation
+[\P{Script=Latn}] u \P{Script=Latn}
+[\P{Script=Latn}] v \P{Script=Latn}
[\P{General_Category=Currency_Symbol}] u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\P{General_Category=Currency_Symbol}] v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\P{Basic_Emoji}] u 💩x💫x💩]
+[\P{Basic_Emoji}] v 💩x💫x💩]
+[^\P{Basic_Emoji}] u 💩x💫x💩]
+[^\P{Basic_Emoji}] v 💩x💫x💩]
\p{General_Category=Sc} u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{General_Category=Sc} v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{gc=Currency_Symbol} u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{gc=Currency_Symbol} v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{gc=Sc} u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{gc=Sc} v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Currency_Symbol} u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Currency_Symbol} v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Sc} u $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Sc} v $€£𑿝¥ a0? !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{General_Category} u $€£𑿝¥ a0?
+\p{General_Category} v $€£𑿝¥ a0?
\p{General_Category=} u $€£𑿝¥ a0?
+\p{General_Category=} v $€£𑿝¥ a0?
\p{=Currency_Symbol} u $€£𑿝¥ a0?
+\p{=Currency_Symbol} v $€£𑿝¥ a0?
\p{ General_Category=Currency_Symbol} u $€£𑿝¥ a0?
+\p{ General_Category=Currency_Symbol} v $€£𑿝¥ a0?
\p{General_Category=Currency_Symbol } u $€£𑿝¥ a0?
+\p{General_Category=Currency_Symbol } v $€£𑿝¥ a0?
\p{General_Category =Currency_Symbol} u $€£𑿝¥ a0?
+\p{General_Category =Currency_Symbol} v $€£𑿝¥ a0?
\p{General_Category= Currency_Symbol} u $€£𑿝¥ a0?
+\p{General_Category= Currency_Symbol} v $€£𑿝¥ a0?
\p{General_Category=CurrencySymbol} u $€£𑿝¥ a0?
+\p{General_Category=CurrencySymbol} v $€£𑿝¥ a0?
\p{General_Category=currency_Symbol} u $€£𑿝¥ a0?
+\p{General_Category=currency_Symbol} v $€£𑿝¥ a0?
\p{GeneralCategory=Currency_Symbol} u $€£𑿝¥ a0?
+\p{GeneralCategory=Currency_Symbol} v $€£𑿝¥ a0?
\p{general_Category=Currency_Symbol} u $€£𑿝¥ a0?
+\p{general_Category=Currency_Symbol} v $€£𑿝¥ a0?
\p{L} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{L} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Letter} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Letter} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{LC} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{LC} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Cased_Letter} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Cased_Letter} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Lu} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Lu} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Uppercase_Letter} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Uppercase_Letter} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Ll} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Ll} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Lowercase_Letter} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Lowercase_Letter} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Lt} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Lt} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Titlecase_Letter} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Titlecase_Letter} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Lm} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Lm} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Modifier_Letter} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Modifier_Letter} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Lo} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Lo} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Other_Letter} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Other_Letter} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{M} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{M} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Mark} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Mark} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Combining_Mark} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Combining_Mark} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Mn} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Mn} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Nonspacing_Mark} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Nonspacing_Mark} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Mc} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Mc} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Spacing_Mark} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Spacing_Mark} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Me} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Me} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Enclosing_Mark} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Enclosing_Mark} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{N} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{N} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Number} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Number} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Nd} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Nd} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Decimal_Number} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Decimal_Number} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{digit} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{digit} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Nl} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Nl} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Letter_Number} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Letter_Number} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{No} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{No} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Other_Number} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Other_Number} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{P} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{P} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{punct} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{punct} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Pc} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Pc} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Connector_Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Connector_Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Pd} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Pd} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Dash_Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Dash_Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Ps} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Ps} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Open_Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Open_Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Pe} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Pe} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Close_Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Close_Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Pi} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Pi} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Initial_Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Initial_Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Pf} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Pf} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Final_Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Final_Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Po} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Po} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Other_Punctuation} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Other_Punctuation} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{S} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{S} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Symbol} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Symbol} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Sm} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Sm} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Math_Symbol} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Math_Symbol} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Sc} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Sc} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Currency_Symbol} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Currency_Symbol} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Sk} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Sk} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Modifier_Symbol} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Modifier_Symbol} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{So} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{So} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Other_Symbol} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Other_Symbol} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Z} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Z} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Separator} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Separator} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Zs} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Zs} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Space_Separator} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Space_Separator} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Zl} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Zl} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Line_Separator} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Line_Separator} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Zp} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Zp} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Paragraph_Separator} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Paragraph_Separator} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{C} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{C} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Other} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Other} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Cc} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Cc} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Control} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Control} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{cntrl} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{cntrl} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Cf} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Cf} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Format} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Format} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Cs} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Cs} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Surrogate} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Surrogate} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Co} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Co} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Private_Use} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Private_Use} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Cn} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Cn} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Unassigned} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Unassigned} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Ll} ui "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Ll} vi "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\P{Ll} u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\P{Ll} v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\P{Ll} ui "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\P{Ll} vi "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\p{Ll}* u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\p{Ll}* v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
\P{Ll}* u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+\P{Ll}* v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[\p{Ll}] u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\p{Ll}] v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[\p{Ll}] ui "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\p{Ll}] vi "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[\P{Ll}] u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\P{Ll}] v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[\P{Ll}] ui "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[\P{Ll}] vi "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[^\p{Ll}] u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[^\p{Ll}] v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[^\p{Ll}] ui "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[^\p{Ll}] vi "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[^\P{Ll}] u "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[^\P{Ll}] v "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
[^\P{Ll}] ui "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
+[^\P{Ll}] vi "DϠeⱬDžLjʷჼªఎ͎︁ःඃ҉꙰7᱐ᛮ〩³㉒ \u2028\u2029\u000f\udf39\uda29_︳-⸺(﹝)⸥«‟»⸡!︓+⟶$؋^꜄¦⎗" !skip-before-net10.0 # (the adapted pattern depends on the Unicode version included in the .NET runtime)
# Character sets (basic cases)
[] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^^] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^^] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^^] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[]* "\udca9💩\ud83dbeard\udcab💫\ud83d"
[]* u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[]* v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^]* "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^]* u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^]* v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^^]* "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^^]* u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^^]* v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[\s\S] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[\s\S] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[\s\S] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^\s\S] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^\s\S] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^\s\S] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[\s\S]* "\udca9💩\ud83dbeard\udcab💫\ud83d"
[\s\S]* u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[\s\S]* v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^\s\S]* "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^\s\S]* u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^\s\S]* v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[abcd] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[abcd] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[abcd] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^abcd] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^abcd] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^abcd] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[abcd]* "\udca9💩\ud83dbeard\udcab💫\ud83d"
[abcd]* u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[abcd]* v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^abcd]* "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^abcd]* u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^abcd]* v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[a-d] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[a-d] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[a-d] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[a-b] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[a-b] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^a-d] "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^a-d] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^a-d] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[^a-b] u "\udca9💩\ud83dbeard\udcab💫\ud83d"
+[^a-b] v "\udca9💩\ud83dbeard\udcab💫\ud83d"
[A-Za-z0-9_-] $_Foo-Bar.12
[A-Za-z0-9_-] u $_Foo-Bar.12
+[A-Za-z0-9_-] v $_Foo-Bar.12
[^A-Za-z0-9_-] $_Foo-Bar.12
[^A-Za-z0-9_-] u $_Foo-Bar.12
+[^A-Za-z0-9_-] v $_Foo-Bar.12
[A-Za-z0-9_-.] $_Foo-Bar.12
[A-Za-z0-9_-.] u $_Foo-Bar.12
+[A-Za-z0-9_-.] v $_Foo-Bar.12
[^A-Za-z0-9_-.] $_Foo-Bar.12
[^A-Za-z0-9_-.] u $_Foo-Bar.12
+[^A-Za-z0-9_-.] v $_Foo-Bar.12
[A-Za-z0-9_\-.] $_Foo-Bar.12
[A-Za-z0-9_\-.] u $_Foo-Bar.12
+[A-Za-z0-9_\-.] v $_Foo-Bar.12
[^A-Za-z0-9_\-.] $_Foo-Bar.12
[^A-Za-z0-9_\-.] u $_Foo-Bar.12
+[^A-Za-z0-9_\-.] v $_Foo-Bar.12
[a-z0-9_-] i $_Foo-Bar.12
[a-z0-9_-] ui $_Foo-Bar.12
+[a-z0-9_-] vi $_Foo-Bar.12
[^a-z0-9_-] i $_Foo-Bar.12
[^a-z0-9_-] ui $_Foo-Bar.12
+[^a-z0-9_-] vi $_Foo-Bar.12
# Character sets (special escapes)
[/] /[+-]\
[/] u /[+-]\
+[/] v /[+-]\
[\/] /[+-]\
[\/] u /[+-]\
+[\/] v /[+-]\
[\]] /[+-]\
[\]] u /[+-]\
+[\]] v /[+-]\
[\\] /[+-]\
[\\] u /[+-]\
+[\\] v /[+-]\
[\-] /[+-]\
[\-] u /[+-]\
+[\-] v /[+-]\
[\\-\]] /[+-]\
[\\-\]] u /[+-]\
+[\\-\]] v /[+-]\
[\\\-\]] /[+-]\
[\\\-\]] u /[+-]\
+[\\\-\]] v /[+-]\
[\]-\\] /[+-]\
[\]-\\] u /[+-]\
+[\]-\\] v /[+-]\
[\]\-\\] /[+-]\
[\]\-\\] u /[+-]\
+[\]\-\\] v /[+-]\
[\b] "\bABCD\b"
[\b] u "\bABCD\b"
+[\b] v "\bABCD\b"
[\b-C] "\bABCD\b"
[\b-C] u "\bABCD\b"
+[\b-C] v "\bABCD\b"
[A-\b] "\bABCD\b"
[A-\b] u "\bABCD\b"
+[A-\b] v "\bABCD\b"
[\B] "\bABCD\b"
[\B] u "\bABCD\b"
+[\B] v "\bABCD\b"
[\B-C] "\bABCD\b"
[\B-C] u "\bABCD\b"
+[\B-C] v "\bABCD\b"
[A-\B] "\bABCD\b"
[A-\B] u "\bABCD\b"
+[A-\B] v "\bABCD\b"
# Character sets (range edge cases)
[-] +,-./ aZ0
[-] u +,-./ aZ0
+[-] v +,-./ aZ0
[--] +,-./ aZ0
[--] u +,-./ aZ0
+[--] v +,-./ aZ0
[---] +,-./ aZ0
[---] u +,-./ aZ0
+[---] v +,-./ aZ0
[^-] +,-./ aZ0
[^-] u +,-./ aZ0
+[^-] v +,-./ aZ0
[^--] +,-./ aZ0
[^--] u +,-./ aZ0
+[^--] v +,-./ aZ0
[^---] +,-./ aZ0
[^---] u +,-./ aZ0
+[^---] v +,-./ aZ0
[+-] +,-./ aZ0
[+-] u +,-./ aZ0
+[+-] v +,-./ aZ0
[+--] +,-./ aZ0
[+--] u +,-./ aZ0
+[+--] v +,-./ aZ0
[+---] +,-./ aZ0
[+---] u +,-./ aZ0
+[+---] v +,-./ aZ0
[-+] +,-./ aZ0
[-+] u +,-./ aZ0
+[-+] v +,-./ aZ0
[--+] +,-./ aZ0
[--+] u +,-./ aZ0
+[--+] v +,-./ aZ0
[---+] +,-./ aZ0
[---+] u +,-./ aZ0
+[---+] v +,-./ aZ0
[a-z-] +,-./ aZ0
[a-z-] u +,-./ aZ0
+[a-z-] v +,-./ aZ0
[a-z--] +,-./ aZ0
[a-z--] u +,-./ aZ0
+[a-z--] v +,-./ aZ0
[a-z---] +,-./ aZ0
[a-z---] u +,-./ aZ0
+[a-z---] v +,-./ aZ0
[a-z+-] +,-./ aZ0
[a-z+-] u +,-./ aZ0
+[a-z+-] v +,-./ aZ0
[a-z+--] +,-./ aZ0
[a-z+--] u +,-./ aZ0
+[a-z+--] v +,-./ aZ0
[a-z+---] +,-./ aZ0
[a-z+---] u +,-./ aZ0
+[a-z+---] v +,-./ aZ0
[a-z-+] +,-./ aZ0
[a-z-+] u +,-./ aZ0
+[a-z-+] v +,-./ aZ0
[a-z--+] +,-./ aZ0
[a-z--+] u +,-./ aZ0
+[a-z--+] v +,-./ aZ0
[a-z---+] +,-./ aZ0
[a-z---+] u +,-./ aZ0
+[a-z---+] v +,-./ aZ0
[a-+] +,-./ aZ0
[a-+] u +,-./ aZ0
+[a-+] v +,-./ aZ0
[a--+] +,-./ aZ0
[a--+] u +,-./ aZ0
+[a--+] v +,-./ aZ0
[\--+] +,-./ aZ0
[\--+] u +,-./ aZ0
+[\--+] v +,-./ aZ0
[\---+] +,-./ aZ0
[\---+] u +,-./ aZ0
+[\---+] v +,-./ aZ0
[\--\/] +,-./ aZ0
[\--\/] u +,-./ aZ0
+[\--\/] v +,-./ aZ0
[\---\/] +,-./ aZ0
[\---\/] u +,-./ aZ0
+[\---\/] v +,-./ aZ0
[\d-] +,-./ aZ0
[\d-] u +,-./ aZ0
+[\d-] v +,-./ aZ0
[\d--] +,-./ aZ0
[\d--] u +,-./ aZ0
+[\d--] v +,-./ aZ0
[\d---] +,-./ aZ0
[\d---] u +,-./ aZ0
+[\d---] v +,-./ aZ0
[\d+-] +,-./ aZ0
[\d+-] u +,-./ aZ0
+[\d+-] v +,-./ aZ0
[\d+--] +,-./ aZ0
[\d+--] u +,-./ aZ0
+[\d+--] v +,-./ aZ0
[\d+---] +,-./ aZ0
[\d+---] u +,-./ aZ0
+[\d+---] v +,-./ aZ0
[\d-+] +,-./ aZ0
[\d-+] u +,-./ aZ0
+[\d-+] v +,-./ aZ0
[\d--+] +,-./ aZ0
[\d--+] u +,-./ aZ0
+[\d--+] v +,-./ aZ0
[\d---+] +,-./ aZ0
[\d---+] u +,-./ aZ0
+[\d---+] v +,-./ aZ0
[\d-\/] +,-./ aZ0
[\d-\/] u +,-./ aZ0
+[\d-\/] v +,-./ aZ0
[\d--\/] +,-./ aZ0
[\d--\/] u +,-./ aZ0
+[\d--\/] v +,-./ aZ0
[\d---\/] +,-./ aZ0
[\d---\/] u +,-./ aZ0
+[\d---\/] v +,-./ aZ0
[\d----\/] +,-./ aZ0
[\d----\/] u +,-./ aZ0
+[\d----\/] v +,-./ aZ0
[\S-] +,-./ aZ0
[\S--] +,-./ aZ0
@@ -1968,100 +2919,147 @@ PIJAMALı HASTA YAĞıZ ŞOFÖRE ÇABUCAK GÜVENDI ui pijamalı hasta yağız ş
[--\S--\/] +,-./ aZ0
[\p{Zs}-] u +,-./ aZ0
+[\p{Zs}-] v +,-./ aZ0
[\p{Zs}--] u +,-./ aZ0
+[\p{Zs}--] v +,-./ aZ0
[\p{Zs}---] u +,-./ aZ0
+[\p{Zs}---] v +,-./ aZ0
[-\p{Zs}-] u +,-./ aZ0
+[-\p{Zs}-] v +,-./ aZ0
[-\p{Zs}--] u +,-./ aZ0
+[-\p{Zs}--] v +,-./ aZ0
[-\p{Zs}---] u +,-./ aZ0
+[-\p{Zs}---] v +,-./ aZ0
[--\p{Zs}-] u +,-./ aZ0
+[--\p{Zs}-] v +,-./ aZ0
[--\p{Zs}--] u +,-./ aZ0
+[--\p{Zs}--] v +,-./ aZ0
[--\p{Zs}---] u +,-./ aZ0
+[--\p{Zs}---] v +,-./ aZ0
[--\p{Zs}--\/] u +,-./ aZ0
+[--\p{Zs}--\/] v +,-./ aZ0
[\P{Zs}-] u +,-./ aZ0
+[\P{Zs}-] v +,-./ aZ0
[\P{Zs}--] u +,-./ aZ0
+[\P{Zs}--] v +,-./ aZ0
[\P{Zs}---] u +,-./ aZ0
+[\P{Zs}---] v +,-./ aZ0
[-\P{Zs}-] u +,-./ aZ0
+[-\P{Zs}-] v +,-./ aZ0
[-\P{Zs}--] u +,-./ aZ0
+[-\P{Zs}--] v +,-./ aZ0
[-\P{Zs}---] u +,-./ aZ0
+[-\P{Zs}---] v +,-./ aZ0
[--\P{Zs}-] u +,-./ aZ0
+[--\P{Zs}-] v +,-./ aZ0
[--\P{Zs}--] u +,-./ aZ0
+[--\P{Zs}--] v +,-./ aZ0
[--\P{Zs}---] u +,-./ aZ0
+[--\P{Zs}---] v +,-./ aZ0
[--\P{Zs}--\/] u +,-./ aZ0
+[--\P{Zs}--\/] v +,-./ aZ0
[e-f] i defg_DEFG
[e-f] ui defg_DEFG
+[e-f] vi defg_DEFG
[e-F] i defg_DEFG
[e-F] ui defg_DEFG
+[e-F] vi defg_DEFG
[F-e] i defg_DEFG
[F-e] ui defg_DEFG
+[F-e] vi defg_DEFG
[E-F] i defg_DEFG
[E-F] ui defg_DEFG
+[E-F] vi defg_DEFG
# Character sets (backrefence edge cases)
(a)[\1] "a\x01a"
(a)[\1] u "a\x01a"
+(a)[\1] v "a\x01a"
(?:a)[\1] "a\x01a"
(?:a)[\1] u "a\x01a"
+(?:a)[\1] v "a\x01a"
[(a)\1] "a\x01a"
[(a)\1] u "a\x01a"
+[(a)\1] v "a\x01a"
[(?:a)\1] "a\x01a"
[(?:a)\1] u "a\x01a"
+[(?:a)\1] v "a\x01a"
[\1(a)] "a\x01a"
[\1(a)] u "a\x01a"
+[\1(a)] v "a\x01a"
[\1(?:a)] "a\x01a"
[\1(?:a)] u "a\x01a"
+[\1(?:a)] v "a\x01a"
[\1](a) "a\x01a"
[\1](a) u "a\x01a"
+[\1](a) v "a\x01a"
[\1](?:a) "a\x01a"
[\1](?:a) u "a\x01a"
+[\1](?:a) v "a\x01a"
# Character sets (.NET-specific edge cases)
[A-[B]] A-[B]
[A-[B]] u A-[B]
+[A-[B]] v A-[B]
[--[B]] A-[B]
[--[B]] u A-[B]
+[--[B]] v A-[B]
[\D-[B]] A-[B]
[\D-[B]] u A-[B] !ignore-error-message
+[\D-[B]] v A-[B]
[A-\[B\]] A-[B]
[A-\[B\]] u A-[B]
+[A-\[B\]] v A-[B]
# Disjunctions
a|ab abc
a|ab u abc
+a|ab v abc
(?:(a)|(ab))(?:(c)|(bc)) abc
(?:(a)|(ab))(?:(c)|(bc)) u abc
+(?:(a)|(ab))(?:(c)|(bc)) v abc
\.(?:png|jpe?g|webp|avif|gif)$ i image.jpg
\.(?:png|jpe?g|webp|avif|gif)$ ui image.jpg
+\.(?:png|jpe?g|webp|avif|gif)$ vi image.jpg
\bgr(a|e)y\b The gray wolf blended in among the grey rocks.
\bgr(a|e)y\b u The gray wolf blended in among the grey rocks.
+\bgr(a|e)y\b v The gray wolf blended in among the grey rocks.
\b(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b 01-9999999 020-333333 777-88-9999
\b(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b u 01-9999999 020-333333 777-88-9999
+\b(\d{2}-\d{7}|\d{3}-\d{2}-\d{4})\b v 01-9999999 020-333333 777-88-9999
?x xxyx
?x u xxyx
+?x v xxyx
{1}x xxyx
{1}x u xxyx
+{1}x v xxyx
?x|y xxyx
?x|y u xxyx
+?x|y v xxyx
{1}x|y xxyx
{1}x|y u xxyx
+{1}x|y v xxyx
y|+x xxyx
y|+x u xxyx
+y|+x v xxyx
y|{1,2}x xxyx
y|{1,2}x u xxyx
+y|{1,2}x v xxyx
# Invalid groups
@@ -2127,212 +3125,295 @@ y|{1,2}x u xxyx
(ab)|(cd) cd
(ab)|(cd) u cd
+(ab)|(cd) v cd
([ab])+ abc
([ab])+ u abc
+([ab])+ v abc
c(?=(ab)) cab
c(?=(ab)) u cab
+c(?=(ab)) v cab
(?<=(a)(b))c abc
(?<=(a)(b))c u abc
+(?<=(a)(b))c v abc
(?<=([ab])+)c abc
(?<=([ab])+)c u abc
+(?<=([ab])+)c v abc
((a+)?(b+)?(c))* aacbbbcac !ignore-undefined-captures
((a+)?(b+)?(c))* u aacbbbcac !ignore-undefined-captures
+((a+)?(b+)?(c))* v aacbbbcac !ignore-undefined-captures
^(\d{4})-(\d{2})-(\d{2})$ 2019-01-01
^(\d{4})-(\d{2})-(\d{2})$ u 2019-01-01
+^(\d{4})-(\d{2})-(\d{2})$ v 2019-01-01
(\w+)\s(\1)\W i He said that that was the the correct answer.
(\w+)\s(\1)\W ui He said that that was the the correct answer.
+(\w+)\s(\1)\W vi He said that that was the the correct answer.
(*x) xxyx
(*x) u xxyx
+(*x) v xxyx
({1,}x) xxyx
({1,}x) u xxyx
+({1,}x) v xxyx
(y|+x) xxyx
(y|+x) u xxyx
+(y|+x) v xxyx
(y|{1,2}x) xxyx
(y|{1,2}x) u xxyx
+(y|{1,2}x) v xxyx
# Named capturing groups
(?ab)|(?cd) cd
(?ab)|(?cd) u cd
+(?ab)|(?cd) v cd
(?[ab])+ abc
(?[ab])+ u abc
+(?[ab])+ v abc
c(?=(?<$ab>ab)) cab
c(?=(?<$ab>ab)) u cab
+c(?=(?<$ab>ab)) v cab
c(?=(?<$ab>ab)(?<__utf8_246162>)) cab
c(?=(?<$ab>ab)(?<__utf8_246162>)) u cab
+c(?=(?<$ab>ab)(?<__utf8_246162>)) v cab
(?<=(?<α>a)(?<β>b))c abc
(?<=(?<α>a)(?<β>b))c u abc
+(?<=(?<α>a)(?<β>b))c v abc
(?<=(?<_1>[ab])+)c abc
(?<=(?<_1>[ab])+)c u abc
+(?<=(?<_1>[ab])+)c v abc
((?<\u{13000}>a+)?(?<\u{13001}>b+)?(?<\u{13002}>c))* aacbbbcac !ignore-undefined-captures
((?<\u{13000}>a+)?(?<\u{13001}>b+)?(?<\u{13002}>c))* u aacbbbcac !ignore-undefined-captures
+((?<\u{13000}>a+)?(?<\u{13001}>b+)?(?<\u{13002}>c))* v aacbbbcac !ignore-undefined-captures
^(?\d{4})-(?\d{2})-(?\d{2})$ 2019-01-01
^(?\d{4})-(?\d{2})-(?\d{2})$ u 2019-01-01
+^(?\d{4})-(?\d{2})-(?\d{2})$ v 2019-01-01
(?\d+),(?.+) 1560979912,Caroline
(?\d+),(?.+) u 1560979912,Caroline
+(?\d+),(?.+) v 1560979912,Caroline
(?x)(?y) xy
(?x)(?y) u xy
+(?x)(?y) v xy
((?x))(?y) xy
((?x))(?y) u xy
+((?x))(?y) v xy
(x|(?x))(?y) xy
(x|(?x))(?y) u xy
+(x|(?x))(?y) v xy
(((?x)))(?y) xy
(((?x)))(?y) u xy
+(((?x)))(?y) v xy
(?:((?x)))(?y) xy
(?:((?x)))(?y) u xy
+(?:((?x)))(?y) v xy
((?:(?x)))(?y) xy
((?:(?x)))(?y) u xy
+((?:(?x)))(?y) v xy
(?x)))(?y) xy
(?x)))(?y) u xy
+(?x)))(?y) v xy
(?x)((?y)) xy
(?x)((?y)) u xy
+(?x)((?y)) v xy
(?x)(y|(?y)) xy
(?x)(y|(?y)) u xy
+(?x)(y|(?y)) v xy
(?x)(((?y))) xy
(?x)(((?y))) u xy
+(?x)(((?y))) v xy
(?x)(?:((?y))) xy
(?x)(?:((?y))) u xy
+(?x)(?:((?y))) v xy
(?x)((?:(?y))) xy
(?x)((?:(?y))) u xy
+(?x)((?:(?y))) v xy
(?x)(?!(?:(?y))) xy
(?x)(?!(?:(?y))) u xy
+(?x)(?!(?:(?y))) v xy
(?\w+)\s\k\W(?\w+) i He said that that was the the correct answer.
(?\w+)\s\k\W(?\w+) ui He said that that was the the correct answer.
+(?\w+)\s\k\W(?\w+) vi He said that that was the the correct answer.
(?*x) xxyx
(?*x) u xxyx
+(?*x) v xxyx
(?{1,}x) xxyx
(?{1,}x) u xxyx
+(?{1,}x) v xxyx
# Non-capturing groups
styles(?:\.[\da-f]+)? styles.css
styles(?:\.[\da-f]+)? u styles.css
+styles(?:\.[\da-f]+)? v styles.css
styles(?:\.[\da-f]+)? styles.1234.css
styles(?:\.[\da-f]+)? u styles.1234.css
+styles(?:\.[\da-f]+)? v styles.1234.css
styles(?:\.[\da-f]+)? styles.cafe.css
styles(?:\.[\da-f]+)? u styles.cafe.css
+styles(?:\.[\da-f]+)? v styles.cafe.css
styles(?:\.[\da-f]+)? styles.1234.min.css
styles(?:\.[\da-f]+)? u styles.1234.min.css
+styles(?:\.[\da-f]+)? v styles.1234.min.css
\.(?:png|jpe?g|webp|avif|gif)$ i image.png
\.(?:png|jpe?g|webp|avif|gif)$ ui image.png
+\.(?:png|jpe?g|webp|avif|gif)$ vi image.png
\.(?:png|jpe?g|webp|avif|gif)$ i image.pdf
\.(?:png|jpe?g|webp|avif|gif)$ ui image.pdf
+\.(?:png|jpe?g|webp|avif|gif)$ vi image.pdf
(?:title|name)=(["'])(.*?)\1 name="foo"
(?:title|name)=(["'])(.*?)\1 u name="foo"
+(?:title|name)=(["'])(.*?)\1 v name="foo"
(?:\b(?:\w+)\W*)+\. This is a short sentence.
(?:\b(?:\w+)\W*)+\. u This is a short sentence.
+(?:\b(?:\w+)\W*)+\. v This is a short sentence.
(?:*x) xxyx
(?:*x) u xxyx
+(?:*x) v xxyx
(?:{1,}x) xxyx
(?:{1,}x) u xxyx
+(?:{1,}x) v xxyx
# Invalid group name references
\kx kx
\kx u kx
+\kx v kx
(?)\kx kx
\kx(?) kx
\k k
(\k u k
+(\k v k
\k<>x k<>x
\k<>x u k<>x
+\k<>x v k<>x
(?)\k x
(?)\k u x
+(?)\k v x
\k(?) x
\k(?) u x
+\k(?) v x
+
+[\k)](?) x
+[\k)](?) u x
+[\k)](?) v x
# Backreferences
title=(["'])(.*?)\1 title="Named capturing groups' advantages"
title=(["'])(.*?)\1 u title="Named capturing groups' advantages"
+title=(["'])(.*?)\1 v title="Named capturing groups' advantages"
title=(?["'])(?.*?)\1 title="Named capturing groups' advantages"
title=(?["'])(?.*?)\1 u title="Named capturing groups' advantages"
+title=(?["'])(?.*?)\1 v title="Named capturing groups' advantages"
title=(?["'])(?.*?)\k title="Named capturing groups' advantages"
title=(?["'])(?.*?)\k u title="Named capturing groups' advantages"
+title=(?["'])(?.*?)\k v title="Named capturing groups' advantages"
(b)\1 i bB
(b)\1 ui bB
+(b)\1 vi bB
(?b)\1 i bB
(?b)\1 ui bB
+(?b)\1 vi bB
(?b)\k i bB
(?b)\k ui bB
+(?b)\k vi bB
(b)\1+ i bBbB
(b)\1+ ui bBbB
+(b)\1+ vi bBbB
(?b)\1+ i bB
(?b)\1+ ui bB
+(?b)\1+ vi bB
(?b)\k+ i bB
(?b)\k+ ui bB
+(?b)\k+ vi bB
\1(a) aa
\1(a) u aa
+\1(a) v aa
\1(?a) aa
\1(?a) u aa
+\1(?a) v aa
\k(?a) aa
\k(?a) u aa
+\k(?a) v aa
(\1a) aa
(\1a) u aa
+(\1a) v aa
(?\1a) aa
(?\1a) u aa
+(?\1a) v aa
(?\ka) aa
(?\ka) u aa
+(?\ka) v aa
(a\1) aa
(a\1) u aa
+(a\1) v aa
(?a\1) aa
(?a\1) u aa
+(?a\1) v aa
(?a\k) aa
(?a\k) u aa
+(?a\k) v aa
(?:a|(b))\1c ac
(?:a|(b))\1c u ac
+(?:a|(b))\1c v ac
(?:a|(?b))\1c ac
(?:a|(?b))\1c u ac
+(?:a|(?b))\1c v ac
(?:a|(?b))\kc ac
(?:a|(?b))\k