// Generated static ranges for Unicode Grapheme_Cluster_Break=Extend data
// Total ranges: 345
// Generated on: 2025-09-01T10:23:51.699Z

// Static ranges for extending characters

///|
let range_from : Array[Int] = [
  768, 1155, 1425, 1471, 1473, 1476, 1479, 1552, 1611, 1648, 1750, 1759, 1767, 1770,
  1809, 1840, 1958, 2027, 2045, 2070, 2075, 2085, 2089, 2137, 2259, 2275, 2362, 2364,
  2369, 2381, 2385, 2402, 2433, 2492, 2494, 2497, 2509, 2519, 2530, 2558, 2561, 2620,
  2625, 2631, 2635, 2641, 2672, 2677, 2689, 2748, 2753, 2759, 2765, 2786, 2810, 2817,
  2876, 2878, 2881, 2893, 2901, 2914, 2946, 3006, 3008, 3021, 3031, 3072, 3076, 3134,
  3142, 3146, 3157, 3170, 3201, 3260, 3263, 3266, 3270, 3276, 3285, 3298, 3328, 3387,
  3390, 3393, 3405, 3415, 3426, 3457, 3530, 3535, 3538, 3542, 3551, 3633, 3636, 3655,
  3761, 3764, 3784, 3864, 3893, 3895, 3897, 3953, 3968, 3974, 3981, 3993, 4038, 4141,
  4146, 4153, 4157, 4184, 4190, 4209, 4226, 4229, 4237, 4253, 4957, 5906, 5938, 5970,
  6002, 6068, 6071, 6086, 6089, 6109, 6155, 6277, 6313, 6432, 6439, 6450, 6457, 6679,
  6683, 6742, 6744, 6752, 6754, 6757, 6771, 6783, 6832, 6912, 6964, 6972, 6978, 7019,
  7040, 7074, 7080, 7083, 7142, 7144, 7149, 7151, 7212, 7222, 7376, 7380, 7394, 7405,
  7412, 7416, 7616, 7675, 8204, 8400, 11503, 11647, 11744, 12330, 12441, 42607, 42612,
  42654, 42736, 43010, 43014, 43019, 43045, 43052, 43204, 43232, 43263, 43302, 43335,
  43392, 43443, 43446, 43452, 43493, 43561, 43569, 43573, 43587, 43596, 43644, 43696,
  43698, 43703, 43710, 43713, 43756, 43766, 44005, 44008, 44013, 64286, 65024, 65056,
  65438, 66045, 66272, 66422, 68097, 68101, 68108, 68152, 68159, 68325, 68900, 69291,
  69446, 69633, 69688, 69759, 69811, 69817, 69888, 69927, 69933, 70003, 70016, 70070,
  70089, 70095, 70191, 70196, 70198, 70206, 70367, 70371, 70400, 70459, 70462, 70464,
  70487, 70502, 70512, 70712, 70722, 70726, 70750, 70832, 70835, 70842, 70845, 70847,
  70850, 71087, 71090, 71100, 71103, 71132, 71219, 71229, 71231, 71339, 71341, 71344,
  71351, 71453, 71458, 71463, 71727, 71737, 71984, 71995, 71998, 72003, 72148, 72154,
  72160, 72193, 72243, 72251, 72263, 72273, 72281, 72330, 72344, 72752, 72760, 72767,
  72850, 72874, 72882, 72885, 73009, 73018, 73020, 73023, 73031, 73104, 73109, 73111,
  73459, 92912, 92976, 94031, 94095, 94180, 113821, 119141, 119143, 119150, 119163,
  119173, 119210, 119362, 121344, 121403, 121461, 121476, 121499, 121505, 122880,
  122888, 122907, 122915, 122918, 123184, 123628, 125136, 125252, 127995, 917536,
  917760,
]

