├── SwiftWebVTT.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── xcshareddata │ └── xcschemes │ │ └── SwiftWebVTT.xcscheme └── project.pbxproj ├── SwiftWebVTT ├── Extensions.swift ├── SwiftWebVTT.h ├── Info.plist ├── WebVTT.swift ├── references_substitutes.json ├── Deduplication.swift ├── Scanner.swift ├── HTMLCharacterReferences.swift ├── WebVTTParser.swift └── references_named.json ├── .gitignore ├── SwiftWebVTT.podspec ├── SwiftWebVTTTests ├── Info.plist └── SwiftWebVTTTests.swift ├── LICENSE └── README.md /SwiftWebVTT.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SwiftWebVTT.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SwiftWebVTT/Extensions.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | internal extension Collection { 4 | func item(at index: Index) -> Element? { 5 | guard indices.contains(index) else { return nil } 6 | return self[index] 7 | } 8 | } 9 | 10 | internal extension String { 11 | func characters() -> [Character] { return Array(self) } 12 | } 13 | -------------------------------------------------------------------------------- /SwiftWebVTT/SwiftWebVTT.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | //! Project version number for SwiftWebVTT. 4 | FOUNDATION_EXPORT double SwiftWebVTTVersionNumber; 5 | 6 | //! Project version string for SwiftWebVTT. 7 | FOUNDATION_EXPORT const unsigned char SwiftWebVTTVersionString[]; 8 | 9 | // In this header, you should import all the public headers of your framework using statements like #import 10 | 11 | 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | .AppleDouble 4 | .LSOverride 5 | Icon 6 | ._* 7 | .Spotlight-V100 8 | .Trashes 9 | 10 | # Xcode 11 | # 12 | build/ 13 | *.pbxuser 14 | !default.pbxuser 15 | *.mode1v3 16 | !default.mode1v3 17 | *.mode2v3 18 | !default.mode2v3 19 | *.perspectivev3 20 | !default.perspectivev3 21 | xcuserdata 22 | *.xccheckout 23 | *.moved-aside 24 | DerivedData 25 | *.hmap 26 | *.ipa 27 | *.xcuserstate 28 | 29 | # CocoaPods 30 | Pods 31 | 32 | # Carthage 33 | Carthage 34 | 35 | # Sample files 36 | Sample -------------------------------------------------------------------------------- /SwiftWebVTT.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = "SwiftWebVTT" 3 | s.version = "1.0.1" 4 | s.summary = "A parser for WebVTT caption files written in Swift" 5 | s.homepage = "https://github.com/auramagi/SwiftWebVTT" 6 | s.license = { type: 'MIT', file: 'LICENSE' } 7 | s.authors = { "Mike Apurin" => 'mike.apurin@gmail.com' } 8 | s.source = { :git => 'https://github.com/auramagi/SwiftWebVTT.git', :tag => s.version } 9 | 10 | s.ios.deployment_target = '12.0' 11 | 12 | s.swift_version = '5.0' 13 | 14 | s.source_files = "SwiftWebVTT/*.{h,swift}" 15 | s.resources = ["SwiftWebVTT/*.{json}"] 16 | end -------------------------------------------------------------------------------- /SwiftWebVTTTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /SwiftWebVTT/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | 22 | 23 | -------------------------------------------------------------------------------- /SwiftWebVTT/WebVTT.swift: -------------------------------------------------------------------------------- 1 | public struct WebVTT { 2 | public struct Cue { 3 | public let timing: Timing 4 | public let text: String 5 | } 6 | 7 | // Native timing in WebVTT. Measured in milliseconds. 8 | public struct Timing { 9 | public let start: Int 10 | public let end: Int 11 | } 12 | 13 | public let cues: [Cue] 14 | 15 | public init(cues: [Cue]) { 16 | self.cues = cues 17 | } 18 | } 19 | 20 | public extension WebVTT.Timing { 21 | var duration: Int { return end - start } 22 | } 23 | 24 | // Converted times for convenience 25 | public extension WebVTT.Cue { 26 | var timeStart: TimeInterval { return TimeInterval(timing.start) / 1000 } 27 | var timeEnd: TimeInterval { return TimeInterval(timing.end) / 1000 } 28 | var duration: TimeInterval { return TimeInterval(timing.duration) / 1000 } 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Mike Apurin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /SwiftWebVTT/references_substitutes.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "index": 155, "codepoints": [8250] }, 3 | { "index": 152, "codepoints": [732] }, 4 | { "index": 130, "codepoints": [8218] }, 5 | { "index": 154, "codepoints": [353] }, 6 | { "index": 151, "codepoints": [8212] }, 7 | { "index": 145, "codepoints": [8216] }, 8 | { "index": 140, "codepoints": [338] }, 9 | { "index": 153, "codepoints": [8482] }, 10 | { "index": 137, "codepoints": [8240] }, 11 | { "index": 138, "codepoints": [352] }, 12 | { "index": 139, "codepoints": [8249] }, 13 | { "index": 0, "codepoints": [65533] }, 14 | { "index": 147, "codepoints": [8220] }, 15 | { "index": 159, "codepoints": [376] }, 16 | { "index": 150, "codepoints": [8211] }, 17 | { "index": 149, "codepoints": [8226] }, 18 | { "index": 131, "codepoints": [402] }, 19 | { "index": 133, "codepoints": [8230] }, 20 | { "index": 132, "codepoints": [8222] }, 21 | { "index": 156, "codepoints": [339] }, 22 | { "index": 134, "codepoints": [8224] }, 23 | { "index": 142, "codepoints": [381] }, 24 | { "index": 135, "codepoints": [8225] }, 25 | { "index": 136, "codepoints": [710] }, 26 | { "index": 128, "codepoints": [8364] }, 27 | { "index": 146, "codepoints": [8217] }, 28 | { "index": 148, "codepoints": [8221] }, 29 | { "index": 158, "codepoints": [382] } 30 | ] -------------------------------------------------------------------------------- /SwiftWebVTT/Deduplication.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | public extension WebVTTParser { 4 | /// Filter out duplicated cues. 5 | /// 6 | /// Mainly for YouTube ASR captions. 7 | static func deduplicateCues(_ cues: [WebVTT.Cue]) -> [WebVTT.Cue] { 8 | var filteredCues: [WebVTT.Cue] = [] 9 | var shownLines: [Substring] = [] 10 | var lastEnd: Int = 0 11 | for cue in cues { 12 | let isConsecutive = lastEnd == cue.timing.start 13 | lastEnd = cue.timing.end 14 | let lines: [Substring] = cue.text.split(separator: "\n") 15 | var ignored = lines 16 | .map { $0.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty } 17 | if isConsecutive { 18 | for i in 0.. WebVTT { 31 | // let fileURL = url(forResource: name, withExtension: "vtt") 32 | // let fileContents = try! String(contentsOf: fileURL) 33 | // let webVTT = try! WebVTTParser(string: fileContents).parse() 34 | // return webVTT 35 | // } 36 | 37 | // MARK: - Convenience 38 | 39 | func url(forResource name: String, withExtension ext: String?) -> URL { 40 | let bundle = Bundle(for: type(of: self)) 41 | let url = bundle.url(forResource: name, withExtension: ext) 42 | XCTAssertNotNil(url, "Resource \(name + (ext != nil ? ".\(ext!)" : "")) not found.") 43 | return url! 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Swift WebVTT 2 | 3 | ## Overview 4 | 5 | **Swift WebVTT** is a parser of [WebVTT](https://en.wikipedia.org/wiki/WebVTT) files that is based on a sample parser in the [specification](https://www.w3.org/TR/webvtt1/#file-parsing). 6 | 7 | Originally written as part of [Skipjack](https://skipjack.app). 8 | 9 | 10 | ## Functionality 11 | 12 | Functionality is currently limited to extracting a list of cues with their timings and text content. Extracting regions, stylesheets etc. is not implemented. Text styling such as bold, italics, ruby etc. is also not implemented. 13 | 14 | As part of parsing text content of cues, this project implements a custom parser for HTML Character Entities based on the [HTML 5.1 specification](https://www.w3.org/TR/html51/syntax.html#consume-a-character-reference). 15 | 16 | Saving files in WebVTT format and showing cues on screen is considered outside of scope of this project. 17 | 18 | 19 | ## Installation 20 | 21 | #### Carthage 22 | 23 | Put `github "auramagi/SwiftWebVTT"` in your `Cartfile`. 24 | 25 | #### CocoaPods 26 | 27 | Put `pod 'SwiftWebVTT'` in your `Podfile`. 28 | 29 | 30 | ## Usage 31 | 32 | ```swift 33 | // Assuming `fileContents` is a `String` with WebVTT file data 34 | let parser = WebVTTParser(string: fileContents) 35 | let webVTT = try? parser.parse() 36 | // webVTT?.cues holds an array of cues 37 | ``` 38 | 39 | #### Making automatically-generated WebVTT from YouTube readable 40 | 41 | YouTube has a different native format (SRV3) for captions, but their servers are able to convert to several different formats including WebVTT. However, for their ASR (automatic speech recognition) captions, YouTube bakes in a certain presentation that effectively duplicates cues. 42 | 43 | This doesn't have a negative effect when presenting caption-by-caption, but makes content unreadable when extracting all text or just presenting all captions at once. 44 | 45 | **Swift WebVTT** has a helper function to de-duplicate and reformat such files. 46 | 47 | ```swift 48 | // var webVTT: WebVTT // A parsed file 49 | let filteredCues = WebVTTParser.deduplicateCues(webVTT.cues) 50 | webVTT = WebVTT(cues: filteredCues) 51 | ``` 52 | 53 | #### HTML Character References 54 | 55 | The custom parser for HTML Character References can also be used standalone to decode text with HTML entities. 56 | 57 | ```swift 58 | let text = "Hello, world! 👋" 59 | print(text.decodingHTMLEntities()) 60 | // > "Hello, world! 👋" 61 | ``` 62 | 63 | 64 | ## Performance 65 | 66 | This implementation is reasonably fast and not memory-intensive. 67 | A ~1 MB file with 2h30m worth of captions loads in less than 1 second on an iPhone 7 Plus. 68 | 69 | 70 | ## License 71 | 72 | **Swift WebVTT** is available under the MIT license. See the LICENSE file for more info. 73 | -------------------------------------------------------------------------------- /SwiftWebVTT/Scanner.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | internal class CustomScanner { 4 | private let scanner: Scanner 5 | private let length: Int 6 | init(string: String) { 7 | scanner = Scanner(string: string) 8 | scanner.charactersToBeSkipped = nil 9 | length = (string as NSString).length 10 | } 11 | 12 | var scanLocation: Int { 13 | get { return scanner.scanLocation } 14 | set { scanner.scanLocation = newValue } 15 | } 16 | var isAtEnd: Bool { return scanLocation == length } 17 | 18 | @discardableResult 19 | func scanUpToCharacters(from set: CharacterSet, thenSkip skipCount: Int = 0) -> String? { 20 | let string = scanner.scanUpToCharacters(from: set) 21 | if string != nil, skipCount > 0 { skip(skipCount) } 22 | return string 23 | } 24 | 25 | @discardableResult 26 | func scanCharacters(from set: CharacterSet, thenSkip skipCount: Int = 0) -> String? { 27 | let string = scanner.scanCharacters(from: set) 28 | if string != nil, skipCount > 0 { skip(skipCount) } 29 | return string 30 | } 31 | 32 | func scanInt(hexadecimal: Bool = false) -> Int? { 33 | switch hexadecimal { 34 | case true: 35 | let allowedSet = CharacterSet(charactersIn: "0123456789ABCDEFabcdef") 36 | guard let text = scanner.scanCharacters(from: allowedSet) else { break } 37 | let scanner = Scanner(string: "0x\(text)") 38 | var value: UInt64 = 0 39 | guard scanner.scanHexInt64(&value) else { break } 40 | return Int(value) 41 | case false: 42 | guard let text = scanner.scanCharacters(from: .decimalDigits) else { break } 43 | return Int(text) 44 | } 45 | return nil 46 | } 47 | 48 | func scanCharacter() -> Character? { 49 | return peekCharacter(thenSkip: true) 50 | } 51 | 52 | func scan(_ count: Int) -> String? { 53 | return peek(count, thenSkip: true) 54 | } 55 | 56 | func peek(_ count: Int, thenSkip: Bool = false) -> String? { 57 | guard !isAtEnd else { return nil } 58 | let count = min(count, length - scanLocation) 59 | let string = scanner.string as NSString 60 | let range = NSRange(location: scanLocation, length: count) 61 | if thenSkip { scanLocation += count } 62 | return string.substring(with: range) as String 63 | } 64 | 65 | func peekCharacter(thenSkip: Bool = false) -> Character? { 66 | guard !isAtEnd else { return nil } 67 | let string = scanner.string as NSString 68 | let c = string.character(at: scanLocation) 69 | if thenSkip { scanLocation += 1 } 70 | if let scalar = Unicode.Scalar(c) { return Character(scalar) } 71 | return nil 72 | } 73 | 74 | func skip(_ count: Int) { 75 | scanLocation += count 76 | } 77 | } 78 | 79 | private extension Scanner { 80 | func scanCharacters(from set: CharacterSet) -> String? { 81 | var string: NSString? = nil 82 | if scanCharacters(from: set, into: &string) { return string as String? } 83 | return nil 84 | } 85 | 86 | func scanUpToCharacters(from set: CharacterSet) -> String? { 87 | var string: NSString? = nil 88 | if scanUpToCharacters(from: set, into: &string) { return string as String? } 89 | return nil 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /SwiftWebVTT.xcodeproj/xcshareddata/xcschemes/SwiftWebVTT.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 53 | 54 | 64 | 65 | 71 | 72 | 73 | 74 | 75 | 76 | 82 | 83 | 89 | 90 | 91 | 92 | 94 | 95 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /SwiftWebVTT/HTMLCharacterReferences.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | internal struct HTMLCharacterReferences { 4 | /// Entity names for character substitution. 5 | /// - Example: ['gt': '>'], ['amp': '&'] 6 | struct ReferenceNamed: Codepoints, Decodable { 7 | typealias Index = String 8 | 9 | let index: String 10 | let codepoints: [Int] 11 | } 12 | 13 | /// Substitutes for unwanted unicode codepoints in the resulting conversion. 14 | /// - Example: [0: 65533] 15 | struct ReferenceSubstitute: Codepoints, Decodable { 16 | typealias Index = Int 17 | 18 | let index: Int 19 | let codepoints: [Int] 20 | } 21 | 22 | let named: [ReferenceNamed.Index: ReferenceNamed] 23 | let substitute: [ReferenceSubstitute.Index: ReferenceSubstitute] 24 | 25 | // Named references are from HTML 5.1 2nd Edition: §8.5. Named character references 26 | // https://www.w3.org/TR/html51/syntax.html#named-character-references 27 | // 28 | // Substitutes are from HTML 5.1 2nd Edition: §8.2.4.69. Tokenizing character references 29 | // https://www.w3.org/TR/html51/syntax.html#consume-a-character-reference 30 | // 31 | /// Character references defined in HTML 5.1 standard 32 | public static func standard() -> HTMLCharacterReferences { 33 | return HTMLCharacterReferences( 34 | named: ReferenceNamed.file("references_named"), 35 | substitute: ReferenceSubstitute.file("references_substitutes") 36 | ) 37 | } 38 | 39 | func string(reference number: Int) -> String? { 40 | if let substitute = self.substitute[number] { return substitute.string } 41 | if (number >= 0xD800 && number <= 0xDFFF) || number > 0x10FFFF { return "\u{FFFD}" } 42 | guard let scalar = UnicodeScalar(number) else { return "\u{FFFD}" } 43 | return String(scalar) 44 | } 45 | 46 | func string(reference name: String) -> String? { 47 | return named[name]?.string 48 | } 49 | } 50 | 51 | // MARK: - Loading entity definitions from file 52 | 53 | internal protocol Codepoints: Decodable { 54 | associatedtype Index: Hashable 55 | 56 | var index: Index { get } 57 | var codepoints: [Int] { get } 58 | 59 | static func file(_ filename: String) -> [Index: Self] 60 | } 61 | 62 | internal extension Codepoints { 63 | var string: String { 64 | var string = "" 65 | codepoints 66 | .compactMap { UnicodeScalar($0) } 67 | .map { Character($0) } 68 | .forEach { string.append($0) } 69 | return string 70 | } 71 | 72 | static func file(_ filename: String) -> [Index: Self] { 73 | var returnValue: [Index: Self] = [:] 74 | try? loadJSONArray(filename: filename) 75 | .forEach { returnValue[$0.index] = $0 } 76 | return returnValue 77 | } 78 | } 79 | 80 | fileprivate extension Decodable { 81 | static func loadJSONArray(filename: String) throws -> [Self] { 82 | let bundle = Bundle(for: WebVTTParser.self) 83 | let url = bundle.url(forResource: filename, withExtension: "json")! 84 | let data = try Data(contentsOf: url) 85 | return try JSONDecoder().decode([Self].self, from: data) 86 | } 87 | } 88 | 89 | // MARK: - Decoding entities 90 | 91 | internal extension CustomScanner { 92 | func handleCharacterReference(references: HTMLCharacterReferences, startSequence: String = "&", allowedCharacter: Character? = nil) -> String { 93 | let startLocation = scanLocation 94 | let replacement = self.consumeCharacterReference(references: references, allowedCharacter: allowedCharacter) 95 | if replacement == nil { scanLocation = startLocation } 96 | return replacement ?? startSequence 97 | } 98 | 99 | private func consumeCharacterReference(references: HTMLCharacterReferences, allowedCharacter: Character? = nil) -> String? { 100 | guard let c = peekCharacter() else { return nil } 101 | if c == allowedCharacter { return nil } 102 | switch c { 103 | case "\u{0009}", "\u{000A}", "\u{000C}", "\u{0020}", "\u{003C}", "\u{0026}": 104 | return nil 105 | case "#": 106 | skip(1) 107 | let isHex = consumeHexEntityStartingSequence() 108 | guard 109 | let number = scanInt(hexadecimal: isHex), 110 | scan(1) == ";" 111 | else { return nil } 112 | return references.string(reference: number) 113 | default: 114 | guard 115 | let name = scanUpToCharacters(from: CharacterSet(charactersIn: ";")), 116 | scan(1) == ";" 117 | else { return nil } 118 | return references.string(reference: name) 119 | } 120 | } 121 | 122 | private func consumeHexEntityStartingSequence() -> Bool { 123 | let startLocation = scanLocation 124 | let c = scanCharacter() 125 | let isHex = c == "x" || c == "X" 126 | if !isHex { scanLocation = startLocation } 127 | return isHex 128 | } 129 | } 130 | 131 | public extension String { 132 | func decodingHTMLEntities() -> String { 133 | let references = HTMLCharacterReferences.standard() 134 | var result = "" 135 | 136 | let scanner = CustomScanner(string: self) 137 | let startingCharacter = "&" 138 | let set = CharacterSet(charactersIn: startingCharacter) 139 | 140 | while !scanner.isAtEnd { 141 | let data = scanner.scanUpToCharacters(from: set) 142 | result += data ?? "" 143 | if scanner.scan(1) == startingCharacter { 144 | result += scanner.handleCharacterReference(references: references, startSequence: startingCharacter) 145 | } 146 | } 147 | 148 | return result 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /SwiftWebVTT/WebVTTParser.swift: -------------------------------------------------------------------------------- 1 | // Adapted from https://www.w3.org/TR/webvtt1/#file-parsing 2 | 3 | import Foundation 4 | 5 | public enum WebVTTError: Error { 6 | case invalidSignature 7 | } 8 | 9 | public class WebVTTParser { 10 | fileprivate let scanner: CustomScanner 11 | fileprivate let references = HTMLCharacterReferences.standard() 12 | 13 | fileprivate static let spaceDelimiterSet = CharacterSet(charactersIn: "\u{0020}\u{0009}\u{000A}") 14 | fileprivate static let newlineSet = CharacterSet(charactersIn: "\u{000A}") 15 | 16 | private var seenCue = false 17 | 18 | public init(string: String) { 19 | let string = string 20 | .replacingOccurrences(of: "\u{0000}", with: "\u{FFFD}") 21 | .replacingOccurrences(of: "\u{000D}\u{000A}", with: "\u{000A}") 22 | .replacingOccurrences(of: "\u{000D}", with: "\u{000A}") 23 | scanner = CustomScanner(string: string) 24 | } 25 | 26 | public func parse() throws -> WebVTT { 27 | guard 28 | let signature = scanner.scanUpToCharacters(from: WebVTTParser.spaceDelimiterSet), 29 | signature == "WEBVTT" 30 | else { throw WebVTTError.invalidSignature } 31 | 32 | scanner.scanUpToCharacters(from: WebVTTParser.newlineSet, thenSkip: 1) 33 | 34 | guard !scanner.isAtEnd else { return WebVTT(cues: []) } 35 | 36 | if scanner.peekCharacter() != "\u{000A}" { 37 | _ = parseBlock(inHeader: true) 38 | } else { 39 | scanner.skip(1) 40 | } 41 | 42 | scanner.scanCharacters(from: WebVTTParser.newlineSet) 43 | 44 | var cues: [WebVTT.Cue] = [] 45 | while !scanner.isAtEnd { 46 | let block = parseBlock(inHeader: false) 47 | 48 | if case .cue(let start, let end, let text)? = block { 49 | let parsedText = CueTextParser(string: text, references: references) 50 | .parse() 51 | .compactMap { 52 | switch $0 { 53 | case .text(let text): 54 | return text 55 | default: 56 | return nil 57 | } 58 | } 59 | .joined() 60 | let timing = WebVTT.Timing(start: start, end: end) 61 | cues.append(WebVTT.Cue(timing: timing, text: parsedText)) 62 | } 63 | 64 | scanner.scanCharacters(from: WebVTTParser.newlineSet) 65 | } 66 | return WebVTT(cues: cues) 67 | } 68 | 69 | fileprivate enum Block { 70 | case unknown(String) 71 | case stylesheet(String) 72 | case region(String) 73 | case cue(Int, Int, String) 74 | } 75 | 76 | private func parseBlock(inHeader: Bool) -> Block? { 77 | 78 | enum BlockType { 79 | case stylesheet 80 | case region 81 | case cue 82 | } 83 | 84 | var lineCount = 0 85 | var prevPosition = scanner.scanLocation 86 | var buffer = "" 87 | var seenEOF = false 88 | var seenArrow = false 89 | var cueTiming: (Int, Int)? = nil 90 | var blockType: BlockType? = nil 91 | 92 | while !seenEOF { 93 | let line = scanner.scanUpToCharacters(from: WebVTTParser.newlineSet, thenSkip: 1) 94 | lineCount += 1 95 | seenEOF = scanner.isAtEnd 96 | if line?.contains("-->") == true { 97 | if !inHeader, (lineCount == 1 || (lineCount == 2 && !seenArrow)) { 98 | seenArrow = true 99 | prevPosition = scanner.scanLocation 100 | cueTiming = CueInfoParser(string: line!).parse() 101 | blockType = .cue 102 | buffer = "" 103 | seenCue = true 104 | } else { 105 | scanner.scanLocation = prevPosition 106 | break 107 | } 108 | } else if line == nil || line!.isEmpty { 109 | break 110 | } else { 111 | if !inHeader, lineCount == 2 { 112 | if !seenCue, buffer.hasPrefix("STYLE") { 113 | // create css 114 | blockType = .stylesheet 115 | buffer = "" 116 | } else if !seenCue, buffer.hasPrefix("REGION") { 117 | // create region 118 | blockType = .region 119 | buffer = "" 120 | } 121 | } 122 | if !buffer.isEmpty { buffer += "\u{000A}" } 123 | buffer += line ?? "" 124 | prevPosition = scanner.scanLocation 125 | } 126 | } 127 | guard blockType != nil else { return .unknown(buffer) } 128 | switch blockType! { 129 | case .stylesheet: 130 | return .stylesheet(buffer) 131 | case .region: 132 | return .region(buffer) 133 | case .cue: 134 | guard cueTiming != nil else { return nil } 135 | return .cue(cueTiming!.0, cueTiming!.1, buffer) 136 | } 137 | } 138 | } 139 | 140 | fileprivate class CueInfoParser { 141 | let scanner: CustomScanner 142 | init(string: String) { 143 | scanner = CustomScanner(string: string) 144 | } 145 | 146 | fileprivate static let separatorSet = CharacterSet(charactersIn: ":.") 147 | 148 | func parse() -> (Int, Int)? { 149 | guard let from = parseTiming() else { return nil } 150 | scanner.scanCharacters(from: WebVTTParser.spaceDelimiterSet) 151 | guard scanner.peek(3) == "-->" else { return nil } 152 | scanner.skip(3) 153 | scanner.scanCharacters(from: WebVTTParser.spaceDelimiterSet) 154 | guard let to = parseTiming() else { return nil } 155 | // followed by optional (whitespace+, settings) 156 | return (from, to) 157 | } 158 | 159 | func parseTiming() -> Int? { 160 | guard let value1 = scanner.scanInt(), scanner.peekCharacter() == ":" else { return nil } 161 | var totalTime: Int = value1 * 60 * 1000 162 | scanner.skip(1) 163 | guard let value2 = scanner.scanInt(), let separator = scanner.scanCharacters(from: CueInfoParser.separatorSet) else { return nil } 164 | if separator == ":" { 165 | totalTime *= 60 166 | totalTime += value2 * 60 * 1000 167 | guard let value3 = scanner.scanInt(), scanner.peekCharacter() == "." else { return nil } 168 | totalTime += value3 * 1000 169 | scanner.skip(1) 170 | } else { 171 | totalTime += value2 * 1000 172 | } 173 | guard let milliseconds = scanner.scanInt() else { return nil } 174 | totalTime += milliseconds 175 | 176 | return totalTime 177 | } 178 | } 179 | 180 | fileprivate class CueTextParser { 181 | enum Token { 182 | case text(String) 183 | case tagStart(String) 184 | case tagEnd(String) 185 | case timestamp(String) 186 | } 187 | 188 | let scanner: CustomScanner 189 | private let references: HTMLCharacterReferences 190 | init(string: String, references: HTMLCharacterReferences) { 191 | scanner = CustomScanner(string: string) 192 | self.references = references 193 | } 194 | func parse() -> [Token] { 195 | var tokens: [Token] = [] 196 | while !scanner.isAtEnd { 197 | let token = parseToken() 198 | tokens.append(token) 199 | } 200 | return tokens 201 | } 202 | 203 | private func parseToken() -> Token { 204 | enum State { 205 | case data 206 | case HTMLCharacterReference 207 | case tag 208 | case startTag 209 | case startTagAnnotation 210 | case HTMLCharacterReferenceInAnnotation 211 | case startTagClass 212 | case endTag 213 | case timestamp 214 | } 215 | var state = State.data 216 | var result: [Character] = [] 217 | var buffer: [Character] = [] 218 | var classes: [String] = [] 219 | while let c = scanner.scanCharacter() { 220 | switch state { 221 | case .data: 222 | switch c { 223 | case "&": 224 | state = .HTMLCharacterReference 225 | case "<": 226 | if result.isEmpty { 227 | state = .tag 228 | } else { 229 | scanner.skip(-1) 230 | return .text(String(result)) 231 | } 232 | default: 233 | result.append(c) 234 | } 235 | case .HTMLCharacterReference: 236 | scanner.skip(-1) 237 | result += scanner.handleCharacterReference(references: references) 238 | state = .data 239 | case .tag: 240 | switch c { 241 | case "\u{0009}", "\u{000A}", "\u{000C}", "\u{0020}": 242 | state = .startTagAnnotation 243 | case "\u{002E}": 244 | state = .startTagClass 245 | case "\u{002F}": 246 | state = .endTag 247 | case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9": 248 | result = [c] 249 | state = .timestamp 250 | case ">": 251 | scanner.skip(-1) 252 | return .tagStart("") 253 | default: 254 | result = [c] 255 | state = .startTag 256 | } 257 | case .startTag: 258 | switch c { 259 | case "\u{0009}", "\u{000C}", "\u{0020}": 260 | state = .startTagAnnotation 261 | case "\u{000A}": 262 | buffer = [c] 263 | state = .startTagAnnotation 264 | case ".": 265 | state = .startTagClass 266 | case ">": 267 | return .tagStart(String(result)) 268 | default: 269 | result.append(c) 270 | } 271 | case .startTagClass: 272 | switch c { 273 | case "\u{0009}", "\u{000C}", "\u{0020}": 274 | classes.append(String(buffer)) 275 | buffer = [] 276 | state = .startTagAnnotation 277 | case "\u{000A}": 278 | classes.append(String(buffer)) 279 | buffer = [c] 280 | state = .startTagAnnotation 281 | case ".": 282 | classes.append(String(buffer)) 283 | buffer = [] 284 | state = .startTagClass 285 | case ">": 286 | return .tagStart(String(result)) 287 | default: 288 | buffer.append(c) 289 | } 290 | case .startTagAnnotation: 291 | switch c { 292 | case "&": 293 | state = .HTMLCharacterReferenceInAnnotation 294 | case ">": 295 | buffer = Array(String(buffer).trimmingCharacters(in: WebVTTParser.spaceDelimiterSet)) 296 | return .tagStart(String(result)) 297 | default: 298 | buffer.append(c) 299 | } 300 | case .HTMLCharacterReferenceInAnnotation: 301 | scanner.skip(-1) 302 | buffer += scanner.handleCharacterReference(references: references, allowedCharacter: ">") 303 | state = .startTagAnnotation 304 | case .endTag: 305 | switch c { 306 | case ">": 307 | return .tagEnd(String(result)) 308 | default: 309 | result.append(c) 310 | } 311 | case .timestamp: 312 | switch c { 313 | case ">": 314 | return .timestamp(String(result)) 315 | default: 316 | result.append(c) 317 | } 318 | } 319 | } 320 | return .text(String(result)) 321 | } 322 | } 323 | 324 | -------------------------------------------------------------------------------- /SwiftWebVTT.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | A332BFEB22A84954009E47D5 /* SwiftWebVTT.h in Headers */ = {isa = PBXBuildFile; fileRef = A332BFE922A84954009E47D5 /* SwiftWebVTT.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | A332BFF222A8496D009E47D5 /* WebVTT.swift in Sources */ = {isa = PBXBuildFile; fileRef = A332BFF122A8496C009E47D5 /* WebVTT.swift */; }; 12 | A332BFF422A849DB009E47D5 /* HTMLCharacterReferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = A332BFF322A849DA009E47D5 /* HTMLCharacterReferences.swift */; }; 13 | A332C02622A84E80009E47D5 /* SwiftWebVTTTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A332C02522A84E80009E47D5 /* SwiftWebVTTTests.swift */; }; 14 | A332C02822A84E80009E47D5 /* SwiftWebVTT.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A332BFE622A84954009E47D5 /* SwiftWebVTT.framework */; }; 15 | A332C03222A853C4009E47D5 /* references_named.json in Resources */ = {isa = PBXBuildFile; fileRef = A332BFF522A84A22009E47D5 /* references_named.json */; }; 16 | A3819D3422EC2D9D00F15A56 /* entities_encoded.txt in Resources */ = {isa = PBXBuildFile; fileRef = A3819D3222EC2D9D00F15A56 /* entities_encoded.txt */; }; 17 | A3819D3522EC2D9D00F15A56 /* entities_decoded.txt in Resources */ = {isa = PBXBuildFile; fileRef = A3819D3322EC2D9D00F15A56 /* entities_decoded.txt */; }; 18 | A384747022EC352200E545A6 /* Deduplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = A384746F22EC352200E545A6 /* Deduplication.swift */; }; 19 | A384747222EC35AC00E545A6 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A384747122EC35AC00E545A6 /* Extensions.swift */; }; 20 | A384747422EC36A500E545A6 /* WebVTTParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = A384747322EC36A500E545A6 /* WebVTTParser.swift */; }; 21 | A3B935CA22A8E4B400B0E066 /* references_substitutes.json in Resources */ = {isa = PBXBuildFile; fileRef = A3B935C922A8E4B400B0E066 /* references_substitutes.json */; }; 22 | A3B935D322A9051A00B0E066 /* Scanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3B935D222A9051A00B0E066 /* Scanner.swift */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXContainerItemProxy section */ 26 | A332C02922A84E80009E47D5 /* PBXContainerItemProxy */ = { 27 | isa = PBXContainerItemProxy; 28 | containerPortal = A332BFDD22A84954009E47D5 /* Project object */; 29 | proxyType = 1; 30 | remoteGlobalIDString = A332BFE522A84954009E47D5; 31 | remoteInfo = SwiftWebVTT; 32 | }; 33 | /* End PBXContainerItemProxy section */ 34 | 35 | /* Begin PBXFileReference section */ 36 | A312ECE422EC5F98004BFD28 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 37 | A312ECE522EC5F98004BFD28 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 38 | A332BFE622A84954009E47D5 /* SwiftWebVTT.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftWebVTT.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 39 | A332BFE922A84954009E47D5 /* SwiftWebVTT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SwiftWebVTT.h; sourceTree = ""; }; 40 | A332BFEA22A84954009E47D5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 41 | A332BFF122A8496C009E47D5 /* WebVTT.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WebVTT.swift; sourceTree = ""; }; 42 | A332BFF322A849DA009E47D5 /* HTMLCharacterReferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTMLCharacterReferences.swift; sourceTree = ""; }; 43 | A332BFF522A84A22009E47D5 /* references_named.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = references_named.json; sourceTree = ""; }; 44 | A332C02322A84E80009E47D5 /* SwiftWebVTTTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftWebVTTTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 45 | A332C02522A84E80009E47D5 /* SwiftWebVTTTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftWebVTTTests.swift; sourceTree = ""; }; 46 | A332C02722A84E80009E47D5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 47 | A3819D3222EC2D9D00F15A56 /* entities_encoded.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = entities_encoded.txt; sourceTree = ""; }; 48 | A3819D3322EC2D9D00F15A56 /* entities_decoded.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = entities_decoded.txt; sourceTree = ""; }; 49 | A384746F22EC352200E545A6 /* Deduplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Deduplication.swift; sourceTree = ""; }; 50 | A384747122EC35AC00E545A6 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; 51 | A384747322EC36A500E545A6 /* WebVTTParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebVTTParser.swift; sourceTree = ""; }; 52 | A3B935C922A8E4B400B0E066 /* references_substitutes.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = references_substitutes.json; sourceTree = ""; }; 53 | A3B935D222A9051A00B0E066 /* Scanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Scanner.swift; sourceTree = ""; }; 54 | /* End PBXFileReference section */ 55 | 56 | /* Begin PBXFrameworksBuildPhase section */ 57 | A332BFE322A84954009E47D5 /* Frameworks */ = { 58 | isa = PBXFrameworksBuildPhase; 59 | buildActionMask = 2147483647; 60 | files = ( 61 | ); 62 | runOnlyForDeploymentPostprocessing = 0; 63 | }; 64 | A332C02022A84E80009E47D5 /* Frameworks */ = { 65 | isa = PBXFrameworksBuildPhase; 66 | buildActionMask = 2147483647; 67 | files = ( 68 | A332C02822A84E80009E47D5 /* SwiftWebVTT.framework in Frameworks */, 69 | ); 70 | runOnlyForDeploymentPostprocessing = 0; 71 | }; 72 | /* End PBXFrameworksBuildPhase section */ 73 | 74 | /* Begin PBXGroup section */ 75 | A332BFDC22A84954009E47D5 = { 76 | isa = PBXGroup; 77 | children = ( 78 | A312ECE522EC5F98004BFD28 /* LICENSE */, 79 | A312ECE422EC5F98004BFD28 /* README.md */, 80 | A332BFE822A84954009E47D5 /* SwiftWebVTT */, 81 | A332C02422A84E80009E47D5 /* SwiftWebVTTTests */, 82 | A332BFE722A84954009E47D5 /* Products */, 83 | ); 84 | sourceTree = ""; 85 | }; 86 | A332BFE722A84954009E47D5 /* Products */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | A332BFE622A84954009E47D5 /* SwiftWebVTT.framework */, 90 | A332C02322A84E80009E47D5 /* SwiftWebVTTTests.xctest */, 91 | ); 92 | name = Products; 93 | sourceTree = ""; 94 | }; 95 | A332BFE822A84954009E47D5 /* SwiftWebVTT */ = { 96 | isa = PBXGroup; 97 | children = ( 98 | A332BFF122A8496C009E47D5 /* WebVTT.swift */, 99 | A384746F22EC352200E545A6 /* Deduplication.swift */, 100 | A384747322EC36A500E545A6 /* WebVTTParser.swift */, 101 | A332BFF322A849DA009E47D5 /* HTMLCharacterReferences.swift */, 102 | A3B935D222A9051A00B0E066 /* Scanner.swift */, 103 | A384747122EC35AC00E545A6 /* Extensions.swift */, 104 | A332BFF522A84A22009E47D5 /* references_named.json */, 105 | A3B935C922A8E4B400B0E066 /* references_substitutes.json */, 106 | A332BFE922A84954009E47D5 /* SwiftWebVTT.h */, 107 | A332BFEA22A84954009E47D5 /* Info.plist */, 108 | ); 109 | path = SwiftWebVTT; 110 | sourceTree = ""; 111 | }; 112 | A332C02422A84E80009E47D5 /* SwiftWebVTTTests */ = { 113 | isa = PBXGroup; 114 | children = ( 115 | A3387F6022A94CFF00C77615 /* Sample */, 116 | A332C02522A84E80009E47D5 /* SwiftWebVTTTests.swift */, 117 | A332C02722A84E80009E47D5 /* Info.plist */, 118 | ); 119 | path = SwiftWebVTTTests; 120 | sourceTree = ""; 121 | }; 122 | A3387F6022A94CFF00C77615 /* Sample */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | A3819D3222EC2D9D00F15A56 /* entities_encoded.txt */, 126 | A3819D3322EC2D9D00F15A56 /* entities_decoded.txt */, 127 | ); 128 | path = Sample; 129 | sourceTree = ""; 130 | }; 131 | /* End PBXGroup section */ 132 | 133 | /* Begin PBXHeadersBuildPhase section */ 134 | A332BFE122A84954009E47D5 /* Headers */ = { 135 | isa = PBXHeadersBuildPhase; 136 | buildActionMask = 2147483647; 137 | files = ( 138 | A332BFEB22A84954009E47D5 /* SwiftWebVTT.h in Headers */, 139 | ); 140 | runOnlyForDeploymentPostprocessing = 0; 141 | }; 142 | /* End PBXHeadersBuildPhase section */ 143 | 144 | /* Begin PBXNativeTarget section */ 145 | A332BFE522A84954009E47D5 /* SwiftWebVTT */ = { 146 | isa = PBXNativeTarget; 147 | buildConfigurationList = A332BFEE22A84954009E47D5 /* Build configuration list for PBXNativeTarget "SwiftWebVTT" */; 148 | buildPhases = ( 149 | A332BFE122A84954009E47D5 /* Headers */, 150 | A332BFE222A84954009E47D5 /* Sources */, 151 | A332BFE322A84954009E47D5 /* Frameworks */, 152 | A332BFE422A84954009E47D5 /* Resources */, 153 | ); 154 | buildRules = ( 155 | ); 156 | dependencies = ( 157 | ); 158 | name = SwiftWebVTT; 159 | productName = SwiftWebVTT; 160 | productReference = A332BFE622A84954009E47D5 /* SwiftWebVTT.framework */; 161 | productType = "com.apple.product-type.framework"; 162 | }; 163 | A332C02222A84E80009E47D5 /* SwiftWebVTTTests */ = { 164 | isa = PBXNativeTarget; 165 | buildConfigurationList = A332C02D22A84E80009E47D5 /* Build configuration list for PBXNativeTarget "SwiftWebVTTTests" */; 166 | buildPhases = ( 167 | A332C01F22A84E80009E47D5 /* Sources */, 168 | A332C02022A84E80009E47D5 /* Frameworks */, 169 | A332C02122A84E80009E47D5 /* Resources */, 170 | ); 171 | buildRules = ( 172 | ); 173 | dependencies = ( 174 | A332C02A22A84E80009E47D5 /* PBXTargetDependency */, 175 | ); 176 | name = SwiftWebVTTTests; 177 | productName = SwiftWebVTTTests; 178 | productReference = A332C02322A84E80009E47D5 /* SwiftWebVTTTests.xctest */; 179 | productType = "com.apple.product-type.bundle.unit-test"; 180 | }; 181 | /* End PBXNativeTarget section */ 182 | 183 | /* Begin PBXProject section */ 184 | A332BFDD22A84954009E47D5 /* Project object */ = { 185 | isa = PBXProject; 186 | attributes = { 187 | LastSwiftUpdateCheck = 1100; 188 | LastUpgradeCheck = 1100; 189 | ORGANIZATIONNAME = "Mikhail Apurin"; 190 | TargetAttributes = { 191 | A332BFE522A84954009E47D5 = { 192 | CreatedOnToolsVersion = 11.0; 193 | LastSwiftMigration = 1100; 194 | }; 195 | A332C02222A84E80009E47D5 = { 196 | CreatedOnToolsVersion = 11.0; 197 | }; 198 | }; 199 | }; 200 | buildConfigurationList = A332BFE022A84954009E47D5 /* Build configuration list for PBXProject "SwiftWebVTT" */; 201 | compatibilityVersion = "Xcode 9.3"; 202 | developmentRegion = en; 203 | hasScannedForEncodings = 0; 204 | knownRegions = ( 205 | en, 206 | Base, 207 | ); 208 | mainGroup = A332BFDC22A84954009E47D5; 209 | productRefGroup = A332BFE722A84954009E47D5 /* Products */; 210 | projectDirPath = ""; 211 | projectRoot = ""; 212 | targets = ( 213 | A332BFE522A84954009E47D5 /* SwiftWebVTT */, 214 | A332C02222A84E80009E47D5 /* SwiftWebVTTTests */, 215 | ); 216 | }; 217 | /* End PBXProject section */ 218 | 219 | /* Begin PBXResourcesBuildPhase section */ 220 | A332BFE422A84954009E47D5 /* Resources */ = { 221 | isa = PBXResourcesBuildPhase; 222 | buildActionMask = 2147483647; 223 | files = ( 224 | A332C03222A853C4009E47D5 /* references_named.json in Resources */, 225 | A3B935CA22A8E4B400B0E066 /* references_substitutes.json in Resources */, 226 | ); 227 | runOnlyForDeploymentPostprocessing = 0; 228 | }; 229 | A332C02122A84E80009E47D5 /* Resources */ = { 230 | isa = PBXResourcesBuildPhase; 231 | buildActionMask = 2147483647; 232 | files = ( 233 | A3819D3422EC2D9D00F15A56 /* entities_encoded.txt in Resources */, 234 | A3819D3522EC2D9D00F15A56 /* entities_decoded.txt in Resources */, 235 | ); 236 | runOnlyForDeploymentPostprocessing = 0; 237 | }; 238 | /* End PBXResourcesBuildPhase section */ 239 | 240 | /* Begin PBXSourcesBuildPhase section */ 241 | A332BFE222A84954009E47D5 /* Sources */ = { 242 | isa = PBXSourcesBuildPhase; 243 | buildActionMask = 2147483647; 244 | files = ( 245 | A384747222EC35AC00E545A6 /* Extensions.swift in Sources */, 246 | A332BFF422A849DB009E47D5 /* HTMLCharacterReferences.swift in Sources */, 247 | A384747422EC36A500E545A6 /* WebVTTParser.swift in Sources */, 248 | A3B935D322A9051A00B0E066 /* Scanner.swift in Sources */, 249 | A332BFF222A8496D009E47D5 /* WebVTT.swift in Sources */, 250 | A384747022EC352200E545A6 /* Deduplication.swift in Sources */, 251 | ); 252 | runOnlyForDeploymentPostprocessing = 0; 253 | }; 254 | A332C01F22A84E80009E47D5 /* Sources */ = { 255 | isa = PBXSourcesBuildPhase; 256 | buildActionMask = 2147483647; 257 | files = ( 258 | A332C02622A84E80009E47D5 /* SwiftWebVTTTests.swift in Sources */, 259 | ); 260 | runOnlyForDeploymentPostprocessing = 0; 261 | }; 262 | /* End PBXSourcesBuildPhase section */ 263 | 264 | /* Begin PBXTargetDependency section */ 265 | A332C02A22A84E80009E47D5 /* PBXTargetDependency */ = { 266 | isa = PBXTargetDependency; 267 | target = A332BFE522A84954009E47D5 /* SwiftWebVTT */; 268 | targetProxy = A332C02922A84E80009E47D5 /* PBXContainerItemProxy */; 269 | }; 270 | /* End PBXTargetDependency section */ 271 | 272 | /* Begin XCBuildConfiguration section */ 273 | A332BFEC22A84954009E47D5 /* Debug */ = { 274 | isa = XCBuildConfiguration; 275 | buildSettings = { 276 | ALWAYS_SEARCH_USER_PATHS = NO; 277 | CLANG_ANALYZER_NONNULL = YES; 278 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 279 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 280 | CLANG_CXX_LIBRARY = "libc++"; 281 | CLANG_ENABLE_MODULES = YES; 282 | CLANG_ENABLE_OBJC_ARC = YES; 283 | CLANG_ENABLE_OBJC_WEAK = YES; 284 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 285 | CLANG_WARN_BOOL_CONVERSION = YES; 286 | CLANG_WARN_COMMA = YES; 287 | CLANG_WARN_CONSTANT_CONVERSION = YES; 288 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 289 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 290 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 291 | CLANG_WARN_EMPTY_BODY = YES; 292 | CLANG_WARN_ENUM_CONVERSION = YES; 293 | CLANG_WARN_INFINITE_RECURSION = YES; 294 | CLANG_WARN_INT_CONVERSION = YES; 295 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 296 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 297 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 298 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 299 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 300 | CLANG_WARN_STRICT_PROTOTYPES = YES; 301 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 302 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 303 | CLANG_WARN_UNREACHABLE_CODE = YES; 304 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 305 | COPY_PHASE_STRIP = NO; 306 | CURRENT_PROJECT_VERSION = 1; 307 | DEBUG_INFORMATION_FORMAT = dwarf; 308 | ENABLE_STRICT_OBJC_MSGSEND = YES; 309 | ENABLE_TESTABILITY = YES; 310 | GCC_C_LANGUAGE_STANDARD = gnu11; 311 | GCC_DYNAMIC_NO_PIC = NO; 312 | GCC_NO_COMMON_BLOCKS = YES; 313 | GCC_OPTIMIZATION_LEVEL = 0; 314 | GCC_PREPROCESSOR_DEFINITIONS = ( 315 | "DEBUG=1", 316 | "$(inherited)", 317 | ); 318 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 319 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 320 | GCC_WARN_UNDECLARED_SELECTOR = YES; 321 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 322 | GCC_WARN_UNUSED_FUNCTION = YES; 323 | GCC_WARN_UNUSED_VARIABLE = YES; 324 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 325 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 326 | MTL_FAST_MATH = YES; 327 | ONLY_ACTIVE_ARCH = YES; 328 | SDKROOT = iphoneos; 329 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 330 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 331 | VERSIONING_SYSTEM = "apple-generic"; 332 | VERSION_INFO_PREFIX = ""; 333 | }; 334 | name = Debug; 335 | }; 336 | A332BFED22A84954009E47D5 /* Release */ = { 337 | isa = XCBuildConfiguration; 338 | buildSettings = { 339 | ALWAYS_SEARCH_USER_PATHS = NO; 340 | CLANG_ANALYZER_NONNULL = YES; 341 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 342 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 343 | CLANG_CXX_LIBRARY = "libc++"; 344 | CLANG_ENABLE_MODULES = YES; 345 | CLANG_ENABLE_OBJC_ARC = YES; 346 | CLANG_ENABLE_OBJC_WEAK = YES; 347 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 348 | CLANG_WARN_BOOL_CONVERSION = YES; 349 | CLANG_WARN_COMMA = YES; 350 | CLANG_WARN_CONSTANT_CONVERSION = YES; 351 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 352 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 353 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 354 | CLANG_WARN_EMPTY_BODY = YES; 355 | CLANG_WARN_ENUM_CONVERSION = YES; 356 | CLANG_WARN_INFINITE_RECURSION = YES; 357 | CLANG_WARN_INT_CONVERSION = YES; 358 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 359 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 360 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 361 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 362 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 363 | CLANG_WARN_STRICT_PROTOTYPES = YES; 364 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 365 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 366 | CLANG_WARN_UNREACHABLE_CODE = YES; 367 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 368 | COPY_PHASE_STRIP = NO; 369 | CURRENT_PROJECT_VERSION = 1; 370 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 371 | ENABLE_NS_ASSERTIONS = NO; 372 | ENABLE_STRICT_OBJC_MSGSEND = YES; 373 | GCC_C_LANGUAGE_STANDARD = gnu11; 374 | GCC_NO_COMMON_BLOCKS = YES; 375 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 376 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 377 | GCC_WARN_UNDECLARED_SELECTOR = YES; 378 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 379 | GCC_WARN_UNUSED_FUNCTION = YES; 380 | GCC_WARN_UNUSED_VARIABLE = YES; 381 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 382 | MTL_ENABLE_DEBUG_INFO = NO; 383 | MTL_FAST_MATH = YES; 384 | SDKROOT = iphoneos; 385 | SWIFT_COMPILATION_MODE = wholemodule; 386 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 387 | VALIDATE_PRODUCT = YES; 388 | VERSIONING_SYSTEM = "apple-generic"; 389 | VERSION_INFO_PREFIX = ""; 390 | }; 391 | name = Release; 392 | }; 393 | A332BFEF22A84954009E47D5 /* Debug */ = { 394 | isa = XCBuildConfiguration; 395 | buildSettings = { 396 | CLANG_ENABLE_MODULES = YES; 397 | CODE_SIGN_STYLE = Automatic; 398 | DEFINES_MODULE = YES; 399 | DEVELOPMENT_TEAM = FK4VRNJVL7; 400 | DYLIB_COMPATIBILITY_VERSION = 1; 401 | DYLIB_CURRENT_VERSION = 1; 402 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 403 | INFOPLIST_FILE = SwiftWebVTT/Info.plist; 404 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 405 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 406 | LD_RUNPATH_SEARCH_PATHS = ( 407 | "$(inherited)", 408 | "@executable_path/Frameworks", 409 | "@loader_path/Frameworks", 410 | ); 411 | PRODUCT_BUNDLE_IDENTIFIER = me.apurin.SwiftWebVTT; 412 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 413 | SKIP_INSTALL = YES; 414 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 415 | SWIFT_VERSION = 5.0; 416 | TARGETED_DEVICE_FAMILY = "1,2"; 417 | }; 418 | name = Debug; 419 | }; 420 | A332BFF022A84954009E47D5 /* Release */ = { 421 | isa = XCBuildConfiguration; 422 | buildSettings = { 423 | CLANG_ENABLE_MODULES = YES; 424 | CODE_SIGN_STYLE = Automatic; 425 | DEFINES_MODULE = YES; 426 | DEVELOPMENT_TEAM = FK4VRNJVL7; 427 | DYLIB_COMPATIBILITY_VERSION = 1; 428 | DYLIB_CURRENT_VERSION = 1; 429 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 430 | INFOPLIST_FILE = SwiftWebVTT/Info.plist; 431 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 432 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 433 | LD_RUNPATH_SEARCH_PATHS = ( 434 | "$(inherited)", 435 | "@executable_path/Frameworks", 436 | "@loader_path/Frameworks", 437 | ); 438 | PRODUCT_BUNDLE_IDENTIFIER = me.apurin.SwiftWebVTT; 439 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 440 | SKIP_INSTALL = YES; 441 | SWIFT_VERSION = 5.0; 442 | TARGETED_DEVICE_FAMILY = "1,2"; 443 | }; 444 | name = Release; 445 | }; 446 | A332C02B22A84E80009E47D5 /* Debug */ = { 447 | isa = XCBuildConfiguration; 448 | buildSettings = { 449 | CODE_SIGN_STYLE = Automatic; 450 | DEVELOPMENT_TEAM = FK4VRNJVL7; 451 | INFOPLIST_FILE = SwiftWebVTTTests/Info.plist; 452 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 453 | LD_RUNPATH_SEARCH_PATHS = ( 454 | "$(inherited)", 455 | "@executable_path/Frameworks", 456 | "@loader_path/Frameworks", 457 | ); 458 | PRODUCT_BUNDLE_IDENTIFIER = me.apurin.SwiftWebVTTTests; 459 | PRODUCT_NAME = "$(TARGET_NAME)"; 460 | SWIFT_VERSION = 5.0; 461 | TARGETED_DEVICE_FAMILY = "1,2"; 462 | }; 463 | name = Debug; 464 | }; 465 | A332C02C22A84E80009E47D5 /* Release */ = { 466 | isa = XCBuildConfiguration; 467 | buildSettings = { 468 | CODE_SIGN_STYLE = Automatic; 469 | DEVELOPMENT_TEAM = FK4VRNJVL7; 470 | INFOPLIST_FILE = SwiftWebVTTTests/Info.plist; 471 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 472 | LD_RUNPATH_SEARCH_PATHS = ( 473 | "$(inherited)", 474 | "@executable_path/Frameworks", 475 | "@loader_path/Frameworks", 476 | ); 477 | PRODUCT_BUNDLE_IDENTIFIER = me.apurin.SwiftWebVTTTests; 478 | PRODUCT_NAME = "$(TARGET_NAME)"; 479 | SWIFT_VERSION = 5.0; 480 | TARGETED_DEVICE_FAMILY = "1,2"; 481 | }; 482 | name = Release; 483 | }; 484 | /* End XCBuildConfiguration section */ 485 | 486 | /* Begin XCConfigurationList section */ 487 | A332BFE022A84954009E47D5 /* Build configuration list for PBXProject "SwiftWebVTT" */ = { 488 | isa = XCConfigurationList; 489 | buildConfigurations = ( 490 | A332BFEC22A84954009E47D5 /* Debug */, 491 | A332BFED22A84954009E47D5 /* Release */, 492 | ); 493 | defaultConfigurationIsVisible = 0; 494 | defaultConfigurationName = Release; 495 | }; 496 | A332BFEE22A84954009E47D5 /* Build configuration list for PBXNativeTarget "SwiftWebVTT" */ = { 497 | isa = XCConfigurationList; 498 | buildConfigurations = ( 499 | A332BFEF22A84954009E47D5 /* Debug */, 500 | A332BFF022A84954009E47D5 /* Release */, 501 | ); 502 | defaultConfigurationIsVisible = 0; 503 | defaultConfigurationName = Release; 504 | }; 505 | A332C02D22A84E80009E47D5 /* Build configuration list for PBXNativeTarget "SwiftWebVTTTests" */ = { 506 | isa = XCConfigurationList; 507 | buildConfigurations = ( 508 | A332C02B22A84E80009E47D5 /* Debug */, 509 | A332C02C22A84E80009E47D5 /* Release */, 510 | ); 511 | defaultConfigurationIsVisible = 0; 512 | defaultConfigurationName = Release; 513 | }; 514 | /* End XCConfigurationList section */ 515 | }; 516 | rootObject = A332BFDD22A84954009E47D5 /* Project object */; 517 | } 518 | -------------------------------------------------------------------------------- /SwiftWebVTT/references_named.json: -------------------------------------------------------------------------------- 1 | [ 2 | { "index": "Aacute", "codepoints": [193] }, 3 | { "index": "aacute", "codepoints": [225] }, 4 | { "index": "Abreve", "codepoints": [258] }, 5 | { "index": "abreve", "codepoints": [259] }, 6 | { "index": "ac", "codepoints": [8766] }, 7 | { "index": "acd", "codepoints": [8767] }, 8 | { "index": "acE", "codepoints": [8766, 819] }, 9 | { "index": "Acirc", "codepoints": [194] }, 10 | { "index": "acirc", "codepoints": [226] }, 11 | { "index": "acute", "codepoints": [180] }, 12 | { "index": "Acy", "codepoints": [1040] }, 13 | { "index": "acy", "codepoints": [1072] }, 14 | { "index": "AElig", "codepoints": [198] }, 15 | { "index": "aelig", "codepoints": [230] }, 16 | { "index": "af", "codepoints": [8289] }, 17 | { "index": "Afr", "codepoints": [120068] }, 18 | { "index": "afr", "codepoints": [120094] }, 19 | { "index": "Agrave", "codepoints": [192] }, 20 | { "index": "agrave", "codepoints": [224] }, 21 | { "index": "alefsym", "codepoints": [8501] }, 22 | { "index": "aleph", "codepoints": [8501] }, 23 | { "index": "Alpha", "codepoints": [913] }, 24 | { "index": "alpha", "codepoints": [945] }, 25 | { "index": "Amacr", "codepoints": [256] }, 26 | { "index": "amacr", "codepoints": [257] }, 27 | { "index": "amalg", "codepoints": [10815] }, 28 | { "index": "amp", "codepoints": [38] }, 29 | { "index": "AMP", "codepoints": [38] }, 30 | { "index": "andand", "codepoints": [10837] }, 31 | { "index": "And", "codepoints": [10835] }, 32 | { "index": "and", "codepoints": [8743] }, 33 | { "index": "andd", "codepoints": [10844] }, 34 | { "index": "andslope", "codepoints": [10840] }, 35 | { "index": "andv", "codepoints": [10842] }, 36 | { "index": "ang", "codepoints": [8736] }, 37 | { "index": "ange", "codepoints": [10660] }, 38 | { "index": "angle", "codepoints": [8736] }, 39 | { "index": "angmsdaa", "codepoints": [10664] }, 40 | { "index": "angmsdab", "codepoints": [10665] }, 41 | { "index": "angmsdac", "codepoints": [10666] }, 42 | { "index": "angmsdad", "codepoints": [10667] }, 43 | { "index": "angmsdae", "codepoints": [10668] }, 44 | { "index": "angmsdaf", "codepoints": [10669] }, 45 | { "index": "angmsdag", "codepoints": [10670] }, 46 | { "index": "angmsdah", "codepoints": [10671] }, 47 | { "index": "angmsd", "codepoints": [8737] }, 48 | { "index": "angrt", "codepoints": [8735] }, 49 | { "index": "angrtvb", "codepoints": [8894] }, 50 | { "index": "angrtvbd", "codepoints": [10653] }, 51 | { "index": "angsph", "codepoints": [8738] }, 52 | { "index": "angst", "codepoints": [197] }, 53 | { "index": "angzarr", "codepoints": [9084] }, 54 | { "index": "Aogon", "codepoints": [260] }, 55 | { "index": "aogon", "codepoints": [261] }, 56 | { "index": "Aopf", "codepoints": [120120] }, 57 | { "index": "aopf", "codepoints": [120146] }, 58 | { "index": "apacir", "codepoints": [10863] }, 59 | { "index": "ap", "codepoints": [8776] }, 60 | { "index": "apE", "codepoints": [10864] }, 61 | { "index": "ape", "codepoints": [8778] }, 62 | { "index": "apid", "codepoints": [8779] }, 63 | { "index": "apos", "codepoints": [39] }, 64 | { "index": "ApplyFunction", "codepoints": [8289] }, 65 | { "index": "approx", "codepoints": [8776] }, 66 | { "index": "approxeq", "codepoints": [8778] }, 67 | { "index": "Aring", "codepoints": [197] }, 68 | { "index": "aring", "codepoints": [229] }, 69 | { "index": "Ascr", "codepoints": [119964] }, 70 | { "index": "ascr", "codepoints": [119990] }, 71 | { "index": "Assign", "codepoints": [8788] }, 72 | { "index": "ast", "codepoints": [42] }, 73 | { "index": "asymp", "codepoints": [8776] }, 74 | { "index": "asympeq", "codepoints": [8781] }, 75 | { "index": "Atilde", "codepoints": [195] }, 76 | { "index": "atilde", "codepoints": [227] }, 77 | { "index": "Auml", "codepoints": [196] }, 78 | { "index": "auml", "codepoints": [228] }, 79 | { "index": "awconint", "codepoints": [8755] }, 80 | { "index": "awint", "codepoints": [10769] }, 81 | { "index": "backcong", "codepoints": [8780] }, 82 | { "index": "backepsilon", "codepoints": [1014] }, 83 | { "index": "backprime", "codepoints": [8245] }, 84 | { "index": "backsim", "codepoints": [8765] }, 85 | { "index": "backsimeq", "codepoints": [8909] }, 86 | { "index": "Backslash", "codepoints": [8726] }, 87 | { "index": "Barv", "codepoints": [10983] }, 88 | { "index": "barvee", "codepoints": [8893] }, 89 | { "index": "barwed", "codepoints": [8965] }, 90 | { "index": "Barwed", "codepoints": [8966] }, 91 | { "index": "barwedge", "codepoints": [8965] }, 92 | { "index": "bbrk", "codepoints": [9141] }, 93 | { "index": "bbrktbrk", "codepoints": [9142] }, 94 | { "index": "bcong", "codepoints": [8780] }, 95 | { "index": "Bcy", "codepoints": [1041] }, 96 | { "index": "bcy", "codepoints": [1073] }, 97 | { "index": "bdquo", "codepoints": [8222] }, 98 | { "index": "becaus", "codepoints": [8757] }, 99 | { "index": "because", "codepoints": [8757] }, 100 | { "index": "Because", "codepoints": [8757] }, 101 | { "index": "bemptyv", "codepoints": [10672] }, 102 | { "index": "bepsi", "codepoints": [1014] }, 103 | { "index": "bernou", "codepoints": [8492] }, 104 | { "index": "Bernoullis", "codepoints": [8492] }, 105 | { "index": "Beta", "codepoints": [914] }, 106 | { "index": "beta", "codepoints": [946] }, 107 | { "index": "beth", "codepoints": [8502] }, 108 | { "index": "between", "codepoints": [8812] }, 109 | { "index": "Bfr", "codepoints": [120069] }, 110 | { "index": "bfr", "codepoints": [120095] }, 111 | { "index": "bigcap", "codepoints": [8898] }, 112 | { "index": "bigcirc", "codepoints": [9711] }, 113 | { "index": "bigcup", "codepoints": [8899] }, 114 | { "index": "bigodot", "codepoints": [10752] }, 115 | { "index": "bigoplus", "codepoints": [10753] }, 116 | { "index": "bigotimes", "codepoints": [10754] }, 117 | { "index": "bigsqcup", "codepoints": [10758] }, 118 | { "index": "bigstar", "codepoints": [9733] }, 119 | { "index": "bigtriangledown", "codepoints": [9661] }, 120 | { "index": "bigtriangleup", "codepoints": [9651] }, 121 | { "index": "biguplus", "codepoints": [10756] }, 122 | { "index": "bigvee", "codepoints": [8897] }, 123 | { "index": "bigwedge", "codepoints": [8896] }, 124 | { "index": "bkarow", "codepoints": [10509] }, 125 | { "index": "blacklozenge", "codepoints": [10731] }, 126 | { "index": "blacksquare", "codepoints": [9642] }, 127 | { "index": "blacktriangle", "codepoints": [9652] }, 128 | { "index": "blacktriangledown", "codepoints": [9662] }, 129 | { "index": "blacktriangleleft", "codepoints": [9666] }, 130 | { "index": "blacktriangleright", "codepoints": [9656] }, 131 | { "index": "blank", "codepoints": [9251] }, 132 | { "index": "blk12", "codepoints": [9618] }, 133 | { "index": "blk14", "codepoints": [9617] }, 134 | { "index": "blk34", "codepoints": [9619] }, 135 | { "index": "block", "codepoints": [9608] }, 136 | { "index": "bne", "codepoints": [61, 8421] }, 137 | { "index": "bnequiv", "codepoints": [8801, 8421] }, 138 | { "index": "bNot", "codepoints": [10989] }, 139 | { "index": "bnot", "codepoints": [8976] }, 140 | { "index": "Bopf", "codepoints": [120121] }, 141 | { "index": "bopf", "codepoints": [120147] }, 142 | { "index": "bot", "codepoints": [8869] }, 143 | { "index": "bottom", "codepoints": [8869] }, 144 | { "index": "bowtie", "codepoints": [8904] }, 145 | { "index": "boxbox", "codepoints": [10697] }, 146 | { "index": "boxdl", "codepoints": [9488] }, 147 | { "index": "boxdL", "codepoints": [9557] }, 148 | { "index": "boxDl", "codepoints": [9558] }, 149 | { "index": "boxDL", "codepoints": [9559] }, 150 | { "index": "boxdr", "codepoints": [9484] }, 151 | { "index": "boxdR", "codepoints": [9554] }, 152 | { "index": "boxDr", "codepoints": [9555] }, 153 | { "index": "boxDR", "codepoints": [9556] }, 154 | { "index": "boxh", "codepoints": [9472] }, 155 | { "index": "boxH", "codepoints": [9552] }, 156 | { "index": "boxhd", "codepoints": [9516] }, 157 | { "index": "boxHd", "codepoints": [9572] }, 158 | { "index": "boxhD", "codepoints": [9573] }, 159 | { "index": "boxHD", "codepoints": [9574] }, 160 | { "index": "boxhu", "codepoints": [9524] }, 161 | { "index": "boxHu", "codepoints": [9575] }, 162 | { "index": "boxhU", "codepoints": [9576] }, 163 | { "index": "boxHU", "codepoints": [9577] }, 164 | { "index": "boxminus", "codepoints": [8863] }, 165 | { "index": "boxplus", "codepoints": [8862] }, 166 | { "index": "boxtimes", "codepoints": [8864] }, 167 | { "index": "boxul", "codepoints": [9496] }, 168 | { "index": "boxuL", "codepoints": [9563] }, 169 | { "index": "boxUl", "codepoints": [9564] }, 170 | { "index": "boxUL", "codepoints": [9565] }, 171 | { "index": "boxur", "codepoints": [9492] }, 172 | { "index": "boxuR", "codepoints": [9560] }, 173 | { "index": "boxUr", "codepoints": [9561] }, 174 | { "index": "boxUR", "codepoints": [9562] }, 175 | { "index": "boxv", "codepoints": [9474] }, 176 | { "index": "boxV", "codepoints": [9553] }, 177 | { "index": "boxvh", "codepoints": [9532] }, 178 | { "index": "boxvH", "codepoints": [9578] }, 179 | { "index": "boxVh", "codepoints": [9579] }, 180 | { "index": "boxVH", "codepoints": [9580] }, 181 | { "index": "boxvl", "codepoints": [9508] }, 182 | { "index": "boxvL", "codepoints": [9569] }, 183 | { "index": "boxVl", "codepoints": [9570] }, 184 | { "index": "boxVL", "codepoints": [9571] }, 185 | { "index": "boxvr", "codepoints": [9500] }, 186 | { "index": "boxvR", "codepoints": [9566] }, 187 | { "index": "boxVr", "codepoints": [9567] }, 188 | { "index": "boxVR", "codepoints": [9568] }, 189 | { "index": "bprime", "codepoints": [8245] }, 190 | { "index": "breve", "codepoints": [728] }, 191 | { "index": "Breve", "codepoints": [728] }, 192 | { "index": "brvbar", "codepoints": [166] }, 193 | { "index": "bscr", "codepoints": [119991] }, 194 | { "index": "Bscr", "codepoints": [8492] }, 195 | { "index": "bsemi", "codepoints": [8271] }, 196 | { "index": "bsim", "codepoints": [8765] }, 197 | { "index": "bsime", "codepoints": [8909] }, 198 | { "index": "bsolb", "codepoints": [10693] }, 199 | { "index": "bsol", "codepoints": [92] }, 200 | { "index": "bsolhsub", "codepoints": [10184] }, 201 | { "index": "bull", "codepoints": [8226] }, 202 | { "index": "bullet", "codepoints": [8226] }, 203 | { "index": "bump", "codepoints": [8782] }, 204 | { "index": "bumpE", "codepoints": [10926] }, 205 | { "index": "bumpe", "codepoints": [8783] }, 206 | { "index": "Bumpeq", "codepoints": [8782] }, 207 | { "index": "bumpeq", "codepoints": [8783] }, 208 | { "index": "Cacute", "codepoints": [262] }, 209 | { "index": "cacute", "codepoints": [263] }, 210 | { "index": "capand", "codepoints": [10820] }, 211 | { "index": "capbrcup", "codepoints": [10825] }, 212 | { "index": "capcap", "codepoints": [10827] }, 213 | { "index": "cap", "codepoints": [8745] }, 214 | { "index": "Cap", "codepoints": [8914] }, 215 | { "index": "capcup", "codepoints": [10823] }, 216 | { "index": "capdot", "codepoints": [10816] }, 217 | { "index": "CapitalDifferentialD", "codepoints": [8517] }, 218 | { "index": "caps", "codepoints": [8745, 65024] }, 219 | { "index": "caret", "codepoints": [8257] }, 220 | { "index": "caron", "codepoints": [711] }, 221 | { "index": "Cayleys", "codepoints": [8493] }, 222 | { "index": "ccaps", "codepoints": [10829] }, 223 | { "index": "Ccaron", "codepoints": [268] }, 224 | { "index": "ccaron", "codepoints": [269] }, 225 | { "index": "Ccedil", "codepoints": [199] }, 226 | { "index": "ccedil", "codepoints": [231] }, 227 | { "index": "Ccirc", "codepoints": [264] }, 228 | { "index": "ccirc", "codepoints": [265] }, 229 | { "index": "Cconint", "codepoints": [8752] }, 230 | { "index": "ccups", "codepoints": [10828] }, 231 | { "index": "ccupssm", "codepoints": [10832] }, 232 | { "index": "Cdot", "codepoints": [266] }, 233 | { "index": "cdot", "codepoints": [267] }, 234 | { "index": "cedil", "codepoints": [184] }, 235 | { "index": "Cedilla", "codepoints": [184] }, 236 | { "index": "cemptyv", "codepoints": [10674] }, 237 | { "index": "cent", "codepoints": [162] }, 238 | { "index": "centerdot", "codepoints": [183] }, 239 | { "index": "CenterDot", "codepoints": [183] }, 240 | { "index": "cfr", "codepoints": [120096] }, 241 | { "index": "Cfr", "codepoints": [8493] }, 242 | { "index": "CHcy", "codepoints": [1063] }, 243 | { "index": "chcy", "codepoints": [1095] }, 244 | { "index": "check", "codepoints": [10003] }, 245 | { "index": "checkmark", "codepoints": [10003] }, 246 | { "index": "Chi", "codepoints": [935] }, 247 | { "index": "chi", "codepoints": [967] }, 248 | { "index": "circ", "codepoints": [710] }, 249 | { "index": "circeq", "codepoints": [8791] }, 250 | { "index": "circlearrowleft", "codepoints": [8634] }, 251 | { "index": "circlearrowright", "codepoints": [8635] }, 252 | { "index": "circledast", "codepoints": [8859] }, 253 | { "index": "circledcirc", "codepoints": [8858] }, 254 | { "index": "circleddash", "codepoints": [8861] }, 255 | { "index": "CircleDot", "codepoints": [8857] }, 256 | { "index": "circledR", "codepoints": [174] }, 257 | { "index": "circledS", "codepoints": [9416] }, 258 | { "index": "CircleMinus", "codepoints": [8854] }, 259 | { "index": "CirclePlus", "codepoints": [8853] }, 260 | { "index": "CircleTimes", "codepoints": [8855] }, 261 | { "index": "cir", "codepoints": [9675] }, 262 | { "index": "cirE", "codepoints": [10691] }, 263 | { "index": "cire", "codepoints": [8791] }, 264 | { "index": "cirfnint", "codepoints": [10768] }, 265 | { "index": "cirmid", "codepoints": [10991] }, 266 | { "index": "cirscir", "codepoints": [10690] }, 267 | { "index": "ClockwiseContourIntegral", "codepoints": [8754] }, 268 | { "index": "CloseCurlyDoubleQuote", "codepoints": [8221] }, 269 | { "index": "CloseCurlyQuote", "codepoints": [8217] }, 270 | { "index": "clubs", "codepoints": [9827] }, 271 | { "index": "clubsuit", "codepoints": [9827] }, 272 | { "index": "colon", "codepoints": [58] }, 273 | { "index": "Colon", "codepoints": [8759] }, 274 | { "index": "Colone", "codepoints": [10868] }, 275 | { "index": "colone", "codepoints": [8788] }, 276 | { "index": "coloneq", "codepoints": [8788] }, 277 | { "index": "comma", "codepoints": [44] }, 278 | { "index": "commat", "codepoints": [64] }, 279 | { "index": "comp", "codepoints": [8705] }, 280 | { "index": "compfn", "codepoints": [8728] }, 281 | { "index": "complement", "codepoints": [8705] }, 282 | { "index": "complexes", "codepoints": [8450] }, 283 | { "index": "cong", "codepoints": [8773] }, 284 | { "index": "congdot", "codepoints": [10861] }, 285 | { "index": "Congruent", "codepoints": [8801] }, 286 | { "index": "conint", "codepoints": [8750] }, 287 | { "index": "Conint", "codepoints": [8751] }, 288 | { "index": "ContourIntegral", "codepoints": [8750] }, 289 | { "index": "copf", "codepoints": [120148] }, 290 | { "index": "Copf", "codepoints": [8450] }, 291 | { "index": "coprod", "codepoints": [8720] }, 292 | { "index": "Coproduct", "codepoints": [8720] }, 293 | { "index": "copy", "codepoints": [169] }, 294 | { "index": "COPY", "codepoints": [169] }, 295 | { "index": "copysr", "codepoints": [8471] }, 296 | { "index": "CounterClockwiseContourIntegral", "codepoints": [8755] }, 297 | { "index": "crarr", "codepoints": [8629] }, 298 | { "index": "cross", "codepoints": [10007] }, 299 | { "index": "Cross", "codepoints": [10799] }, 300 | { "index": "Cscr", "codepoints": [119966] }, 301 | { "index": "cscr", "codepoints": [119992] }, 302 | { "index": "csub", "codepoints": [10959] }, 303 | { "index": "csube", "codepoints": [10961] }, 304 | { "index": "csup", "codepoints": [10960] }, 305 | { "index": "csupe", "codepoints": [10962] }, 306 | { "index": "ctdot", "codepoints": [8943] }, 307 | { "index": "cudarrl", "codepoints": [10552] }, 308 | { "index": "cudarrr", "codepoints": [10549] }, 309 | { "index": "cuepr", "codepoints": [8926] }, 310 | { "index": "cuesc", "codepoints": [8927] }, 311 | { "index": "cularr", "codepoints": [8630] }, 312 | { "index": "cularrp", "codepoints": [10557] }, 313 | { "index": "cupbrcap", "codepoints": [10824] }, 314 | { "index": "cupcap", "codepoints": [10822] }, 315 | { "index": "CupCap", "codepoints": [8781] }, 316 | { "index": "cup", "codepoints": [8746] }, 317 | { "index": "Cup", "codepoints": [8915] }, 318 | { "index": "cupcup", "codepoints": [10826] }, 319 | { "index": "cupdot", "codepoints": [8845] }, 320 | { "index": "cupor", "codepoints": [10821] }, 321 | { "index": "cups", "codepoints": [8746, 65024] }, 322 | { "index": "curarr", "codepoints": [8631] }, 323 | { "index": "curarrm", "codepoints": [10556] }, 324 | { "index": "curlyeqprec", "codepoints": [8926] }, 325 | { "index": "curlyeqsucc", "codepoints": [8927] }, 326 | { "index": "curlyvee", "codepoints": [8910] }, 327 | { "index": "curlywedge", "codepoints": [8911] }, 328 | { "index": "curren", "codepoints": [164] }, 329 | { "index": "curvearrowleft", "codepoints": [8630] }, 330 | { "index": "curvearrowright", "codepoints": [8631] }, 331 | { "index": "cuvee", "codepoints": [8910] }, 332 | { "index": "cuwed", "codepoints": [8911] }, 333 | { "index": "cwconint", "codepoints": [8754] }, 334 | { "index": "cwint", "codepoints": [8753] }, 335 | { "index": "cylcty", "codepoints": [9005] }, 336 | { "index": "dagger", "codepoints": [8224] }, 337 | { "index": "Dagger", "codepoints": [8225] }, 338 | { "index": "daleth", "codepoints": [8504] }, 339 | { "index": "darr", "codepoints": [8595] }, 340 | { "index": "Darr", "codepoints": [8609] }, 341 | { "index": "dArr", "codepoints": [8659] }, 342 | { "index": "dash", "codepoints": [8208] }, 343 | { "index": "Dashv", "codepoints": [10980] }, 344 | { "index": "dashv", "codepoints": [8867] }, 345 | { "index": "dbkarow", "codepoints": [10511] }, 346 | { "index": "dblac", "codepoints": [733] }, 347 | { "index": "Dcaron", "codepoints": [270] }, 348 | { "index": "dcaron", "codepoints": [271] }, 349 | { "index": "Dcy", "codepoints": [1044] }, 350 | { "index": "dcy", "codepoints": [1076] }, 351 | { "index": "ddagger", "codepoints": [8225] }, 352 | { "index": "ddarr", "codepoints": [8650] }, 353 | { "index": "DD", "codepoints": [8517] }, 354 | { "index": "dd", "codepoints": [8518] }, 355 | { "index": "DDotrahd", "codepoints": [10513] }, 356 | { "index": "ddotseq", "codepoints": [10871] }, 357 | { "index": "deg", "codepoints": [176] }, 358 | { "index": "Del", "codepoints": [8711] }, 359 | { "index": "Delta", "codepoints": [916] }, 360 | { "index": "delta", "codepoints": [948] }, 361 | { "index": "demptyv", "codepoints": [10673] }, 362 | { "index": "dfisht", "codepoints": [10623] }, 363 | { "index": "Dfr", "codepoints": [120071] }, 364 | { "index": "dfr", "codepoints": [120097] }, 365 | { "index": "dHar", "codepoints": [10597] }, 366 | { "index": "dharl", "codepoints": [8643] }, 367 | { "index": "dharr", "codepoints": [8642] }, 368 | { "index": "DiacriticalAcute", "codepoints": [180] }, 369 | { "index": "DiacriticalDot", "codepoints": [729] }, 370 | { "index": "DiacriticalDoubleAcute", "codepoints": [733] }, 371 | { "index": "DiacriticalGrave", "codepoints": [96] }, 372 | { "index": "DiacriticalTilde", "codepoints": [732] }, 373 | { "index": "diam", "codepoints": [8900] }, 374 | { "index": "diamond", "codepoints": [8900] }, 375 | { "index": "Diamond", "codepoints": [8900] }, 376 | { "index": "diamondsuit", "codepoints": [9830] }, 377 | { "index": "diams", "codepoints": [9830] }, 378 | { "index": "die", "codepoints": [168] }, 379 | { "index": "DifferentialD", "codepoints": [8518] }, 380 | { "index": "digamma", "codepoints": [989] }, 381 | { "index": "disin", "codepoints": [8946] }, 382 | { "index": "div", "codepoints": [247] }, 383 | { "index": "divide", "codepoints": [247] }, 384 | { "index": "divideontimes", "codepoints": [8903] }, 385 | { "index": "divonx", "codepoints": [8903] }, 386 | { "index": "DJcy", "codepoints": [1026] }, 387 | { "index": "djcy", "codepoints": [1106] }, 388 | { "index": "dlcorn", "codepoints": [8990] }, 389 | { "index": "dlcrop", "codepoints": [8973] }, 390 | { "index": "dollar", "codepoints": [36] }, 391 | { "index": "Dopf", "codepoints": [120123] }, 392 | { "index": "dopf", "codepoints": [120149] }, 393 | { "index": "Dot", "codepoints": [168] }, 394 | { "index": "dot", "codepoints": [729] }, 395 | { "index": "DotDot", "codepoints": [8412] }, 396 | { "index": "doteq", "codepoints": [8784] }, 397 | { "index": "doteqdot", "codepoints": [8785] }, 398 | { "index": "DotEqual", "codepoints": [8784] }, 399 | { "index": "dotminus", "codepoints": [8760] }, 400 | { "index": "dotplus", "codepoints": [8724] }, 401 | { "index": "dotsquare", "codepoints": [8865] }, 402 | { "index": "doublebarwedge", "codepoints": [8966] }, 403 | { "index": "DoubleContourIntegral", "codepoints": [8751] }, 404 | { "index": "DoubleDot", "codepoints": [168] }, 405 | { "index": "DoubleDownArrow", "codepoints": [8659] }, 406 | { "index": "DoubleLeftArrow", "codepoints": [8656] }, 407 | { "index": "DoubleLeftRightArrow", "codepoints": [8660] }, 408 | { "index": "DoubleLeftTee", "codepoints": [10980] }, 409 | { "index": "DoubleLongLeftArrow", "codepoints": [10232] }, 410 | { "index": "DoubleLongLeftRightArrow", "codepoints": [10234] }, 411 | { "index": "DoubleLongRightArrow", "codepoints": [10233] }, 412 | { "index": "DoubleRightArrow", "codepoints": [8658] }, 413 | { "index": "DoubleRightTee", "codepoints": [8872] }, 414 | { "index": "DoubleUpArrow", "codepoints": [8657] }, 415 | { "index": "DoubleUpDownArrow", "codepoints": [8661] }, 416 | { "index": "DoubleVerticalBar", "codepoints": [8741] }, 417 | { "index": "DownArrowBar", "codepoints": [10515] }, 418 | { "index": "downarrow", "codepoints": [8595] }, 419 | { "index": "DownArrow", "codepoints": [8595] }, 420 | { "index": "Downarrow", "codepoints": [8659] }, 421 | { "index": "DownArrowUpArrow", "codepoints": [8693] }, 422 | { "index": "DownBreve", "codepoints": [785] }, 423 | { "index": "downdownarrows", "codepoints": [8650] }, 424 | { "index": "downharpoonleft", "codepoints": [8643] }, 425 | { "index": "downharpoonright", "codepoints": [8642] }, 426 | { "index": "DownLeftRightVector", "codepoints": [10576] }, 427 | { "index": "DownLeftTeeVector", "codepoints": [10590] }, 428 | { "index": "DownLeftVectorBar", "codepoints": [10582] }, 429 | { "index": "DownLeftVector", "codepoints": [8637] }, 430 | { "index": "DownRightTeeVector", "codepoints": [10591] }, 431 | { "index": "DownRightVectorBar", "codepoints": [10583] }, 432 | { "index": "DownRightVector", "codepoints": [8641] }, 433 | { "index": "DownTeeArrow", "codepoints": [8615] }, 434 | { "index": "DownTee", "codepoints": [8868] }, 435 | { "index": "drbkarow", "codepoints": [10512] }, 436 | { "index": "drcorn", "codepoints": [8991] }, 437 | { "index": "drcrop", "codepoints": [8972] }, 438 | { "index": "Dscr", "codepoints": [119967] }, 439 | { "index": "dscr", "codepoints": [119993] }, 440 | { "index": "DScy", "codepoints": [1029] }, 441 | { "index": "dscy", "codepoints": [1109] }, 442 | { "index": "dsol", "codepoints": [10742] }, 443 | { "index": "Dstrok", "codepoints": [272] }, 444 | { "index": "dstrok", "codepoints": [273] }, 445 | { "index": "dtdot", "codepoints": [8945] }, 446 | { "index": "dtri", "codepoints": [9663] }, 447 | { "index": "dtrif", "codepoints": [9662] }, 448 | { "index": "duarr", "codepoints": [8693] }, 449 | { "index": "duhar", "codepoints": [10607] }, 450 | { "index": "dwangle", "codepoints": [10662] }, 451 | { "index": "DZcy", "codepoints": [1039] }, 452 | { "index": "dzcy", "codepoints": [1119] }, 453 | { "index": "dzigrarr", "codepoints": [10239] }, 454 | { "index": "Eacute", "codepoints": [201] }, 455 | { "index": "eacute", "codepoints": [233] }, 456 | { "index": "easter", "codepoints": [10862] }, 457 | { "index": "Ecaron", "codepoints": [282] }, 458 | { "index": "ecaron", "codepoints": [283] }, 459 | { "index": "Ecirc", "codepoints": [202] }, 460 | { "index": "ecirc", "codepoints": [234] }, 461 | { "index": "ecir", "codepoints": [8790] }, 462 | { "index": "ecolon", "codepoints": [8789] }, 463 | { "index": "Ecy", "codepoints": [1069] }, 464 | { "index": "ecy", "codepoints": [1101] }, 465 | { "index": "eDDot", "codepoints": [10871] }, 466 | { "index": "Edot", "codepoints": [278] }, 467 | { "index": "edot", "codepoints": [279] }, 468 | { "index": "eDot", "codepoints": [8785] }, 469 | { "index": "ee", "codepoints": [8519] }, 470 | { "index": "efDot", "codepoints": [8786] }, 471 | { "index": "Efr", "codepoints": [120072] }, 472 | { "index": "efr", "codepoints": [120098] }, 473 | { "index": "eg", "codepoints": [10906] }, 474 | { "index": "Egrave", "codepoints": [200] }, 475 | { "index": "egrave", "codepoints": [232] }, 476 | { "index": "egs", "codepoints": [10902] }, 477 | { "index": "egsdot", "codepoints": [10904] }, 478 | { "index": "el", "codepoints": [10905] }, 479 | { "index": "Element", "codepoints": [8712] }, 480 | { "index": "elinters", "codepoints": [9191] }, 481 | { "index": "ell", "codepoints": [8467] }, 482 | { "index": "els", "codepoints": [10901] }, 483 | { "index": "elsdot", "codepoints": [10903] }, 484 | { "index": "Emacr", "codepoints": [274] }, 485 | { "index": "emacr", "codepoints": [275] }, 486 | { "index": "empty", "codepoints": [8709] }, 487 | { "index": "emptyset", "codepoints": [8709] }, 488 | { "index": "EmptySmallSquare", "codepoints": [9723] }, 489 | { "index": "emptyv", "codepoints": [8709] }, 490 | { "index": "EmptyVerySmallSquare", "codepoints": [9643] }, 491 | { "index": "emsp13", "codepoints": [8196] }, 492 | { "index": "emsp14", "codepoints": [8197] }, 493 | { "index": "emsp", "codepoints": [8195] }, 494 | { "index": "ENG", "codepoints": [330] }, 495 | { "index": "eng", "codepoints": [331] }, 496 | { "index": "ensp", "codepoints": [8194] }, 497 | { "index": "Eogon", "codepoints": [280] }, 498 | { "index": "eogon", "codepoints": [281] }, 499 | { "index": "Eopf", "codepoints": [120124] }, 500 | { "index": "eopf", "codepoints": [120150] }, 501 | { "index": "epar", "codepoints": [8917] }, 502 | { "index": "eparsl", "codepoints": [10723] }, 503 | { "index": "eplus", "codepoints": [10865] }, 504 | { "index": "epsi", "codepoints": [949] }, 505 | { "index": "Epsilon", "codepoints": [917] }, 506 | { "index": "epsilon", "codepoints": [949] }, 507 | { "index": "epsiv", "codepoints": [1013] }, 508 | { "index": "eqcirc", "codepoints": [8790] }, 509 | { "index": "eqcolon", "codepoints": [8789] }, 510 | { "index": "eqsim", "codepoints": [8770] }, 511 | { "index": "eqslantgtr", "codepoints": [10902] }, 512 | { "index": "eqslantless", "codepoints": [10901] }, 513 | { "index": "Equal", "codepoints": [10869] }, 514 | { "index": "equals", "codepoints": [61] }, 515 | { "index": "EqualTilde", "codepoints": [8770] }, 516 | { "index": "equest", "codepoints": [8799] }, 517 | { "index": "Equilibrium", "codepoints": [8652] }, 518 | { "index": "equiv", "codepoints": [8801] }, 519 | { "index": "equivDD", "codepoints": [10872] }, 520 | { "index": "eqvparsl", "codepoints": [10725] }, 521 | { "index": "erarr", "codepoints": [10609] }, 522 | { "index": "erDot", "codepoints": [8787] }, 523 | { "index": "escr", "codepoints": [8495] }, 524 | { "index": "Escr", "codepoints": [8496] }, 525 | { "index": "esdot", "codepoints": [8784] }, 526 | { "index": "Esim", "codepoints": [10867] }, 527 | { "index": "esim", "codepoints": [8770] }, 528 | { "index": "Eta", "codepoints": [919] }, 529 | { "index": "eta", "codepoints": [951] }, 530 | { "index": "ETH", "codepoints": [208] }, 531 | { "index": "eth", "codepoints": [240] }, 532 | { "index": "Euml", "codepoints": [203] }, 533 | { "index": "euml", "codepoints": [235] }, 534 | { "index": "euro", "codepoints": [8364] }, 535 | { "index": "excl", "codepoints": [33] }, 536 | { "index": "exist", "codepoints": [8707] }, 537 | { "index": "Exists", "codepoints": [8707] }, 538 | { "index": "expectation", "codepoints": [8496] }, 539 | { "index": "exponentiale", "codepoints": [8519] }, 540 | { "index": "ExponentialE", "codepoints": [8519] }, 541 | { "index": "fallingdotseq", "codepoints": [8786] }, 542 | { "index": "Fcy", "codepoints": [1060] }, 543 | { "index": "fcy", "codepoints": [1092] }, 544 | { "index": "female", "codepoints": [9792] }, 545 | { "index": "ffilig", "codepoints": [64259] }, 546 | { "index": "fflig", "codepoints": [64256] }, 547 | { "index": "ffllig", "codepoints": [64260] }, 548 | { "index": "Ffr", "codepoints": [120073] }, 549 | { "index": "ffr", "codepoints": [120099] }, 550 | { "index": "filig", "codepoints": [64257] }, 551 | { "index": "FilledSmallSquare", "codepoints": [9724] }, 552 | { "index": "FilledVerySmallSquare", "codepoints": [9642] }, 553 | { "index": "fjlig", "codepoints": [102, 106] }, 554 | { "index": "flat", "codepoints": [9837] }, 555 | { "index": "fllig", "codepoints": [64258] }, 556 | { "index": "fltns", "codepoints": [9649] }, 557 | { "index": "fnof", "codepoints": [402] }, 558 | { "index": "Fopf", "codepoints": [120125] }, 559 | { "index": "fopf", "codepoints": [120151] }, 560 | { "index": "forall", "codepoints": [8704] }, 561 | { "index": "ForAll", "codepoints": [8704] }, 562 | { "index": "fork", "codepoints": [8916] }, 563 | { "index": "forkv", "codepoints": [10969] }, 564 | { "index": "Fouriertrf", "codepoints": [8497] }, 565 | { "index": "fpartint", "codepoints": [10765] }, 566 | { "index": "frac12", "codepoints": [189] }, 567 | { "index": "frac13", "codepoints": [8531] }, 568 | { "index": "frac14", "codepoints": [188] }, 569 | { "index": "frac15", "codepoints": [8533] }, 570 | { "index": "frac16", "codepoints": [8537] }, 571 | { "index": "frac18", "codepoints": [8539] }, 572 | { "index": "frac23", "codepoints": [8532] }, 573 | { "index": "frac25", "codepoints": [8534] }, 574 | { "index": "frac34", "codepoints": [190] }, 575 | { "index": "frac35", "codepoints": [8535] }, 576 | { "index": "frac38", "codepoints": [8540] }, 577 | { "index": "frac45", "codepoints": [8536] }, 578 | { "index": "frac56", "codepoints": [8538] }, 579 | { "index": "frac58", "codepoints": [8541] }, 580 | { "index": "frac78", "codepoints": [8542] }, 581 | { "index": "frasl", "codepoints": [8260] }, 582 | { "index": "frown", "codepoints": [8994] }, 583 | { "index": "fscr", "codepoints": [119995] }, 584 | { "index": "Fscr", "codepoints": [8497] }, 585 | { "index": "gacute", "codepoints": [501] }, 586 | { "index": "Gamma", "codepoints": [915] }, 587 | { "index": "gamma", "codepoints": [947] }, 588 | { "index": "Gammad", "codepoints": [988] }, 589 | { "index": "gammad", "codepoints": [989] }, 590 | { "index": "gap", "codepoints": [10886] }, 591 | { "index": "Gbreve", "codepoints": [286] }, 592 | { "index": "gbreve", "codepoints": [287] }, 593 | { "index": "Gcedil", "codepoints": [290] }, 594 | { "index": "Gcirc", "codepoints": [284] }, 595 | { "index": "gcirc", "codepoints": [285] }, 596 | { "index": "Gcy", "codepoints": [1043] }, 597 | { "index": "gcy", "codepoints": [1075] }, 598 | { "index": "Gdot", "codepoints": [288] }, 599 | { "index": "gdot", "codepoints": [289] }, 600 | { "index": "ge", "codepoints": [8805] }, 601 | { "index": "gE", "codepoints": [8807] }, 602 | { "index": "gEl", "codepoints": [10892] }, 603 | { "index": "gel", "codepoints": [8923] }, 604 | { "index": "geq", "codepoints": [8805] }, 605 | { "index": "geqq", "codepoints": [8807] }, 606 | { "index": "geqslant", "codepoints": [10878] }, 607 | { "index": "gescc", "codepoints": [10921] }, 608 | { "index": "ges", "codepoints": [10878] }, 609 | { "index": "gesdot", "codepoints": [10880] }, 610 | { "index": "gesdoto", "codepoints": [10882] }, 611 | { "index": "gesdotol", "codepoints": [10884] }, 612 | { "index": "gesl", "codepoints": [8923, 65024] }, 613 | { "index": "gesles", "codepoints": [10900] }, 614 | { "index": "Gfr", "codepoints": [120074] }, 615 | { "index": "gfr", "codepoints": [120100] }, 616 | { "index": "gg", "codepoints": [8811] }, 617 | { "index": "Gg", "codepoints": [8921] }, 618 | { "index": "ggg", "codepoints": [8921] }, 619 | { "index": "gimel", "codepoints": [8503] }, 620 | { "index": "GJcy", "codepoints": [1027] }, 621 | { "index": "gjcy", "codepoints": [1107] }, 622 | { "index": "gla", "codepoints": [10917] }, 623 | { "index": "gl", "codepoints": [8823] }, 624 | { "index": "glE", "codepoints": [10898] }, 625 | { "index": "glj", "codepoints": [10916] }, 626 | { "index": "gnap", "codepoints": [10890] }, 627 | { "index": "gnapprox", "codepoints": [10890] }, 628 | { "index": "gne", "codepoints": [10888] }, 629 | { "index": "gnE", "codepoints": [8809] }, 630 | { "index": "gneq", "codepoints": [10888] }, 631 | { "index": "gneqq", "codepoints": [8809] }, 632 | { "index": "gnsim", "codepoints": [8935] }, 633 | { "index": "Gopf", "codepoints": [120126] }, 634 | { "index": "gopf", "codepoints": [120152] }, 635 | { "index": "grave", "codepoints": [96] }, 636 | { "index": "GreaterEqual", "codepoints": [8805] }, 637 | { "index": "GreaterEqualLess", "codepoints": [8923] }, 638 | { "index": "GreaterFullEqual", "codepoints": [8807] }, 639 | { "index": "GreaterGreater", "codepoints": [10914] }, 640 | { "index": "GreaterLess", "codepoints": [8823] }, 641 | { "index": "GreaterSlantEqual", "codepoints": [10878] }, 642 | { "index": "GreaterTilde", "codepoints": [8819] }, 643 | { "index": "Gscr", "codepoints": [119970] }, 644 | { "index": "gscr", "codepoints": [8458] }, 645 | { "index": "gsim", "codepoints": [8819] }, 646 | { "index": "gsime", "codepoints": [10894] }, 647 | { "index": "gsiml", "codepoints": [10896] }, 648 | { "index": "gtcc", "codepoints": [10919] }, 649 | { "index": "gtcir", "codepoints": [10874] }, 650 | { "index": "gt", "codepoints": [62] }, 651 | { "index": "GT", "codepoints": [62] }, 652 | { "index": "Gt", "codepoints": [8811] }, 653 | { "index": "gtdot", "codepoints": [8919] }, 654 | { "index": "gtlPar", "codepoints": [10645] }, 655 | { "index": "gtquest", "codepoints": [10876] }, 656 | { "index": "gtrapprox", "codepoints": [10886] }, 657 | { "index": "gtrarr", "codepoints": [10616] }, 658 | { "index": "gtrdot", "codepoints": [8919] }, 659 | { "index": "gtreqless", "codepoints": [8923] }, 660 | { "index": "gtreqqless", "codepoints": [10892] }, 661 | { "index": "gtrless", "codepoints": [8823] }, 662 | { "index": "gtrsim", "codepoints": [8819] }, 663 | { "index": "gvertneqq", "codepoints": [8809, 65024] }, 664 | { "index": "gvnE", "codepoints": [8809, 65024] }, 665 | { "index": "Hacek", "codepoints": [711] }, 666 | { "index": "hairsp", "codepoints": [8202] }, 667 | { "index": "half", "codepoints": [189] }, 668 | { "index": "hamilt", "codepoints": [8459] }, 669 | { "index": "HARDcy", "codepoints": [1066] }, 670 | { "index": "hardcy", "codepoints": [1098] }, 671 | { "index": "harrcir", "codepoints": [10568] }, 672 | { "index": "harr", "codepoints": [8596] }, 673 | { "index": "hArr", "codepoints": [8660] }, 674 | { "index": "harrw", "codepoints": [8621] }, 675 | { "index": "Hat", "codepoints": [94] }, 676 | { "index": "hbar", "codepoints": [8463] }, 677 | { "index": "Hcirc", "codepoints": [292] }, 678 | { "index": "hcirc", "codepoints": [293] }, 679 | { "index": "hearts", "codepoints": [9829] }, 680 | { "index": "heartsuit", "codepoints": [9829] }, 681 | { "index": "hellip", "codepoints": [8230] }, 682 | { "index": "hercon", "codepoints": [8889] }, 683 | { "index": "hfr", "codepoints": [120101] }, 684 | { "index": "Hfr", "codepoints": [8460] }, 685 | { "index": "HilbertSpace", "codepoints": [8459] }, 686 | { "index": "hksearow", "codepoints": [10533] }, 687 | { "index": "hkswarow", "codepoints": [10534] }, 688 | { "index": "hoarr", "codepoints": [8703] }, 689 | { "index": "homtht", "codepoints": [8763] }, 690 | { "index": "hookleftarrow", "codepoints": [8617] }, 691 | { "index": "hookrightarrow", "codepoints": [8618] }, 692 | { "index": "hopf", "codepoints": [120153] }, 693 | { "index": "Hopf", "codepoints": [8461] }, 694 | { "index": "horbar", "codepoints": [8213] }, 695 | { "index": "HorizontalLine", "codepoints": [9472] }, 696 | { "index": "hscr", "codepoints": [119997] }, 697 | { "index": "Hscr", "codepoints": [8459] }, 698 | { "index": "hslash", "codepoints": [8463] }, 699 | { "index": "Hstrok", "codepoints": [294] }, 700 | { "index": "hstrok", "codepoints": [295] }, 701 | { "index": "HumpDownHump", "codepoints": [8782] }, 702 | { "index": "HumpEqual", "codepoints": [8783] }, 703 | { "index": "hybull", "codepoints": [8259] }, 704 | { "index": "hyphen", "codepoints": [8208] }, 705 | { "index": "Iacute", "codepoints": [205] }, 706 | { "index": "iacute", "codepoints": [237] }, 707 | { "index": "ic", "codepoints": [8291] }, 708 | { "index": "Icirc", "codepoints": [206] }, 709 | { "index": "icirc", "codepoints": [238] }, 710 | { "index": "Icy", "codepoints": [1048] }, 711 | { "index": "icy", "codepoints": [1080] }, 712 | { "index": "Idot", "codepoints": [304] }, 713 | { "index": "IEcy", "codepoints": [1045] }, 714 | { "index": "iecy", "codepoints": [1077] }, 715 | { "index": "iexcl", "codepoints": [161] }, 716 | { "index": "iff", "codepoints": [8660] }, 717 | { "index": "ifr", "codepoints": [120102] }, 718 | { "index": "Ifr", "codepoints": [8465] }, 719 | { "index": "Igrave", "codepoints": [204] }, 720 | { "index": "igrave", "codepoints": [236] }, 721 | { "index": "ii", "codepoints": [8520] }, 722 | { "index": "iiiint", "codepoints": [10764] }, 723 | { "index": "iiint", "codepoints": [8749] }, 724 | { "index": "iinfin", "codepoints": [10716] }, 725 | { "index": "iiota", "codepoints": [8489] }, 726 | { "index": "IJlig", "codepoints": [306] }, 727 | { "index": "ijlig", "codepoints": [307] }, 728 | { "index": "Imacr", "codepoints": [298] }, 729 | { "index": "imacr", "codepoints": [299] }, 730 | { "index": "image", "codepoints": [8465] }, 731 | { "index": "ImaginaryI", "codepoints": [8520] }, 732 | { "index": "imagline", "codepoints": [8464] }, 733 | { "index": "imagpart", "codepoints": [8465] }, 734 | { "index": "imath", "codepoints": [305] }, 735 | { "index": "Im", "codepoints": [8465] }, 736 | { "index": "imof", "codepoints": [8887] }, 737 | { "index": "imped", "codepoints": [437] }, 738 | { "index": "Implies", "codepoints": [8658] }, 739 | { "index": "incare", "codepoints": [8453] }, 740 | { "index": "in", "codepoints": [8712] }, 741 | { "index": "infin", "codepoints": [8734] }, 742 | { "index": "infintie", "codepoints": [10717] }, 743 | { "index": "inodot", "codepoints": [305] }, 744 | { "index": "intcal", "codepoints": [8890] }, 745 | { "index": "int", "codepoints": [8747] }, 746 | { "index": "Int", "codepoints": [8748] }, 747 | { "index": "integers", "codepoints": [8484] }, 748 | { "index": "Integral", "codepoints": [8747] }, 749 | { "index": "intercal", "codepoints": [8890] }, 750 | { "index": "Intersection", "codepoints": [8898] }, 751 | { "index": "intlarhk", "codepoints": [10775] }, 752 | { "index": "intprod", "codepoints": [10812] }, 753 | { "index": "InvisibleComma", "codepoints": [8291] }, 754 | { "index": "InvisibleTimes", "codepoints": [8290] }, 755 | { "index": "IOcy", "codepoints": [1025] }, 756 | { "index": "iocy", "codepoints": [1105] }, 757 | { "index": "Iogon", "codepoints": [302] }, 758 | { "index": "iogon", "codepoints": [303] }, 759 | { "index": "Iopf", "codepoints": [120128] }, 760 | { "index": "iopf", "codepoints": [120154] }, 761 | { "index": "Iota", "codepoints": [921] }, 762 | { "index": "iota", "codepoints": [953] }, 763 | { "index": "iprod", "codepoints": [10812] }, 764 | { "index": "iquest", "codepoints": [191] }, 765 | { "index": "iscr", "codepoints": [119998] }, 766 | { "index": "Iscr", "codepoints": [8464] }, 767 | { "index": "isin", "codepoints": [8712] }, 768 | { "index": "isindot", "codepoints": [8949] }, 769 | { "index": "isinE", "codepoints": [8953] }, 770 | { "index": "isins", "codepoints": [8948] }, 771 | { "index": "isinsv", "codepoints": [8947] }, 772 | { "index": "isinv", "codepoints": [8712] }, 773 | { "index": "it", "codepoints": [8290] }, 774 | { "index": "Itilde", "codepoints": [296] }, 775 | { "index": "itilde", "codepoints": [297] }, 776 | { "index": "Iukcy", "codepoints": [1030] }, 777 | { "index": "iukcy", "codepoints": [1110] }, 778 | { "index": "Iuml", "codepoints": [207] }, 779 | { "index": "iuml", "codepoints": [239] }, 780 | { "index": "Jcirc", "codepoints": [308] }, 781 | { "index": "jcirc", "codepoints": [309] }, 782 | { "index": "Jcy", "codepoints": [1049] }, 783 | { "index": "jcy", "codepoints": [1081] }, 784 | { "index": "Jfr", "codepoints": [120077] }, 785 | { "index": "jfr", "codepoints": [120103] }, 786 | { "index": "jmath", "codepoints": [567] }, 787 | { "index": "Jopf", "codepoints": [120129] }, 788 | { "index": "jopf", "codepoints": [120155] }, 789 | { "index": "Jscr", "codepoints": [119973] }, 790 | { "index": "jscr", "codepoints": [119999] }, 791 | { "index": "Jsercy", "codepoints": [1032] }, 792 | { "index": "jsercy", "codepoints": [1112] }, 793 | { "index": "Jukcy", "codepoints": [1028] }, 794 | { "index": "jukcy", "codepoints": [1108] }, 795 | { "index": "Kappa", "codepoints": [922] }, 796 | { "index": "kappa", "codepoints": [954] }, 797 | { "index": "kappav", "codepoints": [1008] }, 798 | { "index": "Kcedil", "codepoints": [310] }, 799 | { "index": "kcedil", "codepoints": [311] }, 800 | { "index": "Kcy", "codepoints": [1050] }, 801 | { "index": "kcy", "codepoints": [1082] }, 802 | { "index": "Kfr", "codepoints": [120078] }, 803 | { "index": "kfr", "codepoints": [120104] }, 804 | { "index": "kgreen", "codepoints": [312] }, 805 | { "index": "KHcy", "codepoints": [1061] }, 806 | { "index": "khcy", "codepoints": [1093] }, 807 | { "index": "KJcy", "codepoints": [1036] }, 808 | { "index": "kjcy", "codepoints": [1116] }, 809 | { "index": "Kopf", "codepoints": [120130] }, 810 | { "index": "kopf", "codepoints": [120156] }, 811 | { "index": "Kscr", "codepoints": [119974] }, 812 | { "index": "kscr", "codepoints": [120000] }, 813 | { "index": "lAarr", "codepoints": [8666] }, 814 | { "index": "Lacute", "codepoints": [313] }, 815 | { "index": "lacute", "codepoints": [314] }, 816 | { "index": "laemptyv", "codepoints": [10676] }, 817 | { "index": "lagran", "codepoints": [8466] }, 818 | { "index": "Lambda", "codepoints": [923] }, 819 | { "index": "lambda", "codepoints": [955] }, 820 | { "index": "lang", "codepoints": [10216] }, 821 | { "index": "Lang", "codepoints": [10218] }, 822 | { "index": "langd", "codepoints": [10641] }, 823 | { "index": "langle", "codepoints": [10216] }, 824 | { "index": "lap", "codepoints": [10885] }, 825 | { "index": "Laplacetrf", "codepoints": [8466] }, 826 | { "index": "laquo", "codepoints": [171] }, 827 | { "index": "larrb", "codepoints": [8676] }, 828 | { "index": "larrbfs", "codepoints": [10527] }, 829 | { "index": "larr", "codepoints": [8592] }, 830 | { "index": "Larr", "codepoints": [8606] }, 831 | { "index": "lArr", "codepoints": [8656] }, 832 | { "index": "larrfs", "codepoints": [10525] }, 833 | { "index": "larrhk", "codepoints": [8617] }, 834 | { "index": "larrlp", "codepoints": [8619] }, 835 | { "index": "larrpl", "codepoints": [10553] }, 836 | { "index": "larrsim", "codepoints": [10611] }, 837 | { "index": "larrtl", "codepoints": [8610] }, 838 | { "index": "latail", "codepoints": [10521] }, 839 | { "index": "lAtail", "codepoints": [10523] }, 840 | { "index": "lat", "codepoints": [10923] }, 841 | { "index": "late", "codepoints": [10925] }, 842 | { "index": "lates", "codepoints": [10925, 65024] }, 843 | { "index": "lbarr", "codepoints": [10508] }, 844 | { "index": "lBarr", "codepoints": [10510] }, 845 | { "index": "lbbrk", "codepoints": [10098] }, 846 | { "index": "lbrace", "codepoints": [123] }, 847 | { "index": "lbrack", "codepoints": [91] }, 848 | { "index": "lbrke", "codepoints": [10635] }, 849 | { "index": "lbrksld", "codepoints": [10639] }, 850 | { "index": "lbrkslu", "codepoints": [10637] }, 851 | { "index": "Lcaron", "codepoints": [317] }, 852 | { "index": "lcaron", "codepoints": [318] }, 853 | { "index": "Lcedil", "codepoints": [315] }, 854 | { "index": "lcedil", "codepoints": [316] }, 855 | { "index": "lceil", "codepoints": [8968] }, 856 | { "index": "lcub", "codepoints": [123] }, 857 | { "index": "Lcy", "codepoints": [1051] }, 858 | { "index": "lcy", "codepoints": [1083] }, 859 | { "index": "ldca", "codepoints": [10550] }, 860 | { "index": "ldquo", "codepoints": [8220] }, 861 | { "index": "ldquor", "codepoints": [8222] }, 862 | { "index": "ldrdhar", "codepoints": [10599] }, 863 | { "index": "ldrushar", "codepoints": [10571] }, 864 | { "index": "ldsh", "codepoints": [8626] }, 865 | { "index": "le", "codepoints": [8804] }, 866 | { "index": "lE", "codepoints": [8806] }, 867 | { "index": "LeftAngleBracket", "codepoints": [10216] }, 868 | { "index": "LeftArrowBar", "codepoints": [8676] }, 869 | { "index": "leftarrow", "codepoints": [8592] }, 870 | { "index": "LeftArrow", "codepoints": [8592] }, 871 | { "index": "Leftarrow", "codepoints": [8656] }, 872 | { "index": "LeftArrowRightArrow", "codepoints": [8646] }, 873 | { "index": "leftarrowtail", "codepoints": [8610] }, 874 | { "index": "LeftCeiling", "codepoints": [8968] }, 875 | { "index": "LeftDoubleBracket", "codepoints": [10214] }, 876 | { "index": "LeftDownTeeVector", "codepoints": [10593] }, 877 | { "index": "LeftDownVectorBar", "codepoints": [10585] }, 878 | { "index": "LeftDownVector", "codepoints": [8643] }, 879 | { "index": "LeftFloor", "codepoints": [8970] }, 880 | { "index": "leftharpoondown", "codepoints": [8637] }, 881 | { "index": "leftharpoonup", "codepoints": [8636] }, 882 | { "index": "leftleftarrows", "codepoints": [8647] }, 883 | { "index": "leftrightarrow", "codepoints": [8596] }, 884 | { "index": "LeftRightArrow", "codepoints": [8596] }, 885 | { "index": "Leftrightarrow", "codepoints": [8660] }, 886 | { "index": "leftrightarrows", "codepoints": [8646] }, 887 | { "index": "leftrightharpoons", "codepoints": [8651] }, 888 | { "index": "leftrightsquigarrow", "codepoints": [8621] }, 889 | { "index": "LeftRightVector", "codepoints": [10574] }, 890 | { "index": "LeftTeeArrow", "codepoints": [8612] }, 891 | { "index": "LeftTee", "codepoints": [8867] }, 892 | { "index": "LeftTeeVector", "codepoints": [10586] }, 893 | { "index": "leftthreetimes", "codepoints": [8907] }, 894 | { "index": "LeftTriangleBar", "codepoints": [10703] }, 895 | { "index": "LeftTriangle", "codepoints": [8882] }, 896 | { "index": "LeftTriangleEqual", "codepoints": [8884] }, 897 | { "index": "LeftUpDownVector", "codepoints": [10577] }, 898 | { "index": "LeftUpTeeVector", "codepoints": [10592] }, 899 | { "index": "LeftUpVectorBar", "codepoints": [10584] }, 900 | { "index": "LeftUpVector", "codepoints": [8639] }, 901 | { "index": "LeftVectorBar", "codepoints": [10578] }, 902 | { "index": "LeftVector", "codepoints": [8636] }, 903 | { "index": "lEg", "codepoints": [10891] }, 904 | { "index": "leg", "codepoints": [8922] }, 905 | { "index": "leq", "codepoints": [8804] }, 906 | { "index": "leqq", "codepoints": [8806] }, 907 | { "index": "leqslant", "codepoints": [10877] }, 908 | { "index": "lescc", "codepoints": [10920] }, 909 | { "index": "les", "codepoints": [10877] }, 910 | { "index": "lesdot", "codepoints": [10879] }, 911 | { "index": "lesdoto", "codepoints": [10881] }, 912 | { "index": "lesdotor", "codepoints": [10883] }, 913 | { "index": "lesg", "codepoints": [8922, 65024] }, 914 | { "index": "lesges", "codepoints": [10899] }, 915 | { "index": "lessapprox", "codepoints": [10885] }, 916 | { "index": "lessdot", "codepoints": [8918] }, 917 | { "index": "lesseqgtr", "codepoints": [8922] }, 918 | { "index": "lesseqqgtr", "codepoints": [10891] }, 919 | { "index": "LessEqualGreater", "codepoints": [8922] }, 920 | { "index": "LessFullEqual", "codepoints": [8806] }, 921 | { "index": "LessGreater", "codepoints": [8822] }, 922 | { "index": "lessgtr", "codepoints": [8822] }, 923 | { "index": "LessLess", "codepoints": [10913] }, 924 | { "index": "lesssim", "codepoints": [8818] }, 925 | { "index": "LessSlantEqual", "codepoints": [10877] }, 926 | { "index": "LessTilde", "codepoints": [8818] }, 927 | { "index": "lfisht", "codepoints": [10620] }, 928 | { "index": "lfloor", "codepoints": [8970] }, 929 | { "index": "Lfr", "codepoints": [120079] }, 930 | { "index": "lfr", "codepoints": [120105] }, 931 | { "index": "lg", "codepoints": [8822] }, 932 | { "index": "lgE", "codepoints": [10897] }, 933 | { "index": "lHar", "codepoints": [10594] }, 934 | { "index": "lhard", "codepoints": [8637] }, 935 | { "index": "lharu", "codepoints": [8636] }, 936 | { "index": "lharul", "codepoints": [10602] }, 937 | { "index": "lhblk", "codepoints": [9604] }, 938 | { "index": "LJcy", "codepoints": [1033] }, 939 | { "index": "ljcy", "codepoints": [1113] }, 940 | { "index": "llarr", "codepoints": [8647] }, 941 | { "index": "ll", "codepoints": [8810] }, 942 | { "index": "Ll", "codepoints": [8920] }, 943 | { "index": "llcorner", "codepoints": [8990] }, 944 | { "index": "Lleftarrow", "codepoints": [8666] }, 945 | { "index": "llhard", "codepoints": [10603] }, 946 | { "index": "lltri", "codepoints": [9722] }, 947 | { "index": "Lmidot", "codepoints": [319] }, 948 | { "index": "lmidot", "codepoints": [320] }, 949 | { "index": "lmoustache", "codepoints": [9136] }, 950 | { "index": "lmoust", "codepoints": [9136] }, 951 | { "index": "lnap", "codepoints": [10889] }, 952 | { "index": "lnapprox", "codepoints": [10889] }, 953 | { "index": "lne", "codepoints": [10887] }, 954 | { "index": "lnE", "codepoints": [8808] }, 955 | { "index": "lneq", "codepoints": [10887] }, 956 | { "index": "lneqq", "codepoints": [8808] }, 957 | { "index": "lnsim", "codepoints": [8934] }, 958 | { "index": "loang", "codepoints": [10220] }, 959 | { "index": "loarr", "codepoints": [8701] }, 960 | { "index": "lobrk", "codepoints": [10214] }, 961 | { "index": "longleftarrow", "codepoints": [10229] }, 962 | { "index": "LongLeftArrow", "codepoints": [10229] }, 963 | { "index": "Longleftarrow", "codepoints": [10232] }, 964 | { "index": "longleftrightarrow", "codepoints": [10231] }, 965 | { "index": "LongLeftRightArrow", "codepoints": [10231] }, 966 | { "index": "Longleftrightarrow", "codepoints": [10234] }, 967 | { "index": "longmapsto", "codepoints": [10236] }, 968 | { "index": "longrightarrow", "codepoints": [10230] }, 969 | { "index": "LongRightArrow", "codepoints": [10230] }, 970 | { "index": "Longrightarrow", "codepoints": [10233] }, 971 | { "index": "looparrowleft", "codepoints": [8619] }, 972 | { "index": "looparrowright", "codepoints": [8620] }, 973 | { "index": "lopar", "codepoints": [10629] }, 974 | { "index": "Lopf", "codepoints": [120131] }, 975 | { "index": "lopf", "codepoints": [120157] }, 976 | { "index": "loplus", "codepoints": [10797] }, 977 | { "index": "lotimes", "codepoints": [10804] }, 978 | { "index": "lowast", "codepoints": [8727] }, 979 | { "index": "lowbar", "codepoints": [95] }, 980 | { "index": "LowerLeftArrow", "codepoints": [8601] }, 981 | { "index": "LowerRightArrow", "codepoints": [8600] }, 982 | { "index": "loz", "codepoints": [9674] }, 983 | { "index": "lozenge", "codepoints": [9674] }, 984 | { "index": "lozf", "codepoints": [10731] }, 985 | { "index": "lpar", "codepoints": [40] }, 986 | { "index": "lparlt", "codepoints": [10643] }, 987 | { "index": "lrarr", "codepoints": [8646] }, 988 | { "index": "lrcorner", "codepoints": [8991] }, 989 | { "index": "lrhar", "codepoints": [8651] }, 990 | { "index": "lrhard", "codepoints": [10605] }, 991 | { "index": "lrm", "codepoints": [8206] }, 992 | { "index": "lrtri", "codepoints": [8895] }, 993 | { "index": "lsaquo", "codepoints": [8249] }, 994 | { "index": "lscr", "codepoints": [120001] }, 995 | { "index": "Lscr", "codepoints": [8466] }, 996 | { "index": "lsh", "codepoints": [8624] }, 997 | { "index": "Lsh", "codepoints": [8624] }, 998 | { "index": "lsim", "codepoints": [8818] }, 999 | { "index": "lsime", "codepoints": [10893] }, 1000 | { "index": "lsimg", "codepoints": [10895] }, 1001 | { "index": "lsqb", "codepoints": [91] }, 1002 | { "index": "lsquo", "codepoints": [8216] }, 1003 | { "index": "lsquor", "codepoints": [8218] }, 1004 | { "index": "Lstrok", "codepoints": [321] }, 1005 | { "index": "lstrok", "codepoints": [322] }, 1006 | { "index": "ltcc", "codepoints": [10918] }, 1007 | { "index": "ltcir", "codepoints": [10873] }, 1008 | { "index": "lt", "codepoints": [60] }, 1009 | { "index": "LT", "codepoints": [60] }, 1010 | { "index": "Lt", "codepoints": [8810] }, 1011 | { "index": "ltdot", "codepoints": [8918] }, 1012 | { "index": "lthree", "codepoints": [8907] }, 1013 | { "index": "ltimes", "codepoints": [8905] }, 1014 | { "index": "ltlarr", "codepoints": [10614] }, 1015 | { "index": "ltquest", "codepoints": [10875] }, 1016 | { "index": "ltri", "codepoints": [9667] }, 1017 | { "index": "ltrie", "codepoints": [8884] }, 1018 | { "index": "ltrif", "codepoints": [9666] }, 1019 | { "index": "ltrPar", "codepoints": [10646] }, 1020 | { "index": "lurdshar", "codepoints": [10570] }, 1021 | { "index": "luruhar", "codepoints": [10598] }, 1022 | { "index": "lvertneqq", "codepoints": [8808, 65024] }, 1023 | { "index": "lvnE", "codepoints": [8808, 65024] }, 1024 | { "index": "macr", "codepoints": [175] }, 1025 | { "index": "male", "codepoints": [9794] }, 1026 | { "index": "malt", "codepoints": [10016] }, 1027 | { "index": "maltese", "codepoints": [10016] }, 1028 | { "index": "Map", "codepoints": [10501] }, 1029 | { "index": "map", "codepoints": [8614] }, 1030 | { "index": "mapsto", "codepoints": [8614] }, 1031 | { "index": "mapstodown", "codepoints": [8615] }, 1032 | { "index": "mapstoleft", "codepoints": [8612] }, 1033 | { "index": "mapstoup", "codepoints": [8613] }, 1034 | { "index": "marker", "codepoints": [9646] }, 1035 | { "index": "mcomma", "codepoints": [10793] }, 1036 | { "index": "Mcy", "codepoints": [1052] }, 1037 | { "index": "mcy", "codepoints": [1084] }, 1038 | { "index": "mdash", "codepoints": [8212] }, 1039 | { "index": "mDDot", "codepoints": [8762] }, 1040 | { "index": "measuredangle", "codepoints": [8737] }, 1041 | { "index": "MediumSpace", "codepoints": [8287] }, 1042 | { "index": "Mellintrf", "codepoints": [8499] }, 1043 | { "index": "Mfr", "codepoints": [120080] }, 1044 | { "index": "mfr", "codepoints": [120106] }, 1045 | { "index": "mho", "codepoints": [8487] }, 1046 | { "index": "micro", "codepoints": [181] }, 1047 | { "index": "midast", "codepoints": [42] }, 1048 | { "index": "midcir", "codepoints": [10992] }, 1049 | { "index": "mid", "codepoints": [8739] }, 1050 | { "index": "middot", "codepoints": [183] }, 1051 | { "index": "minusb", "codepoints": [8863] }, 1052 | { "index": "minus", "codepoints": [8722] }, 1053 | { "index": "minusd", "codepoints": [8760] }, 1054 | { "index": "minusdu", "codepoints": [10794] }, 1055 | { "index": "MinusPlus", "codepoints": [8723] }, 1056 | { "index": "mlcp", "codepoints": [10971] }, 1057 | { "index": "mldr", "codepoints": [8230] }, 1058 | { "index": "mnplus", "codepoints": [8723] }, 1059 | { "index": "models", "codepoints": [8871] }, 1060 | { "index": "Mopf", "codepoints": [120132] }, 1061 | { "index": "mopf", "codepoints": [120158] }, 1062 | { "index": "mp", "codepoints": [8723] }, 1063 | { "index": "mscr", "codepoints": [120002] }, 1064 | { "index": "Mscr", "codepoints": [8499] }, 1065 | { "index": "mstpos", "codepoints": [8766] }, 1066 | { "index": "Mu", "codepoints": [924] }, 1067 | { "index": "mu", "codepoints": [956] }, 1068 | { "index": "multimap", "codepoints": [8888] }, 1069 | { "index": "mumap", "codepoints": [8888] }, 1070 | { "index": "nabla", "codepoints": [8711] }, 1071 | { "index": "Nacute", "codepoints": [323] }, 1072 | { "index": "nacute", "codepoints": [324] }, 1073 | { "index": "nang", "codepoints": [8736, 8402] }, 1074 | { "index": "nap", "codepoints": [8777] }, 1075 | { "index": "napE", "codepoints": [10864, 824] }, 1076 | { "index": "napid", "codepoints": [8779, 824] }, 1077 | { "index": "napos", "codepoints": [329] }, 1078 | { "index": "napprox", "codepoints": [8777] }, 1079 | { "index": "natural", "codepoints": [9838] }, 1080 | { "index": "naturals", "codepoints": [8469] }, 1081 | { "index": "natur", "codepoints": [9838] }, 1082 | { "index": "nbsp", "codepoints": [160] }, 1083 | { "index": "nbump", "codepoints": [8782, 824] }, 1084 | { "index": "nbumpe", "codepoints": [8783, 824] }, 1085 | { "index": "ncap", "codepoints": [10819] }, 1086 | { "index": "Ncaron", "codepoints": [327] }, 1087 | { "index": "ncaron", "codepoints": [328] }, 1088 | { "index": "Ncedil", "codepoints": [325] }, 1089 | { "index": "ncedil", "codepoints": [326] }, 1090 | { "index": "ncong", "codepoints": [8775] }, 1091 | { "index": "ncongdot", "codepoints": [10861, 824] }, 1092 | { "index": "ncup", "codepoints": [10818] }, 1093 | { "index": "Ncy", "codepoints": [1053] }, 1094 | { "index": "ncy", "codepoints": [1085] }, 1095 | { "index": "ndash", "codepoints": [8211] }, 1096 | { "index": "nearhk", "codepoints": [10532] }, 1097 | { "index": "nearr", "codepoints": [8599] }, 1098 | { "index": "neArr", "codepoints": [8663] }, 1099 | { "index": "nearrow", "codepoints": [8599] }, 1100 | { "index": "ne", "codepoints": [8800] }, 1101 | { "index": "nedot", "codepoints": [8784, 824] }, 1102 | { "index": "NegativeMediumSpace", "codepoints": [8203] }, 1103 | { "index": "NegativeThickSpace", "codepoints": [8203] }, 1104 | { "index": "NegativeThinSpace", "codepoints": [8203] }, 1105 | { "index": "NegativeVeryThinSpace", "codepoints": [8203] }, 1106 | { "index": "nequiv", "codepoints": [8802] }, 1107 | { "index": "nesear", "codepoints": [10536] }, 1108 | { "index": "nesim", "codepoints": [8770, 824] }, 1109 | { "index": "NestedGreaterGreater", "codepoints": [8811] }, 1110 | { "index": "NestedLessLess", "codepoints": [8810] }, 1111 | { "index": "NewLine", "codepoints": [10] }, 1112 | { "index": "nexist", "codepoints": [8708] }, 1113 | { "index": "nexists", "codepoints": [8708] }, 1114 | { "index": "Nfr", "codepoints": [120081] }, 1115 | { "index": "nfr", "codepoints": [120107] }, 1116 | { "index": "ngE", "codepoints": [8807, 824] }, 1117 | { "index": "nge", "codepoints": [8817] }, 1118 | { "index": "ngeq", "codepoints": [8817] }, 1119 | { "index": "ngeqq", "codepoints": [8807, 824] }, 1120 | { "index": "ngeqslant", "codepoints": [10878, 824] }, 1121 | { "index": "nges", "codepoints": [10878, 824] }, 1122 | { "index": "nGg", "codepoints": [8921, 824] }, 1123 | { "index": "ngsim", "codepoints": [8821] }, 1124 | { "index": "nGt", "codepoints": [8811, 8402] }, 1125 | { "index": "ngt", "codepoints": [8815] }, 1126 | { "index": "ngtr", "codepoints": [8815] }, 1127 | { "index": "nGtv", "codepoints": [8811, 824] }, 1128 | { "index": "nharr", "codepoints": [8622] }, 1129 | { "index": "nhArr", "codepoints": [8654] }, 1130 | { "index": "nhpar", "codepoints": [10994] }, 1131 | { "index": "ni", "codepoints": [8715] }, 1132 | { "index": "nis", "codepoints": [8956] }, 1133 | { "index": "nisd", "codepoints": [8954] }, 1134 | { "index": "niv", "codepoints": [8715] }, 1135 | { "index": "NJcy", "codepoints": [1034] }, 1136 | { "index": "njcy", "codepoints": [1114] }, 1137 | { "index": "nlarr", "codepoints": [8602] }, 1138 | { "index": "nlArr", "codepoints": [8653] }, 1139 | { "index": "nldr", "codepoints": [8229] }, 1140 | { "index": "nlE", "codepoints": [8806, 824] }, 1141 | { "index": "nle", "codepoints": [8816] }, 1142 | { "index": "nleftarrow", "codepoints": [8602] }, 1143 | { "index": "nLeftarrow", "codepoints": [8653] }, 1144 | { "index": "nleftrightarrow", "codepoints": [8622] }, 1145 | { "index": "nLeftrightarrow", "codepoints": [8654] }, 1146 | { "index": "nleq", "codepoints": [8816] }, 1147 | { "index": "nleqq", "codepoints": [8806, 824] }, 1148 | { "index": "nleqslant", "codepoints": [10877, 824] }, 1149 | { "index": "nles", "codepoints": [10877, 824] }, 1150 | { "index": "nless", "codepoints": [8814] }, 1151 | { "index": "nLl", "codepoints": [8920, 824] }, 1152 | { "index": "nlsim", "codepoints": [8820] }, 1153 | { "index": "nLt", "codepoints": [8810, 8402] }, 1154 | { "index": "nlt", "codepoints": [8814] }, 1155 | { "index": "nltri", "codepoints": [8938] }, 1156 | { "index": "nltrie", "codepoints": [8940] }, 1157 | { "index": "nLtv", "codepoints": [8810, 824] }, 1158 | { "index": "nmid", "codepoints": [8740] }, 1159 | { "index": "NoBreak", "codepoints": [8288] }, 1160 | { "index": "NonBreakingSpace", "codepoints": [160] }, 1161 | { "index": "nopf", "codepoints": [120159] }, 1162 | { "index": "Nopf", "codepoints": [8469] }, 1163 | { "index": "Not", "codepoints": [10988] }, 1164 | { "index": "not", "codepoints": [172] }, 1165 | { "index": "NotCongruent", "codepoints": [8802] }, 1166 | { "index": "NotCupCap", "codepoints": [8813] }, 1167 | { "index": "NotDoubleVerticalBar", "codepoints": [8742] }, 1168 | { "index": "NotElement", "codepoints": [8713] }, 1169 | { "index": "NotEqual", "codepoints": [8800] }, 1170 | { "index": "NotEqualTilde", "codepoints": [8770, 824] }, 1171 | { "index": "NotExists", "codepoints": [8708] }, 1172 | { "index": "NotGreater", "codepoints": [8815] }, 1173 | { "index": "NotGreaterEqual", "codepoints": [8817] }, 1174 | { "index": "NotGreaterFullEqual", "codepoints": [8807, 824] }, 1175 | { "index": "NotGreaterGreater", "codepoints": [8811, 824] }, 1176 | { "index": "NotGreaterLess", "codepoints": [8825] }, 1177 | { "index": "NotGreaterSlantEqual", "codepoints": [10878, 824] }, 1178 | { "index": "NotGreaterTilde", "codepoints": [8821] }, 1179 | { "index": "NotHumpDownHump", "codepoints": [8782, 824] }, 1180 | { "index": "NotHumpEqual", "codepoints": [8783, 824] }, 1181 | { "index": "notin", "codepoints": [8713] }, 1182 | { "index": "notindot", "codepoints": [8949, 824] }, 1183 | { "index": "notinE", "codepoints": [8953, 824] }, 1184 | { "index": "notinva", "codepoints": [8713] }, 1185 | { "index": "notinvb", "codepoints": [8951] }, 1186 | { "index": "notinvc", "codepoints": [8950] }, 1187 | { "index": "NotLeftTriangleBar", "codepoints": [10703, 824] }, 1188 | { "index": "NotLeftTriangle", "codepoints": [8938] }, 1189 | { "index": "NotLeftTriangleEqual", "codepoints": [8940] }, 1190 | { "index": "NotLess", "codepoints": [8814] }, 1191 | { "index": "NotLessEqual", "codepoints": [8816] }, 1192 | { "index": "NotLessGreater", "codepoints": [8824] }, 1193 | { "index": "NotLessLess", "codepoints": [8810, 824] }, 1194 | { "index": "NotLessSlantEqual", "codepoints": [10877, 824] }, 1195 | { "index": "NotLessTilde", "codepoints": [8820] }, 1196 | { "index": "NotNestedGreaterGreater", "codepoints": [10914, 824] }, 1197 | { "index": "NotNestedLessLess", "codepoints": [10913, 824] }, 1198 | { "index": "notni", "codepoints": [8716] }, 1199 | { "index": "notniva", "codepoints": [8716] }, 1200 | { "index": "notnivb", "codepoints": [8958] }, 1201 | { "index": "notnivc", "codepoints": [8957] }, 1202 | { "index": "NotPrecedes", "codepoints": [8832] }, 1203 | { "index": "NotPrecedesEqual", "codepoints": [10927, 824] }, 1204 | { "index": "NotPrecedesSlantEqual", "codepoints": [8928] }, 1205 | { "index": "NotReverseElement", "codepoints": [8716] }, 1206 | { "index": "NotRightTriangleBar", "codepoints": [10704, 824] }, 1207 | { "index": "NotRightTriangle", "codepoints": [8939] }, 1208 | { "index": "NotRightTriangleEqual", "codepoints": [8941] }, 1209 | { "index": "NotSquareSubset", "codepoints": [8847, 824] }, 1210 | { "index": "NotSquareSubsetEqual", "codepoints": [8930] }, 1211 | { "index": "NotSquareSuperset", "codepoints": [8848, 824] }, 1212 | { "index": "NotSquareSupersetEqual", "codepoints": [8931] }, 1213 | { "index": "NotSubset", "codepoints": [8834, 8402] }, 1214 | { "index": "NotSubsetEqual", "codepoints": [8840] }, 1215 | { "index": "NotSucceeds", "codepoints": [8833] }, 1216 | { "index": "NotSucceedsEqual", "codepoints": [10928, 824] }, 1217 | { "index": "NotSucceedsSlantEqual", "codepoints": [8929] }, 1218 | { "index": "NotSucceedsTilde", "codepoints": [8831, 824] }, 1219 | { "index": "NotSuperset", "codepoints": [8835, 8402] }, 1220 | { "index": "NotSupersetEqual", "codepoints": [8841] }, 1221 | { "index": "NotTilde", "codepoints": [8769] }, 1222 | { "index": "NotTildeEqual", "codepoints": [8772] }, 1223 | { "index": "NotTildeFullEqual", "codepoints": [8775] }, 1224 | { "index": "NotTildeTilde", "codepoints": [8777] }, 1225 | { "index": "NotVerticalBar", "codepoints": [8740] }, 1226 | { "index": "nparallel", "codepoints": [8742] }, 1227 | { "index": "npar", "codepoints": [8742] }, 1228 | { "index": "nparsl", "codepoints": [11005, 8421] }, 1229 | { "index": "npart", "codepoints": [8706, 824] }, 1230 | { "index": "npolint", "codepoints": [10772] }, 1231 | { "index": "npr", "codepoints": [8832] }, 1232 | { "index": "nprcue", "codepoints": [8928] }, 1233 | { "index": "nprec", "codepoints": [8832] }, 1234 | { "index": "npreceq", "codepoints": [10927, 824] }, 1235 | { "index": "npre", "codepoints": [10927, 824] }, 1236 | { "index": "nrarrc", "codepoints": [10547, 824] }, 1237 | { "index": "nrarr", "codepoints": [8603] }, 1238 | { "index": "nrArr", "codepoints": [8655] }, 1239 | { "index": "nrarrw", "codepoints": [8605, 824] }, 1240 | { "index": "nrightarrow", "codepoints": [8603] }, 1241 | { "index": "nRightarrow", "codepoints": [8655] }, 1242 | { "index": "nrtri", "codepoints": [8939] }, 1243 | { "index": "nrtrie", "codepoints": [8941] }, 1244 | { "index": "nsc", "codepoints": [8833] }, 1245 | { "index": "nsccue", "codepoints": [8929] }, 1246 | { "index": "nsce", "codepoints": [10928, 824] }, 1247 | { "index": "Nscr", "codepoints": [119977] }, 1248 | { "index": "nscr", "codepoints": [120003] }, 1249 | { "index": "nshortmid", "codepoints": [8740] }, 1250 | { "index": "nshortparallel", "codepoints": [8742] }, 1251 | { "index": "nsim", "codepoints": [8769] }, 1252 | { "index": "nsime", "codepoints": [8772] }, 1253 | { "index": "nsimeq", "codepoints": [8772] }, 1254 | { "index": "nsmid", "codepoints": [8740] }, 1255 | { "index": "nspar", "codepoints": [8742] }, 1256 | { "index": "nsqsube", "codepoints": [8930] }, 1257 | { "index": "nsqsupe", "codepoints": [8931] }, 1258 | { "index": "nsub", "codepoints": [8836] }, 1259 | { "index": "nsubE", "codepoints": [10949, 824] }, 1260 | { "index": "nsube", "codepoints": [8840] }, 1261 | { "index": "nsubset", "codepoints": [8834, 8402] }, 1262 | { "index": "nsubseteq", "codepoints": [8840] }, 1263 | { "index": "nsubseteqq", "codepoints": [10949, 824] }, 1264 | { "index": "nsucc", "codepoints": [8833] }, 1265 | { "index": "nsucceq", "codepoints": [10928, 824] }, 1266 | { "index": "nsup", "codepoints": [8837] }, 1267 | { "index": "nsupE", "codepoints": [10950, 824] }, 1268 | { "index": "nsupe", "codepoints": [8841] }, 1269 | { "index": "nsupset", "codepoints": [8835, 8402] }, 1270 | { "index": "nsupseteq", "codepoints": [8841] }, 1271 | { "index": "nsupseteqq", "codepoints": [10950, 824] }, 1272 | { "index": "ntgl", "codepoints": [8825] }, 1273 | { "index": "Ntilde", "codepoints": [209] }, 1274 | { "index": "ntilde", "codepoints": [241] }, 1275 | { "index": "ntlg", "codepoints": [8824] }, 1276 | { "index": "ntriangleleft", "codepoints": [8938] }, 1277 | { "index": "ntrianglelefteq", "codepoints": [8940] }, 1278 | { "index": "ntriangleright", "codepoints": [8939] }, 1279 | { "index": "ntrianglerighteq", "codepoints": [8941] }, 1280 | { "index": "Nu", "codepoints": [925] }, 1281 | { "index": "nu", "codepoints": [957] }, 1282 | { "index": "num", "codepoints": [35] }, 1283 | { "index": "numero", "codepoints": [8470] }, 1284 | { "index": "numsp", "codepoints": [8199] }, 1285 | { "index": "nvap", "codepoints": [8781, 8402] }, 1286 | { "index": "nvdash", "codepoints": [8876] }, 1287 | { "index": "nvDash", "codepoints": [8877] }, 1288 | { "index": "nVdash", "codepoints": [8878] }, 1289 | { "index": "nVDash", "codepoints": [8879] }, 1290 | { "index": "nvge", "codepoints": [8805, 8402] }, 1291 | { "index": "nvgt", "codepoints": [62, 8402] }, 1292 | { "index": "nvHarr", "codepoints": [10500] }, 1293 | { "index": "nvinfin", "codepoints": [10718] }, 1294 | { "index": "nvlArr", "codepoints": [10498] }, 1295 | { "index": "nvle", "codepoints": [8804, 8402] }, 1296 | { "index": "nvlt", "codepoints": [60, 8402] }, 1297 | { "index": "nvltrie", "codepoints": [8884, 8402] }, 1298 | { "index": "nvrArr", "codepoints": [10499] }, 1299 | { "index": "nvrtrie", "codepoints": [8885, 8402] }, 1300 | { "index": "nvsim", "codepoints": [8764, 8402] }, 1301 | { "index": "nwarhk", "codepoints": [10531] }, 1302 | { "index": "nwarr", "codepoints": [8598] }, 1303 | { "index": "nwArr", "codepoints": [8662] }, 1304 | { "index": "nwarrow", "codepoints": [8598] }, 1305 | { "index": "nwnear", "codepoints": [10535] }, 1306 | { "index": "Oacute", "codepoints": [211] }, 1307 | { "index": "oacute", "codepoints": [243] }, 1308 | { "index": "oast", "codepoints": [8859] }, 1309 | { "index": "Ocirc", "codepoints": [212] }, 1310 | { "index": "ocirc", "codepoints": [244] }, 1311 | { "index": "ocir", "codepoints": [8858] }, 1312 | { "index": "Ocy", "codepoints": [1054] }, 1313 | { "index": "ocy", "codepoints": [1086] }, 1314 | { "index": "odash", "codepoints": [8861] }, 1315 | { "index": "Odblac", "codepoints": [336] }, 1316 | { "index": "odblac", "codepoints": [337] }, 1317 | { "index": "odiv", "codepoints": [10808] }, 1318 | { "index": "odot", "codepoints": [8857] }, 1319 | { "index": "odsold", "codepoints": [10684] }, 1320 | { "index": "OElig", "codepoints": [338] }, 1321 | { "index": "oelig", "codepoints": [339] }, 1322 | { "index": "ofcir", "codepoints": [10687] }, 1323 | { "index": "Ofr", "codepoints": [120082] }, 1324 | { "index": "ofr", "codepoints": [120108] }, 1325 | { "index": "ogon", "codepoints": [731] }, 1326 | { "index": "Ograve", "codepoints": [210] }, 1327 | { "index": "ograve", "codepoints": [242] }, 1328 | { "index": "ogt", "codepoints": [10689] }, 1329 | { "index": "ohbar", "codepoints": [10677] }, 1330 | { "index": "ohm", "codepoints": [937] }, 1331 | { "index": "oint", "codepoints": [8750] }, 1332 | { "index": "olarr", "codepoints": [8634] }, 1333 | { "index": "olcir", "codepoints": [10686] }, 1334 | { "index": "olcross", "codepoints": [10683] }, 1335 | { "index": "oline", "codepoints": [8254] }, 1336 | { "index": "olt", "codepoints": [10688] }, 1337 | { "index": "Omacr", "codepoints": [332] }, 1338 | { "index": "omacr", "codepoints": [333] }, 1339 | { "index": "Omega", "codepoints": [937] }, 1340 | { "index": "omega", "codepoints": [969] }, 1341 | { "index": "Omicron", "codepoints": [927] }, 1342 | { "index": "omicron", "codepoints": [959] }, 1343 | { "index": "omid", "codepoints": [10678] }, 1344 | { "index": "ominus", "codepoints": [8854] }, 1345 | { "index": "Oopf", "codepoints": [120134] }, 1346 | { "index": "oopf", "codepoints": [120160] }, 1347 | { "index": "opar", "codepoints": [10679] }, 1348 | { "index": "OpenCurlyDoubleQuote", "codepoints": [8220] }, 1349 | { "index": "OpenCurlyQuote", "codepoints": [8216] }, 1350 | { "index": "operp", "codepoints": [10681] }, 1351 | { "index": "oplus", "codepoints": [8853] }, 1352 | { "index": "orarr", "codepoints": [8635] }, 1353 | { "index": "Or", "codepoints": [10836] }, 1354 | { "index": "or", "codepoints": [8744] }, 1355 | { "index": "ord", "codepoints": [10845] }, 1356 | { "index": "order", "codepoints": [8500] }, 1357 | { "index": "orderof", "codepoints": [8500] }, 1358 | { "index": "ordf", "codepoints": [170] }, 1359 | { "index": "ordm", "codepoints": [186] }, 1360 | { "index": "origof", "codepoints": [8886] }, 1361 | { "index": "oror", "codepoints": [10838] }, 1362 | { "index": "orslope", "codepoints": [10839] }, 1363 | { "index": "orv", "codepoints": [10843] }, 1364 | { "index": "oS", "codepoints": [9416] }, 1365 | { "index": "Oscr", "codepoints": [119978] }, 1366 | { "index": "oscr", "codepoints": [8500] }, 1367 | { "index": "Oslash", "codepoints": [216] }, 1368 | { "index": "oslash", "codepoints": [248] }, 1369 | { "index": "osol", "codepoints": [8856] }, 1370 | { "index": "Otilde", "codepoints": [213] }, 1371 | { "index": "otilde", "codepoints": [245] }, 1372 | { "index": "otimesas", "codepoints": [10806] }, 1373 | { "index": "Otimes", "codepoints": [10807] }, 1374 | { "index": "otimes", "codepoints": [8855] }, 1375 | { "index": "Ouml", "codepoints": [214] }, 1376 | { "index": "ouml", "codepoints": [246] }, 1377 | { "index": "ovbar", "codepoints": [9021] }, 1378 | { "index": "OverBar", "codepoints": [8254] }, 1379 | { "index": "OverBrace", "codepoints": [9182] }, 1380 | { "index": "OverBracket", "codepoints": [9140] }, 1381 | { "index": "OverParenthesis", "codepoints": [9180] }, 1382 | { "index": "para", "codepoints": [182] }, 1383 | { "index": "parallel", "codepoints": [8741] }, 1384 | { "index": "par", "codepoints": [8741] }, 1385 | { "index": "parsim", "codepoints": [10995] }, 1386 | { "index": "parsl", "codepoints": [11005] }, 1387 | { "index": "part", "codepoints": [8706] }, 1388 | { "index": "PartialD", "codepoints": [8706] }, 1389 | { "index": "Pcy", "codepoints": [1055] }, 1390 | { "index": "pcy", "codepoints": [1087] }, 1391 | { "index": "percnt", "codepoints": [37] }, 1392 | { "index": "period", "codepoints": [46] }, 1393 | { "index": "permil", "codepoints": [8240] }, 1394 | { "index": "perp", "codepoints": [8869] }, 1395 | { "index": "pertenk", "codepoints": [8241] }, 1396 | { "index": "Pfr", "codepoints": [120083] }, 1397 | { "index": "pfr", "codepoints": [120109] }, 1398 | { "index": "Phi", "codepoints": [934] }, 1399 | { "index": "phi", "codepoints": [966] }, 1400 | { "index": "phiv", "codepoints": [981] }, 1401 | { "index": "phmmat", "codepoints": [8499] }, 1402 | { "index": "phone", "codepoints": [9742] }, 1403 | { "index": "Pi", "codepoints": [928] }, 1404 | { "index": "pi", "codepoints": [960] }, 1405 | { "index": "pitchfork", "codepoints": [8916] }, 1406 | { "index": "piv", "codepoints": [982] }, 1407 | { "index": "planck", "codepoints": [8463] }, 1408 | { "index": "planckh", "codepoints": [8462] }, 1409 | { "index": "plankv", "codepoints": [8463] }, 1410 | { "index": "plusacir", "codepoints": [10787] }, 1411 | { "index": "plusb", "codepoints": [8862] }, 1412 | { "index": "pluscir", "codepoints": [10786] }, 1413 | { "index": "plus", "codepoints": [43] }, 1414 | { "index": "plusdo", "codepoints": [8724] }, 1415 | { "index": "plusdu", "codepoints": [10789] }, 1416 | { "index": "pluse", "codepoints": [10866] }, 1417 | { "index": "PlusMinus", "codepoints": [177] }, 1418 | { "index": "plusmn", "codepoints": [177] }, 1419 | { "index": "plussim", "codepoints": [10790] }, 1420 | { "index": "plustwo", "codepoints": [10791] }, 1421 | { "index": "pm", "codepoints": [177] }, 1422 | { "index": "Poincareplane", "codepoints": [8460] }, 1423 | { "index": "pointint", "codepoints": [10773] }, 1424 | { "index": "popf", "codepoints": [120161] }, 1425 | { "index": "Popf", "codepoints": [8473] }, 1426 | { "index": "pound", "codepoints": [163] }, 1427 | { "index": "prap", "codepoints": [10935] }, 1428 | { "index": "Pr", "codepoints": [10939] }, 1429 | { "index": "pr", "codepoints": [8826] }, 1430 | { "index": "prcue", "codepoints": [8828] }, 1431 | { "index": "precapprox", "codepoints": [10935] }, 1432 | { "index": "prec", "codepoints": [8826] }, 1433 | { "index": "preccurlyeq", "codepoints": [8828] }, 1434 | { "index": "Precedes", "codepoints": [8826] }, 1435 | { "index": "PrecedesEqual", "codepoints": [10927] }, 1436 | { "index": "PrecedesSlantEqual", "codepoints": [8828] }, 1437 | { "index": "PrecedesTilde", "codepoints": [8830] }, 1438 | { "index": "preceq", "codepoints": [10927] }, 1439 | { "index": "precnapprox", "codepoints": [10937] }, 1440 | { "index": "precneqq", "codepoints": [10933] }, 1441 | { "index": "precnsim", "codepoints": [8936] }, 1442 | { "index": "pre", "codepoints": [10927] }, 1443 | { "index": "prE", "codepoints": [10931] }, 1444 | { "index": "precsim", "codepoints": [8830] }, 1445 | { "index": "prime", "codepoints": [8242] }, 1446 | { "index": "Prime", "codepoints": [8243] }, 1447 | { "index": "primes", "codepoints": [8473] }, 1448 | { "index": "prnap", "codepoints": [10937] }, 1449 | { "index": "prnE", "codepoints": [10933] }, 1450 | { "index": "prnsim", "codepoints": [8936] }, 1451 | { "index": "prod", "codepoints": [8719] }, 1452 | { "index": "Product", "codepoints": [8719] }, 1453 | { "index": "profalar", "codepoints": [9006] }, 1454 | { "index": "profline", "codepoints": [8978] }, 1455 | { "index": "profsurf", "codepoints": [8979] }, 1456 | { "index": "prop", "codepoints": [8733] }, 1457 | { "index": "Proportional", "codepoints": [8733] }, 1458 | { "index": "Proportion", "codepoints": [8759] }, 1459 | { "index": "propto", "codepoints": [8733] }, 1460 | { "index": "prsim", "codepoints": [8830] }, 1461 | { "index": "prurel", "codepoints": [8880] }, 1462 | { "index": "Pscr", "codepoints": [119979] }, 1463 | { "index": "pscr", "codepoints": [120005] }, 1464 | { "index": "Psi", "codepoints": [936] }, 1465 | { "index": "psi", "codepoints": [968] }, 1466 | { "index": "puncsp", "codepoints": [8200] }, 1467 | { "index": "Qfr", "codepoints": [120084] }, 1468 | { "index": "qfr", "codepoints": [120110] }, 1469 | { "index": "qint", "codepoints": [10764] }, 1470 | { "index": "qopf", "codepoints": [120162] }, 1471 | { "index": "Qopf", "codepoints": [8474] }, 1472 | { "index": "qprime", "codepoints": [8279] }, 1473 | { "index": "Qscr", "codepoints": [119980] }, 1474 | { "index": "qscr", "codepoints": [120006] }, 1475 | { "index": "quaternions", "codepoints": [8461] }, 1476 | { "index": "quatint", "codepoints": [10774] }, 1477 | { "index": "quest", "codepoints": [63] }, 1478 | { "index": "questeq", "codepoints": [8799] }, 1479 | { "index": "quot", "codepoints": [34] }, 1480 | { "index": "QUOT", "codepoints": [34] }, 1481 | { "index": "rAarr", "codepoints": [8667] }, 1482 | { "index": "race", "codepoints": [8765, 817] }, 1483 | { "index": "Racute", "codepoints": [340] }, 1484 | { "index": "racute", "codepoints": [341] }, 1485 | { "index": "radic", "codepoints": [8730] }, 1486 | { "index": "raemptyv", "codepoints": [10675] }, 1487 | { "index": "rang", "codepoints": [10217] }, 1488 | { "index": "Rang", "codepoints": [10219] }, 1489 | { "index": "rangd", "codepoints": [10642] }, 1490 | { "index": "range", "codepoints": [10661] }, 1491 | { "index": "rangle", "codepoints": [10217] }, 1492 | { "index": "raquo", "codepoints": [187] }, 1493 | { "index": "rarrap", "codepoints": [10613] }, 1494 | { "index": "rarrb", "codepoints": [8677] }, 1495 | { "index": "rarrbfs", "codepoints": [10528] }, 1496 | { "index": "rarrc", "codepoints": [10547] }, 1497 | { "index": "rarr", "codepoints": [8594] }, 1498 | { "index": "Rarr", "codepoints": [8608] }, 1499 | { "index": "rArr", "codepoints": [8658] }, 1500 | { "index": "rarrfs", "codepoints": [10526] }, 1501 | { "index": "rarrhk", "codepoints": [8618] }, 1502 | { "index": "rarrlp", "codepoints": [8620] }, 1503 | { "index": "rarrpl", "codepoints": [10565] }, 1504 | { "index": "rarrsim", "codepoints": [10612] }, 1505 | { "index": "Rarrtl", "codepoints": [10518] }, 1506 | { "index": "rarrtl", "codepoints": [8611] }, 1507 | { "index": "rarrw", "codepoints": [8605] }, 1508 | { "index": "ratail", "codepoints": [10522] }, 1509 | { "index": "rAtail", "codepoints": [10524] }, 1510 | { "index": "ratio", "codepoints": [8758] }, 1511 | { "index": "rationals", "codepoints": [8474] }, 1512 | { "index": "rbarr", "codepoints": [10509] }, 1513 | { "index": "rBarr", "codepoints": [10511] }, 1514 | { "index": "RBarr", "codepoints": [10512] }, 1515 | { "index": "rbbrk", "codepoints": [10099] }, 1516 | { "index": "rbrace", "codepoints": [125] }, 1517 | { "index": "rbrack", "codepoints": [93] }, 1518 | { "index": "rbrke", "codepoints": [10636] }, 1519 | { "index": "rbrksld", "codepoints": [10638] }, 1520 | { "index": "rbrkslu", "codepoints": [10640] }, 1521 | { "index": "Rcaron", "codepoints": [344] }, 1522 | { "index": "rcaron", "codepoints": [345] }, 1523 | { "index": "Rcedil", "codepoints": [342] }, 1524 | { "index": "rcedil", "codepoints": [343] }, 1525 | { "index": "rceil", "codepoints": [8969] }, 1526 | { "index": "rcub", "codepoints": [125] }, 1527 | { "index": "Rcy", "codepoints": [1056] }, 1528 | { "index": "rcy", "codepoints": [1088] }, 1529 | { "index": "rdca", "codepoints": [10551] }, 1530 | { "index": "rdldhar", "codepoints": [10601] }, 1531 | { "index": "rdquo", "codepoints": [8221] }, 1532 | { "index": "rdquor", "codepoints": [8221] }, 1533 | { "index": "rdsh", "codepoints": [8627] }, 1534 | { "index": "real", "codepoints": [8476] }, 1535 | { "index": "realine", "codepoints": [8475] }, 1536 | { "index": "realpart", "codepoints": [8476] }, 1537 | { "index": "reals", "codepoints": [8477] }, 1538 | { "index": "Re", "codepoints": [8476] }, 1539 | { "index": "rect", "codepoints": [9645] }, 1540 | { "index": "reg", "codepoints": [174] }, 1541 | { "index": "REG", "codepoints": [174] }, 1542 | { "index": "ReverseElement", "codepoints": [8715] }, 1543 | { "index": "ReverseEquilibrium", "codepoints": [8651] }, 1544 | { "index": "ReverseUpEquilibrium", "codepoints": [10607] }, 1545 | { "index": "rfisht", "codepoints": [10621] }, 1546 | { "index": "rfloor", "codepoints": [8971] }, 1547 | { "index": "rfr", "codepoints": [120111] }, 1548 | { "index": "Rfr", "codepoints": [8476] }, 1549 | { "index": "rHar", "codepoints": [10596] }, 1550 | { "index": "rhard", "codepoints": [8641] }, 1551 | { "index": "rharu", "codepoints": [8640] }, 1552 | { "index": "rharul", "codepoints": [10604] }, 1553 | { "index": "Rho", "codepoints": [929] }, 1554 | { "index": "rho", "codepoints": [961] }, 1555 | { "index": "rhov", "codepoints": [1009] }, 1556 | { "index": "RightAngleBracket", "codepoints": [10217] }, 1557 | { "index": "RightArrowBar", "codepoints": [8677] }, 1558 | { "index": "rightarrow", "codepoints": [8594] }, 1559 | { "index": "RightArrow", "codepoints": [8594] }, 1560 | { "index": "Rightarrow", "codepoints": [8658] }, 1561 | { "index": "RightArrowLeftArrow", "codepoints": [8644] }, 1562 | { "index": "rightarrowtail", "codepoints": [8611] }, 1563 | { "index": "RightCeiling", "codepoints": [8969] }, 1564 | { "index": "RightDoubleBracket", "codepoints": [10215] }, 1565 | { "index": "RightDownTeeVector", "codepoints": [10589] }, 1566 | { "index": "RightDownVectorBar", "codepoints": [10581] }, 1567 | { "index": "RightDownVector", "codepoints": [8642] }, 1568 | { "index": "RightFloor", "codepoints": [8971] }, 1569 | { "index": "rightharpoondown", "codepoints": [8641] }, 1570 | { "index": "rightharpoonup", "codepoints": [8640] }, 1571 | { "index": "rightleftarrows", "codepoints": [8644] }, 1572 | { "index": "rightleftharpoons", "codepoints": [8652] }, 1573 | { "index": "rightrightarrows", "codepoints": [8649] }, 1574 | { "index": "rightsquigarrow", "codepoints": [8605] }, 1575 | { "index": "RightTeeArrow", "codepoints": [8614] }, 1576 | { "index": "RightTee", "codepoints": [8866] }, 1577 | { "index": "RightTeeVector", "codepoints": [10587] }, 1578 | { "index": "rightthreetimes", "codepoints": [8908] }, 1579 | { "index": "RightTriangleBar", "codepoints": [10704] }, 1580 | { "index": "RightTriangle", "codepoints": [8883] }, 1581 | { "index": "RightTriangleEqual", "codepoints": [8885] }, 1582 | { "index": "RightUpDownVector", "codepoints": [10575] }, 1583 | { "index": "RightUpTeeVector", "codepoints": [10588] }, 1584 | { "index": "RightUpVectorBar", "codepoints": [10580] }, 1585 | { "index": "RightUpVector", "codepoints": [8638] }, 1586 | { "index": "RightVectorBar", "codepoints": [10579] }, 1587 | { "index": "RightVector", "codepoints": [8640] }, 1588 | { "index": "ring", "codepoints": [730] }, 1589 | { "index": "risingdotseq", "codepoints": [8787] }, 1590 | { "index": "rlarr", "codepoints": [8644] }, 1591 | { "index": "rlhar", "codepoints": [8652] }, 1592 | { "index": "rlm", "codepoints": [8207] }, 1593 | { "index": "rmoustache", "codepoints": [9137] }, 1594 | { "index": "rmoust", "codepoints": [9137] }, 1595 | { "index": "rnmid", "codepoints": [10990] }, 1596 | { "index": "roang", "codepoints": [10221] }, 1597 | { "index": "roarr", "codepoints": [8702] }, 1598 | { "index": "robrk", "codepoints": [10215] }, 1599 | { "index": "ropar", "codepoints": [10630] }, 1600 | { "index": "ropf", "codepoints": [120163] }, 1601 | { "index": "Ropf", "codepoints": [8477] }, 1602 | { "index": "roplus", "codepoints": [10798] }, 1603 | { "index": "rotimes", "codepoints": [10805] }, 1604 | { "index": "RoundImplies", "codepoints": [10608] }, 1605 | { "index": "rpar", "codepoints": [41] }, 1606 | { "index": "rpargt", "codepoints": [10644] }, 1607 | { "index": "rppolint", "codepoints": [10770] }, 1608 | { "index": "rrarr", "codepoints": [8649] }, 1609 | { "index": "Rrightarrow", "codepoints": [8667] }, 1610 | { "index": "rsaquo", "codepoints": [8250] }, 1611 | { "index": "rscr", "codepoints": [120007] }, 1612 | { "index": "Rscr", "codepoints": [8475] }, 1613 | { "index": "rsh", "codepoints": [8625] }, 1614 | { "index": "Rsh", "codepoints": [8625] }, 1615 | { "index": "rsqb", "codepoints": [93] }, 1616 | { "index": "rsquo", "codepoints": [8217] }, 1617 | { "index": "rsquor", "codepoints": [8217] }, 1618 | { "index": "rthree", "codepoints": [8908] }, 1619 | { "index": "rtimes", "codepoints": [8906] }, 1620 | { "index": "rtri", "codepoints": [9657] }, 1621 | { "index": "rtrie", "codepoints": [8885] }, 1622 | { "index": "rtrif", "codepoints": [9656] }, 1623 | { "index": "rtriltri", "codepoints": [10702] }, 1624 | { "index": "RuleDelayed", "codepoints": [10740] }, 1625 | { "index": "ruluhar", "codepoints": [10600] }, 1626 | { "index": "rx", "codepoints": [8478] }, 1627 | { "index": "Sacute", "codepoints": [346] }, 1628 | { "index": "sacute", "codepoints": [347] }, 1629 | { "index": "sbquo", "codepoints": [8218] }, 1630 | { "index": "scap", "codepoints": [10936] }, 1631 | { "index": "Scaron", "codepoints": [352] }, 1632 | { "index": "scaron", "codepoints": [353] }, 1633 | { "index": "Sc", "codepoints": [10940] }, 1634 | { "index": "sc", "codepoints": [8827] }, 1635 | { "index": "sccue", "codepoints": [8829] }, 1636 | { "index": "sce", "codepoints": [10928] }, 1637 | { "index": "scE", "codepoints": [10932] }, 1638 | { "index": "Scedil", "codepoints": [350] }, 1639 | { "index": "scedil", "codepoints": [351] }, 1640 | { "index": "Scirc", "codepoints": [348] }, 1641 | { "index": "scirc", "codepoints": [349] }, 1642 | { "index": "scnap", "codepoints": [10938] }, 1643 | { "index": "scnE", "codepoints": [10934] }, 1644 | { "index": "scnsim", "codepoints": [8937] }, 1645 | { "index": "scpolint", "codepoints": [10771] }, 1646 | { "index": "scsim", "codepoints": [8831] }, 1647 | { "index": "Scy", "codepoints": [1057] }, 1648 | { "index": "scy", "codepoints": [1089] }, 1649 | { "index": "sdotb", "codepoints": [8865] }, 1650 | { "index": "sdot", "codepoints": [8901] }, 1651 | { "index": "sdote", "codepoints": [10854] }, 1652 | { "index": "searhk", "codepoints": [10533] }, 1653 | { "index": "searr", "codepoints": [8600] }, 1654 | { "index": "seArr", "codepoints": [8664] }, 1655 | { "index": "searrow", "codepoints": [8600] }, 1656 | { "index": "sect", "codepoints": [167] }, 1657 | { "index": "semi", "codepoints": [59] }, 1658 | { "index": "seswar", "codepoints": [10537] }, 1659 | { "index": "setminus", "codepoints": [8726] }, 1660 | { "index": "setmn", "codepoints": [8726] }, 1661 | { "index": "sext", "codepoints": [10038] }, 1662 | { "index": "Sfr", "codepoints": [120086] }, 1663 | { "index": "sfr", "codepoints": [120112] }, 1664 | { "index": "sfrown", "codepoints": [8994] }, 1665 | { "index": "sharp", "codepoints": [9839] }, 1666 | { "index": "SHCHcy", "codepoints": [1065] }, 1667 | { "index": "shchcy", "codepoints": [1097] }, 1668 | { "index": "SHcy", "codepoints": [1064] }, 1669 | { "index": "shcy", "codepoints": [1096] }, 1670 | { "index": "ShortDownArrow", "codepoints": [8595] }, 1671 | { "index": "ShortLeftArrow", "codepoints": [8592] }, 1672 | { "index": "shortmid", "codepoints": [8739] }, 1673 | { "index": "shortparallel", "codepoints": [8741] }, 1674 | { "index": "ShortRightArrow", "codepoints": [8594] }, 1675 | { "index": "ShortUpArrow", "codepoints": [8593] }, 1676 | { "index": "shy", "codepoints": [173] }, 1677 | { "index": "Sigma", "codepoints": [931] }, 1678 | { "index": "sigma", "codepoints": [963] }, 1679 | { "index": "sigmaf", "codepoints": [962] }, 1680 | { "index": "sigmav", "codepoints": [962] }, 1681 | { "index": "sim", "codepoints": [8764] }, 1682 | { "index": "simdot", "codepoints": [10858] }, 1683 | { "index": "sime", "codepoints": [8771] }, 1684 | { "index": "simeq", "codepoints": [8771] }, 1685 | { "index": "simg", "codepoints": [10910] }, 1686 | { "index": "simgE", "codepoints": [10912] }, 1687 | { "index": "siml", "codepoints": [10909] }, 1688 | { "index": "simlE", "codepoints": [10911] }, 1689 | { "index": "simne", "codepoints": [8774] }, 1690 | { "index": "simplus", "codepoints": [10788] }, 1691 | { "index": "simrarr", "codepoints": [10610] }, 1692 | { "index": "slarr", "codepoints": [8592] }, 1693 | { "index": "SmallCircle", "codepoints": [8728] }, 1694 | { "index": "smallsetminus", "codepoints": [8726] }, 1695 | { "index": "smashp", "codepoints": [10803] }, 1696 | { "index": "smeparsl", "codepoints": [10724] }, 1697 | { "index": "smid", "codepoints": [8739] }, 1698 | { "index": "smile", "codepoints": [8995] }, 1699 | { "index": "smt", "codepoints": [10922] }, 1700 | { "index": "smte", "codepoints": [10924] }, 1701 | { "index": "smtes", "codepoints": [10924, 65024] }, 1702 | { "index": "SOFTcy", "codepoints": [1068] }, 1703 | { "index": "softcy", "codepoints": [1100] }, 1704 | { "index": "solbar", "codepoints": [9023] }, 1705 | { "index": "solb", "codepoints": [10692] }, 1706 | { "index": "sol", "codepoints": [47] }, 1707 | { "index": "Sopf", "codepoints": [120138] }, 1708 | { "index": "sopf", "codepoints": [120164] }, 1709 | { "index": "spades", "codepoints": [9824] }, 1710 | { "index": "spadesuit", "codepoints": [9824] }, 1711 | { "index": "spar", "codepoints": [8741] }, 1712 | { "index": "sqcap", "codepoints": [8851] }, 1713 | { "index": "sqcaps", "codepoints": [8851, 65024] }, 1714 | { "index": "sqcup", "codepoints": [8852] }, 1715 | { "index": "sqcups", "codepoints": [8852, 65024] }, 1716 | { "index": "Sqrt", "codepoints": [8730] }, 1717 | { "index": "sqsub", "codepoints": [8847] }, 1718 | { "index": "sqsube", "codepoints": [8849] }, 1719 | { "index": "sqsubset", "codepoints": [8847] }, 1720 | { "index": "sqsubseteq", "codepoints": [8849] }, 1721 | { "index": "sqsup", "codepoints": [8848] }, 1722 | { "index": "sqsupe", "codepoints": [8850] }, 1723 | { "index": "sqsupset", "codepoints": [8848] }, 1724 | { "index": "sqsupseteq", "codepoints": [8850] }, 1725 | { "index": "square", "codepoints": [9633] }, 1726 | { "index": "Square", "codepoints": [9633] }, 1727 | { "index": "SquareIntersection", "codepoints": [8851] }, 1728 | { "index": "SquareSubset", "codepoints": [8847] }, 1729 | { "index": "SquareSubsetEqual", "codepoints": [8849] }, 1730 | { "index": "SquareSuperset", "codepoints": [8848] }, 1731 | { "index": "SquareSupersetEqual", "codepoints": [8850] }, 1732 | { "index": "SquareUnion", "codepoints": [8852] }, 1733 | { "index": "squarf", "codepoints": [9642] }, 1734 | { "index": "squ", "codepoints": [9633] }, 1735 | { "index": "squf", "codepoints": [9642] }, 1736 | { "index": "srarr", "codepoints": [8594] }, 1737 | { "index": "Sscr", "codepoints": [119982] }, 1738 | { "index": "sscr", "codepoints": [120008] }, 1739 | { "index": "ssetmn", "codepoints": [8726] }, 1740 | { "index": "ssmile", "codepoints": [8995] }, 1741 | { "index": "sstarf", "codepoints": [8902] }, 1742 | { "index": "Star", "codepoints": [8902] }, 1743 | { "index": "star", "codepoints": [9734] }, 1744 | { "index": "starf", "codepoints": [9733] }, 1745 | { "index": "straightepsilon", "codepoints": [1013] }, 1746 | { "index": "straightphi", "codepoints": [981] }, 1747 | { "index": "strns", "codepoints": [175] }, 1748 | { "index": "sub", "codepoints": [8834] }, 1749 | { "index": "Sub", "codepoints": [8912] }, 1750 | { "index": "subdot", "codepoints": [10941] }, 1751 | { "index": "subE", "codepoints": [10949] }, 1752 | { "index": "sube", "codepoints": [8838] }, 1753 | { "index": "subedot", "codepoints": [10947] }, 1754 | { "index": "submult", "codepoints": [10945] }, 1755 | { "index": "subnE", "codepoints": [10955] }, 1756 | { "index": "subne", "codepoints": [8842] }, 1757 | { "index": "subplus", "codepoints": [10943] }, 1758 | { "index": "subrarr", "codepoints": [10617] }, 1759 | { "index": "subset", "codepoints": [8834] }, 1760 | { "index": "Subset", "codepoints": [8912] }, 1761 | { "index": "subseteq", "codepoints": [8838] }, 1762 | { "index": "subseteqq", "codepoints": [10949] }, 1763 | { "index": "SubsetEqual", "codepoints": [8838] }, 1764 | { "index": "subsetneq", "codepoints": [8842] }, 1765 | { "index": "subsetneqq", "codepoints": [10955] }, 1766 | { "index": "subsim", "codepoints": [10951] }, 1767 | { "index": "subsub", "codepoints": [10965] }, 1768 | { "index": "subsup", "codepoints": [10963] }, 1769 | { "index": "succapprox", "codepoints": [10936] }, 1770 | { "index": "succ", "codepoints": [8827] }, 1771 | { "index": "succcurlyeq", "codepoints": [8829] }, 1772 | { "index": "Succeeds", "codepoints": [8827] }, 1773 | { "index": "SucceedsEqual", "codepoints": [10928] }, 1774 | { "index": "SucceedsSlantEqual", "codepoints": [8829] }, 1775 | { "index": "SucceedsTilde", "codepoints": [8831] }, 1776 | { "index": "succeq", "codepoints": [10928] }, 1777 | { "index": "succnapprox", "codepoints": [10938] }, 1778 | { "index": "succneqq", "codepoints": [10934] }, 1779 | { "index": "succnsim", "codepoints": [8937] }, 1780 | { "index": "succsim", "codepoints": [8831] }, 1781 | { "index": "SuchThat", "codepoints": [8715] }, 1782 | { "index": "sum", "codepoints": [8721] }, 1783 | { "index": "Sum", "codepoints": [8721] }, 1784 | { "index": "sung", "codepoints": [9834] }, 1785 | { "index": "sup1", "codepoints": [185] }, 1786 | { "index": "sup2", "codepoints": [178] }, 1787 | { "index": "sup3", "codepoints": [179] }, 1788 | { "index": "sup", "codepoints": [8835] }, 1789 | { "index": "Sup", "codepoints": [8913] }, 1790 | { "index": "supdot", "codepoints": [10942] }, 1791 | { "index": "supdsub", "codepoints": [10968] }, 1792 | { "index": "supE", "codepoints": [10950] }, 1793 | { "index": "supe", "codepoints": [8839] }, 1794 | { "index": "supedot", "codepoints": [10948] }, 1795 | { "index": "Superset", "codepoints": [8835] }, 1796 | { "index": "SupersetEqual", "codepoints": [8839] }, 1797 | { "index": "suphsol", "codepoints": [10185] }, 1798 | { "index": "suphsub", "codepoints": [10967] }, 1799 | { "index": "suplarr", "codepoints": [10619] }, 1800 | { "index": "supmult", "codepoints": [10946] }, 1801 | { "index": "supnE", "codepoints": [10956] }, 1802 | { "index": "supne", "codepoints": [8843] }, 1803 | { "index": "supplus", "codepoints": [10944] }, 1804 | { "index": "supset", "codepoints": [8835] }, 1805 | { "index": "Supset", "codepoints": [8913] }, 1806 | { "index": "supseteq", "codepoints": [8839] }, 1807 | { "index": "supseteqq", "codepoints": [10950] }, 1808 | { "index": "supsetneq", "codepoints": [8843] }, 1809 | { "index": "supsetneqq", "codepoints": [10956] }, 1810 | { "index": "supsim", "codepoints": [10952] }, 1811 | { "index": "supsub", "codepoints": [10964] }, 1812 | { "index": "supsup", "codepoints": [10966] }, 1813 | { "index": "swarhk", "codepoints": [10534] }, 1814 | { "index": "swarr", "codepoints": [8601] }, 1815 | { "index": "swArr", "codepoints": [8665] }, 1816 | { "index": "swarrow", "codepoints": [8601] }, 1817 | { "index": "swnwar", "codepoints": [10538] }, 1818 | { "index": "szlig", "codepoints": [223] }, 1819 | { "index": "Tab", "codepoints": [9] }, 1820 | { "index": "target", "codepoints": [8982] }, 1821 | { "index": "Tau", "codepoints": [932] }, 1822 | { "index": "tau", "codepoints": [964] }, 1823 | { "index": "tbrk", "codepoints": [9140] }, 1824 | { "index": "Tcaron", "codepoints": [356] }, 1825 | { "index": "tcaron", "codepoints": [357] }, 1826 | { "index": "Tcedil", "codepoints": [354] }, 1827 | { "index": "tcedil", "codepoints": [355] }, 1828 | { "index": "Tcy", "codepoints": [1058] }, 1829 | { "index": "tcy", "codepoints": [1090] }, 1830 | { "index": "tdot", "codepoints": [8411] }, 1831 | { "index": "telrec", "codepoints": [8981] }, 1832 | { "index": "Tfr", "codepoints": [120087] }, 1833 | { "index": "tfr", "codepoints": [120113] }, 1834 | { "index": "there4", "codepoints": [8756] }, 1835 | { "index": "therefore", "codepoints": [8756] }, 1836 | { "index": "Therefore", "codepoints": [8756] }, 1837 | { "index": "Theta", "codepoints": [920] }, 1838 | { "index": "theta", "codepoints": [952] }, 1839 | { "index": "thetasym", "codepoints": [977] }, 1840 | { "index": "thetav", "codepoints": [977] }, 1841 | { "index": "thickapprox", "codepoints": [8776] }, 1842 | { "index": "thicksim", "codepoints": [8764] }, 1843 | { "index": "ThickSpace", "codepoints": [8287, 8202] }, 1844 | { "index": "ThinSpace", "codepoints": [8201] }, 1845 | { "index": "thinsp", "codepoints": [8201] }, 1846 | { "index": "thkap", "codepoints": [8776] }, 1847 | { "index": "thksim", "codepoints": [8764] }, 1848 | { "index": "THORN", "codepoints": [222] }, 1849 | { "index": "thorn", "codepoints": [254] }, 1850 | { "index": "tilde", "codepoints": [732] }, 1851 | { "index": "Tilde", "codepoints": [8764] }, 1852 | { "index": "TildeEqual", "codepoints": [8771] }, 1853 | { "index": "TildeFullEqual", "codepoints": [8773] }, 1854 | { "index": "TildeTilde", "codepoints": [8776] }, 1855 | { "index": "timesbar", "codepoints": [10801] }, 1856 | { "index": "timesb", "codepoints": [8864] }, 1857 | { "index": "times", "codepoints": [215] }, 1858 | { "index": "timesd", "codepoints": [10800] }, 1859 | { "index": "tint", "codepoints": [8749] }, 1860 | { "index": "toea", "codepoints": [10536] }, 1861 | { "index": "topbot", "codepoints": [9014] }, 1862 | { "index": "topcir", "codepoints": [10993] }, 1863 | { "index": "top", "codepoints": [8868] }, 1864 | { "index": "Topf", "codepoints": [120139] }, 1865 | { "index": "topf", "codepoints": [120165] }, 1866 | { "index": "topfork", "codepoints": [10970] }, 1867 | { "index": "tosa", "codepoints": [10537] }, 1868 | { "index": "tprime", "codepoints": [8244] }, 1869 | { "index": "trade", "codepoints": [8482] }, 1870 | { "index": "TRADE", "codepoints": [8482] }, 1871 | { "index": "triangle", "codepoints": [9653] }, 1872 | { "index": "triangledown", "codepoints": [9663] }, 1873 | { "index": "triangleleft", "codepoints": [9667] }, 1874 | { "index": "trianglelefteq", "codepoints": [8884] }, 1875 | { "index": "triangleq", "codepoints": [8796] }, 1876 | { "index": "triangleright", "codepoints": [9657] }, 1877 | { "index": "trianglerighteq", "codepoints": [8885] }, 1878 | { "index": "tridot", "codepoints": [9708] }, 1879 | { "index": "trie", "codepoints": [8796] }, 1880 | { "index": "triminus", "codepoints": [10810] }, 1881 | { "index": "TripleDot", "codepoints": [8411] }, 1882 | { "index": "triplus", "codepoints": [10809] }, 1883 | { "index": "trisb", "codepoints": [10701] }, 1884 | { "index": "tritime", "codepoints": [10811] }, 1885 | { "index": "trpezium", "codepoints": [9186] }, 1886 | { "index": "Tscr", "codepoints": [119983] }, 1887 | { "index": "tscr", "codepoints": [120009] }, 1888 | { "index": "TScy", "codepoints": [1062] }, 1889 | { "index": "tscy", "codepoints": [1094] }, 1890 | { "index": "TSHcy", "codepoints": [1035] }, 1891 | { "index": "tshcy", "codepoints": [1115] }, 1892 | { "index": "Tstrok", "codepoints": [358] }, 1893 | { "index": "tstrok", "codepoints": [359] }, 1894 | { "index": "twixt", "codepoints": [8812] }, 1895 | { "index": "twoheadleftarrow", "codepoints": [8606] }, 1896 | { "index": "twoheadrightarrow", "codepoints": [8608] }, 1897 | { "index": "Uacute", "codepoints": [218] }, 1898 | { "index": "uacute", "codepoints": [250] }, 1899 | { "index": "uarr", "codepoints": [8593] }, 1900 | { "index": "Uarr", "codepoints": [8607] }, 1901 | { "index": "uArr", "codepoints": [8657] }, 1902 | { "index": "Uarrocir", "codepoints": [10569] }, 1903 | { "index": "Ubrcy", "codepoints": [1038] }, 1904 | { "index": "ubrcy", "codepoints": [1118] }, 1905 | { "index": "Ubreve", "codepoints": [364] }, 1906 | { "index": "ubreve", "codepoints": [365] }, 1907 | { "index": "Ucirc", "codepoints": [219] }, 1908 | { "index": "ucirc", "codepoints": [251] }, 1909 | { "index": "Ucy", "codepoints": [1059] }, 1910 | { "index": "ucy", "codepoints": [1091] }, 1911 | { "index": "udarr", "codepoints": [8645] }, 1912 | { "index": "Udblac", "codepoints": [368] }, 1913 | { "index": "udblac", "codepoints": [369] }, 1914 | { "index": "udhar", "codepoints": [10606] }, 1915 | { "index": "ufisht", "codepoints": [10622] }, 1916 | { "index": "Ufr", "codepoints": [120088] }, 1917 | { "index": "ufr", "codepoints": [120114] }, 1918 | { "index": "Ugrave", "codepoints": [217] }, 1919 | { "index": "ugrave", "codepoints": [249] }, 1920 | { "index": "uHar", "codepoints": [10595] }, 1921 | { "index": "uharl", "codepoints": [8639] }, 1922 | { "index": "uharr", "codepoints": [8638] }, 1923 | { "index": "uhblk", "codepoints": [9600] }, 1924 | { "index": "ulcorn", "codepoints": [8988] }, 1925 | { "index": "ulcorner", "codepoints": [8988] }, 1926 | { "index": "ulcrop", "codepoints": [8975] }, 1927 | { "index": "ultri", "codepoints": [9720] }, 1928 | { "index": "Umacr", "codepoints": [362] }, 1929 | { "index": "umacr", "codepoints": [363] }, 1930 | { "index": "uml", "codepoints": [168] }, 1931 | { "index": "UnderBar", "codepoints": [95] }, 1932 | { "index": "UnderBrace", "codepoints": [9183] }, 1933 | { "index": "UnderBracket", "codepoints": [9141] }, 1934 | { "index": "UnderParenthesis", "codepoints": [9181] }, 1935 | { "index": "Union", "codepoints": [8899] }, 1936 | { "index": "UnionPlus", "codepoints": [8846] }, 1937 | { "index": "Uogon", "codepoints": [370] }, 1938 | { "index": "uogon", "codepoints": [371] }, 1939 | { "index": "Uopf", "codepoints": [120140] }, 1940 | { "index": "uopf", "codepoints": [120166] }, 1941 | { "index": "UpArrowBar", "codepoints": [10514] }, 1942 | { "index": "uparrow", "codepoints": [8593] }, 1943 | { "index": "UpArrow", "codepoints": [8593] }, 1944 | { "index": "Uparrow", "codepoints": [8657] }, 1945 | { "index": "UpArrowDownArrow", "codepoints": [8645] }, 1946 | { "index": "updownarrow", "codepoints": [8597] }, 1947 | { "index": "UpDownArrow", "codepoints": [8597] }, 1948 | { "index": "Updownarrow", "codepoints": [8661] }, 1949 | { "index": "UpEquilibrium", "codepoints": [10606] }, 1950 | { "index": "upharpoonleft", "codepoints": [8639] }, 1951 | { "index": "upharpoonright", "codepoints": [8638] }, 1952 | { "index": "uplus", "codepoints": [8846] }, 1953 | { "index": "UpperLeftArrow", "codepoints": [8598] }, 1954 | { "index": "UpperRightArrow", "codepoints": [8599] }, 1955 | { "index": "upsi", "codepoints": [965] }, 1956 | { "index": "Upsi", "codepoints": [978] }, 1957 | { "index": "upsih", "codepoints": [978] }, 1958 | { "index": "Upsilon", "codepoints": [933] }, 1959 | { "index": "upsilon", "codepoints": [965] }, 1960 | { "index": "UpTeeArrow", "codepoints": [8613] }, 1961 | { "index": "UpTee", "codepoints": [8869] }, 1962 | { "index": "upuparrows", "codepoints": [8648] }, 1963 | { "index": "urcorn", "codepoints": [8989] }, 1964 | { "index": "urcorner", "codepoints": [8989] }, 1965 | { "index": "urcrop", "codepoints": [8974] }, 1966 | { "index": "Uring", "codepoints": [366] }, 1967 | { "index": "uring", "codepoints": [367] }, 1968 | { "index": "urtri", "codepoints": [9721] }, 1969 | { "index": "Uscr", "codepoints": [119984] }, 1970 | { "index": "uscr", "codepoints": [120010] }, 1971 | { "index": "utdot", "codepoints": [8944] }, 1972 | { "index": "Utilde", "codepoints": [360] }, 1973 | { "index": "utilde", "codepoints": [361] }, 1974 | { "index": "utri", "codepoints": [9653] }, 1975 | { "index": "utrif", "codepoints": [9652] }, 1976 | { "index": "uuarr", "codepoints": [8648] }, 1977 | { "index": "Uuml", "codepoints": [220] }, 1978 | { "index": "uuml", "codepoints": [252] }, 1979 | { "index": "uwangle", "codepoints": [10663] }, 1980 | { "index": "vangrt", "codepoints": [10652] }, 1981 | { "index": "varepsilon", "codepoints": [1013] }, 1982 | { "index": "varkappa", "codepoints": [1008] }, 1983 | { "index": "varnothing", "codepoints": [8709] }, 1984 | { "index": "varphi", "codepoints": [981] }, 1985 | { "index": "varpi", "codepoints": [982] }, 1986 | { "index": "varpropto", "codepoints": [8733] }, 1987 | { "index": "varr", "codepoints": [8597] }, 1988 | { "index": "vArr", "codepoints": [8661] }, 1989 | { "index": "varrho", "codepoints": [1009] }, 1990 | { "index": "varsigma", "codepoints": [962] }, 1991 | { "index": "varsubsetneq", "codepoints": [8842, 65024] }, 1992 | { "index": "varsubsetneqq", "codepoints": [10955, 65024] }, 1993 | { "index": "varsupsetneq", "codepoints": [8843, 65024] }, 1994 | { "index": "varsupsetneqq", "codepoints": [10956, 65024] }, 1995 | { "index": "vartheta", "codepoints": [977] }, 1996 | { "index": "vartriangleleft", "codepoints": [8882] }, 1997 | { "index": "vartriangleright", "codepoints": [8883] }, 1998 | { "index": "vBar", "codepoints": [10984] }, 1999 | { "index": "Vbar", "codepoints": [10987] }, 2000 | { "index": "vBarv", "codepoints": [10985] }, 2001 | { "index": "Vcy", "codepoints": [1042] }, 2002 | { "index": "vcy", "codepoints": [1074] }, 2003 | { "index": "vdash", "codepoints": [8866] }, 2004 | { "index": "vDash", "codepoints": [8872] }, 2005 | { "index": "Vdash", "codepoints": [8873] }, 2006 | { "index": "VDash", "codepoints": [8875] }, 2007 | { "index": "Vdashl", "codepoints": [10982] }, 2008 | { "index": "veebar", "codepoints": [8891] }, 2009 | { "index": "vee", "codepoints": [8744] }, 2010 | { "index": "Vee", "codepoints": [8897] }, 2011 | { "index": "veeeq", "codepoints": [8794] }, 2012 | { "index": "vellip", "codepoints": [8942] }, 2013 | { "index": "verbar", "codepoints": [124] }, 2014 | { "index": "Verbar", "codepoints": [8214] }, 2015 | { "index": "vert", "codepoints": [124] }, 2016 | { "index": "Vert", "codepoints": [8214] }, 2017 | { "index": "VerticalBar", "codepoints": [8739] }, 2018 | { "index": "VerticalLine", "codepoints": [124] }, 2019 | { "index": "VerticalSeparator", "codepoints": [10072] }, 2020 | { "index": "VerticalTilde", "codepoints": [8768] }, 2021 | { "index": "VeryThinSpace", "codepoints": [8202] }, 2022 | { "index": "Vfr", "codepoints": [120089] }, 2023 | { "index": "vfr", "codepoints": [120115] }, 2024 | { "index": "vltri", "codepoints": [8882] }, 2025 | { "index": "vnsub", "codepoints": [8834, 8402] }, 2026 | { "index": "vnsup", "codepoints": [8835, 8402] }, 2027 | { "index": "Vopf", "codepoints": [120141] }, 2028 | { "index": "vopf", "codepoints": [120167] }, 2029 | { "index": "vprop", "codepoints": [8733] }, 2030 | { "index": "vrtri", "codepoints": [8883] }, 2031 | { "index": "Vscr", "codepoints": [119985] }, 2032 | { "index": "vscr", "codepoints": [120011] }, 2033 | { "index": "vsubnE", "codepoints": [10955, 65024] }, 2034 | { "index": "vsubne", "codepoints": [8842, 65024] }, 2035 | { "index": "vsupnE", "codepoints": [10956, 65024] }, 2036 | { "index": "vsupne", "codepoints": [8843, 65024] }, 2037 | { "index": "Vvdash", "codepoints": [8874] }, 2038 | { "index": "vzigzag", "codepoints": [10650] }, 2039 | { "index": "Wcirc", "codepoints": [372] }, 2040 | { "index": "wcirc", "codepoints": [373] }, 2041 | { "index": "wedbar", "codepoints": [10847] }, 2042 | { "index": "wedge", "codepoints": [8743] }, 2043 | { "index": "Wedge", "codepoints": [8896] }, 2044 | { "index": "wedgeq", "codepoints": [8793] }, 2045 | { "index": "weierp", "codepoints": [8472] }, 2046 | { "index": "Wfr", "codepoints": [120090] }, 2047 | { "index": "wfr", "codepoints": [120116] }, 2048 | { "index": "Wopf", "codepoints": [120142] }, 2049 | { "index": "wopf", "codepoints": [120168] }, 2050 | { "index": "wp", "codepoints": [8472] }, 2051 | { "index": "wr", "codepoints": [8768] }, 2052 | { "index": "wreath", "codepoints": [8768] }, 2053 | { "index": "Wscr", "codepoints": [119986] }, 2054 | { "index": "wscr", "codepoints": [120012] }, 2055 | { "index": "xcap", "codepoints": [8898] }, 2056 | { "index": "xcirc", "codepoints": [9711] }, 2057 | { "index": "xcup", "codepoints": [8899] }, 2058 | { "index": "xdtri", "codepoints": [9661] }, 2059 | { "index": "Xfr", "codepoints": [120091] }, 2060 | { "index": "xfr", "codepoints": [120117] }, 2061 | { "index": "xharr", "codepoints": [10231] }, 2062 | { "index": "xhArr", "codepoints": [10234] }, 2063 | { "index": "Xi", "codepoints": [926] }, 2064 | { "index": "xi", "codepoints": [958] }, 2065 | { "index": "xlarr", "codepoints": [10229] }, 2066 | { "index": "xlArr", "codepoints": [10232] }, 2067 | { "index": "xmap", "codepoints": [10236] }, 2068 | { "index": "xnis", "codepoints": [8955] }, 2069 | { "index": "xodot", "codepoints": [10752] }, 2070 | { "index": "Xopf", "codepoints": [120143] }, 2071 | { "index": "xopf", "codepoints": [120169] }, 2072 | { "index": "xoplus", "codepoints": [10753] }, 2073 | { "index": "xotime", "codepoints": [10754] }, 2074 | { "index": "xrarr", "codepoints": [10230] }, 2075 | { "index": "xrArr", "codepoints": [10233] }, 2076 | { "index": "Xscr", "codepoints": [119987] }, 2077 | { "index": "xscr", "codepoints": [120013] }, 2078 | { "index": "xsqcup", "codepoints": [10758] }, 2079 | { "index": "xuplus", "codepoints": [10756] }, 2080 | { "index": "xutri", "codepoints": [9651] }, 2081 | { "index": "xvee", "codepoints": [8897] }, 2082 | { "index": "xwedge", "codepoints": [8896] }, 2083 | { "index": "Yacute", "codepoints": [221] }, 2084 | { "index": "yacute", "codepoints": [253] }, 2085 | { "index": "YAcy", "codepoints": [1071] }, 2086 | { "index": "yacy", "codepoints": [1103] }, 2087 | { "index": "Ycirc", "codepoints": [374] }, 2088 | { "index": "ycirc", "codepoints": [375] }, 2089 | { "index": "Ycy", "codepoints": [1067] }, 2090 | { "index": "ycy", "codepoints": [1099] }, 2091 | { "index": "yen", "codepoints": [165] }, 2092 | { "index": "Yfr", "codepoints": [120092] }, 2093 | { "index": "yfr", "codepoints": [120118] }, 2094 | { "index": "YIcy", "codepoints": [1031] }, 2095 | { "index": "yicy", "codepoints": [1111] }, 2096 | { "index": "Yopf", "codepoints": [120144] }, 2097 | { "index": "yopf", "codepoints": [120170] }, 2098 | { "index": "Yscr", "codepoints": [119988] }, 2099 | { "index": "yscr", "codepoints": [120014] }, 2100 | { "index": "YUcy", "codepoints": [1070] }, 2101 | { "index": "yucy", "codepoints": [1102] }, 2102 | { "index": "yuml", "codepoints": [255] }, 2103 | { "index": "Yuml", "codepoints": [376] }, 2104 | { "index": "Zacute", "codepoints": [377] }, 2105 | { "index": "zacute", "codepoints": [378] }, 2106 | { "index": "Zcaron", "codepoints": [381] }, 2107 | { "index": "zcaron", "codepoints": [382] }, 2108 | { "index": "Zcy", "codepoints": [1047] }, 2109 | { "index": "zcy", "codepoints": [1079] }, 2110 | { "index": "Zdot", "codepoints": [379] }, 2111 | { "index": "zdot", "codepoints": [380] }, 2112 | { "index": "zeetrf", "codepoints": [8488] }, 2113 | { "index": "ZeroWidthSpace", "codepoints": [8203] }, 2114 | { "index": "Zeta", "codepoints": [918] }, 2115 | { "index": "zeta", "codepoints": [950] }, 2116 | { "index": "zfr", "codepoints": [120119] }, 2117 | { "index": "Zfr", "codepoints": [8488] }, 2118 | { "index": "ZHcy", "codepoints": [1046] }, 2119 | { "index": "zhcy", "codepoints": [1078] }, 2120 | { "index": "zigrarr", "codepoints": [8669] }, 2121 | { "index": "zopf", "codepoints": [120171] }, 2122 | { "index": "Zopf", "codepoints": [8484] }, 2123 | { "index": "Zscr", "codepoints": [119989] }, 2124 | { "index": "zscr", "codepoints": [120015] }, 2125 | { "index": "zwj", "codepoints": [8205] }, 2126 | { "index": "zwnj", "codepoints": [8204] } 2127 | ] --------------------------------------------------------------------------------