Unescape HTML · C 🤝 qwen3.8-27b:8bit

SHA-256 60ef1baed3d40e1ef7c3b2e81d58958194ba77ad905eedd6cf91bdf90689a944

View source (70.1 KiB of C)
/* SPDX-License-Identifier: MIT
 * HTML character-reference decoder, authored with OpenAI GPT-6 (Codex).
 * Entity mappings: WHATWG HTML named character reference data, obtained from
 * Python html.entities.html5. Front-coded sorted names in blocks of eight.
 * Build: zig cc -target wasm32-freestanding -Oz -msimd128 -nostdlib
 *   -Wl,--no-entry -Wl,--export-memory -Wl,-z,stack-size=16384
 *   -Wl,--initial-memory=1310720 -Wl,--max-memory=1310720
 *   -Wl,--export=input_ptr -Wl,--export=input_utf8_cap
 *   -Wl,--export=output_utf8_cap -Wl,--export=render
 *   -Wl,--strip-all unescape.c -o unescape.wasm
 */
#include <stdint.h>
#include <wasm_simd128.h>
#define EXPORT __attribute__((visibility("default")))
/* Input starts 209744 bytes ahead of output. The maximum expansion is one
 * byte per five input bytes (&nGt; and &nLt;), at most 209715 bytes for 1 MiB,
 * so writes cannot overwrite unread input, including 16-byte SIMD copies.
 * Values are LEB128 codepoints, NUL-terminated (code point 0 is unused). */
