packages feed

idna2008-1.0.0.0: internal/Text/IDNA2008/Internal/Joining/Data.hs

-- |
-- Module      : Text.IDNA2008.Internal.Joining.Data
-- Description : Compact codepoint range tables for the Unicode
--               Joining_Type and Virama (Canonical_Combining_Class
--               = 9) properties consulted by the CONTEXTJ
--               contextual rules.
-- Copyright   : (c) Viktor Dukhovni, 2026
-- License     : BSD-3-Clause
--
-- Maintainer  : ietf-dane@dukhovni.org
-- Stability   : unstable
--
-- AUTOMATICALLY GENERATED.  Do not edit by hand.  Regenerate with:
--
--   python3 internal/tools/genIdnaJoining.py <unicode-version> \\
--           <DerivedJoiningType.txt> <DerivedCombiningClass.txt>
--
-- Source: https://www.unicode.org/Public/17.0.0/ucd/extracted/
-- Aligned with: Unicode 17.0.0
-- Joining_Type ranges: 524
-- Virama ranges: 58
--
-- The four Joining_Type values relevant to RFC 5892 A.1 are encoded
-- as a 'Word8' tag per range:
--
--   * 1 = L (Left_Joining)
--   * 2 = R (Right_Joining)
--   * 3 = D (Dual_Joining)
--   * 4 = T (Transparent)
--
-- Joining_Type=C (Join_Causing, including ZWJ\/ZWNJ themselves and
-- Arabic Tatweel @U+0640@) and Joining_Type=U (Non_Joining) are not
-- encoded: at any position a codepoint with one of those types is a
-- \"stop\" for the regex.
module Text.IDNA2008.Internal.Joining.Data
    ( -- * Joining_Type
      jtRangeCount
    , jtRangeStarts
    , jtRangeEnds
    , jtRangeTags

      -- * Joining_Type tag values
    , jtTagL
    , jtTagR
    , jtTagD
    , jtTagT

      -- * Virama (CCC = 9)
    , viramaRangeCount
    , viramaRanges
    ) where

import Data.Array.Byte (ByteArray)
import Data.Word (Word8, Word32)
import qualified Data.Primitive.ByteArray as PBA

----------------------------------------------------------------------
-- Joining_Type
----------------------------------------------------------------------

-- | Tag value for Joining_Type=L (Left_Joining).
jtTagL :: Word8
jtTagL = 1

-- | Tag value for Joining_Type=R (Right_Joining).
jtTagR :: Word8
jtTagR = 2

-- | Tag value for Joining_Type=D (Dual_Joining).
jtTagD :: Word8
jtTagD = 3

-- | Tag value for Joining_Type=T (Transparent).
jtTagT :: Word8
jtTagT = 4

-- | Number of joining-type ranges.
jtRangeCount :: Int
jtRangeCount = 524

