xref: /openbmc/linux/arch/sparc/kernel/btext.c (revision 33def849)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2c57ec52fSDavid S. Miller /*
3c57ec52fSDavid S. Miller  * Procedures for drawing on the screen early on in the boot process.
4c57ec52fSDavid S. Miller  *
5c57ec52fSDavid S. Miller  * Benjamin Herrenschmidt <benh@kernel.crashing.org>
6c57ec52fSDavid S. Miller  */
7c57ec52fSDavid S. Miller #include <linux/kernel.h>
8c57ec52fSDavid S. Miller #include <linux/string.h>
9c57ec52fSDavid S. Miller #include <linux/init.h>
10c57ec52fSDavid S. Miller #include <linux/console.h>
11c57ec52fSDavid S. Miller 
12c57ec52fSDavid S. Miller #include <asm/btext.h>
13c57ec52fSDavid S. Miller #include <asm/oplib.h>
14c57ec52fSDavid S. Miller #include <asm/io.h>
15c57ec52fSDavid S. Miller 
16c57ec52fSDavid S. Miller #define NO_SCROLL
17c57ec52fSDavid S. Miller 
18c57ec52fSDavid S. Miller #ifndef NO_SCROLL
19c57ec52fSDavid S. Miller static void scrollscreen(void);
20c57ec52fSDavid S. Miller #endif
21c57ec52fSDavid S. Miller 
22c57ec52fSDavid S. Miller static void draw_byte(unsigned char c, long locX, long locY);
23c57ec52fSDavid S. Miller static void draw_byte_32(unsigned char *bits, unsigned int *base, int rb);
24c57ec52fSDavid S. Miller static void draw_byte_16(unsigned char *bits, unsigned int *base, int rb);
25c57ec52fSDavid S. Miller static void draw_byte_8(unsigned char *bits, unsigned int *base, int rb);
26c57ec52fSDavid S. Miller 
2733def849SJoe Perches #define __force_data __section(".data")
28c57ec52fSDavid S. Miller 
29c57ec52fSDavid S. Miller static int g_loc_X __force_data;
30c57ec52fSDavid S. Miller static int g_loc_Y __force_data;
31c57ec52fSDavid S. Miller static int g_max_loc_X __force_data;
32c57ec52fSDavid S. Miller static int g_max_loc_Y __force_data;
33c57ec52fSDavid S. Miller 
34c57ec52fSDavid S. Miller static int dispDeviceRowBytes __force_data;
35c57ec52fSDavid S. Miller static int dispDeviceDepth  __force_data;
36c57ec52fSDavid S. Miller static int dispDeviceRect[4] __force_data;
37c57ec52fSDavid S. Miller static unsigned char *dispDeviceBase __force_data;
38c57ec52fSDavid S. Miller 
39c57ec52fSDavid S. Miller #define cmapsz	(16*256)
40c57ec52fSDavid S. Miller 
41c57ec52fSDavid S. Miller static unsigned char vga_font[cmapsz];
42c57ec52fSDavid S. Miller 
btext_initialize(phandle node)438d125562SAndres Salomon static int __init btext_initialize(phandle node)
44c57ec52fSDavid S. Miller {
45c57ec52fSDavid S. Miller 	unsigned int width, height, depth, pitch;
46c57ec52fSDavid S. Miller 	unsigned long address = 0;
47c57ec52fSDavid S. Miller 	u32 prop;
48c57ec52fSDavid S. Miller 
49c57ec52fSDavid S. Miller 	if (prom_getproperty(node, "width", (char *)&width, 4) < 0)
50c57ec52fSDavid S. Miller 		return -EINVAL;
51c57ec52fSDavid S. Miller 	if (prom_getproperty(node, "height", (char *)&height, 4) < 0)
52c57ec52fSDavid S. Miller 		return -EINVAL;
53c57ec52fSDavid S. Miller 	if (prom_getproperty(node, "depth", (char *)&depth, 4) < 0)
54c57ec52fSDavid S. Miller 		return -EINVAL;
55c57ec52fSDavid S. Miller 	pitch = width * ((depth + 7) / 8);
56c57ec52fSDavid S. Miller 
57c57ec52fSDavid S. Miller 	if (prom_getproperty(node, "linebytes", (char *)&prop, 4) >= 0 &&
58c57ec52fSDavid S. Miller 	    prop != 0xffffffffu)
59c57ec52fSDavid S. Miller 		pitch = prop;
60c57ec52fSDavid S. Miller 
61c57ec52fSDavid S. Miller 	if (pitch == 1)
62c57ec52fSDavid S. Miller 		pitch = 0x1000;
63c57ec52fSDavid S. Miller 
64c57ec52fSDavid S. Miller 	if (prom_getproperty(node, "address", (char *)&prop, 4) >= 0)
65c57ec52fSDavid S. Miller 		address = prop;
66c57ec52fSDavid S. Miller 
67c57ec52fSDavid S. Miller 	/* FIXME: Add support for PCI reg properties. Right now, only
68c57ec52fSDavid S. Miller 	 * reliable on macs
69c57ec52fSDavid S. Miller 	 */
70c57ec52fSDavid S. Miller 	if (address == 0)
71c57ec52fSDavid S. Miller 		return -EINVAL;
72c57ec52fSDavid S. Miller 
73c57ec52fSDavid S. Miller 	g_loc_X = 0;
74c57ec52fSDavid S. Miller 	g_loc_Y = 0;
75c57ec52fSDavid S. Miller 	g_max_loc_X = width / 8;
76c57ec52fSDavid S. Miller 	g_max_loc_Y = height / 16;
77c57ec52fSDavid S. Miller 	dispDeviceBase = (unsigned char *)address;
78c57ec52fSDavid S. Miller 	dispDeviceRowBytes = pitch;
79c57ec52fSDavid S. Miller 	dispDeviceDepth = depth == 15 ? 16 : depth;
80c57ec52fSDavid S. Miller 	dispDeviceRect[0] = dispDeviceRect[1] = 0;
81c57ec52fSDavid S. Miller 	dispDeviceRect[2] = width;
82c57ec52fSDavid S. Miller 	dispDeviceRect[3] = height;
83c57ec52fSDavid S. Miller 
84c57ec52fSDavid S. Miller 	return 0;
85c57ec52fSDavid S. Miller }
86c57ec52fSDavid S. Miller 
87c57ec52fSDavid S. Miller /* Calc the base address of a given point (x,y) */
calc_base(int x,int y)88c57ec52fSDavid S. Miller static unsigned char * calc_base(int x, int y)
89c57ec52fSDavid S. Miller {
90c57ec52fSDavid S. Miller 	unsigned char *base = dispDeviceBase;
91c57ec52fSDavid S. Miller 
92c57ec52fSDavid S. Miller 	base += (x + dispDeviceRect[0]) * (dispDeviceDepth >> 3);
93c57ec52fSDavid S. Miller 	base += (y + dispDeviceRect[1]) * dispDeviceRowBytes;
94c57ec52fSDavid S. Miller 	return base;
95c57ec52fSDavid S. Miller }
96c57ec52fSDavid S. Miller 
btext_clearscreen(void)97c57ec52fSDavid S. Miller static void btext_clearscreen(void)
98c57ec52fSDavid S. Miller {
99c57ec52fSDavid S. Miller 	unsigned int *base	= (unsigned int *)calc_base(0, 0);
100c57ec52fSDavid S. Miller 	unsigned long width 	= ((dispDeviceRect[2] - dispDeviceRect[0]) *
101c57ec52fSDavid S. Miller 					(dispDeviceDepth >> 3)) >> 2;
102c57ec52fSDavid S. Miller 	int i,j;
103c57ec52fSDavid S. Miller 
104c57ec52fSDavid S. Miller 	for (i=0; i<(dispDeviceRect[3] - dispDeviceRect[1]); i++)
105c57ec52fSDavid S. Miller 	{
106c57ec52fSDavid S. Miller 		unsigned int *ptr = base;
107c57ec52fSDavid S. Miller 		for(j=width; j; --j)
108c57ec52fSDavid S. Miller 			*(ptr++) = 0;
109c57ec52fSDavid S. Miller 		base += (dispDeviceRowBytes >> 2);
110c57ec52fSDavid S. Miller 	}
111c57ec52fSDavid S. Miller }
112c57ec52fSDavid S. Miller 
113c57ec52fSDavid S. Miller #ifndef NO_SCROLL
scrollscreen(void)114c57ec52fSDavid S. Miller static void scrollscreen(void)
115c57ec52fSDavid S. Miller {
116c57ec52fSDavid S. Miller 	unsigned int *src     	= (unsigned int *)calc_base(0,16);
117c57ec52fSDavid S. Miller 	unsigned int *dst     	= (unsigned int *)calc_base(0,0);
118c57ec52fSDavid S. Miller 	unsigned long width    	= ((dispDeviceRect[2] - dispDeviceRect[0]) *
119c57ec52fSDavid S. Miller 				   (dispDeviceDepth >> 3)) >> 2;
120c57ec52fSDavid S. Miller 	int i,j;
121c57ec52fSDavid S. Miller 
122c57ec52fSDavid S. Miller 	for (i=0; i<(dispDeviceRect[3] - dispDeviceRect[1] - 16); i++)
123c57ec52fSDavid S. Miller 	{
124c57ec52fSDavid S. Miller 		unsigned int *src_ptr = src;
125c57ec52fSDavid S. Miller 		unsigned int *dst_ptr = dst;
126c57ec52fSDavid S. Miller 		for(j=width; j; --j)
127c57ec52fSDavid S. Miller 			*(dst_ptr++) = *(src_ptr++);
128c57ec52fSDavid S. Miller 		src += (dispDeviceRowBytes >> 2);
129c57ec52fSDavid S. Miller 		dst += (dispDeviceRowBytes >> 2);
130c57ec52fSDavid S. Miller 	}
131c57ec52fSDavid S. Miller 	for (i=0; i<16; i++)
132c57ec52fSDavid S. Miller 	{
133c57ec52fSDavid S. Miller 		unsigned int *dst_ptr = dst;
134c57ec52fSDavid S. Miller 		for(j=width; j; --j)
135c57ec52fSDavid S. Miller 			*(dst_ptr++) = 0;
136c57ec52fSDavid S. Miller 		dst += (dispDeviceRowBytes >> 2);
137c57ec52fSDavid S. Miller 	}
138c57ec52fSDavid S. Miller }
139c57ec52fSDavid S. Miller #endif /* ndef NO_SCROLL */
140c57ec52fSDavid S. Miller 
btext_drawchar(char c)141f1eabec5SSam Ravnborg static void btext_drawchar(char c)
142c57ec52fSDavid S. Miller {
143c57ec52fSDavid S. Miller 	int cline = 0;
144c57ec52fSDavid S. Miller #ifdef NO_SCROLL
145c57ec52fSDavid S. Miller 	int x;
146c57ec52fSDavid S. Miller #endif
147c57ec52fSDavid S. Miller 	switch (c) {
148c57ec52fSDavid S. Miller 	case '\b':
149c57ec52fSDavid S. Miller 		if (g_loc_X > 0)
150c57ec52fSDavid S. Miller 			--g_loc_X;
151c57ec52fSDavid S. Miller 		break;
152c57ec52fSDavid S. Miller 	case '\t':
153c57ec52fSDavid S. Miller 		g_loc_X = (g_loc_X & -8) + 8;
154c57ec52fSDavid S. Miller 		break;
155c57ec52fSDavid S. Miller 	case '\r':
156c57ec52fSDavid S. Miller 		g_loc_X = 0;
157c57ec52fSDavid S. Miller 		break;
158c57ec52fSDavid S. Miller 	case '\n':
159c57ec52fSDavid S. Miller 		g_loc_X = 0;
160c57ec52fSDavid S. Miller 		g_loc_Y++;
161c57ec52fSDavid S. Miller 		cline = 1;
162c57ec52fSDavid S. Miller 		break;
163c57ec52fSDavid S. Miller 	default:
164c57ec52fSDavid S. Miller 		draw_byte(c, g_loc_X++, g_loc_Y);
165c57ec52fSDavid S. Miller 	}
166c57ec52fSDavid S. Miller 	if (g_loc_X >= g_max_loc_X) {
167c57ec52fSDavid S. Miller 		g_loc_X = 0;
168c57ec52fSDavid S. Miller 		g_loc_Y++;
169c57ec52fSDavid S. Miller 		cline = 1;
170c57ec52fSDavid S. Miller 	}
171c57ec52fSDavid S. Miller #ifndef NO_SCROLL
172c57ec52fSDavid S. Miller 	while (g_loc_Y >= g_max_loc_Y) {
173c57ec52fSDavid S. Miller 		scrollscreen();
174c57ec52fSDavid S. Miller 		g_loc_Y--;
175c57ec52fSDavid S. Miller 	}
176c57ec52fSDavid S. Miller #else
177c57ec52fSDavid S. Miller 	/* wrap around from bottom to top of screen so we don't
178c57ec52fSDavid S. Miller 	   waste time scrolling each line.  -- paulus. */
179c57ec52fSDavid S. Miller 	if (g_loc_Y >= g_max_loc_Y)
180c57ec52fSDavid S. Miller 		g_loc_Y = 0;
181c57ec52fSDavid S. Miller 	if (cline) {
182c57ec52fSDavid S. Miller 		for (x = 0; x < g_max_loc_X; ++x)
183c57ec52fSDavid S. Miller 			draw_byte(' ', x, g_loc_Y);
184c57ec52fSDavid S. Miller 	}
185c57ec52fSDavid S. Miller #endif
186c57ec52fSDavid S. Miller }
187c57ec52fSDavid S. Miller 
btext_drawtext(const char * c,unsigned int len)188c57ec52fSDavid S. Miller static void btext_drawtext(const char *c, unsigned int len)
189c57ec52fSDavid S. Miller {
190c57ec52fSDavid S. Miller 	while (len--)
191c57ec52fSDavid S. Miller 		btext_drawchar(*c++);
192c57ec52fSDavid S. Miller }
193c57ec52fSDavid S. Miller 
draw_byte(unsigned char c,long locX,long locY)194c57ec52fSDavid S. Miller static void draw_byte(unsigned char c, long locX, long locY)
195c57ec52fSDavid S. Miller {
196c57ec52fSDavid S. Miller 	unsigned char *base	= calc_base(locX << 3, locY << 4);
197c57ec52fSDavid S. Miller 	unsigned char *font	= &vga_font[((unsigned int)c) * 16];
198c57ec52fSDavid S. Miller 	int rb			= dispDeviceRowBytes;
199c57ec52fSDavid S. Miller 
200c57ec52fSDavid S. Miller 	switch(dispDeviceDepth) {
201c57ec52fSDavid S. Miller 	case 24:
202c57ec52fSDavid S. Miller 	case 32:
203c57ec52fSDavid S. Miller 		draw_byte_32(font, (unsigned int *)base, rb);
204c57ec52fSDavid S. Miller 		break;
205c57ec52fSDavid S. Miller 	case 15:
206c57ec52fSDavid S. Miller 	case 16:
207c57ec52fSDavid S. Miller 		draw_byte_16(font, (unsigned int *)base, rb);
208c57ec52fSDavid S. Miller 		break;
209c57ec52fSDavid S. Miller 	case 8:
210c57ec52fSDavid S. Miller 		draw_byte_8(font, (unsigned int *)base, rb);
211c57ec52fSDavid S. Miller 		break;
212c57ec52fSDavid S. Miller 	}
213c57ec52fSDavid S. Miller }
214c57ec52fSDavid S. Miller 
215c57ec52fSDavid S. Miller static unsigned int expand_bits_8[16] = {
216c57ec52fSDavid S. Miller 	0x00000000,
217c57ec52fSDavid S. Miller 	0x000000ff,
218c57ec52fSDavid S. Miller 	0x0000ff00,
219c57ec52fSDavid S. Miller 	0x0000ffff,
220c57ec52fSDavid S. Miller 	0x00ff0000,
221c57ec52fSDavid S. Miller 	0x00ff00ff,
222c57ec52fSDavid S. Miller 	0x00ffff00,
223c57ec52fSDavid S. Miller 	0x00ffffff,
224c57ec52fSDavid S. Miller 	0xff000000,
225c57ec52fSDavid S. Miller 	0xff0000ff,
226c57ec52fSDavid S. Miller 	0xff00ff00,
227c57ec52fSDavid S. Miller 	0xff00ffff,
228c57ec52fSDavid S. Miller 	0xffff0000,
229c57ec52fSDavid S. Miller 	0xffff00ff,
230c57ec52fSDavid S. Miller 	0xffffff00,
231c57ec52fSDavid S. Miller 	0xffffffff
232c57ec52fSDavid S. Miller };
233c57ec52fSDavid S. Miller 
234c57ec52fSDavid S. Miller static unsigned int expand_bits_16[4] = {
235c57ec52fSDavid S. Miller 	0x00000000,
236c57ec52fSDavid S. Miller 	0x0000ffff,
237c57ec52fSDavid S. Miller 	0xffff0000,
238c57ec52fSDavid S. Miller 	0xffffffff
239c57ec52fSDavid S. Miller };
240c57ec52fSDavid S. Miller 
241c57ec52fSDavid S. Miller 
draw_byte_32(unsigned char * font,unsigned int * base,int rb)242c57ec52fSDavid S. Miller static void draw_byte_32(unsigned char *font, unsigned int *base, int rb)
243c57ec52fSDavid S. Miller {
244c57ec52fSDavid S. Miller 	int l, bits;
245c57ec52fSDavid S. Miller 	int fg = 0xFFFFFFFFUL;
246c57ec52fSDavid S. Miller 	int bg = 0x00000000UL;
247c57ec52fSDavid S. Miller 
248c57ec52fSDavid S. Miller 	for (l = 0; l < 16; ++l)
249c57ec52fSDavid S. Miller 	{
250c57ec52fSDavid S. Miller 		bits = *font++;
251c57ec52fSDavid S. Miller 		base[0] = (-(bits >> 7) & fg) ^ bg;
252c57ec52fSDavid S. Miller 		base[1] = (-((bits >> 6) & 1) & fg) ^ bg;
253c57ec52fSDavid S. Miller 		base[2] = (-((bits >> 5) & 1) & fg) ^ bg;
254c57ec52fSDavid S. Miller 		base[3] = (-((bits >> 4) & 1) & fg) ^ bg;
255c57ec52fSDavid S. Miller 		base[4] = (-((bits >> 3) & 1) & fg) ^ bg;
256c57ec52fSDavid S. Miller 		base[5] = (-((bits >> 2) & 1) & fg) ^ bg;
257c57ec52fSDavid S. Miller 		base[6] = (-((bits >> 1) & 1) & fg) ^ bg;
258c57ec52fSDavid S. Miller 		base[7] = (-(bits & 1) & fg) ^ bg;
259c57ec52fSDavid S. Miller 		base = (unsigned int *) ((char *)base + rb);
260c57ec52fSDavid S. Miller 	}
261c57ec52fSDavid S. Miller }
262c57ec52fSDavid S. Miller 
draw_byte_16(unsigned char * font,unsigned int * base,int rb)263c57ec52fSDavid S. Miller static void draw_byte_16(unsigned char *font, unsigned int *base, int rb)
264c57ec52fSDavid S. Miller {
265c57ec52fSDavid S. Miller 	int l, bits;
266c57ec52fSDavid S. Miller 	int fg = 0xFFFFFFFFUL;
267c57ec52fSDavid S. Miller 	int bg = 0x00000000UL;
268c57ec52fSDavid S. Miller 	unsigned int *eb = (int *)expand_bits_16;
269c57ec52fSDavid S. Miller 
270c57ec52fSDavid S. Miller 	for (l = 0; l < 16; ++l)
271c57ec52fSDavid S. Miller 	{
272c57ec52fSDavid S. Miller 		bits = *font++;
273c57ec52fSDavid S. Miller 		base[0] = (eb[bits >> 6] & fg) ^ bg;
274c57ec52fSDavid S. Miller 		base[1] = (eb[(bits >> 4) & 3] & fg) ^ bg;
275c57ec52fSDavid S. Miller 		base[2] = (eb[(bits >> 2) & 3] & fg) ^ bg;
276c57ec52fSDavid S. Miller 		base[3] = (eb[bits & 3] & fg) ^ bg;
277c57ec52fSDavid S. Miller 		base = (unsigned int *) ((char *)base + rb);
278c57ec52fSDavid S. Miller 	}
279c57ec52fSDavid S. Miller }
280c57ec52fSDavid S. Miller 
draw_byte_8(unsigned char * font,unsigned int * base,int rb)281c57ec52fSDavid S. Miller static void draw_byte_8(unsigned char *font, unsigned int *base, int rb)
282c57ec52fSDavid S. Miller {
283c57ec52fSDavid S. Miller 	int l, bits;
284c57ec52fSDavid S. Miller 	int fg = 0x0F0F0F0FUL;
285c57ec52fSDavid S. Miller 	int bg = 0x00000000UL;
286c57ec52fSDavid S. Miller 	unsigned int *eb = (int *)expand_bits_8;
287c57ec52fSDavid S. Miller 
288c57ec52fSDavid S. Miller 	for (l = 0; l < 16; ++l)
289c57ec52fSDavid S. Miller 	{
290c57ec52fSDavid S. Miller 		bits = *font++;
291c57ec52fSDavid S. Miller 		base[0] = (eb[bits >> 4] & fg) ^ bg;
292c57ec52fSDavid S. Miller 		base[1] = (eb[bits & 0xf] & fg) ^ bg;
293c57ec52fSDavid S. Miller 		base = (unsigned int *) ((char *)base + rb);
294c57ec52fSDavid S. Miller 	}
295c57ec52fSDavid S. Miller }
296c57ec52fSDavid S. Miller 
btext_console_write(struct console * con,const char * s,unsigned int n)297c57ec52fSDavid S. Miller static void btext_console_write(struct console *con, const char *s,
298c57ec52fSDavid S. Miller 				unsigned int n)
299c57ec52fSDavid S. Miller {
300c57ec52fSDavid S. Miller 	btext_drawtext(s, n);
301c57ec52fSDavid S. Miller }
302c57ec52fSDavid S. Miller 
303c57ec52fSDavid S. Miller static struct console btext_console = {
304c57ec52fSDavid S. Miller 	.name	= "btext",
305c57ec52fSDavid S. Miller 	.write	= btext_console_write,
306c57ec52fSDavid S. Miller 	.flags	= CON_PRINTBUFFER | CON_ENABLED | CON_BOOT | CON_ANYTIME,
307c57ec52fSDavid S. Miller 	.index	= 0,
308c57ec52fSDavid S. Miller };
309c57ec52fSDavid S. Miller 
btext_find_display(void)310c57ec52fSDavid S. Miller int __init btext_find_display(void)
311c57ec52fSDavid S. Miller {
3128d125562SAndres Salomon 	phandle node;
313c57ec52fSDavid S. Miller 	char type[32];
314c57ec52fSDavid S. Miller 	int ret;
315c57ec52fSDavid S. Miller 
316c57ec52fSDavid S. Miller 	node = prom_inst2pkg(prom_stdout);
317c57ec52fSDavid S. Miller 	if (prom_getproperty(node, "device_type", type, 32) < 0)
318c57ec52fSDavid S. Miller 		return -ENODEV;
319c57ec52fSDavid S. Miller 	if (strcmp(type, "display"))
320c57ec52fSDavid S. Miller 		return -ENODEV;
321c57ec52fSDavid S. Miller 
322c57ec52fSDavid S. Miller 	ret = btext_initialize(node);
323c57ec52fSDavid S. Miller 	if (!ret) {
324c57ec52fSDavid S. Miller 		btext_clearscreen();
325c57ec52fSDavid S. Miller 		register_console(&btext_console);
326c57ec52fSDavid S. Miller 	}
327c57ec52fSDavid S. Miller 	return ret;
328c57ec52fSDavid S. Miller }
329c57ec52fSDavid S. Miller 
330c57ec52fSDavid S. Miller static unsigned char vga_font[cmapsz] = {
331c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
332c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd,
333c57ec52fSDavid S. Miller 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff,
334c57ec52fSDavid S. Miller 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00,
335c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10,
336c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe,
337c57ec52fSDavid S. Miller 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
338c57ec52fSDavid S. Miller 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
339c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c,
340c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c,
341c57ec52fSDavid S. Miller 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
342c57ec52fSDavid S. Miller 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
343c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00,
344c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd,
345c57ec52fSDavid S. Miller 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x1e, 0x0e,
346c57ec52fSDavid S. Miller 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
347c57ec52fSDavid S. Miller 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18,
348c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30,
349c57ec52fSDavid S. Miller 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x63,
350c57ec52fSDavid S. Miller 0x7f, 0x63, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00,
351c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18,
352c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8,
353c57ec52fSDavid S. Miller 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0e,
354c57ec52fSDavid S. Miller 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
355c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00,
356c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
357c57ec52fSDavid S. Miller 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xdb,
358c57ec52fSDavid S. Miller 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00,
359c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6,
360c57ec52fSDavid S. Miller 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
361c57ec52fSDavid S. Miller 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c,
362c57ec52fSDavid S. Miller 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
363c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
364c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
365c57ec52fSDavid S. Miller 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
366c57ec52fSDavid S. Miller 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
367c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00,
368c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
369c57ec52fSDavid S. Miller 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
370c57ec52fSDavid S. Miller 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
371c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00,
372c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c,
373c57ec52fSDavid S. Miller 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
375c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18,
376c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00,
377c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c,
378c57ec52fSDavid S. Miller 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
379c57ec52fSDavid S. Miller 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c,
380c57ec52fSDavid S. Miller 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18,
381c57ec52fSDavid S. Miller 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c,
382c57ec52fSDavid S. Miller 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
383c57ec52fSDavid S. Miller 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
384c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
385c57ec52fSDavid S. Miller 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18,
386c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
387c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00,
388c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e,
389c57ec52fSDavid S. Miller 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,
391c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
392c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
393c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
394c57ec52fSDavid S. Miller 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
395c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0xc6, 0xc6, 0x7c,
396c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18,
397c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
398c57ec52fSDavid S. Miller 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
399c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c,
400c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe,
401c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0,
402c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
403c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
404c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18,
405c57ec52fSDavid S. Miller 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
406c57ec52fSDavid S. Miller 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
407c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78,
408c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
409c57ec52fSDavid S. Miller 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
410c57ec52fSDavid S. Miller 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
411c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06,
412c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
413c57ec52fSDavid S. Miller 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
414c57ec52fSDavid S. Miller 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00,
415c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18,
416c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xde, 0xde,
417c57ec52fSDavid S. Miller 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38,
418c57ec52fSDavid S. Miller 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
419c57ec52fSDavid S. Miller 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc,
420c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0,
421c57ec52fSDavid S. Miller 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6c,
422c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00,
423c57ec52fSDavid S. Miller 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe,
424c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68,
425c57ec52fSDavid S. Miller 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66,
426c57ec52fSDavid S. Miller 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00,
427c57ec52fSDavid S. Miller 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
428c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18,
429c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c,
430c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
431c57ec52fSDavid S. Miller 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6,
432c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60,
433c57ec52fSDavid S. Miller 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xe7,
434c57ec52fSDavid S. Miller 0xff, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
435c57ec52fSDavid S. Miller 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6,
436c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
437c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66,
438c57ec52fSDavid S. Miller 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
439c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c,
440c57ec52fSDavid S. Miller 0x0c, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c,
441c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
442c57ec52fSDavid S. Miller 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
443c57ec52fSDavid S. Miller 0x00, 0x00, 0xff, 0xdb, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
444c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
445c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3,
446c57ec52fSDavid S. Miller 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
447c57ec52fSDavid S. Miller 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x66,
448c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18,
449c57ec52fSDavid S. Miller 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3,
450c57ec52fSDavid S. Miller 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
451c57ec52fSDavid S. Miller 0x00, 0x00, 0xff, 0xc3, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc1, 0xc3, 0xff,
452c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30,
453c57ec52fSDavid S. Miller 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
454c57ec52fSDavid S. Miller 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
455c57ec52fSDavid S. Miller 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c,
456c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00,
457c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
458c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
459c57ec52fSDavid S. Miller 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
460c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c,
461c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x60,
462c57ec52fSDavid S. Miller 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00,
463c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c,
464c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc,
465c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
466c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
467c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0,
468c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc,
469c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x60,
470c57ec52fSDavid S. Miller 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
471c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
472c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06,
473c57ec52fSDavid S. Miller 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x60,
474c57ec52fSDavid S. Miller 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
475c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
476c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xdb,
477c57ec52fSDavid S. Miller 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
478c57ec52fSDavid S. Miller 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
479c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
480c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66,
481c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
482c57ec52fSDavid S. Miller 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00,
483c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0,
484c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60,
485c57ec52fSDavid S. Miller 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30,
486c57ec52fSDavid S. Miller 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00,
487c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76,
488c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3,
489c57ec52fSDavid S. Miller 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
490c57ec52fSDavid S. Miller 0x00, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00,
491c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3,
492c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6,
493c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
494c57ec52fSDavid S. Miller 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
495c57ec52fSDavid S. Miller 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e,
496c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18,
497c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x18,
498c57ec52fSDavid S. Miller 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
499c57ec52fSDavid S. Miller 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
500c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6,
501c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66,
502c57ec52fSDavid S. Miller 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x0c, 0x06, 0x7c, 0x00, 0x00,
503c57ec52fSDavid S. Miller 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76,
504c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe,
505c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c,
506c57ec52fSDavid S. Miller 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
507c57ec52fSDavid S. Miller 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76,
508c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c,
509c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x38,
510c57ec52fSDavid S. Miller 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
511c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60, 0x66, 0x3c, 0x0c, 0x06,
512c57ec52fSDavid S. Miller 0x3c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe,
513c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00,
514c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
515c57ec52fSDavid S. Miller 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c,
516c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18,
517c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x66,
518c57ec52fSDavid S. Miller 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
519c57ec52fSDavid S. Miller 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
520c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6,
521c57ec52fSDavid S. Miller 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x38, 0x00,
522c57ec52fSDavid S. Miller 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
523c57ec52fSDavid S. Miller 0x18, 0x30, 0x60, 0x00, 0xfe, 0x66, 0x60, 0x7c, 0x60, 0x60, 0x66, 0xfe,
524c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b,
525c57ec52fSDavid S. Miller 0x7e, 0xd8, 0xdc, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x6c,
526c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00,
527c57ec52fSDavid S. Miller 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
528c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6,
529c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18,
530c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
531c57ec52fSDavid S. Miller 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76,
532c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc,
533c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00,
534c57ec52fSDavid S. Miller 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
535c57ec52fSDavid S. Miller 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
536c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
537c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e,
538c57ec52fSDavid S. Miller 0xc3, 0xc0, 0xc0, 0xc0, 0xc3, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
539c57ec52fSDavid S. Miller 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc,
540c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0xff, 0x18,
541c57ec52fSDavid S. Miller 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66,
542c57ec52fSDavid S. Miller 0x7c, 0x62, 0x66, 0x6f, 0x66, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00,
543c57ec52fSDavid S. Miller 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18,
544c57ec52fSDavid S. Miller 0xd8, 0x70, 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c,
545c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30,
546c57ec52fSDavid S. Miller 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
547c57ec52fSDavid S. Miller 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
548c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc,
549c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc,
550c57ec52fSDavid S. Miller 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
551c57ec52fSDavid S. Miller 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6,
552c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00,
553c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c,
554c57ec52fSDavid S. Miller 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
555c57ec52fSDavid S. Miller 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c,
556c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0,
557c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
558c57ec52fSDavid S. Miller 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
559c57ec52fSDavid S. Miller 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xce, 0x9b, 0x06,
560c57ec52fSDavid S. Miller 0x0c, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30,
561c57ec52fSDavid S. Miller 0x66, 0xce, 0x96, 0x3e, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18,
562c57ec52fSDavid S. Miller 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
563c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00,
564c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36,
565c57ec52fSDavid S. Miller 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x11, 0x44,
566c57ec52fSDavid S. Miller 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
567c57ec52fSDavid S. Miller 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
568c57ec52fSDavid S. Miller 0x55, 0xaa, 0x55, 0xaa, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
569c57ec52fSDavid S. Miller 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0x18, 0x18, 0x18, 0x18,
570c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
571c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18,
572c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8,
573c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36,
574c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
575c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36,
576c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8,
577c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36,
578c57ec52fSDavid S. Miller 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
579c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
580c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6,
581c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
582c57ec52fSDavid S. Miller 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
583c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00,
584c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8,
585c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
586c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
587c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00,
588c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff,
589c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
590c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
591c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18,
592c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
593c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18,
594c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
595c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18,
596c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37,
597c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
598c57ec52fSDavid S. Miller 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
599c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36,
600c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff,
601c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
602c57ec52fSDavid S. Miller 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
603c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36,
604c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
605c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36,
606c57ec52fSDavid S. Miller 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
607c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
608c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff,
609c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
610c57ec52fSDavid S. Miller 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
611c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36,
612c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f,
613c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18,
614c57ec52fSDavid S. Miller 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
615c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18,
616c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
617c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
618c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
619c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18,
620c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8,
621c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
622c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
623c57ec52fSDavid S. Miller 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
624c57ec52fSDavid S. Miller 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
625c57ec52fSDavid S. Miller 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0,
626c57ec52fSDavid S. Miller 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
627c57ec52fSDavid S. Miller 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
628c57ec52fSDavid S. Miller 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
629c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
630c57ec52fSDavid S. Miller 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00,
631c57ec52fSDavid S. Miller 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc,
632c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0,
633c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
634c57ec52fSDavid S. Miller 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
635c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x30, 0x60, 0xc6, 0xfe,
636c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8,
637c57ec52fSDavid S. Miller 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
638c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00,
639c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
640c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66,
641c57ec52fSDavid S. Miller 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
642c57ec52fSDavid S. Miller 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00,
643c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x6c, 0xee,
644c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66,
645c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
646c57ec52fSDavid S. Miller 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
647c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0,
648c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60,
649c57ec52fSDavid S. Miller 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
650c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
651c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00,
652c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18,
653c57ec52fSDavid S. Miller 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
654c57ec52fSDavid S. Miller 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
655c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e,
656c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x1b, 0x18, 0x18,
657c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
658c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
659c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00,
660c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00,
661c57ec52fSDavid S. Miller 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c,
662c57ec52fSDavid S. Miller 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
663c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
664c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
665c57ec52fSDavid S. Miller 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x0c,
666c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00,
667c57ec52fSDavid S. Miller 0x00, 0xd8, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,
668c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00,
669c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670c57ec52fSDavid S. Miller 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
671c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
672c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00,
673c57ec52fSDavid S. Miller };
674