static unsigned char buffer[1258320];
EXPORT uint32_t input_ptr(void) { return (uint32_t)(buffer+209744); }
EXPORT uint32_t input_utf8_cap(void) { return 1048576; }
EXPORT uint32_t output_utf8_cap(void) { return 1258298; }
static const unsigned char names[]={
0,65,69,108,105,103,0,1,77,80,0,1,97,99,117,116,101,0,1,98,114,101,118,101,
0,1,99,105,114,99,0,2,121,0,1,102,114,0,1,103,114,97,118,101,0,0,65,108,
112,104,97,0,1,109,97,99,114,0,1,110,100,0,1,111,103,111,110,0,2,112,102,0,
1,112,112,108,121,70,117,110,99,116,105,111,110,0,1,114,105,110,103,0,1,115,99,114,
0,0,65,115,115,105,103,110,0,1,116,105,108,100,101,0,1,117,109,108,0,0,66,97,
99,107,115,108,97,115,104,0,2,114,118,0,3,119,101,100,0,1,99,121,0,1,101,99,
97,117,115,101,0,0,66,101,114,110,111,117,108,108,105,115,0,2,116,97,0,1,102,114,
0,1,111,112,102,0,1,114,101,118,101,0,1,115,99,114,0,1,117,109,112,101,113,0,
0,67,72,99,121,0,0,67,79,80,89,0,1,97,99,117,116,101,0,2,112,0,3,105,
116,97,108,68,105,102,102,101,114,101,110,116,105,97,108,68,0,2,121,108,101,121,115,0,
1,99,97,114,111,110,0,2,101,100,105,108,0,2,105,114,99,0,0,67,99,111,110,105,
110,116,0,1,100,111,116,0,1,101,100,105,108,108,97,0,2,110,116,101,114,68,111,116,
0,1,102,114,0,1,104,105,0,1,105,114,99,108,101,68,111,116,0,6,77,105,110,117,
115,0,0,67,105,114,99,108,101,80,108,117,115,0,6,84,105,109,101,115,0,1,108,111,
99,107,119,105,115,101,67,111,110,116,111,117,114,73,110,116,101,103,114,97,108,0,3,115,
101,67,117,114,108,121,68,111,117,98,108,101,81,117,111,116,101,0,10,81,117,111,116,101,
0,1,111,108,111,110,0,5,101,0,2,110,103,114,117,101,110,116,0,0,67,111,110,105,
110,116,0,3,116,111,117,114,73,110,116,101,103,114,97,108,0,2,112,102,0,3,114,111,
100,117,99,116,0,2,117,110,116,101,114,67,108,111,99,107,119,105,115,101,67,111,110,116,
111,117,114,73,110,116,101,103,114,97,108,0,1,114,111,115,115,0,1,115,99,114,0,1,
117,112,0,0,67,117,112,67,97,112,0,0,68,68,0,2,111,116,114,97,104,100,0,1,
74,99,121,0,1,83,99,121,0,1,90,99,121,0,1,97,103,103,101,114,0,2,114,114,
0,0,68,97,115,104,118,0,1,99,97,114,111,110,0,2,121,0,1,101,108,0,3,116,
97,0,1,102,114,0,1,105,97,99,114,105,116,105,99,97,108,65,99,117,116,101,0,11,
68,111,116,0,0,68,105,97,99,114,105,116,105,99,97,108,68,111,117,98,108,101,65,99,
117,116,101,0,11,71,114,97,118,101,0,11,84,105,108,100,101,0,3,109,111,110,100,0,
2,102,102,101,114,101,110,116,105,97,108,68,0,1,111,112,102,0,2,116,0,3,68,111,
116,0,0,68,111,116,69,113,117,97,108,0,2,117,98,108,101,67,111,110,116,111,117,114,
73,110,116,101,103,114,97,108,0,6,68,111,116,0,8,119,110,65,114,114,111,119,0,6,
76,101,102,116,65,114,114,111,119,0,10,82,105,103,104,116,65,114,114,111,119,0,10,84,
101,101,0,7,111,110,103,76,101,102,116,65,114,114,111,119,0,0,68,111,117,98,108,101,
76,111,110,103,76,101,102,116,82,105,103,104,116,65,114,114,111,119,0,10,82,105,103,104,
116,65,114,114,111,119,0,6,82,105,103,104,116,65,114,114,111,119,0,11,84,101,101,0,
6,85,112,65,114,114,111,119,0,8,68,111,119,110,65,114,114,111,119,0,6,86,101,114,
116,105,99,97,108,66,97,114,0,2,119,110,65,114,114,111,119,0,0,68,111,119,110,65,
114,114,111,119,66,97,114,0,9,85,112,65,114,114,111,119,0,4,66,114,101,118,101,0,
4,76,101,102,116,82,105,103,104,116,86,101,99,116,111,114,0,8,84,101,101,86,101,99,
116,111,114,0,8,86,101,99,116,111,114,0,14,66,97,114,0,4,82,105,103,104,116,84,
101,101,86,101,99,116,111,114,0,0,68,111,119,110,82,105,103,104,116,86,101,99,116,111,
114,0,15,66,97,114,0,4,84,101,101,0,7,65,114,114,111,119,0,4,97,114,114,111,
119,0,1,115,99,114,0,2,116,114,111,107,0,0,69,78,71,0,0,69,84,72,0,1,
97,99,117,116,101,0,1,99,97,114,111,110,0,2,105,114,99,0,2,121,0,1,100,111,
116,0,1,102,114,0,1,103,114,97,118,101,0,0,69,108,101,109,101,110,116,0,1,109,
97,99,114,0,2,112,116,121,83,109,97,108,108,83,113,117,97,114,101,0,5,86,101,114,
121,83,109,97,108,108,83,113,117,97,114,101,0,1,111,103,111,110,0,2,112,102,0,1,
112,115,105,108,111,110,0,1,113,117,97,108,0,0,69,113,117,97,108,84,105,108,100,101,
0,3,105,108,105,98,114,105,117,109,0,1,115,99,114,0,2,105,109,0,1,116,97,0,
1,117,109,108,0,1,120,105,115,116,115,0,2,112,111,110,101,110,116,105,97,108,69,0,
0,70,99,121,0,1,102,114,0,1,105,108,108,101,100,83,109,97,108,108,83,113,117,97,
114,101,0,6,86,101,114,121,83,109,97,108,108,83,113,117,97,114,101,0,1,111,112,102,
0,2,114,65,108,108,0,2,117,114,105,101,114,116,114,102,0,1,115,99,114,0,0,71,
74,99,121,0,1,84,0,1,97,109,109,97,0,5,100,0,1,98,114,101,118,101,0,1,
99,101,100,105,108,0,2,105,114,99,0,2,121,0,0,71,100,111,116,0,1,102,114,0,
1,103,0,1,111,112,102,0,1,114,101,97,116,101,114,69,113,117,97,108,0,12,76,101,
115,115,0,7,70,117,108,108,69,113,117,97,108,0,7,71,114,101,97,116,101,114,0,0,
71,114,101,97,116,101,114,76,101,115,115,0,7,83,108,97,110,116,69,113,117,97,108,0,
7,84,105,108,100,101,0,1,115,99,114,0,1,116,0,0,72,65,82,68,99,121,0,1,
97,99,101,107,0,2,116,0,0,72,99,105,114,99,0,1,102,114,0,1,105,108,98,101,
114,116,83,112,97,99,101,0,1,111,112,102,0,2,114,105,122,111,110,116,97,108,76,105,
110,101,0,1,115,99,114,0,2,116,114,111,107,0,1,117,109,112,68,111,119,110,72,117,
109,112,0,0,72,117,109,112,69,113,117,97,108,0,0,73,69,99,121,0,1,74,108,105,
103,0,1,79,99,121,0,1,97,99,117,116,101,0,1,99,105,114,99,0,2,121,0,1,
100,111,116,0,0,73,102,114,0,1,103,114,97,118,101,0,1,109,0,2,97,99,114,0,
3,103,105,110,97,114,121,73,0,2,112,108,105,101,115,0,1,110,116,0,3,101,103,114,
97,108,0,0,73,110,116,101,114,115,101,99,116,105,111,110,0,2,118,105,115,105,98,108,
101,67,111,109,109,97,0,9,84,105,109,101,115,0,1,111,103,111,110,0,2,112,102,0,
2,116,97,0,1,115,99,114,0,1,116,105,108,100,101,0,0,73,117,107,99,121,0,2,
109,108,0,0,74,99,105,114,99,0,2,121,0,1,102,114,0,1,111,112,102,0,1,115,
99,114,0,2,101,114,99,121,0,0,74,117,107,99,121,0,0,75,72,99,121,0,1,74,
99,121,0,1,97,112,112,97,0,1,99,101,100,105,108,0,2,121,0,1,102,114,0,1,
111,112,102,0,0,75,115,99,114,0,0,76,74,99,121,0,1,84,0,1,97,99,117,116,
101,0,2,109,98,100,97,0,2,110,103,0,2,112,108,97,99,101,116,114,102,0,2,114,
114,0,0,76,99,97,114,111,110,0,2,101,100,105,108,0,2,121,0,1,101,102,116,65,
110,103,108,101,66,114,97,99,107,101,116,0,5,114,114,111,119,0,9,66,97,114,0,9,
82,105,103,104,116,65,114,114,111,119,0,4,67,101,105,108,105,110,103,0,0,76,101,102,
116,68,111,117,98,108,101,66,114,97,99,107,101,116,0,6,119,110,84,101,101,86,101,99,
116,111,114,0,8,86,101,99,116,111,114,0,14,66,97,114,0,4,70,108,111,111,114,0,
4,82,105,103,104,116,65,114,114,111,119,0,9,86,101,99,116,111,114,0,4,84,101,101,
0,0,76,101,102,116,84,101,101,65,114,114,111,119,0,7,86,101,99,116,111,114,0,5,
114,105,97,110,103,108,101,0,12,66,97,114,0,12,69,113,117,97,108,0,4,85,112,68,
111,119,110,86,101,99,116,111,114,0,6,84,101,101,86,101,99,116,111,114,0,6,86,101,
99,116,111,114,0,0,76,101,102,116,85,112,86,101,99,116,111,114,66,97,114,0,4,86,
101,99,116,111,114,0,10,66,97,114,0,4,97,114,114,111,119,0,4,114,105,103,104,116,
97,114,114,111,119,0,2,115,115,69,113,117,97,108,71,114,101,97,116,101,114,0,4,70,
117,108,108,69,113,117,97,108,0,4,71,114,101,97,116,101,114,0,0,76,101,115,115,76,
101,115,115,0,4,83,108,97,110,116,69,113,117,97,108,0,4,84,105,108,100,101,0,1,
102,114,0,1,108,0,2,101,102,116,97,114,114,111,119,0,1,109,105,100,111,116,0,1,
111,110,103,76,101,102,116,65,114,114,111,119,0,0,76,111,110,103,76,101,102,116,82,105,
103,104,116,65,114,114,111,119,0,4,82,105,103,104,116,65,114,114,111,119,0,4,108,101,
102,116,97,114,114,111,119,0,8,114,105,103,104,116,97,114,114,111,119,0,4,114,105,103,
104,116,97,114,114,111,119,0,2,112,102,0,2,119,101,114,76,101,102,116,65,114,114,111,
119,0,5,82,105,103,104,116,65,114,114,111,119,0,0,76,115,99,114,0,2,104,0,2,
116,114,111,107,0,1,116,0,0,77,97,112,0,1,99,121,0,1,101,100,105,117,109,83,
112,97,99,101,0,2,108,108,105,110,116,114,102,0,0,77,102,114,0,1,105,110,117,115,
80,108,117,115,0,1,111,112,102,0,1,115,99,114,0,1,117,0,0,78,74,99,121,0,
1,97,99,117,116,101,0,1,99,97,114,111,110,0,0,78,99,101,100,105,108,0,2,121,
0,1,101,103,97,116,105,118,101,77,101,100,105,117,109,83,112,97,99,101,0,8,84,104,
105,99,107,83,112,97,99,101,0,11,110,83,112,97,99,101,0,8,86,101,114,121,84,104,
105,110,83,112,97,99,101,0,2,115,116,101,100,71,114,101,97,116,101,114,71,114,101,97,
116,101,114,0,6,76,101,115,115,76,101,115,115,0,0,78,101,119,76,105,110,101,0,1,
102,114,0,1,111,66,114,101,97,107,0,2,110,66,114,101,97,107,105,110,103,83,112,97,
99,101,0,2,112,102,0,2,116,0,3,67,111,110,103,114,117,101,110,116,0,4,117,112,
67,97,112,0,0,78,111,116,68,111,117,98,108,101,86,101,114,116,105,99,97,108,66,97,
114,0,3,69,108,101,109,101,110,116,0,4,113,117,97,108,0,8,84,105,108,100,101,0,
4,120,105,115,116,115,0,3,71,114,101,97,116,101,114,0,10,69,113,117,97,108,0,10,
70,117,108,108,69,113,117,97,108,0,0,78,111,116,71,114,101,97,116,101,114,71,114,101,
97,116,101,114,0,10,76,101,115,115,0,10,83,108,97,110,116,69,113,117,97,108,0,10,
84,105,108,100,101,0,3,72,117,109,112,68,111,119,110,72,117,109,112,0,7,69,113,117,
97,108,0,3,76,101,102,116,84,114,105,97,110,103,108,101,0,15,66,97,114,0,0,78,
111,116,76,101,102,116,84,114,105,97,110,103,108,101,69,113,117,97,108,0,5,115,115,0,
7,69,113,117,97,108,0,7,71,114,101,97,116,101,114,0,7,76,101,115,115,0,7,83,
108,97,110,116,69,113,117,97,108,0,7,84,105,108,100,101,0,3,78,101,115,116,101,100,
71,114,101,97,116,101,114,71,114,101,97,116,101,114,0,0,78,111,116,78,101,115,116,101,
100,76,101,115,115,76,101,115,115,0,3,80,114,101,99,101,100,101,115,0,11,69,113,117,
97,108,0,11,83,108,97,110,116,69,113,117,97,108,0,3,82,101,118,101,114,115,101,69,
108,101,109,101,110,116,0,4,105,103,104,116,84,114,105,97,110,103,108,101,0,16,66,97,
114,0,16,69,113,117,97,108,0,0,78,111,116,83,113,117,97,114,101,83,117,98,115,101,
116,0,15,69,113,117,97,108,0,11,112,101,114,115,101,116,0,17,69,113,117,97,108,0,
4,117,98,115,101,116,0,9,69,113,117,97,108,0,5,99,99,101,101,100,115,0,11,69,
113,117,97,108,0,0,78,111,116,83,117,99,99,101,101,100,115,83,108,97,110,116,69,113,
117,97,108,0,11,84,105,108,100,101,0,5,112,101,114,115,101,116,0,11,69,113,117,97,
108,0,3,84,105,108,100,101,0,8,69,113,117,97,108,0,8,70,117,108,108,69,113,117,
97,108,0,8,84,105,108,100,101,0,0,78,111,116,86,101,114,116,105,99,97,108,66,97,
114,0,1,115,99,114,0,1,116,105,108,100,101,0,1,117,0,0,79,69,108,105,103,0,
1,97,99,117,116,101,0,1,99,105,114,99,0,2,121,0,0,79,100,98,108,97,99,0,
1,102,114,0,1,103,114,97,118,101,0,1,109,97,99,114,0,2,101,103,97,0,2,105,
99,114,111,110,0,1,111,112,102,0,1,112,101,110,67,117,114,108,121,68,111,117,98,108,
101,81,117,111,116,101,0,0,79,112,101,110,67,117,114,108,121,81,117,111,116,101,0,1,
114,0,1,115,99,114,0,2,108,97,115,104,0,1,116,105,108,100,101,0,3,109,101,115,
0,1,117,109,108,0,1,118,101,114,66,97,114,0,0,79,118,101,114,66,114,97,99,101,
0,8,107,101,116,0,4,80,97,114,101,110,116,104,101,115,105,115,0,0,80,97,114,116,
105,97,108,68,0,1,99,121,0,1,102,114,0,1,104,105,0,1,105,0,0,80,108,117,
115,77,105,110,117,115,0,1,111,105,110,99,97,114,101,112,108,97,110,101,0,2,112,102,
0,1,114,0,2,101,99,101,100,101,115,0,8,69,113,117,97,108,0,8,83,108,97,110,
116,69,113,117,97,108,0,8,84,105,108,100,101,0,0,80,114,105,109,101,0,2,111,100,
117,99,116,0,3,112,111,114,116,105,111,110,0,10,97,108,0,1,115,99,114,0,2,105,
0,0,81,85,79,84,0,1,102,114,0,0,81,111,112,102,0,1,115,99,114,0,0,82,
66,97,114,114,0,1,69,71,0,1,97,99,117,116,101,0,2,110,103,0,2,114,114,0,
4,116,108,0,0,82,99,97,114,111,110,0,2,101,100,105,108,0,2,121,0,1,101,0,
2,118,101,114,115,101,69,108,101,109,101,110,116,0,8,113,117,105,108,105,98,114,105,117,
109,0,7,85,112,69,113,117,105,108,105,98,114,105,117,109,0,1,102,114,0,0,82,104,
111,0,1,105,103,104,116,65,110,103,108,101,66,114,97,99,107,101,116,0,6,114,114,111,
119,0,10,66,97,114,0,10,76,101,102,116,65,114,114,111,119,0,5,67,101,105,108,105,
110,103,0,5,68,111,117,98,108,101,66,114,97,99,107,101,116,0,7,119,110,84,101,101,
86,101,99,116,111,114,0,0,82,105,103,104,116,68,111,119,110,86,101,99,116,111,114,0,
15,66,97,114,0,5,70,108,111,111,114,0,5,84,101,101,0,8,65,114,114,111,119,0,
8,86,101,99,116,111,114,0,6,114,105,97,110,103,108,101,0,13,66,97,114,0,0,82,
105,103,104,116,84,114,105,97,110,103,108,101,69,113,117,97,108,0,5,85,112,68,111,119,
110,86,101,99,116,111,114,0,7,84,101,101,86,101,99,116,111,114,0,7,86,101,99,116,
111,114,0,13,66,97,114,0,5,86,101,99,116,111,114,0,11,66,97,114,0,5,97,114,
114,111,119,0,0,82,111,112,102,0,2,117,110,100,73,109,112,108,105,101,115,0,1,114,
105,103,104,116,97,114,114,111,119,0,1,115,99,114,0,2,104,0,1,117,108,101,68,101,
108,97,121,101,100,0,0,83,72,67,72,99,121,0,2,99,121,0,0,83,79,70,84,99,
121,0,1,97,99,117,116,101,0,1,99,0,2,97,114,111,110,0,2,101,100,105,108,0,
2,105,114,99,0,2,121,0,1,102,114,0,0,83,104,111,114,116,68,111,119,110,65,114,
114,111,119,0,5,76,101,102,116,65,114,114,111,119,0,5,82,105,103,104,116,65,114,114,
111,119,0,5,85,112,65,114,114,111,119,0,1,105,103,109,97,0,1,109,97,108,108,67,
105,114,99,108,101,0,1,111,112,102,0,1,113,114,116,0,0,83,113,117,97,114,101,0,
6,73,110,116,101,114,115,101,99,116,105,111,110,0,6,83,117,98,115,101,116,0,12,69,
113,117,97,108,0,8,112,101,114,115,101,116,0,14,69,113,117,97,108,0,6,85,110,105,
111,110,0,1,115,99,114,0,0,83,116,97,114,0,1,117,98,0,3,115,101,116,0,6,
69,113,117,97,108,0,2,99,99,101,101,100,115,0,8,69,113,117,97,108,0,8,83,108,
97,110,116,69,113,117,97,108,0,8,84,105,108,100,101,0,0,83,117,99,104,84,104,97,
116,0,2,109,0,2,112,0,3,101,114,115,101,116,0,8,69,113,117,97,108,0,3,115,
101,116,0,0,84,72,79,82,78,0,1,82,65,68,69,0,0,84,83,72,99,121,0,2,
99,121,0,1,97,98,0,2,117,0,1,99,97,114,111,110,0,2,101,100,105,108,0,2,
121,0,1,102,114,0,0,84,104,101,114,101,102,111,114,101,0,3,116,97,0,2,105,99,
107,83,112,97,99,101,0,3,110,83,112,97,99,101,0,1,105,108,100,101,0,5,69,113,
117,97,108,0,5,70,117,108,108,69,113,117,97,108,0,5,84,105,108,100,101,0,0,84,
111,112,102,0,1,114,105,112,108,101,68,111,116,0,1,115,99,114,0,2,116,114,111,107,
0,0,85,97,99,117,116,101,0,2,114,114,0,4,111,99,105,114,0,1,98,114,99,121,
0,0,85,98,114,101,118,101,0,1,99,105,114,99,0,2,121,0,1,100,98,108,97,99,
0,1,102,114,0,1,103,114,97,118,101,0,1,109,97,99,114,0,1,110,100,101,114,66,
97,114,0,0,85,110,100,101,114,66,114,97,99,101,0,9,107,101,116,0,5,80,97,114,
101,110,116,104,101,115,105,115,0,2,105,111,110,0,5,80,108,117,115,0,1,111,103,111,
110,0,2,112,102,0,1,112,65,114,114,111,119,0,0,85,112,65,114,114,111,119,66,97,
114,0,7,68,111,119,110,65,114,114,111,119,0,2,68,111,119,110,65,114,114,111,119,0,
2,69,113,117,105,108,105,98,114,105,117,109,0,2,84,101,101,0,5,65,114,114,111,119,
0,2,97,114,114,111,119,0,2,100,111,119,110,97,114,114,111,119,0,0,85,112,112,101,
114,76,101,102,116,65,114,114,111,119,0,5,82,105,103,104,116,65,114,114,111,119,0,2,
115,105,0,4,108,111,110,0,1,114,105,110,103,0,1,115,99,114,0,1,116,105,108,100,
101,0,1,117,109,108,0,0,86,68,97,115,104,0,1,98,97,114,0,1,99,121,0,1,
100,97,115,104,0,5,108,0,1,101,101,0,2,114,98,97,114,0,3,116,0,0,86,101,
114,116,105,99,97,108,66,97,114,0,8,76,105,110,101,0,8,83,101,112,97,114,97,116,
111,114,0,8,84,105,108,100,101,0,3,121,84,104,105,110,83,112,97,99,101,0,1,102,
114,0,1,111,112,102,0,1,115,99,114,0,0,86,118,100,97,115,104,0,0,87,99,105,
114,99,0,1,101,100,103,101,0,1,102,114,0,1,111,112,102,0,1,115,99,114,0,0,
88,102,114,0,1,105,0,0,88,111,112,102,0,1,115,99,114,0,0,89,65,99,121,0,
1,73,99,121,0,1,85,99,121,0,1,97,99,117,116,101,0,1,99,105,114,99,0,2,
121,0,0,89,102,114,0,1,111,112,102,0,1,115,99,114,0,1,117,109,108,0,0,90,
72,99,121,0,1,97,99,117,116,101,0,1,99,97,114,111,110,0,2,121,0,0,90,100,
111,116,0,1,101,114,111,87,105,100,116,104,83,112,97,99,101,0,2,116,97,0,1,102,
114,0,1,111,112,102,0,1,115,99,114,0,0,97,97,99,117,116,101,0,1,98,114,101,
118,101,0,0,97,99,0,2,69,0,2,100,0,2,105,114,99,0,2,117,116,101,0,2,
121,0,1,101,108,105,103,0,1,102,0,0,97,102,114,0,1,103,114,97,118,101,0,1,
108,101,102,115,121,109,0,3,112,104,0,2,112,104,97,0,1,109,97,99,114,0,3,108,
103,0,2,112,0,0,97,110,100,0,3,97,110,100,0,3,100,0,3,115,108,111,112,101,
0,3,118,0,2,103,0,3,101,0,3,108,101,0,0,97,110,103,109,115,100,0,6,97,
97,0,7,98,0,7,99,0,7,100,0,7,101,0,7,102,0,7,103,0,0,97,110,103,
109,115,100,97,104,0,3,114,116,0,5,118,98,0,7,100,0,3,115,112,104,0,4,116,
0,3,122,97,114,114,0,1,111,103,111,110,0,0,97,111,112,102,0,1,112,0,2,69,
0,2,97,99,105,114,0,2,101,0,2,105,100,0,2,111,115,0,2,112,114,111,120,0,
0,97,112,112,114,111,120,101,113,0,1,114,105,110,103,0,1,115,99,114,0,2,116,0,
2,121,109,112,0,5,101,113,0,1,116,105,108,100,101,0,1,117,109,108,0,0,97,119,
99,111,110,105,110,116,0,2,105,110,116,0,0,98,78,111,116,0,1,97,99,107,99,111,
110,103,0,4,101,112,115,105,108,111,110,0,4,112,114,105,109,101,0,4,115,105,109,0,
7,101,113,0,0,98,97,114,118,101,101,0,3,119,101,100,0,6,103,101,0,1,98,114,
107,0,4,116,98,114,107,0,1,99,111,110,103,0,2,121,0,1,100,113,117,111,0,0,
98,101,99,97,117,115,0,6,101,0,2,109,112,116,121,118,0,2,112,115,105,0,2,114,
110,111,117,0,2,116,97,0,3,104,0,3,119,101,101,110,0,0,98,102,114,0,1,105,
103,99,97,112,0,4,105,114,99,0,4,117,112,0,3,111,100,111,116,0,4,112,108,117,
115,0,4,116,105,109,101,115,0,3,115,113,99,117,112,0,0,98,105,103,115,116,97,114,
0,3,116,114,105,97,110,103,108,101,100,111,119,110,0,11,117,112,0,3,117,112,108,117,
115,0,3,118,101,101,0,3,119,101,100,103,101,0,1,107,97,114,111,119,0,1,108,97,
99,107,108,111,122,101,110,103,101,0,0,98,108,97,99,107,115,113,117,97,114,101,0,5,
116,114,105,97,110,103,108,101,0,13,100,111,119,110,0,13,108,101,102,116,0,13,114,105,
103,104,116,0,3,110,107,0,2,107,49,50,0,4,52,0,0,98,108,107,51,52,0,2,
111,99,107,0,1,110,101,0,3,113,117,105,118,0,2,111,116,0,1,111,112,102,0,2,
116,0,3,116,111,109,0,0,98,111,119,116,105,101,0,2,120,68,76,0,4,82,0,4,
108,0,4,114,0,3,72,0,4,68,0,4,85,0,0,98,111,120,72,100,0,4,117,0,
3,85,76,0,4,82,0,4,108,0,4,114,0,3,86,0,4,72,0,0,98,111,120,86,
76,0,4,82,0,4,104,0,4,108,0,4,114,0,3,98,111,120,0,3,100,76,0,4,
82,0,0,98,111,120,100,108,0,4,114,0,3,104,0,4,68,0,4,85,0,4,100,0,
4,117,0,3,109,105,110,117,115,0,0,98,111,120,112,108,117,115,0,3,116,105,109,101,
115,0,3,117,76,0,4,82,0,4,108,0,4,114,0,3,118,0,4,72,0,0,98,111,
120,118,76,0,4,82,0,4,104,0,4,108,0,4,114,0,1,112,114,105,109,101,0,1,
114,101,118,101,0,2,118,98,97,114,0,0,98,115,99,114,0,2,101,109,105,0,2,105,
109,0,4,101,0,2,111,108,0,4,98,0,4,104,115,117,98,0,1,117,108,108,0,0,
98,117,108,108,101,116,0,2,109,112,0,4,69,0,4,101,0,5,113,0,0,99,97,99,
117,116,101,0,2,112,0,3,97,110,100,0,0,99,97,112,98,114,99,117,112,0,3,99,
97,112,0,4,117,112,0,3,100,111,116,0,3,115,0,2,114,101,116,0,3,111,110,0,
1,99,97,112,115,0,0,99,99,97,114,111,110,0,2,101,100,105,108,0,2,105,114,99,
0,2,117,112,115,0,5,115,109,0,1,100,111,116,0,1,101,100,105,108,0,2,109,112,
116,121,118,0,0,99,101,110,116,0,4,101,114,100,111,116,0,1,102,114,0,1,104,99,
121,0,2,101,99,107,0,5,109,97,114,107,0,2,105,0,1,105,114,0,0,99,105,114,
69,0,3,99,0,4,101,113,0,4,108,101,97,114,114,111,119,108,101,102,116,0,11,114,
105,103,104,116,0,6,100,82,0,7,83,0,7,97,115,116,0,0,99,105,114,99,108,101,
100,99,105,114,99,0,7,100,97,115,104,0,3,101,0,3,102,110,105,110,116,0,3,109,
105,100,0,3,115,99,105,114,0,1,108,117,98,115,0,5,117,105,116,0,0,99,111,108,
111,110,0,5,101,0,6,113,0,2,109,109,97,0,5,116,0,3,112,0,4,102,110,0,
4,108,101,109,101,110,116,0,0,99,111,109,112,108,101,120,101,115,0,2,110,103,0,4,
100,111,116,0,3,105,110,116,0,2,112,102,0,3,114,111,100,0,3,121,0,4,115,114,
0,0,99,114,97,114,114,0,2,111,115,115,0,1,115,99,114,0,2,117,98,0,4,101,
0,3,112,0,4,101,0,1,116,100,111,116,0,0,99,117,100,97,114,114,108,0,6,114,
0,2,101,112,114,0,3,115,99,0,2,108,97,114,114,0,6,112,0,2,112,0,3,98,
114,99,97,112,0,0,99,117,112,99,97,112,0,4,117,112,0,3,100,111,116,0,3,111,
114,0,3,115,0,2,114,97,114,114,0,6,109,0,3,108,121,101,113,112,114,101,99,0,
0,99,117,114,108,121,101,113,115,117,99,99,0,5,118,101,101,0,5,119,101,100,103,101,
0,3,114,101,110,0,3,118,101,97,114,114,111,119,108,101,102,116,0,10,114,105,103,104,
116,0,2,118,101,101,0,2,119,101,100,0,0,99,119,99,111,110,105,110,116,0,2,105,
110,116,0,1,121,108,99,116,121,0,0,100,65,114,114,0,1,72,97,114,0,1,97,103,
103,101,114,0,2,108,101,116,104,0,2,114,114,0,0,100,97,115,104,0,4,118,0,1,
98,107,97,114,111,119,0,2,108,97,99,0,1,99,97,114,111,110,0,2,121,0,1,100,
0,2,97,103,103,101,114,0,0,100,100,97,114,114,0,2,111,116,115,101,113,0,1,101,
103,0,2,108,116,97,0,2,109,112,116,121,118,0,1,102,105,115,104,116,0,2,114,0,
1,104,97,114,108,0,0,100,104,97,114,114,0,1,105,97,109,0,4,111,110,100,0,7,
115,117,105,116,0,4,115,0,2,101,0,2,103,97,109,109,97,0,2,115,105,110,0,0,
100,105,118,0,3,105,100,101,0,6,111,110,116,105,109,101,115,0,3,111,110,120,0,1,
106,99,121,0,1,108,99,111,114,110,0,3,114,111,112,0,1,111,108,108,97,114,0,0,
100,111,112,102,0,2,116,0,3,101,113,0,5,100,111,116,0,3,109,105,110,117,115,0,
3,112,108,117,115,0,3,115,113,117,97,114,101,0,2,117,98,108,101,98,97,114,119,101,
100,103,101,0,0,100,111,119,110,97,114,114,111,119,0,4,100,111,119,110,97,114,114,111,
119,115,0,4,104,97,114,112,111,111,110,108,101,102,116,0,11,114,105,103,104,116,0,1,
114,98,107,97,114,111,119,0,2,99,111,114,110,0,3,114,111,112,0,1,115,99,114,0,
0,100,115,99,121,0,2,111,108,0,2,116,114,111,107,0,1,116,100,111,116,0,2,114,
105,0,4,102,0,1,117,97,114,114,0,2,104,97,114,0,0,100,119,97,110,103,108,101,
0,1,122,99,121,0,2,105,103,114,97,114,114,0,0,101,68,68,111,116,0,2,111,116,
0,1,97,99,117,116,101,0,2,115,116,101,114,0,1,99,97,114,111,110,0,0,101,99,
105,114,0,4,99,0,2,111,108,111,110,0,2,121,0,1,100,111,116,0,1,101,0,1,
102,68,111,116,0,2,114,0,0,101,103,0,2,114,97,118,101,0,2,115,0,3,100,111,
116,0,1,108,0,2,105,110,116,101,114,115,0,2,108,0,2,115,0,0,101,108,115,100,
111,116,0,1,109,97,99,114,0,2,112,116,121,0,5,115,101,116,0,5,118,0,2,115,
112,0,4,49,51,0,5,52,0,0,101,110,103,0,2,115,112,0,1,111,103,111,110,0,
2,112,102,0,1,112,97,114,0,4,115,108,0,2,108,117,115,0,2,115,105,0,0,101,
112,115,105,108,111,110,0,4,118,0,1,113,99,105,114,99,0,3,111,108,111,110,0,2,
115,105,109,0,3,108,97,110,116,103,116,114,0,7,108,101,115,115,0,2,117,97,108,115,
0,0,101,113,117,101,115,116,0,3,105,118,0,5,68,68,0,2,118,112,97,114,115,108,
0,1,114,68,111,116,0,2,97,114,114,0,1,115,99,114,0,2,100,111,116,0,0,101,
115,105,109,0,1,116,97,0,2,104,0,1,117,109,108,0,2,114,111,0,1,120,99,108,
0,2,105,115,116,0,2,112,101,99,116,97,116,105,111,110,0,0,101,120,112,111,110,101,
110,116,105,97,108,101,0,0,102,97,108,108,105,110,103,100,111,116,115,101,113,0,1,99,
121,0,1,101,109,97,108,101,0,1,102,105,108,105,103,0,2,108,105,103,0,3,108,105,
103,0,2,114,0,0,102,105,108,105,103,0,1,106,108,105,103,0,1,108,97,116,0,2,
108,105,103,0,2,116,110,115,0,1,110,111,102,0,1,111,112,102,0,2,114,97,108,108,
0,0,102,111,114,107,0,4,118,0,1,112,97,114,116,105,110,116,0,1,114,97,99,49,
50,0,5,51,0,5,52,0,5,53,0,5,54,0,0,102,114,97,99,49,56,0,4,50,
51,0,5,53,0,4,51,52,0,5,53,0,5,56,0,4,52,53,0,4,53,54,0,0,
102,114,97,99,53,56,0,4,55,56,0,3,115,108,0,2,111,119,110,0,1,115,99,114,
0,0,103,69,0,2,108,0,1,97,99,117,116,101,0,0,103,97,109,109,97,0,5,100,
0,2,112,0,1,98,114,101,118,101,0,1,99,105,114,99,0,2,121,0,1,100,111,116,
0,1,101,0,0,103,101,108,0,2,113,0,3,113,0,3,115,108,97,110,116,0,2,115,
0,3,99,99,0,3,100,111,116,0,6,111,0,0,103,101,115,100,111,116,111,108,0,3,
108,0,4,101,115,0,1,102,114,0,1,103,0,2,103,0,1,105,109,101,108,0,1,106,
99,121,0,0,103,108,0,2,69,0,2,97,0,2,106,0,1,110,69,0,2,97,112,0,
4,112,114,111,120,0,2,101,0,0,103,110,101,113,0,4,113,0,2,115,105,109,0,1,
111,112,102,0,1,114,97,118,101,0,1,115,99,114,0,2,105,109,0,4,101,0,0,103,
115,105,109,108,0,1,116,0,2,99,99,0,3,105,114,0,2,100,111,116,0,2,108,80,
97,114,0,2,113,117,101,115,116,0,2,114,97,112,112,114,111,120,0,0,103,116,114,97,
114,114,0,3,100,111,116,0,3,101,113,108,101,115,115,0,5,113,108,101,115,115,0,3,
108,101,115,115,0,3,115,105,109,0,1,118,101,114,116,110,101,113,113,0,2,110,69,0,
0,104,65,114,114,0,1,97,105,114,115,112,0,2,108,102,0,2,109,105,108,116,0,2,
114,100,99,121,0,3,114,0,4,99,105,114,0,4,119,0,0,104,98,97,114,0,1,99,
105,114,99,0,1,101,97,114,116,115,0,6,117,105,116,0,2,108,108,105,112,0,2,114,
99,111,110,0,1,102,114,0,1,107,115,101,97,114,111,119,0,0,104,107,115,119,97,114,
111,119,0,1,111,97,114,114,0,2,109,116,104,116,0,2,111,107,108,101,102,116,97,114,
114,111,119,0,4,114,105,103,104,116,97,114,114,111,119,0,2,112,102,0,2,114,98,97,
114,0,1,115,99,114,0,0,104,115,108,97,115,104,0,2,116,114,111,107,0,1,121,98,
117,108,108,0,2,112,104,101,110,0,0,105,97,99,117,116,101,0,1,99,0,2,105,114,
99,0,2,121,0,0,105,101,99,121,0,2,120,99,108,0,1,102,102,0,2,114,0,1,
103,114,97,118,101,0,1,105,0,2,105,105,110,116,0,3,110,116,0,0,105,105,110,102,
105,110,0,2,111,116,97,0,1,106,108,105,103,0,1,109,97,99,114,0,3,103,101,0,
4,108,105,110,101,0,4,112,97,114,116,0,3,116,104,0,0,105,109,111,102,0,2,112,
101,100,0,1,110,0,2,99,97,114,101,0,2,102,105,110,0,5,116,105,101,0,2,111,
100,111,116,0,2,116,0,0,105,110,116,99,97,108,0,3,101,103,101,114,115,0,4,114,
99,97,108,0,3,108,97,114,104,107,0,3,112,114,111,100,0,1,111,99,121,0,2,103,
111,110,0,2,112,102,0,0,105,111,116,97,0,1,112,114,111,100,0,1,113,117,101,115,
116,0,1,115,99,114,0,2,105,110,0,4,69,0,4,100,111,116,0,4,115,0,0,105,
115,105,110,115,118,0,4,118,0,1,116,0,2,105,108,100,101,0,1,117,107,99,121,0,
2,109,108,0,0,106,99,105,114,99,0,2,121,0,0,106,102,114,0,1,109,97,116,104,
0,1,111,112,102,0,1,115,99,114,0,2,101,114,99,121,0,1,117,107,99,121,0,0,
107,97,112,112,97,0,5,118,0,0,107,99,101,100,105,108,0,2,121,0,1,102,114,0,
1,103,114,101,101,110,0,1,104,99,121,0,1,106,99,121,0,1,111,112,102,0,1,115,
99,114,0,0,108,65,97,114,114,0,2,114,114,0,2,116,97,105,108,0,1,66,97,114,
114,0,1,69,0,2,103,0,1,72,97,114,0,1,97,99,117,116,101,0,0,108,97,101,
109,112,116,121,118,0,2,103,114,97,110,0,2,109,98,100,97,0,2,110,103,0,4,100,
0,4,108,101,0,2,112,0,2,113,117,111,0,0,108,97,114,114,0,4,98,0,5,102,
115,0,4,102,115,0,4,104,107,0,4,108,112,0,4,112,108,0,4,115,105,109,0,0,
108,97,114,114,116,108,0,2,116,0,3,97,105,108,0,3,101,0,4,115,0,1,98,97,
114,114,0,2,98,114,107,0,2,114,97,99,101,0,0,108,98,114,97,99,107,0,3,107,
101,0,4,115,108,100,0,6,117,0,1,99,97,114,111,110,0,2,101,100,105,108,0,3,
105,108,0,2,117,98,0,0,108,99,121,0,1,100,99,97,0,2,113,117,111,0,5,114,
0,2,114,100,104,97,114,0,3,117,115,104,97,114,0,2,115,104,0,1,101,0,0,108,
101,102,116,97,114,114,111,119,0,9,116,97,105,108,0,4,104,97,114,112,111,111,110,100,
111,119,110,0,11,117,112,0,4,108,101,102,116,97,114,114,111,119,115,0,4,114,105,103,
104,116,97,114,114,111,119,0,14,115,0,9,104,97,114,112,111,111,110,115,0,0,108,101,
102,116,114,105,103,104,116,115,113,117,105,103,97,114,114,111,119,0,4,116,104,114,101,101,
116,105,109,101,115,0,2,103,0,2,113,0,3,113,0,3,115,108,97,110,116,0,2,115,
0,3,99,99,0,0,108,101,115,100,111,116,0,6,111,0,7,114,0,3,103,0,4,101,
115,0,3,115,97,112,112,114,111,120,0,4,100,111,116,0,4,101,113,103,116,114,0,0,
108,101,115,115,101,113,113,103,116,114,0,4,103,116,114,0,4,115,105,109,0,1,102,105,
115,104,116,0,2,108,111,111,114,0,2,114,0,1,103,0,2,69,0,0,108,104,97,114,
100,0,4,117,0,5,108,0,2,98,108,107,0,1,106,99,121,0,1,108,0,2,97,114,
114,0,2,99,111,114,110,101,114,0,0,108,108,104,97,114,100,0,2,116,114,105,0,1,
109,105,100,111,116,0,2,111,117,115,116,0,6,97,99,104,101,0,1,110,69,0,2,97,
112,0,4,112,114,111,120,0,0,108,110,101,0,3,113,0,4,113,0,2,115,105,109,0,
1,111,97,110,103,0,3,114,114,0,2,98,114,107,0,2,110,103,108,101,102,116,97,114,
114,111,119,0,0,108,111,110,103,108,101,102,116,114,105,103,104,116,97,114,114,111,119,0,
4,109,97,112,115,116,111,0,4,114,105,103,104,116,97,114,114,111,119,0,2,111,112,97,
114,114,111,119,108,101,102,116,0,9,114,105,103,104,116,0,2,112,97,114,0,3,102,0,
3,108,117,115,0,0,108,111,116,105,109,101,115,0,2,119,97,115,116,0,3,98,97,114,
0,2,122,0,3,101,110,103,101,0,3,102,0,1,112,97,114,0,4,108,116,0,0,108,
114,97,114,114,0,2,99,111,114,110,101,114,0,2,104,97,114,0,5,100,0,2,109,0,
2,116,114,105,0,1,115,97,113,117,111,0,2,99,114,0,0,108,115,104,0,2,105,109,
0,4,101,0,4,103,0,2,113,98,0,3,117,111,0,5,114,0,2,116,114,111,107,0,
0,108,116,0,2,99,99,0,3,105,114,0,2,100,111,116,0,2,104,114,101,101,0,2,
105,109,101,115,0,2,108,97,114,114,0,2,113,117,101,115,116,0,0,108,116,114,80,97,
114,0,3,105,0,4,101,0,4,102,0,1,117,114,100,115,104,97,114,0,3,117,104,97,
114,0,1,118,101,114,116,110,101,113,113,0,2,110,69,0,0,109,68,68,111,116,0,1,
97,99,114,0,2,108,101,0,3,116,0,4,101,115,101,0,2,112,0,3,115,116,111,0,
6,100,111,119,110,0,0,109,97,112,115,116,111,108,101,102,116,0,6,117,112,0,2,114,
107,101,114,0,1,99,111,109,109,97,0,2,121,0,1,100,97,115,104,0,1,101,97,115,
117,114,101,100,97,110,103,108,101,0,1,102,114,0,0,109,104,111,0,1,105,99,114,111,
0,2,100,0,3,97,115,116,0,3,99,105,114,0,3,100,111,116,0,2,110,117,115,0,
5,98,0,0,109,105,110,117,115,100,0,6,117,0,1,108,99,112,0,2,100,114,0,1,
110,112,108,117,115,0,1,111,100,101,108,115,0,2,112,102,0,1,112,0,0,109,115,99,
114,0,2,116,112,111,115,0,1,117,0,2,108,116,105,109,97,112,0,2,109,97,112,0,
0,110,71,103,0,2,116,0,3,118,0,0,110,76,101,102,116,97,114,114,111,119,0,5,
114,105,103,104,116,97,114,114,111,119,0,2,108,0,2,116,0,3,118,0,1,82,105,103,
104,116,97,114,114,111,119,0,1,86,68,97,115,104,0,2,100,97,115,104,0,0,110,97,
98,108,97,0,2,99,117,116,101,0,2,110,103,0,2,112,0,3,69,0,3,105,100,0,
3,111,115,0,3,112,114,111,120,0,0,110,97,116,117,114,0,5,97,108,0,7,115,0,
1,98,115,112,0,2,117,109,112,0,5,101,0,1,99,97,112,0,3,114,111,110,0,0,
110,99,101,100,105,108,0,2,111,110,103,0,5,100,111,116,0,2,117,112,0,2,121,0,
1,100,97,115,104,0,1,101,0,2,65,114,114,0,0,110,101,97,114,104,107,0,4,114,
0,5,111,119,0,2,100,111,116,0,2,113,117,105,118,0,2,115,101,97,114,0,3,105,
109,0,2,120,105,115,116,0,0,110,101,120,105,115,116,115,0,1,102,114,0,1,103,69,
0,2,101,0,3,113,0,4,113,0,4,115,108,97,110,116,0,3,115,0,0,110,103,115,
105,109,0,2,116,0,3,114,0,1,104,65,114,114,0,2,97,114,114,0,2,112,97,114,
0,1,105,0,2,115,0,0,110,105,115,100,0,2,118,0,1,106,99,121,0,1,108,65,
114,114,0,2,69,0,2,97,114,114,0,2,100,114,0,2,101,0,0,110,108,101,102,116,
97,114,114,111,119,0,5,114,105,103,104,116,97,114,114,111,119,0,3,113,0,4,113,0,
4,115,108,97,110,116,0,3,115,0,4,115,0,2,115,105,109,0,0,110,108,116,0,3,
114,105,0,5,101,0,1,109,105,100,0,1,111,112,102,0,2,116,0,3,105,110,0,5,
69,0,0,110,111,116,105,110,100,111,116,0,5,118,97,0,6,98,0,6,99,0,3,110,
105,0,5,118,97,0,6,98,0,6,99,0,0,110,112,97,114,0,4,97,108,108,101,108,
0,4,115,108,0,4,116,0,2,111,108,105,110,116,0,2,114,0,3,99,117,101,0,3,
101,0,0,110,112,114,101,99,0,5,101,113,0,1,114,65,114,114,0,2,97,114,114,0,
5,99,0,5,119,0,2,105,103,104,116,97,114,114,111,119,0,2,116,114,105,0,0,110,
114,116,114,105,101,0,1,115,99,0,3,99,117,101,0,3,101,0,3,114,0,2,104,111,
114,116,109,105,100,0,6,112,97,114,97,108,108,101,108,0,2,105,109,0,0,110,115,105,
109,101,0,5,113,0,2,109,105,100,0,2,112,97,114,0,2,113,115,117,98,101,0,5,
112,101,0,2,117,98,0,4,69,0,0,110,115,117,98,101,0,4,115,101,116,0,7,101,
113,0,9,113,0,3,99,99,0,5,101,113,0,3,112,0,4,69,0,0,110,115,117,112,
101,0,4,115,101,116,0,7,101,113,0,9,113,0,1,116,103,108,0,2,105,108,100,101,
0,2,108,103,0,2,114,105,97,110,103,108,101,108,101,102,116,0,0,110,116,114,105,97,
110,103,108,101,108,101,102,116,101,113,0,9,114,105,103,104,116,0,14,101,113,0,1,117,
0,2,109,0,3,101,114,111,0,3,115,112,0,1,118,68,97,115,104,0,0,110,118,72,
97,114,114,0,2,97,112,0,2,100,97,115,104,0,2,103,101,0,3,116,0,2,105,110,
102,105,110,0,2,108,65,114,114,0,3,101,0,0,110,118,108,116,0,4,114,105,101,0,
2,114,65,114,114,0,3,116,114,105,101,0,2,115,105,109,0,1,119,65,114,114,0,2,
97,114,104,107,0,4,114,0,0,110,119,97,114,114,111,119,0,2,110,101,97,114,0,0,
111,83,0,1,97,99,117,116,101,0,2,115,116,0,1,99,105,114,0,4,99,0,2,121,
0,0,111,100,97,115,104,0,2,98,108,97,99,0,2,105,118,0,2,111,116,0,2,115,
111,108,100,0,1,101,108,105,103,0,1,102,99,105,114,0,2,114,0,0,111,103,111,110,
0,2,114,97,118,101,0,2,116,0,1,104,98,97,114,0,2,109,0,1,105,110,116,0,
1,108,97,114,114,0,2,99,105,114,0,0,111,108,99,114,111,115,115,0,2,105,110,101,
0,2,116,0,1,109,97,99,114,0,2,101,103,97,0,2,105,99,114,111,110,0,3,100,
0,3,110,117,115,0,0,111,111,112,102,0,1,112,97,114,0,2,101,114,112,0,2,108,
117,115,0,1,114,0,2,97,114,114,0,2,100,0,3,101,114,0,0,111,114,100,101,114,
111,102,0,3,102,0,3,109,0,2,105,103,111,102,0,2,111,114,0,2,115,108,111,112,
101,0,2,118,0,1,115,99,114,0,0,111,115,108,97,115,104,0,2,111,108,0,1,116,
105,108,100,101,0,3,109,101,115,0,6,97,115,0,1,117,109,108,0,1,118,98,97,114,
0,0,112,97,114,0,0,112,97,114,97,0,4,108,108,101,108,0,3,115,105,109,0,4,
108,0,3,116,0,1,99,121,0,1,101,114,99,110,116,0,3,105,111,100,0,0,112,101,
114,109,105,108,0,3,112,0,3,116,101,110,107,0,1,102,114,0,1,104,105,0,3,118,
0,2,109,109,97,116,0,2,111,110,101,0,0,112,105,0,2,116,99,104,102,111,114,107,
0,2,118,0,1,108,97,110,99,107,0,6,104,0,4,107,118,0,2,117,115,0,4,97,
99,105,114,0,0,112,108,117,115,98,0,4,99,105,114,0,4,100,111,0,5,117,0,4,
101,0,4,109,110,0,4,115,105,109,0,4,116,119,111,0,0,112,109,0,1,111,105,110,
116,105,110,116,0,2,112,102,0,2,117,110,100,0,1,114,0,2,69,0,2,97,112,0,
2,99,117,101,0,0,112,114,101,0,3,99,0,4,97,112,112,114,111,120,0,4,99,117,
114,108,121,101,113,0,4,101,113,0,4,110,97,112,112,114,111,120,0,5,101,113,113,0,
5,115,105,109,0,0,112,114,101,99,115,105,109,0,2,105,109,101,0,5,115,0,2,110,
69,0,3,97,112,0,3,115,105,109,0,2,111,100,0,3,102,97,108,97,114,0,0,112,
114,111,102,108,105,110,101,0,4,115,117,114,102,0,3,112,0,4,116,111,0,2,115,105,
109,0,2,117,114,101,108,0,1,115,99,114,0,2,105,0,0,112,117,110,99,115,112,0,
0,113,102,114,0,1,105,110,116,0,1,111,112,102,0,1,112,114,105,109,101,0,1,115,
99,114,0,1,117,97,116,101,114,110,105,111,110,115,0,4,105,110,116,0,0,113,117,101,
115,116,0,5,101,113,0,2,111,116,0,0,114,65,97,114,114,0,2,114,114,0,2,116,
97,105,108,0,1,66,97,114,114,0,1,72,97,114,0,0,114,97,99,101,0,3,117,116,
101,0,2,100,105,99,0,2,101,109,112,116,121,118,0,2,110,103,0,4,100,0,4,101,
0,4,108,101,0,0,114,97,113,117,111,0,2,114,114,0,4,97,112,0,4,98,0,5,
102,115,0,4,99,0,4,102,115,0,4,104,107,0,0,114,97,114,114,108,112,0,4,112,
108,0,4,115,105,109,0,4,116,108,0,4,119,0,2,116,97,105,108,0,3,105,111,0,
5,110,97,108,115,0,0,114,98,97,114,114,0,2,98,114,107,0,2,114,97,99,101,0,
5,107,0,3,107,101,0,4,115,108,100,0,6,117,0,1,99,97,114,111,110,0,0,114,
99,101,100,105,108,0,3,105,108,0,2,117,98,0,2,121,0,1,100,99,97,0,2,108,
100,104,97,114,0,2,113,117,111,0,5,114,0,0,114,100,115,104,0,1,101,97,108,0,
4,105,110,101,0,4,112,97,114,116,0,4,115,0,2,99,116,0,2,103,0,1,102,105,
115,104,116,0,0,114,102,108,111,111,114,0,2,114,0,1,104,97,114,100,0,4,117,0,
5,108,0,2,111,0,3,118,0,1,105,103,104,116,97,114,114,111,119,0,0,114,105,103,
104,116,97,114,114,111,119,116,97,105,108,0,5,104,97,114,112,111,111,110,100,111,119,110,
0,12,117,112,0,5,108,101,102,116,97,114,114,111,119,115,0,9,104,97,114,112,111,111,
110,115,0,5,114,105,103,104,116,97,114,114,111,119,115,0,5,115,113,117,105,103,97,114,
114,111,119,0,5,116,104,114,101,101,116,105,109,101,115,0,0,114,105,110,103,0,2,115,
105,110,103,100,111,116,115,101,113,0,1,108,97,114,114,0,2,104,97,114,0,2,109,0,
1,109,111,117,115,116,0,6,97,99,104,101,0,1,110,109,105,100,0,0,114,111,97,110,
103,0,3,114,114,0,2,98,114,107,0,2,112,97,114,0,3,102,0,3,108,117,115,0,
2,116,105,109,101,115,0,1,112,97,114,0,0,114,112,97,114,103,116,0,2,112,111,108,
105,110,116,0,1,114,97,114,114,0,1,115,97,113,117,111,0,2,99,114,0,2,104,0,
2,113,98,0,3,117,111,0,0,114,115,113,117,111,114,0,1,116,104,114,101,101,0,2,
105,109,101,115,0,2,114,105,0,4,101,0,4,102,0,4,108,116,114,105,0,1,117,108,
117,104,97,114,0,0,114,120,0,0,115,97,99,117,116,101,0,1,98,113,117,111,0,1,
99,0,2,69,0,2,97,112,0,3,114,111,110,0,2,99,117,101,0,0,115,99,101,0,
3,100,105,108,0,2,105,114,99,0,2,110,69,0,3,97,112,0,3,115,105,109,0,2,
112,111,108,105,110,116,0,2,115,105,109,0,0,115,99,121,0,1,100,111,116,0,4,98,
0,4,101,0,1,101,65,114,114,0,2,97,114,104,107,0,4,114,0,5,111,119,0,0,
115,101,99,116,0,2,109,105,0,2,115,119,97,114,0,2,116,109,105,110,117,115,0,4,
110,0,2,120,116,0,1,102,114,0,3,111,119,110,0,0,115,104,97,114,112,0,2,99,
104,99,121,0,3,121,0,2,111,114,116,109,105,100,0,5,112,97,114,97,108,108,101,108,
0,2,121,0,1,105,103,109,97,0,5,102,0,0,115,105,103,109,97,118,0,2,109,0,
3,100,111,116,0,3,101,0,4,113,0,3,103,0,4,69,0,3,108,0,0,115,105,109,
108,69,0,3,110,101,0,3,112,108,117,115,0,3,114,97,114,114,0,1,108,97,114,114,
0,1,109,97,108,108,115,101,116,109,105,110,117,115,0,3,115,104,112,0,2,101,112,97,
114,115,108,0,0,115,109,105,100,0,3,108,101,0,2,116,0,3,101,0,4,115,0,1,
111,102,116,99,121,0,2,108,0,3,98,0,0,115,111,108,98,97,114,0,2,112,102,0,
1,112,97,100,101,115,0,6,117,105,116,0,3,114,0,1,113,99,97,112,0,5,115,0,
3,117,112,0,0,115,113,99,117,112,115,0,2,115,117,98,0,5,101,0,5,115,101,116,
0,8,101,113,0,4,112,0,5,101,0,5,115,101,116,0,0,115,113,115,117,112,115,101,
116,101,113,0,2,117,0,3,97,114,101,0,5,102,0,3,102,0,1,114,97,114,114,0,
1,115,99,114,0,2,101,116,109,110,0,0,115,115,109,105,108,101,0,2,116,97,114,102,
0,1,116,97,114,0,4,102,0,2,114,97,105,103,104,116,101,112,115,105,108,111,110,0,
8,112,104,105,0,3,110,115,0,1,117,98,0,0,115,117,98,69,0,3,100,111,116,0,
3,101,0,4,100,111,116,0,3,109,117,108,116,0,3,110,69,0,4,101,0,3,112,108,
117,115,0,0,115,117,98,114,97,114,114,0,3,115,101,116,0,6,101,113,0,8,113,0,
6,110,101,113,0,9,113,0,4,105,109,0,4,117,98,0,0,115,117,98,115,117,112,0,
2,99,99,0,4,97,112,112,114,111,120,0,4,99,117,114,108,121,101,113,0,4,101,113,
0,4,110,97,112,112,114,111,120,0,5,101,113,113,0,5,115,105,109,0,0,115,117,99,
99,115,105,109,0,2,109,0,2,110,103,0,2,112,0,3,49,0,3,50,0,3,51,0,
3,69,0,0,115,117,112,100,111,116,0,4,115,117,98,0,3,101,0,4,100,111,116,0,
3,104,115,111,108,0,5,117,98,0,3,108,97,114,114,0,3,109,117,108,116,0,0,115,
117,112,110,69,0,4,101,0,3,112,108,117,115,0,3,115,101,116,0,6,101,113,0,8,
113,0,6,110,101,113,0,9,113,0,0,115,117,112,115,105,109,0,4,117,98,0,5,112,
0,1,119,65,114,114,0,2,97,114,104,107,0,4,114,0,5,111,119,0,2,110,119,97,
114,0,0,115,122,108,105,103,0,0,116,97,114,103,101,116,0,2,117,0,1,98,114,107,
0,1,99,97,114,111,110,0,2,101,100,105,108,0,2,121,0,1,100,111,116,0,0,116,
101,108,114,101,99,0,1,102,114,0,1,104,101,114,101,52,0,5,102,111,114,101,0,3,
116,97,0,5,115,121,109,0,5,118,0,2,105,99,107,97,112,112,114,111,120,0,0,116,
104,105,99,107,115,105,109,0,3,110,115,112,0,2,107,97,112,0,3,115,105,109,0,2,
111,114,110,0,1,105,108,100,101,0,2,109,101,115,0,5,98,0,0,116,105,109,101,115,
98,97,114,0,5,100,0,2,110,116,0,1,111,101,97,0,2,112,0,3,98,111,116,0,
3,99,105,114,0,3,102,0,0,116,111,112,102,111,114,107,0,2,115,97,0,1,112,114,
105,109,101,0,1,114,97,100,101,0,2,105,97,110,103,108,101,0,8,100,111,119,110,0,
8,108,101,102,116,0,12,101,113,0,0,116,114,105,97,110,103,108,101,113,0,8,114,105,
103,104,116,0,13,101,113,0,3,100,111,116,0,3,101,0,3,109,105,110,117,115,0,3,
112,108,117,115,0,3,115,98,0,0,116,114,105,116,105,109,101,0,2,112,101,122,105,117,
109,0,1,115,99,114,0,3,121,0,2,104,99,121,0,2,116,114,111,107,0,1,119,105,
120,116,0,2,111,104,101,97,100,108,101,102,116,97,114,114,111,119,0,0,116,119,111,104,
101,97,100,114,105,103,104,116,97,114,114,111,119,0,0,117,65,114,114,0,1,72,97,114,
0,1,97,99,117,116,101,0,2,114,114,0,1,98,114,99,121,0,3,101,118,101,0,1,
99,105,114,99,0,0,117,99,121,0,1,100,97,114,114,0,2,98,108,97,99,0,2,104,
97,114,0,1,102,105,115,104,116,0,2,114,0,1,103,114,97,118,101,0,1,104,97,114,
108,0,0,117,104,97,114,114,0,2,98,108,107,0,1,108,99,111,114,110,0,6,101,114,
0,3,114,111,112,0,2,116,114,105,0,1,109,97,99,114,0,2,108,0,0,117,111,103,
111,110,0,2,112,102,0,1,112,97,114,114,111,119,0,2,100,111,119,110,97,114,114,111,
119,0,2,104,97,114,112,111,111,110,108,101,102,116,0,9,114,105,103,104,116,0,2,108,
117,115,0,2,115,105,0,0,117,112,115,105,104,0,4,108,111,110,0,2,117,112,97,114,
114,111,119,115,0,1,114,99,111,114,110,0,6,101,114,0,3,114,111,112,0,2,105,110,
103,0,2,116,114,105,0,0,117,115,99,114,0,1,116,100,111,116,0,2,105,108,100,101,
0,2,114,105,0,4,102,0,1,117,97,114,114,0,2,109,108,0,1,119,97,110,103,108,
101,0,0,118,65,114,114,0,1,66,97,114,0,4,118,0,1,68,97,115,104,0,1,97,
110,103,114,116,0,2,114,101,112,115,105,108,111,110,0,3,107,97,112,112,97,0,3,110,
111,116,104,105,110,103,0,0,118,97,114,112,104,105,0,4,105,0,4,114,111,112,116,111,
0,3,114,0,4,104,111,0,3,115,105,103,109,97,0,4,117,98,115,101,116,110,101,113,
0,12,113,0,0,118,97,114,115,117,112,115,101,116,110,101,113,0,12,113,0,3,116,104,
101,116,97,0,4,114,105,97,110,103,108,101,108,101,102,116,0,11,114,105,103,104,116,0,
1,99,121,0,1,100,97,115,104,0,1,101,101,0,0,118,101,101,98,97,114,0,3,101,
113,0,2,108,108,105,112,0,2,114,98,97,114,0,3,116,0,1,102,114,0,1,108,116,
114,105,0,1,110,115,117,98,0,0,118,110,115,117,112,0,1,111,112,102,0,1,112,114,
111,112,0,1,114,116,114,105,0,1,115,99,114,0,2,117,98,110,69,0,5,101,0,3,
112,110,69,0,0,118,115,117,112,110,101,0,1,122,105,103,122,97,103,0,0,119,99,105,
114,99,0,1,101,100,98,97,114,0,3,103,101,0,5,113,0,2,105,101,114,112,0,1,
102,114,0,0,119,111,112,102,0,1,112,0,1,114,0,2,101,97,116,104,0,1,115,99,
114,0,0,120,99,97,112,0,2,105,114,99,0,2,117,112,0,0,120,100,116,114,105,0,
1,102,114,0,1,104,65,114,114,0,2,97,114,114,0,1,105,0,1,108,65,114,114,0,
2,97,114,114,0,1,109,97,112,0,0,120,110,105,115,0,1,111,100,111,116,0,2,112,
102,0,3,108,117,115,0,2,116,105,109,101,0,1,114,65,114,114,0,2,97,114,114,0,
1,115,99,114,0,0,120,115,113,99,117,112,0,1,117,112,108,117,115,0,2,116,114,105,
0,1,118,101,101,0,1,119,101,100,103,101,0,0,121,97,99,117,116,101,0,3,121,0,
1,99,105,114,99,0,0,121,99,121,0,1,101,110,0,1,102,114,0,1,105,99,121,0,
1,111,112,102,0,1,115,99,114,0,1,117,99,121,0,2,109,108,0,0,122,97,99,117,
116,101,0,1,99,97,114,111,110,0,2,121,0,1,100,111,116,0,1,101,101,116,114,102,
0,2,116,97,0,1,102,114,0,1,104,99,121,0,0,122,105,103,114,97,114,114,0,1,
111,112,102,0,1,115,99,114,0,1,119,106,0,2,110,106,0
};
static const uint16_t groups[]={
0,45,97,149,198,258,314,403,483,529,580,650,737,834,921,978,1021,1093,1152,1222,1262,1319,1376,1443,
1492,1539,1600,1641,1684,1730,1796,1873,1949,2034,2101,2198,2246,2294,2390,2452,2530,2614,2703,2793,2861,2938,2992,3055,
3110,3164,3230,3275,3316,3381,3463,3526,3604,3666,3708,3784,3848,3904,3952,3990,4054,4105,4155,4214,4291,4351,4389,4452,
4495,4538,4581,4635,4667,4709,4742,4772,4813,4848,4893,4948,4991,5033,5080,5146,5200,5239,5270,5299,5330,5362,5397,5435,
5471,5508,5550,5596,5636,5681,5732,5768,5809,5845,5885,5928,5988,6038,6080,6126,6167,6215,6268,6336,6376,6429,6464,6499,
6537,6574,6625,6670,6713,6773,6817,6854,6887,6927,6964,6997,7035,7065,7102,7147,7200,7240,7289,7351,7397,7435,7480,7519,
7567,7606,7646,7689,7731,7772,7813,7847,7886,7927,7966,8037,8093,8135,8179,8218,8264,8308,8381,8422,8464,8496,8538,8584,
8622,8678,8715,8756,8795,8853,8890,8927,8966,9008,9044,9079,9114,9162,9194,9228,9266,9310,9356,9394,9427,9474,9524,9565,
9608,9649,9691,9731,9774,9810,9850,9894,9933,9972,10012,10048,10085,10133,10174,10216,10268,10311,10349,10382,10422,10462,10501,10540,
10580,10672,10723,10764,10808,10853,10891,10932,10967,11007,11053,11084,11140,11172,11212,11248,11291,11341,11379,11416,11468,11499,11542,11578,
11618,11662,11710,11754,11792,11842,11889,11947,12005,12050,12092,12151,12199,12242,12295,12340,12398,12441,12484,12531,12569,12610,12653,12702,
12739,12782
};
static const uint16_t refs[]={
32768,32771,32773,8,32779,14,17,32789,24,27,30,33,36,40,32811,46,
50,32821,32824,59,62,65,68,71,74,77,80,84,88,74,91,94,
32865,100,103,106,109,112,32883,118,121,124,127,130,109,133,136,139,
142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,188,
191,106,194,197,200,203,206,209,212,215,218,221,224,227,231,234,
237,240,242,245,248,251,255,258,261,166,255,264,267,270,212,273,
276,279,282,285,288,291,294,297,300,303,306,309,312,315,318,321,
324,327,330,333,264,336,340,343,33114,33117,352,33123,358,361,364,33136,
371,374,377,380,383,386,390,393,396,399,402,405,408,33179,414,417,
420,423,427,430,433,437,440,440,443,33214,448,451,454,457,460,463,
466,469,473,476,480,483,486,489,492,495,498,501,505,508,511,514,
516,519,522,525,528,522,531,91,534,537,540,543,33314,33317,552,555,
558,33329,558,564,567,282,570,573,576,579,582,585,588,592,595,598,
601,33372,607,610,613,617,621,625,628,631,634,637,640,643,646,650,
654,658,33429,663,666,669,672,675,678,681,684,687,690,693,696,699,
702,705,708,711,714,717,720,723,726,729,732,735,738,741,744,747,
750,753,756,267,270,759,762,765,768,771,774,777,781,784,787,790,
793,796,273,276,279,799,803,806,672,809,812,815,818,821,824,827,
830,834,837,827,841,844,847,850,853,856,859,859,859,859,505,815,
862,864,868,871,874,877,880,883,886,889,892,895,900,903,906,909,
914,919,922,927,930,935,940,943,948,951,954,957,960,965,970,973,
978,983,986,991,994,997,1000,1005,1008,1013,1016,1021,1024,1029,1032,1035,
1040,1043,1048,1053,1056,1059,1062,1065,1068,1071,33843,1078,1081,33852,33855,1090,
1093,1096,33868,1103,1106,1109,1112,1116,1119,1122,1125,33897,33900,1135,33906,1141,
1144,1147,1150,1153,1156,1159,1163,1166,1169,519,1172,1175,1178,1181,1184,1187,
1190,1193,157,1196,1199,1203,33974,1208,1212,1215,1219,33990,1225,1228,1231,1234,
1237,1240,1243,1246,1249,1252,1255,1246,1258,1261,1264,1267,1270,1273,1276,1279,
1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,282,
1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,
297,690,1264,1376,1379,1382,1385,1389,1392,1395,1398,1401,1404,1407,1410,1413,
1417,1420,1420,1423,1426,1429,1432,1435,1249,1438,1441,1444,1447,1441,34218,1453,
1456,1459,1462,1464,1467,1470,1473,1476,1480,1483,1486,1491,1494,1497,1500,1503,
1506,1510,1513,1517,34288,1523,1526,1529,1532,34303,1538,1541,1544,34316,1551,1554,
1556,1559,1562,1565,1568,1571,1574,1376,1578,1581,1584,1587,1590,1593,288,291,
1596,1599,1602,1605,1608,1611,1615,34386,1621,1624,1627,1630,1633,1636,1639,1639,
1642,1645,1647,1650,1653,1656,1660,1664,1668,1671,1674,1677,1681,1685,1689,1693,
1696,1700,1704,1707,1710,34481,1716,1719,1722,1726,1730,1734,1737,1740,1743,1746,
1749,859,1752,1755,1758,1761,34533,1768,1771,1774,1779,34550,32999,1785,34556,40,
1791,34563,1798,1798,1801,1804,1807,32771,1810,1813,1816,1819,1822,1825,1828,1825,
1831,1834,1837,1840,1843,1846,1849,1852,1855,1858,1861,1864,1867,43,1870,1873,
1876,1503,1880,1883,1886,1889,1892,1503,1886,34662,1897,1901,1503,191,34671,34674,
178,1909,1912,1915,1918,1921,1924,1927,1930,1933,1933,1559,1936,1915,1939,1942,
71,71,1945,1918,74,1948,1951,1954,1957,576,1961,1565,1964,1967,1970,1973,
1976,1979,1982,1985,1636,1674,1988,1991,430,1994,1997,2000,2003,2006,2009,2012,
2015,2018,2021,2025,2030,2033,1590,1590,2037,2040,2043,2046,2049,2052,2055,2058,
2061,2064,2067,2070,2073,2076,2079,2082,2085,2088,2091,2094,2097,2100,2103,2106,
2109,2112,528,2115,2118,2121,2124,2127,2130,2133,2136,2139,2142,2145,2148,2151,
2154,2157,2160,2163,2166,1921,88,34937,2172,2176,1924,1927,2179,2181,2184,2187,
2187,91,2190,534,534,2193,2196,2199,2202,2205,2208,2211,2214,2220,511,2223,
2226,34997,2232,2235,2238,2241,32895,2244,35015,130,2250,2254,2257,2257,2260,2263,
2266,2269,2272,2275,2278,1222,2281,2284,2287,2290,2272,2293,2296,2299,2302,2302,
2305,50,50,2307,2309,2311,1382,2311,172,1500,2314,169,2317,175,32865,2321,
2324,2327,2330,2334,2337,2340,2343,2346,2349,2352,2355,2358,2361,2364,2367,2370,
2373,2376,2379,2382,2385,2391,2394,2355,2358,2397,2400,35171,2361,2391,2397,2400,
148,2406,2409,264,2412,2415,2418,297,2421,723,2424,237,2427,2430,248,206,
2433,2436,35207,2442,2445,2448,2451,708,1282,245,245,2455,2455,255,2458,2461,
2464,35232,2467,2467,2470,2473,2476,2479,2481,234,261,2485,2488,2491,2494,65,
297,2433,708,1282,1219,2497,2500,2503,2507,2510,2513,2516,2519,1997,303,1255,
2522,2525,2528,2436,2485,35299,2534,2537,2540,35311,2546,2549,2552,417,2555,2558,
2562,35333,2568,2571,2574,2577,2580,2583,2586,2589,2592,2592,2592,2595,2598,2601,
2604,2607,2610,2613,2617,2620,2623,2626,2626,2629,2540,2546,396,2568,2583,2632,
2634,163,2637,2640,2643,2646,2649,261,396,2652,35423,35426,2661,2664,414,402,
417,2555,2666,2669,2672,2676,2680,2684,2688,2692,2695,2698,2702,2705,2708,437,
2712,2715,2718,35489,2724,35495,2730,2733,2736,2739,2742,35513,2748,2751,2754,2757,
2760,2763,2766,2769,2772,486,2776,2779,2782,2458,2785,2788,2791,2794,2797,480,
483,480,486,495,495,2800,2803,2806,2809,2812,2818,2821,505,473,2825,2828,
492,2831,2834,2837,2840,2843,2843,2846,2846,2840,2849,2852,240,2856,498,2859,
2862,33214,2865,2868,2871,2874,2877,2785,2880,2871,483,2776,492,498,2883,2883,
270,1653,2721,522,2889,717,2892,2895,2898,2901,2904,2904,2907,2910,2913,2917,
2920,2923,2926,2929,2932,2935,2939,2942,2898,2946,2949,2421,35720,579,35723,2958,
2961,35732,270,2967,35739,567,2974,2977,2980,2983,2986,2989,558,595,558,2992,
2995,2998,371,3001,3004,3007,2992,573,3010,1758,3010,3013,3016,3019,3022,3025,
3029,3016,35800,3035,371,3039,3042,3045,3048,371,582,3051,3054,35825,3060,3063,
3066,3070,3073,3077,3081,3084,3087,3090,3093,3096,3099,3103,3106,3109,3112,3116,
784,267,3120,3123,762,3126,3129,3132,3135,672,3138,687,3141,687,3144,35915,
690,693,3150,3153,2929,3156,3159,3162,3165,3168,3171,3174,3177,3183,3186,3189,
3191,3193,3196,3199,3202,3205,699,3189,3208,3211,1116,1942,3214,3217,3220,3223,
690,3165,315,753,3226,717,696,1252,2895,3229,759,3223,762,771,771,3232,
3235,3238,3241,3244,3250,3144,3253,759,3126,765,774,3256,714,3259,765,3263,
315,753,3266,3269,3272,815,3226,2473,3275,3278,3281,3284,3284,3287,3290,3290,
3293,3293,3287,3296,3299,3302,702,790,793,3305,796,3156,3308,3311,3314,3318,
3321,3324,1554,3327,3327,1991,3330,3332,696,2497,1252,3335,3338,3341,3344,3347,
809,774,3351,3354,3191,1119,3357,3360,33429,3363,3366,3253,3229,3369,3372,3375,
3378,3381,738,2000,3384,3387,3390,3390,3396,36167,3402,3405,3405,1294,1294,333,
726,1593,3408,3411,3414,3417,1831,3420,3424,36195,1642,1901,3430,32898,3433,2127,
2488,3436,3439,2907,834,3442,3445,834,3449,1771,3453,3456,3456,3459,3464,914,
3469,3472,3475,3480,960,3485,3488,3491,221,3494,3497,1065,3502,3507,3512,1065,
3515,3515,874,33639,930,935,3518,3521,3524,1062,3527,3532,3535,3538,892,3541,
3544,1599,1599,3547,880,3552,895,900,900,3555,909,906,906,909,922,922,
927,903,903,3472,3559,3562,1249,3565,3568,1249,3571,3469,3574,3579,3582,954,
3579,3559,954,3574,965,965,951,970,951,940,948,1068,3585,36357,889,3592,
3597,889,3602,3605,994,994,3608,3611,886,886,3614,3619,3624,983,991,986,
983,986,3485,3627,3630,3635,3627,997,1005,1032,1040,1035,3640,1068,886,1056,
1059,1059,1068,886,1013,1021,3644,3647,1029,1024,1029,3647,1032,1035,3652,3655,
1053,1048,1053,3655,919,36428,957,940,948,997,1005,3663,3666,3668,3671,3674,
3677,3680,3685,3688,3693,3697,3700,3703,3708,3712,3717,3720,3725,3730,3733,1596,
1596,3736,2281,36507,2284,2287,36510,3745,2290,3748,3751,136,3754,3757,3760,3763,
3767,36538,3773,3776,1106,169,2275,3779,3782,1141,3785,3788,3791,3794,3797,139,
3800,3804,3807,142,3810,2278,3813,3816,3816,36587,36590,3825,3828,3831,3834,3816,
36605,3840,36611,145,3846,36617,3852,294,36623,294,3858,3861,1153,3864,3867,3869,
3871,1590,3874,3877,3881,3884,827,3887,3890,2712,3893,2898,3896,2898,3899,3901,
2130,3904,2491,3907,3910,33937,3913,3916,1169,3919,3922,36694,1178,3929,3932,1184,
1181,1178,3932,1184,1181,3935,3938,3941,1187,3944,1172,3938,3935,3941,1193,3947,
3950,3953,1196,1196,1187,3956,3959,3963,3966,3969,2974,3973,3977,3980,525,3984,
3987,2634,33974,1333,282,3989,2424,3992,3995,4000,1389,4003,1261,4006,4009,1261,
36780,1264,4015,1267,4018,4021,4024,2932,3308,4027,4030,4033,4036,4039,4042,1212,
1988,4045,4048,4050,4052,4055,4058,4061,4064,1273,4048,4067,4070,4073,151,151,
4076,1246,1336,1246,1327,4079,33990,4082,1288,4085,324,1321,4089,4092,4095,1264,
4033,324,1321,1270,399,4098,4036,4101,4104,2643,1270,399,4107,4110,4110,4113,
4116,4119,1276,4122,4125,4129,4132,4135,4137,4140,4098,4143,4146,1339,4050,154,
154,4101,4150,4153,1306,2003,4156,4159,4162,4165,3357,1426,4168,4171,4174,1432,
1429,4177,4180,4183,4186,4189,4192,1435,4195,4198,2494,4201,4204,2917,806,806,
36975,4210,4212,59,59,4215,4218,2769,4222,4225,4228,1642,294,36999,4234,4237,
4237,1494,4240,1497,1497,4243,4246,4249,4252,4255,4258,4261,690,59,4264,4267,
1642,4270,4273,4276,4279,4285,4288,4290,4293,4296,4300,4300,294,1395,4303,1410,
4309,1398,1401,1398,1401,1404,1407,1404,1407,1392,1392,430,430,1264,4315,59,
4270,1417,4319,1976,2629,3884,3399,4322,4325,4328,1423,4331,4334,4337,4340,4343,
4346,4322,1423,4325,4340,4337,4349,4352,4355,1426,4171,1432,1429,4186,4183,4189,
1435,1438,4358,1444,37129,37132,37135,4370,4373,4376,1447,4379,4382,4385,4388,4391,
4394,4397,4400,1444,1447,4370,4397,4394,4403,4406,4409,4412,2920,803,803,4415,
37186,4421,4424,1147,4427,4430,4433,1510,4436,4439,1480,1480,4443,4446,4446,1503,
1494,1491,1503,1494,37217,242,37220,2133,4455,4458,2977,3552,330,4461,4464,4467,
4471,4212,4474,1453,4477,2519,3381,738,4480,4153,1306,4483,4480,4486,4489,4492,
4495,4498,4501,4505,4508,4511,1954,675,1231,288,4514,37285,1376,4520,4523,37294,
4529,1581,4532,1587,4535,4538,37310,747,1315,4545,4548,4548,4551,4554,4557,33023,
4560,4563,1376,1584,747,1315,1568,4567,1602,4567,4570,4573,4573,4576,4579,4582,
4585,4589,4592,4477,1994,4570,37363,4598,291,4601,4604,285,4607,2629,3090,2592,
3884,3893,1196,1584,4095,4237,4610,4616,4622,4628,4446,732,1300,4634,1291,3810,
4637,4640,4643,1645,1645,4646,732,1024,1048,4650,1196,1300,4654,4616,4610,4628,
4622,4658,4661,4664,1810,4667,4670,4673,4677,4670,1650,1650,4681,576,1961,1565,
1979,4685,276,793,4689,273,790,3305,4692,1964,4695,1967,1970,279,796,4699,
1973,1985,1982,1636,1674,37471,4706,4709,4712,37483,4718,4722,4725,4729,4733,37504,
4739,4742,4745,4748,1755,4751,4754,4758,4761,4764,4768,4772,4775,
};
static const unsigned char values[]={
198,1,0,38,0,193,1,0,130,2,0,194,1,0,144,8,
0,132,170,7,0,192,1,0,145,7,0,128,2,0,211,84,
0,132,2,0,184,170,7,0,225,64,0,197,1,0,156,169,
7,0,212,68,0,195,1,0,196,1,0,150,68,0,231,85,
0,134,70,0,145,8,0,181,68,0,172,66,0,146,7,0,
133,170,7,0,185,170,7,0,216,5,0,206,68,0,167,8,
0,169,1,0,134,2,0,210,69,0,197,66,0,173,66,0,
140,2,0,199,1,0,136,2,0,176,68,0,138,2,0,184,
1,0,183,1,0,167,7,0,153,69,0,150,69,0,149,69,
0,151,69,0,178,68,0,157,64,0,153,64,0,183,68,0,
244,84,0,225,68,0,175,68,0,174,68,0,130,66,0,144,
68,0,179,68,0,175,84,0,158,169,7,0,211,69,0,205,
68,0,145,82,0,130,8,0,133,8,0,143,8,0,161,64,
0,161,67,0,228,85,0,142,2,0,148,8,0,135,68,0,
148,7,0,135,170,7,0,180,1,0,217,5,0,221,5,0,
96,0,220,5,0,196,69,0,198,66,0,187,170,7,0,168,
1,0,220,65,0,208,68,0,211,67,0,208,67,0,212,67,
0,248,79,0,250,79,0,249,79,0,210,67,0,168,69,0,
209,67,0,213,67,0,165,68,0,147,67,0,147,82,0,245,
67,0,145,6,0,208,82,0,222,82,0,189,67,0,214,82,
0,223,82,0,193,67,0,215,82,0,164,69,0,167,67,0,
159,169,7,0,144,2,0,202,2,0,208,1,0,201,1,0,
154,2,0,202,1,0,173,8,0,150,2,0,136,170,7,0,
200,1,0,136,68,0,146,2,0,251,75,0,171,75,0,152,
2,0,188,170,7,0,149,7,0,245,84,0,194,68,0,204,
67,0,176,66,0,243,84,0,151,7,0,203,1,0,131,68,
0,199,66,0,164,8,0,137,170,7,0,252,75,0,170,75,
0,189,170,7,0,128,68,0,177,66,0,131,8,0,62,0,
147,7,0,220,7,0,158,2,0,162,2,0,156,2,0,147,
8,0,160,2,0,138,170,7,0,217,69,0,190,170,7,0,
229,68,0,219,69,0,231,68,0,162,85,0,247,68,0,254,
84,0,243,68,0,162,169,7,0,235,68,0,170,8,0,199,
5,0,94,0,164,2,0,140,66,0,139,66,0,141,66,0,
128,74,0,166,2,0,207,68,0,149,8,0,178,2,0,129,
8,0,205,1,0,206,1,0,152,8,0,176,2,0,145,66,
0,204,1,0,170,2,0,200,66,0,172,68,0,171,68,0,
194,69,0,227,64,0,226,64,0,174,2,0,192,170,7,0,
153,7,0,144,66,0,168,2,0,134,8,0,207,1,0,180,
2,0,153,8,0,141,170,7,0,193,170,7,0,165,169,7,
0,136,8,0,132,8,0,165,8,0,140,8,0,154,7,0,
182,2,0,154,8,0,142,170,7,0,194,170,7,0,166,169,
7,0,137,8,0,60,0,185,2,0,155,7,0,234,79,0,
146,66,0,158,67,0,189,2,0,187,2,0,155,8,0,232,
79,0,144,67,0,228,67,0,198,67,0,136,70,0,230,79,
0,225,82,0,195,67,0,217,82,0,138,70,0,148,67,0,
206,82,0,163,69,0,164,67,0,218,82,0,178,69,0,207,
83,0,180,69,0,209,82,0,224,82,0,191,67,0,216,82,
0,188,67,0,210,82,0,218,69,0,230,68,0,246,68,0,
161,85,0,253,84,0,242,68,0,143,170,7,0,216,69,0,
218,67,0,191,2,0,245,79,0,247,79,0,246,79,0,195,
170,7,0,153,67,0,152,67,0,176,67,0,193,2,0,234,
68,0,133,82,0,156,8,0,223,64,0,179,66,0,144,170,
7,0,147,68,0,196,170,7,0,156,7,0,138,8,0,195,
2,0,199,2,0,197,2,0,157,8,0,139,64,0,10,0,
145,170,7,0,224,64,0,160,1,0,149,66,0,236,85,0,
226,68,0,237,68,0,166,68,0,137,68,0,224,68,0,194,
68,184,6,0,132,68,0,239,68,0,241,68,0,231,68,184,
6,0,235,68,184,6,0,249,68,0,254,84,184,6,0,245,
68,0,206,68,184,6,0,207,68,184,6,0,234,69,0,207,
83,184,6,0,236,69,0,238,68,0,240,68,0,248,68,0,
234,68,184,6,0,253,84,184,6,0,244,68,0,162,85,184,
6,0,161,85,184,6,0,128,69,0,175,85,184,6,0,224,
69,0,140,68,0,235,69,0,208,83,184,6,0,237,69,0,
143,69,184,6,0,226,69,0,144,69,184,6,0,227,69,0,
130,69,210,65,0,136,69,0,129,69,0,176,85,184,6,0,
225,69,0,255,68,184,6,0,131,69,210,65,0,137,69,0,
193,68,0,196,68,0,199,68,0,201,68,0,164,68,0,169,
169,7,0,209,1,0,157,7,0,210,2,0,211,1,0,212,
1,0,158,8,0,208,2,0,146,170,7,0,210,1,0,204,
2,0,169,7,0,159,7,0,198,170,7,0,156,64,0,152,
64,0,212,84,0,170,169,7,0,216,1,0,213,1,0,183,
84,0,214,1,0,190,64,0,222,71,0,180,71,0,220,71,
0,130,68,0,159,8,0,147,170,7,0,166,7,0,160,7,
0,177,1,0,153,66,0,187,85,0,250,68,0,175,85,0,
252,68,0,254,68,0,179,64,0,143,68,0,157,68,0,171,
169,7,0,168,7,0,34,0,148,170,7,0,154,66,0,172,
169,7,0,144,82,0,174,1,0,212,2,0,235,79,0,160,
67,0,150,82,0,216,2,0,214,2,0,160,8,0,156,66,
0,139,68,0,203,67,0,239,82,0,161,7,0,233,79,0,
146,67,0,229,67,0,196,67,0,137,70,0,231,79,0,221,
82,0,194,67,0,213,82,0,139,70,0,162,69,0,166,67,
0,219,82,0,179,69,0,208,83,0,181,69,0,207,82,0,
220,82,0,190,67,0,212,82,0,192,67,0,211,82,0,157,
66,0,240,82,0,219,67,0,155,66,0,177,67,0,244,83,
0,169,8,0,168,8,0,172,8,0,218,2,0,188,85,0,
224,2,0,222,2,0,220,2,0,161,8,0,150,170,7,0,
145,67,0,163,7,0,152,68,0,202,170,7,0,154,68,0,
161,75,0,147,69,0,143,69,0,145,69,0,144,69,0,146,
69,0,148,69,0,174,169,7,0,198,69,0,208,69,0,134,
69,0,251,68,0,176,85,0,253,68,0,255,68,0,145,68,
0,209,69,0,131,69,0,135,69,0,222,1,0,162,66,0,
139,8,0,166,8,0,9,0,164,7,0,228,2,0,226,2,
0,162,8,0,151,170,7,0,180,68,0,152,7,0,223,64,
138,64,0,137,64,0,188,68,0,195,68,0,197,68,0,200,
68,0,203,170,7,0,219,65,0,175,169,7,0,230,2,0,
218,1,0,159,67,0,201,82,0,142,8,0,236,2,0,219,
1,0,163,8,0,240,2,0,152,170,7,0,217,1,0,234,
2,0,95,0,223,71,0,181,71,0,221,71,0,195,69,0,
142,69,0,242,2,0,204,170,7,0,146,82,0,197,67,0,
149,67,0,238,82,0,165,69,0,165,67,0,150,67,0,151,
67,0,210,7,0,165,7,0,238,2,0,176,169,7,0,232,
2,0,220,1,0,171,69,0,235,85,0,146,8,0,169,69,
0,230,85,0,193,69,0,150,64,0,163,68,0,124,0,216,
78,0,192,68,0,138,64,0,153,170,7,0,205,170,7,0,
177,169,7,0,170,69,0,244,2,0,192,69,0,154,170,7,
0,206,170,7,0,178,169,7,0,155,170,7,0,158,7,0,
207,170,7,0,179,169,7,0,175,8,0,135,8,0,174,8,
0,221,1,0,246,2,0,171,8,0,156,170,7,0,208,170,
7,0,180,169,7,0,248,2,0,150,8,0,249,2,0,253,
2,0,151,8,0,251,2,0,150,7,0,168,66,0,164,66,
0,181,169,7,0,225,1,0,131,2,0,190,68,0,190,68,
179,6,0,191,68,0,226,1,0,176,8,0,230,1,0,158,
170,7,0,224,1,0,181,66,0,177,7,0,129,2,0,191,
84,0,167,68,0,213,84,0,220,84,0,216,84,0,218,84,
0,160,68,0,164,83,0,161,68,0,168,83,0,169,83,0,
170,83,0,171,83,0,172,83,0,173,83,0,174,83,0,175,
83,0,159,68,0,190,69,0,157,83,0,162,68,0,252,70,
0,133,2,0,210,170,7,0,240,84,0,239,84,0,202,68,
0,203,68,0,39,0,229,1,0,182,169,7,0,42,0,227,
1,0,228,1,0,145,84,0,237,85,0,204,68,0,246,7,
0,181,64,0,189,68,0,205,69,0,189,69,0,133,70,0,
182,71,0,177,8,0,158,64,0,176,83,0,178,7,0,182,
66,0,236,68,0,159,170,7,0,239,75,0,128,84,0,129,
84,0,130,84,0,134,84,0,133,76,0,189,75,0,179,75,
0,132,84,0,141,82,0,235,83,0,180,75,0,190,75,0,
194,75,0,184,75,0,163,72,0,146,75,0,145,75,0,147,
75,0,136,75,0,61,229,65,0,225,68,229,65,0,144,70,
0,211,170,7,0,200,69,0,215,74,0,212,74,0,214,74,
0,211,74,0,208,74,0,230,74,0,233,74,0,228,74,0,
231,74,0,221,74,0,218,74,0,220,74,0,217,74,0,209,
74,0,236,74,0,227,74,0,224,74,0,235,74,0,226,74,
0,223,74,0,201,83,0,213,74,0,210,74,0,144,74,0,
140,74,0,229,74,0,232,74,0,172,74,0,180,74,0,159,
69,0,158,69,0,160,69,0,219,74,0,216,74,0,152,74,
0,148,74,0,130,74,0,234,74,0,225,74,0,222,74,0,
188,74,0,164,74,0,156,74,0,166,1,0,183,169,7,0,
207,64,0,92,0,197,83,0,200,79,0,162,64,0,174,85,
0,135,2,0,169,68,0,196,84,0,201,84,0,203,84,0,
199,84,0,192,84,0,169,68,128,252,3,0,193,64,0,205,
84,0,141,2,0,231,1,0,137,2,0,204,84,0,208,84,
0,139,2,0,178,83,0,162,1,0,160,170,7,0,199,8,
0,147,78,0,199,7,0,203,75,0,195,83,0,198,5,0,
215,68,0,186,67,0,187,67,0,200,73,0,155,69,0,154,
69,0,157,69,0,144,84,0,239,85,0,194,83,0,227,76,
0,58,0,44,0,64,0,129,68,0,237,84,0,212,170,7,
0,151,66,0,181,67,0,151,78,0,184,169,7,0,207,85,
0,209,85,0,208,85,0,210,85,0,239,69,0,184,82,0,
181,82,0,222,69,0,223,69,0,182,67,0,189,82,0,170,
68,0,200,84,0,198,84,0,202,84,0,141,69,0,197,84,
0,170,68,128,252,3,0,183,67,0,188,82,0,206,69,0,
207,69,0,164,1,0,177,68,0,173,70,0,229,82,0,160,
64,0,184,66,0,144,64,0,143,82,0,143,2,0,180,8,
0,202,67,0,247,84,0,176,1,0,180,7,0,177,83,0,
255,82,0,161,170,7,0,230,76,0,221,7,0,242,69,0,
247,1,0,199,69,0,210,8,0,158,70,0,141,70,0,36,
0,213,170,7,0,209,68,0,184,68,0,148,68,0,161,69,
0,159,70,0,140,70,0,185,169,7,0,213,8,0,246,83,
0,145,2,0,241,69,0,191,75,0,166,83,0,223,8,0,
255,79,0,233,1,0,238,84,0,155,2,0,214,68,0,234,
1,0,213,68,0,205,8,0,151,2,0,210,68,0,162,170,
7,0,154,85,0,232,1,0,150,85,0,152,85,0,153,85,
0,231,71,0,147,66,0,149,85,0,151,85,0,147,2,0,
133,68,0,131,64,0,132,64,0,133,64,0,203,2,0,130,
64,0,153,2,0,214,170,7,0,213,69,0,227,83,0,241,
84,0,181,7,0,245,7,0,61,0,223,68,0,248,84,0,
229,83,0,211,68,0,241,82,0,175,66,0,183,7,0,240,
1,0,235,1,0,172,65,0,33,0,196,8,0,192,76,0,
131,246,3,0,128,246,3,0,132,246,3,0,163,170,7,0,
129,246,3,0,102,106,0,237,76,0,130,246,3,0,177,75,
0,146,3,0,215,170,7,0,212,69,0,217,85,0,141,84,
0,189,1,0,211,66,0,188,1,0,213,66,0,217,66,0,
219,66,0,212,66,0,214,66,0,190,1,0,215,66,0,220,
66,0,216,66,0,218,66,0,221,66,0,222,66,0,196,64,
0,162,70,0,187,169,7,0,140,85,0,245,3,0,179,7,
0,134,85,0,159,2,0,157,2,0,179,8,0,161,2,0,
169,85,0,128,85,0,130,85,0,132,85,0,219,69,128,252,
3,0,148,85,0,164,170,7,0,183,66,0,211,8,0,146,
85,0,165,85,0,164,85,0,233,68,0,138,85,0,136,85,
0,231,69,0,216,170,7,0,138,66,0,142,85,0,144,85,
0,167,85,0,250,84,0,215,69,0,149,83,0,252,84,0,
248,82,0,233,68,128,252,3,0,202,8,0,200,82,0,173,
67,0,143,66,0,165,2,0,229,76,0,166,64,0,185,69,
0,165,170,7,0,165,82,0,166,82,0,255,67,0,187,68,
0,169,67,0,170,67,0,217,170,7,0,149,64,0,189,169,
7,0,167,2,0,195,64,0,237,1,0,238,1,0,184,8,
0,181,8,0,161,1,0,166,170,7,0,236,1,0,140,84,
0,173,68,0,220,83,0,169,66,0,179,2,0,171,2,0,
177,2,0,183,69,0,181,3,0,133,66,0,158,68,0,221,
83,0,186,69,0,151,84,0,188,84,0,209,8,0,175,2,
0,218,170,7,0,185,7,0,191,1,0,190,169,7,0,249,
69,0,245,69,0,244,69,0,243,69,0,169,2,0,214,8,
0,239,1,0,181,2,0,185,8,0,167,170,7,0,183,4,
0,219,170,7,0,191,169,7,0,216,8,0,212,8,0,186,
7,0,240,7,0,183,2,0,186,8,0,168,170,7,0,184,
2,0,197,8,0,220,8,0,220,170,7,0,192,169,7,0,
155,82,0,142,82,0,139,85,0,226,82,0,186,2,0,180,
83,0,187,7,0,145,83,0,133,85,0,171,1,0,159,82,
0,157,82,0,171,67,0,185,82,0,243,82,0,162,67,0,
171,85,0,153,82,0,173,85,0,173,85,128,252,3,0,140,
82,0,242,78,0,123,0,91,0,139,83,0,143,83,0,141,
83,0,190,2,0,188,2,0,187,8,0,182,82,0,231,82,
0,203,82,0,178,67,0,228,68,0,199,67,0,203,69,0,
168,85,0,255,84,0,129,85,0,131,85,0,218,69,128,252,
3,0,147,85,0,214,69,0,252,82,0,169,170,7,0,145,
85,0,234,82,0,132,75,0,217,8,0,235,82,0,250,75,
0,192,2,0,176,71,0,232,68,0,137,85,0,135,85,0,
230,69,0,236,79,0,253,67,0,252,79,0,172,67,0,133,
83,0,221,170,7,0,173,84,0,180,84,0,151,68,0,202,
75,0,40,0,147,83,0,237,82,0,142,64,0,191,69,0,
185,64,0,193,169,7,0,141,85,0,143,85,0,154,64,0,
194,2,0,166,85,0,249,84,0,201,69,0,246,82,0,251,
84,0,150,83,0,195,75,0,202,82,0,230,82,0,232,68,
128,252,3,0,186,68,0,175,1,0,194,76,0,160,78,0,
174,75,0,169,84,0,188,8,0,148,64,0,170,170,7,0,
167,66,0,181,1,0,240,85,0,146,68,0,170,84,0,219,
85,0,167,69,0,222,170,7,0,194,169,7,0,188,7,0,
184,69,0,217,69,184,6,0,235,68,210,65,0,205,67,0,
206,67,0,216,69,184,6,0,234,68,210,65,0,207,67,0,
175,69,0,174,69,0,196,2,0,160,68,210,65,0,240,84,
184,6,0,203,68,184,6,0,201,2,0,238,76,0,195,84,
0,200,2,0,198,2,0,237,84,184,6,0,194,84,0,189,
8,0,147,64,0,215,67,0,164,82,0,208,68,184,6,0,
168,82,0,171,170,7,0,174,67,0,242,85,0,252,69,0,
250,69,0,218,8,0,230,68,184,6,0,154,67,0,165,64,
0,223,170,7,0,172,1,0,249,69,184,6,0,245,69,184,
6,0,247,69,0,246,69,0,254,69,0,253,69,0,253,85,
229,65,0,130,68,184,6,0,148,84,0,155,67,0,179,82,
184,6,0,157,67,184,6,0,195,169,7,0,132,69,0,197,
85,184,6,0,133,69,0,198,85,184,6,0,241,1,0,189,
7,0,35,0,150,66,0,135,64,0,173,69,0,132,82,0,
205,68,210,65,0,172,69,0,229,68,210,65,0,62,210,65,
0,222,83,0,130,82,0,228,68,210,65,0,60,210,65,0,
180,69,210,65,0,131,82,0,181,69,210,65,0,188,68,210,
65,0,214,67,0,163,82,0,167,82,0,243,1,0,244,1,
0,190,8,0,209,2,0,184,84,0,188,83,0,211,2,0,
191,83,0,172,170,7,0,219,5,0,242,1,0,193,83,0,
181,83,0,190,83,0,187,83,0,192,83,0,205,2,0,201,
7,0,191,7,0,182,83,0,224,170,7,0,183,83,0,185,
83,0,168,68,0,221,84,0,180,66,0,170,1,0,186,1,
0,182,69,0,214,84,0,215,84,0,219,84,0,248,1,0,
152,69,0,245,1,0,182,84,0,246,1,0,189,70,0,182,
1,0,243,85,0,253,85,0,191,8,0,37,0,46,0,176,
64,0,177,64,0,173,170,7,0,198,7,0,213,7,0,142,
76,0,192,7,0,214,7,0,142,66,0,43,0,163,84,0,
162,84,0,165,84,0,242,84,0,166,84,0,167,84,0,149,
84,0,225,170,7,0,163,1,0,179,85,0,183,85,0,185,
85,0,181,85,0,232,69,0,178,64,0,174,70,0,146,70,
0,147,70,0,176,69,0,197,169,7,0,200,7,0,136,64,
0,174,170,7,0,226,170,7,0,215,64,0,198,169,7,0,
150,84,0,63,0,156,82,0,228,82,0,189,68,177,6,0,
213,2,0,179,83,0,146,83,0,165,83,0,187,1,0,245,
82,0,160,82,0,179,82,0,158,82,0,197,82,0,244,82,
0,163,67,0,157,67,0,154,82,0,182,68,0,243,78,0,
125,0,93,0,140,83,0,142,83,0,144,83,0,217,2,0,
215,2,0,192,8,0,183,82,0,233,82,0,179,67,0,173,
75,0,253,82,0,175,170,7,0,236,82,0,193,7,0,241,
7,0,201,67,0,204,69,0,218,5,0,143,64,0,177,71,
0,238,85,0,237,79,0,254,67,0,134,83,0,227,170,7,
0,174,84,0,181,84,0,41,0,148,83,0,146,84,0,186,
64,0,199,169,7,0,202,69,0,185,75,0,206,83,0,232,
82,0,158,66,0,219,2,0,180,85,0,184,85,0,225,2,
0,223,2,0,221,2,0,182,85,0,186,85,0,233,69,0,
147,84,0,193,8,0,197,69,0,230,84,0,216,67,0,167,
1,0,59,0,169,82,0,182,78,0,176,170,7,0,239,76,
0,201,8,0,200,8,0,173,1,0,195,7,0,194,7,0,
234,84,0,158,85,0,160,85,0,157,85,0,159,85,0,198,
68,0,164,84,0,242,82,0,179,84,0,228,83,0,163,70,
0,170,85,0,172,85,0,172,85,128,252,3,0,204,8,0,
47,0,196,83,0,191,70,0,228,170,7,0,224,76,0,147,
69,128,252,3,0,148,69,128,252,3,0,200,169,7,0,134,
76,0,130,69,0,197,85,0,189,85,0,195,85,0,193,85,
0,203,85,0,138,69,0,191,85,0,249,82,0,199,85,0,
213,85,0,211,85,0,234,76,0,185,1,0,178,1,0,179,
1,0,198,85,0,190,85,0,216,85,0,196,85,0,201,79,
0,215,85,0,251,82,0,194,85,0,204,85,0,139,69,0,
192,85,0,200,85,0,212,85,0,214,85,0,217,67,0,170,
82,0,223,1,0,150,70,0,196,7,0,229,2,0,227,2,
0,194,8,0,149,70,0,177,170,7,0,184,7,0,209,7,
0,254,1,0,215,1,0,177,84,0,176,84,0,182,70,0,
241,85,0,229,170,7,0,218,85,0,180,64,0,181,75,0,
220,68,0,236,75,0,186,84,0,185,84,0,205,83,0,187,
84,0,226,71,0,201,169,7,0,198,8,0,219,8,0,231,
2,0,227,82,0,250,1,0,222,8,0,237,2,0,251,1,
0,195,8,0,241,2,0,254,82,0,178,170,7,0,249,1,
0,128,75,0,156,70,0,143,70,0,248,75,0,235,2,0,
243,2,0,230,170,7,0,197,7,0,200,67,0,157,70,0,
142,70,0,239,2,0,249,75,0,202,169,7,0,240,69,0,
233,2,0,252,1,0,167,83,0,232,85,0,233,85,0,156,
83,0,138,69,128,252,3,0,203,85,128,252,3,0,139,69,
128,252,3,0,204,85,128,252,3,0,178,8,0,187,69,0,
218,68,0,238,69,0,179,170,7,0,231,170,7,0,203,169,
7,0,154,83,0,245,2,0,223,84,0,217,68,0,152,66,
0,180,170,7,0,232,170,7,0,204,169,7,0,181,170,7,
0,190,7,0,251,69,0,233,170,7,0,205,169,7,0,253,
1,0,207,8,0,247,2,0,203,8,0,165,1,0,182,170,
7,0,215,8,0,234,170,7,0,206,169,7,0,206,8,0,
255,1,0,250,2,0,254,2,0,183,8,0,252,2,0,182,
7,0,183,170,7,0,182,8,0,221,67,0,235,170,7,0,
207,169,7,0,141,64,0,140,64,0,
};
/* Return a value offset and a legacy flag, or -1. */
static int lookup(const unsigned char *s, unsigned n) {
 unsigned lo=0,hi=sizeof(refs)/sizeof(refs[0]);
 while(lo<hi) {
  unsigned mid=(lo+hi)/2;
  const unsigned char *p=names+groups[mid/8];
  unsigned char key[32]; unsigned len=0;
  for(unsigned k=0;k<=mid%8;k++) {
   len=*p++;
   while(*p) key[len++]=*p++;
   p++;
  }
  unsigned j=0;
  while(j<len && j<n && key[j]==s[j]) j++;
  int cmp=(j<len && j<n)?(int)key[j]-(int)s[j]:(int)len-(int)n;
  if(cmp<0) lo=mid+1;
  else if(cmp>0) hi=mid;
  else return refs[mid];
 }
 return -1;
}
static unsigned utf8(unsigned o,uint32_t c) {
 if(c<128) buffer[o++]=c;
 else if(c<2048) { buffer[o++]=192|(c>>6); buffer[o++]=128|(c&63); }
 else if(c<65536) { buffer[o++]=224|(c>>12); buffer[o++]=128|((c>>6)&63); buffer[o++]=128|(c&63); }
 else { buffer[o++]=240|(c>>18); buffer[o++]=128|((c>>12)&63); buffer[o++]=128|((c>>6)&63); buffer[o++]=128|(c&63); }
 return o;
}
static const uint16_t c1[]={8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376};
EXPORT uint64_t render(uint32_t len) {
 const unsigned char *in=buffer+209744;
 if(len>1048576) len=1048576;
 unsigned i=0,o=0;
 while(i<len) {
  if(in[i]!=&#39;&&#39;) {
   if(len-i>=16) {
    v128_t v=wasm_v128_load(in+i);
    unsigned mask=wasm_i8x16_bitmask(wasm_i8x16_eq(v,wasm_i8x16_splat(&#39;&&#39;)));
    if(!mask) { wasm_v128_store(buffer+o,v); i+=16; o+=16; continue; }
    unsigned count=__builtin_ctz(mask);
    for(unsigned k=0;k<count;k++) buffer[o++]=in[i++];
    if(count) continue;
   }
   buffer[o++]=in[i++]; continue;
  }
  if(i+1<len && in[i+1]==&#39;#&#39;) {
   unsigned j=i+2,base=10;
   if(j<len && (in[j]|32)==&#39;x&#39;) { base=16;j++; }
   unsigned start=j; uint32_t c=0;
   while(j<len) {
    unsigned d=in[j]-&#39;0&#39;;
    if(d>9) { d=(in[j]|32)-&#39;a&#39;+10; if(base!=16 || d<10 || d>15) break; }
    c=c*base+d; if(c>0x110000) c=0x110000;
    j++;
   }
   if(j!=start) {
    if(j<len && in[j]==&#39;;&#39;) j++;
    if(c>=128 && c<=159) c=c1[c-128];
    else if(!c || (c>=0xd800 && c<=0xdfff) || c>0x10ffff) c=0xfffd;
    o=utf8(o,c); i=j;continue;
   }
  } else {
   unsigned j=i+1;
   while(j<len && j-i<=31) {
    unsigned c=in[j];
    if(!((c>=&#39;0&#39; && c<=&#39;9&#39;) || ((c|32)>=&#39;a&#39; && (c|32)<=&#39;z&#39;))) break;
    j++;
   }
   int ref=-1; unsigned used=0;
   if(j<len && in[j]==&#39;;&#39;) { ref=lookup(in+i+1,j-i-1); if(ref>=0) used=j-i+1; }
   if(!used) {
    unsigned n=j-i-1; if(n>6) n=6;
    for(;n>=2;n--) {
     ref=lookup(in+i+1,n);
     if(ref>=0 && (ref&32768)) { used=n+1;break; }
    }
   }
   if(used) {
    const unsigned char *v=values+(ref&32767);
    for(;;) {
     uint32_t c=0; unsigned s=0,b;
     do { b=*v++; c|=(uint32_t)(b&127)<<s; s+=7; } while(b&128);
     if(!c) break;
     o=utf8(o,c);
    }
    i+=used;continue;
   }
  }
  buffer[o++]=in[i++];
 }
 return ((uint64_t)(uint32_t)buffer<<32)|o;
}

Run it on the example input with qipdo (Node.js 22 or newer):

printf '%s' 'Fish &amp; chips &mdash; caf&eacute; &lt;3 &#x1F600; &copy 2026 &notit;' | npx qipdo calculated.world components/60ef1baed3d40e1ef7c3b2e81d58958194ba77ad905eedd6cf91bdf90689a944.wasm

20-page, size-optimised derivative of the earlier 22-page C/SIMD submission (e9ed850e). Two changes. (1) The shared buffer shrinks from a 256 KiB input lead to a 209,744-byte lead: the output can outgrow the consumed input by at most floor(1 MiB/5)=209,715 bytes (&nGt;, 5->6), so the buffer is 1,258,320 bytes and the whole module fits in 20 pages with the 16 KiB stack. (2) The deduplicated value pool is now stored as LEB128 code points (NUL-terminated; code point 0 never occurs, so 0x00 is an unambiguous terminator) instead of raw UTF-8 bytes, shrinking the pool from 5,885 to 4,778 bytes; the value copy loop decodes each code point and emits UTF-8 through the same utf8() helper used for numeric references. Unchanged from the parent: front-coded sorted names in blocks of eight with a per-block offset table, u16 refs (15-bit value offset | legacy bit), binary search, saturating numeric parsing at U+110000, Windows-1252 remapping of 0x80-0x9F, U+FFFD for 0/surrogates/>U+10FFFF, and the SIMD plain-text fast path. 24,297 bytes, 20 pages, 16 KiB stack.

Builds on
Direct derivative of the first submitter's own C/SIMD submission e9ed850e (authored with OpenAI GPT-6): same front-coded name blocks, deduplicated value pool, scanner and SIMD fast path. New here: the 20-page buffer layout and the LEB128 code-point value encoding with remapped refs.

Build details

Compiler, size, memory and checksum
Submitted
4 November 2026 at 01:54 UTC
Language
C
Compiler
Zig 0.15.2 (Clang 20.1.2) zig cc -target wasm32-freestanding -Oz -msimd128 -nostdlib -Wl,--no-entry -Wl,--export-memory -Wl,-z,stack-size=16384 -Wl,--initial-memory=1310720 -Wl,--max-memory=1310720 -Wl,--export=input_ptr -Wl,--export=input_utf8_cap -Wl,--export=output_utf8_cap -Wl,--export=render -Wl,--strip-all
Size
23.7 KiB, gzip 14.9 KiB
Download
~300 ms on Slow 4G (Lighthouse’s 1.6 Mbps, 150 ms round trips)
Memory
20 pages (1.3 MiB)
SIMD
yes
AI models
qwen3.8-27b:8bit
Functions, loops, branches and other static counts
Functions
6
Instructions
835
Loops
11
Conditional branches
47
Indirect calls
0
Memory loads
18
Memory stores
11
SIMD instructions
5
Potentially trapping instructions
31

Instruction sites in the binary, not executions, counted by qip.dev’s wasm-counts.