-- | Inclusive range starts, sorted ascending.
jtRangeStarts :: ByteArray
jtRangeStarts = PBA.byteArrayFromList
    [ (0x0000AD :: Word32)
    , 0x000300
    , 0x000483
    , 0x000591
    , 0x0005BF
    , 0x0005C1
    , 0x0005C4
    , 0x0005C7
    , 0x000610
    , 0x00061C
    , 0x000620
    , 0x000622
    , 0x000626
    , 0x000627
    , 0x000628
    , 0x000629
    , 0x00062A
    , 0x00062F
    , 0x000633
    , 0x000641
    , 0x000648
    , 0x000649
    , 0x00064B
    , 0x00066E
    , 0x000670
    , 0x000671
    , 0x000675
    , 0x000678
    , 0x000688
    , 0x00069A
    , 0x0006C0
    , 0x0006C1
    , 0x0006C3
    , 0x0006CC
    , 0x0006CD
    , 0x0006CE
    , 0x0006CF
    , 0x0006D0
    , 0x0006D2
    , 0x0006D5
    , 0x0006D6
    , 0x0006DF
    , 0x0006E7
    , 0x0006EA
    , 0x0006EE
    , 0x0006FA
    , 0x0006FF
    , 0x00070F
    , 0x000710
    , 0x000711
    , 0x000712
    , 0x000715
    , 0x00071A
    , 0x00071E
    , 0x00071F
    , 0x000728
    , 0x000729
    , 0x00072A
    , 0x00072B
    , 0x00072C
    , 0x00072D
    , 0x00072F
    , 0x000730
    , 0x00074D
    , 0x00074E
    , 0x000759
    , 0x00075C
    , 0x00076B
    , 0x00076D
    , 0x000771
    , 0x000772
    , 0x000773
    , 0x000775
    , 0x000778
    , 0x00077A
    , 0x0007A6
    , 0x0007CA
    , 0x0007EB
    , 0x0007FD
    , 0x000816
    , 0x00081B
    , 0x000825
    , 0x000829
    , 0x000840
    , 0x000841
    , 0x000846
    , 0x000848
    , 0x000849
    , 0x00084A
    , 0x000854
    , 0x000855
    , 0x000856
    , 0x000859
    , 0x000860
    , 0x000862
    , 0x000867
    , 0x000868
    , 0x000869
    , 0x000870
    , 0x000886
    , 0x000889
    , 0x00088E
    , 0x00088F
    , 0x000897
    , 0x0008A0
    , 0x0008AA
    , 0x0008AE
    , 0x0008AF
    , 0x0008B1
    , 0x0008B3
    , 0x0008B9
    , 0x0008BA
    , 0x0008CA
    , 0x0008E3
    , 0x00093A
    , 0x00093C
    , 0x000941
    , 0x00094D
    , 0x000951
    , 0x000962
    , 0x000981
    , 0x0009BC
    , 0x0009C1
    , 0x0009CD
    , 0x0009E2
    , 0x0009FE
    , 0x000A01
    , 0x000A3C
    , 0x000A41
    , 0x000A47
    , 0x000A4B
    , 0x000A51
    , 0x000A70
    , 0x000A75
    , 0x000A81
    , 0x000ABC
    , 0x000AC1
    , 0x000AC7
    , 0x000ACD
    , 0x000AE2
    , 0x000AFA
    , 0x000B01
    , 0x000B3C
    , 0x000B3F
    , 0x000B41
    , 0x000B4D
    , 0x000B55
    , 0x000B62
    , 0x000B82
    , 0x000BC0
    , 0x000BCD
    , 0x000C00
    , 0x000C04
    , 0x000C3C
    , 0x000C3E
    , 0x000C46
    , 0x000C4A
    , 0x000C55
    , 0x000C62
    , 0x000C81
    , 0x000CBC
    , 0x000CBF
    , 0x000CC6
    , 0x000CCC
    , 0x000CE2
    , 0x000D00
    , 0x000D3B
    , 0x000D41
    , 0x000D4D
    , 0x000D62
    , 0x000D81
    , 0x000DCA
    , 0x000DD2
    , 0x000DD6
    , 0x000E31
    , 0x000E34
    , 0x000E47
    , 0x000EB1
    , 0x000EB4
    , 0x000EC8
    , 0x000F18
    , 0x000F35
    , 0x000F37
    , 0x000F39
    , 0x000F71
    , 0x000F80
    , 0x000F86
    , 0x000F8D
    , 0x000F99
    , 0x000FC6
    , 0x00102D
    , 0x001032
    , 0x001039
    , 0x00103D
    , 0x001058
    , 0x00105E
    , 0x001071
    , 0x001082
    , 0x001085
    , 0x00108D
    , 0x00109D
    , 0x00135D
    , 0x001712
    , 0x001732
    , 0x001752
    , 0x001772
    , 0x0017B4
    , 0x0017B7
    , 0x0017C6
    , 0x0017C9
    , 0x0017DD
    , 0x001807
    , 0x00180B
    , 0x00180F
    , 0x001820
    , 0x001885
    , 0x001887
    , 0x0018A9
    , 0x0018AA
    , 0x001920
    , 0x001927
    , 0x001932
    , 0x001939
    , 0x001A17
    , 0x001A1B
    , 0x001A56
    , 0x001A58
    , 0x001A60
    , 0x001A62
    , 0x001A65
    , 0x001A73
    , 0x001A7F
    , 0x001AB0
    , 0x001AE0
    , 0x001B00
    , 0x001B34
    , 0x001B36
    , 0x001B3C
    , 0x001B42
    , 0x001B6B
    , 0x001B80
    , 0x001BA2
    , 0x001BA8
    , 0x001BAB
    , 0x001BE6
    , 0x001BE8
    , 0x001BED
    , 0x001BEF
    , 0x001C2C
    , 0x001C36
    , 0x001CD0
    , 0x001CD4
    , 0x001CE2
    , 0x001CED
    , 0x001CF4
    , 0x001CF8
    , 0x001DC0
    , 0x00200B
    , 0x00200E
    , 0x00202A
    , 0x002060
    , 0x00206A
    , 0x0020D0
    , 0x002CEF
    , 0x002D7F
    , 0x002DE0
    , 0x00302A
    , 0x003099
    , 0x00A66F
    , 0x00A674
    , 0x00A69E
    , 0x00A6F0
    , 0x00A802
    , 0x00A806
    , 0x00A80B
    , 0x00A825
    , 0x00A82C
    , 0x00A840
    , 0x00A872
    , 0x00A8C4
    , 0x00A8E0
    , 0x00A8FF
    , 0x00A926
    , 0x00A947
    , 0x00A980
    , 0x00A9B3
    , 0x00A9B6
    , 0x00A9BC
    , 0x00A9E5
    , 0x00AA29
    , 0x00AA31
    , 0x00AA35
    , 0x00AA43
    , 0x00AA4C
    , 0x00AA7C
    , 0x00AAB0
    , 0x00AAB2
    , 0x00AAB7
    , 0x00AABE
    , 0x00AAC1
    , 0x00AAEC
    , 0x00AAF6
    , 0x00ABE5
    , 0x00ABE8
    , 0x00ABED
    , 0x00FB1E
    , 0x00FE00
    , 0x00FE20
    , 0x00FEFF
    , 0x00FFF9
    , 0x0101FD
    , 0x0102E0
    , 0x010376
    , 0x010A01
    , 0x010A05
    , 0x010A0C
    , 0x010A38
    , 0x010A3F
    , 0x010AC0
    , 0x010AC5
    , 0x010AC7
    , 0x010AC9
    , 0x010ACD
    , 0x010ACE
    , 0x010AD3
    , 0x010AD7
    , 0x010AD8
    , 0x010ADD
    , 0x010ADE
    , 0x010AE1
    , 0x010AE4
    , 0x010AE5
    , 0x010AEB
    , 0x010AEF
    , 0x010B80
    , 0x010B81
    , 0x010B82
    , 0x010B83
    , 0x010B86
    , 0x010B89
    , 0x010B8A
    , 0x010B8C
    , 0x010B8D
    , 0x010B8E
    , 0x010B90
    , 0x010B91
    , 0x010BA9
    , 0x010BAD
    , 0x010D00
    , 0x010D01
    , 0x010D22
    , 0x010D23
    , 0x010D24
    , 0x010D69
    , 0x010EAB
    , 0x010EC2
    , 0x010EC3
    , 0x010EC6
    , 0x010EFA
    , 0x010F30
    , 0x010F33
    , 0x010F34
    , 0x010F46
    , 0x010F51
    , 0x010F54
    , 0x010F70
    , 0x010F74
    , 0x010F76
    , 0x010F82
    , 0x010FB0
    , 0x010FB2
    , 0x010FB4
    , 0x010FB8
    , 0x010FB9
    , 0x010FBB
    , 0x010FBD
    , 0x010FBE
    , 0x010FC1
    , 0x010FC2
    , 0x010FC4
    , 0x010FC9
    , 0x010FCA
    , 0x010FCB
    , 0x011001
    , 0x011038
    , 0x011070
    , 0x011073
    , 0x01107F
    , 0x0110B3
    , 0x0110B9
    , 0x0110C2
    , 0x011100
    , 0x011127
    , 0x01112D
    , 0x011173
    , 0x011180
    , 0x0111B6
    , 0x0111C9
    , 0x0111CF
    , 0x01122F
    , 0x011234
    , 0x011236
    , 0x01123E
    , 0x011241
    , 0x0112DF
    , 0x0112E3
    , 0x011300
    , 0x01133B
    , 0x011340
    , 0x011366
    , 0x011370
    , 0x0113BB
    , 0x0113CE
    , 0x0113D0
    , 0x0113D2
    , 0x0113E1
    , 0x011438
    , 0x011442
    , 0x011446
    , 0x01145E
    , 0x0114B3
    , 0x0114BA
    , 0x0114BF
    , 0x0114C2
    , 0x0115B2
    , 0x0115BC
    , 0x0115BF
    , 0x0115DC
    , 0x011633
    , 0x01163D
    , 0x01163F
    , 0x0116AB
    , 0x0116AD
    , 0x0116B0
    , 0x0116B7
    , 0x01171D
    , 0x01171F
    , 0x011722
    , 0x011727
    , 0x01182F
    , 0x011839
    , 0x01193B
    , 0x01193E
    , 0x011943
    , 0x0119D4
    , 0x0119DA
    , 0x0119E0
    , 0x011A01
    , 0x011A33
    , 0x011A3B
    , 0x011A47
    , 0x011A51
    , 0x011A59
    , 0x011A8A
    , 0x011A98
    , 0x011B60
    , 0x011B62
    , 0x011B66
    , 0x011C30
    , 0x011C38
    , 0x011C3F
    , 0x011C92
    , 0x011CAA
    , 0x011CB2
    , 0x011CB5
    , 0x011D31
    , 0x011D3A
    , 0x011D3C
    , 0x011D3F
    , 0x011D47
    , 0x011D90
    , 0x011D95
    , 0x011D97
    , 0x011EF3
    , 0x011F00
    , 0x011F36
    , 0x011F40
    , 0x011F42
    , 0x011F5A
    , 0x013430
    , 0x013447
    , 0x01611E
    , 0x01612D
    , 0x016AF0
    , 0x016B30
    , 0x016F4F
    , 0x016F8F
    , 0x016FE4
    , 0x01BC9D
    , 0x01BCA0
    , 0x01CF00
    , 0x01CF30
    , 0x01D167
    , 0x01D173
    , 0x01D185
    , 0x01D1AA
    , 0x01D242
    , 0x01DA00
    , 0x01DA3B
    , 0x01DA75
    , 0x01DA84
    , 0x01DA9B
    , 0x01DAA1
    , 0x01E000
    , 0x01E008
    , 0x01E01B
    , 0x01E023
    , 0x01E026
    , 0x01E08F
    , 0x01E130
    , 0x01E2AE
    , 0x01E2EC
    , 0x01E4EC
    , 0x01E5EE
    , 0x01E6E3
    , 0x01E6E6
    , 0x01E6EE
    , 0x01E6F5
    , 0x01E8D0
    , 0x01E900
    , 0x01E944
    , 0x0E0001
    , 0x0E0020
    , 0x0E0100
    ]

