// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:math' as math;

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';

int seed = 0;

void main() {
  runApp(MaterialApp(
    title: 'Text tester',
    home: const Home(),
    routes: <String, WidgetBuilder>{
      'underlines': (BuildContext context) => const Underlines(),
      'fallback': (BuildContext context) => const Fallback(),
      'bidi': (BuildContext context) => const Bidi(),
      'fuzzer': (BuildContext context) => Fuzzer(seed: seed),
      'zalgo': (BuildContext context) => Zalgo(seed: seed),
      'painting': (BuildContext context) => Painting(seed: seed),
    },
  ));
}

class Home extends StatefulWidget {
  const Home({ super.key });

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {
  @override
  Widget build(BuildContext context) {
    return Material(
      child: Column(
        children: <Widget>[
          Expanded(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                TextButton(
                  style: TextButton.styleFrom(
                    foregroundColor: Colors.white,
                    backgroundColor: Colors.red.shade800,
                  ),
                  onPressed: () { Navigator.pushNamed(context, 'underlines'); },
                  child: const Text('Test Underlines'),
                ),
                TextButton(
                  style: TextButton.styleFrom(
                    foregroundColor: Colors.white,
                    backgroundColor: Colors.orange.shade700,
                  ),
                  onPressed: () { Navigator.pushNamed(context, 'fallback'); },
                  child: const Text('Test Font Fallback'),
                ),
                TextButton(
                  style: TextButton.styleFrom(
                    foregroundColor: Colors.black,
                    backgroundColor: Colors.yellow.shade700,
                  ),
                  onPressed: () { Navigator.pushNamed(context, 'bidi'); },
                  child: const Text('Test Bidi Formatting'),
                ),
                TextButton(
                  style: TextButton.styleFrom(
                    foregroundColor: Colors.black,
                    backgroundColor: Colors.green.shade400,
                  ),
                  onPressed: () { Navigator.pushNamed(context, 'fuzzer'); },
                  child: const Text('TextSpan Fuzzer'),
                ),
                TextButton(
                  style: TextButton.styleFrom(
                    foregroundColor: Colors.white,
                    backgroundColor: Colors.blue.shade400,
                  ),
                  onPressed: () { Navigator.pushNamed(context, 'zalgo'); },
                  child: const Text('Diacritics Fuzzer'),
                ),
                TextButton(
                  style: TextButton.styleFrom(
                    foregroundColor: Colors.black,
                    backgroundColor: Colors.purple.shade200,
                  ),
                  onPressed: () { Navigator.pushNamed(context, 'painting'); },
                  child: const Text('Painting Fuzzer'),
                ),
              ],
            ),
          ),
          Padding(
            padding: const EdgeInsets.symmetric(horizontal: 20.0),
            child: Slider(
              max: 1024.0,
              value: seed.toDouble(),
              label: '$seed',
              divisions: 1025,
              onChanged: (double value) {
                setState(() {
                  seed = value.round();
                });
              },
            ),
          ),
          Padding(
            padding: const EdgeInsets.only(bottom: 10.0),
            child: Text('Random seed for fuzzers: $seed'),
          ),
        ],
      ),
    );
  }
}

class Fuzzer extends StatefulWidget {
  const Fuzzer({ super.key, required this.seed });

  final int seed;

  @override
  State<Fuzzer> createState() => _FuzzerState();
}

class _FuzzerState extends State<Fuzzer> with SingleTickerProviderStateMixin {
  TextSpan _textSpan = const TextSpan(text: 'Welcome to the Flutter text fuzzer.');
  late final Ticker _ticker = createTicker(_updateTextSpan)..start();
  late final math.Random _random = math.Random(widget.seed); // providing a seed is important for reproducibility;

  @override
  void initState() {
    super.initState();
    _updateTextSpan(null);
  }

  @override
  void dispose() {
    _ticker.dispose();
    super.dispose();
  }

  void _updateTextSpan(Duration? duration) {
    setState(() {
      _textSpan = _fiddleWith(_textSpan);
    });
  }

  TextSpan _fiddleWith(TextSpan node) {
    return TextSpan(
      text: _fiddleWithText(node.text),
      style: _fiddleWithStyle(node.style),
      children: _fiddleWithChildren(node.children?.map((InlineSpan child) => _fiddleWith(child as TextSpan)).toList() ?? <TextSpan>[]),
    );
  }

  String? _fiddleWithText(String? text) {
    if (_random.nextInt(10) > 0) {
      return text;
    }
    return _createRandomText();
  }

  TextStyle? _fiddleWithStyle(TextStyle? style) {
    if (style == null) {
      switch (_random.nextInt(20)) {
        case 0:
          return const TextStyle();
        case 1:
          style = const TextStyle(); // is mutated below
        default:
          return null;
      }
    }
    if (_random.nextInt(200) == 0) {
      return null;
    }
    return TextStyle(
      color: _fiddleWithColor(style.color),
      decoration: _fiddleWithDecoration(style.decoration),
      decorationColor: _fiddleWithColor(style.decorationColor),
      decorationStyle: _fiddleWithDecorationStyle(style.decorationStyle),
      fontWeight: _fiddleWithFontWeight(style.fontWeight),
      fontStyle: _fiddleWithFontStyle(style.fontStyle),
      // TODO(ianh): Check textBaseline once we support that
      fontFamily: _fiddleWithFontFamily(style.fontFamily),
      fontSize: _fiddleWithDouble(style.fontSize, 14.0, 100.0),
      letterSpacing: _fiddleWithDouble(style.letterSpacing, 0.0, 30.0),
      wordSpacing: _fiddleWithDouble(style.wordSpacing, 0.0, 30.0),
      height: _fiddleWithDouble(style.height, 1.0, 1.9),
    );
  }

  Color? _fiddleWithColor(Color? value) {
    switch (_random.nextInt(10)) {
      case 0:
        if (value == null) {
          return pickFromList<MaterialColor>(_random, Colors.primaries)[(_random.nextInt(9) + 1) * 100];
        }
        switch (_random.nextInt(4)) {
          case 0:
            return value.withAlpha(value.alpha + _random.nextInt(10) - 5);
          case 1:
            return value.withRed(value.red + _random.nextInt(10) - 5);
          case 2:
            return value.withGreen(value.green + _random.nextInt(10) - 5);
          case 3:
            return value.withBlue(value.blue + _random.nextInt(10) - 5);
        }
      case 1:
        return null;
    }
    return value;
  }

  TextDecoration? _fiddleWithDecoration(TextDecoration? value) {
    if (_random.nextInt(10) > 0) {
      return value;
    }
    switch (_random.nextInt(100)) {
      case 10:
        return TextDecoration.underline;
      case 11:
        return TextDecoration.underline;
      case 12:
        return TextDecoration.underline;
      case 13:
        return TextDecoration.underline;
      case 20:
        return TextDecoration.lineThrough;
      case 30:
        return TextDecoration.overline;
      case 90:
        return TextDecoration.combine(<TextDecoration>[TextDecoration.underline, TextDecoration.lineThrough]);
      case 91:
        return TextDecoration.combine(<TextDecoration>[TextDecoration.underline, TextDecoration.overline]);
      case 92:
        return TextDecoration.combine(<TextDecoration>[TextDecoration.lineThrough, TextDecoration.overline]);
      case 93:
        return TextDecoration.combine(<TextDecoration>[TextDecoration.underline, TextDecoration.lineThrough, TextDecoration.overline]);
    }
    return null;
  }

  TextDecorationStyle? _fiddleWithDecorationStyle(TextDecorationStyle? value) {
    switch (_random.nextInt(10)) {
      case 0:
        return null;
      case 1:
        return pickFromList<TextDecorationStyle>(_random, TextDecorationStyle.values);
    }
    return value;
  }

  FontWeight? _fiddleWithFontWeight(FontWeight? value) {
    switch (_random.nextInt(10)) {
      case 0:
        return null;
      case 1:
        return pickFromList<FontWeight>(_random, FontWeight.values);
    }
    return value;
  }

  FontStyle? _fiddleWithFontStyle(FontStyle? value) {
    switch (_random.nextInt(10)) {
      case 0:
        return null;
      case 1:
        return pickFromList<FontStyle>(_random, FontStyle.values);
    }
    return value;
  }

  String? _fiddleWithFontFamily(String? value) {
    switch (_random.nextInt(10)) {
      case 0:
        return null;
      case 1:
        return 'sans-serif';
      case 2:
        return 'sans-serif-condensed';
      case 3:
        return 'serif';
      case 4:
        return 'monospace';
      case 5:
        return 'serif-monospace';
      case 6:
        return 'casual';
      case 7:
        return 'cursive';
      case 8:
        return 'sans-serif-smallcaps';
    }
    return value;
  }

  double? _fiddleWithDouble(double? value, double defaultValue, double max) {
    switch (_random.nextInt(10)) {
      case 0:
        if (value == null) {
          return math.min(defaultValue * (0.95 + _random.nextDouble() * 0.1), max);
        }
        return math.min(value * (0.51 + _random.nextDouble()), max);
      case 1:
        return null;
    }
    return value;
  }

  List<TextSpan>? _fiddleWithChildren(List<TextSpan> children) {
    switch (_random.nextInt(100)) {
      case 0:
      case 1:
      case 2:
      case 3:
      case 4:
        children.insert(_random.nextInt(children.length + 1), _createRandomTextSpan());
      case 10:
        children = children.reversed.toList();
      case 20:
        if (children.isEmpty) {
          break;
        }
        if (_random.nextInt(10) > 0) {
          break;
        }
        final int index = _random.nextInt(children.length);
        if (depthOf(children[index]) < 3) {
          children.removeAt(index);
        }
    }
    if (children.isEmpty && _random.nextBool()) {
      return null;
    }
    return children;
  }

  int depthOf(TextSpan node) {
    if (node.children == null || (node.children?.isEmpty ?? false)) {
      return 0;
    }
    int result = 0;
    for (final TextSpan child in node.children!.cast<TextSpan>()) {
      result = math.max(result, depthOf(child));
    }
    return result;
  }

  TextSpan _createRandomTextSpan() {
    return TextSpan(
      text: _createRandomText(),
    );
  }

  String? _createRandomText() {
    switch (_random.nextInt(90)) {
      case 0:
      case 1:
      case 2:
      case 3:
      case 4:
      case 5:
      case 6:
        return 'ABC';
      case 7:
      case 8:
      case 9:
      case 10:
        return 'أمثولة'; // "Example" or "lesson" in Arabic
      case 11:
      case 12:
      case 13:
      case 14:
        return 'אבג'; // Hebrew ABC
      case 15:
        return '';
      case 16:
        return ' ';
      case 17:
        return '\n';
      case 18:
        return '\t';
      case 19:
        return '\r';
      case 20:
        return Unicode.RLE;
      case 21:
        return Unicode.LRE;
      case 22:
        return Unicode.LRO;
      case 23:
        return Unicode.RLO;
      case 24:
      case 25:
      case 26:
      case 27:
        return Unicode.PDF;
      case 28:
        return Unicode.LRM;
      case 29:
        return Unicode.RLM;
      case 30:
        return Unicode.RLI;
      case 31:
        return Unicode.LRI;
      case 32:
        return Unicode.FSI;
      case 33:
      case 34:
      case 35:
        return Unicode.PDI;
      case 36:
      case 37:
      case 38:
      case 39:
      case 40:
        return ' Hello ';
      case 41:
      case 42:
      case 43:
      case 44:
      case 45:
        return ' World ';
      case 46:
        return 'Flutter';
      case 47:
        return 'Fuzz';
      case 48:
        return 'Test';
      case 49:
        return '𠜎𠜱𠝹𠱓𠱸𠲖𠳏𠳕𠴕𠵼𠵿𠸎𠸏𠹷𠺝𠺢𠻗𠻹𠻺𠼭𠼮𠽌𠾴𠾼𠿪𡁜𡁯𡁵𡁶𡁻𡃁𡃉𡇙𢃇𢞵𢫕𢭃𢯊𢱑𢱕𢳂𢴈𢵌𢵧𢺳𣲷𤓓𤶸𤷪𥄫𦉘𦟌𦧲𦧺𧨾𨅝𨈇𨋢𨳊𨳍𨳒𩶘'; // http://www.i18nguy.com/unicode/supplementary-test.html
      case 50: // any random character
        return String.fromCharCode(_random.nextInt(0x10FFFF + 1));
      case 51:
        return '\u00DF'; // SS
      case 52:
        return '\u2002'; // En space
      case 53:
        return '\u2003'; // Em space
      case 54:
        return '\u200B'; // zero-width space
      case 55:
        return '\u00A0'; // non-breaking space
      case 56:
        return '\u00FF'; // y-diaresis
      case 57:
        return '\u0178'; // Y-diaresis
      case 58:
        return '\u2060'; // Word Joiner
      case 59: // random BMP character
      case 60: // random BMP character
      case 61: // random BMP character
      case 62: // random BMP character
      case 63: // random BMP character
        return String.fromCharCode(_random.nextInt(0xFFFF));
      case 64: // random emoji
      case 65: // random emoji
        return String.fromCharCode(0x1F000 + _random.nextInt(0x9FF));
      case 66:
        final String value = zalgo(_random, _random.nextInt(4) + 2);
        return 'Z{$value}Z';
      case 67:
        return 'Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν';
      case 68:
        return 'გთხოვთ ახლავე გაიაროთ რეგისტრაცია';
      case 69:
        return 'Зарегистрируйтесь сейчас';
      case 70:
        return 'แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช';
      case 71:
        return 'ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ';
      case 72:
        return '⡌⠁⠧⠑ ⠼⠁⠒  ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌';
      case 73:
        return 'コンニチハ';
      case 74:
      case 75:
      case 76:
      case 77:
      case 78:
      case 79:
      case 80:
      case 81:
      case 82:
        final StringBuffer buffer = StringBuffer();
        final int targetLength = _random.nextInt(8) + 1;
        for (int index = 0; index < targetLength; index += 1) {
          if (_random.nextInt(20) > 0) {
            buffer.writeCharCode(randomCharacter(_random));
          } else {
            buffer.write(zalgo(_random, _random.nextInt(2) + 1, includeSpacingCombiningMarks: true));
          }
        }
        return buffer.toString();
    }
    return null;
  }

