Files
crosspoint-reader-mod/lib/EpdFont/builtinFonts/bookerly_12_bolditalic.h

3565 lines
307 KiB
C
Raw Normal View History

/**
* generated by fontconvert.py
* name: bookerly_12_bolditalic
* size: 12
perf: Reduce overall flash usage by 30.7% by compressing built-in fonts (#831) ## Summary **What is the goal of this PR?** Compress reader font bitmaps to reduce flash usage by 30.7%. **What changes are included?** - New `EpdFontGroup` struct and extended `EpdFontData` with `groups`/`groupCount` fields - `--compress` flag in `fontconvert.py`: groups glyphs (ASCII base group + groups of 8) and compresses each with raw DEFLATE - `FontDecompressor` class with 4-slot LRU cache for on-demand decompression during rendering - `GfxRenderer` transparently routes bitmap access through `getGlyphBitmap()` (compressed or direct flash) - Uses `uzlib` for decompression with minimal heap overhead. - 48 reader fonts (Bookerly, NotoSans 12-18pt, OpenDyslexic) regenerated with compression; 5 UI fonts unchanged - Round-trip verification script (`verify_compression.py`) runs as part of font generation ## Additional Context ## Flash & RAM | | baseline | font-compression | Difference | |--|--------|-----------------|------------| | Flash (ELF) | 6,302,476 B (96.2%) | 4,365,022 B (66.6%) | -1,937,454 B (-30.7%) | | firmware.bin | 6,468,192 B | 4,531,008 B | -1,937,184 B (-29.9%) | | RAM | 101,700 B (31.0%) | 103,076 B (31.5%) | +1,376 B (+0.5%) | ## Script-Based Grouping (Cold Cache) Comparison of uncompressed baseline vs script-based group compression (4-slot LRU cache, cleared each page). Glyphs are grouped by Unicode block (ASCII, Latin-1, Latin Extended-A, Combining Marks, Cyrillic, General Punctuation, etc.) instead of sequential groups of 8. ### Render Time | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Median** | 414.9 ms | 431.6 ms | +16.7 ms (+4.0%) | | **Pages** | 37 | 37 | | ### Memory Usage | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Heap free (median)** | 187.0 KB | 176.3 KB | -10.7 KB | | **Heap free (min)** | 186.0 KB | 166.5 KB | -19.5 KB | | **Largest block (median)** | 148.0 KB | 128.0 KB | -20.0 KB | | **Largest block (min)** | 148.0 KB | 120.0 KB | -28.0 KB | ### Cache Effectiveness | | Misses/page | Hit rate | |---|---|---| | **Compressed (cold cache)** | 2.1 | 99.85% | ------ ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES**_ Implementation was done by Claude Code (Opus 4.6) based on a plan developed collaboratively. All generated font headers were verified with an automated round-trip decompression test. The firmware was compiled successfully but has not yet been tested on-device. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:30:15 +11:00
* mode: 2-bit compressed: true
fix: force auto-hinting for Bookerly to fix inconsistent stem widths (#1098) ## Summary Bookerly's native TrueType hinting is effectively a no-op at the sizes used here, causing FreeType to place stems at inconsistent sub-pixel positions. This results in the 'k' stem (8-bit fringe: 0x38=56) falling just below the 2-bit quantization threshold while 'l' and 'h' stems (fringes: 0x4C=76, 0x40=64) land above it --- making 'k' visibly narrower (2.00px vs 2.33px effective width). FreeType's auto-hinter snaps all stems to consistent grid positions, normalizing effective stem width to 2.67px across all glyphs. Adds --force-autohint flag to fontconvert.py and applies it to Bookerly only. NotoSans, OpenDyslexic, and Ubuntu fonts are unaffected. Here is an example of before/after. Take notice of the vertical stems on characters like `l`, `k`, `n`, `i`, etc. The font is Bookerly 12pt regular: **BEFORE**: ![before](https://github.com/user-attachments/assets/65b2acab-ad95-489e-885e-e3a0163cc252) **AFTER**: ![after](https://github.com/user-attachments/assets/d09a8b5d-40af-4a7d-b622-e1b2cabcce85) Claude generated this script to quantitatively determine that this change makes the vertical stems on a variety of characters more consistent for Bookerly _only_. <details> <summary>Python script</summary> ```python #!/usr/bin/env python3 """Compare stem consistency across all font families with and without auto-hinting. Run from repo root: python3 compare_all_fonts.py """ import freetype DPI = 150 CHARS = ["k", "l", "h", "i", "b", "d"] SIZES = [12, 14, 16, 18] FONTS = { "Bookerly": "lib/EpdFont/builtinFonts/source/Bookerly/Bookerly-Regular.ttf", "NotoSans": "lib/EpdFont/builtinFonts/source/NotoSans/NotoSans-Regular.ttf", "OpenDyslexic": "lib/EpdFont/builtinFonts/source/OpenDyslexic/OpenDyslexic-Regular.otf", "Ubuntu": "lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf", } MODES = { "default": freetype.FT_LOAD_RENDER, "autohint": freetype.FT_LOAD_RENDER | freetype.FT_LOAD_FORCE_AUTOHINT, } def q4to2(v): if v >= 12: return 3 elif v >= 8: return 2 elif v >= 4: return 1 else: return 0 def get_stem_eff(face, char, flags): gi = face.get_char_index(ord(char)) if gi == 0: return None face.load_glyph(gi, flags) bm = face.glyph.bitmap w, h = bm.width, bm.rows if w == 0 or h == 0: return None p2 = [] for y in range(h): row = [] for x in range(w): row.append(q4to2(bm.buffer[y * bm.pitch + x] >> 4)) p2.append(row) # Measure leftmost stem in stable middle rows mid_start, mid_end = h // 4, h - h // 4 widths = [] for y in range(mid_start, mid_end): first = next((x for x in range(w) if p2[y][x] > 0), -1) if first < 0: continue last = first for x in range(first, w): if p2[y][x] > 0: last = x else: break eff = sum(p2[y][x] for x in range(first, last + 1)) / 3.0 widths.append(eff) return round(sum(widths) / len(widths), 2) if widths else None def main(): for font_name, font_path in FONTS.items(): try: freetype.Face(font_path) except Exception: print(f"\n {font_name}: SKIPPED (file not found)") continue print(f"\n{'=' * 80}") print(f" {font_name}") print(f"{'=' * 80}") for size in SIZES: print(f"\n {size}pt:") print(f" {'':6s}", end="") for c in CHARS: print(f" '{c}' ", end="") print(" | spread") for mode_name, flags in MODES.items(): face = freetype.Face(font_path) face.set_char_size(size << 6, size << 6, DPI, DPI) vals = [] print(f" {mode_name:6s}", end="") for c in CHARS: v = get_stem_eff(face, c, flags) vals.append(v) print(f" {v:5.2f}" if v else " N/A", end="") valid = [v for v in vals if v is not None] spread = max(valid) - min(valid) if len(valid) >= 2 else 0 marker = " <-- inconsistent" if spread > 0.5 else "" print(f" | {spread:.2f}{marker}") if __name__ == "__main__": main() ``` </details> Here are the results. The table compares how the font-generation `autohint` flag affects the range of widths of various characters. Lower `spread` mean that glyph stroke widths should appear more consistent. ``` Spread = max stem width - min stem width across glyphs (lower = more consistent): ┌──────────────┬──────┬─────────┬──────────┬──────────┐ │ Font │ Size │ Default │ Autohint │ Winner │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Bookerly │ 12pt │ 1.49 │ 1.12 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.39 │ 1.13 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.38 │ 1.16 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.90 │ 1.58 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ NotoSans │ 12pt │ 1.16 │ 0.94 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 0.83 │ 1.14 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.41 │ 1.51 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.74 │ 1.63 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ OpenDyslexic │ 12pt │ 2.22 │ 1.44 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 2.57 │ 3.29 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 3.13 │ 2.60 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 3.21 │ 3.23 │ ~tied │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Ubuntu │ 12pt │ 1.25 │ 1.31 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.41 │ 1.64 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 2.21 │ 1.71 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.80 │ 1.71 │ autohint │ └──────────────┴──────┴─────────┴──────────┴──────────┘ ``` --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? I used AI to make sure I'm not doing something stupid, since I'm not a typography expert. I made the changes though.
2026-02-24 06:13:08 +11:00
* Command used: fontconvert.py bookerly_12_bolditalic 12 ../builtinFonts/source/Bookerly/Bookerly-BoldItalic.ttf --2bit --compress --force-autohint
*/
#pragma once
#include "EpdFontData.h"
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
static const uint8_t bookerly_12_bolditalicBitmaps[24943] = {
fix: force auto-hinting for Bookerly to fix inconsistent stem widths (#1098) ## Summary Bookerly's native TrueType hinting is effectively a no-op at the sizes used here, causing FreeType to place stems at inconsistent sub-pixel positions. This results in the 'k' stem (8-bit fringe: 0x38=56) falling just below the 2-bit quantization threshold while 'l' and 'h' stems (fringes: 0x4C=76, 0x40=64) land above it --- making 'k' visibly narrower (2.00px vs 2.33px effective width). FreeType's auto-hinter snaps all stems to consistent grid positions, normalizing effective stem width to 2.67px across all glyphs. Adds --force-autohint flag to fontconvert.py and applies it to Bookerly only. NotoSans, OpenDyslexic, and Ubuntu fonts are unaffected. Here is an example of before/after. Take notice of the vertical stems on characters like `l`, `k`, `n`, `i`, etc. The font is Bookerly 12pt regular: **BEFORE**: ![before](https://github.com/user-attachments/assets/65b2acab-ad95-489e-885e-e3a0163cc252) **AFTER**: ![after](https://github.com/user-attachments/assets/d09a8b5d-40af-4a7d-b622-e1b2cabcce85) Claude generated this script to quantitatively determine that this change makes the vertical stems on a variety of characters more consistent for Bookerly _only_. <details> <summary>Python script</summary> ```python #!/usr/bin/env python3 """Compare stem consistency across all font families with and without auto-hinting. Run from repo root: python3 compare_all_fonts.py """ import freetype DPI = 150 CHARS = ["k", "l", "h", "i", "b", "d"] SIZES = [12, 14, 16, 18] FONTS = { "Bookerly": "lib/EpdFont/builtinFonts/source/Bookerly/Bookerly-Regular.ttf", "NotoSans": "lib/EpdFont/builtinFonts/source/NotoSans/NotoSans-Regular.ttf", "OpenDyslexic": "lib/EpdFont/builtinFonts/source/OpenDyslexic/OpenDyslexic-Regular.otf", "Ubuntu": "lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf", } MODES = { "default": freetype.FT_LOAD_RENDER, "autohint": freetype.FT_LOAD_RENDER | freetype.FT_LOAD_FORCE_AUTOHINT, } def q4to2(v): if v >= 12: return 3 elif v >= 8: return 2 elif v >= 4: return 1 else: return 0 def get_stem_eff(face, char, flags): gi = face.get_char_index(ord(char)) if gi == 0: return None face.load_glyph(gi, flags) bm = face.glyph.bitmap w, h = bm.width, bm.rows if w == 0 or h == 0: return None p2 = [] for y in range(h): row = [] for x in range(w): row.append(q4to2(bm.buffer[y * bm.pitch + x] >> 4)) p2.append(row) # Measure leftmost stem in stable middle rows mid_start, mid_end = h // 4, h - h // 4 widths = [] for y in range(mid_start, mid_end): first = next((x for x in range(w) if p2[y][x] > 0), -1) if first < 0: continue last = first for x in range(first, w): if p2[y][x] > 0: last = x else: break eff = sum(p2[y][x] for x in range(first, last + 1)) / 3.0 widths.append(eff) return round(sum(widths) / len(widths), 2) if widths else None def main(): for font_name, font_path in FONTS.items(): try: freetype.Face(font_path) except Exception: print(f"\n {font_name}: SKIPPED (file not found)") continue print(f"\n{'=' * 80}") print(f" {font_name}") print(f"{'=' * 80}") for size in SIZES: print(f"\n {size}pt:") print(f" {'':6s}", end="") for c in CHARS: print(f" '{c}' ", end="") print(" | spread") for mode_name, flags in MODES.items(): face = freetype.Face(font_path) face.set_char_size(size << 6, size << 6, DPI, DPI) vals = [] print(f" {mode_name:6s}", end="") for c in CHARS: v = get_stem_eff(face, c, flags) vals.append(v) print(f" {v:5.2f}" if v else " N/A", end="") valid = [v for v in vals if v is not None] spread = max(valid) - min(valid) if len(valid) >= 2 else 0 marker = " <-- inconsistent" if spread > 0.5 else "" print(f" | {spread:.2f}{marker}") if __name__ == "__main__": main() ``` </details> Here are the results. The table compares how the font-generation `autohint` flag affects the range of widths of various characters. Lower `spread` mean that glyph stroke widths should appear more consistent. ``` Spread = max stem width - min stem width across glyphs (lower = more consistent): ┌──────────────┬──────┬─────────┬──────────┬──────────┐ │ Font │ Size │ Default │ Autohint │ Winner │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Bookerly │ 12pt │ 1.49 │ 1.12 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.39 │ 1.13 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.38 │ 1.16 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.90 │ 1.58 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ NotoSans │ 12pt │ 1.16 │ 0.94 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 0.83 │ 1.14 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.41 │ 1.51 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.74 │ 1.63 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ OpenDyslexic │ 12pt │ 2.22 │ 1.44 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 2.57 │ 3.29 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 3.13 │ 2.60 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 3.21 │ 3.23 │ ~tied │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Ubuntu │ 12pt │ 1.25 │ 1.31 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.41 │ 1.64 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 2.21 │ 1.71 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.80 │ 1.71 │ autohint │ └──────────────┴──────┴─────────┴──────────┴──────────┘ ``` --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? I used AI to make sure I'm not doing something stupid, since I'm not a typography expert. I made the changes though.
2026-02-24 06:13:08 +11:00
0x8D, 0x98, 0x3B, 0x8C, 0xDE, 0xD8, 0x75, 0xC7, 0x0F, 0xC9, 0x95, 0xE8, 0x88, 0x05, 0x55, 0xAC,
0xB1, 0xC5, 0x20, 0xA6, 0x0B, 0x17, 0x01, 0xBC, 0x09, 0x9B, 0x14, 0x81, 0xB1, 0x9A, 0xCB, 0x5D,
0x21, 0x8E, 0x01, 0x17, 0x2B, 0x03, 0x9A, 0xD8, 0x40, 0x0A, 0xB9, 0x48, 0xB7, 0xC5, 0xA4, 0x48,
0xB1, 0x81, 0x35, 0x43, 0x6A, 0x55, 0x6C, 0x00, 0x15, 0x3B, 0x29, 0x6C, 0x17, 0x29, 0x1C, 0xC0,
0x2E, 0xDC, 0xA9, 0x71, 0xB1, 0x48, 0x66, 0x3E, 0x52, 0x52, 0xA1, 0xC2, 0x85, 0xB9, 0x58, 0x3B,
0x29, 0x54, 0x88, 0x80, 0xF6, 0x81, 0x44, 0x08, 0x74, 0xAD, 0xA5, 0xBC, 0x1C, 0xE9, 0x92, 0xD7,
0xBF, 0x73, 0xF9, 0x69, 0x1F, 0xA9, 0x32, 0xF3, 0x3D, 0xF9, 0xDD, 0x7B, 0xEE, 0x79, 0xFC, 0xCF,
0xFF, 0x9C, 0x43, 0x79, 0x31, 0x72, 0xC9, 0x94, 0x8C, 0xA9, 0xCD, 0x86, 0xBC, 0xCF, 0x3B, 0xFE,
0x9B, 0xA2, 0x2A, 0xA4, 0x94, 0x3F, 0x17, 0x91, 0xBF, 0x90, 0x56, 0xBC, 0x5C, 0x95, 0xEC, 0xED,
0xDB, 0xA3, 0x33, 0xE5, 0xF5, 0xC7, 0xE3, 0xA1, 0x49, 0xDF, 0x1F, 0x8E, 0x2F, 0x9C, 0xBB, 0xD8,
0x48, 0x99, 0x0C, 0x62, 0xD2, 0x5E, 0x76, 0xB3, 0x4E, 0x2E, 0xE4, 0x5D, 0xE1, 0xFD, 0x5C, 0x7A,
0xEF, 0x64, 0x2A, 0x25, 0x1A, 0x8D, 0xBC, 0xF4, 0xE4, 0xF0, 0x52, 0xEB, 0xBD, 0xF5, 0x3C, 0xD3,
0xDE, 0x49, 0xD6, 0x4D, 0x92, 0xDF, 0x1A, 0xE5, 0xDC, 0xAB, 0xFF, 0x86, 0xE4, 0x17, 0x45, 0x92,
0x4E, 0xE4, 0x4D, 0x91, 0x9D, 0x4A, 0xCC, 0x22, 0x85, 0x77, 0xC9, 0x93, 0x47, 0xDD, 0xC1, 0xCB,
0x17, 0xD2, 0x07, 0x77, 0x1A, 0x33, 0x49, 0xEC, 0x1B, 0xC9, 0xBD, 0x48, 0xE9, 0x24, 0xF2, 0xC3,
0xD5, 0x97, 0xEB, 0xFC, 0xCE, 0x1D, 0x3B, 0xFF, 0xD5, 0x26, 0xF3, 0x37, 0x3B, 0xE3, 0xAD, 0xD4,
0xA3, 0x44, 0x83, 0xA8, 0x96, 0x2A, 0xE7, 0x15, 0x91, 0x48, 0xD6, 0xBF, 0x1F, 0xCA, 0xD9, 0x59,
0x50, 0xAD, 0x75, 0x62, 0x24, 0xFD, 0xC3, 0x14, 0x8F, 0x62, 0x92, 0xA1, 0x68, 0xA2, 0x29, 0x6F,
0xD0, 0xA2, 0x3F, 0x40, 0xDD, 0xF2, 0xA2, 0xBD, 0x1A, 0x55, 0x6D, 0x7D, 0xFD, 0x3D, 0xDF, 0xF9,
0x69, 0xB7, 0xF0, 0xB7, 0x96, 0xD7, 0xAC, 0x33, 0x9C, 0x96, 0xF5, 0x27, 0xAA, 0x7D, 0x6C, 0x85,
0xD5, 0x79, 0x27, 0x2E, 0xB1, 0x1B, 0x54, 0xCF, 0x1F, 0x5A, 0x39, 0x91, 0xD2, 0x4B, 0x62, 0xA5,
0x1C, 0x24, 0xD9, 0x9E, 0xD5, 0x36, 0x9C, 0x8B, 0xC9, 0x12, 0x2D, 0x35, 0x5F, 0x67, 0x44, 0xCB,
0x6E, 0xD2, 0x8B, 0x14, 0x6F, 0x0F, 0x51, 0x93, 0x3E, 0xEA, 0x53, 0x1B, 0x2F, 0xAF, 0xFA, 0x31,
0xF5, 0x89, 0x3F, 0x4A, 0x3F, 0x1E, 0x3E, 0xEE, 0x12, 0x3B, 0xC7, 0x36, 0x9E, 0x8A, 0x6E, 0x94,
0x4D, 0x3C, 0x3B, 0x29, 0x3B, 0xE3, 0x24, 0x5D, 0xFE, 0xCE, 0x57, 0x82, 0xB3, 0x96, 0x2A, 0xF6,
0xFF, 0xA2, 0xF2, 0xD4, 0x86, 0xEC, 0xC6, 0xFB, 0xD6, 0x1D, 0x16, 0xDF, 0xBD, 0x7D, 0x24, 0xF2,
0x82, 0xC8, 0x81, 0xC4, 0x38, 0xB0, 0x17, 0x53, 0xC9, 0x46, 0xA2, 0x49, 0x35, 0xC9, 0x06, 0x41,
0xC5, 0x82, 0x50, 0xE0, 0x43, 0xF9, 0xF2, 0xA3, 0x42, 0xB4, 0xFE, 0xCA, 0x1A, 0x56, 0x46, 0xC8,
0x3C, 0x09, 0x5E, 0x17, 0x89, 0xD9, 0x35, 0xA8, 0xA4, 0xA2, 0xD3, 0x65, 0x28, 0xEE, 0x24, 0x19,
0xF1, 0x8C, 0x94, 0x0D, 0x8B, 0xF0, 0x17, 0xDB, 0x8C, 0x1E, 0xC1, 0xFB, 0x61, 0xB0, 0xB8, 0xE2,
0xE8, 0xB2, 0xE1, 0x85, 0xF5, 0x3F, 0x44, 0xC4, 0x9B, 0xC9, 0xAF, 0xBB, 0xFA, 0x57, 0x51, 0xEB,
0x76, 0xFC, 0xDD, 0x67, 0x2F, 0xBC, 0xF2, 0xAE, 0x64, 0x8D, 0x1C, 0xCB, 0x67, 0x8F, 0xBD, 0x93,
0xCB, 0xAD, 0x9F, 0x79, 0x7C, 0xF1, 0xA2, 0x54, 0x65, 0x57, 0x57, 0x2E, 0x1D, 0x4C, 0x6A, 0xBF,
0x26, 0x7B, 0x97, 0xFD, 0xE2, 0x97, 0xB2, 0xB8, 0xF7, 0xFB, 0x11, 0xEF, 0xFD, 0x42, 0xF4, 0x2C,
0xD5, 0x90, 0xD3, 0x54, 0x7D, 0x0E, 0x7F, 0x7E, 0x25, 0x1D, 0xC2, 0x95, 0x78, 0x7B, 0x65, 0xFE,
0xFC, 0xCA, 0xB8, 0x5E, 0x71, 0xEB, 0x15, 0x2E, 0xE0, 0xC4, 0x12, 0x68, 0xF8, 0x9F, 0x4D, 0x89,
0x4B, 0x5C, 0x66, 0x63, 0x97, 0xF7, 0xB1, 0x2B, 0xBB, 0xD8, 0x99, 0x86, 0x67, 0x95, 0xB8, 0xBA,
0x4A, 0xA6, 0x56, 0x52, 0xDB, 0xE2, 0x82, 0x16, 0x07, 0xD4, 0x4D, 0x5D, 0x99, 0x8F, 0x66, 0xE0,
0x37, 0x4A, 0xBC, 0x54, 0x21, 0xA8, 0xD1, 0xBB, 0xB2, 0xEF, 0x62, 0xA2, 0xF0, 0xC6, 0x24, 0x19,
0xCE, 0xB0, 0xFA, 0x28, 0x06, 0x29, 0xF1, 0x3D, 0x8F, 0x4E, 0x1F, 0x75, 0x23, 0x6D, 0x25, 0xBE,
0x62, 0x9F, 0x61, 0x6B, 0xB6, 0x70, 0xB8, 0xAF, 0xCA, 0x8F, 0xBC, 0xCC, 0xF1, 0x9C, 0xF6, 0xE9,
0x78, 0x56, 0x57, 0x45, 0xE0, 0xB7, 0xC0, 0xF9, 0xE8, 0x55, 0x8C, 0xAB, 0x7A, 0x56, 0x92, 0x45,
0x54, 0x4E, 0xBA, 0xEC, 0x5D, 0x36, 0xA4, 0x06, 0x51, 0xAF, 0xB6, 0xFB, 0x65, 0xDD, 0xEF, 0xE2,
0x2E, 0xC3, 0x0B, 0x75, 0xA5, 0xA7, 0x9F, 0x0D, 0xC0, 0x90, 0xF8, 0x21, 0xBB, 0x12, 0x2C, 0x0D,
0xBF, 0x34, 0x92, 0xB9, 0x33, 0x6F, 0xF8, 0xAE, 0xF4, 0x84, 0xE5, 0x54, 0x75, 0x4E, 0xD4, 0x25,
0x8D, 0x24, 0x78, 0xA7, 0xB6, 0x92, 0x7A, 0x34, 0xAC, 0x25, 0x7D, 0x3C, 0x49, 0x9D, 0x83, 0x41,
0x23, 0x75, 0xE4, 0x52, 0x12, 0xB1, 0x26, 0x47, 0x79, 0xDA, 0xE0, 0x66, 0xC2, 0x0F, 0x92, 0x34,
0xF4, 0x78, 0x8D, 0x64, 0x41, 0x98, 0xD9, 0xBB, 0xA4, 0x97, 0xD4, 0xC9, 0xE2, 0x8F, 0x02, 0xB4,
0x23, 0x4E, 0x0F, 0x16, 0xA8, 0xFC, 0xCF, 0x9E, 0x5C, 0x4B, 0x67, 0xF9, 0x6A, 0xCB, 0x16, 0x0F,
0x6E, 0x26, 0xD5, 0x01, 0xDB, 0x0A, 0xDF, 0xC7, 0x7C, 0x37, 0x36, 0x68, 0x82, 0xC3, 0x22, 0xBF,
0x90, 0xC5, 0xBE, 0xAA, 0x7F, 0xE2, 0xB1, 0xCB, 0xE5, 0x43, 0x3A, 0x9A, 0xA6, 0xE8, 0x16, 0x69,
0x63, 0x68, 0x27, 0x9D, 0xDB, 0x2E, 0xE5, 0x0C, 0xF5, 0x3C, 0xAB, 0x2C, 0xAA, 0xDD, 0x3E, 0xFD,
0xFE, 0x0C, 0x97, 0x0C, 0x17, 0xA2, 0x45, 0xCE, 0xE3, 0x77, 0x3D, 0x69, 0xEB, 0x0D, 0x35, 0x1F,
0xA7, 0xC6, 0x78, 0x42, 0x7F, 0x68, 0xD7, 0x2B, 0xE0, 0x18, 0xB2, 0xDA, 0x46, 0xBF, 0xF5, 0x5D,
0x7E, 0xDA, 0x36, 0x35, 0xB9, 0x35, 0xC5, 0x53, 0x66, 0x8B, 0x2E, 0x7F, 0xEC, 0xD0, 0xAA, 0x91,
0x7A, 0x96, 0xFC, 0xD9, 0x2C, 0x0B, 0xB0, 0x50, 0x1D, 0xAA, 0xBC, 0x47, 0x87, 0x64, 0xD9, 0x1F,
0x13, 0xB4, 0x8B, 0xB1, 0x35, 0x10, 0x4E, 0xA1, 0xC4, 0xF2, 0xAF, 0x4E, 0x96, 0x68, 0x26, 0x63,
0x08, 0x85, 0x2C, 0x3C, 0x67, 0xBE, 0xCD, 0xE2, 0x7F, 0xEA, 0xA4, 0xC6, 0x47, 0x3B, 0xAC, 0x51,
0xD3, 0x54, 0x01, 0x7C, 0x10, 0xB5, 0xF0, 0x8B, 0x6E, 0xFD, 0x00, 0x37, 0xD9, 0xA2, 0xAF, 0xAB,
0x49, 0x9E, 0xFF, 0x1D, 0xA7, 0x63, 0xD9, 0x1D, 0xE0, 0x69, 0x51, 0xC3, 0xE5, 0xF3, 0x1F, 0xF8,
0xFB, 0x7B, 0xF6, 0xE7, 0x7D, 0x62, 0xE3, 0x51, 0x55, 0x95, 0xF3, 0x12, 0x48, 0x91, 0x53, 0xCB,
0x09, 0x4B, 0xCA, 0x51, 0xC5, 0xD7, 0x03, 0x30, 0x91, 0xF0, 0x86, 0xA5, 0xEF, 0x2A, 0xE1, 0x84,
0xB4, 0xDA, 0xDB, 0xBB, 0xCC, 0x67, 0x5E, 0xD7, 0xAF, 0x5F, 0x87, 0x74, 0xE4, 0xCB, 0x8B, 0x79,
0xB4, 0x7D, 0x36, 0x4B, 0xDD, 0xCB, 0x85, 0x70, 0x5C, 0x31, 0xD4, 0xAE, 0x5E, 0xBE, 0x61, 0x58,
0x79, 0x35, 0xB6, 0x79, 0xB7, 0x2B, 0x27, 0x95, 0x27, 0x1F, 0x85, 0xDF, 0xBD, 0x2C, 0x41, 0xF8,
0x59, 0x8F, 0x0D, 0xC0, 0x84, 0xD0, 0xF9, 0xFF, 0x7E, 0x63, 0x0E, 0x98, 0x75, 0x8A, 0x85, 0x78,
0xCC, 0xBB, 0xF2, 0x9D, 0x64, 0x38, 0x49, 0xBC, 0xCB, 0xEF, 0x0C, 0xE6, 0x67, 0x83, 0x29, 0xA1,
0x53, 0x71, 0x30, 0xE4, 0xD5, 0xE4, 0xC1, 0x60, 0xE2, 0xA1, 0xB8, 0xF2, 0xEA, 0x94, 0x57, 0xEE,
0x20, 0x1D, 0xE6, 0xEC, 0xBD, 0xB1, 0xB8, 0xFF, 0x64, 0x43, 0xA2, 0x3F, 0xF6, 0x43, 0xD1, 0x1D,
0xA6, 0x81, 0x36, 0x24, 0x38, 0x2C, 0xE0, 0x8A, 0x04, 0x13, 0xC0, 0x88, 0x0B, 0xD5, 0x9F, 0x22,
0x67, 0x2E, 0xAD, 0x2E, 0x51, 0x1D, 0x34, 0xA4, 0xA0, 0x5B, 0x35, 0x56, 0x10, 0xEE, 0x2A, 0x1A,
0xAF, 0xEA, 0xCB, 0x04, 0x4F, 0xC5, 0x20, 0x59, 0xD2, 0x1E, 0x69, 0x79, 0x07, 0x0A, 0xA9, 0x36,
0x24, 0xA3, 0xBE, 0xCC, 0x90, 0x1D, 0x94, 0x51, 0xE0, 0x4F, 0x2C, 0x2D, 0x09, 0xD6, 0x5C, 0x2F,
0x31, 0x86, 0xEC, 0xFB, 0x86, 0x00, 0xC3, 0xBF, 0xF7, 0x94, 0x6A, 0x17, 0xB0, 0xCB, 0xB3, 0x22,
0x90, 0xB8, 0xBC, 0xF5, 0x83, 0x68, 0x2E, 0x2C, 0xFB, 0x2E, 0x9A, 0x13, 0x82, 0xCD, 0xAB, 0x53,
0x58, 0x42, 0x1E, 0xA7, 0xFB, 0x56, 0x05, 0xB7, 0x9E, 0xEC, 0x8A, 0x40, 0x39, 0x5E, 0xE9, 0x60,
0x69, 0x9B, 0x4D, 0xE2, 0xB0, 0xE7, 0x02, 0x6A, 0xFE, 0x49, 0xA4, 0x0A, 0xB6, 0x12, 0x40, 0x19,
0x10, 0x19, 0x74, 0xF7, 0x7A, 0x61, 0x90, 0xBF, 0x24, 0xA5, 0x37, 0x6A, 0x25, 0x98, 0xE2, 0x52,
0xAD, 0x59, 0xBA, 0xCF, 0x81, 0xC0, 0x7C, 0x92, 0x1F, 0xCD, 0x37, 0x1D, 0x3B, 0x72, 0x1C, 0xD3,
0xB0, 0x11, 0xED, 0x61, 0x0C, 0x20, 0x8E, 0x11, 0x0B, 0x02, 0xD2, 0x31, 0x21, 0xAF, 0xFB, 0xA2,
0xE7, 0x33, 0x64, 0x35, 0x11, 0x04, 0xD3, 0xE5, 0x16, 0xB0, 0x99, 0xFF, 0xF4, 0x7D, 0x90, 0x10,
0x14, 0x53, 0xF1, 0x15, 0x39, 0xD3, 0xC7, 0xF3, 0xDF, 0xDA, 0x50, 0xA7, 0x4D, 0xF3, 0xA7, 0x38,
0x01, 0x1F, 0x59, 0xC5, 0x33, 0xA8, 0x54, 0x2F, 0x9B, 0x1F, 0x5F, 0x0A, 0x17, 0x49, 0x23, 0x18,
0x50, 0x7E, 0x45, 0xB4, 0x2F, 0x48, 0xFD, 0xE3, 0x3A, 0xF2, 0xC1, 0x42, 0x8D, 0x03, 0x9F, 0xF4,
0x9B, 0x94, 0xBF, 0x3B, 0xE4, 0xA8, 0x0B, 0xC8, 0x79, 0x45, 0x59, 0x46, 0xB3, 0x4E, 0xDA, 0x3D,
0x88, 0x0E, 0x1F, 0x23, 0x4E, 0x2D, 0x46, 0x99, 0x60, 0xA8, 0x3E, 0xF1, 0x04, 0x21, 0x84, 0x0A,
0xBD, 0xD6, 0xC1, 0xF6, 0x54, 0x05, 0xE1, 0xDB, 0x0F, 0xF7, 0x1B, 0xE8, 0x72, 0xE2, 0xD7, 0x5C,
0xDD, 0x71, 0xA4, 0x87, 0xEB, 0xB6, 0xE0, 0x28, 0xF6, 0x79, 0x87, 0x39, 0xFE, 0x3A, 0x2E, 0x18,
0xF0, 0x14, 0x71, 0x22, 0x11, 0x72, 0xFF, 0x13, 0xA7, 0x01, 0x6D, 0x64, 0x5F, 0x69, 0xD8, 0x2F,
0xB9, 0xB7, 0xE4, 0xAD, 0x0F, 0x91, 0x9D, 0x75, 0x17, 0xE5, 0xCC, 0x34, 0xBC, 0xE3, 0x29, 0x62,
0x5F, 0x57, 0xBC, 0x67, 0xEA, 0x00, 0x55, 0x1E, 0x8A, 0xFE, 0x70, 0xCF, 0x0B, 0x0B, 0xA9, 0x6C,
0x5F, 0xDC, 0xD0, 0xE9, 0x06, 0xDC, 0x0C, 0xCD, 0x40, 0xD4, 0x4D, 0xEB, 0x79, 0x57, 0xE9, 0xCA,
0x6C, 0xE5, 0x73, 0x32, 0x0F, 0xE2, 0x34, 0x92, 0x28, 0xBB, 0x50, 0xCA, 0x55, 0x0E, 0xFA, 0xB2,
0x95, 0x38, 0xD4, 0xBE, 0x6A, 0x95, 0xFD, 0xF0, 0x4E, 0xE4, 0x57, 0x52, 0x53, 0xC9, 0xC1, 0x16,
0xB3, 0x75, 0x51, 0x70, 0xD3, 0x36, 0xF6, 0xA4, 0xE0, 0xFF, 0x75, 0x93, 0x32, 0xAC, 0x72, 0x18,
0xA1, 0x7E, 0x99, 0xAD, 0xF5, 0x4A, 0x47, 0x5A, 0x52, 0xD8, 0x32, 0x1B, 0x94, 0x99, 0x4A, 0x55,
0xB7, 0x50, 0x85, 0x90, 0x63, 0xDE, 0x62, 0x53, 0xFD, 0x5D, 0x65, 0x3D, 0x0D, 0x42, 0xBB, 0xE8,
0xBA, 0x80, 0xAD, 0x20, 0x9C, 0x34, 0xA2, 0x98, 0x75, 0x88, 0xA6, 0xB6, 0x24, 0x13, 0x90, 0x4C,
0x27, 0x8A, 0x4A, 0xED, 0xC5, 0xF7, 0x90, 0x35, 0x45, 0x9C, 0x75, 0x29, 0x3E, 0x51, 0x1D, 0x14,
0x97, 0xA8, 0xA9, 0x2A, 0xA5, 0xE3, 0xAA, 0x39, 0x5A, 0x62, 0x57, 0x80, 0x44, 0x2B, 0x5F, 0x41,
0xC1, 0x77, 0xC1, 0x56, 0x0F, 0x20, 0x40, 0xEA, 0x14, 0xF0, 0x40, 0x9F, 0x43, 0xEB, 0x45, 0x15,
0xC9, 0xB0, 0xBC, 0xB6, 0x49, 0x68, 0xC3, 0x62, 0x30, 0x90, 0xFB, 0xEA, 0x19, 0x67, 0xDE, 0xEF,
0x4F, 0x28, 0x0C, 0x8F, 0xA7, 0xAB, 0x28, 0xEB, 0x36, 0xBB, 0x9C, 0xB8, 0x5B, 0xDC, 0xA7, 0xD1,
0x28, 0x2E, 0xFA, 0xEB, 0xD4, 0xCC, 0xCE, 0x93, 0x69, 0xC9, 0x60, 0x48, 0xD4, 0x68, 0xCC, 0x2C,
0x0C, 0x7D, 0x1C, 0x8D, 0x38, 0xC1, 0xC8, 0x9B, 0xE8, 0x01, 0x5F, 0xA2, 0x1C, 0x0E, 0x48, 0xD4,
0x26, 0xDF, 0xA7, 0xBE, 0x2F, 0xBC, 0xD4, 0x20, 0x7E, 0xD4, 0x46, 0xC4, 0x37, 0xDA, 0x7D, 0xD0,
0x45, 0xF2, 0x71, 0x28, 0x2A, 0x39, 0xF0, 0xF4, 0x62, 0xD9, 0xDD, 0x89, 0xCC, 0x77, 0xE6, 0x0E,
0x81, 0xBE, 0x3D, 0x1F, 0xD2, 0x1E, 0xE4, 0x9F, 0xA2, 0x66, 0x45, 0x8F, 0x97, 0xA0, 0x9E, 0xB6,
0x2B, 0x65, 0xE8, 0x88, 0x7C, 0x43, 0xFD, 0xA1, 0x6C, 0xB6, 0xB3, 0xF6, 0x35, 0xEB, 0x5F, 0xD4,
0x0E, 0x9A, 0x0C, 0x24, 0xFB, 0x47, 0xBE, 0x31, 0x43, 0xEA, 0xF0, 0x98, 0xE9, 0xA9, 0xA9, 0x0B,
0x9D, 0x5C, 0xF9, 0x80, 0x58, 0x2F, 0x78, 0xB3, 0x7C, 0x80, 0xAC, 0x59, 0xD1, 0x70, 0x87, 0x2E,
0x71, 0xA2, 0x42, 0xFB, 0xD8, 0xB3, 0x2E, 0x9F, 0xF7, 0x95, 0xE0, 0x35, 0x22, 0x53, 0xC8, 0xE1,
0xA3, 0x90, 0xD5, 0x3F, 0x9A, 0x91, 0xDA, 0xE2, 0x3C, 0xD3, 0xE0, 0xAC, 0x1E, 0x80, 0xD9, 0x9C,
0x7E, 0x83, 0xA3, 0xFD, 0xBE, 0x16, 0xC5, 0x91, 0xBC, 0x3F, 0x0A, 0x51, 0x0F, 0xAC, 0xA0, 0x21,
0xD4, 0x58, 0x6A, 0x04, 0x43, 0xB6, 0x04, 0xAD, 0x40, 0x14, 0x6A, 0x49, 0xFB, 0x11, 0x6E, 0x56,
0xC5, 0x24, 0x68, 0x26, 0xAA, 0x9A, 0x76, 0x99, 0xE5, 0x90, 0xA8, 0x72, 0x0A, 0x35, 0x3E, 0xAA,
0x7A, 0x2B, 0x60, 0xB7, 0x98, 0xDE, 0x2E, 0xE4, 0x3D, 0x3F, 0xBD, 0x82, 0x6E, 0xC6, 0x87, 0xB2,
0xAD, 0xC4, 0x10, 0xCF, 0xA1, 0x29, 0x08, 0x0D, 0x4D, 0xEA, 0xFF, 0xE7, 0x07, 0x81, 0xD6, 0x9B,
0xF5, 0xD0, 0x6F, 0xA2, 0x97, 0x72, 0x5B, 0xEA, 0xE9, 0x29, 0x28, 0xC9, 0x16, 0x13, 0x5A, 0x30,
0x8A, 0xAE, 0x75, 0xB5, 0xA0, 0x32, 0x67, 0xF8, 0x9B, 0x38, 0x1A, 0x1B, 0xA2, 0x05, 0x7D, 0xCB,
0xBB, 0xE3, 0x0A, 0x38, 0x35, 0x95, 0x75, 0x2E, 0xF1, 0xB6, 0x04, 0x28, 0x6A, 0x50, 0x1A, 0xDC,
0xD1, 0x53, 0x74, 0xC1, 0xD2, 0x31, 0x25, 0x7E, 0xC8, 0xC6, 0x33, 0xA1, 0x1F, 0x30, 0xA8, 0x60,
0x74, 0xB7, 0x96, 0x6B, 0x97, 0xC0, 0x5F, 0x25, 0xE8, 0x83, 0x99, 0xB5, 0xE8, 0x66, 0xA1, 0xE8,
0x2A, 0xD0, 0xBC, 0x7F, 0x9D, 0xE7, 0xFB, 0x4F, 0xDA, 0x9F, 0x5A, 0x6A, 0xE5, 0xF1, 0xD5, 0xDC,
0xEE, 0x9E, 0x4B, 0xA6, 0x73, 0x5B, 0x8F, 0x55, 0x2B, 0x62, 0x03, 0xB9, 0x4E, 0x6B, 0x62, 0x7D,
0x89, 0x71, 0xB5, 0xF0, 0x96, 0x6B, 0x21, 0xB9, 0xE8, 0x9F, 0xF8, 0x29, 0x87, 0x31, 0x20, 0x3F,
0xA5, 0x4F, 0xCD, 0x26, 0x4A, 0x7C, 0x95, 0x8C, 0xA4, 0x01, 0x53, 0x0D, 0xD6, 0x61, 0x40, 0x3C,
0x29, 0x47, 0xF4, 0xD8, 0x6A, 0x10, 0x42, 0xB5, 0x25, 0x78, 0x43, 0x1C, 0x48, 0xD7, 0xFB, 0x40,
0x28, 0x15, 0x65, 0xF0, 0x28, 0x48, 0xF6, 0x13, 0x33, 0x09, 0x29, 0x45, 0xCB, 0xC8, 0xA6, 0xA2,
0x03, 0xC1, 0xCA, 0x2F, 0xA9, 0x3A, 0x0C, 0x34, 0xB6, 0x14, 0x9C, 0x48, 0x47, 0x84, 0xD4, 0xD2,
0xA5, 0xE6, 0x77, 0x54, 0x9D, 0x7D, 0x14, 0x5E, 0x26, 0xE5, 0xDE, 0x2E, 0x34, 0x48, 0xAB, 0x96,
0xA1, 0xFC, 0x21, 0x70, 0x4A, 0xFD, 0xFB, 0x60, 0xBA, 0x29, 0xA7, 0x6C, 0x0C, 0x85, 0x95, 0xDE,
0xB3, 0x2B, 0x9B, 0x54, 0x5D, 0x8A, 0x50, 0xEA, 0xF1, 0x06, 0xFF, 0x96, 0x2A, 0xD3, 0x5C, 0xBC,
0x7F, 0x1B, 0x40, 0x4F, 0xC7, 0x3A, 0x94, 0x98, 0x77, 0x5E, 0xFF, 0x35, 0x10, 0x7E, 0x6A, 0x8F,
0x81, 0x52, 0xB9, 0xC9, 0x1E, 0x55, 0x7A, 0x40, 0xAB, 0x2D, 0xDC, 0xA4, 0x87, 0xD0, 0x66, 0xD6,
0xEA, 0x10, 0xED, 0x31, 0xB4, 0x1D, 0x36, 0x12, 0xA6, 0x12, 0xB2, 0xB8, 0x9E, 0xC9, 0x60, 0xC0,
0xA0, 0xB1, 0xC0, 0xF7, 0x04, 0x57, 0x4B, 0xE9, 0xA2, 0x2F, 0x1A, 0x97, 0xD0, 0x8B, 0xAE, 0xB4,
0x25, 0x0A, 0x47, 0x9D, 0x99, 0xE8, 0x09, 0x95, 0xD6, 0x0E, 0x43, 0xD3, 0xA5, 0x51, 0xA8, 0x95,
0x50, 0xFD, 0x88, 0x34, 0x9D, 0xEF, 0x94, 0xBE, 0x32, 0x7F, 0x17, 0xB7, 0x8C, 0xE0, 0x9D, 0x42,
0xC4, 0xEF, 0xE9, 0xA8, 0x1A, 0xBF, 0xA5, 0x28, 0x39, 0x44, 0x8D, 0x47, 0xCA, 0x31, 0x76, 0x6B,
0xBF, 0xCA, 0x0A, 0x6A, 0xB5, 0xCF, 0x9D, 0xE1, 0xB7, 0x44, 0x16, 0xE2, 0x46, 0x02, 0x2C, 0x3A,
0xF8, 0x74, 0x66, 0xAF, 0x1E, 0xF2, 0xA6, 0xB4, 0x49, 0x5F, 0xD8, 0xD0, 0x34, 0x4B, 0x3E, 0x6E,
0x9F, 0xF8, 0x33, 0x9B, 0xD6, 0xA6, 0x20, 0x75, 0xD1, 0x11, 0x69, 0x72, 0x4C, 0x26, 0xEC, 0x26,
0xCB, 0x5E, 0x5D, 0x69, 0x09, 0x33, 0x21, 0x89, 0xF4, 0x2F, 0xA7, 0xD9, 0x24, 0x52, 0xBF, 0x55,
0x0E, 0x34, 0x61, 0x24, 0xAA, 0x43, 0x8B, 0x7B, 0x12, 0x86, 0x04, 0xA7, 0x53, 0x05, 0x43, 0x43,
0x12, 0xDA, 0x5F, 0x46, 0x06, 0x26, 0x9E, 0xBC, 0xFB, 0xC2, 0x04, 0x35, 0xE9, 0xE3, 0xAB, 0x97,
0xE4, 0xCF, 0xC2, 0x44, 0x14, 0x96, 0xF0, 0x23, 0xBF, 0x1C, 0xEA, 0x85, 0x75, 0x67, 0x16, 0x56,
0x9B, 0x20, 0x73, 0xFA, 0xD2, 0xA2, 0xF5, 0xF0, 0x33, 0xFF, 0x9F, 0x83, 0xE4, 0x73, 0xD5, 0xE6,
0xB0, 0xDC, 0x85, 0xC3, 0x47, 0x3D, 0x5C, 0x15, 0xC7, 0x4F, 0x58, 0x9B, 0x3C, 0x6A, 0xE2, 0xC7,
0x56, 0xDC, 0x81, 0x1C, 0xD0, 0xEE, 0xD0, 0x83, 0x35, 0x26, 0xEB, 0xC1, 0x59, 0x34, 0xED, 0xED,
0xED, 0x61, 0xF4, 0x23, 0x6D, 0x04, 0x92, 0xE6, 0x24, 0xA5, 0xCD, 0x7D, 0x45, 0x18, 0x31, 0xFE,
0xCB, 0x6A, 0x33, 0x6B, 0xEE, 0xD1, 0xC4, 0x28, 0xEB, 0x9A, 0xAA, 0x15, 0x6D, 0xB2, 0xF5, 0x23,
0xFB, 0x17, 0x99, 0x8B, 0xE9, 0xFA, 0xD3, 0x4F, 0x49, 0xB8, 0x7C, 0xCA, 0x86, 0xB2, 0x62, 0xC4,
0x64, 0xB2, 0x96, 0x73, 0x4B, 0x18, 0xA3, 0x74, 0x42, 0xC4, 0x6D, 0xC9, 0x48, 0x07, 0x60, 0x5C,
0xF2, 0xA8, 0xED, 0xEA, 0xF7, 0xA0, 0xB3, 0xA2, 0xF3, 0x80, 0xBC, 0x2F, 0x6F, 0x39, 0x90, 0xD9,
0xD4, 0xC9, 0x84, 0xB0, 0x87, 0x00, 0x79, 0x91, 0x7F, 0xD2, 0x76, 0x6E, 0x07, 0xAA, 0xA5, 0x5B,
0x3A, 0xCE, 0x86, 0xF3, 0xEA, 0x85, 0xD5, 0xED, 0x95, 0x26, 0xAE, 0x69, 0xFE, 0xC1, 0x7C, 0x6C,
0x09, 0x72, 0x80, 0xC1, 0x8E, 0x4E, 0x41, 0xBD, 0x9C, 0xD5, 0x3D, 0x6E, 0xED, 0x4F, 0x4A, 0xDA,
0x09, 0x08, 0xCD, 0xDB, 0x84, 0x29, 0xA0, 0x04, 0xFA, 0xB3, 0x72, 0x90, 0x36, 0x76, 0x35, 0x1F,
0xA7, 0xC4, 0x96, 0x43, 0xFE, 0x9E, 0xFF, 0x67, 0x73, 0xB3, 0x1E, 0xBD, 0xF5, 0xCD, 0x46, 0xC7,
0x3D, 0x8E, 0x23, 0x27, 0x4F, 0xE7, 0xAC, 0x77, 0x45, 0x37, 0x31, 0xC5, 0x1B, 0xE6, 0x67, 0xF2,
0x08, 0x46, 0x93, 0x7F, 0x34, 0xF7, 0xC6, 0x62, 0x7B, 0x9C, 0xEC, 0x6B, 0xBF, 0x13, 0x88, 0x81,
0x94, 0x4C, 0xC6, 0x17, 0xD7, 0x69, 0x27, 0x90, 0x8A, 0xF6, 0xEF, 0x89, 0xB2, 0xE1, 0x99, 0xF6,
0xF2, 0xB6, 0x2F, 0xC9, 0x87, 0x6D, 0x92, 0x46, 0xA1, 0xFB, 0xB4, 0x5B, 0xDC, 0x86, 0x31, 0x48,
0x27, 0xA5, 0x75, 0xB3, 0x66, 0x8D, 0x96, 0xF2, 0x17, 0xF5, 0xDB, 0xE9, 0xA2, 0x9C, 0xCA, 0xBE,
0xEC, 0x74, 0x1D, 0x3E, 0x7C, 0x03, 0x79, 0x70, 0x7A, 0x7B, 0x09, 0x1F, 0x85, 0xFB, 0x06, 0x62,
0x10, 0x9E, 0x3D, 0xDB, 0x56, 0x0E, 0xF8, 0x5C, 0xFD, 0x13, 0xA0, 0xBC, 0x03, 0xD5, 0x94, 0xD7,
0xDA, 0xAE, 0x68, 0x28, 0xDF, 0x74, 0x40, 0xD1, 0xF2, 0xD7, 0x5E, 0xB9, 0x70, 0xED, 0xA1, 0x94,
0xBC, 0x29, 0x80, 0x72, 0x73, 0x08, 0x4A, 0xA9, 0x4E, 0x99, 0x6E, 0xFE, 0x36, 0xF5, 0xB1, 0xB5,
0xC9, 0xB3, 0x9B, 0x5D, 0x41, 0x33, 0xDC, 0xBE, 0xC5, 0x88, 0x9B, 0x0F, 0xB4, 0x50, 0x15, 0xC3,
0x1D, 0x11, 0xD7, 0x8F, 0xDF, 0x81, 0x44, 0x7E, 0x0F, 0x69, 0xDD, 0xB0, 0xD9, 0x07, 0x7A, 0xF7,
0xA6, 0x84, 0xF7, 0x62, 0xBB, 0xDE, 0xAA, 0xA8, 0xFC, 0xF0, 0xD2, 0x84, 0x49, 0x94, 0xCA, 0x46,
0x07, 0x0F, 0xE4, 0x6E, 0xBE, 0x6E, 0xE6, 0x7C, 0x89, 0xD4, 0x02, 0x70, 0x1D, 0x2D, 0x6B, 0x77,
0x33, 0x7D, 0x5E, 0x38, 0xD9, 0x66, 0xC3, 0x9B, 0xFA, 0x64, 0xB3, 0x0E, 0x5B, 0x2E, 0xB8, 0x43,
0xC7, 0x71, 0x94, 0x4B, 0x02, 0x4B, 0x04, 0xFD, 0x9C, 0x9C, 0x2F, 0x9B, 0xEC, 0x9E, 0xD5, 0x56,
0x45, 0x79, 0x45, 0xEF, 0xC2, 0x40, 0x17, 0x57, 0x06, 0x75, 0x9A, 0x1A, 0x41, 0x16, 0x95, 0x7F,
0x63, 0xF3, 0xDF, 0x2C, 0xC9, 0xA3, 0x9B, 0xD7, 0x7C, 0x32, 0xB4, 0xB4, 0xF3, 0xAF, 0x8D, 0xF9,
0x43, 0x4B, 0xA3, 0x11, 0x3F, 0x85, 0x5C, 0x4D, 0x65, 0xB2, 0xF9, 0x4A, 0xD7, 0x3E, 0x1C, 0xB2,
0xE1, 0x2C, 0x8A, 0x9D, 0x99, 0xC5, 0x45, 0x6B, 0x47, 0xAE, 0xF7, 0xA7, 0x6C, 0x1E, 0xEE, 0x50,
0x15, 0x50, 0x26, 0x86, 0x3A, 0x03, 0x1E, 0x33, 0x5B, 0x56, 0x0C, 0x25, 0xAF, 0xBB, 0xDA, 0xBE,
0xF4, 0xA9, 0xBF, 0x4F, 0xBD, 0xB6, 0xFE, 0x2E, 0x80, 0xCA, 0x19, 0xF0, 0xEB, 0x6B, 0x73, 0x3E,
0xB0, 0xA0, 0x63, 0x88, 0x4B, 0xC0, 0x71, 0xDE, 0x6B, 0xD3, 0x4F, 0x66, 0x98, 0xEF, 0x14, 0xDD,
0x26, 0xF1, 0xB7, 0x15, 0xCA, 0x13, 0xC3, 0x40, 0x7C, 0x0A, 0xAE, 0xCA, 0xCE, 0x3F, 0xA0, 0x3B,
0xD8, 0x50, 0x0A, 0x6E, 0x33, 0x00, 0xE4, 0x3D, 0x03, 0xD3, 0x3A, 0xA4, 0xEA, 0xA9, 0xC1, 0xC7,
0xDF, 0x63, 0x84, 0xBE, 0x61, 0x0B, 0x87, 0x9A, 0x8D, 0xEC, 0x68, 0x91, 0xEF, 0xCC, 0xBD, 0x89,
0xA2, 0x88, 0x46, 0xBF, 0x19, 0xB2, 0x4F, 0xE8, 0xDA, 0x61, 0xDA, 0xBA, 0x62, 0xE4, 0x36, 0x17,
0x67, 0xA6, 0x50, 0x9A, 0x11, 0x6D, 0xD8, 0xDA, 0x94, 0xF9, 0x63, 0x9F, 0x14, 0xFF, 0x77, 0x9C,
0x3F, 0x68, 0x39, 0xA7, 0x59, 0xAB, 0x68, 0x84, 0x64, 0x1D, 0x31, 0xC9, 0xAC, 0x48, 0x6F, 0x56,
0x2C, 0x75, 0x07, 0x2E, 0x25, 0x79, 0x36, 0x85, 0xFC, 0x08, 0x1D, 0xE3, 0xB0, 0x16, 0x51, 0x9D,
0xC1, 0x35, 0xBF, 0x73, 0x3F, 0x6B, 0xB6, 0xB4, 0xB1, 0xEA, 0xFE, 0x1A, 0x18, 0x23, 0xC7, 0x93,
0x91, 0xC0, 0x27, 0x73, 0x3A, 0xFE, 0x47, 0x6F, 0x96, 0xE3, 0xC4, 0xBF, 0xD3, 0x91, 0x1D, 0xA2,
0x54, 0xA3, 0x19, 0xA3, 0xF7, 0x81, 0x28, 0xEA, 0x7E, 0xD8, 0x19, 0x77, 0x73, 0xFA, 0x9C, 0xB2,
0xB6, 0xD9, 0xFF, 0x86, 0xF8, 0xF8, 0x50, 0x5F, 0xF5, 0x26, 0xD1, 0x67, 0x11, 0x6A, 0xB7, 0xB8,
0xC7, 0xB8, 0x76, 0x8E, 0x4F, 0x4F, 0x12, 0xAB, 0xED, 0x61, 0x18, 0xAC, 0x7B, 0xA6, 0xC1, 0xAF,
0x24, 0x93, 0x89, 0x27, 0xF3, 0x30, 0x64, 0xF5, 0xA2, 0xF8, 0x0A, 0xF7, 0x8A, 0xA2, 0x76, 0xA6,
0xDF, 0xB9, 0xF2, 0x61, 0x45, 0xBB, 0xE7, 0x54, 0x6D, 0x64, 0x2E, 0x2A, 0xB2, 0xB8, 0x35, 0xD4,
0x5A, 0x46, 0x01, 0xD6, 0x8E, 0x4D, 0xAD, 0xEF, 0xCD, 0x35, 0xB5, 0x1B, 0xB5, 0x95, 0xB2, 0x4A,
0x46, 0x31, 0x52, 0x1E, 0x1B, 0xBA, 0xE2, 0x96, 0x97, 0xCD, 0xD7, 0xDC, 0xCF, 0xFD, 0x27, 0xFE,
0x86, 0xCF, 0x41, 0x75, 0x51, 0xED, 0x74, 0x75, 0xE1, 0x8A, 0x0F, 0x5B, 0x25, 0x9C, 0x4D, 0xC2,
0xC0, 0xBE, 0x61, 0x04, 0x7D, 0xBB, 0x4F, 0x1F, 0xD8, 0xE8, 0xA9, 0x55, 0xAA, 0xCC, 0xA7, 0xD0,
0x12, 0xAC, 0x60, 0xDD, 0xE9, 0x0E, 0xD2, 0xC7, 0xFE, 0x9A, 0xCB, 0x7F, 0xD7, 0x22, 0xAF, 0x21,
0x7C, 0x27, 0xEC, 0x79, 0xCB, 0x66, 0xBD, 0x07, 0x30, 0x37, 0xA0, 0xD0, 0x43, 0xF3, 0x89, 0x95,
0xA7, 0x0F, 0xEF, 0x57, 0x89, 0xA7, 0x3B, 0xC9, 0xC7, 0x96, 0x8A, 0xF5, 0x1A, 0x26, 0x4F, 0x69,
0xB7, 0x05, 0xFB, 0x31, 0x41, 0xF0, 0xE9, 0x7C, 0xA6, 0xCE, 0x7F, 0x29, 0xE5, 0x89, 0xD6, 0xD6,
0xB5, 0x60, 0x65, 0xDB, 0x5A, 0xA4, 0x4D, 0xCD, 0x81, 0x93, 0x6F, 0x8D, 0xCB, 0x79, 0x33, 0xB4,
0x68, 0x64, 0x8E, 0x38, 0xB7, 0x96, 0x02, 0x7D, 0x23, 0xF4, 0x24, 0x39, 0xB4, 0x7C, 0xEB, 0xED,
0x39, 0x65, 0xFA, 0xB7, 0x7B, 0x41, 0x59, 0xD2, 0x42, 0x83, 0xA0, 0xA2, 0xB6, 0xC3, 0x40, 0x20,
0x95, 0x83, 0xF5, 0x79, 0xCA, 0x31, 0xB5, 0xA6, 0xF7, 0x07, 0xAA, 0xC0, 0x92, 0x03, 0x19, 0x97,
0xDD, 0xF3, 0x34, 0xE4, 0xFD, 0x59, 0x65, 0x9A, 0x39, 0xC4, 0x83, 0xE4, 0x8A, 0xA7, 0x17, 0x48,
0x3F, 0x5B, 0x3C, 0xAD, 0x41, 0x88, 0xDD, 0xDD, 0xD1, 0x5E, 0xE8, 0x12, 0xC3, 0x7D, 0x0A, 0xE2,
0x2B, 0x8A, 0x4D, 0xAA, 0xCD, 0xB0, 0x1C, 0x8B, 0xDE, 0xB6, 0xEC, 0x58, 0x49, 0x48, 0xD7, 0xFA,
0xE7, 0xF4, 0xCE, 0x50, 0x19, 0xDE, 0x7B, 0x7D, 0x67, 0xC9, 0x69, 0x95, 0xFA, 0x75, 0x16, 0x60,
0x2D, 0xF9, 0x3B, 0xA1, 0x49, 0xF8, 0x38, 0x20, 0xE8, 0xE4, 0xF9, 0xC7, 0x91, 0xA5, 0xE6, 0x8B,
0x1F, 0xCF, 0x42, 0x8F, 0x67, 0xF4, 0x46, 0x50, 0xE6, 0x43, 0x35, 0x0C, 0x27, 0xED, 0x6E, 0xDF,
0x0F, 0x84, 0x55, 0x69, 0xB8, 0xAF, 0xD8, 0x56, 0xE9, 0xF3, 0x13, 0xED, 0x67, 0x37, 0x12, 0xF7,
0x3B, 0x4A, 0x23, 0xFE, 0xA2, 0x4A, 0x25, 0x4B, 0xFC, 0xC0, 0x3F, 0x9D, 0xA6, 0xDA, 0xBD, 0x1C,
0x87, 0xE0, 0xFD, 0x11, 0xB5, 0x59, 0x3D, 0x8C, 0x15, 0xD7, 0x15, 0x3E, 0x33, 0xD7, 0x66, 0x8C,
0xAF, 0xEC, 0x8B, 0x22, 0x5B, 0x4E, 0x82, 0xED, 0x41, 0x8A, 0x0B, 0x17, 0x86, 0x49, 0x41, 0x41,
0xB1, 0xBB, 0x77, 0xC4, 0x4A, 0x41, 0x8A, 0x0B, 0x28, 0xD8, 0x26, 0x96, 0x92, 0x14, 0x69, 0x52,
0xE1, 0x82, 0x22, 0x92, 0x59, 0x66, 0x60, 0x0B, 0x5B, 0xB2, 0x12, 0x48, 0x11, 0xB9, 0x70, 0x24,
0x22, 0x25, 0x3D, 0x44, 0xD9, 0x82, 0x62, 0xF7, 0xCD, 0x2C, 0xAB, 0x08, 0x29, 0x14, 0x3B, 0xC4,
0x89, 0x5D, 0x50, 0x78, 0x62, 0x70, 0x28, 0x5C, 0x70, 0x13, 0x26, 0x66, 0x16, 0xCF, 0xCC, 0xC9,
0x77, 0xEE, 0x7B, 0x6F, 0x77, 0x89, 0x52, 0x18, 0xE4, 0x7D, 0xBC, 0xF7, 0xF6, 0xBD, 0x79, 0x73,
0xEF, 0xF9, 0xFB, 0xCE, 0x77, 0xCE, 0xB9, 0xD0, 0x21, 0x8A, 0x4B, 0xED, 0x82, 0x86, 0xBE, 0x4D,
0x31, 0xE9, 0x52, 0xD5, 0xD4, 0xD2, 0x59, 0x4A, 0x52, 0x53, 0x29, 0x17, 0x76, 0x34, 0x90, 0x4D,
0x93, 0xD2, 0x94, 0x44, 0xF4, 0x3A, 0x51, 0x84, 0xBF, 0x57, 0x89, 0x4C, 0x4A, 0xE4, 0x28, 0x28,
0x6A, 0x62, 0x2E, 0xB3, 0xA1, 0x33, 0xB7, 0xD7, 0xC2, 0xF6, 0x08, 0xD9, 0x28, 0x8D, 0xDC, 0x15,
0xCA, 0x0C, 0x45, 0xCE, 0x91, 0xFD, 0xB1, 0x56, 0x7C, 0xD7, 0xC5, 0xDC, 0x92, 0xED, 0x89, 0xCE,
0x10, 0xE9, 0x9C, 0xA8, 0xC1, 0x6A, 0xA2, 0xC0, 0x11, 0xBD, 0x88, 0x2D, 0x49, 0x6F, 0x12, 0xC5,
0x5C, 0x52, 0x7C, 0xB7, 0x21, 0x53, 0x9E, 0x21, 0x5D, 0x7F, 0x87, 0x14, 0x7E, 0x84, 0x64, 0x32,
0xCC, 0x14, 0x41, 0x00, 0x9D, 0xFA, 0x7B, 0x8A, 0x1D, 0x71, 0xB1, 0xC5, 0x0A, 0xFC, 0x40, 0x96,
0x48, 0x5D, 0xFE, 0xCD, 0x5B, 0x6B, 0xCC, 0x5C, 0xDB, 0x1F, 0x40, 0x8D, 0x3D, 0x44, 0xAF, 0x99,
0xF7, 0xDB, 0x4E, 0x33, 0x37, 0xE1, 0x90, 0x95, 0xA1, 0x33, 0xA5, 0xAA, 0x4C, 0x1E, 0x95, 0x78,
0x55, 0x09, 0xC4, 0x30, 0x59, 0xE6, 0x7C, 0x25, 0xFB, 0xA0, 0x3A, 0x40, 0x41, 0x5E, 0x70, 0xCC,
0x19, 0x1F, 0xE3, 0x6B, 0x62, 0x9E, 0xCD, 0x6D, 0xAA, 0x5D, 0x9C, 0x07, 0x3D, 0xCC, 0xB4, 0x17,
0x4A, 0xBA, 0xFC, 0xE0, 0xA1, 0xBF, 0x9B, 0x92, 0x9A, 0x42, 0x66, 0x07, 0x2B, 0x21, 0x79, 0x24,
0x82, 0x61, 0xB8, 0xF8, 0x22, 0x63, 0x7C, 0x66, 0x71, 0x4A, 0x82, 0xEF, 0x50, 0xB8, 0xA5, 0xC5,
0xED, 0x8F, 0xD3, 0x07, 0x9C, 0xBA, 0x02, 0x5D, 0x71, 0xB5, 0xDE, 0xFA, 0x48, 0xB4, 0xA7, 0x87,
0x65, 0x65, 0x7C, 0xAB, 0x31, 0xD5, 0x8C, 0x6E, 0xF6, 0xAA, 0x7B, 0x44, 0xB7, 0x1B, 0x3A, 0x62,
0x73, 0x73, 0xB4, 0x0D, 0x9A, 0x24, 0x4D, 0x8E, 0xBA, 0xB0, 0x9D, 0xA1, 0xF8, 0x02, 0x05, 0x0F,
0xCA, 0x8B, 0x49, 0xDD, 0x46, 0xCE, 0xCE, 0x37, 0x86, 0x1B, 0x82, 0xA1, 0x89, 0xBE, 0x74, 0xE3,
0xFE, 0x4D, 0x47, 0x7B, 0xF8, 0x22, 0x05, 0x9B, 0x7B, 0x1C, 0x1D, 0x24, 0x5A, 0x0E, 0xCB, 0xE4,
0xE2, 0x95, 0xE7, 0x22, 0x2E, 0xDD, 0x95, 0x59, 0x13, 0xAC, 0x9F, 0x77, 0xAF, 0xA9, 0x5F, 0x9A,
0x9C, 0x9E, 0x3F, 0x3C, 0x47, 0x34, 0x53, 0xC1, 0x61, 0xB7, 0xCF, 0xB7, 0x4F, 0xA9, 0x0B, 0x11,
0xBB, 0x57, 0x5E, 0x89, 0x38, 0x77, 0x6F, 0x04, 0x27, 0xA2, 0x74, 0x06, 0x0B, 0xE9, 0x50, 0x1A,
0xA7, 0xA4, 0xB9, 0x9A, 0xE8, 0xFB, 0xB0, 0x2A, 0xBA, 0xF8, 0xCD, 0xA5, 0x7A, 0x79, 0xC6, 0xA8,
0x6B, 0x6E, 0xE6, 0xEC, 0xF7, 0x86, 0xFE, 0xBB, 0x3F, 0x84, 0xC9, 0x09, 0xDF, 0x80, 0xF8, 0x43,
0x81, 0x53, 0x6D, 0x52, 0x66, 0xF3, 0x6D, 0xD4, 0xC0, 0x67, 0xE7, 0x3B, 0x62, 0xED, 0x68, 0xC0,
0xAB, 0xD3, 0x15, 0x2D, 0xEB, 0x7C, 0x61, 0xE1, 0x64, 0xC1, 0x3D, 0x9E, 0x04, 0x6F, 0x4C, 0x9E,
0xAF, 0x2F, 0x9C, 0xE4, 0x81, 0x07, 0xCA, 0x6A, 0x9A, 0x0D, 0xEA, 0xE7, 0x49, 0x1D, 0xDD, 0xE8,
0x5E, 0x3E, 0x7C, 0xA4, 0xFE, 0x48, 0xFD, 0xEA, 0xD9, 0xEF, 0xDB, 0xF2, 0x4F, 0x6A, 0xE5, 0xD9,
0xC3, 0x47, 0xDC, 0x5F, 0x37, 0x3E, 0xF9, 0x2D, 0x7E, 0x4B, 0x71, 0x8B, 0xDC, 0xF9, 0xE2, 0x82,
0xE1, 0xDB, 0xDC, 0x04, 0x27, 0x02, 0xC4, 0x97, 0xDF, 0xAF, 0xBA, 0x56, 0x6F, 0x94, 0x2B, 0xA3,
0x53, 0x4B, 0xEC, 0x34, 0xDC, 0xBB, 0x32, 0x79, 0x2E, 0xAC, 0x4E, 0xE5, 0xAD, 0xD0, 0xCE, 0xE7,
0xB6, 0x1E, 0x45, 0x0E, 0x57, 0x77, 0x49, 0x58, 0xAE, 0x50, 0x54, 0x01, 0xD6, 0xBA, 0xA6, 0x55,
0x82, 0x6B, 0x98, 0xE7, 0xB9, 0xA3, 0x60, 0x50, 0x5C, 0xD7, 0xED, 0xBE, 0x59, 0x1A, 0x85, 0x9C,
0x7E, 0xCB, 0xD1, 0x4A, 0x30, 0xB2, 0x03, 0x20, 0x19, 0xD2, 0x8A, 0x59, 0x6F, 0x16, 0x35, 0x4C,
0xA7, 0x9F, 0xD3, 0x1F, 0x10, 0xF6, 0x1E, 0x59, 0x92, 0x61, 0x79, 0x5C, 0xAA, 0x06, 0x9B, 0x74,
0xAA, 0x41, 0x34, 0xBB, 0xF1, 0x45, 0x97, 0x94, 0xAA, 0x8B, 0x81, 0x92, 0xCB, 0xA3, 0x2B, 0x96,
0xE3, 0x36, 0x1E, 0x85, 0x8D, 0x46, 0xA0, 0x05, 0xC7, 0x81, 0xC0, 0x55, 0x90, 0x33, 0x37, 0xF6,
0x70, 0xC1, 0xB9, 0x62, 0xAE, 0x22, 0xFE, 0x34, 0x55, 0x7C, 0xBF, 0x0C, 0xB9, 0xC5, 0xBA, 0xFE,
0x17, 0x00, 0xD3, 0x41, 0xA0, 0x62, 0x83, 0xE4, 0x22, 0x15, 0xB8, 0x68, 0x70, 0x91, 0x8E, 0x23,
0xBA, 0x6A, 0x03, 0xCB, 0x6E, 0x63, 0xBB, 0x65, 0x6C, 0x37, 0xB3, 0x0C, 0xFC, 0x21, 0x72, 0x7A,
0x95, 0xF6, 0x44, 0x03, 0xC0, 0xF9, 0x37, 0x04, 0x07, 0x59, 0x45, 0xE6, 0xF8, 0xFD, 0xF6, 0xAA,
0x3E, 0xD7, 0xAB, 0xF2, 0xEA, 0xD9, 0x40, 0x04, 0xAD, 0x9A, 0xEE, 0xE9, 0x0E, 0x58, 0x6C, 0x02,
0x17, 0x3A, 0xE5, 0x54, 0x9D, 0xB4, 0x59, 0x47, 0x45, 0x6A, 0x3B, 0xB3, 0x7E, 0xD3, 0xCD, 0x25,
0xEA, 0xA3, 0x7A, 0x25, 0x89, 0x53, 0xAE, 0xC3, 0xDF, 0x09, 0x8A, 0xF9, 0x4D, 0xAE, 0xA3, 0x1C,
0xA8, 0x2B, 0x3B, 0x4A, 0xD6, 0x3A, 0xB2, 0xD7, 0x70, 0x73, 0xE4, 0x74, 0x93, 0xE5, 0x45, 0x04,
0x8B, 0x33, 0x3A, 0x88, 0xD0, 0x78, 0x13, 0xF0, 0xCC, 0x85, 0x05, 0x34, 0xC2, 0x1C, 0xC3, 0x95,
0xA5, 0x37, 0xB4, 0xF5, 0x99, 0x09, 0x62, 0x48, 0x52, 0xC1, 0x3D, 0x68, 0x04, 0xF9, 0x80, 0xAB,
0x57, 0xF1, 0x63, 0x42, 0x36, 0x9F, 0x03, 0x77, 0x98, 0x26, 0x86, 0x42, 0xE1, 0xA7, 0x40, 0xEA,
0x1C, 0xFD, 0x11, 0x8B, 0x74, 0xF9, 0xC6, 0x21, 0x49, 0x13, 0xFD, 0xC1, 0x1D, 0x78, 0x28, 0x94,
0x5C, 0x37, 0x65, 0x8C, 0xC8, 0x84, 0xCE, 0x87, 0x72, 0xE4, 0x39, 0x43, 0x92, 0xE6, 0xA7, 0x44,
0x07, 0xA6, 0x69, 0xF5, 0x14, 0x49, 0xBE, 0x23, 0x8A, 0x45, 0x25, 0x01, 0xB5, 0x8E, 0xA2, 0x5A,
0xA4, 0x8B, 0x1A, 0x73, 0x7E, 0x69, 0x9C, 0x42, 0x05, 0xEC, 0x4E, 0xAD, 0x6E, 0x25, 0x23, 0x63,
0xCE, 0x5B, 0x84, 0xF4, 0x8B, 0x7F, 0x8D, 0xD2, 0x33, 0xAA, 0xDC, 0x64, 0x37, 0xEB, 0xF9, 0x68,
0xCE, 0xBF, 0x27, 0x9E, 0xD2, 0x90, 0x07, 0xCB, 0x62, 0x4F, 0xB0, 0x79, 0x12, 0x02, 0x03, 0x50,
0x0F, 0xC4, 0x66, 0x9C, 0x87, 0xE3, 0xDC, 0xD8, 0x37, 0x15, 0xBE, 0x17, 0x37, 0xD5, 0x62, 0x98,
0x06, 0x3F, 0x80, 0x87, 0x36, 0x3B, 0x02, 0xF8, 0xF7, 0xEA, 0x3C, 0x80, 0x07, 0x20, 0x1B, 0x97,
0xF6, 0x74, 0x22, 0x9A, 0xDE, 0x11, 0x52, 0xFD, 0x19, 0x48, 0x75, 0x0E, 0x21, 0x52, 0x4E, 0x97,
0xBA, 0xF9, 0xD1, 0x80, 0x68, 0x7C, 0x6A, 0x38, 0x5F, 0x84, 0xF9, 0xC0, 0x66, 0x2E, 0xE6, 0xE3,
0x27, 0x31, 0x7F, 0xD5, 0x9B, 0x1F, 0xE7, 0x62, 0xBE, 0x1A, 0x9B, 0xDF, 0x79, 0xF3, 0xE1, 0xE3,
0x6D, 0xF3, 0xB7, 0xD8, 0x5A, 0xB8, 0xC8, 0x3A, 0x84, 0x78, 0x11, 0xB0, 0x5E, 0xC5, 0x3F, 0xE1,
0x1F, 0x5D, 0xFD, 0x9A, 0x5B, 0xDB, 0x87, 0xFD, 0x54, 0xDB, 0x57, 0xE5, 0xCD, 0x03, 0x04, 0xF8,
0x1C, 0xB3, 0x2A, 0xD1, 0x0B, 0x5B, 0x04, 0x05, 0xBB, 0x49, 0xC9, 0x35, 0x2D, 0x6F, 0xB1, 0x2C,
0x9B, 0x13, 0xB0, 0x9E, 0x91, 0xB7, 0x36, 0x13, 0x83, 0x60, 0x4F, 0x54, 0x81, 0xF6, 0x4C, 0x69,
0xC1, 0x87, 0xA2, 0xA2, 0x95, 0xB7, 0x9E, 0x92, 0x12, 0x16, 0xC7, 0x28, 0x12, 0xF0, 0x47, 0xD2,
0x03, 0xC4, 0xD9, 0x10, 0xF2, 0x96, 0xE0, 0x48, 0x64, 0x26, 0xF0, 0x42, 0x00, 0x37, 0x51, 0xB4,
0x29, 0xC2, 0xD3, 0xDD, 0x95, 0xEB, 0xCD, 0x92, 0x0F, 0x8A, 0x85, 0xA5, 0x37, 0x84, 0xA6, 0x55,
0x25, 0xD7, 0xD3, 0xDD, 0x94, 0xAB, 0xD7, 0x20, 0x28, 0x79, 0x00, 0x41, 0x73, 0x52, 0x10, 0x5E,
0x9F, 0xA3, 0x47, 0x1E, 0xBB, 0x21, 0x32, 0x3E, 0x06, 0x41, 0xF6, 0xB8, 0x88, 0x34, 0xF9, 0xAE,
0x4B, 0x0B, 0x64, 0x97, 0x88, 0x85, 0x64, 0x84, 0x10, 0x8D, 0x96, 0xED, 0x07, 0x9A, 0x94, 0xE3,
0xDD, 0x93, 0x0B, 0x9E, 0x94, 0xC2, 0x14, 0x33, 0xCB, 0x9E, 0xD9, 0x7F, 0xDE, 0x82, 0xD1, 0xA6,
0x20, 0xD0, 0xA2, 0xBA, 0x5B, 0x83, 0x00, 0x68, 0x65, 0xD5, 0xA3, 0xDB, 0xF7, 0x26, 0x51, 0xC5,
0x88, 0x7A, 0xD0, 0x26, 0xA8, 0xD6, 0x64, 0xD5, 0xE6, 0x82, 0x6F, 0x1F, 0xA0, 0xAE, 0xAF, 0xDF,
0x44, 0xC5, 0x42, 0x81, 0x52, 0x89, 0xDC, 0xA9, 0x55, 0x85, 0x56, 0x62, 0x58, 0xE8, 0x42, 0x46,
0x17, 0x80, 0x57, 0x07, 0x01, 0x8D, 0x30, 0x73, 0xEB, 0x9B, 0x8D, 0x68, 0x78, 0x4B, 0x6A, 0x4C,
0x17, 0xB5, 0x34, 0x0B, 0x8B, 0xF6, 0x7A, 0xEB, 0x0B, 0x49, 0x37, 0x11, 0xEF, 0x26, 0x66, 0x8A,
0x37, 0x6C, 0x4D, 0x87, 0xE1, 0x87, 0x11, 0x8A, 0x09, 0x8B, 0x96, 0xD0, 0x71, 0x73, 0xE2, 0x0E,
0x51, 0x0C, 0x56, 0x7A, 0x16, 0x14, 0x3E, 0x52, 0x9E, 0x44, 0x4E, 0xE0, 0x35, 0x4B, 0x63, 0xFE,
0x08, 0xD9, 0x2B, 0xBD, 0xE5, 0x40, 0x18, 0xDB, 0x83, 0x74, 0x38, 0xD5, 0xB0, 0x53, 0x75, 0xE8,
0x8F, 0x06, 0x3A, 0x4D, 0x19, 0x0C, 0x88, 0x21, 0x57, 0xA3, 0x80, 0x2A, 0x31, 0x67, 0x58, 0x48,
0xFD, 0x45, 0xF8, 0x0C, 0xCA, 0x84, 0x95, 0x12, 0x82, 0x87, 0x31, 0xD0, 0x9C, 0x43, 0xF6, 0x06,
0xD3, 0x33, 0x22, 0x62, 0xA2, 0x70, 0x21, 0x18, 0x49, 0x77, 0x43, 0x4A, 0x3A, 0x8E, 0x3F, 0xBC,
0x48, 0xE1, 0x97, 0xE0, 0xFB, 0x06, 0x4C, 0x76, 0x22, 0xF8, 0x86, 0xA5, 0xB4, 0x48, 0xA6, 0x42,
0xE0, 0x22, 0x7C, 0x3A, 0x79, 0x00, 0x35, 0x95, 0x0F, 0x59, 0xB1, 0x80, 0x8E, 0xAA, 0x8C, 0xC9,
0xD4, 0x68, 0x3B, 0x9B, 0x49, 0xA9, 0x2D, 0x18, 0x05, 0x01, 0x3F, 0x9A, 0xCF, 0x4F, 0x92, 0x5C,
0x04, 0xE3, 0xED, 0x43, 0xB4, 0x0E, 0x22, 0x1C, 0x26, 0x8D, 0x3F, 0xFF, 0x49, 0x99, 0x01, 0x0F,
0x89, 0x8F, 0xF8, 0x01, 0xDF, 0x9F, 0x14, 0xBE, 0xCB, 0x93, 0x7E, 0xD4, 0x3F, 0x78, 0x08, 0x00,
0xB7, 0xA4, 0x12, 0xEF, 0xC9, 0x33, 0x17, 0x15, 0x0B, 0x1F, 0xF0, 0x01, 0xFD, 0x82, 0x24, 0x03,
0xB6, 0x04, 0x06, 0xA0, 0x6D, 0xC6, 0x69, 0x21, 0x5A, 0x06, 0xBE, 0xD4, 0x80, 0x60, 0x13, 0xC8,
0xBD, 0xB8, 0xE5, 0xEA, 0x56, 0x76, 0xD2, 0x8D, 0x07, 0x0C, 0x7B, 0x3C, 0xC4, 0xA8, 0x57, 0xCE,
0x7F, 0x47, 0xFA, 0x64, 0x8F, 0x7E, 0x8F, 0xD0, 0xB8, 0x7A, 0x1A, 0x3B, 0xE1, 0x7F, 0x05, 0xF2,
0xBB, 0x8E, 0x3A, 0x93, 0x8E, 0xD9, 0xEB, 0x49, 0x77, 0x5B, 0x8C, 0x53, 0x7B, 0xA1, 0xD2, 0x4B,
0xF5, 0x96, 0xF3, 0x72, 0xE9, 0xB6, 0x8B, 0x54, 0x8C, 0x03, 0x9A, 0x61, 0x85, 0x00, 0xBC, 0xF0,
0x68, 0x31, 0x35, 0x45, 0xFF, 0xF3, 0x1D, 0x26, 0x26, 0x92, 0x84, 0xA7, 0xE0, 0x56, 0x23, 0x5D,
0xF0, 0x3B, 0xFD, 0xE5, 0x0E, 0x0B, 0x4D, 0x2B, 0x0E, 0x75, 0x92, 0xBD, 0x15, 0xDC, 0x9C, 0x61,
0x44, 0x08, 0x86, 0x84, 0xFB, 0xA8, 0x29, 0xE0, 0xDE, 0xCA, 0x54, 0xD0, 0x31, 0xC3, 0x6E, 0xF0,
0x95, 0x2D, 0x8D, 0x8B, 0x7A, 0xB2, 0x1F, 0x73, 0xA5, 0x65, 0x87, 0x82, 0x7D, 0x96, 0xE8, 0xF3,
0x92, 0x1F, 0x8C, 0x2A, 0x47, 0x8B, 0x52, 0x22, 0xD4, 0x7C, 0xFD, 0x08, 0x93, 0x49, 0x8F, 0x84,
0x38, 0x53, 0xD6, 0x8A, 0x5B, 0xE1, 0x6F, 0xCE, 0xA5, 0x3B, 0x97, 0x96, 0x06, 0x4D, 0x1B, 0xAA,
0xF5, 0x22, 0x23, 0xB3, 0xF4, 0xF5, 0x16, 0xBC, 0xD2, 0xD9, 0x75, 0x34, 0x4C, 0xD7, 0xFA, 0xB3,
0x20, 0x00, 0x03, 0x26, 0x4E, 0xD2, 0x42, 0x6A, 0xA8, 0x12, 0x8E, 0xA1, 0xA4, 0x95, 0x72, 0x8A,
0x42, 0x0E, 0xF9, 0x00, 0x4D, 0x0F, 0xBD, 0x76, 0x3E, 0x9E, 0x9F, 0x96, 0xC5, 0xB8, 0x99, 0x54,
0x2C, 0x0C, 0x42, 0xE3, 0xC7, 0xFE, 0x41, 0x1A, 0xA3, 0x81, 0xCC, 0x70, 0xAA, 0x55, 0xE8, 0x60,
0xCB, 0x22, 0x57, 0x3D, 0x8C, 0x4E, 0x3E, 0x43, 0xE7, 0x35, 0x58, 0xC8, 0xB9, 0xDD, 0xC9, 0x07,
0x48, 0xF9, 0x48, 0x30, 0x81, 0x0F, 0xC5, 0x12, 0x9A, 0x7B, 0x97, 0x38, 0x05, 0x1E, 0xFB, 0x98,
0xD1, 0xE2, 0x41, 0x85, 0x88, 0xB7, 0x38, 0x5A, 0x95, 0x63, 0x61, 0xBE, 0x28, 0xDA, 0x8B, 0x3B,
0x6A, 0xE2, 0x37, 0x2A, 0x2B, 0xF2, 0x75, 0x17, 0x1F, 0xCE, 0x42, 0x56, 0xF2, 0x6E, 0x05, 0xFE,
0x79, 0x79, 0x87, 0xC9, 0xDF, 0xA8, 0xAC, 0x17, 0xD0, 0x8D, 0x99, 0xCF, 0x2A, 0xF2, 0x70, 0x9B,
0xC9, 0xF2, 0x31, 0x35, 0xEC, 0x8A, 0xAC, 0xA0, 0x41, 0xBE, 0x02, 0xCE, 0x14, 0xD6, 0xED, 0x6E,
0x99, 0x43, 0xA7, 0xD5, 0x7A, 0x63, 0xDF, 0x7D, 0x00, 0x16, 0x2A, 0x23, 0x80, 0xB7, 0x51, 0xDC,
0xD8, 0xEB, 0x4D, 0x17, 0x55, 0xF9, 0xD3, 0xDB, 0x02, 0xE7, 0x41, 0x0B, 0x52, 0x9C, 0x8A, 0x7F,
0x62, 0x21, 0xA7, 0x48, 0xFD, 0x22, 0x45, 0x3B, 0x6C, 0x4B, 0x34, 0x85, 0x40, 0xFF, 0xA5, 0x1A,
0x19, 0xF2, 0x6E, 0xAB, 0x3A, 0x73, 0x6E, 0x20, 0x36, 0x29, 0xBA, 0xEE, 0x0B, 0x29, 0xF2, 0x00,
0x77, 0xD6, 0x68, 0x4E, 0xA0, 0x1B, 0x7A, 0xBF, 0x86, 0x92, 0xFE, 0x54, 0x23, 0x95, 0xD0, 0xD1,
0xAB, 0x22, 0x7C, 0x4C, 0x9E, 0x98, 0x3D, 0xC8, 0x77, 0xA3, 0x9E, 0x9A, 0xF0, 0x56, 0x4E, 0xE8,
0x7C, 0xFA, 0x88, 0xB9, 0x92, 0x12, 0x89, 0x24, 0xB0, 0x65, 0x20, 0xF3, 0xB9, 0x76, 0xC8, 0x40,
0x0B, 0xB9, 0xC8, 0xC6, 0x42, 0x60, 0x2F, 0x63, 0x09, 0x72, 0x77, 0x84, 0xB4, 0x54, 0x0D, 0xE0,
0x66, 0x90, 0x81, 0x40, 0xBD, 0x2D, 0x91, 0xED, 0x45, 0x6E, 0xA5, 0xB9, 0xED, 0xA5, 0x2E, 0x56,
0x28, 0x7A, 0x77, 0xB6, 0xBA, 0x5B, 0x3D, 0x05, 0x4D, 0x22, 0x89, 0xB0, 0xB9, 0xBB, 0x12, 0xC5,
0x20, 0x2F, 0x2C, 0x2E, 0xA4, 0x8E, 0x2C, 0xCA, 0xE4, 0xF0, 0xF6, 0x6E, 0x4A, 0x8C, 0x6E, 0x36,
0x82, 0x1D, 0x70, 0xCC, 0xD5, 0x1D, 0x0D, 0x5A, 0xC0, 0xBD, 0xE1, 0x4F, 0x20, 0x65, 0x98, 0x6E,
0x58, 0xC8, 0x86, 0x2D, 0x1A, 0x68, 0x53, 0x69, 0x69, 0xE6, 0xA7, 0xF2, 0x6B, 0x91, 0x0F, 0x96,
0x03, 0x13, 0x31, 0x45, 0x22, 0xDF, 0xE6, 0x98, 0x2D, 0x3A, 0x29, 0xFC, 0x40, 0x98, 0x80, 0x7F,
0xFF, 0x30, 0x06, 0xBE, 0x44, 0x6D, 0x51, 0xFC, 0x28, 0xCD, 0x8B, 0x94, 0xC8, 0x3B, 0xDB, 0x02,
0x31, 0x82, 0x17, 0x5D, 0xD6, 0x6B, 0x4E, 0x19, 0x6D, 0x39, 0xAC, 0x82, 0xD2, 0xA9, 0x14, 0x13,
0x4C, 0x4D, 0xC9, 0x75, 0x68, 0x37, 0xF8, 0x73, 0x0F, 0xE9, 0x77, 0xB0, 0x5A, 0x09, 0xCC, 0xA5,
0x44, 0x6A, 0x37, 0xE9, 0x39, 0xA4, 0x01, 0x31, 0x5C, 0x8F, 0xB3, 0x0D, 0xC5, 0x0A, 0x16, 0xB4,
0x63, 0xD6, 0xB2, 0x32, 0x8E, 0xA0, 0xAC, 0x65, 0xC7, 0x30, 0xB8, 0xA1, 0x50, 0x15, 0xD0, 0x9A,
0xE1, 0xAD, 0x21, 0xEC, 0x82, 0x1E, 0x44, 0x3C, 0x14, 0xE0, 0x43, 0x19, 0x3E, 0xEF, 0x08, 0xC9,
0x53, 0x36, 0x48, 0xAD, 0xF4, 0x0A, 0xFB, 0x78, 0x67, 0x82, 0xFE, 0xEC, 0x43, 0x69, 0x9E, 0x52,
0x21, 0x8D, 0x12, 0xB4, 0x6A, 0x2A, 0xC0, 0x50, 0x39, 0xB4, 0x98, 0x41, 0x27, 0x4D, 0xD6, 0x48,
0x20, 0x62, 0x8F, 0x89, 0x0A, 0x6B, 0x58, 0x1E, 0x39, 0x39, 0x1E, 0xE9, 0x90, 0x43, 0x72, 0x48,
0x84, 0xEC, 0x4A, 0x61, 0x8D, 0x59, 0x87, 0x87, 0xA2, 0xFB, 0x9B, 0xAB, 0x88, 0x2A, 0xD4, 0xA3,
0x5E, 0xE6, 0x75, 0x2B, 0x10, 0x93, 0x29, 0xC4, 0x5C, 0x2A, 0xC5, 0x07, 0xD5, 0x14, 0xDC, 0xFE,
0xF1, 0xC6, 0xF8, 0x50, 0x47, 0x8C, 0xF5, 0x27, 0x3F, 0x35, 0x4D, 0x53, 0x21, 0xFE, 0x44, 0x74,
0x4E, 0xED, 0xAD, 0x2E, 0xEC, 0xB4, 0x33, 0xE8, 0x1E, 0x0B, 0x4C, 0xDE, 0x6D, 0x24, 0x1F, 0x4B,
0x1B, 0x0E, 0xD4, 0xC7, 0xED, 0xD2, 0xC3, 0x07, 0x7C, 0x9C, 0x4D, 0xAB, 0xEB, 0x24, 0x1D, 0x27,
0x4F, 0x3C, 0xDE, 0x0F, 0x93, 0x21, 0x26, 0x23, 0x0A, 0xB6, 0x7B, 0xAC, 0xC7, 0xDF, 0x0E, 0x23,
0x85, 0x12, 0xDC, 0x38, 0x0A, 0xA5, 0xAC, 0xC0, 0x7E, 0xF7, 0xDC, 0x93, 0x6F, 0x17, 0x55, 0x98,
0x28, 0x6F, 0xA4, 0xEA, 0x1E, 0xE0, 0x8A, 0x0A, 0x29, 0x73, 0xAC, 0x60, 0xB0, 0xCF, 0x24, 0x70,
0xAA, 0x2F, 0xCA, 0xA4, 0x2C, 0xA8, 0x57, 0x0D, 0x36, 0x43, 0x8F, 0x9C, 0xE1, 0x63, 0xA7, 0xE0,
0x63, 0x73, 0x93, 0xDF, 0xB3, 0x97, 0xB3, 0x86, 0x1D, 0xE7, 0xA3, 0x50, 0xCE, 0xCF, 0xD0, 0xFE,
0x0F, 0x36, 0x7D, 0x94, 0x05, 0x9F, 0x60, 0x1F, 0x7F, 0x92, 0x07, 0x4F, 0x2D, 0x2F, 0x93, 0x5A,
0xAB, 0xA0, 0x13, 0x49, 0xB1, 0x94, 0x01, 0xFE, 0x89, 0xCC, 0x8B, 0xEF, 0xC4, 0x72, 0x1E, 0xC8,
0x40, 0x44, 0xF1, 0x50, 0x96, 0x94, 0x9D, 0xA9, 0x92, 0x73, 0x0D, 0xB0, 0x14, 0xD5, 0x36, 0x2F,
0x92, 0xDC, 0xA6, 0x72, 0x16, 0x18, 0x72, 0xBA, 0xCF, 0x1E, 0x63, 0xBA, 0x02, 0x65, 0x3E, 0x74,
0x49, 0x97, 0x70, 0xAE, 0x6B, 0x39, 0x07, 0xDC, 0x8F, 0xF2, 0xDC, 0xA9, 0xCD, 0x15, 0x5D, 0xEF,
0x03, 0xDC, 0x80, 0x17, 0x4C, 0x0B, 0xD6, 0xF7, 0x88, 0x36, 0x7F, 0xDB, 0xDE, 0x45, 0xDB, 0x56,
0x45, 0x7E, 0xC0, 0x84, 0xF2, 0x82, 0x96, 0x65, 0xC1, 0x8A, 0x49, 0xA7, 0x20, 0xB2, 0xBE, 0x2B,
0xC2, 0x4A, 0x41, 0x90, 0xBF, 0x8A, 0x0D, 0xA1, 0xCD, 0x66, 0xAF, 0xAB, 0x2E, 0x2E, 0xDB, 0x64,
0xDE, 0x59, 0xE8, 0x82, 0x06, 0xE0, 0x22, 0xEE, 0x3D, 0x6D, 0x6F, 0x35, 0xF1, 0x64, 0xC3, 0x67,
0x7C, 0xC9, 0x04, 0xF8, 0xD0, 0xD1, 0xCA, 0x18, 0x7F, 0x7A, 0x8B, 0xE9, 0x91, 0xF4, 0x4C, 0xF6,
0x52, 0x85, 0xB5, 0xD8, 0x01, 0xFB, 0xA8, 0x7F, 0x83, 0x00, 0x1A, 0xD9, 0xC2, 0x94, 0xAF, 0xC0,
0xD0, 0x14, 0x1D, 0xD2, 0x58, 0xA9, 0x13, 0x02, 0x15, 0xB8, 0x33, 0x59, 0xA4, 0x95, 0x64, 0x1B,
0x27, 0x5F, 0x53, 0x87, 0xD9, 0x98, 0x1E, 0x69, 0xD4, 0xFC, 0x59, 0x11, 0x0A, 0x93, 0xC3, 0xD2,
0xB0, 0xB1, 0x48, 0xC0, 0x7C, 0x15, 0xD1, 0x4C, 0xA4, 0x88, 0xC8, 0x34, 0xDD, 0x05, 0x15, 0x16,
0x47, 0xA2, 0x4A, 0xE5, 0x1B, 0x8B, 0xA8, 0x56, 0xD2, 0x26, 0x1D, 0x14, 0x54, 0xE9, 0xC6, 0xB6,
0x2F, 0xB5, 0xAA, 0x51, 0x4E, 0xD7, 0xA6, 0x32, 0x65, 0x5C, 0x26, 0xEF, 0xD9, 0xDE, 0xB6, 0xF1,
0x45, 0x61, 0x27, 0x2D, 0x5D, 0x11, 0x6E, 0x46, 0x72, 0x4F, 0x0C, 0x45, 0x5F, 0xC4, 0x75, 0x80,
0xDA, 0xDD, 0x8B, 0x13, 0x92, 0xC9, 0x5F, 0x34, 0xEB, 0xA3, 0x03, 0x8A, 0x2B, 0x33, 0x90, 0x2C,
0x7C, 0x5A, 0xD6, 0x70, 0x99, 0x2C, 0xEA, 0x6B, 0xF5, 0xC4, 0x3A, 0x8D, 0xEA, 0x98, 0xBF, 0x84,
0x90, 0xA6, 0xB8, 0x7D, 0x04, 0xBE, 0xF0, 0x27, 0x62, 0x61, 0x9B, 0xDB, 0x1E, 0x3F, 0x60, 0x51,
0x74, 0xD3, 0xD9, 0xE3, 0xE5, 0x0E, 0xC6, 0x2D, 0x52, 0xEC, 0x86, 0x15, 0xB8, 0xD5, 0x8A, 0xB7,
0xFD, 0x5F, 0x30, 0xAC, 0xFE, 0x4C, 0xCE, 0x88, 0xA1, 0x84, 0x3F, 0x28, 0x40, 0x16, 0xF7, 0x8D,
0x3F, 0x5F, 0x02, 0xAD, 0xC4, 0x60, 0x91, 0x25, 0x27, 0xB0, 0x14, 0xAE, 0x43, 0xA5, 0x06, 0x22,
0x51, 0xBB, 0xD7, 0xBA, 0xA0, 0xB3, 0x79, 0xBC, 0xDE, 0x84, 0xE8, 0x00, 0x41, 0x4A, 0x91, 0xB3,
0x69, 0xAF, 0x86, 0x02, 0xFD, 0x6D, 0x4D, 0xC9, 0x1D, 0xFA, 0xFF, 0xD9, 0x16, 0x14, 0x47, 0x3B,
0x33, 0xD8, 0x56, 0x7D, 0x75, 0xAF, 0x36, 0x1D, 0x10, 0x59, 0xF6, 0xC1, 0x10, 0x39, 0x39, 0xC2,
0xB3, 0xF9, 0x20, 0x49, 0x13, 0xB9, 0xF8, 0xCF, 0x71, 0x99, 0xB5, 0x45, 0xC0, 0xEB, 0x8D, 0x1A,
0x67, 0x58, 0x58, 0x7A, 0x46, 0x01, 0xBA, 0x84, 0x0D, 0x0E, 0x4D, 0xF9, 0x69, 0x7F, 0x2B, 0x67,
0xC0, 0xF6, 0x56, 0x6B, 0x73, 0x86, 0x8B, 0x37, 0x6A, 0x7D, 0x1F, 0x2B, 0x7A, 0xEA, 0xB3, 0x34,
0x43, 0x92, 0xCC, 0xF7, 0x45, 0x2E, 0x07, 0x48, 0xC3, 0xB4, 0xAA, 0x9F, 0xF1, 0x67, 0xC7, 0x32,
0x35, 0x81, 0x97, 0xA2, 0xAD, 0x2E, 0x09, 0xDB, 0x18, 0xC4, 0x19, 0x77, 0xA3, 0x0A, 0x61, 0x9F,
0x75, 0x74, 0xCD, 0x36, 0xB5, 0x4B, 0x8D, 0x6A, 0xB0, 0x91, 0x6A, 0xB0, 0xD5, 0x2D, 0x74, 0xFF,
0xD2, 0xCC, 0x4C, 0x4E, 0x6F, 0x90, 0x14, 0x89, 0x13, 0xA0, 0xC5, 0x51, 0x69, 0xA8, 0xDE, 0xDE,
0xE7, 0xEB, 0xAA, 0x03, 0xDF, 0x04, 0x7C, 0x88, 0x0E, 0x71, 0x15, 0xAE, 0xB7, 0x53, 0x22, 0x7A,
0x3C, 0x3D, 0xCC, 0xB1, 0x2A, 0xC4, 0xE6, 0xC9, 0x23, 0x07, 0x10, 0x8F, 0xB7, 0xC5, 0xA2, 0x9F,
0x5C, 0x56, 0x3C, 0x2E, 0xFC, 0x71, 0xED, 0xC2, 0xC2, 0x49, 0x1A, 0xFB, 0x69, 0x7A, 0x1D, 0x8F,
0x53, 0x35, 0x86, 0x09, 0x39, 0x83, 0x3F, 0x85, 0x39, 0x12, 0x05, 0x37, 0xC3, 0xE8, 0x6C, 0x97,
0xB8, 0x34, 0xD7, 0x6F, 0xD4, 0xEA, 0xAB, 0xA5, 0x26, 0xE0, 0x73, 0x52, 0x8C, 0x51, 0xB1, 0xBF,
0x44, 0x0F, 0x28, 0x7D, 0xA0, 0xDE, 0xC9, 0x8B, 0x33, 0xE4, 0x53, 0x5A, 0x02, 0xE7, 0xAB, 0x4B,
0xB5, 0x15, 0x3D, 0x40, 0x86, 0x2B, 0x7B, 0x2E, 0x4B, 0x7B, 0xF0, 0x1A, 0xBE, 0x40, 0xDF, 0x31,
0x04, 0x94, 0xC3, 0x58, 0xB9, 0xC6, 0x34, 0x7A, 0xB5, 0xFB, 0x3D, 0xDF, 0xE7, 0xF7, 0xD9, 0x74,
0x46, 0x26, 0x0E, 0x1F, 0xC4, 0x64, 0x3C, 0x68, 0x0A, 0xA2, 0x56, 0xC7, 0xC8, 0xA0, 0x27, 0xDD,
0xEE, 0x85, 0xB1, 0x4A, 0xB6, 0x26, 0xF5, 0x00, 0x7C, 0xA7, 0xF3, 0x60, 0xBB, 0xBA, 0x3C, 0xFE,
0x76, 0x31, 0xF2, 0xBA, 0x47, 0x62, 0xD7, 0xCD, 0xCE, 0xA2, 0x80, 0x7E, 0xC6, 0xF4, 0xAA, 0x7D,
0xA9, 0x11, 0x1E, 0xB0, 0x94, 0x05, 0x5D, 0xD8, 0x9A, 0x5A, 0xD8, 0xDC, 0x62, 0x32, 0xEF, 0x62,
0xA7, 0xFF, 0x71, 0xEF, 0x2F, 0x96, 0x6D, 0x5B, 0x38, 0x2E, 0x07, 0x7F, 0xAE, 0xE8, 0x0F, 0xD2,
0x84, 0x56, 0xC5, 0x46, 0x39, 0x59, 0x95, 0x53, 0x0C, 0xDA, 0x41, 0x4C, 0xFB, 0xCB, 0x8C, 0x62,
0x08, 0x0D, 0x0A, 0x25, 0x19, 0x3C, 0x82, 0x73, 0x81, 0xC8, 0x11, 0xB0, 0x1D, 0x63, 0xD6, 0x88,
0x6E, 0xC3, 0xA6, 0x4E, 0xAA, 0x66, 0x3B, 0x2E, 0x2F, 0xFE, 0xC0, 0xA4, 0x9F, 0x34, 0x45, 0x78,
0xA1, 0x37, 0xA0, 0x4C, 0x0A, 0xF4, 0x9D, 0x09, 0x3F, 0xFA, 0x14, 0xDF, 0x53, 0x4C, 0xFE, 0x6B,
0x65, 0xFB, 0x3F, 0x7A, 0x62, 0x54, 0x00, 0x6C, 0x12, 0x8F, 0x98, 0x34, 0xD0, 0xA4, 0x7A, 0xFC,
0xC4, 0x70, 0xBE, 0x54, 0xA2, 0xB8, 0xB4, 0xE9, 0xF8, 0x34, 0x5E, 0x66, 0xCD, 0xCB, 0x32, 0xA9,
0x22, 0xED, 0xEF, 0x55, 0x32, 0xB4, 0xFA, 0x60, 0x4B, 0x90, 0x42, 0x19, 0xF3, 0xC7, 0x67, 0x92,
0x57, 0x67, 0x01, 0x32, 0x30, 0x5B, 0xBC, 0xE3, 0x24, 0xC1, 0x3B, 0x68, 0x25, 0x72, 0x01, 0x2C,
0x87, 0xC3, 0x91, 0xDE, 0xBD, 0x1C, 0x27, 0xCF, 0x83, 0x7A, 0xEA, 0x0E, 0xA8, 0x81, 0xAE, 0x67,
0xA5, 0x0D, 0xDA, 0x48, 0x65, 0xFA, 0x24, 0x39, 0xE9, 0x1E, 0x9F, 0x02, 0x55, 0xE3, 0xA3, 0x1B,
0xBC, 0xCC, 0x87, 0x30, 0x58, 0xAE, 0x8F, 0xA0, 0xFD, 0x7F, 0x01, 0xBD, 0x5A, 0xCF, 0x8F, 0xDD,
0xD6, 0x75, 0x3E, 0x24, 0xA5, 0xA1, 0x65, 0x22, 0xA6, 0x16, 0x09, 0xD4, 0x40, 0xB5, 0xE8, 0x45,
0x16, 0x06, 0x62, 0x9B, 0x59, 0x74, 0x91, 0x85, 0x34, 0x97, 0xB1, 0xD1, 0xDA, 0x40, 0x17, 0x56,
0x81, 0x4C, 0xBC, 0xE8, 0x42, 0xDB, 0x02, 0x5D, 0x8C, 0x17, 0x5E, 0x08, 0x88, 0x24, 0xD2, 0xF2,
0x22, 0x06, 0xB4, 0xB0, 0xBA, 0x70, 0xBA, 0xD0, 0x22, 0x01, 0xFA, 0x07, 0x68, 0xA3, 0x85, 0x50,
0xCC, 0x0C, 0x29, 0xCF, 0x42, 0x40, 0xB3, 0x10, 0x13, 0x37, 0x36, 0x50, 0x2D, 0x4C, 0xCB, 0x96,
0x53, 0x40, 0x68, 0x75, 0xED, 0x70, 0x6C, 0x8E, 0x4D, 0xF2, 0xF6, 0xFB, 0x0E, 0xF9, 0x66, 0x9E,
0x6C, 0xB5, 0xB1, 0x1D, 0xA9, 0x0F, 0xF3, 0xDE, 0xBC, 0xF7, 0x66, 0x78, 0xEF, 0x77, 0x7E, 0x7F,
0xE7, 0x5C, 0x8A, 0xA4, 0xAE, 0x12, 0x31, 0x7C, 0xF9, 0xDE, 0x5A, 0x26, 0xCB, 0x8F, 0xAB, 0x78,
0x06, 0x3D, 0x5E, 0x22, 0xBE, 0x24, 0x03, 0x5E, 0x56, 0xB7, 0xF0, 0x72, 0x86, 0x2F, 0x5D, 0x2E,
0xE2, 0x5B, 0x23, 0x12, 0xD6, 0x26, 0x93, 0xB8, 0x32, 0x05, 0x56, 0xC2, 0x2A, 0x86, 0x2F, 0x83,
0xA4, 0x95, 0xD7, 0x49, 0x52, 0x07, 0x56, 0x92, 0x26, 0x1D, 0xC4, 0x0D, 0xF9, 0xE8, 0xBB, 0x41,
0x12, 0xFC, 0xD1, 0x39, 0x91, 0xB5, 0x9F, 0xEE, 0xED, 0x92, 0x9F, 0xAA, 0x62, 0xFC, 0xC5, 0xAD,
0xDB, 0xC8, 0xA6, 0x95, 0xC9, 0x06, 0xBF, 0x0F, 0x6C, 0xDC, 0x24, 0x78, 0xEB, 0xA4, 0x8F, 0xBA,
0xA0, 0xCD, 0x6F, 0xC5, 0x77, 0xDE, 0x1B, 0x4C, 0x6F, 0x9A, 0xB4, 0xD8, 0xC4, 0x15, 0x07, 0x78,
0xD9, 0x31, 0x01, 0xE2, 0xF4, 0x12, 0x5E, 0x12, 0xAC, 0x27, 0x61, 0x27, 0x0F, 0x1B, 0x3B, 0x1F,
0x7F, 0xE5, 0xE3, 0xC2, 0x33, 0x12, 0xB9, 0x46, 0xA2, 0x51, 0xC4, 0x9B, 0x14, 0x16, 0xEE, 0xF4,
0x90, 0xAA, 0x8E, 0x3F, 0x75, 0x52, 0x02, 0x7D, 0x1B, 0xD7, 0x10, 0x44, 0x46, 0x8F, 0x6F, 0x6D,
0x5C, 0x95, 0x85, 0x79, 0x7E, 0x7C, 0x62, 0xDC, 0x74, 0x6F, 0xBB, 0xED, 0xD1, 0xEF, 0xA2, 0xFA,
0xFE, 0xF8, 0x4E, 0x28, 0xBE, 0x73, 0x78, 0x69, 0xEF, 0xC5, 0xF7, 0xFB, 0x7C, 0x19, 0x5F, 0x2F,
0xC9, 0x57, 0xF0, 0x0D, 0x13, 0xBE, 0x88, 0x70, 0x8E, 0x13, 0xD1, 0xD6, 0x49, 0xBC, 0x94, 0x0D,
0x5E, 0xD2, 0x42, 0x92, 0x77, 0x6D, 0xE0, 0x5C, 0x66, 0x6E, 0xF6, 0x7E, 0x1F, 0xD9, 0x18, 0x6B,
0x96, 0xD2, 0x07, 0x5D, 0xC8, 0xB7, 0x95, 0xF1, 0x47, 0x19, 0x92, 0xEE, 0xB5, 0xCF, 0x3F, 0x73,
0x2F, 0xBA, 0xB8, 0x8B, 0xA0, 0x63, 0x91, 0x1F, 0x03, 0x1C, 0x35, 0x4B, 0xF3, 0x00, 0xED, 0xD6,
0x42, 0xAB, 0x11, 0xB1, 0xD2, 0x5D, 0x2C, 0x9E, 0xF8, 0xC3, 0xA1, 0xF9, 0xFB, 0x15, 0xE8, 0x23,
0x81, 0x5D, 0x93, 0xDD, 0xF5, 0x2A, 0x6D, 0x02, 0x9B, 0x34, 0x02, 0xC9, 0xE5, 0x07, 0x61, 0x0B,
0x41, 0x28, 0x20, 0x4D, 0x64, 0x70, 0x21, 0xBE, 0x9C, 0xC4, 0x76, 0x85, 0xD4, 0x69, 0xE7, 0x77,
0x00, 0xD6, 0x4B, 0x8E, 0xA7, 0xE7, 0x3E, 0xC4, 0xD7, 0x8F, 0x40, 0xE6, 0x4A, 0x20, 0x99, 0xDF,
0x09, 0x84, 0x94, 0x57, 0x16, 0x3B, 0x1F, 0x6D, 0xA1, 0x02, 0x31, 0x97, 0xAA, 0xB4, 0xC8, 0xE2,
0x4A, 0xA2, 0x46, 0x02, 0xAC, 0x0D, 0xA1, 0x73, 0x28, 0xA8, 0xF9, 0xCB, 0x60, 0xCC, 0xA5, 0x74,
0x59, 0xA8, 0x56, 0xF2, 0xAB, 0x69, 0x93, 0x10, 0xDA, 0x0A, 0x9B, 0x4E, 0x82, 0xFA, 0xF1, 0x7D,
0xC7, 0x78, 0x60, 0x50, 0x4F, 0x12, 0x41, 0xDC, 0x4B, 0x7A, 0x56, 0x36, 0x52, 0xB1, 0xDF, 0xD9,
0x07, 0x5A, 0xF6, 0xC1, 0xEE, 0x46, 0xD4, 0x1C, 0x06, 0x4E, 0x28, 0x13, 0x16, 0xC4, 0x0F, 0x60,
0x9A, 0xE2, 0x65, 0xF3, 0x07, 0x9B, 0xBA, 0x5A, 0x51, 0x42, 0x4C, 0xE1, 0x9E, 0x1E, 0xB7, 0xF8,
0xEE, 0x92, 0xE7, 0x1E, 0xC5, 0x7E, 0xDC, 0x25, 0xBF, 0x5D, 0x4A, 0x59, 0xC4, 0x55, 0x5E, 0x04,
0x30, 0x93, 0x5C, 0x4C, 0xA0, 0xEF, 0x68, 0x0F, 0xD3, 0x32, 0xC8, 0x51, 0x82, 0xAC, 0x6C, 0xA2,
0x26, 0x76, 0xCE, 0x7A, 0x78, 0x42, 0xF0, 0x8B, 0x10, 0xA6, 0x91, 0xD0, 0xF2, 0x0A, 0xBF, 0xF8,
0x66, 0xD0, 0xBC, 0x0A, 0x76, 0xDF, 0x48, 0x0A, 0x89, 0xEF, 0x66, 0x90, 0x15, 0x3E, 0x95, 0x64,
0x0F, 0x41, 0x7F, 0x9E, 0x1C, 0x0B, 0xEA, 0xE0, 0xED, 0x46, 0xB8, 0x20, 0x50, 0xDA, 0x6F, 0x63,
0x6A, 0xAC, 0x02, 0x4F, 0x45, 0xCC, 0xC4, 0xD7, 0xE1, 0xEC, 0x31, 0xBF, 0xA3, 0x9E, 0xE4, 0xFB,
0x7B, 0xCA, 0x84, 0xF9, 0x9D, 0x1B, 0xE5, 0x98, 0xFB, 0x47, 0x07, 0x38, 0xD0, 0x55, 0xDC, 0x00,
0x95, 0xC9, 0xA2, 0xD6, 0x43, 0x3A, 0xAA, 0xA1, 0x9F, 0xBC, 0x30, 0x15, 0xDE, 0x8F, 0x12, 0xB5,
0x10, 0xC2, 0x54, 0x08, 0xFF, 0x51, 0x4A, 0xE0, 0x0F, 0x7A, 0x48, 0x1F, 0xEF, 0x94, 0xAD, 0xAE,
0x90, 0xBA, 0x91, 0x6A, 0x38, 0x6A, 0xAF, 0x40, 0x00, 0xC0, 0x5E, 0x29, 0x5F, 0xC4, 0xE7, 0xFE,
0x0C, 0xCC, 0xF8, 0x09, 0xB6, 0x4C, 0x2F, 0x88, 0x37, 0x0C, 0xCC, 0xA4, 0x56, 0x82, 0xA1, 0x84,
0x7E, 0x2B, 0x84, 0xCD, 0x00, 0xE8, 0x08, 0x39, 0x84, 0x6E, 0x91, 0xF3, 0x13, 0xD0, 0xD8, 0xB4,
0x91, 0xF8, 0xB7, 0xEE, 0x75, 0x31, 0x97, 0xF3, 0x56, 0x9C, 0x85, 0x7A, 0xB6, 0x7C, 0x08, 0x28,
0xEB, 0x50, 0x04, 0x4C, 0xD8, 0xC9, 0xCF, 0x87, 0xCB, 0x3D, 0xB6, 0x8F, 0x3B, 0x5C, 0x05, 0x2D,
0x22, 0x21, 0xD5, 0x00, 0x96, 0x67, 0x04, 0x96, 0xBA, 0x21, 0x6C, 0x4B, 0x67, 0xD3, 0x3A, 0xAE,
0xA1, 0xEA, 0x1C, 0x89, 0x0F, 0x5A, 0x37, 0x55, 0x6C, 0xA1, 0x10, 0xF3, 0x8E, 0xAB, 0x23, 0xAE,
0x50, 0xBA, 0x5D, 0x95, 0xDE, 0xCE, 0xA9, 0x05, 0x9A, 0xF3, 0x2F, 0xFF, 0xA7, 0xF8, 0x4C, 0xBD,
0x8C, 0x2C, 0x00, 0x85, 0x4C, 0xF0, 0x9C, 0xB2, 0x42, 0x4A, 0x68, 0x14, 0x26, 0x72, 0x02, 0xF6,
0x83, 0xDC, 0xB5, 0x29, 0x82, 0x16, 0x20, 0x91, 0x15, 0x0A, 0x62, 0x8C, 0x91, 0x16, 0x66, 0x88,
0xCC, 0x32, 0xD0, 0xBD, 0x1C, 0x5C, 0xAA, 0x14, 0x48, 0x4A, 0x35, 0x1C, 0x02, 0x0B, 0xAC, 0x6D,
0x00, 0x48, 0x02, 0x05, 0x87, 0xD9, 0x9E, 0x67, 0x97, 0x10, 0xCA, 0xE0, 0x8F, 0xF1, 0xED, 0x9F,
0xCA, 0xEC, 0x22, 0x87, 0x81, 0xFB, 0x69, 0x8A, 0x96, 0x25, 0xB7, 0x4F, 0x55, 0x39, 0x1C, 0x36,
0xE5, 0xE5, 0x70, 0x0D, 0x96, 0x21, 0x6F, 0xED, 0xE4, 0xC2, 0xD3, 0x06, 0xA8, 0xA3, 0x8A, 0xFF,
0xD0, 0x46, 0x75, 0x1F, 0xDA, 0x55, 0xBF, 0x35, 0xD2, 0x97, 0x62, 0x60, 0xB5, 0x0F, 0xA1, 0xC5,
0x30, 0x73, 0xEB, 0xD8, 0xB7, 0x56, 0x07, 0xD5, 0xC7, 0x71, 0x3F, 0x93, 0xE4, 0x26, 0xB2, 0x07,
0xB6, 0x84, 0xCA, 0xF6, 0x00, 0x42, 0xD2, 0x01, 0x61, 0xE1, 0xB2, 0x68, 0xE7, 0xEF, 0x2B, 0xD8,
0xD4, 0xC2, 0xD4, 0xAF, 0x50, 0x25, 0x9A, 0xCA, 0x22, 0x98, 0x96, 0xD9, 0x51, 0xC6, 0x35, 0x0D,
0x05, 0x66, 0x7F, 0x28, 0xDF, 0xAF, 0x61, 0xAB, 0xD6, 0x1B, 0xD7, 0xFA, 0x10, 0x97, 0xFA, 0xBC,
0x9C, 0x6B, 0x7D, 0x47, 0x8A, 0xE8, 0x9A, 0xF5, 0xA1, 0xE2, 0xB4, 0x63, 0x0A, 0xE0, 0x63, 0x1D,
0x86, 0xE8, 0x65, 0xCC, 0xB3, 0x4D, 0x04, 0x6B, 0xD0, 0xA4, 0xCF, 0xD9, 0xF8, 0x37, 0x48, 0xB8,
0xB5, 0x07, 0x7F, 0x31, 0xF2, 0x4A, 0xFC, 0x29, 0x76, 0x07, 0xE8, 0x76, 0x0E, 0xFA, 0x60, 0xA1,
0x9A, 0x13, 0xFB, 0x41, 0x05, 0xB3, 0xB7, 0xD8, 0x07, 0x96, 0xFE, 0xFD, 0x3A, 0x36, 0x0F, 0xAB,
0xA0, 0xF3, 0x6A, 0x4F, 0x2D, 0xC7, 0x14, 0x8E, 0xED, 0x58, 0x22, 0x83, 0xDD, 0x35, 0xD1, 0x2F,
0x4B, 0x94, 0x40, 0x53, 0x45, 0x19, 0x5C, 0xB9, 0x0E, 0x77, 0x5F, 0xB2, 0x50, 0x7F, 0x1F, 0xF1,
0xF2, 0xFB, 0x07, 0xBD, 0x43, 0xD0, 0x0F, 0x50, 0x62, 0x52, 0x75, 0x00, 0x67, 0x50, 0x9B, 0x06,
0xC9, 0x2F, 0x12, 0x9B, 0xB9, 0xD9, 0x26, 0x53, 0xD0, 0x53, 0x40, 0x98, 0xA2, 0xF6, 0x87, 0x9F,
0x59, 0xD8, 0xE7, 0x0C, 0xEC, 0xF3, 0xB8, 0x86, 0x12, 0x96, 0xA3, 0xDF, 0x14, 0x2C, 0x70, 0x62,
0xDE, 0x3C, 0x29, 0x73, 0x1E, 0xCA, 0x10, 0x45, 0x57, 0xA0, 0xC9, 0x13, 0x92, 0xBF, 0x99, 0x53,
0xBD, 0x45, 0xC9, 0xEA, 0xA4, 0x1B, 0xB3, 0x76, 0x78, 0xBB, 0x50, 0x58, 0xDE, 0x4C, 0x39, 0xEB,
0xEB, 0x80, 0x80, 0x6B, 0x3E, 0x25, 0x58, 0x52, 0xAC, 0xA6, 0x0C, 0x0A, 0x9E, 0x1D, 0x44, 0xA1,
0x8C, 0x2A, 0x49, 0x5E, 0xAC, 0x80, 0xA1, 0x9A, 0xF2, 0xCA, 0x5C, 0x73, 0x1F, 0x9C, 0x55, 0xFF,
0xAF, 0x44, 0x64, 0xE0, 0x93, 0xBF, 0xAA, 0x01, 0x18, 0xB0, 0x01, 0x3E, 0xF8, 0x04, 0x85, 0xBE,
0x25, 0xEE, 0xB8, 0x7A, 0x1C, 0x51, 0x0E, 0x95, 0x2D, 0x6A, 0x0E, 0x6B, 0x6D, 0x09, 0xD9, 0x21,
0x96, 0xC4, 0x6F, 0x61, 0x99, 0xE6, 0xB1, 0x7B, 0x92, 0xFA, 0x45, 0x1A, 0xB9, 0x0A, 0xC7, 0x9F,
0x75, 0xC8, 0x2E, 0x71, 0x81, 0x92, 0x6E, 0x11, 0xDB, 0x87, 0xD4, 0x9E, 0xE9, 0x5C, 0xB0, 0x18,
0xC7, 0x6E, 0x1B, 0x5B, 0x74, 0x10, 0x74, 0xD4, 0x5C, 0x95, 0xB6, 0x88, 0x7F, 0x87, 0x5C, 0xEB,
0x33, 0xAE, 0x57, 0x34, 0x73, 0x72, 0x2F, 0xFE, 0xBB, 0x0F, 0x35, 0xF9, 0x1F, 0x5B, 0xF1, 0xEC,
0xD3, 0x22, 0x87, 0xBD, 0xFD, 0xDD, 0x68, 0x2F, 0xF8, 0x03, 0x0C, 0x5B, 0x9E, 0x0C, 0x3A, 0x64,
0x1F, 0x30, 0x2A, 0x31, 0x08, 0xBD, 0xE8, 0x0B, 0x5C, 0x96, 0xC3, 0x73, 0xD3, 0x46, 0x99, 0x81,
0x44, 0x1D, 0xB1, 0x21, 0xE1, 0xBE, 0x5A, 0x56, 0x49, 0x11, 0xA0, 0xFC, 0x83, 0xB6, 0x8C, 0x7F,
0xED, 0xC8, 0x37, 0xC4, 0x2B, 0x35, 0x8B, 0x1C, 0xA6, 0x83, 0xCA, 0xCB, 0x48, 0x5F, 0xE7, 0xA8,
0xD8, 0xEA, 0x9E, 0xE0, 0x7A, 0xC0, 0xA2, 0xF1, 0xF1, 0x94, 0xA0, 0xF4, 0xBC, 0x8A, 0xAC, 0x8F,
0x4C, 0x2A, 0xB9, 0xDD, 0xB3, 0xB8, 0x1A, 0x15, 0xB8, 0xB2, 0xE4, 0xD3, 0x01, 0xAE, 0x6F, 0x90,
0x04, 0x28, 0x1A, 0xFC, 0x2B, 0xBD, 0x0B, 0x25, 0x30, 0xEA, 0x69, 0x00, 0x92, 0x15, 0x8A, 0xB7,
0x0E, 0x7F, 0xDD, 0x5A, 0x71, 0x72, 0x8E, 0x5B, 0x41, 0xB4, 0x70, 0xF7, 0x48, 0x8F, 0x74, 0xD4,
0x2F, 0x76, 0x0A, 0x28, 0xC4, 0x48, 0xD9, 0x6A, 0x59, 0x84, 0xF2, 0xF4, 0x50, 0xB9, 0xB5, 0x58,
0xDD, 0x5E, 0x2F, 0x50, 0xDF, 0x3A, 0x90, 0xCB, 0x98, 0x75, 0x4D, 0x6B, 0xB0, 0xDF, 0xCF, 0x05,
0x0E, 0x62, 0xB9, 0x9E, 0x62, 0xBD, 0x86, 0x6C, 0xDD, 0x18, 0x68, 0xCE, 0x47, 0xB9, 0xA8, 0x63,
0xF7, 0xCB, 0x9E, 0x30, 0x0B, 0x59, 0xD7, 0x82, 0xC1, 0x7D, 0x02, 0xB2, 0xD3, 0x61, 0xA9, 0x2E,
0xC9, 0x1C, 0xD6, 0x25, 0x82, 0x36, 0xBF, 0xB9, 0x83, 0x68, 0xEB, 0xC9, 0x43, 0x59, 0x1D, 0x2A,
0x29, 0x51, 0x3D, 0x42, 0xDA, 0x76, 0xD4, 0x6C, 0xAD, 0x62, 0x79, 0x48, 0xBB, 0x7E, 0x77, 0xB4,
0xF7, 0x58, 0x14, 0xB6, 0xB0, 0x5F, 0xF2, 0xE1, 0x29, 0xE4, 0x21, 0xA8, 0x88, 0xFA, 0x7F, 0xC0,
0x90, 0x89, 0x9A, 0x51, 0x60, 0x16, 0x6F, 0xCE, 0x28, 0xE1, 0x96, 0x85, 0x37, 0x9C, 0x9E, 0xBF,
0x62, 0x06, 0x23, 0x37, 0x08, 0xE9, 0xFC, 0xCB, 0x04, 0x1C, 0x59, 0x1F, 0xD8, 0x5A, 0xCF, 0xAD,
0xFF, 0x3B, 0x8C, 0x0D, 0xDF, 0x13, 0x8A, 0x57, 0x42, 0x22, 0x40, 0x4A, 0xC6, 0xC9, 0xEF, 0xE0,
0x6B, 0x2A, 0xE2, 0x0A, 0x74, 0x10, 0x35, 0xEB, 0x36, 0x24, 0x1C, 0x8A, 0x97, 0xFF, 0x53, 0x5E,
0x45, 0x4C, 0x26, 0x33, 0x1A, 0xE5, 0xFB, 0xCC, 0x43, 0xEA, 0xF1, 0x22, 0x9B, 0x67, 0x89, 0xED,
0x59, 0xF5, 0x8C, 0x03, 0x7B, 0x19, 0xB4, 0x71, 0xCE, 0x73, 0x5D, 0x8C, 0x14, 0xD6, 0x33, 0x47,
0x19, 0x54, 0x36, 0xEA, 0x1D, 0x62, 0xE7, 0x19, 0x7E, 0x6B, 0x05, 0x05, 0x30, 0xD6, 0x22, 0xC7,
0x3A, 0x38, 0xAE, 0x9D, 0xB2, 0xFC, 0xC7, 0x51, 0x96, 0x2F, 0xE8, 0xF5, 0x82, 0x22, 0x20, 0x53,
0x79, 0xCE, 0x75, 0x91, 0xB3, 0x08, 0x71, 0xB2, 0x0C, 0x26, 0x24, 0xE6, 0xA8, 0x73, 0x67, 0xC1,
0xCA, 0xCF, 0x00, 0xD3, 0xA4, 0xA8, 0x12, 0x9C, 0x04, 0xDF, 0xFE, 0xB0, 0x9B, 0xFC, 0x28, 0x9F,
0x2C, 0x16, 0xFD, 0x76, 0x53, 0x4C, 0x8A, 0xA2, 0x70, 0xC7, 0x86, 0x63, 0x02, 0x9E, 0x54, 0x8A,
0x0B, 0x3A, 0x84, 0x62, 0x9D, 0x54, 0x60, 0x2F, 0x3E, 0xDF, 0xFE, 0x0E, 0x85, 0xB6, 0xCF, 0xC5,
0xDD, 0xEA, 0x7D, 0xDA, 0x6E, 0x8C, 0x1D, 0xF2, 0x78, 0xC5, 0x1A, 0x50, 0x43, 0x2B, 0x00, 0x90,
0x56, 0x4C, 0x52, 0xAE, 0x06, 0x66, 0x1A, 0x96, 0x42, 0x44, 0x9A, 0xB1, 0x1C, 0xCD, 0x1E, 0xDF,
0x5E, 0x73, 0xAC, 0x06, 0x71, 0xC3, 0xDC, 0x36, 0x4C, 0x17, 0x00, 0x7C, 0x30, 0x4B, 0x1D, 0xB8,
0xD6, 0xB8, 0xAC, 0x74, 0x21, 0x04, 0x5E, 0x19, 0xA6, 0xA8, 0x07, 0xC2, 0x08, 0x4B, 0x19, 0x76,
0x2F, 0x50, 0xBE, 0xF9, 0x9B, 0x16, 0x15, 0xD5, 0x86, 0x5F, 0x5C, 0xAE, 0x52, 0xB4, 0x1C, 0xE5,
0xF9, 0x3E, 0xE8, 0xE3, 0x06, 0x7E, 0x91, 0xE5, 0x1E, 0x5B, 0x05, 0xBE, 0x7D, 0x01, 0x5D, 0xD8,
0xC7, 0x7D, 0xE0, 0x2E, 0x58, 0x5E, 0x91, 0x3E, 0x27, 0xE9, 0x67, 0x75, 0x5C, 0x5A, 0xFF, 0xBC,
0xDD, 0x57, 0x7C, 0x08, 0x38, 0x48, 0x09, 0x88, 0x79, 0x46, 0xFA, 0xA8, 0x74, 0x03, 0x58, 0xF8,
0x19, 0x5C, 0xE3, 0x4B, 0x9F, 0x13, 0x52, 0x94, 0x16, 0x59, 0xF6, 0x47, 0xC9, 0x27, 0xF5, 0x17,
0x2E, 0xD8, 0x6E, 0x55, 0xBB, 0x50, 0x64, 0x3C, 0xCA, 0x91, 0x8E, 0x18, 0x0D, 0x75, 0xA8, 0xBF,
0x51, 0x27, 0xA3, 0x5B, 0x4C, 0xA9, 0xAE, 0xF1, 0x98, 0x8B, 0x60, 0x8B, 0x74, 0x99, 0x22, 0x18,
0x57, 0xB0, 0xA3, 0x84, 0x11, 0xCC, 0xDE, 0x7E, 0xA4, 0x28, 0xEA, 0xED, 0xD0, 0x4C, 0xF8, 0xA5,
0xCF, 0x7A, 0x3D, 0x95, 0x60, 0xC1, 0x34, 0xD6, 0xD6, 0xE6, 0x38, 0xAC, 0x03, 0x57, 0x1C, 0x1C,
0x95, 0xCE, 0x57, 0x48, 0x1F, 0xD3, 0xEF, 0x1C, 0x20, 0x8A, 0x18, 0x5D, 0x53, 0x27, 0xE7, 0x26,
0x53, 0x1F, 0x93, 0x3A, 0xFA, 0xC8, 0x32, 0xFF, 0x27, 0xCD, 0x1E, 0xB5, 0xE8, 0x3C, 0x28, 0x34,
0x6A, 0x55, 0x72, 0xF8, 0x01, 0x3A, 0x49, 0xB8, 0x52, 0xB4, 0xAF, 0x89, 0x7B, 0x3F, 0xC3, 0x18,
0x73, 0x27, 0x09, 0x22, 0xB1, 0x91, 0xF8, 0xFC, 0x58, 0x68, 0xEE, 0xF1, 0xC1, 0xDE, 0x3A, 0x39,
0xD5, 0x90, 0x90, 0xF7, 0xB4, 0x8E, 0xFE, 0x86, 0xD3, 0xA7, 0xAF, 0x63, 0x47, 0x00, 0x0C, 0x3F,
0xA4, 0x93, 0x70, 0xB7, 0x94, 0xBE, 0xAA, 0x3F, 0x85, 0xBA, 0xB4, 0x6E, 0x3C, 0x52, 0xD1, 0x90,
0x75, 0xF2, 0x61, 0xE8, 0x21, 0xA7, 0xF1, 0xB5, 0x93, 0x43, 0x2D, 0xDA, 0xC9, 0x10, 0xE7, 0xCC,
0x8C, 0xCF, 0xC0, 0x10, 0x28, 0x83, 0x76, 0xF6, 0x5D, 0xD7, 0x40, 0xE3, 0xD8, 0x19, 0xB5, 0x20,
0x46, 0x3F, 0x09, 0x75, 0x6F, 0x3D, 0x61, 0x86, 0x78, 0xC4, 0x42, 0x4F, 0x81, 0xA3, 0xC5, 0x19,
0x12, 0xB5, 0xF6, 0xA2, 0x33, 0xAB, 0x20, 0x7F, 0xD1, 0xC7, 0x37, 0x46, 0x02, 0xBE, 0x6D, 0xBA,
0x23, 0x68, 0xE6, 0x03, 0x38, 0x12, 0x32, 0x4E, 0x85, 0xA8, 0x78, 0xDD, 0x0C, 0xA6, 0x4B, 0x2E,
0xAA, 0xEF, 0x37, 0x89, 0xBB, 0x36, 0xF9, 0xFE, 0x57, 0x5C, 0x99, 0x6B, 0x87, 0xA4, 0xD1, 0xD3,
0x06, 0xF8, 0x0D, 0x4B, 0x3A, 0xEE, 0x82, 0xDF, 0x49, 0x3D, 0x6D, 0x75, 0xCF, 0x05, 0x50, 0x33,
0x2E, 0xC0, 0xA6, 0xA5, 0x7A, 0x28, 0xCB, 0xE5, 0x5B, 0xFD, 0xE4, 0x3E, 0x0C, 0xE2, 0x7A, 0xAE,
0x10, 0xD0, 0x46, 0x02, 0x52, 0x9D, 0x34, 0x60, 0x5C, 0x2D, 0x64, 0xDC, 0xCF, 0x60, 0x65, 0xB6,
0x5E, 0xB9, 0x26, 0xB7, 0x47, 0xBA, 0x95, 0x1E, 0xFA, 0xC9, 0x55, 0x43, 0xD4, 0x11, 0xB5, 0x44,
0x3D, 0x41, 0x53, 0x25, 0x75, 0x55, 0x40, 0x5B, 0x75, 0x3C, 0x86, 0xD6, 0xDB, 0xF5, 0xE7, 0x1C,
0x0F, 0x0A, 0x2D, 0xD4, 0x3C, 0xA2, 0x4F, 0xD3, 0xDB, 0x9C, 0x33, 0xC9, 0x67, 0x58, 0xCC, 0xB6,
0x50, 0x44, 0x37, 0xA1, 0xC7, 0x45, 0x02, 0x09, 0xB4, 0x21, 0xC2, 0x75, 0xD1, 0x3D, 0x0D, 0x54,
0x31, 0x35, 0x32, 0xE1, 0xFD, 0xBE, 0xBC, 0xB7, 0x0B, 0xCC, 0xA6, 0x22, 0x0B, 0xEF, 0x8F, 0x68,
0x21, 0x14, 0x15, 0x8F, 0x6C, 0x7A, 0xF6, 0xD1, 0x95, 0x7A, 0xEA, 0xC4, 0xE0, 0x5C, 0xD2, 0x6F,
0xC0, 0x92, 0xC7, 0x45, 0xB2, 0xE5, 0x52, 0xC7, 0xB2, 0x3A, 0xFD, 0xA6, 0x7A, 0xB5, 0x7A, 0xD2,
0x41, 0xFB, 0x89, 0xA4, 0x52, 0x28, 0x12, 0x56, 0x56, 0x01, 0x66, 0x60, 0x26, 0x01, 0x04, 0xC7,
0x61, 0x70, 0x87, 0x4D, 0x5A, 0x03, 0xFF, 0x62, 0x1A, 0x6D, 0x0C, 0x0C, 0x3C, 0xA2, 0x4B, 0x69,
0x08, 0xCD, 0xA5, 0x0C, 0xB9, 0xF3, 0x24, 0x1B, 0x7F, 0xCB, 0x22, 0x8E, 0x30, 0x90, 0x92, 0xBA,
0x70, 0x0A, 0x9B, 0x93, 0x13, 0x90, 0x27, 0x48, 0x06, 0xDF, 0x09, 0xFA, 0x84, 0x81, 0x8B, 0x8A,
0x10, 0x76, 0x74, 0x37, 0x27, 0x4C, 0x79, 0xCA, 0x4E, 0x14, 0x21, 0x79, 0x33, 0x47, 0x01, 0xD3,
0xBB, 0xA0, 0x99, 0xE7, 0x1C, 0x2B, 0x6C, 0x61, 0x2A, 0x46, 0x0C, 0xF0, 0x11, 0x2A, 0xF4, 0x9A,
0x3E, 0x6F, 0xE3, 0x1B, 0x63, 0x70, 0xF7, 0xF2, 0xAB, 0x2E, 0x68, 0x4A, 0xDF, 0x9A, 0x67, 0xDB,
0x18, 0x19, 0xD8, 0x55, 0xFE, 0xE7, 0xE0, 0x1A, 0x26, 0x33, 0xD1, 0x70, 0xAA, 0x2A, 0xEF, 0x34,
0x91, 0xEA, 0x06, 0x15, 0x2C, 0xCD, 0x74, 0xDC, 0x50, 0x8B, 0x4F, 0xB5, 0xB6, 0xE1, 0xDB, 0xEE,
0xFC, 0x78, 0xA4, 0x75, 0xB5, 0x49, 0x0F, 0x04, 0x9F, 0x55, 0xB4, 0x17, 0x95, 0x33, 0x22, 0x1B,
0xBD, 0x07, 0xA6, 0x71, 0xEE, 0x40, 0xB2, 0xFD, 0xF9, 0xEF, 0xBA, 0xA4, 0x37, 0xD9, 0xB9, 0xA9,
0xF5, 0x94, 0x0D, 0x51, 0xCA, 0x08, 0x53, 0xC7, 0x17, 0x97, 0x3A, 0xA2, 0x82, 0xD1, 0x41, 0x7D,
0xD2, 0x4C, 0xF4, 0x3F, 0x44, 0x07, 0x13, 0x11, 0x2D, 0xC7, 0x3A, 0x3C, 0x4E, 0x96, 0x4D, 0x2B,
0x1F, 0x36, 0x7C, 0x06, 0xEC, 0xB5, 0x45, 0x2B, 0x74, 0x1D, 0x5D, 0xE6, 0xD4, 0x09, 0x41, 0xB9,
0x52, 0xD6, 0xE6, 0x43, 0xFF, 0xE4, 0xD4, 0x06, 0xB9, 0xE6, 0x20, 0x12, 0x7D, 0xE5, 0x51, 0xBB,
0x74, 0xF0, 0x2C, 0x64, 0x2C, 0x60, 0xDD, 0xC5, 0xB7, 0x68, 0xD8, 0x0A, 0x83, 0x2C, 0x9D, 0x51,
0x6B, 0x8E, 0x79, 0xC6, 0xAA, 0xDB, 0xA8, 0xE5, 0x0B, 0xDD, 0x7A, 0xDA, 0x4F, 0x7D, 0x86, 0x6C,
0x84, 0x7E, 0x54, 0xCA, 0x23, 0xC0, 0x77, 0x15, 0xDE, 0x5F, 0x83, 0xC3, 0xA3, 0x89, 0xE8, 0x4A,
0xE7, 0x26, 0x6A, 0x77, 0x65, 0x32, 0x37, 0x4C, 0x4D, 0x35, 0x85, 0xB5, 0x8E, 0x28, 0x3C, 0x4D,
0x18, 0xA8, 0x19, 0x70, 0x66, 0xA4, 0x91, 0x26, 0x68, 0x35, 0x0C, 0xCC, 0x5E, 0xEE, 0x10, 0xF3,
0x42, 0xEC, 0x80, 0x82, 0x4E, 0x84, 0xDC, 0xD1, 0x48, 0x0B, 0xAA, 0x70, 0x5A, 0x17, 0x7C, 0x9A,
0x03, 0x38, 0x40, 0x3B, 0x0E, 0xCD, 0x9C, 0xC1, 0xD5, 0x57, 0xA0, 0x87, 0x5F, 0xAB, 0x47, 0x93,
0x9D, 0xF3, 0x59, 0xCE, 0x0E, 0xAD, 0xCE, 0xA1, 0x5E, 0xFF, 0x04, 0xD1, 0x51, 0x39, 0xEC, 0x71,
0xD0, 0x9C, 0x34, 0xA5, 0x36, 0x28, 0xC7, 0xE2, 0x31, 0x7D, 0x74, 0x38, 0x21, 0xFD, 0x71, 0xAF,
0x3F, 0xED, 0xF7, 0x2F, 0xB3, 0xA9, 0x6E, 0xE7, 0x04, 0x05, 0xCB, 0xA2, 0x70, 0x00, 0x76, 0x32,
0x0D, 0x38, 0x5E, 0x10, 0x83, 0x7A, 0xD7, 0xCA, 0xAC, 0x17, 0x35, 0x4B, 0x3A, 0x37, 0x12, 0xD3,
0xE6, 0xFF, 0x80, 0x27, 0xA4, 0x00, 0x7C, 0x07, 0x07, 0xFB, 0x13, 0x9B, 0xB3, 0x25, 0x1D, 0x05,
0xC6, 0x80, 0x0E, 0x70, 0xC5, 0xC4, 0x30, 0x74, 0xF3, 0x8D, 0xE8, 0xE3, 0x3E, 0x7E, 0xBF, 0x8F,
0xEB, 0x8B, 0xFF, 0xEB, 0xE6, 0x5F, 0x31, 0xCA, 0x13, 0x9A, 0x8B, 0x52, 0x06, 0xAC, 0xD6, 0x67,
0xF4, 0x8C, 0x72, 0xE0, 0xFE, 0x46, 0x81, 0xEA, 0x4D, 0xE7, 0x81, 0x03, 0x58, 0xE8, 0x3E, 0x62,
0xAF, 0x13, 0xFF, 0xB7, 0xE7, 0x0A, 0x04, 0x5B, 0x07, 0x7D, 0x4F, 0xDF, 0xC2, 0x1D, 0x9E, 0x88,
0x19, 0x3D, 0x93, 0x7B, 0xFB, 0xAA, 0x77, 0xCD, 0x69, 0xA4, 0xC5, 0x53, 0x9C, 0x46, 0xF5, 0x3D,
0x53, 0xD2, 0x18, 0xB9, 0x0D, 0x5D, 0x14, 0x42, 0xA4, 0x20, 0x11, 0xAC, 0x98, 0x26, 0x7A, 0xC6,
0x55, 0x0C, 0xF8, 0x23, 0xF4, 0x11, 0xBE, 0x67, 0x53, 0x78, 0x79, 0xFE, 0x1A, 0x92, 0xEE, 0x76,
0x0F, 0x3E, 0xD8, 0xA7, 0xEF, 0x22, 0xE9, 0x16, 0xEE, 0xAC, 0xF8, 0x2D, 0x7B, 0x01, 0x43, 0x19,
0x03, 0xCB, 0x32, 0x66, 0x24, 0x46, 0x5B, 0x3C, 0x20, 0x79, 0x46, 0x68, 0x3D, 0xEC, 0x7E, 0x37,
0x22, 0xD3, 0x24, 0xB1, 0x9F, 0x28, 0x12, 0xC8, 0x9B, 0x57, 0xEF, 0xB7, 0x58, 0x69, 0xE5, 0x3E,
0x70, 0x85, 0xD9, 0x1A, 0xC5, 0xBD, 0xD5, 0x81, 0x7F, 0xD4, 0x49, 0x93, 0xEB, 0x14, 0xB5, 0x03,
0x15, 0xA9, 0x95, 0x8A, 0xFC, 0x1D, 0xBA, 0xB5, 0x0B, 0x96, 0x61, 0x07, 0xB5, 0xB1, 0x53, 0x44,
0xDF, 0x4F, 0x7D, 0xA5, 0xAD, 0x82, 0x2D, 0x88, 0xBB, 0x17, 0xEA, 0xAF, 0x01, 0x1B, 0x3D, 0xEB,
0x90, 0xCA, 0xA3, 0xEB, 0x1D, 0xC1, 0x9A, 0x6D, 0xE0, 0x7E, 0x0B, 0x7D, 0x8B, 0xD7, 0xC5, 0x9F,
0x41, 0xD5, 0x59, 0x49, 0xB0, 0x81, 0xE2, 0x4E, 0x39, 0x8B, 0x11, 0x0A, 0x5E, 0x23, 0xF5, 0x96,
0x83, 0x66, 0x68, 0x59, 0x78, 0xFF, 0xE4, 0xFB, 0x0A, 0x7A, 0x9E, 0x7F, 0x85, 0xF5, 0x22, 0x95,
0x7F, 0x73, 0xD0, 0xA2, 0x35, 0x54, 0x22, 0xF6, 0x4E, 0xA2, 0x1D, 0x6E, 0x3C, 0x17, 0x06, 0x16,
0x24, 0xCE, 0xAF, 0x40, 0x17, 0xD9, 0x8A, 0x6A, 0xF8, 0x45, 0xAA, 0xBB, 0xBF, 0xF8, 0xFF, 0x34,
0x12, 0xAB, 0xD1, 0xE9, 0x38, 0x13, 0x4B, 0x2D, 0x16, 0x3A, 0x4D, 0x8F, 0xAA, 0x6F, 0x6D, 0x24,
0x6D, 0xD8, 0x54, 0x8A, 0x70, 0xEF, 0x45, 0x3D, 0x4F, 0x75, 0x9A, 0x46, 0x5D, 0x52, 0x1F, 0x37,
0x60, 0x9E, 0xE2, 0x7F, 0x71, 0x87, 0xD9, 0xF3, 0x79, 0x14, 0x80, 0x91, 0x73, 0x3E, 0xAC, 0x8C,
0x44, 0x85, 0xF0, 0xE1, 0x51, 0x00, 0x3B, 0x94, 0x82, 0xE3, 0xA8, 0x17, 0xF8, 0xC2, 0xB1, 0xB7,
0xC6, 0x52, 0xFA, 0xF5, 0x7C, 0x00, 0x84, 0xE1, 0xDD, 0x3F, 0xED, 0x03, 0x7C, 0xEB, 0xA9, 0x0F,
0xC4, 0xFB, 0x3E, 0xA0, 0x35, 0xA6, 0xE6, 0x49, 0x43, 0x7A, 0xB9, 0x60, 0xD3, 0xA1, 0xF8, 0x5B,
0x55, 0xC4, 0xB6, 0x7B, 0x63, 0x0C, 0xBE, 0xB8, 0xDB, 0x18, 0xBB, 0x45, 0xB4, 0x79, 0x81, 0xFE,
0x33, 0xA9, 0xD0, 0xB7, 0x00, 0xE2, 0x4F, 0xFA, 0x10, 0xEF, 0xA1, 0x16, 0x52, 0xE8, 0x29, 0xD1,
0x20, 0x37, 0xAC, 0x8E, 0x3A, 0x88, 0x26, 0xE1, 0xD0, 0x3A, 0xAF, 0xE7, 0x2D, 0x4B, 0xE7, 0x1F,
0x58, 0x76, 0xE4, 0xB7, 0x08, 0xE9, 0x71, 0x5D, 0x2B, 0x60, 0x55, 0x16, 0xC1, 0x80, 0x2C, 0x91,
0xDE, 0x42, 0x6F, 0x32, 0x1A, 0x60, 0xFE, 0xA0, 0xE7, 0x1B, 0x20, 0x7E, 0x9B, 0xA4, 0x0A, 0x6F,
0xCA, 0xD7, 0x90, 0x89, 0x6C, 0x6A, 0x03, 0x14, 0x87, 0x77, 0x90, 0x00, 0xD8, 0x2D, 0xB1, 0x65,
0xE4, 0x01, 0x8B, 0x8F, 0x24, 0xB7, 0x3F, 0xA0, 0xF3, 0x4A, 0x8E, 0x6E, 0xC4, 0xDC, 0x84, 0xA9,
0xCC, 0x35, 0xD0, 0x7A, 0x53, 0xA4, 0xDB, 0x6D, 0xD0, 0xC1, 0x4E, 0xCF, 0xB7, 0xA1, 0x35, 0xD9,
0x10, 0x0C, 0x25, 0x58, 0x74, 0x33, 0x51, 0xA2, 0x99, 0xE8, 0x8A, 0xBF, 0xBB, 0x41, 0x6E, 0x9F,
0x29, 0x85, 0x7D, 0x38, 0x50, 0xF9, 0xA8, 0x1F, 0x91, 0xF4, 0xD9, 0x0A, 0xCC, 0x41, 0x8F, 0x53,
0x0E, 0x7E, 0x1B, 0xC4, 0x1E, 0x63, 0xF2, 0x19, 0x14, 0x70, 0xEC, 0x06, 0xAA, 0x78, 0x9D, 0x09,
0x19, 0x8C, 0xFD, 0x90, 0x2C, 0x70, 0xAF, 0x77, 0x13, 0xE6, 0xC0, 0x5D, 0x1A, 0x91, 0x05, 0xC3,
0x1E, 0xAC, 0x2C, 0xE6, 0xCC, 0x1A, 0x6D, 0x59, 0xA1, 0xF0, 0xFC, 0x91, 0xEC, 0x89, 0x93, 0x09,
0x53, 0x23, 0x15, 0x3B, 0x24, 0xE0, 0xA8, 0x8B, 0x75, 0x16, 0x4C, 0xD8, 0x66, 0xA7, 0x04, 0xA5,
0x61, 0xE9, 0x48, 0xC6, 0x05, 0xF1, 0x3F, 0x0F, 0x8B, 0x26, 0x85, 0xD7, 0xA1, 0xAF, 0x7D, 0xA3,
0x92, 0x2B, 0x3F, 0x96, 0x05, 0xAD, 0x3A, 0xDA, 0x29, 0xA5, 0x03, 0x7A, 0x04, 0x07, 0xDC, 0x21,
0xAD, 0x46, 0x29, 0x41, 0x7B, 0x3B, 0x92, 0xC7, 0x3C, 0xCB, 0x39, 0x6B, 0x25, 0x7E, 0x12, 0x35,
0xA5, 0x87, 0x1E, 0xFB, 0xBB, 0x42, 0x5B, 0xBD, 0x26, 0x72, 0xBF, 0x1C, 0xD6, 0xDA, 0x88, 0x55,
0xF5, 0x78, 0xC8, 0x71, 0xEC, 0x63, 0x80, 0x82, 0x98, 0x60, 0x7F, 0xC7, 0xB1, 0x18, 0x3C, 0x08,
0x61, 0x08, 0x9D, 0xC2, 0x5F, 0x1B, 0x4E, 0xE3, 0x02, 0x6D, 0x94, 0xF0, 0x07, 0xC4, 0x58, 0xA6,
0x1D, 0xEC, 0xE9, 0x88, 0x85, 0x18, 0xA5, 0xF6, 0x76, 0xF9, 0xE6, 0x7A, 0xC6, 0x56, 0x97, 0x8D,
0x34, 0x17, 0xA7, 0xFF, 0x22, 0xB0, 0x49, 0xD5, 0x00, 0x60, 0x28, 0xA1, 0x5D, 0xBB, 0x0A, 0x80,
0xF5, 0x26, 0x14, 0x7C, 0xAD, 0x85, 0x7A, 0x7F, 0x85, 0x50, 0x36, 0xB0, 0x6A, 0x96, 0xD7, 0x07,
0xD0, 0xF7, 0x15, 0xC7, 0xCD, 0x4D, 0xF7, 0x51, 0x9F, 0xB8, 0x1B, 0xAE, 0x59, 0x19, 0xFD, 0x71,
0xF9, 0x14, 0x48, 0x89, 0x29, 0xCB, 0x35, 0x5D, 0xE4, 0xE0, 0x22, 0xD3, 0x97, 0xBB, 0x32, 0x4D,
0xF9, 0xC7, 0x92, 0x6D, 0xA9, 0x23, 0xAF, 0x43, 0xF7, 0x0F, 0x1E, 0x1E, 0xB6, 0x00, 0x5C, 0x52,
0x9A, 0xCF, 0xA9, 0x61, 0x5C, 0x95, 0xDC, 0x6D, 0x50, 0x0E, 0xD9, 0x1A, 0x6E, 0xB3, 0x8C, 0xC6,
0xFA, 0x7F, 0x95, 0x71, 0xBE, 0xBB, 0x80, 0x5C, 0xD7, 0x2D, 0x9D, 0x05, 0x91, 0xE0, 0xB5, 0xFB,
0x67, 0x41, 0x47, 0xDB, 0xD5, 0x18, 0x1E, 0x96, 0xE6, 0x36, 0xFA, 0x2F, 0x1E, 0x7E, 0x90, 0x35,
0xCC, 0x1D, 0xE6, 0x1E, 0x19, 0x2C, 0xA7, 0xF2, 0x2E, 0x3F, 0x74, 0x17, 0xF5, 0xD4, 0x2C, 0x74,
0x77, 0xD8, 0xE7, 0x73, 0x13, 0xF0, 0xF3, 0xA0, 0xE5, 0xD8, 0x3F, 0x1B, 0x91, 0x66, 0xA0, 0x4C,
0x77, 0x19, 0x09, 0x02, 0xB4, 0xCB, 0x1B, 0xE9, 0xDC, 0xD7, 0xDB, 0x89, 0x96, 0x9A, 0xC2, 0xF1,
0xFF, 0x40, 0xAA, 0x6C, 0x8A, 0x12, 0xBC, 0x08, 0x83, 0xAF, 0xCE, 0x45, 0x1E, 0x53, 0x8E, 0x16,
0x17, 0x0E, 0x9E, 0xBF, 0xE9, 0x2A, 0x60, 0xE2, 0xF8, 0x12, 0x3B, 0x91, 0x48, 0x30, 0x05, 0x74,
0x4A, 0xD2, 0x99, 0x04, 0xCB, 0x89, 0x0C, 0xF2, 0x82, 0x6C, 0xAA, 0x87, 0x85, 0x16, 0x83, 0x13,
0x13, 0x99, 0x94, 0x90, 0x34, 0x69, 0x03, 0xA9, 0x2C, 0xF8, 0x00, 0xDF, 0xA6, 0xFD, 0xCC, 0xC9,
0x17, 0xB3, 0xDC, 0x07, 0xAA, 0xDE, 0xC3, 0xD3, 0xD8, 0x73, 0x7B, 0x1A, 0x7B, 0x36, 0xFB, 0x63,
0xCF, 0x6F, 0xA2, 0xDE, 0xE9, 0xF4, 0xB3, 0xD0, 0x2F, 0x92, 0x56, 0x7B, 0xFD, 0x79, 0x0C, 0xC9,
0x33, 0x1E, 0x83, 0xC6, 0x75, 0x5C, 0x47, 0x04, 0xA4, 0xF8, 0xFB, 0x55, 0x7F, 0xF0, 0x32, 0x06,
0x39, 0x93, 0x4A, 0x0C, 0x0D, 0x45, 0x78, 0x06, 0x4E, 0x6C, 0xD0, 0x47, 0x15, 0xEC, 0x00, 0xEF,
0x75, 0x97, 0x06, 0x9F, 0x04, 0xB4, 0x24, 0xD1, 0x3F, 0xA8, 0x93, 0x33, 0x7F, 0xDA, 0xAF, 0xD7,
0x46, 0x56, 0x16, 0x01, 0x96, 0x82, 0xE8, 0x5E, 0x42, 0x0F, 0x49, 0x8E, 0x06, 0xA2, 0x2C, 0x11,
0xE7, 0x1B, 0xF5, 0x23, 0x1C, 0x75, 0x6E, 0x05, 0x63, 0xA9, 0xC7, 0x43, 0xE3, 0x94, 0xC9, 0xD4,
0x49, 0x53, 0x36, 0xF5, 0x1B, 0x20, 0x21, 0xBF, 0xDE, 0xEB, 0x7B, 0xFE, 0x5C, 0x78, 0x87, 0xB5,
0x55, 0xCA, 0x6B, 0x39, 0xDB, 0xCB, 0x89, 0x58, 0x9E, 0xDE, 0x9F, 0xB7, 0x7F, 0x7D, 0x78, 0x3C,
0xA6, 0xE3, 0xB1, 0xF1, 0x2E, 0xBE, 0x92, 0x0D, 0xBF, 0xF7, 0x9B, 0xA8, 0x3D, 0xA8, 0x07, 0x0B,
0x1C, 0x22, 0x1B, 0x7A, 0x23, 0x01, 0xF5, 0x01, 0x5A, 0xF6, 0x14, 0x06, 0x40, 0x02, 0x05, 0x60,
0x54, 0x74, 0x87, 0x76, 0x7E, 0xA2, 0x50, 0x3C, 0x95, 0xA1, 0x4B, 0xA1, 0x74, 0xF3, 0x48, 0x39,
0xCE, 0x26, 0x04, 0xE5, 0xE0, 0xEF, 0x6E, 0x06, 0x96, 0x4C, 0x92, 0xBD, 0x09, 0x30, 0x24, 0x2D,
0xF6, 0x37, 0x7E, 0x67, 0xEE, 0xE8, 0x31, 0xDF, 0x38, 0x93, 0x43, 0x2A, 0xF7, 0xB8, 0x78, 0xC8,
0x7E, 0xC0, 0xFF, 0x28, 0x96, 0x88, 0xCF, 0xA3, 0x70, 0xDE, 0xE5, 0x21, 0xCA, 0x82, 0xFC, 0xCC,
0x46, 0xD6, 0x40, 0x6A, 0xC5, 0x5D, 0xB2, 0x00, 0xCA, 0x67, 0x43, 0x8D, 0xE9, 0x40, 0x8E, 0x2D,
0x0B, 0xD1, 0x46, 0xFA, 0xA1, 0x8A, 0x99, 0x37, 0x85, 0x47, 0xF9, 0xA6, 0x32, 0x1F, 0x71, 0xE2,
0x82, 0x0C, 0x4B, 0xBC, 0x07, 0xBC, 0x2C, 0xA8, 0x36, 0x64, 0x35, 0x85, 0xFA, 0x75, 0x5C, 0x43,
0x2E, 0xB8, 0xAF, 0x36, 0x10, 0x12, 0xA0, 0x46, 0x70, 0x71, 0xFA, 0xC6, 0xC2, 0x4E, 0xDC, 0x9E,
0xCB, 0x00, 0x3C, 0xB0, 0x69, 0x01, 0xE4, 0x9C, 0x9D, 0x84, 0x5A, 0x81, 0x9C, 0x7B, 0x11, 0xCF,
0xB7, 0x77, 0xCA, 0x7F, 0xB6, 0x20, 0x27, 0x1B, 0x67, 0x62, 0xBB, 0xFA, 0x68, 0xD0, 0x3D, 0x3A,
0x0D, 0x74, 0xF3, 0xFD, 0x96, 0x58, 0xA3, 0x6F, 0x3E, 0x33, 0xD9, 0x3F, 0x96, 0x44, 0x83, 0x26,
0xE9, 0xAC, 0x41, 0xF6, 0x80, 0x53, 0x54, 0x5E, 0x9D, 0x03, 0x7A, 0xEF, 0x40, 0xF6, 0x19, 0xAA,
0x17, 0x0D, 0x56, 0x39, 0x40, 0xF2, 0x53, 0xB7, 0x33, 0x93, 0x71, 0x1E, 0x65, 0xB9, 0xB6, 0x4E,
0x8B, 0x92, 0x6B, 0x4D, 0xEE, 0x0A, 0xC7, 0xA9, 0xF7, 0x44, 0x12, 0x4B, 0x8E, 0x46, 0x91, 0xB3,
0x3A, 0x65, 0x54, 0x87, 0x41, 0xA1, 0x40, 0x22, 0xBA, 0xCD, 0x29, 0x94, 0xFD, 0xA5, 0x83, 0x5E,
0xA4, 0x7C, 0xAC, 0x09, 0x21, 0xDE, 0x19, 0x4F, 0x6D, 0xD7, 0xA5, 0xFF, 0x31, 0xF2, 0x50, 0xF7,
0x64, 0xDC, 0x3C, 0x79, 0x1F, 0xBC, 0xCD, 0x97, 0xA7, 0x00, 0xD5, 0xD4, 0x41, 0x97, 0x7A, 0x22,
0x15, 0xCB, 0xDC, 0xC1, 0x5E, 0xB5, 0xB2, 0xF9, 0x23, 0x66, 0xA6, 0x75, 0x97, 0xC1, 0xA9, 0x8E,
0xEC, 0x9E, 0xD4, 0x23, 0x53, 0xD5, 0x44, 0xA4, 0x93, 0x31, 0xFD, 0x1C, 0xB2, 0x70, 0xF2, 0x84,
0x6C, 0xBA, 0xA7, 0xE0, 0x7E, 0x6A, 0xEC, 0xE3, 0x3D, 0x35, 0x86, 0x6E, 0x2A, 0x39, 0x4B, 0xB0,
0x96, 0x74, 0x0B, 0x3F, 0x9F, 0xD5, 0x78, 0x5F, 0x4D, 0x95, 0x6E, 0x1B, 0x38, 0xBF, 0xAA, 0xA9,
0x93, 0x88, 0x9D, 0xF8, 0xFD, 0x7A, 0x92, 0x20, 0xB8, 0xDE, 0xC9, 0x5E, 0xD2, 0xD0, 0x47, 0xE2,
0x6A, 0xDE, 0x71, 0x01, 0x8C, 0x86, 0xBD, 0x2D, 0x93, 0x34, 0x8F, 0x65, 0x8B, 0xB4, 0x86, 0x00,
0x25, 0xA9, 0x1B, 0xA9, 0x20, 0xD4, 0xB2, 0xC5, 0x99, 0x68, 0xEB, 0x73, 0xB2, 0x1C, 0xB3, 0x01,
0x32, 0xEC, 0x8D, 0x4B, 0x1E, 0xE6, 0x3A, 0xF5, 0x38, 0x20, 0xF3, 0x4A, 0x8E, 0xFA, 0xA3, 0x0A,
0x15, 0xF3, 0x46, 0x16, 0xDC, 0xED, 0xE5, 0x31, 0xF6, 0xBD, 0x07, 0xE6, 0xC9, 0x47, 0x1E, 0x0F,
0x41, 0x77, 0xA4, 0xE5, 0x34, 0xCA, 0x08, 0x47, 0x9E, 0x33, 0x9B, 0x35, 0x68, 0xFB, 0xFA, 0xC4,
0x46, 0xEF, 0xDF, 0xFD, 0x37, 0xE3, 0x4C, 0x57, 0x5A, 0x57, 0x91, 0x66, 0x73, 0x7A, 0x37, 0xD3,
0xB7, 0xEF, 0xAD, 0x2D, 0x8D, 0x50, 0xDC, 0x10, 0xBB, 0x77, 0x81, 0x76, 0x5C, 0x00, 0x2B, 0x75,
0x58, 0xEB, 0x83, 0xF6, 0xF0, 0x78, 0x19, 0xE4, 0x7B, 0x96, 0xA3, 0xA1, 0x1C, 0x59, 0xCA, 0x5B,
0x38, 0x58, 0xB0, 0x39, 0x6B, 0x2E, 0xA2, 0x8E, 0x57, 0x11, 0x2B, 0xC3, 0x04, 0xFC, 0x2A, 0x93,
0x69, 0x0F, 0x6A, 0x7E, 0x6F, 0xCE, 0x29, 0xEB, 0x55, 0xB2, 0xED, 0xB2, 0xF1, 0x20, 0xC9, 0x83,
0xE5, 0xF0, 0x2C, 0x97, 0x2D, 0x84, 0x85, 0x62, 0x47, 0x6D, 0x02, 0xA7, 0xE9, 0x7E, 0xFE, 0xC9,
0x1B, 0xEE, 0xC6, 0x98, 0xF6, 0xC6, 0x9A, 0xE2, 0xEC, 0x12, 0x93, 0x93, 0x73, 0xEB, 0x32, 0xC5,
0xE8, 0xFE, 0x7D, 0x1C, 0x0F, 0x45, 0xCD, 0x7C, 0xBC, 0xEC, 0xE3, 0x4A, 0xDE, 0x1F, 0x53, 0xEB,
0x61, 0xFC, 0x74, 0x72, 0xB3, 0x02, 0x75, 0x1A, 0x14, 0xA8, 0x53, 0xD4, 0xAD, 0xE0, 0x43, 0x68,
0x23, 0x50, 0x7B, 0x10, 0x39, 0x41, 0x45, 0x0E, 0x6D, 0x5E, 0xA5, 0xBF, 0x28, 0x9F, 0x74, 0xBD,
0xBB, 0x05, 0x8F, 0x09, 0x3A, 0x36, 0x5A, 0xB9, 0x0E, 0xEA, 0xF0, 0x72, 0x9C, 0xB7, 0x6E, 0xD8,
0x2B, 0x32, 0x9D, 0xFF, 0x79, 0xDD, 0x43, 0x03, 0xCF, 0xEC, 0x89, 0x10, 0xB3, 0x56, 0xB9, 0x5D,
0x1C, 0x4F, 0x19, 0xE8, 0x99, 0x6C, 0x3A, 0x47, 0x0F, 0xAD, 0xAB, 0xCD, 0xAB, 0x39, 0x11, 0x07,
0x96, 0x2C, 0x3F, 0x2D, 0x46, 0x65, 0x72, 0x08, 0xDC, 0xE4, 0x9A, 0x93, 0xAD, 0x63, 0xFD, 0xBF,
0xB8, 0x3F, 0xA2, 0xB4, 0xC6, 0x20, 0xFF, 0x7B, 0xB7, 0x4B, 0xFC, 0x20, 0x20, 0x4F, 0x40, 0x77,
0x97, 0x5F, 0x40, 0x7A, 0x6B, 0x21, 0xCF, 0x89, 0x70, 0x7F, 0x4C, 0xA4, 0x27, 0x0C, 0x3B, 0x3C,
0xB2, 0x28, 0xD4, 0x1D, 0xBA, 0x69, 0x76, 0x06, 0xBA, 0x78, 0x2F, 0xE4, 0xC2, 0xEF, 0xBC, 0x7B,
0x7D, 0xC9, 0x21, 0x2B, 0x80, 0x8E, 0x39, 0xC6, 0x67, 0xCB, 0x43, 0x81, 0x4C, 0x56, 0xDC, 0x62,
0xE1, 0xF0, 0x39, 0x74, 0x79, 0xA9, 0xF8, 0x3B, 0x9D, 0x24, 0x2F, 0x16, 0x62, 0xF7, 0x6F, 0xA1,
0xF9, 0xA6, 0x52, 0xFC, 0x39, 0xF8, 0xEA, 0x05, 0x3E, 0xAB, 0xC7, 0x76, 0xC0, 0x57, 0xCC, 0x8D,
0x75, 0xA4, 0xC3, 0x08, 0x7A, 0xB6, 0xA6, 0x8E, 0xAD, 0x6F, 0x81, 0xAC, 0xD2, 0xA3, 0x62, 0xCE,
0xEC, 0xE2, 0x79, 0xB0, 0x91, 0xCB, 0x5E, 0x16, 0xF1, 0xA7, 0xAA, 0xA5, 0x37, 0x3F, 0x49, 0xBA,
0xAE, 0x49, 0xB2, 0x66, 0x6E, 0x97, 0x93, 0xDE, 0xFE, 0x2D, 0x01, 0x5D, 0x5C, 0xE4, 0x9C, 0x59,
0x76, 0xA8, 0x60, 0x25, 0x62, 0x32, 0xAE, 0xC3, 0x36, 0x40, 0x14, 0xC1, 0x5F, 0x4A, 0x9E, 0xC3,
0xB5, 0x31, 0xEF, 0x8B, 0x30, 0xCF, 0xBA, 0x0A, 0xEC, 0xA9, 0x3D, 0xD1, 0x73, 0x9E, 0x73, 0xE1,
0xC6, 0x36, 0x13, 0x69, 0xDB, 0x6F, 0xB1, 0x33, 0x8C, 0x6E, 0x54, 0xE8, 0x5F, 0x9B, 0x2D, 0xE6,
0x84, 0x5E, 0x67, 0xA8, 0xAE, 0xE0, 0xCD, 0x52, 0x89, 0x0D, 0x7B, 0x1D, 0x63, 0xD1, 0x87, 0xE3,
0x4A, 0x79, 0xA2, 0x1C, 0xCD, 0xE6, 0xEC, 0xAD, 0xB7, 0xA8, 0xF4, 0x1B, 0x4C, 0x4A, 0x96, 0x15,
0x71, 0xBE, 0xD5, 0xC1, 0x26, 0x3F, 0xE9, 0xCB, 0x26, 0x0F, 0x76, 0xD6, 0x2B, 0x76, 0x8F, 0x41,
0x9B, 0x66, 0x43, 0xDC, 0x6C, 0xF8, 0x2D, 0xBA, 0xD7, 0xF0, 0x96, 0x4B, 0xB2, 0xE4, 0x8D, 0xBE,
0x97, 0xD5, 0x7F, 0x45, 0x03, 0xEB, 0x7E, 0x83, 0x94, 0x3A, 0xA4, 0xE0, 0xAC, 0x35, 0x6A, 0xC4,
0xAA, 0xB7, 0xD4, 0xC3, 0x4F, 0xAD, 0x36, 0x8B, 0xAB, 0x8E, 0x99, 0xD3, 0x57, 0xF1, 0x69, 0x3E,
0x21, 0x0B, 0x9D, 0x2D, 0xFB, 0x7C, 0x88, 0x50, 0x1C, 0xD0, 0x43, 0x23, 0x5C, 0xAC, 0xCE, 0xBD,
0x82, 0x0E, 0xE5, 0x2F, 0xE5, 0xBD, 0x33, 0x23, 0xE9, 0xA8, 0x9B, 0x6F, 0xF8, 0xD2, 0xF3, 0x4A,
0xE2, 0xD7, 0x26, 0x5E, 0x71, 0x5B, 0x3D, 0xEA, 0x91, 0xF9, 0xF8, 0x82, 0x63, 0x65, 0x56, 0xE9,
0x80, 0x29, 0xFC, 0x13, 0x3B, 0xCD, 0x95, 0x0F, 0x2F, 0x37, 0x8A, 0xC8, 0x50, 0x09, 0x44, 0xF1,
0x4A, 0x6D, 0x51, 0x48, 0xC0, 0x40, 0x82, 0xB7, 0x38, 0x1C, 0xFB, 0x05, 0x7A, 0x7C, 0xF2, 0xDB,
0xBE, 0x9D, 0xC6, 0xD2, 0x0C, 0x3B, 0x1D, 0x67, 0x73, 0xE5, 0xB3, 0xD3, 0x13, 0x3C, 0x40, 0x72,
0x7C, 0x17, 0x69, 0x6C, 0x46, 0x6F, 0x35, 0x60, 0x2A, 0xE4, 0x98, 0xCF, 0xD7, 0x4B, 0x8C, 0xE4,
0x81, 0x4A, 0xA4, 0xA7, 0x30, 0x1B, 0xA2, 0xB3, 0x38, 0x4A, 0xA5, 0xE7, 0x4D, 0x7B, 0x5B, 0xB9,
0x8E, 0x37, 0x0B, 0xC8, 0xB0, 0xE6, 0x8A, 0x55, 0x29, 0xAB, 0x38, 0xCB, 0xA1, 0x63, 0x3E, 0x79,
0x17, 0x9C, 0x3E, 0x9B, 0xF9, 0x50, 0x9D, 0xB7, 0xDC, 0xD8, 0x95, 0x2C, 0xB1, 0xBE, 0x45, 0x07,
0xD9, 0xC5, 0xBB, 0x6B, 0x43, 0xC0, 0x4B, 0xD9, 0xE4, 0xCD, 0xCB, 0x1D, 0x12, 0x32, 0x2E, 0xD6,
0x6A, 0x4E, 0xEA, 0x3A, 0x1E, 0x06, 0x2D, 0x6A, 0xC9, 0x08, 0xB7, 0x74, 0x7D, 0x74, 0xD3, 0xC9,
0xD5, 0xB8, 0x5E, 0x99, 0xEF, 0x7B, 0x02, 0xD5, 0xC6, 0x3F, 0xFA, 0xDD, 0x01, 0x04, 0x8B, 0x4D,
0x3E, 0xCF, 0xB1, 0x9E, 0x5D, 0x3D, 0xDA, 0x69, 0xDD, 0x9D, 0x6F, 0x77, 0xB0, 0xD3, 0x92, 0xFB,
0xC9, 0x9D, 0xBD, 0xA4, 0xEB, 0x83, 0x9D, 0x97, 0x46, 0x01, 0x74, 0x39, 0xE1, 0xB9, 0x49, 0x34,
0xED, 0xD7, 0xF4, 0x59, 0x4C, 0x73, 0xC1, 0x52, 0x05, 0xF9, 0x3E, 0x9E, 0x51, 0x65, 0xEA, 0xA0,
0x31, 0xB7, 0x5F, 0x6A, 0x63, 0x5E, 0xCA, 0x7B, 0x9E, 0x26, 0x50, 0x76, 0x3A, 0xFC, 0xC4, 0xAF,
0x27, 0xBF, 0x0C, 0xF4, 0x3F, 0x08, 0xB4, 0xF2, 0xE9, 0xE4, 0xBD, 0xB6, 0x39, 0xE8, 0x46, 0x83,
0xF6, 0x90, 0x6C, 0x79, 0xBC, 0xA9, 0x07, 0x6B, 0x34, 0xAB, 0x3C, 0xEA, 0xF5, 0x40, 0x7C, 0x82,
0x1A, 0x02, 0x6F, 0xF0, 0x56, 0xAD, 0x71, 0x3E, 0x78, 0x3F, 0xF4, 0x50, 0xB4, 0xEB, 0x49, 0x50,
0x75, 0x72, 0x62, 0x55, 0x2B, 0x06, 0x8D, 0x7C, 0xE6, 0xDB, 0x6A, 0x97, 0x77, 0xF6, 0x68, 0x29,
0x93, 0x1C, 0x9E, 0x13, 0xB4, 0x4F, 0x4E, 0xCA, 0xD6, 0x94, 0xC5, 0x8B, 0xA7, 0x3B, 0x07, 0xF2,
0x45, 0xCE, 0x51, 0x12, 0xC9, 0xE3, 0x18, 0xBD, 0xBB, 0x47, 0xFD, 0x4C, 0x9B, 0xA4, 0x61, 0xD1,
0x2D, 0xEA, 0xC5, 0xE5, 0x7C, 0xF1, 0x77, 0xF9, 0x69, 0x97, 0x07, 0x01, 0xEC, 0xCC, 0x23, 0x7A,
0xDB, 0xFF, 0x00, 0x65, 0x8F, 0x21, 0x4F, 0x03, 0x31, 0x18, 0x86, 0xBF, 0xBB, 0x8E, 0x54, 0x5C,
0x48, 0x27, 0x70, 0x64, 0x29, 0x02, 0xBB, 0x15, 0x81, 0x98, 0xE8, 0xF5, 0x2E, 0x99, 0x44, 0x0C,
0x31, 0x2C, 0x9A, 0x9F, 0x80, 0x28, 0x47, 0x61, 0x62, 0x92, 0x7F, 0x40, 0xF8, 0x09, 0x88, 0x89,
0x89, 0xB1, 0xEB, 0x6E, 0x02, 0x7B, 0x28, 0x24, 0xF5, 0x98, 0x12, 0x4A, 0x52, 0x71, 0xAC, 0x2C,
0x33, 0x90, 0xF0, 0xBA, 0xC7, 0xBC, 0x79, 0x1E, 0x40, 0xBA, 0xC0, 0x8E, 0xEA, 0x14, 0xF2, 0x18,
0x24, 0xA9, 0x7C, 0x81, 0x73, 0x00, 0xD8, 0x83, 0x6B, 0xC8, 0x8C, 0x90, 0x19, 0xB9, 0x87, 0x3A,
0x59, 0xDE, 0x06, 0x29, 0x42, 0x35, 0x30, 0x3B, 0x67, 0xC3, 0xF0, 0x19, 0x7C, 0x1B, 0xA6, 0x78,
0x5D, 0x94, 0x0D, 0x35, 0xBD, 0x72, 0x3D, 0xA3, 0xC9, 0xEA, 0xAB, 0x11, 0x24, 0xDF, 0x7F, 0x09,
0x6F, 0xC3, 0x11, 0x4F, 0xF4, 0x2C, 0xAA, 0x01, 0x5B, 0xD6, 0x70, 0xDE, 0xE7, 0x99, 0x27, 0xF5,
0xE6, 0x0F, 0x0F, 0x54, 0xC6, 0xD0, 0x87, 0x67, 0x43, 0x65, 0xA7, 0x1B, 0x86, 0x76, 0xD4, 0xC5,
0xAF, 0xCF, 0x75, 0xA8, 0x99, 0x41, 0x06, 0x0E, 0x8F, 0x66, 0x4E, 0xCE, 0x53, 0xDE, 0xE9, 0xB6,
0x5A, 0x30, 0x8A, 0xC2, 0x32, 0x78, 0x27, 0x0E, 0xB6, 0x26, 0xB9, 0x24, 0xB1, 0x49, 0x91, 0xED,
0x41, 0x94, 0x2F, 0x90, 0x15, 0x89, 0x76, 0x29, 0xF4, 0xD8, 0xDD, 0xCA, 0xCC, 0x69, 0xAC, 0xBB,
0x82, 0xCB, 0xE9, 0x03, 0xD6, 0x73, 0x32, 0xB6, 0x7D, 0x80, 0xBF, 0x3A, 0x74, 0x72, 0xFE, 0xF8,
0xDE, 0xC9, 0x14, 0x24, 0x63, 0xEB, 0x65, 0x1F, 0x92, 0x9B, 0x6F, 0x54, 0x4B, 0x11, 0xE5, 0x71,
0x54, 0x73, 0xAC, 0xCA, 0xCA, 0xD3, 0x93, 0x95, 0xF5, 0x57, 0x0C, 0xE0, 0x02, 0x4A, 0x55, 0xBA,
0x27, 0x76, 0x89, 0xD4, 0x6F, 0xDA, 0xBF, 0x6A, 0x38, 0xA5, 0xCD, 0xF5, 0xDA, 0x31, 0xB5, 0x0B,
0xDB, 0x1D, 0x03, 0xD1, 0xB1, 0x87, 0x02, 0xC8, 0xC6, 0x13, 0x19, 0xB7, 0xC8, 0x26, 0x95, 0x49,
0x29, 0x76, 0xCD, 0x0F, 0xC5, 0x7C, 0x4D, 0x8C, 0xDE, 0xD6, 0x79, 0xEE, 0x21, 0x69, 0x89, 0x4E,
0x99, 0x96, 0x2A, 0xE0, 0xD6, 0x40, 0x85, 0xE4, 0x64, 0xD1, 0x45, 0x81, 0x3A, 0xE6, 0xC5, 0x45,
0x17, 0x86, 0x31, 0x33, 0x87, 0xD6, 0x00, 0xD7, 0x05, 0x8C, 0x56, 0xBE, 0x40, 0x26, 0x5E, 0x68,
0xE1, 0x66, 0xDD, 0xA0, 0x93, 0x85, 0x17, 0xC6, 0xED, 0x68, 0x48, 0x79, 0xD0, 0xBA, 0x68, 0x16,
0xD6, 0xA6, 0xCD, 0x42, 0x05, 0x52, 0xA0, 0x40, 0x71, 0x8B, 0x14, 0x90, 0x0B, 0x04, 0x85, 0xDB,
0x8E, 0x3E, 0x52, 0x1A, 0xDC, 0xAA, 0xA8, 0x80, 0x9A, 0xB2, 0xE0, 0xB8, 0x80, 0xD0, 0x9A, 0x96,
0x2C, 0xE9, 0x36, 0x41, 0x6B, 0xCA, 0xE6, 0x44, 0xFC, 0x64, 0x92, 0xA7, 0xCF, 0xF3, 0x1E, 0xCE,
0x9F, 0xAD, 0x26, 0xB6, 0x23, 0xA5, 0xB2, 0xBE, 0x4F, 0x33, 0xDF, 0x47, 0x9E, 0xF3, 0x9E, 0xF7,
0xF7, 0x79, 0x7F, 0x68, 0xA5, 0x9E, 0x55, 0x4A, 0x2D, 0xE2, 0xA5, 0x6B, 0xA5, 0x7C, 0x8B, 0x1F,
0xC2, 0x4A, 0xED, 0xFC, 0x09, 0xAC, 0x1D, 0x3C, 0x6B, 0x6D, 0x1A, 0x6D, 0x9F, 0x28, 0x83, 0xDE,
0x6B, 0xD4, 0xA8, 0x5E, 0x50, 0x59, 0x8A, 0xAB, 0x4B, 0xA5, 0x22, 0x3B, 0xF2, 0x8A, 0x54, 0x8D,
0x2B, 0xA9, 0x7C, 0x98, 0x94, 0x9E, 0x8A, 0x1B, 0xBF, 0x0A, 0x3A, 0xD5, 0x7A, 0xE3, 0x4A, 0x1F,
0xE2, 0x56, 0x9F, 0xB7, 0x2B, 0xD5, 0x2D, 0x29, 0x55, 0x98, 0x5C, 0x25, 0x51, 0xB9, 0xBB, 0xBA,
0xB1, 0xB6, 0xD2, 0xD6, 0xB6, 0xAA, 0x58, 0xD9, 0x54, 0xA6, 0xD4, 0x2A, 0xAE, 0xC3, 0x34, 0x6C,
0x95, 0xF2, 0x7A, 0x7C, 0x5B, 0xD8, 0x1A, 0x57, 0xB4, 0x2A, 0xBE, 0xF1, 0x15, 0xC5, 0x0F, 0xFD,
0x5E, 0x1D, 0x51, 0x56, 0x7D, 0x59, 0x99, 0x3C, 0x4E, 0xF5, 0x8D, 0xE7, 0xCB, 0xCC, 0xDA, 0x26,
0xE1, 0xED, 0x78, 0xB3, 0xC7, 0xF1, 0xDA, 0xDA, 0x2E, 0xBE, 0xD5, 0xB4, 0x49, 0xD9, 0x2F, 0xC4,
0xCD, 0xE2, 0x21, 0x10, 0xA1, 0xBC, 0x41, 0x16, 0xAA, 0x70, 0xC9, 0xA8, 0xE2, 0x79, 0x01, 0xCA,
0xC2, 0x0E, 0x1F, 0x5A, 0x55, 0x60, 0x19, 0x53, 0xC6, 0x75, 0x5C, 0x07, 0xAD, 0xB1, 0x4F, 0xF5,
0x89, 0x2D, 0x0B, 0x92, 0x94, 0xAA, 0x23, 0x49, 0xAE, 0x96, 0xB2, 0x52, 0xC5, 0x36, 0x57, 0xDE,
0x98, 0x92, 0xD0, 0x47, 0xF0, 0x4A, 0xF0, 0xC2, 0xA7, 0xCA, 0xE2, 0xB5, 0xAE, 0xF6, 0x73, 0xA8,
0x27, 0x87, 0x54, 0xB4, 0xFD, 0x3C, 0x38, 0x14, 0x90, 0x43, 0x2D, 0x98, 0xB1, 0xA0, 0x34, 0xD8,
0x18, 0x35, 0xB8, 0x82, 0x87, 0x19, 0x79, 0xB7, 0x70, 0x48, 0x81, 0x43, 0xEE, 0x43, 0x0F, 0x1F,
0x86, 0xB6, 0x03, 0xD3, 0xF9, 0xAD, 0x57, 0xFC, 0x7F, 0xFC, 0x66, 0xCB, 0x78, 0x3C, 0xD1, 0xC4,
0xAD, 0xEA, 0x70, 0xEB, 0x42, 0xD0, 0xAA, 0x87, 0x7C, 0xDE, 0x8E, 0x93, 0x82, 0x17, 0x9D, 0x8A,
0xB7, 0xBF, 0xA2, 0x78, 0x2E, 0x1C, 0x40, 0xE5, 0xA6, 0x52, 0x6B, 0x61, 0xAF, 0x32, 0x65, 0x6F,
0x14, 0x69, 0x44, 0x2E, 0xAF, 0xCE, 0x29, 0x3E, 0x7B, 0x1A, 0xD7, 0x57, 0x38, 0x2D, 0x0E, 0xB9,
0xE9, 0xF7, 0x7E, 0x1D, 0xB5, 0x87, 0x54, 0x82, 0xBB, 0x0C, 0xB8, 0x61, 0xB0, 0x57, 0x82, 0x57,
0xDC, 0x07, 0x65, 0xDC, 0x24, 0x20, 0x08, 0xDC, 0x08, 0xC6, 0xD5, 0x96, 0x0B, 0xF8, 0xE0, 0x94,
0xB2, 0xA3, 0x67, 0x7B, 0x95, 0x54, 0x90, 0x88, 0xFC, 0xCD, 0x49, 0x78, 0x21, 0x5B, 0x8E, 0xA4,
0x19, 0xEC, 0x03, 0x4D, 0x38, 0x00, 0x08, 0xC9, 0x6C, 0x5A, 0x60, 0xDF, 0x93, 0x3A, 0x35, 0xAF,
0x54, 0xD1, 0x46, 0xBD, 0x2B, 0xD8, 0x5C, 0x83, 0x4F, 0x45, 0xCA, 0x05, 0x70, 0x5C, 0x5C, 0x49,
0x49, 0x60, 0x11, 0xFE, 0x5E, 0xAB, 0xF0, 0x23, 0xBF, 0x63, 0x99, 0x84, 0x5B, 0x83, 0x6E, 0xE5,
0x59, 0x7C, 0x83, 0xDD, 0x85, 0x55, 0x86, 0xAF, 0xDC, 0xB1, 0x8E, 0xAF, 0xC2, 0x1D, 0x9D, 0xEC,
0xE4, 0x02, 0xE4, 0x4D, 0xB0, 0xF3, 0x6A, 0x1D, 0xBB, 0xB1, 0xDD, 0x63, 0xB8, 0x35, 0x83, 0xF4,
0xB2, 0xC1, 0x69, 0x35, 0x85, 0x44, 0xB1, 0xE1, 0x1D, 0xEB, 0x86, 0xDB, 0x5C, 0xC5, 0x6B, 0xB9,
0xBE, 0xDA, 0x8C, 0xF9, 0xBD, 0x11, 0x9E, 0xC6, 0xA7, 0x46, 0xD8, 0x42, 0x08, 0xBD, 0x2A, 0x55,
0x00, 0xCD, 0xC2, 0xDD, 0x6D, 0x5C, 0x17, 0xA5, 0xDA, 0x0C, 0x5A, 0xAC, 0xBC, 0xE4, 0x0D, 0xD8,
0xCF, 0x80, 0x86, 0xE2, 0x50, 0x92, 0x9A, 0x32, 0xDB, 0x80, 0xB0, 0xB6, 0x8B, 0xD2, 0x52, 0x11,
0xCB, 0x24, 0x37, 0x96, 0xCA, 0x62, 0x7B, 0x1C, 0xDE, 0xB3, 0x9D, 0xB1, 0x3C, 0x01, 0x09, 0x82,
0xBA, 0xF2, 0x3D, 0xE5, 0x4E, 0x59, 0x1A, 0x83, 0x82, 0x4C, 0xAC, 0xA7, 0x00, 0x39, 0x94, 0x94,
0x85, 0x5C, 0xC7, 0x95, 0xEC, 0xA5, 0x11, 0x5A, 0x9F, 0xA5, 0x16, 0x7B, 0x60, 0x07, 0x10, 0x54,
0x40, 0x2E, 0xF8, 0xC6, 0x1B, 0xC0, 0xAD, 0xF1, 0x44, 0x9F, 0x59, 0x48, 0xA8, 0x2E, 0x6C, 0x8C,
0x6D, 0xA8, 0xF0, 0x29, 0x5E, 0x7D, 0x40, 0x8D, 0x8F, 0x8F, 0xF5, 0x71, 0x49, 0x95, 0x57, 0xCF,
0x9A, 0xFC, 0x59, 0xA7, 0xF3, 0xD1, 0x0F, 0x21, 0x16, 0x5C, 0x96, 0x2B, 0xFB, 0xE7, 0x16, 0xFC,
0xC7, 0xAA, 0xBA, 0x02, 0x35, 0x05, 0x88, 0x02, 0xB7, 0x2C, 0xB8, 0x1E, 0x74, 0x81, 0x6D, 0x0A,
0x28, 0xFE, 0x45, 0x28, 0xD7, 0xF4, 0x27, 0xA4, 0xBA, 0x93, 0x31, 0x1E, 0x6D, 0x36, 0x24, 0x57,
0xBC, 0x9D, 0xEF, 0xE0, 0x09, 0xE0, 0x0B, 0xBA, 0x68, 0xC4, 0x05, 0xC9, 0x5F, 0x42, 0x34, 0x6B,
0x38, 0xD5, 0x29, 0x70, 0x3D, 0x5B, 0xC6, 0xC9, 0x8A, 0x48, 0x8E, 0x24, 0x32, 0xC4, 0xAD, 0x23,
0x8C, 0xC8, 0x1B, 0x70, 0x4C, 0xBF, 0xC7, 0xB9, 0x83, 0x3E, 0xA4, 0x12, 0xE0, 0x38, 0x61, 0xE7,
0x0F, 0x90, 0x8D, 0xA2, 0xDE, 0x88, 0x64, 0x1F, 0x96, 0xB5, 0x37, 0xF9, 0xE6, 0x0F, 0xF2, 0x3E,
0xEE, 0x7D, 0xA2, 0xF6, 0xB9, 0x8A, 0x0D, 0xDA, 0x59, 0x1F, 0x43, 0x82, 0x05, 0x09, 0xC3, 0x21,
0x12, 0xEA, 0x0E, 0x3D, 0x56, 0x96, 0x9A, 0x1E, 0xBB, 0x85, 0x70, 0x18, 0x51, 0x93, 0x51, 0xEB,
0x2E, 0x5D, 0x83, 0x46, 0x8C, 0x33, 0x30, 0x3E, 0xB4, 0x15, 0xBD, 0xCE, 0x40, 0x63, 0xB3, 0x25,
0xFC, 0x88, 0xBB, 0x11, 0x6A, 0x61, 0xF1, 0x5D, 0x9B, 0xD8, 0x3C, 0xB1, 0xE7, 0xED, 0x30, 0x6D,
0xF3, 0x88, 0x9F, 0xAB, 0xA8, 0x7C, 0x42, 0xA9, 0x41, 0xA7, 0x70, 0x6F, 0xD5, 0xA4, 0x3F, 0xBB,
0x44, 0x2C, 0xDB, 0x2B, 0xB6, 0x4E, 0xFA, 0xA8, 0x55, 0x38, 0x45, 0xAA, 0x73, 0x9C, 0xA9, 0xC1,
0x72, 0x9B, 0xF0, 0x58, 0x3A, 0x57, 0xF1, 0x15, 0x30, 0x72, 0xB6, 0x49, 0x13, 0x04, 0x0B, 0x4C,
0xE3, 0x14, 0x54, 0x25, 0xA9, 0x0A, 0x23, 0x2C, 0x03, 0x39, 0xAB, 0x98, 0xA7, 0x5B, 0x9F, 0xF8,
0x09, 0x9F, 0xA3, 0xED, 0x16, 0x1D, 0x58, 0xE9, 0x4E, 0x04, 0x15, 0x37, 0x39, 0xA4, 0x04, 0x32,
0xE5, 0x58, 0x31, 0x0F, 0x44, 0x79, 0x5A, 0x77, 0xD8, 0x80, 0xC7, 0x24, 0xDB, 0x3E, 0x76, 0xC3,
0x7C, 0x85, 0xC7, 0xB1, 0xF0, 0x24, 0x85, 0xD3, 0x72, 0x23, 0xCE, 0x49, 0x04, 0xBB, 0x28, 0x3F,
0x8A, 0xDB, 0x7D, 0xC2, 0x1D, 0xE4, 0x35, 0x35, 0xB9, 0xA5, 0x88, 0x6F, 0x9A, 0xA7, 0x5F, 0x9A,
0xE1, 0x6D, 0x8D, 0x6F, 0x5D, 0x06, 0xBA, 0x1B, 0xC3, 0x38, 0x00, 0x6F, 0x18, 0x97, 0xDC, 0x8E,
0xE6, 0x63, 0xF8, 0x36, 0xD0, 0xC7, 0x77, 0xD0, 0x25, 0x2C, 0xAD, 0xEB, 0x04, 0xBE, 0x63, 0xC8,
0x46, 0x1F, 0xFC, 0xA3, 0x0B, 0xA4, 0x1D, 0xF8, 0xC3, 0x73, 0xB5, 0xB8, 0x40, 0x93, 0x3B, 0x17,
0x18, 0x92, 0x0D, 0x76, 0x3E, 0xF9, 0xB0, 0x33, 0x16, 0x1F, 0x26, 0xD0, 0xC4, 0xB0, 0x45, 0x38,
0xE9, 0x71, 0x25, 0x6E, 0xFB, 0x63, 0x2B, 0x1E, 0xB4, 0xE0, 0x55, 0x6A, 0xD5, 0xE6, 0x30, 0xD7,
0x36, 0xB4, 0x57, 0x29, 0xA8, 0x11, 0xEB, 0xE0, 0x95, 0xE2, 0xA8, 0x7E, 0x27, 0x21, 0x81, 0xCB,
0x8C, 0xAB, 0xBD, 0x37, 0x04, 0x30, 0x47, 0xBC, 0xF7, 0x7E, 0x0F, 0x29, 0xF4, 0xC1, 0x7C, 0xB5,
0x21, 0x85, 0x85, 0xDB, 0x6A, 0x97, 0x98, 0x06, 0x1B, 0xC0, 0x6A, 0xF3, 0x45, 0xEC, 0x1B, 0xEF,
0xC4, 0x11, 0xE7, 0x44, 0xA8, 0x7E, 0x07, 0x9C, 0x34, 0x3F, 0xCC, 0xA0, 0xB7, 0xF4, 0xC7, 0x05,
0x4C, 0x67, 0xC7, 0x71, 0x18, 0x9A, 0xA8, 0xCA, 0x9E, 0xA3, 0x97, 0xA9, 0x79, 0xD7, 0x26, 0xD7,
0x89, 0xCB, 0x8C, 0xDC, 0xE2, 0xDD, 0x09, 0x1D, 0x52, 0xD0, 0xD0, 0xB6, 0x4F, 0x32, 0x76, 0xC5,
0x25, 0xC4, 0xE5, 0xB5, 0x5C, 0xD4, 0x70, 0x9B, 0x88, 0x8A, 0xE7, 0x0F, 0x2B, 0xC5, 0x69, 0x2E,
0x68, 0x53, 0x2C, 0x88, 0x13, 0xD2, 0x2B, 0xA8, 0x93, 0x5C, 0x33, 0x84, 0x70, 0xD6, 0xF0, 0x1F,
0x9C, 0x0F, 0x2D, 0xF0, 0x05, 0x39, 0x41, 0x8A, 0x13, 0x54, 0xFE, 0xF0, 0x55, 0x9E, 0x60, 0x0D,
0xAB, 0x7C, 0x61, 0x1F, 0x3B, 0x69, 0xD7, 0x90, 0xB2, 0xF9, 0xA3, 0x67, 0x77, 0x4E, 0x90, 0x62,
0xB3, 0xEF, 0x82, 0x8C, 0x45, 0x95, 0xFD, 0x51, 0x46, 0x76, 0x82, 0x13, 0xD4, 0x83, 0x75, 0x78,
0x24, 0x70, 0x0E, 0xBF, 0xB6, 0x71, 0xAF, 0xBE, 0x53, 0xE9, 0xD2, 0x7C, 0x1D, 0xE2, 0x4D, 0x72,
0x1E, 0xB8, 0x31, 0xC7, 0xA8, 0x21, 0x9D, 0x09, 0xC5, 0x17, 0x66, 0x71, 0x2A, 0xE1, 0x92, 0x7C,
0x10, 0x89, 0x60, 0xBB, 0x76, 0x80, 0x12, 0x40, 0xF5, 0x7A, 0x71, 0xC7, 0xE7, 0xE1, 0x69, 0x40,
0xDC, 0xB1, 0x8E, 0x46, 0x3D, 0x04, 0x2D, 0x8E, 0x15, 0x77, 0x01, 0x0F, 0x9A, 0xD5, 0x09, 0xE2,
0x06, 0x4D, 0x71, 0xA4, 0x56, 0x1E, 0x75, 0xC8, 0x40, 0xDF, 0xB4, 0x12, 0x82, 0x2A, 0xE7, 0x08,
0xC9, 0xFB, 0xC8, 0x52, 0x9F, 0x72, 0x75, 0x02, 0x36, 0x42, 0x5B, 0x0F, 0xBB, 0x9F, 0xC3, 0x19,
0xFA, 0xFD, 0x41, 0xE8, 0x34, 0x83, 0x50, 0x6C, 0x9B, 0xD0, 0x42, 0xA4, 0x29, 0x5D, 0x57, 0x4D,
0xB7, 0xCE, 0x70, 0x91, 0x47, 0x62, 0x02, 0x96, 0x36, 0xA2, 0xB9, 0xD2, 0xF9, 0x91, 0xE6, 0x91,
0x7C, 0x13, 0xFE, 0xE5, 0x6E, 0x87, 0x70, 0xA1, 0x6D, 0x4A, 0xE9, 0xB5, 0xB4, 0x0F, 0xEA, 0xDA,
0x74, 0x63, 0x96, 0x83, 0x46, 0x6D, 0xAB, 0x82, 0x06, 0x02, 0xBB, 0x17, 0x33, 0xA0, 0x84, 0xBF,
0x1B, 0xA4, 0x14, 0xDD, 0x1A, 0xFD, 0xBF, 0x84, 0xA0, 0xA8, 0xFB, 0x69, 0x7B, 0x9E, 0x07, 0xE2,
0x58, 0x77, 0x35, 0x97, 0xEB, 0x9C, 0xE8, 0x68, 0xCD, 0x0C, 0xA0, 0x9B, 0x12, 0x22, 0x4B, 0x2E,
0x47, 0x19, 0x2A, 0x0D, 0x8B, 0xC6, 0xF1, 0xA9, 0x44, 0x8B, 0x34, 0x8C, 0xA8, 0x64, 0xC8, 0xE5,
0x82, 0xD0, 0xCD, 0x2C, 0xF5, 0x9E, 0xA1, 0xE4, 0x0C, 0x03, 0x06, 0xB8, 0x09, 0xE6, 0x25, 0x20,
0x1A, 0xB7, 0x25, 0x08, 0x20, 0x3C, 0x45, 0x19, 0x81, 0xA6, 0xAC, 0x09, 0x18, 0xEC, 0x7A, 0xDF,
0x12, 0x34, 0xA5, 0x1F, 0x82, 0xA2, 0xB7, 0xAB, 0x73, 0xE0, 0xCB, 0xFB, 0xDD, 0x1A, 0x58, 0xDF,
0xCF, 0x96, 0x88, 0xA8, 0xF4, 0xDB, 0xF0, 0x81, 0x7A, 0xD9, 0x6E, 0x74, 0xD8, 0xC4, 0xC2, 0xB0,
0x61, 0x4A, 0x70, 0x30, 0x1E, 0x42, 0x2B, 0xEC, 0x66, 0x13, 0xD6, 0x02, 0x9F, 0xA1, 0x5E, 0x84,
0x70, 0x8B, 0x16, 0x2B, 0x37, 0x08, 0xDE, 0x01, 0x70, 0x88, 0xD3, 0x04, 0x88, 0xDA, 0x8A, 0xEB,
0x19, 0x26, 0x2E, 0x1A, 0xCA, 0x33, 0x6C, 0x1D, 0x3A, 0xC1, 0xBF, 0x91, 0xA0, 0x4C, 0x4B, 0xE7,
0x10, 0xDF, 0x80, 0x2F, 0xC4, 0x85, 0x38, 0xDE, 0xFE, 0x1B, 0x18, 0xF6, 0x20, 0x3D, 0x53, 0x82,
0xF7, 0x08, 0xD1, 0x93, 0x16, 0x78, 0x45, 0x4D, 0x73, 0x82, 0x4C, 0x6E, 0xDA, 0xDC, 0xD4, 0x61,
0x0F, 0xF1, 0x9B, 0xCA, 0x42, 0x33, 0x13, 0xDC, 0x7E, 0x1D, 0x50, 0x67, 0x04, 0x43, 0x92, 0xEB,
0x40, 0x3B, 0x03, 0xC1, 0xD0, 0x16, 0x14, 0xB8, 0x03, 0xF0, 0x02, 0xAC, 0xC5, 0x75, 0xF1, 0xB0,
0x0A, 0x12, 0x48, 0x65, 0x26, 0xA0, 0x8C, 0x3C, 0xD7, 0x12, 0xD0, 0x93, 0x37, 0x9F, 0x13, 0x8C,
0x04, 0x77, 0x62, 0x72, 0xD0, 0x87, 0xBF, 0x85, 0x78, 0xF4, 0x86, 0xC6, 0x4A, 0x8D, 0x10, 0xDD,
0xAC, 0x7D, 0xE7, 0xD1, 0x4B, 0x17, 0x96, 0x03, 0x7A, 0x2A, 0x92, 0xD8, 0x92, 0xD4, 0x82, 0x6A,
0x52, 0xD0, 0x2F, 0xC6, 0xE4, 0xF9, 0xAA, 0x43, 0x0B, 0xEA, 0x77, 0x07, 0xD0, 0x5C, 0xC8, 0xA5,
0x90, 0x42, 0x85, 0xAB, 0x1B, 0x60, 0x6E, 0xC6, 0x24, 0xBB, 0xDA, 0x09, 0x62, 0xD6, 0xB8, 0xF2,
0x20, 0xF2, 0xCC, 0xC9, 0xC7, 0x1D, 0xA7, 0xE6, 0x15, 0x9D, 0x20, 0xCD, 0x10, 0x48, 0x13, 0xC7,
0xED, 0xB1, 0xD5, 0x22, 0x2E, 0xFD, 0x9C, 0x03, 0xCB, 0xCA, 0xA1, 0xAE, 0x78, 0xBF, 0x53, 0x34,
0xB5, 0xFA, 0x35, 0xA8, 0xE7, 0x4C, 0xF6, 0xD7, 0x74, 0x0C, 0xD9, 0x5C, 0xED, 0xC2, 0xEE, 0x2B,
0x13, 0xEC, 0xDE, 0x5C, 0x8B, 0x9B, 0xA5, 0x9F, 0x09, 0xBA, 0x9F, 0xB9, 0x07, 0xDC, 0xDD, 0xC5,
0xE2, 0xFB, 0x96, 0x37, 0xE2, 0x09, 0xAA, 0xFB, 0x1D, 0x57, 0x7D, 0xCA, 0x23, 0x22, 0xC7, 0x04,
0xBF, 0xD0, 0x29, 0x1F, 0x45, 0x50, 0x88, 0x24, 0xC4, 0x3C, 0x73, 0x6D, 0x8C, 0xE0, 0xF5, 0x7A,
0x93, 0xF7, 0xE1, 0xED, 0x21, 0x6C, 0x92, 0x8B, 0x20, 0xDC, 0xC6, 0xF5, 0x18, 0xB7, 0xE6, 0xC3,
0xBB, 0x50, 0x01, 0x97, 0x4F, 0xE0, 0x74, 0x3E, 0x6F, 0x5E, 0xA5, 0xE1, 0x88, 0x9E, 0x58, 0x00,
0x25, 0x00, 0x4A, 0xE8, 0x3B, 0xEC, 0x8C, 0x38, 0x1A, 0xB8, 0x19, 0x4C, 0x66, 0xC0, 0x1C, 0xF9,
0x46, 0x4C, 0xAD, 0x02, 0xC1, 0x2E, 0xE4, 0x98, 0x2A, 0x88, 0x1B, 0x0A, 0x92, 0x39, 0x63, 0xC4,
0x58, 0xA7, 0x3C, 0x32, 0xF2, 0x25, 0xA3, 0x56, 0xD2, 0xFC, 0x1D, 0x00, 0x78, 0x40, 0x38, 0xC0,
0x0A, 0x0E, 0x90, 0xF0, 0x9F, 0xA9, 0xDD, 0x9C, 0x4E, 0x40, 0x55, 0x44, 0x1D, 0x50, 0xAF, 0x82,
0xEB, 0xC7, 0xED, 0x2D, 0xDB, 0x58, 0x70, 0x1D, 0x47, 0x42, 0x3E, 0x84, 0x7C, 0x20, 0x60, 0x44,
0x06, 0x60, 0xAD, 0x65, 0xE7, 0x02, 0x6C, 0x3D, 0xDB, 0xC0, 0xAB, 0x50, 0x75, 0xDE, 0xAB, 0x26,
0x11, 0x52, 0xA6, 0xA2, 0x19, 0x02, 0xCC, 0x21, 0x91, 0x98, 0xFB, 0xD8, 0xDE, 0x76, 0xF4, 0x93,
0x2D, 0xFF, 0xC3, 0x35, 0x86, 0xB8, 0x01, 0x29, 0x56, 0x2E, 0xA4, 0x99, 0x34, 0xE3, 0x39, 0x32,
0x31, 0x02, 0xBC, 0x71, 0x41, 0xBC, 0x0D, 0xD4, 0x94, 0x81, 0xAB, 0x0E, 0x02, 0xAE, 0x3D, 0x06,
0xF3, 0x5E, 0xF1, 0x2D, 0xE0, 0xB9, 0xA0, 0x06, 0x2D, 0xDD, 0x1B, 0x63, 0x65, 0xD8, 0x85, 0x44,
0xE1, 0x99, 0xDD, 0x45, 0x39, 0x24, 0x6B, 0x6F, 0xDB, 0xED, 0x7D, 0xDB, 0x96, 0xD3, 0xB6, 0xD9,
0xFD, 0xDD, 0xD6, 0x31, 0x55, 0xE2, 0xE2, 0x0E, 0x5F, 0x15, 0x03, 0xF8, 0x3E, 0xBC, 0xFA, 0x9A,
0xFB, 0xE7, 0x55, 0xC1, 0xDE, 0x31, 0x8C, 0x2C, 0x98, 0xE3, 0xF2, 0x16, 0x2A, 0xBF, 0x06, 0x21,
0x7E, 0x2E, 0xD8, 0x4D, 0x6E, 0x91, 0x2B, 0xD0, 0x71, 0xC4, 0x70, 0x3B, 0x61, 0x4B, 0xFB, 0xF5,
0xFB, 0x29, 0x2B, 0xCD, 0x72, 0x7D, 0xA3, 0x70, 0x39, 0x85, 0xCB, 0x28, 0x46, 0x06, 0x2E, 0xE4,
0x53, 0x1E, 0xFD, 0x4A, 0x39, 0x65, 0x5E, 0x92, 0x9A, 0xA5, 0xFC, 0x89, 0x58, 0x04, 0xA7, 0xCD,
0x04, 0x06, 0x44, 0xF6, 0x5D, 0xAA, 0x0C, 0x3C, 0x1A, 0xB6, 0x8B, 0x2F, 0xDB, 0xA7, 0x06, 0xEC,
0x17, 0x74, 0x09, 0x1D, 0x8C, 0xB9, 0xD0, 0xCB, 0xE1, 0x24, 0xA9, 0x2B, 0x96, 0x71, 0xE7, 0x3C,
0x6B, 0xB2, 0x1C, 0xEA, 0xC2, 0x6C, 0xA5, 0x40, 0x04, 0x12, 0x41, 0x8E, 0x54, 0xF6, 0x7B, 0xA4,
0x5F, 0x13, 0xD5, 0x82, 0xBF, 0x8E, 0x02, 0xBB, 0xF9, 0x13, 0xFE, 0xF2, 0x04, 0x7F, 0x85, 0xC0,
0x5F, 0xD9, 0x0E, 0xFE, 0xFA, 0xED, 0xE9, 0x74, 0x08, 0xFF, 0x65, 0x54, 0xC6, 0xAD, 0x5F, 0x31,
0x08, 0xEE, 0x18, 0xBE, 0x9C, 0x9B, 0x99, 0xDE, 0x0A, 0x72, 0x2B, 0x05, 0x3F, 0x8B, 0x0F, 0x63,
0xB8, 0xD5, 0xB8, 0x0A, 0xFB, 0x60, 0x7C, 0x1E, 0xDA, 0x2C, 0x49, 0x71, 0x2D, 0x18, 0xD9, 0x45,
0x83, 0x3A, 0xB1, 0x22, 0x1F, 0x7E, 0x0B, 0xFB, 0xAD, 0x90, 0x20, 0x9B, 0x97, 0x06, 0xA5, 0x1B,
0x35, 0x70, 0x41, 0xB8, 0x40, 0xC4, 0x5E, 0x18, 0x87, 0x15, 0x1F, 0x2A, 0x51, 0xA0, 0x99, 0x0E,
0xAA, 0x2B, 0x89, 0x06, 0x19, 0x3E, 0x27, 0x9B, 0x71, 0x67, 0x06, 0xFD, 0xD6, 0x70, 0xF5, 0xD4,
0x4B, 0xE4, 0x6F, 0xB1, 0x2D, 0x99, 0x5A, 0xC3, 0xD1, 0x6A, 0x31, 0xDF, 0x55, 0x6C, 0x4A, 0x9E,
0x28, 0x3D, 0x47, 0xBE, 0x8F, 0x18, 0x55, 0x8A, 0x1E, 0x2B, 0xA7, 0x53, 0xAC, 0x12, 0x24, 0x94,
0x29, 0x8B, 0x1F, 0x88, 0x50, 0x50, 0xA2, 0xF0, 0x1D, 0x42, 0xBE, 0x0B, 0xE4, 0xD9, 0x32, 0xDE,
0x66, 0x90, 0x89, 0xA1, 0x53, 0x35, 0x40, 0x2F, 0x08, 0x98, 0x8C, 0xDD, 0xFA, 0xAD, 0x86, 0x70,
0xC8, 0x5C, 0x85, 0x98, 0x19, 0xEF, 0x4C, 0x5A, 0x28, 0xB0, 0x2D, 0xE4, 0x8F, 0xA5, 0x01, 0x0C,
0x1A, 0x74, 0xB7, 0x71, 0xF7, 0x0E, 0x2C, 0x32, 0xEE, 0xA2, 0x3A, 0x49, 0x5D, 0xCD, 0xE1, 0x28,
0xE5, 0x99, 0xFB, 0x20, 0xC5, 0xFC, 0x9B, 0xE4, 0xB7, 0x9A, 0x85, 0x94, 0x47, 0x54, 0x74, 0x09,
0x46, 0xCA, 0xC2, 0xCC, 0xD3, 0x5D, 0x04, 0xE5, 0x34, 0x25, 0x93, 0xF8, 0x19, 0x60, 0x58, 0x1B,
0x13, 0xDF, 0x01, 0x00, 0x59, 0x98, 0xAD, 0x58, 0x2D, 0xA0, 0xD4, 0x51, 0x68, 0x0D, 0x8E, 0xF8,
0x56, 0x93, 0xA4, 0x70, 0xA6, 0x27, 0xA3, 0x37, 0x67, 0x20, 0xA5, 0x1A, 0x8E, 0xF5, 0x99, 0xCA,
0x80, 0xEE, 0x37, 0x70, 0x4A, 0x24, 0xCB, 0x21, 0x55, 0xAD, 0xA8, 0x12, 0x7B, 0x79, 0xC8, 0x36,
0xD2, 0x99, 0x04, 0xAC, 0x3C, 0x69, 0x43, 0xB8, 0x99, 0xF4, 0xE7, 0xFB, 0xE0, 0xD2, 0xBC, 0x80,
0x99, 0x47, 0x90, 0xAD, 0x97, 0x3A, 0xA2, 0xAC, 0x7A, 0x02, 0xEE, 0x9A, 0x32, 0xA5, 0x33, 0xD6,
0xA5, 0x3F, 0xB2, 0x0E, 0x52, 0xE2, 0x88, 0xE0, 0xEE, 0x79, 0x9C, 0x13, 0x4C, 0xDB, 0x00, 0x49,
0x80, 0x11, 0x61, 0x13, 0x55, 0xE6, 0xA9, 0x3E, 0x18, 0x0A, 0xC5, 0xB2, 0x40, 0x46, 0x8F, 0x0C,
0xFF, 0x02, 0xCC, 0x3E, 0x44, 0x55, 0xAF, 0xCB, 0x2E, 0x59, 0x6E, 0x0C, 0xF4, 0x13, 0x52, 0x3A,
0x0D, 0x0C, 0xF0, 0x82, 0xB9, 0x0A, 0x6C, 0x57, 0x61, 0x6B, 0x35, 0xF3, 0x9A, 0xA8, 0xD6, 0x23,
0x00, 0x4B, 0x75, 0xB7, 0x5F, 0x8A, 0xAF, 0x06, 0xC1, 0xED, 0x16, 0xBA, 0x1F, 0xBD, 0x7D, 0x89,
0x9A, 0x63, 0xD7, 0x25, 0xE8, 0x82, 0x8A, 0xE0, 0x0E, 0x3D, 0xA9, 0x4E, 0xCE, 0xE2, 0x83, 0xB6,
0x3F, 0x17, 0x86, 0x67, 0x37, 0xDE, 0x19, 0x5E, 0x33, 0x1D, 0xF0, 0x46, 0x99, 0xA5, 0xAF, 0xD1,
0x44, 0x92, 0x77, 0x91, 0xA6, 0x84, 0x37, 0x46, 0x1F, 0x61, 0x02, 0x26, 0x88, 0x90, 0x96, 0xB5,
0xEA, 0x17, 0x41, 0x7A, 0xFF, 0x05, 0xAF, 0x37, 0x67, 0x60, 0x02, 0x35, 0x42, 0xDC, 0xD1, 0x26,
0x6C, 0x80, 0xDB, 0x4E, 0x65, 0xE9, 0x00, 0x01, 0xE1, 0x17, 0x8D, 0xCC, 0x1E, 0xE2, 0x01, 0x73,
0xC1, 0x67, 0x7D, 0xDE, 0xAA, 0xD9, 0x17, 0xFB, 0x3F, 0xB3, 0x1F, 0xD8, 0x6F, 0xDA, 0x98, 0x07,
0x95, 0xF2, 0x90, 0x3A, 0x12, 0x00, 0xCD, 0xAC, 0x09, 0x80, 0xDC, 0x83, 0x8F, 0x87, 0x61, 0x19,
0xA6, 0x8D, 0xEB, 0xE7, 0x21, 0x6D, 0xA3, 0xF0, 0x0B, 0xD8, 0x50, 0xD3, 0x15, 0x62, 0xE5, 0x18,
0x2B, 0x67, 0x65, 0xF2, 0x72, 0xF1, 0x2B, 0x70, 0x60, 0xD7, 0xE0, 0xFB, 0xA1, 0x0B, 0xD5, 0xD1,
0x36, 0xBC, 0x62, 0x37, 0x46, 0xBF, 0x1D, 0x4E, 0x9B, 0x04, 0x47, 0x2A, 0xD5, 0x7A, 0x2B, 0x70,
0x99, 0xF6, 0x72, 0xB5, 0xC6, 0x6A, 0x9F, 0xD3, 0x17, 0xEC, 0x1B, 0x7D, 0xDC, 0x99, 0xF4, 0xE4,
0x14, 0x72, 0xA0, 0x7F, 0xFE, 0x5D, 0x28, 0xFD, 0x05, 0xA0, 0xAA, 0x0D, 0x80, 0xF1, 0x65, 0xA4,
0x65, 0xF0, 0x5A, 0x4B, 0xB0, 0xFE, 0x45, 0xC2, 0x2A, 0x5D, 0x3E, 0xD9, 0x26, 0xFF, 0x6A, 0x90,
0xA9, 0x25, 0x8C, 0x22, 0xAB, 0x15, 0x51, 0xE2, 0x00, 0xBC, 0xE6, 0xDB, 0x97, 0xC0, 0xB2, 0xBF,
0x6B, 0xEE, 0xE0, 0xC2, 0xFE, 0x6F, 0x70, 0x67, 0xB2, 0xB0, 0xA9, 0x82, 0x8B, 0xFF, 0x6E, 0x94,
0x77, 0xDB, 0x02, 0xE4, 0xBF, 0x96, 0xBD, 0x5C, 0xAB, 0x05, 0x7D, 0xBE, 0xDB, 0x38, 0x1B, 0xD6,
0xB3, 0xC6, 0xAA, 0x26, 0x69, 0x4D, 0xFA, 0x48, 0x50, 0x43, 0x74, 0x41, 0x03, 0x44, 0x06, 0x1F,
0x5B, 0x80, 0x2F, 0x1D, 0xD3, 0x1E, 0x2D, 0xAE, 0x11, 0x0A, 0x1D, 0xD7, 0xD4, 0xED, 0x4C, 0xF5,
0x5F, 0xEB, 0x43, 0x7B, 0xA9, 0xD6, 0x3D, 0x8E, 0x9E, 0x53, 0x03, 0x0D, 0x35, 0xA3, 0x03, 0x62,
0x01, 0x3F, 0x5F, 0xAF, 0xA3, 0x0F, 0xDA, 0xA0, 0x43, 0x18, 0x85, 0x6B, 0xC6, 0xF5, 0xCB, 0x43,
0x91, 0x43, 0x03, 0x99, 0x0C, 0x1C, 0x65, 0x34, 0xBE, 0x8E, 0x30, 0x3C, 0x83, 0x0E, 0x5F, 0x80,
0x5B, 0xC1, 0xDA, 0x35, 0x3C, 0xB7, 0xBF, 0xB7, 0xB6, 0xD7, 0xFF, 0x6F, 0xAC, 0xFD, 0xCD, 0xC6,
0xAD, 0xED, 0x15, 0x21, 0x52, 0xC5, 0x55, 0xC8, 0xF3, 0x6F, 0xA1, 0xA9, 0x35, 0xEC, 0xA2, 0x64,
0xFE, 0xC1, 0x78, 0xD6, 0x2B, 0xFA, 0xF6, 0x3E, 0x68, 0x3D, 0x98, 0x9C, 0x3F, 0x66, 0x25, 0xD4,
0x5E, 0x05, 0x1F, 0x76, 0x92, 0x42, 0x09, 0x0C, 0xAE, 0x5D, 0x39, 0x4C, 0xC0, 0x35, 0x14, 0xB2,
0x80, 0x42, 0x6E, 0x46, 0xF5, 0x11, 0x9C, 0x1E, 0x80, 0x15, 0xCE, 0xD5, 0xA4, 0x2E, 0xB0, 0x7E,
0xC3, 0xDC, 0x6A, 0x12, 0x51, 0xC8, 0x08, 0x46, 0x74, 0x2E, 0xB0, 0xC7, 0xFB, 0xAC, 0x79, 0xF4,
0x8E, 0x7D, 0x1B, 0x18, 0xB0, 0xB1, 0x17, 0x9B, 0x00, 0x4E, 0xA8, 0x50, 0xD9, 0xA9, 0x21, 0xAE,
0x71, 0x41, 0x89, 0x18, 0x1A, 0xB4, 0xBA, 0x8C, 0x2B, 0xA6, 0xAC, 0xD8, 0xDB, 0xFC, 0xBA, 0x2E,
0x61, 0x73, 0x17, 0xE0, 0xE0, 0x0C, 0x44, 0xD7, 0xFB, 0xB0, 0xA2, 0xA3, 0x48, 0x1E, 0x35, 0x14,
0xC8, 0x63, 0xA5, 0x27, 0xAE, 0x66, 0x30, 0x6F, 0xEC, 0x36, 0xC3, 0xD6, 0xFA, 0xE5, 0x4A, 0x85,
0xD7, 0x41, 0x5E, 0x4F, 0xEB, 0x22, 0xB4, 0x99, 0x0A, 0x5C, 0x0C, 0x5B, 0x12, 0x6D, 0xF0, 0x9A,
0x9F, 0x83, 0x43, 0x26, 0xCC, 0x79, 0x77, 0xAA, 0x5B, 0x50, 0x1D, 0x78, 0xAD, 0x65, 0xDE, 0xF9,
0xA2, 0x4B, 0xFF, 0x43, 0x9C, 0xCF, 0x9B, 0x11, 0xC0, 0x30, 0xA9, 0x82, 0x3B, 0xB0, 0xF1, 0xC5,
0x96, 0xD6, 0xB6, 0xD5, 0xEA, 0x53, 0xBD, 0xF1, 0x5A, 0xBD, 0xD5, 0x24, 0x4F, 0xF5, 0x26, 0x68,
0x92, 0x0D, 0xA4, 0x80, 0x8D, 0xBE, 0xFE, 0xFE, 0xC0, 0x08, 0x97, 0x2A, 0xD6, 0xF4, 0xD4, 0x39,
0x82, 0x27, 0x58, 0x55, 0x8A, 0x75, 0x1F, 0xCF, 0xE8, 0xEB, 0x2A, 0xC7, 0x33, 0xE5, 0x6D, 0x82,
0xA5, 0x36, 0x1C, 0x0E, 0x65, 0xF1, 0xFF, 0x55, 0x09, 0xAE, 0xD3, 0x9D, 0x43, 0x74, 0xC2, 0xD5,
0xD6, 0x91, 0x72, 0xB2, 0x57, 0x4F, 0xB6, 0xE3, 0x11, 0x53, 0x17, 0x38, 0x99, 0x39, 0x4D, 0xC3,
0xA2, 0x35, 0x3C, 0x0A, 0x1F, 0x05, 0x95, 0x29, 0x69, 0x59, 0x34, 0x07, 0xCA, 0x94, 0xF9, 0x08,
0x4D, 0x0B, 0xF6, 0xF0, 0x98, 0xB1, 0xA6, 0x4B, 0xC4, 0x6E, 0x1E, 0xFF, 0x2E, 0x8D, 0xD9, 0xBD,
0xFC, 0xC6, 0x01, 0x39, 0x6E, 0x11, 0xD5, 0x96, 0x16, 0x05, 0x1B, 0x06, 0x6F, 0x43, 0x2C, 0xA1,
0xB7, 0x98, 0xF9, 0x20, 0xCD, 0x3B, 0x0B, 0x6A, 0x71, 0xDE, 0x60, 0xCE, 0x3C, 0x04, 0x3C, 0x68,
0x09, 0x09, 0x8F, 0xC2, 0xF9, 0x9C, 0x8B, 0x01, 0xF5, 0x8C, 0x97, 0x1D, 0xEB, 0x20, 0x96, 0x72,
0x88, 0x6A, 0xFC, 0x16, 0xB4, 0x3E, 0x7E, 0xC3, 0x22, 0x71, 0x85, 0xA8, 0x8B, 0x0F, 0x72, 0xBD,
0xD1, 0x27, 0x75, 0x74, 0x65, 0x7C, 0x7C, 0x7B, 0xCB, 0xBE, 0x37, 0x9A, 0xA6, 0xB8, 0x02, 0x54,
0x18, 0xE7, 0xE7, 0xFC, 0xF6, 0x47, 0x2D, 0xD2, 0xEA, 0x7C, 0xFF, 0x22, 0xC9, 0x46, 0x6F, 0xAA,
0xE8, 0xAD, 0x71, 0x69, 0xFB, 0x0A, 0x16, 0xC9, 0x64, 0x91, 0x1E, 0x8B, 0x04, 0x6F, 0x0B, 0xF5,
0xCC, 0xB3, 0x79, 0x18, 0xE5, 0x75, 0xEE, 0x0D, 0x61, 0x04, 0xC8, 0x74, 0xEB, 0xC6, 0x6A, 0x0E,
0xD5, 0x5A, 0x4A, 0x58, 0xB4, 0x4B, 0xB5, 0xED, 0xE2, 0x32, 0x23, 0x97, 0x7A, 0x9C, 0xEF, 0x4C,
0x43, 0x04, 0x9A, 0x01, 0x02, 0x02, 0x94, 0x34, 0x08, 0x8B, 0xFA, 0xBC, 0x14, 0x64, 0x09, 0x03,
0xA0, 0xCA, 0x31, 0x7C, 0x76, 0x65, 0xE0, 0x06, 0xCF, 0xC3, 0x5F, 0x25, 0xDF, 0xAC, 0x75, 0xBE,
0x6E, 0xD2, 0x75, 0xBF, 0xED, 0xBF, 0x36, 0x66, 0x17, 0xE1, 0x59, 0x7A, 0x3D, 0xF8, 0x63, 0x9A,
0xE4, 0xB8, 0x1B, 0xDA, 0xF4, 0x28, 0xD7, 0xA0, 0x05, 0x44, 0xB6, 0x8D, 0xED, 0x10, 0x97, 0x85,
0xCE, 0x0D, 0x6E, 0xD1, 0x37, 0x91, 0xE0, 0x36, 0x3E, 0x6B, 0xC8, 0x35, 0xC5, 0xBF, 0xFE, 0x7C,
0xF3, 0x79, 0x4F, 0xCA, 0x17, 0x70, 0x6A, 0xC8, 0xC6, 0xD4, 0x57, 0x19, 0xD9, 0xC2, 0x34, 0x0B,
0xE6, 0x45, 0xCA, 0x7E, 0x00, 0xEC, 0x06, 0x2B, 0x66, 0x15, 0x22, 0x9D, 0x6D, 0x1F, 0xED, 0xF4,
0x2D, 0x18, 0x1A, 0x7D, 0x3C, 0x0C, 0x01, 0x9F, 0xC0, 0xC5, 0x45, 0x80, 0x65, 0x7D, 0xFC, 0x4E,
0xEF, 0x77, 0xF1, 0x65, 0x7C, 0x17, 0x9F, 0xEF, 0xE1, 0xC9, 0x4B, 0xBB, 0x0A, 0x7F, 0x8A, 0x34,
0xD5, 0xA4, 0xFA, 0x5D, 0x6A, 0x66, 0xE3, 0x11, 0x27, 0x6D, 0xF7, 0x08, 0x5F, 0x0D, 0x59, 0x19,
0x35, 0x83, 0xE0, 0x49, 0xC6, 0x89, 0xCD, 0x75, 0x15, 0xBE, 0xD1, 0xFE, 0xE1, 0x7A, 0xFC, 0x1E,
0x22, 0x69, 0x3B, 0xA3, 0x68, 0xF1, 0xE7, 0x31, 0x51, 0x6E, 0x78, 0x15, 0xE8, 0xA6, 0x0F, 0x6D,
0x14, 0x0F, 0xFC, 0x09, 0xC3, 0xC9, 0xA2, 0x56, 0x07, 0xEA, 0xD4, 0x92, 0x0C, 0xA5, 0x81, 0x6D,
0x70, 0xAB, 0xDF, 0x42, 0xA5, 0x20, 0x28, 0x84, 0xC4, 0x04, 0x98, 0x20, 0x0D, 0x61, 0xA5, 0xBD,
0x57, 0xE1, 0x66, 0x61, 0x3F, 0x94, 0xEF, 0x2B, 0x70, 0xB7, 0xB5, 0x80, 0x04, 0xA8, 0xA2, 0xB6,
0xA3, 0x57, 0x7C, 0x3F, 0x67, 0x96, 0x60, 0x9E, 0x4A, 0x83, 0xDB, 0x60, 0x59, 0xD6, 0x47, 0xFF,
0x01, 0xF7, 0x75, 0x1E, 0xDE, 0x5D, 0x97, 0x23, 0x32, 0x97, 0x32, 0xB9, 0x80, 0xE3, 0xC3, 0xE5,
0x2F, 0xC3, 0x65, 0x22, 0xDA, 0x4A, 0xA6, 0x3B, 0x71, 0xF5, 0xDB, 0xC8, 0x21, 0xDB, 0x29, 0x5A,
0x1C, 0x51, 0x6A, 0x81, 0xE6, 0x8D, 0xC5, 0xE0, 0x5F, 0x83, 0x7C, 0x22, 0xAD, 0xA8, 0x20, 0x24,
0xFD, 0x56, 0xF7, 0xB3, 0xBE, 0x80, 0xBC, 0xA4, 0x86, 0x78, 0x34, 0xA4, 0x98, 0x1E, 0xC9, 0x54,
0x53, 0x9C, 0x01, 0xBA, 0x28, 0x19, 0x90, 0xE1, 0x5D, 0xED, 0x18, 0xCC, 0xCF, 0xC5, 0xD5, 0x43,
0xC8, 0x95, 0xE8, 0x68, 0xE1, 0x3F, 0x57, 0x88, 0xD7, 0x4C, 0xFA, 0x84, 0xB9, 0xD9, 0x69, 0x5B,
0x87, 0xA3, 0x5C, 0x56, 0x0C, 0xFE, 0xFC, 0x5C, 0xD0, 0x3C, 0x4C, 0xAC, 0x4B, 0x2B, 0xC7, 0x29,
0xDA, 0x87, 0x01, 0x93, 0x40, 0xE3, 0x0F, 0xC4, 0xC1, 0xE1, 0xB2, 0xC7, 0x01, 0xFC, 0x80, 0x93,
0x5C, 0x45, 0x18, 0xA2, 0xAE, 0x1F, 0xED, 0x40, 0x99, 0x81, 0x47, 0xA4, 0xDD, 0x82, 0xF8, 0xD9,
0x97, 0xCC, 0x10, 0x8F, 0xDE, 0x5C, 0x85, 0x97, 0x1B, 0x73, 0xBC, 0x7C, 0x6D, 0x69, 0x97, 0x95,
0x45, 0x8A, 0x2C, 0xEC, 0x51, 0xBA, 0x33, 0x5C, 0xEF, 0x4F, 0xFF, 0xE2, 0x8E, 0xE8, 0x1A, 0x3B,
0x0F, 0xB6, 0xF6, 0xE6, 0x93, 0x09, 0x10, 0x0C, 0xB2, 0xC2, 0xDF, 0xED, 0x09, 0x01, 0x77, 0x37,
0xF2, 0x0F, 0x5D, 0xC8, 0xCC, 0x19, 0xBB, 0xC0, 0x0A, 0xC9, 0xC3, 0x08, 0x74, 0x25, 0x7F, 0x52,
0xCC, 0xF7, 0x7A, 0xB6, 0x68, 0xA2, 0xAB, 0x0D, 0xE3, 0xA2, 0xCB, 0xB8, 0x12, 0xBA, 0x46, 0x82,
0x56, 0xFF, 0x2E, 0xAE, 0x0E, 0x2E, 0xB0, 0x15, 0xB0, 0x41, 0x97, 0xF1, 0xF4, 0x87, 0xC8, 0x86,
0x23, 0xA8, 0xE3, 0x12, 0xBC, 0xB1, 0x5A, 0x80, 0x6C, 0xD5, 0x66, 0x5C, 0xAE, 0x3F, 0xD9, 0xC6,
0x37, 0x7B, 0x64, 0xFB, 0x48, 0xC3, 0x52, 0xCF, 0xC2, 0x34, 0xB0, 0x9D, 0x6D, 0x4C, 0xEA, 0x65,
0xA7, 0xB0, 0x08, 0x4C, 0x1B, 0xDB, 0x81, 0x85, 0x4C, 0xE5, 0x73, 0x42, 0x7E, 0x02, 0xE8, 0x01,
0x5E, 0xDA, 0x6F, 0xE1, 0xD2, 0xA1, 0xC9, 0xE1, 0x7C, 0x8C, 0x6A, 0x24, 0xE5, 0x26, 0x85, 0x00,
0x0E, 0x0F, 0xCE, 0x4F, 0x9F, 0xAD, 0xE8, 0x69, 0x73, 0xF6, 0x0D, 0x48, 0x25, 0xCB, 0x66, 0x50,
0x81, 0xF0, 0x03, 0x24, 0x77, 0xB3, 0x42, 0x15, 0x17, 0x80, 0x7F, 0x10, 0xC2, 0xB0, 0x4B, 0xF6,
0x14, 0x51, 0x20, 0x00, 0xBA, 0xF9, 0x75, 0x93, 0xDA, 0xDB, 0x7D, 0x80, 0x68, 0x26, 0x8E, 0xDC,
0x57, 0xC2, 0x13, 0x5D, 0xCA, 0x69, 0x91, 0x51, 0x44, 0x3B, 0x0C, 0xFA, 0xB4, 0xD0, 0x40, 0x89,
0x46, 0xD1, 0xC7, 0x10, 0x36, 0x72, 0x35, 0xBF, 0xDA, 0x29, 0xE5, 0x7F, 0x16, 0x88, 0x83, 0x3B,
0x17, 0xA0, 0x97, 0xC9, 0x32, 0xCF, 0xC8, 0x5A, 0x44, 0xBE, 0x67, 0x41, 0xAB, 0xEC, 0x5B, 0xC0,
0xF3, 0x1D, 0x66, 0x41, 0xCA, 0x1C, 0xA3, 0xDC, 0xA9, 0xCA, 0x30, 0xD2, 0x75, 0xDC, 0xAB, 0x5F,
0xC1, 0x69, 0x3E, 0xA8, 0xC4, 0x74, 0x24, 0x75, 0x97, 0x72, 0x00, 0xD3, 0x20, 0xF7, 0x0A, 0x6E,
0xB6, 0xC8, 0x37, 0x58, 0x43, 0x3D, 0xFD, 0xA9, 0x69, 0xBB, 0xFE, 0xED, 0x54, 0x7D, 0xD9, 0x05,
0x88, 0xA0, 0x12, 0xB5, 0x91, 0x66, 0x26, 0x73, 0xD2, 0xD5, 0x61, 0x4A, 0x35, 0xD8, 0x8F, 0xB1,
0xDD, 0xC9, 0xA4, 0x6C, 0xD7, 0x92, 0xB2, 0xF9, 0x65, 0x93, 0x9F, 0x16, 0xC9, 0xB0, 0x3D, 0x54,
0xB0, 0xF3, 0x78, 0x62, 0x50, 0xA3, 0xC7, 0x94, 0x90, 0xED, 0x97, 0x91, 0x69, 0x58, 0x30, 0xAC,
0x76, 0xC8, 0xDE, 0xAA, 0x8C, 0x45, 0x83, 0x16, 0x48, 0x00, 0x80, 0x04, 0x9A, 0x31, 0x63, 0xFA,
0xBD, 0xD5, 0x28, 0x48, 0xF1, 0xFF, 0x29, 0x80, 0x12, 0xA4, 0x3A, 0x08, 0xAA, 0x1B, 0xF4, 0xFC,
0x88, 0x61, 0x0A, 0x68, 0xBA, 0x0F, 0xE1, 0xE8, 0xE6, 0xB0, 0xF2, 0x88, 0xBA, 0x44, 0x7F, 0xB3,
0x57, 0x5D, 0xFA, 0x1E, 0x6C, 0xB2, 0x0A, 0x58, 0xE0, 0x48, 0x2A, 0x76, 0xD1, 0xA0, 0xFE, 0xFA,
0x3A, 0x53, 0x58, 0x96, 0x82, 0xAF, 0x0F, 0x2B, 0xCF, 0x0D, 0xCC, 0x30, 0xB6, 0x58, 0xA2, 0x02,
0xA2, 0xB6, 0xC0, 0x42, 0x1F, 0xAB, 0x2E, 0xED, 0xA0, 0x28, 0x84, 0x53, 0x38, 0x6D, 0xFD, 0xBA,
0x05, 0x1B, 0x6C, 0x37, 0xAC, 0x0C, 0xC4, 0xF1, 0x07, 0x50, 0x94, 0x61, 0x4E, 0x89, 0xDC, 0x43,
0x73, 0xBF, 0x0C, 0x09, 0xAC, 0x1A, 0x8E, 0x00, 0x06, 0x75, 0x4A, 0xCA, 0x2A, 0x84, 0x9A, 0xAC,
0x1E, 0x96, 0x2C, 0xAE, 0xA4, 0x78, 0x23, 0x56, 0xE8, 0xA9, 0x35, 0x03, 0x93, 0xD8, 0x91, 0x21,
0xB7, 0xA0, 0xFD, 0xD3, 0xE7, 0x49, 0xFA, 0x27, 0x68, 0x02, 0x2E, 0xF6, 0x9C, 0xE9, 0x7D, 0x8B,
0x43, 0xDC, 0xF0, 0x91, 0x48, 0xF8, 0xFD, 0x12, 0xEE, 0x65, 0x85, 0x06, 0x86, 0x8B, 0x23, 0x7A,
0x84, 0x1E, 0x52, 0xA1, 0x54, 0x62, 0xBA, 0xEA, 0x4F, 0xD5, 0x4F, 0xB3, 0xC8, 0x3A, 0xFC, 0x17,
0x45, 0xD6, 0x92, 0x45, 0x56, 0xC9, 0xD8, 0x25, 0xE2, 0xAA, 0x48, 0x50, 0x44, 0x22, 0xBB, 0xCA,
0x07, 0xFE, 0xD4, 0x8F, 0xFE, 0xEC, 0x18, 0xFE, 0x89, 0x09, 0xC3, 0x2F, 0x77, 0x6C, 0xA7, 0x30,
0x26, 0xC5, 0x3C, 0x33, 0xC2, 0x1B, 0xCE, 0xFE, 0xD0, 0xBE, 0x8C, 0xBA, 0x92, 0x74, 0x09, 0x4E,
0x02, 0xAF, 0xF1, 0x23, 0x19, 0x35, 0x3B, 0x1A, 0x07, 0x33, 0xEA, 0xFD, 0x1D, 0x0D, 0x50, 0x84,
0x8B, 0xA0, 0x8B, 0x3D, 0xB4, 0xF6, 0x25, 0xCB, 0x0A, 0x14, 0x1B, 0x30, 0xBF, 0x87, 0xDF, 0xB6,
0xAC, 0x7D, 0xA5, 0x2C, 0xD6, 0xD5, 0xD0, 0x85, 0xB7, 0x5C, 0x92, 0x36, 0xDC, 0xB3, 0x56, 0x98,
0x29, 0x26, 0x87, 0xE1, 0xFB, 0x97, 0x90, 0x04, 0x67, 0xAC, 0x15, 0x52, 0xB7, 0x18, 0x68, 0x37,
0xC1, 0xD5, 0x18, 0x7C, 0x43, 0x62, 0xF7, 0xB1, 0x5A, 0xE1, 0xBD, 0xE1, 0x35, 0x76, 0x9F, 0x11,
0x5E, 0x7F, 0x0D, 0xC0, 0xE7, 0xAF, 0x01, 0xAF, 0xCD, 0x1E, 0xBC, 0xBE, 0x83, 0xB3, 0x35, 0x21,
0xC2, 0x78, 0x90, 0x1E, 0x80, 0xD7, 0xCE, 0xF9, 0xD0, 0x09, 0x09, 0xA4, 0xDB, 0xDC, 0x69, 0xD1,
0xE4, 0xFE, 0xB0, 0x92, 0x1E, 0xE8, 0xC6, 0x7C, 0xDA, 0x16, 0x8D, 0x3A, 0xE4, 0x90, 0x2E, 0xBE,
0x5D, 0x02, 0x6B, 0x99, 0x66, 0x9F, 0xD8, 0x96, 0x15, 0x66, 0xE2, 0x84, 0xE1, 0xDA, 0xC1, 0x2A,
0x4F, 0x7E, 0x8F, 0x32, 0xA0, 0x58, 0x37, 0xAA, 0x70, 0xEF, 0x1E, 0x11, 0x1C, 0xF4, 0x2E, 0x01,
0xDA, 0xD5, 0x01, 0x5C, 0x0B, 0xF0, 0x63, 0x54, 0x15, 0x7B, 0x2C, 0xAA, 0x8C, 0x7D, 0x63, 0x9E,
0xFD, 0xBE, 0x9A, 0xF9, 0x4F, 0xB7, 0x91, 0x4D, 0x13, 0xC4, 0x15, 0x65, 0x7E, 0xD3, 0xEB, 0xBD,
0xAB, 0xF3, 0xE2, 0xB8, 0x6D, 0x29, 0x8F, 0xBD, 0xCD, 0x4E, 0x50, 0x33, 0x59, 0xB7, 0x5E, 0xDB,
0xD7, 0xCE, 0x11, 0x25, 0xC0, 0x87, 0xDF, 0xDB, 0xE9, 0x8E, 0x51, 0xFE, 0x90, 0xC6, 0x28, 0xE5,
0xA0, 0xF8, 0xB2, 0x85, 0xDE, 0x15, 0x56, 0x9A, 0xD4, 0x53, 0x49, 0x77, 0x4E, 0xFD, 0x19, 0x9D,
0x21, 0x21, 0x4C, 0x3D, 0x83, 0xB5, 0xB3, 0x3F, 0x06, 0x60, 0x7C, 0x82, 0x67, 0x95, 0x6A, 0x46,
0x89, 0x9C, 0x16, 0x28, 0x32, 0x6C, 0x62, 0xE4, 0x51, 0x40, 0x55, 0x30, 0xF3, 0x75, 0xA9, 0x99,
0xEA, 0x52, 0xAF, 0x96, 0xEC, 0x6D, 0x16, 0xF9, 0x83, 0x6B, 0x0F, 0x35, 0x07, 0xDA, 0x43, 0xC3,
0xD4, 0x1E, 0x4A, 0x5D, 0x7B, 0xC8, 0x59, 0x9C, 0x76, 0x31, 0xC4, 0x99, 0x22, 0x70, 0xC7, 0x4E,
0xD4, 0x9A, 0xF2, 0x99, 0x9F, 0x28, 0xF5, 0xDF, 0x94, 0xD4, 0xBF, 0x66, 0xEA, 0x7F, 0x2B, 0xDF,
0xDB, 0x45, 0x8A, 0x74, 0x41, 0xBD, 0x57, 0xBD, 0x43, 0xB8, 0xF8, 0x09, 0x3A, 0x55, 0x87, 0xE9,
0xCB, 0x16, 0x5D, 0xD5, 0xEF, 0x56, 0xC5, 0x0E, 0x89, 0xCB, 0x8F, 0x3E, 0x59, 0xA9, 0x01, 0x67,
0x7D, 0x68, 0x81, 0xD9, 0x1D, 0x32, 0x26, 0x8F, 0x75, 0x3E, 0x5A, 0x3F, 0x90, 0x3F, 0xFB, 0x1C,
0x66, 0x0D, 0x96, 0xB6, 0xC9, 0x36, 0x10, 0x61, 0x0F, 0xA2, 0xAE, 0x2A, 0x62, 0x2A, 0x5D, 0xB1,
0xD7, 0x06, 0x2A, 0x0F, 0xB4, 0x81, 0x22, 0x69, 0x03, 0xF5, 0x07, 0xDB, 0x40, 0xE2, 0xC0, 0x29,
0x11, 0xC5, 0x9B, 0x95, 0x56, 0x3B, 0x6F, 0x5F, 0x38, 0x00, 0x28, 0x0C, 0xB2, 0xE2, 0x9C, 0x24,
0x46, 0xE0, 0xE4, 0x08, 0x7A, 0xDE, 0x22, 0xA0, 0xF8, 0x0D, 0x07, 0x28, 0x20, 0x5F, 0x2E, 0xB3,
0xE4, 0x42, 0xEC, 0xA6, 0x70, 0x12, 0x86, 0x91, 0x51, 0xFB, 0x6C, 0x05, 0x2E, 0x8D, 0xAF, 0x42,
0x1F, 0x49, 0xEA, 0xD7, 0xE1, 0xDE, 0xF5, 0x3F, 0x81, 0x1D, 0xD1, 0x07, 0xBF, 0x23, 0x3D, 0x4A,
0x6A, 0xAA, 0x44, 0xFD, 0xAF, 0xD3, 0x9A, 0xFE, 0x09, 0x8A, 0x12, 0x7D, 0xF0, 0x0C, 0xE9, 0x94,
0xCA, 0x2B, 0x5D, 0x61, 0x96, 0x86, 0x1D, 0x5D, 0xA3, 0x50, 0x1B, 0xB1, 0xB4, 0xA0, 0xD6, 0x0C,
0x4E, 0xE0, 0xB7, 0xE1, 0x3F, 0x07, 0xDB, 0x70, 0x4A, 0x77, 0x16, 0x54, 0x78, 0xE7, 0x05, 0x10,
0x06, 0x54, 0xF1, 0x1F, 0xA0, 0xEC, 0x5F, 0x4E, 0x2A, 0xFD, 0x0F, 0x4B, 0x0F, 0x43, 0x4B, 0x37,
0x93, 0x5C, 0x03, 0xEC, 0xC0, 0x9D, 0xDB, 0xC1, 0x63, 0xE8, 0x90, 0xF6, 0x99, 0x66, 0xFB, 0xEC,
0x24, 0x24, 0xD1, 0xB2, 0x6A, 0xF8, 0xBE, 0x30, 0x8F, 0xED, 0xB3, 0xE7, 0x53, 0x99, 0x2D, 0x01,
0x41, 0xD9, 0x5E, 0xFB, 0xAC, 0xDA, 0xE5, 0x1B, 0x23, 0x23, 0xF8, 0x66, 0x76, 0xDB, 0x67, 0x87,
0x7B, 0x89, 0x67, 0x02, 0x41, 0x89, 0xA9, 0xA3, 0x2D, 0x04, 0x69, 0x58, 0x51, 0xBE, 0xB4, 0xA4,
0xC2, 0xAB, 0x48, 0xD4, 0x1B, 0x76, 0xBA, 0xC8, 0x2C, 0xFD, 0x7A, 0xE9, 0x77, 0xEB, 0x9F, 0x37,
0x1B, 0x76, 0xAB, 0x4D, 0xDA, 0x0C, 0x59, 0x73, 0xC2, 0xD6, 0x6D, 0x4C, 0xE4, 0x78, 0x7D, 0x0E,
0xBC, 0xF2, 0x6A, 0x4B, 0x49, 0x2E, 0xC4, 0xF5, 0x49, 0x75, 0x28, 0x6C, 0x97, 0xE8, 0x46, 0x8C,
0x9A, 0xBC, 0xA2, 0x91, 0x94, 0xFA, 0x0D, 0x36, 0x19, 0x1A, 0x76, 0xDD, 0x29, 0x4B, 0xC5, 0x09,
0x10, 0x57, 0x71, 0xD4, 0x35, 0xE3, 0x37, 0x89, 0x42, 0xE0, 0x67, 0x0F, 0xC0, 0x96, 0x27, 0x13,
0x44, 0xCA, 0xC5, 0xD5, 0xE3, 0xFF, 0xB6, 0x98, 0x24, 0xEA, 0xCB, 0x50, 0x13, 0xB5, 0xD4, 0xBA,
0x52, 0x00, 0x7B, 0x0D, 0x03, 0xAC, 0x02, 0x50, 0xD0, 0xEB, 0x13, 0xE8, 0x52, 0x8C, 0xAC, 0x0B,
0x91, 0xFE, 0xC1, 0xF4, 0xCF, 0x4A, 0xF6, 0xCF, 0x7A, 0xB1, 0xAC, 0x7C, 0x27, 0xA5, 0x75, 0x46,
0x16, 0x54, 0xCE, 0x8E, 0x59, 0x26, 0x42, 0x72, 0x08, 0x57, 0x06, 0x77, 0x86, 0x10, 0xCA, 0x3A,
0x11, 0xBB, 0x4E, 0x11, 0x67, 0x9C, 0xA6, 0xC4, 0x1F, 0x72, 0x7C, 0x4C, 0x97, 0x59, 0x8F, 0x94,
0x10, 0xB2, 0x5C, 0x7A, 0x71, 0x2A, 0xA0, 0x77, 0x0E, 0x1D, 0x46, 0x8E, 0x78, 0xD6, 0xBE, 0x73,
0xCB, 0x91, 0xA4, 0xD2, 0x1F, 0x39, 0x63, 0x85, 0x1F, 0x3A, 0x39, 0x40, 0x9C, 0xB2, 0x67, 0x08,
0x44, 0x47, 0x3D, 0x52, 0xD3, 0x19, 0xDC, 0x21, 0xDC, 0x29, 0xA6, 0x63, 0xB8, 0x73, 0x4C, 0x07,
0x71, 0x27, 0x71, 0x47, 0x51, 0xAE, 0x17, 0xB8, 0xD3, 0x12, 0x8E, 0x5A, 0x28, 0x0E, 0x99, 0x75,
0x3B, 0xCB, 0x8B, 0x13, 0xE5, 0x10, 0x74, 0x27, 0x41, 0xF5, 0x95, 0x5A, 0x3A, 0x5E, 0x05, 0xB3,
0x0D, 0xF6, 0x4C, 0x49, 0x38, 0x10, 0x51, 0xFF, 0x5B, 0x40, 0x03, 0x38, 0x4E, 0xAD, 0x61, 0xE1,
0xAC, 0x72, 0x49, 0xFB, 0x2F, 0x97, 0xA4, 0x81, 0x70, 0xF6, 0xCD, 0x13, 0xAD, 0x6C, 0x29, 0x1D,
0x2F, 0x19, 0x01, 0x02, 0x9B, 0x25, 0xC0, 0x4E, 0x11, 0xCD, 0x17, 0x8E, 0x43, 0x07, 0x46, 0x76,
0x74, 0xE0, 0x52, 0xA4, 0xA5, 0x03, 0x44, 0x51, 0x72, 0x36, 0x42, 0xEE, 0x84, 0x23, 0xC8, 0x59,
0xB4, 0xE6, 0x04, 0x90, 0x4A, 0x2E, 0xC2, 0xA1, 0x81, 0xA6, 0x62, 0x64, 0xC5, 0x3A, 0x75, 0xC5,
0x10, 0xBA, 0x62, 0x89, 0x4B, 0x6A, 0xCE, 0xB3, 0x4B, 0x01, 0x88, 0x7B, 0x9C, 0x96, 0x52, 0x9A,
0x32, 0x73, 0x18, 0x60, 0xF0, 0xE1, 0xDB, 0x78, 0xB3, 0xA2, 0xEF, 0x48, 0x5A, 0x42, 0x64, 0x84,
0xD0, 0xFB, 0xE4, 0x26, 0xD2, 0x11, 0x80, 0x6B, 0x29, 0xAA, 0x41, 0x10, 0x0A, 0x6F, 0xB0, 0xEA,
0x24, 0x2F, 0xD4, 0x3A, 0x4B, 0xC8, 0x2C, 0xFF, 0x48, 0xB4, 0x21, 0x58, 0x8F, 0xBF, 0xCD, 0x5E,
0x31, 0xC3, 0x1D, 0x03, 0x0E, 0x72, 0x66, 0x9C, 0x66, 0x7C, 0xEA, 0x59, 0xB8, 0xAE, 0xD8, 0x02,
0x67, 0x6B, 0xA0, 0x0E, 0x88, 0x17, 0xC4, 0x01, 0x1D, 0xBD, 0x04, 0xE0, 0x1E, 0xD5, 0xD6, 0x63,
0x41, 0x00, 0x8B, 0xF5, 0xDC, 0x25, 0x0B, 0xA4, 0xAC, 0x8D, 0x0F, 0x91, 0x82, 0x55, 0x26, 0x2E,
0xC3, 0x3E, 0x7A, 0x0F, 0x38, 0xF7, 0xFB, 0xF6, 0xC6, 0xAB, 0x14, 0x1B, 0x24, 0x33, 0x5F, 0x6D,
0xDD, 0x54, 0x61, 0xAF, 0xEB, 0xA0, 0x2E, 0x90, 0x66, 0xDD, 0xED, 0xF5, 0x72, 0xB3, 0x69, 0x82,
0x6A, 0xD3, 0x84, 0x55, 0x8F, 0x20, 0x84, 0x40, 0xF4, 0x46, 0x63, 0x96, 0x6F, 0x95, 0xC9, 0x1B,
0xEC, 0x3F, 0xB3, 0x02, 0x7E, 0xA6, 0x95, 0x76, 0x66, 0x30, 0xB5, 0x33, 0xC3, 0x4F, 0xDA, 0xCE,
0xFC, 0x65, 0xB8, 0xD9, 0x75, 0x99, 0x6C, 0xA4, 0xB9, 0x0A, 0x9C, 0xA0, 0xCA, 0xD1, 0x9B, 0xFB,
0xCF, 0x33, 0xBC, 0xE5, 0x2E, 0x83, 0xDB, 0x5F, 0x17, 0xD4, 0x07, 0xEA, 0x82, 0x47, 0xCC, 0x79,
0xC0, 0x33, 0x5A, 0xD6, 0x61, 0xE4, 0xB5, 0x8D, 0x7A, 0xA4, 0x61, 0x7A, 0x23, 0x43, 0x65, 0xF7,
0xA1, 0x33, 0x8A, 0xAD, 0xA8, 0x45, 0xD2, 0x84, 0x3C, 0x37, 0x99, 0x16, 0xC3, 0x2F, 0xC7, 0x78,
0x3E, 0x5B, 0x11, 0xF2, 0x37, 0xA4, 0x08, 0xF9, 0x06, 0x8B, 0x90, 0x3D, 0x8B, 0x90, 0x77, 0x84,
0xD2, 0x35, 0x69, 0x0E, 0x96, 0xBB, 0xC1, 0x51, 0xA0, 0x91, 0x97, 0x72, 0xD8, 0xEC, 0xA2, 0xAD,
0x0A, 0x76, 0xA6, 0xD8, 0x88, 0xCE, 0xA0, 0xBC, 0x08, 0x24, 0xE6, 0xA5, 0x16, 0x4E, 0x0A, 0x4E,
0x26, 0x7E, 0x8F, 0x71, 0x9E, 0x3A, 0x3D, 0x4C, 0x78, 0x28, 0x6C, 0xA7, 0x33, 0x90, 0x7E, 0xE1,
0x32, 0x79, 0x2A, 0xED, 0xDD, 0xA3, 0x65, 0x96, 0xF4, 0xF1, 0x3B, 0x05, 0xAC, 0xA7, 0x9A, 0xB1,
0x21, 0x30, 0x8B, 0x73, 0xFD, 0x72, 0x19, 0x5E, 0xAF, 0xD5, 0x5D, 0x61, 0x1A, 0xD1, 0x42, 0x23,
0xCA, 0xE6, 0x10, 0x0A, 0xAB, 0xA0, 0x83, 0xA8, 0xDB, 0x8F, 0xA3, 0x43, 0xBF, 0x4D, 0x3A, 0x68,
0xBA, 0xAC, 0xCA, 0x70, 0xC7, 0xEF, 0x8C, 0xA7, 0x59, 0x89, 0x98, 0x6C, 0x83, 0x74, 0x14, 0xC3,
0x1E, 0x1D, 0xBA, 0xD7, 0x37, 0xF6, 0xD3, 0x51, 0xEA, 0x97, 0xAB, 0x7D, 0x74, 0xB4, 0xEA, 0xB7,
0xC7, 0x9C, 0xA8, 0x78, 0x97, 0x8E, 0xA3, 0x73, 0xA1, 0xE3, 0x01, 0xB4, 0x7F, 0x53, 0xF6, 0x7D,
0x79, 0x95, 0xDF, 0xEE, 0x72, 0x5F, 0x6A, 0x29, 0xB1, 0x78, 0xD1, 0xFC, 0x93, 0x55, 0x59, 0xD7,
0xFA, 0x2F, 0x3D, 0xD9, 0x8C, 0xAD, 0xA9, 0x90, 0x81, 0xA7, 0x8F, 0xF3, 0xC8, 0x8D, 0xD3, 0xE4,
0x9D, 0x8A, 0xE9, 0x21, 0xBA, 0xC5, 0x6B, 0xEC, 0xF0, 0x01, 0x24, 0x96, 0xF3, 0xF1, 0x64, 0xD4,
0x84, 0x5B, 0x0D, 0x14, 0x44, 0xEB, 0x2D, 0x64, 0xD6, 0x47, 0x66, 0x0F, 0x49, 0xF4, 0x93, 0x69,
0x84, 0x8A, 0xA8, 0x28, 0x23, 0xF4, 0xC1, 0x5F, 0xC6, 0x9B, 0xDA, 0x69, 0x3B, 0xC1, 0x33, 0xFB,
0x6E, 0x44, 0xAB, 0x1C, 0x55, 0x78, 0x73, 0x65, 0x14, 0x67, 0xCB, 0x52, 0xD3, 0xD4, 0x0E, 0x75,
0x87, 0x10, 0xAC, 0xE1, 0x4E, 0xA1, 0x9A, 0x9D, 0xA9, 0xB3, 0x44, 0xE6, 0x50, 0x4A, 0xF5, 0x0B,
0x2B, 0xBB, 0xE9, 0xDE, 0xFD, 0x2A, 0x06, 0xDF, 0xA7, 0x16, 0x36, 0xCB, 0xC5, 0xD3, 0x40, 0x81,
0x1B, 0x99, 0x5B, 0xDA, 0x89, 0x63, 0x0B, 0x3F, 0xBE, 0xDE, 0x7C, 0x44, 0x05, 0x77, 0x2B, 0x57,
0x6F, 0xC6, 0x1A, 0x7F, 0xD3, 0xB8, 0x22, 0x6F, 0xB2, 0x5B, 0xCA, 0x01, 0x96, 0x25, 0x99, 0x1F,
0xD8, 0xDA, 0x0E, 0xD2, 0xC4, 0xA7, 0x5B, 0x97, 0x16, 0xFE, 0xF8, 0x18, 0xE8, 0xBD, 0x76, 0x11,
0xE8, 0x7B, 0xAD, 0x48, 0x63, 0x46, 0x8D, 0x8C, 0x5D, 0xD1, 0xE2, 0x3D, 0x68, 0xC5, 0x5F, 0xB1,
0x7E, 0xC1, 0xBB, 0xC5, 0xB9, 0x4B, 0x1F, 0x16, 0x6A, 0x18, 0xD9, 0x76, 0xA7, 0x44, 0x92, 0x1B,
0xE5, 0x4A, 0x24, 0xD7, 0x81, 0xE7, 0xFF, 0x64, 0xA6, 0xB2, 0xBF, 0xC3, 0x71, 0x6D, 0xE9, 0x8D,
0x10, 0xE1, 0xFF, 0xEC, 0x73, 0x81, 0x27, 0x49, 0x2F, 0x06, 0xCD, 0xB3, 0xB3, 0x9E, 0x7A, 0xF0,
0xD8, 0x74, 0xEB, 0x2A, 0x3B, 0x2B, 0xA1, 0xBF, 0x96, 0x29, 0x51, 0x38, 0x0E, 0xC6, 0x20, 0x4E,
0xA7, 0x22, 0x3A, 0xB1, 0x1D, 0x4D, 0x36, 0x02, 0xAE, 0x8D, 0x21, 0x79, 0x5C, 0x58, 0x48, 0x52,
0x8A, 0x5D, 0x58, 0xE2, 0xAC, 0xAB, 0x70, 0x51, 0x33, 0xA4, 0xD8, 0xF5, 0xBF, 0x5A, 0xD5, 0x17,
0x4D, 0xF0, 0xE1, 0xD9, 0x52, 0x77, 0x99, 0x2A, 0x10, 0x03, 0x7A, 0xCE, 0x56, 0x4B, 0xBF, 0xE6,
0xDE, 0xC5, 0x2E, 0xE4, 0x4D, 0xD4, 0x0D, 0x30, 0xC9, 0x7E, 0x6B, 0x88, 0x97, 0x11, 0xE1, 0x0C,
0x94, 0x7B, 0x5C, 0x82, 0x22, 0x8E, 0xA6, 0x78, 0xF3, 0xAB, 0x03, 0x03, 0x69, 0x7F, 0x58, 0xA6,
0x69, 0xC4, 0x2B, 0xB9, 0xB7, 0xDC, 0x8D, 0x61, 0x7F, 0x43, 0x99, 0x0A, 0x7A, 0xA0, 0xE7, 0xAB,
0x84, 0x45, 0x38, 0xAB, 0x57, 0x70, 0xD1, 0xD5, 0xCA, 0x81, 0xD8, 0x0C, 0xC0, 0xB0, 0x5F, 0x30,
0xC1, 0xB5, 0x6B, 0xAD, 0x89, 0x5E, 0xBF, 0xD4, 0xC4, 0x2C, 0xCA, 0x8D, 0xAC, 0x22, 0x86, 0x69,
0xFC, 0xC3, 0x41, 0xFC, 0x81, 0x6E, 0x7F, 0x12, 0x2A, 0x8E, 0x90, 0x8A, 0x57, 0xE1, 0x35, 0x22,
0xE6, 0xD0, 0x2C, 0x1A, 0x08, 0xF8, 0x10, 0x2A, 0xCC, 0xAE, 0x15, 0x2C, 0xEE, 0xE6, 0x34, 0x32,
0x79, 0xB9, 0x5A, 0x0A, 0x79, 0xB3, 0x4C, 0x39, 0xF2, 0x6E, 0xBF, 0x2F, 0xE4, 0xB5, 0x5A, 0x7A,
0xFC, 0x39, 0xEC, 0x0B, 0x69, 0x73, 0x75, 0x0E, 0xB2, 0xAE, 0x65, 0x58, 0x9B, 0xB5, 0xB7, 0x05,
0x67, 0x4B, 0xAC, 0x0A, 0xFF, 0xAC, 0xFA, 0x4C, 0xD3, 0xD9, 0x7B, 0xB5, 0x6E, 0xF5, 0x6B, 0x0E,
0xA1, 0x7D, 0x41, 0x7E, 0xED, 0xF5, 0x54, 0x7B, 0x51, 0xFB, 0xE6, 0x6E, 0x0F, 0xFC, 0xD1, 0x70,
0x86, 0x48, 0x9B, 0xE3, 0x0E, 0x7E, 0x0F, 0xC9, 0xEB, 0xD9, 0x74, 0x5D, 0x0D, 0xB5, 0xA4, 0x87,
0x8C, 0x4B, 0x0B, 0x71, 0x45, 0xAF, 0x15, 0x2F, 0x4B, 0x61, 0xC7, 0xBF, 0xDD, 0xCB, 0x69, 0x0B,
0x99, 0x66, 0x97, 0x6C, 0x97, 0xFF, 0x1C, 0xDF, 0x22, 0x9B, 0xCD, 0x86, 0xB8, 0x4A, 0x24, 0x88,
0x5A, 0x10, 0xD8, 0x4C, 0x26, 0x18, 0x2A, 0x37, 0x16, 0x52, 0xC7, 0x25, 0x87, 0xF4, 0xDC, 0x00,
0xA1, 0xAE, 0x62, 0x9B, 0xEB, 0xBD, 0x27, 0x10, 0x1E, 0xF1, 0x38, 0x8D, 0xDC, 0x7E, 0x51, 0x06,
0xDB, 0x69, 0x9B, 0xE1, 0x70, 0x90, 0xC6, 0x24, 0x5F, 0xF3, 0xBB, 0xD0, 0x6E, 0xC0, 0xA1, 0x2C,
0x15, 0xF1, 0xC6, 0x0F, 0xCB, 0xB2, 0x3F, 0x49, 0x94, 0x7D, 0x87, 0xE8, 0x3F, 0xB2, 0x6F, 0x33,
0x90, 0xCB, 0x7C, 0xEF, 0x20, 0xF1, 0xEA, 0xD2, 0x0F, 0xB0, 0xDE, 0xA2, 0x49, 0x9E, 0x3A, 0xFF,
0x83, 0xBA, 0xCB, 0x7E, 0x27, 0x1E, 0xC3, 0x0A, 0x41, 0xBC, 0x7A, 0xDC, 0xDB, 0x1D, 0xC4, 0xEB,
0xF7, 0x06, 0xF1, 0x4E, 0xD2, 0x54, 0x3E, 0x32, 0x88, 0x57, 0x4E, 0x79, 0xE7, 0xF8, 0xCC, 0xA0,
0x78, 0xB9, 0x12, 0x4B, 0x11, 0xB8, 0x26, 0x43, 0xDB, 0x32, 0xB8, 0x05, 0xD0, 0xCE, 0x19, 0x15,
0x69, 0xD9, 0xD1, 0x82, 0x1F, 0x62, 0x78, 0x7C, 0x7C, 0x95, 0x96, 0x42, 0x81, 0x50, 0xF5, 0x24,
0x03, 0x3B, 0x65, 0xFD, 0x6E, 0xE9, 0xB4, 0x39, 0x9E, 0x06, 0xB7, 0x61, 0xFD, 0x8B, 0x62, 0xE0,
0x9C, 0xDD, 0xAF, 0x0A, 0xC2, 0x27, 0xA0, 0xB2, 0x63, 0x1D, 0x1B, 0x83, 0xC6, 0x15, 0x0A, 0x06,
0xB5, 0xC4, 0x71, 0x0D, 0xE0, 0xF2, 0x77, 0xD5, 0x7D, 0x1F, 0xF0, 0x4B, 0x39, 0xE0, 0x67, 0x65,
0xC0, 0xAF, 0xD9, 0x9D, 0x6B, 0x91, 0xBC, 0xD1, 0x4D, 0x11, 0x6F, 0x4E, 0xB5, 0x16, 0x17, 0xEB,
0x78, 0x8C, 0x04, 0xFE, 0x2F, 0x86, 0xF5, 0xB3, 0xF1, 0x1C, 0x20, 0x2F, 0xF6, 0x98, 0xC3, 0x74,
0xD0, 0x48, 0x76, 0x9E, 0x93, 0xF0, 0xF6, 0xC6, 0xD9, 0x63, 0x43, 0x83, 0x34, 0xA8, 0x4F, 0x52,
0x19, 0xCF, 0xD2, 0xD3, 0x82, 0x84, 0x1B, 0x32, 0x8E, 0x9C, 0x7E, 0xB2, 0xE9, 0xBE, 0xEE, 0x53,
0x66, 0x27, 0x81, 0x0C, 0x73, 0x14, 0x6A, 0x07, 0x8C, 0x88, 0xCB, 0xE7, 0x13, 0x1D, 0x93, 0x06,
0x91, 0x7B, 0x1F, 0x6D, 0x62, 0xB7, 0x7A, 0xB7, 0x89, 0xDD, 0xEE, 0x36, 0xB1, 0x5D, 0xB9, 0x2F,
0x91, 0x72, 0x9F, 0x70, 0x01, 0xF0, 0xEF, 0x6E, 0xCF, 0xB1, 0x47, 0x57, 0x22, 0x7C, 0xE0, 0xA9,
0x55, 0x7A, 0x90, 0xFB, 0x7A, 0x42, 0x06, 0xD1, 0x94, 0x5A, 0xFD, 0x2A, 0x53, 0xAB, 0x8E, 0x4F,
0xB0, 0x20, 0x8C, 0x42, 0x5B, 0xA6, 0xF4, 0x6A, 0x0A, 0xA3, 0x06, 0x69, 0x72, 0xB6, 0x99, 0x20,
0xBD, 0x82, 0x02, 0x75, 0x7B, 0xA1, 0x93, 0xAC, 0x27, 0x94, 0xFC, 0xB9, 0xFB, 0x13, 0x3E, 0x57,
0x77, 0x26, 0xC0, 0xFA, 0xA9, 0xA6, 0xE3, 0x35, 0x3B, 0xA4, 0x4A, 0x7D, 0x2B, 0xBA, 0x6E, 0xD3,
0xE1, 0x57, 0x11, 0xE4, 0x0D, 0xD9, 0x99, 0xE4, 0xEB, 0xC8, 0x4A, 0x6F, 0x33, 0xED, 0x69, 0xBC,
0xB1, 0x70, 0xD1, 0x63, 0x90, 0x25, 0x91, 0x47, 0x31, 0x26, 0x4D, 0x95, 0x86, 0x05, 0xE7, 0xF2,
0x1E, 0xFC, 0xA0, 0x69, 0x27, 0x83, 0xA6, 0xCE, 0xA9, 0x18, 0xE7, 0xF5, 0xD2, 0x5D, 0xD5, 0x9F,
0x10, 0x0D, 0x29, 0xF9, 0x0C, 0xA3, 0x13, 0x5B, 0x1C, 0x9D, 0x68, 0x39, 0x3A, 0x01, 0x11, 0x3C,
0x12, 0x8A, 0x9F, 0x95, 0x1A, 0x9A, 0xB4, 0x81, 0xC5, 0x04, 0xA4, 0x22, 0xCA, 0x06, 0x20, 0xDB,
0xF3, 0x3D, 0xF1, 0xC2, 0x94, 0x65, 0xB8, 0x44, 0x43, 0xEA, 0x54, 0x33, 0xC9, 0x1A, 0x38, 0xC8,
0xC5, 0xBF, 0x6C, 0x12, 0xB6, 0xFC, 0x2B, 0x33, 0x5B, 0x3B, 0x25, 0xF6, 0x2F, 0x93, 0xD9, 0x52,
0xA7, 0x13, 0x07, 0xF3, 0xD1, 0xFA, 0xFA, 0x03, 0x18, 0xF8, 0x17, 0xE7, 0x1C, 0xA4, 0x41, 0xB3,
0x20, 0x0F, 0x4A, 0xEC, 0xDB, 0x31, 0xDC, 0xEE, 0xC5, 0x89, 0xFD, 0xD0, 0xCA, 0xE0, 0x06, 0x94,
0x13, 0x79, 0x2C, 0xFB, 0x2B, 0xF8, 0x11, 0x7A, 0x50, 0xE4, 0xE6, 0xE9, 0xF1, 0x4B, 0xE3, 0x39,
0x7B, 0xC5, 0x6E, 0x8D, 0x7E, 0xC7, 0x82, 0xBC, 0x7E, 0x9A, 0x84, 0x1F, 0x67, 0x9D, 0x29, 0xCE,
0x1F, 0x34, 0xE1, 0x31, 0x36, 0x1B, 0x4D, 0xEA, 0xD7, 0x07, 0x78, 0xE4, 0x0D, 0x19, 0x67, 0x67,
0x83, 0xA1, 0x40, 0x02, 0x4E, 0x9F, 0x40, 0x75, 0xE1, 0x1C, 0x21, 0x7E, 0x64, 0x63, 0xBD, 0x8E,
0x2F, 0xDB, 0x3F, 0x30, 0x67, 0xB3, 0x16, 0xF6, 0x92, 0xCF, 0x04, 0xEE, 0x06, 0xEE, 0x49, 0x0B,
0x6D, 0xC5, 0x5A, 0xB3, 0xED, 0x13, 0x34, 0xAC, 0x42, 0xBD, 0x88, 0x6F, 0x6E, 0xD5, 0x87, 0x69,
0xB4, 0x92, 0x43, 0x27, 0xA2, 0x43, 0x08, 0x33, 0x44, 0x29, 0x9D, 0x78, 0x57, 0x13, 0xCC, 0x57,
0x98, 0xAF, 0x50, 0x54, 0xBE, 0x1B, 0xD3, 0x2C, 0x56, 0x0A, 0x08, 0x91, 0x30, 0x38, 0xA8, 0xE0,
0xEB, 0xC7, 0x15, 0x68, 0x39, 0x7B, 0x8F, 0x70, 0x9F, 0xF2, 0x88, 0x9C, 0xD2, 0xEF, 0xB2, 0xA9,
0xC1, 0x67, 0x7E, 0x86, 0xE2, 0x2E, 0x87, 0xC8, 0xCA, 0x1E, 0x8C, 0x3D, 0x85, 0xEC, 0xD2, 0x10,
0x94, 0x16, 0x74, 0x53, 0x9C, 0x14, 0xF3, 0x2D, 0x52, 0xD3, 0xA7, 0xAD, 0x7A, 0x15, 0xC4, 0x9E,
0x81, 0xE6, 0x25, 0x36, 0x8F, 0xEA, 0x48, 0x5A, 0xAF, 0x3E, 0xF8, 0x06, 0xAD, 0x33, 0xC7, 0x2A,
0x37, 0x1F, 0x9B, 0x3D, 0x88, 0x07, 0xFD, 0x18, 0x24, 0xAA, 0xB8, 0x6C, 0x7C, 0xCE, 0x63, 0xEE,
0x36, 0xDA, 0x01, 0xCC, 0xC0, 0x25, 0xE0, 0xB2, 0x73, 0x9C, 0x6C, 0xA8, 0x93, 0xE5, 0x26, 0xBE,
0x04, 0x6B, 0xAE, 0xF8, 0x80, 0x9D, 0x51, 0x2F, 0x00, 0x93, 0xF1, 0xB9, 0x2F, 0x89, 0x8B, 0x52,
0x0C, 0x67, 0x41, 0xA4, 0x0B, 0x41, 0x89, 0x2F, 0xDD, 0x62, 0x97, 0x50, 0x1E, 0x5A, 0x59, 0x01,
0x06, 0x95, 0x9E, 0xD9, 0x90, 0xA5, 0x41, 0xCF, 0x88, 0x0B, 0x0F, 0xD5, 0x14, 0x69, 0x52, 0x99,
0x9B, 0x9C, 0x9B, 0xE8, 0xD5, 0x61, 0x3E, 0x3D, 0x90, 0x55, 0x81, 0x6D, 0xE3, 0x5B, 0xFD, 0x17,
0xD5, 0xF0, 0x10, 0xEC, 0x7C, 0x75, 0xF0, 0xDB, 0x3E, 0x3E, 0xD5, 0x9B, 0xA0, 0x5B, 0x0F, 0x9B,
0x6C, 0xB5, 0x82, 0x8D, 0x30, 0x81, 0x8A, 0x2E, 0x40, 0x35, 0x2E, 0xE2, 0xF5, 0xF4, 0x1E, 0x23,
0xEE, 0xC7, 0xF6, 0xED, 0x49, 0xBF, 0x1B, 0xFC, 0xE6, 0xB5, 0x3D, 0xED, 0xFA, 0x84, 0x04, 0x21,
0xEA, 0x3A, 0x4C, 0x36, 0xB8, 0xFA, 0x4E, 0xB7, 0xF4, 0x31, 0x48, 0xF6, 0xDF, 0xF4, 0x3C, 0x07,
0x78, 0x45, 0x59, 0x66, 0x52, 0xDF, 0x68, 0xD7, 0x3E, 0x0E, 0x15, 0xE1, 0xC8, 0xB5, 0x9A, 0x79,
0xB6, 0xEE, 0xE3, 0x21, 0x3E, 0xBB, 0x55, 0x0F, 0xAF, 0xFE, 0x0F, 0xA3, 0x8F, 0xC3, 0x98, 0xCF,
0xF5, 0x9B, 0x54, 0xF2, 0x3B, 0xF5, 0x8E, 0xC2, 0x1B, 0x56, 0x2B, 0xBD, 0xF7, 0xEF, 0x12, 0xA7,
0x1C, 0xBF, 0x54, 0x7D, 0xE3, 0xFF, 0x74, 0x4B, 0xFA, 0xEA, 0x86, 0x3D, 0xD5, 0x22, 0xA4, 0xB5,
0x51, 0x2E, 0x9B, 0x6D, 0xD4, 0xAA, 0x80, 0x8E, 0x35, 0x7B, 0x4F, 0x81, 0xAD, 0x76, 0x8A, 0x20,
0x3E, 0x3B, 0xD3, 0xFB, 0x80, 0xDC, 0x51, 0x4A, 0x42, 0x46, 0xC9, 0x85, 0x09, 0x47, 0x0A, 0x00,
0x5F, 0xB6, 0x7C, 0xA5, 0x1D, 0x52, 0x3F, 0x01, 0xC0, 0x86, 0x40, 0xC6, 0xE7, 0x3D, 0x93, 0x09,
0xF8, 0x23, 0x2C, 0xA4, 0xC9, 0x2B, 0x55, 0x78, 0x61, 0xDF, 0xE8, 0x87, 0x3F, 0xA6, 0xC0, 0x5B,
0xE1, 0x8D, 0x51, 0xE5, 0x88, 0x5B, 0xD0, 0x73, 0x2B, 0x55, 0xF0, 0x43, 0x05, 0xDD, 0xFE, 0x0B,
0xC8, 0x50, 0xCF, 0x74, 0x31, 0x5B, 0x29, 0xAC, 0xC9, 0xCA, 0x13, 0x4E, 0xA3, 0x37, 0x7F, 0x4E,
0xB6, 0xF7, 0x6A, 0x6E, 0x5F, 0x38, 0x6C, 0xC7, 0xFE, 0x8E, 0x3C, 0x2B, 0x4A, 0x84, 0x41, 0x9C,
0x15, 0x57, 0x5A, 0x71, 0x0C, 0x13, 0x39, 0xDA, 0x4D, 0x8E, 0xCB, 0x73, 0x98, 0xF5, 0xB4, 0x2B,
0x20, 0xF2, 0x61, 0xD1, 0xED, 0x13, 0x8D, 0x0F, 0xC8, 0xAB, 0x52, 0xE3, 0x0A, 0x6C, 0xC1, 0x94,
0xCE, 0x33, 0x85, 0xF4, 0x8A, 0x29, 0x4D, 0xD3, 0xF2, 0x7A, 0x18, 0x3F, 0x2F, 0x71, 0x80, 0xF9,
0x7B, 0x80, 0xA4, 0xB0, 0xA7, 0xC3, 0x62, 0x60, 0x32, 0x35, 0xEE, 0xCA, 0xD9, 0xDE, 0xCA, 0x57,
0x0E, 0x08, 0x21, 0x60, 0xA2, 0x5F, 0x22, 0xD9, 0xE3, 0xB1, 0x1B, 0x79, 0xFA, 0xA0, 0x24, 0x8D,
0xB8, 0x9D, 0xD3, 0xE4, 0x01, 0xEE, 0xD4, 0x15, 0xFB, 0x46, 0x45, 0xF8, 0x21, 0x7B, 0xA5, 0x33,
0x36, 0x59, 0x7F, 0x50, 0xB3, 0xC9, 0x0A, 0x14, 0x04, 0x3A, 0x2B, 0x3E, 0x6A, 0xE3, 0xE6, 0xC9,
0x79, 0x23, 0x94, 0x3F, 0x66, 0xF8, 0x3F, 0x66, 0x3B, 0xDF, 0xC2, 0x11, 0x55, 0x6E, 0x77, 0x19,
0xDE, 0x7D, 0x76, 0x57, 0x34, 0xA5, 0xDE, 0xB2, 0xE9, 0x78, 0x48, 0xBA, 0xF4, 0x71, 0xC9, 0x32,
0xE2, 0x8C, 0x90, 0x2A, 0xAE, 0x88, 0x43, 0xB3, 0x10, 0xFA, 0xFA, 0xBB, 0xEF, 0xBF, 0x62, 0x5F,
0x1F, 0x11, 0x06, 0x1B, 0x93, 0x13, 0x58, 0x8A, 0xC3, 0x77, 0x5A, 0x1E, 0x1C, 0xF4, 0xC3, 0x3F,
0x8D, 0x23, 0x68, 0xC4, 0xDF, 0xC1, 0x60, 0xE7, 0x76, 0x7F, 0x00, 0x00, 0x6A, 0x8F, 0xB1, 0xC2,
0xA3, 0x42, 0x37, 0xB0, 0xB1, 0xC7, 0xD1, 0x25, 0x81, 0x82, 0x86, 0x2D, 0x59, 0xDD, 0x44, 0xEF,
0xBC, 0xF7, 0x8F, 0xAC, 0x48, 0x14, 0x0D, 0x50, 0x85, 0x1B, 0x5F, 0x60, 0x82, 0xF0, 0x4A, 0xA5,
0x0E, 0xC6, 0x92, 0xA3, 0x52, 0xF8, 0xC2, 0xB6, 0xF0, 0x21, 0x01, 0xDB, 0x5D, 0x45, 0xCE, 0xE2,
0x9C, 0x4A, 0xAE, 0x8D, 0x7C, 0x9C, 0xA4, 0x92, 0xC7, 0x49, 0xE4, 0xB9, 0x12, 0x73, 0x85, 0xA9,
0x1A, 0x7E, 0x28, 0x36, 0x10, 0x97, 0x9A, 0xA4, 0x09, 0x06, 0x8E, 0x0A, 0xA4, 0x2C, 0x67, 0x02,
0x9A, 0xE4, 0x9C, 0x60, 0xA9, 0xE0, 0x4B, 0x10, 0x43, 0xF6, 0x87, 0xC5, 0xA3, 0xB4, 0x05, 0x5C,
0x5B, 0xE4, 0x63, 0xC0, 0x29, 0xA3, 0xAD, 0xCE, 0x27, 0xC6, 0xE3, 0xB4, 0x2D, 0x74, 0x85, 0x8C,
0x37, 0x57, 0x3B, 0xD6, 0x34, 0x7D, 0xF7, 0x60, 0xF1, 0x7F, 0xCB, 0x10, 0xC2, 0x8F, 0xE5, 0xCE,
0x00, 0xEE, 0xB0, 0x0B, 0x54, 0xA4, 0xFE, 0x00, 0xF7, 0xA3, 0xAF, 0x01, 0xE1, 0x38, 0x4A, 0x84,
0xA4, 0x37, 0x57, 0xB2, 0x2B, 0x9D, 0xE3, 0x4E, 0xB6, 0xC1, 0xD9, 0xED, 0xA4, 0xFE, 0x94, 0xDC,
0x49, 0x07, 0xCE, 0x29, 0x40, 0x37, 0x65, 0x06, 0x64, 0x63, 0xFB, 0xB9, 0x16, 0x44, 0x7E, 0x94,
0x3B, 0xE1, 0x65, 0x8E, 0xFA, 0xC3, 0x84, 0xF7, 0x0D, 0x32, 0xA9, 0x5F, 0x82, 0xBD, 0x72, 0x42,
0x3D, 0x9C, 0x17, 0x8D, 0x4F, 0xA1, 0x7C, 0x57, 0x0A, 0x0F, 0x53, 0x11, 0x99, 0xDF, 0x08, 0x0D,
0x2B, 0xAB, 0x8D, 0x73, 0x39, 0x40, 0x08, 0xA5, 0x3F, 0x06, 0x2D, 0x1C, 0xA6, 0xFD, 0x16, 0x4D,
0x9E, 0xEA, 0xD9, 0x39, 0x77, 0x6E, 0x8E, 0x97, 0xF1, 0xC6, 0x5E, 0x7C, 0x51, 0x87, 0x59, 0x3B,
0x83, 0xD7, 0xB1, 0xAA, 0x74, 0x83, 0x3E, 0x56, 0x1A, 0x76, 0x87, 0x58, 0x1B, 0xA8, 0xC5, 0xEB,
0xB4, 0x31, 0x07, 0x53, 0xEA, 0xE9, 0xC9, 0x13, 0x66, 0xF0, 0xFB, 0x8C, 0x8D, 0xBD, 0x2D, 0x33,
0x18, 0x20, 0x19, 0x30, 0x2E, 0xAE, 0x42, 0x8E, 0x75, 0xB0, 0x18, 0xE4, 0xF7, 0x50, 0x6A, 0x60,
0x4E, 0x5A, 0x15, 0x88, 0x62, 0x96, 0x9B, 0xB1, 0x01, 0x61, 0x27, 0xBC, 0x4E, 0xC4, 0xF2, 0x8D,
0x99, 0xF3, 0x54, 0x32, 0x8B, 0x13, 0x3A, 0x4F, 0x48, 0x07, 0xC2, 0x81, 0x19, 0x6D, 0xCB, 0x03,
0x66, 0xE8, 0x6D, 0x86, 0x8D, 0x47, 0xF4, 0x7C, 0x14, 0x26, 0x2B, 0x23, 0x51, 0x66, 0x19, 0xB9,
0x4C, 0x0D, 0x83, 0xEA, 0x20, 0xD7, 0x75, 0x6C, 0x12, 0xBF, 0x9E, 0x62, 0xFD, 0xDC, 0x3D, 0x12,
0x2F, 0xA5, 0xEB, 0xCA, 0x3D, 0x68, 0x82, 0x57, 0x7C, 0xA6, 0x92, 0x3C, 0x49, 0xCD, 0x24, 0x87,
0xB9, 0xCC, 0x84, 0x99, 0x0F, 0x42, 0xEE, 0xF3, 0xBF, 0xF7, 0xF9, 0x20, 0xAF, 0x2D, 0x82, 0x57,
0x40, 0xCE, 0x3A, 0x7A, 0x80, 0x07, 0x71, 0x7F, 0x4E, 0x7F, 0x9E, 0x58, 0x1B, 0x2A, 0xFB, 0x3E,
0x64, 0xD9, 0x82, 0x79, 0xAD, 0x4E, 0x1F, 0xD0, 0x43, 0xC2, 0x8E, 0x53, 0xA7, 0x60, 0x44, 0x6D,
0x07, 0x82, 0x71, 0x65, 0x87, 0x5B, 0x5F, 0x5C, 0xD8, 0xA7, 0xEE, 0xF7, 0x73, 0x92, 0x38, 0xBC,
0xDC, 0x38, 0xB7, 0x1C, 0x6F, 0x1C, 0x10, 0x94, 0x1D, 0x33, 0x1B, 0x53, 0x50, 0x32, 0x9C, 0x20,
0xA5, 0x41, 0xD6, 0x30, 0xD9, 0x96, 0xE2, 0x33, 0x6D, 0xF0, 0xD3, 0xF6, 0xFB, 0xF2, 0xE0, 0x51,
0x8D, 0x68, 0xCB, 0xD5, 0x19, 0x07, 0x77, 0x4B, 0x97, 0xC1, 0xCE, 0x53, 0x54, 0x32, 0x4D, 0x01,
0xF9, 0xF4, 0xD9, 0x47, 0x9C, 0x2F, 0x62, 0xE9, 0x2C, 0x96, 0xF8, 0xC1, 0xD9, 0xDA, 0x42, 0xAD,
0x07, 0x9D, 0xD7, 0x1B, 0xF6, 0x0B, 0x55, 0x74, 0x77, 0xA7, 0xC6, 0xF8, 0x27, 0xD2, 0x72, 0xE0,
0x00, 0x47, 0x58, 0xDF, 0x73, 0x7E, 0x63, 0xE9, 0x93, 0x3F, 0xE3, 0xAB, 0x5C, 0x4B, 0x2F, 0x77,
0x03, 0x41, 0x92, 0x63, 0x77, 0x53, 0xA9, 0x2E, 0x76, 0xB3, 0x97, 0xF7, 0x7C, 0x12, 0xC2, 0x9B,
0x9E, 0x84, 0xE8, 0xA2, 0x79, 0xCD, 0x2C, 0x2E, 0xE1, 0x6D, 0x30, 0xE3, 0x47, 0xC4, 0xDF, 0x09,
0x2C, 0x92, 0x34, 0xE6, 0x63, 0x51, 0x8D, 0xFA, 0x5A, 0x7B, 0xC4, 0xD8, 0x7C, 0x0C, 0x35, 0x97,
0x16, 0xAF, 0x54, 0xEF, 0x02, 0x97, 0xF5, 0xBA, 0x3A, 0x1E, 0x9F, 0xFB, 0x6B, 0x04, 0x58, 0x14,
0x23, 0x1F, 0x15, 0x64, 0x47, 0x83, 0xA9, 0x9F, 0x6E, 0x71, 0x06, 0x40, 0x8A, 0x97, 0xDC, 0x43,
0x4A, 0x52, 0x33, 0x30, 0x1B, 0xAC, 0xF1, 0x45, 0x2D, 0xEF, 0xFC, 0x96, 0x0D, 0x59, 0xED, 0xB3,
0x1B, 0xB6, 0x89, 0x64, 0x64, 0x91, 0xC7, 0x81, 0x70, 0xA3, 0xEB, 0x4C, 0x1C, 0xA2, 0xFC, 0x23,
0xA4, 0x70, 0x84, 0x0A, 0x3A, 0xE6, 0xF5, 0x8F, 0xB6, 0x9C, 0xFD, 0x29, 0x65, 0x3A, 0x48, 0x0D,
0x48, 0x8E, 0x10, 0xBF, 0x11, 0x23, 0x4B, 0xE3, 0x77, 0x33, 0xAF, 0x0B, 0xAF, 0xB7, 0x61, 0x9D,
0x1C, 0xFF, 0x7B, 0x7D, 0xAB, 0xCF, 0xE0, 0x41, 0xCF, 0xDB, 0x2A, 0x79, 0x97, 0x0D, 0xA9, 0xFB,
0x32, 0x39, 0x43, 0xF5, 0x7A, 0xD1, 0xCD, 0x7D, 0x04, 0x67, 0x59, 0x08, 0xCA, 0xDD, 0xB7, 0x3F,
0x62, 0x9C, 0x06, 0x9C, 0x7F, 0xC5, 0x8E, 0xD1, 0xD0, 0xB1, 0x40, 0xA0, 0x59, 0xDD, 0x06, 0x5A,
0x7A, 0xF6, 0x27, 0xEB, 0xCD, 0xF0, 0x7F, 0xE6, 0xC1, 0xC7, 0x58, 0x32, 0x79, 0xD0, 0x0E, 0x3C,
0xF6, 0xA4, 0x7E, 0x64, 0x07, 0x37, 0x6D, 0xCC, 0x7A, 0xC6, 0x43, 0xD4, 0x90, 0xF0, 0xAA, 0x0C,
0xEA, 0x48, 0xF9, 0xA8, 0xFE, 0x24, 0x13, 0xF0, 0x58, 0x7E, 0x6D, 0x50, 0x4F, 0x36, 0x8C, 0xA1,
0x19, 0x1B, 0xC4, 0xA9, 0x6B, 0x95, 0xC3, 0x53, 0x2C, 0xB2, 0xE8, 0x39, 0xC8, 0x42, 0xF7, 0xA0,
0xFD, 0xDC, 0x2E, 0xED, 0xEB, 0x13, 0xED, 0xDE, 0x77, 0xEC, 0x5F, 0x08, 0xD7, 0xF3, 0xFD, 0xB4,
0xAF, 0xFF, 0xE8, 0xC7, 0x0A, 0x3F, 0x46, 0x61, 0xEC, 0x28, 0x04, 0x12, 0xA8, 0xBC, 0xE7, 0xB7,
0x53, 0x95, 0xB4, 0xD3, 0x8C, 0xFE, 0xB0, 0x3B, 0xA3, 0xFF, 0x9F, 0x95, 0x54, 0xBF, 0x8F, 0x1C,
0x35, 0x14, 0xFE, 0x66, 0x4C, 0x70, 0x2E, 0x4E, 0xE4, 0x2B, 0x82, 0x74, 0xC5, 0x49, 0x4E, 0x91,
0x02, 0xA4, 0x64, 0x27, 0x91, 0x2E, 0x5D, 0x6E, 0x6D, 0xB1, 0x45, 0x0A, 0x40, 0x49, 0xC1, 0x56,
0xA4, 0x08, 0x4D, 0x24, 0xAA, 0xCB, 0x1F, 0x70, 0xB7, 0x33, 0x70, 0xC5, 0x29, 0xDD, 0x15, 0x48,
0x14, 0x14, 0x50, 0x22, 0xD1, 0x50, 0xA4, 0xD8, 0x62, 0xF7, 0xD6, 0x77, 0x57, 0xD2, 0xCC, 0x29,
0x54, 0x34, 0x71, 0x02, 0x0D, 0x0D, 0x31, 0x60, 0x29, 0x13, 0xF0, 0xAE, 0x79, 0x33, 0x17, 0x94,
0x14, 0x51, 0x48, 0xEC, 0xF1, 0xF8, 0xC7, 0xBC, 0xF7, 0xD9, 0xCF, 0xEF, 0xFB, 0xE6, 0xF6, 0xED,
0x67, 0xE5, 0x16, 0xF2, 0x93, 0x45, 0xE5, 0xF5, 0xFE, 0x97, 0x4B, 0xD8, 0x7D, 0xE9, 0x93, 0x59,
0xDC, 0xC1, 0x99, 0x94, 0xEC, 0x69, 0x7B, 0x67, 0xDF, 0x5A, 0xBC, 0xAA, 0x32, 0x73, 0x06, 0x97,
0x90, 0xD2, 0x1A, 0x3B, 0xC3, 0xD8, 0x00, 0xEC, 0x55, 0x75, 0xF8, 0x71, 0x5A, 0xA4, 0xC5, 0xF1,
0xFB, 0x9D, 0xE1, 0xF0, 0x7A, 0x4A, 0x7F, 0xA5, 0x14, 0x87, 0xC3, 0xA1, 0x4E, 0xE9, 0x71, 0x4A,
0xCD, 0xB0, 0x2B, 0x65, 0x7A, 0x5E, 0xE2, 0x4B, 0x96, 0x62, 0x51, 0x8A, 0x07, 0x07, 0x4F, 0xFC,
0xF4, 0x8D, 0x06, 0xCF, 0x77, 0x01, 0xF0, 0xC2, 0xC4, 0x6C, 0xAA, 0x6D, 0x3F, 0x12, 0xF5, 0x82,
0xD7, 0x99, 0x99, 0xF1, 0x76, 0xD8, 0x14, 0xAC, 0xCA, 0x4C, 0x94, 0x75, 0x94, 0x5F, 0xF8, 0x2D,
0x61, 0x0A, 0xEE, 0xF7, 0xB8, 0xD3, 0x59, 0x10, 0xF6, 0x02, 0xCC, 0xB2, 0x62, 0x47, 0x8D, 0x96,
0x07, 0x7E, 0x24, 0x0F, 0xC2, 0x48, 0x3E, 0x8A, 0x6A, 0x50, 0x33, 0x37, 0xE6, 0x3E, 0x32, 0x1F,
0xB9, 0x8B, 0xF4, 0x45, 0x0D, 0x5C, 0x5F, 0x56, 0xCB, 0x27, 0x90, 0x99, 0x1B, 0x5A, 0xDA, 0xB9,
0x1E, 0xF8, 0x28, 0xB7, 0xDD, 0xA4, 0xE0, 0x47, 0xE1, 0x22, 0xE1, 0x89, 0xFD, 0x58, 0x8A, 0x47,
0x8D, 0xDA, 0x71, 0xF4, 0x75, 0x4B, 0x99, 0x49, 0x81, 0x1F, 0x2E, 0x40, 0x03, 0x0D, 0x58, 0x0D,
0x85, 0xCF, 0xA6, 0xDF, 0xA7, 0xF4, 0xFB, 0x37, 0x9F, 0x98, 0xAB, 0x80, 0x87, 0xB0, 0xE8, 0x03,
0x01, 0xBC, 0x46, 0x01, 0x44, 0x64, 0x37, 0x00, 0xE6, 0xDB, 0x11, 0xD6, 0x41, 0xD6, 0x6F, 0x7F,
0xF5, 0xF3, 0x76, 0x4A, 0xEE, 0xB7, 0xA7, 0xF7, 0xBA, 0xB9, 0x81, 0xA4, 0xAC, 0x38, 0x98, 0xB0,
0xAC, 0xD3, 0x5C, 0xA5, 0x04, 0xDE, 0xCD, 0x09, 0x1C, 0x23, 0xE0, 0x04, 0x20, 0xDC, 0xEC, 0x7E,
0xBA, 0x1E, 0x55, 0xBD, 0x0C, 0x55, 0xF1, 0x45, 0x96, 0x9A, 0x32, 0x3D, 0x48, 0x3B, 0x8B, 0xAC,
0xC1, 0x32, 0x50, 0x6C, 0xFC, 0x13, 0x63, 0x2F, 0xFF, 0x33, 0xAA, 0x07, 0x7E, 0xA6, 0xB2, 0xD0,
0xA3, 0x5D, 0xD5, 0x86, 0x55, 0xB5, 0x7C, 0xEC, 0x85, 0x67, 0x7F, 0x7B, 0x3A, 0x4A, 0xD3, 0x19,
0x1D, 0xD3, 0xE4, 0xE8, 0x4D, 0x68, 0x72, 0xED, 0x75, 0x68, 0x92, 0x57, 0xC2, 0xBD, 0xF7, 0xDD,
0xA7, 0x77, 0xB3, 0xEA, 0xFF, 0x2B, 0xBB, 0x09, 0xF6, 0x21, 0xD8, 0x47, 0x3A, 0xAD, 0xDA, 0xB5,
0x43, 0x76, 0xF3, 0xF4, 0x15, 0x7B, 0x09, 0xED, 0x7E, 0xC0, 0x69, 0xE0, 0xD5, 0x43, 0x90, 0xF3,
0x65, 0xCB, 0x57, 0xB1, 0x96, 0xE2, 0x65, 0x7B, 0xE9, 0x8A, 0x25, 0x84, 0xD7, 0x70, 0xFB, 0x6F,
0x48, 0xE5, 0x56, 0xFB, 0xDA, 0xA8, 0xDB, 0xFC, 0x00, 0xB3, 0xD8, 0xA6, 0x10, 0x28, 0x37, 0xAA,
0xC2, 0x50, 0xAF, 0x99, 0x53, 0x15, 0xF5, 0xAA, 0x6A, 0x64, 0x6B, 0x2D, 0xEA, 0x2D, 0xD1, 0xF6,
0x79, 0xD0, 0xDC, 0x9E, 0x25, 0x6E, 0xCC, 0xCA, 0x6D, 0xBA, 0x3C, 0xB1, 0x90, 0x69, 0xFB, 0x61,
0x8A, 0x22, 0x3D, 0x5C, 0xBC, 0xEF, 0xA3, 0x16, 0x0F, 0x23, 0x72, 0x3F, 0x15, 0xF7, 0xBD, 0x46,
0x16, 0x74, 0xFE, 0x47, 0xEB, 0x4D, 0x2D, 0x6E, 0x71, 0x07, 0xE2, 0xD8, 0x5E, 0x31, 0xF0, 0x98,
0x60, 0x31, 0xE3, 0x4F, 0x1A, 0x4C, 0x51, 0x24, 0x10, 0x8B, 0x35, 0xF2, 0x05, 0x44, 0xE8, 0xA2,
0x6A, 0x4B, 0x6E, 0xFA, 0xC2, 0xCD, 0xD5, 0xA1, 0x5F, 0xCF, 0xAB, 0xDC, 0xEC, 0xCA, 0x1D, 0xB7,
0x57, 0x6C, 0x87, 0xA8, 0x7E, 0x74, 0x51, 0xB3, 0xA3, 0x70, 0xAA, 0x5D, 0x3D, 0xB7, 0x44, 0x79,
0xE4, 0x6E, 0x4F, 0x1E, 0x34, 0xFA, 0x03, 0x17, 0xC9, 0x78, 0x4F, 0xEE, 0x37, 0x9A, 0xD5, 0x13,
0x65, 0xBE, 0x5D, 0xCD, 0xAB, 0x15, 0xEE, 0x4A, 0x16, 0x94, 0x8D, 0xCC, 0xAD, 0xAE, 0xE4, 0x66,
0x24, 0x6D, 0x29, 0x6B, 0x7D, 0xCD, 0xAB, 0xC3, 0x40, 0x76, 0xCC, 0x4D, 0x32, 0x7B, 0x9E, 0xD6,
0x6F, 0x91, 0x7E, 0xB6, 0xB8, 0x9F, 0x2B, 0x4B, 0xFB, 0x05, 0x7A, 0x46, 0x8C, 0xA4, 0x61, 0xFB,
0xC2, 0x06, 0x8E, 0xDD, 0x15, 0xBA, 0x23, 0x3A, 0x77, 0xE9, 0xF8, 0x2F, 0x9E, 0x3E, 0xA0, 0x07,
0x5D, 0x95, 0xA6, 0x34, 0xBA, 0x92, 0x1E, 0x8B, 0x96, 0xAA, 0xF7, 0xC0, 0x2B, 0xEE, 0xF3, 0x88,
0x84, 0x59, 0x3E, 0x17, 0xBE, 0xA8, 0x2E, 0xE2, 0x1C, 0xB0, 0x32, 0xE1, 0x76, 0xB3, 0x27, 0xAC,
0x17, 0x9F, 0x33, 0x9B, 0x3B, 0x69, 0x30, 0x5E, 0xC7, 0x5B, 0xBD, 0x40, 0x82, 0x3A, 0x6A, 0x7A,
0xD2, 0x05, 0x5C, 0x1D, 0x93, 0x2A, 0x7A, 0xA4, 0x18, 0x69, 0xE4, 0xCE, 0x61, 0xDD, 0x13, 0x75,
0x18, 0x73, 0x7B, 0xB5, 0xF5, 0xC5, 0x59, 0xDC, 0xE0, 0x5E, 0x59, 0x5D, 0x2D, 0x30, 0xE7, 0x9E,
0xFB, 0xC2, 0x16, 0xED, 0x90, 0x79, 0xE6, 0xA5, 0x95, 0x76, 0x84, 0x7E, 0x16, 0xB2, 0xC0, 0x2D,
0xB7, 0x05, 0xD1, 0x7B, 0x8C, 0x7B, 0xA4, 0xBB, 0x36, 0x45, 0xD5, 0x3A, 0x66, 0x2C, 0xB2, 0x28,
0x1D, 0xB7, 0xBD, 0x17, 0xFF, 0x13, 0xC3, 0xEB, 0xF3, 0xD4, 0x9A, 0x9C, 0xA4, 0xD6, 0x66, 0x93,
0x62, 0xEA, 0x44, 0xD8, 0xB6, 0x9C, 0x5A, 0x16, 0xD0, 0x29, 0x8C, 0x32, 0x03, 0x6C, 0xA2, 0x93,
0x66, 0x47, 0x8B, 0xE2, 0x59, 0x23, 0x5D, 0x76, 0x8E, 0x6D, 0x13, 0x84, 0x94, 0xBB, 0x67, 0xA9,
0x52, 0x2E, 0x9F, 0xF3, 0x64, 0x49, 0x84, 0x44, 0x84, 0x83, 0x81, 0xDF, 0x9D, 0x92, 0x5F, 0x7B,
0x32, 0x34, 0x04, 0xDC, 0x27, 0x99, 0x2B, 0xD3, 0x2E, 0x88, 0x9F, 0xF0, 0xD4, 0x24, 0xAB, 0x1A,
0x1E, 0xB0, 0xD7, 0x79, 0xD2, 0x99, 0x27, 0x74, 0x6B, 0xCA, 0x4A, 0x47, 0xD7, 0x37, 0x86, 0x6C,
0x59, 0x47, 0xA1, 0x03, 0x73, 0x02, 0x8D, 0x65, 0x64, 0x84, 0xC9, 0xFD, 0x79, 0x2D, 0x08, 0x47,
0x38, 0x6C, 0xCA, 0x3A, 0xEF, 0xC2, 0x97, 0x55, 0x9F, 0x8C, 0xA7, 0x46, 0x81, 0xF0, 0x50, 0x1A,
0x8A, 0x94, 0x94, 0xBF, 0x4E, 0xC9, 0xA1, 0x1C, 0x50, 0x56, 0x66, 0x04, 0xB6, 0x79, 0x8C, 0xA4,
0x09, 0xB3, 0xB0, 0x33, 0x23, 0x5D, 0x0A, 0xDC, 0xEB, 0x94, 0xC7, 0x25, 0x69, 0x17, 0x14, 0x32,
0x51, 0x3D, 0x48, 0x9B, 0x05, 0xE6, 0x72, 0xBA, 0x49, 0x3A, 0xE9, 0x66, 0xF6, 0x94, 0x00, 0xCB,
0x5A, 0x54, 0xD2, 0x65, 0xED, 0x41, 0xC6, 0x54, 0x67, 0x54, 0xB5, 0x2D, 0x6C, 0x17, 0x4F, 0x5B,
0x8A, 0x5F, 0xF3, 0xC3, 0xB4, 0xD8, 0xD8, 0xF8, 0x3A, 0xC5, 0xB5, 0x6C, 0x66, 0x8E, 0xB9, 0x7A,
0x6E, 0x29, 0xAB, 0xE8, 0x57, 0x4B, 0xAC, 0xE9, 0xC8, 0xC8, 0x42, 0xDB, 0x75, 0x7C, 0xB4, 0x91,
0xD8, 0x35, 0x6D, 0x29, 0x39, 0xF0, 0xA7, 0x32, 0xFB, 0x2E, 0xC7, 0xBF, 0xAD, 0x90, 0x41, 0x4A,
0x03, 0x31, 0x18, 0x46, 0xBF, 0x24, 0xC8, 0x2C, 0x66, 0x11, 0xF1, 0x02, 0x73, 0x83, 0xE6, 0x02,
0x2D, 0x19, 0x74, 0xD1, 0x45, 0xAF, 0xD4, 0x3A, 0xA9, 0x17, 0xD0, 0x1B, 0x78, 0x8D, 0x2E, 0xD2,
0x4E, 0xBC, 0xC1, 0x2C, 0x84, 0x6E, 0x03, 0x5E, 0xE0, 0x2F, 0x04, 0x8C, 0x90, 0x99, 0xDF, 0x11,
0x5C, 0xBA, 0x10, 0x74, 0xFD, 0xF1, 0xC1, 0x7B, 0x0F, 0x9D, 0xD3, 0x1C, 0x46, 0xB3, 0x1E, 0x76,
0x56, 0xA4, 0x52, 0x9F, 0xA3, 0x6D, 0xF6, 0xD9, 0xEA, 0xD0, 0x17, 0xF4, 0x0E, 0x10, 0x04, 0x13,
0xE4, 0x84, 0x45, 0x92, 0x6F, 0xC1, 0x34, 0x92, 0x0E, 0x0D, 0x8F, 0x96, 0x09, 0x5B, 0x48, 0x02,
0x38, 0x55, 0x1C, 0x16, 0xC0, 0x08, 0xC5, 0x2D, 0x3A, 0xC0, 0x43, 0x11, 0xBA, 0x96, 0xD3, 0xFC,
0x01, 0x9A, 0xA1, 0xE1, 0xFA, 0x55, 0xB0, 0xB3, 0x5C, 0xBF, 0xA4, 0xAC, 0x1F, 0x5D, 0xF6, 0xA6,
0xE2, 0xD8, 0x24, 0x58, 0x7E, 0x66, 0xBE, 0xBD, 0xEC, 0x49, 0x24, 0x64, 0x14, 0xEC, 0x60, 0xD1,
0xB4, 0x55, 0x00, 0x3A, 0x57, 0x73, 0xD8, 0x19, 0x49, 0x5E, 0x9D, 0x43, 0xED, 0x41, 0x5E, 0xEF,
0xD3, 0x4C, 0xC4, 0x13, 0xFA, 0x27, 0xA0, 0x6F, 0x35, 0xBB, 0x62, 0xD4, 0xB0, 0xD5, 0x0F, 0x64,
0x39, 0x98, 0x11, 0x15, 0x89, 0x5E, 0x72, 0x54, 0x19, 0x30, 0x9B, 0x30, 0x32, 0xA6, 0xA5, 0xBA,
0x90, 0xDE, 0xB8, 0xED, 0x4A, 0xC6, 0x77, 0xBD, 0xCE, 0x4B, 0x3D, 0xC3, 0x7D, 0x8B, 0xC6, 0x9F,
0x45, 0x21, 0x8E, 0xBA, 0x5C, 0x95, 0x99, 0x25, 0x09, 0x92, 0xA4, 0x48, 0x45, 0x93, 0xBB, 0xAF,
0x6D, 0xBE, 0x15, 0x23, 0x83, 0x47, 0x35, 0xE0, 0x1E, 0x75, 0xC4, 0x11, 0xDA, 0x81, 0xF9, 0x8E,
0x0B, 0xC4, 0xA4, 0x38, 0xC6, 0x7C, 0xBD, 0xC2, 0x49, 0x72, 0x7B, 0x43, 0xF0, 0xE2, 0x64, 0xA7,
0xFA, 0xE3, 0x0F, 0xE1, 0xD4, 0x2F, 0xC3, 0xA5, 0xFF, 0x0D, 0xF7, 0x09, 0x1D, 0x50, 0x31, 0x4E,
0xC4, 0x30, 0x10, 0x9C, 0xC4, 0x12, 0x91, 0xB0, 0x84, 0xAF, 0x43, 0x88, 0x22, 0x4F, 0xB8, 0x0F,
0x20, 0xD9, 0x15, 0x35, 0x05, 0xA2, 0xA1, 0xE0, 0x09, 0x79, 0x00, 0x48, 0x31, 0xF7, 0x02, 0x9A,
0x7B, 0xC7, 0xB5, 0x54, 0x24, 0xBC, 0x00, 0x4B, 0x88, 0x3E, 0xCD, 0x09, 0x4A, 0x4B, 0x5C, 0x91,
0x13, 0x49, 0x86, 0xB5, 0xAB, 0x5D, 0xED, 0xCE, 0xCE, 0xCC, 0x0E, 0x5A, 0xD2, 0xAF, 0xC9, 0x01,
0xBC, 0x3B, 0xC0, 0xFA, 0x2B, 0x98, 0x70, 0x86, 0x2A, 0x02, 0xE5, 0x04, 0x80, 0xEC, 0x61, 0x65,
0x59, 0xEF, 0x6F, 0xA0, 0x65, 0xB8, 0x96, 0x5E, 0x73, 0x04, 0xAC, 0x03, 0xEA, 0x00, 0xB4, 0xF4,
0x02, 0x90, 0x06, 0xD0, 0x47, 0x19, 0x09, 0xBE, 0xFE, 0x3E, 0x08, 0xC9, 0x13, 0xF4, 0x70, 0x01,
0x95, 0x6F, 0x66, 0x18, 0x12, 0x45, 0xBB, 0x75, 0x25, 0x05, 0x4B, 0x46, 0x9C, 0x1F, 0x6F, 0x81,
0xA4, 0x60, 0x01, 0xB5, 0xDB, 0xDE, 0xBF, 0x53, 0x3C, 0xD8, 0xEB, 0x6E, 0x00, 0x1A, 0xA1, 0x44,
0xD6, 0x9E, 0x73, 0x7D, 0x9C, 0xBB, 0x3E, 0x37, 0x4B, 0x35, 0xE6, 0x6A, 0xDD, 0xA2, 0x92, 0x62,
0x1D, 0xEC, 0x26, 0x26, 0xE1, 0x58, 0x87, 0x44, 0x55, 0x4E, 0xE6, 0x97, 0xA3, 0x80, 0xD8, 0xC4,
0xEE, 0xC7, 0xEC, 0xC4, 0x58, 0x34, 0x41, 0xF7, 0xAE, 0xA6, 0x57, 0xB1, 0x9C, 0xF3, 0x07, 0x13,
0xEC, 0xA0, 0x04, 0xDD, 0x42, 0xCD, 0x58, 0xC4, 0xDD, 0xF3, 0xCA, 0xFA, 0xD6, 0xC3, 0xFC, 0x7D,
0x54, 0x81, 0x0B, 0x4A, 0x7E, 0x72, 0xE8, 0xE8, 0x24, 0x8B, 0x26, 0x89, 0x5C, 0x2E, 0x4E, 0xDC,
0x4F, 0xA8, 0x96, 0x87, 0x5E, 0xF0, 0xAF, 0x32, 0x3F, 0xCD, 0xF9, 0xE8, 0x94, 0x0D, 0x25, 0x8B,
0x42, 0xD8, 0xCA, 0xF4, 0x93, 0x4D, 0x4F, 0x36, 0x5F, 0x0E, 0x45, 0x32, 0x6E, 0x22, 0x56, 0xE8,
0xF6, 0x6F, 0x69, 0xD7, 0xE3, 0x84, 0x2F, 0xF8, 0x07, 0x75, 0x52, 0x41, 0x8A, 0xD4, 0x40, 0x14,
0x7D, 0x55, 0x11, 0x02, 0x06, 0xAD, 0xAD, 0x82, 0x90, 0xAD, 0xC8, 0x40, 0xB6, 0xAE, 0xBA, 0x72,
0x83, 0x6E, 0xF0, 0x20, 0x5E, 0x60, 0xEC, 0x0E, 0xF4, 0xCA, 0xD5, 0xCC, 0x39, 0xB2, 0x71, 0xEB,
0x62, 0xA6, 0x3B, 0x3A, 0x2B, 0x57, 0x1D, 0x99, 0x0B, 0x04, 0xE6, 0x00, 0x96, 0x43, 0x41, 0x07,
0xA7, 0x92, 0xEF, 0xAB, 0x74, 0x5C, 0x88, 0xE3, 0x87, 0x47, 0xA5, 0x7E, 0xD5, 0x7F, 0xEF, 0xFD,
0x5F, 0x01, 0x18, 0xCF, 0x08, 0xD3, 0x10, 0xED, 0x69, 0xCD, 0x44, 0xE4, 0x86, 0x70, 0x7B, 0x91,
0x90, 0x31, 0x89, 0x1D, 0x91, 0xF1, 0x04, 0x15, 0xE6, 0x78, 0x09, 0xE4, 0x2D, 0xF2, 0x01, 0x85,
0xB4, 0xC5, 0xE6, 0x3A, 0xBB, 0x38, 0x54, 0x5B, 0x57, 0x21, 0x00, 0x76, 0x22, 0x49, 0x1C, 0xFE,
0xD9, 0x4C, 0xA1, 0x48, 0xA3, 0xE2, 0x26, 0x8F, 0x7C, 0xC1, 0x50, 0x67, 0x1B, 0xB5, 0x88, 0x9E,
0x27, 0x84, 0x26, 0x10, 0xF1, 0x62, 0x2E, 0x79, 0xF3, 0x5F, 0x46, 0x0B, 0x65, 0xBE, 0xA8, 0xBB,
0xFB, 0x76, 0x18, 0x7A, 0xC3, 0xFA, 0x7D, 0x8F, 0x8C, 0x95, 0x9F, 0x81, 0x4B, 0x0D, 0xED, 0x4D,
0x93, 0x76, 0xA9, 0xCB, 0x4B, 0x84, 0x0D, 0xE9, 0xD9, 0x8D, 0xD8, 0xBA, 0x1E, 0x4C, 0xA3, 0x7D,
0xE2, 0xD9, 0xAC, 0x4B, 0xCB, 0x89, 0xDF, 0xC3, 0x78, 0x88, 0x37, 0xE2, 0xAF, 0x7E, 0xB9, 0xDB,
0xBB, 0xD2, 0x54, 0x58, 0x44, 0x07, 0x49, 0xA7, 0x97, 0x1F, 0x8B, 0xC5, 0xF9, 0xE2, 0xA1, 0xB3,
0x23, 0x6C, 0x17, 0xB3, 0x8C, 0x27, 0x93, 0x03, 0x13, 0x60, 0xA4, 0xC9, 0x25, 0xA4, 0x87, 0x03,
0xDE, 0xFD, 0xFC, 0x63, 0x67, 0xF9, 0x4D, 0x1D, 0x8F, 0xAD, 0x15, 0x97, 0x48, 0x87, 0xA2, 0x83,
0xEE, 0xC0, 0x21, 0x5A, 0x11, 0x36, 0x1A, 0x1B, 0x8E, 0xCE, 0x59, 0x6D, 0xE3, 0xFD, 0xE9, 0xF3,
0xB5, 0xD5, 0x7D, 0x28, 0xB6, 0xF7, 0xDE, 0xFC, 0xA0, 0x3F, 0x09, 0x63, 0x7D, 0x19, 0xA0, 0x06,
0x28, 0x0F, 0x55, 0x3E, 0x72, 0x1F, 0xF6, 0x29, 0xC2, 0x2E, 0x71, 0x3B, 0xD3, 0xAC, 0xAD, 0x8C,
0x22, 0x43, 0xFD, 0xA9, 0xE1, 0x21, 0x5F, 0xE3, 0x03, 0xB0, 0x9A, 0x47, 0x16, 0x9F, 0xD1, 0xE2,
0x0C, 0x41, 0xF7, 0x89, 0x2B, 0x2A, 0xF3, 0xD5, 0xC3, 0xE6, 0x64, 0xE7, 0x0C, 0xDC, 0x58, 0xD7,
0x65, 0x7C, 0x80, 0x61, 0x6A, 0xFD, 0xA4, 0xC2, 0x9E, 0x90, 0xB2, 0x26, 0xED, 0x66, 0xD0, 0x4A,
0xC4, 0x4D, 0x7B, 0xBA, 0x04, 0x16, 0x8B, 0x22, 0x9A, 0xA2, 0xC4, 0x4A, 0xC7, 0x4C, 0x41, 0xE8,
0x79, 0x1E, 0x31, 0xB1, 0x6F, 0x51, 0xE4, 0x55, 0xE6, 0x46, 0x2D, 0xA6, 0xBF, 0x76, 0xC7, 0xDB,
0xA5, 0x79, 0x05, 0x47, 0xCB, 0x06, 0x7F, 0x2F, 0x8A, 0x4B, 0x6E, 0x66, 0xA3, 0x51, 0xD8, 0x94,
0x27, 0x06, 0x14, 0x25, 0x07, 0xE5, 0xE3, 0x2F, 0xC1, 0x8C, 0xE2, 0x13, 0xE3, 0x9C, 0x89, 0x81,
0x89, 0x81, 0x2E, 0xD7, 0xDC, 0x47, 0x2C, 0x66, 0xE1, 0xD5, 0x2A, 0xD2, 0xA8, 0xC7, 0x24, 0xB8,
0xA4, 0x17, 0xE6, 0x6C, 0xED, 0x1E, 0xBE, 0x8B, 0xF1, 0xA9, 0x1B, 0x90, 0xBF, 0x2F, 0xB1, 0x69,
0x4E, 0xA4, 0x73, 0xBC, 0x7D, 0xCE, 0xA1, 0xE6, 0x65, 0xE2, 0xD2, 0x96, 0x0A, 0x3E, 0x2A, 0x5D,
0xB1, 0xD1, 0x59, 0xD1, 0xC7, 0x3C, 0xCF, 0xAB, 0xE9, 0x1E, 0xE3, 0x37, 0xA5, 0x56, 0x31, 0x8C,
0xDD, 0xC6, 0x11, 0x9D, 0x25, 0x21, 0x11, 0x30, 0x01, 0xAF, 0x0B, 0x0B, 0x08, 0x60, 0xC4, 0x6C,
0xD2, 0x25, 0x12, 0x1B, 0x17, 0x2A, 0xFE, 0x69, 0x19, 0xA5, 0x48, 0xE1, 0xE2, 0x8C, 0xE0, 0x0E,
0x01, 0xD2, 0xA4, 0x0D, 0x92, 0xE2, 0x9A, 0x14, 0x29, 0xEE, 0x1F, 0x09, 0xA7, 0x70, 0xE1, 0x22,
0x6A, 0x52, 0xA5, 0x90, 0x8A, 0x34, 0x49, 0x93, 0x26, 0x85, 0x8A, 0xBB, 0xE3, 0x4A, 0x57, 0xB8,
0x14, 0x11, 0x20, 0x50, 0xA1, 0xC2, 0x34, 0x62, 0x20, 0x85, 0x0A, 0xAD, 0x2D, 0x26, 0xDA, 0x93,
0x96, 0x9C, 0xBC, 0x59, 0xF2, 0xDF, 0xC9, 0x72, 0xCE, 0xB1, 0x90, 0xC5, 0x5F, 0x7E, 0x72, 0x77,
0x67, 0xF6, 0xCD, 0xEC, 0x9B, 0x99, 0xBD, 0x52, 0x91, 0xFA, 0xC9, 0x44, 0x74, 0x5C, 0x38, 0xD2,
0x96, 0x2B, 0x15, 0x72, 0x4F, 0xA6, 0xAA, 0xFF, 0xFE, 0x53, 0x97, 0x32, 0x4F, 0x54, 0x32, 0x5B,
0x62, 0xF2, 0xA4, 0x87, 0xB2, 0xA2, 0xFA, 0xB7, 0x8E, 0xD2, 0xB0, 0x26, 0x2A, 0x1F, 0x59, 0x52,
0x93, 0x27, 0xD2, 0x4C, 0x44, 0xAD, 0x23, 0x4A, 0x47, 0xBC, 0x98, 0x86, 0x48, 0x55, 0x14, 0x5B,
0x31, 0x92, 0xE1, 0xEE, 0xCD, 0x34, 0xC4, 0xE1, 0xDC, 0x51, 0x12, 0xA8, 0x65, 0xC5, 0x7C, 0x6F,
0x2C, 0x5C, 0x48, 0xC2, 0x31, 0x4D, 0xA6, 0x32, 0xDB, 0x56, 0x7F, 0xE2, 0xB2, 0x2F, 0x42, 0x3A,
0xD4, 0x2A, 0xE8, 0x7F, 0x87, 0x84, 0x47, 0x2A, 0x7D, 0x54, 0x80, 0xED, 0x99, 0xB9, 0x9D, 0xB0,
0xC3, 0xF9, 0xAF, 0x66, 0xF9, 0xFD, 0xF2, 0xCF, 0x5F, 0x19, 0x8C, 0x0B, 0x59, 0xE0, 0xC6, 0xF6,
0xC6, 0xA9, 0xEA, 0x12, 0xE6, 0xDB, 0x15, 0x56, 0x0E, 0xE9, 0x44, 0xAD, 0x35, 0xB0, 0xE1, 0x87,
0x23, 0xE9, 0x09, 0x30, 0x9E, 0x07, 0xD3, 0xE8, 0x8F, 0xDC, 0x48, 0x41, 0x9F, 0x0C, 0xB9, 0x35,
0xDA, 0x1E, 0xAA, 0x60, 0xDE, 0xB7, 0xB9, 0x9B, 0x0E, 0xC9, 0x7C, 0xC8, 0x56, 0x8D, 0xC0, 0xAC,
0x5D, 0xEE, 0x13, 0x26, 0xD1, 0x90, 0x3D, 0x62, 0xA6, 0xEF, 0xAA, 0xE3, 0x66, 0xD6, 0x4E, 0xEA,
0x0E, 0x51, 0x2E, 0xA6, 0xC3, 0xB2, 0x42, 0xAC, 0xC3, 0xB6, 0x6B, 0xC0, 0x08, 0x6D, 0x45, 0xBE,
0x6E, 0x12, 0x67, 0x6C, 0xEA, 0xCA, 0x2E, 0xEB, 0x0A, 0xA7, 0xAD, 0x76, 0x45, 0x93, 0xFB, 0xB2,
0xCA, 0x82, 0x81, 0x8B, 0x8E, 0x29, 0x59, 0xA0, 0x32, 0x5F, 0xD9, 0xDD, 0xDD, 0xE1, 0x19, 0xFA,
0xD4, 0x5A, 0x0A, 0xC6, 0x02, 0x46, 0x97, 0x0C, 0x45, 0x9F, 0x3A, 0xED, 0xB2, 0x3E, 0x1F, 0xB4,
0xCD, 0xBC, 0x6E, 0xD2, 0x50, 0x56, 0xC9, 0x68, 0x88, 0x26, 0xF8, 0x9D, 0x0F, 0x89, 0x6A, 0xEC,
0x6D, 0xE0, 0xF1, 0x12, 0xBD, 0xB0, 0x44, 0x97, 0x80, 0xE9, 0x1D, 0xE6, 0x06, 0x58, 0xFB, 0x96,
0xD9, 0x43, 0x19, 0xC1, 0x60, 0x2A, 0xD1, 0xB5, 0x9C, 0xCC, 0xB2, 0x0B, 0x63, 0x92, 0x3F, 0xC5,
0x00, 0x0E, 0x62, 0x5E, 0x91, 0xCB, 0x8B, 0x88, 0xE4, 0xE2, 0x3B, 0xD1, 0x81, 0x6F, 0x19, 0x3B,
0x20, 0xD5, 0xCE, 0xA3, 0xE8, 0xFC, 0x71, 0x48, 0x5D, 0x1A, 0x14, 0xCE, 0x8C, 0x8E, 0xE0, 0x6F,
0x83, 0x73, 0x65, 0x7E, 0x82, 0xFE, 0x02, 0x7D, 0xE4, 0xC4, 0x63, 0xAB, 0x40, 0xA9, 0xAF, 0xA1,
0xEC, 0x49, 0x45, 0x22, 0xD2, 0x40, 0x6B, 0x8F, 0x8D, 0xFD, 0xA2, 0x6E, 0x69, 0xDF, 0xC7, 0x0C,
0x66, 0x7B, 0x74, 0x2F, 0x9B, 0xD5, 0xD5, 0x0C, 0x44, 0x2F, 0xCA, 0x22, 0xCC, 0x3D, 0x0C, 0x64,
0x83, 0x10, 0xA0, 0x99, 0x67, 0xA2, 0x48, 0x02, 0x40, 0x2D, 0x9F, 0x0A, 0x21, 0x87, 0xB8, 0x03,
0xE6, 0x84, 0x27, 0xC2, 0x3F, 0xDD, 0xC3, 0xCA, 0x73, 0x13, 0xD1, 0xC5, 0x6C, 0xD9, 0x79, 0x5A,
0x56, 0xF0, 0xC7, 0x18, 0xFC, 0x70, 0x06, 0x76, 0x0A, 0x01, 0x6C, 0x91, 0x60, 0x0B, 0x28, 0xBA,
0x05, 0xA6, 0x70, 0x25, 0x4E, 0x80, 0x61, 0xDC, 0xE8, 0x4E, 0x3B, 0xE5, 0x21, 0x07, 0x2B, 0xCF,
0x4D, 0x44, 0xA3, 0xBC, 0x07, 0xD2, 0x80, 0xAD, 0x0C, 0x48, 0x94, 0x3D, 0xF6, 0x22, 0x52, 0xCE,
0xBE, 0x73, 0x8B, 0xDB, 0xCA, 0x99, 0xFA, 0x2D, 0x3F, 0x17, 0x98, 0x41, 0x60, 0x6E, 0xBC, 0x2C,
0x96, 0xEA, 0xC7, 0x1B, 0x13, 0xEB, 0x79, 0x46, 0x70, 0x8B, 0xA5, 0x79, 0x80, 0xB2, 0xB0, 0x88,
0xDC, 0x21, 0x30, 0x63, 0x77, 0x57, 0x0C, 0xE7, 0xFB, 0xF2, 0x00, 0x22, 0x38, 0x29, 0x72, 0x12,
0xB6, 0xE0, 0x5F, 0xD8, 0x4C, 0xFF, 0xE7, 0x60, 0x31, 0x50, 0xDD, 0x21, 0x3E, 0x99, 0xB7, 0x79,
0xA8, 0xD9, 0x5E, 0x02, 0x1B, 0x8B, 0x05, 0x04, 0x52, 0xC1, 0x11, 0x08, 0xBE, 0x85, 0x90, 0x5E,
0xA9, 0x18, 0xDF, 0x70, 0xB6, 0xE9, 0xC0, 0x36, 0x18, 0x9A, 0x03, 0x6F, 0x3A, 0xCC, 0xCC, 0x12,
0x86, 0x89, 0x61, 0xF0, 0x72, 0xEA, 0xA9, 0x80, 0x5F, 0x0C, 0x08, 0x59, 0x83, 0x1E, 0x13, 0xFA,
0x28, 0xBA, 0xC4, 0x1F, 0x91, 0xE8, 0x21, 0x7E, 0x88, 0xD3, 0x85, 0xB3, 0x78, 0xCD, 0x60, 0xBC,
0xB9, 0x68, 0x44, 0x7F, 0xD3, 0x88, 0x34, 0x03, 0x9E, 0xF5, 0x71, 0xA4, 0x6C, 0x28, 0x03, 0x96,
0x31, 0xAA, 0x11, 0x64, 0x6D, 0x5C, 0x9C, 0xF8, 0x28, 0x0A, 0x17, 0xAB, 0x10, 0x97, 0xCB, 0xA2,
0x79, 0x79, 0x2A, 0xE7, 0x45, 0xFB, 0xF2, 0xBB, 0xBE, 0x7F, 0xBD, 0x5D, 0xC3, 0xE8, 0x21, 0xE5,
0x26, 0xE7, 0xAE, 0xE6, 0xB0, 0xDE, 0x3F, 0x7C, 0x6B, 0xFF, 0x6D, 0x99, 0xFD, 0x05, 0x5D, 0x1E,
0x15, 0x7B, 0x53, 0x7C, 0x62, 0xB7, 0x0E, 0xD3, 0x7F, 0xDA, 0x2D, 0xB3, 0x7D, 0x1F, 0xD9, 0x00,
0x14, 0xFC, 0xF9, 0xB3, 0x20, 0xD9, 0xAE, 0xA8, 0x66, 0x58, 0x29, 0x80, 0x28, 0x21, 0x2C, 0x82,
0x93, 0x6E, 0x2C, 0x13, 0xB9, 0x4C, 0xB8, 0x37, 0xFE, 0x48, 0x43, 0xC6, 0xB4, 0xAF, 0xD8, 0x96,
0x00, 0xA7, 0x1B, 0x3A, 0xCE, 0x2C, 0x15, 0xF7, 0x91, 0x46, 0x1D, 0x00, 0x1E, 0x6D, 0x61, 0xF1,
0x6D, 0x09, 0x51, 0x78, 0xB8, 0x5D, 0x3C, 0x9C, 0x0A, 0xAD, 0x8F, 0xD0, 0x3F, 0xA0, 0x9B, 0xAC,
0xBE, 0xE0, 0x2F, 0x7D, 0x30, 0xC3, 0x16, 0x84, 0xAB, 0x31, 0x75, 0xDC, 0xB5, 0x61, 0xD2, 0x41,
0xDB, 0x1D, 0x4C, 0x57, 0xAA, 0xD2, 0x5E, 0x0F, 0x66, 0x34, 0xE1, 0x46, 0xE9, 0xD7, 0xFB, 0x79,
0xBF, 0x25, 0x7D, 0x5D, 0xF8, 0x7D, 0x33, 0xD6, 0xA1, 0x18, 0x4A, 0xA7, 0xB0, 0xE6, 0x0A, 0x2D,
0x38, 0x37, 0x3C, 0x35, 0xAF, 0x37, 0x00, 0x0E, 0x06, 0x09, 0x79, 0x3D, 0xB3, 0x76, 0x6E, 0x7F,
0xA5, 0x25, 0x4A, 0x25, 0x7E, 0x63, 0xAC, 0x09, 0x1B, 0x92, 0xE8, 0x97, 0x7E, 0x89, 0x3C, 0xE1,
0x88, 0x1C, 0x47, 0x24, 0x0D, 0xD5, 0xCD, 0x62, 0x9B, 0x48, 0x48, 0xD4, 0x4D, 0x20, 0x08, 0x9F,
0x0A, 0xC5, 0x7B, 0x73, 0x51, 0x0B, 0xC6, 0xE8, 0x07, 0x27, 0x4F, 0x5D, 0x78, 0xCD, 0x17, 0x9C,
0xC8, 0x07, 0x33, 0x4D, 0x28, 0x8B, 0x69, 0x02, 0x7B, 0x16, 0xC0, 0x94, 0xBC, 0x00, 0x26, 0x23,
0xEC, 0xF9, 0x0C, 0x98, 0x47, 0xD8, 0x58, 0xD8, 0x63, 0xC0, 0x02, 0x3B, 0x10, 0xF1, 0x55, 0xEE,
0x90, 0xE4, 0x50, 0x28, 0x2C, 0xB8, 0x34, 0x01, 0x6C, 0xE6, 0xA0, 0xC9, 0xBC, 0x2F, 0xC5, 0xEB,
0x6D, 0x64, 0xDA, 0x1F, 0xE3, 0xC5, 0x43, 0xD8, 0xDC, 0xF4, 0xA8, 0x68, 0x58, 0x33, 0xC2, 0xCE,
0xC2, 0x66, 0x2E, 0x91, 0xA2, 0x69, 0xAA, 0x44, 0xF4, 0x68, 0x3B, 0xCE, 0x9A, 0xB3, 0x2F, 0x85,
0x83, 0xB5, 0x18, 0x8B, 0x4D, 0xF5, 0xB8, 0xC0, 0x88, 0x78, 0xC4, 0xC1, 0xA8, 0x73, 0x39, 0xF2,
0x2E, 0x1C, 0x91, 0xF9, 0x64, 0x2C, 0x9B, 0xC4, 0x23, 0x8B, 0x3E, 0x85, 0x82, 0x07, 0x16, 0x10,
0x71, 0x10, 0xFF, 0xF3, 0xD3, 0x7D, 0xAB, 0x55, 0x2F, 0x7F, 0x4E, 0x30, 0x7C, 0xA4, 0xF6, 0x47,
0x38, 0x52, 0xA4, 0x67, 0xAB, 0xDA, 0xCF, 0x01, 0x04, 0x04, 0x29, 0x91, 0x1F, 0xB8, 0x57, 0xE3,
0x9A, 0xCC, 0xBD, 0x78, 0x9C, 0x38, 0xA4, 0xD7, 0xFF, 0xF3, 0x74, 0xDD, 0x54, 0xFA, 0x89, 0xA3,
0x76, 0x44, 0xA5, 0xA3, 0x39, 0x5C, 0xF5, 0x30, 0xF7, 0x4D, 0xE8, 0xFE, 0x97, 0x86, 0xC4, 0x79,
0x54, 0x5B, 0xC5, 0xD2, 0xE1, 0xDE, 0xF1, 0xD5, 0xEF, 0x0B, 0x05, 0x5F, 0xD1, 0x9F, 0xDD, 0x9B,
0x8A, 0x6E, 0x58, 0xE6, 0x92, 0x9E, 0xB5, 0x3B, 0x14, 0xDD, 0x07, 0x08, 0x2B, 0xF3, 0x10, 0x16,
0x0E, 0x23, 0x29, 0x7F, 0xA1, 0x32, 0xA4, 0x99, 0xEC, 0x33, 0xA4, 0xC8, 0xB1, 0x46, 0x86, 0xDC,
0xEE, 0xA8, 0x88, 0x15, 0xBF, 0xE8, 0xD5, 0x09, 0x9F, 0x16, 0x7B, 0x7F, 0xE0, 0xF0, 0x9E, 0x6A,
0x37, 0x97, 0x00, 0x52, 0x7F, 0xA2, 0xEF, 0x69, 0xEE, 0x0E, 0xCB, 0xBF, 0xB0, 0xBF, 0x4A, 0xED,
0x99, 0x6D, 0x52, 0xD6, 0xCB, 0x25, 0x91, 0x9E, 0x99, 0xB7, 0x7C, 0x4B, 0x92, 0x55, 0xB7, 0x54,
0xCA, 0x37, 0xFF, 0xC1, 0x93, 0xF7, 0x75, 0xF8, 0x01, 0x78, 0xF3, 0x96, 0xE4, 0xD7, 0x5F, 0xB7,
0xE1, 0x86, 0x69, 0x79, 0x3B, 0xE1, 0xA6, 0xBA, 0x1C, 0xAB, 0xC8, 0xF3, 0xDD, 0x5F, 0x9D, 0x20,
0x32, 0x50, 0x87, 0x6F, 0x6D, 0xD4, 0xEC, 0xF1, 0xE7, 0x08, 0xC1, 0x70, 0xE3, 0xF7, 0x3F, 0x73,
0x67, 0x90, 0xC1, 0x32, 0x3B, 0x27, 0xD7, 0xDD, 0xE3, 0x1D, 0x24, 0xA0, 0xDD, 0x7F, 0x2D, 0xB9,
0x56, 0x57, 0x54, 0x6C, 0x56, 0xE5, 0x73, 0x65, 0x5C, 0xA4, 0x80, 0x62, 0xB7, 0x9D, 0x2B, 0xDB,
0x32, 0xBF, 0x7C, 0x01, 0x3A, 0x62, 0xE6, 0x3B, 0xB8, 0xD8, 0x51, 0x71, 0xAA, 0xB8, 0x29, 0xBC,
0x1C, 0x6A, 0x39, 0x80, 0xBF, 0xD5, 0xFC, 0x47, 0xB4, 0x35, 0x9B, 0x88, 0x74, 0x60, 0xA2, 0xF8,
0xF5, 0x58, 0x1D, 0xCE, 0xD7, 0x80, 0x09, 0x85, 0x87, 0x2C, 0xB8, 0x8D, 0xF1, 0xF7, 0xE8, 0x95,
0xFC, 0x1F, 0xDB, 0xBB, 0x02, 0xBB, 0xC6, 0x85, 0x0B, 0xEB, 0xF6, 0x86, 0x6C, 0x52, 0x7C, 0xAB,
0xF0, 0xB8, 0xA7, 0xE5, 0x03, 0x76, 0x46, 0x1A, 0x84, 0x9A, 0x0C, 0x25, 0x19, 0x07, 0x30, 0x8A,
0xD6, 0xDA, 0xE2, 0x74, 0x55, 0x2F, 0x29, 0xF9, 0xAC, 0xBD, 0x49, 0x49, 0x27, 0x74, 0x93, 0xE9,
0xFE, 0x1D, 0x9C, 0x6A, 0x94, 0x02, 0x40, 0x48, 0xE1, 0xEA, 0xE5, 0x31, 0x1A, 0x61, 0xD4, 0x4E,
0xD4, 0xCB, 0x00, 0x56, 0x0E, 0x74, 0x95, 0xCE, 0x2C, 0xBE, 0xA0, 0x44, 0xF7, 0xCB, 0xF5, 0xA8,
0x5D, 0x12, 0xDA, 0x05, 0x25, 0x1A, 0x6D, 0x67, 0x13, 0xC5, 0x73, 0x15, 0xF8, 0xEA, 0xD5, 0xE6,
0x00, 0xDA, 0xCA, 0xAA, 0xB4, 0xB8, 0x00, 0xF6, 0x59, 0x9F, 0x7A, 0xD4, 0xA5, 0x89, 0xA4, 0xF4,
0x1E, 0x40, 0x1B, 0xA4, 0xF8, 0xB6, 0x3D, 0xBF, 0xDA, 0x5C, 0x96, 0xCB, 0xC7, 0xD1, 0xA2, 0xAE,
0x68, 0x5E, 0xA6, 0x64, 0xDE, 0xCD, 0x39, 0x18, 0xAC, 0x6D, 0xE7, 0xDB, 0xF8, 0x02, 0x59, 0x3F,
0x92, 0xF0, 0xAF, 0xAB, 0x64, 0x40, 0x92, 0x95, 0x9B, 0x59, 0x0D, 0xC8, 0xE7, 0x3B, 0x66, 0x43,
0x32, 0xBC, 0x02, 0x59, 0xD2, 0xB9, 0x84, 0x4B, 0x4C, 0xE9, 0x3B, 0x33, 0x9F, 0xB8, 0x92, 0xFB,
0x05, 0xFA, 0x20, 0x05, 0x48, 0x92, 0xA5, 0x94, 0x62, 0xA9, 0x94, 0x2A, 0x2C, 0xD7, 0xF9, 0xDC,
0xCF, 0x15, 0x40, 0x2E, 0x5D, 0xA3, 0xDC, 0x11, 0x85, 0x9D, 0x49, 0x14, 0xC1, 0x80, 0x94, 0x85,
0xCA, 0xF0, 0x54, 0xC1, 0x98, 0x51, 0x2E, 0x9A, 0xC0, 0x9B, 0xBD, 0xEC, 0xCC, 0x98, 0xF0, 0xA7,
0x65, 0xA0, 0x3D, 0x59, 0xB6, 0xB3, 0x06, 0xFE, 0x97, 0x26, 0x22, 0x6E, 0x53, 0x5F, 0x88, 0x2E,
0x0B, 0xD9, 0x6B, 0x96, 0x28, 0x5D, 0xE1, 0xCE, 0xDC, 0xAD, 0xB2, 0x4E, 0x57, 0x2B, 0xE5, 0x0A,
0x5A, 0xD1, 0x70, 0x15, 0x8F, 0xDF, 0xAC, 0xF0, 0x58, 0x99, 0x8D, 0x44, 0x88, 0x9F, 0x71, 0x22,
0x2E, 0x89, 0x8B, 0xA3, 0x58, 0x54, 0x10, 0x55, 0xCD, 0x4A, 0x63, 0xBB, 0x7C, 0x1A, 0xA1, 0x37,
0xB0, 0xB4, 0xB0, 0xA8, 0xDA, 0x99, 0xBD, 0x06, 0xB8, 0x8D, 0x24, 0xE7, 0x1C, 0xF0, 0xDE, 0x5D,
0x61, 0xCD, 0x4A, 0xEA, 0xD1, 0x53, 0x79, 0x3C, 0x90, 0x0A, 0x26, 0x7C, 0xDF, 0xBF, 0x2B, 0xC9,
0x44, 0x56, 0x25, 0x78, 0x78, 0x08, 0xE6, 0x36, 0x1D, 0xE0, 0xA1, 0xA8, 0x8B, 0xF6, 0xEE, 0x7C,
0x4D, 0xB5, 0x14, 0x81, 0xB2, 0x47, 0x04, 0xBC, 0xE8, 0xF3, 0x4F, 0xF3, 0x8F, 0xBA, 0xA3, 0x6B,
0x5B, 0xD9, 0xC3, 0x6E, 0xE5, 0xB2, 0x91, 0x9E, 0xDA, 0xBC, 0x4F, 0x1F, 0xE0, 0xF2, 0xA5, 0xB7,
0xB2, 0xC7, 0xDD, 0xFE, 0xDD, 0x83, 0xFC, 0x6F, 0xFD, 0x33, 0xAC, 0x42, 0xBA, 0xCC, 0x7D, 0x14,
0xFC, 0x66, 0xD5, 0x3D, 0x56, 0x5C, 0x93, 0xA0, 0x73, 0x04, 0xD5, 0x0D, 0x41, 0x35, 0xC1, 0x62,
0x47, 0x6B, 0xA8, 0xCE, 0x3A, 0xA8, 0x5E, 0x03, 0x75, 0xD6, 0xD1, 0xEA, 0xEE, 0x1A, 0xA8, 0x9F,
0x61, 0xBD, 0x64, 0xE2, 0xBB, 0x50, 0xFD, 0x75, 0xD4, 0x97, 0xE6, 0xCB, 0xB9, 0xE4, 0x44, 0xA1,
0x86, 0x70, 0xEF, 0xDB, 0x7C, 0x9A, 0x18, 0xCE, 0xD1, 0x4B, 0x36, 0x5E, 0x86, 0x0E, 0x40, 0xBD,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
0xE2, 0x77, 0x43, 0x16, 0xD2, 0x91, 0xAB, 0xDA, 0x9A, 0x87, 0x3D, 0x76, 0xF2, 0xFF, 0x01, 0x3D,
0x93, 0xBD, 0xAE, 0xD4, 0x30, 0x10, 0x85, 0x27, 0x31, 0x28, 0xC5, 0x16, 0xBE, 0xFD, 0x16, 0xFB,
0x02, 0x20, 0x3F, 0x01, 0x38, 0x54, 0x20, 0xD1, 0x50, 0xEC, 0x95, 0x78, 0x8B, 0x7D, 0x01, 0x44,
0x22, 0xD1, 0xDC, 0x12, 0xD1, 0x50, 0x6C, 0x71, 0xDF, 0x64, 0x1D, 0x74, 0x0B, 0xDA, 0x74, 0xB4,
0x29, 0x10, 0xDB, 0xBA, 0x88, 0x20, 0x91, 0xBC, 0x19, 0xCE, 0x8C, 0xB3, 0x9B, 0x48, 0x8E, 0xE2,
0x9F, 0x99, 0x33, 0xDF, 0x19, 0x13, 0x91, 0x1B, 0x9B, 0x9E, 0xA8, 0x62, 0x66, 0x7C, 0x9A, 0x23,
0x1F, 0x88, 0xCC, 0x58, 0xC5, 0x3B, 0xA2, 0x5D, 0xE7, 0x3A, 0x22, 0x5A, 0xF0, 0x12, 0x6D, 0xB1,
0x21, 0x92, 0xC1, 0xC8, 0x2D, 0x3D, 0x0F, 0xF7, 0xBC, 0x27, 0x2A, 0x93, 0x99, 0xB0, 0x64, 0x07,
0x8B, 0xA3, 0xE4, 0x6B, 0x8F, 0xB1, 0x48, 0x45, 0xC2, 0x67, 0x13, 0x37, 0x51, 0xE6, 0x5A, 0xDF,
0xE2, 0x73, 0xC1, 0x9B, 0xC3, 0xD2, 0x2D, 0x6C, 0xA0, 0x93, 0xCE, 0x99, 0xF1, 0x36, 0x37, 0xF3,
0x9F, 0x94, 0xA5, 0xE0, 0x67, 0x33, 0xBB, 0xDF, 0xA4, 0xCF, 0x56, 0xF2, 0x7B, 0x1E, 0x30, 0xFC,
0x4A, 0x12, 0xF3, 0xA5, 0x1C, 0x90, 0x24, 0x43, 0x16, 0xD6, 0x63, 0x95, 0x27, 0x51, 0x85, 0x9D,
0xAE, 0xF3, 0x35, 0x24, 0x61, 0x83, 0x19, 0xB1, 0xA1, 0x48, 0x92, 0x20, 0x90, 0x1E, 0x6C, 0x20,
0xB6, 0x77, 0x0F, 0x64, 0xA2, 0xE5, 0x1A, 0x2B, 0x28, 0xE5, 0x44, 0x9F, 0x6B, 0x48, 0x27, 0xBA,
0x93, 0x90, 0xF6, 0x71, 0x10, 0x01, 0x12, 0x37, 0x7C, 0xCD, 0xD9, 0xDD, 0x3F, 0x14, 0xE7, 0x18,
0x91, 0xAB, 0x39, 0xF4, 0x82, 0x23, 0x49, 0x7A, 0x89, 0x3F, 0x95, 0x13, 0x15, 0xE1, 0x82, 0xD3,
0xCC, 0x4F, 0x11, 0xF9, 0xF7, 0x8D, 0x56, 0x3E, 0xAC, 0xD0, 0x6C, 0x0F, 0x30, 0x19, 0x88, 0x93,
0x02, 0xCD, 0x24, 0xBC, 0xC0, 0xE9, 0x1D, 0x14, 0x18, 0x14, 0xD9, 0x90, 0x1F, 0x51, 0x05, 0xC2,
0x28, 0x20, 0x95, 0x60, 0xCE, 0xC2, 0xB4, 0x91, 0x9A, 0xCB, 0xA5, 0x5E, 0x35, 0x8C, 0x5B, 0x59,
0x6F, 0x40, 0x66, 0x50, 0x93, 0xBE, 0xE7, 0x38, 0xF5, 0x8B, 0x1B, 0x4E, 0x98, 0xB0, 0xD2, 0x58,
0x79, 0xAC, 0x44, 0xF8, 0xFE, 0xA2, 0x4C, 0x5A, 0x9F, 0x8D, 0x52, 0x2E, 0x26, 0x2A, 0x99, 0x2B,
0x9B, 0x50, 0xA4, 0x6C, 0xD5, 0x29, 0x6B, 0xF6, 0x0F, 0xEA, 0x95, 0x65, 0xEC, 0x29, 0x95, 0x52,
0xB8, 0x72, 0x12, 0x52, 0x6B, 0x4A, 0xFB, 0xB8, 0x1C, 0xBA, 0x9B, 0x5D, 0x14, 0xBE, 0xDD, 0xD4,
0x4E, 0xEE, 0x8C, 0x99, 0x1D, 0x16, 0x2E, 0x4A, 0x4D, 0xB9, 0xA1, 0x07, 0x8A, 0x94, 0xCF, 0xAE,
0x28, 0x8C, 0xD0, 0x63, 0x4E, 0xCA, 0x8F, 0xF9, 0x67, 0x54, 0xBD, 0x1F, 0x82, 0x30, 0xB4, 0x43,
0xA6, 0xA8, 0x9D, 0x03, 0x4D, 0x9D, 0xED, 0x54, 0xF0, 0x95, 0xA5, 0x6B, 0x73, 0x88, 0x31, 0x73,
0xF0, 0x1F, 0x55, 0x71, 0xA5, 0x4C, 0x03, 0x35, 0xA3, 0xDA, 0x90, 0xB9, 0x0A, 0xB9, 0x55, 0xB2,
0x39, 0xF3, 0x31, 0x66, 0x90, 0x49, 0xF9, 0xBE, 0x9F, 0xB3, 0x64, 0x3A, 0x48, 0x07, 0x97, 0x2C,
0x8B, 0xD5, 0x5F, 0x19, 0x6D, 0xFF, 0xA6, 0x56, 0x9F, 0x5B, 0x45, 0x53, 0xAB, 0xD4, 0x85, 0x2C,
0xCB, 0xB8, 0xF6, 0x7F, 0xD0, 0x9B, 0xB1, 0x68, 0x06, 0x2D, 0x2E, 0xEB, 0x2B, 0x01, 0x8D, 0x56,
0xB3, 0xA5, 0xBF, 0x3F, 0xA9, 0xDB, 0x89, 0x2A, 0x8C, 0x11, 0x76, 0x17, 0x00, 0xA5, 0x37, 0x46,
0xFD, 0xA6, 0xD7, 0x4D, 0x7B, 0x35, 0x9C, 0xAE, 0x2D, 0x4F, 0xF4, 0x4C, 0xFE, 0x58, 0x31, 0x4A,
0x98, 0xF9, 0x00, 0x35, 0xAF, 0xCA, 0x11, 0x32, 0x3A, 0x6C, 0x0D, 0xC9, 0x73, 0xEF, 0x8E, 0x3F,
0x78, 0x6F, 0xA2, 0xC4, 0xF2, 0x1D, 0xBA, 0xB2, 0xE4, 0x1A, 0x01, 0x37, 0x17, 0xC9, 0xBE, 0x1B,
0x71, 0xF1, 0x5A, 0xFF, 0x65, 0x24, 0x5F, 0x4E, 0xCD, 0xDB, 0xA7, 0x25, 0x54, 0x3C, 0x39, 0xEE,
0xFD, 0x42, 0x07, 0x08, 0xA0, 0xFF, 0x1D, 0xCD, 0xB1, 0x0D, 0xC2, 0x40, 0x0C, 0x05, 0xD0, 0x9F,
0x13, 0x1D, 0x43, 0x64, 0x02, 0xF0, 0x06, 0x80, 0x32, 0x53, 0x0A, 0x1A, 0x74, 0xEE, 0x18, 0xEB,
0x76, 0x60, 0x82, 0x24, 0x13, 0x50, 0xBA, 0x48, 0xCE, 0xF1, 0xB7, 0x25, 0x3F, 0xF9, 0xDB, 0x85,
0x01, 0xBC, 0xC0, 0x7A, 0xA7, 0x55, 0x53, 0xA3, 0xF3, 0xC8, 0x30, 0xE7, 0xE5, 0x73, 0xB9, 0x46,
0xA8, 0xBE, 0x18, 0x3D, 0x44, 0x43, 0xFF, 0x1A, 0x5D, 0x5D, 0x43, 0x6D, 0x26, 0x6E, 0x78, 0xF6,
0xE2, 0x3B, 0x5A, 0x87, 0xF8, 0xE4, 0x1D, 0xC5, 0xB7, 0x10, 0xB2, 0xC7, 0x26, 0x02, 0x67, 0xC8,
0x8F, 0x96, 0xFF, 0x83, 0x3F, 0x6E, 0x77, 0x5A, 0x7A, 0x3E, 0xCF, 0x19, 0x43, 0xF4, 0x09,
};
static const EpdGlyph bookerly_12_bolditalicGlyphs[] = {
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
{ 0, 0, 0, 0, 0, 0, 0 }, // U+0000
{ 0, 0, 0, 0, 0, 0, 0 }, // U+0008
{ 0, 0, 5, 0, 0, 0, 0 }, // U+0009
{ 0, 0, 5, 0, 0, 0, 0 }, // U+000D
{ 0, 0, 0, 0, 0, 0, 0 }, // U+001D
{ 0, 0, 5, 0, 0, 0, 0 }, // U+0020
fix: force auto-hinting for Bookerly to fix inconsistent stem widths (#1098) ## Summary Bookerly's native TrueType hinting is effectively a no-op at the sizes used here, causing FreeType to place stems at inconsistent sub-pixel positions. This results in the 'k' stem (8-bit fringe: 0x38=56) falling just below the 2-bit quantization threshold while 'l' and 'h' stems (fringes: 0x4C=76, 0x40=64) land above it --- making 'k' visibly narrower (2.00px vs 2.33px effective width). FreeType's auto-hinter snaps all stems to consistent grid positions, normalizing effective stem width to 2.67px across all glyphs. Adds --force-autohint flag to fontconvert.py and applies it to Bookerly only. NotoSans, OpenDyslexic, and Ubuntu fonts are unaffected. Here is an example of before/after. Take notice of the vertical stems on characters like `l`, `k`, `n`, `i`, etc. The font is Bookerly 12pt regular: **BEFORE**: ![before](https://github.com/user-attachments/assets/65b2acab-ad95-489e-885e-e3a0163cc252) **AFTER**: ![after](https://github.com/user-attachments/assets/d09a8b5d-40af-4a7d-b622-e1b2cabcce85) Claude generated this script to quantitatively determine that this change makes the vertical stems on a variety of characters more consistent for Bookerly _only_. <details> <summary>Python script</summary> ```python #!/usr/bin/env python3 """Compare stem consistency across all font families with and without auto-hinting. Run from repo root: python3 compare_all_fonts.py """ import freetype DPI = 150 CHARS = ["k", "l", "h", "i", "b", "d"] SIZES = [12, 14, 16, 18] FONTS = { "Bookerly": "lib/EpdFont/builtinFonts/source/Bookerly/Bookerly-Regular.ttf", "NotoSans": "lib/EpdFont/builtinFonts/source/NotoSans/NotoSans-Regular.ttf", "OpenDyslexic": "lib/EpdFont/builtinFonts/source/OpenDyslexic/OpenDyslexic-Regular.otf", "Ubuntu": "lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf", } MODES = { "default": freetype.FT_LOAD_RENDER, "autohint": freetype.FT_LOAD_RENDER | freetype.FT_LOAD_FORCE_AUTOHINT, } def q4to2(v): if v >= 12: return 3 elif v >= 8: return 2 elif v >= 4: return 1 else: return 0 def get_stem_eff(face, char, flags): gi = face.get_char_index(ord(char)) if gi == 0: return None face.load_glyph(gi, flags) bm = face.glyph.bitmap w, h = bm.width, bm.rows if w == 0 or h == 0: return None p2 = [] for y in range(h): row = [] for x in range(w): row.append(q4to2(bm.buffer[y * bm.pitch + x] >> 4)) p2.append(row) # Measure leftmost stem in stable middle rows mid_start, mid_end = h // 4, h - h // 4 widths = [] for y in range(mid_start, mid_end): first = next((x for x in range(w) if p2[y][x] > 0), -1) if first < 0: continue last = first for x in range(first, w): if p2[y][x] > 0: last = x else: break eff = sum(p2[y][x] for x in range(first, last + 1)) / 3.0 widths.append(eff) return round(sum(widths) / len(widths), 2) if widths else None def main(): for font_name, font_path in FONTS.items(): try: freetype.Face(font_path) except Exception: print(f"\n {font_name}: SKIPPED (file not found)") continue print(f"\n{'=' * 80}") print(f" {font_name}") print(f"{'=' * 80}") for size in SIZES: print(f"\n {size}pt:") print(f" {'':6s}", end="") for c in CHARS: print(f" '{c}' ", end="") print(" | spread") for mode_name, flags in MODES.items(): face = freetype.Face(font_path) face.set_char_size(size << 6, size << 6, DPI, DPI) vals = [] print(f" {mode_name:6s}", end="") for c in CHARS: v = get_stem_eff(face, c, flags) vals.append(v) print(f" {v:5.2f}" if v else " N/A", end="") valid = [v for v in vals if v is not None] spread = max(valid) - min(valid) if len(valid) >= 2 else 0 marker = " <-- inconsistent" if spread > 0.5 else "" print(f" | {spread:.2f}{marker}") if __name__ == "__main__": main() ``` </details> Here are the results. The table compares how the font-generation `autohint` flag affects the range of widths of various characters. Lower `spread` mean that glyph stroke widths should appear more consistent. ``` Spread = max stem width - min stem width across glyphs (lower = more consistent): ┌──────────────┬──────┬─────────┬──────────┬──────────┐ │ Font │ Size │ Default │ Autohint │ Winner │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Bookerly │ 12pt │ 1.49 │ 1.12 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.39 │ 1.13 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.38 │ 1.16 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.90 │ 1.58 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ NotoSans │ 12pt │ 1.16 │ 0.94 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 0.83 │ 1.14 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.41 │ 1.51 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.74 │ 1.63 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ OpenDyslexic │ 12pt │ 2.22 │ 1.44 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 2.57 │ 3.29 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 3.13 │ 2.60 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 3.21 │ 3.23 │ ~tied │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Ubuntu │ 12pt │ 1.25 │ 1.31 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.41 │ 1.64 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 2.21 │ 1.71 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.80 │ 1.71 │ autohint │ └──────────────┴──────┴─────────┴──────────┴──────────┘ ``` --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? I used AI to make sure I'm not doing something stupid, since I'm not a typography expert. I made the changes though.
2026-02-24 06:13:08 +11:00
{ 8, 19, 8, 1, 19, 38, 0 }, // !
{ 10, 8, 10, 1, 17, 20, 38 }, // "
{ 16, 15, 16, 0, 14, 60, 58 }, // #
{ 14, 25, 16, 1, 20, 88, 118 }, // $
{ 23, 19, 25, 1, 18, 110, 206 }, // %
{ 21, 18, 22, 1, 17, 95, 316 }, // &
{ 5, 8, 6, 1, 17, 10, 411 }, // '
{ 12, 25, 10, 0, 20, 75, 421 }, // (
{ 11, 25, 10, -1, 20, 69, 496 }, // )
{ 10, 8, 10, 1, 18, 20, 565 }, // *
{ 12, 11, 16, 2, 14, 33, 585 }, // +
{ 7, 8, 8, -1, 4, 14, 618 }, // ,
{ 8, 3, 10, 1, 8, 6, 632 }, // -
{ 5, 4, 8, 1, 4, 5, 638 }, // .
{ 15, 19, 13, -1, 18, 72, 643 }, // /
{ 16, 17, 16, 0, 17, 68, 715 }, // 0
{ 12, 18, 16, 1, 18, 54, 783 }, // 1
{ 15, 17, 16, 0, 17, 64, 837 }, // 2
{ 15, 17, 16, 0, 17, 64, 901 }, // 3
{ 15, 17, 16, 0, 17, 64, 965 }, // 4
{ 16, 17, 16, 0, 17, 68, 1029 }, // 5
{ 15, 17, 16, 1, 17, 64, 1097 }, // 6
{ 15, 17, 16, 2, 17, 64, 1161 }, // 7
{ 15, 17, 16, 0, 17, 64, 1225 }, // 8
{ 16, 17, 16, -1, 17, 68, 1289 }, // 9
{ 7, 13, 8, 1, 13, 23, 1357 }, // :
{ 9, 17, 8, -1, 13, 39, 1380 }, // ;
{ 12, 12, 16, 2, 14, 36, 1419 }, // <
{ 12, 7, 16, 2, 12, 21, 1455 }, // =
{ 12, 12, 16, 2, 14, 36, 1476 }, // >
{ 8, 17, 10, 2, 17, 34, 1512 }, // ?
{ 23, 22, 25, 1, 17, 127, 1546 }, // @
{ 20, 17, 19, -2, 17, 85, 1673 }, // A
{ 16, 17, 16, -1, 17, 68, 1758 }, // B
{ 17, 17, 16, 0, 17, 73, 1826 }, // C
{ 19, 17, 18, -1, 17, 81, 1899 }, // D
{ 17, 17, 16, -1, 17, 73, 1980 }, // E
{ 16, 17, 14, -1, 17, 68, 2053 }, // F
{ 18, 17, 18, 0, 17, 77, 2121 }, // G
{ 22, 17, 20, -1, 17, 94, 2198 }, // H
{ 12, 17, 10, -1, 17, 51, 2292 }, // I
{ 16, 22, 9, -5, 17, 88, 2343 }, // J
{ 20, 17, 18, -1, 17, 85, 2431 }, // K
{ 15, 17, 14, -1, 17, 64, 2516 }, // L
{ 25, 17, 22, -2, 17, 107, 2580 }, // M
{ 22, 18, 19, -1, 17, 99, 2687 }, // N
{ 18, 17, 18, 0, 17, 77, 2786 }, // O
{ 17, 17, 15, -1, 17, 73, 2863 }, // P
{ 22, 22, 19, 0, 17, 121, 2936 }, // Q
{ 18, 17, 17, -1, 17, 77, 3057 }, // R
{ 15, 17, 14, -1, 17, 64, 3134 }, // S
{ 17, 17, 17, 1, 17, 73, 3198 }, // T
{ 19, 17, 20, 2, 17, 81, 3271 }, // U
{ 19, 17, 18, 1, 17, 81, 3352 }, // V
{ 26, 17, 25, 1, 17, 111, 3433 }, // W
{ 21, 17, 17, -2, 17, 90, 3544 }, // X
{ 18, 17, 16, 1, 17, 77, 3634 }, // Y
{ 17, 18, 16, -1, 17, 77, 3711 }, // Z
{ 12, 24, 8, -2, 19, 72, 3788 }, // [
{ 11, 19, 13, 1, 18, 53, 3860 }, // <backslash>
{ 12, 24, 8, -2, 19, 72, 3913 }, // ]
{ 13, 11, 16, 1, 15, 36, 3985 }, // ^
{ 13, 3, 13, 0, 0, 10, 4021 }, // _
{ 6, 7, 16, 5, 21, 11, 4031 }, // `
{ 15, 13, 15, 0, 13, 49, 4042 }, // a
{ 14, 19, 14, 0, 19, 67, 4091 }, // b
{ 12, 13, 11, 0, 13, 39, 4158 }, // c
{ 15, 19, 15, 0, 19, 72, 4197 }, // d
{ 12, 13, 12, 0, 13, 39, 4269 }, // e
{ 19, 24, 11, -5, 19, 114, 4308 }, // f
{ 17, 18, 13, -2, 13, 77, 4422 }, // g
{ 15, 19, 15, 0, 19, 72, 4499 }, // h
{ 9, 19, 8, 0, 19, 43, 4571 }, // i
{ 14, 24, 8, -5, 19, 84, 4614 }, // j
{ 13, 19, 13, 0, 19, 62, 4698 }, // k
{ 8, 19, 8, 0, 19, 38, 4760 }, // l
{ 22, 13, 22, 0, 13, 72, 4798 }, // m
{ 15, 13, 16, 0, 13, 49, 4870 }, // n
{ 13, 13, 14, 0, 13, 43, 4919 }, // o
{ 16, 18, 14, -2, 13, 72, 4962 }, // p
{ 14, 18, 14, 0, 13, 63, 5034 }, // q
{ 13, 13, 12, 0, 13, 43, 5097 }, // r
{ 12, 13, 11, -1, 13, 39, 5140 }, // s
{ 11, 16, 11, 0, 16, 44, 5179 }, // t
{ 15, 13, 15, 0, 13, 49, 5223 }, // u
{ 13, 14, 13, 0, 13, 46, 5272 }, // v
{ 19, 14, 19, 0, 13, 67, 5318 }, // w
{ 16, 13, 14, -1, 13, 52, 5385 }, // x
{ 17, 18, 13, -4, 13, 77, 5437 }, // y
{ 14, 13, 12, -1, 13, 46, 5514 }, // z
{ 11, 24, 10, 1, 20, 66, 5560 }, // {
{ 9, 22, 8, -1, 19, 50, 5626 }, // |
{ 11, 24, 10, -1, 20, 66, 5676 }, // }
{ 13, 6, 16, 1, 11, 20, 5742 }, // ~
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
{ 0, 0, 5, 0, 0, 0, 0 }, // U+00A0
{ 9, 18, 8, -1, 13, 41, 0 }, // U+00A1
{ 14, 24, 16, 1, 19, 84, 41 }, // U+00A2
{ 17, 17, 16, -1, 17, 73, 125 }, // U+00A3
{ 16, 12, 16, 0, 14, 48, 198 }, // U+00A4
{ 17, 17, 16, 1, 17, 73, 246 }, // U+00A5
{ 9, 22, 8, -1, 19, 50, 319 }, // U+00A6
{ 13, 19, 13, -1, 17, 62, 369 }, // U+00A7
{ 9, 3, 16, 3, 18, 7, 431 }, // U+00A8
{ 19, 18, 20, 0, 17, 86, 438 }, // U+00A9
{ 10, 12, 11, 1, 18, 30, 524 }, // U+00AA
{ 15, 9, 15, 0, 11, 34, 554 }, // U+00AB
{ 12, 7, 16, 2, 12, 21, 588 }, // U+00AC
{ 8, 3, 10, 1, 8, 6, 609 }, // U+00AD
{ 14, 13, 15, 0, 19, 46, 615 }, // U+00AE
{ 9, 3, 16, 3, 18, 7, 661 }, // U+00AF
{ 10, 9, 13, 2, 17, 23, 668 }, // U+00B0
{ 12, 14, 16, 2, 14, 42, 691 }, // U+00B1
{ 11, 11, 11, 0, 20, 31, 733 }, // U+00B2
{ 9, 11, 11, 1, 20, 25, 764 }, // U+00B3
{ 6, 7, 16, 5, 21, 11, 789 }, // U+00B4
{ 17, 18, 15, -1, 13, 77, 800 }, // U+00B5
{ 17, 21, 15, -1, 17, 90, 877 }, // U+00B6
{ 5, 4, 8, 1, 9, 5, 967 }, // U+00B7
{ 6, 6, 16, 5, -1, 9, 972 }, // U+00B8
{ 8, 12, 11, 1, 21, 24, 981 }, // U+00B9
{ 10, 12, 11, 1, 18, 30, 1005 }, // U+00BA
{ 15, 9, 15, 0, 11, 34, 1035 }, // U+00BB
{ 26, 20, 27, 1, 18, 130, 1069 }, // U+00BC
{ 25, 20, 27, 1, 18, 125, 1199 }, // U+00BD
{ 26, 20, 27, 1, 18, 130, 1324 }, // U+00BE
{ 9, 18, 10, 0, 13, 41, 1454 }, // U+00BF
{ 20, 24, 19, -2, 24, 120, 1495 }, // U+00C0
{ 20, 24, 19, -2, 24, 120, 1615 }, // U+00C1
{ 20, 24, 19, -2, 24, 120, 1735 }, // U+00C2
{ 20, 23, 19, -2, 23, 115, 1855 }, // U+00C3
{ 20, 22, 19, -2, 22, 110, 1970 }, // U+00C4
{ 20, 24, 19, -2, 24, 120, 2080 }, // U+00C5
{ 26, 17, 23, -2, 17, 111, 2200 }, // U+00C6
{ 17, 23, 16, 0, 17, 98, 2311 }, // U+00C7
{ 17, 24, 16, -1, 24, 102, 2409 }, // U+00C8
{ 17, 24, 16, -1, 24, 102, 2511 }, // U+00C9
{ 17, 24, 16, -1, 24, 102, 2613 }, // U+00CA
{ 17, 22, 16, -1, 22, 94, 2715 }, // U+00CB
{ 12, 24, 10, -1, 24, 72, 2809 }, // U+00CC
{ 13, 24, 10, -1, 24, 78, 2881 }, // U+00CD
{ 13, 24, 10, -1, 24, 78, 2959 }, // U+00CE
{ 13, 22, 10, -1, 22, 72, 3037 }, // U+00CF
{ 19, 17, 18, -1, 17, 81, 3109 }, // U+00D0
{ 22, 24, 19, -1, 23, 132, 3190 }, // U+00D1
{ 18, 24, 18, 0, 24, 108, 3322 }, // U+00D2
{ 18, 24, 18, 0, 24, 108, 3430 }, // U+00D3
{ 18, 24, 18, 0, 24, 108, 3538 }, // U+00D4
{ 18, 24, 18, 0, 24, 108, 3646 }, // U+00D5
{ 18, 22, 18, 0, 22, 99, 3754 }, // U+00D6
{ 11, 11, 16, 2, 14, 31, 3853 }, // U+00D7
{ 21, 19, 18, -1, 18, 100, 3884 }, // U+00D8
{ 19, 24, 20, 2, 24, 114, 3984 }, // U+00D9
{ 19, 24, 20, 2, 24, 114, 4098 }, // U+00DA
{ 19, 24, 20, 2, 24, 114, 4212 }, // U+00DB
{ 19, 22, 20, 2, 22, 105, 4326 }, // U+00DC
{ 18, 24, 16, 1, 24, 108, 4431 }, // U+00DD
{ 16, 17, 15, -1, 17, 68, 4539 }, // U+00DE
{ 21, 24, 16, -5, 19, 126, 4607 }, // U+00DF
{ 15, 21, 15, 0, 21, 79, 4733 }, // U+00E0
{ 15, 21, 15, 0, 21, 79, 4812 }, // U+00E1
{ 15, 21, 15, 0, 21, 79, 4891 }, // U+00E2
{ 15, 19, 15, 0, 19, 72, 4970 }, // U+00E3
{ 15, 19, 15, 0, 19, 72, 5042 }, // U+00E4
{ 15, 21, 15, 0, 21, 79, 5114 }, // U+00E5
{ 20, 13, 20, 0, 13, 65, 5193 }, // U+00E6
{ 12, 19, 11, 0, 13, 57, 5258 }, // U+00E7
{ 12, 21, 12, 0, 21, 63, 5315 }, // U+00E8
{ 13, 21, 12, 0, 21, 69, 5378 }, // U+00E9
{ 12, 21, 12, 0, 21, 63, 5447 }, // U+00EA
{ 13, 19, 12, 0, 19, 62, 5510 }, // U+00EB
{ 8, 21, 8, 0, 21, 42, 5572 }, // U+00EC
{ 11, 21, 8, 0, 21, 58, 5614 }, // U+00ED
{ 10, 21, 8, 0, 21, 53, 5672 }, // U+00EE
{ 11, 19, 8, 0, 19, 53, 5725 }, // U+00EF
{ 14, 20, 14, 0, 20, 70, 5778 }, // U+00F0
{ 15, 19, 16, 0, 19, 72, 5848 }, // U+00F1
{ 13, 21, 14, 0, 21, 69, 5920 }, // U+00F2
{ 14, 21, 14, 0, 21, 74, 5989 }, // U+00F3
{ 13, 21, 14, 0, 21, 69, 6063 }, // U+00F4
{ 14, 19, 14, 0, 19, 67, 6132 }, // U+00F5
{ 14, 19, 14, 0, 19, 67, 6199 }, // U+00F6
{ 12, 11, 16, 2, 14, 33, 6266 }, // U+00F7
{ 17, 15, 14, -2, 14, 64, 6299 }, // U+00F8
{ 15, 21, 15, 0, 21, 79, 6363 }, // U+00F9
{ 15, 21, 15, 0, 21, 79, 6442 }, // U+00FA
{ 15, 21, 15, 0, 21, 79, 6521 }, // U+00FB
{ 15, 19, 15, 0, 19, 72, 6600 }, // U+00FC
{ 17, 26, 13, -4, 21, 111, 6672 }, // U+00FD
{ 17, 24, 14, -3, 19, 102, 6783 }, // U+00FE
{ 17, 24, 13, -4, 19, 102, 6885 }, // U+00FF
{ 20, 22, 19, -2, 22, 110, 0 }, // U+0100
{ 15, 18, 15, 0, 18, 68, 110 }, // U+0101
{ 20, 24, 19, -2, 24, 120, 178 }, // U+0102
{ 15, 20, 15, 0, 20, 75, 298 }, // U+0103
{ 20, 22, 19, -2, 17, 110, 373 }, // U+0104
{ 15, 18, 15, 0, 13, 68, 483 }, // U+0105
{ 17, 24, 16, 0, 24, 102, 551 }, // U+0106
{ 13, 21, 11, 0, 21, 69, 653 }, // U+0107
{ 17, 24, 16, 0, 24, 102, 722 }, // U+0108
{ 12, 21, 11, 0, 21, 63, 824 }, // U+0109
{ 17, 23, 16, 0, 23, 98, 887 }, // U+010A
{ 12, 19, 11, 0, 19, 57, 985 }, // U+010B
{ 17, 24, 16, 0, 24, 102, 1042 }, // U+010C
{ 13, 21, 11, 0, 21, 69, 1144 }, // U+010D
{ 19, 24, 18, -1, 24, 114, 1213 }, // U+010E
{ 19, 19, 16, 0, 19, 91, 1327 }, // U+010F
{ 19, 17, 18, -1, 17, 81, 1418 }, // U+0110
{ 17, 19, 15, 0, 19, 81, 1499 }, // U+0111
{ 17, 22, 16, -1, 22, 94, 1580 }, // U+0112
{ 13, 18, 12, 0, 18, 59, 1674 }, // U+0113
{ 17, 24, 16, -1, 24, 102, 1733 }, // U+0114
{ 13, 20, 12, 0, 20, 65, 1835 }, // U+0115
{ 17, 23, 16, -1, 23, 98, 1900 }, // U+0116
{ 12, 19, 12, 0, 19, 57, 1998 }, // U+0117
{ 17, 22, 16, -1, 17, 94, 2055 }, // U+0118
{ 12, 18, 12, 0, 13, 54, 2149 }, // U+0119
{ 17, 24, 16, -1, 24, 102, 2203 }, // U+011A
{ 13, 21, 12, 0, 21, 69, 2305 }, // U+011B
{ 18, 24, 18, 0, 24, 108, 2374 }, // U+011C
{ 17, 26, 13, -2, 21, 111, 2482 }, // U+011D
{ 18, 24, 18, 0, 24, 108, 2593 }, // U+011E
{ 17, 25, 13, -2, 20, 107, 2701 }, // U+011F
{ 18, 23, 18, 0, 23, 104, 2808 }, // U+0120
{ 17, 24, 13, -2, 19, 102, 2912 }, // U+0121
{ 18, 23, 18, 0, 17, 104, 3014 }, // U+0122
{ 17, 27, 13, -2, 22, 115, 3118 }, // U+0123
{ 22, 24, 20, -1, 24, 132, 3233 }, // U+0124
{ 15, 26, 15, 0, 26, 98, 3365 }, // U+0125
{ 22, 17, 20, -1, 17, 94, 3463 }, // U+0126
{ 15, 19, 15, 0, 19, 72, 3557 }, // U+0127
{ 13, 23, 10, -1, 23, 75, 3629 }, // U+0128
{ 11, 19, 8, 0, 19, 53, 3704 }, // U+0129
{ 13, 22, 10, -1, 22, 72, 3757 }, // U+012A
{ 11, 18, 8, 0, 18, 50, 3829 }, // U+012B
{ 13, 24, 10, -1, 24, 78, 3879 }, // U+012C
{ 11, 20, 8, 0, 20, 55, 3957 }, // U+012D
{ 12, 22, 10, -1, 17, 66, 4012 }, // U+012E
{ 9, 24, 8, 0, 19, 54, 4078 }, // U+012F
{ 12, 23, 10, -1, 23, 69, 4132 }, // U+0130
{ 8, 13, 8, 0, 13, 26, 4201 }, // U+0131
{ 22, 22, 19, -1, 17, 121, 4227 }, // U+0132
{ 17, 24, 16, 0, 19, 102, 4348 }, // U+0133
{ 17, 29, 9, -5, 24, 124, 4450 }, // U+0134
{ 16, 26, 8, -5, 21, 104, 4574 }, // U+0135
{ 20, 23, 18, -1, 17, 115, 4678 }, // U+0136
{ 13, 25, 13, 0, 19, 82, 4793 }, // U+0137
{ 14, 13, 14, 0, 13, 46, 4875 }, // U+0138
{ 15, 24, 14, -1, 24, 90, 4921 }, // U+0139
{ 10, 25, 8, 0, 25, 63, 5011 }, // U+013A
{ 15, 24, 14, -1, 17, 90, 5074 }, // U+013B
{ 9, 25, 8, -1, 19, 57, 5164 }, // U+013C
{ 16, 19, 14, -1, 19, 76, 5221 }, // U+013D
{ 12, 19, 9, 0, 19, 57, 5297 }, // U+013E
{ 16, 17, 14, -1, 17, 68, 5354 }, // U+013F
{ 12, 19, 11, 0, 19, 57, 5422 }, // U+0140
{ 15, 17, 14, -1, 17, 64, 5479 }, // U+0141
{ 10, 19, 8, -1, 19, 48, 5543 }, // U+0142
{ 22, 25, 19, -1, 24, 138, 5591 }, // U+0143
{ 15, 21, 16, 0, 21, 79, 5729 }, // U+0144
{ 22, 24, 19, -1, 17, 132, 5808 }, // U+0145
{ 15, 19, 16, 0, 13, 72, 5940 }, // U+0146
{ 22, 25, 19, -1, 24, 138, 6012 }, // U+0147
{ 15, 21, 16, 0, 21, 79, 6150 }, // U+0148
{ 20, 19, 21, 1, 19, 95, 6229 }, // U+0149
{ 22, 22, 19, -1, 17, 121, 6324 }, // U+014A
{ 14, 18, 15, 0, 13, 63, 6445 }, // U+014B
{ 18, 22, 18, 0, 22, 99, 6508 }, // U+014C
{ 14, 18, 14, 0, 18, 63, 6607 }, // U+014D
{ 18, 24, 18, 0, 24, 108, 6670 }, // U+014E
{ 14, 20, 14, 0, 20, 70, 6778 }, // U+014F
{ 19, 24, 18, 0, 24, 114, 6848 }, // U+0150
{ 15, 21, 14, 0, 21, 79, 6962 }, // U+0151
{ 25, 17, 25, 0, 17, 107, 7041 }, // U+0152
{ 20, 13, 20, 0, 13, 65, 7148 }, // U+0153
{ 18, 24, 17, -1, 24, 108, 7213 }, // U+0154
{ 13, 21, 12, 0, 21, 69, 7321 }, // U+0155
{ 18, 23, 17, -1, 17, 104, 7390 }, // U+0156
{ 14, 20, 12, -1, 13, 70, 7494 }, // U+0157
{ 18, 24, 17, -1, 24, 108, 7564 }, // U+0158
{ 13, 21, 12, 0, 21, 69, 7672 }, // U+0159
{ 15, 24, 14, -1, 24, 90, 7741 }, // U+015A
{ 13, 21, 11, -1, 21, 69, 7831 }, // U+015B
{ 15, 24, 14, -1, 24, 90, 7900 }, // U+015C
{ 13, 21, 11, -1, 21, 69, 7990 }, // U+015D
{ 15, 23, 14, -1, 17, 87, 8059 }, // U+015E
{ 12, 19, 11, -1, 13, 57, 8146 }, // U+015F
{ 16, 24, 14, -1, 24, 96, 8203 }, // U+0160
{ 14, 21, 11, -1, 21, 74, 8299 }, // U+0161
{ 17, 24, 17, 1, 17, 102, 8373 }, // U+0162
{ 11, 22, 11, 0, 16, 61, 8475 }, // U+0163
{ 17, 24, 17, 1, 24, 102, 8536 }, // U+0164
{ 13, 19, 11, 0, 19, 62, 8638 }, // U+0165
{ 17, 17, 17, 1, 17, 73, 8700 }, // U+0166
{ 11, 16, 11, 0, 16, 44, 8773 }, // U+0167
{ 19, 24, 20, 2, 24, 114, 8817 }, // U+0168
{ 15, 19, 15, 0, 19, 72, 8931 }, // U+0169
{ 19, 22, 20, 2, 22, 105, 9003 }, // U+016A
{ 15, 18, 15, 0, 18, 68, 9108 }, // U+016B
{ 19, 24, 20, 2, 24, 114, 9176 }, // U+016C
{ 15, 20, 15, 0, 20, 75, 9290 }, // U+016D
{ 19, 24, 20, 2, 24, 114, 9365 }, // U+016E
{ 15, 21, 15, 0, 21, 79, 9479 }, // U+016F
{ 19, 25, 20, 2, 25, 119, 9558 }, // U+0170
{ 15, 21, 15, 0, 21, 79, 9677 }, // U+0171
{ 19, 22, 20, 2, 17, 105, 9756 }, // U+0172
{ 15, 18, 15, 0, 13, 68, 9861 }, // U+0173
{ 26, 24, 25, 1, 24, 156, 9929 }, // U+0174
{ 19, 21, 19, 0, 20, 100, 10085 }, // U+0175
{ 18, 24, 16, 1, 24, 108, 10185 }, // U+0176
{ 17, 26, 13, -4, 21, 111, 10293 }, // U+0177
{ 18, 22, 16, 1, 22, 99, 10404 }, // U+0178
{ 17, 25, 16, -1, 24, 107, 10503 }, // U+0179
{ 14, 21, 12, -1, 21, 74, 10610 }, // U+017A
{ 17, 24, 16, -1, 23, 102, 10684 }, // U+017B
{ 14, 19, 12, -1, 19, 67, 10786 }, // U+017C
{ 17, 25, 16, -1, 24, 107, 10853 }, // U+017D
{ 14, 21, 12, -1, 21, 74, 10960 }, // U+017E
{ 19, 24, 11, -5, 19, 114, 11034 }, // U+017F
{ 6, 7, 0, -4, 21, 11, 0 }, // U+0300
{ 6, 7, 0, -2, 21, 11, 11 }, // U+0301
{ 9, 6, 0, -5, 21, 14, 22 }, // U+0302
{ 10, 4, 0, -5, 19, 10, 36 }, // U+0303
{ 9, 3, 0, -5, 18, 7, 46 }, // U+0304
{ 8, 5, 0, -4, 20, 10, 53 }, // U+0306
{ 4, 4, 0, -2, 19, 4, 63 }, // U+0307
{ 10, 3, 0, -5, 18, 8, 67 }, // U+0308
{ 7, 7, 0, -3, 22, 13, 75 }, // U+0309
{ 8, 6, 0, -4, 20, 12, 88 }, // U+030A
{ 11, 7, 0, -5, 21, 20, 100 }, // U+030B
{ 9, 6, 0, -4, 21, 14, 120 }, // U+030C
{ 8, 6, 0, -5, 20, 12, 134 }, // U+030F
{ 9, 6, 0, -5, 20, 14, 146 }, // U+0311
{ 6, 7, 0, -3, 21, 11, 160 }, // U+0312
{ 6, 7, 0, -3, 22, 11, 171 }, // U+0313
{ 5, 7, 0, -3, 22, 9, 182 }, // U+0314
{ 4, 6, 0, -2, 21, 6, 191 }, // U+0315
{ 6, 6, 0, -3, 15, 9, 197 }, // U+031B
{ 4, 4, 0, -2, -2, 4, 206 }, // U+0323
{ 10, 3, 0, -5, -3, 8, 210 }, // U+0324
{ 6, 6, 0, -3, -1, 9, 218 }, // U+0325
{ 5, 5, 0, -3, -1, 7, 227 }, // U+0326
{ 6, 6, 0, -3, -1, 9, 234 }, // U+0327
{ 6, 6, 0, -3, 1, 9, 243 }, // U+0328
{ 5, 6, 7, -1, -1, 8, 252 }, // U+0329
{ 9, 5, 0, -5, -1, 12, 260 }, // U+032D
{ 8, 5, 0, -4, -1, 10, 272 }, // U+032E
{ 10, 4, 0, -5, -2, 10, 282 }, // U+0330
{ 9, 3, 0, -5, -2, 7, 292 }, // U+0331
{ 8, 6, 0, -4, 20, 12, 299 }, // U+0342
{ 10, 10, 0, -5, 25, 25, 311 }, // U+0344
{ 5, 4, 0, -2, -2, 5, 336 }, // U+0345
{ 17, 24, 16, -1, 24, 102, 0 }, // U+0400
{ 17, 22, 16, -1, 22, 94, 102 }, // U+0401
{ 17, 22, 19, 1, 17, 94, 196 }, // U+0402
{ 17, 24, 14, -1, 24, 102, 290 }, // U+0403
{ 17, 17, 16, 0, 17, 73, 392 }, // U+0404
{ 15, 17, 14, -1, 17, 64, 465 }, // U+0405
{ 12, 17, 10, -1, 17, 51, 529 }, // U+0406
{ 13, 22, 10, -1, 22, 72, 580 }, // U+0407
{ 16, 22, 9, -5, 17, 88, 652 }, // U+0408
{ 25, 17, 23, -2, 17, 107, 740 }, // U+0409
{ 24, 17, 24, -1, 17, 102, 847 }, // U+040A
{ 19, 17, 21, 1, 17, 81, 949 }, // U+040B
{ 20, 24, 18, -1, 24, 120, 1030 }, // U+040C
{ 23, 24, 20, -1, 24, 138, 1150 }, // U+040D
{ 18, 25, 17, 1, 25, 113, 1288 }, // U+040E
{ 22, 22, 19, -1, 17, 121, 1401 }, // U+040F
{ 20, 17, 19, -2, 17, 85, 1522 }, // U+0410
{ 17, 17, 16, -1, 17, 73, 1607 }, // U+0411
{ 16, 17, 16, -1, 17, 68, 1680 }, // U+0412
{ 17, 17, 14, -1, 17, 73, 1748 }, // U+0413
{ 22, 22, 19, -2, 17, 121, 1821 }, // U+0414
{ 17, 17, 16, -1, 17, 73, 1942 }, // U+0415
{ 28, 17, 24, -2, 17, 119, 2015 }, // U+0416
{ 15, 17, 14, -1, 17, 64, 2134 }, // U+0417
{ 23, 17, 20, -1, 17, 98, 2198 }, // U+0418
{ 23, 24, 20, -1, 24, 138, 2296 }, // U+0419
{ 20, 17, 18, -1, 17, 85, 2434 }, // U+041A
{ 22, 17, 18, -2, 17, 94, 2519 }, // U+041B
{ 25, 17, 22, -2, 17, 107, 2613 }, // U+041C
{ 22, 17, 20, -1, 17, 94, 2720 }, // U+041D
{ 18, 17, 18, 0, 17, 77, 2814 }, // U+041E
{ 22, 17, 19, -1, 17, 94, 2891 }, // U+041F
{ 17, 17, 15, -1, 17, 73, 2985 }, // U+0420
{ 17, 17, 16, 0, 17, 73, 3058 }, // U+0421
{ 17, 17, 17, 1, 17, 73, 3131 }, // U+0422
{ 18, 17, 17, 1, 17, 77, 3204 }, // U+0423
{ 19, 18, 19, 0, 18, 86, 3281 }, // U+0424
{ 21, 17, 17, -2, 17, 90, 3367 }, // U+0425
{ 22, 22, 19, -1, 17, 121, 3457 }, // U+0426
{ 18, 17, 18, 1, 17, 77, 3578 }, // U+0427
{ 28, 17, 25, -1, 17, 119, 3655 }, // U+0428
{ 28, 22, 25, -1, 17, 154, 3774 }, // U+0429
{ 17, 17, 18, 1, 17, 73, 3928 }, // U+042A
{ 26, 17, 24, -1, 17, 111, 4001 }, // U+042B
{ 16, 17, 15, -1, 17, 68, 4112 }, // U+042C
{ 17, 17, 16, -1, 17, 73, 4180 }, // U+042D
{ 27, 17, 26, -1, 17, 115, 4253 }, // U+042E
{ 20, 17, 17, -2, 17, 85, 4368 }, // U+042F
{ 15, 13, 15, 0, 13, 49, 4453 }, // U+0430
{ 15, 20, 14, 0, 20, 75, 4502 }, // U+0431
{ 13, 13, 13, 0, 13, 43, 4577 }, // U+0432
{ 11, 13, 11, 0, 13, 36, 4620 }, // U+0433
{ 14, 20, 14, 0, 20, 70, 4656 }, // U+0434
{ 12, 13, 12, 0, 13, 39, 4726 }, // U+0435
{ 23, 13, 22, 0, 13, 75, 4765 }, // U+0436
{ 12, 13, 12, -1, 13, 39, 4840 }, // U+0437
{ 15, 13, 15, 0, 13, 49, 4879 }, // U+0438
{ 15, 20, 15, 0, 20, 75, 4928 }, // U+0439
{ 14, 13, 14, 0, 13, 46, 5003 }, // U+043A
{ 16, 13, 16, -1, 13, 52, 5049 }, // U+043B
{ 21, 13, 20, -1, 13, 69, 5101 }, // U+043C
{ 15, 13, 16, 0, 13, 49, 5170 }, // U+043D
{ 13, 13, 14, 0, 13, 43, 5219 }, // U+043E
{ 15, 13, 16, 0, 13, 49, 5262 }, // U+043F
{ 16, 18, 14, -2, 13, 72, 5311 }, // U+0440
{ 12, 13, 11, 0, 13, 39, 5383 }, // U+0441
{ 22, 13, 22, 0, 13, 72, 5422 }, // U+0442
{ 17, 18, 13, -4, 13, 77, 5494 }, // U+0443
{ 18, 25, 18, 0, 20, 113, 5571 }, // U+0444
{ 16, 13, 14, -1, 13, 52, 5684 }, // U+0445
{ 16, 18, 16, 0, 13, 72, 5736 }, // U+0446
{ 15, 13, 15, 0, 13, 49, 5808 }, // U+0447
{ 21, 13, 21, 0, 13, 69, 5857 }, // U+0448
{ 21, 17, 21, 0, 13, 90, 5926 }, // U+0449
{ 13, 13, 14, 0, 13, 43, 6016 }, // U+044A
{ 19, 13, 20, 0, 13, 62, 6059 }, // U+044B
{ 12, 13, 13, 0, 13, 39, 6121 }, // U+044C
{ 13, 13, 12, -1, 13, 43, 6160 }, // U+044D
{ 20, 13, 20, 0, 13, 65, 6203 }, // U+044E
{ 15, 13, 15, 0, 13, 49, 6268 }, // U+044F
{ 12, 21, 12, 0, 21, 63, 6317 }, // U+0450
{ 13, 19, 12, 0, 19, 62, 6380 }, // U+0451
{ 14, 25, 14, 0, 20, 88, 6442 }, // U+0452
{ 12, 21, 11, 0, 21, 63, 6530 }, // U+0453
{ 12, 13, 12, 0, 13, 39, 6593 }, // U+0454
{ 12, 13, 11, -1, 13, 39, 6632 }, // U+0455
{ 9, 19, 8, 0, 19, 43, 6671 }, // U+0456
{ 11, 19, 8, 0, 19, 53, 6714 }, // U+0457
{ 14, 24, 8, -5, 19, 84, 6767 }, // U+0458
{ 20, 13, 20, -1, 13, 65, 6851 }, // U+0459
{ 19, 13, 19, 0, 13, 62, 6916 }, // U+045A
{ 15, 19, 15, 0, 19, 72, 6978 }, // U+045B
{ 14, 21, 14, 0, 21, 74, 7050 }, // U+045C
{ 15, 21, 15, 0, 21, 79, 7124 }, // U+045D
{ 17, 25, 13, -4, 20, 107, 7203 }, // U+045E
{ 15, 18, 15, 0, 13, 68, 7310 }, // U+045F
{ 16, 19, 18, 1, 19, 76, 7378 }, // U+0462
{ 19, 13, 20, 0, 13, 62, 7454 }, // U+0463
{ 18, 17, 18, 0, 17, 77, 7516 }, // U+0472
{ 13, 13, 14, 0, 13, 43, 7593 }, // U+0473
{ 20, 17, 19, 1, 17, 85, 7636 }, // U+0474
{ 16, 13, 15, -1, 13, 52, 7721 }, // U+0475
{ 23, 29, 20, -1, 24, 167, 7773 }, // U+048A
{ 15, 25, 15, 0, 20, 94, 7940 }, // U+048B
{ 16, 17, 15, -1, 17, 68, 8034 }, // U+048C
{ 11, 17, 13, 1, 17, 47, 8102 }, // U+048D
{ 17, 17, 15, -1, 17, 73, 8149 }, // U+048E
{ 16, 18, 14, -2, 13, 72, 8222 }, // U+048F
{ 17, 21, 14, -1, 21, 90, 8294 }, // U+0490
{ 13, 17, 12, 0, 17, 56, 8384 }, // U+0491
{ 17, 17, 14, -1, 17, 73, 8440 }, // U+0492
{ 11, 13, 11, 0, 13, 36, 8513 }, // U+0493
{ 17, 22, 17, -1, 17, 94, 8549 }, // U+0494
{ 13, 18, 14, 0, 13, 59, 8643 }, // U+0495
{ 28, 22, 25, -2, 17, 154, 8702 }, // U+0496
{ 23, 18, 22, 0, 13, 104, 8856 }, // U+0497
{ 15, 22, 14, -1, 17, 83, 8960 }, // U+0498
{ 12, 18, 12, -1, 13, 54, 9043 }, // U+0499
{ 20, 22, 18, -1, 17, 110, 9097 }, // U+049A
{ 14, 17, 14, 0, 13, 60, 9207 }, // U+049B
{ 21, 17, 18, -1, 17, 90, 9267 }, // U+049C
{ 16, 13, 16, 0, 13, 52, 9357 }, // U+049D
{ 20, 17, 18, -1, 17, 85, 9409 }, // U+049E
{ 14, 17, 14, 0, 17, 60, 9494 }, // U+049F
{ 21, 17, 21, 1, 17, 90, 9554 }, // U+04A0
{ 16, 13, 16, 0, 13, 52, 9644 }, // U+04A1
{ 22, 22, 20, -1, 17, 121, 9696 }, // U+04A2
{ 16, 17, 16, 0, 13, 68, 9817 }, // U+04A3
{ 26, 17, 23, -1, 17, 111, 9885 }, // U+04A4
{ 19, 13, 19, 0, 13, 62, 9996 }, // U+04A5
{ 26, 22, 26, -1, 17, 143, 10058 }, // U+04A6
{ 20, 18, 21, 0, 13, 90, 10201 }, // U+04A7
{ 21, 17, 21, 0, 17, 90, 10291 }, // U+04A8
{ 16, 13, 16, 0, 13, 52, 10381 }, // U+04A9
{ 17, 22, 16, 0, 17, 94, 10433 }, // U+04AA
{ 12, 18, 11, 0, 13, 54, 10527 }, // U+04AB
{ 17, 22, 17, 1, 17, 94, 10581 }, // U+04AC
{ 22, 18, 22, 0, 13, 99, 10675 }, // U+04AD
{ 18, 17, 16, 1, 17, 77, 10774 }, // U+04AE
{ 13, 18, 13, 0, 13, 59, 10851 }, // U+04AF
{ 18, 17, 16, 1, 17, 77, 10910 }, // U+04B0
{ 13, 18, 13, 0, 13, 59, 10987 }, // U+04B1
{ 21, 22, 17, -2, 17, 116, 11046 }, // U+04B2
{ 16, 18, 14, -1, 13, 72, 11162 }, // U+04B3
{ 23, 22, 23, 1, 17, 127, 11234 }, // U+04B4
{ 16, 23, 16, 0, 18, 92, 11361 }, // U+04B5
{ 18, 22, 18, 1, 17, 99, 11453 }, // U+04B6
{ 15, 18, 15, 0, 13, 68, 11552 }, // U+04B7
{ 18, 17, 18, 1, 17, 77, 11620 }, // U+04B8
{ 15, 13, 15, 0, 13, 49, 11697 }, // U+04B9
{ 18, 17, 18, -1, 17, 77, 11746 }, // U+04BA
{ 15, 19, 15, 0, 19, 72, 11823 }, // U+04BB
{ 20, 17, 21, 0, 17, 85, 11895 }, // U+04BC
{ 15, 13, 15, 0, 13, 49, 11980 }, // U+04BD
{ 20, 22, 21, 0, 17, 110, 12029 }, // U+04BE
{ 15, 18, 15, 0, 13, 68, 12139 }, // U+04BF
{ 12, 17, 10, -1, 17, 51, 12207 }, // U+04C0
{ 29, 25, 24, -3, 25, 182, 12258 }, // U+04C1
{ 23, 20, 22, 0, 20, 115, 12440 }, // U+04C2
{ 20, 22, 18, -1, 17, 110, 12555 }, // U+04C3
{ 14, 18, 14, 0, 13, 63, 12665 }, // U+04C4
{ 22, 22, 18, -2, 17, 121, 12728 }, // U+04C5
{ 17, 18, 16, -1, 13, 77, 12849 }, // U+04C6
{ 22, 22, 20, -1, 17, 121, 12926 }, // U+04C7
{ 15, 18, 15, 0, 13, 68, 13047 }, // U+04C8
{ 22, 22, 20, -1, 17, 121, 13115 }, // U+04C9
{ 16, 18, 16, 0, 13, 72, 13236 }, // U+04CA
{ 18, 22, 18, 1, 17, 99, 13308 }, // U+04CB
{ 14, 18, 15, 0, 13, 63, 13407 }, // U+04CC
{ 25, 22, 23, -2, 17, 138, 13470 }, // U+04CD
{ 21, 18, 20, -1, 13, 95, 13608 }, // U+04CE
{ 12, 19, 10, -1, 19, 57, 13703 }, // U+04CF
{ 20, 24, 19, -2, 24, 120, 13760 }, // U+04D0
{ 15, 20, 15, 0, 20, 75, 13880 }, // U+04D1
{ 20, 22, 19, -2, 22, 110, 13955 }, // U+04D2
{ 15, 19, 15, 0, 19, 72, 14065 }, // U+04D3
{ 26, 17, 23, -2, 17, 111, 14137 }, // U+04D4
{ 20, 13, 20, 0, 13, 65, 14248 }, // U+04D5
{ 17, 24, 16, -1, 24, 102, 14313 }, // U+04D6
{ 13, 20, 12, 0, 20, 65, 14415 }, // U+04D7
{ 16, 17, 17, 0, 17, 68, 14480 }, // U+04D8
{ 12, 13, 12, 0, 13, 39, 14548 }, // U+04D9
{ 16, 22, 17, 0, 22, 88, 14587 }, // U+04DA
{ 12, 19, 12, 0, 19, 57, 14675 }, // U+04DB
{ 28, 22, 24, -2, 22, 154, 14732 }, // U+04DC
{ 23, 19, 22, 0, 19, 110, 14886 }, // U+04DD
{ 15, 22, 14, -1, 22, 83, 14996 }, // U+04DE
{ 13, 19, 12, -1, 19, 62, 15079 }, // U+04DF
{ 16, 17, 14, -1, 17, 68, 15141 }, // U+04E0
{ 16, 18, 13, -2, 13, 72, 15209 }, // U+04E1
{ 23, 22, 20, -1, 22, 127, 15281 }, // U+04E2
{ 15, 18, 15, 0, 18, 68, 15408 }, // U+04E3
{ 23, 22, 20, -1, 22, 127, 15476 }, // U+04E4
{ 15, 19, 15, 0, 19, 72, 15603 }, // U+04E5
{ 18, 22, 18, 0, 22, 99, 15675 }, // U+04E6
{ 14, 19, 14, 0, 19, 67, 15774 }, // U+04E7
{ 18, 17, 18, 0, 17, 77, 15841 }, // U+04E8
{ 13, 13, 14, 0, 13, 43, 15918 }, // U+04E9
{ 18, 22, 18, 0, 22, 99, 15961 }, // U+04EA
{ 14, 19, 14, 0, 19, 67, 16060 }, // U+04EB
{ 17, 22, 16, -1, 22, 94, 16127 }, // U+04EC
{ 13, 19, 12, -1, 19, 62, 16221 }, // U+04ED
{ 18, 22, 17, 1, 22, 99, 16283 }, // U+04EE
{ 17, 24, 13, -4, 19, 102, 16382 }, // U+04EF
{ 18, 22, 17, 1, 22, 99, 16484 }, // U+04F0
{ 17, 24, 13, -4, 19, 102, 16583 }, // U+04F1
{ 18, 25, 17, 1, 25, 113, 16685 }, // U+04F2
{ 17, 26, 13, -4, 21, 111, 16798 }, // U+04F3
{ 18, 22, 18, 1, 22, 99, 16909 }, // U+04F4
{ 15, 19, 15, 0, 19, 72, 17008 }, // U+04F5
{ 17, 22, 14, -1, 17, 94, 17080 }, // U+04F6
{ 11, 18, 11, 0, 13, 50, 17174 }, // U+04F7
{ 26, 22, 24, -1, 22, 143, 17224 }, // U+04F8
{ 19, 19, 20, 0, 19, 91, 17367 }, // U+04F9
{ 17, 22, 14, -1, 17, 94, 17458 }, // U+04FA
{ 11, 18, 11, 0, 13, 50, 17552 }, // U+04FB
{ 21, 22, 17, -2, 17, 116, 17602 }, // U+04FC
{ 16, 18, 14, -1, 13, 72, 17718 }, // U+04FD
{ 21, 17, 17, -2, 17, 90, 17790 }, // U+04FE
{ 16, 13, 14, -1, 13, 52, 17880 }, // U+04FF
{ 0, 0, 13, 0, 0, 0, 0 }, // U+2000
{ 0, 0, 25, 0, 0, 0, 0 }, // U+2001
{ 0, 0, 13, 0, 0, 0, 0 }, // U+2002
{ 0, 0, 25, 0, 0, 0, 0 }, // U+2003
{ 0, 0, 8, 0, 0, 0, 0 }, // U+2004
{ 0, 0, 6, 0, 0, 0, 0 }, // U+2005
{ 0, 0, 4, 0, 0, 0, 0 }, // U+2006
{ 0, 0, 16, 0, 0, 0, 0 }, // U+2007
{ 0, 0, 8, 0, 0, 0, 0 }, // U+2008
{ 0, 0, 5, 0, 0, 0, 0 }, // U+2009
{ 0, 0, 1, 0, 0, 0, 0 }, // U+200A
{ 0, 0, 0, 0, 0, 0, 0 }, // U+200B
{ 2, 19, 0, -1, 14, 10, 0 }, // U+200C
{ 6, 22, 0, -3, 17, 33, 10 }, // U+200D
{ 8, 22, 0, -4, 17, 44, 43 }, // U+200E
{ 8, 22, 0, -4, 17, 44, 87 }, // U+200F
{ 8, 3, 10, 1, 8, 6, 131 }, // U+2010
{ 8, 3, 10, 1, 8, 6, 137 }, // U+2011
{ 13, 3, 16, 1, 10, 10, 143 }, // U+2012
{ 13, 3, 13, 0, 8, 10, 153 }, // U+2013
{ 25, 3, 25, 0, 8, 19, 163 }, // U+2014
{ 25, 3, 25, 0, 8, 19, 182 }, // U+2015
{ 9, 24, 13, 2, 19, 54, 201 }, // U+2016
{ 13, 7, 13, 0, 0, 23, 255 }, // U+2017
{ 6, 8, 8, 2, 18, 12, 278 }, // U+2018
{ 6, 8, 8, 1, 18, 12, 290 }, // U+2019
{ 6, 8, 8, 0, 4, 12, 302 }, // U+201A
{ 6, 8, 8, 1, 18, 12, 314 }, // U+201B
{ 11, 8, 13, 2, 18, 22, 326 }, // U+201C
{ 12, 8, 13, 1, 17, 24, 348 }, // U+201D
{ 11, 8, 13, 0, 4, 22, 372 }, // U+201E
{ 11, 8, 13, 1, 18, 22, 394 }, // U+201F
{ 11, 16, 12, 1, 17, 44, 416 }, // U+2020
{ 13, 19, 12, -1, 17, 62, 460 }, // U+2021
{ 7, 5, 8, 0, 9, 9, 522 }, // U+2022
{ 9, 9, 16, 3, 13, 21, 531 }, // U+2023
{ 5, 4, 7, 1, 4, 5, 552 }, // U+2024
{ 11, 4, 13, 1, 4, 11, 557 }, // U+2025
{ 21, 4, 25, 2, 4, 21, 568 }, // U+2026
{ 5, 4, 7, 1, 9, 5, 589 }, // U+2027
{ 0, 0, 0, 0, 0, 0, 594 }, // U+2028
{ 0, 0, 0, 0, 0, 0, 594 }, // U+2029
{ 8, 22, 0, -4, 17, 44, 594 }, // U+202A
{ 8, 22, 0, -4, 17, 44, 638 }, // U+202B
{ 8, 22, 0, -4, 17, 44, 682 }, // U+202C
{ 11, 22, 0, -5, 17, 61, 726 }, // U+202D
{ 11, 22, 0, -5, 17, 61, 787 }, // U+202E
{ 0, 0, 3, 0, 0, 0, 848 }, // U+202F
{ 33, 19, 35, 1, 18, 157, 848 }, // U+2030
{ 6, 8, 6, 0, 17, 12, 1005 }, // U+2032
{ 11, 8, 11, 0, 17, 22, 1017 }, // U+2033
{ 17, 8, 17, 0, 17, 34, 1039 }, // U+2034
{ 6, 8, 6, 0, 17, 12, 1073 }, // U+2035
{ 12, 8, 12, 0, 17, 24, 1085 }, // U+2036
{ 17, 8, 17, 0, 17, 34, 1109 }, // U+2037
{ 11, 5, 12, 1, 0, 14, 1143 }, // U+2038
{ 9, 9, 9, 0, 11, 21, 1157 }, // U+2039
{ 8, 9, 9, 0, 11, 18, 1178 }, // U+203A
{ 16, 16, 16, 0, 16, 64, 1196 }, // U+203B
{ 15, 19, 15, 1, 19, 72, 1260 }, // U+203C
{ 13, 3, 13, 0, 21, 10, 1332 }, // U+203E
{ 6, 3, 8, 1, 8, 5, 1342 }, // U+2043
{ 17, 20, 7, -5, 18, 85, 1347 }, // U+2044
{ 18, 17, 20, 2, 17, 77, 1432 }, // U+2047
{ 16, 19, 17, 2, 19, 76, 1509 }, // U+2048
{ 17, 19, 17, 1, 19, 81, 1585 }, // U+2049
{ 15, 6, 25, 5, 10, 23, 1666 }, // U+2053
{ 23, 8, 23, 0, 17, 46, 1689 }, // U+2057
{ 0, 0, 6, 0, 0, 0, 1735 }, // U+205F
{ 0, 0, 0, 0, 0, 0, 1735 }, // U+2060
{ 0, 0, 0, 0, 0, 0, 1735 }, // U+2061
{ 0, 0, 0, 0, 0, 0, 1735 }, // U+2062
{ 0, 0, 0, 0, 0, 0, 1735 }, // U+2063
{ 0, 0, 0, 0, 0, 0, 1735 }, // U+2064
{ 11, 11, 11, 0, 20, 31, 0 }, // U+2070
{ 11, 11, 11, 0, 20, 31, 31 }, // U+2074
{ 11, 11, 11, 0, 20, 31, 62 }, // U+2075
{ 10, 11, 11, 1, 20, 28, 93 }, // U+2076
{ 9, 11, 11, 2, 20, 25, 121 }, // U+2077
{ 11, 11, 11, 0, 20, 31, 146 }, // U+2078
{ 11, 11, 11, 0, 20, 31, 177 }, // U+2079
{ 11, 9, 14, 2, 18, 25, 208 }, // U+207F
{ 11, 11, 11, 0, 8, 31, 233 }, // U+2080
{ 8, 12, 11, 1, 9, 24, 264 }, // U+2081
{ 11, 11, 11, 0, 8, 31, 288 }, // U+2082
{ 9, 11, 11, 1, 8, 25, 319 }, // U+2083
{ 11, 11, 11, 0, 8, 31, 344 }, // U+2084
{ 11, 11, 11, 0, 8, 31, 375 }, // U+2085
{ 10, 11, 11, 1, 8, 28, 406 }, // U+2086
{ 9, 11, 11, 2, 8, 25, 434 }, // U+2087
{ 11, 11, 11, 0, 8, 31, 459 }, // U+2088
{ 11, 11, 11, 0, 8, 31, 490 }, // U+2089
{ 17, 17, 16, -1, 17, 73, 0 }, // U+20A3
{ 17, 17, 16, -1, 17, 73, 73 }, // U+20A4
{ 33, 17, 33, 0, 17, 141, 146 }, // U+20A7
{ 18, 17, 16, -1, 17, 77, 287 }, // U+20AC
{ 17, 13, 25, 4, 15, 56, 0 }, // U+2190
{ 13, 16, 25, 6, 17, 52, 56 }, // U+2191
{ 17, 13, 25, 4, 15, 56, 108 }, // U+2192
{ 13, 16, 25, 6, 17, 52, 164 }, // U+2193
{ 16, 11, 25, 4, 14, 44, 216 }, // U+2194
{ 11, 17, 25, 7, 17, 47, 260 }, // U+2195
{ 13, 18, 25, 6, 18, 59, 307 }, // U+21A8
{ 11, 18, 25, 7, 18, 50, 366 }, // U+21B2
{ 11, 18, 25, 7, 18, 50, 416 }, // U+21B3
{ 15, 14, 25, 5, 16, 53, 466 }, // U+21B5
{ 17, 14, 25, 4, 16, 60, 519 }, // U+21D0
{ 14, 17, 25, 6, 17, 60, 579 }, // U+21D1
{ 17, 14, 25, 4, 16, 60, 639 }, // U+21D2
{ 14, 17, 25, 6, 17, 60, 699 }, // U+21D3
{ 16, 13, 25, 4, 15, 52, 759 }, // U+21D4
{ 18, 19, 25, 3, 18, 86, 0 }, // U+2200
{ 13, 21, 16, 1, 20, 69, 86 }, // U+2202
{ 12, 17, 25, 6, 17, 51, 155 }, // U+2203
{ 19, 21, 25, 3, 19, 100, 206 }, // U+2205
{ 16, 18, 17, 0, 18, 72, 306 }, // U+2206
{ 16, 19, 25, 5, 18, 76, 378 }, // U+2207
{ 17, 17, 25, 4, 17, 73, 454 }, // U+2208
{ 17, 22, 25, 4, 19, 94, 527 }, // U+2209
{ 17, 15, 25, 4, 16, 64, 621 }, // U+220A
{ 17, 17, 25, 4, 17, 73, 685 }, // U+220B
{ 17, 22, 25, 4, 19, 94, 758 }, // U+220C
{ 17, 15, 25, 4, 16, 64, 852 }, // U+220D
{ 21, 22, 21, 0, 18, 116, 916 }, // U+220F
{ 16, 23, 17, 0, 18, 92, 1032 }, // U+2211
{ 12, 3, 16, 2, 10, 9, 1124 }, // U+2212
{ 15, 20, 13, -1, 18, 75, 1133 }, // U+2215
{ 13, 20, 13, 0, 18, 65, 1208 }, // U+2216
{ 12, 12, 16, 2, 14, 36, 1273 }, // U+2217
{ 10, 9, 16, 3, 13, 23, 1309 }, // U+2218
{ 5, 4, 16, 5, 9, 5, 1332 }, // U+2219
{ 17, 23, 16, -1, 20, 98, 1337 }, // U+221A
{ 13, 10, 16, 1, 13, 33, 1435 }, // U+221D
{ 16, 10, 16, 0, 13, 40, 1468 }, // U+221E
{ 17, 18, 25, 4, 18, 77, 1508 }, // U+221F
{ 19, 18, 25, 3, 18, 86, 1585 }, // U+2220
{ 4, 25, 13, 4, 19, 25, 1671 }, // U+2223
{ 9, 25, 13, 2, 19, 57, 1696 }, // U+2225
{ 18, 18, 25, 4, 18, 81, 1753 }, // U+2227
{ 18, 18, 25, 4, 18, 81, 1834 }, // U+2228
{ 15, 18, 25, 5, 18, 68, 1915 }, // U+2229
{ 15, 18, 25, 5, 18, 68, 1983 }, // U+222A
{ 14, 26, 16, 1, 20, 91, 2051 }, // U+222B
{ 16, 14, 25, 4, 14, 56, 2142 }, // U+2234
{ 16, 14, 25, 4, 14, 56, 2198 }, // U+2235
{ 6, 13, 8, 1, 15, 20, 2254 }, // U+2236
{ 17, 14, 25, 4, 14, 60, 2274 }, // U+2237
{ 15, 6, 25, 5, 10, 23, 2334 }, // U+223C
{ 16, 15, 25, 4, 16, 60, 2357 }, // U+2245
{ 13, 11, 16, 1, 14, 36, 2417 }, // U+2248
{ 15, 10, 25, 5, 12, 38, 2453 }, // U+224D
{ 12, 13, 16, 2, 15, 39, 2491 }, // U+2260
{ 14, 13, 25, 5, 14, 46, 2530 }, // U+2261
{ 12, 15, 16, 1, 15, 45, 2576 }, // U+2264
{ 12, 16, 16, 2, 16, 48, 2621 }, // U+2265
{ 21, 13, 25, 2, 15, 69, 2669 }, // U+226A
{ 21, 13, 25, 2, 15, 69, 2738 }, // U+226B
{ 17, 15, 25, 4, 16, 64, 2807 }, // U+2283
{ 17, 23, 25, 4, 20, 98, 2871 }, // U+2284
{ 17, 23, 25, 4, 20, 98, 2969 }, // U+2285
{ 17, 17, 25, 4, 17, 73, 3067 }, // U+2286
{ 17, 17, 25, 4, 17, 73, 3140 }, // U+2287
{ 20, 19, 25, 2, 18, 95, 3213 }, // U+2295
{ 19, 19, 25, 3, 18, 91, 3308 }, // U+2296
{ 19, 19, 25, 3, 18, 91, 3399 }, // U+2297
{ 19, 19, 25, 3, 18, 91, 3490 }, // U+2298
{ 15, 18, 25, 5, 18, 68, 3581 }, // U+22A5
{ 5, 4, 16, 5, 9, 5, 3649 }, // U+22C5
{ 22, 4, 25, 2, 9, 22, 3654 }, // U+22EF
{ 27, 24, 19, -5, 19, 162, 0 }, // U+FB00
{ 21, 24, 16, -5, 19, 126, 162 }, // U+FB01
{ 22, 24, 17, -5, 19, 132, 288 }, // U+FB02
{ 29, 24, 24, -5, 19, 174, 420 }, // U+FB03
{ 30, 24, 25, -5, 19, 180, 594 }, // U+FB04
{ 24, 24, 19, -5, 19, 144, 774 }, // U+FB05
{ 22, 18, 21, -1, 18, 99, 918 }, // U+FB06
{ 25, 24, 25, 0, 21, 150, 0 }, // U+FFFD
};
static const EpdUnicodeInterval bookerly_12_bolditalicIntervals[] = {
{ 0x0, 0x0, 0x0 },
{ 0x8, 0x9, 0x1 },
{ 0xD, 0xD, 0x3 },
{ 0x1D, 0x1D, 0x4 },
{ 0x20, 0x7E, 0x5 },
{ 0xA0, 0xFF, 0x64 },
{ 0x100, 0x17F, 0xC4 },
{ 0x300, 0x304, 0x144 },
{ 0x306, 0x30C, 0x149 },
{ 0x30F, 0x30F, 0x150 },
{ 0x311, 0x315, 0x151 },
{ 0x31B, 0x31B, 0x156 },
{ 0x323, 0x329, 0x157 },
{ 0x32D, 0x32E, 0x15E },
{ 0x330, 0x331, 0x160 },
{ 0x342, 0x342, 0x162 },
{ 0x344, 0x345, 0x163 },
{ 0x400, 0x45F, 0x165 },
{ 0x462, 0x463, 0x1C5 },
{ 0x472, 0x475, 0x1C7 },
{ 0x48A, 0x4FF, 0x1CB },
{ 0x2000, 0x2030, 0x241 },
{ 0x2032, 0x203C, 0x272 },
{ 0x203E, 0x203E, 0x27D },
{ 0x2043, 0x2044, 0x27E },
{ 0x2047, 0x2049, 0x280 },
{ 0x2053, 0x2053, 0x283 },
{ 0x2057, 0x2057, 0x284 },
{ 0x205F, 0x2064, 0x285 },
{ 0x2070, 0x2070, 0x28B },
{ 0x2074, 0x2079, 0x28C },
{ 0x207F, 0x2089, 0x292 },
{ 0x20A3, 0x20A4, 0x29D },
{ 0x20A7, 0x20A7, 0x29F },
{ 0x20AC, 0x20AC, 0x2A0 },
{ 0x2190, 0x2195, 0x2A1 },
{ 0x21A8, 0x21A8, 0x2A7 },
{ 0x21B2, 0x21B3, 0x2A8 },
{ 0x21B5, 0x21B5, 0x2AA },
{ 0x21D0, 0x21D4, 0x2AB },
{ 0x2200, 0x2200, 0x2B0 },
{ 0x2202, 0x2203, 0x2B1 },
{ 0x2205, 0x220D, 0x2B3 },
{ 0x220F, 0x220F, 0x2BC },
{ 0x2211, 0x2212, 0x2BD },
{ 0x2215, 0x221A, 0x2BF },
{ 0x221D, 0x2220, 0x2C5 },
{ 0x2223, 0x2223, 0x2C9 },
{ 0x2225, 0x2225, 0x2CA },
{ 0x2227, 0x222B, 0x2CB },
{ 0x2234, 0x2237, 0x2D0 },
{ 0x223C, 0x223C, 0x2D4 },
{ 0x2245, 0x2245, 0x2D5 },
{ 0x2248, 0x2248, 0x2D6 },
{ 0x224D, 0x224D, 0x2D7 },
{ 0x2260, 0x2261, 0x2D8 },
{ 0x2264, 0x2265, 0x2DA },
{ 0x226A, 0x226B, 0x2DC },
{ 0x2283, 0x2287, 0x2DE },
{ 0x2295, 0x2298, 0x2E3 },
{ 0x22A5, 0x22A5, 0x2E7 },
{ 0x22C5, 0x22C5, 0x2E8 },
{ 0x22EF, 0x22EF, 0x2E9 },
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
{ 0xFB00, 0xFB06, 0x2EA },
{ 0xFFFD, 0xFFFD, 0x2F1 },
};
perf: Reduce overall flash usage by 30.7% by compressing built-in fonts (#831) ## Summary **What is the goal of this PR?** Compress reader font bitmaps to reduce flash usage by 30.7%. **What changes are included?** - New `EpdFontGroup` struct and extended `EpdFontData` with `groups`/`groupCount` fields - `--compress` flag in `fontconvert.py`: groups glyphs (ASCII base group + groups of 8) and compresses each with raw DEFLATE - `FontDecompressor` class with 4-slot LRU cache for on-demand decompression during rendering - `GfxRenderer` transparently routes bitmap access through `getGlyphBitmap()` (compressed or direct flash) - Uses `uzlib` for decompression with minimal heap overhead. - 48 reader fonts (Bookerly, NotoSans 12-18pt, OpenDyslexic) regenerated with compression; 5 UI fonts unchanged - Round-trip verification script (`verify_compression.py`) runs as part of font generation ## Additional Context ## Flash & RAM | | baseline | font-compression | Difference | |--|--------|-----------------|------------| | Flash (ELF) | 6,302,476 B (96.2%) | 4,365,022 B (66.6%) | -1,937,454 B (-30.7%) | | firmware.bin | 6,468,192 B | 4,531,008 B | -1,937,184 B (-29.9%) | | RAM | 101,700 B (31.0%) | 103,076 B (31.5%) | +1,376 B (+0.5%) | ## Script-Based Grouping (Cold Cache) Comparison of uncompressed baseline vs script-based group compression (4-slot LRU cache, cleared each page). Glyphs are grouped by Unicode block (ASCII, Latin-1, Latin Extended-A, Combining Marks, Cyrillic, General Punctuation, etc.) instead of sequential groups of 8. ### Render Time | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Median** | 414.9 ms | 431.6 ms | +16.7 ms (+4.0%) | | **Pages** | 37 | 37 | | ### Memory Usage | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Heap free (median)** | 187.0 KB | 176.3 KB | -10.7 KB | | **Heap free (min)** | 186.0 KB | 166.5 KB | -19.5 KB | | **Largest block (median)** | 148.0 KB | 128.0 KB | -20.0 KB | | **Largest block (min)** | 148.0 KB | 120.0 KB | -28.0 KB | ### Cache Effectiveness | | Misses/page | Hit rate | |---|---|---| | **Compressed (cold cache)** | 2.1 | 99.85% | ------ ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES**_ Implementation was done by Claude Code (Opus 4.6) based on a plan developed collaboratively. All generated font headers were verified with an automated round-trip decompression test. The firmware was compiled successfully but has not yet been tested on-device. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:30:15 +11:00
static const EpdFontGroup bookerly_12_bolditalicGroups[] = {
fix: force auto-hinting for Bookerly to fix inconsistent stem widths (#1098) ## Summary Bookerly's native TrueType hinting is effectively a no-op at the sizes used here, causing FreeType to place stems at inconsistent sub-pixel positions. This results in the 'k' stem (8-bit fringe: 0x38=56) falling just below the 2-bit quantization threshold while 'l' and 'h' stems (fringes: 0x4C=76, 0x40=64) land above it --- making 'k' visibly narrower (2.00px vs 2.33px effective width). FreeType's auto-hinter snaps all stems to consistent grid positions, normalizing effective stem width to 2.67px across all glyphs. Adds --force-autohint flag to fontconvert.py and applies it to Bookerly only. NotoSans, OpenDyslexic, and Ubuntu fonts are unaffected. Here is an example of before/after. Take notice of the vertical stems on characters like `l`, `k`, `n`, `i`, etc. The font is Bookerly 12pt regular: **BEFORE**: ![before](https://github.com/user-attachments/assets/65b2acab-ad95-489e-885e-e3a0163cc252) **AFTER**: ![after](https://github.com/user-attachments/assets/d09a8b5d-40af-4a7d-b622-e1b2cabcce85) Claude generated this script to quantitatively determine that this change makes the vertical stems on a variety of characters more consistent for Bookerly _only_. <details> <summary>Python script</summary> ```python #!/usr/bin/env python3 """Compare stem consistency across all font families with and without auto-hinting. Run from repo root: python3 compare_all_fonts.py """ import freetype DPI = 150 CHARS = ["k", "l", "h", "i", "b", "d"] SIZES = [12, 14, 16, 18] FONTS = { "Bookerly": "lib/EpdFont/builtinFonts/source/Bookerly/Bookerly-Regular.ttf", "NotoSans": "lib/EpdFont/builtinFonts/source/NotoSans/NotoSans-Regular.ttf", "OpenDyslexic": "lib/EpdFont/builtinFonts/source/OpenDyslexic/OpenDyslexic-Regular.otf", "Ubuntu": "lib/EpdFont/builtinFonts/source/Ubuntu/Ubuntu-Regular.ttf", } MODES = { "default": freetype.FT_LOAD_RENDER, "autohint": freetype.FT_LOAD_RENDER | freetype.FT_LOAD_FORCE_AUTOHINT, } def q4to2(v): if v >= 12: return 3 elif v >= 8: return 2 elif v >= 4: return 1 else: return 0 def get_stem_eff(face, char, flags): gi = face.get_char_index(ord(char)) if gi == 0: return None face.load_glyph(gi, flags) bm = face.glyph.bitmap w, h = bm.width, bm.rows if w == 0 or h == 0: return None p2 = [] for y in range(h): row = [] for x in range(w): row.append(q4to2(bm.buffer[y * bm.pitch + x] >> 4)) p2.append(row) # Measure leftmost stem in stable middle rows mid_start, mid_end = h // 4, h - h // 4 widths = [] for y in range(mid_start, mid_end): first = next((x for x in range(w) if p2[y][x] > 0), -1) if first < 0: continue last = first for x in range(first, w): if p2[y][x] > 0: last = x else: break eff = sum(p2[y][x] for x in range(first, last + 1)) / 3.0 widths.append(eff) return round(sum(widths) / len(widths), 2) if widths else None def main(): for font_name, font_path in FONTS.items(): try: freetype.Face(font_path) except Exception: print(f"\n {font_name}: SKIPPED (file not found)") continue print(f"\n{'=' * 80}") print(f" {font_name}") print(f"{'=' * 80}") for size in SIZES: print(f"\n {size}pt:") print(f" {'':6s}", end="") for c in CHARS: print(f" '{c}' ", end="") print(" | spread") for mode_name, flags in MODES.items(): face = freetype.Face(font_path) face.set_char_size(size << 6, size << 6, DPI, DPI) vals = [] print(f" {mode_name:6s}", end="") for c in CHARS: v = get_stem_eff(face, c, flags) vals.append(v) print(f" {v:5.2f}" if v else " N/A", end="") valid = [v for v in vals if v is not None] spread = max(valid) - min(valid) if len(valid) >= 2 else 0 marker = " <-- inconsistent" if spread > 0.5 else "" print(f" | {spread:.2f}{marker}") if __name__ == "__main__": main() ``` </details> Here are the results. The table compares how the font-generation `autohint` flag affects the range of widths of various characters. Lower `spread` mean that glyph stroke widths should appear more consistent. ``` Spread = max stem width - min stem width across glyphs (lower = more consistent): ┌──────────────┬──────┬─────────┬──────────┬──────────┐ │ Font │ Size │ Default │ Autohint │ Winner │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Bookerly │ 12pt │ 1.49 │ 1.12 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.39 │ 1.13 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.38 │ 1.16 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.90 │ 1.58 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ NotoSans │ 12pt │ 1.16 │ 0.94 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 0.83 │ 1.14 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 1.41 │ 1.51 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.74 │ 1.63 │ mixed │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ OpenDyslexic │ 12pt │ 2.22 │ 1.44 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 2.57 │ 3.29 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 3.13 │ 2.60 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 3.21 │ 3.23 │ ~tied │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ Ubuntu │ 12pt │ 1.25 │ 1.31 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 14pt │ 1.41 │ 1.64 │ default │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 16pt │ 2.21 │ 1.71 │ autohint │ ├──────────────┼──────┼─────────┼──────────┼──────────┤ │ │ 18pt │ 1.80 │ 1.71 │ autohint │ └──────────────┴──────┴─────────┴──────────┴──────────┘ ``` --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? I used AI to make sure I'm not doing something stupid, since I'm not a typography expert. I made the changes though.
2026-02-24 06:13:08 +11:00
{ 0, 3460, 5762, 100, 0 },
{ 3460, 3271, 6987, 96, 100 },
{ 6731, 5176, 11148, 128, 196 },
{ 11907, 289, 341, 33, 324 },
{ 12196, 8247, 17932, 220, 357 },
{ 20443, 1025, 1735, 74, 577 },
{ 21468, 272, 521, 18, 651 },
{ 21740, 269, 364, 4, 669 },
{ 22009, 467, 811, 15, 673 },
{ 22476, 1811, 3676, 58, 688 },
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
{ 24287, 551, 1017, 7, 746 },
{ 24838, 105, 150, 1, 753 },
};
static const EpdKernClassEntry bookerly_12_bolditalicKernLeftClasses[] = {
{ 0x0028, 1 }, // (
{ 0x002A, 2 }, // *
{ 0x002C, 3 }, // ,
{ 0x002D, 4 }, // -
{ 0x002E, 3 }, // .
{ 0x002F, 5 }, // /
{ 0x0041, 6 }, // A
{ 0x0042, 7 }, // B
{ 0x0043, 8 }, // C
{ 0x0044, 9 }, // D
{ 0x0045, 10 }, // E
{ 0x0046, 11 }, // F
{ 0x0047, 12 }, // G
{ 0x0048, 13 }, // H
{ 0x0049, 13 }, // I
{ 0x004A, 14 }, // J
{ 0x004B, 15 }, // K
{ 0x004C, 16 }, // L
{ 0x004D, 17 }, // M
{ 0x004E, 18 }, // N
{ 0x004F, 9 }, // O
{ 0x0050, 19 }, // P
{ 0x0051, 20 }, // Q
{ 0x0052, 21 }, // R
{ 0x0053, 22 }, // S
{ 0x0054, 23 }, // T
{ 0x0055, 24 }, // U
{ 0x0056, 25 }, // V
{ 0x0057, 26 }, // W
{ 0x0058, 27 }, // X
{ 0x0059, 28 }, // Y
{ 0x005A, 29 }, // Z
{ 0x005B, 30 }, // [
{ 0x005C, 31 }, // <backslash>
{ 0x0061, 32 }, // a
{ 0x0062, 33 }, // b
{ 0x0063, 34 }, // c
{ 0x0065, 35 }, // e
{ 0x0066, 36 }, // f
{ 0x0067, 37 }, // g
{ 0x0068, 38 }, // h
{ 0x0069, 39 }, // i
{ 0x006A, 40 }, // j
{ 0x006B, 41 }, // k
{ 0x006D, 38 }, // m
{ 0x006E, 38 }, // n
{ 0x006F, 33 }, // o
{ 0x0070, 33 }, // p
{ 0x0071, 42 }, // q
{ 0x0072, 43 }, // r
{ 0x0073, 44 }, // s
{ 0x0074, 45 }, // t
{ 0x0075, 32 }, // u
{ 0x0076, 46 }, // v
{ 0x0077, 46 }, // w
{ 0x0078, 47 }, // x
{ 0x0079, 46 }, // y
{ 0x007A, 48 }, // z
{ 0x007B, 49 }, // {
{ 0x00A1, 50 }, // U+00A1
{ 0x00AD, 4 }, // U+00AD
{ 0x00BB, 51 }, // U+00BB
{ 0x00BF, 52 }, // U+00BF
{ 0x00C0, 6 }, // U+00C0
{ 0x00C1, 6 }, // U+00C1
{ 0x00C2, 6 }, // U+00C2
{ 0x00C3, 6 }, // U+00C3
{ 0x00C4, 6 }, // U+00C4
{ 0x00C5, 6 }, // U+00C5
{ 0x00C6, 10 }, // U+00C6
{ 0x00C7, 8 }, // U+00C7
{ 0x00C8, 10 }, // U+00C8
{ 0x00C9, 10 }, // U+00C9
{ 0x00CA, 10 }, // U+00CA
{ 0x00CB, 10 }, // U+00CB
{ 0x00CC, 13 }, // U+00CC
{ 0x00CD, 13 }, // U+00CD
{ 0x00CE, 13 }, // U+00CE
{ 0x00CF, 13 }, // U+00CF
{ 0x00D0, 9 }, // U+00D0
{ 0x00D1, 18 }, // U+00D1
{ 0x00D2, 9 }, // U+00D2
{ 0x00D3, 9 }, // U+00D3
{ 0x00D4, 9 }, // U+00D4
{ 0x00D5, 9 }, // U+00D5
{ 0x00D6, 9 }, // U+00D6
{ 0x00D8, 9 }, // U+00D8
{ 0x00D9, 24 }, // U+00D9
{ 0x00DA, 24 }, // U+00DA
{ 0x00DB, 24 }, // U+00DB
{ 0x00DC, 24 }, // U+00DC
{ 0x00DD, 28 }, // U+00DD
{ 0x00DE, 53 }, // U+00DE
{ 0x00DF, 54 }, // U+00DF
{ 0x00E0, 32 }, // U+00E0
{ 0x00E1, 32 }, // U+00E1
{ 0x00E2, 32 }, // U+00E2
{ 0x00E3, 32 }, // U+00E3
{ 0x00E4, 32 }, // U+00E4
{ 0x00E5, 32 }, // U+00E5
{ 0x00E6, 35 }, // U+00E6
{ 0x00E7, 55 }, // U+00E7
{ 0x00E8, 35 }, // U+00E8
{ 0x00E9, 35 }, // U+00E9
{ 0x00EA, 35 }, // U+00EA
{ 0x00EB, 35 }, // U+00EB
{ 0x00EC, 39 }, // U+00EC
{ 0x00ED, 56 }, // U+00ED
{ 0x00EE, 57 }, // U+00EE
{ 0x00EF, 57 }, // U+00EF
{ 0x00F0, 33 }, // U+00F0
{ 0x00F1, 38 }, // U+00F1
{ 0x00F2, 33 }, // U+00F2
{ 0x00F3, 33 }, // U+00F3
{ 0x00F4, 33 }, // U+00F4
{ 0x00F5, 33 }, // U+00F5
{ 0x00F6, 33 }, // U+00F6
{ 0x00F8, 58 }, // U+00F8
{ 0x00F9, 32 }, // U+00F9
{ 0x00FA, 32 }, // U+00FA
{ 0x00FB, 32 }, // U+00FB
{ 0x00FC, 32 }, // U+00FC
{ 0x00FD, 46 }, // U+00FD
{ 0x00FE, 33 }, // U+00FE
{ 0x00FF, 46 }, // U+00FF
{ 0x0100, 6 }, // U+0100
{ 0x0101, 32 }, // U+0101
{ 0x0102, 6 }, // U+0102
{ 0x0103, 32 }, // U+0103
{ 0x0104, 59 }, // U+0104
{ 0x0105, 60 }, // U+0105
{ 0x0106, 8 }, // U+0106
{ 0x0107, 34 }, // U+0107
{ 0x0108, 8 }, // U+0108
{ 0x0109, 34 }, // U+0109
{ 0x010A, 8 }, // U+010A
{ 0x010B, 34 }, // U+010B
{ 0x010C, 8 }, // U+010C
{ 0x010D, 34 }, // U+010D
{ 0x010E, 9 }, // U+010E
{ 0x010F, 61 }, // U+010F
{ 0x0110, 9 }, // U+0110
{ 0x0112, 10 }, // U+0112
{ 0x0113, 35 }, // U+0113
{ 0x0114, 10 }, // U+0114
{ 0x0115, 35 }, // U+0115
{ 0x0116, 10 }, // U+0116
{ 0x0117, 35 }, // U+0117
{ 0x0118, 62 }, // U+0118
{ 0x0119, 63 }, // U+0119
{ 0x011A, 10 }, // U+011A
{ 0x011B, 35 }, // U+011B
{ 0x011C, 12 }, // U+011C
{ 0x011D, 37 }, // U+011D
{ 0x011E, 12 }, // U+011E
{ 0x011F, 37 }, // U+011F
{ 0x0120, 12 }, // U+0120
{ 0x0121, 37 }, // U+0121
{ 0x0122, 12 }, // U+0122
{ 0x0123, 37 }, // U+0123
{ 0x0124, 13 }, // U+0124
{ 0x0125, 38 }, // U+0125
{ 0x0126, 64 }, // U+0126
{ 0x0127, 38 }, // U+0127
{ 0x0128, 13 }, // U+0128
{ 0x0129, 57 }, // U+0129
{ 0x012A, 13 }, // U+012A
{ 0x012B, 57 }, // U+012B
{ 0x012C, 13 }, // U+012C
{ 0x012D, 57 }, // U+012D
{ 0x012E, 65 }, // U+012E
{ 0x012F, 66 }, // U+012F
{ 0x0130, 13 }, // U+0130
{ 0x0131, 32 }, // U+0131
{ 0x0132, 14 }, // U+0132
{ 0x0133, 40 }, // U+0133
{ 0x0134, 14 }, // U+0134
{ 0x0135, 67 }, // U+0135
{ 0x0136, 15 }, // U+0136
{ 0x0137, 41 }, // U+0137
{ 0x0138, 47 }, // U+0138
{ 0x0139, 16 }, // U+0139
{ 0x013B, 16 }, // U+013B
{ 0x013C, 68 }, // U+013C
{ 0x013E, 61 }, // U+013E
{ 0x0141, 16 }, // U+0141
{ 0x0142, 69 }, // U+0142
{ 0x0143, 18 }, // U+0143
{ 0x0144, 38 }, // U+0144
{ 0x0145, 18 }, // U+0145
{ 0x0146, 38 }, // U+0146
{ 0x0147, 18 }, // U+0147
{ 0x0148, 38 }, // U+0148
{ 0x0149, 38 }, // U+0149
{ 0x014A, 18 }, // U+014A
{ 0x014B, 40 }, // U+014B
{ 0x014C, 9 }, // U+014C
{ 0x014D, 33 }, // U+014D
{ 0x014E, 9 }, // U+014E
{ 0x014F, 33 }, // U+014F
{ 0x0150, 9 }, // U+0150
{ 0x0151, 33 }, // U+0151
{ 0x0152, 10 }, // U+0152
{ 0x0153, 35 }, // U+0153
{ 0x0154, 21 }, // U+0154
{ 0x0155, 43 }, // U+0155
{ 0x0156, 21 }, // U+0156
{ 0x0157, 43 }, // U+0157
{ 0x0158, 21 }, // U+0158
{ 0x0159, 43 }, // U+0159
{ 0x015A, 22 }, // U+015A
{ 0x015B, 44 }, // U+015B
{ 0x015C, 22 }, // U+015C
{ 0x015D, 44 }, // U+015D
{ 0x015E, 22 }, // U+015E
{ 0x015F, 70 }, // U+015F
{ 0x0160, 22 }, // U+0160
{ 0x0161, 44 }, // U+0161
{ 0x0162, 23 }, // U+0162
{ 0x0163, 71 }, // U+0163
{ 0x0164, 23 }, // U+0164
{ 0x0166, 23 }, // U+0166
{ 0x0167, 45 }, // U+0167
{ 0x0168, 24 }, // U+0168
{ 0x0169, 32 }, // U+0169
{ 0x016A, 24 }, // U+016A
{ 0x016B, 32 }, // U+016B
{ 0x016C, 24 }, // U+016C
{ 0x016D, 32 }, // U+016D
{ 0x016E, 24 }, // U+016E
{ 0x016F, 32 }, // U+016F
{ 0x0170, 24 }, // U+0170
{ 0x0171, 32 }, // U+0171
{ 0x0172, 24 }, // U+0172
{ 0x0173, 60 }, // U+0173
{ 0x0174, 25 }, // U+0174
{ 0x0175, 46 }, // U+0175
{ 0x0176, 28 }, // U+0176
{ 0x0177, 46 }, // U+0177
{ 0x0178, 28 }, // U+0178
{ 0x0179, 29 }, // U+0179
{ 0x017A, 48 }, // U+017A
{ 0x017B, 29 }, // U+017B
{ 0x017C, 48 }, // U+017C
{ 0x017D, 29 }, // U+017D
{ 0x017E, 48 }, // U+017E
{ 0x0400, 72 }, // U+0400
{ 0x0401, 72 }, // U+0401
{ 0x0402, 73 }, // U+0402
{ 0x0404, 74 }, // U+0404
{ 0x0405, 75 }, // U+0405
{ 0x0406, 76 }, // U+0406
{ 0x0407, 76 }, // U+0407
{ 0x0408, 77 }, // U+0408
{ 0x0409, 78 }, // U+0409
{ 0x040A, 78 }, // U+040A
{ 0x040B, 79 }, // U+040B
{ 0x040C, 80 }, // U+040C
{ 0x040D, 76 }, // U+040D
{ 0x040E, 81 }, // U+040E
{ 0x040F, 76 }, // U+040F
{ 0x0410, 82 }, // U+0410
{ 0x0411, 83 }, // U+0411
{ 0x0412, 84 }, // U+0412
{ 0x0413, 85 }, // U+0413
{ 0x0414, 86 }, // U+0414
{ 0x0415, 72 }, // U+0415
{ 0x0416, 80 }, // U+0416
{ 0x0417, 84 }, // U+0417
{ 0x0418, 76 }, // U+0418
{ 0x0419, 76 }, // U+0419
{ 0x041A, 80 }, // U+041A
{ 0x041B, 76 }, // U+041B
{ 0x041C, 87 }, // U+041C
{ 0x041D, 76 }, // U+041D
{ 0x041E, 88 }, // U+041E
{ 0x041F, 76 }, // U+041F
{ 0x0420, 89 }, // U+0420
{ 0x0421, 90 }, // U+0421
{ 0x0422, 91 }, // U+0422
{ 0x0423, 81 }, // U+0423
{ 0x0424, 92 }, // U+0424
{ 0x0425, 93 }, // U+0425
{ 0x0426, 86 }, // U+0426
{ 0x0427, 76 }, // U+0427
{ 0x0428, 76 }, // U+0428
{ 0x0429, 86 }, // U+0429
{ 0x042A, 78 }, // U+042A
{ 0x042B, 76 }, // U+042B
{ 0x042C, 78 }, // U+042C
{ 0x042D, 88 }, // U+042D
{ 0x042E, 88 }, // U+042E
{ 0x042F, 76 }, // U+042F
{ 0x0430, 94 }, // U+0430
{ 0x0431, 95 }, // U+0431
{ 0x0432, 96 }, // U+0432
{ 0x0433, 97 }, // U+0433
{ 0x0434, 98 }, // U+0434
{ 0x0435, 99 }, // U+0435
{ 0x0436, 100 }, // U+0436
{ 0x0437, 96 }, // U+0437
{ 0x0438, 94 }, // U+0438
{ 0x0439, 94 }, // U+0439
{ 0x043A, 101 }, // U+043A
{ 0x043B, 94 }, // U+043B
{ 0x043C, 94 }, // U+043C
{ 0x043D, 94 }, // U+043D
{ 0x043E, 102 }, // U+043E
{ 0x043F, 103 }, // U+043F
{ 0x0440, 102 }, // U+0440
{ 0x0441, 104 }, // U+0441
{ 0x0442, 103 }, // U+0442
{ 0x0443, 105 }, // U+0443
{ 0x0444, 98 }, // U+0444
{ 0x0445, 106 }, // U+0445
{ 0x0446, 107 }, // U+0446
{ 0x0447, 94 }, // U+0447
{ 0x0448, 94 }, // U+0448
{ 0x0449, 107 }, // U+0449
{ 0x044A, 108 }, // U+044A
{ 0x044B, 94 }, // U+044B
{ 0x044C, 109 }, // U+044C
{ 0x044D, 102 }, // U+044D
{ 0x044E, 102 }, // U+044E
{ 0x044F, 94 }, // U+044F
{ 0x0450, 99 }, // U+0450
{ 0x0451, 99 }, // U+0451
{ 0x0452, 110 }, // U+0452
{ 0x0453, 97 }, // U+0453
{ 0x0454, 104 }, // U+0454
{ 0x0455, 111 }, // U+0455
{ 0x0456, 39 }, // U+0456
{ 0x0457, 112 }, // U+0457
{ 0x0458, 113 }, // U+0458
{ 0x0459, 109 }, // U+0459
{ 0x045A, 109 }, // U+045A
{ 0x045B, 103 }, // U+045B
{ 0x045C, 101 }, // U+045C
{ 0x045D, 94 }, // U+045D
{ 0x045E, 105 }, // U+045E
{ 0x045F, 94 }, // U+045F
{ 0x0462, 114 }, // U+0462
{ 0x0463, 109 }, // U+0463
{ 0x0472, 88 }, // U+0472
{ 0x0473, 102 }, // U+0473
{ 0x0474, 115 }, // U+0474
{ 0x0475, 116 }, // U+0475
{ 0x048A, 86 }, // U+048A
{ 0x048B, 107 }, // U+048B
{ 0x048C, 78 }, // U+048C
{ 0x048D, 109 }, // U+048D
{ 0x048E, 89 }, // U+048E
{ 0x048F, 102 }, // U+048F
{ 0x0490, 117 }, // U+0490
{ 0x0491, 118 }, // U+0491
{ 0x0492, 119 }, // U+0492
{ 0x0493, 97 }, // U+0493
{ 0x0496, 120 }, // U+0496
{ 0x0497, 121 }, // U+0497
{ 0x0498, 84 }, // U+0498
{ 0x0499, 96 }, // U+0499
{ 0x049A, 122 }, // U+049A
{ 0x049B, 121 }, // U+049B
{ 0x049C, 80 }, // U+049C
{ 0x049D, 101 }, // U+049D
{ 0x049E, 80 }, // U+049E
{ 0x049F, 101 }, // U+049F
{ 0x04A0, 80 }, // U+04A0
{ 0x04A1, 101 }, // U+04A1
{ 0x04A2, 86 }, // U+04A2
{ 0x04A3, 107 }, // U+04A3
{ 0x04A8, 123 }, // U+04A8
{ 0x04A9, 124 }, // U+04A9
{ 0x04AA, 90 }, // U+04AA
{ 0x04AB, 104 }, // U+04AB
{ 0x04AC, 85 }, // U+04AC
{ 0x04AD, 107 }, // U+04AD
{ 0x04AE, 125 }, // U+04AE
{ 0x04AF, 105 }, // U+04AF
{ 0x04B0, 125 }, // U+04B0
{ 0x04B1, 105 }, // U+04B1
{ 0x04B2, 126 }, // U+04B2
{ 0x04B3, 127 }, // U+04B3
{ 0x04B4, 86 }, // U+04B4
{ 0x04B5, 107 }, // U+04B5
{ 0x04B6, 86 }, // U+04B6
{ 0x04B7, 107 }, // U+04B7
{ 0x04B8, 76 }, // U+04B8
{ 0x04B9, 94 }, // U+04B9
{ 0x04BA, 128 }, // U+04BA
{ 0x04BB, 103 }, // U+04BB
{ 0x04BC, 129 }, // U+04BC
{ 0x04BD, 99 }, // U+04BD
{ 0x04BE, 129 }, // U+04BE
{ 0x04BF, 99 }, // U+04BF
{ 0x04C0, 76 }, // U+04C0
{ 0x04C1, 80 }, // U+04C1
{ 0x04C2, 100 }, // U+04C2
{ 0x04C3, 130 }, // U+04C3
{ 0x04C4, 131 }, // U+04C4
{ 0x04C5, 86 }, // U+04C5
{ 0x04C6, 107 }, // U+04C6
{ 0x04C7, 77 }, // U+04C7
{ 0x04C8, 113 }, // U+04C8
{ 0x04C9, 86 }, // U+04C9
{ 0x04CA, 107 }, // U+04CA
{ 0x04CB, 76 }, // U+04CB
{ 0x04CD, 86 }, // U+04CD
{ 0x04CE, 107 }, // U+04CE
{ 0x04CF, 132 }, // U+04CF
{ 0x04D0, 82 }, // U+04D0
{ 0x04D1, 94 }, // U+04D1
{ 0x04D2, 82 }, // U+04D2
{ 0x04D3, 94 }, // U+04D3
{ 0x04D4, 72 }, // U+04D4
{ 0x04D5, 99 }, // U+04D5
{ 0x04D6, 72 }, // U+04D6
{ 0x04D7, 99 }, // U+04D7
{ 0x04D8, 88 }, // U+04D8
{ 0x04D9, 102 }, // U+04D9
{ 0x04DA, 88 }, // U+04DA
{ 0x04DB, 102 }, // U+04DB
{ 0x04DC, 80 }, // U+04DC
{ 0x04DD, 100 }, // U+04DD
{ 0x04DE, 84 }, // U+04DE
{ 0x04DF, 96 }, // U+04DF
{ 0x04E0, 133 }, // U+04E0
{ 0x04E1, 134 }, // U+04E1
{ 0x04E2, 76 }, // U+04E2
{ 0x04E3, 94 }, // U+04E3
{ 0x04E4, 76 }, // U+04E4
{ 0x04E5, 94 }, // U+04E5
{ 0x04E6, 88 }, // U+04E6
{ 0x04E7, 102 }, // U+04E7
{ 0x04E8, 88 }, // U+04E8
{ 0x04E9, 102 }, // U+04E9
{ 0x04EA, 88 }, // U+04EA
{ 0x04EB, 102 }, // U+04EB
{ 0x04EC, 88 }, // U+04EC
{ 0x04ED, 102 }, // U+04ED
{ 0x04EE, 81 }, // U+04EE
{ 0x04EF, 105 }, // U+04EF
{ 0x04F0, 81 }, // U+04F0
{ 0x04F1, 105 }, // U+04F1
{ 0x04F2, 81 }, // U+04F2
{ 0x04F3, 105 }, // U+04F3
{ 0x04F4, 76 }, // U+04F4
{ 0x04F5, 94 }, // U+04F5
{ 0x04F6, 85 }, // U+04F6
{ 0x04F7, 97 }, // U+04F7
{ 0x04F8, 76 }, // U+04F8
{ 0x04F9, 94 }, // U+04F9
{ 0x04FA, 119 }, // U+04FA
{ 0x04FB, 97 }, // U+04FB
{ 0x04FC, 135 }, // U+04FC
{ 0x04FD, 136 }, // U+04FD
{ 0x04FE, 93 }, // U+04FE
{ 0x04FF, 106 }, // U+04FF
{ 0x2010, 4 }, // U+2010
{ 0x2011, 4 }, // U+2011
{ 0x2013, 4 }, // U+2013
{ 0x2014, 4 }, // U+2014
{ 0x2015, 4 }, // U+2015
{ 0x2018, 137 }, // U+2018
{ 0x2019, 138 }, // U+2019
{ 0x201A, 139 }, // U+201A
{ 0x201B, 137 }, // U+201B
{ 0x201C, 137 }, // U+201C
{ 0x201D, 138 }, // U+201D
{ 0x201E, 3 }, // U+201E
{ 0x2025, 3 }, // U+2025
{ 0x2026, 3 }, // U+2026
{ 0x203A, 51 }, // U+203A
{ 0xFB00, 36 }, // U+FB00
{ 0xFB01, 39 }, // U+FB01
{ 0xFB03, 39 }, // U+FB03
{ 0xFB05, 45 }, // U+FB05
{ 0xFB06, 45 }, // U+FB06
};
static const EpdKernClassEntry bookerly_12_bolditalicKernRightClasses[] = {
{ 0x0021, 1 }, // !
{ 0x0029, 2 }, // )
{ 0x002A, 3 }, // *
{ 0x002C, 4 }, // ,
{ 0x002D, 5 }, // -
{ 0x002E, 6 }, // .
{ 0x002F, 7 }, // /
{ 0x003A, 8 }, // :
{ 0x003B, 9 }, // ;
{ 0x003F, 10 }, // ?
{ 0x0041, 11 }, // A
{ 0x0042, 12 }, // B
{ 0x0043, 13 }, // C
{ 0x0044, 12 }, // D
{ 0x0045, 14 }, // E
{ 0x0046, 14 }, // F
{ 0x0047, 13 }, // G
{ 0x0048, 14 }, // H
{ 0x0049, 14 }, // I
{ 0x004A, 15 }, // J
{ 0x004B, 14 }, // K
{ 0x004C, 14 }, // L
{ 0x004D, 16 }, // M
{ 0x004E, 14 }, // N
{ 0x004F, 13 }, // O
{ 0x0050, 12 }, // P
{ 0x0051, 13 }, // Q
{ 0x0052, 12 }, // R
{ 0x0053, 17 }, // S
{ 0x0054, 18 }, // T
{ 0x0055, 19 }, // U
{ 0x0056, 20 }, // V
{ 0x0057, 20 }, // W
{ 0x0058, 21 }, // X
{ 0x0059, 22 }, // Y
{ 0x005A, 23 }, // Z
{ 0x005C, 24 }, // <backslash>
{ 0x005D, 25 }, // ]
{ 0x0061, 26 }, // a
{ 0x0062, 27 }, // b
{ 0x0063, 26 }, // c
{ 0x0064, 26 }, // d
{ 0x0065, 26 }, // e
{ 0x0066, 28 }, // f
{ 0x0067, 29 }, // g
{ 0x0068, 30 }, // h
{ 0x0069, 31 }, // i
{ 0x006A, 32 }, // j
{ 0x006B, 30 }, // k
{ 0x006C, 30 }, // l
{ 0x006D, 33 }, // m
{ 0x006E, 33 }, // n
{ 0x006F, 26 }, // o
{ 0x0070, 33 }, // p
{ 0x0071, 26 }, // q
{ 0x0072, 33 }, // r
{ 0x0073, 34 }, // s
{ 0x0074, 35 }, // t
{ 0x0075, 36 }, // u
{ 0x0076, 37 }, // v
{ 0x0077, 37 }, // w
{ 0x0078, 38 }, // x
{ 0x0079, 39 }, // y
{ 0x007A, 40 }, // z
{ 0x007D, 41 }, // }
{ 0x00A1, 42 }, // U+00A1
{ 0x00AB, 43 }, // U+00AB
{ 0x00AD, 5 }, // U+00AD
{ 0x00BB, 44 }, // U+00BB
{ 0x00BF, 45 }, // U+00BF
{ 0x00C0, 11 }, // U+00C0
{ 0x00C1, 11 }, // U+00C1
{ 0x00C2, 11 }, // U+00C2
{ 0x00C3, 11 }, // U+00C3
{ 0x00C4, 11 }, // U+00C4
{ 0x00C5, 11 }, // U+00C5
{ 0x00C6, 46 }, // U+00C6
{ 0x00C7, 13 }, // U+00C7
{ 0x00C8, 14 }, // U+00C8
{ 0x00C9, 14 }, // U+00C9
{ 0x00CA, 14 }, // U+00CA
{ 0x00CB, 14 }, // U+00CB
{ 0x00CC, 14 }, // U+00CC
{ 0x00CD, 14 }, // U+00CD
{ 0x00CE, 14 }, // U+00CE
{ 0x00CF, 14 }, // U+00CF
{ 0x00D0, 12 }, // U+00D0
{ 0x00D1, 14 }, // U+00D1
{ 0x00D2, 13 }, // U+00D2
{ 0x00D3, 13 }, // U+00D3
{ 0x00D4, 13 }, // U+00D4
{ 0x00D5, 13 }, // U+00D5
{ 0x00D6, 13 }, // U+00D6
{ 0x00D8, 13 }, // U+00D8
{ 0x00D9, 19 }, // U+00D9
{ 0x00DA, 19 }, // U+00DA
{ 0x00DB, 19 }, // U+00DB
{ 0x00DC, 19 }, // U+00DC
{ 0x00DD, 22 }, // U+00DD
{ 0x00DE, 14 }, // U+00DE
{ 0x00DF, 47 }, // U+00DF
{ 0x00E0, 26 }, // U+00E0
{ 0x00E1, 26 }, // U+00E1
{ 0x00E2, 26 }, // U+00E2
{ 0x00E3, 26 }, // U+00E3
{ 0x00E4, 26 }, // U+00E4
{ 0x00E5, 26 }, // U+00E5
{ 0x00E6, 26 }, // U+00E6
{ 0x00E7, 26 }, // U+00E7
{ 0x00E8, 26 }, // U+00E8
{ 0x00E9, 26 }, // U+00E9
{ 0x00EA, 26 }, // U+00EA
{ 0x00EB, 26 }, // U+00EB
{ 0x00EC, 48 }, // U+00EC
{ 0x00ED, 31 }, // U+00ED
{ 0x00EE, 49 }, // U+00EE
{ 0x00EF, 49 }, // U+00EF
{ 0x00F0, 26 }, // U+00F0
{ 0x00F1, 33 }, // U+00F1
{ 0x00F2, 26 }, // U+00F2
{ 0x00F3, 26 }, // U+00F3
{ 0x00F4, 26 }, // U+00F4
{ 0x00F5, 26 }, // U+00F5
{ 0x00F6, 26 }, // U+00F6
{ 0x00F8, 50 }, // U+00F8
{ 0x00F9, 36 }, // U+00F9
{ 0x00FA, 36 }, // U+00FA
{ 0x00FB, 36 }, // U+00FB
{ 0x00FC, 36 }, // U+00FC
{ 0x00FD, 37 }, // U+00FD
{ 0x00FE, 30 }, // U+00FE
{ 0x00FF, 37 }, // U+00FF
{ 0x0100, 11 }, // U+0100
{ 0x0101, 26 }, // U+0101
{ 0x0102, 11 }, // U+0102
{ 0x0103, 26 }, // U+0103
{ 0x0104, 11 }, // U+0104
{ 0x0105, 26 }, // U+0105
{ 0x0106, 13 }, // U+0106
{ 0x0107, 26 }, // U+0107
{ 0x0108, 13 }, // U+0108
{ 0x0109, 26 }, // U+0109
{ 0x010A, 13 }, // U+010A
{ 0x010B, 26 }, // U+010B
{ 0x010C, 13 }, // U+010C
{ 0x010D, 51 }, // U+010D
{ 0x010E, 12 }, // U+010E
{ 0x010F, 26 }, // U+010F
{ 0x0110, 12 }, // U+0110
{ 0x0111, 26 }, // U+0111
{ 0x0112, 14 }, // U+0112
{ 0x0113, 26 }, // U+0113
{ 0x0114, 14 }, // U+0114
{ 0x0115, 26 }, // U+0115
{ 0x0116, 14 }, // U+0116
{ 0x0117, 26 }, // U+0117
{ 0x0118, 14 }, // U+0118
{ 0x0119, 26 }, // U+0119
{ 0x011A, 14 }, // U+011A
{ 0x011B, 26 }, // U+011B
{ 0x011C, 13 }, // U+011C
{ 0x011D, 29 }, // U+011D
{ 0x011E, 13 }, // U+011E
{ 0x011F, 29 }, // U+011F
{ 0x0120, 13 }, // U+0120
{ 0x0121, 29 }, // U+0121
{ 0x0122, 13 }, // U+0122
{ 0x0123, 29 }, // U+0123
{ 0x0124, 14 }, // U+0124
{ 0x0125, 30 }, // U+0125
{ 0x0126, 14 }, // U+0126
{ 0x0127, 52 }, // U+0127
{ 0x0128, 14 }, // U+0128
{ 0x0129, 49 }, // U+0129
{ 0x012A, 14 }, // U+012A
{ 0x012B, 49 }, // U+012B
{ 0x012C, 14 }, // U+012C
{ 0x012D, 49 }, // U+012D
{ 0x012E, 14 }, // U+012E
{ 0x012F, 31 }, // U+012F
{ 0x0130, 14 }, // U+0130
{ 0x0131, 33 }, // U+0131
{ 0x0132, 14 }, // U+0132
{ 0x0133, 31 }, // U+0133
{ 0x0134, 15 }, // U+0134
{ 0x0136, 14 }, // U+0136
{ 0x0137, 30 }, // U+0137
{ 0x0138, 33 }, // U+0138
{ 0x0139, 14 }, // U+0139
{ 0x013A, 30 }, // U+013A
{ 0x013B, 14 }, // U+013B
{ 0x013C, 30 }, // U+013C
{ 0x013D, 14 }, // U+013D
{ 0x013E, 30 }, // U+013E
{ 0x013F, 14 }, // U+013F
{ 0x0140, 30 }, // U+0140
{ 0x0141, 14 }, // U+0141
{ 0x0142, 30 }, // U+0142
{ 0x0143, 14 }, // U+0143
{ 0x0144, 33 }, // U+0144
{ 0x0145, 14 }, // U+0145
{ 0x0146, 33 }, // U+0146
{ 0x0147, 14 }, // U+0147
{ 0x0148, 33 }, // U+0148
{ 0x0149, 33 }, // U+0149
{ 0x014A, 14 }, // U+014A
{ 0x014B, 33 }, // U+014B
{ 0x014C, 13 }, // U+014C
{ 0x014D, 26 }, // U+014D
{ 0x014E, 13 }, // U+014E
{ 0x014F, 26 }, // U+014F
{ 0x0150, 13 }, // U+0150
{ 0x0151, 26 }, // U+0151
{ 0x0152, 13 }, // U+0152
{ 0x0153, 26 }, // U+0153
{ 0x0154, 12 }, // U+0154
{ 0x0155, 33 }, // U+0155
{ 0x0156, 12 }, // U+0156
{ 0x0157, 33 }, // U+0157
{ 0x0158, 12 }, // U+0158
{ 0x0159, 33 }, // U+0159
{ 0x015A, 17 }, // U+015A
{ 0x015B, 34 }, // U+015B
{ 0x015C, 17 }, // U+015C
{ 0x015D, 34 }, // U+015D
{ 0x015E, 17 }, // U+015E
{ 0x015F, 34 }, // U+015F
{ 0x0160, 17 }, // U+0160
{ 0x0161, 53 }, // U+0161
{ 0x0162, 18 }, // U+0162
{ 0x0163, 35 }, // U+0163
{ 0x0164, 18 }, // U+0164
{ 0x0165, 35 }, // U+0165
{ 0x0166, 18 }, // U+0166
{ 0x0167, 35 }, // U+0167
{ 0x0168, 19 }, // U+0168
{ 0x0169, 36 }, // U+0169
{ 0x016A, 19 }, // U+016A
{ 0x016B, 36 }, // U+016B
{ 0x016C, 19 }, // U+016C
{ 0x016D, 36 }, // U+016D
{ 0x016E, 19 }, // U+016E
{ 0x016F, 36 }, // U+016F
{ 0x0170, 19 }, // U+0170
{ 0x0171, 36 }, // U+0171
{ 0x0172, 19 }, // U+0172
{ 0x0173, 36 }, // U+0173
{ 0x0174, 20 }, // U+0174
{ 0x0175, 37 }, // U+0175
{ 0x0176, 22 }, // U+0176
{ 0x0177, 37 }, // U+0177
{ 0x0178, 22 }, // U+0178
{ 0x0179, 23 }, // U+0179
{ 0x017A, 40 }, // U+017A
{ 0x017B, 23 }, // U+017B
{ 0x017C, 40 }, // U+017C
{ 0x017D, 23 }, // U+017D
{ 0x017E, 54 }, // U+017E
{ 0x017F, 47 }, // U+017F
{ 0x0400, 55 }, // U+0400
{ 0x0401, 55 }, // U+0401
{ 0x0402, 56 }, // U+0402
{ 0x0403, 55 }, // U+0403
{ 0x0404, 57 }, // U+0404
{ 0x0405, 58 }, // U+0405
{ 0x0406, 55 }, // U+0406
{ 0x0407, 55 }, // U+0407
{ 0x0408, 59 }, // U+0408
{ 0x0409, 60 }, // U+0409
{ 0x040A, 55 }, // U+040A
{ 0x040B, 56 }, // U+040B
{ 0x040C, 55 }, // U+040C
{ 0x040D, 55 }, // U+040D
{ 0x040E, 61 }, // U+040E
{ 0x040F, 55 }, // U+040F
{ 0x0410, 62 }, // U+0410
{ 0x0411, 55 }, // U+0411
{ 0x0412, 63 }, // U+0412
{ 0x0413, 55 }, // U+0413
{ 0x0414, 64 }, // U+0414
{ 0x0415, 55 }, // U+0415
{ 0x0416, 65 }, // U+0416
{ 0x0417, 66 }, // U+0417
{ 0x0418, 55 }, // U+0418
{ 0x0419, 55 }, // U+0419
{ 0x041A, 55 }, // U+041A
{ 0x041B, 60 }, // U+041B
{ 0x041C, 67 }, // U+041C
{ 0x041D, 55 }, // U+041D
{ 0x041E, 57 }, // U+041E
{ 0x041F, 55 }, // U+041F
{ 0x0420, 63 }, // U+0420
{ 0x0421, 57 }, // U+0421
{ 0x0422, 56 }, // U+0422
{ 0x0423, 61 }, // U+0423
{ 0x0424, 68 }, // U+0424
{ 0x0425, 69 }, // U+0425
{ 0x0426, 55 }, // U+0426
{ 0x0427, 70 }, // U+0427
{ 0x0428, 55 }, // U+0428
{ 0x0429, 55 }, // U+0429
{ 0x042A, 56 }, // U+042A
{ 0x042B, 55 }, // U+042B
{ 0x042C, 55 }, // U+042C
{ 0x042D, 71 }, // U+042D
{ 0x042E, 55 }, // U+042E
{ 0x042F, 72 }, // U+042F
{ 0x0430, 73 }, // U+0430
{ 0x0431, 74 }, // U+0431
{ 0x0432, 73 }, // U+0432
{ 0x0433, 75 }, // U+0433
{ 0x0434, 76 }, // U+0434
{ 0x0435, 73 }, // U+0435
{ 0x0436, 77 }, // U+0436
{ 0x0437, 78 }, // U+0437
{ 0x0438, 79 }, // U+0438
{ 0x0439, 79 }, // U+0439
{ 0x043A, 80 }, // U+043A
{ 0x043B, 81 }, // U+043B
{ 0x043C, 82 }, // U+043C
{ 0x043D, 80 }, // U+043D
{ 0x043E, 73 }, // U+043E
{ 0x043F, 80 }, // U+043F
{ 0x0440, 80 }, // U+0440
{ 0x0441, 73 }, // U+0441
{ 0x0442, 80 }, // U+0442
{ 0x0443, 83 }, // U+0443
{ 0x0444, 73 }, // U+0444
{ 0x0445, 84 }, // U+0445
{ 0x0446, 79 }, // U+0446
{ 0x0447, 85 }, // U+0447
{ 0x0448, 79 }, // U+0448
{ 0x0449, 79 }, // U+0449
{ 0x044A, 86 }, // U+044A
{ 0x044B, 79 }, // U+044B
{ 0x044C, 79 }, // U+044C
{ 0x044D, 78 }, // U+044D
{ 0x044E, 80 }, // U+044E
{ 0x044F, 87 }, // U+044F
{ 0x0450, 73 }, // U+0450
{ 0x0451, 73 }, // U+0451
{ 0x0452, 88 }, // U+0452
{ 0x0453, 75 }, // U+0453
{ 0x0454, 73 }, // U+0454
{ 0x0455, 89 }, // U+0455
{ 0x0456, 90 }, // U+0456
{ 0x0457, 91 }, // U+0457
{ 0x0458, 92 }, // U+0458
{ 0x0459, 81 }, // U+0459
{ 0x045A, 80 }, // U+045A
{ 0x045B, 93 }, // U+045B
{ 0x045C, 80 }, // U+045C
{ 0x045D, 79 }, // U+045D
{ 0x045E, 83 }, // U+045E
{ 0x045F, 79 }, // U+045F
{ 0x0462, 56 }, // U+0462
{ 0x0463, 80 }, // U+0463
{ 0x0472, 57 }, // U+0472
{ 0x0473, 73 }, // U+0473
{ 0x0474, 94 }, // U+0474
{ 0x0475, 95 }, // U+0475
{ 0x048A, 55 }, // U+048A
{ 0x048B, 80 }, // U+048B
{ 0x048C, 96 }, // U+048C
{ 0x048D, 97 }, // U+048D
{ 0x048E, 63 }, // U+048E
{ 0x048F, 80 }, // U+048F
{ 0x0490, 55 }, // U+0490
{ 0x0491, 98 }, // U+0491
{ 0x0492, 55 }, // U+0492
{ 0x0493, 75 }, // U+0493
{ 0x0494, 55 }, // U+0494
{ 0x0495, 80 }, // U+0495
{ 0x0496, 65 }, // U+0496
{ 0x0497, 77 }, // U+0497
{ 0x0498, 66 }, // U+0498
{ 0x0499, 78 }, // U+0499
{ 0x049A, 55 }, // U+049A
{ 0x049B, 80 }, // U+049B
{ 0x049C, 55 }, // U+049C
{ 0x049D, 80 }, // U+049D
{ 0x04A0, 56 }, // U+04A0
{ 0x04A2, 55 }, // U+04A2
{ 0x04A3, 80 }, // U+04A3
{ 0x04A4, 55 }, // U+04A4
{ 0x04A5, 80 }, // U+04A5
{ 0x04A6, 55 }, // U+04A6
{ 0x04A7, 80 }, // U+04A7
{ 0x04A8, 57 }, // U+04A8
{ 0x04A9, 73 }, // U+04A9
{ 0x04AA, 57 }, // U+04AA
{ 0x04AB, 73 }, // U+04AB
{ 0x04AC, 56 }, // U+04AC
{ 0x04AD, 80 }, // U+04AD
{ 0x04AE, 99 }, // U+04AE
{ 0x04AF, 83 }, // U+04AF
{ 0x04B0, 99 }, // U+04B0
{ 0x04B1, 83 }, // U+04B1
{ 0x04B2, 69 }, // U+04B2
{ 0x04B3, 84 }, // U+04B3
{ 0x04B6, 70 }, // U+04B6
{ 0x04B7, 85 }, // U+04B7
{ 0x04B8, 70 }, // U+04B8
{ 0x04B9, 85 }, // U+04B9
{ 0x04BA, 55 }, // U+04BA
{ 0x04BB, 93 }, // U+04BB
{ 0x04BC, 100 }, // U+04BC
{ 0x04BD, 101 }, // U+04BD
{ 0x04BE, 100 }, // U+04BE
{ 0x04BF, 101 }, // U+04BF
{ 0x04C0, 55 }, // U+04C0
{ 0x04C1, 65 }, // U+04C1
{ 0x04C2, 77 }, // U+04C2
{ 0x04C3, 55 }, // U+04C3
{ 0x04C4, 80 }, // U+04C4
{ 0x04C5, 60 }, // U+04C5
{ 0x04C6, 81 }, // U+04C6
{ 0x04C7, 55 }, // U+04C7
{ 0x04C8, 80 }, // U+04C8
{ 0x04C9, 55 }, // U+04C9
{ 0x04CA, 80 }, // U+04CA
{ 0x04CB, 70 }, // U+04CB
{ 0x04CC, 85 }, // U+04CC
{ 0x04CE, 82 }, // U+04CE
{ 0x04CF, 102 }, // U+04CF
{ 0x04D0, 62 }, // U+04D0
{ 0x04D1, 73 }, // U+04D1
{ 0x04D2, 62 }, // U+04D2
{ 0x04D3, 73 }, // U+04D3
{ 0x04D4, 103 }, // U+04D4
{ 0x04D5, 73 }, // U+04D5
{ 0x04D6, 55 }, // U+04D6
{ 0x04D7, 73 }, // U+04D7
{ 0x04D8, 104 }, // U+04D8
{ 0x04D9, 105 }, // U+04D9
{ 0x04DB, 105 }, // U+04DB
{ 0x04DC, 65 }, // U+04DC
{ 0x04DD, 77 }, // U+04DD
{ 0x04DE, 66 }, // U+04DE
{ 0x04DF, 78 }, // U+04DF
{ 0x04E0, 106 }, // U+04E0
{ 0x04E1, 107 }, // U+04E1
{ 0x04E2, 55 }, // U+04E2
{ 0x04E3, 79 }, // U+04E3
{ 0x04E4, 55 }, // U+04E4
{ 0x04E5, 79 }, // U+04E5
{ 0x04E6, 57 }, // U+04E6
{ 0x04E7, 73 }, // U+04E7
{ 0x04E8, 57 }, // U+04E8
{ 0x04E9, 73 }, // U+04E9
{ 0x04EA, 57 }, // U+04EA
{ 0x04EB, 73 }, // U+04EB
{ 0x04ED, 78 }, // U+04ED
{ 0x04EE, 61 }, // U+04EE
{ 0x04EF, 83 }, // U+04EF
{ 0x04F0, 61 }, // U+04F0
{ 0x04F1, 83 }, // U+04F1
{ 0x04F2, 61 }, // U+04F2
{ 0x04F3, 83 }, // U+04F3
{ 0x04F5, 85 }, // U+04F5
{ 0x04F6, 55 }, // U+04F6
{ 0x04F7, 75 }, // U+04F7
{ 0x04F8, 55 }, // U+04F8
{ 0x04F9, 79 }, // U+04F9
{ 0x04FA, 55 }, // U+04FA
{ 0x04FB, 75 }, // U+04FB
{ 0x04FC, 69 }, // U+04FC
{ 0x04FD, 84 }, // U+04FD
{ 0x04FE, 69 }, // U+04FE
{ 0x04FF, 84 }, // U+04FF
{ 0x2010, 5 }, // U+2010
{ 0x2011, 5 }, // U+2011
{ 0x2013, 5 }, // U+2013
{ 0x2014, 5 }, // U+2014
{ 0x2015, 5 }, // U+2015
{ 0x2018, 108 }, // U+2018
{ 0x2019, 109 }, // U+2019
{ 0x201A, 6 }, // U+201A
{ 0x201B, 108 }, // U+201B
{ 0x201C, 108 }, // U+201C
{ 0x201D, 109 }, // U+201D
{ 0x201E, 6 }, // U+201E
{ 0x2025, 6 }, // U+2025
{ 0x2026, 6 }, // U+2026
{ 0x2039, 43 }, // U+2039
{ 0x203A, 44 }, // U+203A
{ 0x203C, 1 }, // U+203C
{ 0x2047, 10 }, // U+2047
{ 0x2048, 10 }, // U+2048
{ 0x2049, 1 }, // U+2049
{ 0xFB00, 28 }, // U+FB00
{ 0xFB01, 28 }, // U+FB01
{ 0xFB02, 28 }, // U+FB02
{ 0xFB03, 28 }, // U+FB03
{ 0xFB04, 28 }, // U+FB04
{ 0xFB05, 28 }, // U+FB05
{ 0xFB06, 34 }, // U+FB06
};
static const int8_t bookerly_12_bolditalicKernMatrix[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 3, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 3, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, -2, -1, -3, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 0, 0, -1, -1, -2, 0, -2, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 2, 1, 0, 0, 0, 0, 1, 0, 0, -1, 1, -3, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, -2, 0, -2, -2, 0, 0, 0, -1, 0, 2, 0, -3, -2, 0, -1, 0, -2, -3, -1, 0, 0, 0, 0, 0, 0, -3, -3,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -2, -3, 0, 0, 0, -1, -3, -1, -1, 0, -2, 0, -2, 0, 0, 0, 0, 0, -4, 0, 0, 0, -3, -3, 0, -3, -2, 0, 0, -1, 0, 0, -1, 0, -3, 0, -2, 0, 0, -2, -1, 0, 0, 0, -1, -3, -1, -1, -3, -2, -2, -1, -1, -3, -2, 0, -2, 0, -1, -3, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -2, 0, -4, 0, -2, 0, -2, 0, 0,
0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 1, 0, -2, -2, -3, 1, -2, 0, -4, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, -1, -2, 0, -2, 0, 0, 0, -1, 0, 0, 1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, -2, 0, -2, 0, -1, 0, 0, -1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -2, 0, -2, -1, -1, -1, 0, -1, 0, 0, -1, -1, -1, 0, -1, -1, -1, -1, -1, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -2, 0, -2, -2, -2, -2, 0, -3, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -3, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, -2, 0, -2, -1, -2, -2, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 1, 0, 0, 1, 0, 0, -1, -1, -1, -1, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, -2, 0, -2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, -1, -1, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 0, -2, 0, -2, -2, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -2, 0, -2, -2, -2, -2, 0, -3, -1, 0, -1, -1, -1, 0, 0, -1, -1, -1, -1, 0, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 4, 0, 3, 0, -2, -1, -1, 4, 0, -1, 0, 0, -1, 1, -1, 0, -1, -1, -1, -1, -1, 0, -2, 5, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 1, 0, -2, -2, -2, 1, -2, 0, -3, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2, -3, 0, -3, -2, -2, -2, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -3, 0, 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -2, 0, -2, -2, -1, -1, 0, -2, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -2, -2, 0, 0, -1, -1, 1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -4, -1, -4, -3, -2, -2, 0, -3, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 1, 0, -2, 1, 0, 0, 0, -2, 0, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, -4, 0, 0, 0, -2, -2, 1, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -4, -1, -4, -3, -2, -2, 0, -3, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 1, 0, -2, 1, 0, 0, 0, -2, 0, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, -4, 0, 0, 1, -2, -2, 1, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, -3, -1, -3, -2, -2, -2, 0, -3, 0, -1, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0, -1, 1, -1, -2, 1, 0, 0, -1, -2, 0, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, -3, 0, 0, 1, -1, -1, 1, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 3, 0, 0, -2, -2, -3, 1, -3, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, -2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 3, 1, 0, 1, 0, 2, 1, 0, 0, -1, 1, -2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -2, -1, 0, 0, 0, 0, 0, 1, 0, -3, -2, 0, 0, 0, -3, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, -1, -2, 0, -2, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 2, -2, 0, -2, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, -1, 2, 0, -1, 2, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 2, -1, -1, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -1, 2, 0, 0, 0, 3, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -2, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -2, 0, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 1, 0, 1, 0, 2, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -1, 0, 0, 2, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, -2, 0, -1, 0, 0, 0, 0, -1, 1, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -1, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, -1, -1, 3, 0, -1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 3, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -2, 0, -2, 0, -2, -1, 0, 0, 0, -2, -1, 0, -1, -1, -1, 0, -1, -1, -1, -1, -2, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, -2, 0, -2, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 3, 1, 0, -2, -2, -3, 1, -2, 0, -4, 0, 0, 0, 3, 2, 0, -1, 3, -1, 0, -1, -1, -2, 0, -2, 0, 0, 0, -1, 0, 0, 1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 3, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 2, 3, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 3, 1, 0, 3, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1, 0, 2, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -1, -1, 2, -1, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 1, -1, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 3, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 0, 1, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, -2, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, -1, 0, -1, 0, 0,
0, 0, 1, -2, 0, -2, -1, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0,
0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0, 0, 0, -2, -2, 0, 0, 0, 0, 0, 0, -1, -2, -2,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -2, 0, -3, 0, 0, -1, -1, 0, -1, 0, 0, -1, -1, 0, 0, -2, 0, -3, -1, 0, 0, 0, 0, 0, 0, 0, -4, -2, 0, 0, 0, -3, -3, -2, 0, 0, 0, 0, 0, -2, -2, -2,
0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, -1, 1, 0, -1, 1, -1, -1, 0, -1, 0, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, 1, -1, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, -3, 0, 0, 0, -1, 0, -1, 0, 0,
0, 0, 2, -3, 0, -3, -3, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -3, 0, -4, 0, -2, 0, 0, 0, -1, 1, 1, 0, -2, -2, -1, -1, -3, -2, -2, -1, -1, -4, -1, 0, -1, -1, -1, -3, 1, -2, 0, 0, 0, 1, 1, 0, 0, 0, -1, 1, 0, -2, 0, -5, 0, -1, 0, -1, 0, 1,
0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 0, 1, -1, 0, 0, 1, 1, 0, 1, -1, 1, -4, 0, 1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, -2, 0, -2, -2, 0, 0, 0, -1, -1, 0, 0, -3, -2, 0, 0, 0, -2, -3, -2, 0, 1, -1, 0, 0, -1, -3, -2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -1, -2, 0, 0, 0, 0, -2, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1,
0, 0, 2, -3, 0, -3, -2, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -3, 0, -2, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -3, -1, 0, 0, 0, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -3, 0, -1, 0, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, -2, 0, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, 0, -1, -1, 0, -1, -1, 0, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -2, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0,
0, 0, 0, -2, 0, -2, -2, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -2, -1, -3, 0, -2, -1, -1, -1, 0, -1, 0, -1, -1, -1, 0, 0, -1, -1, -1, 0, 0, -3, -1, 0, 0, 0, 0, -2, -1, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, -1, -1, -4, 0, -1, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 2, -3, 0, -3, -2, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, -5, 0, -2, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -3, -1, 0, 0, 0, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, -3, 0, -1, 0, -1, 0, 0,
0, 0, 0, -2, 0, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 1, -1, 1, -1, 1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, -1, -2, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, -2, 0, -2, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, -2, 0, -2, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, -2, 0, -2, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -2, 0, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, -1, -1, 0, 0, 0, 0, 0, 4, 0, 0, 2, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1,
0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -1,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0,
0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -3, 0, -3, -3, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 0, -2, 0, -3, 0, -2, 0, 0, -1, -1, 0, 0, 0, -1, -2, -1, -1, -2, -1, -1, 0, 0, -3, -2, 0, -1, 0, 0, -3, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -3, 0, -4, 0, -1, 0, -1, 0, 0,
0, 0, 0, -2, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, -3, -1, 0, 0, 0, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, -2, 0, -2, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 1, -2, 0, -2, 0, 0, 0, -2, 0, 0, 0, -2, -2, -1, -1, -1, -3, -3, -1, -1, -4, -2, 0, 0, -2, -2, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, -3, 0, -4, 0, -2, 0, -1, 0, 1,
0, 0, 0, -2, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, -3, -1, 0, 0, 0, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, 1,
0, 0, 0, -2, 0, -2, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, -3, 0, -2, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, -3, -1, 0, 0, 0, 0, -2, 1, -1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, -2, 0, -3, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 1, 0, 1, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 1, 0, 1, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, -2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 1, -3, -1, -3, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -2, 1, -3, 0, -2, 0, 0, 0, -1, 1, 0, 0, -1, -1, -1, -1, -2, -1, -1, -1, -1, -3, -2, 0, -1, -1, -1, -3, 2, -1, 0, 1, 0, 1, 0, 0, 0, 0, -1, 0, 0, -3, 0, -3, 0, -2, 0, -1, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 3, 2, 0, 1, 1, 2, 3, -1, 3, -1, 3, 0, 0, 2, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 2, 0, -1, -1, 0, 0, 0, 0, 1, 3, 0, 0, 2, 1, 0, 0, 0, -1, -2, 0, 2, 0, 0, 0, -1, 0, 0,
0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, -1, 0, -4, 0, 0, -1, 0, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, -4, -1, 0, -1, 0, -3, -3, -1, 0, 0, 0, 0, 0, -2, 0, -2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, 0, -2, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -2, -1, 0, -1, 0, -2, -1, -1, -2, -1, -1, -1, -2, -1, -1, -1, -1, -2, -1, -2, 0, -2, 0, 0, 0, 0, 0, -1, 0, 0, -2, 0, -1, -2, 0, -1, -2, -1, -1, -2, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 1, -1, 1, -1, 1, 0, 0, 0, -2, 0, -2, -2, 0, -2, -1, -2, -1, -2, -1, 0, -1, -1, -2, 0, -1, 0, 1, 1, 0, 0, -1, 0, 0, -1, 0, -1, -2, 0, 0, 0, -2, 0, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0,
-1, 0, 0, -3, 0, -3, 0, 0, 0, 0, -3, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0, -2, 0, -1, -3, 0, 0, 0, -1, -2, 0, 0, 0, -1, 0, -1, 0, -2, 0, 0, -3, -3, 0, 0, 0, -2, -2, 0, -2, -1, -1, 0, -1, -1, 0, -3, 0, -3, 0, -2, 0, 0, -1, 0, 0, 0, 0, -2, -2, -1, 0, -2, -1, -1, 0, -1, -4, -2, 0, -1, 0, 0, -2, 0, -2, 0, 0, 0, 0, -1, 0, 0, 0, -2, 0, 0, 0, 0, -3, 0, -1, 0, 0, 0, 0,
-1, 0, 0, -5, 0, -5, 0, 0, 0, -1, -4, 0, -2, -2, -1, -2, -1, -1, -2, -1, -1, -1, -1, 0, 0, -3, -1, -2, -3, -1, -1, 0, -1, -2, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, -4, 0, -1, 0, -3, -3, -1, -2, -1, -2, -1, -2, -1, -1, -4, 0, -4, 0, -3, -1, -2, -2, -2, -1, 0, -1, -2, -3, -2, -1, -3, -2, -2, -1, -1, -5, -2, 0, -1, 0, 0, -3, -1, -2, -1, 0, 0, -1, -1, 0, 0, 0, -2, -1, 0, -2, -1, -4, 0, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, -2, -1, -3, 1, -2, 0, 0, 0, 0, 0, 2, 0, 0, -1, 2, 0, 0, -1, -1, -2, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -2, -1, 0, 2, 1, 0, 0, 0, 0, 1, 0, 0, -1, 1, -3, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, -2, -2, 0, 0, 0, -1, 0, 2, 0, -3, -1, 0, -1, 0, -2, -3, -1, 0, 0, 0, 0, 0, 0, -3, -3,
};
static const EpdLigaturePair bookerly_12_bolditalicLigaturePairs[] = {
{ 0x00660066, 0xFB00 }, // f f -> U+FB00
{ 0x00660069, 0xFB01 }, // f i -> U+FB01
{ 0x0066006C, 0xFB02 }, // f l -> U+FB02
{ 0xFB000069, 0xFB03 }, // U+FB00 i -> U+FB03
{ 0xFB00006C, 0xFB04 }, // U+FB00 l -> U+FB04
perf: Reduce overall flash usage by 30.7% by compressing built-in fonts (#831) ## Summary **What is the goal of this PR?** Compress reader font bitmaps to reduce flash usage by 30.7%. **What changes are included?** - New `EpdFontGroup` struct and extended `EpdFontData` with `groups`/`groupCount` fields - `--compress` flag in `fontconvert.py`: groups glyphs (ASCII base group + groups of 8) and compresses each with raw DEFLATE - `FontDecompressor` class with 4-slot LRU cache for on-demand decompression during rendering - `GfxRenderer` transparently routes bitmap access through `getGlyphBitmap()` (compressed or direct flash) - Uses `uzlib` for decompression with minimal heap overhead. - 48 reader fonts (Bookerly, NotoSans 12-18pt, OpenDyslexic) regenerated with compression; 5 UI fonts unchanged - Round-trip verification script (`verify_compression.py`) runs as part of font generation ## Additional Context ## Flash & RAM | | baseline | font-compression | Difference | |--|--------|-----------------|------------| | Flash (ELF) | 6,302,476 B (96.2%) | 4,365,022 B (66.6%) | -1,937,454 B (-30.7%) | | firmware.bin | 6,468,192 B | 4,531,008 B | -1,937,184 B (-29.9%) | | RAM | 101,700 B (31.0%) | 103,076 B (31.5%) | +1,376 B (+0.5%) | ## Script-Based Grouping (Cold Cache) Comparison of uncompressed baseline vs script-based group compression (4-slot LRU cache, cleared each page). Glyphs are grouped by Unicode block (ASCII, Latin-1, Latin Extended-A, Combining Marks, Cyrillic, General Punctuation, etc.) instead of sequential groups of 8. ### Render Time | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Median** | 414.9 ms | 431.6 ms | +16.7 ms (+4.0%) | | **Pages** | 37 | 37 | | ### Memory Usage | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Heap free (median)** | 187.0 KB | 176.3 KB | -10.7 KB | | **Heap free (min)** | 186.0 KB | 166.5 KB | -19.5 KB | | **Largest block (median)** | 148.0 KB | 128.0 KB | -20.0 KB | | **Largest block (min)** | 148.0 KB | 120.0 KB | -28.0 KB | ### Cache Effectiveness | | Misses/page | Hit rate | |---|---|---| | **Compressed (cold cache)** | 2.1 | 99.85% | ------ ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES**_ Implementation was done by Claude Code (Opus 4.6) based on a plan developed collaboratively. All generated font headers were verified with an automated round-trip decompression test. The firmware was compiled successfully but has not yet been tested on-device. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:30:15 +11:00
};
static const EpdFontData bookerly_12_bolditalic = {
bookerly_12_bolditalicBitmaps,
bookerly_12_bolditalicGlyphs,
bookerly_12_bolditalicIntervals,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
65,
33,
27,
-7,
true,
perf: Reduce overall flash usage by 30.7% by compressing built-in fonts (#831) ## Summary **What is the goal of this PR?** Compress reader font bitmaps to reduce flash usage by 30.7%. **What changes are included?** - New `EpdFontGroup` struct and extended `EpdFontData` with `groups`/`groupCount` fields - `--compress` flag in `fontconvert.py`: groups glyphs (ASCII base group + groups of 8) and compresses each with raw DEFLATE - `FontDecompressor` class with 4-slot LRU cache for on-demand decompression during rendering - `GfxRenderer` transparently routes bitmap access through `getGlyphBitmap()` (compressed or direct flash) - Uses `uzlib` for decompression with minimal heap overhead. - 48 reader fonts (Bookerly, NotoSans 12-18pt, OpenDyslexic) regenerated with compression; 5 UI fonts unchanged - Round-trip verification script (`verify_compression.py`) runs as part of font generation ## Additional Context ## Flash & RAM | | baseline | font-compression | Difference | |--|--------|-----------------|------------| | Flash (ELF) | 6,302,476 B (96.2%) | 4,365,022 B (66.6%) | -1,937,454 B (-30.7%) | | firmware.bin | 6,468,192 B | 4,531,008 B | -1,937,184 B (-29.9%) | | RAM | 101,700 B (31.0%) | 103,076 B (31.5%) | +1,376 B (+0.5%) | ## Script-Based Grouping (Cold Cache) Comparison of uncompressed baseline vs script-based group compression (4-slot LRU cache, cleared each page). Glyphs are grouped by Unicode block (ASCII, Latin-1, Latin Extended-A, Combining Marks, Cyrillic, General Punctuation, etc.) instead of sequential groups of 8. ### Render Time | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Median** | 414.9 ms | 431.6 ms | +16.7 ms (+4.0%) | | **Pages** | 37 | 37 | | ### Memory Usage | | Baseline | Compressed (cold cache) | Difference | |---|---|---|---| | **Heap free (median)** | 187.0 KB | 176.3 KB | -10.7 KB | | **Heap free (min)** | 186.0 KB | 166.5 KB | -19.5 KB | | **Largest block (median)** | 148.0 KB | 128.0 KB | -20.0 KB | | **Largest block (min)** | 148.0 KB | 120.0 KB | -28.0 KB | ### Cache Effectiveness | | Misses/page | Hit rate | |---|---|---| | **Compressed (cold cache)** | 2.1 | 99.85% | ------ ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES**_ Implementation was done by Claude Code (Opus 4.6) based on a plan developed collaboratively. All generated font headers were verified with an automated round-trip decompression test. The firmware was compiled successfully but has not yet been tested on-device. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 20:30:15 +11:00
bookerly_12_bolditalicGroups,
feat: Support for kerning and ligatures (#873) ## Summary **What is the goal of this PR?** Improved typesetting, including [kerning](https://en.wikipedia.org/wiki/Kerning) and [ligatures](https://en.wikipedia.org/wiki/Ligature_(writing)#Latin_alphabet). **What changes are included?** - The script to convert built-in fonts now adds kerning and ligature information to the generated font headers. - Epub page layout calculates proper kerning spaces and makes ligature substitutions according to the selected font. ![3U1B1808](https://github.com/user-attachments/assets/1accb16f-2f1a-41e5-adca-89f1f1348494) ![3U1B1810](https://github.com/user-attachments/assets/2f6bd007-490e-420f-b774-3380b4add7ea) ![3U1B1815](https://github.com/user-attachments/assets/1986bb77-2db0-46e2-a5d6-8315dae9eb19) ## Additional Context - I am not a typography expert. - The implementation has been reworked from the earlier version, so it is no longer necessary to omit Open Dyslexic, and kerning data now covers all fonts, styles, and codepoints for which we include bitmap data. - Claude Opus 4.6 helped with a lot of this. - There's an included test epub document with lots of kerning and ligature examples, shown in the photos. **_After some time to mature, I think this change is in decent shape to merge and get people testing._** After opening this PR I came across #660, which overlaps in adding ligature support. --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**YES, Claude Opus 4.6**_ --------- Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 02:31:43 -06:00
12,
bookerly_12_bolditalicKernLeftClasses,
bookerly_12_bolditalicKernRightClasses,
bookerly_12_bolditalicKernMatrix,
478,
497,
139,
109,
bookerly_12_bolditalicLigaturePairs,
5,
};