From 12394a14fd75623f4e22d1ac7d3626ad2da789cc Mon Sep 17 00:00:00 2001 From: BDisp Date: Mon, 29 Nov 2021 21:50:57 +0000 Subject: [PATCH 01/13] Implements a real RuneExtensions helper class. --- NStack/unicode/Rune.cs | 17 +++++ .../{Rune.extensions.cs => RuneExtensions.cs} | 51 +++++--------- NStackTests/RuneTest.cs | 67 +++++++++---------- 3 files changed, 68 insertions(+), 67 deletions(-) rename NStack/unicode/{Rune.extensions.cs => RuneExtensions.cs} (73%) diff --git a/NStack/unicode/Rune.cs b/NStack/unicode/Rune.cs index 5b50d75..a52450d 100644 --- a/NStack/unicode/Rune.cs +++ b/NStack/unicode/Rune.cs @@ -617,6 +617,23 @@ public static bool DecodeSurrogatePair(string str, out char [] chars) return false; } + /// + /// Given one byte from a utf8 string, return the number of expected bytes that make up the sequence. + /// + /// The number of UTF8 bytes expected given the first prefix. + /// Is the first byte of a UTF8 sequence. + public static int ExpectedSizeFromFirstByte(byte firstByte) + { + var x = first[firstByte]; + + // Invalid runes, just return 1 for byte, and let higher level pass to print + if (x == xx) + return -1; + if (x == a1) + return 1; + return x & 0xf; + } + /// /// IsDigit reports whether the rune is a decimal digit. /// diff --git a/NStack/unicode/Rune.extensions.cs b/NStack/unicode/RuneExtensions.cs similarity index 73% rename from NStack/unicode/Rune.extensions.cs rename to NStack/unicode/RuneExtensions.cs index 553fb13..99d6f64 100644 --- a/NStack/unicode/Rune.extensions.cs +++ b/NStack/unicode/RuneExtensions.cs @@ -1,11 +1,13 @@ ๏ปฟ// // Code that interoperates with NStack.ustring. -using System; using NStack; namespace System { - public partial struct Rune + /// + /// Helper class that implements extensions for the type. + /// + public static class RuneExtensions { /// /// FullRune reports whether the ustring begins with a full UTF-8 encoding of a rune. @@ -13,19 +15,19 @@ public partial struct Rune /// /// true, if the bytes in p begin with a full UTF-8 encoding of a rune, false otherwise. /// The string to check. - public static bool FullRune(ustring str) + public static bool FullRune(this ustring str) { if ((object)str == null) throw new ArgumentNullException(nameof(str)); foreach (var rune in str) { - if (rune == Error) + if (rune == Rune.Error) { return false; } ustring us = ustring.Make(rune); - if (!FullRune(us.ToByteArray())) + if (!Rune.FullRune(us.ToByteArray())) { return false; } @@ -44,7 +46,7 @@ public static bool FullRune(ustring str) /// ustring to decode. /// Starting offset to look into.. /// Number of bytes valid in the buffer, or -1 to make it the length of the buffer. - public static (Rune rune, int size) DecodeRune(ustring str, int start = 0, int n = -1) + public static (Rune rune, int size) DecodeRune(this ustring str, int start = 0, int n = -1) { if ((object)str == null) throw new ArgumentNullException(nameof(str)); @@ -55,7 +57,7 @@ public static (Rune rune, int size) DecodeRune(ustring str, int start = 0, int n if (start > str.Length - n) throw new ArgumentException("Out of bounds"); - return DecodeRune(str.ToByteArray(), start, n); + return Rune.DecodeRune(str.ToByteArray(), start, n); } /// @@ -71,18 +73,18 @@ public static (Rune rune, int size) DecodeRune(ustring str, int start = 0, int n /// An encoding is invalid if it is incorrect UTF-8, encodes a rune that is /// out of range, or is not the shortest possible UTF-8 encoding for the /// value. No other validation is performed. - public static (Rune rune, int size) DecodeLastRune(ustring str, int end = -1) + public static (Rune rune, int size) DecodeLastRune(this ustring str, int end = -1) { if ((object)str == null) throw new ArgumentNullException(nameof(str)); if (str.Length == 0) - return (Error, 0); + return (Rune.Error, 0); if (end == -1) end = str.Length; else if (end > str.Length) throw new ArgumentException("The end goes beyond the size of the buffer"); - return DecodeLastRune(str.ToByteArray(), end); + return Rune.DecodeLastRune(str.ToByteArray(), end); } /// @@ -90,12 +92,12 @@ public static (Rune rune, int size) DecodeLastRune(ustring str, int end = -1) /// /// Number of runes. /// utf8 string. - public static int RuneCount(ustring str) + public static int RuneCount(this ustring str) { if ((object)str == null) throw new ArgumentNullException(nameof(str)); - return RuneCount(str.ToByteArray()); + return Rune.RuneCount(str.ToByteArray()); } /// @@ -103,38 +105,21 @@ public static int RuneCount(ustring str) /// /// The index of the first invalid byte sequence or -1 if the entire buffer is valid. /// String containing the utf8 buffer. - public static int InvalidIndex(ustring str) + public static int InvalidIndex(this ustring str) { if ((object)str == null) throw new ArgumentNullException(nameof(str)); - return InvalidIndex(str.ToByteArray()); + return Rune.InvalidIndex(str.ToByteArray()); } /// /// Reports whether the ustring consists entirely of valid UTF-8-encoded runes. /// /// String to validate. - public static bool Valid(ustring str) + public static bool Valid(this ustring str) { - return InvalidIndex(str) == -1; - } - - /// - /// Given one byte from a utf8 string, return the number of expected bytes that make up the sequence. - /// - /// The number of UTF8 bytes expected given the first prefix. - /// Is the first byte of a UTF8 sequence. - public static int ExpectedSizeFromFirstByte(byte firstByte) - { - var x = first[firstByte]; - - // Invalid runes, just return 1 for byte, and let higher level pass to print - if (x == xx) - return -1; - if (x == a1) - return 1; - return x & 0xf; + return Rune.Valid(str.ToByteArray()); } } } diff --git a/NStackTests/RuneTest.cs b/NStackTests/RuneTest.cs index e5abac0..97348f8 100644 --- a/NStackTests/RuneTest.cs +++ b/NStackTests/RuneTest.cs @@ -65,7 +65,7 @@ public void TestColumnWidth() Assert.AreEqual(1, g.ToString().Length); Assert.AreEqual(1, Rune.RuneLen(g)); var uh = ustring.Make(h); - (var runeh, var sizeh) = Rune.DecodeRune(uh); + (var runeh, var sizeh) = uh.DecodeRune(); Assert.AreEqual(2, Rune.ColumnWidth(runeh)); Assert.AreEqual("๐Ÿจ", h); Assert.AreEqual(2, runeh.ToString().Length); @@ -78,8 +78,8 @@ public void TestColumnWidth() Assert.IsTrue(Rune.ValidRune(runeh)); Assert.True(Rune.Valid(uh.ToByteArray())); Assert.True(Rune.FullRune(uh.ToByteArray())); - Assert.AreEqual(1, Rune.RuneCount(uh)); - (var runelh, var sizelh) = Rune.DecodeLastRune(uh); + Assert.AreEqual(1, uh.RuneCount()); + (var runelh, var sizelh) = uh.DecodeLastRune(); Assert.AreEqual(2, Rune.ColumnWidth(runelh)); Assert.AreEqual(2, runelh.ToString().Length); @@ -88,7 +88,7 @@ public void TestColumnWidth() Assert.IsTrue(Rune.ValidRune(runelh)); var ui = ustring.Make(i); - (var runei, var sizei) = Rune.DecodeRune(ui); + (var runei, var sizei) = ui.DecodeRune(); Assert.AreEqual(1, Rune.ColumnWidth(runei)); Assert.AreEqual("๓ ฟก", i); Assert.AreEqual(2, runei.ToString().Length); @@ -101,7 +101,7 @@ public void TestColumnWidth() Assert.IsTrue(Rune.ValidRune(runei)); Assert.True(Rune.Valid(ui.ToByteArray())); Assert.True(Rune.FullRune(ui.ToByteArray())); - (var runeli, var sizeli) = Rune.DecodeLastRune(ui); + (var runeli, var sizeli) = ui.DecodeLastRune(); Assert.AreEqual(1, Rune.ColumnWidth(runeli)); Assert.AreEqual(2, runeli.ToString().Length); Assert.AreEqual(4, Rune.RuneLen(runeli)); @@ -114,7 +114,7 @@ public void TestColumnWidth() Assert.AreEqual(Rune.RuneLen(runeh), Rune.RuneLen(runei)); Assert.AreEqual(Rune.RuneLen(runeh), Rune.RuneLen(runei)); var uj = ustring.Make(j); - (var runej, var sizej) = Rune.DecodeRune(uj); + (var runej, var sizej) = uj.DecodeRune(); Assert.AreEqual(0, Rune.ColumnWidth(j)); Assert.AreEqual(0, Rune.ColumnWidth(uj.RuneAt(0))); Assert.AreEqual(j, uj.RuneAt(0)); @@ -136,7 +136,7 @@ public void TestColumnWidth() Assert.AreEqual("๏˜ž", m.ToString()); Assert.AreEqual(1, m.ToString().Length); Assert.AreEqual(3, Rune.RuneLen(m)); - var rn = Rune.DecodeRune(ustring.Make(n)).rune; + var rn = ustring.Make(n).DecodeRune().rune; Assert.AreEqual(1, Rune.ColumnWidth(rn)); Assert.AreEqual("๐Ÿ•", rn.ToString()); Assert.AreEqual(2, rn.ToString().Length); @@ -145,7 +145,7 @@ public void TestColumnWidth() Assert.AreEqual("๐Ÿ•", o.ToString()); Assert.AreEqual(2, o.ToString().Length); Assert.AreEqual(4, Rune.RuneLen(o)); - var rp = Rune.DecodeRune(ustring.Make(p)).rune; + var rp = ustring.Make(p).DecodeRune().rune; Assert.AreEqual(1, Rune.ColumnWidth(rp)); Assert.AreEqual("๐Ÿ•", p); Assert.AreEqual(2, p.Length); @@ -154,7 +154,7 @@ public void TestColumnWidth() Assert.AreEqual("โ„ƒ", q.ToString()); Assert.AreEqual(1, q.ToString().Length); Assert.AreEqual(3, Rune.RuneLen(q)); - var rq = Rune.DecodeRune(ustring.Make(q)).rune; + var rq = ustring.Make(q).DecodeRune().rune; Assert.AreEqual(1, Rune.ColumnWidth(rq)); Assert.AreEqual("โ„ƒ", rq.ToString()); Assert.AreEqual(1, rq.ToString().Length); @@ -170,7 +170,7 @@ public void TestColumnWidth() var buff = new byte[4]; var sb = Rune.EncodeRune('\u2503', buff); Assert.AreEqual(1, Rune.ColumnWidth('\u2503')); - (var rune, var size) = Rune.DecodeRune(ustring.Make('\u2503')); + (var rune, var size) = ustring.Make('\u2503').DecodeRune(); Assert.AreEqual(sb, size); Assert.AreEqual('\u2503', (uint)rune); var scb = char.ConvertToUtf32("โ„ƒ", 0); @@ -181,56 +181,56 @@ public void TestColumnWidth() Assert.AreEqual(2, Rune.ColumnWidth('\u1100')); Assert.AreEqual(2, ustring.Make('\u1100').ConsoleWidth); Assert.AreEqual(1, '\u1100'.ToString().Length); // Length as string returns 1 but in reality it occupies 2 columns. - (rune, size) = Rune.DecodeRune(ustring.Make('\u1100')); + (rune, size) = ustring.Make('\u1100').DecodeRune(); Assert.AreEqual(sb, size); Assert.AreEqual('\u1100', (uint)rune); string str = "\u2615"; Assert.AreEqual("โ˜•", str); Assert.AreEqual(1, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(1, ((ustring)str).ConsoleWidth); - Assert.AreEqual(1, Rune.RuneCount(str)); + Assert.AreEqual(1, ((ustring)str).RuneCount()); Assert.AreEqual(1, str.Length); str = "\u2615\ufe0f"; // Identical but \ufe0f forces it to be rendered as a colorful image as compared to a monochrome text variant. Assert.AreEqual("โ˜•๏ธ", str); Assert.AreEqual(1, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(1, ((ustring)str).ConsoleWidth); - Assert.AreEqual(2, Rune.RuneCount(str)); + Assert.AreEqual(2, ((ustring)str).RuneCount()); Assert.AreEqual(2, str.Length); str = "\u231a"; Assert.AreEqual("โŒš", str); Assert.AreEqual(2, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(2, ((ustring)str).ConsoleWidth); - Assert.AreEqual(1, Rune.RuneCount(str)); + Assert.AreEqual(1, ((ustring)str).RuneCount()); Assert.AreEqual(1, str.Length); str = "\u231b"; Assert.AreEqual("โŒ›", str); Assert.AreEqual(2, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(2, ((ustring)str).ConsoleWidth); - Assert.AreEqual(1, Rune.RuneCount(str)); + Assert.AreEqual(1, ((ustring)str).RuneCount()); Assert.AreEqual(1, str.Length); str = "\u231c"; Assert.AreEqual("โŒœ", str); Assert.AreEqual(1, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(1, ((ustring)str).ConsoleWidth); - Assert.AreEqual(1, Rune.RuneCount(str)); + Assert.AreEqual(1, ((ustring)str).RuneCount()); Assert.AreEqual(1, str.Length); str = "\u1dc0"; Assert.AreEqual("แท€", str); Assert.AreEqual(0, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(0, ((ustring)str).ConsoleWidth); - Assert.AreEqual(1, Rune.RuneCount(str)); + Assert.AreEqual(1, ((ustring)str).RuneCount()); Assert.AreEqual(1, str.Length); str = "\ud83e\udd16"; Assert.AreEqual("๐Ÿค–", str); Assert.AreEqual(2, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(2, ((ustring)str).ConsoleWidth); - Assert.AreEqual(1, Rune.RuneCount(str)); // Here returns 1 because is a valid surrogate pair resulting in only rune >=U+10000..U+10FFFF + Assert.AreEqual(1, ((ustring)str).RuneCount()); // Here returns 1 because is a valid surrogate pair resulting in only rune >=U+10000..U+10FFFF Assert.AreEqual(2, str.Length); // String always preserves the originals values of each surrogate pair str = "\U0001f9e0"; Assert.AreEqual("๐Ÿง ", str); Assert.AreEqual(2, str.Sum(x => Rune.ColumnWidth(x))); Assert.AreEqual(2, ((ustring)str).ConsoleWidth); - Assert.AreEqual(1, Rune.RuneCount(str)); + Assert.AreEqual(1, ((ustring)str).RuneCount()); Assert.AreEqual(2, str.Length); } @@ -315,7 +315,7 @@ public void TestRune() Assert.AreEqual(1, Rune.ColumnWidth(q)); Assert.AreEqual(1, q.ToString().Length); Assert.AreEqual("โŒช", q.ToString()); - var r = Rune.DecodeRune(ustring.Make("\U0000232a")).rune; + var r = ustring.Make("\U0000232a").DecodeRune().rune; Assert.AreEqual(1, Rune.ColumnWidth(r)); Assert.AreEqual(1, r.ToString().Length); Assert.AreEqual("โŒช", r.ToString()); @@ -523,7 +523,7 @@ public void Test_IsNonSpacingChar() Assert.AreEqual(1, f.ConsoleWidth); Assert.AreEqual(1, s.Sum(c => Rune.ColumnWidth(c))); Assert.AreEqual(2, s.Length); - (var rune, var size) = Rune.DecodeRune(f); + (var rune, var size) = f.DecodeRune(); Assert.AreEqual(rune, l); Assert.AreEqual(1, size); l = '\u0041'; @@ -541,7 +541,7 @@ public void Test_IsNonSpacingChar() Assert.AreEqual(1, f.ConsoleWidth); Assert.AreEqual(1, s.Sum(c => Rune.ColumnWidth(c))); Assert.AreEqual(2, s.Length); - (rune, size) = Rune.DecodeRune(f); + (rune, size) = f.DecodeRune(); Assert.AreEqual(rune, l); Assert.AreEqual(1, size); l = '\u0061'; @@ -559,7 +559,7 @@ public void Test_IsNonSpacingChar() Assert.AreEqual(1, f.ConsoleWidth); Assert.AreEqual(1, s.Sum(c => Rune.ColumnWidth(c))); Assert.AreEqual(2, s.Length); - (rune, size) = Rune.DecodeRune(f); + (rune, size) = f.DecodeRune(); Assert.AreEqual(rune, l); Assert.AreEqual(1, size); l = '\u4f00'; @@ -577,7 +577,7 @@ public void Test_IsNonSpacingChar() Assert.AreEqual(4, f.ConsoleWidth); Assert.AreEqual(4, s.Sum(c => Rune.ColumnWidth(c))); Assert.AreEqual(2, s.Length); - (rune, size) = Rune.DecodeRune(f); + (rune, size) = f.DecodeRune(); Assert.AreEqual(rune, l); Assert.AreEqual(3, size); } @@ -754,9 +754,9 @@ public void Test_Surrogate_Pairs_Range() public void Test_FullRune_Extension() { ustring us = "Hello, ไธ–็•Œ"; - Assert.True(Rune.FullRune(us)); + Assert.True(us.FullRune()); us = $"Hello, {ustring.Make(new byte[] { 228 })}็•Œ"; - Assert.False(Rune.FullRune(us)); + Assert.False(us.FullRune()); } [Test] @@ -767,7 +767,7 @@ public void Test_DecodeRune_Extension() int tSize = 0; for (int i = 0; i < us.RuneCount; i++) { - (Rune rune, int size) = Rune.DecodeRune(us.RuneSubstring(i, 1)); + (Rune rune, int size) = us.RuneSubstring(i, 1).DecodeRune(); runes.Add(rune); tSize += size; } @@ -784,7 +784,7 @@ public void Test_DecodeLastRune_Extension() int tSize = 0; for (int i = us.RuneCount - 1; i >= 0; i--) { - (Rune rune, int size) = Rune.DecodeLastRune(us.RuneSubstring(i, 1)); + (Rune rune, int size) = us.RuneSubstring(i, 1).DecodeLastRune(); runes.Add(rune); tSize += size; } @@ -797,27 +797,26 @@ public void Test_DecodeLastRune_Extension() public void Test_InvalidIndex_Extension() { ustring us = "Hello, ไธ–็•Œ"; - Assert.AreEqual(-1, Rune.InvalidIndex(us)); + Assert.AreEqual(-1, us.InvalidIndex()); us = ustring.Make(new byte[] { 0xff, 0xfe, 0xfd }); - Assert.AreEqual(0, Rune.InvalidIndex(us)); + Assert.AreEqual(0, us.InvalidIndex()); } [Test] public void Test_Valid_Extension() { ustring us = "Hello, ไธ–็•Œ"; - Assert.True(Rune.Valid(us)); + Assert.True(us.Valid()); us = ustring.Make(new byte[] { 0xff, 0xfe, 0xfd }); - Assert.False(Rune.Valid(us)); + Assert.False(us.Valid()); } [Test] - public void Test_ExpectedSizeFromFirstByte_Extension() + public void Test_ExpectedSizeFromFirstByte() { Assert.AreEqual(-1, Rune.ExpectedSizeFromFirstByte(255)); Assert.AreEqual(1, Rune.ExpectedSizeFromFirstByte(127)); Assert.AreEqual(4, Rune.ExpectedSizeFromFirstByte(240)); } - } } From 9135b7e7ce2704911283091d8c7b6070491ad223 Mon Sep 17 00:00:00 2001 From: BDisp Date: Tue, 30 Nov 2021 11:46:50 +0000 Subject: [PATCH 02/13] Added ExpectedSizeFromFirstByte extension. --- NStack/unicode/RuneExtensions.cs | 16 ++++++++++++++++ NStackTests/RuneTest.cs | 19 +++++++++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/NStack/unicode/RuneExtensions.cs b/NStack/unicode/RuneExtensions.cs index 99d6f64..aaa92b3 100644 --- a/NStack/unicode/RuneExtensions.cs +++ b/NStack/unicode/RuneExtensions.cs @@ -119,7 +119,23 @@ public static int InvalidIndex(this ustring str) /// String to validate. public static bool Valid(this ustring str) { + if ((object)str == null) + throw new ArgumentNullException(nameof(str)); + return Rune.Valid(str.ToByteArray()); } + + /// + /// Given one byte from a utf8 string, return the number of expected bytes that make up the sequence. + /// + /// The number of UTF8 bytes expected given the first prefix. + /// String to get the first byte of a UTF8 sequence. + public static int ExpectedSizeFromFirstByte(this ustring str) + { + if ((object)str == null) + throw new ArgumentNullException(nameof(str)); + + return Rune.ExpectedSizeFromFirstByte(str[0]); + } } } diff --git a/NStackTests/RuneTest.cs b/NStackTests/RuneTest.cs index 97348f8..65279ec 100644 --- a/NStackTests/RuneTest.cs +++ b/NStackTests/RuneTest.cs @@ -750,6 +750,14 @@ public void Test_Surrogate_Pairs_Range() } } + [Test] + public void Test_ExpectedSizeFromFirstByte() + { + Assert.AreEqual(-1, Rune.ExpectedSizeFromFirstByte(255)); + Assert.AreEqual(1, Rune.ExpectedSizeFromFirstByte(127)); + Assert.AreEqual(4, Rune.ExpectedSizeFromFirstByte(240)); + } + [Test] public void Test_FullRune_Extension() { @@ -812,11 +820,14 @@ public void Test_Valid_Extension() } [Test] - public void Test_ExpectedSizeFromFirstByte() + public void Test_ExpectedSizeFromFirstByte_Extension() { - Assert.AreEqual(-1, Rune.ExpectedSizeFromFirstByte(255)); - Assert.AreEqual(1, Rune.ExpectedSizeFromFirstByte(127)); - Assert.AreEqual(4, Rune.ExpectedSizeFromFirstByte(240)); + ustring us = ustring.Make(255); + Assert.AreEqual(-1, us.ExpectedSizeFromFirstByte()); + us = ustring.Make(127); + Assert.AreEqual(1, us.ExpectedSizeFromFirstByte()); + us = ustring.Make(240); + Assert.AreEqual(4, us.ExpectedSizeFromFirstByte()); } } } From 463316a4c9a3c8074f5f336818f428379c525f10 Mon Sep 17 00:00:00 2001 From: BDisp Date: Wed, 1 Dec 2021 04:23:30 +0000 Subject: [PATCH 03/13] Fixes UTF8 RuneCount method. --- NStack/unicode/Utf8.cs | 13 ++++++++++--- NStackTests/RuneTest.cs | 19 +++++++++++-------- NStackTests/ustringTest.cs | 8 ++++++++ 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/NStack/unicode/Utf8.cs b/NStack/unicode/Utf8.cs index 3bfccd6..6f92146 100644 --- a/NStack/unicode/Utf8.cs +++ b/NStack/unicode/Utf8.cs @@ -558,6 +558,16 @@ public static int RuneCount (ustring str) var size = (int)(x & 7); + //if (i <= str.Length - size ) + //{ + // (Rune rune, _) = Utf8.DecodeRune(str, i, size); + // if (rune.IsSurrogatePair) + // { + // i += size; + // continue; + // } + //} + if (i + size > count) { i++; // Short or invalid. continue; @@ -586,9 +596,6 @@ public static int RuneCount (ustring str) i++; continue; } - (Rune rune, _) = Utf8.DecodeRune(str, i, size); - if (rune.IsSurrogatePair) - n++; i += size; } return n; diff --git a/NStackTests/RuneTest.cs b/NStackTests/RuneTest.cs index 65279ec..17e72f6 100644 --- a/NStackTests/RuneTest.cs +++ b/NStackTests/RuneTest.cs @@ -324,11 +324,11 @@ public void TestRune() PrintTextElementCount(ustring.Make('\u0061', '\u0301'), "aฬ", 1, 2, 2, 1); PrintTextElementCount(ustring.Make('\u0065', '\u0301'), "eฬ", 1, 2, 2, 1); PrintTextElementCount(ustring.Make(new Rune[] { new Rune(0x1f469), new Rune(0x1f3fd), new Rune('\u200d'), new Rune(0x1f692) }), - "๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿš’", 3, 7, 7, 4); + "๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿš’", 3, 4, 7, 4); PrintTextElementCount(ustring.Make(new Rune[] { new Rune(0x1f469), new Rune(0x1f3fd), new Rune('\u200d'), new Rune(0x1f692) }), - "\U0001f469\U0001f3fd\u200d\U0001f692", 3, 7, 7, 4); + "\U0001f469\U0001f3fd\u200d\U0001f692", 3, 4, 7, 4); PrintTextElementCount(ustring.Make(new Rune('\ud801', '\udccf')), - "\ud801\udccf", 1, 2, 2, 1); + "\ud801\udccf", 1, 1, 2, 1); } void PrintTextElementCount(ustring us, string s, int consoleWidth, int runeCount, int stringCount, int txtElementCount) @@ -338,7 +338,6 @@ void PrintTextElementCount(ustring us, string s, int consoleWidth, int runeCount Assert.AreEqual(consoleWidth, us.ConsoleWidth); Assert.AreEqual(runeCount, us.RuneCount); Assert.AreEqual(stringCount, s.Length); - Assert.AreEqual(runeCount, s.Length); TextElementEnumerator enumerator = StringInfo.GetTextElementEnumerator(s); @@ -598,7 +597,7 @@ public void Test_MaxRune() } [Test] - public void Sum_Of_ColumnWidth_Is_Always_Equal_To_ConsoleWidth_And_RuneCount_Is_Always_Equal_To_String_Length() + public void Sum_Of_ColumnWidth_Is_Always_Equal_To_ConsoleWidth() { const int start = 0x000000; const int end = 0x10ffff; @@ -629,7 +628,8 @@ public void Sum_Of_ColumnWidth_Is_Always_Equal_To_ConsoleWidth_And_RuneCount_Is_ Assert.AreEqual(us.ToString(), s); Assert.AreEqual(Rune.ColumnWidth(r), us.ConsoleWidth); Assert.AreEqual(s.Sum(c => Rune.ColumnWidth(c)), us.ConsoleWidth); - Assert.AreEqual(us.RuneCount, s.Length); + Assert.AreEqual(1, us.RuneCount); // Here returns 1 because is a valid surrogate pair resulting in only rune >=U+10000..U+10FFFF + Assert.AreEqual(2, s.Length); // String always preserves the originals values of each surrogate pair } } } @@ -675,15 +675,17 @@ public void Test_Range(int start, int end) Assert.AreEqual(r.ToString(), us); Assert.AreEqual(us, s); Assert.AreEqual(Rune.ColumnWidth(r), us.ConsoleWidth); + Assert.AreEqual(us.RuneCount, s.Length); // For not surrogate pairs ustring.RuneCount is always equal to String.Length } else { Assert.AreEqual(r.ToString(), us.ToString()); Assert.AreEqual(us.ToString(), s); Assert.AreEqual(Rune.ColumnWidth(r), us.ConsoleWidth); + Assert.AreEqual(1, us.RuneCount); // Here returns 1 because is a valid surrogate pair resulting in only rune >=U+10000..U+10FFFF + Assert.AreEqual(2, s.Length); // String always preserves the originals values of each surrogate pair } Assert.AreEqual(s.Sum(c => Rune.ColumnWidth(c)), us.ConsoleWidth); - Assert.AreEqual(us.RuneCount, s.Length); } } @@ -745,7 +747,8 @@ public void Test_Surrogate_Pairs_Range() Assert.AreEqual(us.ToString(), s); Assert.AreEqual(Rune.ColumnWidth(r), us.ConsoleWidth); Assert.AreEqual(s.Sum(c => Rune.ColumnWidth(c)), us.ConsoleWidth); - Assert.AreEqual(us.RuneCount, s.Length); + Assert.AreEqual(1, us.RuneCount); // Here returns 1 because is a valid surrogate pair resulting in only rune >=U+10000..U+10FFFF + Assert.AreEqual(2, s.Length); // String always preserves the originals values of each surrogate pair } } } diff --git a/NStackTests/ustringTest.cs b/NStackTests/ustringTest.cs index c30c04b..afbab48 100644 --- a/NStackTests/ustringTest.cs +++ b/NStackTests/ustringTest.cs @@ -738,5 +738,13 @@ public void Test_RuneSubstring() Assert.AreEqual("test to return a substring", us.RuneSubstring(7)); Assert.AreEqual("test to return", us.RuneSubstring(7, 14)); } + + [Test] + public void Test_ToRunes() + { + ustring us = "Some long text that ๐Ÿค–๐Ÿง  is super cool"; + uint[] runesArray = us.ToRunes(); + Assert.AreEqual(us, runesArray); + } } } From 93dccd0c2efb49d589b739225ba524fc4d92e2ae Mon Sep 17 00:00:00 2001 From: BDisp Date: Fri, 3 Dec 2021 00:05:43 +0000 Subject: [PATCH 04/13] Updating Tables with the Unicode 14.0.0 version. --- NStack/unicode/.gitignore | 1 + NStack/unicode/.vscode/launch.json | 15 + NStack/unicode/Makefile | 6 +- NStack/unicode/Tables.cs | 1934 ++++++++++++++++++++-------- NStack/unicode/maketables.go | 111 +- NStackTests/RuneTest.cs | 10 +- 6 files changed, 1511 insertions(+), 566 deletions(-) create mode 100644 NStack/unicode/.vscode/launch.json diff --git a/NStack/unicode/.gitignore b/NStack/unicode/.gitignore index d46998d..b3f10c3 100644 --- a/NStack/unicode/.gitignore +++ b/NStack/unicode/.gitignore @@ -1,2 +1,3 @@ maketables UnicodeData.txt +CaseFolding.txt \ No newline at end of file diff --git a/NStack/unicode/.vscode/launch.json b/NStack/unicode/.vscode/launch.json new file mode 100644 index 0000000..c6c6492 --- /dev/null +++ b/NStack/unicode/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${file}" + } + ] +} \ No newline at end of file diff --git a/NStack/unicode/Makefile b/NStack/unicode/Makefile index de87b3d..208000a 100644 --- a/NStack/unicode/Makefile +++ b/NStack/unicode/Makefile @@ -1,11 +1,11 @@ -Tables.cs: UnicodeData.txt maketables.go UnicodeData.txt Makefile maketables +Tables.cs: UnicodeData.txt maketables.go CaseFolding.txt Makefile maketables ./maketables --tables=all > Tables.cs UnicodeData.txt: - curl -O http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt + curl -O http://www.unicode.org/Public/14.0.0/ucd/UnicodeData.txt CaseFolding.txt: - curl -O http://www.unicode.org/Public/9.0.0/ucd/CaseFolding.tx + curl -O http://www.unicode.org/Public/14.0.0/ucd/CaseFolding.txt maketables: maketables.go go build maketables.go diff --git a/NStack/unicode/Tables.cs b/NStack/unicode/Tables.cs index f370fae..408b59c 100644 --- a/NStack/unicode/Tables.cs +++ b/NStack/unicode/Tables.cs @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // Generated by running -// maketables --tables=all --data=http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt --casefolding=http://www.unicode.org/Public/9.0.0/ucd/CaseFolding.txt +// maketables --tables=all --data=http://www.unicode.org/Public/14.0.0/ucd/UnicodeData.txt --casefolding=http://www.unicode.org/Public/14.0.0/ucd/CaseFolding.txt // DO NOT EDIT using System; @@ -11,9 +11,9 @@ namespace NStack { public partial class Unicode { /// - /// Version is the Unicode edition from which the tables are derived. + /// Version is the Unicode edition from which the tables are derived. /// - public const string Version = "9.0.0"; + public const string Version = "14.0.0"; /// Static class containing the various Unicode category range tables /// There are static properties that can be used to fetch a specific category, or you can use the method this class to retrieve the RangeTable by its Unicode category table name @@ -68,7 +68,8 @@ public static class Category { new Range16 (0x00ad, 0x0600, 1363), new Range16 (0x0601, 0x0605, 1), new Range16 (0x061c, 0x06dd, 193), - new Range16 (0x070f, 0x08e2, 467), + new Range16 (0x070f, 0x0890, 385), + new Range16 (0x0891, 0x08e2, 81), new Range16 (0x180e, 0x200b, 2045), new Range16 (0x200c, 0x200f, 1), new Range16 (0x202a, 0x202e, 1), @@ -79,8 +80,9 @@ public static class Category { new Range16 (0xfffa, 0xfffb, 1), }, r32: new Range32 [] { - new Range32 (0x110bd, 0x1bca0, 44003), - new Range32 (0x1bca1, 0x1bca3, 1), + new Range32 (0x110bd, 0x110cd, 16), + new Range32 (0x13430, 0x13438, 1), + new Range32 (0x1bca0, 0x1bca3, 1), new Range32 (0x1d173, 0x1d17a, 1), new Range32 (0xe0001, 0xe0020, 31), new Range32 (0xe0021, 0xe007f, 1), @@ -103,7 +105,8 @@ public static class Category { new Range16 (0x00ad, 0x0600, 1363), new Range16 (0x0601, 0x0605, 1), new Range16 (0x061c, 0x06dd, 193), - new Range16 (0x070f, 0x08e2, 467), + new Range16 (0x070f, 0x0890, 385), + new Range16 (0x0891, 0x08e2, 81), new Range16 (0x180e, 0x200b, 2045), new Range16 (0x200c, 0x200f, 1), new Range16 (0x202a, 0x202e, 1), @@ -113,8 +116,9 @@ public static class Category { new Range16 (0xfffa, 0xfffb, 1), }, r32: new Range32 [] { - new Range32 (0x110bd, 0x1bca0, 44003), - new Range32 (0x1bca1, 0x1bca3, 1), + new Range32 (0x110bd, 0x110cd, 16), + new Range32 (0x13430, 0x13438, 1), + new Range32 (0x1bca0, 0x1bca3, 1), new Range32 (0x1d173, 0x1d17a, 1), new Range32 (0xe0001, 0xe0020, 31), new Range32 (0xe0021, 0xe007f, 1), @@ -160,10 +164,10 @@ public static class Category { new Range16 (0x03f7, 0x0481, 1), new Range16 (0x048a, 0x052f, 1), new Range16 (0x0531, 0x0556, 1), - new Range16 (0x0559, 0x0561, 8), - new Range16 (0x0562, 0x0587, 1), + new Range16 (0x0559, 0x0560, 7), + new Range16 (0x0561, 0x0588, 1), new Range16 (0x05d0, 0x05ea, 1), - new Range16 (0x05f0, 0x05f2, 1), + new Range16 (0x05ef, 0x05f2, 1), new Range16 (0x0620, 0x064a, 1), new Range16 (0x066e, 0x066f, 1), new Range16 (0x0671, 0x06d3, 1), @@ -182,8 +186,10 @@ public static class Category { new Range16 (0x081a, 0x0824, 10), new Range16 (0x0828, 0x0840, 24), new Range16 (0x0841, 0x0858, 1), - new Range16 (0x08a0, 0x08b4, 1), - new Range16 (0x08b6, 0x08bd, 1), + new Range16 (0x0860, 0x086a, 1), + new Range16 (0x0870, 0x0887, 1), + new Range16 (0x0889, 0x088e, 1), + new Range16 (0x08a0, 0x08c9, 1), new Range16 (0x0904, 0x0939, 1), new Range16 (0x093d, 0x0950, 19), new Range16 (0x0958, 0x0961, 1), @@ -198,7 +204,8 @@ public static class Category { new Range16 (0x09dc, 0x09dd, 1), new Range16 (0x09df, 0x09e1, 1), new Range16 (0x09f0, 0x09f1, 1), - new Range16 (0x0a05, 0x0a0a, 1), + new Range16 (0x09fc, 0x0a05, 9), + new Range16 (0x0a06, 0x0a0a, 1), new Range16 (0x0a0f, 0x0a10, 1), new Range16 (0x0a13, 0x0a28, 1), new Range16 (0x0a2a, 0x0a30, 1), @@ -243,16 +250,17 @@ public static class Category { new Range16 (0x0c2a, 0x0c39, 1), new Range16 (0x0c3d, 0x0c58, 27), new Range16 (0x0c59, 0x0c5a, 1), - new Range16 (0x0c60, 0x0c61, 1), - new Range16 (0x0c80, 0x0c85, 5), - new Range16 (0x0c86, 0x0c8c, 1), + new Range16 (0x0c5d, 0x0c60, 3), + new Range16 (0x0c61, 0x0c80, 31), + new Range16 (0x0c85, 0x0c8c, 1), new Range16 (0x0c8e, 0x0c90, 1), new Range16 (0x0c92, 0x0ca8, 1), new Range16 (0x0caa, 0x0cb3, 1), new Range16 (0x0cb5, 0x0cb9, 1), - new Range16 (0x0cbd, 0x0cde, 33), - new Range16 (0x0ce0, 0x0ce1, 1), - new Range16 (0x0cf1, 0x0cf2, 1), + new Range16 (0x0cbd, 0x0cdd, 32), + new Range16 (0x0cde, 0x0ce0, 2), + new Range16 (0x0ce1, 0x0cf1, 16), + new Range16 (0x0cf2, 0x0d04, 18), new Range16 (0x0d05, 0x0d0c, 1), new Range16 (0x0d0e, 0x0d10, 1), new Range16 (0x0d12, 0x0d3a, 1), @@ -269,15 +277,11 @@ public static class Category { new Range16 (0x0e32, 0x0e33, 1), new Range16 (0x0e40, 0x0e46, 1), new Range16 (0x0e81, 0x0e82, 1), - new Range16 (0x0e84, 0x0e87, 3), - new Range16 (0x0e88, 0x0e8a, 2), - new Range16 (0x0e8d, 0x0e94, 7), - new Range16 (0x0e95, 0x0e97, 1), - new Range16 (0x0e99, 0x0e9f, 1), - new Range16 (0x0ea1, 0x0ea3, 1), + new Range16 (0x0e84, 0x0e86, 2), + new Range16 (0x0e87, 0x0e8a, 1), + new Range16 (0x0e8c, 0x0ea3, 1), new Range16 (0x0ea5, 0x0ea7, 2), - new Range16 (0x0eaa, 0x0eab, 1), - new Range16 (0x0ead, 0x0eb0, 1), + new Range16 (0x0ea8, 0x0eb0, 1), new Range16 (0x0eb2, 0x0eb3, 1), new Range16 (0x0ebd, 0x0ec0, 3), new Range16 (0x0ec1, 0x0ec4, 1), @@ -323,15 +327,14 @@ public static class Category { new Range16 (0x1681, 0x169a, 1), new Range16 (0x16a0, 0x16ea, 1), new Range16 (0x16f1, 0x16f8, 1), - new Range16 (0x1700, 0x170c, 1), - new Range16 (0x170e, 0x1711, 1), - new Range16 (0x1720, 0x1731, 1), + new Range16 (0x1700, 0x1711, 1), + new Range16 (0x171f, 0x1731, 1), new Range16 (0x1740, 0x1751, 1), new Range16 (0x1760, 0x176c, 1), new Range16 (0x176e, 0x1770, 1), new Range16 (0x1780, 0x17b3, 1), new Range16 (0x17d7, 0x17dc, 5), - new Range16 (0x1820, 0x1877, 1), + new Range16 (0x1820, 0x1878, 1), new Range16 (0x1880, 0x1884, 1), new Range16 (0x1887, 0x18a8, 1), new Range16 (0x18aa, 0x18b0, 6), @@ -345,7 +348,7 @@ public static class Category { new Range16 (0x1a20, 0x1a54, 1), new Range16 (0x1aa7, 0x1b05, 94), new Range16 (0x1b06, 0x1b33, 1), - new Range16 (0x1b45, 0x1b4b, 1), + new Range16 (0x1b45, 0x1b4c, 1), new Range16 (0x1b83, 0x1ba0, 1), new Range16 (0x1bae, 0x1baf, 1), new Range16 (0x1bba, 0x1be5, 1), @@ -353,10 +356,13 @@ public static class Category { new Range16 (0x1c4d, 0x1c4f, 1), new Range16 (0x1c5a, 0x1c7d, 1), new Range16 (0x1c80, 0x1c88, 1), + new Range16 (0x1c90, 0x1cba, 1), + new Range16 (0x1cbd, 0x1cbf, 1), new Range16 (0x1ce9, 0x1cec, 1), - new Range16 (0x1cee, 0x1cf1, 1), + new Range16 (0x1cee, 0x1cf3, 1), new Range16 (0x1cf5, 0x1cf6, 1), - new Range16 (0x1d00, 0x1dbf, 1), + new Range16 (0x1cfa, 0x1d00, 6), + new Range16 (0x1d01, 0x1dbf, 1), new Range16 (0x1e00, 0x1f15, 1), new Range16 (0x1f18, 0x1f1d, 1), new Range16 (0x1f20, 0x1f45, 1), @@ -387,9 +393,7 @@ public static class Category { new Range16 (0x2145, 0x2149, 1), new Range16 (0x214e, 0x2183, 53), new Range16 (0x2184, 0x2c00, 2684), - new Range16 (0x2c01, 0x2c2e, 1), - new Range16 (0x2c30, 0x2c5e, 1), - new Range16 (0x2c60, 0x2ce4, 1), + new Range16 (0x2c01, 0x2ce4, 1), new Range16 (0x2ceb, 0x2cee, 1), new Range16 (0x2cf2, 0x2cf3, 1), new Range16 (0x2d00, 0x2d25, 1), @@ -413,13 +417,12 @@ public static class Category { new Range16 (0x309d, 0x309f, 1), new Range16 (0x30a1, 0x30fa, 1), new Range16 (0x30fc, 0x30ff, 1), - new Range16 (0x3105, 0x312d, 1), + new Range16 (0x3105, 0x312f, 1), new Range16 (0x3131, 0x318e, 1), - new Range16 (0x31a0, 0x31ba, 1), + new Range16 (0x31a0, 0x31bf, 1), new Range16 (0x31f0, 0x31ff, 1), - new Range16 (0x3400, 0x4db5, 1), - new Range16 (0x4e00, 0x9fd5, 1), - new Range16 (0xa000, 0xa48c, 1), + new Range16 (0x3400, 0x4dbf, 1), + new Range16 (0x4e00, 0xa48c, 1), new Range16 (0xa4d0, 0xa4fd, 1), new Range16 (0xa500, 0xa60c, 1), new Range16 (0xa610, 0xa61f, 1), @@ -429,9 +432,11 @@ public static class Category { new Range16 (0xa6a0, 0xa6e5, 1), new Range16 (0xa717, 0xa71f, 1), new Range16 (0xa722, 0xa788, 1), - new Range16 (0xa78b, 0xa7ae, 1), - new Range16 (0xa7b0, 0xa7b7, 1), - new Range16 (0xa7f7, 0xa801, 1), + new Range16 (0xa78b, 0xa7ca, 1), + new Range16 (0xa7d0, 0xa7d1, 1), + new Range16 (0xa7d3, 0xa7d5, 2), + new Range16 (0xa7d6, 0xa7d9, 1), + new Range16 (0xa7f2, 0xa801, 1), new Range16 (0xa803, 0xa805, 1), new Range16 (0xa807, 0xa80a, 1), new Range16 (0xa80c, 0xa822, 1), @@ -439,7 +444,8 @@ public static class Category { new Range16 (0xa882, 0xa8b3, 1), new Range16 (0xa8f2, 0xa8f7, 1), new Range16 (0xa8fb, 0xa8fd, 2), - new Range16 (0xa90a, 0xa925, 1), + new Range16 (0xa8fe, 0xa90a, 12), + new Range16 (0xa90b, 0xa925, 1), new Range16 (0xa930, 0xa946, 1), new Range16 (0xa960, 0xa97c, 1), new Range16 (0xa984, 0xa9b2, 1), @@ -466,7 +472,7 @@ public static class Category { new Range16 (0xab20, 0xab26, 1), new Range16 (0xab28, 0xab2e, 1), new Range16 (0xab30, 0xab5a, 1), - new Range16 (0xab5c, 0xab65, 1), + new Range16 (0xab5c, 0xab69, 1), new Range16 (0xab70, 0xabe2, 1), new Range16 (0xac00, 0xd7a3, 1), new Range16 (0xd7b0, 0xd7c6, 1), @@ -508,7 +514,7 @@ public static class Category { new Range32 (0x10280, 0x1029c, 1), new Range32 (0x102a0, 0x102d0, 1), new Range32 (0x10300, 0x1031f, 1), - new Range32 (0x10330, 0x10340, 1), + new Range32 (0x1032d, 0x10340, 1), new Range32 (0x10342, 0x10349, 1), new Range32 (0x10350, 0x10375, 1), new Range32 (0x10380, 0x1039d, 1), @@ -519,9 +525,20 @@ public static class Category { new Range32 (0x104d8, 0x104fb, 1), new Range32 (0x10500, 0x10527, 1), new Range32 (0x10530, 0x10563, 1), + new Range32 (0x10570, 0x1057a, 1), + new Range32 (0x1057c, 0x1058a, 1), + new Range32 (0x1058c, 0x10592, 1), + new Range32 (0x10594, 0x10595, 1), + new Range32 (0x10597, 0x105a1, 1), + new Range32 (0x105a3, 0x105b1, 1), + new Range32 (0x105b3, 0x105b9, 1), + new Range32 (0x105bb, 0x105bc, 1), new Range32 (0x10600, 0x10736, 1), new Range32 (0x10740, 0x10755, 1), new Range32 (0x10760, 0x10767, 1), + new Range32 (0x10780, 0x10785, 1), + new Range32 (0x10787, 0x107b0, 1), + new Range32 (0x107b2, 0x107ba, 1), new Range32 (0x10800, 0x10805, 1), new Range32 (0x10808, 0x1080a, 2), new Range32 (0x1080b, 0x10835, 1), @@ -539,7 +556,7 @@ public static class Category { new Range32 (0x10a00, 0x10a10, 16), new Range32 (0x10a11, 0x10a13, 1), new Range32 (0x10a15, 0x10a17, 1), - new Range32 (0x10a19, 0x10a33, 1), + new Range32 (0x10a19, 0x10a35, 1), new Range32 (0x10a60, 0x10a7c, 1), new Range32 (0x10a80, 0x10a9c, 1), new Range32 (0x10ac0, 0x10ac7, 1), @@ -551,10 +568,22 @@ public static class Category { new Range32 (0x10c00, 0x10c48, 1), new Range32 (0x10c80, 0x10cb2, 1), new Range32 (0x10cc0, 0x10cf2, 1), + new Range32 (0x10d00, 0x10d23, 1), + new Range32 (0x10e80, 0x10ea9, 1), + new Range32 (0x10eb0, 0x10eb1, 1), + new Range32 (0x10f00, 0x10f1c, 1), + new Range32 (0x10f27, 0x10f30, 9), + new Range32 (0x10f31, 0x10f45, 1), + new Range32 (0x10f70, 0x10f81, 1), + new Range32 (0x10fb0, 0x10fc4, 1), + new Range32 (0x10fe0, 0x10ff6, 1), new Range32 (0x11003, 0x11037, 1), - new Range32 (0x11083, 0x110af, 1), + new Range32 (0x11071, 0x11072, 1), + new Range32 (0x11075, 0x11083, 14), + new Range32 (0x11084, 0x110af, 1), new Range32 (0x110d0, 0x110e8, 1), new Range32 (0x11103, 0x11126, 1), + new Range32 (0x11144, 0x11147, 3), new Range32 (0x11150, 0x11172, 1), new Range32 (0x11176, 0x11183, 13), new Range32 (0x11184, 0x111b2, 1), @@ -578,6 +607,7 @@ public static class Category { new Range32 (0x1135d, 0x11361, 1), new Range32 (0x11400, 0x11434, 1), new Range32 (0x11447, 0x1144a, 1), + new Range32 (0x1145f, 0x11461, 1), new Range32 (0x11480, 0x114af, 1), new Range32 (0x114c4, 0x114c5, 1), new Range32 (0x114c7, 0x11580, 185), @@ -586,32 +616,69 @@ public static class Category { new Range32 (0x11600, 0x1162f, 1), new Range32 (0x11644, 0x11680, 60), new Range32 (0x11681, 0x116aa, 1), - new Range32 (0x11700, 0x11719, 1), + new Range32 (0x116b8, 0x11700, 72), + new Range32 (0x11701, 0x1171a, 1), + new Range32 (0x11740, 0x11746, 1), + new Range32 (0x11800, 0x1182b, 1), new Range32 (0x118a0, 0x118df, 1), - new Range32 (0x118ff, 0x11ac0, 449), - new Range32 (0x11ac1, 0x11af8, 1), + new Range32 (0x118ff, 0x11906, 1), + new Range32 (0x11909, 0x1190c, 3), + new Range32 (0x1190d, 0x11913, 1), + new Range32 (0x11915, 0x11916, 1), + new Range32 (0x11918, 0x1192f, 1), + new Range32 (0x1193f, 0x11941, 2), + new Range32 (0x119a0, 0x119a7, 1), + new Range32 (0x119aa, 0x119d0, 1), + new Range32 (0x119e1, 0x119e3, 2), + new Range32 (0x11a00, 0x11a0b, 11), + new Range32 (0x11a0c, 0x11a32, 1), + new Range32 (0x11a3a, 0x11a50, 22), + new Range32 (0x11a5c, 0x11a89, 1), + new Range32 (0x11a9d, 0x11ab0, 19), + new Range32 (0x11ab1, 0x11af8, 1), new Range32 (0x11c00, 0x11c08, 1), new Range32 (0x11c0a, 0x11c2e, 1), new Range32 (0x11c40, 0x11c72, 50), new Range32 (0x11c73, 0x11c8f, 1), - new Range32 (0x12000, 0x12399, 1), + new Range32 (0x11d00, 0x11d06, 1), + new Range32 (0x11d08, 0x11d09, 1), + new Range32 (0x11d0b, 0x11d30, 1), + new Range32 (0x11d46, 0x11d60, 26), + new Range32 (0x11d61, 0x11d65, 1), + new Range32 (0x11d67, 0x11d68, 1), + new Range32 (0x11d6a, 0x11d89, 1), + new Range32 (0x11d98, 0x11ee0, 328), + new Range32 (0x11ee1, 0x11ef2, 1), + new Range32 (0x11fb0, 0x12000, 80), + new Range32 (0x12001, 0x12399, 1), new Range32 (0x12480, 0x12543, 1), + new Range32 (0x12f90, 0x12ff0, 1), new Range32 (0x13000, 0x1342e, 1), new Range32 (0x14400, 0x14646, 1), new Range32 (0x16800, 0x16a38, 1), new Range32 (0x16a40, 0x16a5e, 1), + new Range32 (0x16a70, 0x16abe, 1), new Range32 (0x16ad0, 0x16aed, 1), new Range32 (0x16b00, 0x16b2f, 1), new Range32 (0x16b40, 0x16b43, 1), new Range32 (0x16b63, 0x16b77, 1), new Range32 (0x16b7d, 0x16b8f, 1), - new Range32 (0x16f00, 0x16f44, 1), + new Range32 (0x16e40, 0x16e7f, 1), + new Range32 (0x16f00, 0x16f4a, 1), new Range32 (0x16f50, 0x16f93, 67), new Range32 (0x16f94, 0x16f9f, 1), - new Range32 (0x16fe0, 0x17000, 32), - new Range32 (0x17001, 0x187ec, 1), - new Range32 (0x18800, 0x18af2, 1), - new Range32 (0x1b000, 0x1b001, 1), + new Range32 (0x16fe0, 0x16fe1, 1), + new Range32 (0x16fe3, 0x17000, 29), + new Range32 (0x17001, 0x187f7, 1), + new Range32 (0x18800, 0x18cd5, 1), + new Range32 (0x18d00, 0x18d08, 1), + new Range32 (0x1aff0, 0x1aff3, 1), + new Range32 (0x1aff5, 0x1affb, 1), + new Range32 (0x1affd, 0x1affe, 1), + new Range32 (0x1b000, 0x1b122, 1), + new Range32 (0x1b150, 0x1b152, 1), + new Range32 (0x1b164, 0x1b167, 1), + new Range32 (0x1b170, 0x1b2fb, 1), new Range32 (0x1bc00, 0x1bc6a, 1), new Range32 (0x1bc70, 0x1bc7c, 1), new Range32 (0x1bc80, 0x1bc88, 1), @@ -646,9 +713,20 @@ public static class Category { new Range32 (0x1d78a, 0x1d7a8, 1), new Range32 (0x1d7aa, 0x1d7c2, 1), new Range32 (0x1d7c4, 0x1d7cb, 1), + new Range32 (0x1df00, 0x1df1e, 1), + new Range32 (0x1e100, 0x1e12c, 1), + new Range32 (0x1e137, 0x1e13d, 1), + new Range32 (0x1e14e, 0x1e290, 322), + new Range32 (0x1e291, 0x1e2ad, 1), + new Range32 (0x1e2c0, 0x1e2eb, 1), + new Range32 (0x1e7e0, 0x1e7e6, 1), + new Range32 (0x1e7e8, 0x1e7eb, 1), + new Range32 (0x1e7ed, 0x1e7ee, 1), + new Range32 (0x1e7f0, 0x1e7fe, 1), new Range32 (0x1e800, 0x1e8c4, 1), new Range32 (0x1e900, 0x1e943, 1), - new Range32 (0x1ee00, 0x1ee03, 1), + new Range32 (0x1e94b, 0x1ee00, 1205), + new Range32 (0x1ee01, 0x1ee03, 1), new Range32 (0x1ee05, 0x1ee1f, 1), new Range32 (0x1ee21, 0x1ee22, 1), new Range32 (0x1ee24, 0x1ee27, 3), @@ -672,11 +750,13 @@ public static class Category { new Range32 (0x1eea1, 0x1eea3, 1), new Range32 (0x1eea5, 0x1eea9, 1), new Range32 (0x1eeab, 0x1eebb, 1), - new Range32 (0x20000, 0x2a6d6, 1), - new Range32 (0x2a700, 0x2b734, 1), + new Range32 (0x20000, 0x2a6df, 1), + new Range32 (0x2a700, 0x2b738, 1), new Range32 (0x2b740, 0x2b81d, 1), new Range32 (0x2b820, 0x2cea1, 1), + new Range32 (0x2ceb0, 0x2ebe0, 1), new Range32 (0x2f800, 0x2fa1d, 1), + new Range32 (0x30000, 0x3134a, 1), }, latinOffset: 6 ); @@ -733,7 +813,9 @@ public static class Category { new Range16 (0x048b, 0x04bf, 2), new Range16 (0x04c2, 0x04ce, 2), new Range16 (0x04cf, 0x052f, 2), - new Range16 (0x0561, 0x0587, 1), + new Range16 (0x0560, 0x0588, 1), + new Range16 (0x10d0, 0x10fa, 1), + new Range16 (0x10fd, 0x10ff, 1), new Range16 (0x13f8, 0x13fd, 1), new Range16 (0x1c80, 0x1c88, 1), new Range16 (0x1d00, 0x1d2b, 1), @@ -769,7 +851,7 @@ public static class Category { new Range16 (0x213c, 0x213d, 1), new Range16 (0x2146, 0x2149, 1), new Range16 (0x214e, 0x2184, 54), - new Range16 (0x2c30, 0x2c5e, 1), + new Range16 (0x2c30, 0x2c5f, 1), new Range16 (0x2c61, 0x2c65, 4), new Range16 (0x2c66, 0x2c6c, 2), new Range16 (0x2c71, 0x2c73, 2), @@ -792,10 +874,13 @@ public static class Category { new Range16 (0xa791, 0xa793, 2), new Range16 (0xa794, 0xa795, 1), new Range16 (0xa797, 0xa7a9, 2), - new Range16 (0xa7b5, 0xa7b7, 2), - new Range16 (0xa7fa, 0xab30, 822), - new Range16 (0xab31, 0xab5a, 1), - new Range16 (0xab60, 0xab65, 1), + new Range16 (0xa7af, 0xa7b5, 6), + new Range16 (0xa7b7, 0xa7c3, 2), + new Range16 (0xa7c8, 0xa7ca, 2), + new Range16 (0xa7d1, 0xa7d9, 2), + new Range16 (0xa7f6, 0xa7fa, 4), + new Range16 (0xab30, 0xab5a, 1), + new Range16 (0xab60, 0xab68, 1), new Range16 (0xab70, 0xabbf, 1), new Range16 (0xfb00, 0xfb06, 1), new Range16 (0xfb13, 0xfb17, 1), @@ -804,8 +889,13 @@ public static class Category { r32: new Range32 [] { new Range32 (0x10428, 0x1044f, 1), new Range32 (0x104d8, 0x104fb, 1), + new Range32 (0x10597, 0x105a1, 1), + new Range32 (0x105a3, 0x105b1, 1), + new Range32 (0x105b3, 0x105b9, 1), + new Range32 (0x105bb, 0x105bc, 1), new Range32 (0x10cc0, 0x10cf2, 1), new Range32 (0x118c0, 0x118df, 1), + new Range32 (0x16e60, 0x16e7f, 1), new Range32 (0x1d41a, 0x1d433, 1), new Range32 (0x1d44e, 0x1d454, 1), new Range32 (0x1d456, 0x1d467, 1), @@ -833,8 +923,10 @@ public static class Category { new Range32 (0x1d78a, 0x1d78f, 1), new Range32 (0x1d7aa, 0x1d7c2, 1), new Range32 (0x1d7c4, 0x1d7c9, 1), - new Range32 (0x1d7cb, 0x1e922, 4439), - new Range32 (0x1e923, 0x1e943, 1), + new Range32 (0x1d7cb, 0x1df00, 1845), + new Range32 (0x1df01, 0x1df09, 1), + new Range32 (0x1df0b, 0x1df1e, 1), + new Range32 (0x1e922, 0x1e943, 1), }, latinOffset: 4 ); @@ -851,11 +943,11 @@ public static class Category { new Range16 (0x07f4, 0x07f5, 1), new Range16 (0x07fa, 0x081a, 32), new Range16 (0x0824, 0x0828, 4), - new Range16 (0x0971, 0x0e46, 1237), - new Range16 (0x0ec6, 0x10fc, 566), - new Range16 (0x17d7, 0x1843, 108), - new Range16 (0x1aa7, 0x1c78, 465), - new Range16 (0x1c79, 0x1c7d, 1), + new Range16 (0x08c9, 0x0971, 168), + new Range16 (0x0e46, 0x0ec6, 128), + new Range16 (0x10fc, 0x17d7, 1755), + new Range16 (0x1843, 0x1aa7, 612), + new Range16 (0x1c78, 0x1c7d, 1), new Range16 (0x1d2c, 0x1d6a, 1), new Range16 (0x1d78, 0x1d9b, 35), new Range16 (0x1d9c, 0x1dbf, 1), @@ -874,19 +966,28 @@ public static class Category { new Range16 (0xa69c, 0xa69d, 1), new Range16 (0xa717, 0xa71f, 1), new Range16 (0xa770, 0xa788, 24), + new Range16 (0xa7f2, 0xa7f4, 1), new Range16 (0xa7f8, 0xa7f9, 1), new Range16 (0xa9cf, 0xa9e6, 23), new Range16 (0xaa70, 0xaadd, 109), new Range16 (0xaaf3, 0xaaf4, 1), new Range16 (0xab5c, 0xab5f, 1), - new Range16 (0xff70, 0xff9e, 46), - new Range16 (0xff9f, 0xff9f, 1), + new Range16 (0xab69, 0xff70, 21511), + new Range16 (0xff9e, 0xff9f, 1), }, r32: new Range32 [] { - new Range32 (0x16b40, 0x16b40, 1), - new Range32 (0x16b41, 0x16b43, 1), + new Range32 (0x10780, 0x10785, 1), + new Range32 (0x10787, 0x107b0, 1), + new Range32 (0x107b2, 0x107ba, 1), + new Range32 (0x16b40, 0x16b43, 1), new Range32 (0x16f93, 0x16f9f, 1), - new Range32 (0x16fe0, 0x16fe0, 1), + new Range32 (0x16fe0, 0x16fe1, 1), + new Range32 (0x16fe3, 0x1aff0, 16397), + new Range32 (0x1aff1, 0x1aff3, 1), + new Range32 (0x1aff5, 0x1affb, 1), + new Range32 (0x1affd, 0x1affe, 1), + new Range32 (0x1e137, 0x1e13d, 1), + new Range32 (0x1e94b, 0x1e94b, 1), } ); @@ -897,7 +998,7 @@ public static class Category { new Range16 (0x01c1, 0x01c3, 1), new Range16 (0x0294, 0x05d0, 828), new Range16 (0x05d1, 0x05ea, 1), - new Range16 (0x05f0, 0x05f2, 1), + new Range16 (0x05ef, 0x05f2, 1), new Range16 (0x0620, 0x063f, 1), new Range16 (0x0641, 0x064a, 1), new Range16 (0x066e, 0x066f, 1), @@ -912,8 +1013,10 @@ public static class Category { new Range16 (0x07cb, 0x07ea, 1), new Range16 (0x0800, 0x0815, 1), new Range16 (0x0840, 0x0858, 1), - new Range16 (0x08a0, 0x08b4, 1), - new Range16 (0x08b6, 0x08bd, 1), + new Range16 (0x0860, 0x086a, 1), + new Range16 (0x0870, 0x0887, 1), + new Range16 (0x0889, 0x088e, 1), + new Range16 (0x08a0, 0x08c8, 1), new Range16 (0x0904, 0x0939, 1), new Range16 (0x093d, 0x0950, 19), new Range16 (0x0958, 0x0961, 1), @@ -928,7 +1031,8 @@ public static class Category { new Range16 (0x09dc, 0x09dd, 1), new Range16 (0x09df, 0x09e1, 1), new Range16 (0x09f0, 0x09f1, 1), - new Range16 (0x0a05, 0x0a0a, 1), + new Range16 (0x09fc, 0x0a05, 9), + new Range16 (0x0a06, 0x0a0a, 1), new Range16 (0x0a0f, 0x0a10, 1), new Range16 (0x0a13, 0x0a28, 1), new Range16 (0x0a2a, 0x0a30, 1), @@ -973,16 +1077,17 @@ public static class Category { new Range16 (0x0c2a, 0x0c39, 1), new Range16 (0x0c3d, 0x0c58, 27), new Range16 (0x0c59, 0x0c5a, 1), - new Range16 (0x0c60, 0x0c61, 1), - new Range16 (0x0c80, 0x0c85, 5), - new Range16 (0x0c86, 0x0c8c, 1), + new Range16 (0x0c5d, 0x0c60, 3), + new Range16 (0x0c61, 0x0c80, 31), + new Range16 (0x0c85, 0x0c8c, 1), new Range16 (0x0c8e, 0x0c90, 1), new Range16 (0x0c92, 0x0ca8, 1), new Range16 (0x0caa, 0x0cb3, 1), new Range16 (0x0cb5, 0x0cb9, 1), - new Range16 (0x0cbd, 0x0cde, 33), - new Range16 (0x0ce0, 0x0ce1, 1), - new Range16 (0x0cf1, 0x0cf2, 1), + new Range16 (0x0cbd, 0x0cdd, 32), + new Range16 (0x0cde, 0x0ce0, 2), + new Range16 (0x0ce1, 0x0cf1, 16), + new Range16 (0x0cf2, 0x0d04, 18), new Range16 (0x0d05, 0x0d0c, 1), new Range16 (0x0d0e, 0x0d10, 1), new Range16 (0x0d12, 0x0d3a, 1), @@ -999,15 +1104,11 @@ public static class Category { new Range16 (0x0e32, 0x0e33, 1), new Range16 (0x0e40, 0x0e45, 1), new Range16 (0x0e81, 0x0e82, 1), - new Range16 (0x0e84, 0x0e87, 3), - new Range16 (0x0e88, 0x0e8a, 2), - new Range16 (0x0e8d, 0x0e94, 7), - new Range16 (0x0e95, 0x0e97, 1), - new Range16 (0x0e99, 0x0e9f, 1), - new Range16 (0x0ea1, 0x0ea3, 1), + new Range16 (0x0e84, 0x0e86, 2), + new Range16 (0x0e87, 0x0e8a, 1), + new Range16 (0x0e8c, 0x0ea3, 1), new Range16 (0x0ea5, 0x0ea7, 2), - new Range16 (0x0eaa, 0x0eab, 1), - new Range16 (0x0ead, 0x0eb0, 1), + new Range16 (0x0ea8, 0x0eb0, 1), new Range16 (0x0eb2, 0x0eb3, 1), new Range16 (0x0ebd, 0x0ec0, 3), new Range16 (0x0ec1, 0x0ec4, 1), @@ -1024,9 +1125,8 @@ public static class Category { new Range16 (0x1066, 0x106e, 8), new Range16 (0x106f, 0x1070, 1), new Range16 (0x1075, 0x1081, 1), - new Range16 (0x108e, 0x10d0, 66), - new Range16 (0x10d1, 0x10fa, 1), - new Range16 (0x10fd, 0x1248, 1), + new Range16 (0x108e, 0x1100, 114), + new Range16 (0x1101, 0x1248, 1), new Range16 (0x124a, 0x124d, 1), new Range16 (0x1250, 0x1256, 1), new Range16 (0x1258, 0x125a, 2), @@ -1048,16 +1148,15 @@ public static class Category { new Range16 (0x1681, 0x169a, 1), new Range16 (0x16a0, 0x16ea, 1), new Range16 (0x16f1, 0x16f8, 1), - new Range16 (0x1700, 0x170c, 1), - new Range16 (0x170e, 0x1711, 1), - new Range16 (0x1720, 0x1731, 1), + new Range16 (0x1700, 0x1711, 1), + new Range16 (0x171f, 0x1731, 1), new Range16 (0x1740, 0x1751, 1), new Range16 (0x1760, 0x176c, 1), new Range16 (0x176e, 0x1770, 1), new Range16 (0x1780, 0x17b3, 1), new Range16 (0x17dc, 0x1820, 68), new Range16 (0x1821, 0x1842, 1), - new Range16 (0x1844, 0x1877, 1), + new Range16 (0x1844, 0x1878, 1), new Range16 (0x1880, 0x1884, 1), new Range16 (0x1887, 0x18a8, 1), new Range16 (0x18aa, 0x18b0, 6), @@ -1070,7 +1169,7 @@ public static class Category { new Range16 (0x1a00, 0x1a16, 1), new Range16 (0x1a20, 0x1a54, 1), new Range16 (0x1b05, 0x1b33, 1), - new Range16 (0x1b45, 0x1b4b, 1), + new Range16 (0x1b45, 0x1b4c, 1), new Range16 (0x1b83, 0x1ba0, 1), new Range16 (0x1bae, 0x1baf, 1), new Range16 (0x1bba, 0x1be5, 1), @@ -1078,9 +1177,10 @@ public static class Category { new Range16 (0x1c4d, 0x1c4f, 1), new Range16 (0x1c5a, 0x1c77, 1), new Range16 (0x1ce9, 0x1cec, 1), - new Range16 (0x1cee, 0x1cf1, 1), + new Range16 (0x1cee, 0x1cf3, 1), new Range16 (0x1cf5, 0x1cf6, 1), - new Range16 (0x2135, 0x2138, 1), + new Range16 (0x1cfa, 0x2135, 1083), + new Range16 (0x2136, 0x2138, 1), new Range16 (0x2d30, 0x2d67, 1), new Range16 (0x2d80, 0x2d96, 1), new Range16 (0x2da0, 0x2da6, 1), @@ -1096,13 +1196,12 @@ public static class Category { new Range16 (0x309f, 0x30a1, 2), new Range16 (0x30a2, 0x30fa, 1), new Range16 (0x30ff, 0x3105, 6), - new Range16 (0x3106, 0x312d, 1), + new Range16 (0x3106, 0x312f, 1), new Range16 (0x3131, 0x318e, 1), - new Range16 (0x31a0, 0x31ba, 1), + new Range16 (0x31a0, 0x31bf, 1), new Range16 (0x31f0, 0x31ff, 1), - new Range16 (0x3400, 0x4db5, 1), - new Range16 (0x4e00, 0x9fd5, 1), - new Range16 (0xa000, 0xa014, 1), + new Range16 (0x3400, 0x4dbf, 1), + new Range16 (0x4e00, 0xa014, 1), new Range16 (0xa016, 0xa48c, 1), new Range16 (0xa4d0, 0xa4f7, 1), new Range16 (0xa500, 0xa60b, 1), @@ -1119,7 +1218,8 @@ public static class Category { new Range16 (0xa882, 0xa8b3, 1), new Range16 (0xa8f2, 0xa8f7, 1), new Range16 (0xa8fb, 0xa8fd, 2), - new Range16 (0xa90a, 0xa925, 1), + new Range16 (0xa8fe, 0xa90a, 12), + new Range16 (0xa90b, 0xa925, 1), new Range16 (0xa930, 0xa946, 1), new Range16 (0xa960, 0xa97c, 1), new Range16 (0xa984, 0xa9b2, 1), @@ -1184,7 +1284,7 @@ public static class Category { new Range32 (0x10280, 0x1029c, 1), new Range32 (0x102a0, 0x102d0, 1), new Range32 (0x10300, 0x1031f, 1), - new Range32 (0x10330, 0x10340, 1), + new Range32 (0x1032d, 0x10340, 1), new Range32 (0x10342, 0x10349, 1), new Range32 (0x10350, 0x10375, 1), new Range32 (0x10380, 0x1039d, 1), @@ -1213,7 +1313,7 @@ public static class Category { new Range32 (0x10a00, 0x10a10, 16), new Range32 (0x10a11, 0x10a13, 1), new Range32 (0x10a15, 0x10a17, 1), - new Range32 (0x10a19, 0x10a33, 1), + new Range32 (0x10a19, 0x10a35, 1), new Range32 (0x10a60, 0x10a7c, 1), new Range32 (0x10a80, 0x10a9c, 1), new Range32 (0x10ac0, 0x10ac7, 1), @@ -1223,10 +1323,22 @@ public static class Category { new Range32 (0x10b60, 0x10b72, 1), new Range32 (0x10b80, 0x10b91, 1), new Range32 (0x10c00, 0x10c48, 1), + new Range32 (0x10d00, 0x10d23, 1), + new Range32 (0x10e80, 0x10ea9, 1), + new Range32 (0x10eb0, 0x10eb1, 1), + new Range32 (0x10f00, 0x10f1c, 1), + new Range32 (0x10f27, 0x10f30, 9), + new Range32 (0x10f31, 0x10f45, 1), + new Range32 (0x10f70, 0x10f81, 1), + new Range32 (0x10fb0, 0x10fc4, 1), + new Range32 (0x10fe0, 0x10ff6, 1), new Range32 (0x11003, 0x11037, 1), - new Range32 (0x11083, 0x110af, 1), + new Range32 (0x11071, 0x11072, 1), + new Range32 (0x11075, 0x11083, 14), + new Range32 (0x11084, 0x110af, 1), new Range32 (0x110d0, 0x110e8, 1), new Range32 (0x11103, 0x11126, 1), + new Range32 (0x11144, 0x11147, 3), new Range32 (0x11150, 0x11172, 1), new Range32 (0x11176, 0x11183, 13), new Range32 (0x11184, 0x111b2, 1), @@ -1250,6 +1362,7 @@ public static class Category { new Range32 (0x1135d, 0x11361, 1), new Range32 (0x11400, 0x11434, 1), new Range32 (0x11447, 0x1144a, 1), + new Range32 (0x1145f, 0x11461, 1), new Range32 (0x11480, 0x114af, 1), new Range32 (0x114c4, 0x114c5, 1), new Range32 (0x114c7, 0x11580, 185), @@ -1258,32 +1371,73 @@ public static class Category { new Range32 (0x11600, 0x1162f, 1), new Range32 (0x11644, 0x11680, 60), new Range32 (0x11681, 0x116aa, 1), - new Range32 (0x11700, 0x11719, 1), - new Range32 (0x118ff, 0x11ac0, 449), - new Range32 (0x11ac1, 0x11af8, 1), + new Range32 (0x116b8, 0x11700, 72), + new Range32 (0x11701, 0x1171a, 1), + new Range32 (0x11740, 0x11746, 1), + new Range32 (0x11800, 0x1182b, 1), + new Range32 (0x118ff, 0x11906, 1), + new Range32 (0x11909, 0x1190c, 3), + new Range32 (0x1190d, 0x11913, 1), + new Range32 (0x11915, 0x11916, 1), + new Range32 (0x11918, 0x1192f, 1), + new Range32 (0x1193f, 0x11941, 2), + new Range32 (0x119a0, 0x119a7, 1), + new Range32 (0x119aa, 0x119d0, 1), + new Range32 (0x119e1, 0x119e3, 2), + new Range32 (0x11a00, 0x11a0b, 11), + new Range32 (0x11a0c, 0x11a32, 1), + new Range32 (0x11a3a, 0x11a50, 22), + new Range32 (0x11a5c, 0x11a89, 1), + new Range32 (0x11a9d, 0x11ab0, 19), + new Range32 (0x11ab1, 0x11af8, 1), new Range32 (0x11c00, 0x11c08, 1), new Range32 (0x11c0a, 0x11c2e, 1), new Range32 (0x11c40, 0x11c72, 50), new Range32 (0x11c73, 0x11c8f, 1), - new Range32 (0x12000, 0x12399, 1), + new Range32 (0x11d00, 0x11d06, 1), + new Range32 (0x11d08, 0x11d09, 1), + new Range32 (0x11d0b, 0x11d30, 1), + new Range32 (0x11d46, 0x11d60, 26), + new Range32 (0x11d61, 0x11d65, 1), + new Range32 (0x11d67, 0x11d68, 1), + new Range32 (0x11d6a, 0x11d89, 1), + new Range32 (0x11d98, 0x11ee0, 328), + new Range32 (0x11ee1, 0x11ef2, 1), + new Range32 (0x11fb0, 0x12000, 80), + new Range32 (0x12001, 0x12399, 1), new Range32 (0x12480, 0x12543, 1), + new Range32 (0x12f90, 0x12ff0, 1), new Range32 (0x13000, 0x1342e, 1), new Range32 (0x14400, 0x14646, 1), new Range32 (0x16800, 0x16a38, 1), new Range32 (0x16a40, 0x16a5e, 1), + new Range32 (0x16a70, 0x16abe, 1), new Range32 (0x16ad0, 0x16aed, 1), new Range32 (0x16b00, 0x16b2f, 1), new Range32 (0x16b63, 0x16b77, 1), new Range32 (0x16b7d, 0x16b8f, 1), - new Range32 (0x16f00, 0x16f44, 1), + new Range32 (0x16f00, 0x16f4a, 1), new Range32 (0x16f50, 0x17000, 176), - new Range32 (0x17001, 0x187ec, 1), - new Range32 (0x18800, 0x18af2, 1), - new Range32 (0x1b000, 0x1b001, 1), + new Range32 (0x17001, 0x187f7, 1), + new Range32 (0x18800, 0x18cd5, 1), + new Range32 (0x18d00, 0x18d08, 1), + new Range32 (0x1b000, 0x1b122, 1), + new Range32 (0x1b150, 0x1b152, 1), + new Range32 (0x1b164, 0x1b167, 1), + new Range32 (0x1b170, 0x1b2fb, 1), new Range32 (0x1bc00, 0x1bc6a, 1), new Range32 (0x1bc70, 0x1bc7c, 1), new Range32 (0x1bc80, 0x1bc88, 1), new Range32 (0x1bc90, 0x1bc99, 1), + new Range32 (0x1df0a, 0x1e100, 502), + new Range32 (0x1e101, 0x1e12c, 1), + new Range32 (0x1e14e, 0x1e290, 322), + new Range32 (0x1e291, 0x1e2ad, 1), + new Range32 (0x1e2c0, 0x1e2eb, 1), + new Range32 (0x1e7e0, 0x1e7e6, 1), + new Range32 (0x1e7e8, 0x1e7eb, 1), + new Range32 (0x1e7ed, 0x1e7ee, 1), + new Range32 (0x1e7f0, 0x1e7fe, 1), new Range32 (0x1e800, 0x1e8c4, 1), new Range32 (0x1ee00, 0x1ee03, 1), new Range32 (0x1ee05, 0x1ee1f, 1), @@ -1309,11 +1463,13 @@ public static class Category { new Range32 (0x1eea1, 0x1eea3, 1), new Range32 (0x1eea5, 0x1eea9, 1), new Range32 (0x1eeab, 0x1eebb, 1), - new Range32 (0x20000, 0x2a6d6, 1), - new Range32 (0x2a700, 0x2b734, 1), + new Range32 (0x20000, 0x2a6df, 1), + new Range32 (0x2a700, 0x2b738, 1), new Range32 (0x2b740, 0x2b81d, 1), new Range32 (0x2b820, 0x2cea1, 1), + new Range32 (0x2ceb0, 0x2ebe0, 1), new Range32 (0x2f800, 0x2fa1d, 1), + new Range32 (0x30000, 0x3134a, 1), }, latinOffset: 1 ); @@ -1388,6 +1544,8 @@ public static class Category { new Range16 (0x10a0, 0x10c5, 1), new Range16 (0x10c7, 0x10cd, 6), new Range16 (0x13a0, 0x13f5, 1), + new Range16 (0x1c90, 0x1cba, 1), + new Range16 (0x1cbd, 0x1cbf, 1), new Range16 (0x1e00, 0x1e94, 2), new Range16 (0x1e9e, 0x1efe, 2), new Range16 (0x1f08, 0x1f0f, 1), @@ -1412,7 +1570,7 @@ public static class Category { new Range16 (0x2130, 0x2133, 1), new Range16 (0x213e, 0x213f, 1), new Range16 (0x2145, 0x2183, 62), - new Range16 (0x2c00, 0x2c2e, 1), + new Range16 (0x2c00, 0x2c2f, 1), new Range16 (0x2c60, 0x2c62, 2), new Range16 (0x2c63, 0x2c64, 1), new Range16 (0x2c67, 0x2c6d, 2), @@ -1433,14 +1591,23 @@ public static class Category { new Range16 (0xa796, 0xa7aa, 2), new Range16 (0xa7ab, 0xa7ae, 1), new Range16 (0xa7b0, 0xa7b4, 1), - new Range16 (0xa7b6, 0xff21, 22379), + new Range16 (0xa7b6, 0xa7c4, 2), + new Range16 (0xa7c5, 0xa7c7, 1), + new Range16 (0xa7c9, 0xa7d0, 7), + new Range16 (0xa7d6, 0xa7d8, 2), + new Range16 (0xa7f5, 0xff21, 22316), new Range16 (0xff22, 0xff3a, 1), }, r32: new Range32 [] { new Range32 (0x10400, 0x10427, 1), new Range32 (0x104b0, 0x104d3, 1), + new Range32 (0x10570, 0x1057a, 1), + new Range32 (0x1057c, 0x1058a, 1), + new Range32 (0x1058c, 0x10592, 1), + new Range32 (0x10594, 0x10595, 1), new Range32 (0x10c80, 0x10cb2, 1), new Range32 (0x118a0, 0x118bf, 1), + new Range32 (0x16e40, 0x16e5f, 1), new Range32 (0x1d400, 0x1d419, 1), new Range32 (0x1d434, 0x1d44d, 1), new Range32 (0x1d468, 0x1d481, 1), @@ -1495,12 +1662,14 @@ public static class Category { new Range16 (0x0731, 0x074a, 1), new Range16 (0x07a6, 0x07b0, 1), new Range16 (0x07eb, 0x07f3, 1), - new Range16 (0x0816, 0x0819, 1), + new Range16 (0x07fd, 0x0816, 25), + new Range16 (0x0817, 0x0819, 1), new Range16 (0x081b, 0x0823, 1), new Range16 (0x0825, 0x0827, 1), new Range16 (0x0829, 0x082d, 1), new Range16 (0x0859, 0x085b, 1), - new Range16 (0x08d4, 0x08e1, 1), + new Range16 (0x0898, 0x089f, 1), + new Range16 (0x08ca, 0x08e1, 1), new Range16 (0x08e3, 0x0903, 1), new Range16 (0x093a, 0x093c, 1), new Range16 (0x093e, 0x094f, 1), @@ -1512,8 +1681,8 @@ public static class Category { new Range16 (0x09c7, 0x09c8, 1), new Range16 (0x09cb, 0x09cd, 1), new Range16 (0x09d7, 0x09e2, 11), - new Range16 (0x09e3, 0x0a01, 30), - new Range16 (0x0a02, 0x0a03, 1), + new Range16 (0x09e3, 0x09fe, 27), + new Range16 (0x0a01, 0x0a03, 1), new Range16 (0x0a3c, 0x0a3e, 2), new Range16 (0x0a3f, 0x0a42, 1), new Range16 (0x0a47, 0x0a48, 1), @@ -1526,20 +1695,22 @@ public static class Category { new Range16 (0x0ac7, 0x0ac9, 1), new Range16 (0x0acb, 0x0acd, 1), new Range16 (0x0ae2, 0x0ae3, 1), + new Range16 (0x0afa, 0x0aff, 1), new Range16 (0x0b01, 0x0b03, 1), new Range16 (0x0b3c, 0x0b3e, 2), new Range16 (0x0b3f, 0x0b44, 1), new Range16 (0x0b47, 0x0b48, 1), new Range16 (0x0b4b, 0x0b4d, 1), - new Range16 (0x0b56, 0x0b57, 1), + new Range16 (0x0b55, 0x0b57, 1), new Range16 (0x0b62, 0x0b63, 1), new Range16 (0x0b82, 0x0bbe, 60), new Range16 (0x0bbf, 0x0bc2, 1), new Range16 (0x0bc6, 0x0bc8, 1), new Range16 (0x0bca, 0x0bcd, 1), new Range16 (0x0bd7, 0x0c00, 41), - new Range16 (0x0c01, 0x0c03, 1), - new Range16 (0x0c3e, 0x0c44, 1), + new Range16 (0x0c01, 0x0c04, 1), + new Range16 (0x0c3c, 0x0c3e, 2), + new Range16 (0x0c3f, 0x0c44, 1), new Range16 (0x0c46, 0x0c48, 1), new Range16 (0x0c4a, 0x0c4d, 1), new Range16 (0x0c55, 0x0c56, 1), @@ -1551,14 +1722,16 @@ public static class Category { new Range16 (0x0cca, 0x0ccd, 1), new Range16 (0x0cd5, 0x0cd6, 1), new Range16 (0x0ce2, 0x0ce3, 1), - new Range16 (0x0d01, 0x0d03, 1), + new Range16 (0x0d00, 0x0d03, 1), + new Range16 (0x0d3b, 0x0d3c, 1), new Range16 (0x0d3e, 0x0d44, 1), new Range16 (0x0d46, 0x0d48, 1), new Range16 (0x0d4a, 0x0d4d, 1), new Range16 (0x0d57, 0x0d62, 11), - new Range16 (0x0d63, 0x0d82, 31), - new Range16 (0x0d83, 0x0dca, 71), - new Range16 (0x0dcf, 0x0dd4, 1), + new Range16 (0x0d63, 0x0d81, 30), + new Range16 (0x0d82, 0x0d83, 1), + new Range16 (0x0dca, 0x0dcf, 5), + new Range16 (0x0dd0, 0x0dd4, 1), new Range16 (0x0dd6, 0x0dd8, 2), new Range16 (0x0dd9, 0x0ddf, 1), new Range16 (0x0df2, 0x0df3, 1), @@ -1566,8 +1739,7 @@ public static class Category { new Range16 (0x0e35, 0x0e3a, 1), new Range16 (0x0e47, 0x0e4e, 1), new Range16 (0x0eb1, 0x0eb4, 3), - new Range16 (0x0eb5, 0x0eb9, 1), - new Range16 (0x0ebb, 0x0ebc, 1), + new Range16 (0x0eb5, 0x0ebc, 1), new Range16 (0x0ec8, 0x0ecd, 1), new Range16 (0x0f18, 0x0f19, 1), new Range16 (0x0f35, 0x0f39, 2), @@ -1587,22 +1759,22 @@ public static class Category { new Range16 (0x108f, 0x109a, 11), new Range16 (0x109b, 0x109d, 1), new Range16 (0x135d, 0x135f, 1), - new Range16 (0x1712, 0x1714, 1), + new Range16 (0x1712, 0x1715, 1), new Range16 (0x1732, 0x1734, 1), new Range16 (0x1752, 0x1753, 1), new Range16 (0x1772, 0x1773, 1), new Range16 (0x17b4, 0x17d3, 1), new Range16 (0x17dd, 0x180b, 46), new Range16 (0x180c, 0x180d, 1), - new Range16 (0x1885, 0x1886, 1), - new Range16 (0x18a9, 0x1920, 119), - new Range16 (0x1921, 0x192b, 1), + new Range16 (0x180f, 0x1885, 118), + new Range16 (0x1886, 0x18a9, 35), + new Range16 (0x1920, 0x192b, 1), new Range16 (0x1930, 0x193b, 1), new Range16 (0x1a17, 0x1a1b, 1), new Range16 (0x1a55, 0x1a5e, 1), new Range16 (0x1a60, 0x1a7c, 1), new Range16 (0x1a7f, 0x1ab0, 49), - new Range16 (0x1ab1, 0x1abe, 1), + new Range16 (0x1ab1, 0x1ace, 1), new Range16 (0x1b00, 0x1b04, 1), new Range16 (0x1b34, 0x1b44, 1), new Range16 (0x1b6b, 0x1b73, 1), @@ -1612,11 +1784,9 @@ public static class Category { new Range16 (0x1c24, 0x1c37, 1), new Range16 (0x1cd0, 0x1cd2, 1), new Range16 (0x1cd4, 0x1ce8, 1), - new Range16 (0x1ced, 0x1cf2, 5), - new Range16 (0x1cf3, 0x1cf4, 1), - new Range16 (0x1cf8, 0x1cf9, 1), - new Range16 (0x1dc0, 0x1df5, 1), - new Range16 (0x1dfb, 0x1dff, 1), + new Range16 (0x1ced, 0x1cf4, 7), + new Range16 (0x1cf7, 0x1cf9, 1), + new Range16 (0x1dc0, 0x1dff, 1), new Range16 (0x20d0, 0x20f0, 1), new Range16 (0x2cef, 0x2cf1, 1), new Range16 (0x2d7f, 0x2de0, 97), @@ -1630,10 +1800,12 @@ public static class Category { new Range16 (0xa802, 0xa806, 4), new Range16 (0xa80b, 0xa823, 24), new Range16 (0xa824, 0xa827, 1), - new Range16 (0xa880, 0xa881, 1), - new Range16 (0xa8b4, 0xa8c5, 1), + new Range16 (0xa82c, 0xa880, 84), + new Range16 (0xa881, 0xa8b4, 51), + new Range16 (0xa8b5, 0xa8c5, 1), new Range16 (0xa8e0, 0xa8f1, 1), - new Range16 (0xa926, 0xa92d, 1), + new Range16 (0xa8ff, 0xa926, 39), + new Range16 (0xa927, 0xa92d, 1), new Range16 (0xa947, 0xa953, 1), new Range16 (0xa980, 0xa983, 1), new Range16 (0xa9b3, 0xa9c0, 1), @@ -1663,23 +1835,32 @@ public static class Category { new Range32 (0x10a0c, 0x10a0f, 1), new Range32 (0x10a38, 0x10a3a, 1), new Range32 (0x10a3f, 0x10ae5, 166), - new Range32 (0x10ae6, 0x11000, 1306), - new Range32 (0x11001, 0x11002, 1), + new Range32 (0x10ae6, 0x10d24, 574), + new Range32 (0x10d25, 0x10d27, 1), + new Range32 (0x10eab, 0x10eac, 1), + new Range32 (0x10f46, 0x10f50, 1), + new Range32 (0x10f82, 0x10f85, 1), + new Range32 (0x11000, 0x11002, 1), new Range32 (0x11038, 0x11046, 1), - new Range32 (0x1107f, 0x11082, 1), + new Range32 (0x11070, 0x11073, 3), + new Range32 (0x11074, 0x1107f, 11), + new Range32 (0x11080, 0x11082, 1), new Range32 (0x110b0, 0x110ba, 1), - new Range32 (0x11100, 0x11102, 1), + new Range32 (0x110c2, 0x11100, 62), + new Range32 (0x11101, 0x11102, 1), new Range32 (0x11127, 0x11134, 1), + new Range32 (0x11145, 0x11146, 1), new Range32 (0x11173, 0x11180, 13), new Range32 (0x11181, 0x11182, 1), new Range32 (0x111b3, 0x111c0, 1), - new Range32 (0x111ca, 0x111cc, 1), + new Range32 (0x111c9, 0x111cc, 1), + new Range32 (0x111ce, 0x111cf, 1), new Range32 (0x1122c, 0x11237, 1), new Range32 (0x1123e, 0x112df, 161), new Range32 (0x112e0, 0x112ea, 1), new Range32 (0x11300, 0x11303, 1), - new Range32 (0x1133c, 0x1133e, 2), - new Range32 (0x1133f, 0x11344, 1), + new Range32 (0x1133b, 0x1133c, 1), + new Range32 (0x1133e, 0x11344, 1), new Range32 (0x11347, 0x11348, 1), new Range32 (0x1134b, 0x1134d, 1), new Range32 (0x11357, 0x11362, 11), @@ -1687,22 +1868,52 @@ public static class Category { new Range32 (0x11367, 0x1136c, 1), new Range32 (0x11370, 0x11374, 1), new Range32 (0x11435, 0x11446, 1), - new Range32 (0x114b0, 0x114c3, 1), + new Range32 (0x1145e, 0x114b0, 82), + new Range32 (0x114b1, 0x114c3, 1), new Range32 (0x115af, 0x115b5, 1), new Range32 (0x115b8, 0x115c0, 1), new Range32 (0x115dc, 0x115dd, 1), new Range32 (0x11630, 0x11640, 1), new Range32 (0x116ab, 0x116b7, 1), new Range32 (0x1171d, 0x1172b, 1), + new Range32 (0x1182c, 0x1183a, 1), + new Range32 (0x11930, 0x11935, 1), + new Range32 (0x11937, 0x11938, 1), + new Range32 (0x1193b, 0x1193e, 1), + new Range32 (0x11940, 0x11942, 2), + new Range32 (0x11943, 0x119d1, 142), + new Range32 (0x119d2, 0x119d7, 1), + new Range32 (0x119da, 0x119e0, 1), + new Range32 (0x119e4, 0x11a01, 29), + new Range32 (0x11a02, 0x11a0a, 1), + new Range32 (0x11a33, 0x11a39, 1), + new Range32 (0x11a3b, 0x11a3e, 1), + new Range32 (0x11a47, 0x11a51, 10), + new Range32 (0x11a52, 0x11a5b, 1), + new Range32 (0x11a8a, 0x11a99, 1), new Range32 (0x11c2f, 0x11c36, 1), new Range32 (0x11c38, 0x11c3f, 1), new Range32 (0x11c92, 0x11ca7, 1), new Range32 (0x11ca9, 0x11cb6, 1), + new Range32 (0x11d31, 0x11d36, 1), + new Range32 (0x11d3a, 0x11d3c, 2), + new Range32 (0x11d3d, 0x11d3f, 2), + new Range32 (0x11d40, 0x11d45, 1), + new Range32 (0x11d47, 0x11d8a, 67), + new Range32 (0x11d8b, 0x11d8e, 1), + new Range32 (0x11d90, 0x11d91, 1), + new Range32 (0x11d93, 0x11d97, 1), + new Range32 (0x11ef3, 0x11ef6, 1), new Range32 (0x16af0, 0x16af4, 1), new Range32 (0x16b30, 0x16b36, 1), - new Range32 (0x16f51, 0x16f7e, 1), + new Range32 (0x16f4f, 0x16f51, 2), + new Range32 (0x16f52, 0x16f87, 1), new Range32 (0x16f8f, 0x16f92, 1), - new Range32 (0x1bc9d, 0x1bc9e, 1), + new Range32 (0x16fe4, 0x16ff0, 12), + new Range32 (0x16ff1, 0x1bc9d, 19628), + new Range32 (0x1bc9e, 0x1cf00, 4706), + new Range32 (0x1cf01, 0x1cf2d, 1), + new Range32 (0x1cf30, 0x1cf46, 1), new Range32 (0x1d165, 0x1d169, 1), new Range32 (0x1d16d, 0x1d172, 1), new Range32 (0x1d17b, 0x1d182, 1), @@ -1719,6 +1930,9 @@ public static class Category { new Range32 (0x1e01b, 0x1e021, 1), new Range32 (0x1e023, 0x1e024, 1), new Range32 (0x1e026, 0x1e02a, 1), + new Range32 (0x1e130, 0x1e136, 1), + new Range32 (0x1e2ae, 0x1e2ec, 62), + new Range32 (0x1e2ed, 0x1e2ef, 1), new Range32 (0x1e8d0, 0x1e8d6, 1), new Range32 (0x1e944, 0x1e94a, 1), new Range32 (0xe0100, 0xe01ef, 1), @@ -1779,6 +1993,7 @@ public static class Category { new Range16 (0x1087, 0x108c, 1), new Range16 (0x108f, 0x109a, 11), new Range16 (0x109b, 0x109c, 1), + new Range16 (0x1715, 0x1734, 31), new Range16 (0x17b6, 0x17be, 8), new Range16 (0x17bf, 0x17c5, 1), new Range16 (0x17c7, 0x17c8, 1), @@ -1803,17 +2018,17 @@ public static class Category { new Range16 (0x1bf3, 0x1c24, 49), new Range16 (0x1c25, 0x1c2b, 1), new Range16 (0x1c34, 0x1c35, 1), - new Range16 (0x1ce1, 0x1cf2, 17), - new Range16 (0x1cf3, 0x302e, 4923), - new Range16 (0x302f, 0xa823, 30708), - new Range16 (0xa824, 0xa827, 3), - new Range16 (0xa880, 0xa881, 1), - new Range16 (0xa8b4, 0xa8c3, 1), + new Range16 (0x1ce1, 0x1cf7, 22), + new Range16 (0x302e, 0x302f, 1), + new Range16 (0xa823, 0xa824, 1), + new Range16 (0xa827, 0xa880, 89), + new Range16 (0xa881, 0xa8b4, 51), + new Range16 (0xa8b5, 0xa8c3, 1), new Range16 (0xa952, 0xa953, 1), new Range16 (0xa983, 0xa9b4, 49), new Range16 (0xa9b5, 0xa9ba, 5), - new Range16 (0xa9bb, 0xa9bd, 2), - new Range16 (0xa9be, 0xa9c0, 1), + new Range16 (0xa9bb, 0xa9be, 3), + new Range16 (0xa9bf, 0xa9c0, 1), new Range16 (0xaa2f, 0xaa30, 1), new Range16 (0xaa33, 0xaa34, 1), new Range16 (0xaa4d, 0xaa7b, 46), @@ -1829,10 +2044,12 @@ public static class Category { new Range32 (0x11082, 0x110b0, 46), new Range32 (0x110b1, 0x110b2, 1), new Range32 (0x110b7, 0x110b8, 1), - new Range32 (0x1112c, 0x11182, 86), + new Range32 (0x1112c, 0x11145, 25), + new Range32 (0x11146, 0x11182, 60), new Range32 (0x111b3, 0x111b5, 1), new Range32 (0x111bf, 0x111c0, 1), - new Range32 (0x1122c, 0x1122e, 1), + new Range32 (0x111ce, 0x1122c, 94), + new Range32 (0x1122d, 0x1122e, 1), new Range32 (0x11232, 0x11233, 1), new Range32 (0x11235, 0x112e0, 171), new Range32 (0x112e1, 0x112e2, 1), @@ -1859,10 +2076,25 @@ public static class Category { new Range32 (0x116ae, 0x116af, 1), new Range32 (0x116b6, 0x11720, 106), new Range32 (0x11721, 0x11726, 5), - new Range32 (0x11c2f, 0x11c3e, 15), - new Range32 (0x11ca9, 0x11cb1, 8), - new Range32 (0x11cb4, 0x16f51, 21149), - new Range32 (0x16f52, 0x16f7e, 1), + new Range32 (0x1182c, 0x1182e, 1), + new Range32 (0x11838, 0x11930, 248), + new Range32 (0x11931, 0x11935, 1), + new Range32 (0x11937, 0x11938, 1), + new Range32 (0x1193d, 0x11940, 3), + new Range32 (0x11942, 0x119d1, 143), + new Range32 (0x119d2, 0x119d3, 1), + new Range32 (0x119dc, 0x119df, 1), + new Range32 (0x119e4, 0x11a39, 85), + new Range32 (0x11a57, 0x11a58, 1), + new Range32 (0x11a97, 0x11c2f, 408), + new Range32 (0x11c3e, 0x11ca9, 107), + new Range32 (0x11cb1, 0x11cb4, 3), + new Range32 (0x11d8a, 0x11d8e, 1), + new Range32 (0x11d93, 0x11d94, 1), + new Range32 (0x11d96, 0x11ef5, 351), + new Range32 (0x11ef6, 0x16f51, 20571), + new Range32 (0x16f52, 0x16f87, 1), + new Range32 (0x16ff0, 0x16ff1, 1), new Range32 (0x1d165, 0x1d166, 1), new Range32 (0x1d16d, 0x1d172, 1), } @@ -1897,12 +2129,14 @@ public static class Category { new Range16 (0x0731, 0x074a, 1), new Range16 (0x07a6, 0x07b0, 1), new Range16 (0x07eb, 0x07f3, 1), - new Range16 (0x0816, 0x0819, 1), + new Range16 (0x07fd, 0x0816, 25), + new Range16 (0x0817, 0x0819, 1), new Range16 (0x081b, 0x0823, 1), new Range16 (0x0825, 0x0827, 1), new Range16 (0x0829, 0x082d, 1), new Range16 (0x0859, 0x085b, 1), - new Range16 (0x08d4, 0x08e1, 1), + new Range16 (0x0898, 0x089f, 1), + new Range16 (0x08ca, 0x08e1, 1), new Range16 (0x08e3, 0x0902, 1), new Range16 (0x093a, 0x093c, 2), new Range16 (0x0941, 0x0948, 1), @@ -1912,11 +2146,12 @@ public static class Category { new Range16 (0x0981, 0x09bc, 59), new Range16 (0x09c1, 0x09c4, 1), new Range16 (0x09cd, 0x09e2, 21), - new Range16 (0x09e3, 0x0a01, 30), - new Range16 (0x0a02, 0x0a3c, 58), - new Range16 (0x0a41, 0x0a42, 1), - new Range16 (0x0a47, 0x0a48, 1), - new Range16 (0x0a4b, 0x0a4d, 1), + new Range16 (0x09e3, 0x09fe, 27), + new Range16 (0x0a01, 0x0a02, 1), + new Range16 (0x0a3c, 0x0a41, 5), + new Range16 (0x0a42, 0x0a47, 5), + new Range16 (0x0a48, 0x0a4b, 3), + new Range16 (0x0a4c, 0x0a4d, 1), new Range16 (0x0a51, 0x0a70, 31), new Range16 (0x0a71, 0x0a75, 4), new Range16 (0x0a81, 0x0a82, 1), @@ -1924,14 +2159,18 @@ public static class Category { new Range16 (0x0ac2, 0x0ac5, 1), new Range16 (0x0ac7, 0x0ac8, 1), new Range16 (0x0acd, 0x0ae2, 21), - new Range16 (0x0ae3, 0x0b01, 30), - new Range16 (0x0b3c, 0x0b3f, 3), - new Range16 (0x0b41, 0x0b44, 1), - new Range16 (0x0b4d, 0x0b56, 9), - new Range16 (0x0b62, 0x0b63, 1), - new Range16 (0x0b82, 0x0bc0, 62), - new Range16 (0x0bcd, 0x0c00, 51), - new Range16 (0x0c3e, 0x0c40, 1), + new Range16 (0x0ae3, 0x0afa, 23), + new Range16 (0x0afb, 0x0aff, 1), + new Range16 (0x0b01, 0x0b3c, 59), + new Range16 (0x0b3f, 0x0b41, 2), + new Range16 (0x0b42, 0x0b44, 1), + new Range16 (0x0b4d, 0x0b55, 8), + new Range16 (0x0b56, 0x0b62, 12), + new Range16 (0x0b63, 0x0b82, 31), + new Range16 (0x0bc0, 0x0bcd, 13), + new Range16 (0x0c00, 0x0c04, 4), + new Range16 (0x0c3c, 0x0c3e, 2), + new Range16 (0x0c3f, 0x0c40, 1), new Range16 (0x0c46, 0x0c48, 1), new Range16 (0x0c4a, 0x0c4d, 1), new Range16 (0x0c55, 0x0c56, 1), @@ -1940,17 +2179,18 @@ public static class Category { new Range16 (0x0cbf, 0x0cc6, 7), new Range16 (0x0ccc, 0x0ccd, 1), new Range16 (0x0ce2, 0x0ce3, 1), - new Range16 (0x0d01, 0x0d41, 64), - new Range16 (0x0d42, 0x0d44, 1), + new Range16 (0x0d00, 0x0d01, 1), + new Range16 (0x0d3b, 0x0d3c, 1), + new Range16 (0x0d41, 0x0d44, 1), new Range16 (0x0d4d, 0x0d62, 21), - new Range16 (0x0d63, 0x0dca, 103), - new Range16 (0x0dd2, 0x0dd4, 1), + new Range16 (0x0d63, 0x0d81, 30), + new Range16 (0x0dca, 0x0dd2, 8), + new Range16 (0x0dd3, 0x0dd4, 1), new Range16 (0x0dd6, 0x0e31, 91), new Range16 (0x0e34, 0x0e3a, 1), new Range16 (0x0e47, 0x0e4e, 1), new Range16 (0x0eb1, 0x0eb4, 3), - new Range16 (0x0eb5, 0x0eb9, 1), - new Range16 (0x0ebb, 0x0ebc, 1), + new Range16 (0x0eb5, 0x0ebc, 1), new Range16 (0x0ec8, 0x0ecd, 1), new Range16 (0x0f18, 0x0f19, 1), new Range16 (0x0f35, 0x0f39, 2), @@ -1972,7 +2212,7 @@ public static class Category { new Range16 (0x109d, 0x135d, 704), new Range16 (0x135e, 0x135f, 1), new Range16 (0x1712, 0x1714, 1), - new Range16 (0x1732, 0x1734, 1), + new Range16 (0x1732, 0x1733, 1), new Range16 (0x1752, 0x1753, 1), new Range16 (0x1772, 0x1773, 1), new Range16 (0x17b4, 0x17b5, 1), @@ -1981,9 +2221,9 @@ public static class Category { new Range16 (0x17ca, 0x17d3, 1), new Range16 (0x17dd, 0x180b, 46), new Range16 (0x180c, 0x180d, 1), - new Range16 (0x1885, 0x1886, 1), - new Range16 (0x18a9, 0x1920, 119), - new Range16 (0x1921, 0x1922, 1), + new Range16 (0x180f, 0x1885, 118), + new Range16 (0x1886, 0x18a9, 35), + new Range16 (0x1920, 0x1922, 1), new Range16 (0x1927, 0x1928, 1), new Range16 (0x1932, 0x1939, 7), new Range16 (0x193a, 0x193b, 1), @@ -1995,6 +2235,7 @@ public static class Category { new Range16 (0x1a73, 0x1a7c, 1), new Range16 (0x1a7f, 0x1ab0, 49), new Range16 (0x1ab1, 0x1abd, 1), + new Range16 (0x1abf, 0x1ace, 1), new Range16 (0x1b00, 0x1b03, 1), new Range16 (0x1b34, 0x1b36, 2), new Range16 (0x1b37, 0x1b3a, 1), @@ -2014,8 +2255,7 @@ public static class Category { new Range16 (0x1ce2, 0x1ce8, 1), new Range16 (0x1ced, 0x1cf4, 7), new Range16 (0x1cf8, 0x1cf9, 1), - new Range16 (0x1dc0, 0x1df5, 1), - new Range16 (0x1dfb, 0x1dff, 1), + new Range16 (0x1dc0, 0x1dff, 1), new Range16 (0x20d0, 0x20dc, 1), new Range16 (0x20e1, 0x20e5, 4), new Range16 (0x20e6, 0x20f0, 1), @@ -2030,16 +2270,18 @@ public static class Category { new Range16 (0xa6f0, 0xa6f1, 1), new Range16 (0xa802, 0xa806, 4), new Range16 (0xa80b, 0xa825, 26), - new Range16 (0xa826, 0xa8c4, 158), - new Range16 (0xa8c5, 0xa8e0, 27), - new Range16 (0xa8e1, 0xa8f1, 1), - new Range16 (0xa926, 0xa92d, 1), + new Range16 (0xa826, 0xa82c, 6), + new Range16 (0xa8c4, 0xa8c5, 1), + new Range16 (0xa8e0, 0xa8f1, 1), + new Range16 (0xa8ff, 0xa926, 39), + new Range16 (0xa927, 0xa92d, 1), new Range16 (0xa947, 0xa951, 1), new Range16 (0xa980, 0xa982, 1), new Range16 (0xa9b3, 0xa9b6, 3), new Range16 (0xa9b7, 0xa9b9, 1), - new Range16 (0xa9bc, 0xa9e5, 41), - new Range16 (0xaa29, 0xaa2e, 1), + new Range16 (0xa9bc, 0xa9bd, 1), + new Range16 (0xa9e5, 0xaa29, 68), + new Range16 (0xaa2a, 0xaa2e, 1), new Range16 (0xaa31, 0xaa32, 1), new Range16 (0xaa35, 0xaa36, 1), new Range16 (0xaa43, 0xaa4c, 9), @@ -2062,31 +2304,41 @@ public static class Category { new Range32 (0x10a0c, 0x10a0f, 1), new Range32 (0x10a38, 0x10a3a, 1), new Range32 (0x10a3f, 0x10ae5, 166), - new Range32 (0x10ae6, 0x11001, 1307), - new Range32 (0x11038, 0x11046, 1), - new Range32 (0x1107f, 0x11081, 1), + new Range32 (0x10ae6, 0x10d24, 574), + new Range32 (0x10d25, 0x10d27, 1), + new Range32 (0x10eab, 0x10eac, 1), + new Range32 (0x10f46, 0x10f50, 1), + new Range32 (0x10f82, 0x10f85, 1), + new Range32 (0x11001, 0x11038, 55), + new Range32 (0x11039, 0x11046, 1), + new Range32 (0x11070, 0x11073, 3), + new Range32 (0x11074, 0x1107f, 11), + new Range32 (0x11080, 0x11081, 1), new Range32 (0x110b3, 0x110b6, 1), new Range32 (0x110b9, 0x110ba, 1), - new Range32 (0x11100, 0x11102, 1), + new Range32 (0x110c2, 0x11100, 62), + new Range32 (0x11101, 0x11102, 1), new Range32 (0x11127, 0x1112b, 1), new Range32 (0x1112d, 0x11134, 1), new Range32 (0x11173, 0x11180, 13), new Range32 (0x11181, 0x111b6, 53), new Range32 (0x111b7, 0x111be, 1), - new Range32 (0x111ca, 0x111cc, 1), - new Range32 (0x1122f, 0x11231, 1), + new Range32 (0x111c9, 0x111cc, 1), + new Range32 (0x111cf, 0x1122f, 96), + new Range32 (0x11230, 0x11231, 1), new Range32 (0x11234, 0x11236, 2), new Range32 (0x11237, 0x1123e, 7), new Range32 (0x112df, 0x112e3, 4), new Range32 (0x112e4, 0x112ea, 1), new Range32 (0x11300, 0x11301, 1), - new Range32 (0x1133c, 0x11340, 4), - new Range32 (0x11366, 0x1136c, 1), + new Range32 (0x1133b, 0x1133c, 1), + new Range32 (0x11340, 0x11366, 38), + new Range32 (0x11367, 0x1136c, 1), new Range32 (0x11370, 0x11374, 1), new Range32 (0x11438, 0x1143f, 1), new Range32 (0x11442, 0x11444, 1), - new Range32 (0x11446, 0x114b3, 109), - new Range32 (0x114b4, 0x114b8, 1), + new Range32 (0x11446, 0x1145e, 24), + new Range32 (0x114b3, 0x114b8, 1), new Range32 (0x114ba, 0x114bf, 5), new Range32 (0x114c0, 0x114c2, 2), new Range32 (0x114c3, 0x115b2, 239), @@ -2103,6 +2355,21 @@ public static class Category { new Range32 (0x1171e, 0x1171f, 1), new Range32 (0x11722, 0x11725, 1), new Range32 (0x11727, 0x1172b, 1), + new Range32 (0x1182f, 0x11837, 1), + new Range32 (0x11839, 0x1183a, 1), + new Range32 (0x1193b, 0x1193c, 1), + new Range32 (0x1193e, 0x11943, 5), + new Range32 (0x119d4, 0x119d7, 1), + new Range32 (0x119da, 0x119db, 1), + new Range32 (0x119e0, 0x11a01, 33), + new Range32 (0x11a02, 0x11a0a, 1), + new Range32 (0x11a33, 0x11a38, 1), + new Range32 (0x11a3b, 0x11a3e, 1), + new Range32 (0x11a47, 0x11a51, 10), + new Range32 (0x11a52, 0x11a56, 1), + new Range32 (0x11a59, 0x11a5b, 1), + new Range32 (0x11a8a, 0x11a96, 1), + new Range32 (0x11a98, 0x11a99, 1), new Range32 (0x11c30, 0x11c36, 1), new Range32 (0x11c38, 0x11c3d, 1), new Range32 (0x11c3f, 0x11c92, 83), @@ -2110,10 +2377,22 @@ public static class Category { new Range32 (0x11caa, 0x11cb0, 1), new Range32 (0x11cb2, 0x11cb3, 1), new Range32 (0x11cb5, 0x11cb6, 1), - new Range32 (0x16af0, 0x16af4, 1), + new Range32 (0x11d31, 0x11d36, 1), + new Range32 (0x11d3a, 0x11d3c, 2), + new Range32 (0x11d3d, 0x11d3f, 2), + new Range32 (0x11d40, 0x11d45, 1), + new Range32 (0x11d47, 0x11d90, 73), + new Range32 (0x11d91, 0x11d95, 4), + new Range32 (0x11d97, 0x11ef3, 348), + new Range32 (0x11ef4, 0x16af0, 19452), + new Range32 (0x16af1, 0x16af4, 1), new Range32 (0x16b30, 0x16b36, 1), - new Range32 (0x16f8f, 0x16f92, 1), - new Range32 (0x1bc9d, 0x1bc9e, 1), + new Range32 (0x16f4f, 0x16f8f, 64), + new Range32 (0x16f90, 0x16f92, 1), + new Range32 (0x16fe4, 0x1bc9d, 19641), + new Range32 (0x1bc9e, 0x1cf00, 4706), + new Range32 (0x1cf01, 0x1cf2d, 1), + new Range32 (0x1cf30, 0x1cf46, 1), new Range32 (0x1d167, 0x1d169, 1), new Range32 (0x1d17b, 0x1d182, 1), new Range32 (0x1d185, 0x1d18b, 1), @@ -2129,6 +2408,9 @@ public static class Category { new Range32 (0x1e01b, 0x1e021, 1), new Range32 (0x1e023, 0x1e024, 1), new Range32 (0x1e026, 0x1e02a, 1), + new Range32 (0x1e130, 0x1e136, 1), + new Range32 (0x1e2ae, 0x1e2ec, 62), + new Range32 (0x1e2ed, 0x1e2ef, 1), new Range32 (0x1e8d0, 0x1e8d6, 1), new Range32 (0x1e944, 0x1e94a, 1), new Range32 (0xe0100, 0xe01ef, 1), @@ -2221,7 +2503,7 @@ public static class Category { new Range32 (0x109bc, 0x109bd, 1), new Range32 (0x109c0, 0x109cf, 1), new Range32 (0x109d2, 0x109ff, 1), - new Range32 (0x10a40, 0x10a47, 1), + new Range32 (0x10a40, 0x10a48, 1), new Range32 (0x10a7d, 0x10a7e, 1), new Range32 (0x10a9d, 0x10a9f, 1), new Range32 (0x10aeb, 0x10aef, 1), @@ -2229,7 +2511,11 @@ public static class Category { new Range32 (0x10b78, 0x10b7f, 1), new Range32 (0x10ba9, 0x10baf, 1), new Range32 (0x10cfa, 0x10cff, 1), + new Range32 (0x10d30, 0x10d39, 1), new Range32 (0x10e60, 0x10e7e, 1), + new Range32 (0x10f1d, 0x10f26, 1), + new Range32 (0x10f51, 0x10f54, 1), + new Range32 (0x10fc5, 0x10fcb, 1), new Range32 (0x11052, 0x1106f, 1), new Range32 (0x110f0, 0x110f9, 1), new Range32 (0x11136, 0x1113f, 1), @@ -2242,16 +2528,31 @@ public static class Category { new Range32 (0x116c0, 0x116c9, 1), new Range32 (0x11730, 0x1173b, 1), new Range32 (0x118e0, 0x118f2, 1), + new Range32 (0x11950, 0x11959, 1), new Range32 (0x11c50, 0x11c6c, 1), + new Range32 (0x11d50, 0x11d59, 1), + new Range32 (0x11da0, 0x11da9, 1), + new Range32 (0x11fc0, 0x11fd4, 1), new Range32 (0x12400, 0x1246e, 1), new Range32 (0x16a60, 0x16a69, 1), + new Range32 (0x16ac0, 0x16ac9, 1), new Range32 (0x16b50, 0x16b59, 1), new Range32 (0x16b5b, 0x16b61, 1), - new Range32 (0x1d360, 0x1d371, 1), + new Range32 (0x16e80, 0x16e96, 1), + new Range32 (0x1d2e0, 0x1d2f3, 1), + new Range32 (0x1d360, 0x1d378, 1), new Range32 (0x1d7ce, 0x1d7ff, 1), + new Range32 (0x1e140, 0x1e149, 1), + new Range32 (0x1e2f0, 0x1e2f9, 1), new Range32 (0x1e8c7, 0x1e8cf, 1), new Range32 (0x1e950, 0x1e959, 1), + new Range32 (0x1ec71, 0x1ecab, 1), + new Range32 (0x1ecad, 0x1ecaf, 1), + new Range32 (0x1ecb1, 0x1ecb4, 1), + new Range32 (0x1ed01, 0x1ed2d, 1), + new Range32 (0x1ed2f, 0x1ed3d, 1), new Range32 (0x1f100, 0x1f10c, 1), + new Range32 (0x1fbf0, 0x1fbf9, 1), }, latinOffset: 4 ); @@ -2298,6 +2599,7 @@ public static class Category { }, r32: new Range32 [] { new Range32 (0x104a0, 0x104a9, 1), + new Range32 (0x10d30, 0x10d39, 1), new Range32 (0x11066, 0x1106f, 1), new Range32 (0x110f0, 0x110f9, 1), new Range32 (0x11136, 0x1113f, 1), @@ -2309,11 +2611,18 @@ public static class Category { new Range32 (0x116c0, 0x116c9, 1), new Range32 (0x11730, 0x11739, 1), new Range32 (0x118e0, 0x118e9, 1), + new Range32 (0x11950, 0x11959, 1), new Range32 (0x11c50, 0x11c59, 1), + new Range32 (0x11d50, 0x11d59, 1), + new Range32 (0x11da0, 0x11da9, 1), new Range32 (0x16a60, 0x16a69, 1), + new Range32 (0x16ac0, 0x16ac9, 1), new Range32 (0x16b50, 0x16b59, 1), new Range32 (0x1d7ce, 0x1d7ff, 1), + new Range32 (0x1e140, 0x1e149, 1), + new Range32 (0x1e2f0, 0x1e2f9, 1), new Range32 (0x1e950, 0x1e959, 1), + new Range32 (0x1fbf0, 0x1fbf9, 1), }, latinOffset: 1 ); @@ -2381,7 +2690,7 @@ public static class Category { new Range32 (0x109bc, 0x109bd, 1), new Range32 (0x109c0, 0x109cf, 1), new Range32 (0x109d2, 0x109ff, 1), - new Range32 (0x10a40, 0x10a47, 1), + new Range32 (0x10a40, 0x10a48, 1), new Range32 (0x10a7d, 0x10a7e, 1), new Range32 (0x10a9d, 0x10a9f, 1), new Range32 (0x10aeb, 0x10aef, 1), @@ -2390,14 +2699,25 @@ public static class Category { new Range32 (0x10ba9, 0x10baf, 1), new Range32 (0x10cfa, 0x10cff, 1), new Range32 (0x10e60, 0x10e7e, 1), + new Range32 (0x10f1d, 0x10f26, 1), + new Range32 (0x10f51, 0x10f54, 1), + new Range32 (0x10fc5, 0x10fcb, 1), new Range32 (0x11052, 0x11065, 1), new Range32 (0x111e1, 0x111f4, 1), new Range32 (0x1173a, 0x1173b, 1), new Range32 (0x118ea, 0x118f2, 1), new Range32 (0x11c5a, 0x11c6c, 1), + new Range32 (0x11fc0, 0x11fd4, 1), new Range32 (0x16b5b, 0x16b61, 1), - new Range32 (0x1d360, 0x1d371, 1), + new Range32 (0x16e80, 0x16e96, 1), + new Range32 (0x1d2e0, 0x1d2f3, 1), + new Range32 (0x1d360, 0x1d378, 1), new Range32 (0x1e8c7, 0x1e8cf, 1), + new Range32 (0x1ec71, 0x1ecab, 1), + new Range32 (0x1ecad, 0x1ecaf, 1), + new Range32 (0x1ecb1, 0x1ecb4, 1), + new Range32 (0x1ed01, 0x1ed2d, 1), + new Range32 (0x1ed2f, 0x1ed3d, 1), new Range32 (0x1f100, 0x1f10c, 1), }, latinOffset: 3 @@ -2424,16 +2744,18 @@ public static class Category { new Range16 (0x05f3, 0x05f4, 1), new Range16 (0x0609, 0x060a, 1), new Range16 (0x060c, 0x060d, 1), - new Range16 (0x061b, 0x061e, 3), - new Range16 (0x061f, 0x066a, 75), - new Range16 (0x066b, 0x066d, 1), + new Range16 (0x061b, 0x061d, 2), + new Range16 (0x061e, 0x061f, 1), + new Range16 (0x066a, 0x066d, 1), new Range16 (0x06d4, 0x0700, 44), new Range16 (0x0701, 0x070d, 1), new Range16 (0x07f7, 0x07f9, 1), new Range16 (0x0830, 0x083e, 1), new Range16 (0x085e, 0x0964, 262), new Range16 (0x0965, 0x0970, 11), - new Range16 (0x0af0, 0x0df4, 772), + new Range16 (0x09fd, 0x0a76, 121), + new Range16 (0x0af0, 0x0c77, 391), + new Range16 (0x0c84, 0x0df4, 368), new Range16 (0x0e4f, 0x0e5a, 11), new Range16 (0x0e5b, 0x0f04, 169), new Range16 (0x0f05, 0x0f12, 1), @@ -2445,10 +2767,9 @@ public static class Category { new Range16 (0x104a, 0x104f, 1), new Range16 (0x10fb, 0x1360, 613), new Range16 (0x1361, 0x1368, 1), - new Range16 (0x1400, 0x166d, 621), - new Range16 (0x166e, 0x169b, 45), - new Range16 (0x169c, 0x16eb, 79), - new Range16 (0x16ec, 0x16ed, 1), + new Range16 (0x1400, 0x166e, 622), + new Range16 (0x169b, 0x169c, 1), + new Range16 (0x16eb, 0x16ed, 1), new Range16 (0x1735, 0x1736, 1), new Range16 (0x17d4, 0x17d6, 1), new Range16 (0x17d8, 0x17da, 1), @@ -2458,6 +2779,7 @@ public static class Category { new Range16 (0x1aa0, 0x1aa6, 1), new Range16 (0x1aa8, 0x1aad, 1), new Range16 (0x1b5a, 0x1b60, 1), + new Range16 (0x1b7d, 0x1b7e, 1), new Range16 (0x1bfc, 0x1bff, 1), new Range16 (0x1c3b, 0x1c3f, 1), new Range16 (0x1c7e, 0x1c7f, 1), @@ -2481,7 +2803,8 @@ public static class Category { new Range16 (0x2cfe, 0x2cff, 1), new Range16 (0x2d70, 0x2e00, 144), new Range16 (0x2e01, 0x2e2e, 1), - new Range16 (0x2e30, 0x2e44, 1), + new Range16 (0x2e30, 0x2e4f, 1), + new Range16 (0x2e52, 0x2e5d, 1), new Range16 (0x3001, 0x3003, 1), new Range16 (0x3008, 0x3011, 1), new Range16 (0x3014, 0x301f, 1), @@ -2528,30 +2851,45 @@ public static class Category { new Range32 (0x10af1, 0x10af6, 1), new Range32 (0x10b39, 0x10b3f, 1), new Range32 (0x10b99, 0x10b9c, 1), + new Range32 (0x10ead, 0x10f55, 168), + new Range32 (0x10f56, 0x10f59, 1), + new Range32 (0x10f86, 0x10f89, 1), new Range32 (0x11047, 0x1104d, 1), new Range32 (0x110bb, 0x110bc, 1), new Range32 (0x110be, 0x110c1, 1), new Range32 (0x11140, 0x11143, 1), new Range32 (0x11174, 0x11175, 1), - new Range32 (0x111c5, 0x111c9, 1), + new Range32 (0x111c5, 0x111c8, 1), new Range32 (0x111cd, 0x111db, 14), new Range32 (0x111dd, 0x111df, 1), new Range32 (0x11238, 0x1123d, 1), new Range32 (0x112a9, 0x1144b, 418), new Range32 (0x1144c, 0x1144f, 1), - new Range32 (0x1145b, 0x1145d, 2), - new Range32 (0x114c6, 0x115c1, 251), - new Range32 (0x115c2, 0x115d7, 1), + new Range32 (0x1145a, 0x1145b, 1), + new Range32 (0x1145d, 0x114c6, 105), + new Range32 (0x115c1, 0x115d7, 1), new Range32 (0x11641, 0x11643, 1), new Range32 (0x11660, 0x1166c, 1), - new Range32 (0x1173c, 0x1173e, 1), + new Range32 (0x116b9, 0x1173c, 131), + new Range32 (0x1173d, 0x1173e, 1), + new Range32 (0x1183b, 0x11944, 265), + new Range32 (0x11945, 0x11946, 1), + new Range32 (0x119e2, 0x11a3f, 93), + new Range32 (0x11a40, 0x11a46, 1), + new Range32 (0x11a9a, 0x11a9c, 1), + new Range32 (0x11a9e, 0x11aa2, 1), new Range32 (0x11c41, 0x11c45, 1), new Range32 (0x11c70, 0x11c71, 1), - new Range32 (0x12470, 0x12474, 1), + new Range32 (0x11ef7, 0x11ef8, 1), + new Range32 (0x11fff, 0x12470, 1137), + new Range32 (0x12471, 0x12474, 1), + new Range32 (0x12ff1, 0x12ff2, 1), new Range32 (0x16a6e, 0x16a6f, 1), new Range32 (0x16af5, 0x16b37, 66), new Range32 (0x16b38, 0x16b3b, 1), - new Range32 (0x16b44, 0x1bc9f, 20827), + new Range32 (0x16b44, 0x16e97, 851), + new Range32 (0x16e98, 0x16e9a, 1), + new Range32 (0x16fe2, 0x1bc9f, 19645), new Range32 (0x1da87, 0x1da8b, 1), new Range32 (0x1e95e, 0x1e95f, 1), }, @@ -2576,11 +2914,14 @@ public static class Category { new Range16 (0x2011, 0x2015, 1), new Range16 (0x2e17, 0x2e1a, 3), new Range16 (0x2e3a, 0x2e3b, 1), - new Range16 (0x2e40, 0x301c, 476), - new Range16 (0x3030, 0x30a0, 112), - new Range16 (0xfe31, 0xfe32, 1), - new Range16 (0xfe58, 0xfe63, 11), - new Range16 (0xff0d, 0xff0d, 1), + new Range16 (0x2e40, 0x2e5d, 29), + new Range16 (0x301c, 0x3030, 20), + new Range16 (0x30a0, 0xfe31, 52625), + new Range16 (0xfe32, 0xfe58, 38), + new Range16 (0xfe63, 0xff0d, 170), + }, + r32: new Range32 [] { + new Range32 (0x10ead, 0x10ead, 1), } ); @@ -2599,6 +2940,7 @@ public static class Category { new Range16 (0x29d9, 0x29db, 2), new Range16 (0x29fd, 0x2e23, 1062), new Range16 (0x2e25, 0x2e29, 2), + new Range16 (0x2e56, 0x2e5c, 2), new Range16 (0x3009, 0x3011, 2), new Range16 (0x3015, 0x301b, 2), new Range16 (0x301e, 0x301f, 1), @@ -2651,16 +2993,18 @@ public static class Category { new Range16 (0x05f3, 0x05f4, 1), new Range16 (0x0609, 0x060a, 1), new Range16 (0x060c, 0x060d, 1), - new Range16 (0x061b, 0x061e, 3), - new Range16 (0x061f, 0x066a, 75), - new Range16 (0x066b, 0x066d, 1), + new Range16 (0x061b, 0x061d, 2), + new Range16 (0x061e, 0x061f, 1), + new Range16 (0x066a, 0x066d, 1), new Range16 (0x06d4, 0x0700, 44), new Range16 (0x0701, 0x070d, 1), new Range16 (0x07f7, 0x07f9, 1), new Range16 (0x0830, 0x083e, 1), new Range16 (0x085e, 0x0964, 262), new Range16 (0x0965, 0x0970, 11), - new Range16 (0x0af0, 0x0df4, 772), + new Range16 (0x09fd, 0x0a76, 121), + new Range16 (0x0af0, 0x0c77, 391), + new Range16 (0x0c84, 0x0df4, 368), new Range16 (0x0e4f, 0x0e5a, 11), new Range16 (0x0e5b, 0x0f04, 169), new Range16 (0x0f05, 0x0f12, 1), @@ -2670,8 +3014,8 @@ public static class Category { new Range16 (0x104a, 0x104f, 1), new Range16 (0x10fb, 0x1360, 613), new Range16 (0x1361, 0x1368, 1), - new Range16 (0x166d, 0x166e, 1), - new Range16 (0x16eb, 0x16ed, 1), + new Range16 (0x166e, 0x16eb, 125), + new Range16 (0x16ec, 0x16ed, 1), new Range16 (0x1735, 0x1736, 1), new Range16 (0x17d4, 0x17d6, 1), new Range16 (0x17d8, 0x17da, 1), @@ -2682,6 +3026,7 @@ public static class Category { new Range16 (0x1aa0, 0x1aa6, 1), new Range16 (0x1aa8, 0x1aad, 1), new Range16 (0x1b5a, 0x1b60, 1), + new Range16 (0x1b7d, 0x1b7e, 1), new Range16 (0x1bfc, 0x1bff, 1), new Range16 (0x1c3b, 0x1c3f, 1), new Range16 (0x1c7e, 0x1c7f, 1), @@ -2709,8 +3054,9 @@ public static class Category { new Range16 (0x2e30, 0x2e39, 1), new Range16 (0x2e3c, 0x2e3f, 1), new Range16 (0x2e41, 0x2e43, 2), - new Range16 (0x2e44, 0x3001, 445), - new Range16 (0x3002, 0x3003, 1), + new Range16 (0x2e44, 0x2e4f, 1), + new Range16 (0x2e52, 0x2e54, 1), + new Range16 (0x3001, 0x3003, 1), new Range16 (0x303d, 0x30fb, 190), new Range16 (0xa4fe, 0xa4ff, 1), new Range16 (0xa60d, 0xa60f, 1), @@ -2756,30 +3102,44 @@ public static class Category { new Range32 (0x10af1, 0x10af6, 1), new Range32 (0x10b39, 0x10b3f, 1), new Range32 (0x10b99, 0x10b9c, 1), + new Range32 (0x10f55, 0x10f59, 1), + new Range32 (0x10f86, 0x10f89, 1), new Range32 (0x11047, 0x1104d, 1), new Range32 (0x110bb, 0x110bc, 1), new Range32 (0x110be, 0x110c1, 1), new Range32 (0x11140, 0x11143, 1), new Range32 (0x11174, 0x11175, 1), - new Range32 (0x111c5, 0x111c9, 1), + new Range32 (0x111c5, 0x111c8, 1), new Range32 (0x111cd, 0x111db, 14), new Range32 (0x111dd, 0x111df, 1), new Range32 (0x11238, 0x1123d, 1), new Range32 (0x112a9, 0x1144b, 418), new Range32 (0x1144c, 0x1144f, 1), - new Range32 (0x1145b, 0x1145d, 2), - new Range32 (0x114c6, 0x115c1, 251), - new Range32 (0x115c2, 0x115d7, 1), + new Range32 (0x1145a, 0x1145b, 1), + new Range32 (0x1145d, 0x114c6, 105), + new Range32 (0x115c1, 0x115d7, 1), new Range32 (0x11641, 0x11643, 1), new Range32 (0x11660, 0x1166c, 1), - new Range32 (0x1173c, 0x1173e, 1), + new Range32 (0x116b9, 0x1173c, 131), + new Range32 (0x1173d, 0x1173e, 1), + new Range32 (0x1183b, 0x11944, 265), + new Range32 (0x11945, 0x11946, 1), + new Range32 (0x119e2, 0x11a3f, 93), + new Range32 (0x11a40, 0x11a46, 1), + new Range32 (0x11a9a, 0x11a9c, 1), + new Range32 (0x11a9e, 0x11aa2, 1), new Range32 (0x11c41, 0x11c45, 1), new Range32 (0x11c70, 0x11c71, 1), - new Range32 (0x12470, 0x12474, 1), + new Range32 (0x11ef7, 0x11ef8, 1), + new Range32 (0x11fff, 0x12470, 1137), + new Range32 (0x12471, 0x12474, 1), + new Range32 (0x12ff1, 0x12ff2, 1), new Range32 (0x16a6e, 0x16a6f, 1), new Range32 (0x16af5, 0x16b37, 66), new Range32 (0x16b38, 0x16b3b, 1), - new Range32 (0x16b44, 0x1bc9f, 20827), + new Range32 (0x16b44, 0x16e97, 851), + new Range32 (0x16e98, 0x16e9a, 1), + new Range32 (0x16fe2, 0x1bc9f, 19645), new Range32 (0x1da87, 0x1da8b, 1), new Range32 (0x1e95e, 0x1e95f, 1), }, @@ -2802,8 +3162,9 @@ public static class Category { new Range16 (0x29d8, 0x29da, 2), new Range16 (0x29fc, 0x2e22, 1062), new Range16 (0x2e24, 0x2e28, 2), - new Range16 (0x2e42, 0x3008, 454), - new Range16 (0x300a, 0x3010, 2), + new Range16 (0x2e42, 0x2e55, 19), + new Range16 (0x2e57, 0x2e5b, 2), + new Range16 (0x3008, 0x3010, 2), new Range16 (0x3014, 0x301a, 2), new Range16 (0x301d, 0xfd3f, 52514), new Range16 (0xfe17, 0xfe35, 30), @@ -2843,10 +3204,12 @@ public static class Category { new Range16 (0x060f, 0x06de, 207), new Range16 (0x06e9, 0x06fd, 20), new Range16 (0x06fe, 0x07f6, 248), - new Range16 (0x09f2, 0x09f3, 1), - new Range16 (0x09fa, 0x09fb, 1), - new Range16 (0x0af1, 0x0b70, 127), - new Range16 (0x0bf3, 0x0bfa, 1), + new Range16 (0x07fe, 0x07ff, 1), + new Range16 (0x0888, 0x09f2, 362), + new Range16 (0x09f3, 0x09fa, 7), + new Range16 (0x09fb, 0x0af1, 246), + new Range16 (0x0b70, 0x0bf3, 131), + new Range16 (0x0bf4, 0x0bfa, 1), new Range16 (0x0c7f, 0x0d4f, 208), new Range16 (0x0d79, 0x0e3f, 198), new Range16 (0x0f01, 0x0f03, 1), @@ -2860,8 +3223,9 @@ public static class Category { new Range16 (0x0fd5, 0x0fd8, 1), new Range16 (0x109e, 0x109f, 1), new Range16 (0x1390, 0x1399, 1), - new Range16 (0x17db, 0x1940, 357), - new Range16 (0x19de, 0x19ff, 1), + new Range16 (0x166d, 0x17db, 366), + new Range16 (0x1940, 0x19de, 158), + new Range16 (0x19df, 0x19ff, 1), new Range16 (0x1b61, 0x1b6a, 1), new Range16 (0x1b74, 0x1b7c, 1), new Range16 (0x1fbd, 0x1fbf, 2), @@ -2873,7 +3237,7 @@ public static class Category { new Range16 (0x2044, 0x2052, 14), new Range16 (0x207a, 0x207c, 1), new Range16 (0x208a, 0x208c, 1), - new Range16 (0x20a0, 0x20be, 1), + new Range16 (0x20a0, 0x20c0, 1), new Range16 (0x2100, 0x2101, 1), new Range16 (0x2103, 0x2106, 1), new Range16 (0x2108, 0x2109, 1), @@ -2889,8 +3253,7 @@ public static class Category { new Range16 (0x218b, 0x2190, 5), new Range16 (0x2191, 0x2307, 1), new Range16 (0x230c, 0x2328, 1), - new Range16 (0x232b, 0x23fe, 1), - new Range16 (0x2400, 0x2426, 1), + new Range16 (0x232b, 0x2426, 1), new Range16 (0x2440, 0x244a, 1), new Range16 (0x249c, 0x24e9, 1), new Range16 (0x2500, 0x2767, 1), @@ -2901,11 +3264,9 @@ public static class Category { new Range16 (0x29dc, 0x29fb, 1), new Range16 (0x29fe, 0x2b73, 1), new Range16 (0x2b76, 0x2b95, 1), - new Range16 (0x2b98, 0x2bb9, 1), - new Range16 (0x2bbd, 0x2bc8, 1), - new Range16 (0x2bca, 0x2bd1, 1), - new Range16 (0x2bec, 0x2bef, 1), + new Range16 (0x2b97, 0x2bff, 1), new Range16 (0x2ce5, 0x2cea, 1), + new Range16 (0x2e50, 0x2e51, 1), new Range16 (0x2e80, 0x2e99, 1), new Range16 (0x2e9b, 0x2ef3, 1), new Range16 (0x2f00, 0x2fd5, 1), @@ -2923,8 +3284,7 @@ public static class Category { new Range16 (0x3250, 0x3260, 16), new Range16 (0x3261, 0x327f, 1), new Range16 (0x328a, 0x32b0, 1), - new Range16 (0x32c0, 0x32fe, 1), - new Range16 (0x3300, 0x33ff, 1), + new Range16 (0x32c0, 0x33ff, 1), new Range16 (0x4dc0, 0x4dff, 1), new Range16 (0xa490, 0xa4c6, 1), new Range16 (0xa700, 0xa716, 1), @@ -2933,9 +3293,12 @@ public static class Category { new Range16 (0xa828, 0xa82b, 1), new Range16 (0xa836, 0xa839, 1), new Range16 (0xaa77, 0xaa79, 1), - new Range16 (0xab5b, 0xfb29, 20430), - new Range16 (0xfbb2, 0xfbc1, 1), - new Range16 (0xfdfc, 0xfdfd, 1), + new Range16 (0xab5b, 0xab6a, 15), + new Range16 (0xab6b, 0xfb29, 20414), + new Range16 (0xfbb2, 0xfbc2, 1), + new Range16 (0xfd40, 0xfd4f, 1), + new Range16 (0xfdcf, 0xfdfc, 45), + new Range16 (0xfdfd, 0xfdff, 1), new Range16 (0xfe62, 0xfe64, 2), new Range16 (0xfe65, 0xfe66, 1), new Range16 (0xfe69, 0xff04, 155), @@ -2951,20 +3314,22 @@ public static class Category { new Range32 (0x10137, 0x1013f, 1), new Range32 (0x10179, 0x10189, 1), new Range32 (0x1018c, 0x1018e, 1), - new Range32 (0x10190, 0x1019b, 1), + new Range32 (0x10190, 0x1019c, 1), new Range32 (0x101a0, 0x101d0, 48), new Range32 (0x101d1, 0x101fc, 1), new Range32 (0x10877, 0x10878, 1), new Range32 (0x10ac8, 0x1173f, 3191), + new Range32 (0x11fd5, 0x11ff1, 1), new Range32 (0x16b3c, 0x16b3f, 1), new Range32 (0x16b45, 0x1bc9c, 20823), + new Range32 (0x1cf50, 0x1cfc3, 1), new Range32 (0x1d000, 0x1d0f5, 1), new Range32 (0x1d100, 0x1d126, 1), new Range32 (0x1d129, 0x1d164, 1), new Range32 (0x1d16a, 0x1d16c, 1), new Range32 (0x1d183, 0x1d184, 1), new Range32 (0x1d18c, 0x1d1a9, 1), - new Range32 (0x1d1ae, 0x1d1e8, 1), + new Range32 (0x1d1ae, 0x1d1ea, 1), new Range32 (0x1d200, 0x1d241, 1), new Range32 (0x1d245, 0x1d300, 187), new Range32 (0x1d301, 0x1d356, 1), @@ -2978,38 +3343,48 @@ public static class Category { new Range32 (0x1da6d, 0x1da74, 1), new Range32 (0x1da76, 0x1da83, 1), new Range32 (0x1da85, 0x1da86, 1), - new Range32 (0x1eef0, 0x1eef1, 1), - new Range32 (0x1f000, 0x1f02b, 1), + new Range32 (0x1e14f, 0x1e2ff, 432), + new Range32 (0x1ecac, 0x1ecb0, 4), + new Range32 (0x1ed2e, 0x1eef0, 450), + new Range32 (0x1eef1, 0x1f000, 271), + new Range32 (0x1f001, 0x1f02b, 1), new Range32 (0x1f030, 0x1f093, 1), new Range32 (0x1f0a0, 0x1f0ae, 1), new Range32 (0x1f0b1, 0x1f0bf, 1), new Range32 (0x1f0c1, 0x1f0cf, 1), new Range32 (0x1f0d1, 0x1f0f5, 1), - new Range32 (0x1f110, 0x1f12e, 1), - new Range32 (0x1f130, 0x1f16b, 1), - new Range32 (0x1f170, 0x1f1ac, 1), + new Range32 (0x1f10d, 0x1f1ad, 1), new Range32 (0x1f1e6, 0x1f202, 1), new Range32 (0x1f210, 0x1f23b, 1), new Range32 (0x1f240, 0x1f248, 1), new Range32 (0x1f250, 0x1f251, 1), - new Range32 (0x1f300, 0x1f6d2, 1), - new Range32 (0x1f6e0, 0x1f6ec, 1), - new Range32 (0x1f6f0, 0x1f6f6, 1), + new Range32 (0x1f260, 0x1f265, 1), + new Range32 (0x1f300, 0x1f6d7, 1), + new Range32 (0x1f6dd, 0x1f6ec, 1), + new Range32 (0x1f6f0, 0x1f6fc, 1), new Range32 (0x1f700, 0x1f773, 1), - new Range32 (0x1f780, 0x1f7d4, 1), - new Range32 (0x1f800, 0x1f80b, 1), + new Range32 (0x1f780, 0x1f7d8, 1), + new Range32 (0x1f7e0, 0x1f7eb, 1), + new Range32 (0x1f7f0, 0x1f800, 16), + new Range32 (0x1f801, 0x1f80b, 1), new Range32 (0x1f810, 0x1f847, 1), new Range32 (0x1f850, 0x1f859, 1), new Range32 (0x1f860, 0x1f887, 1), new Range32 (0x1f890, 0x1f8ad, 1), - new Range32 (0x1f910, 0x1f91e, 1), - new Range32 (0x1f920, 0x1f927, 1), - new Range32 (0x1f930, 0x1f933, 3), - new Range32 (0x1f934, 0x1f93e, 1), - new Range32 (0x1f940, 0x1f94b, 1), - new Range32 (0x1f950, 0x1f95e, 1), - new Range32 (0x1f980, 0x1f991, 1), - new Range32 (0x1f9c0, 0x1f9c0, 1), + new Range32 (0x1f8b0, 0x1f8b1, 1), + new Range32 (0x1f900, 0x1fa53, 1), + new Range32 (0x1fa60, 0x1fa6d, 1), + new Range32 (0x1fa70, 0x1fa74, 1), + new Range32 (0x1fa78, 0x1fa7c, 1), + new Range32 (0x1fa80, 0x1fa86, 1), + new Range32 (0x1fa90, 0x1faac, 1), + new Range32 (0x1fab0, 0x1faba, 1), + new Range32 (0x1fac0, 0x1fac5, 1), + new Range32 (0x1fad0, 0x1fad9, 1), + new Range32 (0x1fae0, 0x1fae7, 1), + new Range32 (0x1faf0, 0x1faf6, 1), + new Range32 (0x1fb00, 0x1fb92, 1), + new Range32 (0x1fb94, 0x1fbca, 1), }, latinOffset: 10 ); @@ -3019,16 +3394,21 @@ public static class Category { new Range16 (0x0024, 0x00a2, 126), new Range16 (0x00a3, 0x00a5, 1), new Range16 (0x058f, 0x060b, 124), + new Range16 (0x07fe, 0x07ff, 1), new Range16 (0x09f2, 0x09f3, 1), new Range16 (0x09fb, 0x0af1, 246), new Range16 (0x0bf9, 0x0e3f, 582), new Range16 (0x17db, 0x20a0, 2245), - new Range16 (0x20a1, 0x20be, 1), + new Range16 (0x20a1, 0x20c0, 1), new Range16 (0xa838, 0xfdfc, 21956), new Range16 (0xfe69, 0xff04, 155), new Range16 (0xffe0, 0xffe1, 1), new Range16 (0xffe5, 0xffe6, 1), }, + r32: new Range32 [] { + new Range32 (0x11fdd, 0x11fe0, 1), + new Range32 (0x1e2ff, 0x1ecb0, 2481), + }, latinOffset: 2 ); @@ -3043,8 +3423,9 @@ public static class Category { new Range16 (0x02ed, 0x02ef, 2), new Range16 (0x02f0, 0x02ff, 1), new Range16 (0x0375, 0x0384, 15), - new Range16 (0x0385, 0x1fbd, 7224), - new Range16 (0x1fbf, 0x1fc1, 1), + new Range16 (0x0385, 0x0888, 1283), + new Range16 (0x1fbd, 0x1fbf, 2), + new Range16 (0x1fc0, 0x1fc1, 1), new Range16 (0x1fcd, 0x1fcf, 1), new Range16 (0x1fdd, 0x1fdf, 1), new Range16 (0x1fed, 0x1fef, 1), @@ -3053,8 +3434,9 @@ public static class Category { new Range16 (0xa700, 0xa716, 1), new Range16 (0xa720, 0xa721, 1), new Range16 (0xa789, 0xa78a, 1), - new Range16 (0xab5b, 0xfbb2, 20567), - new Range16 (0xfbb3, 0xfbc1, 1), + new Range16 (0xab5b, 0xab6a, 15), + new Range16 (0xab6b, 0xfbb2, 20551), + new Range16 (0xfbb3, 0xfbc2, 1), new Range16 (0xff3e, 0xff40, 2), new Range16 (0xffe3, 0xffe3, 1), }, @@ -3146,8 +3528,8 @@ public static class Category { new Range16 (0x0fd5, 0x0fd8, 1), new Range16 (0x109e, 0x109f, 1), new Range16 (0x1390, 0x1399, 1), - new Range16 (0x1940, 0x19de, 158), - new Range16 (0x19df, 0x19ff, 1), + new Range16 (0x166d, 0x1940, 723), + new Range16 (0x19de, 0x19ff, 1), new Range16 (0x1b61, 0x1b6a, 1), new Range16 (0x1b74, 0x1b7c, 1), new Range16 (0x2100, 0x2101, 1), @@ -3177,8 +3559,7 @@ public static class Category { new Range16 (0x232b, 0x237b, 1), new Range16 (0x237d, 0x239a, 1), new Range16 (0x23b4, 0x23db, 1), - new Range16 (0x23e2, 0x23fe, 1), - new Range16 (0x2400, 0x2426, 1), + new Range16 (0x23e2, 0x2426, 1), new Range16 (0x2440, 0x244a, 1), new Range16 (0x249c, 0x24e9, 1), new Range16 (0x2500, 0x25b6, 1), @@ -3192,11 +3573,9 @@ public static class Category { new Range16 (0x2b45, 0x2b46, 1), new Range16 (0x2b4d, 0x2b73, 1), new Range16 (0x2b76, 0x2b95, 1), - new Range16 (0x2b98, 0x2bb9, 1), - new Range16 (0x2bbd, 0x2bc8, 1), - new Range16 (0x2bca, 0x2bd1, 1), - new Range16 (0x2bec, 0x2bef, 1), + new Range16 (0x2b97, 0x2bff, 1), new Range16 (0x2ce5, 0x2cea, 1), + new Range16 (0x2e50, 0x2e51, 1), new Range16 (0x2e80, 0x2e99, 1), new Range16 (0x2e9b, 0x2ef3, 1), new Range16 (0x2f00, 0x2fd5, 1), @@ -3213,38 +3592,41 @@ public static class Category { new Range16 (0x3250, 0x3260, 16), new Range16 (0x3261, 0x327f, 1), new Range16 (0x328a, 0x32b0, 1), - new Range16 (0x32c0, 0x32fe, 1), - new Range16 (0x3300, 0x33ff, 1), + new Range16 (0x32c0, 0x33ff, 1), new Range16 (0x4dc0, 0x4dff, 1), new Range16 (0xa490, 0xa4c6, 1), new Range16 (0xa828, 0xa82b, 1), new Range16 (0xa836, 0xa837, 1), new Range16 (0xa839, 0xaa77, 574), new Range16 (0xaa78, 0xaa79, 1), - new Range16 (0xfdfd, 0xffe4, 487), - new Range16 (0xffe8, 0xffed, 5), - new Range16 (0xffee, 0xfffc, 14), - new Range16 (0xfffd, 0xfffd, 1), + new Range16 (0xfd40, 0xfd4f, 1), + new Range16 (0xfdcf, 0xfdfd, 46), + new Range16 (0xfdfe, 0xfdff, 1), + new Range16 (0xffe4, 0xffe8, 4), + new Range16 (0xffed, 0xffee, 1), + new Range16 (0xfffc, 0xfffd, 1), }, r32: new Range32 [] { - new Range32 (0x10137, 0x10137, 1), - new Range32 (0x10138, 0x1013f, 1), + new Range32 (0x10137, 0x1013f, 1), new Range32 (0x10179, 0x10189, 1), new Range32 (0x1018c, 0x1018e, 1), - new Range32 (0x10190, 0x1019b, 1), + new Range32 (0x10190, 0x1019c, 1), new Range32 (0x101a0, 0x101d0, 48), new Range32 (0x101d1, 0x101fc, 1), new Range32 (0x10877, 0x10878, 1), new Range32 (0x10ac8, 0x1173f, 3191), + new Range32 (0x11fd5, 0x11fdc, 1), + new Range32 (0x11fe1, 0x11ff1, 1), new Range32 (0x16b3c, 0x16b3f, 1), new Range32 (0x16b45, 0x1bc9c, 20823), + new Range32 (0x1cf50, 0x1cfc3, 1), new Range32 (0x1d000, 0x1d0f5, 1), new Range32 (0x1d100, 0x1d126, 1), new Range32 (0x1d129, 0x1d164, 1), new Range32 (0x1d16a, 0x1d16c, 1), new Range32 (0x1d183, 0x1d184, 1), new Range32 (0x1d18c, 0x1d1a9, 1), - new Range32 (0x1d1ae, 0x1d1e8, 1), + new Range32 (0x1d1ae, 0x1d1ea, 1), new Range32 (0x1d200, 0x1d241, 1), new Range32 (0x1d245, 0x1d300, 187), new Range32 (0x1d301, 0x1d356, 1), @@ -3253,38 +3635,47 @@ public static class Category { new Range32 (0x1da6d, 0x1da74, 1), new Range32 (0x1da76, 0x1da83, 1), new Range32 (0x1da85, 0x1da86, 1), - new Range32 (0x1f000, 0x1f02b, 1), + new Range32 (0x1e14f, 0x1ecac, 2909), + new Range32 (0x1ed2e, 0x1f000, 722), + new Range32 (0x1f001, 0x1f02b, 1), new Range32 (0x1f030, 0x1f093, 1), new Range32 (0x1f0a0, 0x1f0ae, 1), new Range32 (0x1f0b1, 0x1f0bf, 1), new Range32 (0x1f0c1, 0x1f0cf, 1), new Range32 (0x1f0d1, 0x1f0f5, 1), - new Range32 (0x1f110, 0x1f12e, 1), - new Range32 (0x1f130, 0x1f16b, 1), - new Range32 (0x1f170, 0x1f1ac, 1), + new Range32 (0x1f10d, 0x1f1ad, 1), new Range32 (0x1f1e6, 0x1f202, 1), new Range32 (0x1f210, 0x1f23b, 1), new Range32 (0x1f240, 0x1f248, 1), new Range32 (0x1f250, 0x1f251, 1), + new Range32 (0x1f260, 0x1f265, 1), new Range32 (0x1f300, 0x1f3fa, 1), - new Range32 (0x1f400, 0x1f6d2, 1), - new Range32 (0x1f6e0, 0x1f6ec, 1), - new Range32 (0x1f6f0, 0x1f6f6, 1), + new Range32 (0x1f400, 0x1f6d7, 1), + new Range32 (0x1f6dd, 0x1f6ec, 1), + new Range32 (0x1f6f0, 0x1f6fc, 1), new Range32 (0x1f700, 0x1f773, 1), - new Range32 (0x1f780, 0x1f7d4, 1), - new Range32 (0x1f800, 0x1f80b, 1), + new Range32 (0x1f780, 0x1f7d8, 1), + new Range32 (0x1f7e0, 0x1f7eb, 1), + new Range32 (0x1f7f0, 0x1f800, 16), + new Range32 (0x1f801, 0x1f80b, 1), new Range32 (0x1f810, 0x1f847, 1), new Range32 (0x1f850, 0x1f859, 1), new Range32 (0x1f860, 0x1f887, 1), new Range32 (0x1f890, 0x1f8ad, 1), - new Range32 (0x1f910, 0x1f91e, 1), - new Range32 (0x1f920, 0x1f927, 1), - new Range32 (0x1f930, 0x1f933, 3), - new Range32 (0x1f934, 0x1f93e, 1), - new Range32 (0x1f940, 0x1f94b, 1), - new Range32 (0x1f950, 0x1f95e, 1), - new Range32 (0x1f980, 0x1f991, 1), - new Range32 (0x1f9c0, 0x1f9c0, 1), + new Range32 (0x1f8b0, 0x1f8b1, 1), + new Range32 (0x1f900, 0x1fa53, 1), + new Range32 (0x1fa60, 0x1fa6d, 1), + new Range32 (0x1fa70, 0x1fa74, 1), + new Range32 (0x1fa78, 0x1fa7c, 1), + new Range32 (0x1fa80, 0x1fa86, 1), + new Range32 (0x1fa90, 0x1faac, 1), + new Range32 (0x1fab0, 0x1faba, 1), + new Range32 (0x1fac0, 0x1fac5, 1), + new Range32 (0x1fad0, 0x1fad9, 1), + new Range32 (0x1fae0, 0x1fae7, 1), + new Range32 (0x1faf0, 0x1faf6, 1), + new Range32 (0x1fb00, 0x1fb92, 1), + new Range32 (0x1fb94, 0x1fbca, 1), }, latinOffset: 2 ); @@ -3421,7 +3812,7 @@ public static class Category { } // Generated by running -// maketables --scripts=all --url=http://www.unicode.org/Public/9.0.0/ucd/ +// maketables --scripts=all --url=http://www.unicode.org/Public/14.0.0/ucd/ // DO NOT EDIT /// Static class containing the Unicode script tables. @@ -3455,16 +3846,21 @@ public static class Script { { "Chakma", Chakma }, { "Cham", Cham }, { "Cherokee", Cherokee }, + { "Chorasmian", Chorasmian }, { "Common", Common }, { "Coptic", Coptic }, { "Cuneiform", Cuneiform }, { "Cypriot", Cypriot }, + { "Cypro_Minoan", Cypro_Minoan }, { "Cyrillic", Cyrillic }, { "Deseret", Deseret }, { "Devanagari", Devanagari }, + { "Dives_Akuru", Dives_Akuru }, + { "Dogra", Dogra }, { "Duployan", Duployan }, { "Egyptian_Hieroglyphs", Egyptian_Hieroglyphs }, { "Elbasan", Elbasan }, + { "Elymaic", Elymaic }, { "Ethiopic", Ethiopic }, { "Georgian", Georgian }, { "Glagolitic", Glagolitic }, @@ -3472,9 +3868,11 @@ public static class Script { { "Grantha", Grantha }, { "Greek", Greek }, { "Gujarati", Gujarati }, + { "Gunjala_Gondi", Gunjala_Gondi }, { "Gurmukhi", Gurmukhi }, { "Han", Han }, { "Hangul", Hangul }, + { "Hanifi_Rohingya", Hanifi_Rohingya }, { "Hanunoo", Hanunoo }, { "Hatran", Hatran }, { "Hebrew", Hebrew }, @@ -3489,6 +3887,7 @@ public static class Script { { "Katakana", Katakana }, { "Kayah_Li", Kayah_Li }, { "Kharoshthi", Kharoshthi }, + { "Khitan_Small_Script", Khitan_Small_Script }, { "Khmer", Khmer }, { "Khojki", Khojki }, { "Khudawadi", Khudawadi }, @@ -3502,10 +3901,13 @@ public static class Script { { "Lycian", Lycian }, { "Lydian", Lydian }, { "Mahajani", Mahajani }, + { "Makasar", Makasar }, { "Malayalam", Malayalam }, { "Mandaic", Mandaic }, { "Manichaean", Manichaean }, { "Marchen", Marchen }, + { "Masaram_Gondi", Masaram_Gondi }, + { "Medefaidrin", Medefaidrin }, { "Meetei_Mayek", Meetei_Mayek }, { "Mende_Kikakui", Mende_Kikakui }, { "Meroitic_Cursive", Meroitic_Cursive }, @@ -3517,9 +3919,12 @@ public static class Script { { "Multani", Multani }, { "Myanmar", Myanmar }, { "Nabataean", Nabataean }, + { "Nandinagari", Nandinagari }, { "New_Tai_Lue", New_Tai_Lue }, { "Newa", Newa }, { "Nko", Nko }, + { "Nushu", Nushu }, + { "Nyiakeng_Puachue_Hmong", Nyiakeng_Puachue_Hmong }, { "Ogham", Ogham }, { "Ol_Chiki", Ol_Chiki }, { "Old_Hungarian", Old_Hungarian }, @@ -3527,8 +3932,10 @@ public static class Script { { "Old_North_Arabian", Old_North_Arabian }, { "Old_Permic", Old_Permic }, { "Old_Persian", Old_Persian }, + { "Old_Sogdian", Old_Sogdian }, { "Old_South_Arabian", Old_South_Arabian }, { "Old_Turkic", Old_Turkic }, + { "Old_Uyghur", Old_Uyghur }, { "Oriya", Oriya }, { "Osage", Osage }, { "Osmanya", Osmanya }, @@ -3547,7 +3954,9 @@ public static class Script { { "Siddham", Siddham }, { "SignWriting", SignWriting }, { "Sinhala", Sinhala }, + { "Sogdian", Sogdian }, { "Sora_Sompeng", Sora_Sompeng }, + { "Soyombo", Soyombo }, { "Sundanese", Sundanese }, { "Syloti_Nagri", Syloti_Nagri }, { "Syriac", Syriac }, @@ -3558,6 +3967,7 @@ public static class Script { { "Tai_Viet", Tai_Viet }, { "Takri", Takri }, { "Tamil", Tamil }, + { "Tangsa", Tangsa }, { "Tangut", Tangut }, { "Telugu", Telugu }, { "Thaana", Thaana }, @@ -3565,17 +3975,22 @@ public static class Script { { "Tibetan", Tibetan }, { "Tifinagh", Tifinagh }, { "Tirhuta", Tirhuta }, + { "Toto", Toto }, { "Ugaritic", Ugaritic }, { "Vai", Vai }, + { "Vithkuqi", Vithkuqi }, + { "Wancho", Wancho }, { "Warang_Citi", Warang_Citi }, + { "Yezidi", Yezidi }, { "Yi", Yi }, + { "Zanabazar_Square", Zanabazar_Square }, }; internal static RangeTable _Adlam = new RangeTable ( r16: new Range16 [] { }, r32: new Range32 [] { - new Range32 (0x1e900, 0x1e94a, 1), + new Range32 (0x1e900, 0x1e94b, 1), new Range32 (0x1e950, 0x1e959, 1), new Range32 (0x1e95e, 0x1e95f, 1), } @@ -3585,9 +4000,9 @@ public static class Script { r16: new Range16 [] { }, r32: new Range32 [] { - new Range32 (0x11700, 0x11719, 1), + new Range32 (0x11700, 0x1171a, 1), new Range32 (0x1171d, 0x1172b, 1), - new Range32 (0x11730, 0x1173f, 1), + new Range32 (0x11730, 0x11746, 1), } ); /* RangeTable */ @@ -3604,22 +4019,23 @@ public static class Script { new Range16 (0x0600, 0x0604, 1), new Range16 (0x0606, 0x060b, 1), new Range16 (0x060d, 0x061a, 1), - new Range16 (0x061e, 0x061e, 1), + new Range16 (0x061c, 0x061e, 1), new Range16 (0x0620, 0x063f, 1), new Range16 (0x0641, 0x064a, 1), new Range16 (0x0656, 0x066f, 1), new Range16 (0x0671, 0x06dc, 1), new Range16 (0x06de, 0x06ff, 1), new Range16 (0x0750, 0x077f, 1), - new Range16 (0x08a0, 0x08b4, 1), - new Range16 (0x08b6, 0x08bd, 1), - new Range16 (0x08d4, 0x08e1, 1), + new Range16 (0x0870, 0x088e, 1), + new Range16 (0x0890, 0x0891, 1), + new Range16 (0x0898, 0x08e1, 1), new Range16 (0x08e3, 0x08ff, 1), - new Range16 (0xfb50, 0xfbc1, 1), + new Range16 (0xfb50, 0xfbc2, 1), new Range16 (0xfbd3, 0xfd3d, 1), - new Range16 (0xfd50, 0xfd8f, 1), + new Range16 (0xfd40, 0xfd8f, 1), new Range16 (0xfd92, 0xfdc7, 1), - new Range16 (0xfdf0, 0xfdfd, 1), + new Range16 (0xfdcf, 0xfdcf, 1), + new Range16 (0xfdf0, 0xfdff, 1), new Range16 (0xfe70, 0xfe74, 1), new Range16 (0xfe76, 0xfefc, 1), }, @@ -3665,9 +4081,7 @@ public static class Script { internal static RangeTable _Armenian = new RangeTable ( r16: new Range16 [] { new Range16 (0x0531, 0x0556, 1), - new Range16 (0x0559, 0x055f, 1), - new Range16 (0x0561, 0x0587, 1), - new Range16 (0x058a, 0x058a, 1), + new Range16 (0x0559, 0x058a, 1), new Range16 (0x058d, 0x058f, 1), new Range16 (0xfb13, 0xfb17, 1), } @@ -3684,8 +4098,8 @@ public static class Script { internal static RangeTable _Balinese = new RangeTable ( r16: new Range16 [] { - new Range16 (0x1b00, 0x1b4b, 1), - new Range16 (0x1b50, 0x1b7c, 1), + new Range16 (0x1b00, 0x1b4c, 1), + new Range16 (0x1b50, 0x1b7e, 1), } ); /* RangeTable */ @@ -3729,7 +4143,7 @@ public static class Script { new Range16 (0x09d7, 0x09d7, 1), new Range16 (0x09dc, 0x09dd, 1), new Range16 (0x09df, 0x09e3, 1), - new Range16 (0x09e6, 0x09fb, 1), + new Range16 (0x09e6, 0x09fe, 1), } ); /* RangeTable */ @@ -3747,8 +4161,8 @@ public static class Script { internal static RangeTable _Bopomofo = new RangeTable ( r16: new Range16 [] { new Range16 (0x02ea, 0x02eb, 1), - new Range16 (0x3105, 0x312d, 1), - new Range16 (0x31a0, 0x31ba, 1), + new Range16 (0x3105, 0x312f, 1), + new Range16 (0x31a0, 0x31bf, 1), } ); /* RangeTable */ @@ -3757,7 +4171,7 @@ public static class Script { }, r32: new Range32 [] { new Range32 (0x11000, 0x1104d, 1), - new Range32 (0x11052, 0x1106f, 1), + new Range32 (0x11052, 0x11075, 1), new Range32 (0x1107f, 0x1107f, 1), } ); /* RangeTable */ @@ -3785,6 +4199,9 @@ public static class Script { r16: new Range16 [] { new Range16 (0x1400, 0x167f, 1), new Range16 (0x18b0, 0x18f5, 1), + }, + r32: new Range32 [] { + new Range32 (0x11ab0, 0x11abf, 1), } ); /* RangeTable */ @@ -3810,7 +4227,7 @@ public static class Script { }, r32: new Range32 [] { new Range32 (0x11100, 0x11134, 1), - new Range32 (0x11136, 0x11143, 1), + new Range32 (0x11136, 0x11147, 1), } ); /* RangeTable */ @@ -3831,6 +4248,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Chorasmian = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10fb0, 0x10fcb, 1), + } + ); /* RangeTable */ + internal static RangeTable _Common = new RangeTable ( r16: new Range16 [] { new Range16 (0x0000, 0x0040, 1), @@ -3847,10 +4272,9 @@ public static class Script { new Range16 (0x037e, 0x037e, 1), new Range16 (0x0385, 0x0385, 1), new Range16 (0x0387, 0x0387, 1), - new Range16 (0x0589, 0x0589, 1), new Range16 (0x0605, 0x0605, 1), new Range16 (0x060c, 0x060c, 1), - new Range16 (0x061b, 0x061c, 1), + new Range16 (0x061b, 0x061b, 1), new Range16 (0x061f, 0x061f, 1), new Range16 (0x0640, 0x0640, 1), new Range16 (0x06dd, 0x06dd, 1), @@ -3867,30 +4291,27 @@ public static class Script { new Range16 (0x1ce1, 0x1ce1, 1), new Range16 (0x1ce9, 0x1cec, 1), new Range16 (0x1cee, 0x1cf3, 1), - new Range16 (0x1cf5, 0x1cf6, 1), + new Range16 (0x1cf5, 0x1cf7, 1), + new Range16 (0x1cfa, 0x1cfa, 1), new Range16 (0x2000, 0x200b, 1), new Range16 (0x200e, 0x2064, 1), new Range16 (0x2066, 0x2070, 1), new Range16 (0x2074, 0x207e, 1), new Range16 (0x2080, 0x208e, 1), - new Range16 (0x20a0, 0x20be, 1), + new Range16 (0x20a0, 0x20c0, 1), new Range16 (0x2100, 0x2125, 1), new Range16 (0x2127, 0x2129, 1), new Range16 (0x212c, 0x2131, 1), new Range16 (0x2133, 0x214d, 1), new Range16 (0x214f, 0x215f, 1), new Range16 (0x2189, 0x218b, 1), - new Range16 (0x2190, 0x23fe, 1), - new Range16 (0x2400, 0x2426, 1), + new Range16 (0x2190, 0x2426, 1), new Range16 (0x2440, 0x244a, 1), new Range16 (0x2460, 0x27ff, 1), new Range16 (0x2900, 0x2b73, 1), new Range16 (0x2b76, 0x2b95, 1), - new Range16 (0x2b98, 0x2bb9, 1), - new Range16 (0x2bbd, 0x2bc8, 1), - new Range16 (0x2bca, 0x2bd1, 1), - new Range16 (0x2bec, 0x2bef, 1), - new Range16 (0x2e00, 0x2e44, 1), + new Range16 (0x2b97, 0x2bff, 1), + new Range16 (0x2e00, 0x2e5d, 1), new Range16 (0x2ff0, 0x2ffb, 1), new Range16 (0x3000, 0x3004, 1), new Range16 (0x3006, 0x3006, 1), @@ -3904,6 +4325,7 @@ public static class Script { new Range16 (0x31c0, 0x31e3, 1), new Range16 (0x3220, 0x325f, 1), new Range16 (0x327f, 0x32cf, 1), + new Range16 (0x32ff, 0x32ff, 1), new Range16 (0x3358, 0x33ff, 1), new Range16 (0x4dc0, 0x4dff, 1), new Range16 (0xa700, 0xa721, 1), @@ -3912,6 +4334,7 @@ public static class Script { new Range16 (0xa92e, 0xa92e, 1), new Range16 (0xa9cf, 0xa9cf, 1), new Range16 (0xab5b, 0xab5b, 1), + new Range16 (0xab6a, 0xab6b, 1), new Range16 (0xfd3e, 0xfd3f, 1), new Range16 (0xfe10, 0xfe19, 1), new Range16 (0xfe30, 0xfe52, 1), @@ -3931,19 +4354,21 @@ public static class Script { new Range32 (0x10100, 0x10102, 1), new Range32 (0x10107, 0x10133, 1), new Range32 (0x10137, 0x1013f, 1), - new Range32 (0x10190, 0x1019b, 1), + new Range32 (0x10190, 0x1019c, 1), new Range32 (0x101d0, 0x101fc, 1), new Range32 (0x102e1, 0x102fb, 1), new Range32 (0x1bca0, 0x1bca3, 1), + new Range32 (0x1cf50, 0x1cfc3, 1), new Range32 (0x1d000, 0x1d0f5, 1), new Range32 (0x1d100, 0x1d126, 1), new Range32 (0x1d129, 0x1d166, 1), new Range32 (0x1d16a, 0x1d17a, 1), new Range32 (0x1d183, 0x1d184, 1), new Range32 (0x1d18c, 0x1d1a9, 1), - new Range32 (0x1d1ae, 0x1d1e8, 1), + new Range32 (0x1d1ae, 0x1d1ea, 1), + new Range32 (0x1d2e0, 0x1d2f3, 1), new Range32 (0x1d300, 0x1d356, 1), - new Range32 (0x1d360, 0x1d371, 1), + new Range32 (0x1d360, 0x1d378, 1), new Range32 (0x1d400, 0x1d454, 1), new Range32 (0x1d456, 0x1d49c, 1), new Range32 (0x1d49e, 0x1d49f, 1), @@ -3965,39 +4390,48 @@ public static class Script { new Range32 (0x1d552, 0x1d6a5, 1), new Range32 (0x1d6a8, 0x1d7cb, 1), new Range32 (0x1d7ce, 0x1d7ff, 1), + new Range32 (0x1ec71, 0x1ecb4, 1), + new Range32 (0x1ed01, 0x1ed3d, 1), new Range32 (0x1f000, 0x1f02b, 1), new Range32 (0x1f030, 0x1f093, 1), new Range32 (0x1f0a0, 0x1f0ae, 1), new Range32 (0x1f0b1, 0x1f0bf, 1), new Range32 (0x1f0c1, 0x1f0cf, 1), new Range32 (0x1f0d1, 0x1f0f5, 1), - new Range32 (0x1f100, 0x1f10c, 1), - new Range32 (0x1f110, 0x1f12e, 1), - new Range32 (0x1f130, 0x1f16b, 1), - new Range32 (0x1f170, 0x1f1ac, 1), + new Range32 (0x1f100, 0x1f1ad, 1), new Range32 (0x1f1e6, 0x1f1ff, 1), new Range32 (0x1f201, 0x1f202, 1), new Range32 (0x1f210, 0x1f23b, 1), new Range32 (0x1f240, 0x1f248, 1), new Range32 (0x1f250, 0x1f251, 1), - new Range32 (0x1f300, 0x1f6d2, 1), - new Range32 (0x1f6e0, 0x1f6ec, 1), - new Range32 (0x1f6f0, 0x1f6f6, 1), + new Range32 (0x1f260, 0x1f265, 1), + new Range32 (0x1f300, 0x1f6d7, 1), + new Range32 (0x1f6dd, 0x1f6ec, 1), + new Range32 (0x1f6f0, 0x1f6fc, 1), new Range32 (0x1f700, 0x1f773, 1), - new Range32 (0x1f780, 0x1f7d4, 1), + new Range32 (0x1f780, 0x1f7d8, 1), + new Range32 (0x1f7e0, 0x1f7eb, 1), + new Range32 (0x1f7f0, 0x1f7f0, 1), new Range32 (0x1f800, 0x1f80b, 1), new Range32 (0x1f810, 0x1f847, 1), new Range32 (0x1f850, 0x1f859, 1), new Range32 (0x1f860, 0x1f887, 1), new Range32 (0x1f890, 0x1f8ad, 1), - new Range32 (0x1f910, 0x1f91e, 1), - new Range32 (0x1f920, 0x1f927, 1), - new Range32 (0x1f930, 0x1f930, 1), - new Range32 (0x1f933, 0x1f93e, 1), - new Range32 (0x1f940, 0x1f94b, 1), - new Range32 (0x1f950, 0x1f95e, 1), - new Range32 (0x1f980, 0x1f991, 1), - new Range32 (0x1f9c0, 0x1f9c0, 1), + new Range32 (0x1f8b0, 0x1f8b1, 1), + new Range32 (0x1f900, 0x1fa53, 1), + new Range32 (0x1fa60, 0x1fa6d, 1), + new Range32 (0x1fa70, 0x1fa74, 1), + new Range32 (0x1fa78, 0x1fa7c, 1), + new Range32 (0x1fa80, 0x1fa86, 1), + new Range32 (0x1fa90, 0x1faac, 1), + new Range32 (0x1fab0, 0x1faba, 1), + new Range32 (0x1fac0, 0x1fac5, 1), + new Range32 (0x1fad0, 0x1fad9, 1), + new Range32 (0x1fae0, 0x1fae7, 1), + new Range32 (0x1faf0, 0x1faf6, 1), + new Range32 (0x1fb00, 0x1fb92, 1), + new Range32 (0x1fb94, 0x1fbca, 1), + new Range32 (0x1fbf0, 0x1fbf9, 1), new Range32 (0xe0001, 0xe0001, 1), new Range32 (0xe0020, 0xe007f, 1), }, @@ -4036,6 +4470,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Cypro_Minoan = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x12f90, 0x12ff2, 1), + } + ); /* RangeTable */ + internal static RangeTable _Cyrillic = new RangeTable ( r16: new Range16 [] { new Range16 (0x0400, 0x0484, 1), @@ -4060,9 +4502,32 @@ public static class Script { internal static RangeTable _Devanagari = new RangeTable ( r16: new Range16 [] { new Range16 (0x0900, 0x0950, 1), - new Range16 (0x0953, 0x0963, 1), + new Range16 (0x0955, 0x0963, 1), new Range16 (0x0966, 0x097f, 1), - new Range16 (0xa8e0, 0xa8fd, 1), + new Range16 (0xa8e0, 0xa8ff, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Dives_Akuru = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x11900, 0x11906, 1), + new Range32 (0x11909, 0x11909, 1), + new Range32 (0x1190c, 0x11913, 1), + new Range32 (0x11915, 0x11916, 1), + new Range32 (0x11918, 0x11935, 1), + new Range32 (0x11937, 0x11938, 1), + new Range32 (0x1193b, 0x11946, 1), + new Range32 (0x11950, 0x11959, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Dogra = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x11800, 0x1183b, 1), } ); /* RangeTable */ @@ -4083,6 +4548,7 @@ public static class Script { }, r32: new Range32 [] { new Range32 (0x13000, 0x1342e, 1), + new Range32 (0x13430, 0x13438, 1), } ); /* RangeTable */ @@ -4094,6 +4560,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Elymaic = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10fe0, 0x10ff6, 1), + } + ); /* RangeTable */ + internal static RangeTable _Ethiopic = new RangeTable ( r16: new Range16 [] { new Range16 (0x1200, 0x1248, 1), @@ -4128,6 +4602,12 @@ public static class Script { new Range16 (0xab11, 0xab16, 1), new Range16 (0xab20, 0xab26, 1), new Range16 (0xab28, 0xab2e, 1), + }, + r32: new Range32 [] { + new Range32 (0x1e7e0, 0x1e7e6, 1), + new Range32 (0x1e7e8, 0x1e7eb, 1), + new Range32 (0x1e7ed, 0x1e7ee, 1), + new Range32 (0x1e7f0, 0x1e7fe, 1), } ); /* RangeTable */ @@ -4138,6 +4618,8 @@ public static class Script { new Range16 (0x10cd, 0x10cd, 1), new Range16 (0x10d0, 0x10fa, 1), new Range16 (0x10fc, 0x10ff, 1), + new Range16 (0x1c90, 0x1cba, 1), + new Range16 (0x1cbd, 0x1cbf, 1), new Range16 (0x2d00, 0x2d25, 1), new Range16 (0x2d27, 0x2d27, 1), new Range16 (0x2d2d, 0x2d2d, 1), @@ -4146,8 +4628,7 @@ public static class Script { internal static RangeTable _Glagolitic = new RangeTable ( r16: new Range16 [] { - new Range16 (0x2c00, 0x2c2e, 1), - new Range16 (0x2c30, 0x2c5e, 1), + new Range16 (0x2c00, 0x2c5f, 1), }, r32: new Range32 [] { new Range32 (0x1e000, 0x1e006, 1), @@ -4246,7 +4727,20 @@ public static class Script { new Range16 (0x0ad0, 0x0ad0, 1), new Range16 (0x0ae0, 0x0ae3, 1), new Range16 (0x0ae6, 0x0af1, 1), - new Range16 (0x0af9, 0x0af9, 1), + new Range16 (0x0af9, 0x0aff, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Gunjala_Gondi = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x11d60, 0x11d65, 1), + new Range32 (0x11d67, 0x11d68, 1), + new Range32 (0x11d6a, 0x11d8e, 1), + new Range32 (0x11d90, 0x11d91, 1), + new Range32 (0x11d93, 0x11d98, 1), + new Range32 (0x11da0, 0x11da9, 1), } ); /* RangeTable */ @@ -4267,7 +4761,7 @@ public static class Script { new Range16 (0x0a51, 0x0a51, 1), new Range16 (0x0a59, 0x0a5c, 1), new Range16 (0x0a5e, 0x0a5e, 1), - new Range16 (0x0a66, 0x0a75, 1), + new Range16 (0x0a66, 0x0a76, 1), } ); /* RangeTable */ @@ -4280,17 +4774,21 @@ public static class Script { new Range16 (0x3007, 0x3007, 1), new Range16 (0x3021, 0x3029, 1), new Range16 (0x3038, 0x303b, 1), - new Range16 (0x3400, 0x4db5, 1), - new Range16 (0x4e00, 0x9fd5, 1), + new Range16 (0x3400, 0x4dbf, 1), + new Range16 (0x4e00, 0x9fff, 1), new Range16 (0xf900, 0xfa6d, 1), new Range16 (0xfa70, 0xfad9, 1), }, r32: new Range32 [] { - new Range32 (0x20000, 0x2a6d6, 1), - new Range32 (0x2a700, 0x2b734, 1), + new Range32 (0x16fe2, 0x16fe3, 1), + new Range32 (0x16ff0, 0x16ff1, 1), + new Range32 (0x20000, 0x2a6df, 1), + new Range32 (0x2a700, 0x2b738, 1), new Range32 (0x2b740, 0x2b81d, 1), new Range32 (0x2b820, 0x2cea1, 1), + new Range32 (0x2ceb0, 0x2ebe0, 1), new Range32 (0x2f800, 0x2fa1d, 1), + new Range32 (0x30000, 0x3134a, 1), } ); /* RangeTable */ @@ -4313,6 +4811,15 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Hanifi_Rohingya = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10d00, 0x10d27, 1), + new Range32 (0x10d30, 0x10d39, 1), + } + ); /* RangeTable */ + internal static RangeTable _Hanunoo = new RangeTable ( r16: new Range16 [] { new Range16 (0x1720, 0x1734, 1), @@ -4333,7 +4840,7 @@ public static class Script { r16: new Range16 [] { new Range16 (0x0591, 0x05c7, 1), new Range16 (0x05d0, 0x05ea, 1), - new Range16 (0x05f0, 0x05f4, 1), + new Range16 (0x05ef, 0x05f4, 1), new Range16 (0xfb1d, 0xfb36, 1), new Range16 (0xfb38, 0xfb3c, 1), new Range16 (0xfb3e, 0xfb3e, 1), @@ -4349,7 +4856,8 @@ public static class Script { new Range16 (0x309d, 0x309f, 1), }, r32: new Range32 [] { - new Range32 (0x1b001, 0x1b001, 1), + new Range32 (0x1b001, 0x1b11f, 1), + new Range32 (0x1b150, 0x1b152, 1), new Range32 (0x1f200, 0x1f200, 1), } ); /* RangeTable */ @@ -4369,16 +4877,15 @@ public static class Script { new Range16 (0x0485, 0x0486, 1), new Range16 (0x064b, 0x0655, 1), new Range16 (0x0670, 0x0670, 1), - new Range16 (0x0951, 0x0952, 1), - new Range16 (0x1ab0, 0x1abe, 1), + new Range16 (0x0951, 0x0954, 1), + new Range16 (0x1ab0, 0x1ace, 1), new Range16 (0x1cd0, 0x1cd2, 1), new Range16 (0x1cd4, 0x1ce0, 1), new Range16 (0x1ce2, 0x1ce8, 1), new Range16 (0x1ced, 0x1ced, 1), new Range16 (0x1cf4, 0x1cf4, 1), new Range16 (0x1cf8, 0x1cf9, 1), - new Range16 (0x1dc0, 0x1df5, 1), - new Range16 (0x1dfb, 0x1dff, 1), + new Range16 (0x1dc0, 0x1dff, 1), new Range16 (0x200c, 0x200d, 1), new Range16 (0x20d0, 0x20f0, 1), new Range16 (0x302a, 0x302d, 1), @@ -4389,6 +4896,9 @@ public static class Script { r32: new Range32 [] { new Range32 (0x101fd, 0x101fd, 1), new Range32 (0x102e0, 0x102e0, 1), + new Range32 (0x1133b, 0x1133b, 1), + new Range32 (0x1cf00, 0x1cf2d, 1), + new Range32 (0x1cf30, 0x1cf46, 1), new Range32 (0x1d167, 0x1d169, 1), new Range32 (0x1d17b, 0x1d182, 1), new Range32 (0x1d185, 0x1d18b, 1), @@ -4427,14 +4937,14 @@ public static class Script { r16: new Range16 [] { }, r32: new Range32 [] { - new Range32 (0x11080, 0x110c1, 1), + new Range32 (0x11080, 0x110c2, 1), + new Range32 (0x110cd, 0x110cd, 1), } ); /* RangeTable */ internal static RangeTable _Kannada = new RangeTable ( r16: new Range16 [] { - new Range16 (0x0c80, 0x0c83, 1), - new Range16 (0x0c85, 0x0c8c, 1), + new Range16 (0x0c80, 0x0c8c, 1), new Range16 (0x0c8e, 0x0c90, 1), new Range16 (0x0c92, 0x0ca8, 1), new Range16 (0x0caa, 0x0cb3, 1), @@ -4443,7 +4953,7 @@ public static class Script { new Range16 (0x0cc6, 0x0cc8, 1), new Range16 (0x0cca, 0x0ccd, 1), new Range16 (0x0cd5, 0x0cd6, 1), - new Range16 (0x0cde, 0x0cde, 1), + new Range16 (0x0cdd, 0x0cde, 1), new Range16 (0x0ce0, 0x0ce3, 1), new Range16 (0x0ce6, 0x0cef, 1), new Range16 (0x0cf1, 0x0cf2, 1), @@ -4461,7 +4971,12 @@ public static class Script { new Range16 (0xff71, 0xff9d, 1), }, r32: new Range32 [] { + new Range32 (0x1aff0, 0x1aff3, 1), + new Range32 (0x1aff5, 0x1affb, 1), + new Range32 (0x1affd, 0x1affe, 1), new Range32 (0x1b000, 0x1b000, 1), + new Range32 (0x1b120, 0x1b122, 1), + new Range32 (0x1b164, 0x1b167, 1), } ); /* RangeTable */ @@ -4480,13 +4995,22 @@ public static class Script { new Range32 (0x10a05, 0x10a06, 1), new Range32 (0x10a0c, 0x10a13, 1), new Range32 (0x10a15, 0x10a17, 1), - new Range32 (0x10a19, 0x10a33, 1), + new Range32 (0x10a19, 0x10a35, 1), new Range32 (0x10a38, 0x10a3a, 1), - new Range32 (0x10a3f, 0x10a47, 1), + new Range32 (0x10a3f, 0x10a48, 1), new Range32 (0x10a50, 0x10a58, 1), } ); /* RangeTable */ + internal static RangeTable _Khitan_Small_Script = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x16fe4, 0x16fe4, 1), + new Range32 (0x18b00, 0x18cd5, 1), + } + ); /* RangeTable */ + internal static RangeTable _Khmer = new RangeTable ( r16: new Range16 [] { new Range16 (0x1780, 0x17dd, 1), @@ -4518,17 +5042,10 @@ public static class Script { r16: new Range16 [] { new Range16 (0x0e81, 0x0e82, 1), new Range16 (0x0e84, 0x0e84, 1), - new Range16 (0x0e87, 0x0e88, 1), - new Range16 (0x0e8a, 0x0e8a, 1), - new Range16 (0x0e8d, 0x0e8d, 1), - new Range16 (0x0e94, 0x0e97, 1), - new Range16 (0x0e99, 0x0e9f, 1), - new Range16 (0x0ea1, 0x0ea3, 1), + new Range16 (0x0e86, 0x0e8a, 1), + new Range16 (0x0e8c, 0x0ea3, 1), new Range16 (0x0ea5, 0x0ea5, 1), - new Range16 (0x0ea7, 0x0ea7, 1), - new Range16 (0x0eaa, 0x0eab, 1), - new Range16 (0x0ead, 0x0eb9, 1), - new Range16 (0x0ebb, 0x0ebd, 1), + new Range16 (0x0ea7, 0x0ebd, 1), new Range16 (0x0ec0, 0x0ec4, 1), new Range16 (0x0ec6, 0x0ec6, 1), new Range16 (0x0ec8, 0x0ecd, 1), @@ -4562,15 +5079,24 @@ public static class Script { new Range16 (0x2160, 0x2188, 1), new Range16 (0x2c60, 0x2c7f, 1), new Range16 (0xa722, 0xa787, 1), - new Range16 (0xa78b, 0xa7ae, 1), - new Range16 (0xa7b0, 0xa7b7, 1), - new Range16 (0xa7f7, 0xa7ff, 1), + new Range16 (0xa78b, 0xa7ca, 1), + new Range16 (0xa7d0, 0xa7d1, 1), + new Range16 (0xa7d3, 0xa7d3, 1), + new Range16 (0xa7d5, 0xa7d9, 1), + new Range16 (0xa7f2, 0xa7ff, 1), new Range16 (0xab30, 0xab5a, 1), new Range16 (0xab5c, 0xab64, 1), + new Range16 (0xab66, 0xab69, 1), new Range16 (0xfb00, 0xfb06, 1), new Range16 (0xff21, 0xff3a, 1), new Range16 (0xff41, 0xff5a, 1), }, + r32: new Range32 [] { + new Range32 (0x10780, 0x10785, 1), + new Range32 (0x10787, 0x107b0, 1), + new Range32 (0x107b2, 0x107ba, 1), + new Range32 (0x1df00, 0x1df1e, 1), + }, latinOffset: 6 ); /* RangeTable */ @@ -4619,6 +5145,9 @@ public static class Script { internal static RangeTable _Lisu = new RangeTable ( r16: new Range16 [] { new Range16 (0xa4d0, 0xa4ff, 1), + }, + r32: new Range32 [] { + new Range32 (0x11fb0, 0x11fb0, 1), } ); /* RangeTable */ @@ -4647,13 +5176,19 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Makasar = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x11ee0, 0x11ef8, 1), + } + ); /* RangeTable */ + internal static RangeTable _Malayalam = new RangeTable ( r16: new Range16 [] { - new Range16 (0x0d01, 0x0d03, 1), - new Range16 (0x0d05, 0x0d0c, 1), + new Range16 (0x0d00, 0x0d0c, 1), new Range16 (0x0d0e, 0x0d10, 1), - new Range16 (0x0d12, 0x0d3a, 1), - new Range16 (0x0d3d, 0x0d44, 1), + new Range16 (0x0d12, 0x0d44, 1), new Range16 (0x0d46, 0x0d48, 1), new Range16 (0x0d4a, 0x0d4f, 1), new Range16 (0x0d54, 0x0d63, 1), @@ -4687,6 +5222,28 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Masaram_Gondi = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x11d00, 0x11d06, 1), + new Range32 (0x11d08, 0x11d09, 1), + new Range32 (0x11d0b, 0x11d36, 1), + new Range32 (0x11d3a, 0x11d3a, 1), + new Range32 (0x11d3c, 0x11d3d, 1), + new Range32 (0x11d3f, 0x11d47, 1), + new Range32 (0x11d50, 0x11d59, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Medefaidrin = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x16e40, 0x16e9a, 1), + } + ); /* RangeTable */ + internal static RangeTable _Meetei_Mayek = new RangeTable ( r16: new Range16 [] { new Range16 (0xaae0, 0xaaf6, 1), @@ -4726,8 +5283,8 @@ public static class Script { r16: new Range16 [] { }, r32: new Range32 [] { - new Range32 (0x16f00, 0x16f44, 1), - new Range32 (0x16f50, 0x16f7e, 1), + new Range32 (0x16f00, 0x16f4a, 1), + new Range32 (0x16f4f, 0x16f87, 1), new Range32 (0x16f8f, 0x16f9f, 1), } ); /* RangeTable */ @@ -4745,9 +5302,8 @@ public static class Script { r16: new Range16 [] { new Range16 (0x1800, 0x1801, 1), new Range16 (0x1804, 0x1804, 1), - new Range16 (0x1806, 0x180e, 1), - new Range16 (0x1810, 0x1819, 1), - new Range16 (0x1820, 0x1877, 1), + new Range16 (0x1806, 0x1819, 1), + new Range16 (0x1820, 0x1878, 1), new Range16 (0x1880, 0x18aa, 1), }, r32: new Range32 [] { @@ -4794,6 +5350,16 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Nandinagari = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x119a0, 0x119a7, 1), + new Range32 (0x119aa, 0x119d7, 1), + new Range32 (0x119da, 0x119e4, 1), + } + ); /* RangeTable */ + internal static RangeTable _New_Tai_Lue = new RangeTable ( r16: new Range16 [] { new Range16 (0x1980, 0x19ab, 1), @@ -4807,15 +5373,35 @@ public static class Script { r16: new Range16 [] { }, r32: new Range32 [] { - new Range32 (0x11400, 0x11459, 1), - new Range32 (0x1145b, 0x1145b, 1), - new Range32 (0x1145d, 0x1145d, 1), + new Range32 (0x11400, 0x1145b, 1), + new Range32 (0x1145d, 0x11461, 1), } ); /* RangeTable */ internal static RangeTable _Nko = new RangeTable ( r16: new Range16 [] { new Range16 (0x07c0, 0x07fa, 1), + new Range16 (0x07fd, 0x07ff, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Nushu = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x16fe1, 0x16fe1, 1), + new Range32 (0x1b170, 0x1b2fb, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Nyiakeng_Puachue_Hmong = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x1e100, 0x1e12c, 1), + new Range32 (0x1e130, 0x1e13d, 1), + new Range32 (0x1e140, 0x1e149, 1), + new Range32 (0x1e14e, 0x1e14f, 1), } ); /* RangeTable */ @@ -4846,6 +5432,7 @@ public static class Script { }, r32: new Range32 [] { new Range32 (0x10300, 0x10323, 1), + new Range32 (0x1032d, 0x1032f, 1), } ); /* RangeTable */ @@ -4874,6 +5461,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Old_Sogdian = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10f00, 0x10f27, 1), + } + ); /* RangeTable */ + internal static RangeTable _Old_South_Arabian = new RangeTable ( r16: new Range16 [] { }, @@ -4890,6 +5485,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Old_Uyghur = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10f70, 0x10f89, 1), + } + ); /* RangeTable */ + internal static RangeTable _Oriya = new RangeTable ( r16: new Range16 [] { new Range16 (0x0b01, 0x0b03, 1), @@ -4902,7 +5505,7 @@ public static class Script { new Range16 (0x0b3c, 0x0b44, 1), new Range16 (0x0b47, 0x0b48, 1), new Range16 (0x0b4b, 0x0b4d, 1), - new Range16 (0x0b56, 0x0b57, 1), + new Range16 (0x0b55, 0x0b57, 1), new Range16 (0x0b5c, 0x0b5d, 1), new Range16 (0x0b5f, 0x0b63, 1), new Range16 (0x0b66, 0x0b77, 1), @@ -5012,8 +5615,7 @@ public static class Script { r16: new Range16 [] { }, r32: new Range32 [] { - new Range32 (0x11180, 0x111cd, 1), - new Range32 (0x111d0, 0x111df, 1), + new Range32 (0x11180, 0x111df, 1), } ); /* RangeTable */ @@ -5046,7 +5648,7 @@ public static class Script { internal static RangeTable _Sinhala = new RangeTable ( r16: new Range16 [] { - new Range16 (0x0d82, 0x0d83, 1), + new Range16 (0x0d81, 0x0d83, 1), new Range16 (0x0d85, 0x0d96, 1), new Range16 (0x0d9a, 0x0db1, 1), new Range16 (0x0db3, 0x0dbb, 1), @@ -5064,6 +5666,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Sogdian = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10f30, 0x10f59, 1), + } + ); /* RangeTable */ + internal static RangeTable _Sora_Sompeng = new RangeTable ( r16: new Range16 [] { }, @@ -5073,6 +5683,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Soyombo = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x11a50, 0x11aa2, 1), + } + ); /* RangeTable */ + internal static RangeTable _Sundanese = new RangeTable ( r16: new Range16 [] { new Range16 (0x1b80, 0x1bbf, 1), @@ -5082,7 +5700,7 @@ public static class Script { internal static RangeTable _Syloti_Nagri = new RangeTable ( r16: new Range16 [] { - new Range16 (0xa800, 0xa82b, 1), + new Range16 (0xa800, 0xa82c, 1), } ); /* RangeTable */ @@ -5091,13 +5709,14 @@ public static class Script { new Range16 (0x0700, 0x070d, 1), new Range16 (0x070f, 0x074a, 1), new Range16 (0x074d, 0x074f, 1), + new Range16 (0x0860, 0x086a, 1), } ); /* RangeTable */ internal static RangeTable _Tagalog = new RangeTable ( r16: new Range16 [] { - new Range16 (0x1700, 0x170c, 1), - new Range16 (0x170e, 0x1714, 1), + new Range16 (0x1700, 0x1715, 1), + new Range16 (0x171f, 0x171f, 1), } ); /* RangeTable */ @@ -5137,7 +5756,7 @@ public static class Script { r16: new Range16 [] { }, r32: new Range32 [] { - new Range32 (0x11680, 0x116b7, 1), + new Range32 (0x11680, 0x116b9, 1), new Range32 (0x116c0, 0x116c9, 1), } ); /* RangeTable */ @@ -5160,6 +5779,19 @@ public static class Script { new Range16 (0x0bd0, 0x0bd0, 1), new Range16 (0x0bd7, 0x0bd7, 1), new Range16 (0x0be6, 0x0bfa, 1), + }, + r32: new Range32 [] { + new Range32 (0x11fc0, 0x11ff1, 1), + new Range32 (0x11fff, 0x11fff, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Tangsa = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x16a70, 0x16abe, 1), + new Range32 (0x16ac0, 0x16ac9, 1), } ); /* RangeTable */ @@ -5168,26 +5800,27 @@ public static class Script { }, r32: new Range32 [] { new Range32 (0x16fe0, 0x16fe0, 1), - new Range32 (0x17000, 0x187ec, 1), - new Range32 (0x18800, 0x18af2, 1), + new Range32 (0x17000, 0x187f7, 1), + new Range32 (0x18800, 0x18aff, 1), + new Range32 (0x18d00, 0x18d08, 1), } ); /* RangeTable */ internal static RangeTable _Telugu = new RangeTable ( r16: new Range16 [] { - new Range16 (0x0c00, 0x0c03, 1), - new Range16 (0x0c05, 0x0c0c, 1), + new Range16 (0x0c00, 0x0c0c, 1), new Range16 (0x0c0e, 0x0c10, 1), new Range16 (0x0c12, 0x0c28, 1), new Range16 (0x0c2a, 0x0c39, 1), - new Range16 (0x0c3d, 0x0c44, 1), + new Range16 (0x0c3c, 0x0c44, 1), new Range16 (0x0c46, 0x0c48, 1), new Range16 (0x0c4a, 0x0c4d, 1), new Range16 (0x0c55, 0x0c56, 1), new Range16 (0x0c58, 0x0c5a, 1), + new Range16 (0x0c5d, 0x0c5d, 1), new Range16 (0x0c60, 0x0c63, 1), new Range16 (0x0c66, 0x0c6f, 1), - new Range16 (0x0c78, 0x0c7f, 1), + new Range16 (0x0c77, 0x0c7f, 1), } ); /* RangeTable */ @@ -5233,6 +5866,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Toto = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x1e290, 0x1e2ae, 1), + } + ); /* RangeTable */ + internal static RangeTable _Ugaritic = new RangeTable ( r16: new Range16 [] { }, @@ -5248,6 +5889,30 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Vithkuqi = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10570, 0x1057a, 1), + new Range32 (0x1057c, 0x1058a, 1), + new Range32 (0x1058c, 0x10592, 1), + new Range32 (0x10594, 0x10595, 1), + new Range32 (0x10597, 0x105a1, 1), + new Range32 (0x105a3, 0x105b1, 1), + new Range32 (0x105b3, 0x105b9, 1), + new Range32 (0x105bb, 0x105bc, 1), + } + ); /* RangeTable */ + + internal static RangeTable _Wancho = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x1e2c0, 0x1e2f9, 1), + new Range32 (0x1e2ff, 0x1e2ff, 1), + } + ); /* RangeTable */ + internal static RangeTable _Warang_Citi = new RangeTable ( r16: new Range16 [] { }, @@ -5257,6 +5922,16 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Yezidi = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x10e80, 0x10ea9, 1), + new Range32 (0x10eab, 0x10ead, 1), + new Range32 (0x10eb0, 0x10eb1, 1), + } + ); /* RangeTable */ + internal static RangeTable _Yi = new RangeTable ( r16: new Range16 [] { new Range16 (0xa000, 0xa48c, 1), @@ -5264,6 +5939,14 @@ public static class Script { } ); /* RangeTable */ + internal static RangeTable _Zanabazar_Square = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x11a00, 0x11a47, 1), + } + ); /* RangeTable */ + /// Adlam is the set of Unicode characters in script Adlam. public static RangeTable Adlam => _Adlam; /// Ahom is the set of Unicode characters in script Ahom. @@ -5310,6 +5993,8 @@ public static class Script { public static RangeTable Cham => _Cham; /// Cherokee is the set of Unicode characters in script Cherokee. public static RangeTable Cherokee => _Cherokee; + /// Chorasmian is the set of Unicode characters in script Chorasmian. + public static RangeTable Chorasmian => _Chorasmian; /// Common is the set of Unicode characters in script Common. public static RangeTable Common => _Common; /// Coptic is the set of Unicode characters in script Coptic. @@ -5318,18 +6003,26 @@ public static class Script { public static RangeTable Cuneiform => _Cuneiform; /// Cypriot is the set of Unicode characters in script Cypriot. public static RangeTable Cypriot => _Cypriot; + /// Cypro_Minoan is the set of Unicode characters in script Cypro_Minoan. + public static RangeTable Cypro_Minoan => _Cypro_Minoan; /// Cyrillic is the set of Unicode characters in script Cyrillic. public static RangeTable Cyrillic => _Cyrillic; /// Deseret is the set of Unicode characters in script Deseret. public static RangeTable Deseret => _Deseret; /// Devanagari is the set of Unicode characters in script Devanagari. public static RangeTable Devanagari => _Devanagari; + /// Dives_Akuru is the set of Unicode characters in script Dives_Akuru. + public static RangeTable Dives_Akuru => _Dives_Akuru; + /// Dogra is the set of Unicode characters in script Dogra. + public static RangeTable Dogra => _Dogra; /// Duployan is the set of Unicode characters in script Duployan. public static RangeTable Duployan => _Duployan; /// Egyptian_Hieroglyphs is the set of Unicode characters in script Egyptian_Hieroglyphs. public static RangeTable Egyptian_Hieroglyphs => _Egyptian_Hieroglyphs; /// Elbasan is the set of Unicode characters in script Elbasan. public static RangeTable Elbasan => _Elbasan; + /// Elymaic is the set of Unicode characters in script Elymaic. + public static RangeTable Elymaic => _Elymaic; /// Ethiopic is the set of Unicode characters in script Ethiopic. public static RangeTable Ethiopic => _Ethiopic; /// Georgian is the set of Unicode characters in script Georgian. @@ -5344,12 +6037,16 @@ public static class Script { public static RangeTable Greek => _Greek; /// Gujarati is the set of Unicode characters in script Gujarati. public static RangeTable Gujarati => _Gujarati; + /// Gunjala_Gondi is the set of Unicode characters in script Gunjala_Gondi. + public static RangeTable Gunjala_Gondi => _Gunjala_Gondi; /// Gurmukhi is the set of Unicode characters in script Gurmukhi. public static RangeTable Gurmukhi => _Gurmukhi; /// Han is the set of Unicode characters in script Han. public static RangeTable Han => _Han; /// Hangul is the set of Unicode characters in script Hangul. public static RangeTable Hangul => _Hangul; + /// Hanifi_Rohingya is the set of Unicode characters in script Hanifi_Rohingya. + public static RangeTable Hanifi_Rohingya => _Hanifi_Rohingya; /// Hanunoo is the set of Unicode characters in script Hanunoo. public static RangeTable Hanunoo => _Hanunoo; /// Hatran is the set of Unicode characters in script Hatran. @@ -5378,6 +6075,8 @@ public static class Script { public static RangeTable Kayah_Li => _Kayah_Li; /// Kharoshthi is the set of Unicode characters in script Kharoshthi. public static RangeTable Kharoshthi => _Kharoshthi; + /// Khitan_Small_Script is the set of Unicode characters in script Khitan_Small_Script. + public static RangeTable Khitan_Small_Script => _Khitan_Small_Script; /// Khmer is the set of Unicode characters in script Khmer. public static RangeTable Khmer => _Khmer; /// Khojki is the set of Unicode characters in script Khojki. @@ -5404,6 +6103,8 @@ public static class Script { public static RangeTable Lydian => _Lydian; /// Mahajani is the set of Unicode characters in script Mahajani. public static RangeTable Mahajani => _Mahajani; + /// Makasar is the set of Unicode characters in script Makasar. + public static RangeTable Makasar => _Makasar; /// Malayalam is the set of Unicode characters in script Malayalam. public static RangeTable Malayalam => _Malayalam; /// Mandaic is the set of Unicode characters in script Mandaic. @@ -5412,6 +6113,10 @@ public static class Script { public static RangeTable Manichaean => _Manichaean; /// Marchen is the set of Unicode characters in script Marchen. public static RangeTable Marchen => _Marchen; + /// Masaram_Gondi is the set of Unicode characters in script Masaram_Gondi. + public static RangeTable Masaram_Gondi => _Masaram_Gondi; + /// Medefaidrin is the set of Unicode characters in script Medefaidrin. + public static RangeTable Medefaidrin => _Medefaidrin; /// Meetei_Mayek is the set of Unicode characters in script Meetei_Mayek. public static RangeTable Meetei_Mayek => _Meetei_Mayek; /// Mende_Kikakui is the set of Unicode characters in script Mende_Kikakui. @@ -5434,12 +6139,18 @@ public static class Script { public static RangeTable Myanmar => _Myanmar; /// Nabataean is the set of Unicode characters in script Nabataean. public static RangeTable Nabataean => _Nabataean; + /// Nandinagari is the set of Unicode characters in script Nandinagari. + public static RangeTable Nandinagari => _Nandinagari; /// New_Tai_Lue is the set of Unicode characters in script New_Tai_Lue. public static RangeTable New_Tai_Lue => _New_Tai_Lue; /// Newa is the set of Unicode characters in script Newa. public static RangeTable Newa => _Newa; /// Nko is the set of Unicode characters in script Nko. public static RangeTable Nko => _Nko; + /// Nushu is the set of Unicode characters in script Nushu. + public static RangeTable Nushu => _Nushu; + /// Nyiakeng_Puachue_Hmong is the set of Unicode characters in script Nyiakeng_Puachue_Hmong. + public static RangeTable Nyiakeng_Puachue_Hmong => _Nyiakeng_Puachue_Hmong; /// Ogham is the set of Unicode characters in script Ogham. public static RangeTable Ogham => _Ogham; /// Ol_Chiki is the set of Unicode characters in script Ol_Chiki. @@ -5454,10 +6165,14 @@ public static class Script { public static RangeTable Old_Permic => _Old_Permic; /// Old_Persian is the set of Unicode characters in script Old_Persian. public static RangeTable Old_Persian => _Old_Persian; + /// Old_Sogdian is the set of Unicode characters in script Old_Sogdian. + public static RangeTable Old_Sogdian => _Old_Sogdian; /// Old_South_Arabian is the set of Unicode characters in script Old_South_Arabian. public static RangeTable Old_South_Arabian => _Old_South_Arabian; /// Old_Turkic is the set of Unicode characters in script Old_Turkic. public static RangeTable Old_Turkic => _Old_Turkic; + /// Old_Uyghur is the set of Unicode characters in script Old_Uyghur. + public static RangeTable Old_Uyghur => _Old_Uyghur; /// Oriya is the set of Unicode characters in script Oriya. public static RangeTable Oriya => _Oriya; /// Osage is the set of Unicode characters in script Osage. @@ -5494,8 +6209,12 @@ public static class Script { public static RangeTable SignWriting => _SignWriting; /// Sinhala is the set of Unicode characters in script Sinhala. public static RangeTable Sinhala => _Sinhala; + /// Sogdian is the set of Unicode characters in script Sogdian. + public static RangeTable Sogdian => _Sogdian; /// Sora_Sompeng is the set of Unicode characters in script Sora_Sompeng. public static RangeTable Sora_Sompeng => _Sora_Sompeng; + /// Soyombo is the set of Unicode characters in script Soyombo. + public static RangeTable Soyombo => _Soyombo; /// Sundanese is the set of Unicode characters in script Sundanese. public static RangeTable Sundanese => _Sundanese; /// Syloti_Nagri is the set of Unicode characters in script Syloti_Nagri. @@ -5516,6 +6235,8 @@ public static class Script { public static RangeTable Takri => _Takri; /// Tamil is the set of Unicode characters in script Tamil. public static RangeTable Tamil => _Tamil; + /// Tangsa is the set of Unicode characters in script Tangsa. + public static RangeTable Tangsa => _Tangsa; /// Tangut is the set of Unicode characters in script Tangut. public static RangeTable Tangut => _Tangut; /// Telugu is the set of Unicode characters in script Telugu. @@ -5530,18 +6251,28 @@ public static class Script { public static RangeTable Tifinagh => _Tifinagh; /// Tirhuta is the set of Unicode characters in script Tirhuta. public static RangeTable Tirhuta => _Tirhuta; + /// Toto is the set of Unicode characters in script Toto. + public static RangeTable Toto => _Toto; /// Ugaritic is the set of Unicode characters in script Ugaritic. public static RangeTable Ugaritic => _Ugaritic; /// Vai is the set of Unicode characters in script Vai. public static RangeTable Vai => _Vai; + /// Vithkuqi is the set of Unicode characters in script Vithkuqi. + public static RangeTable Vithkuqi => _Vithkuqi; + /// Wancho is the set of Unicode characters in script Wancho. + public static RangeTable Wancho => _Wancho; /// Warang_Citi is the set of Unicode characters in script Warang_Citi. public static RangeTable Warang_Citi => _Warang_Citi; + /// Yezidi is the set of Unicode characters in script Yezidi. + public static RangeTable Yezidi => _Yezidi; /// Yi is the set of Unicode characters in script Yi. public static RangeTable Yi => _Yi; + /// Zanabazar_Square is the set of Unicode characters in script Zanabazar_Square. + public static RangeTable Zanabazar_Square => _Zanabazar_Square; } // Generated by running -// maketables --props=all --url=http://www.unicode.org/Public/9.0.0/ucd/ +// maketables --props=all --url=http://www.unicode.org/Public/14.0.0/ucd/ // DO NOT EDIT /// Static class containing the proeprty-based tables. @@ -5579,6 +6310,7 @@ public static class Property { { "Prepended_Concatenation_Mark", Prepended_Concatenation_Mark }, { "Quotation_Mark", Quotation_Mark }, { "Radical", Radical }, + { "Regional_Indicator", Regional_Indicator }, { "Sentence_Terminal", Sentence_Terminal }, { "STerm", Sentence_Terminal }, { "Soft_Dotted", Soft_Dotted }, @@ -5622,6 +6354,7 @@ public static class Property { new Range16 (0x2e1a, 0x2e1a, 1), new Range16 (0x2e3a, 0x2e3b, 1), new Range16 (0x2e40, 0x2e40, 1), + new Range16 (0x2e5d, 0x2e5d, 1), new Range16 (0x301c, 0x301c, 1), new Range16 (0x3030, 0x3030, 1), new Range16 (0x30a0, 0x30a0, 1), @@ -5630,6 +6363,9 @@ public static class Property { new Range16 (0xfe63, 0xfe63, 1), new Range16 (0xff0d, 0xff0d, 1), }, + r32: new Range32 [] { + new Range32 (0x10ead, 0x10ead, 1), + }, latinOffset: 1 ); /* RangeTable */ @@ -5678,6 +6414,8 @@ public static class Property { new Range16 (0x07a6, 0x07b0, 1), new Range16 (0x07eb, 0x07f5, 1), new Range16 (0x0818, 0x0819, 1), + new Range16 (0x0898, 0x089f, 1), + new Range16 (0x08c9, 0x08d2, 1), new Range16 (0x08e3, 0x08fe, 1), new Range16 (0x093c, 0x093c, 1), new Range16 (0x094d, 0x094d, 1), @@ -5689,16 +6427,21 @@ public static class Property { new Range16 (0x0a4d, 0x0a4d, 1), new Range16 (0x0abc, 0x0abc, 1), new Range16 (0x0acd, 0x0acd, 1), + new Range16 (0x0afd, 0x0aff, 1), new Range16 (0x0b3c, 0x0b3c, 1), new Range16 (0x0b4d, 0x0b4d, 1), + new Range16 (0x0b55, 0x0b55, 1), new Range16 (0x0bcd, 0x0bcd, 1), + new Range16 (0x0c3c, 0x0c3c, 1), new Range16 (0x0c4d, 0x0c4d, 1), new Range16 (0x0cbc, 0x0cbc, 1), new Range16 (0x0ccd, 0x0ccd, 1), + new Range16 (0x0d3b, 0x0d3c, 1), new Range16 (0x0d4d, 0x0d4d, 1), new Range16 (0x0dca, 0x0dca, 1), new Range16 (0x0e47, 0x0e4c, 1), new Range16 (0x0e4e, 0x0e4e, 1), + new Range16 (0x0eba, 0x0eba, 1), new Range16 (0x0ec8, 0x0ecc, 1), new Range16 (0x0f18, 0x0f19, 1), new Range16 (0x0f35, 0x0f35, 1), @@ -5710,15 +6453,20 @@ public static class Property { new Range16 (0x0fc6, 0x0fc6, 1), new Range16 (0x1037, 0x1037, 1), new Range16 (0x1039, 0x103a, 1), + new Range16 (0x1063, 0x1064, 1), + new Range16 (0x1069, 0x106d, 1), new Range16 (0x1087, 0x108d, 1), new Range16 (0x108f, 0x108f, 1), new Range16 (0x109a, 0x109b, 1), + new Range16 (0x135d, 0x135f, 1), + new Range16 (0x1714, 0x1715, 1), new Range16 (0x17c9, 0x17d3, 1), new Range16 (0x17dd, 0x17dd, 1), new Range16 (0x1939, 0x193b, 1), new Range16 (0x1a75, 0x1a7c, 1), new Range16 (0x1a7f, 0x1a7f, 1), - new Range16 (0x1ab0, 0x1abd, 1), + new Range16 (0x1ab0, 0x1abe, 1), + new Range16 (0x1ac1, 0x1acb, 1), new Range16 (0x1b34, 0x1b34, 1), new Range16 (0x1b44, 0x1b44, 1), new Range16 (0x1b6b, 0x1b73, 1), @@ -5728,11 +6476,10 @@ public static class Property { new Range16 (0x1cd0, 0x1ce8, 1), new Range16 (0x1ced, 0x1ced, 1), new Range16 (0x1cf4, 0x1cf4, 1), - new Range16 (0x1cf8, 0x1cf9, 1), + new Range16 (0x1cf7, 0x1cf9, 1), new Range16 (0x1d2c, 0x1d6a, 1), new Range16 (0x1dc4, 0x1dcf, 1), - new Range16 (0x1df5, 0x1df5, 1), - new Range16 (0x1dfd, 0x1dff, 1), + new Range16 (0x1df5, 0x1dff, 1), new Range16 (0x1fbd, 0x1fbd, 1), new Range16 (0x1fbf, 0x1fc1, 1), new Range16 (0x1fcd, 0x1fcf, 1), @@ -5749,8 +6496,8 @@ public static class Property { new Range16 (0xa67f, 0xa67f, 1), new Range16 (0xa69c, 0xa69d, 1), new Range16 (0xa6f0, 0xa6f1, 1), - new Range16 (0xa717, 0xa721, 1), - new Range16 (0xa788, 0xa788, 1), + new Range16 (0xa700, 0xa721, 1), + new Range16 (0xa788, 0xa78a, 1), new Range16 (0xa7f8, 0xa7f9, 1), new Range16 (0xa8c4, 0xa8c4, 1), new Range16 (0xa8e0, 0xa8f1, 1), @@ -5763,6 +6510,7 @@ public static class Property { new Range16 (0xaabf, 0xaac2, 1), new Range16 (0xaaf6, 0xaaf6, 1), new Range16 (0xab5b, 0xab5f, 1), + new Range16 (0xab69, 0xab6b, 1), new Range16 (0xabec, 0xabed, 1), new Range16 (0xfb1e, 0xfb1e, 1), new Range16 (0xfe20, 0xfe2f, 1), @@ -5774,7 +6522,15 @@ public static class Property { }, r32: new Range32 [] { new Range32 (0x102e0, 0x102e0, 1), + new Range32 (0x10780, 0x10785, 1), + new Range32 (0x10787, 0x107b0, 1), + new Range32 (0x107b2, 0x107ba, 1), new Range32 (0x10ae5, 0x10ae6, 1), + new Range32 (0x10d22, 0x10d27, 1), + new Range32 (0x10f46, 0x10f50, 1), + new Range32 (0x10f82, 0x10f85, 1), + new Range32 (0x11046, 0x11046, 1), + new Range32 (0x11070, 0x11070, 1), new Range32 (0x110b9, 0x110ba, 1), new Range32 (0x11133, 0x11134, 1), new Range32 (0x11173, 0x11173, 1), @@ -5793,14 +6549,34 @@ public static class Property { new Range32 (0x1163f, 0x1163f, 1), new Range32 (0x116b6, 0x116b7, 1), new Range32 (0x1172b, 0x1172b, 1), + new Range32 (0x11839, 0x1183a, 1), + new Range32 (0x1193d, 0x1193e, 1), + new Range32 (0x11943, 0x11943, 1), + new Range32 (0x119e0, 0x119e0, 1), + new Range32 (0x11a34, 0x11a34, 1), + new Range32 (0x11a47, 0x11a47, 1), + new Range32 (0x11a99, 0x11a99, 1), new Range32 (0x11c3f, 0x11c3f, 1), + new Range32 (0x11d42, 0x11d42, 1), + new Range32 (0x11d44, 0x11d45, 1), + new Range32 (0x11d97, 0x11d97, 1), new Range32 (0x16af0, 0x16af4, 1), + new Range32 (0x16b30, 0x16b36, 1), new Range32 (0x16f8f, 0x16f9f, 1), + new Range32 (0x16ff0, 0x16ff1, 1), + new Range32 (0x1aff0, 0x1aff3, 1), + new Range32 (0x1aff5, 0x1affb, 1), + new Range32 (0x1affd, 0x1affe, 1), + new Range32 (0x1cf00, 0x1cf2d, 1), + new Range32 (0x1cf30, 0x1cf46, 1), new Range32 (0x1d167, 0x1d169, 1), new Range32 (0x1d16d, 0x1d172, 1), new Range32 (0x1d17b, 0x1d182, 1), new Range32 (0x1d185, 0x1d18b, 1), new Range32 (0x1d1aa, 0x1d1ad, 1), + new Range32 (0x1e130, 0x1e136, 1), + new Range32 (0x1e2ae, 0x1e2ae, 1), + new Range32 (0x1e2ec, 0x1e2ef, 1), new Range32 (0x1e8d0, 0x1e8d6, 1), new Range32 (0x1e944, 0x1e946, 1), new Range32 (0x1e948, 0x1e94a, 1), @@ -5814,6 +6590,7 @@ public static class Property { new Range16 (0x02d0, 0x02d1, 1), new Range16 (0x0640, 0x0640, 1), new Range16 (0x07fa, 0x07fa, 1), + new Range16 (0x0b55, 0x0b55, 1), new Range16 (0x0e46, 0x0e46, 1), new Range16 (0x0ec6, 0x0ec6, 1), new Range16 (0x180a, 0x180a, 1), @@ -5835,10 +6612,14 @@ public static class Property { new Range16 (0xff70, 0xff70, 1), }, r32: new Range32 [] { + new Range32 (0x10781, 0x10782, 1), new Range32 (0x1135d, 0x1135d, 1), new Range32 (0x115c6, 0x115c8, 1), + new Range32 (0x11a98, 0x11a98, 1), new Range32 (0x16b42, 0x16b43, 1), - new Range32 (0x16fe0, 0x16fe0, 1), + new Range32 (0x16fe0, 0x16fe1, 1), + new Range32 (0x16fe3, 0x16fe3, 1), + new Range32 (0x1e13c, 0x1e13d, 1), new Range32 (0x1e944, 0x1e946, 1), }, latinOffset: 1 @@ -5890,19 +6671,24 @@ public static class Property { new Range16 (0x3006, 0x3007, 1), new Range16 (0x3021, 0x3029, 1), new Range16 (0x3038, 0x303a, 1), - new Range16 (0x3400, 0x4db5, 1), - new Range16 (0x4e00, 0x9fd5, 1), + new Range16 (0x3400, 0x4dbf, 1), + new Range16 (0x4e00, 0x9fff, 1), new Range16 (0xf900, 0xfa6d, 1), new Range16 (0xfa70, 0xfad9, 1), }, r32: new Range32 [] { - new Range32 (0x17000, 0x187ec, 1), - new Range32 (0x18800, 0x18af2, 1), - new Range32 (0x20000, 0x2a6d6, 1), - new Range32 (0x2a700, 0x2b734, 1), + new Range32 (0x16fe4, 0x16fe4, 1), + new Range32 (0x17000, 0x187f7, 1), + new Range32 (0x18800, 0x18cd5, 1), + new Range32 (0x18d00, 0x18d08, 1), + new Range32 (0x1b170, 0x1b2fb, 1), + new Range32 (0x20000, 0x2a6df, 1), + new Range32 (0x2a700, 0x2b738, 1), new Range32 (0x2b740, 0x2b81d, 1), new Range32 (0x2b820, 0x2cea1, 1), + new Range32 (0x2ceb0, 0x2ebe0, 1), new Range32 (0x2f800, 0x2fa1d, 1), + new Range32 (0x30000, 0x3134a, 1), } ); /* RangeTable */ @@ -5998,6 +6784,7 @@ public static class Property { new Range16 (0x0ac7, 0x0ac9, 1), new Range16 (0x0acb, 0x0acc, 1), new Range16 (0x0ae2, 0x0ae3, 1), + new Range16 (0x0afa, 0x0afc, 1), new Range16 (0x0b01, 0x0b03, 1), new Range16 (0x0b3e, 0x0b44, 1), new Range16 (0x0b47, 0x0b48, 1), @@ -6021,13 +6808,13 @@ public static class Property { new Range16 (0x0cca, 0x0ccc, 1), new Range16 (0x0cd5, 0x0cd6, 1), new Range16 (0x0ce2, 0x0ce3, 1), - new Range16 (0x0d01, 0x0d03, 1), + new Range16 (0x0d00, 0x0d03, 1), new Range16 (0x0d3e, 0x0d44, 1), new Range16 (0x0d46, 0x0d48, 1), new Range16 (0x0d4a, 0x0d4c, 1), new Range16 (0x0d57, 0x0d57, 1), new Range16 (0x0d62, 0x0d63, 1), - new Range16 (0x0d82, 0x0d83, 1), + new Range16 (0x0d81, 0x0d83, 1), new Range16 (0x0dcf, 0x0dd4, 1), new Range16 (0x0dd6, 0x0dd6, 1), new Range16 (0x0dd8, 0x0ddf, 1), @@ -6047,12 +6834,12 @@ public static class Property { new Range16 (0x103b, 0x103e, 1), new Range16 (0x1056, 0x1059, 1), new Range16 (0x105e, 0x1060, 1), - new Range16 (0x1062, 0x1062, 1), - new Range16 (0x1067, 0x1068, 1), + new Range16 (0x1062, 0x1064, 1), + new Range16 (0x1067, 0x106d, 1), new Range16 (0x1071, 0x1074, 1), - new Range16 (0x1082, 0x1086, 1), - new Range16 (0x109c, 0x109d, 1), - new Range16 (0x135f, 0x135f, 1), + new Range16 (0x1082, 0x108d, 1), + new Range16 (0x108f, 0x108f, 1), + new Range16 (0x109a, 0x109d, 1), new Range16 (0x1712, 0x1713, 1), new Range16 (0x1732, 0x1733, 1), new Range16 (0x1752, 0x1753, 1), @@ -6065,30 +6852,36 @@ public static class Property { new Range16 (0x1a17, 0x1a1b, 1), new Range16 (0x1a55, 0x1a5e, 1), new Range16 (0x1a61, 0x1a74, 1), + new Range16 (0x1abf, 0x1ac0, 1), + new Range16 (0x1acc, 0x1ace, 1), new Range16 (0x1b00, 0x1b04, 1), new Range16 (0x1b35, 0x1b43, 1), new Range16 (0x1b80, 0x1b82, 1), new Range16 (0x1ba1, 0x1ba9, 1), new Range16 (0x1bac, 0x1bad, 1), new Range16 (0x1be7, 0x1bf1, 1), - new Range16 (0x1c24, 0x1c35, 1), - new Range16 (0x1cf2, 0x1cf3, 1), + new Range16 (0x1c24, 0x1c36, 1), new Range16 (0x1de7, 0x1df4, 1), new Range16 (0x24b6, 0x24e9, 1), new Range16 (0x2de0, 0x2dff, 1), new Range16 (0xa674, 0xa67b, 1), new Range16 (0xa69e, 0xa69f, 1), + new Range16 (0xa802, 0xa802, 1), + new Range16 (0xa80b, 0xa80b, 1), new Range16 (0xa823, 0xa827, 1), new Range16 (0xa880, 0xa881, 1), new Range16 (0xa8b4, 0xa8c3, 1), new Range16 (0xa8c5, 0xa8c5, 1), + new Range16 (0xa8ff, 0xa8ff, 1), new Range16 (0xa926, 0xa92a, 1), new Range16 (0xa947, 0xa952, 1), new Range16 (0xa980, 0xa983, 1), new Range16 (0xa9b4, 0xa9bf, 1), + new Range16 (0xa9e5, 0xa9e5, 1), new Range16 (0xaa29, 0xaa36, 1), new Range16 (0xaa43, 0xaa43, 1), new Range16 (0xaa4c, 0xaa4d, 1), + new Range16 (0xaa7b, 0xaa7d, 1), new Range16 (0xaab0, 0xaab0, 1), new Range16 (0xaab2, 0xaab4, 1), new Range16 (0xaab7, 0xaab8, 1), @@ -6103,14 +6896,20 @@ public static class Property { new Range32 (0x10a01, 0x10a03, 1), new Range32 (0x10a05, 0x10a06, 1), new Range32 (0x10a0c, 0x10a0f, 1), + new Range32 (0x10d24, 0x10d27, 1), + new Range32 (0x10eab, 0x10eac, 1), new Range32 (0x11000, 0x11002, 1), new Range32 (0x11038, 0x11045, 1), + new Range32 (0x11073, 0x11074, 1), new Range32 (0x11082, 0x11082, 1), new Range32 (0x110b0, 0x110b8, 1), + new Range32 (0x110c2, 0x110c2, 1), new Range32 (0x11100, 0x11102, 1), new Range32 (0x11127, 0x11132, 1), + new Range32 (0x11145, 0x11146, 1), new Range32 (0x11180, 0x11182, 1), new Range32 (0x111b3, 0x111bf, 1), + new Range32 (0x111ce, 0x111cf, 1), new Range32 (0x1122c, 0x11234, 1), new Range32 (0x11237, 0x11237, 1), new Range32 (0x1123e, 0x1123e, 1), @@ -6131,12 +6930,38 @@ public static class Property { new Range32 (0x11640, 0x11640, 1), new Range32 (0x116ab, 0x116b5, 1), new Range32 (0x1171d, 0x1172a, 1), + new Range32 (0x1182c, 0x11838, 1), + new Range32 (0x11930, 0x11935, 1), + new Range32 (0x11937, 0x11938, 1), + new Range32 (0x1193b, 0x1193c, 1), + new Range32 (0x11940, 0x11940, 1), + new Range32 (0x11942, 0x11942, 1), + new Range32 (0x119d1, 0x119d7, 1), + new Range32 (0x119da, 0x119df, 1), + new Range32 (0x119e4, 0x119e4, 1), + new Range32 (0x11a01, 0x11a0a, 1), + new Range32 (0x11a35, 0x11a39, 1), + new Range32 (0x11a3b, 0x11a3e, 1), + new Range32 (0x11a51, 0x11a5b, 1), + new Range32 (0x11a8a, 0x11a97, 1), new Range32 (0x11c2f, 0x11c36, 1), new Range32 (0x11c38, 0x11c3e, 1), new Range32 (0x11c92, 0x11ca7, 1), new Range32 (0x11ca9, 0x11cb6, 1), - new Range32 (0x16b30, 0x16b36, 1), - new Range32 (0x16f51, 0x16f7e, 1), + new Range32 (0x11d31, 0x11d36, 1), + new Range32 (0x11d3a, 0x11d3a, 1), + new Range32 (0x11d3c, 0x11d3d, 1), + new Range32 (0x11d3f, 0x11d41, 1), + new Range32 (0x11d43, 0x11d43, 1), + new Range32 (0x11d47, 0x11d47, 1), + new Range32 (0x11d8a, 0x11d8e, 1), + new Range32 (0x11d90, 0x11d91, 1), + new Range32 (0x11d93, 0x11d96, 1), + new Range32 (0x11ef3, 0x11ef6, 1), + new Range32 (0x16f4f, 0x16f4f, 1), + new Range32 (0x16f51, 0x16f87, 1), + new Range32 (0x16f8f, 0x16f92, 1), + new Range32 (0x16ff0, 0x16ff1, 1), new Range32 (0x1bc9e, 0x1bc9e, 1), new Range32 (0x1e000, 0x1e006, 1), new Range32 (0x1e008, 0x1e018, 1), @@ -6182,6 +7007,7 @@ public static class Property { new Range16 (0x0d57, 0x0d57, 1), new Range16 (0x0dcf, 0x0dcf, 1), new Range16 (0x0ddf, 0x0ddf, 1), + new Range16 (0x1b35, 0x1b35, 1), new Range16 (0x200c, 0x200c, 1), new Range16 (0x302e, 0x302f, 1), new Range16 (0xff9e, 0xff9f, 1), @@ -6192,6 +7018,7 @@ public static class Property { new Range32 (0x114b0, 0x114b0, 1), new Range32 (0x114bd, 0x114bd, 1), new Range32 (0x115af, 0x115af, 1), + new Range32 (0x11930, 0x11930, 1), new Range32 (0x1d165, 0x1d165, 1), new Range32 (0x1d16e, 0x1d172, 1), new Range32 (0xe0020, 0xe007f, 1), @@ -6240,6 +7067,12 @@ public static class Property { new Range16 (0xa7f8, 0xa7f9, 1), new Range16 (0xab5c, 0xab5f, 1), }, + r32: new Range32 [] { + new Range32 (0x10780, 0x10780, 1), + new Range32 (0x10783, 0x10785, 1), + new Range32 (0x10787, 0x107b0, 1), + new Range32 (0x107b2, 0x107ba, 1), + }, latinOffset: 2 ); /* RangeTable */ @@ -6447,10 +7280,12 @@ public static class Property { new Range16 (0x0600, 0x0605, 1), new Range16 (0x06dd, 0x06dd, 1), new Range16 (0x070f, 0x070f, 1), + new Range16 (0x0890, 0x0891, 1), new Range16 (0x08e2, 0x08e2, 1), }, r32: new Range32 [] { new Range32 (0x110bd, 0x110bd, 1), + new Range32 (0x110cd, 0x110cd, 1), } ); /* RangeTable */ @@ -6481,16 +7316,27 @@ public static class Property { } ); /* RangeTable */ + internal static RangeTable _Regional_Indicator = new RangeTable ( + r16: new Range16 [] { + }, + r32: new Range32 [] { + new Range32 (0x1f1e6, 0x1f1ff, 1), + } + ); /* RangeTable */ + internal static RangeTable _Sentence_Terminal = new RangeTable ( r16: new Range16 [] { new Range16 (0x0021, 0x0021, 1), new Range16 (0x002e, 0x002e, 1), new Range16 (0x003f, 0x003f, 1), new Range16 (0x0589, 0x0589, 1), - new Range16 (0x061f, 0x061f, 1), + new Range16 (0x061d, 0x061f, 1), new Range16 (0x06d4, 0x06d4, 1), new Range16 (0x0700, 0x0702, 1), new Range16 (0x07f9, 0x07f9, 1), + new Range16 (0x0837, 0x0837, 1), + new Range16 (0x0839, 0x0839, 1), + new Range16 (0x083d, 0x083e, 1), new Range16 (0x0964, 0x0965, 1), new Range16 (0x104a, 0x104b, 1), new Range16 (0x1362, 0x1362, 1), @@ -6503,12 +7349,14 @@ public static class Property { new Range16 (0x1aa8, 0x1aab, 1), new Range16 (0x1b5a, 0x1b5b, 1), new Range16 (0x1b5e, 0x1b5f, 1), + new Range16 (0x1b7d, 0x1b7e, 1), new Range16 (0x1c3b, 0x1c3c, 1), new Range16 (0x1c7e, 0x1c7f, 1), new Range16 (0x203c, 0x203d, 1), new Range16 (0x2047, 0x2049, 1), new Range16 (0x2e2e, 0x2e2e, 1), new Range16 (0x2e3c, 0x2e3c, 1), + new Range16 (0x2e53, 0x2e54, 1), new Range16 (0x3002, 0x3002, 1), new Range16 (0xa4ff, 0xa4ff, 1), new Range16 (0xa60e, 0xa60f, 1), @@ -6530,6 +7378,8 @@ public static class Property { }, r32: new Range32 [] { new Range32 (0x10a56, 0x10a57, 1), + new Range32 (0x10f55, 0x10f59, 1), + new Range32 (0x10f86, 0x10f89, 1), new Range32 (0x11047, 0x11048, 1), new Range32 (0x110be, 0x110c1, 1), new Range32 (0x11141, 0x11143, 1), @@ -6544,11 +7394,17 @@ public static class Property { new Range32 (0x115c9, 0x115d7, 1), new Range32 (0x11641, 0x11642, 1), new Range32 (0x1173c, 0x1173e, 1), + new Range32 (0x11944, 0x11944, 1), + new Range32 (0x11946, 0x11946, 1), + new Range32 (0x11a42, 0x11a43, 1), + new Range32 (0x11a9b, 0x11a9c, 1), new Range32 (0x11c41, 0x11c42, 1), + new Range32 (0x11ef7, 0x11ef8, 1), new Range32 (0x16a6e, 0x16a6f, 1), new Range32 (0x16af5, 0x16af5, 1), new Range32 (0x16b37, 0x16b38, 1), new Range32 (0x16b44, 0x16b44, 1), + new Range32 (0x16e98, 0x16e98, 1), new Range32 (0x1bc9f, 0x1bc9f, 1), new Range32 (0x1da88, 0x1da88, 1), }, @@ -6590,6 +7446,7 @@ public static class Property { new Range32 (0x1d62a, 0x1d62b, 1), new Range32 (0x1d65e, 0x1d65f, 1), new Range32 (0x1d692, 0x1d693, 1), + new Range32 (0x1df1a, 0x1df1a, 1), }, latinOffset: 1 ); /* RangeTable */ @@ -6607,7 +7464,7 @@ public static class Property { new Range16 (0x05c3, 0x05c3, 1), new Range16 (0x060c, 0x060c, 1), new Range16 (0x061b, 0x061b, 1), - new Range16 (0x061f, 0x061f, 1), + new Range16 (0x061d, 0x061f, 1), new Range16 (0x06d4, 0x06d4, 1), new Range16 (0x0700, 0x070a, 1), new Range16 (0x070c, 0x070c, 1), @@ -6620,7 +7477,7 @@ public static class Property { new Range16 (0x0f0d, 0x0f12, 1), new Range16 (0x104a, 0x104b, 1), new Range16 (0x1361, 0x1368, 1), - new Range16 (0x166d, 0x166e, 1), + new Range16 (0x166e, 0x166e, 1), new Range16 (0x16eb, 0x16ed, 1), new Range16 (0x1735, 0x1736, 1), new Range16 (0x17d4, 0x17d6, 1), @@ -6631,6 +7488,7 @@ public static class Property { new Range16 (0x1aa8, 0x1aab, 1), new Range16 (0x1b5a, 0x1b5b, 1), new Range16 (0x1b5d, 0x1b5f, 1), + new Range16 (0x1b7d, 0x1b7e, 1), new Range16 (0x1c3b, 0x1c3f, 1), new Range16 (0x1c7e, 0x1c7f, 1), new Range16 (0x203c, 0x203d, 1), @@ -6638,6 +7496,9 @@ public static class Property { new Range16 (0x2e2e, 0x2e2e, 1), new Range16 (0x2e3c, 0x2e3c, 1), new Range16 (0x2e41, 0x2e41, 1), + new Range16 (0x2e4c, 0x2e4c, 1), + new Range16 (0x2e4e, 0x2e4f, 1), + new Range16 (0x2e53, 0x2e54, 1), new Range16 (0x3001, 0x3002, 1), new Range16 (0xa4fe, 0xa4ff, 1), new Range16 (0xa60d, 0xa60f, 1), @@ -6669,6 +7530,8 @@ public static class Property { new Range32 (0x10af0, 0x10af5, 1), new Range32 (0x10b3a, 0x10b3f, 1), new Range32 (0x10b99, 0x10b9c, 1), + new Range32 (0x10f55, 0x10f59, 1), + new Range32 (0x10f86, 0x10f89, 1), new Range32 (0x11047, 0x1104d, 1), new Range32 (0x110be, 0x110c1, 1), new Range32 (0x11141, 0x11143, 1), @@ -6678,18 +7541,25 @@ public static class Property { new Range32 (0x11238, 0x1123c, 1), new Range32 (0x112a9, 0x112a9, 1), new Range32 (0x1144b, 0x1144d, 1), - new Range32 (0x1145b, 0x1145b, 1), + new Range32 (0x1145a, 0x1145b, 1), new Range32 (0x115c2, 0x115c5, 1), new Range32 (0x115c9, 0x115d7, 1), new Range32 (0x11641, 0x11642, 1), new Range32 (0x1173c, 0x1173e, 1), + new Range32 (0x11944, 0x11944, 1), + new Range32 (0x11946, 0x11946, 1), + new Range32 (0x11a42, 0x11a43, 1), + new Range32 (0x11a9b, 0x11a9c, 1), + new Range32 (0x11aa1, 0x11aa2, 1), new Range32 (0x11c41, 0x11c43, 1), new Range32 (0x11c71, 0x11c71, 1), + new Range32 (0x11ef7, 0x11ef8, 1), new Range32 (0x12470, 0x12474, 1), new Range32 (0x16a6e, 0x16a6f, 1), new Range32 (0x16af5, 0x16af5, 1), new Range32 (0x16b37, 0x16b39, 1), new Range32 (0x16b44, 0x16b44, 1), + new Range32 (0x16e97, 0x16e98, 1), new Range32 (0x1bc9f, 0x1bc9f, 1), new Range32 (0x1da87, 0x1da8a, 1), }, @@ -6698,8 +7568,8 @@ public static class Property { internal static RangeTable _Unified_Ideograph = new RangeTable ( r16: new Range16 [] { - new Range16 (0x3400, 0x4db5, 1), - new Range16 (0x4e00, 0x9fd5, 1), + new Range16 (0x3400, 0x4dbf, 1), + new Range16 (0x4e00, 0x9fff, 1), new Range16 (0xfa0e, 0xfa0f, 1), new Range16 (0xfa11, 0xfa11, 1), new Range16 (0xfa13, 0xfa14, 1), @@ -6709,16 +7579,19 @@ public static class Property { new Range16 (0xfa27, 0xfa29, 1), }, r32: new Range32 [] { - new Range32 (0x20000, 0x2a6d6, 1), - new Range32 (0x2a700, 0x2b734, 1), + new Range32 (0x20000, 0x2a6df, 1), + new Range32 (0x2a700, 0x2b738, 1), new Range32 (0x2b740, 0x2b81d, 1), new Range32 (0x2b820, 0x2cea1, 1), + new Range32 (0x2ceb0, 0x2ebe0, 1), + new Range32 (0x30000, 0x3134a, 1), } ); /* RangeTable */ internal static RangeTable _Variation_Selector = new RangeTable ( r16: new Range16 [] { new Range16 (0x180b, 0x180d, 1), + new Range16 (0x180f, 0x180f, 1), new Range16 (0xfe00, 0xfe0f, 1), }, r32: new Range32 [] { @@ -6796,6 +7669,8 @@ public static class Property { public static RangeTable Quotation_Mark => _Quotation_Mark; /// Radical is the set of Unicode characters with property Radical. public static RangeTable Radical => _Radical; + /// Regional_Indicator is the set of Unicode characters with property Regional_Indicator. + public static RangeTable Regional_Indicator => _Regional_Indicator; /// STerm is an alias for Sentence_Terminal. public static RangeTable STerm => _Sentence_Terminal; /// Sentence_Terminal is the set of Unicode characters with property Sentence_Terminal. @@ -6813,7 +7688,7 @@ public static class Property { } // Generated by running - // maketables --data=http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt --casefolding=http://www.unicode.org/Public/9.0.0/ucd/CaseFolding.txt + // maketables --data=http://www.unicode.org/Public/14.0.0/ucd/UnicodeData.txt --casefolding=http://www.unicode.org/Public/14.0.0/ucd/CaseFolding.txt // DO NOT EDIT // CaseRanges is the table describing case mappings for all letters with @@ -6928,6 +7803,7 @@ public static class Property { new CaseRange (0x0275, 0x0275, -214, 0, -214), new CaseRange (0x027D, 0x027D, 10727, 0, 10727), new CaseRange (0x0280, 0x0280, -218, 0, -218), + new CaseRange (0x0282, 0x0282, 42307, 0, 42307), new CaseRange (0x0283, 0x0283, -218, 0, -218), new CaseRange (0x0287, 0x0287, 42282, 0, 42282), new CaseRange (0x0288, 0x0288, -218, 0, -218), @@ -6987,6 +7863,8 @@ public static class Property { new CaseRange (0x10A0, 0x10C5, 0, 7264, 0), new CaseRange (0x10C7, 0x10C7, 0, 7264, 0), new CaseRange (0x10CD, 0x10CD, 0, 7264, 0), + new CaseRange (0x10D0, 0x10FA, 3008, 0, 0), + new CaseRange (0x10FD, 0x10FF, 3008, 0, 0), new CaseRange (0x13A0, 0x13EF, 0, 38864, 0), new CaseRange (0x13F0, 0x13F5, 0, 8, 0), new CaseRange (0x13F8, 0x13FD, -8, 0, -8), @@ -6998,8 +7876,11 @@ public static class Property { new CaseRange (0x1C86, 0x1C86, -6236, 0, -6236), new CaseRange (0x1C87, 0x1C87, -6181, 0, -6181), new CaseRange (0x1C88, 0x1C88, 35266, 0, 35266), + new CaseRange (0x1C90, 0x1CBA, 0, -3008, 0), + new CaseRange (0x1CBD, 0x1CBF, 0, -3008, 0), new CaseRange (0x1D79, 0x1D79, 35332, 0, 35332), new CaseRange (0x1D7D, 0x1D7D, 3814, 0, 3814), + new CaseRange (0x1D8E, 0x1D8E, 35384, 0, 35384), new CaseRange (0x1E00, 0x1E95, UpperLower, UpperLower, UpperLower), new CaseRange (0x1E9B, 0x1E9B, -59, 0, -59), new CaseRange (0x1E9E, 0x1E9E, 0, -7615, 0), @@ -7067,8 +7948,8 @@ public static class Property { new CaseRange (0x2183, 0x2184, UpperLower, UpperLower, UpperLower), new CaseRange (0x24B6, 0x24CF, 0, 26, 0), new CaseRange (0x24D0, 0x24E9, -26, 0, -26), - new CaseRange (0x2C00, 0x2C2E, 0, 48, 0), - new CaseRange (0x2C30, 0x2C5E, -48, 0, -48), + new CaseRange (0x2C00, 0x2C2F, 0, 48, 0), + new CaseRange (0x2C30, 0x2C5F, -48, 0, -48), new CaseRange (0x2C60, 0x2C61, UpperLower, UpperLower, UpperLower), new CaseRange (0x2C62, 0x2C62, 0, -10743, 0), new CaseRange (0x2C63, 0x2C63, 0, -3814, 0), @@ -7099,6 +7980,7 @@ public static class Property { new CaseRange (0xA78B, 0xA78C, UpperLower, UpperLower, UpperLower), new CaseRange (0xA78D, 0xA78D, 0, -42280, 0), new CaseRange (0xA790, 0xA793, UpperLower, UpperLower, UpperLower), + new CaseRange (0xA794, 0xA794, 48, 0, 48), new CaseRange (0xA796, 0xA7A9, UpperLower, UpperLower, UpperLower), new CaseRange (0xA7AA, 0xA7AA, 0, -42308, 0), new CaseRange (0xA7AB, 0xA7AB, 0, -42319, 0), @@ -7109,7 +7991,14 @@ public static class Property { new CaseRange (0xA7B1, 0xA7B1, 0, -42282, 0), new CaseRange (0xA7B2, 0xA7B2, 0, -42261, 0), new CaseRange (0xA7B3, 0xA7B3, 0, 928, 0), - new CaseRange (0xA7B4, 0xA7B7, UpperLower, UpperLower, UpperLower), + new CaseRange (0xA7B4, 0xA7C3, UpperLower, UpperLower, UpperLower), + new CaseRange (0xA7C4, 0xA7C4, 0, -48, 0), + new CaseRange (0xA7C5, 0xA7C5, 0, -42307, 0), + new CaseRange (0xA7C6, 0xA7C6, 0, -35384, 0), + new CaseRange (0xA7C7, 0xA7CA, UpperLower, UpperLower, UpperLower), + new CaseRange (0xA7D0, 0xA7D1, UpperLower, UpperLower, UpperLower), + new CaseRange (0xA7D6, 0xA7D9, UpperLower, UpperLower, UpperLower), + new CaseRange (0xA7F5, 0xA7F6, UpperLower, UpperLower, UpperLower), new CaseRange (0xAB53, 0xAB53, -928, 0, -928), new CaseRange (0xAB70, 0xABBF, -38864, 0, -38864), new CaseRange (0xFF21, 0xFF3A, 0, 32, 0), @@ -7118,10 +8007,20 @@ public static class Property { new CaseRange (0x10428, 0x1044F, -40, 0, -40), new CaseRange (0x104B0, 0x104D3, 0, 40, 0), new CaseRange (0x104D8, 0x104FB, -40, 0, -40), + new CaseRange (0x10570, 0x1057A, 0, 39, 0), + new CaseRange (0x1057C, 0x1058A, 0, 39, 0), + new CaseRange (0x1058C, 0x10592, 0, 39, 0), + new CaseRange (0x10594, 0x10595, 0, 39, 0), + new CaseRange (0x10597, 0x105A1, -39, 0, -39), + new CaseRange (0x105A3, 0x105B1, -39, 0, -39), + new CaseRange (0x105B3, 0x105B9, -39, 0, -39), + new CaseRange (0x105BB, 0x105BC, -39, 0, -39), new CaseRange (0x10C80, 0x10CB2, 0, 64, 0), new CaseRange (0x10CC0, 0x10CF2, -64, 0, -64), new CaseRange (0x118A0, 0x118BF, 0, 32, 0), new CaseRange (0x118C0, 0x118DF, -32, 0, -32), + new CaseRange (0x16E40, 0x16E5F, 0, 32, 0), + new CaseRange (0x16E60, 0x16E7F, -32, 0, -32), new CaseRange (0x1E900, 0x1E921, 0, 34, 0), new CaseRange (0x1E922, 0x1E943, -34, 0, -34), }; @@ -7708,6 +8607,8 @@ public static class Property { new Range16 (0x10a0, 0x10c5, 1), new Range16 (0x10c7, 0x10cd, 6), new Range16 (0x13a0, 0x13f5, 1), + new Range16 (0x1c90, 0x1cba, 1), + new Range16 (0x1cbd, 0x1cbf, 1), new Range16 (0x1e00, 0x1e94, 2), new Range16 (0x1e9e, 0x1efe, 2), new Range16 (0x1f08, 0x1f0f, 1), @@ -7728,7 +8629,7 @@ public static class Property { new Range16 (0x2126, 0x212a, 4), new Range16 (0x212b, 0x2132, 7), new Range16 (0x2183, 0x2c00, 2685), - new Range16 (0x2c01, 0x2c2e, 1), + new Range16 (0x2c01, 0x2c2f, 1), new Range16 (0x2c60, 0x2c62, 2), new Range16 (0x2c63, 0x2c64, 1), new Range16 (0x2c67, 0x2c6d, 2), @@ -7749,14 +8650,23 @@ public static class Property { new Range16 (0xa796, 0xa7aa, 2), new Range16 (0xa7ab, 0xa7ae, 1), new Range16 (0xa7b0, 0xa7b4, 1), - new Range16 (0xa7b6, 0xff21, 22379), + new Range16 (0xa7b6, 0xa7c4, 2), + new Range16 (0xa7c5, 0xa7c7, 1), + new Range16 (0xa7c9, 0xa7d0, 7), + new Range16 (0xa7d6, 0xa7d8, 2), + new Range16 (0xa7f5, 0xff21, 22316), new Range16 (0xff22, 0xff3a, 1), }, r32: new Range32 [] { new Range32 (0x10400, 0x10427, 1), new Range32 (0x104b0, 0x104d3, 1), + new Range32 (0x10570, 0x1057a, 1), + new Range32 (0x1057c, 0x1058a, 1), + new Range32 (0x1058c, 0x10592, 1), + new Range32 (0x10594, 0x10595, 1), new Range32 (0x10c80, 0x10cb2, 1), new Range32 (0x118a0, 0x118bf, 1), + new Range32 (0x16e40, 0x16e5f, 1), new Range32 (0x1e900, 0x1e921, 1), }, latinOffset: 3 @@ -7819,7 +8729,8 @@ public static class Property { new Range16 (0x0269, 0x026c, 1), new Range16 (0x026f, 0x0271, 2), new Range16 (0x0272, 0x0275, 3), - new Range16 (0x027d, 0x0283, 3), + new Range16 (0x027d, 0x0280, 3), + new Range16 (0x0282, 0x0283, 1), new Range16 (0x0287, 0x028c, 1), new Range16 (0x0292, 0x029d, 11), new Range16 (0x029e, 0x0345, 167), @@ -7839,10 +8750,13 @@ public static class Property { new Range16 (0x04c2, 0x04ce, 2), new Range16 (0x04cf, 0x052f, 2), new Range16 (0x0561, 0x0586, 1), + new Range16 (0x10d0, 0x10fa, 1), + new Range16 (0x10fd, 0x10ff, 1), new Range16 (0x13f8, 0x13fd, 1), new Range16 (0x1c80, 0x1c88, 1), new Range16 (0x1d79, 0x1d7d, 4), - new Range16 (0x1e01, 0x1e95, 2), + new Range16 (0x1d8e, 0x1e01, 115), + new Range16 (0x1e03, 0x1e95, 2), new Range16 (0x1e9b, 0x1ea1, 6), new Range16 (0x1ea3, 0x1eff, 2), new Range16 (0x1f00, 0x1f07, 1), @@ -7858,7 +8772,7 @@ public static class Property { new Range16 (0x1fd1, 0x1fe0, 15), new Range16 (0x1fe1, 0x1fe5, 4), new Range16 (0x214e, 0x2184, 54), - new Range16 (0x2c30, 0x2c5e, 1), + new Range16 (0x2c30, 0x2c5f, 1), new Range16 (0x2c61, 0x2c65, 4), new Range16 (0x2c66, 0x2c6c, 2), new Range16 (0x2c73, 0x2c76, 3), @@ -7874,9 +8788,12 @@ public static class Property { new Range16 (0xa77a, 0xa77c, 2), new Range16 (0xa77f, 0xa787, 2), new Range16 (0xa78c, 0xa791, 5), - new Range16 (0xa793, 0xa797, 4), - new Range16 (0xa799, 0xa7a9, 2), - new Range16 (0xa7b5, 0xa7b7, 2), + new Range16 (0xa793, 0xa794, 1), + new Range16 (0xa797, 0xa7a9, 2), + new Range16 (0xa7b5, 0xa7c3, 2), + new Range16 (0xa7c8, 0xa7ca, 2), + new Range16 (0xa7d1, 0xa7d7, 6), + new Range16 (0xa7d9, 0xa7f6, 29), new Range16 (0xab53, 0xab70, 29), new Range16 (0xab71, 0xabbf, 1), new Range16 (0xff41, 0xff5a, 1), @@ -7884,8 +8801,13 @@ public static class Property { r32: new Range32 [] { new Range32 (0x10428, 0x1044f, 1), new Range32 (0x104d8, 0x104fb, 1), + new Range32 (0x10597, 0x105a1, 1), + new Range32 (0x105a3, 0x105b1, 1), + new Range32 (0x105b3, 0x105b9, 1), + new Range32 (0x105bb, 0x105bc, 1), new Range32 (0x10cc0, 0x10cf2, 1), new Range32 (0x118c0, 0x118df, 1), + new Range32 (0x16e60, 0x16e7f, 1), new Range32 (0x1e922, 0x1e943, 1), }, latinOffset: 4 @@ -7913,8 +8835,8 @@ public static class Property { }; -// Range entries: 3576 16-bit, 1454 32-bit, 5030 total. -// Range bytes: 21456 16-bit, 17448 32-bit, 38904 total. +// Range entries: 3669 16-bit, 2007 32-bit, 5676 total. +// Range bytes: 22014 16-bit, 24084 32-bit, 46098 total. // Fold orbit bytes: 88 pairs, 352 bytes } /* partial class Unicode */ diff --git a/NStack/unicode/maketables.go b/NStack/unicode/maketables.go index 87a4412..dd9c9b1 100644 --- a/NStack/unicode/maketables.go +++ b/NStack/unicode/maketables.go @@ -8,7 +8,6 @@ // // Last import from Go code: 8eca08611ac1c65622400f526ab5b9065a4c9d67 - // Copyright 2009 The Go Authors, Microsoft. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -16,6 +15,7 @@ // NOTES: // Dictionary ctors should probably come after the actual things they reference +//go:build ignore // +build ignore // Unicode table generator. @@ -52,15 +52,15 @@ func main() { printLatinProperties() printCasefold() printSizes() - printf ("} /* partial class Unicode */\n"); - printf ("} /* namespace */\n"); + printf("} /* partial class Unicode */\n") + printf("} /* namespace */\n") flushOutput() } var dataURL = flag.String("data", "", "full URL for UnicodeData.txt; defaults to --url/UnicodeData.txt") var casefoldingURL = flag.String("casefolding", "", "full URL for CaseFolding.txt; defaults to --url/CaseFolding.txt") var url = flag.String("url", - "http://www.unicode.org/Public/9.0.0/ucd/", + "http://www.unicode.org/Public/14.0.0/ucd/", "URL of Unicode database directory") var tablelist = flag.String("tables", "all", @@ -156,7 +156,8 @@ func open(url string) *reader { logger.Fatal(err) } if resp.StatusCode != 200 { - logger.Fatalf("bad GET status for %s: %d", file, resp.Status) + _, err := strconv.ParseInt(resp.Status, 10, 0) + logger.Fatalf("bad GET status for %s: %d", file, err) } return &reader{bufio.NewReader(resp.Body), nil, resp} @@ -484,15 +485,17 @@ func printCategories() { } printf(progHeader, *tablelist, *dataURL, *casefoldingURL) - println("\t// Version is the Unicode edition from which the tables are derived.") + println("\t/// ") + println("\t/// Version is the Unicode edition from which the tables are derived.") + println("\t/// ") printf("\tpublic const string Version = %q;\n\n", version()) - println ("\t/// Static class containing the various Unicode category range tables") - println ("\t/// There are static properties that can be used to fetch a specific category, or you can use the method this class to retrieve the RangeTable by its Unicode category table name") - println ("\tpublic static class Category {") - println ("\t\t/// Retrieves the specified RangeTable from the Unicode category name") - println ("\t\t/// The unicode character category name") - println ("\t\tpublic static RangeTable Get (string categoryName) => Categories [categoryName];") + println("\t/// Static class containing the various Unicode category range tables") + println("\t/// There are static properties that can be used to fetch a specific category, or you can use the method this class to retrieve the RangeTable by its Unicode category table name") + println("\tpublic static class Category {") + println("\t\t/// Retrieves the specified RangeTable from the Unicode category name") + println("\t\t/// The unicode character category name") + println("\t\tpublic static RangeTable Get (string categoryName) => Categories [categoryName];") if *tablelist == "all" { println("\t\t// Categories is the set of Unicode category tables.") @@ -516,51 +519,51 @@ func printCategories() { varDecl := "" switch name { case "C": - varDecl = "\t/// Other/C is the set of Unicode control and special characters, category C.\n"; + varDecl = "\t/// Other/C is the set of Unicode control and special characters, category C.\n" varDecl += "\tpublic static RangeTable Other => _C; \n" - varDecl += "\t/// Other/C is the set of Unicode control and special characters, category C.\n"; + varDecl += "\t/// Other/C is the set of Unicode control and special characters, category C.\n" varDecl += "\tpublic static RangeTable C => _C;\n" case "L": - varDecl = "\t/// Letter/L is the set of Unicode letters, category L.\n"; + varDecl = "\t/// Letter/L is the set of Unicode letters, category L.\n" varDecl += "\tpublic static RangeTable Letter => _L;\n" - varDecl += "\t/// Letter/L is the set of Unicode letters, category L.\n"; + varDecl += "\t/// Letter/L is the set of Unicode letters, category L.\n" varDecl += "\tpublic static RangeTable L => _L;\n" case "M": - varDecl = "\t/// Mark/M is the set of Unicode mark characters, category M.\n"; + varDecl = "\t/// Mark/M is the set of Unicode mark characters, category M.\n" varDecl += "\tpublic static RangeTable Mark => _M;\n" - varDecl += "\t/// Mark/M is the set of Unicode mark characters, category M.;\n"; + varDecl += "\t/// Mark/M is the set of Unicode mark characters, category M.;\n" varDecl += "\tpublic static RangeTable M => _M;\n" case "N": - varDecl = "\t/// Number/N is the set of Unicode number characters, category N.\n"; + varDecl = "\t/// Number/N is the set of Unicode number characters, category N.\n" varDecl += "\tpublic static RangeTable Number => _N;\n" - varDecl += "\t/// Number/N is the set of Unicode number characters, category N.;\n"; + varDecl += "\t/// Number/N is the set of Unicode number characters, category N.;\n" varDecl += "\tpublic static RangeTable N => _N;\n" case "P": - varDecl = "\t/// Punct/P is the set of Unicode punctuation characters, category P.\n"; + varDecl = "\t/// Punct/P is the set of Unicode punctuation characters, category P.\n" varDecl += "\tpublic static RangeTable Punct => _P;\n" - varDecl += "\t/// Punct/P is the set of Unicode punctuation characters, category P.;\n"; + varDecl += "\t/// Punct/P is the set of Unicode punctuation characters, category P.;\n" varDecl += "\tpublic static RangeTable P => _P;\n" case "S": - varDecl = "\t/// Symbol/S is the set of Unicode symbol characters, category S.\n"; + varDecl = "\t/// Symbol/S is the set of Unicode symbol characters, category S.\n" varDecl += "\tpublic static RangeTable Symbol => _S;\n" - varDecl += "\t/// Symbol/S is the set of Unicode symbol characters, category S.;\n"; + varDecl += "\t/// Symbol/S is the set of Unicode symbol characters, category S.;\n" varDecl += "\tpublic static RangeTable S => _S;\n" case "Z": - varDecl = "\t/// Space/Z is the set of Unicode space characters, category Z.\n"; + varDecl = "\t/// Space/Z is the set of Unicode space characters, category Z.\n" varDecl += "\tpublic static RangeTable Space => _Z;\n" - varDecl += "\t/// Space/Z is the set of Unicode space characters, category Z.;\n"; + varDecl += "\t/// Space/Z is the set of Unicode space characters, category Z.;\n" varDecl += "\tpublic static RangeTable Z => _Z;\n" case "Nd": - varDecl = "\t/// Digit is the set of Unicode characters with the \"decimal digit\" property.\n"; + varDecl = "\t/// Digit is the set of Unicode characters with the \"decimal digit\" property.\n" varDecl += "\tpublic static RangeTable Digit => _Nd;\n" case "Lu": - varDecl = "\t/// Upper is the set of Unicode upper case letters.;\n"; + varDecl = "\t/// Upper is the set of Unicode upper case letters.;\n" varDecl += "\tpublic static RangeTable Upper => _Lu;\n" case "Ll": - varDecl = "\t/// Lower is the set of Unicode lower case letters.;\n"; + varDecl = "\t/// Lower is the set of Unicode lower case letters.;\n" varDecl += "\tpublic static RangeTable Lower => _Ll;\n" case "Lt": - varDecl = "\t/// Title is the set of Unicode title case letters.;\n"; + varDecl = "\t/// Title is the set of Unicode title case letters.;\n" varDecl += "\tpublic static RangeTable Title => _Lt;\n" } if len(name) > 1 { @@ -585,7 +588,8 @@ func printCategories() { for _, d := range decl { print(d) } - println ("\t}\n") + println("\t}") + println() } type Op func(code rune) bool @@ -601,7 +605,6 @@ func dumpRange(header string, inCategory Op) { // one Range for each iteration count := &range16Count size := 16 - format := "NONE"; for { // look for start of range for next < rune(len(chars)) && !inCategory(next) { @@ -622,14 +625,9 @@ func dumpRange(header string, inCategory Op) { for next < rune(len(chars)) && !inCategory(next) { next++ } - if size == 16 { - format = format16 - } else { - format = format32 - } if next >= rune(len(chars)) { // no more characters - printf(format, lo, hi, stride) + printRange(uint32(lo), uint32(hi), uint32(stride), size, count) break } // set stride @@ -657,7 +655,7 @@ func dumpRange(header string, inCategory Op) { if latinOffset > 0 { printf(",\n\t\tlatinOffset: %d\n", latinOffset) } else { - printf ("\n") + printf("\n") } print("\t);\n\n") } @@ -669,7 +667,7 @@ func printRange(lo, hi, stride uint32, size int, count *int) (int, *int) { } else { format = format32 } - + if size == 16 && hi >= 1<<16 { if lo < 1<<16 { if lo+stride != hi { @@ -687,7 +685,7 @@ func printRange(lo, hi, stride uint32, size int, count *int) (int, *int) { print("\t\tr32: new Range32 [] {\n") size = 32 format = format32 - + count = &range32Count } printf(format, lo, hi, stride) @@ -851,19 +849,19 @@ func printScriptOrProperty(doProps bool) { flaglist, *url) if doProps { - println ("\t/// Static class containing the proeprty-based tables.") - println ("\t/// There are static properties that can be used to fetch RangeTables that identify characters that have a specific property, or you can use the method in this class to retrieve the range table by the property name") - println ("\tpublic static class Property {") - println ("\t\t/// Retrieves the specified RangeTable having that property.") - println ("\t\t/// The property name.") - println ("\t\tpublic static RangeTable Get (string propertyName) => Properties [propertyName];") + println("\t/// Static class containing the proeprty-based tables.") + println("\t/// There are static properties that can be used to fetch RangeTables that identify characters that have a specific property, or you can use the method in this class to retrieve the range table by the property name") + println("\tpublic static class Property {") + println("\t\t/// Retrieves the specified RangeTable having that property.") + println("\t\t/// The property name.") + println("\t\tpublic static RangeTable Get (string propertyName) => Properties [propertyName];") } else { - println ("\t/// Static class containing the Unicode script tables.") - println ("\t/// There are static properties that can be used to fetch a specific category, or you can use the method in this class to retrieve the range table by its script name") - println ("\tpublic static class Script {") - println ("\t\t/// Retrieves the specified RangeTable from the Unicode script name.") - println ("\t\t/// The unicode script name") - println ("\t\tpublic static RangeTable Get (string scriptName) => Scripts [scriptName];") + println("\t/// Static class containing the Unicode script tables.") + println("\t/// There are static properties that can be used to fetch a specific category, or you can use the method in this class to retrieve the range table by its script name") + println("\tpublic static class Script {") + println("\t\t/// Retrieves the specified RangeTable from the Unicode script name.") + println("\t\t/// The unicode script name") + println("\t\tpublic static RangeTable Get (string scriptName) => Scripts [scriptName];") } if flaglist == "all" { if doProps { @@ -918,11 +916,12 @@ func printScriptOrProperty(doProps bool) { print("\t); /* RangeTable */\n\n") } decl.Sort() - + for _, d := range decl { print(d) } - println ("\t}\n") + println("\t}") + println() } func findLatinOffset(ranges []unicode.Range32) int { @@ -1082,7 +1081,7 @@ func printCases() { return } printf( - "\t// Generated by running\n"+ + "\t// Generated by running\n"+ "\t// maketables --data=%s --casefolding=%s\n"+ "\t// DO NOT EDIT\n\n"+ "\t// CaseRanges is the table describing case mappings for all letters with\n"+ diff --git a/NStackTests/RuneTest.cs b/NStackTests/RuneTest.cs index 17e72f6..9a63522 100644 --- a/NStackTests/RuneTest.cs +++ b/NStackTests/RuneTest.cs @@ -16,7 +16,7 @@ public void TestColumnWidth() Rune b = 'b'; Rune c = 123; Rune d = '\u1150'; // 0x1150 แ… Unicode Technical Report #11 - Rune e = '\u1161'; // 0x1161 แ…ก null character with column equal to 0 + Rune e = '\u1161'; // 0x1161 แ…ก Unicode Hangul Jamo with column width equal to 2 alone or joined. Rune f = 31; // non printable character Rune g = 127; // non printable character string h = "\U0001fa01"; @@ -55,9 +55,17 @@ public void TestColumnWidth() Assert.AreEqual("แ„„แ…ก", join); Assert.AreEqual(4, join.Sum(x => Rune.ColumnWidth(x))); Assert.IsFalse(Rune.DecodeSurrogatePair(join, out _)); + Assert.AreEqual(2, ((ustring)join).RuneCount); + Assert.AreEqual(2, join.Length); Assert.AreEqual("แ…ก", e.ToString()); Assert.AreEqual(1, e.ToString().Length); Assert.AreEqual(3, Rune.RuneLen(e)); + string joinNormalize= join.Normalize(); + Assert.AreEqual("๋”ฐ", joinNormalize); + Assert.AreEqual(2, joinNormalize.Sum(x => Rune.ColumnWidth(x))); + Assert.IsFalse(Rune.DecodeSurrogatePair(joinNormalize, out _)); + Assert.AreEqual(1, ((ustring)joinNormalize).RuneCount); + Assert.AreEqual(1, joinNormalize.Length); Assert.AreEqual(-1, Rune.ColumnWidth(f)); Assert.AreEqual(1, f.ToString().Length); Assert.AreEqual(1, Rune.RuneLen(f)); From da413d348c2a3a025179d34daa58e563de066651 Mon Sep 17 00:00:00 2001 From: BDisp Date: Mon, 6 Dec 2021 03:36:32 +0000 Subject: [PATCH 05/13] Regenerating the docs. --- Makefile | 9 +- NStack/NStack.csproj | 3 +- NStack/strings/ustring.cs | 12 +- NStack/unicode/Letter.cs | 2 +- docfx/README.md | 12 + docfx/api/.gitignore | 1 + docfx/api/index.md | 0 docfx/articles/intro.md | 2 + docfx/build.ps1 | 9 + docfx/docfx.json | 15 +- docfx/images/logo48.png | Bin 0 -> 926 bytes docfx/index.md | 12 +- docfx/runbuild.cmd | 1 + docfx/toc.yml | 4 +- docs/README.html | 116 + docs/api/NStack.html | 151 - docs/api/NStack/NStack.Unicode.Case.html | 50 +- docs/api/NStack/NStack.Unicode.Category.html | 544 +-- docs/api/NStack/NStack.Unicode.Property.html | 437 +- .../api/NStack/NStack.Unicode.RangeTable.html | 95 +- docs/api/NStack/NStack.Unicode.Script.html | 2000 ++++---- .../NStack/NStack.Unicode.SpecialCase.html | 100 +- docs/api/NStack/NStack.Unicode.html | 531 +-- docs/api/NStack/NStack.Utf8.html | 377 +- docs/api/NStack/NStack.html | 162 + .../NStack/NStack.ustring.RunePredicate.html | 69 +- docs/api/NStack/NStack.ustring.html | 2304 ++++++---- docs/api/NStack/System.Rune.Case.html | 160 + docs/api/NStack/System.Rune.html | 2453 ++++++++++ docs/api/NStack/System.RuneExtensions.html | 481 ++ docs/api/{index.html => NStack/System.html} | 246 +- docs/api/NStack/toc.html | 72 + docs/api/toc.html | 148 - docs/articles/intro.html | 31 +- docs/articles/toc.html | 109 +- docs/images/logo48.png | Bin 0 -> 926 bytes docs/index.html | 40 +- docs/index.json | 92 + docs/manifest.json | 334 +- docs/styles/docfx.css | 177 +- docs/styles/docfx.js | 661 ++- docs/styles/docfx.vendor.css | 625 +-- docs/styles/docfx.vendor.js | 46 +- docs/styles/lunr.js | 2924 ++++++++++++ docs/styles/lunr.min.js | 8 +- docs/styles/search-worker.js | 61 +- docs/toc.html | 115 +- docs/xrefmap.yml | 4081 +++++++++++++---- ecmadocs/en/NStack/Unicode+Case.xml | 3 + ecmadocs/en/NStack/Unicode+Property.xml | 16 + ecmadocs/en/NStack/Unicode+RangeTable.xml | 4 +- ecmadocs/en/NStack/Unicode+Script.xml | 384 ++ ecmadocs/en/NStack/Unicode.xml | 10 +- ecmadocs/en/NStack/Utf8.xml | 2 +- ecmadocs/en/NStack/ustring.xml | 735 ++- ecmadocs/en/index.xml | 207 +- 56 files changed, 16153 insertions(+), 5090 deletions(-) create mode 100644 docfx/README.md delete mode 100644 docfx/api/index.md create mode 100644 docfx/build.ps1 create mode 100644 docfx/images/logo48.png create mode 100644 docfx/runbuild.cmd create mode 100644 docs/README.html delete mode 100644 docs/api/NStack.html create mode 100644 docs/api/NStack/NStack.html create mode 100644 docs/api/NStack/System.Rune.Case.html create mode 100644 docs/api/NStack/System.Rune.html create mode 100644 docs/api/NStack/System.RuneExtensions.html rename docs/api/{index.html => NStack/System.html} (53%) create mode 100644 docs/api/NStack/toc.html delete mode 100644 docs/api/toc.html create mode 100644 docs/images/logo48.png create mode 100644 docs/index.json create mode 100644 docs/styles/lunr.js diff --git a/Makefile b/Makefile index c39e09e..eff9cf8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,9 @@ -all: doc-update yaml +all: dotnet-build doc-update yaml + +dotnet-build: + msbuild NStack.sln /t:clean /p:configuration=Release + msbuild NStack.sln -t:restore -p:RestorePackagesConfig=true /p:configuration=Release + msbuild NStack.sln /p:Configuration=Release /p:DocumentationFile="bin/Release/NStack.xml" # Target for using mdoc and my old doc template rebuild-docs: odocs/template @@ -6,7 +11,7 @@ rebuild-docs: odocs/template # Used to fetch XML doc updates from the C# compiler into the ECMA docs doc-update: - mdoc update -i NStack/bin/Debug/NStack.xml -o ecmadocs/en NStack/bin/Debug/NStack.dll + mdoc update -i NStack/bin/Release/NStack.xml -o ecmadocs/en NStack/bin/Release/netstandard2.0/NStack.dll yaml: -rm /cvs/NStack/ecmadocs/en/ns-.xml diff --git a/NStack/NStack.csproj b/NStack/NStack.csproj index 9fa8afa..38e02f8 100644 --- a/NStack/NStack.csproj +++ b/NStack/NStack.csproj @@ -39,7 +39,8 @@ Added ustring.ColumnWidth to return number of columns that a ustring takes in a true - bin\Debug\netstandard1.6\NStack.xml + true + bin\Release\NStack.xml Latest diff --git a/NStack/strings/ustring.cs b/NStack/strings/ustring.cs index 3327d06..2113252 100644 --- a/NStack/strings/ustring.cs +++ b/NStack/strings/ustring.cs @@ -57,7 +57,7 @@ namespace NStack { /// Creates a ustring from a range in a byte array. /// /// - /// + /// /// Creates a ustring from a single rune. /// /// @@ -65,11 +65,11 @@ namespace NStack { /// Creates a ustring from a character array. /// /// - /// + /// /// Creates a ustring from an unmanaged memory block, with an optional method to invoke to release the block when the ustring is garbage collected. /// /// - /// + /// /// /// Creates a ustring from an unmanaged memory block that is null-terminated, suitable for interoperability with C APIs. /// It takes an optional method to invoke to release the block when the ustring is garbage collected. @@ -89,7 +89,7 @@ namespace NStack { /// /// /// The Length property describes the length in bytes of the underlying array, while the RuneCount - /// property describes the number of code points (or runes) that are reprenseted by the underlying + /// property describes the number of code points (or runes) that are represented by the underlying /// utf8 encoded buffer. /// /// @@ -1074,7 +1074,7 @@ public int ConsoleWidth { } /// - /// Copies the specified number of bytes from the the underlying ustring representation to the target array at the specified offset. + /// Copies the specified number of bytes from the underlying ustring representation to the target array at the specified offset. /// /// Offset in the underlying ustring buffer to copy from. /// Target array where the buffer contents will be copied to. @@ -1299,7 +1299,7 @@ public bool Contains (uint rune) /// Returns a value indicating whether any of the characters in the provided string occurs within this string. /// /// true if any of the characters in parameter occurs within this string; otherwise, false. - /// string contanining one or more characters. + /// string containing one or more characters. public bool ContainsAny (ustring chars) { if ((object)chars == null) diff --git a/NStack/unicode/Letter.cs b/NStack/unicode/Letter.cs index 9339548..3a58e24 100644 --- a/NStack/unicode/Letter.cs +++ b/NStack/unicode/Letter.cs @@ -95,7 +95,7 @@ public struct RangeTable { readonly Range32 []R32; /// - /// The number of entries in the short range table (R16) with with Hi being less than MaxLatin1 + /// The number of entries in the short range table (R16) with Hi being less than MaxLatin1 /// public readonly int LatinOffset; diff --git a/docfx/README.md b/docfx/README.md new file mode 100644 index 0000000..67c0bed --- /dev/null +++ b/docfx/README.md @@ -0,0 +1,12 @@ +This folder generates the API docs for NStack. + +The API documentation is generated using the [DocFX tool](https://github.com/dotnet/docfx). The output of docfx gets put into the `./docs` folder which is then checked in. The `./docs` folder is then picked up by Github Pages and published to Miguel's Github Pages (https://migueldeicaza.github.io/NStack/). + +## To Generate the Docs + +0. Install DotFX https://dotnet.github.io/docfx/tutorial/docfx_getting_started.html +1. Change to the `./docfx` folder and run `./build.ps1` +2. Browse to http://localhost:8080 and verify everything looks good. +3. Hit ctrl-c to stop the script. + +If `docfx` fails with a `Stackoverflow` error. Just run it again. And again. Sometimes it takes a few times. If that doesn't work, create a fresh clone or delete the `docfx/api`, `docfx/obj`, and `docs/` folders and run the steps above again. diff --git a/docfx/api/.gitignore b/docfx/api/.gitignore index 1379bb9..d36ba48 100644 --- a/docfx/api/.gitignore +++ b/docfx/api/.gitignore @@ -2,3 +2,4 @@ # temp file # ############### *.yml +.manifest \ No newline at end of file diff --git a/docfx/api/index.md b/docfx/api/index.md deleted file mode 100644 index e69de29..0000000 diff --git a/docfx/articles/intro.md b/docfx/articles/intro.md index 51ea18b..fe124a9 100644 --- a/docfx/articles/intro.md +++ b/docfx/articles/intro.md @@ -13,3 +13,5 @@ To make things simple, this assumes that UTF8 strings (ustring in this code) can exist without them being valid UTF8 strings, but rather a collection of bytes. +[1] For example, older file systems can have filenames that made sense with +a particular character set and are effectively not possible to map into strings. diff --git a/docfx/build.ps1 b/docfx/build.ps1 new file mode 100644 index 0000000..61aa254 --- /dev/null +++ b/docfx/build.ps1 @@ -0,0 +1,9 @@ +# Builds the NStack API documentation using docfx + +dotnet clean --configuration Release ../NStack.sln +dotnet build --configuration Release ../NStack.sln + +rm ../docs -Recurse -Force + +docfx --metadata +docfx --serve diff --git a/docfx/docfx.json b/docfx/docfx.json index e8d2672..d8b70c6 100644 --- a/docfx/docfx.json +++ b/docfx/docfx.json @@ -4,16 +4,18 @@ "src": [ { "files": [ - "NStack/NStack.csproj" + "NStack.csproj" ], "exclude": [ "**/obj/**", "**/bin/**", "_site/**" - ] + ], + "src": "../NStack" } ], - "dest": "api" + "dest": "api/NStack", + "shouldSkipMarkup": true } ], "build": { @@ -60,12 +62,17 @@ } ], "dest": "../docs", + "globalMetadata": { + "_enableSearch": "true", + "_appLogoPath": "images/logo48.png", + "_disableContribution": true + }, "globalMetadataFiles": [], "fileMetadataFiles": [], "template": [ "default" ], - "postProcessors": [], + "postProcessors": [ "ExtractSearchIndex" ], "noLangKeyword": false, "keepFileLink": false } diff --git a/docfx/images/logo48.png b/docfx/images/logo48.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6075c8a479ecb40b227a5b10fd224281ef59c2 GIT binary patch literal 926 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1SD@HEr&lpd{}w^{`=YoKlhz~f1dlc+U&DwT54vOw`TmP zbh@^-Y|}sUneSgNvQ|{>aOQjz&}1=1fe*}_z*%K&`Y|;#ug)woF3xS8eWvBb9@YrA zvU#?<%a10P-&0-oA%tg*W&Jx7+i8d9PdJ(+x2v|9NA`zw&3CuFN}G3^a+h|`pKh?} zX3Wz*uKoW7)=oIY9TodG>}|;dgA>!5Hoxg_`N;R!e_rnTf_JOGCR(hDwVi&5o4b39 z2bcbfx*U<>>JL-G9@H)0yjV7C*>d6Zb7d2=n|B}H=#VWf8C2nT@$~id=g+*oa{kut zeRAno*4CtR&x#J|FvJOPv{p@I_uziQzSG2GY0!+-tF&4p8FsPk{r}&b z;JW;mQ{N91zAL@HZ(dEa#_kwvMQ&S9e@6};j;eo2Ot%+wC<)r_4h$~6$EL`A@_WS_ z#@Y2u%uNj21Rq|wTsD1ru#;Gq$i}qK{s}$;5;8J}?nq@^lw>`z>bq&zpUa=6+E^DJ zUHD$Hpz78oeV5r~RU*@pGFRBgTXgwMIQfN{|I?pron-d;z+}zf>FVdQ&MBcu=IvuQ{~Zr) zIsboZa?5&saZ@KdZ`beOrn$@RTc3O*s2lCH%A;K_dI>|a)}ybsOX^oA>&=-|DYdix wgS0YN4hO4Q3zM`{Bk#fkZ2<|+8XFWvZU|rq*S9OwG5p!89$h)f$_?3a0A`1oK>z>% literal 0 HcmV?d00001 diff --git a/docfx/index.md b/docfx/index.md index 80374f6..c99b621 100644 --- a/docfx/index.md +++ b/docfx/index.md @@ -3,14 +3,13 @@ NStack contains a new API for .NET based on modern C# and .NET idioms. -You can start with the new [UTF8 ustring -class](api/NStack/NStack.ustring.html), which is powered by an updated -[Unicode library](api/NStack/NStack.Unicode.html) and modern support for -[UTF8 parsing and decoding](api/NStack/NStack.Utf8.html). +You can start with the new [UTF8 ustring class](/api/NStack/NStack.ustring.html), which is powered by an updated +[Unicode library](/api/NStack/NStack.Unicode.html) and modern support for +[UTF8 parsing and decoding](/api/NStack/NStack.Utf8.html). # API Documentation -Take a look at the [API documentation](api/NStack) for NStack. +Take a look at the [API Documentation](/api/NStack/NStack.html) for NStack. # Future @@ -27,4 +26,5 @@ To make things simple, this assumes that UTF8 strings (ustring in this code) can exist without them being valid UTF8 strings, but rather a collection of bytes. - +[1] For example, older file systems can have filenames that made sense with +a particular character set and are effectively not possible to map into strings. diff --git a/docfx/runbuild.cmd b/docfx/runbuild.cmd new file mode 100644 index 0000000..6505ce6 --- /dev/null +++ b/docfx/runbuild.cmd @@ -0,0 +1 @@ +powershell.exe -executionpolicy bypass -file .\build.ps1 \ No newline at end of file diff --git a/docfx/toc.yml b/docfx/toc.yml index c06f5ab..8ba567e 100644 --- a/docfx/toc.yml +++ b/docfx/toc.yml @@ -1,5 +1,5 @@ - name: Articles href: articles/ - name: Api Documentation - href: api/ - homepage: api/index.md + href: /api/NStack/ + homepage: /api/NStack/NStack.html diff --git a/docs/README.html b/docs/README.html new file mode 100644 index 0000000..b844376 --- /dev/null +++ b/docs/README.html @@ -0,0 +1,116 @@ +๏ปฟ + + + + + + + To Generate the Docs + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ +
+
Search Results for
+
+

+
+
    +
    +
    + + + +
    + + + + + + diff --git a/docs/api/NStack.html b/docs/api/NStack.html deleted file mode 100644 index 3479b66..0000000 --- a/docs/api/NStack.html +++ /dev/null @@ -1,151 +0,0 @@ -๏ปฟ - - - - - - - Namespace NStack - - - - - - - - - - - - - - - -
    -
    - - - - -
    - - -
    -
    - -
    -
    - - - - - - diff --git a/docs/api/NStack/NStack.Unicode.Case.html b/docs/api/NStack/NStack.Unicode.Case.html index b9bae9b..aac9ca4 100644 --- a/docs/api/NStack/NStack.Unicode.Case.html +++ b/docs/api/NStack/NStack.Unicode.Case.html @@ -10,18 +10,19 @@ - + - + + - +
    @@ -36,7 +37,7 @@ - +
    +
    + +
    +
    Search Results for
    +
    +

    +
    +
      +
      +
      +
      + +
      +
      Search Results for
      +
      +

      +
      +
        +
        +
        diff --git a/docs/api/NStack/NStack.Unicode.Property.html b/docs/api/NStack/NStack.Unicode.Property.html index caeea69..ca3f91d 100644 --- a/docs/api/NStack/NStack.Unicode.Property.html +++ b/docs/api/NStack/NStack.Unicode.Property.html @@ -10,18 +10,19 @@ - + - + + - +
        @@ -36,7 +37,7 @@ - +
        +
        + +
        +
        Search Results for
        +
        +

        +
        +
          +
          +
          diff --git a/docs/api/NStack/NStack.Unicode.RangeTable.html b/docs/api/NStack/NStack.Unicode.RangeTable.html index bc812e5..323d94d 100644 --- a/docs/api/NStack/NStack.Unicode.RangeTable.html +++ b/docs/api/NStack/NStack.Unicode.RangeTable.html @@ -10,18 +10,19 @@ - + - + + - +
          @@ -36,7 +37,7 @@ - +
          +
          + +
          +
          Search Results for
          +
          +

          +
          +
            +
            +
            +
            + +
            +
            Search Results for
            +
            +

            +
            +
              +
              +
              diff --git a/docs/index.json b/docs/index.json new file mode 100644 index 0000000..da30045 --- /dev/null +++ b/docs/index.json @@ -0,0 +1,92 @@ +{ + "api/NStack/NStack.html": { + "href": "api/NStack/NStack.html", + "title": "Namespace NStack", + "keywords": "Namespace NStack Classes Unicode Unicode class contains helper methods to support Unicode encoding. Unicode.Category Static class containing the various Unicode category range tables Unicode.Property Static class containing the proeprty-based tables. Unicode.Script Static class containing the Unicode script tables. ustring ustrings are used to manipulate utf8 strings, either from byte arrays or blocks of memory. Utf8 UTF8 Helper methods and routines. Structs Unicode.RangeTable Range tables describe classes of unicode code points. Unicode.SpecialCase SpecialCase represents language-specific case mappings such as Turkish. Enums Unicode.Case The types of cases supported. Delegates ustring.RunePredicate Rune predicate functions take a rune as input and return a boolean determining if the rune matches or not." + }, + "api/NStack/NStack.Unicode.Case.html": { + "href": "api/NStack/NStack.Unicode.Case.html", + "title": "Enum Unicode.Case", + "keywords": "Enum Unicode.Case The types of cases supported. Namespace : NStack Assembly : NStack.dll Syntax public enum Case Fields Name Description Lower Lower case Title Titlecase capitalizes the first letter, and keeps the rest in lowercase. Sometimes it is not as straight forward as the uppercase, some characters require special handling, like certain ligatures and greek characters. Upper Upper case" + }, + "api/NStack/NStack.Unicode.Category.html": { + "href": "api/NStack/NStack.Unicode.Category.html", + "title": "Class Unicode.Category", + "keywords": "Class Unicode.Category Static class containing the various Unicode category range tables Inheritance System.Object Unicode.Category Inherited Members System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : NStack Assembly : NStack.dll Syntax public static class Category Remarks There are static properties that can be used to fetch a specific category, or you can use the NStack.Unicode.Category.Get method this class to retrieve the RangeTable by its Unicode category table name Properties C Other/C is the set of Unicode control and special characters, category C. Declaration public static Unicode.RangeTable C { get; } Property Value Type Description Unicode.RangeTable Cc Cc is the set of Unicode characters in category Cc. Declaration public static Unicode.RangeTable Cc { get; } Property Value Type Description Unicode.RangeTable Cf Cf is the set of Unicode characters in category Cf. Declaration public static Unicode.RangeTable Cf { get; } Property Value Type Description Unicode.RangeTable Co Co is the set of Unicode characters in category Co. Declaration public static Unicode.RangeTable Co { get; } Property Value Type Description Unicode.RangeTable Cs Cs is the set of Unicode characters in category Cs. Declaration public static Unicode.RangeTable Cs { get; } Property Value Type Description Unicode.RangeTable Digit Digit is the set of Unicode characters with the \"decimal digit\" property. Declaration public static Unicode.RangeTable Digit { get; } Property Value Type Description Unicode.RangeTable L Letter/L is the set of Unicode letters, category L. Declaration public static Unicode.RangeTable L { get; } Property Value Type Description Unicode.RangeTable Letter Letter/L is the set of Unicode letters, category L. Declaration public static Unicode.RangeTable Letter { get; } Property Value Type Description Unicode.RangeTable Ll Ll is the set of Unicode characters in category Ll. Declaration public static Unicode.RangeTable Ll { get; } Property Value Type Description Unicode.RangeTable Lm Lm is the set of Unicode characters in category Lm. Declaration public static Unicode.RangeTable Lm { get; } Property Value Type Description Unicode.RangeTable Lo Lo is the set of Unicode characters in category Lo. Declaration public static Unicode.RangeTable Lo { get; } Property Value Type Description Unicode.RangeTable Lower Lower is the set of Unicode lower case letters. Declaration public static Unicode.RangeTable Lower { get; } Property Value Type Description Unicode.RangeTable Lt Lt is the set of Unicode characters in category Lt. Declaration public static Unicode.RangeTable Lt { get; } Property Value Type Description Unicode.RangeTable Lu Lu is the set of Unicode characters in category Lu. Declaration public static Unicode.RangeTable Lu { get; } Property Value Type Description Unicode.RangeTable M Mark/M is the set of Unicode mark characters, category M. Declaration public static Unicode.RangeTable M { get; } Property Value Type Description Unicode.RangeTable Mark Mark/M is the set of Unicode mark characters, category M. Declaration public static Unicode.RangeTable Mark { get; } Property Value Type Description Unicode.RangeTable Mc Mc is the set of Unicode characters in category Mc. Declaration public static Unicode.RangeTable Mc { get; } Property Value Type Description Unicode.RangeTable Me Me is the set of Unicode characters in category Me. Declaration public static Unicode.RangeTable Me { get; } Property Value Type Description Unicode.RangeTable Mn Mn is the set of Unicode characters in category Mn. Declaration public static Unicode.RangeTable Mn { get; } Property Value Type Description Unicode.RangeTable N Number/N is the set of Unicode number characters, category N. Declaration public static Unicode.RangeTable N { get; } Property Value Type Description Unicode.RangeTable Nd Nd is the set of Unicode characters in category Nd. Declaration public static Unicode.RangeTable Nd { get; } Property Value Type Description Unicode.RangeTable Nl Nl is the set of Unicode characters in category Nl. Declaration public static Unicode.RangeTable Nl { get; } Property Value Type Description Unicode.RangeTable No No is the set of Unicode characters in category No. Declaration public static Unicode.RangeTable No { get; } Property Value Type Description Unicode.RangeTable Number Number/N is the set of Unicode number characters, category N. Declaration public static Unicode.RangeTable Number { get; } Property Value Type Description Unicode.RangeTable Other Other/C is the set of Unicode control and special characters, category C. Declaration public static Unicode.RangeTable Other { get; } Property Value Type Description Unicode.RangeTable P Punct/P is the set of Unicode punctuation characters, category P. Declaration public static Unicode.RangeTable P { get; } Property Value Type Description Unicode.RangeTable Pc Pc is the set of Unicode characters in category Pc. Declaration public static Unicode.RangeTable Pc { get; } Property Value Type Description Unicode.RangeTable Pd Pd is the set of Unicode characters in category Pd. Declaration public static Unicode.RangeTable Pd { get; } Property Value Type Description Unicode.RangeTable Pe Pe is the set of Unicode characters in category Pe. Declaration public static Unicode.RangeTable Pe { get; } Property Value Type Description Unicode.RangeTable Pf Pf is the set of Unicode characters in category Pf. Declaration public static Unicode.RangeTable Pf { get; } Property Value Type Description Unicode.RangeTable Pi Pi is the set of Unicode characters in category Pi. Declaration public static Unicode.RangeTable Pi { get; } Property Value Type Description Unicode.RangeTable Po Po is the set of Unicode characters in category Po. Declaration public static Unicode.RangeTable Po { get; } Property Value Type Description Unicode.RangeTable Ps Ps is the set of Unicode characters in category Ps. Declaration public static Unicode.RangeTable Ps { get; } Property Value Type Description Unicode.RangeTable Punct Punct/P is the set of Unicode punctuation characters, category P. Declaration public static Unicode.RangeTable Punct { get; } Property Value Type Description Unicode.RangeTable S Symbol/S is the set of Unicode symbol characters, category S. Declaration public static Unicode.RangeTable S { get; } Property Value Type Description Unicode.RangeTable Sc Sc is the set of Unicode characters in category Sc. Declaration public static Unicode.RangeTable Sc { get; } Property Value Type Description Unicode.RangeTable Sk Sk is the set of Unicode characters in category Sk. Declaration public static Unicode.RangeTable Sk { get; } Property Value Type Description Unicode.RangeTable Sm Sm is the set of Unicode characters in category Sm. Declaration public static Unicode.RangeTable Sm { get; } Property Value Type Description Unicode.RangeTable So So is the set of Unicode characters in category So. Declaration public static Unicode.RangeTable So { get; } Property Value Type Description Unicode.RangeTable Space Space/Z is the set of Unicode space characters, category Z. Declaration public static Unicode.RangeTable Space { get; } Property Value Type Description Unicode.RangeTable Symbol Symbol/S is the set of Unicode symbol characters, category S. Declaration public static Unicode.RangeTable Symbol { get; } Property Value Type Description Unicode.RangeTable Title Title is the set of Unicode title case letters. Declaration public static Unicode.RangeTable Title { get; } Property Value Type Description Unicode.RangeTable Upper Upper is the set of Unicode upper case letters. Declaration public static Unicode.RangeTable Upper { get; } Property Value Type Description Unicode.RangeTable Z Space/Z is the set of Unicode space characters, category Z. Declaration public static Unicode.RangeTable Z { get; } Property Value Type Description Unicode.RangeTable Zl Zl is the set of Unicode characters in category Zl. Declaration public static Unicode.RangeTable Zl { get; } Property Value Type Description Unicode.RangeTable Zp Zp is the set of Unicode characters in category Zp. Declaration public static Unicode.RangeTable Zp { get; } Property Value Type Description Unicode.RangeTable Zs Zs is the set of Unicode characters in category Zs. Declaration public static Unicode.RangeTable Zs { get; } Property Value Type Description Unicode.RangeTable Methods Get(String) Retrieves the specified RangeTable from the Unicode category name Declaration public static Unicode.RangeTable Get(string categoryName) Parameters Type Name Description System.String categoryName The unicode character category name Returns Type Description Unicode.RangeTable" + }, + "api/NStack/NStack.Unicode.html": { + "href": "api/NStack/NStack.Unicode.html", + "title": "Class Unicode", + "keywords": "Class Unicode Unicode class contains helper methods to support Unicode encoding. Inheritance System.Object Unicode Inherited Members System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : NStack Assembly : NStack.dll Syntax public class Unicode Remarks Generally the Unicode class provided methods that can help you classify and convert Unicode code points. The word codepoint is considered a mouthful so in this class, the word \"rune\" is used instead and is represented by the uint value type. Unicode code points can be produced by combining independent characters, so the rune for a character can be produced by combining one character and other elements of it. Runes on the other hand correspond to a specific character. This class surfaces various methods to classify case of a Rune, like NStack.Unicode.IsUpper , NStack.Unicode.IsLower , NStack.Unicode.IsDigit , NStack.Unicode.IsGraphic to convert runes from one case to another using the NStack.Unicode.ToUpper , NStack.Unicode.ToLower , NStack.Unicode.ToTitle as well as various constants that are useful when working with Unicode runes. Unicode defines various character classes which are surfaced as RangeTables as static properties in this class. You can probe whether a rune belongs to a specific range table Fields GraphicRanges The range tables for graphics Declaration public static Unicode.RangeTable[] GraphicRanges Field Value Type Description Unicode.RangeTable [] MaxAscii The maximum ASCII value. Declaration public const uint MaxAscii = 127U Field Value Type Description System.UInt32 MaxLatin1 The maximum latin1 value. Declaration public const uint MaxLatin1 = 255U Field Value Type Description System.UInt32 MaxRune Maximum valid Unicode code point. Declaration public const int MaxRune = 1114111 Field Value Type Description System.Int32 PrintRanges The range tables for print Declaration public static Unicode.RangeTable[] PrintRanges Field Value Type Description Unicode.RangeTable [] ReplacementChar Represents invalid code points. Declaration public const uint ReplacementChar = 65533U Field Value Type Description System.UInt32 TurkishCase Special casing rules for Turkish. Declaration public static Unicode.SpecialCase TurkishCase Field Value Type Description Unicode.SpecialCase Version Version is the Unicode edition from which the tables are derived. Declaration public const string Version = \"14.0.0\" Field Value Type Description System.String Methods IsControl(UInt32) IsControl reports whether the rune is a control character. Declaration public static bool IsControl(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. Remarks The C (Other) Unicode category includes more code points such as surrogates; use C.InRange (r) to test for them. IsDigit(UInt32) IsDigit reports whether the rune is a decimal digit. Declaration public static bool IsDigit(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. IsGraphic(UInt32) IsGraphic reports whether the rune is defined as a Graphic by Unicode. Declaration public static bool IsGraphic(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. Remarks Such characters include letters, marks, numbers, punctuation, symbols, and spaces, from categories L, M, N, P, S, Zs. IsLetter(UInt32) IsLetter reports whether the rune is a letter (category L). Declaration public static bool IsLetter(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a letter, false otherwise. Remarks IsLower(UInt32) Reports whether the rune is a lower case letter. Declaration public static bool IsLower(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case lette, false otherwise. IsMark(UInt32) IsMark reports whether the rune is a letter (category M). Declaration public static bool IsMark(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks Reports whether the rune is a mark character (category M). IsNumber(UInt32) IsNumber reports whether the rune is a letter (category N). Declaration public static bool IsNumber(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks Reports whether the rune is a mark character (category N). IsPrint(UInt32) IsPrint reports whether the rune is defined as printable. Declaration public static bool IsPrint(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. Remarks Such characters include letters, marks, numbers, punctuation, symbols, and the ASCII space character, from categories L, M, N, P, S and the ASCII space character. This categorization is the same as IsGraphic except that the only spacing character is ASCII space, U+0020. IsPunct(UInt32) IsPunct reports whether the rune is a letter (category P). Declaration public static bool IsPunct(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks Reports whether the rune is a mark character (category P). IsRuneInRanges(UInt32, Unicode.RangeTable[]) Determines if a rune is on a set of ranges. Declaration public static bool IsRuneInRanges(uint rune, params Unicode.RangeTable[] inRanges) Parameters Type Name Description System.UInt32 rune Rune. Unicode.RangeTable [] inRanges In ranges. Returns Type Description System.Boolean true , if rune in ranges was used, false otherwise. IsSpace(UInt32) IsSpace reports whether the rune is a space character as defined by Unicode's White Space property. Declaration public static bool IsSpace(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks In the Latin-1 space, white space includes '\\t', '\\n', '\\v', '\\f', '\\r', ' ', U+0085 (NEL), U+00A0 (NBSP). Other definitions of spacing characters are set by category Z and property Pattern_White_Space. IsSymbol(UInt32) IsSymbol reports whether the rune is a symbolic character. Declaration public static bool IsSymbol(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. IsTitle(UInt32) Reports whether the rune is a title case letter. Declaration public static bool IsTitle(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case lette, false otherwise. IsUpper(UInt32) Reports whether the rune is an upper case letter. Declaration public static bool IsUpper(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test for. Returns Type Description System.Boolean true , if the rune is an upper case lette, false otherwise. SimpleFold(UInt32) SimpleFold iterates over Unicode code points equivalent under the Unicode-defined simple case folding. Declaration public static uint SimpleFold(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.UInt32 The simple-case folded rune. Remarks SimpleFold iterates over Unicode code points equivalent under the Unicode-defined simple case folding. Among the code points equivalent to rune (including rune itself), SimpleFold returns the smallest rune > r if one exists, or else the smallest rune >= 0. If r is not a valid Unicode code point, SimpleFold(r) returns r. For example: SimpleFold('A') = 'a' SimpleFold('a') = 'A' SimpleFold('K') = 'k' SimpleFold('k') = '\\u212A' (Kelvin symbol, โ„ช) SimpleFold('\\u212A') = 'K' SimpleFold('1') = '1' SimpleFold(-2) = -2 To(Unicode.Case, UInt32) To maps the rune to the specified case: Case.Upper, Case.Lower, or Case.Title Declaration public static uint To(Unicode.Case toCase, uint rune) Parameters Type Name Description Unicode.Case toCase The destination case. System.UInt32 rune Rune to convert. Returns Type Description System.UInt32 The cased character. ToLower(UInt32) ToLower maps the rune to lower case. Declaration public static uint ToLower(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.UInt32 The lower cased rune if it can be. ToTitle(UInt32) ToLower maps the rune to title case. Declaration public static uint ToTitle(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.UInt32 The lower cased rune if it can be. ToUpper(UInt32) ToUpper maps the rune to upper case. Declaration public static uint ToUpper(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.UInt32 The upper cased rune if it can be." + }, + "api/NStack/NStack.Unicode.Property.html": { + "href": "api/NStack/NStack.Unicode.Property.html", + "title": "Class Unicode.Property", + "keywords": "Class Unicode.Property Static class containing the proeprty-based tables. Inheritance System.Object Unicode.Property Inherited Members System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : NStack Assembly : NStack.dll Syntax public static class Property Remarks There are static properties that can be used to fetch RangeTables that identify characters that have a specific property, or you can use the NStack.Unicode.Property.Get method in this class to retrieve the range table by the property name Properties ASCII_Hex_Digit ASCII_Hex_Digit is the set of Unicode characters with property ASCII_Hex_Digit. Declaration public static Unicode.RangeTable ASCII_Hex_Digit { get; } Property Value Type Description Unicode.RangeTable Bidi_Control Bidi_Control is the set of Unicode characters with property Bidi_Control. Declaration public static Unicode.RangeTable Bidi_Control { get; } Property Value Type Description Unicode.RangeTable Dash Dash is the set of Unicode characters with property Dash. Declaration public static Unicode.RangeTable Dash { get; } Property Value Type Description Unicode.RangeTable Deprecated Deprecated is the set of Unicode characters with property Deprecated. Declaration public static Unicode.RangeTable Deprecated { get; } Property Value Type Description Unicode.RangeTable Diacritic Diacritic is the set of Unicode characters with property Diacritic. Declaration public static Unicode.RangeTable Diacritic { get; } Property Value Type Description Unicode.RangeTable Extender Extender is the set of Unicode characters with property Extender. Declaration public static Unicode.RangeTable Extender { get; } Property Value Type Description Unicode.RangeTable Hex_Digit Hex_Digit is the set of Unicode characters with property Hex_Digit. Declaration public static Unicode.RangeTable Hex_Digit { get; } Property Value Type Description Unicode.RangeTable Hyphen Hyphen is the set of Unicode characters with property Hyphen. Declaration public static Unicode.RangeTable Hyphen { get; } Property Value Type Description Unicode.RangeTable Ideographic Ideographic is the set of Unicode characters with property Ideographic. Declaration public static Unicode.RangeTable Ideographic { get; } Property Value Type Description Unicode.RangeTable IDS_Binary_Operator IDS_Binary_Operator is the set of Unicode characters with property IDS_Binary_Operator. Declaration public static Unicode.RangeTable IDS_Binary_Operator { get; } Property Value Type Description Unicode.RangeTable IDS_Trinary_Operator IDS_Trinary_Operator is the set of Unicode characters with property IDS_Trinary_Operator. Declaration public static Unicode.RangeTable IDS_Trinary_Operator { get; } Property Value Type Description Unicode.RangeTable Join_Control Join_Control is the set of Unicode characters with property Join_Control. Declaration public static Unicode.RangeTable Join_Control { get; } Property Value Type Description Unicode.RangeTable Logical_Order_Exception Logical_Order_Exception is the set of Unicode characters with property Logical_Order_Exception. Declaration public static Unicode.RangeTable Logical_Order_Exception { get; } Property Value Type Description Unicode.RangeTable Noncharacter_Code_Point Noncharacter_Code_Point is the set of Unicode characters with property Noncharacter_Code_Point. Declaration public static Unicode.RangeTable Noncharacter_Code_Point { get; } Property Value Type Description Unicode.RangeTable Other_Alphabetic Other_Alphabetic is the set of Unicode characters with property Other_Alphabetic. Declaration public static Unicode.RangeTable Other_Alphabetic { get; } Property Value Type Description Unicode.RangeTable Other_Default_Ignorable_Code_Point Other_Default_Ignorable_Code_Point is the set of Unicode characters with property Other_Default_Ignorable_Code_Point. Declaration public static Unicode.RangeTable Other_Default_Ignorable_Code_Point { get; } Property Value Type Description Unicode.RangeTable Other_Grapheme_Extend Other_Grapheme_Extend is the set of Unicode characters with property Other_Grapheme_Extend. Declaration public static Unicode.RangeTable Other_Grapheme_Extend { get; } Property Value Type Description Unicode.RangeTable Other_ID_Continue Other_ID_Continue is the set of Unicode characters with property Other_ID_Continue. Declaration public static Unicode.RangeTable Other_ID_Continue { get; } Property Value Type Description Unicode.RangeTable Other_ID_Start Other_ID_Start is the set of Unicode characters with property Other_ID_Start. Declaration public static Unicode.RangeTable Other_ID_Start { get; } Property Value Type Description Unicode.RangeTable Other_Lowercase Other_Lowercase is the set of Unicode characters with property Other_Lowercase. Declaration public static Unicode.RangeTable Other_Lowercase { get; } Property Value Type Description Unicode.RangeTable Other_Math Other_Math is the set of Unicode characters with property Other_Math. Declaration public static Unicode.RangeTable Other_Math { get; } Property Value Type Description Unicode.RangeTable Other_Uppercase Other_Uppercase is the set of Unicode characters with property Other_Uppercase. Declaration public static Unicode.RangeTable Other_Uppercase { get; } Property Value Type Description Unicode.RangeTable Pattern_Syntax Pattern_Syntax is the set of Unicode characters with property Pattern_Syntax. Declaration public static Unicode.RangeTable Pattern_Syntax { get; } Property Value Type Description Unicode.RangeTable Pattern_White_Space Pattern_White_Space is the set of Unicode characters with property Pattern_White_Space. Declaration public static Unicode.RangeTable Pattern_White_Space { get; } Property Value Type Description Unicode.RangeTable Prepended_Concatenation_Mark Prepended_Concatenation_Mark is the set of Unicode characters with property Prepended_Concatenation_Mark. Declaration public static Unicode.RangeTable Prepended_Concatenation_Mark { get; } Property Value Type Description Unicode.RangeTable Quotation_Mark Quotation_Mark is the set of Unicode characters with property Quotation_Mark. Declaration public static Unicode.RangeTable Quotation_Mark { get; } Property Value Type Description Unicode.RangeTable Radical Radical is the set of Unicode characters with property Radical. Declaration public static Unicode.RangeTable Radical { get; } Property Value Type Description Unicode.RangeTable Regional_Indicator Regional_Indicator is the set of Unicode characters with property Regional_Indicator. Declaration public static Unicode.RangeTable Regional_Indicator { get; } Property Value Type Description Unicode.RangeTable Sentence_Terminal Sentence_Terminal is the set of Unicode characters with property Sentence_Terminal. Declaration public static Unicode.RangeTable Sentence_Terminal { get; } Property Value Type Description Unicode.RangeTable Soft_Dotted Soft_Dotted is the set of Unicode characters with property Soft_Dotted. Declaration public static Unicode.RangeTable Soft_Dotted { get; } Property Value Type Description Unicode.RangeTable STerm STerm is an alias for Sentence_Terminal. Declaration public static Unicode.RangeTable STerm { get; } Property Value Type Description Unicode.RangeTable Terminal_Punctuation Terminal_Punctuation is the set of Unicode characters with property Terminal_Punctuation. Declaration public static Unicode.RangeTable Terminal_Punctuation { get; } Property Value Type Description Unicode.RangeTable Unified_Ideograph Unified_Ideograph is the set of Unicode characters with property Unified_Ideograph. Declaration public static Unicode.RangeTable Unified_Ideograph { get; } Property Value Type Description Unicode.RangeTable Variation_Selector Variation_Selector is the set of Unicode characters with property Variation_Selector. Declaration public static Unicode.RangeTable Variation_Selector { get; } Property Value Type Description Unicode.RangeTable White_Space White_Space is the set of Unicode characters with property White_Space. Declaration public static Unicode.RangeTable White_Space { get; } Property Value Type Description Unicode.RangeTable Methods Get(String) Retrieves the specified RangeTable having that property. Declaration public static Unicode.RangeTable Get(string propertyName) Parameters Type Name Description System.String propertyName The property name. Returns Type Description Unicode.RangeTable" + }, + "api/NStack/NStack.Unicode.RangeTable.html": { + "href": "api/NStack/NStack.Unicode.RangeTable.html", + "title": "Struct Unicode.RangeTable", + "keywords": "Struct Unicode.RangeTable Range tables describe classes of unicode code points. Inherited Members System.ValueType.Equals(System.Object) System.ValueType.GetHashCode() System.ValueType.ToString() System.Object.Equals(System.Object, System.Object) System.Object.GetType() System.Object.ReferenceEquals(System.Object, System.Object) Namespace : NStack Assembly : NStack.dll Syntax public struct RangeTable Fields LatinOffset The number of entries in the short range table (R16) with Hi being less than MaxLatin1 Declaration public readonly int LatinOffset Field Value Type Description System.Int32 Methods InRange(UInt32) Used to determine if a given rune is in the range of this RangeTable. Declaration public bool InRange(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.Boolean true , if the rune is in this RangeTable, false otherwise. IsExcludingLatin(UInt32) Used to determine if a given rune is in the range of this RangeTable, excluding latin1 characters. Declaration public bool IsExcludingLatin(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.Boolean true , if the rune is part of the range (not including latin), false otherwise." + }, + "api/NStack/NStack.Unicode.Script.html": { + "href": "api/NStack/NStack.Unicode.Script.html", + "title": "Class Unicode.Script", + "keywords": "Class Unicode.Script Static class containing the Unicode script tables. Inheritance System.Object Unicode.Script Inherited Members System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : NStack Assembly : NStack.dll Syntax public static class Script Remarks There are static properties that can be used to fetch a specific category, or you can use the NStack.Unicode.Script.Get method in this class to retrieve the range table by its script name Properties Adlam Adlam is the set of Unicode characters in script Adlam. Declaration public static Unicode.RangeTable Adlam { get; } Property Value Type Description Unicode.RangeTable Ahom Ahom is the set of Unicode characters in script Ahom. Declaration public static Unicode.RangeTable Ahom { get; } Property Value Type Description Unicode.RangeTable Anatolian_Hieroglyphs Anatolian_Hieroglyphs is the set of Unicode characters in script Anatolian_Hieroglyphs. Declaration public static Unicode.RangeTable Anatolian_Hieroglyphs { get; } Property Value Type Description Unicode.RangeTable Arabic Arabic is the set of Unicode characters in script Arabic. Declaration public static Unicode.RangeTable Arabic { get; } Property Value Type Description Unicode.RangeTable Armenian Armenian is the set of Unicode characters in script Armenian. Declaration public static Unicode.RangeTable Armenian { get; } Property Value Type Description Unicode.RangeTable Avestan Avestan is the set of Unicode characters in script Avestan. Declaration public static Unicode.RangeTable Avestan { get; } Property Value Type Description Unicode.RangeTable Balinese Balinese is the set of Unicode characters in script Balinese. Declaration public static Unicode.RangeTable Balinese { get; } Property Value Type Description Unicode.RangeTable Bamum Bamum is the set of Unicode characters in script Bamum. Declaration public static Unicode.RangeTable Bamum { get; } Property Value Type Description Unicode.RangeTable Bassa_Vah Bassa_Vah is the set of Unicode characters in script Bassa_Vah. Declaration public static Unicode.RangeTable Bassa_Vah { get; } Property Value Type Description Unicode.RangeTable Batak Batak is the set of Unicode characters in script Batak. Declaration public static Unicode.RangeTable Batak { get; } Property Value Type Description Unicode.RangeTable Bengali Bengali is the set of Unicode characters in script Bengali. Declaration public static Unicode.RangeTable Bengali { get; } Property Value Type Description Unicode.RangeTable Bhaiksuki Bhaiksuki is the set of Unicode characters in script Bhaiksuki. Declaration public static Unicode.RangeTable Bhaiksuki { get; } Property Value Type Description Unicode.RangeTable Bopomofo Bopomofo is the set of Unicode characters in script Bopomofo. Declaration public static Unicode.RangeTable Bopomofo { get; } Property Value Type Description Unicode.RangeTable Brahmi Brahmi is the set of Unicode characters in script Brahmi. Declaration public static Unicode.RangeTable Brahmi { get; } Property Value Type Description Unicode.RangeTable Braille Braille is the set of Unicode characters in script Braille. Declaration public static Unicode.RangeTable Braille { get; } Property Value Type Description Unicode.RangeTable Buginese Buginese is the set of Unicode characters in script Buginese. Declaration public static Unicode.RangeTable Buginese { get; } Property Value Type Description Unicode.RangeTable Buhid Buhid is the set of Unicode characters in script Buhid. Declaration public static Unicode.RangeTable Buhid { get; } Property Value Type Description Unicode.RangeTable Canadian_Aboriginal Canadian_Aboriginal is the set of Unicode characters in script Canadian_Aboriginal. Declaration public static Unicode.RangeTable Canadian_Aboriginal { get; } Property Value Type Description Unicode.RangeTable Carian Carian is the set of Unicode characters in script Carian. Declaration public static Unicode.RangeTable Carian { get; } Property Value Type Description Unicode.RangeTable Caucasian_Albanian Caucasian_Albanian is the set of Unicode characters in script Caucasian_Albanian. Declaration public static Unicode.RangeTable Caucasian_Albanian { get; } Property Value Type Description Unicode.RangeTable Chakma Chakma is the set of Unicode characters in script Chakma. Declaration public static Unicode.RangeTable Chakma { get; } Property Value Type Description Unicode.RangeTable Cham Cham is the set of Unicode characters in script Cham. Declaration public static Unicode.RangeTable Cham { get; } Property Value Type Description Unicode.RangeTable Cherokee Cherokee is the set of Unicode characters in script Cherokee. Declaration public static Unicode.RangeTable Cherokee { get; } Property Value Type Description Unicode.RangeTable Chorasmian Chorasmian is the set of Unicode characters in script Chorasmian. Declaration public static Unicode.RangeTable Chorasmian { get; } Property Value Type Description Unicode.RangeTable Common Common is the set of Unicode characters in script Common. Declaration public static Unicode.RangeTable Common { get; } Property Value Type Description Unicode.RangeTable Coptic Coptic is the set of Unicode characters in script Coptic. Declaration public static Unicode.RangeTable Coptic { get; } Property Value Type Description Unicode.RangeTable Cuneiform Cuneiform is the set of Unicode characters in script Cuneiform. Declaration public static Unicode.RangeTable Cuneiform { get; } Property Value Type Description Unicode.RangeTable Cypriot Cypriot is the set of Unicode characters in script Cypriot. Declaration public static Unicode.RangeTable Cypriot { get; } Property Value Type Description Unicode.RangeTable Cypro_Minoan Cypro_Minoan is the set of Unicode characters in script Cypro_Minoan. Declaration public static Unicode.RangeTable Cypro_Minoan { get; } Property Value Type Description Unicode.RangeTable Cyrillic Cyrillic is the set of Unicode characters in script Cyrillic. Declaration public static Unicode.RangeTable Cyrillic { get; } Property Value Type Description Unicode.RangeTable Deseret Deseret is the set of Unicode characters in script Deseret. Declaration public static Unicode.RangeTable Deseret { get; } Property Value Type Description Unicode.RangeTable Devanagari Devanagari is the set of Unicode characters in script Devanagari. Declaration public static Unicode.RangeTable Devanagari { get; } Property Value Type Description Unicode.RangeTable Dives_Akuru Dives_Akuru is the set of Unicode characters in script Dives_Akuru. Declaration public static Unicode.RangeTable Dives_Akuru { get; } Property Value Type Description Unicode.RangeTable Dogra Dogra is the set of Unicode characters in script Dogra. Declaration public static Unicode.RangeTable Dogra { get; } Property Value Type Description Unicode.RangeTable Duployan Duployan is the set of Unicode characters in script Duployan. Declaration public static Unicode.RangeTable Duployan { get; } Property Value Type Description Unicode.RangeTable Egyptian_Hieroglyphs Egyptian_Hieroglyphs is the set of Unicode characters in script Egyptian_Hieroglyphs. Declaration public static Unicode.RangeTable Egyptian_Hieroglyphs { get; } Property Value Type Description Unicode.RangeTable Elbasan Elbasan is the set of Unicode characters in script Elbasan. Declaration public static Unicode.RangeTable Elbasan { get; } Property Value Type Description Unicode.RangeTable Elymaic Elymaic is the set of Unicode characters in script Elymaic. Declaration public static Unicode.RangeTable Elymaic { get; } Property Value Type Description Unicode.RangeTable Ethiopic Ethiopic is the set of Unicode characters in script Ethiopic. Declaration public static Unicode.RangeTable Ethiopic { get; } Property Value Type Description Unicode.RangeTable Georgian Georgian is the set of Unicode characters in script Georgian. Declaration public static Unicode.RangeTable Georgian { get; } Property Value Type Description Unicode.RangeTable Glagolitic Glagolitic is the set of Unicode characters in script Glagolitic. Declaration public static Unicode.RangeTable Glagolitic { get; } Property Value Type Description Unicode.RangeTable Gothic Gothic is the set of Unicode characters in script Gothic. Declaration public static Unicode.RangeTable Gothic { get; } Property Value Type Description Unicode.RangeTable Grantha Grantha is the set of Unicode characters in script Grantha. Declaration public static Unicode.RangeTable Grantha { get; } Property Value Type Description Unicode.RangeTable Greek Greek is the set of Unicode characters in script Greek. Declaration public static Unicode.RangeTable Greek { get; } Property Value Type Description Unicode.RangeTable Gujarati Gujarati is the set of Unicode characters in script Gujarati. Declaration public static Unicode.RangeTable Gujarati { get; } Property Value Type Description Unicode.RangeTable Gunjala_Gondi Gunjala_Gondi is the set of Unicode characters in script Gunjala_Gondi. Declaration public static Unicode.RangeTable Gunjala_Gondi { get; } Property Value Type Description Unicode.RangeTable Gurmukhi Gurmukhi is the set of Unicode characters in script Gurmukhi. Declaration public static Unicode.RangeTable Gurmukhi { get; } Property Value Type Description Unicode.RangeTable Han Han is the set of Unicode characters in script Han. Declaration public static Unicode.RangeTable Han { get; } Property Value Type Description Unicode.RangeTable Hangul Hangul is the set of Unicode characters in script Hangul. Declaration public static Unicode.RangeTable Hangul { get; } Property Value Type Description Unicode.RangeTable Hanifi_Rohingya Hanifi_Rohingya is the set of Unicode characters in script Hanifi_Rohingya. Declaration public static Unicode.RangeTable Hanifi_Rohingya { get; } Property Value Type Description Unicode.RangeTable Hanunoo Hanunoo is the set of Unicode characters in script Hanunoo. Declaration public static Unicode.RangeTable Hanunoo { get; } Property Value Type Description Unicode.RangeTable Hatran Hatran is the set of Unicode characters in script Hatran. Declaration public static Unicode.RangeTable Hatran { get; } Property Value Type Description Unicode.RangeTable Hebrew Hebrew is the set of Unicode characters in script Hebrew. Declaration public static Unicode.RangeTable Hebrew { get; } Property Value Type Description Unicode.RangeTable Hiragana Hiragana is the set of Unicode characters in script Hiragana. Declaration public static Unicode.RangeTable Hiragana { get; } Property Value Type Description Unicode.RangeTable Imperial_Aramaic Imperial_Aramaic is the set of Unicode characters in script Imperial_Aramaic. Declaration public static Unicode.RangeTable Imperial_Aramaic { get; } Property Value Type Description Unicode.RangeTable Inherited Inherited is the set of Unicode characters in script Inherited. Declaration public static Unicode.RangeTable Inherited { get; } Property Value Type Description Unicode.RangeTable Inscriptional_Pahlavi Inscriptional_Pahlavi is the set of Unicode characters in script Inscriptional_Pahlavi. Declaration public static Unicode.RangeTable Inscriptional_Pahlavi { get; } Property Value Type Description Unicode.RangeTable Inscriptional_Parthian Inscriptional_Parthian is the set of Unicode characters in script Inscriptional_Parthian. Declaration public static Unicode.RangeTable Inscriptional_Parthian { get; } Property Value Type Description Unicode.RangeTable Javanese Javanese is the set of Unicode characters in script Javanese. Declaration public static Unicode.RangeTable Javanese { get; } Property Value Type Description Unicode.RangeTable Kaithi Kaithi is the set of Unicode characters in script Kaithi. Declaration public static Unicode.RangeTable Kaithi { get; } Property Value Type Description Unicode.RangeTable Kannada Kannada is the set of Unicode characters in script Kannada. Declaration public static Unicode.RangeTable Kannada { get; } Property Value Type Description Unicode.RangeTable Katakana Katakana is the set of Unicode characters in script Katakana. Declaration public static Unicode.RangeTable Katakana { get; } Property Value Type Description Unicode.RangeTable Kayah_Li Kayah_Li is the set of Unicode characters in script Kayah_Li. Declaration public static Unicode.RangeTable Kayah_Li { get; } Property Value Type Description Unicode.RangeTable Kharoshthi Kharoshthi is the set of Unicode characters in script Kharoshthi. Declaration public static Unicode.RangeTable Kharoshthi { get; } Property Value Type Description Unicode.RangeTable Khitan_Small_Script Khitan_Small_Script is the set of Unicode characters in script Khitan_Small_Script. Declaration public static Unicode.RangeTable Khitan_Small_Script { get; } Property Value Type Description Unicode.RangeTable Khmer Khmer is the set of Unicode characters in script Khmer. Declaration public static Unicode.RangeTable Khmer { get; } Property Value Type Description Unicode.RangeTable Khojki Khojki is the set of Unicode characters in script Khojki. Declaration public static Unicode.RangeTable Khojki { get; } Property Value Type Description Unicode.RangeTable Khudawadi Khudawadi is the set of Unicode characters in script Khudawadi. Declaration public static Unicode.RangeTable Khudawadi { get; } Property Value Type Description Unicode.RangeTable Lao Lao is the set of Unicode characters in script Lao. Declaration public static Unicode.RangeTable Lao { get; } Property Value Type Description Unicode.RangeTable Latin Latin is the set of Unicode characters in script Latin. Declaration public static Unicode.RangeTable Latin { get; } Property Value Type Description Unicode.RangeTable Lepcha Lepcha is the set of Unicode characters in script Lepcha. Declaration public static Unicode.RangeTable Lepcha { get; } Property Value Type Description Unicode.RangeTable Limbu Limbu is the set of Unicode characters in script Limbu. Declaration public static Unicode.RangeTable Limbu { get; } Property Value Type Description Unicode.RangeTable Linear_A Linear_A is the set of Unicode characters in script Linear_A. Declaration public static Unicode.RangeTable Linear_A { get; } Property Value Type Description Unicode.RangeTable Linear_B Linear_B is the set of Unicode characters in script Linear_B. Declaration public static Unicode.RangeTable Linear_B { get; } Property Value Type Description Unicode.RangeTable Lisu Lisu is the set of Unicode characters in script Lisu. Declaration public static Unicode.RangeTable Lisu { get; } Property Value Type Description Unicode.RangeTable Lycian Lycian is the set of Unicode characters in script Lycian. Declaration public static Unicode.RangeTable Lycian { get; } Property Value Type Description Unicode.RangeTable Lydian Lydian is the set of Unicode characters in script Lydian. Declaration public static Unicode.RangeTable Lydian { get; } Property Value Type Description Unicode.RangeTable Mahajani Mahajani is the set of Unicode characters in script Mahajani. Declaration public static Unicode.RangeTable Mahajani { get; } Property Value Type Description Unicode.RangeTable Makasar Makasar is the set of Unicode characters in script Makasar. Declaration public static Unicode.RangeTable Makasar { get; } Property Value Type Description Unicode.RangeTable Malayalam Malayalam is the set of Unicode characters in script Malayalam. Declaration public static Unicode.RangeTable Malayalam { get; } Property Value Type Description Unicode.RangeTable Mandaic Mandaic is the set of Unicode characters in script Mandaic. Declaration public static Unicode.RangeTable Mandaic { get; } Property Value Type Description Unicode.RangeTable Manichaean Manichaean is the set of Unicode characters in script Manichaean. Declaration public static Unicode.RangeTable Manichaean { get; } Property Value Type Description Unicode.RangeTable Marchen Marchen is the set of Unicode characters in script Marchen. Declaration public static Unicode.RangeTable Marchen { get; } Property Value Type Description Unicode.RangeTable Masaram_Gondi Masaram_Gondi is the set of Unicode characters in script Masaram_Gondi. Declaration public static Unicode.RangeTable Masaram_Gondi { get; } Property Value Type Description Unicode.RangeTable Medefaidrin Medefaidrin is the set of Unicode characters in script Medefaidrin. Declaration public static Unicode.RangeTable Medefaidrin { get; } Property Value Type Description Unicode.RangeTable Meetei_Mayek Meetei_Mayek is the set of Unicode characters in script Meetei_Mayek. Declaration public static Unicode.RangeTable Meetei_Mayek { get; } Property Value Type Description Unicode.RangeTable Mende_Kikakui Mende_Kikakui is the set of Unicode characters in script Mende_Kikakui. Declaration public static Unicode.RangeTable Mende_Kikakui { get; } Property Value Type Description Unicode.RangeTable Meroitic_Cursive Meroitic_Cursive is the set of Unicode characters in script Meroitic_Cursive. Declaration public static Unicode.RangeTable Meroitic_Cursive { get; } Property Value Type Description Unicode.RangeTable Meroitic_Hieroglyphs Meroitic_Hieroglyphs is the set of Unicode characters in script Meroitic_Hieroglyphs. Declaration public static Unicode.RangeTable Meroitic_Hieroglyphs { get; } Property Value Type Description Unicode.RangeTable Miao Miao is the set of Unicode characters in script Miao. Declaration public static Unicode.RangeTable Miao { get; } Property Value Type Description Unicode.RangeTable Modi Modi is the set of Unicode characters in script Modi. Declaration public static Unicode.RangeTable Modi { get; } Property Value Type Description Unicode.RangeTable Mongolian Mongolian is the set of Unicode characters in script Mongolian. Declaration public static Unicode.RangeTable Mongolian { get; } Property Value Type Description Unicode.RangeTable Mro Mro is the set of Unicode characters in script Mro. Declaration public static Unicode.RangeTable Mro { get; } Property Value Type Description Unicode.RangeTable Multani Multani is the set of Unicode characters in script Multani. Declaration public static Unicode.RangeTable Multani { get; } Property Value Type Description Unicode.RangeTable Myanmar Myanmar is the set of Unicode characters in script Myanmar. Declaration public static Unicode.RangeTable Myanmar { get; } Property Value Type Description Unicode.RangeTable Nabataean Nabataean is the set of Unicode characters in script Nabataean. Declaration public static Unicode.RangeTable Nabataean { get; } Property Value Type Description Unicode.RangeTable Nandinagari Nandinagari is the set of Unicode characters in script Nandinagari. Declaration public static Unicode.RangeTable Nandinagari { get; } Property Value Type Description Unicode.RangeTable New_Tai_Lue New_Tai_Lue is the set of Unicode characters in script New_Tai_Lue. Declaration public static Unicode.RangeTable New_Tai_Lue { get; } Property Value Type Description Unicode.RangeTable Newa Newa is the set of Unicode characters in script Newa. Declaration public static Unicode.RangeTable Newa { get; } Property Value Type Description Unicode.RangeTable Nko Nko is the set of Unicode characters in script Nko. Declaration public static Unicode.RangeTable Nko { get; } Property Value Type Description Unicode.RangeTable Nushu Nushu is the set of Unicode characters in script Nushu. Declaration public static Unicode.RangeTable Nushu { get; } Property Value Type Description Unicode.RangeTable Nyiakeng_Puachue_Hmong Nyiakeng_Puachue_Hmong is the set of Unicode characters in script Nyiakeng_Puachue_Hmong. Declaration public static Unicode.RangeTable Nyiakeng_Puachue_Hmong { get; } Property Value Type Description Unicode.RangeTable Ogham Ogham is the set of Unicode characters in script Ogham. Declaration public static Unicode.RangeTable Ogham { get; } Property Value Type Description Unicode.RangeTable Ol_Chiki Ol_Chiki is the set of Unicode characters in script Ol_Chiki. Declaration public static Unicode.RangeTable Ol_Chiki { get; } Property Value Type Description Unicode.RangeTable Old_Hungarian Old_Hungarian is the set of Unicode characters in script Old_Hungarian. Declaration public static Unicode.RangeTable Old_Hungarian { get; } Property Value Type Description Unicode.RangeTable Old_Italic Old_Italic is the set of Unicode characters in script Old_Italic. Declaration public static Unicode.RangeTable Old_Italic { get; } Property Value Type Description Unicode.RangeTable Old_North_Arabian Old_North_Arabian is the set of Unicode characters in script Old_North_Arabian. Declaration public static Unicode.RangeTable Old_North_Arabian { get; } Property Value Type Description Unicode.RangeTable Old_Permic Old_Permic is the set of Unicode characters in script Old_Permic. Declaration public static Unicode.RangeTable Old_Permic { get; } Property Value Type Description Unicode.RangeTable Old_Persian Old_Persian is the set of Unicode characters in script Old_Persian. Declaration public static Unicode.RangeTable Old_Persian { get; } Property Value Type Description Unicode.RangeTable Old_Sogdian Old_Sogdian is the set of Unicode characters in script Old_Sogdian. Declaration public static Unicode.RangeTable Old_Sogdian { get; } Property Value Type Description Unicode.RangeTable Old_South_Arabian Old_South_Arabian is the set of Unicode characters in script Old_South_Arabian. Declaration public static Unicode.RangeTable Old_South_Arabian { get; } Property Value Type Description Unicode.RangeTable Old_Turkic Old_Turkic is the set of Unicode characters in script Old_Turkic. Declaration public static Unicode.RangeTable Old_Turkic { get; } Property Value Type Description Unicode.RangeTable Old_Uyghur Old_Uyghur is the set of Unicode characters in script Old_Uyghur. Declaration public static Unicode.RangeTable Old_Uyghur { get; } Property Value Type Description Unicode.RangeTable Oriya Oriya is the set of Unicode characters in script Oriya. Declaration public static Unicode.RangeTable Oriya { get; } Property Value Type Description Unicode.RangeTable Osage Osage is the set of Unicode characters in script Osage. Declaration public static Unicode.RangeTable Osage { get; } Property Value Type Description Unicode.RangeTable Osmanya Osmanya is the set of Unicode characters in script Osmanya. Declaration public static Unicode.RangeTable Osmanya { get; } Property Value Type Description Unicode.RangeTable Pahawh_Hmong Pahawh_Hmong is the set of Unicode characters in script Pahawh_Hmong. Declaration public static Unicode.RangeTable Pahawh_Hmong { get; } Property Value Type Description Unicode.RangeTable Palmyrene Palmyrene is the set of Unicode characters in script Palmyrene. Declaration public static Unicode.RangeTable Palmyrene { get; } Property Value Type Description Unicode.RangeTable Pau_Cin_Hau Pau_Cin_Hau is the set of Unicode characters in script Pau_Cin_Hau. Declaration public static Unicode.RangeTable Pau_Cin_Hau { get; } Property Value Type Description Unicode.RangeTable Phags_Pa Phags_Pa is the set of Unicode characters in script Phags_Pa. Declaration public static Unicode.RangeTable Phags_Pa { get; } Property Value Type Description Unicode.RangeTable Phoenician Phoenician is the set of Unicode characters in script Phoenician. Declaration public static Unicode.RangeTable Phoenician { get; } Property Value Type Description Unicode.RangeTable Psalter_Pahlavi Psalter_Pahlavi is the set of Unicode characters in script Psalter_Pahlavi. Declaration public static Unicode.RangeTable Psalter_Pahlavi { get; } Property Value Type Description Unicode.RangeTable Rejang Rejang is the set of Unicode characters in script Rejang. Declaration public static Unicode.RangeTable Rejang { get; } Property Value Type Description Unicode.RangeTable Runic Runic is the set of Unicode characters in script Runic. Declaration public static Unicode.RangeTable Runic { get; } Property Value Type Description Unicode.RangeTable Samaritan Samaritan is the set of Unicode characters in script Samaritan. Declaration public static Unicode.RangeTable Samaritan { get; } Property Value Type Description Unicode.RangeTable Saurashtra Saurashtra is the set of Unicode characters in script Saurashtra. Declaration public static Unicode.RangeTable Saurashtra { get; } Property Value Type Description Unicode.RangeTable Sharada Sharada is the set of Unicode characters in script Sharada. Declaration public static Unicode.RangeTable Sharada { get; } Property Value Type Description Unicode.RangeTable Shavian Shavian is the set of Unicode characters in script Shavian. Declaration public static Unicode.RangeTable Shavian { get; } Property Value Type Description Unicode.RangeTable Siddham Siddham is the set of Unicode characters in script Siddham. Declaration public static Unicode.RangeTable Siddham { get; } Property Value Type Description Unicode.RangeTable SignWriting SignWriting is the set of Unicode characters in script SignWriting. Declaration public static Unicode.RangeTable SignWriting { get; } Property Value Type Description Unicode.RangeTable Sinhala Sinhala is the set of Unicode characters in script Sinhala. Declaration public static Unicode.RangeTable Sinhala { get; } Property Value Type Description Unicode.RangeTable Sogdian Sogdian is the set of Unicode characters in script Sogdian. Declaration public static Unicode.RangeTable Sogdian { get; } Property Value Type Description Unicode.RangeTable Sora_Sompeng Sora_Sompeng is the set of Unicode characters in script Sora_Sompeng. Declaration public static Unicode.RangeTable Sora_Sompeng { get; } Property Value Type Description Unicode.RangeTable Soyombo Soyombo is the set of Unicode characters in script Soyombo. Declaration public static Unicode.RangeTable Soyombo { get; } Property Value Type Description Unicode.RangeTable Sundanese Sundanese is the set of Unicode characters in script Sundanese. Declaration public static Unicode.RangeTable Sundanese { get; } Property Value Type Description Unicode.RangeTable Syloti_Nagri Syloti_Nagri is the set of Unicode characters in script Syloti_Nagri. Declaration public static Unicode.RangeTable Syloti_Nagri { get; } Property Value Type Description Unicode.RangeTable Syriac Syriac is the set of Unicode characters in script Syriac. Declaration public static Unicode.RangeTable Syriac { get; } Property Value Type Description Unicode.RangeTable Tagalog Tagalog is the set of Unicode characters in script Tagalog. Declaration public static Unicode.RangeTable Tagalog { get; } Property Value Type Description Unicode.RangeTable Tagbanwa Tagbanwa is the set of Unicode characters in script Tagbanwa. Declaration public static Unicode.RangeTable Tagbanwa { get; } Property Value Type Description Unicode.RangeTable Tai_Le Tai_Le is the set of Unicode characters in script Tai_Le. Declaration public static Unicode.RangeTable Tai_Le { get; } Property Value Type Description Unicode.RangeTable Tai_Tham Tai_Tham is the set of Unicode characters in script Tai_Tham. Declaration public static Unicode.RangeTable Tai_Tham { get; } Property Value Type Description Unicode.RangeTable Tai_Viet Tai_Viet is the set of Unicode characters in script Tai_Viet. Declaration public static Unicode.RangeTable Tai_Viet { get; } Property Value Type Description Unicode.RangeTable Takri Takri is the set of Unicode characters in script Takri. Declaration public static Unicode.RangeTable Takri { get; } Property Value Type Description Unicode.RangeTable Tamil Tamil is the set of Unicode characters in script Tamil. Declaration public static Unicode.RangeTable Tamil { get; } Property Value Type Description Unicode.RangeTable Tangsa Tangsa is the set of Unicode characters in script Tangsa. Declaration public static Unicode.RangeTable Tangsa { get; } Property Value Type Description Unicode.RangeTable Tangut Tangut is the set of Unicode characters in script Tangut. Declaration public static Unicode.RangeTable Tangut { get; } Property Value Type Description Unicode.RangeTable Telugu Telugu is the set of Unicode characters in script Telugu. Declaration public static Unicode.RangeTable Telugu { get; } Property Value Type Description Unicode.RangeTable Thaana Thaana is the set of Unicode characters in script Thaana. Declaration public static Unicode.RangeTable Thaana { get; } Property Value Type Description Unicode.RangeTable Thai Thai is the set of Unicode characters in script Thai. Declaration public static Unicode.RangeTable Thai { get; } Property Value Type Description Unicode.RangeTable Tibetan Tibetan is the set of Unicode characters in script Tibetan. Declaration public static Unicode.RangeTable Tibetan { get; } Property Value Type Description Unicode.RangeTable Tifinagh Tifinagh is the set of Unicode characters in script Tifinagh. Declaration public static Unicode.RangeTable Tifinagh { get; } Property Value Type Description Unicode.RangeTable Tirhuta Tirhuta is the set of Unicode characters in script Tirhuta. Declaration public static Unicode.RangeTable Tirhuta { get; } Property Value Type Description Unicode.RangeTable Toto Toto is the set of Unicode characters in script Toto. Declaration public static Unicode.RangeTable Toto { get; } Property Value Type Description Unicode.RangeTable Ugaritic Ugaritic is the set of Unicode characters in script Ugaritic. Declaration public static Unicode.RangeTable Ugaritic { get; } Property Value Type Description Unicode.RangeTable Vai Vai is the set of Unicode characters in script Vai. Declaration public static Unicode.RangeTable Vai { get; } Property Value Type Description Unicode.RangeTable Vithkuqi Vithkuqi is the set of Unicode characters in script Vithkuqi. Declaration public static Unicode.RangeTable Vithkuqi { get; } Property Value Type Description Unicode.RangeTable Wancho Wancho is the set of Unicode characters in script Wancho. Declaration public static Unicode.RangeTable Wancho { get; } Property Value Type Description Unicode.RangeTable Warang_Citi Warang_Citi is the set of Unicode characters in script Warang_Citi. Declaration public static Unicode.RangeTable Warang_Citi { get; } Property Value Type Description Unicode.RangeTable Yezidi Yezidi is the set of Unicode characters in script Yezidi. Declaration public static Unicode.RangeTable Yezidi { get; } Property Value Type Description Unicode.RangeTable Yi Yi is the set of Unicode characters in script Yi. Declaration public static Unicode.RangeTable Yi { get; } Property Value Type Description Unicode.RangeTable Zanabazar_Square Zanabazar_Square is the set of Unicode characters in script Zanabazar_Square. Declaration public static Unicode.RangeTable Zanabazar_Square { get; } Property Value Type Description Unicode.RangeTable Methods Get(String) Retrieves the specified RangeTable from the Unicode script name. Declaration public static Unicode.RangeTable Get(string scriptName) Parameters Type Name Description System.String scriptName The unicode script name Returns Type Description Unicode.RangeTable" + }, + "api/NStack/NStack.Unicode.SpecialCase.html": { + "href": "api/NStack/NStack.Unicode.SpecialCase.html", + "title": "Struct Unicode.SpecialCase", + "keywords": "Struct Unicode.SpecialCase SpecialCase represents language-specific case mappings such as Turkish. Inherited Members System.ValueType.Equals(System.Object) System.ValueType.GetHashCode() System.ValueType.ToString() System.Object.Equals(System.Object, System.Object) System.Object.GetType() System.Object.ReferenceEquals(System.Object, System.Object) Namespace : NStack Assembly : NStack.dll Syntax public struct SpecialCase Remarks Methods of SpecialCase customize (by overriding) the standard mappings. Methods ToLower(UInt32) ToLower maps the rune to lower case giving priority to the special mapping. Declaration public uint ToLower(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.UInt32 The lower cased rune if it can be. ToTitle(UInt32) ToTitle maps the rune to title case giving priority to the special mapping. Declaration public uint ToTitle(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.UInt32 The title cased rune if it can be. ToUpper(UInt32) ToUpper maps the rune to upper case giving priority to the special mapping. Declaration public uint ToUpper(uint rune) Parameters Type Name Description System.UInt32 rune Rune. Returns Type Description System.UInt32 The upper cased rune if it can be." + }, + "api/NStack/NStack.ustring.html": { + "href": "api/NStack/NStack.ustring.html", + "title": "Class ustring", + "keywords": "Class ustring ustrings are used to manipulate utf8 strings, either from byte arrays or blocks of memory. Inheritance System.Object ustring Implements System.IComparable < ustring > System.IComparable System.IConvertible System.Collections.Generic.IEnumerable < System.UInt32 > System.Collections.IEnumerable System.IEquatable < ustring > System.ICloneable Inherited Members System.Object.Equals(System.Object, System.Object) System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : NStack Assembly : NStack.dll Syntax public abstract class ustring : IComparable, IComparable, IConvertible, IEnumerable, IEnumerable, IEquatable, ICloneable Remarks The ustring provides a series of string-like operations over an array of bytes. The buffer is expected to contain an UTF8 encoded string, but if the buffer contains an invalid utf8 sequence many of the operations will continue to work. The strings can be created either from byte arrays, a range within a byte array, or from a block of unmanaged memory. The ustrings are created using one of the Make or MakeCopy methods in the class, not by invoking the new operator on the class. Method Description NStack.ustring.Make(string) Creates a ustring from a C# string. NStack.ustring.Make(byte[]) Creates a ustring from a byte array. NStack.ustring.Make(byte[],int,int) Creates a ustring from a range in a byte array. NStack.ustring.Make(uint[]) Creates a ustring from a single rune. NStack.ustring.Make(char[]) Creates a ustring from a character array. NStack.ustring.Make(System.IntPtr,int,System.Action{System.IntPtr}) Creates a ustring from an unmanaged memory block, with an optional method to invoke to release the block when the ustring is garbage collected. Make(IntPtr, Action) Creates a ustring from an unmanaged memory block that is null-terminated, suitable for interoperability with C APIs. It takes an optional method to invoke to release the block when the ustring is garbage collected. NStack.ustring.MakeCopy(System.IntPtr,int) Creates a ustring by making a copy of the provided memory block. MakeCopy(IntPtr) Creates a ustring by making a copy of the null-terminated memory block. Suitable for interoperability with C APIs. The Length property describes the length in bytes of the underlying array, while the RuneCount property describes the number of code points (or runes) that are represented by the underlying utf8 encoded buffer. The ustring supports slicing by calling the indexer with two arguments, the argument represent indexes into the underlying byte buffer. The starting index is inclusive, while the ending index is exclusive. Negative values can be used to index the string from the end. See the documentation for the indexer for more details. Fields Empty The empty ustring. Declaration public static ustring Empty Field Value Type Description ustring Properties ConsoleWidth Returns the number of columns used by the unicode string on console applications. This is done by calling the Rune.ColumnWidth on each rune. Declaration public int ConsoleWidth { get; } Property Value Type Description System.Int32 IsEmpty Gets a value indicating whether this ustring is empty. Declaration public bool IsEmpty { get; } Property Value Type Description System.Boolean true if is empty (Length is zero); otherwise, false . Item[Int32] Returns the byte at the specified position. Declaration public abstract byte this[int index] { get; } Parameters Type Name Description System.Int32 index Property Value Type Description System.Byte The byte encoded at the specified position. Remarks The index value should be between 0 and Length-1. Item[Int32, Int32] Returns a slice of the ustring delimited by the [start, end) range. If the range is invalid, the return is the Empty string. Declaration public ustring this[int start, int end] { get; } Parameters Type Name Description System.Int32 start Start index, this value is inclusive. If the value is negative, the value is added to the length, allowing this parameter to count to count from the end of the string. System.Int32 end End index, this value is exclusive. If the value is negative, the value is added to the length, plus one, allowing this parameter to count from the end of the string. Property Value Type Description ustring Remarks Some examples given the string \"1234567890\": The range [0, 4] produces \"1234\" The range [8, 10] produces \"90\" The range [8, null] produces \"90\" The range [-2, null] produces \"90\" The range [8, 9] produces \"9\" The range [-4, -1] produces \"789\" The range [-4, null] produces \"7890\" The range [-4, null] produces \"7890\" The range [-9, -3] produces \"234567\" The range [0, 0] produces the empty string This indexer does not raise exceptions for invalid indexes, instead the value returned is the ustring.Empty value: The range [100, 200] produces the ustring.Empty The range [-100, 0] produces ustring.Empty To simulate the optional end boundary, use the indexer that takes the object parameter and pass a null to it. For example, to fetch all elements from the position five until the end, use [5, null] Item[Int32, Object] Returns a slice of the ustring delimited by the [start, last-element-of-the-string range. If the range is invalid, the return is the Empty string. Declaration public ustring this[int start, object end] { get; } Parameters Type Name Description System.Int32 start Byte start index, this value is inclusive. If the value is negative, the value is added to the length, allowing this parameter to count to count from the end of the string. System.Object end Byte end index. This value is expected to be null to indicate that it should be the last element of the string. Property Value Type Description ustring Remarks This is a companion indexer to the indexer that takes two integers, it only exists to provide the optional end argument to mean \"until the end\", and to make the code that uses indexer look familiar, without having to resort to another API. Some examples given the string \"1234567890\": The indexes are byte indexes, they are not rune indexes. The range [8, null] produces \"90\" The range [-2, null] produces \"90\" The range [8, 9] produces \"9\" The range [-4, -1] produces \"789\" The range [-4, null] produces \"7890\" The range [-4, null] produces \"7890\" The range [-9, -3] produces \"234567\" This indexer does not raise exceptions for invalid indexes, instead the value returned is the ustring.Empty value: The range [100, 200] produces the ustring.Empty The range [-100, 0] produces ustring.Empty To simulate the optional end boundary, use the indexer that takes the object parameter and pass a null to it. For example, to fetch all elements from the position five until the end, use [5, null] Length Gets the length in bytes of the byte buffer. Declaration public abstract int Length { get; } Property Value Type Description System.Int32 The length in bytes of the encoded UTF8 string, does not represent the number of runes. Remarks To obtain the number of runes in the string, use the System.ustring.RuneCount property. RuneCount Gets the rune count of the string. Declaration public int RuneCount { get; } Property Value Type Description System.Int32 The rune count. Methods CompareTo(ustring) Implements the IComparable .CompareTo method Declaration public int CompareTo(ustring other) Parameters Type Name Description ustring other Value. Returns Type Description System.Int32 Less than zero if this instance is less than value, zero if they are the same, and higher than zero if the instance is greater. Concat(ustring[]) Concatenates the provided ustrings into a new ustring. Declaration public static ustring Concat(params ustring[] args) Parameters Type Name Description ustring [] args One or more ustrings. Returns Type Description ustring A new ustring that contains the concatenation of all the ustrings. Contains(ustring) Returns a value indicating whether a specified substring occurs within this string. Declaration public bool Contains(ustring substr) Parameters Type Name Description ustring substr The string to seek. Returns Type Description System.Boolean true if the substr parameter occurs within this string, or if substr is the empty string (\"\"); otherwise, false. Contains(UInt32) Returns a value indicating whether a specified rune occurs within this string. Declaration public bool Contains(uint rune) Parameters Type Name Description System.UInt32 rune The rune to seek. Returns Type Description System.Boolean true if the rune parameter occurs within this string; otherwise, false. ContainsAny(ustring) Returns a value indicating whether any of the characters in the provided string occurs within this string. Declaration public bool ContainsAny(ustring chars) Parameters Type Name Description ustring chars string containing one or more characters. Returns Type Description System.Boolean true if any of the characters in chars parameter occurs within this string; otherwise, false. ContainsAny(UInt32[]) Returns a value indicating whether any of the runes occurs within this string. Declaration public bool ContainsAny(params uint[] runes) Parameters Type Name Description System.UInt32 [] runes one or more runes. Returns Type Description System.Boolean true if any of the runes in runes parameter occurs within this string; otherwise, false. Copy() The Copy method makes a copy of the underlying data, it can be used to release the resources associated with an unmanaged buffer, or a ranged string. Declaration public ustring Copy() Returns Type Description ustring A copy of the underlying data. CopyTo(Int32, Byte[], Int32, Int32) Copies the specified number of bytes from the underlying ustring representation to the target array at the specified offset. Declaration public abstract void CopyTo(int fromOffset, byte[] target, int targetOffset, int count) Parameters Type Name Description System.Int32 fromOffset Offset in the underlying ustring buffer to copy from. System.Byte [] target Target array where the buffer contents will be copied to. System.Int32 targetOffset Offset into the target array where this will be copied to. System.Int32 count Number of bytes to copy. Count(ustring) Count the number of non-overlapping instances of substr in the string. Declaration public int Count(ustring substr) Parameters Type Name Description ustring substr Substr. Returns Type Description System.Int32 If substr is an empty string, Count returns 1 + the number of Unicode code points in the string, otherwise the count of non-overlapping instances in string. EndsWith(ustring) Determines whether the end of this string instance matches the specified string. Declaration public bool EndsWith(ustring suffix) Parameters Type Name Description ustring suffix The string to compare to the substring at the end of this instance. Returns Type Description System.Boolean true if suffix matches the end of this instance; otherwise, false. Equals(ustring) Determines whether the specified System.Object is equal to the current ustring . Declaration public bool Equals(ustring other) Parameters Type Name Description ustring other The other string to compare with the current ustring . Returns Type Description System.Boolean true if the specified ustring is equal to the current ustring; otherwise, false . Equals(Object) Determines whether the specified System.Object is equal to the current ustring . Declaration public override bool Equals(object obj) Parameters Type Name Description System.Object obj The System.Object to compare with the current ustring . Returns Type Description System.Boolean true if the specified System.Object is equal to the current ustring ; otherwise, false . Overrides System.Object.Equals(System.Object) EqualsFold(ustring) Reports whether this string and the provided string, when interpreted as UTF-8 strings, are equal under Unicode case-folding Declaration public bool EqualsFold(ustring other) Parameters Type Name Description ustring other Other. Returns Type Description System.Boolean true , if fold was equaled, false otherwise. Explode(Int32) Explode splits the string into a slice of UTF-8 strings Declaration public ustring[] Explode(int limit = -1) Parameters Type Name Description System.Int32 limit Maximum number of entries to return, or -1 for no limits. Returns Type Description ustring [] , one string per unicode character, up to the specified limit. GetHashCode() Serves as a hash function for a ustring object. Declaration public override int GetHashCode() Returns Type Description System.Int32 A hash code for this instance that is suitable for use in hashing algorithms and data structures such as a hash table. Overrides System.Object.GetHashCode() GetRange(Int32, Int32) For internal use, returns the range of bytes specified. Declaration protected abstract ustring GetRange(int start, int end) Parameters Type Name Description System.Int32 start Start. System.Int32 end End. Returns Type Description ustring The range. IndexByte(Byte, Int32) Reports the zero-based index of the first occurrence of the specified byte in the underlying byte buffer. Declaration public int IndexByte(byte b, int offset) Parameters Type Name Description System.Byte b The byte to seek. System.Int32 offset Starting location. Returns Type Description System.Int32 The zero-based index position of b if that byte is found, or -1 if it is not. IndexOf(ustring, Int32) Reports the zero-based index of the first occurrence of a specified Unicode character or string within this instance. Declaration public int IndexOf(ustring substr, int offset = 0) Parameters Type Name Description ustring substr The string to seek. System.Int32 offset The search starting position. Returns Type Description System.Int32 The zero-based index position of value if that character is found, or -1 if it is not. The index position returned is relative to the start of the substring, not to the offset. IndexOf(ustring.RunePredicate) IndexOf returns the index into s of the first Unicode rune satisfying matchFunc(rune), or -1 if none do. Declaration public int IndexOf(ustring.RunePredicate matchFunc) Parameters Type Name Description ustring.RunePredicate matchFunc Match func, it receives a rune as a parameter and should return true if it matches, false otherwise. Returns Type Description System.Int32 The index inside the string where the rune is found, or -1 on error. IndexOf(UInt32, Int32) Reports the zero-based index of the first occurrence of the specified Unicode rune in this string Declaration public int IndexOf(uint rune, int offset = 0) Parameters Type Name Description System.UInt32 rune Rune. System.Int32 offset Starting offset to start the search from. Returns Type Description System.Int32 The zero-based index position of rune if that character is found, or -1 if it is not. If the rune is Utf8.RuneError, it returns the first instance of any invalid UTF-8 byte sequence. IndexOfAny(ustring) Reports the zero-based index of the first occurrence in this instance of any character in the provided string Declaration public int IndexOfAny(ustring chars) Parameters Type Name Description ustring chars ustring containing characters to seek. Returns Type Description System.Int32 The zero-based index position of the first occurrence in this instance where any character in chars was found; -1 if no character in chars was found. IndexOfAny(UInt32[]) Reports the zero-based index of the first occurrence in this instance of any runes in the provided string Declaration public int IndexOfAny(params uint[] runes) Parameters Type Name Description System.UInt32 [] runes ustring containing runes. Returns Type Description System.Int32 The zero-based index position of the first occurrence in this instance where any character in runes was found; -1 if no character in runes was found. IsNullOrEmpty(ustring) Represent the null or empty value related to the ustring. Declaration public static bool IsNullOrEmpty(ustring value) Parameters Type Name Description ustring value Returns Type Description System.Boolean IsSeparator(UInt32) IsSeparator reports whether the rune could mark a word boundary. Declaration public static bool IsSeparator(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test. Returns Type Description System.Boolean true , if the rune can be considered a word boundary, false otherwise. Join(ustring, ustring[]) Concatenates all the elements of a ustring array, using the specified separator between each element. Declaration public static ustring Join(ustring separator, params ustring[] values) Parameters Type Name Description ustring separator Separator. ustring [] values Values. Returns Type Description ustring A string that consists of the elements in values delimited by the separator string. If values is an empty array, the method returns System.ustring.Empty . LastIndexByte(Byte) Reports the zero-based index position of the last occurrence of a specified byte on the underlying byte buffer. Declaration public int LastIndexByte(byte b) Parameters Type Name Description System.Byte b The byte to seek. Returns Type Description System.Int32 The zero-based index position of b if that byte is found, or -1 if it is not. LastIndexOf(ustring) Reports the zero-based index position of the last occurrence of a specified substring within this instance Declaration public int LastIndexOf(ustring substr) Parameters Type Name Description ustring substr The ustring to seek. Returns Type Description System.Int32 The zero-based index position of substr if that character is found, or -1 if it is not. LastIndexOf(ustring.RunePredicate) LastIndexOf returns the index into s of the last Unicode rune satisfying matchFunc(rune), or -1 if none do. Declaration public int LastIndexOf(ustring.RunePredicate matchFunc) Parameters Type Name Description ustring.RunePredicate matchFunc Match func, it receives a rune as a parameter and should return true if it matches, false otherwise. Returns Type Description System.Int32 The last index inside the string where the rune is found, or -1 on error. LastIndexOfAny(ustring) Reports the zero-based index position of the last occurrence in this instance of one or more characters specified in the ustring. Declaration public int LastIndexOfAny(ustring chars) Parameters Type Name Description ustring chars The string containing characters to seek. Returns Type Description System.Int32 The index position of the last occurrence in this instance where any character in chars was found; -1 if no character in chars was found. Make(Byte[]) Initializes a new instance of the ustring class using the provided byte array for its storage. Declaration public static ustring Make(params byte[] buffer) Parameters Type Name Description System.Byte [] buffer Buffer containing the utf8 encoded string. Returns Type Description ustring Remarks No validation is performed on the contents of the byte buffer, so it might contains invalid UTF-8 sequences. No copy is made of the incoming byte buffer, so changes to it will be visible on the ustring. Make(Byte[], Int32, Int32) Initializes a new instance of the ustring class from a byte array. Declaration public static ustring Make(byte[] buffer, int start, int count) Parameters Type Name Description System.Byte [] buffer Buffer containing the utf8 encoded string. System.Int32 start Starting offset into the buffer. System.Int32 count Number of bytes to consume from the buffer. Returns Type Description ustring Remarks No validation is performed on the contents of the byte buffer, so it might contains invalid UTF-8 sequences. This will make a copy of the buffer range. Make(Char[]) Initializes a new instance of the ustring class from an array of C# characters. Declaration public static ustring Make(params char[] chars) Parameters Type Name Description System.Char [] chars Characters. Returns Type Description ustring Make(IEnumerable) Initializes a new instance of the ustring class from an IEnumerable of runes Declaration public static ustring Make(IEnumerable runes) Parameters Type Name Description System.Collections.Generic.IEnumerable < Rune > runes Runes. Returns Type Description ustring The make. Make(IList) Initializes a new instance of the ustring class from an array of Runes. Declaration public static ustring Make(IList runes) Parameters Type Name Description System.Collections.Generic.IList < Rune > runes Runes. Returns Type Description ustring The make. Make(IntPtr, Action) Initializes a new instance of the ustring class from a null terminated block of memory. Declaration public static ustring Make(IntPtr block, Action releaseFunc = null) Parameters Type Name Description System.IntPtr block Pointer to a block of memory, it is expected to be terminated by a 0 byte. System.Action < System.IntPtr > releaseFunc Optional method to invoke to release when this string is finalized to clear the associated resources, you can use this for example to release the unamanged resource to which the block belongs. Returns Type Description ustring Remarks This will return a ustring that represents the block of memory provided. The returned object will be a subclass of ustring that implements IDisposable, which you can use to trigger the synchronous execution of the releaseFunc . If you do not call Dispose manually, the provided release function will be invoked from the finalizer thread. Alternatively, if the block of data is something that you do not own, and you would like to make a copy of it, you might want to consider using the MakeCopy(IntPtr) method. Make(IntPtr, Int32, Action) Initializes a new instance of the ustring class from a block of memory and a size. Declaration public static ustring Make(IntPtr block, int size, Action releaseFunc = null) Parameters Type Name Description System.IntPtr block Pointer to a block of memory. System.Int32 size Number of bytes in the block to treat as a string. System.Action < System.IntPtr > releaseFunc Optional method to invoke to release when this string is finalized to clear the associated resources, you can use this for example to release the unamanged resource to which the block belongs. Returns Type Description ustring Remarks This will return a ustring that represents the block of memory provided. The returned object will be a subclass of ustring that implements IDisposable, which you can use to trigger the synchronous execution of the releaseFunc . If you do not call Dispose manually, the provided release function will be invoked from the finalizer thread. Alternatively, if the block of data is something that you do not own, and you would like to make a copy of it, you might want to consider using the NStack.ustring.MakeCopy(System.IntPtr,int) method. Make(Rune) Initializes a new instance using the provided rune as the sole character in the string. Declaration public static ustring Make(Rune rune) Parameters Type Name Description Rune rune Rune (short name for Unicode code point). Returns Type Description ustring Make(String) Initializes a new instance of the ustring class from a string. Declaration public static ustring Make(string str) Parameters Type Name Description System.String str C# String. Returns Type Description ustring Make(UInt32[]) Initializes a new instance of the ustring class from an array of uints, which contain CodePoints. Declaration public static ustring Make(uint[] runes) Parameters Type Name Description System.UInt32 [] runes Runes. Returns Type Description ustring The make. MakeCopy(IntPtr) Initializes a new instance of the ustring by making a copy of the null-terminated block of memory. Declaration public static ustring MakeCopy(IntPtr block) Parameters Type Name Description System.IntPtr block Pointer to a block of memory, it is expected to be terminated by a 0 byte. Returns Type Description ustring Remarks This will return a ustring that contains a copy of the zero-terminated buffer pointed to by block. This is useful to create a string returned from C on a region of memory whose lifecycle you do not control, so this will make a private copy of the buffer. MakeCopy(IntPtr, Int32) Initializes a new instance of the ustring by making a copy of the specified block. Declaration public static ustring MakeCopy(IntPtr block, int size) Parameters Type Name Description System.IntPtr block Pointer to a block of memory which will be copied into the string. System.Int32 size Number of bytes in the block to treat as a string. Returns Type Description ustring Remarks This will return a ustring that contains a copy of the buffer pointed to by block. This is useful when you do not control the lifecycle of the buffer pointed to and desire the convenience of a method that makes a copy of the data for you. Range() An enumerator that returns the index within the string, and the rune found at that location Declaration public IEnumerable<(int index, uint rune)> Range() Returns Type Description System.Collections.Generic.IEnumerable < System.ValueTuple < System.Int32 , System.UInt32 >> Enumerable object that can be used to iterate and get the index of the values at the same time. Remarks This is useful to iterate over the string and obtain both the index of the rune and the rune in the same call. This version does allocate an object for the enumerator, if you want to avoid the object allocation, you can use the following code to iterate over the contents of the string ustring mystr = \"hello\"; int byteLen = mystr.Length; for (int i = 0; i < byteLen;) { (var rune, var size) = Utf8.DecodeRune(mystr, i, i - byteLen); Console.WriteLine (\"Rune is: \" + rune); i += size; } Replace(ustring, ustring, Int32) Returns a new ustring with the non-overlapping instances of oldValue replaced with newValue. Declaration public ustring Replace(ustring oldValue, ustring newValue, int maxReplacements = -1) Parameters Type Name Description ustring oldValue Old value; if it is empty, the string matches at the beginning of the string and after each UTF-8 sequence, yielding up to k+1 replacements for a k-rune string. ustring newValue New value that will replace the oldValue. System.Int32 maxReplacements Optional, the maximum number of replacements. Negative values indicate that there should be no limit to the replacements. Returns Type Description ustring The replace. RuneAt(Int32) Returns the Rune encoded at the specified byte index . Declaration public Rune RuneAt(int index) Parameters Type Name Description System.Int32 index Index. Returns Type Description Rune The Rune which might be Rune.Error if the value at the specified index is not UTF8 compliant, for example because it is not a valid UTF8 encoding, or the buffer is too short. RuneSubstring(Int32, Int32) Returns the substring starting at the given position in rune index from the origin of the Utf8 string. Declaration public ustring RuneSubstring(int runeStart, int length = 0) Parameters Type Name Description System.Int32 runeStart Starting point, default value is 0. System.Int32 length The substring length. Returns Type Description ustring The substring starting at the specified offset. Split(ustring, Int32) Split the string using at every instance of a string separator Declaration public ustring[] Split(ustring separator, int n = -1) Parameters Type Name Description ustring separator Separator string. System.Int32 n Optional maximum number of results to return, or -1 for an unlimited result Returns Type Description ustring [] An array containing the individual strings, excluding the separator string. StartsWith(ustring) Determines whether the beginning of this string instance matches the specified string. Declaration public bool StartsWith(ustring prefix) Parameters Type Name Description ustring prefix Prefix. Returns Type Description System.Boolean true if prefix matches the beginning of this string; otherwise, false . Substring(Int32, Int32) Returns the substring starting at the given position in bytes from the origin of the Utf8 string. Use RuneSubstring to extract substrings based on the rune index, rather than the byte index inside the Utf8 encoded string. Declaration public ustring Substring(int byteStart, int length = 0) Parameters Type Name Description System.Int32 byteStart Starting point, default value is 0. System.Int32 length The substring length. Returns Type Description ustring The substring starting at the specified offset. Title() Converts the string to Title-case, that is every word (as determined by NStack.ustring.IsSeparator is Title cased. Declaration public ustring Title() Returns Type Description ustring A title-cased string. ToByteArray() Returns a version of the ustring as a byte array, it might allocate or return the internal byte buffer, depending on the backing implementation. Declaration public abstract byte[] ToByteArray() Returns Type Description System.Byte [] A byte array containing the contents of the ustring. Remarks The byte array contains either a copy of the underlying data, in the cases where the ustring was created from an unmanaged pointer or when the ustring was created by either slicing or from a range withing a byte array. Otherwise the returned array that is used by the ustring itself. ToLower() Returns a copy of the string s with all Unicode letters mapped to their lower case. Declaration public ustring ToLower() Returns Type Description ustring The lowercased string. ToLower(Unicode.SpecialCase) Returns a copy of the string s with all Unicode letters mapped to their lower case giving priority to the special casing rules. Declaration public ustring ToLower(Unicode.SpecialCase specialCase) Parameters Type Name Description Unicode.SpecialCase specialCase Returns Type Description ustring The string to uppercase. ToRuneList() Converts a ustring into a List of runes. Declaration public List ToRuneList() Returns Type Description System.Collections.Generic.List < Rune > A list containing the runes for the string, it is not bound by any limits. ToRuneList(Int32) Converts a ustring into a rune array. Declaration public List ToRuneList(int limit) Parameters Type Name Description System.Int32 limit Maximum number of entries to return, or -1 for no limits. Returns Type Description System.Collections.Generic.List < Rune > An array containing the runes for the string up to the specified limit. ToRunes(Int32) Converts a ustring into a rune array. Declaration public uint[] ToRunes(int limit = -1) Parameters Type Name Description System.Int32 limit Maximum number of entries to return, or -1 for no limits. Returns Type Description System.UInt32 [] An array containing the runes for the string up to the specified limit. ToTitle() Returns a copy of the string s with all Unicode letters mapped to their title case. Declaration public ustring ToTitle() Returns Type Description ustring The title-cased string. ToTitle(Unicode.SpecialCase) Returns a copy of the string s with all Unicode letters mapped to their title case giving priority to the special casing rules. Declaration public ustring ToTitle(Unicode.SpecialCase specialCase) Parameters Type Name Description Unicode.SpecialCase specialCase Returns Type Description ustring The string to uppercase. ToUpper() Returns a copy of the string s with all Unicode letters mapped to their upper case. Declaration public ustring ToUpper() Returns Type Description ustring The string to uppercase. ToUpper(Unicode.SpecialCase) Returns a copy of the string s with all Unicode letters mapped to their upper case giving priority to the special casing rules. Declaration public ustring ToUpper(Unicode.SpecialCase specialCase) Parameters Type Name Description Unicode.SpecialCase specialCase Returns Type Description ustring The string to uppercase. Trim(ustring.RunePredicate) Returns a slice of the string with all leading and trailing runes matching the predicate removed. Declaration public ustring Trim(ustring.RunePredicate predicate) Parameters Type Name Description ustring.RunePredicate predicate Predicate. Returns Type Description ustring The trim. TrimEnd(ustring) TrimEnd returns a slice of the string with all leading characters in cutset removed. Declaration public ustring TrimEnd(ustring cutset) Parameters Type Name Description ustring cutset Characters to remove. Returns Type Description ustring The slice of the string with all cutset characters removed. TrimEnd(ustring.RunePredicate) Returns a slice of the string with all trailing runes matching the predicate removed. Declaration public ustring TrimEnd(ustring.RunePredicate predicate) Parameters Type Name Description ustring.RunePredicate predicate Function that determines whether this character must be trimmed. Returns Type Description ustring The current string if the predicate does not match anything, or a slice of the string starting in the first rune after the predicate matched. TrimSpace() Returns a slice of the string with all leading and trailing space characters removed (as determined by NStack.Unicode.IsSpace() Declaration public ustring TrimSpace() Returns Type Description ustring The space. TrimStart(ustring) TrimStarts returns a slice of the string with all leading characters in cutset removed. Declaration public ustring TrimStart(ustring cutset) Parameters Type Name Description ustring cutset Characters to remove. Returns Type Description ustring The slice of the string with all cutset characters removed. TrimStart(ustring.RunePredicate) Returns a slice of the string with all leading runes matching the predicate removed. Declaration public ustring TrimStart(ustring.RunePredicate predicate) Parameters Type Name Description ustring.RunePredicate predicate Function that determines whether this character must be trimmed. Returns Type Description ustring The current string if the predicate does not match anything, or a slice of the string starting in the first rune after the predicate matched. Operators Addition(ustring, ustring) Concatenates the contents of two ustring instances. Declaration public static ustring operator +(ustring u1, ustring u2) Parameters Type Name Description ustring u1 The first ustring to add, can be null. ustring u2 The second ustring to add, can be null. Returns Type Description ustring The ustring that is the concatenation of the strings of u1 and u2 . Equality(ustring, ustring) Determines whether a specified instance of ustring is equal to another specified ustring , this means that the contents of the string are identical Declaration public static bool operator ==(ustring a, ustring b) Parameters Type Name Description ustring a The first ustring to compare. ustring b The second ustring to compare. Returns Type Description System.Boolean true if a and b are equal; otherwise, false . Implicit(Byte[] to ustring) Implicit conversion from a byte array into a ustring. Declaration public static implicit operator ustring(byte[] buffer) Parameters Type Name Description System.Byte [] buffer The buffer containing the data. Returns Type Description ustring The ustring wrapping the existing byte array. Remarks The returned string will keep a reference to the buffer, which means that changes done to the buffer will be reflected into the ustring. Implicit(String to ustring) Implicit conversion from a C# string into a ustring. Declaration public static implicit operator ustring(string str) Parameters Type Name Description System.String str The string to encode as a ustring. Returns Type Description ustring The ustring with the same contents as the string. Remarks This will allocate a byte array and copy the contents of the string encoded as UTF8 into it. Inequality(ustring, ustring) Determines whether a specified instance of ustring is not equal to another specified ustring . Declaration public static bool operator !=(ustring a, ustring b) Parameters Type Name Description ustring a The first ustring to compare. ustring b The second ustring to compare. Returns Type Description System.Boolean true if a and b are not equal; otherwise, false . Explicit Interface Implementations IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description System.Collections.Generic.IEnumerator < System.UInt32 > IEnumerable.GetEnumerator() Declaration IEnumerator IEnumerable.GetEnumerator() Returns Type Description System.Collections.IEnumerator ICloneable.Clone() Declaration object ICloneable.Clone() Returns Type Description System.Object IComparable.CompareTo(Object) Declaration int IComparable.CompareTo(object value) Parameters Type Name Description System.Object value Returns Type Description System.Int32 IConvertible.GetTypeCode() Declaration TypeCode IConvertible.GetTypeCode() Returns Type Description System.TypeCode IConvertible.ToBoolean(IFormatProvider) Declaration bool IConvertible.ToBoolean(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Boolean IConvertible.ToByte(IFormatProvider) Declaration byte IConvertible.ToByte(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Byte IConvertible.ToChar(IFormatProvider) Declaration char IConvertible.ToChar(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Char IConvertible.ToDateTime(IFormatProvider) Declaration DateTime IConvertible.ToDateTime(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.DateTime IConvertible.ToDecimal(IFormatProvider) Declaration decimal IConvertible.ToDecimal(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Decimal IConvertible.ToDouble(IFormatProvider) Declaration double IConvertible.ToDouble(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Double IConvertible.ToInt16(IFormatProvider) Declaration short IConvertible.ToInt16(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Int16 IConvertible.ToInt32(IFormatProvider) Declaration int IConvertible.ToInt32(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Int32 IConvertible.ToInt64(IFormatProvider) Declaration long IConvertible.ToInt64(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Int64 IConvertible.ToSByte(IFormatProvider) Declaration sbyte IConvertible.ToSByte(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.SByte IConvertible.ToSingle(IFormatProvider) Declaration float IConvertible.ToSingle(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.Single IConvertible.ToString(IFormatProvider) Declaration string IConvertible.ToString(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.String IConvertible.ToType(Type, IFormatProvider) Declaration object IConvertible.ToType(Type conversionType, IFormatProvider provider) Parameters Type Name Description System.Type conversionType System.IFormatProvider provider Returns Type Description System.Object IConvertible.ToUInt16(IFormatProvider) Declaration ushort IConvertible.ToUInt16(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.UInt16 IConvertible.ToUInt32(IFormatProvider) Declaration uint IConvertible.ToUInt32(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.UInt32 IConvertible.ToUInt64(IFormatProvider) Declaration ulong IConvertible.ToUInt64(IFormatProvider provider) Parameters Type Name Description System.IFormatProvider provider Returns Type Description System.UInt64 Implements System.IComparable System.IComparable System.IConvertible System.Collections.Generic.IEnumerable System.Collections.IEnumerable System.IEquatable System.ICloneable Extension Methods RuneExtensions.FullRune(ustring) RuneExtensions.DecodeRune(ustring, Int32, Int32) RuneExtensions.DecodeLastRune(ustring, Int32) RuneExtensions.RuneCount(ustring) RuneExtensions.InvalidIndex(ustring) RuneExtensions.Valid(ustring) RuneExtensions.ExpectedSizeFromFirstByte(ustring)" + }, + "api/NStack/NStack.ustring.RunePredicate.html": { + "href": "api/NStack/NStack.ustring.RunePredicate.html", + "title": "Delegate ustring.RunePredicate", + "keywords": "Delegate ustring.RunePredicate Rune predicate functions take a rune as input and return a boolean determining if the rune matches or not. Namespace : NStack Assembly : NStack.dll Syntax public delegate bool RunePredicate(uint rune); Parameters Type Name Description System.UInt32 rune Returns Type Description System.Boolean" + }, + "api/NStack/NStack.Utf8.html": { + "href": "api/NStack/NStack.Utf8.html", + "title": "Class Utf8", + "keywords": "Class Utf8 UTF8 Helper methods and routines. Inheritance System.Object Utf8 Inherited Members System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : NStack Assembly : NStack.dll Syntax public static class Utf8 Remarks The term \"rune\" is used to represent a Unicode code point merely because it is a shorter way of talking about it. Fields MaxRune Maximum valid Unicode code point. Declaration public const uint MaxRune = 1114111U Field Value Type Description System.UInt32 RuneError The \"error\" Rune or \"Unicode replacement character\" Declaration public static uint RuneError Field Value Type Description System.UInt32 RuneSelf Characters below RuneSelf are represented as themselves in a single byte Declaration public const byte RuneSelf = 128 Field Value Type Description System.Byte Utf8Max Maximum number of bytes required to encode every unicode code point. Declaration public const int Utf8Max = 4 Field Value Type Description System.Int32 Methods DecodeLastRune(ustring, Int32) DecodeLastRune unpacks the last UTF-8 encoding in the ustring. Declaration public static (uint Rune, int size) DecodeLastRune(ustring str, int end = -1) Parameters Type Name Description ustring str String to decode rune from; if it is empty, it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. System.Int32 end Scan up to that point, if the value is -1, it sets the value to the lenght of the buffer. Returns Type Description System.ValueTuple < System.UInt32 , System.Int32 > The last rune and its width in bytes. Remarks An encoding is invalid if it is incorrect UTF-8, encodes a rune that is out of range, or is not the shortest possible UTF-8 encoding for the value. No other validation is performed. DecodeLastRune(Byte[], Int32) DecodeLastRune unpacks the last UTF-8 encoding in buffer Declaration public static (uint Rune, int size) DecodeLastRune(byte[] buffer, int end = -1) Parameters Type Name Description System.Byte [] buffer Buffer to decode rune from; if it is empty, it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. System.Int32 end Scan up to that point, if the value is -1, it sets the value to the lenght of the buffer. Returns Type Description System.ValueTuple < System.UInt32 , System.Int32 > The last rune and its width in bytes. Remarks An encoding is invalid if it is incorrect UTF-8, encodes a rune that is out of range, or is not the shortest possible UTF-8 encoding for the value. No other validation is performed. DecodeRune(ustring, Int32, Int32) DecodeRune unpacks the first UTF-8 encoding in the ustring returns the rune and its width in bytes. Declaration public static (uint Rune, int size) DecodeRune(ustring str, int start = 0, int n = -1) Parameters Type Name Description ustring str ustring to decode. System.Int32 start Starting offset to look into.. System.Int32 n Number of bytes valid in the buffer, or -1 to make it the lenght of the buffer. Returns Type Description System.ValueTuple < System.UInt32 , System.Int32 > If p is empty it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. DecodeRune(Byte[], Int32, Int32) DecodeRune unpacks the first UTF-8 encoding in p and returns the rune and its width in bytes. Declaration public static (uint Rune, int Size) DecodeRune(byte[] buffer, int start = 0, int n = -1) Parameters Type Name Description System.Byte [] buffer Byte buffer containing the utf8 string. System.Int32 start Starting offset to look into.. System.Int32 n Number of bytes valid in the buffer, or -1 to make it the lenght of the buffer. Returns Type Description System.ValueTuple < System.UInt32 , System.Int32 > If p is empty it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. EncodeRune(UInt32, Byte[], Int32) Writes into the destination buffer starting at offset the UTF8 encoded version of the rune Declaration public static int EncodeRune(uint rune, byte[] dest, int offset = 0) Parameters Type Name Description System.UInt32 rune Rune to encode. System.Byte [] dest Destination buffer. System.Int32 offset Offset into the destination buffer. Returns Type Description System.Int32 The number of bytes written into the destination buffer. FullRune(ustring) FullRune reports whether the ustring begins with a full UTF-8 encoding of a rune. An invalid encoding is considered a full Rune since it will convert as a width-1 error rune. Declaration public static bool FullRune(ustring str) Parameters Type Name Description ustring str The string to check. Returns Type Description System.Boolean true , if the bytes in p begin with a full UTF-8 encoding of a rune, false otherwise. FullRune(Byte[]) FullRune reports whether the bytes in p begin with a full UTF-8 encoding of a rune. An invalid encoding is considered a full Rune since it will convert as a width-1 error rune. Declaration public static bool FullRune(byte[] p) Parameters Type Name Description System.Byte [] p byte array. Returns Type Description System.Boolean true , if the bytes in p begin with a full UTF-8 encoding of a rune, false otherwise. InvalidIndex(ustring) Use to find the index of the first invalid utf8 byte sequence in a buffer Declaration public static int InvalidIndex(ustring str) Parameters Type Name Description ustring str String containing the utf8 buffer. Returns Type Description System.Int32 The index of the first insvalid byte sequence or -1 if the entire buffer is valid. InvalidIndex(Byte[]) Use to find the index of the first invalid utf8 byte sequence in a buffer Declaration public static int InvalidIndex(byte[] buffer) Parameters Type Name Description System.Byte [] buffer Buffer containing the utf8 buffer. Returns Type Description System.Int32 The index of the first insvalid byte sequence or -1 if the entire buffer is valid. RuneCount(ustring) Returns the number of runes in a ustring. Declaration public static int RuneCount(ustring str) Parameters Type Name Description ustring str utf8 string. Returns Type Description System.Int32 Numnber of runes. RuneCount(Byte[], Int32, Int32) Returns the number of runes in a utf8 encoded buffer Declaration public static int RuneCount(byte[] buffer, int offset = 0, int count = -1) Parameters Type Name Description System.Byte [] buffer Byte buffer containing a utf8 string. System.Int32 offset Starting offset in the buffer. System.Int32 count Number of bytes to process in buffer, or -1 to process until the end of the buffer. Returns Type Description System.Int32 Numnber of runes. RuneLen(UInt32) number of bytes required to encode the rune. Declaration public static int RuneLen(uint rune) Parameters Type Name Description System.UInt32 rune Rune to probe. Returns Type Description System.Int32 The length, or -1 if the rune is not a valid value to encode in UTF-8. Valid(ustring) Reports whether the ustring consists entirely of valid UTF-8-encoded runes. Declaration public static bool Valid(ustring str) Parameters Type Name Description ustring str String to validate. Returns Type Description System.Boolean Valid(Byte[]) Reports whether p consists entirely of valid UTF-8-encoded runes. Declaration public static bool Valid(byte[] buffer) Parameters Type Name Description System.Byte [] buffer Byte buffer containing a utf8 string. Returns Type Description System.Boolean ValidRune(UInt32) ValidRune reports whether a rune can be legally encoded as UTF-8. Declaration public static bool ValidRune(uint rune) Parameters Type Name Description System.UInt32 rune The rune to test. Returns Type Description System.Boolean true , if rune is valid, false otherwise." + }, + "api/NStack/System.html": { + "href": "api/NStack/System.html", + "title": "Namespace System", + "keywords": "Namespace System Classes RuneExtensions Helper class that implements Rune extensions for the ustring type. Structs Rune A Rune represents a Unicode CodePoint storing the contents in a 32-bit value Enums Rune.Case The types of cases supported." + }, + "api/NStack/System.Rune.Case.html": { + "href": "api/NStack/System.Rune.Case.html", + "title": "Enum Rune.Case", + "keywords": "Enum Rune.Case The types of cases supported. Namespace : System Assembly : NStack.dll Syntax public enum Case Fields Name Description Lower Lower case Title Title case capitalizes the first letter, and keeps the rest in lowercase. Sometimes it is not as straight forward as the uppercase, some characters require special handling, like certain ligatures and Greek characters. Upper Upper case" + }, + "api/NStack/System.Rune.html": { + "href": "api/NStack/System.Rune.html", + "title": "Struct Rune", + "keywords": "Struct Rune A Rune represents a Unicode CodePoint storing the contents in a 32-bit value Inherited Members System.Object.Equals(System.Object, System.Object) System.Object.GetType() System.Object.ReferenceEquals(System.Object, System.Object) Namespace : System Assembly : NStack.dll Syntax public struct Rune Remarks Constructors Rune(Char) Initializes a new instance of the Rune from a character value. Declaration public Rune(char ch) Parameters Type Name Description System.Char ch C# characters. Rune(UInt32) Initializes a new instance of the Rune from a unsigned integer. Declaration public Rune(uint rune) Parameters Type Name Description System.UInt32 rune Unsigned integer. Remarks The value does not have to be a valid Unicode code point, this API will create an instance of Rune regardless of the whether it is in range or not. Rune(UInt32, UInt32) Initializes a new instance of the Rune from a surrogate pair value. Declaration public Rune(uint highSurrogate, uint lowSurrogate) Parameters Type Name Description System.UInt32 highSurrogate The high surrogate code point. System.UInt32 lowSurrogate The low surrogate code point. Fields Error The \"error\" Rune or \"Unicode replacement character\" Declaration public static Rune Error Field Value Type Description Rune MaxRune Maximum valid Unicode code point. Declaration public static Rune MaxRune Field Value Type Description Rune ReplacementChar Represents invalid code points. Declaration public static Rune ReplacementChar Field Value Type Description Rune RuneSelf Characters below RuneSelf are represented as themselves in a single byte Declaration public const byte RuneSelf = 128 Field Value Type Description System.Byte Utf8Max Maximum number of bytes required to encode every unicode code point. Declaration public const int Utf8Max = 4 Field Value Type Description System.Int32 Properties IsNonSpacing Check if the rune is a non-spacing character. Declaration public readonly bool IsNonSpacing { get; } Property Value Type Description System.Boolean True if is a non-spacing character, false otherwise. IsSurrogate Gets a value indicating whether this Rune is a surrogate code point. Declaration public readonly bool IsSurrogate { get; } Property Value Type Description System.Boolean true If is a surrogate code point, false otherwise. IsSurrogatePair Gets a value indicating whether this Rune is a valid surrogate pair. Declaration public readonly bool IsSurrogatePair { get; } Property Value Type Description System.Boolean true If is a valid surrogate pair, false otherwise. IsValid Gets a value indicating whether this Rune can be encoded as UTF-8 Declaration public readonly bool IsValid { get; } Property Value Type Description System.Boolean true if is valid; otherwise, false . Value Gets the rune unsigned integer value. Declaration public readonly uint Value { get; } Property Value Type Description System.UInt32 Methods ColumnWidth(Char) Number of column positions of a wide-character code. This is used to measure runes as displayed by text-based terminals. Declaration public static int ColumnWidth(char c) Parameters Type Name Description System.Char c The char. Returns Type Description System.Int32 The width in columns, 0 if the argument is the null character, -1 if the value is not printable, otherwise the number of columns that the rune occupies. ColumnWidth(Rune) Number of column positions of a wide-character code. This is used to measure runes as displayed by text-based terminals. Declaration public static int ColumnWidth(Rune rune) Parameters Type Name Description Rune rune The rune. Returns Type Description System.Int32 The width in columns, 0 if the argument is the null character, -1 if the value is not printable, otherwise the number of columns that the rune occupies. DecodeLastRune(Byte[], Int32) DecodeLastRune unpacks the last UTF-8 encoding in buffer Declaration public static (Rune rune, int size) DecodeLastRune(byte[] buffer, int end = -1) Parameters Type Name Description System.Byte [] buffer Buffer to decode rune from; if it is empty, it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. System.Int32 end Scan up to that point, if the value is -1, it sets the value to the length of the buffer. Returns Type Description System.ValueTuple < Rune , System.Int32 > The last rune and its width in bytes. Remarks An encoding is invalid if it is incorrect UTF-8, encodes a rune that is out of range, or is not the shortest possible UTF-8 encoding for the value. No other validation is performed. DecodeRune(Byte[], Int32, Int32) DecodeRune unpacks the first UTF-8 encoding in p and returns the rune and its width in bytes. Declaration public static (Rune rune, int Size) DecodeRune(byte[] buffer, int start = 0, int n = -1) Parameters Type Name Description System.Byte [] buffer Byte buffer containing the utf8 string. System.Int32 start Starting offset to look into.. System.Int32 n Number of bytes valid in the buffer, or -1 to make it the length of the buffer. Returns Type Description System.ValueTuple < Rune , System.Int32 > If p is empty it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. DecodeSurrogatePair(String, out Char[]) Reports whether this Rune is a valid surrogate pair and can be decoded from UTF-16. Declaration public static bool DecodeSurrogatePair(string str, out char[] chars) Parameters Type Name Description System.String str The string. System.Char [] chars The chars if is valid. Empty otherwise. Returns Type Description System.Boolean true If is a valid surrogate pair, false otherwise. DecodeSurrogatePair(UInt32, out Char[]) Reports whether this Rune is a valid surrogate pair and can be decoded from UTF-16. Declaration public static bool DecodeSurrogatePair(uint rune, out char[] chars) Parameters Type Name Description System.UInt32 rune The rune System.Char [] chars The chars if is valid. Empty otherwise. Returns Type Description System.Boolean true If is a valid surrogate pair, false otherwise. EncodeRune(Rune, Byte[], Int32) Writes into the destination buffer starting at offset the UTF8 encoded version of the rune Declaration public static int EncodeRune(Rune rune, byte[] dest, int offset = 0) Parameters Type Name Description Rune rune Rune to encode. System.Byte [] dest Destination buffer. System.Int32 offset Offset into the destination buffer. Returns Type Description System.Int32 The number of bytes written into the destination buffer. EncodeSurrogatePair(UInt32, UInt32, out Rune) Gets a value indicating whether this Rune can be encoded as UTF-16 from a surrogate pair or zero otherwise. Declaration public static bool EncodeSurrogatePair(uint highsurrogate, uint lowSurrogate, out Rune rune) Parameters Type Name Description System.UInt32 highsurrogate The high surrogate code point. System.UInt32 lowSurrogate The low surrogate code point. Rune rune The returning rune. Returns Type Description System.Boolean True if the returning rune is greater than 0 False otherwise. Equals(Object) Determines whether the specified System.Object is equal to the current Rune . Declaration public override bool Equals(object obj) Parameters Type Name Description System.Object obj The System.Object to compare with the current Rune . Returns Type Description System.Boolean true if the specified System.Object is equal to the current Rune ; otherwise, false . Overrides System.ValueType.Equals(System.Object) ExpectedSizeFromFirstByte(Byte) Given one byte from a utf8 string, return the number of expected bytes that make up the sequence. Declaration public static int ExpectedSizeFromFirstByte(byte firstByte) Parameters Type Name Description System.Byte firstByte Is the first byte of a UTF8 sequence. Returns Type Description System.Int32 The number of UTF8 bytes expected given the first prefix. FullRune(Byte[]) FullRune reports whether the bytes in p begin with a full UTF-8 encoding of a rune. An invalid encoding is considered a full Rune since it will convert as a width-1 error rune. Declaration public static bool FullRune(byte[] p) Parameters Type Name Description System.Byte [] p byte array. Returns Type Description System.Boolean true , if the bytes in p begin with a full UTF-8 encoding of a rune, false otherwise. GetHashCode() Serves as a hash function for a Rune object. Declaration public override int GetHashCode() Returns Type Description System.Int32 A hash code for this instance that is suitable for use in hashing algorithms and data structures such as a hash table. Overrides System.ValueType.GetHashCode() InvalidIndex(Byte[]) Use to find the index of the first invalid utf8 byte sequence in a buffer Declaration public static int InvalidIndex(byte[] buffer) Parameters Type Name Description System.Byte [] buffer Buffer containing the utf8 buffer. Returns Type Description System.Int32 The index of the first invalid byte sequence or -1 if the entire buffer is valid. IsControl(Rune) IsControl reports whether the rune is a control character. Declaration public static bool IsControl(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. Remarks The C (Other) Unicode category includes more code points such as surrogates; use C.InRange (r) to test for them. IsDigit(Rune) IsDigit reports whether the rune is a decimal digit. Declaration public static bool IsDigit(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. IsGraphic(Rune) IsGraphic reports whether the rune is defined as a Graphic by Unicode. Declaration public static bool IsGraphic(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. Remarks Such characters include letters, marks, numbers, punctuation, symbols, and spaces, from categories L, M, N, P, S, Zs. IsLetter(Rune) IsLetter reports whether the rune is a letter (category L). Declaration public static bool IsLetter(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a letter, false otherwise. Remarks IsLetterOrDigit(Rune) IsLetterOrDigit reports whether the rune is a letter (category L) or a digit. Declaration public static bool IsLetterOrDigit(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a letter or digit, false otherwise. Remarks IsLetterOrNumber(Rune) IsLetterOrDigit reports whether the rune is a letter (category L) or a number (category N). Declaration public static bool IsLetterOrNumber(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a letter or number, false otherwise. Remarks IsLower(Rune) Reports whether the rune is a lower case letter. Declaration public static bool IsLower(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. IsMark(Rune) IsMark reports whether the rune is a letter (category M). Declaration public static bool IsMark(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks Reports whether the rune is a mark character (category M). IsNonSpacingChar(UInt32, out Int32) Check if the rune is a non-spacing character. Declaration public static bool IsNonSpacingChar(uint rune, out int width) Parameters Type Name Description System.UInt32 rune The rune. System.Int32 width The width. Returns Type Description System.Boolean True if is a non-spacing character, false otherwise. IsNumber(Rune) IsNumber reports whether the rune is a letter (category N). Declaration public static bool IsNumber(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks Reports whether the rune is a mark character (category N). IsPrint(Rune) IsPrint reports whether the rune is defined as printable. Declaration public static bool IsPrint(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. Remarks Such characters include letters, marks, numbers, punctuation, symbols, and the ASCII space character, from categories L, M, N, P, S and the ASCII space character. This categorization is the same as IsGraphic except that the only spacing character is ASCII space, U+0020. IsPunctuation(Rune) IsPunct reports whether the rune is a letter (category P). Declaration public static bool IsPunctuation(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks Reports whether the rune is a mark character (category P). IsSurrogateRune(UInt32) Reports whether a rune is a surrogate code point. Declaration public static bool IsSurrogateRune(uint rune) Parameters Type Name Description System.UInt32 rune The rune. Returns Type Description System.Boolean true If is a surrogate code point, false otherwise. IsSymbol(Rune) IsSymbol reports whether the rune is a symbolic character. Declaration public static bool IsSymbol(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. IsTitle(Rune) Reports whether the rune is a title case letter. Declaration public static bool IsTitle(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a lower case letter, false otherwise. IsUpper(Rune) Reports whether the rune is an upper case letter. Declaration public static bool IsUpper(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is an upper case letter, false otherwise. IsWhiteSpace(Rune) IsSpace reports whether the rune is a space character as defined by Unicode's White Space property. Declaration public static bool IsWhiteSpace(Rune rune) Parameters Type Name Description Rune rune The rune to test for. Returns Type Description System.Boolean true , if the rune is a mark, false otherwise. Remarks In the Latin-1 space, white space includes '\\t', '\\n', '\\v', '\\f', '\\r', ' ', U+0085 (NEL), U+00A0 (NBSP). Other definitions of spacing characters are set by category Z and property Pattern_White_Space. IsWideChar(UInt32) Check if the rune is a wide character. Declaration public static bool IsWideChar(uint rune) Parameters Type Name Description System.UInt32 rune The rune. Returns Type Description System.Boolean True if is a wide character, false otherwise. RuneCount(Byte[], Int32, Int32) Returns the number of runes in a utf8 encoded buffer Declaration public static int RuneCount(byte[] buffer, int offset = 0, int count = -1) Parameters Type Name Description System.Byte [] buffer Byte buffer containing a utf8 string. System.Int32 offset Starting offset in the buffer. System.Int32 count Number of bytes to process in buffer, or -1 to process until the end of the buffer. Returns Type Description System.Int32 Number of runes. RuneLen(Rune) number of bytes required to encode the rune. Declaration public static int RuneLen(Rune rune) Parameters Type Name Description Rune rune Rune to probe. Returns Type Description System.Int32 The length, or -1 if the rune is not a valid value to encode in UTF-8. SimpleFold(Rune) SimpleFold iterates over Unicode code points equivalent under the Unicode-defined simple case folding. Declaration public static Rune SimpleFold(Rune rune) Parameters Type Name Description Rune rune Rune. Returns Type Description Rune The simple-case folded rune. Remarks SimpleFold iterates over Unicode code points equivalent under the Unicode-defined simple case folding. Among the code points equivalent to rune (including rune itself), SimpleFold returns the smallest rune > r if one exists, or else the smallest rune >= 0. If r is not a valid Unicode code point, SimpleFold(r) returns r. For example: SimpleFold('A') = 'a' SimpleFold('a') = 'A' SimpleFold('K') = 'k' SimpleFold('k') = '\\u212A' (Kelvin symbol, โ„ช) SimpleFold('\\u212A') = 'K' SimpleFold('1') = '1' SimpleFold(-2) = -2 To(Rune.Case, Rune) To maps the rune to the specified case: Case.Upper, Case.Lower, or Case.Title Declaration public static Rune To(Rune.Case toCase, Rune rune) Parameters Type Name Description Rune.Case toCase The destination case. Rune rune Rune to convert. Returns Type Description Rune The cased character. ToLower(Rune) ToLower maps the rune to lower case. Declaration public static Rune ToLower(Rune rune) Parameters Type Name Description Rune rune Rune. Returns Type Description Rune The lower cased rune if it can be. ToString() Returns a System.String that represents the current Rune . Declaration public override string ToString() Returns Type Description System.String A System.String that represents the current Rune . Overrides System.ValueType.ToString() ToTitle(Rune) ToLower maps the rune to title case. Declaration public static Rune ToTitle(Rune rune) Parameters Type Name Description Rune rune Rune. Returns Type Description Rune The lower cased rune if it can be. ToUpper(Rune) ToUpper maps the rune to upper case. Declaration public static Rune ToUpper(Rune rune) Parameters Type Name Description Rune rune Rune. Returns Type Description Rune The upper cased rune if it can be. Valid(Byte[]) Reports whether p consists entirely of valid UTF-8-encoded runes. Declaration public static bool Valid(byte[] buffer) Parameters Type Name Description System.Byte [] buffer Byte buffer containing a utf8 string. Returns Type Description System.Boolean ValidRune(Rune) ValidRune reports whether a rune can be legally encoded as UTF-8. Declaration public static bool ValidRune(Rune rune) Parameters Type Name Description Rune rune The rune to test. Returns Type Description System.Boolean true , if rune was validated, false otherwise. Operators Implicit(Char to Rune) Implicit operator conversion from a C# char into a rune. Declaration public static implicit operator Rune(char ch) Parameters Type Name Description System.Char ch 16-bit Character. Returns Type Description Rune Rune representing the C# character Implicit(Rune to UInt32) Implicit operator conversion from a rune to an unsigned integer Declaration public static implicit operator uint (Rune rune) Parameters Type Name Description Rune rune Rune. Returns Type Description System.UInt32 The unsigned integer representation. Implicit(UInt32 to Rune) Implicit operator conversion from an unsigned integer into a rune. Declaration public static implicit operator Rune(uint value) Parameters Type Name Description System.UInt32 value 32-bit unsigned integer. Returns Type Description Rune Rune representing the C# character" + }, + "api/NStack/System.RuneExtensions.html": { + "href": "api/NStack/System.RuneExtensions.html", + "title": "Class RuneExtensions", + "keywords": "Class RuneExtensions Helper class that implements Rune extensions for the ustring type. Inheritance System.Object RuneExtensions Inherited Members System.Object.Equals(System.Object) System.Object.Equals(System.Object, System.Object) System.Object.GetHashCode() System.Object.GetType() System.Object.MemberwiseClone() System.Object.ReferenceEquals(System.Object, System.Object) System.Object.ToString() Namespace : System Assembly : NStack.dll Syntax public static class RuneExtensions Methods DecodeLastRune(ustring, Int32) DecodeLastRune unpacks the last UTF-8 encoding in the ustring. Declaration public static (Rune rune, int size) DecodeLastRune(this ustring str, int end = -1) Parameters Type Name Description ustring str String to decode rune from; if it is empty, it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. System.Int32 end Scan up to that point, if the value is -1, it sets the value to the length of the buffer. Returns Type Description System.ValueTuple < Rune , System.Int32 > The last rune and its width in bytes. Remarks An encoding is invalid if it is incorrect UTF-8, encodes a rune that is out of range, or is not the shortest possible UTF-8 encoding for the value. No other validation is performed. DecodeRune(ustring, Int32, Int32) DecodeRune unpacks the first UTF-8 encoding in the ustring returns the rune and its width in bytes. Declaration public static (Rune rune, int size) DecodeRune(this ustring str, int start = 0, int n = -1) Parameters Type Name Description ustring str ustring to decode. System.Int32 start Starting offset to look into.. System.Int32 n Number of bytes valid in the buffer, or -1 to make it the length of the buffer. Returns Type Description System.ValueTuple < Rune , System.Int32 > If p is empty it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8. ExpectedSizeFromFirstByte(ustring) Given one byte from a utf8 string, return the number of expected bytes that make up the sequence. Declaration public static int ExpectedSizeFromFirstByte(this ustring str) Parameters Type Name Description ustring str String to get the first byte of a UTF8 sequence. Returns Type Description System.Int32 The number of UTF8 bytes expected given the first prefix. FullRune(ustring) FullRune reports whether the ustring begins with a full UTF-8 encoding of a rune. An invalid encoding is considered a full Rune since it will convert as a width-1 error rune. Declaration public static bool FullRune(this ustring str) Parameters Type Name Description ustring str The string to check. Returns Type Description System.Boolean true , if the bytes in p begin with a full UTF-8 encoding of a rune, false otherwise. InvalidIndex(ustring) Use to find the index of the first invalid utf8 byte sequence in a buffer Declaration public static int InvalidIndex(this ustring str) Parameters Type Name Description ustring str String containing the utf8 buffer. Returns Type Description System.Int32 The index of the first invalid byte sequence or -1 if the entire buffer is valid. RuneCount(ustring) Returns the number of runes in a ustring. Declaration public static int RuneCount(this ustring str) Parameters Type Name Description ustring str utf8 string. Returns Type Description System.Int32 Number of runes. Valid(ustring) Reports whether the ustring consists entirely of valid UTF-8-encoded runes. Declaration public static bool Valid(this ustring str) Parameters Type Name Description ustring str String to validate. Returns Type Description System.Boolean" + }, + "articles/intro.html": { + "href": "articles/intro.html", + "title": "", + "keywords": "NStack contains a new API for .NET based on modern C# and .NET idioms, the long term plan is to use a new model for IO that only uses exceptions for things like invalid parameters, but uses tuples and error codes for the rest. Other areas include making an IO layer that does not surface \"string\" for filenames, as in Unix there are really no filenames as we treat them in .NET, but rather file names are a collection of bytes, which do not necessarily can be decoded into UTF8 [1]. To make things simple, this assumes that UTF8 strings (ustring in this code) can exist without them being valid UTF8 strings, but rather a collection of bytes. [1] For example, older file systems can have filenames that made sense with a particular character set and are effectively not possible to map into strings." + }, + "index.html": { + "href": "index.html", + "title": "NStack", + "keywords": "NStack NStack contains a new API for .NET based on modern C# and .NET idioms. You can start with the new UTF8 ustring class , which is powered by an updated Unicode library and modern support for UTF8 parsing and decoding . API Documentation Take a look at the API Documentation for NStack. Future The long term plan is to use a new model for IO that only uses exceptions for things like invalid parameters, but uses tuples and error codes for the rest. Other areas include making an IO layer that does not surface \"string\" for filenames, as in Unix there are really no filenames as we treat them in .NET, but rather file names are a collection of bytes, which do not necessarily can be decoded into UTF8 [1]. To make things simple, this assumes that UTF8 strings (ustring in this code) can exist without them being valid UTF8 strings, but rather a collection of bytes. [1] For example, older file systems can have filenames that made sense with a particular character set and are effectively not possible to map into strings." + }, + "README.html": { + "href": "README.html", + "title": "To Generate the Docs", + "keywords": "This folder generates the API docs for NStack. The API documentation is generated using the DocFX tool . The output of docfx gets put into the ./docs folder which is then checked in. The ./docs folder is then picked up by Github Pages and published to Miguel's Github Pages ( https://migueldeicaza.github.io/NStack/ ). To Generate the Docs Install DotFX https://dotnet.github.io/docfx/tutorial/docfx_getting_started.html Change to the ./docfx folder and run ./build.ps1 Browse to http://localhost:8080 and verify everything looks good. Hit ctrl-c to stop the script. If docfx fails with a Stackoverflow error. Just run it again. And again. Sometimes it takes a few times. If that doesn't work, create a fresh clone or delete the docfx/api , docfx/obj , and docs/ folders and run the steps above again." + } +} \ No newline at end of file diff --git a/docs/manifest.json b/docs/manifest.json index ffbb1bb..8ba47f3 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -1 +1,333 @@ -{"homepages":[],"source_base_path":"/cvs/NStack/docfx","xrefmap":"xrefmap.yml","files":[{"type":"Toc","source_relative_path":"toc.yml","output":{".html":{"relative_path":"toc.html","hash":"3mzO2XU3vGs/pY6w/BFtNw=="}},"is_incremental":false,"version":""},{"type":"Toc","source_relative_path":"articles/toc.yml","output":{".html":{"relative_path":"articles/toc.html","hash":"MthxFYC+doDRUguh/vpudA=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Unicode.Category.yml","output":{".html":{"relative_path":"api/NStack/NStack.Unicode.Category.html","hash":"Hx3LpZZUrg4uXVTOYiUpWA=="}},"is_incremental":false,"version":""},{"type":"Conceptual","source_relative_path":"api/index.md","output":{".html":{"relative_path":"api/index.html","hash":"o5a5b7ac+e9gq81XihRo/Q=="}},"is_incremental":false,"version":""},{"type":"Conceptual","source_relative_path":"index.md","output":{".html":{"relative_path":"index.html","hash":"m1v8wMT56E9nM0fbWbS7kw=="}},"is_incremental":false,"version":""},{"type":"Conceptual","source_relative_path":"articles/intro.md","output":{".html":{"relative_path":"articles/intro.html","hash":"IvdGz5jAWvI0yNbZ9PFGxw=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Unicode.yml","output":{".html":{"relative_path":"api/NStack/NStack.Unicode.html","hash":"I0nuO7HVhKr/Y1NxWvzOyQ=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack.yml","output":{".html":{"relative_path":"api/NStack.html","hash":"21igp7Y2hli4PdDmtf2IBA=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Unicode.Script.yml","output":{".html":{"relative_path":"api/NStack/NStack.Unicode.Script.html","hash":"sQo8y9WPM+KuzViZfd/70Q=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Unicode.Case.yml","output":{".html":{"relative_path":"api/NStack/NStack.Unicode.Case.html","hash":"Cx4uwKQ8uhZlgUq/RGvNIg=="}},"is_incremental":false,"version":""},{"type":"Toc","source_relative_path":"api/toc.yml","output":{".html":{"relative_path":"api/toc.html","hash":"FFcleZ//E78u+dv9EG3vHA=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.ustring.RunePredicate.yml","output":{".html":{"relative_path":"api/NStack/NStack.ustring.RunePredicate.html","hash":"OgFioGoEtxrB1aQ97UlXjQ=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Unicode.Property.yml","output":{".html":{"relative_path":"api/NStack/NStack.Unicode.Property.html","hash":"odlXYRB2gATCuctb+e97LQ=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Unicode.SpecialCase.yml","output":{".html":{"relative_path":"api/NStack/NStack.Unicode.SpecialCase.html","hash":"JJDhxJ45IqcAJJVJgnyXkA=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Unicode.RangeTable.yml","output":{".html":{"relative_path":"api/NStack/NStack.Unicode.RangeTable.html","hash":"it5w5AdbRfvg4BE1UHrrYQ=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.Utf8.yml","output":{".html":{"relative_path":"api/NStack/NStack.Utf8.html","hash":"7OF4C2Qgwb5Msd+L4djisg=="}},"is_incremental":false,"version":""},{"type":"ManagedReference","source_relative_path":"api/NStack/NStack.ustring.yml","output":{".html":{"relative_path":"api/NStack/NStack.ustring.html","hash":"zd/b11sq0l5U22dz6CIt7A=="}},"is_incremental":false,"version":""}],"version_info":{}} \ No newline at end of file +{ + "homepages": [], + "source_base_path": "E:/Repos/CSharp/NStack/docfx", + "xrefmap": "xrefmap.yml", + "files": [ + { + "type": "Resource", + "output": { + "resource": { + "relative_path": "index.json" + } + }, + "is_incremental": false + }, + { + "type": "Conceptual", + "source_relative_path": "README.md", + "output": { + ".html": { + "relative_path": "README.html", + "hash": "Q1Fe8NDCmn+aABnnVv23LnocLyQrVPlE0x4OnvlTHRE=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Unicode.Case.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Unicode.Case.html", + "hash": "7oZa1ixJ67g/ArCw+GDO2CUw8eRD64gd99ecRvqOun4=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Unicode.Category.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Unicode.Category.html", + "hash": "z5GRLmdfK6wJtKKJk2fYCnQIyYwie2gVEWmFyGbVx4g=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Unicode.Property.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Unicode.Property.html", + "hash": "SAnhJiXlNoSlULChhAf4f33Ql9p9mL+E0L6ss6OwAy4=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Unicode.RangeTable.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Unicode.RangeTable.html", + "hash": "tVctfvrnu9WtmywMel0haRuC2/aY7nw6dvIZ9FUSlmw=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Unicode.Script.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Unicode.Script.html", + "hash": "aybql7ifnU9JK1SpHXmqPPeoQeda5KDvmVBr3j3BdAo=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Unicode.SpecialCase.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Unicode.SpecialCase.html", + "hash": "8TuD6KRY14kwZZHox46L0DACqmQLMNWw/mEQGXYGebI=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Unicode.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Unicode.html", + "hash": "dgWGNjyPl6Hoh1MtGTFJCQroAx6+ZAexdOMD2PubMHY=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.Utf8.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.Utf8.html", + "hash": "jaD8CIFTBxM434TbefMYeWSEm0R5r7eteW43s+BniZ0=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.ustring.RunePredicate.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.ustring.RunePredicate.html", + "hash": "E4YxGw/xM/kpwN8fpvD1TlkuAvKdS0p+o1Rb5ftsVXk=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.ustring.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.ustring.html", + "hash": "tof8nl88PMr5crt1Rln74vPfetxVQ34apcR3vEIKksA=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/NStack.yml", + "output": { + ".html": { + "relative_path": "api/NStack/NStack.html", + "hash": "l/X9xJgIp55ATgM5OeYU0t+1ddQr9e4T6rZh/JT3vIY=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/System.Rune.Case.yml", + "output": { + ".html": { + "relative_path": "api/NStack/System.Rune.Case.html", + "hash": "DJvHyrgDPbQZc/FDMyewfzoub8Dxb/mzK6GbRXh6d9A=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/System.Rune.yml", + "output": { + ".html": { + "relative_path": "api/NStack/System.Rune.html", + "hash": "uO7yXUXZloYZo6sTJOtunJraYr/Dl+2qEqVB+urSGB4=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/System.RuneExtensions.yml", + "output": { + ".html": { + "relative_path": "api/NStack/System.RuneExtensions.html", + "hash": "B2cr0xZEcs7yGYFtvgzh8Sq4oW519N2PKdjLOLqwD8A=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "ManagedReference", + "source_relative_path": "api/NStack/System.yml", + "output": { + ".html": { + "relative_path": "api/NStack/System.html", + "hash": "p3UWd+DKKzS2fX87i8T6FPgKmmZNM2M4zxyzg+zsrTo=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "api/NStack/toc.yml", + "output": { + ".html": { + "relative_path": "api/NStack/toc.html", + "hash": "XqQokdR4K6CYntEx5iGgKoWEZT060XXqYEkMzl+Cy3o=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "articles/intro.md", + "output": { + ".html": { + "relative_path": "articles/intro.html", + "hash": "j7S0kVYLbEAyuk5wcfcCuzg1wH1yY6f4h53i9bzIgVE=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "articles/toc.yml", + "output": { + ".html": { + "relative_path": "articles/toc.html", + "hash": "BlPxk5mtl2kgfcZUgkEguqiSAR/EUyUTT4EdebwkQvs=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "Resource", + "source_relative_path": "images/logo48.png", + "output": { + "resource": { + "relative_path": "images/logo48.png" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "Conceptual", + "source_relative_path": "index.md", + "output": { + ".html": { + "relative_path": "index.html", + "hash": "gdjhxzsCpj7hwdxCFKLakrV0ysRXZ87tpSAnRCc/yWU=" + } + }, + "is_incremental": false, + "version": "" + }, + { + "type": "Toc", + "source_relative_path": "toc.yml", + "output": { + ".html": { + "relative_path": "toc.html", + "hash": "0kgkaaXYhsZyf3uAMSstHO3bUJr0B8zx8rdPPOGIMcI=" + } + }, + "is_incremental": false, + "version": "" + } + ], + "incremental_info": [ + { + "status": { + "can_incremental": true, + "incrementalPhase": "build", + "total_file_count": 0, + "skipped_file_count": 0 + }, + "processors": { + "ConceptualDocumentProcessor": { + "can_incremental": true, + "incrementalPhase": "build", + "total_file_count": 3, + "skipped_file_count": 3 + }, + "ManagedReferenceDocumentProcessor": { + "can_incremental": true, + "incrementalPhase": "build", + "total_file_count": 15, + "skipped_file_count": 14 + }, + "ResourceDocumentProcessor": { + "can_incremental": false, + "details": "Processor ResourceDocumentProcessor cannot support incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.", + "incrementalPhase": "build", + "total_file_count": 0, + "skipped_file_count": 0 + }, + "TocDocumentProcessor": { + "can_incremental": false, + "details": "Processor TocDocumentProcessor cannot support incremental build because the processor doesn't implement ISupportIncrementalDocumentProcessor interface.", + "incrementalPhase": "build", + "total_file_count": 0, + "skipped_file_count": 0 + } + } + }, + { + "status": { + "can_incremental": false, + "details": "Cannot support incremental post processing, the reason is: should not trace intermediate info.", + "incrementalPhase": "postProcessing", + "total_file_count": 0, + "skipped_file_count": 0 + }, + "processors": {} + } + ], + "version_info": {}, + "groups": [ + { + "xrefmap": "xrefmap.yml" + } + ] +} \ No newline at end of file diff --git a/docs/styles/docfx.css b/docs/styles/docfx.css index 992b259..c4ff1a5 100644 --- a/docs/styles/docfx.css +++ b/docs/styles/docfx.css @@ -23,23 +23,9 @@ a.disable:hover { color: #000000; } -/* workaround for leave space for fixed navbar with # anchor url*/ - -h1:before, -h2:before, -h3:before, -h4:before { - content: ''; - display: block; - position: relative; - width: 0; - height: 100px; - margin-top: -100px; -} - -h1, h2, h3, h4, h5, h6, span.xref { +h1, h2, h3, h4, h5, h6, .text-break { word-wrap: break-word; - word-break: break-all; + word-break: break-word; } h1 mark, @@ -56,7 +42,11 @@ h6 mark { .inheritance .level2:before, .inheritance .level3:before, .inheritance .level4:before, -.inheritance .level5:before { +.inheritance .level5:before, +.inheritance .level6:before, +.inheritance .level7:before, +.inheritance .level8:before, +.inheritance .level9:before { content: 'โ†ณ'; margin-right: 5px; } @@ -85,6 +75,30 @@ h6 mark { margin-left: 5em; } +.inheritance .level6 { + margin-left: 6em; +} + +.inheritance .level7 { + margin-left: 7em; +} + +.inheritance .level8 { + margin-left: 8em; +} + +.inheritance .level9 { + margin-left: 9em; +} + +.level0.summary { + margin: 2em 0 2em 0; +} + +.level1.summary { + margin: 1em 0 1em 0; +} + span.parametername, span.paramref, span.typeparamref { @@ -120,6 +134,12 @@ table p { table a { display: inline-block; } + +/* Make hidden attribute compatible with old browser.*/ +[hidden] { + display: none !important; +} + h1, .h1, h2, @@ -202,7 +222,9 @@ article h1, article h2, article h3, article h4{ } article h4{ - border-bottom: 1px solid #ccc; + border: 0; + font-weight: bold; + margin-top: 2em; } article span.small.pull-right{ @@ -362,6 +384,28 @@ article section { text-align: center; } +#search-results p .index-loading { + animation: index-loading 1.5s infinite linear; + -webkit-animation: index-loading 1.5s infinite linear; + -o-animation: index-loading 1.5s infinite linear; + font-size: 2.5rem; +} + +@keyframes index-loading { + from { transform: scale(1) rotate(0deg);} + to { transform: scale(1) rotate(360deg);} +} + +@-webkit-keyframes index-loading { + from { -webkit-transform: rotate(0deg);} + to { -webkit-transform: rotate(360deg);} +} + +@-o-keyframes index-loading { + from { -o-transform: rotate(0deg);} + to { -o-transform: rotate(360deg);} +} + #search-results .sr-items { font-size: 24px; } @@ -548,6 +592,7 @@ body .toc{ border: 0; color: #666666; padding-left: 20px; + padding-right: 20px; width: 100%; } .toc-filter > input:focus { @@ -558,6 +603,11 @@ body .toc{ top: 10px; left: 5px; } +.toc-filter > .clear-icon { + position: absolute; + top: 10px; + right: 5px; +} .article { margin-top: 120px; margin-bottom: 115px; @@ -618,7 +668,6 @@ body .toc{ overflow: hidden; padding-bottom: 10px; height: calc(100% - 100px); - margin-right: -20px; } .affix ul > li > a:before { color: #cccccc; @@ -824,6 +873,33 @@ footer { } } +/* Code snippet */ +code { + color: #717374; + background-color: #f1f2f3; +} + +a code { + color: #337ab7; + background-color: #f1f2f3; +} + +a code:hover { + text-decoration: underline; +} + +.hljs-keyword { + color: rgb(86,156,214); +} + +.hljs-string { + color: rgb(214, 157, 133); +} + +pre { + border: 0; +} + /* For code snippet line highlight */ pre > code .line-highlight { background-color: #ffffcc; @@ -892,4 +968,65 @@ div.embeddedvideo iframe { .footer { display: none; } -} \ No newline at end of file +} + +/* For tabbed content */ + +.tabGroup { + margin-top: 1rem; } + .tabGroup ul[role="tablist"] { + margin: 0; + padding: 0; + list-style: none; } + .tabGroup ul[role="tablist"] > li { + list-style: none; + display: inline-block; } + .tabGroup a[role="tab"] { + color: #6e6e6e; + box-sizing: border-box; + display: inline-block; + padding: 5px 7.5px; + text-decoration: none; + border-bottom: 2px solid #fff; } + .tabGroup a[role="tab"]:hover, .tabGroup a[role="tab"]:focus, .tabGroup a[role="tab"][aria-selected="true"] { + border-bottom: 2px solid #0050C5; } + .tabGroup a[role="tab"][aria-selected="true"] { + color: #222; } + .tabGroup a[role="tab"]:hover, .tabGroup a[role="tab"]:focus { + color: #0050C5; } + .tabGroup a[role="tab"]:focus { + outline: 1px solid #0050C5; + outline-offset: -1px; } + @media (min-width: 768px) { + .tabGroup a[role="tab"] { + padding: 5px 15px; } } + .tabGroup section[role="tabpanel"] { + border: 1px solid #e0e0e0; + padding: 15px; + margin: 0; + overflow: hidden; } + .tabGroup section[role="tabpanel"] > .codeHeader, + .tabGroup section[role="tabpanel"] > pre { + margin-left: -16px; + margin-right: -16px; } + .tabGroup section[role="tabpanel"] > :first-child { + margin-top: 0; } + .tabGroup section[role="tabpanel"] > pre:last-child { + display: block; + margin-bottom: -16px; } + +.mainContainer[dir='rtl'] main ul[role="tablist"] { + margin: 0; } + +/* Color theme */ + +/* These are not important, tune down **/ +.decalaration, .fieldValue, .parameters, .returns { + color: #a2a2a2; +} + +/* Major sections, increase visibility **/ +#fields, #properties, #methods, #events { + font-weight: bold; + margin-top: 2em; +} diff --git a/docs/styles/docfx.js b/docs/styles/docfx.js index 3388b1c..7be1a7f 100644 --- a/docs/styles/docfx.js +++ b/docs/styles/docfx.js @@ -8,6 +8,7 @@ $(function () { var hide = 'hide'; var util = new utility(); + workAroundFixedHeaderForAnchors(); highlight(); enableSearch(); @@ -20,6 +21,9 @@ $(function () { renderFooter(); renderLogo(); + breakText(); + renderTabs(); + window.refresh = function (article) { // Update markup result if (typeof article == 'undefined' || typeof article.content == 'undefined') @@ -30,12 +34,24 @@ $(function () { renderTables(); renderAlerts(); renderAffix(); + renderTabs(); + } + + // Add this event listener when needed + // window.addEventListener('content-update', contentUpdate); + + function breakText() { + $(".xref").addClass("text-break"); + var texts = $(".text-break"); + texts.each(function () { + $(this).breakWord(); + }); } // Styling for tables in conceptual documents using Bootstrap. // See http://getbootstrap.com/css/#tables function renderTables() { - $('table').addClass('table table-bordered table-striped table-condensed'); + $('table').addClass('table table-bordered table-striped table-condensed').wrap('
              '); } // Styling for alerts. @@ -45,16 +61,14 @@ $(function () { $('.IMPORTANT, .CAUTION').addClass('alert alert-danger'); } - // Anchorjs 3.2.2 fails when title content contains '<' and '>'. - // TODO: enable this when anchorjs fixes this issue // Enable anchors for headings. - // (function () { - // anchors.options = { - // placement: 'left', - // visible: 'touch' - // }; - // anchors.add('article h2, article h3, article h4, article h5, article h6'); - // })(); + (function () { + anchors.options = { + placement: 'left', + visible: 'hover' + }; + anchors.add('article h2:not(.no-anchor), article h3:not(.no-anchor), article h4:not(.no-anchor)'); + })(); // Open links to different host in a new window. function renderLinks() { @@ -170,7 +184,7 @@ $(function () { } searchData = JSON.parse(this.responseText); for (var prop in searchData) { - if (searchData.hasOwnProperty(prop)){ + if (searchData.hasOwnProperty(prop)) { lunrIndex.add(searchData[prop]); } } @@ -209,13 +223,16 @@ $(function () { $("body").bind("queryReady", function () { worker.postMessage({ q: query }); }); + if (query && (query.length >= 3)) { + worker.postMessage({ q: query }); + } }); } // Highlight the searching keywords function highlightKeywords() { var q = url('?q'); - if (q !== null) { + if (q) { var keywords = q.split("%20"); keywords.forEach(function (keyword) { if (keyword !== "") { @@ -239,7 +256,7 @@ $(function () { } else { flipContents("hide"); $("body").trigger("queryReady"); - $('#search-results>.search-list').text('Search Results for "' + query + '"'); + $('#search-results>.search-list>span').text('"' + query + '"'); } }).off("keydown"); }); @@ -284,12 +301,17 @@ $(function () { function handleSearchResults(hits) { var numPerPage = 10; - $('#pagination').empty(); - $('#pagination').removeData("twbs-pagination"); + var pagination = $('#pagination'); + pagination.empty(); + pagination.removeData("twbs-pagination"); if (hits.length === 0) { $('#search-results>.sr-items').html('

              No results found

              '); - } else { - $('#pagination').twbsPagination({ + } else { + pagination.twbsPagination({ + first: pagination.data('first'), + prev: pagination.data('prev'), + next: pagination.data('next'), + last: pagination.data('last'), totalPages: Math.ceil(hits.length / numPerPage), visiblePages: 5, onPageClick: function (event, page) { @@ -304,7 +326,7 @@ $(function () { var itemBrief = extractContentBrief(hit.keywords); var itemNode = $('
              ').attr('class', 'sr-item'); - var itemTitleNode = $('
              ').attr('class', 'item-title').append($('').attr('href', itemHref).attr("target", "_blank").text(itemTitle)); + var itemTitleNode = $('
              ').attr('class', 'item-title').append($('').attr('href', itemHref).attr("target", "_blank").attr("rel", "noopener noreferrer").text(itemTitle)); var itemHrefNode = $('
              ').attr('class', 'item-href').text(itemRawHref); var itemBriefNode = $('
              ').attr('class', 'item-brief').text(itemBrief); itemNode.append(itemTitleNode).append(itemHrefNode).append(itemBriefNode); @@ -330,6 +352,14 @@ $(function () { } else { $('#navbar ul a.active').parents('li').addClass(active); renderBreadcrumb(); + showSearch(); + } + + function showSearch() { + if ($('#search-results').length !== 0) { + $('#search').show(); + $('body').trigger("searchEvent"); + } } function loadNavbar() { @@ -342,17 +372,14 @@ $(function () { if (tocPath) tocPath = tocPath.replace(/\\/g, '/'); $.get(navbarPath, function (data) { $(data).find("#toc>ul").appendTo("#navbar"); - if ($('#search-results').length !== 0) { - $('#search').show(); - $('body').trigger("searchEvent"); - } + showSearch(); var index = navbarPath.lastIndexOf('/'); var navrel = ''; if (index > -1) { navrel = navbarPath.substr(0, index + 1); } $('#navbar>ul').addClass('navbar-nav'); - var currentAbsPath = util.getAbsolutePath(window.location.pathname); + var currentAbsPath = util.getCurrentWindowAbsolutePath(); // set active item $('#navbar').find('a[href]').each(function (i, e) { var href = $(e).attr("href"); @@ -360,7 +387,6 @@ $(function () { href = navrel + href; $(e).attr("href", href); - // TODO: currently only support one level navbar var isActive = false; var originalHref = e.name; if (originalHref) { @@ -370,7 +396,10 @@ $(function () { } } else { if (util.getAbsolutePath(href) === currentAbsPath) { - isActive = true; + var dropdown = $(e).attr('data-toggle') == "dropdown" + if (!dropdown) { + isActive = true; + } } } if (isActive) { @@ -398,6 +427,8 @@ $(function () { $('#toc a.active').parents('li').each(function (i, e) { $(e).addClass(active).addClass(expanded); $(e).children('a').addClass(active); + }) + $('#toc a.active').parents('li').each(function (i, e) { top += $(e).position().top; }) $('.sidetoc').scrollTop(top - 50); @@ -410,20 +441,43 @@ $(function () { } function registerTocEvents() { + var tocFilterInput = $('#toc_filter_input'); + var tocFilterClearButton = $('#toc_filter_clear'); + $('.toc .nav > li > .expand-stub').click(function (e) { $(e.target).parent().toggleClass(expanded); }); $('.toc .nav > li > .expand-stub + a:not([href])').click(function (e) { $(e.target).parent().toggleClass(expanded); }); - $('#toc_filter_input').on('input', function (e) { + tocFilterInput.on('input', function (e) { var val = this.value; + //Save filter string to local session storage + if (typeof(Storage) !== "undefined") { + try { + sessionStorage.filterString = val; + } + catch(e) + {} + } if (val === '') { // Clear 'filtered' class $('#toc li').removeClass(filtered).removeClass(hide); + tocFilterClearButton.fadeOut(); return; } + tocFilterClearButton.fadeIn(); + // set all parent nodes status + $('#toc li>a').filter(function (i, e) { + return $(e).siblings().length > 0 + }).each(function (i, anchor) { + var parent = $(anchor).parent(); + parent.addClass(hide); + parent.removeClass(show); + parent.removeClass(filtered); + }) + // Get leaf nodes $('#toc li>a').filter(function (i, e) { return $(e).siblings().length === 0 @@ -460,10 +514,34 @@ $(function () { function filterNavItem(name, text) { if (!text) return true; - if (name.toLowerCase().indexOf(text.toLowerCase()) > -1) return true; + if (name && name.toLowerCase().indexOf(text.toLowerCase()) > -1) return true; return false; } }); + + // toc filter clear button + tocFilterClearButton.hide(); + tocFilterClearButton.on("click", function(e){ + tocFilterInput.val(""); + tocFilterInput.trigger('input'); + if (typeof(Storage) !== "undefined") { + try { + sessionStorage.filterString = ""; + } + catch(e) + {} + } + }); + + //Set toc filter from local session storage on page load + if (typeof(Storage) !== "undefined") { + try { + tocFilterInput.val(sessionStorage.filterString); + tocFilterInput.trigger('input'); + } + catch(e) + {} + } } function loadToc() { @@ -478,7 +556,10 @@ $(function () { if (index > -1) { tocrel = tocPath.substr(0, index + 1); } - var currentHref = util.getAbsolutePath(window.location.pathname); + var currentHref = util.getCurrentWindowAbsolutePath(); + if(!currentHref.endsWith('.html')) { + currentHref += '.html'; + } $('#sidetoc').find('a[href]').each(function (i, e) { var href = $(e).attr("href"); if (util.isRelativePath(href)) { @@ -490,9 +571,7 @@ $(function () { $(e).addClass(active); } - $(e).text(function (index, text) { - return util.breakText(text); - }) + $(e).breakWord(); }); renderSidebar(); @@ -522,84 +601,88 @@ $(function () { //Setup Affix function renderAffix() { var hierarchy = getHierarchy(); - if (hierarchy.length > 0) { - var html = '
              In This Article
              ' - html += util.formList(hierarchy, ['nav', 'bs-docs-sidenav']); - $("#affix").empty().append(html); + if (!hierarchy || hierarchy.length <= 0) { + $("#affix").hide(); + } + else { + var html = util.formList(hierarchy, ['nav', 'bs-docs-sidenav']); + $("#affix>div").empty().append(html); if ($('footer').is(':visible')) { $(".sideaffix").css("bottom", "70px"); } - $('#affix').on('activate.bs.scrollspy', function (e) { - if (e.target) { - if ($(e.target).find('li.active').length > 0) { - return; - } - var top = $(e.target).position().top; - $(e.target).parents('li').each(function (i, e) { - top += $(e).position().top; - }); - var container = $('#affix > ul'); - var height = container.height(); - container.scrollTop(container.scrollTop() + top - height / 2); + $('#affix a').click(function(e) { + var scrollspy = $('[data-spy="scroll"]').data()['bs.scrollspy']; + var target = e.target.hash; + if (scrollspy && target) { + scrollspy.activate(target); } - }) + }); } function getHierarchy() { // supported headers are h1, h2, h3, and h4 - // The topest header is ignored - var selector = ".article article"; - var affixSelector = "#affix"; - var headers = ['h4', 'h3', 'h2', 'h1']; - var hierarchy = []; - var toppestIndex = -1; - var startIndex = -1; - // 1. get header hierarchy - for (var i = headers.length - 1; i >= 0; i--) { - var header = $(selector + " " + headers[i]); - var length = header.length; - - // If contains no header in current selector, find the next one - if (length === 0) continue; - - // If the toppest header contains only one item, e.g. title, ignore - if (length === 1 && hierarchy.length === 0 && toppestIndex < 0) { - toppestIndex = i; - continue; + var $headers = $($.map(['h1', 'h2', 'h3', 'h4'], function (h) { return ".article article " + h; }).join(", ")); + + // a stack of hierarchy items that are currently being built + var stack = []; + $headers.each(function (i, e) { + if (!e.id) { + return; } - // Get second level children - var nextLevelSelector = i > 0 ? headers[i - 1] : null; - var prevSelector; - for (var j = length - 1; j >= 0; j--) { - var e = header[j]; - var id = e.id; - if (!id) continue; // For affix, id is a must-have - var item = { - name: htmlEncode($(e).text()), - href: "#" + id, - items: [] - }; - if (nextLevelSelector) { - var selector = '#' + cssEscape(id) + "~" + nextLevelSelector; - var currentSelector = selector; - if (prevSelector) currentSelector += ":not(" + prevSelector + ")"; - $(header[j]).siblings(currentSelector).each(function (index, e) { - if (e.id) { - item.items.push({ - name: htmlEncode($(e).text()), // innerText decodes text while innerHTML not - href: "#" + e.id - }) - } - }) - prevSelector = selector; + var item = { + name: htmlEncode($(e).text()), + href: "#" + e.id, + items: [] + }; + + if (!stack.length) { + stack.push({ type: e.tagName, siblings: [item] }); + return; + } + + var frame = stack[stack.length - 1]; + if (e.tagName === frame.type) { + frame.siblings.push(item); + } else if (e.tagName[1] > frame.type[1]) { + // we are looking at a child of the last element of frame.siblings. + // push a frame onto the stack. After we've finished building this item's children, + // we'll attach it as a child of the last element + stack.push({ type: e.tagName, siblings: [item] }); + } else { // e.tagName[1] < frame.type[1] + // we are looking at a sibling of an ancestor of the current item. + // pop frames from the stack, building items as we go, until we reach the correct level at which to attach this item. + while (e.tagName[1] < stack[stack.length - 1].type[1]) { + buildParent(); + } + if (e.tagName === stack[stack.length - 1].type) { + stack[stack.length - 1].siblings.push(item); + } else { + stack.push({ type: e.tagName, siblings: [item] }); } - hierarchy.push(item); } - break; - }; - hierarchy.reverse(); - return hierarchy; + }); + while (stack.length > 1) { + buildParent(); + } + + function buildParent() { + var childrenToAttach = stack.pop(); + var parentFrame = stack[stack.length - 1]; + var parent = parentFrame.siblings[parentFrame.siblings.length - 1]; + $.each(childrenToAttach.siblings, function (i, child) { + parent.items.push(child); + }); + } + if (stack.length > 0) { + + var topLevel = stack.pop().siblings; + if (topLevel.length === 1) { // if there's only one topmost header, dump it + return topLevel[0].items; + } + return topLevel; + } + return undefined; } function htmlEncode(str) { @@ -705,22 +788,300 @@ $(function () { }); } + function renderTabs() { + var contentAttrs = { + id: 'data-bi-id', + name: 'data-bi-name', + type: 'data-bi-type' + }; + + var Tab = (function () { + function Tab(li, a, section) { + this.li = li; + this.a = a; + this.section = section; + } + Object.defineProperty(Tab.prototype, "tabIds", { + get: function () { return this.a.getAttribute('data-tab').split(' '); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "condition", { + get: function () { return this.a.getAttribute('data-condition'); }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "visible", { + get: function () { return !this.li.hasAttribute('hidden'); }, + set: function (value) { + if (value) { + this.li.removeAttribute('hidden'); + this.li.removeAttribute('aria-hidden'); + } + else { + this.li.setAttribute('hidden', 'hidden'); + this.li.setAttribute('aria-hidden', 'true'); + } + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(Tab.prototype, "selected", { + get: function () { return !this.section.hasAttribute('hidden'); }, + set: function (value) { + if (value) { + this.a.setAttribute('aria-selected', 'true'); + this.a.tabIndex = 0; + this.section.removeAttribute('hidden'); + this.section.removeAttribute('aria-hidden'); + } + else { + this.a.setAttribute('aria-selected', 'false'); + this.a.tabIndex = -1; + this.section.setAttribute('hidden', 'hidden'); + this.section.setAttribute('aria-hidden', 'true'); + } + }, + enumerable: true, + configurable: true + }); + Tab.prototype.focus = function () { + this.a.focus(); + }; + return Tab; + }()); + + initTabs(document.body); + + function initTabs(container) { + var queryStringTabs = readTabsQueryStringParam(); + var elements = container.querySelectorAll('.tabGroup'); + var state = { groups: [], selectedTabs: [] }; + for (var i = 0; i < elements.length; i++) { + var group = initTabGroup(elements.item(i)); + if (!group.independent) { + updateVisibilityAndSelection(group, state); + state.groups.push(group); + } + } + container.addEventListener('click', function (event) { return handleClick(event, state); }); + if (state.groups.length === 0) { + return state; + } + selectTabs(queryStringTabs, container); + updateTabsQueryStringParam(state); + notifyContentUpdated(); + return state; + } + + function initTabGroup(element) { + var group = { + independent: element.hasAttribute('data-tab-group-independent'), + tabs: [] + }; + var li = element.firstElementChild.firstElementChild; + while (li) { + var a = li.firstElementChild; + a.setAttribute(contentAttrs.name, 'tab'); + var dataTab = a.getAttribute('data-tab').replace(/\+/g, ' '); + a.setAttribute('data-tab', dataTab); + var section = element.querySelector("[id=\"" + a.getAttribute('aria-controls') + "\"]"); + var tab = new Tab(li, a, section); + group.tabs.push(tab); + li = li.nextElementSibling; + } + element.setAttribute(contentAttrs.name, 'tab-group'); + element.tabGroup = group; + return group; + } + + function updateVisibilityAndSelection(group, state) { + var anySelected = false; + var firstVisibleTab; + for (var _i = 0, _a = group.tabs; _i < _a.length; _i++) { + var tab = _a[_i]; + tab.visible = tab.condition === null || state.selectedTabs.indexOf(tab.condition) !== -1; + if (tab.visible) { + if (!firstVisibleTab) { + firstVisibleTab = tab; + } + } + tab.selected = tab.visible && arraysIntersect(state.selectedTabs, tab.tabIds); + anySelected = anySelected || tab.selected; + } + if (!anySelected) { + for (var _b = 0, _c = group.tabs; _b < _c.length; _b++) { + var tabIds = _c[_b].tabIds; + for (var _d = 0, tabIds_1 = tabIds; _d < tabIds_1.length; _d++) { + var tabId = tabIds_1[_d]; + var index = state.selectedTabs.indexOf(tabId); + if (index === -1) { + continue; + } + state.selectedTabs.splice(index, 1); + } + } + var tab = firstVisibleTab; + tab.selected = true; + state.selectedTabs.push(tab.tabIds[0]); + } + } + + function getTabInfoFromEvent(event) { + if (!(event.target instanceof HTMLElement)) { + return null; + } + var anchor = event.target.closest('a[data-tab]'); + if (anchor === null) { + return null; + } + var tabIds = anchor.getAttribute('data-tab').split(' '); + var group = anchor.parentElement.parentElement.parentElement.tabGroup; + if (group === undefined) { + return null; + } + return { tabIds: tabIds, group: group, anchor: anchor }; + } + + function handleClick(event, state) { + var info = getTabInfoFromEvent(event); + if (info === null) { + return; + } + event.preventDefault(); + info.anchor.href = 'javascript:'; + setTimeout(function () { return info.anchor.href = '#' + info.anchor.getAttribute('aria-controls'); }); + var tabIds = info.tabIds, group = info.group; + var originalTop = info.anchor.getBoundingClientRect().top; + if (group.independent) { + for (var _i = 0, _a = group.tabs; _i < _a.length; _i++) { + var tab = _a[_i]; + tab.selected = arraysIntersect(tab.tabIds, tabIds); + } + } + else { + if (arraysIntersect(state.selectedTabs, tabIds)) { + return; + } + var previousTabId = group.tabs.filter(function (t) { return t.selected; })[0].tabIds[0]; + state.selectedTabs.splice(state.selectedTabs.indexOf(previousTabId), 1, tabIds[0]); + for (var _b = 0, _c = state.groups; _b < _c.length; _b++) { + var group_1 = _c[_b]; + updateVisibilityAndSelection(group_1, state); + } + updateTabsQueryStringParam(state); + } + notifyContentUpdated(); + var top = info.anchor.getBoundingClientRect().top; + if (top !== originalTop && event instanceof MouseEvent) { + window.scrollTo(0, window.pageYOffset + top - originalTop); + } + } + + function selectTabs(tabIds) { + for (var _i = 0, tabIds_1 = tabIds; _i < tabIds_1.length; _i++) { + var tabId = tabIds_1[_i]; + var a = document.querySelector(".tabGroup > ul > li > a[data-tab=\"" + tabId + "\"]:not([hidden])"); + if (a === null) { + return; + } + a.dispatchEvent(new CustomEvent('click', { bubbles: true })); + } + } + + function readTabsQueryStringParam() { + var qs = parseQueryString(window.location.search); + var t = qs.tabs; + if (t === undefined || t === '') { + return []; + } + return t.split(','); + } + + function updateTabsQueryStringParam(state) { + var qs = parseQueryString(window.location.search); + qs.tabs = state.selectedTabs.join(); + var url = location.protocol + "//" + location.host + location.pathname + "?" + toQueryString(qs) + location.hash; + if (location.href === url) { + return; + } + history.replaceState({}, document.title, url); + } + + function toQueryString(args) { + var parts = []; + for (var name_1 in args) { + if (args.hasOwnProperty(name_1) && args[name_1] !== '' && args[name_1] !== null && args[name_1] !== undefined) { + parts.push(encodeURIComponent(name_1) + '=' + encodeURIComponent(args[name_1])); + } + } + return parts.join('&'); + } + + function parseQueryString(queryString) { + var match; + var pl = /\+/g; + var search = /([^&=]+)=?([^&]*)/g; + var decode = function (s) { return decodeURIComponent(s.replace(pl, ' ')); }; + if (queryString === undefined) { + queryString = ''; + } + queryString = queryString.substring(1); + var urlParams = {}; + while (match = search.exec(queryString)) { + urlParams[decode(match[1])] = decode(match[2]); + } + return urlParams; + } + + function arraysIntersect(a, b) { + for (var _i = 0, a_1 = a; _i < a_1.length; _i++) { + var itemA = a_1[_i]; + for (var _a = 0, b_1 = b; _a < b_1.length; _a++) { + var itemB = b_1[_a]; + if (itemA === itemB) { + return true; + } + } + } + return false; + } + + function notifyContentUpdated() { + // Dispatch this event when needed + // window.dispatchEvent(new CustomEvent('content-update')); + } + } + function utility() { this.getAbsolutePath = getAbsolutePath; this.isRelativePath = isRelativePath; this.isAbsolutePath = isAbsolutePath; + this.getCurrentWindowAbsolutePath = getCurrentWindowAbsolutePath; this.getDirectory = getDirectory; this.formList = formList; - this.breakText = breakText; function getAbsolutePath(href) { - // Use anchor to normalize href - var anchor = $('
              ')[0]; - // Ignore protocal, remove search and query - return anchor.host + anchor.pathname; + if (isAbsolutePath(href)) return href; + var currentAbsPath = getCurrentWindowAbsolutePath(); + var stack = currentAbsPath.split("/"); + stack.pop(); + var parts = href.split("/"); + for (var i=0; i< parts.length; i++) { + if (parts[i] == ".") continue; + if (parts[i] == ".." && stack.length > 0) + stack.pop(); + else + stack.push(parts[i]); + } + var p = stack.join("/"); + return p; } function isRelativePath(href) { + if (href === undefined || href === '' || href[0] === '/') { + return false; + } return !isAbsolutePath(href); } @@ -728,6 +1089,9 @@ $(function () { return (/^(?:[a-z]+:)?\/\//i).test(href); } + function getCurrentWindowAbsolutePath() { + return window.location.origin + window.location.pathname; + } function getDirectory(href) { if (!href) return ''; var index = href.lastIndexOf('/'); @@ -737,7 +1101,6 @@ $(function () { } } - function formList(item, classes) { var level = 1; var model = { @@ -766,9 +1129,95 @@ $(function () { } } - function breakText(text) { + /** + * Add into long word. + * @param {String} text - The word to break. It should be in plain text without HTML tags. + */ + function breakPlainText(text) { if (!text) return text; - return text.replace(/([a-z])([A-Z])|(\.)(\w)/g, '$1$3\u200B$2$4') + return text.replace(/([a-z])([A-Z])|(\.)(\w)/g, '$1$3$2$4') + } + + /** + * Add into long word. The jQuery element should contain no html tags. + * If the jQuery element contains tags, this function will not change the element. + */ + $.fn.breakWord = function () { + if (this.html() == this.text()) { + this.html(function (index, text) { + return breakPlainText(text); + }) + } + return this; + } + } + + // adjusted from https://stackoverflow.com/a/13067009/1523776 + function workAroundFixedHeaderForAnchors() { + var HISTORY_SUPPORT = !!(history && history.pushState); + var ANCHOR_REGEX = /^#[^ ]+$/; + + function getFixedOffset() { + return $('header').first().height(); } + + /** + * If the provided href is an anchor which resolves to an element on the + * page, scroll to it. + * @param {String} href + * @return {Boolean} - Was the href an anchor. + */ + function scrollIfAnchor(href, pushToHistory) { + var match, rect, anchorOffset; + + if (!ANCHOR_REGEX.test(href)) { + return false; + } + + match = document.getElementById(href.slice(1)); + + if (match) { + rect = match.getBoundingClientRect(); + anchorOffset = window.pageYOffset + rect.top - getFixedOffset(); + window.scrollTo(window.pageXOffset, anchorOffset); + + // Add the state to history as-per normal anchor links + if (HISTORY_SUPPORT && pushToHistory) { + history.pushState({}, document.title, location.pathname + href); + } + } + + return !!match; + } + + /** + * Attempt to scroll to the current location's hash. + */ + function scrollToCurrent() { + scrollIfAnchor(window.location.hash); + } + + /** + * If the click event's target was an anchor, fix the scroll position. + */ + function delegateAnchors(e) { + var elem = e.target; + + if (scrollIfAnchor(elem.getAttribute('href'), true)) { + e.preventDefault(); + } + } + + $(window).on('hashchange', scrollToCurrent); + + $(window).on('load', function () { + // scroll to the anchor if present, offset by the header + scrollToCurrent(); + }); + + $(document).ready(function () { + // Exclude tabbed content case + $('a:not([data-tab])').click(function (e) { delegateAnchors(e); }); + }); } -}) +}); diff --git a/docs/styles/docfx.vendor.css b/docs/styles/docfx.vendor.css index c39a9c6..cab1dc0 100644 --- a/docs/styles/docfx.vendor.css +++ b/docs/styles/docfx.vendor.css @@ -1,54 +1,50 @@ /*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. + * Bootstrap v3.4.1 (https://getbootstrap.com/) + * Copyright 2011-2019 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -.label,sub,sup{vertical-align:baseline} -hr,img{border:0} -body,figure{margin:0} -.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left} -.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px} -html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block} audio,canvas,progress,video{display:inline-block;vertical-align:baseline} audio:not([controls]){display:none;height:0} [hidden],template{display:none} -a{background-color:transparent} a:active,a:hover{outline:0} +abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted} b,optgroup,strong{font-weight:700} dfn{font-style:italic} h1{margin:.67em 0} -mark{color:#000;background:#ff0} -sub,sup{position:relative;font-size:75%;line-height:0} +mark{background:#ff0;color:#000} +sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} sup{top:-.5em} sub{bottom:-.25em} -img{vertical-align:middle} +img{border:0;vertical-align:middle} svg:not(:root){overflow:hidden} -hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box} -pre,textarea{overflow:auto} +hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0} code,kbd,pre,samp{font-size:1em} -button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit} -.glyphicon,address{font-style:normal} +button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0} button{overflow:visible} button,select{text-transform:none} button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer} button[disabled],html input[disabled]{cursor:default} -button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0} +button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} +input{line-height:normal} input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0} input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto} +input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box} input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none} -table{border-spacing:0;border-collapse:collapse} +textarea{overflow:auto} td,th{padding:0} /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print{blockquote,img,pre,tr{page-break-inside:avoid} +@media print{ *,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important} a,a:visited{text-decoration:underline} a[href]:after{content:" (" attr(href) ")"} abbr[title]:after{content:" (" attr(title) ")"} -a[href^="javascript:"]:after,a[href^="#"]:after{content:""} -blockquote,pre{border:1px solid #999} +a[href^="#"]:after,a[href^="javascript:"]:after{content:""} +blockquote,pre{border:1px solid #999;page-break-inside:avoid} thead{display:table-header-group} +img,tr{page-break-inside:avoid} img{max-width:100%!important} h2,h3,p{orphans:3;widows:3} h2,h3{page-break-after:avoid} @@ -59,11 +55,8 @@ h2,h3{page-break-after:avoid} .table td,.table th{background-color:#fff!important} .table-bordered td,.table-bordered th{border:1px solid #ddd!important} } -.dropdown-menu,.modal-content{-webkit-background-clip:padding-box} -.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none} -.img-thumbnail,body{background-color:#fff} -@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')} -.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} +@font-face{font-family:"Glyphicons Halflings";src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")} +.glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} .glyphicon-asterisk:before{content:"\002a"} .glyphicon-plus:before{content:"\002b"} .glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"} @@ -324,16 +317,17 @@ h2,h3{page-break-after:avoid} .glyphicon-menu-up:before{content:"\e260"} *,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} html{font-size:10px;-webkit-tap-highlight-color:transparent} -body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333} +body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff} button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit} -a{color:#337ab7;text-decoration:none} +a{background-color:transparent;color:#337ab7;text-decoration:none} a:focus,a:hover{color:#23527c;text-decoration:underline} a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} +figure{margin:0} .carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto} .img-rounded{border-radius:6px} -.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out} +.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:.2s ease-in-out;-o-transition:.2s ease-in-out;transition:.2s ease-in-out;display:inline-block;max-width:100%;height:auto} .img-circle{border-radius:50%} -hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee} +hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee} .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0} .sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} [role=button]{cursor:pointer} @@ -351,13 +345,13 @@ hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee} .h6,h6{font-size:12px} p{margin:0 0 10px} .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4} -dt,kbd kbd,label{font-weight:700} -address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143} -@media (min-width:768px){.lead{font-size:21px} +@media (min-width:768px){ +.lead{font-size:21px} +.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} +.dl-horizontal dd{margin-left:180px} } .small,small{font-size:85%} .mark,mark{padding:.2em;background-color:#fcf8e3} -.list-inline,.list-unstyled{padding-left:0;list-style:none} .text-left{text-align:left} .text-right{text-align:right} .text-center{text-align:center} @@ -387,45 +381,49 @@ a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee} a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5} .bg-danger{background-color:#f2dede} a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9} -pre code,table{background-color:transparent} .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee} -dl,ol,ul{margin-top:0} -blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0} -address,dl{margin-bottom:20px} -ol,ul{margin-bottom:10px} -.list-inline{margin-left:-5px} +ol,ul{margin-top:0;margin-bottom:10px} +ol ol,ol ul,ul ol,ul ul{margin-bottom:0} +.list-unstyled{padding-left:0;list-style:none} +.list-inline{padding-left:0;list-style:none;margin-left:-5px} .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px} +dl{margin-top:0;margin-bottom:20px} +dd,dt{line-height:1.42857143} +dt{font-weight:700} dd{margin-left:0} -@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap} -.dl-horizontal dd{margin-left:180px} -.container{width:750px} -} -abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777} +abbr[data-original-title],abbr[title]{cursor:help} .initialism{font-size:90%;text-transform:uppercase} blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee} -blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777} -legend,pre{display:block;color:#333} -blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'} +blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0} +blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777} +blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"} .blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0} -code,kbd{padding:2px 4px;font-size:90%} -caption,th{text-align:left} -.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''} -.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'} +.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""} +.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"} +address{margin-bottom:20px;font-style:normal;line-height:1.42857143} code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace} -code{color:#c7254e;background-color:#f9f2f4;border-radius:4px} -kbd{color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)} -kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none} -pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px} -.container,.container-fluid{margin-right:auto;margin-left:auto} -pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0} -.container,.container-fluid{padding-right:15px;padding-left:15px} -.pre-scrollable{overflow-y:scroll} -@media (min-width:992px){.container{width:970px} +code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px} +kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)} +kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none} +pre{overflow:auto;display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px} +pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0} +.pre-scrollable{max-height:340px;overflow-y:scroll} +.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto} +@media (min-width:768px){ +.container{width:750px} +} +@media (min-width:992px){ +.container{width:970px} } -@media (min-width:1200px){.container{width:1170px} +@media (min-width:1200px){ +.container{width:1170px} } +.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto} .row{margin-right:-15px;margin-left:-15px} +.row-no-gutters{margin-right:0;margin-left:0} +.row-no-gutters [class*=col-]{padding-right:0;padding-left:0} .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px} +.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left} .col-xs-12{width:100%} .col-xs-11{width:91.66666667%} .col-xs-10{width:83.33333333%} @@ -477,7 +475,8 @@ pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-r .col-xs-offset-2{margin-left:16.66666667%} .col-xs-offset-1{margin-left:8.33333333%} .col-xs-offset-0{margin-left:0} -@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left} +@media (min-width:768px){ +.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left} .col-sm-12{width:100%} .col-sm-11{width:91.66666667%} .col-sm-10{width:83.33333333%} @@ -530,7 +529,8 @@ pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-r .col-sm-offset-1{margin-left:8.33333333%} .col-sm-offset-0{margin-left:0} } -@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left} +@media (min-width:992px){ +.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left} .col-md-12{width:100%} .col-md-11{width:91.66666667%} .col-md-10{width:83.33333333%} @@ -583,7 +583,8 @@ pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-r .col-md-offset-1{margin-left:8.33333333%} .col-md-offset-0{margin-left:0} } -@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left} +@media (min-width:1200px){ +.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left} .col-lg-12{width:100%} .col-lg-11{width:91.66666667%} .col-lg-10{width:83.33333333%} @@ -636,7 +637,11 @@ pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-r .col-lg-offset-1{margin-left:8.33333333%} .col-lg-offset-0{margin-left:0} } -caption{padding-top:8px;padding-bottom:8px;color:#777} +table{border-collapse:collapse;border-spacing:0;background-color:transparent} +table col[class*=col-]{position:static;display:table-column;float:none} +table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none} +caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left} +th{text-align:left} .table{width:100%;max-width:100%;margin-bottom:20px} .table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd} .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd} @@ -648,8 +653,6 @@ caption{padding-top:8px;padding-bottom:8px;color:#777} .table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px} .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9} .table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5} -table col[class*=col-]{position:static;display:table-column;float:none} -table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none} .table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8} .table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8} .table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6} @@ -660,7 +663,8 @@ table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;f .table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede} .table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc} .table-responsive{min-height:.01%;overflow-x:auto} -@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd} +@media screen and (max-width:767px){ +.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd} .table-responsive>.table{margin-bottom:0} .table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap} .table-responsive>.table-bordered{border:0} @@ -668,137 +672,144 @@ table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;f .table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} .table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0} } -fieldset,legend{padding:0;border:0} -fieldset{min-width:0;margin:0} -legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5} -label{display:inline-block;max-width:100%;margin-bottom:5px} -input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none} -input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal} -.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block} +fieldset{min-width:0;padding:0;margin:0;border:0} +legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5} +label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700} +input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none} +input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal} +fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed} input[type=file]{display:block} input[type=range]{display:block;width:100%} select[multiple],select[size]{height:auto} -input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} -output{padding-top:7px} -.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s} +input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} +output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555} +.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out} .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)} .form-control::-moz-placeholder{color:#999;opacity:1} .form-control:-ms-input-placeholder{color:#999} .form-control::-webkit-input-placeholder{color:#999} -.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d} .form-control::-ms-expand{background-color:transparent;border:0} .form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1} .form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed} textarea.form-control{height:auto} -@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px} -.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px} -.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px} +@media screen and (-webkit-min-device-pixel-ratio:0){ +input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px} +.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px} +.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px} } .form-group{margin-bottom:15px} .checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px} +.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed} .checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer} -.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px} +.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px} .checkbox+.checkbox,.radio+.radio{margin-top:-5px} .checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer} +.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed} .checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px} -.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed} .form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0} .form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0} -.form-group-sm .form-control,.input-sm{padding:5px 10px;border-radius:3px;font-size:12px} -.input-sm{height:30px;line-height:1.5} +.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} select.input-sm{height:30px;line-height:30px} select[multiple].input-sm,textarea.input-sm{height:auto} -.form-group-sm .form-control{height:30px;line-height:1.5} -.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px} +.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} .form-group-sm select.form-control{height:30px;line-height:30px} .form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto} .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5} -.input-lg{height:46px;line-height:1.3333333} +.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} select.input-lg{height:46px;line-height:46px} select[multiple].input-lg,textarea.input-lg{height:auto} -.form-group-lg .form-control{height:46px;line-height:1.3333333} +.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} .form-group-lg select.form-control{height:46px;line-height:46px} .form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto} .form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333} .has-feedback{position:relative} .has-feedback .form-control{padding-right:42.5px} .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none} -.collapsing,.dropdown,.dropup{position:relative} .form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px} .form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px} +.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d} .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168} .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d} -.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b} +.has-success .form-control-feedback{color:#3c763d} +.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b} .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b} .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b} -.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442} +.has-warning .form-control-feedback{color:#8a6d3b} +.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442} .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483} .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442} +.has-error .form-control-feedback{color:#a94442} .has-feedback label~.form-control-feedback{top:25px} .has-feedback label.sr-only~.form-control-feedback{top:0} .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373} -@media (min-width:768px){.form-inline .form-control-static,.form-inline .form-group{display:inline-block} -.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle} +.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0} +.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px} +.form-horizontal .form-group{margin-right:-15px;margin-left:-15px} +.form-horizontal .has-feedback .form-control-feedback{right:15px} +@media (min-width:768px){ +.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle} .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle} +.form-inline .form-control-static{display:inline-block} .form-inline .input-group{display:inline-table;vertical-align:middle} .form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto} .form-inline .input-group>.form-control{width:100%} +.form-inline .control-label{margin-bottom:0;vertical-align:middle} .form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle} .form-inline .checkbox label,.form-inline .radio label{padding-left:0} .form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0} .form-inline .has-feedback .form-control-feedback{top:0} .form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right} -} -.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0} -.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px} -.form-horizontal .form-group{margin-right:-15px;margin-left:-15px} -.form-horizontal .has-feedback .form-control-feedback{right:15px} -@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px} +.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px} .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px} } -.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px} +.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} .btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px} .btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none} -.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} -.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65} +.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} +.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;-webkit-box-shadow:none;box-shadow:none} a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none} .btn-default{color:#333;background-color:#fff;border-color:#ccc} .btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c} -.btn-default.active,.btn-default:active,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad} +.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad} +.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad} .btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c} .btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc} .btn-default .badge{color:#fff;background-color:#333} .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4} .btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40} -.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74} +.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74} +.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74} .btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40} .btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4} .btn-primary .badge{color:#337ab7;background-color:#fff} .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c} .btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625} -.btn-success.active,.btn-success:active,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439} +.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439} +.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439} .btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625} -.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none} .btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c} .btn-success .badge{color:#5cb85c;background-color:#fff} .btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da} .btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85} -.btn-info.active,.btn-info:active,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc} +.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc} +.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc} .btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85} .btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da} .btn-info .badge{color:#5bc0de;background-color:#fff} .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236} .btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d} -.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512} +.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512} +.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512} .btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d} .btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236} .btn-warning .badge{color:#f0ad4e;background-color:#fff} .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a} .btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19} -.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925} +.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925} +.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925} .btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19} .btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a} .btn-danger .badge{color:#d9534f;background-color:#fff} @@ -819,50 +830,54 @@ input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn- .collapse.in{display:block} tr.collapse.in{display:table-row} tbody.collapse.in{display:table-row-group} -.collapsing{height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility} -.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent} +.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease} +.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent} +.dropdown,.dropup{position:relative} .dropdown-toggle:focus{outline:0} -.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)} -.dropdown-menu-right,.dropdown-menu.pull-right{right:0;left:auto} -.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap} -.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} -.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0} -.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)} +.dropdown-menu.pull-right{right:0;left:auto} .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} -.dropdown-menu>li>a{clear:both;font-weight:400;color:#333} +.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap} .dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5} .dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0} .dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777} -.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none} .open>.dropdown-menu{display:block} .open>a{outline:0} +.dropdown-menu-right{right:0;left:auto} .dropdown-menu-left{right:auto;left:0} -.dropdown-header{font-size:12px;color:#777} +.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap} .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990} -.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} .pull-right>.dropdown-menu{right:0;left:auto} -.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9} +.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed} .dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px} -@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto} -.navbar-right .dropdown-menu-left{right:auto;left:0} -} .btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle} .btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left} .btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2} .btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px} .btn-toolbar{margin-left:-5px} +.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left} .btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px} -.btn .caret,.btn-group>.btn:first-child{margin-left:0} +.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0} +.btn-group>.btn:first-child{margin-left:0} +.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} +.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0} +.btn-group>.btn-group{float:left} +.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0} +.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0} +.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0} .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0} .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px} .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px} .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none} +.btn .caret{margin-left:0} .btn-lg .caret{border-width:5px 5px 0} .dropup .btn-lg .caret{border-width:0 5px 5px} .btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%} .btn-group-vertical>.btn-group>.btn{float:none} .btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0} +.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0} .btn-group-vertical>.btn:first-child:not(:last-child){border-radius:4px 4px 0 0} .btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 4px 4px} .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0} @@ -884,7 +899,6 @@ select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.i select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px} select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto} .input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell} -.nav>li,.nav>li>a{display:block;position:relative} .input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0} .input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle} .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px} @@ -902,7 +916,8 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px} .input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px} .nav{padding-left:0;margin-bottom:0;list-style:none} -.nav>li>a{padding:10px 15px} +.nav>li{position:relative;display:block} +.nav>li>a{position:relative;display:block;padding:10px 15px} .nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee} .nav>li.disabled>a{color:#777} .nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent} @@ -917,24 +932,31 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .nav-tabs.nav-justified{width:100%;border-bottom:0} .nav-tabs.nav-justified>li{float:none} .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px} +.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd} -@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%} -.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} -.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff} -} .nav-pills>li{float:left} -.nav-justified>li,.nav-stacked>li{float:none} .nav-pills>li>a{border-radius:4px} .nav-pills>li+li{margin-left:2px} .nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7} +.nav-stacked>li{float:none} .nav-stacked>li+li{margin-top:2px;margin-left:0} .nav-justified{width:100%} +.nav-justified>li{float:none} .nav-justified>li>a{margin-bottom:5px;text-align:center} +.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} +@media (min-width:768px){ +.navbar-right .dropdown-menu{right:0;left:auto} +.navbar-right .dropdown-menu-left{right:auto;left:0} +.nav-tabs.nav-justified>li{display:table-cell;width:1%} +.nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} +.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff} +.nav-justified>li{display:table-cell;width:1%} +.nav-justified>li>a{margin-bottom:0} +} .nav-tabs-justified{border-bottom:0} .nav-tabs-justified>li>a{margin-right:0;border-radius:4px} .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd} -@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%} -.nav-justified>li>a{margin-bottom:0} +@media (min-width:768px){ .nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff} } @@ -942,64 +964,75 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .tab-content>.active{display:block} .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0} .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent} -.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)} +.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch} .navbar-collapse.in{overflow-y:auto} -@media (min-width:768px){.navbar{border-radius:4px} +.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030} +.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px} +@media (max-device-width:480px) and (orientation:landscape){ +.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px} +} +@media (min-width:768px){ +.navbar{border-radius:4px} .navbar-header{float:left} .navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none} .navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important} .navbar-collapse.in{overflow-y:visible} .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0} +.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0} } -.embed-responsive,.modal,.modal-open,.progress{overflow:hidden} -@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px} -} -.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px} -.navbar-static-top{z-index:1000;border-width:0 0 1px} -.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030} .navbar-fixed-top{top:0;border-width:0 0 1px} .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0} +.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px} +.navbar-static-top{z-index:1000;border-width:0 0 1px} .navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px} .navbar-brand:focus,.navbar-brand:hover{text-decoration:none} .navbar-brand>img{display:block} -@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0} -.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0} +@media (min-width:768px){ +.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0} +.navbar-static-top{border-radius:0} .navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px} +.navbar-toggle{display:none} } -.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px} +.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px} .navbar-toggle:focus{outline:0} .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px} .navbar-toggle .icon-bar+.icon-bar{margin-top:4px} .navbar-nav{margin:7.5px -15px} .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px} -@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none} +@media (max-width:767px){ +.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none} .navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px} .navbar-nav .open .dropdown-menu>li>a{line-height:20px} .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none} } -.progress-bar-striped,.progress-striped .progress-bar,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -@media (min-width:768px){.navbar-toggle{display:none} +@media (min-width:768px){ .navbar-nav{float:left;margin:0} .navbar-nav>li{float:left} .navbar-nav>li>a{padding-top:15px;padding-bottom:15px} -} -.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px} -@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block} -.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle} +.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle} .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle} +.navbar-form .form-control-static{display:inline-block} .navbar-form .input-group{display:inline-table;vertical-align:middle} .navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto} .navbar-form .input-group>.form-control{width:100%} +.navbar-form .control-label{margin-bottom:0;vertical-align:middle} .navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle} .navbar-form .checkbox label,.navbar-form .radio label{padding-left:0} .navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0} .navbar-form .has-feedback .form-control-feedback{top:0} -.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none} } -.breadcrumb>li,.pagination{display:inline-block} -.btn .badge,.btn .label{top:-1px;position:relative} -@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px} +.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px} +@media (max-width:767px){ +.navbar-form .form-group{margin-bottom:5px} .navbar-form .form-group:last-child{margin-bottom:0} +.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777} +.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent} +.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7} +.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent} +} +@media (min-width:768px){ +.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none} +.navbar-text{float:left;margin-right:15px;margin-left:15px} } .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0} .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0} @@ -1007,7 +1040,7 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px} .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px} .navbar-text{margin-top:15px;margin-bottom:15px} -@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px} +@media (min-width:768px){ .navbar-left{float:left!important} .navbar-right{float:right!important;margin-right:-15px} .navbar-right~.navbar-right{margin-right:0} @@ -1019,16 +1052,11 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent} .navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7} .navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent} +.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7} .navbar-default .navbar-toggle{border-color:#ddd} .navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd} .navbar-default .navbar-toggle .icon-bar{background-color:#888} .navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7} -.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7} -@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777} -.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent} -.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7} -.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent} -} .navbar-default .navbar-link{color:#777} .navbar-default .navbar-link:hover{color:#333} .navbar-default .btn-link{color:#777} @@ -1041,50 +1069,53 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent} .navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808} .navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent} -.navbar-inverse .navbar-toggle{border-color:#333} -.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333} -.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff} -.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010} .navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808} -@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808} +@media (max-width:767px){ +.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808} .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808} .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d} .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent} .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808} .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent} } +.navbar-inverse .navbar-toggle{border-color:#333} +.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333} +.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff} +.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010} .navbar-inverse .navbar-link{color:#9d9d9d} .navbar-inverse .navbar-link:hover{color:#fff} .navbar-inverse .btn-link{color:#9d9d9d} .navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff} .navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444} .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px} +.breadcrumb>li{display:inline-block} .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"} .breadcrumb>.active{color:#777} -.pagination{padding-left:0;margin:20px 0;border-radius:4px} -.pager li,.pagination>li{display:inline} +.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px} +.pagination>li{display:inline} .pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd} +.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd} .pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px} .pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px} -.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd} .pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7} .pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd} .pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333} .pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px} .pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px} .pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5} -.badge,.label{font-weight:700;line-height:1;white-space:nowrap;text-align:center} .pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px} .pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px} .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none} +.pager li{display:inline} .pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px} .pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee} .pager .next>a,.pager .next>span{float:right} .pager .previous>a,.pager .previous>span{float:left} .pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff} -a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none} -.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em} +.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em} +a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer} .label:empty{display:none} +.btn .label{position:relative;top:-1px} .label-default{background-color:#777} .label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e} .label-primary{background-color:#337ab7} @@ -1097,37 +1128,37 @@ a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointe .label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f} .label-danger{background-color:#d9534f} .label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c} -.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px} +.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px} .badge:empty{display:none} -.media-object,.thumbnail{display:block} +.btn .badge{position:relative;top:-1px} .btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px} +a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer} .list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff} -.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit} .list-group-item>.badge{float:right} .list-group-item>.badge+.badge{margin-right:5px} .nav-pills>li>a>.badge{margin-left:3px} -.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee} +.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee} +.jumbotron .h1,.jumbotron h1{color:inherit} .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200} -.alert,.thumbnail{margin-bottom:20px} -.alert .alert-link,.close{font-weight:700} .jumbotron>hr{border-top-color:#d5d5d5} .container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px} .jumbotron .container{max-width:100%} -@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px} +@media screen and (min-width:768px){ +.jumbotron{padding-top:48px;padding-bottom:48px} .container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px} .jumbotron .h1,.jumbotron h1{font-size:63px} } -.thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out} +.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out} .thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto} a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7} .thumbnail .caption{padding:9px;color:#333} -.alert{padding:15px;border:1px solid transparent;border-radius:4px} +.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px} .alert h4{margin-top:0;color:inherit} +.alert .alert-link{font-weight:700} .alert>p,.alert>ul{margin-bottom:0} .alert>p+p{margin-top:5px} .alert-dismissable,.alert-dismissible{padding-right:35px} .alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit} -.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0} .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6} .alert-success hr{border-top-color:#c9e2b3} .alert-success .alert-link{color:#2b542c} @@ -1140,32 +1171,35 @@ a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7} .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1} .alert-danger hr{border-top-color:#e4b9c0} .alert-danger .alert-link{color:#843534} -@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0} +@-webkit-keyframes progress-bar-stripes{ +from{background-position:40px 0} to{background-position:0 0} } -@-o-keyframes progress-bar-stripes{from{background-position:40px 0} +@-o-keyframes progress-bar-stripes{ +from{background-position:40px 0} to{background-position:0 0} } -@keyframes progress-bar-stripes{from{background-position:40px 0} +@keyframes progress-bar-stripes{ +from{background-position:40px 0} to{background-position:0 0} } -.progress{height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)} -.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease} -.progress-bar-striped,.progress-striped .progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px} -.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite} +.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)} +.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s;-o-transition:width .6s;transition:width .6s} +.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px} +.progress-bar.active,.progress.active .progress-bar{-webkit-animation:2s linear infinite progress-bar-stripes;-o-animation:2s linear infinite progress-bar-stripes;animation:2s linear infinite progress-bar-stripes} .progress-bar-success{background-color:#5cb85c} -.progress-striped .progress-bar-success{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} -.progress-striped .progress-bar-info,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .progress-bar-info{background-color:#5bc0de} -.progress-striped .progress-bar-info{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .progress-bar-warning{background-color:#f0ad4e} -.progress-striped .progress-bar-warning{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} +.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .progress-bar-danger{background-color:#d9534f} .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .media{margin-top:15px} .media:first-child{margin-top:0} .media,.media-body{overflow:hidden;zoom:1} .media-body{width:10000px} +.media-object{display:block} .media-object.img-thumbnail{max-width:none} .media-right,.media>.pull-right{padding-left:10px} .media-left,.media>.pull-left{padding-right:10px} @@ -1178,16 +1212,16 @@ to{background-position:0 0} .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd} .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px} .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px} -a.list-group-item,button.list-group-item{color:#555} -a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333} -a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5} -button.list-group-item{width:100%;text-align:left} .list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee} .list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit} .list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777} .list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7} .list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit} .list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef} +a.list-group-item,button.list-group-item{color:#555} +a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333} +a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5} +button.list-group-item{width:100%;text-align:left} .list-group-item-success{color:#3c763d;background-color:#dff0d8} a.list-group-item-success,button.list-group-item-success{color:#3c763d} a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit} @@ -1208,21 +1242,22 @@ a.list-group-item-danger,button.list-group-item-danger{color:#a94442} a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit} a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc} a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442} -.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit} .list-group-item-heading{margin-top:0;margin-bottom:5px} .list-group-item-text{margin-bottom:0;line-height:1.3} .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)} -.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0} .panel-body{padding:15px} .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px} -.panel-title{margin-top:0;font-size:16px} +.panel-heading>.dropdown .dropdown-toggle{color:inherit} +.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit} +.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit} .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px} +.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0} .panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0} -.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0} .panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px} .panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px} .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0} .list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0} +.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0} .panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px} .panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px} .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px} @@ -1235,10 +1270,12 @@ a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-gro .panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0} .panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} .panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} +.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0} .panel>.table-responsive{margin-bottom:0;border:0} .panel-group{margin-bottom:20px} .panel-group .panel{margin-bottom:0;border-radius:4px} .panel-group .panel+.panel{margin-top:5px} +.panel-group .panel-heading{border-bottom:0} .panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd} .panel-group .panel-footer{border-top:0} .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd} @@ -1272,27 +1309,27 @@ a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-gro .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1} .panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442} .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1} -.embed-responsive{position:relative;display:block;height:0;padding:0} +.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden} .embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0} .embed-responsive-16by9{padding-bottom:56.25%} .embed-responsive-4by3{padding-bottom:75%} .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)} -.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)} +.well blockquote{border-color:rgba(0,0,0,.15)} .well-lg{padding:24px;border-radius:6px} .well-sm{padding:9px;border-radius:3px} -.close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2} -.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;line-break:auto;text-decoration:none} -.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5} -button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0} -.modal{position:fixed;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0} -.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)} +.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2} +.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5} +button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none} +.modal-open{overflow:hidden} +.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0} +.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out} .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)} .modal-open .modal{overflow-x:hidden;overflow-y:auto} .modal-dialog{position:relative;width:auto;margin:10px} -.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)} -.modal-backdrop{position:fixed;z-index:1040;background-color:#000} -.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0} -.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5} +.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000} +.modal-backdrop.fade{opacity:0} +.modal-backdrop.in{opacity:.5} .modal-header{padding:15px;border-bottom:1px solid #e5e5e5} .modal-header .close{margin-top:-2px} .modal-title{margin:0;line-height:1.42857143} @@ -1302,58 +1339,57 @@ button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;bor .modal-footer .btn-group .btn+.btn{margin-left:-1px} .modal-footer .btn-block+.btn-block{margin-left:0} .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll} -@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto} +@media (min-width:768px){ +.modal-dialog{width:600px;margin:30px auto} .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)} .modal-sm{width:300px} } -@media (min-width:992px){.modal-lg{width:900px} +@media (min-width:992px){ +.modal-lg{width:900px} } -.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;text-align:left;text-align:start;filter:alpha(opacity=0);opacity:0} -.tooltip.in{filter:alpha(opacity=90);opacity:.9} +.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;opacity:0} +.tooltip.in{opacity:.9} .tooltip.top{padding:5px 0;margin-top:-3px} .tooltip.right{padding:0 5px;margin-left:3px} .tooltip.bottom{padding:5px 0;margin-top:3px} .tooltip.left{padding:0 5px;margin-left:-3px} -.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px} -.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} -.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;border-width:5px 5px 0;border-top-color:#000} -.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px} -.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px} -.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000} +.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000} +.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000} .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000} .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000} -.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0} -.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px} -.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px} -.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px} -.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;text-align:left;text-align:start;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)} -.carousel-caption,.carousel-control{color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000} +.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000} +.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} +.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)} .popover.top{margin-top:-10px} .popover.right{margin-left:10px} .popover.bottom{margin-top:10px} .popover.left{margin-left:-10px} -.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0} -.popover-content{padding:9px 14px} -.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} -.carousel,.carousel-inner{position:relative} .popover>.arrow{border-width:11px} +.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} .popover>.arrow:after{content:"";border-width:10px} -.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0} +.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0} .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0} -.popover.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "} -.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0} -.popover.right>.arrow:after{left:1px;border-right-color:#fff;border-left-width:0} -.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)} +.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0} +.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0} +.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)} .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff} -.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)} -.popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff} -.carousel-inner{width:100%;overflow:hidden} -.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left} +.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)} +.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff} +.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0} +.popover-content{padding:9px 14px} +.carousel{position:relative} +.carousel-inner{position:relative;width:100%;overflow:hidden} +.carousel-inner>.item{position:relative;display:none;-webkit-transition:left .6s ease-in-out;-o-transition:left .6s ease-in-out;transition:left .6s ease-in-out} .carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1} -@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px} -.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)} -.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)} -.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)} +@media all and (transform-3d),(-webkit-transform-3d){ +.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px} +.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0} +.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0} +.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0} } .carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block} .carousel-inner>.active{left:0} @@ -1363,22 +1399,23 @@ button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;bor .carousel-inner>.next.left,.carousel-inner>.prev.right{left:0} .carousel-inner>.active.left{left:-100%} .carousel-inner>.active.right{left:100%} -.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5} -.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x} -.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x} -.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9} +.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);opacity:.5} +.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x} +.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x} +.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9} .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px} .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px} .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px} .carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1} -.carousel-control .icon-prev:before{content:'\2039'} -.carousel-control .icon-next:before{content:'\203a'} +.carousel-control .icon-prev:before{content:"\2039"} +.carousel-control .icon-next:before{content:"\203a"} .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none} -.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px} +.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px} .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff} -.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px} -.carousel-caption .btn,.text-hide{text-shadow:none} -@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px} +.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)} +.carousel-caption .btn{text-shadow:none} +@media screen and (min-width:768px){ +.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px} .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px} .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px} .carousel-caption{right:20%;left:20%;padding-bottom:30px} @@ -1391,12 +1428,14 @@ button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;bor .pull-left{float:left!important} .hide{display:none!important} .show{display:block!important} -.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important} .invisible{visibility:hidden} -.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0} +.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0} +.hidden{display:none!important} .affix{position:fixed} @-ms-viewport{width:device-width} -@media (max-width:767px){.visible-xs{display:block!important} +.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important} +@media (max-width:767px){ +.visible-xs{display:block!important} table.visible-xs{display:table!important} tr.visible-xs{display:table-row!important} td.visible-xs,th.visible-xs{display:table-cell!important} @@ -1404,7 +1443,8 @@ td.visible-xs,th.visible-xs{display:table-cell!important} .visible-xs-inline{display:inline!important} .visible-xs-inline-block{display:inline-block!important} } -@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important} +@media (min-width:768px) and (max-width:991px){ +.visible-sm{display:block!important} table.visible-sm{display:table!important} tr.visible-sm{display:table-row!important} td.visible-sm,th.visible-sm{display:table-cell!important} @@ -1412,7 +1452,8 @@ td.visible-sm,th.visible-sm{display:table-cell!important} .visible-sm-inline{display:inline!important} .visible-sm-inline-block{display:inline-block!important} } -@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important} +@media (min-width:992px) and (max-width:1199px){ +.visible-md{display:block!important} table.visible-md{display:table!important} tr.visible-md{display:table-row!important} td.visible-md,th.visible-md{display:table-cell!important} @@ -1420,7 +1461,8 @@ td.visible-md,th.visible-md{display:table-cell!important} .visible-md-inline{display:inline!important} .visible-md-inline-block{display:inline-block!important} } -@media (min-width:1200px){.visible-lg{display:block!important} +@media (min-width:1200px){ +.visible-lg{display:block!important} table.visible-lg{display:table!important} tr.visible-lg{display:table-row!important} td.visible-lg,th.visible-lg{display:table-cell!important} @@ -1429,38 +1471,43 @@ td.visible-lg,th.visible-lg{display:table-cell!important} .visible-lg-inline-block{display:inline-block!important} .hidden-lg{display:none!important} } -@media (max-width:767px){.hidden-xs{display:none!important} +@media (max-width:767px){ +.hidden-xs{display:none!important} } -@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important} +@media (min-width:768px) and (max-width:991px){ +.hidden-sm{display:none!important} } -@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important} +@media (min-width:992px) and (max-width:1199px){ +.hidden-md{display:none!important} } .visible-print{display:none!important} -@media print{.visible-print{display:block!important} +@media print{ +.visible-print{display:block!important} table.visible-print{display:table!important} tr.visible-print{display:table-row!important} td.visible-print,th.visible-print{display:table-cell!important} } .visible-print-block{display:none!important} -@media print{.visible-print-block{display:block!important} +@media print{ +.visible-print-block{display:block!important} } .visible-print-inline{display:none!important} -@media print{.visible-print-inline{display:inline!important} +@media print{ +.visible-print-inline{display:inline!important} } .visible-print-inline-block{display:none!important} -@media print{.visible-print-inline-block{display:inline-block!important} +@media print{ +.visible-print-inline-block{display:inline-block!important} .hidden-print{display:none!important} -} -.hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto;-webkit-text-size-adjust:none} -.bash .hljs-shebang,.hljs-comment,.java .hljs-javadoc,.javascript .hljs-javadoc,.rust .hljs-preprocessor{color:#969896} -.apache .hljs-sqbracket,.c .hljs-preprocessor,.coffeescript .hljs-regexp,.coffeescript .hljs-subst,.cpp .hljs-preprocessor,.hljs-string,.javascript .hljs-regexp,.json .hljs-attribute,.less .hljs-built_in,.makefile .hljs-variable,.markdown .hljs-blockquote,.markdown .hljs-emphasis,.markdown .hljs-link_label,.markdown .hljs-strong,.markdown .hljs-value,.nginx .hljs-number,.nginx .hljs-regexp,.objectivec .hljs-preprocessor .hljs-title,.perl .hljs-regexp,.php .hljs-regexp,.scss .hljs-built_in,.xml .hljs-value{color:#df5000} -.css .hljs-at_rule,.css .hljs-important,.go .hljs-typename,.haskell .hljs-type,.hljs-keyword,.http .hljs-request,.ini .hljs-setting,.java .hljs-javadoctag,.javascript .hljs-javadoctag,.javascript .hljs-tag,.less .hljs-at_rule,.less .hljs-tag,.nginx .hljs-title,.objectivec .hljs-preprocessor,.php .hljs-phpdoc,.scss .hljs-at_rule,.scss .hljs-important,.scss .hljs-tag,.sql .hljs-built_in,.stylus .hljs-at_rule,.swift .hljs-preprocessor{color:#a71d5d} -.apache .hljs-cbracket,.apache .hljs-common,.apache .hljs-keyword,.bash .hljs-built_in,.bash .hljs-literal,.c .hljs-built_in,.c .hljs-number,.coffeescript .hljs-built_in,.coffeescript .hljs-literal,.coffeescript .hljs-number,.cpp .hljs-built_in,.cpp .hljs-number,.cs .hljs-built_in,.cs .hljs-number,.css .hljs-attribute,.css .hljs-function,.css .hljs-hexcolor,.css .hljs-number,.go .hljs-built_in,.go .hljs-constant,.haskell .hljs-number,.http .hljs-attribute,.http .hljs-literal,.java .hljs-number,.javascript .hljs-built_in,.javascript .hljs-literal,.javascript .hljs-number,.json .hljs-number,.less .hljs-attribute,.less .hljs-function,.less .hljs-hexcolor,.less .hljs-number,.makefile .hljs-keyword,.markdown .hljs-link_reference,.nginx .hljs-built_in,.objectivec .hljs-built_in,.objectivec .hljs-literal,.objectivec .hljs-number,.php .hljs-literal,.php .hljs-number,.puppet .hljs-function,.python .hljs-number,.ruby .hljs-constant,.ruby .hljs-number,.ruby .hljs-prompt,.ruby .hljs-subst .hljs-keyword,.ruby .hljs-symbol,.rust .hljs-number,.scss .hljs-attribute,.scss .hljs-function,.scss .hljs-hexcolor,.scss .hljs-number,.scss .hljs-preprocessor,.sql .hljs-number,.stylus .hljs-attribute,.stylus .hljs-hexcolor,.stylus .hljs-number,.stylus .hljs-params,.swift .hljs-built_in,.swift .hljs-number{color:#0086b3} -.apache .hljs-tag,.cs .hljs-xmlDocTag,.css .hljs-tag,.stylus .hljs-tag,.xml .hljs-title{color:#63a35c} -.bash .hljs-variable,.cs .hljs-preprocessor,.cs .hljs-preprocessor .hljs-keyword,.css .hljs-attr_selector,.css .hljs-value,.ini .hljs-keyword,.ini .hljs-value,.javascript .hljs-tag .hljs-title,.makefile .hljs-constant,.nginx .hljs-variable,.scss .hljs-variable,.xml .hljs-tag{color:#333} -.bash .hljs-title,.c .hljs-title,.coffeescript .hljs-title,.cpp .hljs-title,.cs .hljs-title,.css .hljs-class,.css .hljs-id,.css .hljs-pseudo,.diff .hljs-chunk,.haskell .hljs-pragma,.haskell .hljs-title,.ini .hljs-title,.java .hljs-title,.javascript .hljs-title,.less .hljs-class,.less .hljs-id,.less .hljs-pseudo,.makefile .hljs-title,.objectivec .hljs-title,.perl .hljs-sub,.php .hljs-title,.puppet .hljs-title,.python .hljs-decorator,.python .hljs-title,.ruby .hljs-parent,.ruby .hljs-title,.rust .hljs-title,.scss .hljs-class,.scss .hljs-id,.scss .hljs-pseudo,.stylus .hljs-class,.stylus .hljs-id,.stylus .hljs-pseudo,.stylus .hljs-title,.swift .hljs-title,.xml .hljs-attribute{color:#795da3} -.coffeescript .hljs-attribute,.coffeescript .hljs-reserved{color:#1d3e81} -.diff .hljs-chunk{font-weight:700} -.diff .hljs-addition{color:#55a532;background-color:#eaffea} -.diff .hljs-deletion{color:#bd2c00;background-color:#ffecec} -.markdown .hljs-link_url{text-decoration:underline} \ No newline at end of file +} +.hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto} +.hljs-comment,.hljs-meta{color:#969896} +.hljs-emphasis,.hljs-quote,.hljs-string,.hljs-strong,.hljs-template-variable,.hljs-variable{color:#df5000} +.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#a71d5d} +.hljs-attribute,.hljs-bullet,.hljs-literal,.hljs-symbol{color:#0086b3} +.hljs-name,.hljs-section{color:#63a35c} +.hljs-tag{color:#333} +.hljs-attr,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-title{color:#795da3} +.hljs-addition{color:#55a532;background-color:#eaffea} +.hljs-deletion{color:#bd2c00;background-color:#ffecec} +.hljs-link{text-decoration:underline} \ No newline at end of file diff --git a/docs/styles/docfx.vendor.js b/docs/styles/docfx.vendor.js index 8ecadb0..5d30fc0 100644 --- a/docs/styles/docfx.vendor.js +++ b/docs/styles/docfx.vendor.js @@ -1,45 +1 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
              "],col:[2,"","
              "],tr:[2,"","
              "],td:[3,"","
              "],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("