  @override
  Widget build(BuildContext context) {
    return ColoredBox(
      color: Colors.black,
      child: Column(
        children: <Widget>[
          Expanded(
            child: SingleChildScrollView(
              child: SafeArea(
                child: Padding(
                  padding: const EdgeInsets.all(10.0),
                  child: RichText(text: _textSpan),
                ),
              ),
            ),
          ),
          Material(
            child: SwitchListTile(
              title: const Text('Enable Fuzzer'),
              value: _ticker.isActive,
              onChanged: (bool value) {
                setState(() {
                  if (value) {
                    _ticker.start();
                  } else {
                    _ticker.stop();
                    debugPrint(_textSpan.toStringDeep());
                  }
                });
              },
            ),
          ),
        ],
      ),
    );
  }
}

class Underlines extends StatefulWidget {
  const Underlines({ super.key });

  @override
  State<Underlines> createState() => _UnderlinesState();
}

class _UnderlinesState extends State<Underlines> {

  String _text = 'i';

  final TextStyle _style = TextStyle(
    inherit: false,
    color: Colors.yellow.shade200,
    fontSize: 48.0,
    fontFamily: 'sans-serif',
    decorationColor: Colors.yellow.shade500,
  );

  Widget _wrap(TextDecorationStyle? style) {
    return Align(
      alignment: Alignment.centerLeft,
      heightFactor: 1.0,
      child: Container(
        decoration: const BoxDecoration(color: Color(0xFF333333), border: Border(right: BorderSide(color: Colors.white, width: 0.0))),
        child: Text(_text, style: style != null ? _style.copyWith(decoration: TextDecoration.underline, decorationStyle: style) : _style),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    final Size size = MediaQuery.of(context).size;
    return ColoredBox(
      color: Colors.black,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          Expanded(
            child: SingleChildScrollView(
              child: Padding(
                padding: EdgeInsets.symmetric(
                  horizontal: size.width * 0.1,
                  vertical: size.height * 0.1,
                ),
                child: ListBody(
                  children: <Widget>[
                    _wrap(null),
                    for (final TextDecorationStyle style in TextDecorationStyle.values) _wrap(style),
                  ],
                ),
              ),
            ),
          ),
          Material(
            child: Container(
              alignment: AlignmentDirectional.centerEnd,
              padding: const EdgeInsets.all(8),
              child: OverflowBar(
                spacing: 8,
                children: <Widget>[
                  TextButton(
                    onPressed: () {
                      setState(() {
                        _text += 'i';
                      });
                    },
                    style: TextButton.styleFrom(
                      backgroundColor: Colors.yellow,
                    ),
                    child: const Text('ADD i'),
                  ),
                  TextButton(
                    onPressed: () {
                      setState(() {
                        _text += 'w';
                      });
                    },
                    style: TextButton.styleFrom(
                      backgroundColor: Colors.yellow,
                    ),
                    child: const Text('ADD w'),
                  ),
                  TextButton(
                    style: TextButton.styleFrom(
                      foregroundColor: Colors.white,
                      backgroundColor: Colors.red,
                    ),
                    onPressed: _text == '' ? null : () {
                      setState(() {
                        _text = _text.substring(0, _text.length - 1);
                      });
                    },
                    child: const Text('REMOVE'),
                  ),
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }
}

class Fallback extends StatefulWidget {
  const Fallback({ super.key });

  @override
  State<Fallback> createState() => _FallbackState();
}

class _FallbackState extends State<Fallback> {
  static const String multiScript = 'A1!aÀàĀāƁƀḂⱠꜲꬰəͲἀἏЀЖԠꙐꙮՁخ‎ࡔࠇܦআਉઐଘஇఘಧൺඣᭆᯔᮯ᳇ꠈᜅᩌꪈ༇ꥄꡙꫤ᧰៘꧁꧂ᜰᨏᯤᢆᣭᗗꗃⵞ𐒎߷ጩꬤ𖠺‡₩℻Ⅷ↹⋇⏳ⓖ╋▒◛⚧⑆שׁ🅕㊼龜ポ䷤🂡';

  static const List<String> androidFonts = <String>[
    'sans-serif',
    'sans-serif-condensed',
    'serif',
    'monospace',
    'serif-monospace',
    'casual',
    'cursive',
    'sans-serif-smallcaps',
  ];

  static const TextStyle style = TextStyle(
    inherit: false,
    color: Colors.white,
  );

  double _fontSize = 3.0;

  @override
  Widget build(BuildContext context) {
    final Size size = MediaQuery.of(context).size;
    return ColoredBox(
      color: Colors.black,
      child: Column(
        children: <Widget>[
          Expanded(
            child: SingleChildScrollView(
              scrollDirection: Axis.horizontal,
              child: SingleChildScrollView(
                child: Padding(
                  padding: EdgeInsets.symmetric(
                    horizontal: size.width * 0.1,
                    vertical: size.height * 0.1,
                  ),
                  child: IntrinsicWidth(
                    child: ListBody(
                      children: <Widget>[
                        for (final String font in androidFonts)
                          Text(
                            multiScript,
                            style: style.copyWith(
                              fontFamily: font,
                              fontSize: math.exp(_fontSize),
                            ),
                          ),
                      ],
                    ),
                  ),
                ),
              ),
            ),
          ),
          Material(
            child: Padding(
              padding: const EdgeInsets.only(left: 20.0, right: 20.0, bottom: 20.0),
              child: Row(
                crossAxisAlignment: CrossAxisAlignment.end,
                children: <Widget>[
                  const Padding(
                    padding: EdgeInsets.only(bottom: 10.0),
                    child: Text('Font size'),
                  ),
                  Expanded(
                    child: Slider(
                      min: 2.0,
                      max: 5.0,
                      value: _fontSize,
                      label: '${math.exp(_fontSize).round()}',
                      onChanged: (double value) {
                        setState(() {
                          _fontSize = value;
                        });
                      },
                    ),
                  ),
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }
}

class Bidi extends StatefulWidget {
  const Bidi({ super.key });

  @override
  State<Bidi> createState() => _BidiState();
}

class _BidiState extends State<Bidi> {
  @override
  Widget build(BuildContext context) {
    return ColoredBox(
      color: Colors.black,
      child: ListView(
        padding: const EdgeInsets.symmetric(vertical: 40.0, horizontal: 20.0),
        children: <Widget>[
          RichText(
            text: TextSpan(
              children: <TextSpan>[
                TextSpan(text: 'abc', style: TextStyle(fontWeight: FontWeight.w100, fontSize: 40.0, color: Colors.blue.shade100)),
                TextSpan(text: 'ghi', style: TextStyle(fontWeight: FontWeight.w400, fontSize: 40.0, color: Colors.blue.shade500)),
                TextSpan(text: 'mno', style: TextStyle(fontWeight: FontWeight.w900, fontSize: 40.0, color: Colors.blue.shade900)),
                TextSpan(text: 'LKJ', style: TextStyle(fontWeight: FontWeight.w500, fontSize: 40.0, color: Colors.blue.shade700)),
                TextSpan(text: 'FED', style: TextStyle(fontWeight: FontWeight.w300, fontSize: 40.0, color: Colors.blue.shade300)),
              ],
            ),
            textAlign: TextAlign.center,
            textDirection: TextDirection.ltr,
          ),
          RichText(
            text: TextSpan(
              children: <TextSpan>[
                TextSpan(text: '${Unicode.LRO}abc', style: TextStyle(fontWeight: FontWeight.w100, fontSize: 40.0, color: Colors.blue.shade100)),
                TextSpan(text: '${Unicode.RLO}DEF', style: TextStyle(fontWeight: FontWeight.w300, fontSize: 40.0, color: Colors.blue.shade300)),
                TextSpan(text: '${Unicode.LRO}ghi', style: TextStyle(fontWeight: FontWeight.w400, fontSize: 40.0, color: Colors.blue.shade500)),
                TextSpan(text: '${Unicode.RLO}JKL', style: TextStyle(fontWeight: FontWeight.w500, fontSize: 40.0, color: Colors.blue.shade700)),
                TextSpan(text: '${Unicode.LRO}mno', style: TextStyle(fontWeight: FontWeight.w900, fontSize: 40.0, color: Colors.blue.shade900)),
              ],
            ),
            textAlign: TextAlign.center,
            textDirection: TextDirection.ltr,
          ),
          const SizedBox(height: 40.0),
          RichText(
            text: TextSpan(
              children: <TextSpan>[
                TextSpan(text: '${Unicode.LRO}abc${Unicode.RLO}D', style: TextStyle(fontWeight: FontWeight.w100, fontSize: 40.0, color: Colors.orange.shade100)),
                TextSpan(text: 'EF${Unicode.LRO}gh', style: TextStyle(fontWeight: FontWeight.w500, fontSize: 50.0, color: Colors.orange.shade500)),
                TextSpan(text: 'i${Unicode.RLO}JKL${Unicode.LRO}mno', style: TextStyle(fontWeight: FontWeight.w900, fontSize: 60.0, color: Colors.orange.shade900)),
              ],
            ),
            textAlign: TextAlign.center,
            textDirection: TextDirection.ltr,
          ),
          RichText(
            text: TextSpan(
              children: <TextSpan>[
                TextSpan(text: 'abc', style: TextStyle(fontWeight: FontWeight.w100, fontSize: 40.0, color: Colors.orange.shade100)),
                TextSpan(text: 'gh', style: TextStyle(fontWeight: FontWeight.w500, fontSize: 50.0, color: Colors.orange.shade500)),
                TextSpan(text: 'imno', style: TextStyle(fontWeight: FontWeight.w900, fontSize: 60.0, color: Colors.orange.shade900)),
                TextSpan(text: 'LKJ', style: TextStyle(fontWeight: FontWeight.w900, fontSize: 60.0, color: Colors.orange.shade900)),
                TextSpan(text: 'FE', style: TextStyle(fontWeight: FontWeight.w500, fontSize: 50.0, color: Colors.orange.shade500)),
                TextSpan(text: 'D', style: TextStyle(fontWeight: FontWeight.w100, fontSize: 40.0, color: Colors.orange.shade100)),
              ],
            ),
            textAlign: TextAlign.center,
            textDirection: TextDirection.ltr,
          ),
          const SizedBox(height: 40.0),
          const Text('The pairs of lines above should match exactly.', textAlign: TextAlign.center, style: TextStyle(inherit: false, fontSize: 14.0, color: Colors.white)),
        ],
      ),
    );
  }
}

class Zalgo extends StatefulWidget {
  const Zalgo({ super.key, required this.seed });

  final int seed;

  @override
  State<Zalgo> createState() => _ZalgoState();
}

class _ZalgoState extends State<Zalgo> with SingleTickerProviderStateMixin {
  String? _text;
  late final Ticker _ticker = createTicker(_update)..start();
  math.Random _random = math.Random();

  @override
  void initState() {
    super.initState();
    _random = math.Random(widget.seed); // providing a seed is important for reproducibility;
    _update(null);
  }

  @override
  void dispose() {
    _ticker.dispose();
    super.dispose();
  }

  bool _allowSpacing = false;
  bool _varyBase = false;

  void _update(Duration? duration) {
    setState(() {
      _text = zalgo(
        _random,
        6 + _random.nextInt(10),
        includeSpacingCombiningMarks: _allowSpacing,
        base: _varyBase ? null : 'O',
      );
    });
  }

  @override
  Widget build(BuildContext context) {
    return ColoredBox(
      color: Colors.black,
      child: Column(
        children: <Widget>[
          Expanded(
            child: Center(
              child: RichText(
                text: TextSpan(
                  text: _text,
                  style: TextStyle(
                    inherit: false,
                    fontSize: 96.0,
                    color: Colors.red.shade200,
                  ),
                ),
              ),
            ),
          ),
          Material(
            child: Column(
              children: <Widget>[
                SwitchListTile(
                  title: const Text('Enable Fuzzer'),
                  value: _ticker.isActive,
                  onChanged: (bool value) {
                    setState(() {
                      if (value) {
                        _ticker.start();
                      } else {
                        _ticker.stop();
                      }
                    });
                  },
                ),
                SwitchListTile(
                  title: const Text('Allow spacing combining marks'),
                  value: _allowSpacing,
                  onChanged: (bool value) {
                    setState(() {
                      _allowSpacing = value;
                      _random = math.Random(widget.seed); // reset for reproducibility
                    });
                  },
                ),
                SwitchListTile(
                  title: const Text('Vary base character'),
                  value: _varyBase,
                  onChanged: (bool value) {
                    setState(() {
                      _varyBase = value;
                      _random = math.Random(widget.seed); // reset for reproducibility
                    });
                  },
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

class Painting extends StatefulWidget {
  const Painting({ super.key, required this.seed });

  final int seed;

  @override
  State<Painting> createState() => _PaintingState();
}

class _PaintingState extends State<Painting> with SingleTickerProviderStateMixin {
  String? _text;
  late final Ticker _ticker = createTicker(_update)..start();
  math.Random _random = math.Random();

  @override
  void initState() {
    super.initState();
    _random = math.Random(widget.seed); // providing a seed is important for reproducibility;
    _update(null);
  }

  @override
  void dispose() {
    _ticker.dispose();
    super.dispose();
  }

  final GlobalKey intrinsicKey = GlobalKey();
  final GlobalKey controlKey = GlobalKey();

  bool _ellipsize = false;

  void _update(Duration? duration) {
    setState(() {
      final StringBuffer buffer = StringBuffer();
      final int targetLength = _random.nextInt(20) + (_ellipsize ? MediaQuery.of(context).size.width.round() : 1);
      for (int index = 0; index < targetLength; index += 1) {
        if (_random.nextInt(5) > 0) {
          buffer.writeCharCode(randomCharacter(_random));
        } else {
          buffer.write(zalgo(_random, _random.nextInt(2) + 1, includeSpacingCombiningMarks: true));
        }
      }
      _text = buffer.toString();
    });
    SchedulerBinding.instance.addPostFrameCallback((Duration duration) {
      if (mounted && intrinsicKey.currentContext?.size?.height != controlKey.currentContext?.size?.height) {
        debugPrint('Found some text that unexpectedly renders at different heights.');
        debugPrint('Text: $_text');
        debugPrint(_text?.runes.map<String>((int index) {
          final String hexa = index.toRadixString(16).padLeft(4, '0');
          return 'U+$hexa';
        }).join(' '));
        setState(() {
          _ticker.stop();
        });
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    final Size size = MediaQuery.of(context).size;
    return ColoredBox(
      color: Colors.black,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          Expanded(
            child: Padding(
              padding: EdgeInsets.only(top: size.height * 0.1),
              child: Stack(
                alignment: Alignment.center,
                children: <Widget>[
                  Positioned(
                    top: 0.0,
                    left: 0.0,
                    right: 0.0,
                    child: Align(
                      alignment: Alignment.topCenter,
                      child: IntrinsicWidth( // to test shrink-wrap vs rendering
                        child: RichText(
                          key: intrinsicKey,
                          textAlign: TextAlign.center,
                          overflow: _ellipsize ? TextOverflow.ellipsis : TextOverflow.clip,
                          text: TextSpan(
                            text: _text,
                            style: const TextStyle(
                              inherit: false,
                              fontSize: 28.0,
                              color: Colors.red,
                            ),
                          ),
                        ),
                      ),
                    ),
                  ),
                  Positioned(
                    top: 0.0,
                    left: 0.0,
                    right: 0.0,
                    child: RichText(
                      key: controlKey,
                      textAlign: TextAlign.center,
                      overflow: _ellipsize ? TextOverflow.ellipsis : TextOverflow.clip,
                      text: TextSpan(
                        text: _text,
                        style: const TextStyle(
                          inherit: false,
                          fontSize: 28.0,
                          color: Colors.white,
                        ),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ),
          Material(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: <Widget>[
                SwitchListTile(
                  title: const Text('Enable Fuzzer'),
                  value: _ticker.isActive,
                  onChanged: (bool value) {
                    setState(() {
                      if (value) {
                        _ticker.start();
                      } else {
                        _ticker.stop();
                      }
                    });
                  },
                ),
                SwitchListTile(
                  title: const Text('Enable Ellipses'),
                  value: _ellipsize,
                  onChanged: (bool value) {
                    setState(() {
                      _ellipsize = value;
                      _random = math.Random(widget.seed); // reset for reproducibility
                      if (!_ticker.isActive) {
                        _update(null);
                      }
                    });
                  },
                ),
                const ListTile(
                  title: Text('There should be no red visible.'),
                ),

                Container(
                  alignment: AlignmentDirectional.centerEnd,
                  padding: const EdgeInsets.all(8),
                  child: OverflowBar(
                    spacing: 8,
                    children: <Widget>[
                      TextButton(
                        onPressed: _ticker.isActive ? null : () => _update(null),
                        child: const Text('ITERATE'),
                      ),
                      TextButton(
                        onPressed: _ticker.isActive ? null : () {
                          print('The currently visible text is: $_text');
                          print(_text?.runes.map<String>((int value) => 'U+${value.toRadixString(16).padLeft(4, '0').toUpperCase()}').join(' '));
                        },
                        child: const Text('DUMP TEXT TO LOGS'),
                      ),
                    ],
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

String zalgo(math.Random random, int targetLength, { bool includeSpacingCombiningMarks = false, String? base }) {
  // The following three tables are derived from UnicodeData.txt:
  //   http://unicode.org/Public/UNIDATA/UnicodeData.txt
  // There are three groups, character classes Mc, Me, and Mn.
  const List<int> enclosingCombiningMarks = <int>[ // Me
    0x00488, 0x00489, 0x01ABE, 0x020DD, 0x020DE, 0x020DF, 0x020E0,
    0x020E2, 0x020E3, 0x020E4, 0x0A670, 0x0A671, 0x0A672,
  ];
  const List<int> nonspacingCombiningMarks = <int>[ // Mn
    0x00300, 0x00301, 0x00302, 0x00303, 0x00304, 0x00305, 0x00306,
    0x00307, 0x00308, 0x00309, 0x0030A, 0x0030B, 0x0030C, 0x0030D,
    0x0030E, 0x0030F, 0x00310, 0x00311, 0x00312, 0x00313, 0x00314,
    0x00315, 0x00316, 0x00317, 0x00318, 0x00319, 0x0031A, 0x0031B,
    0x0031C, 0x0031D, 0x0031E, 0x0031F, 0x00320, 0x00321, 0x00322,
    0x00323, 0x00324, 0x00325, 0x00326, 0x00327, 0x00328, 0x00329,
    0x0032A, 0x0032B, 0x0032C, 0x0032D, 0x0032E, 0x0032F, 0x00330,
    0x00331, 0x00332, 0x00333, 0x00334, 0x00335, 0x00336, 0x00337,
    0x00338, 0x00339, 0x0033A, 0x0033B, 0x0033C, 0x0033D, 0x0033E,
    0x0033F, 0x00340, 0x00341, 0x00342, 0x00343, 0x00344, 0x00345,
    0x00346, 0x00347, 0x00348, 0x00349, 0x0034A, 0x0034B, 0x0034C,
    0x0034D, 0x0034E, 0x0034F, 0x00350, 0x00351, 0x00352, 0x00353,
    0x00354, 0x00355, 0x00356, 0x00357, 0x00358, 0x00359, 0x0035A,
    0x0035B, 0x0035C, 0x0035D, 0x0035E, 0x0035F, 0x00360, 0x00361,
    0x00362, 0x00363, 0x00364, 0x00365, 0x00366, 0x00367, 0x00368,
    0x00369, 0x0036A, 0x0036B, 0x0036C, 0x0036D, 0x0036E, 0x0036F,
    0x00483, 0x00484, 0x00485, 0x00486, 0x00487, 0x00591, 0x00592,
    0x00593, 0x00594, 0x00595, 0x00596, 0x00597, 0x00598, 0x00599,
    0x0059A, 0x0059B, 0x0059C, 0x0059D, 0x0059E, 0x0059F, 0x005A0,
    0x005A1, 0x005A2, 0x005A3, 0x005A4, 0x005A5, 0x005A6, 0x005A7,
    0x005A8, 0x005A9, 0x005AA, 0x005AB, 0x005AC, 0x005AD, 0x005AE,
    0x005AF, 0x005B0, 0x005B1, 0x005B2, 0x005B3, 0x005B4, 0x005B5,
    0x005B6, 0x005B7, 0x005B8, 0x005B9, 0x005BA, 0x005BB, 0x005BC,
    0x005BD, 0x005BF, 0x005C1, 0x005C2, 0x005C4, 0x005C5, 0x005C7,
    0x00610, 0x00611, 0x00612, 0x00613, 0x00614, 0x00615, 0x00616,
    0x00617, 0x00618, 0x00619, 0x0061A, 0x0064B, 0x0064C, 0x0064D,
    0x0064E, 0x0064F, 0x00650, 0x00651, 0x00652, 0x00653, 0x00654,
    0x00655, 0x00656, 0x00657, 0x00658, 0x00659, 0x0065A, 0x0065B,
    0x0065C, 0x0065D, 0x0065E, 0x0065F, 0x00670, 0x006D6, 0x006D7,
    0x006D8, 0x006D9, 0x006DA, 0x006DB, 0x006DC, 0x006DF, 0x006E0,
    0x006E1, 0x006E2, 0x006E3, 0x006E4, 0x006E7, 0x006E8, 0x006EA,
    0x006EB, 0x006EC, 0x006ED, 0x00711, 0x00730, 0x00731, 0x00732,
    0x00733, 0x00734, 0x00735, 0x00736, 0x00737, 0x00738, 0x00739,
    0x0073A, 0x0073B, 0x0073C, 0x0073D, 0x0073E, 0x0073F, 0x00740,
    0x00741, 0x00742, 0x00743, 0x00744, 0x00745, 0x00746, 0x00747,
    0x00748, 0x00749, 0x0074A, 0x007A6, 0x007A7, 0x007A8, 0x007A9,
    0x007AA, 0x007AB, 0x007AC, 0x007AD, 0x007AE, 0x007AF, 0x007B0,
    0x007EB, 0x007EC, 0x007ED, 0x007EE, 0x007EF, 0x007F0, 0x007F1,
    0x007F2, 0x007F3, 0x00816, 0x00817, 0x00818, 0x00819, 0x0081B,
    0x0081C, 0x0081D, 0x0081E, 0x0081F, 0x00820, 0x00821, 0x00822,
    0x00823, 0x00825, 0x00826, 0x00827, 0x00829, 0x0082A, 0x0082B,
    0x0082C, 0x0082D, 0x00859, 0x0085A, 0x0085B, 0x008D4, 0x008D5,
    0x008D6, 0x008D7, 0x008D8, 0x008D9, 0x008DA, 0x008DB, 0x008DC,
    0x008DD, 0x008DE, 0x008DF, 0x008E0, 0x008E1, 0x008E3, 0x008E4,
    0x008E5, 0x008E6, 0x008E7, 0x008E8, 0x008E9, 0x008EA, 0x008EB,
    0x008EC, 0x008ED, 0x008EE, 0x008EF, 0x008F0, 0x008F1, 0x008F2,
    0x008F3, 0x008F4, 0x008F5, 0x008F6, 0x008F7, 0x008F8, 0x008F9,
    0x008FA, 0x008FB, 0x008FC, 0x008FD, 0x008FE, 0x008FF, 0x00900,
    0x00901, 0x00902, 0x0093A, 0x0093C, 0x00941, 0x00942, 0x00943,
    0x00944, 0x00945, 0x00946, 0x00947, 0x00948, 0x0094D, 0x00951,
    0x00952, 0x00953, 0x00954, 0x00955, 0x00956, 0x00957, 0x00962,
    0x00963, 0x00981, 0x009BC, 0x009C1, 0x009C2, 0x009C3, 0x009C4,
    0x009CD, 0x009E2, 0x009E3, 0x00A01, 0x00A02, 0x00A3C, 0x00A41,
    0x00A42, 0x00A47, 0x00A48, 0x00A4B, 0x00A4C, 0x00A4D, 0x00A51,
    0x00A70, 0x00A71, 0x00A75, 0x00A81, 0x00A82, 0x00ABC, 0x00AC1,
    0x00AC2, 0x00AC3, 0x00AC4, 0x00AC5, 0x00AC7, 0x00AC8, 0x00ACD,
    0x00AE2, 0x00AE3, 0x00AFA, 0x00AFB, 0x00AFC, 0x00AFD, 0x00AFE,
    0x00AFF, 0x00B01, 0x00B3C, 0x00B3F, 0x00B41, 0x00B42, 0x00B43,
    0x00B44, 0x00B4D, 0x00B56, 0x00B62, 0x00B63, 0x00B82, 0x00BC0,
    0x00BCD, 0x00C00, 0x00C3E, 0x00C3F, 0x00C40, 0x00C46, 0x00C47,
    0x00C48, 0x00C4A, 0x00C4B, 0x00C4C, 0x00C4D, 0x00C55, 0x00C56,
    0x00C62, 0x00C63, 0x00C81, 0x00CBC, 0x00CBF, 0x00CC6, 0x00CCC,
    0x00CCD, 0x00CE2, 0x00CE3, 0x00D00, 0x00D01, 0x00D3B, 0x00D3C,
    0x00D41, 0x00D42, 0x00D43, 0x00D44, 0x00D4D, 0x00D62, 0x00D63,
    0x00DCA, 0x00DD2, 0x00DD3, 0x00DD4, 0x00DD6, 0x00E31, 0x00E34,
    0x00E35, 0x00E36, 0x00E37, 0x00E38, 0x00E39, 0x00E3A, 0x00E47,
    0x00E48, 0x00E49, 0x00E4A, 0x00E4B, 0x00E4C, 0x00E4D, 0x00E4E,
    0x00EB1, 0x00EB4, 0x00EB5, 0x00EB6, 0x00EB7, 0x00EB8, 0x00EB9,
    0x00EBB, 0x00EBC, 0x00EC8, 0x00EC9, 0x00ECA, 0x00ECB, 0x00ECC,
    0x00ECD, 0x00F18, 0x00F19, 0x00F35, 0x00F37, 0x00F39, 0x00F71,
    0x00F72, 0x00F73, 0x00F74, 0x00F75, 0x00F76, 0x00F77, 0x00F78,
    0x00F79, 0x00F7A, 0x00F7B, 0x00F7C, 0x00F7D, 0x00F7E, 0x00F80,
    0x00F81, 0x00F82, 0x00F83, 0x00F84, 0x00F86, 0x00F87, 0x00F8D,
    0x00F8E, 0x00F8F, 0x00F90, 0x00F91, 0x00F92, 0x00F93, 0x00F94,
    0x00F95, 0x00F96, 0x00F97, 0x00F99, 0x00F9A, 0x00F9B, 0x00F9C,
    0x00F9D, 0x00F9E, 0x00F9F, 0x00FA0, 0x00FA1, 0x00FA2, 0x00FA3,
    0x00FA4, 0x00FA5, 0x00FA6, 0x00FA7, 0x00FA8, 0x00FA9, 0x00FAA,
    0x00FAB, 0x00FAC, 0x00FAD, 0x00FAE, 0x00FAF, 0x00FB0, 0x00FB1,
    0x00FB2, 0x00FB3, 0x00FB4, 0x00FB5, 0x00FB6, 0x00FB7, 0x00FB8,
    0x00FB9, 0x00FBA, 0x00FBB, 0x00FBC, 0x00FC6, 0x0102D, 0x0102E,
    0x0102F, 0x01030, 0x01032, 0x01033, 0x01034, 0x01035, 0x01036,
    0x01037, 0x01039, 0x0103A, 0x0103D, 0x0103E, 0x01058, 0x01059,
    0x0105E, 0x0105F, 0x01060, 0x01071, 0x01072, 0x01073, 0x01074,
    0x01082, 0x01085, 0x01086, 0x0108D, 0x0109D, 0x0135D, 0x0135E,
    0x0135F, 0x01712, 0x01713, 0x01714, 0x01732, 0x01733, 0x01734,
    0x01752, 0x01753, 0x01772, 0x01773, 0x017B4, 0x017B5, 0x017B7,
    0x017B8, 0x017B9, 0x017BA, 0x017BB, 0x017BC, 0x017BD, 0x017C6,
    0x017C9, 0x017CA, 0x017CB, 0x017CC, 0x017CD, 0x017CE, 0x017CF,
    0x017D0, 0x017D1, 0x017D2, 0x017D3, 0x017DD, 0x0180B, 0x0180C,
    0x0180D, 0x01885, 0x01886, 0x018A9, 0x01920, 0x01921, 0x01922,
    0x01927, 0x01928, 0x01932, 0x01939, 0x0193A, 0x0193B, 0x01A17,
    0x01A18, 0x01A1B, 0x01A56, 0x01A58, 0x01A59, 0x01A5A, 0x01A5B,
    0x01A5C, 0x01A5D, 0x01A5E, 0x01A60, 0x01A62, 0x01A65, 0x01A66,
    0x01A67, 0x01A68, 0x01A69, 0x01A6A, 0x01A6B, 0x01A6C, 0x01A73,
    0x01A74, 0x01A75, 0x01A76, 0x01A77, 0x01A78, 0x01A79, 0x01A7A,
    0x01A7B, 0x01A7C, 0x01A7F, 0x01AB0, 0x01AB1, 0x01AB2, 0x01AB3,
    0x01AB4, 0x01AB5, 0x01AB6, 0x01AB7, 0x01AB8, 0x01AB9, 0x01ABA,
    0x01ABB, 0x01ABC, 0x01ABD, 0x01B00, 0x01B01, 0x01B02, 0x01B03,
    0x01B34, 0x01B36, 0x01B37, 0x01B38, 0x01B39, 0x01B3A, 0x01B3C,
    0x01B42, 0x01B6B, 0x01B6C, 0x01B6D, 0x01B6E, 0x01B6F, 0x01B70,
    0x01B71, 0x01B72, 0x01B73, 0x01B80, 0x01B81, 0x01BA2, 0x01BA3,
    0x01BA4, 0x01BA5, 0x01BA8, 0x01BA9, 0x01BAB, 0x01BAC, 0x01BAD,
    0x01BE6, 0x01BE8, 0x01BE9, 0x01BED, 0x01BEF, 0x01BF0, 0x01BF1,
    0x01C2C, 0x01C2D, 0x01C2E, 0x01C2F, 0x01C30, 0x01C31, 0x01C32,
    0x01C33, 0x01C36, 0x01C37, 0x01CD0, 0x01CD1, 0x01CD2, 0x01CD4,
    0x01CD5, 0x01CD6, 0x01CD7, 0x01CD8, 0x01CD9, 0x01CDA, 0x01CDB,
    0x01CDC, 0x01CDD, 0x01CDE, 0x01CDF, 0x01CE0, 0x01CE2, 0x01CE3,
    0x01CE4, 0x01CE5, 0x01CE6, 0x01CE7, 0x01CE8, 0x01CED, 0x01CF4,
    0x01CF8, 0x01CF9, 0x01DC0, 0x01DC1, 0x01DC2, 0x01DC3, 0x01DC4,
    0x01DC5, 0x01DC6, 0x01DC7, 0x01DC8, 0x01DC9, 0x01DCA, 0x01DCB,
    0x01DCC, 0x01DCD, 0x01DCE, 0x01DCF, 0x01DD0, 0x01DD1, 0x01DD2,
    0x01DD3, 0x01DD4, 0x01DD5, 0x01DD6, 0x01DD7, 0x01DD8, 0x01DD9,
    0x01DDA, 0x01DDB, 0x01DDC, 0x01DDD, 0x01DDE, 0x01DDF, 0x01DE0,
    0x01DE1, 0x01DE2, 0x01DE3, 0x01DE4, 0x01DE5, 0x01DE6, 0x01DE7,
    0x01DE8, 0x01DE9, 0x01DEA, 0x01DEB, 0x01DEC, 0x01DED, 0x01DEE,
    0x01DEF, 0x01DF0, 0x01DF1, 0x01DF2, 0x01DF3, 0x01DF4, 0x01DF5,
    0x01DF6, 0x01DF7, 0x01DF8, 0x01DF9, 0x01DFB, 0x01DFC, 0x01DFD,
    0x01DFE, 0x01DFF, 0x020D0, 0x020D1, 0x020D2, 0x020D3, 0x020D4,
    0x020D5, 0x020D6, 0x020D7, 0x020D8, 0x020D9, 0x020DA, 0x020DB,
    0x020DC, 0x020E1, 0x020E5, 0x020E6, 0x020E7, 0x020E8, 0x020E9,
    0x020EA, 0x020EB, 0x020EC, 0x020ED, 0x020EE, 0x020EF, 0x020F0,
    0x02CEF, 0x02CF0, 0x02CF1, 0x02D7F, 0x02DE0, 0x02DE1, 0x02DE2,
    0x02DE3, 0x02DE4, 0x02DE5, 0x02DE6, 0x02DE7, 0x02DE8, 0x02DE9,
    0x02DEA, 0x02DEB, 0x02DEC, 0x02DED, 0x02DEE, 0x02DEF, 0x02DF0,
    0x02DF1, 0x02DF2, 0x02DF3, 0x02DF4, 0x02DF5, 0x02DF6, 0x02DF7,
    0x02DF8, 0x02DF9, 0x02DFA, 0x02DFB, 0x02DFC, 0x02DFD, 0x02DFE,
    0x02DFF, 0x0302A, 0x0302B, 0x0302C, 0x0302D, 0x03099, 0x0309A,
    0x0A66F, 0x0A674, 0x0A675, 0x0A676, 0x0A677, 0x0A678, 0x0A679,
    0x0A67A, 0x0A67B, 0x0A67C, 0x0A67D, 0x0A69E, 0x0A69F, 0x0A6F0,
    0x0A6F1, 0x0A802, 0x0A806, 0x0A80B, 0x0A825, 0x0A826, 0x0A8C4,
    0x0A8C5, 0x0A8E0, 0x0A8E1, 0x0A8E2, 0x0A8E3, 0x0A8E4, 0x0A8E5,
    0x0A8E6, 0x0A8E7, 0x0A8E8, 0x0A8E9, 0x0A8EA, 0x0A8EB, 0x0A8EC,
    0x0A8ED, 0x0A8EE, 0x0A8EF, 0x0A8F0, 0x0A8F1, 0x0A926, 0x0A927,
    0x0A928, 0x0A929, 0x0A92A, 0x0A92B, 0x0A92C, 0x0A92D, 0x0A947,
    0x0A948, 0x0A949, 0x0A94A, 0x0A94B, 0x0A94C, 0x0A94D, 0x0A94E,
    0x0A94F, 0x0A950, 0x0A951, 0x0A980, 0x0A981, 0x0A982, 0x0A9B3,
    0x0A9B6, 0x0A9B7, 0x0A9B8, 0x0A9B9, 0x0A9BC, 0x0A9E5, 0x0AA29,
    0x0AA2A, 0x0AA2B, 0x0AA2C, 0x0AA2D, 0x0AA2E, 0x0AA31, 0x0AA32,
    0x0AA35, 0x0AA36, 0x0AA43, 0x0AA4C, 0x0AA7C, 0x0AAB0, 0x0AAB2,
    0x0AAB3, 0x0AAB4, 0x0AAB7, 0x0AAB8, 0x0AABE, 0x0AABF, 0x0AAC1,
    0x0AAEC, 0x0AAED, 0x0AAF6, 0x0ABE5, 0x0ABE8, 0x0ABED, 0x0FB1E,
    0x0FE00, 0x0FE01, 0x0FE02, 0x0FE03, 0x0FE04, 0x0FE05, 0x0FE06,
    0x0FE07, 0x0FE08, 0x0FE09, 0x0FE0A, 0x0FE0B, 0x0FE0C, 0x0FE0D,
    0x0FE0E, 0x0FE0F, 0x0FE20, 0x0FE21, 0x0FE22, 0x0FE23, 0x0FE24,
    0x0FE25, 0x0FE26, 0x0FE27, 0x0FE28, 0x0FE29, 0x0FE2A, 0x0FE2B,
    0x0FE2C, 0x0FE2D, 0x0FE2E, 0x0FE2F, 0x101FD, 0x102E0, 0x10376,
    0x10377, 0x10378, 0x10379, 0x1037A, 0x10A01, 0x10A02, 0x10A03,
    0x10A05, 0x10A06, 0x10A0C, 0x10A0D, 0x10A0E, 0x10A0F, 0x10A38,
    0x10A39, 0x10A3A, 0x10A3F, 0x10AE5, 0x10AE6, 0x11001, 0x11038,
    0x11039, 0x1103A, 0x1103B, 0x1103C, 0x1103D, 0x1103E, 0x1103F,
    0x11040, 0x11041, 0x11042, 0x11043, 0x11044, 0x11045, 0x11046,
    0x1107F, 0x11080, 0x11081, 0x110B3, 0x110B4, 0x110B5, 0x110B6,
    0x110B9, 0x110BA, 0x11100, 0x11101, 0x11102, 0x11127, 0x11128,
    0x11129, 0x1112A, 0x1112B, 0x1112D, 0x1112E, 0x1112F, 0x11130,
    0x11131, 0x11132, 0x11133, 0x11134, 0x11173, 0x11180, 0x11181,
    0x111B6, 0x111B7, 0x111B8, 0x111B9, 0x111BA, 0x111BB, 0x111BC,
    0x111BD, 0x111BE, 0x111CA, 0x111CB, 0x111CC, 0x1122F, 0x11230,
    0x11231, 0x11234, 0x11236, 0x11237, 0x1123E, 0x112DF, 0x112E3,
    0x112E4, 0x112E5, 0x112E6, 0x112E7, 0x112E8, 0x112E9, 0x112EA,
    0x11300, 0x11301, 0x1133C, 0x11340, 0x11366, 0x11367, 0x11368,
    0x11369, 0x1136A, 0x1136B, 0x1136C, 0x11370, 0x11371, 0x11372,
    0x11373, 0x11374, 0x11438, 0x11439, 0x1143A, 0x1143B, 0x1143C,
    0x1143D, 0x1143E, 0x1143F, 0x11442, 0x11443, 0x11444, 0x11446,
    0x114B3, 0x114B4, 0x114B5, 0x114B6, 0x114B7, 0x114B8, 0x114BA,
    0x114BF, 0x114C0, 0x114C2, 0x114C3, 0x115B2, 0x115B3, 0x115B4,
    0x115B5, 0x115BC, 0x115BD, 0x115BF, 0x115C0, 0x115DC, 0x115DD,
    0x11633, 0x11634, 0x11635, 0x11636, 0x11637, 0x11638, 0x11639,
    0x1163A, 0x1163D, 0x1163F, 0x11640, 0x116AB, 0x116AD, 0x116B0,
    0x116B1, 0x116B2, 0x116B3, 0x116B4, 0x116B5, 0x116B7, 0x1171D,
    0x1171E, 0x1171F, 0x11722, 0x11723, 0x11724, 0x11725, 0x11727,
    0x11728, 0x11729, 0x1172A, 0x1172B, 0x11A01, 0x11A02, 0x11A03,
    0x11A04, 0x11A05, 0x11A06, 0x11A09, 0x11A0A, 0x11A33, 0x11A34,
    0x11A35, 0x11A36, 0x11A37, 0x11A38, 0x11A3B, 0x11A3C, 0x11A3D,
    0x11A3E, 0x11A47, 0x11A51, 0x11A52, 0x11A53, 0x11A54, 0x11A55,
    0x11A56, 0x11A59, 0x11A5A, 0x11A5B, 0x11A8A, 0x11A8B, 0x11A8C,
    0x11A8D, 0x11A8E, 0x11A8F, 0x11A90, 0x11A91, 0x11A92, 0x11A93,
    0x11A94, 0x11A95, 0x11A96, 0x11A98, 0x11A99, 0x11C30, 0x11C31,
    0x11C32, 0x11C33, 0x11C34, 0x11C35, 0x11C36, 0x11C38, 0x11C39,
    0x11C3A, 0x11C3B, 0x11C3C, 0x11C3D, 0x11C3F, 0x11C92, 0x11C93,
    0x11C94, 0x11C95, 0x11C96, 0x11C97, 0x11C98, 0x11C99, 0x11C9A,
    0x11C9B, 0x11C9C, 0x11C9D, 0x11C9E, 0x11C9F, 0x11CA0, 0x11CA1,
    0x11CA2, 0x11CA3, 0x11CA4, 0x11CA5, 0x11CA6, 0x11CA7, 0x11CAA,
    0x11CAB, 0x11CAC, 0x11CAD, 0x11CAE, 0x11CAF, 0x11CB0, 0x11CB2,
    0x11CB3, 0x11CB5, 0x11CB6, 0x11D31, 0x11D32, 0x11D33, 0x11D34,
    0x11D35, 0x11D36, 0x11D3A, 0x11D3C, 0x11D3D, 0x11D3F, 0x11D40,
    0x11D41, 0x11D42, 0x11D43, 0x11D44, 0x11D45, 0x11D47, 0x16AF0,
    0x16AF1, 0x16AF2, 0x16AF3, 0x16AF4, 0x16B30, 0x16B31, 0x16B32,
    0x16B33, 0x16B34, 0x16B35, 0x16B36, 0x16F8F, 0x16F90, 0x16F91,
    0x16F92, 0x1BC9D, 0x1BC9E, 0x1D167, 0x1D168, 0x1D169, 0x1D17B,
    0x1D17C, 0x1D17D, 0x1D17E, 0x1D17F, 0x1D180, 0x1D181, 0x1D182,
    0x1D185, 0x1D186, 0x1D187, 0x1D188, 0x1D189, 0x1D18A, 0x1D18B,
    0x1D1AA, 0x1D1AB, 0x1D1AC, 0x1D1AD, 0x1D242, 0x1D243, 0x1D244,
    0x1DA00, 0x1DA01, 0x1DA02, 0x1DA03, 0x1DA04, 0x1DA05, 0x1DA06,
    0x1DA07, 0x1DA08, 0x1DA09, 0x1DA0A, 0x1DA0B, 0x1DA0C, 0x1DA0D,
    0x1DA0E, 0x1DA0F, 0x1DA10, 0x1DA11, 0x1DA12, 0x1DA13, 0x1DA14,
    0x1DA15, 0x1DA16, 0x1DA17, 0x1DA18, 0x1DA19, 0x1DA1A, 0x1DA1B,
    0x1DA1C, 0x1DA1D, 0x1DA1E, 0x1DA1F, 0x1DA20, 0x1DA21, 0x1DA22,
    0x1DA23, 0x1DA24, 0x1DA25, 0x1DA26, 0x1DA27, 0x1DA28, 0x1DA29,
    0x1DA2A, 0x1DA2B, 0x1DA2C, 0x1DA2D, 0x1DA2E, 0x1DA2F, 0x1DA30,
    0x1DA31, 0x1DA32, 0x1DA33, 0x1DA34, 0x1DA35, 0x1DA36, 0x1DA3B,
    0x1DA3C, 0x1DA3D, 0x1DA3E, 0x1DA3F, 0x1DA40, 0x1DA41, 0x1DA42,
    0x1DA43, 0x1DA44, 0x1DA45, 0x1DA46, 0x1DA47, 0x1DA48, 0x1DA49,
    0x1DA4A, 0x1DA4B, 0x1DA4C, 0x1DA4D, 0x1DA4E, 0x1DA4F, 0x1DA50,
    0x1DA51, 0x1DA52, 0x1DA53, 0x1DA54, 0x1DA55, 0x1DA56, 0x1DA57,
    0x1DA58, 0x1DA59, 0x1DA5A, 0x1DA5B, 0x1DA5C, 0x1DA5D, 0x1DA5E,
    0x1DA5F, 0x1DA60, 0x1DA61, 0x1DA62, 0x1DA63, 0x1DA64, 0x1DA65,
    0x1DA66, 0x1DA67, 0x1DA68, 0x1DA69, 0x1DA6A, 0x1DA6B, 0x1DA6C,
    0x1DA75, 0x1DA84, 0x1DA9B, 0x1DA9C, 0x1DA9D, 0x1DA9E, 0x1DA9F,
    0x1DAA1, 0x1DAA2, 0x1DAA3, 0x1DAA4, 0x1DAA5, 0x1DAA6, 0x1DAA7,
    0x1DAA8, 0x1DAA9, 0x1DAAA, 0x1DAAB, 0x1DAAC, 0x1DAAD, 0x1DAAE,
    0x1DAAF, 0x1E000, 0x1E001, 0x1E002, 0x1E003, 0x1E004, 0x1E005,
    0x1E006, 0x1E008, 0x1E009, 0x1E00A, 0x1E00B, 0x1E00C, 0x1E00D,
    0x1E00E, 0x1E00F, 0x1E010, 0x1E011, 0x1E012, 0x1E013, 0x1E014,
    0x1E015, 0x1E016, 0x1E017, 0x1E018, 0x1E01B, 0x1E01C, 0x1E01D,
    0x1E01E, 0x1E01F, 0x1E020, 0x1E021, 0x1E023, 0x1E024, 0x1E026,
    0x1E027, 0x1E028, 0x1E029, 0x1E02A, 0x1E8D0, 0x1E8D1, 0x1E8D2,
    0x1E8D3, 0x1E8D4, 0x1E8D5, 0x1E8D6, 0x1E944, 0x1E945, 0x1E946,
    0x1E947, 0x1E948, 0x1E949, 0x1E94A, 0xE0100, 0xE0101, 0xE0102,
    0xE0103, 0xE0104, 0xE0105, 0xE0106, 0xE0107, 0xE0108, 0xE0109,
    0xE010A, 0xE010B, 0xE010C, 0xE010D, 0xE010E, 0xE010F, 0xE0110,
    0xE0111, 0xE0112, 0xE0113, 0xE0114, 0xE0115, 0xE0116, 0xE0117,
    0xE0118, 0xE0119, 0xE011A, 0xE011B, 0xE011C, 0xE011D, 0xE011E,
    0xE011F, 0xE0120, 0xE0121, 0xE0122, 0xE0123, 0xE0124, 0xE0125,
    0xE0126, 0xE0127, 0xE0128, 0xE0129, 0xE012A, 0xE012B, 0xE012C,
    0xE012D, 0xE012E, 0xE012F, 0xE0130, 0xE0131, 0xE0132, 0xE0133,
    0xE0134, 0xE0135, 0xE0136, 0xE0137, 0xE0138, 0xE0139, 0xE013A,
    0xE013B, 0xE013C, 0xE013D, 0xE013E, 0xE013F, 0xE0140, 0xE0141,
    0xE0142, 0xE0143, 0xE0144, 0xE0145, 0xE0146, 0xE0147, 0xE0148,
    0xE0149, 0xE014A, 0xE014B, 0xE014C, 0xE014D, 0xE014E, 0xE014F,
    0xE0150, 0xE0151, 0xE0152, 0xE0153, 0xE0154, 0xE0155, 0xE0156,
    0xE0157, 0xE0158, 0xE0159, 0xE015A, 0xE015B, 0xE015C, 0xE015D,
    0xE015E, 0xE015F, 0xE0160, 0xE0161, 0xE0162, 0xE0163, 0xE0164,
    0xE0165, 0xE0166, 0xE0167, 0xE0168, 0xE0169, 0xE016A, 0xE016B,
    0xE016C, 0xE016D, 0xE016E, 0xE016F, 0xE0170, 0xE0171, 0xE0172,
    0xE0173, 0xE0174, 0xE0175, 0xE0176, 0xE0177, 0xE0178, 0xE0179,
    0xE017A, 0xE017B, 0xE017C, 0xE017D, 0xE017E, 0xE017F, 0xE0180,
    0xE0181, 0xE0182, 0xE0183, 0xE0184, 0xE0185, 0xE0186, 0xE0187,
    0xE0188, 0xE0189, 0xE018A, 0xE018B, 0xE018C, 0xE018D, 0xE018E,
    0xE018F, 0xE0190, 0xE0191, 0xE0192, 0xE0193, 0xE0194, 0xE0195,
    0xE0196, 0xE0197, 0xE0198, 0xE0199, 0xE019A, 0xE019B, 0xE019C,
    0xE019D, 0xE019E, 0xE019F, 0xE01A0, 0xE01A1, 0xE01A2, 0xE01A3,
    0xE01A4, 0xE01A5, 0xE01A6, 0xE01A7, 0xE01A8, 0xE01A9, 0xE01AA,
    0xE01AB, 0xE01AC, 0xE01AD, 0xE01AE, 0xE01AF, 0xE01B0, 0xE01B1,
    0xE01B2, 0xE01B3, 0xE01B4, 0xE01B5, 0xE01B6, 0xE01B7, 0xE01B8,
    0xE01B9, 0xE01BA, 0xE01BB, 0xE01BC, 0xE01BD, 0xE01BE, 0xE01BF,
    0xE01C0, 0xE01C1, 0xE01C2, 0xE01C3, 0xE01C4, 0xE01C5, 0xE01C6,
    0xE01C7, 0xE01C8, 0xE01C9, 0xE01CA, 0xE01CB, 0xE01CC, 0xE01CD,
    0xE01CE, 0xE01CF, 0xE01D0, 0xE01D1, 0xE01D2, 0xE01D3, 0xE01D4,
    0xE01D5, 0xE01D6, 0xE01D7, 0xE01D8, 0xE01D9, 0xE01DA, 0xE01DB,
    0xE01DC, 0xE01DD, 0xE01DE, 0xE01DF, 0xE01E0, 0xE01E1, 0xE01E2,
    0xE01E3, 0xE01E4, 0xE01E5, 0xE01E6, 0xE01E7, 0xE01E8, 0xE01E9,
    0xE01EA, 0xE01EB, 0xE01EC, 0xE01ED, 0xE01EE, 0xE01EF,
  ];
  const List<int> spacingCombiningMarks = <int>[ // Mc
    0x00903, 0x0093B, 0x0093E, 0x0093F, 0x00940, 0x00949, 0x0094A,
    0x0094B, 0x0094C, 0x0094E, 0x0094F, 0x00982, 0x00983, 0x009BE,
    0x009BF, 0x009C0, 0x009C7, 0x009C8, 0x009CB, 0x009CC, 0x009D7,
    0x00A03, 0x00A3E, 0x00A3F, 0x00A40, 0x00A83, 0x00ABE, 0x00ABF,
    0x00AC0, 0x00AC9, 0x00ACB, 0x00ACC, 0x00B02, 0x00B03, 0x00B3E,
    0x00B40, 0x00B47, 0x00B48, 0x00B4B, 0x00B4C, 0x00B57, 0x00BBE,
    0x00BBF, 0x00BC1, 0x00BC2, 0x00BC6, 0x00BC7, 0x00BC8, 0x00BCA,
    0x00BCB, 0x00BCC, 0x00BD7, 0x00C01, 0x00C02, 0x00C03, 0x00C41,
    0x00C42, 0x00C43, 0x00C44, 0x00C82, 0x00C83, 0x00CBE, 0x00CC0,
    0x00CC1, 0x00CC2, 0x00CC3, 0x00CC4, 0x00CC7, 0x00CC8, 0x00CCA,
    0x00CCB, 0x00CD5, 0x00CD6, 0x00D02, 0x00D03, 0x00D3E, 0x00D3F,
    0x00D40, 0x00D46, 0x00D47, 0x00D48, 0x00D4A, 0x00D4B, 0x00D4C,
    0x00D57, 0x00D82, 0x00D83, 0x00DCF, 0x00DD0, 0x00DD1, 0x00DD8,
    0x00DD9, 0x00DDA, 0x00DDB, 0x00DDC, 0x00DDD, 0x00DDE, 0x00DDF,
    0x00DF2, 0x00DF3, 0x00F3E, 0x00F3F, 0x00F7F, 0x0102B, 0x0102C,
    0x01031, 0x01038, 0x0103B, 0x0103C, 0x01056, 0x01057, 0x01062,
    0x01063, 0x01064, 0x01067, 0x01068, 0x01069, 0x0106A, 0x0106B,
    0x0106C, 0x0106D, 0x01083, 0x01084, 0x01087, 0x01088, 0x01089,
    0x0108A, 0x0108B, 0x0108C, 0x0108F, 0x0109A, 0x0109B, 0x0109C,
    0x017B6, 0x017BE, 0x017BF, 0x017C0, 0x017C1, 0x017C2, 0x017C3,
    0x017C4, 0x017C5, 0x017C7, 0x017C8, 0x01923, 0x01924, 0x01925,
    0x01926, 0x01929, 0x0192A, 0x0192B, 0x01930, 0x01931, 0x01933,
    0x01934, 0x01935, 0x01936, 0x01937, 0x01938, 0x01A19, 0x01A1A,
    0x01A55, 0x01A57, 0x01A61, 0x01A63, 0x01A64, 0x01A6D, 0x01A6E,
    0x01A6F, 0x01A70, 0x01A71, 0x01A72, 0x01B04, 0x01B35, 0x01B3B,
    0x01B3D, 0x01B3E, 0x01B3F, 0x01B40, 0x01B41, 0x01B43, 0x01B44,
    0x01B82, 0x01BA1, 0x01BA6, 0x01BA7, 0x01BAA, 0x01BE7, 0x01BEA,
    0x01BEB, 0x01BEC, 0x01BEE, 0x01BF2, 0x01BF3, 0x01C24, 0x01C25,
    0x01C26, 0x01C27, 0x01C28, 0x01C29, 0x01C2A, 0x01C2B, 0x01C34,
    0x01C35, 0x01CE1, 0x01CF2, 0x01CF3, 0x01CF7, 0x0302E, 0x0302F,
    0x0A823, 0x0A824, 0x0A827, 0x0A880, 0x0A881, 0x0A8B4, 0x0A8B5,
    0x0A8B6, 0x0A8B7, 0x0A8B8, 0x0A8B9, 0x0A8BA, 0x0A8BB, 0x0A8BC,
    0x0A8BD, 0x0A8BE, 0x0A8BF, 0x0A8C0, 0x0A8C1, 0x0A8C2, 0x0A8C3,
    0x0A952, 0x0A953, 0x0A983, 0x0A9B4, 0x0A9B5, 0x0A9BA, 0x0A9BB,
    0x0A9BD, 0x0A9BE, 0x0A9BF, 0x0A9C0, 0x0AA2F, 0x0AA30, 0x0AA33,
    0x0AA34, 0x0AA4D, 0x0AA7B, 0x0AA7D, 0x0AAEB, 0x0AAEE, 0x0AAEF,
    0x0AAF5, 0x0ABE3, 0x0ABE4, 0x0ABE6, 0x0ABE7, 0x0ABE9, 0x0ABEA,
    0x0ABEC, 0x11000, 0x11002, 0x11082, 0x110B0, 0x110B1, 0x110B2,
    0x110B7, 0x110B8, 0x1112C, 0x11182, 0x111B3, 0x111B4, 0x111B5,
    0x111BF, 0x111C0, 0x1122C, 0x1122D, 0x1122E, 0x11232, 0x11233,
    0x11235, 0x112E0, 0x112E1, 0x112E2, 0x11302, 0x11303, 0x1133E,
    0x1133F, 0x11341, 0x11342, 0x11343, 0x11344, 0x11347, 0x11348,
    0x1134B, 0x1134C, 0x1134D, 0x11357, 0x11362, 0x11363, 0x11435,
    0x11436, 0x11437, 0x11440, 0x11441, 0x11445, 0x114B0, 0x114B1,
    0x114B2, 0x114B9, 0x114BB, 0x114BC, 0x114BD, 0x114BE, 0x114C1,
    0x115AF, 0x115B0, 0x115B1, 0x115B8, 0x115B9, 0x115BA, 0x115BB,
    0x115BE, 0x11630, 0x11631, 0x11632, 0x1163B, 0x1163C, 0x1163E,
    0x116AC, 0x116AE, 0x116AF, 0x116B6, 0x11720, 0x11721, 0x11726,
    0x11A07, 0x11A08, 0x11A39, 0x11A57, 0x11A58, 0x11A97, 0x11C2F,
    0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x16F51, 0x16F52, 0x16F53,
    0x16F54, 0x16F55, 0x16F56, 0x16F57, 0x16F58, 0x16F59, 0x16F5A,
    0x16F5B, 0x16F5C, 0x16F5D, 0x16F5E, 0x16F5F, 0x16F60, 0x16F61,
    0x16F62, 0x16F63, 0x16F64, 0x16F65, 0x16F66, 0x16F67, 0x16F68,
    0x16F69, 0x16F6A, 0x16F6B, 0x16F6C, 0x16F6D, 0x16F6E, 0x16F6F,
    0x16F70, 0x16F71, 0x16F72, 0x16F73, 0x16F74, 0x16F75, 0x16F76,
    0x16F77, 0x16F78, 0x16F79, 0x16F7A, 0x16F7B, 0x16F7C, 0x16F7D,
    0x16F7E, 0x1D165, 0x1D166, 0x1D16D, 0x1D16E, 0x1D16F, 0x1D170,
    0x1D171, 0x1D172,
  ];
  final Set<int> these = <int>{};
  int combiningCount = enclosingCombiningMarks.length + nonspacingCombiningMarks.length;
  if (includeSpacingCombiningMarks) {
    combiningCount += spacingCombiningMarks.length;
  }
  for (int count = 0; count < targetLength; count += 1) {
    int characterCode = random.nextInt(combiningCount);
    if (characterCode < enclosingCombiningMarks.length) {
      these.add(enclosingCombiningMarks[characterCode]);
    } else {
      characterCode -= enclosingCombiningMarks.length;
      if (characterCode < nonspacingCombiningMarks.length) {
        these.add(nonspacingCombiningMarks[characterCode]);
      } else {
        characterCode -= nonspacingCombiningMarks.length;
        these.add(spacingCombiningMarks[characterCode]);
      }
    }
  }
  base ??= String.fromCharCode(randomCharacter(random));
  final List<int> characters = these.toList();
  return base + String.fromCharCodes(characters);
}

T pickFromList<T>(math.Random random, List<T> list) {
  return list[random.nextInt(list.length)];
}

class Range {
  const Range(this.start, this.end);
  final int start;
  final int end;
}

int randomCharacter(math.Random random) {
  // all ranges of non-control, non-combining characters
  const List<Range> characterRanges = <Range>[
    Range(0x00020, 0x0007e),
    Range(0x000a0, 0x000ac),
    Range(0x000ae, 0x002ff),
    Range(0x00370, 0x00377),
    Range(0x0037a, 0x0037f),
    Range(0x00384, 0x0038a),
    Range(0x0038c, 0x0038c),
    Range(0x0038e, 0x003a1),
    Range(0x003a3, 0x00482),
    Range(0x0048a, 0x0052f),
    Range(0x00531, 0x00556),
    Range(0x00559, 0x0055f),
    Range(0x00561, 0x00587),
    Range(0x00589, 0x0058a),
    Range(0x0058d, 0x0058f),
    Range(0x005be, 0x005be),
    Range(0x005c0, 0x005c0),
    Range(0x005c3, 0x005c3),
    Range(0x005c6, 0x005c6),
    Range(0x005d0, 0x005ea),
    Range(0x005f0, 0x005f4),
    Range(0x00606, 0x0060f),
    Range(0x0061b, 0x0061b),
    Range(0x0061e, 0x0064a),
    Range(0x00660, 0x0066f),
    Range(0x00671, 0x006d5),
    Range(0x006de, 0x006de),
    Range(0x006e5, 0x006e6),
    Range(0x006e9, 0x006e9),
    Range(0x006ee, 0x0070d),
    Range(0x00710, 0x00710),
    Range(0x00712, 0x0072f),
    Range(0x0074d, 0x007a5),
    Range(0x007b1, 0x007b1),
    Range(0x007c0, 0x007ea),
    Range(0x007f4, 0x007fa),
    Range(0x00800, 0x00815),
    Range(0x0081a, 0x0081a),
    Range(0x00824, 0x00824),
    Range(0x00828, 0x00828),
    Range(0x00830, 0x0083e),
    Range(0x00840, 0x00858),
    Range(0x0085e, 0x0085e),
    Range(0x00860, 0x0086a),
    Range(0x008a0, 0x008b4),
    Range(0x008b6, 0x008bd),
    Range(0x00904, 0x00939),
    Range(0x0093d, 0x0093d),
    Range(0x00950, 0x00950),
    Range(0x00958, 0x00961),
    Range(0x00964, 0x00980),
    Range(0x00985, 0x0098c),
    Range(0x0098f, 0x00990),
    Range(0x00993, 0x009a8),
    Range(0x009aa, 0x009b0),
    Range(0x009b2, 0x009b2),
    Range(0x009b6, 0x009b9),
    Range(0x009bd, 0x009bd),
    Range(0x009ce, 0x009ce),
    Range(0x009dc, 0x009dd),
    Range(0x009df, 0x009e1),
    Range(0x009e6, 0x009fd),
    Range(0x00a05, 0x00a0a),
    Range(0x00a0f, 0x00a10),
    Range(0x00a13, 0x00a28),
    Range(0x00a2a, 0x00a30),
    Range(0x00a32, 0x00a33),
    Range(0x00a35, 0x00a36),
    Range(0x00a38, 0x00a39),
    Range(0x00a59, 0x00a5c),
    Range(0x00a5e, 0x00a5e),
    Range(0x00a66, 0x00a6f),
    Range(0x00a72, 0x00a74),
    Range(0x00a85, 0x00a8d),
    Range(0x00a8f, 0x00a91),
    Range(0x00a93, 0x00aa8),
    Range(0x00aaa, 0x00ab0),
    Range(0x00ab2, 0x00ab3),
    Range(0x00ab5, 0x00ab9),
    Range(0x00abd, 0x00abd),
    Range(0x00ad0, 0x00ad0),
    Range(0x00ae0, 0x00ae1),
    Range(0x00ae6, 0x00af1),
    Range(0x00af9, 0x00af9),
    Range(0x00b05, 0x00b0c),
    Range(0x00b0f, 0x00b10),
    Range(0x00b13, 0x00b28),
    Range(0x00b2a, 0x00b30),
    Range(0x00b32, 0x00b33),
    Range(0x00b35, 0x00b39),
    Range(0x00b3d, 0x00b3d),
    Range(0x00b5c, 0x00b5d),
    Range(0x00b5f, 0x00b61),
    Range(0x00b66, 0x00b77),
    Range(0x00b83, 0x00b83),
    Range(0x00b85, 0x00b8a),
    Range(0x00b8e, 0x00b90),
    Range(0x00b92, 0x00b95),
    Range(0x00b99, 0x00b9a),
    Range(0x00b9c, 0x00b9c),
    Range(0x00b9e, 0x00b9f),
    Range(0x00ba3, 0x00ba4),
    Range(0x00ba8, 0x00baa),
    Range(0x00bae, 0x00bb9),
    Range(0x00bd0, 0x00bd0),
    Range(0x00be6, 0x00bfa),
    Range(0x00c05, 0x00c0c),
    Range(0x00c0e, 0x00c10),
    Range(0x00c12, 0x00c28),
    Range(0x00c2a, 0x00c39),
    Range(0x00c3d, 0x00c3d),
    Range(0x00c58, 0x00c5a),
    Range(0x00c60, 0x00c61),
    Range(0x00c66, 0x00c6f),
    Range(0x00c78, 0x00c80),
    Range(0x00c85, 0x00c8c),
    Range(0x00c8e, 0x00c90),
    Range(0x00c92, 0x00ca8),
    Range(0x00caa, 0x00cb3),
    Range(0x00cb5, 0x00cb9),
    Range(0x00cbd, 0x00cbd),
    Range(0x00cde, 0x00cde),
    Range(0x00ce0, 0x00ce1),
    Range(0x00ce6, 0x00cef),
    Range(0x00cf1, 0x00cf2),
    Range(0x00d05, 0x00d0c),
    Range(0x00d0e, 0x00d10),
    Range(0x00d12, 0x00d3a),
    Range(0x00d3d, 0x00d3d),
    Range(0x00d4e, 0x00d4f),
    Range(0x00d54, 0x00d56),
    Range(0x00d58, 0x00d61),
    Range(0x00d66, 0x00d7f),
    Range(0x00d85, 0x00d96),
    Range(0x00d9a, 0x00db1),
    Range(0x00db3, 0x00dbb),
    Range(0x00dbd, 0x00dbd),
    Range(0x00dc0, 0x00dc6),
    Range(0x00de6, 0x00def),
    Range(0x00df4, 0x00df4),
    Range(0x00e01, 0x00e30),
    Range(0x00e32, 0x00e33),
    Range(0x00e3f, 0x00e46),
    Range(0x00e4f, 0x00e5b),
    Range(0x00e81, 0x00e82),
    Range(0x00e84, 0x00e84),
    Range(0x00e87, 0x00e88),
    Range(0x00e8a, 0x00e8a),
    Range(0x00e8d, 0x00e8d),
    Range(0x00e94, 0x00e97),
    Range(0x00e99, 0x00e9f),
    Range(0x00ea1, 0x00ea3),
    Range(0x00ea5, 0x00ea5),
    Range(0x00ea7, 0x00ea7),
    Range(0x00eaa, 0x00eab),
    Range(0x00ead, 0x00eb0),
    Range(0x00eb2, 0x00eb3),
    Range(0x00ebd, 0x00ebd),
    Range(0x00ec0, 0x00ec4),
    Range(0x00ec6, 0x00ec6),
    Range(0x00ed0, 0x00ed9),
    Range(0x00edc, 0x00edf),
    Range(0x00f00, 0x00f17),
    Range(0x00f1a, 0x00f34),
    Range(0x00f36, 0x00f36),
    Range(0x00f38, 0x00f38),
    Range(0x00f3a, 0x00f3d),
    Range(0x00f40, 0x00f47),
    Range(0x00f49, 0x00f6c),
    Range(0x00f85, 0x00f85),
    Range(0x00f88, 0x00f8c),
    Range(0x00fbe, 0x00fc5),
    Range(0x00fc7, 0x00fcc),
    Range(0x00fce, 0x00fda),
    Range(0x01000, 0x0102a),
    Range(0x0103f, 0x01055),
    Range(0x0105a, 0x0105d),
    Range(0x01061, 0x01061),
    Range(0x01065, 0x01066),
    Range(0x0106e, 0x01070),
    Range(0x01075, 0x01081),
    Range(0x0108e, 0x0108e),
    Range(0x01090, 0x01099),
    Range(0x0109e, 0x010c5),
    Range(0x010c7, 0x010c7),
    Range(0x010cd, 0x010cd),
    Range(0x010d0, 0x01248),
    Range(0x0124a, 0x0124d),
    Range(0x01250, 0x01256),
    Range(0x01258, 0x01258),
    Range(0x0125a, 0x0125d),
    Range(0x01260, 0x01288),
    Range(0x0128a, 0x0128d),
    Range(0x01290, 0x012b0),
    Range(0x012b2, 0x012b5),
    Range(0x012b8, 0x012be),
    Range(0x012c0, 0x012c0),
    Range(0x012c2, 0x012c5),
    Range(0x012c8, 0x012d6),
    Range(0x012d8, 0x01310),
    Range(0x01312, 0x01315),
    Range(0x01318, 0x0135a),
    Range(0x01360, 0x0137c),
    Range(0x01380, 0x01399),
    Range(0x013a0, 0x013f5),
    Range(0x013f8, 0x013fd),
    Range(0x01400, 0x0169c),
    Range(0x016a0, 0x016f8),
    Range(0x01700, 0x0170c),
    Range(0x0170e, 0x01711),
    Range(0x01720, 0x01731),
    Range(0x01735, 0x01736),
    Range(0x01740, 0x01751),
    Range(0x01760, 0x0176c),
    Range(0x0176e, 0x01770),
    Range(0x01780, 0x017b3),
    Range(0x017d4, 0x017dc),
    Range(0x017e0, 0x017e9),
    Range(0x017f0, 0x017f9),
    Range(0x01800, 0x0180a),
    Range(0x01810, 0x01819),
    Range(0x01820, 0x01877),
    Range(0x01880, 0x01884),
    Range(0x01887, 0x018a8),
    Range(0x018aa, 0x018aa),
    Range(0x018b0, 0x018f5),
    Range(0x01900, 0x0191e),
    Range(0x01940, 0x01940),
    Range(0x01944, 0x0196d),
    Range(0x01970, 0x01974),
    Range(0x01980, 0x019ab),
    Range(0x019b0, 0x019c9),
    Range(0x019d0, 0x019da),
    Range(0x019de, 0x01a16),
    Range(0x01a1e, 0x01a54),
    Range(0x01a80, 0x01a89),
    Range(0x01a90, 0x01a99),
    Range(0x01aa0, 0x01aad),
    Range(0x01b05, 0x01b33),
    Range(0x01b45, 0x01b4b),
    Range(0x01b50, 0x01b6a),
    Range(0x01b74, 0x01b7c),
    Range(0x01b83, 0x01ba0),
    Range(0x01bae, 0x01be5),
    Range(0x01bfc, 0x01c23),
    Range(0x01c3b, 0x01c49),
    Range(0x01c4d, 0x01c88),
    Range(0x01cc0, 0x01cc7),
    Range(0x01cd3, 0x01cd3),
    Range(0x01ce9, 0x01cec),
    Range(0x01cee, 0x01cf1),
    Range(0x01cf5, 0x01cf6),
    Range(0x01d00, 0x01dbf),
    Range(0x01e00, 0x01f15),
    Range(0x01f18, 0x01f1d),
    Range(0x01f20, 0x01f45),
    Range(0x01f48, 0x01f4d),
    Range(0x01f50, 0x01f57),
    Range(0x01f59, 0x01f59),
    Range(0x01f5b, 0x01f5b),
    Range(0x01f5d, 0x01f5d),
    Range(0x01f5f, 0x01f7d),
    Range(0x01f80, 0x01fb4),
    Range(0x01fb6, 0x01fc4),
    Range(0x01fc6, 0x01fd3),
    Range(0x01fd6, 0x01fdb),
    Range(0x01fdd, 0x01fef),
    Range(0x01ff2, 0x01ff4),
    Range(0x01ff6, 0x01ffe),
    Range(0x02000, 0x0200a),
    Range(0x02010, 0x02029),
    Range(0x0202f, 0x0205f),
    Range(0x02070, 0x02071),
    Range(0x02074, 0x0208e),
    Range(0x02090, 0x0209c),
    Range(0x020a0, 0x020bf),
    Range(0x02100, 0x0218b),
    Range(0x02190, 0x02426),
    Range(0x02440, 0x0244a),
    Range(0x02460, 0x02b73),
    Range(0x02b76, 0x02b95),
    Range(0x02b98, 0x02bb9),
    Range(0x02bbd, 0x02bc8),
    Range(0x02bca, 0x02bd2),
    Range(0x02bec, 0x02bef),
    Range(0x02c00, 0x02c2e),
    Range(0x02c30, 0x02c5e),
    Range(0x02c60, 0x02cee),
    Range(0x02cf2, 0x02cf3),
    Range(0x02cf9, 0x02d25),
    Range(0x02d27, 0x02d27),
    Range(0x02d2d, 0x02d2d),
    Range(0x02d30, 0x02d67),
    Range(0x02d6f, 0x02d70),
    Range(0x02d80, 0x02d96),
    Range(0x02da0, 0x02da6),
    Range(0x02da8, 0x02dae),
    Range(0x02db0, 0x02db6),
    Range(0x02db8, 0x02dbe),
    Range(0x02dc0, 0x02dc6),
    Range(0x02dc8, 0x02dce),
    Range(0x02dd0, 0x02dd6),
    Range(0x02dd8, 0x02dde),
    Range(0x02e00, 0x02e49),
    Range(0x02e80, 0x02e99),
    Range(0x02e9b, 0x02ef3),
    Range(0x02f00, 0x02fd5),
    Range(0x02ff0, 0x02ffb),
    Range(0x03000, 0x03029),
    Range(0x03030, 0x0303f),
    Range(0x03041, 0x03096),
    Range(0x0309b, 0x030ff),
    Range(0x03105, 0x0312e),
    Range(0x03131, 0x0318e),
    Range(0x03190, 0x031ba),
    Range(0x031c0, 0x031e3),
    Range(0x031f0, 0x0321e),
    Range(0x03220, 0x032fe),
    Range(0x03300, 0x04db5),
    Range(0x04dc0, 0x09fea),
    Range(0x0a000, 0x0a48c),
    Range(0x0a490, 0x0a4c6),
    Range(0x0a4d0, 0x0a62b),
    Range(0x0a640, 0x0a66e),
    Range(0x0a673, 0x0a673),
    Range(0x0a67e, 0x0a69d),
    Range(0x0a6a0, 0x0a6ef),
    Range(0x0a6f2, 0x0a6f7),
    Range(0x0a700, 0x0a7ae),
    Range(0x0a7b0, 0x0a7b7),
    Range(0x0a7f7, 0x0a801),
    Range(0x0a803, 0x0a805),
    Range(0x0a807, 0x0a80a),
    Range(0x0a80c, 0x0a822),
    Range(0x0a828, 0x0a82b),
    Range(0x0a830, 0x0a839),
    Range(0x0a840, 0x0a877),
    Range(0x0a882, 0x0a8b3),
    Range(0x0a8ce, 0x0a8d9),
    Range(0x0a8f2, 0x0a8fd),
    Range(0x0a900, 0x0a925),
    Range(0x0a92e, 0x0a946),
    Range(0x0a95f, 0x0a97c),
    Range(0x0a984, 0x0a9b2),
    Range(0x0a9c1, 0x0a9cd),
    Range(0x0a9cf, 0x0a9d9),
    Range(0x0a9de, 0x0a9e4),
    Range(0x0a9e6, 0x0a9fe),
    Range(0x0aa00, 0x0aa28),
    Range(0x0aa40, 0x0aa42),
    Range(0x0aa44, 0x0aa4b),
    Range(0x0aa50, 0x0aa59),
    Range(0x0aa5c, 0x0aa7a),
    Range(0x0aa7e, 0x0aaaf),
    Range(0x0aab1, 0x0aab1),
    Range(0x0aab5, 0x0aab6),
    Range(0x0aab9, 0x0aabd),
    Range(0x0aac0, 0x0aac0),
    Range(0x0aac2, 0x0aac2),
    Range(0x0aadb, 0x0aaea),
    Range(0x0aaf0, 0x0aaf4),
    Range(0x0ab01, 0x0ab06),
    Range(0x0ab09, 0x0ab0e),
    Range(0x0ab11, 0x0ab16),
    Range(0x0ab20, 0x0ab26),
    Range(0x0ab28, 0x0ab2e),
    Range(0x0ab30, 0x0ab65),
    Range(0x0ab70, 0x0abe2),
    Range(0x0abeb, 0x0abeb),
    Range(0x0abf0, 0x0abf9),
    Range(0x0ac00, 0x0d7a3),
    Range(0x0d7b0, 0x0d7c6),
    Range(0x0d7cb, 0x0d7fb),
    Range(0x0f900, 0x0fa6d),
    Range(0x0fa70, 0x0fad9),
    Range(0x0fb00, 0x0fb06),
    Range(0x0fb13, 0x0fb17),
    Range(0x0fb1d, 0x0fb1d),
    Range(0x0fb1f, 0x0fb36),
    Range(0x0fb38, 0x0fb3c),
    Range(0x0fb3e, 0x0fb3e),
    Range(0x0fb40, 0x0fb41),
    Range(0x0fb43, 0x0fb44),
    Range(0x0fb46, 0x0fbc1),
    Range(0x0fbd3, 0x0fd3f),
    Range(0x0fd50, 0x0fd8f),
    Range(0x0fd92, 0x0fdc7),
    Range(0x0fdf0, 0x0fdfd),
    Range(0x0fe10, 0x0fe19),
    Range(0x0fe30, 0x0fe52),
    Range(0x0fe54, 0x0fe66),
    Range(0x0fe68, 0x0fe6b),
    Range(0x0fe70, 0x0fe74),
    Range(0x0fe76, 0x0fefc),
    Range(0x0ff01, 0x0ffbe),
    Range(0x0ffc2, 0x0ffc7),
    Range(0x0ffca, 0x0ffcf),
    Range(0x0ffd2, 0x0ffd7),
    Range(0x0ffda, 0x0ffdc),
    Range(0x0ffe0, 0x0ffe6),
    Range(0x0ffe8, 0x0ffee),
    Range(0x0fffc, 0x0fffd),
    Range(0x10000, 0x1000b),
    Range(0x1000d, 0x10026),
    Range(0x10028, 0x1003a),
    Range(0x1003c, 0x1003d),
    Range(0x1003f, 0x1004d),
    Range(0x10050, 0x1005d),
    Range(0x10080, 0x100fa),
    Range(0x10100, 0x10102),
    Range(0x10107, 0x10133),
    Range(0x10137, 0x1018e),
    Range(0x10190, 0x1019b),
    Range(0x101a0, 0x101a0),
    Range(0x101d0, 0x101fc),
    Range(0x10280, 0x1029c),
    Range(0x102a0, 0x102d0),
    Range(0x102e1, 0x102fb),
    Range(0x10300, 0x10323),
    Range(0x1032d, 0x1034a),
    Range(0x10350, 0x10375),
    Range(0x10380, 0x1039d),
    Range(0x1039f, 0x103c3),
    Range(0x103c8, 0x103d5),
    Range(0x10400, 0x1049d),
    Range(0x104a0, 0x104a9),
    Range(0x104b0, 0x104d3),
    Range(0x104d8, 0x104fb),
    Range(0x10500, 0x10527),
    Range(0x10530, 0x10563),
    Range(0x1056f, 0x1056f),
    Range(0x10600, 0x10736),
    Range(0x10740, 0x10755),
    Range(0x10760, 0x10767),
    Range(0x10800, 0x10805),
    Range(0x10808, 0x10808),
    Range(0x1080a, 0x10835),
    Range(0x10837, 0x10838),
    Range(0x1083c, 0x1083c),
    Range(0x1083f, 0x10855),
    Range(0x10857, 0x1089e),
    Range(0x108a7, 0x108af),
    Range(0x108e0, 0x108f2),
    Range(0x108f4, 0x108f5),
    Range(0x108fb, 0x1091b),
    Range(0x1091f, 0x10939),
    Range(0x1093f, 0x1093f),
    Range(0x10980, 0x109b7),
    Range(0x109bc, 0x109cf),
    Range(0x109d2, 0x10a00),
    Range(0x10a10, 0x10a13),
    Range(0x10a15, 0x10a17),
    Range(0x10a19, 0x10a33),
    Range(0x10a40, 0x10a47),
    Range(0x10a50, 0x10a58),
    Range(0x10a60, 0x10a9f),
    Range(0x10ac0, 0x10ae4),
    Range(0x10aeb, 0x10af6),
    Range(0x10b00, 0x10b35),
    Range(0x10b39, 0x10b55),
    Range(0x10b58, 0x10b72),
    Range(0x10b78, 0x10b91),
    Range(0x10b99, 0x10b9c),
    Range(0x10ba9, 0x10baf),
    Range(0x10c00, 0x10c48),
    Range(0x10c80, 0x10cb2),
    Range(0x10cc0, 0x10cf2),
    Range(0x10cfa, 0x10cff),
    Range(0x10e60, 0x10e7e),
    Range(0x11003, 0x11037),
    Range(0x11047, 0x1104d),
    Range(0x11052, 0x1106f),
    Range(0x11083, 0x110af),
    Range(0x110bb, 0x110bc),
    Range(0x110be, 0x110c1),
    Range(0x110d0, 0x110e8),
    Range(0x110f0, 0x110f9),
    Range(0x11103, 0x11126),
    Range(0x11136, 0x11143),
    Range(0x11150, 0x11172),
    Range(0x11174, 0x11176),
    Range(0x11183, 0x111b2),
    Range(0x111c1, 0x111c9),
    Range(0x111cd, 0x111cd),
    Range(0x111d0, 0x111df),
    Range(0x111e1, 0x111f4),
    Range(0x11200, 0x11211),
    Range(0x11213, 0x1122b),
    Range(0x11238, 0x1123d),
    Range(0x11280, 0x11286),
    Range(0x11288, 0x11288),
    Range(0x1128a, 0x1128d),
    Range(0x1128f, 0x1129d),
    Range(0x1129f, 0x112a9),
    Range(0x112b0, 0x112de),
    Range(0x112f0, 0x112f9),
    Range(0x11305, 0x1130c),
    Range(0x1130f, 0x11310),
    Range(0x11313, 0x11328),
    Range(0x1132a, 0x11330),
    Range(0x11332, 0x11333),
    Range(0x11335, 0x11339),
    Range(0x1133d, 0x1133d),
    Range(0x11350, 0x11350),
    Range(0x1135d, 0x11361),
    Range(0x11400, 0x11434),
    Range(0x11447, 0x11459),
    Range(0x1145b, 0x1145b),
    Range(0x1145d, 0x1145d),
    Range(0x11480, 0x114af),
    Range(0x114c4, 0x114c7),
    Range(0x114d0, 0x114d9),
    Range(0x11580, 0x115ae),
    Range(0x115c1, 0x115db),
    Range(0x11600, 0x1162f),
    Range(0x11641, 0x11644),
    Range(0x11650, 0x11659),
    Range(0x11660, 0x1166c),
    Range(0x11680, 0x116aa),
    Range(0x116c0, 0x116c9),
    Range(0x11700, 0x11719),
    Range(0x11730, 0x1173f),
    Range(0x118a0, 0x118f2),
    Range(0x118ff, 0x118ff),
    Range(0x11a00, 0x11a00),
    Range(0x11a0b, 0x11a32),
    Range(0x11a3a, 0x11a3a),
    Range(0x11a3f, 0x11a46),
    Range(0x11a50, 0x11a50),
    Range(0x11a5c, 0x11a83),
    Range(0x11a86, 0x11a89),
    Range(0x11a9a, 0x11a9c),
    Range(0x11a9e, 0x11aa2),
    Range(0x11ac0, 0x11af8),
    Range(0x11c00, 0x11c08),
    Range(0x11c0a, 0x11c2e),
    Range(0x11c40, 0x11c45),
    Range(0x11c50, 0x11c6c),
    Range(0x11c70, 0x11c8f),
    Range(0x11d00, 0x11d06),
    Range(0x11d08, 0x11d09),
    Range(0x11d0b, 0x11d30),
    Range(0x11d46, 0x11d46),
    Range(0x11d50, 0x11d59),
    Range(0x12000, 0x12399),
    Range(0x12400, 0x1246e),
    Range(0x12470, 0x12474),
    Range(0x12480, 0x12543),
    Range(0x13000, 0x1342e),
    Range(0x14400, 0x14646),
    Range(0x16800, 0x16a38),
    Range(0x16a40, 0x16a5e),
    Range(0x16a60, 0x16a69),
    Range(0x16a6e, 0x16a6f),
    Range(0x16ad0, 0x16aed),
    Range(0x16af5, 0x16af5),
    Range(0x16b00, 0x16b2f),
    Range(0x16b37, 0x16b45),
    Range(0x16b50, 0x16b59),
    Range(0x16b5b, 0x16b61),
    Range(0x16b63, 0x16b77),
    Range(0x16b7d, 0x16b8f),
    Range(0x16f00, 0x16f44),
    Range(0x16f50, 0x16f50),
    Range(0x16f93, 0x16f9f),
    Range(0x16fe0, 0x16fe1),
    Range(0x17000, 0x187ec),
    Range(0x18800, 0x18af2),
    Range(0x1b000, 0x1b11e),
    Range(0x1b170, 0x1b2fb),
    Range(0x1bc00, 0x1bc6a),
    Range(0x1bc70, 0x1bc7c),
    Range(0x1bc80, 0x1bc88),
    Range(0x1bc90, 0x1bc99),
    Range(0x1bc9c, 0x1bc9c),
    Range(0x1bc9f, 0x1bc9f),
    Range(0x1d000, 0x1d0f5),
    Range(0x1d100, 0x1d126),
    Range(0x1d129, 0x1d164),
    Range(0x1d16a, 0x1d16c),
    Range(0x1d183, 0x1d184),
    Range(0x1d18c, 0x1d1a9),
    Range(0x1d1ae, 0x1d1e8),
    Range(0x1d200, 0x1d241),
    Range(0x1d245, 0x1d245),
    Range(0x1d300, 0x1d356),
    Range(0x1d360, 0x1d371),
    Range(0x1d400, 0x1d454),
    Range(0x1d456, 0x1d49c),
    Range(0x1d49e, 0x1d49f),
    Range(0x1d4a2, 0x1d4a2),
    Range(0x1d4a5, 0x1d4a6),
    Range(0x1d4a9, 0x1d4ac),
    Range(0x1d4ae, 0x1d4b9),
    Range(0x1d4bb, 0x1d4bb),
    Range(0x1d4bd, 0x1d4c3),
    Range(0x1d4c5, 0x1d505),
    Range(0x1d507, 0x1d50a),
    Range(0x1d50d, 0x1d514),
    Range(0x1d516, 0x1d51c),
    Range(0x1d51e, 0x1d539),
    Range(0x1d53b, 0x1d53e),
    Range(0x1d540, 0x1d544),
    Range(0x1d546, 0x1d546),
    Range(0x1d54a, 0x1d550),
    Range(0x1d552, 0x1d6a5),
    Range(0x1d6a8, 0x1d7cb),
    Range(0x1d7ce, 0x1d9ff),
    Range(0x1da37, 0x1da3a),
    Range(0x1da6d, 0x1da74),
    Range(0x1da76, 0x1da83),
    Range(0x1da85, 0x1da8b),
    Range(0x1e800, 0x1e8c4),
    Range(0x1e8c7, 0x1e8cf),
    Range(0x1e900, 0x1e943),
    Range(0x1e950, 0x1e959),
    Range(0x1e95e, 0x1e95f),
    Range(0x1ee00, 0x1ee03),
    Range(0x1ee05, 0x1ee1f),
    Range(0x1ee21, 0x1ee22),
    Range(0x1ee24, 0x1ee24),
    Range(0x1ee27, 0x1ee27),
    Range(0x1ee29, 0x1ee32),
    Range(0x1ee34, 0x1ee37),
    Range(0x1ee39, 0x1ee39),
    Range(0x1ee3b, 0x1ee3b),
    Range(0x1ee42, 0x1ee42),
    Range(0x1ee47, 0x1ee47),
    Range(0x1ee49, 0x1ee49),
    Range(0x1ee4b, 0x1ee4b),
    Range(0x1ee4d, 0x1ee4f),
    Range(0x1ee51, 0x1ee52),
    Range(0x1ee54, 0x1ee54),
    Range(0x1ee57, 0x1ee57),
    Range(0x1ee59, 0x1ee59),
    Range(0x1ee5b, 0x1ee5b),
    Range(0x1ee5d, 0x1ee5d),
    Range(0x1ee5f, 0x1ee5f),
    Range(0x1ee61, 0x1ee62),
    Range(0x1ee64, 0x1ee64),
    Range(0x1ee67, 0x1ee6a),
    Range(0x1ee6c, 0x1ee72),
    Range(0x1ee74, 0x1ee77),
    Range(0x1ee79, 0x1ee7c),
    Range(0x1ee7e, 0x1ee7e),
    Range(0x1ee80, 0x1ee89),
    Range(0x1ee8b, 0x1ee9b),
    Range(0x1eea1, 0x1eea3),
    Range(0x1eea5, 0x1eea9),
    Range(0x1eeab, 0x1eebb),
    Range(0x1eef0, 0x1eef1),
    Range(0x1f000, 0x1f02b),
    Range(0x1f030, 0x1f093),
    Range(0x1f0a0, 0x1f0ae),
    Range(0x1f0b1, 0x1f0bf),
    Range(0x1f0c1, 0x1f0cf),
    Range(0x1f0d1, 0x1f0f5),
    Range(0x1f100, 0x1f10c),
    Range(0x1f110, 0x1f12e),
    Range(0x1f130, 0x1f16b),
    Range(0x1f170, 0x1f1ac),
    Range(0x1f1e6, 0x1f202),
    Range(0x1f210, 0x1f23b),
    Range(0x1f240, 0x1f248),
    Range(0x1f250, 0x1f251),
    Range(0x1f260, 0x1f265),
    Range(0x1f300, 0x1f6d4),
    Range(0x1f6e0, 0x1f6ec),
    Range(0x1f6f0, 0x1f6f8),
    Range(0x1f700, 0x1f773),
    Range(0x1f780, 0x1f7d4),
    Range(0x1f800, 0x1f80b),
    Range(0x1f810, 0x1f847),
    Range(0x1f850, 0x1f859),
    Range(0x1f860, 0x1f887),
    Range(0x1f890, 0x1f8ad),
    Range(0x1f900, 0x1f90b),
    Range(0x1f910, 0x1f93e),
    Range(0x1f940, 0x1f94c),
    Range(0x1f950, 0x1f96b),
    Range(0x1f980, 0x1f997),
    Range(0x1f9c0, 0x1f9c0),
    Range(0x1f9d0, 0x1f9e6),
    Range(0x20000, 0x2a6d6),
    Range(0x2a700, 0x2b734),
    Range(0x2b740, 0x2b81d),
    Range(0x2b820, 0x2cea1),
    Range(0x2ceb0, 0x2ebe0),
    Range(0x2f800, 0x2fa1d),
  ];
  final Range range = pickFromList<Range>(random, characterRanges);
  if (range.start == range.end) {
    return range.start;
  }
  return range.start + random.nextInt(range.end - range.start);
}