-- | Inclusive range ends, parallel to 'jtRangeStarts'.
jtRangeEnds :: ByteArray
jtRangeEnds = PBA.byteArrayFromList
    [ (0x0000AD :: Word32)
    , 0x00036F
    , 0x000489
    , 0x0005BD
    , 0x0005BF
    , 0x0005C2
    , 0x0005C5
    , 0x0005C7
    , 0x00061A
    , 0x00061C
    , 0x000620
    , 0x000625
    , 0x000626
    , 0x000627
    , 0x000628
    , 0x000629
    , 0x00062E
    , 0x000632
    , 0x00063F
    , 0x000647
    , 0x000648
    , 0x00064A
    , 0x00065F
    , 0x00066F
    , 0x000670
    , 0x000673
    , 0x000677
    , 0x000687
    , 0x000699
    , 0x0006BF
    , 0x0006C0
    , 0x0006C2
    , 0x0006CB
    , 0x0006CC
    , 0x0006CD
    , 0x0006CE
    , 0x0006CF
    , 0x0006D1
    , 0x0006D3
    , 0x0006D5
    , 0x0006DC
    , 0x0006E4
    , 0x0006E8
    , 0x0006ED
    , 0x0006EF
    , 0x0006FC
    , 0x0006FF
    , 0x00070F
    , 0x000710
    , 0x000711
    , 0x000714
    , 0x000719
    , 0x00071D
    , 0x00071E
    , 0x000727
    , 0x000728
    , 0x000729
    , 0x00072A
    , 0x00072B
    , 0x00072C
    , 0x00072E
    , 0x00072F
    , 0x00074A
    , 0x00074D
    , 0x000758
    , 0x00075B
    , 0x00076A
    , 0x00076C
    , 0x000770
    , 0x000771
    , 0x000772
    , 0x000774
    , 0x000777
    , 0x000779
    , 0x00077F
    , 0x0007B0
    , 0x0007EA
    , 0x0007F3
    , 0x0007FD
    , 0x000819
    , 0x000823
    , 0x000827
    , 0x00082D
    , 0x000840
    , 0x000845
    , 0x000847
    , 0x000848
    , 0x000849
    , 0x000853
    , 0x000854
    , 0x000855
    , 0x000858
    , 0x00085B
    , 0x000860
    , 0x000865
    , 0x000867
    , 0x000868
    , 0x00086A
    , 0x000882
    , 0x000886
    , 0x00088D
    , 0x00088E
    , 0x00088F
    , 0x00089F
    , 0x0008A9
    , 0x0008AC
    , 0x0008AE
    , 0x0008B0
    , 0x0008B2
    , 0x0008B8
    , 0x0008B9
    , 0x0008C8
    , 0x0008E1
    , 0x000902
    , 0x00093A
    , 0x00093C
    , 0x000948
    , 0x00094D
    , 0x000957
    , 0x000963
    , 0x000981
    , 0x0009BC
    , 0x0009C4
    , 0x0009CD
    , 0x0009E3
    , 0x0009FE
    , 0x000A02
    , 0x000A3C
    , 0x000A42
    , 0x000A48
    , 0x000A4D
    , 0x000A51
    , 0x000A71
    , 0x000A75
    , 0x000A82
    , 0x000ABC
    , 0x000AC5
    , 0x000AC8
    , 0x000ACD
    , 0x000AE3
    , 0x000AFF
    , 0x000B01
    , 0x000B3C
    , 0x000B3F
    , 0x000B44
    , 0x000B4D
    , 0x000B56
    , 0x000B63
    , 0x000B82
    , 0x000BC0
    , 0x000BCD
    , 0x000C00
    , 0x000C04
    , 0x000C3C
    , 0x000C40
    , 0x000C48
    , 0x000C4D
    , 0x000C56
    , 0x000C63
    , 0x000C81
    , 0x000CBC
    , 0x000CBF
    , 0x000CC6
    , 0x000CCD
    , 0x000CE3
    , 0x000D01
    , 0x000D3C
    , 0x000D44
    , 0x000D4D
    , 0x000D63
    , 0x000D81
    , 0x000DCA
    , 0x000DD4
    , 0x000DD6
    , 0x000E31
    , 0x000E3A
    , 0x000E4E
    , 0x000EB1
    , 0x000EBC
    , 0x000ECE
    , 0x000F19
    , 0x000F35
    , 0x000F37
    , 0x000F39
    , 0x000F7E
    , 0x000F84
    , 0x000F87
    , 0x000F97
    , 0x000FBC
    , 0x000FC6
    , 0x001030
    , 0x001037
    , 0x00103A
    , 0x00103E
    , 0x001059
    , 0x001060
    , 0x001074
    , 0x001082
    , 0x001086
    , 0x00108D
    , 0x00109D
    , 0x00135F
    , 0x001714
    , 0x001733
    , 0x001753
    , 0x001773
    , 0x0017B5
    , 0x0017BD
    , 0x0017C6
    , 0x0017D3
    , 0x0017DD
    , 0x001807
    , 0x00180D
    , 0x00180F
    , 0x001878
    , 0x001886
    , 0x0018A8
    , 0x0018A9
    , 0x0018AA
    , 0x001922
    , 0x001928
    , 0x001932
    , 0x00193B
    , 0x001A18
    , 0x001A1B
    , 0x001A56
    , 0x001A5E
    , 0x001A60
    , 0x001A62
    , 0x001A6C
    , 0x001A7C
    , 0x001A7F
    , 0x001ADD
    , 0x001AEB
    , 0x001B03
    , 0x001B34
    , 0x001B3A
    , 0x001B3C
    , 0x001B42
    , 0x001B73
    , 0x001B81
    , 0x001BA5
    , 0x001BA9
    , 0x001BAD
    , 0x001BE6
    , 0x001BE9
    , 0x001BED
    , 0x001BF1
    , 0x001C33
    , 0x001C37
    , 0x001CD2
    , 0x001CE0
    , 0x001CE8
    , 0x001CED
    , 0x001CF4
    , 0x001CF9
    , 0x001DFF
    , 0x00200B
    , 0x00200F
    , 0x00202E
    , 0x002064
    , 0x00206F
    , 0x0020F0
    , 0x002CF1
    , 0x002D7F
    , 0x002DFF
    , 0x00302D
    , 0x00309A
    , 0x00A672
    , 0x00A67D
    , 0x00A69F
    , 0x00A6F1
    , 0x00A802
    , 0x00A806
    , 0x00A80B
    , 0x00A826
    , 0x00A82C
    , 0x00A871
    , 0x00A872
    , 0x00A8C5
    , 0x00A8F1
    , 0x00A8FF
    , 0x00A92D
    , 0x00A951
    , 0x00A982
    , 0x00A9B3
    , 0x00A9B9
    , 0x00A9BD
    , 0x00A9E5
    , 0x00AA2E
    , 0x00AA32
    , 0x00AA36
    , 0x00AA43
    , 0x00AA4C
    , 0x00AA7C
    , 0x00AAB0
    , 0x00AAB4
    , 0x00AAB8
    , 0x00AABF
    , 0x00AAC1
    , 0x00AAED
    , 0x00AAF6
    , 0x00ABE5
    , 0x00ABE8
    , 0x00ABED
    , 0x00FB1E
    , 0x00FE0F
    , 0x00FE2F
    , 0x00FEFF
    , 0x00FFFB
    , 0x0101FD
    , 0x0102E0
    , 0x01037A
    , 0x010A03
    , 0x010A06
    , 0x010A0F
    , 0x010A3A
    , 0x010A3F
    , 0x010AC4
    , 0x010AC5
    , 0x010AC7
    , 0x010ACA
    , 0x010ACD
    , 0x010AD2
    , 0x010AD6
    , 0x010AD7
    , 0x010ADC
    , 0x010ADD
    , 0x010AE0
    , 0x010AE1
    , 0x010AE4
    , 0x010AE6
    , 0x010AEE
    , 0x010AEF
    , 0x010B80
    , 0x010B81
    , 0x010B82
    , 0x010B85
    , 0x010B88
    , 0x010B89
    , 0x010B8B
    , 0x010B8C
    , 0x010B8D
    , 0x010B8F
    , 0x010B90
    , 0x010B91
    , 0x010BAC
    , 0x010BAE
    , 0x010D00
    , 0x010D21
    , 0x010D22
    , 0x010D23
    , 0x010D27
    , 0x010D6D
    , 0x010EAC
    , 0x010EC2
    , 0x010EC4
    , 0x010EC7
    , 0x010EFF
    , 0x010F32
    , 0x010F33
    , 0x010F44
    , 0x010F50
    , 0x010F53
    , 0x010F54
    , 0x010F73
    , 0x010F75
    , 0x010F81
    , 0x010F85
    , 0x010FB0
    , 0x010FB3
    , 0x010FB6
    , 0x010FB8
    , 0x010FBA
    , 0x010FBC
    , 0x010FBD
    , 0x010FBF
    , 0x010FC1
    , 0x010FC3
    , 0x010FC4
    , 0x010FC9
    , 0x010FCA
    , 0x010FCB
    , 0x011001
    , 0x011046
    , 0x011070
    , 0x011074
    , 0x011081
    , 0x0110B6
    , 0x0110BA
    , 0x0110C2
    , 0x011102
    , 0x01112B
    , 0x011134
    , 0x011173
    , 0x011181
    , 0x0111BE
    , 0x0111CC
    , 0x0111CF
    , 0x011231
    , 0x011234
    , 0x011237
    , 0x01123E
    , 0x011241
    , 0x0112DF
    , 0x0112EA
    , 0x011301
    , 0x01133C
    , 0x011340
    , 0x01136C
    , 0x011374
    , 0x0113C0
    , 0x0113CE
    , 0x0113D0
    , 0x0113D2
    , 0x0113E2
    , 0x01143F
    , 0x011444
    , 0x011446
    , 0x01145E
    , 0x0114B8
    , 0x0114BA
    , 0x0114C0
    , 0x0114C3
    , 0x0115B5
    , 0x0115BD
    , 0x0115C0
    , 0x0115DD
    , 0x01163A
    , 0x01163D
    , 0x011640
    , 0x0116AB
    , 0x0116AD
    , 0x0116B5
    , 0x0116B7
    , 0x01171D
    , 0x01171F
    , 0x011725
    , 0x01172B
    , 0x011837
    , 0x01183A
    , 0x01193C
    , 0x01193E
    , 0x011943
    , 0x0119D7
    , 0x0119DB
    , 0x0119E0
    , 0x011A0A
    , 0x011A38
    , 0x011A3E
    , 0x011A47
    , 0x011A56
    , 0x011A5B
    , 0x011A96
    , 0x011A99
    , 0x011B60
    , 0x011B64
    , 0x011B66
    , 0x011C36
    , 0x011C3D
    , 0x011C3F
    , 0x011CA7
    , 0x011CB0
    , 0x011CB3
    , 0x011CB6
    , 0x011D36
    , 0x011D3A
    , 0x011D3D
    , 0x011D45
    , 0x011D47
    , 0x011D91
    , 0x011D95
    , 0x011D97
    , 0x011EF4
    , 0x011F01
    , 0x011F3A
    , 0x011F40
    , 0x011F42
    , 0x011F5A
    , 0x013440
    , 0x013455
    , 0x016129
    , 0x01612F
    , 0x016AF4
    , 0x016B36
    , 0x016F4F
    , 0x016F92
    , 0x016FE4
    , 0x01BC9E
    , 0x01BCA3
    , 0x01CF2D
    , 0x01CF46
    , 0x01D169
    , 0x01D182
    , 0x01D18B
    , 0x01D1AD
    , 0x01D244
    , 0x01DA36
    , 0x01DA6C
    , 0x01DA75
    , 0x01DA84
    , 0x01DA9F
    , 0x01DAAF
    , 0x01E006
    , 0x01E018
    , 0x01E021
    , 0x01E024
    , 0x01E02A
    , 0x01E08F
    , 0x01E136
    , 0x01E2AE
    , 0x01E2EF
    , 0x01E4EF
    , 0x01E5EF
    , 0x01E6E3
    , 0x01E6E6
    , 0x01E6EF
    , 0x01E6F5
    , 0x01E8D6
    , 0x01E943
    , 0x01E94B
    , 0x0E0001
    , 0x0E007F
    , 0x0E01EF
    ]