///|
let range_to : Array[Int] = [
  880, 1162, 1470, 1472, 1475, 1478, 1480, 1563, 1632, 1649, 1757, 1765, 1769, 1774,
  1810, 1867, 1969, 2036, 2046, 2074, 2084, 2088, 2094, 2140, 2274, 2307, 2363, 2365,
  2377, 2382, 2392, 2404, 2434, 2493, 2495, 2501, 2510, 2520, 2532, 2559, 2563, 2621,
  2627, 2633, 2638, 2642, 2674, 2678, 2691, 2749, 2758, 2761, 2766, 2788, 2816, 2818,
  2877, 2880, 2885, 2894, 2904, 2916, 2947, 3007, 3009, 3022, 3032, 3073, 3077, 3137,
  3145, 3150, 3159, 3172, 3202, 3261, 3264, 3267, 3271, 3278, 3287, 3300, 3330, 3389,
  3391, 3397, 3406, 3416, 3428, 3458, 3531, 3536, 3541, 3543, 3552, 3634, 3643, 3663,
  3762, 3773, 3790, 3866, 3894, 3896, 3898, 3967, 3973, 3976, 3992, 4029, 4039, 4145,
  4152, 4155, 4159, 4186, 4193, 4213, 4227, 4231, 4238, 4254, 4960, 5909, 5941, 5972,
  6004, 6070, 6078, 6087, 6100, 6110, 6158, 6279, 6314, 6435, 6441, 6451, 6460, 6681,
  6684, 6743, 6751, 6753, 6755, 6765, 6781, 6784, 6849, 6916, 6971, 6973, 6979, 7028,
  7042, 7078, 7082, 7086, 7143, 7146, 7150, 7154, 7220, 7224, 7379, 7393, 7401, 7406,
  7413, 7418, 7674, 7680, 8205, 8433, 11506, 11648, 11776, 12336, 12443, 42611, 42622,
  42656, 42738, 43011, 43015, 43020, 43047, 43053, 43206, 43250, 43264, 43310, 43346,
  43395, 43444, 43450, 43454, 43494, 43567, 43571, 43575, 43588, 43597, 43645, 43697,
  43701, 43705, 43712, 43714, 43758, 43767, 44006, 44009, 44014, 64287, 65040, 65072,
  65440, 66046, 66273, 66427, 68100, 68103, 68112, 68155, 68160, 68327, 68904, 69293,
  69457, 69634, 69703, 69762, 69815, 69819, 69891, 69932, 69941, 70004, 70018, 70079,
  70093, 70096, 70194, 70197, 70200, 70207, 70368, 70379, 70402, 70461, 70463, 70465,
  70488, 70509, 70517, 70720, 70725, 70727, 70751, 70833, 70841, 70843, 70846, 70849,
  70852, 71088, 71094, 71102, 71105, 71134, 71227, 71230, 71233, 71340, 71342, 71350,
  71352, 71456, 71462, 71468, 71736, 71739, 71985, 71997, 71999, 72004, 72152, 72156,
  72161, 72203, 72249, 72255, 72264, 72279, 72284, 72343, 72346, 72759, 72766, 72768,
  72872, 72881, 72884, 72887, 73015, 73019, 73022, 73030, 73032, 73106, 73110, 73112,
  73461, 92917, 92983, 94032, 94099, 94181, 113823, 119142, 119146, 119155, 119171,
  119180, 119214, 119365, 121399, 121453, 121462, 121477, 121504, 121520, 122887,
  122905, 122914, 122917, 122923, 123191, 123632, 125143, 125259, 128000, 917632,
  918000,
]

///|
pub fn is_extending_char(code : Int) -> Bool {
  if code < 768 {
    return false
  }
  let mut from = 0
  let mut to = range_from.length()
  while true {
    let mid = (from + to) / 2
    if code < range_from[mid] {
      to = mid
    } else if code >= range_to[mid] {
      from = mid + 1
    } else {
      return true
    }
    if from == to {
      return false
    }
  }
  false // unreachable
}