-- | Joining_Type tag for each range, parallel to
-- 'jtRangeStarts' and 'jtRangeEnds'.
jtRangeTags :: ByteArray
jtRangeTags = PBA.byteArrayFromList
    [ (4 :: Word8)
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 3
    , 2
    , 3
    , 4
    , 3
    , 4
    , 2
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 2
    , 4
    , 4
    , 4
    , 4
    , 2
    , 3
    , 3
    , 4
    , 2
    , 4
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 4
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 4
    , 3
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 4
    , 3
    , 3
    , 2
    , 3
    , 2
    , 2
    , 3
    , 3
    , 2
    , 3
    , 4
    , 3
    , 2
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 3
    , 4
    , 4
    , 3
    , 4
    , 3
    , 4
    , 3
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 3
    , 1
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 3
    , 2
    , 2
    , 2
    , 1
    , 2
    , 3
    , 1
    , 3
    , 2
    , 3
    , 2
    , 2
    , 4
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 2
    , 3
    , 1
    , 3
    , 2
    , 3
    , 4
    , 4
    , 4
    , 2
    , 3
    , 3
    , 4
    , 3
    , 2
    , 3
    , 4
    , 3
    , 2
    , 3
    , 2
    , 3
    , 4
    , 3
    , 3
    , 2
    , 3
    , 2
    , 3
    , 2
    , 3
    , 3
    , 2
    , 3
    , 2
    , 3
    , 1
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 4
    , 3
    , 4
    , 4
    , 4
    , 4
    ]

----------------------------------------------------------------------
-- Virama (Canonical_Combining_Class = 9)
----------------------------------------------------------------------

-- | Number of (start, end) range pairs in 'viramaRanges'.
viramaRangeCount :: Int
viramaRangeCount = 58

-- | Codepoints with Canonical_Combining_Class = 9
-- (Virama), alternating start\/end.
viramaRanges :: ByteArray
viramaRanges = PBA.byteArrayFromList
    [ (0x00094D :: Word32)
    , 0x00094D
    , 0x0009CD
    , 0x0009CD
    , 0x000A4D
    , 0x000A4D
    , 0x000ACD
    , 0x000ACD
    , 0x000B4D
    , 0x000B4D
    , 0x000BCD
    , 0x000BCD
    , 0x000C4D
    , 0x000C4D
    , 0x000CCD
    , 0x000CCD
    , 0x000D3B
    , 0x000D3C
    , 0x000D4D
    , 0x000D4D
    , 0x000DCA
    , 0x000DCA
    , 0x000E3A
    , 0x000E3A
    , 0x000EBA
    , 0x000EBA
    , 0x000F84
    , 0x000F84
    , 0x001039
    , 0x00103A
    , 0x001714
    , 0x001715
    , 0x001734
    , 0x001734
    , 0x0017D2
    , 0x0017D2
    , 0x001A60
    , 0x001A60
    , 0x001B44
    , 0x001B44
    , 0x001BAA
    , 0x001BAB
    , 0x001BF2
    , 0x001BF3
    , 0x002D7F
    , 0x002D7F
    , 0x00A806
    , 0x00A806
    , 0x00A82C
    , 0x00A82C
    , 0x00A8C4
    , 0x00A8C4
    , 0x00A953
    , 0x00A953
    , 0x00A9C0
    , 0x00A9C0
    , 0x00AAF6
    , 0x00AAF6
    , 0x00ABED
    , 0x00ABED
    , 0x010A3F
    , 0x010A3F
    , 0x011046
    , 0x011046
    , 0x011070
    , 0x011070
    , 0x01107F
    , 0x01107F
    , 0x0110B9
    , 0x0110B9
    , 0x011133
    , 0x011134
    , 0x0111C0
    , 0x0111C0
    , 0x011235
    , 0x011235
    , 0x0112EA
    , 0x0112EA
    , 0x01134D
    , 0x01134D
    , 0x0113CE
    , 0x0113D0
    , 0x011442
    , 0x011442
    , 0x0114C2
    , 0x0114C2
    , 0x0115BF
    , 0x0115BF
    , 0x01163F
    , 0x01163F
    , 0x0116B6
    , 0x0116B6
    , 0x01172B
    , 0x01172B
    , 0x011839
    , 0x011839
    , 0x01193D
    , 0x01193E
    , 0x0119E0
    , 0x0119E0
    , 0x011A34
    , 0x011A34
    , 0x011A47
    , 0x011A47
    , 0x011A99
    , 0x011A99
    , 0x011C3F
    , 0x011C3F
    , 0x011D44
    , 0x011D45
    , 0x011D97
    , 0x011D97
    , 0x011F41
    , 0x011F42
    , 0x01612F
    , 0x01612F
    ]