diff -Nru a/Documentation/Changes b/Documentation/Changes --- a/Documentation/Changes Sun Feb 9 17:29:37 2003 +++ b/Documentation/Changes Fri Apr 4 09:04:01 2003 @@ -62,6 +62,7 @@ o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version o procps 2.0.9 # ps --version o oprofile 0.5 # oprofiled --version +o nfs-utils 1.0.3 # showmount --version Kernel compilation ================== diff -Nru a/Documentation/io_ordering.txt b/Documentation/io_ordering.txt --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/io_ordering.txt Tue Mar 18 02:02:11 2003 @@ -0,0 +1,47 @@ +On some platforms, so-called memory-mapped I/O is weakly ordered. On such +platforms, driver writers are responsible for ensuring that I/O writes to +memory-mapped addresses on their device arrive in the order intended. This is +typically done by reading a 'safe' device or bridge register, causing the I/O +chipset to flush pending writes to the device before any reads are posted. A +driver would usually use this technique immediately prior to the exit of a +critical section of code protected by spinlocks. This would ensure that +subsequent writes to I/O space arrived only after all prior writes (much like a +memory barrier op, mb(), only with respect to I/O). + +A more concrete example from a hypothetical device driver: + + ... +CPU A: spin_lock_irqsave(&dev_lock, flags) +CPU A: val = readl(my_status); +CPU A: ... +CPU A: writel(newval, ring_ptr); +CPU A: spin_unlock_irqrestore(&dev_lock, flags) + ... +CPU B: spin_lock_irqsave(&dev_lock, flags) +CPU B: val = readl(my_status); +CPU B: ... +CPU B: writel(newval2, ring_ptr); +CPU B: spin_unlock_irqrestore(&dev_lock, flags) + ... + +In the case above, the device may receive newval2 before it receives newval, +which could cause problems. Fixing it is easy enough though: + + ... +CPU A: spin_lock_irqsave(&dev_lock, flags) +CPU A: val = readl(my_status); +CPU A: ... +CPU A: writel(newval, ring_ptr); +CPU A: (void)readl(safe_register); /* maybe a config register? */ +CPU A: spin_unlock_irqrestore(&dev_lock, flags) + ... +CPU B: spin_lock_irqsave(&dev_lock, flags) +CPU B: val = readl(my_status); +CPU B: ... +CPU B: writel(newval2, ring_ptr); +CPU B: (void)readl(safe_register); /* maybe a config register? */ +CPU B: spin_unlock_irqrestore(&dev_lock, flags) + +Here, the reads from safe_register will cause the I/O chipset to flush any +pending writes before actually posting the read to the chipset, preventing +possible data corruption. diff -Nru a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt --- a/Documentation/sysctl/kernel.txt Mon Feb 3 04:47:54 2003 +++ b/Documentation/sysctl/kernel.txt Wed Apr 9 01:01:38 2003 @@ -204,6 +204,18 @@ ============================================================== +panic_on_oops: + +Controls the kernel's behaviour when an oops or BUG is encountered. + +0: try to continue operation + +1: delay a few seconds (to give klogd time to record the oops output) and + then panic. If the `panic' sysctl is also non-zero then the machine will + be rebooted. + +============================================================== + pid_max: PID allocation wrap value. When the kenrel's next PID value diff -Nru a/Makefile b/Makefile --- a/Makefile Mon Apr 7 09:42:21 2003 +++ b/Makefile Thu Apr 10 04:28:06 2003 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 5 SUBLEVEL = 67 -EXTRAVERSION = +EXTRAVERSION = -bk2 # *DOCUMENTATION* # To see a list of typical targets execute "make help" @@ -342,17 +342,9 @@ echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd endef -ifdef CONFIG_SMP -# Final awk script makes sure per-cpu vars are in per-cpu section, as -# old gcc (eg egcs 2.92.11) ignores section attribute if uninitialized. - -check_per_cpu = $(AWK) -f $(srctree)/scripts/per-cpu-check.awk < System.map -endif - define rule_vmlinux $(rule_vmlinux__) $(NM) $@ | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map - $(check_per_cpu) endef LDFLAGS_vmlinux += -T arch/$(ARCH)/vmlinux.lds.s diff -Nru a/arch/alpha/kernel/core_cia.c b/arch/alpha/kernel/core_cia.c --- a/arch/alpha/kernel/core_cia.c Sun Dec 8 03:50:30 2002 +++ b/arch/alpha/kernel/core_cia.c Thu Apr 3 14:49:57 2003 @@ -610,7 +610,7 @@ *(vip)CIA_IOC_CIA_CNFG = temp; } - /* Syncronize with all previous changes. */ + /* Synchronize with all previous changes. */ mb(); *(vip)CIA_IOC_CIA_REV; diff -Nru a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c --- a/arch/alpha/kernel/pci.c Sun Mar 23 17:35:08 2003 +++ b/arch/alpha/kernel/pci.c Thu Apr 3 14:49:57 2003 @@ -230,7 +230,7 @@ void __init pcibios_fixup_bus(struct pci_bus *bus) { - /* Propogate hose info into the subordinate devices. */ + /* Propagate hose info into the subordinate devices. */ struct pci_controller *hose = bus->sysdata; struct list_head *ln; diff -Nru a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c --- a/arch/alpha/kernel/pci_iommu.c Tue Feb 25 09:17:06 2003 +++ b/arch/alpha/kernel/pci_iommu.c Thu Apr 3 14:49:57 2003 @@ -431,7 +431,7 @@ /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must be values that were returned from pci_alloc_consistent. SIZE must be the same as what as passed into pci_alloc_consistent. - References to the memory and mappings assosciated with CPU_ADDR or + References to the memory and mappings associated with CPU_ADDR or DMA_ADDR past this call are illegal. */ void diff -Nru a/arch/alpha/kernel/semaphore.c b/arch/alpha/kernel/semaphore.c --- a/arch/alpha/kernel/semaphore.c Thu Apr 18 16:23:15 2002 +++ b/arch/alpha/kernel/semaphore.c Thu Apr 3 14:49:57 2003 @@ -122,7 +122,7 @@ long tmp, tmp2, tmp3; /* We must undo the sem->count down_interruptible decrement - simultaneously and atomicly with the sem->waking + simultaneously and atomically with the sem->waking adjustment, otherwise we can race with __up. This is accomplished by doing a 64-bit ll/sc on two 32-bit words. diff -Nru a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c --- a/arch/alpha/kernel/setup.c Sun Jan 19 01:30:58 2003 +++ b/arch/alpha/kernel/setup.c Thu Apr 3 14:49:57 2003 @@ -486,7 +486,7 @@ notifier_chain_register(&panic_notifier_list, &alpha_panic_block); #ifdef CONFIG_ALPHA_GENERIC - /* Assume that we've booted from SRM if we havn't booted from MILO. + /* Assume that we've booted from SRM if we haven't booted from MILO. Detect the later by looking for "MILO" in the system serial nr. */ alpha_using_srm = strncmp((const char *)hwrpb->ssn, "MILO", 4) != 0; #endif @@ -569,7 +569,7 @@ #endif /* - * Indentify and reconfigure for the current system. + * Identify and reconfigure for the current system. */ cpu = (struct percpu_struct*)((char*)hwrpb + hwrpb->processor_offset); diff -Nru a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c --- a/arch/alpha/kernel/time.c Mon Feb 24 23:13:09 2003 +++ b/arch/alpha/kernel/time.c Thu Apr 3 14:49:57 2003 @@ -331,7 +331,7 @@ /* From John Bowman : allow the values to settle, as the Update-In-Progress bit going low isn't good - enough on some hardware. 2ms is our guess; we havn't found + enough on some hardware. 2ms is our guess; we haven't found bogomips yet, but this is close on a 500Mhz box. */ __delay(1000000); diff -Nru a/arch/alpha/lib/strrchr.S b/arch/alpha/lib/strrchr.S --- a/arch/alpha/lib/strrchr.S Thu Aug 8 12:28:01 2002 +++ b/arch/alpha/lib/strrchr.S Thu Apr 3 14:49:57 2003 @@ -2,7 +2,7 @@ * arch/alpha/lib/strrchr.S * Contributed by Richard Henderson (rth@tamu.edu) * - * Return the address of the last occurrance of a given character + * Return the address of the last occurrence of a given character * within a null-terminated string, or null if it is not found. */ diff -Nru a/arch/alpha/math-emu/math.c b/arch/alpha/math-emu/math.c --- a/arch/alpha/math-emu/math.c Mon Nov 4 17:29:05 2002 +++ b/arch/alpha/math-emu/math.c Thu Apr 3 14:49:57 2003 @@ -294,7 +294,7 @@ * the appropriate signal to the translated program. * * In addition, properly track the exception state in software - * as described in the Alpha Architectre Handbook section 4.7.7.3. + * as described in the Alpha Architecture Handbook section 4.7.7.3. */ done: if (_fex) { diff -Nru a/arch/i386/Kconfig b/arch/i386/Kconfig --- a/arch/i386/Kconfig Mon Mar 17 21:33:21 2003 +++ b/arch/i386/Kconfig Fri Apr 4 07:22:18 2003 @@ -142,7 +142,7 @@ config M486 bool "486" help - Select this for a x486 processor, ether Intel or one of the + Select this for a 486 series processor, either Intel or one of the compatible processors from AMD, Cyrix, IBM, or Intel. Includes DX, DX2, and DX4 variants; also SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S. @@ -150,8 +150,8 @@ config M586 bool "586/K5/5x86/6x86/6x86MX" help - Select this for an x586 or x686 processor such as the AMD K5, the - Intel 5x86 or 6x86, or the Intel 6x86MX. This choice does not + Select this for an 586 or 686 series processor such as the AMD K5, + the Intel 5x86 or 6x86, or the Intel 6x86MX. This choice does not assume the RDTSC (Read Time Stamp Counter) instruction. config M586TSC @@ -226,28 +226,28 @@ config MCRUSOE bool "Crusoe" help - Select this for Transmeta Crusoe processor. Treats the processor + Select this for a Transmeta Crusoe processor. Treats the processor like a 586 with TSC, and sets some GCC optimization flags (like a Pentium Pro with no alignment requirements). config MWINCHIPC6 bool "Winchip-C6" help - Select this for a IDT Winchip C6 chip. Linux and GCC + Select this for an IDT Winchip C6 chip. Linux and GCC treat this chip as a 586TSC with some extended instructions and alignment requirements. config MWINCHIP2 bool "Winchip-2" help - Select this for a IDT Winchip-2. Linux and GCC + Select this for an IDT Winchip-2. Linux and GCC treat this chip as a 586TSC with some extended instructions and alignment requirements. config MWINCHIP3D bool "Winchip-2A/Winchip-3" help - Select this for a IDT Winchip-2A or 3. Linux and GCC + Select this for an IDT Winchip-2A or 3. Linux and GCC treat this chip as a 586TSC with some extended instructions and alignment reqirements. Development kernels also enable out of order memory stores for this CPU, which can increase @@ -260,15 +260,15 @@ treat this chip as a generic 586. Whilst the CPU is 686 class, it lacks the cmov extension which gcc assumes is present when generating 686 code. - Note, that Nehemiah (Model 9) and above will not boot with this - kernel due to them lacking the 3dnow instructions used in earlier + Note that Nehemiah (Model 9) and above will not boot with this + kernel due to them lacking the 3DNow! instructions used in earlier incarnations of the CPU. config MVIAC3_2 bool "VIA C3-2 (Nehemiah)" help - Select this for a VIA C3 "Nehemiah". Selecting this enables usage of SSE - and tells gcc to treat the CPU as a 686. + Select this for a VIA C3 "Nehemiah". Selecting this enables usage + of SSE and tells gcc to treat the CPU as a 686. Note, this kernel will not boot on older (pre model 9) C3s. endchoice @@ -435,7 +435,8 @@ enable and use it. If you say Y here even though your machine doesn't have a local APIC, then the kernel will still run with no slowdown at all. The local APIC supports CPU-generated self-interrupts (timer, - performance counters), and the NMI watchdog which detects hard lockups. + performance counters), and the NMI watchdog which detects hard + lockups. If you have a system with several CPUs, you do not need to say Y here: the local APIC will be used automatically. @@ -522,7 +523,7 @@ ---help--- This adds a driver to safely access the System Management Mode of the CPU on Toshiba portables with a genuine Toshiba BIOS. It does - not work on models with a Pheonix BIOS. The System Management Mode + not work on models with a Phoenix BIOS. The System Management Mode is used to set the BIOS and power saving options on Toshiba portables. For information on utilities to make use of this driver see the diff -Nru a/arch/i386/boot/setup.S b/arch/i386/boot/setup.S --- a/arch/i386/boot/setup.S Mon Mar 31 14:29:08 2003 +++ b/arch/i386/boot/setup.S Thu Apr 3 07:46:29 2003 @@ -213,7 +213,7 @@ # Part of above routine, this one just prints ascii al prtchr: pushw %ax pushw %cx - xorb %bh, %bh + movw $7,%bx movw $0x01, %cx movb $0x0e, %ah int $0x10 diff -Nru a/arch/i386/kernel/apm.c b/arch/i386/kernel/apm.c --- a/arch/i386/kernel/apm.c Tue Apr 1 08:20:23 2003 +++ b/arch/i386/kernel/apm.c Thu Apr 3 16:12:19 2003 @@ -227,6 +227,8 @@ #include #include +#include "io_ports.h" + extern spinlock_t i8253_lock; extern unsigned long get_cmos_time(void); extern void machine_real_restart(unsigned char *, int); @@ -295,6 +297,8 @@ */ #define APM_ZERO_SEGS +#include "apm.h" + /* * Define to make all _set_limit calls use 64k limits. The APM 1.1 BIOS is * supposed to provide limit information that it recognizes. Many machines @@ -556,24 +560,11 @@ unsigned int saved_fs; unsigned int saved_gs; # define APM_DO_SAVE_SEGS \ savesegment(fs, saved_fs); savesegment(gs, saved_gs) -# define APM_DO_ZERO_SEGS \ - "pushl %%ds\n\t" \ - "pushl %%es\n\t" \ - "xorl %%edx, %%edx\n\t" \ - "mov %%dx, %%ds\n\t" \ - "mov %%dx, %%es\n\t" \ - "mov %%dx, %%fs\n\t" \ - "mov %%dx, %%gs\n\t" -# define APM_DO_POP_SEGS \ - "popl %%es\n\t" \ - "popl %%ds\n\t" # define APM_DO_RESTORE_SEGS \ loadsegment(fs, saved_fs); loadsegment(gs, saved_gs) #else # define APM_DECL_SEGS # define APM_DO_SAVE_SEGS -# define APM_DO_ZERO_SEGS -# define APM_DO_POP_SEGS # define APM_DO_RESTORE_SEGS #endif @@ -615,22 +606,7 @@ local_save_flags(flags); APM_DO_CLI; APM_DO_SAVE_SEGS; - /* - * N.B. We do NOT need a cld after the BIOS call - * because we always save and restore the flags. - */ - __asm__ __volatile__(APM_DO_ZERO_SEGS - "pushl %%edi\n\t" - "pushl %%ebp\n\t" - "lcall *%%cs:apm_bios_entry\n\t" - "setc %%al\n\t" - "popl %%ebp\n\t" - "popl %%edi\n\t" - APM_DO_POP_SEGS - : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx), - "=S" (*esi) - : "a" (func), "b" (ebx_in), "c" (ecx_in) - : "memory", "cc"); + apm_bios_call_asm(func, ebx_in, ecx_in, eax, ebx, ecx, edx, esi); APM_DO_RESTORE_SEGS; local_irq_restore(flags); cpu_gdt_table[cpu][0x40 / 8] = save_desc_40; @@ -673,26 +649,7 @@ local_save_flags(flags); APM_DO_CLI; APM_DO_SAVE_SEGS; - { - int cx, dx, si; - - /* - * N.B. We do NOT need a cld after the BIOS call - * because we always save and restore the flags. - */ - __asm__ __volatile__(APM_DO_ZERO_SEGS - "pushl %%edi\n\t" - "pushl %%ebp\n\t" - "lcall *%%cs:apm_bios_entry\n\t" - "setc %%bl\n\t" - "popl %%ebp\n\t" - "popl %%edi\n\t" - APM_DO_POP_SEGS - : "=a" (*eax), "=b" (error), "=c" (cx), "=d" (dx), - "=S" (si) - : "a" (func), "b" (ebx_in), "c" (ecx_in) - : "memory", "cc"); - } + error = apm_bios_call_simple_asm(func, ebx_in, ecx_in, eax); APM_DO_RESTORE_SEGS; local_irq_restore(flags); cpu_gdt_table[smp_processor_id()][0x40 / 8] = save_desc_40; @@ -1212,11 +1169,11 @@ { #ifdef INIT_TIMER_AFTER_SUSPEND /* set the clock to 100 Hz */ - outb_p(0x34,0x43); /* binary, mode 2, LSB/MSB, ch 0 */ + outb_p(0x34, PIT_MODE); /* binary, mode 2, LSB/MSB, ch 0 */ udelay(10); - outb_p(LATCH & 0xff , 0x40); /* LSB */ + outb_p(LATCH & 0xff, PIT_CH0); /* LSB */ udelay(10); - outb(LATCH >> 8 , 0x40); /* MSB */ + outb(LATCH >> 8, PIT_CH0); /* MSB */ udelay(10); #endif } diff -Nru a/arch/i386/kernel/cpu/common.c b/arch/i386/kernel/cpu/common.c --- a/arch/i386/kernel/cpu/common.c Thu Mar 13 15:47:14 2003 +++ b/arch/i386/kernel/cpu/common.c Sun Mar 23 07:55:48 2003 @@ -217,6 +217,10 @@ c->x86_capability[4] = excap; c->x86 = (tfms >> 8) & 15; c->x86_model = (tfms >> 4) & 15; + if (c->x86 == 0xf) { + c->x86 += (tfms >> 20) & 0xff; + c->x86_model += ((tfms >> 16) & 0xF) << 4; + } c->x86_mask = tfms & 15; } else { /* Have CPUID level 0 only - unheard of */ diff -Nru a/arch/i386/kernel/i387.c b/arch/i386/kernel/i387.c --- a/arch/i386/kernel/i387.c Mon Mar 10 10:20:30 2003 +++ b/arch/i386/kernel/i387.c Tue Apr 8 22:45:37 2003 @@ -40,10 +40,10 @@ tsk->thread.i387.fxsave.mxcsr = 0x1f80; } else { memset(&tsk->thread.i387.fsave, 0, sizeof(struct i387_fsave_struct)); - tsk->thread.i387.fsave.cwd = 0xffff037f; - tsk->thread.i387.fsave.swd = 0xffff0000; - tsk->thread.i387.fsave.twd = 0xffffffff; - tsk->thread.i387.fsave.fos = 0xffff0000; + tsk->thread.i387.fsave.cwd = 0xffff037fu; + tsk->thread.i387.fsave.swd = 0xffff0000u; + tsk->thread.i387.fsave.twd = 0xffffffffu; + tsk->thread.i387.fsave.fos = 0xffff0000u; } tsk->used_math = 1; } @@ -98,7 +98,7 @@ struct _fpxreg *st = NULL; unsigned long twd = (unsigned long) fxsave->twd; unsigned long tag; - unsigned long ret = 0xffff0000; + unsigned long ret = 0xffff0000u; int i; #define FPREG_ADDR(f, n) ((char *)&(f)->st_space + (n) * 16); @@ -183,7 +183,7 @@ if ( cpu_has_fxsr ) { tsk->thread.i387.fxsave.cwd = cwd; } else { - tsk->thread.i387.fsave.cwd = ((long)cwd | 0xffff0000); + tsk->thread.i387.fsave.cwd = ((long)cwd | 0xffff0000u); } } @@ -192,7 +192,7 @@ if ( cpu_has_fxsr ) { tsk->thread.i387.fxsave.swd = swd; } else { - tsk->thread.i387.fsave.swd = ((long)swd | 0xffff0000); + tsk->thread.i387.fsave.swd = ((long)swd | 0xffff0000u); } } @@ -201,7 +201,7 @@ if ( cpu_has_fxsr ) { tsk->thread.i387.fxsave.twd = twd_i387_to_fxsr(twd); } else { - tsk->thread.i387.fsave.twd = ((long)twd | 0xffff0000); + tsk->thread.i387.fsave.twd = ((long)twd | 0xffff0000u); } } @@ -216,16 +216,16 @@ * FXSR floating point environment conversions. */ -static int convert_fxsr_to_user( struct _fpstate *buf, +static int convert_fxsr_to_user( struct _fpstate __user *buf, struct i387_fxsave_struct *fxsave ) { unsigned long env[7]; - struct _fpreg *to; + struct _fpreg __user *to; struct _fpxreg *from; int i; - env[0] = (unsigned long)fxsave->cwd | 0xffff0000; - env[1] = (unsigned long)fxsave->swd | 0xffff0000; + env[0] = (unsigned long)fxsave->cwd | 0xffff0000ul; + env[1] = (unsigned long)fxsave->swd | 0xffff0000ul; env[2] = twd_fxsr_to_i387(fxsave); env[3] = fxsave->fip; env[4] = fxsave->fcs | ((unsigned long)fxsave->fop << 16); @@ -250,11 +250,11 @@ } static int convert_fxsr_from_user( struct i387_fxsave_struct *fxsave, - struct _fpstate *buf ) + struct _fpstate __user *buf ) { unsigned long env[7]; struct _fpxreg *to; - struct _fpreg *from; + struct _fpreg __user *from; int i; if ( __copy_from_user( env, buf, 7 * sizeof(long) ) ) @@ -264,7 +264,7 @@ fxsave->swd = (unsigned short)(env[1] & 0xffff); fxsave->twd = twd_i387_to_fxsr((unsigned short)(env[2] & 0xffff)); fxsave->fip = env[3]; - fxsave->fop = (unsigned short)((env[4] & 0xffff0000) >> 16); + fxsave->fop = (unsigned short)((env[4] & 0xffff0000ul) >> 16); fxsave->fcs = (env[4] & 0xffff); fxsave->foo = env[5]; fxsave->fos = env[6]; @@ -275,9 +275,9 @@ unsigned long *t = (unsigned long *)to; unsigned long *f = (unsigned long *)from; - if (__get_user(*f, t) || - __get_user(*(f + 1), t + 1) || - __get_user(from->exponent, &to->exponent)) + if (__get_user(*t, f) || + __get_user(*(t + 1), f + 1) || + __get_user(to->exponent, &from->exponent)) return 1; } return 0; @@ -287,7 +287,7 @@ * Signal frame handlers. */ -static inline int save_i387_fsave( struct _fpstate *buf ) +static inline int save_i387_fsave( struct _fpstate __user *buf ) { struct task_struct *tsk = current; @@ -299,7 +299,7 @@ return 1; } -static int save_i387_fxsave( struct _fpstate *buf ) +static int save_i387_fxsave( struct _fpstate __user *buf ) { struct task_struct *tsk = current; int err = 0; @@ -320,7 +320,7 @@ return 1; } -int save_i387( struct _fpstate *buf ) +int save_i387( struct _fpstate __user *buf ) { if ( !current->used_math ) return 0; @@ -341,7 +341,7 @@ } } -static inline int restore_i387_fsave( struct _fpstate *buf ) +static inline int restore_i387_fsave( struct _fpstate __user *buf ) { struct task_struct *tsk = current; clear_fpu( tsk ); @@ -349,7 +349,7 @@ sizeof(struct i387_fsave_struct) ); } -static int restore_i387_fxsave( struct _fpstate *buf ) +static int restore_i387_fxsave( struct _fpstate __user *buf ) { int err; struct task_struct *tsk = current; @@ -361,7 +361,7 @@ return err ? 1 : convert_fxsr_from_user( &tsk->thread.i387.fxsave, buf ); } -int restore_i387( struct _fpstate *buf ) +int restore_i387( struct _fpstate __user *buf ) { int err; @@ -382,21 +382,21 @@ * ptrace request handlers. */ -static inline int get_fpregs_fsave( struct user_i387_struct *buf, +static inline int get_fpregs_fsave( struct user_i387_struct __user *buf, struct task_struct *tsk ) { return __copy_to_user( buf, &tsk->thread.i387.fsave, sizeof(struct user_i387_struct) ); } -static inline int get_fpregs_fxsave( struct user_i387_struct *buf, +static inline int get_fpregs_fxsave( struct user_i387_struct __user *buf, struct task_struct *tsk ) { - return convert_fxsr_to_user( (struct _fpstate *)buf, + return convert_fxsr_to_user( (struct _fpstate __user *)buf, &tsk->thread.i387.fxsave ); } -int get_fpregs( struct user_i387_struct *buf, struct task_struct *tsk ) +int get_fpregs( struct user_i387_struct __user *buf, struct task_struct *tsk ) { if ( HAVE_HWFP ) { if ( cpu_has_fxsr ) { @@ -406,25 +406,25 @@ } } else { return save_i387_soft( &tsk->thread.i387.soft, - (struct _fpstate *)buf ); + (struct _fpstate __user *)buf ); } } static inline int set_fpregs_fsave( struct task_struct *tsk, - struct user_i387_struct *buf ) + struct user_i387_struct __user *buf ) { return __copy_from_user( &tsk->thread.i387.fsave, buf, sizeof(struct user_i387_struct) ); } static inline int set_fpregs_fxsave( struct task_struct *tsk, - struct user_i387_struct *buf ) + struct user_i387_struct __user *buf ) { return convert_fxsr_from_user( &tsk->thread.i387.fxsave, - (struct _fpstate *)buf ); + (struct _fpstate __user *)buf ); } -int set_fpregs( struct task_struct *tsk, struct user_i387_struct *buf ) +int set_fpregs( struct task_struct *tsk, struct user_i387_struct __user *buf ) { if ( HAVE_HWFP ) { if ( cpu_has_fxsr ) { @@ -434,14 +434,14 @@ } } else { return restore_i387_soft( &tsk->thread.i387.soft, - (struct _fpstate *)buf ); + (struct _fpstate __user *)buf ); } } -int get_fpxregs( struct user_fxsr_struct *buf, struct task_struct *tsk ) +int get_fpxregs( struct user_fxsr_struct __user *buf, struct task_struct *tsk ) { if ( cpu_has_fxsr ) { - if (__copy_to_user( (void *)buf, &tsk->thread.i387.fxsave, + if (__copy_to_user( buf, &tsk->thread.i387.fxsave, sizeof(struct user_fxsr_struct) )) return -EFAULT; return 0; @@ -450,10 +450,10 @@ } } -int set_fpxregs( struct task_struct *tsk, struct user_fxsr_struct *buf ) +int set_fpxregs( struct task_struct *tsk, struct user_fxsr_struct __user *buf ) { if ( cpu_has_fxsr ) { - __copy_from_user( &tsk->thread.i387.fxsave, (void *)buf, + __copy_from_user( &tsk->thread.i387.fxsave, buf, sizeof(struct user_fxsr_struct) ); /* mxcsr bit 6 and 31-16 must be zero for security reasons */ tsk->thread.i387.fxsave.mxcsr &= 0xffbf; diff -Nru a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c --- a/arch/i386/kernel/io_apic.c Mon Apr 7 09:41:51 2003 +++ b/arch/i386/kernel/io_apic.c Mon Apr 7 16:40:21 2003 @@ -38,6 +38,8 @@ #include +#include "io_ports.h" + #undef APIC_LOCKUP_DEBUG #define APIC_LOCKUP_DEBUG @@ -2135,7 +2137,7 @@ * Additionally, something is definitely wrong with irq9 * on PIIX4 boards. */ -#define PIC_IRQS (1<<2) +#define PIC_IRQS (1 << PIC_CASCADE_IR) void __init setup_IO_APIC(void) { diff -Nru a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c --- a/arch/i386/kernel/signal.c Tue Feb 11 04:25:29 2003 +++ b/arch/i386/kernel/signal.c Tue Apr 8 21:33:40 2003 @@ -53,7 +53,7 @@ } asmlinkage int -sys_rt_sigsuspend(sigset_t *unewset, size_t sigsetsize) +sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize) { struct pt_regs * regs = (struct pt_regs *) &unewset; sigset_t saveset, newset; @@ -82,8 +82,8 @@ } asmlinkage int -sys_sigaction(int sig, const struct old_sigaction *act, - struct old_sigaction *oact) +sys_sigaction(int sig, const struct old_sigaction __user *act, + struct old_sigaction __user *oact) { struct k_sigaction new_ka, old_ka; int ret; @@ -148,7 +148,7 @@ }; static int -restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *peax) +restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *peax) { unsigned int err = 0; @@ -192,7 +192,7 @@ } { - struct _fpstate * buf; + struct _fpstate __user * buf; err |= __get_user(buf, &sc->fpstate); if (buf) { if (verify_area(VERIFY_READ, buf, sizeof(*buf))) @@ -211,7 +211,7 @@ asmlinkage int sys_sigreturn(unsigned long __unused) { struct pt_regs *regs = (struct pt_regs *) &__unused; - struct sigframe *frame = (struct sigframe *)(regs->esp - 8); + struct sigframe __user *frame = (struct sigframe __user *)(regs->esp - 8); sigset_t set; int eax; @@ -241,7 +241,7 @@ asmlinkage int sys_rt_sigreturn(unsigned long __unused) { struct pt_regs *regs = (struct pt_regs *) &__unused; - struct rt_sigframe *frame = (struct rt_sigframe *)(regs->esp - 4); + struct rt_sigframe __user *frame = (struct rt_sigframe __user *)(regs->esp - 4); sigset_t set; stack_t st; int eax; @@ -278,7 +278,7 @@ */ static int -setup_sigcontext(struct sigcontext *sc, struct _fpstate *fpstate, +setup_sigcontext(struct sigcontext __user *sc, struct _fpstate __user *fpstate, struct pt_regs *regs, unsigned long mask) { int tmp, err = 0; @@ -323,7 +323,7 @@ /* * Determine which stack to use.. */ -static inline void * +static inline void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) { unsigned long esp; @@ -344,14 +344,14 @@ esp = (unsigned long) ka->sa.sa_restorer; } - return (void *)((esp - frame_size) & -8ul); + return (void __user *)((esp - frame_size) & -8ul); } static void setup_frame(int sig, struct k_sigaction *ka, sigset_t *set, struct pt_regs * regs) { void *restorer; - struct sigframe *frame; + struct sigframe __user *frame; int err = 0; frame = get_sigframe(ka, regs, sizeof(*frame)); @@ -373,7 +373,7 @@ goto give_sigsegv; if (_NSIG_WORDS > 1) { - err |= __copy_to_user(frame->extramask, &set->sig[1], + err |= __copy_to_user(&frame->extramask, &set->sig[1], sizeof(frame->extramask)); } if (err) @@ -428,7 +428,7 @@ sigset_t *set, struct pt_regs * regs) { void *restorer; - struct rt_sigframe *frame; + struct rt_sigframe __user *frame; int err = 0; frame = get_sigframe(ka, regs, sizeof(*frame)); diff -Nru a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c --- a/arch/i386/kernel/smpboot.c Thu Mar 27 21:15:25 2003 +++ b/arch/i386/kernel/smpboot.c Tue Apr 8 11:19:15 2003 @@ -49,10 +49,10 @@ #include #include #include -#include "smpboot_hooks.h" #include #include +#include /* Set if we find a B stepping CPU */ static int __initdata smp_b_stepping; @@ -823,13 +823,7 @@ store_NMI_vector(&nmi_high, &nmi_low); - CMOS_WRITE(0xa, 0xf); - local_flush_tlb(); - Dprintk("1.\n"); - *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4; - Dprintk("2.\n"); - *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf; - Dprintk("3.\n"); + smpboot_setup_warm_reset_vector(start_eip); /* * Starting actual IPI sequence... @@ -1045,7 +1039,7 @@ /* * Cleanup possible dangling ends... */ - smpboot_setup_warm_reset_vector(); + smpboot_restore_warm_reset_vector(); /* * Allow the user to impress friends. diff -Nru a/arch/i386/kernel/suspend.c b/arch/i386/kernel/suspend.c --- a/arch/i386/kernel/suspend.c Mon Feb 24 10:30:22 2003 +++ b/arch/i386/kernel/suspend.c Thu Apr 3 15:03:46 2003 @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff -Nru a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c --- a/arch/i386/kernel/traps.c Mon Mar 17 21:33:07 2003 +++ b/arch/i386/kernel/traps.c Wed Apr 9 01:01:38 2003 @@ -257,6 +257,15 @@ show_registers(regs); bust_spinlocks(0); spin_unlock_irq(&die_lock); + if (in_interrupt()) + panic("Fatal exception in interrupt"); + + if (panic_on_oops) { + printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(5 * HZ); + panic("Fatal exception"); + } do_exit(SIGSEGV); } diff -Nru a/arch/i386/kernel/vm86.c b/arch/i386/kernel/vm86.c --- a/arch/i386/kernel/vm86.c Tue Apr 1 15:26:40 2003 +++ b/arch/i386/kernel/vm86.c Thu Apr 3 07:48:45 2003 @@ -30,6 +30,7 @@ * */ +#include #include #include #include @@ -725,7 +726,7 @@ void release_x86_irqs(struct task_struct *task) { int i; - for (i=3; i<16; i++) + for (i = FIRST_VM86_IRQ ; i <= LAST_VM86_IRQ; i++) if (vm86_irqs[i].tsk == task) free_vm86_irq(i); } @@ -735,7 +736,7 @@ int bit; unsigned long flags; - if ( (irqnumber<3) || (irqnumber>15) ) return 0; + if (invalid_vm86_irq(irqnumber)) return 0; if (vm86_irqs[irqnumber].tsk != current) return 0; spin_lock_irqsave(&irqbits_lock, flags); bit = irqbits & (1 << irqnumber); @@ -760,7 +761,7 @@ int irq = irqnumber & 255; if (!capable(CAP_SYS_ADMIN)) return -EPERM; if (!((1 << sig) & ALLOWED_SIGS)) return -EPERM; - if ( (irq<3) || (irq>15) ) return -EPERM; + if (invalid_vm86_irq(irq)) return -EPERM; if (vm86_irqs[irq].tsk) return -EPERM; ret = request_irq(irq, &irq_handler, 0, VM86_IRQNAME, 0); if (ret) return ret; @@ -769,7 +770,7 @@ return irq; } case VM86_FREE_IRQ: { - if ( (irqnumber<3) || (irqnumber>15) ) return -EPERM; + if (invalid_vm86_irq(irqnumber)) return -EPERM; if (!vm86_irqs[irqnumber].tsk) return 0; if (vm86_irqs[irqnumber].tsk != current) return -EPERM; free_vm86_irq(irqnumber); diff -Nru a/arch/ia64/Kconfig b/arch/ia64/Kconfig --- a/arch/ia64/Kconfig Sat Mar 8 14:50:37 2003 +++ b/arch/ia64/Kconfig Tue Apr 8 12:03:12 2003 @@ -401,6 +401,15 @@ endchoice +config IA64_PAL_IDLE + bool "Use PAL_HALT_LIGHT in idle loop" + ---help--- + Say Y here to enable use of PAL_HALT_LIGHT in the cpu_idle loop. + This allows the CPU to enter a low power state when idle. You + can enable CONFIG_IA64_PALINFO and check /proc/pal/cpu0/power_info + to see the power consumption and latency for this state. If you're + unsure your firmware supports it, answer N. + config SMP bool "SMP support" ---help--- diff -Nru a/arch/ia64/Makefile b/arch/ia64/Makefile --- a/arch/ia64/Makefile Mon Feb 24 05:40:16 2003 +++ b/arch/ia64/Makefile Wed Mar 26 08:30:43 2003 @@ -14,6 +14,7 @@ OBJCOPYFLAGS := --strip-all LDFLAGS_vmlinux := -static +LDFLAGS_MODULE += -T arch/ia64/module.lds AFLAGS_KERNEL := -mconstant-gp EXTRA := @@ -23,7 +24,7 @@ GCC_VERSION=$(shell $(CC) -v 2>&1 | fgrep 'gcc version' | cut -f3 -d' ' | cut -f1 -d'.') -GAS_STATUS=$(shell arch/ia64/scripts/check-gas $(CC)) +GAS_STATUS=$(shell arch/ia64/scripts/check-gas $(CC) $(OBJDUMP)) ifeq ($(GAS_STATUS),buggy) $(error Sorry, you need a newer version of the assember, one that is built from \ @@ -50,11 +51,8 @@ core-$(CONFIG_IA64_GENERIC) += arch/ia64/dig/ arch/ia64/hp/common/ arch/ia64/hp/zx1/ \ arch/ia64/hp/sim/ core-$(CONFIG_IA64_HP_ZX1) += arch/ia64/dig/ -core-$(CONFIG_IA64_SGI_SN) += arch/ia64/sn/kernel/ \ - arch/ia64/sn/io/ \ - arch/ia64/sn/io/sn2/ \ - arch/ia64/sn/io/sn2/pcibr/ \ - arch/ia64/sn/kernel/sn2/ +core-$(CONFIG_IA64_SGI_SN) += arch/ia64/sn/ + drivers-$(CONFIG_PCI) += arch/ia64/pci/ drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ diff -Nru a/arch/ia64/boot/Makefile b/arch/ia64/boot/Makefile --- a/arch/ia64/boot/Makefile Sun Mar 9 13:47:41 2003 +++ b/arch/ia64/boot/Makefile Tue Apr 8 12:03:12 2003 @@ -9,7 +9,6 @@ # targets-$(CONFIG_IA64_HP_SIM) += bootloader -targets-$(CONFIG_IA64_GENERIC) += bootloader targets := vmlinux.bin vmlinux.gz $(targets-y) quiet_cmd_cptotop = LN $@ diff -Nru a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c --- a/arch/ia64/hp/common/sba_iommu.c Tue Feb 4 17:06:01 2003 +++ b/arch/ia64/hp/common/sba_iommu.c Thu Apr 3 12:32:33 2003 @@ -1497,7 +1497,7 @@ ioc = &sba_dev->ioc[0]; /* FIXME: Multi-IOC support! */ total_pages = (int) (ioc->res_size << 3); /* 8 bits per byte */ - sprintf(buf, "%s rev %d.%d\n", "Hewlett Packard zx1 SBA", + sprintf(buf, "%s rev %d.%d\n", "Hewlett-Packard zx1 SBA", ((sba_dev->hw_rev >> 4) & 0xF), (sba_dev->hw_rev & 0xF)); sprintf(buf, "%sIO PDIR size : %d bytes (%d entries)\n", buf, (int) ((ioc->res_size << 3) * sizeof(u64)), /* 8 bits/byte */ total_pages); diff -Nru a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S --- a/arch/ia64/ia32/ia32_entry.S Sat Mar 8 11:30:11 2003 +++ b/arch/ia64/ia32/ia32_entry.S Sun Mar 9 01:34:44 2003 @@ -253,7 +253,7 @@ data8 sys_umount /* recycled never used phys( */ data8 sys32_ni_syscall /* old lock syscall holder */ data8 sys32_ioctl - data8 sys32_fcntl /* 55 */ + data8 compat_sys_fcntl /* 55 */ data8 sys32_ni_syscall /* old mpx syscall holder */ data8 sys_setpgid data8 sys32_ni_syscall /* old ulimit syscall holder */ @@ -419,7 +419,7 @@ data8 sys_mincore data8 sys_madvise data8 sys_getdents64 /* 220 */ - data8 sys32_fcntl64 + data8 compat_sys_fcntl64 data8 sys_ni_syscall /* reserved for TUX */ data8 sys_ni_syscall /* reserved for Security */ data8 sys_gettid diff -Nru a/arch/ia64/ia32/ia32_signal.c b/arch/ia64/ia32/ia32_signal.c --- a/arch/ia64/ia32/ia32_signal.c Tue Feb 25 02:41:21 2003 +++ b/arch/ia64/ia32/ia32_signal.c Wed Apr 9 11:51:33 2003 @@ -114,6 +114,7 @@ int copy_siginfo_to_user32 (siginfo_t32 *to, siginfo_t *from) { + unsigned int addr; int err; if (!access_ok(VERIFY_WRITE, to, sizeof(siginfo_t32))) @@ -147,6 +148,12 @@ case __SI_POLL >> 16: err |= __put_user(from->si_band, &to->si_band); err |= __put_user(from->si_fd, &to->si_fd); + break; + case __SI_TIMER >> 16: + err |= __put_user(from->si_tid, &to->si_tid); + err |= __put_user(from->si_overrun, &to->si_overrun); + addr = (unsigned long) from->si_ptr; + err |= __put_user(addr, &to->si_ptr); break; /* case __SI_RT: This is not generated by the kernel as of now. */ } diff -Nru a/arch/ia64/ia32/sys_ia32.c b/arch/ia64/ia32/sys_ia32.c --- a/arch/ia64/ia32/sys_ia32.c Sun Mar 23 14:36:29 2003 +++ b/arch/ia64/ia32/sys_ia32.c Wed Apr 9 11:51:34 2003 @@ -119,10 +119,8 @@ asmlinkage long sys32_execve (char *filename, unsigned int argv, unsigned int envp, - int dummy3, int dummy4, int dummy5, int dummy6, int dummy7, - int stack) + struct pt_regs *regs) { - struct pt_regs *regs = (struct pt_regs *)&stack; unsigned long old_map_base, old_task_size, tssd; char **av, **ae; int na, ne, len; @@ -1701,7 +1699,7 @@ return shmctl32(first, second, (void *)AA(ptr)); default: - return -EINVAL; + return -ENOSYS; } return -EINVAL; } @@ -2156,26 +2154,23 @@ ret = -ESRCH; read_lock(&tasklist_lock); child = find_task_by_pid(pid); + if (child) + get_task_struct(child); read_unlock(&tasklist_lock); if (!child) goto out; ret = -EPERM; if (pid == 1) /* no messing around with init! */ - goto out; + goto out_tsk; if (request == PTRACE_ATTACH) { ret = sys_ptrace(request, pid, addr, data, arg4, arg5, arg6, arg7, stack); - goto out; - } - ret = -ESRCH; - if (!(child->ptrace & PT_PTRACED)) - goto out; - if (child->state != TASK_STOPPED) { - if (request != PTRACE_KILL) - goto out; + goto out_tsk; } - if (child->parent != current) - goto out; + + ret = ptrace_check_attach(child, request == PTRACE_KILL); + if (ret < 0) + goto out_tsk; switch (request) { case PTRACE_PEEKTEXT: @@ -2185,12 +2180,12 @@ ret = put_user(value, (unsigned int *) A(data)); else ret = -EIO; - goto out; + goto out_tsk; case PTRACE_POKETEXT: case PTRACE_POKEDATA: /* write the word at location addr */ ret = ia32_poke(regs, child, addr, data); - goto out; + goto out_tsk; case PTRACE_PEEKUSR: /* read word at addr in USER area */ ret = -EIO; @@ -2265,43 +2260,13 @@ break; } + out_tsk: + put_task_struct(child); out: unlock_kernel(); return ret; } -extern asmlinkage long sys_fcntl (unsigned int fd, unsigned int cmd, unsigned long arg); - -asmlinkage long -sys32_fcntl (unsigned int fd, unsigned int cmd, unsigned int arg) -{ - mm_segment_t old_fs; - struct flock f; - long ret; - - switch (cmd) { - case F_GETLK: - case F_SETLK: - case F_SETLKW: - if (get_compat_flock(&f, (struct compat_flock *) A(arg))) - return -EFAULT; - old_fs = get_fs(); - set_fs(KERNEL_DS); - ret = sys_fcntl(fd, cmd, (unsigned long) &f); - set_fs(old_fs); - if (cmd == F_GETLK && put_compat_flock(&f, (struct compat_flock *) A(arg))) - return -EFAULT; - return ret; - - default: - /* - * `sys_fcntl' lies about arg, for the F_SETOWN - * sub-function arg can have a negative value. - */ - return sys_fcntl(fd, cmd, arg); - } -} - asmlinkage long sys_ni_syscall(void); asmlinkage long @@ -2593,66 +2558,6 @@ set_fs(KERNEL_DS); ret = sys_setgroups(gidsetsize, gl); set_fs(old_fs); - return ret; -} - -/* - * Unfortunately, the x86 compiler aligns variables of type "long long" to a 4 byte boundary - * only, which means that the x86 version of "struct flock64" doesn't match the ia64 version - * of struct flock. - */ - -static inline long -ia32_put_flock (struct flock *l, unsigned long addr) -{ - return (put_user(l->l_type, (short *) addr) - | put_user(l->l_whence, (short *) (addr + 2)) - | put_user(l->l_start, (long *) (addr + 4)) - | put_user(l->l_len, (long *) (addr + 12)) - | put_user(l->l_pid, (int *) (addr + 20))); -} - -static inline long -ia32_get_flock (struct flock *l, unsigned long addr) -{ - unsigned int start_lo, start_hi, len_lo, len_hi; - int err = (get_user(l->l_type, (short *) addr) - | get_user(l->l_whence, (short *) (addr + 2)) - | get_user(start_lo, (int *) (addr + 4)) - | get_user(start_hi, (int *) (addr + 8)) - | get_user(len_lo, (int *) (addr + 12)) - | get_user(len_hi, (int *) (addr + 16)) - | get_user(l->l_pid, (int *) (addr + 20))); - l->l_start = ((unsigned long) start_hi << 32) | start_lo; - l->l_len = ((unsigned long) len_hi << 32) | len_lo; - return err; -} - -asmlinkage long -sys32_fcntl64 (unsigned int fd, unsigned int cmd, unsigned int arg) -{ - mm_segment_t old_fs; - struct flock f; - long ret; - - switch (cmd) { - case F_GETLK64: - case F_SETLK64: - case F_SETLKW64: - if (ia32_get_flock(&f, arg)) - return -EFAULT; - old_fs = get_fs(); - set_fs(KERNEL_DS); - ret = sys_fcntl(fd, cmd, (unsigned long) &f); - set_fs(old_fs); - if (cmd == F_GETLK && ia32_put_flock(&f, arg)) - return -EFAULT; - break; - - default: - ret = sys32_fcntl(fd, cmd, arg); - break; - } return ret; } diff -Nru a/arch/ia64/kernel/Makefile b/arch/ia64/kernel/Makefile --- a/arch/ia64/kernel/Makefile Sun Mar 9 14:15:54 2003 +++ b/arch/ia64/kernel/Makefile Tue Apr 8 12:03:13 2003 @@ -4,16 +4,15 @@ extra-y := head.o init_task.o -obj-y := acpi.o entry.o gate.o efi.o efi_stub.o ia64_ksyms.o \ - irq.o irq_ia64.o irq_lsapic.o ivt.o \ - machvec.o pal.o process.o perfmon.o ptrace.o sal.o \ - semaphore.o setup.o \ - signal.o sys_ia64.o traps.o time.o unaligned.o unwind.o +obj-y := acpi.o entry.o efi.o efi_stub.o gate.o ia64_ksyms.o irq.o irq_ia64.o irq_lsapic.o \ + ivt.o machvec.o pal.o perfmon.o process.o ptrace.o sal.o semaphore.o setup.o signal.o \ + sys_ia64.o time.o traps.o unaligned.o unwind.o -obj-$(CONFIG_FSYS) += fsys.o -obj-$(CONFIG_IOSAPIC) += iosapic.o -obj-$(CONFIG_IA64_PALINFO) += palinfo.o -obj-$(CONFIG_EFI_VARS) += efivars.o -obj-$(CONFIG_SMP) += smp.o smpboot.o -obj-$(CONFIG_IA64_MCA) += mca.o mca_asm.o -obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o +obj-$(CONFIG_EFI_VARS) += efivars.o +obj-$(CONFIG_FSYS) += fsys.o +obj-$(CONFIG_IA64_BRL_EMU) += brl_emu.o +obj-$(CONFIG_IA64_MCA) += mca.o mca_asm.o +obj-$(CONFIG_IA64_PALINFO) += palinfo.o +obj-$(CONFIG_IOSAPIC) += iosapic.o +obj-$(CONFIG_MODULES) += module.o +obj-$(CONFIG_SMP) += smp.o smpboot.o diff -Nru a/arch/ia64/kernel/acpi-ext.c b/arch/ia64/kernel/acpi-ext.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/kernel/acpi-ext.c Thu Apr 3 12:32:33 2003 @@ -0,0 +1,71 @@ +/* + * arch/ia64/kernel/acpi-ext.c + * + * Copyright (C) 2003 Hewlett-Packard + * Copyright (C) Alex Williamson + * + * Vendor specific extensions to ACPI. These are used by both + * HP and NEC. + */ + +#include +#include +#include +#include + +#include + +/* + * Note: Strictly speaking, this is only needed for HP and NEC machines. + * However, NEC machines identify themselves as DIG-compliant, so there is + * no easy way to #ifdef this out. + */ +acpi_status +hp_acpi_csr_space (acpi_handle obj, u64 *csr_base, u64 *csr_length) +{ + int i, offset = 0; + acpi_status status; + struct acpi_buffer buf; + struct acpi_resource_vendor *res; + struct acpi_hp_vendor_long *hp_res; + efi_guid_t vendor_guid; + + *csr_base = 0; + *csr_length = 0; + + status = acpi_get_crs(obj, &buf); + if (ACPI_FAILURE(status)) { + printk(KERN_ERR PREFIX "Unable to get _CRS data on object\n"); + return status; + } + + res = (struct acpi_resource_vendor *)acpi_get_crs_type(&buf, &offset, ACPI_RSTYPE_VENDOR); + if (!res) { + printk(KERN_ERR PREFIX "Failed to find config space for device\n"); + acpi_dispose_crs(&buf); + return AE_NOT_FOUND; + } + + hp_res = (struct acpi_hp_vendor_long *)(res->reserved); + + if (res->length != HP_CCSR_LENGTH || hp_res->guid_id != HP_CCSR_TYPE) { + printk(KERN_ERR PREFIX "Unknown Vendor data\n"); + acpi_dispose_crs(&buf); + return AE_TYPE; /* Revisit error? */ + } + + memcpy(&vendor_guid, hp_res->guid, sizeof(efi_guid_t)); + if (efi_guidcmp(vendor_guid, HP_CCSR_GUID) != 0) { + printk(KERN_ERR PREFIX "Vendor GUID does not match\n"); + acpi_dispose_crs(&buf); + return AE_TYPE; /* Revisit error? */ + } + + for (i = 0 ; i < 8 ; i++) { + *csr_base |= ((u64)(hp_res->csr_base[i]) << (i * 8)); + *csr_length |= ((u64)(hp_res->csr_length[i]) << (i * 8)); + } + + acpi_dispose_crs(&buf); + return AE_OK; +} diff -Nru a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c --- a/arch/ia64/kernel/acpi.c Thu Mar 6 22:21:39 2003 +++ b/arch/ia64/kernel/acpi.c Tue Apr 1 07:20:36 2003 @@ -9,7 +9,7 @@ * Copyright (C) 2000,2001 J.I. Lee * Copyright (C) 2001 Paul Diefenbaugh * Copyright (C) 2001 Jenna Hall - * Copyright (C) 2001 Takayoshi Kochi + * Copyright (C) 2001 Takayoshi Kochi * Copyright (C) 2002 Erich Focht * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -109,8 +109,6 @@ return "sn2"; # elif defined (CONFIG_IA64_DIG) return "dig"; -# elif defined (CONFIG_IA64_HP_ZX1) - return "hpzx1"; # else # error Unknown platform. Fix acpi.c. # endif @@ -176,6 +174,73 @@ kfree(buf->pointer); } +void +acpi_get_crs_addr (struct acpi_buffer *buf, int type, u64 *base, u64 *size, u64 *tra) +{ + int offset = 0; + struct acpi_resource_address16 *addr16; + struct acpi_resource_address32 *addr32; + struct acpi_resource_address64 *addr64; + + for (;;) { + struct acpi_resource *res = acpi_get_crs_next(buf, &offset); + if (!res) + return; + switch (res->id) { + case ACPI_RSTYPE_ADDRESS16: + addr16 = (struct acpi_resource_address16 *) &res->data; + + if (type == addr16->resource_type) { + *base = addr16->min_address_range; + *size = addr16->address_length; + *tra = addr16->address_translation_offset; + return; + } + break; + case ACPI_RSTYPE_ADDRESS32: + addr32 = (struct acpi_resource_address32 *) &res->data; + if (type == addr32->resource_type) { + *base = addr32->min_address_range; + *size = addr32->address_length; + *tra = addr32->address_translation_offset; + return; + } + break; + case ACPI_RSTYPE_ADDRESS64: + addr64 = (struct acpi_resource_address64 *) &res->data; + if (type == addr64->resource_type) { + *base = addr64->min_address_range; + *size = addr64->address_length; + *tra = addr64->address_translation_offset; + return; + } + break; + } + } +} + +int +acpi_get_addr_space(void *obj, u8 type, u64 *base, u64 *length, u64 *tra) +{ + acpi_status status; + struct acpi_buffer buf; + + *base = 0; + *length = 0; + *tra = 0; + + status = acpi_get_crs((acpi_handle)obj, &buf); + if (ACPI_FAILURE(status)) { + printk(KERN_ERR PREFIX "Unable to get _CRS data on object\n"); + return status; + } + + acpi_get_crs_addr(&buf, type, base, length, tra); + + acpi_dispose_crs(&buf); + + return AE_OK; +} #endif /* CONFIG_ACPI */ #ifdef CONFIG_ACPI_BOOT @@ -808,6 +873,7 @@ list_for_each(node, &acpi_prt.entries) { entry = (struct acpi_prt_entry *)node; + vector[i].segment = entry->id.segment; vector[i].bus = entry->id.bus; vector[i].pci_id = ((u32) entry->id.device << 16) | 0xffff; vector[i].pin = entry->pin; diff -Nru a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S --- a/arch/ia64/kernel/entry.S Thu Mar 6 14:56:33 2003 +++ b/arch/ia64/kernel/entry.S Wed Mar 26 09:14:34 2003 @@ -91,7 +91,7 @@ END(ia64_execve) /* - * sys_clone2(u64 flags, u64 ustack_base, u64 ustack_size, u64 child_tidptr, u64 parent_tidptr, + * sys_clone2(u64 flags, u64 ustack_base, u64 ustack_size, u64 parent_tidptr, u64 child_tidptr, * u64 tls) */ GLOBAL_ENTRY(sys_clone2) @@ -105,10 +105,10 @@ mov out1=in1 mov out3=in2 tbit.nz p6,p0=in0,CLONE_SETTLS_BIT - mov out4=in3 // child_tidptr: valid only w/CLONE_CHILD_SETTID or CLONE_CHILD_CLEARTID + mov out4=in3 // parent_tidptr: valid only w/CLONE_PARENT_SETTID ;; (p6) st8 [r2]=in5 // store TLS in r16 for copy_thread() - mov out5=in4 // parent_tidptr: valid only w/CLONE_PARENT_SETTID + mov out5=in4 // child_tidptr: valid only w/CLONE_CHILD_SETTID or CLONE_CHILD_CLEARTID adds out2=IA64_SWITCH_STACK_SIZE+16,sp // out2 = ®s dep out0=0,in0,CLONE_IDLETASK_BIT,1 // out0 = clone_flags & ~CLONE_IDLETASK br.call.sptk.many rp=do_fork @@ -126,12 +126,12 @@ END(sys_clone2) /* - * sys_clone(u64 flags, u64 ustack_base, u64 user_tid, u64 tls) + * sys_clone(u64 flags, u64 ustack_base, u64 parent_tidptr, u64 child_tidptr, u64 tls) * Deprecated. Use sys_clone2() instead. */ GLOBAL_ENTRY(sys_clone) .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2) - alloc r16=ar.pfs,4,2,5,0 + alloc r16=ar.pfs,5,2,6,0 DO_SAVE_SWITCH_STACK adds r2=PT(R16)+IA64_SWITCH_STACK_SIZE+16,sp mov loc0=rp @@ -140,9 +140,10 @@ mov out1=in1 mov out3=16 // stacksize (compensates for 16-byte scratch area) tbit.nz p6,p0=in0,CLONE_SETTLS_BIT - mov out4=in2 // out4 = user_tid (optional) + mov out4=in2 // parent_tidptr: valid only w/CLONE_PARENT_SETTID ;; -(p6) st8 [r2]=in3 // store TLS in r13 (tp) +(p6) st8 [r2]=in4 // store TLS in r13 (tp) + mov out5=in3 // child_tidptr: valid only w/CLONE_CHILD_SETTID or CLONE_CHILD_CLEARTID adds out2=IA64_SWITCH_STACK_SIZE+16,sp // out2 = ®s dep out0=0,in0,CLONE_IDLETASK_BIT,1 // out0 = clone_flags & ~CLONE_IDLETASK br.call.sptk.many rp=do_fork diff -Nru a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S --- a/arch/ia64/kernel/fsys.S Fri Feb 28 16:51:10 2003 +++ b/arch/ia64/kernel/fsys.S Fri Mar 7 04:39:25 2003 @@ -533,15 +533,15 @@ data8 fsys_fallback_syscall // epoll_wait // 1245 data8 fsys_fallback_syscall // restart_syscall data8 fsys_fallback_syscall // semtimedop - data8 fsys_fallback_syscall - data8 fsys_fallback_syscall - data8 fsys_fallback_syscall // 1250 - data8 fsys_fallback_syscall - data8 fsys_fallback_syscall - data8 fsys_fallback_syscall - data8 fsys_fallback_syscall - data8 fsys_fallback_syscall // 1255 - data8 fsys_fallback_syscall + data8 fsys_fallback_syscall // timer_create + data8 fsys_fallback_syscall // timer_settime + data8 fsys_fallback_syscall // timer_gettime // 1250 + data8 fsys_fallback_syscall // timer_getoverrun + data8 fsys_fallback_syscall // timer_delete + data8 fsys_fallback_syscall // clock_settime + data8 fsys_fallback_syscall // clock_gettime + data8 fsys_fallback_syscall // clock_getres // 1255 + data8 fsys_fallback_syscall // clock_nanosleep data8 fsys_fallback_syscall data8 fsys_fallback_syscall data8 fsys_fallback_syscall diff -Nru a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S --- a/arch/ia64/kernel/head.S Tue Jan 14 22:14:16 2003 +++ b/arch/ia64/kernel/head.S Tue Mar 11 17:51:47 2003 @@ -733,73 +733,3 @@ SET_REG(b5); #endif /* CONFIG_IA64_BRL_EMU */ - -#ifdef CONFIG_SMP - - /* - * This routine handles spinlock contention. It uses a simple exponential backoff - * algorithm to reduce unnecessary bus traffic. The initial delay is selected from - * the low-order bits of the cycle counter (a cheap "randomizer"). I'm sure this - * could use additional tuning, especially on systems with a large number of CPUs. - * Also, I think the maximum delay should be made a function of the number of CPUs in - * the system. --davidm 00/08/05 - * - * WARNING: This is not a normal procedure. It gets called from C code without - * the compiler knowing about it. Thus, we must not use any scratch registers - * beyond those that were declared "clobbered" at the call-site (see spin_lock() - * macro). We may not even use the stacked registers, because that could overwrite - * output registers. Similarly, we can't use the scratch stack area as it may be - * in use, too. - * - * Inputs: - * ar.ccv = 0 (and available for use) - * r28 = available for use - * r29 = available for use - * r30 = non-zero (and available for use) - * r31 = address of lock we're trying to acquire - * p15 = available for use - */ - -# define delay r28 -# define timeout r29 -# define tmp r30 - -GLOBAL_ENTRY(ia64_spinlock_contention) - mov tmp=ar.itc - ;; - and delay=0x3f,tmp - ;; - -.retry: add timeout=tmp,delay - shl delay=delay,1 - ;; - dep delay=delay,r0,0,13 // limit delay to 8192 cycles - ;; - // delay a little... -.wait: sub tmp=tmp,timeout - or delay=0xf,delay // make sure delay is non-zero (otherwise we get stuck with 0) - ;; - cmp.lt p15,p0=tmp,r0 - mov tmp=ar.itc -(p15) br.cond.sptk .wait - ;; - ld4 tmp=[r31] - ;; - cmp.ne p15,p0=tmp,r0 - mov tmp=ar.itc -(p15) br.cond.sptk .retry // lock is still busy - ;; - // try acquiring lock (we know ar.ccv is still zero!): - mov tmp=1 - ;; - cmpxchg4.acq tmp=[r31],tmp,ar.ccv - ;; - cmp.eq p15,p0=tmp,r0 - - mov tmp=ar.itc -(p15) br.ret.sptk.many b7 // got lock -> return - br .retry // still no luck, retry - -END(ia64_spinlock_contention) - -#endif diff -Nru a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c --- a/arch/ia64/kernel/ia64_ksyms.c Mon Jan 6 15:36:14 2003 +++ b/arch/ia64/kernel/ia64_ksyms.c Thu Apr 3 00:35:03 2003 @@ -57,9 +57,7 @@ EXPORT_SYMBOL(clear_page); #include -# ifndef CONFIG_NUMA EXPORT_SYMBOL(cpu_info__per_cpu); -# endif EXPORT_SYMBOL(kernel_thread); #include @@ -147,3 +145,19 @@ EXPORT_SYMBOL(pfm_install_alternate_syswide_subsystem); EXPORT_SYMBOL(pfm_remove_alternate_syswide_subsystem); #endif + +#ifdef CONFIG_NUMA +#include +EXPORT_SYMBOL(cpu_to_node_map); +#endif + +#include +EXPORT_SYMBOL(unw_init_from_blocked_task); +EXPORT_SYMBOL(unw_init_running); +EXPORT_SYMBOL(unw_unwind); +EXPORT_SYMBOL(unw_unwind_to_user); +EXPORT_SYMBOL(unw_access_gr); +EXPORT_SYMBOL(unw_access_br); +EXPORT_SYMBOL(unw_access_fr); +EXPORT_SYMBOL(unw_access_ar); +EXPORT_SYMBOL(unw_access_pr); diff -Nru a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c --- a/arch/ia64/kernel/mca.c Tue Mar 4 18:33:56 2003 +++ b/arch/ia64/kernel/mca.c Thu Apr 3 13:24:33 2003 @@ -42,6 +42,10 @@ #include #include #include +#include +#include +#include +#include #include #include @@ -67,7 +71,7 @@ u64 ia64_mca_stack[1024] __attribute__((aligned(16))); u64 ia64_mca_stackframe[32]; u64 ia64_mca_bspstore[1024]; -u64 ia64_init_stack[KERNEL_STACK_SIZE] __attribute__((aligned(16))); +u64 ia64_init_stack[KERNEL_STACK_SIZE/8] __attribute__((aligned(16))); u64 ia64_mca_sal_data_area[1356]; u64 ia64_tlb_functional; u64 ia64_os_mca_recovery_successful; @@ -105,6 +109,19 @@ .name = "cpe_hndlr" }; +#define MAX_CPE_POLL_INTERVAL (15*60*HZ) /* 15 minutes */ +#define MIN_CPE_POLL_INTERVAL (2*60*HZ) /* 2 minutes */ +#define CMC_POLL_INTERVAL (1*60*HZ) /* 1 minute */ +#define CMC_HISTORY_LENGTH 5 + +static struct timer_list cpe_poll_timer; +static struct timer_list cmc_poll_timer; +/* + * Start with this in the wrong state so we won't play w/ timers + * before the system is ready. + */ +static int cmc_polling_enabled = 1; + /* * ia64_mca_log_sal_error_record * @@ -152,7 +169,8 @@ void ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs) { - IA64_MCA_DEBUG("ia64_mca_cpe_int_handler: received interrupt. vector = %#x\n", cpe_irq); + IA64_MCA_DEBUG("ia64_mca_cpe_int_handler: received interrupt. CPU:%d vector = %#x\n", + smp_processor_id(), cpe_irq); /* Get the CMC error record and log it */ ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CPE, 0); @@ -295,6 +313,60 @@ smp_processor_id(), ia64_get_cmcv()); } +/* + * ia64_mca_cmc_vector_disable + * + * Mask the corrected machine check vector register in the processor. + * This function is invoked on a per-processor basis. + * + * Inputs + * dummy(unused) + * + * Outputs + * None + */ +void +ia64_mca_cmc_vector_disable (void *dummy) +{ + cmcv_reg_t cmcv; + + cmcv = (cmcv_reg_t)ia64_get_cmcv(); + + cmcv.cmcv_mask = 1; /* Mask/disable interrupt */ + ia64_set_cmcv(cmcv.cmcv_regval); + + IA64_MCA_DEBUG("ia64_mca_cmc_vector_disable: CPU %d corrected " + "machine check vector %#x disabled.\n", + smp_processor_id(), cmcv.cmcv_vector); +} + +/* + * ia64_mca_cmc_vector_enable + * + * Unmask the corrected machine check vector register in the processor. + * This function is invoked on a per-processor basis. + * + * Inputs + * dummy(unused) + * + * Outputs + * None + */ +void +ia64_mca_cmc_vector_enable (void *dummy) +{ + cmcv_reg_t cmcv; + + cmcv = (cmcv_reg_t)ia64_get_cmcv(); + + cmcv.cmcv_mask = 0; /* Unmask/enable interrupt */ + ia64_set_cmcv(cmcv.cmcv_regval); + + IA64_MCA_DEBUG("ia64_mca_cmc_vector_enable: CPU %d corrected " + "machine check vector %#x enabled.\n", + smp_processor_id(), cmcv.cmcv_vector); +} + #if defined(MCA_TEST) @@ -396,7 +468,7 @@ SAL_MC_PARAM_MECHANISM_INT, IA64_MCA_RENDEZ_VECTOR, IA64_MCA_RENDEZ_TIMEOUT, - 0))) + SAL_MC_PARAM_RZ_ALWAYS))) { printk(KERN_ERR "ia64_mca_init: Failed to register rendezvous interrupt " "with SAL. rc = %ld\n", rc); @@ -494,9 +566,7 @@ setup_irq(irq, &mca_cpe_irqaction); } ia64_mca_register_cpev(cpev); - } else - printk(KERN_ERR - "ia64_mca_init: Failed to get routed CPEI vector from ACPI.\n"); + } } /* Initialize the areas set aside by the OS to buffer the @@ -610,14 +680,11 @@ ia64_mca_rendez_int_handler(int rendez_irq, void *arg, struct pt_regs *ptregs) { unsigned long flags; - int cpu = 0; + int cpu = smp_processor_id(); /* Mask all interrupts */ local_irq_save(flags); -#ifdef CONFIG_SMP - cpu = cpu_logical_id(hard_smp_processor_id()); -#endif ia64_mc_info.imi_rendez_checkin[cpu] = IA64_MCA_RENDEZ_CHECKIN_DONE; /* Register with the SAL monarch that the slave has * reached SAL @@ -751,11 +818,68 @@ void ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs) { + static unsigned long cmc_history[CMC_HISTORY_LENGTH]; + static int index; + static spinlock_t cmc_history_lock = SPIN_LOCK_UNLOCKED; + IA64_MCA_DEBUG("ia64_mca_cmc_int_handler: received interrupt vector = %#x on CPU %d\n", cmc_irq, smp_processor_id()); /* Get the CMC error record and log it */ ia64_mca_log_sal_error_record(SAL_INFO_TYPE_CMC, 0); + + spin_lock(&cmc_history_lock); + if (!cmc_polling_enabled) { + int i, count = 1; /* we know 1 happened now */ + unsigned long now = jiffies; + + for (i = 0; i < CMC_HISTORY_LENGTH; i++) { + if (now - cmc_history[i] <= HZ) + count++; + } + + IA64_MCA_DEBUG(KERN_INFO "CMC threshold %d/%d\n", count, CMC_HISTORY_LENGTH); + if (count >= CMC_HISTORY_LENGTH) { + /* + * CMC threshold exceeded, clear the history + * so we have a fresh start when we return + */ + for (index = 0 ; index < CMC_HISTORY_LENGTH; index++) + cmc_history[index] = 0; + index = 0; + + /* Switch to polling mode */ + cmc_polling_enabled = 1; + + /* + * Unlock & enable interrupts before + * smp_call_function or risk deadlock + */ + spin_unlock(&cmc_history_lock); + ia64_mca_cmc_vector_disable(NULL); + + local_irq_enable(); + smp_call_function(ia64_mca_cmc_vector_disable, NULL, 1, 1); + + /* + * Corrected errors will still be corrected, but + * make sure there's a log somewhere that indicates + * something is generating more than we can handle. + */ + printk(KERN_WARNING "ia64_mca_cmc_int_handler: WARNING: Switching to polling CMC handler, error records may be lost\n"); + + + mod_timer(&cmc_poll_timer, jiffies + CMC_POLL_INTERVAL); + + /* lock already released, get out now */ + return; + } else { + cmc_history[index++] = now; + if (index == CMC_HISTORY_LENGTH) + index = 0; + } + } + spin_unlock(&cmc_history_lock); } /* @@ -768,6 +892,7 @@ { spinlock_t isl_lock; int isl_index; + unsigned long isl_count; ia64_err_rec_t *isl_log[IA64_MAX_LOGS]; /* need space to store header + error log */ } ia64_state_log_t; @@ -784,11 +909,145 @@ #define IA64_LOG_NEXT_INDEX(it) ia64_state_log[it].isl_index #define IA64_LOG_CURR_INDEX(it) 1 - ia64_state_log[it].isl_index #define IA64_LOG_INDEX_INC(it) \ - ia64_state_log[it].isl_index = 1 - ia64_state_log[it].isl_index + {ia64_state_log[it].isl_index = 1 - ia64_state_log[it].isl_index; \ + ia64_state_log[it].isl_count++;} #define IA64_LOG_INDEX_DEC(it) \ ia64_state_log[it].isl_index = 1 - ia64_state_log[it].isl_index #define IA64_LOG_NEXT_BUFFER(it) (void *)((ia64_state_log[it].isl_log[IA64_LOG_NEXT_INDEX(it)])) #define IA64_LOG_CURR_BUFFER(it) (void *)((ia64_state_log[it].isl_log[IA64_LOG_CURR_INDEX(it)])) +#define IA64_LOG_COUNT(it) ia64_state_log[it].isl_count + +/* + * ia64_mca_cmc_int_caller + * + * Call CMC interrupt handler, only purpose is to have a + * smp_call_function callable entry. + * + * Inputs : dummy(unused) + * Outputs : None + * */ +static void +ia64_mca_cmc_int_caller(void *dummy) +{ + ia64_mca_cmc_int_handler(0, NULL, NULL); +} + +/* + * ia64_mca_cmc_poll + * + * Poll for Corrected Machine Checks (CMCs) + * + * Inputs : dummy(unused) + * Outputs : None + * + */ +static void +ia64_mca_cmc_poll (unsigned long dummy) +{ + int start_count; + + start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CMC); + + /* Call the interrupt handler */ + smp_call_function(ia64_mca_cmc_int_caller, NULL, 1, 1); + local_irq_disable(); + ia64_mca_cmc_int_caller(NULL); + local_irq_enable(); + + /* + * If no log recored, switch out of polling mode. + */ + if (start_count == IA64_LOG_COUNT(SAL_INFO_TYPE_CMC)) { + printk(KERN_WARNING "ia64_mca_cmc_poll: Returning to interrupt driven CMC handler\n"); + cmc_polling_enabled = 0; + smp_call_function(ia64_mca_cmc_vector_enable, NULL, 1, 1); + ia64_mca_cmc_vector_enable(NULL); + } else { + mod_timer(&cmc_poll_timer, jiffies + CMC_POLL_INTERVAL); + } +} + +/* + * ia64_mca_cpe_int_caller + * + * Call CPE interrupt handler, only purpose is to have a + * smp_call_function callable entry. + * + * Inputs : dummy(unused) + * Outputs : None + * */ +static void +ia64_mca_cpe_int_caller(void *dummy) +{ + ia64_mca_cpe_int_handler(0, NULL, NULL); +} + +/* + * ia64_mca_cpe_poll + * + * Poll for Corrected Platform Errors (CPEs), dynamically adjust + * polling interval based on occurance of an event. + * + * Inputs : dummy(unused) + * Outputs : None + * + */ +static void +ia64_mca_cpe_poll (unsigned long dummy) +{ + int start_count; + static int poll_time = MAX_CPE_POLL_INTERVAL; + + start_count = IA64_LOG_COUNT(SAL_INFO_TYPE_CPE); + + /* Call the interrupt handler */ + smp_call_function(ia64_mca_cpe_int_caller, NULL, 1, 1); + local_irq_disable(); + ia64_mca_cpe_int_caller(NULL); + local_irq_enable(); + + /* + * If a log was recorded, increase our polling frequency, + * otherwise, backoff. + */ + if (start_count != IA64_LOG_COUNT(SAL_INFO_TYPE_CPE)) { + poll_time = max(MIN_CPE_POLL_INTERVAL, poll_time/2); + } else { + poll_time = min(MAX_CPE_POLL_INTERVAL, poll_time * 2); + } + mod_timer(&cpe_poll_timer, jiffies + poll_time); +} + +/* + * ia64_mca_late_init + * + * Opportunity to setup things that require initialization later + * than ia64_mca_init. Setup a timer to poll for CPEs if the + * platform doesn't support an interrupt driven mechanism. + * + * Inputs : None + * Outputs : Status + */ +static int __init +ia64_mca_late_init(void) +{ + init_timer(&cmc_poll_timer); + cmc_poll_timer.function = ia64_mca_cmc_poll; + + /* Reset to the correct state */ + cmc_polling_enabled = 0; + + init_timer(&cpe_poll_timer); + cpe_poll_timer.function = ia64_mca_cpe_poll; + + /* If platform doesn't support CPEI, get the timer going. */ + if (acpi_request_vector(ACPI_INTERRUPT_CPEI) < 0) + ia64_mca_cpe_poll(0UL); + + return 0; +} + +device_initcall(ia64_mca_late_init); /* * C portion of the OS INIT handler @@ -949,7 +1208,6 @@ return total_len; } else { IA64_LOG_UNLOCK(sal_info_type); - prfunc("ia64_log_get: No SAL error record available for type %d\n", sal_info_type); return 0; } } diff -Nru a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/kernel/module.c Wed Mar 26 12:11:30 2003 @@ -0,0 +1,889 @@ +/* + * IA-64-specific support for kernel module loader. + * + * Copyright (C) 2003 Hewlett-Packard Co + * David Mosberger-Tang + * + * Loosely based on patch by Rusty Russell. + */ + +/* relocs tested so far: + + DIR64LSB + FPTR64LSB + GPREL22 + LDXMOV + LDXMOV + LTOFF22 + LTOFF22X + LTOFF22X + LTOFF_FPTR22 + PCREL21B + PCREL64LSB + SECREL32LSB + SEGREL64LSB + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#define ARCH_MODULE_DEBUG 0 + +#if ARCH_MODULE_DEBUG +# define DEBUGP printk +# define inline +#else +# define DEBUGP(fmt , a...) +#endif + +#ifdef CONFIG_ITANIUM +# define USE_BRL 0 +#else +# define USE_BRL 1 +#endif + +#define MAX_LTOFF ((uint64_t) (1 << 22)) /* max. allowable linkage-table offset */ + +/* Define some relocation helper macros/types: */ + +#define FORMAT_SHIFT 0 +#define FORMAT_BITS 3 +#define FORMAT_MASK ((1 << FORMAT_BITS) - 1) +#define VALUE_SHIFT 3 +#define VALUE_BITS 5 +#define VALUE_MASK ((1 << VALUE_BITS) - 1) + +enum reloc_target_format { + /* direct encoded formats: */ + RF_NONE = 0, + RF_INSN14 = 1, + RF_INSN22 = 2, + RF_INSN64 = 3, + RF_32MSB = 4, + RF_32LSB = 5, + RF_64MSB = 6, + RF_64LSB = 7, + + /* formats that cannot be directly decoded: */ + RF_INSN60, + RF_INSN21B, /* imm21 form 1 */ + RF_INSN21M, /* imm21 form 2 */ + RF_INSN21F /* imm21 form 3 */ +}; + +enum reloc_value_formula { + RV_DIRECT = 4, /* S + A */ + RV_GPREL = 5, /* @gprel(S + A) */ + RV_LTREL = 6, /* @ltoff(S + A) */ + RV_PLTREL = 7, /* @pltoff(S + A) */ + RV_FPTR = 8, /* @fptr(S + A) */ + RV_PCREL = 9, /* S + A - P */ + RV_LTREL_FPTR = 10, /* @ltoff(@fptr(S + A)) */ + RV_SEGREL = 11, /* @segrel(S + A) */ + RV_SECREL = 12, /* @secrel(S + A) */ + RV_BDREL = 13, /* BD + A */ + RV_LTV = 14, /* S + A (like RV_DIRECT, except frozen at static link-time) */ + RV_PCREL2 = 15, /* S + A - P */ + RV_SPECIAL = 16, /* various (see below) */ + RV_RSVD17 = 17, + RV_TPREL = 18, /* @tprel(S + A) */ + RV_LTREL_TPREL = 19, /* @ltoff(@tprel(S + A)) */ + RV_DTPMOD = 20, /* @dtpmod(S + A) */ + RV_LTREL_DTPMOD = 21, /* @ltoff(@dtpmod(S + A)) */ + RV_DTPREL = 22, /* @dtprel(S + A) */ + RV_LTREL_DTPREL = 23, /* @ltoff(@dtprel(S + A)) */ + RV_RSVD24 = 24, + RV_RSVD25 = 25, + RV_RSVD26 = 26, + RV_RSVD27 = 27 + /* 28-31 reserved for implementation-specific purposes. */ +}; + +#define N(reloc) [R_IA64_##reloc] = #reloc + +static const char *reloc_name[256] = { + N(NONE), N(IMM14), N(IMM22), N(IMM64), + N(DIR32MSB), N(DIR32LSB), N(DIR64MSB), N(DIR64LSB), + N(GPREL22), N(GPREL64I), N(GPREL32MSB), N(GPREL32LSB), + N(GPREL64MSB), N(GPREL64LSB), N(LTOFF22), N(LTOFF64I), + N(PLTOFF22), N(PLTOFF64I), N(PLTOFF64MSB), N(PLTOFF64LSB), + N(FPTR64I), N(FPTR32MSB), N(FPTR32LSB), N(FPTR64MSB), + N(FPTR64LSB), N(PCREL60B), N(PCREL21B), N(PCREL21M), + N(PCREL21F), N(PCREL32MSB), N(PCREL32LSB), N(PCREL64MSB), + N(PCREL64LSB), N(LTOFF_FPTR22), N(LTOFF_FPTR64I), N(LTOFF_FPTR32MSB), + N(LTOFF_FPTR32LSB), N(LTOFF_FPTR64MSB), N(LTOFF_FPTR64LSB), N(SEGREL32MSB), + N(SEGREL32LSB), N(SEGREL64MSB), N(SEGREL64LSB), N(SECREL32MSB), + N(SECREL32LSB), N(SECREL64MSB), N(SECREL64LSB), N(REL32MSB), + N(REL32LSB), N(REL64MSB), N(REL64LSB), N(LTV32MSB), + N(LTV32LSB), N(LTV64MSB), N(LTV64LSB), N(PCREL21BI), + N(PCREL22), N(PCREL64I), N(IPLTMSB), N(IPLTLSB), + N(COPY), N(LTOFF22X), N(LDXMOV), N(TPREL14), + N(TPREL22), N(TPREL64I), N(TPREL64MSB), N(TPREL64LSB), + N(LTOFF_TPREL22), N(DTPMOD64MSB), N(DTPMOD64LSB), N(LTOFF_DTPMOD22), + N(DTPREL14), N(DTPREL22), N(DTPREL64I), N(DTPREL32MSB), + N(DTPREL32LSB), N(DTPREL64MSB), N(DTPREL64LSB), N(LTOFF_DTPREL22) +}; + +#undef N + +struct got_entry { + uint64_t val; +}; + +struct fdesc { + uint64_t ip; + uint64_t gp; +}; + +/* Opaque struct for insns, to protect against derefs. */ +struct insn; + +static inline uint64_t +bundle (const struct insn *insn) +{ + return (uint64_t) insn & ~0xfUL; +} + +static inline int +slot (const struct insn *insn) +{ + return (uint64_t) insn & 0x3; +} + +/* Patch instruction with "val" where "mask" has 1 bits. */ +static void +apply (struct insn *insn, uint64_t mask, uint64_t val) +{ + uint64_t m0, m1, v0, v1, b0, b1, *b = (uint64_t *) bundle(insn); +# define insn_mask ((1UL << 41) - 1) + unsigned long shift; + + b0 = b[0]; b1 = b[1]; + shift = 5 + 41 * slot(insn); /* 5 bits of template, then 3 x 41-bit instructions */ + if (shift >= 64) { + m1 = mask << (shift - 64); + v1 = val << (shift - 64); + } else { + m0 = mask << shift; m1 = mask >> (64 - shift); + v0 = val << shift; v1 = val >> (64 - shift); + b[0] = (b0 & ~m0) | (v0 & m0); + } + b[1] = (b1 & ~m1) | (v1 & m1); +} + +static int +apply_imm64 (struct module *mod, struct insn *insn, uint64_t val) +{ + if (slot(insn) != 2) { + printk(KERN_ERR "%s: illegal slot number %d for IMM64\n", + mod->name, slot(insn)); + return 0; + } + apply(insn, 0x01fffefe000, ( ((val & 0x8000000000000000) >> 27) /* bit 63 -> 36 */ + | ((val & 0x0000000000200000) << 0) /* bit 21 -> 21 */ + | ((val & 0x00000000001f0000) << 6) /* bit 16 -> 22 */ + | ((val & 0x000000000000ff80) << 20) /* bit 7 -> 27 */ + | ((val & 0x000000000000007f) << 13) /* bit 0 -> 13 */)); + apply((void *) insn - 1, 0x1ffffffffff, val >> 22); + return 1; +} + +static int +apply_imm60 (struct module *mod, struct insn *insn, uint64_t val) +{ + if (slot(insn) != 2) { + printk(KERN_ERR "%s: illegal slot number %d for IMM60\n", + mod->name, slot(insn)); + return 0; + } + if (val + ((uint64_t) 1 << 59) >= (1UL << 60)) { + printk(KERN_ERR "%s: value %ld out of IMM60 range\n", mod->name, (int64_t) val); + return 0; + } + apply(insn, 0x011ffffe000, ( ((val & 0x1000000000000000) >> 24) /* bit 60 -> 36 */ + | ((val & 0x00000000000fffff) << 13) /* bit 0 -> 13 */)); + apply((void *) insn - 1, 0x1fffffffffc, val >> 18); + return 1; +} + +static int +apply_imm22 (struct module *mod, struct insn *insn, uint64_t val) +{ + if (val + (1 << 21) >= (1 << 22)) { + printk(KERN_ERR "%s: value %li out of IMM22 range\n", mod->name, (int64_t)val); + return 0; + } + apply(insn, 0x01fffcfe000, ( ((val & 0x200000) << 15) /* bit 21 -> 36 */ + | ((val & 0x1f0000) << 6) /* bit 16 -> 22 */ + | ((val & 0x00ff80) << 20) /* bit 7 -> 27 */ + | ((val & 0x00007f) << 13) /* bit 0 -> 13 */)); + return 1; +} + +static int +apply_imm21b (struct module *mod, struct insn *insn, uint64_t val) +{ + if (val + (1 << 20) >= (1 << 21)) { + printk(KERN_ERR "%s: value %li out of IMM21b range\n", mod->name, (int64_t)val); + return 0; + } + apply(insn, 0x11ffffe000, ( ((val & 0x100000) << 16) /* bit 20 -> 36 */ + | ((val & 0x0fffff) << 13) /* bit 0 -> 13 */)); + return 1; +} + +#if USE_BRL + +struct plt_entry { + /* Three instruction bundles in PLT. */ + unsigned char bundle[2][16]; +}; + +static const struct plt_entry ia64_plt_template = { + { + { + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, /* movl gp=TARGET_GP */ + 0x00, 0x00, 0x00, 0x60 + }, + { + 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* brl.many gp=TARGET_GP */ + 0x08, 0x00, 0x00, 0xc0 + } + } +}; + +static int +patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) +{ + if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_gp) + && apply_imm60(mod, (struct insn *) (plt->bundle[1] + 2), + (target_ip - (int64_t) plt->bundle[1]) / 16)) + return 1; + return 0; +} + +unsigned long +plt_target (struct plt_entry *plt) +{ + uint64_t b0, b1, *b = (uint64_t *) plt->bundle[1]; + long off; + + b0 = b[0]; b1 = b[1]; + off = ( ((b1 & 0x00fffff000000000) >> 36) /* imm20b -> bit 0 */ + | ((b0 >> 48) << 20) | ((b1 & 0x7fffff) << 36) /* imm39 -> bit 20 */ + | ((b1 & 0x0800000000000000) << 1)); /* i -> bit 60 */ + return (long) plt->bundle[1] + 16*off; +} + +#else /* !USE_BRL */ + +struct plt_entry { + /* Three instruction bundles in PLT. */ + unsigned char bundle[3][16]; +}; + +static const struct plt_entry ia64_plt_template = { + { + { + 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* movl r16=TARGET_IP */ + 0x02, 0x00, 0x00, 0x60 + }, + { + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MLX] nop.m 0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, /* movl gp=TARGET_GP */ + 0x00, 0x00, 0x00, 0x60 + }, + { + 0x11, 0x00, 0x00, 0x00, 0x01, 0x00, /* [MIB] nop.m 0 */ + 0x60, 0x80, 0x04, 0x80, 0x03, 0x00, /* mov b6=r16 */ + 0x60, 0x00, 0x80, 0x00 /* br.few b6 */ + } + } +}; + +static int +patch_plt (struct module *mod, struct plt_entry *plt, long target_ip, unsigned long target_gp) +{ + if (apply_imm64(mod, (struct insn *) (plt->bundle[0] + 2), target_ip) + && apply_imm64(mod, (struct insn *) (plt->bundle[1] + 2), target_gp)) + return 1; + return 0; +} + +unsigned long +plt_target (struct plt_entry *plt) +{ + uint64_t b0, b1, *b = (uint64_t *) plt->bundle[0]; + + b0 = b[0]; b1 = b[1]; + return ( ((b1 & 0x000007f000000000) >> 36) /* imm7b -> bit 0 */ + | ((b1 & 0x07fc000000000000) >> 43) /* imm9d -> bit 7 */ + | ((b1 & 0x0003e00000000000) >> 29) /* imm5c -> bit 16 */ + | ((b1 & 0x0000100000000000) >> 23) /* ic -> bit 21 */ + | ((b0 >> 46) << 22) | ((b1 & 0x7fffff) << 40) /* imm41 -> bit 22 */ + | ((b1 & 0x0800000000000000) << 4)); /* i -> bit 63 */ +} + +#endif /* !USE_BRL */ + +void * +module_alloc (unsigned long size) +{ + if (!size) + return NULL; + return vmalloc(size); +} + +void +module_free (struct module *mod, void *module_region) +{ + vfree(module_region); +} + +/* Have we already seen one of these relocations? */ +/* FIXME: we could look in other sections, too --RR */ +static int +duplicate_reloc (const Elf64_Rela *rela, unsigned int num) +{ + unsigned int i; + + for (i = 0; i < num; i++) { + if (rela[i].r_info == rela[num].r_info && rela[i].r_addend == rela[num].r_addend) + return 1; + } + return 0; +} + +/* Count how many GOT entries we may need */ +static unsigned int +count_gots (const Elf64_Rela *rela, unsigned int num) +{ + unsigned int i, ret = 0; + + /* Sure, this is order(n^2), but it's usually short, and not + time critical */ + for (i = 0; i < num; i++) { + switch (ELF64_R_TYPE(rela[i].r_info)) { + case R_IA64_LTOFF22: + case R_IA64_LTOFF22X: + case R_IA64_LTOFF64I: + case R_IA64_LTOFF_FPTR22: + case R_IA64_LTOFF_FPTR64I: + case R_IA64_LTOFF_FPTR32MSB: + case R_IA64_LTOFF_FPTR32LSB: + case R_IA64_LTOFF_FPTR64MSB: + case R_IA64_LTOFF_FPTR64LSB: + if (!duplicate_reloc(rela, i)) + ret++; + break; + } + } + return ret; +} + +/* Count how many PLT entries we may need */ +static unsigned int +count_plts (const Elf64_Rela *rela, unsigned int num) +{ + unsigned int i, ret = 0; + + /* Sure, this is order(n^2), but it's usually short, and not + time critical */ + for (i = 0; i < num; i++) { + switch (ELF64_R_TYPE(rela[i].r_info)) { + case R_IA64_PCREL21B: + case R_IA64_PLTOFF22: + case R_IA64_PLTOFF64I: + case R_IA64_PLTOFF64MSB: + case R_IA64_PLTOFF64LSB: + case R_IA64_IPLTMSB: + case R_IA64_IPLTLSB: + if (!duplicate_reloc(rela, i)) + ret++; + break; + } + } + return ret; +} + +/* We need to create an function-descriptors for any internal function + which is referenced. */ +static unsigned int +count_fdescs (const Elf64_Rela *rela, unsigned int num) +{ + unsigned int i, ret = 0; + + /* Sure, this is order(n^2), but it's usually short, and not time critical. */ + for (i = 0; i < num; i++) { + switch (ELF64_R_TYPE(rela[i].r_info)) { + case R_IA64_FPTR64I: + case R_IA64_FPTR32LSB: + case R_IA64_FPTR32MSB: + case R_IA64_FPTR64LSB: + case R_IA64_FPTR64MSB: + case R_IA64_LTOFF_FPTR22: + case R_IA64_LTOFF_FPTR32LSB: + case R_IA64_LTOFF_FPTR32MSB: + case R_IA64_LTOFF_FPTR64I: + case R_IA64_LTOFF_FPTR64LSB: + case R_IA64_LTOFF_FPTR64MSB: + case R_IA64_IPLTMSB: + case R_IA64_IPLTLSB: + /* + * Jumps to static functions sometimes go straight to their + * offset. Of course, that may not be possible if the jump is + * from init -> core or vice. versa, so we need to generate an + * FDESC (and PLT etc) for that. + */ + case R_IA64_PCREL21B: + if (!duplicate_reloc(rela, i)) + ret++; + break; + } + } + return ret; +} + +int +module_frob_arch_sections (Elf_Ehdr *ehdr, Elf_Shdr *sechdrs, char *secstrings, + struct module *mod) +{ + unsigned long core_plts = 0, init_plts = 0, gots = 0, fdescs = 0; + Elf64_Shdr *s, *sechdrs_end = sechdrs + ehdr->e_shnum; + + /* + * To store the PLTs and function-descriptors, we expand the .text section for + * core module-code and the .init.text section for initialization code. + */ + for (s = sechdrs; s < sechdrs_end; ++s) + if (strcmp(".core.plt", secstrings + s->sh_name) == 0) + mod->arch.core_plt = s; + else if (strcmp(".init.plt", secstrings + s->sh_name) == 0) + mod->arch.init_plt = s; + else if (strcmp(".got", secstrings + s->sh_name) == 0) + mod->arch.got = s; + else if (strcmp(".opd", secstrings + s->sh_name) == 0) + mod->arch.opd = s; + else if (strcmp(".IA_64.unwind", secstrings + s->sh_name) == 0) + mod->arch.unwind = s; + + if (!mod->arch.core_plt || !mod->arch.init_plt || !mod->arch.got || !mod->arch.opd) { + printk(KERN_ERR "%s: sections missing\n", mod->name); + return -ENOEXEC; + } + + /* GOT and PLTs can occur in any relocated section... */ + for (s = sechdrs + 1; s < sechdrs_end; ++s) { + const Elf64_Rela *rels = (void *)ehdr + s->sh_offset; + unsigned long numrels = s->sh_size/sizeof(Elf64_Rela); + + if (s->sh_type != SHT_RELA) + continue; + + gots += count_gots(rels, numrels); + fdescs += count_fdescs(rels, numrels); + if (strstr(secstrings + s->sh_name, ".init")) + init_plts += count_plts(rels, numrels); + else + core_plts += count_plts(rels, numrels); + } + + mod->arch.core_plt->sh_type = SHT_NOBITS; + mod->arch.core_plt->sh_flags = SHF_EXECINSTR | SHF_ALLOC; + mod->arch.core_plt->sh_addralign = 16; + mod->arch.core_plt->sh_size = core_plts * sizeof(struct plt_entry); + mod->arch.init_plt->sh_type = SHT_NOBITS; + mod->arch.init_plt->sh_flags = SHF_EXECINSTR | SHF_ALLOC; + mod->arch.init_plt->sh_addralign = 16; + mod->arch.init_plt->sh_size = init_plts * sizeof(struct plt_entry); + mod->arch.got->sh_type = SHT_NOBITS; + mod->arch.got->sh_flags = ARCH_SHF_SMALL | SHF_ALLOC; + mod->arch.got->sh_addralign = 8; + mod->arch.got->sh_size = gots * sizeof(struct got_entry); + mod->arch.opd->sh_type = SHT_NOBITS; + mod->arch.opd->sh_flags = SHF_ALLOC; + mod->arch.opd->sh_addralign = 8; + mod->arch.opd->sh_size = fdescs * sizeof(struct fdesc); + DEBUGP("%s: core.plt=%lx, init.plt=%lx, got=%lx, fdesc=%lx\n", + __FUNCTION__, mod->arch.core_plt->sh_size, mod->arch.init_plt->sh_size, + mod->arch.got->sh_size, mod->arch.opd->sh_size); + return 0; +} + +static inline int +in_init (const struct module *mod, uint64_t addr) +{ + return addr - (uint64_t) mod->module_init < mod->init_size; +} + +static inline int +in_core (const struct module *mod, uint64_t addr) +{ + return addr - (uint64_t) mod->module_core < mod->core_size; +} + +static inline int +is_internal (const struct module *mod, uint64_t value) +{ + return in_init(mod, value) || in_core(mod, value); +} + +/* + * Get gp-relative offset for the linkage-table entry of VALUE. + */ +static uint64_t +get_ltoff (struct module *mod, uint64_t value, int *okp) +{ + struct got_entry *got, *e; + + if (!*okp) + return 0; + + got = (void *) mod->arch.got->sh_addr; + for (e = got; e < got + mod->arch.next_got_entry; ++e) + if (e->val == value) + goto found; + + /* Not enough GOT entries? */ + if (e >= (struct got_entry *) (mod->arch.got->sh_addr + mod->arch.got->sh_size)) + BUG(); + + e->val = value; + ++mod->arch.next_got_entry; + found: + return (uint64_t) e - mod->arch.gp; +} + +static inline int +gp_addressable (struct module *mod, uint64_t value) +{ + return value - mod->arch.gp + MAX_LTOFF/2 < MAX_LTOFF; +} + +/* Get PC-relative PLT entry for this value. Returns 0 on failure. */ +static uint64_t +get_plt (struct module *mod, const struct insn *insn, uint64_t value, int *okp) +{ + struct plt_entry *plt, *plt_end; + uint64_t target_ip, target_gp; + + if (!*okp) + return 0; + + if (in_init(mod, (uint64_t) insn)) { + plt = (void *) mod->arch.init_plt->sh_addr; + plt_end = (void *) plt + mod->arch.init_plt->sh_size; + } else { + plt = (void *) mod->arch.core_plt->sh_addr; + plt_end = (void *) plt + mod->arch.core_plt->sh_size; + } + + /* "value" is a pointer to a function-descriptor; fetch the target ip/gp from it: */ + target_ip = ((uint64_t *) value)[0]; + target_gp = ((uint64_t *) value)[1]; + + /* Look for existing PLT entry. */ + while (plt->bundle[0][0]) { + if (plt_target(plt) == target_ip) + goto found; + if (++plt >= plt_end) + BUG(); + } + *plt = ia64_plt_template; + if (!patch_plt(mod, plt, target_ip, target_gp)) { + *okp = 0; + return 0; + } +#if ARCH_MODULE_DEBUG + if (plt_target(plt) != target_ip) { + printk("%s: mistargeted PLT: wanted %lx, got %lx\n", + __FUNCTION__, target_ip, plt_target(plt)); + *okp = 0; + return 0; + } +#endif + found: + return (uint64_t) plt; +} + +/* Get function descriptor for VALUE. */ +static uint64_t +get_fdesc (struct module *mod, uint64_t value, int *okp) +{ + struct fdesc *fdesc = (void *) mod->arch.opd->sh_addr; + + if (!*okp) + return 0; + + if (!value) { + printk(KERN_ERR "%s: fdesc for zero requested!\n", mod->name); + return 0; + } + + if (!is_internal(mod, value)) + /* + * If it's not a module-local entry-point, "value" already points to a + * function-descriptor. + */ + return value; + + /* Look for existing function descriptor. */ + while (fdesc->ip) { + if (fdesc->ip == value) + return (uint64_t)fdesc; + if ((uint64_t) ++fdesc >= mod->arch.opd->sh_addr + mod->arch.opd->sh_size) + BUG(); + } + + /* Create new one */ + fdesc->ip = value; + fdesc->gp = mod->arch.gp; + return (uint64_t) fdesc; +} + +static inline int +do_reloc (struct module *mod, uint8_t r_type, Elf64_Sym *sym, uint64_t addend, + Elf64_Shdr *sec, void *location) +{ + enum reloc_target_format format = (r_type >> FORMAT_SHIFT) & FORMAT_MASK; + enum reloc_value_formula formula = (r_type >> VALUE_SHIFT) & VALUE_MASK; + uint64_t val; + int ok = 1; + + val = sym->st_value + addend; + + switch (formula) { + case RV_SEGREL: /* segment base is arbitrarily chosen to be 0 for kernel modules */ + case RV_DIRECT: + break; + + case RV_GPREL: val -= mod->arch.gp; break; + case RV_LTREL: val = get_ltoff(mod, val, &ok); break; + case RV_PLTREL: val = get_plt(mod, location, val, &ok); break; + case RV_FPTR: val = get_fdesc(mod, val, &ok); break; + case RV_SECREL: val -= sec->sh_addr; break; + case RV_LTREL_FPTR: val = get_ltoff(mod, get_fdesc(mod, val, &ok), &ok); break; + + case RV_PCREL: + switch (r_type) { + case R_IA64_PCREL21B: + /* special because it can cross into other module/kernel-core. */ + if (!is_internal(mod, val)) + val = get_plt(mod, location, val, &ok); + /* FALL THROUGH */ + default: + val -= bundle(location); + break; + + case R_IA64_PCREL32MSB: + case R_IA64_PCREL32LSB: + case R_IA64_PCREL64MSB: + case R_IA64_PCREL64LSB: + val -= (uint64_t) location; + break; + + } + switch (r_type) { + case R_IA64_PCREL60B: format = RF_INSN60; break; + case R_IA64_PCREL21B: format = RF_INSN21B; break; + case R_IA64_PCREL21M: format = RF_INSN21M; break; + case R_IA64_PCREL21F: format = RF_INSN21F; break; + default: break; + } + break; + + case RV_BDREL: + val -= (uint64_t) (in_init(mod, val) ? mod->module_init : mod->module_core); + break; + + case RV_LTV: + /* can link-time value relocs happen here? */ + BUG(); + break; + + case RV_PCREL2: + if (r_type == R_IA64_PCREL21BI) { + if (!is_internal(mod, val)) { + printk(KERN_ERR "%s: %s reloc against non-local symbol (%lx)\n", + __FUNCTION__, reloc_name[r_type], val); + return -ENOEXEC; + } + format = RF_INSN21B; + } + val -= bundle(location); + break; + + case RV_SPECIAL: + switch (r_type) { + case R_IA64_IPLTMSB: + case R_IA64_IPLTLSB: + val = get_fdesc(mod, get_plt(mod, location, val, &ok), &ok); + format = RF_64LSB; + if (r_type == R_IA64_IPLTMSB) + format = RF_64MSB; + break; + + case R_IA64_SUB: + val = addend - sym->st_value; + format = RF_INSN64; + break; + + case R_IA64_LTOFF22X: + if (gp_addressable(mod, val)) + val -= mod->arch.gp; + else + val = get_ltoff(mod, val, &ok); + format = RF_INSN22; + break; + + case R_IA64_LDXMOV: + if (gp_addressable(mod, val)) { + /* turn "ld8" into "mov": */ + DEBUGP("%s: patching ld8 at %p to mov\n", __FUNCTION__, location); + apply(location, 0x1fff80fe000, 0x10000000000); + } + return 0; + + default: + if (reloc_name[r_type]) + printk(KERN_ERR "%s: special reloc %s not supported", + mod->name, reloc_name[r_type]); + else + printk(KERN_ERR "%s: unknown special reloc %x\n", + mod->name, r_type); + return -ENOEXEC; + } + break; + + case RV_TPREL: + case RV_LTREL_TPREL: + case RV_DTPMOD: + case RV_LTREL_DTPMOD: + case RV_DTPREL: + case RV_LTREL_DTPREL: + printk(KERN_ERR "%s: %s reloc not supported\n", + mod->name, reloc_name[r_type] ? reloc_name[r_type] : "?"); + return -ENOEXEC; + + default: + printk(KERN_ERR "%s: unknown reloc %x\n", mod->name, r_type); + return -ENOEXEC; + } + + if (!ok) + return -ENOEXEC; + + DEBUGP("%s: [%p]<-%016lx = %s(%lx)\n", __FUNCTION__, location, val, + reloc_name[r_type] ? reloc_name[r_type] : "?", sym->st_value + addend); + + switch (format) { + case RF_INSN21B: ok = apply_imm21b(mod, location, (int64_t) val / 16); break; + case RF_INSN22: ok = apply_imm22(mod, location, val); break; + case RF_INSN64: ok = apply_imm64(mod, location, val); break; + case RF_INSN60: ok = apply_imm60(mod, location, (int64_t) val / 16); break; + case RF_32LSB: put_unaligned(val, (uint32_t *) location); break; + case RF_64LSB: put_unaligned(val, (uint64_t *) location); break; + case RF_32MSB: /* ia64 Linux is little-endian... */ + case RF_64MSB: /* ia64 Linux is little-endian... */ + case RF_INSN14: /* must be within-module, i.e., resolved by "ld -r" */ + case RF_INSN21M: /* must be within-module, i.e., resolved by "ld -r" */ + case RF_INSN21F: /* must be within-module, i.e., resolved by "ld -r" */ + printk(KERN_ERR "%s: format %u needed by %s reloc is not supported\n", + mod->name, format, reloc_name[r_type] ? reloc_name[r_type] : "?"); + return -ENOEXEC; + + default: + printk(KERN_ERR "%s: relocation %s resulted in unknown format %u\n", + mod->name, reloc_name[r_type] ? reloc_name[r_type] : "?", format); + return -ENOEXEC; + } + return ok ? 0 : -ENOEXEC; +} + +int +apply_relocate_add (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex, + unsigned int relsec, struct module *mod) +{ + unsigned int i, n = sechdrs[relsec].sh_size / sizeof(Elf64_Rela); + Elf64_Rela *rela = (void *) sechdrs[relsec].sh_addr; + Elf64_Shdr *target_sec; + int ret; + + DEBUGP("%s: applying section %u (%u relocs) to %u\n", __FUNCTION__, + relsec, n, sechdrs[relsec].sh_info); + + target_sec = sechdrs + sechdrs[relsec].sh_info; + + if (target_sec->sh_entsize == ~0UL) + /* + * If target section wasn't allocated, we don't need to relocate it. + * Happens, e.g., for debug sections. + */ + return 0; + + if (!mod->arch.gp) { + /* + * XXX Should have an arch-hook for running this after final section + * addresses have been selected... + */ + /* See if gp can cover the entire core module: */ + uint64_t gp = (uint64_t) mod->module_core + MAX_LTOFF / 2; + if (mod->core_size >= MAX_LTOFF) + /* + * This takes advantage of fact that SHF_ARCH_SMALL gets allocated + * at the end of the module. + */ + gp = (uint64_t) mod->module_core + mod->core_size - MAX_LTOFF / 2; + mod->arch.gp = gp; + DEBUGP("%s: placing gp at 0x%lx\n", __FUNCTION__, gp); + } + + for (i = 0; i < n; i++) { + ret = do_reloc(mod, ELF64_R_TYPE(rela[i].r_info), + ((Elf64_Sym *) sechdrs[symindex].sh_addr + + ELF64_R_SYM(rela[i].r_info)), + rela[i].r_addend, target_sec, + (void *) target_sec->sh_addr + rela[i].r_offset); + if (ret < 0) + return ret; + } + return 0; +} + +int +apply_relocate (Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex, + unsigned int relsec, struct module *mod) +{ + printk(KERN_ERR "module %s: REL relocs in section %u unsupported\n", mod->name, relsec); + return -ENOEXEC; +} + +int +module_finalize (const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod) +{ + DEBUGP("%s: init: entry=%p\n", __FUNCTION__, mod->init); + if (mod->arch.unwind) + mod->arch.unw_table = unw_add_unwind_table(mod->name, 0, mod->arch.gp, + (void *) mod->arch.unwind->sh_addr, + ((void *) mod->arch.unwind->sh_addr + + mod->arch.unwind->sh_size)); + return 0; +} + +void +module_arch_cleanup (struct module *mod) +{ + if (mod->arch.unwind) + unw_remove_unwind_table(mod->arch.unw_table); +} diff -Nru a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c --- a/arch/ia64/kernel/palinfo.c Thu Feb 13 05:43:47 2003 +++ b/arch/ia64/kernel/palinfo.c Thu Mar 27 10:36:54 2003 @@ -27,9 +27,7 @@ #include #include #include -#ifdef CONFIG_SMP #include -#endif MODULE_AUTHOR("Stephane Eranian "); MODULE_DESCRIPTION("/proc interface to IA-64 PAL"); @@ -37,12 +35,6 @@ #define PALINFO_VERSION "0.5" -#ifdef CONFIG_SMP -#define cpu_is_online(i) (cpu_online_map & (1UL << i)) -#else -#define cpu_is_online(i) 1 -#endif - typedef int (*palinfo_func_t)(char*); typedef struct { @@ -933,7 +925,7 @@ */ for (i=0; i < NR_CPUS; i++) { - if (!cpu_is_online(i)) continue; + if (!cpu_online(i)) continue; sprintf(cpustr,CPUSTR, i); diff -Nru a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c --- a/arch/ia64/kernel/perfmon.c Thu Mar 6 11:40:52 2003 +++ b/arch/ia64/kernel/perfmon.c Thu Mar 27 10:37:09 2003 @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -134,12 +135,6 @@ #define PFM_CPUINFO_CLEAR(v) __get_cpu_var(pfm_syst_info) &= ~(v) #define PFM_CPUINFO_SET(v) __get_cpu_var(pfm_syst_info) |= (v) -#ifdef CONFIG_SMP -#define cpu_is_online(i) (cpu_online_map & (1UL << i)) -#else -#define cpu_is_online(i) (i==0) -#endif - /* * debugging */ @@ -1082,7 +1077,7 @@ * and it must be a valid CPU */ cpu = ffz(~pfx->ctx_cpu_mask); - if (cpu_is_online(cpu) == 0) { + if (cpu_online(cpu) == 0) { DBprintk(("CPU%d is not online\n", cpu)); return -EINVAL; } @@ -3153,7 +3148,7 @@ p += sprintf(p, "ovfl_mask : 0x%lx\n", pmu_conf.ovfl_val); for(i=0; i < NR_CPUS; i++) { - if (cpu_is_online(i) == 0) continue; + if (cpu_online(i) == 0) continue; p += sprintf(p, "CPU%-2d overflow intrs : %lu\n", i, pfm_stats[i].pfm_ovfl_intr_count); p += sprintf(p, "CPU%-2d spurious intrs : %lu\n", i, pfm_stats[i].pfm_spurious_ovfl_intr_count); p += sprintf(p, "CPU%-2d recorded samples : %lu\n", i, pfm_stats[i].pfm_recorded_samples_count); diff -Nru a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c --- a/arch/ia64/kernel/process.c Thu Mar 6 21:11:46 2003 +++ b/arch/ia64/kernel/process.c Thu Mar 27 02:29:02 2003 @@ -66,10 +66,7 @@ void show_trace_task (struct task_struct *task) { - struct unw_frame_info info; - - unw_init_from_blocked_task(&info, task); - do_show_stack(&info, 0); + show_stack(task); } void @@ -169,7 +166,10 @@ void default_idle (void) { - /* may want to do PAL_LIGHT_HALT here... */ +#ifdef CONFIG_IA64_PAL_IDLE + if (!need_resched()) + safe_halt(); +#endif } void __attribute__((noreturn)) @@ -177,6 +177,10 @@ { /* endless idle loop with no priority at all */ while (1) { + void (*idle)(void) = pm_idle; + if (!idle) + idle = default_idle; + #ifdef CONFIG_SMP if (!need_resched()) min_xtp(); @@ -186,10 +190,7 @@ #ifdef CONFIG_IA64_SGI_SN snidle(); #endif - if (pm_idle) - (*pm_idle)(); - else - default_idle(); + (*idle)(); } #ifdef CONFIG_IA64_SGI_SN @@ -581,6 +582,15 @@ tid = clone(flags | CLONE_VM | CLONE_UNTRACED, 0); if (parent != current) { +#ifdef CONFIG_IA32_SUPPORT + if (IS_IA32_PROCESS(ia64_task_regs(current))) { + /* A kernel thread is always a 64-bit process. */ + current->thread.map_base = DEFAULT_MAP_BASE; + current->thread.task_size = DEFAULT_TASK_SIZE; + ia64_set_kr(IA64_KR_IO_BASE, current->thread.old_iob); + ia64_set_kr(IA64_KR_TSSD, current->thread.old_k1); + } +#endif result = (*fn)(arg); _exit(result); } @@ -751,7 +761,7 @@ } void -__put_task_struct (struct task_struct *tsk) +free_task_struct (struct task_struct *tsk) { free_pages((unsigned long) tsk, KERNEL_STACK_SIZE_ORDER); } diff -Nru a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c --- a/arch/ia64/kernel/signal.c Thu Mar 6 11:40:52 2003 +++ b/arch/ia64/kernel/signal.c Fri Mar 7 04:39:25 2003 @@ -191,6 +191,10 @@ err |= __put_user(from->si_pfm_ovfl[2], &to->si_pfm_ovfl[2]); err |= __put_user(from->si_pfm_ovfl[3], &to->si_pfm_ovfl[3]); } + case __SI_TIMER >> 16: + err |= __put_user(from->si_tid, &to->si_tid); + err |= __put_user(from->si_overrun, &to->si_overrun); + err |= __put_user(from->si_value, &to->si_value); break; default: err |= __put_user(from->si_uid, &to->si_uid); diff -Nru a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c --- a/arch/ia64/kernel/smpboot.c Fri Feb 7 00:20:34 2003 +++ b/arch/ia64/kernel/smpboot.c Tue Mar 25 22:19:17 2003 @@ -279,12 +279,15 @@ smp_setup_percpu_timer(); - /* - * Synchronize the ITC with the BP - */ - Dprintk("Going to syncup ITC with BP.\n"); + if (!(sal_platform_features & IA64_SAL_PLATFORM_FEATURE_ITC_DRIFT)) { + /* + * Synchronize the ITC with the BP + */ + Dprintk("Going to syncup ITC with BP.\n"); + + ia64_sync_itc(0); + } - ia64_sync_itc(0); /* * Get our bogomips. */ diff -Nru a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c --- a/arch/ia64/kernel/time.c Thu Mar 6 11:40:52 2003 +++ b/arch/ia64/kernel/time.c Wed Mar 26 02:48:05 2003 @@ -60,7 +60,7 @@ } /* - * Return the number of micro-seconds that elapsed since the last update to jiffy. The + * Return the number of nano-seconds that elapsed since the last update to jiffy. The * xtime_lock must be at least read-locked when calling this routine. */ static inline unsigned long @@ -86,6 +86,9 @@ void do_settimeofday (struct timeval *tv) { + time_t sec = tv->tv_sec; + long nsec = tv->tv_usec * 1000; + write_seqlock_irq(&xtime_lock); { /* @@ -94,22 +97,22 @@ * Discover what correction gettimeofday would have done, and then undo * it! */ - tv->tv_usec -= gettimeoffset(); - tv->tv_usec -= (jiffies - wall_jiffies) * (1000000 / HZ); + nsec -= gettimeoffset(); - while (tv->tv_usec < 0) { - tv->tv_usec += 1000000; - tv->tv_sec--; + while (nsec < 0) { + nsec += 1000000000; + sec--; } - xtime.tv_sec = tv->tv_sec; - xtime.tv_nsec = 1000 * tv->tv_usec; + xtime.tv_sec = sec; + xtime.tv_nsec = nsec; time_adjust = 0; /* stop active adjtime() */ time_status |= STA_UNSYNC; time_maxerror = NTP_PHASE_LIMIT; time_esterror = NTP_PHASE_LIMIT; } write_sequnlock_irq(&xtime_lock); + clock_was_set(); } void diff -Nru a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c --- a/arch/ia64/kernel/traps.c Mon Mar 17 21:32:24 2003 +++ b/arch/ia64/kernel/traps.c Tue Apr 8 12:03:13 2003 @@ -338,8 +338,8 @@ fpu_swa_count = 0; if ((++fpu_swa_count < 5) && !(current->thread.flags & IA64_THREAD_FPEMU_NOPRINT)) { last_time = jiffies; - printk(KERN_WARNING "%s(%d): floating-point assist fault at ip %016lx\n", - current->comm, current->pid, regs->cr_iip + ia64_psr(regs)->ri); + printk(KERN_WARNING "%s(%d): floating-point assist fault at ip %016lx, isr %016lx\n", + current->comm, current->pid, regs->cr_iip + ia64_psr(regs)->ri, isr); } exception = fp_emulate(fp_fault, bundle, ®s->cr_ipsr, ®s->ar_fpsr, &isr, ®s->pr, diff -Nru a/arch/ia64/kernel/unwind.c b/arch/ia64/kernel/unwind.c --- a/arch/ia64/kernel/unwind.c Thu Mar 6 21:11:46 2003 +++ b/arch/ia64/kernel/unwind.c Tue Mar 25 04:49:15 2003 @@ -253,6 +253,11 @@ struct pt_regs *pt; if ((unsigned) regnum - 1 >= 127) { + if (regnum == 0 && !write) { + *val = 0; /* read r0 always returns 0 */ + *nat = 0; + return 0; + } UNW_DPRINT(0, "unwind.%s: trying to access non-existent r%u\n", __FUNCTION__, regnum); return -1; @@ -318,13 +323,8 @@ } } else { /* access a scratch register */ - if (!info->pt) { - UNW_DPRINT(0, "unwind.%s: no pt-regs; cannot access r%d\n", - __FUNCTION__, regnum); - return -1; - } pt = get_scratch_regs(info); - addr = (unsigned long *) (pt + pt_regs_off(regnum)); + addr = (unsigned long *) ((unsigned long)pt + pt_regs_off(regnum)); if (info->pri_unat_loc) nat_addr = info->pri_unat_loc; else diff -Nru a/arch/ia64/lib/io.c b/arch/ia64/lib/io.c --- a/arch/ia64/lib/io.c Thu Jun 6 04:07:16 2002 +++ b/arch/ia64/lib/io.c Thu Mar 27 07:52:21 2003 @@ -87,12 +87,31 @@ __ia64_outl(val, port); } -void -ia64_mmiob (void) +unsigned char +ia64_readb (void *addr) { - __ia64_mmiob(); + return __ia64_readb (addr); } +unsigned short +ia64_readw (void *addr) +{ + return __ia64_readw (addr); +} + +unsigned int +ia64_readl (void *addr) +{ + return __ia64_readl (addr); +} + +unsigned long +ia64_readq (void *addr) +{ + return __ia64_readq (addr) +} + + /* define aliases: */ asm (".global __ia64_inb, __ia64_inw, __ia64_inl"); @@ -105,7 +124,11 @@ asm ("__ia64_outw = ia64_outw"); asm ("__ia64_outl = ia64_outl"); -asm (".global __ia64_mmiob"); -asm ("__ia64_mmiob = ia64_mmiob"); +asm (".global __ia64_readb, __ia64_readw, __ia64_readl, __ia64_readq"); +asm ("__ia64_readb = ia64_readb"); +asm ("__ia64_readw = ia64_readw"); +asm ("__ia64_readl = ia64_readl"); +asm ("__ia64_readq = ia64_readq"); + #endif /* CONFIG_IA64_GENERIC */ diff -Nru a/arch/ia64/lib/swiotlb.c b/arch/ia64/lib/swiotlb.c --- a/arch/ia64/lib/swiotlb.c Tue Feb 25 09:17:11 2003 +++ b/arch/ia64/lib/swiotlb.c Tue Apr 1 01:19:53 2003 @@ -473,12 +473,6 @@ sync_single(hwdev, (void *) sg->dma_address, sg->dma_length, direction); } -unsigned long -swiotlb_dma_address (struct scatterlist *sg) -{ - return sg->dma_address; -} - /* * Return whether the given PCI device DMA address mask can be supported properly. For * example, if your device can only drive the low 24-bits during PCI bus mastering, then @@ -497,7 +491,6 @@ EXPORT_SYMBOL(swiotlb_unmap_sg); EXPORT_SYMBOL(swiotlb_sync_single); EXPORT_SYMBOL(swiotlb_sync_sg); -EXPORT_SYMBOL(swiotlb_dma_address); EXPORT_SYMBOL(swiotlb_alloc_consistent); EXPORT_SYMBOL(swiotlb_free_consistent); EXPORT_SYMBOL(swiotlb_pci_dma_supported); diff -Nru a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c --- a/arch/ia64/mm/fault.c Thu Feb 13 05:43:47 2003 +++ b/arch/ia64/mm/fault.c Wed Apr 9 11:51:34 2003 @@ -194,6 +194,7 @@ up_read(&mm->mmap_sem); if (current->pid == 1) { yield(); + down_read(&mm->mmap_sem); goto survive; } printk(KERN_CRIT "VM: killing process %s\n", current->comm); diff -Nru a/arch/ia64/module.lds b/arch/ia64/module.lds --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/module.lds Wed Mar 26 09:30:57 2003 @@ -0,0 +1,13 @@ +SECTIONS { + /* Group unwind sections into a single section: */ + .IA_64.unwind_info : { *(.IA_64.unwind_info*) } + .IA_64.unwind : { *(.IA_64.unwind*) } + /* + * Create place-holder sections to hold the PLTs, GOT, and + * official procedure-descriptors (.opd). + */ + .core.plt : { BYTE(0) } + .init.plt : { BYTE(0) } + .got : { BYTE(0) } + .opd : { BYTE(0) } +} diff -Nru a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c --- a/arch/ia64/pci/pci.c Sun Mar 16 14:16:30 2003 +++ b/arch/ia64/pci/pci.c Tue Apr 8 12:03:13 2003 @@ -49,11 +49,13 @@ /* * Low-level SAL-based PCI configuration access functions. Note that SAL * calls are already serialized (via sal_lock), so we don't need another - * synchronization mechanism here. Not using segment number (yet). + * synchronization mechanism here. */ -#define PCI_SAL_ADDRESS(bus, dev, fn, reg) \ - ((u64)(bus << 16) | (u64)(dev << 11) | (u64)(fn << 8) | (u64)(reg)) +#define PCI_SAL_ADDRESS(seg, bus, dev, fn, reg) \ + ((u64)(seg << 24) | (u64)(bus << 16) | \ + (u64)(dev << 11) | (u64)(fn << 8) | (u64)(reg)) + static int __pci_sal_read (int seg, int bus, int dev, int fn, int reg, int len, u32 *value) @@ -61,10 +63,10 @@ int result = 0; u64 data = 0; - if (!value || (bus > 255) || (dev > 31) || (fn > 7) || (reg > 255)) + if (!value || (seg > 255) || (bus > 255) || (dev > 31) || (fn > 7) || (reg > 255)) return -EINVAL; - result = ia64_sal_pci_config_read(PCI_SAL_ADDRESS(bus, dev, fn, reg), len, &data); + result = ia64_sal_pci_config_read(PCI_SAL_ADDRESS(seg, bus, dev, fn, reg), len, &data); *value = (u32) data; @@ -74,24 +76,24 @@ static int __pci_sal_write (int seg, int bus, int dev, int fn, int reg, int len, u32 value) { - if ((bus > 255) || (dev > 31) || (fn > 7) || (reg > 255)) + if ((seg > 255) || (bus > 255) || (dev > 31) || (fn > 7) || (reg > 255)) return -EINVAL; - return ia64_sal_pci_config_write(PCI_SAL_ADDRESS(bus, dev, fn, reg), len, value); + return ia64_sal_pci_config_write(PCI_SAL_ADDRESS(seg, bus, dev, fn, reg), len, value); } static int pci_sal_read (struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *value) { - return __pci_sal_read(0, bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), + return __pci_sal_read(PCI_SEGMENT(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size, value); } static int pci_sal_write (struct pci_bus *bus, unsigned int devfn, int where, int size, u32 value) { - return __pci_sal_write(0, bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), + return __pci_sal_write(PCI_SEGMENT(bus), bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn), where, size, value); } @@ -114,24 +116,91 @@ subsys_initcall(pci_acpi_init); +static void __init +pcibios_fixup_resource(struct resource *res, u64 offset) +{ + res->start += offset; + res->end += offset; +} + +void __init +pcibios_fixup_device_resources(struct pci_dev *dev, struct pci_bus *bus) +{ + int i; + + for (i = 0; i < PCI_NUM_RESOURCES; i++) { + if (!dev->resource[i].start) + continue; + if (dev->resource[i].flags & IORESOURCE_MEM) + pcibios_fixup_resource(&dev->resource[i], + PCI_CONTROLLER(dev)->mem_offset); + } +} + /* Called by ACPI when it finds a new root bus. */ + +static struct pci_controller * +alloc_pci_controller(int seg) +{ + struct pci_controller *controller; + + controller = kmalloc(sizeof(*controller), GFP_KERNEL); + if (!controller) + return NULL; + + memset(controller, 0, sizeof(*controller)); + controller->segment = seg; + return controller; +} + struct pci_bus * -pcibios_scan_root (int bus) +scan_root_bus(int bus, struct pci_ops *ops, void *sysdata) { - struct list_head *list; - struct pci_bus *pci_bus; + struct pci_bus *b; - list_for_each(list, &pci_root_buses) { - pci_bus = pci_bus_b(list); - if (pci_bus->number == bus) { - /* Already scanned */ - printk("PCI: Bus (%02x) already probed\n", bus); - return pci_bus; - } - } + /* + * We know this is a new root bus we haven't seen before, so + * scan it, even if we've seen the same bus number in a different + * segment. + */ + b = kmalloc(sizeof(*b), GFP_KERNEL); + if (!b) + return NULL; + + memset(b, 0, sizeof(*b)); + INIT_LIST_HEAD(&b->children); + INIT_LIST_HEAD(&b->devices); + + list_add_tail(&b->node, &pci_root_buses); + + b->number = b->secondary = bus; + b->resource[0] = &ioport_resource; + b->resource[1] = &iomem_resource; + + b->sysdata = sysdata; + b->ops = ops; + b->subordinate = pci_do_scan_bus(b); + + return b; +} + +struct pci_bus * +pcibios_scan_root(void *handle, int seg, int bus) +{ + struct pci_controller *controller; + u64 base, size, offset; + + printk("PCI: Probing PCI hardware on bus (%02x:%02x)\n", seg, bus); + controller = alloc_pci_controller(seg); + if (!controller) + return NULL; + + controller->acpi_handle = handle; - printk("PCI: Probing PCI hardware on bus (%02x)\n", bus); - return pci_scan_bus(bus, pci_root_ops, NULL); + acpi_get_addr_space(handle, ACPI_MEMORY_RANGE, &base, &size, &offset); + controller->mem_offset = offset; + + return scan_root_bus(bus, pci_root_ops, controller); } /* @@ -140,6 +209,11 @@ void __devinit pcibios_fixup_bus (struct pci_bus *b) { + struct list_head *ln; + + for (ln = b->devices.next; ln != &b->devices; ln = ln->next) + pcibios_fixup_device_resources(pci_dev_b(ln), b); + return; } diff -Nru a/arch/ia64/scripts/check-gas b/arch/ia64/scripts/check-gas --- a/arch/ia64/scripts/check-gas Fri Jan 24 19:45:37 2003 +++ b/arch/ia64/scripts/check-gas Sat Mar 22 07:38:27 2003 @@ -1,8 +1,9 @@ #!/bin/sh dir=$(dirname $0) CC=$1 +OBJDUMP=$2 $CC -c $dir/check-gas-asm.S -res=$(objdump -r --section .data check-gas-asm.o | fgrep 00004 | tr -s ' ' |cut -f3 -d' ') +res=$($OBJDUMP -r --section .data check-gas-asm.o | fgrep 00004 | tr -s ' ' |cut -f3 -d' ') if [ $res != ".text" ]; then echo buggy else diff -Nru a/arch/ia64/sn/Makefile b/arch/ia64/sn/Makefile --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/sn/Makefile Tue Mar 18 22:42:41 2003 @@ -0,0 +1,14 @@ +# arch/ia64/sn/Makefile +# +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. +# +# Copyright (C) 2003 Silicon Graphics, Inc. All Rights Reserved. +# +# Makefile for the sn ia64 subplatform +# + +EXTRA_CFLAGS := -DLITTLE_ENDIAN + +obj-y += kernel/ # io/ diff -Nru a/arch/ia64/sn/fakeprom/Makefile b/arch/ia64/sn/fakeprom/Makefile --- a/arch/ia64/sn/fakeprom/Makefile Mon Dec 16 15:41:30 2002 +++ b/arch/ia64/sn/fakeprom/Makefile Tue Mar 18 08:17:12 2003 @@ -1,20 +1,29 @@ +# arch/ia64/sn/fakeprom/Makefile # # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive # for more details. # -# Copyright (c) 2000-2001 Silicon Graphics, Inc. All rights reserved. +# Copyright (c) 2000-2003 Silicon Graphics, Inc. All rights reserved. # +# Medusa fake PROM support +# + +EXTRA_TARGETS := fpromasm.o main.o fw-emu.o fpmem.o klgraph_init.o \ + fprom vmlinux.sym + +OBJS := $(obj)/fpromasm.o $(obj)/main.o $(obj)/fw-emu.o $(obj)/fpmem.o \ + $(obj)/klgraph_init.o + +LDFLAGS_fprom = -static -T -obj-y=fpromasm.o main.o fw-emu.o fpmem.o klgraph_init.o +.PHONY: fprom -fprom: $(OBJ) - $(LD) -static -Tfprom.lds -o fprom $(OBJ) $(LIB) +fprom: $(obj)/fprom -.S.o: - $(CC) -D__ASSEMBLY__ $(AFLAGS) $(AFLAGS_KERNEL) -c -o $*.o $< -.c.o: - $(CC) $(CFLAGS) $(CFLAGS_KERNEL) -c -o $*.o $< +$(obj)/fprom: $(src)/fprom.lds $(OBJS) arch/ia64/lib/lib.a FORCE + $(call if_changed,ld) -clean: - rm -f *.o fprom +$(obj)/vmlinux.sym: $(src)/make_textsym System.map + $(src)/make_textsym vmlinux > vmlinux.sym + $(call cmd,cptotop) diff -Nru a/arch/ia64/sn/fakeprom/README b/arch/ia64/sn/fakeprom/README --- a/arch/ia64/sn/fakeprom/README Tue Dec 3 10:07:22 2002 +++ b/arch/ia64/sn/fakeprom/README Tue Mar 18 07:58:23 2003 @@ -1,3 +1,35 @@ +/* + * Copyright (c) 2002-2003 Silicon Graphics, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it would be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * Further, this software is distributed without any warranty that it is + * free of the rightful claim of any third person regarding infringement + * or the like. Any license provided herein, whether implied or + * otherwise, applies only to this software file. Patent licenses, if + * any, provided herein do not apply to combinations of this program with + * other software, or any other product whatsoever. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. + * + * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, + * Mountain View, CA 94043, or: + * + * http://www.sgi.com + * + * For further information regarding this notice, see: + * + * http://oss.sgi.com/projects/GenInfo/NoticeExplan + */ + This directory contains the files required to build the fake PROM image that is currently being used to boot IA64 kernels running under the SGI Medusa kernel. diff -Nru a/arch/ia64/sn/fakeprom/fpmem.c b/arch/ia64/sn/fakeprom/fpmem.c --- a/arch/ia64/sn/fakeprom/fpmem.c Tue Feb 25 02:41:34 2003 +++ b/arch/ia64/sn/fakeprom/fpmem.c Tue Mar 18 07:58:23 2003 @@ -4,7 +4,7 @@ * License. See the file "COPYING" in the main directory of this archive * for more details. * - * Copyright (C) 2000-2002 Silicon Graphics, Inc. All rights reserved. + * Copyright (C) 2000-2003 Silicon Graphics, Inc. All rights reserved. */ @@ -168,13 +168,13 @@ #endif void -build_mem_desc(efi_memory_desc_t *md, int type, long paddr, long numbytes) +build_mem_desc(efi_memory_desc_t *md, int type, long paddr, long numbytes, long attr) { md->type = type; md->phys_addr = paddr; md->virt_addr = 0; md->num_pages = numbytes >> 12; - md->attribute = EFI_MEMORY_WB; + md->attribute = attr; } int @@ -236,28 +236,40 @@ */ if (bank == 0) { if (cnode == 0) { + hole = 2*1024*1024; + build_mem_desc(md, EFI_PAL_CODE, paddr, hole, EFI_MEMORY_WB|EFI_MEMORY_WB); + numbytes -= hole; + paddr += hole; + count++ ; + md += mdsize; hole = 1*1024*1024; - build_mem_desc(md, EFI_PAL_CODE, paddr, hole); + build_mem_desc(md, EFI_CONVENTIONAL_MEMORY, paddr, hole, EFI_MEMORY_UC); numbytes -= hole; paddr += hole; count++ ; md += mdsize; - hole = 3*1024*1024; - build_mem_desc(md, EFI_RUNTIME_SERVICES_DATA, paddr, hole); + hole = 1*1024*1024; + build_mem_desc(md, EFI_RUNTIME_SERVICES_DATA, paddr, hole, EFI_MEMORY_WB|EFI_MEMORY_WB); numbytes -= hole; paddr += hole; count++ ; md += mdsize; } else { - hole = PROMRESERVED_SIZE; - build_mem_desc(md, EFI_RUNTIME_SERVICES_DATA, paddr, hole); + hole = 2*1024*1024; + build_mem_desc(md, EFI_RUNTIME_SERVICES_DATA, paddr, hole, EFI_MEMORY_WB|EFI_MEMORY_WB); + numbytes -= hole; + paddr += hole; + count++ ; + md += mdsize; + hole = 2*1024*1024; + build_mem_desc(md, EFI_RUNTIME_SERVICES_DATA, paddr, hole, EFI_MEMORY_UC); numbytes -= hole; paddr += hole; count++ ; md += mdsize; } } - build_mem_desc(md, EFI_CONVENTIONAL_MEMORY, paddr, numbytes); + build_mem_desc(md, EFI_CONVENTIONAL_MEMORY, paddr, numbytes, EFI_MEMORY_WB|EFI_MEMORY_WB); md += mdsize ; count++ ; diff -Nru a/arch/ia64/sn/fakeprom/fprom.lds b/arch/ia64/sn/fakeprom/fprom.lds --- a/arch/ia64/sn/fakeprom/fprom.lds Fri Mar 8 18:11:41 2002 +++ b/arch/ia64/sn/fakeprom/fprom.lds Tue Mar 18 07:58:23 2003 @@ -1,3 +1,34 @@ +/* + * Copyright (c) 2002-2003 Silicon Graphics, Inc. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2 of the GNU General Public License + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it would be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * Further, this software is distributed without any warranty that it is + * free of the rightful claim of any third person regarding infringement + * or the like. Any license provided herein, whether implied or + * otherwise, applies only to this software file. Patent licenses, if + * any, provided herein do not apply to combinations of this program with + * other software, or any other product whatsoever. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. + * + * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, + * Mountain View, CA 94043, or: + * + * http://www.sgi.com + * + * For further information regarding this notice, see: + * + * http://oss.sgi.com/projects/GenInfo/NoticeExplan + */ OUTPUT_FORMAT("elf64-ia64-little") OUTPUT_ARCH(ia64) diff -Nru a/arch/ia64/sn/fakeprom/make_textsym b/arch/ia64/sn/fakeprom/make_textsym --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/sn/fakeprom/make_textsym Tue Mar 18 07:58:23 2003 @@ -0,0 +1,171 @@ +#!/bin/sh +# +# Build a textsym file for use in the Arium ITP probe. +# +# +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. +# +# Copyright (c) 2001-2002 Silicon Graphics, Inc. All rights reserved. +# + +help() { +cat < []] + If no input file is specified, it defaults to vmlinux. + If no output file name is specified, it defaults to "textsym". +END +exit 1 +} + +err () { + echo "ERROR - $*" >&2 + exit 1 +} + + +OPTS="H" +while getopts "$OPTS" c ; do + case $c in + H) help;; + \?) help;; + esac + +done +shift `expr $OPTIND - 1` + +LINUX=${1:-vmlinux} +TEXTSYM=${2:-${LINUX}.sym} +TMPSYM=${2:-${LINUX}.sym.tmp} +trap "/bin/rm -f $TMPSYM" 0 + +[ -f $VMLINUX ] || help + +$OBJDUMP -t $LINUX | egrep -v '__ks' | sort > $TMPSYM +SN1=`egrep "dig_setup|Synergy_da_indr" $TMPSYM|wc -l` + +# Dataprefix and textprefix correspond to the VGLOBAL_BASE and VPERNODE_BASE. +# Eventually, these values should be: +# dataprefix ffffffff +# textprefix fffffffe +# but right now they're still changing, so make them dynamic. +dataprefix=`awk ' / \.data / { print substr($1, 0, 8) ; exit ; }' $TMPSYM` +textprefix=`awk ' / \.text / { print substr($1, 0, 8) ; exit ; }' $TMPSYM` + +# pipe everything thru sort +echo "TEXTSYM V1.0" +(cat < 0) { + n = n*16 + substr(s,1,1) + s = substr(s,2) + } + printf "GLOBAL | %s | DATA | %s | %d\n", $1, $NF, n + } + } + if($NF == "_end") + exit + +} +' $TMPSYM ) | egrep -v " __device| __vendor" | awk -v sn1="$SN1" ' +/GLOBAL/ { + print $0 + if (sn1 != 0) { + /* 32 bits of sn1 physical addrs, */ + print substr($0,1,9) "04" substr($0,20,16) "Phy_" substr($0,36) + } else { + /* 38 bits of sn2 physical addrs, need addr space bits */ + print substr($0,1,9) "3004" substr($0,20,16) "Phy_" substr($0,36) + } + +} ' | sort -k3 + +N=`wc -l $TEXTSYM|awk '{print $1}'` +echo "Generated TEXTSYM file" >&2 +echo " $LINUX --> $TEXTSYM" >&2 +echo " Found $N symbols" >&2 diff -Nru a/arch/ia64/sn/io/Makefile b/arch/ia64/sn/io/Makefile --- a/arch/ia64/sn/io/Makefile Mon Feb 24 04:55:04 2003 +++ b/arch/ia64/sn/io/Makefile Tue Mar 18 07:58:24 2003 @@ -1,3 +1,4 @@ +# arch/ia64/sn/io/Makefile # # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive @@ -5,7 +6,8 @@ # # Copyright (C) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. # -# Makefile for the sn kernel routines. +# Makefile for the sn io routines. +# EXTRA_CFLAGS := -DLITTLE_ENDIAN @@ -19,4 +21,6 @@ alenlist.o pci.o pci_dma.o ate_utils.o \ ifconfig_net.o io.o ioconfig_bus.o -obj-$(CONFIG_PCIBA) += pciba.o +obj-$(CONFIG_IA64_SGI_SN2) += sn2/ + +obj-$(CONFIG_PCIBA) += pciba.o diff -Nru a/arch/ia64/sn/io/sn2/Makefile b/arch/ia64/sn/io/sn2/Makefile --- a/arch/ia64/sn/io/sn2/Makefile Mon Feb 24 05:40:29 2003 +++ b/arch/ia64/sn/io/sn2/Makefile Tue Mar 18 07:58:24 2003 @@ -1,3 +1,4 @@ +# arch/ia64/sn/io/sn2/Makefile # # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive @@ -6,14 +7,14 @@ # Copyright (C) 2002-2003 Silicon Graphics, Inc. All Rights Reserved. # # Makefile for the sn2 specific io routines. +# -EXTRA_CFLAGS := -DLITTLE_ENDIAN +EXTRA_CFLAGS := -DLITTLE_ENDIAN -obj-y += bte_error.o geo_op.o klconflib.o klgraph.o l1.o \ +obj-y += pcibr/ bte_error.o geo_op.o klconflib.o klgraph.o l1.o \ l1_command.o ml_iograph.o ml_SN_init.o ml_SN_intr.o module.o \ pci_bus_cvlink.o pciio.o pic.o sgi_io_init.o shub.o shuberror.o \ shub_intr.o shubio.o xbow.o xtalk.o obj-$(CONFIG_KDB) += kdba_io.o - obj-$(CONFIG_SHUB_1_0_SPECIFIC) += efi-rtc.o diff -Nru a/arch/ia64/sn/io/sn2/l1_command.c b/arch/ia64/sn/io/sn2/l1_command.c --- a/arch/ia64/sn/io/sn2/l1_command.c Mon Feb 24 05:24:42 2003 +++ b/arch/ia64/sn/io/sn2/l1_command.c Tue Mar 18 07:58:24 2003 @@ -154,7 +154,7 @@ return ret; } - +#ifdef CONFIG_PCI /* * iobrick_module_get_nasid() returns a module_id which has the brick * type encoded in bits 15-12, but this is not the true brick type... @@ -185,7 +185,7 @@ return -1; /* unknown brick */ } - +#endif int iobrick_module_get_nasid(nasid_t nasid) { int io_moduleid; diff -Nru a/arch/ia64/sn/io/sn2/pcibr/Makefile b/arch/ia64/sn/io/sn2/pcibr/Makefile --- a/arch/ia64/sn/io/sn2/pcibr/Makefile Mon Feb 24 05:40:54 2003 +++ b/arch/ia64/sn/io/sn2/pcibr/Makefile Tue Mar 18 07:58:24 2003 @@ -1,3 +1,4 @@ +# arch/ia64/sn/io/sn2/pcibr/Makefile # # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive @@ -6,6 +7,7 @@ # Copyright (C) 2002-2003 Silicon Graphics, Inc. All Rights Reserved. # # Makefile for the sn2 specific pci bridge routines. +# EXTRA_CFLAGS := -DLITTLE_ENDIAN diff -Nru a/arch/ia64/sn/kernel/Makefile b/arch/ia64/sn/kernel/Makefile --- a/arch/ia64/sn/kernel/Makefile Mon Feb 3 14:19:35 2003 +++ b/arch/ia64/sn/kernel/Makefile Tue Mar 18 07:58:24 2003 @@ -1,46 +1,18 @@ # arch/ia64/sn/kernel/Makefile # -# Copyright (C) 1999,2001-2002 Silicon Graphics, Inc. All Rights Reserved. +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. # -# This program is free software; you can redistribute it and/or modify it -# under the terms of version 2 of the GNU General Public License -# as published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Further, this software is distributed without any warranty that it is -# free of the rightful claim of any third person regarding infringement -# or the like. Any license provided herein, whether implied or -# otherwise, applies only to this software file. Patent licenses, if -# any, provided herein do not apply to combinations of this program with -# other software, or any other product whatsoever. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. -# -# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, -# Mountain View, CA 94043, or: -# -# http://www.sgi.com -# -# For further information regarding this notice, see: -# -# http://oss.sgi.com/projects/GenInfo/NoticeExplan +# Copyright (C) 1999,2001-2003 Silicon Graphics, Inc. All Rights Reserved. # -EXTRA_CFLAGS := -DLITTLE_ENDIAN +EXTRA_CFLAGS := -DLITTLE_ENDIAN -.S.s: - $(CPP) $(AFLAGS) $(AFLAGS_KERNEL) -o $*.s $< -.S.o: - $(CC) $(AFLAGS) $(AFLAGS_KERNEL) -c -o $*.o $< +obj-y := probe.o setup.o sn_asm.o sv.o bte.o iomv.o \ + irq.o mca.o -obj-y = probe.o setup.o sn_asm.o sv.o bte.o iomv.o -obj-$(CONFIG_IA64_SGI_SN1) += irq.o mca.o -obj-$(CONFIG_IA64_SGI_SN2) += irq.o mca.o +obj-$(CONFIG_IA64_SGI_SN2) += sn2/ obj-$(CONFIG_IA64_SGI_AUTOTEST) += llsc4.o misctest.o obj-$(CONFIG_IA64_GENERIC) += machvec.o obj-$(CONFIG_MODULES) += sn_ksyms.o diff -Nru a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c --- a/arch/ia64/sn/kernel/setup.c Thu Mar 6 11:40:52 2003 +++ b/arch/ia64/sn/kernel/setup.c Tue Mar 18 07:58:24 2003 @@ -237,7 +237,7 @@ "%x.%02x\n", SN_SAL_MIN_MAJOR, SN_SAL_MIN_MINOR); panic("PROM version too old\n"); } - +#ifdef CONFIG_PCI #ifdef CONFIG_IA64_SGI_SN2 { extern void io_sh_swapper(int, int); @@ -253,7 +253,7 @@ (void)get_master_baseio_nasid(); } #endif - +#endif /* CONFIG_PCI */ status = ia64_sal_freq_base(SAL_FREQ_BASE_REALTIME_CLOCK, &ticks_per_sec, &drift); if (status != 0 || ticks_per_sec < 100000) { printk(KERN_WARNING "unable to determine platform RTC clock frequency, guessing.\n"); @@ -349,7 +349,7 @@ for (cnode=0; cnode < numnodes; cnode++) memcpy(nodepdaindr[cnode]->pernode_pdaindr, nodepdaindr, sizeof(nodepdaindr)); - +#ifdef CONFIG_PCI /* * Set up IO related platform-dependent nodepda fields. * The following routine actually sets up the hubinfo struct @@ -359,6 +359,7 @@ init_platform_nodepda(nodepdaindr[cnode], cnode); bte_init_node (nodepdaindr[cnode], cnode); } +#endif } /** diff -Nru a/arch/ia64/sn/kernel/sn2/Makefile b/arch/ia64/sn/kernel/sn2/Makefile --- a/arch/ia64/sn/kernel/sn2/Makefile Mon Feb 24 05:15:44 2003 +++ b/arch/ia64/sn/kernel/sn2/Makefile Tue Mar 18 07:58:24 2003 @@ -1,38 +1,14 @@ -# # arch/ia64/sn/kernel/sn2/Makefile # +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. +# # Copyright (C) 1999,2001-2002 Silicon Graphics, Inc. All rights reserved. # -# This program is free software; you can redistribute it and/or modify it -# under the terms of version 2 of the GNU General Public License -# as published by the Free Software Foundation. -# -# This program is distributed in the hope that it would be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Further, this software is distributed without any warranty that it is -# free of the rightful claim of any third person regarding infringement -# or the like. Any license provided herein, whether implied or -# otherwise, applies only to this software file. Patent licenses, if -# any, provided herein do not apply to combinations of this program with -# other software, or any other product whatsoever. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. -# -# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, -# Mountain View, CA 94043, or: -# -# http://www.sgi.com -# -# For further information regarding this notice, see: -# -# http://oss.sgi.com/projects/GenInfo/NoticeExplan +# sn2 specific kernel files # -EXTRA_CFLAGS := -DLITTLE_ENDIAN +EXTRA_CFLAGS := -DLITTLE_ENDIAN -obj-y += cache.o iomv.o ptc_deadlock.o sn2_smp.o \ - sn_proc_fs.o +obj-y += cache.o iomv.o ptc_deadlock.o sn2_smp.o sn_proc_fs.o diff -Nru a/arch/ia64/sn/kernel/sn2/io.c b/arch/ia64/sn/kernel/sn2/io.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/ia64/sn/kernel/sn2/io.c Thu Mar 27 07:51:51 2003 @@ -0,0 +1,98 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2003 Silicon Graphics, Inc. All rights reserved. + * + * The generic kernel requires function pointers to these routines, so + * we wrap the inlines from asm/ia64/sn/sn2/io.h here. + */ + +#include +#include + +#include + +#ifdef CONFIG_IA64_GENERIC + +unsigned int +sn_inb (unsigned long port) +{ + return __sn_inb(port); +} + +unsigned int +sn_inw (unsigned long port) +{ + return __sn_inw(port); +} + +unsigned int +sn_inl (unsigned long port) +{ + return __sn_inl(port); +} + +void +sn_outb (unsigned char val, unsigned long port) +{ + __sn_outb(val, port); +} + +void +sn_outw (unsigned short val, unsigned long port) +{ + __sn_outw(val, port); +} + +void +sn_outl (unsigned int val, unsigned long port) +{ + __sn_outl(val, port); +} + +unsigned char +sn_readb (void *addr) +{ + return __sn_readb (addr); +} + +unsigned short +sn_readw (void *addr) +{ + return __sn_readw (addr); +} + +unsigned int +sn_readl (void *addr) +{ + return __sn_readl (addr); +} + +unsigned long +sn_readq (void *addr) +{ + return __sn_readq (addr) +} + + +/* define aliases: */ + +asm (".global __sn_inb, __sn_inw, __sn_inl"); +asm ("__sn_inb = sn_inb"); +asm ("__sn_inw = sn_inw"); +asm ("__sn_inl = sn_inl"); + +asm (".global __sn_outb, __sn_outw, __sn_outl"); +asm ("__sn_outb = sn_outb"); +asm ("__sn_outw = sn_outw"); +asm ("__sn_outl = sn_outl"); + +asm (".global __sn_readb, __sn_readw, __sn_readl, __sn_readq"); +asm ("__sn_readb = sn_readb"); +asm ("__sn_readw = sn_readw"); +asm ("__sn_readl = sn_readl"); +asm ("__sn_readq = sn_readq"); + +#endif /* CONFIG_IA64_GENERIC */ diff -Nru a/arch/ia64/sn/kernel/sn2/iomv.c b/arch/ia64/sn/kernel/sn2/iomv.c --- a/arch/ia64/sn/kernel/sn2/iomv.c Tue Dec 3 10:07:31 2002 +++ b/arch/ia64/sn/kernel/sn2/iomv.c Thu Mar 27 07:53:37 2003 @@ -3,10 +3,11 @@ * License. See the file "COPYING" in the main directory of this archive * for more details. * - * Copyright (C) 2000-2002 Silicon Graphics, Inc. All rights reserved. + * Copyright (C) 2000-2003 Silicon Graphics, Inc. All rights reserved. */ #include +#include #include #include #include @@ -46,8 +47,10 @@ } } +EXPORT_SYMBOL(sn_io_addr); + /** - * sn2_mmiob - I/O space memory barrier + * sn_mmiob - I/O space memory barrier * * Acts as a memory mapped I/O barrier for platforms that queue writes to * I/O space. This ensures that subsequent writes to I/O space arrive after @@ -60,9 +63,9 @@ * */ void -sn2_mmiob (void) +sn_mmiob (void) { - while ((((volatile unsigned long) (*pda->pio_write_status_addr)) & SH_PIO_WRITE_STATUS_0_PENDING_WRITE_COUNT_MASK) != + while ((((volatile unsigned long) (*pda.pio_write_status_addr)) & SH_PIO_WRITE_STATUS_0_PENDING_WRITE_COUNT_MASK) != SH_PIO_WRITE_STATUS_0_PENDING_WRITE_COUNT_MASK) udelay(1); } diff -Nru a/arch/ia64/sn/tools/make_textsym b/arch/ia64/sn/tools/make_textsym --- a/arch/ia64/sn/tools/make_textsym Tue Dec 3 10:07:32 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,171 +0,0 @@ -#!/bin/sh -# -# Build a textsym file for use in the Arium ITP probe. -# -# -# This file is subject to the terms and conditions of the GNU General Public -# License. See the file "COPYING" in the main directory of this archive -# for more details. -# -# Copyright (c) 2001-2002 Silicon Graphics, Inc. All rights reserved. -# - -help() { -cat < []] - If no input file is specified, it defaults to vmlinux. - If no output file name is specified, it defaults to "textsym". -END -exit 1 -} - -err () { - echo "ERROR - $*" >&2 - exit 1 -} - - -OPTS="H" -while getopts "$OPTS" c ; do - case $c in - H) help;; - \?) help;; - esac - -done -shift `expr $OPTIND - 1` - -LINUX=${1:-vmlinux} -TEXTSYM=${2:-${LINUX}.sym} -TMPSYM=${2:-${LINUX}.sym.tmp} -trap "/bin/rm -f $TMPSYM" 0 - -[ -f $VMLINUX ] || help - -$OBJDUMP -t $LINUX | egrep -v '__ks' | sort > $TMPSYM -SN1=`egrep "dig_setup|Synergy_da_indr" $TMPSYM|wc -l` - -# Dataprefix and textprefix correspond to the VGLOBAL_BASE and VPERNODE_BASE. -# Eventually, these values should be: -# dataprefix ffffffff -# textprefix fffffffe -# but right now they're still changing, so make them dynamic. -dataprefix=`awk ' / \.data / { print substr($1, 0, 8) ; exit ; }' $TMPSYM` -textprefix=`awk ' / \.text / { print substr($1, 0, 8) ; exit ; }' $TMPSYM` - -# pipe everything thru sort -echo "TEXTSYM V1.0" -(cat < 0) { - n = n*16 + substr(s,1,1) - s = substr(s,2) - } - printf "GLOBAL | %s | DATA | %s | %d\n", $1, $NF, n - } - } - if($NF == "_end") - exit - -} -' $TMPSYM ) | egrep -v " __device| __vendor" | awk -v sn1="$SN1" ' -/GLOBAL/ { - print $0 - if (sn1 != 0) { - /* 32 bits of sn1 physical addrs, */ - print substr($0,1,9) "04" substr($0,20,16) "Phy_" substr($0,36) - } else { - /* 38 bits of sn2 physical addrs, need addr space bits */ - print substr($0,1,9) "3004" substr($0,20,16) "Phy_" substr($0,36) - } - -} ' | sort -k3 - -N=`wc -l $TEXTSYM|awk '{print $1}'` -echo "Generated TEXTSYM file" >&2 -echo " $LINUX --> $TEXTSYM" >&2 -echo " Found $N symbols" >&2 diff -Nru a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c --- a/arch/parisc/kernel/sys_parisc32.c Sun Mar 23 14:31:56 2003 +++ b/arch/parisc/kernel/sys_parisc32.c Thu Apr 3 14:27:34 2003 @@ -1592,7 +1592,7 @@ return sys_semctl (semid, semnum, cmd, arg); } -extern int sys_lookup_dcookie(u64 cookie64, char *buf, size_t len); +extern long sys_lookup_dcookie(u64 cookie64, char *buf, size_t len); long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char *buf, size_t len) diff -Nru a/arch/ppc64/kernel/sys_ppc32.c b/arch/ppc64/kernel/sys_ppc32.c --- a/arch/ppc64/kernel/sys_ppc32.c Sun Mar 23 14:38:47 2003 +++ b/arch/ppc64/kernel/sys_ppc32.c Thu Apr 3 14:27:34 2003 @@ -2781,10 +2781,10 @@ return secs; } -extern asmlinkage int sys_sched_setaffinity(pid_t pid, unsigned int len, +extern asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); -asmlinkage int sys32_sched_setaffinity(compat_pid_t pid, unsigned int len, +asmlinkage long sys32_sched_setaffinity(compat_pid_t pid, unsigned int len, u32 *user_mask_ptr) { unsigned long kernel_mask; @@ -2805,10 +2805,10 @@ return ret; } -extern asmlinkage int sys_sched_getaffinity(pid_t pid, unsigned int len, +extern asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); -asmlinkage int sys32_sched_getaffinity(compat_pid_t pid, unsigned int len, +asmlinkage long sys32_sched_getaffinity(compat_pid_t pid, unsigned int len, u32 *user_mask_ptr) { unsigned long kernel_mask; @@ -2914,7 +2914,7 @@ return sys_ftruncate(fd, (high << 32) | low); } -extern int sys_lookup_dcookie(u64 cookie64, char *buf, size_t len); +extern long sys_lookup_dcookie(u64 cookie64, char *buf, size_t len); long ppc32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char *buf, size_t len) diff -Nru a/arch/sparc/kernel/process.c b/arch/sparc/kernel/process.c --- a/arch/sparc/kernel/process.c Tue Dec 3 15:19:14 2002 +++ b/arch/sparc/kernel/process.c Sat Apr 5 23:36:07 2003 @@ -523,9 +523,16 @@ new_stack = (((struct reg_window *) childregs) - 1); copy_regwin(new_stack, (((struct reg_window *) regs) - 1)); + /* + * A new process must start with interrupts closed in 2.5, + * because this is how Mingo's scheduler works (see schedule_tail + * and finish_arch_switch). If we do not do it, a timer interrupt hits + * before we unlock, attempts to re-take the rq->lock, and then we die. + * Thus, kpsr|=PSR_PIL. + */ ti->ksp = (unsigned long) new_stack; ti->kpc = (((unsigned long) ret_from_fork) - 0x8); - ti->kpsr = current->thread.fork_kpsr; + ti->kpsr = current->thread.fork_kpsr | PSR_PIL; ti->kwim = current->thread.fork_kwim; /* This is used for sun4c only */ diff -Nru a/arch/sparc/kernel/sys_sparc.c b/arch/sparc/kernel/sys_sparc.c --- a/arch/sparc/kernel/sys_sparc.c Mon Mar 31 13:54:35 2003 +++ b/arch/sparc/kernel/sys_sparc.c Mon Apr 7 16:29:06 2003 @@ -140,7 +140,7 @@ goto out; } default: - err = -EINVAL; + err = -ENOSYS; goto out; } if (call <= MSGCTL) @@ -173,7 +173,7 @@ err = sys_msgctl (first, second, (struct msqid_ds *) ptr); goto out; default: - err = -EINVAL; + err = -ENOSYS; goto out; } if (call <= SHMCTL) @@ -205,11 +205,11 @@ err = sys_shmctl (first, second, (struct shmid_ds *) ptr); goto out; default: - err = -EINVAL; + err = -ENOSYS; goto out; } else - err = -EINVAL; + err = -ENOSYS; out: return err; } diff -Nru a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c --- a/arch/sparc/mm/srmmu.c Tue Feb 25 02:42:51 2003 +++ b/arch/sparc/mm/srmmu.c Sat Apr 5 23:38:52 2003 @@ -2162,6 +2162,16 @@ #endif +static pte_t srmmu_pgoff_to_pte(unsigned long pgoff) +{ + return __pte((pgoff << SRMMU_PTE_FILE_SHIFT) | SRMMU_FILE); +} + +static unsigned long srmmu_pte_to_pgoff(pte_t pte) +{ + return pte_val(pte) >> SRMMU_PTE_FILE_SHIFT; +} + /* Load up routines and constants for sun4m and sun4d mmu */ void __init ld_mmu_srmmu(void) { @@ -2188,7 +2198,9 @@ BTFIXUPSET_INT(page_kernel, pgprot_val(SRMMU_PAGE_KERNEL)); page_kernel = pgprot_val(SRMMU_PAGE_KERNEL); pg_iobits = SRMMU_VALID | SRMMU_WRITE | SRMMU_REF; - + + BTFIXUPSET_SIMM13(pte_file_max_bits, SRMMU_PTE_FILE_MAX_BITS); + /* Functions */ #ifndef CONFIG_SMP BTFIXUPSET_CALL(___xchg32, ___xchg32_sun4md, BTFIXUPCALL_SWAPG1G2); @@ -2239,6 +2251,7 @@ BTFIXUPSET_HALF(pte_writei, SRMMU_WRITE); BTFIXUPSET_HALF(pte_dirtyi, SRMMU_DIRTY); BTFIXUPSET_HALF(pte_youngi, SRMMU_REF); + BTFIXUPSET_HALF(pte_filei, SRMMU_FILE); BTFIXUPSET_HALF(pte_wrprotecti, SRMMU_WRITE); BTFIXUPSET_HALF(pte_mkcleani, SRMMU_DIRTY); BTFIXUPSET_HALF(pte_mkoldi, SRMMU_REF); @@ -2252,6 +2265,9 @@ BTFIXUPSET_CALL(alloc_thread_info, srmmu_alloc_thread_info, BTFIXUPCALL_NORM); BTFIXUPSET_CALL(free_thread_info, srmmu_free_thread_info, BTFIXUPCALL_NORM); + + BTFIXUPSET_CALL(pte_to_pgoff, srmmu_pte_to_pgoff, BTFIXUPCALL_NORM); + BTFIXUPSET_CALL(pgoff_to_pte, srmmu_pgoff_to_pte, BTFIXUPCALL_NORM); get_srmmu_type(); patch_window_trap_handlers(); diff -Nru a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c --- a/arch/sparc/mm/sun4c.c Tue Feb 25 09:17:39 2003 +++ b/arch/sparc/mm/sun4c.c Sat Apr 5 23:38:52 2003 @@ -1798,9 +1798,20 @@ static unsigned long sun4c_pte_pfn(pte_t pte) { - return (unsigned long)(pte_val(pte) & SUN4C_PFN_MASK); + return pte_val(pte) & SUN4C_PFN_MASK; } +static pte_t sun4c_pgoff_to_pte(unsigned long pgoff) +{ + return __pte(pgoff | _SUN4C_PAGE_FILE); +} + +static unsigned long sun4c_pte_to_pgoff(pte_t pte) +{ + return pte_val(pte) & ((1UL << SUN4C_PTE_FILE_MAX_BITS) - 1); +} + + static __inline__ unsigned long sun4c_pmd_page_v(pmd_t pmd) { return (pmd_val(pmd) & PAGE_MASK); @@ -2115,7 +2126,9 @@ page_kernel = pgprot_val(SUN4C_PAGE_KERNEL); pg_iobits = _SUN4C_PAGE_PRESENT | _SUN4C_READABLE | _SUN4C_WRITEABLE | _SUN4C_PAGE_IO | _SUN4C_PAGE_NOCACHE; - + + BTFIXUPSET_SIMM13(pte_file_max_bits, SUN4C_PTE_FILE_MAX_BITS); + /* Functions */ BTFIXUPSET_CALL(___xchg32, ___xchg32_sun4c, BTFIXUPCALL_NORM); BTFIXUPSET_CALL(do_check_pgt_cache, sun4c_check_pgt_cache, BTFIXUPCALL_NORM); @@ -2190,6 +2203,7 @@ BTFIXUPSET_HALF(pte_writei, _SUN4C_PAGE_WRITE); BTFIXUPSET_HALF(pte_dirtyi, _SUN4C_PAGE_MODIFIED); BTFIXUPSET_HALF(pte_youngi, _SUN4C_PAGE_ACCESSED); + BTFIXUPSET_HALF(pte_filei, _SUN4C_PAGE_FILE); BTFIXUPSET_HALF(pte_wrprotecti, _SUN4C_PAGE_WRITE|_SUN4C_PAGE_SILENT_WRITE); BTFIXUPSET_HALF(pte_mkcleani, _SUN4C_PAGE_MODIFIED|_SUN4C_PAGE_SILENT_WRITE); BTFIXUPSET_HALF(pte_mkoldi, _SUN4C_PAGE_ACCESSED|_SUN4C_PAGE_SILENT_READ); @@ -2197,6 +2211,9 @@ BTFIXUPSET_CALL(pte_mkdirty, sun4c_pte_mkdirty, BTFIXUPCALL_NORM); BTFIXUPSET_CALL(pte_mkyoung, sun4c_pte_mkyoung, BTFIXUPCALL_NORM); BTFIXUPSET_CALL(update_mmu_cache, sun4c_update_mmu_cache, BTFIXUPCALL_NORM); + + BTFIXUPSET_CALL(pte_to_pgoff, sun4c_pte_to_pgoff, BTFIXUPCALL_NORM); + BTFIXUPSET_CALL(pgoff_to_pte, sun4c_pgoff_to_pte, BTFIXUPCALL_NORM); BTFIXUPSET_CALL(mmu_lockarea, sun4c_lockarea, BTFIXUPCALL_NORM); BTFIXUPSET_CALL(mmu_unlockarea, sun4c_unlockarea, BTFIXUPCALL_NORM); diff -Nru a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c --- a/arch/sparc64/kernel/sys_sparc.c Mon Dec 30 04:45:30 2002 +++ b/arch/sparc64/kernel/sys_sparc.c Mon Apr 7 16:29:06 2003 @@ -199,7 +199,7 @@ goto out; } default: - err = -EINVAL; + err = -ENOSYS; goto out; } if (call <= MSGCTL) @@ -218,7 +218,7 @@ err = sys_msgctl (first, second | IPC_64, (struct msqid_ds *) ptr); goto out; default: - err = -EINVAL; + err = -ENOSYS; goto out; } if (call <= SHMCTL) @@ -236,11 +236,11 @@ err = sys_shmctl (first, second | IPC_64, (struct shmid_ds *) ptr); goto out; default: - err = -EINVAL; + err = -ENOSYS; goto out; } else - err = -EINVAL; + err = -ENOSYS; out: return err; } diff -Nru a/arch/sparc64/kernel/sys_sparc32.c b/arch/sparc64/kernel/sys_sparc32.c --- a/arch/sparc64/kernel/sys_sparc32.c Sun Mar 23 14:38:05 2003 +++ b/arch/sparc64/kernel/sys_sparc32.c Mon Apr 7 16:29:06 2003 @@ -756,7 +756,7 @@ err = do_sys32_semctl (first, second, third, (void *)AA(ptr)); goto out; default: - err = -EINVAL; + err = -ENOSYS; goto out; }; if (call <= MSGCTL) @@ -775,7 +775,7 @@ err = do_sys32_msgctl (first, second, (void *)AA(ptr)); goto out; default: - err = -EINVAL; + err = -ENOSYS; goto out; } if (call <= SHMCTL) @@ -794,11 +794,11 @@ err = do_sys32_shmctl (first, second, (void *)AA(ptr)); goto out; default: - err = -EINVAL; + err = -ENOSYS; goto out; } - err = -EINVAL; + err = -ENOSYS; out: return err; @@ -2831,10 +2831,10 @@ return error; } -extern asmlinkage int sys_sched_setaffinity(pid_t pid, unsigned int len, +extern asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); -asmlinkage int sys32_sched_setaffinity(compat_pid_t pid, unsigned int len, +asmlinkage long sys32_sched_setaffinity(compat_pid_t pid, unsigned int len, u32 *user_mask_ptr) { unsigned long kernel_mask; @@ -2855,10 +2855,10 @@ return ret; } -extern asmlinkage int sys_sched_getaffinity(pid_t pid, unsigned int len, +extern asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr); -asmlinkage int sys32_sched_getaffinity(compat_pid_t pid, unsigned int len, +asmlinkage long sys32_sched_getaffinity(compat_pid_t pid, unsigned int len, u32 *user_mask_ptr) { unsigned long kernel_mask; @@ -2881,9 +2881,9 @@ return ret; } -extern int sys_lookup_dcookie(u64 cookie64, char *buf, size_t len); +extern long sys_lookup_dcookie(u64 cookie64, char *buf, size_t len); -int sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char *buf, size_t len) +long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char *buf, size_t len) { return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, buf, len); diff -Nru a/arch/v850/Kconfig b/arch/v850/Kconfig --- a/arch/v850/Kconfig Sat Mar 8 14:50:37 2003 +++ b/arch/v850/Kconfig Thu Apr 3 15:01:04 2003 @@ -124,9 +124,11 @@ depends RTE_CB_MA1 || RTE_CB_NB85E default y - # Currently, we only support RTE-CB boards using the Multi debugger config RTE_CB_MULTI bool + # RTE_CB_NB85E can either have multi ROM support or not, but + # other platforms (currently only RTE_CB_MA1) require it. + prompt "Multi monitor ROM support" if RTE_CB_NB85E depends RTE_CB default y diff -Nru a/arch/v850/kernel/Makefile b/arch/v850/kernel/Makefile --- a/arch/v850/kernel/Makefile Sun Mar 9 14:15:54 2003 +++ b/arch/v850/kernel/Makefile Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ # # arch/v850/kernel/Makefile # -# Copyright (C) 2001,02 NEC Corporation -# Copyright (C) 2001,02 Miles Bader +# Copyright (C) 2001,02,03 NEC Electronics Corporation +# Copyright (C) 2001,02,03 Miles Bader # # This file is subject to the terms and conditions of the GNU General Public # License. See the file "COPYING" in the main directory of this archive @@ -15,10 +15,14 @@ signal.o irq.o mach.o ptrace.o bug.o obj-$(CONFIG_MODULES) += module.o v850_ksyms.o # chip-specific code -obj-$(CONFIG_V850E_MA1) += ma.o nb85e_utils.o nb85e_timer_d.o obj-$(CONFIG_V850E_NB85E) += nb85e_intc.o -obj-$(CONFIG_V850E2_ANNA) += anna.o nb85e_intc.o nb85e_utils.o nb85e_timer_d.o -obj-$(CONFIG_V850E_AS85EP1) += as85ep1.o nb85e_intc.o nb85e_utils.o nb85e_timer_d.o +obj-$(CONFIG_V850E_MA1) += ma.o nb85e_utils.o nb85e_timer_d.o +obj-$(CONFIG_V850E_TEG) += teg.o nb85e_utils.o nb85e_cache.o \ + nb85e_timer_d.o +obj-$(CONFIG_V850E2_ANNA) += anna.o nb85e_intc.o nb85e_utils.o \ + nb85e_timer_d.o +obj-$(CONFIG_V850E_AS85EP1) += as85ep1.o nb85e_intc.o nb85e_utils.o \ + nb85e_timer_d.o # platform-specific code obj-$(CONFIG_V850E_SIM) += sim.o simcons.o obj-$(CONFIG_V850E2_SIM85E2C) += sim85e2c.o nb85e_intc.o memcons.o diff -Nru a/arch/v850/kernel/entry.S b/arch/v850/kernel/entry.S --- a/arch/v850/kernel/entry.S Mon Feb 17 18:41:09 2003 +++ b/arch/v850/kernel/entry.S Thu Apr 3 14:58:04 2003 @@ -231,7 +231,7 @@ st.b r19, KM; \ GET_CURRENT_TASK(CURRENT_TASK); /* Fetch the current task pointer. */ \ /* Save away the syscall number. */ \ - sst.w syscall_num, PTO+PT_SYSCALL[ep] + sst.w syscall_num, PTO+PT_CUR_SYSCALL[ep] /* Save register state not normally saved by PUSH_STATE for TYPE. */ @@ -438,11 +438,11 @@ LP register should point to the location where the called function should return. [note that MAKE_SYS_CALL uses label 1] */ #define MAKE_SYS_CALL \ - /* See if the system call number is valid. */ \ - addi -NR_syscalls, r12, r0; \ - bnh 1f; \ /* Figure out which function to use for this system call. */ \ shl 2, r12; \ + /* See if the system call number is valid. */ \ + addi lo(CSYM(sys_call_table) - sys_call_table_end), r12, r0; \ + bnh 1f; \ mov hilo(CSYM(sys_call_table)), r19; \ add r19, r12; \ ld.w 0[r12], r12; \ @@ -511,10 +511,8 @@ (copy_thread makes ret_from_fork the return address in each new thread's saved context). */ C_ENTRY(ret_from_fork): -#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT) mov r10, r6 // switch_thread returns the prev task. jarl CSYM(schedule_tail), lp // ...which is schedule_tail's arg -#endif mov r0, r10 // Child's fork call should return 0. br ret_from_trap // Do normal trap return. C_END(ret_from_fork) @@ -982,8 +980,5 @@ .long CSYM(sys_pivot_root) // 200 .long CSYM(sys_gettid) .long CSYM(sys_tkill) - .long CSYM(sys_ni_syscall) // sys_mincore - .long CSYM(sys_ni_syscall) // sys_madvise - - .space (NR_syscalls-205)*4 +sys_call_table_end: C_END(sys_call_table) diff -Nru a/arch/v850/kernel/gbus_int.c b/arch/v850/kernel/gbus_int.c --- a/arch/v850/kernel/gbus_int.c Mon Nov 25 22:55:25 2002 +++ b/arch/v850/kernel/gbus_int.c Thu Apr 3 15:01:04 2003 @@ -26,7 +26,9 @@ /* For each GINT interrupt, how many GBUS interrupts are using it. */ static unsigned gint_num_active_irqs[NUM_GINTS] = { 0 }; -/* A table of GINTn interrupts we actually use. */ +/* A table of GINTn interrupts we actually use. + Note that we don't use GINT0 because all the boards we support treat it + specially. */ struct used_gint { unsigned gint; unsigned priority; diff -Nru a/arch/v850/kernel/nb85e_cache.c b/arch/v850/kernel/nb85e_cache.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/v850/kernel/nb85e_cache.c Thu Apr 3 15:01:04 2003 @@ -0,0 +1,178 @@ +/* + * arch/v850/kernel/nb85e_cache.c -- Cache control for NB85E_CACHE212 and + * NB85E_CACHE213 cache memories + * + * Copyright (C) 2003 NEC Electronics Corporation + * Copyright (C) 2003 Miles Bader + * + * This file is subject to the terms and conditions of the GNU General + * Public License. See the file COPYING in the main directory of this + * archive for more details. + * + * Written by Miles Bader + */ + +#include +#include + +#define WAIT_UNTIL_CLEAR(value) while (value) {} + +/* Set caching params via the BHC and DCC registers. */ +void nb85e_cache_enable (u16 bhc, u16 dcc) +{ + unsigned long *r0_ram = (unsigned long *)R0_RAM_ADDR; + register u16 bhc_val asm ("r6") = bhc; + + /* Configure data-cache. */ + NB85E_CACHE_DCC = dcc; + + /* Configure caching for various memory regions by writing the BHC + register. The documentation says that an instruction _cannot_ + enable/disable caching for the memory region in which the + instruction itself exists; to work around this, we store + appropriate instructions into the on-chip RAM area (which is never + cached), and briefly jump there to do the work. */ + r0_ram[0] = 0xf0720760; /* st.h r0, 0xfffff072[r0] */ + r0_ram[1] = 0xf06a3760; /* st.h r6, 0xfffff06a[r0] */ + r0_ram[2] = 0x5640006b; /* jmp [r11] */ + asm ("mov hilo(1f), r11; jmp [%1]; 1:;" + :: "r" (bhc_val), "r" (R0_RAM_ADDR) : "r11"); +} + +static void clear_icache (void) +{ + /* 1. Read the instruction cache control register (ICC) and confirm + that bits 0 and 1 (TCLR0, TCLR1) are all cleared. */ + WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x3); + + /* 2. Read the ICC register and confirm that bit 12 (LOCK0) is + cleared. Bit 13 of the ICC register is always cleared. */ + WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x1000); + + /* 3. Set the TCLR0 and TCLR1 bits of the ICC register as follows, + when clearing way 0 and way 1 at the same time: + (a) Set the TCLR0 and TCLR1 bits. + (b) Read the TCLR0 and TCLR1 bits to confirm that these bits + are cleared. + (c) Perform (a) and (b) above again. */ + NB85E_CACHE_ICC |= 0x3; + WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x3); + /* Do it again. */ + NB85E_CACHE_ICC |= 0x3; + WAIT_UNTIL_CLEAR (NB85E_CACHE_ICC & 0x3); +} + +/* Flush or clear (or both) the data cache, depending on the value of FLAGS; + the procedure is the same for both, just the control bits used differ (and + both may be performed simultaneously). */ +static void dcache_op (unsigned short flags) +{ + /* 1. Read the data cache control register (DCC) and confirm that bits + 0, 1, 4, and 5 (DC00, DC01, DC04, DC05) are all cleared. */ + WAIT_UNTIL_CLEAR (NB85E_CACHE_DCC & 0x33); + + /* 2. Clear DCC register bit 12 (DC12), bit 13 (DC13), or both + depending on the way for which tags are to be cleared. */ + NB85E_CACHE_DCC &= ~0xC000; + + /* 3. Set DCC register bit 0 (DC00), bit 1 (DC01) or both depending on + the way for which tags are to be cleared. + ... + Set DCC register bit 4 (DC04), bit 5 (DC05), or both depending + on the way to be data flushed. */ + NB85E_CACHE_DCC |= flags; + + /* 4. Read DCC register bit DC00, DC01 [DC04, DC05], or both depending + on the way for which tags were cleared [flushed] and confirm + that that bit is cleared. */ + WAIT_UNTIL_CLEAR (NB85E_CACHE_DCC & flags); +} + +/* Flushes the contents of the dcache to memory. */ +static inline void flush_dcache (void) +{ + /* We only need to do something if in write-back mode. */ + if (NB85E_CACHE_DCC & 0x0400) + dcache_op (0x30); +} + +/* Flushes the contents of the dcache to memory, and then clears it. */ +static inline void clear_dcache (void) +{ + /* We only need to do something if the dcache is enabled. */ + if (NB85E_CACHE_DCC & 0x0C00) + dcache_op (0x33); +} + +/* Clears the dcache without flushing to memory first. */ +static inline void clear_dcache_no_flush (void) +{ + /* We only need to do something if the dcache is enabled. */ + if (NB85E_CACHE_DCC & 0x0C00) + dcache_op (0x3); +} + +static inline void cache_exec_after_store (void) +{ + flush_dcache (); + clear_icache (); +} + + +/* Exported functions. */ + +void inline nb85e_cache_flush_all (void) +{ + clear_icache (); + clear_dcache (); +} + +void nb85e_cache_flush_mm (struct mm_struct *mm) +{ + /* nothing */ +} + +void nb85e_cache_flush_range (struct mm_struct *mm, + unsigned long start, unsigned long end) +{ + /* nothing */ +} + +void nb85e_cache_flush_page (struct vm_area_struct *vma, + unsigned long page_addr) +{ + /* nothing */ +} + +void nb85e_cache_flush_dcache_page (struct page *page) +{ + /* nothing */ +} + +void nb85e_cache_flush_icache (void) +{ + cache_exec_after_store (); +} + +void nb85e_cache_flush_icache_range (unsigned long start, unsigned long end) +{ + cache_exec_after_store (); +} + +void nb85e_cache_flush_icache_page (struct vm_area_struct *vma, + struct page *page) +{ + cache_exec_after_store (); +} + +void nb85e_cache_flush_icache_user_range (struct vm_area_struct *vma, + struct page *page, + unsigned long adr, int len) +{ + cache_exec_after_store (); +} + +void nb85e_cache_flush_sigtramp (unsigned long addr) +{ + cache_exec_after_store (); +} diff -Nru a/arch/v850/kernel/nb85e_intc.c b/arch/v850/kernel/nb85e_intc.c --- a/arch/v850/kernel/nb85e_intc.c Sun Nov 24 17:34:43 2002 +++ b/arch/v850/kernel/nb85e_intc.c Mon Apr 7 22:03:02 2003 @@ -1,8 +1,8 @@ /* * arch/v850/kernel/nb85e_intc.c -- NB85E cpu core interrupt controller (INTC) * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -26,6 +26,42 @@ return 0; } +static void nb85e_intc_end_irq (unsigned irq) +{ + unsigned long psw, temp; + + /* Clear the highest-level bit in the In-service priority register + (ISPR), to allow this interrupt (or another of the same or + lesser priority) to happen again. + + The `reti' instruction normally does this automatically when the + PSW bits EP and NP are zero, but we can't always rely on reti + being used consistently to return after an interrupt (another + process can be scheduled, for instance, which can delay the + associated reti for a long time, or this process may be being + single-stepped, which uses the `dbret' instruction to return + from the kernel). + + We also set the PSW EP bit, which prevents reti from also + trying to modify the ISPR itself. */ + + /* Get PSW and disable interrupts. */ + asm volatile ("stsr psw, %0; di" : "=r" (psw)); + /* We don't want to do anything for NMIs (they don't use the ISPR). */ + if (! (psw & 0xC0)) { + /* Transition to `trap' state, so that an eventual real + reti instruction won't modify the ISPR. */ + psw |= 0x40; + /* Fake an interrupt return, which automatically clears the + appropriate bit in the ISPR. */ + asm volatile ("mov hilo(1f), %0;" + "ldsr %0, eipc; ldsr %1, eipsw;" + "reti;" + "1:" + : "=&r" (temp) : "r" (psw)); + } +} + /* Initialize HW_IRQ_TYPES for INTC-controlled irqs described in array INITS (which is terminated by an entry with the name field == 0). */ void __init nb85e_intc_init_irq_types (struct nb85e_intc_irq_init *inits, @@ -43,7 +79,7 @@ hwit->enable = nb85e_intc_enable_irq; hwit->disable = nb85e_intc_disable_irq; hwit->ack = irq_nop; - hwit->end = irq_nop; + hwit->end = nb85e_intc_end_irq; /* Initialize kernel IRQ infrastructure for this interrupt. */ init_irq_handlers(init->base, init->num, init->interval, hwit); diff -Nru a/arch/v850/kernel/process.c b/arch/v850/kernel/process.c --- a/arch/v850/kernel/process.c Mon Feb 17 18:41:09 2003 +++ b/arch/v850/kernel/process.c Thu Apr 3 14:56:44 2003 @@ -226,7 +226,7 @@ if (!p || p == current || p->state == TASK_RUNNING) return 0; - pc = thread_saved_pc (&p->thread); + pc = thread_saved_pc (p); /* This quite disgusting function walks up the stack, following saved return address, until it something that's out of bounds diff -Nru a/arch/v850/kernel/rte_cb.c b/arch/v850/kernel/rte_cb.c --- a/arch/v850/kernel/rte_cb.c Sun Nov 24 17:34:43 2002 +++ b/arch/v850/kernel/rte_cb.c Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/rte_cb.c -- Midas lab RTE-CB series of evaluation boards * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -32,28 +32,11 @@ #endif -#ifdef CONFIG_ROM_KERNEL -/* Initialization for kernel in ROM. */ -static inline rom_kernel_init (void) -{ - /* If the kernel is in ROM, we have to copy any initialized data - from ROM into RAM. */ - extern unsigned long _data_load_start, _sdata, _edata; - register unsigned long *src = &_data_load_start; - register unsigned long *dst = &_sdata, *end = &_edata; - - while (dst != end) - *dst++ = *src++; -} -#endif /* CONFIG_ROM_KERNEL */ - -void __init mach_early_init (void) +void __init rte_cb_early_init (void) { nb85e_intc_disable_irqs (); -#if defined (CONFIG_ROM_KERNEL) - rom_kernel_init (); -#elif defined (CONFIG_RTE_CB_MULTI) +#ifdef CONFIG_RTE_CB_MULTI multi_init (); #endif } diff -Nru a/arch/v850/kernel/rte_cb_multi.c b/arch/v850/kernel/rte_cb_multi.c --- a/arch/v850/kernel/rte_cb_multi.c Tue Feb 25 10:44:06 2003 +++ b/arch/v850/kernel/rte_cb_multi.c Thu Apr 3 15:01:04 2003 @@ -16,22 +16,55 @@ #include +#define IRQ_ADDR(irq) (0x80 + (irq) * 0x10) + /* A table of which interrupt vectors to install, since blindly installing all of them makes the debugger stop working. This is a list of offsets in the interrupt vector area; each entry means to copy that particular 16-byte vector. An entry less than zero ends the table. */ static long multi_intv_install_table[] = { - 0x40, 0x50, /* trap vectors */ + /* Trap vectors */ + 0x40, 0x50, + #ifdef CONFIG_RTE_CB_MULTI_DBTRAP - 0x60, /* illegal insn / dbtrap */ + /* Illegal insn / dbtrap. These are used by multi, so only handle + them if configured to do so. */ + 0x60, #endif - /* Note -- illegal insn trap is used by the debugger. */ - 0xD0, 0xE0, 0xF0, /* GINT1 - GINT3 */ - 0x240, 0x250, 0x260, 0x270, /* timer D interrupts */ - 0x2D0, 0x2E0, 0x2F0, /* UART channel 0 */ - 0x310, 0x320, 0x330, /* UART channel 1 */ - 0x350, 0x360, 0x370, /* UART channel 2 */ + + /* GINT1 - GINT3 (note, not GINT0!) */ + IRQ_ADDR (IRQ_GINT(1)), + IRQ_ADDR (IRQ_GINT(2)), + IRQ_ADDR (IRQ_GINT(3)), + + /* Timer D interrupts (up to 4 timers) */ + IRQ_ADDR (IRQ_INTCMD(0)), +#if IRQ_INTCMD_NUM > 1 + IRQ_ADDR (IRQ_INTCMD(1)), +#if IRQ_INTCMD_NUM > 2 + IRQ_ADDR (IRQ_INTCMD(2)), +#if IRQ_INTCMD_NUM > 3 + IRQ_ADDR (IRQ_INTCMD(3)), +#endif +#endif +#endif + + /* UART interrupts (up to 3 channels) */ + IRQ_ADDR (IRQ_INTSER (0)), /* err */ + IRQ_ADDR (IRQ_INTSR (0)), /* rx */ + IRQ_ADDR (IRQ_INTST (0)), /* tx */ +#if IRQ_INTSR_NUM > 1 + IRQ_ADDR (IRQ_INTSER (1)), /* err */ + IRQ_ADDR (IRQ_INTSR (1)), /* rx */ + IRQ_ADDR (IRQ_INTST (1)), /* tx */ +#if IRQ_INTSR_NUM > 2 + IRQ_ADDR (IRQ_INTSER (2)), /* err */ + IRQ_ADDR (IRQ_INTSR (2)), /* rx */ + IRQ_ADDR (IRQ_INTST (2)), /* tx */ +#endif +#endif + -1 }; diff -Nru a/arch/v850/kernel/rte_ma1_cb.c b/arch/v850/kernel/rte_ma1_cb.c --- a/arch/v850/kernel/rte_ma1_cb.c Mon Feb 24 12:42:23 2003 +++ b/arch/v850/kernel/rte_ma1_cb.c Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * arch/v850/kernel/rte_ma1_cb.c -- Midas labs RTE-V850E/MA1-CB board * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -31,6 +31,11 @@ #define RAM_END (SDRAM_ADDR + SDRAM_SIZE) +void __init mach_early_init (void) +{ + rte_cb_early_init (); +} + void __init mach_get_physical_ram (unsigned long *ram_start, unsigned long *ram_len) { @@ -67,7 +72,7 @@ if (chan == 0) { /* Put P42 & P43 in I/O port mode. */ MA_PORT4_PMC &= ~0xC; - /* Make P42 and output, and P43 an input. */ + /* Make P42 an output, and P43 an input. */ MA_PORT4_PM = (MA_PORT4_PM & ~0xC) | 0x8; } diff -Nru a/arch/v850/kernel/rte_mb_a_pci.c b/arch/v850/kernel/rte_mb_a_pci.c --- a/arch/v850/kernel/rte_mb_a_pci.c Sun Mar 16 14:16:33 2003 +++ b/arch/v850/kernel/rte_mb_a_pci.c Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * arch/v850/kernel/mb_a_pci.c -- PCI support for Midas lab RTE-MOTHER-A board * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -165,7 +165,6 @@ "PCI: PLX Technology PCI9080 HOST/PCI bridge\n"); MB_A_PCI_PCICR = 0x147; - MB_A_PCI_DMLBAM = 0x0; MB_A_PCI_PCIBAR0 = 0x007FFF00; MB_A_PCI_PCIBAR1 = 0x0000FF00; @@ -179,11 +178,28 @@ /* Reprogram the motherboard's IO/config address space, as we don't support the GCS7 address space that the - default uses. Note that we have to give the address - from the motherboard's point of view, which is - different than the CPU's. */ - MB_A_PCI_DMLBAI = MB_A_PCI_IO_ADDR - GCS5_ADDR; + default uses. */ + + /* Significant address bits used for decoding PCI GCS5 space + accessess. */ MB_A_PCI_DMRR = ~(MB_A_PCI_MEM_SIZE - 1); + + /* I don't understand this, but the SolutionGear example code + uses such an offset, and it doesn't work without it. XXX */ +#if GCS5_SIZE == 0x00800000 +#define GCS5_CFG_OFFS 0x00800000 +#else +#define GCS5_CFG_OFFS 0 +#endif + + /* Address bit values for matching. Note that we have to give + the address from the motherboard's point of view, which is + different than the CPU's. */ + /* PCI memory space. */ + MB_A_PCI_DMLBAM = GCS5_CFG_OFFS + 0x0; + /* PCI I/O space. */ + MB_A_PCI_DMLBAI = + GCS5_CFG_OFFS + (MB_A_PCI_IO_ADDR - GCS5_ADDR); mb_pci_bus = pci_scan_bus (0, &mb_pci_config_ops, 0); diff -Nru a/arch/v850/kernel/rte_nb85e_cb.c b/arch/v850/kernel/rte_nb85e_cb.c --- a/arch/v850/kernel/rte_nb85e_cb.c Fri Nov 1 07:20:35 2002 +++ b/arch/v850/kernel/rte_nb85e_cb.c Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * arch/v850/kernel/rte_nb85e_cb.c -- Midas labs RTE-V850E/NB85E-CB board * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -26,10 +26,30 @@ #include "mach.h" +void __init mach_early_init (void) +{ + /* Configure caching; some possible settings: + + BHC = 0x0000, DCC = 0x0000 -- all caching disabled + BHC = 0x0040, DCC = 0x0000 -- SDRAM: icache only + BHC = 0x0080, DCC = 0x0C00 -- SDRAM: write-back dcache only + BHC = 0x00C0, DCC = 0x0C00 -- SDRAM: icache + write-back dcache + BHC = 0x00C0, DCC = 0x0800 -- SDRAM: icache + write-thru dcache + + We can only cache SDRAM (we can't use cache SRAM because it's in + the same memory region as the on-chip RAM and I/O space). + + Unfortunately, the dcache seems to be buggy, so we only use the + icache for now. */ + nb85e_cache_enable (0x0040 /* BHC */, 0x0000 /* DCC */); + + rte_cb_early_init (); +} + void __init mach_get_physical_ram (unsigned long *ram_start, unsigned long *ram_len) { - /* We just use SDRAM here; the kernel itself is in SRAM. */ + /* We just use SDRAM here. */ *ram_start = SDRAM_ADDR; *ram_len = SDRAM_SIZE; } @@ -41,8 +61,10 @@ u32 root_fs_image_end = (u32)&_root_fs_image_end; /* Reserve the memory used by the root filesystem image if it's - in RAM. */ - if (root_fs_image_start >= RAM_START && root_fs_image_start < RAM_END) + in SDRAM. */ + if (root_fs_image_end > root_fs_image_start + && root_fs_image_start >= SDRAM_ADDR + && root_fs_image_start < (SDRAM_ADDR + SDRAM_SIZE)) reserve_bootmem (root_fs_image_start, root_fs_image_end - root_fs_image_start); } @@ -51,4 +73,25 @@ { tv->tv_sec = 0; tv->tv_nsec = 0; +} + +/* Called before configuring an on-chip UART. */ +void rte_nb85e_cb_uart_pre_configure (unsigned chan, + unsigned cflags, unsigned baud) +{ + /* The RTE-NB85E-CB connects some general-purpose I/O pins on the + CPU to the RTS/CTS lines the UART's serial connection, as follows: + P00 = CTS (in), P01 = DSR (in), P02 = RTS (out), P03 = DTR (out). */ + + TEG_PORT0_PM = 0x03; /* P00 and P01 inputs, P02 and P03 outputs */ + TEG_PORT0_IO = 0x03; /* Accept input */ + + /* Do pre-configuration for the actual UART. */ + teg_uart_pre_configure (chan, cflags, baud); +} + +void __init mach_init_irqs (void) +{ + teg_init_irqs (); + rte_cb_init_irqs (); } diff -Nru a/arch/v850/kernel/simcons.c b/arch/v850/kernel/simcons.c --- a/arch/v850/kernel/simcons.c Sun Nov 24 17:34:44 2002 +++ b/arch/v850/kernel/simcons.c Thu Apr 3 14:57:47 2003 @@ -1,8 +1,8 @@ /* * arch/v850/kernel/simcons.c -- Console I/O for GDB v850e simulator * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -19,6 +19,7 @@ #include #include +#include #include diff -Nru a/arch/v850/kernel/teg.c b/arch/v850/kernel/teg.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/v850/kernel/teg.c Thu Apr 3 15:01:04 2003 @@ -0,0 +1,63 @@ +/* + * arch/v850/kernel/teg.c -- NB85E-TEG cpu chip + * + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader + * + * This file is subject to the terms and conditions of the GNU General + * Public License. See the file COPYING in the main directory of this + * archive for more details. + * + * Written by Miles Bader + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "mach.h" + +void __init mach_sched_init (struct irqaction *timer_action) +{ + /* Select timer interrupt instead of external pin. */ + TEG_ISS |= 0x1; + /* Start hardware timer. */ + nb85e_timer_d_configure (0, HZ); + /* Install timer interrupt handler. */ + setup_irq (IRQ_INTCMD(0), timer_action); +} + +static struct nb85e_intc_irq_init irq_inits[] = { + { "IRQ", 0, NUM_CPU_IRQS, 1, 7 }, + { "CMD", IRQ_INTCMD(0), IRQ_INTCMD_NUM, 1, 5 }, + { "SER", IRQ_INTSER(0), IRQ_INTSER_NUM, 1, 3 }, + { "SR", IRQ_INTSR(0), IRQ_INTSR_NUM, 1, 4 }, + { "ST", IRQ_INTST(0), IRQ_INTST_NUM, 1, 5 }, + { 0 } +}; +#define NUM_IRQ_INITS ((sizeof irq_inits / sizeof irq_inits[0]) - 1) + +static struct hw_interrupt_type hw_itypes[NUM_IRQ_INITS]; + +/* Initialize MA chip interrupts. */ +void __init teg_init_irqs (void) +{ + nb85e_intc_init_irq_types (irq_inits, hw_itypes); +} + +/* Called before configuring an on-chip UART. */ +void teg_uart_pre_configure (unsigned chan, unsigned cflags, unsigned baud) +{ + /* Enable UART I/O pins instead of external interrupt pins, and + UART interrupts instead of external pin interrupts. */ + TEG_ISS |= 0x4E; +} diff -Nru a/arch/v850/rte_nb85e_cb-multi.ld b/arch/v850/rte_nb85e_cb-multi.ld --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/v850/rte_nb85e_cb-multi.ld Thu Apr 3 15:01:04 2003 @@ -0,0 +1,57 @@ +/* Linker script for the Midas labs RTE-NB85E-CB evaluation board + (CONFIG_RTE_CB_NB85E), with the Multi debugger ROM monitor . */ + +MEMORY { + /* 1MB of SRAM; we can't use the last 96KB, because it's used by + the monitor scratch-RAM. This memory is mirrored 4 times. */ + SRAM : ORIGIN = 0x03C00000, LENGTH = 0x000E8000 + /* Monitor scratch RAM; only the interrupt vectors should go here. */ + MRAM : ORIGIN = 0x03CE8000, LENGTH = 0x00018000 + /* 16MB of SDRAM. */ + SDRAM : ORIGIN = 0x01000000, LENGTH = 0x01000000 +} + +#ifdef CONFIG_RTE_CB_NB85E_KSRAM +# define KRAM SRAM +#else +# define KRAM SDRAM +#endif + +SECTIONS { + /* We can't use RAMK_KRAM_CONTENTS because that puts the whole + kernel in a single ELF segment, and the Multi debugger (which + we use to load the kernel) appears to have bizarre problems + dealing with it. */ + + .text : { + __kram_start = . ; + TEXT_CONTENTS + } > KRAM + + .data : { + DATA_CONTENTS + BSS_CONTENTS + RAMK_INIT_CONTENTS + __kram_end = . ; + BOOTMAP_CONTENTS + + /* The address at which the interrupt vectors are initially + loaded by the loader. We can't load the interrupt vectors + directly into their target location, because the monitor + ROM for the GHS Multi debugger barfs if we try. + Unfortunately, Multi also doesn't deal correctly with ELF + sections where the LMA and VMA differ (it just ignores the + LMA), so we can't use that feature to work around the + problem! What we do instead is just put the interrupt + vectors into a normal section, and have the + `mach_early_init' function for Midas boards do the + necessary copying and relocation at runtime (this section + basically only contains `jr' instructions, so it's not + that hard). */ + . = ALIGN (0x10) ; + __intv_load_start = . ; + INTV_CONTENTS + } > KRAM + + .root ALIGN (4096) : { ROOT_FS_CONTENTS } > SDRAM +} diff -Nru a/arch/v850/rte_nb85e_cb.ld b/arch/v850/rte_nb85e_cb.ld --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/arch/v850/rte_nb85e_cb.ld Thu Apr 3 15:01:04 2003 @@ -0,0 +1,25 @@ +/* Linker script for the Midas labs RTE-NB85E-CB evaluation board + (CONFIG_RTE_CB_NB85E). */ + +MEMORY { + LOW : ORIGIN = 0x0, LENGTH = 0x00100000 + /* 1MB of SRAM; we can't use the last 96KB, because it's used by + the monitor scratch-RAM. This memory is mirrored 4 times. */ + SRAM : ORIGIN = 0x03C00000, LENGTH = 0x000E8000 + /* Monitor scratch RAM; only the interrupt vectors should go here. */ + MRAM : ORIGIN = 0x03CE8000, LENGTH = 0x00018000 + /* 16MB of SDRAM. */ + SDRAM : ORIGIN = 0x01000000, LENGTH = 0x01000000 +} + +#ifdef CONFIG_RTE_CB_NB85E_KSRAM +# define KRAM SRAM +#else +# define KRAM SDRAM +#endif + +SECTIONS { + .intv : { INTV_CONTENTS } > LOW + .sram : { RAMK_KRAM_CONTENTS } > KRAM + .root : { ROOT_FS_CONTENTS } > SDRAM +} diff -Nru a/arch/x86_64/kernel/suspend.c b/arch/x86_64/kernel/suspend.c --- a/arch/x86_64/kernel/suspend.c Fri Mar 28 09:53:11 2003 +++ b/arch/x86_64/kernel/suspend.c Mon Apr 7 16:43:39 2003 @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include diff -Nru a/drivers/acpi/processor.c b/drivers/acpi/processor.c --- a/drivers/acpi/processor.c Fri Mar 21 10:44:56 2003 +++ b/drivers/acpi/processor.c Thu Apr 3 16:03:11 2003 @@ -36,13 +36,13 @@ #include #include #include -#include #include #include #include #include #include +#include #include #include diff -Nru a/drivers/block/Kconfig b/drivers/block/Kconfig --- a/drivers/block/Kconfig Thu Feb 20 08:28:56 2003 +++ b/drivers/block/Kconfig Wed Mar 26 12:04:13 2003 @@ -28,6 +28,13 @@ tristate "Atari floppy support" depends on ATARI +config BLK_DEV_FD98 + tristate "NEC PC-9800 floppy disk support" + depends on X86_PC9800 + ---help--- + If you want to use the floppy disk drive(s) of NEC PC-9801/PC-9821, + say Y. + config BLK_DEV_SWIM_IOP bool "Macintosh IIfx/Quadra 900/Quadra 950 floppy support (EXPERIMENTAL)" depends on MAC && EXPERIMENTAL diff -Nru a/drivers/block/Makefile b/drivers/block/Makefile --- a/drivers/block/Makefile Mon Feb 3 14:19:36 2003 +++ b/drivers/block/Makefile Thu Feb 20 08:30:00 2003 @@ -12,6 +12,7 @@ obj-$(CONFIG_MAC_FLOPPY) += swim3.o obj-$(CONFIG_BLK_DEV_FD) += floppy.o +obj-$(CONFIG_BLK_DEV_FD98) += floppy98.o obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o obj-$(CONFIG_BLK_DEV_SWIM_IOP) += swim_iop.o diff -Nru a/drivers/block/floppy.c b/drivers/block/floppy.c --- a/drivers/block/floppy.c Sat Mar 22 07:38:04 2003 +++ b/drivers/block/floppy.c Thu Apr 3 14:36:23 2003 @@ -4396,11 +4396,9 @@ return 0; } spin_unlock_irqrestore(&floppy_usage_lock, flags); - MOD_INC_USE_COUNT; if (fd_request_irq()) { DPRINT("Unable to grab IRQ%d for the floppy driver\n", FLOPPY_IRQ); - MOD_DEC_USE_COUNT; spin_lock_irqsave(&floppy_usage_lock, flags); usage_count--; spin_unlock_irqrestore(&floppy_usage_lock, flags); @@ -4410,7 +4408,6 @@ DPRINT("Unable to grab DMA%d for the floppy driver\n", FLOPPY_DMA); fd_free_irq(); - MOD_DEC_USE_COUNT; spin_lock_irqsave(&floppy_usage_lock, flags); usage_count--; spin_unlock_irqrestore(&floppy_usage_lock, flags); @@ -4459,7 +4456,6 @@ release_region(FDCS->address + 2, 4); release_region(FDCS->address + 7, 1); } - MOD_DEC_USE_COUNT; spin_lock_irqsave(&floppy_usage_lock, flags); usage_count--; spin_unlock_irqrestore(&floppy_usage_lock, flags); @@ -4527,7 +4523,6 @@ release_region(FDCS->address+7, 1); } fdc = old_fdc; - MOD_DEC_USE_COUNT; } diff -Nru a/drivers/block/floppy98.c b/drivers/block/floppy98.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/block/floppy98.c Thu Apr 3 14:42:27 2003 @@ -0,0 +1,4669 @@ +/* + * linux/drivers/block/floppy.c + * + * Copyright (C) 1991, 1992 Linus Torvalds + * Copyright (C) 1993, 1994 Alain Knaff + * Copyright (C) 1998 Alan Cox + */ +/* + * 02.12.91 - Changed to static variables to indicate need for reset + * and recalibrate. This makes some things easier (output_byte reset + * checking etc), and means less interrupt jumping in case of errors, + * so the code is hopefully easier to understand. + */ + +/* + * This file is certainly a mess. I've tried my best to get it working, + * but I don't like programming floppies, and I have only one anyway. + * Urgel. I should check for more errors, and do more graceful error + * recovery. Seems there are problems with several drives. I've tried to + * correct them. No promises. + */ + +/* + * As with hd.c, all routines within this file can (and will) be called + * by interrupts, so extreme caution is needed. A hardware interrupt + * handler may not sleep, or a kernel panic will happen. Thus I cannot + * call "floppy-on" directly, but have to set a special timer interrupt + * etc. + */ + +/* + * 28.02.92 - made track-buffering routines, based on the routines written + * by entropy@wintermute.wpi.edu (Lawrence Foard). Linus. + */ + +/* + * Automatic floppy-detection and formatting written by Werner Almesberger + * (almesber@nessie.cs.id.ethz.ch), who also corrected some problems with + * the floppy-change signal detection. + */ + +/* + * 1992/7/22 -- Hennus Bergman: Added better error reporting, fixed + * FDC data overrun bug, added some preliminary stuff for vertical + * recording support. + * + * 1992/9/17: Added DMA allocation & DMA functions. -- hhb. + * + * TODO: Errors are still not counted properly. + */ + +/* 1992/9/20 + * Modifications for ``Sector Shifting'' by Rob Hooft (hooft@chem.ruu.nl) + * modeled after the freeware MS-DOS program fdformat/88 V1.8 by + * Christoph H. Hochst\"atter. + * I have fixed the shift values to the ones I always use. Maybe a new + * ioctl() should be created to be able to modify them. + * There is a bug in the driver that makes it impossible to format a + * floppy as the first thing after bootup. + */ + +/* + * 1993/4/29 -- Linus -- cleaned up the timer handling in the kernel, and + * this helped the floppy driver as well. Much cleaner, and still seems to + * work. + */ + +/* 1994/6/24 --bbroad-- added the floppy table entries and made + * minor modifications to allow 2.88 floppies to be run. + */ + +/* 1994/7/13 -- Paul Vojta -- modified the probing code to allow three or more + * disk types. + */ + +/* + * 1994/8/8 -- Alain Knaff -- Switched to fdpatch driver: Support for bigger + * format bug fixes, but unfortunately some new bugs too... + */ + +/* 1994/9/17 -- Koen Holtman -- added logging of physical floppy write + * errors to allow safe writing by specialized programs. + */ + +/* 1995/4/24 -- Dan Fandrich -- added support for Commodore 1581 3.5" disks + * by defining bit 1 of the "stretch" parameter to mean put sectors on the + * opposite side of the disk, leaving the sector IDs alone (i.e. Commodore's + * drives are "upside-down"). + */ + +/* + * 1995/8/26 -- Andreas Busse -- added Mips support. + */ + +/* + * 1995/10/18 -- Ralf Baechle -- Portability cleanup; move machine dependent + * features to asm/floppy.h. + */ + +/* + * 1998/05/07 -- Russell King -- More portability cleanups; moved definition of + * interrupt and dma channel to asm/floppy.h. Cleaned up some formatting & + * use of '0' for NULL. + */ + +/* + * 1998/06/07 -- Alan Cox -- Merged the 2.0.34 fixes for resource allocation + * failures. + */ + +/* + * 1998/09/20 -- David Weinehall -- Added slow-down code for buggy PS/2-drives. + */ + +/* + * 1999/01/19 -- N.Fujita & Linux/98 Project -- Added code for NEC PC-9800 + * series. + */ + +/* + * 1999/08/13 -- Paul Slootman -- floppy stopped working on Alpha after 24 + * days, 6 hours, 32 minutes and 32 seconds (i.e. MAXINT jiffies; ints were + * being used to store jiffies, which are unsigned longs). + */ + +/* + * 2000/08/28 -- Arnaldo Carvalho de Melo + * - get rid of check_region + * - s/suser/capable/ + */ + +/* + * 2001/08/26 -- Paul Gortmaker - fix insmod oops on machines with no + * floppy controller (lingering task on list after module is gone... boom.) + */ + +/* + * 2002/02/07 -- Anton Altaparmakov - Fix io ports reservation to correct range + * (0x3f2-0x3f5, 0x3f7). This fix is a bit of a hack but the proper fix + * requires many non-obvious changes in arch dependent code. + */ + +/* + * 2002/10/12 -- Osamu Tomita + * split code from floppy.c + * support NEC PC-9800 only + */ + +#define FLOPPY_SANITY_CHECK +#undef FLOPPY_SILENT_DCL_CLEAR + +/* +#define PC9800_DEBUG_FLOPPY +#define PC9800_DEBUG_FLOPPY2 +*/ + +#define REALLY_SLOW_IO + +#define DEBUGT 2 +#define DCL_DEBUG /* debug disk change line */ + +/* do print messages for unexpected interrupts */ +static int print_unex=1; +#include +#include +#include +#include +#include +#include +#include +#define FDPATCHES +#include + +/* + * 1998/1/21 -- Richard Gooch -- devfs support + */ + + +#include +#define FLOPPY98_MOTOR_MASK 0x08 + +#define FDPATCHES +#include +#define FD98_STATUS (0 + FD_IOPORT ) +#define FD98_DATA (2 + FD_IOPORT ) +#define FD_MODE (4 + FD_IOPORT ) +#define FD_MODE_CHANGE 0xbe +#define FD_EMODE_CHANGE 0x4be + +#include +#include +#include +#include +#include +#include +#include +#include /* CMOS defines */ +#include +#include +#include +#include +#include +#include /* for invalidate_buffers() */ + +/* + * PS/2 floppies have much slower step rates than regular floppies. + * It's been recommended that take about 1/4 of the default speed + * in some more extreme cases. + */ +static int slow_floppy; + +#include +#include +#include +#include +#include + +#ifndef DEFAULT_FLOPPY_IRQ +# define DEFAULT_FLOPPY_IRQ 11 +#endif +#ifndef DEFAULT_FLOPPY_DMA +# define DEFAULT_FLOPPY_DMA 2 +#endif + +static int FLOPPY_IRQ=DEFAULT_FLOPPY_IRQ; +static int FLOPPY_DMA=DEFAULT_FLOPPY_DMA; +static int can_use_virtual_dma=2; +static int auto_detect_mode = 0; +static int retry_auto_detect = 0; +#define FD_AFTER_RESET_DELAY 1000 + +/* ======= + * can use virtual DMA: + * 0 = use of virtual DMA disallowed by config + * 1 = use of virtual DMA prescribed by config + * 2 = no virtual DMA preference configured. By default try hard DMA, + * but fall back on virtual DMA when not enough memory available + */ + +static int use_virtual_dma; +/* ======= + * use virtual DMA + * 0 using hard DMA + * 1 using virtual DMA + * This variable is set to virtual when a DMA mem problem arises, and + * reset back in floppy_grab_irq_and_dma. + * It is not safe to reset it in other circumstances, because the floppy + * driver may have several buffers in use at once, and we do currently not + * record each buffers capabilities + */ + +static spinlock_t floppy_lock = SPIN_LOCK_UNLOCKED; + +static unsigned short virtual_dma_port=0x3f0; +void floppy_interrupt(int irq, void *dev_id, struct pt_regs * regs); +static int set_mode(char mask, char data); +static void register_devfs_entries (int drive) __init; + +#define K_64 0x10000 /* 64KB */ + +/* the following is the mask of allowed drives. By default units 2 and + * 3 of both floppy controllers are disabled, because switching on the + * motor of these drives causes system hangs on some PCI computers. drive + * 0 is the low bit (0x1), and drive 7 is the high bit (0x80). Bits are on if + * a drive is allowed. + * + * NOTE: This must come before we include the arch floppy header because + * some ports reference this variable from there. -DaveM + */ + +static int allowed_drive_mask = 0x0f; + +#include + +static int irqdma_allocated; + +#define LOCAL_END_REQUEST +#define DEVICE_NAME "floppy" + +#include +#include +#include /* for the compatibility eject ioctl */ +#include + +static struct request *current_req; +static struct request_queue floppy_queue; + +#ifndef fd_get_dma_residue +#define fd_get_dma_residue() get_dma_residue(FLOPPY_DMA) +#endif + +/* Dma Memory related stuff */ + +#ifndef fd_dma_mem_free +#define fd_dma_mem_free(addr, size) free_pages(addr, get_order(size)) +#endif + +#ifndef fd_dma_mem_alloc +#define fd_dma_mem_alloc(size) __get_dma_pages(GFP_KERNEL,get_order(size)) +#endif + +static inline void fallback_on_nodma_alloc(char **addr, size_t l) +{ +#ifdef FLOPPY_CAN_FALLBACK_ON_NODMA + if (*addr) + return; /* we have the memory */ + if (can_use_virtual_dma != 2) + return; /* no fallback allowed */ + printk("DMA memory shortage. Temporarily falling back on virtual DMA\n"); + *addr = (char *) nodma_mem_alloc(l); +#else + return; +#endif +} + +/* End dma memory related stuff */ + +static unsigned long fake_change; +static int initialising=1; + +static inline int TYPE(kdev_t x) { + return (minor(x)>>2) & 0x1f; +} +static inline int DRIVE(kdev_t x) { + return (minor(x)&0x03) | ((minor(x)&0x80) >> 5); +} +#define ITYPE(x) (((x)>>2) & 0x1f) +#define TOMINOR(x) ((x & 3) | ((x & 4) << 5)) +#define UNIT(x) ((x) & 0x03) /* drive on fdc */ +#define FDC(x) (((x) & 0x04) >> 2) /* fdc of drive */ +#define REVDRIVE(fdc, unit) ((unit) + ((fdc) << 2)) + /* reverse mapping from unit and fdc to drive */ +#define DP (&drive_params[current_drive]) +#define DRS (&drive_state[current_drive]) +#define DRWE (&write_errors[current_drive]) +#define FDCS (&fdc_state[fdc]) +#define CLEARF(x) (clear_bit(x##_BIT, &DRS->flags)) +#define SETF(x) (set_bit(x##_BIT, &DRS->flags)) +#define TESTF(x) (test_bit(x##_BIT, &DRS->flags)) + +#define UDP (&drive_params[drive]) +#define UDRS (&drive_state[drive]) +#define UDRWE (&write_errors[drive]) +#define UFDCS (&fdc_state[FDC(drive)]) +#define UCLEARF(x) (clear_bit(x##_BIT, &UDRS->flags)) +#define USETF(x) (set_bit(x##_BIT, &UDRS->flags)) +#define UTESTF(x) (test_bit(x##_BIT, &UDRS->flags)) + +#define DPRINT(format, args...) printk(DEVICE_NAME "%d: " format, current_drive , ## args) + +#define PH_HEAD(floppy,head) (((((floppy)->stretch & 2) >>1) ^ head) << 2) +#define STRETCH(floppy) ((floppy)->stretch & FD_STRETCH) + +#define CLEARSTRUCT(x) memset((x), 0, sizeof(*(x))) + +/* read/write */ +#define COMMAND raw_cmd->cmd[0] +#define DR_SELECT raw_cmd->cmd[1] +#define TRACK raw_cmd->cmd[2] +#define HEAD raw_cmd->cmd[3] +#define SECTOR raw_cmd->cmd[4] +#define SIZECODE raw_cmd->cmd[5] +#define SECT_PER_TRACK raw_cmd->cmd[6] +#define GAP raw_cmd->cmd[7] +#define SIZECODE2 raw_cmd->cmd[8] +#define NR_RW 9 + +/* format */ +#define F_SIZECODE raw_cmd->cmd[2] +#define F_SECT_PER_TRACK raw_cmd->cmd[3] +#define F_GAP raw_cmd->cmd[4] +#define F_FILL raw_cmd->cmd[5] +#define NR_F 6 + +/* + * Maximum disk size (in kilobytes). This default is used whenever the + * current disk size is unknown. + * [Now it is rather a minimum] + */ +#define MAX_DISK_SIZE 4 /* 3984*/ + + +/* + * globals used by 'result()' + */ +#define MAX_REPLIES 16 +static unsigned char reply_buffer[MAX_REPLIES]; +static int inr; /* size of reply buffer, when called from interrupt */ +#define ST0 (reply_buffer[0]) +#define ST1 (reply_buffer[1]) +#define ST2 (reply_buffer[2]) +#define ST3 (reply_buffer[0]) /* result of GETSTATUS */ +#define R_TRACK (reply_buffer[3]) +#define R_HEAD (reply_buffer[4]) +#define R_SECTOR (reply_buffer[5]) +#define R_SIZECODE (reply_buffer[6]) + +#define SEL_DLY (2*HZ/100) + +/* + * this struct defines the different floppy drive types. + */ +static struct { + struct floppy_drive_params params; + const char *name; /* name printed while booting */ +} default_drive_params[]= { +/* NOTE: the time values in jiffies should be in msec! + CMOS drive type + | Maximum data rate supported by drive type + | | Head load time, msec + | | | Head unload time, msec (not used) + | | | | Step rate interval, usec + | | | | | Time needed for spinup time (jiffies) + | | | | | | Timeout for spinning down (jiffies) + | | | | | | | Spindown offset (where disk stops) + | | | | | | | | Select delay + | | | | | | | | | RPS + | | | | | | | | | | Max number of tracks + | | | | | | | | | | | Interrupt timeout + | | | | | | | | | | | | Max nonintlv. sectors + | | | | | | | | | | | | | -Max Errors- flags */ +{{0, 500, 16, 16, 8000, 1*HZ, 3*HZ, 0, SEL_DLY, 5, 80, 3*HZ, 20, {3,1,2,0,2}, 0, + 0, { 7, 4, 8, 2, 1, 5, 3,10}, 3*HZ/2, 0 }, "unknown" }, + +{{1, 300, 16, 16, 8000, 1*HZ, 3*HZ, 0, SEL_DLY, 5, 40, 3*HZ, 17, {3,1,2,0,2}, 0, + 0, { 1, 0, 0, 0, 0, 0, 0, 0}, 3*HZ/2, 1 }, "360K PC" }, /*5 1/4 360 KB PC*/ + +{{2, 500, 16, 16, 6000, 4*HZ/10, 3*HZ, 14, SEL_DLY, 6, 83, 3*HZ, 17, {3,1,2,0,2}, 0, + 0, { 2, 6, 4, 0, 0, 0, 0, 0}, 3*HZ/2, 2 }, "1.2M" }, /*5 1/4 HD AT*/ + +{{3, 250, 16, 16, 3000, 1*HZ, 3*HZ, 0, SEL_DLY, 5, 83, 3*HZ, 20, {3,1,2,0,2}, 0, + 0, { 4, 6, 0, 0, 0, 0, 0, 0}, 3*HZ/2, 4 }, "720k" }, /*3 1/2 DD*/ + +{{4, 500, 16, 16, 4000, 4*HZ/10, 3*HZ, 10, SEL_DLY, 5, 83, 3*HZ, 20, {3,1,2,0,2}, 0, + 0, { 7,10, 2, 4, 6, 0, 0, 0}, 3*HZ/2, 7 }, "1.44M" }, /*3 1/2 HD*/ + +{{5, 1000, 15, 8, 3000, 4*HZ/10, 3*HZ, 10, SEL_DLY, 5, 83, 3*HZ, 40, {3,1,2,0,2}, 0, + 0, { 7, 8, 4,25,28,22,31,21}, 3*HZ/2, 8 }, "2.88M AMI BIOS" }, /*3 1/2 ED*/ + +{{6, 1000, 15, 8, 3000, 4*HZ/10, 3*HZ, 10, SEL_DLY, 5, 83, 3*HZ, 40, {3,1,2,0,2}, 0, + 0, { 7, 8, 4,25,28,22,31,21}, 3*HZ/2, 8 }, "2.88M" } /*3 1/2 ED*/ +/* | --autodetected formats--- | | | + * read_track | | Name printed when booting + * | Native format + * Frequency of disk change checks */ +}; + +static struct floppy_drive_params drive_params[N_DRIVE]; +static struct floppy_drive_struct drive_state[N_DRIVE]; +static struct floppy_write_errors write_errors[N_DRIVE]; +static struct timer_list motor_off_timer[N_DRIVE]; +static struct gendisk *disks[N_DRIVE]; +static struct floppy_raw_cmd *raw_cmd, default_raw_cmd; + +/* + * This struct defines the different floppy types. + * + * Bit 0 of 'stretch' tells if the tracks need to be doubled for some + * types (e.g. 360kB diskette in 1.2MB drive, etc.). Bit 1 of 'stretch' + * tells if the disk is in Commodore 1581 format, which means side 0 sectors + * are located on side 1 of the disk but with a side 0 ID, and vice-versa. + * This is the same as the Sharp MZ-80 5.25" CP/M disk format, except that the + * 1581's logical side 0 is on physical side 1, whereas the Sharp's logical + * side 0 is on physical side 0 (but with the misnamed sector IDs). + * 'stretch' should probably be renamed to something more general, like + * 'options'. Other parameters should be self-explanatory (see also + * setfdprm(8)). + */ +/* + Size + | Sectors per track + | | Head + | | | Tracks + | | | | Stretch + | | | | | Gap 1 size + | | | | | | Data rate, | 0x40 for perp + | | | | | | | Spec1 (stepping rate, head unload + | | | | | | | | /fmt gap (gap2) */ +static struct floppy_struct floppy_type[32] = { + { 0, 0,0, 0,0,0x00,0x00,0x00,0x00,NULL }, /* 0 no testing */ +#if 0 + { 720, 9,2,40,0,0x2A,0x02,0xDF,0x50,"d360" }, /* 1 360KB PC */ +#else + { 2464,16,2,77,0,0x35,0x48,0xDF,0x74,"d360" }, /* 1 1.25MB 98 */ +#endif + { 2400,15,2,80,0,0x1B,0x00,0xDF,0x54,"h1200" }, /* 2 1.2MB AT */ + { 720, 9,1,80,0,0x2A,0x02,0xDF,0x50,"D360" }, /* 3 360KB SS 3.5" */ + { 1440, 9,2,80,0,0x2A,0x02,0xDF,0x50,"D720" }, /* 4 720KB 3.5" */ + { 720, 9,2,40,1,0x23,0x01,0xDF,0x50,"h360" }, /* 5 360KB AT */ + { 1440, 9,2,80,0,0x23,0x01,0xDF,0x50,"h720" }, /* 6 720KB AT */ + { 2880,18,2,80,0,0x1B,0x00,0xCF,0x6C,"H1440" }, /* 7 1.44MB 3.5" */ + { 5760,36,2,80,0,0x1B,0x43,0xAF,0x54,"E2880" }, /* 8 2.88MB 3.5" */ + { 6240,39,2,80,0,0x1B,0x43,0xAF,0x28,"E3120" }, /* 9 3.12MB 3.5" */ + + { 2880,18,2,80,0,0x25,0x00,0xDF,0x02,"h1440" }, /* 10 1.44MB 5.25" */ + { 3360,21,2,80,0,0x1C,0x00,0xCF,0x0C,"H1680" }, /* 11 1.68MB 3.5" */ + { 820,10,2,41,1,0x25,0x01,0xDF,0x2E,"h410" }, /* 12 410KB 5.25" */ + { 1640,10,2,82,0,0x25,0x02,0xDF,0x2E,"H820" }, /* 13 820KB 3.5" */ + { 2952,18,2,82,0,0x25,0x00,0xDF,0x02,"h1476" }, /* 14 1.48MB 5.25" */ + { 3444,21,2,82,0,0x25,0x00,0xDF,0x0C,"H1722" }, /* 15 1.72MB 3.5" */ + { 840,10,2,42,1,0x25,0x01,0xDF,0x2E,"h420" }, /* 16 420KB 5.25" */ + { 1660,10,2,83,0,0x25,0x02,0xDF,0x2E,"H830" }, /* 17 830KB 3.5" */ + { 2988,18,2,83,0,0x25,0x00,0xDF,0x02,"h1494" }, /* 18 1.49MB 5.25" */ + { 3486,21,2,83,0,0x25,0x00,0xDF,0x0C,"H1743" }, /* 19 1.74 MB 3.5" */ + + { 1760,11,2,80,0,0x1C,0x09,0xCF,0x00,"h880" }, /* 20 880KB 5.25" */ + { 2080,13,2,80,0,0x1C,0x01,0xCF,0x00,"D1040" }, /* 21 1.04MB 3.5" */ + { 2240,14,2,80,0,0x1C,0x19,0xCF,0x00,"D1120" }, /* 22 1.12MB 3.5" */ + { 3200,20,2,80,0,0x1C,0x20,0xCF,0x2C,"h1600" }, /* 23 1.6MB 5.25" */ + { 3520,22,2,80,0,0x1C,0x08,0xCF,0x2e,"H1760" }, /* 24 1.76MB 3.5" */ + { 3840,24,2,80,0,0x1C,0x20,0xCF,0x00,"H1920" }, /* 25 1.92MB 3.5" */ + { 6400,40,2,80,0,0x25,0x5B,0xCF,0x00,"E3200" }, /* 26 3.20MB 3.5" */ + { 7040,44,2,80,0,0x25,0x5B,0xCF,0x00,"E3520" }, /* 27 3.52MB 3.5" */ + { 7680,48,2,80,0,0x25,0x63,0xCF,0x00,"E3840" }, /* 28 3.84MB 3.5" */ + + { 3680,23,2,80,0,0x1C,0x10,0xCF,0x00,"H1840" }, /* 29 1.84MB 3.5" */ + { 1600,10,2,80,0,0x25,0x02,0xDF,0x2E,"D800" }, /* 30 800KB 3.5" */ + { 3200,20,2,80,0,0x1C,0x00,0xCF,0x2C,"H1600" }, /* 31 1.6MB 3.5" */ +}; + +#define NUMBER(x) (sizeof(x) / sizeof(*(x))) +#define SECTSIZE (_FD_SECTSIZE(*floppy)) + +/* Auto-detection: Disk type used until the next media change occurs. */ +static struct floppy_struct *current_type[N_DRIVE]; + +/* + * User-provided type information. current_type points to + * the respective entry of this array. + */ +static struct floppy_struct user_params[N_DRIVE]; + +static sector_t floppy_sizes[256]; + +/* + * The driver is trying to determine the correct media format + * while probing is set. rw_interrupt() clears it after a + * successful access. + */ +static int probing; + +/* Synchronization of FDC access. */ +#define FD_COMMAND_NONE -1 +#define FD_COMMAND_ERROR 2 +#define FD_COMMAND_OKAY 3 + +static volatile int command_status = FD_COMMAND_NONE; +static unsigned long fdc_busy; +static DECLARE_WAIT_QUEUE_HEAD(fdc_wait); +static DECLARE_WAIT_QUEUE_HEAD(command_done); + +#define NO_SIGNAL (!interruptible || !signal_pending(current)) +#define CALL(x) if ((x) == -EINTR) return -EINTR +#define ECALL(x) if ((ret = (x))) return ret; +#define _WAIT(x,i) CALL(ret=wait_til_done((x),i)) +#define WAIT(x) _WAIT((x),interruptible) +#define IWAIT(x) _WAIT((x),1) + +/* Errors during formatting are counted here. */ +static int format_errors; + +/* Format request descriptor. */ +static struct format_descr format_req; + +/* + * Rate is 0 for 500kb/s, 1 for 300kbps, 2 for 250kbps + * Spec1 is 0xSH, where S is stepping rate (F=1ms, E=2ms, D=3ms etc), + * H is head unload time (1=16ms, 2=32ms, etc) + */ + +/* + * Track buffer + * Because these are written to by the DMA controller, they must + * not contain a 64k byte boundary crossing, or data will be + * corrupted/lost. + */ +static char *floppy_track_buffer; +static int max_buffer_sectors; + +static int *errors; +typedef void (*done_f)(int); +static struct cont_t { + void (*interrupt)(void); /* this is called after the interrupt of the + * main command */ + void (*redo)(void); /* this is called to retry the operation */ + void (*error)(void); /* this is called to tally an error */ + done_f done; /* this is called to say if the operation has + * succeeded/failed */ +} *cont; + +static void floppy_ready(void); +static void floppy_start(void); +static void process_fd_request(void); +static void recalibrate_floppy(void); +static void floppy_shutdown(unsigned long); + +static int floppy_grab_irq_and_dma(void); +static void floppy_release_irq_and_dma(void); + +/* + * The "reset" variable should be tested whenever an interrupt is scheduled, + * after the commands have been sent. This is to ensure that the driver doesn't + * get wedged when the interrupt doesn't come because of a failed command. + * reset doesn't need to be tested before sending commands, because + * output_byte is automatically disabled when reset is set. + */ +#define CHECK_RESET { if (FDCS->reset){ reset_fdc(); return; } } +static void reset_fdc(void); + +/* + * These are global variables, as that's the easiest way to give + * information to interrupts. They are the data used for the current + * request. + */ +#define NO_TRACK -1 +#define NEED_1_RECAL -2 +#define NEED_2_RECAL -3 + +static int usage_count; + +/* buffer related variables */ +static int buffer_track = -1; +static int buffer_drive = -1; +static int buffer_min = -1; +static int buffer_max = -1; + +/* fdc related variables, should end up in a struct */ +static struct floppy_fdc_state fdc_state[N_FDC]; +static int fdc; /* current fdc */ + +static struct floppy_struct *_floppy = floppy_type; +static unsigned char current_drive; +static long current_count_sectors; +static unsigned char fsector_t; /* sector in track */ +static unsigned char in_sector_offset; /* offset within physical sector, + * expressed in units of 512 bytes */ + +#ifndef fd_eject +static inline int fd_eject(int drive) +{ + return -EINVAL; +} +#endif + +#ifdef DEBUGT +static long unsigned debugtimer; +#endif + +/* + * Debugging + * ========= + */ +static inline void set_debugt(void) +{ +#ifdef DEBUGT + debugtimer = jiffies; +#endif +} + +static inline void debugt(const char *message) +{ +#ifdef DEBUGT + if (DP->flags & DEBUGT) + printk("%s dtime=%lu\n", message, jiffies-debugtimer); +#endif +} + +typedef void (*timeout_fn)(unsigned long); +static struct timer_list fd_timeout = TIMER_INITIALIZER(floppy_shutdown, 0, 0); + +static const char *timeout_message; + +#ifdef FLOPPY_SANITY_CHECK +static void is_alive(const char *message) +{ + /* this routine checks whether the floppy driver is "alive" */ + if (fdc_busy && command_status < 2 && !timer_pending(&fd_timeout)){ + DPRINT("timeout handler died: %s\n",message); + } +} +#endif + +static void (*do_floppy)(void) = NULL; + +#ifdef FLOPPY_SANITY_CHECK + +#define OLOGSIZE 20 + +static void (*lasthandler)(void); +static unsigned long interruptjiffies; +static unsigned long resultjiffies; +static int resultsize; +static unsigned long lastredo; + +static struct output_log { + unsigned char data; + unsigned char status; + unsigned long jiffies; +} output_log[OLOGSIZE]; + +static int output_log_pos; +#endif + +#define current_reqD -1 +#define MAXTIMEOUT -2 + +static void reschedule_timeout(int drive, const char *message, int marg) +{ + if (drive == current_reqD) + drive = current_drive; + del_timer(&fd_timeout); + if (drive < 0 || drive > N_DRIVE) { + fd_timeout.expires = jiffies + 20UL*HZ; + drive=0; + } else + fd_timeout.expires = jiffies + UDP->timeout; + add_timer(&fd_timeout); + if (UDP->flags & FD_DEBUG){ + DPRINT("reschedule timeout "); + printk(message, marg); + printk("\n"); + } + timeout_message = message; +} + +static int maximum(int a, int b) +{ + if (a > b) + return a; + else + return b; +} +#define INFBOUND(a,b) (a)=maximum((a),(b)); + +static int minimum(int a, int b) +{ + if (a < b) + return a; + else + return b; +} +#define SUPBOUND(a,b) (a)=minimum((a),(b)); + + +/* + * Bottom half floppy driver. + * ========================== + * + * This part of the file contains the code talking directly to the hardware, + * and also the main service loop (seek-configure-spinup-command) + */ + +/* + * disk change. + * This routine is responsible for maintaining the FD_DISK_CHANGE flag, + * and the last_checked date. + * + * last_checked is the date of the last check which showed 'no disk change' + * FD_DISK_CHANGE is set under two conditions: + * 1. The floppy has been changed after some i/o to that floppy already + * took place. + * 2. No floppy disk is in the drive. This is done in order to ensure that + * requests are quickly flushed in case there is no disk in the drive. It + * follows that FD_DISK_CHANGE can only be cleared if there is a disk in + * the drive. + * + * For 1., maxblock is observed. Maxblock is 0 if no i/o has taken place yet. + * For 2., FD_DISK_NEWCHANGE is watched. FD_DISK_NEWCHANGE is cleared on + * each seek. If a disk is present, the disk change line should also be + * cleared on each seek. Thus, if FD_DISK_NEWCHANGE is clear, but the disk + * change line is set, this means either that no disk is in the drive, or + * that it has been removed since the last seek. + * + * This means that we really have a third possibility too: + * The floppy has been changed after the last seek. + */ + +static int disk_change(int drive) +{ + return UTESTF(FD_DISK_CHANGED); +} + +static int set_mode(char mask, char data) +{ + register unsigned char newdor, olddor; + + olddor = FDCS->dor; + newdor = (olddor & mask) | data; + if (newdor != olddor) { + FDCS->dor = newdor; + fd_outb(newdor, FD_MODE); + } + + if (newdor & FLOPPY98_MOTOR_MASK) + floppy_grab_irq_and_dma(); + + if (olddor & FLOPPY98_MOTOR_MASK) + floppy_release_irq_and_dma(); + + return olddor; +} + +static void twaddle(void) +{ + if (DP->select_delay) + return; + + fd_outb(FDCS->dor & 0xf7, FD_MODE); + fd_outb(FDCS->dor, FD_MODE); + DRS->select_date = jiffies; +} + +/* reset all driver information about the current fdc. This is needed after + * a reset, and after a raw command. */ +static void reset_fdc_info(int mode) +{ + int drive; + + FDCS->spec1 = FDCS->spec2 = -1; + FDCS->need_configure = 1; + FDCS->perp_mode = 1; + FDCS->rawcmd = 0; + for (drive = 0; drive < N_DRIVE; drive++) + if (FDC(drive) == fdc && + (mode || UDRS->track != NEED_1_RECAL)) + UDRS->track = NEED_2_RECAL; +} + +/* selects the fdc and drive, and enables the fdc's input/dma. */ +static void set_fdc(int drive) +{ + fdc = 0; + current_drive = drive; + set_mode(~0, 0x10); + if (FDCS->rawcmd == 2) + reset_fdc_info(1); + + if (fd_inb(FD98_STATUS) != STATUS_READY) + FDCS->reset = 1; +} + +/* locks the driver */ +static int _lock_fdc(int drive, int interruptible, int line) +{ + if (!usage_count){ + printk(KERN_ERR "Trying to lock fdc while usage count=0 at line %d\n", line); + return -1; + } + if(floppy_grab_irq_and_dma()==-1) + return -EBUSY; + + if (test_and_set_bit(0, &fdc_busy)) { + DECLARE_WAITQUEUE(wait, current); + add_wait_queue(&fdc_wait, &wait); + + for (;;) { + set_current_state(TASK_INTERRUPTIBLE); + + if (!test_and_set_bit(0, &fdc_busy)) + break; + + schedule(); + + if (!NO_SIGNAL) { + remove_wait_queue(&fdc_wait, &wait); + return -EINTR; + } + } + + set_current_state(TASK_RUNNING); + remove_wait_queue(&fdc_wait, &wait); + } + command_status = FD_COMMAND_NONE; + + reschedule_timeout(drive, "lock fdc", 0); + set_fdc(drive); + return 0; +} + +#define lock_fdc(drive,interruptible) _lock_fdc(drive,interruptible, __LINE__) + +#define LOCK_FDC(drive,interruptible) \ +if (lock_fdc(drive,interruptible)) return -EINTR; + + +/* unlocks the driver */ +static inline void unlock_fdc(void) +{ + raw_cmd = 0; + if (!fdc_busy) + DPRINT("FDC access conflict!\n"); + + if (do_floppy) + DPRINT("device interrupt still active at FDC release: %p!\n", + do_floppy); + command_status = FD_COMMAND_NONE; + del_timer(&fd_timeout); + cont = NULL; + clear_bit(0, &fdc_busy); + floppy_release_irq_and_dma(); + wake_up(&fdc_wait); +} + +#ifndef CONFIG_PC9800_MOTOR_OFF /* tomita */ + +/* switches the motor off after a given timeout */ +static void motor_off_callback(unsigned long nr) +{ + printk(KERN_DEBUG "fdc%lu: turn off motor\n", nr); +} + +/* schedules motor off */ +static void floppy_off(unsigned int drive) +{ +} + +#else /* CONFIG_PC9800_MOTOR_OFF */ + +/* switches the motor off after a given timeout */ +static void motor_off_callback(unsigned long fdc) +{ + printk(KERN_DEBUG "fdc%u: turn off motor\n", (unsigned int) fdc); + + fd_outb(0, FD_MODE); /* MTON = 0 */ +} + +static struct timer_list motor_off_timer[N_FDC] = { + { data: 0, function: motor_off_callback }, +#if N_FDC > 1 + { data: 1, function: motor_off_callback }, +#endif +#if N_FDC > 2 +# error "N_FDC > 2; please fix initializer for motor_off_timer[]" +#endif +}; + +/* schedules motor off */ +static void floppy_off(unsigned int drive) +{ + unsigned long volatile delta; + register int fdc = FDC(drive); + + if (!(FDCS->dor & (0x10 << UNIT(drive)))) + return; + + del_timer(motor_off_timer + fdc); + +#if 0 + /* make spindle stop in a position which minimizes spinup time + * next time */ + if (UDP->rps){ + delta = jiffies - UDRS->first_read_date + HZ - + UDP->spindown_offset; + delta = ((delta * UDP->rps) % HZ) / UDP->rps; + motor_off_timer[drive].expires = jiffies + UDP->spindown - delta; + } +#else + if (UDP->rps) + motor_off_timer[drive].expires = jiffies + UDP->spindown; +#endif + + add_timer(motor_off_timer + fdc); +} + +#endif /* CONFIG_PC9800_MOTOR_OFF */ + +/* + * cycle through all N_DRIVE floppy drives, for disk change testing. + * stopping at current drive. This is done before any long operation, to + * be sure to have up to date disk change information. + */ +static void scandrives(void) +{ + int i, drive, saved_drive; + + if (DP->select_delay) + return; + + saved_drive = current_drive; + for (i=0; i < N_DRIVE; i++){ + drive = (saved_drive + i + 1) % N_DRIVE; + if (UDRS->fd_ref == 0 || UDP->select_delay != 0) + continue; /* skip closed drives */ + set_fdc(drive); + } + set_fdc(saved_drive); +} + +static void empty(void) +{ +} + +static DECLARE_WORK(floppy_work, NULL, NULL); + +static void schedule_bh( void (*handler)(void*) ) +{ + PREPARE_WORK(&floppy_work, handler, NULL); + schedule_work(&floppy_work); +} + +static struct timer_list fd_timer = TIMER_INITIALIZER(NULL, 0, 0); + +static void cancel_activity(void) +{ + do_floppy = NULL; + PREPARE_WORK(&floppy_work, (void*)(void*)empty, NULL); + del_timer(&fd_timer); +} + +/* this function makes sure that the disk stays in the drive during the + * transfer */ +static void fd_watchdog(void) +{ +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("calling disk change from watchdog\n"); + } +#endif + + if (disk_change(current_drive)){ + DPRINT("disk removed during i/o\n"); + cancel_activity(); + cont->done(0); + reset_fdc(); + } else { + del_timer(&fd_timer); + fd_timer.function = (timeout_fn) fd_watchdog; + fd_timer.expires = jiffies + HZ / 10; + add_timer(&fd_timer); + } +} + +static void main_command_interrupt(void) +{ + del_timer(&fd_timer); + cont->interrupt(); +} + +/* waits for a delay (spinup or select) to pass */ +static int fd_wait_for_completion(unsigned long delay, timeout_fn function) +{ + if (FDCS->reset){ + reset_fdc(); /* do the reset during sleep to win time + * if we don't need to sleep, it's a good + * occasion anyways */ + return 1; + } + + if ((signed) (jiffies - delay) < 0){ + del_timer(&fd_timer); + fd_timer.function = function; + fd_timer.expires = delay; + add_timer(&fd_timer); + return 1; + } + return 0; +} + +static spinlock_t floppy_hlt_lock = SPIN_LOCK_UNLOCKED; +static int hlt_disabled; +static void floppy_disable_hlt(void) +{ + unsigned long flags; + + spin_lock_irqsave(&floppy_hlt_lock, flags); + if (!hlt_disabled) { + hlt_disabled=1; +#ifdef HAVE_DISABLE_HLT + disable_hlt(); +#endif + } + spin_unlock_irqrestore(&floppy_hlt_lock, flags); +} + +static void floppy_enable_hlt(void) +{ + unsigned long flags; + + spin_lock_irqsave(&floppy_hlt_lock, flags); + if (hlt_disabled){ + hlt_disabled=0; +#ifdef HAVE_DISABLE_HLT + enable_hlt(); +#endif + } + spin_unlock_irqrestore(&floppy_hlt_lock, flags); +} + + +static void setup_DMA(void) +{ + unsigned long f; + +#ifdef FLOPPY_SANITY_CHECK + if (raw_cmd->length == 0){ + int i; + + printk("zero dma transfer size:"); + for (i=0; i < raw_cmd->cmd_count; i++) + printk("%x,", raw_cmd->cmd[i]); + printk("\n"); + cont->done(0); + FDCS->reset = 1; + return; + } + if (((unsigned long) raw_cmd->kernel_data) % 512){ + printk("non aligned address: %p\n", raw_cmd->kernel_data); + cont->done(0); + FDCS->reset=1; + return; + } +#endif + f=claim_dma_lock(); + fd_disable_dma(); +#ifdef fd_dma_setup + if (fd_dma_setup(raw_cmd->kernel_data, raw_cmd->length, + (raw_cmd->flags & FD_RAW_READ)? + DMA_MODE_READ : DMA_MODE_WRITE, + FDCS->address) < 0) { + release_dma_lock(f); + cont->done(0); + FDCS->reset=1; + return; + } + release_dma_lock(f); +#else + fd_clear_dma_ff(); + fd_cacheflush(raw_cmd->kernel_data, raw_cmd->length); + fd_set_dma_mode((raw_cmd->flags & FD_RAW_READ)? + DMA_MODE_READ : DMA_MODE_WRITE); + fd_set_dma_addr(raw_cmd->kernel_data); + fd_set_dma_count(raw_cmd->length); + virtual_dma_port = FDCS->address; + fd_enable_dma(); + release_dma_lock(f); +#endif + floppy_disable_hlt(); +} + +static void show_floppy(void); + +/* waits until the fdc becomes ready */ + +#ifdef PC9800_DEBUG_FLOPPY +#define READY_DELAY 10000000 +#else +#define READY_DELAY 100000 +#endif + +static int wait_til_ready(void) +{ + int counter, status; + if (FDCS->reset) + return -1; + for (counter = 0; counter < READY_DELAY; counter++) { + status = fd_inb(FD98_STATUS); + if (status & STATUS_READY) + return status; + } + if (!initialising) { + DPRINT("Getstatus times out (%x) on fdc %d\n", + status, fdc); + show_floppy(); + } + FDCS->reset = 1; + return -1; +} + +/* sends a command byte to the fdc */ +static int output_byte(char byte) +{ + int status; + + if ((status = wait_til_ready()) < 0) + return -1; + if ((status & (STATUS_READY|STATUS_DIR|STATUS_DMA)) == STATUS_READY){ + fd_outb(byte,FD98_DATA); +#ifdef FLOPPY_SANITY_CHECK + output_log[output_log_pos].data = byte; + output_log[output_log_pos].status = status; + output_log[output_log_pos].jiffies = jiffies; + output_log_pos = (output_log_pos + 1) % OLOGSIZE; +#endif + return 0; + } + FDCS->reset = 1; + if (!initialising) { + DPRINT("Unable to send byte %x to FDC. Fdc=%x Status=%x\n", + byte, fdc, status); + show_floppy(); + } + return -1; +} +#define LAST_OUT(x) if (output_byte(x)<0){ reset_fdc();return;} + +/* gets the response from the fdc */ +static int result(void) +{ + int i, status=0; + + for(i=0; i < MAX_REPLIES; i++) { + if ((status = wait_til_ready()) < 0) + break; + status &= STATUS_DIR|STATUS_READY|STATUS_BUSY|STATUS_DMA; + if ((status & ~STATUS_BUSY) == STATUS_READY){ +#ifdef FLOPPY_SANITY_CHECK + resultjiffies = jiffies; + resultsize = i; +#endif + return i; + } + if (status == (STATUS_DIR|STATUS_READY|STATUS_BUSY)) + reply_buffer[i] = fd_inb(FD98_DATA); + else + break; + } + if (!initialising) { + DPRINT("get result error. Fdc=%d Last status=%x Read bytes=%d\n", + fdc, status, i); + show_floppy(); + } + FDCS->reset = 1; + return -1; +} + +static int fifo_depth = 0xa; +static int no_fifo; + +#define NOMINAL_DTR 500 + +/* Issue a "SPECIFY" command to set the step rate time, head unload time, + * head load time, and DMA disable flag to values needed by floppy. + * + * The value "dtr" is the data transfer rate in Kbps. It is needed + * to account for the data rate-based scaling done by the 82072 and 82077 + * FDC types. This parameter is ignored for other types of FDCs (i.e. + * 8272a). + * + * Note that changing the data transfer rate has a (probably deleterious) + * effect on the parameters subject to scaling for 82072/82077 FDCs, so + * fdc_specify is called again after each data transfer rate + * change. + * + * srt: 1000 to 16000 in microseconds + * hut: 16 to 240 milliseconds + * hlt: 2 to 254 milliseconds + * + * These values are rounded up to the next highest available delay time. + */ +static void fdc_specify(void) +{ + output_byte(FD_SPECIFY); + output_byte(FDCS->spec1 = 0xdf); + output_byte(FDCS->spec2 = 0x24); +} + +static void tell_sector(void) +{ + printk(": track %d, head %d, sector %d, size %d", + R_TRACK, R_HEAD, R_SECTOR, R_SIZECODE); +} /* tell_sector */ + +static int auto_detect_mode_pc9800(void) +{ +#ifdef PC9800_DEBUG_FLOPPY + printk("auto_detect_mode_pc9800: retry_auto_detect=%d\n", + retry_auto_detect); +#endif + if (retry_auto_detect > 4) { + retry_auto_detect = 0; + return 1; + } + + switch ((int)(_floppy - floppy_type)) { + case 2: + _floppy = floppy_type + 4; + break; + + case 4: + case 6: + _floppy = floppy_type + 7; + break; + + case 7: + case 10: + _floppy = floppy_type + 2; + break; + + default: + _floppy = floppy_type + 7; + } + + retry_auto_detect++; + return 0; +} + +static void access_mode_change_pc9800(void); + +/* + * OK, this error interpreting routine is called after a + * DMA read/write has succeeded + * or failed, so we check the results, and copy any buffers. + * hhb: Added better error reporting. + * ak: Made this into a separate routine. + */ +static int interpret_errors(void) +{ + char bad; + + if (inr!=7) { + DPRINT("-- FDC reply error"); + FDCS->reset = 1; + return 1; + } + + /* check IC to find cause of interrupt */ + switch (ST0 & ST0_INTR) { + case 0x40: /* error occurred during command execution */ + if (ST1 & ST1_EOC) + return 0; /* occurs with pseudo-DMA */ + bad = 1; + if (ST1 & ST1_WP) { + DPRINT("Drive is write protected\n"); + CLEARF(FD_DISK_WRITABLE); + cont->done(0); + bad = 2; + } else if (ST1 & ST1_ND) { + SETF(FD_NEED_TWADDLE); + } else if (ST1 & ST1_OR) { + if (DP->flags & FTD_MSG) + DPRINT("Over/Underrun - retrying\n"); + bad = 0; + }else if (*errors >= DP->max_errors.reporting){ + if (ST0 & ST0_ECE) { + printk("Recalibrate failed!"); + } else if (ST2 & ST2_CRC) { + printk("data CRC error"); + tell_sector(); + } else if (ST1 & ST1_CRC) { + printk("CRC error"); + tell_sector(); + } else if ((ST1 & (ST1_MAM|ST1_ND)) || (ST2 & ST2_MAM)) { + if (auto_detect_mode) { + bad = (char)auto_detect_mode_pc9800(); + access_mode_change_pc9800(); + } + + if (bad) { + printk("floppy error: MA: _floppy - floppy_type=%d\n", (int)(_floppy - floppy_type)); + printk("bad=%d\n", (int)bad); + if (!probing) { + printk("sector not found"); + tell_sector(); + } else + printk("probe failed..."); + } + } else if (ST2 & ST2_WC) { /* seek error */ + printk("wrong cylinder"); + } else if (ST2 & ST2_BC) { /* cylinder marked as bad */ + printk("bad cylinder"); + } else { + printk("unknown error. ST[0..2] are: 0x%x 0x%x 0x%x", ST0, ST1, ST2); + tell_sector(); + } + printk("\n"); + + } + if (ST2 & ST2_WC || ST2 & ST2_BC) + /* wrong cylinder => recal */ + DRS->track = NEED_2_RECAL; + return bad; + case 0x80: /* invalid command given */ + DPRINT("Invalid FDC command given!\n"); + cont->done(0); + return 2; + case 0xc0: + SETF(FD_DISK_CHANGED); + SETF(FD_DISK_WRITABLE); + DPRINT("Abnormal termination caused by polling\n"); + cont->error(); + return 2; + default: /* (0) Normal command termination */ + auto_detect_mode = 0; + return 0; + } +} + +/* + * This routine is called when everything should be correctly set up + * for the transfer (i.e. floppy motor is on, the correct floppy is + * selected, and the head is sitting on the right track). + */ +static void setup_rw_floppy(void) +{ + int i,r, flags,dflags; + unsigned long ready_date; + timeout_fn function; + + access_mode_change_pc9800(); + flags = raw_cmd->flags; + if (flags & (FD_RAW_READ | FD_RAW_WRITE)) + flags |= FD_RAW_INTR; + + if ((flags & FD_RAW_SPIN) && !(flags & FD_RAW_NO_MOTOR)){ + ready_date = DRS->spinup_date + DP->spinup; + /* If spinup will take a long time, rerun scandrives + * again just before spinup completion. Beware that + * after scandrives, we must again wait for selection. + */ + if ((signed) (ready_date - jiffies) > DP->select_delay){ + ready_date -= DP->select_delay; + function = (timeout_fn) floppy_start; + } else + function = (timeout_fn) setup_rw_floppy; + + /* wait until the floppy is spinning fast enough */ + if (fd_wait_for_completion(ready_date,function)) + return; + } + dflags = DRS->flags; + + if ((flags & FD_RAW_READ) || (flags & FD_RAW_WRITE)) + setup_DMA(); + + if (flags & FD_RAW_INTR) + do_floppy = main_command_interrupt; + + r=0; + for (i=0; i< raw_cmd->cmd_count; i++) + r|=output_byte(raw_cmd->cmd[i]); + +#ifdef DEBUGT + debugt("rw_command: "); +#endif + if (r){ + cont->error(); + reset_fdc(); + return; + } + + if (!(flags & FD_RAW_INTR)){ + inr = result(); + cont->interrupt(); + } else if (flags & FD_RAW_NEED_DISK) + fd_watchdog(); +} + +static int blind_seek; + +/* + * This is the routine called after every seek (or recalibrate) interrupt + * from the floppy controller. + */ +static void seek_interrupt(void) +{ +#ifdef DEBUGT + debugt("seek interrupt:"); +#endif + if (inr != 2 || (ST0 & 0xF8) != 0x20) { + DRS->track = NEED_2_RECAL; + cont->error(); + cont->redo(); + return; + } + if (DRS->track >= 0 && DRS->track != ST1 && !blind_seek){ +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("clearing NEWCHANGE flag because of effective seek\n"); + DPRINT("jiffies=%lu\n", jiffies); + } +#endif + CLEARF(FD_DISK_NEWCHANGE); /* effective seek */ + CLEARF(FD_DISK_CHANGED); /* effective seek */ + DRS->select_date = jiffies; + } + DRS->track = ST1; + floppy_ready(); +} + +static void check_wp(void) +{ + if (TESTF(FD_VERIFY)) { + /* check write protection */ + output_byte(FD_GETSTATUS); + output_byte(UNIT(current_drive)); + if (result() != 1){ + FDCS->reset = 1; + return; + } + CLEARF(FD_VERIFY); + CLEARF(FD_NEED_TWADDLE); +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("checking whether disk is write protected\n"); + DPRINT("wp=%x\n",ST3 & 0x40); + } +#endif + if (!(ST3 & 0x40)) + SETF(FD_DISK_WRITABLE); + else + CLEARF(FD_DISK_WRITABLE); + } +} + +static void seek_floppy(void) +{ + int track; + + blind_seek=0; + +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("calling disk change from seek\n"); + } +#endif + + if (!TESTF(FD_DISK_NEWCHANGE) && + disk_change(current_drive) && + (raw_cmd->flags & FD_RAW_NEED_DISK)){ + /* the media changed flag should be cleared after the seek. + * If it isn't, this means that there is really no disk in + * the drive. + */ + SETF(FD_DISK_CHANGED); + cont->done(0); + cont->redo(); + return; + } + if (DRS->track <= NEED_1_RECAL){ + recalibrate_floppy(); + return; + } else if (TESTF(FD_DISK_NEWCHANGE) && + (raw_cmd->flags & FD_RAW_NEED_DISK) && + (DRS->track <= NO_TRACK || DRS->track == raw_cmd->track)) { + /* we seek to clear the media-changed condition. Does anybody + * know a more elegant way, which works on all drives? */ + if (raw_cmd->track) + track = raw_cmd->track - 1; + else { + if (DP->flags & FD_SILENT_DCL_CLEAR){ + blind_seek = 1; + raw_cmd->flags |= FD_RAW_NEED_SEEK; + } + track = 1; + } + } else { + check_wp(); + if (raw_cmd->track != DRS->track && + (raw_cmd->flags & FD_RAW_NEED_SEEK)) + track = raw_cmd->track; + else { + setup_rw_floppy(); + return; + } + } + + do_floppy = seek_interrupt; + output_byte(FD_SEEK); + output_byte(UNIT(current_drive)); + LAST_OUT(track); +#ifdef DEBUGT + debugt("seek command:"); +#endif +} + +static void recal_interrupt(void) +{ +#ifdef DEBUGT + debugt("recal interrupt:"); +#endif + if (inr !=2) + FDCS->reset = 1; + else if (ST0 & ST0_ECE) { + switch(DRS->track){ + case NEED_1_RECAL: +#ifdef DEBUGT + debugt("recal interrupt need 1 recal:"); +#endif + /* after a second recalibrate, we still haven't + * reached track 0. Probably no drive. Raise an + * error, as failing immediately might upset + * computers possessed by the Devil :-) */ + cont->error(); + cont->redo(); + return; + case NEED_2_RECAL: +#ifdef DEBUGT + debugt("recal interrupt need 2 recal:"); +#endif + /* If we already did a recalibrate, + * and we are not at track 0, this + * means we have moved. (The only way + * not to move at recalibration is to + * be already at track 0.) Clear the + * new change flag */ +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("clearing NEWCHANGE flag because of second recalibrate\n"); + } +#endif + + CLEARF(FD_DISK_NEWCHANGE); + DRS->select_date = jiffies; + /* fall through */ + default: +#ifdef DEBUGT + debugt("recal interrupt default:"); +#endif + /* Recalibrate moves the head by at + * most 80 steps. If after one + * recalibrate we don't have reached + * track 0, this might mean that we + * started beyond track 80. Try + * again. */ + DRS->track = NEED_1_RECAL; + break; + } + } else + DRS->track = ST1; + floppy_ready(); +} + +static void print_result(char *message, int inr) +{ + int i; + + DPRINT("%s ", message); + if (inr >= 0) + for (i=0; i= N_FDC || FDCS->address == -1){ + /* we don't even know which FDC is the culprit */ + printk("DOR0=%x\n", fdc_state[0].dor); + printk("floppy interrupt on bizarre fdc %d\n",fdc); + printk("handler=%p\n", handler); + is_alive("bizarre fdc"); + return; + } + + FDCS->reset = 0; + /* We have to clear the reset flag here, because apparently on boxes + * with level triggered interrupts (PS/2, Sparc, ...), it is needed to + * emit SENSEI's to clear the interrupt line. And FDCS->reset blocks the + * emission of the SENSEI's. + * It is OK to emit floppy commands because we are in an interrupt + * handler here, and thus we have to fear no interference of other + * activity. + */ + + do_print = !handler && !initialising; + + inr = result(); + if (inr && do_print) + print_result("unexpected interrupt", inr); + if (inr == 0){ + do { + output_byte(FD_SENSEI); + inr = result(); + if ((ST0 & ST0_INTR) == 0xC0) { + int drive = ST0 & ST0_DS; + + /* Attention Interrupt. */ + if (ST0 & ST0_NR) { +#ifdef PC9800_DEBUG_FLOPPY + if (do_print) + printk(KERN_DEBUG + "floppy debug: floppy ejected (drive %d)\n", + drive); +#endif + USETF(FD_DISK_CHANGED); + USETF(FD_VERIFY); + } else { +#ifdef PC9800_DEBUG_FLOPPY + if (do_print) + printk(KERN_DEBUG + "floppy debug: floppy inserted (drive %d)\n", + drive); +#endif + } + } /* Attention Interrupt */ +#ifdef PC9800_DEBUG_FLOPPY + else { + printk(KERN_DEBUG + "floppy debug : unknown interrupt\n"); + } +#endif + } while ((ST0 & 0x83) != UNIT(current_drive) && inr == 2); + } + if (handler) { + schedule_bh( (void *)(void *) handler); + } else { +#if 0 + FDCS->reset = 1; +#endif + } + is_alive("normal interrupt end"); +} + +static void recalibrate_floppy(void) +{ +#ifdef DEBUGT + debugt("recalibrate floppy:"); +#endif + do_floppy = recal_interrupt; + output_byte(FD_RECALIBRATE); + LAST_OUT(UNIT(current_drive)); +} + +/* + * Must do 4 FD_SENSEIs after reset because of ``drive polling''. + */ +static void reset_interrupt(void) +{ +#ifdef PC9800_DEBUG_FLOPPY + printk("floppy debug: reset interrupt\n"); +#endif +#ifdef DEBUGT + debugt("reset interrupt:"); +#endif + result(); /* get the status ready for set_fdc */ + if (FDCS->reset) { + printk("reset set in interrupt, calling %p\n", cont->error); + cont->error(); /* a reset just after a reset. BAD! */ + } + cont->redo(); +} + +/* + * reset is done by pulling bit 2 of DOR low for a while (old FDCs), + * or by setting the self clearing bit 7 of STATUS (newer FDCs) + */ +static void reset_fdc(void) +{ + unsigned long flags; + +#ifdef PC9800_DEBUG_FLOPPY + printk("floppy debug: reset_fdc\n"); +#endif + + do_floppy = reset_interrupt; + FDCS->reset = 0; + reset_fdc_info(0); + + /* Pseudo-DMA may intercept 'reset finished' interrupt. */ + /* Irrelevant for systems with true DMA (i386). */ + + flags=claim_dma_lock(); + fd_disable_dma(); + release_dma_lock(flags); + + fd_outb(FDCS->dor | 0x80, FD_MODE); + udelay(FD_RESET_DELAY); + fd_outb(FDCS->dor, FD_MODE); + udelay(FD_AFTER_RESET_DELAY); +} + +static void show_floppy(void) +{ + int i; + + printk("\n"); + printk("floppy driver state\n"); + printk("-------------------\n"); + printk("now=%lu last interrupt=%lu diff=%lu last called handler=%p\n", + jiffies, interruptjiffies, jiffies-interruptjiffies, lasthandler); + + +#ifdef FLOPPY_SANITY_CHECK + printk("timeout_message=%s\n", timeout_message); + printk("last output bytes:\n"); + for (i=0; i < OLOGSIZE; i++) + printk("%2x %2x %lu\n", + output_log[(i+output_log_pos) % OLOGSIZE].data, + output_log[(i+output_log_pos) % OLOGSIZE].status, + output_log[(i+output_log_pos) % OLOGSIZE].jiffies); + printk("last result at %lu\n", resultjiffies); + printk("last redo_fd_request at %lu\n", lastredo); + for (i=0; ireset = 1; + if (cont){ + cont->done(0); + cont->redo(); /* this will recall reset when needed */ + } else { + printk("no cont in shutdown!\n"); + process_fd_request(); + } + is_alive("floppy shutdown"); +} +/*typedef void (*timeout_fn)(unsigned long);*/ + +static void access_mode_change_pc9800(void) +{ + static int access_mode, mode_change_now, old_mode, new_set = 1; +#ifdef PC9800_DEBUG_FLOPPY2 + printk("enter access_mode_change\n"); +#endif + access_mode = mode_change_now = 0; + if (DP->cmos==4) { + switch ((int)(_floppy - &floppy_type[0])) { + case 1: + case 2: + new_set = 1; + access_mode = 2; + break; + + case 4: + case 6: + new_set = 1; + access_mode = 3; + break; + + case 7: + case 10: + new_set = 1; + access_mode = 1; + break; + + default: + access_mode = 1; + break; + } + + old_mode = fd_inb(FD_MODE_CHANGE) & 3; + + switch (access_mode) { + case 1: + if ((old_mode & 2) == 0) { + fd_outb(old_mode | 2, FD_MODE_CHANGE); + mode_change_now = 1; + } else { + fd_outb(current_drive << 5, FD_EMODE_CHANGE); + if (fd_inb(FD_EMODE_CHANGE) == 0xff) + return; + } + + fd_outb((current_drive << 5) | 0x11, FD_EMODE_CHANGE); + mode_change_now = 1; + break; + + case 2: + if ((old_mode & 2) == 0) { + fd_outb(old_mode | 2, FD_MODE_CHANGE); + mode_change_now = 1; + } else { + fd_outb(current_drive << 5, FD_EMODE_CHANGE); + if ((fd_inb(FD_EMODE_CHANGE) & 1) == 0) + return; + fd_outb((current_drive << 5) | 0x10, FD_EMODE_CHANGE); + mode_change_now = 1; + } + + break; + + case 3: + if ((old_mode & 2) == 0) + return; + fd_outb(current_drive << 5, FD_EMODE_CHANGE); + if (fd_inb(FD_EMODE_CHANGE) & 1) + fd_outb((current_drive << 5) | 0x10, FD_EMODE_CHANGE); + fd_outb(old_mode & 0xfd, FD_MODE_CHANGE); + mode_change_now = 1; + break; + + default: + break; + } + } else { + switch ((int)(_floppy - &floppy_type[0])) { + case 1: + case 2: + new_set = 1; + access_mode = 2; + break; + + case 4: + case 6: + new_set = 1; + access_mode = 3; + break; + + default: + switch (DP->cmos) { + case 2: + access_mode = 2; + break; + + case 3: + access_mode = 3; + break; + + default: + break; + } + + break; + } + + old_mode = fd_inb(FD_MODE_CHANGE) & 3; + + switch (access_mode) { + case 2: + if ((old_mode & 2) == 0) { + fd_outb(old_mode | 2, FD_MODE_CHANGE); + mode_change_now = 1; + } + + break; + + case 3: + if (old_mode & 2) { + fd_outb(old_mode & 0xfd, FD_MODE_CHANGE); + mode_change_now = 1; + } + + break; + + default: + break; + } + } +#ifdef PC9800_DEBUG_FLOPPY2 + printk("floppy debug: DP->cmos=%d\n", DP->cmos); + printk("floppy debug: mode_change_now=%d\n", mode_change_now); + printk("floppy debug: access_mode=%d\n", access_mode); + printk("floppy debug: old_mode=%d\n", old_mode); + printk("floppy debug: _floppy - &floppy_type[0]=%d\n", (int)(_floppy - &floppy_type[0])); +#endif /* PC9800_DEBUG_FLOPPY2 */ + if(mode_change_now) + reset_fdc(); +} + +/* start motor, check media-changed condition and write protection */ +static int start_motor(void (*function)(void) ) +{ + access_mode_change_pc9800(); + set_mode(~0, 0x8); + + /* wait_for_completion also schedules reset if needed. */ + return(fd_wait_for_completion(DRS->select_date+DP->select_delay, + (timeout_fn) function)); +} + +static void floppy_ready(void) +{ + CHECK_RESET; + if (start_motor(floppy_ready)) return; + +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("calling disk change from floppy_ready\n"); + } +#endif + if (!(raw_cmd->flags & FD_RAW_NO_MOTOR) && + disk_change(current_drive) && + !DP->select_delay) + twaddle(); /* this clears the dcl on certain drive/controller + * combinations */ + +#ifdef fd_chose_dma_mode + if ((raw_cmd->flags & FD_RAW_READ) || + (raw_cmd->flags & FD_RAW_WRITE)) + { + unsigned long flags = claim_dma_lock(); + fd_chose_dma_mode(raw_cmd->kernel_data, + raw_cmd->length); + release_dma_lock(flags); + } +#endif + +#if 0 + access_mode_change_pc9800(); +#endif + if (raw_cmd->flags & (FD_RAW_NEED_SEEK | FD_RAW_NEED_DISK)){ + fdc_specify(); /* must be done here because of hut, hlt ... */ + seek_floppy(); + } else { + if ((raw_cmd->flags & FD_RAW_READ) || + (raw_cmd->flags & FD_RAW_WRITE)) + fdc_specify(); + setup_rw_floppy(); + } +} + +static void floppy_start(void) +{ + reschedule_timeout(current_reqD, "floppy start", 0); + + scandrives(); +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("setting NEWCHANGE in floppy_start\n"); + } +#endif + SETF(FD_DISK_NEWCHANGE); + floppy_ready(); +} + +/* + * ======================================================================== + * here ends the bottom half. Exported routines are: + * floppy_start, floppy_off, floppy_ready, lock_fdc, unlock_fdc, set_fdc, + * start_motor, reset_fdc, reset_fdc_info, interpret_errors. + * Initialization also uses output_byte, result, set_dor, floppy_interrupt + * and set_dor. + * ======================================================================== + */ +/* + * General purpose continuations. + * ============================== + */ + +static void do_wakeup(void) +{ + reschedule_timeout(MAXTIMEOUT, "do wakeup", 0); + cont = 0; + command_status += 2; + wake_up(&command_done); +} + +static struct cont_t wakeup_cont={ + empty, + do_wakeup, + empty, + (done_f)empty +}; + + +static struct cont_t intr_cont={ + empty, + process_fd_request, + empty, + (done_f) empty +}; + +static int wait_til_done(void (*handler)(void), int interruptible) +{ + int ret; + + schedule_bh((void *)(void *)handler); + + if (command_status < 2 && NO_SIGNAL) { + DECLARE_WAITQUEUE(wait, current); + + add_wait_queue(&command_done, &wait); + for (;;) { + set_current_state(interruptible? + TASK_INTERRUPTIBLE: + TASK_UNINTERRUPTIBLE); + + if (command_status >= 2 || !NO_SIGNAL) + break; + + is_alive("wait_til_done"); + + schedule(); + } + + set_current_state(TASK_RUNNING); + remove_wait_queue(&command_done, &wait); + } + + if (command_status < 2){ + cancel_activity(); + cont = &intr_cont; + reset_fdc(); + return -EINTR; + } + +#ifdef PC9800_DEBUG_FLOPPY + if (command_status != FD_COMMAND_OKAY) + printk("floppy check: wait_til_done out:%d\n", command_status); +#endif + if (FDCS->reset) + command_status = FD_COMMAND_ERROR; + if (command_status == FD_COMMAND_OKAY) + ret=0; + else + ret=-EIO; + command_status = FD_COMMAND_NONE; + return ret; +} + +static void generic_done(int result) +{ + command_status = result; + cont = &wakeup_cont; +} + +static void generic_success(void) +{ + cont->done(1); +} + +static void generic_failure(void) +{ + cont->done(0); +} + +static void success_and_wakeup(void) +{ + generic_success(); + cont->redo(); +} + + +/* + * formatting and rw support. + * ========================== + */ + +static int next_valid_format(void) +{ + int probed_format; + + probed_format = DRS->probed_format; + while(1){ + if (probed_format >= 8 || + !DP->autodetect[probed_format]){ + DRS->probed_format = 0; + return 1; + } + if (floppy_type[DP->autodetect[probed_format]].sect){ + DRS->probed_format = probed_format; + return 0; + } + probed_format++; + } +} + +static void bad_flp_intr(void) +{ + if (probing){ + DRS->probed_format++; + if (!next_valid_format()) + return; + } + (*errors)++; + INFBOUND(DRWE->badness, *errors); + if (*errors > DP->max_errors.abort) + cont->done(0); + if (*errors > DP->max_errors.reset) + FDCS->reset = 1; + else if (*errors > DP->max_errors.recal) + DRS->track = NEED_2_RECAL; +} + +static void set_floppy(int drive) +{ + int type = ITYPE(UDRS->fd_device); + if (type) { + auto_detect_mode = 0; + _floppy = floppy_type + type; + } else if (auto_detect_mode == 0) { + auto_detect_mode = 1; + retry_auto_detect = 0; + _floppy = current_type[drive]; + } +#ifdef PC9800_DEBUG_FLOPPY2 + printk("set_floppy: set floppy type=%d\n", (int)(_floppy - floppy_type)); +#endif +} + +/* + * formatting support. + * =================== + */ +static void format_interrupt(void) +{ + switch (interpret_errors()){ + case 1: + cont->error(); + case 2: + break; + case 0: + cont->done(1); + } + cont->redo(); +} + +#define CODE2SIZE (ssize = ((1 << SIZECODE) + 3) >> 2) +#define FM_MODE(x,y) ((y) & ~(((x)->rate & 0x80) >>1)) +#define CT(x) ((x) | 0xc0) +static void setup_format_params(int track) +{ + struct fparm { + unsigned char track,head,sect,size; + } *here = (struct fparm *)floppy_track_buffer; + int il,n; + int count,head_shift,track_shift; + + raw_cmd = &default_raw_cmd; + raw_cmd->track = track; + + raw_cmd->flags = FD_RAW_WRITE | FD_RAW_INTR | FD_RAW_SPIN | + FD_RAW_NEED_DISK | FD_RAW_NEED_SEEK; + raw_cmd->rate = _floppy->rate & 0x43; + raw_cmd->cmd_count = NR_F; + COMMAND = FM_MODE(_floppy,FD_FORMAT); + DR_SELECT = UNIT(current_drive) + PH_HEAD(_floppy,format_req.head); + F_SIZECODE = FD_SIZECODE(_floppy); + F_SECT_PER_TRACK = _floppy->sect << 2 >> F_SIZECODE; + F_GAP = _floppy->fmt_gap; + F_FILL = FD_FILL_BYTE; + + raw_cmd->kernel_data = floppy_track_buffer; + raw_cmd->length = 4 * F_SECT_PER_TRACK; + + /* allow for about 30ms for data transport per track */ + head_shift = (F_SECT_PER_TRACK + 5) / 6; + + /* a ``cylinder'' is two tracks plus a little stepping time */ + track_shift = 2 * head_shift + 3; + + /* position of logical sector 1 on this track */ + n = (track_shift * format_req.track + head_shift * format_req.head) + % F_SECT_PER_TRACK; + + /* determine interleave */ + il = 1; + if (_floppy->fmt_gap < 0x22) + il++; + + /* initialize field */ + for (count = 0; count < F_SECT_PER_TRACK; ++count) { + here[count].track = format_req.track; + here[count].head = format_req.head; + here[count].sect = 0; + here[count].size = F_SIZECODE; + } + /* place logical sectors */ + for (count = 1; count <= F_SECT_PER_TRACK; ++count) { + here[n].sect = count; + n = (n+il) % F_SECT_PER_TRACK; + if (here[n].sect) { /* sector busy, find next free sector */ + ++n; + if (n>= F_SECT_PER_TRACK) { + n-=F_SECT_PER_TRACK; + while (here[n].sect) ++n; + } + } + } +} + +static void redo_format(void) +{ + buffer_track = -1; + setup_format_params(format_req.track << STRETCH(_floppy)); + floppy_start(); +#ifdef DEBUGT + debugt("queue format request"); +#endif +} + +static struct cont_t format_cont={ + format_interrupt, + redo_format, + bad_flp_intr, + generic_done }; + +static int do_format(kdev_t device, struct format_descr *tmp_format_req) +{ + int ret; + int drive=DRIVE(device); + + LOCK_FDC(drive,1); + set_floppy(drive); + if (!_floppy || + _floppy->track > DP->tracks || + tmp_format_req->track >= _floppy->track || + tmp_format_req->head >= _floppy->head || + (_floppy->sect << 2) % (1 << FD_SIZECODE(_floppy)) || + !_floppy->fmt_gap) { + process_fd_request(); + return -EINVAL; + } + format_req = *tmp_format_req; + format_errors = 0; + cont = &format_cont; + errors = &format_errors; + IWAIT(redo_format); + process_fd_request(); + return ret; +} + +/* + * Buffer read/write and support + * ============================= + */ + +static inline void end_request(struct request *req, int uptodate) +{ + if (end_that_request_first(req, uptodate, current_count_sectors)) + return; + add_disk_randomness(req->rq_disk); + floppy_off((long)req->rq_disk->private_data); + blkdev_dequeue_request(req); + end_that_request_last(req); + + /* We're done with the request */ + current_req = NULL; +} + + +/* new request_done. Can handle physical sectors which are smaller than a + * logical buffer */ +static void request_done(int uptodate) +{ + struct request_queue *q = &floppy_queue; + struct request *req = current_req; + unsigned long flags; + int block; + + probing = 0; + reschedule_timeout(MAXTIMEOUT, "request done %d", uptodate); + + if (!req) { + printk("floppy.c: no request in request_done\n"); + return; + } + + if (uptodate){ + /* maintain values for invalidation on geometry + * change */ + block = current_count_sectors + req->sector; + INFBOUND(DRS->maxblock, block); + if (block > _floppy->sect) + DRS->maxtrack = 1; + + /* unlock chained buffers */ + spin_lock_irqsave(q->queue_lock, flags); + end_request(req, 1); + spin_unlock_irqrestore(q->queue_lock, flags); + } else { + if (rq_data_dir(req) == WRITE) { + /* record write error information */ + DRWE->write_errors++; + if (DRWE->write_errors == 1) { + DRWE->first_error_sector = req->sector; + DRWE->first_error_generation = DRS->generation; + } + DRWE->last_error_sector = req->sector; + DRWE->last_error_generation = DRS->generation; + } + spin_lock_irqsave(q->queue_lock, flags); + end_request(req, 0); + spin_unlock_irqrestore(q->queue_lock, flags); + } +} + +/* Interrupt handler evaluating the result of the r/w operation */ +static void rw_interrupt(void) +{ + int nr_sectors, ssize, eoc, heads; + + if (R_HEAD >= 2) { + /* some Toshiba floppy controllers occasionnally seem to + * return bogus interrupts after read/write operations, which + * can be recognized by a bad head number (>= 2) */ + return; + } + + if (!DRS->first_read_date) + DRS->first_read_date = jiffies; + + nr_sectors = 0; + CODE2SIZE; + + if (ST1 & ST1_EOC) + eoc = 1; + else + eoc = 0; + + if (COMMAND & 0x80) + heads = 2; + else + heads = 1; + + nr_sectors = (((R_TRACK-TRACK) * heads + + R_HEAD-HEAD) * SECT_PER_TRACK + + R_SECTOR-SECTOR + eoc) << SIZECODE >> 2; + +#ifdef FLOPPY_SANITY_CHECK + if (nr_sectors / ssize > + (in_sector_offset + current_count_sectors + ssize - 1) / ssize) { + DPRINT("long rw: %x instead of %lx\n", + nr_sectors, current_count_sectors); + printk("rs=%d s=%d\n", R_SECTOR, SECTOR); + printk("rh=%d h=%d\n", R_HEAD, HEAD); + printk("rt=%d t=%d\n", R_TRACK, TRACK); + printk("heads=%d eoc=%d\n", heads, eoc); + printk("spt=%d st=%d ss=%d\n", SECT_PER_TRACK, + fsector_t, ssize); + printk("in_sector_offset=%d\n", in_sector_offset); + } +#endif + + nr_sectors -= in_sector_offset; + INFBOUND(nr_sectors,0); + SUPBOUND(current_count_sectors, nr_sectors); + + switch (interpret_errors()){ + case 2: + cont->redo(); + return; + case 1: + if (!current_count_sectors){ + cont->error(); + cont->redo(); + return; + } + break; + case 0: + if (!current_count_sectors){ + cont->redo(); + return; + } + current_type[current_drive] = _floppy; + floppy_sizes[TOMINOR(current_drive) ]= _floppy->size; + break; + } + + if (probing) { + if (DP->flags & FTD_MSG) + DPRINT("Auto-detected floppy type %s in fd%d\n", + _floppy->name,current_drive); + current_type[current_drive] = _floppy; + floppy_sizes[TOMINOR(current_drive)] = _floppy->size; + probing = 0; + } + + if (CT(COMMAND) != FD_READ || + raw_cmd->kernel_data == current_req->buffer){ + /* transfer directly from buffer */ + cont->done(1); + } else if (CT(COMMAND) == FD_READ){ + buffer_track = raw_cmd->track; + buffer_drive = current_drive; + INFBOUND(buffer_max, nr_sectors + fsector_t); + } + cont->redo(); +} + +/* Compute maximal contiguous buffer size. */ +static int buffer_chain_size(void) +{ + struct bio *bio; + struct bio_vec *bv; + int size, i; + char *base; + + base = bio_data(current_req->bio); + size = 0; + + rq_for_each_bio(bio, current_req) { + bio_for_each_segment(bv, bio, i) { + if (page_address(bv->bv_page) + bv->bv_offset != base + size) + break; + + size += bv->bv_len; + } + } + + return size >> 9; +} + +/* Compute the maximal transfer size */ +static int transfer_size(int ssize, int max_sector, int max_size) +{ + SUPBOUND(max_sector, fsector_t + max_size); + + /* alignment */ + max_sector -= (max_sector % _floppy->sect) % ssize; + + /* transfer size, beginning not aligned */ + current_count_sectors = max_sector - fsector_t ; + + return max_sector; +} + +/* + * Move data from/to the track buffer to/from the buffer cache. + */ +static void copy_buffer(int ssize, int max_sector, int max_sector_2) +{ + int remaining; /* number of transferred 512-byte sectors */ + struct bio_vec *bv; + struct bio *bio; + char *buffer, *dma_buffer; + int size, i; + + max_sector = transfer_size(ssize, + minimum(max_sector, max_sector_2), + current_req->nr_sectors); + + if (current_count_sectors <= 0 && CT(COMMAND) == FD_WRITE && + buffer_max > fsector_t + current_req->nr_sectors) + current_count_sectors = minimum(buffer_max - fsector_t, + current_req->nr_sectors); + + remaining = current_count_sectors << 9; +#ifdef FLOPPY_SANITY_CHECK + if ((remaining >> 9) > current_req->nr_sectors && + CT(COMMAND) == FD_WRITE){ + DPRINT("in copy buffer\n"); + printk("current_count_sectors=%ld\n", current_count_sectors); + printk("remaining=%d\n", remaining >> 9); + printk("current_req->nr_sectors=%ld\n",current_req->nr_sectors); + printk("current_req->current_nr_sectors=%u\n", + current_req->current_nr_sectors); + printk("max_sector=%d\n", max_sector); + printk("ssize=%d\n", ssize); + } +#endif + + buffer_max = maximum(max_sector, buffer_max); + + dma_buffer = floppy_track_buffer + ((fsector_t - buffer_min) << 9); + + size = current_req->current_nr_sectors << 9; + + rq_for_each_bio(bio, current_req) { + bio_for_each_segment(bv, bio, i) { + if (!remaining) + break; + + size = bv->bv_len; + SUPBOUND(size, remaining); + + buffer = page_address(bv->bv_page) + bv->bv_offset; +#ifdef FLOPPY_SANITY_CHECK + if (dma_buffer + size > + floppy_track_buffer + (max_buffer_sectors << 10) || + dma_buffer < floppy_track_buffer){ + DPRINT("buffer overrun in copy buffer %d\n", + (int) ((floppy_track_buffer - dma_buffer) >>9)); + printk("fsector_t=%d buffer_min=%d\n", + fsector_t, buffer_min); + printk("current_count_sectors=%ld\n", + current_count_sectors); + if (CT(COMMAND) == FD_READ) + printk("read\n"); + if (CT(COMMAND) == FD_READ) + printk("write\n"); + break; + } + if (((unsigned long)buffer) % 512) + DPRINT("%p buffer not aligned\n", buffer); +#endif + if (CT(COMMAND) == FD_READ) + memcpy(buffer, dma_buffer, size); + else + memcpy(dma_buffer, buffer, size); + + remaining -= size; + dma_buffer += size; + } + } +#ifdef FLOPPY_SANITY_CHECK + if (remaining){ + if (remaining > 0) + max_sector -= remaining >> 9; + DPRINT("weirdness: remaining %d\n", remaining>>9); + } +#endif +} + +#if 0 +static inline int check_dma_crossing(char *start, + unsigned long length, char *message) +{ + if (CROSS_64KB(start, length)) { + printk("DMA xfer crosses 64KB boundary in %s %p-%p\n", + message, start, start+length); + return 1; + } else + return 0; +} +#endif + +/* work around a bug in pseudo DMA + * (on some FDCs) pseudo DMA does not stop when the CPU stops + * sending data. Hence we need a different way to signal the + * transfer length: We use SECT_PER_TRACK. Unfortunately, this + * does not work with MT, hence we can only transfer one head at + * a time + */ +static void virtualdmabug_workaround(void) +{ + int hard_sectors, end_sector; + + if(CT(COMMAND) == FD_WRITE) { + COMMAND &= ~0x80; /* switch off multiple track mode */ + + hard_sectors = raw_cmd->length >> (7 + SIZECODE); + end_sector = SECTOR + hard_sectors - 1; +#ifdef FLOPPY_SANITY_CHECK + if(end_sector > SECT_PER_TRACK) { + printk("too many sectors %d > %d\n", + end_sector, SECT_PER_TRACK); + return; + } +#endif + SECT_PER_TRACK = end_sector; /* make sure SECT_PER_TRACK points + * to end of transfer */ + } +} + +/* + * Formulate a read/write request. + * this routine decides where to load the data (directly to buffer, or to + * tmp floppy area), how much data to load (the size of the buffer, the whole + * track, or a single sector) + * All floppy_track_buffer handling goes in here. If we ever add track buffer + * allocation on the fly, it should be done here. No other part should need + * modification. + */ + +static int make_raw_rw_request(void) +{ + int aligned_sector_t; + int max_sector, max_size, tracksize, ssize; + + if(max_buffer_sectors == 0) { + printk("VFS: Block I/O scheduled on unopened device\n"); + return 0; + } + + set_fdc((long)current_req->rq_disk->private_data); + + raw_cmd = &default_raw_cmd; + raw_cmd->flags = FD_RAW_SPIN | FD_RAW_NEED_DISK | FD_RAW_NEED_DISK | + FD_RAW_NEED_SEEK; + raw_cmd->cmd_count = NR_RW; + if (rq_data_dir(current_req) == READ) { + raw_cmd->flags |= FD_RAW_READ; + COMMAND = FM_MODE(_floppy,FD_READ); + } else if (rq_data_dir(current_req) == WRITE){ + raw_cmd->flags |= FD_RAW_WRITE; + COMMAND = FM_MODE(_floppy,FD_WRITE); + } else { + DPRINT("make_raw_rw_request: unknown command\n"); + return 0; + } + + max_sector = _floppy->sect * _floppy->head; + + TRACK = (int)current_req->sector / max_sector; + fsector_t = (int)current_req->sector % max_sector; + if (_floppy->track && TRACK >= _floppy->track) { + if (current_req->current_nr_sectors & 1) { + current_count_sectors = 1; + return 1; + } else + return 0; + } + HEAD = fsector_t / _floppy->sect; + + if (((_floppy->stretch & FD_SWAPSIDES) || TESTF(FD_NEED_TWADDLE)) && + fsector_t < _floppy->sect) + max_sector = _floppy->sect; + + /* 2M disks have phantom sectors on the first track */ + if ((_floppy->rate & FD_2M) && (!TRACK) && (!HEAD)){ + max_sector = 2 * _floppy->sect / 3; + if (fsector_t >= max_sector){ + current_count_sectors = minimum(_floppy->sect - fsector_t, + current_req->nr_sectors); + return 1; + } + SIZECODE = 2; + } else + SIZECODE = FD_SIZECODE(_floppy); + raw_cmd->rate = _floppy->rate & 0x43; + if ((_floppy->rate & FD_2M) && + (TRACK || HEAD) && + raw_cmd->rate == 2) + raw_cmd->rate = 1; + + if (SIZECODE) + SIZECODE2 = 0xff; + else + SIZECODE2 = 0x80; + raw_cmd->track = TRACK << STRETCH(_floppy); + DR_SELECT = UNIT(current_drive) + PH_HEAD(_floppy,HEAD); + GAP = _floppy->gap; + CODE2SIZE; + SECT_PER_TRACK = _floppy->sect << 2 >> SIZECODE; + SECTOR = ((fsector_t % _floppy->sect) << 2 >> SIZECODE) + 1; + + /* tracksize describes the size which can be filled up with sectors + * of size ssize. + */ + tracksize = _floppy->sect - _floppy->sect % ssize; + if (tracksize < _floppy->sect){ + SECT_PER_TRACK ++; + if (tracksize <= fsector_t % _floppy->sect) + SECTOR--; + + /* if we are beyond tracksize, fill up using smaller sectors */ + while (tracksize <= fsector_t % _floppy->sect){ + while(tracksize + ssize > _floppy->sect){ + SIZECODE--; + ssize >>= 1; + } + SECTOR++; SECT_PER_TRACK ++; + tracksize += ssize; + } + max_sector = HEAD * _floppy->sect + tracksize; + } else if (!TRACK && !HEAD && !(_floppy->rate & FD_2M) && probing) { + max_sector = _floppy->sect; + } else if (!HEAD && CT(COMMAND) == FD_WRITE) { + /* for virtual DMA bug workaround */ + max_sector = _floppy->sect; + } + + in_sector_offset = (fsector_t % _floppy->sect) % ssize; + aligned_sector_t = fsector_t - in_sector_offset; + max_size = current_req->nr_sectors; + if ((raw_cmd->track == buffer_track) && + (current_drive == buffer_drive) && + (fsector_t >= buffer_min) && (fsector_t < buffer_max)) { + /* data already in track buffer */ + if (CT(COMMAND) == FD_READ) { + copy_buffer(1, max_sector, buffer_max); + return 1; + } + } else if (in_sector_offset || current_req->nr_sectors < ssize){ + if (CT(COMMAND) == FD_WRITE){ + if (fsector_t + current_req->nr_sectors > ssize && + fsector_t + current_req->nr_sectors < ssize + ssize) + max_size = ssize + ssize; + else + max_size = ssize; + } + raw_cmd->flags &= ~FD_RAW_WRITE; + raw_cmd->flags |= FD_RAW_READ; + COMMAND = FM_MODE(_floppy,FD_READ); + } else if ((unsigned long)current_req->buffer < MAX_DMA_ADDRESS) { + unsigned long dma_limit; + int direct, indirect; + + indirect= transfer_size(ssize,max_sector,max_buffer_sectors*2) - + fsector_t; + + /* + * Do NOT use minimum() here---MAX_DMA_ADDRESS is 64 bits wide + * on a 64 bit machine! + */ + max_size = buffer_chain_size(); + dma_limit = (MAX_DMA_ADDRESS - ((unsigned long) current_req->buffer)) >> 9; + if ((unsigned long) max_size > dma_limit) { + max_size = dma_limit; + } + /* 64 kb boundaries */ + if (CROSS_64KB(current_req->buffer, max_size << 9)) + max_size = (K_64 - + ((unsigned long)current_req->buffer) % K_64)>>9; + direct = transfer_size(ssize,max_sector,max_size) - fsector_t; + /* + * We try to read tracks, but if we get too many errors, we + * go back to reading just one sector at a time. + * + * This means we should be able to read a sector even if there + * are other bad sectors on this track. + */ + if (!direct || + (indirect * 2 > direct * 3 && + *errors < DP->max_errors.read_track && + /*!TESTF(FD_NEED_TWADDLE) &&*/ + ((!probing || (DP->read_track&(1<probed_format)))))){ + max_size = current_req->nr_sectors; + } else { + raw_cmd->kernel_data = current_req->buffer; + raw_cmd->length = current_count_sectors << 9; + if (raw_cmd->length == 0){ + DPRINT("zero dma transfer attempted from make_raw_request\n"); + DPRINT("indirect=%d direct=%d fsector_t=%d", + indirect, direct, fsector_t); + return 0; + } +/* check_dma_crossing(raw_cmd->kernel_data, + raw_cmd->length, + "end of make_raw_request [1]");*/ + + virtualdmabug_workaround(); + return 2; + } + } + + if (CT(COMMAND) == FD_READ) + max_size = max_sector; /* unbounded */ + + /* claim buffer track if needed */ + if (buffer_track != raw_cmd->track || /* bad track */ + buffer_drive !=current_drive || /* bad drive */ + fsector_t > buffer_max || + fsector_t < buffer_min || + ((CT(COMMAND) == FD_READ || + (!in_sector_offset && current_req->nr_sectors >= ssize))&& + max_sector > 2 * max_buffer_sectors + buffer_min && + max_size + fsector_t > 2 * max_buffer_sectors + buffer_min) + /* not enough space */){ + buffer_track = -1; + buffer_drive = current_drive; + buffer_max = buffer_min = aligned_sector_t; + } + raw_cmd->kernel_data = floppy_track_buffer + + ((aligned_sector_t-buffer_min)<<9); + + if (CT(COMMAND) == FD_WRITE){ + /* copy write buffer to track buffer. + * if we get here, we know that the write + * is either aligned or the data already in the buffer + * (buffer will be overwritten) */ +#ifdef FLOPPY_SANITY_CHECK + if (in_sector_offset && buffer_track == -1) + DPRINT("internal error offset !=0 on write\n"); +#endif + buffer_track = raw_cmd->track; + buffer_drive = current_drive; + copy_buffer(ssize, max_sector, 2*max_buffer_sectors+buffer_min); + } else + transfer_size(ssize, max_sector, + 2*max_buffer_sectors+buffer_min-aligned_sector_t); + + /* round up current_count_sectors to get dma xfer size */ + raw_cmd->length = in_sector_offset+current_count_sectors; + raw_cmd->length = ((raw_cmd->length -1)|(ssize-1))+1; + raw_cmd->length <<= 9; +#ifdef FLOPPY_SANITY_CHECK + /*check_dma_crossing(raw_cmd->kernel_data, raw_cmd->length, + "end of make_raw_request");*/ + if ((raw_cmd->length < current_count_sectors << 9) || + (raw_cmd->kernel_data != current_req->buffer && + CT(COMMAND) == FD_WRITE && + (aligned_sector_t + (raw_cmd->length >> 9) > buffer_max || + aligned_sector_t < buffer_min)) || + raw_cmd->length % (128 << SIZECODE) || + raw_cmd->length <= 0 || current_count_sectors <= 0){ + DPRINT("fractionary current count b=%lx s=%lx\n", + raw_cmd->length, current_count_sectors); + if (raw_cmd->kernel_data != current_req->buffer) + printk("addr=%d, length=%ld\n", + (int) ((raw_cmd->kernel_data - + floppy_track_buffer) >> 9), + current_count_sectors); + printk("st=%d ast=%d mse=%d msi=%d\n", + fsector_t, aligned_sector_t, max_sector, max_size); + printk("ssize=%x SIZECODE=%d\n", ssize, SIZECODE); + printk("command=%x SECTOR=%d HEAD=%d, TRACK=%d\n", + COMMAND, SECTOR, HEAD, TRACK); + printk("buffer drive=%d\n", buffer_drive); + printk("buffer track=%d\n", buffer_track); + printk("buffer_min=%d\n", buffer_min); + printk("buffer_max=%d\n", buffer_max); + return 0; + } + + if (raw_cmd->kernel_data != current_req->buffer){ + if (raw_cmd->kernel_data < floppy_track_buffer || + current_count_sectors < 0 || + raw_cmd->length < 0 || + raw_cmd->kernel_data + raw_cmd->length > + floppy_track_buffer + (max_buffer_sectors << 10)){ + DPRINT("buffer overrun in schedule dma\n"); + printk("fsector_t=%d buffer_min=%d current_count=%ld\n", + fsector_t, buffer_min, + raw_cmd->length >> 9); + printk("current_count_sectors=%ld\n", + current_count_sectors); + if (CT(COMMAND) == FD_READ) + printk("read\n"); + if (CT(COMMAND) == FD_READ) + printk("write\n"); + return 0; + } + } else if (raw_cmd->length > current_req->nr_sectors << 9 || + current_count_sectors > current_req->nr_sectors){ + DPRINT("buffer overrun in direct transfer\n"); + return 0; + } else if (raw_cmd->length < current_count_sectors << 9){ + DPRINT("more sectors than bytes\n"); + printk("bytes=%ld\n", raw_cmd->length >> 9); + printk("sectors=%ld\n", current_count_sectors); + } + if (raw_cmd->length == 0){ + DPRINT("zero dma transfer attempted from make_raw_request\n"); + return 0; + } +#endif + + virtualdmabug_workaround(); + return 2; +} + +static void redo_fd_request(void) +{ +#define REPEAT {request_done(0); continue; } + int drive; + int tmp; + + lastredo = jiffies; + if (current_drive < N_DRIVE) + floppy_off(current_drive); + + for (;;) { + if (!current_req) { + struct request *req; + + spin_lock_irq(floppy_queue.queue_lock); + req = elv_next_request(&floppy_queue); + spin_unlock_irq(floppy_queue.queue_lock); + if (!req) { + do_floppy = NULL; + unlock_fdc(); + return; + } + current_req = req; + } + drive = (long)current_req->rq_disk->private_data; + set_fdc(drive); + reschedule_timeout(current_reqD, "redo fd request", 0); + + set_floppy(drive); + raw_cmd = & default_raw_cmd; + raw_cmd->flags = 0; + if (start_motor(redo_fd_request)) return; + disk_change(current_drive); + if (test_bit(current_drive, &fake_change) || + TESTF(FD_DISK_CHANGED)){ + DPRINT("disk absent or changed during operation\n"); + REPEAT; + } + if (!_floppy) { /* Autodetection */ + if (!probing){ + DRS->probed_format = 0; + if (next_valid_format()){ + DPRINT("no autodetectable formats\n"); + _floppy = NULL; + REPEAT; + } + } + probing = 1; + _floppy = floppy_type+DP->autodetect[DRS->probed_format]; + } else + probing = 0; + errors = & (current_req->errors); + tmp = make_raw_rw_request(); + if (tmp < 2){ + request_done(tmp); + continue; + } + + if (TESTF(FD_NEED_TWADDLE)) + twaddle(); + schedule_bh( (void *)(void *) floppy_start); +#ifdef DEBUGT + debugt("queue fd request"); +#endif + return; + } +#undef REPEAT +} + +static struct cont_t rw_cont={ + rw_interrupt, + redo_fd_request, + bad_flp_intr, + request_done }; + +static void process_fd_request(void) +{ + cont = &rw_cont; + schedule_bh( (void *)(void *) redo_fd_request); +} + +static void do_fd_request(request_queue_t * q) +{ + if(max_buffer_sectors == 0) { + printk("VFS: do_fd_request called on non-open device\n"); + return; + } + + if (usage_count == 0) { + printk("warning: usage count=0, current_req=%p exiting\n", current_req); + printk("sect=%ld flags=%lx\n", (long)current_req->sector, current_req->flags); + return; + } + if (fdc_busy){ + /* fdc busy, this new request will be treated when the + current one is done */ + is_alive("do fd request, old request running"); + return; + } + lock_fdc(MAXTIMEOUT,0); + process_fd_request(); + is_alive("do fd request"); +} + +static struct cont_t poll_cont={ + success_and_wakeup, + floppy_ready, + generic_failure, + generic_done }; + +static int poll_drive(int interruptible, int flag) +{ + int ret; + /* no auto-sense, just clear dcl */ + raw_cmd = &default_raw_cmd; + raw_cmd->flags= flag; + raw_cmd->track=0; + raw_cmd->cmd_count=0; + cont = &poll_cont; +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("setting NEWCHANGE in poll_drive\n"); + } +#endif + SETF(FD_DISK_NEWCHANGE); + WAIT(floppy_ready); + return ret; +} + +/* + * User triggered reset + * ==================== + */ + +static void reset_intr(void) +{ + printk("weird, reset interrupt called\n"); +} + +static struct cont_t reset_cont={ + reset_intr, + success_and_wakeup, + generic_failure, + generic_done }; + +static int user_reset_fdc(int drive, int arg, int interruptible) +{ + int ret; + + ret=0; + LOCK_FDC(drive,interruptible); + if (arg == FD_RESET_ALWAYS) + FDCS->reset=1; + if (FDCS->reset){ + cont = &reset_cont; + WAIT(reset_fdc); + } + process_fd_request(); + return ret; +} + +/* + * Misc Ioctl's and support + * ======================== + */ +static inline int fd_copyout(void *param, const void *address, unsigned long size) +{ + return copy_to_user(param,address, size) ? -EFAULT : 0; +} + +static inline int fd_copyin(void *param, void *address, unsigned long size) +{ + return copy_from_user(address, param, size) ? -EFAULT : 0; +} + +#define _COPYOUT(x) (copy_to_user((void *)param, &(x), sizeof(x)) ? -EFAULT : 0) +#define _COPYIN(x) (copy_from_user(&(x), (void *)param, sizeof(x)) ? -EFAULT : 0) + +#define COPYOUT(x) ECALL(_COPYOUT(x)) +#define COPYIN(x) ECALL(_COPYIN(x)) + +static inline const char *drive_name(int type, int drive) +{ + struct floppy_struct *floppy; + + if (type) + floppy = floppy_type + type; + else { + if (UDP->native_format) + floppy = floppy_type + UDP->native_format; + else + return "(null)"; + } + if (floppy->name) + return floppy->name; + else + return "(null)"; +} + + +/* raw commands */ +static void raw_cmd_done(int flag) +{ + int i; + + if (!flag) { + raw_cmd->flags |= FD_RAW_FAILURE; + raw_cmd->flags |= FD_RAW_HARDFAILURE; + } else { + raw_cmd->reply_count = inr; + if (raw_cmd->reply_count > MAX_REPLIES) + raw_cmd->reply_count=0; + for (i=0; i< raw_cmd->reply_count; i++) + raw_cmd->reply[i] = reply_buffer[i]; + + if (raw_cmd->flags & (FD_RAW_READ | FD_RAW_WRITE)) + { + unsigned long flags; + flags=claim_dma_lock(); + raw_cmd->length = fd_get_dma_residue(); + release_dma_lock(flags); + } + + if ((raw_cmd->flags & FD_RAW_SOFTFAILURE) && + (!raw_cmd->reply_count || (raw_cmd->reply[0] & 0xc0))) + raw_cmd->flags |= FD_RAW_FAILURE; + + if (disk_change(current_drive)) + raw_cmd->flags |= FD_RAW_DISK_CHANGE; + else + raw_cmd->flags &= ~FD_RAW_DISK_CHANGE; + if (raw_cmd->flags & FD_RAW_NO_MOTOR_AFTER) + motor_off_callback(current_drive); + + if (raw_cmd->next && + (!(raw_cmd->flags & FD_RAW_FAILURE) || + !(raw_cmd->flags & FD_RAW_STOP_IF_FAILURE)) && + ((raw_cmd->flags & FD_RAW_FAILURE) || + !(raw_cmd->flags &FD_RAW_STOP_IF_SUCCESS))) { + raw_cmd = raw_cmd->next; + return; + } + } + generic_done(flag); +} + + +static struct cont_t raw_cmd_cont={ + success_and_wakeup, + floppy_start, + generic_failure, + raw_cmd_done +}; + +static inline int raw_cmd_copyout(int cmd, char *param, + struct floppy_raw_cmd *ptr) +{ + int ret; + + while(ptr) { + COPYOUT(*ptr); + param += sizeof(struct floppy_raw_cmd); + if ((ptr->flags & FD_RAW_READ) && ptr->buffer_length){ + if (ptr->length>=0 && ptr->length<=ptr->buffer_length) + ECALL(fd_copyout(ptr->data, + ptr->kernel_data, + ptr->buffer_length - + ptr->length)); + } + ptr = ptr->next; + } + return 0; +} + + +static void raw_cmd_free(struct floppy_raw_cmd **ptr) +{ + struct floppy_raw_cmd *next,*this; + + this = *ptr; + *ptr = 0; + while(this) { + if (this->buffer_length) { + fd_dma_mem_free((unsigned long)this->kernel_data, + this->buffer_length); + this->buffer_length = 0; + } + next = this->next; + kfree(this); + this = next; + } +} + + +static inline int raw_cmd_copyin(int cmd, char *param, + struct floppy_raw_cmd **rcmd) +{ + struct floppy_raw_cmd *ptr; + int ret; + int i; + + *rcmd = 0; + while(1) { + ptr = (struct floppy_raw_cmd *) + kmalloc(sizeof(struct floppy_raw_cmd), GFP_USER); + if (!ptr) + return -ENOMEM; + *rcmd = ptr; + COPYIN(*ptr); + ptr->next = 0; + ptr->buffer_length = 0; + param += sizeof(struct floppy_raw_cmd); + if (ptr->cmd_count > 33) + /* the command may now also take up the space + * initially intended for the reply & the + * reply count. Needed for long 82078 commands + * such as RESTORE, which takes ... 17 command + * bytes. Murphy's law #137: When you reserve + * 16 bytes for a structure, you'll one day + * discover that you really need 17... + */ + return -EINVAL; + + for (i=0; i< 16; i++) + ptr->reply[i] = 0; + ptr->resultcode = 0; + ptr->kernel_data = 0; + + if (ptr->flags & (FD_RAW_READ | FD_RAW_WRITE)) { + if (ptr->length <= 0) + return -EINVAL; + ptr->kernel_data =(char*)fd_dma_mem_alloc(ptr->length); + fallback_on_nodma_alloc(&ptr->kernel_data, + ptr->length); + if (!ptr->kernel_data) + return -ENOMEM; + ptr->buffer_length = ptr->length; + } + if (ptr->flags & FD_RAW_WRITE) + ECALL(fd_copyin(ptr->data, ptr->kernel_data, + ptr->length)); + rcmd = & (ptr->next); + if (!(ptr->flags & FD_RAW_MORE)) + return 0; + ptr->rate &= 0x43; + } +} + + +static int raw_cmd_ioctl(int cmd, void *param) +{ + int drive, ret, ret2; + struct floppy_raw_cmd *my_raw_cmd; + + if (FDCS->rawcmd <= 1) + FDCS->rawcmd = 1; + for (drive= 0; drive < N_DRIVE; drive++){ + if (FDC(drive) != fdc) + continue; + if (drive == current_drive){ + if (UDRS->fd_ref > 1){ + FDCS->rawcmd = 2; + break; + } + } else if (UDRS->fd_ref){ + FDCS->rawcmd = 2; + break; + } + } + + if (FDCS->reset) + return -EIO; + + ret = raw_cmd_copyin(cmd, param, &my_raw_cmd); + if (ret) { + raw_cmd_free(&my_raw_cmd); + return ret; + } + + raw_cmd = my_raw_cmd; + cont = &raw_cmd_cont; + ret=wait_til_done(floppy_start,1); +#ifdef DCL_DEBUG + if (DP->flags & FD_DEBUG){ + DPRINT("calling disk change from raw_cmd ioctl\n"); + } +#endif + + if (ret != -EINTR && FDCS->reset) + ret = -EIO; + + DRS->track = NO_TRACK; + + ret2 = raw_cmd_copyout(cmd, param, my_raw_cmd); + if (!ret) + ret = ret2; + raw_cmd_free(&my_raw_cmd); + return ret; +} + +static int invalidate_drive(struct block_device *bdev) +{ + /* invalidate the buffer track to force a reread */ + set_bit((long)bdev->bd_disk->private_data, &fake_change); + process_fd_request(); + check_disk_change(bdev); + return 0; +} + + +static inline void clear_write_error(int drive) +{ + CLEARSTRUCT(UDRWE); +} + +static inline int set_geometry(unsigned int cmd, struct floppy_struct *g, + int drive, int type, struct block_device *bdev) +{ + int cnt; + + /* sanity checking for parameters.*/ + if (g->sect <= 0 || + g->head <= 0 || + g->track <= 0 || + g->track > UDP->tracks>>STRETCH(g) || + /* check if reserved bits are set */ + (g->stretch&~(FD_STRETCH|FD_SWAPSIDES)) != 0) + return -EINVAL; + if (type){ + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + LOCK_FDC(drive,1); + for (cnt = 0; cnt < N_DRIVE; cnt++){ + if (ITYPE(drive_state[cnt].fd_device) == type && + drive_state[cnt].fd_ref) + set_bit(drive, &fake_change); + } + floppy_type[type] = *g; + floppy_type[type].name="user format"; + for (cnt = type << 2; cnt < (type << 2) + 4; cnt++) + floppy_sizes[cnt]= floppy_sizes[cnt+0x80]= + floppy_type[type].size+1; + process_fd_request(); + for (cnt = 0; cnt < N_DRIVE; cnt++){ + if (ITYPE(drive_state[cnt].fd_device) == type && + drive_state[cnt].fd_ref) + __check_disk_change( + MKDEV(FLOPPY_MAJOR, + drive_state[cnt].fd_device)); + } + } else { + LOCK_FDC(drive,1); + if (cmd != FDDEFPRM) + /* notice a disk change immediately, else + * we lose our settings immediately*/ + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + user_params[drive] = *g; + if (buffer_drive == drive) + SUPBOUND(buffer_max, user_params[drive].sect); + current_type[drive] = &user_params[drive]; + floppy_sizes[drive] = user_params[drive].size; + if (cmd == FDDEFPRM) + DRS->keep_data = -1; + else + DRS->keep_data = 1; + /* invalidation. Invalidate only when needed, i.e. + * when there are already sectors in the buffer cache + * whose number will change. This is useful, because + * mtools often changes the geometry of the disk after + * looking at the boot block */ + if (DRS->maxblock > user_params[drive].sect || DRS->maxtrack) + invalidate_drive(bdev); + else + process_fd_request(); + } + return 0; +} + +/* handle obsolete ioctl's */ +static int ioctl_table[]= { + FDCLRPRM, + FDSETPRM, + FDDEFPRM, + FDGETPRM, + FDMSGON, + FDMSGOFF, + FDFMTBEG, + FDFMTTRK, + FDFMTEND, + FDSETEMSGTRESH, + FDFLUSH, + FDSETMAXERRS, + FDGETMAXERRS, + FDGETDRVTYP, + FDSETDRVPRM, + FDGETDRVPRM, + FDGETDRVSTAT, + FDPOLLDRVSTAT, + FDRESET, + FDGETFDCSTAT, + FDWERRORCLR, + FDWERRORGET, + FDRAWCMD, + FDEJECT, + FDTWADDLE +}; + +static inline int normalize_ioctl(int *cmd, int *size) +{ + int i; + + for (i=0; i < ARRAY_SIZE(ioctl_table); i++) { + if ((*cmd & 0xffff) == (ioctl_table[i] & 0xffff)){ + *size = _IOC_SIZE(*cmd); + *cmd = ioctl_table[i]; + if (*size > _IOC_SIZE(*cmd)) { + printk("ioctl not yet supported\n"); + return -EFAULT; + } + return 0; + } + } + return -EINVAL; +} + +static int get_floppy_geometry(int drive, int type, struct floppy_struct **g) +{ + if (type) + *g = &floppy_type[type]; + else { + LOCK_FDC(drive,0); + CALL(poll_drive(0,0)); + process_fd_request(); + *g = current_type[drive]; + } + if (!*g) + return -ENODEV; + return 0; +} + +static int fd_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, + unsigned long param) +{ +#define FD_IOCTL_ALLOWED ((filp) && (filp)->private_data) +#define OUT(c,x) case c: outparam = (const char *) (x); break +#define IN(c,x,tag) case c: *(x) = inparam. tag ; return 0 + + int i,drive,type; + kdev_t device; + int ret; + int size; + union inparam { + struct floppy_struct g; /* geometry */ + struct format_descr f; + struct floppy_max_errors max_errors; + struct floppy_drive_params dp; + } inparam; /* parameters coming from user space */ + const char *outparam; /* parameters passed back to user space */ + + device = inode->i_rdev; + type = TYPE(device); + drive = DRIVE(device); + + /* convert compatibility eject ioctls into floppy eject ioctl. + * We do this in order to provide a means to eject floppy disks before + * installing the new fdutils package */ + if (cmd == CDROMEJECT || /* CD-ROM eject */ + cmd == 0x6470 /* SunOS floppy eject */) { + DPRINT("obsolete eject ioctl\n"); + DPRINT("please use floppycontrol --eject\n"); + cmd = FDEJECT; + } + + /* generic block device ioctls */ + switch(cmd) { + /* the following have been inspired by the corresponding + * code for other block devices. */ + struct floppy_struct *g; + case HDIO_GETGEO: + { + struct hd_geometry loc; + ECALL(get_floppy_geometry(drive, type, &g)); + loc.heads = g->head; + loc.sectors = g->sect; + loc.cylinders = g->track; + loc.start = 0; + return _COPYOUT(loc); + } + } + + /* convert the old style command into a new style command */ + if ((cmd & 0xff00) == 0x0200) { + ECALL(normalize_ioctl(&cmd, &size)); + } else + return -EINVAL; + + /* permission checks */ + if (((cmd & 0x40) && !FD_IOCTL_ALLOWED) || + ((cmd & 0x80) && !capable(CAP_SYS_ADMIN))) + return -EPERM; + + /* copyin */ + CLEARSTRUCT(&inparam); + if (_IOC_DIR(cmd) & _IOC_WRITE) + ECALL(fd_copyin((void *)param, &inparam, size)) + + switch (cmd) { + case FDEJECT: + if (UDRS->fd_ref != 1) + /* somebody else has this drive open */ + return -EBUSY; + LOCK_FDC(drive,1); + + /* do the actual eject. Fails on + * non-Sparc architectures */ + ret=fd_eject(UNIT(drive)); + + USETF(FD_DISK_CHANGED); + USETF(FD_VERIFY); + process_fd_request(); + return ret; + case FDCLRPRM: + LOCK_FDC(drive,1); + current_type[drive] = NULL; + floppy_sizes[drive] = MAX_DISK_SIZE << 1; + UDRS->keep_data = 0; + return invalidate_drive(inode->i_bdev); + case FDSETPRM: + case FDDEFPRM: + return set_geometry(cmd, & inparam.g, + drive, type, inode->i_bdev); + case FDGETPRM: + ECALL(get_floppy_geometry(drive, type, + (struct floppy_struct**) + &outparam)); + break; + + case FDMSGON: + UDP->flags |= FTD_MSG; + return 0; + case FDMSGOFF: + UDP->flags &= ~FTD_MSG; + return 0; + + case FDFMTBEG: + LOCK_FDC(drive,1); + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + ret = UDRS->flags; + if (ret & FD_VERIFY) { + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + ret = UDRS->flags; + } + + if (ret & FD_VERIFY) { + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + ret = UDRS->flags; + } + + if (ret & FD_VERIFY) { + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + ret = UDRS->flags; + } + + if (ret & FD_VERIFY) { + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + ret = UDRS->flags; + } + + if(ret & FD_VERIFY){ + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + ret = UDRS->flags; + } + process_fd_request(); + if (ret & FD_VERIFY) + return -ENODEV; + if (!(ret & FD_DISK_WRITABLE)) + return -EROFS; + return 0; + case FDFMTTRK: + if (UDRS->fd_ref != 1) + return -EBUSY; + return do_format(device, &inparam.f); + case FDFMTEND: + case FDFLUSH: + LOCK_FDC(drive,1); + return invalidate_drive(inode->i_bdev); + + case FDSETEMSGTRESH: + UDP->max_errors.reporting = + (unsigned short) (param & 0x0f); + return 0; + OUT(FDGETMAXERRS, &UDP->max_errors); + IN(FDSETMAXERRS, &UDP->max_errors, max_errors); + + case FDGETDRVTYP: + outparam = drive_name(type,drive); + SUPBOUND(size,strlen(outparam)+1); + break; + + IN(FDSETDRVPRM, UDP, dp); + OUT(FDGETDRVPRM, UDP); + + case FDPOLLDRVSTAT: + LOCK_FDC(drive,1); + CALL(poll_drive(1, FD_RAW_NEED_DISK)); + process_fd_request(); + /* fall through */ + OUT(FDGETDRVSTAT, UDRS); + + case FDRESET: + return user_reset_fdc(drive, (int)param, 1); + + OUT(FDGETFDCSTAT,UFDCS); + + case FDWERRORCLR: + CLEARSTRUCT(UDRWE); + return 0; + OUT(FDWERRORGET,UDRWE); + + case FDRAWCMD: + if (type) + return -EINVAL; + LOCK_FDC(drive,1); + set_floppy(drive); + CALL(i = raw_cmd_ioctl(cmd,(void *) param)); + process_fd_request(); + return i; + + case FDTWADDLE: + LOCK_FDC(drive,1); + twaddle(); + process_fd_request(); + return 0; + + default: + return -EINVAL; + } + + if (_IOC_DIR(cmd) & _IOC_READ) + return fd_copyout((void *)param, outparam, size); + else + return 0; +#undef OUT +#undef IN +} + +static void __init config_types(void) +{ + int first=1; + int drive; + extern struct fd_info { + unsigned char dummy[4 * 6]; + unsigned char fd_types[8]; + } drive_info; + + for (drive = 0; drive < 4; drive++) + UDP->cmos = drive_info.fd_types[drive]; + + /* XXX */ + /* additional physical CMOS drive detection should go here */ + + for (drive=0; drive < N_DRIVE; drive++){ + unsigned int type = UDP->cmos; + struct floppy_drive_params *params; + const char *name = NULL; + static char temparea[32]; + + if (type < NUMBER(default_drive_params)) { + params = &default_drive_params[type].params; + if (type) { + name = default_drive_params[type].name; + allowed_drive_mask |= 1 << drive; + } + else + allowed_drive_mask &= ~(1 << drive); + } else { + params = &default_drive_params[0].params; + sprintf(temparea, "unknown type %d (usb?)", type); + name = temparea; + } + if (name) { + const char * prepend = ","; + if (first) { + prepend = KERN_INFO "Floppy drive(s):"; + first = 0; + } + printk("%s fd%d is %s", prepend, drive, name); + register_devfs_entries (drive); + } + *UDP = *params; + } + if (!first) + printk("\n"); +} + +static int floppy_release(struct inode * inode, struct file * filp) +{ + int drive = DRIVE(inode->i_rdev); + + if (UDRS->fd_ref < 0) + UDRS->fd_ref=0; + else if (!UDRS->fd_ref--) { + DPRINT("floppy_release with fd_ref == 0"); + UDRS->fd_ref = 0; + } + floppy_release_irq_and_dma(); + return 0; +} + +/* + * floppy_open check for aliasing (/dev/fd0 can be the same as + * /dev/PS0 etc), and disallows simultaneous access to the same + * drive with different device numbers. + */ +#define RETERR(x) do{floppy_release(inode,filp); return -(x);}while(0) + +static int floppy_open(struct inode * inode, struct file * filp) +{ + int drive; + int old_dev; + int try; + char *tmp; + +#ifdef PC9800_DEBUG_FLOPPY + printk("floppy open: start\n"); +#endif + filp->private_data = (void*) 0; + + drive = DRIVE(inode->i_rdev); +#ifdef PC9800_DEBUG_FLOPPY + printk("floppy open: drive=%d, current_drive=%d, UDP->cmos=%d\n" + "floppy open: FDCS={spec1=%d, spec2=%d, dtr=%d, version=%d, dor=%d, address=%lu}\n", + drive, current_drive, UDP->cmos, FDCS->spec1, FDCS->spec2, + FDCS->dtr, FDCS->version, FDCS->dor, FDCS->address); + if (_floppy) { + printk("floppy open: _floppy={size=%d, sect=%d, head=%d, track=%d, spec1=%d}\n", + _floppy->size, _floppy->sect, _floppy->head, + _floppy->track, _floppy->spec1); + } else { + printk("floppy open: _floppy=NULL\n"); + } +#endif /* PC9800_DEBUG_FLOPPY */ + + if (drive >= N_DRIVE || + !(allowed_drive_mask & (1 << drive)) || + fdc_state[FDC(drive)].version == FDC_NONE) + return -ENXIO; + + if (TYPE(inode->i_rdev) >= NUMBER(floppy_type)) + return -ENXIO; + old_dev = UDRS->fd_device; + if (UDRS->fd_ref && old_dev != minor(inode->i_rdev)) + return -EBUSY; + + if (!UDRS->fd_ref && (UDP->flags & FD_BROKEN_DCL)){ + USETF(FD_DISK_CHANGED); + USETF(FD_VERIFY); + } + + if (UDRS->fd_ref == -1 || + (UDRS->fd_ref && (filp->f_flags & O_EXCL))) + return -EBUSY; + + if (floppy_grab_irq_and_dma()) + return -EBUSY; + + if (filp->f_flags & O_EXCL) + UDRS->fd_ref = -1; + else + UDRS->fd_ref++; + + if (!floppy_track_buffer){ + /* if opening an ED drive, reserve a big buffer, + * else reserve a small one */ + if ((UDP->cmos == 6) || (UDP->cmos == 5)) + try = 64; /* Only 48 actually useful */ + else + try = 32; /* Only 24 actually useful */ + + tmp=(char *)fd_dma_mem_alloc(1024 * try); + if (!tmp && !floppy_track_buffer) { + try >>= 1; /* buffer only one side */ + INFBOUND(try, 16); + tmp= (char *)fd_dma_mem_alloc(1024*try); + } + if (!tmp && !floppy_track_buffer) { + fallback_on_nodma_alloc(&tmp, 2048 * try); + } + if (!tmp && !floppy_track_buffer) { + DPRINT("Unable to allocate DMA memory\n"); + RETERR(ENXIO); + } + if (floppy_track_buffer) { + if (tmp) + fd_dma_mem_free((unsigned long)tmp,try*1024); + } else { + buffer_min = buffer_max = -1; + floppy_track_buffer = tmp; + max_buffer_sectors = try; + } + } + + UDRS->fd_device = minor(inode->i_rdev); + set_capacity(disks[drive], floppy_sizes[minor(inode->i_rdev)]); + if (old_dev != -1 && old_dev != minor(inode->i_rdev)) { + if (buffer_drive == drive) + buffer_track = -1; + /* umm, invalidate_buffers() in ->open?? --hch */ + invalidate_buffers(mk_kdev(FLOPPY_MAJOR,old_dev)); + } + +#ifdef PC9800_DEBUG_FLOPPY + printk("floppy open: floppy.c:%d passed\n", __LINE__); +#endif + + + /* Allow ioctls if we have write-permissions even if read-only open. + * Needed so that programs such as fdrawcmd still can work on write + * protected disks */ + if ((filp->f_mode & 2) || + (inode->i_sb && (permission(inode,2) == 0))) + filp->private_data = (void*) 8; + + if (UFDCS->rawcmd == 1) + UFDCS->rawcmd = 2; + +#ifdef PC9800_DEBUG_FLOPPY + printk("floppy open: floppy.c:%d passed\n", __LINE__); +#endif + + if (filp->f_flags & O_NDELAY) + return 0; + if (filp->f_mode & 3) { + UDRS->last_checked = 0; + check_disk_change(inode->i_bdev); + if (UTESTF(FD_DISK_CHANGED)) + RETERR(ENXIO); + } + if ((filp->f_mode & 2) && !(UTESTF(FD_DISK_WRITABLE))) + RETERR(EROFS); +#ifdef PC9800_DEBUG_FLOPPY + printk("floppy open: end normally\n"); +#endif + + return 0; +#undef RETERR +} + +/* + * Check if the disk has been changed or if a change has been faked. + */ +static int check_floppy_change(struct gendisk *disk) +{ + int drive = (long)disk->private_data; + +#ifdef PC9800_DEBUG_FLOPPY + printk("check_floppy_change: MINOR=%d\n", minor(dev)); +#endif + + if (UTESTF(FD_DISK_CHANGED) || UTESTF(FD_VERIFY)) + return 1; + + if (UDP->checkfreq < (int)(jiffies - UDRS->last_checked)) { + if(floppy_grab_irq_and_dma()) { + return 1; + } + + lock_fdc(drive,0); + poll_drive(0,0); + process_fd_request(); + floppy_release_irq_and_dma(); + } + + if (UTESTF(FD_DISK_CHANGED) || + UTESTF(FD_VERIFY) || + test_bit(drive, &fake_change) || + (!ITYPE(UDRS->fd_device) && !current_type[drive])) + return 1; + return 0; +} + +/* + * This implements "read block 0" for floppy_revalidate(). + * Needed for format autodetection, checking whether there is + * a disk in the drive, and whether that disk is writable. + */ + +static int floppy_rb0_complete(struct bio *bio, unsigned int bytes_done, int err) +{ + if (bio->bi_size) + return 1; + + complete((struct completion*)bio->bi_private); + return 0; +} + +static int __floppy_read_block_0(struct block_device *bdev) +{ + struct bio bio; + struct bio_vec bio_vec; + struct completion complete; + struct page *page; + size_t size; + + page = alloc_page(GFP_NOIO); + if (!page) { + process_fd_request(); + return -ENOMEM; + } + + size = bdev->bd_block_size; + if (!size) + size = 1024; + + bio_init(&bio); + bio.bi_io_vec = &bio_vec; + bio_vec.bv_page = page; + bio_vec.bv_len = size; + bio_vec.bv_offset = 0; + bio.bi_vcnt = 1; + bio.bi_idx = 0; + bio.bi_size = size; + bio.bi_bdev = bdev; + bio.bi_sector = 0; + init_completion(&complete); + bio.bi_private = &complete; + bio.bi_end_io = floppy_rb0_complete; + + submit_bio(READ, &bio); + generic_unplug_device(bdev_get_queue(bdev)); + process_fd_request(); + wait_for_completion(&complete); + + __free_page(page); + + return 0; +} + +static int floppy_read_block_0(struct gendisk *disk) +{ + struct block_device *bdev; + int ret; + + bdev = bdget(MKDEV(disk->major, disk->first_minor)); + if (!bdev) { + printk("No block device for %s\n", disk->disk_name); + BUG(); + } + bdev->bd_disk = disk; /* ewww */ + ret = __floppy_read_block_0(bdev); + atomic_dec(&bdev->bd_count); + return ret; +} + +/* revalidate the floppy disk, i.e. trigger format autodetection by reading + * the bootblock (block 0). "Autodetection" is also needed to check whether + * there is a disk in the drive at all... Thus we also do it for fixed + * geometry formats */ +static int floppy_revalidate(struct gendisk *disk) +{ + int drive=(long)disk->private_data; +#define NO_GEOM (!current_type[drive] && !ITYPE(UDRS->fd_device)) + int cf; + int res = 0; + + if (UTESTF(FD_DISK_CHANGED) || + UTESTF(FD_VERIFY) || + test_bit(drive, &fake_change) || + NO_GEOM){ + if(usage_count == 0) { + printk("VFS: revalidate called on non-open device.\n"); + return -EFAULT; + } + lock_fdc(drive,0); + cf = UTESTF(FD_DISK_CHANGED) || UTESTF(FD_VERIFY); + if (!(cf || test_bit(drive, &fake_change) || NO_GEOM)){ + process_fd_request(); /*already done by another thread*/ + return 0; + } + UDRS->maxblock = 0; + UDRS->maxtrack = 0; + if (buffer_drive == drive) + buffer_track = -1; + clear_bit(drive, &fake_change); + UCLEARF(FD_DISK_CHANGED); + if (cf) + UDRS->generation++; + if (NO_GEOM){ + /* auto-sensing */ + res = floppy_read_block_0(disk); + } else { + if (cf) + poll_drive(0, FD_RAW_NEED_DISK); + process_fd_request(); + } + } + set_capacity(disk, floppy_sizes[UDRS->fd_device]); + return res; +} + +static struct block_device_operations floppy_fops = { + .owner = THIS_MODULE, + .open = floppy_open, + .release = floppy_release, + .ioctl = fd_ioctl, + .media_changed = check_floppy_change, + .revalidate_disk= floppy_revalidate, +}; + +static char *table[] = +{"", +#if 0 +"d360", +#else +"h1232", +#endif +"h1200", "u360", "u720", "h360", "h720", +"u1440", "u2880", "CompaQ", "h1440", "u1680", "h410", +"u820", "h1476", "u1722", "h420", "u830", "h1494", "u1743", +"h880", "u1040", "u1120", "h1600", "u1760", "u1920", +"u3200", "u3520", "u3840", "u1840", "u800", "u1600", +NULL +}; +static int t360[] = {1,0}, t1200[] = {2,5,6,10,12,14,16,18,20,23,0}, +t3in[] = {8,9,26,27,28, 7,11,15,19,24,25,29,31, 3,4,13,17,21,22,30,0}; +static int *table_sup[] = +{NULL, t360, t1200, t3in+5+8, t3in+5, t3in, t3in}; + +static void __init register_devfs_entries (int drive) +{ + int base_minor, i; + + base_minor = (drive < 4) ? drive : (124 + drive); + if (UDP->cmos < NUMBER(default_drive_params)) { + i = 0; + do { + char name[16]; + + sprintf(name, "floppy/%d%s", drive, table[table_sup[UDP->cmos][i]]); + devfs_register(NULL, name, DEVFS_FL_DEFAULT, FLOPPY_MAJOR, + base_minor + (table_sup[UDP->cmos][i] << 2), + S_IFBLK | S_IRUSR | S_IWUSR | S_IRGRP |S_IWGRP, + &floppy_fops, NULL); + } while (table_sup[UDP->cmos][i++]); + } +} + +/* + * Floppy Driver initialization + * ============================= + */ + +static inline char __init get_fdc_version(void) +{ + return FDC_8272A; +} + +/* lilo configuration */ + +static void __init floppy_set_flags(int *ints,int param, int param2) +{ + int i; + + for (i=0; i < ARRAY_SIZE(default_drive_params); i++){ + if (param) + default_drive_params[i].params.flags |= param2; + else + default_drive_params[i].params.flags &= ~param2; + } + DPRINT("%s flag 0x%x\n", param2 ? "Setting" : "Clearing", param); +} + +static void __init daring(int *ints,int param, int param2) +{ + int i; + + for (i=0; i < ARRAY_SIZE(default_drive_params); i++){ + if (param){ + default_drive_params[i].params.select_delay = 0; + default_drive_params[i].params.flags |= FD_SILENT_DCL_CLEAR; + } else { + default_drive_params[i].params.select_delay = 2*HZ/100; + default_drive_params[i].params.flags &= ~FD_SILENT_DCL_CLEAR; + } + } + DPRINT("Assuming %s floppy hardware\n", param ? "standard" : "broken"); +} + +static void __init set_cmos(int *ints, int dummy, int dummy2) +{ + int current_drive=0; + + if (ints[0] != 2){ + DPRINT("wrong number of parameters for CMOS\n"); + return; + } + current_drive = ints[1]; + if (current_drive < 0 || current_drive >= 8){ + DPRINT("bad drive for set_cmos\n"); + return; + } +#if N_FDC > 1 + if (current_drive >= 4 && !FDC2) + FDC2 = 0x370; +#endif + DP->cmos = ints[2]; + DPRINT("setting CMOS code to %d\n", ints[2]); +} + +static struct param_table { + const char *name; + void (*fn)(int *ints, int param, int param2); + int *var; + int def_param; + int param2; +} config_params[]={ + { "allowed_drive_mask", 0, &allowed_drive_mask, 0xff, 0}, /* obsolete */ + { "all_drives", 0, &allowed_drive_mask, 0xff, 0 }, /* obsolete */ + { "irq", 0, &FLOPPY_IRQ, DEFAULT_FLOPPY_IRQ, 0 }, + { "dma", 0, &FLOPPY_DMA, DEFAULT_FLOPPY_DMA, 0 }, + + { "daring", daring, 0, 1, 0}, +#if N_FDC > 1 + { "two_fdc", 0, &FDC2, 0x370, 0 }, + { "one_fdc", 0, &FDC2, 0, 0 }, +#endif + { "broken_dcl", floppy_set_flags, 0, 1, FD_BROKEN_DCL }, + { "messages", floppy_set_flags, 0, 1, FTD_MSG }, + { "silent_dcl_clear", floppy_set_flags, 0, 1, FD_SILENT_DCL_CLEAR }, + { "debug", floppy_set_flags, 0, 1, FD_DEBUG }, + + { "nodma", 0, &can_use_virtual_dma, 1, 0 }, + { "yesdma", 0, &can_use_virtual_dma, 0, 0 }, + + { "fifo_depth", 0, &fifo_depth, 0xa, 0 }, + { "nofifo", 0, &no_fifo, 0x20, 0 }, + { "usefifo", 0, &no_fifo, 0, 0 }, + + { "cmos", set_cmos, 0, 0, 0 }, + { "slow", 0, &slow_floppy, 1, 0 }, + + { "unexpected_interrupts", 0, &print_unex, 1, 0 }, + { "no_unexpected_interrupts", 0, &print_unex, 0, 0 }, + + EXTRA_FLOPPY_PARAMS +}; + +static int __init floppy_setup(char *str) +{ + int i; + int param; + int ints[11]; + + str = get_options(str,ARRAY_SIZE(ints),ints); + if (str) { + for (i=0; i< ARRAY_SIZE(config_params); i++){ + if (strcmp(str,config_params[i].name) == 0){ + if (ints[0]) + param = ints[1]; + else + param = config_params[i].def_param; + if (config_params[i].fn) + config_params[i]. + fn(ints,param, + config_params[i].param2); + if (config_params[i].var) { + DPRINT("%s=%d\n", str, param); + *config_params[i].var = param; + } + return 1; + } + } + } + if (str) { + DPRINT("unknown floppy option [%s]\n", str); + + DPRINT("allowed options are:"); + for (i=0; i< ARRAY_SIZE(config_params); i++) + printk(" %s",config_params[i].name); + printk("\n"); + } else + DPRINT("botched floppy option\n"); + DPRINT("Read linux/Documentation/floppy.txt\n"); + return 0; +} + +static int have_no_fdc= -ENODEV; + +static struct platform_device floppy_device = { + .name = "floppy", + .id = 0, + .dev = { + .name = "Floppy Drive", + }, +}; + +static struct gendisk *floppy_find(dev_t dev, int *part, void *data) +{ + int drive = (*part&3) | ((*part&0x80) >> 5); + if (drive >= N_DRIVE || + !(allowed_drive_mask & (1 << drive)) || + fdc_state[FDC(drive)].version == FDC_NONE) + return NULL; + return get_disk(disks[drive]); +} + +int __init floppy_init(void) +{ + int i,unit,drive; + int err; + + raw_cmd = NULL; + FDC1 = 0x90; + + for (i=0; imajor = FLOPPY_MAJOR; + disks[i]->first_minor = TOMINOR(i); + disks[i]->fops = &floppy_fops; + sprintf(disks[i]->disk_name, "fd%d", i); + } + + blk_register_region(MKDEV(FLOPPY_MAJOR, 0), 256, THIS_MODULE, + floppy_find, NULL, NULL); + + for (i=0; i<256; i++) + if (ITYPE(i)) + floppy_sizes[i] = floppy_type[ITYPE(i)].size; + else + floppy_sizes[i] = MAX_DISK_SIZE << 1; + + blk_init_queue(&floppy_queue, do_fd_request, &floppy_lock); + reschedule_timeout(MAXTIMEOUT, "floppy init", MAXTIMEOUT); + config_types(); + + for (i = 0; i < N_FDC; i++) { + fdc = i; + CLEARSTRUCT(FDCS); + FDCS->dtr = -1; + FDCS->dor = 0; + } + + if ((fd_inb(FD_MODE_CHANGE) & 1) == 0) + FDC1 = 0xc8; + + use_virtual_dma = can_use_virtual_dma & 1; + fdc_state[0].address = FDC1; + if (fdc_state[0].address == -1) { + err = -ENODEV; + goto out1; + } +#if N_FDC > 1 + fdc_state[1].address = FDC2; +#endif + + fdc = 0; /* reset fdc in case of unexpected interrupt */ + if (floppy_grab_irq_and_dma()){ + err = -EBUSY; + goto out1; + } + + /* initialise drive state */ + for (drive = 0; drive < N_DRIVE; drive++) { + CLEARSTRUCT(UDRS); + CLEARSTRUCT(UDRWE); + USETF(FD_DISK_NEWCHANGE); + USETF(FD_DISK_CHANGED); + USETF(FD_VERIFY); + UDRS->fd_device = -1; + floppy_track_buffer = NULL; + max_buffer_sectors = 0; + } + + for (i = 0; i < N_FDC; i++) { + fdc = i; + FDCS->driver_version = FD_DRIVER_VERSION; + for (unit=0; unit<4; unit++) + FDCS->track[unit] = 0; + if (FDCS->address == -1) + continue; + FDCS->rawcmd = 2; + user_reset_fdc(-1, FD_RESET_ALWAYS, 0); + + /* Try to determine the floppy controller type */ + FDCS->version = get_fdc_version(); + if (FDCS->version == FDC_NONE){ + /* free ioports reserved by floppy_grab_irq_and_dma() */ + release_region(FDCS->address, 1); + release_region(FDCS->address + 2, 1); + release_region(FDCS->address + 4, 1); + release_region(0xbe, 1); + release_region(0x4be, 1); + FDCS->address = -1; + continue; + } + if (can_use_virtual_dma == 2 && FDCS->version < FDC_82072A) + can_use_virtual_dma = 0; + + have_no_fdc = 0; + /* Not all FDCs seem to be able to handle the version command + * properly, so force a reset for the standard FDC clones, + * to avoid interrupt garbage. + */ + user_reset_fdc(-1,FD_RESET_ALWAYS,0); + } + fdc=0; + del_timer(&fd_timeout); + current_drive = 0; + floppy_release_irq_and_dma(); +#if 0 /* no message */ + initialising=0; +#endif + if (have_no_fdc) { + DPRINT("no floppy controllers found\n"); + flush_scheduled_work(); + if (usage_count) + floppy_release_irq_and_dma(); + err = have_no_fdc; + goto out2; + } + + for (drive = 0; drive < N_DRIVE; drive++) { + init_timer(&motor_off_timer[drive]); + motor_off_timer[drive].data = drive; + motor_off_timer[drive].function = motor_off_callback; + if (!(allowed_drive_mask & (1 << drive))) + continue; + if (fdc_state[FDC(drive)].version == FDC_NONE) + continue; + /* to be cleaned up... */ + disks[drive]->private_data = (void*)(long)drive; + disks[drive]->queue = &floppy_queue; + add_disk(disks[drive]); + } + + platform_device_register(&floppy_device); + return 0; + +out1: + del_timer(&fd_timeout); +out2: + blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); + unregister_blkdev(FLOPPY_MAJOR,"fd"); + blk_cleanup_queue(&floppy_queue); +out: + for (i=0; iaddress != -1){ + static char floppy[] = "floppy"; + if (!request_region(FDCS->address, 1, floppy)) + goto cleanup0; + + if (!request_region(FDCS->address + 2, 1, floppy)) { + release_region(FDCS->address, 1); + goto cleanup0; + } + + if (!request_region(FDCS->address + 4, 1, floppy)) { + release_region(FDCS->address, 1); + release_region(FDCS->address + 2, 1); + goto cleanup0; + } + + if (fdc == 0) { /* internal FDC */ + if (request_region(0xbe, 1, "floppy mode change")) { + if (request_region(0x4be, 1, "floppy ex. mode change")) + continue; + else + DPRINT("Floppy io-port 0x4be in use\n"); + + release_region(0xbe, 1); + } else + DPRINT("Floppy io-port 0xbe in use\n"); + + release_region(FDCS->address, 1); + release_region(FDCS->address + 2, 1); + release_region(FDCS->address + 4, 1); + } + + goto cleanup1; + } + } + for (fdc=0; fdc< N_FDC; fdc++){ + if (FDCS->address != -1){ + reset_fdc_info(1); + fd_outb(FDCS->dor, FD_MODE); + } + } + fdc = 0; + fd_outb((FDCS->dor & 8), FD_MODE); + + for (fdc = 0; fdc < N_FDC; fdc++) + if (FDCS->address != -1) + fd_outb(FDCS->dor, FD_MODE); + /* + * The driver will try and free resources and relies on us + * to know if they were allocated or not. + */ + fdc = 0; + irqdma_allocated = 1; + return 0; + +cleanup0: + DPRINT("Floppy io-port 0x%04lx in use\n", FDCS->address); +cleanup1: + fd_free_irq(); + fd_free_dma(); + while(--fdc >= 0) { + release_region(FDCS->address, 1); + release_region(FDCS->address + 2, 1); + release_region(FDCS->address + 4, 1); + if (fdc == 0) { + release_region(0x00be, 1); + release_region(0x04be, 1); + } + } + MOD_DEC_USE_COUNT; + spin_lock_irqsave(&floppy_usage_lock, flags); + usage_count--; + spin_unlock_irqrestore(&floppy_usage_lock, flags); + return -1; +} + +static void floppy_release_irq_and_dma(void) +{ + int old_fdc; +#ifdef FLOPPY_SANITY_CHECK + int drive; +#endif + long tmpsize; + unsigned long tmpaddr; + unsigned long flags; + + spin_lock_irqsave(&floppy_usage_lock, flags); + if (--usage_count){ + spin_unlock_irqrestore(&floppy_usage_lock, flags); + return; + } + spin_unlock_irqrestore(&floppy_usage_lock, flags); + if(irqdma_allocated) + { + fd_disable_dma(); + fd_free_dma(); + fd_free_irq(); + irqdma_allocated=0; + } + fd_outb(0, FD_MODE); + floppy_enable_hlt(); + + if (floppy_track_buffer && max_buffer_sectors) { + tmpsize = max_buffer_sectors*1024; + tmpaddr = (unsigned long)floppy_track_buffer; + floppy_track_buffer = NULL; + max_buffer_sectors = 0; + buffer_min = buffer_max = -1; + fd_dma_mem_free(tmpaddr, tmpsize); + } + +#ifdef FLOPPY_SANITY_CHECK + for (drive=0; drive < N_FDC * 4; drive++) + if (timer_pending(motor_off_timer + drive)) + printk("motor off timer %d still active\n", drive); + + if (timer_pending(&fd_timeout)) + printk("floppy timer still active:%s\n", timeout_message); + if (timer_pending(&fd_timer)) + printk("auxiliary floppy timer still active\n"); + if (floppy_work.pending) + printk("work still pending\n"); +#endif + old_fdc = fdc; + for (fdc = 0; fdc < N_FDC; fdc++) + if (FDCS->address != -1) { + release_region(FDCS->address, 1); + release_region(FDCS->address + 2, 1); + release_region(FDCS->address + 4, 1); + if (fdc == 0) { + release_region(0xbe, 1); + release_region(0x4be, 1); + } + } + fdc = old_fdc; + MOD_DEC_USE_COUNT; +} + + +#ifdef MODULE + +char *floppy; + +static void unregister_devfs_entries (int drive) +{ + int i; + + if (UDP->cmos < NUMBER(default_drive_params)) { + i = 0; + do { + devfs_remove("floppy/%d%s", drive, table[table_sup[UDP->cmos][i]]); + } while (table_sup[UDP->cmos][i++]); + } +} + +static void __init parse_floppy_cfg_string(char *cfg) +{ + char *ptr; + + while(*cfg) { + for(ptr = cfg;*cfg && *cfg != ' ' && *cfg != '\t'; cfg++); + if (*cfg) { + *cfg = '\0'; + cfg++; + } + if (*ptr) + floppy_setup(ptr); + } +} + +int init_module(void) +{ + printk(KERN_INFO "inserting floppy driver for " UTS_RELEASE "\n"); + + if (floppy) + parse_floppy_cfg_string(floppy); + return floppy_init(); +} + +void cleanup_module(void) +{ + int drive; + + platform_device_unregister(&floppy_device); + blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); + unregister_blkdev(FLOPPY_MAJOR, "fd"); + for (drive = 0; drive < N_DRIVE; drive++) { + if ((allowed_drive_mask & (1 << drive)) && + fdc_state[FDC(drive)].version != FDC_NONE) { + del_gendisk(disks[drive]); + unregister_devfs_entries(drive); + } + put_disk(disks[drive]); + } + devfs_remove("floppy"); + + blk_cleanup_queue(&floppy_queue); + /* eject disk, if any */ + fd_eject(0); +} + +MODULE_PARM(floppy,"s"); +MODULE_PARM(FLOPPY_IRQ,"i"); +MODULE_PARM(FLOPPY_DMA,"i"); +MODULE_AUTHOR("Osamu Tomita"); +MODULE_SUPPORTED_DEVICE("fd"); +MODULE_LICENSE("GPL"); + +#else + +__setup ("floppy=", floppy_setup); +module_init(floppy_init) +#endif diff -Nru a/drivers/block/paride/pf.c b/drivers/block/paride/pf.c --- a/drivers/block/paride/pf.c Sat Mar 8 14:50:22 2003 +++ b/drivers/block/paride/pf.c Mon Apr 7 02:02:18 2003 @@ -780,10 +780,10 @@ if (pf_busy) return; repeat: - if (elv_queue_empty(q)) + pf_req = elv_next_request(q); + if (!pf_req) return; - pf_req = elv_next_request(q); pf_current = pf_req->rq_disk->private_data; pf_block = pf_req->sector; pf_run = pf_req->nr_sectors; diff -Nru a/drivers/block/paride/pg.c b/drivers/block/paride/pg.c --- a/drivers/block/paride/pg.c Sat Mar 22 07:38:05 2003 +++ b/drivers/block/paride/pg.c Mon Mar 24 20:59:59 2003 @@ -233,14 +233,14 @@ int busy; /* write done, read expected */ int start; /* jiffies at command start */ int dlen; /* transfer size requested */ - int timeout; /* timeout requested */ + unsigned long timeout; /* timeout requested */ int status; /* last sense key */ int drive; /* drive */ unsigned long access; /* count of active opens ... */ int present; /* device present ? */ char *bufptr; char name[PG_NAMELEN]; /* pg0, pg1, ... */ - }; +}; struct pg_unit pg[PG_UNITS]; @@ -292,43 +292,47 @@ schedule_timeout(cs); } -static int pg_wait( int unit, int go, int stop, int tmo, char * msg ) - -{ int j, r, e, s, p; +static int pg_wait(int unit, int go, int stop, unsigned long tmo, char *msg) +{ + int j, r, e, s, p, to; PG.status = 0; j = 0; - while ((((r=RR(1,6))&go)||(stop&&(!(r&stop))))&&(time_before(jiffies,tmo))) { - if (j++ < PG_SPIN) udelay(PG_SPIN_DEL); - else pg_sleep(1); - } - - if ((r&(STAT_ERR&stop))||time_after_eq(jiffies, tmo)) { - s = RR(0,7); - e = RR(0,1); - p = RR(0,2); - if (verbose > 1) - printk("%s: %s: stat=0x%x err=0x%x phase=%d%s\n", - PG.name,msg,s,e,p,time_after_eq(jiffies, tmo)?" timeout":""); - - - if (time_after_eq(jiffies, tmo)) e |= 0x100; - PG.status = (e >> 4) & 0xff; - return -1; + while ((((r=RR(1,6))&go) || (stop&&(!(r&stop)))) + && time_before(jiffies,tmo)) { + if (j++ < PG_SPIN) + udelay(PG_SPIN_DEL); + else + pg_sleep(1); + } + + to = time_after_eq(jiffies, tmo); + + if ((r&(STAT_ERR&stop)) || to) { + s = RR(0,7); + e = RR(0,1); + p = RR(0,2); + if (verbose > 1) + printk("%s: %s: stat=0x%x err=0x%x phase=%d%s\n", + PG.name, msg, s, e, p, to ? " timeout" : ""); + if (to) + e |= 0x100; + PG.status = (e >> 4) & 0xff; + return -1; } return 0; } -static int pg_command( int unit, char * cmd, int dlen, int tmo ) - -{ int k; +static int pg_command(int unit, char *cmd, int dlen, unsigned long tmo) +{ + int k; pi_connect(PI); WR(0,6,DRIVE); - if (pg_wait(unit,STAT_BUSY|STAT_DRQ,0,tmo,"before command")) { + if (pg_wait(unit, STAT_BUSY|STAT_DRQ, 0, tmo, "before command")) { pi_disconnect(PI); return -1; } @@ -337,15 +341,15 @@ WR(0,5,dlen / 256); WR(0,7,0xa0); /* ATAPI packet command */ - if (pg_wait(unit,STAT_BUSY,STAT_DRQ,tmo,"command DRQ")) { + if (pg_wait(unit, STAT_BUSY, STAT_DRQ, tmo, "command DRQ")) { pi_disconnect(PI); return -1; } if (RR(0,2) != 1) { - printk("%s: command phase error\n",PG.name); - pi_disconnect(PI); - return -1; + printk("%s: command phase error\n",PG.name); + pi_disconnect(PI); + return -1; } pi_write_block(PI,cmd,12); @@ -358,27 +362,30 @@ return 0; } -static int pg_completion( int unit, char * buf, int tmo) - -{ int r, d, n, p; +static int pg_completion(int unit, char *buf, unsigned long tmo) +{ + int r, d, n, p; - r = pg_wait(unit,STAT_BUSY,STAT_DRQ|STAT_READY|STAT_ERR, - tmo,"completion"); + r = pg_wait(unit, STAT_BUSY, STAT_DRQ|STAT_READY|STAT_ERR, + tmo, "completion"); PG.dlen = 0; while (RR(0,7)&STAT_DRQ) { - d = (RR(0,4)+256*RR(0,5)); - n = ((d+3)&0xfffc); - p = RR(0,2)&3; - if (p == 0) pi_write_block(PI,buf,n); - if (p == 2) pi_read_block(PI,buf,n); - if (verbose > 1) printk("%s: %s %d bytes\n",PG.name, - p?"Read":"Write",n); - PG.dlen += (1-p)*d; - buf += d; - r = pg_wait(unit,STAT_BUSY,STAT_DRQ|STAT_READY|STAT_ERR, - tmo,"completion"); + d = (RR(0,4)+256*RR(0,5)); + n = ((d+3)&0xfffc); + p = RR(0,2)&3; + if (p == 0) + pi_write_block(PI,buf,n); + if (p == 2) + pi_read_block(PI,buf,n); + if (verbose > 1) + printk("%s: %s %d bytes\n", PG.name, + p?"Read":"Write", n); + PG.dlen += (1-p)*d; + buf += d; + r = pg_wait(unit, STAT_BUSY, STAT_DRQ|STAT_READY|STAT_ERR, + tmo, "completion"); } pi_disconnect(PI); diff -Nru a/drivers/block/paride/pseudo.h b/drivers/block/paride/pseudo.h --- a/drivers/block/paride/pseudo.h Sun Nov 10 15:05:38 2002 +++ b/drivers/block/paride/pseudo.h Tue Mar 18 06:50:10 2003 @@ -39,7 +39,7 @@ static void (* ps_continuation)(void); static int (* ps_ready)(void); -static int ps_timeout; +static unsigned long ps_timeout; static int ps_tq_active = 0; static int ps_nice = 0; @@ -70,7 +70,7 @@ spin_unlock_irqrestore(&ps_spinlock,flags); } -static void ps_tq_int( void *data ) +static void ps_tq_int(void *data) { void (*con)(void); unsigned long flags; diff -Nru a/drivers/char/Kconfig b/drivers/char/Kconfig --- a/drivers/char/Kconfig Thu Mar 13 15:51:14 2003 +++ b/drivers/char/Kconfig Tue Mar 18 08:57:58 2003 @@ -575,6 +575,17 @@ console. This driver allows each pSeries partition to have a console which is accessed via the HMC. +config PC9800_OLDLP + tristate "NEC PC-9800 old-style printer port support" + depends on X86_PC9800 && !PARPORT + ---help--- + If you intend to attach a printer to the parallel port of NEC PC-9801 + /PC-9821 with OLD compatibility mode, Say Y. + +config PC9800_OLDLP_CONSOLE + bool "Support for console on line printer" + depends on PC9800_OLDLP + source "drivers/i2c/Kconfig" @@ -755,7 +766,7 @@ config RTC tristate "Enhanced Real Time Clock Support" - depends on !PPC32 && !PARISC && !IA64 + depends on !PPC32 && !PARISC && !IA64 && !X86_PC9800 ---help--- If you say Y here and create a character special file /dev/rtc with major number 10 and minor number 135 using mknod ("man mknod"), you @@ -813,6 +824,15 @@ config EFI_RTC bool "EFI Real Time Clock Services" depends on IA64 + +config RTC98 + tristate "NEC PC-9800 Real Time Clock Support" + depends on X86_PC9800 + default y + ---help--- + If you say Y here and create a character special file /dev/rtc with + major number 10 and minor number 135 using mknod ("man mknod"), you + will get access to the real time clock (or hardware clock) built config H8 bool "Tadpole ANA H8 Support (OBSOLETE)" diff -Nru a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig --- a/drivers/char/agp/Kconfig Thu Feb 27 13:12:37 2003 +++ b/drivers/char/agp/Kconfig Wed Apr 9 18:37:51 2003 @@ -29,17 +29,13 @@ bool "/dev/agpgart (AGP Support)" depends on GART_IOMMU -config AGP3 - bool "AGP 3.0 compliance (EXPERIMENTAL)" - depends on AGP - config AGP_INTEL - tristate "Intel 440LX/BX/GX and I815/I820/830M/I830MP/I840/I845/845G/I850/852GM/855GM/I860/865G support" - depends on AGP + tristate "Intel 440LX/BX/GX, I8xx and E7x05 support" + depends on AGP && !X86_64 help This option gives you AGP support for the GLX component of the - XFree86 4.x on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850 - and 860 chipsets and full support for the 810, 815, 830M, 845G, + XFree86 4.x on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860 + E7205 and E7505 chipsets and full support for the 810, 815, 830M, 845G, 852GM, 855GM and 865G integrated graphics chipsets. You should say Y here if you use XFree86 3.3.6 or 4.x and want to @@ -48,7 +44,7 @@ #config AGP_I810 # tristate "Intel I810/I815/I830M (on-board) support" -# depends on AGP +# depends on AGP && !X86_64 # help # This option gives you AGP support for the Xserver on the Intel 810 # 815 and 830m chipset boards for their on-board integrated graphics. This @@ -56,7 +52,7 @@ config AGP_VIA tristate "VIA chipset support" - depends on AGP + depends on AGP && !X86_64 help This option gives you AGP support for the GLX component of the XFree86 4.x on VIA MPV3/Apollo Pro chipsets. @@ -66,7 +62,7 @@ config AGP_AMD tristate "AMD Irongate, 761, and 762 support" - depends on AGP + depends on AGP && !X86_64 help This option gives you AGP support for the GLX component of the XFree86 4.x on AMD Irongate, 761, and 762 chipsets. @@ -76,7 +72,7 @@ config AGP_SIS tristate "Generic SiS support" - depends on AGP + depends on AGP && !X86_64 help This option gives you AGP support for the GLX component of the "soon to be released" XFree86 4.x on Silicon Integrated Systems [SiS] @@ -89,7 +85,7 @@ config AGP_ALI tristate "ALI chipset support" - depends on AGP + depends on AGP && !X86_64 ---help--- This option gives you AGP support for the GLX component of the XFree86 4.x on the following ALi chipsets. The supported chipsets @@ -107,7 +103,7 @@ config AGP_SWORKS tristate "Serverworks LE/HE support" - depends on AGP + depends on AGP && !X86_64 help Say Y here to support the Serverworks AGP card. See for product descriptions and images. @@ -138,16 +134,4 @@ tristate depends on AGP && (ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL) default AGP - -# Put AGP 3.0 entries below here. - -config AGP_I7505 - tristate "Intel 7205/7505 support (AGP 3.0)" - depends on AGP3 - help - This option gives you AGP support for the GLX component of the - XFree86 4.x on Intel I7505 chipsets. - - You should say Y here if you use XFree86 3.3.6 or 4.x and want to - use GLX or DRI. If unsure, say N diff -Nru a/drivers/char/agp/Makefile b/drivers/char/agp/Makefile --- a/drivers/char/agp/Makefile Mon Feb 10 11:45:08 2003 +++ b/drivers/char/agp/Makefile Wed Apr 9 17:15:09 2003 @@ -3,8 +3,7 @@ # space ioctl interface to use agp memory. It also adds a kernel interface # that other drivers could use to manipulate agp memory. -agpgart-y := backend.o frontend.o generic.o -agpgart-$(CONFIG_AGP3) += generic-3.0.o +agpgart-y := backend.o frontend.o generic.o generic-3.0.o agpgart-objs := $(agpgart-y) obj-$(CONFIG_AGP) += agpgart.o @@ -19,5 +18,4 @@ obj-$(CONFIG_AGP_AMD_8151) += amd-k8-agp.o obj-$(CONFIG_AGP_ALPHA_CORE) += alpha-agp.o -obj-$(CONFIG_AGP_I7x05) += i7x05-agp.o diff -Nru a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h --- a/drivers/char/agp/agp.h Sun Mar 2 18:13:32 2003 +++ b/drivers/char/agp/agp.h Wed Apr 9 15:56:26 2003 @@ -1,6 +1,6 @@ /* * AGPGART - * Copyright (C) 2002 Dave Jones + * Copyright (C) 2002-2003 Dave Jones * Copyright (C) 1999 Jeff Hartmann * Copyright (C) 1999 Precision Insight, Inc. * Copyright (C) 1999 Xi Graphics, Inc. @@ -46,7 +46,7 @@ panic(PFX "timed out waiting for the other CPUs!\n"); } #else -static inline void global_cache_flush(void) +static void global_cache_flush(void) { flush_agp_cache(); } @@ -281,6 +281,7 @@ #define INTEL_I7505_ATTBASE 0x78 #define INTEL_I7505_ERRSTS 0x42 #define INTEL_I7505_AGPCTRL 0x70 +#define INTEL_I7505_MCHCFG 0x50 /* VIA register */ #define VIA_APBASE 0x10 @@ -380,8 +381,7 @@ /* Generic routines. */ -void agp_generic_agp_enable(u32 mode); -void agp_generic_agp_3_0_enable(u32 mode); +void agp_generic_enable(u32 mode); int agp_generic_create_gatt_table(void); int agp_generic_free_gatt_table(void); agp_memory *agp_create_memory(int scratch_pages); @@ -399,5 +399,6 @@ int agp_unregister_driver(struct agp_driver *drv); u32 agp_collect_device_status(u32 mode, u32 command); void agp_device_command(u32 command, int agp_v3); +int agp_3_0_node_enable(u32 mode, u32 minor); #endif /* _AGP_BACKEND_PRIV_H */ diff -Nru a/drivers/char/agp/ali-agp.c b/drivers/char/agp/ali-agp.c --- a/drivers/char/agp/ali-agp.c Mon Feb 10 09:53:20 2003 +++ b/drivers/char/agp/ali-agp.c Mon Mar 24 12:21:12 2003 @@ -208,7 +208,7 @@ agp_bridge->cleanup = ali_cleanup; agp_bridge->tlb_flush = ali_tlbflush; agp_bridge->mask_memory = ali_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = ali_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; diff -Nru a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c --- a/drivers/char/agp/amd-k7-agp.c Mon Feb 10 09:53:20 2003 +++ b/drivers/char/agp/amd-k7-agp.c Mon Mar 24 12:21:12 2003 @@ -368,7 +368,7 @@ agp_bridge->cleanup = amd_irongate_cleanup; agp_bridge->tlb_flush = amd_irongate_tlbflush; agp_bridge->mask_memory = amd_irongate_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = amd_create_gatt_table; agp_bridge->free_gatt_table = amd_free_gatt_table; diff -Nru a/drivers/char/agp/amd-k8-agp.c b/drivers/char/agp/amd-k8-agp.c --- a/drivers/char/agp/amd-k8-agp.c Tue Feb 11 19:31:13 2003 +++ b/drivers/char/agp/amd-k8-agp.c Wed Apr 9 19:09:13 2003 @@ -1,12 +1,12 @@ /* - * Copyright 2001,2002 SuSE Labs + * Copyright 2001-2003 SuSE Labs. * Distributed under the GNU public license, v2. * - * This is a GART driver for the AMD K8 northbridge and the AMD 8151 - * AGP bridge. The main work is done in the northbridge. The configuration - * is only mirrored in the 8151 for compatibility (could be likely - * removed now). - */ + * This is a GART driver for the AMD64 on-CPU northbridge. + * It also includes support for the AMD 8151 AGP bridge, + * although it doesn't actually do much, as all the real + * work is done in the northbridge(s). + */ /* * On x86-64 the AGP driver needs to be initialized early by the IOMMU @@ -224,7 +224,7 @@ static struct gatt_mask amd_8151_masks[] = { - {0x00000001, 0} + {.mask = 0x00000001, .type = 0} }; @@ -265,7 +265,7 @@ /* If not enough, go to AGP v2 setup */ if (v3_devs<2) { printk (KERN_INFO "AGP: Only %d devices found, not enough, trying AGPv2\n", v3_devs); - return agp_generic_agp_enable(mode); + return agp_generic_enable(mode); } else { printk (KERN_INFO "AGP: Enough AGPv3 devices found, setting up...\n"); } @@ -339,6 +339,8 @@ cap_ptr = pci_find_capability(dev, PCI_CAP_ID_AGP); if (cap_ptr == 0) return -ENODEV; + + printk (KERN_INFO PFX "Detected AMD64 on-CPU GART\n"); agp_bridge->dev = dev; agp_bridge->capndx = cap_ptr; diff -Nru a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c --- a/drivers/char/agp/backend.c Mon Feb 10 09:53:40 2003 +++ b/drivers/char/agp/backend.c Mon Mar 24 12:39:10 2003 @@ -1,6 +1,6 @@ /* * AGPGART driver backend routines. - * Copyright (C) 2002 Dave Jones. + * Copyright (C) 2002-2003 Dave Jones. * Copyright (C) 1999 Jeff Hartmann. * Copyright (C) 1999 Precision Insight, Inc. * Copyright (C) 1999 Xi Graphics, Inc. diff -Nru a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c --- a/drivers/char/agp/frontend.c Mon Feb 10 09:53:13 2003 +++ b/drivers/char/agp/frontend.c Sun Apr 6 18:50:35 2003 @@ -1,6 +1,6 @@ /* * AGPGART driver frontend - * Copyright (C) 2002 Dave Jones + * Copyright (C) 2002-2003 Dave Jones * Copyright (C) 1999 Jeff Hartmann * Copyright (C) 1999 Precision Insight, Inc. * Copyright (C) 1999 Xi Graphics, Inc. diff -Nru a/drivers/char/agp/generic-3.0.c b/drivers/char/agp/generic-3.0.c --- a/drivers/char/agp/generic-3.0.c Mon Feb 10 11:45:08 2003 +++ b/drivers/char/agp/generic-3.0.c Sun Apr 6 16:18:32 2003 @@ -319,10 +319,10 @@ * Fully configure and enable an AGP 3.0 host bridge and all the devices * lying behind it. */ -static int agp_3_0_node_enable(u32 mode, u32 minor) +int agp_3_0_node_enable(u32 mode, u32 minor) { struct pci_dev *td = agp_bridge->dev, *dev; - u8 bus_num, mcapndx; + u8 mcapndx; u32 isoch, arqsz, cal_cycle, tmp, rate; u32 tstatus, tcmd, mcmd, mstatus, ncapid; u32 mmajor, mminor; @@ -343,23 +343,30 @@ head = &dev_list->list; INIT_LIST_HEAD(head); - /* - * Find all the devices on this bridge's secondary bus and add them - * to dev_list. - */ - pci_read_config_byte(td, PCI_SECONDARY_BUS, &bus_num); - pci_for_each_dev(dev) { - if(dev->bus->number == bus_num) { - if((cur = kmalloc(sizeof(*cur), GFP_KERNEL)) == NULL) { - ret = -ENOMEM; - goto free_and_exit; - } - - cur->dev = dev; + /* Find all AGP devices, and add them to dev_list. */ + pci_for_each_dev(dev) { + switch ((dev->class >>8) & 0xff00) { + case 0x0001: /* Unclassified device */ + case 0x0300: /* Display controller */ + case 0x0400: /* Multimedia controller */ + case 0x0600: /* Bridge */ + mcapndx = pci_find_capability(dev, PCI_CAP_ID_AGP); + if (mcapndx == 0) + continue; + + if((cur = kmalloc(sizeof(*cur), GFP_KERNEL)) == NULL) { + ret = -ENOMEM; + goto free_and_exit; + } + cur->dev = dev; + + pos = &cur->list; + list_add(pos, head); + ndevs++; + continue; - pos = &cur->list; - list_add(pos, head); - ndevs++; + default: + continue; } } @@ -518,33 +525,5 @@ return ret; } -/* - * Entry point to AGP 3.0 host bridge init. Check to see if we - * have an AGP 3.0 device operating in 3.0 mode. Call - * agp_3_0_node_enable or agp_generic_agp_enable if we don't - * (AGP 3.0 devices are required to operate as AGP 2.0 devices - * when not using 3.0 electricals. - */ -void agp_generic_agp_3_0_enable(u32 mode) -{ - u32 ncapid, major, minor, agp_3_0; - - pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx, &ncapid); - - major = (ncapid >> 20) & 0xf; - minor = (ncapid >> 16) & 0xf; - - printk(KERN_INFO PFX "Found an AGP %d.%d compliant device.\n",major, minor); - - if(major >= 3) { - pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx + 0x4, &agp_3_0); - /* - * Check to see if we are operating in 3.0 mode - */ - if((agp_3_0 >> 3) & 0x1) - agp_3_0_node_enable(mode, minor); - } -} - -EXPORT_SYMBOL(agp_generic_agp_3_0_enable); +EXPORT_SYMBOL_GPL(agp_3_0_node_enable); diff -Nru a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c --- a/drivers/char/agp/generic.c Thu Feb 13 08:18:51 2003 +++ b/drivers/char/agp/generic.c Wed Apr 9 17:15:09 2003 @@ -34,6 +34,7 @@ #include #include #include +#include #include "agp.h" __u32 *agp_gatt_table; @@ -392,21 +393,37 @@ } } -void agp_generic_agp_enable(u32 mode) +void agp_generic_enable(u32 mode) { - u32 command; + u32 command, ncapid, major, minor; + pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx, &ncapid); + major = (ncapid >> 20) & 0xf; + minor = (ncapid >> 16) & 0xf; + printk(KERN_INFO PFX "Found an AGP %d.%d compliant device.\n",major, minor); + + if(major >= 3) { + u32 agp_3_0; + + pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx + 0x4, &agp_3_0); + /* Check to see if we are operating in 3.0 mode */ + if((agp_3_0 >> 3) & 0x1) { + agp_3_0_node_enable(mode, minor); + return; + } else { + printk (KERN_INFO PFX "not in AGP 3.0 mode, falling back to 2.x\n"); + } + } + + /* AGP v<3 */ pci_read_config_dword(agp_bridge->dev, - agp_bridge->capndx + PCI_AGP_STATUS, - &command); + agp_bridge->capndx + PCI_AGP_STATUS, &command); command = agp_collect_device_status(mode, command); command |= 0x100; pci_write_config_dword(agp_bridge->dev, - agp_bridge->capndx + PCI_AGP_COMMAND, - command); - + agp_bridge->capndx + PCI_AGP_COMMAND, command); agp_device_command(command, 0); } @@ -745,7 +762,7 @@ EXPORT_SYMBOL(agp_generic_destroy_page); EXPORT_SYMBOL(agp_generic_suspend); EXPORT_SYMBOL(agp_generic_resume); -EXPORT_SYMBOL(agp_generic_agp_enable); +EXPORT_SYMBOL(agp_generic_enable); EXPORT_SYMBOL(agp_generic_create_gatt_table); EXPORT_SYMBOL(agp_generic_free_gatt_table); EXPORT_SYMBOL(agp_generic_insert_memory); diff -Nru a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c --- a/drivers/char/agp/hp-agp.c Mon Feb 10 09:53:20 2003 +++ b/drivers/char/agp/hp-agp.c Wed Apr 9 15:58:29 2003 @@ -339,7 +339,7 @@ agp_bridge->cleanup = hp_zx1_cleanup; agp_bridge->tlb_flush = hp_zx1_tlbflush; agp_bridge->mask_memory = hp_zx1_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = hp_zx1_create_gatt_table; agp_bridge->free_gatt_table = hp_zx1_free_gatt_table; @@ -369,7 +369,7 @@ } static struct agp_driver hp_agp_driver = { - .owner = THIS_MODULE; + .owner = THIS_MODULE, }; static int __init agp_hp_probe (struct pci_dev *dev, const struct pci_device_id *ent) @@ -394,7 +394,7 @@ { } }; -MODULE_DEVICE_TABLE(pci, agp_pci_table); +MODULE_DEVICE_TABLE(pci, agp_hp_pci_table); static struct __initdata pci_driver agp_hp_pci_driver = { .name = "agpgart-hp", diff -Nru a/drivers/char/agp/i460-agp.c b/drivers/char/agp/i460-agp.c --- a/drivers/char/agp/i460-agp.c Mon Feb 10 09:53:20 2003 +++ b/drivers/char/agp/i460-agp.c Wed Apr 9 15:58:29 2003 @@ -536,7 +536,7 @@ agp_bridge->cleanup = i460_cleanup; agp_bridge->tlb_flush = i460_tlb_flush; agp_bridge->mask_memory = i460_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = i460_create_gatt_table; agp_bridge->free_gatt_table = i460_free_gatt_table; @@ -560,7 +560,7 @@ } static struct agp_driver i460_agp_driver = { - .owner = THIS_MODULE; + .owner = THIS_MODULE, }; static int __init agp_intel_i460_probe (struct pci_dev *dev, const struct pci_device_id *ent) diff -Nru a/drivers/char/agp/i7x05-agp.c b/drivers/char/agp/i7x05-agp.c --- a/drivers/char/agp/i7x05-agp.c Mon Feb 10 09:53:20 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,234 +0,0 @@ -#include -#include -#include -#include -#include "agp.h" - -static int intel_7505_fetch_size(void) -{ - int i; - u16 tmp; - aper_size_info_16 *values; - - /* - * For AGP 3.0 APSIZE is now 16 bits - */ - pci_read_config_word (agp_bridge->dev, INTEL_I7505_APSIZE, &tmp); - tmp = (tmp & 0xfff); - - values = A_SIZE_16(agp_bridge->aperture_sizes); - - for (i=0; i < agp_bridge->num_aperture_sizes; i++) { - if (tmp == values[i].size_value) { - agp_bridge->previous_size = agp_bridge->current_size = - (void *)(values + i); - agp_bridge->aperture_size_idx = i; - return values[i].size; - } - } - return 0; -} - - -static void intel_7505_tlbflush(agp_memory *mem) -{ - u32 temp; - pci_read_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, &temp); - pci_write_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, temp & ~(1 << 7)); - pci_read_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, &temp); - pci_write_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, temp | (1 << 7)); -} - -static void intel_7505_cleanup(void) -{ - aper_size_info_16 *previous_size; - - previous_size = A_SIZE_16(agp_bridge->previous_size); - pci_write_config_byte(agp_bridge->dev, INTEL_I7505_APSIZE, - previous_size->size_value); -} - - -static int intel_7505_configure(void) -{ - u32 temp; - aper_size_info_16 *current_size; - - current_size = A_SIZE_16(agp_bridge->current_size); - - /* aperture size */ - pci_write_config_word(agp_bridge->dev, INTEL_I7505_APSIZE, - current_size->size_value); - - /* address to map to */ - pci_read_config_dword(agp_bridge->dev, INTEL_I7505_NAPBASELO, &temp); - agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); - - /* attbase */ - pci_write_config_dword(agp_bridge->dev, INTEL_I7505_ATTBASE, - agp_bridge->gatt_bus_addr); - - /* agpctrl */ - pci_write_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, 0x0000); - - /* clear error registers */ - pci_write_config_byte(agp_bridge->dev, INTEL_I7505_ERRSTS, 0xff); - return 0; -} - -static aper_size_info_16 intel_7505_sizes[7] = -{ - {256, 65536, 6, 0xf00}, - {128, 32768, 5, 0xf20}, - {64, 16384, 4, 0xf30}, - {32, 8192, 3, 0xf38}, - {16, 4096, 2, 0xf3c}, - {8, 2048, 1, 0xf3e}, - {4, 1024, 0, 0xf3f} -}; - -static void i7505_setup (u32 mode) -{ - if ((agp_generic_agp_3_0_enable)==FALSE) - agp_generic_agp_enable(mode); -} - -static int __init intel_7505_setup (struct pci_dev *pdev) -{ - agp_bridge->masks = intel_generic_masks; - agp_bridge->aperture_sizes = (void *) intel_7505_sizes; - agp_bridge->size_type = U16_APER_SIZE; - agp_bridge->num_aperture_sizes = 7; - agp_bridge->dev_private_data = NULL; - agp_bridge->needs_scratch_page = FALSE; - agp_bridge->configure = intel_7505_configure; - agp_bridge->fetch_size = intel_7505_fetch_size; - agp_bridge->cleanup = intel_7505_cleanup; - agp_bridge->tlb_flush = intel_7505_tlbflush; - agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = i7505_enable; - agp_bridge->cache_flush = global_cache_flush; - agp_bridge->create_gatt_table = agp_generic_create_gatt_table; - agp_bridge->free_gatt_table = agp_generic_free_gatt_table; - agp_bridge->insert_memory = agp_generic_insert_memory; - agp_bridge->remove_memory = agp_generic_remove_memory; - agp_bridge->alloc_by_type = agp_generic_alloc_by_type; - agp_bridge->free_by_type = agp_generic_free_by_type; - agp_bridge->agp_alloc_page = agp_generic_alloc_page; - agp_bridge->agp_destroy_page = agp_generic_destroy_page; - agp_bridge->suspend = agp_generic_suspend; - agp_bridge->resume = agp_generic_resume; - agp_bridge->cant_use_aperture = 0; - return 0; -} - -struct agp_device_ids i7x05_agp_device_ids[] __initdata = -{ - { - .device_id = PCI_DEVICE_ID_INTEL_7505_0, - .chipset = INTEL_I7505, - .chipset_name = "i7505", - }, - { - .device_id = PCI_DEVICE_ID_INTEL_7205_0, - .chipset = INTEL_I7505, - .chipset_name = "i7205", - }, - { }, /* dummy final entry, always present */ -}; - -/* scan table above for supported devices */ -static int __init agp_lookup_host_bridge (struct pci_dev *pdev) -{ - int j=0; - struct agp_device_ids *devs; - - devs = i7x05_agp_device_ids; - - while (devs[j].chipset_name != NULL) { - if (pdev->device == devs[j].device_id) { - printk (KERN_INFO PFX "Detected Intel %s chipset\n", - devs[j].chipset_name); - agp_bridge->type = devs[j].chipset; - - if (devs[j].chipset_setup != NULL) - return devs[j].chipset_setup(pdev); - else - return intel_7505_setup(pdev); - } - j++; - } - - printk(KERN_ERR PFX "Unsupported Intel chipset (device id: %04x),", - pdev->device); - return -ENODEV; -} - -static struct agp_driver i7x05_agp_driver = { - .owner = THIS_MODULE; -}; - -static int __init agp_i7x05_probe (struct pci_dev *dev, const struct pci_device_id *ent) -{ - u8 cap_ptr = 0; - - cap_ptr = pci_find_capability(dev, PCI_CAP_ID_AGP); - if (cap_ptr == 0) - return -ENODEV; - - if (agp_lookup_host_bridge(dev) != -ENODEV) { - agp_bridge->dev = dev; - agp_bridge->capndx = cap_ptr; - /* Fill in the mode register */ - pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &agp_bridge->mode) - i7x05_agp_driver.dev = dev; - agp_register_driver(&i7x05_agp_driver); - return 0; - } - return -ENODEV; -} - - -static struct pci_device_id agp_i7x05_pci_table[] __initdata = { - { - .class = (PCI_CLASS_BRIDGE_HOST << 8), - .class_mask = ~0, - .vendor = PCI_VENDOR_ID_INTEL, - .device = PCI_ANY_ID, - .subvendor = PCI_ANY_ID, - .subdevice = PCI_ANY_ID, - }, - { } -}; - -MODULE_DEVICE_TABLE(pci, agp_i7x05_pci_table); - -static struct __initdata pci_driver agp_i7x05_pci_driver = { - .name = "agpgart-i7x05", - .id_table = agp_i7x05_pci_table, - .probe = agp_i7x05_probe, -}; - -int __init agp_i7x05_init(void) -{ - int ret_val; - - ret_val = pci_module_init(&agp_i7x05_pci_driver); - if (ret_val) - agp_bridge->type = NOT_SUPPORTED; - - return ret_val; -} - -static void __exit agp_i7x05_cleanup(void) -{ - agp_unregister_driver(&i7x05_agp_driver); - pci_unregister_driver(&agp_i7x05_pci_driver); -} - -module_init(agp_i7x05_init); -module_exit(agp_i7x05_cleanup); - -MODULE_AUTHOR("Matthew E Tolentino "); -MODULE_LICENSE("GPL and additional rights"); - diff -Nru a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c --- a/drivers/char/agp/intel-agp.c Thu Feb 27 13:12:38 2003 +++ b/drivers/char/agp/intel-agp.c Wed Apr 9 15:56:26 2003 @@ -960,6 +960,34 @@ return 0; } +static int intel_7505_configure(void) +{ + u32 temp; + u16 temp2; + struct aper_size_info_8 *current_size; + + current_size = A_SIZE_8(agp_bridge->current_size); + + /* aperture size */ + pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value); + + /* address to map to */ + pci_read_config_dword(agp_bridge->dev, INTEL_APBASE, &temp); + agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); + + /* attbase - aperture base */ + pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr); + + /* agpctrl */ + pci_write_config_dword(agp_bridge->dev, INTEL_AGPCTRL, 0x0000); + + /* mchcfg */ + pci_read_config_word(agp_bridge->dev, INTEL_I7505_MCHCFG, &temp2); + pci_write_config_word(agp_bridge->dev, INTEL_I7505_MCHCFG, temp2 | (1 << 9)); + + return 0; +} + static unsigned long intel_mask_memory(unsigned long addr, int type) { /* Memory type is ignored */ @@ -1026,7 +1054,7 @@ agp_bridge->cleanup = intel_cleanup; agp_bridge->tlb_flush = intel_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1055,7 +1083,7 @@ agp_bridge->cleanup = intel_8xx_cleanup; agp_bridge->tlb_flush = intel_8xx_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1085,7 +1113,7 @@ agp_bridge->cleanup = intel_820_cleanup; agp_bridge->tlb_flush = intel_820_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1114,7 +1142,7 @@ agp_bridge->cleanup = intel_8xx_cleanup; agp_bridge->tlb_flush = intel_8xx_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1143,7 +1171,7 @@ agp_bridge->cleanup = intel_8xx_cleanup; agp_bridge->tlb_flush = intel_8xx_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1172,7 +1200,7 @@ agp_bridge->cleanup = intel_8xx_cleanup; agp_bridge->tlb_flush = intel_8xx_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1201,7 +1229,7 @@ agp_bridge->cleanup = intel_8xx_cleanup; agp_bridge->tlb_flush = intel_8xx_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1230,7 +1258,7 @@ agp_bridge->cleanup = intel_8xx_cleanup; agp_bridge->tlb_flush = intel_8xx_tlbflush; agp_bridge->mask_memory = intel_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -1246,6 +1274,34 @@ return 0; } +static int __init intel_7505_setup (struct pci_dev *pdev) +{ + agp_bridge->masks = intel_generic_masks; + agp_bridge->aperture_sizes = (void *) intel_8xx_sizes; + agp_bridge->size_type = U8_APER_SIZE; + agp_bridge->num_aperture_sizes = 7; + agp_bridge->dev_private_data = NULL; + agp_bridge->needs_scratch_page = FALSE; + agp_bridge->configure = intel_7505_configure; + agp_bridge->fetch_size = intel_8xx_fetch_size; + agp_bridge->cleanup = intel_8xx_cleanup; + agp_bridge->tlb_flush = intel_8xx_tlbflush; + agp_bridge->mask_memory = intel_mask_memory; + agp_bridge->agp_enable = agp_generic_enable; + agp_bridge->cache_flush = global_cache_flush; + agp_bridge->create_gatt_table = agp_generic_create_gatt_table; + agp_bridge->free_gatt_table = agp_generic_free_gatt_table; + agp_bridge->insert_memory = agp_generic_insert_memory; + agp_bridge->remove_memory = agp_generic_remove_memory; + agp_bridge->alloc_by_type = agp_generic_alloc_by_type; + agp_bridge->free_by_type = agp_generic_free_by_type; + agp_bridge->agp_alloc_page = agp_generic_alloc_page; + agp_bridge->agp_destroy_page = agp_generic_destroy_page; + agp_bridge->suspend = agp_generic_suspend; + agp_bridge->resume = agp_generic_resume; + agp_bridge->cant_use_aperture = 0; + return 0; +} struct agp_device_ids intel_agp_device_ids[] __initdata = { { @@ -1328,6 +1384,18 @@ .chipset = INTEL_I865_G, .chipset_name = "865G", .chipset_setup = intel_845_setup + }, + { + .device_id = PCI_DEVICE_ID_INTEL_7505_0, + .chipset = INTEL_E7505, + .chipset_name = "E7505", + .chipset_setup = intel_7505_setup + }, + { + .device_id = PCI_DEVICE_ID_INTEL_7205_0, + .chipset = INTEL_E7505, + .chipset_name = "E7205", + .chipset_setup = intel_7505_setup }, { }, /* dummy final entry, always present */ }; diff -Nru a/drivers/char/agp/sis-agp.c b/drivers/char/agp/sis-agp.c --- a/drivers/char/agp/sis-agp.c Mon Feb 10 09:53:20 2003 +++ b/drivers/char/agp/sis-agp.c Mon Mar 24 12:21:12 2003 @@ -99,7 +99,7 @@ agp_bridge->cleanup = sis_cleanup; agp_bridge->tlb_flush = sis_tlbflush; agp_bridge->mask_memory = sis_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; diff -Nru a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c --- a/drivers/char/agp/via-agp.c Tue Feb 18 10:25:13 2003 +++ b/drivers/char/agp/via-agp.c Wed Apr 9 17:15:09 2003 @@ -101,7 +101,6 @@ }; -#ifdef CONFIG_AGP3 static int via_fetch_size_agp3(void) { int i; @@ -186,7 +185,7 @@ agp_bridge->num_aperture_sizes = 10; agp_bridge->dev_private_data = NULL; agp_bridge->needs_scratch_page = FALSE; - agp_bridge->agp_enable = agp_generic_agp_3_0_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->configure = via_configure_agp3; agp_bridge->fetch_size = via_fetch_size_agp3; agp_bridge->cleanup = via_cleanup_agp3; @@ -206,18 +205,10 @@ agp_bridge->cant_use_aperture = 0; return 0; } -#else -static int __init via_generic_agp3_setup (struct pci_dev *pdev) -{ - printk (KERN_INFO PFX "Bridge in AGP3 mode, but CONFIG_AGP3=n\n"); - return -ENODEV; -} -#endif /* CONFIG_AGP3 */ static int __init via_generic_setup (struct pci_dev *pdev) { -#ifdef CONFIG_AGP3 /* Garg, there are KT400s with KT266 IDs. */ if (pdev->device == PCI_DEVICE_ID_VIA_8367_0) { @@ -235,7 +226,6 @@ /* Its in 2.0 mode, drop through. */ } } -#endif agp_bridge->masks = via_generic_masks; agp_bridge->aperture_sizes = (void *) via_generic_sizes; @@ -248,7 +238,7 @@ agp_bridge->cleanup = via_cleanup; agp_bridge->tlb_flush = via_tlbflush; agp_bridge->mask_memory = via_mask_memory; - agp_bridge->agp_enable = agp_generic_agp_enable; + agp_bridge->agp_enable = agp_generic_enable; agp_bridge->cache_flush = global_cache_flush; agp_bridge->create_gatt_table = agp_generic_create_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table; @@ -319,10 +309,10 @@ }, /* VT8361 */ -/* { + { .device_id = PCI_DEVICE_ID_VIA_8361, // 0x3112 .chipset_name = "Apollo KLE133", - }, */ + }, /* VT8365 / VT8362 */ { @@ -331,10 +321,10 @@ }, /* VT8753A */ -/* { - .device_id = PCI_DEVICE_ID_VIA_8753_0, // 0x3128 + { + .device_id = PCI_DEVICE_ID_VIA_8753_0, .chipset_name = "P4X266", - }, */ + }, /* VT8366 */ { @@ -349,16 +339,16 @@ }, /* KM266 / PM266 */ -/* { - .device_id = PCI_DEVICE_ID_VIA_KM266, // 0x3116 + { + .device_id = PCI_DEVICE_ID_VIA_KM266, .chipset_name = "KM266/PM266", - }, */ + }, /* CLE266 */ -/* { - .device_id = PCI_DEVICE_ID_VIA_CLE266, // 0x3123 + { + .device_id = PCI_DEVICE_ID_VIA_CLE266, .chipset_name = "CLE266", - }, */ + }, { .device_id = PCI_DEVICE_ID_VIA_8377_0, @@ -374,16 +364,16 @@ }, /* VT8752*/ -/* { - .device_id = PCI_DEVICE_ID_VIA_8752, // 0x3148 + { + .device_id = PCI_DEVICE_ID_VIA_8752, .chipset_name = "ProSavage DDR P4M266", - }, */ + }, /* KN266/PN266 */ -/* { - .device_id = PCI_DEVICE_ID_KN266, // 0x3156 + { + .device_id = PCI_DEVICE_ID_VIA_KN266, .chipset_name = "KN266/PN266", - }, */ + }, /* VT8754 */ { @@ -392,28 +382,28 @@ }, /* P4N333 */ -/* { - .device_id = PCI_DEVICE_ID_VIA_P4N333, // 0x3178 + { + .device_id = PCI_DEVICE_ID_VIA_P4N333, .chipset_name = "P4N333", - }, */ + }, /* P4X600 */ -/* { - .device_id = PCI_DEVICE_ID_VIA_P4X600, // 0x0198 + { + .device_id = PCI_DEVICE_ID_VIA_P4X600, .chipset_name = "P4X600", - }, */ + }, /* KM400 */ -/* { - .device_id = PCI_DEVICE_ID_VIA_KM400, // 0x3205 + { + .device_id = PCI_DEVICE_ID_VIA_KM400, .chipset_name = "KM400", - }, */ + }, /* P4M400 */ -/* { - .device_id = PCI_DEVICE_ID_VIA_P4M400, // 0x3209 + { + .device_id = PCI_DEVICE_ID_VIA_P4M400, .chipset_name = "PM400", - }, */ + }, { }, /* dummy final entry, always present */ }; diff -Nru a/drivers/char/applicom.c b/drivers/char/applicom.c --- a/drivers/char/applicom.c Sun Nov 17 19:59:01 2002 +++ b/drivers/char/applicom.c Thu Apr 3 15:03:46 2003 @@ -29,22 +29,12 @@ #include #include #include -#include #include #include #include "applicom.h" -#if LINUX_VERSION_CODE < 0x20300 -/* These probably want adding to */ -#define init_waitqueue_head(x) do { *(x) = NULL; } while (0) -#define PCI_BASE_ADDRESS(dev) (dev->base_address[0]) -#define DECLARE_WAIT_QUEUE_HEAD(x) struct wait_queue *x -#define __setup(x,y) /* */ -#else -#define PCI_BASE_ADDRESS(dev) (dev->resource[0].start) -#endif /* NOTE: We use for loops with {write,read}b() instead of memcpy_{from,to}io throughout this driver. This is because @@ -220,18 +210,18 @@ if (pci_enable_device(dev)) return -EIO; - RamIO = ioremap(PCI_BASE_ADDRESS(dev), LEN_RAM_IO); + RamIO = ioremap(dev->resource[0].start, LEN_RAM_IO); if (!RamIO) { - printk(KERN_INFO "ac.o: Failed to ioremap PCI memory space at 0x%lx\n", PCI_BASE_ADDRESS(dev)); + printk(KERN_INFO "ac.o: Failed to ioremap PCI memory space at 0x%lx\n", dev->resource[0].start); return -EIO; } printk(KERN_INFO "Applicom %s found at mem 0x%lx, irq %d\n", - applicom_pci_devnames[dev->device-1], PCI_BASE_ADDRESS(dev), + applicom_pci_devnames[dev->device-1], dev->resource[0].start, dev->irq); - if (!(boardno = ac_register_board(PCI_BASE_ADDRESS(dev), + if (!(boardno = ac_register_board(dev->resource[0].start, (unsigned long)RamIO,0))) { printk(KERN_INFO "ac.o: PCI Applicom device doesn't have correct signature.\n"); iounmap(RamIO); diff -Nru a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h --- a/drivers/char/drm/drmP.h Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/drmP.h Wed Apr 9 21:45:21 2003 @@ -242,17 +242,17 @@ DRM(ioremapfree)( (map)->handle, (map)->size ); \ } while (0) -#define DRM_FIND_MAP(_map, _o) \ -do { \ - struct list_head *_list; \ - list_for_each( _list, &dev->maplist->head ) { \ - drm_map_list_t *_entry = (drm_map_list_t *)_list; \ - if ( _entry->map && \ - _entry->map->offset == (_o) ) { \ - (_map) = _entry->map; \ - break; \ - } \ - } \ +#define DRM_FIND_MAP(_map, _o) \ +do { \ + struct list_head *_list; \ + list_for_each( _list, &dev->maplist->head ) { \ + drm_map_list_t *_entry = list_entry( _list, drm_map_list_t, head ); \ + if ( _entry->map && \ + _entry->map->offset == (_o) ) { \ + (_map) = _entry->map; \ + break; \ + } \ + } \ } while(0) #define DRM_DROP_MAP(_map) diff -Nru a/drivers/char/drm/drm_bufs.h b/drivers/char/drm/drm_bufs.h --- a/drivers/char/drm/drm_bufs.h Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/drm_bufs.h Wed Apr 9 21:45:21 2003 @@ -106,7 +106,7 @@ switch ( map->type ) { case _DRM_REGISTERS: case _DRM_FRAME_BUFFER: -#if !defined(__sparc__) && !defined(__alpha__) +#if !defined(__sparc__) && !defined(__alpha__) && !defined(__ia64__) if ( map->offset + map->size < map->offset || map->offset < virt_to_phys(high_memory) ) { DRM(free)( map, sizeof(*map), DRM_MEM_MAPS ); @@ -210,7 +210,7 @@ down(&dev->struct_sem); list = &dev->maplist->head; list_for_each(list, &dev->maplist->head) { - r_list = (drm_map_list_t *) list; + r_list = list_entry(list, drm_map_list_t, head); if(r_list->map && r_list->map->handle == request.handle && diff -Nru a/drivers/char/drm/drm_context.h b/drivers/char/drm/drm_context.h --- a/drivers/char/drm/drm_context.h Thu Mar 13 16:52:15 2003 +++ b/drivers/char/drm/drm_context.h Wed Apr 9 21:45:21 2003 @@ -194,7 +194,7 @@ down(&dev->struct_sem); list_for_each(list, &dev->maplist->head) { - r_list = (drm_map_list_t *)list; + r_list = list_entry(list, drm_map_list_t, head); if(r_list->map && r_list->map->handle == request.handle) goto found; diff -Nru a/drivers/char/drm/drm_dma.h b/drivers/char/drm/drm_dma.h --- a/drivers/char/drm/drm_dma.h Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/drm_dma.h Wed Apr 9 21:45:21 2003 @@ -444,7 +444,7 @@ d->flags & _DRM_DMA_WAIT); if (!buf) break; if (buf->pending || buf->waiting) { - DRM_ERROR("Free buffer %d in use by %x (w%d, p%d)\n", + DRM_ERROR("Free buffer %d in use: filp %p (w%d, p%d)\n", buf->idx, buf->filp, buf->waiting, @@ -651,7 +651,7 @@ * for the same vblank sequence number; nothing to be done in * that case */ - list_for_each( ( (struct list_head *) vbl_sig ), &dev->vbl_sigs.head ) { + list_for_each_entry( vbl_sig, &dev->vbl_sigs.head, head ) { if (vbl_sig->sequence == vblwait.request.sequence && vbl_sig->info.si_signo == vblwait.request.signal && vbl_sig->task == current) @@ -702,19 +702,20 @@ void DRM(vbl_send_signals)( drm_device_t *dev ) { - struct list_head *tmp; + struct list_head *list, *tmp; drm_vbl_sig_t *vbl_sig; unsigned int vbl_seq = atomic_read( &dev->vbl_received ); unsigned long flags; spin_lock_irqsave( &dev->vbl_lock, flags ); - list_for_each_safe( ( (struct list_head *) vbl_sig ), tmp, &dev->vbl_sigs.head ) { + list_for_each_safe( list, tmp, &dev->vbl_sigs.head ) { + vbl_sig = list_entry( list, drm_vbl_sig_t, head ); if ( ( vbl_seq - vbl_sig->sequence ) <= (1<<23) ) { vbl_sig->info.si_code = vbl_seq; send_sig_info( vbl_sig->info.si_signo, &vbl_sig->info, vbl_sig->task ); - list_del( (struct list_head *) vbl_sig ); + list_del( list ); DRM_FREE( vbl_sig, sizeof(*vbl_sig) ); diff -Nru a/drivers/char/drm/drm_ioctl.h b/drivers/char/drm/drm_ioctl.h --- a/drivers/char/drm/drm_ioctl.h Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/drm_ioctl.h Wed Apr 9 21:45:21 2003 @@ -204,7 +204,7 @@ i = 0; list_for_each(list, &dev->maplist->head) { if(i == idx) { - r_list = (drm_map_list_t *)list; + r_list = list_entry(list, drm_map_list_t, head); break; } i++; diff -Nru a/drivers/char/drm/drm_os_linux.h b/drivers/char/drm/drm_os_linux.h --- a/drivers/char/drm/drm_os_linux.h Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/drm_os_linux.h Wed Apr 9 21:45:21 2003 @@ -46,9 +46,8 @@ #define DRM_GETSAREA() \ do { \ - struct list_head *list; \ - list_for_each( list, &dev->maplist->head ) { \ - drm_map_list_t *entry = (drm_map_list_t *)list; \ + drm_map_list_t *entry; \ + list_for_each_entry( entry, &dev->maplist->head, head ) { \ if ( entry->map && \ entry->map->type == _DRM_SHM && \ (entry->map->flags & _DRM_CONTAINS_LOCK) ) { \ @@ -60,28 +59,28 @@ #define DRM_HZ HZ -#define DRM_WAIT_ON( ret, queue, timeout, condition ) \ -do { \ - DECLARE_WAITQUEUE(entry, current); \ - unsigned long end = jiffies + (timeout); \ - add_wait_queue(&(queue), &entry); \ - \ - for (;;) { \ - current->state = TASK_INTERRUPTIBLE; \ - if (condition) \ - break; \ - if((signed)(end - jiffies) <= 0) { \ - ret = -EBUSY; \ - break; \ - } \ +#define DRM_WAIT_ON( ret, queue, timeout, condition ) \ +do { \ + DECLARE_WAITQUEUE(entry, current); \ + unsigned long end = jiffies + (timeout); \ + add_wait_queue(&(queue), &entry); \ + \ + for (;;) { \ + current->state = TASK_INTERRUPTIBLE; \ + if (condition) \ + break; \ + if (time_after_eq(jiffies, end)) { \ + ret = -EBUSY; \ + break; \ + } \ schedule_timeout((HZ/100 > 1) ? HZ/100 : 1); \ - if (signal_pending(current)) { \ - ret = -EINTR; \ - break; \ - } \ - } \ - current->state = TASK_RUNNING; \ - remove_wait_queue(&(queue), &entry); \ + if (signal_pending(current)) { \ + ret = -EINTR; \ + break; \ + } \ + } \ + current->state = TASK_RUNNING; \ + remove_wait_queue(&(queue), &entry); \ } while (0) diff -Nru a/drivers/char/drm/drm_proc.h b/drivers/char/drm/drm_proc.h --- a/drivers/char/drm/drm_proc.h Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/drm_proc.h Wed Apr 9 21:45:21 2003 @@ -168,9 +168,9 @@ struct list_head *list; /* Hardcoded from _DRM_FRAME_BUFFER, - _DRM_REGISTERS, _DRM_SHM, and - _DRM_AGP. */ - const char *types[] = { "FB", "REG", "SHM", "AGP" }; + _DRM_REGISTERS, _DRM_SHM, _DRM_AGP, and + _DRM_SCATTER_GATHER. */ + const char *types[] = { "FB", "REG", "SHM", "AGP", "SG" }; const char *type; int i; @@ -186,10 +186,10 @@ "address mtrr\n\n"); i = 0; if (dev->maplist != NULL) list_for_each(list, &dev->maplist->head) { - r_list = (drm_map_list_t *)list; + r_list = list_entry(list, drm_map_list_t, head); map = r_list->map; if(!map) continue; - if (map->type < 0 || map->type > 3) type = "??"; + if (map->type < 0 || map->type > 4) type = "??"; else type = types[map->type]; DRM_PROC_PRINT("%4d 0x%08lx 0x%08lx %4.4s 0x%02x 0x%08lx ", i, diff -Nru a/drivers/char/drm/drm_vm.h b/drivers/char/drm/drm_vm.h --- a/drivers/char/drm/drm_vm.h Thu Mar 13 16:52:15 2003 +++ b/drivers/char/drm/drm_vm.h Wed Apr 9 21:45:21 2003 @@ -73,7 +73,7 @@ if(!dev->agp || !dev->agp->cant_use_aperture) goto vm_nopage_error; list_for_each(list, &dev->maplist->head) { - r_list = (drm_map_list_t *)list; + r_list = list_entry(list, drm_map_list_t, head); map = r_list->map; if (!map) continue; if (map->offset == VM_OFFSET(vma)) break; @@ -189,7 +189,7 @@ found_maps = 0; list = &dev->maplist->head; list_for_each(list, &dev->maplist->head) { - r_list = (drm_map_list_t *) list; + r_list = list_entry(list, drm_map_list_t, head); if (r_list->map == map) found_maps++; } @@ -392,7 +392,7 @@ list_for_each(list, &dev->maplist->head) { unsigned long off; - r_list = (drm_map_list_t *)list; + r_list = list_entry(list, drm_map_list_t, head); map = r_list->map; if (!map) continue; off = DRIVER_GET_MAP_OFS(); diff -Nru a/drivers/char/drm/gamma_dma.c b/drivers/char/drm/gamma_dma.c --- a/drivers/char/drm/gamma_dma.c Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/gamma_dma.c Wed Apr 9 21:45:21 2003 @@ -605,7 +605,7 @@ memset( dev_priv, 0, sizeof(drm_gamma_private_t) ); list_for_each(list, &dev->maplist->head) { - drm_map_list_t *r_list = (drm_map_list_t *)list; + drm_map_list_t *r_list = list_entry(list, drm_map_list_t, head); if( r_list->map && r_list->map->type == _DRM_SHM && r_list->map->flags & _DRM_CONTAINS_LOCK ) { @@ -809,7 +809,7 @@ down(&dev->struct_sem); r_list = NULL; list_for_each(list, &dev->maplist->head) { - r_list = (drm_map_list_t *)list; + r_list = list_entry(list, drm_map_list_t, head); if(r_list->map && r_list->map->handle == request.handle) break; } diff -Nru a/drivers/char/drm/i810_dma.c b/drivers/char/drm/i810_dma.c --- a/drivers/char/drm/i810_dma.c Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/i810_dma.c Wed Apr 9 21:45:21 2003 @@ -340,7 +340,7 @@ memset(dev_priv, 0, sizeof(drm_i810_private_t)); list_for_each(list, &dev->maplist->head) { - drm_map_list_t *r_list = (drm_map_list_t *)list; + drm_map_list_t *r_list = list_entry(list, drm_map_list_t, head); if( r_list->map && r_list->map->type == _DRM_SHM && r_list->map->flags & _DRM_CONTAINS_LOCK ) { diff -Nru a/drivers/char/drm/i830_dma.c b/drivers/char/drm/i830_dma.c --- a/drivers/char/drm/i830_dma.c Sat Mar 29 22:34:33 2003 +++ b/drivers/char/drm/i830_dma.c Wed Apr 9 21:45:21 2003 @@ -363,7 +363,7 @@ memset(dev_priv, 0, sizeof(drm_i830_private_t)); list_for_each(list, &dev->maplist->head) { - drm_map_list_t *r_list = (drm_map_list_t *)list; + drm_map_list_t *r_list = list_entry(list, drm_map_list_t, head); if( r_list->map && r_list->map->type == _DRM_SHM && r_list->map->flags & _DRM_CONTAINS_LOCK ) { diff -Nru a/drivers/char/sx.c b/drivers/char/sx.c --- a/drivers/char/sx.c Tue Feb 25 02:08:24 2003 +++ b/drivers/char/sx.c Thu Apr 3 15:03:46 2003 @@ -238,7 +238,6 @@ #include "sxboards.h" #include "sxwindow.h" -#include #include #include "sx.h" @@ -1726,9 +1725,9 @@ tmp = kmalloc (SX_CHUNK_SIZE, GFP_USER); if (!tmp) return -ENOMEM; - Get_user (nbytes, descr++); - Get_user (offset, descr++); - Get_user (data, descr++); + get_user (nbytes, descr++); + get_user (offset, descr++); + get_user (data, descr++); while (nbytes && data) { for (i=0;inbytes)?nbytes-i:SX_CHUNK_SIZE); } - Get_user (nbytes, descr++); - Get_user (offset, descr++); - Get_user (data, descr++); + get_user (nbytes, descr++); + get_user (offset, descr++); + get_user (data, descr++); } kfree (tmp); sx_nports += sx_init_board (board); @@ -1816,13 +1815,13 @@ rc = 0; switch (cmd) { case TIOCGSOFTCAR: - rc = Put_user(((tty->termios->c_cflag & CLOCAL) ? 1 : 0), + rc = put_user(((tty->termios->c_cflag & CLOCAL) ? 1 : 0), (unsigned int *) arg); break; case TIOCSSOFTCAR: if ((rc = verify_area(VERIFY_READ, (void *) arg, sizeof(int))) == 0) { - Get_user(ival, (unsigned int *) arg); + get_user(ival, (unsigned int *) arg); tty->termios->c_cflag = (tty->termios->c_cflag & ~CLOCAL) | (ival ? CLOCAL : 0); @@ -1848,7 +1847,7 @@ case TIOCMBIS: if ((rc = verify_area(VERIFY_READ, (void *) arg, sizeof(unsigned int))) == 0) { - Get_user(ival, (unsigned int *) arg); + get_user(ival, (unsigned int *) arg); sx_setsignals(port, ((ival & TIOCM_DTR) ? 1 : -1), ((ival & TIOCM_RTS) ? 1 : -1)); sx_reconfigure_port(port); @@ -1857,7 +1856,7 @@ case TIOCMBIC: if ((rc = verify_area(VERIFY_READ, (void *) arg, sizeof(unsigned int))) == 0) { - Get_user(ival, (unsigned int *) arg); + get_user(ival, (unsigned int *) arg); sx_setsignals(port, ((ival & TIOCM_DTR) ? 0 : -1), ((ival & TIOCM_RTS) ? 0 : -1)); sx_reconfigure_port(port); @@ -1866,7 +1865,7 @@ case TIOCMSET: if ((rc = verify_area(VERIFY_READ, (void *) arg, sizeof(unsigned int))) == 0) { - Get_user(ival, (unsigned int *) arg); + get_user(ival, (unsigned int *) arg); sx_setsignals(port, ((ival & TIOCM_DTR) ? 1 : 0), ((ival & TIOCM_RTS) ? 1 : 0)); sx_reconfigure_port(port); @@ -2484,7 +2483,7 @@ printk (KERN_DEBUG "sx: performing cntrl reg fix: %08x -> %08x\n", t, CNTRL_REG_GOODVALUE); writel (CNTRL_REG_GOODVALUE, rebase + CNTRL_REG_OFFSET); } - my_iounmap (hwbase, rebase); + iounmap ((char *) rebase); } #endif @@ -2574,7 +2573,7 @@ 0x18000 .... */ if (IS_CF_BOARD (board)) board->base += 0x18000; - board->irq = get_irq (pdev); + board->irq = pdev->irq; sx_dprintk (SX_DEBUG_PROBE, "Got a specialix card: %x/%lx(%d) %x.\n", tint, boards[found].base, board->irq, board->flags); @@ -2583,7 +2582,7 @@ found++; fix_sx_pci (pdev, board); } else - my_iounmap (board->hw_base, board->base); + iounmap ((char *) (board->base)); } } #endif @@ -2600,7 +2599,7 @@ if (probe_sx (board)) { found++; } else { - my_iounmap (board->hw_base, board->base); + iounmap ((char *) (board->base)); } } @@ -2616,7 +2615,7 @@ if (probe_si (board)) { found++; } else { - my_iounmap (board->hw_base, board->base); + iounmap ((char *) (board->base)); } } for (i=0;ihw_base, board->base); + iounmap ((char *) (board->base)); } } @@ -2692,7 +2691,7 @@ /* It is safe/allowed to del_timer a non-active timer */ del_timer (& board->timer); - my_iounmap (board->hw_base, board->base); + iounmap ((char *) (board->base)); } } if (misc_deregister(&sx_fw_device) < 0) { diff -Nru a/drivers/char/tty_io.c b/drivers/char/tty_io.c --- a/drivers/char/tty_io.c Thu Apr 3 10:20:22 2003 +++ b/drivers/char/tty_io.c Tue Apr 8 02:37:03 2003 @@ -136,7 +136,7 @@ * redirect is the pseudo-tty that console output * is redirected to if asked by TIOCCONS. */ -struct tty_struct * redirect; +static struct tty_struct *redirect; static void initialize_tty_struct(struct tty_struct *tty); diff -Nru a/drivers/char/upd4990a.c b/drivers/char/upd4990a.c --- a/drivers/char/upd4990a.c Thu Mar 13 17:23:19 2003 +++ b/drivers/char/upd4990a.c Thu Apr 3 14:43:02 2003 @@ -343,19 +343,28 @@ static int __init rtc_init(void) { + int err = 0; + if (!request_region(UPD4990A_IO, 1, "rtc")) { printk(KERN_ERR "upd4990a: could not acquire I/O port %#x\n", UPD4990A_IO); return -EBUSY; } + err = misc_register(&rtc_dev); + if (err) { + printk(KERN_ERR "upd4990a: can't misc_register() on minor=%d\n", + RTC_MINOR); + release_region(UPD4990A_IO, 1); + return err; + } + #if 0 printk(KERN_INFO "\xB6\xDA\xDD\xC0\xDE \xC4\xDE\xB9\xB2 Driver\n"); /* Calender Clock Driver */ #else printk(KERN_INFO "Real Time Clock driver for NEC PC-9800 v" RTC98_VERSION "\n"); #endif - misc_register(&rtc_dev); create_proc_read_entry("driver/rtc", 0, NULL, rtc_read_proc, NULL); init_timer(&rtc_uie_timer); diff -Nru a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c --- a/drivers/ide/ide-probe.c Sat Mar 22 07:38:05 2003 +++ b/drivers/ide/ide-probe.c Tue Apr 8 05:10:20 2003 @@ -1008,8 +1008,8 @@ * do not. */ - q->queuedata = HWGROUP(drive); blk_init_queue(q, do_ide_request, &ide_lock); + q->queuedata = HWGROUP(drive); drive->queue_setup = 1; blk_queue_segment_boundary(q, 0xffff); diff -Nru a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c --- a/drivers/ide/pci/hpt366.c Sat Mar 22 12:32:12 2003 +++ b/drivers/ide/pci/hpt366.c Sun Apr 6 15:03:51 2003 @@ -1106,13 +1106,10 @@ ((findev->devfn - dev->devfn) == 1) && (PCI_FUNC(findev->devfn) & 1)) { u8 irq = 0, irq2 = 0; - pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); - pci_read_config_byte(findev, PCI_INTERRUPT_LINE, &irq2); - if (irq != irq2) { - pci_write_config_byte(findev, - PCI_INTERRUPT_LINE, irq); + if (findev->irq != dev->irq) { + /* FIXME: we need a core pci_set_interrupt() */ findev->irq = dev->irq; - printk("%s: pci-config space interrupt " + printk(KERN_WARNING "%s: pci-config space interrupt " "fixed.\n", d->name); } ide_setup_pci_devices(dev, findev, d); diff -Nru a/drivers/ide/pci/pdc202xx_new.c b/drivers/ide/pci/pdc202xx_new.c --- a/drivers/ide/pci/pdc202xx_new.c Thu Mar 6 15:37:05 2003 +++ b/drivers/ide/pci/pdc202xx_new.c Sun Apr 6 15:04:50 2003 @@ -592,15 +592,8 @@ if ((findev->vendor == dev->vendor) && (findev->device == dev->device) && (PCI_SLOT(findev->devfn) & 2)) { - u8 irq = 0, irq2 = 0; - pci_read_config_byte(dev, - PCI_INTERRUPT_LINE, &irq); - pci_read_config_byte(findev, - PCI_INTERRUPT_LINE, &irq2); - if (irq != irq2) { + if (findev->irq != dev->irq) { findev->irq = dev->irq; - pci_write_config_byte(findev, - PCI_INTERRUPT_LINE, irq); } ide_setup_pci_devices(dev, findev, d); return; diff -Nru a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c --- a/drivers/ide/pci/serverworks.c Sat Mar 22 12:32:12 2003 +++ b/drivers/ide/pci/serverworks.c Sun Apr 6 10:44:38 2003 @@ -419,7 +419,13 @@ static void svwks_tune_drive (ide_drive_t *drive, u8 pio) { - (void) svwks_tune_chipset(drive, (XFER_PIO_0 + pio)); + /* Tune to desired value or to "best". We must not adjust + "best" when we adjust from pio numbers to rate values! */ + + if(pio != 255) + (void) svwks_tune_chipset(drive, (XFER_PIO_0 + pio)); + else + (void) svwks_tune_chipset(drive, 255); } static int config_chipset_for_dma (ide_drive_t *drive) diff -Nru a/drivers/input/keyboard/98kbd.c b/drivers/input/keyboard/98kbd.c --- a/drivers/input/keyboard/98kbd.c Thu Mar 20 10:43:51 2003 +++ b/drivers/input/keyboard/98kbd.c Thu Apr 3 14:41:43 2003 @@ -189,6 +189,13 @@ input_sync(&kbd98->dev); return; + case KEY_CAPSLOCK: + input_report_key(&kbd98->dev, keycode, 1); + input_sync(&kbd98->dev); + input_report_key(&kbd98->dev, keycode, 0); + input_sync(&kbd98->dev); + return; + case KBD98_KEY_NULL: return; diff -Nru a/drivers/media/Kconfig b/drivers/media/Kconfig --- a/drivers/media/Kconfig Sun Feb 9 17:29:49 2003 +++ b/drivers/media/Kconfig Mon Apr 7 13:16:30 2003 @@ -32,5 +32,24 @@ source "drivers/media/dvb/Kconfig" +source "drivers/media/common/Kconfig" + +config VIDEO_TUNER + tristate + default y if VIDEO_BT848=y || VIDEO_SAA7134=y || VIDEO_MXB=y + default m if VIDEO_BT848=m || VIDEO_SAA7134=m || VIDEO_MXB=m + depends on VIDEO_DEV + +config VIDEO_BUF + tristate + default y if VIDEO_BT848=y || VIDEO_SAA7134=y || VIDEO_SAA7146=y + default m if VIDEO_BT848=m || VIDEO_SAA7134=m || VIDEO_SAA7146=m + depends on VIDEO_DEV + +config VIDEO_BTCX + tristate + default VIDEO_BT848 + depends on VIDEO_DEV + endmenu diff -Nru a/drivers/media/Makefile b/drivers/media/Makefile --- a/drivers/media/Makefile Sat Dec 14 04:38:56 2002 +++ b/drivers/media/Makefile Mon Apr 7 13:16:30 2003 @@ -2,4 +2,4 @@ # Makefile for the kernel multimedia device drivers. # -obj-y := video/ radio/ dvb/ +obj-y := video/ radio/ dvb/ common/ diff -Nru a/drivers/media/common/Kconfig b/drivers/media/common/Kconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/Kconfig Mon Apr 7 13:16:30 2003 @@ -0,0 +1,11 @@ +config VIDEO_SAA7146 + tristate + default y if DVB_AV7110=y || DVB_BUDGET=y || DVB_BUDGET_AV=y || VIDEO_MXB=y || VIDEO_DPC=y + default m if DVB_AV7110=m || DVB_BUDGET=m || DVB_BUDGET_AV=m || VIDEO_MXB=m || VIDEO_DPC=m + depends on VIDEO_DEV && PCI + +config VIDEO_VIDEOBUF + tristate + default y if VIDEO_SAA7134=y || VIDEO_BT848=y || VIDEO_SAA7146=y + default m if VIDEO_SAA7134=m || VIDEO_BT848=m || VIDEO_SAA7146=m + depends on VIDEO_DEV diff -Nru a/drivers/media/common/Makefile b/drivers/media/common/Makefile --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/Makefile Mon Apr 7 13:16:30 2003 @@ -0,0 +1,5 @@ +saa7146-objs := saa7146_i2c.o saa7146_core.o +saa7146_vv-objs := saa7146_fops.o saa7146_video.o saa7146_hlp.o saa7146_vbi.o + +obj-$(CONFIG_VIDEO_SAA7146) += saa7146.o saa7146_vv.o + diff -Nru a/drivers/media/common/saa7146_core.c b/drivers/media/common/saa7146_core.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/saa7146_core.c Mon Apr 7 13:16:30 2003 @@ -0,0 +1,524 @@ +/* + saa7146.o - driver for generic saa7146-based hardware + + Copyright (C) 1998-2003 Michael Hunold + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME saa7146 +#endif + +/* global variables */ +struct list_head saa7146_devices; +struct semaphore saa7146_devices_lock; + +static int initialized = 0; +int saa7146_num = 0; + +unsigned int saa7146_debug = 0; + +MODULE_PARM(saa7146_debug,"i"); +MODULE_PARM_DESC(saa7146_debug, "debug level (default: 0)"); + +#if 0 +static void dump_registers(struct saa7146_dev* dev) +{ + int i = 0; + + INFO((" @ %li jiffies:\n",jiffies)); + for(i = 0; i <= 0x148; i+=4) { + printk("0x%03x: 0x%08x\n",i,saa7146_read(dev,i)); + } +} +#endif + +/**************************************************************************** + * general helper functions + ****************************************************************************/ + +/* this is videobuf_vmalloc_to_sg() from video-buf.c */ +static +struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages) +{ + struct scatterlist *sglist; + struct page *pg; + int i; + + sglist = kmalloc(sizeof(struct scatterlist)*nr_pages, GFP_KERNEL); + if (NULL == sglist) + return NULL; + memset(sglist,0,sizeof(struct scatterlist)*nr_pages); + for (i = 0; i < nr_pages; i++, virt += PAGE_SIZE) { + pg = vmalloc_to_page(virt); + if (NULL == pg) + goto err; + if (PageHighMem(pg)) + BUG(); + sglist[i].page = pg; + sglist[i].length = PAGE_SIZE; + } + return sglist; + + err: + kfree(sglist); + return NULL; +} + +/********************************************************************************/ +/* common page table functions */ + +#define SAA7146_PGTABLE_SIZE 4096 + +char *saa7146_vmalloc_build_pgtable(struct pci_dev *pci, long length, struct saa7146_pgtable *pt) +{ + struct scatterlist *slist = NULL; + int pages = (length+PAGE_SIZE-1)/PAGE_SIZE; + char *mem = vmalloc(length); + int slen = 0; + + if (NULL == mem) { + return NULL; + } + + if (!(slist = vmalloc_to_sg(mem, pages))) { + vfree(mem); + return NULL; + } + + if (saa7146_pgtable_alloc(pci, pt)) { + kfree(slist); + vfree(mem); + return NULL; + } + + slen = pci_map_sg(pci,slist,pages,PCI_DMA_FROMDEVICE); + saa7146_pgtable_build_single(pci, pt, slist, slen); + + /* fixme: here's a memory leak: slist never gets freed by any other + function ...*/ + return mem; +} + +void saa7146_pgtable_free(struct pci_dev *pci, struct saa7146_pgtable *pt) +{ +//fm DEB_EE(("pci:%p, pt:%p\n",pci,pt)); + + if (NULL == pt->cpu) + return; + pci_free_consistent(pci, pt->size, pt->cpu, pt->dma); + pt->cpu = NULL; +} + +int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt) +{ + u32 *cpu; + dma_addr_t dma_addr; + +//fm DEB_EE(("pci:%p, pt:%p\n",pci,pt)); + + cpu = pci_alloc_consistent(pci, SAA7146_PGTABLE_SIZE, &dma_addr); + if (NULL == cpu) { +//fm ERR(("pci_alloc_consistent() failed.")); + return -ENOMEM; + } + pt->size = SAA7146_PGTABLE_SIZE; + pt->cpu = cpu; + pt->dma = dma_addr; + + return 0; +} + +void saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt, struct scatterlist *list, int length ) +{ + u32 *ptr, fill; + int i,p; + +//fm DEB_EE(("pci:%p, pt:%p, sl:%p, len:%d\n",pci,pt,list,length)); + + /* if we have a user buffer, the first page may not be + aligned to a page boundary. */ + pt->offset = list->offset; + + ptr = pt->cpu; + for (i = 0; i < length; i++, list++) { + for (p = 0; p * 4096 < list->length; p++, ptr++) { + *ptr = sg_dma_address(list) - list->offset; + } + } + + + /* safety; fill the page table up with the last valid page */ + fill = *(ptr-1); + for(;i<1024;i++) { + *ptr++ = fill; + } +/* + ptr = pt->cpu; + for(j=0;j<60;j++) { + printk("ptr1 %d: 0x%08x\n",j,ptr[j]); + } +*/ +} + +/********************************************************************************/ +/* gpio functions */ + +void saa7146_setgpio(struct saa7146_dev *dev, int port, u32 data) +{ + u32 val = 0; + + val=saa7146_read(dev,GPIO_CTRL); + val&=~(0xff << (8*(port))); + val|=(data)<<(8*(port)); + saa7146_write(dev, GPIO_CTRL, val); +} + +/********************************************************************************/ +/* interrupt handler */ + +static void interrupt_hw(int irq, void *dev_id, struct pt_regs *regs) +{ + struct saa7146_dev *dev = (struct saa7146_dev*)dev_id; + u32 isr = 0; + + /* read out the interrupt status register */ + isr = saa7146_read(dev, ISR); + + /* is this our interrupt? */ + if ( 0 == isr ) { + /* nope, some other device */ + return; + } + + saa7146_write(dev, ISR, isr); +// DEB_INT(("0x%08x\n",isr)); + + if( 0 != (dev->ext)) { + if( 0 != (dev->ext->irq_mask & isr )) { + if( 0 != dev->ext->irq_func ) { + dev->ext->irq_func(dev, &isr); + } + isr &= ~dev->ext->irq_mask; + } + } + if (0 != (isr & (MASK_27))) { + DEB_INT(("irq: RPS0 (0x%08x).\n",isr)); + if( 0 != dev->vv_data && 0 != dev->vv_callback) { + dev->vv_callback(dev,isr); + } + isr &= ~MASK_27; + } + if (0 != (isr & (MASK_28))) { + if( 0 != dev->vv_data && 0 != dev->vv_callback) { + dev->vv_callback(dev,isr); + } + isr &= ~MASK_28; + } + if (0 != (isr & (MASK_16|MASK_17))) { + u32 status = saa7146_read(dev, I2C_STATUS); + if( (0x3 == (status & 0x3)) || (0 == (status & 0x1)) ) { + IER_DISABLE(dev, MASK_16|MASK_17); + /* only wake up if we expect something */ + if( 0 != dev->i2c_op ) { + u32 psr = (saa7146_read(dev, PSR) >> 16) & 0x2; + u32 ssr = (saa7146_read(dev, SSR) >> 17) & 0x1f; + DEB_I2C(("irq: i2c, status: 0x%08x, psr:0x%02x, ssr:0x%02x).\n",status,psr,ssr)); + dev->i2c_op = 0; + wake_up(&dev->i2c_wq); + } else { + DEB_I2C(("unexpected irq: i2c, status: 0x%08x, isr %#x\n",status, isr)); + } + } else { + DEB_I2C(("unhandled irq: i2c, status: 0x%08x, isr %#x\n",status, isr)); + } + isr &= ~(MASK_16|MASK_17); + } + if( 0 != isr ) { + ERR(("warning: interrupt enabled, but not handled properly.(0x%08x)\n",isr)); + ERR(("disabling interrupt source(s)!\n")); + IER_DISABLE(dev,isr); + } +} + +/*********************************************************************************/ +/* configuration-functions */ + +static +int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent) +{ + unsigned long adr = 0, len = 0; + struct saa7146_dev* dev = kmalloc (sizeof(struct saa7146_dev),GFP_KERNEL); + + struct saa7146_pci_extension_data *pci_ext = (struct saa7146_pci_extension_data *)ent->driver_data; + struct saa7146_extension* ext = pci_ext->ext; + int err = 0; + + if (!(dev = kmalloc (sizeof(struct saa7146_dev),GFP_KERNEL))) { + ERR(("out of memory.\n")); + return -ENOMEM; + } + + /* clear out mem for sure */ + memset(dev, 0x0, sizeof(struct saa7146_dev)); + + DEB_EE(("pci:%p\n",pci)); + + if (pci_enable_device(pci)) { + ERR(("pci_enable_device() failed.\n")); + err = -EIO; + goto pci_error; + } + + /* enable bus-mastering */ + pci_set_master(pci); + + dev->pci = pci; + /* get chip-revision; this is needed to enable bug-fixes */ + if( 0 > pci_read_config_dword(dev->pci, PCI_CLASS_REVISION, &dev->revision)) { + ERR(("pci_read_config_dword() failed.\n")); + err = -ENODEV; + goto pci_error; + } + dev->revision &= 0xf; + + /* remap the memory from virtual to physical adress */ + adr = pci_resource_start(pci,0); + len = pci_resource_len(pci,0); + + if (!request_mem_region(pci_resource_start(pci,0), pci_resource_len(pci,0), "saa7146")) { + ERR(("request_mem_region() failed.\n")); + err = -ENODEV; + goto pci_error; + } + + if (!(dev->mem = ioremap(adr,len))) { + ERR(("ioremap() failed.\n")); + err = -ENODEV; + goto ioremap_error; + } + + /* we don't do a master reset here anymore, it screws up + some boards that don't have an i2c-eeprom for configuration + values */ +/* + saa7146_write(dev, MC1, MASK_31); +*/ + + /* disable alle irqs */ + saa7146_write(dev, IER, 0); + + /* shut down all dma transfers */ + saa7146_write(dev, MC1, 0x00ff0000); + + /* clear out any rps-signals pending */ + saa7146_write(dev, MC2, 0xf8000000); + + /* request an interrupt for the saa7146 */ + if (request_irq(dev->pci->irq, interrupt_hw, SA_SHIRQ | SA_INTERRUPT, + dev->name, dev)) + { + ERR(("request_irq() failed.\n")); + err = -ENODEV; + goto irq_error; + } + + /* get memory for various stuff */ + dev->rps0 = (u32*)kmalloc(SAA7146_RPS_MEM, GFP_KERNEL); + if( NULL == dev->rps0 ) { + err = -ENOMEM; + goto kmalloc_error_1; + } + memset(dev->rps0, 0x0, SAA7146_RPS_MEM); + + dev->rps1 = (u32*)kmalloc(SAA7146_RPS_MEM, GFP_KERNEL); + if( NULL == dev->rps1 ) { + err = -ENOMEM; + goto kmalloc_error_2; + } + memset(dev->rps1, 0x0, SAA7146_RPS_MEM); + + dev->i2c_mem = (u32*)kmalloc(SAA7146_I2C_MEM, GFP_KERNEL); + if( NULL == dev->i2c_mem ) { + err = -ENOMEM; + goto kmalloc_error_3; + } + memset(dev->i2c_mem, 0x00, SAA7146_I2C_MEM); + + /* the rest + print status message */ + + /* create a nice device name */ + sprintf(&dev->name[0], "saa7146 (%d)",saa7146_num); + + INFO(("found saa7146 @ mem 0x%08x (revision %d, irq %d) (0x%04x,0x%04x).\n", (unsigned int)dev->mem, dev->revision,dev->pci->irq,dev->pci->subsystem_vendor,dev->pci->subsystem_device)); + dev->ext = ext; + + pci_set_drvdata(pci,dev); + + init_MUTEX(&dev->lock); + dev->int_slock = SPIN_LOCK_UNLOCKED; + dev->slock = SPIN_LOCK_UNLOCKED; + + init_MUTEX(&dev->i2c_lock); + + dev->module = THIS_MODULE; + init_waitqueue_head(&dev->i2c_wq); + + if( 0 != ext->probe) { + if( 0 != ext->probe(dev) ) { + DEB_D(("ext->probe() failed for %p. skipping device.\n",dev)); + err = -ENODEV; + goto probe_error; + } + } + + if( 0 != ext->attach(dev,pci_ext) ) { + DEB_D(("ext->attach() failed for %p. skipping device.\n",dev)); + err = -ENODEV; + goto attach_error; + } + + INIT_LIST_HEAD(&dev->item); + list_add_tail(&dev->item,&saa7146_devices); + saa7146_num++; + + /* set some default values */ + saa7146_write(dev, BCS_CTRL, 0x80400040); + + err = 0; + goto out; +attach_error: +probe_error: + pci_set_drvdata(pci,NULL); + kfree( dev->i2c_mem ); +kmalloc_error_3: + kfree( dev->rps1 ); +kmalloc_error_2: + kfree( dev->rps0 ); +kmalloc_error_1: + free_irq(dev->pci->irq, (void *)dev); +irq_error: + iounmap(dev->mem); +ioremap_error: + release_mem_region(adr,len); +pci_error: + kfree(dev); +out: + return err; +} + +static +void saa7146_remove_one(struct pci_dev *pdev) +{ + struct saa7146_dev* dev = (struct saa7146_dev*) pci_get_drvdata(pdev); + DEB_EE(("dev:%p\n",dev)); + + dev->ext->detach(dev); + + /* shut down all video dma transfers */ + saa7146_write(dev, MC1, 0x00ff0000); + + /* disable all irqs, release irq-routine */ + saa7146_write(dev, IER, 0); + + free_irq(dev->pci->irq, (void *)dev); + + /* free kernel memory */ + kfree(dev->rps0 ); + kfree(dev->rps1 ); + kfree(dev->i2c_mem); + + iounmap(dev->mem); + release_mem_region(pci_resource_start(dev->pci,0), pci_resource_len(dev->pci,0)); + + list_del(&dev->item); + kfree(dev); + + saa7146_num--; +} + +/*********************************************************************************/ +/* extension handling functions */ + +int saa7146_register_extension(struct saa7146_extension* ext) +{ + DEB_EE(("ext:%p\n",ext)); + + if( 0 == initialized ) { + INIT_LIST_HEAD(&saa7146_devices); + init_MUTEX(&saa7146_devices_lock); + initialized = 1; + } + + ext->driver.name = ext->name; + ext->driver.id_table = ext->pci_tbl; + ext->driver.probe = saa7146_init_one; + ext->driver.remove = saa7146_remove_one; + + printk("saa7146: register extension '%s'.\n",ext->name); + return pci_module_init(&ext->driver); +} + +int saa7146_unregister_extension(struct saa7146_extension* ext) +{ + DEB_EE(("ext:%p\n",ext)); + printk("saa7146: unregister extension '%s'.\n",ext->name); + pci_unregister_driver(&ext->driver); + return 0; +} + +static +int __init saa7146_init_module(void) +{ + if( 0 == initialized ) { + INIT_LIST_HEAD(&saa7146_devices); + init_MUTEX(&saa7146_devices_lock); + initialized = 1; + } + return 0; +} + +static +void __exit saa7146_cleanup_module(void) +{ +} + +module_init(saa7146_init_module); +module_exit(saa7146_cleanup_module); + +EXPORT_SYMBOL_GPL(saa7146_register_extension); +EXPORT_SYMBOL_GPL(saa7146_unregister_extension); + +/* misc functions used by extension modules */ +EXPORT_SYMBOL_GPL(saa7146_pgtable_alloc); +EXPORT_SYMBOL_GPL(saa7146_pgtable_free); +EXPORT_SYMBOL_GPL(saa7146_pgtable_build_single); +EXPORT_SYMBOL_GPL(saa7146_vmalloc_build_pgtable); + +EXPORT_SYMBOL_GPL(saa7146_setgpio); + +EXPORT_SYMBOL_GPL(saa7146_i2c_transfer); +EXPORT_SYMBOL_GPL(saa7146_i2c_adapter_prepare); + +EXPORT_SYMBOL_GPL(saa7146_debug); +EXPORT_SYMBOL_GPL(saa7146_devices); +EXPORT_SYMBOL_GPL(saa7146_devices_lock); + +MODULE_AUTHOR("Michael Hunold "); +MODULE_DESCRIPTION("driver for generic saa7146-based hardware"); +MODULE_LICENSE("GPL"); diff -Nru a/drivers/media/common/saa7146_fops.c b/drivers/media/common/saa7146_fops.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/saa7146_fops.c Mon Apr 7 13:16:30 2003 @@ -0,0 +1,493 @@ +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME saa7146 +#endif + +#define BOARD_CAN_DO_VBI(dev) (dev->revision != 0 && dev->vv_data->vbi_minor != -1) + +/********************************************************************************/ +/* common dma functions */ + +void saa7146_dma_free(struct saa7146_dev *dev,struct saa7146_buf *buf) +{ + DEB_EE(("dev:%p, buf:%p\n",dev,buf)); + + if (in_interrupt()) + BUG(); + + videobuf_waiton(&buf->vb,0,0); + videobuf_dma_pci_unmap(dev->pci, &buf->vb.dma); + videobuf_dma_free(&buf->vb.dma); + buf->vb.state = STATE_NEEDS_INIT; +} + + +/********************************************************************************/ +/* common buffer functions */ + +int saa7146_buffer_queue(struct saa7146_dev *dev, + struct saa7146_dmaqueue *q, + struct saa7146_buf *buf) +{ +#if DEBUG_SPINLOCKS + BUG_ON(!spin_is_locked(&dev->slock)); +#endif + DEB_EE(("dev:%p, dmaq:%p, buf:%p\n", dev, q, buf)); + + if( NULL == q ) { + ERR(("internal error: fatal NULL pointer for q.\n")); + return 0; + } + + if (NULL == q->curr) { + q->curr = buf; + DEB_D(("immediately activating buffer %p\n", buf)); + buf->activate(dev,buf,NULL); + } else { + list_add_tail(&buf->vb.queue,&q->queue); + buf->vb.state = STATE_QUEUED; + DEB_D(("adding buffer %p to queue. (active buffer present)\n", buf)); + } + return 0; +} + +void saa7146_buffer_finish(struct saa7146_dev *dev, + struct saa7146_dmaqueue *q, + int state) +{ +#if DEBUG_SPINLOCKS + BUG_ON(!spin_is_locked(&dev->slock)); +#endif + if( NULL == q->curr ) { + ERR(("internal error: fatal NULL pointer for q->curr.\n")); + return; + } + + DEB_EE(("dev:%p, dmaq:%p, state:%d\n", dev, q, state)); + + /* finish current buffer */ + q->curr->vb.state = state; + do_gettimeofday(&q->curr->vb.ts); + wake_up(&q->curr->vb.done); + + q->curr = NULL; +} + +void saa7146_buffer_next(struct saa7146_dev *dev, + struct saa7146_dmaqueue *q, int vbi) +{ + struct saa7146_buf *buf,*next = NULL; + + if( NULL == q ) { + ERR(("internal error: fatal NULL pointer for q.\n")); + return; + } + + DEB_EE(("dev:%p, dmaq:%p, vbi:%d\n", dev, q, vbi)); + +#if DEBUG_SPINLOCKS + BUG_ON(!spin_is_locked(&dev->slock)); +#endif + if (!list_empty(&q->queue)) { + /* activate next one from queue */ + buf = list_entry(q->queue.next,struct saa7146_buf,vb.queue); + list_del(&buf->vb.queue); + if (!list_empty(&q->queue)) + next = list_entry(q->queue.next,struct saa7146_buf, vb.queue); + q->curr = buf; + DEB_D(("next buffer: buf:%p, prev:%p, next:%p\n", buf, q->queue.prev,q->queue.next)); + buf->activate(dev,buf,next); + } else { + DEB_D(("no next buffer. stopping.\n")); + if( 0 != vbi ) { + /* turn off video-dma3 */ + saa7146_write(dev,MC1, MASK_20); + } else { + /* nothing to do -- just prevent next video-dma1 transfer + by lowering the protection address */ + + // fixme: fix this for vflip != 0 + + saa7146_write(dev, PROT_ADDR1, 0); + /* write the address of the rps-program */ + saa7146_write(dev, RPS_ADDR0, virt_to_bus(&dev->rps0[ 0])); + /* turn on rps */ + saa7146_write(dev, MC1, (MASK_12 | MASK_28)); + } + del_timer(&q->timeout); + } +} + +void saa7146_buffer_timeout(unsigned long data) +{ + struct saa7146_dmaqueue *q = (struct saa7146_dmaqueue*)data; + struct saa7146_dev *dev = q->dev; + unsigned long flags; + + DEB_EE(("dev:%p, dmaq:%p\n", dev, q)); + + spin_lock_irqsave(&dev->slock,flags); + if (q->curr) { + DEB_D(("timeout on %p\n", q->curr)); + saa7146_buffer_finish(dev,q,STATE_ERROR); + } + + /* we don't restart the transfer here like other drivers do. when + a streaming capture is disabled, the timeout function will be + called for the current buffer. if we activate the next buffer now, + we mess up our capture logic. if a timeout occurs on another buffer, + then something is seriously broken before, so no need to buffer the + next capture IMHO... */ +/* + saa7146_buffer_next(dev,q); +*/ + spin_unlock_irqrestore(&dev->slock,flags); +} + +/********************************************************************************/ +/* file operations */ + +static +int fops_open(struct inode *inode, struct file *file) +{ + unsigned int minor = minor(inode->i_rdev); + struct saa7146_dev *h = NULL, *dev = NULL; + struct list_head *list; + struct saa7146_fh *fh = NULL; + int result = 0; + + enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + + DEB_EE(("inode:%p, file:%p, minor:%d\n",inode,file,minor)); + + if (down_interruptible(&saa7146_devices_lock)) + return -ERESTARTSYS; + + list_for_each(list,&saa7146_devices) { + h = list_entry(list, struct saa7146_dev, item); + if( NULL == h->vv_data ) { + DEB_D(("device %p has not registered video devices.\n",h)); + continue; + } + DEB_D(("trying: %p @ major %d,%d\n",h,h->vv_data->video_minor,h->vv_data->vbi_minor)); + + if (h->vv_data->video_minor == minor) { + dev = h; + } + if (h->vv_data->vbi_minor == minor) { + type = V4L2_BUF_TYPE_VBI_CAPTURE; + dev = h; + } + } + if (NULL == dev) { + DEB_S(("no such video device.\n")); + result = -ENODEV; + goto out; + } + + DEB_D(("using: %p\n",dev)); + + /* check if an extension is registered */ + if( NULL == dev->ext ) { + DEB_S(("no extension registered for this device.\n")); + result = -ENODEV; + goto out; + } + + /* allocate per open data */ + fh = kmalloc(sizeof(*fh),GFP_KERNEL); + if (NULL == fh) { + DEB_S(("cannot allocate memory for per open data.\n")); + result = -ENOMEM; + goto out; + } + memset(fh,0,sizeof(*fh)); + + // FIXME: do we need to increase *our* usage count? + + if( 0 == try_module_get(dev->ext->module)) { + result = -EINVAL; + goto out; + } + + file->private_data = fh; + fh->dev = dev; + fh->type = type; + + saa7146_video_uops.open(dev,fh); + if( 0 != BOARD_CAN_DO_VBI(dev) ) { + saa7146_vbi_uops.open(dev,fh); + } + + result = 0; +out: + if( fh != 0 && result != 0 ) { + kfree(fh); + } + up(&saa7146_devices_lock); + return result; +} + +static int fops_release(struct inode *inode, struct file *file) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + + DEB_EE(("inode:%p, file:%p\n",inode,file)); + + if (down_interruptible(&saa7146_devices_lock)) + return -ERESTARTSYS; + + saa7146_video_uops.release(dev,fh,file); + if( 0 != BOARD_CAN_DO_VBI(dev) ) { + saa7146_vbi_uops.release(dev,fh,file); + } + + module_put(dev->ext->module); + file->private_data = NULL; + kfree(fh); + + up(&saa7146_devices_lock); + + return 0; +} + +int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int cmd, void *arg); +static int fops_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) +{ +/* + DEB_EE(("inode:%p, file:%p, cmd:%d, arg:%li\n",inode, file, cmd, arg)); +*/ + return video_usercopy(inode, file, cmd, arg, saa7146_video_do_ioctl); +} + +static int fops_mmap(struct file *file, struct vm_area_struct * vma) +{ + struct saa7146_fh *fh = file->private_data; + struct videobuf_queue *q; + + switch (fh->type) { + case V4L2_BUF_TYPE_VIDEO_CAPTURE: { + DEB_EE(("V4L2_BUF_TYPE_VIDEO_CAPTURE: file:%p, vma:%p\n",file, vma)); + q = &fh->video_q; + break; + } + case V4L2_BUF_TYPE_VBI_CAPTURE: { + DEB_EE(("V4L2_BUF_TYPE_VBI_CAPTURE: file:%p, vma:%p\n",file, vma)); + q = &fh->vbi_q; + break; + } + default: + BUG(); + return 0; + } + return videobuf_mmap_mapper(vma,q); +} + +static unsigned int fops_poll(struct file *file, struct poll_table_struct *wait) +{ + struct saa7146_fh *fh = file->private_data; + struct videobuf_buffer *buf = NULL; + struct videobuf_queue *q; + + DEB_EE(("file:%p, poll:%p\n",file, wait)); + + if (V4L2_BUF_TYPE_VBI_CAPTURE == fh->type) { + if( 0 == fh->vbi_q.streaming ) + return videobuf_poll_stream(file, &fh->vbi_q, wait); + q = &fh->vbi_q; + } else { + q = &fh->video_q; + } + + if (!list_empty(&q->stream)) + buf = list_entry(q->stream.next, struct videobuf_buffer, stream); + + if (!buf) { + return POLLERR; + } + + poll_wait(file, &buf->done, wait); + if (buf->state == STATE_DONE || buf->state == STATE_ERROR) { + return POLLIN|POLLRDNORM; + } + + return 0; +} + +static ssize_t fops_read(struct file *file, char *data, size_t count, loff_t *ppos) +{ + struct saa7146_fh *fh = file->private_data; + + switch (fh->type) { + case V4L2_BUF_TYPE_VIDEO_CAPTURE: { + DEB_EE(("V4L2_BUF_TYPE_VIDEO_CAPTURE: file:%p, data:%p, count:%d\n",file, data, count)); + return saa7146_video_uops.read(file,data,count,ppos); + } + case V4L2_BUF_TYPE_VBI_CAPTURE: { + DEB_EE(("V4L2_BUF_TYPE_VBI_CAPTURE: file:%p, data:%p, count:%d\n",file, data, count)); + return saa7146_vbi_uops.read(file,data,count,ppos); + } + break; + default: + BUG(); + return 0; + } +} + +static struct file_operations video_fops = +{ + .owner = THIS_MODULE, + .open = fops_open, + .release = fops_release, + .read = fops_read, + .poll = fops_poll, + .mmap = fops_mmap, + .ioctl = fops_ioctl, + .llseek = no_llseek, +}; + +void vv_callback(struct saa7146_dev *dev, unsigned long status) +{ + u32 isr = status; + + DEB_EE(("dev:%p, isr:0x%08x\n",dev,(u32)status)); + + if (0 != (isr & (MASK_27))) { + DEB_INT(("irq: RPS0 (0x%08x).\n",isr)); + saa7146_video_uops.irq_done(dev,isr); + } + + if (0 != (isr & (MASK_28))) { + u32 mc2 = saa7146_read(dev, MC2); + if( 0 != (mc2 & MASK_15)) { + DEB_INT(("irq: RPS1 vbi workaround (0x%08x).\n",isr)); + wake_up(&dev->vv_data->vbi_wq); + saa7146_write(dev,MC2, MASK_31); + return; + } + DEB_INT(("irq: RPS1 (0x%08x).\n",isr)); + saa7146_vbi_uops.irq_done(dev,isr); + } +} + +static struct video_device device_template = +{ + .hardware = VID_HARDWARE_SAA7146, + .fops = &video_fops, + .minor = -1, +}; + +int saa7146_vv_init(struct saa7146_dev* dev) +{ + struct saa7146_vv *vv = kmalloc (sizeof(struct saa7146_vv),GFP_KERNEL); + if( NULL == vv ) { + ERR(("out of memory. aborting.\n")); + return -1; + } + memset(vv, 0x0, sizeof(*vv)); + + DEB_EE(("dev:%p\n",dev)); + + vv->video_minor = -1; + vv->vbi_minor = -1; + + vv->clipping = (u32*)kmalloc(SAA7146_CLIPPING_MEM, GFP_KERNEL); + if( NULL == vv->clipping ) { + ERR(("out of memory. aborting.\n")); + kfree(vv); + return -1; + } + memset(vv->clipping, 0x0, SAA7146_CLIPPING_MEM); + + saa7146_video_uops.init(dev,vv); + saa7146_vbi_uops.init(dev,vv); + + dev->vv_data = vv; + dev->vv_callback = &vv_callback; + + return 0; +} + +int saa7146_vv_release(struct saa7146_dev* dev) +{ + struct saa7146_vv *vv = dev->vv_data; + + DEB_EE(("dev:%p\n",dev)); + + kfree(vv); + dev->vv_data = NULL; + dev->vv_callback = NULL; + + return 0; +} + +int saa7146_register_device(struct video_device *vid, struct saa7146_dev* dev, char *name, int type) +{ + struct saa7146_vv *vv = dev->vv_data; + + DEB_EE(("dev:%p, name:'%s'\n",dev,name)); + + *vid = device_template; + strncpy(vid->name, name, 32); + vid->priv = dev; + + // fixme: -1 should be an insmod parameter *for the extension* (like "video_nr"); + if (video_register_device(vid,type,-1) < 0) { + ERR(("cannot register vbi v4l2 device. skipping.\n")); + return -1; + } + + if( VFL_TYPE_GRABBER == type ) { + vv->video_minor = vid->minor; + INFO(("%s: registered device video%d [v4l2]\n", dev->name,vid->minor & 0x1f)); + } else { + vv->vbi_minor = vid->minor; + INFO(("%s: registered device vbi%d [v4l2]\n", dev->name,vid->minor & 0x1f)); + } + + return 0; +} + +int saa7146_unregister_device(struct video_device *vid, struct saa7146_dev* dev) +{ + struct saa7146_vv *vv = dev->vv_data; + + DEB_EE(("dev:%p\n",dev)); + + if( VFL_TYPE_GRABBER == vid->type ) { + vv->video_minor = -1; + } else { + vv->vbi_minor = -1; + } + video_unregister_device(vid); + + return 0; +} + +static +int __init saa7146_vv_init_module(void) +{ + return 0; +} + + +static +void __exit saa7146_vv_cleanup_module(void) +{ +} + +module_init(saa7146_vv_init_module); +module_exit(saa7146_vv_cleanup_module); + +EXPORT_SYMBOL_GPL(saa7146_set_hps_source_and_sync); +EXPORT_SYMBOL_GPL(saa7146_register_device); +EXPORT_SYMBOL_GPL(saa7146_unregister_device); + +EXPORT_SYMBOL_GPL(saa7146_vv_init); +EXPORT_SYMBOL_GPL(saa7146_vv_release); + +MODULE_AUTHOR("Michael Hunold "); +MODULE_DESCRIPTION("video4linux driver for saa7146-based hardware"); +MODULE_LICENSE("GPL"); diff -Nru a/drivers/media/common/saa7146_hlp.c b/drivers/media/common/saa7146_hlp.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/saa7146_hlp.c Mon Apr 7 13:16:30 2003 @@ -0,0 +1,1043 @@ +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME saa7146 +#endif + +#define my_min(type,x,y) \ + ({ type __x = (x), __y = (y); __x < __y ? __x: __y; }) +#define my_max(type,x,y) \ + ({ type __x = (x), __y = (y); __x > __y ? __x: __y; }) + +static +void calculate_output_format_register(struct saa7146_dev* saa, u32 palette, u32* clip_format) +{ + /* clear out the necessary bits */ + *clip_format &= 0x0000ffff; + /* set these bits new */ + *clip_format |= (( ((palette&0xf00)>>8) << 30) | ((palette&0x00f) << 24) | (((palette&0x0f0)>>4) << 16)); +} + +static +void calculate_bcs_ctrl_register(struct saa7146_dev *dev, int brightness, int contrast, int colour, u32 *bcs_ctrl) +{ + *bcs_ctrl = ((brightness << 24) | (contrast << 16) | (colour << 0)); +} + +static +void calculate_hps_source_and_sync(struct saa7146_dev *dev, int source, int sync, u32* hps_ctrl) +{ + *hps_ctrl &= ~(MASK_30 | MASK_31 | MASK_28); + *hps_ctrl |= (source << 30) | (sync << 28); +} + +static +void calculate_hxo_and_hyo(struct saa7146_vv *vv, u32* hps_h_scale, u32* hps_ctrl) +{ + int hyo = 0, hxo = 0; + + hyo = vv->standard->v_offset; + hxo = vv->standard->h_offset; + + *hps_h_scale &= ~(MASK_B0 | 0xf00); + *hps_h_scale |= (hxo << 0); + + *hps_ctrl &= ~(MASK_W0 | MASK_B2); + *hps_ctrl |= (hyo << 12); +} + +/* helper functions for the calculation of the horizontal- and vertical + scaling registers, clip-format-register etc ... + these functions take pointers to the (most-likely read-out + original-values) and manipulate them according to the requested + changes. +*/ + +/* hps_coeff used for CXY and CXUV; scale 1/1 -> scale 1/64 */ +static struct { + u16 hps_coeff; + u16 weight_sum; +} hps_h_coeff_tab [] = { + {0x00, 2}, {0x02, 4}, {0x00, 4}, {0x06, 8}, {0x02, 8}, + {0x08, 8}, {0x00, 8}, {0x1E, 16}, {0x0E, 8}, {0x26, 8}, + {0x06, 8}, {0x42, 8}, {0x02, 8}, {0x80, 8}, {0x00, 8}, + {0xFE, 16}, {0xFE, 8}, {0x7E, 8}, {0x7E, 8}, {0x3E, 8}, + {0x3E, 8}, {0x1E, 8}, {0x1E, 8}, {0x0E, 8}, {0x0E, 8}, + {0x06, 8}, {0x06, 8}, {0x02, 8}, {0x02, 8}, {0x00, 8}, + {0x00, 8}, {0xFE, 16}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, + {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, + {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, + {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0x7E, 8}, + {0x7E, 8}, {0x3E, 8}, {0x3E, 8}, {0x1E, 8}, {0x1E, 8}, + {0x0E, 8}, {0x0E, 8}, {0x06, 8}, {0x06, 8}, {0x02, 8}, + {0x02, 8}, {0x00, 8}, {0x00, 8}, {0xFE, 16} +}; + +/* table of attenuation values for horizontal scaling */ +u8 h_attenuation[] = { 1, 2, 4, 8, 2, 4, 8, 16, 0}; + +/* calculate horizontal scale registers */ +static +int calculate_h_scale_registers(struct saa7146_dev *dev, + int in_x, int out_x, int flip_lr, + u32* hps_ctrl, u32* hps_v_gain, u32* hps_h_prescale, u32* hps_h_scale) +{ + /* horizontal prescaler */ + u32 dcgx = 0, xpsc = 0, xacm = 0, cxy = 0, cxuv = 0; + /* horizontal scaler */ + u32 xim = 0, xp = 0, xsci =0; + /* vertical scale & gain */ + u32 pfuv = 0; + + /* helper variables */ + u32 h_atten = 0, i = 0; + + if ( 0 == out_x ) { + return -EINVAL; + } + + /* mask out vanity-bit */ + *hps_ctrl &= ~MASK_29; + + /* calculate prescale-(xspc)-value: [n .. 1/2) : 1 + [1/2 .. 1/3) : 2 + [1/3 .. 1/4) : 3 + ... */ + if (in_x > out_x) { + xpsc = in_x / out_x; + } + else { + /* zooming */ + xpsc = 1; + } + + /* if flip_lr-bit is set, number of pixels after + horizontal prescaling must be < 384 */ + if ( 0 != flip_lr ) { + + /* set vanity bit */ + *hps_ctrl |= MASK_29; + + while (in_x / xpsc >= 384 ) + xpsc++; + } + /* if zooming is wanted, number of pixels after + horizontal prescaling must be < 768 */ + else { + while ( in_x / xpsc >= 768 ) + xpsc++; + } + + /* maximum prescale is 64 (p.69) */ + if ( xpsc > 64 ) + xpsc = 64; + + /* keep xacm clear*/ + xacm = 0; + + /* set horizontal filter parameters (CXY = CXUV) */ + cxy = hps_h_coeff_tab[( (xpsc - 1) < 63 ? (xpsc - 1) : 63 )].hps_coeff; + cxuv = cxy; + + /* calculate and set horizontal fine scale (xsci) */ + + /* bypass the horizontal scaler ? */ + if ( (in_x == out_x) && ( 1 == xpsc ) ) + xsci = 0x400; + else + xsci = ( (1024 * in_x) / (out_x * xpsc) ) + xpsc; + + /* set start phase for horizontal fine scale (xp) to 0 */ + xp = 0; + + /* set xim, if we bypass the horizontal scaler */ + if ( 0x400 == xsci ) + xim = 1; + else + xim = 0; + + /* if the prescaler is bypassed, enable horizontal + accumulation mode (xacm) and clear dcgx */ + if( 1 == xpsc ) { + xacm = 1; + dcgx = 0; + } + else { + xacm = 0; + /* get best match in the table of attenuations + for horizontal scaling */ + h_atten = hps_h_coeff_tab[( (xpsc - 1) < 63 ? (xpsc - 1) : 63 )].weight_sum; + + for (i = 0; h_attenuation[i] != 0; i++) { + if (h_attenuation[i] >= h_atten) + break; + } + + dcgx = i; + } + + /* the horizontal scaling increment controls the UV filter + to reduce the bandwith to improve the display quality, + so set it ... */ + if ( xsci == 0x400) + pfuv = 0x00; + else if ( xsci < 0x600) + pfuv = 0x01; + else if ( xsci < 0x680) + pfuv = 0x11; + else if ( xsci < 0x700) + pfuv = 0x22; + else + pfuv = 0x33; + + + *hps_v_gain &= MASK_W0|MASK_B2; + *hps_v_gain |= (pfuv << 24); + + *hps_h_scale &= ~(MASK_W1 | 0xf000); + *hps_h_scale |= (xim << 31) | (xp << 24) | (xsci << 12); + + *hps_h_prescale |= (dcgx << 27) | ((xpsc-1) << 18) | (xacm << 17) | (cxy << 8) | (cxuv << 0); + + return 0; +} + +static struct { + u16 hps_coeff; + u16 weight_sum; +} hps_v_coeff_tab [] = { + {0x0100, 2}, {0x0102, 4}, {0x0300, 4}, {0x0106, 8}, {0x0502, 8}, + {0x0708, 8}, {0x0F00, 8}, {0x011E, 16}, {0x110E, 16}, {0x1926, 16}, + {0x3906, 16}, {0x3D42, 16}, {0x7D02, 16}, {0x7F80, 16}, {0xFF00, 16}, + {0x01FE, 32}, {0x01FE, 32}, {0x817E, 32}, {0x817E, 32}, {0xC13E, 32}, + {0xC13E, 32}, {0xE11E, 32}, {0xE11E, 32}, {0xF10E, 32}, {0xF10E, 32}, + {0xF906, 32}, {0xF906, 32}, {0xFD02, 32}, {0xFD02, 32}, {0xFF00, 32}, + {0xFF00, 32}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, + {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, + {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, + {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x817E, 64}, + {0x817E, 64}, {0xC13E, 64}, {0xC13E, 64}, {0xE11E, 64}, {0xE11E, 64}, + {0xF10E, 64}, {0xF10E, 64}, {0xF906, 64}, {0xF906, 64}, {0xFD02, 64}, + {0xFD02, 64}, {0xFF00, 64}, {0xFF00, 64}, {0x01FE, 128} +}; + +/* table of attenuation values for vertical scaling */ +u16 v_attenuation[] = { 2, 4, 8, 16, 32, 64, 128, 256, 0}; + +/* calculate vertical scale registers */ +static +int calculate_v_scale_registers(struct saa7146_dev *dev, enum v4l2_field field, + int in_y, int out_y, u32* hps_v_scale, u32* hps_v_gain) +{ + int lpi = 0; + + /* vertical scaling */ + u32 yacm = 0, ysci = 0, yacl = 0, ypo = 0, ype = 0; + /* vertical scale & gain */ + u32 dcgy = 0, cya_cyb = 0; + + /* helper variables */ + u32 v_atten = 0, i = 0; + + /* error, if vertical zooming */ + if ( in_y < out_y ) { + return -EINVAL; + } + + /* linear phase interpolation may be used + if scaling is between 1 and 1/2 (both fields used) + or scaling is between 1/2 and 1/4 (if only one field is used) */ + + if (V4L2_FIELD_HAS_BOTH(field)) { + if( 2*out_y >= in_y) { + lpi = 1; + } + } else if (field == V4L2_FIELD_TOP || field == V4L2_FIELD_BOTTOM) { + if( 4*out_y >= in_y ) { + lpi = 1; + } + out_y *= 2; + } + if( 0 != lpi ) { + + yacm = 0; + yacl = 0; + cya_cyb = 0x00ff; + + /* calculate scaling increment */ + if ( in_y > out_y ) + ysci = ((1024 * in_y) / (out_y + 1)) - 1024; + else + ysci = 0; + + dcgy = 0; + + /* calculate ype and ypo */ + ype = ysci / 16; + ypo = ype + (ysci / 64); + + } + else { + yacm = 1; + + /* calculate scaling increment */ + ysci = (((10 * 1024 * (in_y - out_y - 1)) / in_y) + 9) / 10; + + /* calculate ype and ypo */ + ypo = ype = ((ysci + 15) / 16); + + /* the sequence length interval (yacl) has to be set according + to the prescale value, e.g. [n .. 1/2) : 0 + [1/2 .. 1/3) : 1 + [1/3 .. 1/4) : 2 + ... */ + if ( ysci < 512) { + yacl = 0; + } + else { + yacl = ( ysci / (1024 - ysci) ); + } + + /* get filter coefficients for cya, cyb from table hps_v_coeff_tab */ + cya_cyb = hps_v_coeff_tab[ (yacl < 63 ? yacl : 63 ) ].hps_coeff; + + /* get best match in the table of attenuations for vertical scaling */ + v_atten = hps_v_coeff_tab[ (yacl < 63 ? yacl : 63 ) ].weight_sum; + + for (i = 0; v_attenuation[i] != 0; i++) { + if (v_attenuation[i] >= v_atten) + break; + } + + dcgy = i; + } + + /* ypo and ype swapped in spec ? */ + *hps_v_scale |= (yacm << 31) | (ysci << 21) | (yacl << 15) | (ypo << 8 ) | (ype << 1); + + *hps_v_gain &= ~(MASK_W0|MASK_B2); + *hps_v_gain |= (dcgy << 16) | (cya_cyb << 0); + + return 0; +} + +/* simple bubble-sort algorithm with duplicate elimination */ +static +int sort_and_eliminate(u32* values, int* count) +{ + int low = 0, high = 0, top = 0, temp = 0; + int cur = 0, next = 0; + + /* sanity checks */ + if( (0 > *count) || (NULL == values) ) { + return -EINVAL; + } + + /* bubble sort the first ´count´ items of the array ´values´ */ + for( top = *count; top > 0; top--) { + for( low = 0, high = 1; high < top; low++, high++) { + if( values[low] > values[high] ) { + temp = values[low]; + values[low] = values[high]; + values[high] = temp; + } + } + } + + /* remove duplicate items */ + for( cur = 0, next = 1; next < *count; next++) { + if( values[cur] != values[next]) + values[++cur] = values[next]; + } + + *count = cur + 1; + + return 0; +} + +static +void calculate_clipping_registers_rect(struct saa7146_dev *dev, struct saa7146_fh *fh, + struct saa7146_video_dma *vdma2, u32* clip_format, u32* arbtr_ctrl, enum v4l2_field field) +{ + struct saa7146_vv *vv = dev->vv_data; + u32 *clipping = vv->clipping; + + int width = fh->ov.win.w.width; + int height = fh->ov.win.w.height; + int clipcount = fh->ov.nclips; + + u32 line_list[32]; + u32 pixel_list[32]; + int numdwords = 0; + + int i = 0, j = 0; + int cnt_line = 0, cnt_pixel = 0; + + int x[32], y[32], w[32], h[32]; + + /* clear out memory */ + memset(&line_list[0], 0x00, sizeof(u32)*32); + memset(&pixel_list[0], 0x00, sizeof(u32)*32); + memset(clipping, 0x00, SAA7146_CLIPPING_MEM); + + /* fill the line and pixel-lists */ + for(i = 0; i < clipcount; i++) { + int l = 0, r = 0, t = 0, b = 0; + + x[i] = fh->ov.clips[i].c.left; + y[i] = fh->ov.clips[i].c.top; + w[i] = fh->ov.clips[i].c.width; + h[i] = fh->ov.clips[i].c.height; + + if( w[i] < 0) { + x[i] += w[i]; w[i] = -w[i]; + } + if( h[i] < 0) { + y[i] += h[i]; h[i] = -h[i]; + } + if( x[i] < 0) { + w[i] += x[i]; x[i] = 0; + } + if( y[i] < 0) { + h[i] += y[i]; y[i] = 0; + } + if( 0 != vv->vflip ) { + y[i] = height - y[i] - h[i]; + } + + l = x[i]; + r = x[i]+w[i]; + t = y[i]; + b = y[i]+h[i]; + + /* insert left/right coordinates */ + pixel_list[ 2*i ] = my_min(int, l, width); + pixel_list[(2*i)+1] = my_min(int, r, width); + /* insert top/bottom coordinates */ + line_list[ 2*i ] = my_min(int, t, height); + line_list[(2*i)+1] = my_min(int, b, height); + } + + /* sort and eliminate lists */ + cnt_line = cnt_pixel = 2*clipcount; + sort_and_eliminate( &pixel_list[0], &cnt_pixel ); + sort_and_eliminate( &line_list[0], &cnt_line ); + + /* calculate the number of used u32s */ + numdwords = my_max(int, (cnt_line+1), (cnt_pixel+1))*2; + numdwords = my_max(int, 4, numdwords); + numdwords = my_min(int, 64, numdwords); + + /* fill up cliptable */ + for(i = 0; i < cnt_pixel; i++) { + clipping[2*i] |= (pixel_list[i] << 16); + } + for(i = 0; i < cnt_line; i++) { + clipping[(2*i)+1] |= (line_list[i] << 16); + } + + /* fill up cliptable with the display infos */ + for(j = 0; j < clipcount; j++) { + + for(i = 0; i < cnt_pixel; i++) { + + if( x[j] < 0) + x[j] = 0; + + if( pixel_list[i] < (x[j] + w[j])) { + + if ( pixel_list[i] >= x[j] ) { + clipping[2*i] |= (1 << j); + } + } + } + for(i = 0; i < cnt_line; i++) { + + if( y[j] < 0) + y[j] = 0; + + if( line_list[i] < (y[j] + h[j]) ) { + + if( line_list[i] >= y[j] ) { + clipping[(2*i)+1] |= (1 << j); + } + } + } + } + + /* adjust arbitration control register */ + *arbtr_ctrl &= 0xffff00ff; + *arbtr_ctrl |= 0x00001c00; + + vdma2->base_even = virt_to_bus(clipping); + vdma2->base_odd = virt_to_bus(clipping); + vdma2->prot_addr = virt_to_bus(clipping)+((sizeof(u32))*(numdwords)); + vdma2->base_page = 0x04; + vdma2->pitch = 0x00; + vdma2->num_line_byte = (0 << 16 | (sizeof(u32))*(numdwords-1) ); + + /* set clipping-mode. this depends on the field(s) used */ + *clip_format &= 0xfffffff7; + if (V4L2_FIELD_HAS_BOTH(field)) { + *clip_format |= 0x00000008; + } else if (field == V4L2_FIELD_TOP) { + *clip_format |= 0x00000000; + } else if (field == V4L2_FIELD_BOTTOM) { + *clip_format |= 0x00000000; + } +} + +/* disable clipping */ +static +void saa7146_disable_clipping(struct saa7146_dev *dev) +{ + u32 clip_format = saa7146_read(dev, CLIP_FORMAT_CTRL); + + /* mask out relevant bits (=lower word)*/ + clip_format &= MASK_W1; + + /* upload clipping-registers*/ + saa7146_write(dev, CLIP_FORMAT_CTRL,clip_format); + saa7146_write(dev, MC2, (MASK_05 | MASK_21)); + + /* disable video dma2 */ + saa7146_write(dev, MC1, (MASK_21)); +} + +static +void saa7146_set_clipping_rect(struct saa7146_dev *dev, struct saa7146_fh *fh) +{ + enum v4l2_field field = fh->ov.win.field; + int clipcount = fh->ov.nclips; + + struct saa7146_video_dma vdma2; + + u32 clip_format = saa7146_read(dev, CLIP_FORMAT_CTRL); + u32 arbtr_ctrl = saa7146_read(dev, PCI_BT_V1); + + // fixme: is this used at all? SAA7146_CLIPPING_RECT_INVERTED; + u32 type = SAA7146_CLIPPING_RECT; + + /* check clipcount, disable clipping if clipcount == 0*/ + if( clipcount == 0 ) { + saa7146_disable_clipping(dev); + return; + } + + calculate_clipping_registers_rect(dev, fh, &vdma2, &clip_format, &arbtr_ctrl, field); + + /* set clipping format */ + clip_format &= 0xffff0008; + clip_format |= (type << 4); + + /* prepare video dma2 */ + saa7146_write(dev, BASE_EVEN2, vdma2.base_even); + saa7146_write(dev, BASE_ODD2, vdma2.base_odd); + saa7146_write(dev, PROT_ADDR2, vdma2.prot_addr); + saa7146_write(dev, BASE_PAGE2, vdma2.base_page); + saa7146_write(dev, PITCH2, vdma2.pitch); + saa7146_write(dev, NUM_LINE_BYTE2, vdma2.num_line_byte); + + /* prepare the rest */ + saa7146_write(dev, CLIP_FORMAT_CTRL,clip_format); + saa7146_write(dev, PCI_BT_V1, arbtr_ctrl); + + /* upload clip_control-register, clipping-registers, enable video dma2 */ + saa7146_write(dev, MC2, (MASK_05 | MASK_21 | MASK_03 | MASK_19)); + saa7146_write(dev, MC1, (MASK_05 | MASK_21)); +} + +static +void saa7146_set_window(struct saa7146_dev *dev, int width, int height, enum v4l2_field field) +{ + struct saa7146_vv *vv = dev->vv_data; + + int source = vv->current_hps_source; + int sync = vv->current_hps_sync; + + u32 hps_v_scale = 0, hps_v_gain = 0, hps_ctrl = 0, hps_h_prescale = 0, hps_h_scale = 0; + + /* set vertical scale */ + hps_v_scale = 0; /* all bits get set by the function-call */ + hps_v_gain = 0; /* fixme: saa7146_read(dev, HPS_V_GAIN);*/ + calculate_v_scale_registers(dev, field, vv->standard->v_calc, height, &hps_v_scale, &hps_v_gain); + + /* set horizontal scale */ + hps_ctrl = 0; + hps_h_prescale = 0; /* all bits get set in the function */ + hps_h_scale = 0; + calculate_h_scale_registers(dev, vv->standard->h_calc, width, vv->hflip, &hps_ctrl, &hps_v_gain, &hps_h_prescale, &hps_h_scale); + + /* set hyo and hxo */ + calculate_hxo_and_hyo(vv, &hps_h_scale, &hps_ctrl); + calculate_hps_source_and_sync(dev, source, sync, &hps_ctrl); + + /* write out new register contents */ + saa7146_write(dev, HPS_V_SCALE, hps_v_scale); + saa7146_write(dev, HPS_V_GAIN, hps_v_gain); + saa7146_write(dev, HPS_CTRL, hps_ctrl); + saa7146_write(dev, HPS_H_PRESCALE,hps_h_prescale); + saa7146_write(dev, HPS_H_SCALE, hps_h_scale); + + /* upload shadow-ram registers */ + saa7146_write(dev, MC2, (MASK_05 | MASK_06 | MASK_21 | MASK_22) ); +} + +/* calculate the new memory offsets for a desired position */ +static +void saa7146_set_position(struct saa7146_dev *dev, int w_x, int w_y, int w_height, enum v4l2_field field) +{ + struct saa7146_vv *vv = dev->vv_data; + + int b_depth = vv->ov_fmt->depth; + int b_bpl = vv->ov_fb.fmt.bytesperline; + u32 base = (u32)vv->ov_fb.base; + + struct saa7146_video_dma vdma1; + + /* calculate memory offsets for picture, look if we shall top-down-flip */ + vdma1.pitch = 2*b_bpl; + if ( 0 == vv->vflip ) { + vdma1.base_even = (u32)base + (w_y * (vdma1.pitch/2)) + (w_x * (b_depth / 8)); + vdma1.base_odd = vdma1.base_even + (vdma1.pitch / 2); + vdma1.prot_addr = vdma1.base_even + (w_height * (vdma1.pitch / 2)); + } + else { + vdma1.base_even = (u32)base + ((w_y+w_height) * (vdma1.pitch/2)) + (w_x * (b_depth / 8)); + vdma1.base_odd = vdma1.base_even - (vdma1.pitch / 2); + vdma1.prot_addr = vdma1.base_odd - (w_height * (vdma1.pitch / 2)); + } + + if (V4L2_FIELD_HAS_BOTH(field)) { + } else if (field == V4L2_FIELD_TOP) { + vdma1.base_odd = vdma1.prot_addr; + vdma1.pitch /= 2; + } else if (field == V4L2_FIELD_BOTTOM) { + vdma1.base_odd = vdma1.base_even; + vdma1.base_even = vdma1.prot_addr; + vdma1.pitch /= 2; + } + + if ( 0 != vv->vflip ) { + vdma1.pitch *= -1; + } + + vdma1.base_page = 0; + vdma1.num_line_byte = (vv->standard->v_field<<16)+vv->standard->h_pixels; + + saa7146_write_out_dma(dev, 1, &vdma1); +} + +static +void saa7146_set_output_format(struct saa7146_dev *dev, unsigned long palette) +{ + u32 clip_format = saa7146_read(dev, CLIP_FORMAT_CTRL); + + /* call helper function */ + calculate_output_format_register(dev,palette,&clip_format); + + /* update the hps registers */ + saa7146_write(dev, CLIP_FORMAT_CTRL, clip_format); + saa7146_write(dev, MC2, (MASK_05 | MASK_21)); +} + +void saa7146_set_picture_prop(struct saa7146_dev *dev, int brightness, int contrast, int colour) +{ + u32 bcs_ctrl = 0; + + calculate_bcs_ctrl_register(dev, brightness, contrast, colour, &bcs_ctrl); + saa7146_write(dev, BCS_CTRL, bcs_ctrl); + + /* update the bcs register */ + saa7146_write(dev, MC2, (MASK_06 | MASK_22)); +} + + +/* select input-source */ +void saa7146_set_hps_source_and_sync(struct saa7146_dev *dev, int source, int sync) +{ + struct saa7146_vv *vv = dev->vv_data; + u32 hps_ctrl = 0; + + /* read old state */ + hps_ctrl = saa7146_read(dev, HPS_CTRL); + + hps_ctrl &= ~( MASK_31 | MASK_30 | MASK_28 ); + hps_ctrl |= (source << 30) | (sync << 28); + + /* write back & upload register */ + saa7146_write(dev, HPS_CTRL, hps_ctrl); + saa7146_write(dev, MC2, (MASK_05 | MASK_21)); + + vv->current_hps_source = source; + vv->current_hps_sync = sync; +} + +/* write "data" to the gpio-pin "pin" */ +void saa7146_set_gpio(struct saa7146_dev *dev, u8 pin, u8 data) +{ + u32 value = 0; + + /* sanity check */ + if(pin > 3) + return; + + /* read old register contents */ + value = saa7146_read(dev, GPIO_CTRL ); + + value &= ~(0xff << (8*pin)); + value |= (data << (8*pin)); + + saa7146_write(dev, GPIO_CTRL, value); +} + +/* reprogram hps, enable(1) / disable(0) video */ +void saa7146_set_overlay(struct saa7146_dev *dev, struct saa7146_fh *fh, int v) +{ + struct saa7146_vv *vv = dev->vv_data; + + /* enable ? */ + if( 0 == v) { + /* disable video dma1 */ + saa7146_write(dev, MC1, MASK_22); + return; + } + + saa7146_set_window(dev, fh->ov.win.w.width, fh->ov.win.w.height, fh->ov.win.field); + saa7146_set_position(dev, fh->ov.win.w.left, fh->ov.win.w.top, fh->ov.win.w.height, fh->ov.win.field); + saa7146_set_output_format(dev, vv->ov_fmt->trans); + saa7146_set_clipping_rect(dev, fh); + + /* enable video dma1 */ + saa7146_write(dev, MC1, (MASK_06 | MASK_22)); +} + +void saa7146_write_out_dma(struct saa7146_dev* dev, int which, struct saa7146_video_dma* vdma) +{ + int where = 0; + + if( which < 1 || which > 3) { + return; + } + + /* calculate starting address */ + where = (which-1)*0x18; + + if( 0 != (dev->ext->ext_vv_data->flags & SAA7146_EXT_SWAP_ODD_EVEN)) { + saa7146_write(dev, where, vdma->base_even); + saa7146_write(dev, where+0x04, vdma->base_odd); + } else { + saa7146_write(dev, where, vdma->base_odd); + saa7146_write(dev, where+0x04, vdma->base_even); + } + saa7146_write(dev, where+0x08, vdma->prot_addr); + saa7146_write(dev, where+0x0c, vdma->pitch); + saa7146_write(dev, where+0x10, vdma->base_page); + saa7146_write(dev, where+0x14, vdma->num_line_byte); + + /* upload */ + saa7146_write(dev, MC2, (MASK_02<<(which-1))|(MASK_18<<(which-1))); +/* + printk("vdma%d.base_even: 0x%08x\n", which,vdma->base_even); + printk("vdma%d.base_odd: 0x%08x\n", which,vdma->base_odd); + printk("vdma%d.prot_addr: 0x%08x\n", which,vdma->prot_addr); + printk("vdma%d.base_page: 0x%08x\n", which,vdma->base_page); + printk("vdma%d.pitch: 0x%08x\n", which,vdma->pitch); + printk("vdma%d.num_line_byte: 0x%08x\n", which,vdma->num_line_byte); +*/ +} +static +int calculate_video_dma_grab_packed(struct saa7146_dev* dev, struct saa7146_buf *buf) +{ + struct saa7146_vv *vv = dev->vv_data; + struct saa7146_video_dma vdma1; + + struct saa7146_format *sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); + + int width = buf->fmt->width; + int height = buf->fmt->height; + enum v4l2_field field = buf->fmt->field; + + int depth = sfmt->depth; + + DEB_CAP(("[size=%dx%d,fields=%s]\n", + width,height,v4l2_field_names[field])); + + vdma1.pitch = (width*depth*2)/8; + vdma1.num_line_byte = ((vv->standard->v_field<<16) + vv->standard->h_pixels); + vdma1.base_page = buf->pt[0].dma | ME1; + + if( 0 != vv->vflip ) { + vdma1.prot_addr = buf->pt[0].offset; + vdma1.base_even = buf->pt[0].offset+(vdma1.pitch/2)*height; + vdma1.base_odd = vdma1.base_even - (vdma1.pitch/2); + } else { + vdma1.base_even = buf->pt[0].offset; + vdma1.base_odd = vdma1.base_even + (vdma1.pitch/2); + vdma1.prot_addr = buf->pt[0].offset+(vdma1.pitch/2)*height; + } + + if (V4L2_FIELD_HAS_BOTH(field)) { + } else if (field == V4L2_FIELD_TOP) { + vdma1.base_odd = vdma1.prot_addr; + vdma1.pitch /= 2; + } else if (field == V4L2_FIELD_BOTTOM) { + vdma1.base_odd = vdma1.base_even; + vdma1.base_even = vdma1.prot_addr; + vdma1.pitch /= 2; + } + + if( 0 != vv->vflip ) { + vdma1.pitch *= -1; + } + + saa7146_write_out_dma(dev, 1, &vdma1); + return 0; +} + +static +int calc_planar_422(struct saa7146_vv *vv, struct saa7146_buf *buf, struct saa7146_video_dma *vdma2, struct saa7146_video_dma *vdma3) +{ + int height = buf->fmt->height; + int width = buf->fmt->width; + + vdma2->pitch = width; + vdma3->pitch = width; + + if( 0 != vv->vflip ) { + vdma2->prot_addr = buf->pt[1].offset; + vdma2->base_even = ((vdma2->pitch/2)*height)+buf->pt[1].offset; + vdma2->base_odd = vdma2->base_even - (vdma2->pitch/2); + + vdma3->prot_addr = buf->pt[2].offset; + vdma3->base_even = ((vdma3->pitch/2)*height)+buf->pt[2].offset; + vdma3->base_odd = vdma3->base_even - (vdma3->pitch/2); + + } else { + vdma3->base_even = buf->pt[2].offset; + vdma3->base_odd = vdma3->base_even + (vdma3->pitch/2); + vdma3->prot_addr = (vdma3->pitch/2)*height+buf->pt[2].offset; + + vdma2->base_even = buf->pt[1].offset; + vdma2->base_odd = vdma2->base_even + (vdma2->pitch/2); + vdma2->prot_addr = (vdma2->pitch/2)*height+buf->pt[1].offset; + } + + return 0; +} + +static +int calc_planar_420(struct saa7146_vv *vv, struct saa7146_buf *buf, struct saa7146_video_dma *vdma2, struct saa7146_video_dma *vdma3) +{ + int height = buf->fmt->height; + int width = buf->fmt->width; + + vdma2->pitch = width/2; + vdma3->pitch = width/2; + + if( 0 != vv->vflip ) { + vdma2->prot_addr = buf->pt[2].offset; + vdma2->base_even = ((vdma2->pitch/2)*height)+buf->pt[2].offset; + vdma2->base_odd = vdma2->base_even - (vdma2->pitch/2); + + vdma3->prot_addr = buf->pt[1].offset; + vdma3->base_even = ((vdma3->pitch/2)*height)+buf->pt[1].offset; + vdma3->base_odd = vdma3->base_even - (vdma3->pitch/2); + + } else { + vdma3->base_even = buf->pt[2].offset; + vdma3->base_odd = vdma3->base_even + (vdma3->pitch); + vdma3->prot_addr = (vdma3->pitch/2)*height+buf->pt[2].offset; + + vdma2->base_even = buf->pt[1].offset; + vdma2->base_odd = vdma2->base_even + (vdma2->pitch); + vdma2->prot_addr = (vdma2->pitch/2)*height+buf->pt[1].offset; + } + return 0; +} + + +static +int calculate_video_dma_grab_planar(struct saa7146_dev* dev, struct saa7146_buf *buf) +{ + struct saa7146_vv *vv = dev->vv_data; + struct saa7146_video_dma vdma1; + struct saa7146_video_dma vdma2; + struct saa7146_video_dma vdma3; + + struct saa7146_format *sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); + + int width = buf->fmt->width; + int height = buf->fmt->height; + enum v4l2_field field = buf->fmt->field; + + BUG_ON(0 == buf->pt[0].dma); + BUG_ON(0 == buf->pt[1].dma); + BUG_ON(0 == buf->pt[2].dma); + + DEB_CAP(("[size=%dx%d,fields=%s]\n", + width,height,v4l2_field_names[field])); + + /* fixme: what happens for user space buffers here?. The offsets are + most likely wrong, this version here only works for page-aligned + buffers, modifications to the pagetable-functions are necessary...*/ + + vdma1.pitch = width*2; + vdma1.num_line_byte = ((vv->standard->v_field<<16) + vv->standard->h_pixels); + vdma1.base_page = buf->pt[0].dma | ME1; + + if( 0 != vv->vflip ) { + vdma1.prot_addr = buf->pt[0].offset; + vdma1.base_even = ((vdma1.pitch/2)*height)+buf->pt[0].offset; + vdma1.base_odd = vdma1.base_even - (vdma1.pitch/2); + } else { + vdma1.base_even = buf->pt[0].offset; + vdma1.base_odd = vdma1.base_even + (vdma1.pitch/2); + vdma1.prot_addr = (vdma1.pitch/2)*height+buf->pt[0].offset; + } + + vdma2.num_line_byte = 0; /* unused */ + vdma2.base_page = buf->pt[1].dma | ME1; + + vdma3.num_line_byte = 0; /* unused */ + vdma3.base_page = buf->pt[2].dma | ME1; + + switch( sfmt->depth ) { + case 12: { + calc_planar_420(vv,buf,&vdma2,&vdma3); + break; + } + case 16: { + calc_planar_422(vv,buf,&vdma2,&vdma3); + break; + } + default: { + return -1; + } + } + + if (V4L2_FIELD_HAS_BOTH(field)) { + } else if (field == V4L2_FIELD_TOP) { + vdma1.base_odd = vdma1.prot_addr; + vdma1.pitch /= 2; + vdma2.base_odd = vdma2.prot_addr; + vdma2.pitch /= 2; + vdma3.base_odd = vdma3.prot_addr; + vdma3.pitch /= 2; + } else if (field == V4L2_FIELD_BOTTOM) { + vdma1.base_odd = vdma1.base_even; + vdma1.base_even = vdma1.prot_addr; + vdma1.pitch /= 2; + vdma2.base_odd = vdma2.base_even; + vdma2.base_even = vdma2.prot_addr; + vdma2.pitch /= 2; + vdma3.base_odd = vdma3.base_even; + vdma3.base_even = vdma3.prot_addr; + vdma3.pitch /= 2; + } + + if( 0 != vv->vflip ) { + vdma1.pitch *= -1; + vdma2.pitch *= -1; + vdma3.pitch *= -1; + } + + saa7146_write_out_dma(dev, 1, &vdma1); + if( sfmt->swap != 0 ) { + saa7146_write_out_dma(dev, 3, &vdma2); + saa7146_write_out_dma(dev, 2, &vdma3); + } else { + saa7146_write_out_dma(dev, 2, &vdma2); + saa7146_write_out_dma(dev, 3, &vdma3); + } + return 0; +} + +static +void program_capture_engine(struct saa7146_dev *dev, int planar) +{ + struct saa7146_vv *vv = dev->vv_data; + int count = 0; + + unsigned long e_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_E_FID_A : CMD_E_FID_B; + unsigned long o_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_O_FID_A : CMD_O_FID_B; + + /* write beginning of rps-program */ + count = 0; + + /* wait for o_fid_a/b / e_fid_a/b toggle only if bit 0 is not set*/ + dev->rps0[ count++ ] = CMD_PAUSE | CMD_OAN | CMD_SIG0 | e_wait; + dev->rps0[ count++ ] = CMD_PAUSE | CMD_OAN | CMD_SIG0 | o_wait; + + /* set bit 0 */ + dev->rps0[ count++ ] = CMD_WR_REG | (1 << 8) | (MC2/4); + dev->rps0[ count++ ] = MASK_27 | MASK_11; + + /* turn on video-dma1 */ + dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4); + dev->rps0[ count++ ] = MASK_06 | MASK_22; /* => mask */ + dev->rps0[ count++ ] = MASK_06 | MASK_22; /* => values */ + if( 0 != planar ) { + /* turn on video-dma2 */ + dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4); + dev->rps0[ count++ ] = MASK_05 | MASK_21; /* => mask */ + dev->rps0[ count++ ] = MASK_05 | MASK_21; /* => values */ + + /* turn on video-dma3 */ + dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4); + dev->rps0[ count++ ] = MASK_04 | MASK_20; /* => mask */ + dev->rps0[ count++ ] = MASK_04 | MASK_20; /* => values */ + } + + /* wait for o_fid_a/b / e_fid_a/b toggle */ + dev->rps0[ count++ ] = CMD_PAUSE | e_wait; + dev->rps0[ count++ ] = CMD_PAUSE | o_wait; + + /* turn off video-dma1 */ + dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4); + dev->rps0[ count++ ] = MASK_22 | MASK_06; /* => mask */ + dev->rps0[ count++ ] = MASK_22; /* => values */ + if( 0 != planar ) { + /* turn off video-dma2 */ + dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4); + dev->rps0[ count++ ] = MASK_05 | MASK_21; /* => mask */ + dev->rps0[ count++ ] = MASK_21; /* => values */ + + /* turn off video-dma3 */ + dev->rps0[ count++ ] = CMD_WR_REG_MASK | (MC1/4); + dev->rps0[ count++ ] = MASK_04 | MASK_20; /* => mask */ + dev->rps0[ count++ ] = MASK_20; /* => values */ + } + + /* generate interrupt */ + dev->rps0[ count++ ] = CMD_INTERRUPT; + + /* stop */ + dev->rps0[ count++ ] = CMD_STOP; +} + +void saa7146_set_capture(struct saa7146_dev *dev, struct saa7146_buf *buf, struct saa7146_buf *next) +{ + struct saa7146_format *sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); + + DEB_CAP(("buf:%p, next:%p\n",buf,next)); + + saa7146_set_window(dev, buf->fmt->width, buf->fmt->height, buf->fmt->field); + saa7146_set_output_format(dev, sfmt->trans); + saa7146_disable_clipping(dev); + + if( 0 != IS_PLANAR(sfmt->trans)) { + calculate_video_dma_grab_planar(dev, buf); + program_capture_engine(dev,1); + } else { + calculate_video_dma_grab_packed(dev, buf); + program_capture_engine(dev,0); + } + + /* write the address of the rps-program */ + saa7146_write(dev, RPS_ADDR0, virt_to_bus(&dev->rps0[ 0])); + + /* turn on rps */ + saa7146_write(dev, MC1, (MASK_12 | MASK_28)); +} + diff -Nru a/drivers/media/common/saa7146_i2c.c b/drivers/media/common/saa7146_i2c.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/saa7146_i2c.c Mon Apr 7 13:26:15 2003 @@ -0,0 +1,424 @@ +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME saa7146 +#endif + +/* helper function */ +static +void my_wait(struct saa7146_dev *dev, long ms) +{ + set_current_state(TASK_INTERRUPTIBLE); + schedule_timeout((((ms+10)/10)*HZ)/1000); +} + +u32 saa7146_i2c_func(struct i2c_adapter *adapter) +{ +//fm DEB_I2C(("'%s'.\n", adapter->name)); + + return I2C_FUNC_I2C + | I2C_FUNC_SMBUS_QUICK + | I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE + | I2C_FUNC_SMBUS_READ_BYTE_DATA | I2C_FUNC_SMBUS_WRITE_BYTE_DATA; +} + +/* this function returns the status-register of our i2c-device */ +static inline +u32 saa7146_i2c_status(struct saa7146_dev *dev) +{ + u32 iicsta = saa7146_read(dev, I2C_STATUS); +/* + DEB_I2C(("status: 0x%08x\n",iicsta)); +*/ + return iicsta; +} + +/* this function runs through the i2c-messages and prepares the data to be + sent through the saa7146. have a look at the specifications p. 122 ff + to understand this. it returns the number of u32s to send, or -1 + in case of an error. */ +static +int saa7146_i2c_msg_prepare(const struct i2c_msg m[], int num, u32 *op) +{ + int h1, h2; + int i, j, addr; + int mem = 0, op_count = 0; + + /* first determine size of needed memory */ + for(i = 0; i < num; i++) { + mem += m[i].len + 1; + } + + /* worst case: we need one u32 for three bytes to be send + plus one extra byte to address the device */ + mem = 1 + ((mem-1) / 3); + + /* we assume that op points to a memory of at least SAA7146_I2C_MEM bytes + size. if we exceed this limit... */ + if ( (4*mem) > SAA7146_I2C_MEM ) { +//fm DEB_I2C(("cannot prepare i2c-message.\n")); + return -ENOMEM; + } + + /* be careful: clear out the i2c-mem first */ + memset(op,0,sizeof(u32)*mem); + + /* loop through all messages */ + for(i = 0; i < num; i++) { + + /* insert the address of the i2c-slave. + note: we get 7 bit i2c-addresses, + so we have to perform a translation */ + addr = (m[i].addr*2) + ( (0 != (m[i].flags & I2C_M_RD)) ? 1 : 0); + h1 = op_count/3; h2 = op_count%3; + op[h1] |= ( (u8)addr << ((3-h2)*8)); + op[h1] |= (SAA7146_I2C_START << ((3-h2)*2)); + op_count++; + + /* loop through all bytes of message i */ + for(j = 0; j < m[i].len; j++) { + /* insert the data bytes */ + h1 = op_count/3; h2 = op_count%3; + op[h1] |= ( (u32)((u8)m[i].buf[j]) << ((3-h2)*8)); + op[h1] |= ( SAA7146_I2C_CONT << ((3-h2)*2)); + op_count++; + } + + } + + /* have a look at the last byte inserted: + if it was: ...CONT change it to ...STOP */ + h1 = (op_count-1)/3; h2 = (op_count-1)%3; + if ( SAA7146_I2C_CONT == (0x3 & (op[h1] >> ((3-h2)*2))) ) { + op[h1] &= ~(0x2 << ((3-h2)*2)); + op[h1] |= (SAA7146_I2C_STOP << ((3-h2)*2)); + } + + /* return the number of u32s to send */ + return mem; +} + +/* this functions loops through all i2c-messages. normally, it should determine + which bytes were read through the adapter and write them back to the corresponding + i2c-message. but instead, we simply write back all bytes. + fixme: this could be improved. */ +static +int saa7146_i2c_msg_cleanup(const struct i2c_msg m[], int num, u32 *op) +{ + int i, j; + int op_count = 0; + + /* loop through all messages */ + for(i = 0; i < num; i++) { + + op_count++; + + /* loop throgh all bytes of message i */ + for(j = 0; j < m[i].len; j++) { + /* write back all bytes that could have been read */ + m[i].buf[j] = (op[op_count/3] >> ((3-(op_count%3))*8)); + op_count++; + } + } + + return 0; +} + +/* this functions resets the i2c-device and returns 0 if everything was fine, otherwise -1 */ +static +int saa7146_i2c_reset(struct saa7146_dev *dev) +{ + /* get current status */ + u32 status = saa7146_i2c_status(dev); + + /* clear registers for sure */ + saa7146_write(dev, I2C_STATUS, dev->i2c_bitrate); + saa7146_write(dev, I2C_TRANSFER, 0); + + /* check if any operation is still in progress */ + if ( 0 != ( status & SAA7146_I2C_BUSY) ) { + + /* yes, kill ongoing operation */ + DEB_I2C(("busy_state detected.\n")); + + /* set "ABORT-OPERATION"-bit (bit 7)*/ + saa7146_write(dev, I2C_STATUS, (dev->i2c_bitrate | MASK_07)); + saa7146_write(dev, MC2, (MASK_00 | MASK_16)); + my_wait(dev,SAA7146_I2C_DELAY); + + /* clear all error-bits pending; this is needed because p.123, note 1 */ + saa7146_write(dev, I2C_STATUS, dev->i2c_bitrate); + saa7146_write(dev, MC2, (MASK_00 | MASK_16)); + my_wait(dev,SAA7146_I2C_DELAY); + } + + /* check if any error is (still) present. (this can be necessary because p.123, note 1) */ + status = saa7146_i2c_status(dev); + + if ( dev->i2c_bitrate != status ) { + + DEB_I2C(("error_state detected. status:0x%08x\n",status)); + + /* Repeat the abort operation. This seems to be necessary + after serious protocol errors caused by e.g. the SAA7740 */ + saa7146_write(dev, I2C_STATUS, (dev->i2c_bitrate | MASK_07)); + saa7146_write(dev, MC2, (MASK_00 | MASK_16)); + my_wait(dev,SAA7146_I2C_DELAY); + + /* clear all error-bits pending */ + saa7146_write(dev, I2C_STATUS, dev->i2c_bitrate); + saa7146_write(dev, MC2, (MASK_00 | MASK_16)); + my_wait(dev,SAA7146_I2C_DELAY); + + /* the data sheet says it might be necessary to clear the status + twice after an abort */ + saa7146_write(dev, I2C_STATUS, dev->i2c_bitrate); + saa7146_write(dev, MC2, (MASK_00 | MASK_16)); + my_wait(dev,SAA7146_I2C_DELAY); + } + + /* if any error is still present, a fatal error has occured ... */ + status = saa7146_i2c_status(dev); + if ( dev->i2c_bitrate != status ) { + DEB_I2C(("fatal error. status:0x%08x\n",status)); + return -1; + } + + return 0; +} + +/* this functions writes out the data-byte 'dword' to the i2c-device. + it returns 0 if ok, -1 if the transfer failed, -2 if the transfer + failed badly (e.g. address error) */ +static +int saa7146_i2c_writeout(struct saa7146_dev *dev, u32* dword) +{ + u32 status = 0, mc2 = 0; + int timeout; + + /* write out i2c-command */ + DEB_I2C(("before: 0x%08x (status: 0x%08x), %d\n",*dword,saa7146_read(dev, I2C_STATUS), dev->i2c_op)); + + if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) { + + saa7146_write(dev, I2C_STATUS, dev->i2c_bitrate); + saa7146_write(dev, I2C_TRANSFER, *dword); + + dev->i2c_op = 1; + IER_ENABLE(dev, MASK_16|MASK_17); + saa7146_write(dev, MC2, (MASK_00 | MASK_16)); + + wait_event_interruptible(dev->i2c_wq, dev->i2c_op == 0); + if (signal_pending (current)) { + /* a signal arrived */ + return -ERESTARTSYS; + } + status = saa7146_read(dev, I2C_STATUS); + } else { + saa7146_write(dev, I2C_STATUS, dev->i2c_bitrate); + saa7146_write(dev, I2C_TRANSFER, *dword); + saa7146_write(dev, MC2, (MASK_00 | MASK_16)); + + /* do not poll for i2c-status before upload is complete */ + timeout = jiffies + HZ/100 + 1; /* 10ms */ + while(1) { + mc2 = (saa7146_read(dev, MC2) & 0x1); + if( 0 != mc2 ) { + break; + } + if (jiffies > timeout) { + printk(KERN_WARNING "saa7146_i2c_writeout: timed out waiting for MC2\n"); + return -EIO; + } + } + /* wait until we get a transfer done or error */ + timeout = jiffies + HZ/100 + 1; /* 10ms */ + while(1) { + status = saa7146_i2c_status(dev); + if( (0x3 == (status & 0x3)) || (0 == (status & 0x1)) ) { + break; + } + if (jiffies > timeout) { + /* this is normal when probing the bus + * (no answer from nonexisistant device...) + */ + DEB_I2C(("saa7146_i2c_writeout: timed out waiting for end of xfer\n")); + return -EIO; + } + my_wait(dev,1); + } + } + + /* give a detailed status report */ + if ( 0 != (status & SAA7146_I2C_ERR)) { + + if( 0 != (status & SAA7146_I2C_SPERR) ) { + DEB_I2C(("error due to invalid start/stop condition.\n")); + } + if( 0 != (status & SAA7146_I2C_DTERR) ) { + DEB_I2C(("error in data transmission.\n")); + } + if( 0 != (status & SAA7146_I2C_DRERR) ) { + DEB_I2C(("error when receiving data.\n")); + } + if( 0 != (status & SAA7146_I2C_AL) ) { + DEB_I2C(("error because arbitration lost.\n")); + } + + /* we handle address-errors here */ + if( 0 != (status & SAA7146_I2C_APERR) ) { + DEB_I2C(("error in address phase.\n")); + return -EREMOTEIO; + } + + return -EIO; + } + + /* read back data, just in case we were reading ... */ + *dword = saa7146_read(dev, I2C_TRANSFER); + + DEB_I2C(("after: 0x%08x\n",*dword)); + return 0; +} + +int saa7146_i2c_transfer(struct saa7146_dev *dev, const struct i2c_msg msgs[], int num, int retries) +{ + int i = 0, count = 0; + u32* buffer = dev->i2c_mem; + int err = 0; + int address_err = 0; + + if (down_interruptible (&dev->i2c_lock)) + return -ERESTARTSYS; + + for(i=0;i count ) { + err = -1; + goto out; + } + + do { + /* reset the i2c-device if necessary */ + err = saa7146_i2c_reset(dev); + if ( 0 > err ) { + DEB_I2C(("could not reset i2c-device.\n")); + goto out; + } + + /* write out the u32s one after another */ + for(i = 0; i < count; i++) { + err = saa7146_i2c_writeout(dev, &buffer[i] ); + if ( 0 != err) { + /* this one is unsatisfying: some i2c slaves on some + dvb cards don't acknowledge correctly, so the saa7146 + thinks that an address error occured. in that case, the + transaction should be retrying, even if an address error + occured. analog saa7146 based cards extensively rely on + i2c address probing, however, and address errors indicate that a + device is really *not* there. retrying in that case + increases the time the device needs to probe greatly, so + it should be avoided. because of the fact, that only + analog based cards use irq based i2c transactions (for dvb + cards, this screwes up other interrupt sources), we bail out + completely for analog cards after an address error and trust + the saa7146 address error detection. */ + if ( -EREMOTEIO == err ) { + if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) { + goto out; + } + address_err++; + } + DEB_I2C(("error while sending message(s). starting again.\n")); + break; + } + } + if( 0 == err ) { + err = num; + break; + } + + /* delay a bit before retrying */ + my_wait(dev, 10); + + } while (err != num && retries--); + + /* if every retry had an address error, exit right away */ + if (address_err == retries) { + goto out; + } + + /* if any things had to be read, get the results */ + if ( 0 != saa7146_i2c_msg_cleanup(msgs, num, buffer)) { + DEB_I2C(("could not cleanup i2c-message.\n")); + err = -1; + goto out; + } + + /* return the number of delivered messages */ + DEB_I2C(("transmission successful. (msg:%d).\n",err)); +out: + /* another bug in revision 0: the i2c-registers get uploaded randomly by other + uploads, so we better clear them out before continueing */ + if( 0 == dev->revision ) { + u32 zero = 0; + saa7146_i2c_reset(dev); + if( 0 != saa7146_i2c_writeout(dev, &zero)) { + INFO(("revision 0 error. this should never happen.\n")); + } + } + + up(&dev->i2c_lock); + return err; +} + +/* utility functions */ +static +int saa7146_i2c_xfer(struct i2c_adapter* adapter, struct i2c_msg msg[], int num) +{ + struct saa7146_dev* dev = i2c_get_adapdata(adapter); + + DEB_I2C(("adapter: '%s'.\n", adapter->dev.name)); + + /* use helper function to transfer data */ + return saa7146_i2c_transfer(dev, msg, num, adapter->retries); +} + + +/*****************************************************************************/ +/* i2c-adapter helper functions */ +#include + +/* exported algorithm data */ +static +struct i2c_algorithm saa7146_algo = { + .name = "saa7146 i2c algorithm", + .id = I2C_ALGO_SAA7146, + .master_xfer = saa7146_i2c_xfer, + .functionality = saa7146_i2c_func, +}; + +int saa7146_i2c_adapter_prepare(struct saa7146_dev *dev, struct i2c_adapter *i2c_adapter, u32 bitrate) +{ + DEB_EE(("bitrate: 0x%08x\n",bitrate)); + + dev->i2c_bitrate = bitrate; + saa7146_i2c_reset(dev); + + if( NULL != i2c_adapter ) { + memset(i2c_adapter,0,sizeof(struct i2c_adapter)); + strcpy(i2c_adapter->dev.name, dev->name); + i2c_set_adapdata(i2c_adapter,dev); + i2c_adapter->algo = &saa7146_algo; + i2c_adapter->algo_data = NULL; + i2c_adapter->id = I2C_ALGO_SAA7146; + i2c_adapter->timeout = SAA7146_I2C_TIMEOUT; + i2c_adapter->retries = SAA7146_I2C_RETRIES; + } + + return 0; +} diff -Nru a/drivers/media/common/saa7146_vbi.c b/drivers/media/common/saa7146_vbi.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/saa7146_vbi.c Mon Apr 7 13:16:30 2003 @@ -0,0 +1,468 @@ +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME saa7146 +#endif + +static int vbi_pixel_to_capture = 720 * 2; + +static +int vbi_workaround(struct saa7146_dev *dev) +{ + struct saa7146_vv *vv = dev->vv_data; + + u32 *cpu; + dma_addr_t dma_addr; + + int i, index; + + DECLARE_WAITQUEUE(wait, current); + + DEB_VBI(("dev:%p\n",dev)); + + /* once again, a bug in the saa7146: the brs acquisition + is buggy and especially the BXO-counter does not work + as specified. there is this workaround, but please + don't let me explain it. ;-) */ + + cpu = pci_alloc_consistent(dev->pci, 4096, &dma_addr); + if (NULL == cpu) + return -ENOMEM; + + /* setup some basic programming, just for the workaround */ + saa7146_write(dev, BASE_EVEN3, dma_addr); + saa7146_write(dev, BASE_ODD3, dma_addr+vbi_pixel_to_capture); + saa7146_write(dev, PROT_ADDR3, dma_addr+4096); + saa7146_write(dev, PITCH3, vbi_pixel_to_capture); + saa7146_write(dev, BASE_PAGE3, 0x0); + saa7146_write(dev, NUM_LINE_BYTE3, (2<<16)|((vbi_pixel_to_capture)<<0)); + saa7146_write(dev, MC2, MASK_04|MASK_20); + + + /* we have to do the workaround two times to be sure that + everything is ok */ + for(i = 0; i < 2; i++) { + + /* indicate to the irq handler that we do the workaround */ + saa7146_write(dev, MC2, MASK_31|MASK_15); + + saa7146_write(dev, NUM_LINE_BYTE3, (1<<16)|(2<<0)); + saa7146_write(dev, MC2, MASK_04|MASK_20); + + index = 0; + + /* load brs-control register */ + dev->rps1[index++] = CMD_WR_REG | (1 << 8) | (BRS_CTRL/4); + /* BXO = 1h, BRS to outbound */ + dev->rps1[index++]=0xc000008c; + /* wait for vbi_a */ + dev->rps1[index++] = CMD_PAUSE | MASK_10; + /* upload brs */ + dev->rps1[index++] = CMD_UPLOAD | MASK_08; + /* load brs-control register */ + dev->rps1[index++] = CMD_WR_REG | (1 << 8) | (BRS_CTRL/4); + /* BYO = 1, BXO = NQBIL (=1728 for PAL, for NTSC this is 858*2) - NumByte3 (=1440) = 288 */ + dev->rps1[index++] = ((1728-(vbi_pixel_to_capture)) << 7) | MASK_19; + /* wait for brs_done */ + dev->rps1[index++] = CMD_PAUSE | MASK_08; + /* upload brs */ + dev->rps1[index++] = CMD_UPLOAD | MASK_08; + /* load video-dma3 NumLines3 and NumBytes3 */ + dev->rps1[index++] = CMD_WR_REG | (1 << 8) | (NUM_LINE_BYTE3/4); + /* dev->vbi_count*2 lines, 720 pixel (= 1440 Bytes) */ + dev->rps1[index++]= (2 << 16) | (vbi_pixel_to_capture); + /* load brs-control register */ + dev->rps1[index++] = CMD_WR_REG | (1 << 8) | (BRS_CTRL/4); + /* Set BRS right: note: this is an experimental value for BXO (=> PAL!) */ + dev->rps1[index++] = (540 << 7) | (5 << 19); // 5 == vbi_start + /* wait for brs_done */ + dev->rps1[index++] = CMD_PAUSE | MASK_08; + /* upload brs and video-dma3*/ + dev->rps1[index++] = CMD_UPLOAD | MASK_08 | MASK_04; + /* load mc2 register: enable dma3 */ + dev->rps1[index++] = CMD_WR_REG | (1 << 8) | (MC1/4); + dev->rps1[index++] = MASK_20 | MASK_04; + /* generate interrupt */ + dev->rps1[index++] = CMD_INTERRUPT; + /* stop rps1 */ + dev->rps1[index++] = CMD_STOP; + + /* enable rps1 irqs */ + IER_ENABLE(dev,MASK_28); + + /* prepare to wait to be woken up by the irq-handler */ + add_wait_queue(&vv->vbi_wq, &wait); + current->state = TASK_INTERRUPTIBLE; + + /* start rps1 to enable workaround */ + saa7146_write(dev, RPS_ADDR1, virt_to_bus(&dev->rps1[ 0])); + saa7146_write(dev, MC1, (MASK_13 | MASK_29)); + + schedule(); + + DEB_VBI(("brs bug workaround %d/1.\n",i)); + + remove_wait_queue(&vv->vbi_wq, &wait); + current->state = TASK_RUNNING; + + /* disable rps1 irqs */ + IER_DISABLE(dev,MASK_28); + + /* stop video-dma3 */ + saa7146_write(dev, MC1, MASK_20); + + if(signal_pending(current)) { + + DEB_VBI(("aborted.\n")); + + /* stop rps1 for sure */ + saa7146_write(dev, MC1, MASK_29); + + pci_free_consistent(dev->pci, 4096, cpu, dma_addr); + return -EINTR; + } + } + + pci_free_consistent(dev->pci, 4096, cpu, dma_addr); + return 0; +} + +void saa7146_set_vbi_capture(struct saa7146_dev *dev, struct saa7146_buf *buf, struct saa7146_buf *next) +{ + struct saa7146_vv *vv = dev->vv_data; + + struct saa7146_video_dma vdma3; + + int count = 0; + unsigned long e_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_E_FID_A : CMD_E_FID_B; + unsigned long o_wait = vv->current_hps_sync == SAA7146_HPS_SYNC_PORT_A ? CMD_O_FID_A : CMD_O_FID_B; + +/* + vdma3.base_even = (u32)dev->ov_fb.base+2048*70; + vdma3.base_odd = (u32)dev->ov_fb.base; + vdma3.prot_addr = (u32)dev->ov_fb.base+2048*164; + vdma3.pitch = 2048; + vdma3.base_page = 0; + vdma3.num_line_byte = (64<<16)|((vbi_pixel_to_capture)<<0); // set above! +*/ + vdma3.base_even = buf->pt[2].offset; + vdma3.base_odd = buf->pt[2].offset + 16 * vbi_pixel_to_capture; + vdma3.prot_addr = buf->pt[2].offset + 16 * 2 * vbi_pixel_to_capture; + vdma3.pitch = vbi_pixel_to_capture; + vdma3.base_page = buf->pt[2].dma | ME1; + vdma3.num_line_byte = (16 << 16) | vbi_pixel_to_capture; + saa7146_write_out_dma(dev, 3, &vdma3); + + /* write beginning of rps-program */ + count = 0; + + /* wait for o_fid_a/b / e_fid_a/b toggle only if bit 1 is not set */ + + /* we don't wait here for the first field anymore. this is different from the video + capture and might cause that the first buffer is only half filled (with only + one field). but since this is some sort of streaming data, this is not that negative. + but by doing this, we can use the whole engine from video-buf.c... */ + +/* + dev->rps1[ count++ ] = CMD_PAUSE | CMD_OAN | CMD_SIG1 | e_wait; + dev->rps1[ count++ ] = CMD_PAUSE | CMD_OAN | CMD_SIG1 | o_wait; +*/ + /* set bit 1 */ + dev->rps1[ count++ ] = CMD_WR_REG | (1 << 8) | (MC2/4); + dev->rps1[ count++ ] = MASK_28 | MASK_12; + + /* turn on video-dma3 */ + dev->rps1[ count++ ] = CMD_WR_REG_MASK | (MC1/4); + dev->rps1[ count++ ] = MASK_04 | MASK_20; /* => mask */ + dev->rps1[ count++ ] = MASK_04 | MASK_20; /* => values */ + + /* wait for o_fid_a/b / e_fid_a/b toggle */ + dev->rps1[ count++ ] = CMD_PAUSE | o_wait; + dev->rps1[ count++ ] = CMD_PAUSE | e_wait; + + /* generate interrupt */ + dev->rps1[ count++ ] = CMD_INTERRUPT; + + /* stop */ + dev->rps1[ count++ ] = CMD_STOP; + + /* enable rps1 irqs */ + IER_ENABLE(dev, MASK_28); + + /* write the address of the rps-program */ + saa7146_write(dev, RPS_ADDR1, virt_to_bus(&dev->rps1[ 0])); + + /* turn on rps */ + saa7146_write(dev, MC1, (MASK_13 | MASK_29)); +} + +static +int buffer_activate(struct saa7146_dev *dev, + struct saa7146_buf *buf, + struct saa7146_buf *next) +{ + struct saa7146_vv *vv = dev->vv_data; + buf->vb.state = STATE_ACTIVE; + + DEB_VBI(("dev:%p, buf:%p, next:%p\n",dev,buf,next)); + saa7146_set_vbi_capture(dev,buf,next); + + mod_timer(&vv->vbi_q.timeout, jiffies+BUFFER_TIMEOUT); + return 0; +} + +static +int buffer_prepare(struct file *file, struct videobuf_buffer *vb,enum v4l2_field field) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_buf *buf = (struct saa7146_buf *)vb; + + int err = 0; + int lines, llength, size; + + lines = 16 * 2 ; /* 2 fields */ + llength = vbi_pixel_to_capture; + size = lines * llength; + + DEB_VBI(("vb:%p\n",vb)); + + if (0 != buf->vb.baddr && buf->vb.bsize < size) { + DEB_VBI(("size mismatch.\n")); + return -EINVAL; + } + + if (buf->vb.size != size) + saa7146_dma_free(dev,buf); + + if (STATE_NEEDS_INIT == buf->vb.state) { + buf->vb.width = llength; + buf->vb.height = lines; + buf->vb.size = size; + buf->vb.field = field; // FIXME: check this + + saa7146_pgtable_free(dev->pci, &buf->pt[2]); + saa7146_pgtable_alloc(dev->pci, &buf->pt[2]); + + err = videobuf_iolock(dev->pci,&buf->vb); + if (err) + goto oops; + saa7146_pgtable_build_single(dev->pci, &buf->pt[2], buf->vb.dma.sglist, buf->vb.dma.sglen); + } + buf->vb.state = STATE_PREPARED; + buf->activate = buffer_activate; + + return 0; + + oops: + DEB_VBI(("error out.\n")); + saa7146_dma_free(dev,buf); + + return err; +} + +static int +buffer_setup(struct file *file, unsigned int *count, unsigned int *size) +{ + int llength,lines; + + lines = 16 * 2 ; /* 2 fields */ + llength = vbi_pixel_to_capture; + + *size = lines * llength; + *count = 2; + + DEB_VBI(("count:%d, size:%d\n",*count,*size)); + + return 0; +} + +static +void buffer_queue(struct file *file, struct videobuf_buffer *vb) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + struct saa7146_buf *buf = (struct saa7146_buf *)vb; + + DEB_VBI(("vb:%p\n",vb)); + saa7146_buffer_queue(dev,&vv->vbi_q,buf); +} + +static +void buffer_release(struct file *file, struct videobuf_buffer *vb) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_buf *buf = (struct saa7146_buf *)vb; + + DEB_VBI(("vb:%p\n",vb)); + saa7146_dma_free(dev,buf); +} + +static +struct videobuf_queue_ops vbi_qops = { + .buf_setup = buffer_setup, + .buf_prepare = buffer_prepare, + .buf_queue = buffer_queue, + .buf_release = buffer_release, +}; + +/* ------------------------------------------------------------------ */ + +static +void vbi_stop(struct saa7146_fh *fh) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + unsigned long flags; + DEB_VBI(("dev:%p, fh:%p\n",dev, fh)); + + spin_lock_irqsave(&dev->slock,flags); + + /* disable rps1 */ + saa7146_write(dev, MC1, MASK_29); + + /* disable rps1 irqs */ + IER_DISABLE(dev, MASK_28); + + /* shut down dma 3 transfers */ + saa7146_write(dev, MC1, MASK_20); + + vv->vbi_streaming = NULL; + spin_unlock_irqrestore(&dev->slock, flags); +} + +static +void vbi_read_timeout(unsigned long data) +{ + struct saa7146_fh *fh = (struct saa7146_fh *)data; + struct saa7146_dev *dev = fh->dev; + + DEB_VBI(("dev:%p, fh:%p\n",dev, fh)); + + vbi_stop(fh); +} + +static +void vbi_init(struct saa7146_dev *dev, struct saa7146_vv *vv) +{ + DEB_VBI(("dev:%p\n",dev)); + + INIT_LIST_HEAD(&vv->vbi_q.queue); + + init_timer(&vv->vbi_q.timeout); + vv->vbi_q.timeout.function = saa7146_buffer_timeout; + vv->vbi_q.timeout.data = (unsigned long)(&vv->vbi_q); + vv->vbi_q.dev = dev; + + init_waitqueue_head(&vv->vbi_wq); +} + +static +void vbi_open(struct saa7146_dev *dev, struct saa7146_fh *fh) +{ + DEB_VBI(("dev:%p, fh:%p\n",dev,fh)); + + memset(&fh->vbi_fmt,0,sizeof(fh->vbi_fmt)); + + fh->vbi_fmt.sampling_rate = 27000000; + fh->vbi_fmt.offset = 248; /* todo */ + fh->vbi_fmt.samples_per_line = vbi_pixel_to_capture; + fh->vbi_fmt.sample_format = V4L2_PIX_FMT_GREY; + + /* fixme: this only works for PAL */ + fh->vbi_fmt.start[0] = 5; + fh->vbi_fmt.count[0] = 16; + fh->vbi_fmt.start[1] = 312; + fh->vbi_fmt.count[1] = 16; + + videobuf_queue_init(&fh->vbi_q, &vbi_qops, + dev->pci, &dev->slock, + V4L2_BUF_TYPE_VBI_CAPTURE, + V4L2_FIELD_SEQ_TB, // FIXME: does this really work? + sizeof(struct saa7146_buf)); + init_MUTEX(&fh->vbi_q.lock); + + init_timer(&fh->vbi_read_timeout); + fh->vbi_read_timeout.function = vbi_read_timeout; + fh->vbi_read_timeout.data = (unsigned long)fh; + + vbi_workaround(dev); +} + +static +void vbi_close(struct saa7146_dev *dev, struct saa7146_fh *fh, struct file *file) +{ + struct saa7146_vv *vv = dev->vv_data; + DEB_VBI(("dev:%p, fh:%p\n",dev,fh)); + + if( fh == vv->vbi_streaming ) { + vbi_stop(fh); + } +} + +static +void vbi_irq_done(struct saa7146_dev *dev, unsigned long status) +{ + struct saa7146_vv *vv = dev->vv_data; + spin_lock(&dev->slock); + + if (vv->vbi_q.curr) { + DEB_VBI(("dev:%p, curr:%p\n",dev,vv->vbi_q.curr)); + /* this must be += 2, one count for each field */ + vv->vbi_fieldcount+=2; + vv->vbi_q.curr->vb.field_count = vv->vbi_fieldcount; + saa7146_buffer_finish(dev,&vv->vbi_q,STATE_DONE); + } else { + DEB_VBI(("dev:%p\n",dev)); + } + saa7146_buffer_next(dev,&vv->vbi_q,1); + + spin_unlock(&dev->slock); +} + +static +ssize_t vbi_read(struct file *file, char *data, size_t count, loff_t *ppos) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + ssize_t ret = 0; + + DEB_VBI(("dev:%p, fh:%p\n",dev,fh)); + + if( NULL == vv->vbi_streaming ) { + // fixme: check if dma3 is available + // fixme: activate vbi engine here if necessary. (really?) + vv->vbi_streaming = fh; + } + + if( fh != vv->vbi_streaming ) { + DEB_VBI(("open %p is already using vbi capture.",vv->vbi_streaming)); + return -EBUSY; + } + + mod_timer(&fh->vbi_read_timeout, jiffies+BUFFER_TIMEOUT); + ret = videobuf_read_stream(file, &fh->vbi_q, data, count, ppos, 1); +/* + printk("BASE_ODD3: 0x%08x\n", saa7146_read(dev, BASE_ODD3)); + printk("BASE_EVEN3: 0x%08x\n", saa7146_read(dev, BASE_EVEN3)); + printk("PROT_ADDR3: 0x%08x\n", saa7146_read(dev, PROT_ADDR3)); + printk("PITCH3: 0x%08x\n", saa7146_read(dev, PITCH3)); + printk("BASE_PAGE3: 0x%08x\n", saa7146_read(dev, BASE_PAGE3)); + printk("NUM_LINE_BYTE3: 0x%08x\n", saa7146_read(dev, NUM_LINE_BYTE3)); + printk("BRS_CTRL: 0x%08x\n", saa7146_read(dev, BRS_CTRL)); +*/ + return ret; +} + +struct saa7146_use_ops saa7146_vbi_uops = { + .init = vbi_init, + .open = vbi_open, + .release = vbi_close, + .irq_done = vbi_irq_done, + .read = vbi_read, +}; + +EXPORT_SYMBOL_GPL(saa7146_vbi_uops); diff -Nru a/drivers/media/common/saa7146_video.c b/drivers/media/common/saa7146_video.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/common/saa7146_video.c Mon Apr 7 13:16:30 2003 @@ -0,0 +1,1387 @@ +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME saa7146 +#endif + +static +int memory = 32; + +MODULE_PARM(memory,"i"); +MODULE_PARM_DESC(memory, "maximum memory usage for capture buffers (default: 32Mb)"); + +/* format descriptions for capture and preview */ +static +struct saa7146_format formats[] = { + { + .name = "RGB-8 (3-3-2)", + .pixelformat = V4L2_PIX_FMT_RGB332, + .trans = RGB08_COMPOSED, + .depth = 8, + }, { + .name = "RGB-16 (5/B-6/G-5/R)", /* really? */ + .pixelformat = V4L2_PIX_FMT_RGB565, + .trans = RGB16_COMPOSED, + .depth = 16, + }, { + .name = "RGB-24 (B-G-R)", + .pixelformat = V4L2_PIX_FMT_BGR24, + .trans = RGB24_COMPOSED, + .depth = 24, + }, { + .name = "RGB-32 (B-G-R)", + .pixelformat = V4L2_PIX_FMT_BGR32, + .trans = RGB32_COMPOSED, + .depth = 32, + }, { + .name = "Greyscale-8", + .pixelformat = V4L2_PIX_FMT_GREY, + .trans = Y8, + .depth = 8, + }, { + .name = "YUV 4:2:2 planar (Y-Cb-Cr)", + .pixelformat = V4L2_PIX_FMT_YUV422P, + .trans = YUV422_DECOMPOSED, + .depth = 16, + .swap = 1, + }, { + .name = "YVU 4:2:0 planar (Y-Cb-Cr)", + .pixelformat = V4L2_PIX_FMT_YVU420, + .trans = YUV420_DECOMPOSED, + .depth = 12, + .swap = 1, + }, { + .name = "YUV 4:2:0 planar (Y-Cb-Cr)", + .pixelformat = V4L2_PIX_FMT_YUV420, + .trans = YUV420_DECOMPOSED, + .depth = 12, + }, { + .name = "YUV 4:2:2 (U-Y-V-Y)", + .pixelformat = V4L2_PIX_FMT_UYVY, + .trans = YUV422_COMPOSED, + .depth = 16, + } +}; + +/* unfortunately, the saa7146 contains a bug which prevents it from doing on-the-fly byte swaps. + due to this, it's impossible to provide additional *packed* formats, which are simply byte swapped + (like V4L2_PIX_FMT_YUYV) ... 8-( */ + +static +int NUM_FORMATS = sizeof(formats)/sizeof(struct saa7146_format); + +struct saa7146_format* format_by_fourcc(struct saa7146_dev *dev, int fourcc) +{ + int i, j = NUM_FORMATS; + + for (i = 0; i < j; i++) { + if (formats[i].pixelformat == fourcc) { + return formats+i; + } + } + + DEB_D(("unknown pixelformat:'%4.4s'\n",(char *)&fourcc)); + return NULL; +} + +static +int g_fmt(struct saa7146_fh *fh, struct v4l2_format *f) +{ + struct saa7146_dev *dev = fh->dev; + DEB_EE(("dev:%p, fh:%p\n",dev,fh)); + + switch (f->type) { + case V4L2_BUF_TYPE_VIDEO_CAPTURE: + f->fmt.pix = fh->video_fmt; + return 0; + case V4L2_BUF_TYPE_VIDEO_OVERLAY: + f->fmt.win = fh->ov.win; + return 0; + case V4L2_BUF_TYPE_VBI_CAPTURE: + { + f->fmt.vbi = fh->vbi_fmt; + return 0; + } + default: + DEB_D(("invalid format type '%d'.\n",f->type)); + return -EINVAL; + } +} + +static +int try_win(struct saa7146_dev *dev, struct v4l2_window *win) +{ + struct saa7146_vv *vv = dev->vv_data; + enum v4l2_field field; + int maxw, maxh; + + DEB_EE(("dev:%p\n",dev)); + + if (NULL == vv->ov_fb.base) { + DEB_D(("no fb base set.\n")); + return -EINVAL; + } + if (NULL == vv->ov_fmt) { + DEB_D(("no fb fmt set.\n")); + return -EINVAL; + } + if (win->w.width < 64 || win->w.height < 64) { + DEB_D(("min width/height. (%d,%d)\n",win->w.width,win->w.height)); + return -EINVAL; + } + if (win->clipcount > 16) { + DEB_D(("clipcount too big.\n")); + return -EINVAL; + } + + field = win->field; + maxw = vv->standard->h_max_out; + maxh = vv->standard->v_max_out; + + if (V4L2_FIELD_ANY == field) { + field = (win->w.height > maxh/2) + ? V4L2_FIELD_INTERLACED + : V4L2_FIELD_TOP; + } + switch (field) { + case V4L2_FIELD_TOP: + case V4L2_FIELD_BOTTOM: + maxh = maxh / 2; + break; + case V4L2_FIELD_INTERLACED: + break; + default: { + DEB_D(("no known field mode '%d'.\n",field)); + return -EINVAL; + } + } + + win->field = field; + if (win->w.width > maxw) + win->w.width = maxw; + if (win->w.height > maxh) + win->w.height = maxh; + + return 0; +} + +static +int try_fmt(struct saa7146_fh *fh, struct v4l2_format *f) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + int err; + + switch (f->type) { + case V4L2_BUF_TYPE_VIDEO_CAPTURE: + { + struct saa7146_format *fmt; + enum v4l2_field field; + int maxw, maxh; + + DEB_EE(("V4L2_BUF_TYPE_VIDEO_CAPTURE: dev:%p, fh:%p\n",dev,fh)); + + fmt = format_by_fourcc(dev,f->fmt.pix.pixelformat); + if (NULL == fmt) { + return -EINVAL; + } + + field = f->fmt.pix.field; + maxw = vv->standard->h_max_out; + maxh = vv->standard->v_max_out; + + if (V4L2_FIELD_ANY == field) { + field = (f->fmt.pix.height > maxh/2) + ? V4L2_FIELD_INTERLACED + : V4L2_FIELD_BOTTOM; + } + switch (field) { + case V4L2_FIELD_TOP: + case V4L2_FIELD_BOTTOM: + maxh = maxh / 2; + break; + case V4L2_FIELD_INTERLACED: + break; + default: { + DEB_D(("no known field mode '%d'.\n",field)); + return -EINVAL; + } + } + + f->fmt.pix.field = field; + if (f->fmt.pix.width > maxw) + f->fmt.pix.width = maxw; + if (f->fmt.pix.height > maxh) + f->fmt.pix.height = maxh; + f->fmt.pix.sizeimage = + (f->fmt.pix.width * f->fmt.pix.height * fmt->depth)/8; + return 0; + } + case V4L2_BUF_TYPE_VIDEO_OVERLAY: + DEB_EE(("V4L2_BUF_TYPE_VIDEO_OVERLAY: dev:%p, fh:%p\n",dev,fh)); + err = try_win(dev,&f->fmt.win); + if (0 != err) { + return err; + } + return 0; + default: + DEB_EE(("unknown format type '%d'\n",f->type)); + return -EINVAL; + } +} + +static +int start_preview(struct saa7146_fh *fh) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + int err = 0; + + DEB_EE(("dev:%p, fh:%p\n",dev,fh)); + + /* check if we have overlay informations */ + if( NULL == fh->ov.fh ) { + DEB_D(("not overlay data available. try S_FMT first.\n")); + return -EAGAIN; + } + + /* check if overlay is running */ + if( 0 != vv->ov_data ) { + if( fh != vv->ov_data->fh ) { + DEB_D(("overlay is running in another open.\n")); + return -EAGAIN; + } + DEB_D(("overlay is already active.\n")); + return 0; + } + + if( 0 != vv->streaming ) { + DEB_D(("streaming capture is active.\n")); + return -EBUSY; + } + + err = try_win(dev,&fh->ov.win); + if (0 != err) { + return err; + } + + vv->ov_data = &fh->ov; + + DEB_D(("%dx%d+%d+%d %s field=%s\n", + fh->ov.win.w.width,fh->ov.win.w.height, + fh->ov.win.w.left,fh->ov.win.w.top, + vv->ov_fmt->name,v4l2_field_names[fh->ov.win.field])); + + saa7146_set_overlay(dev, fh, 1); + + return 0; +} + +static +int stop_preview(struct saa7146_fh *fh) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + + DEB_EE(("saa7146.o: stop_preview()\n")); + + /* check if overlay is running */ + if( 0 == vv->ov_data ) { + DEB_D(("overlay is not active.\n")); + return 0; + } + + if( fh != vv->ov_data->fh ) { + DEB_D(("overlay is active, but for another open.\n")); + return -EBUSY; + } + + saa7146_set_overlay(dev, fh, 0); + vv->ov_data = NULL; + + return 0; +} + +static +int s_fmt(struct saa7146_fh *fh, struct v4l2_format *f) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + + unsigned long flags; + int err; + + switch (f->type) { + case V4L2_BUF_TYPE_VIDEO_CAPTURE: + DEB_EE(("V4L2_BUF_TYPE_VIDEO_CAPTURE: dev:%p, fh:%p\n",dev,fh)); + if( fh == vv->streaming ) { + DEB_EE(("streaming capture is active")); + return -EAGAIN; + } + err = try_fmt(fh,f); + if (0 != err) + return err; + fh->video_fmt = f->fmt.pix; + DEB_EE(("set to pixelformat '%4.4s'\n",(char *)&fh->video_fmt.pixelformat)); + return 0; + case V4L2_BUF_TYPE_VIDEO_OVERLAY: + DEB_EE(("V4L2_BUF_TYPE_VIDEO_OVERLAY: dev:%p, fh:%p\n",dev,fh)); + err = try_win(dev,&f->fmt.win); + if (0 != err) + return err; + down(&dev->lock); + fh->ov.win = f->fmt.win; + fh->ov.nclips = f->fmt.win.clipcount; + if (fh->ov.nclips > 16) + fh->ov.nclips = 16; + if (copy_from_user(fh->ov.clips,f->fmt.win.clips,sizeof(struct v4l2_clip)*fh->ov.nclips)) { + up(&dev->lock); + return -EFAULT; + } + + /* fh->ov.fh is used to indicate that we have valid overlay informations, too */ + fh->ov.fh = fh; + + /* check if we have an active overlay */ + if( vv->ov_data != NULL ) { + if( fh == vv->ov_data->fh) { + spin_lock_irqsave(&dev->slock,flags); + stop_preview(fh); + start_preview(fh); + spin_unlock_irqrestore(&dev->slock,flags); + } + } + up(&dev->lock); + return 0; + default: + DEB_D(("unknown format type '%d'\n",f->type)); + return -EINVAL; + } +} + +/********************************************************************************/ +/* device controls */ + +static +struct v4l2_queryctrl controls[] = { + { + id: V4L2_CID_BRIGHTNESS, + name: "Brightness", + minimum: 0, + maximum: 255, + step: 1, + default_value: 128, + type: V4L2_CTRL_TYPE_INTEGER, + },{ + id: V4L2_CID_CONTRAST, + name: "Contrast", + minimum: 0, + maximum: 127, + step: 1, + default_value: 64, + type: V4L2_CTRL_TYPE_INTEGER, + },{ + id: V4L2_CID_SATURATION, + name: "Saturation", + minimum: 0, + maximum: 127, + step: 1, + default_value: 64, + type: V4L2_CTRL_TYPE_INTEGER, + },{ + id: V4L2_CID_VFLIP, + name: "Vertical flip", + minimum: 0, + maximum: 1, + type: V4L2_CTRL_TYPE_BOOLEAN, + },{ + id: V4L2_CID_HFLIP, + name: "Horizontal flip", + minimum: 0, + maximum: 1, + type: V4L2_CTRL_TYPE_BOOLEAN, + }, +}; +static +int NUM_CONTROLS = sizeof(controls)/sizeof(struct v4l2_queryctrl); + +#define V4L2_CID_PRIVATE_LASTP1 (V4L2_CID_PRIVATE_BASE + 0) + +static +struct v4l2_queryctrl* ctrl_by_id(int id) +{ + int i; + + for (i = 0; i < NUM_CONTROLS; i++) + if (controls[i].id == id) + return controls+i; + return NULL; +} + +static +int get_control(struct saa7146_fh *fh, struct v4l2_control *c) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + + const struct v4l2_queryctrl* ctrl; + u32 value = 0; + + ctrl = ctrl_by_id(c->id); + if (NULL == ctrl) + return -EINVAL; + switch (c->id) { + case V4L2_CID_BRIGHTNESS: + value = saa7146_read(dev, BCS_CTRL); + c->value = 0xff & (value >> 24); + break; + case V4L2_CID_CONTRAST: + value = saa7146_read(dev, BCS_CTRL); + c->value = 0x7f & (value >> 16); + break; + case V4L2_CID_SATURATION: + value = saa7146_read(dev, BCS_CTRL); + c->value = 0x7f & (value >> 0); + break; + case V4L2_CID_VFLIP: + c->value = vv->vflip; + break; + case V4L2_CID_HFLIP: + c->value = vv->hflip; + break; + default: + return -EINVAL; + } + + return 0; +} + +static +int set_control(struct saa7146_fh *fh, struct v4l2_control *c) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + + const struct v4l2_queryctrl* ctrl; + unsigned long flags; + int restart_overlay = 0; + + ctrl = ctrl_by_id(c->id); + if (NULL == ctrl) { + DEB_D(("unknown control %d\n",c->id)); + return -EINVAL; + } + + switch (ctrl->type) { + case V4L2_CTRL_TYPE_BOOLEAN: + case V4L2_CTRL_TYPE_MENU: + case V4L2_CTRL_TYPE_INTEGER: + if (c->value < ctrl->minimum) + c->value = ctrl->minimum; + if (c->value > ctrl->maximum) + c->value = ctrl->maximum; + break; + default: + /* nothing */; + }; + + switch (c->id) { + case V4L2_CID_BRIGHTNESS: { + u32 value = saa7146_read(dev, BCS_CTRL); + value &= 0x00ffffff; + value |= (c->value << 24); + saa7146_write(dev, BCS_CTRL, value); + saa7146_write(dev, MC2, MASK_22 | MASK_06 ); + break; + } + case V4L2_CID_CONTRAST: { + u32 value = saa7146_read(dev, BCS_CTRL); + value &= 0xff00ffff; + value |= (c->value << 16); + saa7146_write(dev, BCS_CTRL, value); + saa7146_write(dev, MC2, MASK_22 | MASK_06 ); + break; + } + case V4L2_CID_SATURATION: { + u32 value = saa7146_read(dev, BCS_CTRL); + value &= 0xffffff00; + value |= (c->value << 0); + saa7146_write(dev, BCS_CTRL, value); + saa7146_write(dev, MC2, MASK_22 | MASK_06 ); + break; + } + case V4L2_CID_HFLIP: + /* fixme: we can supfhrt changing VFLIP and HFLIP here... */ + if( 0 != vv->streaming ) { + DEB_D(("V4L2_CID_HFLIP while active capture.\n")); + return -EINVAL; + } + vv->hflip = c->value; + restart_overlay = 1; + break; + case V4L2_CID_VFLIP: + if( 0 != vv->streaming ) { + DEB_D(("V4L2_CID_VFLIP while active capture.\n")); + return -EINVAL; + } + vv->vflip = c->value; + restart_overlay = 1; + break; + default: { + return -EINVAL; + } + } + if( 0 != restart_overlay ) { + if( 0 != vv->ov_data ) { + if( fh == vv->ov_data->fh ) { + spin_lock_irqsave(&dev->slock,flags); + stop_preview(fh); + start_preview(fh); + spin_unlock_irqrestore(&dev->slock,flags); + } + } + } + return 0; +} + +/********************************************************************************/ +/* common pagetable functions */ + +static +int saa7146_pgtable_build(struct saa7146_dev *dev, struct saa7146_buf *buf) +{ + struct pci_dev *pci = dev->pci; + struct scatterlist *list = buf->vb.dma.sglist; + int length = buf->vb.dma.sglen; + struct saa7146_format *sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); + + DEB_EE(("dev:%p, buf:%p\n",dev,buf)); + + if( 0 != IS_PLANAR(sfmt->trans)) { + struct saa7146_pgtable *pt1 = &buf->pt[0]; + struct saa7146_pgtable *pt2 = &buf->pt[1]; + struct saa7146_pgtable *pt3 = &buf->pt[2]; + u32 *ptr1, *ptr2, *ptr3; + u32 fill; + + int size = buf->fmt->width*buf->fmt->height; + int i,p,m1,m2,m3,o1,o2; + + switch( sfmt->depth ) { + case 12: { + /* create some offsets inside the page table */ + m1 = ((size+PAGE_SIZE)/PAGE_SIZE)-1; + m2 = ((size+(size/4)+PAGE_SIZE)/PAGE_SIZE)-1; + m3 = ((size+(size/2)+PAGE_SIZE)/PAGE_SIZE)-1; + o1 = size%PAGE_SIZE; + o2 = (size+(size/4))%PAGE_SIZE; + printk("size:%d, m1:%d, m2:%d, m3:%d, o1:%d, o2:%d\n",size,m1,m2,m3,o1,o2); + break; + } + case 16: { + /* create some offsets inside the page table */ + m1 = ((size+PAGE_SIZE)/PAGE_SIZE)-1; + m2 = ((size+(size/2)+PAGE_SIZE)/PAGE_SIZE)-1; + m3 = ((2*size+PAGE_SIZE)/PAGE_SIZE)-1; + o1 = size%PAGE_SIZE; + o2 = (size+(size/2))%PAGE_SIZE; + printk("size:%d, m1:%d, m2:%d, m3:%d, o1:%d, o2:%d\n",size,m1,m2,m3,o1,o2); + break; + } + default: { + return -1; + } + } + + ptr1 = pt1->cpu; + ptr2 = pt2->cpu; + ptr3 = pt3->cpu; + + /* walk all pages, copy all page addresses to ptr1 */ + for (i = 0; i < length; i++, list++) { + for (p = 0; p * 4096 < list->length; p++, ptr1++) { + *ptr1 = sg_dma_address(list) - list->offset; + } + } +/* + ptr1 = pt1->cpu; + for(j=0;j<40;j++) { + printk("ptr1 %d: 0x%08x\n",j,ptr1[j]); + } +*/ + + /* if we have a user buffer, the first page may not be + aligned to a page boundary. */ + pt1->offset = buf->vb.dma.sglist->offset; + pt2->offset = pt1->offset+o1; + pt3->offset = pt1->offset+o2; + + /* create video-dma2 page table */ + ptr1 = pt1->cpu; + for(i = m1; i <= m2 ; i++, ptr2++) { + *ptr2 = ptr1[i]; + } + fill = *(ptr2-1); + for(;i<1024;i++,ptr2++) { + *ptr2 = fill; + } + /* create video-dma3 page table */ + ptr1 = pt1->cpu; + for(i = m2; i <= m3; i++,ptr3++) { + *ptr3 = ptr1[i]; + } + fill = *(ptr3-1); + for(;i<1024;i++,ptr3++) { + *ptr3 = fill; + } + /* finally: finish up video-dma1 page table */ + ptr1 = pt1->cpu+m1; + fill = pt1->cpu[m1]; + for(i=m1;i<1024;i++,ptr1++) { + *ptr1 = fill; + } +/* + ptr1 = pt1->cpu; + ptr2 = pt2->cpu; + ptr3 = pt3->cpu; + for(j=0;j<40;j++) { + printk("ptr1 %d: 0x%08x\n",j,ptr1[j]); + } + for(j=0;j<40;j++) { + printk("ptr2 %d: 0x%08x\n",j,ptr2[j]); + } + for(j=0;j<40;j++) { + printk("ptr3 %d: 0x%08x\n",j,ptr3[j]); + } +*/ + } else { + struct saa7146_pgtable *pt = &buf->pt[0]; + saa7146_pgtable_build_single(pci, pt, list, length); + } + + return 0; +} + + +/********************************************************************************/ +/* file operations */ + +static +int video_begin(struct saa7146_fh *fh) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + unsigned long flags; + + DEB_EE(("dev:%p, fh:%p\n",dev,fh)); + + if( fh == vv->streaming ) { + DEB_S(("already capturing.\n")); + return 0; + } + if( vv->streaming != 0 ) { + DEB_S(("already capturing, but in another open.\n")); + return -EBUSY; + } + + /* fixme: check for planar formats here, if we will interfere with + vbi capture for example */ + + spin_lock_irqsave(&dev->slock,flags); + + /* clear out beginning of streaming bit */ + saa7146_write(dev, MC2, MASK_27 ); + + /* enable rps0 irqs */ + IER_ENABLE(dev, MASK_27); + + vv->streaming = fh; + spin_unlock_irqrestore(&dev->slock,flags); + return 0; +} + +static +int video_end(struct saa7146_fh *fh) +{ + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + unsigned long flags; + + DEB_EE(("dev:%p, fh:%p\n",dev,fh)); + + if( vv->streaming != fh ) { + DEB_S(("not capturing.\n")); + return -EINVAL; + } + + spin_lock_irqsave(&dev->slock,flags); + + /* disable rps0 */ + saa7146_write(dev, MC1, MASK_28); + + /* disable rps0 irqs */ + IER_DISABLE(dev, MASK_27); + + // fixme: only used formats here! + /* fixme: look at planar formats here, especially at the + shutdown of planar formats! */ + + /* shut down all used video dma transfers */ + /* fixme: what about the budget-dvb cards? they use + video-dma3, but video_end should not get called anyway ...*/ + saa7146_write(dev, MC1, 0x00700000); + + vv->streaming = NULL; + spin_unlock_irqrestore(&dev->slock, flags); + + return 0; +} + +/* + * This function is _not_ called directly, but from + * video_generic_ioctl (and maybe others). userspace + * copying is done already, arg is a kernel fhinter. + */ + +int saa7146_video_do_ioctl(struct inode *inode, struct file *file, unsigned int cmd, void *arg) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + + unsigned long flags; + int err = 0, result = 0, ee = 0; + + struct saa7146_use_ops *ops; + struct videobuf_queue *q; + + /* check if extension handles the command */ + for(ee = 0; dev->ext->ext_vv_data->ioctls[ee].flags != 0; ee++) { + if( cmd == dev->ext->ext_vv_data->ioctls[ee].cmd ) + break; + } + + if( 0 != (dev->ext->ext_vv_data->ioctls[ee].flags & SAA7146_EXCLUSIVE) ) { + DEB_D(("extension handles ioctl exclusive.\n")); + result = dev->ext->ext_vv_data->ioctl(dev, cmd, arg); + return result; + } + if( 0 != (dev->ext->ext_vv_data->ioctls[ee].flags & SAA7146_BEFORE) ) { + DEB_D(("extension handles ioctl before.\n")); + result = dev->ext->ext_vv_data->ioctl(dev, cmd, arg); + if( -EAGAIN != result ) { + return result; + } + } + + /* fixme: add handle "after" case (is it still needed?) */ + + switch (fh->type) { + case V4L2_BUF_TYPE_VIDEO_CAPTURE: { + ops = &saa7146_video_uops; + q = &fh->video_q; + break; + } + case V4L2_BUF_TYPE_VBI_CAPTURE: { + ops = &saa7146_vbi_uops; + q = &fh->vbi_q; + break; + } + default: + BUG(); + return 0; + } + + switch (cmd) { + case VIDIOC_QUERYCAP: + { + struct v4l2_capability *cap = arg; + memset(cap,0,sizeof(*cap)); + + DEB_EE(("VIDIOC_QUERYCAP\n")); + + strcpy(cap->driver, "saa7146 v4l2"); + strncpy(cap->card, dev->ext->name, sizeof(cap->card)); + sprintf(cap->bus_info,"PCI:%s",dev->pci->slot_name); + cap->version = SAA7146_VERSION_CODE; + cap->capabilities = + V4L2_CAP_VIDEO_CAPTURE | + V4L2_CAP_VIDEO_OVERLAY | + V4L2_CAP_READWRITE | + V4L2_CAP_STREAMING; + cap->capabilities |= dev->ext->ext_vv_data->capabilities; + return 0; + } + case VIDIOC_G_FBUF: + { + struct v4l2_framebuffer *fb = arg; + + DEB_EE(("VIDIOC_G_FBUF\n")); + + *fb = vv->ov_fb; + fb->capability = V4L2_FBUF_CAP_LIST_CLIPPING; + return 0; + } + case VIDIOC_S_FBUF: + { + struct v4l2_framebuffer *fb = arg; + struct saa7146_format *fmt; + + DEB_EE(("VIDIOC_S_FBUF\n")); + +/* + if(!capable(CAP_SYS_ADMIN)) { // && !capable(CAP_SYS_RAWIO)) { + DEB_D(("VIDIOC_S_FBUF: not CAP_SYS_ADMIN or CAP_SYS_RAWIO.\n")); + return -EPERM; + } +*/ + if( 0 != vv->ov_data ) { + DEB_D(("VIDIOC_S_FBUF: overlay is active.\n")); + return -EPERM; + } + + /* check args */ + fmt = format_by_fourcc(dev,fb->fmt.pixelformat); + if (NULL == fmt) { + return -EINVAL; + } + + /* ok, accept it */ + vv->ov_fb = *fb; + vv->ov_fmt = fmt; + if (0 == vv->ov_fb.fmt.bytesperline) + vv->ov_fb.fmt.bytesperline = + vv->ov_fb.fmt.width*fmt->depth/8; + return 0; + } + case VIDIOC_ENUM_FMT: + { + struct v4l2_fmtdesc *f = arg; + int index; + + switch (f->type) { + case V4L2_BUF_TYPE_VIDEO_CAPTURE: + case V4L2_BUF_TYPE_VIDEO_OVERLAY: { + index = f->index; + if (index < 0 || index >= NUM_FORMATS) { + return -EINVAL; + } + memset(f,0,sizeof(*f)); + f->index = index; + strncpy(f->description,formats[index].name,31); + f->pixelformat = formats[index].pixelformat; + break; + } + default: + return -EINVAL; + } + + DEB_EE(("VIDIOC_ENUMSTD: type:%d, index:%d\n",f->type,f->index)); + return 0; + } + case VIDIOC_QUERYCTRL: + { + const struct v4l2_queryctrl *ctrl; + struct v4l2_queryctrl *c = arg; + + if ((c->id < V4L2_CID_BASE || + c->id >= V4L2_CID_LASTP1) && + (c->id < V4L2_CID_PRIVATE_BASE || + c->id >= V4L2_CID_PRIVATE_LASTP1)) + return -EINVAL; + + ctrl = ctrl_by_id(c->id); + if( NULL == ctrl ) { + c->flags = V4L2_CTRL_FLAG_DISABLED; + return 0; + } + + DEB_EE(("VIDIOC_QUERYCTRL: id:%d\n",c->id)); + *c = *ctrl; + return 0; + } + case VIDIOC_G_CTRL: { + DEB_EE(("VIDIOC_G_CTRL\n")); + return get_control(fh,arg); + } + case VIDIOC_S_CTRL: + { + DEB_EE(("VIDIOC_S_CTRL\n")); + down(&dev->lock); + err = set_control(fh,arg); + up(&dev->lock); + return err; + } + case VIDIOC_G_PARM: + { + struct v4l2_streamparm *parm = arg; + if( parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE ) { + return -EINVAL; + } + memset(&parm->parm.capture,0,sizeof(struct v4l2_captureparm)); + parm->parm.capture.readbuffers = 1; + // fixme: only for PAL! + parm->parm.capture.timeperframe.numerator = 1; + parm->parm.capture.timeperframe.denominator = 25; + return 0; + } + case VIDIOC_G_FMT: + { + struct v4l2_format *f = arg; + DEB_EE(("VIDIOC_G_FMT\n")); + return g_fmt(fh,f); + } + case VIDIOC_S_FMT: + { + struct v4l2_format *f = arg; + DEB_EE(("VIDIOC_S_FMT\n")); + return s_fmt(fh,f); + } + case VIDIOC_TRY_FMT: + { + struct v4l2_format *f = arg; + DEB_EE(("VIDIOC_TRY_FMT\n")); + return try_fmt(fh,f); + } + case VIDIOC_G_STD: + { + v4l2_std_id *id = arg; + DEB_EE(("VIDIOC_G_STD\n")); + *id = vv->standard->id; + return 0; + } + /* the saa7146 supfhrts (used in conjunction with the saa7111a for example) + PAL / NTSC / SECAM. if your hardware does not (or does more) + -- override this function in your extension */ + case VIDIOC_ENUMSTD: + { + struct v4l2_standard *e = arg; + if (e->index < 0 ) + return -EINVAL; + if( e->index < dev->ext->ext_vv_data->num_stds ) { + DEB_EE(("VIDIOC_ENUMSTD: index:%d\n",e->index)); + return v4l2_video_std_construct(e, dev->ext->ext_vv_data->stds[e->index].id, dev->ext->ext_vv_data->stds[e->index].name); + } + return -EINVAL; + } + case VIDIOC_S_STD: + { + v4l2_std_id *id = arg; + int i; + + int restart_overlay = 0; + int found = 0; + + struct saa7146_fh *ov_fh = NULL; + + if( 0 != vv->streaming ) { + return -EBUSY; + } + + down(&dev->lock); + + if( vv->ov_data != NULL ) { + ov_fh = vv->ov_data->fh; + stop_preview(ov_fh); + restart_overlay = 1; + } + + for(i = 0; i < dev->ext->ext_vv_data->num_stds; i++) + if (*id & dev->ext->ext_vv_data->stds[i].id) + break; + if (i != dev->ext->ext_vv_data->num_stds) { + vv->standard = &dev->ext->ext_vv_data->stds[i]; + if( NULL != dev->ext->ext_vv_data->std_callback ) + dev->ext->ext_vv_data->std_callback(dev, vv->standard); + found = 1; + } + + if( 0 != restart_overlay ) { + start_preview(ov_fh); + } + up(&dev->lock); + + if( 0 == found ) { + DEB_EE(("VIDIOC_S_STD: standard not found.\n")); + return -EINVAL; + } + + DEB_EE(("VIDIOC_S_STD: set to standard to '%s'\n",vv->standard->name)); + return 0; + } + case VIDIOC_OVERLAY: + { + int on = *(int *)arg; + int err = 0; + + if( NULL == vv->ov_fmt ) { + DEB_D(("VIDIOC_OVERLAY: no framebuffer informations. call S_FBUF first!\n")); + return -EAGAIN; + } + + DEB_D(("VIDIOC_OVERLAY on:%d\n",on)); + if( 0 != on ) { + if( vv->ov_data != NULL ) { + if( fh != vv->ov_data->fh) { + return -EAGAIN; + } + } + spin_lock_irqsave(&dev->slock,flags); + err = start_preview(fh); + spin_unlock_irqrestore(&dev->slock,flags); + } else { + if( vv->ov_data != NULL ) { + if( fh != vv->ov_data->fh) { + return -EAGAIN; + } + } + spin_lock_irqsave(&dev->slock,flags); + err = stop_preview(fh); + spin_unlock_irqrestore(&dev->slock,flags); + } + return err; + } + case VIDIOC_REQBUFS: { + DEB_D(("VIDIOC_REQBUFS \n")); + return videobuf_reqbufs(file,q,arg); + } + case VIDIOC_QUERYBUF: { + DEB_D(("VIDIOC_QUERYBUF \n")); + return videobuf_querybuf(q,arg); + } + case VIDIOC_QBUF: { + DEB_D(("VIDIOC_QBUF \n")); + return videobuf_qbuf(file,q,arg); + } + case VIDIOC_DQBUF: { + DEB_D(("VIDIOC_DQBUF \n")); + return videobuf_dqbuf(file,q,arg); + } + case VIDIOC_STREAMON: { + DEB_D(("VIDIOC_STREAMON \n")); + if( 0 != ops->capture_begin ) { + if( 0 != (err = ops->capture_begin(fh))) { + return err; + } + } + err = videobuf_streamon(file,q); + return err; + } + case VIDIOC_STREAMOFF: { + DEB_D(("VIDIOC_STREAMOFF \n")); + if( 0 != ops->capture_end ) { + ops->capture_end(fh); + } + err = videobuf_streamoff(file,q); + return 0; + } + case VIDIOCGMBUF: + { + struct video_mbuf *mbuf = arg; + struct videobuf_queue *q; + int i; + + /* fixme: number of capture buffers and sizes for v4l apps */ + int gbuffers = 2; + int gbufsize = 768*576*4; + + DEB_D(("VIDIOCGMBUF \n")); + + q = &fh->video_q; + down(&q->lock); + err = videobuf_mmap_setup(file,q,gbuffers,gbufsize); + if (err < 0) { + up(&q->lock); + return err; + } + memset(mbuf,0,sizeof(*mbuf)); + mbuf->frames = gbuffers; + mbuf->size = gbuffers * gbufsize; + for (i = 0; i < gbuffers; i++) + mbuf->offsets[i] = i * gbufsize; + up(&q->lock); + return 0; + } + default: + return v4l_compat_translate_ioctl(inode,file,cmd,arg, + saa7146_video_do_ioctl); + } + return 0; +} + +/*********************************************************************************/ +/* buffer handling functions */ + +static +int buffer_activate (struct saa7146_dev *dev, + struct saa7146_buf *buf, + struct saa7146_buf *next) +{ + struct saa7146_vv *vv = dev->vv_data; + + buf->vb.state = STATE_ACTIVE; + saa7146_set_capture(dev,buf,next); + + mod_timer(&vv->video_q.timeout, jiffies+BUFFER_TIMEOUT); + return 0; +} + +static +int buffer_prepare(struct file *file, struct videobuf_buffer *vb, enum v4l2_field field) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + struct saa7146_buf *buf = (struct saa7146_buf *)vb; + int size,err = 0; + + /* sanity checks */ + if (fh->video_fmt.width < 64 || + fh->video_fmt.height < 64 || + fh->video_fmt.width > vv->standard->h_max_out || + fh->video_fmt.height > vv->standard->v_max_out) { + DEB_D(("w (%d) / h (%d) out of bounds.\n",fh->video_fmt.width,fh->video_fmt.height)); + return -EINVAL; + } + + size = fh->video_fmt.sizeimage; + if (0 != buf->vb.baddr && buf->vb.bsize < size) { + DEB_D(("size mismatch.\n")); + return -EINVAL; + } + + DEB_CAP(("buffer_prepare [size=%dx%d,bytes=%d,fields=%s]\n", + fh->video_fmt.width,fh->video_fmt.height,size,v4l2_field_names[fh->video_fmt.field])); + if (buf->vb.width != fh->video_fmt.width || + buf->vb.height != fh->video_fmt.height || + buf->vb.size != size || + buf->vb.field != field || + buf->vb.field != fh->video_fmt.field || + buf->fmt != &fh->video_fmt) { + saa7146_dma_free(dev,buf); + } + + if (STATE_NEEDS_INIT == buf->vb.state) { + struct saa7146_format *sfmt; + + buf->vb.width = fh->video_fmt.width; + buf->vb.height = fh->video_fmt.height; + buf->vb.size = size; + buf->vb.field = field; + buf->fmt = &fh->video_fmt; + buf->vb.field = fh->video_fmt.field; + + sfmt = format_by_fourcc(dev,buf->fmt->pixelformat); + + if( 0 != IS_PLANAR(sfmt->trans)) { + saa7146_pgtable_free(dev->pci, &buf->pt[0]); + saa7146_pgtable_free(dev->pci, &buf->pt[1]); + saa7146_pgtable_free(dev->pci, &buf->pt[2]); + + saa7146_pgtable_alloc(dev->pci, &buf->pt[0]); + saa7146_pgtable_alloc(dev->pci, &buf->pt[1]); + saa7146_pgtable_alloc(dev->pci, &buf->pt[2]); + } else { + saa7146_pgtable_free(dev->pci, &buf->pt[0]); + saa7146_pgtable_alloc(dev->pci, &buf->pt[0]); + } + + err = videobuf_iolock(dev->pci,&buf->vb); + if (err) + goto oops; + err = saa7146_pgtable_build(dev,buf); + if (err) + goto oops; + } + buf->vb.state = STATE_PREPARED; + buf->activate = buffer_activate; + + return 0; + + oops: + DEB_D(("error out.\n")); + saa7146_dma_free(dev,buf); + + return err; +} + +static +int buffer_setup(struct file *file, unsigned int *count, unsigned int *size) +{ + struct saa7146_fh *fh = file->private_data; + + if (0 == *count || *count > MAX_SAA7146_CAPTURE_BUFFERS) + *count = MAX_SAA7146_CAPTURE_BUFFERS; + + *size = fh->video_fmt.sizeimage; + + /* check if we exceed the "memory" parameter */ + if( (*count * *size) > (memory*1048576) ) { + *count = (memory*1048576) / *size; + } + + DEB_CAP(("%d buffers, %d bytes each.\n",*count,*size)); + + return 0; +} + +static +void buffer_queue(struct file *file, struct videobuf_buffer *vb) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + struct saa7146_buf *buf = (struct saa7146_buf *)vb; + + DEB_CAP(("vbuf:%p\n",vb)); + saa7146_buffer_queue(fh->dev,&vv->video_q,buf); +} + + +static +void buffer_release(struct file *file, struct videobuf_buffer *vb) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_buf *buf = (struct saa7146_buf *)vb; + + DEB_CAP(("vbuf:%p\n",vb)); + saa7146_dma_free(dev,buf); +} + +static +struct videobuf_queue_ops video_qops = { + .buf_setup = buffer_setup, + .buf_prepare = buffer_prepare, + .buf_queue = buffer_queue, + .buf_release = buffer_release, +}; + +/********************************************************************************/ +/* file operations */ + +static +void video_init(struct saa7146_dev *dev, struct saa7146_vv *vv) +{ + INIT_LIST_HEAD(&vv->video_q.queue); + + init_timer(&vv->video_q.timeout); + vv->video_q.timeout.function = saa7146_buffer_timeout; + vv->video_q.timeout.data = (unsigned long)(&vv->video_q); + vv->video_q.dev = dev; + + /* set some default values */ + vv->standard = &dev->ext->ext_vv_data->stds[0]; + + /* FIXME: what's this? */ + vv->current_hps_source = SAA7146_HPS_SOURCE_PORT_A; + vv->current_hps_sync = SAA7146_HPS_SYNC_PORT_A; +} + + +static +void video_open(struct saa7146_dev *dev, struct saa7146_fh *fh) +{ + struct saa7146_format *sfmt; + + fh->video_fmt.width = 384; + fh->video_fmt.height = 288; + fh->video_fmt.pixelformat = V4L2_PIX_FMT_BGR24; + fh->video_fmt.field = V4L2_FIELD_ANY; + sfmt = format_by_fourcc(dev,fh->video_fmt.pixelformat); + fh->video_fmt.sizeimage = (fh->video_fmt.width * fh->video_fmt.height * sfmt->depth)/8; + + videobuf_queue_init(&fh->video_q, &video_qops, + dev->pci, &dev->slock, + V4L2_BUF_TYPE_VIDEO_CAPTURE, + V4L2_FIELD_INTERLACED, + sizeof(struct saa7146_buf)); + + init_MUTEX(&fh->video_q.lock); +} + + +static +void video_close(struct saa7146_dev *dev, struct saa7146_fh *fh, struct file *file) +{ + struct saa7146_vv *vv = dev->vv_data; + unsigned long flags; + + if( 0 != vv->ov_data ) { + if( fh == vv->ov_data->fh ) { + spin_lock_irqsave(&dev->slock,flags); + stop_preview(fh); + spin_unlock_irqrestore(&dev->slock,flags); + } + } + + if( fh == vv->streaming ) { + video_end(fh); + } + + videobuf_queue_cancel(file,&fh->video_q); +} + + +static +void video_irq_done(struct saa7146_dev *dev, unsigned long st) +{ + struct saa7146_vv *vv = dev->vv_data; + struct saa7146_dmaqueue *q = &vv->video_q; + + spin_lock(&dev->slock); + DEB_CAP(("called.\n")); + + /* only finish the buffer if we have one... */ + if( NULL != q->curr ) { + saa7146_buffer_finish(dev,q,STATE_DONE); + } + saa7146_buffer_next(dev,q,0); + + spin_unlock(&dev->slock); +} + +static +ssize_t video_read(struct file *file, char *data, size_t count, loff_t *ppos) +{ + struct saa7146_fh *fh = file->private_data; + struct saa7146_dev *dev = fh->dev; + struct saa7146_vv *vv = dev->vv_data; + ssize_t ret = 0; + + int restart_overlay = 0; + struct saa7146_fh *ov_fh = NULL; + + DEB_EE(("called.\n")); + + if( vv->ov_data != NULL ) { + ov_fh = vv->ov_data->fh; + stop_preview(ov_fh); + restart_overlay = 1; + } + + if( 0 != video_begin(fh)) { + return -EAGAIN; + } + ret = videobuf_read_one(file,&fh->video_q , data, count, ppos); + video_end(fh); + + /* restart overlay if it was active before */ + if( 0 != restart_overlay ) { + start_preview(ov_fh); + } + + return ret; +} + +struct saa7146_use_ops saa7146_video_uops = { + .init = video_init, + .open = video_open, + .release = video_close, + .irq_done = video_irq_done, + .read = video_read, + .capture_begin = video_begin, + .capture_end = video_end, +}; + +EXPORT_SYMBOL_GPL(saa7146_video_uops); diff -Nru a/drivers/media/dvb/Kconfig b/drivers/media/dvb/Kconfig --- a/drivers/media/dvb/Kconfig Tue Oct 29 17:16:55 2002 +++ b/drivers/media/dvb/Kconfig Mon Apr 7 13:17:58 2003 @@ -3,7 +3,7 @@ # menu "Digital Video Broadcasting Devices" - depends on VIDEO_DEV!=n + depends on NET && INET config DVB bool "DVB For Linux" @@ -32,10 +32,10 @@ source "drivers/media/dvb/frontends/Kconfig" -comment "Supported DVB Adapters" +comment "Supported SAA7146 based PCI Adapters" depends on DVB -source "drivers/media/dvb/av7110/Kconfig" +source "drivers/media/dvb/ttpci/Kconfig" endmenu diff -Nru a/drivers/media/dvb/Makefile b/drivers/media/dvb/Makefile --- a/drivers/media/dvb/Makefile Sat Dec 14 04:38:56 2002 +++ b/drivers/media/dvb/Makefile Mon Apr 7 13:17:58 2003 @@ -2,4 +2,4 @@ # Makefile for the kernel multimedia device drivers. # -obj-y := dvb-core/ frontends/ av7110/ +obj-y := dvb-core/ frontends/ ttpci/ # ttusb-budget/ diff -Nru a/drivers/media/dvb/av7110/Kconfig b/drivers/media/dvb/av7110/Kconfig --- a/drivers/media/dvb/av7110/Kconfig Tue Oct 29 17:16:55 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,26 +0,0 @@ -config DVB_AV7110 - tristate "SAA7146 based AV7110 and Nova/budget cards" - depends on VIDEO_DEV && DVB_CORE - help - Support for SAA7146 and AV7110 based DVB cards as produced - by Fujitsu-Siemens, Technotrend, Hauppauge and others. - - Simple cards like so called Budget- or Nova-PCI cards are - supported as well as fullfeatured cards with onboard MPEG2 - decoder. - - Say Y if you own such a card and want to use it. - -config DVB_AV7110_OSD - bool "AV7110 OSD support" - depends on DVB_AV7110 - help - The AV7110 firmware provides some code to generate an OnScreenDisplay - on the video output. This is kind of nonstandard and not guaranteed to - be maintained. - - Anyway, some popular DVB software like VDR uses this OSD to render - its menus, so say Y if you want to use this software. - - All other people say N. - diff -Nru a/drivers/media/dvb/av7110/Makefile b/drivers/media/dvb/av7110/Makefile --- a/drivers/media/dvb/av7110/Makefile Sat Dec 14 04:38:56 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,9 +0,0 @@ -# -# Makefile for the kernel AV7110 DVB device driver -# - -dvb-ttpci-objs := saa7146_core.o saa7146_v4l.o av7110.o av7110_ir.o - -obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o - -EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ diff -Nru a/drivers/media/dvb/av7110/av7110.c b/drivers/media/dvb/av7110/av7110.c --- a/drivers/media/dvb/av7110/av7110.c Tue Feb 11 14:57:51 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,4840 +0,0 @@ -/* - * av7110.c: driver for the SAA7146 based AV110 cards (like the Fujitsu-Siemens DVB) - * and Nova/Budget DVB cards - * - * Copyright (C) 1999-2002 Ralph Metzler - * & Marcus Metzler for convergence integrated media GmbH - * - * originally based on code by: - * Copyright (C) 1998,1999 Christian Theiss - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * Or, point your browser to http://www.gnu.org/copyleft/gpl.html - * - * - * the project's page is at http://www.linuxtv.org/dvb/ - */ - -#define NEW_CI 1 - -#define __KERNEL_SYSCALLS__ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include "../dvb-core/dvb_i2c.h" -#include "../dvb-core/dvb_frontend.h" -#include "av7110.h" - -#include "saa7146_core.h" -#include "saa7146_v4l.h" -#include "saa7146_defs.h" - - -static int AV_StartPlay(av7110_t *av7110, int av); -static void restart_feeds(av7110_t *av7110); -static int bootarm(av7110_t *av7110); -static inline int i2c_writereg(av7110_t *av7110, u8 id, u8 reg, u8 val); -static inline u8 i2c_readreg(av7110_t *av7110, u8 id, u8 reg); -static int outcom(av7110_t *av7110, int type, int com, int num, ...); -static void SetMode(av7110_t *av7110, int mode); - -void pes_to_ts(u8 const *buf, long int length, u16 pid, p2t_t *p); -void p_to_t(u8 const *buf, long int length, u16 pid, u8 *counter, struct dvb_demux_feed *feed); - -static u32 vidmem = 0; -static u32 vidlow = 0; - -static int av7110_debug = 0; -#define dprintk if (av7110_debug) printk - -static int vidmode=CVBS_RGB_OUT; -static int init_vpid; -static int init_apid; -static int pids_off; -static int adac=DVB_ADAC_TI; - -#define saacomm(x,y) av7110->saa->command(av7110->saa->i2c_bus, (x), (y)) - - -/**************************************************************************** - * General helper functions - ****************************************************************************/ - -static inline void ddelay(int i) -{ - current->state=TASK_INTERRUPTIBLE; - schedule_timeout((HZ*i)/100); -} - - -/**************************************************************************** - * GPIO and DEBI functions - ****************************************************************************/ - -#define saaread(adr) saa7146_read(saamem,(adr)) -#define saawrite(dat,adr) saa7146_write(saamem,(adr),(dat)) - -inline static void -setgpio(av7110_t *av7110, int port, u32 data) -{ - void *saamem=av7110->saa_mem; - u32 val; - - val=saaread(GPIO_CTRL); - val&=~(0xff << (8*(port))); - val|=(data)<<(8*(port)); - saawrite(val, GPIO_CTRL); -} - -/* This DEBI code is based on the Stradis driver - by Nathan Laredo */ - -static -int wait_for_debi_done(av7110_t *av7110) -{ - void *saamem=av7110->saa_mem; - int start; - - /* wait for registers to be programmed */ - start = jiffies; - while (1) { - if (saaread(MC2) & 2) - break; - if (jiffies-start > HZ/20) { - printk ("%s: timed out while waiting for registers " - "getting programmed\n", __FUNCTION__); - return -ETIMEDOUT; - } - } - - /* wait for transfer to complete */ - start = jiffies; - while (1) { - if (!(saaread(PSR) & SPCI_DEBI_S)) - break; - saaread(MC2); - if (jiffies-start > HZ/4) { - printk ("%s: timed out while waiting for transfer " - "completion\n", __FUNCTION__); - return -ETIMEDOUT; - } - } - - return 0; -} - -static int debiwrite(av7110_t *av7110, u32 config, - int addr, u32 val, int count) -{ - void *saamem=av7110->saa_mem; - u32 cmd; - - if (count <= 0 || count > 32764) - return -1; - if (wait_for_debi_done(av7110) < 0) - return -1; - saawrite(config, DEBI_CONFIG); - if (count <= 4) /* immediate transfer */ - saawrite(val, DEBI_AD); - else /* block transfer */ - saawrite(av7110->debi_bus, DEBI_AD); - saawrite((cmd = (count << 17) | (addr & 0xffff)), DEBI_COMMAND); - saawrite((2 << 16) | 2, MC2); - return 0; -} - -static u32 debiread(av7110_t *av7110, u32 config, int addr, int count) -{ - void *saamem=av7110->saa_mem; - u32 result = 0; - - if (count > 32764 || count <= 0) - return 0; - if (wait_for_debi_done(av7110) < 0) - return 0; - saawrite(av7110->debi_bus, DEBI_AD); - saawrite((count << 17) | 0x10000 | (addr & 0xffff), - DEBI_COMMAND); - - saawrite(config, DEBI_CONFIG); - saawrite((2 << 16) | 2, MC2); - if (count > 4) - return count; - wait_for_debi_done(av7110); - result = saaread(DEBI_AD); - result &= (0xffffffffUL >> ((4-count)*8)); - return result; -} - -/* DEBI during interrupt */ - -static inline void -iwdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) -{ - if (count>4 && val) - memcpy(av7110->debi_virt, (char *) val, count); - debiwrite(av7110, config, addr, val, count); -} - -static inline u32 -irdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) -{ - u32 res; - - res=debiread(av7110, config, addr, count); - if (count<=4) - memcpy(av7110->debi_virt, (char *) &res, count); - return res; -} - -/* DEBI outside interrupts, only for count<=4! */ - -static inline void -wdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) -{ - unsigned long flags; - - spin_lock_irqsave(&av7110->debilock, flags); - debiwrite(av7110, config, addr, val, count); - spin_unlock_irqrestore(&av7110->debilock, flags); -} - -static inline u32 -rdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) -{ - unsigned long flags; - u32 res; - - spin_lock_irqsave(&av7110->debilock, flags); - res=debiread(av7110, config, addr, count); - spin_unlock_irqrestore(&av7110->debilock, flags); - return res; -} - - -static inline char -chtrans(char c) -{ - if (c<32 || c>126) - c=0x20; - return c; -} - - -/* handle mailbox registers of the dual ported RAM */ - -static inline void -ARM_ResetMailBox(av7110_t *av7110) -{ - unsigned long flags; - - spin_lock_irqsave(&av7110->debilock, flags); - debiread(av7110, DEBINOSWAP, IRQ_RX, 2); - //printk("dvb: IRQ_RX=%d\n", debiread(av7110, DEBINOSWAP, IRQ_RX, 2)); - debiwrite(av7110, DEBINOSWAP, IRQ_RX, 0, 2); - spin_unlock_irqrestore(&av7110->debilock, flags); -} - -static inline void -ARM_ClearMailBox(av7110_t *av7110) -{ - iwdebi(av7110, DEBINOSWAP, IRQ_RX, 0, 2); -} - -static inline void -ARM_ClearIrq(av7110_t *av7110) -{ - irdebi(av7110, DEBINOSWAP, IRQ_RX, 0, 2); -} - -static void -reset_arm(av7110_t *av7110) -{ - setgpio(av7110, RESET_LINE, GPIO_OUTLO); - - /* Disable DEBI and GPIO irq */ - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) & ~(MASK_19 | MASK_03)); - saa7146_write(av7110->saa_mem, ISR, (MASK_19 | MASK_03)); - - mdelay(800); - setgpio(av7110, RESET_LINE, GPIO_OUTHI); - mdelay(800); - - ARM_ResetMailBox(av7110); - - saa7146_write(av7110->saa_mem, ISR, (MASK_19 | MASK_03)); - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) | MASK_03 ); - - av7110->arm_ready=1; - printk("av7110: ARM RESET\n"); -} - -static void -recover_arm(av7110_t *av7110) -{ - if (current->files) - bootarm(av7110); - else { - printk("OOPS, no current->files\n"); - reset_arm(av7110); - } - ddelay(10); - restart_feeds(av7110); -} - -static void -arm_error(av7110_t *av7110) -{ - av7110->arm_errors++; - av7110->arm_ready=0; - recover_arm(av7110); -} - -static int arm_thread(void *data) -{ - av7110_t *av7110 = data; - u16 newloops; - - lock_kernel(); -#if 0 - daemonize("arm_mon"); -#else - exit_mm(current); - current->session=current->pgrp=1; - sigfillset(¤t->blocked); - strcpy(current->comm, "arm_mon"); -#endif - av7110->arm_thread = current; - unlock_kernel(); - - while (!av7110->arm_rmmod && !signal_pending(current)) { - interruptible_sleep_on_timeout(&av7110->arm_wait, 5*HZ); - - if (!av7110->arm_ready) - continue; - - if (down_interruptible(&av7110->dcomlock)) - break; - - newloops=rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2); - up(&av7110->dcomlock); - - if (newloops==av7110->arm_loops) { - printk("av7110%d: ARM crashed!\n", - av7110->saa->dvb_adapter->num); - - arm_error(av7110); - - if (down_interruptible(&av7110->dcomlock)) - break; - - newloops=rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2)-1; - up(&av7110->dcomlock); - } - av7110->arm_loops=newloops; - } - - av7110->arm_thread = NULL; - return 0; -} - - -static int -record_cb(dvb_filter_pes2ts_t *p2t, u8 *buf, size_t len) -{ - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) p2t->priv; - - if (!(dvbdmxfeed->ts_type & TS_PACKET)) - return 0; - if (buf[3]==0xe0) // video PES do not have a length in TS - buf[4]=buf[5]=0; - if (dvbdmxfeed->ts_type & TS_PAYLOAD_ONLY) - return dvbdmxfeed->cb.ts(buf, len, 0, 0, - &dvbdmxfeed->feed.ts, DMX_OK); - else - return dvb_filter_pes2ts(p2t, buf, len); -} - -static int -dvb_filter_pes2ts_cb(void *priv, unsigned char *data) -{ - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) priv; - - dvbdmxfeed->cb.ts(data, 188, 0, 0, - &dvbdmxfeed->feed.ts, - DMX_OK); - return 0; -} - -static int -AV_StartRecord(av7110_t *av7110, int av, - struct dvb_demux_feed *dvbdmxfeed) -{ - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - - if (av7110->playing||(av7110->rec_mode&av)) - return -EBUSY; - outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); - dvbdmx->recording=1; - av7110->rec_mode|=av; - - switch (av7110->rec_mode) { - case RP_AUDIO: - dvb_filter_pes2ts_init (&av7110->p2t[0], - dvbdmx->pesfilter[0]->pid, - dvb_filter_pes2ts_cb, - (void *)dvbdmx->pesfilter[0]); - outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, AudioPES, 0); - break; - - case RP_VIDEO: - dvb_filter_pes2ts_init (&av7110->p2t[1], - dvbdmx->pesfilter[1]->pid, - dvb_filter_pes2ts_cb, - (void *)dvbdmx->pesfilter[1]); - outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, VideoPES, 0); - break; - - case RP_AV: - dvb_filter_pes2ts_init (&av7110->p2t[0], - dvbdmx->pesfilter[0]->pid, - dvb_filter_pes2ts_cb, - (void *)dvbdmx->pesfilter[0]); - dvb_filter_pes2ts_init (&av7110->p2t[1], - dvbdmx->pesfilter[1]->pid, - dvb_filter_pes2ts_cb, - (void *)dvbdmx->pesfilter[1]); - outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, AV_PES, 0); - break; - } - return 0; -} - -static int -AV_StartPlay(av7110_t *av7110, int av) -{ - if (av7110->rec_mode) - return -EBUSY; - if (av7110->playing&av) - return -EBUSY; - - outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); - - if (av7110->playing == RP_NONE) { - dvb_filter_ipack_reset(&av7110->ipack[0]); - dvb_filter_ipack_reset(&av7110->ipack[1]); - } - - av7110->playing|=av; - switch (av7110->playing) { - case RP_AUDIO: - outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, AudioPES, 0); - break; - case RP_VIDEO: - outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, VideoPES, 0); - av7110->sinfo=0; - break; - case RP_AV: - av7110->sinfo=0; - outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, AV_PES, 0); - break; - } - return av7110->playing; -} - -static void -AV_Stop(av7110_t *av7110, int av) -{ - if (!(av7110->playing&av) && !(av7110->rec_mode&av)) - return; - - outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); - if (av7110->playing) { - av7110->playing&=~av; - switch (av7110->playing) { - case RP_AUDIO: - outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, AudioPES, 0); - break; - case RP_VIDEO: - outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, VideoPES, 0); - break; - case RP_NONE: - SetMode(av7110, av7110->vidmode); - break; - } - } else { - av7110->rec_mode&=~av; - switch (av7110->rec_mode) { - case RP_AUDIO: - outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, AudioPES, 0); - break; - case RP_VIDEO: - outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, VideoPES, 0); - break; - case RP_NONE: - break; - } - } -} - -/**************************************************************************** - * Buffer handling - ****************************************************************************/ - -static inline void -ring_buffer_flush(ring_buffer_t *rbuf) -{ - spin_lock_irq(&rbuf->lock); - rbuf->pwrite=rbuf->pread; - spin_unlock_irq(&rbuf->lock); - wake_up(&rbuf->queue); -} - -static inline void -ring_buffer_init(ring_buffer_t *rbuf, u8 *data, int len) -{ - rbuf->pread=rbuf->pwrite=0; - rbuf->data=data; - rbuf->size=len; - init_waitqueue_head(&rbuf->queue); - spin_lock_init(&(rbuf->lock)); - rbuf->lock=SPIN_LOCK_UNLOCKED; - sema_init(&(rbuf->sema), 1); -} - -static inline -int ring_buffer_empty(ring_buffer_t *rbuf) -{ - return (rbuf->pread==rbuf->pwrite); -} - -static inline -int ring_buffer_free(ring_buffer_t *rbuf) -{ - int free; - - free=rbuf->pread - rbuf->pwrite; - if (free<=0) - free+=rbuf->size; - return free; -} - -static inline -int ring_buffer_avail(ring_buffer_t *rbuf) -{ - int avail; - - avail=rbuf->pwrite - rbuf->pread; - if (avail<0) - avail+=rbuf->size; - return avail; -} - -#if 0 -static void -ring_buffer_block(ring_buffer_t *rbuf, unsigned long count) -{ - if (ring_buffer_free(rbuf)>=count) - return; - while (!wait_event_interruptible(rbuf->queue, - (ring_buffer_free(rbuf)>=count))); -} -#endif - -static long -ring_buffer_write(ring_buffer_t *rbuf, - const char *buf, unsigned long count, - int nonblock, int usermem) -{ - unsigned long todo = count; - int free, split; - - while (todo > 0) { - if (ring_buffer_free(rbuf)<=2048) { - if (nonblock) - return count-todo; - if (wait_event_interruptible(rbuf->queue, - (ring_buffer_free(rbuf)>2048))) - return count-todo; - } - dprintk ("function: %s pread=%08x pwrite=%08x\n", __FUNCTION__, - rbuf->pread, rbuf->pwrite); - //mdelay(2); - free = rbuf->pread - rbuf->pwrite; - split=rbuf->size; - if (free<=0) { - free+=rbuf->size; - split-=rbuf->pwrite; - } - if (free > todo) - free = todo; - - if (split < free) { - if (!usermem) - memcpy(rbuf->data+rbuf->pwrite, buf, split); - else - if (copy_from_user(rbuf->data+rbuf->pwrite, - buf, split)) - return -EFAULT; - buf += split; - todo -= split; - free -= split; - rbuf->pwrite = 0; - } - if (!usermem) - memcpy(rbuf->data+rbuf->pwrite, buf, free); - else - if (copy_from_user(rbuf->data+rbuf->pwrite, buf, free)) - return -EFAULT; - rbuf->pwrite = (rbuf->pwrite + free)%rbuf->size; - todo -= free; - buf += free; - } - - return count-todo; -} - -#if 0 -static void -ring_buffer_put(ring_buffer_t *db, u8 *buf, int len) -{ - int split, fsize; - - fsize=db->pread - db->pwrite; - if (fsize <= 0) { - fsize+=db->size; - split=db->size-db->pwrite; - } else - split=0; - if (len>=fsize) { - dprintk("buffer overflow\n"); - return; - } - if (split>=len) - split=0; - if (split) { - memcpy(db->data + db->pwrite, buf, split); - len-=split; - db->pwrite=0; - } - memcpy(db->data + db->pwrite, split + buf, len); - db->pwrite=(db->pwrite+len)%db->size; -} -#endif - - -/**************************************************************************** - * TT budget / WinTV Nova - ****************************************************************************/ - -static int -TTBStop(av7110_t *av7110) -{ - if (--av7110->feeding) - return av7110->feeding; - saa7146_write(av7110->saa_mem, MC1, MASK_20); // DMA3 off - saa7146_write(av7110->saa_mem, MC1, MASK_28); // RPS0 off - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) & ~MASK_10 ); - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER)& ~MASK_07); - return 0; -} - -#define TS_WIDTH (4*188) -#define TS_HEIGHT (1024/4) -static int -TTBStart(av7110_t *av7110) -{ - struct saa7146 *saa=av7110->saa; - - //printk ("function : %s\n", __FUNCTION__); - if (av7110->feeding) - return ++av7110->feeding; - - saa7146_write(saa->mem, MC1, MASK_20); // DMA3 off - - memset(saa->grabbing, 0x00, TS_HEIGHT*TS_WIDTH); - - saa7146_write(saa->mem, PCI_BT_V1, 0x001c0000); - - av7110->tsf=0; - av7110->ttbp=0; - saa7146_write(saa->mem, DD1_INIT, 0x02000680); - saa7146_write(saa->mem, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); - - saa7146_write(saa->mem, BRS_CTRL, 0x60000000); - saa7146_write(saa->mem, MC2, (MASK_08 | MASK_24)); - mdelay(10); - - saa7146_write(saa->mem, BASE_ODD3, 0); - saa7146_write(saa->mem, BASE_EVEN3, TS_WIDTH*TS_HEIGHT/2); - saa7146_write(saa->mem, PROT_ADDR3, TS_WIDTH*TS_HEIGHT); - saa7146_write(saa->mem, BASE_PAGE3, virt_to_bus(saa->page_table[0])|ME1|0xb0); - saa7146_write(saa->mem, PITCH3, TS_WIDTH); - - saa7146_write(saa->mem, NUM_LINE_BYTE3, ((TS_HEIGHT/2)<<16)|TS_WIDTH); - saa7146_write(saa->mem, MC2, (MASK_04 | MASK_20)); - - // VPE - saa7146_write(saa->mem, IER, saa7146_read(saa->mem, IER)|MASK_10); - - saa7146_write(saa->mem, MC1, (MASK_04 | MASK_20)); // DMA3 on - - // FIDB - saa7146_write(saa->mem, IER, saa7146_read(saa->mem, IER)|MASK_07); - - return ++av7110->feeding; -} - -/** - * Hack! we save the last av7110 ptr. This should be ok, since - * you rarely will use more then one IR control. - * - * If we want to support multiple controls we would have to do much more... - */ -void av7110_setup_irc_config (av7110_t *av7110, u32 ir_config) -{ - static av7110_t *last; - - if (!av7110) - av7110 = last; - else - last = av7110; - - outcom(av7110, COMTYPE_PIDFILTER, SetIR, 1, ir_config); -} - -static void (*irc_handler)(u32); - -void av7110_register_irc_handler(void (*func)(u32)) -{ - //dprintk("registering %08x\n",func); - irc_handler = func; -} - -void av7110_unregister_irc_handler(void (*func)(u32)) -{ - //dprintk("unregistering %08x\n",func); - irc_handler = NULL; -} - -void run_handlers(unsigned long ircom) -{ - if (irc_handler != NULL) - (*irc_handler)((u32) ircom); -} - -DECLARE_TASKLET(irtask,run_handlers,0); - -void IR_handle(av7110_t *av7110, u32 ircom) -{ - dprintk("av7110: ircommand = %08x\n", ircom); - irtask.data = (unsigned long) ircom; - tasklet_schedule(&irtask); -} - -/**************************************************************************** - * IRQ handling - ****************************************************************************/ - -void CI_handle(av7110_t *av7110, u8 *data, u16 len) -{ - //CI_out(av7110, data, len); - - if (len<3) - return; - switch (data[0]) { - case CI_MSG_CI_INFO: - if (data[2]!=1 && data[2]!=2) - break; - switch (data[1]) { - case 0: - av7110->ci_slot[data[2]-1].flags=0; - break; - case 1: - av7110->ci_slot[data[2]-1].flags|=CA_CI_MODULE_PRESENT; - break; - case 2: - av7110->ci_slot[data[2]-1].flags|=CA_CI_MODULE_READY; - break; - } - break; - case CI_SWITCH_PRG_REPLY: - //av7110->ci_stat=data[1]; - break; - default: - break; - } - -} - -static inline int -DvbDmxFilterCallback(u8 * buffer1, size_t buffer1_len, - u8 * buffer2, size_t buffer2_len, - struct dvb_demux_filter *dvbdmxfilter, - dmx_success_t success, - av7110_t *av7110) -{ - if (!dvbdmxfilter->feed->demux->dmx.frontend) - return 0; - if (dvbdmxfilter->feed->demux->dmx.frontend->source==DMX_MEMORY_FE) - return 0; - - switch(dvbdmxfilter->type) { - case DMX_TYPE_SEC: - if ((((buffer1[1]<<8)|buffer1[2])&0xfff)+3!=buffer1_len) - return 0; - if (dvbdmxfilter->doneq) { - dmx_section_filter_t *filter=&dvbdmxfilter->filter; - int i; - u8 xor, neq=0; - - for (i=0; ifilter_value[i]^buffer1[i]; - neq|=dvbdmxfilter->maskandnotmode[i]&xor; - } - if (!neq) - return 0; - } - return dvbdmxfilter->feed->cb.sec(buffer1, buffer1_len, - buffer2, buffer2_len, - &dvbdmxfilter->filter, - DMX_OK); - case DMX_TYPE_TS: - if (!(dvbdmxfilter->feed->ts_type & TS_PACKET)) - return 0; - if (dvbdmxfilter->feed->ts_type & TS_PAYLOAD_ONLY) - return dvbdmxfilter->feed->cb.ts(buffer1, buffer1_len, - buffer2, buffer2_len, - &dvbdmxfilter->feed->feed.ts, - DMX_OK); - else - pes_to_ts(buffer1, buffer1_len, - dvbdmxfilter->feed->pid, - &av7110->p2t_filter[dvbdmxfilter->index]); - default: - return 0; - } -} - - -u8 pshead[0x26] = { - 0x00, 0x00, 0x01, 0xba, 0x5f, 0xff, 0xfe, 0xe6, - 0xc4, 0x01, 0x01, 0x89, 0xc3, 0xf8, 0x00, 0x00, - 0x01, 0xbb, 0x00, 0x12, 0x80, 0xc4, 0xe1, 0x00, - 0xe1, 0xff, 0xb9, 0xe0, 0xe8, 0xb8, 0xc0, 0x20, - 0xbd, 0xe0, 0x44, 0xbf, 0xe0, 0x02, -}; - - -static void vpeirq (unsigned long data) -{ - //printk("vpeirq %08x\n", saa7146_read(av7110->saa_mem, PCI_VDP3)); -} - -#if 0 -static void fidbirq(struct saa7146* saa, void *data) -{ - av7110_t *av7110=(av7110_t *) data; - u8 *mem; - - mem=(av7110->tsf ? TS_HEIGHT*TS_WIDTH/2 :0)+(u8 *)av7110->saa->grabbing; - - // FIXME: think of something better without busy waiting - if (av7110->tsf) - while (saa7146_read(av7110->saa_mem, PCI_VDP3)>0x20000); - else - while (saa7146_read(av7110->saa_mem, PCI_VDP3)<0x17800); - - av7110->tsf^=1; - saa7146_write(av7110->saa_mem, DD1_INIT, 0x02000600|(av7110->tsf ? 0x40:0x80)); - saa7146_write(av7110->saa_mem, MC2, - (MASK_09 | MASK_25 | MASK_10 | MASK_26)); - - // FIXME: use bottom half or tasklet - if (av7110->feeding && mem[0]==0x47) - dvb_dmx_swfilter_packets(&av7110->demux, mem, 512); -} -#else -static -void fidbirq (unsigned long data) -{ - struct av7110_s *av7110 = (struct av7110_s*) data; - u8 *mem=(u8 *)(av7110->saa->grabbing); - int num; - u32 dmapos; - - dmapos=saa7146_read(av7110->saa_mem, PCI_VDP3); - dmapos-=(dmapos%188); - - if (av7110->tsf) { - mem+=av7110->ttbp; - if (dmapos<0x20000) { - num=1024-av7110->ttbp/188; - av7110->ttbp=0; - } else { - num=(dmapos - av7110->ttbp)/188; - av7110->ttbp=dmapos; - } - } else { - if (av7110->ttbp>1000*188 && av7110->ttbp<1024*188) { - if (av7110->feeding) - dvb_dmx_swfilter_packets(&av7110->demux, - mem+av7110->ttbp, - 1024- av7110->ttbp / 188); - } - num=dmapos/188; - av7110->ttbp=dmapos; - } - - av7110->tsf^=1; - saa7146_write(av7110->saa_mem, DD1_INIT, 0x02000600|(av7110->tsf ? 0x40:0x80)); - saa7146_write(av7110->saa_mem, MC2, - (MASK_09 | MASK_25 | MASK_10 | MASK_26)); - - // FIXME: use bottom half or tasklet - if (av7110->feeding && mem[0]==0x47) - dvb_dmx_swfilter_packets(&av7110->demux, mem, num); -} -#endif - -//#define DEBUG_TIMING -inline static void -print_time(char *s) -{ -#ifdef DEBUG_TIMING - struct timeval tv; - do_gettimeofday(&tv); - printk("%s: %d.%d\n", s, (int)tv.tv_sec, (int)tv.tv_usec); -#endif -} - -static void -ci_get_data(ring_buffer_t *cibuf, u8 *data, int len) -{ - int free, split=0, pread=cibuf->pread; - - free=pread-cibuf->pwrite; - if (free<=0) - free+=cibuf->size; - if (free<=len+2) - return; - cibuf->data[cibuf->pwrite]=(len>>8); - cibuf->data[(cibuf->pwrite+1)%cibuf->size]=(len&0xff); - cibuf->pwrite=(cibuf->pwrite+2)%cibuf->size; - - if (pread<=cibuf->pwrite) - split=cibuf->size-cibuf->pwrite; - if (split && splitdata + cibuf->pwrite, data, split); - memcpy(cibuf->data, data+split, len-split); - } else - memcpy(cibuf->data + cibuf->pwrite, data, len); - cibuf->pwrite=(cibuf->pwrite+len)%cibuf->size; - - wake_up_interruptible(&cibuf->queue); -} - -static -void debiirq (unsigned long data) -{ - struct av7110_s *av7110 = (struct av7110_s*) data; - int type=av7110->debitype; - int handle=(type>>8)&0x1f; - - print_time("debi"); - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) & ~MASK_19 ); - saa7146_write(av7110->saa_mem, ISR, MASK_19 ); - - if (type==-1) { - printk("DEBI irq oops\n"); - ARM_ClearMailBox(av7110); - ARM_ClearIrq(av7110); - return; - } - av7110->debitype=-1; - - switch (type&0xff) { - - case DATA_TS_RECORD: - dvb_dmx_swfilter_packets(&av7110->demux, - (const u8 *)av7110->debi_virt, - av7110->debilen/188); - spin_lock(&av7110->debilock); - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); - break; - - case DATA_PES_RECORD: - if (av7110->demux.recording) - record_cb(&av7110->p2t[handle], - (u8 *)av7110->debi_virt, - av7110->debilen); - spin_lock(&av7110->debilock); - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); - return; - - case DATA_IPMPE: - case DATA_FSECTION: - case DATA_PIPING: - if (av7110->handle2filter[handle]) - DvbDmxFilterCallback((u8 *)av7110->debi_virt, - av7110->debilen, 0, 0, - av7110->handle2filter[handle], - DMX_OK, av7110); - spin_lock(&av7110->debilock); - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); - return; - - case DATA_CI_GET: - { - u8 *data=av7110->debi_virt; - - if ((data[0]<2) && data[2]==0xff) { - int flags=0; - if (data[5]>0) - flags|=CA_CI_MODULE_PRESENT; - if (data[5]>5) - flags|=CA_CI_MODULE_READY; - av7110->ci_slot[data[0]].flags=flags; - } else - ci_get_data(&av7110->ci_rbuffer, - av7110->debi_virt, - av7110->debilen); - spin_lock(&av7110->debilock); - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); - return; - } - - case DATA_COMMON_INTERFACE: - CI_handle(av7110, (u8 *)av7110->debi_virt, av7110->debilen); -#if 0 - { - int i; - - printk("av7110%d: ", av7110->num); - printk("%02x ", *(u8 *)av7110->debi_virt); - printk("%02x ", *(1+(u8 *)av7110->debi_virt)); - for (i=2; idebilen; i++) - printk("%02x ", (*(i+(unsigned char *)av7110->debi_virt))); - for (i=2; idebilen; i++) - printk("%c", chtrans(*(i+(unsigned char *)av7110->debi_virt))); - - printk("\n"); - } -#endif - spin_lock(&av7110->debilock); - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); - return; - - case DATA_DEBUG_MESSAGE: - ((s8*)av7110->debi_virt)[Reserved_SIZE-1]=0; - printk("%s\n", (s8 *)av7110->debi_virt); - spin_lock(&av7110->debilock); - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); - return; - - case DATA_CI_PUT: - case DATA_MPEG_PLAY: - case DATA_BMP_LOAD: - spin_lock(&av7110->debilock); - iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); - return; - default: - break; - } - spin_lock(&av7110->debilock); - ARM_ClearMailBox(av7110); - spin_unlock(&av7110->debilock); -} - -static int -pes_play(void *dest, ring_buffer_t *buf, int dlen) -{ - int len, split=0; - u32 sync; - u16 blen; - - dprintk ("function : %s\n", __FUNCTION__); - if (!dlen) { - wake_up(&buf->queue); - return -1; - } - while (1) { - if ((len=ring_buffer_avail(buf)) < 6) - return -1; - sync=(buf->data[buf->pread])<<24; - sync|=(buf->data[(buf->pread+1)%buf->size]<<16); - sync|=(buf->data[(buf->pread+2)%buf->size]<<8); - sync|=buf->data[(buf->pread+3)%buf->size]; - - if (((sync&~0x1f)==0x000001e0) || - ((sync&~0x1f)==0x000001c0) || - (sync==0x000001bd)) - break; - printk("resync\n"); - buf->pread=(buf->pread+1)%buf->size; - } - blen=(buf->data[(buf->pread+4)%buf->size]<<8); - blen|=buf->data[(buf->pread+5)%buf->size]; - blen+=6; - if (len dlen) { - printk("buffer empty\n"); - wake_up(&buf->queue); - return -1; - } -/* if (blen>2048) { - buf->pread=(buf->pread+blen)%buf->size; - printk("packet too large\n"); - return -1; - } -*/ - len=blen; - if (buf->pread + len > buf->size) - split=buf->size-buf->pread; - if (split>0) { - memcpy(dest, buf->data+buf->pread, split); - buf->pread=0; - len-=split; - } - memcpy(split + dest, - buf->data + buf->pread, len); - buf->pread = (buf->pread +len)%buf->size; - - dprintk ("function: %s pread=%08x pwrite=%08x\n", __FUNCTION__, - buf->pread, buf->pwrite); - wake_up(&buf->queue); - return blen; -} - -static -void gpioirq (unsigned long data) -{ - struct av7110_s *av7110 = (struct av7110_s*) data; - u32 rxbuf, txbuf; - int len; - - //printk("GPIO0 irq\n"); - - if (av7110->debitype !=-1) - printk("GPIO0 irq oops\n"); - - spin_lock(&av7110->debilock); - - ARM_ClearIrq(av7110); - - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) & ~MASK_19 ); - saa7146_write(av7110->saa_mem, ISR, MASK_19 ); - - av7110->debitype = irdebi(av7110, DEBINOSWAP, IRQ_STATE, 0, 2); - av7110->debilen = irdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); - av7110->debibuf = 0; - rxbuf=irdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - txbuf=irdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); - len=(av7110->debilen+3)&(~3); - - dprintk("GPIO0 irq %d %d\n", av7110->debitype, av7110->debilen); - print_time("gpio"); - - dprintk("GPIO0 irq %02x\n", av7110->debitype&0xff); - switch (av7110->debitype&0xff) { - - case DATA_TS_PLAY: - case DATA_PES_PLAY: - break; - - case DATA_CI_PUT: - { - int avail, split=0, pwrite; - ring_buffer_t *cibuf=&av7110->ci_wbuffer; - - pwrite=cibuf->pwrite; - avail=pwrite-cibuf->pread; - if (avail<0) - avail+=cibuf->size; - if (avail<=2) { - iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); - break; - } - len=(cibuf->data[cibuf->pread]<<8); - len|=cibuf->data[(cibuf->pread+1)%cibuf->size]; - if (availpread=(cibuf->pread+2)%cibuf->size; - - if (pwritepread) - split=cibuf->size-cibuf->pread; - if (split && splitdebi_virt, cibuf->data+cibuf->pread, split); - memcpy(av7110->debi_virt+split, cibuf->data, todo); - } else - memcpy(av7110->debi_virt, cibuf->data+cibuf->pread, len); - cibuf->pread=(cibuf->pread+len)%cibuf->size; - wake_up(&cibuf->queue); - iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); - iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); - wait_for_debi_done(av7110); - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) | MASK_19 ); - if (len<5) len=5; /* we want a real DEBI DMA */ - iwdebi(av7110, DEBISWAB, DPRAM_BASE+txbuf, 0, (len+3)&~3); - spin_unlock(&av7110->debilock); - return; - } - - case DATA_MPEG_PLAY: - if (!av7110->playing) { - iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); - break; - } - len=0; - if (av7110->debitype&0x100) { - spin_lock(&av7110->aout.lock); - len=pes_play(av7110->debi_virt, &av7110->aout, 2048); - spin_unlock(&av7110->aout.lock); - } - if (len<=0 && (av7110->debitype&0x200) - &&av7110->videostate.play_state!=VIDEO_FREEZED) { - spin_lock(&av7110->avout.lock); - len=pes_play(av7110->debi_virt, &av7110->avout, 2048); - spin_unlock(&av7110->avout.lock); - } - if (len<=0) { - iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); - break; - } - dprintk("GPIO0 PES_PLAY len=%04x\n", len); - iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); - iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); - wait_for_debi_done(av7110); - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) | MASK_19 ); - - iwdebi(av7110, DEBISWAB, DPRAM_BASE+txbuf, 0, (len+3)&~3); - spin_unlock(&av7110->debilock); - return; - - case DATA_BMP_LOAD: - len=av7110->debilen; - if (!len) { - av7110->bmp_state=BMP_LOADED; - iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); - iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); - wake_up(&av7110->bmpq); - break; - } - if (len>av7110->bmplen) - len=av7110->bmplen; - if (len>2*1024) - len=2*1024; - iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); - iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); - memcpy(av7110->debi_virt, av7110->bmpbuf+av7110->bmpp, len); - av7110->bmpp+=len; - av7110->bmplen-=len; - wait_for_debi_done(av7110); - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) | MASK_19 ); - if (len<5) len=5; /* we want a real DEBI DMA */ - iwdebi(av7110, DEBISWAB, DPRAM_BASE+txbuf, 0, (len+3)&~3); - spin_unlock(&av7110->debilock); - return; - - case DATA_CI_GET: - case DATA_COMMON_INTERFACE: - case DATA_FSECTION: - case DATA_IPMPE: - case DATA_PIPING: - if (!len || len>4*1024) { - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - break; - } /* yes, fall through */ - case DATA_TS_RECORD: - case DATA_PES_RECORD: - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) | MASK_19); - irdebi(av7110, DEBISWAB, DPRAM_BASE+rxbuf, 0, len); - spin_unlock(&av7110->debilock); - return; - - case DATA_DEBUG_MESSAGE: - if (!len || len>0xff) { - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - break; - } - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) | MASK_19); - irdebi(av7110, DEBISWAB, Reserved, 0, len); - spin_unlock(&av7110->debilock); - return; - - case DATA_IRCOMMAND: - IR_handle(av7110, - swahw32(irdebi(av7110, DEBINOSWAP, Reserved, 0, 4))); - iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); - break; - - default: - printk("gpioirq unknown type=%d len=%d\n", - av7110->debitype, av7110->debilen); - break; - } - ARM_ClearMailBox(av7110); - av7110->debitype=-1; - spin_unlock(&av7110->debilock); - dprintk("GPIO0 irq exit 0\n"); -} - - -/**************************************************************************** - * DEBI command polling - ****************************************************************************/ - - -static int OutCommand(av7110_t *av7110, u16* buf, int length) -{ - int i; - u32 start; - - if (!av7110->arm_ready) - return -1; - - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2 ) ) - { - ddelay(1); - if ((jiffies - start) > ARM_WAIT_FREE) { - printk("outcommand error 1\n"); - //arm_error(av7110); - return -1; - } - } - -#ifndef _NOHANDSHAKE - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) - { - ddelay(1); - if ((jiffies - start) > ARM_WAIT_SHAKE) { - printk("outcommand error 2\n"); - //arm_error(av7110); - return -1; - } - } -#endif - - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2) & OSDQFull ) - { - ddelay(1); - if ((jiffies - start) > ARM_WAIT_OSD) - { - printk("outcommand error 3\n"); - //arm_error(av7110); - return -1; - } - } - for (i=2; iarm_ready) - return -1; - - if (down_interruptible(&av7110->dcomlock)) - return -ERESTARTSYS; - - ret=OutCommand(av7110, buf, length); - up(&av7110->dcomlock); - return ret; -} - - -static int outcom(av7110_t *av7110, int type, int com, int num, ...) -{ - va_list args; - u16 buf[num+2]; - int i; - - buf[0]=(( type << 8 ) | com); - buf[1]=num; - - if (num) { - va_start(args, num); - for (i=0; iarm_ready) - return -1; - - if (down_interruptible(&av7110->dcomlock)) - return -ERESTARTSYS; - - if ((err = OutCommand(av7110, Buff, length)) < 0) { - up(&av7110->dcomlock); - return err; - } - - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2) ) - { -#ifdef _NOHANDSHAKE - ddelay(1); -#endif - if ((jiffies - start) > ARM_WAIT_FREE) { - printk("commandrequest error 1\n"); - up(&av7110->dcomlock); - //arm_error(av7110); - return -1; - } - } - -#ifndef _NOHANDSHAKE - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) { - ddelay(1); - if ((jiffies - start) > ARM_WAIT_SHAKE) { - printk("commandrequest error 2\n"); - up(&av7110->dcomlock); - //arm_error(av7110); - return -1; - } - } -#endif - - for (i=0; idcomlock); - return 0; -} - - -static inline int -RequestParameter(av7110_t *av7110, u16 tag, u16* Buff, s16 length) -{ - return CommandRequest(av7110, &tag, 0, Buff, length); -} - - -/**************************************************************************** - * Firmware commands - ****************************************************************************/ - - -inline static int -SendDAC(av7110_t *av7110, u8 addr, u8 data) -{ - return outcom(av7110, COMTYPE_AUDIODAC, AudioDAC, 2, addr, data); -} - -static int -SetVolume(av7110_t *av7110, int volleft, int volright) -{ - int err; - - switch (av7110->adac_type) { - case DVB_ADAC_TI: - volleft=(volleft*256)/946; - volright=(volright*256)/946; - if (volleft > 0x45) - volleft=0x45; - if (volright > 0x45) - volright=0x45; - err=SendDAC(av7110, 3, 0x80 + volleft); - if (err) - return err; - return SendDAC(av7110, 4, volright); - - case DVB_ADAC_CRYSTAL: - volleft=127-volleft/2; - volright=127-volright/2; - i2c_writereg(av7110, 0x20, 0x03, volleft); - i2c_writereg(av7110, 0x20, 0x04, volright); - return 0; - } - return 0; -} - -#ifdef CONFIG_DVB_AV7110_OSD - -inline static int ResetBlend(av7110_t *av7110, u8 windownr) -{ - return outcom(av7110, COMTYPE_OSD, SetNonBlend, 1, windownr); -} - -inline static int SetColorBlend(av7110_t *av7110, u8 windownr) -{ - return outcom(av7110, COMTYPE_OSD, SetCBlend, 1, windownr); -} - -inline static int SetWindowBlend(av7110_t *av7110, u8 windownr, u8 blending) -{ - return outcom(av7110, COMTYPE_OSD, SetWBlend, 2, windownr, blending); -} - -inline static int SetBlend_(av7110_t *av7110, u8 windownr, - OSDPALTYPE colordepth, u16 index, u8 blending) -{ - return outcom(av7110, COMTYPE_OSD, SetBlend, 4, - windownr, colordepth, index, blending); -} - -inline static int SetColor_(av7110_t *av7110, u8 windownr, - OSDPALTYPE colordepth, u16 index, u16 colorhi, u16 colorlo) -{ - return outcom(av7110, COMTYPE_OSD, SetColor, 5, - windownr, colordepth, index, colorhi, colorlo); -} - -inline static int BringToTop(av7110_t *av7110, u8 windownr) -{ - return outcom(av7110, COMTYPE_OSD, WTop, 1, windownr); -} - -inline static int SetFont(av7110_t *av7110, u8 windownr, u8 fontsize, - u16 colorfg, u16 colorbg) -{ - return outcom(av7110, COMTYPE_OSD, Set_Font, 4, - windownr, fontsize, colorfg, colorbg); -} - -static int FlushText(av7110_t *av7110) -{ - u32 start; - - if (down_interruptible(&av7110->dcomlock)) - return -ERESTARTSYS; - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2 ) ) { - ddelay(1); - if ((jiffies - start) > ARM_WAIT_OSD) { - printk("outtext error\n"); - up(&av7110->dcomlock); - //arm_error(av7110); - return -1; - } - } - up(&av7110->dcomlock); - return 0; -} - -static int WriteText(av7110_t *av7110, u8 win, u16 x, u16 y, u8* buf) -{ - int i, ret; - u32 start; - int length=strlen(buf)+1; - u16 cbuf[5] = { (COMTYPE_OSD<<8) + DText, 3, win, x, y }; - - if (down_interruptible(&av7110->dcomlock)) - return -ERESTARTSYS; - - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2 ) ) { - ddelay(1); - if ((jiffies - start) > ARM_WAIT_OSD) { - printk("outtext error\n"); - up(&av7110->dcomlock); - //arm_error(av7110); - return -1; - } - } -#ifndef _NOHANDSHAKE - start = jiffies; - while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) { - ddelay(1); - if ((jiffies - start) > ARM_WAIT_SHAKE) { - printk("outtext error\n"); - up(&av7110->dcomlock); - //arm_error(av7110); - return -1; - } - } -#endif - for (i=0; idcomlock); - return ret; -} - -inline static int DrawLine(av7110_t *av7110, u8 windownr, - u16 x, u16 y, u16 dx, u16 dy, u16 color) -{ - return outcom(av7110, COMTYPE_OSD, DLine, 6, - windownr, x, y, dx, dy, color); -} - -inline static int DrawBlock(av7110_t *av7110, u8 windownr, - u16 x, u16 y, u16 dx, u16 dy, u16 color) -{ - return outcom(av7110, COMTYPE_OSD, DBox, 6, - windownr, x, y, dx, dy, color); -} - -inline static int HideWindow(av7110_t *av7110, u8 windownr) -{ - return outcom(av7110, COMTYPE_OSD, WHide, 1, windownr); -} - -inline static int MoveWindowRel(av7110_t *av7110, u8 windownr, u16 x, u16 y) -{ - return outcom(av7110, COMTYPE_OSD, WMoveD, 3, windownr, x, y); -} - -inline static int MoveWindowAbs(av7110_t *av7110, u8 windownr, u16 x, u16 y) -{ - return outcom(av7110, COMTYPE_OSD, WMoveA, 3, windownr, x, y); -} - -inline static int DestroyOSDWindow(av7110_t *av7110, u8 windownr) -{ - return outcom(av7110, COMTYPE_OSD, WDestroy, 1, windownr); -} - -#if 0 -static void DestroyOSDWindows(av7110_t *av7110) -{ - int i; - - for (i=1; i<7; i++) - outcom(av7110, COMTYPE_OSD, WDestroy, 1, i); -} -#endif - -static inline int -CreateOSDWindow(av7110_t *av7110, u8 windownr, - DISPTYPE disptype, u16 width, u16 height) -{ - return outcom(av7110, COMTYPE_OSD, WCreate, 4, - windownr, disptype, width, height); -} - - -static OSDPALTYPE bpp2pal[8]={Pal1Bit, Pal2Bit, 0, Pal4Bit, 0, 0, 0, Pal8Bit}; -static DISPTYPE bpp2bit[8]={BITMAP1, BITMAP2, 0, BITMAP4, 0, 0, 0, BITMAP8}; - -static inline int -LoadBitmap(av7110_t *av7110, u16 format, u16 dx, u16 dy, int inc, u8* data) -{ - int bpp; - int i; - int d, delta; - u8 c; - DECLARE_WAITQUEUE(wait, current); - - if (av7110->bmp_state==BMP_LOADING) { - add_wait_queue(&av7110->bmpq, &wait); - while (1) { - set_current_state(TASK_INTERRUPTIBLE); - if (av7110->bmp_state!=BMP_LOADING - || signal_pending(current)) - break; - schedule(); - } - current->state=TASK_RUNNING; - remove_wait_queue(&av7110->bmpq, &wait); - } - if (av7110->bmp_state==BMP_LOADING) - return -1; - av7110->bmp_state=BMP_LOADING; - if (format==BITMAP8) { bpp=8; delta = 1; } - else if (format==BITMAP4) { bpp=4; delta = 2; } - else if (format==BITMAP2) { bpp=2; delta = 4; } - else if (format==BITMAP1) { bpp=1; delta = 8; } - else { - av7110->bmp_state=BMP_NONE; - return -1; - } - av7110->bmplen= ((dx*dy*bpp+7)&~7)/8; - av7110->bmpp=0; - if (av7110->bmplen>32768) { - av7110->bmp_state=BMP_NONE; - return -1; - } - for (i=0; ibmpbuf+1024+i*dx, data+i*inc, dx)) { - av7110->bmp_state=BMP_NONE; - return -1; - } - } - if (format != BITMAP8) { - for (i=0; ibmpbuf)[1024+i*delta+delta-1]; - for (d=delta-2; d>=0; d--) { - c |= (((u8 *)av7110->bmpbuf)[1024+i*delta+d] - << ((delta-d-1)*bpp)); - ((u8 *)av7110->bmpbuf)[1024+i] = c; - } - } - } - av7110->bmplen+=1024; - return outcom(av7110, COMTYPE_OSD, LoadBmp, 3, format, dx, dy); -} - -static int -BlitBitmap(av7110_t *av7110, u16 win, u16 x, u16 y, u16 trans) -{ - DECLARE_WAITQUEUE(wait, current); - - if (av7110->bmp_state==BMP_NONE) - return -1; - if (av7110->bmp_state==BMP_LOADING) { - add_wait_queue(&av7110->bmpq, &wait); - while (1) { - set_current_state(TASK_INTERRUPTIBLE); - if (av7110->bmp_state!=BMP_LOADING - || signal_pending(current)) - break; - schedule(); - } - current->state=TASK_RUNNING; - remove_wait_queue(&av7110->bmpq, &wait); - } - if (av7110->bmp_state==BMP_LOADED) - return outcom(av7110, COMTYPE_OSD, BlitBmp, 4, win, x, y, trans); - return -1; -} - -static inline int -ReleaseBitmap(av7110_t *av7110) -{ - if (av7110->bmp_state!=BMP_LOADED) - return -1; - av7110->bmp_state=BMP_NONE; - return outcom(av7110, COMTYPE_OSD, ReleaseBmp, 0); -} - -static u32 RGB2YUV(u16 R, u16 G, u16 B) -{ - u16 y, u, v; - u16 Y, Cr, Cb; - - y = R * 77 + G * 150 + B * 29; // Luma=0.299R+0.587G+0.114B 0..65535 - u = 2048+B * 8 -(y>>5); // Cr 0..4095 - v = 2048+R * 8 -(y>>5); // Cb 0..4095 - - Y=y/256; - Cb=u/16; - Cr=v/16; - - return Cr|(Cb<<16)|(Y<<8); -} - -static void -OSDSetColor(av7110_t *av7110, u8 color, u8 r, u8 g, u8 b, u8 blend) -{ - u16 ch, cl; - u32 yuv; - - yuv=blend ? RGB2YUV(r,g,b) : 0; - cl=(yuv&0xffff); - ch=((yuv>>16)&0xffff); - SetColor_(av7110, av7110->osdwin, bpp2pal[av7110->osdbpp[av7110->osdwin]], - color, ch, cl); - SetBlend_(av7110, av7110->osdwin, bpp2pal[av7110->osdbpp[av7110->osdwin]], - color, ((blend>>4)&0x0f)); -} - -static int -OSDSetBlock(av7110_t *av7110, int x0, int y0, int x1, int y1, int inc, u8 *data) -{ - uint w, h, bpp, bpl, size, lpb, bnum, brest; - int i; - - w=x1-x0+1; h=y1-y0+1; - if (inc<=0) - inc=w; - if (w<=0 || w>720 || h<=0 || h>576) - return -1; - bpp=av7110->osdbpp[av7110->osdwin]+1; - bpl=((w*bpp+7)&~7)/8; - size=h*bpl; - lpb=(32*1024)/bpl; - bnum=size/(lpb*bpl); - brest=size-bnum*lpb*bpl; - - for (i=0; iosdbpp[av7110->osdwin]], w, lpb, inc, data); - BlitBitmap(av7110, av7110->osdwin, x0, y0+i*lpb, 0); - data+=lpb*inc; - } - if (brest) { - LoadBitmap(av7110, bpp2bit[av7110->osdbpp[av7110->osdwin]], w, brest/bpl, inc, data); - BlitBitmap(av7110, av7110->osdwin, x0, y0+bnum*lpb, 0); - } - ReleaseBitmap(av7110); - return 0; -} - -static int -OSD_DrawCommand(av7110_t *av7110, osd_cmd_t *dc) -{ - switch (dc->cmd) { - case OSD_Close: - DestroyOSDWindow(av7110, av7110->osdwin); - return 0; - case OSD_Open: - av7110->osdbpp[av7110->osdwin]=(dc->color-1)&7; - CreateOSDWindow(av7110, av7110->osdwin, bpp2bit[av7110->osdbpp[av7110->osdwin]], - dc->x1-dc->x0+1, dc->y1-dc->y0+1); - if (!dc->data) { - MoveWindowAbs(av7110, av7110->osdwin, dc->x0, dc->y0); - SetColorBlend(av7110, av7110->osdwin); - } - return 0; - case OSD_Show: - MoveWindowRel(av7110, av7110->osdwin, 0, 0); - return 0; - case OSD_Hide: - HideWindow(av7110, av7110->osdwin); - return 0; - case OSD_Clear: - DrawBlock(av7110, av7110->osdwin, 0, 0, 720, 576, 0); - return 0; - case OSD_Fill: - DrawBlock(av7110, av7110->osdwin, 0, 0, 720, 576, dc->color); - return 0; - case OSD_SetColor: - OSDSetColor(av7110, dc->color, dc->x0, dc->y0, dc->x1, dc->y1); - return 0; - case OSD_SetPalette: - { - int i, len=dc->x0-dc->color+1; - u8 *colors=(u8 *)dc->data; - - for (i=0; icolor+i, - colors[i*4] , colors[i*4+1], - colors[i*4+2], colors[i*4+3]); - return 0; - } - case OSD_SetTrans: - return 0; - case OSD_SetPixel: - DrawLine(av7110, av7110->osdwin, - dc->x0, dc->y0, 0, 0, - dc->color); - return 0; - case OSD_GetPixel: - return 0; - - case OSD_SetRow: - dc->y1=dc->y0; - case OSD_SetBlock: - OSDSetBlock(av7110, dc->x0, dc->y0, dc->x1, dc->y1, dc->color, dc->data); - return 0; - - case OSD_FillRow: - DrawBlock(av7110, av7110->osdwin, dc->x0, dc->y0, - dc->x1-dc->x0+1, dc->y1, - dc->color); - return 0; - case OSD_FillBlock: - DrawBlock(av7110, av7110->osdwin, dc->x0, dc->y0, - dc->x1-dc->x0+1, dc->y1-dc->y0+1, - dc->color); - return 0; - case OSD_Line: - DrawLine(av7110, av7110->osdwin, - dc->x0, dc->y0, dc->x1-dc->x0, dc->y1-dc->y0, - dc->color); - return 0; - case OSD_Query: - return 0; - case OSD_Test: - return 0; - case OSD_Text: - { - char textbuf[240]; - - if (strncpy_from_user(textbuf, dc->data, 240)<0) - return -EFAULT; - textbuf[239]=0; - if (dc->x1>3) - dc->x1=3; - SetFont(av7110, av7110->osdwin, dc->x1, - (u16) (dc->color&0xffff), (u16) (dc->color>>16)); - FlushText(av7110); - WriteText(av7110, av7110->osdwin, dc->x0, dc->y0, textbuf); - return 0; - } - case OSD_SetWindow: - if (dc->x0<1 || dc->x0>7) - return -EINVAL; - av7110->osdwin=dc->x0; - return 0; - case OSD_MoveWindow: - MoveWindowAbs(av7110, av7110->osdwin, dc->x0, dc->y0); - SetColorBlend(av7110, av7110->osdwin); - return 0; - default: - return -EINVAL; - } -} -#endif /* CONFIG_DVB_AV7110_OSD */ - - -/* get version of the firmware ROM, RTSL, video ucode and ARM application */ - -static void -firmversion(av7110_t *av7110) -{ - u16 buf[20]; - - u16 tag = ((COMTYPE_REQUEST << 8) + ReqVersion); - - RequestParameter(av7110, tag, buf, 16); - - av7110->arm_fw=(buf[0] << 16) + buf[1]; - av7110->arm_rtsl=(buf[2] << 16) + buf[3]; - av7110->arm_vid=(buf[4] << 16) + buf[5]; - av7110->arm_app=(buf[6] << 16) + buf[7]; - av7110->avtype=(buf[8] << 16) + buf[9]; - - printk ("DVB: AV711%d(%d) - firm %08x, rtsl %08x, vid %08x, app %08x\n", - av7110->avtype, av7110->saa->dvb_adapter->num, av7110->arm_fw, - av7110->arm_rtsl, av7110->arm_vid, av7110->arm_app); - - return; -} - -static int -waitdebi(av7110_t *av7110, int adr, int state) -{ - int k; - - for (k=0; k<100; k++, udelay(500)) { - if (irdebi(av7110, DEBINOSWAP, adr, 0, 2) == state) - return 0; - } - return -1; -} - - -static int -load_dram(av7110_t *av7110, u32 *data, int len) -{ - int i; - int blocks, rest; - u32 base, bootblock=BOOT_BLOCK; - - blocks=len/BOOT_MAX_SIZE; - rest=len % BOOT_MAX_SIZE; - base=DRAM_START_CODE; - - for (i=0; i 0) { - if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) - return -1; - if (rest>4) - iwdebi(av7110, DEBISWAB, bootblock, i*(BOOT_MAX_SIZE)+(u32)data, rest); - else - iwdebi(av7110, DEBISWAB, bootblock, i*(BOOT_MAX_SIZE)-4+(u32)data, rest+4); - - iwdebi(av7110, DEBISWAB, BOOT_BASE, swab32(base), 4); - iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, rest, 2); - iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); - } - if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) - return -1; - iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, 0, 2); - iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); - if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BOOT_COMPLETE) < 0) - return -1; - return 0; -} - - -static u8 -bootcode[] = { - 0xea, 0x00, 0x00, 0x0e, 0xe1, 0xb0, 0xf0, 0x0e, /* 0x0000 */ - 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, - 0xe2, 0x5e, 0xf0, 0x08, 0xe2, 0x5e, 0xf0, 0x04, - 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, - 0x2c, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x34, - 0x00, 0x00, 0x00, 0x00, 0xa5, 0xa5, 0x5a, 0x5a, - 0x00, 0x1f, 0x15, 0x55, 0x00, 0x00, 0x00, 0x09, - 0xe5, 0x9f, 0xd0, 0x5c, 0xe5, 0x9f, 0x40, 0x54, /* 0x0040 */ - 0xe3, 0xa0, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x00, - 0xe5, 0x84, 0x00, 0x04, 0xe1, 0xd4, 0x10, 0xb0, - 0xe3, 0x51, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xfc, - 0xe1, 0xa0, 0x10, 0x0d, 0xe5, 0x94, 0x30, 0x04, - 0xe1, 0xd4, 0x20, 0xb2, 0xe2, 0x82, 0x20, 0x3f, - 0xe1, 0xb0, 0x23, 0x22, 0x03, 0xa0, 0x00, 0x02, - 0xe1, 0xc4, 0x00, 0xb0, 0x0a, 0xff, 0xff, 0xf4, - 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, /* 0x0080 */ - 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, - 0xe2, 0x52, 0x20, 0x01, 0x1a, 0xff, 0xff, 0xf9, - 0xe2, 0x2d, 0xdb, 0x05, 0xea, 0xff, 0xff, 0xec, - 0x2c, 0x00, 0x03, 0xf8, 0x2c, 0x00, 0x04, 0x00, -}; - -#include "av7110_firm.h" - -static int -bootarm(av7110_t *av7110) -{ - u32 ret; - int i; - - setgpio(av7110, RESET_LINE, GPIO_OUTLO); - - /* Disable DEBI and GPIO irq */ - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) & - ~(MASK_19 | MASK_03)); - saa7146_write(av7110->saa_mem, ISR, (MASK_19 | MASK_03)); - - /* enable DEBI */ - saa7146_write(av7110->saa_mem, MC1, 0x08800880); - saa7146_write(av7110->saa_mem, DD1_STREAM_B, 0x00000000); - saa7146_write(av7110->saa_mem, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); - - /* test DEBI */ - iwdebi(av7110, DEBISWAP, DPRAM_BASE, 0x76543210, 4); - if ((ret=irdebi(av7110, DEBINOSWAP, DPRAM_BASE, 0, 4))!=0x10325476) { - printk("dvb: debi test in bootarm() failed: " - "%08x != %08x\n", ret, 0x10325476);; - return -1; - } - for (i=0; i<8192; i+=4) - iwdebi(av7110, DEBISWAP, DPRAM_BASE+i, 0x00, 4); - dprintk("bootarm: debi test OK\n");; - - /* boot */ - dprintk("bootarm: load boot code\n"); - - setgpio(av7110, ARM_IRQ_LINE, GPIO_IRQLO); - //setgpio(av7110, DEBI_DONE_LINE, GPIO_INPUT); - //setgpio(av7110, 3, GPIO_INPUT); - - iwdebi(av7110, DEBISWAB, DPRAM_BASE, (u32) bootcode, sizeof(bootcode)); - iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); - - wait_for_debi_done(av7110); - setgpio(av7110, RESET_LINE, GPIO_OUTHI); - current->state=TASK_INTERRUPTIBLE; - schedule_timeout(HZ); - - dprintk("bootarm: load dram code\n"); - - if (load_dram(av7110, (u32 *)Root, sizeof(Root))<0) - return -1; - - setgpio(av7110, RESET_LINE, GPIO_OUTLO); - mdelay(1); - - dprintk("bootarm: load dpram code\n"); - - iwdebi(av7110, DEBISWAB, DPRAM_BASE, (u32) Dpram, sizeof(Dpram)); - - wait_for_debi_done(av7110); - - setgpio(av7110, RESET_LINE, GPIO_OUTHI); - mdelay(800); - - //ARM_ClearIrq(av7110); - ARM_ResetMailBox(av7110); - saa7146_write(av7110->saa_mem, ISR, (MASK_19 | MASK_03)); - saa7146_write(av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) | MASK_03 ); - - av7110->arm_errors=0; - av7110->arm_ready=1; - return 0; -} - -static inline int -SetPIDs(av7110_t *av7110, u16 vpid, u16 apid, u16 ttpid, - u16 subpid, u16 pcrpid) -{ - if (vpid == 0x1fff || apid == 0x1fff || - ttpid == 0x1fff || subpid == 0x1fff || pcrpid == 0x1fff) - vpid = apid = ttpid = subpid = pcrpid = 0; - - return outcom(av7110, COMTYPE_PIDFILTER, MultiPID, 5, - pcrpid, vpid, apid, ttpid, subpid); -} - -static void -ChangePIDs(av7110_t *av7110, u16 vpid, u16 apid, u16 ttpid, - u16 subpid, u16 pcrpid) -{ - if (down_interruptible(&av7110->pid_mutex)) - return; - - if (!(vpid&0x8000)) av7110->pids[DMX_PES_VIDEO]=vpid; - if (!(apid&0x8000)) av7110->pids[DMX_PES_AUDIO]=apid; - if (!(ttpid&0x8000)) av7110->pids[DMX_PES_TELETEXT]=ttpid; - if (!(pcrpid&0x8000)) av7110->pids[DMX_PES_PCR]=pcrpid; - - av7110->pids[DMX_PES_SUBTITLE]=0; - - if (av7110->fe_synced) - SetPIDs(av7110, vpid, apid, ttpid, subpid, pcrpid); - - up(&av7110->pid_mutex); -} - - -static void -SetMode(av7110_t *av7110, int mode) -{ - outcom(av7110, COMTYPE_ENCODER, LoadVidCode, 1, mode); - - if (!av7110->playing) { - ChangePIDs(av7110, av7110->pids[DMX_PES_VIDEO], - av7110->pids[DMX_PES_AUDIO], - av7110->pids[DMX_PES_TELETEXT], - 0, av7110->pids[DMX_PES_PCR]); - outcom(av7110, COMTYPE_PIDFILTER, Scan, 0); - } -} - -inline static void -TestMode(av7110_t *av7110, int mode) -{ - outcom(av7110, COMTYPE_ENCODER, SetTestMode, 1, mode); -} - -inline static void -VidMode(av7110_t *av7110, int mode) -{ - outcom(av7110, COMTYPE_ENCODER, SetVidMode, 1, mode); -} - - -static inline int -vidcom(av7110_t *av7110, u32 com, u32 arg) -{ - return outcom(av7110, 0x80, 0x02, 4, - (com>>16), (com&0xffff), - (arg>>16), (arg&0xffff)); -} - -static inline int -audcom(av7110_t *av7110, u32 com) -{ - return outcom(av7110, 0x80, 0x03, 4, - (com>>16), (com&0xffff)); -} - -inline static void -Set22K(av7110_t *av7110, int state) -{ - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) - outcom(av7110, COMTYPE_AUDIODAC, (state ? ON22K : OFF22K), 0); - if (av7110->saa->card_type==DVB_CARD_TT_BUDGET) - setgpio(av7110, 3, (state ? GPIO_OUTHI : GPIO_OUTLO)); -} - - -/* Diseqc functions only for TT Budget card */ -/* taken from the Skyvision DVB driver by - Ralph Metzler */ - - -inline static void -DiseqcSendBit(av7110_t *av7110, int data) -{ - setgpio(av7110, 3, GPIO_OUTHI); - udelay(data ? 500 : 1000); - setgpio(av7110, 3, GPIO_OUTLO); - udelay(data ? 1000 : 500); -} - -static void -DiseqcSendByte(av7110_t *av7110, int data) -{ - int i, par=1, d; - - for (i=7; i>=0; i--) - { - d=(data>>i)&1; - par^=d; - DiseqcSendBit(av7110, d); - } - DiseqcSendBit(av7110, par); -} - -inline static int -SendDiSEqCMsg(av7110_t *av7110, int len, u8 *msg, int burst) -{ - int i; - - switch (av7110->saa->card_type) { - case DVB_CARD_TT_SIEMENS: - { - u16 buf[18] = { ((COMTYPE_AUDIODAC << 8) + SendDiSEqC), - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - if (len>10) - len=10; - buf[1] = len+2; - buf[2] = len; - - if (burst!=-1) - buf[3]=burst ? 0x01 : 0x00; - - else - buf[3]=0xffff; - - for (i=0; isaa->i2c_bus; - struct i2c_msg msgs; - - msgs.flags=0; - msgs.addr=id/2; - msgs.len=2; - msgs.buf=msg; - return i2c->xfer (i2c, &msgs, 1); -} - -static inline int -msp_writereg(av7110_t *av7110, u8 dev, u16 reg, u16 val) -{ - u8 msg[5]={ dev, reg>>8, reg&0xff, val>>8 , val&0xff }; - struct dvb_i2c_bus *i2c = av7110->saa->i2c_bus; - struct i2c_msg msgs; - - msgs.flags=0; - msgs.addr=0x40; - msgs.len=5; - msgs.buf=msg; - return i2c->xfer(i2c, &msgs, 1); -} - -static inline u8 -i2c_readreg(av7110_t *av7110, u8 id, u8 reg) -{ - struct dvb_i2c_bus *i2c = av7110->saa->i2c_bus; - u8 mm1[] = {0x00}; - u8 mm2[] = {0x00}; - struct i2c_msg msgs[2]; - - msgs[0].flags=0; - msgs[1].flags=I2C_M_RD; - msgs[0].addr=msgs[1].addr=id/2; - mm1[0]=reg; - msgs[0].len=1; msgs[1].len=1; - msgs[0].buf=mm1; msgs[1].buf=mm2; - i2c->xfer(i2c, msgs, 2); - - return mm2[0]; -} - - -/**************************************************************************** - * I/O buffer management and control - ****************************************************************************/ - -static int sw2mode[16] = { - VIDEO_MODE_PAL, VIDEO_MODE_NTSC, VIDEO_MODE_NTSC, VIDEO_MODE_PAL, - VIDEO_MODE_NTSC, VIDEO_MODE_NTSC, VIDEO_MODE_PAL, VIDEO_MODE_NTSC, - VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, - VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, -}; - -static void -get_video_format(av7110_t *av7110, u8 *buf, int count) -{ - int i; - int hsize,vsize; - int sw; - u8 *p; - - if (av7110->sinfo) - return; - for (i=7; i> 4) | (p[0] << 4); - vsize = ((p[1] &0x0F) << 8) | (p[2]); - sw = (p[3]&0x0F); - SetMode(av7110, sw2mode[sw]); - dprintk("dvb: playback %dx%d fr=%d\n", hsize, vsize, sw); - av7110->sinfo=1; - break; - } -} - -static void -play_video_cb(u8 *buf, int count, void *priv) -{ - av7110_t *av7110=(av7110_t *) priv; - - if ((buf[3]&0xe0)==0xe0) { - get_video_format(av7110, buf, count); - ring_buffer_write(&av7110->avout, buf, count, 0, 0); - } else - ring_buffer_write(&av7110->aout, buf, count, 0, 0); -} - -static void -play_audio_cb(u8 *buf, int count, void *priv) -{ - av7110_t *av7110=(av7110_t *) priv; - - ring_buffer_write(&av7110->aout, buf, count, 0, 0); -} - -#define FREE_COND (ring_buffer_free(&av7110->avout)>=20*1024 && ring_buffer_free(&av7110->aout)>=20*1024) - -static ssize_t -dvb_play(av7110_t *av7110, const u8 *buf, - unsigned long count, int nonblock, int type, int umem) -{ - unsigned long todo = count, n; - - if (!av7110->kbuf[type]) - return -ENOBUFS; - - if (nonblock && !FREE_COND) - return -EWOULDBLOCK; - - while (todo>0) { - if (!FREE_COND) { - if (nonblock) - return count-todo; - if (wait_event_interruptible(av7110->avout.queue, - FREE_COND)) - return count-todo; - } - n=todo; - if (n>IPACKS*2) - n=IPACKS*2; - if (umem) { - if (copy_from_user(av7110->kbuf[type], buf, n)) - return -EFAULT; - dvb_filter_instant_repack(av7110->kbuf[type], n, - &av7110->ipack[type]); - } else { - dvb_filter_instant_repack((u8 *)buf, n, - &av7110->ipack[type]); - } - todo -= n; - buf += n; - } - return count-todo; -} - -static ssize_t -dvb_aplay(av7110_t *av7110, const u8 *buf, - unsigned long count, int nonblock, int type) -{ - unsigned long todo = count, n; - - if (!av7110->kbuf[type]) - return -ENOBUFS; - if (nonblock && ring_buffer_free(&av7110->aout)<20*1024) - return -EWOULDBLOCK; - - while (todo>0) { - if (ring_buffer_free(&av7110->aout)<20*1024) { - if (nonblock) - return count-todo; - if (wait_event_interruptible(av7110->aout.queue, - (ring_buffer_free(&av7110->aout)>= - 20*1024))) - return count-todo; - } - n=todo; - if (n>IPACKS*2) - n=IPACKS*2; - if (copy_from_user(av7110->kbuf[type], buf, n)) - return -EFAULT; - dvb_filter_instant_repack(av7110->kbuf[type], n, - &av7110->ipack[type]); -// memcpy(dvb->kbuf[type], buf, n); - todo -= n; - buf += n; - } - return count-todo; -} - -void init_p2t(p2t_t *p, struct dvb_demux_feed *feed) -{ - memset(p->pes,0,TS_SIZE); - p->counter = 0; - p->pos = 0; - p->frags = 0; - if (feed) p->feed = feed; -} - -void clear_p2t(p2t_t *p) -{ - memset(p->pes,0,TS_SIZE); -// p->counter = 0; - p->pos = 0; - p->frags = 0; -} - - -long int find_pes_header(u8 const *buf, long int length, int *frags) -{ - int c = 0; - int found = 0; - - *frags = 0; - - while (c < length-3 && !found) { - if (buf[c] == 0x00 && buf[c+1] == 0x00 && - buf[c+2] == 0x01) { - switch ( buf[c+3] ) { - - case PROG_STREAM_MAP: - case PRIVATE_STREAM2: - case PROG_STREAM_DIR: - case ECM_STREAM : - case EMM_STREAM : - case PADDING_STREAM : - case DSM_CC_STREAM : - case ISO13522_STREAM: - case PRIVATE_STREAM1: - case AUDIO_STREAM_S ... AUDIO_STREAM_E: - case VIDEO_STREAM_S ... VIDEO_STREAM_E: - found = 1; - break; - - default: - c++; - break; - } - } else c++; - } - if (c == length-3 && !found){ - if (buf[length-1] == 0x00) *frags = 1; - if (buf[length-2] == 0x00 && - buf[length-1] == 0x00) *frags = 2; - if (buf[length-3] == 0x00 && - buf[length-2] == 0x00 && - buf[length-1] == 0x01) *frags = 3; - return -1; - } - - return c; -} - -void pes_to_ts( u8 const *buf, long int length, u16 pid, p2t_t *p) -{ - int c,c2,l,add; - int check,rest; - - c = 0; - c2 = 0; - if (p->frags){ - check = 0; - switch(p->frags){ - case 1: - if ( buf[c] == 0x00 && buf[c+1] == 0x01 ){ - check = 1; - c += 2; - } - break; - case 2: - if ( buf[c] == 0x01 ){ - check = 1; - c++; - } - break; - case 3: - check = 1; - } - if(check){ - switch ( buf[c] ) { - - case PROG_STREAM_MAP: - case PRIVATE_STREAM2: - case PROG_STREAM_DIR: - case ECM_STREAM : - case EMM_STREAM : - case PADDING_STREAM : - case DSM_CC_STREAM : - case ISO13522_STREAM: - case PRIVATE_STREAM1: - case AUDIO_STREAM_S ... AUDIO_STREAM_E: - case VIDEO_STREAM_S ... VIDEO_STREAM_E: - p->pes[0] = 0x00; - p->pes[1] = 0x00; - p->pes[2] = 0x01; - p->pes[3] = buf[c]; - p->pos=4; - memcpy(p->pes+p->pos,buf+c,(TS_SIZE-4)-p->pos); - c += (TS_SIZE-4)-p->pos; - p_to_t(p->pes,(TS_SIZE-4),pid,&p->counter, - p->feed); - clear_p2t(p); - break; - - default: - c=0; - break; - } - } - p->frags = 0; - } - - if (p->pos){ - c2 = find_pes_header(buf+c,length-c,&p->frags); - if (c2 >= 0 && c2 < (TS_SIZE-4)-p->pos){ - l = c2+c; - } else l = (TS_SIZE-4)-p->pos; - memcpy(p->pes+p->pos,buf,l); - c += l; - p->pos += l; - p_to_t(p->pes,p->pos,pid,&p->counter, p->feed); - clear_p2t(p); - } - - add = 0; - while (c < length){ - c2 = find_pes_header(buf+c+add,length-c-add,&p->frags); - if (c2 >= 0) { - c2 += c+add; - if (c2 > c){ - p_to_t(buf+c,c2-c,pid,&p->counter, - p->feed); - c = c2; - clear_p2t(p); - add = 0; - } else add = 1; - } else { - l = length-c; - rest = l % (TS_SIZE-4); - l -= rest; - p_to_t(buf+c,l,pid,&p->counter, - p->feed); - memcpy(p->pes,buf+c+l,rest); - p->pos = rest; - c = length; - } - } -} - - -int write_ts_header2(u16 pid, u8 *counter, int pes_start, u8 *buf, u8 length) -{ - int i; - int c = 0; - int fill; - u8 tshead[4] = { 0x47, 0x00, 0x00, 0x10}; - - - fill = (TS_SIZE-4)-length; - if (pes_start) tshead[1] = 0x40; - if (fill) tshead[3] = 0x30; - tshead[1] |= (u8)((pid & 0x1F00) >> 8); - tshead[2] |= (u8)(pid & 0x00FF); - tshead[3] |= ((*counter)++ & 0x0F) ; - memcpy(buf,tshead,4); - c+=4; - - - if (fill){ - buf[4] = fill-1; - c++; - if (fill >1){ - buf[5] = 0x00; - c++; - } - for ( i = 6; i < fill+4; i++){ - buf[i] = 0xFF; - c++; - } - } - - return c; -} - - -void p_to_t(u8 const *buf, long int length, u16 pid, u8 *counter, - struct dvb_demux_feed *feed) -{ - - int l, pes_start; - u8 obuf[TS_SIZE]; - long int c = 0; - - pes_start = 0; - if ( length > 3 && - buf[0] == 0x00 && buf[1] == 0x00 && buf[2] == 0x01 ) - switch (buf[3]){ - case PROG_STREAM_MAP: - case PRIVATE_STREAM2: - case PROG_STREAM_DIR: - case ECM_STREAM : - case EMM_STREAM : - case PADDING_STREAM : - case DSM_CC_STREAM : - case ISO13522_STREAM: - case PRIVATE_STREAM1: - case AUDIO_STREAM_S ... AUDIO_STREAM_E: - case VIDEO_STREAM_S ... VIDEO_STREAM_E: - pes_start = 1; - break; - - default: - break; - } - - while ( c < length ){ - memset(obuf,0,TS_SIZE); - if (length - c >= (TS_SIZE-4)){ - l = write_ts_header2(pid, counter, pes_start - , obuf, (TS_SIZE-4)); - memcpy(obuf+l, buf+c, TS_SIZE-l); - c += TS_SIZE-l; - } else { - l = write_ts_header2(pid, counter, pes_start - , obuf, length-c); - memcpy(obuf+l, buf+c, TS_SIZE-l); - c = length; - } - feed->cb.ts(obuf, 188, 0, 0, &feed->feed.ts, DMX_OK); - pes_start = 0; - } -} - - -/**************************************************************************** - * V4L SECTION - ****************************************************************************/ - -static int dvb_do_ioctl (struct inode *inode, struct file *file, - unsigned int cmd, void *arg) -{ - struct video_device *dev = video_devdata (file); - av7110_t *av7110 = dev->priv; - - switch (cmd) { - case VIDIOCGCAP: - { - struct video_capability *b = arg; - - dprintk(KERN_ERR "dvb: VIDIOCGCAP called\n"); - - strcpy(b->name, &dev->name[0]); - - b->type = av7110->video.type; - - b->channels = 1; - b->audios = 2; - b->maxwidth = 768; - b->maxheight = 576; - b->minwidth = 32; - b->minheight = 32; - - return 0; - } - - case VIDIOCGCHAN: - { - static const - struct video_channel dvb_chan = { 0, "DVB", 1, 3, 1, 1 }; - struct video_channel *v = arg; - - dprintk(KERN_ERR "dvb: VIDIOCGCHAN called\n"); - - memcpy(v, &dvb_chan, sizeof(struct video_channel)); - - return 0; - - } - - case VIDIOCSCHAN: - { - struct video_channel *v = arg; - - dprintk(KERN_ERR "dvb: VIDIOCSCHAN called\n"); - - if (v->channel>0) - return -EINVAL; - - if (v->norm > 1) - return -EOPNOTSUPP; - - av7110->vidmode = v->norm; - SetMode(av7110, v->norm); - av7110->saa->mode = v->norm; - return 0; - } - - case VIDIOCGTUNER: - { - struct video_tuner *v = arg; - - dprintk(KERN_ERR "dvb: VIDIOCGTUNER called\n"); - - /* only channel 0 has a tuner */ - if(!v->tuner) - return -EINVAL; - - /* fill the structure */ - strcpy(v->name, "DVB"); - v->rangelow = 0x00000000; - v->rangehigh = 0xffffffff; - - v->flags= VIDEO_TUNER_PAL | VIDEO_TUNER_NTSC; - v->mode = av7110->vidmode; - - /* fixme: fill in signal strength here */ - v->signal = 0xffff; - - return 0; - } - - case VIDIOCSTUNER: - { - struct video_tuner *v = arg; - - dprintk(KERN_ERR "dvb: VIDIOCSTUNER called\n"); - - /* only channel 0 has a tuner */ - if (!v->tuner) - return -EINVAL; - - /* check if format is supported */ - if(v->mode != VIDEO_MODE_PAL && v->mode != VIDEO_MODE_NTSC - /* && v->mode != VIDEO_MODE_SECAM */ ) - return -EOPNOTSUPP; - - av7110->vidmode = v->mode; - SetMode(av7110, v->mode); - - return 0; - } - - case VIDIOCGPICT: - { - struct video_picture *p = arg; - - dprintk(KERN_ERR "dvb: VIDIOCGPICT called\n"); - - saacomm(SAA7146_V4L_GPICT, p); - - dprintk("dvb: VIDIOCGPICT called: b:%d c:%d s:%d d:%d p:%d\n", - p->brightness, p->contrast, p->colour, - p->depth, p->palette); - - return 0; - } - - case VIDIOCSPICT: - { - struct video_picture *p = arg; - - dprintk("dvb: VIDIOCSPICT called: b:%d c:%d s:%d d:%d p:%d\n", - p->brightness, p->contrast, p->colour, - p->depth, p->palette); - - switch (p->palette) { - case VIDEO_PALETTE_RGB555: - case VIDEO_PALETTE_RGB565: - case VIDEO_PALETTE_RGB24: - case VIDEO_PALETTE_RGB32: - case VIDEO_PALETTE_UYVY: - case VIDEO_PALETTE_YUV422P: - case VIDEO_PALETTE_YUV420P: - case VIDEO_PALETTE_YUV411P: - break; - default: - return -EINVAL; - } - - saacomm(SAA7146_V4L_SPICT, p); - - return 0; - - } - - case VIDIOCSWIN: - { - struct video_window *w = arg; - - dprintk("dvb: VIDIOCSWIN called: " - "clips: %d, x:%d, y:%d, h:%d, w:%d\n", - w->clipcount, w->x, w->y, w->height, w->width); - - saacomm(SAA7146_V4L_SWIN, w); - - return 0; - } - - case VIDIOCGWIN: - { - dprintk(KERN_ERR "dvb: VIDIOCGWIN called\n"); - return 0; - } - - case VIDIOCCAPTURE: - { - int *v = arg; - - dprintk("dvb: VIDIOCCAPTURE called, mode:%d (0=disable)\n", *v); - - saacomm(SAA7146_V4L_CCAPTURE, v); - - return 0; - } - - case VIDIOCGFBUF: - { - struct video_buffer *b = arg; - - dprintk(KERN_ERR "dvb: VIDIOCGFBUF called\n"); - - saacomm(SAA7146_V4L_GFBUF, b); - - return 0; - - } - - case VIDIOCSFBUF: - { - struct video_buffer *b = arg; - u32 vid = (vidmem << 16) | vidlow; - - /* see if vidmem-override is requested */ - if (vidmem) { - printk ("dvb: video-memory-override. (0x%08x)\n", vid); - b->base = (void*) vid; - } - - saacomm(SAA7146_V4L_SFBUF, b); - - dprintk(KERN_ERR "dvb: VIDIOCSFBUF called\n"); - - return 0; - } - - /* Video key event - to dev 255 is to all - - * cuts capture on all DMA windows with this key (0xFFFFFFFF == all) - */ - case VIDIOCKEY: - { - dprintk(KERN_ERR "dvb: VIDIOCKEY called\n"); - return 0; - } - - case VIDIOCGAUDIO: - { - struct video_audio *v = arg; - - v->flags = VIDEO_AUDIO_MUTABLE; - /* let's auto-detect */ - return 0; - } - - case VIDIOCSAUDIO: - { - //struct video_audio *v; - return 0; - } - - case VIDIOCSYNC: - { - int i = 0; - int *frame = (int*) arg; - - dprintk ("dvb: VIDIOCSYNC called - frame: %d\n", *frame); - - /* simply pass the requested frame-number to the corresponding - saa7146-function ... */ - i = saacomm(SAA7146_V4L_CSYNC, frame); - - dprintk ("dvb: VIDIOCSYNC done - frame: %d\n", *frame); - - return i; - } - - case VIDIOCMCAPTURE: - { - struct video_mmap *vm = arg; - int i = 0; - - dprintk(KERN_ERR "dvb: VIDIOCMCAPTURE called: fr:%d," - "fmt:%d, w:%d, h:%d\n", - vm->frame, vm->format, vm->width, vm->height); - - switch (vm->format) { - case VIDEO_PALETTE_YUV422P: - case VIDEO_PALETTE_YUV420P: - case VIDEO_PALETTE_YUV411P: - return -EINVAL; - } - - /* simply pass the structure for the requested frame-number - to the corresponding saa7146-function ... */ - i = saacomm(SAA7146_V4L_CMCAPTURE, vm); - - return i; - } - - case VIDIOCGMBUF: - { - struct video_mbuf *mbuf = arg; - dprintk(KERN_ERR "dvb: VIDIOCGMBUF called\n"); - saacomm(SAA7146_V4L_GMBUF, mbuf); - return 0; - - } - - case VIDIOCGUNIT: - { - /*struct video_unit vu;*/ - dprintk(KERN_ERR "dvb: VIDIOCGUNIT called\n"); - return 0; - } - - case VIDIOCGCAPTURE: - { - dprintk(KERN_ERR "dvb: VIDIOCGCAPTURE called\n"); - return 0; - } - case VIDIOCSCAPTURE: - { - dprintk(KERN_ERR "dvb: VIDIOCSCAPTURE called\n"); - return 0; - } - - default: - return -ENOIOCTLCMD; - } - - return 0; -} - - -static int dvb_ioctl (struct inode *inode, struct file *file, - unsigned int cmd, unsigned long arg) -{ - return video_usercopy(inode, file, cmd, arg, dvb_do_ioctl); -} - - -static int dvb_mmap(struct file* file, struct vm_area_struct *vma) -{ - struct video_device *dev = video_devdata (file); - av7110_t *av7110 = dev->priv; - - dprintk(KERN_ERR "av7110: dvb_mmap called, adr:%08lx, size:0x%08lx\n", - vma->vm_start, vma->vm_end - vma->vm_start); - - if (saacomm(SAA7146_DO_MMAP, vma)) { - printk(KERN_ERR "av7110: dvb_mmap failed!\n"); - return -1; - } - - return 0; -} - - -static unsigned int dvb_audio_poll(struct file *file, poll_table *wait) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - unsigned int mask=0; - - if (av7110->playing) { - if (ring_buffer_free(&av7110->aout)>20*1024) - return (POLLOUT | POLLWRNORM); - - poll_wait(file, &av7110->aout.queue, wait); - - if (ring_buffer_free(&av7110->aout)>20*1024) - mask |= (POLLOUT | POLLWRNORM); - } else /* if not playing: may play if asked for */ - mask = (POLLOUT | POLLWRNORM); - - return mask; -} - - -static struct file_operations dvb_fops = { - .ioctl = dvb_ioctl, - .mmap = dvb_mmap, - .llseek = no_llseek -}; - - -/* template for video_device-structure */ -static struct video_device dvb_template = { - .owner = THIS_MODULE, - .name = "DVB Board", - .type = VID_TYPE_TUNER | - VID_TYPE_CAPTURE | - VID_TYPE_OVERLAY | - VID_TYPE_CLIPPING | - VID_TYPE_FRAMERAM | - VID_TYPE_SCALES, - .hardware = VID_HARDWARE_SAA7146, - .fops = &dvb_fops -}; - - -static int vid_register(av7110_t *av7110) -{ - memcpy( &av7110->video, &dvb_template, sizeof(struct video_device)); - - av7110->video.priv = av7110; - - if (video_register_device(&av7110->video, VFL_TYPE_GRABBER, -1)) { - printk(KERN_ERR "dvb: can't register videodevice\n"); - return -1; - } - - return 0; -} - -static inline int vid_unregister(av7110_t *av7110) -{ - if (av7110->video.minor != -1) - video_unregister_device(&av7110->video); - - return 0; -} - -/**************************************************************************** - * END OF V4L SECTION - ****************************************************************************/ - - -/**************************************************************************** - * DVB API SECTION - ****************************************************************************/ - - -/****************************************************************************** - * hardware filter functions - ******************************************************************************/ - -static int -StartHWFilter(struct dvb_demux_filter *dvbdmxfilter) -{ - struct dvb_demux_feed *dvbdmxfeed=dvbdmxfilter->feed; - av7110_t *av7110=(av7110_t *) dvbdmxfeed->demux->priv; - u16 buf[20]; - int ret, i; - u16 handle; -// u16 mode=0x0320; - u16 mode=0xb96a; - - if (dvbdmxfilter->type==DMX_TYPE_SEC) { - buf[4]=(dvbdmxfilter->filter.filter_value[0]<<8)| - dvbdmxfilter->maskandmode[0]; - for (i=3; i<18; i++) - buf[i+4-2]=(dvbdmxfilter->filter.filter_value[i]<<8)| - dvbdmxfilter->maskandmode[i]; - mode=4; - } else - if ((dvbdmxfeed->ts_type & TS_PACKET) && - !(dvbdmxfeed->ts_type & TS_PAYLOAD_ONLY)) - init_p2t(&av7110->p2t_filter[dvbdmxfilter->index], dvbdmxfeed); - - buf[0] = (COMTYPE_PID_FILTER << 8) + AddPIDFilter; - buf[1] = 16; - buf[2] = dvbdmxfeed->pid; - buf[3] = mode; - - ret=CommandRequest(av7110, buf, 20, &handle, 1); - if (ret<0) - return ret; - - av7110->handle2filter[handle]=dvbdmxfilter; - dvbdmxfilter->hw_handle=handle; - - return ret; -} - -static int -StopHWFilter(struct dvb_demux_filter *dvbdmxfilter) -{ - av7110_t *av7110=(av7110_t *) dvbdmxfilter->feed->demux->priv; - u16 buf[3]; - u16 answ[2]; - int ret; - u16 handle; - - handle=dvbdmxfilter->hw_handle; - if (handle >= MAXFILT) { - dprintk("dvb: StopHWFilter tried to stop invalid filter %d.\n", - handle); - dprintk("dvb: filter type = %d\n", dvbdmxfilter->type); - return 0; - } - - av7110->handle2filter[handle]=NULL; - - buf[0] = (COMTYPE_PID_FILTER << 8) + DelPIDFilter; - buf[1] = 1; - buf[2] = handle; - ret=CommandRequest(av7110, buf, 3, answ, 2); - - if (answ[1] != handle) { - dprintk("dvb: filter %d shutdown error :%d\n", handle, answ[1]); - ret=-1; - } - return ret; -} - - -static int -dvb_write_to_decoder(struct dvb_demux_feed *dvbdmxfeed, u8 *buf, size_t count) -{ - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - av7110_t *av7110=(av7110_t *) dvbdmx->priv; - ipack *ipack=&av7110->ipack[dvbdmxfeed->pes_type]; - - switch (dvbdmxfeed->pes_type) { - case 0: - if (av7110->audiostate.stream_source==AUDIO_SOURCE_MEMORY) { - return -EINVAL; - } - break; - case 1: - if (av7110->videostate.stream_source==VIDEO_SOURCE_MEMORY) { - return -EINVAL; - } - break; - default: - return -1; - } - - if (!(buf[3]&0x10)) { // no payload? - return -1; - } - if (buf[1]&0x40) - dvb_filter_ipack_flush(ipack); - - if (buf[3]&0x20) { // adaptation field? - count-=buf[4]+1; - buf+=buf[4]+1; - if (!count) { - return 0; - } - } - - dvb_filter_instant_repack(buf+4, count-4, - &av7110->ipack[dvbdmxfeed->pes_type]); - return 0; -} - -static void -dvb_feed_start_pid(struct dvb_demux_feed *dvbdmxfeed) -{ - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - av7110_t *av7110=(av7110_t *) dvbdmx->priv; - u16 *pid=dvbdmx->pids, npids[5]; - int i; - - npids[0]=npids[1]=npids[2]=npids[3]=0xffff; - npids[4]=0xffff; - i=dvbdmxfeed->pes_type; - npids[i]=(pid[i]&0x8000) ? 0 : pid[i]; - if ((i==2) && npids[i] && (dvbdmxfeed->ts_type & TS_PACKET)) { - npids[i]=0; - ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); - StartHWFilter(dvbdmxfeed->filter); - return; - } - if (dvbdmxfeed->pes_type<=2) - ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); - - if (dvbdmxfeed->pes_type<2 && npids[0]) - if (av7110->fe_synced) - outcom(av7110, COMTYPE_PIDFILTER, Scan, 0); - - if ((dvbdmxfeed->ts_type & TS_PACKET)) { - if (dvbdmxfeed->pes_type == 0 && - !(dvbdmx->pids[0]&0x8000)) - AV_StartRecord(av7110, RP_AUDIO, - dvbdmxfeed); - if (dvbdmxfeed->pes_type == 1 && - !(dvbdmx->pids[1]&0x8000)) - AV_StartRecord(av7110, RP_VIDEO, - dvbdmxfeed); - } -} - -static void -dvb_feed_stop_pid(struct dvb_demux_feed *dvbdmxfeed) -{ - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - av7110_t *av7110=(av7110_t *) dvbdmx->priv; - u16 *pid=dvbdmx->pids, npids[5]; - int i; - - if (dvbdmxfeed->pes_type<=1) { - AV_Stop(av7110, dvbdmxfeed->pes_type ? - RP_VIDEO : RP_AUDIO); - if (!av7110->rec_mode) - dvbdmx->recording=0; - if (!av7110->playing) - dvbdmx->playing=0; - } - npids[0]=npids[1]=npids[2]=npids[3]=0xffff; - npids[4]=0xffff; - i=dvbdmxfeed->pes_type; - switch (i) { - case 2: //teletext - if (dvbdmxfeed->ts_type & TS_PACKET) - StopHWFilter(dvbdmxfeed->filter); - npids[2]=0; - break; - case 0: - case 1: - case 4: - if (!pids_off) - return; - npids[i]=(pid[i]&0x8000) ? 0 : pid[i]; - break; - } - ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); -} - -static int -dvb_start_feed(struct dvb_demux_feed *dvbdmxfeed) -{ - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - av7110_t *av7110=(av7110_t *) dvbdmx->priv; - - if (!dvbdmx->dmx.frontend) - return -EINVAL; - - if (av7110->saa->card_type>=DVB_CARD_TT_BUDGET) - return TTBStart(av7110); - - if (dvbdmxfeed->pid>0x1fff) - return -1; - - if (dvbdmxfeed->type == DMX_TYPE_TS) { - if ((dvbdmxfeed->ts_type & TS_DECODER) - && (dvbdmxfeed->pes_typedmx.frontend->source) { - case DMX_MEMORY_FE: - if (dvbdmxfeed->ts_type & TS_DECODER) - if (dvbdmxfeed->pes_type<2 && - !(dvbdmx->pids[0]&0x8000) && - !(dvbdmx->pids[1]&0x8000)) { - ring_buffer_flush(&av7110->avout); - ring_buffer_flush(&av7110->aout); - AV_StartPlay(av7110,RP_AV); - dvbdmx->playing=1; - } - break; - default: - dvb_feed_start_pid(dvbdmxfeed); - break; - } - } else - if ((dvbdmxfeed->ts_type & TS_PACKET) && - (dvbdmx->dmx.frontend->source!=DMX_MEMORY_FE)) - StartHWFilter(dvbdmxfeed->filter); - } - - if (dvbdmxfeed->type == DMX_TYPE_SEC) { - int i; - - for (i=0; ifilternum; i++) { - if (dvbdmx->filter[i].state!=DMX_STATE_READY) - continue; - if (dvbdmx->filter[i].type!=DMX_TYPE_SEC) - continue; - if (dvbdmx->filter[i].filter.parent!=&dvbdmxfeed->feed.sec) - continue; - dvbdmx->filter[i].state=DMX_STATE_GO; - if (dvbdmx->dmx.frontend->source!=DMX_MEMORY_FE) - StartHWFilter(&dvbdmx->filter[i]); - } - } - return 0; -} - - -static int -dvb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) -{ - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - av7110_t *av7110=(av7110_t *) dvbdmx->priv; - - if (av7110->saa->card_type>=DVB_CARD_TT_BUDGET) - return TTBStop(av7110); - - if (dvbdmxfeed->type == DMX_TYPE_TS) { - if (dvbdmxfeed->ts_type & TS_DECODER) { - if (dvbdmxfeed->pes_type>=DMX_TS_PES_OTHER || - !dvbdmx->pesfilter[dvbdmxfeed->pes_type]) - return -EINVAL; - dvbdmx->pids[dvbdmxfeed->pes_type]|=0x8000; - dvbdmx->pesfilter[dvbdmxfeed->pes_type]=0; - } - if (dvbdmxfeed->ts_type & TS_DECODER && - (dvbdmxfeed->pes_typets_type & TS_PACKET) && - (dvbdmx->dmx.frontend->source!=DMX_MEMORY_FE)) - StopHWFilter(dvbdmxfeed->filter); - } - - if (dvbdmxfeed->type == DMX_TYPE_SEC) { - int i; - - for (i=0; ifilternum; i++) - if (dvbdmx->filter[i].state==DMX_STATE_GO && - dvbdmx->filter[i].filter.parent==&dvbdmxfeed->feed.sec) { - dvbdmx->filter[i].state=DMX_STATE_READY; - if (dvbdmx->dmx.frontend->source!=DMX_MEMORY_FE) - StopHWFilter(&dvbdmx->filter[i]); - } - } - return 0; -} - - -static void -restart_feeds(av7110_t *av7110) -{ - struct dvb_demux *dvbdmx=&av7110->demux; - struct dvb_demux_feed *feed; - int mode; - int i; - - mode=av7110->playing; - av7110->playing=0; - av7110->rec_mode=0; - - for (i=0; ifilternum; i++) { - feed=&dvbdmx->feed[i]; - if (feed->state==DMX_STATE_GO) - dvb_start_feed(feed); - } - - if (mode) - AV_StartPlay(av7110, mode); -} - -/****************************************************************************** - * SEC device file operations - ******************************************************************************/ - -static -int av7110_diseqc_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) -{ - av7110_t *av7110 = fe->before_after_data; - - switch (cmd) { - case FE_SET_TONE: - switch ((fe_sec_tone_mode_t) arg) { - case SEC_TONE_ON: - Set22K (av7110, 1); - break; - case SEC_TONE_OFF: - Set22K (av7110, 0); - break; - default: - return -EINVAL; - }; - break; - - case FE_DISEQC_SEND_MASTER_CMD: - { - struct dvb_diseqc_master_cmd *cmd = arg; - - SendDiSEqCMsg (av7110, cmd->msg_len, cmd->msg, 0); - break; - } - - case FE_DISEQC_SEND_BURST: - SendDiSEqCMsg (av7110, 0, NULL, (int) arg); - break; - - default: - return -EOPNOTSUPP; - }; - - return 0; -} - -/****************************************************************************** - * CI link layer file ops (FIXME: move this to separate module later) - ******************************************************************************/ - -int ci_ll_init(ring_buffer_t *cirbuf, ring_buffer_t *ciwbuf, int size) -{ - ring_buffer_init(cirbuf, vmalloc(size), size); - ring_buffer_init(ciwbuf, vmalloc(size), size); - return 0; -} - -void ci_ll_flush(ring_buffer_t *cirbuf, ring_buffer_t *ciwbuf) -{ - ring_buffer_flush(cirbuf); - ring_buffer_flush(ciwbuf); -} - -void ci_ll_release(ring_buffer_t *cirbuf, ring_buffer_t *ciwbuf) -{ - vfree(cirbuf->data); - cirbuf->data=0; - vfree(ciwbuf->data); - ciwbuf->data=0; -} - - -int ci_ll_reset(ring_buffer_t *cibuf, struct file *file, - int slots, ca_slot_info_t *slot) -{ - int i; - - if (ring_buffer_free(cibuf)<8) - return -EBUSY; - for (i=0; i<2; i++) - if (slots&(1<data[cibuf->pwrite]=0x00; - cibuf->data[(cibuf->pwrite+1)%cibuf->size]=0x06; - cibuf->data[(cibuf->pwrite+2)%cibuf->size]=i; - cibuf->data[(cibuf->pwrite+3)%cibuf->size]=0x00; - cibuf->data[(cibuf->pwrite+4)%cibuf->size]=0xff; - cibuf->data[(cibuf->pwrite+5)%cibuf->size]=0x02; - cibuf->data[(cibuf->pwrite+6)%cibuf->size]=0x00; - cibuf->data[(cibuf->pwrite+7)%cibuf->size]=0x00; - cibuf->pwrite=(cibuf->pwrite+8)%cibuf->size; - slot[i].flags=0; - } - return 0; -} - -static ssize_t -ci_ll_write(ring_buffer_t *cibuf, struct file *file, const char *buf, size_t count, loff_t *ppos) -{ - int free, split; - int32_t pread; - int non_blocking=file->f_flags&O_NONBLOCK; - - if (count>2048) - return -EINVAL; - pread=cibuf->pread; - free=pread-cibuf->pwrite; - if (free<=0) - free+=cibuf->size; - if (count+2>=free) { - if (non_blocking) - return -EWOULDBLOCK; - if (wait_event_interruptible(cibuf->queue, - (ring_buffer_free(cibuf)>count+2))) - return 0; - } - cibuf->data[cibuf->pwrite]=(count>>8); - cibuf->data[(cibuf->pwrite+1)%cibuf->size]=(count&0xff); - cibuf->pwrite=(cibuf->pwrite+2)%cibuf->size; - - if (pread>cibuf->pwrite) - split=0; - else - split=cibuf->size-cibuf->pwrite; - if (split && splitdata + cibuf->pwrite, buf, split)) - return -EFAULT; - if (copy_from_user(cibuf->data, buf+split, count-split)) - return -EFAULT; - } else - if (copy_from_user(cibuf->data + cibuf->pwrite, buf, count)) - return -EFAULT; - cibuf->pwrite=(cibuf->pwrite+count)%cibuf->size; - return count; -} - -static ssize_t -ci_ll_read(ring_buffer_t *cibuf, struct file *file, char *buf, size_t count, loff_t *ppos) -{ - int split=0, avail, pwrite; - int non_blocking=file->f_flags&O_NONBLOCK; - - if (!cibuf->data || !count) - return 0; - if (non_blocking && (ring_buffer_empty(cibuf))) - return -EWOULDBLOCK; - if (wait_event_interruptible(cibuf->queue, - !ring_buffer_empty(cibuf))) - return 0; - pwrite=cibuf->pwrite; - avail=pwrite - cibuf->pread; - if (avail<0) - avail+=cibuf->size; - if (avail<4) - return 0; - count=(cibuf->data[cibuf->pread]<<8); - count|=cibuf->data[(cibuf->pread+1)%cibuf->size]; - if (availpread=(cibuf->pread+2)%cibuf->size; - - if (pwritepread) - split=cibuf->size-cibuf->pread; - if (split && splitdata+cibuf->pread, split)) - return -EFAULT; - if (copy_to_user(buf+split, cibuf->data, count-split)) - return -EFAULT; - } else - if (copy_to_user(buf, cibuf->data+cibuf->pread, count)) - return -EFAULT; - cibuf->pread=(cibuf->pread + count)%cibuf->size; - return count; -} - -static int -dvb_ca_open(struct inode *inode, struct file *file) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - int err=dvb_generic_open(inode, file); - - if (err<0) - return err; - ci_ll_flush(&av7110->ci_rbuffer, &av7110->ci_wbuffer); - return 0; -} - -static unsigned -int dvb_ca_poll(struct file *file, poll_table *wait) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - - unsigned int mask=0; - - ring_buffer_t *rbuf=&av7110->ci_rbuffer; - ring_buffer_t *wbuf=&av7110->ci_wbuffer; - - if (!ring_buffer_empty(rbuf)) - mask|=POLLIN; - if (ring_buffer_avail(wbuf)>1024) - mask|=POLLOUT; - if (mask) - return mask; - - poll_wait(file, &rbuf->queue, wait); - - if (!ring_buffer_empty(rbuf)) - mask|=POLLIN; - if (ring_buffer_avail(wbuf)>1024) - mask|=POLLOUT; - - return mask; -} - -static int -dvb_ca_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, void *parg) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - unsigned long arg=(unsigned long) parg; - - switch (cmd) { - case CA_RESET: -#ifdef NEW_CI - - return ci_ll_reset(&av7110->ci_wbuffer, file, arg, &av7110->ci_slot[0]); -#endif - break; - - case CA_GET_CAP: - { - ca_caps_t cap; - - cap.slot_num=2; -#ifdef NEW_CI - cap.slot_type=CA_CI_LINK; -#else - cap.slot_type=CA_CI; -#endif - cap.descr_num=16; - cap.descr_type=CA_ECD; - memcpy(parg, &cap, sizeof(cap)); - } - break; - - case CA_GET_SLOT_INFO: - { - ca_slot_info_t *info=(ca_slot_info_t *)parg; - - if (info->num>1) - return -EINVAL; -#ifdef NEW_CI - av7110->ci_slot[info->num].type = CA_CI_LINK; -#else - av7110->ci_slot[info->num].type = CA_CI; -#endif - memcpy(info, &av7110->ci_slot[info->num], sizeof(ca_slot_info_t)); - } - break; - - case CA_GET_MSG: - break; - - case CA_SEND_MSG: - break; - - case CA_GET_DESCR_INFO: - { - ca_descr_info_t info; - - info.num=16; - info.type=CA_ECD; - memcpy (parg, &info, sizeof (info)); - } - break; - - case CA_SET_DESCR: - { - ca_descr_t *descr=(ca_descr_t*) parg; - - if (descr->index>=16) - return -EINVAL; - if (descr->parity>1) - return -EINVAL; - outcom(av7110, COMTYPE_PIDFILTER, SetDescr, 5, - (descr->index<<8)|descr->parity, - (descr->cw[0]<<8)|descr->cw[1], - (descr->cw[2]<<8)|descr->cw[3], - (descr->cw[4]<<8)|descr->cw[5], - (descr->cw[6]<<8)|descr->cw[7]); - } - break; - - default: - return -EINVAL; - } - return 0; -} - -static ssize_t -dvb_ca_write(struct file *file, const char *buf, - size_t count, loff_t *ppos) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - - return ci_ll_write(&av7110->ci_wbuffer, file, buf, count, ppos); -} - -static ssize_t -dvb_ca_read(struct file *file, char *buf, size_t count, loff_t *ppos) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - - return ci_ll_read(&av7110->ci_rbuffer, file, buf, count, ppos); - -} - - - -/****************************************************************************** - * DVB device file operations - ******************************************************************************/ - -static unsigned int dvb_video_poll(struct file *file, poll_table *wait) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - unsigned int mask=0; - - if (av7110->playing) { - if (FREE_COND) - return (POLLOUT | POLLWRNORM); - - poll_wait(file, &av7110->avout.queue, wait); - - if (FREE_COND) - mask |= (POLLOUT | POLLWRNORM); - } else /* if not playing: may play if asked for */ - mask = (POLLOUT | POLLWRNORM); - - return mask; -} - -static ssize_t -dvb_video_write(struct file *file, const char *buf, - size_t count, loff_t *ppos) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - - if (av7110->videostate.stream_source!=VIDEO_SOURCE_MEMORY) - return -EPERM; - - return dvb_play(av7110, buf, count, file->f_flags&O_NONBLOCK, 1, 1); -} - -static ssize_t -dvb_audio_write(struct file *file, const char *buf, - size_t count, loff_t *ppos) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - - if (av7110->audiostate.stream_source!=AUDIO_SOURCE_MEMORY) { - printk(KERN_ERR "not audio source memory\n"); - return -EPERM; - } - return dvb_aplay(av7110, buf, count, file->f_flags&O_NONBLOCK, 0); -} - -u8 iframe_header[] = { 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x80, 0x00, 0x00 }; - -#define MIN_IFRAME 400000 - -static void -play_iframe(av7110_t *av7110, u8 *buf, unsigned int len, int nonblock) -{ - int i, n=1; - - if (!(av7110->playing&RP_VIDEO)) { - AV_StartPlay(av7110, RP_VIDEO); - n=MIN_IFRAME/len+1; - } - - dvb_play(av7110, iframe_header, sizeof(iframe_header), 0, 1, 0); - - for (i=0; iipack[1]); -} - - -static int -dvb_video_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, void *parg) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - unsigned long arg=(unsigned long) parg; - int ret=0; - - if (((file->f_flags&O_ACCMODE)==O_RDONLY) && - (cmd!=VIDEO_GET_STATUS)) - return -EPERM; - - switch (cmd) { - case VIDEO_STOP: - av7110->videostate.play_state=VIDEO_STOPPED; - if (av7110->videostate.stream_source==VIDEO_SOURCE_MEMORY) - AV_Stop(av7110, RP_VIDEO); - else - vidcom(av7110, 0x000e, - av7110->videostate.video_blank ? 0 : 1); - av7110->trickmode=TRICK_NONE; - break; - - case VIDEO_PLAY: - av7110->trickmode=TRICK_NONE; - if (av7110->videostate.play_state==VIDEO_FREEZED) { - av7110->videostate.play_state=VIDEO_PLAYING; - vidcom(av7110, 0x000d, 0); - } - - if (av7110->videostate.stream_source==VIDEO_SOURCE_MEMORY) { - if (av7110->playing==RP_AV) { - outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); - av7110->playing&=~RP_VIDEO; - } - AV_StartPlay(av7110,RP_VIDEO); - vidcom(av7110, 0x000d, 0); - } else { - //AV_Stop(av7110, RP_VIDEO); - vidcom(av7110, 0x000d, 0); - } - av7110->videostate.play_state=VIDEO_PLAYING; - break; - - case VIDEO_FREEZE: - av7110->videostate.play_state=VIDEO_FREEZED; - if (av7110->playing&RP_VIDEO) - outcom(av7110, COMTYPE_REC_PLAY, __Pause, 0); - else - vidcom(av7110, 0x0102, 1); - av7110->trickmode=TRICK_FREEZE; - break; - - case VIDEO_CONTINUE: - if (av7110->playing&RP_VIDEO) - outcom(av7110, COMTYPE_REC_PLAY, __Continue, 0); - vidcom(av7110, 0x000d, 0); - av7110->videostate.play_state=VIDEO_PLAYING; - av7110->trickmode=TRICK_NONE; - break; - - case VIDEO_SELECT_SOURCE: - av7110->videostate.stream_source=(video_stream_source_t) arg; - break; - - case VIDEO_SET_BLANK: - av7110->videostate.video_blank=(int) arg; - break; - - case VIDEO_GET_STATUS: - memcpy(parg, &av7110->videostate, sizeof(struct video_status)); - break; - - case VIDEO_GET_EVENT: - //FIXME: write firmware support for this - ret=-EOPNOTSUPP; - - case VIDEO_SET_DISPLAY_FORMAT: - { - video_displayformat_t format=(video_displayformat_t) arg; - u16 val=0; - - switch(format) { - case VIDEO_PAN_SCAN: - val=VID_PAN_SCAN_PREF; - break; - - case VIDEO_LETTER_BOX: - val=VID_VC_AND_PS_PREF; - break; - - case VIDEO_CENTER_CUT_OUT: - val=VID_CENTRE_CUT_PREF; - break; - - default: - ret=-EINVAL; - break; - } - if (ret<0) - break; - av7110->videostate.video_format=format; - ret=outcom(av7110, COMTYPE_ENCODER, SetPanScanType, - 1, (u16) val); - break; - } - - case VIDEO_SET_FORMAT: - if (arg>1) { - ret=-EINVAL; - break; - } - av7110->display_ar=arg; - ret=outcom(av7110, COMTYPE_ENCODER, SetMonitorType, - 1, (u16) arg); - break; - - case VIDEO_STILLPICTURE: - { - struct video_still_picture *pic= - (struct video_still_picture *) parg; - ring_buffer_flush(&av7110->avout); - play_iframe(av7110, pic->iFrame, pic->size, - file->f_flags&O_NONBLOCK); - break; - } - - case VIDEO_FAST_FORWARD: - //note: arg is ignored by firmware - if (av7110->playing&RP_VIDEO) - outcom(av7110, COMTYPE_REC_PLAY, - __Scan_I, 2, AV_PES, 0); - else - vidcom(av7110, 0x16, arg); - av7110->trickmode=TRICK_FAST; - av7110->videostate.play_state=VIDEO_PLAYING; - break; - - case VIDEO_SLOWMOTION: - if (av7110->playing&RP_VIDEO) { - outcom(av7110, COMTYPE_REC_PLAY, __Slow, 2, 0, 0); - vidcom(av7110, 0x22, arg); - } else { - vidcom(av7110, 0x0d, 0); - vidcom(av7110, 0x0e, 0); - vidcom(av7110, 0x22, arg); - } - av7110->trickmode=TRICK_SLOW; - av7110->videostate.play_state=VIDEO_PLAYING; - break; - - case VIDEO_GET_CAPABILITIES: - *(int *)parg=VIDEO_CAP_MPEG1| - VIDEO_CAP_MPEG2| - VIDEO_CAP_SYS| - VIDEO_CAP_PROG; - break; - - case VIDEO_CLEAR_BUFFER: - ring_buffer_flush(&av7110->avout); - dvb_filter_ipack_reset(&av7110->ipack[1]); - - if (av7110->playing==RP_AV) { - outcom(av7110, COMTYPE_REC_PLAY, - __Play, 2, AV_PES, 0); - if (av7110->trickmode==TRICK_FAST) - outcom(av7110, COMTYPE_REC_PLAY, - __Scan_I, 2, AV_PES, 0); - if (av7110->trickmode==TRICK_SLOW) { - outcom(av7110, COMTYPE_REC_PLAY, __Slow, 2, 0, 0); - vidcom(av7110, 0x22, arg); - } - if (av7110->trickmode==TRICK_FREEZE) - vidcom(av7110, 0x000e, 1); - } - break; - - case VIDEO_SET_STREAMTYPE: - - break; - - default: - ret=-ENOIOCTLCMD; - break; - } - return ret; -} - -static int -dvb_audio_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, void *parg) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - unsigned long arg=(unsigned long) parg; - int ret=0; - - if (((file->f_flags&O_ACCMODE)==O_RDONLY) && - (cmd!=AUDIO_GET_STATUS)) - return -EPERM; - - switch (cmd) { - case AUDIO_STOP: - if (av7110->audiostate.stream_source==AUDIO_SOURCE_MEMORY) - AV_Stop(av7110, RP_AUDIO); - else - audcom(av7110, 1); - av7110->audiostate.play_state=AUDIO_STOPPED; - break; - - case AUDIO_PLAY: - if (av7110->audiostate.stream_source==AUDIO_SOURCE_MEMORY) - AV_StartPlay(av7110, RP_AUDIO); - audcom(av7110, 2); - av7110->audiostate.play_state=AUDIO_PLAYING; - break; - - case AUDIO_PAUSE: - audcom(av7110, 1); - av7110->audiostate.play_state=AUDIO_PAUSED; - break; - - case AUDIO_CONTINUE: - if (av7110->audiostate.play_state==AUDIO_PAUSED) { - av7110->audiostate.play_state=AUDIO_PLAYING; - audcom(av7110, 0x12); - } - break; - - case AUDIO_SELECT_SOURCE: - av7110->audiostate.stream_source=(audio_stream_source_t) arg; - break; - - case AUDIO_SET_MUTE: - { - audcom(av7110, arg ? 1 : 2); - av7110->audiostate.mute_state=(int) arg; - break; - } - - case AUDIO_SET_AV_SYNC: - av7110->audiostate.AV_sync_state=(int) arg; - audcom(av7110, arg ? 0x0f : 0x0e); - break; - - case AUDIO_SET_BYPASS_MODE: - ret=-EINVAL; - break; - - case AUDIO_CHANNEL_SELECT: - av7110->audiostate.channel_select=(audio_channel_select_t) arg; - - switch(av7110->audiostate.channel_select) { - case AUDIO_STEREO: - audcom(av7110, 0x80); - break; - - case AUDIO_MONO_LEFT: - audcom(av7110, 0x100); - break; - - case AUDIO_MONO_RIGHT: - audcom(av7110, 0x200); - break; - - default: - ret=-EINVAL; - break; - } - break; - - case AUDIO_GET_STATUS: - memcpy(parg, &av7110->audiostate, sizeof(struct audio_status)); - break; - - case AUDIO_GET_CAPABILITIES: - *(int *)parg=AUDIO_CAP_LPCM| - AUDIO_CAP_MP1| - AUDIO_CAP_MP2; - break; - - case AUDIO_CLEAR_BUFFER: - ring_buffer_flush(&av7110->aout); - dvb_filter_ipack_reset(&av7110->ipack[0]); - if (av7110->playing==RP_AV) - outcom(av7110, COMTYPE_REC_PLAY, - __Play, 2, AV_PES, 0); - break; - case AUDIO_SET_ID: - - break; - case AUDIO_SET_MIXER: - { - struct audio_mixer *amix=(struct audio_mixer *)parg; - - SetVolume(av7110, amix->volume_left, amix->volume_right); - break; - } - case AUDIO_SET_STREAMTYPE: - break; - default: - ret=-ENOIOCTLCMD; - break; - } - return ret; -} - -static int -dvb_osd_ioctl(struct inode *inode, struct file *file, - unsigned int cmd, void *parg) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - -#ifdef CONFIG_DVB_AV7110_OSD - if (cmd==OSD_SEND_CMD) - return OSD_DrawCommand(av7110, (osd_cmd_t *)parg); -#endif - return -EINVAL; -} - -static int dvb_video_open(struct inode *inode, struct file *file) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - int err; - - if ((err=dvb_generic_open(inode, file))<0) - return err; - ring_buffer_flush(&av7110->aout); - ring_buffer_flush(&av7110->avout); - av7110->video_blank=1; - av7110->audiostate.AV_sync_state=1; - av7110->videostate.stream_source=VIDEO_SOURCE_DEMUX; - return 0; -} - -static int dvb_video_release(struct inode *inode, struct file *file) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - - AV_Stop(av7110, RP_VIDEO); - return dvb_generic_release(inode, file); -} - -static int dvb_audio_open(struct inode *inode, struct file *file) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - int err=dvb_generic_open(inode, file); - - if (err<0) - return err; - ring_buffer_flush(&av7110->aout); - av7110->audiostate.stream_source=AUDIO_SOURCE_DEMUX; - return 0; -} - -static int dvb_audio_release(struct inode *inode, struct file *file) -{ - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - av7110_t *av7110=(av7110_t *) dvbdev->priv; - - AV_Stop(av7110, RP_AUDIO); - return dvb_generic_release(inode, file); -} - - - -/****************************************************************************** - * driver registration - ******************************************************************************/ - -static struct file_operations dvb_video_fops = { - .owner = THIS_MODULE, - .write = dvb_video_write, - .ioctl = dvb_generic_ioctl, - .open = dvb_video_open, - .release = dvb_video_release, - .poll = dvb_video_poll, -}; - -static struct dvb_device dvbdev_video = { - .priv = 0, - .users = 1, - .writers = 1, - .fops = &dvb_video_fops, - .kernel_ioctl = dvb_video_ioctl, -}; - -static struct file_operations dvb_audio_fops = { - .owner = THIS_MODULE, - .write = dvb_audio_write, - .ioctl = dvb_generic_ioctl, - .open = dvb_audio_open, - .release = dvb_audio_release, - .poll = dvb_audio_poll, -}; - -static struct dvb_device dvbdev_audio = { - .priv = 0, - .users = 1, - .writers = 1, - .fops = &dvb_audio_fops, - .kernel_ioctl = dvb_audio_ioctl, -}; - -static struct file_operations dvb_ca_fops = { - .owner = THIS_MODULE, - .read = dvb_ca_read, - .write = dvb_ca_write, - .ioctl = dvb_generic_ioctl, - .open = dvb_ca_open, - .release = dvb_generic_release, - .poll = dvb_ca_poll, -}; - -static struct dvb_device dvbdev_ca = { - .priv = 0, - .users = 1, - .writers = 1, - .fops = &dvb_ca_fops, - .kernel_ioctl = dvb_ca_ioctl, -}; - -static struct file_operations dvb_osd_fops = { - .owner = THIS_MODULE, - .ioctl = dvb_generic_ioctl, - .open = dvb_generic_open, - .release = dvb_generic_release, -}; - -static struct dvb_device dvbdev_osd = { - .priv = 0, - .users = 1, - .writers = 1, - .fops = &dvb_osd_fops, - .kernel_ioctl = dvb_osd_ioctl, -}; - - -static -void av7110_before_after_tune (fe_status_t s, void *data) -{ - struct av7110_s *av7110 = data; - - av7110->fe_synced = (s & FE_HAS_LOCK) ? 1 : 0; - - if (av7110->playing) - return; - - if (down_interruptible(&av7110->pid_mutex)) - return; - - if (av7110->fe_synced) { - SetPIDs(av7110, av7110->pids[DMX_PES_VIDEO], - av7110->pids[DMX_PES_AUDIO], - av7110->pids[DMX_PES_TELETEXT], 0, - av7110->pids[DMX_PES_PCR]); - outcom(av7110, COMTYPE_PIDFILTER, Scan, 0); - } else - SetPIDs(av7110, 0, 0, 0, 0, 0); - - up(&av7110->pid_mutex); -} - - -static int -dvb_register(av7110_t *av7110) -{ - int ret, i; - dmx_frontend_t *dvbfront=&av7110->hw_frontend; - struct dvb_demux *dvbdemux=&av7110->demux; - - if (av7110->registered) - return -1; - - av7110->registered=1; - - av7110->dvb_adapter = av7110->saa->dvb_adapter; - - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) - dvb_add_frontend_notifier (av7110->dvb_adapter, - av7110_before_after_tune, av7110); - /** - * init DiSEqC stuff - */ - if (av7110->saa->card_type==DVB_CARD_TT_BUDGET || - av7110->saa->card_type==DVB_CARD_TT_SIEMENS) - dvb_add_frontend_ioctls (av7110->dvb_adapter, - av7110_diseqc_ioctl, NULL, av7110); - - av7110->audiostate.AV_sync_state=0; - av7110->audiostate.mute_state=0; - av7110->audiostate.play_state=AUDIO_STOPPED; - av7110->audiostate.stream_source=AUDIO_SOURCE_DEMUX; - av7110->audiostate.channel_select=AUDIO_STEREO; - av7110->audiostate.bypass_mode=0; - - av7110->videostate.video_blank=0; - av7110->videostate.play_state=VIDEO_STOPPED; - av7110->videostate.stream_source=VIDEO_SOURCE_DEMUX; - av7110->videostate.video_format=VIDEO_FORMAT_4_3; - av7110->videostate.display_format=VIDEO_CENTER_CUT_OUT; - av7110->display_ar=VIDEO_FORMAT_4_3; - - memcpy(av7110->demux_id, "demux0_0", 9); - av7110->demux_id[7]=av7110->saa->dvb_adapter->num+0x30; - dvbdemux->priv=(void *) av7110; - - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) { - for (i = 0; i < MAXFILT; i++) - av7110->handle2filter[i]=NULL; - - dvbdemux->filternum=32; - dvbdemux->feednum=32; - dvbdemux->start_feed=dvb_start_feed; - dvbdemux->stop_feed=dvb_stop_feed; - dvbdemux->write_to_decoder=dvb_write_to_decoder; - - dvbdemux->dmx.vendor="TI"; - dvbdemux->dmx.model="AV7110"; - dvbdemux->dmx.id=av7110->demux_id; - dvbdemux->dmx.capabilities=(DMX_TS_FILTERING| - DMX_SECTION_FILTERING| - DMX_MEMORY_BASED_FILTERING); - - dvb_dmx_init(&av7110->demux); - - - dvbfront->id="hw_frontend"; - dvbfront->vendor="VLSI"; - dvbfront->model="DVB Frontend"; - dvbfront->source=DMX_FRONTEND_0; - - av7110->dmxdev.filternum=32; - av7110->dmxdev.demux=&dvbdemux->dmx; - av7110->dmxdev.capabilities=0; - - dvb_dmxdev_init(&av7110->dmxdev, av7110->dvb_adapter); - } - - if (av7110->saa->card_type>=DVB_CARD_TT_BUDGET) { - dvbdemux->filternum=256; - dvbdemux->feednum=256; - dvbdemux->start_feed=dvb_start_feed; - dvbdemux->stop_feed=dvb_stop_feed; - dvbdemux->write_to_decoder=0; - - dvbdemux->dmx.vendor="CIM"; - dvbdemux->dmx.model="sw"; - dvbdemux->dmx.id=av7110->demux_id; - dvbdemux->dmx.capabilities=(DMX_TS_FILTERING| - DMX_SECTION_FILTERING| - DMX_MEMORY_BASED_FILTERING); - - dvb_dmx_init(&av7110->demux); - - dvbfront->id="hw_frontend"; - dvbfront->vendor="VLSI"; - dvbfront->model="DVB Frontend"; - dvbfront->source=DMX_FRONTEND_0; - - av7110->dmxdev.filternum=256; - av7110->dmxdev.demux=&dvbdemux->dmx; - av7110->dmxdev.capabilities=0; - - dvb_dmxdev_init(&av7110->dmxdev, av7110->dvb_adapter); - } - - ret=dvbdemux->dmx.add_frontend(&dvbdemux->dmx, - &av7110->hw_frontend); - if (ret<0) - return ret; - - av7110->mem_frontend.id="mem_frontend"; - av7110->mem_frontend.vendor="memory"; - av7110->mem_frontend.model="sw"; - av7110->mem_frontend.source=DMX_MEMORY_FE; - ret=dvbdemux->dmx.add_frontend(&dvbdemux->dmx, - &av7110->mem_frontend); - if (ret<0) - return ret; - - ret=dvbdemux->dmx.connect_frontend(&dvbdemux->dmx, - &av7110->hw_frontend); - if (ret<0) - return ret; - - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) { - dvb_register_device(av7110->dvb_adapter, &av7110->video_dev, - &dvbdev_video, av7110, DVB_DEVICE_VIDEO); - dvb_register_device(av7110->dvb_adapter, &av7110->audio_dev, - &dvbdev_audio, av7110, DVB_DEVICE_AUDIO); - dvb_register_device(av7110->dvb_adapter, &av7110->osd_dev, - &dvbdev_osd, av7110, DVB_DEVICE_OSD); - dvb_register_device(av7110->dvb_adapter, &av7110->ca_dev, - &dvbdev_ca, av7110, DVB_DEVICE_CA); - vid_register(av7110); -#ifdef USE_DVB_DSP - dvb->dsp_dev = dvb_register_dsp(dvb_audio_open, - dvb_audio_release, - dvb_audio_ioctl, - dvb_audio_write, - av7110->audio_dev); -#endif - } - - av7110->dvb_net.card_num=av7110->saa->dvb_adapter->num; - dvb_net_init(av7110->dvb_adapter, &av7110->dvb_net, &dvbdemux->dmx); - - return 0; -} - - -static void -dvb_unregister(av7110_t *av7110) -{ - struct dvb_demux *dvbdemux=&av7110->demux; - - if (!av7110->registered) - return; - - dvb_net_release(&av7110->dvb_net); - - dvbdemux->dmx.close(&dvbdemux->dmx); - dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &av7110->hw_frontend); - dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &av7110->mem_frontend); - - dvb_dmxdev_release(&av7110->dmxdev); - dvb_dmx_release(&av7110->demux); - - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) - dvb_remove_frontend_notifier (av7110->dvb_adapter, - av7110_before_after_tune); - - dvb_remove_frontend_ioctls (av7110->dvb_adapter, - av7110_diseqc_ioctl, NULL); - - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) { - vid_unregister(av7110); - dvb_unregister_device(av7110->audio_dev); - dvb_unregister_device(av7110->video_dev); - dvb_unregister_device(av7110->osd_dev); - dvb_unregister_device(av7110->ca_dev); -#ifdef USE_DVB_DSP - dvb_unregister_dsp(av7110->dsp_dev); -#endif - } -} - -/**************************************************************************** - * INITIALIZATION - ****************************************************************************/ - -static -int av7110_attach (struct saa7146 *saa, void **av7110_ptr) -{ - struct av7110_s *av7110; - - if (!(av7110 = kmalloc (sizeof (struct av7110_s), GFP_KERNEL))) { - printk ("%s: out of memory!\n", __FUNCTION__); - return -ENOMEM; - } - - *av7110_ptr = av7110; - - memset(av7110, 0, sizeof(av7110_t)); - - tasklet_init (&av7110->debi_tasklet, debiirq, (unsigned long) av7110); - tasklet_init (&av7110->gpio_tasklet, gpioirq, (unsigned long) av7110); - tasklet_init (&av7110->vpe_tasklet, vpeirq, (unsigned long) av7110); - tasklet_init (&av7110->fidb_tasklet, fidbirq, (unsigned long) av7110); - - sema_init(&av7110->pid_mutex, 1); - - /* locks for data transfers from/to AV7110 */ - spin_lock_init (&av7110->debilock); - sema_init(&av7110->dcomlock, 1); - av7110->debilock=SPIN_LOCK_UNLOCKED; - av7110->debitype=-1; - - av7110->saa=(struct saa7146 *) saa; - av7110->saa_mem=av7110->saa->mem; - - /* default ADAC type */ - av7110->adac_type = adac; - - /* default OSD window */ - av7110->osdwin=1; - - /* ARM "watchdog" */ - init_waitqueue_head(&av7110->arm_wait); - av7110->arm_thread=0; - - av7110->vidmode=VIDEO_MODE_PAL; - - dvb_filter_ipack_init(&av7110->ipack[0], IPACKS, play_audio_cb); - av7110->ipack[0].data=(void *) av7110; - dvb_filter_ipack_init(&av7110->ipack[1], IPACKS, play_video_cb); - av7110->ipack[1].data=(void *) av7110; - - - /* allocate and init buffers */ - - av7110->debi_virt=pci_alloc_consistent(av7110->saa->device, 8192, - &av7110->debi_bus); - if (!av7110->debi_virt) - return -1; - - av7110->iobuf=vmalloc(AVOUTLEN+AOUTLEN+BMPLEN+4*IPACKS); - if (!av7110->iobuf) - return -1; - - ring_buffer_init(&av7110->avout, av7110->iobuf, AVOUTLEN); - ring_buffer_init(&av7110->aout, av7110->iobuf+AVOUTLEN, AOUTLEN); - - /* init BMP buffer */ - av7110->bmpbuf=av7110->iobuf+AVOUTLEN+AOUTLEN; - init_waitqueue_head(&av7110->bmpq); - - av7110->kbuf[0]=(u8 *)(av7110->iobuf+AVOUTLEN+AOUTLEN+BMPLEN); - av7110->kbuf[1]=av7110->kbuf[0]+2*IPACKS; - - /* CI link layer buffers */ - ci_ll_init(&av7110->ci_rbuffer, &av7110->ci_wbuffer, 8192); - - /* handle different card types */ - - /* load firmware into AV7110 cards */ - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) { - bootarm(av7110); - firmversion(av7110); - if ((av7110->arm_app&0xffff)<0x2502) { - printk("av7110: Warning, firmware version is too old. System might be unstable!!!\n"); - } - kernel_thread(arm_thread, (void *) av7110, 0); - } else { - saa7146_write(av7110->saa_mem, DD1_INIT, 0x02000600); - saa7146_write(av7110->saa_mem, MC2, - (MASK_09 | MASK_25 | MASK_10 | MASK_26)); - setgpio(av7110, 2, GPIO_OUTHI); /* frontend power on */ - } - - SetVolume(av7110, 0xff, 0xff); - - if (av7110->saa->card_type==DVB_CARD_TT_SIEMENS) { - VidMode(av7110, vidmode); - - /* remaining inits according to card and frontend type */ - - if (i2c_writereg(av7110, 0x20, 0x00, 0x00)==1) { - dprintk("av7110%d: Crystal audio DAC detected\n", - av7110->saa->dvb_adapter->num); - av7110->adac_type = DVB_ADAC_CRYSTAL; - i2c_writereg(av7110, 0x20, 0x01, 0xd2); - i2c_writereg(av7110, 0x20, 0x02, 0x49); - i2c_writereg(av7110, 0x20, 0x03, 0x00); - i2c_writereg(av7110, 0x20, 0x04, 0x00); - } - - /** - * some special handling for the Siemens DVB-C card... - */ - if (av7110->saa->device->subsystem_vendor == 0x110a) { - if (i2c_writereg(av7110, 0x80, 0x0, 0x80)==1) { - i2c_writereg(av7110, 0x80, 0x0, 0); - printk("av7110: DVB-C analog module detected, " - "initializing MSP3400\n"); - ddelay(10); - msp_writereg(av7110, 0x12, 0x0013, 0x0c00); - msp_writereg(av7110, 0x12, 0x0000, 0x7f00); // loudspeaker + headphone - msp_writereg(av7110, 0x12, 0x0008, 0x0220); // loudspeaker source - msp_writereg(av7110, 0x12, 0x0004, 0x7f00); // loudspeaker volume - msp_writereg(av7110, 0x12, 0x000a, 0x0220); // SCART 1 source - msp_writereg(av7110, 0x12, 0x0007, 0x7f00); // SCART 1 volume - msp_writereg(av7110, 0x12, 0x000d, 0x4800); // prescale SCART - } - - // switch DVB SCART on - outcom(av7110, COMTYPE_AUDIODAC, MainSwitch, 1, 0); - outcom(av7110, COMTYPE_AUDIODAC, ADSwitch, 1, 1); - - //setgpio(av7110, 1, GPIO_OUTHI); // RGB on, SCART pin 16 - //setgpio(av7110, 3, GPIO_OUTLO); // SCARTpin 8 - av7110->adac_type = DVB_ADAC_NONE; - } - } - - if (init_vpid != 0 || init_apid != 0) - ChangePIDs(av7110, init_vpid, init_apid, 0, 0, 0); - - av7110_setup_irc_config (av7110, 0); - dvb_register(av7110); - - return 0; -} - - -static -int av7110_detach (struct saa7146 *saa, void** av7110_ptr) -{ - struct av7110_s *av7110 = *av7110_ptr; - - av7110->arm_rmmod=1; - wake_up_interruptible(&av7110->arm_wait); - - while (av7110->arm_thread) - ddelay(1); - - dvb_unregister(av7110); - - saa7146_write (av7110->saa_mem, IER, - saa7146_read(av7110->saa_mem, IER) & ~(MASK_19 | MASK_03)); - - saa7146_write(av7110->saa_mem, ISR,(MASK_19 | MASK_03)); - - ci_ll_release(&av7110->ci_rbuffer, &av7110->ci_wbuffer); - dvb_filter_ipack_free(&av7110->ipack[0]); - dvb_filter_ipack_free(&av7110->ipack[1]); - vfree(av7110->iobuf); - pci_free_consistent(av7110->saa->device, 8192, av7110->debi_virt, - av7110->debi_bus); - - kfree (av7110); - *av7110_ptr = NULL; - - return 0; -} - - -static -void av7110_irq(struct saa7146 *saa, u32 isr, void *data) -{ - struct av7110_s *av7110 = (struct av7110_s*) data; - - if (isr & MASK_19) - tasklet_schedule (&av7110->debi_tasklet); - - if (isr & MASK_03) - tasklet_schedule (&av7110->gpio_tasklet); - - if (isr & MASK_10) - tasklet_schedule (&av7110->vpe_tasklet); - - if (isr & MASK_07) - tasklet_schedule (&av7110->fidb_tasklet); -} - - -static -int av7110_command(struct saa7146 *saa, void *p, unsigned int cmd, void *arg) -{ - switch(cmd) { - case SAA7146_SUSPEND: - printk("dvb_suspend()\n"); - break; - case SAA7146_RESUME: - printk("dvb_resume()\n"); - break; - default: - return -ENOIOCTLCMD; - } - return 0; -} - - -static -void av7110_inc_use(struct saa7146* adap) -{ - MOD_INC_USE_COUNT; -} - - -static -void av7110_dec_use(struct saa7146* adap) -{ - MOD_DEC_USE_COUNT; -} - - -static struct saa7146_extension av7110_extension = { - "dvb extension\0", - MASK_07|MASK_10|MASK_19|MASK_03|MASK_27, - av7110_irq, - av7110_command, - av7110_attach, - av7110_detach, - av7110_inc_use, - av7110_dec_use -}; - - -int __init av7110_init(void) -{ - int result = 0; - - if ((result = saa7146_add_extension(&av7110_extension))) { - printk("%s: saa7146_add_extension() failed!\n", - __FUNCTION__); - return result; - } - - return result; -} - - -void __exit av7110_exit(void) -{ - if (saa7146_del_extension(&av7110_extension)) - printk(KERN_ERR "dvb: extension deregistration failed.\n"); -} - -//MODULE_DESCRIPTION("driver for the SAA7146 based AV110 PCI DVB cards by " -// "Siemens, Technotrend, Hauppauge"); -//MODULE_AUTHOR("Ralph Metzler, Marcus Metzler, others"); -//MODULE_LICENSE("GPL"); - -MODULE_PARM(av7110_debug,"i"); -MODULE_PARM(vidmem,"l"); -MODULE_PARM(vidlow,"l"); -MODULE_PARM(vidmode,"i"); -MODULE_PARM(init_vpid,"i"); -MODULE_PARM(init_apid,"i"); -MODULE_PARM(pids_off,"i"); -MODULE_PARM(adac,"i"); - -/* - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * indent-tabs-mode: nil - * tab-width: 8 - * End: - */ - diff -Nru a/drivers/media/dvb/av7110/av7110.h b/drivers/media/dvb/av7110/av7110.h --- a/drivers/media/dvb/av7110/av7110.h Mon Jan 27 13:05:39 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,743 +0,0 @@ -#ifndef _AV7110_H_ -#define _AV7110_H_ - -#define DVB_FIRM_PATH "/lib/DVB/" - -#include -#include -#include -#include - -#ifdef CONFIG_DEVFS_FS -#include -#endif - -/* DEBI transfer mode defs */ - -#define DEBINOSWAP 0x000e0000 -#define DEBISWAB 0x001e0000 -#define DEBISWAP 0x002e0000 - -#define ARM_WAIT_FREE (HZ) -#define ARM_WAIT_SHAKE (HZ/5) -#define ARM_WAIT_OSD (HZ) - -#if LINUX_VERSION_CODE < 0x020300 -#define net_device device -#define DECLARE_MUTEX(foo) struct semaphore foo = MUTEX -#define DECLARE_MUTEX_LOCKED(foo) struct semaphore foo = MUTEX_LOCKED -#define WAIT_QUEUE struct wait_queue* -#define init_waitqueue_head(wq) *(wq) = NULL; -#define DECLARE_WAITQUEUE(wait, current) struct wait_queue wait = { current, NULL } -#define set_current_state(state_value) \ - do { current->state = state_value; } while (0) -#define list_for_each(pos, head) \ - for (pos = (head)->next; pos != (head); pos = pos->next) - -#else - -#define WAIT_QUEUE wait_queue_head_t - -#endif - -#include -#include -#include -#include -#include -#include - -#include "../dvb-core/dvbdev.h" -#include "../dvb-core/demux.h" -#include "../dvb-core/dvb_demux.h" -#include "../dvb-core/dmxdev.h" -#include "../dvb-core/dvb_filter.h" -#include "../dvb-core/dvb_net.h" - - -typedef enum BOOTSTATES -{ - BOOTSTATE_BUFFER_EMPTY = 0, - BOOTSTATE_BUFFER_FULL = 1, - BOOTSTATE_BOOT_COMPLETE = 2 -} BOOTSTATES; - -typedef enum GPIO_MODE -{ - GPIO_INPUT = 0x00, - GPIO_IRQHI = 0x10, - GPIO_IRQLO = 0x20, - GPIO_IRQHL = 0x30, - GPIO_OUTLO = 0x40, - GPIO_OUTHI = 0x50 -} GPIO_MODE; - -typedef enum -{ RP_None, - AudioPES, - AudioMp2, - AudioPCM, - VideoPES, - AV_PES -} TYPE_REC_PLAY_FORMAT; - -typedef struct PARAMSTRUCT -{ - unsigned int wCommand; - int error; - unsigned long pdwData[100]; -} PARAMSTRUCT, *PPARAMSTRUCT; - -typedef enum OSDPALTYPE -{ - NoPalet = 0, /* No palette */ - Pal1Bit = 2, /* 2 colors for 1 Bit Palette */ - Pal2Bit = 4, /* 4 colors for 2 bit palette */ - Pal4Bit = 16, /* 16 colors for 4 bit palette */ - Pal8Bit = 256 /* 256 colors for 16 bit palette */ -} OSDPALTYPE, *POSDPALTYPE; - -typedef enum { - BITMAP1, /* 1 bit bitmap */ - BITMAP2, /* 2 bit bitmap */ - BITMAP4, /* 4 bit bitmap */ - BITMAP8, /* 8 bit bitmap */ - BITMAP1HR, /* 1 Bit bitmap half resolution */ - BITMAP2HR, /* 2 bit bitmap half resolution */ - BITMAP4HR, /* 4 bit bitmap half resolution */ - BITMAP8HR, /* 8 bit bitmap half resolution */ - YCRCB422, /* 4:2:2 YCRCB Graphic Display */ - YCRCB444, /* 4:4:4 YCRCB Graphic Display */ - YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */ - VIDEOTSIZE, /* True Size Normal MPEG Video Display */ - VIDEOHSIZE, /* MPEG Video Display Half Resolution */ - VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */ - VIDEODSIZE, /* MPEG Video Display Double Resolution */ - VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */ - VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/ - VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */ - VIDEONSIZE, /* Full Size MPEG Video Display */ - CURSOR /* Cursor */ -} DISPTYPE; /* Window display type */ - -// switch defines -#define SB_GPIO 3 -#define SB_OFF GPIO_OUTLO //SlowBlank aus (TV-Mode) -#define SB_ON GPIO_INPUT //SlowBlank an (AV-Mode) -#define SB_WIDE GPIO_OUTHI //SlowBlank 6V (16/9-Mode) nicht realisiert - -#define FB_GPIO 1 -#define FB_OFF GPIO_LO //FastBlank aus (CVBS-Mode) -#define FB_ON GPIO_OUTHI //FastBlank an (RGB-Mode) -#define FB_LOOP GPIO_INPUT //FastBlank der PC-Grafik durchschleifen - -typedef enum VIDEOOUTPUTMODE -{ - NO_OUT = 0, //disable analog Output - CVBS_RGB_OUT = 1, - CVBS_YC_OUT = 2, - YC_OUT = 3 -} VIDEOOUTPUTMODE, *PVIDEOOUTPUTMODE; - - -#define GPMQFull 0x0001 //Main Message Queue Full -#define GPMQOver 0x0002 //Main Message Queue Overflow -#define HPQFull 0x0004 //High Priority Msg Queue Full -#define HPQOver 0x0008 -#define OSDQFull 0x0010 //OSD Queue Full -#define OSDQOver 0x0020 - -#define SECTION_EIT 0x01 -#define SECTION_SINGLE 0x00 -#define SECTION_CYCLE 0x02 -#define SECTION_CONTINUOS 0x04 -#define SECTION_MODE 0x06 -#define SECTION_IPMPE 0x0C // bis zu 4k groß -#define SECTION_HIGH_SPEED 0x1C // vergrößerter Puffer für High Speed Filter -#define DATA_PIPING_FLAG 0x20 // für Data Piping Filter - -#define PBUFSIZE_NONE 0x0000 -#define PBUFSIZE_1P 0x0100 -#define PBUFSIZE_2P 0x0200 -#define PBUFSIZE_1K 0x0300 -#define PBUFSIZE_2K 0x0400 -#define PBUFSIZE_4K 0x0500 -#define PBUFSIZE_8K 0x0600 -#define PBUFSIZE_16K 0x0700 -#define PBUFSIZE_32K 0x0800 - -typedef enum { - WCreate, - WDestroy, - WMoveD, - WMoveA, - WHide, - WTop, - DBox, - DLine, - DText, - Set_Font, - SetColor, - SetBlend, - SetWBlend, - SetCBlend, - SetNonBlend, - LoadBmp, - BlitBmp, - ReleaseBmp, - SetWTrans, - SetWNoTrans -} OSDCOM; - -typedef enum { - MultiPID, - VideoPID, - AudioPID, - InitFilt, - FiltError, - NewVersion, - CacheError, - AddPIDFilter, - DelPIDFilter, - Scan, - SetDescr, - SetIR -} PIDCOM; - -typedef enum { - SelAudChannels -} MPEGCOM; - -typedef enum { - AudioDAC, - CabADAC, - ON22K, - OFF22K, - MainSwitch, - ADSwitch, - SendDiSEqC, - SetRegister -} AUDCOM; - -typedef enum { - AudioState, - AudioBuffState, - VideoState1, - VideoState2, - VideoState3, - CrashCounter, - ReqVersion, - ReqVCXO, - ReqRegister -} REQCOM; - -typedef enum { - SetVidMode, - SetTestMode, - LoadVidCode, - SetMonitorType, - SetPanScanType, - SetFreezeMode -} ENC; - -typedef enum { - __Record, - __Stop, - __Play, - __Pause, - __Slow, - __FF_IP, - __Scan_I, - __Continue -} REC_PLAY; - -typedef enum { - COMTYPE_NOCOM, - COMTYPE_PIDFILTER, - COMTYPE_MPEGDECODER, - COMTYPE_OSD, - COMTYPE_BMP, - COMTYPE_ENCODER, - COMTYPE_AUDIODAC, - COMTYPE_REQUEST, - COMTYPE_SYSTEM, - COMTYPE_REC_PLAY, - COMTYPE_COMMON_IF, - COMTYPE_PID_FILTER, - COMTYPE_PES, - COMTYPE_TS, - COMTYPE_VIDEO, - COMTYPE_AUDIO, - COMTYPE_CI_LL, -} COMTYPE; - -typedef enum { - AV7110_VIDEO_FREEZE, - AV7110_VIDEO_CONTINUE -} VIDEOCOM; - -typedef enum { - DVB_AUDIO_PAUSE, -} AUDIOCOM; - - -#define VID_NONE_PREF 0x00 /* No aspect ration processing preferred */ -#define VID_PAN_SCAN_PREF 0x01 /* Pan and Scan Display preferred */ -#define VID_VERT_COMP_PREF 0x02 /* Vertical compression display preferred */ -#define VID_VC_AND_PS_PREF 0x03 /* PanScan and vertical Compression if allowed */ -#define VID_CENTRE_CUT_PREF 0x05 /* PanScan with zero vector */ - -#define DATA_NONE 0x00 -#define DATA_FSECTION 0x01 -#define DATA_IPMPE 0x02 -#define DATA_MPEG_RECORD 0x03 -#define DATA_DEBUG_MESSAGE 0x04 -#define DATA_COMMON_INTERFACE 0x05 -#define DATA_MPEG_PLAY 0x06 -#define DATA_BMP_LOAD 0x07 -#define DATA_IRCOMMAND 0x08 -#define DATA_PIPING 0x09 -#define DATA_STREAMING 0x0a -#define DATA_CI_GET 0x0b -#define DATA_CI_PUT 0x0c - -#define DATA_PES_RECORD 0x10 -#define DATA_PES_PLAY 0x11 -#define DATA_TS_RECORD 0x12 -#define DATA_TS_PLAY 0x13 - -#define CI_CMD_ERROR 0x00 -#define CI_CMD_ACK 0x01 -#define CI_CMD_SYSTEM_READY 0x02 -#define CI_CMD_KEYPRESS 0x03 -#define CI_CMD_ON_TUNED 0x04 -#define CI_CMD_ON_SWITCH_PROGRAM 0x05 -#define CI_CMD_SECTION_ARRIVED 0x06 -#define CI_CMD_SECTION_TIMEOUT 0x07 -#define CI_CMD_TIME 0x08 -#define CI_CMD_ENTER_MENU 0x09 -#define CI_CMD_FAST_PSI 0x0a -#define CI_CMD_GET_SLOT_INFO 0x0b - -#define CI_MSG_NONE 0x00 -#define CI_MSG_CI_INFO 0x01 -#define CI_MSG_MENU 0x02 -#define CI_MSG_LIST 0x03 -#define CI_MSG_TEXT 0x04 -#define CI_MSG_REQUEST_INPUT 0x05 -#define CI_MSG_INPUT_COMPLETE 0x06 -#define CI_MSG_LIST_MORE 0x07 -#define CI_MSG_MENU_MORE 0x08 -#define CI_MSG_CLOSE_MMI_IMM 0x09 -#define CI_MSG_SECTION_REQUEST 0x0a -#define CI_MSG_CLOSE_FILTER 0x0b -#define CI_PSI_COMPLETE 0x0c -#define CI_MODULE_READY 0x0d -#define CI_SWITCH_PRG_REPLY 0x0e -#define CI_MSG_TEXT_MORE 0x0f - -#define CI_MSG_CA_PMT 0xe0 -#define CI_MSG_ERROR 0xf0 - -typedef struct ring_buffer_s { - u8 *data; - int size; - int pread; - int pwrite; - - WAIT_QUEUE queue; - spinlock_t lock; - struct semaphore sema; - - int error; -} ring_buffer_t; - - -#define PROG_STREAM_MAP 0xBC -#define PRIVATE_STREAM1 0xBD -#define PADDING_STREAM 0xBE -#define PRIVATE_STREAM2 0xBF -#define AUDIO_STREAM_S 0xC0 -#define AUDIO_STREAM_E 0xDF -#define VIDEO_STREAM_S 0xE0 -#define VIDEO_STREAM_E 0xEF -#define ECM_STREAM 0xF0 -#define EMM_STREAM 0xF1 -#define DSM_CC_STREAM 0xF2 -#define ISO13522_STREAM 0xF3 -#define PROG_STREAM_DIR 0xFF - -#define PTS_DTS_FLAGS 0xC0 - -//pts_dts flags -#define PTS_ONLY 0x80 -#define PTS_DTS 0xC0 -#define TS_SIZE 188 -#define TRANS_ERROR 0x80 -#define PAY_START 0x40 -#define TRANS_PRIO 0x20 -#define PID_MASK_HI 0x1F -//flags -#define TRANS_SCRMBL1 0x80 -#define TRANS_SCRMBL2 0x40 -#define ADAPT_FIELD 0x20 -#define PAYLOAD 0x10 -#define COUNT_MASK 0x0F - -// adaptation flags -#define DISCON_IND 0x80 -#define RAND_ACC_IND 0x40 -#define ES_PRI_IND 0x20 -#define PCR_FLAG 0x10 -#define OPCR_FLAG 0x08 -#define SPLICE_FLAG 0x04 -#define TRANS_PRIV 0x02 -#define ADAP_EXT_FLAG 0x01 - -// adaptation extension flags -#define LTW_FLAG 0x80 -#define PIECE_RATE 0x40 -#define SEAM_SPLICE 0x20 - -#define MAX_PLENGTH 0xFFFF -#define MAX_VID_PES 0x1FFF - -typedef struct section_s { - int id; - int length; - int found; - u8 payload[4096+3]; -} section_t; - - -#define MY_STATE_PES_START 1 -#define MY_STATE_PES_STARTED 2 -#define MY_STATE_FULL 4 - -#define MASKL DMX_MAX_FILTER_SIZE -#define MAXFILT 32 - -struct dvb_filter { - int state; - int flags; - int type; - u8 ts_state; - - u16 pid; - u8 value[MASKL]; - u8 mask[MASKL]; -}; - - -enum {AV_PES_STREAM, PS_STREAM, TS_STREAM, PES_STREAM}; - -typedef struct ps_packet_s{ - u8 scr[6]; - u8 mux_rate[3]; - u8 stuff_length; - u8 data[20]; - u8 sheader_llength[2]; - int sheader_length; - u8 rate_bound[3]; - u8 audio_bound; - u8 video_bound; - u8 reserved; - int npes; - int mpeg; -} ps_packet_t; - -typedef struct a2p_s{ - int type; - int found; - int length; - int headr; - u8 cid; - u8 flags; - u8 abuf[MAX_PLENGTH]; - int alength; - u8 vbuf[MAX_PLENGTH]; - int vlength; - int plength; - u8 last_av_pts[4]; - u8 av_pts[4]; - u8 scr[4]; - u16 count0; - u16 count1; - u16 pidv; - u16 pida; - u16 countv; - u16 counta; - void *dataA; - void *dataV; - void (*write_cb)(u8 const *buf, long int count, - void *data); -} a2p_t; - - -typedef struct p2t_s { - u8 pes[TS_SIZE]; - u8 counter; - long int pos; - int frags; - struct dvb_demux_feed *feed; -} p2t_t; - - -/* place to store all the necessary device information */ -typedef struct av7110_s { - - /* devices */ - - struct dvb_device dvb_dev; - dvb_net_t dvb_net; - struct video_device video; - - struct saa7146 *saa; - - struct tasklet_struct debi_tasklet; - struct tasklet_struct gpio_tasklet; - struct tasklet_struct vpe_tasklet; - struct tasklet_struct fidb_tasklet; - - int adac_type; /* audio DAC type */ -#define DVB_ADAC_TI 0 -#define DVB_ADAC_CRYSTAL 1 -#define DVB_ADAC_NONE -1 - - - /* buffers */ - - void *iobuf; /* memory for all buffers */ - ring_buffer_t avout; /* buffer for video or A/V mux */ -#define AVOUTLEN (128*1024) - ring_buffer_t aout; /* buffer for audio */ -#define AOUTLEN (64*1024) - void *bmpbuf; -#define BMPLEN (8*32768+1024) - - /* bitmap buffers and states */ - - int bmpp; - int bmplen; - int bmp_win; - u16 bmp_x, bmp_y; - int bmp_trans; - int bmp_state; -#define BMP_NONE 0 -#define BMP_LOADING 1 -#define BMP_LOADINGS 2 -#define BMP_LOADED 3 - WAIT_QUEUE bmpq; - - - /* DEBI and polled command interface */ - - spinlock_t debilock; - struct semaphore dcomlock; - int debitype; - int debilen; - int debibuf; - - - /* Recording and playback flags */ - - int rec_mode; - int playing; -#define RP_NONE 0 -#define RP_VIDEO 1 -#define RP_AUDIO 2 -#define RP_AV 3 - - - /* OSD */ - - int osdwin; /* currently active window */ - u16 osdbpp[8]; - - - /* CA */ - - ca_slot_info_t ci_slot[2]; - - int vidmode; - dmxdev_t dmxdev; - struct dvb_demux demux; - char demux_id[16]; - - dmx_frontend_t hw_frontend; - dmx_frontend_t mem_frontend; - - int fe_synced; - struct semaphore pid_mutex; - - int video_blank; - struct video_status videostate; - int display_ar; - int trickmode; -#define TRICK_NONE 0 -#define TRICK_FAST 1 -#define TRICK_SLOW 2 -#define TRICK_FREEZE 3 - struct audio_status audiostate; - - struct dvb_demux_filter *handle2filter[MAXFILT]; - p2t_t p2t_filter[MAXFILT]; - dvb_filter_pes2ts_t p2t[2]; - struct ipack_s ipack[2]; - u8 *kbuf[2]; - - int sinfo; - int shsize; - int swsize; - - int tsf; - u32 ttbp; - int feeding; - - int arm_errors; - int registered; - - - /* AV711X */ - - u32 arm_fw; - u32 arm_rtsl; - u32 arm_vid; - u32 arm_app; - u32 avtype; - int arm_ready; - struct task_struct *arm_thread; - WAIT_QUEUE arm_wait; - u16 arm_loops; - int arm_rmmod; - - void *saa_mem; - void *debi_virt; - dma_addr_t debi_bus; - - u16 pids[DMX_PES_OTHER]; - - ring_buffer_t ci_rbuffer; - ring_buffer_t ci_wbuffer; - - - struct dvb_adapter *dvb_adapter; - struct dvb_device *video_dev; - struct dvb_device *audio_dev; - struct dvb_device *ca_dev; - struct dvb_device *osd_dev; - - int dsp_dev; -} av7110_t; - - -#define DPRAM_BASE 0x4000 - -#define BOOT_STATE (DPRAM_BASE + 0x3F8) -#define BOOT_SIZE (DPRAM_BASE + 0x3FA) -#define BOOT_BASE (DPRAM_BASE + 0x3FC) -#define BOOT_BLOCK (DPRAM_BASE + 0x400) -#define BOOT_MAX_SIZE 0xc00 - -#define IRQ_STATE (DPRAM_BASE + 0x0F4) -#define IRQ_STATE_EXT (DPRAM_BASE + 0x0F6) -#define MSGSTATE (DPRAM_BASE + 0x0F8) -#define FILT_STATE (DPRAM_BASE + 0x0FA) -#define COMMAND (DPRAM_BASE + 0x0FC) -#define COM_BUFF (DPRAM_BASE + 0x100) -#define COM_BUFF_SIZE 0x20 - -#define BUFF1_BASE (DPRAM_BASE + 0x120) -#define BUFF1_SIZE 0xE0 - -#define DATA_BUFF_BASE (DPRAM_BASE + 0x200) -#define DATA_BUFF_SIZE 0x1C00 - -/* new buffers */ - -#define DATA_BUFF0_BASE (DPRAM_BASE + 0x200) -#define DATA_BUFF0_SIZE 0x0800 - -#define DATA_BUFF1_BASE (DATA_BUFF0_BASE+DATA_BUFF0_SIZE) -#define DATA_BUFF1_SIZE 0x0800 - -#define DATA_BUFF2_BASE (DATA_BUFF1_BASE+DATA_BUFF1_SIZE) -#define DATA_BUFF2_SIZE 0x0800 - -#define Reserved (DPRAM_BASE + 0x1E00) -#define Reserved_SIZE 0x1C0 - -#define DEBUG_WINDOW (DPRAM_BASE + 0x1FC0) -#define DBG_LOOP_CNT (DEBUG_WINDOW + 0x00) -#define DBG_SEC_CNT (DEBUG_WINDOW + 0x02) -#define DBG_AVRP_BUFF (DEBUG_WINDOW + 0x04) -#define DBG_AVRP_PEAK (DEBUG_WINDOW + 0x06) -#define DBG_MSG_CNT (DEBUG_WINDOW + 0x08) -#define DBG_CODE_REG (DEBUG_WINDOW + 0x0a) -#define DBG_TTX_Q (DEBUG_WINDOW + 0x0c) -#define DBG_AUD_EN (DEBUG_WINDOW + 0x0e) -#define DBG_WRONG_COM (DEBUG_WINDOW + 0x10) -#define DBG_ARR_OVFL (DEBUG_WINDOW + 0x12) -#define DBG_BUFF_OVFL (DEBUG_WINDOW + 0x14) -#define DBG_OVFL_CNT (DEBUG_WINDOW + 0x16) -#define DBG_SEC_OVFL (DEBUG_WINDOW + 0x18) - -#define STATUS_BASE (DPRAM_BASE + 0x1FC0) -#define STATUS_SCR (STATUS_BASE + 0x00) -#define STATUS_MODES (STATUS_BASE + 0x04) -#define STATUS_LOOPS (STATUS_BASE + 0x08) - -#define RX_TYPE (DPRAM_BASE + 0x1FE8) -#define RX_LEN (DPRAM_BASE + 0x1FEA) -#define TX_TYPE (DPRAM_BASE + 0x1FEC) -#define TX_LEN (DPRAM_BASE + 0x1FEE) - -#define RX_BUFF (DPRAM_BASE + 0x1FF4) -#define TX_BUFF (DPRAM_BASE + 0x1FF6) - -#define HANDSHAKE_REG (DPRAM_BASE + 0x1FF8) -#define COM_IF_LOCK (DPRAM_BASE + 0x1FFA) - -#define IRQ_RX (DPRAM_BASE + 0x1FFC) -#define IRQ_TX (DPRAM_BASE + 0x1FFE) - -#define DRAM_START_CODE 0x2e000404 -#define DRAM_MAX_CODE_SIZE 0x00100000 - -#define RESET_LINE 2 -#define DEBI_DONE_LINE 1 -#define ARM_IRQ_LINE 0 - -#define DAC_CS 0x8000 -#define DAC_CDS 0x0000 - - -extern unsigned char *av7110_dpram_addr, *av7110_root_addr; -extern int av7110_dpram_len, av7110_root_len; - -extern void av7110_register_irc_handler(void (*func)(u32)); -extern void av7110_unregister_irc_handler(void (*func)(u32)); -extern void av7110_setup_irc_config (av7110_t *av7110, u32 ir_config); - -extern int av7110_init (void); -extern int av7110_ir_init (void); - -extern void av7110_exit (void); -extern void av7110_ir_exit (void); - - -#endif /* _AV7110_H_ */ - -/* - * Local variables: - * c-indent-level: 8 - * c-brace-imaginary-offset: 0 - * c-brace-offset: -8 - * c-argdecl-indent: 8 - * c-label-offset: -8 - * c-continued-statement-offset: 8 - * c-continued-brace-offset: 0 - * indent-tabs-mode: nil - * tab-width: 8 - * End: - */ diff -Nru a/drivers/media/dvb/av7110/av7110_firm.h b/drivers/media/dvb/av7110/av7110_firm.h --- a/drivers/media/dvb/av7110/av7110_firm.h Tue Oct 22 07:50:21 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,31852 +0,0 @@ - -#include - -u8 Dpram [] __initdata = { - 0xe5, 0x9f, 0xf0, 0x1c, 0xe1, 0xb0, 0xf0, 0x0e, - 0xe5, 0x9f, 0xf0, 0x18, 0xe2, 0x5e, 0xf0, 0x04, - 0xe2, 0x5e, 0xf0, 0x08, 0xe1, 0xa0, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x06, 0xe2, 0x5e, 0xf0, 0x04, - 0x2c, 0x00, 0x00, 0xe8, 0x2e, 0x02, 0xcb, 0x40, - 0x2e, 0x02, 0x39, 0xb4, 0xa5, 0xa5, 0x5a, 0x5a, - 0x00, 0x1f, 0x15, 0x55, 0x00, 0x00, 0x00, 0x09, - 0xe9, 0x2d, 0x5f, 0xff, 0xe1, 0x4f, 0x00, 0x00, - 0xe9, 0x2d, 0x00, 0x01, 0xe2, 0x8f, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x10, 0x21, 0xff, 0x48, 0x25, - 0x68, 0x00, 0x40, 0x52, 0x42, 0x08, 0xd1, 0x0b, - 0x32, 0x20, 0x0a, 0x00, 0x42, 0x08, 0xd1, 0x07, - 0x32, 0x20, 0x0a, 0x00, 0x42, 0x08, 0xd1, 0x03, - 0x0a, 0x00, 0x42, 0x08, 0xd0, 0x29, 0x32, 0x20, - 0x21, 0x0f, 0x42, 0x08, 0xd1, 0x01, 0x32, 0x10, - 0x09, 0x00, 0x21, 0x01, 0x42, 0x08, 0xd1, 0x08, - 0x1d, 0x12, 0x21, 0x02, 0x42, 0x08, 0xd1, 0x04, - 0x1d, 0x12, 0x21, 0x04, 0x42, 0x08, 0xd1, 0x00, - 0x1d, 0x12, 0x48, 0x13, 0x68, 0x00, 0xb4, 0x01, - 0x08, 0x90, 0x21, 0x01, 0x40, 0x81, 0x48, 0x0f, - 0x60, 0x01, 0x48, 0x0d, 0x58, 0x82, 0x48, 0x01, - 0x46, 0x86, 0x47, 0x10, 0x2c, 0x00, 0x00, 0xb1, - 0xbc, 0x02, 0x48, 0x0b, 0x68, 0x02, 0x23, 0x20, - 0x05, 0x1b, 0x40, 0x1a, 0x43, 0x99, 0x43, 0x11, - 0x60, 0x01, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe8, 0xbd, 0x00, 0x01, 0xe1, 0x69, 0xf0, 0x00, - 0xe8, 0xbd, 0x5f, 0xff, 0xe2, 0x5e, 0xf0, 0x04, - 0x2e, 0x08, 0x3b, 0xa4, 0x66, 0x00, 0x00, 0x14, - 0x66, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x0c, 0x2e, 0x02, 0xcc, 0x48, - 0x2c, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - - -u8 Root [] __initdata = { - 0xb4, 0x90, 0x49, 0x18, 0x1c, 0x0b, 0x4a, 0x18, - 0x1a, 0x50, 0x4f, 0x18, 0x1a, 0x79, 0x10, 0x8f, - 0x21, 0x00, 0x2f, 0x00, 0xdd, 0x04, 0xcb, 0x10, - 0xc2, 0x10, 0x31, 0x01, 0x42, 0xb9, 0xdb, 0xfa, - 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, - 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, - 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, - 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, - 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, - 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, - 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, - 0x49, 0x13, 0x18, 0x08, 0x49, 0x13, 0x60, 0x08, - 0xbc, 0x90, 0x47, 0x70, 0x2e, 0x02, 0x36, 0x7c, - 0x9e, 0x00, 0x0a, 0x00, 0x2e, 0x02, 0x37, 0x7c, - 0x2e, 0x02, 0x36, 0xcc, 0x2e, 0x02, 0x38, 0x9c, - 0x2e, 0x02, 0x37, 0x04, 0x2e, 0x02, 0x38, 0xa0, - 0x2e, 0x02, 0x37, 0x20, 0x2e, 0x02, 0x38, 0xa4, - 0x2e, 0x02, 0x36, 0xcc, 0x2e, 0x02, 0x38, 0xa8, - 0x2e, 0x02, 0x36, 0xe8, 0x2e, 0x02, 0x38, 0xac, - 0x2e, 0x02, 0x37, 0x20, 0x2e, 0x02, 0x38, 0xb0, - 0x2e, 0x02, 0x37, 0x04, 0x2e, 0x02, 0x38, 0xb4, - 0x2e, 0x02, 0x36, 0x7c, 0x2e, 0x02, 0x38, 0xb8, - 0xb5, 0xf0, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x07, - 0xb0, 0x82, 0x2a, 0x00, 0xd1, 0x03, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x0e, 0x38, - 0x06, 0x00, 0x21, 0x0b, 0x06, 0x89, 0x4b, 0x43, - 0x93, 0x01, 0x42, 0x88, 0xd1, 0x32, 0x08, 0x78, - 0xd3, 0x05, 0x1e, 0x78, 0x88, 0x00, 0x70, 0x20, - 0x34, 0x01, 0x3d, 0x01, 0x37, 0x01, 0x08, 0xb8, - 0xd3, 0x0f, 0x2d, 0x02, 0xdb, 0x0d, 0x08, 0x60, - 0xd3, 0x06, 0x88, 0x39, 0x0a, 0x09, 0x70, 0x21, - 0x88, 0x38, 0x70, 0x60, 0x34, 0x02, 0xe0, 0x02, - 0x88, 0x38, 0x80, 0x20, 0x34, 0x02, 0x3d, 0x02, - 0x37, 0x02, 0x07, 0xae, 0x0f, 0xb6, 0x1b, 0xad, - 0xd0, 0x08, 0x9b, 0x01, 0x68, 0x1b, 0x1c, 0x38, - 0x1c, 0x21, 0x1c, 0x2a, 0xf0, 0x1d, 0xfe, 0x6a, - 0x19, 0x7f, 0x19, 0x64, 0x2e, 0x00, 0xd0, 0x54, - 0x68, 0x38, 0x90, 0x00, 0x46, 0x6f, 0x78, 0x38, - 0x70, 0x20, 0x34, 0x01, 0x37, 0x01, 0x3e, 0x01, - 0xd1, 0xf9, 0xe0, 0x4a, 0x0e, 0x20, 0x06, 0x00, - 0x42, 0x88, 0xd1, 0x3f, 0xe0, 0x14, 0x08, 0x60, - 0xd3, 0x08, 0x1e, 0x60, 0x88, 0x01, 0x23, 0xff, - 0x02, 0x1b, 0x40, 0x19, 0x78, 0x3a, 0x43, 0x11, - 0x80, 0x01, 0xe0, 0x06, 0x88, 0x21, 0x06, 0x09, - 0x0e, 0x09, 0x78, 0x3a, 0x02, 0x12, 0x43, 0x11, - 0x80, 0x21, 0x34, 0x01, 0x3d, 0x01, 0x37, 0x01, - 0x07, 0xb8, 0xd0, 0x01, 0x2d, 0x00, 0xdc, 0xe6, - 0x07, 0xae, 0x0f, 0xb6, 0x1b, 0xad, 0xd0, 0x06, - 0x9b, 0x01, 0x68, 0x1b, 0x1c, 0x38, 0x1c, 0x21, - 0x1c, 0x2a, 0xf0, 0x1d, 0xfe, 0x33, 0x19, 0x7f, - 0x19, 0x64, 0x2e, 0x00, 0xd0, 0x1d, 0x08, 0x60, - 0xd3, 0x08, 0x1e, 0x60, 0x88, 0x01, 0x23, 0xff, - 0x02, 0x1b, 0x40, 0x19, 0x78, 0x3a, 0x43, 0x11, - 0x80, 0x01, 0xe0, 0x06, 0x88, 0x21, 0x06, 0x09, - 0x0e, 0x09, 0x78, 0x3a, 0x02, 0x12, 0x43, 0x11, - 0x80, 0x21, 0x34, 0x01, 0x37, 0x01, 0x3e, 0x01, - 0xd1, 0xe9, 0xe0, 0x06, 0x9b, 0x01, 0x68, 0x1b, - 0x1c, 0x38, 0x1c, 0x21, 0x1c, 0x2a, 0xf0, 0x1d, - 0xfe, 0x11, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x00, 0x48, - 0xb5, 0x00, 0x20, 0x03, 0xf0, 0x03, 0xfb, 0x98, - 0x48, 0x03, 0x89, 0x02, 0x8a, 0x01, 0x89, 0x80, - 0xf0, 0x05, 0xff, 0xc2, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x00, 0x00, 0xb5, 0xf0, 0x4f, 0x10, - 0x89, 0x3c, 0x89, 0xbe, 0x8a, 0x3d, 0x23, 0x04, - 0x43, 0xdb, 0x68, 0x78, 0x40, 0x18, 0x0c, 0x1a, - 0x60, 0x78, 0xb4, 0x04, 0x1c, 0x13, 0x22, 0x00, - 0x21, 0x00, 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x14, - 0x20, 0x01, 0x60, 0x78, 0xb0, 0x01, 0x4a, 0x07, - 0xb4, 0x04, 0x1c, 0x20, 0x1c, 0x31, 0x1c, 0x2a, - 0x4b, 0x04, 0xf0, 0x00, 0xf8, 0x09, 0xb0, 0x01, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0xf0, 0x9f, 0x05, 0x04, 0x04, 0x0c, 0x24, - 0x04, 0x0d, 0x0c, 0x2d, 0x04, 0x16, 0x0c, 0x36, - 0x04, 0x18, 0x0c, 0x00, 0xb0, 0x82, 0x90, 0x00, - 0x04, 0x38, 0x0c, 0x00, 0xb0, 0x81, 0x49, 0xa9, - 0x4f, 0xa9, 0x42, 0x8d, 0xd1, 0x00, 0x89, 0xbd, - 0x42, 0x8e, 0xd1, 0x00, 0x8a, 0x3e, 0x4a, 0xa7, - 0x42, 0x95, 0xd1, 0x02, 0x89, 0xbd, 0x08, 0xd3, - 0x81, 0xbb, 0x4b, 0xa4, 0x42, 0x9e, 0xd1, 0x02, - 0x8a, 0x3e, 0x08, 0xdb, 0x82, 0x3b, 0x9a, 0x01, - 0x42, 0x8a, 0xd1, 0x01, 0x8a, 0xba, 0x92, 0x01, - 0xa0, 0x9f, 0x22, 0x2d, 0x21, 0x00, 0xf0, 0x06, - 0xf8, 0x69, 0xa0, 0x9f, 0x22, 0x37, 0x21, 0x00, - 0xf0, 0x06, 0xf8, 0x64, 0x22, 0x3c, 0x21, 0x00, - 0x1c, 0x28, 0xf0, 0x06, 0xf8, 0x97, 0xa0, 0x9c, - 0x22, 0x41, 0x21, 0x00, 0xf0, 0x06, 0xf8, 0x5a, - 0x22, 0x46, 0x21, 0x00, 0x1c, 0x30, 0xf0, 0x06, - 0xf8, 0x8d, 0xa0, 0x99, 0x22, 0x37, 0x21, 0x01, - 0xf0, 0x06, 0xf8, 0x50, 0x22, 0x3e, 0x21, 0x01, - 0x1c, 0x20, 0xf0, 0x06, 0xf8, 0x83, 0xa0, 0x96, - 0x22, 0x37, 0x21, 0x02, 0xf0, 0x06, 0xf8, 0x46, - 0x22, 0x3e, 0x21, 0x02, 0x98, 0x01, 0xf0, 0x06, - 0xf8, 0x79, 0x8a, 0xbb, 0x99, 0x01, 0x42, 0x99, - 0xd0, 0x20, 0x68, 0x38, 0x90, 0x02, 0x28, 0x00, - 0xd0, 0x1a, 0x2b, 0x00, 0xd0, 0x0a, 0x22, 0x00, - 0x21, 0x00, 0x20, 0x1c, 0xb4, 0x07, 0x1c, 0x19, - 0x23, 0x10, 0x22, 0x1d, 0x98, 0x05, 0xf0, 0x0f, - 0xfe, 0x75, 0xb0, 0x03, 0x98, 0x01, 0x28, 0x00, - 0xd0, 0x0a, 0x22, 0x01, 0x21, 0x00, 0x20, 0x1c, - 0xb4, 0x07, 0x99, 0x04, 0x23, 0x10, 0x22, 0x1d, - 0x68, 0x38, 0xf0, 0x0f, 0xfe, 0x67, 0xb0, 0x03, - 0x98, 0x01, 0x82, 0xb8, 0x4b, 0x80, 0x42, 0x9c, - 0xd0, 0x46, 0xdc, 0x37, 0x2c, 0x00, 0xd0, 0x3d, - 0x3b, 0x02, 0x42, 0x9c, 0xd0, 0x38, 0x4b, 0x7d, - 0x42, 0x9c, 0xd1, 0x00, 0x1c, 0x34, 0xa0, 0x7c, - 0x22, 0x42, 0x21, 0x01, 0xf0, 0x06, 0xf8, 0x0a, - 0x22, 0x43, 0x21, 0x01, 0x1c, 0x20, 0xf0, 0x06, - 0xf8, 0x3d, 0xa0, 0x78, 0x22, 0x47, 0x21, 0x01, - 0xf0, 0x06, 0xf8, 0x00, 0x22, 0x00, 0xb4, 0x04, - 0x23, 0x00, 0x49, 0x64, 0x20, 0x1c, 0xf0, 0x0f, - 0xff, 0xdf, 0x89, 0xb8, 0xb0, 0x01, 0x42, 0x85, - 0xd1, 0x02, 0x89, 0x38, 0x42, 0x84, 0xd0, 0x44, - 0x81, 0xbd, 0x20, 0x1f, 0xf0, 0x10, 0xfb, 0x18, - 0x23, 0x03, 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, - 0x21, 0x02, 0x20, 0x1f, 0xf0, 0x10, 0xf9, 0x90, - 0x2d, 0x00, 0xd0, 0x33, 0x2d, 0x01, 0xd1, 0x11, - 0x25, 0x00, 0xe0, 0x32, 0x4b, 0x57, 0x42, 0x9c, - 0xd0, 0x04, 0x33, 0x01, 0x42, 0x9c, 0xd1, 0xca, - 0x89, 0x3c, 0xe7, 0xc8, 0x2d, 0x00, 0xd0, 0x01, - 0x1c, 0x2c, 0xe7, 0xc4, 0x1c, 0x34, 0xe7, 0xc2, - 0x1c, 0x2c, 0xe7, 0xc0, 0x42, 0xac, 0xd1, 0x01, - 0x20, 0x80, 0xe0, 0x00, 0x20, 0x00, 0x22, 0x00, - 0xb4, 0x04, 0x06, 0x00, 0x0e, 0x00, 0x22, 0x02, - 0x43, 0x02, 0x23, 0x01, 0x20, 0x1f, 0x1c, 0x29, - 0xf0, 0x0f, 0xff, 0xa6, 0x23, 0x01, 0x02, 0x9b, - 0x00, 0x5a, 0x21, 0x01, 0x20, 0x1f, 0xb0, 0x01, - 0xf0, 0x10, 0xf9, 0x62, 0x21, 0x00, 0x20, 0x1f, - 0xf0, 0x10, 0xfe, 0x54, 0x20, 0x01, 0xf0, 0x13, - 0xfa, 0x43, 0xe0, 0x02, 0x20, 0x00, 0xf0, 0x13, - 0xfa, 0x3f, 0x8a, 0x38, 0x42, 0x86, 0xd1, 0x02, - 0x89, 0x39, 0x42, 0x8c, 0xd0, 0x52, 0x28, 0x00, - 0xd0, 0x0d, 0x20, 0x03, 0xf0, 0x13, 0xfb, 0x96, - 0x20, 0x1e, 0xf0, 0x10, 0xfb, 0x93, 0x23, 0x03, - 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, 0x21, 0x02, - 0x20, 0x1e, 0xf0, 0x10, 0xf9, 0x41, 0x82, 0x3e, - 0x2e, 0x00, 0xd0, 0x3f, 0x42, 0xb4, 0xd1, 0x02, - 0x20, 0x80, 0x90, 0x00, 0xe0, 0x01, 0x20, 0x00, - 0x90, 0x00, 0xf0, 0x23, 0xf8, 0x8d, 0x23, 0x01, - 0x04, 0x1b, 0x43, 0x18, 0xf0, 0x23, 0xf8, 0x8c, - 0x21, 0x00, 0x20, 0x00, 0xf0, 0x14, 0xf8, 0x74, - 0x20, 0xff, 0x49, 0x37, 0x68, 0x09, 0x70, 0x08, - 0x49, 0x36, 0x48, 0x37, 0x23, 0x1e, 0x22, 0x10, - 0xf0, 0x14, 0xf9, 0xa8, 0x48, 0x35, 0x68, 0x00, - 0x78, 0x01, 0x23, 0x06, 0x43, 0x19, 0x70, 0x01, - 0xf0, 0x23, 0xf8, 0x72, 0x4b, 0x32, 0x40, 0x18, - 0xf0, 0x23, 0xf8, 0x72, 0x22, 0x00, 0xb4, 0x04, - 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x22, 0x02, - 0x43, 0x02, 0x23, 0x02, 0x20, 0x1e, 0x1c, 0x31, - 0xf0, 0x0f, 0xff, 0x46, 0x23, 0x01, 0x02, 0x9b, - 0x00, 0x5a, 0x21, 0x01, 0x20, 0x1e, 0xb0, 0x01, - 0xf0, 0x10, 0xf9, 0x02, 0x21, 0x00, 0x20, 0x1e, - 0xf0, 0x10, 0xfd, 0xf4, 0x42, 0xac, 0xd0, 0x18, - 0x42, 0xb4, 0xd0, 0x16, 0x2c, 0x00, 0xd0, 0x14, - 0x23, 0x01, 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x01, - 0x20, 0x1c, 0xf0, 0x10, 0xf8, 0xf1, 0x22, 0x00, - 0xb4, 0x04, 0x23, 0x00, 0x22, 0x82, 0x20, 0x1c, - 0x1c, 0x21, 0xf0, 0x0f, 0xff, 0x25, 0xb0, 0x01, - 0xa0, 0x1a, 0x22, 0x47, 0x21, 0x01, 0xf0, 0x05, - 0xff, 0x39, 0x81, 0x3c, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0x53, 0x49, 0x44, 0x3a, 0x00, 0x00, 0x00, 0x00, - 0x56, 0x50, 0x49, 0x44, 0x3a, 0x00, 0x00, 0x00, - 0x41, 0x50, 0x49, 0x44, 0x3a, 0x00, 0x00, 0x00, - 0x50, 0x43, 0x52, 0x50, 0x49, 0x44, 0x3a, 0x00, - 0x54, 0x58, 0x54, 0x50, 0x49, 0x44, 0x3a, 0x00, - 0x00, 0x00, 0xff, 0xfd, 0x00, 0x00, 0xff, 0xfc, - 0x2f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0x98, 0x2e, 0x08, 0x48, 0x10, - 0x2e, 0x08, 0x05, 0xb4, 0x2e, 0x08, 0x9b, 0xc4, - 0xff, 0xfe, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x22, 0x00, 0xb4, 0x04, 0x04, 0x01, - 0x0c, 0x09, 0x23, 0x00, 0x4a, 0x03, 0x1e, 0x50, - 0xf7, 0xff, 0xfe, 0x66, 0xb0, 0x01, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0x00, 0x22, 0x00, 0xb4, 0x04, 0x04, 0x02, - 0x0c, 0x12, 0x23, 0x00, 0x49, 0x03, 0x1e, 0x48, - 0xf7, 0xff, 0xfe, 0x56, 0xb0, 0x01, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0x00, 0x04, 0x00, 0x0c, 0x00, 0xd0, 0x08, - 0x28, 0x01, 0xd0, 0x0b, 0x28, 0x02, 0xd1, 0x02, - 0x02, 0x00, 0xf0, 0x13, 0xfa, 0xcf, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x80, 0xf0, 0x13, 0xfa, 0xca, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0xff, 0x30, 0x01, - 0xf0, 0x13, 0xfa, 0xc4, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xb0, 0x27, 0x00, 0x4c, 0x1b, 0x20, 0x01, - 0x04, 0x80, 0x21, 0x00, 0x22, 0x00, 0xc4, 0x86, - 0xc4, 0x84, 0x3c, 0x14, 0xf0, 0x05, 0xf8, 0x9c, - 0x61, 0x60, 0x28, 0x00, 0xd0, 0x06, 0x21, 0x01, - 0x04, 0x89, 0x61, 0xe1, 0x18, 0x41, 0x62, 0x20, - 0x61, 0xa1, 0xe0, 0x02, 0x61, 0xe7, 0x61, 0xa7, - 0x62, 0x27, 0x68, 0x21, 0x00, 0xc9, 0x4a, 0x10, - 0x18, 0x89, 0x60, 0x48, 0x20, 0x00, 0x49, 0x0f, - 0x4d, 0x0f, 0x00, 0x42, 0x52, 0x8d, 0x30, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x1d, 0xdb, 0xf8, - 0x20, 0x00, 0x1c, 0x39, 0x4c, 0x0b, 0x4f, 0x0c, - 0x4b, 0x0c, 0x00, 0x42, 0x52, 0xa5, 0x00, 0x82, - 0x50, 0xb9, 0x50, 0x99, 0x30, 0x01, 0x06, 0x00, - 0x0e, 0x00, 0x28, 0x20, 0xdb, 0xf5, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x00, 0x1c, - 0x2e, 0x08, 0x3c, 0x20, 0x2e, 0x08, 0x49, 0xa8, - 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x49, 0xe0, - 0x2e, 0x08, 0x4a, 0x98, 0x2e, 0x08, 0x4b, 0x18, - 0xb4, 0xf0, 0xb0, 0x81, 0x49, 0x25, 0xc9, 0x0c, - 0x39, 0x08, 0x1a, 0xd2, 0x60, 0x8a, 0xd5, 0x02, - 0x32, 0xff, 0x32, 0x01, 0x60, 0x8a, 0x6a, 0x0a, - 0x62, 0x8a, 0x68, 0x8f, 0x2f, 0xfe, 0xdb, 0x03, - 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0x47, 0x70, - 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, 0x4c, 0x1b, - 0x69, 0xa6, 0x69, 0x64, 0x2f, 0x3e, 0xdb, 0x24, - 0x00, 0xdb, 0x4f, 0x19, 0x19, 0xdb, 0x68, 0x5b, - 0x62, 0x4b, 0x93, 0x00, 0x1a, 0x9f, 0x4b, 0x15, - 0x69, 0xdd, 0x2f, 0x00, 0xdc, 0x00, 0x19, 0x7f, - 0x23, 0x01, 0x03, 0x1b, 0x18, 0xc3, 0x42, 0xbb, - 0xdd, 0x0f, 0x18, 0x17, 0x42, 0xb7, 0xdb, 0x09, - 0x9a, 0x00, 0x1b, 0x12, 0x2a, 0x00, 0xdc, 0x00, - 0x19, 0x52, 0x42, 0x93, 0xdd, 0x11, 0x18, 0x20, - 0x62, 0x08, 0xe0, 0x0e, 0x62, 0x0f, 0x1c, 0x14, - 0xe0, 0x0b, 0x18, 0x10, 0x62, 0x08, 0x1c, 0x14, - 0xe0, 0x07, 0x18, 0x12, 0x42, 0xb2, 0xdb, 0x00, - 0x62, 0x0c, 0x6a, 0x0a, 0x18, 0x10, 0x62, 0x08, - 0x1c, 0x14, 0x1c, 0x20, 0xb0, 0x01, 0xbc, 0xf0, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x00, 0x1c, - 0x2e, 0x08, 0x3c, 0x20, 0x48, 0x03, 0x6a, 0x81, - 0x62, 0x01, 0x69, 0x01, 0x31, 0x01, 0x61, 0x01, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x00, 0x1c, - 0xb5, 0xf7, 0x04, 0x05, 0x0c, 0x2d, 0x04, 0x0e, - 0x0c, 0x36, 0xb0, 0x81, 0x23, 0x01, 0x03, 0x1b, - 0x98, 0x03, 0x42, 0x9e, 0xdd, 0x05, 0x20, 0xff, - 0xb0, 0x01, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x4f, 0x24, 0x68, 0xb9, 0x29, 0xff, - 0xdb, 0x02, 0x20, 0xff, 0xb0, 0x01, 0xe7, 0xf4, - 0x00, 0x69, 0x19, 0x49, 0x00, 0x89, 0x4a, 0x20, - 0x18, 0x8c, 0x89, 0x21, 0x29, 0x01, 0xd0, 0x02, - 0x20, 0xff, 0xb0, 0x01, 0xe7, 0xe9, 0x79, 0x81, - 0x91, 0x00, 0x88, 0xa0, 0x08, 0x40, 0x07, 0x80, - 0xd1, 0x02, 0x1c, 0x28, 0xf0, 0x05, 0xfa, 0xf4, - 0x88, 0xa0, 0x23, 0x06, 0x40, 0x18, 0x28, 0x02, - 0xd1, 0x09, 0x88, 0xe0, 0x99, 0x00, 0x42, 0x88, - 0xd1, 0x05, 0x1c, 0x28, 0xf0, 0x05, 0xfa, 0xe8, - 0x20, 0xff, 0xb0, 0x01, 0xe7, 0xd1, 0x88, 0xe0, - 0x4b, 0x10, 0x42, 0x98, 0xd1, 0x01, 0x99, 0x00, - 0x80, 0xe1, 0x68, 0x39, 0x00, 0xc8, 0x4a, 0x0e, - 0x52, 0x15, 0x18, 0x80, 0x80, 0x46, 0x9a, 0x03, - 0x31, 0x01, 0x60, 0x42, 0x20, 0x00, 0x23, 0xff, - 0x60, 0x39, 0x33, 0x01, 0x42, 0x99, 0xd1, 0x00, - 0x60, 0x38, 0x68, 0xb9, 0x31, 0x01, 0x60, 0xb9, - 0x68, 0xfb, 0x42, 0x99, 0xdd, 0x00, 0x60, 0xf9, - 0xb0, 0x01, 0xe7, 0xb2, 0x2e, 0x08, 0x00, 0x1c, - 0x2e, 0x08, 0x48, 0x28, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x3c, 0x20, 0xb5, 0xf0, 0x26, 0xff, - 0xb0, 0x83, 0x49, 0x3b, 0x91, 0x01, 0x48, 0x3b, - 0x8e, 0x80, 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x4f, 0x38, - 0xcf, 0x05, 0x3f, 0x08, 0x1a, 0x80, 0x60, 0xb8, - 0x1c, 0x01, 0xd5, 0x02, 0x1d, 0xc8, 0x30, 0xf9, - 0x60, 0xb8, 0x68, 0xb8, 0x28, 0x00, 0xd1, 0x03, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0xd0, 0x49, 0x30, 0x5a, 0x0d, 0x18, 0x40, - 0x88, 0x44, 0x68, 0x40, 0x90, 0x00, 0x00, 0xa8, - 0x49, 0x2d, 0x58, 0x09, 0x91, 0x02, 0x29, 0x00, - 0xd0, 0x08, 0x49, 0x2c, 0x58, 0x0b, 0x99, 0x00, - 0x9e, 0x02, 0x1c, 0x28, 0x1c, 0x22, 0xf0, 0x1d, - 0xfa, 0xdb, 0x26, 0x00, 0x48, 0x28, 0x78, 0x00, - 0x28, 0x00, 0xd0, 0x09, 0x1c, 0x28, 0xf0, 0x0d, - 0xfa, 0xc3, 0x28, 0xff, 0xd1, 0x04, 0x98, 0x00, - 0x1c, 0x21, 0xf0, 0x0d, 0xfa, 0x3f, 0x26, 0x00, - 0x2e, 0x00, 0xd0, 0x29, 0x06, 0xed, 0x0e, 0xed, - 0x1c, 0xe0, 0x08, 0x82, 0x00, 0x92, 0x98, 0x00, - 0x99, 0x01, 0x6a, 0xfb, 0xf0, 0x1d, 0xfa, 0xba, - 0x00, 0x68, 0x19, 0x40, 0x00, 0x80, 0x49, 0x1b, - 0x18, 0x40, 0x88, 0x80, 0x21, 0x0c, 0x40, 0x01, - 0x29, 0x0c, 0xd1, 0x04, 0x02, 0x29, 0x31, 0x02, - 0x04, 0x09, 0x0c, 0x09, 0xe0, 0x03, 0x02, 0x29, - 0x31, 0x01, 0x04, 0x09, 0x0c, 0x09, 0x08, 0x40, - 0xd3, 0x04, 0x04, 0x08, 0x0c, 0x00, 0x21, 0x01, - 0x03, 0xc9, 0x43, 0x01, 0x48, 0x09, 0x85, 0x01, - 0x85, 0x44, 0x21, 0x01, 0x02, 0x49, 0x86, 0x81, - 0x68, 0x78, 0x28, 0xff, 0xd1, 0x02, 0x20, 0x00, - 0x60, 0x78, 0xe0, 0x01, 0x30, 0x01, 0x60, 0x78, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2c, 0x00, 0x02, 0x00, 0x2c, 0x00, 0x1f, 0xc0, - 0x2e, 0x08, 0x00, 0x1c, 0x2e, 0x08, 0x3c, 0x20, - 0x2e, 0x08, 0x4a, 0x98, 0x2e, 0x08, 0x4b, 0x18, - 0x2e, 0x08, 0x1a, 0x94, 0x2e, 0x08, 0x48, 0x28, - 0xb4, 0xf0, 0x06, 0x09, 0x0e, 0x09, 0x4f, 0x14, - 0x8e, 0xba, 0x2a, 0x00, 0xd0, 0x03, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0xf0, 0x47, 0x70, 0x1c, 0x05, - 0x4c, 0x10, 0x1d, 0x48, 0xd5, 0x00, 0x30, 0x01, - 0x10, 0x40, 0x04, 0x01, 0x0c, 0x09, 0x20, 0x00, - 0x29, 0x02, 0xdb, 0xf2, 0x29, 0xe0, 0xdc, 0xf0, - 0x22, 0x00, 0x29, 0x00, 0xdd, 0x07, 0x00, 0x53, - 0x5a, 0xee, 0x52, 0xe6, 0x32, 0x01, 0x04, 0x12, - 0x0c, 0x12, 0x42, 0x8a, 0xdb, 0xf7, 0x22, 0x04, - 0x85, 0x3a, 0x00, 0x49, 0x85, 0x79, 0x21, 0x0f, - 0x02, 0x49, 0x86, 0xb9, 0xbc, 0xf0, 0x47, 0x70, - 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x1e, 0x00, - 0xb5, 0xb0, 0x27, 0x00, 0x4d, 0x13, 0x8e, 0xa9, - 0x29, 0x00, 0xd0, 0x03, 0x43, 0xf8, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x79, 0x04, 0x09, - 0x0c, 0x09, 0x1c, 0x3a, 0x1c, 0x0f, 0x56, 0x81, - 0x29, 0x00, 0xd1, 0xf7, 0x24, 0x00, 0x2f, 0xfe, - 0xdd, 0x03, 0x27, 0xfe, 0x1d, 0xc1, 0x31, 0xd9, - 0x77, 0xcc, 0x1c, 0x7a, 0x49, 0x08, 0xf7, 0xff, - 0xfb, 0x8f, 0x20, 0x04, 0x85, 0x28, 0x1c, 0xf8, - 0x08, 0x80, 0x00, 0x80, 0x85, 0x68, 0x20, 0x0f, - 0x02, 0x40, 0x86, 0xa8, 0x1c, 0x20, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x1f, 0xc0, - 0x2c, 0x00, 0x1e, 0x00, 0xb5, 0x90, 0x06, 0x04, - 0x0e, 0x24, 0x06, 0x0f, 0x0e, 0x3f, 0xb0, 0x88, - 0xf0, 0x04, 0xfa, 0x1e, 0x28, 0x00, 0xd0, 0x05, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x08, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xab, 0x00, 0x70, 0x1c, - 0x70, 0x5f, 0x46, 0x68, 0x21, 0x20, 0xf0, 0x0a, - 0xfa, 0x6f, 0xb0, 0x08, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0xb4, 0xf0, 0x04, 0x0a, 0x0c, 0x12, - 0x4b, 0x15, 0x8e, 0x9f, 0x2f, 0x00, 0xd0, 0x03, - 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xf0, 0x47, 0x70, - 0x07, 0xd7, 0x0f, 0xff, 0x04, 0x09, 0x0c, 0x09, - 0x08, 0x49, 0x2f, 0x00, 0xd0, 0x03, 0x31, 0x03, - 0x04, 0x09, 0x0c, 0x09, 0xe0, 0x02, 0x31, 0x02, - 0x04, 0x09, 0x0c, 0x09, 0x1c, 0x05, 0x4c, 0x0b, - 0x20, 0x00, 0x29, 0x00, 0xdd, 0x07, 0x00, 0x47, - 0x5b, 0xee, 0x53, 0xe6, 0x30, 0x01, 0x04, 0x00, - 0x0c, 0x00, 0x42, 0x88, 0xdb, 0xf7, 0x20, 0x05, - 0x85, 0x18, 0x85, 0x5a, 0x20, 0x01, 0x02, 0x40, - 0x86, 0x98, 0x20, 0x00, 0xbc, 0xf0, 0x47, 0x70, - 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x02, 0x00, - 0x04, 0x01, 0x0c, 0x09, 0x48, 0x0b, 0x6f, 0xc2, - 0x20, 0x00, 0x43, 0xc0, 0x2a, 0x00, 0xd1, 0x0f, - 0x4a, 0x09, 0x8e, 0xd3, 0x2b, 0x00, 0xd1, 0x0b, - 0x48, 0x08, 0x86, 0xc1, 0x23, 0x07, 0x86, 0x83, - 0x85, 0x93, 0x85, 0xd1, 0x20, 0x09, 0x02, 0x40, - 0x86, 0xd0, 0x20, 0x01, 0x87, 0x90, 0x20, 0x00, - 0x47, 0x70, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0x80, - 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x00, 0xc0, - 0xb5, 0x80, 0x1c, 0x01, 0x4a, 0x0d, 0x8e, 0xd3, - 0x20, 0x00, 0x43, 0xc0, 0x2b, 0x00, 0xd1, 0x12, - 0x8d, 0x93, 0x2b, 0x07, 0xd1, 0x0f, 0x8d, 0xd7, - 0x20, 0x00, 0x85, 0x90, 0x2f, 0x00, 0xd0, 0x0a, - 0x23, 0x01, 0x02, 0xdb, 0x42, 0x9f, 0xdc, 0x06, - 0x1c, 0x3a, 0x48, 0x05, 0x4b, 0x05, 0x6a, 0xdb, - 0xf0, 0x1d, 0xf9, 0x98, 0x1c, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x1f, 0xc0, - 0x2c, 0x00, 0x12, 0x00, 0x2e, 0x08, 0x00, 0x1c, - 0xb5, 0xf0, 0xb0, 0x83, 0x49, 0x62, 0x8e, 0x88, - 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x4e, 0x5f, 0x78, 0x30, - 0x49, 0x5f, 0x91, 0x02, 0x78, 0x09, 0x42, 0x88, - 0xd1, 0x03, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x00, 0x4d, 0x5b, 0x4b, 0x5c, - 0x93, 0x01, 0x1d, 0xd9, 0x31, 0x19, 0x7d, 0x0a, - 0x00, 0x53, 0x18, 0x9b, 0x01, 0x1b, 0x19, 0x5b, - 0x78, 0xdc, 0x1c, 0x1f, 0x79, 0x1b, 0x42, 0x9c, - 0xd1, 0x04, 0x79, 0x7b, 0x07, 0xdb, 0x0f, 0xdb, - 0x2b, 0x01, 0xd1, 0x06, 0x7d, 0x0b, 0x93, 0x00, - 0x32, 0x01, 0x07, 0x52, 0x0f, 0x52, 0x75, 0x0a, - 0xe0, 0x08, 0x32, 0x01, 0x07, 0x52, 0x0f, 0x52, - 0x75, 0x0a, 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, - 0x28, 0x08, 0xdb, 0xe0, 0x28, 0x08, 0xd1, 0x03, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x98, 0x00, 0x00, 0x43, 0x18, 0x18, 0x01, 0x00, - 0x19, 0x47, 0x78, 0xf8, 0x00, 0xc0, 0x19, 0xc0, - 0x89, 0x84, 0x23, 0x01, 0x03, 0x1b, 0x42, 0x9c, - 0xdd, 0x00, 0x1c, 0x1c, 0x68, 0x81, 0x89, 0xc0, - 0x18, 0x08, 0x1c, 0xe1, 0x08, 0x8a, 0x00, 0x92, - 0x49, 0x3e, 0x9b, 0x01, 0x6a, 0xdb, 0xf0, 0x1d, - 0xf9, 0x35, 0x88, 0x38, 0x02, 0x00, 0x30, 0x09, - 0x49, 0x35, 0x85, 0x08, 0x85, 0x4c, 0x20, 0x01, - 0x02, 0x40, 0x86, 0x88, 0x78, 0xf8, 0x00, 0xc0, - 0x19, 0xc0, 0x89, 0xc1, 0x19, 0x09, 0x81, 0xc1, - 0x78, 0xf8, 0x00, 0xc0, 0x19, 0xc0, 0x89, 0x81, - 0x1b, 0x09, 0x81, 0x81, 0x78, 0xf8, 0x00, 0xc0, - 0x19, 0xc0, 0x89, 0x81, 0x29, 0x00, 0xd1, 0x4f, - 0x24, 0x00, 0x81, 0xc4, 0x78, 0xf9, 0x6a, 0xb8, - 0x18, 0x40, 0x73, 0x04, 0x78, 0xf8, 0x30, 0x01, - 0x07, 0x80, 0x0f, 0x80, 0x70, 0xf8, 0x78, 0x30, - 0x30, 0x01, 0x70, 0x30, 0x78, 0xf8, 0x79, 0x39, - 0x42, 0x88, 0xd1, 0x3d, 0x79, 0x78, 0x21, 0x02, - 0x40, 0x01, 0x29, 0x02, 0xd1, 0x1e, 0x70, 0xfc, - 0x71, 0x3c, 0x71, 0x7c, 0x49, 0x22, 0x80, 0x39, - 0x6a, 0xb8, 0x68, 0x00, 0xf0, 0x04, 0xfd, 0xb6, - 0x6a, 0xb8, 0xf0, 0x04, 0xfd, 0xb3, 0x20, 0x00, - 0x49, 0x1d, 0x00, 0x42, 0x18, 0x12, 0x01, 0x12, - 0x5a, 0xaa, 0x42, 0x8a, 0xd1, 0x04, 0x30, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x08, 0xdb, 0xf4, - 0x28, 0x08, 0xd1, 0x1d, 0x70, 0x34, 0x99, 0x02, - 0x70, 0x0c, 0xe0, 0x19, 0x07, 0xc0, 0x0f, 0xc0, - 0x28, 0x01, 0xd1, 0x15, 0x70, 0xfc, 0x71, 0x3c, - 0x21, 0x06, 0x1d, 0xf8, 0x30, 0x19, 0x73, 0x41, - 0x6a, 0xb9, 0x72, 0x0c, 0x79, 0x79, 0x08, 0x49, - 0x00, 0x49, 0x71, 0x79, 0x22, 0x04, 0x7b, 0x01, - 0xb4, 0x06, 0x78, 0xb9, 0x22, 0x0a, 0x20, 0x85, - 0x6a, 0xbb, 0xf0, 0x0f, 0xfd, 0xc3, 0xb0, 0x02, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x03, 0xc0, - 0x2e, 0x08, 0x03, 0xbc, 0x2e, 0x08, 0x45, 0x18, - 0x2e, 0x08, 0x00, 0x1c, 0x2c, 0x00, 0x02, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xb5, 0x80, 0x4f, 0x0b, - 0x68, 0x38, 0x28, 0x00, 0xd1, 0x0f, 0x20, 0x2f, - 0x02, 0x80, 0xf0, 0x04, 0xfd, 0x91, 0x60, 0x38, - 0x20, 0x00, 0x49, 0x07, 0x60, 0x08, 0x49, 0x07, - 0x60, 0x08, 0x49, 0x07, 0x60, 0x08, 0x20, 0x2f, - 0x02, 0x80, 0x49, 0x06, 0x60, 0x08, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x02, 0xcb, 0x04, - 0x2e, 0x02, 0xcb, 0x0c, 0x2e, 0x02, 0xcb, 0x08, - 0x2e, 0x02, 0xcb, 0x10, 0x2e, 0x02, 0xcb, 0x14, - 0xb5, 0x80, 0x4f, 0x04, 0x68, 0x38, 0xf0, 0x04, - 0xfd, 0x7d, 0x20, 0x00, 0x60, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x02, 0xcb, 0x04, - 0xb5, 0xf0, 0xb0, 0x82, 0x4a, 0x33, 0x8e, 0x90, - 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x48, 0x30, 0x68, 0x01, - 0x4e, 0x30, 0x68, 0x30, 0x1a, 0x09, 0xd1, 0x03, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x29, 0x00, 0xda, 0x02, 0x23, 0x2f, 0x02, 0x9b, - 0x18, 0xc9, 0x23, 0x2f, 0x01, 0x1b, 0x42, 0x99, - 0xda, 0x03, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x4a, 0x24, 0x8e, 0xd2, 0x2a, 0x00, - 0xd0, 0x06, 0x4b, 0x25, 0x42, 0x99, 0xda, 0x03, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1f, 0xcf, 0x3f, 0xff, 0x3f, 0x72, 0x4b, 0x21, - 0x42, 0x9f, 0xdd, 0x00, 0x1c, 0x1f, 0x21, 0x2f, - 0x02, 0x89, 0x1a, 0x0c, 0x4d, 0x1e, 0x49, 0x1f, - 0x91, 0x01, 0x42, 0xa7, 0xdd, 0x14, 0x1b, 0x3a, - 0x92, 0x00, 0x99, 0x01, 0x68, 0x09, 0x18, 0x08, - 0x1c, 0x22, 0x49, 0x1b, 0x6b, 0x2b, 0xf0, 0x1d, - 0xf8, 0x45, 0x4b, 0x19, 0x18, 0xe1, 0x98, 0x01, - 0x9a, 0x00, 0x68, 0x00, 0x6b, 0x2b, 0xf0, 0x1d, - 0xf8, 0x3d, 0x9a, 0x00, 0x60, 0x32, 0xe0, 0x0e, - 0x99, 0x01, 0x68, 0x09, 0x18, 0x08, 0x1c, 0x3a, - 0x49, 0x11, 0x6b, 0x2b, 0xf0, 0x1d, 0xf8, 0x32, - 0x68, 0x30, 0x19, 0xc1, 0x20, 0x2f, 0x02, 0x80, - 0xf0, 0x1d, 0xf8, 0x36, 0x60, 0x31, 0x20, 0x12, - 0x4a, 0x04, 0x85, 0x10, 0x85, 0x57, 0x20, 0x01, - 0x02, 0x40, 0x86, 0x90, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x1f, 0xc0, - 0x2e, 0x02, 0xcb, 0x0c, 0x2e, 0x02, 0xcb, 0x08, - 0x00, 0x00, 0x0a, 0x48, 0x00, 0x00, 0x0f, 0x6c, - 0x2e, 0x08, 0x00, 0x1c, 0x2e, 0x02, 0xcb, 0x04, - 0x2c, 0x00, 0x02, 0x00, 0x2a, 0x00, 0xd0, 0x05, - 0x78, 0x03, 0x70, 0x0b, 0x30, 0x01, 0x31, 0x01, - 0x3a, 0x01, 0xd1, 0xf9, 0x47, 0x70, 0xb5, 0xf3, - 0xb0, 0x83, 0x98, 0x03, 0x78, 0x40, 0x00, 0x80, - 0x1c, 0x0f, 0x49, 0x3d, 0x58, 0x08, 0x28, 0x00, - 0xd1, 0x05, 0x20, 0xb0, 0xb0, 0x03, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x98, 0x03, - 0x88, 0x45, 0x30, 0x04, 0xc8, 0x41, 0x1d, 0xf2, - 0x32, 0xb9, 0x1a, 0x14, 0x23, 0x01, 0x03, 0x1b, - 0x42, 0x9d, 0xdd, 0x03, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x03, 0xe7, 0xec, 0x19, 0x79, 0x91, 0x00, - 0x4b, 0x30, 0x93, 0x02, 0x2c, 0xbc, 0xdc, 0x01, - 0x2c, 0x00, 0xda, 0x07, 0x9b, 0x02, 0x68, 0x18, - 0x30, 0x01, 0x60, 0x18, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x03, 0xe7, 0xdc, 0x42, 0xac, 0xdb, 0x06, - 0x9b, 0x02, 0x68, 0x5b, 0x1c, 0x39, 0x1c, 0x2a, - 0xf0, 0x1c, 0xff, 0xd0, 0xe0, 0x44, 0x2d, 0x00, - 0xdd, 0x42, 0x4b, 0x25, 0x93, 0x01, 0x99, 0x00, - 0x42, 0x8f, 0xd9, 0x07, 0x9b, 0x02, 0x68, 0x18, - 0x30, 0x01, 0x60, 0x18, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x03, 0xe7, 0xc4, 0x42, 0xa5, 0xdd, 0x07, - 0x9b, 0x02, 0x68, 0x5b, 0x1c, 0x39, 0x1c, 0x22, - 0xf0, 0x1c, 0xff, 0xb8, 0x68, 0x36, 0xe0, 0x05, - 0x9b, 0x02, 0x68, 0x5b, 0x1c, 0x39, 0x1c, 0x2a, - 0xf0, 0x1c, 0xff, 0xb0, 0x19, 0x3f, 0x1b, 0x2d, - 0x79, 0xb0, 0x19, 0x80, 0x9a, 0x03, 0x78, 0x52, - 0x00, 0xd3, 0x1a, 0x9a, 0x00, 0x92, 0x9b, 0x01, - 0x68, 0x1b, 0x18, 0xd2, 0x78, 0x92, 0x06, 0xd2, - 0x0e, 0xd2, 0x1d, 0x31, 0x2a, 0x12, 0xd1, 0x06, - 0x78, 0xca, 0x0a, 0x12, 0xd2, 0x03, 0x78, 0x89, - 0x29, 0x09, 0xd1, 0x00, 0x38, 0x01, 0x1d, 0xf1, - 0x31, 0xb9, 0x1a, 0x0c, 0x2c, 0xbc, 0xdc, 0x01, - 0x2c, 0x00, 0xda, 0x03, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x03, 0xe7, 0x90, 0x2d, 0x00, 0xdc, 0xbe, - 0x20, 0x00, 0xb0, 0x03, 0xe7, 0x8b, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x00, 0x58, - 0x2e, 0x08, 0x9b, 0x30, 0xb4, 0xf0, 0x68, 0x42, - 0x68, 0x84, 0x1d, 0xe1, 0x31, 0xb7, 0x1c, 0x16, - 0xb0, 0x81, 0x42, 0x91, 0xd9, 0x09, 0x78, 0x51, - 0x07, 0x09, 0x0f, 0x09, 0x02, 0x09, 0x78, 0x92, - 0x43, 0x11, 0x31, 0x03, 0x04, 0x09, 0x0c, 0x09, - 0xe0, 0x5b, 0x68, 0x21, 0x79, 0x8b, 0x93, 0x00, - 0x1d, 0x0f, 0x18, 0x59, 0x78, 0x45, 0x00, 0xeb, - 0x1b, 0x5b, 0x00, 0x9b, 0x4d, 0x2b, 0x68, 0x2d, - 0x19, 0x5b, 0x78, 0x9b, 0x06, 0xdb, 0x0e, 0xdb, - 0x2b, 0x12, 0xd1, 0x31, 0x1d, 0xe3, 0x33, 0xb9, - 0x1b, 0x9b, 0x06, 0x1d, 0x0e, 0x2d, 0x78, 0xfe, - 0x0a, 0x33, 0xd2, 0x29, 0x2d, 0x0e, 0xda, 0x27, - 0x9b, 0x00, 0x2b, 0x09, 0xdd, 0x06, 0x79, 0x3b, - 0x18, 0xfb, 0x33, 0x05, 0x42, 0x8b, 0xd0, 0x1f, - 0x39, 0x01, 0xe0, 0x1d, 0x9b, 0x00, 0x2b, 0x09, - 0xd1, 0x1a, 0x79, 0x3b, 0x2b, 0x00, 0xd0, 0x01, - 0x39, 0x01, 0xe0, 0x15, 0x39, 0x01, 0x1d, 0xe3, - 0x33, 0xb8, 0x42, 0x93, 0xd9, 0x09, 0x78, 0x53, - 0x07, 0x1b, 0x0f, 0x1b, 0x02, 0x1b, 0x04, 0x1b, - 0x0c, 0x1b, 0x33, 0x03, 0x04, 0x1b, 0x0c, 0x1b, - 0xe0, 0x03, 0x78, 0x4b, 0x33, 0x03, 0x04, 0x1b, - 0x0c, 0x1b, 0x42, 0x9d, 0xda, 0x00, 0x31, 0x01, - 0x1d, 0xe3, 0x33, 0xb8, 0x42, 0x93, 0xd9, 0x0b, - 0x78, 0x52, 0x07, 0x12, 0x0f, 0x12, 0x02, 0x12, - 0x04, 0x12, 0x0c, 0x12, 0x78, 0x09, 0x18, 0x51, - 0x31, 0x03, 0x04, 0x09, 0x0c, 0x09, 0xe0, 0x08, - 0x78, 0x0a, 0x07, 0x12, 0x0f, 0x12, 0x02, 0x12, - 0x78, 0x49, 0x43, 0x11, 0x31, 0x03, 0x04, 0x09, - 0x0c, 0x09, 0x80, 0x41, 0xb0, 0x01, 0xbc, 0xf0, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x30, - 0x4a, 0x02, 0xc2, 0x03, 0x3a, 0x08, 0x20, 0x00, - 0x60, 0x90, 0x47, 0x70, 0x2e, 0x08, 0x44, 0x20, - 0x48, 0x01, 0x68, 0x80, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x44, 0x20, 0x48, 0x01, 0x68, 0x80, - 0x08, 0xc0, 0x47, 0x70, 0x2e, 0x08, 0x44, 0x20, - 0x48, 0x02, 0x68, 0x81, 0x08, 0xc9, 0x68, 0x00, - 0x18, 0x08, 0x47, 0x70, 0x2e, 0x08, 0x44, 0x20, - 0xb4, 0xf0, 0x1c, 0x03, 0x20, 0x00, 0xb0, 0x82, - 0x49, 0x53, 0x91, 0x01, 0x68, 0x89, 0x18, 0xcf, - 0x97, 0x00, 0x08, 0xca, 0x07, 0x4c, 0x0f, 0x64, - 0x49, 0x4f, 0x68, 0x09, 0xd1, 0x32, 0x1c, 0x1f, - 0xd5, 0x04, 0x42, 0x7f, 0x07, 0x7f, 0x0f, 0x7f, - 0x42, 0x7f, 0xe0, 0x01, 0x07, 0x7f, 0x0f, 0x7f, - 0x2f, 0x00, 0xd1, 0x27, 0x2b, 0x10, 0xd0, 0x16, - 0xdc, 0x05, 0x2b, 0x00, 0xd0, 0x5a, 0x2b, 0x08, - 0xd1, 0x59, 0x5c, 0x88, 0xe0, 0x81, 0x2b, 0x18, - 0xd0, 0x13, 0x2b, 0x20, 0xd1, 0x53, 0x5c, 0x88, - 0x06, 0x00, 0x18, 0x89, 0x78, 0x4a, 0x04, 0x12, - 0x18, 0x80, 0x78, 0x8a, 0x02, 0x12, 0x18, 0x80, - 0x78, 0xc9, 0x18, 0x40, 0xe0, 0x71, 0x5c, 0x88, - 0x02, 0x00, 0x18, 0x89, 0x78, 0x49, 0x18, 0x40, - 0xe0, 0x6b, 0x5c, 0x88, 0x04, 0x00, 0x18, 0x89, - 0x78, 0x4a, 0x02, 0x12, 0x18, 0x80, 0x78, 0x89, - 0x18, 0x40, 0xe0, 0x62, 0x2b, 0x00, 0xd1, 0x03, - 0x20, 0x00, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, - 0x9f, 0x00, 0x08, 0xfd, 0x07, 0x7f, 0x0f, 0x7f, - 0x2b, 0x20, 0xdc, 0x56, 0x1a, 0xae, 0x4d, 0x2f, - 0x2e, 0x05, 0xd2, 0x52, 0xa3, 0x01, 0x5d, 0x9b, - 0x00, 0x5b, 0x44, 0x9f, 0x02, 0x09, 0x14, 0x25, - 0x38, 0x00, 0x5c, 0x88, 0x5d, 0x29, 0x40, 0x08, - 0x21, 0x08, 0x1b, 0xc9, 0x40, 0xc8, 0xe0, 0x44, - 0x1c, 0x50, 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, - 0x02, 0x12, 0x5c, 0x08, 0x18, 0x80, 0x21, 0x08, - 0x1b, 0xc9, 0x40, 0xc8, 0xe0, 0x39, 0x1c, 0x50, - 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, 0x02, 0x12, - 0x1c, 0x43, 0x5c, 0x08, 0x18, 0x80, 0x02, 0x00, - 0x5c, 0xc9, 0x18, 0x08, 0x21, 0x08, 0x1b, 0xc9, - 0x40, 0xc8, 0xe0, 0x2a, 0xe0, 0x29, 0xe0, 0x28, - 0x1c, 0x50, 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, - 0x02, 0x12, 0x1c, 0x43, 0x5c, 0x08, 0x18, 0x80, - 0x02, 0x00, 0x1c, 0x5a, 0x5c, 0xcb, 0x18, 0x18, - 0x02, 0x00, 0x5c, 0x89, 0x18, 0x08, 0x21, 0x08, - 0x1b, 0xc9, 0x40, 0xc8, 0xe0, 0x15, 0x1c, 0x50, - 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, 0x02, 0x12, - 0x1c, 0x43, 0x5c, 0x08, 0x18, 0x80, 0x02, 0x00, - 0x1c, 0x5a, 0x5c, 0xcb, 0x18, 0x18, 0x02, 0x03, - 0x1c, 0x50, 0x5c, 0x8a, 0x18, 0xd2, 0x40, 0xba, - 0x5c, 0x08, 0x21, 0x08, 0x1b, 0xc9, 0x40, 0xc8, - 0x18, 0x80, 0x99, 0x01, 0x9f, 0x00, 0x60, 0x8f, - 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x44, 0x20, 0x2e, 0x08, 0x00, 0x60, - 0xb5, 0xb0, 0x1c, 0x07, 0x20, 0x00, 0x24, 0x00, - 0x2f, 0x00, 0xdd, 0x09, 0x00, 0x85, 0x18, 0x2d, - 0x00, 0x6d, 0x20, 0x04, 0xf7, 0xff, 0xff, 0x44, - 0x19, 0x40, 0x34, 0x01, 0x42, 0xbc, 0xdb, 0xf5, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x47, 0x70, 0xb5, 0xb0, 0x1c, 0x0c, 0x1c, 0x05, - 0x1c, 0x17, 0xb0, 0x90, 0xf0, 0x22, 0xfa, 0x20, - 0x49, 0x25, 0x20, 0x0c, 0xf0, 0x22, 0xf9, 0xe8, - 0xf0, 0x22, 0xf9, 0xde, 0x4b, 0x23, 0x40, 0x18, - 0xf0, 0x22, 0xf9, 0xde, 0xf0, 0x22, 0xfa, 0x4a, - 0x20, 0x10, 0x90, 0x0a, 0x20, 0xff, 0x90, 0x0b, - 0xa8, 0x0f, 0x90, 0x0c, 0x20, 0x0c, 0x90, 0x0d, - 0x48, 0x1d, 0x90, 0x0e, 0xa8, 0x0a, 0xf0, 0x14, - 0xfb, 0xa5, 0xab, 0x07, 0x70, 0x1d, 0x94, 0x08, - 0x72, 0x1f, 0x24, 0x00, 0xab, 0x09, 0x70, 0x5c, - 0x27, 0x00, 0x4d, 0x18, 0xf0, 0x14, 0xfc, 0x06, - 0x28, 0x00, 0xd0, 0x02, 0x37, 0x01, 0x42, 0xaf, - 0xdb, 0xf8, 0x20, 0x01, 0xa9, 0x07, 0xf0, 0x14, - 0xfc, 0x07, 0xf0, 0x14, 0xfb, 0xfb, 0x28, 0x00, - 0xd1, 0xfb, 0x94, 0x0b, 0xa8, 0x0a, 0xf0, 0x14, - 0xfb, 0x89, 0xf0, 0x22, 0xf9, 0xe9, 0x21, 0x00, - 0x20, 0x0c, 0xf0, 0x22, 0xf9, 0xb1, 0xf0, 0x22, - 0xf9, 0xa7, 0x23, 0x01, 0x02, 0xdb, 0x43, 0x18, - 0xf0, 0x22, 0xf9, 0xa6, 0xf0, 0x22, 0xfa, 0x12, - 0x46, 0x68, 0xf0, 0x14, 0xfb, 0xc3, 0x98, 0x04, - 0xb0, 0x10, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x00, 0x15, 0xa5, 0xff, 0xff, 0xf7, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x27, 0x10, - 0xb5, 0xff, 0x9e, 0x09, 0x1c, 0x04, 0x1c, 0x0d, - 0x1c, 0x17, 0xb0, 0x93, 0xf0, 0x22, 0xf9, 0xc4, - 0x49, 0x31, 0x20, 0x0c, 0xf0, 0x22, 0xf9, 0x8c, - 0xf0, 0x22, 0xf9, 0x82, 0x4b, 0x2f, 0x40, 0x18, - 0xf0, 0x22, 0xf9, 0x82, 0xf0, 0x22, 0xf9, 0xee, - 0x20, 0x10, 0x90, 0x0d, 0x20, 0xff, 0x90, 0x0e, - 0xa8, 0x12, 0x90, 0x0f, 0x20, 0x0c, 0x90, 0x10, - 0x48, 0x29, 0x90, 0x11, 0xa8, 0x0d, 0xf0, 0x14, - 0xfb, 0x49, 0xab, 0x07, 0x70, 0x1c, 0x95, 0x08, - 0x72, 0x1f, 0x20, 0xff, 0xab, 0x09, 0x70, 0x58, - 0x1c, 0x60, 0x71, 0x18, 0x9b, 0x16, 0x93, 0x0b, - 0xab, 0x0c, 0x70, 0x1e, 0x20, 0xff, 0x70, 0x58, - 0x24, 0x00, 0x4d, 0x20, 0xf0, 0x14, 0xfb, 0xa2, - 0x28, 0x00, 0xd0, 0x02, 0x34, 0x01, 0x42, 0xac, - 0xdb, 0xf8, 0x2f, 0x00, 0xd1, 0x04, 0x20, 0x01, - 0xa9, 0x0a, 0xf0, 0x14, 0xfb, 0xa1, 0xe0, 0x03, - 0x20, 0x02, 0xa9, 0x07, 0xf0, 0x14, 0xfb, 0x9c, - 0xf0, 0x14, 0xfb, 0x90, 0x28, 0x00, 0xd1, 0xfb, - 0x27, 0x00, 0x97, 0x0e, 0xa8, 0x0d, 0xf0, 0x14, - 0xfb, 0x1d, 0xf0, 0x22, 0xf9, 0x7d, 0x21, 0x00, - 0x20, 0x0c, 0xf0, 0x22, 0xf9, 0x45, 0xf0, 0x22, - 0xf9, 0x3b, 0x23, 0x01, 0x02, 0xdb, 0x43, 0x18, - 0xf0, 0x22, 0xf9, 0x3a, 0xf0, 0x22, 0xf9, 0xa6, - 0x46, 0x68, 0xf0, 0x14, 0xfb, 0x57, 0x98, 0x01, - 0x0a, 0x80, 0xd2, 0x05, 0x20, 0x01, 0xb0, 0x13, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0xb0, 0x13, 0xe7, 0xf8, 0x00, 0x00, - 0x2e, 0x00, 0x15, 0xa5, 0xff, 0xff, 0xf7, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x27, 0x10, - 0x1c, 0x01, 0x48, 0x04, 0x61, 0xc1, 0x68, 0x00, - 0x28, 0x00, 0xd1, 0x01, 0x48, 0x02, 0x60, 0x01, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x68, - 0x6e, 0x00, 0x17, 0x00, 0xb5, 0xb0, 0x4f, 0x41, - 0x69, 0x38, 0x4c, 0x41, 0x28, 0x00, 0xd0, 0x07, - 0x20, 0x03, 0x60, 0x20, 0x69, 0x38, 0x38, 0x01, - 0x61, 0x38, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x21, 0x02, 0x69, 0x78, 0x28, 0x00, 0xd0, 0x04, - 0x60, 0x21, 0x69, 0x78, 0x38, 0x01, 0x61, 0x78, - 0xd1, 0xf3, 0x68, 0xf8, 0x28, 0x00, 0xd0, 0x20, - 0x38, 0x01, 0x60, 0xf8, 0x4a, 0x35, 0xd0, 0x08, - 0x68, 0xbb, 0x18, 0xd2, 0x3a, 0x20, 0x7f, 0xd2, - 0x1e, 0x45, 0x40, 0xea, 0x07, 0xd2, 0x0f, 0xd2, - 0xe0, 0x09, 0x68, 0xbb, 0x18, 0xd2, 0x3a, 0x20, - 0x7f, 0xd2, 0x4b, 0x2f, 0x5c, 0x9a, 0x23, 0x01, - 0x40, 0x5a, 0x06, 0x12, 0x0e, 0x12, 0x23, 0x01, - 0x2a, 0x00, 0xd0, 0x02, 0x61, 0x79, 0x61, 0x3b, - 0xe0, 0x01, 0x61, 0x39, 0x61, 0x7b, 0x28, 0x00, - 0xd1, 0xcf, 0x68, 0xb8, 0x30, 0x01, 0x60, 0xb8, - 0x23, 0x09, 0x68, 0x7a, 0x1c, 0x01, 0x42, 0x90, - 0xdc, 0x03, 0x60, 0xfb, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x20, 0x1c, 0x55, 0x42, 0x8d, - 0xd1, 0x03, 0x61, 0x78, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x1c, 0x95, 0x42, 0x8d, 0xd1, 0x0d, - 0x7e, 0x3d, 0x2d, 0xff, 0xd0, 0x0a, 0x2d, 0x00, - 0xd0, 0x03, 0x60, 0xfb, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x19, 0x61, 0x38, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x32, 0x03, 0x42, 0x8a, - 0xd1, 0x04, 0x20, 0x22, 0x61, 0x78, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x69, 0xf9, 0x60, 0x21, - 0x68, 0x79, 0x68, 0xba, 0x31, 0x04, 0x42, 0x91, - 0xd1, 0x0a, 0x69, 0xf9, 0x29, 0x00, 0xd0, 0x03, - 0x61, 0x38, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x61, 0x78, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0xf0, 0x03, 0xff, 0xca, 0x20, 0x00, 0x60, 0x38, - 0x69, 0xf8, 0x60, 0x20, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x68, - 0x6e, 0x00, 0x17, 0x00, 0x2e, 0x08, 0x44, 0x2c, - 0x2e, 0x08, 0x00, 0x68, 0xb5, 0xb0, 0x04, 0x0b, - 0x0c, 0x1b, 0x04, 0x14, 0x0c, 0x24, 0x49, 0x14, - 0x68, 0x0a, 0x2a, 0x00, 0xd0, 0x02, 0x68, 0x0a, - 0x2a, 0x00, 0xd1, 0xfc, 0x22, 0x01, 0x60, 0x0a, - 0x2b, 0x0a, 0xdd, 0x00, 0x23, 0x0a, 0x22, 0x00, - 0x4f, 0x0e, 0x2b, 0x00, 0xdd, 0x05, 0x00, 0x55, - 0x5b, 0x45, 0x54, 0xbd, 0x32, 0x01, 0x42, 0x9a, - 0xdb, 0xf9, 0x76, 0x0c, 0x20, 0xff, 0x18, 0xfa, - 0x70, 0x50, 0x20, 0x00, 0x60, 0x4b, 0x22, 0x20, - 0x61, 0x08, 0x61, 0x4a, 0x60, 0x88, 0x60, 0xc8, - 0x49, 0x05, 0x20, 0x32, 0xf0, 0x03, 0xff, 0x66, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x01, 0x68, 0x2e, 0x08, 0x44, 0x2c, - 0x2e, 0x00, 0x17, 0x61, 0xb5, 0x80, 0x04, 0x01, - 0x0c, 0x09, 0x20, 0x00, 0x22, 0x00, 0xb0, 0x88, - 0x00, 0x47, 0x46, 0x6b, 0x53, 0xda, 0x30, 0x01, - 0x04, 0x00, 0x14, 0x00, 0x28, 0x10, 0xdb, 0xf7, - 0x22, 0x80, 0x00, 0x43, 0x46, 0x68, 0x52, 0xc2, - 0x46, 0x6a, 0x1c, 0x08, 0x21, 0x05, 0xf0, 0x04, - 0xfa, 0x33, 0x49, 0x06, 0x80, 0x88, 0x00, 0x42, - 0x18, 0x12, 0x00, 0x92, 0x4b, 0x04, 0x5a, 0x9a, - 0x81, 0x0a, 0xb0, 0x08, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x88, - 0x2e, 0x08, 0x48, 0x28, 0xb5, 0x80, 0xb0, 0xb2, - 0x46, 0x68, 0xf0, 0x15, 0xf8, 0x99, 0xaf, 0x16, - 0xcf, 0x83, 0x9a, 0x19, 0xf0, 0x00, 0xf9, 0xd2, - 0x1c, 0x38, 0xf0, 0x00, 0xfa, 0xed, 0xb0, 0x32, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, - 0x06, 0x00, 0x0e, 0x00, 0x06, 0x09, 0x0e, 0x09, - 0xf0, 0x0f, 0xfd, 0x7a, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x09, - 0x0e, 0x09, 0x4b, 0x05, 0x68, 0x1b, 0x06, 0x1b, - 0x0e, 0x1b, 0x2b, 0x30, 0xd3, 0x01, 0xf0, 0x0f, - 0xfd, 0x6b, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x05, 0xbc, 0xb5, 0xf0, 0x25, 0x00, - 0x4e, 0x1a, 0x4c, 0x1b, 0x4f, 0x1b, 0x68, 0x30, - 0x68, 0x00, 0x00, 0x40, 0x0a, 0x40, 0x02, 0x40, - 0x21, 0x19, 0x06, 0x89, 0x6a, 0x89, 0x4b, 0x18, - 0x40, 0x19, 0x0a, 0x49, 0x43, 0x08, 0x49, 0x17, - 0x64, 0x08, 0xf0, 0x01, 0xfc, 0x63, 0xf0, 0x02, - 0xf9, 0x3b, 0x68, 0x38, 0x30, 0x01, 0x60, 0x38, - 0x48, 0x13, 0x88, 0x01, 0x31, 0x01, 0x80, 0x01, - 0x20, 0x0c, 0x68, 0x21, 0xf0, 0x1c, 0xfc, 0x42, - 0x29, 0x00, 0xd1, 0x01, 0xf7, 0xff, 0xff, 0xae, - 0x20, 0x32, 0x68, 0x21, 0xf0, 0x1c, 0xfc, 0x3a, - 0x4b, 0x0c, 0x42, 0x98, 0xd9, 0x01, 0x49, 0x0c, - 0x60, 0xf9, 0x42, 0x85, 0xd0, 0xd3, 0x1c, 0x05, - 0xf0, 0x00, 0xfe, 0x40, 0x20, 0x00, 0x60, 0x38, - 0xe7, 0xcd, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0xa4, - 0x2e, 0x08, 0x05, 0xbc, 0x2e, 0x08, 0x01, 0x88, - 0x00, 0x03, 0xfe, 0x00, 0x2c, 0x00, 0x1f, 0x80, - 0x2c, 0x00, 0x1f, 0xc8, 0x00, 0x00, 0x05, 0x46, - 0x2e, 0x00, 0x19, 0x65, 0xb5, 0xf0, 0x27, 0x00, - 0xb0, 0x94, 0x46, 0x68, 0x4c, 0x2f, 0xcc, 0x6e, - 0xc0, 0x6e, 0xcc, 0x6e, 0xc0, 0x6e, 0x23, 0x28, - 0x22, 0x41, 0x00, 0xd2, 0x21, 0x00, 0x20, 0x01, - 0xf0, 0x0d, 0xfd, 0xda, 0x22, 0xff, 0x21, 0x64, - 0x20, 0x01, 0x32, 0xf5, 0xf0, 0x0d, 0xfe, 0x9c, - 0x20, 0x00, 0x46, 0x69, 0x5c, 0x09, 0x40, 0x41, - 0x23, 0x35, 0x40, 0x59, 0xaa, 0x0a, 0x54, 0x11, - 0x30, 0x01, 0x28, 0x25, 0xdb, 0xf5, 0x24, 0x00, - 0xa9, 0x0a, 0x54, 0x0c, 0x22, 0x00, 0x20, 0x01, - 0x1c, 0x23, 0xf0, 0x0e, 0xf8, 0xfa, 0x4e, 0x1e, - 0x4d, 0x1e, 0x4c, 0x1f, 0xf0, 0x03, 0xff, 0x6e, - 0xf0, 0x03, 0xff, 0x6c, 0x28, 0x28, 0xd9, 0x10, - 0x42, 0xb0, 0xd3, 0x0e, 0x69, 0xe9, 0x08, 0xc9, - 0xd3, 0x0b, 0x4b, 0x1a, 0x18, 0xc1, 0x20, 0x1e, - 0xf0, 0x1c, 0xfb, 0xe0, 0x21, 0x64, 0x1d, 0xc2, - 0x32, 0xff, 0x32, 0xee, 0x20, 0x01, 0xf0, 0x0d, - 0xfe, 0x6f, 0xf0, 0x01, 0xfb, 0xeb, 0xf0, 0x02, - 0xf8, 0xc3, 0xf0, 0x03, 0xff, 0x53, 0x1c, 0x01, - 0x20, 0x7d, 0x00, 0xc0, 0xf0, 0x1c, 0xfb, 0xce, - 0x1c, 0x01, 0x48, 0x0f, 0x88, 0x02, 0x32, 0x01, - 0x80, 0x02, 0x42, 0xb9, 0xd0, 0xd6, 0x2f, 0x04, - 0xd3, 0x06, 0x20, 0x01, 0xf0, 0x0d, 0xfd, 0x78, - 0xb0, 0x14, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x0f, 0xf0, 0x00, 0xfd, 0xcb, 0x20, 0x00, - 0x60, 0x20, 0xe7, 0xc7, 0x2e, 0x02, 0xcc, 0x74, - 0x00, 0x00, 0x0b, 0xb8, 0x72, 0x00, 0x01, 0x00, - 0x2e, 0x08, 0x01, 0x88, 0xff, 0xff, 0xf4, 0x48, - 0x2c, 0x00, 0x1f, 0xc8, 0xb5, 0x80, 0x27, 0x00, - 0x48, 0x08, 0x81, 0x07, 0x48, 0x08, 0x49, 0x09, - 0x60, 0xc8, 0xf0, 0x03, 0xfd, 0x43, 0xf7, 0xff, - 0xff, 0x85, 0xf0, 0x00, 0xf8, 0xd3, 0xf7, 0xff, - 0xff, 0x39, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, - 0x2e, 0x00, 0x19, 0x53, 0x2e, 0x08, 0x01, 0x88, - 0x47, 0x70, 0xb5, 0xf0, 0x4d, 0x29, 0x68, 0x01, - 0x31, 0x03, 0x10, 0x89, 0x1e, 0xcb, 0x68, 0x41, - 0x10, 0x89, 0x68, 0x82, 0x10, 0x92, 0x00, 0x89, - 0x30, 0x0c, 0x18, 0x0c, 0x21, 0x03, 0x05, 0x89, - 0x27, 0x35, 0x06, 0x7f, 0x60, 0x39, 0x49, 0x22, - 0x68, 0x0e, 0x08, 0xb6, 0x00, 0xb6, 0x60, 0x0e, - 0x21, 0x00, 0x2b, 0x00, 0xd9, 0x04, 0xc8, 0x40, - 0xc5, 0x40, 0x31, 0x01, 0x42, 0x99, 0xd3, 0xfa, - 0x23, 0x00, 0x49, 0x1c, 0x65, 0x8b, 0x20, 0x00, - 0x2a, 0x00, 0xd9, 0x04, 0xcc, 0x20, 0x64, 0x8d, - 0x30, 0x01, 0x42, 0x90, 0xd3, 0xfa, 0x48, 0x18, - 0x60, 0x03, 0x60, 0x3b, 0x66, 0x8b, 0x60, 0x3b, - 0x22, 0x01, 0x64, 0xca, 0x21, 0x00, 0x4a, 0x15, - 0x68, 0x03, 0x2b, 0x00, 0xd1, 0x05, 0x33, 0x01, - 0x2b, 0x64, 0xdb, 0xfc, 0x31, 0x01, 0x42, 0x91, - 0xdb, 0xf6, 0x48, 0x11, 0x68, 0x01, 0x23, 0x01, - 0x43, 0x19, 0x60, 0x01, 0x49, 0x0f, 0x20, 0x33, - 0x06, 0x40, 0x65, 0x41, 0x49, 0x0e, 0x65, 0x81, - 0x49, 0x0e, 0x66, 0x81, 0x39, 0x04, 0x66, 0x41, - 0x21, 0x03, 0x67, 0x01, 0x21, 0x00, 0x20, 0x0d, - 0xf0, 0x14, 0xfd, 0x62, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x70, 0x6a, 0x00, 0x00, 0x80, - 0xcc, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x27, 0x10, - 0x6a, 0x00, 0x00, 0x10, 0xcc, 0x00, 0x0f, 0x84, - 0xcc, 0x00, 0x0f, 0x88, 0x98, 0x00, 0x0f, 0x88, - 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x08, - 0xf0, 0x15, 0xf9, 0x9c, 0x48, 0x08, 0x21, 0x40, - 0xf0, 0x14, 0xfe, 0x6c, 0x20, 0x01, 0x21, 0x35, - 0x06, 0x49, 0x61, 0x08, 0x20, 0x02, 0x43, 0xc0, - 0x49, 0x04, 0x63, 0x08, 0x20, 0x00, 0x21, 0x39, - 0x06, 0x49, 0x62, 0xc8, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x02, 0x3b, 0x04, 0x72, 0x00, 0x01, 0x00, - 0xb5, 0x00, 0x1c, 0x01, 0x48, 0x0f, 0xd0, 0x10, - 0x29, 0x01, 0xd0, 0x12, 0x29, 0x02, 0xd0, 0x14, - 0x29, 0x03, 0xd1, 0x01, 0x49, 0x0c, 0x60, 0x01, - 0x68, 0x01, 0x68, 0x40, 0x43, 0x08, 0x22, 0x00, - 0x21, 0x1e, 0xf0, 0x15, 0xf9, 0xdb, 0xbc, 0x08, - 0x47, 0x18, 0x21, 0x01, 0x04, 0x49, 0x60, 0x01, - 0xe7, 0xf2, 0x21, 0x21, 0x03, 0x09, 0x60, 0x01, - 0xe7, 0xee, 0x21, 0x41, 0x03, 0x09, 0x60, 0x01, - 0xe7, 0xea, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x98, - 0x00, 0x08, 0x10, 0x08, 0xb5, 0x00, 0x1c, 0x01, - 0x48, 0x0b, 0xd0, 0x0e, 0x29, 0x01, 0xd0, 0x0f, - 0x29, 0x02, 0xd1, 0x01, 0x21, 0x04, 0x60, 0x41, - 0x68, 0x01, 0x68, 0x40, 0x43, 0x08, 0x22, 0x00, - 0x21, 0x1e, 0xf0, 0x15, 0xf9, 0xb7, 0xbc, 0x08, - 0x47, 0x18, 0x21, 0x01, 0x60, 0x41, 0xe7, 0xf3, - 0x21, 0x02, 0x60, 0x41, 0xe7, 0xf0, 0x00, 0x00, - 0x2e, 0x08, 0x01, 0x98, 0xb5, 0x80, 0x4b, 0x09, - 0x22, 0x0a, 0x21, 0x0a, 0x20, 0x0b, 0xf0, 0x15, - 0xfb, 0xeb, 0x20, 0x0b, 0xf0, 0x15, 0xfd, 0x0d, - 0x4f, 0x05, 0x60, 0x38, 0x00, 0x80, 0xf0, 0x03, - 0xff, 0x2b, 0x60, 0x78, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0xc4, - 0x2e, 0x08, 0x01, 0xd4, 0xb5, 0xb0, 0x25, 0x00, - 0x1c, 0x0c, 0x1c, 0x07, 0x2a, 0x08, 0xd2, 0x30, - 0xa3, 0x01, 0x5c, 0x9b, 0x00, 0x5b, 0x44, 0x9f, - 0x2c, 0x29, 0x29, 0x03, 0x29, 0x29, 0x03, 0x29, - 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x4d, 0x23, 0x2d, - 0x01, 0x1b, 0x42, 0x9f, 0xd0, 0x13, 0x23, 0x0b, - 0x01, 0x9b, 0x42, 0x9f, 0xd0, 0x0f, 0x23, 0xff, - 0x33, 0xe1, 0x42, 0x9f, 0xd0, 0x0b, 0x23, 0xff, - 0x33, 0x61, 0x42, 0x9f, 0xd0, 0x07, 0x23, 0x21, - 0x01, 0x1b, 0x42, 0x9f, 0xd0, 0x03, 0x23, 0x11, - 0x01, 0x5b, 0x42, 0x9f, 0xd1, 0x08, 0x23, 0x09, - 0x01, 0x9b, 0x42, 0x9c, 0xd0, 0x09, 0x08, 0x5b, - 0x42, 0x9c, 0xd0, 0x06, 0x2c, 0xf0, 0xd0, 0x04, - 0x25, 0x01, 0xe0, 0x02, 0x20, 0x01, 0xf0, 0x00, - 0xf8, 0x27, 0x4f, 0x12, 0x6c, 0x78, 0x42, 0x85, - 0xd0, 0x1c, 0x1d, 0xfb, 0x33, 0x35, 0x2d, 0x00, - 0xd0, 0x12, 0x1f, 0xda, 0x3a, 0x0d, 0x21, 0x03, - 0x1d, 0x10, 0xb4, 0x07, 0x22, 0x0b, 0xb4, 0x04, - 0x1c, 0x19, 0x23, 0x00, 0x22, 0x00, 0x20, 0x00, - 0xf0, 0x0f, 0xff, 0xe4, 0x6a, 0xb8, 0x1c, 0x29, - 0xb0, 0x04, 0xf0, 0x11, 0xf9, 0x33, 0xe0, 0x04, - 0x21, 0x00, 0x6a, 0xb8, 0x1c, 0x1a, 0xf0, 0x10, - 0xfa, 0xe9, 0x64, 0x7d, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x98, - 0xb5, 0xf0, 0x1c, 0x07, 0xb0, 0x81, 0x4d, 0x56, - 0x1d, 0xee, 0x36, 0x19, 0x79, 0x30, 0x42, 0x87, - 0xd1, 0x03, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x24, 0x00, 0x6c, 0x68, 0x28, 0x00, - 0xd0, 0x05, 0x64, 0x6c, 0x4a, 0x4f, 0x21, 0x00, - 0x6a, 0xa8, 0xf0, 0x10, 0xfa, 0xcb, 0x71, 0x37, - 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x14, 0xfc, 0x5c, - 0x20, 0x00, 0xf0, 0x11, 0xff, 0x5d, 0x20, 0x1f, - 0xf0, 0x0e, 0xff, 0xf2, 0x26, 0x03, 0x02, 0x76, - 0x22, 0x01, 0x02, 0xd2, 0x21, 0x02, 0x20, 0x1f, - 0x1c, 0x33, 0xf0, 0x0e, 0xfe, 0x69, 0x20, 0x1e, - 0xf0, 0x0f, 0xf8, 0xb0, 0x22, 0x01, 0x02, 0xd2, - 0x21, 0x02, 0x20, 0x1e, 0x1c, 0x33, 0xf0, 0x0e, - 0xfe, 0x5f, 0x26, 0x1c, 0x1c, 0x39, 0x48, 0x3e, - 0x27, 0x0c, 0x29, 0x06, 0xd2, 0x07, 0xa3, 0x02, - 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x03, 0x12, 0x03, 0x21, 0x12, 0x30, 0x48, 0x39, - 0x21, 0x40, 0xf0, 0x14, 0xfd, 0x5b, 0xab, 0x00, - 0x70, 0x1c, 0x20, 0x08, 0x70, 0x58, 0x70, 0x9e, - 0x70, 0xdc, 0x22, 0x00, 0x21, 0x00, 0xf0, 0x15, - 0xf8, 0x7d, 0xe0, 0x2b, 0x21, 0x1f, 0x43, 0xc9, - 0xf0, 0x14, 0xfd, 0x4c, 0xab, 0x00, 0x70, 0x1c, - 0x70, 0x5c, 0x70, 0x9f, 0x70, 0xdc, 0x22, 0x00, - 0x21, 0x00, 0x20, 0x00, 0xf0, 0x15, 0xf8, 0x6e, - 0xe0, 0x1c, 0x21, 0x40, 0xf0, 0x14, 0xfd, 0x3e, - 0xab, 0x00, 0x70, 0x1c, 0x20, 0x10, 0x70, 0x58, - 0x70, 0x9e, 0x70, 0xdc, 0x22, 0x00, 0x21, 0x00, - 0x20, 0x08, 0xf0, 0x15, 0xf8, 0x5f, 0xe0, 0x0d, - 0x21, 0x1f, 0x43, 0xc9, 0xf0, 0x14, 0xfd, 0x2e, - 0xab, 0x00, 0x70, 0x1c, 0x70, 0x5c, 0x70, 0x9f, - 0x70, 0xdc, 0x22, 0x00, 0x21, 0x00, 0x20, 0x08, - 0xf0, 0x15, 0xf8, 0x50, 0x20, 0x01, 0x21, 0x35, - 0x06, 0x49, 0x61, 0x08, 0x20, 0x02, 0x43, 0xc0, - 0x49, 0x19, 0x63, 0x08, 0x20, 0x39, 0x06, 0x40, - 0x62, 0xc4, 0xcd, 0x03, 0x43, 0x08, 0x22, 0x00, - 0x21, 0x1e, 0xf0, 0x15, 0xf8, 0xa7, 0x48, 0x15, - 0xf0, 0x11, 0xfe, 0x68, 0x20, 0x00, 0xf0, 0x11, - 0xfe, 0xd9, 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x68, - 0x20, 0x00, 0xf0, 0x03, 0xfb, 0x15, 0x20, 0x01, - 0xf0, 0x11, 0xfe, 0xde, 0x4a, 0x0e, 0xb4, 0x04, - 0x1c, 0x13, 0x3a, 0x01, 0x49, 0x0d, 0x1e, 0xc8, - 0xf7, 0xfe, 0xfb, 0xae, 0x21, 0x00, 0x20, 0x0d, - 0xb0, 0x01, 0xf0, 0x14, 0xfb, 0xcd, 0xb0, 0x01, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x01, 0x98, 0x2e, 0x08, 0x01, 0xd4, - 0x2e, 0x02, 0x81, 0x70, 0x2e, 0x02, 0x3b, 0x04, - 0x72, 0x00, 0x01, 0x00, 0x00, 0x80, 0x10, 0x80, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, - 0xb5, 0xb0, 0x1c, 0x07, 0x4c, 0x10, 0x6a, 0x20, - 0x42, 0x87, 0xd0, 0x19, 0x20, 0x00, 0x2f, 0x03, - 0xd1, 0x02, 0x21, 0x01, 0x61, 0x61, 0xe0, 0x00, - 0x61, 0x60, 0x21, 0x02, 0x4d, 0x0b, 0x60, 0x29, - 0x71, 0x28, 0x71, 0x68, 0x22, 0x01, 0xb4, 0x04, - 0x7a, 0x23, 0x7c, 0x22, 0x7b, 0x21, 0x20, 0x00, - 0xf0, 0x14, 0xfe, 0x9a, 0x69, 0x61, 0x1c, 0x28, - 0xb0, 0x01, 0xf0, 0x15, 0xff, 0x41, 0x62, 0x27, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x01, 0x98, 0x2e, 0x08, 0x01, 0xb0, - 0xb5, 0x00, 0x22, 0x02, 0x49, 0x09, 0x60, 0x0a, - 0x22, 0x00, 0x71, 0x0a, 0x71, 0x4a, 0x39, 0x48, - 0x28, 0x00, 0xd0, 0x08, 0x28, 0x01, 0xd1, 0x00, - 0x72, 0x08, 0x6a, 0x08, 0x62, 0x0a, 0xf7, 0xff, - 0xff, 0xc7, 0xbc, 0x08, 0x47, 0x18, 0x72, 0x0a, - 0xe7, 0xf7, 0x00, 0x00, 0x2e, 0x08, 0x01, 0xe0, - 0xb5, 0x80, 0x06, 0x00, 0x0e, 0x00, 0x4f, 0x0b, - 0xd0, 0x02, 0x20, 0x00, 0x73, 0x38, 0xe0, 0x01, - 0x20, 0x01, 0x73, 0x38, 0x22, 0x01, 0xb4, 0x04, - 0x7a, 0x3b, 0x7c, 0x3a, 0x7b, 0x39, 0x20, 0x00, - 0xf0, 0x14, 0xfe, 0x62, 0x69, 0x79, 0xb0, 0x01, - 0x48, 0x03, 0xf0, 0x15, 0xff, 0x09, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x01, 0x98, - 0x2e, 0x08, 0x01, 0xb0, 0xb5, 0x80, 0x06, 0x00, - 0x0e, 0x00, 0x1c, 0x01, 0x4f, 0x08, 0x74, 0x39, - 0x22, 0x01, 0xb4, 0x04, 0x7a, 0x3b, 0x7b, 0x39, - 0x1c, 0x02, 0x20, 0x00, 0xf0, 0x14, 0xfe, 0x48, - 0x69, 0x79, 0xb0, 0x01, 0x48, 0x03, 0xf0, 0x15, - 0xfe, 0xef, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x01, 0x98, 0x2e, 0x08, 0x01, 0xb0, - 0xb4, 0xb0, 0x21, 0x00, 0x48, 0x08, 0x60, 0x01, - 0x20, 0x00, 0x4c, 0x08, 0x4f, 0x08, 0x4b, 0x09, - 0x4a, 0x09, 0x00, 0x85, 0x51, 0x61, 0x54, 0x39, - 0x54, 0x19, 0x54, 0x11, 0x30, 0x01, 0x28, 0x20, - 0xdb, 0xf7, 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x01, 0xe8, 0x2e, 0x08, 0x44, 0x38, - 0x2e, 0x08, 0x44, 0xb8, 0x2e, 0x08, 0x44, 0xf8, - 0x2e, 0x08, 0x44, 0xd8, 0x06, 0x00, 0x0e, 0x00, - 0x21, 0x01, 0x40, 0x81, 0x43, 0xca, 0x49, 0x05, - 0x68, 0x0b, 0x40, 0x1a, 0x60, 0x0a, 0x21, 0x00, - 0x00, 0x82, 0x4b, 0x03, 0x50, 0x99, 0x4a, 0x03, - 0x54, 0x11, 0x47, 0x70, 0x2e, 0x08, 0x01, 0xe8, - 0x2e, 0x08, 0x44, 0x38, 0x2e, 0x08, 0x44, 0xb8, - 0xb5, 0xf0, 0xb0, 0x84, 0x4f, 0x36, 0x68, 0x38, - 0x1d, 0xc1, 0x31, 0x0d, 0x20, 0x00, 0xf0, 0x2a, - 0xfb, 0x93, 0x1c, 0x04, 0x68, 0x38, 0x1d, 0xc1, - 0x31, 0x05, 0x20, 0x00, 0xf0, 0x2a, 0xfb, 0x8c, - 0x1c, 0x05, 0x68, 0x38, 0x1d, 0xc1, 0x31, 0x09, - 0x20, 0x00, 0xf0, 0x2a, 0xfb, 0x85, 0x43, 0x2c, - 0x1c, 0x20, 0x4c, 0x2c, 0x68, 0x21, 0x43, 0x08, - 0x27, 0x00, 0x60, 0x20, 0x1c, 0x05, 0xd0, 0x4a, - 0x48, 0x29, 0x90, 0x03, 0x48, 0x29, 0x90, 0x02, - 0x4a, 0x29, 0x92, 0x01, 0x4e, 0x29, 0x08, 0x68, - 0xd3, 0x3c, 0x98, 0x03, 0x5d, 0xc0, 0x28, 0x00, - 0xd0, 0x32, 0x98, 0x02, 0x5d, 0xc0, 0x28, 0x00, - 0xd0, 0x2a, 0x46, 0x68, 0x1c, 0x39, 0xf0, 0x16, - 0xfb, 0x01, 0xa8, 0x00, 0x78, 0x00, 0x28, 0x01, - 0xd1, 0x1b, 0x68, 0x60, 0x30, 0x01, 0x60, 0x60, - 0x5d, 0xf0, 0x28, 0x00, 0xd1, 0x06, 0x20, 0xff, - 0x55, 0xf0, 0x21, 0x00, 0x00, 0xb8, 0x9a, 0x01, - 0x50, 0x11, 0xe0, 0x1f, 0x20, 0x02, 0x1c, 0x39, - 0xf0, 0x00, 0xf8, 0x8e, 0x28, 0x00, 0xd1, 0x19, - 0x21, 0x00, 0x55, 0xf1, 0x20, 0x01, 0x40, 0xb8, - 0x43, 0xc0, 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, - 0xe0, 0x10, 0x20, 0x01, 0x40, 0xb8, 0x43, 0xc0, - 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, 0xe0, 0x09, - 0x68, 0x60, 0x30, 0x01, 0x60, 0x60, 0xe0, 0x05, - 0x20, 0x01, 0x40, 0xb8, 0x43, 0xc0, 0x68, 0x21, - 0x40, 0x08, 0x60, 0x20, 0x1c, 0x78, 0x06, 0x07, - 0x0e, 0x3f, 0x08, 0x6d, 0xd1, 0xbb, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0x78, 0x2e, 0x08, 0x01, 0xe8, - 0x2e, 0x08, 0x44, 0xd8, 0x2e, 0x08, 0x44, 0xf8, - 0x2e, 0x08, 0x44, 0x38, 0x2e, 0x08, 0x44, 0xb8, - 0xb5, 0xf0, 0x27, 0x00, 0xb0, 0x85, 0x4c, 0x26, - 0x68, 0x25, 0x2d, 0x00, 0xd0, 0x44, 0x4e, 0x25, - 0x48, 0x25, 0x90, 0x04, 0x49, 0x25, 0x91, 0x03, - 0x4a, 0x25, 0x92, 0x02, 0x48, 0x25, 0x90, 0x01, - 0x08, 0x68, 0xd3, 0x34, 0x5d, 0xf0, 0x28, 0x00, - 0xd0, 0x2b, 0x98, 0x04, 0x5d, 0xc0, 0x28, 0x00, - 0xd0, 0x2d, 0x46, 0x68, 0x1c, 0x39, 0xf0, 0x16, - 0xfa, 0x9d, 0xa8, 0x00, 0x78, 0x00, 0x28, 0x01, - 0xd1, 0x18, 0x68, 0x60, 0x30, 0x01, 0x60, 0x60, - 0x00, 0xb8, 0x99, 0x03, 0x58, 0x09, 0x69, 0x09, - 0x9a, 0x02, 0x50, 0x11, 0x20, 0x02, 0x1c, 0x39, - 0xf0, 0x00, 0xf8, 0x2e, 0x28, 0x00, 0xd1, 0x16, - 0x21, 0x00, 0x98, 0x01, 0x55, 0xc1, 0x20, 0x01, - 0x40, 0xb8, 0x43, 0xc0, 0x68, 0x21, 0x40, 0x08, - 0x60, 0x20, 0xe0, 0x0c, 0x20, 0x01, 0x40, 0xb8, - 0x43, 0xc0, 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, - 0xe0, 0x05, 0x20, 0x01, 0x40, 0xb8, 0x43, 0xc0, - 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, 0x1c, 0x78, - 0x06, 0x07, 0x0e, 0x3f, 0x08, 0x6d, 0xd1, 0xc3, - 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x01, 0xe8, 0x2e, 0x08, 0x44, 0xd8, - 0x2e, 0x08, 0x44, 0xf8, 0x2e, 0x08, 0x9b, 0xc8, - 0x2e, 0x08, 0x44, 0x38, 0x2e, 0x08, 0x44, 0xb8, - 0xb4, 0xf0, 0x06, 0x02, 0x0e, 0x12, 0xb0, 0x82, - 0x92, 0x00, 0x06, 0x0c, 0x0e, 0x24, 0x00, 0xa0, - 0xb0, 0x81, 0x49, 0x31, 0x58, 0x09, 0x91, 0x00, - 0x29, 0x00, 0xd1, 0x03, 0x20, 0xb0, 0xb0, 0x03, - 0xbc, 0xf0, 0x47, 0x70, 0x49, 0x2d, 0x68, 0x09, - 0x18, 0x47, 0x00, 0xe1, 0x1b, 0x09, 0x00, 0x89, - 0x4a, 0x2b, 0x68, 0x12, 0x18, 0x89, 0x9a, 0x01, - 0x4d, 0x2a, 0x4b, 0x2b, 0x93, 0x02, 0x2a, 0x01, - 0xd0, 0x28, 0x2a, 0x02, 0xd1, 0x44, 0x4b, 0x29, - 0x58, 0x1a, 0x2a, 0x00, 0xd1, 0x03, 0x20, 0xff, - 0xb0, 0x03, 0xbc, 0xf0, 0x47, 0x70, 0x60, 0x4a, - 0x22, 0x00, 0x50, 0x1a, 0x5c, 0xa8, 0x42, 0xa0, - 0xd1, 0x06, 0x00, 0x90, 0x9b, 0x02, 0x58, 0x18, - 0x78, 0x46, 0x23, 0x80, 0x43, 0x9e, 0x70, 0x46, - 0x1c, 0x50, 0x06, 0x02, 0x0e, 0x12, 0x2a, 0x20, - 0xdb, 0xf0, 0x88, 0x08, 0x4b, 0x1c, 0x40, 0x18, - 0x80, 0x08, 0x98, 0x00, 0x9a, 0x01, 0x70, 0xc2, - 0x68, 0x38, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, - 0x60, 0x38, 0xe0, 0x19, 0x68, 0x38, 0x4b, 0x17, - 0x40, 0x18, 0x60, 0x38, 0x98, 0x00, 0x9a, 0x01, - 0x70, 0xc2, 0x20, 0x00, 0x60, 0x88, 0x70, 0xc8, - 0x60, 0xc8, 0x5c, 0x29, 0x42, 0xa1, 0xd1, 0x06, - 0x00, 0x81, 0x9b, 0x02, 0x58, 0x59, 0x78, 0x4a, - 0x23, 0x80, 0x43, 0x1a, 0x70, 0x4a, 0x30, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x20, 0xdb, 0xf0, - 0x20, 0x00, 0xb0, 0x03, 0xbc, 0xf0, 0x47, 0x70, - 0x20, 0xbc, 0xb0, 0x03, 0xbc, 0xf0, 0x47, 0x70, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9b, 0x38, - 0x2e, 0x08, 0x9b, 0x30, 0x2e, 0x08, 0x9d, 0x10, - 0x2e, 0x08, 0x9c, 0x50, 0x2e, 0x08, 0x44, 0x38, - 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xdf, 0xff, - 0xb4, 0xf0, 0x78, 0x43, 0x00, 0x9e, 0x49, 0x32, - 0x59, 0x8c, 0x88, 0x42, 0x68, 0x87, 0x68, 0x40, - 0x1d, 0xf9, 0x31, 0xb9, 0x1a, 0x09, 0x42, 0x91, - 0xda, 0x3d, 0x25, 0x00, 0x1c, 0x18, 0x00, 0xdb, - 0x1a, 0x18, 0x00, 0x80, 0x4b, 0x2b, 0x68, 0x1b, - 0x18, 0xc0, 0x78, 0x80, 0x06, 0xc0, 0x0e, 0xc0, - 0x28, 0x12, 0xd1, 0x02, 0x29, 0x0e, 0xda, 0x00, - 0x25, 0x01, 0x2a, 0x00, 0xdd, 0x2b, 0x42, 0x8a, - 0xdd, 0x05, 0x68, 0x3f, 0x2f, 0x00, 0xd1, 0x02, - 0x20, 0xba, 0xbc, 0xf0, 0x47, 0x70, 0x1a, 0x52, - 0x79, 0xb9, 0x23, 0xc0, 0x1a, 0x59, 0x79, 0xfb, - 0x1d, 0x38, 0x08, 0x5b, 0xd3, 0x01, 0x22, 0x00, - 0xe0, 0x16, 0x2d, 0x00, 0xd0, 0x14, 0x42, 0x91, - 0xdb, 0x01, 0x31, 0x01, 0xe0, 0x10, 0x1c, 0x4b, - 0x42, 0x93, 0xd1, 0x0d, 0x78, 0x85, 0x2d, 0x09, - 0xdd, 0x06, 0x79, 0x05, 0x78, 0x80, 0x35, 0x09, - 0x42, 0x85, 0xd0, 0x05, 0x1c, 0x19, 0xe0, 0x03, - 0x78, 0x80, 0x28, 0x09, 0xd1, 0x00, 0x1c, 0x19, - 0x25, 0x00, 0x2a, 0x00, 0xdc, 0xd3, 0x69, 0x21, - 0x20, 0x00, 0x1c, 0x0a, 0x42, 0xb9, 0xd0, 0xd4, - 0x68, 0x0b, 0x42, 0xbb, 0xd0, 0x08, 0x68, 0x09, - 0x29, 0x00, 0xd1, 0x02, 0x20, 0xba, 0xbc, 0xf0, - 0x47, 0x70, 0x68, 0x0b, 0x42, 0xbb, 0xd1, 0xf6, - 0x4b, 0x07, 0x51, 0x9a, 0x60, 0x08, 0x69, 0xa2, - 0x69, 0x23, 0x60, 0x13, 0x61, 0xa1, 0x61, 0x27, - 0x61, 0x67, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9b, 0x30, - 0x2e, 0x08, 0x44, 0x38, 0xb5, 0xf0, 0x06, 0x07, - 0x0e, 0x3f, 0x04, 0x0c, 0x0c, 0x24, 0x06, 0x15, - 0x0e, 0x2d, 0x00, 0xf8, 0x49, 0x2c, 0x68, 0x09, - 0x18, 0x40, 0x00, 0xb9, 0x4a, 0x2b, 0x68, 0x12, - 0x18, 0x8a, 0x00, 0xf9, 0x1b, 0xc9, 0x00, 0x89, - 0x4b, 0x29, 0x68, 0x1b, 0x18, 0xc9, 0x68, 0x16, - 0x23, 0x01, 0x03, 0x5b, 0x43, 0x9e, 0x60, 0x16, - 0x68, 0x06, 0x23, 0x03, 0x03, 0x9b, 0x43, 0x9e, - 0x60, 0x06, 0x4b, 0x24, 0x42, 0x9c, 0xd0, 0x36, - 0x68, 0x06, 0x23, 0x21, 0x43, 0x9e, 0x60, 0x06, - 0x68, 0x16, 0x23, 0x07, 0x03, 0x5b, 0x40, 0x33, - 0x60, 0x13, 0x23, 0x07, 0x03, 0x5b, 0x43, 0x9c, - 0x1c, 0x23, 0x68, 0x14, 0x43, 0x23, 0x60, 0x13, - 0x22, 0x00, 0x75, 0x0a, 0x88, 0x0c, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x9c, 0x80, 0x0c, 0x07, 0xab, - 0x0f, 0x9b, 0x2b, 0x01, 0xd1, 0x04, 0x88, 0x0c, - 0x23, 0x10, 0x43, 0x23, 0x80, 0x0b, 0xe0, 0x03, - 0x88, 0x0c, 0x23, 0x10, 0x43, 0x9c, 0x80, 0x0c, - 0x68, 0x01, 0x23, 0x40, 0x43, 0xdb, 0x40, 0x19, - 0x60, 0x01, 0x00, 0xf9, 0x4b, 0x0e, 0x68, 0x1b, - 0x18, 0xc9, 0x60, 0x4a, 0x68, 0x01, 0x4b, 0x0d, - 0x43, 0x19, 0x60, 0x01, 0x68, 0x01, 0x60, 0x01, - 0x21, 0x0f, 0x60, 0x41, 0xe0, 0x04, 0x1c, 0x38, - 0xf0, 0x13, 0xfa, 0xb6, 0x28, 0x00, 0xd1, 0x00, - 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x9b, 0x3c, 0x2e, 0x08, 0x9b, 0x38, - 0x2e, 0x08, 0x9b, 0x30, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x9b, 0x40, 0x00, 0x00, 0x20, 0xa0, - 0xb5, 0xf0, 0x06, 0x09, 0x0e, 0x09, 0x1c, 0x07, - 0xb0, 0x8a, 0x48, 0x58, 0x29, 0x00, 0xd1, 0x0a, - 0x4d, 0x57, 0x69, 0x01, 0x91, 0x04, 0x49, 0x57, - 0x91, 0x03, 0x69, 0x41, 0x91, 0x02, 0x6a, 0x00, - 0x1e, 0x43, 0x93, 0x01, 0xe0, 0x0b, 0x29, 0x20, - 0xd1, 0x15, 0x4d, 0x53, 0x69, 0x81, 0x91, 0x04, - 0x49, 0x52, 0x91, 0x03, 0x69, 0xc1, 0x91, 0x02, - 0x6a, 0x40, 0x1e, 0x43, 0x93, 0x01, 0x24, 0x00, - 0x4b, 0x4f, 0x93, 0x09, 0x4a, 0x4f, 0x92, 0x08, - 0x4b, 0x4f, 0x93, 0x07, 0x4e, 0x4f, 0x96, 0x06, - 0x4a, 0x4f, 0x92, 0x05, 0xe0, 0x7a, 0x20, 0xb3, - 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x98, 0x04, 0x00, 0x80, 0x19, 0x40, 0x23, 0x01, - 0x02, 0x9b, 0x18, 0xc0, 0x68, 0x01, 0x98, 0x04, - 0x00, 0x80, 0x58, 0x28, 0x9a, 0x04, 0x18, 0xaa, - 0x00, 0x5b, 0x18, 0xd2, 0x78, 0x12, 0x92, 0x00, - 0x22, 0x00, 0x9b, 0x04, 0x18, 0xee, 0x23, 0x01, - 0x02, 0xdb, 0x18, 0xf3, 0x70, 0x1a, 0x9a, 0x04, - 0x32, 0x01, 0x92, 0x04, 0x9b, 0x01, 0x40, 0x1a, - 0x92, 0x04, 0x29, 0x00, 0xd0, 0x56, 0xb0, 0x82, - 0x91, 0x01, 0x21, 0x01, 0x9a, 0x02, 0x2a, 0x80, - 0xd1, 0x19, 0x22, 0x00, 0x9b, 0x01, 0x40, 0x0b, - 0xd0, 0x10, 0x9b, 0x0b, 0x5c, 0x9b, 0x2b, 0xff, - 0xd0, 0x0c, 0x9b, 0x0b, 0x5c, 0x9b, 0x93, 0x00, - 0x00, 0x91, 0x9a, 0x0a, 0x58, 0x52, 0x00, 0xa1, - 0x19, 0xc9, 0x61, 0x0a, 0x1c, 0x61, 0x06, 0x0c, - 0x0e, 0x24, 0xe0, 0x1c, 0x00, 0x49, 0x32, 0x01, - 0x2a, 0x10, 0xd3, 0xe7, 0xe0, 0x17, 0x22, 0x00, - 0x9b, 0x01, 0x40, 0x0b, 0xd0, 0x0f, 0x9b, 0x09, - 0x5c, 0x9b, 0x2b, 0xff, 0xd0, 0x0b, 0x93, 0x00, - 0x00, 0x93, 0x9e, 0x08, 0x58, 0xf6, 0x00, 0xa3, - 0x19, 0xdb, 0x61, 0x1e, 0x28, 0x00, 0xd0, 0x02, - 0x1c, 0x63, 0x06, 0x1c, 0x0e, 0x24, 0x00, 0x49, - 0x32, 0x01, 0x2a, 0x20, 0xd3, 0xe8, 0x2c, 0x00, - 0xd0, 0x1b, 0x9b, 0x00, 0x70, 0x7b, 0x60, 0x78, - 0x9b, 0x00, 0x00, 0x99, 0x9a, 0x07, 0x58, 0x52, - 0x69, 0x51, 0xe0, 0x07, 0x68, 0x09, 0x29, 0x00, - 0xd1, 0x04, 0x20, 0xba, 0xb0, 0x0c, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x42, 0x88, 0xd3, 0xf5, - 0x1d, 0xcb, 0x33, 0xb9, 0x42, 0x83, 0xd3, 0xf1, - 0x60, 0xb9, 0x61, 0x51, 0x1c, 0x38, 0xf0, 0x13, - 0xfa, 0xc0, 0xb0, 0x02, 0x98, 0x04, 0x99, 0x02, - 0x42, 0x88, 0xd0, 0x01, 0x2c, 0x00, 0xd0, 0x83, - 0x70, 0x3c, 0x98, 0x04, 0x99, 0x03, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x9e, 0x00, 0x04, 0x80, - 0x2e, 0x08, 0x9d, 0xfc, 0x9e, 0x00, 0x04, 0x90, - 0x2e, 0x08, 0xa6, 0xfc, 0x9e, 0x00, 0x04, 0x98, - 0x2e, 0x08, 0x9d, 0x30, 0x2e, 0x08, 0x9c, 0xd0, - 0x2e, 0x08, 0x9d, 0x10, 0x2e, 0x08, 0x9c, 0x50, - 0x2e, 0x08, 0x9b, 0xc8, 0xb5, 0x00, 0x20, 0xff, - 0x49, 0x03, 0x60, 0x08, 0x20, 0x01, 0x05, 0x00, - 0xf0, 0x21, 0xf9, 0x74, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x01, 0xe8, 0xb5, 0xf0, 0x06, 0x07, - 0x0e, 0x3f, 0x06, 0x0c, 0x0e, 0x24, 0x20, 0x10, - 0x2f, 0x1f, 0xdc, 0x2c, 0x2c, 0x1f, 0xdc, 0x2a, - 0x1c, 0x39, 0x43, 0x21, 0x08, 0x49, 0xd2, 0x26, - 0x49, 0x14, 0x1c, 0x38, 0xf0, 0x21, 0xf9, 0x70, - 0x26, 0x01, 0x1c, 0x35, 0x40, 0xbd, 0x1c, 0x30, - 0x40, 0xa0, 0x1c, 0x04, 0x43, 0x28, 0xf0, 0x21, - 0xf9, 0x5a, 0xf0, 0x21, 0xf9, 0x5d, 0x43, 0xa8, - 0xf0, 0x21, 0xf9, 0x5e, 0xf0, 0x21, 0xf9, 0x58, - 0x43, 0xa0, 0xf0, 0x21, 0xf9, 0x59, 0x1c, 0x38, - 0xf0, 0x15, 0xfc, 0x02, 0x1c, 0x04, 0xd1, 0x07, - 0x21, 0x03, 0x05, 0x09, 0x20, 0x00, 0x1c, 0x3a, - 0x1c, 0x33, 0xf0, 0x16, 0xfa, 0xb3, 0x1c, 0x04, - 0xf7, 0xff, 0xfc, 0x92, 0x1c, 0x20, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x00, 0x2c, 0x0b, - 0xb5, 0xf0, 0x06, 0x04, 0x0e, 0x24, 0x04, 0x0d, - 0x0c, 0x2d, 0x06, 0x16, 0x0e, 0x36, 0x9f, 0x05, - 0x06, 0x38, 0x0e, 0x00, 0x22, 0x00, 0x21, 0x00, - 0xb4, 0x07, 0x21, 0x10, 0x1c, 0x1a, 0xb4, 0x06, - 0x23, 0x10, 0x1c, 0x20, 0x1c, 0x29, 0x1c, 0x32, - 0xf0, 0x00, 0xf8, 0x54, 0xb0, 0x05, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x06, 0x04, - 0x0e, 0x24, 0x04, 0x0d, 0x0c, 0x2d, 0x06, 0x16, - 0x0e, 0x36, 0x9f, 0x05, 0x06, 0x38, 0x0e, 0x00, - 0x22, 0x00, 0x21, 0x00, 0xb4, 0x07, 0x21, 0x18, - 0x1c, 0x1a, 0xb4, 0x06, 0x23, 0x11, 0x1c, 0x20, - 0x1c, 0x29, 0x1c, 0x32, 0xf0, 0x00, 0xf8, 0x3a, - 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf0, 0x06, 0x04, 0x0e, 0x24, 0x04, 0x0d, - 0x0c, 0x2d, 0x06, 0x16, 0x0e, 0x36, 0x9f, 0x05, - 0x06, 0x38, 0x0e, 0x00, 0x22, 0x00, 0x21, 0x00, - 0xb4, 0x07, 0x21, 0x20, 0x1c, 0x1a, 0xb4, 0x06, - 0x23, 0x51, 0x1c, 0x20, 0x1c, 0x29, 0x1c, 0x32, - 0xf0, 0x00, 0xf8, 0x20, 0xb0, 0x05, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x06, 0x03, - 0x0e, 0x1b, 0x04, 0x0d, 0x0c, 0x2d, 0x06, 0x16, - 0x0e, 0x36, 0x9c, 0x09, 0x9f, 0x0a, 0x06, 0x20, - 0x0e, 0x00, 0x22, 0x00, 0x1c, 0x39, 0xb4, 0x07, - 0x21, 0x10, 0x9a, 0x06, 0xb4, 0x06, 0x1c, 0x18, - 0x23, 0x62, 0x1c, 0x29, 0x1c, 0x32, 0xf0, 0x00, - 0xf8, 0x05, 0xb0, 0x05, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x9e, 0x09, - 0x9f, 0x0b, 0x06, 0x04, 0x0e, 0x24, 0x04, 0x09, - 0x0c, 0x09, 0xb0, 0x88, 0x91, 0x00, 0x06, 0x15, - 0x0e, 0x2d, 0x06, 0x18, 0x0e, 0x00, 0x90, 0x01, - 0x06, 0x32, 0x0e, 0x12, 0x92, 0x02, 0x06, 0x38, - 0x0e, 0x00, 0x90, 0x03, 0xb0, 0x82, 0xf0, 0x21, - 0xf8, 0xbf, 0x0d, 0x40, 0xd2, 0x09, 0x20, 0xff, - 0x90, 0x00, 0xf0, 0x21, 0xf8, 0xb9, 0x23, 0x01, - 0x05, 0x1b, 0x43, 0x18, 0xf0, 0x21, 0xf8, 0xb8, - 0xe0, 0x01, 0x20, 0x00, 0x90, 0x00, 0x98, 0x03, - 0x08, 0x40, 0xd3, 0x02, 0x22, 0x12, 0x92, 0x01, - 0xe0, 0x01, 0x22, 0x11, 0x92, 0x01, 0x22, 0x01, - 0x1c, 0x11, 0x40, 0xa9, 0x4b, 0x5f, 0x1c, 0x0f, - 0x68, 0x18, 0x40, 0x07, 0xd0, 0x01, 0x27, 0x11, - 0xe0, 0xa2, 0x27, 0x00, 0x43, 0x08, 0x60, 0x18, - 0x23, 0x1c, 0x98, 0x05, 0x40, 0x18, 0x28, 0x1c, - 0xd1, 0x06, 0x21, 0x01, 0x20, 0x7d, 0x01, 0x00, - 0xf0, 0x15, 0xff, 0x60, 0x1c, 0x06, 0xe0, 0x0d, - 0x98, 0x05, 0x08, 0x40, 0xd3, 0x05, 0x21, 0x01, - 0x20, 0xc8, 0xf0, 0x15, 0xff, 0x57, 0x1c, 0x06, - 0xe0, 0x04, 0x21, 0x01, 0x20, 0x3c, 0xf0, 0x15, - 0xff, 0x51, 0x1c, 0x06, 0x20, 0x34, 0xf0, 0x03, - 0xf9, 0x57, 0x00, 0xaa, 0x92, 0x09, 0x49, 0x4c, - 0x91, 0x08, 0x50, 0x88, 0x00, 0xa1, 0x91, 0x07, - 0x48, 0x4a, 0x90, 0x06, 0x58, 0x40, 0x28, 0x00, - 0xd1, 0x05, 0x00, 0xb0, 0xf0, 0x03, 0xf9, 0x48, - 0x99, 0x07, 0x9a, 0x06, 0x50, 0x50, 0x98, 0x09, - 0x99, 0x08, 0x58, 0x08, 0x28, 0x00, 0xd0, 0x04, - 0x98, 0x06, 0x99, 0x07, 0x58, 0x40, 0x28, 0x00, - 0xd1, 0x01, 0x27, 0x13, 0xe0, 0x64, 0x99, 0x07, - 0x4a, 0x3f, 0x58, 0x51, 0x29, 0x00, 0xd1, 0x3a, - 0x9a, 0x01, 0xb4, 0x04, 0x23, 0x40, 0x1c, 0x31, - 0x1c, 0x22, 0xf0, 0x15, 0xff, 0xaf, 0xb0, 0x01, - 0x1c, 0x07, 0xd1, 0x17, 0x23, 0x03, 0x02, 0x5b, - 0x22, 0x01, 0x02, 0xd2, 0x21, 0x01, 0x1c, 0x20, - 0xf0, 0x0e, 0xf8, 0xf2, 0x22, 0x00, 0xb4, 0x04, - 0x22, 0x02, 0x99, 0x03, 0x9b, 0x02, 0x1c, 0x20, - 0xf0, 0x0d, 0xff, 0x26, 0xb0, 0x01, 0x1c, 0x07, - 0xd1, 0x04, 0x22, 0x01, 0x48, 0x2f, 0x55, 0x02, - 0x48, 0x2f, 0x55, 0x02, 0x2f, 0x00, 0xd1, 0x16, - 0x98, 0x16, 0x28, 0x00, 0xd0, 0x13, 0x21, 0x02, - 0x98, 0x16, 0xf0, 0x15, 0xfe, 0xff, 0x1c, 0x07, - 0x00, 0x80, 0xf0, 0x03, 0xf9, 0x05, 0x99, 0x07, - 0x4a, 0x28, 0x50, 0x50, 0x28, 0x00, 0xd0, 0x05, - 0x1c, 0x39, 0x1c, 0x22, 0xf0, 0x15, 0xff, 0x13, - 0x1c, 0x07, 0xe0, 0x00, 0x27, 0x13, 0x2f, 0x00, - 0xd1, 0x22, 0x98, 0x03, 0x09, 0x80, 0xd3, 0x06, - 0x20, 0x5c, 0xf0, 0x03, 0xf8, 0xf1, 0x28, 0x00, - 0xd1, 0x02, 0x27, 0x13, 0xe0, 0x00, 0x20, 0x00, - 0x1c, 0x02, 0x98, 0x05, 0x99, 0x17, 0xb4, 0x07, - 0x1c, 0x2a, 0xb4, 0x04, 0x98, 0x0d, 0x99, 0x0c, - 0x58, 0x08, 0x99, 0x18, 0x9a, 0x08, 0x9b, 0x07, - 0xf0, 0x00, 0xf9, 0x1c, 0xb0, 0x04, 0x2f, 0x00, - 0xd1, 0x06, 0x98, 0x09, 0x99, 0x08, 0x58, 0x08, - 0x1c, 0x21, 0xf0, 0x12, 0xf9, 0x93, 0x1c, 0x07, - 0x2f, 0x00, 0xd0, 0x03, 0x1c, 0x20, 0x1c, 0x29, - 0xf0, 0x00, 0xf8, 0x20, 0x98, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0xf0, 0x20, 0xff, 0xf1, 0x4b, 0x0c, - 0x40, 0x18, 0xf0, 0x20, 0xff, 0xf1, 0x1c, 0x38, - 0xb0, 0x0a, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0xf0, - 0x2e, 0x08, 0x01, 0xf4, 0x2e, 0x08, 0x02, 0x74, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x44, 0xf8, - 0x2e, 0x08, 0x44, 0xd8, 0x2e, 0x08, 0x02, 0xf4, - 0xff, 0xef, 0xff, 0xff, 0xb5, 0xf0, 0x06, 0x07, - 0x0e, 0x3f, 0x06, 0x0d, 0x0e, 0x2d, 0xb0, 0x83, - 0xf0, 0x20, 0xff, 0xce, 0x0d, 0x40, 0xd2, 0x09, - 0x20, 0xff, 0x90, 0x00, 0xf0, 0x20, 0xff, 0xc8, - 0x23, 0x01, 0x05, 0x1b, 0x43, 0x18, 0xf0, 0x20, - 0xff, 0xc7, 0xe0, 0x01, 0x20, 0x00, 0x90, 0x00, - 0x24, 0x00, 0x20, 0x01, 0x40, 0xa8, 0x1c, 0x02, - 0x49, 0x3f, 0x1c, 0x13, 0x68, 0x08, 0x40, 0x03, - 0xd0, 0x69, 0x43, 0xd2, 0x40, 0x10, 0x00, 0xae, - 0x60, 0x08, 0x4d, 0x3c, 0x59, 0xa8, 0x28, 0x00, - 0xd0, 0x62, 0x78, 0x81, 0x91, 0x02, 0x08, 0x49, - 0xd3, 0x02, 0x23, 0x12, 0x93, 0x01, 0xe0, 0x01, - 0x23, 0x11, 0x93, 0x01, 0x1c, 0x39, 0xf0, 0x12, - 0xf9, 0xad, 0x1c, 0x04, 0x59, 0xa8, 0x6b, 0x00, - 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x03, 0xf8, 0x96, - 0x59, 0xa8, 0x6a, 0xc0, 0x28, 0x00, 0xd0, 0x01, - 0xf0, 0x03, 0xf8, 0x90, 0x59, 0xa8, 0xf0, 0x03, - 0xf8, 0x8d, 0x20, 0x00, 0x51, 0xa8, 0x00, 0xbd, - 0x48, 0x2b, 0x59, 0x40, 0x78, 0x80, 0x28, 0x00, - 0xd1, 0x40, 0x1c, 0x39, 0xf0, 0x15, 0xfc, 0xd2, - 0x2c, 0x00, 0xd1, 0x2a, 0x98, 0x02, 0x09, 0x80, - 0xd3, 0x0a, 0x21, 0x00, 0x1c, 0x3a, 0x48, 0x25, - 0xf0, 0x15, 0xfe, 0x6d, 0x28, 0x00, 0xd0, 0x03, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x22, 0x00, 0xb4, 0x04, 0x22, 0x02, 0x9b, 0x02, - 0x1c, 0x38, 0x49, 0x1e, 0xf0, 0x0d, 0xfe, 0x54, - 0xb0, 0x01, 0x1c, 0x04, 0xd1, 0x11, 0x9a, 0x01, - 0xb4, 0x04, 0x26, 0x00, 0x21, 0x00, 0x1c, 0x3a, - 0x1c, 0x33, 0x48, 0x18, 0xf0, 0x15, 0xfe, 0xbe, - 0x1c, 0x04, 0xb0, 0x01, 0x48, 0x16, 0x55, 0xc6, - 0x48, 0x16, 0x55, 0xc6, 0x1c, 0x38, 0xf7, 0xff, - 0xfa, 0xc5, 0x4f, 0x15, 0x59, 0x78, 0xf0, 0x03, - 0xf8, 0x51, 0x26, 0x00, 0x51, 0x7e, 0x37, 0x80, - 0x59, 0x78, 0x28, 0x00, 0xd0, 0x04, 0xf0, 0x03, - 0xf8, 0x49, 0x51, 0x7e, 0xe0, 0x02, 0xe0, 0x00, - 0xe0, 0x00, 0x24, 0x12, 0x98, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0xf0, 0x20, 0xff, 0x45, 0x4b, 0x0b, - 0x40, 0x18, 0xf0, 0x20, 0xff, 0x45, 0x1c, 0x20, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x01, 0xf0, 0x2e, 0x08, 0x01, 0xf4, - 0x2e, 0x08, 0x9b, 0xc8, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x44, 0xf8, 0x2e, 0x08, 0x44, 0xd8, - 0x2e, 0x08, 0x02, 0x74, 0xff, 0xef, 0xff, 0xff, - 0xb5, 0xb0, 0x06, 0x00, 0x0e, 0x00, 0x00, 0x80, - 0x1c, 0x0c, 0x1c, 0x17, 0xb0, 0xad, 0x49, 0x1c, - 0x58, 0x08, 0x90, 0x04, 0x78, 0x81, 0x23, 0x04, - 0x40, 0x19, 0x25, 0x00, 0x29, 0x00, 0xd0, 0x0b, - 0xa9, 0x25, 0xf0, 0x12, 0xfd, 0x6f, 0xab, 0x00, - 0x80, 0x5d, 0xa8, 0x25, 0x90, 0x24, 0x46, 0x68, - 0x21, 0x00, 0xf0, 0x12, 0xfd, 0x8e, 0xe0, 0x0c, - 0x78, 0x00, 0x0a, 0x00, 0xd3, 0x04, 0x20, 0x01, - 0x03, 0x00, 0xab, 0x00, 0x80, 0x58, 0xe0, 0x03, - 0x20, 0x01, 0x02, 0x80, 0xab, 0x00, 0x80, 0x58, - 0x20, 0x00, 0x28, 0x00, 0xd1, 0x0e, 0xa8, 0x00, - 0x88, 0x40, 0x60, 0x38, 0xf0, 0x02, 0xff, 0xd4, - 0x60, 0x20, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x13, - 0xe0, 0x06, 0x1c, 0x01, 0x46, 0x68, 0xf0, 0x12, - 0xfd, 0x70, 0xe0, 0x01, 0x60, 0x25, 0x60, 0x3d, - 0xb0, 0x2d, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x01, 0xf4, 0xb4, 0xf0, 0x06, 0x12, - 0x0e, 0x12, 0x06, 0x1b, 0x0e, 0x1b, 0x9c, 0x06, - 0x9f, 0x07, 0x9d, 0x05, 0x9e, 0x04, 0x06, 0x36, - 0x0e, 0x36, 0x06, 0x2d, 0xd0, 0x02, 0x25, 0x80, - 0x70, 0x05, 0xe0, 0x01, 0x25, 0x00, 0x70, 0x05, - 0x25, 0x00, 0x70, 0x45, 0x80, 0x85, 0x72, 0x05, - 0x70, 0xc6, 0x70, 0x83, 0x62, 0xc4, 0x63, 0x07, - 0x27, 0x00, 0x23, 0x00, 0x2a, 0x00, 0xdd, 0x10, - 0x5c, 0xcc, 0x19, 0xc5, 0x73, 0x2c, 0x18, 0xcc, - 0x78, 0x66, 0x1c, 0x7c, 0x06, 0x25, 0x0e, 0x2d, - 0x1c, 0x3c, 0x18, 0x24, 0x77, 0x26, 0x33, 0x02, - 0x06, 0x1b, 0x0e, 0x1b, 0x1c, 0x2f, 0x42, 0x93, - 0xdb, 0xee, 0xbc, 0xf0, 0x47, 0x70, 0xb5, 0xf0, - 0xb0, 0xac, 0x21, 0x00, 0xa8, 0x07, 0xf0, 0x12, - 0xfb, 0xf5, 0xa8, 0x07, 0x78, 0x00, 0x90, 0x06, - 0x28, 0x00, 0xd0, 0x4b, 0x24, 0x00, 0x98, 0x06, - 0x28, 0x00, 0xdd, 0x43, 0xa8, 0x07, 0xf0, 0x12, - 0xff, 0xbc, 0x00, 0xa1, 0xa8, 0x07, 0x18, 0x08, - 0x69, 0x07, 0x78, 0xfe, 0xad, 0x07, 0x88, 0x6d, - 0x78, 0xb8, 0x09, 0xc0, 0xd3, 0x12, 0xa8, 0x07, - 0xa9, 0x01, 0xf0, 0x16, 0xfa, 0x0b, 0x78, 0xb8, - 0x08, 0x40, 0xd3, 0x05, 0x46, 0x6a, 0x1c, 0x38, - 0xa9, 0x01, 0xf0, 0x16, 0xfa, 0x38, 0xe0, 0x08, - 0x46, 0x6a, 0x1c, 0x38, 0xa9, 0x01, 0xf0, 0x16, - 0xfa, 0x75, 0xe0, 0x02, 0x20, 0x40, 0xab, 0x00, - 0x70, 0x18, 0xa8, 0x00, 0x78, 0x00, 0x09, 0xc0, - 0xd3, 0x16, 0x1c, 0x28, 0xf7, 0xfd, 0xfe, 0xf8, - 0x1c, 0x07, 0xd0, 0x11, 0xa8, 0x07, 0x1c, 0x39, - 0xf0, 0x12, 0xfe, 0x2e, 0x28, 0x00, 0xd1, 0x09, - 0x1c, 0x30, 0x1c, 0x29, 0x1c, 0x3a, 0xf7, 0xfd, - 0xff, 0x47, 0x28, 0x00, 0xd0, 0x04, 0xf7, 0xfd, - 0xff, 0x39, 0xe0, 0x01, 0xf7, 0xfd, 0xff, 0x36, - 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, 0x98, 0x06, - 0x42, 0x84, 0xdb, 0xbb, 0xa8, 0x07, 0xf0, 0x12, - 0xfc, 0x97, 0xe7, 0xaa, 0xf7, 0xff, 0xfa, 0x5c, - 0xb0, 0x2c, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf0, 0xb0, 0xad, 0x21, 0x00, 0xa8, 0x08, - 0xf0, 0x12, 0xfb, 0x98, 0x22, 0x05, 0x21, 0x16, - 0x1c, 0x04, 0xf0, 0x03, 0xfd, 0x6a, 0x2c, 0xb2, - 0xd1, 0x03, 0x21, 0x00, 0xa8, 0x08, 0xf0, 0x12, - 0xfb, 0x47, 0xa8, 0x08, 0x78, 0x00, 0x90, 0x06, - 0x28, 0x00, 0xd0, 0x73, 0x25, 0x00, 0x98, 0x06, - 0x28, 0x00, 0xdd, 0x57, 0xa8, 0x08, 0xf0, 0x12, - 0xff, 0x54, 0x00, 0xa9, 0xa8, 0x08, 0x18, 0x08, - 0x69, 0x07, 0x78, 0xf8, 0x90, 0x07, 0xae, 0x08, - 0x88, 0x76, 0x78, 0xb8, 0x09, 0xc0, 0xd3, 0x12, - 0xa8, 0x08, 0xa9, 0x01, 0xf0, 0x16, 0xf9, 0xa2, - 0x78, 0xb8, 0x08, 0x40, 0xd3, 0x05, 0x46, 0x6a, - 0x1c, 0x38, 0xa9, 0x01, 0xf0, 0x16, 0xf9, 0xcf, - 0xe0, 0x08, 0x46, 0x6a, 0x1c, 0x38, 0xa9, 0x01, - 0xf0, 0x16, 0xfa, 0x0c, 0xe0, 0x02, 0x20, 0x40, - 0xab, 0x00, 0x70, 0x18, 0xa8, 0x00, 0x78, 0x00, - 0x09, 0xc0, 0xd3, 0x29, 0x78, 0xb8, 0x09, 0x80, - 0xd3, 0x0f, 0xa8, 0x08, 0xa9, 0x01, 0xf0, 0x16, - 0xfb, 0x69, 0x1c, 0x04, 0xa8, 0x00, 0x78, 0x00, - 0x08, 0x80, 0xd2, 0x02, 0x78, 0xb8, 0x08, 0x80, - 0xd3, 0x1a, 0x1c, 0x38, 0xf0, 0x16, 0xfc, 0x70, - 0xe0, 0x16, 0x1c, 0x30, 0xf7, 0xfd, 0xfe, 0x7c, - 0x1c, 0x07, 0xd0, 0x11, 0xa8, 0x08, 0x1c, 0x39, - 0xf0, 0x12, 0xfd, 0xb2, 0x28, 0x00, 0xd1, 0x09, - 0x98, 0x07, 0x1c, 0x31, 0x1c, 0x3a, 0xf7, 0xfd, - 0xfe, 0xcb, 0x28, 0x00, 0xd0, 0x04, 0xf7, 0xfd, - 0xfe, 0xbd, 0xe0, 0x01, 0xf7, 0xfd, 0xfe, 0xba, - 0x1c, 0x68, 0x06, 0x05, 0x0e, 0x2d, 0x98, 0x06, - 0x42, 0x85, 0xdb, 0xa7, 0x98, 0x06, 0x28, 0x00, - 0xd0, 0x08, 0xa8, 0x08, 0xf0, 0x12, 0xfc, 0x18, - 0x2c, 0xb2, 0xd1, 0x03, 0x21, 0x00, 0xa8, 0x08, - 0xf0, 0x12, 0xfa, 0xda, 0xf7, 0xff, 0xf9, 0x5c, - 0x21, 0x00, 0xa8, 0x08, 0xf7, 0xff, 0xfb, 0x88, - 0x1c, 0x04, 0xa8, 0x08, 0x78, 0x00, 0x90, 0x06, - 0x28, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xd1, 0x89, - 0xf7, 0xff, 0xf9, 0xca, 0xb0, 0x2d, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x26, 0x00, - 0x48, 0x28, 0x71, 0x06, 0x70, 0x06, 0x20, 0x00, - 0x4f, 0x27, 0x4a, 0x28, 0x49, 0x28, 0x00, 0x43, - 0x52, 0xd6, 0x52, 0xfe, 0x00, 0x83, 0x50, 0xce, - 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x28, 0x1d, - 0xdb, 0xf5, 0x28, 0x20, 0xda, 0x08, 0x00, 0x43, - 0x52, 0xd6, 0x00, 0x83, 0x50, 0xce, 0x30, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x20, 0xdb, 0xf6, - 0x20, 0x01, 0x02, 0x80, 0xf0, 0x20, 0xfd, 0xa3, - 0xf0, 0x20, 0xfd, 0xa6, 0x4b, 0x1b, 0x40, 0x18, - 0xf0, 0x20, 0xfd, 0xa6, 0x49, 0x1a, 0x20, 0x0a, - 0xf0, 0x20, 0xfd, 0xa6, 0x21, 0x00, 0x4f, 0x19, - 0x20, 0xff, 0x4a, 0x19, 0x00, 0x4b, 0x18, 0x5b, - 0x01, 0x1b, 0x52, 0xd7, 0x18, 0x9b, 0x70, 0x98, - 0x70, 0xde, 0x71, 0x1e, 0x1d, 0xdc, 0x34, 0x19, - 0x73, 0x26, 0x71, 0x5e, 0x1c, 0x1d, 0x23, 0x06, - 0x73, 0x63, 0x23, 0x00, 0x00, 0xdc, 0x19, 0x2c, - 0x81, 0xa6, 0x81, 0xe6, 0x33, 0x01, 0x06, 0x1b, - 0x0e, 0x1b, 0x60, 0xa6, 0x2b, 0x04, 0xdb, 0xf5, - 0x31, 0x01, 0x06, 0x09, 0x0e, 0x09, 0x29, 0x08, - 0xdb, 0xe0, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x03, 0xbc, - 0x2e, 0x08, 0x4a, 0x60, 0x2e, 0x08, 0x4a, 0x20, - 0x2e, 0x08, 0x46, 0x98, 0xff, 0xff, 0xfb, 0xff, - 0x2e, 0x00, 0x30, 0x45, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x45, 0x18, 0xb5, 0xf0, 0x06, 0x00, - 0x0e, 0x00, 0xb0, 0x83, 0x90, 0x00, 0x04, 0x09, - 0x0c, 0x09, 0x91, 0x01, 0x06, 0x10, 0x0e, 0x00, - 0x04, 0x1c, 0x0c, 0x24, 0x27, 0x00, 0x49, 0x5a, - 0x00, 0x7b, 0x19, 0xdb, 0x01, 0x1b, 0x5a, 0xcd, - 0x4b, 0x58, 0x42, 0x9d, 0xd1, 0x01, 0x1c, 0x3a, - 0xe0, 0x04, 0x1c, 0x7b, 0x06, 0x1f, 0x0e, 0x3f, - 0x2f, 0x08, 0xdb, 0xf1, 0x2f, 0x08, 0xd1, 0x05, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0x46, 0x4f, 0x50, - 0x97, 0x02, 0x5b, 0xbb, 0x2b, 0x00, 0xd0, 0x05, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x23, 0x01, 0x9f, 0x02, - 0x53, 0xbb, 0x00, 0x53, 0x18, 0x9a, 0x01, 0x12, - 0x18, 0x57, 0x80, 0x38, 0x20, 0x14, 0xf0, 0x02, - 0xfe, 0x03, 0x1c, 0x01, 0x62, 0xb8, 0x20, 0x00, - 0x29, 0x00, 0xd1, 0x08, 0x49, 0x41, 0x80, 0x39, - 0x9f, 0x02, 0x53, 0xb8, 0x43, 0xc0, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x0d, - 0x21, 0xff, 0x02, 0x09, 0x40, 0x21, 0x12, 0x08, - 0x28, 0x09, 0xd2, 0x1f, 0xa3, 0x01, 0x5c, 0x1b, - 0x00, 0x5b, 0x44, 0x9f, 0x1b, 0x04, 0x06, 0x09, - 0x0c, 0x0f, 0x12, 0x15, 0x18, 0x00, 0x24, 0xb8, - 0xe0, 0x16, 0x24, 0xff, 0x34, 0x71, 0xe0, 0x13, - 0x24, 0x01, 0x02, 0xa4, 0xe0, 0x10, 0x24, 0x01, - 0x02, 0xe4, 0xe0, 0x0d, 0x24, 0x01, 0x03, 0x24, - 0xe0, 0x0a, 0x24, 0x01, 0x03, 0x64, 0xe0, 0x07, - 0x24, 0x01, 0x03, 0xa4, 0xe0, 0x04, 0x24, 0x01, - 0x03, 0xe4, 0xe0, 0x01, 0x24, 0x01, 0x02, 0xa4, - 0x80, 0xac, 0x88, 0xa8, 0x00, 0x80, 0xf0, 0x02, - 0xfd, 0xc7, 0x60, 0x28, 0x28, 0x00, 0xd1, 0x0d, - 0x48, 0x24, 0x80, 0x38, 0x20, 0x00, 0x9f, 0x02, - 0x53, 0xb8, 0x1c, 0x28, 0xf0, 0x02, 0xfd, 0xde, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x98, 0x00, 0x70, 0xb8, - 0x26, 0x00, 0x88, 0x38, 0x00, 0x80, 0x49, 0x1d, - 0x50, 0x0e, 0x20, 0x00, 0x1c, 0x01, 0x43, 0x61, - 0x68, 0x2a, 0x18, 0x8a, 0x00, 0xc1, 0x19, 0xc9, - 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x60, 0x8a, - 0x28, 0x04, 0xdb, 0xf3, 0x20, 0xb8, 0x1c, 0x21, - 0xf0, 0x1b, 0xf9, 0x30, 0x1d, 0xfc, 0x34, 0x19, - 0x73, 0x20, 0x72, 0x2e, 0x78, 0xb8, 0x23, 0x01, - 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x01, 0xf0, 0x0d, - 0xfd, 0x63, 0x22, 0x00, 0xb4, 0x04, 0x78, 0xb8, - 0x23, 0x05, 0x22, 0x02, 0x99, 0x02, 0xf0, 0x0d, - 0xfb, 0x97, 0x22, 0x04, 0x7b, 0x21, 0xb0, 0x01, - 0xb4, 0x06, 0x78, 0xb9, 0x22, 0x0a, 0x20, 0x85, - 0x6a, 0xbb, 0xf0, 0x0d, 0xfd, 0xdf, 0x1c, 0x30, - 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x45, 0x18, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x4a, 0x20, 0x2e, 0x08, 0x46, 0x98, - 0xb5, 0xf0, 0xb0, 0x82, 0x46, 0x68, 0xf0, 0x0e, - 0xfb, 0x73, 0x21, 0x00, 0x4f, 0x24, 0x4b, 0x25, - 0x93, 0x01, 0x4a, 0x25, 0x00, 0x48, 0x18, 0x40, - 0x01, 0x00, 0x19, 0xc0, 0x78, 0x84, 0x9d, 0x00, - 0x40, 0xe5, 0x07, 0xeb, 0x0f, 0xdb, 0x2b, 0x01, - 0xd1, 0x31, 0x6a, 0x83, 0x7a, 0x1c, 0x2c, 0xa4, - 0xd0, 0x01, 0x2c, 0xa5, 0xd1, 0x2b, 0x1d, 0xc4, - 0x34, 0x19, 0xe0, 0x0e, 0x79, 0x05, 0x73, 0x65, - 0x88, 0xde, 0x79, 0x05, 0x00, 0xed, 0x18, 0x2d, - 0x81, 0xae, 0x79, 0x05, 0x35, 0x01, 0x07, 0xad, - 0x0f, 0xad, 0x71, 0x05, 0x78, 0x15, 0x35, 0x01, - 0x70, 0x15, 0x7a, 0x9d, 0x7b, 0x66, 0x42, 0xb5, - 0xd0, 0x02, 0x79, 0x45, 0x2d, 0x00, 0xd0, 0xe9, - 0x7a, 0x1b, 0x2b, 0xa5, 0xd1, 0x0f, 0x79, 0x43, - 0x07, 0xdc, 0x0f, 0xe4, 0x2c, 0x01, 0xd0, 0x0a, - 0x1c, 0x1c, 0x23, 0x01, 0x43, 0x23, 0x71, 0x43, - 0x88, 0x00, 0x00, 0x80, 0x9b, 0x01, 0x18, 0xc0, - 0x68, 0x03, 0x33, 0x01, 0x60, 0x03, 0x1c, 0x48, - 0x06, 0x01, 0x0e, 0x09, 0x29, 0x08, 0xdb, 0xbd, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x45, 0x18, 0x2e, 0x08, 0x46, 0x98, - 0x2e, 0x08, 0x03, 0xbc, 0xb5, 0xf0, 0x04, 0x05, - 0x0c, 0x2d, 0x20, 0x00, 0x4c, 0x31, 0x00, 0x42, - 0x18, 0x12, 0x01, 0x12, 0x5a, 0xa2, 0x42, 0xaa, - 0xd1, 0x01, 0x1c, 0x01, 0xe0, 0x04, 0x30, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x08, 0xdb, 0xf2, - 0x28, 0x08, 0xd1, 0x04, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x48, - 0x18, 0x40, 0x01, 0x00, 0x19, 0x07, 0x78, 0xb8, - 0x49, 0x25, 0xf0, 0x0d, 0xfd, 0xab, 0x79, 0x78, - 0x23, 0x02, 0x43, 0x18, 0x71, 0x78, 0x78, 0xbe, - 0x20, 0xff, 0x70, 0xb8, 0x21, 0x00, 0x1d, 0xf8, - 0x30, 0x19, 0x73, 0x01, 0x21, 0x06, 0x73, 0x41, - 0x78, 0xf8, 0x79, 0x39, 0x42, 0x88, 0xd1, 0x11, - 0x79, 0x78, 0x07, 0xc0, 0x0f, 0xc0, 0x28, 0x01, - 0xd0, 0x0c, 0x20, 0x00, 0x70, 0xf8, 0x71, 0x38, - 0x71, 0x78, 0x48, 0x17, 0x80, 0x38, 0x6a, 0xb8, - 0x68, 0x00, 0xf0, 0x02, 0xfc, 0xff, 0x6a, 0xb8, - 0xf0, 0x02, 0xfc, 0xfc, 0x4f, 0x12, 0x00, 0x68, - 0x49, 0x12, 0x52, 0x0f, 0x00, 0x71, 0x4a, 0x12, - 0x52, 0x57, 0x21, 0x00, 0x4a, 0x11, 0x52, 0x11, - 0x1c, 0x30, 0x1c, 0x29, 0xf0, 0x02, 0xff, 0xfa, - 0x20, 0x00, 0x00, 0x41, 0x18, 0x09, 0x01, 0x09, - 0x5a, 0x61, 0x42, 0xb9, 0xd1, 0x04, 0x30, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x08, 0xdb, 0xf4, - 0x28, 0x08, 0xd1, 0x03, 0x21, 0x00, 0x48, 0x08, - 0x71, 0x01, 0x70, 0x01, 0x20, 0x00, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x45, 0x18, - 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x49, 0xe0, - 0x2e, 0x08, 0x49, 0xa8, 0x2e, 0x08, 0x4a, 0x20, - 0x2e, 0x08, 0x03, 0xbc, 0xb5, 0x80, 0x1c, 0x07, - 0x30, 0x28, 0xf0, 0x02, 0xfc, 0xa5, 0x49, 0x07, - 0x64, 0x88, 0x65, 0x08, 0x65, 0x48, 0x19, 0xc0, - 0x64, 0xc8, 0x20, 0x00, 0x64, 0x08, 0x64, 0x4f, - 0x49, 0x03, 0x84, 0x08, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x03, 0xc4, - 0x2c, 0x00, 0x01, 0x00, 0xb5, 0x80, 0x1c, 0x07, - 0x30, 0x28, 0xf0, 0x02, 0xfc, 0x8d, 0x49, 0x06, - 0x66, 0x08, 0x66, 0x88, 0x66, 0xc8, 0x19, 0xc0, - 0x66, 0x48, 0x20, 0x00, 0x65, 0x88, 0x65, 0xcf, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x03, 0xc4, 0xb4, 0x80, 0x04, 0x09, - 0x0c, 0x09, 0x88, 0x02, 0x42, 0x8a, 0xd0, 0x18, - 0x4a, 0x0d, 0x8f, 0x13, 0x2b, 0x01, 0xd0, 0x04, - 0x23, 0x01, 0x87, 0x13, 0x8f, 0x17, 0x2f, 0x01, - 0xd1, 0xfb, 0x88, 0x03, 0x42, 0x8b, 0xd0, 0x03, - 0x80, 0x01, 0x88, 0x03, 0x42, 0x8b, 0xd1, 0xfb, - 0x8f, 0x11, 0x1c, 0x10, 0x29, 0x00, 0xd0, 0x04, - 0x21, 0x00, 0x87, 0x01, 0x8f, 0x02, 0x2a, 0x00, - 0xd1, 0xfb, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, - 0x2c, 0x00, 0x1f, 0xc0, 0xb5, 0x80, 0x48, 0x27, - 0x8f, 0x40, 0x28, 0x00, 0xd1, 0x47, 0x4f, 0x26, - 0x88, 0x38, 0x12, 0x00, 0x4a, 0x25, 0x28, 0x06, - 0xd0, 0x21, 0xdc, 0x08, 0x28, 0x06, 0xd2, 0x36, - 0xa3, 0x01, 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, - 0x3a, 0x09, 0x09, 0x15, 0x32, 0x09, 0x28, 0x0a, - 0xd0, 0x1b, 0xdc, 0x08, 0x28, 0x07, 0xd0, 0x15, - 0x28, 0x09, 0xd1, 0x28, 0x88, 0x79, 0x88, 0x38, - 0xf0, 0x00, 0xf8, 0xd4, 0xe0, 0x27, 0x28, 0x0b, - 0xd0, 0x1c, 0x28, 0x80, 0xd1, 0x1f, 0xf0, 0x00, - 0xf9, 0x25, 0xe0, 0x20, 0x88, 0x79, 0x88, 0x38, - 0xf0, 0x00, 0xf8, 0x2c, 0xe0, 0x1b, 0xf0, 0x00, - 0xf9, 0x75, 0xe0, 0x18, 0xf0, 0x00, 0xf9, 0xe0, - 0xe0, 0x15, 0x88, 0x38, 0xb0, 0x84, 0xab, 0x00, - 0x80, 0x18, 0x88, 0x78, 0x70, 0x98, 0x92, 0x01, - 0x46, 0x69, 0x20, 0x75, 0xf0, 0x08, 0xf8, 0x04, - 0xb0, 0x04, 0xe0, 0x08, 0x88, 0x79, 0x88, 0x38, - 0xf0, 0x00, 0xfc, 0x50, 0xe0, 0x03, 0x48, 0x08, - 0x8e, 0x81, 0x31, 0x01, 0x86, 0x81, 0x21, 0x00, - 0x1c, 0x38, 0xf7, 0xff, 0xff, 0x8f, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x1f, 0xc0, - 0x2c, 0x00, 0x00, 0xfc, 0x2c, 0x00, 0x01, 0x00, - 0x2e, 0x08, 0x04, 0x04, 0xb5, 0xf0, 0x04, 0x04, - 0x0c, 0x24, 0x04, 0x0d, 0x0c, 0x2d, 0x1c, 0x17, - 0xf0, 0x20, 0xfb, 0x5e, 0x2d, 0x10, 0xdd, 0x03, - 0x20, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x68, 0x10, 0x40, 0x00, 0x40, 0x04, 0x01, - 0x0c, 0x09, 0x1c, 0x88, 0x00, 0x40, 0x1d, 0x02, - 0x48, 0x1b, 0x6c, 0x03, 0x18, 0x9d, 0x6c, 0x46, - 0x4b, 0x1a, 0x42, 0xb5, 0xdd, 0x08, 0x88, 0x19, - 0x1c, 0x18, 0x23, 0x20, 0x43, 0x19, 0x80, 0x01, - 0x20, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x64, 0x05, 0x35, 0x28, 0x42, 0xb5, 0xdd, 0x04, - 0x88, 0x1e, 0x1c, 0x1d, 0x23, 0x10, 0x43, 0x33, - 0x80, 0x2b, 0x6d, 0x03, 0x80, 0x9c, 0x6d, 0x04, - 0x80, 0xe2, 0x23, 0x00, 0x29, 0x00, 0xdd, 0x08, - 0x88, 0x3d, 0x00, 0x5c, 0x6d, 0x06, 0x19, 0xa4, - 0x81, 0x25, 0x33, 0x01, 0x37, 0x02, 0x42, 0x8b, - 0xdb, 0xf6, 0x6d, 0x01, 0x18, 0x8a, 0x6c, 0xc3, - 0x42, 0x9a, 0xd9, 0x00, 0x6c, 0x82, 0x60, 0x0a, - 0x65, 0x02, 0xf0, 0x20, 0xfb, 0x53, 0x20, 0x00, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x03, 0xc4, 0x2c, 0x00, 0x00, 0xf8, - 0xb4, 0xf0, 0x04, 0x04, 0x0c, 0x24, 0x04, 0x08, - 0x0c, 0x00, 0x28, 0x10, 0xdd, 0x02, 0x20, 0x02, - 0xbc, 0xf0, 0x47, 0x70, 0x30, 0x01, 0x4f, 0x1c, - 0x40, 0x07, 0x1c, 0xb8, 0x00, 0x40, 0x1d, 0x01, - 0x48, 0x1a, 0x6d, 0x83, 0x18, 0x5d, 0x6d, 0xc6, - 0x4b, 0x19, 0x42, 0xb5, 0xdd, 0x07, 0x88, 0x19, - 0x1c, 0x18, 0x23, 0x02, 0x43, 0x19, 0x80, 0x01, - 0x20, 0x01, 0xbc, 0xf0, 0x47, 0x70, 0x65, 0x85, - 0x35, 0x28, 0x42, 0xb5, 0xdd, 0x04, 0x88, 0x1e, - 0x1c, 0x1d, 0x23, 0x01, 0x43, 0x33, 0x80, 0x2b, - 0x6e, 0x83, 0x80, 0x9c, 0x6e, 0x84, 0x80, 0xe1, - 0x23, 0x00, 0x2f, 0x00, 0xdd, 0x08, 0x88, 0x15, - 0x00, 0x5c, 0x6e, 0x86, 0x19, 0xa4, 0x81, 0x25, - 0x32, 0x02, 0x33, 0x01, 0x42, 0xbb, 0xdb, 0xf6, - 0x6e, 0x82, 0x18, 0x51, 0x6e, 0x43, 0x42, 0x99, - 0xd3, 0x00, 0x6e, 0x01, 0x60, 0x11, 0x66, 0x81, - 0x20, 0x00, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xfe, 0x2e, 0x08, 0x03, 0xc4, - 0x2c, 0x00, 0x00, 0xf8, 0xb5, 0xb0, 0x04, 0x04, - 0x0c, 0x24, 0x04, 0x0d, 0x0c, 0x2d, 0x1c, 0x17, - 0xf0, 0x20, 0xfa, 0xc2, 0x1c, 0x20, 0x1c, 0x29, - 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0xa9, 0x1c, 0x07, - 0xf0, 0x20, 0xfa, 0xf0, 0x1c, 0x38, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0xb4, 0xf0, 0x04, 0x04, - 0x0c, 0x24, 0x04, 0x09, 0x0c, 0x09, 0x29, 0x08, - 0xdd, 0x02, 0x20, 0x02, 0xbc, 0xf0, 0x47, 0x70, - 0x00, 0x88, 0x1d, 0xc7, 0x37, 0x01, 0x48, 0x19, - 0x6d, 0x83, 0x19, 0xdd, 0x6d, 0xc6, 0x4b, 0x18, - 0x42, 0xb5, 0xdd, 0x07, 0x88, 0x19, 0x1c, 0x18, - 0x23, 0x02, 0x43, 0x19, 0x80, 0x01, 0x20, 0x01, - 0xbc, 0xf0, 0x47, 0x70, 0x65, 0x85, 0x35, 0x28, - 0x42, 0xb5, 0xdd, 0x04, 0x88, 0x1e, 0x1c, 0x1d, - 0x23, 0x01, 0x43, 0x33, 0x80, 0x2b, 0x6e, 0x83, - 0x80, 0x9c, 0x6e, 0x84, 0x80, 0xe7, 0x23, 0x00, - 0x6e, 0x84, 0x29, 0x00, 0xdd, 0x06, 0xca, 0x40, - 0x00, 0x9d, 0x19, 0x2d, 0x60, 0xae, 0x33, 0x01, - 0x42, 0x8b, 0xdb, 0xf8, 0x6e, 0x81, 0x19, 0xca, - 0x6e, 0x43, 0x42, 0x9a, 0xd3, 0x00, 0x6e, 0x02, - 0x60, 0x0a, 0x66, 0x82, 0x20, 0x00, 0xbc, 0xf0, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x03, 0xc4, - 0x2c, 0x00, 0x00, 0xf8, 0xb5, 0x80, 0x48, 0x28, - 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x4f, 0x27, - 0x28, 0x01, 0xd0, 0x13, 0x28, 0x02, 0xd0, 0x1a, - 0x28, 0x03, 0xd1, 0x0c, 0x68, 0x38, 0x88, 0x41, - 0x29, 0x0e, 0xdb, 0x02, 0x88, 0x41, 0x29, 0x0f, - 0xdd, 0x2f, 0x88, 0x01, 0x04, 0x09, 0x88, 0x40, - 0x43, 0x08, 0xf0, 0x10, 0xfd, 0x0f, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x68, 0x38, 0x88, 0x82, - 0x88, 0x41, 0x88, 0x00, 0xf0, 0x13, 0xfb, 0xee, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x68, 0x38, - 0x88, 0x81, 0x04, 0x09, 0x88, 0xc2, 0x43, 0x11, - 0x88, 0x02, 0x04, 0x12, 0x88, 0x40, 0x43, 0x10, - 0xf0, 0x13, 0xf8, 0x92, 0x68, 0x38, 0x88, 0x41, - 0x29, 0x0e, 0xd1, 0x08, 0x88, 0x81, 0x04, 0x09, - 0x88, 0xc0, 0x43, 0x08, 0xf0, 0x10, 0xfb, 0x8c, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x01, - 0xf0, 0x10, 0xfb, 0x86, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x88, 0x41, 0x48, 0x08, 0x29, 0x0e, - 0xd1, 0x02, 0x21, 0x00, 0x60, 0x01, 0xe0, 0x01, - 0x21, 0x01, 0x60, 0x01, 0x68, 0x00, 0xf0, 0x00, - 0xfb, 0xb7, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2c, 0x00, 0x00, 0xfc, 0x2e, 0x08, 0x03, 0xc4, - 0x2e, 0x08, 0x04, 0xf8, 0xb5, 0x90, 0x48, 0x31, - 0x88, 0x00, 0x06, 0x04, 0x0e, 0x24, 0x48, 0x30, - 0x22, 0x03, 0x21, 0x02, 0x4f, 0x2f, 0x2c, 0x08, - 0xd2, 0x4f, 0xa3, 0x02, 0x5d, 0x1b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x4b, 0x10, 0x16, - 0x1c, 0x28, 0x34, 0x3f, 0x68, 0x39, 0x88, 0x49, - 0x06, 0x09, 0x0e, 0x09, 0x88, 0x00, 0x06, 0x00, - 0x0e, 0x00, 0xf0, 0x03, 0xfa, 0x8d, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x03, 0xf7, 0xfe, - 0xf8, 0x9f, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x02, 0xf7, 0xfe, 0xf8, 0x99, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x88, 0x00, 0x4b, 0x1e, - 0x28, 0x00, 0xd0, 0x03, 0x60, 0x1a, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x60, 0x19, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x88, 0x00, 0x4b, 0x19, - 0x28, 0x00, 0xd0, 0x03, 0x60, 0x1a, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x60, 0x19, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xf0, 0x02, 0xfe, 0x4c, - 0x68, 0x39, 0x88, 0x4a, 0x1d, 0x08, 0x88, 0x09, - 0xf7, 0xfe, 0xf9, 0x10, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0x38, 0x88, 0x81, 0x04, 0x09, - 0x88, 0xc2, 0x18, 0x8a, 0x88, 0x01, 0x04, 0x09, - 0x88, 0x40, 0x50, 0x0a, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x1d, 0xf8, 0x30, 0x39, 0x8e, 0x81, - 0x31, 0x01, 0x86, 0x81, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x00, 0xfc, - 0x2c, 0x00, 0x01, 0x00, 0x2e, 0x08, 0x03, 0xc4, - 0x6e, 0x00, 0x13, 0x00, 0x6e, 0x00, 0x12, 0x00, - 0xb5, 0x90, 0xb0, 0x84, 0x48, 0x73, 0x88, 0x00, - 0x06, 0x00, 0x0e, 0x00, 0x4c, 0x72, 0x4f, 0x73, - 0x28, 0x0a, 0xd2, 0x60, 0xa3, 0x01, 0x5c, 0x1b, - 0x00, 0x5b, 0x44, 0x9f, 0x04, 0x0e, 0x16, 0x39, - 0x5d, 0x85, 0x8f, 0xb6, 0xbe, 0xcc, 0xf0, 0x10, - 0xfe, 0xc7, 0x90, 0x03, 0x14, 0x00, 0x68, 0x39, - 0x80, 0x08, 0x98, 0x03, 0x68, 0x39, 0x80, 0x48, - 0xe0, 0xc7, 0x20, 0x1e, 0xa9, 0x03, 0xf0, 0x10, - 0xfd, 0xc9, 0x98, 0x03, 0x68, 0x39, 0x80, 0x08, - 0xe0, 0xbf, 0x1c, 0x20, 0xf0, 0x13, 0xf9, 0xc0, - 0x20, 0x00, 0x00, 0x81, 0x58, 0x61, 0x00, 0x42, - 0x68, 0x3b, 0x52, 0x99, 0x30, 0x01, 0x28, 0x04, - 0xdd, 0xf7, 0x20, 0x07, 0x00, 0x81, 0x58, 0x61, - 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, 0x3a, 0x40, - 0x87, 0x91, 0x30, 0x01, 0x28, 0x0b, 0xdd, 0xf5, - 0x20, 0x0d, 0x00, 0x81, 0x58, 0x61, 0x00, 0x42, - 0x68, 0x3b, 0x18, 0xd2, 0x3a, 0x40, 0x87, 0x51, - 0x30, 0x01, 0x28, 0x12, 0xdd, 0xf5, 0xe0, 0x9c, - 0x20, 0x13, 0x00, 0x81, 0x58, 0x61, 0x00, 0x42, - 0x68, 0x3b, 0x18, 0xd2, 0x3a, 0x40, 0x83, 0x51, - 0x30, 0x01, 0x28, 0x15, 0xdd, 0xf5, 0x20, 0x00, - 0x00, 0x81, 0x19, 0x09, 0x6d, 0x89, 0x00, 0x42, - 0x68, 0x3b, 0x18, 0xd2, 0x80, 0xd1, 0x30, 0x01, - 0x28, 0x0a, 0xdd, 0xf5, 0x20, 0x00, 0x00, 0x81, - 0x19, 0x09, 0x31, 0x80, 0x68, 0x49, 0x00, 0x42, - 0x68, 0x3b, 0x18, 0xd2, 0x83, 0x91, 0x30, 0x01, - 0x28, 0x01, 0xdd, 0xf4, 0xe0, 0x79, 0xe0, 0x73, - 0x20, 0x02, 0x00, 0x81, 0x19, 0x09, 0x31, 0x80, - 0x68, 0x49, 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, - 0x3a, 0x40, 0x87, 0x91, 0x30, 0x01, 0x28, 0x05, - 0xdd, 0xf3, 0x20, 0x09, 0x00, 0x81, 0x19, 0x09, - 0x31, 0x80, 0x68, 0x49, 0x00, 0x42, 0x68, 0x3b, - 0x18, 0xd2, 0x3a, 0x40, 0x86, 0xd1, 0x30, 0x01, - 0x28, 0x0f, 0xdd, 0xf3, 0x20, 0x11, 0x00, 0x81, - 0x19, 0x09, 0x31, 0x80, 0x68, 0x49, 0x00, 0x42, - 0x68, 0x3b, 0x18, 0xd2, 0x3a, 0x40, 0x86, 0x91, - 0x30, 0x01, 0x28, 0x13, 0xdd, 0xf3, 0xe0, 0x50, - 0x22, 0x00, 0x21, 0x00, 0x20, 0x01, 0x02, 0xc0, - 0xf7, 0xff, 0xfe, 0x48, 0x6f, 0xb8, 0x49, 0x2a, - 0x80, 0x08, 0xe0, 0x46, 0x46, 0x68, 0xf0, 0x15, - 0xff, 0xa7, 0x98, 0x00, 0x0c, 0x00, 0x68, 0x39, - 0x80, 0x08, 0x98, 0x00, 0x68, 0x39, 0x80, 0x48, - 0x98, 0x01, 0x0c, 0x00, 0x68, 0x39, 0x80, 0x88, - 0x98, 0x01, 0x68, 0x39, 0x80, 0xc8, 0x98, 0x02, - 0x0c, 0x00, 0x68, 0x39, 0x81, 0x08, 0x98, 0x02, - 0x68, 0x39, 0x81, 0x48, 0x20, 0x01, 0x68, 0x39, - 0x81, 0x88, 0x48, 0x1c, 0x68, 0x39, 0x81, 0xc8, - 0x48, 0x1b, 0x68, 0x01, 0x14, 0x09, 0x68, 0x3a, - 0x82, 0x11, 0x68, 0x00, 0x68, 0x39, 0x82, 0x48, - 0xe0, 0x1f, 0x20, 0x19, 0x06, 0x80, 0x6b, 0x80, - 0x06, 0x00, 0x0e, 0x00, 0x68, 0x39, 0x80, 0x08, - 0xe0, 0x17, 0x68, 0x38, 0x88, 0x01, 0x04, 0x09, - 0x88, 0x40, 0x18, 0x08, 0x68, 0x00, 0x90, 0x03, - 0x14, 0x00, 0x68, 0x39, 0x80, 0x08, 0x98, 0x03, - 0x68, 0x39, 0x80, 0x48, 0xe0, 0x09, 0x48, 0x0d, - 0x68, 0x00, 0x68, 0x39, 0x80, 0x08, 0xe0, 0x04, - 0x1d, 0xf8, 0x30, 0x39, 0x8e, 0x81, 0x31, 0x01, - 0x86, 0x81, 0xb0, 0x04, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x00, 0xfc, - 0x2e, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x03, 0xc4, - 0x2c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x02, - 0x2e, 0x08, 0x05, 0x74, 0x2e, 0x08, 0x00, 0x58, - 0xb5, 0x80, 0x4f, 0x53, 0x6d, 0x78, 0x6d, 0x39, - 0x42, 0x81, 0xd0, 0x59, 0x88, 0x81, 0x06, 0x09, - 0x0e, 0x09, 0x29, 0x12, 0xd2, 0x55, 0xa3, 0x02, - 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x09, 0x10, 0x1a, 0x14, 0x20, 0x52, 0x24, 0x2f, - 0x3a, 0x45, 0x56, 0x60, 0x67, 0x6c, 0x70, 0x74, - 0x7a, 0x81, 0x89, 0xc3, 0x89, 0x82, 0x89, 0x41, - 0x89, 0x00, 0xf0, 0x0b, 0xfe, 0x91, 0xe0, 0x72, - 0x89, 0x00, 0xf0, 0x0b, 0xfe, 0x75, 0xe0, 0x6e, - 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, 0xf0, 0x0b, - 0xff, 0x4f, 0xe0, 0x68, 0x89, 0x82, 0x89, 0x41, - 0x89, 0x00, 0xf0, 0x0b, 0xfe, 0xf7, 0xe0, 0x62, - 0x89, 0x00, 0xf0, 0x0b, 0xff, 0x8d, 0xe0, 0x5e, - 0x8a, 0x42, 0x8a, 0x01, 0xb4, 0x06, 0x89, 0xc3, - 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, 0xf0, 0x0c, - 0xf8, 0x11, 0xb0, 0x02, 0xe0, 0x53, 0x8a, 0x42, - 0x8a, 0x01, 0xb4, 0x06, 0x89, 0xc3, 0x89, 0x82, - 0x89, 0x41, 0x89, 0x00, 0xf0, 0x0c, 0xf8, 0x58, - 0xb0, 0x02, 0xe0, 0x48, 0x89, 0x83, 0x89, 0x42, - 0x89, 0x00, 0x49, 0x2e, 0xf0, 0x0c, 0xf9, 0x99, - 0x21, 0x00, 0x48, 0x2c, 0xf7, 0xff, 0xfc, 0x7e, - 0xe0, 0x3d, 0x89, 0xc1, 0x04, 0x0b, 0x14, 0x1b, - 0x89, 0x81, 0x04, 0x0a, 0x14, 0x12, 0x89, 0x41, - 0x89, 0x00, 0xf0, 0x0c, 0xf9, 0xb9, 0xe0, 0x32, - 0xe0, 0x43, 0xe0, 0x30, 0x89, 0x00, 0xf0, 0x0b, - 0xff, 0x6b, 0xe0, 0x2c, 0x89, 0xc1, 0x04, 0x09, - 0x8a, 0x02, 0x18, 0x8b, 0x89, 0x82, 0x89, 0x41, - 0x89, 0x00, 0xf0, 0x0c, 0xf9, 0xf1, 0xe0, 0x22, - 0x89, 0xc3, 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, - 0xf0, 0x0c, 0xfa, 0x1c, 0xe0, 0x1b, 0x89, 0x41, - 0x89, 0x00, 0xf0, 0x0b, 0xff, 0x8d, 0xe0, 0x16, - 0x89, 0x00, 0xf0, 0x0b, 0xff, 0xa7, 0xe0, 0x12, - 0x89, 0x00, 0xf0, 0x0b, 0xff, 0xb7, 0xe0, 0x0e, - 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, 0xf0, 0x0c, - 0xfa, 0x9b, 0xe0, 0x08, 0x89, 0xc3, 0x89, 0x82, - 0x89, 0x41, 0x89, 0x00, 0xf0, 0x0c, 0xfb, 0x34, - 0xe0, 0x01, 0xf0, 0x0c, 0xfb, 0xcb, 0x6d, 0x78, - 0x88, 0xc0, 0x6c, 0x39, 0x1a, 0x08, 0x64, 0x38, - 0x6c, 0x79, 0x1a, 0x08, 0x28, 0x28, 0xdb, 0x05, - 0x48, 0x07, 0x88, 0x01, 0x23, 0x10, 0x43, 0xdb, - 0x40, 0x19, 0x80, 0x01, 0x6d, 0x78, 0x68, 0x00, - 0x65, 0x78, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x03, 0xc4, 0x2c, 0x00, 0x01, 0x20, - 0x2c, 0x00, 0x00, 0xf8, 0xb5, 0x80, 0x06, 0x00, - 0x0e, 0x00, 0x06, 0x09, 0x0e, 0x09, 0x89, 0xd7, - 0x23, 0xc7, 0x40, 0x7b, 0x81, 0xd3, 0x4b, 0x06, - 0x6f, 0xdf, 0x37, 0x01, 0x67, 0xdf, 0x2f, 0x28, - 0xda, 0x03, 0x4b, 0x04, 0x68, 0x1b, 0xf0, 0x1a, - 0xfb, 0xf5, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x03, 0xc4, 0x2e, 0x08, 0x01, 0x94, - 0xb5, 0x90, 0x4f, 0x5d, 0x6e, 0xf8, 0x6e, 0xb9, - 0x42, 0x81, 0xd0, 0x5c, 0x88, 0x81, 0x0a, 0x0a, - 0x2a, 0x0a, 0xd2, 0x59, 0xa3, 0x01, 0x5c, 0x9b, - 0x00, 0x5b, 0x44, 0x9f, 0x99, 0x04, 0x3e, 0x99, - 0x99, 0x44, 0x99, 0x99, 0x6c, 0x72, 0x06, 0x09, - 0x0e, 0x09, 0x24, 0x00, 0x29, 0x0c, 0xd2, 0x4b, - 0xa3, 0x01, 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, - 0x1e, 0x0a, 0x14, 0x2b, 0x8b, 0x8b, 0x8b, 0x8b, - 0x8b, 0x28, 0x8b, 0x05, 0x68, 0x38, 0x88, 0x00, - 0xf0, 0x03, 0xf8, 0xde, 0xe0, 0x80, 0x22, 0x00, - 0xb4, 0x04, 0x89, 0x01, 0x1c, 0x23, 0x4a, 0x49, - 0x1e, 0x50, 0xf7, 0xfc, 0xfd, 0xe9, 0xb0, 0x01, - 0xe0, 0x76, 0x22, 0x00, 0xb4, 0x04, 0x89, 0x02, - 0x1c, 0x23, 0x49, 0x44, 0x1e, 0x48, 0xf7, 0xfc, - 0xfd, 0xdf, 0xb0, 0x01, 0xe0, 0x6c, 0x8a, 0x02, - 0xb4, 0x04, 0x89, 0xc3, 0x89, 0x82, 0x89, 0x41, - 0x89, 0x00, 0xf7, 0xfc, 0xfd, 0xd5, 0xb0, 0x01, - 0xe0, 0x62, 0xf7, 0xfc, 0xfd, 0x9d, 0xe0, 0x5f, - 0x21, 0x18, 0x20, 0x14, 0xf7, 0xfe, 0xfd, 0xea, - 0xe0, 0x5a, 0x06, 0x09, 0xd1, 0x58, 0x89, 0x00, - 0xf7, 0xfc, 0xff, 0x76, 0xe0, 0x54, 0x06, 0x09, - 0x0e, 0x09, 0x29, 0x06, 0xd2, 0x0c, 0xa3, 0x02, - 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x03, 0x09, 0x0d, 0x11, 0x15, 0x19, 0x89, 0x00, - 0xf7, 0xfe, 0xf8, 0xaa, 0xe0, 0x44, 0xe0, 0x54, - 0xe0, 0x42, 0x89, 0x00, 0xf7, 0xfe, 0xf8, 0xca, - 0xe0, 0x3e, 0x89, 0x00, 0xf7, 0xfe, 0xf9, 0x58, - 0xe0, 0x3a, 0x89, 0x00, 0xf7, 0xfe, 0xfa, 0x3c, - 0xe0, 0x36, 0x89, 0x00, 0xf7, 0xfe, 0xfa, 0x6e, - 0xe0, 0x32, 0x89, 0x00, 0x06, 0x00, 0x0e, 0x00, - 0xf7, 0xfe, 0xfa, 0x4a, 0xe0, 0x2c, 0x06, 0x08, - 0xd1, 0x2a, 0x6f, 0xb8, 0x30, 0x01, 0x67, 0xb8, - 0xe0, 0x26, 0x06, 0x09, 0x0e, 0x09, 0x29, 0x08, - 0xd2, 0x22, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x0c, 0x08, 0x0f, - 0x12, 0x16, 0x19, 0x1c, 0x89, 0x00, 0xf0, 0x01, - 0xf9, 0x93, 0xe0, 0x15, 0x89, 0x00, 0xf0, 0x01, - 0xf9, 0xbb, 0xe0, 0x11, 0xf0, 0x01, 0xfa, 0x06, - 0xe0, 0x0e, 0xf0, 0x01, 0xfa, 0x5d, 0xe0, 0x0b, - 0x89, 0x00, 0xf0, 0x01, 0xfa, 0xe1, 0xe0, 0x07, - 0xf0, 0x01, 0xfb, 0x1a, 0xe0, 0x04, 0xf0, 0x01, - 0xfb, 0x33, 0xe0, 0x01, 0xf0, 0x01, 0xfa, 0x90, - 0x6e, 0xf8, 0x88, 0xc0, 0x6d, 0xb9, 0x1a, 0x08, - 0x65, 0xb8, 0x6d, 0xf9, 0x1a, 0x08, 0x28, 0x28, - 0xdb, 0x04, 0x48, 0x07, 0x88, 0x01, 0x08, 0x49, - 0x00, 0x49, 0x80, 0x01, 0x6e, 0xf8, 0x68, 0x00, - 0x66, 0xf8, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, - 0x2c, 0x00, 0x00, 0xf8, 0xb5, 0x80, 0x06, 0x00, - 0x0e, 0x00, 0x1c, 0x17, 0x28, 0x03, 0xd0, 0x0b, - 0x28, 0x07, 0xd0, 0x0e, 0x28, 0x08, 0xd1, 0x03, - 0x88, 0x38, 0xf0, 0x02, 0xfa, 0x5d, 0x80, 0x78, - 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x21, 0x18, 0x20, 0x14, 0xf7, 0xfe, 0xfd, 0x5e, - 0xe7, 0xf6, 0x88, 0x79, 0x88, 0x38, 0x1d, 0x3a, - 0xf0, 0x02, 0xf8, 0xce, 0x49, 0x01, 0x68, 0x09, - 0x80, 0x08, 0xe7, 0xed, 0x2e, 0x08, 0x03, 0xc4, - 0x48, 0x0d, 0x6f, 0xc0, 0x28, 0x00, 0xd1, 0x0c, - 0x49, 0x0c, 0x60, 0x08, 0x48, 0x0c, 0x8e, 0x83, - 0x49, 0x0c, 0x22, 0x01, 0x2b, 0x00, 0xd0, 0x05, - 0x8d, 0x03, 0x86, 0x8b, 0x8d, 0x43, 0x86, 0xcb, - 0x87, 0x82, 0x47, 0x70, 0x8e, 0xc3, 0x2b, 0x00, - 0xd0, 0xfb, 0x8d, 0x83, 0x86, 0x8b, 0x8d, 0xc3, - 0x86, 0xcb, 0x87, 0x82, 0x47, 0x70, 0x00, 0x00, - 0x2c, 0x00, 0x1f, 0x80, 0x2e, 0x08, 0x04, 0x44, - 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x00, 0xc0, - 0xb5, 0x00, 0xf0, 0x00, 0xfa, 0x91, 0xf7, 0xfd, - 0xf9, 0x53, 0xf7, 0xfc, 0xff, 0xd7, 0xf7, 0xfd, - 0xfa, 0x53, 0xf0, 0x03, 0xf8, 0xb1, 0xf7, 0xff, - 0xff, 0xcf, 0x48, 0x16, 0x8e, 0x80, 0x28, 0x00, - 0xd1, 0x21, 0x48, 0x15, 0x6f, 0xc0, 0x28, 0x00, - 0xd1, 0x13, 0x48, 0x14, 0x78, 0x00, 0x28, 0x00, - 0xd0, 0x0f, 0xb0, 0x82, 0x46, 0x69, 0xa8, 0x01, - 0xf0, 0x01, 0xfa, 0xd8, 0xa8, 0x01, 0x78, 0x00, - 0x28, 0x32, 0xda, 0x05, 0xa8, 0x00, 0x78, 0x00, - 0x28, 0x32, 0xda, 0x01, 0xf0, 0x07, 0xf9, 0xb0, - 0xb0, 0x02, 0x48, 0x0b, 0x69, 0xc0, 0x08, 0xc0, - 0xd3, 0x07, 0x48, 0x0a, 0x6c, 0x00, 0x28, 0x00, - 0xd0, 0x03, 0xf7, 0xff, 0xfd, 0xfd, 0xbc, 0x08, - 0x47, 0x18, 0xf7, 0xff, 0xfe, 0xc1, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, - 0x2c, 0x00, 0x1f, 0x80, 0x2e, 0x08, 0x1a, 0x94, - 0x72, 0x00, 0x01, 0x00, 0x2e, 0x08, 0x03, 0xc4, - 0xb4, 0x80, 0x02, 0x4f, 0x4b, 0x07, 0x40, 0x3b, - 0x43, 0x1a, 0x23, 0x19, 0x06, 0x9b, 0x62, 0x9a, - 0x0a, 0x49, 0x02, 0x49, 0x08, 0x49, 0x07, 0xc0, - 0x43, 0x08, 0x49, 0x03, 0x68, 0x09, 0x60, 0x08, - 0xbc, 0x80, 0x47, 0x70, 0x00, 0x03, 0xfe, 0x00, - 0x2e, 0x08, 0x9b, 0xa4, 0xb4, 0x90, 0x4b, 0x0c, - 0x68, 0x1f, 0x68, 0x3f, 0x0f, 0xff, 0x60, 0x07, - 0x68, 0x18, 0x68, 0x00, 0x00, 0x40, 0x0a, 0x47, - 0x02, 0x7f, 0x20, 0x19, 0x06, 0x80, 0x6a, 0x84, - 0x4b, 0x06, 0x40, 0x23, 0x0a, 0x5b, 0x43, 0x3b, - 0x60, 0x0b, 0x6a, 0x80, 0x05, 0xc0, 0x0d, 0xc0, - 0x60, 0x10, 0xbc, 0x90, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0xa4, 0x00, 0x03, 0xfe, 0x00, - 0xb5, 0x00, 0x49, 0x1d, 0x62, 0xc8, 0x28, 0x00, - 0xd0, 0x11, 0x28, 0x01, 0xd0, 0x1b, 0x28, 0x02, - 0xd0, 0x25, 0x28, 0x03, 0xd1, 0x09, 0x48, 0x19, - 0x68, 0x01, 0x08, 0x49, 0x00, 0x49, 0x60, 0x01, - 0x22, 0x01, 0x21, 0x01, 0x20, 0x00, 0xf0, 0x10, - 0xfd, 0x47, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x13, - 0x68, 0x01, 0x08, 0x49, 0x00, 0x49, 0x60, 0x01, - 0x48, 0x11, 0x68, 0x01, 0x04, 0x03, 0x43, 0x19, - 0x60, 0x01, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x0d, - 0x68, 0x01, 0x23, 0x01, 0x43, 0x19, 0x60, 0x01, - 0x48, 0x0b, 0x68, 0x01, 0x4b, 0x0b, 0x40, 0x19, - 0x60, 0x01, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x07, - 0x68, 0x01, 0x08, 0x49, 0x00, 0x49, 0x60, 0x01, - 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0xf0, 0x10, - 0xfd, 0x23, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0xc8, 0x6a, 0x00, 0x00, 0x18, - 0x6c, 0x00, 0x00, 0x20, 0xff, 0xdf, 0xff, 0xff, - 0xb5, 0x90, 0x48, 0x11, 0x6c, 0xc1, 0x6c, 0x80, - 0x1a, 0x0f, 0x48, 0x10, 0xd5, 0x01, 0x69, 0x01, - 0x18, 0x7f, 0x69, 0x00, 0x10, 0x80, 0x4c, 0x0e, - 0x42, 0xb8, 0xda, 0x0b, 0x68, 0xe0, 0x28, 0x00, - 0xd1, 0x08, 0x48, 0x0c, 0x68, 0x01, 0x23, 0x02, - 0x43, 0xdb, 0x40, 0x19, 0x60, 0x01, 0x20, 0x02, - 0xf0, 0x10, 0xf8, 0xc4, 0x2f, 0x00, 0xd1, 0x04, - 0x20, 0x01, 0x61, 0xe0, 0x6b, 0xa0, 0x30, 0x01, - 0x63, 0xa0, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x66, 0x00, 0x00, 0x80, 0x2e, 0x08, 0x04, 0x48, - 0x2e, 0x08, 0x04, 0xc8, 0x6c, 0x00, 0x00, 0x20, - 0xb5, 0x00, 0x20, 0x03, 0xf0, 0x10, 0xf8, 0xae, - 0x20, 0x1e, 0xf0, 0x0d, 0xf8, 0xab, 0x23, 0x03, - 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, 0x21, 0x02, - 0x20, 0x1e, 0xf0, 0x0c, 0xfe, 0x59, 0x22, 0x00, - 0xb4, 0x04, 0x23, 0x02, 0x22, 0x02, 0x49, 0x07, - 0x20, 0x1e, 0xf0, 0x0c, 0xfc, 0x8d, 0x23, 0x01, - 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x01, 0x20, 0x1e, - 0xb0, 0x01, 0xf0, 0x0c, 0xfe, 0x49, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, - 0xb5, 0x00, 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x12, - 0xfc, 0x23, 0x20, 0x1f, 0xf0, 0x0c, 0xff, 0xbc, - 0x23, 0x03, 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, - 0x21, 0x02, 0x20, 0x1f, 0xf0, 0x0c, 0xfe, 0x34, - 0x20, 0x00, 0xf0, 0x0f, 0xff, 0x19, 0x22, 0x00, - 0xb4, 0x04, 0x23, 0x01, 0x22, 0x02, 0x49, 0x07, - 0x20, 0x1f, 0xf0, 0x0c, 0xfc, 0x65, 0x23, 0x01, - 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x01, 0x20, 0x1f, - 0xb0, 0x01, 0xf0, 0x0c, 0xfe, 0x21, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, - 0xb5, 0x80, 0x20, 0x0f, 0x02, 0x40, 0x4f, 0x0a, - 0x61, 0x38, 0x49, 0x0a, 0x6c, 0x89, 0x61, 0x79, - 0xf0, 0x01, 0xfe, 0x42, 0x1d, 0xf9, 0x31, 0x79, - 0x61, 0x08, 0x28, 0x00, 0xd0, 0x05, 0x20, 0x00, - 0x61, 0xf8, 0x62, 0x38, 0x64, 0xf8, 0x20, 0xff, - 0x72, 0x08, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x04, 0x48, 0x66, 0x00, 0x00, 0x80, - 0xb5, 0x80, 0x4f, 0x05, 0x69, 0x38, 0x28, 0x00, - 0xd0, 0x03, 0xf0, 0x01, 0xfe, 0x4b, 0x20, 0x00, - 0x61, 0x38, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x04, 0xc8, 0xb5, 0x00, 0x4a, 0x0d, - 0xb4, 0x04, 0x1f, 0x10, 0x1e, 0x51, 0x1c, 0x13, - 0xf7, 0xfc, 0xfb, 0xaa, 0x21, 0x33, 0x06, 0x49, - 0x6d, 0x88, 0x6d, 0x4a, 0x1a, 0x82, 0xb0, 0x01, - 0x48, 0x07, 0x62, 0x42, 0x6d, 0x49, 0x62, 0xc1, - 0x21, 0x00, 0x65, 0x81, 0x21, 0x01, 0x02, 0xc9, - 0x64, 0x41, 0x21, 0x01, 0x30, 0x60, 0x76, 0x01, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x04, 0x48, 0xb5, 0x00, 0x4a, 0x10, - 0xb4, 0x04, 0x1c, 0x13, 0x3a, 0x01, 0x49, 0x0f, - 0x1e, 0xc8, 0xf7, 0xfc, 0xfb, 0x89, 0x21, 0x33, - 0x06, 0x49, 0x6d, 0x88, 0x6d, 0x4a, 0x1a, 0x82, - 0xb0, 0x01, 0x48, 0x0b, 0x62, 0x42, 0x6d, 0x49, - 0x62, 0xc1, 0x21, 0x00, 0x65, 0x81, 0x21, 0x01, - 0x02, 0xc9, 0x64, 0x41, 0x21, 0x01, 0x30, 0x60, - 0x76, 0x01, 0x48, 0x06, 0x23, 0x02, 0x68, 0x01, - 0x43, 0x19, 0x60, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, - 0x2e, 0x08, 0x04, 0x48, 0x2e, 0x08, 0x00, 0x04, - 0x48, 0x03, 0x23, 0x02, 0x43, 0xdb, 0x68, 0x01, - 0x40, 0x19, 0x60, 0x01, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x00, 0x04, 0xb5, 0xf0, 0x20, 0x0f, - 0x02, 0x40, 0x4c, 0x11, 0x61, 0x20, 0x20, 0x00, - 0xf7, 0xfc, 0xfc, 0xf6, 0x48, 0x0f, 0xf7, 0xfc, - 0xfc, 0xf3, 0x26, 0x00, 0x1d, 0xe0, 0x30, 0x59, - 0x77, 0x06, 0x25, 0xff, 0x1d, 0xe7, 0x37, 0x79, - 0x70, 0x3d, 0x20, 0x01, 0x63, 0x78, 0x60, 0xe6, - 0x69, 0x78, 0x28, 0x00, 0xd1, 0x04, 0x20, 0x41, - 0x01, 0x40, 0xf0, 0x01, 0xfd, 0xb1, 0x61, 0x78, - 0x69, 0x78, 0x28, 0x00, 0xd0, 0x01, 0x76, 0x3e, - 0x70, 0x3d, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x04, 0x48, 0x00, 0x00, 0x1f, 0xff, - 0xb5, 0x00, 0x20, 0x00, 0xf7, 0xfd, 0xff, 0xdc, - 0x22, 0x00, 0xb4, 0x04, 0x23, 0x00, 0x4a, 0x06, - 0x21, 0x00, 0x20, 0x00, 0xf7, 0xfc, 0xfb, 0x28, - 0x21, 0x00, 0x20, 0x0d, 0xb0, 0x01, 0xf0, 0x12, - 0xfb, 0x47, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xb5, 0x80, 0x22, 0x00, - 0xb4, 0x04, 0x27, 0x00, 0x1c, 0x3b, 0x4a, 0x17, - 0x21, 0x00, 0x20, 0x00, 0xf7, 0xfc, 0xfb, 0x14, - 0x22, 0x00, 0xb0, 0x01, 0xb4, 0x04, 0x1c, 0x3b, - 0x4a, 0x12, 0x49, 0x13, 0x20, 0x00, 0xf7, 0xfc, - 0xfb, 0x0b, 0x21, 0x33, 0x06, 0x49, 0x6d, 0x88, - 0x6d, 0x4a, 0x1a, 0x82, 0xb0, 0x01, 0x48, 0x0f, - 0x62, 0x42, 0x6d, 0x49, 0x63, 0x01, 0x21, 0x01, - 0x02, 0xc9, 0x64, 0x81, 0x21, 0x01, 0x65, 0x87, - 0x30, 0x60, 0x76, 0x01, 0x77, 0x07, 0x22, 0x00, - 0x21, 0x00, 0x20, 0x00, 0xf7, 0xff, 0xfe, 0x28, - 0x20, 0x00, 0xf7, 0xff, 0xfe, 0x59, 0x21, 0x00, - 0x20, 0x0d, 0xf0, 0x12, 0xfb, 0x11, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0x1f, 0xfe, 0x2e, 0x08, 0x04, 0x48, - 0xb5, 0xf0, 0x06, 0x05, 0x0e, 0x2d, 0x20, 0x0f, - 0x02, 0x40, 0x4f, 0x2f, 0x26, 0x33, 0x06, 0x76, - 0x61, 0x38, 0x6d, 0xb0, 0x6d, 0x71, 0x1a, 0x40, - 0x62, 0x78, 0x62, 0xb8, 0x20, 0x00, 0x1d, 0xfc, - 0x34, 0x79, 0x60, 0xe0, 0x2d, 0x00, 0xd0, 0x02, - 0x20, 0xff, 0xf7, 0xfd, 0xff, 0x79, 0x22, 0x00, - 0xb4, 0x04, 0x23, 0x00, 0x21, 0x00, 0x20, 0x00, - 0xf7, 0xfc, 0xfa, 0xc6, 0x22, 0x01, 0x21, 0x01, - 0x20, 0x00, 0xb0, 0x01, 0xf0, 0x10, 0xfb, 0x84, - 0x21, 0x00, 0x20, 0x00, 0xf0, 0x10, 0xfc, 0x44, - 0x22, 0x00, 0xb4, 0x04, 0x23, 0x00, 0x4a, 0x1d, - 0x20, 0x00, 0x1e, 0x51, 0xf7, 0xfc, 0xfa, 0xb4, - 0x20, 0x01, 0x63, 0x60, 0x69, 0x60, 0xb0, 0x01, - 0x28, 0x00, 0xd1, 0x04, 0x20, 0x41, 0x01, 0x40, - 0xf0, 0x01, 0xfd, 0x1a, 0x61, 0x60, 0x69, 0x60, - 0x28, 0x00, 0xd0, 0x03, 0x20, 0x00, 0x76, 0x20, - 0x20, 0xff, 0x70, 0x20, 0x6d, 0x70, 0x63, 0x38, - 0x20, 0x01, 0x02, 0xc0, 0x64, 0xb8, 0x20, 0x00, - 0x26, 0x01, 0x65, 0xb8, 0x1d, 0xf9, 0x31, 0x59, - 0x76, 0x0e, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, - 0xf7, 0xff, 0xfd, 0xc6, 0x21, 0x00, 0x20, 0x0d, - 0xf0, 0x12, 0xfa, 0xb2, 0x20, 0x00, 0x60, 0xf8, - 0x2d, 0x00, 0xd1, 0x02, 0xf7, 0xff, 0xfd, 0xf0, - 0x61, 0xe6, 0x20, 0x00, 0x60, 0xb8, 0x66, 0x38, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0x48, 0x00, 0x00, 0x1f, 0xff, - 0xb5, 0xb0, 0x4f, 0x44, 0x25, 0x00, 0x6d, 0x38, - 0x4c, 0x43, 0x28, 0x05, 0xd2, 0x14, 0xa3, 0x02, - 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x10, 0x03, 0x2e, 0x62, 0x70, 0x00, 0x4d, 0x3f, - 0x68, 0x28, 0x08, 0x41, 0xd2, 0x08, 0x08, 0xc0, - 0xd3, 0x09, 0xf7, 0xff, 0xfe, 0xb3, 0x23, 0x04, - 0x43, 0xdb, 0x68, 0x28, 0x40, 0x18, 0x60, 0x28, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x6d, 0x78, - 0x28, 0x00, 0xd0, 0xf9, 0x28, 0x01, 0xd0, 0x01, - 0x28, 0x05, 0xd1, 0x06, 0xf0, 0x00, 0xf8, 0x6a, - 0x8e, 0xa0, 0x28, 0x00, 0xd1, 0xf0, 0xf0, 0x00, - 0xf9, 0x27, 0x6d, 0x78, 0x28, 0x04, 0xd0, 0x01, - 0x28, 0x05, 0xd1, 0xe9, 0x8e, 0xa0, 0x28, 0x00, - 0xd1, 0xe6, 0xf0, 0x00, 0xfa, 0x49, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x8e, 0xe0, 0x28, 0x00, - 0xd1, 0xde, 0x8d, 0xa0, 0x06, 0x00, 0x0e, 0x00, - 0x28, 0x06, 0xd1, 0x12, 0x48, 0x26, 0x78, 0x00, - 0x28, 0x00, 0xd0, 0x06, 0x6d, 0x78, 0x28, 0x01, - 0xd0, 0x01, 0x28, 0x05, 0xd1, 0x01, 0xf0, 0x00, - 0xfc, 0xc3, 0x6d, 0x78, 0x28, 0x04, 0xd0, 0x01, - 0x28, 0x05, 0xd1, 0x01, 0xf0, 0x00, 0xfc, 0x2c, - 0x85, 0xa5, 0x8d, 0xa0, 0x28, 0x00, 0xd1, 0xc3, - 0x6d, 0x78, 0x28, 0x01, 0xd0, 0x08, 0x28, 0x04, - 0xd0, 0x0b, 0x28, 0x05, 0xd1, 0xbc, 0xf0, 0x00, - 0xfd, 0xdd, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0xf0, 0x00, 0xfd, 0xb2, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0xf0, 0x00, 0xfd, 0x81, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x8e, 0xe0, 0x28, 0x00, - 0xd1, 0xaa, 0x20, 0x06, 0x85, 0xa0, 0x85, 0xe5, - 0x20, 0x09, 0x02, 0x40, 0x86, 0xe0, 0x20, 0x04, - 0x65, 0x38, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x8e, 0xe0, 0x28, 0x00, 0xd1, 0x9c, 0x8d, 0xa0, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x06, 0xd1, 0x97, - 0x85, 0xa5, 0x65, 0x3d, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x48, - 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x00, 0x04, - 0x2e, 0x08, 0x04, 0xc8, 0xb5, 0xb0, 0x48, 0x46, - 0x6c, 0xc1, 0x4c, 0x46, 0x64, 0x21, 0x69, 0x60, - 0x1a, 0x09, 0x1d, 0xe7, 0x37, 0x79, 0x63, 0xf9, - 0x29, 0x00, 0xda, 0x02, 0x69, 0x22, 0x18, 0x89, - 0x63, 0xf9, 0x23, 0xff, 0x6b, 0xf9, 0x33, 0x01, - 0x42, 0x99, 0xdb, 0x73, 0x22, 0x01, 0x03, 0x12, - 0x42, 0x91, 0xdd, 0x00, 0x63, 0xfa, 0x6b, 0xf9, - 0x08, 0x89, 0x00, 0x89, 0x63, 0xf9, 0x7a, 0x3a, - 0x2a, 0x00, 0xd0, 0x05, 0x23, 0xff, 0x03, 0x5b, - 0x1a, 0xc2, 0x61, 0xe2, 0x22, 0x00, 0x72, 0x3a, - 0x18, 0x42, 0x49, 0x35, 0x25, 0x12, 0x42, 0x8a, - 0xdd, 0x2c, 0x1a, 0x08, 0x64, 0x38, 0xf0, 0x1f, - 0xfb, 0x53, 0x4b, 0x32, 0x40, 0x18, 0xf0, 0x1f, - 0xfb, 0x53, 0x22, 0x00, 0x49, 0x30, 0xb4, 0x06, - 0x69, 0x60, 0x69, 0x39, 0x18, 0x41, 0x23, 0xff, - 0x03, 0x5b, 0x1a, 0xc9, 0x23, 0x0d, 0x06, 0x9b, - 0x1a, 0xc0, 0x6c, 0x3a, 0x1c, 0x2b, 0xf0, 0x14, - 0xfc, 0x21, 0x22, 0x00, 0xb0, 0x02, 0x49, 0x28, - 0xb4, 0x06, 0x6b, 0xf8, 0x6c, 0x39, 0x1a, 0x42, - 0x69, 0x39, 0x1c, 0x2b, 0x48, 0x25, 0xf0, 0x14, - 0xfc, 0x15, 0xb0, 0x02, 0xf0, 0x1f, 0xfb, 0x30, - 0x23, 0x01, 0x04, 0x9b, 0x43, 0x18, 0xf0, 0x1f, - 0xfb, 0x2f, 0xe0, 0x1d, 0xf0, 0x1f, 0xfb, 0x28, - 0x4b, 0x1c, 0x40, 0x18, 0xf0, 0x1f, 0xfb, 0x28, - 0x22, 0x00, 0x49, 0x1b, 0xb4, 0x06, 0x69, 0x60, - 0x69, 0x39, 0x18, 0x41, 0x23, 0xff, 0x03, 0x5b, - 0x1a, 0xc9, 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, - 0x6b, 0xfa, 0x1c, 0x2b, 0xf0, 0x14, 0xfb, 0xf6, - 0xb0, 0x02, 0xf0, 0x1f, 0xfb, 0x11, 0x23, 0x01, - 0x04, 0x9b, 0x43, 0x18, 0xf0, 0x1f, 0xfb, 0x10, - 0x69, 0x60, 0x6b, 0xf9, 0x18, 0x40, 0x23, 0x0d, - 0x06, 0x9b, 0x1a, 0xc1, 0x61, 0x60, 0x4b, 0x0e, - 0x42, 0x99, 0xd3, 0x02, 0x69, 0x21, 0x1a, 0x40, - 0x61, 0x60, 0x23, 0xff, 0x03, 0x5b, 0x69, 0x60, - 0x1a, 0xc0, 0xe0, 0x00, 0xe0, 0x00, 0x62, 0x20, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x80, 0x2e, 0x08, 0x04, 0x48, - 0x00, 0x1f, 0xfe, 0x00, 0xff, 0xfb, 0xff, 0xff, - 0x9e, 0x00, 0x08, 0x00, 0xcc, 0x1f, 0xe0, 0x00, - 0xcc, 0x1f, 0xfe, 0x00, 0x21, 0x00, 0x23, 0xff, - 0x68, 0x02, 0x33, 0xc1, 0x42, 0x9a, 0xd0, 0x01, - 0x1c, 0x08, 0x47, 0x70, 0x79, 0xc2, 0x0a, 0x12, - 0xd2, 0x01, 0x1c, 0x08, 0x47, 0x70, 0x7a, 0x41, - 0x23, 0x0e, 0x40, 0x19, 0x07, 0x49, 0x7a, 0x82, - 0x05, 0x92, 0x43, 0x11, 0x7a, 0xc2, 0x23, 0xfe, - 0x40, 0x1a, 0x03, 0x92, 0x43, 0x11, 0x7b, 0x02, - 0x01, 0xd2, 0x43, 0x11, 0x7b, 0x40, 0x40, 0x18, - 0x08, 0x40, 0x43, 0x08, 0x49, 0x01, 0x67, 0x08, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x48, - 0xb5, 0xf0, 0xb0, 0x86, 0x4c, 0x8c, 0x6c, 0xe0, - 0x1d, 0xe7, 0x37, 0x79, 0x1d, 0xfd, 0x35, 0x39, - 0x28, 0x00, 0xd0, 0x04, 0x28, 0x01, 0xd0, 0x3a, - 0x28, 0x02, 0xd1, 0x73, 0xe0, 0x74, 0x69, 0xe0, - 0x6a, 0x21, 0x1a, 0x09, 0x63, 0xf9, 0x1c, 0x0a, - 0xd5, 0x02, 0x69, 0x21, 0x18, 0x51, 0x63, 0xf9, - 0x6b, 0xf9, 0x29, 0x04, 0xdb, 0x67, 0x69, 0x3e, - 0x5c, 0x31, 0x06, 0x0a, 0x65, 0x7a, 0x92, 0x05, - 0x1c, 0x41, 0x69, 0x20, 0x90, 0x04, 0xf0, 0x19, - 0xfe, 0xe3, 0x61, 0xe1, 0x5c, 0x70, 0x04, 0x00, - 0x9a, 0x05, 0x18, 0x82, 0x65, 0x7a, 0x92, 0x03, - 0x98, 0x04, 0x31, 0x01, 0xf0, 0x19, 0xfe, 0xd8, - 0x61, 0xe1, 0x5c, 0x70, 0x02, 0x00, 0x9a, 0x03, - 0x18, 0x80, 0x65, 0x78, 0x90, 0x02, 0x98, 0x04, - 0x31, 0x01, 0xf0, 0x19, 0xfe, 0xcd, 0x61, 0xe1, - 0x5c, 0x70, 0x9a, 0x02, 0x18, 0x80, 0x65, 0x78, - 0x98, 0x04, 0x31, 0x01, 0xf0, 0x19, 0xfe, 0xc4, - 0x20, 0x01, 0x64, 0xe0, 0x61, 0xe1, 0x6a, 0x20, - 0x69, 0xe1, 0x1a, 0x40, 0x63, 0xf8, 0x1c, 0x01, - 0xd4, 0x05, 0x48, 0x67, 0x69, 0x06, 0x30, 0x80, - 0x69, 0x02, 0x92, 0x01, 0xe0, 0x03, 0x69, 0x20, - 0x18, 0x08, 0x63, 0xf8, 0xe7, 0xf5, 0x6b, 0xf8, - 0x90, 0x00, 0x28, 0x02, 0xdb, 0x22, 0x6d, 0x78, - 0x09, 0x01, 0x01, 0x09, 0x23, 0xff, 0x33, 0xc1, - 0x42, 0x99, 0xd1, 0x31, 0x9a, 0x01, 0x69, 0xe0, - 0x5c, 0x11, 0x02, 0x09, 0x83, 0x29, 0x1c, 0x41, - 0x1c, 0x30, 0xf0, 0x19, 0xfe, 0x9d, 0x61, 0xe1, - 0x69, 0x38, 0x5c, 0x40, 0x8b, 0x2a, 0x18, 0x80, - 0x83, 0x28, 0x8b, 0x28, 0x30, 0x06, 0x83, 0x28, - 0x19, 0x88, 0x1f, 0x41, 0x1c, 0x30, 0xf0, 0x19, - 0xfe, 0x8f, 0x61, 0xe1, 0x21, 0xff, 0x71, 0x39, - 0x20, 0x02, 0x64, 0xe0, 0x6c, 0xe0, 0x28, 0x02, - 0xd1, 0x00, 0xe0, 0x01, 0xe0, 0x94, 0xe0, 0x93, - 0x6a, 0x20, 0x69, 0xe1, 0x1a, 0x40, 0x63, 0xf8, - 0x1c, 0x01, 0xd5, 0x02, 0x69, 0x20, 0x18, 0x08, - 0x63, 0xf8, 0x79, 0x38, 0x28, 0x00, 0xd0, 0x13, - 0x20, 0x01, 0x02, 0xc0, 0x83, 0xa8, 0xe0, 0x11, - 0x02, 0x01, 0x65, 0x79, 0x9a, 0x01, 0x69, 0xe0, - 0x5c, 0x12, 0x18, 0x51, 0x65, 0x79, 0x1c, 0x41, - 0x1c, 0x30, 0xf0, 0x19, 0xfe, 0x69, 0x61, 0xe1, - 0x98, 0x00, 0x38, 0x01, 0x63, 0xf8, 0xe7, 0xb2, - 0x48, 0x3c, 0x83, 0xa8, 0x8b, 0x28, 0x6b, 0xf9, - 0x42, 0x88, 0xda, 0x01, 0x63, 0xf8, 0xe0, 0x02, - 0x8b, 0xa8, 0x42, 0x81, 0xdb, 0x68, 0x8b, 0xa8, - 0x6b, 0xf9, 0x42, 0x81, 0xdd, 0x00, 0x63, 0xf8, - 0x48, 0x35, 0x21, 0x00, 0x66, 0x78, 0x80, 0x01, - 0x30, 0x02, 0x21, 0xff, 0x31, 0xc1, 0x66, 0x78, - 0x80, 0x01, 0x48, 0x32, 0x66, 0x78, 0x79, 0x39, - 0x29, 0x00, 0xd0, 0x21, 0x21, 0x00, 0x71, 0x39, - 0x69, 0x3b, 0x69, 0x20, 0x18, 0x1a, 0xb4, 0x04, - 0x69, 0xe0, 0x18, 0x18, 0x6b, 0xfa, 0x49, 0x2a, - 0xf0, 0x00, 0xfe, 0xec, 0x6b, 0xf8, 0x38, 0x06, - 0x6e, 0x79, 0x80, 0x08, 0x31, 0x02, 0x66, 0x79, - 0xb0, 0x01, 0x48, 0x25, 0xf7, 0xff, 0xff, 0x02, - 0x8b, 0x28, 0x6b, 0xf9, 0x1a, 0x40, 0x83, 0x28, - 0x69, 0xe0, 0x6b, 0xf9, 0x18, 0x41, 0x69, 0x20, - 0xf0, 0x19, 0xfe, 0x26, 0x61, 0xe1, 0xe0, 0x26, - 0x6b, 0xf9, 0x31, 0x03, 0x80, 0x01, 0x48, 0x1e, - 0x21, 0x01, 0x03, 0xc9, 0x66, 0x78, 0x80, 0x01, - 0x30, 0x02, 0x21, 0xff, 0x66, 0x78, 0x80, 0x01, - 0x48, 0x1a, 0x66, 0x78, 0x69, 0x3b, 0x69, 0x20, - 0x18, 0x1a, 0xb4, 0x04, 0x69, 0xe0, 0x18, 0x18, - 0x6b, 0xfa, 0x49, 0x17, 0xf0, 0x00, 0xfe, 0xbe, - 0x8b, 0x28, 0x6b, 0xf9, 0x1a, 0x40, 0x83, 0x28, - 0x69, 0xe0, 0x6b, 0xfe, 0x19, 0x81, 0x69, 0x20, - 0xb0, 0x01, 0xf0, 0x19, 0xfe, 0x01, 0x1d, 0xf0, - 0x30, 0x02, 0x61, 0xe1, 0x63, 0xf8, 0x8b, 0x28, - 0x28, 0x00, 0xd1, 0x01, 0x21, 0x00, 0x64, 0xe0, - 0x21, 0x10, 0x48, 0x0c, 0x85, 0x01, 0x6b, 0xf9, - 0x85, 0x41, 0x21, 0x01, 0x02, 0x49, 0x86, 0x81, - 0xb0, 0x06, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x04, 0x48, 0x00, 0x00, 0x07, 0xf7, - 0x2c, 0x00, 0x02, 0x00, 0x2c, 0x00, 0x02, 0x04, - 0x2c, 0x00, 0x02, 0x06, 0x2c, 0x00, 0x02, 0x0a, - 0x2c, 0x00, 0x02, 0x09, 0x2c, 0x00, 0x1f, 0xc0, - 0xb5, 0xf0, 0x20, 0x33, 0x06, 0x40, 0x6e, 0x40, - 0xb0, 0x81, 0x4f, 0x77, 0x63, 0xb8, 0x6a, 0xf9, - 0x1a, 0x40, 0x1d, 0xfc, 0x34, 0x79, 0x63, 0xe0, - 0x28, 0x00, 0xda, 0x02, 0x6a, 0x79, 0x18, 0x40, - 0x63, 0xe0, 0x6b, 0xe0, 0x4b, 0x71, 0x42, 0x98, - 0xdc, 0x03, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x6d, 0xb9, 0x48, 0x6e, 0x1d, 0xc5, - 0x35, 0x59, 0x29, 0x00, 0xd1, 0x16, 0x7e, 0x01, - 0x29, 0x00, 0xd1, 0x13, 0x21, 0x01, 0x75, 0x01, - 0x21, 0x05, 0x84, 0x29, 0x23, 0x0d, 0x06, 0x9b, - 0x6c, 0x79, 0x1a, 0xca, 0x68, 0x52, 0x31, 0x08, - 0x23, 0x05, 0x02, 0x5b, 0x64, 0x79, 0x66, 0xba, - 0x42, 0x99, 0xdb, 0x06, 0x21, 0x01, 0x02, 0xc9, - 0x64, 0x79, 0xe0, 0x02, 0x21, 0x00, 0x75, 0x01, - 0x84, 0x29, 0x8c, 0x29, 0x1c, 0x4a, 0x6a, 0xfb, - 0x1a, 0x9a, 0x07, 0x92, 0x0f, 0x92, 0x18, 0x51, - 0x84, 0x29, 0x7e, 0x01, 0x29, 0x00, 0xd0, 0x03, - 0x21, 0x00, 0x66, 0x39, 0x66, 0x79, 0x76, 0x01, - 0x6c, 0x79, 0x4a, 0x58, 0x69, 0x52, 0x42, 0x91, - 0xd0, 0x26, 0x6e, 0x7a, 0x2a, 0x00, 0xd1, 0x10, - 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc9, 0x68, 0x09, - 0x66, 0x79, 0x1c, 0x0a, 0x6e, 0x3b, 0x18, 0x59, - 0x66, 0x39, 0x4b, 0x51, 0x42, 0x99, 0xdb, 0x04, - 0x32, 0x01, 0x31, 0x01, 0x40, 0x19, 0x66, 0x39, - 0x66, 0x7a, 0x6e, 0x79, 0x6d, 0xba, 0x1a, 0x89, - 0x65, 0x21, 0x91, 0x00, 0x8c, 0x2b, 0x4e, 0x4b, - 0x1a, 0xf3, 0x42, 0x8b, 0xd3, 0x04, 0x63, 0xe1, - 0x21, 0x00, 0x65, 0xb9, 0x66, 0x79, 0xe0, 0x0a, - 0x18, 0xd1, 0x63, 0xe3, 0x65, 0xb9, 0xe0, 0x06, - 0x8c, 0x29, 0x4a, 0x44, 0x1a, 0x51, 0x63, 0xe1, - 0x6d, 0xba, 0x18, 0x51, 0x65, 0xb9, 0x49, 0x42, - 0x66, 0x61, 0x8c, 0x2a, 0x6b, 0xe1, 0x18, 0x89, - 0x31, 0x03, 0x83, 0xa9, 0x22, 0x00, 0x6e, 0x61, - 0x80, 0x0a, 0x31, 0x02, 0x22, 0xff, 0x32, 0xe1, - 0x66, 0x61, 0x80, 0x0a, 0x31, 0x02, 0x66, 0x61, - 0x8b, 0xaa, 0x80, 0x0a, 0x31, 0x02, 0x66, 0x61, - 0x7d, 0x00, 0x28, 0x00, 0xd0, 0x1d, 0x4a, 0x37, - 0x80, 0x0a, 0x1c, 0x88, 0x66, 0x60, 0x8c, 0x29, - 0x02, 0x09, 0x6e, 0xba, 0x0f, 0x52, 0x23, 0x06, - 0x40, 0x1a, 0x43, 0x11, 0x23, 0x21, 0x43, 0x19, - 0x80, 0x01, 0x30, 0x02, 0x66, 0x60, 0x6e, 0xb9, - 0x0b, 0x89, 0x23, 0x01, 0x43, 0x19, 0x80, 0x01, - 0x30, 0x02, 0x66, 0x60, 0x6e, 0xb9, 0x00, 0x49, - 0x43, 0x19, 0x80, 0x01, 0x30, 0x02, 0x66, 0x60, - 0xe0, 0x0b, 0x20, 0x01, 0x03, 0xc0, 0x80, 0x08, - 0x31, 0x02, 0x66, 0x61, 0x8c, 0x28, 0x02, 0x00, - 0x23, 0xff, 0x43, 0x18, 0x80, 0x08, 0x31, 0x02, - 0x66, 0x61, 0x48, 0x23, 0x6e, 0x61, 0x80, 0x08, - 0x31, 0x02, 0x66, 0x61, 0x80, 0x08, 0x31, 0x02, - 0x22, 0x33, 0x06, 0x52, 0x66, 0x61, 0x00, 0x53, - 0x6d, 0x90, 0x18, 0xc2, 0xb4, 0x04, 0x08, 0x5a, - 0x6d, 0x50, 0x18, 0xc6, 0x8c, 0x28, 0x4b, 0x1b, - 0x18, 0xc1, 0x00, 0x53, 0x6a, 0xf8, 0x18, 0xc0, - 0x6b, 0xe2, 0x1c, 0x33, 0xf0, 0x00, 0xfd, 0xb6, - 0x6a, 0xf8, 0x6b, 0xe1, 0x18, 0x40, 0x22, 0x33, - 0x06, 0x52, 0x62, 0xf8, 0x6d, 0x92, 0xb0, 0x01, - 0x42, 0x90, 0xdb, 0x02, 0x6a, 0x79, 0x1a, 0x40, - 0x62, 0xf8, 0x21, 0xff, 0x31, 0x11, 0x48, 0x10, - 0x85, 0x01, 0x8b, 0xa9, 0x31, 0x06, 0x85, 0x41, - 0x21, 0x01, 0x02, 0x49, 0x86, 0x81, 0xb0, 0x01, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0x48, 0x00, 0x00, 0x0f, 0xee, - 0x2e, 0x08, 0x04, 0xa8, 0xcc, 0x00, 0x0f, 0x00, - 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x07, 0xf7, - 0x2c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x80, - 0x00, 0x00, 0xff, 0xff, 0x2c, 0x00, 0x02, 0x09, - 0x2c, 0x00, 0x1f, 0xc0, 0xb5, 0xb0, 0x1c, 0x07, - 0xb0, 0x83, 0x4d, 0x20, 0x6b, 0x28, 0xf7, 0xff, - 0xfa, 0x53, 0x48, 0x1f, 0x6c, 0xc1, 0x6c, 0x80, - 0x1a, 0x08, 0xd5, 0x03, 0x1f, 0xe9, 0x39, 0x79, - 0x69, 0x09, 0x18, 0x40, 0x6e, 0xa9, 0x29, 0x00, - 0xd0, 0x22, 0x29, 0x10, 0xd0, 0x20, 0x29, 0x20, - 0xd0, 0x24, 0x29, 0x30, 0xd1, 0x04, 0x24, 0x2d, - 0x43, 0x44, 0xd5, 0x00, 0x34, 0x3f, 0x11, 0xa4, - 0x46, 0x6a, 0xa8, 0x01, 0xa9, 0x02, 0xf7, 0xff, - 0xfa, 0x19, 0x1b, 0x38, 0x99, 0x02, 0x1a, 0x08, - 0x22, 0x7d, 0x01, 0x52, 0x42, 0x90, 0xdc, 0x01, - 0x42, 0x90, 0xda, 0x05, 0x1a, 0x09, 0x91, 0x02, - 0x22, 0x00, 0x20, 0x00, 0xf7, 0xff, 0xf9, 0xf4, - 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x01, 0x04, 0x1a, 0x24, 0xd5, 0x00, 0x34, 0x1f, - 0x11, 0x64, 0xe7, 0xe1, 0x21, 0x4b, 0x43, 0x41, - 0x20, 0x93, 0xf0, 0x19, 0xfc, 0x91, 0x1c, 0x04, - 0xe7, 0xda, 0x00, 0x00, 0x2e, 0x08, 0x04, 0xc8, - 0x66, 0x00, 0x00, 0x80, 0xb5, 0x90, 0x1c, 0x07, - 0xb0, 0x83, 0x4c, 0x18, 0x6f, 0x60, 0x30, 0x01, - 0x46, 0x6a, 0x67, 0x60, 0xa8, 0x01, 0xa9, 0x02, - 0xf7, 0xff, 0xf9, 0xe8, 0x4b, 0x14, 0x18, 0xf9, - 0x98, 0x02, 0x1a, 0x40, 0x4b, 0x13, 0x42, 0x98, - 0xdc, 0x04, 0x42, 0xd8, 0xdb, 0x02, 0x69, 0xe0, - 0x28, 0x01, 0xd1, 0x07, 0x91, 0x02, 0x20, 0x00, - 0x90, 0x01, 0x22, 0x00, 0xf7, 0xff, 0xf9, 0xc0, - 0x20, 0x01, 0x61, 0xe0, 0x69, 0xe0, 0x28, 0x00, - 0xd0, 0x0b, 0x6b, 0x20, 0xf7, 0xff, 0xf9, 0xec, - 0x6f, 0x60, 0x67, 0xa0, 0x48, 0x08, 0x60, 0x07, - 0x6f, 0xe0, 0x30, 0x01, 0x67, 0xe0, 0x20, 0x00, - 0x61, 0xe0, 0xb0, 0x03, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0xc8, - 0xff, 0xff, 0xec, 0x78, 0x00, 0x02, 0xbf, 0x20, - 0x2e, 0x08, 0x05, 0x48, 0xb4, 0xf0, 0x1c, 0x1c, - 0x23, 0x00, 0x9f, 0x04, 0x60, 0x3b, 0x79, 0x85, - 0x23, 0xc0, 0x40, 0x1d, 0x4b, 0x33, 0x2d, 0x80, - 0xd1, 0x16, 0x25, 0x02, 0x60, 0x9d, 0x79, 0xc5, - 0x0a, 0x2b, 0xd3, 0x06, 0x7a, 0x45, 0x23, 0xe0, - 0x40, 0x2b, 0x2b, 0x20, 0xd1, 0x01, 0x23, 0x09, - 0x60, 0x3b, 0x7a, 0x03, 0x33, 0x09, 0x60, 0x13, - 0x79, 0x02, 0x02, 0x12, 0x79, 0x45, 0x43, 0x2a, - 0x32, 0x06, 0x1a, 0xd2, 0x60, 0x22, 0xe0, 0x25, - 0x25, 0x06, 0x26, 0x01, 0x60, 0x9e, 0x79, 0x83, - 0x2b, 0xff, 0xd1, 0x03, 0x35, 0x01, 0x5d, 0x43, - 0x2b, 0xff, 0xd0, 0xfb, 0x5d, 0x46, 0x23, 0xc0, - 0x40, 0x33, 0x2b, 0x40, 0xd1, 0x00, 0x35, 0x02, - 0x5d, 0x46, 0x09, 0x33, 0x07, 0x9b, 0xd0, 0x08, - 0x60, 0x3d, 0x5d, 0x46, 0x09, 0x73, 0xd3, 0x02, - 0x1d, 0xeb, 0x33, 0x03, 0xe0, 0x02, 0x1d, 0x6b, - 0xe0, 0x00, 0x1c, 0x6b, 0x60, 0x13, 0x79, 0x02, - 0x02, 0x12, 0x79, 0x45, 0x43, 0x2a, 0x32, 0x06, - 0x1a, 0xd2, 0x60, 0x22, 0x68, 0x3a, 0x2a, 0x00, - 0xd0, 0x20, 0x5c, 0x82, 0x23, 0x0e, 0x40, 0x1a, - 0x07, 0x52, 0x60, 0x0a, 0x68, 0x3b, 0x18, 0xc3, - 0x78, 0x5b, 0x05, 0x9b, 0x43, 0x1a, 0x60, 0x0a, - 0x68, 0x3b, 0x18, 0xc3, 0x78, 0x9c, 0x23, 0xfe, - 0x40, 0x23, 0x03, 0x9b, 0x43, 0x1a, 0x60, 0x0a, - 0x68, 0x3b, 0x18, 0xc3, 0x78, 0xdb, 0x01, 0xdb, - 0x43, 0x1a, 0x60, 0x0a, 0x68, 0x3b, 0x18, 0xc0, - 0x79, 0x00, 0x23, 0xfe, 0x40, 0x18, 0x08, 0x40, - 0x43, 0x10, 0x60, 0x08, 0x20, 0x00, 0xbc, 0xf0, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x48, - 0xb5, 0xb0, 0xb0, 0x83, 0x48, 0x3f, 0x49, 0x40, - 0x8d, 0xc9, 0x4c, 0x40, 0x63, 0xe1, 0x29, 0x06, - 0xda, 0x03, 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0x01, 0x09, 0x49, 0x01, 0x49, - 0x23, 0xff, 0x33, 0xe1, 0x42, 0x99, 0xd0, 0x03, - 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x46, 0x6a, 0xb4, 0x04, 0xaa, 0x03, 0xab, 0x02, - 0x49, 0x35, 0xf7, 0xff, 0xff, 0x6f, 0xb0, 0x01, - 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x03, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x98, 0x02, 0x99, 0x01, - 0x18, 0x40, 0x6b, 0xe1, 0x42, 0x88, 0xd0, 0x03, - 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x98, 0x00, 0x4f, 0x2c, 0x28, 0x00, 0xd0, 0x25, - 0x6e, 0x38, 0x6d, 0xb9, 0x18, 0x40, 0x23, 0x01, - 0x06, 0x1b, 0x66, 0x38, 0x42, 0x98, 0xdb, 0x04, - 0x43, 0xdb, 0x18, 0xc0, 0x66, 0x38, 0x1e, 0x48, - 0x65, 0xb8, 0x23, 0x0d, 0x06, 0x9b, 0x6d, 0xb8, - 0x6c, 0xb9, 0x1a, 0xc9, 0x60, 0x08, 0x6e, 0xe0, - 0x6c, 0xb9, 0x1a, 0xc9, 0x60, 0x48, 0x20, 0x00, - 0x65, 0xb8, 0x6c, 0xb8, 0x30, 0x08, 0x23, 0x05, - 0x02, 0x5b, 0x64, 0xb8, 0x42, 0x98, 0xd1, 0x02, - 0x20, 0x01, 0x02, 0xc0, 0x64, 0xb8, 0x6c, 0xb8, - 0x49, 0x19, 0x61, 0x48, 0x24, 0x33, 0x06, 0x64, - 0x00, 0x63, 0x6d, 0xa0, 0x18, 0xc2, 0xb4, 0x04, - 0x6d, 0x60, 0x18, 0xc5, 0x6e, 0x60, 0x18, 0xc1, - 0x98, 0x03, 0x4b, 0x0e, 0x18, 0xc0, 0x9a, 0x02, - 0x1c, 0x2b, 0xf0, 0x00, 0xfc, 0x53, 0xb0, 0x01, - 0x6d, 0xb8, 0x99, 0x01, 0x18, 0x40, 0x65, 0xb8, - 0x48, 0x0e, 0x68, 0x02, 0x18, 0x51, 0x60, 0x01, - 0x6e, 0x60, 0x6d, 0xa1, 0x42, 0x88, 0xdb, 0x04, - 0x48, 0x0a, 0x68, 0x01, 0x6a, 0x7a, 0x1a, 0x89, - 0x60, 0x01, 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x12, 0x00, - 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x04, 0xc8, - 0x2e, 0x08, 0x05, 0x34, 0x2e, 0x08, 0x04, 0x48, - 0xcc, 0x00, 0x0f, 0x00, 0x66, 0x00, 0x00, 0x64, - 0xb5, 0xf0, 0xb0, 0x83, 0x4e, 0x65, 0x25, 0x00, - 0x4f, 0x65, 0x6a, 0xf8, 0xf7, 0xff, 0xf8, 0xcc, - 0x48, 0x64, 0x8d, 0xc0, 0x63, 0xf8, 0x28, 0x0a, - 0xda, 0x03, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0x34, 0x09, 0x60, 0x01, 0x40, - 0x23, 0xff, 0x33, 0xc1, 0x42, 0x98, 0xd0, 0x07, - 0x23, 0xff, 0x33, 0xbe, 0x42, 0x9c, 0xd0, 0x03, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x46, 0x6a, 0xb4, 0x04, 0xaa, 0x03, 0xab, 0x02, - 0x49, 0x57, 0x1c, 0x30, 0xf7, 0xff, 0xfe, 0xd6, - 0xb0, 0x01, 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x98, 0x02, - 0x99, 0x01, 0x18, 0x41, 0x6b, 0xfa, 0x42, 0x91, - 0xd0, 0x03, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x21, 0x01, 0x1c, 0x22, 0x4c, 0x4d, - 0x23, 0xff, 0x33, 0xbe, 0x42, 0x9a, 0xd1, 0x3c, - 0x5c, 0x30, 0x28, 0xa0, 0xd0, 0x03, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xe0, - 0x28, 0x00, 0xd1, 0x1b, 0x20, 0x02, 0x63, 0x78, - 0x60, 0xe1, 0x21, 0x00, 0x20, 0x00, 0xf0, 0x0f, - 0xf9, 0x4f, 0x20, 0x00, 0xf7, 0xfb, 0xfe, 0xb8, - 0x98, 0x02, 0x4b, 0x3c, 0x18, 0xc0, 0x79, 0x40, - 0x23, 0x30, 0x40, 0x18, 0x66, 0xb8, 0xd0, 0x16, - 0x28, 0x10, 0xd0, 0x14, 0x28, 0x20, 0xd0, 0x17, - 0x28, 0x30, 0xd1, 0x03, 0x21, 0x20, 0x20, 0x1e, - 0xf0, 0x0f, 0xfc, 0x69, 0x98, 0x00, 0x28, 0x00, - 0xd0, 0x2b, 0x6d, 0x60, 0x28, 0x05, 0xd1, 0x28, - 0x68, 0xf8, 0x28, 0x00, 0xd1, 0x25, 0x6f, 0x38, - 0xf7, 0xff, 0xfe, 0x08, 0xe0, 0x21, 0x21, 0x02, - 0x20, 0x1e, 0xf0, 0x0f, 0xfc, 0x58, 0xe7, 0xed, - 0x21, 0x08, 0x20, 0x1e, 0xf0, 0x0f, 0xfc, 0x53, - 0xe7, 0xe8, 0x68, 0xe0, 0x28, 0x00, 0xd0, 0x08, - 0x20, 0x00, 0x63, 0x79, 0x21, 0x00, 0x60, 0xe0, - 0xf0, 0x0f, 0xf9, 0x1a, 0x20, 0x02, 0xf0, 0x0f, - 0xf9, 0x6d, 0x98, 0x00, 0x28, 0x00, 0xd0, 0x08, - 0x6d, 0x60, 0x28, 0x05, 0xd1, 0x05, 0x68, 0xf8, - 0x28, 0x00, 0xd1, 0x02, 0x6f, 0x38, 0xf7, 0xff, - 0xfe, 0x2d, 0x68, 0xe0, 0x28, 0x00, 0xd0, 0x01, - 0x98, 0x02, 0x1d, 0xc5, 0x6b, 0xf8, 0x1b, 0x42, - 0x63, 0xfa, 0x7e, 0x39, 0x69, 0x78, 0x18, 0x41, - 0x4b, 0x16, 0x18, 0xe8, 0xf7, 0xfb, 0xfb, 0xfc, - 0x7e, 0x38, 0x6b, 0xf9, 0x18, 0x40, 0x07, 0x81, - 0x0f, 0x89, 0x76, 0x39, 0x1a, 0x44, 0x20, 0x01, - 0x06, 0x00, 0x49, 0x15, 0x60, 0x08, 0xf0, 0x1e, - 0xfe, 0x53, 0x4b, 0x14, 0x40, 0x18, 0xf0, 0x1e, - 0xfe, 0x53, 0x22, 0x04, 0x49, 0x10, 0xb4, 0x06, - 0x23, 0x12, 0x21, 0x1e, 0x69, 0x78, 0x1c, 0x22, - 0xf0, 0x13, 0xff, 0x28, 0xb0, 0x02, 0xf0, 0x1e, - 0xfe, 0x43, 0x23, 0x01, 0x04, 0x9b, 0x43, 0x18, - 0xf0, 0x1e, 0xfe, 0x42, 0x69, 0x78, 0x59, 0x01, - 0x60, 0x01, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x12, 0x00, - 0x2e, 0x08, 0x04, 0xc8, 0x2c, 0x00, 0x1f, 0xc0, - 0x2e, 0x08, 0x05, 0x38, 0x2e, 0x08, 0x04, 0x48, - 0x9e, 0x00, 0x08, 0x00, 0xff, 0xfb, 0xff, 0xff, - 0x20, 0x33, 0x06, 0x40, 0x6e, 0x81, 0x6e, 0x40, - 0x1a, 0x09, 0x48, 0x0f, 0x63, 0xc1, 0x29, 0x00, - 0xdc, 0x04, 0x1f, 0xc2, 0x3a, 0x79, 0x6a, 0x52, - 0x18, 0x89, 0x63, 0xc1, 0x6b, 0xc1, 0x08, 0x89, - 0x00, 0x89, 0x23, 0x01, 0x02, 0xdb, 0x63, 0xc1, - 0x42, 0x99, 0xdd, 0x0b, 0x4a, 0x07, 0x42, 0x91, - 0xdd, 0x00, 0x63, 0xc2, 0x4a, 0x06, 0x49, 0x07, - 0x85, 0x8a, 0x6b, 0xc0, 0x85, 0xc8, 0x20, 0x09, - 0x02, 0x40, 0x86, 0xc8, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0xc8, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0x02, 0x06, 0x2c, 0x00, 0x1f, 0xc0, - 0x48, 0x0f, 0x78, 0x01, 0x29, 0x00, 0xd0, 0x1a, - 0x49, 0x0e, 0x6c, 0x8a, 0x6c, 0xc9, 0x1a, 0x51, - 0x63, 0xc1, 0x1c, 0x0a, 0x29, 0x00, 0xdc, 0x04, - 0x1f, 0xc1, 0x39, 0x79, 0x69, 0x09, 0x18, 0x51, - 0x63, 0xc1, 0x23, 0x01, 0x03, 0x1b, 0x6b, 0xc1, - 0x42, 0x99, 0xdb, 0x08, 0x22, 0xff, 0x32, 0x07, - 0x49, 0x05, 0x85, 0x8a, 0x6b, 0xc0, 0x85, 0xc8, - 0x20, 0x09, 0x02, 0x40, 0x86, 0xc8, 0x47, 0x70, - 0x2e, 0x08, 0x04, 0xc8, 0x66, 0x00, 0x00, 0x80, - 0x2c, 0x00, 0x1f, 0xc0, 0xb4, 0x80, 0x20, 0x00, - 0x49, 0x1e, 0x6c, 0x8a, 0x6c, 0xc9, 0x1a, 0x52, - 0x49, 0x1d, 0x2a, 0x00, 0xdc, 0x01, 0x69, 0x0b, - 0x18, 0xd2, 0x23, 0x01, 0x02, 0xdb, 0x42, 0x9a, - 0xdd, 0x00, 0x08, 0xd8, 0x22, 0x33, 0x06, 0x52, - 0x6e, 0x93, 0x6e, 0x52, 0x1a, 0x9a, 0x2a, 0x00, - 0xdc, 0x01, 0x6a, 0x4b, 0x18, 0xd2, 0x08, 0x92, - 0x00, 0x92, 0x4b, 0x14, 0x68, 0xdb, 0x2b, 0x00, - 0xd0, 0x06, 0x23, 0x01, 0x03, 0x1b, 0x6a, 0x4f, - 0x18, 0xfb, 0x6a, 0x89, 0x1a, 0x59, 0xe0, 0x01, - 0x21, 0x01, 0x03, 0x09, 0x42, 0x8a, 0xdd, 0x04, - 0x04, 0x00, 0x0c, 0x00, 0x23, 0x01, 0x02, 0x5b, - 0x43, 0x18, 0x28, 0x00, 0xd0, 0x0b, 0x4b, 0x0a, - 0x42, 0x9a, 0xdd, 0x00, 0x1c, 0x1a, 0x21, 0x06, - 0x43, 0x01, 0x48, 0x08, 0x85, 0x81, 0x85, 0xc2, - 0x21, 0x09, 0x02, 0x49, 0x86, 0xc1, 0xbc, 0x80, - 0x47, 0x70, 0x00, 0x00, 0x66, 0x00, 0x00, 0x80, - 0x2e, 0x08, 0x04, 0x48, 0x2e, 0x08, 0x04, 0xc8, - 0x00, 0x00, 0xff, 0xff, 0x2c, 0x00, 0x1f, 0xc0, - 0xb5, 0x90, 0x04, 0x00, 0x0c, 0x00, 0x4f, 0x13, - 0x6d, 0x39, 0x29, 0x00, 0xd1, 0x10, 0x24, 0x01, - 0x28, 0x01, 0xd0, 0x10, 0x28, 0x04, 0xd0, 0x15, - 0x28, 0x05, 0xd1, 0x09, 0xf7, 0xff, 0xf8, 0x52, - 0xf7, 0xff, 0xf8, 0x06, 0x20, 0x00, 0x66, 0xf8, - 0x67, 0x38, 0x20, 0x05, 0x65, 0x78, 0x65, 0x3c, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, - 0xff, 0xfb, 0x65, 0x3c, 0x65, 0x7c, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xf8, 0x3e, - 0x20, 0x04, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x48, - 0xb5, 0x90, 0x04, 0x00, 0x0c, 0x00, 0x4f, 0x23, - 0x6d, 0x39, 0x29, 0x00, 0xd0, 0x0e, 0x29, 0x02, - 0xd1, 0x09, 0x6d, 0x78, 0x28, 0x01, 0xd0, 0x34, - 0x28, 0x04, 0xd0, 0x27, 0x28, 0x05, 0xd1, 0x02, - 0x20, 0xff, 0xf7, 0xff, 0xf8, 0xd1, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x24, 0x02, 0x28, 0x01, - 0xd0, 0x0c, 0x28, 0x04, 0xd0, 0x12, 0x28, 0x05, - 0xd1, 0xf5, 0x20, 0x00, 0xf7, 0xff, 0xf8, 0xc4, - 0x20, 0x05, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xf8, 0x42, - 0x20, 0x01, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xf8, 0x7a, - 0x20, 0x04, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x21, 0x00, 0x20, 0x0e, - 0xf0, 0x11, 0xfb, 0xb2, 0x21, 0x00, 0x20, 0x0d, - 0xf0, 0x11, 0xfb, 0xae, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x02, 0xf0, 0x0f, 0xf8, 0x0e, - 0x20, 0xff, 0x49, 0x03, 0x70, 0x08, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x48, - 0x2e, 0x08, 0x04, 0xc8, 0xb5, 0xf0, 0x4f, 0x2b, - 0x24, 0x00, 0x6d, 0x38, 0x28, 0x01, 0xd0, 0x1e, - 0x28, 0x02, 0xd1, 0x19, 0x26, 0x03, 0x6d, 0x78, - 0x1d, 0xfd, 0x35, 0x79, 0x28, 0x01, 0xd0, 0x34, - 0x28, 0x04, 0xd0, 0x3f, 0x28, 0x05, 0xd1, 0x0f, - 0x20, 0x02, 0x63, 0x6c, 0xf0, 0x0e, 0xff, 0xee, - 0x20, 0x00, 0xf7, 0xfb, 0xfd, 0x01, 0xf7, 0xff, - 0xf8, 0x2b, 0x65, 0x3e, 0x20, 0x00, 0x65, 0x78, - 0xf7, 0xfe, 0xfe, 0xc2, 0x20, 0x01, 0x61, 0xe8, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x6d, 0x78, - 0x28, 0x01, 0xd0, 0x0c, 0x28, 0x04, 0xd0, 0x11, - 0x28, 0x05, 0xd1, 0xf5, 0xf7, 0xfe, 0xff, 0x8c, - 0xf7, 0xfe, 0xff, 0xe2, 0x65, 0x3c, 0x65, 0x7c, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, - 0xff, 0x83, 0x65, 0x3c, 0x65, 0x7c, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, 0xff, 0xd4, - 0x65, 0x3c, 0x65, 0x7c, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x63, 0x6c, 0x20, 0x02, 0x60, 0xfc, - 0xf0, 0x0e, 0xff, 0xbc, 0x20, 0x00, 0xf7, 0xfb, - 0xfc, 0xcf, 0x65, 0x7c, 0x65, 0x3e, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, 0xff, 0xf4, - 0x65, 0x7c, 0x65, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x48, - 0xb5, 0x90, 0x4c, 0x1b, 0x68, 0xe0, 0x28, 0x03, - 0xd0, 0x1f, 0x1f, 0xe7, 0x3f, 0x79, 0x6d, 0x38, - 0x28, 0x02, 0xd1, 0x1a, 0x6d, 0x78, 0x28, 0x01, - 0xd0, 0x1a, 0x28, 0x04, 0xd0, 0x20, 0x28, 0x05, - 0xd1, 0x13, 0x4a, 0x14, 0x49, 0x14, 0x48, 0x15, - 0xf7, 0xfe, 0xfe, 0x54, 0x21, 0x00, 0x20, 0x0e, - 0xf0, 0x11, 0xfb, 0x2a, 0x20, 0x01, 0xf0, 0x0e, - 0xff, 0x8d, 0x20, 0x03, 0x60, 0xe0, 0x68, 0xf8, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0x01, 0xf0, 0x0e, - 0xff, 0x85, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x01, 0xf0, 0x0e, 0xff, 0x7f, 0x20, 0x00, - 0x70, 0x20, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x21, 0x00, 0x20, 0x0b, 0xf0, 0x11, 0xfb, 0x10, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0xc8, 0x2e, 0x08, 0x05, 0x54, - 0x2e, 0x08, 0x05, 0x4c, 0x2e, 0x08, 0x05, 0x50, - 0xb5, 0xf0, 0x4c, 0x21, 0x6d, 0x20, 0x28, 0x02, - 0xd1, 0x24, 0x26, 0xff, 0x6d, 0x60, 0x1d, 0xe7, - 0x37, 0x79, 0x28, 0x01, 0xd0, 0x1d, 0x28, 0x04, - 0xd0, 0x1f, 0x28, 0x05, 0xd1, 0x1a, 0x20, 0x01, - 0xf0, 0x0e, 0xff, 0x58, 0x25, 0x00, 0x68, 0xe0, - 0x28, 0x00, 0xd0, 0x04, 0x21, 0x00, 0x20, 0x00, - 0xf0, 0x0e, 0xfe, 0xfa, 0x60, 0xe5, 0x70, 0x3e, - 0x68, 0xf8, 0x28, 0x03, 0xd1, 0x14, 0x48, 0x13, - 0x22, 0x00, 0x68, 0x41, 0x20, 0x00, 0xf7, 0xfe, - 0xfd, 0xef, 0x6b, 0x38, 0xf7, 0xfe, 0xfe, 0x20, - 0xe0, 0x0f, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x11, - 0xfa, 0xd3, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x01, 0x61, 0xf8, 0x6b, 0x38, 0xf7, 0xfe, - 0xfe, 0x0f, 0x20, 0x02, 0x60, 0xfd, 0xf0, 0x0e, - 0xff, 0x2d, 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x11, - 0xfa, 0xc3, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x04, 0x48, 0x2e, 0x08, 0x05, 0x48, - 0xb5, 0xb0, 0x04, 0x07, 0x0c, 0x3f, 0x2f, 0x01, - 0xda, 0x00, 0x27, 0x01, 0x2f, 0x3f, 0xdd, 0x00, - 0x27, 0x3f, 0x48, 0x17, 0x6d, 0x01, 0x29, 0x02, - 0xd1, 0x13, 0x6d, 0x40, 0x25, 0x02, 0x4c, 0x15, - 0x28, 0x04, 0xd0, 0x11, 0x28, 0x05, 0xd1, 0x0c, - 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x11, 0xfa, 0xa4, - 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x11, 0xfa, 0xa0, - 0x20, 0x22, 0x1c, 0x39, 0xf0, 0x11, 0xfa, 0x9c, - 0x60, 0xe5, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x11, 0xfa, 0x94, - 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x11, 0xfa, 0x90, - 0x20, 0x22, 0x1c, 0x39, 0xf0, 0x11, 0xfa, 0x8c, - 0x20, 0x00, 0xf7, 0xfe, 0xfd, 0xcd, 0x60, 0xe5, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0x48, 0x2e, 0x08, 0x04, 0xc8, - 0xb5, 0x00, 0x48, 0x0b, 0x6d, 0x01, 0x29, 0x02, - 0xd1, 0x10, 0x6d, 0x40, 0x28, 0x04, 0xd0, 0x01, - 0x28, 0x05, 0xd1, 0x0b, 0x21, 0x00, 0x20, 0x16, - 0xf0, 0x11, 0xfa, 0x72, 0x20, 0x00, 0xf7, 0xfe, - 0xfd, 0xb3, 0x21, 0x00, 0x48, 0x03, 0x70, 0x01, - 0x21, 0x01, 0x60, 0xc1, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x04, 0x48, 0x2e, 0x08, 0x04, 0xc8, - 0xb5, 0x00, 0x48, 0x0b, 0x6d, 0x01, 0x29, 0x02, - 0xd1, 0x10, 0x6d, 0x40, 0x28, 0x04, 0xd0, 0x01, - 0x28, 0x05, 0xd1, 0x0b, 0x21, 0x00, 0x20, 0x1a, - 0xf0, 0x11, 0xfa, 0x56, 0x20, 0x00, 0xf7, 0xfe, - 0xfd, 0x97, 0x21, 0x00, 0x48, 0x03, 0x70, 0x01, - 0x21, 0x01, 0x60, 0xc1, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x04, 0x48, 0x2e, 0x08, 0x04, 0xc8, - 0x48, 0x03, 0x6d, 0x00, 0x28, 0x00, 0xd1, 0x00, - 0x47, 0x70, 0x20, 0xff, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0x48, 0xb5, 0xf0, 0x1c, 0x04, - 0x1c, 0x0f, 0x4d, 0x52, 0x6d, 0x29, 0x48, 0x52, - 0x26, 0x00, 0x29, 0x01, 0xd0, 0x4c, 0x29, 0x02, - 0xd1, 0x6e, 0x6d, 0x69, 0x29, 0x01, 0xd0, 0x20, - 0x29, 0x04, 0xd0, 0x2e, 0x29, 0x05, 0xd1, 0x3e, - 0x6c, 0xc1, 0x6c, 0x80, 0x1a, 0x08, 0xd5, 0x01, - 0x69, 0x29, 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, - 0x69, 0x28, 0xf0, 0x18, 0xff, 0xdd, 0x70, 0x20, - 0x20, 0x33, 0x06, 0x40, 0x6e, 0x41, 0x6e, 0x80, - 0x1a, 0x08, 0xd5, 0x01, 0x6a, 0x69, 0x18, 0x40, - 0x21, 0x64, 0x43, 0x41, 0x6a, 0x68, 0xf0, 0x18, - 0xff, 0xcf, 0x70, 0x38, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x6c, 0xc1, 0x6c, 0x80, 0x1a, 0x08, - 0xd5, 0x01, 0x69, 0x29, 0x18, 0x40, 0x21, 0x64, - 0x43, 0x41, 0x69, 0x28, 0xf0, 0x18, 0xff, 0xc0, - 0x70, 0x20, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x33, 0x06, 0x40, 0x6e, 0x41, - 0x6e, 0x80, 0x1a, 0x08, 0xd5, 0x01, 0x6a, 0x69, - 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, 0x6a, 0x68, - 0xf0, 0x18, 0xff, 0xae, 0x70, 0x38, 0x70, 0x26, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x70, 0x26, - 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x6d, 0x69, 0x29, 0x01, 0xd0, 0x21, 0x29, 0x04, - 0xd0, 0x2f, 0x29, 0x05, 0xd1, 0x3f, 0x69, 0x69, - 0x6c, 0xc0, 0x1a, 0x40, 0xd5, 0x01, 0x69, 0x29, - 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, 0x69, 0x28, - 0xf0, 0x18, 0xff, 0x92, 0x70, 0x20, 0x21, 0x33, - 0x06, 0x49, 0x6a, 0xe8, 0x6e, 0x49, 0x1a, 0x08, - 0xd5, 0x01, 0x6a, 0x69, 0x18, 0x40, 0x21, 0x64, - 0x43, 0x41, 0x6a, 0x68, 0xf0, 0x18, 0xff, 0x84, - 0x70, 0x38, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xe0, 0x26, 0x69, 0x69, 0x6c, 0xc0, 0x1a, 0x40, - 0xd5, 0x01, 0x69, 0x29, 0x18, 0x40, 0x21, 0x64, - 0x43, 0x41, 0x69, 0x28, 0xf0, 0x18, 0xff, 0x74, - 0x70, 0x20, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x21, 0x33, 0x06, 0x49, 0x6a, 0xe8, - 0x6e, 0x49, 0x1a, 0x08, 0xd5, 0x01, 0x6a, 0x69, - 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, 0x6a, 0x68, - 0xf0, 0x18, 0xff, 0x62, 0x70, 0x38, 0x70, 0x26, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x70, 0x26, - 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x70, 0x26, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x48, - 0x66, 0x00, 0x00, 0x80, 0xb5, 0xf0, 0x1c, 0x17, - 0x9e, 0x05, 0x1a, 0xf2, 0x1c, 0x0d, 0x21, 0x00, - 0x1c, 0x1c, 0x42, 0xba, 0xda, 0x03, 0x1c, 0x08, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x42, 0xa0, - 0xd3, 0x01, 0x42, 0xb0, 0xd9, 0x03, 0x1c, 0x08, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x19, 0xc1, - 0x42, 0xb1, 0xd9, 0x0c, 0x1a, 0x32, 0x4e, 0x0a, - 0x64, 0x32, 0x1c, 0x29, 0xf7, 0xfb, 0xf8, 0x84, - 0x6c, 0x30, 0x1a, 0x3a, 0x18, 0x29, 0x1c, 0x20, - 0xf7, 0xfb, 0xf8, 0x7e, 0xe0, 0x03, 0x1c, 0x29, - 0x1c, 0x3a, 0xf7, 0xfb, 0xf8, 0x79, 0x1c, 0x38, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0xc8, 0xb5, 0xf0, 0x1c, 0x17, - 0x9e, 0x05, 0x1a, 0xf2, 0x1c, 0x05, 0x20, 0x00, - 0x1c, 0x1c, 0x42, 0xba, 0xdb, 0x18, 0x42, 0xa1, - 0xd3, 0x16, 0x42, 0xb1, 0xd2, 0x14, 0x19, 0xc8, - 0x42, 0xb0, 0xd9, 0x0c, 0x1a, 0x72, 0x4e, 0x0a, - 0x64, 0x32, 0x1c, 0x28, 0xf7, 0xfb, 0xf8, 0x5c, - 0x6c, 0x30, 0x1a, 0x3a, 0x18, 0x28, 0x1c, 0x21, - 0xf7, 0xfb, 0xf8, 0x56, 0xe0, 0x03, 0x1c, 0x28, - 0x1c, 0x3a, 0xf7, 0xfb, 0xf8, 0x51, 0x1c, 0x38, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x04, 0xc8, 0x47, 0x70, 0xb5, 0x00, - 0xb0, 0x82, 0x46, 0x6a, 0x49, 0x06, 0xa8, 0x01, - 0xf7, 0xfe, 0xfc, 0x58, 0x21, 0x00, 0x20, 0x0b, - 0xf0, 0x11, 0xf9, 0x2e, 0x20, 0x03, 0x49, 0x03, - 0x61, 0x88, 0xb0, 0x02, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x05, 0x64, 0x2e, 0x08, 0x05, 0x48, - 0xb5, 0x80, 0x4f, 0x0b, 0x22, 0x00, 0x20, 0x00, - 0x69, 0xf9, 0xf7, 0xfe, 0xfc, 0x2d, 0x21, 0x00, - 0x20, 0x0d, 0xf0, 0x11, 0xf9, 0x19, 0x21, 0x01, - 0x1f, 0xf8, 0x38, 0x79, 0x61, 0xc1, 0x6b, 0x00, - 0xf7, 0xfe, 0xfc, 0x56, 0x20, 0x00, 0x61, 0xb8, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x05, 0x48, 0xb5, 0x80, 0x4f, 0x06, - 0x68, 0x38, 0x1d, 0xc1, 0x31, 0xb5, 0x20, 0x2f, - 0x02, 0x80, 0xf0, 0x18, 0xfe, 0xbd, 0x60, 0x39, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x02, 0xcb, 0x10, 0x48, 0x05, 0x8f, 0xc1, - 0x29, 0x00, 0xd0, 0x05, 0x21, 0x00, 0x87, 0xc1, - 0x48, 0x03, 0x69, 0x01, 0x31, 0x01, 0x61, 0x01, - 0x47, 0x70, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, - 0x2e, 0x08, 0x05, 0x68, 0x48, 0x03, 0x21, 0x00, - 0x60, 0x01, 0x48, 0x03, 0x69, 0x41, 0x31, 0x01, - 0x61, 0x41, 0x47, 0x70, 0x2e, 0x08, 0x48, 0x00, - 0x2e, 0x08, 0x05, 0x68, 0xb5, 0x00, 0xb0, 0x88, - 0x46, 0x68, 0xf0, 0x13, 0xfc, 0xbf, 0x48, 0x07, - 0x69, 0x81, 0x31, 0x01, 0x23, 0x01, 0x22, 0x06, - 0x61, 0x81, 0x21, 0x47, 0x02, 0x49, 0x05, 0x48, - 0xf0, 0x13, 0xfb, 0xac, 0xb0, 0x08, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0x68, - 0xb5, 0x90, 0x1c, 0x07, 0x20, 0xff, 0x30, 0xa5, - 0xb0, 0x85, 0x90, 0x00, 0x20, 0x01, 0x02, 0x40, - 0x90, 0x02, 0x48, 0x12, 0x90, 0x04, 0x20, 0x0e, - 0xab, 0x03, 0x80, 0x18, 0x46, 0x68, 0xf0, 0x13, - 0xfc, 0xd1, 0x2f, 0x00, 0xd0, 0x16, 0x20, 0x33, - 0x06, 0x40, 0x6d, 0x40, 0x23, 0x0d, 0x06, 0x9b, - 0x1a, 0xc7, 0x98, 0x02, 0x1e, 0x79, 0xf0, 0x00, - 0xfb, 0x31, 0x4c, 0x09, 0x68, 0x20, 0x28, 0x00, - 0xd1, 0x04, 0x20, 0xa5, 0x01, 0xc0, 0xf0, 0x00, - 0xfb, 0x37, 0x60, 0x20, 0x98, 0x02, 0x1a, 0x38, - 0x49, 0x04, 0x60, 0x88, 0xb0, 0x05, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x1c, 0x00, 0x00, - 0x2e, 0x08, 0x00, 0x00, 0x2e, 0x08, 0x05, 0x68, - 0xb5, 0x00, 0x22, 0x01, 0x21, 0x01, 0x20, 0x00, - 0xf0, 0x0f, 0xf9, 0x2e, 0x48, 0x04, 0x68, 0x00, - 0x78, 0x01, 0x23, 0x06, 0x43, 0x19, 0x70, 0x01, - 0xf0, 0x00, 0xf9, 0xea, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x9b, 0xc4, 0xb5, 0xf0, 0x48, 0x55, - 0x4e, 0x55, 0x80, 0x30, 0x27, 0x00, 0x4c, 0x55, - 0x86, 0xe7, 0x86, 0xa7, 0x48, 0x54, 0x60, 0x07, - 0xf0, 0x0b, 0xf8, 0x2e, 0x48, 0x53, 0xf0, 0x14, - 0xf8, 0xdb, 0xf7, 0xfa, 0xff, 0x29, 0x21, 0xff, - 0x48, 0x51, 0x60, 0x01, 0x68, 0x01, 0x29, 0x00, - 0xd0, 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x01, - 0x4a, 0x4e, 0x60, 0xd1, 0x60, 0x07, 0xf7, 0xfc, - 0xfb, 0x17, 0x20, 0x01, 0xf7, 0xff, 0xff, 0x98, - 0x21, 0x00, 0x20, 0x00, 0xf0, 0x0e, 0xfc, 0x6c, - 0xf0, 0x01, 0xfa, 0xbc, 0x48, 0x48, 0x60, 0x07, - 0x25, 0x02, 0x48, 0x48, 0x60, 0x05, 0x20, 0x03, - 0x49, 0x47, 0x60, 0x08, 0x49, 0x47, 0x60, 0x08, - 0x49, 0x47, 0x60, 0x0d, 0x49, 0x47, 0x60, 0x08, - 0x48, 0x47, 0x60, 0x07, 0x48, 0x47, 0x65, 0x87, - 0xf0, 0x00, 0xf9, 0x8a, 0xf0, 0x14, 0xf9, 0x48, - 0x20, 0x00, 0xf0, 0x11, 0xfe, 0x85, 0x28, 0x00, - 0xd1, 0x64, 0x48, 0x43, 0xf0, 0x0e, 0xfa, 0xbe, - 0x20, 0x00, 0xf0, 0x0e, 0xfb, 0x2f, 0x87, 0xe7, - 0x87, 0xa7, 0x22, 0x01, 0xb4, 0x04, 0x22, 0x03, - 0x21, 0x01, 0x20, 0x00, 0x1c, 0x2b, 0xf0, 0x11, - 0xfb, 0x2b, 0x20, 0x02, 0xb0, 0x01, 0xf7, 0xfc, - 0xfc, 0x73, 0xf7, 0xff, 0xff, 0x95, 0x20, 0x7d, - 0x00, 0xc0, 0xf7, 0xfd, 0xfd, 0xc7, 0x20, 0x7d, - 0x00, 0xc0, 0xf7, 0xfd, 0xfd, 0xdb, 0xf0, 0x09, - 0xff, 0x4f, 0xf0, 0x09, 0xff, 0x8d, 0xf7, 0xfb, - 0xf9, 0xbf, 0x21, 0x18, 0x20, 0x14, 0xf7, 0xfd, - 0xf8, 0x11, 0xf7, 0xfd, 0xfb, 0xbf, 0xf7, 0xfb, - 0xfd, 0x0d, 0x03, 0xe8, 0xf0, 0x00, 0xfa, 0x5c, - 0xf0, 0x05, 0xfc, 0x30, 0x49, 0x2b, 0x70, 0x08, - 0x05, 0xa8, 0xf0, 0x1e, 0xf9, 0x78, 0x49, 0x2a, - 0x20, 0x17, 0xf0, 0x1e, 0xf9, 0x81, 0x49, 0x29, - 0x20, 0x08, 0xf0, 0x1e, 0xf9, 0x7d, 0xf0, 0x1e, - 0xf9, 0x73, 0x4b, 0x27, 0x40, 0x18, 0xf0, 0x1e, - 0xf9, 0x73, 0x01, 0xe8, 0xf0, 0x1e, 0xf9, 0x67, - 0x48, 0x24, 0x23, 0x01, 0x22, 0x08, 0x21, 0x81, - 0x01, 0x09, 0x60, 0x07, 0xf0, 0x11, 0xfa, 0x38, - 0xf0, 0x01, 0xfa, 0xd6, 0x49, 0x20, 0x20, 0x04, - 0xf0, 0x1e, 0xf9, 0x66, 0xf0, 0x1e, 0xf9, 0x5c, - 0x23, 0x10, 0x43, 0xdb, 0x40, 0x18, 0xf0, 0x1e, - 0xf9, 0x5b, 0x20, 0x10, 0xf0, 0x1e, 0xf9, 0x4f, - 0x87, 0x67, 0x21, 0x00, 0x1c, 0x30, 0xf7, 0xfd, - 0xfd, 0xa9, 0x1c, 0x38, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x2c, 0x00, 0x00, 0xfc, 0x2c, 0x00, 0x1f, 0xc0, - 0x2e, 0x08, 0x04, 0x98, 0x07, 0x77, 0x77, 0x20, - 0x72, 0x00, 0x02, 0x00, 0x2e, 0x08, 0x05, 0x68, - 0x6e, 0x00, 0x10, 0x00, 0x6e, 0x00, 0x11, 0x00, - 0x6e, 0x00, 0x14, 0x00, 0x6e, 0x00, 0x15, 0x00, - 0x6e, 0x00, 0x16, 0x00, 0x6e, 0x00, 0x17, 0x00, - 0x6e, 0x00, 0x18, 0x00, 0xcc, 0x00, 0x0f, 0x80, - 0x00, 0x80, 0x10, 0x80, 0x2e, 0x08, 0x1a, 0x94, - 0x2e, 0x00, 0x54, 0xa1, 0x2e, 0x00, 0x54, 0xc1, - 0xff, 0xff, 0xfe, 0xff, 0x2e, 0x08, 0x48, 0x00, - 0x2e, 0x00, 0x54, 0x81, 0xb5, 0x90, 0x1c, 0x0c, - 0x1c, 0x07, 0xf0, 0x1e, 0xf9, 0x55, 0x2f, 0x01, - 0xda, 0x00, 0x27, 0x01, 0x4b, 0x0e, 0x42, 0x9f, - 0xdd, 0x00, 0x1c, 0x1f, 0x3f, 0x01, 0x04, 0x3f, - 0x4b, 0x0c, 0x18, 0xff, 0x21, 0x03, 0x48, 0x0c, - 0x60, 0x01, 0x60, 0x47, 0x21, 0x01, 0x60, 0x01, - 0x20, 0x01, 0x1c, 0x21, 0xf0, 0x1e, 0xf9, 0x0c, - 0xf0, 0x1e, 0xf9, 0x02, 0x23, 0x02, 0x43, 0xdb, - 0x40, 0x18, 0xf0, 0x1e, 0xf9, 0x01, 0xf0, 0x1e, - 0xf9, 0x6d, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0x00, 0xfd, 0xe8, 0x00, 0x00, 0x9e, 0x34, - 0x6e, 0x00, 0x03, 0x00, 0xb5, 0x90, 0x1c, 0x0c, - 0x1c, 0x07, 0xf0, 0x1e, 0xf9, 0x29, 0x2f, 0x01, - 0xda, 0x00, 0x27, 0x01, 0x4b, 0x0e, 0x42, 0x9f, - 0xdd, 0x00, 0x1c, 0x1f, 0x3f, 0x01, 0x04, 0x3f, - 0x21, 0x03, 0x37, 0xff, 0x37, 0x96, 0x48, 0x0b, - 0x60, 0x01, 0x60, 0x47, 0x21, 0x01, 0x60, 0x01, - 0x20, 0x01, 0x1c, 0x21, 0xf0, 0x1e, 0xf8, 0xe0, - 0xf0, 0x1e, 0xf8, 0xd6, 0x23, 0x02, 0x43, 0xdb, - 0x40, 0x18, 0xf0, 0x1e, 0xf8, 0xd5, 0xf0, 0x1e, - 0xf9, 0x41, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0x00, 0xfd, 0xe8, 0x6e, 0x00, 0x03, 0x00, - 0xb5, 0x00, 0xf0, 0x1e, 0xf9, 0x01, 0x20, 0x03, - 0x49, 0x05, 0x60, 0x08, 0xf0, 0x1e, 0xf8, 0xc0, - 0x23, 0x02, 0x43, 0x18, 0xf0, 0x1e, 0xf8, 0xc0, - 0xf0, 0x1e, 0xf9, 0x2c, 0xbc, 0x08, 0x47, 0x18, - 0x6e, 0x00, 0x03, 0x00, 0xb5, 0x90, 0x1c, 0x0c, - 0x1c, 0x07, 0xf0, 0x1e, 0xf8, 0xed, 0x2f, 0x01, - 0xda, 0x00, 0x27, 0x01, 0x4b, 0x0e, 0x42, 0x9f, - 0xdd, 0x00, 0x1c, 0x1f, 0x3f, 0x01, 0x04, 0x3f, - 0x4b, 0x0c, 0x18, 0xff, 0x21, 0x03, 0x48, 0x0c, - 0x60, 0x01, 0x60, 0x47, 0x21, 0x01, 0x60, 0x01, - 0x20, 0x05, 0x1c, 0x21, 0xf0, 0x1e, 0xf8, 0xa4, - 0xf0, 0x1e, 0xf8, 0x9a, 0x23, 0x20, 0x43, 0xdb, - 0x40, 0x18, 0xf0, 0x1e, 0xf8, 0x99, 0xf0, 0x1e, - 0xf9, 0x05, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0x00, 0xfd, 0xe8, 0x00, 0x00, 0x9e, 0x34, - 0x6e, 0x00, 0x04, 0x00, 0xb5, 0x90, 0x1c, 0x0c, - 0x1c, 0x07, 0xf0, 0x1e, 0xf8, 0xc1, 0x2f, 0x01, - 0xda, 0x00, 0x27, 0x01, 0x4b, 0x0e, 0x42, 0x9f, - 0xdd, 0x00, 0x1c, 0x1f, 0x3f, 0x01, 0x04, 0x3f, - 0x21, 0x03, 0x37, 0xff, 0x37, 0x96, 0x48, 0x0b, - 0x60, 0x01, 0x60, 0x47, 0x21, 0x01, 0x60, 0x01, - 0x20, 0x05, 0x1c, 0x21, 0xf0, 0x1e, 0xf8, 0x78, - 0xf0, 0x1e, 0xf8, 0x6e, 0x23, 0x20, 0x43, 0xdb, - 0x40, 0x18, 0xf0, 0x1e, 0xf8, 0x6d, 0xf0, 0x1e, - 0xf8, 0xd9, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0x00, 0xfd, 0xe8, 0x6e, 0x00, 0x04, 0x00, - 0xb5, 0x00, 0xf0, 0x1e, 0xf8, 0x99, 0x20, 0x03, - 0x49, 0x05, 0x60, 0x08, 0xf0, 0x1e, 0xf8, 0x58, - 0x23, 0x20, 0x43, 0x18, 0xf0, 0x1e, 0xf8, 0x58, - 0xf0, 0x1e, 0xf8, 0xc4, 0xbc, 0x08, 0x47, 0x18, - 0x6e, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x48, 0x0b, - 0x68, 0x41, 0x31, 0x14, 0x60, 0x41, 0x68, 0x81, - 0x31, 0x01, 0x60, 0x81, 0x48, 0x08, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x05, 0x28, 0x01, 0xd1, 0x01, - 0xf7, 0xfe, 0xfa, 0x52, 0xbc, 0x08, 0x47, 0x18, - 0x48, 0x04, 0x21, 0x10, 0xf0, 0x0f, 0xf8, 0x34, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xb4, - 0x2e, 0x08, 0x04, 0xfc, 0x2e, 0x08, 0x05, 0xb4, - 0xb5, 0x00, 0xf0, 0x1e, 0xf8, 0x69, 0x21, 0x00, - 0x48, 0x08, 0x60, 0x41, 0x60, 0x81, 0x49, 0x08, - 0x20, 0x07, 0xf0, 0x1e, 0xf8, 0x2d, 0xf0, 0x1e, - 0xf8, 0x23, 0x23, 0x80, 0x43, 0xdb, 0x40, 0x18, - 0xf0, 0x1e, 0xf8, 0x22, 0xf0, 0x1e, 0xf8, 0x8e, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xb4, - 0x2e, 0x00, 0x58, 0xe1, 0x48, 0x01, 0x68, 0x40, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xb4, - 0xb5, 0x90, 0x49, 0x0d, 0x1c, 0x0f, 0x48, 0x0d, - 0x24, 0x1e, 0x22, 0x10, 0x1c, 0x23, 0xf0, 0x0f, - 0xf9, 0x35, 0x22, 0x02, 0x21, 0x10, 0x1c, 0x38, - 0x1c, 0x23, 0xf0, 0x0b, 0xfb, 0x9d, 0x49, 0x08, - 0x20, 0x10, 0xf0, 0x1e, 0xf8, 0x05, 0xf0, 0x1d, - 0xff, 0xfb, 0x4b, 0x06, 0x40, 0x18, 0xf0, 0x1d, - 0xff, 0xfb, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x48, 0x10, 0x2e, 0x08, 0x05, 0xb4, - 0x2e, 0x00, 0x59, 0xa5, 0xff, 0xfe, 0xff, 0xff, - 0xb5, 0x00, 0xb0, 0x86, 0x46, 0x68, 0x49, 0x0c, - 0xc9, 0x0c, 0xc0, 0x0c, 0xc9, 0x0c, 0xc0, 0x0c, - 0xc9, 0x0c, 0xc0, 0x0c, 0x48, 0x09, 0xab, 0x00, - 0xcb, 0x0e, 0xb0, 0x03, 0xf0, 0x0f, 0xf9, 0x3a, - 0xb0, 0x03, 0x48, 0x07, 0x68, 0x01, 0x08, 0x4a, - 0xd3, 0x04, 0x08, 0x49, 0x00, 0x49, 0x23, 0x04, - 0x43, 0x19, 0x60, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x48, 0x10, 0x2e, 0x08, 0x05, 0xb4, - 0x2e, 0x08, 0x00, 0x04, 0xb5, 0x80, 0x29, 0x0c, - 0xd2, 0x00, 0x21, 0x0c, 0x31, 0x07, 0x08, 0xc9, - 0x00, 0xc9, 0x27, 0x00, 0x68, 0x02, 0x42, 0x82, - 0xd0, 0x03, 0x68, 0x93, 0x42, 0x8b, 0xd3, 0x0d, - 0x1c, 0x17, 0x2f, 0x00, 0xd0, 0x1e, 0x68, 0xb8, - 0x1a, 0x42, 0x2a, 0x0c, 0xd2, 0x00, 0x1c, 0x01, - 0x1a, 0x42, 0xd1, 0x05, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x76, 0xe0, 0x0c, 0x68, 0x12, 0xe7, 0xea, - 0x1d, 0xca, 0x32, 0x01, 0x1a, 0x80, 0x60, 0xb8, - 0x19, 0xc0, 0x1d, 0xc7, 0x37, 0x01, 0x20, 0x00, - 0x60, 0x38, 0x60, 0x78, 0x60, 0xb9, 0x68, 0xb8, - 0x60, 0x38, 0x1d, 0xf8, 0x30, 0x01, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xb0, 0x1f, 0xcc, - 0x3c, 0x01, 0x68, 0x21, 0x19, 0x0a, 0x60, 0xa1, - 0x68, 0x07, 0x32, 0x08, 0x42, 0x87, 0xd1, 0x06, - 0x68, 0x41, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x48, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x42, 0x97, - 0xd1, 0x0f, 0x68, 0x7d, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x46, 0x68, 0xa0, 0x68, 0xb9, 0x18, 0x40, - 0x30, 0x08, 0x60, 0xa0, 0x1c, 0x20, 0x1c, 0x29, - 0xf0, 0x00, 0xf8, 0x36, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0xbb, 0x19, 0xdb, 0x33, 0x08, - 0x42, 0xa3, 0xd1, 0x13, 0x68, 0xb8, 0x18, 0x40, - 0x30, 0x08, 0x60, 0xb8, 0x19, 0xc0, 0x68, 0x3c, - 0x30, 0x08, 0x42, 0xa0, 0xd1, 0xdc, 0x1c, 0x20, - 0xf0, 0x00, 0xf8, 0x29, 0x68, 0xb8, 0x68, 0xa1, - 0x18, 0x40, 0x30, 0x08, 0x60, 0xb8, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x42, 0xbc, 0xd2, 0x06, - 0x68, 0x79, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x14, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0x3f, - 0xe7, 0xc0, 0xb5, 0x00, 0x31, 0x10, 0x32, 0x01, - 0x1c, 0x0b, 0x1a, 0x51, 0x39, 0x08, 0x60, 0x99, - 0x60, 0x00, 0x1c, 0x01, 0x60, 0x40, 0x1c, 0x18, - 0xf0, 0x00, 0xf8, 0x02, 0xbc, 0x08, 0x47, 0x18, - 0x68, 0x0a, 0x60, 0x02, 0x60, 0x08, 0x68, 0x02, - 0x60, 0x50, 0x60, 0x41, 0x47, 0x70, 0xc8, 0x06, - 0x38, 0x08, 0x60, 0x11, 0xc8, 0x03, 0x60, 0x41, - 0x47, 0x70, 0xb5, 0x00, 0x1c, 0x0a, 0x1c, 0x01, - 0x48, 0x02, 0xf7, 0xff, 0xff, 0xde, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xd8, - 0xb5, 0x90, 0x1c, 0x07, 0xf0, 0x1d, 0xff, 0x24, - 0x23, 0x11, 0x05, 0x1b, 0x1c, 0x04, 0x43, 0x18, - 0xf0, 0x1d, 0xff, 0x22, 0x1c, 0x39, 0x48, 0x05, - 0xf7, 0xff, 0xff, 0x50, 0x1c, 0x07, 0x1c, 0x20, - 0xf0, 0x1d, 0xff, 0x1a, 0x1c, 0x38, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xd8, - 0xb5, 0x00, 0x1c, 0x01, 0x48, 0x02, 0xf7, 0xff, - 0xff, 0x41, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x05, 0xd8, 0xb5, 0x90, 0x1c, 0x07, - 0xd0, 0x0e, 0xf0, 0x1d, 0xff, 0x01, 0x23, 0x11, - 0x05, 0x1b, 0x1c, 0x04, 0x43, 0x18, 0xf0, 0x1d, - 0xfe, 0xff, 0x1c, 0x39, 0x48, 0x04, 0xf7, 0xff, - 0xff, 0x61, 0x1c, 0x20, 0xf0, 0x1d, 0xfe, 0xf8, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x05, 0xd8, 0xb5, 0x00, 0x4a, 0x04, - 0xc2, 0x03, 0x1c, 0x0a, 0x1c, 0x01, 0x48, 0x03, - 0xf7, 0xff, 0xff, 0x97, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x05, 0xc0, 0x2e, 0x08, 0x05, 0xd0, - 0xb5, 0x00, 0x1c, 0x01, 0x48, 0x02, 0xf7, 0xff, - 0xff, 0x11, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x05, 0xd0, 0xb5, 0x00, 0x49, 0x08, - 0x68, 0x0a, 0x42, 0x90, 0xd3, 0x02, 0x68, 0x49, - 0x42, 0x88, 0xd9, 0x03, 0xf7, 0xff, 0xff, 0xc6, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x01, 0x48, 0x03, - 0xf7, 0xff, 0xff, 0x30, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x05, 0xc0, 0x2e, 0x08, 0x05, 0xd0, - 0xb5, 0x00, 0x4a, 0x05, 0x60, 0x90, 0x60, 0xd1, - 0x1c, 0x0a, 0x1c, 0x01, 0x48, 0x03, 0xf7, 0xff, - 0xff, 0x68, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x05, 0xc0, 0x2e, 0x08, 0x05, 0xe0, - 0xb5, 0x00, 0x1c, 0x01, 0x48, 0x02, 0xf7, 0xff, - 0xfe, 0xe1, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x05, 0xe0, 0xb5, 0x00, 0x49, 0x08, - 0x68, 0x8a, 0x42, 0x90, 0xd3, 0x02, 0x68, 0xc9, - 0x42, 0x88, 0xd9, 0x03, 0xf7, 0xff, 0xff, 0x96, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x01, 0x48, 0x03, - 0xf7, 0xff, 0xff, 0x00, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x05, 0xc0, 0x2e, 0x08, 0x05, 0xe0, - 0xb5, 0xf0, 0x06, 0x07, 0x0e, 0x3f, 0x04, 0x09, - 0x0c, 0x09, 0xb0, 0x81, 0x91, 0x00, 0x06, 0x16, - 0x0e, 0x36, 0x00, 0xbd, 0x4c, 0x15, 0x59, 0x60, - 0x28, 0x00, 0xd1, 0x15, 0xf7, 0xfb, 0xfa, 0x06, - 0x22, 0x00, 0xb4, 0x04, 0x23, 0x00, 0x22, 0x02, - 0x99, 0x01, 0x1c, 0x38, 0xf0, 0x0a, 0xfd, 0x5c, - 0x23, 0x01, 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x01, - 0x1c, 0x38, 0xb0, 0x01, 0xf0, 0x0a, 0xff, 0x18, - 0x20, 0x03, 0x00, 0x71, 0x4a, 0x0a, 0x52, 0x50, - 0x59, 0x60, 0x30, 0x01, 0x51, 0x60, 0x48, 0x09, - 0x23, 0x14, 0x5e, 0xc1, 0x29, 0x00, 0xd1, 0x02, - 0x49, 0x07, 0x4a, 0x08, 0x65, 0xd1, 0x8a, 0x81, - 0x31, 0x01, 0x82, 0x81, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x02, 0xca, 0x84, - 0x2e, 0x08, 0x4a, 0x20, 0x2e, 0x08, 0x07, 0x68, - 0x2e, 0x02, 0xc8, 0x94, 0xa0, 0x00, 0x0d, 0x00, - 0xb5, 0xb0, 0x06, 0x07, 0x0e, 0x3f, 0x06, 0x0c, - 0x0e, 0x24, 0x00, 0xb9, 0x48, 0x1a, 0x58, 0x42, - 0x3a, 0x01, 0x50, 0x42, 0xd1, 0x20, 0x23, 0x01, - 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x02, 0x1c, 0x38, - 0xf0, 0x0a, 0xfe, 0xe6, 0x22, 0x00, 0xb4, 0x04, - 0x25, 0x00, 0x1c, 0x38, 0x1c, 0x2b, 0x49, 0x13, - 0xf0, 0x0a, 0xfd, 0x1a, 0x00, 0x61, 0xb0, 0x01, - 0x48, 0x11, 0x52, 0x45, 0x48, 0x0f, 0x4a, 0x11, - 0x52, 0x50, 0x00, 0x79, 0x4a, 0x10, 0x52, 0x50, - 0x00, 0x62, 0x19, 0x12, 0x00, 0x92, 0x49, 0x0f, - 0x18, 0x53, 0x81, 0x1d, 0x52, 0x88, 0x80, 0x58, - 0x48, 0x0d, 0x8a, 0x81, 0x39, 0x01, 0x82, 0x81, - 0x23, 0x14, 0x5e, 0xc0, 0x28, 0x00, 0xd1, 0x03, - 0x20, 0xd7, 0x00, 0xc0, 0x49, 0x09, 0x65, 0xc8, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x02, 0xca, 0x84, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x4a, 0x20, 0x2e, 0x08, 0x49, 0xe0, - 0x2e, 0x08, 0x49, 0xa8, 0x2e, 0x08, 0x48, 0x28, - 0x2e, 0x08, 0x07, 0x68, 0xa0, 0x00, 0x0d, 0x00, - 0xb5, 0xf0, 0x04, 0x06, 0x0c, 0x36, 0x04, 0x0c, - 0x0c, 0x24, 0x1c, 0x17, 0xb0, 0x8a, 0x46, 0x69, - 0x1c, 0x30, 0x1c, 0x22, 0xf0, 0x00, 0xf8, 0xb0, - 0x23, 0x01, 0x1c, 0x05, 0x42, 0xd8, 0xd1, 0x03, - 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x4b, 0x4e, 0x42, 0x9c, 0xd1, 0x06, 0xa8, 0x00, - 0x88, 0x00, 0x1c, 0x31, 0x1c, 0x2a, 0xf7, 0xff, - 0xff, 0x57, 0xe0, 0x7f, 0x20, 0x20, 0x40, 0x20, - 0x28, 0x20, 0xd1, 0x1f, 0x06, 0x2a, 0x0e, 0x12, - 0xa8, 0x00, 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, - 0x1c, 0x31, 0x1c, 0x23, 0xf7, 0xfd, 0xf8, 0x72, - 0x28, 0x00, 0xd0, 0x6f, 0x48, 0x42, 0x00, 0x69, - 0x4a, 0x42, 0x52, 0x50, 0xa9, 0x00, 0x88, 0x09, - 0x00, 0x49, 0x4a, 0x41, 0x52, 0x50, 0xa8, 0x00, - 0x88, 0x00, 0x1c, 0x29, 0xf0, 0x00, 0xf9, 0xce, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x0a, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x21, 0x00, - 0xaa, 0x01, 0x88, 0x3b, 0x0a, 0x1b, 0x70, 0x13, - 0x88, 0x3b, 0x93, 0x09, 0x32, 0x01, 0x06, 0x1b, - 0xd0, 0x02, 0x1c, 0x48, 0x06, 0x00, 0x0e, 0x00, - 0x9b, 0x09, 0x70, 0x13, 0x31, 0x01, 0x32, 0x01, - 0x37, 0x02, 0x29, 0x0e, 0xdb, 0xed, 0x21, 0x00, - 0x23, 0x00, 0x70, 0x13, 0x31, 0x01, 0x32, 0x01, - 0x29, 0x04, 0xdb, 0xfa, 0x21, 0x0c, 0x40, 0x21, - 0x29, 0x0c, 0xd1, 0x03, 0x04, 0x21, 0x0c, 0x09, - 0x24, 0x01, 0x43, 0x0c, 0x28, 0x06, 0xdc, 0x0e, - 0x06, 0x22, 0x0e, 0x12, 0xb4, 0x04, 0x06, 0x2a, - 0x0e, 0x12, 0xa8, 0x01, 0x88, 0x00, 0x06, 0x00, - 0x0e, 0x00, 0x1c, 0x31, 0xab, 0x02, 0xf7, 0xfc, - 0xfc, 0x4f, 0xb0, 0x01, 0xe0, 0x1e, 0x28, 0x0a, - 0xdc, 0x0e, 0x06, 0x22, 0x0e, 0x12, 0xb4, 0x04, - 0x06, 0x2a, 0x0e, 0x12, 0xa8, 0x01, 0x88, 0x00, - 0x06, 0x00, 0x0e, 0x00, 0x1c, 0x31, 0xab, 0x02, - 0xf7, 0xfc, 0xfc, 0x58, 0xb0, 0x01, 0xe0, 0x0d, - 0x06, 0x22, 0x0e, 0x12, 0xb4, 0x04, 0x06, 0x2a, - 0x0e, 0x12, 0xa8, 0x01, 0x88, 0x00, 0x06, 0x00, - 0x0e, 0x00, 0x1c, 0x31, 0xab, 0x02, 0xf7, 0xfc, - 0xfc, 0x63, 0xb0, 0x01, 0x28, 0x00, 0xd0, 0x05, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x0a, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xe7, 0xff, 0xa8, 0x00, - 0x88, 0x00, 0x00, 0x6a, 0x19, 0x52, 0x00, 0x92, - 0x49, 0x0a, 0x52, 0x88, 0x18, 0x50, 0x80, 0x46, - 0x80, 0x84, 0x49, 0x05, 0x80, 0xc1, 0x21, 0x01, - 0x81, 0x01, 0x1c, 0x28, 0xb0, 0x0a, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xb9, 0x6a, - 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x49, 0xe0, - 0x2e, 0x08, 0x49, 0xa8, 0x2e, 0x08, 0x48, 0x28, - 0xb4, 0xf0, 0x04, 0x04, 0x0c, 0x24, 0x04, 0x17, - 0x0c, 0x3f, 0xb0, 0x82, 0x48, 0x58, 0x22, 0x00, - 0x4d, 0x58, 0x95, 0x01, 0x1c, 0x06, 0x00, 0x53, - 0x9d, 0x01, 0x5a, 0xed, 0x42, 0xb5, 0xd1, 0x02, - 0x04, 0x10, 0x0c, 0x00, 0xe0, 0x02, 0x32, 0x01, - 0x2a, 0x20, 0xdb, 0xf4, 0x42, 0xb0, 0xd1, 0x04, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, - 0x47, 0x70, 0x80, 0x0e, 0x4a, 0x4e, 0x92, 0x00, - 0x4d, 0x4e, 0x4a, 0x4f, 0x4b, 0x4f, 0x42, 0x9f, - 0xd1, 0x32, 0x23, 0x00, 0x00, 0x5f, 0x5b, 0xd7, - 0x42, 0xa7, 0xd1, 0x0a, 0x00, 0x5f, 0x5b, 0xef, - 0x2f, 0x03, 0xd1, 0x01, 0x80, 0x0b, 0xe0, 0x07, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, - 0x47, 0x70, 0x33, 0x01, 0x2b, 0x1c, 0xdb, 0xed, - 0x88, 0x0f, 0x4b, 0x3f, 0x42, 0x9f, 0xd1, 0x0a, - 0x27, 0x00, 0x00, 0x7b, 0x5a, 0xd6, 0x4b, 0x3c, - 0x42, 0x9e, 0xd1, 0x01, 0x80, 0x0f, 0xe0, 0x02, - 0x37, 0x01, 0x2f, 0x1c, 0xdb, 0xf5, 0x88, 0x0f, - 0x4b, 0x37, 0x42, 0x9f, 0xd1, 0x04, 0x20, 0x00, - 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, - 0x23, 0x03, 0x00, 0x47, 0x9e, 0x00, 0x53, 0xf3, - 0x88, 0x0f, 0x00, 0x7f, 0x53, 0xeb, 0xe0, 0x54, - 0x23, 0x20, 0x40, 0x3b, 0x2b, 0x20, 0xd1, 0x1e, - 0x23, 0x00, 0x00, 0x5f, 0x5b, 0xd7, 0x42, 0xa7, - 0xd1, 0x04, 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, - 0xbc, 0xf0, 0x47, 0x70, 0x33, 0x01, 0x2b, 0x1c, - 0xdb, 0xf3, 0x27, 0x00, 0x00, 0x7b, 0x5a, 0xd5, - 0x42, 0xb5, 0xd1, 0x01, 0x80, 0x0f, 0xe0, 0x02, - 0x37, 0x01, 0x2f, 0x1c, 0xdb, 0xf6, 0x88, 0x0f, - 0x42, 0xb7, 0xd1, 0x36, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, 0x23, 0x00, - 0x00, 0x5f, 0x5b, 0xd7, 0x42, 0xa7, 0xd1, 0x0a, - 0x00, 0x5f, 0x5b, 0xef, 0x2f, 0x02, 0xd1, 0x01, - 0x80, 0x0b, 0xe0, 0x07, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, 0x33, 0x01, - 0x2b, 0x1c, 0xdb, 0xed, 0x88, 0x0f, 0x4b, 0x14, - 0x42, 0x9f, 0xd1, 0x0a, 0x27, 0x00, 0x00, 0x7b, - 0x5a, 0xd6, 0x4b, 0x11, 0x42, 0x9e, 0xd1, 0x01, - 0x80, 0x0f, 0xe0, 0x02, 0x37, 0x01, 0x2f, 0x1c, - 0xdb, 0xf5, 0x88, 0x0f, 0x4b, 0x0c, 0x42, 0x9f, - 0xd1, 0x04, 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, - 0xbc, 0xf0, 0x47, 0x70, 0x23, 0x02, 0x00, 0x47, - 0x9e, 0x00, 0x53, 0xf3, 0x88, 0x0f, 0x00, 0x7f, - 0x53, 0xeb, 0x00, 0x43, 0x9d, 0x01, 0x52, 0xec, - 0x88, 0x09, 0x00, 0x49, 0x52, 0x54, 0x04, 0x00, - 0x14, 0x00, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, - 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x49, 0xe0, - 0x2e, 0x08, 0x4a, 0x20, 0x2e, 0x08, 0x4a, 0x60, - 0x2e, 0x08, 0x49, 0xa8, 0x00, 0x00, 0xb9, 0x6a, - 0xb5, 0xf0, 0x04, 0x07, 0x0c, 0x3f, 0xb0, 0x81, - 0x4a, 0x34, 0x92, 0x00, 0x1c, 0x11, 0x42, 0x97, - 0xd0, 0x01, 0x2f, 0x20, 0xdb, 0x05, 0x20, 0x00, - 0x43, 0xc0, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x7c, 0x4a, 0x2e, 0x5b, 0x10, - 0x42, 0x88, 0xd1, 0x05, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x49, 0x28, 0x53, 0x11, 0x23, 0x00, 0x49, 0x29, - 0x00, 0x5e, 0x5b, 0x8e, 0x42, 0x86, 0xd1, 0x02, - 0x04, 0x1d, 0x0c, 0x2d, 0xe0, 0x02, 0x33, 0x01, - 0x2b, 0x1c, 0xdb, 0xf5, 0x23, 0x00, 0x00, 0x5e, - 0x5b, 0x96, 0x42, 0x86, 0xd1, 0x03, 0x04, 0x1a, - 0x0c, 0x12, 0x92, 0x00, 0xe0, 0x02, 0x33, 0x01, - 0x2b, 0x20, 0xdb, 0xf4, 0x9a, 0x00, 0x4e, 0x1b, - 0x42, 0xb2, 0xd1, 0x0d, 0x22, 0x00, 0x00, 0x53, - 0x5a, 0xcb, 0x42, 0x83, 0xd1, 0x05, 0x23, 0x00, - 0x00, 0x50, 0x4a, 0x19, 0x52, 0x13, 0x52, 0x0e, - 0xe0, 0x02, 0x32, 0x01, 0x2a, 0x1c, 0xdb, 0xf2, - 0x4e, 0x16, 0x5b, 0x30, 0x28, 0x02, 0xd1, 0x05, - 0x23, 0x00, 0x53, 0x33, 0x1c, 0x28, 0x1c, 0x39, - 0xf0, 0x00, 0xf8, 0x38, 0x5b, 0x30, 0x28, 0x01, - 0xd1, 0x0a, 0x1c, 0x38, 0xf7, 0xfc, 0xff, 0xe6, - 0x28, 0x00, 0xd0, 0x05, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x5b, 0x30, 0x28, 0x03, 0xd1, 0x03, 0x1c, 0x28, - 0x1c, 0x39, 0xf7, 0xff, 0xfd, 0xcd, 0x04, 0x38, - 0x14, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x49, 0xe0, 0x2e, 0x08, 0x49, 0xa8, - 0x2e, 0x08, 0x4a, 0x60, 0x2e, 0x08, 0x4a, 0x20, - 0x04, 0x01, 0x0c, 0x09, 0x20, 0x02, 0x00, 0x4b, - 0x18, 0x5b, 0x00, 0x9b, 0x4a, 0x03, 0x18, 0x99, - 0x81, 0x08, 0x48, 0x03, 0x52, 0xd0, 0x80, 0x48, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x48, 0x28, - 0x00, 0x00, 0xff, 0xff, 0xb5, 0x80, 0x04, 0x0f, - 0x0c, 0x3f, 0x06, 0x39, 0x0e, 0x09, 0x06, 0x00, - 0x0e, 0x00, 0xf7, 0xfc, 0xfc, 0x1b, 0x20, 0x00, - 0x00, 0x7b, 0x19, 0xdb, 0x00, 0x9b, 0x4a, 0x04, - 0x18, 0x99, 0x81, 0x08, 0x48, 0x03, 0x52, 0xd0, - 0x80, 0x48, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x48, 0x28, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0x80, 0x04, 0x09, 0x0c, 0x09, 0x78, 0x42, - 0x02, 0x12, 0x78, 0x83, 0x43, 0x1a, 0x05, 0x12, - 0x0d, 0x12, 0x27, 0x00, 0x43, 0xff, 0x32, 0x03, - 0x42, 0x8a, 0xd0, 0x03, 0x1c, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0xf0, 0x0b, 0xf9, 0xa0, - 0x28, 0x00, 0xd0, 0x03, 0x1c, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x9c, 0x09, - 0x04, 0x00, 0x0c, 0x00, 0xb0, 0x81, 0x90, 0x00, - 0x06, 0x09, 0x0e, 0x09, 0x06, 0x12, 0x0e, 0x12, - 0xb0, 0x88, 0x4f, 0x16, 0x68, 0xb8, 0x28, 0x0c, - 0xdb, 0x06, 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x09, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x00, 0x23, 0x00, 0x00, 0x45, 0x46, 0x6e, - 0x53, 0x73, 0x30, 0x01, 0x04, 0x00, 0x14, 0x00, - 0x28, 0x10, 0xdb, 0xf7, 0x02, 0x08, 0x43, 0x10, - 0xab, 0x00, 0x80, 0x18, 0x46, 0x6a, 0x21, 0x04, - 0x98, 0x08, 0xf7, 0xff, 0xfd, 0x95, 0x28, 0x00, - 0xda, 0x01, 0xb0, 0x09, 0xe7, 0xe4, 0x00, 0x81, - 0x4a, 0x05, 0x50, 0x54, 0x9b, 0x0c, 0x4a, 0x05, - 0x50, 0x53, 0x68, 0xb9, 0x31, 0x01, 0x60, 0xb9, - 0xb0, 0x09, 0xe7, 0xd9, 0x2e, 0x08, 0x07, 0x80, - 0x2e, 0x08, 0x4b, 0x18, 0x2e, 0x08, 0x4a, 0x98, - 0xb5, 0x80, 0x04, 0x07, 0x14, 0x3f, 0xd5, 0x04, - 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0xf4, - 0x20, 0x00, 0x00, 0xb9, 0x4a, 0x05, 0x50, 0x50, - 0x4a, 0x05, 0x50, 0x50, 0x49, 0x05, 0x68, 0x8a, - 0x3a, 0x01, 0x60, 0x8a, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x4a, 0x98, - 0x2e, 0x08, 0x4b, 0x18, 0x2e, 0x08, 0x07, 0x80, - 0xb5, 0x90, 0x27, 0x00, 0x4c, 0x08, 0x00, 0xb8, - 0x58, 0x20, 0x28, 0x00, 0xd0, 0x02, 0x1c, 0x38, - 0xf7, 0xff, 0xff, 0xd6, 0x37, 0x01, 0x2f, 0x20, - 0xdb, 0xf5, 0x20, 0x00, 0x49, 0x03, 0x60, 0xc8, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x4a, 0x98, 0x2e, 0x08, 0x07, 0x80, - 0xb5, 0x00, 0xf7, 0xff, 0xff, 0xe5, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0xff, 0x04, 0x00, 0x14, 0x00, - 0xb0, 0x83, 0x90, 0x00, 0x1c, 0x0f, 0x04, 0x11, - 0x0c, 0x09, 0x24, 0x00, 0x1c, 0x38, 0x1c, 0x0d, - 0xb0, 0x81, 0xf7, 0xff, 0xff, 0x59, 0x1c, 0x01, - 0x20, 0x00, 0x29, 0x00, 0xd0, 0x04, 0xb0, 0x04, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x78, 0xf9, 0x02, 0x09, 0x79, 0x3a, 0x43, 0x11, - 0x04, 0x09, 0x0c, 0x09, 0x9b, 0x07, 0x88, 0x1a, - 0x42, 0x91, 0xd0, 0x01, 0xb0, 0x04, 0xe7, 0xef, - 0x7a, 0x39, 0x02, 0x09, 0x7a, 0x7a, 0x43, 0x11, - 0x04, 0xc9, 0x0c, 0xc9, 0x91, 0x00, 0x7a, 0xb9, - 0x02, 0x09, 0x7a, 0xfa, 0x43, 0x11, 0x05, 0x0b, - 0x0d, 0x1b, 0x1d, 0xf9, 0x31, 0x05, 0x27, 0x00, - 0x1d, 0xd8, 0x30, 0x09, 0x1a, 0x2a, 0x2b, 0x00, - 0xdd, 0x0a, 0x78, 0x08, 0x28, 0x09, 0xd1, 0x00, - 0x37, 0x01, 0x78, 0x48, 0x1c, 0x85, 0x1b, 0x5b, - 0x18, 0x40, 0x1c, 0x81, 0x2b, 0x00, 0xdc, 0xf4, - 0x2a, 0x00, 0xdd, 0x36, 0x48, 0x2c, 0x88, 0x06, - 0x96, 0x03, 0x88, 0x85, 0x95, 0x02, 0x78, 0xc8, - 0x02, 0x00, 0x79, 0x0b, 0x43, 0x18, 0x05, 0x00, - 0x0d, 0x00, 0x78, 0x0b, 0x2b, 0x01, 0xd0, 0x01, - 0x2b, 0x02, 0xd1, 0x06, 0x78, 0x4d, 0x02, 0x2d, - 0x78, 0x8e, 0x43, 0x35, 0x04, 0xed, 0x0c, 0xed, - 0x9e, 0x03, 0x2b, 0x04, 0xd0, 0x01, 0x2b, 0x03, - 0xd1, 0x09, 0x78, 0x4b, 0x02, 0x1b, 0x78, 0x8d, - 0x43, 0x2b, 0x04, 0xdb, 0x0c, 0xdb, 0x9d, 0x02, - 0x42, 0xab, 0xd1, 0x00, 0x24, 0x01, 0x1d, 0x43, - 0x1a, 0xd2, 0x31, 0x05, 0x28, 0x00, 0xdd, 0x0a, - 0x78, 0x0b, 0x2b, 0x09, 0xd1, 0x00, 0x37, 0x01, - 0x78, 0x4b, 0x1c, 0x9d, 0x1b, 0x40, 0x18, 0x59, - 0x31, 0x02, 0x28, 0x00, 0xdc, 0xf4, 0x2a, 0x00, - 0xdc, 0xcd, 0x2c, 0x00, 0xd0, 0x17, 0xf7, 0xff, - 0xff, 0x63, 0x99, 0x00, 0x48, 0x0f, 0x80, 0x01, - 0x2f, 0x00, 0xd0, 0x0d, 0x20, 0x0a, 0xb0, 0x84, - 0xab, 0x00, 0x80, 0x18, 0x20, 0x02, 0x70, 0x98, - 0x9b, 0x0b, 0x93, 0x01, 0x46, 0x69, 0x20, 0x75, - 0xf0, 0x04, 0xff, 0x76, 0xb0, 0x04, 0xe0, 0x07, - 0xf7, 0xfa, 0xf8, 0xf4, 0xe0, 0x04, 0x98, 0x01, - 0xf7, 0xff, 0xff, 0x2a, 0xf0, 0x00, 0xf8, 0x22, - 0x20, 0x00, 0xb0, 0x04, 0xe7, 0x74, 0x00, 0x00, - 0x2e, 0x08, 0x07, 0x80, 0x2e, 0x08, 0x00, 0x08, - 0xb4, 0x90, 0x04, 0x02, 0x0c, 0x12, 0x04, 0x0f, - 0x0c, 0x3f, 0x4b, 0x07, 0x68, 0xd8, 0x28, 0x80, - 0xda, 0x08, 0x2a, 0x00, 0xd0, 0x06, 0x00, 0x41, - 0x4c, 0x04, 0x52, 0x67, 0x4f, 0x04, 0x52, 0x7a, - 0x30, 0x01, 0x60, 0xd8, 0xbc, 0x90, 0x47, 0x70, - 0x2e, 0x08, 0x07, 0x80, 0x2e, 0x08, 0x4b, 0x98, - 0x2e, 0x08, 0x4c, 0x98, 0xb5, 0x90, 0x4f, 0x13, - 0x24, 0x00, 0x43, 0xe4, 0x68, 0xf8, 0x28, 0x00, - 0xd1, 0x03, 0x1c, 0x20, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x40, 0x49, 0x0e, 0x18, 0x41, - 0x1e, 0x8a, 0xb4, 0x04, 0x49, 0x0d, 0x18, 0x40, - 0x38, 0x40, 0x8f, 0xc0, 0x4b, 0x0c, 0x22, 0xff, - 0x21, 0x02, 0xf7, 0xff, 0xfe, 0xaf, 0xb0, 0x01, - 0x28, 0x00, 0xda, 0x03, 0x1c, 0x20, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x68, 0xf8, 0x38, 0x01, - 0x60, 0xf8, 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x07, 0x80, - 0x2e, 0x08, 0x4c, 0x98, 0x2e, 0x08, 0x4b, 0x98, - 0x2e, 0x00, 0x62, 0xef, 0xb5, 0xf0, 0x04, 0x05, - 0x14, 0x2d, 0x1c, 0x0f, 0x04, 0x11, 0x0c, 0x09, - 0x1c, 0x0e, 0x4c, 0x28, 0x23, 0x02, 0x69, 0x20, - 0x42, 0xd8, 0xd0, 0x04, 0x1c, 0x38, 0xf7, 0xff, - 0xfe, 0x6b, 0x28, 0x00, 0xd0, 0x06, 0x1c, 0x28, - 0xf7, 0xff, 0xfe, 0xc2, 0x20, 0x00, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x79, 0xb8, 0x69, 0x21, - 0x42, 0x88, 0xd1, 0x09, 0x20, 0x01, 0x43, 0xc0, - 0x61, 0x20, 0x1c, 0x28, 0xf7, 0xff, 0xfe, 0xb4, - 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x23, 0x01, 0x42, 0xd9, 0xd1, 0x02, 0x61, 0x20, - 0x20, 0x00, 0x60, 0xe0, 0x37, 0x08, 0x1f, 0xf4, - 0x3c, 0x05, 0x2c, 0x00, 0xdd, 0x11, 0x78, 0x38, - 0x02, 0x00, 0x78, 0x79, 0x43, 0x08, 0x04, 0x00, - 0x0c, 0x00, 0x78, 0xb9, 0x02, 0x09, 0x78, 0xfa, - 0x43, 0x11, 0x04, 0xc9, 0x0c, 0xc9, 0xf7, 0xff, - 0xff, 0x77, 0x37, 0x04, 0x3c, 0x04, 0x2c, 0x00, - 0xdc, 0xed, 0xf7, 0xff, 0xff, 0x8b, 0xf7, 0xff, - 0xff, 0x89, 0xf7, 0xff, 0xff, 0x87, 0xf7, 0xff, - 0xff, 0x85, 0xf7, 0xff, 0xff, 0x83, 0xf7, 0xff, - 0xff, 0x81, 0xf7, 0xff, 0xff, 0x7f, 0xf7, 0xff, - 0xff, 0x7d, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x07, 0x80, - 0xb5, 0xf0, 0x04, 0x04, 0x0c, 0x24, 0x04, 0x0d, - 0x0c, 0x2d, 0x26, 0x00, 0x43, 0xf6, 0x4f, 0x0f, - 0x62, 0x3e, 0x61, 0xfe, 0x61, 0xbe, 0xf7, 0xff, - 0xfe, 0x8f, 0x2d, 0x00, 0xd0, 0x13, 0x2c, 0x00, - 0xd0, 0x11, 0x0c, 0xf0, 0x42, 0x85, 0xd0, 0x0e, - 0x42, 0x84, 0xd0, 0x0c, 0x80, 0x3c, 0x80, 0xbd, - 0x20, 0x00, 0x61, 0x3e, 0x22, 0x00, 0x61, 0x78, - 0xb4, 0x04, 0x4b, 0x05, 0x22, 0xff, 0x21, 0x00, - 0xf7, 0xff, 0xfe, 0x1c, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x07, 0x80, - 0x2e, 0x00, 0x64, 0xc9, 0x56, 0x47, 0x41, 0x38, - 0x78, 0x31, 0x36, 0x00, 0xb5, 0x00, 0xb0, 0x81, - 0x48, 0x05, 0x69, 0xc0, 0x68, 0x80, 0x46, 0x6b, - 0x22, 0x00, 0x21, 0x00, 0xf0, 0x13, 0xfa, 0x22, - 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x92, 0x7c, 0xb5, 0xf0, 0x27, 0x00, - 0xb0, 0x85, 0x97, 0x00, 0x26, 0x10, 0x96, 0x01, - 0x25, 0x05, 0x01, 0xed, 0x95, 0x02, 0x20, 0xff, - 0x30, 0xd1, 0x90, 0x03, 0x97, 0x04, 0x22, 0x00, - 0x21, 0x00, 0xb4, 0x06, 0x4c, 0x0d, 0x69, 0xe0, - 0x68, 0x81, 0x1c, 0x08, 0xaa, 0x02, 0x1c, 0x3b, - 0xf0, 0x13, 0xfc, 0x8a, 0xb0, 0x02, 0x97, 0x00, - 0x20, 0xff, 0x30, 0xd1, 0x90, 0x01, 0x95, 0x02, - 0x96, 0x03, 0x97, 0x04, 0x69, 0xe0, 0x68, 0x80, - 0x46, 0x69, 0xf0, 0x13, 0xfb, 0xbb, 0xf7, 0xff, - 0xff, 0xc9, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0x90, 0x20, 0x07, 0xb0, 0x85, 0xf0, 0x08, - 0xff, 0xaf, 0x24, 0xff, 0x34, 0xe1, 0x22, 0x05, - 0x01, 0xd2, 0x21, 0x00, 0x20, 0x07, 0x1c, 0x23, - 0xf0, 0x08, 0xff, 0xbe, 0x27, 0x00, 0x22, 0x00, - 0x21, 0x02, 0x20, 0x07, 0x1c, 0x3b, 0xf0, 0x09, - 0xfb, 0x67, 0x22, 0x01, 0x21, 0x01, 0x20, 0x07, - 0x1c, 0x3b, 0xf0, 0x09, 0xfb, 0x19, 0x22, 0x32, - 0x21, 0x32, 0x20, 0x07, 0xf0, 0x09, 0xf8, 0x74, - 0x97, 0x00, 0x97, 0x01, 0x20, 0x05, 0x01, 0xc0, - 0x90, 0x02, 0x94, 0x03, 0x97, 0x04, 0x48, 0x06, - 0x69, 0xc0, 0x68, 0x80, 0x46, 0x69, 0xf0, 0x13, - 0xfb, 0x85, 0xf7, 0xff, 0xff, 0x93, 0xb0, 0x05, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x92, 0x7c, 0xb4, 0x80, 0x01, 0x00, - 0x4b, 0x2a, 0x18, 0xc0, 0x4b, 0x2a, 0x69, 0xdb, - 0x69, 0x9f, 0x00, 0x8b, 0x18, 0x59, 0x02, 0x09, - 0x18, 0x89, 0x18, 0x79, 0x78, 0x02, 0x70, 0x0a, - 0x78, 0x42, 0x1d, 0xcb, 0x33, 0x39, 0x74, 0x1a, - 0x78, 0x82, 0x1d, 0xcb, 0x33, 0x99, 0x70, 0x1a, - 0x78, 0xc2, 0x1d, 0xcb, 0x33, 0xd9, 0x74, 0x1a, - 0x79, 0x02, 0x1d, 0xcb, 0x33, 0xff, 0x33, 0x3a, - 0x70, 0x1a, 0x79, 0x42, 0x1d, 0xcb, 0x33, 0xff, - 0x33, 0x7a, 0x74, 0x1a, 0x79, 0x82, 0x1d, 0xcb, - 0x33, 0xff, 0x33, 0xda, 0x70, 0x1a, 0x79, 0xc2, - 0x23, 0x11, 0x01, 0x5b, 0x18, 0xcb, 0x74, 0x1a, - 0x7a, 0x02, 0x23, 0x05, 0x01, 0xdb, 0x18, 0xcb, - 0x70, 0x1a, 0x7a, 0x42, 0x23, 0x0b, 0x01, 0x9b, - 0x18, 0xcb, 0x74, 0x1a, 0x7a, 0x82, 0x23, 0x19, - 0x01, 0x5b, 0x18, 0xcb, 0x70, 0x1a, 0x7a, 0xc2, - 0x23, 0x1b, 0x01, 0x5b, 0x18, 0xcb, 0x74, 0x1a, - 0x7b, 0x02, 0x23, 0x0f, 0x01, 0x9b, 0x18, 0xcb, - 0x70, 0x1a, 0x7b, 0x42, 0x23, 0x01, 0x02, 0x9b, - 0x18, 0xcb, 0x74, 0x1a, 0x7b, 0x82, 0x23, 0x23, - 0x01, 0x5b, 0x18, 0xcb, 0x70, 0x1a, 0x7b, 0xc0, - 0x23, 0x25, 0x01, 0x5b, 0x18, 0xc9, 0x74, 0x08, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x07, 0xa4, - 0x2e, 0x08, 0x92, 0x7c, 0xb5, 0xb0, 0x23, 0x00, - 0x1c, 0x07, 0x56, 0xc0, 0x1c, 0x14, 0x1c, 0x0d, - 0x28, 0x00, 0xd0, 0x0f, 0x20, 0x50, 0x1c, 0x21, - 0xf0, 0x17, 0xfd, 0x3e, 0x19, 0x41, 0x23, 0x00, - 0x56, 0xf8, 0x1c, 0x22, 0xf7, 0xff, 0xff, 0x92, - 0x23, 0x00, 0x37, 0x01, 0x56, 0xf8, 0x34, 0x01, - 0x28, 0x00, 0xd1, 0xef, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x90, 0x06, 0x00, 0x0e, 0x00, - 0x04, 0x09, 0x14, 0x09, 0x04, 0x17, 0x14, 0x3f, - 0x09, 0x03, 0xb0, 0x81, 0x4a, 0x08, 0x5c, 0xd4, - 0xab, 0x00, 0x70, 0x1c, 0x07, 0x00, 0x0f, 0x00, - 0x5c, 0x10, 0x70, 0x58, 0x20, 0x00, 0x70, 0x98, - 0x46, 0x68, 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0xce, - 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x17, 0xbc, 0xb5, 0x90, 0x04, 0x00, - 0x0c, 0x00, 0x04, 0x09, 0x14, 0x09, 0x04, 0x17, - 0x14, 0x3f, 0x0b, 0x03, 0xb0, 0x82, 0x4a, 0x0f, - 0x5c, 0xd4, 0xab, 0x00, 0x70, 0x1c, 0x0a, 0x03, - 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xd4, 0xab, 0x00, - 0x70, 0x5c, 0x09, 0x03, 0x07, 0x1b, 0x0f, 0x1b, - 0x5c, 0xd4, 0xab, 0x00, 0x70, 0x9c, 0x07, 0x00, - 0x0f, 0x00, 0x5c, 0x10, 0x70, 0xd8, 0x20, 0x00, - 0x71, 0x18, 0x46, 0x68, 0x1c, 0x3a, 0xf7, 0xff, - 0xff, 0xa5, 0xb0, 0x02, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x17, 0xbc, - 0xb5, 0x90, 0x04, 0x0f, 0x14, 0x3f, 0x04, 0x12, - 0x14, 0x12, 0x0f, 0x03, 0xb0, 0x83, 0x49, 0x1b, - 0x5c, 0xcc, 0xab, 0x00, 0x70, 0x1c, 0x0e, 0x03, - 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xcc, 0xab, 0x00, - 0x70, 0x5c, 0x0d, 0x03, 0x07, 0x1b, 0x0f, 0x1b, - 0x5c, 0xcc, 0xab, 0x00, 0x70, 0x9c, 0x0c, 0x03, - 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xcc, 0xab, 0x00, - 0x70, 0xdc, 0x0b, 0x03, 0x07, 0x1b, 0x0f, 0x1b, - 0x5c, 0xcc, 0xab, 0x01, 0x70, 0x1c, 0x0a, 0x03, - 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xcc, 0xab, 0x01, - 0x70, 0x5c, 0x09, 0x03, 0x07, 0x1b, 0x0f, 0x1b, - 0x5c, 0xcc, 0xab, 0x01, 0x70, 0x9c, 0x07, 0x00, - 0x0f, 0x00, 0x5c, 0x08, 0x70, 0xd8, 0x20, 0x00, - 0x71, 0x18, 0x46, 0x68, 0x1c, 0x39, 0xf7, 0xff, - 0xff, 0x65, 0xb0, 0x03, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x17, 0xbc, - 0xb5, 0xf0, 0x1c, 0x04, 0x04, 0x10, 0x14, 0x00, - 0xb0, 0x81, 0x90, 0x00, 0x04, 0x1e, 0x14, 0x36, - 0x22, 0x3c, 0x1c, 0x20, 0x1c, 0x0f, 0xb0, 0x85, - 0xf0, 0x17, 0xfc, 0xd2, 0xa3, 0x72, 0xcb, 0x0c, - 0xf0, 0x17, 0xfc, 0xde, 0xf0, 0x17, 0xfc, 0xe0, - 0x4d, 0x71, 0x5c, 0x28, 0xab, 0x02, 0x70, 0x18, - 0x22, 0x38, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x17, - 0xfc, 0xc3, 0xa3, 0x6b, 0xcb, 0x0c, 0xf0, 0x17, - 0xfc, 0xcf, 0xf0, 0x17, 0xfc, 0xd1, 0x5c, 0x28, - 0xab, 0x02, 0x70, 0x58, 0x22, 0x34, 0x1c, 0x20, - 0x1c, 0x39, 0xf0, 0x17, 0xfc, 0xb5, 0xa3, 0x64, - 0xcb, 0x0c, 0xf0, 0x17, 0xfc, 0xc1, 0xf0, 0x17, - 0xfc, 0xc3, 0x5c, 0x28, 0xab, 0x02, 0x70, 0x98, - 0x22, 0x30, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x17, - 0xfc, 0xa7, 0xa3, 0x5d, 0xcb, 0x0c, 0xf0, 0x17, - 0xfc, 0xb3, 0xf0, 0x17, 0xfc, 0xb5, 0x5c, 0x28, - 0xab, 0x02, 0x70, 0xd8, 0x22, 0x2c, 0x1c, 0x20, - 0x1c, 0x39, 0xf0, 0x17, 0xfc, 0x99, 0xa3, 0x56, - 0xcb, 0x0c, 0xf0, 0x17, 0xfc, 0xa5, 0xf0, 0x17, - 0xfc, 0xa7, 0x5c, 0x28, 0xab, 0x03, 0x70, 0x18, - 0x22, 0x28, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x17, - 0xfc, 0x8b, 0xa3, 0x4f, 0xcb, 0x0c, 0xf0, 0x17, - 0xfc, 0x97, 0xf0, 0x17, 0xfc, 0x99, 0x5c, 0x28, - 0xab, 0x03, 0x70, 0x58, 0x22, 0x24, 0x1c, 0x20, - 0x1c, 0x39, 0xf0, 0x17, 0xfc, 0x7d, 0xa3, 0x48, - 0xcb, 0x0c, 0xf0, 0x17, 0xfc, 0x89, 0xf0, 0x17, - 0xfc, 0x8b, 0x5c, 0x28, 0xab, 0x03, 0x70, 0x98, - 0x22, 0x20, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x17, - 0xfc, 0x6f, 0xa3, 0x41, 0xcb, 0x0c, 0xf0, 0x17, - 0xfc, 0x7b, 0xf0, 0x17, 0xfc, 0x7d, 0x5c, 0x28, - 0xab, 0x03, 0x70, 0xd8, 0x22, 0x1c, 0x1c, 0x20, - 0x1c, 0x39, 0xf0, 0x17, 0xfc, 0x61, 0xa3, 0x3a, - 0xcb, 0x0c, 0xf0, 0x17, 0xfc, 0x6d, 0xf0, 0x17, - 0xfc, 0x6f, 0x5c, 0x28, 0xab, 0x00, 0x70, 0x18, - 0x22, 0x18, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x17, - 0xfc, 0x53, 0xa3, 0x33, 0xcb, 0x0c, 0xf0, 0x17, - 0xfc, 0x5f, 0xf0, 0x17, 0xfc, 0x61, 0x5c, 0x28, - 0xab, 0x00, 0x70, 0x58, 0x22, 0x14, 0x1c, 0x20, - 0x1c, 0x39, 0xf0, 0x17, 0xfc, 0x45, 0xa3, 0x2c, - 0xcb, 0x0c, 0xf0, 0x17, 0xfc, 0x51, 0xf0, 0x17, - 0xfc, 0x53, 0x5c, 0x28, 0xab, 0x00, 0x70, 0x98, - 0x22, 0x10, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x17, - 0xfc, 0x37, 0xa3, 0x25, 0xcb, 0x0c, 0xf0, 0x17, - 0xfc, 0x43, 0xf0, 0x17, 0xfc, 0x45, 0x5c, 0x28, - 0xab, 0x00, 0x70, 0xd8, 0x22, 0x0c, 0x1c, 0x20, - 0x1c, 0x39, 0xf0, 0x17, 0xfc, 0x29, 0xa3, 0x1e, - 0xcb, 0x0c, 0xf0, 0x17, 0xfc, 0x35, 0xf0, 0x17, - 0xfc, 0x37, 0x5c, 0x28, 0xab, 0x01, 0x70, 0x18, - 0x22, 0x08, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x17, - 0xfc, 0x1b, 0xa3, 0x17, 0xcb, 0x0c, 0xf0, 0x17, - 0xfc, 0x27, 0xf0, 0x17, 0xfc, 0x29, 0x5c, 0x28, - 0xab, 0x01, 0x70, 0x58, 0x22, 0x04, 0x1c, 0x20, - 0x1c, 0x39, 0xf0, 0x17, 0xfc, 0x0d, 0xa3, 0x10, - 0xcb, 0x0c, 0xf0, 0x17, 0xfc, 0x19, 0xf0, 0x17, - 0xfc, 0x1b, 0x5c, 0x28, 0xab, 0x01, 0x70, 0x98, - 0xa3, 0x0b, 0xcb, 0x0c, 0x1c, 0x20, 0x1c, 0x39, - 0xf0, 0x17, 0xfc, 0x0e, 0xf0, 0x17, 0xfc, 0x10, - 0x5c, 0x28, 0xab, 0x01, 0x70, 0xd8, 0x20, 0x00, - 0x73, 0x18, 0x46, 0x68, 0x99, 0x05, 0x1c, 0x32, - 0x33, 0x0c, 0xf7, 0xff, 0xfe, 0x6f, 0xb0, 0x06, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0x17, 0xbc, 0x21, 0x00, 0xb0, 0x81, - 0x91, 0x00, 0xe0, 0x02, 0x99, 0x00, 0x31, 0x01, - 0x91, 0x00, 0x99, 0x00, 0x42, 0x81, 0xdb, 0xf9, - 0xb0, 0x01, 0x47, 0x70, 0xb5, 0xf0, 0x06, 0x06, - 0x0e, 0x36, 0x25, 0x02, 0x48, 0x0d, 0x60, 0x05, - 0x27, 0x07, 0x4c, 0x0d, 0x60, 0x25, 0x20, 0x01, - 0x40, 0xb8, 0x40, 0x30, 0xd0, 0x01, 0x20, 0x03, - 0xe0, 0x00, 0x20, 0x02, 0x49, 0x09, 0x60, 0x08, - 0x20, 0x0a, 0xf7, 0xff, 0xff, 0xdf, 0x20, 0x03, - 0x60, 0x20, 0x20, 0x0c, 0xf7, 0xff, 0xff, 0xda, - 0x3f, 0x01, 0xd5, 0xeb, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x6e, 0x00, 0x14, 0x00, - 0x6e, 0x00, 0x13, 0x00, 0x6e, 0x00, 0x12, 0x00, - 0xb5, 0x80, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x0f, - 0x0e, 0x3f, 0x06, 0x00, 0x0e, 0x00, 0x23, 0x80, - 0x43, 0x18, 0xf7, 0xff, 0xff, 0xcf, 0x20, 0x14, - 0xf7, 0xff, 0xff, 0xc0, 0x1c, 0x38, 0xf7, 0xff, - 0xff, 0xc9, 0x20, 0x03, 0x49, 0x04, 0x60, 0x08, - 0x20, 0x00, 0x49, 0x04, 0x60, 0x08, 0x49, 0x04, - 0x60, 0x08, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x6e, 0x00, 0x14, 0x00, 0x6e, 0x00, 0x12, 0x00, - 0x6e, 0x00, 0x13, 0x00, 0xb5, 0x00, 0x21, 0x01, - 0x20, 0x02, 0xf7, 0xff, 0xff, 0xd9, 0x48, 0x10, - 0xf7, 0xff, 0xff, 0xa4, 0x21, 0x00, 0x20, 0x02, - 0xf7, 0xff, 0xff, 0xd2, 0x48, 0x0d, 0xf7, 0xff, - 0xff, 0x9d, 0x21, 0x44, 0x20, 0x00, 0xf7, 0xff, - 0xff, 0xcb, 0x21, 0x81, 0x20, 0x01, 0xf7, 0xff, - 0xff, 0xc7, 0x21, 0xf0, 0x20, 0x02, 0xf7, 0xff, - 0xff, 0xc3, 0x21, 0x45, 0x20, 0x03, 0xf7, 0xff, - 0xff, 0xbf, 0x21, 0x45, 0x20, 0x04, 0xf7, 0xff, - 0xff, 0xbb, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x4e, 0x20, 0x00, 0x00, 0xc3, 0x50, - 0xb5, 0x80, 0x06, 0x07, 0x0e, 0x3f, 0x06, 0x08, - 0x0e, 0x00, 0x28, 0x45, 0xdd, 0x00, 0x20, 0x45, - 0x1d, 0xc1, 0x31, 0x79, 0x20, 0x03, 0xf7, 0xff, - 0xff, 0xa7, 0x2f, 0x45, 0xdd, 0x00, 0x27, 0x45, - 0x20, 0x04, 0x1d, 0xf9, 0x31, 0x79, 0xf7, 0xff, - 0xff, 0x9f, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x00, 0xf0, 0x1c, 0xfe, 0xcd, 0x23, 0x01, - 0x03, 0x5b, 0x43, 0x18, 0xf0, 0x1c, 0xfe, 0xcc, - 0xf0, 0x1c, 0xfe, 0xc6, 0x23, 0x01, 0x03, 0x9b, - 0x43, 0x18, 0xf0, 0x1c, 0xfe, 0xc5, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x00, 0xf0, 0x1c, 0xfe, 0xbc, - 0x4b, 0x05, 0x40, 0x18, 0xf0, 0x1c, 0xfe, 0xbc, - 0xf0, 0x1c, 0xfe, 0xb6, 0x4b, 0x03, 0x40, 0x18, - 0xf0, 0x1c, 0xfe, 0xb6, 0xbc, 0x08, 0x47, 0x18, - 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xdf, 0xff, - 0xb5, 0x80, 0x1c, 0x07, 0xf7, 0xff, 0xff, 0xd8, - 0x07, 0xf8, 0x0f, 0x40, 0x49, 0x0a, 0x58, 0x08, - 0x0c, 0x39, 0xd3, 0x05, 0x23, 0x01, 0x02, 0x5b, - 0x68, 0x01, 0x43, 0x19, 0x60, 0x01, 0xe0, 0x03, - 0x68, 0x01, 0x4b, 0x06, 0x40, 0x19, 0x60, 0x01, - 0xf0, 0x13, 0xff, 0x5e, 0xf7, 0xff, 0xff, 0xd5, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0x44, 0xff, 0xff, 0xfd, 0xff, - 0xb5, 0x00, 0x4a, 0x09, 0x1f, 0x11, 0x20, 0x0e, - 0xf0, 0x13, 0xff, 0x08, 0x28, 0x00, 0xd1, 0x09, - 0x48, 0x06, 0xf0, 0x13, 0xff, 0x49, 0x49, 0x06, - 0x20, 0x0e, 0xf0, 0x1c, 0xfe, 0x85, 0xf7, 0xff, - 0xff, 0xbc, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x17, 0xe0, 0x2e, 0x08, 0x1a, 0x38, - 0x2e, 0x00, 0x6c, 0xab, 0xb5, 0x00, 0xf7, 0xff, - 0xff, 0x9f, 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x1c, - 0xfe, 0x73, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x80, - 0xa0, 0x0d, 0x22, 0x00, 0x21, 0x0b, 0xf7, 0xff, - 0xfd, 0x61, 0x4f, 0x0d, 0x22, 0x0a, 0x21, 0x0b, - 0x68, 0x38, 0xf7, 0xff, 0xfd, 0xbd, 0x68, 0x38, - 0x30, 0x01, 0x60, 0x38, 0x48, 0x09, 0x7c, 0x01, - 0x29, 0x01, 0xd1, 0x05, 0x69, 0x41, 0x29, 0xff, - 0xd0, 0x02, 0x20, 0x01, 0xf0, 0x00, 0xf8, 0x0c, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x49, 0x52, 0x20, 0x49, 0x52, 0x51, 0x3a, 0x00, - 0x2e, 0x08, 0x1a, 0x4c, 0x2e, 0x08, 0x17, 0xcc, - 0xb5, 0x90, 0x06, 0x0c, 0x0e, 0x24, 0x1c, 0x07, - 0xf7, 0xff, 0xff, 0x6e, 0x48, 0x11, 0x68, 0x01, - 0x00, 0x49, 0x08, 0x49, 0x07, 0xfa, 0x43, 0x11, - 0x0a, 0x09, 0x02, 0x09, 0x43, 0x21, 0x60, 0x01, - 0x68, 0xc2, 0x2a, 0x00, 0xd1, 0x11, 0x68, 0x82, - 0x1c, 0x53, 0x68, 0x82, 0x60, 0x83, 0x00, 0x92, - 0x4b, 0x09, 0x50, 0x99, 0x68, 0x81, 0x29, 0x64, - 0xd1, 0x01, 0x21, 0x00, 0x60, 0x81, 0x68, 0x81, - 0x68, 0x42, 0x42, 0x91, 0xd1, 0x01, 0x21, 0x01, - 0x60, 0xc1, 0xf7, 0xff, 0xff, 0x5e, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x17, 0xcc, - 0x2e, 0x08, 0x4d, 0x98, 0xb5, 0x90, 0x1c, 0x07, - 0xf7, 0xff, 0xff, 0x42, 0x48, 0x10, 0x68, 0xc1, - 0x24, 0x00, 0x29, 0x00, 0xd1, 0x03, 0x68, 0x41, - 0x68, 0x82, 0x42, 0x91, 0xd0, 0x12, 0x68, 0x41, - 0x1c, 0x4a, 0x68, 0x41, 0x60, 0x42, 0x00, 0x89, - 0x4a, 0x0a, 0x58, 0x51, 0x60, 0x39, 0x68, 0x41, - 0x29, 0x64, 0xd1, 0x00, 0x60, 0x44, 0x60, 0xc4, - 0xf7, 0xff, 0xff, 0x3b, 0x20, 0x01, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xff, 0x35, - 0x1c, 0x20, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x17, 0xcc, 0x2e, 0x08, 0x4d, 0x98, - 0xb5, 0x80, 0xb0, 0x81, 0x4f, 0x0e, 0x8e, 0xb8, - 0x28, 0x00, 0xd1, 0x04, 0x46, 0x68, 0xf7, 0xff, - 0xff, 0xcd, 0x28, 0x00, 0xd1, 0x05, 0x20, 0x00, - 0x43, 0xc0, 0xb0, 0x01, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x98, 0x00, 0x49, 0x07, 0x60, 0x08, - 0x20, 0x08, 0x85, 0x38, 0x20, 0x04, 0x85, 0x78, - 0x20, 0x0f, 0x02, 0x40, 0x86, 0xb8, 0x20, 0x01, - 0xb0, 0x01, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x1e, 0x00, - 0xb5, 0x00, 0x49, 0x0b, 0xca, 0x08, 0xc1, 0x08, - 0xca, 0x08, 0xc1, 0x08, 0xca, 0x0c, 0xc1, 0x0c, - 0x78, 0x01, 0x48, 0x08, 0x70, 0x01, 0x78, 0x00, - 0x28, 0x01, 0xd1, 0x04, 0xf0, 0x00, 0xf8, 0x41, - 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x4f, 0x28, 0x2e, 0x08, 0x1a, 0x50, - 0xb5, 0x90, 0x27, 0x00, 0x48, 0x13, 0x70, 0x07, - 0x20, 0x02, 0xf0, 0x04, 0xfb, 0x57, 0x28, 0x00, - 0xd1, 0x03, 0x1c, 0x38, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x00, 0x21, 0x01, 0x4a, 0x0e, - 0x00, 0x43, 0x18, 0x1b, 0x00, 0x9b, 0x18, 0x9c, - 0x70, 0xa1, 0x52, 0xd7, 0x30, 0x01, 0x28, 0x02, - 0xdb, 0xf6, 0x22, 0x00, 0x1c, 0x08, 0x4c, 0x09, - 0x00, 0x53, 0x18, 0x9b, 0x00, 0xdb, 0x19, 0x19, - 0x70, 0x88, 0x52, 0xe7, 0x70, 0xcf, 0x32, 0x01, - 0x2a, 0x08, 0xdb, 0xf5, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x50, - 0x2e, 0x08, 0x4f, 0x48, 0x2e, 0x08, 0x4f, 0x60, - 0xb5, 0x00, 0xf0, 0x04, 0xf9, 0xe7, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x80, 0x20, 0x00, 0x49, 0x17, - 0x78, 0x09, 0x29, 0x01, 0xd1, 0x26, 0x49, 0x16, - 0x78, 0x4a, 0x2a, 0x14, 0xd0, 0x18, 0xdc, 0x09, - 0x2a, 0x11, 0xd0, 0x12, 0x2a, 0x12, 0xd0, 0x16, - 0x2a, 0x13, 0xd1, 0x16, 0x68, 0x8f, 0xf0, 0x00, - 0xf8, 0x77, 0xe0, 0x12, 0x2a, 0x15, 0xd0, 0x05, - 0x2a, 0x23, 0xd1, 0x0e, 0x68, 0x8f, 0xf0, 0x00, - 0xf8, 0xaf, 0xe0, 0x0a, 0xf0, 0x00, 0xf8, 0x8a, - 0xe0, 0x07, 0xf0, 0x00, 0xf8, 0x13, 0xe0, 0x04, - 0xf0, 0x00, 0xf8, 0x4a, 0xe0, 0x01, 0xf0, 0x00, - 0xf8, 0x2d, 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x38, - 0xf0, 0x04, 0xfa, 0xe6, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x50, - 0x2e, 0x08, 0x4f, 0x28, 0xb5, 0x90, 0xb0, 0x81, - 0x4c, 0x0d, 0x79, 0xa0, 0x28, 0x01, 0xd1, 0x12, - 0xf0, 0x00, 0xf9, 0x1c, 0x1c, 0x07, 0xd5, 0x01, - 0x20, 0x00, 0xe0, 0x0d, 0x88, 0xa4, 0x46, 0x6b, - 0x22, 0x00, 0x21, 0x11, 0x1c, 0x38, 0xf0, 0x00, - 0xfa, 0x0d, 0x28, 0x00, 0xd1, 0x03, 0x1c, 0x38, - 0x1c, 0x21, 0xf0, 0x00, 0xf9, 0x47, 0x20, 0x01, - 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x4f, 0x28, 0xb5, 0x90, 0xb0, 0x81, - 0x4c, 0x0a, 0x88, 0xa0, 0xf0, 0x00, 0xf8, 0x96, - 0x1c, 0x07, 0xd4, 0x0a, 0x88, 0xa4, 0x46, 0x6b, - 0x22, 0x00, 0x21, 0x12, 0x1c, 0x38, 0xf0, 0x00, - 0xf9, 0xf1, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x00, - 0xf9, 0x2d, 0x20, 0x01, 0xb0, 0x01, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x4f, 0x28, - 0xb5, 0xb0, 0xb0, 0x81, 0x4c, 0x0b, 0x88, 0xa0, - 0xf0, 0x00, 0xf8, 0x7c, 0x1c, 0x07, 0xd4, 0x0c, - 0x88, 0xa5, 0x79, 0xa2, 0x46, 0x6b, 0x21, 0x14, - 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0xd7, 0x28, 0x00, - 0xd0, 0x03, 0x1c, 0x38, 0x1c, 0x29, 0xf0, 0x00, - 0xf9, 0x11, 0x20, 0x01, 0xb0, 0x01, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x4f, 0x28, - 0xb5, 0x90, 0xb0, 0x81, 0x4c, 0x0c, 0x88, 0xa0, - 0xf0, 0x00, 0xf8, 0x60, 0x1c, 0x07, 0xd4, 0x0c, - 0x68, 0xa0, 0x78, 0x01, 0x88, 0xa0, 0xf0, 0x00, - 0xf8, 0x71, 0x1c, 0x02, 0xd4, 0x07, 0x46, 0x6b, - 0x21, 0x13, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0xb6, - 0xe0, 0x01, 0x20, 0x00, 0x90, 0x00, 0x98, 0x00, - 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x4f, 0x28, 0xb5, 0x90, 0xb0, 0x81, - 0x4c, 0x0d, 0x88, 0xa0, 0xf0, 0x00, 0xf8, 0x42, - 0x1c, 0x07, 0xd4, 0x0f, 0x00, 0x78, 0x19, 0xc0, - 0x00, 0x80, 0x49, 0x0a, 0x18, 0x40, 0x7a, 0x01, - 0x88, 0xa0, 0xf0, 0x00, 0xf8, 0x4f, 0x1c, 0x02, - 0xd4, 0x04, 0x46, 0x6b, 0x21, 0x15, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0x94, 0x20, 0x01, 0xb0, 0x01, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x4f, 0x28, 0x2e, 0x08, 0x4f, 0x48, - 0xb5, 0x90, 0xb0, 0x81, 0x4f, 0x10, 0x88, 0xb8, - 0xf0, 0x00, 0xf8, 0x20, 0x1c, 0x04, 0xd4, 0x14, - 0x79, 0xb9, 0x88, 0xb8, 0xf0, 0x00, 0xf8, 0x32, - 0x1c, 0x02, 0xd5, 0x08, 0x79, 0xba, 0x88, 0xb9, - 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x49, 0x1c, 0x02, - 0xd5, 0x01, 0x20, 0x00, 0xe0, 0x08, 0x46, 0x6b, - 0x21, 0x23, 0x1c, 0x20, 0xf0, 0x00, 0xf9, 0x6e, - 0xe0, 0x01, 0x20, 0x00, 0x90, 0x00, 0x98, 0x00, - 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x4f, 0x28, 0xb4, 0x80, 0x04, 0x02, - 0x0c, 0x12, 0x20, 0x00, 0x49, 0x08, 0x00, 0x43, - 0x18, 0x1b, 0x00, 0x9b, 0x18, 0x5f, 0x78, 0xbf, - 0x2f, 0x01, 0xd0, 0x02, 0x5a, 0xcb, 0x42, 0x93, - 0xd0, 0x04, 0x30, 0x01, 0x28, 0x02, 0xdb, 0xf2, - 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x80, 0x47, 0x70, - 0x2e, 0x08, 0x4f, 0x48, 0xb4, 0xb0, 0x04, 0x02, - 0x0c, 0x12, 0x06, 0x0f, 0x0e, 0x3f, 0x20, 0x00, - 0x49, 0x0a, 0x00, 0x44, 0x18, 0x24, 0x00, 0xe4, - 0x18, 0x63, 0x78, 0x9d, 0x2d, 0x01, 0xd0, 0x05, - 0x5b, 0x0c, 0x42, 0x94, 0xd1, 0x02, 0x78, 0xdb, - 0x42, 0xbb, 0xd0, 0x04, 0x30, 0x01, 0x28, 0x08, - 0xdb, 0xef, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xb0, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x4f, 0x60, - 0xb5, 0xb0, 0x04, 0x09, 0x0c, 0x09, 0x06, 0x12, - 0x0e, 0x12, 0x24, 0x00, 0x1c, 0x07, 0x48, 0x13, - 0x00, 0x63, 0x19, 0x1b, 0x00, 0xdb, 0x18, 0x1b, - 0x78, 0x9b, 0x2b, 0x01, 0xd1, 0x16, 0x00, 0x63, - 0x19, 0x1b, 0x00, 0xdb, 0x18, 0x1d, 0x70, 0xea, - 0x52, 0xc1, 0x20, 0x03, 0x70, 0xa8, 0x1c, 0x20, - 0xf0, 0x00, 0xf8, 0x9a, 0x00, 0x78, 0x19, 0xc0, - 0x00, 0x80, 0x49, 0x09, 0x18, 0x40, 0x88, 0xc1, - 0x31, 0x01, 0x80, 0xc1, 0x1c, 0x20, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x34, 0x01, 0x2c, 0x08, - 0xdb, 0xde, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x4f, 0x60, - 0x2e, 0x08, 0x4f, 0x48, 0xb4, 0x90, 0x20, 0x00, - 0x4c, 0x19, 0x4f, 0x1a, 0x88, 0xba, 0x49, 0x1a, - 0x00, 0x43, 0x18, 0x1b, 0x00, 0x9b, 0x18, 0x5b, - 0x78, 0x9b, 0x2b, 0x01, 0xd1, 0x17, 0x00, 0x43, - 0x18, 0x1b, 0x00, 0x9b, 0x52, 0xca, 0x22, 0x02, - 0x18, 0x59, 0x70, 0x8a, 0x22, 0x00, 0x80, 0xca, - 0x72, 0x4a, 0x89, 0x3a, 0x2a, 0x10, 0xdb, 0x03, - 0x23, 0xff, 0x33, 0x01, 0x42, 0x9a, 0xdd, 0x03, - 0x20, 0x02, 0x43, 0xc0, 0xbc, 0x90, 0x47, 0x70, - 0x80, 0x8a, 0xbc, 0x90, 0x47, 0x70, 0x00, 0x43, - 0x18, 0x1b, 0x00, 0xdb, 0x5a, 0xe3, 0x42, 0x93, - 0xd1, 0x03, 0x20, 0x01, 0x43, 0xc0, 0xbc, 0x90, - 0x47, 0x70, 0x30, 0x01, 0x28, 0x02, 0xdb, 0xd3, - 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x90, 0x47, 0x70, - 0x2e, 0x08, 0x4f, 0x60, 0x2e, 0x08, 0x4f, 0x28, - 0x2e, 0x08, 0x4f, 0x48, 0xb5, 0xf0, 0x04, 0x0e, - 0x0c, 0x36, 0x1c, 0x07, 0xd5, 0x06, 0x2f, 0x02, - 0xdb, 0x04, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x01, 0x00, 0x7b, - 0x19, 0xdb, 0x00, 0x9b, 0x49, 0x0e, 0x18, 0x5a, - 0x70, 0x90, 0x22, 0x00, 0x52, 0xca, 0x24, 0x00, - 0x4d, 0x0c, 0x00, 0x60, 0x19, 0x00, 0x00, 0xc0, - 0x5a, 0x29, 0x42, 0xb1, 0xd1, 0x08, 0x22, 0x00, - 0x19, 0x41, 0x70, 0xca, 0x52, 0x2a, 0x20, 0x01, - 0x70, 0x88, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x20, - 0x34, 0x01, 0x2c, 0x08, 0xdb, 0xed, 0x1c, 0x38, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x4f, 0x48, 0x2e, 0x08, 0x4f, 0x60, - 0xb5, 0x00, 0x49, 0x03, 0x78, 0x08, 0xf0, 0x04, - 0xf8, 0x6b, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x4f, 0x28, 0xb5, 0x00, 0x49, 0x03, - 0x78, 0x08, 0xf0, 0x04, 0xf8, 0x61, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x4f, 0x38, - 0xb5, 0xf0, 0x01, 0x46, 0x18, 0x36, 0x00, 0xb6, - 0x1c, 0x07, 0xb0, 0x84, 0x48, 0x0c, 0x90, 0x03, - 0x18, 0x34, 0x68, 0xa0, 0x28, 0x00, 0xd0, 0x0a, - 0x46, 0x69, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x3e, - 0x1c, 0x05, 0xd0, 0x02, 0x98, 0x01, 0xf0, 0x04, - 0xf9, 0x23, 0x2d, 0x00, 0xd1, 0xf4, 0x20, 0x00, - 0x99, 0x03, 0x51, 0x88, 0x60, 0x60, 0x60, 0xa0, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x50, 0x20, 0xb4, 0xb0, 0x01, 0x43, - 0x18, 0x18, 0x00, 0x80, 0x4a, 0x12, 0x18, 0x82, - 0x20, 0x00, 0x68, 0x93, 0x2b, 0x0a, 0xda, 0x1d, - 0x33, 0x01, 0x60, 0x93, 0x78, 0x8c, 0x68, 0x55, - 0x00, 0x6b, 0x19, 0x5b, 0x00, 0x9b, 0x18, 0xd3, - 0x73, 0x9c, 0x68, 0x4c, 0x68, 0x55, 0x00, 0x6b, - 0x19, 0x5b, 0x00, 0x9b, 0x18, 0xd3, 0x61, 0x1c, - 0x89, 0x0f, 0x68, 0x54, 0x00, 0x63, 0x19, 0x1b, - 0x00, 0x9b, 0x18, 0xd1, 0x82, 0x8f, 0x68, 0x51, - 0x31, 0x01, 0x60, 0x51, 0x29, 0x0a, 0xdb, 0x00, - 0x60, 0x50, 0x20, 0x01, 0xbc, 0xb0, 0x47, 0x70, - 0x2e, 0x08, 0x50, 0x20, 0xb4, 0xb0, 0x01, 0x47, - 0x18, 0x3f, 0x00, 0xbf, 0x4a, 0x12, 0x18, 0xbc, - 0x20, 0x00, 0x68, 0xa3, 0x2b, 0x00, 0xdd, 0x1d, - 0x3b, 0x01, 0x60, 0xa3, 0x59, 0xd5, 0x00, 0x6b, - 0x19, 0x5b, 0x00, 0x9b, 0x18, 0xe3, 0x7b, 0x9b, - 0x70, 0x8b, 0x59, 0xd5, 0x00, 0x6b, 0x19, 0x5b, - 0x00, 0x9b, 0x18, 0xe3, 0x69, 0x1b, 0x60, 0x4b, - 0x59, 0xd5, 0x00, 0x6b, 0x19, 0x5b, 0x00, 0x9b, - 0x18, 0xe3, 0x8a, 0x9b, 0x81, 0x0b, 0x59, 0xd1, - 0x31, 0x01, 0x51, 0xd1, 0x29, 0x0a, 0xdb, 0x00, - 0x51, 0xd0, 0x20, 0x01, 0xbc, 0xb0, 0x47, 0x70, - 0x2e, 0x08, 0x50, 0x20, 0xb5, 0x90, 0x06, 0x09, - 0x0e, 0x09, 0x1c, 0x1f, 0x00, 0x43, 0x18, 0x1b, - 0x00, 0x9b, 0x4c, 0x0f, 0x19, 0x1b, 0x78, 0x9b, - 0x2b, 0x02, 0xd0, 0x0f, 0x2b, 0x03, 0xd0, 0x07, - 0x2b, 0x04, 0xd1, 0x11, 0x1c, 0x3b, 0xf0, 0x00, - 0xf9, 0x27, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x3b, 0xf0, 0x00, 0xf8, 0x37, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x3a, 0xf0, 0x00, - 0xf8, 0x09, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x4f, 0x48, 0xb5, 0x90, 0x06, 0x09, - 0x0e, 0x09, 0x23, 0x01, 0x60, 0x13, 0x29, 0x11, - 0xd1, 0x17, 0x22, 0x23, 0x49, 0x0d, 0x70, 0x0a, - 0x22, 0x21, 0x70, 0x4a, 0x22, 0x04, 0x80, 0x4a, - 0x00, 0x44, 0x18, 0x24, 0x00, 0xa4, 0x4f, 0x0a, - 0x5b, 0x38, 0x80, 0x88, 0xf7, 0xff, 0xff, 0x34, - 0x28, 0x00, 0xd0, 0x06, 0x20, 0x03, 0x19, 0xe1, - 0x70, 0x88, 0x20, 0x01, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x4f, 0x28, - 0x2e, 0x08, 0x4f, 0x48, 0xb5, 0xff, 0x06, 0x09, - 0x0e, 0x09, 0x27, 0x00, 0x20, 0x00, 0xb0, 0x84, - 0x60, 0x18, 0x1c, 0x1e, 0x98, 0x04, 0x00, 0x43, - 0x18, 0x18, 0x00, 0x80, 0x90, 0x03, 0x4a, 0x6a, - 0x92, 0x02, 0x18, 0x84, 0x25, 0x02, 0x48, 0x69, - 0x29, 0x12, 0xd0, 0x71, 0x9a, 0x06, 0x00, 0x53, - 0x18, 0x9a, 0x00, 0xd2, 0x4b, 0x66, 0x18, 0xd2, - 0x92, 0x01, 0x29, 0x13, 0xd0, 0x17, 0x29, 0x14, - 0xd0, 0x67, 0x29, 0x23, 0xd1, 0x66, 0x89, 0x82, - 0x99, 0x06, 0xb4, 0x04, 0x68, 0x83, 0x9d, 0x02, - 0x78, 0xea, 0x98, 0x05, 0xf0, 0x00, 0xf9, 0x52, - 0xb0, 0x01, 0x1c, 0x07, 0xd0, 0x5b, 0x89, 0xa8, - 0x28, 0x00, 0xd0, 0x01, 0x20, 0x01, 0x60, 0x30, - 0x21, 0x04, 0x70, 0xa1, 0xe0, 0x97, 0x68, 0x81, - 0x78, 0x4a, 0x23, 0x80, 0x40, 0x1a, 0x88, 0xc0, - 0x1e, 0x83, 0x04, 0x1d, 0x0c, 0x2d, 0x31, 0x02, - 0x91, 0x00, 0x2a, 0x80, 0xd1, 0x28, 0x88, 0xa1, - 0x42, 0x81, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x87, - 0x9c, 0x01, 0x8a, 0xa1, 0x29, 0x00, 0xd1, 0x0c, - 0x1c, 0x28, 0xf0, 0x03, 0xff, 0xfb, 0x61, 0x20, - 0x28, 0x00, 0xd0, 0xf3, 0x82, 0xa5, 0x69, 0x20, - 0x99, 0x00, 0x1c, 0x2a, 0xf0, 0x16, 0xff, 0x12, - 0xe0, 0x75, 0x19, 0x48, 0x04, 0x02, 0x0c, 0x12, - 0x69, 0x20, 0xf0, 0x03, 0xff, 0xf0, 0x28, 0x00, - 0xd0, 0xe4, 0x61, 0x20, 0x8a, 0xa1, 0x18, 0x40, - 0x99, 0x00, 0x1c, 0x2a, 0xf0, 0x16, 0xff, 0x02, - 0x8a, 0xa0, 0x19, 0x40, 0x82, 0xa0, 0xe0, 0x62, - 0x9e, 0x01, 0x8a, 0xb1, 0x4c, 0x3d, 0x29, 0x00, - 0xd1, 0x1a, 0x1c, 0x28, 0xf0, 0x03, 0xff, 0xd6, - 0x60, 0xa0, 0x28, 0x00, 0xd0, 0xce, 0x21, 0x23, - 0x70, 0x21, 0x70, 0x61, 0x21, 0x0c, 0x80, 0x61, - 0x99, 0x03, 0x9a, 0x02, 0x5a, 0x51, 0x80, 0xa1, - 0x78, 0xf1, 0x71, 0xa1, 0x81, 0xa5, 0x99, 0x00, - 0x1c, 0x2a, 0xf0, 0x16, 0xfe, 0xe3, 0xe0, 0x24, - 0xe0, 0x4b, 0xe0, 0x2e, 0xe0, 0x43, 0xe0, 0x42, - 0x19, 0x48, 0x04, 0x02, 0x0c, 0x12, 0x69, 0x30, - 0xf0, 0x03, 0xff, 0xbd, 0x28, 0x00, 0xd0, 0xb1, - 0x61, 0x30, 0x8a, 0xb1, 0x18, 0x40, 0x99, 0x00, - 0x1c, 0x2a, 0xf0, 0x16, 0xfe, 0xcf, 0x8a, 0xb0, - 0x19, 0x40, 0x82, 0xb0, 0x21, 0x23, 0x70, 0x21, - 0x70, 0x61, 0x21, 0x0c, 0x80, 0x61, 0x98, 0x03, - 0x9a, 0x02, 0x5a, 0x10, 0x80, 0xa0, 0x78, 0xf0, - 0x71, 0xa0, 0x8a, 0xb0, 0x81, 0xa0, 0x69, 0x30, - 0x60, 0xa0, 0xf7, 0xff, 0xfe, 0x7f, 0x28, 0x00, - 0xd1, 0x03, 0x68, 0xa0, 0xf0, 0x03, 0xff, 0xbc, - 0xe0, 0x19, 0x20, 0x00, 0x82, 0xb0, 0x61, 0x30, - 0xe0, 0x14, 0x9a, 0x06, 0x06, 0x11, 0x0e, 0x09, - 0x29, 0x02, 0xd1, 0x10, 0x21, 0x23, 0x70, 0x01, - 0x21, 0x22, 0x70, 0x41, 0x21, 0x04, 0x80, 0x41, - 0x99, 0x03, 0x9a, 0x02, 0x5a, 0x51, 0x80, 0x81, - 0xf7, 0xff, 0xfe, 0x5a, 0x28, 0x00, 0xd1, 0x00, - 0xe7, 0x78, 0x70, 0xa5, 0x27, 0x01, 0x1c, 0x38, - 0xb0, 0x04, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x21, 0x23, 0x70, 0x01, 0x21, 0x22, - 0x70, 0x41, 0x21, 0x04, 0x80, 0x41, 0x99, 0x03, - 0x9a, 0x02, 0x5a, 0x51, 0x80, 0x81, 0xf7, 0xff, - 0xfe, 0x43, 0x28, 0x00, 0xd1, 0xe9, 0xe7, 0x61, - 0x2e, 0x08, 0x4f, 0x48, 0x2e, 0x08, 0x4f, 0x28, - 0x2e, 0x08, 0x4f, 0x60, 0x2e, 0x08, 0x4f, 0x38, - 0xb5, 0xff, 0x06, 0x09, 0x0e, 0x09, 0x24, 0x00, - 0x20, 0x00, 0x60, 0x18, 0x1c, 0x1f, 0xb0, 0x84, - 0x29, 0x14, 0xd0, 0x04, 0xdc, 0x09, 0x29, 0x12, - 0xd0, 0x01, 0x29, 0x13, 0xd1, 0x65, 0x98, 0x04, - 0x1c, 0x3b, 0xf7, 0xff, 0xff, 0x03, 0x1c, 0x04, - 0xe0, 0x6e, 0x29, 0x15, 0xd0, 0x0a, 0x29, 0x23, - 0xd1, 0x5b, 0x49, 0x38, 0x1c, 0x10, 0xf7, 0xff, - 0xfe, 0x51, 0x1c, 0x04, 0xd0, 0x64, 0x20, 0x01, - 0x60, 0x38, 0xe0, 0x61, 0x1c, 0x17, 0x22, 0x00, - 0x98, 0x04, 0x00, 0x43, 0x18, 0x18, 0x00, 0x80, - 0x49, 0x31, 0x18, 0x43, 0x93, 0x03, 0x72, 0x5a, - 0x5a, 0x0a, 0x92, 0x00, 0x9b, 0x03, 0x88, 0xd8, - 0x28, 0x01, 0xd0, 0x03, 0x37, 0x01, 0x2f, 0x08, - 0xd1, 0x00, 0x27, 0x00, 0x26, 0x00, 0x48, 0x2b, - 0x90, 0x01, 0x1d, 0x01, 0x91, 0x02, 0x4d, 0x2a, - 0x00, 0x78, 0x19, 0xc0, 0x00, 0xc0, 0x5a, 0x29, - 0x9a, 0x00, 0x42, 0x91, 0xd1, 0x32, 0x19, 0x40, - 0x89, 0x80, 0x28, 0x00, 0xdd, 0x0e, 0x22, 0x00, - 0xb4, 0x04, 0x00, 0x78, 0x19, 0xc0, 0x00, 0xc0, - 0x19, 0x40, 0x78, 0xc2, 0x23, 0x00, 0x98, 0x05, - 0x1c, 0x39, 0xf0, 0x00, 0xf8, 0x3f, 0x1c, 0x04, - 0xb0, 0x01, 0xe0, 0x26, 0x99, 0x02, 0x1c, 0x38, - 0xf7, 0xff, 0xfe, 0x40, 0x1c, 0x04, 0xd0, 0x19, - 0x98, 0x01, 0x89, 0x82, 0xb4, 0x04, 0x98, 0x02, - 0x68, 0x84, 0x00, 0x78, 0x19, 0xc0, 0x00, 0xc0, - 0x19, 0x45, 0x78, 0xea, 0x98, 0x05, 0x1c, 0x39, - 0x1c, 0x23, 0x1c, 0x2e, 0xf0, 0x00, 0xf8, 0x26, - 0x1c, 0x04, 0x89, 0xa8, 0xb0, 0x01, 0x28, 0x00, - 0xd1, 0x0b, 0x68, 0x70, 0xf0, 0x03, 0xff, 0x10, - 0xe0, 0x07, 0xe0, 0x0d, 0x36, 0x01, 0x37, 0x01, - 0x2f, 0x08, 0xd1, 0x00, 0x27, 0x00, 0x2e, 0x08, - 0xdb, 0xbe, 0x9b, 0x03, 0x7a, 0x58, 0x28, 0x00, - 0xd1, 0x02, 0x20, 0x03, 0x9b, 0x03, 0x70, 0x98, - 0x1c, 0x20, 0xb0, 0x04, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x4f, 0x2c, - 0x2e, 0x08, 0x4f, 0x48, 0x2e, 0x08, 0x4f, 0x38, - 0x2e, 0x08, 0x4f, 0x60, 0xb5, 0xff, 0x06, 0x16, - 0x0e, 0x36, 0x9f, 0x09, 0x04, 0x3c, 0x0c, 0x24, - 0x1c, 0x18, 0x00, 0x4b, 0x18, 0x59, 0x00, 0xc9, - 0xb0, 0x85, 0x4a, 0x30, 0x18, 0x8f, 0x28, 0x00, - 0xd1, 0x02, 0x89, 0xbc, 0x68, 0xbd, 0xe0, 0x03, - 0x60, 0x78, 0x60, 0xb8, 0x81, 0xbc, 0x1c, 0x05, - 0x99, 0x05, 0x00, 0x4b, 0x18, 0x5b, 0x00, 0x9b, - 0x93, 0x04, 0x1c, 0xa2, 0x49, 0x28, 0x91, 0x03, - 0x18, 0x59, 0x91, 0x02, 0x88, 0x89, 0x42, 0x8a, - 0xdd, 0x0a, 0x20, 0x80, 0x90, 0x00, 0x1e, 0x88, - 0x04, 0x04, 0x0c, 0x24, 0x19, 0x28, 0x60, 0xb8, - 0x89, 0xb8, 0x1b, 0x00, 0x81, 0xb8, 0xe0, 0x09, - 0x21, 0x00, 0x91, 0x00, 0x81, 0xb9, 0x28, 0x00, - 0xd1, 0x04, 0x68, 0x78, 0xf0, 0x03, 0xfe, 0xbc, - 0x21, 0x00, 0x60, 0x79, 0x1c, 0xa0, 0x04, 0x00, - 0x0c, 0x00, 0x90, 0x01, 0xf0, 0x03, 0xfe, 0x8e, - 0x4f, 0x18, 0x60, 0xb8, 0x1c, 0x01, 0xd1, 0x01, - 0x20, 0x00, 0xe0, 0x22, 0x20, 0x21, 0x70, 0x38, - 0x20, 0x13, 0x70, 0x78, 0x20, 0x08, 0x80, 0x78, - 0x98, 0x04, 0x9a, 0x03, 0x5a, 0x10, 0x80, 0xb8, - 0x98, 0x01, 0x80, 0xf8, 0x70, 0x0e, 0x98, 0x00, - 0x68, 0xb9, 0x70, 0x48, 0x68, 0xb8, 0x30, 0x02, - 0x1c, 0x29, 0x1c, 0x22, 0xf0, 0x16, 0xfd, 0x92, - 0xf7, 0xff, 0xfd, 0x54, 0x28, 0x00, 0xd1, 0x03, - 0x68, 0xb8, 0xf0, 0x03, 0xfe, 0x91, 0xe7, 0xdf, - 0x99, 0x02, 0x72, 0x0e, 0x20, 0x01, 0x99, 0x02, - 0x72, 0x48, 0xb0, 0x05, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x4f, 0x60, - 0x2e, 0x08, 0x4f, 0x48, 0x2e, 0x08, 0x4f, 0x38, - 0xb5, 0xf0, 0x4d, 0x15, 0x69, 0x68, 0x28, 0x00, - 0xd1, 0x06, 0x20, 0xff, 0x30, 0x01, 0xf0, 0x03, - 0xfe, 0x51, 0x61, 0x68, 0x28, 0x00, 0xd0, 0x11, - 0x27, 0x00, 0x4c, 0x10, 0x21, 0x01, 0x01, 0x3e, - 0x19, 0x30, 0x81, 0x01, 0x21, 0x00, 0x60, 0xc1, - 0x20, 0x00, 0x1c, 0x39, 0xf0, 0x05, 0xf9, 0x90, - 0x04, 0x00, 0x0c, 0x00, 0x53, 0xa0, 0x04, 0x00, - 0x14, 0x00, 0xd5, 0x04, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x37, 0x01, - 0x2f, 0x02, 0xdb, 0xe7, 0x21, 0x00, 0x82, 0x29, - 0x20, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x54, 0x2e, 0x08, 0x54, 0x50, - 0xb5, 0xf7, 0x04, 0x01, 0x0c, 0x09, 0x04, 0x16, - 0x0c, 0x36, 0x27, 0x00, 0x48, 0x12, 0x01, 0x3a, - 0x5a, 0x82, 0x42, 0x8a, 0xd0, 0x02, 0x37, 0x01, - 0x2f, 0x02, 0xdb, 0xf8, 0x2f, 0x02, 0xda, 0x17, - 0x24, 0x00, 0x99, 0x01, 0x1c, 0x38, 0x1c, 0x32, - 0xf0, 0x00, 0xf9, 0xd6, 0x1c, 0x05, 0x28, 0x02, - 0xd1, 0x05, 0x20, 0x14, 0xf0, 0x03, 0xfe, 0x3e, - 0x34, 0x01, 0x2c, 0x0a, 0xd0, 0x08, 0x2d, 0x02, - 0xd0, 0xef, 0x2d, 0x00, 0xd1, 0x04, 0x20, 0x00, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x00, 0x43, 0xc0, 0xe7, 0xf8, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x50, 0xb5, 0xf0, 0x4f, 0x14, - 0x26, 0x00, 0x69, 0x78, 0x28, 0x00, 0xd0, 0x02, - 0xf0, 0x03, 0xfe, 0x1a, 0x61, 0x7e, 0x24, 0x00, - 0x4d, 0x10, 0x01, 0x27, 0x5b, 0xe8, 0x28, 0x00, - 0xdd, 0x02, 0xf0, 0x05, 0xf9, 0xe7, 0x53, 0xee, - 0x19, 0x78, 0x68, 0xc7, 0x2f, 0x00, 0xd0, 0x0c, - 0x68, 0x38, 0x28, 0x00, 0xd0, 0x06, 0x1c, 0x38, - 0x68, 0x3f, 0xf0, 0x03, 0xfe, 0x05, 0x68, 0x38, - 0x28, 0x00, 0xd1, 0xf8, 0x1c, 0x38, 0xf0, 0x03, - 0xfd, 0xff, 0x34, 0x01, 0x2c, 0x02, 0xdb, 0xe4, - 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x54, 0x2e, 0x08, 0x54, 0x50, - 0xb5, 0xf0, 0x1c, 0x07, 0x20, 0x03, 0x1c, 0x0d, - 0x01, 0x39, 0x1c, 0x14, 0x4a, 0x12, 0x18, 0x8e, - 0x81, 0x30, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x22, - 0x28, 0x00, 0xd1, 0x10, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x6d, 0x28, 0x00, 0xd0, 0x04, 0x28, 0x07, - 0xd1, 0x12, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0x1c, 0x29, 0x1c, 0x22, 0xf0, 0x00, - 0xf8, 0xb3, 0x28, 0x00, 0xd0, 0x04, 0x20, 0x01, - 0x81, 0x30, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x50, 0xb5, 0xf0, 0x27, 0x01, - 0xb0, 0x81, 0xab, 0x00, 0x70, 0x1f, 0x01, 0x05, - 0x4c, 0x15, 0x5b, 0x60, 0x46, 0x6a, 0x21, 0x06, - 0xf0, 0x05, 0xf9, 0x56, 0x28, 0x00, 0xdd, 0x1d, - 0xa8, 0x00, 0x78, 0x40, 0x28, 0x00, 0xd0, 0x19, - 0x27, 0x00, 0x20, 0x02, 0xab, 0x00, 0x70, 0x18, - 0x26, 0x06, 0x5b, 0x60, 0x46, 0x6a, 0x21, 0x06, - 0xf0, 0x05, 0xf9, 0x46, 0x28, 0x00, 0xdb, 0x05, - 0x20, 0x14, 0xf0, 0x03, 0xfd, 0xaf, 0x37, 0x01, - 0x2f, 0x0a, 0xd1, 0x01, 0x1c, 0x30, 0xe0, 0x06, - 0xa8, 0x00, 0x78, 0x40, 0x28, 0x00, 0xd0, 0xec, - 0x20, 0x00, 0xe0, 0x00, 0x1c, 0x38, 0xb0, 0x01, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x50, 0xb5, 0x80, 0x27, 0x01, - 0xb0, 0x81, 0xab, 0x00, 0x70, 0x1f, 0x01, 0x00, - 0x49, 0x09, 0x5a, 0x08, 0x46, 0x6a, 0x21, 0x06, - 0xf0, 0x05, 0xf9, 0x22, 0x28, 0x00, 0xdd, 0x05, - 0xa8, 0x00, 0x78, 0x40, 0x28, 0x00, 0xd0, 0x01, - 0x20, 0x00, 0xe0, 0x00, 0x1c, 0x38, 0xb0, 0x01, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x50, 0xb5, 0xf0, 0x27, 0x00, - 0x26, 0x06, 0x01, 0x05, 0xb0, 0xff, 0xb0, 0x87, - 0x4c, 0x24, 0x20, 0x00, 0xab, 0x00, 0x80, 0x18, - 0x20, 0x01, 0x02, 0x40, 0x80, 0x58, 0xa8, 0x05, - 0x90, 0x01, 0x5b, 0x60, 0x46, 0x6a, 0x21, 0x02, - 0xf0, 0x05, 0xf8, 0xfe, 0x28, 0x00, 0xda, 0x01, - 0x1c, 0x30, 0xe0, 0x2f, 0xa9, 0x02, 0x88, 0x09, - 0xa8, 0x05, 0xaa, 0x03, 0xab, 0x04, 0xf0, 0x00, - 0xfa, 0x73, 0x28, 0x00, 0xda, 0x2b, 0x1c, 0x78, - 0x06, 0x07, 0x0e, 0x3f, 0x20, 0xc8, 0xf0, 0x03, - 0xfd, 0x59, 0x2f, 0x0a, 0xdb, 0xdd, 0x2f, 0x0a, - 0xd0, 0xea, 0xa8, 0x03, 0x88, 0x00, 0xab, 0x00, - 0x80, 0x18, 0x27, 0x01, 0x80, 0x5f, 0xa8, 0x04, - 0x90, 0x01, 0x5b, 0x60, 0x46, 0x6a, 0x21, 0x03, - 0xf0, 0x05, 0xf8, 0xda, 0x28, 0x00, 0xdb, 0xdb, - 0xa8, 0x02, 0x88, 0x00, 0x28, 0x01, 0xd1, 0xd7, - 0xab, 0x85, 0x70, 0x5f, 0x27, 0x00, 0x70, 0x1f, - 0x5b, 0x60, 0x21, 0x07, 0xaa, 0x85, 0xf0, 0x05, - 0xf8, 0xcb, 0x1c, 0x38, 0xb0, 0x7f, 0xb0, 0x07, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x27, 0x00, - 0xe7, 0xd9, 0x00, 0x00, 0x2e, 0x08, 0x54, 0x50, - 0xb5, 0xf7, 0x1c, 0x07, 0x20, 0x00, 0xb0, 0x84, - 0x4c, 0x5b, 0x70, 0x20, 0xab, 0x00, 0x70, 0x58, - 0x70, 0x18, 0x01, 0x38, 0x49, 0x59, 0x5a, 0x08, - 0x46, 0x6a, 0x21, 0x07, 0xf0, 0x05, 0xf8, 0xb0, - 0x28, 0x00, 0xdb, 0x2f, 0x1d, 0x22, 0x92, 0x03, - 0x21, 0x01, 0x1c, 0x38, 0xf0, 0x00, 0xfa, 0x04, - 0x28, 0x01, 0xd0, 0x27, 0x78, 0x20, 0x23, 0x08, - 0x43, 0x18, 0x70, 0x20, 0x78, 0x22, 0x21, 0x01, - 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0xd3, 0x28, 0x01, - 0xd0, 0x1c, 0x78, 0x20, 0x23, 0xf7, 0x40, 0x18, - 0x70, 0x20, 0x78, 0x22, 0x21, 0x01, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0xc8, 0x28, 0x01, 0xd0, 0x11, - 0x21, 0x01, 0x9a, 0x03, 0x1c, 0x38, 0xf0, 0x00, - 0xf9, 0xe7, 0x28, 0x01, 0xd0, 0x0a, 0x78, 0x20, - 0x23, 0x04, 0x43, 0x18, 0x70, 0x20, 0x78, 0x22, - 0x21, 0x01, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0xb6, - 0x28, 0x01, 0xd1, 0x01, 0x20, 0x05, 0xe0, 0x71, - 0x25, 0x00, 0x23, 0x01, 0x1c, 0x38, 0xa9, 0x02, - 0xaa, 0x01, 0xf0, 0x00, 0xf9, 0x33, 0x1c, 0x06, - 0x28, 0x01, 0xd0, 0xf3, 0x20, 0x14, 0xf0, 0x03, - 0xfc, 0xdd, 0x35, 0x01, 0x2d, 0x0a, 0xd0, 0xed, - 0x2e, 0x03, 0xd0, 0xee, 0x2e, 0x02, 0xd0, 0xec, - 0xa8, 0x02, 0x78, 0x00, 0x02, 0x00, 0xa9, 0x02, - 0x78, 0x49, 0x18, 0x40, 0x9a, 0x06, 0x60, 0x10, - 0x99, 0x05, 0x42, 0x88, 0xd9, 0x08, 0x99, 0x05, - 0x0a, 0x08, 0xab, 0x02, 0x70, 0x18, 0x99, 0x05, - 0x70, 0x59, 0x99, 0x05, 0x9a, 0x06, 0x60, 0x11, - 0x78, 0x20, 0x23, 0xfb, 0x40, 0x18, 0x70, 0x20, - 0x78, 0x22, 0x21, 0x01, 0x1c, 0x38, 0xf0, 0x00, - 0xf9, 0x81, 0x28, 0x01, 0xd0, 0x0a, 0x78, 0x20, - 0x23, 0x02, 0x43, 0x18, 0x70, 0x20, 0x78, 0x22, - 0x21, 0x01, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0x76, - 0x28, 0x01, 0xd1, 0x01, 0x20, 0x01, 0xe0, 0x31, - 0x25, 0x00, 0x22, 0x02, 0x1c, 0x38, 0xa9, 0x02, - 0xf0, 0x00, 0xf8, 0x36, 0x1c, 0x06, 0x28, 0x01, - 0xd0, 0xb4, 0x20, 0x14, 0xf0, 0x03, 0xfc, 0x9e, - 0x35, 0x01, 0x2d, 0x0a, 0xd0, 0xae, 0x2e, 0x02, - 0xd0, 0xef, 0x78, 0x20, 0x23, 0xfd, 0x40, 0x18, - 0x70, 0x20, 0x78, 0x22, 0x21, 0x01, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0x58, 0x28, 0x01, 0xd0, 0xe1, - 0x25, 0x00, 0x21, 0x01, 0x9a, 0x03, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0x76, 0x28, 0x01, 0xd0, 0x99, - 0x79, 0x20, 0x23, 0xc3, 0x40, 0x18, 0x71, 0x20, - 0x20, 0x14, 0xf0, 0x03, 0xfc, 0x7f, 0x35, 0x01, - 0x2d, 0x0a, 0xd0, 0x8f, 0x79, 0x20, 0x09, 0xc0, - 0xd3, 0xeb, 0x20, 0x00, 0xb0, 0x04, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0x54, 0x2e, 0x08, 0x54, 0x50, - 0xb5, 0xf7, 0x04, 0x15, 0x0c, 0x2d, 0x1c, 0x07, - 0x01, 0x00, 0xb0, 0x82, 0x90, 0x01, 0x49, 0x3d, - 0x91, 0x00, 0x18, 0x40, 0x89, 0x00, 0x28, 0x01, - 0xd0, 0x07, 0x4a, 0x3b, 0x21, 0x01, 0x1c, 0x38, - 0x1c, 0x16, 0xf0, 0x00, 0xf9, 0x49, 0x28, 0x01, - 0xd1, 0x01, 0x20, 0x01, 0xe0, 0x64, 0x4c, 0x37, - 0x79, 0x20, 0x23, 0xc3, 0x40, 0x18, 0x71, 0x20, - 0x79, 0x20, 0x0a, 0x00, 0xd3, 0x02, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x66, 0x21, 0x01, 0x1c, 0x38, - 0x1c, 0x32, 0xf0, 0x00, 0xf9, 0x35, 0x28, 0x01, - 0xd0, 0xeb, 0x79, 0x20, 0x23, 0xc3, 0x40, 0x18, - 0x71, 0x20, 0x79, 0x20, 0x09, 0xc0, 0xd2, 0x01, - 0x20, 0x02, 0xe0, 0x49, 0x78, 0x20, 0x23, 0x01, - 0x43, 0x18, 0x70, 0x20, 0x78, 0x22, 0x21, 0x01, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0xfb, 0x28, 0x01, - 0xd0, 0xd7, 0x06, 0x2a, 0x0e, 0x12, 0x21, 0x02, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0xf3, 0x28, 0x01, - 0xd0, 0xcf, 0x0a, 0x2a, 0x21, 0x03, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0xec, 0x28, 0x01, 0xd0, 0xc8, - 0x98, 0x01, 0x99, 0x00, 0x5a, 0x08, 0x9a, 0x03, - 0x1c, 0x29, 0xf0, 0x04, 0xff, 0x55, 0x42, 0xa8, - 0xd1, 0xbf, 0x21, 0x01, 0x1c, 0x38, 0x1c, 0x32, - 0xf0, 0x00, 0xf9, 0x02, 0x28, 0x01, 0xd0, 0xb8, - 0x79, 0x20, 0x23, 0xc3, 0x40, 0x18, 0x71, 0x20, - 0x79, 0x20, 0x08, 0x80, 0xd3, 0x0c, 0x78, 0x20, - 0x23, 0xfe, 0x40, 0x18, 0x70, 0x20, 0x78, 0x22, - 0x21, 0x01, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0xca, - 0x28, 0x01, 0xd0, 0xa6, 0x20, 0x04, 0xe0, 0x0b, - 0x78, 0x20, 0x23, 0xfe, 0x40, 0x18, 0x70, 0x20, - 0x78, 0x22, 0x21, 0x01, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0xbd, 0x28, 0x01, 0xd0, 0x99, 0x20, 0x00, - 0xb0, 0x02, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x54, 0x50, - 0x2e, 0x08, 0x1a, 0x58, 0x2e, 0x08, 0x1a, 0x54, - 0xb5, 0xf0, 0xb0, 0x81, 0x46, 0x6a, 0x1c, 0x07, - 0x4e, 0x16, 0x25, 0x00, 0x69, 0x71, 0x1c, 0x2b, - 0xf0, 0x00, 0xf8, 0x2c, 0x28, 0x00, 0xd1, 0x21, - 0xa8, 0x00, 0x88, 0x00, 0x30, 0x07, 0x04, 0x00, - 0x0c, 0x00, 0xf0, 0x03, 0xfb, 0xa3, 0x1c, 0x04, - 0xd0, 0x18, 0xa8, 0x00, 0x60, 0x25, 0x88, 0x00, - 0x80, 0xa0, 0xaa, 0x00, 0x88, 0x12, 0x69, 0x71, - 0x1d, 0xa0, 0xf0, 0x16, 0xfa, 0xb7, 0x01, 0x38, - 0x49, 0x09, 0x18, 0x40, 0x68, 0xc1, 0x29, 0x00, - 0xd1, 0x01, 0x60, 0xc4, 0xe0, 0x06, 0x68, 0x08, - 0x28, 0x00, 0xd0, 0x03, 0x68, 0x09, 0x68, 0x08, - 0x28, 0x00, 0xd1, 0xfb, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x54, - 0x2e, 0x08, 0x54, 0x50, 0xb5, 0xf0, 0x1c, 0x07, - 0x01, 0x00, 0xb0, 0x83, 0x90, 0x02, 0x1c, 0x14, - 0x1c, 0x0d, 0x49, 0x32, 0x91, 0x01, 0x18, 0x46, - 0x89, 0x30, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x01, - 0xe0, 0x58, 0x2b, 0x00, 0xd0, 0x12, 0x68, 0xf0, - 0x28, 0x00, 0xd0, 0x0f, 0x88, 0x82, 0x1d, 0x81, - 0x1c, 0x28, 0xf0, 0x16, 0xfa, 0x87, 0x68, 0xf0, - 0x88, 0x80, 0x80, 0x20, 0x68, 0xf0, 0x1c, 0x01, - 0x68, 0x00, 0x60, 0xf0, 0x1c, 0x08, 0xf0, 0x03, - 0xfb, 0x83, 0xe0, 0x42, 0x4a, 0x24, 0x92, 0x00, - 0x21, 0x01, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x74, - 0x28, 0x01, 0xd0, 0xe0, 0x4e, 0x21, 0x79, 0x30, - 0x23, 0xc3, 0x40, 0x18, 0x71, 0x30, 0x79, 0x30, - 0x0a, 0x00, 0xd2, 0x01, 0x20, 0x03, 0xe0, 0x31, - 0x4a, 0x1d, 0x21, 0x02, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x63, 0x28, 0x01, 0xd0, 0xcf, 0x4a, 0x1b, - 0x21, 0x03, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x5c, - 0x28, 0x01, 0xd0, 0xc8, 0x7b, 0x30, 0x02, 0x00, - 0x7a, 0x31, 0x18, 0x40, 0x80, 0x20, 0x88, 0x20, - 0x4b, 0x15, 0x42, 0x98, 0xd0, 0xbf, 0x23, 0xff, - 0x33, 0x01, 0x42, 0x98, 0xdc, 0xbb, 0x1c, 0x38, - 0xf7, 0xff, 0xfd, 0xc0, 0x28, 0x01, 0xd0, 0xb6, - 0x98, 0x02, 0x99, 0x01, 0x5a, 0x08, 0x88, 0x21, - 0x1c, 0x2a, 0xf0, 0x04, 0xfe, 0xb3, 0x88, 0x21, - 0x42, 0x88, 0xd1, 0xac, 0x21, 0x01, 0x9a, 0x00, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x39, 0x28, 0x01, - 0xd0, 0xa5, 0x20, 0x00, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x50, - 0x2e, 0x08, 0x1a, 0x58, 0x2e, 0x08, 0x1a, 0x54, - 0x2e, 0x08, 0x1a, 0x5c, 0x2e, 0x08, 0x1a, 0x60, - 0x00, 0x00, 0xff, 0xff, 0xb5, 0xb0, 0xb0, 0x81, - 0xab, 0x00, 0x70, 0x1a, 0x1c, 0x0c, 0x1c, 0x07, - 0xb0, 0x82, 0xf7, 0xff, 0xfd, 0x93, 0x25, 0x01, - 0x28, 0x01, 0xd1, 0x01, 0x1c, 0x28, 0xe0, 0x11, - 0xab, 0x00, 0x80, 0x1c, 0xa8, 0x02, 0x90, 0x01, - 0x01, 0x3c, 0x4f, 0x08, 0x5b, 0x38, 0x46, 0x6a, - 0x21, 0x05, 0xf0, 0x04, 0xfe, 0xb1, 0x28, 0x00, - 0xda, 0x03, 0x19, 0xe1, 0x81, 0x0d, 0x1c, 0x28, - 0xe0, 0x00, 0x20, 0x00, 0xb0, 0x03, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x50, - 0xb5, 0xf0, 0x1c, 0x14, 0x1c, 0x0d, 0x1c, 0x07, - 0xb0, 0x82, 0xf7, 0xff, 0xfd, 0x6f, 0x26, 0x01, - 0x28, 0x01, 0xd1, 0x01, 0x1c, 0x30, 0xe0, 0x10, - 0xab, 0x00, 0x80, 0x1d, 0x94, 0x01, 0x01, 0x3c, - 0x4f, 0x08, 0x5b, 0x38, 0x46, 0x6a, 0x21, 0x04, - 0xf0, 0x04, 0xfe, 0x8e, 0x28, 0x00, 0xda, 0x03, - 0x19, 0xe1, 0x81, 0x0e, 0x1c, 0x30, 0xe0, 0x00, - 0x20, 0x00, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x54, 0x50, - 0xb5, 0xb0, 0xb0, 0x86, 0x90, 0x05, 0x91, 0x04, - 0x20, 0x00, 0x90, 0x01, 0x1c, 0x14, 0x46, 0x6a, - 0xa8, 0x02, 0xa9, 0x01, 0xb4, 0x07, 0xaa, 0x06, - 0xb4, 0x04, 0x1c, 0x1f, 0x21, 0x1d, 0x20, 0x00, - 0xaa, 0x09, 0xab, 0x08, 0xf0, 0x00, 0xf8, 0x82, - 0x25, 0x00, 0x43, 0xed, 0xb0, 0x04, 0x28, 0x00, - 0xdb, 0x3b, 0x46, 0x6a, 0xa8, 0x02, 0xa9, 0x01, - 0xb4, 0x07, 0xaa, 0x06, 0xb4, 0x04, 0x21, 0x1c, - 0x20, 0x00, 0xaa, 0x09, 0xab, 0x08, 0xf0, 0x00, - 0xf8, 0x71, 0xb0, 0x04, 0x28, 0x00, 0xdb, 0x2c, - 0x46, 0x6a, 0xa8, 0x02, 0xa9, 0x01, 0xb4, 0x07, - 0xaa, 0x06, 0xb4, 0x04, 0x21, 0x15, 0x20, 0x00, - 0xaa, 0x09, 0xab, 0x08, 0xf0, 0x00, 0xf8, 0x62, - 0xb0, 0x04, 0x28, 0x00, 0xdb, 0x1d, 0x46, 0x6a, - 0xa8, 0x02, 0xa9, 0x01, 0xb4, 0x07, 0xaa, 0x06, - 0xb4, 0x04, 0x21, 0x20, 0x20, 0x00, 0xaa, 0x09, - 0xab, 0x08, 0xf0, 0x00, 0xf8, 0x53, 0xb0, 0x04, - 0x28, 0x00, 0xdb, 0x0e, 0x46, 0x6a, 0xa8, 0x02, - 0xa9, 0x01, 0xb4, 0x07, 0xaa, 0x06, 0xb4, 0x04, - 0x21, 0x1a, 0x20, 0x00, 0xaa, 0x09, 0xab, 0x08, - 0xf0, 0x00, 0xf8, 0x44, 0xb0, 0x04, 0x28, 0x00, - 0xda, 0x01, 0x1c, 0x28, 0xe0, 0x3a, 0x98, 0x02, - 0x80, 0x20, 0x20, 0x01, 0x90, 0x03, 0x43, 0xc4, - 0x46, 0x6a, 0xa8, 0x02, 0xa9, 0x01, 0xb4, 0x07, - 0xaa, 0x06, 0xb4, 0x04, 0x21, 0x1b, 0x20, 0x00, - 0xaa, 0x09, 0xab, 0x08, 0xf0, 0x00, 0xf8, 0x2e, - 0xb0, 0x04, 0x28, 0x00, 0xd0, 0xf0, 0x42, 0xa0, - 0xd0, 0xee, 0x28, 0x00, 0xdb, 0xe5, 0x46, 0x6a, - 0xa8, 0x02, 0xa9, 0x01, 0xb4, 0x07, 0xaa, 0x06, - 0xb4, 0x04, 0x21, 0x14, 0x20, 0x00, 0xaa, 0x09, - 0xab, 0x08, 0xf0, 0x00, 0xf8, 0x1b, 0xb0, 0x04, - 0x28, 0x00, 0xdb, 0xd6, 0x46, 0x6a, 0xa8, 0x02, - 0xa9, 0x01, 0xb4, 0x07, 0xaa, 0x06, 0xb4, 0x04, - 0x21, 0xff, 0x20, 0x00, 0xaa, 0x09, 0xab, 0x08, - 0xf0, 0x00, 0xf8, 0x0c, 0xb0, 0x04, 0x28, 0x00, - 0xdb, 0xc7, 0x98, 0x01, 0x28, 0x0f, 0xd1, 0xc4, - 0x70, 0x38, 0x20, 0x01, 0xb0, 0x06, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x06, 0x08, - 0x0e, 0x00, 0xb0, 0x83, 0x90, 0x00, 0x25, 0x00, - 0x24, 0x00, 0x26, 0x00, 0x1c, 0x17, 0x22, 0x00, - 0x21, 0x00, 0xb0, 0x87, 0x91, 0x04, 0x98, 0x07, - 0x28, 0xff, 0xd1, 0x0b, 0x68, 0x38, 0x78, 0x00, - 0x28, 0xff, 0xd1, 0x07, 0x9b, 0x0d, 0x68, 0x18, - 0x28, 0x01, 0xd1, 0x03, 0x20, 0x00, 0x9b, 0x0d, - 0x60, 0x18, 0xe1, 0x87, 0x68, 0x38, 0x78, 0x01, - 0x78, 0x43, 0x93, 0x05, 0x30, 0x02, 0x32, 0x02, - 0x60, 0x38, 0x92, 0x06, 0x9a, 0x07, 0x42, 0x8a, - 0xd1, 0x5b, 0x21, 0x01, 0x91, 0x04, 0x9a, 0x07, - 0x2a, 0x1b, 0xd0, 0x57, 0xdc, 0x0b, 0x2a, 0x14, - 0xd0, 0x5a, 0x2a, 0x15, 0xd0, 0x11, 0x2a, 0x1a, - 0xd1, 0x4f, 0x78, 0x02, 0x07, 0x91, 0x0f, 0x89, - 0x29, 0x01, 0xdd, 0x14, 0xe0, 0x10, 0x2a, 0xc0, - 0xd0, 0x73, 0x2a, 0xc1, 0xd1, 0x45, 0xa1, 0xb6, - 0xf0, 0x16, 0xf9, 0x4c, 0x28, 0x00, 0xd1, 0x07, - 0xe1, 0x47, 0x78, 0x01, 0x29, 0x05, 0xd1, 0x03, - 0x78, 0x40, 0x28, 0x00, 0xd1, 0x00, 0xe1, 0x40, - 0x20, 0x00, 0x43, 0xc0, 0xe1, 0x56, 0x23, 0x3c, - 0x40, 0x1a, 0x78, 0x40, 0x9b, 0x16, 0x60, 0x18, - 0x29, 0x00, 0xd1, 0x02, 0x68, 0x38, 0x78, 0x80, - 0xe0, 0x04, 0x68, 0x38, 0x78, 0x83, 0x78, 0xc0, - 0x02, 0x00, 0x18, 0x18, 0x9b, 0x14, 0x60, 0x18, - 0x98, 0x14, 0x68, 0x00, 0x4b, 0xa8, 0x42, 0x98, - 0xdc, 0xe6, 0x68, 0x38, 0x18, 0x43, 0x78, 0xdb, - 0x08, 0x5b, 0xd3, 0xe1, 0x18, 0x89, 0x31, 0x04, - 0x18, 0x40, 0x90, 0x02, 0x9b, 0x0d, 0x68, 0x18, - 0x9a, 0x06, 0x1a, 0x80, 0x9a, 0x05, 0x1a, 0x51, - 0x1a, 0x40, 0x90, 0x03, 0xaa, 0x14, 0xca, 0x07, - 0xb4, 0x07, 0x9a, 0x16, 0xb4, 0x04, 0x21, 0xc0, - 0x98, 0x0b, 0xaa, 0x06, 0xab, 0x07, 0xf7, 0xff, - 0xff, 0x81, 0xb0, 0x04, 0x28, 0x00, 0xdb, 0xc7, - 0xe1, 0x07, 0xe1, 0x06, 0x78, 0x00, 0x09, 0x81, - 0x07, 0x89, 0xd1, 0x02, 0x21, 0x01, 0xe0, 0x01, - 0xe0, 0xc1, 0x21, 0x00, 0x9a, 0x13, 0x68, 0x12, - 0x40, 0x11, 0xd1, 0xb9, 0x23, 0xc0, 0x43, 0xdb, - 0x40, 0x18, 0x90, 0x00, 0x28, 0x0f, 0xd1, 0x01, - 0x99, 0x15, 0x60, 0x08, 0x20, 0x00, 0x99, 0x13, - 0x60, 0x08, 0x68, 0x39, 0x78, 0x08, 0x0a, 0x00, - 0xd3, 0x73, 0x78, 0x48, 0x28, 0x04, 0xd1, 0x71, - 0x78, 0x8a, 0x92, 0x09, 0x20, 0x0b, 0x40, 0x10, - 0xd0, 0x6d, 0x78, 0xcb, 0x20, 0x00, 0x22, 0x00, - 0x08, 0x5e, 0xd3, 0x00, 0x30, 0x01, 0x10, 0x5b, - 0xe0, 0x00, 0xe0, 0xa1, 0x06, 0x1b, 0x0e, 0x1b, - 0x32, 0x01, 0x2a, 0x08, 0xdb, 0xf4, 0x22, 0x04, - 0x1c, 0xc3, 0x2b, 0x04, 0xdb, 0x07, 0x5c, 0x8e, - 0x0a, 0x33, 0xd3, 0x00, 0x30, 0x01, 0x32, 0x01, - 0x1c, 0xc3, 0x42, 0x93, 0xda, 0xf7, 0x9a, 0x09, - 0x30, 0x01, 0x08, 0xd2, 0xd3, 0x25, 0x18, 0x0b, - 0x78, 0xda, 0x92, 0x08, 0x07, 0x92, 0x0f, 0x92, - 0x1c, 0x1e, 0x2a, 0x03, 0xd0, 0x09, 0x22, 0x00, - 0x79, 0x35, 0x0a, 0x2b, 0xd3, 0x04, 0x32, 0x01, - 0x18, 0xb3, 0x79, 0x1d, 0x0a, 0x2b, 0xd2, 0xfa, - 0x1c, 0x55, 0x23, 0x1c, 0x9a, 0x08, 0x40, 0x1a, - 0x2a, 0x1c, 0xd0, 0x0b, 0x22, 0x00, 0x19, 0x73, - 0x79, 0x1c, 0x1c, 0x1e, 0x0a, 0x23, 0xd3, 0x04, - 0x32, 0x01, 0x18, 0xb3, 0x79, 0x1c, 0x0a, 0x23, - 0xd2, 0xfa, 0x1c, 0x54, 0x19, 0x40, 0x19, 0x00, - 0x30, 0x01, 0x9a, 0x09, 0x09, 0x12, 0xd3, 0x0e, - 0x18, 0x0a, 0x78, 0xd6, 0x0a, 0x33, 0xd3, 0x09, - 0x79, 0x12, 0x23, 0xc0, 0x40, 0x13, 0x09, 0x9d, - 0x23, 0x30, 0x40, 0x1a, 0x09, 0x14, 0x19, 0x40, - 0x19, 0x00, 0x30, 0x01, 0x30, 0x01, 0x9a, 0x09, - 0x09, 0x52, 0xd3, 0x05, 0x18, 0x0a, 0x78, 0xd2, - 0x09, 0x52, 0xd3, 0x00, 0x30, 0x02, 0x30, 0x01, - 0x9a, 0x09, 0x09, 0x52, 0x07, 0x92, 0xd0, 0x11, - 0x18, 0x0a, 0x78, 0xd2, 0x23, 0x18, 0x40, 0x13, - 0x08, 0xdd, 0x23, 0x60, 0x40, 0x13, 0x09, 0x5c, - 0xe0, 0x02, 0xe0, 0x2c, 0xe0, 0x2b, 0xe0, 0x2a, - 0x0a, 0x12, 0xd3, 0x00, 0x00, 0x64, 0x19, 0x40, - 0x19, 0x00, 0x30, 0x01, 0x30, 0x03, 0x18, 0x09, - 0x91, 0x02, 0x9b, 0x0d, 0x68, 0x19, 0x9a, 0x06, - 0x1a, 0x89, 0x1a, 0x08, 0x90, 0x03, 0xaa, 0x14, - 0xca, 0x07, 0xb4, 0x07, 0x9a, 0x16, 0xb4, 0x04, - 0x21, 0xc0, 0x98, 0x0b, 0xaa, 0x06, 0xab, 0x07, - 0xf7, 0xff, 0xfe, 0xd0, 0xb0, 0x04, 0x28, 0x00, - 0xdb, 0x0d, 0xaa, 0x14, 0xca, 0x07, 0xb4, 0x07, - 0x9a, 0x16, 0xb4, 0x04, 0x21, 0xc1, 0x98, 0x0b, - 0xaa, 0x06, 0xab, 0x07, 0xf7, 0xff, 0xfe, 0xc2, - 0xb0, 0x04, 0x28, 0x00, 0xda, 0x02, 0x26, 0x01, - 0x43, 0xf6, 0xe0, 0x46, 0x98, 0x00, 0x9a, 0x16, - 0x68, 0x11, 0x42, 0x88, 0xd1, 0x01, 0x26, 0x01, - 0xe0, 0x3f, 0x26, 0x00, 0xe0, 0x3d, 0x9a, 0x05, - 0x2a, 0x00, 0xd0, 0x00, 0xe6, 0xf8, 0xe0, 0x38, - 0x99, 0x0a, 0x29, 0x1b, 0xd1, 0x05, 0xa1, 0x2f, - 0xf0, 0x16, 0xf8, 0x34, 0x28, 0x00, 0xd1, 0xf5, - 0xe0, 0x2f, 0x9a, 0x05, 0x2a, 0x0e, 0xd1, 0xf1, - 0x78, 0x01, 0x29, 0x41, 0xd1, 0xee, 0x78, 0x40, - 0x28, 0x02, 0xd1, 0xeb, 0xa0, 0x2a, 0xf0, 0x16, - 0xf8, 0x51, 0x90, 0x01, 0x68, 0x38, 0x9a, 0x01, - 0x30, 0x02, 0xa1, 0x27, 0xf0, 0x16, 0xf8, 0x6c, - 0x28, 0x00, 0xd1, 0xdf, 0x68, 0x38, 0x9a, 0x01, - 0x18, 0x80, 0x78, 0x80, 0xf0, 0x00, 0xf8, 0x4a, - 0x28, 0x00, 0xd0, 0xd7, 0x68, 0x38, 0x9a, 0x01, - 0x18, 0x80, 0x78, 0xc1, 0x29, 0x2e, 0xd1, 0xd1, - 0x79, 0x00, 0xf0, 0x00, 0xf8, 0x3f, 0x28, 0x00, - 0xd0, 0xcc, 0x68, 0x38, 0x9a, 0x01, 0x18, 0x80, - 0x79, 0x40, 0xf0, 0x00, 0xf8, 0x37, 0x28, 0x00, - 0xd0, 0xc4, 0x9a, 0x06, 0x9b, 0x05, 0x18, 0xd2, - 0x9b, 0x0d, 0x68, 0x18, 0x42, 0x82, 0xda, 0xbd, - 0x68, 0x38, 0x9b, 0x05, 0x18, 0xc0, 0x60, 0x38, - 0x9b, 0x0d, 0x68, 0x18, 0x1a, 0x80, 0x60, 0x18, - 0x99, 0x04, 0x29, 0x00, 0xd1, 0x00, 0xe6, 0x6e, - 0x98, 0x07, 0x28, 0x1b, 0xd1, 0x01, 0x1c, 0x30, - 0xe0, 0x00, 0x20, 0x01, 0xb0, 0x0a, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x44, 0x56, 0x42, 0x5f, 0x43, 0x49, 0x5f, 0x4d, - 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xfe, 0x44, 0x56, 0x42, 0x5f, - 0x48, 0x4f, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x56, 0x42, 0x5f, 0x43, 0x49, 0x5f, 0x56, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x0e, 0x09, - 0x22, 0xf0, 0x40, 0x0a, 0x20, 0x00, 0x2a, 0x30, - 0xd1, 0x04, 0x07, 0x09, 0x0f, 0x09, 0x29, 0x09, - 0xdc, 0x00, 0x20, 0x01, 0x47, 0x70, 0xb5, 0xf3, - 0x26, 0x00, 0x1c, 0x07, 0xb0, 0x85, 0x48, 0x4f, - 0x90, 0x04, 0x23, 0x10, 0x5e, 0xc0, 0x22, 0x08, - 0x92, 0x01, 0x01, 0x01, 0x91, 0x03, 0x4a, 0x4c, - 0x92, 0x02, 0x18, 0x8d, 0x89, 0x29, 0x4c, 0x4b, - 0x29, 0x02, 0xd1, 0x47, 0x46, 0x6a, 0x23, 0x01, - 0x1d, 0xf9, 0x31, 0x01, 0xf7, 0xff, 0xfc, 0xc2, - 0x1c, 0x01, 0xd0, 0x16, 0x20, 0x04, 0x22, 0x03, - 0x29, 0x01, 0xd0, 0x2b, 0x29, 0x04, 0xd1, 0x6e, - 0x70, 0x22, 0x80, 0x60, 0x99, 0x03, 0x9a, 0x02, - 0x5a, 0x50, 0x80, 0xa0, 0x21, 0x02, 0x71, 0xa1, - 0x22, 0x08, 0x99, 0x06, 0x80, 0x0a, 0x1c, 0x38, - 0x1c, 0x21, 0xf0, 0x15, 0xff, 0x4b, 0x26, 0x03, - 0xe0, 0x5d, 0x21, 0x02, 0x70, 0x21, 0xa8, 0x00, - 0x88, 0x00, 0x30, 0x07, 0x04, 0x00, 0x0c, 0x00, - 0x80, 0x60, 0x99, 0x03, 0x9a, 0x02, 0x5a, 0x51, - 0x80, 0xa1, 0xa9, 0x00, 0x88, 0x09, 0x80, 0xe1, - 0x30, 0x04, 0x99, 0x06, 0x80, 0x08, 0x9a, 0x01, - 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x15, 0xff, 0x32, - 0x26, 0x02, 0xe0, 0x44, 0x81, 0x2a, 0x70, 0x20, - 0x80, 0x60, 0x99, 0x03, 0x9a, 0x02, 0x5a, 0x50, - 0x80, 0xa0, 0x22, 0x08, 0x99, 0x06, 0x80, 0x0a, - 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x15, 0xff, 0x22, - 0x26, 0x04, 0xe0, 0x34, 0x21, 0xff, 0x31, 0x01, - 0x1d, 0x2a, 0xf7, 0xff, 0xfa, 0x2d, 0x1c, 0x01, - 0x20, 0x0c, 0x29, 0x00, 0xd0, 0x16, 0x29, 0x07, - 0xd1, 0x29, 0x26, 0x01, 0x70, 0x26, 0x21, 0x08, - 0x80, 0x61, 0x99, 0x03, 0x9a, 0x02, 0x5a, 0x51, - 0x80, 0xa1, 0x21, 0x02, 0x71, 0xa1, 0x68, 0x69, - 0x81, 0x21, 0x99, 0x06, 0x80, 0x08, 0x1c, 0x02, - 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x15, 0xff, 0x02, - 0x81, 0x2e, 0xe0, 0x13, 0x23, 0x01, 0x70, 0x23, - 0x21, 0x08, 0x80, 0x61, 0x99, 0x03, 0x9a, 0x02, - 0x5a, 0x51, 0x80, 0xa1, 0x71, 0xa3, 0x68, 0x69, - 0x81, 0x21, 0x99, 0x06, 0x80, 0x08, 0x1c, 0x02, - 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x15, 0xfe, 0xee, - 0x21, 0x02, 0x81, 0x29, 0x26, 0x01, 0x98, 0x04, - 0x8a, 0x00, 0x30, 0x01, 0x99, 0x04, 0x82, 0x08, - 0x23, 0x10, 0x98, 0x04, 0x5e, 0xc0, 0x28, 0x02, - 0xd1, 0x02, 0x20, 0x00, 0x99, 0x04, 0x82, 0x08, - 0x1c, 0x30, 0xb0, 0x05, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x54, - 0x2e, 0x08, 0x54, 0x50, 0x2e, 0x08, 0x54, 0x40, - 0xb5, 0x80, 0x27, 0x00, 0x78, 0x00, 0x49, 0x0d, - 0x72, 0x08, 0x7a, 0x0b, 0x48, 0x0c, 0x2b, 0x01, - 0xd1, 0x06, 0xca, 0x08, 0xc0, 0x08, 0xca, 0x08, - 0xc0, 0x08, 0xca, 0x0c, 0xc0, 0x0c, 0xe0, 0x07, - 0x68, 0xc9, 0x60, 0x01, 0x1c, 0x08, 0x49, 0x07, - 0xf7, 0xff, 0xff, 0x41, 0x1c, 0x07, 0xd0, 0x01, - 0xf0, 0x00, 0xf8, 0x50, 0x1c, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x6c, - 0x2e, 0x08, 0x54, 0x70, 0x2e, 0x08, 0x1a, 0x7c, - 0xb5, 0xb0, 0x24, 0x00, 0x4f, 0x17, 0x72, 0x3c, - 0x20, 0x01, 0xf0, 0x02, 0xff, 0xc3, 0x28, 0x00, - 0xd1, 0x03, 0x43, 0xc0, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0xf7, 0xff, 0xf9, 0x25, 0x28, 0x00, - 0xdc, 0x04, 0x20, 0x01, 0x43, 0xc0, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x25, 0x01, - 0x49, 0x0d, 0x00, 0x82, 0x18, 0x53, 0x70, 0x9d, - 0x52, 0x8c, 0x30, 0x01, 0x28, 0x02, 0xdb, 0xf8, - 0x68, 0xf8, 0x28, 0x00, 0xd1, 0x0a, 0x20, 0xff, - 0x30, 0x0d, 0xf0, 0x02, 0xff, 0x67, 0x60, 0xf8, - 0x28, 0x00, 0xd1, 0x03, 0x38, 0x03, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x28, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x6c, - 0x2e, 0x08, 0x1a, 0x6c, 0xb5, 0x80, 0x4f, 0x06, - 0x68, 0xf8, 0xf0, 0x02, 0xff, 0x79, 0x20, 0x00, - 0x60, 0xf8, 0xf7, 0xff, 0xf9, 0x53, 0xf0, 0x02, - 0xfe, 0x45, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x6c, 0xb5, 0x80, 0x21, 0x00, - 0x48, 0x18, 0x7a, 0x02, 0x48, 0x18, 0x2a, 0x01, - 0xd1, 0x0e, 0x78, 0x42, 0x2a, 0x13, 0xd1, 0x03, - 0x68, 0x87, 0xf0, 0x00, 0xf8, 0x2b, 0x1c, 0x01, - 0x29, 0x00, 0xd1, 0x02, 0x1c, 0x38, 0xf0, 0x02, - 0xff, 0x5b, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x68, 0x00, 0x78, 0x00, 0x28, 0x01, 0xd0, 0x14, - 0x28, 0x02, 0xd0, 0x08, 0x28, 0x03, 0xd0, 0x0b, - 0x28, 0x04, 0xd1, 0xf2, 0xf0, 0x00, 0xf8, 0x8c, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0xf0, 0x00, - 0xf8, 0x6b, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0xf0, 0x00, 0xf8, 0x4c, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0xf0, 0x00, 0xf8, 0x23, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x6c, - 0x2e, 0x08, 0x54, 0x70, 0xb5, 0x80, 0xb0, 0x83, - 0x4f, 0x0b, 0x88, 0xb8, 0xf0, 0x00, 0xf8, 0xae, - 0x28, 0x00, 0xdb, 0x0a, 0x88, 0xf9, 0xab, 0x02, - 0x80, 0x19, 0x68, 0xb9, 0x91, 0x01, 0x46, 0x6b, - 0x21, 0x13, 0xaa, 0x01, 0xf0, 0x00, 0xf8, 0xd6, - 0xe0, 0x01, 0x20, 0x00, 0x90, 0x00, 0x98, 0x00, - 0xb0, 0x03, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x70, 0xb5, 0xf0, 0xb0, 0x83, - 0x4e, 0x0f, 0x68, 0x30, 0x88, 0x84, 0x1c, 0x20, - 0xf0, 0x00, 0xf8, 0x6e, 0x25, 0x01, 0x1c, 0x07, - 0xd4, 0x11, 0x68, 0x30, 0x79, 0x81, 0xab, 0x01, - 0x70, 0x19, 0x89, 0x00, 0x80, 0x58, 0x46, 0x6b, - 0x21, 0x01, 0x1c, 0x38, 0xaa, 0x01, 0xf0, 0x00, - 0xf8, 0xb5, 0x28, 0x00, 0xd1, 0x03, 0x1c, 0x38, - 0x1c, 0x21, 0xf0, 0x00, 0xf8, 0x91, 0x1c, 0x28, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x70, 0xb5, 0x90, 0xb0, 0x83, - 0x4c, 0x0a, 0x68, 0x20, 0x88, 0x80, 0xf0, 0x00, - 0xf8, 0x4b, 0x27, 0x01, 0x28, 0x00, 0xdb, 0x08, - 0x68, 0x21, 0x79, 0x89, 0xab, 0x01, 0x70, 0x19, - 0x46, 0x6b, 0x21, 0x03, 0xaa, 0x01, 0xf0, 0x00, - 0xf8, 0x95, 0x1c, 0x38, 0xb0, 0x03, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x70, - 0xb5, 0x90, 0xb0, 0x83, 0x4c, 0x0b, 0x68, 0x20, - 0x88, 0x80, 0xf0, 0x00, 0xf8, 0x53, 0x27, 0x01, - 0x28, 0x00, 0xdb, 0x0a, 0x68, 0x21, 0x88, 0xca, - 0xab, 0x02, 0x80, 0x1a, 0x31, 0x08, 0x91, 0x01, - 0x46, 0x6b, 0x21, 0x02, 0xaa, 0x01, 0xf0, 0x00, - 0xf8, 0x79, 0x1c, 0x38, 0xb0, 0x03, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x70, - 0xb5, 0xb0, 0xb0, 0x81, 0x48, 0x0b, 0x68, 0x00, - 0x88, 0x84, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x36, - 0x25, 0x01, 0x1c, 0x07, 0xd4, 0x09, 0x46, 0x6b, - 0x22, 0x00, 0x21, 0x04, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x61, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x00, - 0xf8, 0x3f, 0x1c, 0x28, 0xb0, 0x01, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x70, - 0xb4, 0x80, 0x04, 0x03, 0x0c, 0x1b, 0x20, 0x00, - 0x49, 0x0d, 0x00, 0x82, 0x18, 0x57, 0x78, 0xbf, - 0x2f, 0x01, 0xd1, 0x06, 0x00, 0x87, 0x53, 0xcb, - 0x23, 0x02, 0x18, 0x51, 0x70, 0x8b, 0xbc, 0x80, - 0x47, 0x70, 0x5a, 0x8a, 0x42, 0x9a, 0xd1, 0x03, - 0x20, 0x01, 0x43, 0xc0, 0xbc, 0x80, 0x47, 0x70, - 0x30, 0x01, 0x28, 0x02, 0xdb, 0xe9, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0x6c, 0xb4, 0x80, 0x04, 0x02, - 0x0c, 0x12, 0x20, 0x00, 0x49, 0x07, 0x00, 0x83, - 0x18, 0x5f, 0x78, 0xbf, 0x2f, 0x01, 0xd0, 0x02, - 0x5a, 0xcb, 0x42, 0x93, 0xd0, 0x04, 0x30, 0x01, - 0x28, 0x02, 0xdb, 0xf4, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x1a, 0x6c, - 0xb4, 0x80, 0x28, 0x00, 0xda, 0x05, 0x28, 0x02, - 0xdb, 0x03, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x80, - 0x47, 0x70, 0x23, 0x01, 0x00, 0x82, 0x49, 0x03, - 0x18, 0x57, 0x70, 0xbb, 0x23, 0x00, 0x52, 0x8b, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x1a, 0x6c, - 0xb5, 0x00, 0x49, 0x03, 0x78, 0x08, 0xf0, 0x02, - 0xfd, 0x77, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x70, 0xb5, 0x90, 0x06, 0x09, - 0x0e, 0x09, 0x00, 0x87, 0x4c, 0x0a, 0x19, 0x3f, - 0x78, 0xbf, 0x2f, 0x02, 0xd0, 0x06, 0x2f, 0x03, - 0xd1, 0x09, 0xf0, 0x00, 0xf8, 0x39, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xf0, 0x00, 0xf8, 0x0a, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0x6c, 0xb5, 0x90, 0x06, 0x09, - 0x0e, 0x09, 0x27, 0x01, 0x60, 0x1f, 0x29, 0x01, - 0xd1, 0x19, 0x23, 0x12, 0x49, 0x0e, 0x70, 0x0b, - 0x23, 0x11, 0x70, 0x4b, 0x23, 0x08, 0x80, 0x4b, - 0x00, 0x84, 0x4f, 0x0c, 0x5b, 0x38, 0x80, 0x88, - 0x78, 0x10, 0x71, 0x88, 0x88, 0x50, 0x81, 0x08, - 0xf7, 0xff, 0xff, 0xc2, 0x28, 0x00, 0xd0, 0x06, - 0x20, 0x03, 0x19, 0xe1, 0x70, 0x88, 0x20, 0x01, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x70, 0x2e, 0x08, 0x1a, 0x6c, - 0xb5, 0xff, 0x06, 0x09, 0x0e, 0x09, 0x1c, 0x17, - 0x22, 0x01, 0xb0, 0x81, 0x9b, 0x04, 0x25, 0x01, - 0x00, 0x86, 0x60, 0x1a, 0x48, 0x38, 0x90, 0x00, - 0x4c, 0x38, 0x29, 0x02, 0xd0, 0x23, 0x29, 0x03, - 0xd0, 0x41, 0x29, 0x04, 0xd0, 0x4f, 0x29, 0x13, - 0xd1, 0x5e, 0x88, 0xba, 0x98, 0x00, 0x5b, 0x80, - 0x68, 0x39, 0xf7, 0xfe, 0xff, 0x9d, 0x1c, 0x05, - 0xd1, 0x11, 0x20, 0x12, 0x70, 0x20, 0x20, 0x15, - 0x70, 0x60, 0x20, 0x04, 0x80, 0x60, 0x98, 0x00, - 0x5b, 0x80, 0x80, 0xa0, 0xf7, 0xff, 0xff, 0x88, - 0x28, 0x00, 0xd0, 0x4b, 0x20, 0x00, 0x9b, 0x04, - 0x25, 0x01, 0x60, 0x18, 0xe0, 0x46, 0x20, 0x00, - 0x9b, 0x04, 0x60, 0x18, 0xe0, 0x41, 0x88, 0xb8, - 0xf0, 0x02, 0xfd, 0xac, 0x60, 0xa0, 0x1c, 0x01, - 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x3b, 0x20, 0x12, - 0x70, 0x20, 0x20, 0x13, 0x70, 0x60, 0x20, 0x08, - 0x80, 0x60, 0x98, 0x00, 0x5b, 0x80, 0x80, 0xa0, - 0x88, 0xb8, 0x80, 0xe0, 0x88, 0xba, 0x1c, 0x08, - 0x68, 0x39, 0xf0, 0x15, 0xfc, 0xb7, 0xf7, 0xff, - 0xff, 0x63, 0x28, 0x00, 0xd1, 0x26, 0x68, 0xa0, - 0xf0, 0x02, 0xfd, 0xb6, 0xe0, 0x21, 0x20, 0x12, - 0x70, 0x20, 0x20, 0x14, 0x70, 0x60, 0x20, 0x04, - 0x80, 0x60, 0x98, 0x00, 0x5b, 0x80, 0x80, 0xa0, - 0x78, 0x38, 0x80, 0xa0, 0xf7, 0xff, 0xff, 0x50, - 0x28, 0x00, 0xd1, 0x13, 0xe0, 0x11, 0x20, 0x12, - 0x70, 0x20, 0x70, 0x60, 0x20, 0x04, 0x80, 0x60, - 0x98, 0x00, 0x5b, 0x80, 0x80, 0xa0, 0xf7, 0xff, - 0xff, 0x43, 0x28, 0x00, 0xd0, 0x05, 0x20, 0x02, - 0x99, 0x00, 0x18, 0x71, 0x70, 0x88, 0xe0, 0x01, - 0xe7, 0xff, 0x25, 0x00, 0x1c, 0x28, 0xb0, 0x01, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x6c, 0x2e, 0x08, 0x54, 0x70, - 0xb5, 0xf0, 0x1c, 0x17, 0x06, 0x02, 0x0e, 0x12, - 0x04, 0x0c, 0x0c, 0x24, 0x1c, 0x59, 0x1c, 0x48, - 0x1c, 0x1d, 0x1c, 0x43, 0xb0, 0x81, 0x93, 0x00, - 0x1f, 0xd6, 0x3e, 0x89, 0x2e, 0x07, 0xd2, 0x51, - 0xa3, 0x01, 0x5d, 0x9b, 0x00, 0x5b, 0x44, 0x9f, - 0x03, 0x4d, 0x14, 0x3e, 0x4d, 0x27, 0x31, 0x00, - 0x70, 0x2a, 0x1c, 0x0d, 0x21, 0x02, 0x70, 0x29, - 0x1c, 0x01, 0x1c, 0x05, 0x1c, 0x20, 0xf0, 0x00, - 0xf8, 0xab, 0x88, 0xba, 0x68, 0x39, 0x1c, 0xa8, - 0xf0, 0x15, 0xfc, 0x5c, 0x88, 0xb8, 0x30, 0x04, - 0xe0, 0x3a, 0x70, 0x2a, 0x1c, 0x0d, 0x21, 0x07, - 0x70, 0x29, 0x1c, 0x05, 0x79, 0x38, 0x70, 0x28, - 0x9d, 0x00, 0x22, 0x04, 0x1c, 0x28, 0x1c, 0x39, - 0xf0, 0x15, 0xfc, 0x4c, 0x1c, 0x20, 0x1d, 0x29, - 0xf0, 0x00, 0xf8, 0x92, 0x20, 0x09, 0xe0, 0x27, - 0x70, 0x2a, 0x1c, 0x0d, 0x21, 0x02, 0x70, 0x29, - 0x1c, 0x01, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x88, - 0x20, 0x04, 0xe0, 0x1d, 0x70, 0x2a, 0x1c, 0x0d, - 0x21, 0x03, 0x70, 0x29, 0x1c, 0x05, 0x78, 0xb8, - 0x70, 0x28, 0x99, 0x00, 0x1c, 0x20, 0xf0, 0x00, - 0xf8, 0x7b, 0x20, 0x05, 0xe0, 0x10, 0x70, 0x2a, - 0x1c, 0x0d, 0x21, 0x06, 0x70, 0x29, 0x22, 0x04, - 0x1c, 0x39, 0x1c, 0x05, 0xf0, 0x15, 0xfc, 0x26, - 0x1c, 0x20, 0x1d, 0x29, 0xf0, 0x00, 0xf8, 0x6c, - 0x20, 0x08, 0xe0, 0x01, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf0, 0x1c, 0x0f, 0x78, 0x01, 0x9d, 0x05, - 0x70, 0x11, 0x78, 0x41, 0x78, 0x12, 0x1c, 0x86, - 0x30, 0x03, 0x3a, 0x90, 0x1c, 0x1c, 0x2a, 0x07, - 0xd2, 0x51, 0xa3, 0x02, 0x5c, 0x9b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x11, 0x4d, 0x4d, - 0x1b, 0x2e, 0x39, 0x00, 0x29, 0x02, 0xd1, 0x3d, - 0x1c, 0x30, 0x1c, 0x21, 0xf0, 0x00, 0xf8, 0x4e, - 0x1c, 0xb0, 0x60, 0x28, 0x1f, 0x38, 0x80, 0xa8, - 0x88, 0x20, 0x80, 0xe8, 0xe0, 0x37, 0x29, 0x04, - 0xd1, 0x30, 0x22, 0x04, 0x1c, 0x68, 0x1c, 0x31, - 0xf0, 0x15, 0xfb, 0xf0, 0x2f, 0x06, 0xd0, 0x2e, - 0xe0, 0x28, 0x29, 0x07, 0xd1, 0x26, 0x78, 0x31, - 0x71, 0x29, 0x1c, 0x01, 0x1c, 0x06, 0x22, 0x04, - 0x1c, 0x28, 0xf0, 0x15, 0xfb, 0xe3, 0x1d, 0x30, - 0x1c, 0x21, 0xf0, 0x00, 0xf8, 0x2f, 0x88, 0x20, - 0x80, 0xe8, 0x2f, 0x09, 0xd0, 0x1b, 0xe0, 0x15, - 0x29, 0x02, 0xd1, 0x13, 0x1c, 0x30, 0x1c, 0x21, - 0xf0, 0x00, 0xf8, 0x24, 0x88, 0x20, 0x80, 0x28, - 0x2f, 0x04, 0xd0, 0x10, 0xe0, 0x0a, 0x29, 0x03, - 0xd1, 0x08, 0x78, 0x31, 0x70, 0xa9, 0x1c, 0x21, - 0xf0, 0x00, 0xf8, 0x18, 0x88, 0x20, 0x80, 0x28, - 0x2f, 0x05, 0xd0, 0x04, 0x20, 0x01, 0x43, 0xc0, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x06, 0x00, 0x0e, 0x00, 0x0a, 0x02, 0x70, 0x0a, - 0x70, 0x48, 0x47, 0x70, 0x78, 0x02, 0x02, 0x12, - 0x78, 0x40, 0x18, 0x10, 0x80, 0x08, 0x47, 0x70, - 0xb5, 0x00, 0x78, 0x01, 0x48, 0x0b, 0x71, 0x01, - 0x79, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x02, - 0xd1, 0x0b, 0x48, 0x09, 0xca, 0x08, 0xc0, 0x08, - 0xca, 0x08, 0xc0, 0x08, 0xca, 0x0c, 0xc0, 0x0c, - 0xf0, 0x00, 0xf8, 0x37, 0x20, 0x00, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x80, - 0x2e, 0x08, 0x54, 0x80, 0xb5, 0x80, 0x20, 0x04, - 0xf0, 0x02, 0xfc, 0xa4, 0x22, 0x00, 0x28, 0x00, - 0xda, 0x03, 0x1c, 0x10, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x48, 0x0a, 0x71, 0x02, 0x21, 0x00, - 0x20, 0x01, 0x4b, 0x09, 0x01, 0x0f, 0x55, 0xd8, - 0x31, 0x01, 0x29, 0x20, 0xdb, 0xfa, 0x21, 0x00, - 0x4b, 0x06, 0x00, 0x4f, 0x53, 0xda, 0x31, 0x01, - 0x29, 0x10, 0xdb, 0xfa, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x80, - 0x2e, 0x08, 0x54, 0xa0, 0x2e, 0x08, 0x56, 0xa0, - 0xb5, 0x00, 0xf0, 0x02, 0xfb, 0x3b, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x80, 0x20, 0x00, 0x49, 0x1e, - 0x79, 0x0a, 0x49, 0x1e, 0x2a, 0x01, 0xd1, 0x26, - 0x78, 0x4a, 0x2a, 0x43, 0xd0, 0x1d, 0xdc, 0x09, - 0x2a, 0x31, 0xd0, 0x14, 0x2a, 0x33, 0xd0, 0x15, - 0x2a, 0x34, 0xd1, 0x25, 0x68, 0x8f, 0xf0, 0x00, - 0xf8, 0x2f, 0xe0, 0x21, 0x2a, 0x45, 0xd0, 0x06, - 0x2a, 0x46, 0xd0, 0x11, 0x2a, 0x48, 0xd1, 0x1b, - 0xf0, 0x00, 0xf8, 0xcc, 0xe0, 0x18, 0x68, 0x8f, - 0xf0, 0x00, 0xf8, 0x6a, 0xe0, 0x14, 0xf0, 0x00, - 0xf8, 0x8b, 0xe0, 0x11, 0xf0, 0x00, 0xf8, 0x92, - 0xe0, 0x0e, 0xf0, 0x00, 0xf8, 0xc9, 0xe0, 0x0b, - 0xf0, 0x00, 0xf8, 0xf0, 0xe0, 0x08, 0x88, 0x08, - 0x28, 0x70, 0xdb, 0x04, 0x28, 0x80, 0xda, 0x02, - 0xf0, 0x00, 0xf9, 0x0c, 0xe0, 0x00, 0x20, 0x01, - 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x38, 0xf0, 0x02, - 0xfc, 0x2b, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x80, 0x2e, 0x08, 0x54, 0x80, - 0xb5, 0x90, 0xb0, 0x85, 0xaa, 0x01, 0xb4, 0x04, - 0x4f, 0x1f, 0x89, 0xb9, 0x68, 0xb8, 0xaa, 0x05, - 0xab, 0x04, 0xf7, 0xff, 0xfe, 0xf9, 0x24, 0x00, - 0xb0, 0x01, 0x28, 0x00, 0xda, 0x01, 0x1c, 0x20, - 0xe0, 0x2d, 0xa8, 0x04, 0x78, 0x00, 0x28, 0x91, - 0xd0, 0x06, 0xa8, 0x03, 0x88, 0x00, 0xf0, 0x00, - 0xf9, 0x4f, 0x1c, 0x07, 0xd4, 0xf3, 0xe0, 0x10, - 0x79, 0x38, 0xab, 0x01, 0x70, 0x18, 0xa8, 0x01, - 0x78, 0x00, 0xf0, 0x00, 0xf8, 0xff, 0x28, 0x00, - 0xda, 0x06, 0x20, 0xf1, 0xab, 0x02, 0x70, 0x58, - 0xa8, 0x01, 0xf0, 0x00, 0xfe, 0x77, 0xe0, 0x12, - 0x1c, 0x07, 0x46, 0x6b, 0xa9, 0x04, 0x78, 0x09, - 0x1c, 0x38, 0xaa, 0x01, 0xf0, 0x00, 0xf9, 0xe2, - 0x28, 0x00, 0xd0, 0xd8, 0x01, 0x38, 0x49, 0x07, - 0x5c, 0x08, 0x28, 0x02, 0xd1, 0x02, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0x0c, 0x98, 0x00, 0xb0, 0x05, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x80, 0x2e, 0x08, 0x54, 0xa0, - 0xb5, 0x90, 0xb0, 0x81, 0x4c, 0x0e, 0x88, 0xa0, - 0xf0, 0x00, 0xf9, 0x1a, 0x1c, 0x07, 0xd4, 0x07, - 0x78, 0x61, 0x46, 0x6b, 0x22, 0x00, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0xc0, 0x28, 0x00, 0xd1, 0x01, - 0x20, 0x00, 0x90, 0x00, 0x01, 0x38, 0x49, 0x07, - 0x5c, 0x08, 0x28, 0x02, 0xd1, 0x02, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0xe8, 0x98, 0x00, 0xb0, 0x01, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x80, 0x2e, 0x08, 0x54, 0xa0, - 0xb5, 0x00, 0x48, 0x03, 0x79, 0x00, 0xf0, 0x00, - 0xfd, 0xef, 0x20, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x80, 0xb5, 0xf0, 0xb0, 0x83, - 0x4e, 0x14, 0x79, 0x30, 0xab, 0x00, 0x70, 0x18, - 0x27, 0x00, 0x4c, 0x13, 0x01, 0x3d, 0x5d, 0x60, - 0x28, 0x01, 0xd0, 0x13, 0x19, 0x29, 0x78, 0x4a, - 0x79, 0x30, 0x42, 0x82, 0xd0, 0x02, 0x79, 0x09, - 0x42, 0x81, 0xd1, 0x0b, 0x78, 0x71, 0x46, 0x6a, - 0x1c, 0x38, 0xab, 0x02, 0xf0, 0x00, 0xf9, 0x86, - 0x5d, 0x60, 0x28, 0x02, 0xd1, 0x02, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0xb4, 0x37, 0x01, 0x2f, 0x20, - 0xdb, 0xe4, 0xa8, 0x00, 0x78, 0x00, 0xf0, 0x00, - 0xfd, 0xd9, 0x98, 0x02, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x80, - 0x2e, 0x08, 0x54, 0xa0, 0xb5, 0x00, 0x48, 0x03, - 0x79, 0x00, 0xf0, 0x00, 0xfd, 0xe1, 0x20, 0x01, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x80, - 0xb5, 0x90, 0xb0, 0x83, 0x4c, 0x11, 0x88, 0xa0, - 0xf0, 0x00, 0xf8, 0xb2, 0x1c, 0x07, 0xd5, 0x01, - 0x20, 0x01, 0xe0, 0x0c, 0x79, 0xa0, 0xab, 0x01, - 0x70, 0x18, 0x79, 0xe0, 0x70, 0x58, 0x78, 0x61, - 0x46, 0x6a, 0x1c, 0x38, 0x33, 0x04, 0xf0, 0x00, - 0xf9, 0x51, 0x28, 0x00, 0xd1, 0x00, 0x90, 0x02, - 0x01, 0x38, 0x49, 0x07, 0x5c, 0x08, 0x28, 0x02, - 0xd1, 0x02, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x7a, - 0x98, 0x02, 0xb0, 0x03, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x54, 0x80, - 0x2e, 0x08, 0x54, 0xa0, 0xb5, 0x90, 0xb0, 0x81, - 0x4c, 0x0e, 0x88, 0xa0, 0xf0, 0x00, 0xf8, 0x88, - 0x1c, 0x07, 0xd5, 0x01, 0x20, 0x01, 0xe0, 0x07, - 0x78, 0x61, 0x46, 0x6b, 0x22, 0x00, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0x2c, 0x28, 0x00, 0xd1, 0x00, - 0x90, 0x00, 0x01, 0x38, 0x49, 0x06, 0x5c, 0x08, - 0x28, 0x02, 0xd1, 0x02, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x55, 0x98, 0x00, 0xb0, 0x01, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x80, - 0x2e, 0x08, 0x54, 0xa0, 0xb5, 0x80, 0xb0, 0x81, - 0x48, 0x0e, 0x88, 0x00, 0xf0, 0x00, 0xf8, 0x9e, - 0x1c, 0x07, 0xd5, 0x01, 0x20, 0x01, 0xe0, 0x11, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0xd3, 0x46, 0x6b, - 0x22, 0x00, 0x21, 0x70, 0x1c, 0x38, 0xf0, 0x00, - 0xf9, 0x05, 0x01, 0x38, 0x49, 0x06, 0x5c, 0x08, - 0x28, 0x02, 0xd1, 0x02, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x31, 0x98, 0x00, 0xb0, 0x01, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x80, - 0x2e, 0x08, 0x54, 0xa0, 0xb4, 0xb0, 0x06, 0x02, - 0x0e, 0x12, 0x49, 0x10, 0x23, 0x00, 0x5e, 0xcc, - 0x43, 0xdf, 0x2c, 0x20, 0xda, 0x17, 0x20, 0x00, - 0x4b, 0x0d, 0x01, 0x05, 0x5d, 0x5d, 0x2d, 0x01, - 0xd1, 0x0e, 0x25, 0x02, 0x01, 0x07, 0x55, 0xdd, - 0x18, 0xfb, 0x70, 0x5a, 0x1c, 0x42, 0x80, 0x5a, - 0x22, 0x00, 0x71, 0x1a, 0x80, 0xda, 0x81, 0x1a, - 0x1c, 0x62, 0x80, 0x0a, 0xbc, 0xb0, 0x47, 0x70, - 0x30, 0x01, 0x28, 0x20, 0xdb, 0xe9, 0x1c, 0x38, - 0xbc, 0xb0, 0x47, 0x70, 0x2e, 0x08, 0x1a, 0x80, - 0x2e, 0x08, 0x54, 0xa0, 0xb5, 0x80, 0x1c, 0x07, - 0xd5, 0x06, 0x2f, 0x20, 0xdb, 0x04, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x87, 0x21, 0x01, - 0x01, 0x38, 0x4a, 0x05, 0x54, 0x11, 0x48, 0x05, - 0x88, 0x01, 0x39, 0x01, 0x80, 0x01, 0x1c, 0x38, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0xa0, 0x2e, 0x08, 0x1a, 0x80, - 0xb4, 0x80, 0x04, 0x02, 0x0c, 0x12, 0x20, 0x00, - 0x49, 0x09, 0x01, 0x03, 0x5c, 0xcf, 0x2f, 0x01, - 0xd0, 0x06, 0x18, 0x5b, 0x88, 0x5f, 0x42, 0x97, - 0xd0, 0x07, 0x88, 0xdb, 0x42, 0x93, 0xd0, 0x04, - 0x30, 0x01, 0x28, 0x20, 0xdb, 0xf1, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0xa0, 0xb4, 0x90, 0x04, 0x02, - 0x0c, 0x12, 0x06, 0x0b, 0x0e, 0x1b, 0x20, 0x00, - 0x49, 0x0b, 0x01, 0x07, 0x5d, 0xcc, 0x2c, 0x01, - 0xd0, 0x0b, 0x18, 0x7f, 0x88, 0x7f, 0x42, 0x97, - 0xd1, 0x07, 0x01, 0x02, 0x18, 0x51, 0x71, 0x0b, - 0x1d, 0xc2, 0x32, 0x1a, 0x80, 0xca, 0xbc, 0x90, - 0x47, 0x70, 0x30, 0x01, 0x28, 0x20, 0xdb, 0xec, - 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x90, 0x47, 0x70, - 0x2e, 0x08, 0x54, 0xa0, 0xb4, 0x80, 0x04, 0x02, - 0x0c, 0x12, 0x20, 0x00, 0x49, 0x07, 0x01, 0x03, - 0x5c, 0xcf, 0x2f, 0x01, 0xd0, 0x03, 0x18, 0x5b, - 0x89, 0x1b, 0x42, 0x93, 0xd0, 0x04, 0x30, 0x01, - 0x28, 0x20, 0xdb, 0xf4, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x54, 0xa0, - 0xb5, 0x80, 0x04, 0x01, 0x0c, 0x09, 0x22, 0x00, - 0x20, 0x00, 0x4b, 0x0f, 0x00, 0x47, 0x5b, 0xdf, - 0x2f, 0x00, 0xd1, 0x06, 0x1d, 0xc2, 0x32, 0x69, - 0x04, 0x12, 0x0c, 0x12, 0x00, 0x40, 0x52, 0x1a, - 0xe0, 0x02, 0x30, 0x01, 0x28, 0x10, 0xdd, 0xf1, - 0x2a, 0x00, 0xd0, 0x09, 0x20, 0x01, 0x04, 0x80, - 0x43, 0x10, 0xf0, 0x02, 0xf9, 0xdf, 0x04, 0x00, - 0x0c, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xa0, 0xb5, 0x90, 0x1c, 0x07, - 0x01, 0x00, 0x49, 0x0e, 0x18, 0x44, 0x89, 0x20, - 0x28, 0x00, 0xd0, 0x13, 0xf0, 0x02, 0xfa, 0x02, - 0x20, 0x00, 0x49, 0x0b, 0x01, 0x3a, 0x4b, 0x09, - 0x18, 0xd2, 0x89, 0x13, 0x22, 0x00, 0x00, 0x47, - 0x5b, 0xcf, 0x42, 0x9f, 0xd1, 0x02, 0x00, 0x40, - 0x52, 0x0a, 0xe0, 0x02, 0x30, 0x01, 0x28, 0x10, - 0xdd, 0xf5, 0x81, 0x22, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x54, 0xa0, - 0x2e, 0x08, 0x56, 0xa0, 0xb5, 0x00, 0x49, 0x03, - 0x78, 0x08, 0xf0, 0x02, 0xf9, 0x41, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x54, 0x80, - 0xb5, 0x00, 0x49, 0x03, 0x78, 0x08, 0xf0, 0x02, - 0xf9, 0x37, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x90, 0xb5, 0x90, 0x06, 0x09, - 0x0e, 0x09, 0x1c, 0x1f, 0x01, 0x03, 0x4c, 0x1d, - 0x5c, 0xe3, 0x1e, 0x9c, 0x2c, 0x07, 0xd2, 0x31, - 0xa3, 0x01, 0x5d, 0x1b, 0x00, 0x5b, 0x44, 0x9f, - 0x09, 0x15, 0x03, 0x0f, 0x1b, 0x21, 0x27, 0x00, - 0x1c, 0x3b, 0xf0, 0x00, 0xf9, 0x23, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x3b, 0xf0, 0x00, - 0xf8, 0x27, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x3b, 0xf0, 0x00, 0xf8, 0x5d, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x3b, 0xf0, 0x00, - 0xfa, 0x51, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x3b, 0xf0, 0x00, 0xfb, 0x65, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x3b, 0xf0, 0x00, - 0xfa, 0xf1, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x3b, 0xf0, 0x00, 0xfb, 0x35, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0xa0, - 0xb5, 0xf0, 0x06, 0x09, 0x0e, 0x09, 0x1c, 0x1f, - 0x23, 0x01, 0x60, 0x3b, 0xb0, 0x81, 0x29, 0x91, - 0xd1, 0x23, 0x21, 0x45, 0x4b, 0x16, 0x70, 0x19, - 0x21, 0x42, 0x70, 0x59, 0x21, 0x08, 0x80, 0x59, - 0x01, 0x06, 0x4d, 0x14, 0x19, 0x74, 0x78, 0x60, - 0x71, 0x18, 0x88, 0x60, 0x80, 0xd8, 0x1c, 0x51, - 0x91, 0x00, 0x22, 0x04, 0x1d, 0xd8, 0x30, 0x01, - 0xf0, 0x15, 0xf8, 0xa8, 0xf7, 0xff, 0xff, 0x8a, - 0x28, 0x00, 0xd1, 0x01, 0x60, 0x38, 0xe0, 0x0f, - 0x22, 0x04, 0x99, 0x00, 0x1d, 0xe0, 0x30, 0x03, - 0xf0, 0x15, 0xf8, 0x9c, 0x20, 0x05, 0x55, 0xa8, - 0xe0, 0x03, 0x29, 0x7f, 0xdc, 0x01, 0x29, 0x45, - 0xd1, 0x01, 0x20, 0x00, 0x60, 0x38, 0x20, 0x01, - 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x80, 0x2e, 0x08, 0x54, 0xa0, - 0xb5, 0xff, 0x1c, 0x04, 0x06, 0x08, 0x0e, 0x00, - 0x21, 0x01, 0xb0, 0x84, 0x9b, 0x07, 0x25, 0x01, - 0x60, 0x19, 0x4e, 0x55, 0x01, 0x21, 0x91, 0x03, - 0x28, 0x33, 0xd0, 0x5d, 0x28, 0x43, 0xd1, 0x5c, - 0x20, 0x09, 0xf0, 0x02, 0xf9, 0x57, 0x4f, 0x51, - 0x60, 0xb8, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x01, - 0xe0, 0x94, 0x9a, 0x06, 0x79, 0x51, 0x01, 0x20, - 0x4a, 0x4b, 0x18, 0x84, 0x1d, 0xe0, 0x30, 0x03, - 0x90, 0x02, 0x29, 0x00, 0xd0, 0x4a, 0x88, 0x60, - 0xf7, 0xff, 0xfe, 0xc8, 0x28, 0x00, 0xda, 0x20, - 0x20, 0xf1, 0xab, 0x01, 0x70, 0x18, 0x46, 0x68, - 0x22, 0x04, 0x99, 0x02, 0xf0, 0x15, 0xf8, 0x5a, - 0x20, 0x43, 0x70, 0x38, 0x20, 0x34, 0x70, 0x78, - 0x20, 0x0c, 0x80, 0x78, 0x78, 0x60, 0x71, 0x38, - 0x88, 0x61, 0x46, 0x6a, 0x20, 0x92, 0x68, 0xbb, - 0xf7, 0xff, 0xfb, 0xca, 0x81, 0xb8, 0xf7, 0xff, - 0xff, 0x2d, 0x28, 0x00, 0xd1, 0x03, 0x20, 0x00, - 0x9b, 0x07, 0x60, 0x18, 0xe0, 0x55, 0x20, 0x02, - 0xe0, 0x1e, 0x46, 0x68, 0x22, 0x04, 0x99, 0x02, - 0xf0, 0x15, 0xf8, 0x3c, 0x20, 0x43, 0x70, 0x38, - 0x20, 0x34, 0x70, 0x78, 0x20, 0x0c, 0x80, 0x78, - 0x9a, 0x06, 0x79, 0x50, 0x71, 0x38, 0x88, 0xe1, - 0x46, 0x6a, 0x20, 0x93, 0x68, 0xbb, 0xf7, 0xff, - 0xfb, 0xab, 0x81, 0xb8, 0xf7, 0xff, 0xff, 0x0e, - 0x28, 0x00, 0xd0, 0xe0, 0x20, 0x7d, 0x00, 0xc0, - 0xf7, 0xff, 0xfe, 0xbe, 0x81, 0x20, 0x20, 0x03, - 0x99, 0x03, 0x54, 0x70, 0x25, 0x01, 0xe0, 0x40, - 0xe0, 0x34, 0xe0, 0x37, 0x9a, 0x06, 0x79, 0x10, - 0xab, 0x01, 0x70, 0x18, 0x46, 0x68, 0x22, 0x04, - 0x99, 0x02, 0xf0, 0x15, 0xf8, 0x13, 0x20, 0x43, - 0x70, 0x38, 0x20, 0x34, 0x70, 0x78, 0x20, 0x0c, - 0x80, 0x78, 0x78, 0x60, 0x71, 0x38, 0x88, 0x61, - 0x46, 0x6a, 0x20, 0x92, 0x68, 0xbb, 0xf7, 0xff, - 0xfb, 0x83, 0x81, 0xb8, 0xf7, 0xff, 0xfe, 0xe6, - 0x28, 0x00, 0xd0, 0xb8, 0x9a, 0x06, 0x79, 0x10, - 0x28, 0x00, 0xd1, 0x13, 0x21, 0x45, 0x48, 0x14, - 0x70, 0x01, 0x21, 0x44, 0x70, 0x41, 0x27, 0x04, - 0x80, 0x47, 0x78, 0x61, 0x71, 0x81, 0x88, 0x61, - 0x80, 0x81, 0xf7, 0xff, 0xfe, 0xdd, 0x28, 0x00, - 0xd1, 0x01, 0x25, 0x00, 0xe0, 0x0d, 0x99, 0x03, - 0x54, 0x77, 0xe0, 0x0a, 0x20, 0x02, 0x99, 0x03, - 0x54, 0x70, 0xe0, 0x06, 0x28, 0x7f, 0xdc, 0x01, - 0x28, 0x45, 0xd1, 0x02, 0x20, 0x00, 0x9b, 0x07, - 0x60, 0x18, 0x1c, 0x28, 0xb0, 0x04, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0xa0, 0x2e, 0x08, 0x54, 0x80, - 0x2e, 0x08, 0x54, 0x90, 0xb5, 0xff, 0x06, 0x09, - 0x0e, 0x09, 0x22, 0x01, 0xb0, 0x83, 0x9b, 0x06, - 0x01, 0x00, 0x60, 0x1a, 0x90, 0x02, 0x4e, 0x98, - 0x19, 0x84, 0x4f, 0x98, 0x4d, 0x98, 0x29, 0x46, - 0xd0, 0x5d, 0xdc, 0x0e, 0x29, 0x33, 0xd0, 0x5b, - 0x29, 0x45, 0xd1, 0x5a, 0x89, 0xb8, 0x30, 0x04, - 0x04, 0x00, 0x0c, 0x00, 0xf0, 0x02, 0xf8, 0x96, - 0x60, 0xa8, 0x28, 0x00, 0xd1, 0x33, 0x20, 0x00, - 0xe0, 0xcf, 0x29, 0x90, 0xd0, 0x52, 0x29, 0x95, - 0xd1, 0x4b, 0x88, 0xe0, 0x28, 0x00, 0xd1, 0x6c, - 0x22, 0x05, 0x21, 0x04, 0x68, 0xb8, 0xf0, 0x02, - 0xf8, 0x8a, 0x60, 0xb8, 0x28, 0x00, 0xd0, 0xee, - 0x21, 0x00, 0xab, 0x00, 0x70, 0x99, 0x22, 0x43, - 0x70, 0x3a, 0x22, 0x34, 0x70, 0x7a, 0x21, 0x0c, - 0x80, 0x79, 0x78, 0x61, 0x71, 0x39, 0x88, 0x61, - 0x46, 0x6a, 0x1c, 0x03, 0x20, 0x96, 0xf7, 0xff, - 0xfb, 0x0f, 0x81, 0xb8, 0xf7, 0xff, 0xfe, 0x72, - 0x28, 0x00, 0xd0, 0xd8, 0x20, 0x45, 0x70, 0x28, - 0x20, 0x47, 0x70, 0x68, 0x20, 0x04, 0x80, 0x68, - 0x88, 0x60, 0x80, 0xa8, 0x21, 0x00, 0x71, 0xa9, - 0xf7, 0xff, 0xfe, 0x6e, 0xe0, 0xb0, 0x68, 0xb9, - 0x91, 0x00, 0x89, 0xb9, 0xab, 0x01, 0x80, 0x19, - 0x22, 0x43, 0x70, 0x2a, 0x22, 0x34, 0x70, 0x6a, - 0x21, 0x0c, 0x80, 0x69, 0x78, 0x61, 0x71, 0x29, - 0x88, 0x61, 0x46, 0x6a, 0x1c, 0x03, 0x20, 0x90, - 0xf7, 0xff, 0xfa, 0xea, 0x81, 0xa8, 0xf7, 0xff, - 0xfe, 0x57, 0x28, 0x00, 0xd1, 0x06, 0x68, 0xa8, - 0xf0, 0x02, 0xf8, 0x6a, 0xe7, 0xaf, 0xe0, 0x61, - 0xe0, 0x8b, 0xe0, 0xc5, 0x20, 0x00, 0x9b, 0x06, - 0x60, 0x18, 0xe0, 0x61, 0x88, 0xe0, 0x28, 0x00, - 0xd1, 0x1c, 0x9a, 0x05, 0x88, 0x90, 0xf0, 0x02, - 0xf8, 0x35, 0x60, 0xa8, 0x1c, 0x01, 0xd0, 0x9e, - 0x20, 0x45, 0x70, 0x28, 0x70, 0x68, 0x22, 0x0c, - 0x80, 0x6a, 0x88, 0x60, 0x80, 0xa8, 0x9a, 0x05, - 0x88, 0x90, 0x81, 0xa8, 0x89, 0xaa, 0x1c, 0x08, - 0x99, 0x05, 0x68, 0x09, 0xf0, 0x14, 0xff, 0x42, - 0xf7, 0xff, 0xfe, 0x2e, 0x28, 0x00, 0xd1, 0xdd, - 0xe7, 0xd5, 0xe0, 0x16, 0x99, 0x05, 0x88, 0xc9, - 0x42, 0x81, 0xd1, 0x05, 0x78, 0x60, 0x71, 0x38, - 0x68, 0xb8, 0x1c, 0x81, 0x88, 0x60, 0xe0, 0x03, - 0x79, 0x21, 0x71, 0x39, 0x68, 0xb9, 0x31, 0x02, - 0xf7, 0xff, 0xfb, 0x76, 0x22, 0x43, 0x70, 0x3a, - 0xf7, 0xff, 0xfe, 0x0c, 0x28, 0x00, 0xd0, 0xc1, - 0xe0, 0x2a, 0x22, 0x43, 0x70, 0x3a, 0x22, 0x34, - 0x70, 0x7a, 0x21, 0x0c, 0x80, 0x79, 0x9a, 0x05, - 0x88, 0x11, 0x42, 0x88, 0xd1, 0x0f, 0x78, 0x60, - 0x71, 0x38, 0x68, 0xb8, 0x1c, 0x81, 0x88, 0x60, - 0xf7, 0xff, 0xfb, 0x5e, 0x88, 0xe1, 0x79, 0x20, - 0x88, 0x62, 0x80, 0xe2, 0x78, 0x62, 0x71, 0x22, - 0x80, 0x61, 0x70, 0x60, 0xe0, 0x05, 0x79, 0x21, - 0x71, 0x39, 0x68, 0xb9, 0x31, 0x02, 0xf7, 0xff, - 0xfb, 0x4f, 0xf7, 0xff, 0xfd, 0xe7, 0x28, 0x00, - 0xd0, 0x9c, 0xe0, 0x23, 0x20, 0x04, 0xf0, 0x01, - 0xff, 0xdd, 0x60, 0xb8, 0x28, 0x00, 0xd1, 0x01, - 0x20, 0x01, 0xe0, 0x16, 0x25, 0x00, 0xab, 0x00, - 0x70, 0x9d, 0x22, 0x43, 0x70, 0x3a, 0x22, 0x34, - 0x70, 0x7a, 0x21, 0x0c, 0x80, 0x79, 0x78, 0x61, - 0x71, 0x39, 0x88, 0x61, 0x46, 0x6a, 0x1c, 0x03, - 0x20, 0x95, 0xf7, 0xff, 0xfa, 0x65, 0x81, 0xb8, - 0xf7, 0xff, 0xfd, 0xc8, 0x28, 0x00, 0xd1, 0x05, - 0x1c, 0x28, 0xb0, 0x03, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x7d, 0x00, 0xc0, - 0xf7, 0xff, 0xfd, 0x72, 0x81, 0x20, 0x20, 0x06, - 0xe0, 0x37, 0x88, 0xe0, 0x28, 0x00, 0xd0, 0x03, - 0x79, 0x20, 0x78, 0x61, 0x42, 0x88, 0xd1, 0x01, - 0x20, 0x02, 0xe0, 0x2e, 0x20, 0x04, 0xf0, 0x01, - 0xff, 0xa9, 0x60, 0xb8, 0x28, 0x00, 0xd0, 0xcb, - 0x21, 0x00, 0xab, 0x00, 0x70, 0x99, 0x79, 0x21, - 0x9a, 0x05, 0x78, 0x12, 0x42, 0x91, 0xd1, 0x02, - 0x78, 0x61, 0x88, 0x63, 0xe0, 0x00, 0x88, 0xe3, - 0x22, 0x43, 0x70, 0x3a, 0x22, 0x34, 0x70, 0x7a, - 0x22, 0x0c, 0x80, 0x7a, 0x71, 0x39, 0x46, 0x6a, - 0x1c, 0x05, 0x20, 0x95, 0x1c, 0x19, 0x1c, 0x2b, - 0xf7, 0xff, 0xfa, 0x2a, 0x81, 0xb8, 0xf7, 0xff, - 0xfd, 0x8d, 0x28, 0x00, 0xd1, 0x03, 0x21, 0x00, - 0x9b, 0x06, 0x60, 0x18, 0xe6, 0xef, 0x20, 0x7d, - 0x00, 0xc0, 0xf7, 0xff, 0xfd, 0x39, 0x81, 0x20, - 0x20, 0x08, 0x99, 0x02, 0x54, 0x70, 0xe7, 0x9f, - 0x29, 0x7f, 0xdd, 0x9d, 0xe7, 0x36, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0xa0, 0x2e, 0x08, 0x54, 0x80, - 0x2e, 0x08, 0x54, 0x90, 0xb5, 0xff, 0x06, 0x09, - 0x0e, 0x09, 0x22, 0x01, 0xb0, 0x83, 0x9b, 0x06, - 0x01, 0x05, 0x60, 0x1a, 0x4e, 0x4f, 0x19, 0xac, - 0x1d, 0xe2, 0x32, 0x03, 0x92, 0x02, 0x4f, 0x4e, - 0x29, 0x33, 0xd0, 0x61, 0x29, 0x70, 0xd0, 0x37, - 0x29, 0x94, 0xd1, 0x5e, 0xf7, 0xff, 0xfd, 0x3a, - 0x88, 0xe0, 0x99, 0x05, 0x88, 0xc9, 0x42, 0x88, - 0xd1, 0x06, 0x22, 0x04, 0x98, 0x02, 0x99, 0x05, - 0xf0, 0x14, 0xff, 0x2c, 0x28, 0x00, 0xd0, 0x01, - 0x20, 0x00, 0xe0, 0x2c, 0x99, 0x05, 0x79, 0x08, - 0xab, 0x01, 0x70, 0x18, 0x46, 0x68, 0x22, 0x04, - 0x99, 0x02, 0xf0, 0x14, 0xfe, 0x63, 0x20, 0x43, - 0x70, 0x38, 0x20, 0x34, 0x70, 0x78, 0x20, 0x0c, - 0x80, 0x78, 0x78, 0x60, 0x71, 0x38, 0x88, 0x61, - 0x46, 0x6a, 0x20, 0x92, 0x68, 0xbb, 0xf7, 0xff, - 0xf9, 0xd3, 0x81, 0xb8, 0xf7, 0xff, 0xfd, 0x36, - 0x28, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x9b, 0x06, - 0x60, 0x18, 0xe7, 0xdd, 0x99, 0x05, 0x79, 0x08, - 0x28, 0x00, 0xd1, 0x53, 0x20, 0x04, 0xe0, 0x52, - 0x20, 0x09, 0xf0, 0x01, 0xff, 0x23, 0x60, 0xb8, - 0x28, 0x00, 0xd1, 0x05, 0x20, 0x01, 0xb0, 0x03, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0xf1, 0xab, 0x01, 0x70, 0x18, 0x46, 0x68, - 0x22, 0x04, 0x99, 0x02, 0xf0, 0x14, 0xfe, 0x32, - 0x20, 0x43, 0x70, 0x38, 0x20, 0x34, 0x70, 0x78, - 0x20, 0x0c, 0x80, 0x78, 0x78, 0x60, 0x71, 0x38, - 0x88, 0x61, 0x46, 0x6a, 0x20, 0x92, 0x68, 0xbb, - 0xf7, 0xff, 0xf9, 0xa2, 0x81, 0xb8, 0xf7, 0xff, - 0xfd, 0x05, 0x28, 0x00, 0xd0, 0xb0, 0xe0, 0x29, - 0xe0, 0x00, 0xe0, 0x2a, 0x78, 0x60, 0x99, 0x05, - 0x78, 0x09, 0x42, 0x88, 0xd1, 0x01, 0x20, 0x07, - 0xe0, 0x21, 0x20, 0x09, 0xf0, 0x01, 0xfe, 0xf2, - 0x60, 0xb8, 0x28, 0x00, 0xd0, 0xa0, 0x20, 0xf1, - 0xab, 0x01, 0x70, 0x18, 0x46, 0x68, 0x22, 0x04, - 0x99, 0x02, 0xf0, 0x14, 0xfe, 0x07, 0x20, 0x43, - 0x70, 0x38, 0x20, 0x34, 0x70, 0x78, 0x20, 0x0c, - 0x80, 0x78, 0x78, 0x60, 0x71, 0x38, 0x88, 0x61, - 0x46, 0x6a, 0x20, 0x92, 0x68, 0xbb, 0xf7, 0xff, - 0xf9, 0x77, 0x81, 0xb8, 0xf7, 0xff, 0xfc, 0xda, - 0x28, 0x00, 0xd0, 0xa3, 0x20, 0x02, 0x55, 0x70, - 0xe7, 0xb0, 0x29, 0x7f, 0xdc, 0x01, 0x29, 0x45, - 0xd1, 0xac, 0x20, 0x00, 0x9b, 0x06, 0x60, 0x18, - 0xe7, 0xa8, 0x00, 0x00, 0x2e, 0x08, 0x54, 0xa0, - 0x2e, 0x08, 0x54, 0x80, 0xb5, 0xf0, 0x06, 0x09, - 0x0e, 0x09, 0x1c, 0x04, 0x20, 0x01, 0x60, 0x18, - 0x1c, 0x17, 0xb0, 0x82, 0x29, 0x70, 0xd0, 0x28, - 0x29, 0x94, 0xd1, 0x2c, 0x1c, 0x20, 0xf7, 0xff, - 0xfc, 0x95, 0x79, 0x38, 0x28, 0x00, 0xd1, 0x2d, - 0x20, 0x43, 0x4f, 0x19, 0x70, 0x38, 0x20, 0x34, - 0x70, 0x78, 0x20, 0x0c, 0x80, 0x78, 0x01, 0x25, - 0x4e, 0x16, 0x19, 0xac, 0x79, 0x20, 0x71, 0x38, - 0x88, 0xe1, 0x46, 0x6a, 0x20, 0x95, 0x68, 0xbb, - 0xf7, 0xff, 0xf9, 0x3e, 0x81, 0xb8, 0xf7, 0xff, - 0xfc, 0xa1, 0x28, 0x00, 0xd1, 0x01, 0x25, 0x00, - 0xe0, 0x14, 0x20, 0x7d, 0x00, 0xc0, 0xf7, 0xff, - 0xfc, 0x4f, 0x81, 0x20, 0x20, 0x08, 0x55, 0x70, - 0xe0, 0x0b, 0x1c, 0x20, 0x1c, 0x3a, 0xf7, 0xff, - 0xff, 0x1d, 0x1c, 0x05, 0xe0, 0x06, 0x29, 0x7f, - 0xdc, 0x01, 0x29, 0x45, 0xd1, 0x01, 0x20, 0x00, - 0x60, 0x18, 0x25, 0x01, 0x1c, 0x28, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x54, 0x80, 0x2e, 0x08, 0x54, 0xa0, - 0xb5, 0xf0, 0x06, 0x09, 0x0e, 0x09, 0x22, 0x01, - 0x26, 0x02, 0x01, 0x05, 0x60, 0x1a, 0x1c, 0x1f, - 0x4c, 0x0c, 0x29, 0x33, 0xd0, 0x08, 0x29, 0x70, - 0xd0, 0x08, 0x29, 0x96, 0xd1, 0x08, 0xf7, 0xff, - 0xfc, 0x49, 0x20, 0x00, 0x60, 0x38, 0xe0, 0x01, - 0xf7, 0xff, 0xfc, 0x44, 0x55, 0x66, 0xe0, 0x05, - 0x29, 0x7f, 0xdc, 0x01, 0x29, 0x45, 0xd1, 0x01, - 0x20, 0x00, 0x60, 0x38, 0x20, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0xa0, - 0xb5, 0xff, 0x06, 0x09, 0x0e, 0x09, 0xb0, 0x81, - 0x91, 0x00, 0x21, 0x01, 0xb0, 0x83, 0x9b, 0x07, - 0x60, 0x19, 0x91, 0x02, 0x01, 0x05, 0x99, 0x03, - 0x4e, 0x52, 0x19, 0xac, 0x4f, 0x52, 0x29, 0x33, - 0xd0, 0x4f, 0x29, 0x70, 0xd0, 0x06, 0x29, 0x96, - 0xd1, 0x5d, 0xf7, 0xff, 0xfc, 0x1f, 0x20, 0x00, - 0x9b, 0x07, 0x60, 0x18, 0x88, 0xe0, 0x28, 0x00, - 0xd1, 0x0f, 0x20, 0x45, 0x70, 0x38, 0x20, 0x47, - 0x70, 0x78, 0x20, 0x04, 0x80, 0x78, 0x88, 0x60, - 0x80, 0xb8, 0x20, 0x00, 0x71, 0xb8, 0xf7, 0xff, - 0xfc, 0x31, 0x28, 0x00, 0xd0, 0x75, 0x20, 0x02, - 0xe0, 0x51, 0x20, 0x05, 0xf0, 0x01, 0xfe, 0x26, - 0x4f, 0x42, 0x60, 0xb8, 0x28, 0x00, 0xd1, 0x01, - 0x20, 0x01, 0xe0, 0x76, 0x21, 0x43, 0x70, 0x39, - 0x21, 0x34, 0x70, 0x79, 0x21, 0x0c, 0x80, 0x79, - 0x99, 0x03, 0x29, 0x70, 0xd1, 0x03, 0x21, 0x00, - 0xab, 0x00, 0x70, 0x99, 0xe0, 0x08, 0x9a, 0x06, - 0x78, 0x91, 0xab, 0x00, 0x70, 0x99, 0x88, 0xe1, - 0x9a, 0x06, 0x88, 0x12, 0x42, 0x91, 0xd1, 0x04, - 0x78, 0x61, 0x71, 0x39, 0x88, 0x61, 0x1c, 0x03, - 0xe0, 0x02, 0x79, 0x22, 0x71, 0x3a, 0x1c, 0x03, - 0x46, 0x6a, 0x20, 0x96, 0xf7, 0xff, 0xf8, 0x9c, - 0x81, 0xb8, 0xf7, 0xff, 0xfc, 0x09, 0x28, 0x00, - 0xd1, 0xcd, 0x68, 0xb8, 0xf0, 0x01, 0xfe, 0x1c, - 0xe7, 0xd2, 0x88, 0xe0, 0x28, 0x00, 0xd1, 0x0f, - 0x20, 0x45, 0x70, 0x38, 0x20, 0x47, 0x70, 0x78, - 0x20, 0x04, 0x80, 0x78, 0x88, 0x60, 0x80, 0xb8, - 0x20, 0x00, 0x71, 0xb8, 0xf7, 0xff, 0xfb, 0xea, - 0x28, 0x00, 0xd1, 0xb8, 0xe0, 0x38, 0xe0, 0x2e, - 0x78, 0x60, 0x79, 0x21, 0x42, 0x88, 0xd1, 0x02, - 0x20, 0x02, 0x55, 0x70, 0xe7, 0xb8, 0x79, 0x39, - 0x42, 0x81, 0xd1, 0x02, 0x20, 0x08, 0x55, 0x70, - 0xe0, 0x2a, 0x20, 0x05, 0xf0, 0x01, 0xfd, 0xd2, - 0x60, 0xb8, 0x28, 0x00, 0xd0, 0xac, 0x21, 0x00, - 0xab, 0x00, 0x70, 0x99, 0x21, 0x43, 0x70, 0x39, - 0x21, 0x34, 0x70, 0x79, 0x21, 0x0c, 0x80, 0x79, - 0x78, 0x61, 0x71, 0x39, 0x88, 0x61, 0x46, 0x6a, - 0x1c, 0x03, 0x20, 0x96, 0xf7, 0xff, 0xf8, 0x5c, - 0x81, 0xb8, 0xf7, 0xff, 0xfb, 0xbf, 0x28, 0x00, - 0xd1, 0x8d, 0x68, 0xb8, 0xf0, 0x01, 0xfd, 0xdc, - 0xe0, 0x00, 0xe0, 0x09, 0xe7, 0x87, 0x99, 0x03, - 0x29, 0x7f, 0xdc, 0x02, 0x99, 0x03, 0x29, 0x45, - 0xd1, 0x02, 0x20, 0x00, 0x9b, 0x07, 0x60, 0x18, - 0x98, 0x02, 0xb0, 0x04, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0xa0, - 0x2e, 0x08, 0x54, 0x80, 0x2e, 0x08, 0x54, 0x90, - 0xb5, 0x00, 0x06, 0x01, 0x0e, 0x09, 0x22, 0x45, - 0x48, 0x07, 0x70, 0x02, 0x22, 0x41, 0x70, 0x42, - 0x22, 0x04, 0x80, 0x42, 0x71, 0x01, 0xf7, 0xff, - 0xfb, 0x95, 0x28, 0x00, 0xd1, 0x01, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x80, 0xb5, 0x00, 0x06, 0x01, - 0x0e, 0x09, 0x22, 0x45, 0x48, 0x07, 0x70, 0x02, - 0x22, 0x49, 0x70, 0x42, 0x22, 0x04, 0x80, 0x42, - 0x71, 0x01, 0xf7, 0xff, 0xfb, 0x7f, 0x28, 0x00, - 0xd1, 0x01, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x01, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x54, 0x80, - 0xb5, 0x00, 0x06, 0x01, 0x0e, 0x09, 0x22, 0x43, - 0x48, 0x07, 0x70, 0x02, 0x22, 0x32, 0x70, 0x42, - 0x22, 0x04, 0x80, 0x42, 0x71, 0x01, 0xf7, 0xff, - 0xfb, 0x69, 0x28, 0x00, 0xd1, 0x01, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x80, 0xb5, 0x80, 0x79, 0x41, - 0xb0, 0x82, 0xab, 0x01, 0x70, 0x19, 0x1c, 0x41, - 0x46, 0x68, 0x22, 0x04, 0xf0, 0x14, 0xfc, 0x72, - 0x20, 0x43, 0x4f, 0x0b, 0x70, 0x38, 0x20, 0x34, - 0x70, 0x78, 0x20, 0x0c, 0x80, 0x78, 0x46, 0x6a, - 0x21, 0x00, 0x20, 0x92, 0x68, 0xbb, 0xf7, 0xfe, - 0xff, 0xe3, 0x81, 0xb8, 0xf7, 0xff, 0xfb, 0x46, - 0x28, 0x00, 0xd1, 0x00, 0xe0, 0x00, 0x20, 0x01, - 0xb0, 0x02, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x54, 0x80, 0xb5, 0xf0, 0x00, 0xc6, - 0x18, 0x36, 0x01, 0x36, 0x1c, 0x07, 0xb0, 0x84, - 0x48, 0x0d, 0x90, 0x03, 0x18, 0x34, 0x68, 0xa0, - 0x28, 0x00, 0xd0, 0x0b, 0x46, 0x69, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x48, 0x1c, 0x05, 0x28, 0x34, - 0xd1, 0x02, 0x98, 0x01, 0xf0, 0x01, 0xfd, 0x48, - 0x2d, 0x00, 0xd1, 0xf3, 0x20, 0x00, 0x99, 0x03, - 0x51, 0x88, 0x60, 0x60, 0x60, 0xa0, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x57, 0xc0, 0xb4, 0xb0, 0x06, 0x0f, - 0x0e, 0x3f, 0x00, 0xc3, 0x18, 0x18, 0x01, 0x00, - 0x49, 0x15, 0x18, 0x41, 0x20, 0x00, 0x68, 0x8b, - 0x2b, 0x0a, 0xda, 0x23, 0x33, 0x01, 0x60, 0x8b, - 0x68, 0x4d, 0x19, 0x4c, 0x34, 0x80, 0x71, 0x27, - 0x2f, 0x34, 0xd1, 0x14, 0x78, 0x14, 0x68, 0x4d, - 0x00, 0x6b, 0x19, 0x5b, 0x00, 0x9b, 0x18, 0xcb, - 0x73, 0x1c, 0x68, 0x54, 0x68, 0x4d, 0x00, 0x6b, - 0x19, 0x5b, 0x00, 0x9b, 0x18, 0xcb, 0x61, 0x1c, - 0x89, 0x17, 0x68, 0x4c, 0x00, 0x63, 0x19, 0x1b, - 0x00, 0x9b, 0x18, 0xca, 0x82, 0x97, 0x68, 0x4a, - 0x32, 0x01, 0x60, 0x4a, 0x2a, 0x0a, 0xdb, 0x00, - 0x60, 0x48, 0x20, 0x01, 0xbc, 0xb0, 0x47, 0x70, - 0x2e, 0x08, 0x57, 0xc0, 0xb4, 0xf0, 0x00, 0xc7, - 0x18, 0x3f, 0x01, 0x3f, 0x4a, 0x16, 0x18, 0xbc, - 0x25, 0x00, 0x68, 0xa0, 0x28, 0x00, 0xdc, 0x02, - 0x1c, 0x28, 0xbc, 0xf0, 0x47, 0x70, 0x38, 0x01, - 0x60, 0xa0, 0x59, 0xd3, 0x18, 0xe0, 0x30, 0x80, - 0x79, 0x00, 0x28, 0x34, 0xd1, 0x14, 0x1c, 0x1e, - 0x00, 0x5b, 0x19, 0x9b, 0x00, 0x9b, 0x18, 0xe3, - 0x7b, 0x1b, 0x70, 0x0b, 0x59, 0xd6, 0x00, 0x73, - 0x19, 0x9b, 0x00, 0x9b, 0x18, 0xe3, 0x69, 0x1b, - 0x60, 0x4b, 0x59, 0xd6, 0x00, 0x73, 0x19, 0x9b, - 0x00, 0x9b, 0x18, 0xe3, 0x8a, 0x9b, 0x81, 0x0b, - 0x59, 0xd1, 0x31, 0x01, 0x51, 0xd1, 0x29, 0x0a, - 0xdb, 0xdb, 0x51, 0xd5, 0xbc, 0xf0, 0x47, 0x70, - 0x2e, 0x08, 0x57, 0xc0, 0xb5, 0x00, 0x78, 0x01, - 0x48, 0x0c, 0x70, 0x01, 0x78, 0x01, 0x29, 0x01, - 0xd0, 0x01, 0x29, 0x02, 0xd1, 0x0e, 0x48, 0x0a, - 0x29, 0x01, 0xd1, 0x04, 0xca, 0x0a, 0xc0, 0x0a, - 0xca, 0x0a, 0xc0, 0x0a, 0xe0, 0x01, 0x88, 0x11, - 0x80, 0x01, 0xf0, 0x00, 0xf8, 0x32, 0x20, 0x00, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x88, - 0x2e, 0x08, 0x56, 0xc0, 0xb5, 0x90, 0x27, 0x00, - 0x48, 0x0d, 0x70, 0x07, 0x80, 0x87, 0x20, 0x03, - 0xf0, 0x01, 0xfc, 0xc0, 0x28, 0x00, 0xda, 0x03, - 0x1c, 0x38, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x21, 0x00, 0x20, 0x01, 0x27, 0xff, 0x4a, 0x07, - 0x00, 0xcb, 0x1a, 0x5b, 0x00, 0x9b, 0x18, 0x9c, - 0x70, 0xa0, 0x52, 0xd7, 0x31, 0x01, 0x29, 0x08, - 0xdb, 0xf6, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x88, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0x00, 0xf0, 0x01, 0xfb, 0x5f, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0xb0, 0x27, 0x00, 0x48, 0x1f, - 0x78, 0x00, 0x4c, 0x1f, 0x28, 0x01, 0xd1, 0x1c, - 0x78, 0x60, 0x28, 0x23, 0xd0, 0x0f, 0xdc, 0x06, - 0x28, 0x21, 0xd0, 0x10, 0x28, 0x22, 0xd1, 0x28, - 0xf0, 0x00, 0xf8, 0x62, 0xe0, 0x24, 0x28, 0x32, - 0xd0, 0x0c, 0x28, 0x34, 0xd1, 0x21, 0x68, 0xa5, - 0xf0, 0x00, 0xf8, 0xea, 0xe0, 0x1c, 0x68, 0xa5, - 0xf0, 0x00, 0xf8, 0x88, 0xe0, 0x18, 0xf0, 0x00, - 0xf8, 0x25, 0xe0, 0x15, 0xf0, 0x00, 0xf8, 0xf8, - 0xe0, 0x12, 0x28, 0x02, 0xd1, 0x11, 0x88, 0x20, - 0xf0, 0x01, 0xfc, 0x28, 0x88, 0x20, 0x28, 0x50, - 0xdd, 0x04, 0x28, 0x58, 0xdc, 0x02, 0xf0, 0x00, - 0xf9, 0x03, 0xe0, 0x05, 0x28, 0x60, 0xdd, 0x04, - 0x28, 0x68, 0xdc, 0x02, 0xf0, 0x00, 0xf9, 0x22, - 0x1c, 0x07, 0x2f, 0x00, 0xd1, 0x02, 0x1c, 0x28, - 0xf0, 0x01, 0xfc, 0x4e, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x88, - 0x2e, 0x08, 0x56, 0xc0, 0xb5, 0x90, 0x20, 0x01, - 0xb0, 0x81, 0x90, 0x00, 0xf0, 0x00, 0xf9, 0x2c, - 0x1c, 0x04, 0xd5, 0x01, 0x20, 0x01, 0xe0, 0x1a, - 0x4f, 0x0f, 0x88, 0xb8, 0x00, 0xe1, 0x1b, 0x09, - 0x00, 0x89, 0x4a, 0x0e, 0x52, 0x50, 0x78, 0x79, - 0x46, 0x6b, 0x22, 0x00, 0x1c, 0x20, 0xf0, 0x00, - 0xfb, 0x05, 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x20, - 0xf0, 0x00, 0xf9, 0x60, 0x20, 0x35, 0x70, 0x38, - 0x20, 0x4a, 0x70, 0x78, 0x20, 0x04, 0x80, 0x78, - 0xf0, 0x00, 0xf9, 0xee, 0x98, 0x00, 0xb0, 0x01, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x56, 0xc0, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0xf0, 0x20, 0x01, 0xb0, 0x81, 0x90, 0x00, - 0x4c, 0x14, 0x88, 0xa6, 0x27, 0x00, 0x4d, 0x14, - 0x00, 0xf8, 0x1b, 0xc0, 0x00, 0x80, 0x19, 0x41, - 0x78, 0x89, 0x29, 0x01, 0xd0, 0x0d, 0x5a, 0x28, - 0x42, 0xb0, 0xd1, 0x0a, 0x78, 0x61, 0x46, 0x6b, - 0x22, 0x00, 0x1c, 0x38, 0xf0, 0x00, 0xfa, 0xd6, - 0x28, 0x00, 0xd0, 0x02, 0x1c, 0x38, 0xf0, 0x00, - 0xf9, 0x31, 0x37, 0x01, 0x2f, 0x08, 0xdb, 0xe7, - 0x20, 0x35, 0x70, 0x20, 0x20, 0x4b, 0x70, 0x60, - 0x20, 0x04, 0x80, 0x60, 0xf0, 0x00, 0xf9, 0xbc, - 0x98, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x56, 0xc0, - 0x2e, 0x08, 0x56, 0xe0, 0xb5, 0xf0, 0x20, 0x00, - 0xb0, 0x87, 0x90, 0x00, 0x48, 0x2a, 0x89, 0x87, - 0x68, 0x85, 0x79, 0x80, 0x90, 0x05, 0x24, 0x00, - 0xaa, 0x03, 0xb4, 0x04, 0x04, 0x39, 0x0c, 0x09, - 0x9a, 0x06, 0x1c, 0x28, 0xab, 0x07, 0xf0, 0x00, - 0xfa, 0x21, 0xb0, 0x01, 0x90, 0x01, 0x28, 0x00, - 0xdb, 0x04, 0x98, 0x05, 0xf0, 0x00, 0xf9, 0x2c, - 0x1c, 0x06, 0xd5, 0x01, 0x20, 0x00, 0xe0, 0x36, - 0x98, 0x00, 0x30, 0x01, 0x90, 0x00, 0x98, 0x01, - 0x18, 0x2d, 0x1a, 0x3f, 0x2f, 0x00, 0xdd, 0x0b, - 0x04, 0x38, 0x0c, 0x00, 0xf0, 0x01, 0xfb, 0x96, - 0x1c, 0x04, 0xd0, 0xef, 0x1c, 0x20, 0x1c, 0x29, - 0x1c, 0x3a, 0xf0, 0x14, 0xfa, 0xaf, 0x1c, 0x25, - 0xa9, 0x06, 0x78, 0x09, 0x1c, 0x30, 0xaa, 0x03, - 0xab, 0x02, 0xf0, 0x00, 0xfa, 0x83, 0x28, 0x00, - 0xd0, 0xe0, 0x98, 0x00, 0x28, 0x02, 0xda, 0x01, - 0x2f, 0x00, 0xdc, 0xc9, 0x2c, 0x00, 0xd0, 0x02, - 0x1c, 0x20, 0xf0, 0x01, 0xfb, 0xa1, 0x2f, 0x00, - 0xd0, 0x01, 0x20, 0x00, 0x90, 0x02, 0x00, 0xf0, - 0x1b, 0x80, 0x00, 0x80, 0x49, 0x07, 0x18, 0x40, - 0x78, 0x80, 0x28, 0x02, 0xd1, 0x02, 0x1c, 0x30, - 0xf0, 0x00, 0xf8, 0xc8, 0x98, 0x02, 0xb0, 0x07, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x56, 0xc0, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0x80, 0xb0, 0x81, 0x4f, 0x09, 0x79, 0x38, - 0xf0, 0x00, 0xf8, 0xe2, 0x28, 0x00, 0xdb, 0x06, - 0x78, 0x79, 0x46, 0x6b, 0x22, 0x00, 0xf0, 0x00, - 0xfa, 0x51, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x00, - 0x90, 0x00, 0x98, 0x00, 0xb0, 0x01, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x56, 0xc0, - 0xb5, 0x80, 0xb0, 0x81, 0x4f, 0x09, 0x79, 0x38, - 0xf0, 0x00, 0xf8, 0xca, 0x28, 0x00, 0xdb, 0x06, - 0x78, 0x79, 0x46, 0x6b, 0x22, 0x00, 0xf0, 0x00, - 0xfa, 0x39, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x00, - 0x90, 0x00, 0x98, 0x00, 0xb0, 0x01, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x56, 0xc0, - 0xb5, 0x90, 0xb0, 0x81, 0x48, 0x0f, 0x88, 0x00, - 0xf0, 0x00, 0xf8, 0xca, 0x1c, 0x07, 0xd5, 0x01, - 0x20, 0x01, 0xe0, 0x13, 0x20, 0x00, 0x00, 0xf9, - 0x1b, 0xc9, 0x00, 0x89, 0x4a, 0x0a, 0x18, 0x8c, - 0x80, 0xa0, 0x21, 0x50, 0x46, 0x6b, 0x22, 0x00, - 0x1c, 0x38, 0xf0, 0x00, 0xfa, 0x17, 0x78, 0xa0, - 0x28, 0x02, 0xd1, 0x02, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x71, 0x98, 0x00, 0xb0, 0x01, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x56, 0xc0, - 0x2e, 0x08, 0x56, 0xe0, 0xb5, 0x00, 0xb0, 0x81, - 0x48, 0x0b, 0x88, 0x00, 0xf0, 0x00, 0xf8, 0xbc, - 0x28, 0x00, 0xda, 0x01, 0x20, 0x01, 0xe0, 0x0c, - 0x21, 0x00, 0x00, 0xc2, 0x1a, 0x12, 0x00, 0x92, - 0x4b, 0x06, 0x18, 0xd2, 0x80, 0xd1, 0x46, 0x6b, - 0x22, 0x00, 0x21, 0x60, 0xf0, 0x00, 0xf9, 0xf2, - 0x98, 0x00, 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xc0, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0xf0, 0x4c, 0x22, 0x23, 0x04, 0x5e, 0xe1, - 0x1f, 0x58, 0x29, 0x08, 0xda, 0x35, 0x27, 0x00, - 0x4d, 0x1f, 0x00, 0xf9, 0x1b, 0xc9, 0x00, 0x89, - 0x19, 0x49, 0x78, 0x89, 0x29, 0x01, 0xd1, 0x2f, - 0x22, 0x00, 0x00, 0xd3, 0x1a, 0x9b, 0x00, 0x9b, - 0x19, 0x5b, 0x78, 0x9e, 0x2e, 0x01, 0xd0, 0x02, - 0x78, 0xdb, 0x42, 0x8b, 0xd0, 0x02, 0x32, 0x01, - 0x2a, 0x08, 0xdb, 0xf2, 0x2a, 0x08, 0xda, 0x04, - 0x31, 0x01, 0x06, 0x09, 0x0e, 0x09, 0x29, 0x09, - 0xdb, 0xea, 0x29, 0x09, 0xd0, 0x15, 0x00, 0xf8, - 0x1b, 0xc0, 0x00, 0x80, 0x19, 0x40, 0x70, 0xc1, - 0x21, 0x02, 0x70, 0x81, 0x21, 0x00, 0x80, 0x81, - 0x80, 0xc1, 0x82, 0x01, 0x60, 0xc1, 0x83, 0x01, - 0x61, 0x41, 0x76, 0x81, 0x1c, 0x38, 0xf7, 0xff, - 0xfd, 0x7d, 0x88, 0xa0, 0x30, 0x01, 0x80, 0xa0, - 0x1c, 0x38, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x37, 0x01, 0x2f, 0x08, 0xdb, 0xc5, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x88, - 0x2e, 0x08, 0x56, 0xe0, 0xb5, 0x90, 0x1c, 0x07, - 0xd5, 0x06, 0x2f, 0x08, 0xdb, 0x04, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x65, 0x00, 0xf8, - 0x1b, 0xc0, 0x00, 0x80, 0x49, 0x0a, 0x18, 0x44, - 0x88, 0xe0, 0x28, 0x00, 0xd0, 0x03, 0xf0, 0x01, - 0xfa, 0x79, 0x20, 0x00, 0x80, 0xe0, 0x1c, 0x38, - 0xf7, 0xff, 0xfd, 0x50, 0x20, 0x01, 0x70, 0xa0, - 0x48, 0x04, 0x88, 0x81, 0x39, 0x01, 0x80, 0x81, - 0x1c, 0x38, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xe0, 0x2e, 0x08, 0x1a, 0x88, - 0xb4, 0x80, 0x06, 0x02, 0x0e, 0x12, 0x20, 0x00, - 0x49, 0x08, 0x00, 0xc3, 0x1a, 0x1b, 0x00, 0x9b, - 0x18, 0x5b, 0x78, 0x9f, 0x2f, 0x01, 0xd0, 0x02, - 0x78, 0xdb, 0x42, 0x93, 0xd0, 0x04, 0x30, 0x01, - 0x28, 0x08, 0xdb, 0xf2, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x56, 0xe0, - 0xb4, 0x80, 0x04, 0x02, 0x0c, 0x12, 0x20, 0x00, - 0x49, 0x08, 0x00, 0xc3, 0x1a, 0x1b, 0x00, 0x9b, - 0x18, 0x5b, 0x78, 0x9f, 0x2f, 0x01, 0xd0, 0x02, - 0x88, 0x9b, 0x42, 0x93, 0xd0, 0x04, 0x30, 0x01, - 0x28, 0x08, 0xdb, 0xf2, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x56, 0xe0, - 0xb4, 0x80, 0x04, 0x02, 0x0c, 0x12, 0x20, 0x00, - 0x49, 0x08, 0x00, 0xc3, 0x1a, 0x1b, 0x00, 0x9b, - 0x18, 0x5b, 0x78, 0x9f, 0x2f, 0x01, 0xd0, 0x02, - 0x88, 0xdb, 0x42, 0x93, 0xd0, 0x04, 0x30, 0x01, - 0x28, 0x08, 0xdb, 0xf2, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0x80, 0x00, 0xc3, 0x1a, 0x18, 0x00, 0x80, - 0x49, 0x05, 0x18, 0x47, 0x88, 0xb8, 0x28, 0x00, - 0xd0, 0x03, 0xf0, 0x01, 0xfa, 0x13, 0x20, 0x00, - 0x80, 0xb8, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xe0, 0xb5, 0x80, 0x00, 0xc3, - 0x1a, 0x18, 0x00, 0x80, 0x49, 0x05, 0x18, 0x47, - 0x88, 0xf8, 0x28, 0x00, 0xd0, 0x03, 0xf0, 0x01, - 0xfa, 0x01, 0x20, 0x00, 0x80, 0xf8, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0x00, 0x49, 0x03, 0x78, 0x08, 0xf0, 0x01, - 0xf9, 0x53, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x56, 0xc0, 0xb5, 0x00, 0x49, 0x03, - 0x78, 0x08, 0xf0, 0x01, 0xf9, 0x49, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x56, 0xd0, - 0x04, 0x02, 0x0c, 0x12, 0x20, 0x00, 0x49, 0x0a, - 0x00, 0xc3, 0x1a, 0x1b, 0x00, 0x9b, 0x18, 0x5b, - 0x78, 0xdb, 0x42, 0x93, 0xd1, 0x06, 0x00, 0xc3, - 0x1a, 0x18, 0x00, 0x80, 0x5a, 0x08, 0x06, 0x00, - 0x0e, 0x00, 0x47, 0x70, 0x30, 0x01, 0x28, 0x08, - 0xdb, 0xee, 0x20, 0xff, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x56, 0xe0, 0xb5, 0xf0, 0x06, 0x05, - 0x0e, 0x2d, 0x06, 0x0c, 0x0e, 0x24, 0x1c, 0x17, - 0x1c, 0x59, 0x1c, 0x1a, 0x1c, 0x4e, 0xb0, 0x81, - 0x2d, 0x86, 0xd0, 0x3b, 0xdc, 0x0b, 0x1f, 0xef, - 0x3f, 0x79, 0x2f, 0x06, 0xd2, 0x3c, 0xa3, 0x02, - 0x5d, 0xdb, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x3a, 0x32, 0x32, 0x32, 0x32, 0x32, 0x2d, 0xa0, - 0xd0, 0x15, 0xdc, 0x0d, 0x20, 0x02, 0x18, 0x1b, - 0x33, 0x01, 0x2d, 0x87, 0xd0, 0x01, 0x2d, 0x88, - 0xd1, 0x2a, 0x70, 0x15, 0x70, 0x08, 0x70, 0x34, - 0x78, 0x38, 0x70, 0x18, 0x20, 0x04, 0xe0, 0x25, - 0x2d, 0xa1, 0xd0, 0x04, 0x2d, 0xa2, 0xd1, 0x1f, - 0x20, 0xa0, 0x70, 0x10, 0xe0, 0x17, 0x70, 0x15, - 0x1c, 0x0d, 0x88, 0xb9, 0x46, 0x6a, 0x1c, 0x28, - 0xf0, 0x00, 0xf8, 0x5d, 0xa8, 0x00, 0x88, 0x00, - 0x18, 0x28, 0x70, 0x04, 0x88, 0xb9, 0x1e, 0x4a, - 0x68, 0x39, 0x30, 0x01, 0xf0, 0x14, 0xf8, 0xbe, - 0x88, 0xb8, 0xa9, 0x00, 0x88, 0x09, 0x18, 0x40, - 0x30, 0x01, 0xe0, 0x07, 0x70, 0x15, 0x20, 0x01, - 0x70, 0x08, 0x70, 0x34, 0x20, 0x03, 0xe0, 0x01, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x06, 0x16, - 0x0e, 0x36, 0x9d, 0x05, 0x1c, 0x04, 0x78, 0x00, - 0x70, 0x18, 0xb0, 0x82, 0x46, 0x6a, 0x34, 0x01, - 0x1c, 0x20, 0xa9, 0x01, 0x1c, 0x1f, 0xf0, 0x00, - 0xf8, 0x57, 0x21, 0x00, 0x43, 0xc9, 0x28, 0x00, - 0xdb, 0x06, 0xa8, 0x00, 0x88, 0x00, 0x18, 0x20, - 0x78, 0x02, 0x30, 0x01, 0x42, 0xb2, 0xd0, 0x01, - 0x1c, 0x08, 0xe0, 0x20, 0x78, 0x3a, 0x2a, 0x85, - 0xd0, 0x17, 0xdc, 0x06, 0x2a, 0x80, 0xd0, 0x10, - 0x2a, 0x83, 0xd0, 0x12, 0x2a, 0x84, 0xd1, 0xf3, - 0xe0, 0x0f, 0x2a, 0x86, 0xd0, 0x0d, 0x2a, 0xa0, - 0xd0, 0x01, 0x2a, 0xa1, 0xd1, 0xec, 0x60, 0x28, - 0xa8, 0x01, 0x88, 0x00, 0x38, 0x01, 0x80, 0xa8, - 0xe0, 0x03, 0x78, 0x00, 0x23, 0x80, 0x40, 0x18, - 0x70, 0x28, 0xa8, 0x01, 0x88, 0x00, 0xa9, 0x00, - 0x88, 0x09, 0x18, 0x40, 0x30, 0x01, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x04, 0x09, - 0x0c, 0x09, 0xb0, 0x81, 0xab, 0x00, 0x80, 0x19, - 0x29, 0x7f, 0xdc, 0x05, 0xa9, 0x00, 0x88, 0x09, - 0x70, 0x01, 0x20, 0x01, 0x80, 0x10, 0xe0, 0x15, - 0xa9, 0x00, 0x88, 0x09, 0x29, 0xff, 0xdc, 0x07, - 0x21, 0x81, 0x70, 0x01, 0x21, 0x02, 0x80, 0x11, - 0xa9, 0x00, 0x88, 0x09, 0x70, 0x41, 0xe0, 0x09, - 0x21, 0x82, 0x70, 0x01, 0x21, 0x03, 0x80, 0x11, - 0xa9, 0x00, 0x78, 0x49, 0x70, 0x41, 0xa9, 0x00, - 0x78, 0x09, 0x70, 0x81, 0xb0, 0x01, 0x47, 0x70, - 0xb4, 0x90, 0x27, 0x01, 0x78, 0x04, 0x23, 0x80, - 0x40, 0x23, 0x2b, 0x80, 0xd1, 0x14, 0x06, 0x63, - 0x0e, 0x5b, 0x80, 0x13, 0x88, 0x13, 0x2b, 0x01, - 0xd1, 0x01, 0x78, 0x40, 0xe0, 0x05, 0x2b, 0x02, - 0xd1, 0x07, 0x78, 0x43, 0x02, 0x1b, 0x78, 0x80, - 0x18, 0x18, 0x80, 0x08, 0x88, 0x10, 0x30, 0x01, - 0xe0, 0x04, 0x27, 0x00, 0x43, 0xff, 0xe0, 0x02, - 0x80, 0x0c, 0x20, 0x01, 0x80, 0x10, 0x1c, 0x38, - 0xbc, 0x90, 0x47, 0x70, 0xb5, 0xf0, 0x1c, 0x07, - 0x06, 0x09, 0x0e, 0x09, 0x1c, 0x18, 0x00, 0xfb, - 0x1b, 0xdb, 0x00, 0x9b, 0xb0, 0x82, 0x4c, 0x42, - 0x19, 0x1e, 0x78, 0xb3, 0x1e, 0x9c, 0x4b, 0x41, - 0x93, 0x01, 0x1d, 0x1d, 0x2c, 0x07, 0xd2, 0x63, - 0xa3, 0x01, 0x5d, 0x1b, 0x00, 0x5b, 0x44, 0x9f, - 0x60, 0x65, 0x03, 0x08, 0x40, 0x24, 0x6b, 0x00, - 0x1c, 0x03, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0x80, - 0xe0, 0x66, 0x1c, 0x03, 0x1c, 0x38, 0xf0, 0x00, - 0xfa, 0x83, 0x1c, 0x04, 0x28, 0x01, 0xd1, 0x5a, - 0x78, 0xb0, 0x28, 0x04, 0xd1, 0x57, 0x1c, 0x38, - 0x1c, 0x29, 0xf7, 0xff, 0xfb, 0xf7, 0x1c, 0x01, - 0xd0, 0x59, 0x9b, 0x01, 0x68, 0x9d, 0x46, 0x6b, - 0x22, 0x00, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0x68, - 0x1c, 0x04, 0x98, 0x00, 0x28, 0x00, 0xd1, 0x46, - 0xe0, 0x36, 0x1c, 0x03, 0x1c, 0x38, 0xf0, 0x00, - 0xfc, 0x53, 0x1c, 0x04, 0x28, 0x01, 0xd1, 0x3e, - 0x78, 0xb0, 0x28, 0x04, 0xd1, 0x3b, 0x1c, 0x38, - 0x1c, 0x29, 0xf7, 0xff, 0xfb, 0xdb, 0x1c, 0x01, - 0xd0, 0x3d, 0x9b, 0x01, 0x68, 0x9d, 0x46, 0x6b, - 0x22, 0x00, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0x4c, - 0x1c, 0x04, 0x98, 0x00, 0x28, 0x00, 0xd1, 0x2a, - 0xe0, 0x1a, 0x1c, 0x03, 0x1c, 0x38, 0xf0, 0x00, - 0xfc, 0x03, 0x1c, 0x04, 0x28, 0x01, 0xd1, 0x22, - 0x78, 0xb0, 0x28, 0x04, 0xd1, 0x1f, 0x1c, 0x38, - 0x1c, 0x29, 0xf7, 0xff, 0xfb, 0xbf, 0x1c, 0x01, - 0xd0, 0x21, 0x9b, 0x01, 0x68, 0x9d, 0x46, 0x6b, - 0x22, 0x00, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0x30, - 0x1c, 0x04, 0x98, 0x00, 0x28, 0x00, 0xd1, 0x0e, - 0x1c, 0x28, 0xf0, 0x01, 0xf8, 0xb5, 0xe0, 0x12, - 0xe0, 0x10, 0x1c, 0x02, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0x17, 0xe0, 0x09, 0x1c, 0x03, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x62, 0xe0, 0x04, 0xe0, 0x06, - 0x1c, 0x03, 0x1c, 0x38, 0xf0, 0x00, 0xfd, 0x14, - 0x1c, 0x04, 0xe0, 0x00, 0x24, 0x00, 0x1c, 0x20, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xe0, 0x2e, 0x08, 0x56, 0xc0, - 0xb5, 0xf0, 0x06, 0x09, 0x0e, 0x09, 0x1c, 0x17, - 0x22, 0x01, 0x00, 0xc3, 0x1a, 0x18, 0x00, 0x80, - 0xb0, 0x81, 0x60, 0x3a, 0x90, 0x00, 0x4e, 0x1f, - 0x19, 0x85, 0x29, 0x21, 0xd0, 0x02, 0x29, 0x80, - 0xd0, 0x2f, 0xe0, 0x06, 0x20, 0x03, 0xf0, 0x01, - 0xf8, 0x5d, 0x4c, 0x1b, 0x60, 0xa0, 0x1c, 0x01, - 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x2a, 0x20, 0x32, - 0x70, 0x20, 0x20, 0x23, 0x70, 0x60, 0x20, 0x0c, - 0x80, 0x60, 0x98, 0x00, 0x5a, 0x30, 0x80, 0xa0, - 0x78, 0xe8, 0x71, 0xa0, 0x1c, 0x0b, 0x79, 0xa1, - 0x22, 0x00, 0x20, 0x82, 0xf7, 0xff, 0xfe, 0x66, - 0x81, 0xa0, 0xf7, 0xff, 0xfe, 0x35, 0x28, 0x00, - 0xd1, 0x01, 0x60, 0x38, 0xe7, 0xe5, 0x78, 0xe8, - 0x30, 0x50, 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, - 0x04, 0x1b, 0x43, 0x18, 0x49, 0x09, 0xf0, 0x00, - 0xff, 0xe9, 0x80, 0xa8, 0x20, 0x03, 0x70, 0xa8, - 0xe0, 0x03, 0x7e, 0xa8, 0x28, 0x00, 0xd1, 0x00, - 0x60, 0x38, 0x20, 0x01, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x56, 0xe0, - 0x2e, 0x08, 0x56, 0xc0, 0x00, 0x00, 0x27, 0x10, - 0xb5, 0xff, 0x06, 0x09, 0x0e, 0x09, 0x22, 0x01, - 0x60, 0x1a, 0x00, 0xc2, 0x1a, 0x12, 0x00, 0x92, - 0xb0, 0x81, 0x92, 0x00, 0x1c, 0x1f, 0x4e, 0x54, - 0x19, 0x95, 0x4c, 0x54, 0x29, 0x80, 0xd0, 0x35, - 0xdc, 0x04, 0x29, 0x22, 0xd0, 0x13, 0x29, 0x50, - 0xd1, 0x0d, 0xe0, 0x0e, 0x29, 0x83, 0xd0, 0x11, - 0x29, 0x84, 0xd1, 0x08, 0xf7, 0xff, 0xfd, 0xd4, - 0x20, 0x03, 0xf0, 0x01, 0xf8, 0x03, 0x4c, 0x4c, - 0x60, 0xa0, 0x1c, 0x01, 0xd1, 0x6d, 0x20, 0x00, - 0xe0, 0x89, 0x20, 0x02, 0xe0, 0x67, 0xf7, 0xff, - 0xfd, 0xc7, 0xe7, 0xfa, 0xf7, 0xff, 0xfd, 0xc4, - 0x20, 0x34, 0x70, 0x20, 0x20, 0x31, 0x70, 0x60, - 0x20, 0x04, 0x80, 0x60, 0x78, 0xe8, 0x71, 0x20, - 0xf7, 0xff, 0xfd, 0xde, 0x28, 0x00, 0xd1, 0x01, - 0x60, 0x38, 0xe0, 0x74, 0x78, 0xe8, 0x30, 0x50, - 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, - 0x43, 0x18, 0x49, 0x3c, 0xf0, 0x00, 0xff, 0x92, - 0x80, 0xa8, 0xe0, 0x65, 0xf7, 0xff, 0xfd, 0xa8, - 0x9a, 0x03, 0x78, 0x10, 0x28, 0x80, 0xd1, 0x21, - 0x20, 0x32, 0x70, 0x20, 0x20, 0x23, 0x70, 0x60, - 0x20, 0x0c, 0x80, 0x60, 0x9a, 0x00, 0x5a, 0xb0, - 0x80, 0xa0, 0x78, 0xe9, 0x71, 0xa1, 0x22, 0x00, - 0x20, 0x81, 0x68, 0xa3, 0xf7, 0xff, 0xfd, 0xe6, - 0x81, 0xa0, 0xf7, 0xff, 0xfd, 0xb5, 0x28, 0x00, - 0xd0, 0xc1, 0x78, 0xe8, 0x30, 0x50, 0x04, 0x00, - 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, 0x43, 0x18, - 0x49, 0x28, 0xf0, 0x00, 0xff, 0x6b, 0x80, 0xa8, - 0x20, 0x07, 0xe0, 0x20, 0x20, 0x32, 0x70, 0x20, - 0x20, 0x23, 0x70, 0x60, 0x20, 0x0c, 0x80, 0x60, - 0x9a, 0x00, 0x5a, 0xb0, 0x80, 0xa0, 0x78, 0xe9, - 0x71, 0xa1, 0x22, 0x00, 0x20, 0xa2, 0x68, 0xa3, - 0xf7, 0xff, 0xfd, 0xc4, 0x81, 0xa0, 0xf7, 0xff, - 0xfd, 0x93, 0x28, 0x00, 0xd0, 0x0a, 0x78, 0xe8, - 0x30, 0x50, 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, - 0x04, 0x1b, 0x43, 0x18, 0x49, 0x17, 0xf0, 0x00, - 0xff, 0x49, 0x80, 0xa8, 0x20, 0x05, 0x70, 0xa8, - 0xe0, 0x1c, 0xe7, 0xff, 0x20, 0x32, 0x70, 0x20, - 0x20, 0x23, 0x70, 0x60, 0x20, 0x0c, 0x80, 0x60, - 0x9a, 0x00, 0x5a, 0xb0, 0x80, 0xa0, 0x78, 0xe8, - 0x71, 0xa0, 0x1c, 0x0b, 0x22, 0x00, 0x1c, 0x01, - 0x20, 0x85, 0xf7, 0xff, 0xfd, 0x9f, 0x81, 0xa0, - 0xf7, 0xff, 0xfd, 0x78, 0x28, 0x00, 0xd1, 0x01, - 0x60, 0x38, 0xe7, 0x78, 0x20, 0x02, 0x70, 0xa8, - 0x20, 0x00, 0x60, 0x38, 0x20, 0x01, 0xb0, 0x01, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xe0, 0x2e, 0x08, 0x56, 0xc0, - 0x2e, 0x08, 0x56, 0xd0, 0x00, 0x00, 0x27, 0x10, - 0xb5, 0xff, 0x1c, 0x07, 0x06, 0x08, 0x0e, 0x00, - 0x21, 0x01, 0xb0, 0x84, 0x9a, 0x07, 0x26, 0x01, - 0x60, 0x11, 0x00, 0xf9, 0x1b, 0xc9, 0x00, 0x89, - 0x91, 0x02, 0x4a, 0x78, 0x92, 0x03, 0x18, 0x8c, - 0x28, 0x22, 0xd0, 0x0d, 0x4d, 0x76, 0x28, 0x32, - 0xd0, 0x6f, 0x28, 0x34, 0xd0, 0x12, 0x28, 0x60, - 0xd1, 0x6c, 0x20, 0x03, 0xf0, 0x00, 0xff, 0x4a, - 0x60, 0xa8, 0x1c, 0x01, 0xd1, 0x67, 0xe0, 0x16, - 0x1c, 0x38, 0xf7, 0xff, 0xfd, 0x23, 0x1c, 0x38, - 0xf0, 0x00, 0xfc, 0x16, 0x1c, 0x06, 0xd0, 0x5f, - 0x20, 0x02, 0xe0, 0xcc, 0x1c, 0x38, 0xf7, 0xff, - 0xfd, 0x19, 0x89, 0xa8, 0x30, 0x0a, 0x04, 0x00, - 0x0c, 0x00, 0xf0, 0x00, 0xff, 0x33, 0x4f, 0x67, - 0x60, 0xb8, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x00, - 0xe0, 0xbf, 0x89, 0xa9, 0x22, 0x01, 0x02, 0x92, - 0x42, 0x91, 0xdc, 0x1e, 0x31, 0x01, 0xab, 0x01, - 0x80, 0x19, 0x68, 0xa9, 0x91, 0x00, 0x21, 0x32, - 0x70, 0x39, 0x21, 0x23, 0x70, 0x79, 0x21, 0x0c, - 0x80, 0x79, 0x99, 0x02, 0x9a, 0x03, 0x5a, 0x51, - 0x80, 0xb9, 0x78, 0xe1, 0x71, 0xb9, 0x46, 0x6a, - 0x1c, 0x03, 0x20, 0xa0, 0xf7, 0xff, 0xfd, 0x32, - 0x81, 0xb8, 0x20, 0x00, 0x82, 0x20, 0x21, 0x05, - 0x60, 0xe0, 0x70, 0xa1, 0x9a, 0x07, 0x60, 0x10, - 0xe0, 0x1f, 0xab, 0x01, 0x80, 0x1a, 0x68, 0xa9, - 0x91, 0x00, 0x21, 0x32, 0x70, 0x39, 0x21, 0x23, - 0x70, 0x79, 0x21, 0x0c, 0x80, 0x79, 0x99, 0x02, - 0x9a, 0x03, 0x5a, 0x51, 0x80, 0xb9, 0x78, 0xe1, - 0x71, 0xb9, 0x46, 0x6a, 0x1c, 0x03, 0x20, 0xa1, - 0xf7, 0xff, 0xfd, 0x14, 0x81, 0xb8, 0x68, 0xa8, - 0x60, 0xa0, 0x4b, 0x47, 0x18, 0xc0, 0x60, 0xe0, - 0x89, 0xa8, 0x1a, 0xc0, 0x82, 0x20, 0x20, 0x06, - 0x70, 0xa0, 0xf7, 0xff, 0xfc, 0xe3, 0x28, 0x00, - 0xd1, 0x07, 0x68, 0xb8, 0xf0, 0x00, 0xff, 0x08, - 0xe0, 0x2f, 0xe0, 0x0e, 0xe0, 0x63, 0xe0, 0x3a, - 0xe0, 0x6e, 0x78, 0xe0, 0x30, 0x50, 0x04, 0x00, - 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, 0x43, 0x18, - 0x49, 0x3a, 0xf0, 0x00, 0xfe, 0x87, 0x80, 0xa0, - 0xe0, 0x62, 0x1c, 0x38, 0xf7, 0xff, 0xfc, 0xae, - 0x20, 0x03, 0xf0, 0x00, 0xfe, 0xcb, 0x60, 0xa8, - 0x1c, 0x01, 0xd0, 0x98, 0x20, 0x32, 0x70, 0x28, - 0x20, 0x23, 0x70, 0x68, 0x20, 0x0c, 0x80, 0x68, - 0x98, 0x02, 0x9a, 0x03, 0x5a, 0x10, 0x80, 0xa8, - 0x78, 0xe0, 0x71, 0xa8, 0x1c, 0x0b, 0x22, 0x00, - 0x1c, 0x01, 0x20, 0x84, 0xf7, 0xff, 0xfc, 0xd6, - 0x81, 0xa8, 0xf7, 0xff, 0xfc, 0xa5, 0x28, 0x00, - 0xd1, 0x01, 0x26, 0x00, 0xe0, 0x40, 0x78, 0xe0, - 0x30, 0x50, 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, - 0x04, 0x1b, 0x43, 0x18, 0x49, 0x23, 0xf0, 0x00, - 0xfe, 0x59, 0x80, 0xa0, 0xe0, 0x32, 0x20, 0x32, - 0x70, 0x28, 0x20, 0x23, 0x70, 0x68, 0x20, 0x0c, - 0x80, 0x68, 0x98, 0x02, 0x9a, 0x03, 0x5a, 0x10, - 0x80, 0xa8, 0x78, 0xe0, 0x71, 0xa8, 0x1c, 0x0b, - 0x22, 0x00, 0x1c, 0x01, 0x20, 0xa2, 0xf7, 0xff, - 0xfc, 0xb1, 0x81, 0xa8, 0xf7, 0xff, 0xfc, 0x80, - 0x28, 0x00, 0xd1, 0x02, 0x9a, 0x07, 0x60, 0x10, - 0xe7, 0xd7, 0x78, 0xe0, 0x30, 0x50, 0x04, 0x00, - 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, 0x43, 0x18, - 0x49, 0x10, 0xf0, 0x00, 0xfe, 0x33, 0x80, 0xa0, - 0x21, 0x05, 0x70, 0xa1, 0xe0, 0x0c, 0x28, 0x7f, - 0xda, 0x01, 0x21, 0x01, 0xe0, 0x00, 0x21, 0x00, - 0x9a, 0x07, 0x1c, 0x38, 0xf0, 0x00, 0xfb, 0x64, - 0x1c, 0x06, 0xd0, 0x01, 0x20, 0x08, 0x70, 0xa0, - 0x1c, 0x30, 0xb0, 0x04, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x56, 0xe0, - 0x2e, 0x08, 0x56, 0xc0, 0x2e, 0x08, 0x56, 0xd0, - 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x27, 0x10, - 0xb5, 0xff, 0x06, 0x09, 0x0e, 0x09, 0x20, 0x01, - 0xb0, 0x84, 0x9a, 0x07, 0x25, 0x01, 0x60, 0x10, - 0x98, 0x04, 0x00, 0xc3, 0x1a, 0x18, 0x00, 0x80, - 0x90, 0x03, 0x4e, 0xcf, 0x19, 0x87, 0x4c, 0xcf, - 0x29, 0x60, 0xd0, 0x6d, 0xdc, 0x0e, 0x29, 0x22, - 0xd0, 0x37, 0x29, 0x32, 0xd0, 0x69, 0x29, 0x34, - 0xd0, 0x68, 0x29, 0x50, 0xd1, 0x67, 0x20, 0x03, - 0xf0, 0x00, 0xfe, 0x40, 0x60, 0xa0, 0x28, 0x00, - 0xd1, 0x62, 0xe0, 0x80, 0x29, 0x80, 0xd0, 0x32, - 0x29, 0x84, 0xd0, 0x5e, 0x29, 0x86, 0xd1, 0x5a, - 0x98, 0x04, 0xf7, 0xff, 0xfc, 0x01, 0x20, 0x86, - 0x76, 0xb8, 0xf7, 0xff, 0xfb, 0x41, 0x1c, 0x05, - 0xd5, 0x73, 0x20, 0x01, 0xab, 0x01, 0x70, 0x18, - 0x21, 0x32, 0x70, 0x21, 0x21, 0x23, 0x70, 0x61, - 0x21, 0x0c, 0x80, 0x61, 0x98, 0x03, 0x5a, 0x30, - 0x80, 0xa0, 0x78, 0xf9, 0x71, 0xa1, 0x20, 0x88, - 0x68, 0xa3, 0xaa, 0x01, 0xf7, 0xff, 0xfc, 0x3a, - 0x81, 0xa0, 0xf7, 0xff, 0xfc, 0x09, 0x28, 0x00, - 0xd1, 0x5c, 0x1c, 0x28, 0xf7, 0xff, 0xfb, 0x6e, - 0xe0, 0xdd, 0x98, 0x04, 0xf7, 0xff, 0xfb, 0xdc, - 0x98, 0x04, 0xf0, 0x00, 0xfa, 0xe1, 0x1c, 0x05, - 0xd0, 0x2a, 0x20, 0x02, 0xe1, 0x4c, 0x98, 0x04, - 0xf7, 0xff, 0xfb, 0xd2, 0x9a, 0x06, 0x78, 0x10, - 0x28, 0x80, 0xd1, 0x27, 0x21, 0x32, 0x70, 0x21, - 0x21, 0x23, 0x70, 0x61, 0x21, 0x0c, 0x80, 0x61, - 0x98, 0x03, 0x5a, 0x30, 0x80, 0xa0, 0x78, 0xf9, - 0x71, 0xa1, 0x22, 0x00, 0x20, 0x81, 0x68, 0xa3, - 0xf7, 0xff, 0xfc, 0x10, 0x81, 0xa0, 0xf7, 0xff, - 0xfb, 0xdf, 0x28, 0x00, 0xd0, 0x73, 0x78, 0xf8, - 0x30, 0x50, 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, - 0x04, 0x1b, 0x43, 0x18, 0x49, 0x9a, 0xf0, 0x00, - 0xfd, 0x95, 0x80, 0xb8, 0x20, 0x07, 0xe1, 0x23, - 0xe1, 0x23, 0xe0, 0xea, 0xe0, 0xe6, 0xe1, 0x13, - 0xe0, 0xed, 0xe0, 0x7e, 0x8a, 0x38, 0x28, 0x00, - 0xdd, 0x5e, 0x68, 0xf9, 0x29, 0x00, 0xd0, 0x5c, - 0x91, 0x01, 0x21, 0x32, 0x4c, 0x91, 0x70, 0x21, - 0x21, 0x23, 0x70, 0x61, 0x21, 0x0c, 0x80, 0x61, - 0x99, 0x03, 0x5a, 0x71, 0x80, 0xa1, 0x78, 0xf9, - 0x71, 0xa1, 0x26, 0x01, 0x02, 0xb6, 0x42, 0xb0, - 0xdd, 0x1c, 0x48, 0x8b, 0xf0, 0x00, 0xfd, 0xbe, - 0x60, 0xa0, 0x28, 0x00, 0xd1, 0x04, 0x20, 0x00, - 0xe0, 0x01, 0xe0, 0x8e, 0xe0, 0x7e, 0xe0, 0xfd, - 0xab, 0x02, 0x80, 0x1e, 0x78, 0xf9, 0x1c, 0x03, - 0x20, 0xa1, 0xaa, 0x01, 0xf7, 0xff, 0xfb, 0xce, - 0x81, 0xa0, 0x68, 0xf8, 0x4b, 0x81, 0x18, 0xc0, - 0x60, 0xf8, 0x8a, 0x38, 0x1a, 0xc0, 0x82, 0x38, - 0x20, 0x06, 0xe0, 0x1a, 0x30, 0x0a, 0x04, 0x00, - 0x0c, 0x00, 0xf0, 0x00, 0xfd, 0x9f, 0x60, 0xa0, - 0x28, 0x00, 0xd0, 0xe0, 0x8a, 0x39, 0x31, 0x01, - 0xab, 0x02, 0x80, 0x19, 0x78, 0xf9, 0x1c, 0x03, - 0x20, 0xa0, 0xaa, 0x01, 0xf7, 0xff, 0xfb, 0xb2, - 0x81, 0xa0, 0x24, 0x00, 0x82, 0x3c, 0x60, 0xfc, - 0x68, 0xb8, 0xf0, 0x00, 0xfd, 0xb1, 0x20, 0x05, - 0x60, 0xbc, 0x70, 0xb8, 0xf7, 0xff, 0xfb, 0x82, - 0x28, 0x00, 0xd0, 0x0c, 0x78, 0xf8, 0x30, 0x50, - 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, - 0x43, 0x18, 0x49, 0x67, 0xf0, 0x00, 0xfd, 0x2e, - 0x80, 0xb8, 0x20, 0x00, 0xe0, 0x02, 0xe0, 0xa1, - 0xe0, 0x03, 0xe0, 0x02, 0x9a, 0x07, 0x60, 0x10, - 0xe0, 0xb7, 0x7e, 0xb8, 0x28, 0x00, 0xd1, 0x11, - 0x78, 0xf8, 0x30, 0x60, 0x04, 0x00, 0x0c, 0x00, - 0x23, 0x03, 0x04, 0x1b, 0x43, 0x18, 0x21, 0x7d, - 0x00, 0xc9, 0xf0, 0x00, 0xfd, 0x17, 0x80, 0xf8, - 0x20, 0x04, 0x70, 0xb8, 0x68, 0xa0, 0xf0, 0x00, - 0xfd, 0x83, 0xe0, 0xa2, 0x20, 0x00, 0x76, 0xb8, - 0xe0, 0x9f, 0x20, 0x84, 0x76, 0xb8, 0x21, 0x32, - 0x70, 0x21, 0x21, 0x23, 0x70, 0x61, 0x21, 0x0c, - 0x80, 0x61, 0x98, 0x03, 0x5a, 0x30, 0x80, 0xa0, - 0x78, 0xf9, 0x71, 0xa1, 0x22, 0x00, 0x20, 0x85, - 0x68, 0xa3, 0xf7, 0xff, 0xfb, 0x67, 0x81, 0xa0, - 0xf7, 0xff, 0xfb, 0x36, 0x28, 0x00, 0xd1, 0x01, - 0x25, 0x00, 0xe0, 0x03, 0x98, 0x04, 0xf0, 0x00, - 0xfa, 0x13, 0x1c, 0x05, 0x2d, 0x00, 0xd0, 0x00, - 0xe7, 0x2f, 0xe0, 0x7e, 0x78, 0xf8, 0x30, 0x50, - 0x04, 0x00, 0x0c, 0x00, 0x90, 0x00, 0x23, 0x03, - 0x04, 0x1b, 0x98, 0x00, 0x43, 0x18, 0x49, 0x40, - 0xf0, 0x00, 0xfc, 0xe0, 0x80, 0xb8, 0x20, 0x01, - 0xe0, 0x70, 0x00, 0xe8, 0x1b, 0x40, 0x00, 0x80, - 0x19, 0x81, 0x78, 0xc9, 0xab, 0x01, 0x70, 0x19, - 0x99, 0x03, 0x5a, 0x71, 0x52, 0x31, 0x21, 0x32, - 0x70, 0x21, 0x21, 0x23, 0x70, 0x61, 0x21, 0x0c, - 0x80, 0x61, 0x98, 0x03, 0x5a, 0x30, 0x80, 0xa0, - 0x78, 0xf9, 0x71, 0xa1, 0x20, 0x87, 0x68, 0xa3, - 0xaa, 0x01, 0xf7, 0xff, 0xfb, 0x2f, 0x81, 0xa0, - 0xf7, 0xff, 0xfa, 0xfe, 0x28, 0x00, 0xd1, 0x03, - 0x1c, 0x28, 0xf7, 0xff, 0xfa, 0x63, 0xe0, 0x31, - 0x21, 0x21, 0x9a, 0x07, 0x1c, 0x28, 0xf7, 0xff, - 0xfc, 0x8f, 0x1c, 0x05, 0x78, 0xf8, 0x30, 0x50, - 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, - 0x43, 0x18, 0x49, 0x25, 0xf0, 0x00, 0xfc, 0xaa, - 0x80, 0xb8, 0xe0, 0x3a, 0x98, 0x04, 0x1d, 0x22, - 0xe0, 0x01, 0x22, 0x00, 0x98, 0x04, 0xf7, 0xfe, - 0xff, 0xd9, 0x1c, 0x05, 0xe0, 0x31, 0x21, 0x32, - 0x70, 0x21, 0x21, 0x23, 0x70, 0x61, 0x21, 0x0c, - 0x80, 0x61, 0x99, 0x03, 0x5a, 0x71, 0x80, 0xa1, - 0x78, 0xf9, 0x71, 0xa1, 0x22, 0x00, 0x1c, 0x03, - 0x20, 0x84, 0xf7, 0xff, 0xfa, 0xfb, 0x81, 0xa0, - 0xf7, 0xff, 0xfa, 0xca, 0x28, 0x00, 0xd1, 0x03, - 0x9a, 0x07, 0x60, 0x10, 0x25, 0x00, 0xe0, 0x18, - 0x78, 0xf8, 0x30, 0x50, 0x04, 0x00, 0x0c, 0x00, - 0x23, 0x03, 0x04, 0x1b, 0x43, 0x18, 0x49, 0x0e, - 0xf0, 0x00, 0xfc, 0x7c, 0x80, 0xb8, 0xe0, 0x0a, - 0x29, 0x7f, 0xda, 0x01, 0x21, 0x01, 0xe0, 0x00, - 0x21, 0x00, 0x98, 0x04, 0x9a, 0x07, 0xf0, 0x00, - 0xf9, 0xaf, 0x1c, 0x05, 0xd0, 0x01, 0x20, 0x08, - 0x70, 0xb8, 0x1c, 0x28, 0xb0, 0x04, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x56, 0xe0, 0x2e, 0x08, 0x56, 0xc0, - 0x00, 0x00, 0x27, 0x10, 0x2e, 0x08, 0x56, 0xd0, - 0x00, 0x00, 0x04, 0x0a, 0x00, 0x00, 0x03, 0xff, - 0xb5, 0x80, 0x06, 0x09, 0x0e, 0x09, 0x1c, 0x07, - 0x20, 0x01, 0x60, 0x18, 0x29, 0x50, 0xd0, 0x0e, - 0xdc, 0x06, 0x29, 0x22, 0xd0, 0x0b, 0x29, 0x32, - 0xd0, 0x09, 0x29, 0x34, 0xd1, 0x0d, 0xe0, 0x06, - 0x29, 0x80, 0xd0, 0x02, 0x29, 0x84, 0xd1, 0x08, - 0xe0, 0x01, 0x20, 0x00, 0x70, 0x10, 0x1c, 0x38, - 0xf7, 0xff, 0xfe, 0x2e, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x29, 0x7f, 0xda, 0x01, 0x21, 0x01, - 0xe0, 0x00, 0x21, 0x00, 0x1c, 0x38, 0x1c, 0x1a, - 0xf0, 0x00, 0xf9, 0x72, 0x28, 0x00, 0xd0, 0xf1, - 0x21, 0x08, 0x00, 0xfa, 0x1b, 0xd2, 0x00, 0x92, - 0x4b, 0x02, 0x18, 0xd2, 0x70, 0x91, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0xff, 0x06, 0x09, 0x0e, 0x09, 0x20, 0x01, - 0xb0, 0x81, 0x1c, 0x17, 0x9a, 0x04, 0x25, 0x01, - 0x60, 0x10, 0x98, 0x01, 0x00, 0xc2, 0x1a, 0x12, - 0x00, 0x92, 0x1c, 0x16, 0x48, 0x78, 0x90, 0x00, - 0x18, 0x14, 0x29, 0x80, 0xd0, 0x59, 0xdc, 0x08, - 0x29, 0x22, 0xd0, 0x1a, 0x29, 0x32, 0xd0, 0x55, - 0x29, 0x34, 0xd0, 0x53, 0x29, 0x50, 0xd1, 0x61, - 0xe0, 0xc8, 0x29, 0x84, 0xd0, 0x4e, 0x4e, 0x71, - 0x29, 0xa0, 0xd0, 0x18, 0x29, 0xa1, 0xd1, 0x59, - 0x98, 0x01, 0xf7, 0xff, 0xfa, 0x19, 0x8b, 0x21, - 0x29, 0x00, 0xd1, 0x54, 0x88, 0xb8, 0xf0, 0x00, - 0xfc, 0x45, 0x60, 0xb0, 0x28, 0x00, 0xd1, 0x58, - 0xe0, 0x15, 0x98, 0x01, 0xf7, 0xff, 0xfa, 0x0c, - 0x98, 0x01, 0xf0, 0x00, 0xf9, 0x11, 0x1c, 0x05, - 0xd0, 0x6a, 0x20, 0x02, 0xe0, 0xbd, 0x98, 0x01, - 0xf7, 0xff, 0xfa, 0x02, 0x8b, 0x21, 0x29, 0x00, - 0xd1, 0x07, 0x88, 0xb8, 0xf0, 0x00, 0xfc, 0x2e, - 0x60, 0xb0, 0x28, 0x00, 0xd1, 0x0c, 0x20, 0x00, - 0xe0, 0xb1, 0x88, 0xb8, 0x18, 0x08, 0x04, 0x02, - 0x0c, 0x12, 0x69, 0x60, 0xf0, 0x00, 0xfc, 0x27, - 0x60, 0xb0, 0x28, 0x00, 0xd0, 0xf3, 0x61, 0x60, - 0x20, 0x34, 0x70, 0x30, 0x70, 0x70, 0x20, 0x0c, - 0x80, 0x70, 0x78, 0xe0, 0x71, 0x30, 0x88, 0xb9, - 0x8b, 0x20, 0x18, 0x09, 0x81, 0xb1, 0x68, 0xb1, - 0x18, 0x08, 0x88, 0xba, 0x68, 0x39, 0xf0, 0x13, - 0xfb, 0x2d, 0xf7, 0xff, 0xfa, 0x07, 0x28, 0x00, - 0xd1, 0x05, 0x68, 0xb0, 0xf0, 0x00, 0xfc, 0x2c, - 0xe0, 0x53, 0xe0, 0x36, 0xe0, 0x76, 0x78, 0xe0, - 0x30, 0x50, 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, - 0x04, 0x1b, 0x43, 0x18, 0x49, 0x46, 0xf0, 0x00, - 0xfb, 0xad, 0x80, 0xa0, 0x20, 0x00, 0x83, 0x20, - 0x61, 0x60, 0xe0, 0x22, 0xe0, 0x6d, 0x88, 0xb8, - 0x18, 0x08, 0x04, 0x02, 0x0c, 0x12, 0x69, 0x60, - 0xf0, 0x00, 0xfb, 0xf1, 0x60, 0xb0, 0x28, 0x00, - 0xd0, 0xbd, 0x61, 0x60, 0x8b, 0x21, 0x69, 0x60, - 0x18, 0x40, 0x88, 0xba, 0x68, 0x39, 0xf0, 0x13, - 0xfb, 0x01, 0x8b, 0x20, 0x88, 0xb9, 0x18, 0x40, - 0x83, 0x20, 0x78, 0xe0, 0x30, 0x50, 0x04, 0x00, - 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, 0x43, 0x18, - 0x49, 0x33, 0xf0, 0x00, 0xfb, 0x87, 0x80, 0xa0, - 0x20, 0x00, 0x9a, 0x04, 0x60, 0x10, 0xe0, 0x55, - 0xe0, 0x54, 0x98, 0x01, 0xf7, 0xff, 0xf9, 0x98, - 0x78, 0x38, 0x28, 0x80, 0xd1, 0x23, 0x20, 0x32, - 0x4f, 0x2c, 0x70, 0x38, 0x20, 0x23, 0x70, 0x78, - 0x20, 0x0c, 0x80, 0x78, 0x98, 0x00, 0x5b, 0x80, - 0x80, 0xb8, 0x78, 0xe1, 0x71, 0xb9, 0x22, 0x00, - 0x20, 0x81, 0x68, 0xbb, 0xf7, 0xff, 0xf9, 0xd6, - 0x81, 0xb8, 0xf7, 0xff, 0xf9, 0xa5, 0x28, 0x00, - 0xd1, 0x01, 0x25, 0x00, 0xe0, 0x36, 0x78, 0xe0, - 0x30, 0x50, 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, - 0x04, 0x1b, 0x43, 0x18, 0x49, 0x1c, 0xf0, 0x00, - 0xfb, 0x59, 0x80, 0xa0, 0xe0, 0x2a, 0x7e, 0xa0, - 0x28, 0x00, 0xd1, 0x10, 0x78, 0xe0, 0x30, 0x60, - 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, - 0x43, 0x18, 0x21, 0x7d, 0x00, 0xc9, 0xf0, 0x00, - 0xfb, 0x49, 0x80, 0xe0, 0x20, 0x00, 0x9a, 0x04, - 0x60, 0x10, 0x20, 0x04, 0xe0, 0x15, 0x20, 0x00, - 0x76, 0xa0, 0xe0, 0x13, 0x98, 0x01, 0x9b, 0x04, - 0x1c, 0x3a, 0xf7, 0xff, 0xfd, 0x29, 0x1c, 0x05, - 0xe0, 0x0c, 0x29, 0x7f, 0xda, 0x01, 0x21, 0x01, - 0xe0, 0x00, 0x21, 0x00, 0x98, 0x01, 0x9a, 0x04, - 0xf0, 0x00, 0xf8, 0x6e, 0x1c, 0x05, 0xd0, 0x01, - 0x20, 0x08, 0x70, 0xa0, 0x1c, 0x28, 0xb0, 0x01, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xe0, 0x2e, 0x08, 0x56, 0xd0, - 0x00, 0x00, 0x27, 0x10, 0x2e, 0x08, 0x56, 0xc0, - 0xb5, 0xf0, 0x1c, 0x07, 0x06, 0x08, 0x0e, 0x00, - 0x21, 0x01, 0x26, 0x02, 0x00, 0xfa, 0x1b, 0xd2, - 0x00, 0x92, 0x60, 0x19, 0x1c, 0x1c, 0x49, 0x19, - 0x18, 0x55, 0x28, 0x22, 0xd0, 0x19, 0x28, 0x50, - 0xd0, 0x11, 0x28, 0x80, 0xd0, 0x21, 0x28, 0x85, - 0xd1, 0x23, 0x1c, 0x38, 0xf7, 0xff, 0xf9, 0x20, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x25, 0x28, 0x00, - 0xd0, 0x00, 0x70, 0xae, 0x21, 0x00, 0x60, 0x21, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x1a, 0x28, 0x00, 0xd0, 0xf7, - 0xe0, 0x07, 0x1c, 0x38, 0xf7, 0xff, 0xf9, 0x0c, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x11, 0x28, 0x00, - 0xd0, 0xee, 0x70, 0xae, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0x00, 0x22, 0x34, 0x49, 0x0a, 0x70, 0x0a, - 0x22, 0x33, 0x70, 0x4a, 0x22, 0x04, 0x80, 0x4a, - 0x00, 0xc3, 0x1a, 0x18, 0x00, 0x80, 0x4a, 0x07, - 0x18, 0x80, 0x78, 0xc0, 0x71, 0x08, 0xf7, 0xff, - 0xf9, 0x0b, 0x28, 0x00, 0xd1, 0x01, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x56, 0xc0, 0x2e, 0x08, 0x56, 0xe0, - 0xb5, 0xf0, 0x1c, 0x04, 0x20, 0x01, 0x26, 0x01, - 0x60, 0x10, 0x1c, 0x17, 0x4d, 0x1b, 0x29, 0x00, - 0xd0, 0x08, 0x20, 0x03, 0xf0, 0x00, 0xfb, 0x02, - 0x60, 0xa8, 0x28, 0x00, 0xd1, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x32, 0x70, 0x28, - 0x20, 0x23, 0x70, 0x68, 0x20, 0x0c, 0x80, 0x68, - 0x00, 0xe0, 0x1b, 0x00, 0x00, 0x80, 0x49, 0x12, - 0x5a, 0x0a, 0x80, 0xaa, 0x18, 0x44, 0x78, 0xe1, - 0x71, 0xa9, 0x22, 0x00, 0x20, 0x84, 0x68, 0xab, - 0xf7, 0xff, 0xf9, 0x08, 0x81, 0xa8, 0xf7, 0xff, - 0xf8, 0xd7, 0x28, 0x00, 0xd1, 0x02, 0x26, 0x00, - 0x60, 0x38, 0xe0, 0x0a, 0x78, 0xe0, 0x30, 0x50, - 0x04, 0x00, 0x0c, 0x00, 0x23, 0x03, 0x04, 0x1b, - 0x43, 0x18, 0x49, 0x06, 0xf0, 0x00, 0xfa, 0x8a, - 0x80, 0xa0, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x56, 0xc0, - 0x2e, 0x08, 0x56, 0xe0, 0x00, 0x00, 0x27, 0x10, - 0x20, 0x00, 0x47, 0x70, 0xb5, 0x90, 0x28, 0x00, - 0xd0, 0x06, 0x21, 0xff, 0x4a, 0x24, 0x73, 0x11, - 0x4b, 0x24, 0x18, 0xc1, 0xf7, 0xfa, 0xfe, 0x88, - 0x20, 0x00, 0x21, 0x00, 0x4a, 0x22, 0x01, 0x83, - 0x18, 0x1b, 0x00, 0xdb, 0x18, 0x9b, 0x33, 0xff, - 0x33, 0xff, 0x33, 0x02, 0x60, 0x19, 0x60, 0x59, - 0x30, 0x01, 0x28, 0x06, 0xdb, 0xf3, 0x20, 0x00, - 0x43, 0xc4, 0x4a, 0x1c, 0x01, 0x03, 0x50, 0xd1, - 0x18, 0x9b, 0x60, 0xdc, 0x30, 0x01, 0x28, 0x1e, - 0xdb, 0xf8, 0x27, 0x01, 0x20, 0x02, 0x49, 0x18, - 0x60, 0x08, 0xf7, 0xfd, 0xfb, 0x11, 0x28, 0x01, - 0xd0, 0x00, 0x27, 0x00, 0xf7, 0xfb, 0xff, 0x78, - 0x28, 0x00, 0xd1, 0x00, 0x27, 0x00, 0xf7, 0xfe, - 0xfe, 0x09, 0x28, 0x00, 0xd1, 0x00, 0x27, 0x00, - 0xf7, 0xfd, 0xfe, 0x24, 0x28, 0x00, 0xd1, 0x00, - 0x27, 0x00, 0xf0, 0x01, 0xf9, 0x05, 0x28, 0x00, - 0xd1, 0x00, 0x27, 0x00, 0xf0, 0x02, 0xf8, 0xb6, - 0x42, 0xa0, 0xd1, 0x00, 0x27, 0x00, 0x2f, 0x01, - 0xd1, 0x01, 0xf0, 0x00, 0xf8, 0x0f, 0x1c, 0x38, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0x90, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x5e, 0x30, 0x2e, 0x08, 0x5c, 0x50, - 0x6e, 0x00, 0x11, 0x00, 0xb5, 0x00, 0xf0, 0x18, - 0xfd, 0x33, 0x49, 0x07, 0x20, 0x19, 0xf0, 0x18, - 0xfc, 0xfb, 0xf0, 0x18, 0xfc, 0xf1, 0x4b, 0x05, - 0x40, 0x18, 0xf0, 0x18, 0xfc, 0xf1, 0xf0, 0x18, - 0xfd, 0x5d, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x00, 0xaf, 0xb5, 0xfd, 0xff, 0xff, 0xff, - 0xb5, 0x00, 0xf0, 0x18, 0xfc, 0xe1, 0x23, 0x01, - 0x06, 0x5b, 0x43, 0x18, 0xf0, 0x18, 0xfc, 0xe0, - 0x20, 0x01, 0x06, 0x40, 0xf0, 0x18, 0xfc, 0xd3, - 0x48, 0x02, 0x68, 0x81, 0x31, 0x01, 0x60, 0x81, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x90, - 0xb5, 0xf0, 0xb0, 0x84, 0xf0, 0x00, 0xfa, 0x80, - 0x4f, 0x99, 0x88, 0x39, 0x48, 0x99, 0x29, 0x06, - 0xd2, 0x64, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x03, 0x36, 0x61, 0x8e, - 0xb9, 0xe8, 0x1d, 0xc5, 0x35, 0xff, 0x35, 0xfa, - 0x68, 0x6c, 0x68, 0x2e, 0x2e, 0x00, 0xd1, 0x13, - 0xf7, 0xfa, 0xfc, 0xa0, 0x69, 0x39, 0x42, 0x88, - 0xd9, 0x24, 0xf7, 0xfa, 0xfc, 0x9b, 0x30, 0x64, - 0x61, 0x38, 0x20, 0x00, 0xab, 0x01, 0x70, 0x18, - 0x3b, 0x04, 0x70, 0x18, 0x46, 0x69, 0x22, 0x00, - 0xa8, 0x01, 0xf7, 0xfd, 0xfa, 0x69, 0xe0, 0x15, - 0x21, 0x01, 0xab, 0x01, 0x70, 0x19, 0x19, 0x01, - 0x31, 0xff, 0x31, 0xe1, 0x78, 0x09, 0x3b, 0x04, - 0x70, 0x19, 0x01, 0x21, 0x18, 0x0a, 0x46, 0x69, - 0xa8, 0x01, 0xf7, 0xfd, 0xfa, 0x59, 0x20, 0x1e, - 0x1c, 0x61, 0x3e, 0x01, 0xf0, 0x13, 0xf8, 0xd8, - 0x60, 0x69, 0x60, 0x2e, 0x21, 0x01, 0xe0, 0x54, - 0x23, 0x01, 0x02, 0x9b, 0x18, 0xc5, 0x68, 0xec, - 0x68, 0xae, 0x2e, 0x00, 0xd0, 0x20, 0x19, 0x01, - 0x23, 0x1f, 0x01, 0x5b, 0x18, 0xc9, 0x7a, 0x09, - 0xab, 0x00, 0x70, 0x19, 0xa9, 0x00, 0x78, 0x09, - 0x09, 0x09, 0x29, 0x06, 0xd0, 0x01, 0x21, 0x01, - 0xe0, 0x00, 0x21, 0x02, 0xab, 0x01, 0x70, 0x19, - 0x01, 0x21, 0x18, 0x08, 0x23, 0x41, 0x00, 0xdb, - 0x18, 0xc2, 0x46, 0x69, 0xa8, 0x01, 0xf7, 0xfb, - 0xfe, 0xa3, 0x20, 0x1e, 0x1c, 0x61, 0x3e, 0x01, - 0xf0, 0x13, 0xf8, 0xae, 0x60, 0xe9, 0x60, 0xae, - 0x21, 0x02, 0xe0, 0x2a, 0xe0, 0xc2, 0x23, 0x03, - 0x02, 0x5b, 0x18, 0xc5, 0x69, 0x6c, 0x69, 0x2e, - 0x2e, 0x00, 0xd0, 0x21, 0x21, 0x01, 0xab, 0x01, - 0x70, 0x19, 0x19, 0x01, 0x23, 0x2f, 0x01, 0x5b, - 0x18, 0xc9, 0x7c, 0x09, 0xab, 0x00, 0x70, 0x19, - 0xa9, 0x00, 0x78, 0x09, 0x09, 0x09, 0x29, 0x06, - 0xd1, 0x02, 0x21, 0x02, 0x71, 0x19, 0x33, 0x04, - 0x01, 0x21, 0x18, 0x08, 0x23, 0x41, 0x01, 0x1b, - 0x18, 0xc2, 0x46, 0x69, 0xa8, 0x01, 0xf7, 0xfe, - 0xfd, 0x09, 0x20, 0x1e, 0x1c, 0x61, 0x3e, 0x01, - 0xf0, 0x13, 0xf8, 0x82, 0x61, 0x69, 0x61, 0x2e, - 0x21, 0x03, 0x80, 0x39, 0x20, 0x00, 0xe0, 0x97, - 0x23, 0x01, 0x02, 0xdb, 0x18, 0xc5, 0x69, 0xec, - 0x69, 0xae, 0x2e, 0x00, 0xd0, 0x21, 0x21, 0x01, - 0xab, 0x01, 0x70, 0x19, 0x19, 0x01, 0x23, 0x3f, - 0x01, 0x5b, 0x18, 0xc9, 0x7e, 0x09, 0xab, 0x00, - 0x70, 0x19, 0xa9, 0x00, 0x78, 0x09, 0x09, 0x09, - 0x29, 0x06, 0xd1, 0x02, 0x21, 0x02, 0x71, 0x19, - 0x33, 0x04, 0x01, 0x21, 0x18, 0x08, 0x23, 0xc3, - 0x00, 0xdb, 0x18, 0xc2, 0x46, 0x69, 0xa8, 0x01, - 0xf7, 0xfd, 0xfc, 0xfe, 0x20, 0x1e, 0x1c, 0x61, - 0x3e, 0x01, 0xf0, 0x13, 0xf8, 0x55, 0x61, 0xe9, - 0x61, 0xae, 0x20, 0x04, 0xe0, 0x2c, 0x23, 0x05, - 0x02, 0x5b, 0x18, 0xc5, 0x6a, 0x6c, 0x6a, 0x2e, - 0x2e, 0x00, 0xd0, 0x24, 0x19, 0x01, 0x18, 0xc9, - 0x78, 0x09, 0xab, 0x00, 0x70, 0x19, 0xa9, 0x00, - 0x78, 0x09, 0x09, 0x09, 0x29, 0x06, 0xd0, 0x05, - 0x29, 0x07, 0xd0, 0x01, 0x29, 0x08, 0xd1, 0x03, - 0x21, 0x03, 0xe0, 0x02, 0x21, 0x02, 0xe0, 0x00, - 0x21, 0x01, 0xab, 0x01, 0x70, 0x19, 0x01, 0x21, - 0x18, 0x08, 0x23, 0x41, 0x01, 0x5b, 0x18, 0xc2, - 0x46, 0x69, 0xa8, 0x01, 0xf0, 0x00, 0xff, 0xb4, - 0x20, 0x1e, 0x1c, 0x61, 0x3e, 0x01, 0xf0, 0x13, - 0xf8, 0x27, 0x62, 0x69, 0x62, 0x2e, 0x20, 0x05, - 0x80, 0x38, 0xe7, 0xa3, 0xe7, 0xff, 0x23, 0x03, - 0x02, 0x9b, 0x18, 0xc6, 0x6a, 0xf4, 0x6a, 0xb5, - 0x2d, 0x00, 0xd0, 0x33, 0x19, 0x01, 0x18, 0xc9, - 0x7a, 0x09, 0xab, 0x00, 0x70, 0x19, 0xa9, 0x00, - 0x78, 0x09, 0x09, 0x09, 0x29, 0x09, 0xd0, 0x10, - 0x29, 0x0a, 0xd1, 0x1f, 0x01, 0x21, 0x18, 0x08, - 0x23, 0x05, 0x02, 0x5b, 0x18, 0xc0, 0x90, 0x02, - 0x8d, 0x01, 0x6a, 0xc0, 0xf7, 0xf5, 0xfd, 0x7c, - 0x23, 0x01, 0x42, 0xd8, 0xd0, 0x14, 0x98, 0x02, - 0xe0, 0x0d, 0x01, 0x21, 0x18, 0x08, 0x23, 0x05, - 0x02, 0x5b, 0x18, 0xc0, 0x90, 0x03, 0x8d, 0x01, - 0x6a, 0xc0, 0xf7, 0xf5, 0xfd, 0xe6, 0x23, 0x01, - 0x42, 0xd8, 0xd0, 0x05, 0x98, 0x03, 0x6a, 0xc0, - 0xf0, 0x00, 0xf9, 0x42, 0x34, 0x01, 0x3d, 0x01, - 0x20, 0x1e, 0x1c, 0x21, 0xf0, 0x12, 0xff, 0xe8, - 0x62, 0xf1, 0x62, 0xb5, 0x20, 0x00, 0x80, 0x38, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x90, 0x2e, 0x08, 0x5e, 0x30, - 0x20, 0x00, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x00, 0x47, 0x70, 0xb4, 0x0f, 0xb5, 0x80, - 0xb0, 0x84, 0x99, 0x06, 0xaa, 0x07, 0x4f, 0x15, - 0x68, 0x38, 0xf0, 0x13, 0xf8, 0xf5, 0x30, 0x01, - 0x04, 0x00, 0x0c, 0x00, 0xab, 0x00, 0x80, 0x18, - 0x28, 0x80, 0xdc, 0x19, 0xa8, 0x00, 0x88, 0x00, - 0x28, 0x04, 0xdb, 0x15, 0xa8, 0x00, 0x88, 0x00, - 0x30, 0x02, 0xf0, 0x00, 0xf8, 0xeb, 0x28, 0x00, - 0xd0, 0x0e, 0x90, 0x01, 0xaa, 0x00, 0x88, 0x12, - 0x68, 0x39, 0xf0, 0x13, 0xf8, 0x03, 0x21, 0x00, - 0xaa, 0x00, 0x88, 0x12, 0x98, 0x01, 0x54, 0x81, - 0x46, 0x69, 0x20, 0xa6, 0xf0, 0x00, 0xf8, 0x24, - 0xb0, 0x04, 0xbc, 0x80, 0xbc, 0x08, 0xb0, 0x04, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0xcc, - 0xb5, 0x90, 0x04, 0x0c, 0x0c, 0x24, 0x1c, 0x07, - 0x1c, 0x20, 0xb0, 0x84, 0xf0, 0x00, 0xf8, 0xca, - 0x28, 0x00, 0xd1, 0x01, 0x43, 0xc0, 0xe0, 0x0b, - 0xab, 0x00, 0x80, 0x1c, 0x90, 0x01, 0x1c, 0x39, - 0x1c, 0x22, 0xf0, 0x12, 0xff, 0xdf, 0x46, 0x69, - 0x20, 0x96, 0xf0, 0x00, 0xf8, 0x05, 0x20, 0x00, - 0xb0, 0x04, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf0, 0x06, 0x06, 0x0e, 0x36, 0x07, 0x30, - 0x0f, 0x00, 0x01, 0x83, 0x18, 0x18, 0x00, 0xc0, - 0x1c, 0x0f, 0xb0, 0x83, 0x49, 0x2e, 0x18, 0x45, - 0x1f, 0xe8, 0x38, 0x79, 0x90, 0x02, 0x6f, 0x84, - 0x6f, 0xc0, 0x2c, 0x1e, 0xda, 0x4e, 0x09, 0x31, - 0x29, 0x06, 0xd1, 0x11, 0x88, 0x3a, 0xb0, 0x81, - 0x92, 0x00, 0x19, 0x01, 0x20, 0x1e, 0x1c, 0x2f, - 0xf0, 0x12, 0xff, 0x6a, 0x9a, 0x00, 0x01, 0x08, - 0x18, 0x38, 0x38, 0xff, 0x38, 0xff, 0x38, 0x42, - 0x87, 0x02, 0x18, 0x68, 0xb0, 0x01, 0xe0, 0x34, - 0x29, 0x07, 0xd1, 0x22, 0x19, 0x01, 0x20, 0x1e, - 0xf0, 0x12, 0xff, 0x5a, 0x91, 0x00, 0x01, 0x08, - 0x18, 0x28, 0x90, 0x01, 0x22, 0x10, 0x38, 0xff, - 0x38, 0xff, 0x38, 0x0a, 0x1c, 0x39, 0xf0, 0x12, - 0xff, 0x9d, 0x98, 0x00, 0x18, 0x28, 0x38, 0x40, - 0x76, 0x06, 0x78, 0xb8, 0xf0, 0x00, 0xf8, 0x76, - 0x99, 0x01, 0x39, 0xff, 0x39, 0xff, 0x39, 0x82, - 0x67, 0xc8, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0x1a, - 0x78, 0xba, 0x68, 0x79, 0xf0, 0x12, 0xff, 0x8a, - 0xe0, 0x11, 0x19, 0x01, 0x20, 0x1e, 0xf0, 0x12, - 0xff, 0x37, 0x91, 0x00, 0x01, 0x08, 0x18, 0x28, - 0x22, 0x10, 0x38, 0xff, 0x38, 0xff, 0x38, 0x0a, - 0x1c, 0x39, 0xf0, 0x12, 0xff, 0x7b, 0x98, 0x00, - 0x18, 0x28, 0x38, 0x40, 0x76, 0x06, 0x1c, 0x60, - 0x99, 0x02, 0x67, 0x88, 0x20, 0xff, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x5e, 0x30, 0xb5, 0xf3, 0x04, 0x0d, - 0x0c, 0x2d, 0x98, 0x00, 0x04, 0x06, 0x0c, 0x36, - 0x27, 0x00, 0x4c, 0x17, 0x01, 0x38, 0x58, 0x20, - 0x42, 0xb0, 0xd1, 0x07, 0xf7, 0xfa, 0xfa, 0xb2, - 0x19, 0x41, 0x01, 0x38, 0x19, 0x00, 0x60, 0xc1, - 0x60, 0x85, 0xe0, 0x02, 0x37, 0x01, 0x2f, 0x1e, - 0xdb, 0xf0, 0x2f, 0x1e, 0xdb, 0x1a, 0x27, 0x00, - 0x01, 0x38, 0x58, 0x20, 0x28, 0x00, 0xd1, 0x0b, - 0x01, 0x38, 0x50, 0x26, 0x99, 0x00, 0x0c, 0x09, - 0x19, 0x04, 0x60, 0x61, 0xf7, 0xfa, 0xfa, 0x9a, - 0x19, 0x40, 0x60, 0xe0, 0x60, 0xa5, 0xe0, 0x02, - 0x37, 0x01, 0x2f, 0x1e, 0xdb, 0xec, 0x2f, 0x1e, - 0xdb, 0x04, 0x20, 0x00, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x30, 0xe7, 0xf9, - 0x2e, 0x08, 0x5c, 0x50, 0xb4, 0x80, 0x21, 0x00, - 0x4a, 0x07, 0x23, 0x00, 0x01, 0x0f, 0x59, 0xd7, - 0x42, 0x87, 0xd1, 0x02, 0x01, 0x08, 0x50, 0x13, - 0xe0, 0x02, 0x31, 0x01, 0x29, 0x1e, 0xdb, 0xf5, - 0x1c, 0x18, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x5c, 0x50, 0xb5, 0x00, 0xf7, 0xfa, - 0xfb, 0xd7, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, - 0x1c, 0x04, 0x1c, 0x10, 0x1c, 0x15, 0x1c, 0x0f, - 0xf7, 0xff, 0xff, 0xf4, 0x1c, 0x06, 0xd1, 0x06, - 0x1c, 0x20, 0xf7, 0xfa, 0xfb, 0xd3, 0x20, 0x00, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1b, 0xea, - 0x19, 0xf0, 0x21, 0x00, 0xf0, 0x12, 0xff, 0xfe, - 0x1c, 0x30, 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x12, - 0xff, 0x01, 0x1c, 0x20, 0xf7, 0xfa, 0xfb, 0xc2, - 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x80, 0x27, 0x01, 0x28, 0x00, 0xd0, 0x01, - 0xf7, 0xfa, 0xfb, 0xb8, 0x1c, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x80, 0x1c, 0x07, - 0xf7, 0xfa, 0xfa, 0x40, 0x19, 0xc7, 0xf7, 0xfa, - 0xfa, 0x3d, 0x42, 0xb8, 0xd3, 0xfb, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x01, 0x47, 0x70, - 0xb5, 0xf0, 0xf7, 0xfa, 0xfa, 0x33, 0x4e, 0x13, - 0x69, 0x71, 0x42, 0x88, 0xd0, 0x1d, 0xf7, 0xfa, - 0xfa, 0x2d, 0x27, 0x00, 0x61, 0x70, 0x4d, 0x10, - 0x4c, 0x10, 0x01, 0x38, 0x58, 0x22, 0x2a, 0x00, - 0xd0, 0x10, 0x19, 0x00, 0x68, 0xc3, 0x69, 0x71, - 0x42, 0x8b, 0xd2, 0x0b, 0x80, 0x2a, 0x68, 0x82, - 0x18, 0x51, 0x60, 0xc1, 0x68, 0x40, 0x07, 0x00, - 0x0f, 0x00, 0x23, 0x60, 0x43, 0x18, 0x1c, 0x29, - 0xf7, 0xff, 0xfe, 0xea, 0x37, 0x01, 0x2f, 0x1e, - 0xdb, 0xe7, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x90, - 0x2e, 0x08, 0x5c, 0x40, 0x2e, 0x08, 0x5c, 0x50, - 0xb5, 0x80, 0x04, 0x00, 0x0c, 0x00, 0x21, 0x9f, - 0x4a, 0x07, 0x70, 0x11, 0x21, 0x80, 0x70, 0x51, - 0x21, 0x10, 0x70, 0x91, 0x27, 0x00, 0x70, 0xd7, - 0x21, 0x04, 0xf0, 0x01, 0xf8, 0xdd, 0x1c, 0x38, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x72, 0x60, 0xb5, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0xf0, 0x00, 0xf8, 0x03, 0x20, 0x00, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x80, 0x04, 0x00, - 0x0c, 0x00, 0x21, 0x9f, 0x4a, 0x07, 0x70, 0x11, - 0x21, 0x80, 0x70, 0x51, 0x21, 0x12, 0x70, 0x91, - 0x27, 0x00, 0x70, 0xd7, 0x21, 0x04, 0xf0, 0x01, - 0xf8, 0xbf, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x72, 0x60, - 0xb5, 0xf0, 0x04, 0x04, 0x0c, 0x24, 0x21, 0x00, - 0x20, 0x9f, 0x4a, 0x14, 0x70, 0x10, 0x20, 0x80, - 0x70, 0x50, 0x20, 0x11, 0x70, 0x90, 0x27, 0x00, - 0x48, 0x11, 0x01, 0x3d, 0x19, 0xed, 0x00, 0xed, - 0x59, 0x46, 0x2e, 0x00, 0xd0, 0x0c, 0x00, 0x8b, - 0x18, 0x9b, 0x0e, 0x36, 0x71, 0x1e, 0x59, 0x46, - 0x0c, 0x36, 0x71, 0x5e, 0x59, 0x46, 0x0a, 0x36, - 0x71, 0x9e, 0x59, 0x45, 0x71, 0xdd, 0x31, 0x01, - 0x37, 0x01, 0x2f, 0x07, 0xdb, 0xe9, 0x00, 0x88, - 0x70, 0xd0, 0x1d, 0x01, 0x1c, 0x20, 0xf0, 0x01, - 0xf8, 0x8f, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x72, 0x60, - 0x2e, 0x08, 0x7e, 0xa8, 0xb5, 0x80, 0x04, 0x00, - 0x0c, 0x00, 0x21, 0x9f, 0x4a, 0x07, 0x70, 0x11, - 0x21, 0x80, 0x70, 0x51, 0x21, 0x20, 0x70, 0x91, - 0x27, 0x00, 0x70, 0xd7, 0x21, 0x04, 0xf0, 0x01, - 0xf8, 0x77, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x72, 0x60, - 0xb5, 0xf0, 0x04, 0x07, 0x0c, 0x3f, 0xb0, 0x82, - 0x1c, 0xc8, 0x1c, 0x0c, 0x46, 0x69, 0xf0, 0x00, - 0xfc, 0x8b, 0x1c, 0x01, 0x00, 0xf8, 0x4a, 0x25, - 0x18, 0x80, 0x88, 0xc2, 0x20, 0x00, 0x4f, 0x24, - 0x00, 0xc3, 0x1a, 0x1b, 0x00, 0x9b, 0x19, 0xdb, - 0x78, 0xdb, 0x42, 0x93, 0xd1, 0x07, 0x00, 0xc2, - 0x1a, 0x12, 0x00, 0x92, 0x5a, 0xba, 0x32, 0x01, - 0x4b, 0x1e, 0x70, 0x9a, 0xe0, 0x04, 0x30, 0x01, - 0x04, 0x00, 0x14, 0x00, 0x28, 0x08, 0xdb, 0xeb, - 0x18, 0x61, 0x91, 0x01, 0x7a, 0x09, 0x04, 0x0d, - 0x14, 0x2d, 0x00, 0xc6, 0x1a, 0x36, 0x00, 0xb6, - 0x5b, 0xb8, 0x01, 0x00, 0x4c, 0x16, 0x19, 0x00, - 0x68, 0x40, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, - 0xff, 0x07, 0x1c, 0x68, 0xf7, 0xff, 0xfe, 0xde, - 0x5b, 0xb9, 0x01, 0x09, 0x19, 0x09, 0x60, 0x48, - 0x28, 0x00, 0xd0, 0x0a, 0x99, 0x01, 0x31, 0x09, - 0x1c, 0x2a, 0xf0, 0x12, 0xfd, 0xf3, 0x21, 0x00, - 0x5b, 0xb8, 0x01, 0x00, 0x19, 0x00, 0x68, 0x40, - 0x55, 0x41, 0x20, 0x02, 0x5b, 0xb9, 0x01, 0x0a, - 0x54, 0xa0, 0x1c, 0x08, 0xf0, 0x01, 0xf9, 0xae, - 0x20, 0x00, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7a, 0x60, - 0x2e, 0x08, 0x56, 0xe0, 0x2e, 0x08, 0x72, 0x60, - 0x2e, 0x08, 0x7e, 0x88, 0xb5, 0x80, 0x04, 0x00, - 0x0c, 0x00, 0x21, 0x9f, 0x4a, 0x07, 0x70, 0x11, - 0x21, 0x80, 0x70, 0x51, 0x21, 0x22, 0x70, 0x91, - 0x27, 0x00, 0x70, 0xd7, 0x21, 0x04, 0xf0, 0x01, - 0xf8, 0x03, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x72, 0x60, - 0xb5, 0x90, 0x04, 0x04, 0x0c, 0x24, 0xb0, 0x81, - 0x1c, 0xc8, 0x1c, 0x0f, 0x46, 0x69, 0xf0, 0x00, - 0xfc, 0x17, 0x18, 0x38, 0x78, 0xc0, 0x28, 0x00, - 0xd0, 0x0f, 0x23, 0x7d, 0x00, 0xdb, 0x43, 0x58, - 0x22, 0x03, 0x1c, 0x21, 0xf0, 0x01, 0xf8, 0x77, - 0x28, 0x00, 0xdd, 0x06, 0x00, 0x61, 0x4a, 0x07, - 0x18, 0x89, 0x31, 0xff, 0x31, 0xff, 0x31, 0x02, - 0x84, 0xc8, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x08, - 0x20, 0x00, 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7e, 0xa8, - 0xb5, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x21, 0x9f, - 0x4a, 0x0b, 0x70, 0x11, 0x21, 0x84, 0x70, 0x51, - 0x21, 0x41, 0x70, 0x91, 0x49, 0x09, 0x68, 0x09, - 0x0a, 0x0b, 0x70, 0xd3, 0x71, 0x11, 0x49, 0x08, - 0x68, 0x09, 0x0c, 0x0b, 0x71, 0x53, 0x0a, 0x0b, - 0x71, 0x93, 0x71, 0xd1, 0x21, 0x08, 0xf0, 0x00, - 0xff, 0xbb, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x72, 0x60, 0x2e, 0x08, 0x1a, 0xd8, - 0x2e, 0x08, 0x1a, 0xd4, 0xb5, 0x80, 0x04, 0x00, - 0x0c, 0x00, 0x21, 0x9f, 0x4a, 0x07, 0x70, 0x11, - 0x21, 0x80, 0x70, 0x51, 0x21, 0x30, 0x70, 0x91, - 0x27, 0x00, 0x70, 0xd7, 0x21, 0x04, 0xf0, 0x00, - 0xff, 0xa3, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x72, 0x60, - 0xb5, 0x90, 0x04, 0x07, 0x0c, 0x3f, 0xb0, 0x81, - 0x1c, 0xc8, 0x46, 0x69, 0xf0, 0x00, 0xfb, 0xb8, - 0x00, 0xf8, 0x49, 0x19, 0x18, 0x40, 0x88, 0xc2, - 0x20, 0x00, 0x49, 0x18, 0x00, 0xc3, 0x1a, 0x1b, - 0x00, 0x9b, 0x18, 0x5b, 0x78, 0xdb, 0x42, 0x93, - 0xd1, 0x07, 0x00, 0xc2, 0x1a, 0x12, 0x00, 0x92, - 0x5a, 0x89, 0x31, 0x01, 0x4a, 0x12, 0x70, 0x91, - 0xe0, 0x04, 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, - 0x28, 0x08, 0xdb, 0xeb, 0x01, 0x00, 0x49, 0x0f, - 0x18, 0x47, 0x68, 0xb8, 0x28, 0x00, 0xd0, 0x01, - 0xf7, 0xff, 0xfe, 0x3e, 0x24, 0x00, 0x81, 0xbc, - 0xa8, 0x00, 0x88, 0x00, 0xf7, 0xff, 0xfe, 0x12, - 0x60, 0xb8, 0x28, 0x00, 0xd0, 0x03, 0xa8, 0x00, - 0x88, 0x00, 0x08, 0x40, 0x81, 0xb8, 0x1c, 0x20, - 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x7a, 0x60, 0x2e, 0x08, 0x56, 0xe0, - 0x2e, 0x08, 0x72, 0x60, 0x2e, 0x08, 0x7e, 0x88, - 0xb5, 0x80, 0x04, 0x07, 0x0c, 0x3f, 0x04, 0x08, - 0x0c, 0x00, 0xf0, 0x02, 0xfc, 0xe9, 0x28, 0x00, - 0xd0, 0x0c, 0x68, 0x82, 0x2a, 0x00, 0xd0, 0x09, - 0x89, 0x81, 0x29, 0x00, 0xd0, 0x06, 0x1c, 0x38, - 0xf0, 0x00, 0xff, 0x46, 0x20, 0x01, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x47, 0x70, - 0xb5, 0x90, 0x04, 0x04, 0x0c, 0x24, 0xb0, 0x81, - 0x1c, 0xc8, 0x1c, 0x0f, 0x46, 0x69, 0xf0, 0x00, - 0xfb, 0x57, 0x18, 0x3f, 0x78, 0xf8, 0x28, 0x00, - 0xd0, 0x0d, 0x28, 0x01, 0xd1, 0x16, 0x1c, 0x20, - 0xf0, 0x00, 0xfc, 0x16, 0x79, 0x38, 0x23, 0x7d, - 0x00, 0xdb, 0x43, 0x58, 0x22, 0x01, 0x1c, 0x21, - 0xf0, 0x00, 0xff, 0xb1, 0xe0, 0x08, 0x1c, 0x20, - 0xf0, 0x00, 0xfc, 0x0a, 0x21, 0x09, 0x48, 0x06, - 0x70, 0x01, 0x21, 0x20, 0xf7, 0xff, 0xfc, 0xec, - 0x20, 0x00, 0xe0, 0x01, 0x20, 0x00, 0x43, 0xc0, - 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x72, 0x60, 0xb5, 0x90, 0x04, 0x04, - 0x0c, 0x24, 0xb0, 0x81, 0x1c, 0xc8, 0x1c, 0x0f, - 0x46, 0x69, 0xf0, 0x00, 0xfb, 0x29, 0x1c, 0x02, - 0x18, 0x38, 0x78, 0xc0, 0x28, 0x01, 0xd1, 0x04, - 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x00, 0xf8, 0x0a, - 0xe0, 0x03, 0x21, 0xf0, 0x1c, 0x20, 0xf0, 0x00, - 0xf8, 0x31, 0x20, 0x00, 0xb0, 0x01, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x04, 0x12, 0x14, 0x12, 0x18, 0x89, - 0x79, 0x0a, 0x2a, 0x00, 0xdd, 0x13, 0x2a, 0x03, - 0xdc, 0x11, 0x49, 0x0c, 0x70, 0x0a, 0x23, 0x9f, - 0x4a, 0x0b, 0x70, 0x13, 0x23, 0x88, 0x70, 0x53, - 0x23, 0x02, 0x70, 0x93, 0x70, 0xd3, 0x23, 0x01, - 0x71, 0x13, 0x78, 0x09, 0x71, 0x51, 0x21, 0x06, - 0xf0, 0x00, 0xfe, 0xd6, 0xe0, 0x02, 0x21, 0xf1, - 0xf0, 0x00, 0xf8, 0x0c, 0x20, 0x00, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0x70, - 0x2e, 0x08, 0x72, 0x60, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x00, 0x47, 0x70, 0xb5, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x23, 0x9f, 0x4a, 0x07, 0x70, 0x13, - 0x23, 0x88, 0x70, 0x53, 0x23, 0x02, 0x70, 0x93, - 0x23, 0x01, 0x70, 0xd3, 0x71, 0x11, 0x21, 0x05, - 0xf0, 0x00, 0xfe, 0xb6, 0x20, 0x00, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x72, 0x60, - 0xb5, 0xf3, 0xb0, 0x82, 0x4d, 0x1f, 0x78, 0x28, - 0x28, 0x0f, 0xd1, 0x2a, 0x99, 0x03, 0x1c, 0xc8, - 0xa9, 0x01, 0xf0, 0x00, 0xfa, 0xc9, 0x04, 0x00, - 0x0c, 0x00, 0x90, 0x00, 0x1d, 0xec, 0x34, 0xf9, - 0x88, 0xe1, 0xa8, 0x01, 0x88, 0x00, 0x18, 0x08, - 0x04, 0x06, 0x0c, 0x36, 0x68, 0xa0, 0x1c, 0x32, - 0xf7, 0xff, 0xfd, 0x41, 0x1c, 0x07, 0xd1, 0x01, - 0x43, 0xf8, 0xe0, 0x1d, 0x98, 0x00, 0x99, 0x03, - 0x18, 0x08, 0x1c, 0xc1, 0x88, 0xe0, 0x19, 0xc0, - 0xaa, 0x01, 0x88, 0x12, 0xf0, 0x12, 0xfc, 0x4e, - 0x1f, 0xb0, 0x04, 0x00, 0x0c, 0x00, 0x12, 0x01, - 0x71, 0x39, 0x71, 0x78, 0x1c, 0x38, 0xf7, 0xff, - 0xfd, 0x4b, 0x21, 0x04, 0x48, 0x08, 0x70, 0x01, - 0x27, 0x00, 0x70, 0x47, 0x70, 0x87, 0x21, 0x03, - 0xf7, 0xff, 0xfc, 0x4a, 0x70, 0x2f, 0x1c, 0x38, - 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0x7c, - 0x2e, 0x08, 0x72, 0x60, 0xb5, 0xf0, 0xb0, 0x81, - 0x1c, 0xc8, 0x1c, 0x0f, 0x46, 0x69, 0xf0, 0x00, - 0xfa, 0x87, 0x04, 0x05, 0x0c, 0x2d, 0x4e, 0x23, - 0x78, 0x30, 0x1d, 0xf4, 0x34, 0xf9, 0x28, 0x0f, - 0xd0, 0x23, 0xa8, 0x00, 0x88, 0x00, 0x30, 0x06, - 0xf7, 0xff, 0xfc, 0xfc, 0x60, 0xa0, 0x1c, 0x02, - 0xd0, 0x18, 0x19, 0x78, 0x1c, 0xc1, 0x1d, 0x90, - 0xaa, 0x00, 0x88, 0x12, 0xf0, 0x12, 0xfc, 0x12, - 0x20, 0x9f, 0x68, 0xa1, 0x70, 0x08, 0x20, 0x88, - 0x68, 0xa1, 0x70, 0x48, 0x20, 0x03, 0x68, 0xa1, - 0x70, 0x88, 0x20, 0x82, 0x68, 0xa1, 0x70, 0xc8, - 0x20, 0x0f, 0x70, 0x30, 0xa8, 0x00, 0x88, 0x00, - 0x30, 0x06, 0xe0, 0x18, 0x20, 0x00, 0x43, 0xc0, - 0xe0, 0x17, 0x88, 0xe1, 0xa8, 0x00, 0x88, 0x00, - 0x18, 0x0a, 0x68, 0xa0, 0xf7, 0xff, 0xfc, 0xdb, - 0x60, 0xa0, 0x28, 0x00, 0xd0, 0xf2, 0x88, 0xe1, - 0x18, 0x40, 0x19, 0x79, 0xaa, 0x00, 0x88, 0x12, - 0x31, 0x03, 0xf0, 0x12, 0xfb, 0xeb, 0x88, 0xe0, - 0xa9, 0x00, 0x88, 0x09, 0x18, 0x40, 0x80, 0xe0, - 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0x7c, - 0x20, 0x00, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0xb5, 0xf0, 0x1c, 0x0f, 0x04, 0x01, 0x0c, 0x09, - 0xb0, 0x81, 0x91, 0x00, 0xb0, 0x81, 0x46, 0x69, - 0x1c, 0xf8, 0xf0, 0x00, 0xfa, 0x2d, 0x1c, 0x02, - 0x18, 0x38, 0x78, 0xc1, 0x07, 0xc9, 0x0f, 0xc9, - 0x79, 0x04, 0x23, 0x05, 0x48, 0x16, 0x70, 0x03, - 0x70, 0x41, 0x70, 0x84, 0x21, 0x00, 0xab, 0x00, - 0x88, 0x1b, 0x3b, 0x02, 0x2b, 0x00, 0xdd, 0x09, - 0x18, 0x55, 0x19, 0xed, 0x79, 0x6d, 0x18, 0x46, - 0x70, 0xf5, 0x31, 0x01, 0x04, 0x09, 0x14, 0x09, - 0x42, 0x8b, 0xdc, 0xf5, 0x27, 0x00, 0xa9, 0x00, - 0x88, 0x09, 0x18, 0x41, 0x70, 0x4f, 0xa9, 0x00, - 0x88, 0x09, 0x31, 0x02, 0xf7, 0xff, 0xfb, 0xb8, - 0x23, 0x05, 0x48, 0x08, 0x70, 0x03, 0x21, 0x01, - 0x70, 0x41, 0x30, 0xff, 0x30, 0x01, 0x99, 0x01, - 0x80, 0x41, 0x80, 0x84, 0x80, 0xc7, 0x1c, 0x38, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x72, 0x60, 0x2e, 0x08, 0x7d, 0x7c, - 0xb5, 0xb0, 0x21, 0x9f, 0x4f, 0x1e, 0x70, 0x39, - 0x21, 0x88, 0x70, 0x79, 0x21, 0x08, 0x70, 0xb9, - 0x1d, 0xc2, 0x32, 0xf9, 0x88, 0xd1, 0x18, 0x09, - 0x78, 0x4b, 0x21, 0x01, 0x24, 0x00, 0x2b, 0x0b, - 0xd1, 0x05, 0x70, 0xf9, 0x71, 0x3c, 0x88, 0x50, - 0x21, 0x05, 0x1c, 0x3a, 0xe0, 0x17, 0x23, 0x81, - 0x70, 0xfb, 0x88, 0xd3, 0x33, 0x01, 0x71, 0x3b, - 0x71, 0x79, 0x21, 0x00, 0x88, 0xd3, 0x2b, 0x00, - 0xdd, 0x09, 0x18, 0x43, 0x78, 0x9b, 0x18, 0x7d, - 0x71, 0xab, 0x31, 0x01, 0x04, 0x09, 0x14, 0x09, - 0x88, 0xd3, 0x42, 0x8b, 0xdc, 0xf5, 0x88, 0xd0, - 0x1d, 0x81, 0x88, 0x50, 0x1c, 0x3a, 0xf0, 0x00, - 0xfd, 0x9f, 0x22, 0x20, 0x21, 0x00, 0x1c, 0x38, - 0xf0, 0x12, 0xfc, 0x58, 0x20, 0x06, 0x70, 0x38, - 0x21, 0x20, 0x1c, 0x38, 0xf7, 0xff, 0xfb, 0x68, - 0x1c, 0x20, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x72, 0x60, 0xb5, 0xf0, 0x1c, 0x0f, - 0x04, 0x01, 0x0c, 0x09, 0xb0, 0x83, 0x91, 0x00, - 0xb0, 0x84, 0x49, 0x2f, 0x91, 0x06, 0x78, 0x08, - 0x4e, 0x2e, 0x1c, 0xf1, 0x91, 0x05, 0x4d, 0x2e, - 0x28, 0x08, 0xd1, 0x34, 0x1c, 0xf8, 0xa9, 0x02, - 0xf0, 0x00, 0xf9, 0x9e, 0x04, 0x00, 0x0c, 0x00, - 0x90, 0x01, 0x88, 0xe9, 0xa8, 0x02, 0x88, 0x00, - 0x18, 0x08, 0x04, 0x02, 0x0c, 0x12, 0x92, 0x00, - 0x68, 0xa8, 0xf7, 0xff, 0xfc, 0x18, 0x1c, 0x04, - 0xd1, 0x02, 0x20, 0x00, 0x43, 0xc0, 0xe0, 0x3a, - 0x98, 0x01, 0x18, 0x38, 0x1c, 0xc1, 0x88, 0xe8, - 0x19, 0x00, 0xaa, 0x02, 0x88, 0x12, 0xf0, 0x12, - 0xfb, 0x25, 0x9a, 0x00, 0x1f, 0x90, 0x04, 0x00, - 0x0c, 0x00, 0x12, 0x01, 0x71, 0x21, 0x71, 0x60, - 0x98, 0x05, 0x1c, 0x21, 0xaa, 0x03, 0xf0, 0x00, - 0xf9, 0xcd, 0x1c, 0x07, 0xd5, 0x03, 0x1c, 0x20, - 0xf7, 0xff, 0xfc, 0x1a, 0xe7, 0xe1, 0x1c, 0x20, - 0xf7, 0xff, 0xfc, 0x16, 0xe0, 0x06, 0x98, 0x05, - 0x1c, 0x39, 0xaa, 0x03, 0xf0, 0x00, 0xf9, 0xbe, - 0x1c, 0x07, 0xd4, 0xd6, 0x24, 0x02, 0x70, 0x34, - 0x12, 0x38, 0x70, 0x70, 0x70, 0xb7, 0xa8, 0x03, - 0x88, 0x00, 0x1c, 0xc1, 0x1c, 0x30, 0xf7, 0xff, - 0xfb, 0x0b, 0x99, 0x06, 0x70, 0x0c, 0x20, 0x01, - 0x99, 0x06, 0x70, 0x48, 0x99, 0x04, 0x80, 0x69, - 0x80, 0xa8, 0x21, 0x00, 0x80, 0xe9, 0xb0, 0x07, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x7d, 0x7c, 0x2e, 0x08, 0x72, 0x60, - 0x2e, 0x08, 0x7e, 0x7c, 0xb5, 0xf0, 0xb0, 0x81, - 0x1c, 0xc8, 0x1c, 0x0f, 0x46, 0x69, 0xf0, 0x00, - 0xf9, 0x3f, 0x04, 0x05, 0x0c, 0x2d, 0x4e, 0x23, - 0x78, 0x30, 0x1d, 0xf4, 0x34, 0xf9, 0x28, 0x08, - 0xd0, 0x23, 0xa8, 0x00, 0x88, 0x00, 0x30, 0x06, - 0xf7, 0xff, 0xfb, 0xb4, 0x60, 0xa0, 0x1c, 0x02, - 0xd0, 0x18, 0x19, 0x78, 0x1c, 0xc1, 0x1d, 0x90, - 0xaa, 0x00, 0x88, 0x12, 0xf0, 0x12, 0xfa, 0xca, - 0x20, 0x9f, 0x68, 0xa1, 0x70, 0x08, 0x20, 0x88, - 0x68, 0xa1, 0x70, 0x48, 0x20, 0x09, 0x68, 0xa1, - 0x70, 0x88, 0x20, 0x82, 0x68, 0xa1, 0x70, 0xc8, - 0x20, 0x08, 0x70, 0x30, 0xa8, 0x00, 0x88, 0x00, - 0x30, 0x06, 0xe0, 0x18, 0x20, 0x00, 0x43, 0xc0, - 0xe0, 0x17, 0x88, 0xe1, 0xa8, 0x00, 0x88, 0x00, - 0x18, 0x0a, 0x68, 0xa0, 0xf7, 0xff, 0xfb, 0x93, - 0x60, 0xa0, 0x28, 0x00, 0xd0, 0xf2, 0x88, 0xe1, - 0x18, 0x40, 0x19, 0x79, 0xaa, 0x00, 0x88, 0x12, - 0x31, 0x03, 0xf0, 0x12, 0xfa, 0xa3, 0x88, 0xe0, - 0xa9, 0x00, 0x88, 0x09, 0x18, 0x40, 0x80, 0xe0, - 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0x7c, - 0xb5, 0x80, 0x04, 0x00, 0x0c, 0x00, 0x22, 0x9f, - 0x4f, 0x0d, 0x70, 0x3a, 0x22, 0x88, 0x70, 0x7a, - 0x22, 0x0b, 0x70, 0xba, 0x22, 0x01, 0x70, 0xfa, - 0x71, 0x39, 0x21, 0x05, 0x1c, 0x3a, 0xf0, 0x00, - 0xfc, 0xbf, 0x22, 0x20, 0x21, 0x00, 0x1c, 0x38, - 0xf0, 0x12, 0xfb, 0x78, 0x20, 0x06, 0x70, 0x38, - 0x21, 0x20, 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x88, - 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x72, 0x60, 0xb5, 0xf0, 0x1c, 0x0f, - 0x04, 0x01, 0x0c, 0x09, 0xb0, 0x83, 0x91, 0x00, - 0xb0, 0x84, 0x49, 0x2f, 0x91, 0x06, 0x78, 0x08, - 0x4e, 0x2e, 0x1c, 0xf1, 0x91, 0x05, 0x4d, 0x2e, - 0x28, 0x07, 0xd1, 0x34, 0x1c, 0xf8, 0xa9, 0x02, - 0xf0, 0x00, 0xf8, 0xbe, 0x04, 0x00, 0x0c, 0x00, - 0x90, 0x01, 0x88, 0xe9, 0xa8, 0x02, 0x88, 0x00, - 0x18, 0x08, 0x04, 0x02, 0x0c, 0x12, 0x92, 0x00, - 0x68, 0xa8, 0xf7, 0xff, 0xfb, 0x38, 0x1c, 0x04, - 0xd1, 0x02, 0x20, 0x00, 0x43, 0xc0, 0xe0, 0x3a, - 0x98, 0x01, 0x18, 0x38, 0x1c, 0xc1, 0x88, 0xe8, - 0x19, 0x00, 0xaa, 0x02, 0x88, 0x12, 0xf0, 0x12, - 0xfa, 0x45, 0x9a, 0x00, 0x1f, 0x90, 0x04, 0x00, - 0x0c, 0x00, 0x12, 0x01, 0x71, 0x21, 0x71, 0x60, - 0x98, 0x05, 0x1c, 0x21, 0xaa, 0x03, 0xf0, 0x00, - 0xf8, 0xed, 0x1c, 0x07, 0xd5, 0x03, 0x1c, 0x20, - 0xf7, 0xff, 0xfb, 0x3a, 0xe7, 0xe1, 0x1c, 0x20, - 0xf7, 0xff, 0xfb, 0x36, 0xe0, 0x06, 0x98, 0x05, - 0x1c, 0x39, 0xaa, 0x03, 0xf0, 0x00, 0xf8, 0xde, - 0x1c, 0x07, 0xd4, 0xd6, 0x24, 0x03, 0x70, 0x34, - 0x12, 0x38, 0x70, 0x70, 0x70, 0xb7, 0xa8, 0x03, - 0x88, 0x00, 0x19, 0x01, 0x1c, 0x30, 0xf7, 0xff, - 0xfa, 0x2b, 0x99, 0x06, 0x70, 0x0c, 0x20, 0x01, - 0x99, 0x06, 0x70, 0x48, 0x99, 0x04, 0x80, 0x69, - 0x80, 0xa8, 0x21, 0x00, 0x80, 0xe9, 0xb0, 0x07, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x7d, 0x7c, 0x2e, 0x08, 0x72, 0x60, - 0x2e, 0x08, 0x7e, 0x7c, 0xb5, 0xf0, 0xb0, 0x81, - 0x1c, 0xc8, 0x1c, 0x0f, 0x46, 0x69, 0xf0, 0x00, - 0xf8, 0x5f, 0x04, 0x05, 0x0c, 0x2d, 0x4e, 0x23, - 0x78, 0x30, 0x1d, 0xf4, 0x34, 0xf9, 0x28, 0x07, - 0xd0, 0x23, 0xa8, 0x00, 0x88, 0x00, 0x30, 0x06, - 0xf7, 0xff, 0xfa, 0xd4, 0x60, 0xa0, 0x1c, 0x02, - 0xd0, 0x18, 0x19, 0x78, 0x1c, 0xc1, 0x1d, 0x90, - 0xaa, 0x00, 0x88, 0x12, 0xf0, 0x12, 0xf9, 0xea, - 0x20, 0x9f, 0x68, 0xa1, 0x70, 0x08, 0x20, 0x88, - 0x68, 0xa1, 0x70, 0x48, 0x20, 0x0c, 0x68, 0xa1, - 0x70, 0x88, 0x20, 0x82, 0x68, 0xa1, 0x70, 0xc8, - 0x20, 0x07, 0x70, 0x30, 0xa8, 0x00, 0x88, 0x00, - 0x30, 0x06, 0xe0, 0x18, 0x20, 0x00, 0x43, 0xc0, - 0xe0, 0x17, 0x88, 0xe1, 0xa8, 0x00, 0x88, 0x00, - 0x18, 0x0a, 0x68, 0xa0, 0xf7, 0xff, 0xfa, 0xb3, - 0x60, 0xa0, 0x28, 0x00, 0xd0, 0xf2, 0x88, 0xe1, - 0x18, 0x40, 0x19, 0x79, 0xaa, 0x00, 0x88, 0x12, - 0x31, 0x03, 0xf0, 0x12, 0xf9, 0xc3, 0x88, 0xe0, - 0xa9, 0x00, 0x88, 0x09, 0x18, 0x40, 0x80, 0xe0, - 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0x7c, - 0x20, 0x00, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x00, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x00, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x00, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x00, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0xb4, 0xb0, 0x24, 0x01, 0x22, 0x00, 0x78, 0x07, - 0x0a, 0x3b, 0xd3, 0x15, 0x23, 0x00, 0x06, 0x7c, - 0x0e, 0x64, 0x2c, 0x00, 0xdd, 0x0a, 0x02, 0x12, - 0x04, 0x12, 0x0c, 0x12, 0x18, 0xc5, 0x78, 0x6d, - 0x43, 0x2a, 0x04, 0x12, 0x0c, 0x12, 0x33, 0x01, - 0x42, 0x9c, 0xdc, 0xf4, 0x1c, 0x78, 0x06, 0x40, - 0x0e, 0x40, 0x04, 0x04, 0x14, 0x24, 0xe0, 0x01, - 0x06, 0x7a, 0x0e, 0x52, 0x80, 0x0a, 0x1c, 0x20, - 0xbc, 0xb0, 0x47, 0x70, 0xb5, 0xf0, 0x04, 0x16, - 0x0c, 0x36, 0x1c, 0x07, 0x78, 0x00, 0x04, 0x00, - 0x1c, 0x0c, 0x78, 0x79, 0x02, 0x09, 0x43, 0x08, - 0x78, 0xb9, 0x43, 0x08, 0xb0, 0x81, 0x4b, 0x12, - 0x42, 0x98, 0xd1, 0x09, 0x46, 0x69, 0x1c, 0xf8, - 0xf7, 0xff, 0xff, 0xca, 0x1c, 0x05, 0xa8, 0x00, - 0x88, 0x00, 0x30, 0x02, 0x42, 0xb0, 0xdd, 0x02, - 0x20, 0x00, 0x43, 0xc0, 0xe0, 0x10, 0x19, 0x78, - 0xaa, 0x00, 0x88, 0x12, 0x1c, 0xc1, 0x1c, 0x20, - 0xf0, 0x12, 0xf9, 0x5c, 0xa8, 0x00, 0x88, 0x00, - 0x18, 0x28, 0x30, 0x03, 0x04, 0x00, 0x14, 0x00, - 0x21, 0x00, 0xaa, 0x00, 0x88, 0x12, 0x54, 0xa1, - 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0x9f, 0x88, 0x03, 0xb5, 0xf7, 0x1c, 0x07, - 0x20, 0x00, 0xb0, 0x85, 0x90, 0x02, 0x26, 0x00, - 0x99, 0x06, 0x1c, 0xc8, 0xa9, 0x04, 0xf7, 0xff, - 0xff, 0x9f, 0xa9, 0x04, 0x88, 0x09, 0x1c, 0x04, - 0x43, 0xf0, 0x02, 0xc3, 0x42, 0xd9, 0xd2, 0x58, - 0x21, 0x00, 0x91, 0x03, 0x4d, 0x2d, 0x99, 0x06, - 0x19, 0x08, 0x22, 0x01, 0x02, 0xd2, 0x30, 0x04, - 0x1c, 0x29, 0xf7, 0xff, 0xff, 0xaf, 0x90, 0x01, - 0x23, 0x01, 0x42, 0xd8, 0xd0, 0x1c, 0x1c, 0x28, - 0xf0, 0x12, 0xf9, 0x98, 0x90, 0x00, 0x1c, 0x42, - 0x1c, 0x38, 0x1c, 0x29, 0xf0, 0x12, 0xf9, 0x22, - 0x98, 0x00, 0x18, 0x38, 0x1c, 0x47, 0x98, 0x00, - 0x18, 0x30, 0x1c, 0x46, 0x98, 0x01, 0x18, 0x24, - 0x98, 0x03, 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, - 0x90, 0x03, 0x28, 0x03, 0xdb, 0xdb, 0xa8, 0x04, - 0x88, 0x00, 0x42, 0x84, 0xda, 0x27, 0xe0, 0x02, - 0x20, 0x00, 0x43, 0xc0, 0xe0, 0x29, 0x99, 0x06, - 0x19, 0x08, 0x22, 0x01, 0x02, 0xd2, 0x30, 0x04, - 0x1c, 0x29, 0xf7, 0xff, 0xff, 0x83, 0x90, 0x01, - 0x23, 0x01, 0x42, 0xd8, 0xd0, 0xf0, 0x1c, 0x28, - 0xf0, 0x12, 0xf9, 0x6c, 0x90, 0x00, 0x1c, 0x42, - 0x1c, 0x38, 0x1c, 0x29, 0xf0, 0x12, 0xf8, 0xf6, - 0x98, 0x00, 0x18, 0x38, 0x1c, 0x47, 0x98, 0x00, - 0x18, 0x30, 0x1c, 0x46, 0x98, 0x01, 0x18, 0x24, - 0x98, 0x02, 0x30, 0x01, 0x90, 0x02, 0xa8, 0x04, - 0x88, 0x00, 0x42, 0x84, 0xdb, 0xdb, 0x9a, 0x07, - 0x80, 0x16, 0x98, 0x02, 0x30, 0x03, 0x04, 0x00, - 0x14, 0x00, 0xb0, 0x05, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x6a, 0x60, - 0xb5, 0x00, 0x04, 0x01, 0x0c, 0x09, 0x20, 0x54, - 0xb0, 0x84, 0xab, 0x00, 0x70, 0x18, 0x22, 0x46, - 0x70, 0x5a, 0x22, 0x04, 0x80, 0x5a, 0x80, 0x99, - 0x46, 0x69, 0xf7, 0xff, 0xf8, 0xf5, 0xb0, 0x04, - 0xbc, 0x08, 0x47, 0x18, 0x47, 0x70, 0x00, 0x00, - 0xb5, 0x00, 0x78, 0x01, 0x48, 0x0c, 0x70, 0x01, - 0x78, 0x00, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x02, - 0xd0, 0x01, 0x28, 0x03, 0xd1, 0x0b, 0x48, 0x09, - 0xca, 0x08, 0xc0, 0x08, 0xca, 0x08, 0xc0, 0x08, - 0xca, 0x0c, 0xc0, 0x0c, 0xf0, 0x00, 0xf8, 0x67, - 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0xa8, 0x2e, 0x08, 0x7b, 0x60, - 0xb5, 0x80, 0x20, 0x00, 0x27, 0x00, 0x4a, 0x1f, - 0x01, 0x03, 0x54, 0xd7, 0x18, 0x9b, 0x60, 0x5f, - 0x60, 0x9f, 0x81, 0x9f, 0x30, 0x01, 0x28, 0x02, - 0xdb, 0xf6, 0x48, 0x1b, 0x70, 0x07, 0x49, 0x1b, - 0x48, 0x1b, 0x60, 0x01, 0x49, 0x1b, 0x1d, 0xc2, - 0x32, 0x79, 0x60, 0x91, 0x49, 0x1a, 0x1d, 0xc2, - 0x32, 0xf9, 0x61, 0x11, 0x49, 0x19, 0x23, 0x05, - 0x01, 0xdb, 0x18, 0xc2, 0x23, 0x03, 0x02, 0x1b, - 0x62, 0x91, 0x18, 0xc1, 0x63, 0x0f, 0x49, 0x16, - 0x1d, 0xc2, 0x32, 0xff, 0x32, 0xfa, 0x30, 0xff, - 0x30, 0x81, 0x62, 0x11, 0x61, 0x87, 0x20, 0x05, - 0xf7, 0xff, 0xf9, 0x94, 0x28, 0x00, 0xda, 0x03, - 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x00, 0x49, 0x0e, 0x00, 0xc2, 0x52, 0x8f, - 0x30, 0x01, 0x28, 0x40, 0xdb, 0xfa, 0x48, 0x0c, - 0x70, 0x47, 0x20, 0x01, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7e, 0x88, - 0x2e, 0x08, 0x1a, 0xa8, 0x00, 0x01, 0x00, 0x41, - 0x2e, 0x08, 0x7e, 0xa8, 0x00, 0x02, 0x00, 0x41, - 0x00, 0x03, 0x00, 0x41, 0x00, 0x40, 0x00, 0x41, - 0x00, 0x24, 0x00, 0x41, 0x2e, 0x08, 0x7b, 0x70, - 0x2e, 0x08, 0x7d, 0x7c, 0xb5, 0x00, 0xf7, 0xff, - 0xf8, 0x25, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, - 0xb0, 0x83, 0x48, 0xda, 0x90, 0x02, 0x78, 0x00, - 0x21, 0x00, 0x4a, 0xd9, 0x4c, 0xd9, 0x4f, 0xda, - 0x28, 0x01, 0xd1, 0x71, 0x78, 0x78, 0x38, 0x41, - 0x4d, 0xd8, 0x4e, 0xd9, 0x4b, 0xd9, 0x93, 0x01, - 0x28, 0x0b, 0xd2, 0x6a, 0xa3, 0x01, 0x5c, 0x1b, - 0x00, 0x5b, 0x44, 0x9f, 0xc9, 0x8e, 0xc9, 0xde, - 0xdd, 0xc9, 0x67, 0xc9, 0x3b, 0x2b, 0x05, 0x00, - 0x88, 0xb8, 0x06, 0x00, 0x0e, 0x00, 0x01, 0x00, - 0x9b, 0x01, 0x54, 0x19, 0x9b, 0x01, 0x18, 0xc0, - 0x68, 0x40, 0x1c, 0x0c, 0x28, 0x00, 0xd0, 0x01, - 0xf7, 0xff, 0xf9, 0x26, 0x88, 0xb8, 0x06, 0x00, - 0x0e, 0x00, 0x01, 0x00, 0x9b, 0x01, 0x18, 0xc0, - 0x60, 0x44, 0x68, 0x80, 0x28, 0x00, 0xd0, 0x01, - 0xf7, 0xff, 0xf9, 0x1a, 0x88, 0xb8, 0x06, 0x00, - 0x0e, 0x00, 0x01, 0x01, 0x9b, 0x01, 0x18, 0xc9, - 0x22, 0x01, 0x60, 0x8c, 0x70, 0x32, 0x70, 0x74, - 0x18, 0x80, 0xe0, 0x09, 0x20, 0x01, 0x88, 0xb9, - 0x06, 0x09, 0x0e, 0x09, 0x01, 0x0a, 0x9b, 0x01, - 0x54, 0x98, 0x70, 0x30, 0x70, 0x70, 0x18, 0x08, - 0x70, 0xb0, 0x21, 0x20, 0x1c, 0x30, 0xf7, 0xff, - 0xf8, 0x07, 0xe0, 0x8d, 0x26, 0x00, 0x00, 0xf1, - 0x19, 0x08, 0x88, 0xc2, 0x79, 0x3b, 0x42, 0x9a, - 0xd1, 0x1e, 0x22, 0x00, 0x80, 0xc2, 0x58, 0x60, - 0xf0, 0x00, 0xfa, 0x86, 0x23, 0x01, 0x42, 0xd8, - 0xd0, 0x16, 0x01, 0x01, 0x18, 0x09, 0x00, 0xc9, - 0x19, 0x49, 0x88, 0x8a, 0x2a, 0x00, 0xd0, 0x01, - 0x3a, 0x01, 0x80, 0x8a, 0x28, 0x04, 0xd1, 0x0b, - 0x00, 0x70, 0x19, 0x40, 0x30, 0xff, 0x30, 0xff, - 0x30, 0x02, 0x90, 0x00, 0x8c, 0xc0, 0xf0, 0x00, - 0xfa, 0xcb, 0x22, 0x00, 0x98, 0x00, 0x84, 0xc2, - 0x36, 0x01, 0x2e, 0x20, 0xdb, 0xd7, 0xe0, 0x63, - 0xe0, 0x9c, 0xe0, 0x74, 0x88, 0xb8, 0x00, 0xc0, - 0x1c, 0x0e, 0x19, 0x01, 0x80, 0xce, 0x58, 0x20, - 0xf0, 0x00, 0xfa, 0x5e, 0x23, 0x01, 0x42, 0xd8, - 0xd0, 0x56, 0x01, 0x01, 0x18, 0x09, 0x00, 0xc9, - 0x19, 0x49, 0x88, 0x8a, 0x2a, 0x00, 0xd0, 0x01, - 0x3a, 0x01, 0x80, 0x8a, 0x28, 0x04, 0xd1, 0x5e, - 0x88, 0xb8, 0x00, 0x40, 0x19, 0x40, 0x30, 0xff, - 0x30, 0xff, 0x30, 0x02, 0x8c, 0xc0, 0xf0, 0x00, - 0xfa, 0xa3, 0x88, 0xb8, 0x00, 0x40, 0x19, 0x40, - 0x30, 0xff, 0x30, 0xff, 0x30, 0x02, 0x84, 0xc6, - 0xe0, 0xb6, 0x7a, 0x38, 0x06, 0x00, 0x7a, 0x79, - 0x04, 0x09, 0x43, 0x08, 0x7a, 0xb9, 0x02, 0x09, - 0x43, 0x08, 0x7a, 0xf9, 0x43, 0x08, 0x4b, 0x8a, - 0x42, 0x98, 0xd0, 0x43, 0xdc, 0x0d, 0x49, 0x89, - 0x42, 0x88, 0xd0, 0x19, 0x42, 0x90, 0xd0, 0x1b, - 0x49, 0x87, 0x42, 0x88, 0xd1, 0x3a, 0x1d, 0xe8, - 0x30, 0xf9, 0x8a, 0x82, 0x32, 0x01, 0x82, 0x82, - 0xe0, 0x28, 0x49, 0x84, 0x42, 0x88, 0xd0, 0x1f, - 0x49, 0x83, 0x42, 0x88, 0xd1, 0x2e, 0x23, 0x05, - 0x01, 0xdb, 0x18, 0xe8, 0x8d, 0x82, 0x2a, 0x00, - 0xd1, 0x13, 0x22, 0x01, 0x85, 0x82, 0xe0, 0x19, - 0x88, 0xa8, 0x30, 0x01, 0x80, 0xa8, 0xe0, 0x15, - 0x1d, 0xe8, 0x30, 0x79, 0x89, 0x81, 0x31, 0x01, - 0x81, 0x81, 0x88, 0xf9, 0x00, 0xc8, 0x50, 0x22, - 0x79, 0x3a, 0x19, 0x00, 0x80, 0xc2, 0xe0, 0x10, - 0xe0, 0x7b, 0x88, 0xf9, 0x22, 0xf3, 0xe0, 0x13, - 0x1d, 0xe8, 0x30, 0xff, 0x30, 0xfa, 0x8c, 0x82, - 0x32, 0x01, 0x84, 0x82, 0x88, 0xfa, 0x00, 0xd0, - 0x50, 0x21, 0x79, 0x39, 0x19, 0x00, 0x80, 0xc1, - 0x1c, 0x11, 0x22, 0x00, 0xe0, 0x04, 0xe0, 0xbd, - 0xe0, 0x1b, 0xe0, 0x05, 0x88, 0xf9, 0x22, 0xf0, - 0x20, 0x00, 0xf0, 0x00, 0xf9, 0xc1, 0xe0, 0x5f, - 0x88, 0xb8, 0x00, 0xc1, 0x58, 0x61, 0x4b, 0x64, - 0x42, 0x99, 0xd0, 0x0b, 0xdc, 0x58, 0x4b, 0x61, - 0x42, 0x99, 0xd0, 0x04, 0x42, 0x91, 0xd1, 0x54, - 0xf7, 0xff, 0xf8, 0xf4, 0xe0, 0xa6, 0xf7, 0xff, - 0xf8, 0x8b, 0xe0, 0xa3, 0xf7, 0xff, 0xf9, 0xc2, - 0xe0, 0xa0, 0x68, 0xb9, 0x98, 0x02, 0x60, 0x41, - 0x88, 0xb8, 0xf0, 0x00, 0xf8, 0xbd, 0x98, 0x02, - 0x68, 0x40, 0xe0, 0x8f, 0x28, 0x03, 0xd1, 0x50, - 0x68, 0x78, 0x88, 0x3b, 0x06, 0x1e, 0x0e, 0x36, - 0x1c, 0x05, 0x2e, 0x06, 0xd0, 0x3f, 0xdc, 0x08, - 0x2e, 0x06, 0xd2, 0x58, 0xa3, 0x01, 0x5d, 0x9b, - 0x00, 0x5b, 0x44, 0x9f, 0x5b, 0x55, 0x3c, 0x12, - 0x61, 0x4d, 0x2e, 0x0a, 0xd0, 0x3e, 0xdc, 0x05, - 0x2e, 0x08, 0xd0, 0x36, 0x2e, 0x09, 0xd1, 0x57, - 0x26, 0x00, 0xe0, 0x56, 0x2e, 0x0b, 0xd0, 0x66, - 0x2e, 0xe0, 0xd1, 0x51, 0x48, 0x49, 0x70, 0x01, - 0xe0, 0x69, 0x49, 0x49, 0x78, 0x4a, 0x2a, 0x01, - 0xd1, 0x4a, 0x78, 0x03, 0x1d, 0xca, 0x32, 0xf9, - 0x88, 0xd7, 0x18, 0x7f, 0x70, 0xbb, 0x88, 0xd3, - 0x33, 0x01, 0x80, 0xd3, 0x88, 0xd3, 0x88, 0x97, - 0x42, 0xbb, 0xd0, 0x02, 0x78, 0x00, 0x28, 0x0b, - 0xd1, 0x3a, 0x78, 0x08, 0x28, 0x02, 0xd0, 0x09, - 0x28, 0x03, 0xd0, 0x07, 0x28, 0x05, 0xd1, 0x33, - 0x1c, 0x08, 0xf7, 0xff, 0xfb, 0x59, 0xe0, 0x4a, - 0xe0, 0x54, 0xe0, 0x53, 0x78, 0x89, 0x88, 0x50, - 0xf7, 0xff, 0xfc, 0x52, 0xe0, 0x43, 0x78, 0xb9, - 0xf0, 0x00, 0xff, 0x52, 0xe0, 0x3f, 0x20, 0x00, - 0xe0, 0x0b, 0x78, 0xb9, 0xf0, 0x00, 0xfa, 0x2a, - 0xe0, 0x39, 0xe0, 0x3e, 0x78, 0x01, 0x02, 0x09, - 0x78, 0x40, 0x43, 0x08, 0x49, 0x2f, 0x81, 0x48, - 0x20, 0x08, 0xf0, 0x00, 0xfe, 0xeb, 0xe0, 0x2e, - 0x78, 0x01, 0x02, 0x09, 0x78, 0x40, 0x43, 0x08, - 0xf0, 0x00, 0xfa, 0x45, 0xe0, 0x27, 0xe0, 0x26, - 0x78, 0xba, 0x1c, 0x01, 0x78, 0x00, 0xf0, 0x00, - 0xfa, 0x13, 0xe0, 0x20, 0x78, 0xba, 0x1c, 0x01, - 0x78, 0x00, 0xf0, 0x00, 0xfa, 0x22, 0xe0, 0x1a, - 0xe0, 0x19, 0x00, 0xf0, 0x58, 0x21, 0x4b, 0x14, - 0x42, 0x99, 0xd1, 0x0d, 0x19, 0x00, 0x88, 0xc0, - 0xf7, 0xfd, 0xfd, 0x9a, 0x68, 0x79, 0x78, 0x09, - 0x30, 0x01, 0x42, 0x88, 0xd1, 0x04, 0x1c, 0x30, - 0xf7, 0xff, 0xf8, 0xd4, 0xe0, 0x07, 0xe0, 0x03, - 0x36, 0x01, 0x2e, 0x20, 0xdb, 0xe9, 0xe0, 0x02, - 0x20, 0xff, 0xf0, 0x00, 0xfa, 0x6b, 0x2d, 0x00, - 0xd0, 0x08, 0x1c, 0x28, 0xf7, 0xfe, 0xff, 0xa4, - 0xe0, 0x04, 0x28, 0x02, 0xd1, 0x02, 0x88, 0x38, - 0xf0, 0x00, 0xf9, 0xac, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0xa8, - 0x00, 0x02, 0x00, 0x41, 0x2e, 0x08, 0x7a, 0x60, - 0x2e, 0x08, 0x7b, 0x60, 0x2e, 0x08, 0x7e, 0xa8, - 0x2e, 0x08, 0x72, 0x60, 0x2e, 0x08, 0x7e, 0x88, - 0x00, 0x20, 0x00, 0x41, 0x00, 0x01, 0x00, 0x41, - 0x00, 0x03, 0x00, 0x41, 0x00, 0x24, 0x00, 0x41, - 0x00, 0x40, 0x00, 0x41, 0x2e, 0x08, 0x1a, 0x94, - 0x2e, 0x08, 0x7d, 0x7c, 0x2e, 0x08, 0x8f, 0x80, - 0xb5, 0x90, 0x04, 0x04, 0x0c, 0x24, 0x78, 0x08, - 0x04, 0x00, 0x1c, 0x0f, 0x78, 0x49, 0x02, 0x09, - 0x43, 0x08, 0x78, 0xb9, 0x43, 0x08, 0x4b, 0x47, - 0x42, 0x98, 0xd0, 0x5d, 0xdc, 0x20, 0x4b, 0x46, - 0x42, 0x98, 0xd0, 0x5a, 0xdc, 0x0f, 0x4b, 0x45, - 0x42, 0x98, 0xd0, 0x41, 0x33, 0x01, 0x42, 0x98, - 0xd0, 0x37, 0x4b, 0x43, 0x42, 0x98, 0xd1, 0x5f, - 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, 0xf8, 0x20, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x4b, 0x3f, - 0x42, 0x98, 0xd0, 0x3e, 0x4b, 0x3e, 0x42, 0x98, - 0xd1, 0x52, 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, - 0xf8, 0x87, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x4b, 0x3a, 0x42, 0x98, 0xd0, 0x50, 0xdc, 0x0f, - 0x4b, 0x39, 0x42, 0x98, 0xd0, 0x3d, 0x33, 0x06, - 0x42, 0x98, 0xd0, 0x42, 0x4b, 0x37, 0x42, 0x98, - 0xd1, 0x3e, 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, - 0xfa, 0xe1, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x4b, 0x33, 0x42, 0x98, 0xd0, 0x16, 0x33, 0x01, - 0x42, 0x98, 0xd1, 0x31, 0x1c, 0x20, 0x1c, 0x39, - 0xf7, 0xff, 0xfc, 0x20, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xfe, - 0xff, 0x85, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x20, 0xf7, 0xfe, 0xff, 0x9d, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x20, 0x1c, 0x39, - 0xf7, 0xff, 0xfb, 0xa0, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, - 0xf9, 0x09, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xe0, 0x00, 0xe0, 0x1c, 0x1c, 0x20, 0x1c, 0x39, - 0xf7, 0xff, 0xf9, 0x02, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, - 0xf9, 0x29, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xe0, 0x18, 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, - 0xfa, 0x1b, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, 0xfb, 0x06, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x11, - 0x89, 0x40, 0xf0, 0x00, 0xf9, 0x60, 0x1c, 0x20, - 0x1c, 0x39, 0xf7, 0xff, 0xf8, 0x81, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0x9f, 0x88, 0x00, - 0x00, 0x9f, 0x80, 0x31, 0x00, 0x9f, 0x80, 0x10, - 0x00, 0x9f, 0x80, 0x21, 0x00, 0x9f, 0x80, 0x33, - 0x00, 0x9f, 0x84, 0x40, 0x00, 0x9f, 0x88, 0x0a, - 0x00, 0x9f, 0x88, 0x01, 0x00, 0x9f, 0x88, 0x09, - 0x00, 0x9f, 0x88, 0x0c, 0x2e, 0x08, 0x8f, 0x80, - 0xb5, 0xf0, 0x04, 0x06, 0x0c, 0x36, 0x04, 0x0d, - 0x0c, 0x2d, 0x1c, 0x28, 0x1c, 0x17, 0xf7, 0xfe, - 0xfe, 0x9d, 0x4c, 0x0d, 0x60, 0xa0, 0x28, 0x00, - 0xd1, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x21, 0x54, 0x70, 0x21, 0x21, 0x45, 0x70, 0x61, - 0x21, 0x0c, 0x80, 0x61, 0x80, 0xa6, 0x81, 0xa5, - 0x1c, 0x39, 0x1c, 0x2a, 0xf0, 0x11, 0xfd, 0xaa, - 0x78, 0x20, 0x1c, 0x21, 0xf7, 0xfe, 0xfd, 0xd0, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x7b, 0x60, 0xb5, 0x00, 0x06, 0x02, - 0x0e, 0x12, 0x20, 0x54, 0x49, 0x05, 0x70, 0x08, - 0x23, 0x48, 0x70, 0x4b, 0x23, 0x04, 0x80, 0x4b, - 0x71, 0x0a, 0xf7, 0xfe, 0xfd, 0xbd, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7b, 0x60, - 0xb5, 0x90, 0x04, 0x0b, 0x0c, 0x1b, 0x27, 0x54, - 0x49, 0x07, 0x70, 0x0f, 0x24, 0x43, 0x70, 0x4c, - 0x24, 0x04, 0x80, 0x4c, 0x71, 0xc8, 0x80, 0x8b, - 0x71, 0x8a, 0x1c, 0x38, 0xf7, 0xfe, 0xfd, 0xa8, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x7b, 0x60, 0xb5, 0x00, 0x04, 0x02, - 0x0c, 0x12, 0x20, 0x54, 0x49, 0x05, 0x70, 0x08, - 0x23, 0x46, 0x70, 0x4b, 0x23, 0x04, 0x80, 0x4b, - 0x80, 0x8a, 0xf7, 0xfe, 0xfd, 0x95, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7b, 0x60, - 0x23, 0xff, 0x04, 0x1b, 0x40, 0x18, 0x23, 0x01, - 0x05, 0x5b, 0x42, 0x98, 0xd0, 0x1e, 0xdc, 0x0b, - 0x09, 0x5b, 0x42, 0x98, 0xd0, 0x16, 0x00, 0x5b, - 0x42, 0x98, 0xd0, 0x15, 0x23, 0x03, 0x04, 0x1b, - 0x42, 0x98, 0xd1, 0x19, 0x20, 0x02, 0x47, 0x70, - 0x23, 0x09, 0x04, 0x9b, 0x42, 0x98, 0xd0, 0x0f, - 0x23, 0x01, 0x05, 0x9b, 0x42, 0x98, 0xd0, 0x0d, - 0x23, 0x03, 0x05, 0x5b, 0x42, 0x98, 0xd1, 0x0b, - 0x20, 0x06, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x01, 0x47, 0x70, 0x20, 0x03, 0x47, 0x70, - 0x20, 0x04, 0x47, 0x70, 0x20, 0x05, 0x47, 0x70, - 0x20, 0x00, 0x43, 0xc0, 0x47, 0x70, 0xb5, 0xb0, - 0x04, 0x07, 0x0c, 0x3f, 0x04, 0x0b, 0x0c, 0x1b, - 0x04, 0x14, 0x0c, 0x24, 0x22, 0x00, 0x20, 0x00, - 0x49, 0x10, 0x00, 0xc5, 0x5b, 0x4d, 0x2d, 0x00, - 0xd1, 0x08, 0x1c, 0x42, 0x04, 0x12, 0x0c, 0x12, - 0x00, 0xc0, 0x52, 0x0a, 0x18, 0x40, 0x80, 0x84, - 0x80, 0x43, 0xe0, 0x02, 0x30, 0x01, 0x28, 0x40, - 0xdd, 0xef, 0x2a, 0x00, 0xd0, 0x0a, 0x20, 0x05, - 0x04, 0x00, 0x43, 0x10, 0x1c, 0x39, 0xf7, 0xfe, - 0xfd, 0xa9, 0x04, 0x00, 0x0c, 0x00, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x7b, 0x70, - 0xb5, 0x80, 0x04, 0x02, 0x0c, 0x12, 0x20, 0x00, - 0x49, 0x0b, 0x00, 0xc3, 0x5a, 0xcb, 0x42, 0x93, - 0xd1, 0x09, 0x27, 0x00, 0x00, 0xc0, 0x52, 0x0f, - 0x1c, 0x10, 0xf7, 0xfe, 0xfd, 0xc7, 0x1c, 0x38, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x30, 0x01, - 0x28, 0x40, 0xdb, 0xee, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x7b, 0x70, 0xb5, 0xf0, 0x04, 0x06, - 0x0c, 0x36, 0x27, 0x00, 0x4c, 0x17, 0x00, 0xf8, - 0x5a, 0x20, 0x42, 0xb0, 0xd1, 0x1d, 0x00, 0xfd, - 0x19, 0x28, 0x88, 0x81, 0x29, 0x05, 0xd2, 0x10, - 0xa3, 0x01, 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, - 0x17, 0x02, 0x09, 0x10, 0x17, 0x00, 0x21, 0x09, - 0x48, 0x0f, 0x70, 0x01, 0x21, 0x20, 0xf7, 0xfe, - 0xfc, 0xdf, 0xe0, 0x02, 0x88, 0x40, 0xf0, 0x01, - 0xfc, 0xf9, 0x5b, 0x60, 0xf7, 0xff, 0xff, 0xc0, - 0xe0, 0x06, 0x88, 0x40, 0xf7, 0xfe, 0xff, 0x2c, - 0xe0, 0x02, 0x37, 0x01, 0x2f, 0x40, 0xdb, 0xda, - 0x2f, 0x40, 0xd1, 0x02, 0x1c, 0x30, 0xf7, 0xfe, - 0xfd, 0x89, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7b, 0x70, - 0x2e, 0x08, 0x72, 0x60, 0x20, 0x00, 0x47, 0x70, - 0xb5, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x28, 0x05, - 0xd0, 0x0c, 0x28, 0x0a, 0xd0, 0x05, 0x28, 0x0b, - 0xd1, 0x08, 0x78, 0x48, 0x22, 0x10, 0x21, 0x0b, - 0xe0, 0x02, 0x78, 0x48, 0x22, 0x10, 0x21, 0x0a, - 0xf0, 0x01, 0xfc, 0x90, 0x20, 0x00, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x00, 0x06, 0x00, 0x0e, 0x00, - 0x28, 0x05, 0xd0, 0x06, 0x28, 0x0a, 0xd0, 0x07, - 0x28, 0x0b, 0xd1, 0x02, 0x78, 0x88, 0xf0, 0x01, - 0xfb, 0xaf, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, - 0x78, 0x48, 0x28, 0x01, 0xd0, 0xf9, 0x78, 0x88, - 0xf0, 0x01, 0xfb, 0xa4, 0xe7, 0xf5, 0xb5, 0xf0, - 0x4d, 0x22, 0x81, 0x68, 0x27, 0x00, 0x06, 0x38, - 0x0e, 0x00, 0xf0, 0x01, 0xfb, 0xc5, 0x28, 0x4e, - 0xd1, 0x02, 0x1c, 0x38, 0xf0, 0x01, 0xfb, 0x6c, - 0x1c, 0x78, 0x04, 0x07, 0x14, 0x3f, 0x2f, 0x14, - 0xdb, 0xf1, 0x89, 0x68, 0xf0, 0x01, 0xfc, 0xda, - 0x89, 0x68, 0xf0, 0x01, 0xfc, 0x41, 0x21, 0x0e, - 0x4f, 0x17, 0x28, 0x00, 0xd1, 0x02, 0x70, 0x39, - 0x20, 0x04, 0xe0, 0x1e, 0x20, 0x00, 0x24, 0x00, - 0x4e, 0x14, 0x00, 0xe1, 0x58, 0x71, 0x4b, 0x14, - 0x42, 0x99, 0xd1, 0x0e, 0x89, 0x69, 0x1c, 0x20, - 0xf7, 0xfe, 0xff, 0x3e, 0x28, 0x00, 0xd0, 0x07, - 0x21, 0x0e, 0x70, 0x39, 0x20, 0x00, 0x70, 0x78, - 0x21, 0x06, 0x1c, 0x38, 0xf7, 0xfe, 0xfc, 0x60, - 0x20, 0x01, 0x34, 0x01, 0x2c, 0x20, 0xdb, 0xe8, - 0x28, 0x00, 0xd1, 0x07, 0x21, 0x0e, 0x70, 0x39, - 0x20, 0x05, 0x70, 0x78, 0x21, 0x06, 0x1c, 0x38, - 0xf7, 0xfe, 0xfc, 0x52, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x8f, 0x80, - 0x2e, 0x08, 0x72, 0x60, 0x2e, 0x08, 0x7a, 0x60, - 0x00, 0x03, 0x00, 0x41, 0xb5, 0xf0, 0x06, 0x00, - 0x0e, 0x00, 0x21, 0x00, 0xb0, 0x85, 0x91, 0x02, - 0x22, 0x02, 0x92, 0x01, 0x28, 0xff, 0xd0, 0x02, - 0x22, 0x01, 0x92, 0x01, 0x1c, 0x01, 0x9a, 0x01, - 0x2a, 0x00, 0xdd, 0x4d, 0x4a, 0x28, 0x92, 0x04, - 0x4f, 0x28, 0x20, 0x01, 0x70, 0x38, 0x01, 0x08, - 0x9a, 0x04, 0x5c, 0x12, 0x70, 0x7a, 0x31, 0x01, - 0x91, 0x03, 0x70, 0xb9, 0x21, 0x00, 0x91, 0x00, - 0x9a, 0x04, 0x18, 0x84, 0x89, 0xa0, 0x28, 0x00, - 0xd0, 0x16, 0x68, 0xa3, 0x2b, 0x00, 0xd0, 0x13, - 0x70, 0xf8, 0x28, 0x00, 0xdd, 0x0b, 0x00, 0x4a, - 0x5a, 0x9d, 0x0a, 0x2e, 0x19, 0xd5, 0x71, 0x2e, - 0x5a, 0x9a, 0x71, 0x6a, 0x31, 0x01, 0x06, 0x09, - 0x0e, 0x09, 0x42, 0x88, 0xdc, 0xf3, 0x00, 0x40, - 0x99, 0x00, 0x18, 0x40, 0x1c, 0x45, 0xe0, 0x02, - 0x20, 0x00, 0x70, 0xf8, 0x25, 0x01, 0x68, 0x60, - 0x28, 0x00, 0xd0, 0x0e, 0xf0, 0x11, 0xfc, 0x66, - 0x1c, 0x02, 0x19, 0x78, 0x68, 0x61, 0x30, 0x03, - 0xf0, 0x11, 0xfb, 0xf0, 0x68, 0x60, 0xf0, 0x11, - 0xfc, 0x5d, 0x19, 0x45, 0x20, 0x00, 0x19, 0x79, - 0x70, 0xc8, 0x1c, 0x38, 0x1d, 0x69, 0xf7, 0xfe, - 0xfb, 0xf3, 0x99, 0x03, 0x06, 0x09, 0x0e, 0x09, - 0x98, 0x02, 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, - 0x90, 0x02, 0x9a, 0x01, 0x42, 0x90, 0xdb, 0xb4, - 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x7e, 0x88, 0x2e, 0x08, 0x72, 0x60, - 0xb5, 0x80, 0x20, 0x00, 0x22, 0x00, 0x1c, 0x0f, - 0x49, 0x0a, 0x54, 0x0a, 0x30, 0x01, 0x06, 0x00, - 0x0e, 0x00, 0x28, 0x02, 0xdb, 0xf9, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0xc6, 0x28, 0x01, 0xd1, 0x03, - 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0xb8, - 0xb5, 0xf0, 0x04, 0x0c, 0x0c, 0x24, 0x1c, 0x17, - 0xf0, 0x00, 0xf8, 0x8e, 0x4d, 0x0d, 0x69, 0x28, - 0x4b, 0x0d, 0x18, 0xc6, 0x20, 0x04, 0xf0, 0x00, - 0xf9, 0x65, 0x20, 0x00, 0x2c, 0x00, 0xdd, 0x0c, - 0x5c, 0x39, 0x80, 0x31, 0x23, 0x03, 0x07, 0x1b, - 0x69, 0x29, 0x18, 0xc9, 0x88, 0x09, 0x54, 0x39, - 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, 0x42, 0xa0, - 0xdb, 0xf2, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0xb0, - 0x30, 0x00, 0x40, 0x00, 0xb5, 0xf0, 0x1c, 0x0c, - 0x1c, 0x17, 0xb0, 0x83, 0xf0, 0x00, 0xf8, 0x68, - 0x4e, 0x13, 0x69, 0x30, 0x4b, 0x13, 0x18, 0xc5, - 0x20, 0x04, 0xf0, 0x00, 0xf9, 0x3f, 0x23, 0x03, - 0x07, 0x1b, 0x69, 0x30, 0x18, 0xc1, 0x20, 0x00, - 0x2c, 0x00, 0xdd, 0x0a, 0x88, 0x2a, 0x54, 0x3a, - 0x88, 0x0a, 0x54, 0x3a, 0x88, 0x0a, 0x54, 0x3a, - 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, 0x42, 0xa0, - 0xdb, 0xf4, 0x46, 0x68, 0x90, 0x02, 0x20, 0x01, - 0xab, 0x01, 0x80, 0x18, 0x21, 0x04, 0xa8, 0x01, - 0xf0, 0x00, 0xf8, 0x9e, 0x1c, 0x20, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0xb0, 0x30, 0x00, 0x40, 0x00, - 0xb5, 0xb0, 0x25, 0x01, 0x1c, 0x0c, 0x1c, 0x17, - 0xf0, 0x00, 0xf8, 0x36, 0x48, 0x18, 0x2c, 0x08, - 0xd2, 0x2a, 0xa3, 0x02, 0x5d, 0x1b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x26, 0x04, 0x06, 0x0c, - 0x12, 0x18, 0x1e, 0x23, 0x25, 0x00, 0xe0, 0x1f, - 0x61, 0x47, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x00, - 0xf8, 0x31, 0xe0, 0x14, 0x61, 0x47, 0x1c, 0x38, - 0x1c, 0x21, 0xf0, 0x00, 0xf8, 0x53, 0xe0, 0x0e, - 0x61, 0x87, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x00, - 0xf8, 0x6f, 0xe0, 0x08, 0x61, 0x87, 0x1c, 0x38, - 0x1c, 0x21, 0xf0, 0x00, 0xf8, 0x93, 0xe0, 0x02, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0xb1, 0x1c, 0x05, - 0xe0, 0x02, 0x1c, 0x38, 0xf0, 0x00, 0xfa, 0x14, - 0x1c, 0x28, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0xb0, 0x20, 0x00, 0x47, 0x70, - 0x49, 0x05, 0x68, 0xca, 0x42, 0x90, 0xd0, 0x06, - 0x60, 0xc8, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0x01, - 0x20, 0x01, 0x03, 0x40, 0x61, 0x08, 0x47, 0x70, - 0x2e, 0x08, 0x1a, 0xb0, 0xb5, 0xb0, 0x1c, 0x07, - 0x88, 0x00, 0x4a, 0x10, 0x43, 0x02, 0x48, 0x10, - 0x69, 0x00, 0x43, 0x02, 0x25, 0x03, 0x07, 0x2d, - 0x43, 0x05, 0x1c, 0x08, 0x1c, 0x14, 0xf0, 0x00, - 0xf8, 0xc1, 0x20, 0x00, 0x88, 0x79, 0x29, 0x00, - 0xdd, 0x0a, 0x88, 0x21, 0x68, 0x7a, 0x54, 0x11, - 0x88, 0x29, 0x68, 0x7a, 0x54, 0x11, 0x88, 0x79, - 0x30, 0x01, 0x34, 0x02, 0x42, 0x81, 0xdc, 0xf4, - 0x30, 0x01, 0x81, 0x38, 0x20, 0x00, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x30, 0x00, 0x40, 0x00, - 0x2e, 0x08, 0x1a, 0xb0, 0xb5, 0x90, 0x1c, 0x07, - 0x88, 0x00, 0x4b, 0x0d, 0x18, 0xc0, 0x4a, 0x0d, - 0x69, 0x12, 0x18, 0x84, 0x1c, 0x08, 0xf0, 0x00, - 0xf8, 0x9d, 0x20, 0x00, 0x88, 0x79, 0x29, 0x00, - 0xdd, 0x07, 0x68, 0x79, 0x5c, 0x09, 0x80, 0x21, - 0x88, 0x79, 0x30, 0x01, 0x34, 0x02, 0x42, 0x81, - 0xdc, 0xf7, 0x20, 0x01, 0x81, 0x38, 0x20, 0x00, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x30, 0x00, 0x40, 0x00, 0x2e, 0x08, 0x1a, 0xb0, - 0xb5, 0xb0, 0x1c, 0x07, 0x88, 0x00, 0x07, 0xc2, - 0x0f, 0xd2, 0x4c, 0x0f, 0xd0, 0x04, 0x23, 0xfe, - 0x40, 0x18, 0x4b, 0x0e, 0x18, 0xc0, 0xe0, 0x01, - 0x4b, 0x0d, 0x18, 0xc0, 0x69, 0x22, 0x18, 0x85, - 0x1c, 0x08, 0xf0, 0x00, 0xf8, 0x73, 0x23, 0x03, - 0x07, 0x1b, 0x69, 0x20, 0x18, 0xc0, 0x88, 0x29, - 0x68, 0x7a, 0x70, 0x11, 0x88, 0x01, 0x68, 0x7a, - 0x70, 0x11, 0x88, 0x00, 0x68, 0x79, 0x70, 0x08, - 0x20, 0x00, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0xb0, 0x30, 0x00, 0x50, 0x00, - 0x30, 0x00, 0x40, 0x00, 0xb5, 0x90, 0x88, 0x02, - 0x07, 0xd3, 0x0f, 0xdb, 0x1c, 0x07, 0x48, 0x0b, - 0x2b, 0x00, 0xd0, 0x02, 0x4b, 0x0a, 0x18, 0xd2, - 0xe0, 0x01, 0x4b, 0x0a, 0x18, 0xd2, 0x69, 0x00, - 0x18, 0x14, 0x1c, 0x08, 0xf0, 0x00, 0xf8, 0x4a, - 0x68, 0x78, 0x78, 0x00, 0x80, 0x20, 0x88, 0x38, - 0x07, 0xc0, 0x0f, 0xc0, 0x20, 0x00, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0xb0, - 0x30, 0x00, 0x50, 0x00, 0x30, 0x00, 0x40, 0x00, - 0xb5, 0x90, 0x1c, 0x07, 0x20, 0x00, 0x78, 0x39, - 0x29, 0x01, 0xd0, 0x02, 0x29, 0x02, 0xd1, 0x28, - 0xe0, 0x26, 0x48, 0x15, 0x24, 0x00, 0x68, 0x01, - 0x29, 0x00, 0xd0, 0x16, 0x60, 0x04, 0x20, 0x1a, - 0xf0, 0x00, 0xf9, 0x10, 0x20, 0xc8, 0xf7, 0xfe, - 0xfb, 0x79, 0x20, 0x01, 0x06, 0x40, 0xf0, 0x16, - 0xfd, 0xca, 0xf0, 0x16, 0xfd, 0xcd, 0x4b, 0x0d, - 0x40, 0x18, 0xf0, 0x16, 0xfd, 0xcd, 0x20, 0x00, - 0xf0, 0x00, 0xf8, 0xb8, 0x20, 0x01, 0xf0, 0x00, - 0xf8, 0xb5, 0x48, 0x09, 0x1f, 0xc1, 0x39, 0x01, - 0x68, 0xc9, 0x5c, 0x40, 0x28, 0x00, 0xd0, 0x02, - 0x20, 0x01, 0x70, 0x78, 0xe0, 0x00, 0x70, 0x7c, - 0x20, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0x98, 0xfd, 0xff, 0xff, 0xff, - 0x2e, 0x08, 0x1a, 0xb8, 0xb5, 0xb0, 0x1c, 0x07, - 0x4c, 0x1e, 0x68, 0xe0, 0x00, 0x80, 0x4d, 0x1e, - 0x58, 0x28, 0x42, 0xb8, 0xd0, 0x32, 0x2f, 0x08, - 0xd2, 0x2d, 0xa3, 0x02, 0x5d, 0xdb, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x29, 0x29, 0x04, 0x04, - 0x13, 0x13, 0x29, 0x29, 0x28, 0x03, 0xd0, 0x22, - 0x28, 0x02, 0xd0, 0x20, 0x20, 0x03, 0x49, 0x15, - 0x60, 0x08, 0x68, 0xe0, 0x00, 0xc3, 0x18, 0x18, - 0xf0, 0x00, 0xf8, 0xc8, 0x21, 0xf3, 0x40, 0x01, - 0xe0, 0x10, 0x28, 0x04, 0xd0, 0x13, 0x28, 0x05, - 0xd0, 0x11, 0x20, 0x00, 0x21, 0x03, 0x07, 0x09, - 0x80, 0x08, 0x68, 0xe0, 0x00, 0xc3, 0x18, 0x18, - 0xf0, 0x00, 0xf8, 0xb8, 0x23, 0xf3, 0x40, 0x18, - 0x21, 0x04, 0x43, 0x01, 0x68, 0xe0, 0x00, 0xc3, - 0x18, 0x18, 0xf0, 0x00, 0xf8, 0x95, 0x68, 0xe0, - 0x00, 0x80, 0x50, 0x2f, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0xb0, - 0x2e, 0x08, 0x1a, 0xb0, 0x6e, 0x00, 0x11, 0x00, - 0xb5, 0x80, 0x21, 0x80, 0x1c, 0x07, 0x20, 0x1f, - 0xf0, 0x00, 0xf8, 0x82, 0x21, 0x55, 0x20, 0x02, - 0xf0, 0x00, 0xf8, 0x7e, 0x20, 0x02, 0xf0, 0x00, - 0xf8, 0x95, 0x28, 0x55, 0xd0, 0x03, 0x20, 0x00, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x21, 0x33, - 0x20, 0x05, 0xf0, 0x00, 0xf8, 0x71, 0x21, 0x33, - 0x20, 0x0e, 0xf0, 0x00, 0xf8, 0x6d, 0x21, 0x21, - 0x20, 0x17, 0xf0, 0x00, 0xf8, 0x69, 0x21, 0x00, - 0x20, 0x01, 0xf0, 0x00, 0xf8, 0x65, 0x21, 0x00, - 0x20, 0x0a, 0xf0, 0x00, 0xf8, 0x61, 0x21, 0x01, - 0x20, 0x02, 0xf0, 0x00, 0xf8, 0x5d, 0x21, 0x01, - 0x20, 0x0b, 0xf0, 0x00, 0xf8, 0x59, 0x21, 0x00, - 0x20, 0x03, 0xf0, 0x00, 0xf8, 0x55, 0x21, 0x00, - 0x20, 0x0c, 0xf0, 0x00, 0xf8, 0x51, 0x21, 0x00, - 0x20, 0x04, 0xf0, 0x00, 0xf8, 0x4d, 0x21, 0x01, - 0x20, 0x0d, 0xf0, 0x00, 0xf8, 0x49, 0x21, 0x02, - 0x20, 0x1e, 0xf0, 0x00, 0xf8, 0x45, 0x21, 0x04, - 0x20, 0x1c, 0xf0, 0x00, 0xf8, 0x41, 0x21, 0x03, - 0x20, 0x1b, 0xf0, 0x00, 0xf8, 0x3d, 0x21, 0x01, - 0x20, 0x1f, 0xf0, 0x00, 0xf8, 0x39, 0x21, 0x01, - 0x20, 0x18, 0xf0, 0x00, 0xf8, 0x35, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x04, 0x20, 0x01, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x00, 0xc3, - 0x1c, 0x07, 0x18, 0x18, 0x1c, 0x06, 0xf0, 0x00, - 0xf8, 0x41, 0x07, 0xc0, 0x0f, 0xc0, 0x25, 0x01, - 0x4c, 0x10, 0x28, 0x00, 0xd0, 0x06, 0x5d, 0xe1, - 0x29, 0x00, 0xd0, 0x03, 0x1c, 0x28, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x28, 0x00, 0xd1, 0x01, - 0x55, 0xe0, 0xe7, 0xf7, 0x21, 0x80, 0x1c, 0x30, - 0xf0, 0x00, 0xf8, 0x12, 0x20, 0x32, 0xf7, 0xfe, - 0xfa, 0x95, 0x21, 0x00, 0x1c, 0x30, 0xf0, 0x00, - 0xf8, 0x0b, 0x20, 0x32, 0xf7, 0xfe, 0xfa, 0x8e, - 0x55, 0xe5, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0xb8, - 0xb5, 0xb0, 0x06, 0x07, 0x0e, 0x3f, 0x06, 0x0d, - 0x0e, 0x2d, 0x24, 0x09, 0xb0, 0x81, 0xab, 0x00, - 0x70, 0x1f, 0x70, 0x5d, 0x46, 0x69, 0x22, 0x02, - 0x20, 0x80, 0xf7, 0xf4, 0xfa, 0xe6, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x08, 0x1e, 0x60, 0x06, 0x04, - 0x0e, 0x24, 0xd1, 0xf0, 0xb0, 0x01, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x06, 0x04, - 0x0e, 0x24, 0xb0, 0x82, 0x48, 0x1f, 0x68, 0x00, - 0x90, 0x00, 0x25, 0x09, 0xab, 0x01, 0x70, 0x1c, - 0x20, 0xff, 0x3b, 0x04, 0x70, 0x18, 0x22, 0x01, - 0xb4, 0x04, 0x20, 0x80, 0xa9, 0x02, 0xab, 0x01, - 0xf7, 0xf4, 0xfb, 0x22, 0xb0, 0x01, 0xaf, 0x00, - 0x78, 0x3f, 0xab, 0x01, 0x70, 0x1c, 0x20, 0xff, - 0x3b, 0x04, 0x70, 0x18, 0x22, 0x01, 0xb4, 0x04, - 0x20, 0x80, 0xa9, 0x02, 0xab, 0x01, 0xf7, 0xf4, - 0xfb, 0x13, 0xb0, 0x01, 0xae, 0x00, 0x78, 0x36, - 0xab, 0x01, 0x70, 0x1c, 0x20, 0xff, 0x3b, 0x04, - 0x70, 0x18, 0x22, 0x01, 0xb4, 0x04, 0x20, 0x80, - 0xa9, 0x02, 0xab, 0x01, 0xf7, 0xf4, 0xfb, 0x04, - 0xb0, 0x01, 0xa8, 0x00, 0x78, 0x00, 0x42, 0xb7, - 0xd1, 0x03, 0x42, 0x87, 0xd1, 0x01, 0x1c, 0x38, - 0xe0, 0x04, 0x1e, 0x68, 0x06, 0x05, 0x0e, 0x2d, - 0xd1, 0xc8, 0x20, 0xff, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x02, 0xcc, 0x9c, - 0xb5, 0x80, 0x78, 0x01, 0x29, 0x00, 0xd1, 0x1b, - 0x78, 0x40, 0x28, 0x00, 0xd0, 0x18, 0x4f, 0x0e, - 0x68, 0xf8, 0x00, 0xc3, 0x18, 0x18, 0xf7, 0xff, - 0xff, 0xad, 0x21, 0x20, 0x43, 0x01, 0x68, 0xf8, - 0x00, 0xc3, 0x18, 0x18, 0xf7, 0xff, 0xff, 0x8c, - 0x68, 0xf8, 0x00, 0xc3, 0x18, 0x18, 0xf7, 0xff, - 0xff, 0xa1, 0x21, 0x40, 0x43, 0x01, 0x68, 0xf8, - 0x00, 0xc3, 0x18, 0x18, 0xf7, 0xff, 0xff, 0x80, - 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0xb0, 0xb5, 0x80, 0x20, 0xe1, - 0x01, 0x00, 0xf7, 0xfe, 0xf9, 0xcb, 0x49, 0x1f, - 0x60, 0xc8, 0x28, 0x00, 0xd0, 0x0d, 0x27, 0x00, - 0x80, 0x4f, 0x70, 0x0f, 0x20, 0x64, 0x80, 0x88, - 0x80, 0xcf, 0x21, 0x64, 0x20, 0x00, 0xf0, 0x00, - 0xfe, 0x34, 0x20, 0x00, 0x22, 0xff, 0x49, 0x18, - 0xe0, 0x08, 0x78, 0x08, 0x23, 0x80, 0x43, 0x18, - 0x70, 0x08, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x01, 0x03, 0x18, 0x5b, - 0x70, 0x5a, 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, - 0x28, 0x0a, 0xdb, 0xf7, 0x20, 0x00, 0x49, 0x0f, - 0x22, 0xff, 0x32, 0x01, 0x54, 0x0f, 0x30, 0x01, - 0x04, 0x00, 0x0c, 0x00, 0x42, 0x90, 0xdb, 0xf9, - 0x20, 0x00, 0x49, 0x0b, 0x54, 0x0f, 0x30, 0x01, - 0x04, 0x00, 0x0c, 0x00, 0x42, 0x90, 0xdb, 0xf9, - 0x1c, 0x38, 0x49, 0x08, 0x63, 0x8f, 0x60, 0x4f, - 0x60, 0x0f, 0x62, 0x0f, 0x61, 0xcf, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x8f, 0x80, - 0x2e, 0x08, 0x8f, 0x90, 0x2e, 0x08, 0x90, 0x7c, - 0x2e, 0x08, 0x91, 0x7c, 0x2e, 0x08, 0x90, 0x30, - 0xb5, 0x90, 0x27, 0x00, 0x4c, 0x0b, 0x01, 0x38, - 0x5c, 0x21, 0x29, 0x00, 0xd0, 0x09, 0x19, 0x00, - 0x68, 0x81, 0x29, 0x00, 0xd0, 0x02, 0x88, 0x80, - 0xf7, 0xff, 0xfb, 0x8a, 0x1c, 0x38, 0xf0, 0x00, - 0xff, 0x83, 0x37, 0x01, 0x2f, 0x0a, 0xdb, 0xee, - 0xf0, 0x00, 0xf8, 0x06, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x8f, 0x90, - 0xb5, 0xf0, 0x25, 0x00, 0x4f, 0x1e, 0x88, 0x78, - 0x26, 0x00, 0x28, 0x00, 0xdd, 0x2c, 0x00, 0xec, - 0x19, 0x64, 0x00, 0xa4, 0x68, 0xf8, 0x19, 0x00, - 0x68, 0x80, 0x28, 0x00, 0xd0, 0x04, 0xf7, 0xfe, - 0xf9, 0x7b, 0x68, 0xf8, 0x19, 0x00, 0x60, 0x86, - 0x68, 0xf8, 0x19, 0x00, 0x68, 0x40, 0x28, 0x00, - 0xd0, 0x04, 0xf7, 0xfe, 0xf9, 0x71, 0x68, 0xf8, - 0x19, 0x00, 0x60, 0x46, 0x68, 0xf8, 0x59, 0x00, - 0x28, 0x00, 0xd0, 0x03, 0xf7, 0xfe, 0xf9, 0x68, - 0x68, 0xf8, 0x51, 0x06, 0x68, 0xf8, 0x19, 0x00, - 0x69, 0x40, 0x28, 0x00, 0xd0, 0x04, 0xf7, 0xfe, - 0xf9, 0x5f, 0x68, 0xf8, 0x19, 0x00, 0x61, 0x46, - 0x88, 0x78, 0x35, 0x01, 0x42, 0xa8, 0xdc, 0xd2, - 0x68, 0xf8, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xfe, - 0xf9, 0x53, 0x60, 0xfe, 0x80, 0x7e, 0x80, 0xbe, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x8f, 0x80, 0xb5, 0xf0, 0x06, 0x0d, - 0x0e, 0x2d, 0x1c, 0x07, 0x20, 0x02, 0x40, 0x28, - 0x26, 0x00, 0x43, 0xf6, 0x24, 0x00, 0x28, 0x00, - 0xd0, 0x0d, 0x68, 0x38, 0x28, 0x00, 0xd0, 0x02, - 0xf7, 0xfe, 0xf9, 0x3a, 0x60, 0x3c, 0x68, 0x78, - 0x28, 0x00, 0xd0, 0x02, 0xf7, 0xfe, 0xf9, 0x34, - 0x60, 0x7c, 0x61, 0x7e, 0x61, 0xbe, 0x08, 0x68, - 0xd3, 0x0d, 0x69, 0xf8, 0x28, 0x00, 0xd0, 0x02, - 0xf7, 0xfe, 0xf9, 0x2a, 0x61, 0xfc, 0x6a, 0x38, - 0x28, 0x00, 0xd0, 0x02, 0xf7, 0xfe, 0xf9, 0x24, - 0x62, 0x3c, 0x63, 0x3e, 0x63, 0x7e, 0x08, 0xe8, - 0xd3, 0x05, 0x6b, 0xb8, 0x28, 0x00, 0xd0, 0x02, - 0xf7, 0xfe, 0xf9, 0x1a, 0x63, 0xbc, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x80, 0x4f, 0x12, - 0x88, 0xb8, 0x1d, 0xc1, 0x31, 0x0d, 0x00, 0xca, - 0x18, 0x52, 0x00, 0x92, 0x00, 0xc1, 0x18, 0x09, - 0x00, 0x89, 0x68, 0xf8, 0xf7, 0xfe, 0xf8, 0xe7, - 0x60, 0xf8, 0x28, 0x00, 0xd0, 0x0b, 0x88, 0xb8, - 0x1d, 0xc1, 0x31, 0x0d, 0xf0, 0x00, 0xfd, 0x51, - 0x88, 0xb8, 0x30, 0x14, 0x80, 0xb8, 0x20, 0x00, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x78, 0x38, - 0x23, 0x80, 0x43, 0x18, 0x70, 0x38, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x8f, 0x80, 0xb5, 0x90, 0x06, 0x07, - 0x0e, 0x3f, 0x4c, 0x10, 0x2f, 0x11, 0xd1, 0x02, - 0x78, 0x20, 0x27, 0x08, 0x40, 0x07, 0xf7, 0xff, - 0xff, 0x3b, 0xf7, 0xff, 0xfe, 0xeb, 0x09, 0x38, - 0xd3, 0x03, 0x78, 0x20, 0x23, 0x08, 0x43, 0x18, - 0x70, 0x20, 0x4b, 0x09, 0x22, 0x00, 0x21, 0x00, - 0x20, 0x00, 0xf0, 0x00, 0xfe, 0x4f, 0x4b, 0x07, - 0x22, 0x11, 0x21, 0x00, 0x20, 0x42, 0xf0, 0x00, - 0xfe, 0x49, 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x8f, 0x80, - 0x00, 0x00, 0x13, 0x88, 0x00, 0x00, 0x27, 0x10, - 0x49, 0x0e, 0x78, 0x0a, 0x08, 0x52, 0xd3, 0x01, - 0x22, 0xff, 0xe0, 0x00, 0x22, 0x00, 0x70, 0x02, - 0x78, 0x0a, 0x08, 0x92, 0xd3, 0x01, 0x22, 0xff, - 0xe0, 0x00, 0x22, 0x00, 0x70, 0x42, 0x78, 0x0a, - 0x09, 0x52, 0xd3, 0x01, 0x22, 0xff, 0xe0, 0x00, - 0x22, 0x00, 0x70, 0x82, 0x78, 0x09, 0x09, 0x89, - 0xd3, 0x01, 0x21, 0xff, 0xe0, 0x00, 0x21, 0x00, - 0x70, 0xc1, 0x47, 0x70, 0x2e, 0x08, 0x8f, 0x80, - 0xb5, 0x00, 0xf7, 0xff, 0xfe, 0xf9, 0x48, 0x03, - 0x78, 0x01, 0x23, 0x80, 0x43, 0x19, 0x70, 0x01, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x8f, 0x80, - 0xb5, 0xf0, 0x04, 0x0d, 0x0c, 0x2d, 0x1c, 0x07, - 0xb0, 0x81, 0x48, 0x3b, 0x90, 0x00, 0x78, 0x00, - 0x23, 0x80, 0x40, 0x18, 0x26, 0x00, 0x43, 0xf6, - 0x28, 0x00, 0xd1, 0x04, 0x1c, 0x38, 0xf0, 0x00, - 0xfe, 0xd5, 0x1c, 0x04, 0xd5, 0x01, 0x1c, 0x30, - 0xe0, 0x61, 0x78, 0x38, 0x4e, 0x33, 0x28, 0x42, - 0xd0, 0x45, 0xdc, 0x1c, 0x28, 0x00, 0xd0, 0x25, - 0x28, 0x01, 0xd0, 0x57, 0x28, 0x02, 0xd1, 0x55, - 0x1c, 0x38, 0x1c, 0x29, 0xf0, 0x00, 0xf9, 0xe8, - 0x28, 0x00, 0xd0, 0x04, 0x01, 0x20, 0x19, 0x80, - 0x88, 0x80, 0xf7, 0xff, 0xfa, 0x5d, 0x1c, 0x20, - 0xf0, 0x00, 0xfe, 0x56, 0xf0, 0x00, 0xfd, 0x6f, - 0x28, 0x00, 0xd1, 0x43, 0xf0, 0x00, 0xfd, 0x6b, - 0x28, 0x00, 0xd0, 0xfb, 0xe0, 0x3e, 0x28, 0x4e, - 0xd0, 0x38, 0x28, 0x70, 0xd0, 0x1e, 0x28, 0x73, - 0xd1, 0x38, 0x1c, 0x38, 0x1c, 0x29, 0xf0, 0x00, - 0xfc, 0x37, 0xe0, 0x33, 0x98, 0x00, 0x78, 0x00, - 0x08, 0x40, 0xd2, 0x2f, 0x1c, 0x38, 0x1c, 0x29, - 0xf0, 0x00, 0xf8, 0x36, 0x28, 0x01, 0xd1, 0x29, - 0x01, 0x20, 0x19, 0x80, 0x88, 0x80, 0xf7, 0xff, - 0xfa, 0x37, 0xf0, 0x00, 0xfd, 0x4c, 0x28, 0x00, - 0xd1, 0x20, 0xf0, 0x00, 0xfd, 0x48, 0x28, 0x00, - 0xd0, 0xfb, 0xe0, 0x1b, 0x1c, 0x38, 0x1c, 0x29, - 0xf0, 0x00, 0xfb, 0xf6, 0xe0, 0x16, 0x98, 0x00, - 0x78, 0x00, 0x09, 0x40, 0xd2, 0x12, 0x1c, 0x38, - 0x1c, 0x29, 0xf0, 0x00, 0xf8, 0xd1, 0x28, 0x10, - 0xd1, 0x0c, 0x01, 0x20, 0x19, 0x80, 0x88, 0x80, - 0xf7, 0xff, 0xfa, 0x1a, 0x1c, 0x20, 0xf0, 0x00, - 0xfe, 0x13, 0xe0, 0x03, 0x1c, 0x38, 0x1c, 0x29, - 0xf0, 0x00, 0xfb, 0x10, 0x20, 0x00, 0xb0, 0x01, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x8f, 0x80, 0x2e, 0x08, 0x8f, 0x90, - 0xb5, 0xf0, 0x04, 0x09, 0x0c, 0x09, 0x25, 0x00, - 0xb0, 0x85, 0xf7, 0xf3, 0xff, 0xa9, 0x20, 0x08, - 0xf7, 0xf3, 0xff, 0xc2, 0x20, 0x04, 0xf7, 0xf3, - 0xff, 0xbf, 0x20, 0x0c, 0xf7, 0xf3, 0xff, 0xbc, - 0x04, 0x00, 0x0c, 0x00, 0x90, 0x03, 0x20, 0x10, - 0xf7, 0xf3, 0xff, 0xb6, 0x4f, 0x4d, 0x81, 0x38, - 0x20, 0x02, 0xf7, 0xf3, 0xff, 0xb1, 0x20, 0x05, - 0xf7, 0xf3, 0xff, 0xae, 0x06, 0x04, 0x0e, 0x24, - 0x20, 0x01, 0xf7, 0xf3, 0xff, 0xa9, 0x20, 0x08, - 0xf7, 0xf3, 0xff, 0xa6, 0x06, 0x06, 0x0e, 0x36, - 0x20, 0x08, 0xf7, 0xf3, 0xff, 0xa1, 0x06, 0x00, - 0x0e, 0x00, 0x90, 0x02, 0x48, 0x42, 0x90, 0x04, - 0x5d, 0x80, 0x0a, 0x01, 0xd3, 0x03, 0x06, 0xc0, - 0x0e, 0xc0, 0x42, 0xa0, 0xd0, 0x45, 0x20, 0x80, - 0x43, 0x20, 0x99, 0x04, 0x55, 0x88, 0x98, 0x03, - 0x38, 0x09, 0xd5, 0x00, 0x30, 0x03, 0x10, 0x80, - 0x04, 0x00, 0x0c, 0x00, 0x90, 0x01, 0x88, 0x7c, - 0x28, 0x00, 0xdd, 0x36, 0x20, 0x10, 0xf7, 0xf3, - 0xff, 0x83, 0x04, 0x06, 0x0c, 0x36, 0x20, 0x10, - 0xf7, 0xf3, 0xff, 0x7e, 0x04, 0xc1, 0x0c, 0xc9, - 0x91, 0x00, 0x2e, 0x00, 0xd0, 0x21, 0x1c, 0x30, - 0xf0, 0x00, 0xfb, 0xe0, 0x4b, 0x2f, 0x42, 0x98, - 0xd1, 0x10, 0x88, 0xb8, 0x88, 0x79, 0x42, 0x88, - 0xd1, 0x05, 0xf7, 0xff, 0xfe, 0xa3, 0x23, 0x01, - 0x42, 0xd8, 0xd1, 0x00, 0xe0, 0x49, 0x88, 0x79, - 0x31, 0x01, 0x80, 0x79, 0x1c, 0x61, 0x1c, 0x20, - 0x04, 0x0c, 0x0c, 0x24, 0x00, 0xc3, 0x18, 0x18, - 0x00, 0x80, 0x68, 0xf9, 0x18, 0x09, 0x81, 0xce, - 0x99, 0x00, 0x68, 0xfa, 0x18, 0x10, 0x82, 0x01, - 0xe0, 0x01, 0x99, 0x00, 0x80, 0xf9, 0x1c, 0x68, - 0x04, 0x05, 0x0c, 0x2d, 0x98, 0x01, 0x42, 0x85, - 0xdb, 0xc8, 0x98, 0x04, 0x99, 0x02, 0xf0, 0x00, - 0xfb, 0xd3, 0x28, 0xff, 0xd1, 0x28, 0x22, 0x00, - 0x21, 0x00, 0x20, 0x00, 0xf0, 0x00, 0xfe, 0x0a, - 0x04, 0x00, 0x0c, 0x00, 0xf0, 0x00, 0xfd, 0x78, - 0x78, 0x38, 0x09, 0x00, 0xd3, 0x16, 0x20, 0x00, - 0x88, 0x79, 0x29, 0x00, 0xdd, 0x12, 0x00, 0xc2, - 0x18, 0x12, 0x00, 0x92, 0x68, 0xf9, 0x18, 0x89, - 0x89, 0xca, 0x89, 0x7b, 0x42, 0x9a, 0xd0, 0x03, - 0x7f, 0x0a, 0x23, 0x80, 0x43, 0x1a, 0x77, 0x0a, - 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, 0x88, 0x79, - 0x42, 0x81, 0xdc, 0xec, 0x78, 0x38, 0x23, 0x01, - 0x43, 0x18, 0x70, 0x38, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x00, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x8f, 0x80, - 0x2e, 0x08, 0x90, 0x7c, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0xf0, 0x04, 0x09, 0x0c, 0x09, 0x25, 0x00, - 0xb0, 0x88, 0xf7, 0xf3, 0xfe, 0xf1, 0x20, 0x08, - 0xf7, 0xf3, 0xff, 0x0a, 0x20, 0x04, 0xf7, 0xf3, - 0xff, 0x07, 0x20, 0x0c, 0xf7, 0xf3, 0xff, 0x04, - 0x04, 0x04, 0x0c, 0x24, 0x20, 0x10, 0xf7, 0xf3, - 0xfe, 0xff, 0x20, 0x02, 0xf7, 0xf3, 0xfe, 0xfc, - 0x20, 0x05, 0xf7, 0xf3, 0xfe, 0xf9, 0x06, 0x06, - 0x0e, 0x36, 0x20, 0x01, 0xf7, 0xf3, 0xfe, 0xf4, - 0x20, 0x08, 0xf7, 0xf3, 0xfe, 0xf1, 0x06, 0x07, - 0x0e, 0x3f, 0x20, 0x08, 0xf7, 0xf3, 0xfe, 0xec, - 0x06, 0x01, 0x0e, 0x09, 0x91, 0x04, 0x20, 0x10, - 0xf7, 0xf3, 0xfe, 0xe6, 0x20, 0x08, 0xf7, 0xf3, - 0xfe, 0xe3, 0x49, 0x4c, 0x91, 0x07, 0x5d, 0xc8, - 0x0a, 0x01, 0xd3, 0x05, 0x06, 0xc0, 0x0e, 0xc0, - 0x42, 0xb0, 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x88, - 0x20, 0x80, 0x43, 0x30, 0x99, 0x07, 0x55, 0xc8, - 0x4f, 0x45, 0x88, 0x78, 0x90, 0x00, 0x1f, 0xe0, - 0x38, 0x05, 0x90, 0x06, 0x28, 0x00, 0xdd, 0x68, - 0x48, 0x42, 0x90, 0x05, 0x20, 0x10, 0xf7, 0xf3, - 0xfe, 0xc7, 0x04, 0x06, 0x0c, 0x36, 0x20, 0x06, - 0xf7, 0xf3, 0xfe, 0xc2, 0x20, 0x06, 0xf7, 0xf3, - 0xfe, 0xbf, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x03, - 0x2e, 0x00, 0xd1, 0x11, 0x20, 0x0c, 0xf7, 0xf3, - 0xfe, 0xb7, 0x04, 0x06, 0x0c, 0x36, 0x24, 0x00, - 0x2e, 0x00, 0xdd, 0x07, 0x20, 0x08, 0xf7, 0xf3, - 0xfe, 0xaf, 0x1c, 0x60, 0x04, 0x04, 0x0c, 0x24, - 0x42, 0xb4, 0xdb, 0xf7, 0x19, 0xa8, 0xe0, 0x3e, - 0x1c, 0x30, 0xf0, 0x00, 0xfb, 0x0f, 0x1c, 0x04, - 0x4b, 0x2f, 0x42, 0x98, 0xd1, 0x18, 0x88, 0xb8, - 0x88, 0x79, 0x42, 0x88, 0xd1, 0x05, 0xf7, 0xff, - 0xfd, 0xd1, 0x23, 0x01, 0x42, 0xd8, 0xd1, 0x00, - 0xe0, 0x47, 0x9c, 0x00, 0x00, 0xe1, 0x19, 0x09, - 0x00, 0x89, 0x68, 0xf8, 0x18, 0x40, 0x81, 0xc6, - 0x88, 0x78, 0x30, 0x01, 0x80, 0x78, 0x98, 0x00, - 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x00, - 0x98, 0x03, 0x00, 0xe2, 0x19, 0x12, 0x00, 0x92, - 0x68, 0xf9, 0x18, 0x89, 0x77, 0xc8, 0x20, 0x0c, - 0xf7, 0xf3, 0xfe, 0x7e, 0x04, 0x00, 0x0c, 0x00, - 0x90, 0x02, 0x26, 0x00, 0x28, 0x00, 0xdd, 0x0c, - 0x98, 0x05, 0xa9, 0x01, 0x1c, 0x22, 0xf0, 0x00, - 0xfb, 0x45, 0xa8, 0x01, 0x88, 0x00, 0x18, 0x30, - 0x04, 0x06, 0x0c, 0x36, 0x98, 0x02, 0x42, 0x86, - 0xdb, 0xf2, 0x98, 0x02, 0x18, 0x28, 0x30, 0x05, - 0x04, 0x05, 0x0c, 0x2d, 0x98, 0x06, 0x42, 0xa8, - 0xdc, 0x98, 0x98, 0x07, 0x99, 0x04, 0xf0, 0x00, - 0xfa, 0xe7, 0x28, 0xff, 0xd1, 0x82, 0x78, 0x38, - 0x23, 0x10, 0x43, 0x18, 0x70, 0x38, 0x78, 0x38, - 0x08, 0x81, 0xd3, 0x05, 0x09, 0x41, 0xd3, 0x03, - 0x09, 0x00, 0xd2, 0x01, 0xf0, 0x00, 0xfe, 0xd3, - 0x20, 0x10, 0xb0, 0x08, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x91, 0x7c, - 0x2e, 0x08, 0x8f, 0x80, 0x2e, 0x08, 0x82, 0x80, - 0x00, 0x00, 0xff, 0xff, 0x20, 0x00, 0x47, 0x70, - 0xb5, 0xf0, 0x04, 0x09, 0x0c, 0x09, 0x22, 0x00, - 0xb0, 0x90, 0x92, 0x0c, 0x92, 0x02, 0x92, 0x01, - 0xf7, 0xf3, 0xfe, 0x1a, 0x20, 0x08, 0xf7, 0xf3, - 0xfe, 0x33, 0x20, 0x04, 0xf7, 0xf3, 0xfe, 0x30, - 0x20, 0x0c, 0xf7, 0xf3, 0xfe, 0x2d, 0x04, 0x00, - 0x0c, 0x00, 0x90, 0x0d, 0x20, 0x10, 0xf7, 0xf3, - 0xfe, 0x27, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x0a, - 0x20, 0x02, 0xf7, 0xf3, 0xfe, 0x21, 0x20, 0x05, - 0xf7, 0xf3, 0xfe, 0x1e, 0x06, 0x03, 0x0e, 0x1b, - 0x93, 0x05, 0x20, 0x01, 0xf7, 0xf3, 0xfe, 0x18, - 0x06, 0x02, 0x0e, 0x12, 0x92, 0x04, 0x20, 0x08, - 0xf7, 0xf3, 0xfe, 0x12, 0x20, 0x08, 0xf7, 0xf3, - 0xfe, 0x0f, 0x20, 0x03, 0xf7, 0xf3, 0xfe, 0x0c, - 0x20, 0x0d, 0xf7, 0xf3, 0xfe, 0x09, 0x04, 0x07, - 0x0c, 0x3f, 0x20, 0x04, 0xf7, 0xf3, 0xfe, 0x04, - 0x20, 0x0c, 0xf7, 0xf3, 0xfe, 0x01, 0x04, 0x01, - 0x0c, 0x09, 0x91, 0x09, 0x98, 0x0a, 0xf0, 0x00, - 0xfd, 0x13, 0x1c, 0x04, 0xd1, 0x01, 0x43, 0xe0, - 0xe1, 0x27, 0x7f, 0x20, 0x0a, 0x00, 0xd3, 0x01, - 0x20, 0x00, 0xe1, 0x22, 0x84, 0x27, 0x25, 0x00, - 0x99, 0x09, 0x4e, 0x92, 0x1d, 0xf7, 0x37, 0xf9, - 0x29, 0x00, 0xdd, 0x2a, 0x98, 0x0a, 0xf0, 0x00, - 0xfa, 0x51, 0x1c, 0x02, 0x1c, 0x30, 0xa9, 0x06, - 0xf0, 0x00, 0xfa, 0xb4, 0x28, 0x09, 0xd1, 0x16, - 0x98, 0x02, 0x28, 0x00, 0xd1, 0x06, 0x20, 0xff, - 0x90, 0x01, 0x20, 0x01, 0x70, 0x38, 0x18, 0x28, - 0x04, 0x05, 0x0c, 0x2d, 0x20, 0xff, 0x90, 0x02, - 0x19, 0x78, 0xaa, 0x06, 0x88, 0x12, 0x1c, 0x31, - 0xf0, 0x10, 0xfd, 0x14, 0xa8, 0x06, 0x88, 0x00, - 0x18, 0x28, 0x04, 0x05, 0x0c, 0x2d, 0xa9, 0x06, - 0x88, 0x09, 0x98, 0x0c, 0x18, 0x40, 0x04, 0x00, - 0x0c, 0x00, 0x90, 0x0c, 0x99, 0x09, 0x42, 0x88, - 0xdb, 0xd4, 0x48, 0x7b, 0x90, 0x0f, 0x2d, 0x00, - 0xd0, 0x0d, 0x9a, 0x04, 0xb4, 0x04, 0x21, 0x03, - 0x98, 0x10, 0x9a, 0x0b, 0x9b, 0x06, 0xf0, 0x00, - 0xfd, 0xac, 0xb0, 0x01, 0x98, 0x0f, 0x1c, 0x39, - 0x1c, 0x2a, 0xf0, 0x00, 0xfd, 0xc8, 0x20, 0x00, - 0x90, 0x0b, 0x98, 0x0d, 0x99, 0x09, 0x1a, 0x40, - 0x38, 0x0d, 0x90, 0x0e, 0x28, 0x00, 0xdd, 0x75, - 0x20, 0x00, 0x90, 0x00, 0x25, 0x00, 0x20, 0x08, - 0xf7, 0xf3, 0xfd, 0x9e, 0x06, 0x00, 0x0e, 0x00, - 0x90, 0x03, 0x20, 0x03, 0xf7, 0xf3, 0xfd, 0x98, - 0x20, 0x0d, 0xf7, 0xf3, 0xfd, 0x95, 0x04, 0x00, - 0x0c, 0x00, 0x90, 0x07, 0x98, 0x03, 0x28, 0x07, - 0xd2, 0x12, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x0e, 0x04, 0x04, 0x07, - 0x07, 0x0e, 0x0c, 0x00, 0x98, 0x07, 0x82, 0x60, - 0xe0, 0x06, 0x99, 0x07, 0x1c, 0x20, 0xf0, 0x00, - 0xfd, 0x51, 0xe0, 0x01, 0x20, 0xff, 0x90, 0x00, - 0x20, 0x04, 0xf7, 0xf3, 0xfd, 0x79, 0x20, 0x0c, - 0xf7, 0xf3, 0xfd, 0x76, 0x04, 0x01, 0x0c, 0x09, - 0x91, 0x08, 0x20, 0x00, 0x90, 0x0c, 0x29, 0x00, - 0xdd, 0x1c, 0x98, 0x0a, 0xf0, 0x00, 0xf9, 0xd6, - 0x1c, 0x02, 0x1c, 0x30, 0xa9, 0x06, 0xf0, 0x00, - 0xfa, 0x39, 0x28, 0x09, 0xd0, 0x37, 0x28, 0x0a, - 0xd0, 0x44, 0x28, 0x56, 0xd1, 0x04, 0x98, 0x00, - 0x28, 0xff, 0xd1, 0x01, 0x98, 0x07, 0x83, 0x60, - 0xa9, 0x06, 0x88, 0x09, 0x98, 0x0c, 0x18, 0x40, - 0x04, 0x00, 0x0c, 0x00, 0x90, 0x0c, 0x99, 0x08, - 0x42, 0x88, 0xdb, 0xe2, 0x98, 0x03, 0x70, 0x38, - 0x98, 0x07, 0x12, 0x00, 0x70, 0x78, 0x98, 0x07, - 0x70, 0xb8, 0x20, 0x00, 0x70, 0xf8, 0x71, 0x38, - 0x20, 0x01, 0x71, 0x78, 0x2d, 0x00, 0xd0, 0x40, - 0x98, 0x02, 0x28, 0x00, 0xd1, 0x0a, 0x20, 0xff, - 0x90, 0x02, 0x9a, 0x04, 0xb4, 0x04, 0x21, 0x03, - 0x98, 0x10, 0x9a, 0x0b, 0x9b, 0x06, 0xf0, 0x00, - 0xfd, 0x30, 0xb0, 0x01, 0x1f, 0x68, 0x12, 0x01, - 0x70, 0xf9, 0x71, 0x38, 0x98, 0x0f, 0x1c, 0x39, - 0x1c, 0x2a, 0xe0, 0x3e, 0xe0, 0x4b, 0x2d, 0x00, - 0xd1, 0x00, 0x25, 0x06, 0x19, 0x78, 0xaa, 0x06, - 0x88, 0x12, 0x1c, 0x31, 0xf0, 0x10, 0xfc, 0x6a, - 0xa8, 0x06, 0x88, 0x00, 0x18, 0x28, 0x04, 0x05, - 0x0c, 0x2d, 0xe7, 0xc1, 0x98, 0x03, 0x28, 0x04, - 0xd0, 0x02, 0x98, 0x03, 0x28, 0x03, 0xd1, 0xbb, - 0x69, 0x60, 0x28, 0x00, 0xd0, 0x09, 0x8b, 0x21, - 0x00, 0xc9, 0x18, 0x40, 0x78, 0xb1, 0x38, 0x06, - 0x70, 0x81, 0x78, 0x71, 0x70, 0x41, 0x78, 0x31, - 0x70, 0x01, 0x22, 0x00, 0x8b, 0x21, 0x00, 0xc9, - 0x69, 0x60, 0x18, 0x40, 0x38, 0x20, 0x77, 0x42, - 0xe7, 0xa6, 0x98, 0x01, 0x28, 0xff, 0xd1, 0x12, - 0x98, 0x02, 0x28, 0x00, 0xd1, 0x0a, 0x20, 0xff, - 0x90, 0x02, 0x9a, 0x04, 0xb4, 0x04, 0x21, 0x03, - 0x98, 0x10, 0x9a, 0x0b, 0x9b, 0x06, 0xf0, 0x00, - 0xfc, 0xec, 0xb0, 0x01, 0x22, 0x05, 0x98, 0x0f, - 0x1c, 0x39, 0xf0, 0x00, 0xfd, 0x24, 0x98, 0x0b, - 0x99, 0x08, 0x18, 0x40, 0x30, 0x06, 0x04, 0x00, - 0x0c, 0x00, 0x90, 0x0b, 0x98, 0x0e, 0x99, 0x0b, - 0x42, 0x88, 0xdd, 0x00, 0xe7, 0x3c, 0x7f, 0x20, - 0x23, 0x80, 0x43, 0x18, 0x77, 0x20, 0x9a, 0x04, - 0x07, 0xd0, 0x0e, 0x80, 0x9b, 0x05, 0x18, 0xc0, - 0x77, 0x60, 0x98, 0x02, 0x28, 0xff, 0xd1, 0x03, - 0x99, 0x0f, 0x1c, 0x20, 0xf0, 0x00, 0xfd, 0x20, - 0x20, 0x01, 0xb0, 0x10, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x83, 0x80, - 0x2e, 0x08, 0x85, 0x80, 0xb5, 0xf0, 0x04, 0x09, - 0x0c, 0x09, 0x22, 0x00, 0xb0, 0x88, 0x92, 0x05, - 0xf7, 0xf3, 0xfc, 0xa2, 0x20, 0x08, 0xf7, 0xf3, - 0xfc, 0xbb, 0x20, 0x04, 0xf7, 0xf3, 0xfc, 0xb8, - 0x20, 0x0c, 0xf7, 0xf3, 0xfc, 0xb5, 0x04, 0x05, - 0x0c, 0x2d, 0x20, 0x10, 0xf7, 0xf3, 0xfc, 0xb0, - 0x04, 0x07, 0x0c, 0x3f, 0x20, 0x02, 0xf7, 0xf3, - 0xfc, 0xab, 0x20, 0x05, 0xf7, 0xf3, 0xfc, 0xa8, - 0x20, 0x01, 0xf7, 0xf3, 0xfc, 0xa5, 0x06, 0x04, - 0x0e, 0x24, 0x20, 0x08, 0xf7, 0xf3, 0xfc, 0xa0, - 0x06, 0x06, 0x0e, 0x36, 0x20, 0x08, 0xf7, 0xf3, - 0xfc, 0x9b, 0x20, 0x10, 0xf7, 0xf3, 0xfc, 0x98, - 0x20, 0x10, 0xf7, 0xf3, 0xfc, 0x95, 0x20, 0x08, - 0xf7, 0xf3, 0xfc, 0x92, 0x20, 0x08, 0xf7, 0xf3, - 0xfc, 0x8f, 0x2c, 0x00, 0xd0, 0x65, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0xf4, 0x90, 0x03, 0x4b, 0x44, - 0x42, 0x98, 0xd0, 0x5e, 0x48, 0x43, 0x89, 0x41, - 0x42, 0xb9, 0xd1, 0x5b, 0x68, 0xc0, 0x9a, 0x03, - 0x00, 0xd1, 0x18, 0x89, 0x00, 0x89, 0x18, 0x40, - 0x7f, 0x80, 0x4c, 0x3f, 0x1d, 0xe7, 0x37, 0x39, - 0x28, 0x04, 0xd0, 0x0b, 0x28, 0x05, 0xd0, 0x09, - 0x2e, 0x00, 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x04, - 0x2e, 0x01, 0xd1, 0x01, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x02, 0x72, 0xb8, 0x2d, 0x0f, 0xdd, 0x61, - 0x1f, 0xe8, 0x38, 0x08, 0x90, 0x07, 0x28, 0x00, - 0xdd, 0x5c, 0x48, 0x34, 0x90, 0x06, 0x20, 0x10, - 0xf7, 0xf3, 0xfc, 0x5e, 0x04, 0x00, 0x0c, 0x00, - 0x90, 0x04, 0x20, 0x10, 0xf7, 0xf3, 0xfc, 0x58, - 0x20, 0x18, 0xf7, 0xf3, 0xfc, 0x55, 0x90, 0x01, - 0x20, 0x18, 0xf7, 0xf3, 0xfc, 0x51, 0x90, 0x00, - 0x20, 0x03, 0xf7, 0xf3, 0xfc, 0x4d, 0x20, 0x01, - 0xf7, 0xf3, 0xfc, 0x4a, 0x20, 0x0c, 0xf7, 0xf3, - 0xfc, 0x47, 0x04, 0x05, 0x0c, 0x2d, 0x98, 0x05, - 0x19, 0x40, 0x30, 0x0c, 0x04, 0x00, 0x0c, 0x00, - 0x90, 0x05, 0x7a, 0xb8, 0x00, 0xc1, 0x1a, 0x09, - 0x00, 0x89, 0x19, 0x09, 0x69, 0x8a, 0x9b, 0x04, - 0x42, 0x9a, 0xd0, 0x2b, 0x26, 0x00, 0x28, 0x00, - 0xd0, 0x01, 0x28, 0x01, 0xd1, 0x0b, 0x98, 0x01, - 0x60, 0xc8, 0x7a, 0xb9, 0x00, 0xcb, 0x1a, 0x59, - 0x00, 0x89, 0x19, 0x09, 0x98, 0x00, 0x61, 0x08, - 0xe0, 0x05, 0xe0, 0x1f, 0xe0, 0x1e, 0x98, 0x01, - 0x63, 0xe0, 0x98, 0x00, 0x64, 0x20, 0x2d, 0x00, - 0xdd, 0x14, 0x98, 0x06, 0x9a, 0x03, 0xa9, 0x02, - 0xf0, 0x00, 0xf8, 0xec, 0x28, 0x4d, 0xd1, 0x06, - 0x7a, 0xb9, 0x00, 0xcb, 0x1a, 0x59, 0x00, 0x89, - 0x19, 0x09, 0x98, 0x04, 0x61, 0x48, 0xa8, 0x02, - 0x88, 0x00, 0x18, 0x30, 0x04, 0x06, 0x0c, 0x36, - 0x42, 0xae, 0xdb, 0xea, 0x98, 0x07, 0x99, 0x05, - 0x42, 0x88, 0xdc, 0xa4, 0x20, 0x00, 0xb0, 0x08, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x8f, 0x80, - 0x2e, 0x08, 0x90, 0x30, 0x2e, 0x08, 0x89, 0x98, - 0xb5, 0x80, 0x04, 0x09, 0x0c, 0x09, 0xf7, 0xf3, - 0xfb, 0xd7, 0x20, 0x08, 0xf7, 0xf3, 0xfb, 0xf0, - 0x20, 0x04, 0xf7, 0xf3, 0xfb, 0xed, 0x20, 0x0c, - 0xf7, 0xf3, 0xfb, 0xea, 0x20, 0x10, 0xf7, 0xf3, - 0xfb, 0xe7, 0x4f, 0x07, 0x60, 0xf8, 0x20, 0x18, - 0xf7, 0xf3, 0xfb, 0xe2, 0x60, 0xb8, 0x48, 0x05, - 0x78, 0x01, 0x23, 0x20, 0x43, 0x19, 0x70, 0x01, - 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1a, 0xcc, 0x2e, 0x08, 0x8f, 0x80, - 0xb5, 0xb0, 0x04, 0x09, 0x0c, 0x09, 0xb0, 0x81, - 0xf7, 0xf3, 0xfb, 0xb2, 0x20, 0x08, 0xf7, 0xf3, - 0xfb, 0xcb, 0x20, 0x04, 0xf7, 0xf3, 0xfb, 0xc8, - 0x20, 0x0c, 0xf7, 0xf3, 0xfb, 0xc5, 0x20, 0x10, - 0xf7, 0xf3, 0xfb, 0xc2, 0x04, 0x00, 0x0c, 0x00, - 0x4f, 0x11, 0x60, 0xf8, 0x20, 0x18, 0xf7, 0xf3, - 0xfb, 0xbb, 0x60, 0xb8, 0x20, 0x04, 0xf7, 0xf3, - 0xfb, 0xb7, 0x20, 0x0c, 0xf7, 0xf3, 0xfb, 0xb4, - 0x04, 0x04, 0x0c, 0x24, 0x27, 0x00, 0x2c, 0x00, - 0xdd, 0x0c, 0x4d, 0x0a, 0x46, 0x69, 0x1c, 0x28, - 0x4a, 0x09, 0xf0, 0x00, 0xf8, 0x7b, 0xa8, 0x00, - 0x88, 0x00, 0x18, 0x38, 0x04, 0x07, 0x0c, 0x3f, - 0x42, 0xa7, 0xdb, 0xf3, 0x20, 0x00, 0xb0, 0x01, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1a, 0xcc, 0x2e, 0x08, 0x8a, 0x98, - 0x00, 0x00, 0xff, 0xff, 0xb4, 0x80, 0x04, 0x02, - 0x0c, 0x12, 0x20, 0x00, 0x49, 0x0a, 0x88, 0x49, - 0x29, 0x00, 0xdd, 0x0d, 0x4b, 0x08, 0x68, 0xdf, - 0x00, 0xc3, 0x18, 0x1b, 0x00, 0x9b, 0x18, 0xfb, - 0x89, 0xdb, 0x42, 0x93, 0xd0, 0x05, 0x30, 0x01, - 0x04, 0x00, 0x0c, 0x00, 0x42, 0x81, 0xdc, 0xf3, - 0x48, 0x02, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x8f, 0x80, 0x00, 0x00, 0xff, 0xff, - 0xb4, 0x80, 0x06, 0x0a, 0x0e, 0x12, 0x21, 0x00, - 0x32, 0x01, 0x2a, 0x00, 0xdd, 0x0a, 0x5c, 0x47, - 0x0a, 0x3b, 0xd2, 0x02, 0x20, 0x00, 0xbc, 0x80, - 0x47, 0x70, 0x31, 0x01, 0x06, 0x09, 0x0e, 0x09, - 0x42, 0x8a, 0xdc, 0xf4, 0x20, 0xff, 0xbc, 0x80, - 0x47, 0x70, 0xb4, 0x90, 0x04, 0x02, 0x0c, 0x12, - 0x04, 0x0f, 0x0c, 0x3f, 0x42, 0xba, 0xda, 0x29, - 0x20, 0x00, 0x49, 0x15, 0x00, 0xd3, 0x18, 0x9b, - 0x00, 0x9b, 0x68, 0xcc, 0x18, 0xe4, 0x81, 0xe0, - 0x68, 0xcc, 0x18, 0xe4, 0x77, 0x20, 0x68, 0xcc, - 0x18, 0xe4, 0x60, 0x60, 0x68, 0xcc, 0x50, 0xe0, - 0x68, 0xcc, 0x18, 0xe4, 0x82, 0x20, 0x68, 0xcc, - 0x18, 0xe4, 0x60, 0xa0, 0x68, 0xcc, 0x18, 0xe4, - 0x81, 0xa0, 0x68, 0xcc, 0x18, 0xe4, 0x61, 0x60, - 0x68, 0xcc, 0x18, 0xe4, 0x83, 0x20, 0x68, 0xcc, - 0x18, 0xe4, 0x83, 0x60, 0x68, 0xcc, 0x18, 0xe3, - 0x82, 0x58, 0x32, 0x01, 0x04, 0x12, 0x0c, 0x12, - 0x42, 0xba, 0xdb, 0xd7, 0xbc, 0x90, 0x47, 0x70, - 0x2e, 0x08, 0x8f, 0x80, 0xb5, 0xf0, 0x04, 0x15, - 0x0c, 0x2d, 0x1c, 0x07, 0x20, 0x08, 0x1c, 0x0c, - 0xf7, 0xf3, 0xfb, 0x26, 0x06, 0x06, 0x0e, 0x36, - 0x20, 0x08, 0xf7, 0xf3, 0xfb, 0x21, 0x06, 0x01, - 0x0e, 0x09, 0x1c, 0x88, 0x80, 0x20, 0x2e, 0x48, - 0xd0, 0x42, 0xdc, 0x0c, 0x1e, 0xb0, 0x28, 0x09, - 0xd2, 0x61, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x25, 0x2c, 0x5e, 0x5e, - 0x5e, 0x5e, 0x33, 0x1e, 0x4f, 0x00, 0x2e, 0x56, - 0xd0, 0x4e, 0xdc, 0x0a, 0x2e, 0x4d, 0xd0, 0x36, - 0x2e, 0x4e, 0xd1, 0x51, 0x1c, 0x38, 0x1c, 0x2a, - 0xf0, 0x00, 0xfd, 0x4c, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x2e, 0x58, 0xd0, 0x32, 0x2e, 0x5d, - 0xd1, 0x46, 0x1c, 0x38, 0x1c, 0x2a, 0xf0, 0x00, - 0xfc, 0x11, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0x1c, 0x2a, 0xf0, 0x00, 0xfb, 0xbc, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, - 0x1c, 0x2a, 0xf0, 0x00, 0xfb, 0xcd, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, 0x1c, 0x2a, - 0xf0, 0x00, 0xfb, 0xd8, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x1c, 0x38, 0x1c, 0x2a, 0xf0, 0x00, - 0xfb, 0xe3, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0x1c, 0x2a, 0xf0, 0x00, 0xfc, 0x00, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, - 0x1c, 0x2a, 0xf0, 0x00, 0xfc, 0x71, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, 0x1c, 0x2a, - 0xf0, 0x00, 0xfd, 0x6c, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x1c, 0x38, 0x1c, 0x2a, 0xf0, 0x00, - 0xfd, 0x97, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0x1c, 0x2a, 0xf0, 0x00, 0xfd, 0xb4, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xe7, 0xff, - 0x1c, 0x38, 0x1c, 0x2a, 0xf0, 0x00, 0xfd, 0xbe, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, - 0x22, 0x01, 0x20, 0x00, 0xb0, 0x88, 0x4f, 0x35, - 0x88, 0x79, 0x25, 0x00, 0x29, 0x00, 0xdd, 0x35, - 0x00, 0xc4, 0x18, 0x24, 0x00, 0xa4, 0x68, 0xf9, - 0x19, 0x09, 0x7f, 0x0e, 0x0a, 0x33, 0xd2, 0x1d, - 0x09, 0xf3, 0xd2, 0x1b, 0x8a, 0x0b, 0x2b, 0x00, - 0xd0, 0x18, 0x00, 0xc3, 0x18, 0x18, 0x00, 0x80, - 0x68, 0xfa, 0x18, 0x10, 0x8a, 0x02, 0x89, 0xc9, - 0x4b, 0x29, 0x20, 0x02, 0xf0, 0x00, 0xf8, 0x52, - 0x21, 0x00, 0x43, 0xc9, 0x42, 0x88, 0xd1, 0x01, - 0x1c, 0x08, 0xe0, 0x42, 0x68, 0xf8, 0x19, 0x00, - 0x7f, 0x01, 0x23, 0x40, 0x43, 0x19, 0x77, 0x01, - 0x1c, 0x28, 0xe0, 0x3a, 0x8a, 0x0b, 0x2b, 0x00, - 0xd1, 0x02, 0x23, 0xa0, 0x43, 0x33, 0x77, 0x0b, - 0x68, 0xf9, 0x19, 0x09, 0x7f, 0x09, 0x0a, 0x09, - 0xd2, 0x00, 0x22, 0x00, 0x88, 0x79, 0x30, 0x01, - 0x42, 0x81, 0xdc, 0xc9, 0x2a, 0x00, 0xd1, 0x01, - 0x20, 0x02, 0xe0, 0x26, 0x78, 0x38, 0x08, 0x81, - 0xd2, 0x22, 0x23, 0x02, 0x43, 0x18, 0x70, 0x38, - 0x78, 0x38, 0x09, 0x00, 0xd3, 0x02, 0x89, 0x78, - 0xf7, 0xfe, 0xfd, 0x1d, 0x20, 0x0c, 0xab, 0x00, - 0x70, 0x18, 0x88, 0x78, 0x0a, 0x01, 0x70, 0x59, - 0x70, 0x98, 0x46, 0x68, 0x21, 0x20, 0xf7, 0xfd, - 0xf9, 0xa7, 0x78, 0x38, 0x08, 0x81, 0xd3, 0x05, - 0x09, 0x41, 0xd3, 0x03, 0x09, 0x00, 0xd2, 0x01, - 0xf0, 0x00, 0xfa, 0xcd, 0x22, 0x14, 0x21, 0x00, - 0x20, 0x70, 0x1c, 0x2b, 0xf0, 0x00, 0xf8, 0x0a, - 0x20, 0x01, 0xb0, 0x08, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x8f, 0x80, - 0x00, 0x00, 0x13, 0x88, 0xb5, 0xf0, 0x06, 0x04, - 0x0e, 0x24, 0x04, 0x08, 0x0c, 0x00, 0xb0, 0x83, - 0x90, 0x00, 0x04, 0x10, 0x0c, 0x00, 0x90, 0x01, - 0x04, 0x1e, 0x0c, 0x36, 0xb0, 0x89, 0x98, 0x0a, - 0xf0, 0x00, 0xf9, 0x28, 0x90, 0x00, 0x23, 0x01, - 0x42, 0xd8, 0xd1, 0x00, 0xe0, 0x55, 0x98, 0x00, - 0x01, 0x01, 0x91, 0x0b, 0x4f, 0x2b, 0x19, 0xc8, - 0x70, 0x44, 0x9a, 0x09, 0x80, 0x42, 0x5c, 0x7a, - 0x23, 0x01, 0x43, 0x1a, 0x54, 0x7a, 0x99, 0x0a, - 0x80, 0xc1, 0x1c, 0x05, 0x60, 0x86, 0x20, 0x00, - 0x21, 0x00, 0x00, 0x42, 0xab, 0x01, 0x52, 0x99, - 0x30, 0x01, 0x04, 0x00, 0x14, 0x00, 0x28, 0x10, - 0xdb, 0xf6, 0x02, 0x20, 0x23, 0xff, 0x43, 0x18, - 0xab, 0x01, 0x80, 0x18, 0x2c, 0x02, 0xd0, 0x01, - 0x2c, 0x4e, 0xd1, 0x10, 0x20, 0xff, 0x02, 0x00, - 0x9a, 0x09, 0x40, 0x10, 0x23, 0xff, 0x43, 0x18, - 0xab, 0x01, 0x80, 0x58, 0x9a, 0x09, 0x02, 0x10, - 0x23, 0xff, 0x02, 0x1b, 0x40, 0x18, 0x23, 0xff, - 0x43, 0x18, 0xab, 0x02, 0x80, 0x18, 0x21, 0x04, - 0x98, 0x0a, 0xaa, 0x01, 0xf7, 0xf7, 0xfe, 0x98, - 0x04, 0x01, 0x0c, 0x09, 0x81, 0xa9, 0x20, 0x00, - 0x43, 0xc0, 0x42, 0x81, 0xd1, 0x07, 0x21, 0x00, - 0x9a, 0x0b, 0x54, 0xb9, 0x21, 0xff, 0x70, 0x69, - 0x0c, 0x01, 0x81, 0xa9, 0xe0, 0x0d, 0x99, 0x0b, - 0x5c, 0x78, 0x23, 0x02, 0x43, 0x18, 0x54, 0x78, - 0x2e, 0x00, 0xd0, 0x05, 0x22, 0x02, 0x99, 0x00, - 0x1c, 0x30, 0xf7, 0xfe, 0xfb, 0xe0, 0x80, 0xa8, - 0x20, 0x00, 0xb0, 0x0c, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x8f, 0x90, - 0xb5, 0xf0, 0x04, 0x00, 0x14, 0x00, 0x01, 0x05, - 0x4c, 0x10, 0x5d, 0x60, 0x26, 0x00, 0x28, 0x00, - 0xd1, 0x03, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x19, 0x2f, 0x89, 0xb8, 0xf7, 0xf7, - 0xff, 0xe3, 0x22, 0x00, 0x43, 0xd2, 0x21, 0xff, - 0x42, 0x90, 0xd1, 0x07, 0x55, 0x66, 0x70, 0x79, - 0x0c, 0x00, 0x81, 0xb8, 0x1c, 0x10, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x55, 0x66, 0x70, 0x79, - 0x1c, 0x30, 0x49, 0x03, 0x81, 0xb9, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x8f, 0x90, - 0x00, 0x00, 0xff, 0xff, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x00, 0x47, 0x70, 0xb5, 0xb0, 0x04, 0x0d, - 0x0c, 0x2d, 0x1c, 0x07, 0xb0, 0x84, 0xf0, 0x00, - 0xf8, 0x2d, 0x23, 0x01, 0x42, 0xd8, 0xd1, 0x01, - 0x20, 0x01, 0xe0, 0x15, 0x1c, 0x28, 0xf7, 0xfd, - 0xf9, 0xb1, 0x1c, 0x04, 0xd0, 0x0f, 0x1c, 0x20, - 0x1c, 0x39, 0x1c, 0x2a, 0xf0, 0x10, 0xf8, 0xca, - 0x20, 0x06, 0xab, 0x00, 0x80, 0x18, 0x70, 0x9d, - 0x94, 0x01, 0x46, 0x69, 0x20, 0x85, 0xf7, 0xfd, - 0xf8, 0xeb, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x02, - 0xb0, 0x04, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x06, 0x00, 0x0e, 0x00, 0x28, 0x0a, 0xdd, 0x01, - 0x20, 0xff, 0x47, 0x70, 0x01, 0x00, 0x49, 0x02, - 0x18, 0x40, 0x78, 0x40, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x8f, 0x90, 0xb4, 0x90, 0x21, 0x00, - 0x4b, 0x13, 0x01, 0x0a, 0x5c, 0x9f, 0x2f, 0x00, - 0xd0, 0x18, 0x18, 0xd7, 0x78, 0x7c, 0x78, 0x02, - 0x42, 0x94, 0xd1, 0x13, 0x2a, 0x00, 0xd0, 0x0e, - 0x2a, 0x42, 0xd0, 0x0c, 0x2a, 0x70, 0xd0, 0x0a, - 0x2a, 0x73, 0xd0, 0x08, 0x79, 0x02, 0x78, 0xc4, - 0x02, 0x24, 0x19, 0x12, 0x04, 0x12, 0x0c, 0x12, - 0x88, 0x7f, 0x42, 0x97, 0xd1, 0x02, 0x1c, 0x08, - 0xbc, 0x90, 0x47, 0x70, 0x31, 0x01, 0x04, 0x09, - 0x14, 0x09, 0x29, 0x0a, 0xd1, 0xdd, 0x20, 0x00, - 0x43, 0xc0, 0xbc, 0x90, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x8f, 0x90, 0xb4, 0xb0, 0x06, 0x03, - 0x0e, 0x1b, 0x04, 0x0f, 0x0c, 0x3f, 0x06, 0x14, - 0x0e, 0x24, 0x20, 0x00, 0x4a, 0x09, 0x01, 0x01, - 0x18, 0x89, 0x78, 0x4d, 0x42, 0x9d, 0xd1, 0x04, - 0x2c, 0x00, 0xd0, 0x09, 0x88, 0x49, 0x42, 0xb9, - 0xd0, 0x06, 0x30, 0x01, 0x04, 0x00, 0x14, 0x00, - 0x28, 0x0a, 0xd1, 0xf0, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0xb0, 0x47, 0x70, 0x2e, 0x08, 0x8f, 0x90, - 0xb4, 0x80, 0x04, 0x02, 0x0c, 0x12, 0x20, 0x00, - 0x49, 0x09, 0x01, 0x03, 0x5c, 0xcf, 0x2f, 0x00, - 0xd0, 0x06, 0x18, 0x5b, 0x89, 0x9b, 0x42, 0x93, - 0xd1, 0x02, 0x20, 0xff, 0xbc, 0x80, 0x47, 0x70, - 0x30, 0x01, 0x04, 0x00, 0x0c, 0x00, 0x28, 0x0a, - 0xdb, 0xef, 0x20, 0x00, 0xbc, 0x80, 0x47, 0x70, - 0x2e, 0x08, 0x8f, 0x90, 0x48, 0x0a, 0x21, 0x00, - 0x4a, 0x0a, 0x01, 0x0b, 0x5c, 0xd3, 0x2b, 0x00, - 0xd1, 0x00, 0x1c, 0x08, 0x31, 0x01, 0x04, 0x09, - 0x0c, 0x09, 0x29, 0x0a, 0xdb, 0xf5, 0x4b, 0x04, - 0x42, 0x98, 0xd0, 0x02, 0x04, 0x00, 0x14, 0x00, - 0x47, 0x70, 0x20, 0x00, 0x43, 0xc0, 0x47, 0x70, - 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x8f, 0x90, - 0xb4, 0x80, 0x04, 0x07, 0x0c, 0x3f, 0x20, 0x00, - 0x49, 0x0b, 0x88, 0x4a, 0x2a, 0x00, 0xdd, 0x10, - 0x68, 0xc9, 0x00, 0xc3, 0x18, 0x1b, 0x00, 0x9b, - 0x18, 0xcb, 0x89, 0xdb, 0x42, 0xbb, 0xd1, 0x05, - 0x00, 0xc3, 0x18, 0x18, 0x00, 0x80, 0x18, 0x08, - 0xbc, 0x80, 0x47, 0x70, 0x30, 0x01, 0x42, 0x82, - 0xdc, 0xef, 0x20, 0x00, 0xbc, 0x80, 0x47, 0x70, - 0x2e, 0x08, 0x8f, 0x80, 0xb5, 0x90, 0x06, 0x03, - 0x0e, 0x1b, 0x06, 0x0c, 0x0e, 0x24, 0x06, 0x00, - 0x0e, 0x00, 0x01, 0x02, 0x48, 0x16, 0x18, 0x11, - 0x27, 0x00, 0x2c, 0x0a, 0xd0, 0x0c, 0x2c, 0x0b, - 0xd1, 0x06, 0x2b, 0x0a, 0xda, 0x04, 0x54, 0x87, - 0x20, 0xff, 0x70, 0x48, 0x48, 0x11, 0x81, 0x88, - 0x1c, 0x38, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2b, 0x0a, 0xda, 0xf9, 0x5c, 0x84, 0x23, 0x02, - 0x43, 0x23, 0x54, 0x83, 0x78, 0x48, 0x28, 0x00, - 0xd0, 0x0b, 0x28, 0x02, 0xd1, 0xf0, 0x88, 0x48, - 0xf7, 0xff, 0xff, 0xba, 0x28, 0x00, 0xd0, 0xeb, - 0x7f, 0x01, 0x23, 0x10, 0x43, 0x19, 0x77, 0x01, - 0xe7, 0xe6, 0x48, 0x05, 0x78, 0x01, 0x23, 0x40, - 0x43, 0x19, 0x70, 0x01, 0xe7, 0xe0, 0x00, 0x00, - 0x2e, 0x08, 0x8f, 0x90, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x8f, 0x80, 0xb5, 0x90, 0x04, 0x07, - 0x14, 0x3f, 0x2f, 0x0a, 0xda, 0x25, 0x2f, 0x00, - 0xdb, 0x23, 0x01, 0x38, 0x49, 0x17, 0x18, 0x44, - 0x78, 0x60, 0x28, 0x02, 0xd1, 0x0d, 0x88, 0x60, - 0xf7, 0xff, 0xff, 0x96, 0x28, 0x00, 0xd0, 0x08, - 0x7f, 0x01, 0x23, 0x40, 0x43, 0xdb, 0x40, 0x19, - 0x77, 0x01, 0x7f, 0x01, 0x23, 0xa0, 0x43, 0x19, - 0x77, 0x01, 0x78, 0x60, 0x28, 0x42, 0xd1, 0x09, - 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0xa5, 0x4b, 0x0c, - 0x22, 0x11, 0x21, 0x00, 0x20, 0x42, 0xf7, 0xff, - 0xfe, 0x2d, 0xe0, 0x02, 0x1c, 0x38, 0xf7, 0xff, - 0xfe, 0x9b, 0xf7, 0xff, 0xfd, 0xb4, 0x28, 0x00, - 0xd1, 0x03, 0xf7, 0xff, 0xfd, 0xb0, 0x28, 0x00, - 0xd0, 0xfb, 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x8f, 0x90, - 0x00, 0x00, 0x27, 0x10, 0xb5, 0xb0, 0x04, 0x05, - 0x0c, 0x2d, 0x24, 0x00, 0x27, 0x00, 0x48, 0x0e, - 0x21, 0x07, 0xf7, 0xfe, 0xff, 0x4b, 0x1c, 0x28, - 0xf7, 0xff, 0xff, 0x5e, 0x28, 0x00, 0xd0, 0x0e, - 0x8a, 0x41, 0x29, 0x00, 0xd0, 0x00, 0x1c, 0x0f, - 0x69, 0x40, 0x28, 0x00, 0xd0, 0x03, 0x88, 0x00, - 0x42, 0x88, 0xd0, 0x00, 0x1c, 0x04, 0x42, 0xbc, - 0xd0, 0x01, 0xf7, 0xf2, 0xf9, 0x27, 0x20, 0x00, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x90, 0x30, 0xb5, 0x90, 0x04, 0x0c, - 0x0c, 0x24, 0x1c, 0x07, 0x69, 0x40, 0x28, 0x00, - 0xd0, 0x06, 0x8b, 0x39, 0x1c, 0x4a, 0x00, 0xd2, - 0x00, 0xc9, 0xf7, 0xfd, 0xf8, 0x4c, 0xe0, 0x02, - 0x20, 0x08, 0xf7, 0xfd, 0xf8, 0x43, 0x61, 0x78, - 0x69, 0x78, 0x28, 0x00, 0xd0, 0x0e, 0x8b, 0x39, - 0x31, 0x01, 0x83, 0x39, 0x8b, 0x39, 0x00, 0xc9, - 0x18, 0x40, 0x38, 0x40, 0x87, 0x04, 0x21, 0x00, - 0x8b, 0x3a, 0x00, 0xd2, 0x69, 0x78, 0x18, 0x80, - 0x38, 0x20, 0x76, 0x81, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0xb4, 0xb0, 0x06, 0x09, 0x0e, 0x09, - 0x04, 0x12, 0x0c, 0x12, 0x06, 0x1b, 0x0e, 0x1b, - 0x9f, 0x03, 0x06, 0x3c, 0x0e, 0x24, 0x27, 0x9f, - 0x70, 0x07, 0x27, 0x80, 0x70, 0x47, 0x27, 0x32, - 0x70, 0x87, 0x27, 0x82, 0x70, 0xc7, 0x27, 0x00, - 0x71, 0x07, 0x25, 0x06, 0x71, 0x45, 0x71, 0x81, - 0x0a, 0x11, 0x71, 0xc1, 0x72, 0x02, 0x08, 0x59, - 0x43, 0x21, 0x72, 0x41, 0x72, 0x87, 0x72, 0xc7, - 0x1c, 0x38, 0xbc, 0xb0, 0x47, 0x70, 0xb5, 0xb0, - 0x04, 0x14, 0x0c, 0x24, 0x1c, 0x07, 0x79, 0x00, - 0x02, 0x00, 0x79, 0x7a, 0x43, 0x10, 0x04, 0x05, - 0x0c, 0x2d, 0x1d, 0xf8, 0x30, 0x05, 0x1c, 0x22, - 0xf0, 0x0f, 0xff, 0x1c, 0x19, 0x28, 0x04, 0x00, - 0x0c, 0x00, 0x12, 0x01, 0x71, 0x39, 0x71, 0x78, - 0x0a, 0x20, 0x72, 0xb8, 0x72, 0xfc, 0x20, 0x00, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xb0, - 0x04, 0x15, 0x0c, 0x2d, 0x1c, 0x07, 0x79, 0x00, - 0x02, 0x00, 0x79, 0x7a, 0x43, 0x10, 0x04, 0x04, - 0x0c, 0x24, 0x19, 0x38, 0x30, 0x06, 0x1c, 0x2a, - 0xf0, 0x0f, 0xff, 0x00, 0x19, 0x60, 0x04, 0x00, - 0x0c, 0x00, 0x12, 0x01, 0x71, 0x39, 0x71, 0x78, - 0x20, 0x00, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf3, 0x79, 0x08, 0x02, 0x00, 0x1c, 0x0f, - 0x79, 0x49, 0x43, 0x08, 0x04, 0x00, 0x0c, 0x00, - 0x25, 0x9f, 0x23, 0x80, 0x22, 0x32, 0x28, 0x80, - 0xda, 0x04, 0x24, 0x04, 0x70, 0xbd, 0x70, 0xfb, - 0x71, 0x3a, 0xe0, 0x07, 0x28, 0xff, 0xda, 0x07, - 0x24, 0x05, 0x70, 0x7d, 0x70, 0xbb, 0x70, 0xfa, - 0x21, 0x81, 0x71, 0x39, 0x71, 0x78, 0xe0, 0x00, - 0x24, 0x06, 0x19, 0x00, 0x1c, 0x06, 0xf7, 0xfc, - 0xff, 0xb5, 0x1c, 0x05, 0xd0, 0x0a, 0x20, 0x06, - 0x1b, 0x00, 0x19, 0xc1, 0x1c, 0x28, 0x1c, 0x32, - 0xf0, 0x0f, 0xfe, 0xcc, 0x98, 0x00, 0x60, 0x85, - 0x98, 0x00, 0x81, 0x86, 0x20, 0x00, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x47, 0x70, - 0xb5, 0xf0, 0x06, 0x12, 0x0e, 0x12, 0xb0, 0x81, - 0x92, 0x00, 0x25, 0x00, 0x1c, 0x04, 0x1c, 0x0f, - 0x28, 0x00, 0xd0, 0x01, 0x2f, 0x00, 0xd1, 0x01, - 0x20, 0x00, 0xe0, 0x34, 0x26, 0x00, 0x1c, 0x20, - 0xf0, 0x0f, 0xff, 0x20, 0x28, 0x00, 0xd9, 0x2a, - 0x5d, 0xa0, 0x28, 0x80, 0xdb, 0x03, 0x28, 0x9f, - 0xdc, 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0xff, - 0x9a, 0x00, 0x2a, 0x00, 0xd0, 0x0f, 0x28, 0x87, - 0xd1, 0x01, 0x22, 0xff, 0xe0, 0x00, 0x22, 0x00, - 0x2a, 0x00, 0xd0, 0x10, 0x29, 0x00, 0xd0, 0x0e, - 0x1c, 0x69, 0x04, 0x0a, 0x0c, 0x12, 0x1c, 0x29, - 0x54, 0x78, 0x1c, 0x15, 0xe0, 0x07, 0x29, 0x00, - 0xd0, 0x05, 0x1c, 0x69, 0x04, 0x09, 0x0c, 0x09, - 0x1c, 0x2a, 0x54, 0xb8, 0x1c, 0x0d, 0x1c, 0x70, - 0x04, 0x06, 0x0c, 0x36, 0x1c, 0x20, 0xf0, 0x0f, - 0xfe, 0xf5, 0x42, 0xb0, 0xd8, 0xd4, 0x20, 0x00, - 0x55, 0x78, 0x04, 0x28, 0x14, 0x00, 0xb0, 0x01, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0xb5, 0xf0, 0x04, 0x0d, 0x0c, 0x2d, 0x26, 0x09, - 0x70, 0x06, 0x1c, 0x07, 0x70, 0x7d, 0x24, 0x00, - 0x2d, 0x00, 0xdd, 0x09, 0x20, 0x08, 0xf7, 0xf2, - 0xff, 0x27, 0x19, 0x39, 0x70, 0x88, 0x1c, 0x60, - 0x06, 0x04, 0x0e, 0x24, 0x42, 0xac, 0xdb, 0xf5, - 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x90, 0x04, 0x0c, 0x0c, 0x24, 0x27, 0x00, - 0x2c, 0x00, 0xdd, 0x07, 0x20, 0x08, 0xf7, 0xf2, - 0xff, 0x13, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, - 0x42, 0xa7, 0xdb, 0xf7, 0x20, 0x02, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, 0x04, 0x0c, - 0x0c, 0x24, 0x27, 0x00, 0x2c, 0x00, 0xdd, 0x07, - 0x20, 0x08, 0xf7, 0xf2, 0xff, 0x01, 0x1c, 0x78, - 0x06, 0x07, 0x0e, 0x3f, 0x42, 0xa7, 0xdb, 0xf7, - 0x20, 0x03, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x90, 0x04, 0x0c, 0x0c, 0x24, 0x27, 0x00, - 0x2c, 0x00, 0xdd, 0x07, 0x20, 0x08, 0xf7, 0xf2, - 0xfe, 0xef, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, - 0x42, 0xa7, 0xdb, 0xf7, 0x20, 0x08, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, 0x04, 0x0c, - 0x0c, 0x24, 0x27, 0x00, 0x2c, 0x00, 0xdd, 0x07, - 0x20, 0x08, 0xf7, 0xf2, 0xfe, 0xdd, 0x1c, 0x78, - 0x06, 0x07, 0x0e, 0x3f, 0x42, 0xa7, 0xdb, 0xf7, - 0x20, 0x5d, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf0, 0x04, 0x14, 0x0c, 0x24, 0x20, 0x08, - 0xf7, 0xf2, 0xfe, 0xce, 0x4f, 0x37, 0x00, 0xe3, - 0x19, 0x1c, 0x00, 0xa4, 0x68, 0xf9, 0x19, 0x09, - 0x77, 0x88, 0x20, 0x08, 0x1c, 0x26, 0xf7, 0xf2, - 0xfe, 0xc3, 0x06, 0x05, 0x0e, 0x2d, 0x68, 0xf8, - 0x19, 0x80, 0x68, 0x40, 0x28, 0x00, 0xd0, 0x01, - 0xf7, 0xfc, 0xff, 0x06, 0x1c, 0x68, 0xf7, 0xfc, - 0xfe, 0xdd, 0x68, 0xf9, 0x19, 0x09, 0x60, 0x48, - 0x28, 0x00, 0xd1, 0x0b, 0x26, 0x00, 0x2d, 0x00, - 0xdd, 0x1c, 0x20, 0x08, 0xf7, 0xf2, 0xfe, 0xac, - 0x1c, 0x70, 0x06, 0x06, 0x0e, 0x36, 0x42, 0xae, - 0xdb, 0xf7, 0xe0, 0x13, 0x26, 0x00, 0x2d, 0x00, - 0xdd, 0x0b, 0x20, 0x08, 0xf7, 0xf2, 0xfe, 0xa0, - 0x68, 0xf9, 0x19, 0x09, 0x68, 0x49, 0x55, 0x88, - 0x1c, 0x70, 0x06, 0x06, 0x0e, 0x36, 0x42, 0xae, - 0xdb, 0xf3, 0x21, 0x00, 0x68, 0xf8, 0x19, 0x00, - 0x68, 0x40, 0x55, 0x81, 0x20, 0x08, 0xf7, 0xf2, - 0xfe, 0x8f, 0x06, 0x05, 0x0e, 0x2d, 0x68, 0xf8, - 0x59, 0x00, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xfc, - 0xfe, 0xd3, 0x1c, 0x68, 0xf7, 0xfc, 0xfe, 0xaa, - 0x68, 0xf9, 0x51, 0x08, 0x28, 0x00, 0xd1, 0x0b, - 0x27, 0x00, 0x2d, 0x00, 0xdd, 0x1a, 0x20, 0x08, - 0xf7, 0xf2, 0xfe, 0x7a, 0x1c, 0x78, 0x06, 0x07, - 0x0e, 0x3f, 0x42, 0xaf, 0xdb, 0xf7, 0xe0, 0x11, - 0x26, 0x00, 0x2d, 0x00, 0xdd, 0x0a, 0x20, 0x08, - 0xf7, 0xf2, 0xfe, 0x6e, 0x68, 0xf9, 0x59, 0x09, - 0x55, 0x88, 0x1c, 0x70, 0x06, 0x06, 0x0e, 0x36, - 0x42, 0xae, 0xdb, 0xf4, 0x21, 0x00, 0x68, 0xf8, - 0x59, 0x00, 0x55, 0x81, 0x20, 0x48, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x8f, 0x80, - 0xb5, 0xf0, 0x04, 0x0d, 0x0c, 0x2d, 0x20, 0x18, - 0xf7, 0xf2, 0xfe, 0x56, 0x4f, 0x4e, 0x1d, 0xfc, - 0x34, 0x39, 0x7a, 0xa0, 0x28, 0x00, 0xd0, 0x0e, - 0x28, 0x01, 0xd0, 0x0c, 0x27, 0x00, 0x1e, 0xec, - 0x2c, 0x00, 0xdd, 0x68, 0x20, 0x08, 0xf7, 0xf2, - 0xfe, 0x47, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, - 0x42, 0xbc, 0xdc, 0xf7, 0xe0, 0x84, 0x28, 0x00, - 0xd1, 0x01, 0x21, 0x02, 0xe0, 0x00, 0x21, 0x01, - 0x1c, 0x38, 0xf7, 0xfe, 0xfd, 0x3b, 0x20, 0x08, - 0xf7, 0xf2, 0xfe, 0x36, 0x06, 0x05, 0x0e, 0x2d, - 0x1c, 0x68, 0xf7, 0xfc, 0xfe, 0x57, 0x7a, 0xa1, - 0x00, 0xcb, 0x1a, 0x59, 0x00, 0x89, 0x50, 0x78, - 0x28, 0x00, 0xd1, 0x0b, 0x26, 0x00, 0x2d, 0x00, - 0xdd, 0x29, 0x20, 0x08, 0xf7, 0xf2, 0xfe, 0x24, - 0x1c, 0x70, 0x06, 0x06, 0x0e, 0x36, 0x42, 0xae, - 0xdb, 0xf7, 0xe0, 0x20, 0x26, 0x00, 0x2d, 0x00, - 0xdd, 0x0d, 0x20, 0x08, 0xf7, 0xf2, 0xfe, 0x18, - 0x7a, 0xa1, 0x00, 0xcb, 0x1a, 0x59, 0x00, 0x89, - 0x58, 0x79, 0x55, 0x88, 0x1c, 0x70, 0x06, 0x06, - 0x0e, 0x36, 0x42, 0xae, 0xdb, 0xf1, 0x20, 0x00, - 0x7a, 0xa1, 0x00, 0xcb, 0x1a, 0x59, 0x00, 0x89, - 0x58, 0x79, 0x55, 0x88, 0x7a, 0xa0, 0x00, 0xc3, - 0x1a, 0x18, 0x00, 0x80, 0x58, 0x39, 0x22, 0x00, - 0x1c, 0x08, 0xf7, 0xff, 0xfe, 0x81, 0x20, 0x08, - 0xf7, 0xf2, 0xfd, 0xfa, 0x06, 0x06, 0x0e, 0x36, - 0x1c, 0x70, 0xf7, 0xfc, 0xfe, 0x1b, 0x7a, 0xa1, - 0x00, 0xcb, 0x1a, 0x59, 0x00, 0x89, 0x19, 0xc9, - 0x60, 0x48, 0x28, 0x00, 0xd1, 0x0c, 0x27, 0x00, - 0x2e, 0x00, 0xdd, 0x08, 0x20, 0x08, 0xf7, 0xf2, - 0xfd, 0xe7, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, - 0x42, 0xb7, 0xdb, 0xf7, 0xe0, 0x24, 0xe0, 0x23, - 0x25, 0x00, 0x2e, 0x00, 0xdd, 0x0e, 0x20, 0x08, - 0xf7, 0xf2, 0xfd, 0xda, 0x7a, 0xa1, 0x00, 0xcb, - 0x1a, 0x59, 0x00, 0x89, 0x19, 0xc9, 0x68, 0x49, - 0x55, 0x48, 0x1c, 0x68, 0x06, 0x05, 0x0e, 0x2d, - 0x42, 0xb5, 0xdb, 0xf0, 0x20, 0x00, 0x7a, 0xa1, - 0x00, 0xcb, 0x1a, 0x59, 0x00, 0x89, 0x19, 0xc9, - 0x68, 0x49, 0x55, 0x48, 0x7a, 0xa0, 0x00, 0xc3, - 0x1a, 0x18, 0x00, 0x80, 0x19, 0xc0, 0x68, 0x41, - 0x22, 0x00, 0x1c, 0x08, 0xf7, 0xff, 0xfe, 0x40, - 0x20, 0x4d, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x90, 0x30, 0xb5, 0xf0, 0x1c, 0x07, - 0x20, 0x04, 0xb0, 0x81, 0xf7, 0xf2, 0xfd, 0xb0, - 0x20, 0x04, 0xf7, 0xf2, 0xfd, 0xad, 0x20, 0x18, - 0xf7, 0xf2, 0xfd, 0xaa, 0x20, 0x08, 0xf7, 0xf2, - 0xfd, 0xa7, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x00, - 0x26, 0x00, 0x28, 0x00, 0xdd, 0x2e, 0x20, 0x08, - 0xf7, 0xf2, 0xfd, 0x9e, 0x04, 0x05, 0x0c, 0x2d, - 0x24, 0x00, 0x2d, 0x00, 0xdd, 0x08, 0x20, 0x08, - 0xf7, 0xf2, 0xfd, 0x96, 0x55, 0x38, 0x1c, 0x60, - 0x04, 0x04, 0x0c, 0x24, 0x42, 0xac, 0xdb, 0xf6, - 0x20, 0x20, 0x55, 0x78, 0x19, 0x70, 0x06, 0x06, - 0x0e, 0x36, 0x20, 0x08, 0xf7, 0xf2, 0xfd, 0x88, - 0x04, 0x04, 0x0c, 0x24, 0x25, 0x00, 0x2c, 0x00, - 0xdd, 0x08, 0x20, 0x08, 0xf7, 0xf2, 0xfd, 0x80, - 0x55, 0x78, 0x1c, 0x68, 0x04, 0x05, 0x0c, 0x2d, - 0x42, 0xa5, 0xdb, 0xf6, 0x20, 0x00, 0x55, 0x38, - 0x19, 0x30, 0x06, 0x06, 0x0e, 0x36, 0x98, 0x00, - 0x42, 0x86, 0xdb, 0xd0, 0x20, 0x08, 0xf7, 0xf2, - 0xfd, 0x6f, 0x04, 0x05, 0x0c, 0x2d, 0x24, 0x00, - 0x2d, 0x00, 0xdd, 0x08, 0x20, 0x08, 0xf7, 0xf2, - 0xfd, 0x67, 0x55, 0x38, 0x1c, 0x60, 0x06, 0x04, - 0x0e, 0x24, 0x42, 0xac, 0xdb, 0xf6, 0x20, 0x00, - 0x55, 0x78, 0x20, 0x4e, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x04, 0x0c, - 0x0c, 0x24, 0x26, 0x00, 0x2c, 0x00, 0xdd, 0x24, - 0x4d, 0x14, 0x20, 0x18, 0xf7, 0xf2, 0xfd, 0x50, - 0x68, 0x29, 0x42, 0x88, 0xd1, 0x12, 0x20, 0x06, - 0xf7, 0xf2, 0xfd, 0x4a, 0x20, 0x01, 0xf7, 0xf2, - 0xfd, 0x47, 0x20, 0x01, 0xf7, 0xf2, 0xfd, 0x44, - 0x20, 0x10, 0xf7, 0xf2, 0xfd, 0x41, 0x20, 0x28, - 0xf7, 0xf2, 0xfd, 0x3e, 0x20, 0x10, 0xf7, 0xf2, - 0xfd, 0x3b, 0xe0, 0x08, 0x27, 0x00, 0x20, 0x08, - 0xf7, 0xf2, 0xfd, 0x36, 0x1c, 0x78, 0x04, 0x07, - 0x0c, 0x3f, 0x2f, 0x0a, 0xdb, 0xf7, 0x42, 0xa6, - 0xdb, 0xdb, 0x20, 0x58, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0xd0, - 0xb5, 0xb0, 0x1c, 0x07, 0x04, 0x08, 0x0c, 0x00, - 0x24, 0x00, 0x08, 0x85, 0x2d, 0x00, 0xdd, 0x17, - 0x2c, 0x00, 0xd1, 0x0d, 0x20, 0x08, 0xf7, 0xf2, - 0xfd, 0x1b, 0x70, 0x38, 0x20, 0x08, 0xf7, 0xf2, - 0xfd, 0x17, 0x70, 0x78, 0x20, 0x08, 0xf7, 0xf2, - 0xfd, 0x13, 0x70, 0xb8, 0x20, 0x08, 0xe0, 0x00, - 0x20, 0x20, 0xf7, 0xf2, 0xfd, 0x0d, 0x1c, 0x60, - 0x06, 0x04, 0x0e, 0x24, 0x42, 0xa5, 0xdc, 0xe7, - 0x20, 0x0a, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x90, 0x04, 0x0c, 0x0c, 0x24, 0x27, 0x00, - 0x2c, 0x00, 0xdd, 0x07, 0x20, 0x08, 0xf7, 0xf2, - 0xfc, 0xfb, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, - 0x42, 0xa7, 0xdb, 0xf7, 0x20, 0x56, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, 0x04, 0x0c, - 0x0c, 0x24, 0x27, 0x00, 0x2c, 0x00, 0xdd, 0x07, - 0x20, 0x08, 0xf7, 0xf2, 0xfc, 0xe9, 0x1c, 0x78, - 0x06, 0x07, 0x0e, 0x3f, 0x42, 0xa7, 0xdb, 0xf7, - 0x20, 0xff, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf7, 0x06, 0x0e, 0x0e, 0x36, 0xb0, 0x83, - 0xf0, 0x0c, 0xfc, 0x22, 0x1c, 0x05, 0xd0, 0x05, - 0x00, 0xa8, 0x30, 0x0c, 0xf7, 0xf7, 0xf8, 0x5c, - 0x1c, 0x04, 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x22, - 0x95, 0x01, 0x1d, 0xe0, 0x30, 0x05, 0x90, 0x02, - 0x46, 0x6a, 0xb4, 0x04, 0x25, 0x00, 0x98, 0x04, - 0x1c, 0x31, 0xaa, 0x02, 0x1c, 0x2b, 0x1c, 0x27, - 0xf0, 0x0c, 0xf9, 0xc8, 0xb0, 0x01, 0x98, 0x00, - 0x60, 0x38, 0x28, 0x00, 0xd0, 0x0b, 0x99, 0x05, - 0xf0, 0x0c, 0xfb, 0x9e, 0x28, 0x00, 0xd1, 0x02, - 0x60, 0x7d, 0x1c, 0x38, 0xe0, 0x07, 0x68, 0x38, - 0xa9, 0x01, 0xf0, 0x0c, 0xf9, 0xe7, 0x1c, 0x20, - 0xf7, 0xf7, 0xf8, 0x58, 0x1c, 0x28, 0xb0, 0x03, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xff, 0x9c, 0x0b, 0x9d, 0x09, 0x9e, 0x0a, - 0xb0, 0x8c, 0x4a, 0x78, 0x92, 0x0b, 0x49, 0x78, - 0x91, 0x0a, 0x2c, 0x00, 0xd1, 0x0b, 0x20, 0x00, - 0x00, 0x81, 0x9a, 0x0b, 0x58, 0x51, 0x29, 0x00, - 0xd1, 0x01, 0x1c, 0x04, 0xe0, 0x19, 0x30, 0x01, - 0x28, 0x08, 0xdb, 0xf5, 0xe0, 0x15, 0x2c, 0x08, - 0xd8, 0x07, 0x3c, 0x01, 0x00, 0xa0, 0x9a, 0x0b, - 0x58, 0x10, 0x28, 0x00, 0xd0, 0x0d, 0x20, 0x00, - 0xe0, 0xcf, 0x23, 0x20, 0x99, 0x0a, 0x5e, 0xcc, - 0x1c, 0x60, 0x84, 0x08, 0x99, 0x0a, 0x5e, 0xc8, - 0x28, 0x00, 0xd1, 0x02, 0x20, 0x64, 0x99, 0x0a, - 0x84, 0x08, 0x2e, 0x00, 0xd0, 0x03, 0x2e, 0x01, - 0xd1, 0x03, 0x22, 0x01, 0xe0, 0x02, 0x22, 0x00, - 0xe0, 0x00, 0x22, 0x03, 0x92, 0x01, 0x1c, 0x28, - 0xf0, 0x08, 0xfd, 0xd3, 0x90, 0x00, 0x00, 0x80, - 0x30, 0x80, 0xf7, 0xf6, 0xff, 0xf1, 0x1c, 0x07, - 0xd0, 0xdd, 0x98, 0x00, 0x1d, 0xc2, 0x32, 0x79, - 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x0f, 0xfc, 0x9e, - 0x98, 0x00, 0x60, 0xf8, 0x1d, 0xf8, 0x30, 0x79, - 0x61, 0x38, 0x98, 0x0e, 0x86, 0x78, 0x98, 0x0f, - 0x86, 0xb8, 0x98, 0x0c, 0x90, 0x02, 0x99, 0x0d, - 0x91, 0x03, 0x9a, 0x0e, 0x18, 0x80, 0x38, 0x01, - 0x90, 0x04, 0x98, 0x0f, 0x18, 0x08, 0x38, 0x01, - 0x90, 0x05, 0xa8, 0x02, 0x1c, 0x29, 0xf0, 0x08, - 0xfd, 0xb3, 0x61, 0x78, 0x9a, 0x01, 0x2a, 0x00, - 0xd0, 0x0e, 0x2a, 0x01, 0xd1, 0x1e, 0x00, 0x80, - 0xf7, 0xf6, 0xff, 0xc6, 0x61, 0xb8, 0x28, 0x00, - 0xd0, 0x04, 0x69, 0x79, 0x00, 0x8a, 0x21, 0x00, - 0xf0, 0x0f, 0xfc, 0x74, 0x20, 0x01, 0xe0, 0x0b, - 0x00, 0x80, 0xf7, 0xf7, 0xf8, 0x01, 0x61, 0xb8, - 0x28, 0x00, 0xd0, 0x04, 0x69, 0x79, 0x00, 0x8a, - 0x21, 0x00, 0xf0, 0x0f, 0xfc, 0x67, 0x20, 0x00, - 0x86, 0x38, 0x23, 0x01, 0x03, 0xdb, 0x69, 0xf8, - 0x43, 0x18, 0xe0, 0x0d, 0x61, 0xbe, 0x0e, 0x36, - 0x06, 0x36, 0x23, 0x0d, 0x06, 0x9b, 0x42, 0xde, - 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x01, - 0x86, 0x38, 0x69, 0xf8, 0x4b, 0x33, 0x40, 0x18, - 0x61, 0xf8, 0x69, 0xb8, 0x28, 0x00, 0xd1, 0x06, - 0x69, 0x78, 0x28, 0x00, 0xd0, 0x03, 0x1c, 0x38, - 0xf7, 0xf6, 0xff, 0xb4, 0xe7, 0x7f, 0x68, 0xf8, - 0x90, 0x06, 0x69, 0x38, 0x90, 0x07, 0x69, 0x78, - 0x90, 0x08, 0x69, 0xb8, 0x90, 0x09, 0xa8, 0x02, - 0x1c, 0x21, 0x1d, 0xfa, 0x32, 0x01, 0xb4, 0x07, - 0x1c, 0x2a, 0xb4, 0x04, 0x20, 0x00, 0x9a, 0x05, - 0xa9, 0x0a, 0xab, 0x0c, 0xf0, 0x03, 0xf8, 0x8a, - 0xb0, 0x04, 0x28, 0x00, 0xd0, 0x03, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x5f, 0xe7, 0x63, 0x2d, 0x00, - 0xd0, 0x09, 0x2d, 0x01, 0xd0, 0x07, 0x2d, 0x02, - 0xd0, 0x05, 0x2d, 0x03, 0xd0, 0x03, 0x23, 0x02, - 0x69, 0xf8, 0x43, 0x18, 0x61, 0xf8, 0x85, 0xfc, - 0x2c, 0x08, 0xd2, 0x02, 0x00, 0xa0, 0x9a, 0x0b, - 0x50, 0x17, 0x20, 0x01, 0x24, 0x00, 0x63, 0xf8, - 0x63, 0xbc, 0x85, 0xbd, 0x21, 0x01, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0x0c, 0x99, 0x0a, 0x8c, 0x88, - 0x06, 0x01, 0x0e, 0x09, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0xbe, 0x22, 0x00, 0x21, 0x00, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x93, 0x98, 0x18, 0x60, 0x38, - 0x98, 0x18, 0x28, 0x00, 0xd0, 0x06, 0x22, 0x00, - 0x21, 0x03, 0x1c, 0x23, 0x9c, 0x18, 0x1c, 0x38, - 0xf0, 0x0f, 0xfa, 0xaa, 0x68, 0xb8, 0x60, 0x78, - 0x1c, 0x38, 0xb0, 0x0c, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0xdc, - 0x2e, 0x08, 0x1a, 0xdc, 0xff, 0xff, 0x7f, 0xff, - 0xb5, 0x80, 0x1c, 0x07, 0xb0, 0x82, 0x28, 0x00, - 0xd0, 0x13, 0x68, 0x78, 0x28, 0x00, 0xd1, 0x10, - 0x68, 0xb8, 0x90, 0x00, 0x1d, 0xf8, 0x30, 0x05, - 0x90, 0x01, 0x46, 0x69, 0x68, 0x38, 0xf0, 0x0c, - 0xf8, 0xd1, 0x22, 0x0c, 0x21, 0x00, 0x1c, 0x38, - 0xf0, 0x0f, 0xfb, 0xd4, 0x1c, 0x38, 0xf7, 0xf6, - 0xff, 0x3d, 0xb0, 0x02, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x90, 0x1c, 0x07, 0xb0, 0x84, - 0x28, 0x00, 0xd1, 0x03, 0xb0, 0x04, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x23, 0x00, - 0x49, 0x1d, 0x00, 0x82, 0x58, 0x8c, 0x42, 0xbc, - 0xd1, 0x00, 0x50, 0x8b, 0x30, 0x01, 0x28, 0x08, - 0xdb, 0xf7, 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x00, - 0xf8, 0xbc, 0x68, 0xf8, 0x90, 0x00, 0x69, 0x38, - 0x90, 0x01, 0x69, 0x78, 0x90, 0x02, 0x69, 0xb8, - 0x90, 0x03, 0x46, 0x68, 0x1d, 0xc2, 0x32, 0x01, - 0x46, 0x69, 0x68, 0xb8, 0xf0, 0x03, 0xfb, 0x0e, - 0x6a, 0x38, 0x28, 0x00, 0xd0, 0x03, 0x68, 0x41, - 0x39, 0x01, 0x60, 0x41, 0x30, 0x04, 0x69, 0xf8, - 0x0c, 0x00, 0xd3, 0x0c, 0x23, 0x30, 0x5e, 0xf8, - 0x28, 0x00, 0xd1, 0x03, 0x69, 0xb8, 0xf7, 0xf6, - 0xff, 0x31, 0xe0, 0x04, 0x28, 0x01, 0xd1, 0x02, - 0x69, 0xb8, 0xf7, 0xf6, 0xfe, 0xfb, 0x22, 0x80, - 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x0f, 0xfb, 0x8a, - 0x1c, 0x38, 0xf7, 0xf6, 0xfe, 0xf3, 0xe7, 0xbd, - 0x2e, 0x08, 0x1a, 0xdc, 0x28, 0x00, 0xd0, 0x08, - 0x28, 0x01, 0xd0, 0x08, 0x28, 0x02, 0xd0, 0x08, - 0x28, 0x03, 0xd1, 0x08, 0x20, 0xff, 0x30, 0x01, - 0x47, 0x70, 0x20, 0x02, 0x47, 0x70, 0x20, 0x04, - 0x47, 0x70, 0x20, 0x10, 0x47, 0x70, 0x20, 0x00, - 0x47, 0x70, 0xb5, 0x90, 0x1c, 0x07, 0x06, 0x08, - 0x0e, 0x00, 0x06, 0x14, 0x0e, 0x24, 0x28, 0x00, - 0xd0, 0x0a, 0x21, 0x03, 0x68, 0xb8, 0xf0, 0x04, - 0xfc, 0x15, 0x68, 0xb8, 0x1c, 0x21, 0xf0, 0x04, - 0xfc, 0xbd, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x21, 0x00, 0x68, 0xb8, 0xf0, 0x04, 0xfc, 0x0a, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, - 0x06, 0x09, 0xd0, 0x02, 0x68, 0x80, 0x21, 0x02, - 0xe0, 0x01, 0x68, 0x80, 0x21, 0x00, 0xf0, 0x04, - 0xfb, 0xfd, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, - 0x06, 0x09, 0x0e, 0x09, 0x28, 0x00, 0xd0, 0x02, - 0x68, 0x80, 0xf0, 0x04, 0xfe, 0x03, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0xb0, 0x23, 0x05, 0x43, 0x18, - 0x4d, 0x08, 0x84, 0xa8, 0x27, 0x00, 0x4c, 0x08, - 0x00, 0xb8, 0x58, 0x20, 0x8c, 0xa9, 0x06, 0x09, - 0x0e, 0x09, 0xf7, 0xff, 0xff, 0xe8, 0x37, 0x01, - 0x2f, 0x08, 0xdb, 0xf5, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0xdc, - 0x2e, 0x08, 0x1a, 0xdc, 0x48, 0x01, 0x23, 0x24, - 0x5e, 0xc0, 0x47, 0x70, 0x2e, 0x08, 0x1a, 0xdc, - 0xb5, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x28, 0x00, - 0xd0, 0x15, 0x6a, 0x20, 0x28, 0x00, 0xd0, 0x06, - 0x42, 0xb8, 0xd0, 0x10, 0x68, 0x41, 0x39, 0x01, - 0x60, 0x41, 0x20, 0x00, 0x62, 0x20, 0x2f, 0x00, - 0xd0, 0x09, 0x68, 0xa0, 0x68, 0x39, 0xf0, 0x0c, - 0xf8, 0x0f, 0x28, 0x00, 0xd1, 0x03, 0x62, 0x27, - 0x68, 0x78, 0x30, 0x01, 0x60, 0x78, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, 0x06, 0x09, - 0xd0, 0x01, 0x21, 0x01, 0xe0, 0x00, 0x21, 0x00, - 0x68, 0x80, 0xf0, 0x04, 0xfd, 0x03, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x90, 0x1c, 0x07, 0x1c, 0x0c, - 0xd0, 0x01, 0x21, 0x01, 0xe0, 0x00, 0x21, 0x00, - 0x68, 0xb8, 0xf0, 0x04, 0xf8, 0x9b, 0x2c, 0x00, - 0xd0, 0x03, 0x23, 0x01, 0x69, 0xf8, 0x43, 0x18, - 0xe0, 0x02, 0x69, 0xf8, 0x08, 0x40, 0x00, 0x40, - 0x61, 0xf8, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x01, 0x21, 0x07, 0x07, 0x09, 0x63, 0x88, - 0x47, 0x70, 0x00, 0x00, 0xb5, 0x90, 0x9c, 0x03, - 0x9f, 0x04, 0xb0, 0x85, 0x91, 0x00, 0x92, 0x01, - 0x93, 0x02, 0x94, 0x03, 0x97, 0x04, 0x68, 0x80, - 0x46, 0x69, 0xf0, 0x0a, 0xff, 0x5f, 0xb0, 0x05, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, - 0xb0, 0x86, 0x98, 0x06, 0x6a, 0x40, 0x68, 0xc3, - 0x93, 0x05, 0x98, 0x06, 0x6b, 0xc0, 0x01, 0x80, - 0x06, 0x05, 0x0e, 0x2d, 0x95, 0x00, 0x68, 0x18, - 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, 0x01, 0x40, - 0x08, 0xc0, 0x90, 0x04, 0x99, 0x07, 0x68, 0x48, - 0x99, 0x04, 0x43, 0x48, 0x99, 0x07, 0x68, 0x09, - 0x08, 0xc9, 0x18, 0x0f, 0x97, 0x03, 0x21, 0x00, - 0x91, 0x02, 0x9b, 0x05, 0x68, 0x58, 0x28, 0x00, - 0xdd, 0x5e, 0x23, 0x32, 0x98, 0x06, 0x5e, 0xc0, - 0x9b, 0x09, 0x43, 0x58, 0x9a, 0x08, 0x18, 0x81, - 0x1c, 0x08, 0xd5, 0x00, 0x30, 0x03, 0x10, 0x80, - 0x29, 0x00, 0xda, 0x04, 0x42, 0x49, 0x07, 0x89, - 0x0f, 0x89, 0x42, 0x49, 0xe0, 0x01, 0x07, 0x89, - 0x0f, 0x89, 0x00, 0x4a, 0x9d, 0x00, 0x41, 0x15, - 0x1c, 0x2b, 0x06, 0x2d, 0x0e, 0x2d, 0x27, 0xc0, - 0x40, 0xd7, 0x06, 0x3a, 0x0e, 0x12, 0x9b, 0x06, - 0x69, 0x9b, 0x18, 0x18, 0x9b, 0x05, 0x9f, 0x03, - 0x19, 0xdb, 0x33, 0x88, 0x78, 0x1f, 0x33, 0x01, - 0x93, 0x01, 0x24, 0x00, 0x9b, 0x07, 0x68, 0x9b, - 0x2b, 0x00, 0xd9, 0x23, 0x0a, 0x3b, 0xd3, 0x05, - 0x78, 0x03, 0x43, 0x93, 0x70, 0x03, 0x78, 0x03, - 0x43, 0x2b, 0x70, 0x03, 0x31, 0x01, 0x29, 0x03, - 0xdd, 0x04, 0x22, 0xc0, 0x21, 0x00, 0x9d, 0x00, - 0x30, 0x01, 0xe0, 0x05, 0x10, 0x92, 0x06, 0x12, - 0x0e, 0x12, 0x10, 0xab, 0x06, 0x1d, 0x0e, 0x2d, - 0x00, 0x7b, 0x06, 0x1f, 0x0e, 0x3f, 0x34, 0x01, - 0x07, 0x63, 0xd1, 0x03, 0x9b, 0x01, 0x78, 0x1f, - 0x33, 0x01, 0x93, 0x01, 0x9b, 0x07, 0x68, 0x9b, - 0x42, 0xa3, 0xd8, 0xdb, 0x98, 0x04, 0x9f, 0x03, - 0x18, 0x3f, 0x97, 0x03, 0x9b, 0x09, 0x33, 0x01, - 0x93, 0x09, 0x99, 0x02, 0x31, 0x01, 0x91, 0x02, - 0x9b, 0x05, 0x68, 0x58, 0x42, 0x88, 0xdc, 0xa0, - 0xb0, 0x06, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0xff, 0xb0, 0x86, 0x98, 0x06, - 0x6a, 0x40, 0x68, 0xc3, 0x93, 0x05, 0x98, 0x06, - 0x6b, 0xc0, 0x07, 0x06, 0x0f, 0x36, 0x96, 0x00, - 0x01, 0x30, 0x06, 0x06, 0x0e, 0x36, 0x96, 0x01, - 0x68, 0x18, 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, - 0x01, 0x40, 0x08, 0xc0, 0x90, 0x04, 0x68, 0x48, - 0x9a, 0x04, 0x43, 0x50, 0x68, 0x0a, 0x08, 0xd2, - 0x18, 0x17, 0x97, 0x03, 0x22, 0x00, 0x92, 0x02, - 0x9b, 0x05, 0x68, 0x58, 0x28, 0x00, 0xdd, 0x48, - 0x23, 0x32, 0x98, 0x06, 0x5e, 0xc0, 0x9b, 0x09, - 0x43, 0x58, 0x9a, 0x08, 0x18, 0x82, 0x1c, 0x10, - 0xd5, 0x00, 0x30, 0x01, 0x10, 0x40, 0x9b, 0x06, - 0x69, 0x9b, 0x18, 0x18, 0x9b, 0x05, 0x9f, 0x03, - 0x19, 0xdb, 0x1d, 0xdd, 0x35, 0x81, 0x78, 0x2f, - 0x24, 0x00, 0x68, 0x8b, 0x35, 0x01, 0x2b, 0x00, - 0xd9, 0x21, 0x0a, 0x3b, 0xd3, 0x10, 0x08, 0x53, - 0xd3, 0x06, 0x78, 0x06, 0x23, 0xf0, 0x40, 0x33, - 0x70, 0x03, 0x78, 0x03, 0x9e, 0x00, 0xe0, 0x05, - 0x78, 0x03, 0x07, 0x1b, 0x0f, 0x1b, 0x70, 0x03, - 0x78, 0x03, 0x9e, 0x01, 0x43, 0x33, 0x70, 0x03, - 0x32, 0x01, 0x08, 0x53, 0xd2, 0x00, 0x30, 0x01, - 0x00, 0x7b, 0x06, 0x1f, 0x0e, 0x3f, 0x34, 0x01, - 0x07, 0x63, 0xd1, 0x01, 0x78, 0x2f, 0x35, 0x01, - 0x68, 0x8b, 0x42, 0xa3, 0xd8, 0xdd, 0x98, 0x04, - 0x9f, 0x03, 0x18, 0x3f, 0x97, 0x03, 0x9b, 0x09, - 0x33, 0x01, 0x93, 0x09, 0x9a, 0x02, 0x32, 0x01, - 0x92, 0x02, 0x9b, 0x05, 0x68, 0x58, 0x42, 0x90, - 0xdc, 0xb6, 0xb0, 0x06, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0xb0, 0x83, - 0x98, 0x03, 0x6a, 0x40, 0x68, 0xc4, 0x98, 0x03, - 0x6b, 0xc0, 0x06, 0x03, 0x0e, 0x1b, 0x93, 0x00, - 0x68, 0x20, 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, - 0x01, 0x40, 0x08, 0xc2, 0x92, 0x02, 0x68, 0x48, - 0x43, 0x50, 0x68, 0x0a, 0x08, 0xd2, 0x18, 0x10, - 0x90, 0x01, 0x25, 0x00, 0x68, 0x60, 0x28, 0x00, - 0xdd, 0x35, 0x23, 0x32, 0x98, 0x03, 0x5e, 0xc0, - 0x9b, 0x06, 0x43, 0x58, 0x9a, 0x05, 0x18, 0x80, - 0x9a, 0x03, 0x69, 0x92, 0x18, 0x17, 0x98, 0x01, - 0x18, 0x20, 0x1d, 0xc6, 0x36, 0x81, 0x78, 0x32, - 0x20, 0x00, 0x68, 0x8b, 0x36, 0x01, 0x2b, 0x00, - 0xd9, 0x16, 0x0a, 0x13, 0xd3, 0x01, 0x9b, 0x00, - 0x70, 0x3b, 0x00, 0x52, 0x06, 0x12, 0x0e, 0x12, - 0xd1, 0x09, 0x1d, 0xc2, 0x32, 0x01, 0x08, 0xd2, - 0x00, 0xd2, 0x1a, 0x10, 0x19, 0xc7, 0x1c, 0x10, - 0x78, 0x32, 0x36, 0x01, 0xe0, 0x01, 0x30, 0x01, - 0x37, 0x01, 0x68, 0x8b, 0x42, 0x83, 0xd8, 0xe8, - 0x98, 0x01, 0x9a, 0x02, 0x18, 0x80, 0x90, 0x01, - 0x9b, 0x06, 0x33, 0x01, 0x93, 0x06, 0x68, 0x60, - 0x35, 0x01, 0x42, 0xa8, 0xdc, 0xc9, 0xb0, 0x03, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xff, 0x23, 0x2c, 0x1c, 0x07, 0x5e, 0xc0, - 0xb0, 0x85, 0x28, 0x01, 0xd0, 0x0f, 0x28, 0x02, - 0xd0, 0x07, 0x28, 0x03, 0xd1, 0x11, 0xab, 0x06, - 0xcb, 0x0e, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0x9a, - 0xe0, 0x5d, 0xab, 0x06, 0xcb, 0x0e, 0x1c, 0x38, - 0xf7, 0xff, 0xff, 0x23, 0xe0, 0x57, 0xab, 0x06, - 0xcb, 0x0e, 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0x97, - 0xe0, 0x51, 0x6a, 0x78, 0x68, 0xc0, 0x90, 0x04, - 0x68, 0x00, 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, - 0x01, 0x40, 0x08, 0xc0, 0x90, 0x03, 0x99, 0x06, - 0x68, 0x48, 0x99, 0x03, 0x43, 0x48, 0x99, 0x06, - 0x68, 0x09, 0x08, 0xc9, 0x18, 0x09, 0x91, 0x02, - 0x21, 0x00, 0x91, 0x01, 0x98, 0x04, 0x68, 0x40, - 0x28, 0x00, 0xdd, 0x38, 0x98, 0x04, 0x99, 0x02, - 0x9e, 0x07, 0x18, 0x40, 0x30, 0x88, 0x78, 0x05, - 0x30, 0x01, 0x90, 0x00, 0x24, 0x00, 0x99, 0x06, - 0x68, 0x88, 0x28, 0x00, 0xd9, 0x1d, 0x0a, 0x28, - 0xd3, 0x05, 0x68, 0xb8, 0x6b, 0xfb, 0x9a, 0x08, - 0x1c, 0x31, 0xf0, 0x0a, 0xfb, 0x7d, 0x00, 0x68, - 0x06, 0x05, 0x0e, 0x2d, 0xd1, 0x0b, 0x1d, 0xe0, - 0x30, 0x01, 0x08, 0xc0, 0x00, 0xc0, 0x1b, 0x01, - 0x19, 0x8e, 0x1c, 0x04, 0x98, 0x00, 0x78, 0x05, - 0x30, 0x01, 0x90, 0x00, 0xe0, 0x01, 0x34, 0x01, - 0x36, 0x01, 0x99, 0x06, 0x68, 0x88, 0x42, 0xa0, - 0xd8, 0xe1, 0x98, 0x03, 0x99, 0x02, 0x18, 0x09, - 0x91, 0x02, 0x9a, 0x08, 0x32, 0x01, 0x92, 0x08, - 0x99, 0x01, 0x31, 0x01, 0x91, 0x01, 0x98, 0x04, - 0x68, 0x40, 0x42, 0x88, 0xdc, 0xc6, 0xb0, 0x05, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x90, 0x1c, 0x07, 0x20, 0x00, 0xb0, 0x88, - 0xf0, 0x08, 0xfa, 0x2b, 0x90, 0x06, 0x00, 0x80, - 0x30, 0x10, 0x00, 0x80, 0xf7, 0xf6, 0xfc, 0x48, - 0x1c, 0x04, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x03, - 0xb0, 0x08, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x1d, 0xe1, 0x31, 0x09, 0x91, 0x07, 0x49, 0x19, - 0x68, 0x4b, 0x1c, 0x5a, 0x60, 0x4a, 0x60, 0x63, - 0x60, 0xe7, 0x68, 0x39, 0x01, 0x09, 0x31, 0x1f, - 0x09, 0x49, 0x01, 0x49, 0x90, 0x00, 0x90, 0x01, - 0x1e, 0x48, 0x90, 0x02, 0x68, 0xe0, 0x68, 0x40, - 0x00, 0xc0, 0x38, 0x01, 0x90, 0x03, 0x46, 0x68, - 0x21, 0x00, 0xf0, 0x08, 0xfa, 0x09, 0x60, 0xa0, - 0x68, 0xe0, 0x30, 0x88, 0x90, 0x05, 0x68, 0xa0, - 0x90, 0x04, 0x46, 0x68, 0x1c, 0x22, 0x68, 0x61, - 0xb4, 0x07, 0x22, 0x00, 0xb4, 0x04, 0x22, 0x01, - 0x20, 0x00, 0xa9, 0x0a, 0xab, 0x08, 0xf0, 0x02, - 0xfd, 0x21, 0xb0, 0x04, 0x28, 0x00, 0xd0, 0x03, - 0x1c, 0x20, 0xf7, 0xf6, 0xfc, 0x2f, 0x24, 0x00, - 0x1c, 0x20, 0xe7, 0xc5, 0x2e, 0x08, 0x1b, 0x04, - 0xb5, 0x80, 0x1c, 0x07, 0xb0, 0x84, 0x28, 0x00, - 0xd0, 0x1a, 0x20, 0x00, 0xf0, 0x08, 0xf9, 0xdd, - 0x90, 0x00, 0x1d, 0xf8, 0x30, 0x09, 0x90, 0x01, - 0x68, 0xb8, 0x90, 0x02, 0x68, 0xf8, 0x30, 0x88, - 0x90, 0x03, 0x46, 0x68, 0x46, 0x69, 0x1d, 0xc2, - 0x32, 0x01, 0x68, 0x38, 0xf0, 0x03, 0xf8, 0x0e, - 0x22, 0x10, 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x0f, - 0xf8, 0xa1, 0x1c, 0x38, 0xf7, 0xf6, 0xfc, 0x0a, - 0xb0, 0x04, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xff, 0x23, 0x32, 0x1c, 0x07, 0x5e, 0xc0, - 0x1c, 0x0c, 0x1c, 0x15, 0xb0, 0x8a, 0x42, 0x90, - 0xdd, 0x63, 0x6a, 0x78, 0x28, 0x00, 0xd1, 0x0b, - 0x4e, 0x38, 0x68, 0x30, 0x28, 0x00, 0xd1, 0x05, - 0x48, 0x37, 0xf7, 0xff, 0xff, 0x7d, 0x60, 0x30, - 0x28, 0x00, 0xd0, 0x61, 0x68, 0x30, 0x62, 0x78, - 0x23, 0x01, 0x6b, 0xb8, 0x6a, 0x79, 0x42, 0xd8, - 0xd1, 0x01, 0x22, 0x01, 0xe0, 0x00, 0x22, 0x00, - 0x92, 0x01, 0x68, 0xc8, 0x90, 0x00, 0x68, 0x00, - 0x90, 0x04, 0x98, 0x00, 0x68, 0x40, 0x90, 0x03, - 0x6b, 0xf8, 0x28, 0x01, 0xd1, 0x01, 0x90, 0x02, - 0xe0, 0x11, 0x20, 0x00, 0x90, 0x02, 0x9a, 0x01, - 0x2a, 0x00, 0xd1, 0x0c, 0x1c, 0x20, 0xf0, 0x00, - 0xf8, 0x57, 0x6b, 0xba, 0x99, 0x03, 0xb4, 0x06, - 0x1c, 0x03, 0x9a, 0x0f, 0x1c, 0x38, 0x1c, 0x29, - 0xf7, 0xff, 0xfd, 0x80, 0xb0, 0x02, 0x99, 0x03, - 0x91, 0x08, 0x20, 0x01, 0x90, 0x09, 0x78, 0x20, - 0x28, 0x00, 0xd0, 0x31, 0x23, 0x32, 0x5e, 0xf8, - 0x42, 0xa8, 0xdd, 0x22, 0x78, 0x20, 0x99, 0x00, - 0xf0, 0x00, 0xf8, 0x34, 0x90, 0x07, 0x1c, 0x06, - 0x78, 0x20, 0x07, 0x00, 0x0f, 0x00, 0x99, 0x04, - 0x43, 0x48, 0x90, 0x05, 0x78, 0x20, 0x09, 0x00, - 0x07, 0x40, 0x0f, 0x40, 0x99, 0x03, 0x43, 0x48, - 0x90, 0x06, 0x98, 0x02, 0x34, 0x01, 0x28, 0x00, - 0xd0, 0x0c, 0x99, 0x0d, 0x9a, 0x01, 0xb4, 0x06, - 0x6a, 0x78, 0x68, 0xb9, 0x68, 0x00, 0xaa, 0x07, - 0x1c, 0x2b, 0xf0, 0x0a, 0xfd, 0x81, 0xb0, 0x02, - 0xe0, 0x06, 0xe0, 0x09, 0x9b, 0x0d, 0x1c, 0x38, - 0xa9, 0x05, 0x1c, 0x2a, 0xf7, 0xff, 0xfe, 0xa8, - 0x19, 0xad, 0x78, 0x20, 0x28, 0x00, 0xd1, 0xcd, - 0xb0, 0x0a, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1b, 0x04, - 0x2e, 0x03, 0x45, 0xb8, 0x29, 0x00, 0xd1, 0x00, - 0x49, 0x02, 0x06, 0x40, 0x0e, 0x40, 0x18, 0x40, - 0x7a, 0x00, 0x47, 0x70, 0x2e, 0x03, 0x45, 0xb8, - 0xb5, 0xb0, 0x1c, 0x04, 0x1c, 0x0f, 0xd1, 0x08, - 0x4f, 0x0c, 0x68, 0x38, 0x28, 0x00, 0xd1, 0x03, - 0x48, 0x0b, 0xf7, 0xff, 0xfe, 0xf9, 0x60, 0x38, - 0x68, 0x3f, 0x25, 0x00, 0x78, 0x20, 0x28, 0x00, - 0xd0, 0x08, 0x78, 0x20, 0x68, 0xf9, 0x34, 0x01, - 0xf7, 0xff, 0xff, 0xe0, 0x19, 0x45, 0x78, 0x20, - 0x28, 0x00, 0xd1, 0xf6, 0x1c, 0x28, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1b, 0x04, - 0x2e, 0x03, 0x45, 0xb8, 0xb5, 0x80, 0x28, 0x00, - 0xd1, 0x08, 0x4f, 0x09, 0x68, 0x38, 0x28, 0x00, - 0xd1, 0x03, 0x48, 0x08, 0xf7, 0xff, 0xfe, 0xd8, - 0x60, 0x38, 0x68, 0x38, 0x28, 0x00, 0xd1, 0x02, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xc0, - 0x68, 0x40, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x1b, 0x04, 0x2e, 0x03, 0x45, 0xb8, - 0xb5, 0xf0, 0xb0, 0x83, 0x4a, 0x18, 0x21, 0x00, - 0x20, 0xff, 0x30, 0x01, 0xf7, 0xff, 0xfa, 0xac, - 0x49, 0x16, 0x27, 0x00, 0x64, 0x08, 0x49, 0x16, - 0x91, 0x02, 0x49, 0x16, 0x91, 0x01, 0x49, 0x16, - 0x91, 0x00, 0x4c, 0x16, 0x01, 0x38, 0x06, 0x01, - 0x0e, 0x09, 0x20, 0x10, 0x1c, 0x22, 0x1c, 0x0d, - 0xf7, 0xff, 0xfa, 0x9a, 0x00, 0xbe, 0x99, 0x02, - 0x51, 0x88, 0x20, 0x04, 0x1c, 0x29, 0x1c, 0x22, - 0xf7, 0xff, 0xfa, 0x92, 0x99, 0x01, 0x51, 0x88, - 0x20, 0x02, 0x1c, 0x29, 0x1c, 0x22, 0xf7, 0xff, - 0xfa, 0x8b, 0x99, 0x00, 0x51, 0x88, 0x37, 0x01, - 0x2f, 0x08, 0xdb, 0xe3, 0x20, 0x00, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x1b, 0x4c, 0x2e, 0x08, 0x1d, 0x0c, - 0x2e, 0x08, 0x92, 0xbc, 0x2e, 0x08, 0x92, 0xdc, - 0x2e, 0x08, 0x92, 0xfc, 0x2e, 0x08, 0x1b, 0x0c, - 0xb5, 0x80, 0x48, 0x0c, 0xf7, 0xff, 0xfe, 0x84, - 0x4f, 0x0b, 0x64, 0x78, 0x48, 0x0b, 0xf7, 0xff, - 0xfe, 0x7f, 0x64, 0xb8, 0x48, 0x0a, 0xf7, 0xff, - 0xfe, 0x7b, 0x64, 0xf8, 0x20, 0x00, 0x22, 0x00, - 0x49, 0x08, 0x00, 0x83, 0x50, 0xca, 0x30, 0x01, - 0x28, 0x10, 0xdb, 0xfa, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x02, 0xcc, 0xa0, - 0x2e, 0x08, 0x1d, 0x0c, 0x2e, 0x03, 0x03, 0x2c, - 0x2e, 0x03, 0x45, 0xb8, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0x90, 0x04, 0x01, 0x0c, 0x09, 0x20, 0xff, - 0x29, 0x00, 0xd0, 0x0b, 0x29, 0x0f, 0xdc, 0x09, - 0x00, 0x8c, 0x4f, 0x06, 0x59, 0x39, 0x29, 0x00, - 0xd0, 0x04, 0x1c, 0x08, 0xf7, 0xff, 0xfb, 0x91, - 0x20, 0x00, 0x51, 0x38, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0xff, 0x04, 0x05, 0x0c, 0x2d, 0x04, 0x10, - 0x0c, 0x00, 0xb0, 0x82, 0x90, 0x00, 0x04, 0x18, - 0x0c, 0x00, 0x90, 0x01, 0x2d, 0x00, 0xd0, 0x01, - 0x2d, 0x0f, 0xdd, 0x01, 0x20, 0xff, 0xe0, 0x53, - 0x00, 0xaf, 0x4c, 0x2c, 0x59, 0xe0, 0x28, 0x00, - 0xd0, 0x02, 0x1c, 0x28, 0xf7, 0xff, 0xff, 0xd0, - 0x98, 0x00, 0x4a, 0x29, 0x40, 0x02, 0x92, 0x00, - 0x23, 0x2d, 0x01, 0x1b, 0x42, 0x9a, 0xdd, 0x01, - 0x1c, 0x1a, 0x93, 0x00, 0x23, 0x09, 0x01, 0x9b, - 0x98, 0x01, 0x42, 0x98, 0xdd, 0x01, 0x1c, 0x1a, - 0x93, 0x00, 0x2d, 0x08, 0xda, 0x01, 0x20, 0x00, - 0xe0, 0x00, 0x20, 0x01, 0x22, 0x00, 0x21, 0x00, - 0xb4, 0x07, 0x9a, 0x06, 0xb4, 0x04, 0x20, 0x00, - 0x9a, 0x04, 0x9b, 0x05, 0xf7, 0xff, 0xfa, 0x38, - 0x51, 0xe0, 0xb0, 0x04, 0x1c, 0x01, 0xd0, 0xd1, - 0x48, 0x18, 0x6c, 0x82, 0x62, 0x4a, 0x21, 0x01, - 0x59, 0xe2, 0x63, 0xd1, 0x21, 0x00, 0x43, 0xc9, - 0x59, 0xe2, 0x63, 0x91, 0x99, 0x03, 0x29, 0x08, - 0xd2, 0x10, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x06, 0x08, 0x0b, - 0x04, 0x06, 0x08, 0x0b, 0x48, 0x0e, 0xe0, 0x02, - 0x48, 0x0e, 0xe0, 0x00, 0x48, 0x0e, 0x59, 0xc6, - 0xe0, 0x00, 0x6c, 0x06, 0x59, 0xe0, 0x1c, 0x31, - 0xf7, 0xff, 0xfb, 0xd6, 0x59, 0xe0, 0x68, 0x80, - 0x21, 0x07, 0xf0, 0x04, 0xf9, 0xb3, 0x20, 0x00, - 0xb0, 0x02, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0x00, 0x00, 0xff, 0xfe, 0x2e, 0x08, 0x1d, 0x0c, - 0x2e, 0x08, 0x92, 0xfc, 0x2e, 0x08, 0x92, 0xdc, - 0x2e, 0x08, 0x92, 0xbc, 0xb5, 0xf0, 0x04, 0x00, - 0x0c, 0x00, 0x04, 0x09, 0x14, 0x09, 0x04, 0x16, - 0x14, 0x36, 0xb0, 0x85, 0x28, 0x07, 0xdc, 0x29, - 0x00, 0x84, 0x4f, 0x21, 0x59, 0x38, 0x28, 0x00, - 0xd0, 0x24, 0x08, 0x49, 0x00, 0x49, 0x04, 0x0d, - 0x14, 0x2d, 0x68, 0x80, 0xa9, 0x01, 0xf0, 0x04, - 0xfa, 0x61, 0x98, 0x01, 0x19, 0x40, 0x90, 0x01, - 0x98, 0x03, 0x19, 0x40, 0x90, 0x03, 0x98, 0x02, - 0x19, 0x80, 0x90, 0x02, 0x98, 0x04, 0x19, 0x80, - 0x90, 0x04, 0x98, 0x01, 0x49, 0x15, 0x42, 0x88, - 0xd8, 0x0c, 0x98, 0x02, 0x42, 0x88, 0xd8, 0x09, - 0x23, 0x2d, 0x01, 0x1b, 0x98, 0x01, 0x42, 0x98, - 0xda, 0x04, 0x23, 0x09, 0x01, 0x9b, 0x98, 0x02, - 0x42, 0x98, 0xdb, 0x01, 0x20, 0xff, 0xe0, 0x12, - 0x59, 0x38, 0x68, 0x80, 0xa9, 0x01, 0xf0, 0x02, - 0xf8, 0x31, 0x59, 0x38, 0x68, 0x80, 0x46, 0x69, - 0xf0, 0x03, 0xff, 0x00, 0x98, 0x00, 0x28, 0x00, - 0xd1, 0x04, 0x59, 0x38, 0x68, 0x80, 0x21, 0x01, - 0xf0, 0x03, 0xfc, 0x44, 0x20, 0x00, 0xb0, 0x05, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x92, 0x7c, 0x80, 0x00, 0x00, 0x00, - 0xb5, 0xf0, 0x04, 0x07, 0x0c, 0x3f, 0x04, 0x0b, - 0x0c, 0x1b, 0x04, 0x16, 0x0c, 0x36, 0x20, 0xff, - 0xb0, 0x85, 0x2f, 0x07, 0xdc, 0x10, 0x00, 0xbc, - 0x4f, 0x1c, 0x59, 0x39, 0x29, 0x00, 0xd0, 0x0b, - 0x08, 0x5a, 0x00, 0x52, 0x04, 0x15, 0x0c, 0x2d, - 0x23, 0x2d, 0x01, 0x1b, 0x42, 0x9d, 0xda, 0x03, - 0x23, 0x09, 0x01, 0x9b, 0x42, 0x9e, 0xdb, 0x03, - 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x68, 0x88, 0xa9, 0x01, 0xf0, 0x04, 0xfa, 0x02, - 0x98, 0x03, 0x99, 0x01, 0x1a, 0x40, 0x90, 0x03, - 0x19, 0x40, 0x90, 0x03, 0x98, 0x04, 0x99, 0x02, - 0x1a, 0x40, 0x90, 0x04, 0x19, 0x80, 0x90, 0x04, - 0x95, 0x01, 0x96, 0x02, 0x59, 0x38, 0x68, 0x80, - 0xa9, 0x01, 0xf0, 0x01, 0xff, 0xe3, 0x59, 0x38, - 0x68, 0x80, 0x46, 0x69, 0xf0, 0x03, 0xfe, 0xb2, - 0x98, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x59, 0x38, - 0x68, 0x80, 0x21, 0x01, 0xf0, 0x03, 0xfb, 0xf6, - 0x20, 0x00, 0xe7, 0xd5, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x80, - 0x49, 0x04, 0x58, 0x08, 0x28, 0x00, 0xd0, 0x03, - 0x68, 0x80, 0x21, 0x00, 0xf0, 0x03, 0xfb, 0xe6, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0x80, 0x04, 0x01, 0x0c, 0x09, 0x20, 0xff, - 0x29, 0x07, 0xdc, 0x0c, 0x29, 0x01, 0xdb, 0x0a, - 0x00, 0x88, 0x49, 0x06, 0x58, 0x08, 0x27, 0x00, - 0x28, 0x00, 0xd0, 0x03, 0x68, 0x80, 0x21, 0x01, - 0xf0, 0x03, 0xfa, 0x2c, 0x1c, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x92, 0x7c, - 0x04, 0x01, 0x0c, 0x09, 0x20, 0x00, 0x29, 0x0f, - 0xdc, 0x06, 0x00, 0x89, 0x4a, 0x03, 0x58, 0x51, - 0x29, 0x00, 0xd0, 0x01, 0x23, 0x32, 0x5e, 0xc8, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0x04, 0x01, 0x0c, 0x09, 0x20, 0x00, 0x29, 0x0f, - 0xdc, 0x06, 0x00, 0x89, 0x4a, 0x03, 0x58, 0x51, - 0x29, 0x00, 0xd0, 0x01, 0x23, 0x34, 0x5e, 0xc8, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0xb0, 0x04, 0x03, 0x0c, 0x1b, 0x04, 0x0a, - 0x0c, 0x12, 0x20, 0xff, 0x2b, 0x07, 0xdc, 0x10, - 0x00, 0x9d, 0x4f, 0x09, 0x59, 0x79, 0x29, 0x00, - 0xd0, 0x0b, 0x07, 0x14, 0x0f, 0x24, 0x68, 0x88, - 0x21, 0x03, 0xf0, 0x03, 0xfe, 0x9b, 0x59, 0x78, - 0x68, 0x80, 0x1c, 0x21, 0xf0, 0x03, 0xff, 0x42, - 0x20, 0x00, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x92, 0x7c, 0xb5, 0x00, 0x04, 0x01, - 0x0c, 0x09, 0x20, 0xff, 0x29, 0x07, 0xdc, 0x09, - 0x00, 0x89, 0x4a, 0x05, 0x58, 0x51, 0x29, 0x00, - 0xd0, 0x04, 0x68, 0x88, 0x21, 0x02, 0xf0, 0x03, - 0xfe, 0x81, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x92, 0x7c, 0xb5, 0x00, 0x04, 0x01, - 0x0c, 0x09, 0x20, 0xff, 0x29, 0x07, 0xdc, 0x09, - 0x00, 0x89, 0x4a, 0x05, 0x58, 0x51, 0x29, 0x00, - 0xd0, 0x04, 0x68, 0x88, 0x21, 0x00, 0xf0, 0x03, - 0xfe, 0x6d, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x92, 0x7c, 0xb5, 0xf0, 0x04, 0x05, - 0x0c, 0x2d, 0x04, 0x09, 0x0c, 0x09, 0x04, 0x12, - 0x0c, 0x12, 0x04, 0x1e, 0x0c, 0x36, 0x9c, 0x05, - 0x9f, 0x06, 0x04, 0x24, 0x0c, 0x24, 0x04, 0x3f, - 0x0c, 0x3f, 0x20, 0xff, 0xb0, 0x85, 0x2d, 0x0f, - 0xdc, 0x04, 0x00, 0xab, 0x4d, 0x10, 0x58, 0xed, - 0x2d, 0x00, 0xd1, 0x03, 0xb0, 0x05, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x19, 0x88, 0x23, 0x32, - 0x5e, 0xeb, 0x42, 0x98, 0xdd, 0x02, 0x1a, 0x58, - 0x04, 0x06, 0x0c, 0x36, 0x19, 0x10, 0x23, 0x34, - 0x5e, 0xeb, 0x42, 0x98, 0xdd, 0x02, 0x1a, 0x98, - 0x04, 0x04, 0x0c, 0x24, 0x91, 0x00, 0x92, 0x01, - 0x96, 0x02, 0x94, 0x03, 0x97, 0x04, 0x46, 0x69, - 0x68, 0xa8, 0xf0, 0x0a, 0xfa, 0x13, 0xe7, 0xe1, - 0x2e, 0x08, 0x92, 0x7c, 0xb4, 0x80, 0x04, 0x03, - 0x0c, 0x1b, 0x20, 0x00, 0x29, 0x00, 0xdb, 0x0f, - 0x2a, 0x00, 0xdb, 0x0d, 0x00, 0x9b, 0x4f, 0x07, - 0x58, 0xff, 0x2f, 0x00, 0xd0, 0x08, 0x23, 0x32, - 0x5e, 0xfb, 0x42, 0x8b, 0xdd, 0x04, 0x23, 0x34, - 0x5e, 0xf9, 0x42, 0x91, 0xdd, 0x00, 0x20, 0x01, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0xf0, 0x9c, 0x06, 0x9e, 0x05, 0x04, 0x00, - 0x0c, 0x00, 0xb0, 0x85, 0x90, 0x00, 0x04, 0x08, - 0x14, 0x00, 0x04, 0x17, 0x14, 0x3f, 0x04, 0x1d, - 0x14, 0x2d, 0x04, 0x31, 0x14, 0x09, 0x91, 0x01, - 0x04, 0x23, 0x0c, 0x1b, 0x93, 0x02, 0xb0, 0x82, - 0x99, 0x02, 0x00, 0x89, 0x91, 0x06, 0x4a, 0x71, - 0x92, 0x05, 0x58, 0x51, 0x29, 0x00, 0xd1, 0x01, - 0x20, 0xff, 0xe0, 0xd6, 0x2d, 0x00, 0xda, 0x0e, - 0x19, 0x40, 0x04, 0x00, 0x14, 0x00, 0x42, 0x69, - 0x04, 0x0d, 0x14, 0x2d, 0x99, 0x03, 0x18, 0x79, - 0x04, 0x0f, 0x14, 0x3f, 0x99, 0x03, 0x42, 0x49, - 0x04, 0x09, 0x14, 0x09, 0x91, 0x03, 0x1c, 0x01, - 0x1c, 0x04, 0x98, 0x02, 0x1c, 0x3a, 0xf7, 0xff, - 0xff, 0xb1, 0x28, 0x00, 0xd0, 0x08, 0x98, 0x06, - 0x99, 0x05, 0x58, 0x08, 0x68, 0x80, 0x9b, 0x04, - 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x09, 0xff, 0x70, - 0x98, 0x03, 0x10, 0x40, 0x90, 0x00, 0x10, 0x6e, - 0x1c, 0x28, 0xb0, 0x82, 0xf0, 0x0e, 0xfd, 0x38, - 0xf0, 0x0e, 0xfd, 0x74, 0x90, 0x00, 0x91, 0x01, - 0x98, 0x05, 0xf0, 0x0e, 0xfd, 0x31, 0xf0, 0x0e, - 0xfd, 0x6d, 0x9a, 0x00, 0x9b, 0x01, 0xb0, 0x02, - 0xf0, 0x0e, 0xfd, 0x6c, 0x28, 0x00, 0xd0, 0x4c, - 0x98, 0x03, 0x28, 0x00, 0xdd, 0x21, 0x26, 0x00, - 0x2d, 0x00, 0xdd, 0x6d, 0x98, 0x00, 0x99, 0x03, - 0x18, 0x40, 0x90, 0x00, 0x34, 0x01, 0x42, 0xa8, - 0xdb, 0x03, 0x98, 0x00, 0x1b, 0x40, 0x90, 0x00, - 0x37, 0x01, 0x98, 0x02, 0x1c, 0x21, 0x1c, 0x3a, - 0xf7, 0xff, 0xff, 0x78, 0x28, 0x00, 0xd0, 0x08, - 0x98, 0x06, 0x99, 0x05, 0x58, 0x08, 0x68, 0x80, - 0x9b, 0x04, 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x09, - 0xff, 0x37, 0x36, 0x01, 0x42, 0xae, 0xdb, 0xe1, - 0xe0, 0x76, 0x98, 0x03, 0x42, 0x40, 0x04, 0x00, - 0x14, 0x00, 0x90, 0x03, 0x98, 0x00, 0x42, 0x46, - 0x20, 0x00, 0x90, 0x01, 0x2d, 0x00, 0xdd, 0x43, - 0x98, 0x03, 0x18, 0x36, 0x34, 0x01, 0x42, 0xae, - 0xdb, 0x01, 0x1b, 0x76, 0x3f, 0x01, 0x98, 0x02, - 0x1c, 0x21, 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0x52, - 0x28, 0x00, 0xd0, 0x08, 0x98, 0x06, 0x99, 0x05, - 0x58, 0x08, 0x68, 0x80, 0x9b, 0x04, 0x1c, 0x21, - 0x1c, 0x3a, 0xf0, 0x09, 0xff, 0x11, 0x98, 0x01, - 0x30, 0x01, 0x90, 0x01, 0x42, 0xa8, 0xdb, 0xe3, - 0xe0, 0x4e, 0x98, 0x03, 0x28, 0x00, 0xdd, 0x24, - 0x20, 0x00, 0x90, 0x01, 0x98, 0x03, 0x28, 0x00, - 0xdd, 0x1e, 0x19, 0x76, 0x99, 0x03, 0x37, 0x01, - 0x42, 0x8e, 0xdb, 0x02, 0x98, 0x03, 0x1a, 0x36, - 0x34, 0x01, 0x98, 0x02, 0x1c, 0x21, 0x1c, 0x3a, - 0xf7, 0xff, 0xff, 0x2c, 0x28, 0x00, 0xd0, 0x08, - 0x98, 0x06, 0x99, 0x05, 0x58, 0x08, 0x68, 0x80, - 0x9b, 0x04, 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x09, - 0xfe, 0xeb, 0x98, 0x01, 0x30, 0x01, 0x90, 0x01, - 0x99, 0x03, 0x42, 0x88, 0xdb, 0xe1, 0xe0, 0x27, - 0xe0, 0x26, 0x98, 0x03, 0x42, 0x40, 0x04, 0x01, - 0x14, 0x09, 0x91, 0x03, 0x20, 0x00, 0x90, 0x01, - 0x29, 0x00, 0xdd, 0x1d, 0x19, 0x76, 0x99, 0x03, - 0x3f, 0x01, 0x42, 0x8e, 0xdb, 0x02, 0x99, 0x03, - 0x1a, 0x76, 0x34, 0x01, 0x98, 0x02, 0x1c, 0x21, - 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0x03, 0x28, 0x00, - 0xd0, 0x08, 0x98, 0x06, 0x99, 0x05, 0x58, 0x08, - 0x68, 0x80, 0x9b, 0x04, 0x1c, 0x21, 0x1c, 0x3a, - 0xf0, 0x09, 0xfe, 0xc2, 0x98, 0x01, 0x30, 0x01, - 0x90, 0x01, 0x99, 0x03, 0x42, 0x88, 0xdb, 0xe1, - 0x20, 0x00, 0xb0, 0x07, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0xb4, 0x80, 0x23, 0x00, 0x88, 0x01, 0x0a, 0x0a, - 0x06, 0x12, 0x0e, 0x12, 0x06, 0x09, 0x0e, 0x09, - 0x2a, 0xdf, 0xd0, 0x1a, 0xdc, 0x07, 0x2a, 0xc4, - 0xd0, 0x19, 0x2a, 0xd6, 0xd0, 0x1b, 0x2a, 0xdc, - 0xd1, 0x08, 0x22, 0x1e, 0xe0, 0x06, 0x2a, 0xe4, - 0xd0, 0x13, 0x2a, 0xf6, 0xd0, 0x15, 0x2a, 0xfc, - 0xd1, 0x00, 0x22, 0x1f, 0x29, 0xdf, 0xd0, 0x26, - 0xdc, 0x11, 0x29, 0xc4, 0xd0, 0x25, 0x29, 0xd6, - 0xd0, 0x27, 0x29, 0xdc, 0xd1, 0x12, 0x21, 0x1e, - 0xe0, 0x10, 0x22, 0x19, 0xe7, 0xf2, 0x22, 0x1a, - 0xe7, 0xf0, 0x22, 0x1b, 0xe7, 0xee, 0x22, 0x1c, - 0xe7, 0xec, 0x22, 0x1d, 0xe7, 0xea, 0x29, 0xe4, - 0xd0, 0x15, 0x29, 0xf6, 0xd0, 0x17, 0x29, 0xfc, - 0xd1, 0x00, 0x21, 0x1f, 0x02, 0x17, 0x18, 0x7f, - 0x80, 0x07, 0x30, 0x02, 0x2a, 0x00, 0xd0, 0x04, - 0x29, 0x00, 0xd0, 0x02, 0x33, 0x01, 0x2b, 0x70, - 0xdb, 0xc0, 0xbc, 0x80, 0x47, 0x70, 0x21, 0x19, - 0xe7, 0xf0, 0x21, 0x1a, 0xe7, 0xee, 0x21, 0x1b, - 0xe7, 0xec, 0x21, 0x1c, 0xe7, 0xea, 0x21, 0x1d, - 0xe7, 0xe8, 0xb5, 0xf0, 0x1c, 0x0f, 0x1c, 0x11, - 0x04, 0x02, 0x0c, 0x12, 0x04, 0x0c, 0x0c, 0x24, - 0x04, 0x1d, 0x0c, 0x2d, 0x00, 0x96, 0xb0, 0x81, - 0x48, 0x10, 0x90, 0x00, 0x59, 0x81, 0x20, 0xff, - 0x29, 0x00, 0xd0, 0x16, 0x2a, 0x00, 0xd0, 0x14, - 0x2a, 0x0f, 0xdc, 0x12, 0x23, 0x32, 0x5e, 0xca, - 0x42, 0xa2, 0xdb, 0x0e, 0x23, 0x34, 0x5e, 0xc9, - 0x42, 0xa9, 0xdb, 0x0a, 0x1c, 0x38, 0xf7, 0xff, - 0xff, 0x93, 0x98, 0x00, 0x59, 0x80, 0x1c, 0x39, - 0x1c, 0x22, 0x1c, 0x2b, 0xf7, 0xff, 0xfb, 0x5c, - 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0xb4, 0xb0, 0x04, 0x07, 0x0c, 0x3f, 0x04, 0x09, - 0x0c, 0x09, 0x04, 0x14, 0x14, 0x24, 0x04, 0x1a, - 0x14, 0x12, 0x20, 0xff, 0x2f, 0x0f, 0xdc, 0x1d, - 0x00, 0xbd, 0x4f, 0x0f, 0x59, 0x7b, 0x2b, 0x00, - 0xd0, 0x18, 0x48, 0x0e, 0x29, 0x01, 0xd0, 0x05, - 0x29, 0x02, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0x03, - 0x6c, 0x80, 0xe0, 0x02, 0x6c, 0x40, 0xe0, 0x00, - 0x6c, 0xc0, 0x62, 0x58, 0x59, 0x78, 0x63, 0xc4, - 0x20, 0x00, 0x43, 0xc0, 0x42, 0x82, 0xd1, 0x02, - 0x59, 0x79, 0x63, 0x88, 0xe0, 0x01, 0x59, 0x78, - 0x63, 0x82, 0x20, 0x00, 0xbc, 0xb0, 0x47, 0x70, - 0x2e, 0x08, 0x92, 0x7c, 0x2e, 0x08, 0x1d, 0x0c, - 0xb5, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x04, 0x09, - 0x0c, 0x09, 0x00, 0x80, 0x4a, 0x07, 0x58, 0x10, - 0x28, 0x00, 0xd1, 0x02, 0x20, 0xff, 0xbc, 0x08, - 0x47, 0x18, 0x07, 0x89, 0x0f, 0x89, 0x68, 0x80, - 0xf0, 0x03, 0xfe, 0x6c, 0x20, 0x00, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0x80, 0x04, 0x00, 0x0c, 0x00, 0x04, 0x12, - 0x0c, 0x12, 0x1c, 0x1f, 0x28, 0x07, 0xdc, 0x1f, - 0x28, 0x01, 0xdb, 0x1d, 0x00, 0x80, 0x4b, 0x10, - 0x58, 0x1b, 0x2b, 0x00, 0xd0, 0x18, 0x29, 0x02, - 0xd0, 0x0e, 0x29, 0x04, 0xd0, 0x0c, 0x29, 0x10, - 0xd0, 0x0a, 0x23, 0xff, 0x33, 0x01, 0x42, 0x99, - 0xd1, 0x0e, 0x06, 0x12, 0x0e, 0x12, 0x1c, 0x39, - 0x48, 0x08, 0x6c, 0x00, 0x68, 0x00, 0xe0, 0x05, - 0x07, 0x12, 0x0f, 0x12, 0x49, 0x06, 0x58, 0x08, - 0x68, 0x00, 0x1c, 0x39, 0xf0, 0x0b, 0xfa, 0xf2, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x92, 0x7c, 0x2e, 0x08, 0x1d, 0x0c, - 0x2e, 0x08, 0x92, 0xbc, 0xb5, 0xf0, 0x04, 0x07, - 0x0c, 0x3f, 0x04, 0x10, 0x0c, 0x00, 0x22, 0x00, - 0xb0, 0x85, 0x92, 0x00, 0x2f, 0x07, 0xdc, 0x74, - 0x2f, 0x01, 0xdb, 0x73, 0x00, 0xbe, 0x4a, 0x3e, - 0x59, 0x92, 0x2a, 0x00, 0xd0, 0x6f, 0x04, 0x1a, - 0x0c, 0x12, 0x07, 0xd5, 0x0f, 0xed, 0x24, 0x02, - 0x40, 0x14, 0x27, 0x04, 0x40, 0x17, 0x23, 0x08, - 0x40, 0x1a, 0x92, 0x04, 0x29, 0x02, 0xd0, 0x34, - 0x29, 0x04, 0xd0, 0x32, 0x29, 0x10, 0xd0, 0x30, - 0x01, 0x5b, 0x42, 0x99, 0xd1, 0x60, 0x06, 0x02, - 0x0e, 0x12, 0x46, 0x69, 0x1c, 0x16, 0x48, 0x31, - 0x90, 0x01, 0x6c, 0x00, 0x68, 0x00, 0xf0, 0x0b, - 0xfa, 0xe9, 0x98, 0x00, 0x4b, 0x2e, 0x40, 0x18, - 0x90, 0x00, 0x2d, 0x00, 0xd0, 0x02, 0x23, 0x02, - 0x43, 0x18, 0x90, 0x00, 0x2c, 0x00, 0xd0, 0x04, - 0x23, 0x01, 0x04, 0x5b, 0x98, 0x00, 0x43, 0x18, - 0x90, 0x00, 0x2f, 0x00, 0xd0, 0x03, 0x23, 0x01, - 0x98, 0x00, 0x43, 0x18, 0x90, 0x00, 0x9a, 0x04, - 0x2a, 0x00, 0xd0, 0x04, 0x23, 0x01, 0x04, 0x1b, - 0x98, 0x00, 0x43, 0x18, 0x90, 0x00, 0x98, 0x01, - 0x99, 0x00, 0x6c, 0x00, 0x68, 0x00, 0x1c, 0x32, - 0xe0, 0x30, 0x07, 0x02, 0x0f, 0x12, 0x92, 0x03, - 0x48, 0x1c, 0x90, 0x02, 0x59, 0x80, 0x68, 0x00, - 0x46, 0x69, 0xf0, 0x0b, 0xfa, 0xbb, 0x98, 0x00, - 0x4b, 0x17, 0x40, 0x18, 0x90, 0x00, 0x2d, 0x00, - 0xd0, 0x02, 0x23, 0x02, 0x43, 0x18, 0x90, 0x00, - 0x2c, 0x00, 0xd0, 0x04, 0x23, 0x01, 0x04, 0x5b, - 0x98, 0x00, 0x43, 0x18, 0x90, 0x00, 0x2f, 0x00, - 0xd0, 0x03, 0x23, 0x01, 0x98, 0x00, 0x43, 0x18, - 0x90, 0x00, 0x9a, 0x04, 0x2a, 0x00, 0xd0, 0x04, - 0x23, 0x01, 0x04, 0x1b, 0x98, 0x00, 0x43, 0x18, - 0x90, 0x00, 0x98, 0x02, 0x9a, 0x03, 0x59, 0x80, - 0xe0, 0x02, 0xe0, 0x05, 0xe0, 0x04, 0xe0, 0x03, - 0x68, 0x00, 0x99, 0x00, 0xf0, 0x0b, 0xfa, 0x62, - 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x92, 0x7c, 0x2e, 0x08, 0x1d, 0x0c, - 0xff, 0xfc, 0xff, 0xfc, 0x2e, 0x08, 0x92, 0xbc, - 0xb5, 0xf0, 0x04, 0x04, 0x0c, 0x24, 0x04, 0x0d, - 0x0c, 0x2d, 0x04, 0x16, 0x0c, 0x36, 0xb0, 0x85, - 0xa8, 0x01, 0x49, 0x48, 0xc9, 0x8e, 0xc0, 0x8e, - 0x2c, 0x00, 0xd0, 0x07, 0x2c, 0x01, 0xd0, 0x07, - 0x2c, 0x02, 0xd0, 0x07, 0x2c, 0x03, 0xd1, 0x74, - 0x20, 0x08, 0xe0, 0x04, 0x20, 0x01, 0xe0, 0x02, - 0x20, 0x02, 0xe0, 0x00, 0x20, 0x04, 0x90, 0x00, - 0x23, 0x2d, 0x01, 0x1b, 0x42, 0x9d, 0xdc, 0x69, - 0x23, 0x09, 0x01, 0x9b, 0x42, 0x9e, 0xdc, 0x65, - 0x1e, 0x68, 0x90, 0x03, 0x1e, 0x70, 0x90, 0x04, - 0xa8, 0x01, 0x1c, 0x21, 0xf0, 0x07, 0xfb, 0xe4, - 0x4f, 0x37, 0x60, 0x78, 0x00, 0x80, 0x23, 0x01, - 0x04, 0x1b, 0x42, 0x98, 0xdc, 0x56, 0x1f, 0xf8, - 0x38, 0x79, 0x67, 0xc4, 0x68, 0x38, 0x28, 0x00, - 0xd0, 0x0a, 0x68, 0x80, 0xb0, 0x81, 0x46, 0x6b, - 0x22, 0x00, 0x21, 0x00, 0xf0, 0x09, 0xfd, 0x6e, - 0x68, 0x38, 0xf7, 0xfe, 0xfe, 0xd2, 0xb0, 0x01, - 0x22, 0x00, 0x21, 0x0a, 0x20, 0x01, 0xb4, 0x07, - 0x1c, 0x22, 0xb4, 0x04, 0x21, 0x00, 0x20, 0x00, - 0x1c, 0x2a, 0x1c, 0x33, 0xf7, 0xfe, 0xfd, 0xac, - 0x60, 0x38, 0xb0, 0x04, 0x28, 0x00, 0xd0, 0x40, - 0x69, 0x84, 0x98, 0x00, 0x43, 0x45, 0x1d, 0xe8, - 0xd5, 0x00, 0x30, 0x07, 0x10, 0xc0, 0x43, 0x70, - 0x1c, 0x01, 0x60, 0x78, 0x20, 0x00, 0x29, 0x00, - 0xdd, 0x05, 0x21, 0x00, 0x54, 0x21, 0x68, 0x7a, - 0x30, 0x01, 0x42, 0x90, 0xdb, 0xfa, 0x20, 0x01, - 0x02, 0x80, 0xf7, 0xf0, 0xff, 0x55, 0x28, 0x00, - 0xdb, 0xf9, 0x4d, 0x18, 0x1c, 0x28, 0xf7, 0xf0, - 0xff, 0x6f, 0x28, 0x00, 0xdb, 0xfa, 0x68, 0x78, - 0x28, 0x00, 0xdd, 0x14, 0x68, 0x78, 0x04, 0x00, - 0x0c, 0x00, 0xf7, 0xf0, 0xff, 0x45, 0x28, 0x00, - 0xdb, 0xf8, 0x1c, 0x20, 0xf7, 0xf0, 0xff, 0x60, - 0x28, 0x00, 0xdb, 0xfa, 0x18, 0x24, 0x68, 0x79, - 0x1a, 0x08, 0x60, 0x78, 0x28, 0x00, 0xdc, 0xed, - 0xe0, 0x01, 0xe0, 0x0a, 0xe0, 0x09, 0x20, 0x00, - 0xf7, 0xf0, 0xff, 0x32, 0x28, 0x00, 0xd1, 0xfa, - 0x1c, 0x20, 0xf7, 0xf0, 0xff, 0x4d, 0x28, 0x00, - 0xdb, 0xfa, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x03, 0xa7, 0xc4, - 0x2e, 0x08, 0x1d, 0x8c, 0x2e, 0x08, 0x93, 0x1c, - 0xb5, 0xf0, 0x04, 0x00, 0x0c, 0x00, 0x04, 0x09, - 0x0c, 0x09, 0xb0, 0x87, 0x91, 0x00, 0x04, 0x11, - 0x0c, 0x09, 0x91, 0x01, 0x04, 0x19, 0x0c, 0x09, - 0x91, 0x02, 0xb0, 0x85, 0x28, 0x07, 0xdc, 0x43, - 0x28, 0x01, 0xdb, 0x41, 0x00, 0x85, 0x48, 0x3e, - 0x90, 0x0b, 0x59, 0x41, 0x29, 0x00, 0xd0, 0x3b, - 0x48, 0x3c, 0x90, 0x0a, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x36, 0x23, 0x2c, 0x5e, 0xca, 0x2a, 0x0b, - 0xd2, 0x32, 0xa3, 0x02, 0x5c, 0x9b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, - 0x22, 0x00, 0x92, 0x00, 0x92, 0x01, 0x23, 0x32, - 0x5e, 0xc3, 0x93, 0x02, 0x23, 0x34, 0x5e, 0xc0, - 0x90, 0x03, 0x92, 0x04, 0x98, 0x07, 0x08, 0x80, - 0xd3, 0x40, 0x23, 0x2c, 0x5e, 0xc8, 0x28, 0x00, - 0xd0, 0x08, 0x28, 0x01, 0xd0, 0x08, 0x28, 0x02, - 0xd0, 0x08, 0x28, 0x03, 0xd1, 0x10, 0x27, 0xff, - 0x37, 0x01, 0xe0, 0x04, 0x27, 0x02, 0xe0, 0x02, - 0x27, 0x04, 0xe0, 0x00, 0x27, 0x10, 0x4e, 0x24, - 0x23, 0xff, 0x33, 0x01, 0x42, 0x9f, 0xd1, 0x16, - 0x24, 0x00, 0x48, 0x22, 0x90, 0x09, 0xe0, 0x03, - 0xb0, 0x0c, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0xa0, 0x58, 0x31, 0x29, 0x00, 0xd0, 0x06, - 0x06, 0x22, 0x0e, 0x12, 0x98, 0x09, 0x6c, 0x00, - 0x68, 0x00, 0xf0, 0x0b, 0xf9, 0x53, 0x34, 0x01, - 0x42, 0xbc, 0xdb, 0xf1, 0xe0, 0x12, 0x24, 0x00, - 0x2f, 0x00, 0xdd, 0x0f, 0x48, 0x16, 0x90, 0x08, - 0x00, 0xa0, 0x58, 0x31, 0x29, 0x00, 0xd0, 0x06, - 0x07, 0x22, 0x0f, 0x12, 0x98, 0x08, 0x59, 0x40, - 0x68, 0x00, 0xf0, 0x0b, 0xf9, 0x3f, 0x34, 0x01, - 0x42, 0xbc, 0xdb, 0xf1, 0x98, 0x07, 0x08, 0x40, - 0xd3, 0x01, 0x22, 0xff, 0xe0, 0x00, 0x22, 0x00, - 0x99, 0x06, 0xb4, 0x06, 0x98, 0x0d, 0x59, 0x40, - 0x68, 0x81, 0x98, 0x0c, 0x68, 0x00, 0x68, 0x80, - 0x9b, 0x07, 0xaa, 0x02, 0xf0, 0x09, 0xff, 0x08, - 0xb0, 0x0e, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x92, 0x7c, 0x2e, 0x08, 0x1d, 0x8c, - 0x2e, 0x08, 0x93, 0x1c, 0x2e, 0x08, 0x1d, 0x0c, - 0x2e, 0x08, 0x92, 0xbc, 0xb5, 0x80, 0x4f, 0x05, - 0x68, 0x38, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xfe, - 0xfd, 0xd4, 0x20, 0x00, 0x60, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1d, 0x8c, - 0xb5, 0x00, 0x04, 0x01, 0x0c, 0x09, 0x20, 0xff, - 0x29, 0x07, 0xdc, 0x09, 0x00, 0x89, 0x4a, 0x05, - 0x58, 0x51, 0x29, 0x00, 0xd0, 0x04, 0x68, 0x88, - 0x21, 0x01, 0xf0, 0x03, 0xfb, 0x93, 0x20, 0x00, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0x00, 0x04, 0x01, 0x0c, 0x09, 0x20, 0xff, - 0x29, 0x07, 0xdc, 0x09, 0x00, 0x89, 0x4a, 0x05, - 0x58, 0x51, 0x29, 0x00, 0xd0, 0x04, 0x68, 0x88, - 0x21, 0x00, 0xf0, 0x03, 0xfb, 0x7f, 0x20, 0x00, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x92, 0x7c, - 0xb5, 0xf7, 0xb0, 0x86, 0x9c, 0x07, 0x20, 0x00, - 0x6e, 0x40, 0x90, 0x05, 0x98, 0x05, 0x30, 0x0c, - 0x90, 0x05, 0x48, 0x7f, 0x90, 0x04, 0x98, 0x04, - 0x30, 0x0c, 0x90, 0x04, 0xf0, 0x13, 0xfc, 0x2a, - 0x90, 0x01, 0xf0, 0x13, 0xfc, 0x0d, 0x90, 0x00, - 0x20, 0x00, 0x43, 0xc0, 0x49, 0x79, 0x60, 0x08, - 0x20, 0x00, 0x43, 0xc0, 0x49, 0x77, 0x60, 0x88, - 0x20, 0x00, 0x43, 0xc0, 0x49, 0x75, 0x61, 0x08, - 0x98, 0x06, 0x28, 0x00, 0xd0, 0x73, 0x20, 0x00, - 0x6a, 0x40, 0x90, 0x03, 0x68, 0x20, 0x30, 0x05, - 0x99, 0x06, 0x1a, 0x08, 0x90, 0x06, 0x68, 0xe0, - 0x28, 0x00, 0xd0, 0x08, 0x68, 0x60, 0x99, 0x03, - 0x68, 0x09, 0x42, 0x88, 0xd1, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x06, 0x68, 0x60, - 0x9a, 0x08, 0x42, 0x90, 0xd1, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x73, - 0x68, 0x27, 0x68, 0xe0, 0x28, 0x00, 0xd0, 0x01, - 0x98, 0x05, 0xe0, 0x00, 0x98, 0x04, 0x1c, 0x06, - 0x68, 0xe0, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, - 0x6e, 0x40, 0xe0, 0x00, 0x48, 0x5c, 0x90, 0x02, - 0x1d, 0xe5, 0x35, 0x0d, 0x68, 0xa0, 0x28, 0x08, - 0xd2, 0x5f, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x16, 0x28, 0x3a, - 0x49, 0x55, 0x65, 0x71, 0x69, 0x20, 0x49, 0x55, - 0x60, 0x08, 0xcd, 0x02, 0x48, 0x53, 0x60, 0x41, - 0xcd, 0x02, 0x98, 0x02, 0x60, 0x01, 0x3f, 0x01, - 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x02, - 0xcd, 0x02, 0xc6, 0x02, 0xe7, 0xf8, 0xe0, 0x67, - 0x69, 0x20, 0x49, 0x4c, 0x60, 0x88, 0xcd, 0x02, - 0x48, 0x4a, 0x60, 0xc1, 0xcd, 0x02, 0x98, 0x02, - 0x60, 0x41, 0x3f, 0x01, 0x1c, 0x38, 0x3f, 0x01, - 0x28, 0x00, 0xd0, 0x02, 0xcd, 0x02, 0xc6, 0x02, - 0xe7, 0xf8, 0xe0, 0x55, 0x69, 0x20, 0x49, 0x43, - 0x61, 0x08, 0xcd, 0x02, 0x48, 0x41, 0x61, 0x41, - 0xcd, 0x02, 0x98, 0x02, 0x60, 0x81, 0x3f, 0x01, - 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x02, - 0xcd, 0x02, 0xc6, 0x02, 0xe7, 0xf8, 0xe0, 0x43, - 0x69, 0x20, 0x00, 0x80, 0xe0, 0x00, 0xe0, 0x4b, - 0x21, 0x00, 0x6a, 0x89, 0x50, 0x0e, 0x1c, 0x38, - 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x02, 0xcd, 0x02, - 0xc6, 0x02, 0xe7, 0xf8, 0xe0, 0x34, 0x69, 0x20, - 0x00, 0x80, 0x49, 0x33, 0x50, 0x0e, 0x1c, 0x38, - 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x02, 0xcd, 0x02, - 0xc6, 0x02, 0xe7, 0xf8, 0xe0, 0x28, 0x69, 0x20, - 0x00, 0x80, 0x21, 0x00, 0x6e, 0x09, 0xe0, 0x01, - 0xe0, 0x28, 0xe0, 0x20, 0x50, 0x0e, 0x1c, 0x38, - 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x02, 0xcd, 0x02, - 0xc6, 0x02, 0xe7, 0xf8, 0xe0, 0x18, 0x69, 0x20, - 0x00, 0x80, 0x49, 0x26, 0x50, 0x0e, 0x1c, 0x38, - 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x02, 0xcd, 0x02, - 0xc6, 0x02, 0xe7, 0xf8, 0xe0, 0x0c, 0x69, 0x20, - 0x90, 0x03, 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, - 0xd0, 0x04, 0xcd, 0x02, 0x98, 0x03, 0xc0, 0x02, - 0x90, 0x03, 0xe7, 0xf6, 0xe0, 0x00, 0xe7, 0xff, - 0x68, 0xe0, 0x28, 0xff, 0xd1, 0x01, 0x96, 0x05, - 0xe0, 0x00, 0x96, 0x04, 0x68, 0x20, 0x00, 0x80, - 0x19, 0x00, 0x1d, 0xc4, 0x34, 0x0d, 0xe7, 0x3b, - 0x98, 0x01, 0x28, 0x00, 0xd1, 0x01, 0xf0, 0x13, - 0xfb, 0x89, 0x98, 0x00, 0x28, 0x00, 0xd1, 0x01, - 0xf0, 0x13, 0xfb, 0x68, 0x20, 0x00, 0x6e, 0x80, - 0x68, 0x00, 0x4b, 0x0f, 0x42, 0x98, 0xd0, 0x06, - 0x48, 0x0d, 0x21, 0x00, 0x6e, 0x89, 0x60, 0x08, - 0x20, 0x01, 0x49, 0x08, 0x62, 0x08, 0x20, 0x00, - 0x21, 0x00, 0x6e, 0x89, 0x60, 0x08, 0x20, 0x00, - 0xb0, 0x06, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0xb0, 0x06, 0xe7, 0xf9, 0x00, 0x00, - 0x2e, 0x08, 0x97, 0x1c, 0x66, 0x00, 0x00, 0x80, - 0x2e, 0x08, 0x3b, 0xa4, 0x2e, 0x08, 0x1d, 0x94, - 0xda, 0xa5, 0xaa, 0x57, 0xb5, 0x80, 0xb0, 0xa7, - 0x46, 0x68, 0x4f, 0x08, 0x23, 0x13, 0xcf, 0x06, - 0xc0, 0x06, 0x3b, 0x01, 0xd1, 0xfb, 0xcf, 0x04, - 0xc0, 0x04, 0x46, 0x69, 0x4a, 0x04, 0x20, 0x27, - 0xf7, 0xff, 0xfe, 0xde, 0xb0, 0x27, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x03, 0xa7, 0xd4, - 0xf0, 0x24, 0x00, 0x09, 0xb5, 0xff, 0xb0, 0x83, - 0x99, 0x04, 0x04, 0x09, 0x0c, 0x09, 0x91, 0x00, - 0x9a, 0x05, 0x06, 0x16, 0x0e, 0x36, 0x9b, 0x06, - 0x06, 0x18, 0x0e, 0x00, 0x90, 0x01, 0x98, 0x0c, - 0x06, 0x00, 0x0e, 0x00, 0x90, 0x02, 0xb0, 0x84, - 0x25, 0x00, 0x98, 0x07, 0x1d, 0xc2, 0x32, 0x21, - 0x92, 0x00, 0x20, 0xff, 0x30, 0x01, 0x68, 0x00, - 0x49, 0x6b, 0x60, 0x08, 0x98, 0x12, 0x28, 0x01, - 0xd1, 0x73, 0x98, 0x07, 0x28, 0x00, 0xd1, 0x05, - 0x20, 0x63, 0xb0, 0x07, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x21, 0x00, 0x91, 0x01, - 0x99, 0x01, 0x23, 0xff, 0x33, 0xe1, 0x42, 0x99, - 0xd3, 0x04, 0xe0, 0x0a, 0x99, 0x01, 0x31, 0x01, - 0x91, 0x01, 0xe7, 0xf5, 0x20, 0x00, 0x99, 0x01, - 0x23, 0x2c, 0x43, 0x59, 0x9a, 0x00, 0x50, 0x50, - 0xe7, 0xf4, 0x98, 0x07, 0x49, 0x5b, 0x68, 0x09, - 0x60, 0x08, 0x98, 0x05, 0x28, 0x10, 0xdb, 0x01, - 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x99, 0x05, - 0x29, 0x1f, 0xdc, 0x01, 0x21, 0x01, 0xe0, 0x00, - 0x21, 0x00, 0x40, 0x08, 0xd0, 0x04, 0x98, 0x05, - 0x49, 0x53, 0x68, 0x09, 0x60, 0x08, 0xe0, 0x02, - 0x20, 0x62, 0xb0, 0x07, 0xe7, 0xce, 0x20, 0x00, - 0x49, 0x4d, 0x68, 0x09, 0x70, 0x08, 0x1c, 0x30, - 0x23, 0x03, 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, - 0x21, 0x01, 0xf0, 0x00, 0xfb, 0x01, 0x1c, 0x07, - 0x2f, 0x00, 0xd0, 0x02, 0x20, 0xa2, 0xb0, 0x07, - 0xe7, 0xbc, 0x22, 0x00, 0xb4, 0x04, 0x99, 0x05, - 0x1c, 0x30, 0x23, 0x04, 0x22, 0x00, 0xf0, 0x00, - 0xf9, 0x2f, 0xb0, 0x01, 0x1c, 0x07, 0x2f, 0x00, - 0xd0, 0x02, 0x20, 0xa2, 0xb0, 0x07, 0xe7, 0xad, - 0x98, 0x06, 0x28, 0x00, 0xdb, 0x04, 0x98, 0x06, - 0x28, 0x3f, 0xdc, 0x01, 0x9d, 0x06, 0xe0, 0x00, - 0x25, 0x1b, 0x98, 0x11, 0x01, 0x80, 0x43, 0x05, - 0x23, 0x80, 0x43, 0x1d, 0x48, 0x39, 0x68, 0x01, - 0x0a, 0x09, 0x02, 0x09, 0x60, 0x01, 0x48, 0x37, - 0x68, 0x01, 0x43, 0x29, 0x60, 0x01, 0xf0, 0x13, - 0xfa, 0x67, 0x90, 0x03, 0xf0, 0x13, 0xfa, 0x7e, - 0xe0, 0x00, 0xe0, 0x13, 0x90, 0x02, 0xf0, 0x13, - 0xfa, 0xdd, 0x1c, 0x04, 0x4b, 0x30, 0x40, 0x1c, - 0x1c, 0x20, 0xf0, 0x13, 0xfa, 0xdb, 0x98, 0x02, - 0x28, 0x40, 0xd0, 0x01, 0xf0, 0x13, 0xfa, 0xa6, - 0x98, 0x03, 0x28, 0x80, 0xd0, 0x01, 0xf0, 0x13, - 0xfa, 0x85, 0xe0, 0x43, 0x22, 0x00, 0xb4, 0x04, - 0x1c, 0x30, 0x23, 0x04, 0x22, 0x00, 0x49, 0x27, - 0xf0, 0x00, 0xf8, 0xee, 0xb0, 0x01, 0x1c, 0x07, - 0x2f, 0x00, 0xd0, 0x02, 0x20, 0xa2, 0xb0, 0x07, - 0xe7, 0x6c, 0x1c, 0x30, 0x23, 0x03, 0x02, 0x5b, - 0x22, 0x01, 0x02, 0xd2, 0x21, 0x02, 0xf0, 0x00, - 0xfa, 0xa3, 0x1c, 0x07, 0x2f, 0x00, 0xd0, 0x02, - 0x20, 0xa2, 0xb0, 0x07, 0xe7, 0x5e, 0x48, 0x19, - 0x68, 0x01, 0x0a, 0x09, 0x02, 0x09, 0x60, 0x01, - 0x48, 0x16, 0x68, 0x01, 0x23, 0x1b, 0x43, 0x19, - 0x60, 0x01, 0x48, 0x12, 0x68, 0x00, 0x68, 0x00, - 0x90, 0x07, 0xf0, 0x13, 0xfa, 0x21, 0x90, 0x03, - 0xf0, 0x13, 0xfa, 0x38, 0x90, 0x02, 0xf0, 0x13, - 0xfa, 0x99, 0x1c, 0x04, 0x23, 0x01, 0x04, 0x5b, - 0x43, 0x1c, 0x1c, 0x20, 0xf0, 0x13, 0xfa, 0x96, - 0x98, 0x02, 0x28, 0x40, 0xd0, 0x01, 0xf0, 0x13, - 0xfa, 0x61, 0x98, 0x03, 0x28, 0x80, 0xd0, 0x01, - 0xf0, 0x13, 0xfa, 0x40, 0x1c, 0x38, 0xb0, 0x07, - 0xe7, 0x34, 0xb0, 0x04, 0xb0, 0x03, 0xe7, 0x31, - 0x2e, 0x08, 0x9b, 0x24, 0x2e, 0x08, 0x9b, 0x1c, - 0x2e, 0x08, 0x9b, 0x20, 0x68, 0x00, 0x00, 0x38, - 0xff, 0xfd, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, - 0xb5, 0x00, 0xf7, 0xff, 0xfe, 0xe7, 0xf0, 0x00, - 0xf8, 0x02, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, - 0xf0, 0x0b, 0xf9, 0x48, 0x26, 0x00, 0x2e, 0x04, - 0xd3, 0x02, 0xe0, 0x12, 0x36, 0x01, 0xe7, 0xfa, - 0x01, 0x30, 0x4b, 0x3c, 0x18, 0xc7, 0x25, 0x00, - 0x2d, 0x04, 0xd3, 0x02, 0xe0, 0x08, 0x35, 0x01, - 0xe7, 0xfa, 0x20, 0x00, 0x60, 0xb8, 0x20, 0x00, - 0x60, 0xf8, 0x37, 0xff, 0x37, 0x01, 0xe7, 0xf6, - 0xe7, 0xec, 0x4f, 0x35, 0x25, 0x00, 0x2d, 0x04, - 0xd3, 0x02, 0xe0, 0x07, 0x35, 0x01, 0xe7, 0xfa, - 0x20, 0x00, 0x60, 0xb8, 0x20, 0x00, 0x60, 0xf8, - 0x37, 0x10, 0xe7, 0xf7, 0x20, 0x00, 0x49, 0x2f, - 0x68, 0x09, 0x70, 0x08, 0x24, 0x00, 0x2c, 0x20, - 0xd3, 0x02, 0xe0, 0x1f, 0x34, 0x01, 0xe7, 0xfa, - 0x21, 0x00, 0x00, 0xe0, 0x4a, 0x2a, 0x68, 0x12, - 0x50, 0x11, 0x20, 0x00, 0x00, 0xe1, 0x4a, 0x28, - 0x68, 0x12, 0x18, 0x89, 0x60, 0x48, 0x21, 0x00, - 0x00, 0xe0, 0x4a, 0x26, 0x68, 0x12, 0x18, 0x80, - 0x60, 0x41, 0x20, 0x00, 0x00, 0xa1, 0x4a, 0x24, - 0x68, 0x12, 0x50, 0x50, 0x20, 0x00, 0x00, 0xe1, - 0x1b, 0x09, 0x00, 0x89, 0x4a, 0x21, 0x68, 0x12, - 0x52, 0x50, 0xe7, 0xdf, 0x20, 0x00, 0x21, 0x19, - 0x06, 0x89, 0x62, 0x48, 0x48, 0x1e, 0x21, 0x19, - 0x06, 0x89, 0x62, 0x48, 0x20, 0x00, 0x49, 0x1d, - 0x68, 0x09, 0x60, 0x08, 0x20, 0x00, 0x49, 0x1b, - 0x68, 0x09, 0x60, 0x48, 0x20, 0x00, 0x49, 0x19, - 0x68, 0x09, 0x60, 0xc8, 0x20, 0x00, 0x49, 0x17, - 0x68, 0x09, 0x61, 0x08, 0x20, 0x00, 0x49, 0x15, - 0x68, 0x09, 0x61, 0x48, 0x20, 0x00, 0x49, 0x13, - 0x68, 0x09, 0x61, 0x88, 0x20, 0x00, 0x49, 0x12, - 0x68, 0x09, 0x60, 0x08, 0x20, 0x00, 0x49, 0x10, - 0x68, 0x09, 0x60, 0x48, 0x20, 0x00, 0x49, 0x0e, - 0x68, 0x09, 0x60, 0x88, 0x48, 0x0d, 0x68, 0x01, - 0x23, 0x01, 0x43, 0x19, 0x60, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x9e, 0x00, 0x00, 0xc0, - 0x9e, 0x00, 0x09, 0x80, 0x2e, 0x08, 0x9b, 0x28, - 0x2e, 0x08, 0x9b, 0x3c, 0x2e, 0x08, 0x9b, 0x40, - 0x2e, 0x08, 0x9b, 0x38, 0x2e, 0x08, 0x9b, 0x30, - 0x00, 0x40, 0x00, 0x03, 0x2e, 0x08, 0x9b, 0x78, - 0x2e, 0x08, 0x9b, 0x7c, 0x6a, 0x00, 0x00, 0x10, - 0xb5, 0xff, 0xb0, 0x83, 0x98, 0x03, 0x06, 0x04, - 0x0e, 0x24, 0x99, 0x04, 0x04, 0x08, 0x0c, 0x00, - 0x90, 0x00, 0x9a, 0x05, 0x06, 0x10, 0x0e, 0x00, - 0x90, 0x01, 0x9b, 0x06, 0x06, 0x18, 0x0e, 0x00, - 0x90, 0x02, 0xb0, 0x81, 0x00, 0xe0, 0x49, 0xc1, - 0x68, 0x09, 0x18, 0x47, 0x00, 0xa0, 0x49, 0xc0, - 0x68, 0x09, 0x18, 0x45, 0x00, 0xe0, 0x1b, 0x00, - 0x00, 0x80, 0x49, 0xbe, 0x68, 0x09, 0x18, 0x46, - 0x2c, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x04, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x68, 0x28, 0x4b, 0xb9, 0x40, 0x18, 0x60, 0x28, - 0x68, 0x38, 0x4b, 0xb8, 0x40, 0x18, 0x60, 0x38, - 0x68, 0x38, 0x23, 0x40, 0x40, 0x18, 0xd0, 0x17, - 0x68, 0x38, 0x23, 0x40, 0x43, 0xdb, 0x40, 0x18, - 0x60, 0x38, 0x48, 0xb3, 0x68, 0x01, 0x08, 0x49, - 0x00, 0x49, 0x60, 0x01, 0x48, 0xb1, 0x68, 0x01, - 0x23, 0x01, 0x05, 0x5b, 0x43, 0x19, 0x60, 0x01, - 0x98, 0x01, 0x4b, 0xaf, 0x42, 0x98, 0xd1, 0x03, - 0x20, 0x00, 0x49, 0xae, 0x68, 0x09, 0x60, 0x08, - 0x98, 0x01, 0x4b, 0xab, 0x42, 0x98, 0xd0, 0x73, - 0x68, 0x38, 0x23, 0x21, 0x43, 0xdb, 0x40, 0x18, - 0x60, 0x38, 0x68, 0x28, 0x23, 0x07, 0x03, 0x5b, - 0x40, 0x18, 0x60, 0x28, 0x98, 0x01, 0x4b, 0xa6, - 0x40, 0x18, 0x68, 0x29, 0x43, 0x08, 0x60, 0x28, - 0x20, 0x00, 0x75, 0x30, 0x98, 0x02, 0x07, 0x80, - 0x0f, 0x80, 0x28, 0x01, 0xd1, 0x04, 0x88, 0x30, - 0x23, 0x10, 0x43, 0x18, 0x80, 0x30, 0xe0, 0x04, - 0x88, 0x30, 0x23, 0x10, 0x43, 0xdb, 0x40, 0x18, - 0x80, 0x30, 0x98, 0x02, 0x23, 0x80, 0x40, 0x18, - 0x28, 0x80, 0xd1, 0x08, 0x68, 0x38, 0x23, 0x40, - 0x43, 0x18, 0x60, 0x38, 0x20, 0xff, 0x49, 0x97, - 0x68, 0x09, 0x70, 0x08, 0xe0, 0x04, 0x68, 0x38, - 0x23, 0x40, 0x43, 0xdb, 0x40, 0x18, 0x60, 0x38, - 0x98, 0x03, 0x28, 0x01, 0xd1, 0x36, 0x88, 0x30, - 0x23, 0x10, 0x43, 0xdb, 0x40, 0x18, 0x80, 0x30, - 0x20, 0x33, 0x06, 0x40, 0x6d, 0x40, 0x23, 0x0d, - 0x06, 0x9b, 0x1a, 0xc1, 0x00, 0xe0, 0x4a, 0x8c, - 0x68, 0x12, 0x18, 0x80, 0x60, 0x41, 0x20, 0x01, - 0x70, 0xb0, 0x68, 0x38, 0x23, 0x01, 0x03, 0x9b, - 0x43, 0x18, 0x60, 0x38, 0x68, 0x38, 0x4b, 0x87, - 0x43, 0x18, 0x60, 0x38, 0x48, 0x86, 0x70, 0x44, - 0x20, 0x00, 0x49, 0x86, 0x68, 0x09, 0x60, 0x08, - 0x20, 0x01, 0x02, 0xc0, 0x49, 0x84, 0x61, 0x48, - 0x49, 0x83, 0x61, 0x08, 0x20, 0x01, 0x49, 0x83, - 0x64, 0x48, 0x20, 0x00, 0x49, 0x81, 0x64, 0x48, - 0x68, 0x28, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, - 0x60, 0x28, 0x20, 0x00, 0x49, 0x7e, 0x68, 0x09, - 0x60, 0x08, 0xe0, 0x9a, 0x98, 0x03, 0x28, 0x02, - 0xd1, 0x30, 0x20, 0x33, 0x06, 0x40, 0xe0, 0x00, - 0xe0, 0x94, 0x6d, 0xc0, 0x23, 0x0d, 0x06, 0x9b, - 0x1a, 0xc0, 0x00, 0xe1, 0x4a, 0x70, 0x68, 0x12, - 0x18, 0x89, 0x60, 0x48, 0x20, 0x02, 0x70, 0xb0, - 0x68, 0x38, 0x23, 0x01, 0x03, 0xdb, 0x43, 0x18, - 0x60, 0x38, 0x68, 0x38, 0x4b, 0x6b, 0x43, 0x18, - 0x60, 0x38, 0x48, 0x6b, 0x70, 0x84, 0x20, 0x00, - 0x49, 0x6e, 0x60, 0x08, 0x00, 0xe0, 0x49, 0x5b, - 0x68, 0x09, 0x58, 0x08, 0x23, 0xff, 0x33, 0x01, - 0x43, 0x18, 0x00, 0xe1, 0x4a, 0x57, 0x68, 0x12, - 0x50, 0x50, 0x20, 0x4b, 0x49, 0x67, 0x60, 0x08, - 0x68, 0x28, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, - 0x60, 0x28, 0xe0, 0x66, 0x98, 0x03, 0x28, 0x04, - 0xd1, 0x15, 0x20, 0x00, 0x00, 0xe1, 0x4a, 0x5a, - 0x68, 0x12, 0x18, 0x89, 0x60, 0x48, 0x98, 0x03, - 0x70, 0xb0, 0x68, 0x38, 0x23, 0x20, 0x43, 0x18, - 0x60, 0x38, 0x68, 0x38, 0x60, 0x38, 0x48, 0x56, - 0x70, 0x04, 0x68, 0x28, 0x23, 0x01, 0x03, 0x5b, - 0x43, 0x18, 0x60, 0x28, 0xe0, 0x4d, 0x98, 0x03, - 0x23, 0x10, 0x40, 0x18, 0xd0, 0x0f, 0x21, 0x00, - 0x00, 0xe0, 0x4a, 0x4d, 0x68, 0x12, 0x18, 0x80, - 0x60, 0x41, 0x68, 0x38, 0x4b, 0x52, 0x43, 0x18, - 0x60, 0x38, 0x68, 0x38, 0x60, 0x38, 0x37, 0x04, - 0x20, 0x0e, 0x60, 0x38, 0xe0, 0x39, 0x98, 0x03, - 0x28, 0x08, 0xd1, 0x23, 0x48, 0x4d, 0x68, 0x00, - 0x30, 0x60, 0x7e, 0x80, 0x28, 0x00, 0xd0, 0x03, - 0x20, 0x4f, 0xb0, 0x04, 0xe6, 0xf8, 0xe0, 0x67, - 0x20, 0x01, 0x49, 0x48, 0x68, 0x09, 0x31, 0x60, - 0x76, 0x88, 0x48, 0x46, 0x68, 0x00, 0x30, 0x60, - 0x76, 0x04, 0x20, 0x01, 0x49, 0x43, 0x68, 0x09, - 0x31, 0x80, 0x70, 0xc8, 0x49, 0x42, 0x00, 0xe0, - 0x4a, 0x37, 0x68, 0x12, 0x18, 0x80, 0x60, 0x41, - 0x68, 0x28, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, - 0x60, 0x28, 0xe0, 0x12, 0x21, 0x00, 0x00, 0xe0, - 0x4a, 0x31, 0x68, 0x12, 0x18, 0x80, 0x60, 0x41, - 0x98, 0x03, 0x70, 0xb0, 0x68, 0x38, 0x23, 0x20, - 0x43, 0x18, 0x60, 0x38, 0x68, 0x38, 0x60, 0x38, - 0x68, 0x28, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, - 0x60, 0x28, 0xe0, 0x33, 0x98, 0x03, 0x23, 0x10, - 0x40, 0x18, 0xd0, 0x09, 0x1c, 0x20, 0xf0, 0x05, - 0xf8, 0x0f, 0x90, 0x00, 0x28, 0x00, 0xd0, 0x02, - 0x98, 0x00, 0xb0, 0x04, 0xe6, 0xbc, 0xe0, 0x1a, - 0x98, 0x03, 0x28, 0x01, 0xd1, 0x03, 0x20, 0xff, - 0x49, 0x21, 0x70, 0x48, 0xe0, 0x13, 0x98, 0x03, - 0x28, 0x02, 0xd1, 0x03, 0x20, 0xff, 0x49, 0x1e, - 0x70, 0x88, 0xe0, 0x0c, 0x98, 0x03, 0x28, 0x08, - 0xd1, 0x09, 0x20, 0x00, 0x49, 0x21, 0x68, 0x09, - 0x31, 0x80, 0x70, 0xc8, 0x20, 0x00, 0x49, 0x1f, - 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, 0x7d, 0x30, - 0x07, 0xc0, 0x0f, 0xc0, 0x28, 0x01, 0xd1, 0x03, - 0x1c, 0x20, 0x49, 0x1c, 0xf0, 0x00, 0xf9, 0x16, - 0x20, 0x00, 0x70, 0xb0, 0x20, 0x00, 0xb0, 0x04, - 0xe6, 0x92, 0xb0, 0x01, 0xb0, 0x03, 0xe6, 0x8f, - 0xe6, 0x8e, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x3c, - 0x2e, 0x08, 0x9b, 0x38, 0x2e, 0x08, 0x9b, 0x30, - 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0x3f, 0xff, - 0x6a, 0x00, 0x00, 0x18, 0x6c, 0x00, 0x00, 0x20, - 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x9b, 0x44, - 0xff, 0xff, 0x1f, 0xff, 0x2e, 0x08, 0x9b, 0x98, - 0x2e, 0x08, 0x9b, 0x40, 0x00, 0x00, 0x20, 0x01, - 0x2e, 0x08, 0x9b, 0x9c, 0x2e, 0x08, 0x9b, 0x68, - 0xcc, 0x00, 0x0f, 0x00, 0x66, 0x00, 0x00, 0x80, - 0x2e, 0x08, 0x9b, 0xac, 0x2e, 0x08, 0x9b, 0xb0, - 0x00, 0x00, 0x20, 0xa0, 0x2e, 0x08, 0xb9, 0xb0, - 0x66, 0x00, 0x01, 0xf0, 0xff, 0xff, 0x00, 0x00, - 0xb5, 0xff, 0x98, 0x00, 0x06, 0x01, 0x0e, 0x09, - 0x98, 0x01, 0x06, 0x02, 0x0e, 0x12, 0x98, 0x02, - 0x04, 0x07, 0x0c, 0x3f, 0x9b, 0x03, 0x04, 0x1c, - 0x0c, 0x24, 0x29, 0x20, 0xdb, 0x04, 0x20, 0xa2, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2a, 0x02, 0xd1, 0x0a, 0x00, 0xc8, 0x4b, 0x1f, - 0x68, 0x1b, 0x58, 0x18, 0x4b, 0x1e, 0x40, 0x18, - 0x00, 0xcb, 0x4d, 0x1c, 0x68, 0x2d, 0x50, 0xe8, - 0xe0, 0x30, 0x2a, 0x01, 0xd1, 0x0b, 0x00, 0xc8, - 0x4b, 0x18, 0x68, 0x1b, 0x58, 0x18, 0x43, 0x27, - 0x1c, 0x3b, 0x43, 0x18, 0x00, 0xcb, 0x4d, 0x15, - 0x68, 0x2d, 0x50, 0xe8, 0xe0, 0x22, 0x20, 0x00, - 0x28, 0x20, 0xdb, 0x04, 0xe0, 0x1e, 0x1c, 0x43, - 0x06, 0x1b, 0x16, 0x18, 0xe7, 0xf8, 0x2a, 0x03, - 0xd1, 0x0b, 0x00, 0xc3, 0x4d, 0x0d, 0x68, 0x2d, - 0x58, 0xeb, 0x1c, 0x3d, 0x43, 0x25, 0x43, 0x1d, - 0x00, 0xc3, 0x4e, 0x0a, 0x68, 0x36, 0x50, 0xf5, - 0xe0, 0x0b, 0x2a, 0x04, 0xd1, 0x09, 0x00, 0xc3, - 0x4d, 0x06, 0x68, 0x2d, 0x58, 0xed, 0x4b, 0x06, - 0x40, 0x2b, 0x00, 0xc5, 0x4e, 0x03, 0x68, 0x36, - 0x51, 0x73, 0xe7, 0xe0, 0x20, 0x00, 0xe7, 0xbb, - 0xe7, 0xba, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x3c, - 0xff, 0xff, 0xe1, 0xff, 0xb4, 0xb0, 0x1c, 0x07, - 0x1c, 0x0a, 0x06, 0x38, 0x0e, 0x00, 0x06, 0x11, - 0x0e, 0x09, 0x4c, 0x14, 0x68, 0x25, 0x4b, 0x14, - 0x40, 0x2b, 0x60, 0x23, 0x28, 0x01, 0xd1, 0x06, - 0x4c, 0x10, 0x68, 0x25, 0x23, 0x01, 0x04, 0x1b, - 0x43, 0x2b, 0x60, 0x23, 0xe0, 0x07, 0x28, 0x00, - 0xd1, 0x05, 0x4c, 0x0c, 0x68, 0x25, 0x23, 0x01, - 0x05, 0x9b, 0x43, 0x2b, 0x60, 0x23, 0x29, 0x01, - 0xd1, 0x06, 0x4c, 0x08, 0x68, 0x25, 0x23, 0x01, - 0x03, 0x9b, 0x43, 0x2b, 0x60, 0x23, 0xe0, 0x07, - 0x29, 0x02, 0xd1, 0x05, 0x4c, 0x03, 0x68, 0x25, - 0x23, 0x01, 0x03, 0xdb, 0x43, 0x2b, 0x60, 0x23, - 0xbc, 0xb0, 0x47, 0x70, 0x64, 0x00, 0x00, 0x24, - 0xff, 0xbe, 0x3f, 0xff, 0xb5, 0xff, 0x1c, 0x1f, - 0x9c, 0x09, 0xb0, 0x82, 0x98, 0x02, 0x04, 0x00, - 0x0c, 0x00, 0x90, 0x00, 0x99, 0x03, 0x06, 0x0a, - 0x0e, 0x12, 0x98, 0x04, 0x06, 0x05, 0x0e, 0x2d, - 0x98, 0x0c, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x01, - 0x00, 0xd0, 0x1a, 0x80, 0x00, 0x80, 0x4b, 0x1b, - 0x68, 0x1b, 0x18, 0xc1, 0x2a, 0x20, 0xdb, 0x05, - 0x20, 0xa2, 0xb0, 0x02, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2d, 0x1f, 0xdb, 0x02, - 0x20, 0xaf, 0xb0, 0x02, 0xe7, 0xf6, 0x71, 0x8d, - 0x68, 0x3b, 0x00, 0xd0, 0x4e, 0x12, 0x68, 0x36, - 0x19, 0x80, 0x60, 0x43, 0x1c, 0x20, 0x71, 0xc8, - 0x20, 0x00, 0x80, 0x88, 0x20, 0x00, 0x60, 0xc8, - 0x98, 0x00, 0x23, 0x01, 0x43, 0x18, 0x75, 0x08, - 0x98, 0x01, 0x74, 0x88, 0x60, 0x8f, 0x88, 0xb8, - 0x82, 0x08, 0x20, 0x00, 0x74, 0xc8, 0x88, 0xb8, - 0x61, 0x38, 0x20, 0x00, 0x73, 0x38, 0x20, 0x00, - 0x73, 0x78, 0x20, 0x00, 0x73, 0xb8, 0x20, 0x00, - 0x73, 0xf8, 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xd1, - 0xb0, 0x02, 0xe7, 0xcf, 0x2e, 0x08, 0x9b, 0x30, - 0x2e, 0x08, 0x9b, 0x40, 0xb5, 0xf3, 0x98, 0x00, - 0x06, 0x04, 0x0e, 0x24, 0x99, 0x01, 0x04, 0x0d, - 0x0c, 0x2d, 0x00, 0xe0, 0x1b, 0x00, 0x00, 0x80, - 0x49, 0x25, 0x68, 0x09, 0x18, 0x47, 0x2c, 0x20, - 0xdb, 0x04, 0x20, 0xa2, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x4b, 0x21, 0x42, 0x9d, - 0xd1, 0x27, 0x00, 0xe1, 0x4b, 0x20, 0x68, 0x1b, - 0x18, 0xc8, 0x00, 0xa1, 0x4b, 0x1f, 0x68, 0x1b, - 0x18, 0xca, 0x68, 0x11, 0x4b, 0x1e, 0x40, 0x19, - 0x60, 0x11, 0x68, 0x01, 0x23, 0x40, 0x40, 0x19, - 0xd0, 0x13, 0x68, 0x01, 0x23, 0x40, 0x43, 0xdb, - 0x40, 0x19, 0x60, 0x01, 0x21, 0x00, 0x4b, 0x19, - 0x68, 0x1b, 0x70, 0x19, 0x49, 0x18, 0x68, 0x0b, - 0x08, 0x5b, 0x00, 0x5b, 0x60, 0x0b, 0x49, 0x17, - 0x68, 0x0e, 0x23, 0x01, 0x05, 0x5b, 0x43, 0x33, - 0x60, 0x0b, 0x68, 0x01, 0x4b, 0x14, 0x40, 0x19, - 0x60, 0x01, 0x20, 0x00, 0x75, 0x38, 0x20, 0x00, - 0x80, 0x38, 0x20, 0x00, 0x80, 0xb8, 0x68, 0xb8, - 0x72, 0x44, 0x20, 0xa0, 0x68, 0xb9, 0x72, 0x08, - 0x20, 0x00, 0x60, 0xb8, 0x79, 0xb9, 0x20, 0x01, - 0x40, 0x88, 0xf0, 0x12, 0xfe, 0x1f, 0x20, 0x00, - 0x71, 0xb8, 0x20, 0x00, 0xe7, 0xba, 0xe7, 0xb9, - 0x2e, 0x08, 0x9b, 0x30, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x9b, 0x3c, 0x2e, 0x08, 0x9b, 0x38, - 0xff, 0xff, 0xdf, 0xff, 0x2e, 0x08, 0x9b, 0x2c, - 0x6a, 0x00, 0x00, 0x18, 0x6c, 0x00, 0x00, 0x20, - 0xff, 0xff, 0x3f, 0xde, 0xb5, 0xff, 0x1c, 0x05, - 0x1c, 0x0c, 0x1c, 0x17, 0x06, 0x28, 0x0e, 0x00, - 0x06, 0x23, 0x0e, 0x1b, 0x06, 0x39, 0x0e, 0x09, - 0x9e, 0x03, 0x06, 0x36, 0x16, 0x32, 0x28, 0x20, - 0xda, 0x02, 0x4e, 0x08, 0x68, 0x36, 0x60, 0x30, - 0x4e, 0x07, 0x68, 0x36, 0x60, 0x33, 0x4e, 0x07, - 0x68, 0x36, 0x60, 0x31, 0x4e, 0x06, 0x68, 0x36, - 0x60, 0x32, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x58, - 0x2e, 0x08, 0x9b, 0x5c, 0x2e, 0x08, 0x9b, 0x60, - 0x2e, 0x08, 0x9b, 0x64, 0x1c, 0x01, 0x06, 0x08, - 0x0e, 0x00, 0x28, 0x01, 0xd1, 0x04, 0x22, 0x01, - 0x4b, 0x04, 0x68, 0x1b, 0x60, 0x1a, 0xe0, 0x03, - 0x22, 0x02, 0x4b, 0x02, 0x68, 0x1b, 0x60, 0x1a, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0xa0, - 0xb5, 0xf1, 0x98, 0x00, 0x06, 0x04, 0x0e, 0x24, - 0xb0, 0x81, 0x27, 0x00, 0x26, 0x00, 0x4a, 0x55, - 0x92, 0x00, 0x00, 0xe0, 0x49, 0x54, 0x68, 0x09, - 0x58, 0x08, 0x23, 0x03, 0x03, 0x9b, 0x40, 0x18, - 0x23, 0x01, 0x03, 0x9b, 0x42, 0x98, 0xd0, 0x05, - 0x20, 0xa0, 0xb0, 0x01, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0xe0, 0x49, 0x4c, - 0x68, 0x09, 0x58, 0x08, 0x21, 0x20, 0x43, 0x01, - 0x00, 0xe0, 0x4a, 0x49, 0x68, 0x12, 0x50, 0x11, - 0x21, 0x00, 0x48, 0x48, 0xf0, 0x05, 0xfc, 0x3c, - 0x48, 0x47, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x01, - 0xe0, 0x08, 0xe0, 0x82, 0x20, 0x02, 0xf0, 0x0c, - 0xf8, 0x75, 0x1c, 0x38, 0x37, 0x01, 0x4b, 0x43, - 0x42, 0x98, 0xd3, 0xf1, 0x4b, 0x41, 0x42, 0x9f, - 0xd3, 0x00, 0x26, 0xa1, 0x48, 0x40, 0x68, 0x01, - 0x4b, 0x40, 0x40, 0x19, 0x60, 0x01, 0x20, 0x00, - 0x00, 0xe1, 0x1b, 0x09, 0x00, 0x89, 0x4a, 0x3e, - 0x68, 0x12, 0x18, 0x89, 0x70, 0x88, 0x20, 0x00, - 0x43, 0xc0, 0x49, 0x3c, 0x67, 0x48, 0x22, 0x00, - 0xb4, 0x04, 0x1c, 0x20, 0x23, 0x00, 0x22, 0x00, - 0x49, 0x39, 0xf7, 0xff, 0xfc, 0x69, 0xb0, 0x01, - 0x27, 0x00, 0x25, 0x00, 0x2d, 0x04, 0xdb, 0x02, - 0xe0, 0x1e, 0x35, 0x01, 0xe7, 0xfa, 0x00, 0xa9, - 0x22, 0x0f, 0x1c, 0x10, 0x40, 0x88, 0x01, 0x29, - 0x9a, 0x00, 0x18, 0x89, 0x68, 0x49, 0x42, 0xa1, - 0xd1, 0x11, 0x21, 0x33, 0x06, 0x49, 0x6b, 0xc9, - 0x40, 0x01, 0xd0, 0x01, 0x37, 0x01, 0xe0, 0x00, - 0xe0, 0x02, 0x4b, 0x26, 0x42, 0x9f, 0xd3, 0xf4, - 0x4b, 0x24, 0x42, 0x9f, 0xd3, 0x02, 0x26, 0xa1, - 0xe0, 0x02, 0xe0, 0x3a, 0x27, 0x00, 0xe7, 0xe0, - 0x48, 0x26, 0x68, 0x01, 0x23, 0xff, 0x33, 0x01, - 0x43, 0x19, 0x60, 0x01, 0x48, 0x21, 0x6d, 0x80, - 0x49, 0x20, 0x65, 0x88, 0x48, 0x1f, 0x6b, 0xc0, - 0x23, 0x01, 0x07, 0x9b, 0x40, 0x18, 0xd0, 0x00, - 0xe7, 0xf8, 0x20, 0x33, 0x06, 0x40, 0x6d, 0x40, - 0x21, 0x33, 0x06, 0x49, 0x66, 0x48, 0x20, 0x33, - 0x06, 0x40, 0x6d, 0x80, 0x21, 0x33, 0x06, 0x49, - 0x66, 0x88, 0x20, 0x03, 0x02, 0x00, 0x49, 0x15, - 0x67, 0x48, 0x48, 0x11, 0x68, 0x01, 0x23, 0x01, - 0x02, 0x5b, 0x43, 0x19, 0x60, 0x01, 0x20, 0x00, - 0x49, 0x13, 0x65, 0x88, 0x20, 0x00, 0x49, 0x12, - 0x65, 0xc8, 0x20, 0x00, 0x49, 0x10, 0x66, 0x08, - 0x21, 0x00, 0x20, 0xff, 0xf0, 0x05, 0xfb, 0xb8, - 0x1c, 0x30, 0xb0, 0x01, 0xe7, 0x66, 0xb0, 0x01, - 0xe7, 0x64, 0xe7, 0x63, 0x9e, 0x00, 0x00, 0xc0, - 0x2e, 0x08, 0x9b, 0x3c, 0x00, 0x00, 0x80, 0x0f, - 0xcc, 0x00, 0x05, 0x00, 0x00, 0x1e, 0x84, 0x80, - 0x66, 0x00, 0x00, 0x4c, 0xff, 0xff, 0xfd, 0xff, - 0x2e, 0x08, 0x9b, 0x30, 0x66, 0x00, 0x00, 0x80, - 0x00, 0x00, 0xff, 0xff, 0x66, 0x00, 0x00, 0xe0, - 0xcc, 0x00, 0x00, 0x00, 0xb5, 0xf1, 0x98, 0x00, - 0x06, 0x07, 0x0e, 0x3f, 0xb0, 0x81, 0x25, 0x00, - 0x26, 0x00, 0x4a, 0x2e, 0x92, 0x00, 0x00, 0xf8, - 0x49, 0x2d, 0x68, 0x09, 0x58, 0x08, 0x23, 0x03, - 0x03, 0x9b, 0x40, 0x18, 0x23, 0x01, 0x03, 0xdb, - 0x42, 0x98, 0xd0, 0x05, 0x20, 0xa0, 0xb0, 0x01, - 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x22, 0x00, 0xb4, 0x04, 0x1c, 0x38, 0x23, 0x00, - 0x22, 0x00, 0x49, 0x24, 0xf7, 0xff, 0xfb, 0xd0, - 0xb0, 0x01, 0x24, 0x00, 0x2c, 0x04, 0xdb, 0x02, - 0xe0, 0x1e, 0x34, 0x01, 0xe7, 0xfa, 0x00, 0xa1, - 0x22, 0x0f, 0x1c, 0x10, 0x40, 0x88, 0x01, 0x21, - 0x9a, 0x00, 0x18, 0x89, 0x68, 0x49, 0x42, 0xb9, - 0xd1, 0x11, 0x21, 0x33, 0x06, 0x49, 0x6b, 0xc9, - 0x40, 0x01, 0xd0, 0x01, 0x35, 0x01, 0xe0, 0x00, - 0xe0, 0x02, 0x4b, 0x17, 0x42, 0x9d, 0xd3, 0xf4, - 0x4b, 0x15, 0x42, 0x9d, 0xd9, 0x02, 0x26, 0xa1, - 0xe0, 0x02, 0xe0, 0x1d, 0x25, 0x00, 0xe7, 0xe0, - 0x20, 0x04, 0xf0, 0x02, 0xff, 0xb7, 0x20, 0x01, - 0x21, 0x33, 0x06, 0x49, 0x66, 0xc8, 0x21, 0x00, - 0x00, 0xf8, 0x4a, 0x0b, 0x68, 0x12, 0x50, 0x11, - 0x21, 0x00, 0x00, 0xf8, 0x4a, 0x08, 0x68, 0x12, - 0x18, 0x80, 0x60, 0x41, 0x21, 0x00, 0x00, 0xb8, - 0x4a, 0x08, 0x68, 0x12, 0x50, 0x11, 0x1c, 0x30, - 0xb0, 0x01, 0xe7, 0xb5, 0xb0, 0x01, 0xe7, 0xb3, - 0xe7, 0xb2, 0x00, 0x00, 0x9e, 0x00, 0x00, 0xc0, - 0x2e, 0x08, 0x9b, 0x3c, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x01, 0xd4, 0xc0, 0x2e, 0x08, 0x9b, 0x38, - 0xb5, 0xff, 0x99, 0x01, 0x06, 0x0f, 0x0e, 0x3f, - 0x9a, 0x02, 0x06, 0x15, 0x0e, 0x2d, 0x9b, 0x03, - 0x06, 0x1e, 0x0e, 0x36, 0x2d, 0x1f, 0xdb, 0x04, - 0x20, 0xaf, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x2f, 0x20, 0xdb, 0x01, 0x20, 0xa2, - 0xe7, 0xf7, 0x2e, 0x80, 0xd0, 0x13, 0xf0, 0x12, - 0xfc, 0xc3, 0x1c, 0x04, 0x1c, 0x39, 0x22, 0x80, - 0x20, 0x01, 0xf0, 0x00, 0xfb, 0x6d, 0x2c, 0x80, - 0xd0, 0x01, 0xf0, 0x12, 0xfc, 0xef, 0x98, 0x00, - 0x21, 0x80, 0x68, 0x49, 0x60, 0x08, 0x48, 0x09, - 0x68, 0x00, 0x70, 0x05, 0xe0, 0x0b, 0xf0, 0x12, - 0xfc, 0xaf, 0x1c, 0x04, 0x1c, 0x39, 0x22, 0x80, - 0x20, 0x02, 0xf0, 0x00, 0xfb, 0x59, 0x2c, 0x80, - 0xd0, 0x01, 0xf0, 0x12, 0xfc, 0xdb, 0x20, 0x00, - 0xe7, 0xd3, 0xe7, 0xd2, 0x2e, 0x08, 0x9b, 0x88, - 0xb5, 0xff, 0x99, 0x01, 0x06, 0x0e, 0x0e, 0x36, - 0x9a, 0x02, 0x06, 0x17, 0x0e, 0x3f, 0x9b, 0x03, - 0x06, 0x1c, 0x0e, 0x24, 0xb0, 0x82, 0x20, 0x80, - 0x40, 0x38, 0x90, 0x00, 0x06, 0x7f, 0x0e, 0x7f, - 0x2e, 0x1f, 0xdb, 0x05, 0x20, 0xaf, 0xb0, 0x02, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2c, 0x20, 0xdb, 0x02, 0x20, 0xa2, 0xb0, 0x02, - 0xe7, 0xf6, 0x2f, 0x04, 0xd1, 0x00, 0x27, 0x00, - 0x00, 0xe0, 0x1b, 0x00, 0x00, 0x80, 0x49, 0x17, - 0x68, 0x09, 0x18, 0x40, 0x90, 0x01, 0x98, 0x00, - 0x28, 0x00, 0xd0, 0x0d, 0xf0, 0x12, 0xfc, 0x74, - 0x1c, 0x05, 0x1c, 0x21, 0x22, 0x01, 0x02, 0x92, - 0x20, 0x02, 0xf0, 0x00, 0xfb, 0x1d, 0x2d, 0x80, - 0xd0, 0x01, 0xf0, 0x12, 0xfc, 0x9f, 0xe0, 0x13, - 0xf0, 0x12, 0xfc, 0x66, 0x1c, 0x05, 0x1c, 0x21, - 0x22, 0x01, 0x02, 0x92, 0x20, 0x01, 0xf0, 0x00, - 0xfb, 0x0f, 0x2d, 0x80, 0xd0, 0x01, 0xf0, 0x12, - 0xfc, 0x91, 0x98, 0x02, 0x21, 0x80, 0x68, 0x89, - 0x60, 0x08, 0x20, 0x80, 0x6a, 0x00, 0x55, 0xc6, - 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xc4, 0xb0, 0x02, - 0xe7, 0xc2, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x30, - 0xb5, 0xff, 0xb0, 0x82, 0x99, 0x03, 0x04, 0x0d, - 0x0c, 0x2d, 0x9a, 0x04, 0x06, 0x10, 0x0e, 0x00, - 0x90, 0x00, 0x9b, 0x05, 0x06, 0x18, 0x0e, 0x00, - 0x90, 0x01, 0x98, 0x00, 0x28, 0x1f, 0xdb, 0x05, - 0x20, 0xaf, 0xb0, 0x02, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x98, 0x01, 0x23, 0x80, - 0x40, 0x18, 0xd1, 0x2f, 0x98, 0x00, 0x49, 0x2c, - 0x68, 0x09, 0x73, 0x08, 0x27, 0x00, 0x2f, 0x20, - 0xdb, 0x04, 0xe0, 0x26, 0x1c, 0x78, 0x06, 0x07, - 0x0e, 0x3f, 0xe7, 0xf8, 0x20, 0x01, 0x40, 0xb8, - 0x99, 0x02, 0x40, 0x08, 0xd0, 0x1c, 0x24, 0x00, - 0x20, 0x40, 0x40, 0x28, 0xd0, 0x04, 0x04, 0x20, - 0x0c, 0x00, 0x24, 0x01, 0x03, 0xa4, 0x43, 0x04, - 0x20, 0x80, 0x40, 0x28, 0xd0, 0x04, 0x04, 0x20, - 0x0c, 0x00, 0x24, 0x01, 0x03, 0xe4, 0x43, 0x04, - 0xf0, 0x12, 0xfc, 0x0e, 0x1c, 0x06, 0x1c, 0x22, - 0x1c, 0x39, 0x20, 0x01, 0xf0, 0x00, 0xfa, 0xb8, - 0x2e, 0x80, 0xd0, 0x01, 0xf0, 0x12, 0xfc, 0x3a, - 0xe7, 0xd8, 0xe0, 0x24, 0x27, 0x00, 0x2f, 0x20, - 0xdb, 0x04, 0xe0, 0x20, 0x1c, 0x78, 0x06, 0x07, - 0x0e, 0x3f, 0xe7, 0xf8, 0x20, 0x01, 0x40, 0xb8, - 0x99, 0x02, 0x40, 0x08, 0xd0, 0x16, 0x24, 0x00, - 0x20, 0x40, 0x40, 0x28, 0xd0, 0x01, 0x4b, 0x0d, - 0x40, 0x1c, 0x20, 0x80, 0x40, 0x28, 0xd0, 0x01, - 0x04, 0x64, 0x0c, 0x64, 0xf0, 0x12, 0xfb, 0xe8, - 0x1c, 0x06, 0x1c, 0x22, 0x1c, 0x39, 0x20, 0x02, - 0xf0, 0x00, 0xfa, 0x92, 0x2e, 0x80, 0xd0, 0x01, - 0xf0, 0x12, 0xfc, 0x14, 0xe7, 0xde, 0x20, 0x00, - 0xb0, 0x02, 0xe7, 0x9f, 0xb0, 0x02, 0xe7, 0x9d, - 0x2e, 0x08, 0x9b, 0x7c, 0x00, 0x00, 0xbf, 0xff, - 0xb5, 0x80, 0x1c, 0x07, 0x48, 0x07, 0x68, 0x01, - 0x20, 0x00, 0xf0, 0x1b, 0xfa, 0xad, 0x60, 0x38, - 0x48, 0x04, 0x68, 0x00, 0x1d, 0x01, 0x20, 0x00, - 0xf0, 0x1b, 0xfa, 0xa6, 0x60, 0x78, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x9b, 0x7c, - 0xb5, 0xf7, 0x1c, 0x07, 0x99, 0x01, 0x06, 0x0e, - 0x0e, 0x36, 0x9a, 0x02, 0x06, 0x14, 0x0e, 0x24, - 0x2e, 0x1f, 0xdb, 0x04, 0x20, 0xaf, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x20, - 0xdb, 0x01, 0x20, 0xa2, 0xe7, 0xf7, 0x20, 0x80, - 0x40, 0x20, 0xd0, 0x0d, 0xf0, 0x12, 0xfb, 0xa8, - 0x1c, 0x05, 0x1c, 0x21, 0x22, 0x01, 0x02, 0xd2, - 0x20, 0x02, 0xf0, 0x00, 0xfa, 0x51, 0x2d, 0x80, - 0xd0, 0x01, 0xf0, 0x12, 0xfb, 0xd3, 0xe0, 0x16, - 0x48, 0x0c, 0x68, 0x00, 0x60, 0x07, 0x48, 0x0b, - 0x68, 0x00, 0x71, 0x46, 0x20, 0xff, 0x49, 0x09, - 0x68, 0x09, 0x71, 0x08, 0xf0, 0x12, 0xfb, 0x90, - 0x1c, 0x05, 0x1c, 0x21, 0x22, 0x01, 0x02, 0xd2, - 0x20, 0x01, 0xf0, 0x00, 0xfa, 0x39, 0x2d, 0x80, - 0xd0, 0x01, 0xf0, 0x12, 0xfb, 0xbb, 0x20, 0x00, - 0xe7, 0xcd, 0xe7, 0xcc, 0x2e, 0x08, 0x9b, 0x80, - 0xb5, 0xf7, 0x1c, 0x07, 0x99, 0x01, 0x06, 0x0e, - 0x0e, 0x36, 0x9a, 0x02, 0x06, 0x14, 0x0e, 0x24, - 0x2e, 0x1f, 0xdb, 0x04, 0x20, 0xaf, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x20, - 0xdb, 0x01, 0x20, 0xa2, 0xe7, 0xf7, 0x20, 0x80, - 0x40, 0x20, 0xd0, 0x0d, 0xf0, 0x12, 0xfb, 0x68, - 0x1c, 0x05, 0x1c, 0x21, 0x22, 0x01, 0x03, 0x12, - 0x20, 0x02, 0xf0, 0x00, 0xfa, 0x11, 0x2d, 0x80, - 0xd0, 0x01, 0xf0, 0x12, 0xfb, 0x93, 0xe0, 0x16, - 0x48, 0x0c, 0x68, 0x00, 0x60, 0x07, 0x48, 0x0b, - 0x68, 0x00, 0x71, 0x46, 0x20, 0xff, 0x49, 0x09, - 0x68, 0x09, 0x71, 0x08, 0xf0, 0x12, 0xfb, 0x50, - 0x1c, 0x05, 0x1c, 0x21, 0x22, 0x01, 0x03, 0x12, - 0x20, 0x01, 0xf0, 0x00, 0xf9, 0xf9, 0x2d, 0x80, - 0xd0, 0x01, 0xf0, 0x12, 0xfb, 0x7b, 0x20, 0x00, - 0xe7, 0xcd, 0xe7, 0xcc, 0x2e, 0x08, 0x9b, 0x84, - 0xb5, 0xff, 0xb0, 0x81, 0x98, 0x01, 0x06, 0x00, - 0x0e, 0x00, 0x90, 0x00, 0x99, 0x02, 0x06, 0x0d, - 0x0e, 0x2d, 0x9a, 0x03, 0x06, 0x16, 0x0e, 0x36, - 0x9f, 0x04, 0x1c, 0x29, 0x98, 0x00, 0xf0, 0x00, - 0xf8, 0x91, 0x28, 0x00, 0xd0, 0x05, 0x20, 0xa2, - 0xb0, 0x01, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x79, 0x38, 0x79, 0x79, 0x18, 0x40, - 0x79, 0xb9, 0x18, 0x40, 0x06, 0x04, 0x0e, 0x24, - 0x79, 0xb8, 0x02, 0x00, 0x43, 0x04, 0x00, 0x68, - 0x19, 0x80, 0x01, 0x00, 0x49, 0x15, 0x68, 0x09, - 0x50, 0x0c, 0x9b, 0x04, 0x88, 0x99, 0x00, 0x68, - 0x19, 0x80, 0x01, 0x00, 0x4a, 0x11, 0x68, 0x12, - 0x18, 0x80, 0x60, 0x41, 0x78, 0x78, 0x78, 0x39, - 0x18, 0x40, 0x78, 0xb9, 0x18, 0x40, 0x06, 0x04, - 0x0e, 0x24, 0x78, 0xb8, 0x02, 0x00, 0x43, 0x04, - 0x00, 0x68, 0x19, 0x80, 0x01, 0x00, 0x49, 0x09, - 0x68, 0x09, 0x18, 0x40, 0x60, 0x84, 0x9b, 0x04, - 0x88, 0x19, 0x00, 0x68, 0x19, 0x80, 0x01, 0x00, - 0x4a, 0x04, 0x68, 0x12, 0x18, 0x80, 0x60, 0xc1, - 0x20, 0x00, 0xb0, 0x01, 0xe7, 0xc5, 0xb0, 0x01, - 0xe7, 0xc3, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x34, - 0xb5, 0xff, 0x1c, 0x07, 0x06, 0x3d, 0x0e, 0x2d, - 0x99, 0x01, 0x06, 0x0c, 0x0e, 0x24, 0x9a, 0x02, - 0x06, 0x16, 0x0e, 0x36, 0x1c, 0x21, 0x1c, 0x28, - 0xf0, 0x00, 0xf8, 0x40, 0x28, 0x00, 0xd0, 0x04, - 0x20, 0xa2, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x9a, 0x03, 0x1c, 0x31, 0x1c, 0x20, - 0xf0, 0x00, 0xf8, 0x02, 0xe7, 0xf5, 0xe7, 0xf4, - 0xb4, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x13, - 0x06, 0x21, 0x0e, 0x09, 0x06, 0x3a, 0x0e, 0x12, - 0x29, 0x10, 0xdb, 0x02, 0x20, 0xa2, 0xbc, 0xf0, - 0x47, 0x70, 0x88, 0xdd, 0x00, 0x48, 0x18, 0x80, - 0x01, 0x00, 0x4e, 0x0f, 0x68, 0x36, 0x50, 0x35, - 0x88, 0x98, 0x00, 0x4d, 0x18, 0xad, 0x01, 0x2d, - 0x4e, 0x0b, 0x68, 0x36, 0x19, 0xad, 0x60, 0x68, - 0x88, 0x58, 0x00, 0x4d, 0x18, 0xad, 0x01, 0x2d, - 0x4e, 0x07, 0x68, 0x36, 0x19, 0xad, 0x60, 0xa8, - 0x88, 0x18, 0x00, 0x4d, 0x18, 0xad, 0x01, 0x2d, - 0x4e, 0x03, 0x68, 0x36, 0x19, 0xad, 0x60, 0xe8, - 0x20, 0x00, 0xe7, 0xdc, 0xe7, 0xdb, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0x34, 0xb4, 0xb0, 0x1c, 0x07, - 0x1c, 0x0a, 0x06, 0x39, 0x0e, 0x09, 0x06, 0x15, - 0x0e, 0x2d, 0xb0, 0x81, 0x29, 0x20, 0xdb, 0x03, - 0x20, 0xa2, 0xb0, 0x01, 0xbc, 0xb0, 0x47, 0x70, - 0x2d, 0x10, 0xdb, 0x02, 0x20, 0xa2, 0xb0, 0x01, - 0xe7, 0xf8, 0x00, 0xc8, 0x4b, 0x0a, 0x68, 0x1b, - 0x18, 0xc4, 0x68, 0x20, 0x90, 0x00, 0x98, 0x00, - 0x4b, 0x08, 0x40, 0x18, 0x90, 0x00, 0x00, 0x68, - 0x23, 0x1e, 0x40, 0x18, 0x9b, 0x00, 0x43, 0x18, - 0x90, 0x00, 0x98, 0x00, 0x60, 0x20, 0x20, 0x00, - 0xb0, 0x01, 0xe7, 0xe3, 0xb0, 0x01, 0xe7, 0xe1, - 0x2e, 0x08, 0x9b, 0x3c, 0xff, 0xff, 0xdf, 0xe1, - 0x20, 0xff, 0x49, 0x02, 0x68, 0x09, 0x70, 0x08, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x98, - 0xb4, 0xb0, 0x1c, 0x07, 0x1c, 0x0a, 0xb0, 0x83, - 0x20, 0x00, 0x43, 0xc0, 0x23, 0x19, 0x06, 0x9b, - 0x67, 0x58, 0x08, 0xb9, 0x00, 0x89, 0x1a, 0x78, - 0x90, 0x02, 0x98, 0x02, 0x18, 0x10, 0x07, 0x80, - 0x0f, 0x80, 0x90, 0x01, 0x98, 0x02, 0x18, 0x10, - 0x08, 0x80, 0x90, 0x00, 0x9b, 0x02, 0x20, 0x03, - 0x1a, 0xc0, 0x23, 0x19, 0x06, 0x9b, 0x67, 0xd8, - 0x24, 0x00, 0x98, 0x00, 0x42, 0x84, 0xd3, 0x02, - 0xe0, 0x06, 0x34, 0x01, 0xe7, 0xf9, 0xc9, 0x08, - 0x20, 0x19, 0x06, 0x80, 0x67, 0x03, 0xe7, 0xf8, - 0x98, 0x01, 0x28, 0x00, 0xd0, 0x0b, 0x9b, 0x01, - 0x00, 0xd8, 0x25, 0x00, 0x43, 0xed, 0x40, 0xc5, - 0x1c, 0x2b, 0x43, 0xdb, 0x68, 0x0d, 0x40, 0x2b, - 0x25, 0x19, 0x06, 0xad, 0x67, 0x2b, 0x20, 0x19, - 0x06, 0x80, 0x6f, 0x40, 0xb0, 0x03, 0xbc, 0xb0, - 0x47, 0x70, 0xb0, 0x03, 0xe7, 0xfb, 0x1c, 0x01, - 0x06, 0x08, 0x0e, 0x00, 0x22, 0x19, 0x06, 0x92, - 0x63, 0x90, 0x47, 0x70, 0xb4, 0xf0, 0x48, 0x4d, - 0x6a, 0x80, 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x74, - 0x22, 0x00, 0x27, 0x00, 0x49, 0x4a, 0x20, 0x00, - 0x28, 0x20, 0xdb, 0x04, 0xe0, 0x16, 0x1c, 0x43, - 0x06, 0x18, 0x0e, 0x00, 0xe7, 0xf8, 0x00, 0x83, - 0x58, 0xcc, 0x23, 0x01, 0x03, 0x5b, 0x40, 0x23, - 0xd0, 0x0b, 0x24, 0x01, 0x40, 0x84, 0x1c, 0x23, - 0x43, 0x1f, 0x00, 0x83, 0x58, 0xcc, 0x23, 0x01, - 0x03, 0x5b, 0x43, 0x9c, 0x1c, 0x23, 0x00, 0x84, - 0x51, 0x0b, 0xe7, 0xe8, 0x20, 0x00, 0x28, 0x04, - 0xdb, 0x04, 0xe0, 0x1a, 0x1c, 0x43, 0x06, 0x18, - 0x0e, 0x00, 0xe7, 0xf8, 0x01, 0x05, 0x4b, 0x39, - 0x18, 0xec, 0x22, 0x00, 0x2a, 0x04, 0xdb, 0x04, - 0xe0, 0x0e, 0x1c, 0x53, 0x06, 0x1a, 0x0e, 0x12, - 0xe7, 0xf8, 0x4b, 0x35, 0x60, 0x23, 0x4b, 0x35, - 0x60, 0x63, 0x23, 0x00, 0x60, 0xa3, 0x23, 0x00, - 0x60, 0xe3, 0x34, 0xff, 0x34, 0x01, 0xe7, 0xf0, - 0xe7, 0xe4, 0xb0, 0x82, 0x4b, 0x2b, 0x69, 0xdc, - 0x23, 0x0c, 0x40, 0x23, 0x08, 0x9c, 0xab, 0x01, - 0x70, 0x1c, 0x4b, 0x28, 0x69, 0xdc, 0x23, 0x30, - 0x40, 0x23, 0x09, 0x1c, 0xab, 0x00, 0x70, 0x1c, - 0xab, 0x01, 0x78, 0x1b, 0xac, 0x00, 0x78, 0x24, - 0x42, 0xa3, 0xd1, 0x09, 0x23, 0x33, 0x06, 0x5b, - 0x6b, 0xdb, 0x2b, 0x00, 0xd1, 0x04, 0x4b, 0x1f, - 0x6a, 0x9b, 0x07, 0xdb, 0x0f, 0xdb, 0xd0, 0x21, - 0x4b, 0x1c, 0x69, 0xdd, 0x23, 0x0c, 0x40, 0x2b, - 0x08, 0x9c, 0x00, 0xa5, 0x26, 0x01, 0x40, 0xae, - 0x1c, 0x33, 0x25, 0x33, 0x06, 0x6d, 0x64, 0x2b, - 0x25, 0x01, 0x40, 0xa5, 0x1c, 0x2b, 0x4d, 0x1a, - 0x63, 0xab, 0x4b, 0x14, 0x69, 0xdd, 0x23, 0x0c, - 0x40, 0x2b, 0x08, 0x9d, 0xab, 0x01, 0x70, 0x1d, - 0xe0, 0x00, 0xe0, 0x1d, 0x4b, 0x0f, 0x69, 0xdd, - 0x23, 0x30, 0x40, 0x2b, 0x09, 0x1d, 0xab, 0x00, - 0x70, 0x1d, 0xe7, 0xcd, 0xb0, 0x02, 0x20, 0x00, - 0x28, 0x20, 0xdb, 0x04, 0xe0, 0x10, 0x1c, 0x43, - 0x06, 0x18, 0x0e, 0x00, 0xe7, 0xf8, 0x24, 0x01, - 0x40, 0x84, 0x1c, 0x23, 0x40, 0x3b, 0xd0, 0x06, - 0x00, 0x83, 0x58, 0xcc, 0x23, 0x01, 0x03, 0x5b, - 0x43, 0x23, 0x00, 0x84, 0x51, 0x0b, 0xe7, 0xee, - 0xbc, 0xf0, 0x47, 0x70, 0x66, 0x00, 0x01, 0x00, - 0x64, 0x00, 0x00, 0x80, 0x9e, 0x00, 0x00, 0xc0, - 0x9e, 0x00, 0x00, 0x00, 0x2e, 0x0f, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x80, 0xb4, 0x80, 0x1c, 0x03, - 0x1c, 0x0a, 0x48, 0x0a, 0x68, 0x00, 0x68, 0x01, - 0x20, 0x19, 0x06, 0x80, 0x6a, 0x80, 0x0a, 0x40, - 0x00, 0x4f, 0x43, 0x38, 0x60, 0x18, 0x0f, 0xc8, - 0x07, 0xc0, 0x60, 0x10, 0x68, 0x10, 0x0f, 0xc0, - 0x60, 0x10, 0x20, 0x00, 0xbc, 0x80, 0x47, 0x70, - 0xe7, 0xfc, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0xa4, - 0xb5, 0x80, 0x1c, 0x07, 0x48, 0x05, 0x68, 0x00, - 0x1d, 0xc1, 0x31, 0x01, 0x20, 0x00, 0xf0, 0x1b, - 0xf8, 0x37, 0x60, 0x38, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x7c, - 0xb4, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x13, - 0x06, 0x20, 0x0e, 0x00, 0x06, 0x39, 0x0e, 0x09, - 0x04, 0x1a, 0x0c, 0x12, 0x4d, 0x07, 0x68, 0x2d, - 0x70, 0xe8, 0x4d, 0x06, 0x68, 0x2d, 0x70, 0xa9, - 0x4d, 0x04, 0x68, 0x2d, 0x80, 0x2a, 0x25, 0x01, - 0x04, 0x2d, 0x26, 0x33, 0x06, 0x76, 0x60, 0x35, - 0xbc, 0xf0, 0x47, 0x70, 0x2e, 0x08, 0x9b, 0xa8, - 0x20, 0x0d, 0x06, 0xc0, 0x69, 0xc0, 0x47, 0x70, - 0xe7, 0xfd, 0x1c, 0x01, 0x31, 0x01, 0x23, 0x2d, - 0x01, 0x1b, 0x42, 0x99, 0xd9, 0x03, 0x20, 0x2d, - 0x01, 0x00, 0x47, 0x70, 0xe0, 0x01, 0x1c, 0x08, - 0xe7, 0xfb, 0xe7, 0xfa, 0xb5, 0xf3, 0xb0, 0x85, - 0x20, 0x00, 0x90, 0x03, 0x20, 0x00, 0x90, 0x02, - 0x9f, 0x05, 0x69, 0x3d, 0x69, 0x38, 0x28, 0x13, - 0xd1, 0x05, 0x20, 0x75, 0xb0, 0x05, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x99, 0x06, - 0x68, 0x88, 0x68, 0x09, 0x1a, 0x40, 0x1c, 0x41, - 0x91, 0x04, 0x69, 0x78, 0x23, 0x04, 0x40, 0x18, - 0xd0, 0x02, 0x99, 0x04, 0x08, 0x49, 0x91, 0x04, - 0x00, 0xa8, 0x49, 0xf8, 0x58, 0x08, 0x99, 0x04, - 0x43, 0x48, 0x61, 0xf8, 0x99, 0x06, 0x68, 0x88, - 0x68, 0x09, 0x1a, 0x40, 0x30, 0x01, 0x63, 0xb8, - 0x68, 0xf8, 0x90, 0x01, 0x48, 0xf2, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x06, 0x98, 0x01, 0x28, 0x19, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0xe0, 0x05, 0x98, 0x01, 0x28, 0x08, 0xd3, 0x01, - 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, - 0xd0, 0x07, 0x1d, 0xf8, 0x30, 0x21, 0x99, 0x06, - 0xf0, 0x02, 0xf9, 0xea, 0x20, 0x00, 0xb0, 0x05, - 0xe7, 0xc5, 0x49, 0xe6, 0x20, 0x91, 0xf0, 0x1a, - 0xff, 0xb7, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, - 0xf0, 0x0b, 0xfb, 0x64, 0xe7, 0xf5, 0x98, 0x01, - 0x00, 0x80, 0x49, 0xe1, 0x58, 0x08, 0x99, 0x05, - 0x42, 0x88, 0xd0, 0x05, 0x20, 0x92, 0x49, 0xdd, - 0x60, 0x08, 0x20, 0xff, 0xb0, 0x05, 0xe7, 0xae, - 0x48, 0xd9, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, - 0x2d, 0x0b, 0xdb, 0x26, 0x2d, 0x12, 0xdc, 0x24, - 0x2d, 0x0b, 0xdb, 0x0b, 0x2d, 0x12, 0xdc, 0x09, - 0x48, 0xd6, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, - 0x1d, 0xf8, 0x30, 0x21, 0x99, 0x06, 0xf0, 0x02, - 0xf9, 0xbb, 0xe0, 0x16, 0x6b, 0x38, 0xf7, 0xff, - 0xff, 0x7c, 0x90, 0x00, 0x6a, 0xb9, 0x9a, 0x00, - 0x48, 0xcf, 0xf0, 0x0c, 0xfb, 0x4b, 0x1d, 0xf8, - 0x30, 0x21, 0x99, 0x06, 0xf0, 0x02, 0xf9, 0xac, - 0x6b, 0x38, 0xf7, 0xff, 0xff, 0x6e, 0x90, 0x00, - 0x6a, 0xb9, 0x9a, 0x00, 0x48, 0xc8, 0xf0, 0x0c, - 0xfb, 0x6b, 0x48, 0xc8, 0x68, 0x00, 0x99, 0x05, - 0x42, 0x88, 0xd1, 0x30, 0x48, 0xc0, 0x68, 0x00, - 0x28, 0x00, 0xd1, 0x2c, 0x48, 0xc1, 0x68, 0x00, - 0x28, 0x00, 0xd1, 0x0a, 0x20, 0x0d, 0x06, 0xc0, - 0x68, 0xc0, 0x90, 0x02, 0x98, 0x02, 0x28, 0x01, - 0xd1, 0x03, 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, - 0x60, 0xc8, 0x48, 0xba, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x0d, 0x6a, 0xb8, 0x30, 0x01, 0x05, 0x00, - 0x6a, 0xf9, 0x31, 0x01, 0x02, 0x89, 0x43, 0x08, - 0x6b, 0x79, 0x31, 0x02, 0x43, 0x08, 0x21, 0x0d, - 0x06, 0xc9, 0x61, 0x88, 0xe0, 0x0b, 0x6a, 0xb8, - 0x30, 0x01, 0x05, 0x00, 0x6a, 0xf9, 0x31, 0x01, - 0x02, 0x89, 0x43, 0x08, 0x6b, 0x79, 0x31, 0x02, - 0x43, 0x08, 0x49, 0xaf, 0x60, 0x08, 0x2d, 0x0b, - 0xdb, 0x15, 0x2d, 0x12, 0xdc, 0x13, 0x48, 0xa9, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x0f, 0x48, 0xa4, - 0x68, 0x00, 0x28, 0x00, 0xd1, 0x0b, 0x20, 0x00, - 0x62, 0xb8, 0x20, 0x00, 0x62, 0xf8, 0x48, 0xa7, - 0x63, 0x38, 0x48, 0xa7, 0x63, 0x78, 0x6b, 0x38, - 0xf7, 0xff, 0xff, 0x1b, 0x90, 0x00, 0x48, 0x9c, - 0x68, 0x00, 0x28, 0x00, 0xd1, 0x16, 0x20, 0x0d, - 0x06, 0xc0, 0x68, 0x80, 0x90, 0x03, 0x20, 0x00, - 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, 0xf0, 0x01, - 0xfb, 0x07, 0x6b, 0x38, 0xf7, 0xff, 0xff, 0x09, - 0x90, 0x00, 0x9a, 0x00, 0x99, 0x01, 0x1c, 0x38, - 0xf0, 0x01, 0xfa, 0x8c, 0x98, 0x03, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x88, 0x48, 0x93, 0x68, 0x00, - 0x99, 0x05, 0x42, 0x88, 0xd1, 0x0b, 0x48, 0x8c, - 0x68, 0x00, 0x28, 0x00, 0xd1, 0x07, 0x48, 0x8d, - 0x68, 0x00, 0x28, 0x00, 0xd1, 0x03, 0x98, 0x02, - 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, 0x48, 0x86, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x73, 0x48, 0x87, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x6f, 0xb0, 0x84, - 0x98, 0x05, 0xf0, 0x0c, 0xf9, 0xe1, 0x28, 0x00, - 0xd1, 0x0e, 0x2d, 0x0b, 0xdb, 0x01, 0x2d, 0x12, - 0xdd, 0x0a, 0x1d, 0xf8, 0x30, 0x21, 0x99, 0x0a, - 0xf0, 0x02, 0xf9, 0x12, 0x20, 0x92, 0x49, 0x7b, - 0x60, 0x08, 0x20, 0x00, 0xb0, 0x09, 0xe6, 0xea, - 0x49, 0x80, 0x20, 0x91, 0xf0, 0x1a, 0xfe, 0xdc, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0c, - 0xfa, 0x22, 0x20, 0x92, 0x49, 0x7b, 0x60, 0x08, - 0x20, 0x01, 0x49, 0x7b, 0x68, 0x09, 0x60, 0x08, - 0x2d, 0x0b, 0xdb, 0x39, 0x2d, 0x12, 0xdc, 0x37, - 0xb0, 0x81, 0x24, 0x00, 0x20, 0x00, 0x90, 0x03, - 0x20, 0x01, 0x49, 0x75, 0x68, 0x09, 0x23, 0x07, - 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, 0x6a, 0xb8, - 0x30, 0x01, 0x05, 0x00, 0x6a, 0xf9, 0x31, 0x01, - 0x02, 0x89, 0x43, 0x08, 0x6b, 0x79, 0x31, 0x02, - 0x43, 0x08, 0x90, 0x00, 0x20, 0x00, 0x62, 0xb8, - 0x20, 0x00, 0x62, 0xf8, 0x48, 0x67, 0x63, 0x38, - 0x48, 0x67, 0x63, 0x78, 0x6b, 0x38, 0xf7, 0xff, - 0xfe, 0x9c, 0x90, 0x02, 0x48, 0x66, 0x68, 0x00, - 0x23, 0x77, 0x01, 0x1b, 0x18, 0xc0, 0x9a, 0x02, - 0x1c, 0x39, 0xf0, 0x0b, 0xfe, 0x05, 0x98, 0x00, - 0x49, 0x61, 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xc9, 0x66, 0xc8, 0x48, 0x5e, 0x68, 0x00, - 0xf0, 0x0c, 0xf9, 0xf8, 0xb0, 0x01, 0xe1, 0x2b, - 0x24, 0x00, 0x26, 0x00, 0x2e, 0x00, 0xd1, 0x16, - 0x2c, 0x07, 0xd2, 0x14, 0x6a, 0xf8, 0x05, 0x81, - 0x0d, 0x89, 0x1c, 0x20, 0x34, 0x01, 0x00, 0x83, - 0x18, 0x18, 0x00, 0xc0, 0xe0, 0x00, 0xe1, 0x3c, - 0x4a, 0x53, 0x68, 0x12, 0x18, 0x80, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0x81, - 0xd1, 0x00, 0x26, 0x01, 0xe7, 0xe6, 0x2e, 0x00, - 0xd1, 0x13, 0x2c, 0x18, 0xd2, 0x11, 0x6a, 0xf8, - 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x20, 0x34, 0x01, - 0x23, 0x4c, 0x43, 0x58, 0x4a, 0x48, 0x68, 0x12, - 0x18, 0x80, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x69, 0x40, 0x42, 0x81, 0xd1, 0x00, 0x26, 0x01, - 0xe7, 0xe9, 0x3c, 0x01, 0x6b, 0x38, 0xf7, 0xff, - 0xfe, 0x50, 0x90, 0x01, 0x2c, 0x07, 0xd2, 0x05, - 0x48, 0x3f, 0x68, 0x01, 0x1c, 0x20, 0xf0, 0x0b, - 0xfc, 0xcb, 0xe0, 0x06, 0x2c, 0x18, 0xd2, 0x04, - 0x1f, 0xe0, 0x49, 0x3b, 0x68, 0x09, 0xf0, 0x0b, - 0xfd, 0x01, 0x48, 0x3a, 0x49, 0x38, 0x68, 0x09, - 0x23, 0x09, 0x01, 0xdb, 0x18, 0xc9, 0x66, 0xc8, - 0x48, 0x36, 0x49, 0x35, 0x68, 0x09, 0x23, 0x09, - 0x01, 0xdb, 0x18, 0xc9, 0x67, 0x08, 0x48, 0x33, - 0x49, 0x31, 0x68, 0x09, 0x23, 0x09, 0x01, 0xdb, - 0x18, 0xc9, 0x66, 0x88, 0x48, 0x2f, 0x49, 0x2e, - 0x68, 0x09, 0x23, 0x09, 0x01, 0xdb, 0x18, 0xc9, - 0x66, 0x48, 0x20, 0x00, 0x49, 0x2a, 0x68, 0x09, - 0x23, 0x09, 0x01, 0xdb, 0x18, 0xc9, 0x64, 0x88, - 0x6b, 0x79, 0x48, 0x27, 0x68, 0x00, 0xf0, 0x0b, - 0xfd, 0x4b, 0x94, 0x02, 0x1d, 0xf8, 0x30, 0x21, - 0x99, 0x0a, 0xf0, 0x02, 0xf8, 0x4d, 0x24, 0x00, - 0x26, 0x00, 0x2e, 0x00, 0xd1, 0x14, 0x2c, 0x07, - 0xd2, 0x12, 0x6a, 0xf8, 0x05, 0x81, 0x0d, 0x89, - 0x1c, 0x20, 0x34, 0x01, 0x00, 0x83, 0x18, 0x18, - 0x00, 0xc0, 0x4a, 0x1b, 0x68, 0x12, 0x18, 0x80, - 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, - 0x42, 0x81, 0xda, 0x00, 0x26, 0x01, 0xe7, 0xe8, - 0x2e, 0x00, 0xd1, 0x2f, 0x2c, 0x18, 0xd2, 0x2d, - 0x6a, 0xf8, 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x20, - 0x34, 0x01, 0x23, 0x4c, 0x43, 0x58, 0x4a, 0x10, - 0x68, 0x12, 0x18, 0x80, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x02, 0x69, 0x40, 0x42, 0x81, 0xda, 0x1c, - 0xe0, 0x1a, 0x00, 0x00, 0x2e, 0x03, 0xa8, 0xc8, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0xba, 0x2c, - 0x2e, 0x08, 0xb9, 0xc4, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xbb, 0x00, 0x2e, 0x08, 0xba, 0x28, - 0x2e, 0x08, 0x9b, 0xb8, 0x00, 0x00, 0x02, 0xcf, - 0x00, 0x00, 0x02, 0x3f, 0x2e, 0x08, 0xd1, 0xf4, - 0x2e, 0x08, 0xbb, 0x20, 0x00, 0x00, 0xff, 0xff, - 0x26, 0x01, 0xe7, 0xcd, 0x3c, 0x01, 0x6b, 0x38, - 0xf7, 0xff, 0xfd, 0xc3, 0x90, 0x01, 0x2c, 0x07, - 0xd2, 0x12, 0x48, 0x48, 0x68, 0x01, 0x1c, 0x20, - 0xf0, 0x0b, 0xfb, 0xcc, 0x00, 0xa0, 0x19, 0x00, - 0x00, 0xc0, 0x49, 0x44, 0x68, 0x09, 0x18, 0x40, - 0x23, 0x2b, 0x01, 0x5b, 0x18, 0xc0, 0x9a, 0x01, - 0x1c, 0x39, 0xf0, 0x0b, 0xfd, 0x21, 0xe0, 0x4a, - 0x2c, 0x18, 0xd2, 0x48, 0x1f, 0xe0, 0x49, 0x3d, - 0x68, 0x09, 0xf0, 0x0b, 0xfc, 0x0b, 0x20, 0x4c, - 0x43, 0x60, 0x49, 0x3a, 0x68, 0x09, 0x18, 0x40, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x0a, 0x9a, 0x01, - 0x1c, 0x39, 0xf0, 0x0b, 0xfd, 0x0d, 0x20, 0x4c, - 0x43, 0x60, 0x49, 0x34, 0x68, 0x09, 0x18, 0x40, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x82, 0x6f, 0xc0, - 0x28, 0x00, 0xd0, 0x17, 0x20, 0x4c, 0x43, 0x60, - 0x49, 0x2e, 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, - 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0xd0, 0x0b, 0x20, 0x4c, 0x43, 0x60, - 0x49, 0x28, 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, - 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, 0x0c, 0x00, - 0x04, 0x00, 0xd1, 0x0a, 0x20, 0x02, 0x21, 0x4c, - 0x43, 0x61, 0x4a, 0x22, 0x68, 0x12, 0x18, 0x89, - 0x39, 0xff, 0x39, 0xff, 0x39, 0x82, 0x67, 0x48, - 0xe0, 0x09, 0x20, 0x03, 0x21, 0x4c, 0x43, 0x61, - 0x4a, 0x1c, 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, - 0x39, 0xff, 0x39, 0x82, 0x67, 0x48, 0x48, 0x19, - 0x68, 0x00, 0xf0, 0x0c, 0xf8, 0xcf, 0x6b, 0x79, - 0x48, 0x16, 0x68, 0x00, 0xf0, 0x0b, 0xfc, 0x36, - 0x98, 0x02, 0x42, 0x84, 0xda, 0x01, 0x1c, 0x21, - 0xe0, 0x00, 0x99, 0x02, 0x91, 0x00, 0x99, 0x00, - 0x48, 0x10, 0x68, 0x00, 0xf0, 0x0b, 0xfd, 0x46, - 0x49, 0x0f, 0x20, 0x91, 0xf0, 0x1a, 0xfd, 0x58, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x0b, - 0x68, 0x00, 0x90, 0x03, 0x48, 0x0b, 0x68, 0x00, - 0x49, 0x08, 0x60, 0x08, 0x98, 0x03, 0x49, 0x09, - 0x60, 0x08, 0x20, 0x92, 0x49, 0x06, 0x60, 0x08, - 0xb0, 0x04, 0x20, 0x92, 0x49, 0x06, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x05, 0xe5, 0x4b, 0xb0, 0x05, - 0xe5, 0x49, 0x00, 0x00, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x24, - 0x2e, 0x08, 0xba, 0x2c, 0xb5, 0xff, 0x1c, 0x07, - 0x9d, 0x09, 0xb0, 0x89, 0x26, 0x00, 0x20, 0x00, - 0x90, 0x03, 0x99, 0x0a, 0x68, 0x4c, 0x2d, 0x13, - 0xd1, 0x05, 0x20, 0x75, 0xb0, 0x09, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x98, 0x15, - 0x60, 0x04, 0x20, 0x00, 0x60, 0xe0, 0x20, 0x00, - 0x61, 0x20, 0x69, 0x60, 0x4b, 0xf9, 0x40, 0x18, - 0x61, 0x60, 0x02, 0x00, 0x69, 0x60, 0x4b, 0xf8, - 0x40, 0x18, 0x61, 0x60, 0x04, 0x80, 0x69, 0x60, - 0x4b, 0xf6, 0x40, 0x18, 0x61, 0x60, 0x05, 0x80, - 0x69, 0x60, 0x23, 0xc0, 0x43, 0xdb, 0x40, 0x18, - 0x61, 0x60, 0x06, 0x00, 0x69, 0x60, 0x4b, 0xf2, - 0x40, 0x18, 0x61, 0x60, 0x04, 0x40, 0x69, 0x60, - 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, 0x61, 0x60, - 0x06, 0x80, 0x69, 0x60, 0x09, 0x40, 0x01, 0x40, - 0x61, 0x60, 0x06, 0xc0, 0x20, 0x00, 0x61, 0xa0, - 0x20, 0x00, 0x61, 0xe0, 0x20, 0x00, 0x62, 0x20, - 0x20, 0x00, 0x62, 0x60, 0x20, 0x00, 0x63, 0xa0, - 0x20, 0x00, 0x63, 0xe0, 0x20, 0x00, 0x64, 0x60, - 0x20, 0x00, 0x64, 0x20, 0x20, 0x00, 0x60, 0x20, - 0x20, 0x00, 0x71, 0x20, 0x99, 0x0a, 0x68, 0x48, - 0x64, 0xe0, 0x99, 0x0a, 0x68, 0x08, 0x64, 0xa0, - 0x1d, 0xe0, 0x30, 0x21, 0x99, 0x13, 0xf0, 0x01, - 0xff, 0x07, 0x2d, 0x0b, 0xdb, 0x06, 0x2d, 0x12, - 0xdc, 0x04, 0x1d, 0xe0, 0x30, 0x49, 0x99, 0x13, - 0xf0, 0x01, 0xfe, 0xfe, 0x6b, 0x20, 0x6a, 0xa1, - 0x1a, 0x40, 0x30, 0x01, 0x63, 0xa0, 0x00, 0xa8, - 0x49, 0xd4, 0x58, 0x08, 0x69, 0x61, 0x09, 0x49, - 0x01, 0x49, 0x06, 0xc0, 0x0e, 0xc0, 0x43, 0x08, - 0x61, 0x60, 0x06, 0xc0, 0x0e, 0xc0, 0x6b, 0x20, - 0x6a, 0xa1, 0x1a, 0x40, 0x1c, 0x41, 0x91, 0x04, - 0x69, 0x60, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x02, - 0x99, 0x04, 0x08, 0x49, 0x91, 0x04, 0x00, 0xa8, - 0x49, 0xc9, 0x58, 0x08, 0x99, 0x04, 0x43, 0x48, - 0x61, 0xe0, 0x2d, 0x13, 0xd1, 0x04, 0x20, 0x00, - 0x90, 0x14, 0x20, 0x00, 0x61, 0xa0, 0xe0, 0x13, - 0x9b, 0x0c, 0x68, 0x58, 0x90, 0x01, 0x98, 0x01, - 0x08, 0x80, 0x61, 0xa0, 0x98, 0x01, 0x64, 0x60, - 0x9b, 0x0c, 0x68, 0x18, 0x64, 0x20, 0x20, 0x00, - 0x62, 0x60, 0x9a, 0x0b, 0x63, 0xe2, 0x69, 0x60, - 0x4b, 0xb6, 0x40, 0x18, 0x61, 0x60, 0x02, 0x00, - 0x69, 0x60, 0x4b, 0xb6, 0x40, 0x18, 0x61, 0x60, - 0x05, 0x80, 0x69, 0x60, 0x23, 0x0f, 0x02, 0x9b, - 0x43, 0x18, 0x61, 0x60, 0x04, 0x80, 0x69, 0x60, - 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, 0x61, 0x60, - 0x06, 0x80, 0x69, 0x60, 0x23, 0xc0, 0x43, 0x18, - 0x61, 0x60, 0x06, 0x00, 0x69, 0x60, 0x23, 0x01, - 0x03, 0x9b, 0x43, 0x18, 0x61, 0x60, 0x04, 0x40, - 0x98, 0x14, 0x60, 0xe0, 0x61, 0x25, 0x48, 0xab, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x06, 0x98, 0x14, - 0x28, 0x19, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x00, 0xe0, 0x05, 0x98, 0x14, 0x28, 0x08, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, 0xb0, 0x09, - 0xe7, 0x35, 0x49, 0xa1, 0x20, 0x91, 0xf0, 0x1a, - 0xfc, 0x5b, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, - 0xf0, 0x0b, 0xf8, 0x08, 0xe7, 0xf5, 0x48, 0x9d, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x53, 0x68, 0x38, - 0x01, 0x80, 0x0f, 0xc0, 0x68, 0xa1, 0x4b, 0x9a, - 0x40, 0x19, 0x07, 0xc0, 0x09, 0x80, 0x43, 0x08, - 0x60, 0xa0, 0x01, 0x80, 0x0f, 0xc0, 0x68, 0x38, - 0x01, 0xc0, 0x0f, 0xc0, 0x68, 0xa1, 0x4b, 0x95, - 0x40, 0x19, 0x07, 0xc0, 0x09, 0xc0, 0x43, 0x08, - 0x60, 0xa0, 0x01, 0xc0, 0x0f, 0xc0, 0x68, 0x38, - 0x02, 0x00, 0x0e, 0x00, 0x68, 0xa1, 0x4b, 0x85, - 0x40, 0x19, 0x06, 0x00, 0x0e, 0x00, 0x04, 0x00, - 0x43, 0x08, 0x60, 0xa0, 0x02, 0x00, 0x0e, 0x00, - 0x48, 0x86, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x2a, - 0x2f, 0x00, 0xd0, 0x28, 0x20, 0x0d, 0x06, 0xc0, - 0x6a, 0x00, 0x1c, 0x06, 0x68, 0x38, 0x4b, 0x85, - 0x43, 0x98, 0xd0, 0x06, 0x68, 0x38, 0x02, 0x00, - 0x0e, 0x01, 0x20, 0x01, 0x40, 0x88, 0x43, 0x06, - 0xe0, 0x05, 0x68, 0x38, 0x02, 0x00, 0x0e, 0x00, - 0x21, 0x01, 0x40, 0x81, 0x43, 0x8e, 0x68, 0x38, - 0x4b, 0x7b, 0x43, 0x98, 0xd0, 0x08, 0x68, 0x38, - 0x02, 0x00, 0x0e, 0x00, 0x1d, 0xc1, 0x31, 0x01, - 0x20, 0x01, 0x40, 0x88, 0x43, 0x06, 0xe0, 0x06, - 0x68, 0x38, 0x02, 0x00, 0x0e, 0x00, 0x30, 0x08, - 0x21, 0x01, 0x40, 0x81, 0x43, 0x8e, 0x2d, 0x0b, - 0xdb, 0x0a, 0x2d, 0x12, 0xdc, 0x08, 0x48, 0x6f, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x04, 0x20, 0x51, - 0x01, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x08, - 0x98, 0x14, 0x00, 0x80, 0x49, 0x6c, 0x58, 0x08, - 0x28, 0x00, 0xd0, 0x01, 0x20, 0x83, 0x90, 0x03, - 0x2d, 0x0b, 0xdb, 0x08, 0x2d, 0x12, 0xdc, 0x06, - 0x48, 0x68, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x01, - 0x20, 0x84, 0x90, 0x03, 0xe0, 0x06, 0x9a, 0x0b, - 0x2a, 0x01, 0xd1, 0x03, 0x2d, 0x13, 0xd0, 0x01, - 0x20, 0x82, 0x90, 0x03, 0x98, 0x03, 0x28, 0x00, - 0xd0, 0x07, 0x20, 0x92, 0x49, 0x5a, 0x60, 0x08, - 0x20, 0x08, 0x60, 0xe0, 0x98, 0x03, 0xb0, 0x09, - 0xe6, 0xa1, 0x98, 0x15, 0x68, 0x01, 0x98, 0x14, - 0x00, 0x80, 0x4a, 0x59, 0x50, 0x11, 0x6a, 0xa0, - 0x28, 0x00, 0xda, 0x01, 0x20, 0x00, 0x62, 0xa0, - 0x6b, 0x20, 0x28, 0x00, 0xdc, 0x01, 0x20, 0x01, - 0x63, 0x20, 0x6a, 0xe0, 0x28, 0x00, 0xda, 0x01, - 0x20, 0x00, 0x62, 0xe0, 0x6b, 0x60, 0x4b, 0x52, - 0x42, 0x98, 0xdd, 0x01, 0x48, 0x50, 0x63, 0x60, - 0x6b, 0x20, 0xf7, 0xff, 0xfb, 0x9e, 0x90, 0x00, - 0x2d, 0x13, 0xd1, 0x05, 0x6a, 0xa1, 0x9a, 0x00, - 0x48, 0x4c, 0xf0, 0x0b, 0xff, 0x99, 0xe0, 0x15, - 0x2d, 0x0b, 0xdb, 0x01, 0x2d, 0x12, 0xdd, 0x03, - 0x48, 0x40, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x0d, - 0x2d, 0x0b, 0xdb, 0x06, 0x2d, 0x12, 0xdc, 0x04, - 0x48, 0x3e, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x00, - 0xe0, 0x04, 0x6a, 0xa1, 0x9a, 0x00, 0x48, 0x41, - 0xf0, 0x0b, 0xff, 0x82, 0x2d, 0x0b, 0xdb, 0x5f, - 0x2d, 0x12, 0xdc, 0x5e, 0x98, 0x15, 0x68, 0x00, - 0x49, 0x3a, 0x60, 0x08, 0x99, 0x13, 0xa8, 0x05, - 0xf0, 0x01, 0xfd, 0xae, 0xa9, 0x05, 0x98, 0x15, - 0x68, 0x00, 0xf0, 0x05, 0xfc, 0x5f, 0x1d, 0xe0, - 0x30, 0x21, 0xa9, 0x05, 0xf0, 0x01, 0xfd, 0xa4, - 0x20, 0x01, 0x49, 0x35, 0x65, 0x08, 0x20, 0x02, - 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, 0x21, 0x00, - 0x20, 0x02, 0xf0, 0x04, 0xfa, 0xdd, 0x2d, 0x0b, - 0xd0, 0x05, 0x2d, 0x0f, 0xd0, 0x03, 0x2d, 0x10, - 0xd0, 0x01, 0x2d, 0x11, 0xd1, 0x03, 0x21, 0x00, - 0x20, 0x12, 0xf0, 0x04, 0xfa, 0xd1, 0x2d, 0x0c, - 0xd0, 0x01, 0x2d, 0x0f, 0xd1, 0x03, 0x21, 0x00, - 0x20, 0x04, 0xf0, 0x04, 0xfa, 0xc9, 0x2d, 0x0d, - 0xd0, 0x01, 0x2d, 0x10, 0xd1, 0x03, 0x21, 0x00, - 0x20, 0x08, 0xf0, 0x04, 0xfa, 0xc1, 0x2d, 0x0e, - 0xd0, 0x01, 0x2d, 0x11, 0xd1, 0x03, 0x21, 0x00, - 0x20, 0x01, 0xf0, 0x04, 0xfa, 0xb9, 0x48, 0x15, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x73, 0xb0, 0x82, - 0x49, 0x1c, 0x20, 0x91, 0xf0, 0x1a, 0xfb, 0x40, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0b, - 0xfe, 0x86, 0x20, 0x92, 0x49, 0x17, 0x60, 0x08, - 0x20, 0x01, 0x49, 0x17, 0x68, 0x09, 0x60, 0x08, - 0x20, 0x01, 0x49, 0x15, 0x68, 0x09, 0x23, 0x07, - 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, 0xe0, 0x25, - 0xe0, 0xae, 0xe0, 0xad, 0xff, 0x00, 0xff, 0xff, - 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xfc, 0xff, - 0xff, 0xff, 0xbf, 0xff, 0x2e, 0x03, 0xa8, 0x78, - 0x2e, 0x03, 0xa8, 0xc8, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0x9d, 0xf0, - 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, - 0x2e, 0x08, 0xb9, 0xc4, 0x2e, 0x08, 0xba, 0x28, - 0x00, 0x00, 0x02, 0x3f, 0x2e, 0x08, 0xbb, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x2e, 0x08, 0xd1, 0xf4, - 0x2e, 0x08, 0xbb, 0x20, 0x6a, 0xa0, 0x30, 0x01, - 0x05, 0x00, 0x6a, 0xe1, 0x31, 0x01, 0x02, 0x89, - 0x43, 0x08, 0x6b, 0x61, 0x31, 0x02, 0x43, 0x08, - 0x90, 0x00, 0x20, 0x00, 0x62, 0xa0, 0x20, 0x00, - 0x62, 0xe0, 0x48, 0x5f, 0x63, 0x20, 0x48, 0x5f, - 0x63, 0x60, 0x6b, 0x20, 0xf7, 0xff, 0xfa, 0xe1, - 0x90, 0x02, 0x48, 0x5d, 0x68, 0x00, 0x23, 0x77, - 0x01, 0x1b, 0x18, 0xc0, 0x9a, 0x02, 0x1c, 0x21, - 0xf0, 0x0b, 0xfa, 0x4a, 0x98, 0x00, 0x49, 0x58, - 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, - 0x66, 0xc8, 0x48, 0x55, 0x68, 0x00, 0x21, 0x00, - 0xf0, 0x0b, 0xfa, 0xc4, 0x48, 0x52, 0x68, 0x00, - 0xf0, 0x0b, 0xfe, 0x38, 0x49, 0x51, 0x20, 0x91, - 0xf0, 0x1a, 0xfa, 0xd2, 0xe0, 0x00, 0xe0, 0x11, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf6, 0x48, 0x4c, - 0x68, 0x00, 0x90, 0x01, 0x48, 0x4c, 0x68, 0x00, - 0x49, 0x49, 0x60, 0x08, 0x98, 0x01, 0x49, 0x4a, - 0x60, 0x08, 0x20, 0x92, 0x49, 0x47, 0x60, 0x08, - 0xb0, 0x02, 0xe0, 0x40, 0x48, 0x47, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x0c, 0x6a, 0xa0, 0x30, 0x01, - 0x05, 0x00, 0x6a, 0xe1, 0x31, 0x01, 0x02, 0x89, - 0x43, 0x08, 0x6b, 0x61, 0x31, 0x02, 0x43, 0x08, - 0x49, 0x41, 0x60, 0x08, 0xe0, 0x0c, 0x6a, 0xa0, - 0x30, 0x01, 0x05, 0x00, 0x6a, 0xe1, 0x31, 0x01, - 0x02, 0x89, 0x43, 0x08, 0x6b, 0x61, 0x31, 0x02, - 0x43, 0x08, 0x21, 0x0d, 0x06, 0xc9, 0x61, 0x88, - 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, 0x90, 0x02, - 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, - 0xf0, 0x00, 0xfe, 0x82, 0x48, 0x33, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x07, 0x20, 0x00, 0x62, 0xa0, - 0x20, 0x00, 0x62, 0xe0, 0x48, 0x2a, 0x63, 0x20, - 0x48, 0x2a, 0x63, 0x60, 0x6b, 0x20, 0xf7, 0xff, - 0xfa, 0x78, 0x90, 0x00, 0x9a, 0x00, 0x99, 0x14, - 0x1c, 0x20, 0xf0, 0x00, 0xfd, 0xfb, 0x98, 0x02, - 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, 0xe0, 0x05, - 0x2d, 0x13, 0xd1, 0x03, 0x20, 0x1f, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x08, 0x2d, 0x0b, 0xdb, 0x01, - 0x2d, 0x12, 0xdd, 0x1a, 0x48, 0x23, 0x68, 0x00, - 0x28, 0x00, 0xd1, 0x16, 0x20, 0x0d, 0x06, 0xc0, - 0x68, 0x80, 0x90, 0x02, 0x20, 0x00, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x88, 0xf0, 0x00, 0xfe, 0x50, - 0x6b, 0x20, 0xf7, 0xff, 0xfa, 0x52, 0x90, 0x00, - 0x9a, 0x00, 0x99, 0x14, 0x1c, 0x20, 0xf0, 0x00, - 0xfd, 0xd5, 0x98, 0x02, 0x21, 0x0d, 0x06, 0xc9, - 0x60, 0x88, 0x48, 0x14, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x06, 0x48, 0x14, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x02, 0x20, 0x0d, 0x06, 0xc0, 0x62, 0x06, - 0x48, 0x0e, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x07, - 0x48, 0x0e, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x03, - 0x98, 0x14, 0x21, 0x00, 0xf0, 0x0b, 0xfd, 0x0a, - 0x20, 0x92, 0x49, 0x0b, 0x60, 0x08, 0x20, 0x00, - 0xb0, 0x09, 0xe5, 0x10, 0xb0, 0x09, 0xe5, 0x0e, - 0x00, 0x00, 0x02, 0xcf, 0x00, 0x00, 0x02, 0x3f, - 0x2e, 0x08, 0xbb, 0x20, 0x2e, 0x08, 0xd1, 0xf4, - 0x2e, 0x08, 0xbb, 0x24, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0x9b, 0xb8, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0xb5, 0xf7, 0xb0, 0x83, - 0x9f, 0x03, 0x69, 0x38, 0x90, 0x00, 0x98, 0x00, - 0x28, 0x13, 0xd1, 0x05, 0x20, 0x75, 0xb0, 0x03, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x6c, 0x78, 0x99, 0x04, 0x60, 0x48, 0x6c, 0x38, - 0x99, 0x04, 0x60, 0x08, 0x6c, 0xf8, 0x9a, 0x05, - 0x60, 0x50, 0x6c, 0xb8, 0x9a, 0x05, 0x60, 0x10, - 0x68, 0xfd, 0x48, 0xf9, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x2d, 0x19, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2d, 0x08, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, 0xb0, 0x03, - 0xe7, 0xda, 0x49, 0xf0, 0x20, 0x91, 0xf0, 0x1a, - 0xf9, 0xf3, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, - 0xf0, 0x0a, 0xfd, 0xa0, 0xe7, 0xf5, 0x00, 0xa8, - 0x49, 0xeb, 0x58, 0x08, 0x99, 0x03, 0x42, 0x88, - 0xd0, 0x05, 0x20, 0x92, 0x49, 0xe7, 0x60, 0x08, - 0x20, 0xff, 0xb0, 0x03, 0xe7, 0xc4, 0x21, 0x00, - 0x00, 0xa8, 0x4a, 0xe5, 0x50, 0x11, 0x48, 0xe2, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x69, 0x38, - 0x28, 0x0b, 0xdb, 0x16, 0x69, 0x38, 0x28, 0x12, - 0xdc, 0x13, 0x48, 0xe0, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x06, 0x69, 0x38, 0x28, 0x0b, 0xdb, 0x03, - 0x69, 0x38, 0x28, 0x12, 0xdc, 0x00, 0xe0, 0x08, - 0x6b, 0x38, 0xf7, 0xff, 0xf9, 0xb6, 0x90, 0x01, - 0x6a, 0xb9, 0x9a, 0x01, 0x48, 0xd8, 0xf0, 0x0b, - 0xfd, 0x85, 0x69, 0x38, 0x28, 0x0b, 0xdb, 0x2e, - 0x69, 0x38, 0x28, 0x12, 0xdc, 0x2b, 0x48, 0xd0, - 0x68, 0x00, 0x28, 0x00, 0xd1, 0x27, 0x20, 0x00, - 0x49, 0xd2, 0x65, 0x08, 0x20, 0x01, 0x03, 0x00, - 0x49, 0xd0, 0x65, 0x48, 0x20, 0x00, 0x49, 0xcf, - 0x65, 0x88, 0x20, 0x00, 0x49, 0xcd, 0x65, 0xc8, - 0x20, 0x00, 0x49, 0xcc, 0x66, 0x08, 0x20, 0x00, - 0x49, 0xcb, 0x60, 0x08, 0x20, 0x02, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0xc8, 0x21, 0x00, 0x20, 0x02, - 0xf0, 0x04, 0xf9, 0x0a, 0x48, 0xc3, 0x68, 0x00, - 0x28, 0x00, 0xd1, 0x04, 0x48, 0xc5, 0x21, 0x0d, - 0x06, 0xc9, 0x61, 0x88, 0xe0, 0x02, 0x48, 0xc3, - 0x49, 0xc3, 0x60, 0x08, 0xe0, 0x06, 0x69, 0x38, - 0x28, 0x13, 0xd1, 0x03, 0x20, 0x00, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x08, 0x48, 0xb6, 0x68, 0x00, - 0x28, 0x00, 0xd1, 0x2c, 0x20, 0x0d, 0x06, 0xc0, - 0x68, 0x80, 0x90, 0x02, 0x20, 0x00, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x88, 0xf0, 0x00, 0xfd, 0x64, - 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0xb7, - 0x18, 0xc9, 0x60, 0x08, 0x20, 0x00, 0x43, 0xc0, - 0x00, 0xe9, 0x4b, 0xb4, 0x18, 0xc9, 0x60, 0x48, - 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0xb1, - 0x18, 0xc9, 0x64, 0x08, 0x20, 0x00, 0x43, 0xc0, - 0x00, 0xe9, 0x4b, 0xae, 0x18, 0xc9, 0x64, 0x48, - 0x20, 0x01, 0x40, 0xa8, 0x43, 0xc0, 0x99, 0x02, - 0x40, 0x08, 0x90, 0x02, 0x98, 0x02, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x88, 0xe0, 0x9c, 0x69, 0x38, - 0x28, 0x0b, 0xdb, 0x74, 0x69, 0x38, 0x28, 0x12, - 0xdc, 0x72, 0x48, 0x9b, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x6f, 0x20, 0x00, 0x49, 0x9d, 0x65, 0x08, - 0x20, 0x01, 0x03, 0x00, 0x49, 0x9b, 0x65, 0x48, - 0x20, 0x00, 0x49, 0x9a, 0x65, 0x88, 0x20, 0x00, - 0x49, 0x98, 0x65, 0xc8, 0x20, 0x00, 0x49, 0x97, - 0x66, 0x08, 0x20, 0x00, 0x49, 0x96, 0x60, 0x08, - 0x20, 0x02, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, - 0x21, 0x00, 0x20, 0x02, 0xf0, 0x04, 0xf8, 0xa0, - 0x49, 0x95, 0x20, 0x91, 0xf0, 0x1a, 0xf9, 0x2c, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0b, - 0xfc, 0x72, 0x20, 0x92, 0x49, 0x90, 0x60, 0x08, - 0x48, 0x90, 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xc0, 0x69, 0x80, 0x08, 0x40, 0x00, 0x40, - 0x49, 0x8c, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xc9, 0x61, 0x88, 0x20, 0x01, 0x49, 0x89, - 0x68, 0x09, 0x60, 0x08, 0x20, 0x01, 0x49, 0x87, - 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, - 0x66, 0x88, 0x20, 0x00, 0x43, 0xc0, 0x49, 0x83, - 0x68, 0x09, 0x23, 0x0f, 0x01, 0xdb, 0x18, 0xc9, - 0x61, 0x08, 0x20, 0x00, 0x43, 0xc0, 0x49, 0x7f, - 0x68, 0x09, 0x23, 0x0f, 0x01, 0xdb, 0x18, 0xc9, - 0x61, 0x48, 0x20, 0x00, 0x43, 0xc0, 0x49, 0x7b, - 0x68, 0x09, 0x23, 0x0f, 0x01, 0xdb, 0x18, 0xc9, - 0x60, 0xc8, 0x20, 0x00, 0x43, 0xc0, 0x49, 0x77, - 0x68, 0x09, 0x23, 0x0f, 0x01, 0xdb, 0x18, 0xc9, - 0x60, 0x88, 0x6b, 0x38, 0xf7, 0xff, 0xf8, 0xd9, - 0x90, 0x01, 0x48, 0x72, 0x68, 0x00, 0x23, 0x77, - 0x01, 0x1b, 0x18, 0xc0, 0x9a, 0x01, 0x1c, 0x39, - 0xf0, 0x0b, 0xf8, 0x42, 0xe0, 0x02, 0xe0, 0x23, - 0xe0, 0x22, 0xe0, 0x21, 0x48, 0x67, 0x49, 0x6b, - 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, - 0x66, 0xc8, 0x48, 0x68, 0x68, 0x00, 0x21, 0x00, - 0xf0, 0x0b, 0xf8, 0xb8, 0x48, 0x65, 0x68, 0x00, - 0xf0, 0x0b, 0xfc, 0x2c, 0x49, 0x62, 0x20, 0x91, - 0xf0, 0x1a, 0xf8, 0xc6, 0x28, 0x92, 0xd0, 0x00, - 0xe7, 0xf8, 0x48, 0x60, 0x68, 0x04, 0x48, 0x60, - 0x68, 0x00, 0x49, 0x5e, 0x60, 0x08, 0x48, 0x5e, - 0x60, 0x04, 0x20, 0x92, 0x49, 0x5a, 0x60, 0x08, - 0x48, 0x52, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x73, - 0x48, 0x4d, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x6f, - 0x1c, 0x28, 0xf0, 0x0b, 0xfb, 0x9d, 0x28, 0x01, - 0xd1, 0x6a, 0x98, 0x00, 0x28, 0x0b, 0xdb, 0x02, - 0x98, 0x00, 0x28, 0x12, 0xdd, 0x65, 0xb0, 0x84, - 0x49, 0x4f, 0x20, 0x91, 0xf0, 0x1a, 0xf8, 0xa0, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0b, - 0xfb, 0xe6, 0x48, 0x4c, 0x68, 0x00, 0x68, 0x40, - 0x28, 0x00, 0xd0, 0x06, 0x48, 0x49, 0x68, 0x00, - 0x68, 0x40, 0x38, 0x01, 0x49, 0x47, 0x68, 0x09, - 0x60, 0x48, 0x20, 0x92, 0x49, 0x44, 0x60, 0x08, - 0x20, 0x01, 0x49, 0x44, 0x68, 0x09, 0x60, 0x08, - 0x24, 0x00, 0x20, 0x00, 0x90, 0x02, 0x98, 0x02, - 0x28, 0x00, 0xd1, 0x15, 0x2c, 0x07, 0xd2, 0x13, - 0x6a, 0xf8, 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x20, - 0x34, 0x01, 0x00, 0x83, 0x18, 0x18, 0x00, 0xc0, - 0x4a, 0x3a, 0x68, 0x12, 0x18, 0x80, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0x81, - 0xd1, 0x01, 0x20, 0x01, 0x90, 0x02, 0xe7, 0xe6, - 0x98, 0x02, 0x28, 0x00, 0xd1, 0x14, 0x2c, 0x18, - 0xd2, 0x12, 0x6a, 0xf8, 0x05, 0x81, 0x0d, 0x89, - 0x1c, 0x20, 0x34, 0x01, 0x23, 0x4c, 0x43, 0x58, - 0x4a, 0x2e, 0x68, 0x12, 0x18, 0x80, 0x38, 0xff, - 0x38, 0xff, 0x38, 0x02, 0x69, 0x40, 0x42, 0x81, - 0xd1, 0x01, 0x20, 0x01, 0x90, 0x02, 0xe7, 0xe7, - 0x3c, 0x01, 0x6b, 0x38, 0xf7, 0xff, 0xf8, 0x41, - 0x90, 0x01, 0x2c, 0x07, 0xd2, 0x09, 0x48, 0x25, - 0x68, 0x01, 0x1c, 0x20, 0xf0, 0x0a, 0xfe, 0xbc, - 0x48, 0x22, 0x68, 0x00, 0xf0, 0x0b, 0xfb, 0xa6, - 0xe0, 0x09, 0x2c, 0x18, 0xd2, 0x07, 0xe0, 0x01, - 0xe0, 0x95, 0xe0, 0x94, 0x1f, 0xe0, 0x49, 0x1d, - 0x68, 0x09, 0xf0, 0x0a, 0xfe, 0xeb, 0x48, 0x1b, - 0x68, 0x00, 0x4b, 0x1c, 0x18, 0xc0, 0xf0, 0x0b, - 0xf8, 0x0b, 0x20, 0x00, 0x49, 0x17, 0x68, 0x09, - 0x23, 0x09, 0x01, 0xdb, 0x18, 0xc9, 0x64, 0x88, - 0x48, 0x14, 0x68, 0x00, 0x68, 0x40, 0x28, 0x07, - 0xd3, 0x2c, 0x48, 0x12, 0x68, 0x00, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, 0x23, 0xfe, - 0x43, 0x18, 0x49, 0x0e, 0x68, 0x09, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0xe0, 0x1c, 0x00, 0x00, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0xba, 0x2c, - 0x2e, 0x08, 0xb9, 0xc4, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xbb, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0xba, 0x28, 0x3f, 0xff, 0xff, 0xff, - 0x2e, 0x08, 0x9b, 0xb8, 0x68, 0x00, 0x04, 0x00, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xbb, 0x24, 0x00, 0x00, 0x04, 0xcc, - 0x61, 0x88, 0xe0, 0x2d, 0x26, 0x01, 0x21, 0x00, - 0x91, 0x00, 0x48, 0x2b, 0x68, 0x00, 0x68, 0x40, - 0x99, 0x00, 0x42, 0x88, 0xd8, 0x04, 0xe0, 0x06, - 0x99, 0x00, 0x31, 0x01, 0x91, 0x00, 0xe7, 0xf4, - 0x00, 0x70, 0x1c, 0x46, 0xe7, 0xf8, 0x08, 0x76, - 0x00, 0x76, 0x48, 0x23, 0x68, 0x00, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, 0x07, 0xc0, - 0x0f, 0xc0, 0x49, 0x1f, 0x68, 0x09, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, 0x48, 0x1c, - 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, - 0x69, 0x80, 0x43, 0x30, 0x49, 0x18, 0x68, 0x09, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, - 0x1c, 0x21, 0x48, 0x15, 0x68, 0x00, 0xf0, 0x0a, - 0xff, 0xb1, 0x6b, 0x79, 0x48, 0x12, 0x68, 0x00, - 0xf0, 0x0a, 0xfe, 0xe6, 0x1c, 0x28, 0x21, 0x00, - 0xf0, 0x0b, 0xfa, 0x88, 0x49, 0x0f, 0x20, 0x91, - 0xf0, 0x19, 0xff, 0xba, 0x28, 0x92, 0xd0, 0x00, - 0xe7, 0xf8, 0x48, 0x0b, 0x68, 0x00, 0x90, 0x03, - 0x48, 0x0b, 0x68, 0x00, 0x49, 0x08, 0x60, 0x08, - 0x98, 0x03, 0x49, 0x09, 0x60, 0x08, 0x20, 0x92, - 0x49, 0x06, 0x60, 0x08, 0xb0, 0x04, 0x20, 0x92, - 0x49, 0x06, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x03, - 0xe5, 0x86, 0xb0, 0x03, 0xe5, 0x84, 0x00, 0x00, - 0x2e, 0x08, 0xbb, 0x20, 0x2e, 0x08, 0xd1, 0xf4, - 0x2e, 0x08, 0xbb, 0x24, 0x2e, 0x08, 0xba, 0x2c, - 0xb5, 0xf3, 0xb0, 0x85, 0x20, 0x00, 0x90, 0x01, - 0x9d, 0x05, 0x9f, 0x06, 0x69, 0x28, 0x90, 0x04, - 0x69, 0x3c, 0x98, 0x04, 0x28, 0x13, 0xd0, 0x01, - 0x2c, 0x13, 0xd1, 0x05, 0x20, 0xff, 0xb0, 0x05, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x68, 0xee, 0x68, 0xf9, 0x91, 0x03, 0x48, 0xdf, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2e, 0x19, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0xe0, 0x04, 0x2e, 0x08, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x20, - 0x48, 0xd6, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x06, - 0x99, 0x03, 0x29, 0x19, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x05, 0x99, 0x03, - 0x29, 0x08, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x00, 0x28, 0x00, 0xd0, 0x06, 0x99, 0x03, - 0x60, 0xe9, 0x60, 0xfe, 0x20, 0x00, 0xb0, 0x05, - 0xe7, 0xce, 0xe1, 0x92, 0x1c, 0x3d, 0x9f, 0x05, - 0x9e, 0x03, 0x68, 0xf9, 0x91, 0x03, 0x9c, 0x04, - 0xe0, 0xaa, 0x48, 0xc6, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x06, 0x99, 0x03, 0x29, 0x19, 0xd3, 0x01, - 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x05, - 0x99, 0x03, 0x29, 0x08, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd1, 0x73, - 0x49, 0xbd, 0x20, 0x91, 0xf0, 0x19, 0xff, 0x38, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x0a, - 0xfa, 0xe5, 0xe7, 0xf5, 0x00, 0xb0, 0x49, 0xb9, - 0x58, 0x08, 0x42, 0xa8, 0xd1, 0x05, 0x99, 0x03, - 0x00, 0x88, 0x49, 0xb6, 0x58, 0x08, 0x42, 0xb8, - 0xd0, 0x05, 0x20, 0x92, 0x49, 0xb2, 0x60, 0x08, - 0x20, 0xff, 0xb0, 0x05, 0xe7, 0x98, 0x48, 0xb2, - 0x68, 0x00, 0x42, 0xa8, 0xd0, 0x03, 0x48, 0xb0, - 0x68, 0x00, 0x42, 0xb8, 0xd1, 0x0a, 0x20, 0x0d, - 0x06, 0xc0, 0x68, 0xc0, 0x90, 0x01, 0x98, 0x01, - 0x28, 0x01, 0xd1, 0x03, 0x20, 0x00, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0xc8, 0x99, 0x03, 0x60, 0xe9, - 0x60, 0xfe, 0x00, 0xb0, 0x49, 0xa5, 0x50, 0x0f, - 0x99, 0x03, 0x00, 0x88, 0x49, 0xa3, 0x50, 0x0d, - 0x48, 0xa0, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x55, - 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, 0x90, 0x02, - 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, - 0x20, 0x01, 0x40, 0xb0, 0x99, 0x02, 0x40, 0x08, - 0xd1, 0x12, 0x99, 0x03, 0x20, 0x01, 0x40, 0x88, - 0x99, 0x02, 0x40, 0x08, 0xd0, 0x0b, 0x99, 0x03, - 0x20, 0x01, 0x40, 0x88, 0x43, 0xc0, 0x99, 0x02, - 0x40, 0x08, 0x90, 0x02, 0x20, 0x01, 0x40, 0xb0, - 0x99, 0x02, 0x43, 0x08, 0x90, 0x02, 0xe0, 0x11, - 0x99, 0x03, 0x20, 0x01, 0x40, 0x88, 0x99, 0x02, - 0x40, 0x08, 0xd1, 0x0b, 0x20, 0x01, 0x40, 0xb0, - 0x43, 0xc0, 0x99, 0x02, 0x40, 0x08, 0x90, 0x02, - 0x99, 0x03, 0x20, 0x01, 0x40, 0x88, 0x99, 0x02, - 0x43, 0x08, 0x90, 0x02, 0x6b, 0x28, 0xf7, 0xfe, - 0xfe, 0xbc, 0x90, 0x00, 0x9a, 0x00, 0xe0, 0x00, - 0xe0, 0x22, 0x99, 0x03, 0x1c, 0x28, 0xf0, 0x00, - 0xfa, 0x3d, 0x6b, 0x38, 0xf7, 0xfe, 0xfe, 0xb1, - 0x90, 0x00, 0x9a, 0x00, 0x1c, 0x31, 0x1c, 0x38, - 0xf0, 0x00, 0xfa, 0x34, 0x98, 0x02, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x88, 0x48, 0x7c, 0x68, 0x00, - 0x42, 0xa8, 0xd0, 0x03, 0x48, 0x7a, 0x68, 0x00, - 0x42, 0xb8, 0xd1, 0x03, 0x98, 0x01, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0xc8, 0x20, 0x92, 0x49, 0x74, - 0x60, 0x08, 0x20, 0x00, 0xb0, 0x05, 0xe7, 0x1b, - 0x49, 0x71, 0x20, 0x91, 0xf0, 0x19, 0xfe, 0xa0, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x0a, - 0xfa, 0x4d, 0xe7, 0xf5, 0x00, 0xb0, 0x49, 0x6d, - 0x58, 0x08, 0x42, 0xa8, 0xd0, 0x05, 0x20, 0x92, - 0x49, 0x69, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x05, - 0xe7, 0x06, 0x2c, 0x0b, 0xdb, 0x12, 0x2c, 0x12, - 0xdc, 0x10, 0x48, 0x67, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x09, 0x48, 0x65, 0x68, 0x00, 0x42, 0xa8, - 0xd0, 0x05, 0x20, 0x92, 0x49, 0x60, 0x60, 0x08, - 0x20, 0xff, 0xb0, 0x05, 0xe6, 0xf4, 0x48, 0x60, - 0x60, 0x07, 0xe0, 0x08, 0x6b, 0xf8, 0x28, 0x01, - 0xd1, 0x05, 0x20, 0x92, 0x49, 0x5a, 0x60, 0x08, - 0x20, 0xff, 0xb0, 0x05, 0xe6, 0xe8, 0x48, 0x5a, - 0x68, 0x00, 0x42, 0xa8, 0xd1, 0x02, 0x20, 0x00, - 0x49, 0x57, 0x60, 0x08, 0x00, 0xb0, 0x49, 0x55, - 0x50, 0x0f, 0x99, 0x03, 0x60, 0xe9, 0x60, 0xfe, - 0x48, 0x50, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x73, - 0x6b, 0x28, 0xf7, 0xfe, 0xfe, 0x4e, 0x90, 0x00, - 0x6a, 0xa9, 0x9a, 0x00, 0x48, 0x4f, 0xf0, 0x0b, - 0xfa, 0x1d, 0x6b, 0x38, 0xf7, 0xfe, 0xfe, 0x45, - 0x90, 0x00, 0x6a, 0xb9, 0x9a, 0x00, 0x48, 0x4b, - 0xf0, 0x0b, 0xfa, 0x42, 0x48, 0x48, 0x68, 0x00, - 0x42, 0xa8, 0xd1, 0x0f, 0x20, 0x02, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0xc8, 0x2c, 0x0b, 0xdb, 0x01, - 0x2c, 0x12, 0xdd, 0x07, 0x21, 0x00, 0x20, 0x02, - 0xf0, 0x03, 0xfd, 0xae, 0x48, 0x42, 0x21, 0x0d, - 0x06, 0xc9, 0x61, 0x88, 0x2c, 0x0b, 0xdb, 0x42, - 0x2c, 0x12, 0xdc, 0x40, 0x98, 0x04, 0x42, 0xa0, - 0xd0, 0x2c, 0x20, 0x02, 0x21, 0x0d, 0x06, 0xc9, - 0x60, 0xc8, 0x21, 0x00, 0x20, 0x02, 0xf0, 0x03, - 0xfd, 0x9b, 0x2c, 0x0f, 0xd0, 0x05, 0x2c, 0x10, - 0xd0, 0x03, 0x2c, 0x11, 0xd0, 0x01, 0x2c, 0x0b, - 0xd1, 0x03, 0x21, 0x00, 0x20, 0x12, 0xf0, 0x03, - 0xfd, 0x8f, 0x2c, 0x0c, 0xd0, 0x01, 0x2c, 0x0f, - 0xd1, 0x03, 0x21, 0x00, 0x20, 0x04, 0xf0, 0x03, - 0xfd, 0x87, 0x2c, 0x0d, 0xd0, 0x01, 0x2c, 0x10, - 0xd1, 0x03, 0x21, 0x00, 0x20, 0x08, 0xf0, 0x03, - 0xfd, 0x7f, 0x2c, 0x0e, 0xd0, 0x01, 0x2c, 0x11, - 0xd1, 0x03, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x03, - 0xfd, 0x77, 0xe0, 0x03, 0x20, 0x00, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0xc8, 0x6a, 0xb8, 0x30, 0x01, - 0x05, 0x00, 0x6a, 0xf9, 0x31, 0x01, 0x02, 0x89, - 0x43, 0x08, 0x6b, 0x79, 0x31, 0x02, 0x43, 0x08, - 0x21, 0x0d, 0x06, 0xc9, 0x61, 0x88, 0x20, 0x0d, - 0x06, 0xc0, 0x68, 0x80, 0x90, 0x02, 0x20, 0x00, - 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, 0xe0, 0x00, - 0xe0, 0x1f, 0x20, 0x01, 0x40, 0xb0, 0x43, 0xc0, - 0x99, 0x02, 0x40, 0x08, 0x90, 0x02, 0xf0, 0x00, - 0xf9, 0xcf, 0x6b, 0x38, 0xf7, 0xfe, 0xfd, 0xd1, - 0x90, 0x00, 0x9a, 0x00, 0x1c, 0x31, 0x1c, 0x38, - 0xf0, 0x00, 0xf9, 0x54, 0x98, 0x02, 0x21, 0x0d, - 0x06, 0xc9, 0x60, 0x88, 0x2c, 0x0b, 0xdb, 0x08, - 0x2c, 0x12, 0xdc, 0x06, 0x98, 0x04, 0x42, 0xa0, - 0xd1, 0x03, 0x20, 0x01, 0x21, 0x0d, 0x06, 0xc9, - 0x60, 0xc8, 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x05, 0xe6, 0x3c, 0xb0, 0x05, - 0xe6, 0x3a, 0xe6, 0x39, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xb9, 0xc4, - 0x2e, 0x08, 0xba, 0x28, 0x2e, 0x08, 0xbb, 0x00, - 0x3f, 0xff, 0xff, 0xff, 0xb5, 0xf0, 0x1c, 0x07, - 0x00, 0xb8, 0x49, 0x09, 0x58, 0x0c, 0x1c, 0x7d, - 0x60, 0xe5, 0x00, 0xa8, 0x49, 0x06, 0x50, 0x0c, - 0x6b, 0x20, 0xf7, 0xfe, 0xfd, 0x9a, 0x1c, 0x06, - 0x1c, 0x32, 0x1c, 0x29, 0x1c, 0x20, 0xf0, 0x00, - 0xf9, 0x1d, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0xb9, 0xc4, 0xb5, 0xf0, 0x1c, 0x07, - 0x00, 0xb8, 0x49, 0x09, 0x58, 0x0c, 0x1e, 0x7d, - 0x60, 0xe5, 0x00, 0xa8, 0x49, 0x06, 0x50, 0x0c, - 0x6b, 0x20, 0xf7, 0xfe, 0xfd, 0x82, 0x1c, 0x06, - 0x1c, 0x32, 0x1c, 0x29, 0x1c, 0x20, 0xf0, 0x00, - 0xf9, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0xb9, 0xc4, 0xb5, 0xf3, 0x1c, 0x0f, - 0xb0, 0x86, 0x98, 0x06, 0x90, 0x05, 0x98, 0x05, - 0x68, 0xc5, 0x48, 0x77, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x2d, 0x19, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2d, 0x08, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd0, 0x05, 0x20, 0xff, 0xb0, 0x06, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x98, 0x05, 0x69, 0x00, 0x28, 0x13, 0xd1, 0x02, - 0x20, 0xff, 0xb0, 0x06, 0xe7, 0xf4, 0x49, 0x69, - 0x20, 0x91, 0xf0, 0x19, 0xfd, 0x5d, 0x28, 0x92, - 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x0a, 0xf9, 0x0a, - 0xe7, 0xf5, 0x00, 0xa8, 0x49, 0x64, 0x58, 0x08, - 0x99, 0x05, 0x42, 0x88, 0xd0, 0x05, 0x20, 0x92, - 0x49, 0x60, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x06, - 0xe7, 0xde, 0x42, 0xbd, 0xd1, 0x05, 0x20, 0x92, - 0x49, 0x5c, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x06, - 0xe7, 0xd6, 0x20, 0x00, 0x00, 0xa9, 0x4a, 0x5a, - 0x50, 0x50, 0x98, 0x05, 0x60, 0xc7, 0x48, 0x59, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x0d, 0x48, 0x54, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x09, 0x99, 0x05, - 0x00, 0xb8, 0x4a, 0x53, 0x50, 0x11, 0x20, 0x92, - 0x49, 0x50, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x06, - 0xe7, 0xbe, 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, - 0x1c, 0x04, 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, - 0x60, 0x88, 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, - 0x4b, 0x4b, 0x18, 0xc9, 0x60, 0x08, 0x20, 0x00, - 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0x48, 0x18, 0xc9, - 0x60, 0x48, 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, - 0x4b, 0x45, 0x18, 0xc9, 0x64, 0x08, 0x20, 0x00, - 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0x42, 0x18, 0xc9, - 0x64, 0x48, 0x20, 0x01, 0x90, 0x01, 0x20, 0x01, - 0x40, 0xa8, 0x40, 0x20, 0xd1, 0x01, 0x20, 0x00, - 0x90, 0x01, 0x20, 0x01, 0x40, 0xa8, 0x43, 0xc0, - 0x40, 0x04, 0x1c, 0x3e, 0x42, 0xbd, 0xd9, 0x23, - 0x00, 0xb0, 0x49, 0x37, 0x58, 0x08, 0x28, 0x00, - 0xd0, 0x01, 0x36, 0x01, 0xe7, 0xf8, 0x1e, 0x70, - 0x90, 0x04, 0x98, 0x04, 0x42, 0xb8, 0xda, 0x04, - 0xe0, 0x07, 0x98, 0x04, 0x38, 0x01, 0x90, 0x04, - 0xe7, 0xf7, 0x98, 0x04, 0xf7, 0xff, 0xff, 0x32, - 0xe7, 0xf7, 0x20, 0xff, 0x40, 0xb8, 0x90, 0x03, - 0x20, 0xff, 0x40, 0xb0, 0x43, 0xc0, 0x99, 0x03, - 0x40, 0x08, 0x90, 0x03, 0x98, 0x03, 0x00, 0x40, - 0x90, 0x03, 0x00, 0x60, 0x90, 0x00, 0xe0, 0x1f, - 0x00, 0xb0, 0x49, 0x25, 0x58, 0x08, 0x28, 0x00, - 0xd0, 0x01, 0x3e, 0x01, 0xe7, 0xf8, 0x1c, 0x70, - 0x90, 0x04, 0x98, 0x04, 0x42, 0xb8, 0xd9, 0x04, - 0xe0, 0x07, 0x98, 0x04, 0x30, 0x01, 0x90, 0x04, - 0xe7, 0xf7, 0x98, 0x04, 0xf7, 0xff, 0xff, 0x26, - 0xe7, 0xf7, 0x20, 0xff, 0x40, 0xb0, 0x90, 0x03, - 0x20, 0xff, 0x40, 0xb8, 0x43, 0xc0, 0x99, 0x03, - 0x40, 0x08, 0x90, 0x03, 0x08, 0x60, 0x90, 0x00, - 0x98, 0x00, 0x99, 0x03, 0x40, 0x08, 0x90, 0x00, - 0x98, 0x03, 0x43, 0x84, 0x98, 0x00, 0x43, 0x04, - 0x20, 0x01, 0x40, 0xb8, 0x43, 0xc0, 0x40, 0x04, - 0x98, 0x01, 0x40, 0xb8, 0x43, 0x04, 0x99, 0x05, - 0x00, 0xb8, 0x4a, 0x0d, 0x50, 0x11, 0x98, 0x05, - 0x6b, 0x00, 0xf7, 0xfe, 0xfc, 0x92, 0x90, 0x02, - 0x9a, 0x02, 0x1c, 0x39, 0x98, 0x05, 0xf0, 0x00, - 0xf8, 0x15, 0x20, 0x0d, 0x06, 0xc0, 0x60, 0x84, - 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, - 0xb0, 0x06, 0xe7, 0x25, 0xb0, 0x06, 0xe7, 0x23, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0xba, 0x2c, - 0x2e, 0x08, 0xb9, 0xc4, 0x2e, 0x08, 0x9d, 0xf0, - 0x68, 0x00, 0x04, 0x00, 0xb5, 0xf7, 0x1c, 0x04, - 0x1c, 0x0f, 0x01, 0x3d, 0x4b, 0x2f, 0x18, 0xe9, - 0x1d, 0xe2, 0x32, 0x0d, 0x20, 0x00, 0x28, 0x03, - 0xd3, 0x02, 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, - 0xca, 0x20, 0xc1, 0x20, 0xe7, 0xfa, 0x6a, 0xe3, - 0x05, 0x9d, 0x0d, 0xad, 0x00, 0xfe, 0x4b, 0x28, - 0x18, 0xf3, 0x60, 0x1d, 0x6b, 0x63, 0x33, 0x01, - 0x05, 0x9d, 0x0d, 0xad, 0x00, 0xfe, 0x4b, 0x24, - 0x18, 0xf3, 0x60, 0x5d, 0x6a, 0xa5, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x1d, 0x00, 0xfe, 0x4b, 0x20, - 0x18, 0xf3, 0x64, 0x1d, 0x9d, 0x02, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x1d, 0x00, 0xfe, 0x4b, 0x1c, - 0x18, 0xf3, 0x64, 0x5d, 0x4b, 0x1b, 0x68, 0x1b, - 0x2b, 0x01, 0xd1, 0x2a, 0x2f, 0x00, 0xd1, 0x28, - 0x4b, 0x17, 0x68, 0x5d, 0x23, 0x8f, 0x00, 0x9b, - 0x42, 0x9d, 0xd3, 0x03, 0x23, 0x8f, 0x00, 0x9b, - 0x4d, 0x13, 0x60, 0x6b, 0x4b, 0x12, 0x68, 0x1d, - 0x4b, 0x13, 0x42, 0x9d, 0xd3, 0x02, 0x4b, 0x12, - 0x4d, 0x0f, 0x60, 0x2b, 0x4b, 0x0e, 0x6c, 0x5d, - 0x23, 0x01, 0x02, 0x9b, 0x1a, 0xed, 0x23, 0xb3, - 0x00, 0x9b, 0x42, 0x9d, 0xd3, 0x02, 0x4b, 0x0d, - 0x4d, 0x09, 0x64, 0x6b, 0x4b, 0x08, 0x6c, 0x1d, - 0x23, 0x01, 0x02, 0x9b, 0x1a, 0xed, 0x4b, 0x0a, - 0x42, 0x9d, 0xd3, 0x02, 0x4b, 0x09, 0x4d, 0x04, - 0x64, 0x2b, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x68, 0x00, 0x0c, 0x00, - 0x68, 0x00, 0x04, 0x00, 0x2e, 0x08, 0x9d, 0xf0, - 0x00, 0x00, 0x02, 0x3a, 0x00, 0x00, 0x06, 0xcc, - 0x00, 0x00, 0x02, 0xca, 0x00, 0x00, 0x06, 0xca, - 0xb4, 0xf0, 0x4f, 0x15, 0x4c, 0x15, 0x20, 0x00, - 0x21, 0x00, 0x22, 0x00, 0x43, 0xd2, 0x4d, 0x14, - 0x68, 0x6d, 0x42, 0x85, 0xdd, 0x1b, 0x1c, 0x05, - 0x30, 0x01, 0x00, 0xad, 0x59, 0x7b, 0x42, 0x93, - 0xd0, 0xf9, 0x4d, 0x0f, 0x68, 0x6d, 0x42, 0x85, - 0xda, 0x00, 0xe0, 0x10, 0x31, 0x01, 0x1c, 0x05, - 0x30, 0x01, 0x00, 0xad, 0x59, 0x7a, 0x42, 0x93, - 0xd0, 0xf9, 0x02, 0x95, 0x43, 0x1d, 0x1c, 0x2e, - 0xc4, 0x40, 0x4d, 0x07, 0x68, 0x6d, 0x42, 0x85, - 0xdb, 0x00, 0x31, 0x01, 0xe7, 0xdf, 0x25, 0x0d, - 0x06, 0xed, 0x61, 0x29, 0xbc, 0xf0, 0x47, 0x70, - 0x2e, 0x08, 0xba, 0x38, 0x68, 0x00, 0x0d, 0x40, - 0x2e, 0x08, 0xbb, 0x00, 0xb5, 0xf3, 0xb0, 0x82, - 0x9d, 0x02, 0x69, 0x2c, 0x2c, 0x13, 0xd1, 0x05, - 0x20, 0x75, 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x68, 0xee, 0x48, 0xf8, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2e, 0x19, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0xe0, 0x04, 0x2e, 0x08, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, - 0x20, 0xff, 0xb0, 0x02, 0xe7, 0xe6, 0x49, 0xef, - 0x20, 0x91, 0xf0, 0x19, 0xfb, 0xbd, 0x28, 0x92, - 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x09, 0xff, 0x6a, - 0xe7, 0xf5, 0x00, 0xb0, 0x49, 0xea, 0x58, 0x08, - 0x99, 0x02, 0x42, 0x88, 0xd0, 0x05, 0x20, 0x92, - 0x49, 0xe6, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x02, - 0xe7, 0xd0, 0x48, 0xe3, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x16, 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, - 0x90, 0x01, 0x99, 0x03, 0x29, 0x01, 0xd1, 0x05, - 0x20, 0x01, 0x40, 0xb0, 0x99, 0x01, 0x43, 0x08, - 0x90, 0x01, 0xe0, 0x05, 0x20, 0x01, 0x40, 0xb0, - 0x43, 0xc0, 0x99, 0x01, 0x40, 0x08, 0x90, 0x01, - 0x98, 0x01, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, - 0x48, 0xd8, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x73, - 0x48, 0xd3, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x6f, - 0x99, 0x03, 0x29, 0x01, 0xd1, 0x6c, 0xb0, 0x83, - 0x1c, 0x30, 0xf0, 0x0a, 0xfe, 0x71, 0x28, 0x01, - 0xd1, 0x05, 0x20, 0x92, 0x49, 0xcd, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x05, 0xe7, 0x9e, 0x49, 0xce, - 0x20, 0x91, 0xf0, 0x19, 0xfb, 0x75, 0x28, 0x92, - 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0a, 0xfe, 0xbb, - 0x2c, 0x0b, 0xdb, 0x01, 0x2c, 0x12, 0xdd, 0x06, - 0x48, 0xc8, 0x68, 0x00, 0x68, 0x40, 0x30, 0x01, - 0x49, 0xc6, 0x68, 0x09, 0x60, 0x48, 0x20, 0x92, - 0x49, 0xc3, 0x60, 0x08, 0x20, 0x01, 0x49, 0xc3, - 0x68, 0x09, 0x60, 0x08, 0x2c, 0x0b, 0xdb, 0x11, - 0x2c, 0x12, 0xdc, 0x0f, 0x48, 0xbf, 0x68, 0x00, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, - 0x23, 0x01, 0x43, 0x18, 0x49, 0xbb, 0x68, 0x09, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, - 0x27, 0x00, 0xe0, 0xbc, 0x27, 0x00, 0x20, 0x00, - 0x90, 0x01, 0x98, 0x01, 0x28, 0x00, 0xd1, 0x15, - 0x2f, 0x07, 0xd2, 0x13, 0x6a, 0xe8, 0x05, 0x81, - 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, 0x00, 0x83, - 0x18, 0x18, 0x00, 0xc0, 0x4a, 0xaf, 0x68, 0x12, - 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, - 0x6f, 0xc0, 0x42, 0x81, 0xda, 0x01, 0x20, 0x01, - 0x90, 0x01, 0xe7, 0xe6, 0x98, 0x01, 0x28, 0x00, - 0xd1, 0x16, 0x2f, 0x18, 0xd2, 0x14, 0x6a, 0xe8, - 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, - 0x23, 0x4c, 0x43, 0x58, 0x4a, 0xa3, 0x68, 0x12, - 0x18, 0x80, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x69, 0x40, 0x42, 0x81, 0xda, 0x03, 0xe0, 0x00, - 0xe0, 0xb0, 0x20, 0x01, 0x90, 0x01, 0xe7, 0xe5, - 0x3f, 0x01, 0x6b, 0x28, 0xf7, 0xfe, 0xfb, 0x01, - 0x90, 0x00, 0x2f, 0x07, 0xd2, 0x16, 0x48, 0x99, - 0x68, 0x01, 0x1c, 0x38, 0xf0, 0x0a, 0xf9, 0x0a, - 0x00, 0xb8, 0x19, 0xc0, 0x00, 0xc0, 0x49, 0x95, - 0x68, 0x09, 0x18, 0x40, 0x23, 0x2b, 0x01, 0x5b, - 0x18, 0xc0, 0x9a, 0x00, 0x1c, 0x29, 0xf0, 0x0a, - 0xfa, 0x5f, 0x48, 0x90, 0x68, 0x00, 0xf0, 0x0a, - 0xfe, 0x59, 0xe0, 0x4a, 0x2f, 0x18, 0xd2, 0x48, - 0x1f, 0xf8, 0x49, 0x8c, 0x68, 0x09, 0xf0, 0x0a, - 0xf9, 0x45, 0x20, 0x4c, 0x43, 0x78, 0x49, 0x89, - 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x0a, 0x9a, 0x00, 0x1c, 0x29, 0xf0, 0x0a, - 0xfa, 0x47, 0x20, 0x4c, 0x43, 0x78, 0x49, 0x83, - 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x82, 0x6f, 0xc0, 0x28, 0x00, 0xd0, 0x17, - 0x20, 0x4c, 0x43, 0x78, 0x49, 0x7d, 0x68, 0x09, - 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x68, 0x00, 0x04, 0x00, 0x0c, 0x00, 0xd0, 0x0b, - 0x20, 0x4c, 0x43, 0x78, 0x49, 0x77, 0x68, 0x09, - 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x68, 0x00, 0x0c, 0x00, 0x04, 0x00, 0xd1, 0x0a, - 0x20, 0x02, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x71, - 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, - 0x39, 0x82, 0x67, 0x48, 0xe0, 0x09, 0x20, 0x03, - 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x6b, 0x68, 0x12, - 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, 0x39, 0x82, - 0x67, 0x48, 0x48, 0x68, 0x68, 0x00, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, 0x00, 0x40, - 0x90, 0x03, 0x98, 0x03, 0x23, 0x02, 0x43, 0x18, - 0x90, 0x03, 0x48, 0x62, 0x68, 0x00, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, 0x07, 0xc0, - 0x0f, 0xc0, 0x99, 0x03, 0x18, 0x40, 0x90, 0x03, - 0x98, 0x03, 0x49, 0x5c, 0x68, 0x09, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, 0x1c, 0x39, - 0x48, 0x58, 0x68, 0x00, 0xf0, 0x0a, 0xfa, 0x72, - 0x2c, 0x0b, 0xdb, 0x01, 0x2c, 0x12, 0xdd, 0x04, - 0x6b, 0x69, 0x48, 0x54, 0x68, 0x00, 0xf0, 0x0a, - 0xf9, 0x4d, 0x1c, 0x30, 0x21, 0x01, 0xf0, 0x0a, - 0xfd, 0x45, 0x49, 0x4f, 0x20, 0x91, 0xf0, 0x19, - 0xfa, 0x77, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, - 0x48, 0x4c, 0x68, 0x00, 0x90, 0x02, 0x48, 0x4c, - 0x68, 0x00, 0x49, 0x4a, 0x60, 0x08, 0x98, 0x02, - 0x49, 0x49, 0x60, 0x08, 0x20, 0x92, 0x49, 0x46, - 0x60, 0x08, 0xb0, 0x03, 0x48, 0x43, 0x68, 0x00, - 0x28, 0x01, 0xd1, 0x75, 0x48, 0x3e, 0x68, 0x00, - 0x28, 0x01, 0xd1, 0x71, 0x99, 0x03, 0x29, 0x00, - 0xd1, 0x6e, 0xb0, 0x85, 0x1c, 0x30, 0xf0, 0x0a, - 0xfd, 0x47, 0x28, 0x00, 0xd1, 0x05, 0x20, 0x92, - 0x49, 0x38, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x07, - 0xe6, 0x74, 0x49, 0x39, 0x20, 0x91, 0xf0, 0x19, - 0xfa, 0x4b, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, - 0xf0, 0x0a, 0xfd, 0x91, 0x2c, 0x0b, 0xdb, 0x01, - 0x2c, 0x12, 0xdd, 0x0b, 0x48, 0x33, 0x68, 0x00, - 0x68, 0x40, 0x28, 0x00, 0xd0, 0x06, 0x48, 0x31, - 0x68, 0x00, 0x68, 0x40, 0x38, 0x01, 0x49, 0x2f, - 0x68, 0x09, 0x60, 0x48, 0x20, 0x92, 0x49, 0x2c, - 0x60, 0x08, 0x20, 0x01, 0x49, 0x2b, 0x68, 0x09, - 0x60, 0x08, 0x2c, 0x0b, 0xdb, 0x11, 0x2c, 0x12, - 0xdc, 0x0f, 0x48, 0x28, 0x68, 0x00, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, 0x08, 0x40, - 0x00, 0x40, 0x49, 0x24, 0x68, 0x09, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, 0x27, 0x00, - 0xe0, 0xb2, 0x27, 0x00, 0x20, 0x00, 0x90, 0x03, - 0x98, 0x03, 0x28, 0x00, 0xd1, 0x15, 0x2f, 0x07, - 0xd2, 0x13, 0x6a, 0xe8, 0x05, 0x81, 0x0d, 0x89, - 0x1c, 0x38, 0x37, 0x01, 0x00, 0x83, 0x18, 0x18, - 0x00, 0xc0, 0x4a, 0x18, 0x68, 0x12, 0x18, 0x80, - 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, - 0x42, 0x81, 0xd1, 0x01, 0x20, 0x01, 0x90, 0x03, - 0xe7, 0xe6, 0x98, 0x03, 0x28, 0x00, 0xd1, 0x26, - 0x2f, 0x18, 0xd2, 0x24, 0x6a, 0xe8, 0x05, 0x81, - 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, 0x23, 0x4c, - 0x43, 0x58, 0x4a, 0x0c, 0x68, 0x12, 0x18, 0x80, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0xe0, 0x00, - 0xe0, 0xa9, 0x69, 0x40, 0x42, 0x81, 0xd1, 0x11, - 0x20, 0x01, 0x90, 0x03, 0xe0, 0x0e, 0x00, 0x00, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0xba, 0x2c, - 0x2e, 0x08, 0xb9, 0xc4, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xbb, 0x24, 0xe7, 0xd5, 0x3f, 0x01, - 0x6b, 0x28, 0xf7, 0xfe, 0xf9, 0xc2, 0x90, 0x01, - 0x2f, 0x07, 0xd2, 0x09, 0x48, 0x4a, 0x68, 0x01, - 0x1c, 0x38, 0xf0, 0x0a, 0xf8, 0x3d, 0x48, 0x48, - 0x68, 0x00, 0xf0, 0x0a, 0xfd, 0x27, 0xe0, 0x06, - 0x2f, 0x18, 0xd2, 0x04, 0x1f, 0xf8, 0x49, 0x44, - 0x68, 0x09, 0xf0, 0x0a, 0xf8, 0x6f, 0x48, 0x42, - 0x68, 0x00, 0x4b, 0x42, 0x18, 0xc0, 0xf0, 0x0a, - 0xf9, 0x8f, 0x20, 0x00, 0x49, 0x3e, 0x68, 0x09, - 0x23, 0x09, 0x01, 0xdb, 0x18, 0xc9, 0x64, 0x88, - 0x48, 0x3b, 0x68, 0x00, 0x68, 0x40, 0x28, 0x07, - 0xd3, 0x0e, 0x48, 0x39, 0x68, 0x00, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, 0x23, 0xfe, - 0x43, 0x18, 0x49, 0x35, 0x68, 0x09, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, 0xe0, 0x33, - 0x20, 0x01, 0x90, 0x00, 0x21, 0x00, 0x91, 0x02, - 0x48, 0x2f, 0x68, 0x00, 0x68, 0x40, 0x99, 0x02, - 0x42, 0x88, 0xd8, 0x04, 0xe0, 0x08, 0x99, 0x02, - 0x31, 0x01, 0x91, 0x02, 0xe7, 0xf4, 0x98, 0x00, - 0x00, 0x40, 0x30, 0x01, 0x90, 0x00, 0xe7, 0xf6, - 0x98, 0x00, 0x08, 0x40, 0x00, 0x40, 0x90, 0x00, - 0x48, 0x25, 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xc0, 0x69, 0x80, 0x07, 0xc0, 0x0f, 0xc0, - 0x49, 0x21, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xc9, 0x61, 0x88, 0x48, 0x1e, 0x68, 0x00, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, - 0x99, 0x00, 0x43, 0x08, 0x49, 0x1a, 0x68, 0x09, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, - 0x1c, 0x39, 0x48, 0x17, 0x68, 0x00, 0xf0, 0x0a, - 0xf9, 0x4d, 0x2c, 0x0b, 0xdb, 0x01, 0x2c, 0x12, - 0xdd, 0x04, 0x6b, 0x69, 0x48, 0x12, 0x68, 0x00, - 0xf0, 0x0a, 0xf8, 0x7e, 0x1c, 0x30, 0x21, 0x00, - 0xf0, 0x0a, 0xfc, 0x20, 0x49, 0x10, 0x20, 0x91, - 0xf0, 0x19, 0xf9, 0x52, 0x28, 0x92, 0xd0, 0x00, - 0xe7, 0xf8, 0x48, 0x0b, 0x68, 0x00, 0x90, 0x04, - 0x48, 0x0c, 0x68, 0x00, 0x49, 0x08, 0x60, 0x08, - 0x98, 0x04, 0x49, 0x0a, 0x60, 0x08, 0x20, 0x92, - 0x49, 0x07, 0x60, 0x08, 0xb0, 0x05, 0x20, 0x92, - 0x49, 0x07, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x02, - 0xe5, 0x60, 0xb0, 0x02, 0xe5, 0x5e, 0x00, 0x00, - 0x2e, 0x08, 0xbb, 0x20, 0x00, 0x00, 0x04, 0xcc, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x24, - 0x2e, 0x08, 0xba, 0x2c, 0xb5, 0xf3, 0x1c, 0x07, - 0x1c, 0x3e, 0x69, 0x30, 0x28, 0x13, 0xd1, 0x04, - 0x20, 0x75, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0xf4, 0x48, 0x1e, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x05, 0x2c, 0x19, 0xd3, 0x01, - 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, - 0x2c, 0x08, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x20, 0xff, - 0xe7, 0xe7, 0x49, 0x16, 0x20, 0x91, 0xf0, 0x19, - 0xf9, 0x0b, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, - 0xf0, 0x09, 0xfc, 0xb8, 0xe7, 0xf5, 0x00, 0xa0, - 0x49, 0x11, 0x58, 0x08, 0x42, 0xb8, 0xd0, 0x04, - 0x20, 0x92, 0x49, 0x0e, 0x60, 0x08, 0x20, 0xff, - 0xe7, 0xd3, 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, - 0x1c, 0x05, 0x20, 0x01, 0x40, 0xa0, 0x40, 0x05, - 0x2d, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x99, 0x01, - 0x60, 0x08, 0xe0, 0x02, 0x20, 0x01, 0x99, 0x01, - 0x60, 0x08, 0x20, 0x92, 0x49, 0x03, 0x60, 0x08, - 0x20, 0x00, 0xe7, 0xbe, 0xe7, 0xbd, 0x00, 0x00, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0xba, 0x2c, - 0x2e, 0x08, 0xb9, 0xc4, 0xb5, 0xf3, 0x1c, 0x07, - 0xb0, 0x81, 0x1c, 0x3c, 0x68, 0xe5, 0x69, 0x60, - 0x4b, 0x49, 0x40, 0x18, 0x99, 0x02, 0x07, 0x89, - 0x0f, 0x89, 0x02, 0x09, 0x43, 0x08, 0x61, 0x60, - 0x05, 0x80, 0x48, 0x46, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x2d, 0x19, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2d, 0x08, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd0, 0x05, 0x20, 0x00, 0xb0, 0x01, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x49, 0x3b, 0x20, 0x91, 0xf0, 0x19, 0xf8, 0xb4, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x09, - 0xfc, 0x61, 0xe7, 0xf5, 0x00, 0xa8, 0x49, 0x37, - 0x58, 0x08, 0x42, 0xb8, 0xd0, 0x05, 0x20, 0x92, - 0x49, 0x33, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x01, - 0xe7, 0xe6, 0x48, 0x30, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x69, 0x20, 0x28, 0x0b, 0xdb, 0x0c, - 0x69, 0x20, 0x28, 0x12, 0xdc, 0x09, 0x01, 0x28, - 0x4b, 0x2d, 0x18, 0xc1, 0x91, 0x00, 0x1d, 0xe6, - 0x36, 0x0d, 0x68, 0x30, 0x99, 0x00, 0x60, 0x08, - 0xe0, 0x41, 0x48, 0x26, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x3d, 0x48, 0x28, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x39, 0xb0, 0x82, 0x1c, 0x28, 0xf0, 0x0a, - 0xfb, 0x73, 0x28, 0x00, 0xd1, 0x05, 0x20, 0x92, - 0x49, 0x1f, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x03, - 0xe7, 0xbe, 0x49, 0x21, 0x20, 0x91, 0xf0, 0x19, - 0xf8, 0x77, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, - 0xf0, 0x0a, 0xfb, 0xbd, 0x20, 0x92, 0x49, 0x1c, - 0x60, 0x08, 0x20, 0x01, 0x49, 0x1b, 0x68, 0x09, - 0x60, 0x08, 0x48, 0x1a, 0x68, 0x01, 0x1c, 0x20, - 0xf0, 0x0a, 0xfb, 0x6e, 0x90, 0x00, 0x69, 0x60, - 0x99, 0x00, 0x60, 0xc8, 0x49, 0x14, 0x20, 0x91, - 0xf0, 0x19, 0xf8, 0x5e, 0x28, 0x92, 0xd0, 0x00, - 0xe7, 0xf8, 0x48, 0x12, 0x68, 0x00, 0x90, 0x01, - 0x48, 0x11, 0x68, 0x00, 0x49, 0x0f, 0x60, 0x08, - 0x98, 0x01, 0x49, 0x0f, 0x60, 0x08, 0x20, 0x92, - 0x49, 0x0b, 0x60, 0x08, 0xb0, 0x02, 0x20, 0x92, - 0x49, 0x05, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x01, - 0xe7, 0x8a, 0xb0, 0x01, 0xe7, 0x88, 0x00, 0x00, - 0xff, 0xff, 0xfc, 0xff, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xb9, 0xc4, - 0x68, 0x00, 0x0c, 0x00, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xbb, 0x24, 0xb5, 0xf3, 0x1c, 0x07, - 0xb0, 0x81, 0x1c, 0x3c, 0x68, 0xe5, 0x69, 0x60, - 0x4b, 0x49, 0x40, 0x18, 0x99, 0x02, 0x07, 0x09, - 0x0f, 0x09, 0x02, 0x89, 0x43, 0x08, 0x61, 0x60, - 0x04, 0x80, 0x48, 0x46, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x2d, 0x19, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2d, 0x08, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd0, 0x05, 0x20, 0x00, 0xb0, 0x01, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x49, 0x3b, 0x20, 0x91, 0xf0, 0x19, 0xf8, 0x08, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x09, - 0xfb, 0xb5, 0xe7, 0xf5, 0x00, 0xa8, 0x49, 0x37, - 0x58, 0x08, 0x42, 0xb8, 0xd0, 0x05, 0x20, 0x92, - 0x49, 0x33, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x01, - 0xe7, 0xe6, 0x48, 0x30, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x69, 0x20, 0x28, 0x0b, 0xdb, 0x0c, - 0x69, 0x20, 0x28, 0x12, 0xdc, 0x09, 0x01, 0x28, - 0x4b, 0x2d, 0x18, 0xc6, 0x1d, 0xe0, 0x30, 0x0d, - 0x90, 0x00, 0x98, 0x00, 0x68, 0x00, 0x60, 0x30, - 0xe0, 0x41, 0x48, 0x26, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x3d, 0x48, 0x28, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x39, 0xb0, 0x82, 0x1c, 0x28, 0xf0, 0x0a, - 0xfa, 0xc7, 0x28, 0x00, 0xd1, 0x05, 0x20, 0x92, - 0x49, 0x1f, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x03, - 0xe7, 0xbe, 0x49, 0x21, 0x20, 0x91, 0xf0, 0x18, - 0xff, 0xcb, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, - 0xf0, 0x0a, 0xfb, 0x11, 0x20, 0x92, 0x49, 0x1c, - 0x60, 0x08, 0x20, 0x01, 0x49, 0x1b, 0x68, 0x09, - 0x60, 0x08, 0x48, 0x1a, 0x68, 0x01, 0x1c, 0x20, - 0xf0, 0x0a, 0xfa, 0xc2, 0x90, 0x00, 0x69, 0x60, - 0x99, 0x00, 0x60, 0xc8, 0x49, 0x14, 0x20, 0x91, - 0xf0, 0x18, 0xff, 0xb2, 0x28, 0x92, 0xd0, 0x00, - 0xe7, 0xf8, 0x48, 0x12, 0x68, 0x00, 0x90, 0x01, - 0x48, 0x11, 0x68, 0x00, 0x49, 0x0f, 0x60, 0x08, - 0x98, 0x01, 0x49, 0x0f, 0x60, 0x08, 0x20, 0x92, - 0x49, 0x0b, 0x60, 0x08, 0xb0, 0x02, 0x20, 0x92, - 0x49, 0x05, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x01, - 0xe7, 0x8a, 0xb0, 0x01, 0xe7, 0x88, 0x00, 0x00, - 0xff, 0xff, 0xc3, 0xff, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xb9, 0xc4, - 0x68, 0x00, 0x0c, 0x00, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xbb, 0x24, 0xb5, 0xf3, 0x1c, 0x07, - 0xb0, 0x82, 0x1c, 0x3c, 0x68, 0xe5, 0x26, 0x00, - 0x99, 0x03, 0x29, 0x01, 0xd1, 0x00, 0x26, 0x01, - 0x69, 0x60, 0x06, 0x80, 0x0f, 0xc0, 0x42, 0xb0, - 0xd1, 0x05, 0x20, 0x00, 0xb0, 0x02, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x69, 0x60, - 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, 0x07, 0xf1, - 0x0e, 0x89, 0x43, 0x08, 0x61, 0x60, 0x06, 0x80, - 0x48, 0x44, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, - 0x2d, 0x19, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x00, 0xe0, 0x04, 0x2d, 0x08, 0xd3, 0x01, - 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, - 0xd0, 0x02, 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xde, - 0x49, 0x3b, 0x20, 0x91, 0xf0, 0x18, 0xff, 0x50, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x09, - 0xfa, 0xfd, 0xe7, 0xf5, 0x00, 0xa8, 0x49, 0x37, - 0x58, 0x08, 0x42, 0xb8, 0xd0, 0x05, 0x20, 0x92, - 0x49, 0x33, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x02, - 0xe7, 0xc9, 0x48, 0x30, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x69, 0x20, 0x28, 0x0b, 0xdb, 0x0e, - 0x69, 0x20, 0x28, 0x12, 0xdc, 0x0b, 0x01, 0x28, - 0x4b, 0x2d, 0x18, 0xc1, 0x91, 0x01, 0x1d, 0xe0, - 0x30, 0x0d, 0x90, 0x00, 0x98, 0x00, 0x68, 0x00, - 0x99, 0x01, 0x60, 0x08, 0xe0, 0x41, 0x48, 0x25, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x3d, 0x48, 0x27, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x39, 0xb0, 0x82, - 0x1c, 0x28, 0xf0, 0x0a, 0xfa, 0x0d, 0x28, 0x00, - 0xd1, 0x05, 0x20, 0x92, 0x49, 0x1e, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x04, 0xe7, 0x9f, 0x49, 0x20, - 0x20, 0x91, 0xf0, 0x18, 0xff, 0x11, 0x28, 0x92, - 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0a, 0xfa, 0x57, - 0x20, 0x92, 0x49, 0x1b, 0x60, 0x08, 0x20, 0x01, - 0x49, 0x1a, 0x68, 0x09, 0x60, 0x08, 0x48, 0x19, - 0x68, 0x01, 0x1c, 0x20, 0xf0, 0x0a, 0xfa, 0x08, - 0x90, 0x00, 0x69, 0x60, 0x99, 0x00, 0x60, 0xc8, - 0x49, 0x13, 0x20, 0x91, 0xf0, 0x18, 0xfe, 0xf8, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x11, - 0x68, 0x00, 0x90, 0x01, 0x48, 0x10, 0x68, 0x00, - 0x49, 0x0e, 0x60, 0x08, 0x98, 0x01, 0x49, 0x0e, - 0x60, 0x08, 0x20, 0x92, 0x49, 0x0a, 0x60, 0x08, - 0xb0, 0x02, 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x02, 0xe7, 0x6b, 0xb0, 0x02, - 0xe7, 0x69, 0x00, 0x00, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xb9, 0xc4, - 0x68, 0x00, 0x0c, 0x00, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xbb, 0x24, 0xb5, 0xf0, 0x1c, 0x04, - 0x1c, 0x0f, 0xb0, 0x83, 0x1c, 0x25, 0x69, 0x28, - 0x28, 0x13, 0xd1, 0x04, 0x20, 0x75, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xee, - 0x20, 0x04, 0x40, 0x38, 0x08, 0x81, 0x91, 0x02, - 0x69, 0x68, 0x23, 0xc0, 0x43, 0xdb, 0x40, 0x18, - 0x07, 0xb9, 0x0f, 0x89, 0x01, 0x89, 0x43, 0x08, - 0x61, 0x68, 0x06, 0x00, 0x69, 0x68, 0x4b, 0x48, - 0x40, 0x18, 0x99, 0x02, 0x07, 0xc9, 0x0c, 0x49, - 0x43, 0x08, 0x61, 0x68, 0x04, 0x40, 0x48, 0x45, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2e, 0x19, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0xe0, 0x04, 0x2e, 0x08, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, - 0x20, 0x00, 0xb0, 0x03, 0xe7, 0xd0, 0x49, 0x3c, - 0x20, 0x91, 0xf0, 0x18, 0xfe, 0x91, 0x28, 0x92, - 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x09, 0xfa, 0x3e, - 0xe7, 0xf5, 0x00, 0xb0, 0x49, 0x37, 0x58, 0x08, - 0x42, 0xa0, 0xd0, 0x05, 0x20, 0x92, 0x49, 0x34, - 0x60, 0x08, 0x20, 0xff, 0xb0, 0x03, 0xe7, 0xbb, - 0x48, 0x30, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, - 0x69, 0x28, 0x28, 0x0b, 0xdb, 0x0e, 0x69, 0x28, - 0x28, 0x12, 0xdc, 0x0b, 0x01, 0x30, 0x4b, 0x2e, - 0x18, 0xc0, 0x90, 0x01, 0x1d, 0xe8, 0x30, 0x0d, - 0x90, 0x00, 0x98, 0x00, 0x68, 0x00, 0x99, 0x01, - 0x60, 0x08, 0xe0, 0x41, 0x48, 0x25, 0x68, 0x00, - 0x28, 0x01, 0xd1, 0x3d, 0x48, 0x27, 0x68, 0x00, - 0x28, 0x01, 0xd1, 0x39, 0xb0, 0x82, 0x1c, 0x30, - 0xf0, 0x0a, 0xf9, 0x4e, 0x28, 0x00, 0xd1, 0x05, - 0x20, 0x92, 0x49, 0x1f, 0x60, 0x08, 0x20, 0x00, - 0xb0, 0x05, 0xe7, 0x91, 0x49, 0x20, 0x20, 0x91, - 0xf0, 0x18, 0xfe, 0x52, 0x28, 0x92, 0xd0, 0x00, - 0xe7, 0xf8, 0xf0, 0x0a, 0xf9, 0x98, 0x20, 0x92, - 0x49, 0x1b, 0x60, 0x08, 0x20, 0x01, 0x49, 0x1b, - 0x68, 0x09, 0x60, 0x08, 0x48, 0x19, 0x68, 0x01, - 0x1c, 0x28, 0xf0, 0x0a, 0xf9, 0x49, 0x90, 0x00, - 0x69, 0x68, 0x99, 0x00, 0x60, 0xc8, 0x49, 0x14, - 0x20, 0x91, 0xf0, 0x18, 0xfe, 0x39, 0x28, 0x92, - 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x11, 0x68, 0x00, - 0x90, 0x01, 0x48, 0x11, 0x68, 0x00, 0x49, 0x0f, - 0x60, 0x08, 0x98, 0x01, 0x49, 0x0e, 0x60, 0x08, - 0x20, 0x92, 0x49, 0x0b, 0x60, 0x08, 0xb0, 0x02, - 0x20, 0x92, 0x49, 0x05, 0x60, 0x08, 0x20, 0x00, - 0xb0, 0x03, 0xe7, 0x5d, 0xb0, 0x03, 0xe7, 0x5b, - 0xff, 0xff, 0xbf, 0xff, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xb9, 0xc4, - 0x68, 0x00, 0x0c, 0x00, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xbb, 0x24, 0x1c, 0x01, 0x20, 0x0d, - 0x06, 0xc0, 0x60, 0x41, 0x48, 0x02, 0x63, 0x81, - 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x00, 0x00, - 0x68, 0x00, 0x0d, 0x00, 0x20, 0x0d, 0x06, 0xc0, - 0x68, 0x40, 0x02, 0x00, 0x0a, 0x00, 0x47, 0x70, - 0xe7, 0xfd, 0x1c, 0x01, 0x1c, 0x0a, 0x68, 0xd0, - 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x03, 0x1c, 0x0a, - 0x1c, 0x19, 0x69, 0x08, 0x28, 0x13, 0xd1, 0x01, - 0x20, 0x75, 0x47, 0x70, 0x69, 0x08, 0x28, 0x0b, - 0xdb, 0x0b, 0x69, 0x08, 0x28, 0x12, 0xdc, 0x08, - 0x6d, 0x08, 0x60, 0x10, 0x6d, 0x88, 0x60, 0x90, - 0x6d, 0x48, 0x60, 0x50, 0x6d, 0xc8, 0x60, 0xd0, - 0xe0, 0x07, 0x6a, 0x88, 0x60, 0x10, 0x6b, 0x08, - 0x60, 0x90, 0x6a, 0xc8, 0x60, 0x50, 0x6b, 0x48, - 0x60, 0xd0, 0x20, 0x00, 0xe7, 0xe5, 0xe7, 0xe4, - 0x1c, 0x03, 0x1c, 0x0a, 0x68, 0x10, 0x60, 0x18, - 0x68, 0x90, 0x60, 0x98, 0x68, 0x50, 0x60, 0x58, - 0x68, 0xd0, 0x60, 0xd8, 0x47, 0x70, 0xe7, 0xfd, - 0x1c, 0x01, 0x1c, 0x0a, 0x69, 0x50, 0x05, 0x80, - 0x0f, 0x80, 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, - 0x1c, 0x0a, 0x69, 0x50, 0x12, 0x80, 0x07, 0x00, - 0x0f, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0xb4, 0x80, - 0x1c, 0x01, 0x1c, 0x0f, 0x22, 0x01, 0x69, 0x78, - 0x23, 0x20, 0x40, 0x18, 0xd1, 0x00, 0x22, 0x00, - 0x1c, 0x10, 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xfc, - 0x1c, 0x01, 0x1c, 0x0b, 0x69, 0x18, 0x28, 0x13, - 0xd1, 0x01, 0x20, 0x75, 0x47, 0x70, 0x69, 0x58, - 0x06, 0x00, 0x0f, 0x82, 0x69, 0x58, 0x04, 0x40, - 0x0f, 0xc0, 0x00, 0x80, 0x43, 0x02, 0x1c, 0x10, - 0xe7, 0xf4, 0xe7, 0xf3, 0x1c, 0x01, 0x20, 0x0d, - 0x06, 0xc0, 0x61, 0x41, 0x20, 0x00, 0x47, 0x70, - 0xe7, 0xfd, 0x20, 0x0d, 0x06, 0xc0, 0x69, 0x40, - 0x1c, 0x01, 0x1c, 0x08, 0x47, 0x70, 0xe7, 0xfd, - 0x1c, 0x01, 0x22, 0x00, 0x29, 0x01, 0xd1, 0x00, - 0x22, 0x01, 0x20, 0x0d, 0x06, 0xc0, 0x68, 0xc0, - 0x1c, 0x03, 0x2b, 0x02, 0xd1, 0x01, 0x29, 0x00, - 0xd1, 0x02, 0x20, 0x0d, 0x06, 0xc0, 0x60, 0xc2, - 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x21, 0x01, - 0x20, 0x0d, 0x06, 0xc0, 0x68, 0xc0, 0x1c, 0x02, - 0x2a, 0x00, 0xd1, 0x00, 0x21, 0x00, 0x1c, 0x08, - 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, 0x1c, 0x0a, - 0x69, 0x10, 0x47, 0x70, 0xe7, 0xfd, 0xb4, 0x90, - 0x1c, 0x07, 0x1c, 0x0a, 0x1c, 0x39, 0x69, 0x08, - 0x28, 0x13, 0xd0, 0x05, 0x69, 0x08, 0x28, 0x0b, - 0xdb, 0x05, 0x69, 0x08, 0x28, 0x12, 0xdc, 0x02, - 0x20, 0x86, 0xbc, 0x90, 0x47, 0x70, 0x6b, 0x8c, - 0x69, 0x48, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x00, - 0x08, 0x64, 0x69, 0x08, 0x00, 0x80, 0x4b, 0x03, - 0x58, 0x18, 0x43, 0x60, 0x60, 0x10, 0x20, 0x00, - 0xe7, 0xef, 0xe7, 0xee, 0x2e, 0x03, 0xa8, 0xc8, - 0xb5, 0xf3, 0x1c, 0x07, 0xb0, 0x81, 0x9c, 0x02, - 0x69, 0x20, 0x28, 0x13, 0xd0, 0x05, 0x69, 0x20, - 0x28, 0x0b, 0xdb, 0x08, 0x69, 0x20, 0x28, 0x12, - 0xdc, 0x05, 0x20, 0x86, 0xb0, 0x01, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xe5, - 0x68, 0x38, 0x64, 0x20, 0x68, 0x7e, 0x64, 0x66, - 0x08, 0xb6, 0x61, 0xa6, 0x48, 0x3f, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x05, 0x2d, 0x19, 0xd3, 0x01, - 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, - 0x2d, 0x08, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, - 0xb0, 0x01, 0xe7, 0xe0, 0x49, 0x36, 0x20, 0x91, - 0xf0, 0x18, 0xfd, 0x16, 0x28, 0x92, 0xd0, 0x03, - 0x20, 0x01, 0xf0, 0x09, 0xf8, 0xc3, 0xe7, 0xf5, - 0x00, 0xa8, 0x49, 0x32, 0x58, 0x08, 0x99, 0x02, - 0x42, 0x88, 0xd0, 0x05, 0x20, 0x92, 0x49, 0x2e, - 0x60, 0x08, 0x20, 0x86, 0xb0, 0x01, 0xe7, 0xca, - 0x48, 0x2a, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x06, - 0x01, 0x28, 0x4b, 0x2b, 0x18, 0xc0, 0x90, 0x00, - 0x98, 0x00, 0x60, 0x06, 0xe0, 0x41, 0x48, 0x25, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x3d, 0x48, 0x27, - 0x68, 0x00, 0x28, 0x01, 0xd1, 0x39, 0xb0, 0x82, - 0x1c, 0x28, 0xf0, 0x09, 0xff, 0xdd, 0x28, 0x00, - 0xd1, 0x05, 0x20, 0x92, 0x49, 0x1e, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x03, 0xe7, 0xab, 0x49, 0x20, - 0x20, 0x91, 0xf0, 0x18, 0xfc, 0xe1, 0x28, 0x92, - 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0a, 0xf8, 0x27, - 0x20, 0x92, 0x49, 0x1b, 0x60, 0x08, 0x20, 0x01, - 0x49, 0x1a, 0x68, 0x09, 0x60, 0x08, 0x48, 0x19, - 0x68, 0x01, 0x1c, 0x20, 0xf0, 0x09, 0xff, 0xd8, - 0x90, 0x00, 0x69, 0xa0, 0x99, 0x00, 0x61, 0x08, - 0x49, 0x13, 0x20, 0x91, 0xf0, 0x18, 0xfc, 0xc8, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x11, - 0x68, 0x00, 0x90, 0x01, 0x48, 0x10, 0x68, 0x00, - 0x49, 0x0e, 0x60, 0x08, 0x98, 0x01, 0x49, 0x0e, - 0x60, 0x08, 0x20, 0x92, 0x49, 0x0a, 0x60, 0x08, - 0xb0, 0x02, 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x01, 0xe7, 0x77, 0xb0, 0x01, - 0xe7, 0x75, 0x00, 0x00, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xb9, 0xc4, - 0x68, 0x00, 0x0c, 0x04, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xbb, 0x24, 0xb4, 0x80, 0x1c, 0x01, - 0x06, 0x0b, 0x0e, 0x1b, 0x22, 0x01, 0x2a, 0x19, - 0xd3, 0x02, 0xe0, 0x0f, 0x32, 0x01, 0xe7, 0xfa, - 0x00, 0x90, 0x4f, 0x08, 0x58, 0x38, 0x68, 0x80, - 0x02, 0x00, 0x0e, 0x00, 0x42, 0x98, 0xd1, 0x04, - 0x00, 0x90, 0x4f, 0x04, 0x58, 0x38, 0xbc, 0x80, - 0x47, 0x70, 0xe7, 0xef, 0x20, 0x00, 0xe7, 0xfa, - 0xe7, 0xf9, 0x00, 0x00, 0x2e, 0x08, 0xb9, 0xc4, - 0xb4, 0x90, 0x1c, 0x07, 0x1c, 0x0a, 0x06, 0x38, - 0x16, 0x01, 0x48, 0x20, 0x60, 0x02, 0x48, 0x20, - 0x68, 0x80, 0x23, 0x33, 0x06, 0x5b, 0x65, 0xd8, - 0x48, 0x1d, 0x68, 0xc0, 0x23, 0x33, 0x06, 0x5b, - 0x66, 0x18, 0x48, 0x1c, 0x4b, 0x1a, 0x60, 0x98, - 0x48, 0x1b, 0x4b, 0x19, 0x60, 0xd8, 0x20, 0x01, - 0x23, 0x33, 0x06, 0x5b, 0x66, 0xd8, 0x48, 0x19, - 0x68, 0x04, 0x23, 0x01, 0x04, 0xdb, 0x43, 0x23, - 0x60, 0x03, 0x48, 0x16, 0x68, 0x04, 0x23, 0x01, - 0x04, 0xdb, 0x43, 0x9c, 0x1c, 0x23, 0x60, 0x03, - 0x29, 0x00, 0xd1, 0x10, 0x20, 0xff, 0x30, 0x14, - 0x23, 0x1b, 0x06, 0x9b, 0x62, 0x18, 0x48, 0x10, - 0x68, 0x04, 0x23, 0xff, 0x33, 0x01, 0x43, 0x9c, - 0x1c, 0x23, 0x60, 0x03, 0x48, 0x0d, 0x23, 0x1b, - 0x06, 0x9b, 0x64, 0x18, 0xe0, 0x08, 0x20, 0xff, - 0x30, 0x14, 0x23, 0x1b, 0x06, 0x9b, 0x62, 0x18, - 0x48, 0x02, 0x68, 0x00, 0x4b, 0x08, 0x60, 0x18, - 0xbc, 0x90, 0x47, 0x70, 0x2e, 0x08, 0x9b, 0xbc, - 0x2e, 0x08, 0xb9, 0x88, 0xcc, 0x1f, 0xe0, 0x00, - 0xcc, 0x1f, 0xfe, 0x00, 0x6c, 0x00, 0x00, 0x40, - 0x6c, 0x00, 0x00, 0x20, 0x00, 0x00, 0x82, 0x18, - 0x6c, 0x00, 0x00, 0x80, 0xb4, 0xf0, 0x1c, 0x01, - 0xb0, 0x82, 0x23, 0x1b, 0x06, 0x9b, 0x6a, 0x1b, - 0x1c, 0x18, 0x27, 0x00, 0x22, 0x00, 0x08, 0x40, - 0x00, 0x40, 0x4b, 0xaf, 0x68, 0x1c, 0x08, 0x64, - 0x00, 0x64, 0x60, 0x1c, 0x4b, 0xad, 0x68, 0x1b, - 0x1c, 0x1d, 0x23, 0x1b, 0x06, 0x9b, 0x6c, 0x1b, - 0x93, 0x01, 0x23, 0xff, 0x33, 0x01, 0x40, 0x03, - 0xd0, 0x00, 0x22, 0xff, 0x23, 0x01, 0x04, 0x9b, - 0x40, 0x03, 0xd0, 0x1b, 0x4c, 0xa4, 0x68, 0x26, - 0x23, 0x01, 0x04, 0x9b, 0x43, 0x9e, 0x1c, 0x33, - 0x60, 0x23, 0x4c, 0xa1, 0x68, 0x26, 0x23, 0x01, - 0x43, 0x33, 0x60, 0x23, 0x23, 0x00, 0x93, 0x00, - 0x9b, 0x00, 0x2b, 0x0a, 0xdb, 0x04, 0xe0, 0x04, - 0x9b, 0x00, 0x33, 0x01, 0x93, 0x00, 0xe7, 0xf7, - 0xe7, 0xfa, 0x4b, 0x99, 0x68, 0x1c, 0x08, 0x64, - 0x00, 0x64, 0x60, 0x1c, 0x23, 0x01, 0x02, 0x9b, - 0x40, 0x0b, 0xd0, 0x29, 0x23, 0x01, 0x02, 0xdb, - 0x40, 0x0b, 0xd0, 0x01, 0x4b, 0x94, 0x40, 0x18, - 0x23, 0x01, 0x03, 0x1b, 0x40, 0x0b, 0xd0, 0x02, - 0x23, 0x01, 0x05, 0x9b, 0x43, 0x18, 0x4b, 0x91, - 0x40, 0x18, 0x02, 0x4c, 0x23, 0x7f, 0x02, 0x5b, - 0x40, 0x23, 0x43, 0x18, 0x23, 0x40, 0x40, 0x0b, - 0xd0, 0x03, 0x23, 0x01, 0x04, 0x5b, 0x43, 0x18, - 0xe0, 0x0a, 0x4b, 0x8b, 0x40, 0x18, 0x23, 0x20, - 0x40, 0x0b, 0xd0, 0x03, 0x23, 0x01, 0x04, 0x1b, - 0x43, 0x18, 0xe0, 0x01, 0x4b, 0x87, 0x40, 0x18, - 0x23, 0x1b, 0x06, 0x9b, 0x62, 0x18, 0xe0, 0xfc, - 0x23, 0x04, 0x40, 0x0b, 0xd0, 0x0f, 0x4c, 0x7e, - 0x68, 0x26, 0x23, 0x01, 0x43, 0x33, 0x60, 0x23, - 0x4b, 0x81, 0x68, 0x9b, 0x24, 0x33, 0x06, 0x64, - 0x65, 0xe3, 0x4b, 0x7f, 0x68, 0xdb, 0x24, 0x33, - 0x06, 0x64, 0x66, 0x23, 0xe0, 0xe9, 0x23, 0x01, - 0x03, 0x5b, 0x40, 0x0b, 0xd0, 0x13, 0x4b, 0x7a, - 0x68, 0x9b, 0x24, 0x33, 0x06, 0x64, 0x65, 0xe3, - 0x4b, 0x77, 0x68, 0xdb, 0x24, 0x33, 0x06, 0x64, - 0x66, 0x23, 0x23, 0x01, 0x24, 0x33, 0x06, 0x64, - 0x66, 0xe3, 0x4c, 0x6d, 0x68, 0x26, 0x23, 0x01, - 0x43, 0x33, 0x60, 0x23, 0xe0, 0xd1, 0x07, 0xcb, - 0x0f, 0xdb, 0xd0, 0x02, 0x23, 0x02, 0x43, 0x18, - 0xe0, 0x05, 0x23, 0x02, 0x40, 0x0b, 0xd0, 0x02, - 0x23, 0x02, 0x43, 0xdb, 0x40, 0x18, 0x23, 0x07, - 0x01, 0xdb, 0x40, 0x0b, 0xd0, 0x0f, 0x23, 0x0c, - 0x43, 0xdb, 0x40, 0x18, 0x23, 0xff, 0x33, 0x01, - 0x40, 0x0b, 0xd0, 0x02, 0x23, 0x04, 0x43, 0x18, - 0xe0, 0x05, 0x23, 0x01, 0x02, 0x5b, 0x40, 0x0b, - 0xd0, 0x01, 0x23, 0x08, 0x43, 0x18, 0x23, 0x01, - 0x04, 0x1b, 0x40, 0x0b, 0xd0, 0x08, 0x23, 0x01, - 0x04, 0x9b, 0x43, 0x98, 0x1c, 0x04, 0x20, 0x01, - 0x04, 0xc0, 0x43, 0x20, 0x23, 0x01, 0x43, 0x18, - 0x23, 0x78, 0x40, 0x0b, 0xd0, 0x73, 0x23, 0x30, - 0x40, 0x03, 0xd0, 0x06, 0x2b, 0x10, 0xd0, 0x04, - 0x2b, 0x20, 0xd0, 0x42, 0x2b, 0x30, 0xd0, 0x40, - 0xe0, 0x81, 0x23, 0x10, 0x40, 0x0b, 0xd1, 0x02, - 0x23, 0x08, 0x40, 0x0b, 0xd0, 0x08, 0x23, 0x30, - 0x43, 0xdb, 0x40, 0x18, 0x23, 0x10, 0x40, 0x0b, - 0xd0, 0x01, 0x23, 0x10, 0x43, 0x18, 0xe0, 0x2f, - 0x23, 0x30, 0x43, 0xdb, 0x40, 0x18, 0x23, 0x20, - 0x40, 0x0b, 0xd0, 0x02, 0x23, 0x20, 0x43, 0x18, - 0xe0, 0x01, 0x23, 0x30, 0x43, 0x18, 0x23, 0x01, - 0x43, 0x18, 0x23, 0x1b, 0x06, 0x9b, 0x62, 0x18, - 0x27, 0xff, 0x2a, 0x00, 0xd0, 0x04, 0x4b, 0x43, - 0x68, 0x1b, 0x4c, 0x43, 0x60, 0x23, 0xe0, 0x17, - 0x07, 0xab, 0x0f, 0x9b, 0xd0, 0x09, 0x2b, 0x01, - 0xd0, 0x02, 0x2b, 0x02, 0xd0, 0x0a, 0xe0, 0x0e, - 0x4b, 0x3e, 0x24, 0x1b, 0x06, 0xa4, 0x64, 0x23, - 0xe0, 0x0a, 0x4b, 0x3d, 0x24, 0x1b, 0x06, 0xa4, - 0x64, 0x23, 0xe0, 0x05, 0x4b, 0x3b, 0x24, 0x1b, - 0x06, 0xa4, 0x64, 0x23, 0xe0, 0x00, 0xe7, 0xff, - 0xe0, 0x42, 0x23, 0x40, 0x40, 0x0b, 0xd1, 0x02, - 0x23, 0x20, 0x40, 0x0b, 0xd0, 0x0b, 0x23, 0x30, - 0x43, 0xdb, 0x40, 0x18, 0x23, 0x20, 0x40, 0x0b, - 0xd0, 0x02, 0x23, 0x20, 0x43, 0x18, 0xe0, 0x01, - 0x23, 0x30, 0x43, 0x18, 0xe0, 0x2e, 0x23, 0x30, - 0x43, 0xdb, 0x40, 0x18, 0x23, 0x10, 0x40, 0x0b, - 0xd0, 0x01, 0x23, 0x10, 0x43, 0x18, 0x23, 0x01, - 0x43, 0x18, 0x23, 0x1b, 0x06, 0x9b, 0x62, 0x18, - 0x27, 0xff, 0x2a, 0x00, 0xd0, 0x04, 0x4b, 0x23, - 0x68, 0x1b, 0x4c, 0x23, 0x60, 0x23, 0xe0, 0x19, - 0x07, 0xab, 0x0f, 0x9b, 0xe0, 0x00, 0xe0, 0x17, - 0xd0, 0x09, 0x2b, 0x01, 0xd0, 0x02, 0x2b, 0x02, - 0xd0, 0x0a, 0xe0, 0x0e, 0x4b, 0x20, 0x24, 0x1b, - 0x06, 0xa4, 0x64, 0x23, 0xe0, 0x0a, 0x4b, 0x1f, - 0x24, 0x1b, 0x06, 0xa4, 0x64, 0x23, 0xe0, 0x05, - 0x4b, 0x1d, 0x24, 0x1b, 0x06, 0xa4, 0x64, 0x23, - 0xe0, 0x00, 0xe7, 0xff, 0xe0, 0x00, 0xe7, 0xff, - 0x2f, 0x00, 0xd1, 0x12, 0x23, 0x1b, 0x06, 0x9b, - 0x62, 0x18, 0x23, 0x00, 0x93, 0x00, 0x9b, 0x00, - 0x2b, 0x0a, 0xdb, 0x04, 0xe0, 0x04, 0x9b, 0x00, - 0x33, 0x01, 0x93, 0x00, 0xe7, 0xf7, 0xe7, 0xfa, - 0x4b, 0x03, 0x68, 0x1c, 0x08, 0x64, 0x00, 0x64, - 0x60, 0x1c, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, - 0x6c, 0x00, 0x00, 0x20, 0x6c, 0x00, 0x68, 0x00, - 0xff, 0xbf, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xff, - 0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, - 0x2e, 0x08, 0xb9, 0x88, 0x2e, 0x08, 0x9b, 0xbc, - 0x6c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x98, 0x60, - 0x00, 0x01, 0x58, 0x60, 0x00, 0x02, 0x54, 0x28, - 0x00, 0x00, 0x82, 0x18, 0x00, 0x01, 0x42, 0x18, - 0x00, 0x02, 0x42, 0x18, 0xb5, 0xf3, 0x1c, 0x0f, - 0xb0, 0x81, 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, - 0x90, 0x00, 0x98, 0x00, 0x28, 0x20, 0xdb, 0x05, - 0x20, 0xa2, 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x33, 0x06, 0x40, - 0x6e, 0x00, 0x21, 0x33, 0x06, 0x49, 0x6d, 0xc9, - 0x1a, 0x46, 0x48, 0x12, 0x6c, 0x80, 0x1c, 0x04, - 0x48, 0x10, 0x6c, 0xc0, 0x1c, 0x05, 0x42, 0xac, - 0xd9, 0x09, 0x1b, 0x60, 0x21, 0x64, 0x43, 0x41, - 0x1c, 0x30, 0xf0, 0x09, 0xff, 0xcb, 0x21, 0x64, - 0x1a, 0x08, 0x60, 0x38, 0xe0, 0x06, 0x1b, 0x28, - 0x21, 0x64, 0x43, 0x41, 0x1c, 0x30, 0xf0, 0x09, - 0xff, 0xc1, 0x60, 0x38, 0x42, 0xac, 0xd1, 0x03, - 0x20, 0x31, 0xb0, 0x01, 0xe7, 0xd6, 0xe0, 0x02, - 0x20, 0x00, 0xb0, 0x01, 0xe7, 0xd2, 0xb0, 0x01, - 0xe7, 0xd0, 0x00, 0x00, 0x66, 0x00, 0x00, 0x80, - 0xb5, 0xff, 0x1c, 0x14, 0x1c, 0x1f, 0xb0, 0x82, - 0x98, 0x02, 0x06, 0x01, 0x0e, 0x09, 0x91, 0x00, - 0x98, 0x0b, 0x06, 0x03, 0x16, 0x1b, 0x93, 0x01, - 0xb0, 0x84, 0x99, 0x04, 0x29, 0x20, 0xdb, 0x05, - 0x20, 0xa2, 0xb0, 0x06, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x9b, 0x05, 0x2b, 0x1f, - 0xdd, 0x02, 0x20, 0xaf, 0xb0, 0x06, 0xe7, 0xf5, - 0x98, 0x07, 0x90, 0x01, 0x2f, 0x00, 0xd0, 0x47, - 0xb0, 0x81, 0x98, 0x08, 0x22, 0x00, 0x92, 0x00, - 0x22, 0x1b, 0x06, 0x92, 0x6a, 0x12, 0x23, 0x01, - 0x05, 0x1b, 0x40, 0x1a, 0xd0, 0x01, 0x22, 0xff, - 0x92, 0x00, 0x25, 0x00, 0x08, 0x62, 0x42, 0xaa, - 0xd8, 0x02, 0xe0, 0x34, 0x35, 0x01, 0xe7, 0xf9, - 0x9a, 0x00, 0x2a, 0x00, 0xd0, 0x1e, 0x88, 0x02, - 0x23, 0xff, 0x02, 0x1b, 0x40, 0x1a, 0x12, 0x12, - 0x88, 0x03, 0x02, 0x1b, 0x43, 0x1a, 0x04, 0x11, - 0x0c, 0x09, 0x2f, 0x00, 0xda, 0x05, 0x42, 0x7a, - 0x41, 0x11, 0x1c, 0x0b, 0x04, 0x19, 0x0c, 0x09, - 0xe0, 0x03, 0x40, 0xb9, 0x1c, 0x0a, 0x04, 0x11, - 0x0c, 0x09, 0x22, 0xff, 0x02, 0x12, 0x40, 0x0a, - 0x12, 0x12, 0x02, 0x0b, 0x43, 0x13, 0x80, 0x03, - 0x30, 0x02, 0xe0, 0x0f, 0x2f, 0x00, 0xda, 0x07, - 0x88, 0x02, 0x42, 0x7e, 0x41, 0x32, 0x04, 0x12, - 0x0c, 0x12, 0x80, 0x02, 0x30, 0x02, 0xe0, 0x05, - 0x88, 0x02, 0x40, 0xba, 0x04, 0x12, 0x0c, 0x12, - 0x80, 0x02, 0x30, 0x02, 0xe7, 0xca, 0xb0, 0x01, - 0x49, 0x23, 0x91, 0x03, 0x20, 0x01, 0x06, 0x00, - 0x99, 0x03, 0x60, 0x08, 0x48, 0x21, 0x6c, 0x80, - 0x49, 0x20, 0x6c, 0xc9, 0x1a, 0x40, 0x90, 0x00, - 0x98, 0x00, 0x28, 0x00, 0xdc, 0x09, 0x20, 0x33, - 0x06, 0x40, 0x6e, 0x00, 0x21, 0x33, 0x06, 0x49, - 0x6d, 0xc9, 0x1a, 0x40, 0x99, 0x00, 0x18, 0x40, - 0x90, 0x00, 0x98, 0x00, 0x23, 0x3b, 0x01, 0xdb, - 0x42, 0x98, 0xda, 0x02, 0x20, 0x06, 0xf0, 0x08, - 0xfd, 0x8d, 0x98, 0x00, 0x23, 0x3b, 0x01, 0xdb, - 0x42, 0x98, 0xdb, 0xdf, 0x98, 0x00, 0x42, 0x84, - 0xd9, 0x02, 0x98, 0x00, 0x90, 0x02, 0xe0, 0x00, - 0x94, 0x02, 0x22, 0x04, 0x99, 0x03, 0xb4, 0x06, - 0x9b, 0x07, 0x9a, 0x04, 0x99, 0x06, 0x98, 0x03, - 0xf0, 0x04, 0xfb, 0x8c, 0xb0, 0x02, 0x98, 0x02, - 0x1a, 0x24, 0x98, 0x01, 0x99, 0x02, 0x18, 0x40, - 0x90, 0x01, 0x20, 0x00, 0x90, 0x00, 0x2c, 0x00, - 0xd1, 0xc4, 0x20, 0x00, 0xb0, 0x06, 0xe7, 0x65, - 0xb0, 0x04, 0xb0, 0x02, 0xe7, 0x62, 0x00, 0x00, - 0x9e, 0x00, 0x08, 0x00, 0x66, 0x00, 0x00, 0x80, - 0x20, 0x1b, 0x06, 0x80, 0x6a, 0x00, 0x07, 0xc0, - 0x0f, 0xc0, 0x4a, 0x03, 0x68, 0x12, 0x1c, 0x01, - 0x43, 0x11, 0x1c, 0x08, 0x47, 0x70, 0xe7, 0xfd, - 0x6c, 0x00, 0x08, 0x00, 0xb4, 0x90, 0x1c, 0x01, - 0x20, 0x1b, 0x06, 0x80, 0x6a, 0x00, 0x1c, 0x04, - 0x48, 0x1b, 0x68, 0x00, 0x1c, 0x07, 0x20, 0x30, - 0x40, 0x20, 0xd0, 0x06, 0x28, 0x10, 0xd0, 0x06, - 0x28, 0x20, 0xd0, 0x06, 0x28, 0x30, 0xd0, 0x06, - 0xe0, 0x07, 0x22, 0x01, 0xe0, 0x08, 0x22, 0x02, - 0xe0, 0x06, 0x22, 0x04, 0xe0, 0x04, 0x22, 0x08, - 0xe0, 0x02, 0x20, 0x30, 0xbc, 0x90, 0x47, 0x70, - 0x20, 0x03, 0x07, 0x40, 0x40, 0x38, 0x0f, 0x40, - 0xd0, 0x04, 0x28, 0x01, 0xd0, 0x05, 0x28, 0x02, - 0xd0, 0x06, 0xe0, 0x08, 0x23, 0x10, 0x43, 0x1a, - 0xe0, 0x07, 0x23, 0x20, 0x43, 0x1a, 0xe0, 0x04, - 0x23, 0x40, 0x43, 0x1a, 0xe0, 0x01, 0x20, 0x30, - 0xe7, 0xe8, 0x20, 0x01, 0x05, 0xc0, 0x40, 0x38, - 0xd1, 0x01, 0x23, 0x80, 0x43, 0x1a, 0x60, 0x0a, - 0x20, 0x00, 0xe7, 0xdf, 0xe7, 0xde, 0x00, 0x00, - 0x6c, 0x00, 0x08, 0x00, 0x1c, 0x01, 0x48, 0x01, - 0x60, 0x01, 0x47, 0x70, 0x6c, 0x00, 0x00, 0x80, - 0x1c, 0x01, 0x29, 0x1f, 0xdd, 0x01, 0x20, 0xaf, - 0x47, 0x70, 0x20, 0x80, 0x6c, 0x00, 0x60, 0x01, - 0x20, 0x00, 0xe7, 0xf9, 0xe7, 0xf8, 0xb5, 0xf3, - 0x1c, 0x0a, 0xb0, 0x81, 0x98, 0x01, 0x06, 0x03, - 0x0e, 0x1b, 0x93, 0x00, 0xb0, 0x81, 0x20, 0x1b, - 0x06, 0x80, 0x6a, 0x00, 0x1c, 0x01, 0x25, 0x00, - 0x20, 0x00, 0x90, 0x00, 0x20, 0x1b, 0x06, 0x80, - 0x6c, 0x00, 0x1c, 0x04, 0x27, 0x00, 0x9b, 0x01, - 0x2b, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x02, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x20, 0x33, 0x06, 0x40, 0x6d, 0xc0, 0x23, 0x0d, - 0x06, 0x9b, 0x1a, 0xc0, 0x9b, 0x01, 0x00, 0xdb, - 0x4e, 0x5f, 0x68, 0x36, 0x19, 0x9b, 0x60, 0x58, - 0x20, 0xff, 0x30, 0x01, 0x40, 0x08, 0xd0, 0x01, - 0x20, 0xff, 0x90, 0x00, 0x23, 0x01, 0x04, 0xdb, - 0x43, 0x99, 0x1c, 0x08, 0x21, 0x01, 0x04, 0x89, - 0x43, 0x01, 0x20, 0x01, 0x03, 0x00, 0x40, 0x10, - 0xd0, 0x05, 0x06, 0x90, 0x0e, 0x80, 0xd0, 0x02, - 0x23, 0x01, 0x05, 0x1b, 0x43, 0x19, 0x23, 0x30, - 0x43, 0xdb, 0x40, 0x19, 0x05, 0x10, 0x0d, 0x00, - 0x28, 0x40, 0xd0, 0x48, 0xdc, 0x0e, 0x28, 0x08, - 0xd0, 0x32, 0xdc, 0x06, 0x28, 0x01, 0xd0, 0x1e, - 0x28, 0x02, 0xd0, 0x21, 0x28, 0x04, 0xd0, 0x26, - 0xe0, 0x67, 0x28, 0x10, 0xd0, 0x2f, 0x28, 0x20, - 0xd0, 0x32, 0xe0, 0x62, 0x23, 0x01, 0x02, 0x5b, - 0x42, 0x98, 0xd0, 0x49, 0xdc, 0x06, 0x28, 0x80, - 0xd0, 0x38, 0x23, 0xff, 0x33, 0x01, 0x42, 0x98, - 0xd0, 0x3b, 0xe0, 0x56, 0x23, 0x01, 0x02, 0x9b, - 0x42, 0x98, 0xd0, 0x44, 0x23, 0x01, 0x02, 0xdb, - 0x42, 0x98, 0xd0, 0x47, 0xe0, 0x4d, 0x4b, 0x3d, - 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x3b, 0xe0, 0x49, - 0x23, 0x10, 0x43, 0x19, 0x4b, 0x39, 0x42, 0x9c, - 0xd0, 0x00, 0x4f, 0x38, 0xe0, 0x42, 0x4b, 0x38, - 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x36, 0xe0, 0x3d, - 0x23, 0x10, 0x43, 0x19, 0x4b, 0x34, 0x42, 0x9c, - 0xd0, 0x00, 0x4f, 0x33, 0xe0, 0x36, 0x4b, 0x33, - 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x31, 0xe0, 0x31, - 0x23, 0x10, 0x43, 0x19, 0x4b, 0x2f, 0x42, 0x9c, - 0xd0, 0x00, 0x4f, 0x2e, 0xe0, 0x2a, 0x23, 0x20, - 0x43, 0x19, 0x4b, 0x2d, 0x42, 0x9c, 0xd0, 0x00, - 0x4f, 0x2b, 0xe0, 0x23, 0x23, 0x30, 0x43, 0x19, - 0x4b, 0x29, 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x28, - 0xe0, 0x1c, 0x23, 0x20, 0x43, 0x19, 0x4b, 0x27, - 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x25, 0xe0, 0x15, - 0x23, 0x30, 0x43, 0x19, 0x4b, 0x23, 0x42, 0x9c, - 0xd0, 0x00, 0x4f, 0x22, 0xe0, 0x0e, 0x23, 0x20, - 0x43, 0x19, 0x4b, 0x21, 0x42, 0x9c, 0xd0, 0x00, - 0x4f, 0x1f, 0xe0, 0x07, 0x23, 0x30, 0x43, 0x19, - 0x4b, 0x1d, 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x1c, - 0xe0, 0x00, 0xe7, 0xff, 0x98, 0x00, 0x28, 0x00, - 0xd0, 0x0a, 0x23, 0x01, 0x43, 0x19, 0x20, 0x1b, - 0x06, 0x80, 0x62, 0x01, 0x48, 0x17, 0x68, 0x00, - 0x4b, 0x17, 0x60, 0x18, 0x25, 0xff, 0xe0, 0x0e, - 0x23, 0x01, 0x43, 0x19, 0x2f, 0x00, 0xd0, 0x07, - 0x20, 0x1b, 0x06, 0x80, 0x62, 0x01, 0x20, 0x1b, - 0x06, 0x80, 0x64, 0x07, 0x25, 0xff, 0xe0, 0x02, - 0x20, 0x1b, 0x06, 0x80, 0x62, 0x01, 0x2d, 0x00, - 0xd1, 0x04, 0x48, 0x0e, 0x68, 0x03, 0x08, 0x5b, - 0x00, 0x5b, 0x60, 0x03, 0x20, 0x00, 0xb0, 0x02, - 0xe7, 0x36, 0xb0, 0x01, 0xb0, 0x01, 0xe7, 0x33, - 0x2e, 0x08, 0x9b, 0x40, 0x00, 0x00, 0x82, 0x18, - 0x00, 0x01, 0x42, 0x18, 0x00, 0x02, 0x42, 0x18, - 0x00, 0x00, 0x98, 0x60, 0x00, 0x01, 0x58, 0x60, - 0x00, 0x02, 0x54, 0x28, 0x2e, 0x08, 0x9b, 0xbc, - 0x6c, 0x00, 0x00, 0x80, 0x6c, 0x00, 0x00, 0x20, - 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x82, 0x49, 0x2c, - 0x46, 0x68, 0x22, 0x08, 0xf0, 0x09, 0xfd, 0xca, - 0x20, 0x04, 0xf7, 0xff, 0xfc, 0x23, 0x48, 0x29, - 0x68, 0x80, 0x21, 0x33, 0x06, 0x49, 0x65, 0xc8, - 0x48, 0x26, 0x68, 0xc0, 0x21, 0x33, 0x06, 0x49, - 0x66, 0x08, 0x48, 0x25, 0x68, 0x01, 0x23, 0x02, - 0x43, 0x19, 0x60, 0x01, 0x20, 0x01, 0x21, 0x33, - 0x06, 0x49, 0x67, 0xc8, 0x48, 0x21, 0x68, 0x01, - 0x31, 0xff, 0x31, 0xff, 0x31, 0x02, 0x60, 0x01, - 0x1c, 0x78, 0x12, 0x00, 0xab, 0x01, 0x70, 0x18, - 0x1c, 0x78, 0xab, 0x01, 0x70, 0x58, 0x20, 0x33, - 0x06, 0x40, 0x6d, 0xc5, 0x4b, 0x1a, 0x43, 0x1d, - 0x26, 0x00, 0x2e, 0x10, 0xdb, 0x02, 0xe0, 0x18, - 0x36, 0x01, 0xe7, 0xfa, 0x24, 0x00, 0x2c, 0x07, - 0xd3, 0x02, 0xe0, 0x06, 0x34, 0x01, 0xe7, 0xfa, - 0x46, 0x68, 0x5d, 0x01, 0x70, 0x29, 0x35, 0x01, - 0xe7, 0xf8, 0x24, 0x00, 0x42, 0xbc, 0xdb, 0x02, - 0xe0, 0x06, 0x34, 0x01, 0xe7, 0xfa, 0x98, 0x02, - 0x5d, 0x01, 0x70, 0x29, 0x35, 0x01, 0xe7, 0xf8, - 0xe7, 0xe6, 0x20, 0x33, 0x06, 0x40, 0x66, 0x05, - 0x48, 0x0a, 0x68, 0x01, 0x23, 0x01, 0x05, 0x5b, - 0x43, 0x19, 0x60, 0x01, 0xb0, 0x02, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x03, 0xa8, 0x70, 0x2e, 0x08, 0xb9, 0x88, - 0x66, 0x00, 0x00, 0x70, 0x66, 0x00, 0x00, 0x5c, - 0xcc, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x20, - 0xb5, 0xf7, 0x1c, 0x04, 0x1c, 0x0f, 0x06, 0x20, - 0x0e, 0x00, 0x06, 0x3d, 0x0e, 0x2d, 0x99, 0x02, - 0x06, 0x0a, 0x0e, 0x12, 0x21, 0x02, 0x40, 0x01, - 0xd0, 0x04, 0x21, 0xff, 0x4b, 0x2f, 0x68, 0x1b, - 0x72, 0x19, 0xe0, 0x0c, 0x49, 0x2d, 0x68, 0x09, - 0x7a, 0x09, 0x29, 0xff, 0xd1, 0x03, 0x21, 0x00, - 0x4b, 0x2a, 0x68, 0x1b, 0x60, 0x19, 0x21, 0x00, - 0x4b, 0x28, 0x68, 0x1b, 0x72, 0x19, 0x07, 0xc1, - 0x0f, 0xc9, 0xd0, 0x04, 0x21, 0xff, 0x4b, 0x25, - 0x68, 0x1b, 0x72, 0x59, 0xe0, 0x0c, 0x49, 0x23, - 0x68, 0x09, 0x7a, 0x49, 0x29, 0xff, 0xd1, 0x03, - 0x21, 0x00, 0x4b, 0x20, 0x68, 0x1b, 0x60, 0x59, - 0x21, 0x00, 0x4b, 0x1e, 0x68, 0x1b, 0x72, 0x59, - 0x2d, 0x01, 0xd1, 0x0f, 0x49, 0x1c, 0x68, 0x0e, - 0x23, 0x01, 0x05, 0x5b, 0x43, 0x9e, 0x1c, 0x33, - 0x60, 0x0b, 0x49, 0x1a, 0x68, 0x09, 0x78, 0x09, - 0x23, 0x02, 0x43, 0x19, 0x4b, 0x17, 0x68, 0x1b, - 0x70, 0x19, 0xe0, 0x0e, 0x49, 0x14, 0x68, 0x0e, - 0x23, 0x01, 0x05, 0x5b, 0x43, 0x33, 0x60, 0x0b, - 0x49, 0x12, 0x68, 0x09, 0x78, 0x09, 0x23, 0x02, - 0x43, 0xdb, 0x40, 0x19, 0x4b, 0x0f, 0x68, 0x1b, - 0x70, 0x19, 0x49, 0x0f, 0x62, 0x4a, 0x2a, 0x01, - 0xd1, 0x08, 0x49, 0x0c, 0x68, 0x09, 0x78, 0x09, - 0x23, 0x01, 0x43, 0x19, 0x4b, 0x09, 0x68, 0x1b, - 0x70, 0x19, 0xe0, 0x07, 0x49, 0x07, 0x68, 0x09, - 0x78, 0x09, 0x08, 0x49, 0x00, 0x49, 0x4b, 0x05, - 0x68, 0x1b, 0x70, 0x19, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x9b, 0xc0, - 0x6c, 0x00, 0x00, 0x20, 0x2e, 0x08, 0x9b, 0xc4, - 0xcc, 0x00, 0x0f, 0x80, 0xb4, 0x80, 0x1c, 0x07, - 0x1c, 0x0a, 0x68, 0x38, 0x49, 0x23, 0x68, 0x09, - 0x60, 0xc8, 0x68, 0x78, 0x49, 0x21, 0x68, 0x09, - 0x61, 0x08, 0x68, 0xb8, 0x49, 0x1f, 0x68, 0x09, - 0x61, 0x48, 0x68, 0xf8, 0x49, 0x1d, 0x68, 0x09, - 0x61, 0x88, 0x7d, 0x38, 0x49, 0x1b, 0x68, 0x09, - 0x31, 0x20, 0x70, 0x08, 0x7d, 0x78, 0x49, 0x19, - 0x68, 0x09, 0x31, 0x20, 0x70, 0x48, 0x69, 0x38, - 0x49, 0x16, 0x68, 0x09, 0x61, 0xc8, 0x7d, 0xb8, - 0x49, 0x14, 0x68, 0x09, 0x31, 0x20, 0x70, 0x88, - 0x68, 0x10, 0x49, 0x12, 0x68, 0x09, 0x62, 0x48, - 0x68, 0x50, 0x49, 0x10, 0x68, 0x09, 0x62, 0x88, - 0x68, 0x90, 0x49, 0x0e, 0x68, 0x09, 0x62, 0xc8, - 0x68, 0xd0, 0x49, 0x0c, 0x68, 0x09, 0x63, 0x08, - 0x7d, 0x10, 0x49, 0x0a, 0x68, 0x09, 0x31, 0x20, - 0x76, 0x08, 0x7d, 0x50, 0x49, 0x07, 0x68, 0x09, - 0x31, 0x20, 0x76, 0x48, 0x69, 0x10, 0x49, 0x05, - 0x68, 0x09, 0x63, 0x48, 0x7d, 0x90, 0x49, 0x03, - 0x68, 0x09, 0x31, 0x20, 0x76, 0x88, 0xbc, 0x80, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0xc0, - 0x1c, 0x02, 0x1c, 0x0b, 0x48, 0x03, 0x68, 0x00, - 0x60, 0x02, 0x48, 0x02, 0x68, 0x00, 0x60, 0x43, - 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0xc0, - 0xb5, 0xf3, 0xb0, 0x88, 0x98, 0x08, 0x68, 0x04, - 0x20, 0x01, 0x90, 0x06, 0x20, 0x01, 0x90, 0x05, - 0x48, 0x8c, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x19, - 0x48, 0x8a, 0x68, 0x00, 0x38, 0x01, 0x49, 0x89, - 0x60, 0x08, 0x48, 0x88, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x10, 0x48, 0x87, 0x78, 0x80, 0x90, 0x00, - 0x98, 0x00, 0x00, 0xc0, 0x49, 0x85, 0x68, 0x09, - 0x58, 0x08, 0x23, 0xff, 0x33, 0x01, 0x43, 0x98, - 0x1c, 0x01, 0x98, 0x00, 0x00, 0xc0, 0x4a, 0x81, - 0x68, 0x12, 0x50, 0x11, 0x20, 0x33, 0x06, 0x40, - 0x6e, 0x00, 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc1, - 0x91, 0x02, 0x20, 0x33, 0x06, 0x40, 0x6d, 0xc0, - 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, 0x90, 0x01, - 0x48, 0x79, 0x68, 0x00, 0x42, 0x84, 0xd1, 0x73, - 0x98, 0x01, 0x1d, 0xc7, 0x37, 0x01, 0x78, 0x38, - 0x18, 0x38, 0x1c, 0x47, 0x48, 0x75, 0x6c, 0xc0, - 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, 0x42, 0xb8, - 0xd9, 0x19, 0x78, 0x38, 0x28, 0xff, 0xd1, 0x12, - 0x78, 0x78, 0x23, 0xf0, 0x40, 0x18, 0x28, 0xf0, - 0xd1, 0x0d, 0x78, 0xb8, 0x10, 0x80, 0x07, 0x80, - 0x0f, 0x80, 0x06, 0x00, 0x16, 0x00, 0x90, 0x06, - 0x78, 0x78, 0x10, 0xc0, 0x07, 0xc0, 0x09, 0xc0, - 0x16, 0x00, 0x90, 0x05, 0xe0, 0x03, 0x21, 0x01, - 0x70, 0x39, 0x18, 0x7f, 0xe7, 0xde, 0x21, 0x40, - 0x91, 0x03, 0x25, 0x20, 0x21, 0x14, 0x91, 0x07, - 0x98, 0x06, 0x28, 0x00, 0xd1, 0x02, 0x25, 0x23, - 0x21, 0x12, 0x91, 0x07, 0x98, 0x06, 0x28, 0x02, - 0xd1, 0x02, 0x25, 0x30, 0x21, 0x18, 0x91, 0x07, - 0x98, 0x05, 0x28, 0x00, 0xd1, 0x02, 0x00, 0x6d, - 0x21, 0x70, 0x91, 0x03, 0x99, 0x03, 0x00, 0x48, - 0x99, 0x02, 0x1a, 0x08, 0x90, 0x04, 0x98, 0x04, - 0x99, 0x02, 0x42, 0x88, 0xd3, 0x05, 0xe0, 0x4e, - 0x98, 0x04, 0x99, 0x03, 0x18, 0x40, 0x90, 0x04, - 0xe7, 0xf5, 0x9f, 0x04, 0x21, 0x00, 0x70, 0x39, - 0x37, 0x01, 0x21, 0x00, 0x70, 0x39, 0x37, 0x01, - 0x21, 0x01, 0x70, 0x39, 0x18, 0x7f, 0x21, 0xc0, - 0x70, 0x39, 0x37, 0x01, 0x21, 0x00, 0x70, 0x39, - 0x37, 0x01, 0x21, 0x3a, 0x70, 0x39, 0x37, 0x01, - 0x21, 0x80, 0x70, 0x39, 0x37, 0x01, 0x21, 0x00, - 0x70, 0x39, 0x37, 0x01, 0x99, 0x03, 0x1f, 0xc8, - 0x38, 0x02, 0x1b, 0x41, 0x70, 0x39, 0x37, 0x01, - 0x26, 0x00, 0x99, 0x03, 0x1f, 0xc8, 0x38, 0x02, - 0x1b, 0x40, 0x42, 0xb0, 0xdc, 0x04, 0xe0, 0x00, - 0xe0, 0x34, 0xe0, 0x05, 0x36, 0x01, 0xe7, 0xf4, - 0x21, 0xff, 0x70, 0x39, 0x37, 0x01, 0xe7, 0xf9, - 0x21, 0xff, 0x70, 0x39, 0x37, 0x01, 0x98, 0x05, - 0x00, 0xc0, 0x21, 0xf7, 0x43, 0x01, 0x70, 0x39, - 0x37, 0x01, 0x99, 0x07, 0x70, 0x39, 0x37, 0x01, - 0x21, 0xc0, 0x70, 0x39, 0x37, 0x01, 0x26, 0x00, - 0x1f, 0x28, 0x42, 0xb0, 0xdc, 0x02, 0xe0, 0x05, - 0x36, 0x01, 0xe7, 0xf9, 0x21, 0x00, 0x70, 0x39, - 0x37, 0x01, 0xe7, 0xf9, 0xe7, 0xb0, 0x99, 0x03, - 0x00, 0x48, 0x99, 0x02, 0x1a, 0x08, 0x23, 0x0d, - 0x06, 0x9b, 0x18, 0xc0, 0x49, 0x29, 0x64, 0x88, - 0x99, 0x09, 0x20, 0x78, 0x40, 0x08, 0x23, 0x02, - 0x43, 0x18, 0xf7, 0xff, 0xfa, 0x17, 0x20, 0x01, - 0xf7, 0xff, 0xfa, 0x14, 0x48, 0x22, 0x68, 0x00, - 0x38, 0x02, 0x42, 0xa0, 0xd1, 0x09, 0x48, 0x22, - 0x68, 0x01, 0x23, 0x01, 0x05, 0x5b, 0x43, 0x19, - 0x60, 0x01, 0x20, 0xff, 0x49, 0x1f, 0x68, 0x09, - 0x70, 0x08, 0x48, 0x1b, 0x68, 0x00, 0x38, 0x02, - 0x42, 0xa0, 0xd3, 0x0f, 0x48, 0x1c, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x05, 0x48, 0x1a, 0x68, 0x00, - 0x23, 0x01, 0x06, 0x9b, 0x40, 0x18, 0xd0, 0x05, - 0x20, 0x32, 0x49, 0x13, 0x60, 0x08, 0x48, 0x12, - 0x68, 0x00, 0x1e, 0x84, 0x2c, 0x01, 0xd1, 0x02, - 0x20, 0x02, 0xf7, 0xff, 0xf9, 0xeb, 0x2c, 0xff, - 0xd1, 0x08, 0x20, 0x33, 0x06, 0x40, 0x6d, 0xc0, - 0x30, 0xbc, 0x49, 0x0c, 0x6c, 0xc9, 0x42, 0x88, - 0xd2, 0x00, 0x24, 0x18, 0x2c, 0x00, 0xd0, 0x02, - 0x2c, 0xff, 0xd0, 0x00, 0x3c, 0x01, 0x98, 0x08, - 0x60, 0x04, 0xb0, 0x08, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x9b, 0xb0, - 0x2e, 0x08, 0x9b, 0x9c, 0x2e, 0x08, 0x9b, 0x3c, - 0x2e, 0x08, 0x1f, 0x98, 0x66, 0x00, 0x00, 0x80, - 0x6c, 0x00, 0x00, 0x20, 0x2e, 0x08, 0x9b, 0x98, - 0x6c, 0x00, 0x08, 0x00, 0xb5, 0xff, 0x1c, 0x04, - 0x1c, 0x0f, 0x9a, 0x02, 0x06, 0x15, 0x0e, 0x2d, - 0x9b, 0x03, 0x06, 0x1e, 0x0e, 0x36, 0x2e, 0x20, - 0xdb, 0x04, 0x20, 0xa2, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2d, 0x1f, 0xdb, 0x01, - 0x20, 0xaf, 0xe7, 0xf7, 0x20, 0x01, 0x03, 0x40, - 0xf7, 0xff, 0xf9, 0xac, 0x20, 0x14, 0x49, 0x09, - 0x60, 0x08, 0x20, 0xff, 0x60, 0x20, 0x1c, 0x33, - 0x1c, 0x29, 0x1c, 0x38, 0x22, 0x02, 0xf7, 0xfc, - 0xfa, 0x4b, 0x48, 0x05, 0x68, 0x01, 0x23, 0x01, - 0x05, 0x5b, 0x43, 0x19, 0x60, 0x01, 0x20, 0x00, - 0xe7, 0xe0, 0xe7, 0xdf, 0x2e, 0x08, 0x1f, 0x98, - 0x6c, 0x00, 0x00, 0x20, 0xb4, 0x0f, 0xb5, 0xf0, - 0x1c, 0x07, 0xb0, 0x82, 0x20, 0x00, 0x49, 0x16, - 0x60, 0x08, 0x48, 0x16, 0x6f, 0x80, 0x23, 0x09, - 0x01, 0x9b, 0x42, 0x98, 0xd1, 0x02, 0x20, 0xe1, - 0x00, 0xc0, 0xe0, 0x00, 0x48, 0x12, 0x1c, 0x05, - 0x68, 0x38, 0x28, 0xff, 0xd1, 0x17, 0x98, 0x0d, - 0x90, 0x00, 0x98, 0x0c, 0x90, 0x01, 0x98, 0x01, - 0x99, 0x00, 0x1a, 0x46, 0x08, 0x68, 0x19, 0x81, - 0x1c, 0x28, 0xf0, 0x09, 0xfa, 0xeb, 0x1c, 0x04, - 0x34, 0x01, 0x0f, 0xf0, 0x07, 0xc0, 0xd0, 0x00, - 0x24, 0x04, 0x2c, 0x32, 0xd9, 0x00, 0x24, 0x04, - 0x1d, 0xe0, 0x30, 0x0d, 0x60, 0x38, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0xb0, 0x04, 0x47, 0x18, - 0x2e, 0x08, 0x9b, 0xb0, 0xcc, 0x00, 0x0f, 0x80, - 0x00, 0x00, 0x05, 0xdd, 0xb5, 0xf3, 0x1c, 0x07, - 0xb0, 0x81, 0x99, 0x02, 0x06, 0x09, 0x0e, 0x09, - 0x91, 0x00, 0xb0, 0x82, 0x99, 0x02, 0x29, 0x20, - 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x03, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x99, 0x02, - 0x00, 0x88, 0x49, 0x2f, 0x58, 0x08, 0x90, 0x01, - 0x28, 0x00, 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x03, - 0xe7, 0xf1, 0x20, 0x00, 0x70, 0x78, 0x78, 0xb8, - 0x07, 0x00, 0x0f, 0x00, 0x90, 0x00, 0x98, 0x00, - 0x28, 0x04, 0xd1, 0x1f, 0x6a, 0xfe, 0x24, 0x00, - 0x2c, 0x08, 0xdb, 0x04, 0xe0, 0x18, 0x1c, 0x60, - 0x06, 0x04, 0x0e, 0x24, 0xe7, 0xf8, 0x00, 0xa0, - 0x19, 0x80, 0x68, 0x40, 0x00, 0xa1, 0x19, 0x89, - 0x64, 0x48, 0x21, 0x00, 0x00, 0xa0, 0x19, 0x80, - 0x62, 0x41, 0x00, 0xa0, 0x19, 0x80, 0x6c, 0x40, - 0x28, 0x00, 0xd0, 0x04, 0x20, 0x80, 0x41, 0x20, - 0x88, 0x31, 0x43, 0x08, 0x80, 0x30, 0xe7, 0xe6, - 0x88, 0x30, 0x80, 0x70, 0x78, 0xb8, 0x23, 0x20, - 0x40, 0x18, 0xd0, 0x1f, 0x6b, 0x3d, 0x20, 0x00, - 0x60, 0x28, 0x20, 0x00, 0x60, 0x68, 0x20, 0x00, - 0x60, 0xa8, 0x24, 0x00, 0x2c, 0x08, 0xdb, 0x04, - 0xe0, 0x0c, 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, - 0xe7, 0xf8, 0x20, 0x00, 0x00, 0xa1, 0x19, 0x49, - 0x60, 0xc8, 0x20, 0x00, 0x00, 0xa1, 0x19, 0x49, - 0x63, 0x88, 0xe7, 0xf2, 0x20, 0x00, 0x62, 0xe8, - 0x20, 0x00, 0x63, 0x28, 0x20, 0x00, 0x63, 0x68, - 0x20, 0x00, 0x65, 0xa8, 0x99, 0x02, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x3e, 0xb0, 0x03, 0xe7, 0x9e, - 0xb0, 0x02, 0xb0, 0x01, 0xe7, 0x9b, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0xc8, 0xb5, 0xf3, 0x1c, 0x07, - 0x99, 0x01, 0x06, 0x0c, 0x0e, 0x24, 0xb0, 0x82, - 0x2c, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x02, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0xa0, 0x49, 0x12, 0x58, 0x08, 0x1c, 0x05, - 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x02, 0xe7, 0xf3, - 0x1c, 0x21, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0x84, - 0x1c, 0x06, 0xd0, 0x02, 0x1c, 0x30, 0xb0, 0x02, - 0xe7, 0xea, 0x78, 0x68, 0x21, 0x20, 0x40, 0x01, - 0x91, 0x00, 0x99, 0x00, 0x1c, 0x38, 0xf0, 0x00, - 0xff, 0x3f, 0x68, 0xe9, 0x91, 0x01, 0x29, 0x00, - 0xd0, 0x03, 0x99, 0x01, 0x1c, 0x38, 0xf0, 0x03, - 0xfe, 0x7a, 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xd7, - 0xb0, 0x02, 0xe7, 0xd5, 0x2e, 0x08, 0x9b, 0xc8, - 0xb5, 0xf3, 0x1c, 0x02, 0x99, 0x01, 0x06, 0x0f, - 0x0e, 0x3f, 0xb0, 0x86, 0x00, 0xb8, 0x4b, 0xa1, - 0x68, 0x1b, 0x18, 0xc0, 0x90, 0x00, 0x2f, 0x20, - 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x06, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0xb8, - 0x4b, 0x9b, 0x58, 0x18, 0x90, 0x05, 0x28, 0x00, - 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x06, 0xe7, 0xf2, - 0x78, 0x90, 0x90, 0x01, 0x71, 0xd7, 0x78, 0xd1, - 0x98, 0x01, 0x23, 0x80, 0x40, 0x18, 0xd1, 0x73, - 0x29, 0x20, 0xdd, 0x02, 0x20, 0xb1, 0xb0, 0x06, - 0xe7, 0xe5, 0x48, 0x92, 0x68, 0x00, 0x23, 0x01, - 0x42, 0xd8, 0xd1, 0x02, 0x20, 0xb2, 0xb0, 0x06, - 0xe7, 0xdd, 0x20, 0x01, 0x40, 0x88, 0x4b, 0x8d, - 0x68, 0x1b, 0x40, 0x18, 0xd0, 0x02, 0x20, 0xb1, - 0xb0, 0x06, 0xe7, 0xd4, 0x00, 0x88, 0x4b, 0x8a, - 0x50, 0x1a, 0x48, 0x8a, 0x54, 0x47, 0x01, 0x08, - 0x4b, 0x89, 0x18, 0xc5, 0x7f, 0x10, 0x06, 0x00, - 0x7f, 0x53, 0x04, 0x1b, 0x43, 0x18, 0x7f, 0x93, - 0x02, 0x1b, 0x43, 0x18, 0x7f, 0xd3, 0x43, 0x03, - 0xc5, 0x08, 0x1d, 0xd0, 0x30, 0x19, 0x78, 0x00, - 0x06, 0x00, 0x1d, 0xd3, 0x33, 0x19, 0x78, 0x5b, - 0x04, 0x1b, 0x43, 0x18, 0x1d, 0xd3, 0x33, 0x19, - 0x78, 0x9b, 0x02, 0x1b, 0x43, 0x18, 0x1d, 0xd3, - 0x33, 0x19, 0x78, 0xdb, 0x43, 0x03, 0xc5, 0x08, - 0x01, 0x08, 0x4b, 0x7a, 0x18, 0xc4, 0x7b, 0x10, - 0x06, 0x00, 0x7b, 0x53, 0x04, 0x1b, 0x43, 0x18, - 0x7b, 0x93, 0x02, 0x1b, 0x43, 0x18, 0x7b, 0xd3, - 0x43, 0x03, 0xc4, 0x08, 0x7c, 0x10, 0x06, 0x00, - 0x7c, 0x53, 0x04, 0x1b, 0x43, 0x18, 0x7c, 0x93, - 0x02, 0x1b, 0x43, 0x18, 0x7c, 0xd3, 0x43, 0x03, - 0xc4, 0x08, 0x98, 0x01, 0x07, 0xc0, 0x0f, 0xc0, - 0xd0, 0x20, 0x1d, 0xd0, 0x30, 0x19, 0x79, 0x00, - 0x06, 0x00, 0x1d, 0xd3, 0x33, 0x19, 0x79, 0x5b, - 0x04, 0x1b, 0x43, 0x18, 0x1d, 0xd3, 0x33, 0x19, - 0x79, 0x9b, 0x02, 0x1b, 0x43, 0x18, 0x1d, 0xd3, - 0x33, 0x19, 0x79, 0xdb, 0x43, 0x03, 0xc5, 0x08, - 0x7d, 0x10, 0x06, 0x00, 0x7d, 0x53, 0x04, 0x1b, - 0x43, 0x18, 0x7d, 0x93, 0x02, 0x1b, 0xe0, 0x00, - 0xe0, 0x42, 0x43, 0x18, 0x7d, 0xd3, 0x43, 0x03, - 0xc4, 0x08, 0xe0, 0x03, 0x23, 0x00, 0xc5, 0x08, - 0x23, 0x00, 0xc4, 0x08, 0x23, 0xff, 0xc5, 0x08, - 0x20, 0x19, 0x06, 0x80, 0x6b, 0x00, 0x23, 0x08, - 0x40, 0x18, 0xd0, 0x06, 0x88, 0x90, 0x04, 0x00, - 0x19, 0xc3, 0x93, 0x02, 0x9b, 0x02, 0xc4, 0x08, - 0xe0, 0x00, 0xc4, 0x80, 0x98, 0x01, 0x23, 0x08, - 0x40, 0x18, 0xd0, 0x17, 0x48, 0x50, 0x5d, 0xc0, - 0x30, 0x01, 0x4b, 0x4f, 0x55, 0xd8, 0x7a, 0x10, - 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x04, 0x20, 0x01, - 0x40, 0x88, 0x23, 0x19, 0x06, 0x9b, 0x61, 0x18, - 0x7a, 0x10, 0x23, 0x02, 0x40, 0x18, 0xd0, 0x04, - 0x20, 0x01, 0x40, 0x88, 0x23, 0x19, 0x06, 0x9b, - 0x61, 0x58, 0xe0, 0x05, 0x4e, 0x45, 0x20, 0x01, - 0x40, 0x88, 0x68, 0x33, 0x43, 0x18, 0x60, 0x30, - 0x20, 0x01, 0x40, 0x88, 0x4b, 0x3b, 0x68, 0x1b, - 0x43, 0x18, 0x4b, 0x3a, 0x60, 0x18, 0xe0, 0x4f, - 0x98, 0x01, 0x23, 0x80, 0x40, 0x18, 0xd0, 0x48, - 0x48, 0x3d, 0x88, 0x00, 0x4b, 0x3d, 0x42, 0x98, - 0xd1, 0x02, 0x20, 0xb2, 0xb0, 0x06, 0xe7, 0x26, - 0x00, 0x88, 0x4b, 0x3b, 0x58, 0x18, 0x28, 0x00, - 0xd0, 0x02, 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0x1e, - 0x29, 0x10, 0xdb, 0x02, 0x20, 0xb1, 0xb0, 0x06, - 0xe7, 0x19, 0x20, 0x01, 0x40, 0x88, 0x4b, 0x32, - 0x88, 0x1b, 0x40, 0x18, 0xd0, 0x02, 0x20, 0xb1, - 0xb0, 0x06, 0xe7, 0x10, 0x98, 0x05, 0x78, 0x80, - 0x28, 0x02, 0xdb, 0x02, 0x20, 0xb1, 0xb0, 0x06, - 0xe7, 0x09, 0x00, 0x88, 0x4b, 0x2c, 0x50, 0x1a, - 0x48, 0x2c, 0x54, 0x47, 0x00, 0xf8, 0x1b, 0xc0, - 0x00, 0x80, 0x4b, 0x2b, 0x68, 0x1b, 0x18, 0xc0, - 0x90, 0x04, 0x98, 0x04, 0x7e, 0x00, 0x28, 0xff, - 0xd1, 0x02, 0x98, 0x04, 0x76, 0x01, 0xe0, 0x01, - 0x98, 0x04, 0x76, 0x41, 0x4e, 0x25, 0x96, 0x03, - 0x1d, 0xd3, 0x33, 0x05, 0x00, 0x88, 0x9e, 0x03, - 0x50, 0x33, 0x20, 0x01, 0x40, 0x88, 0x4b, 0x1c, - 0x88, 0x1b, 0x43, 0x18, 0x4b, 0x1a, 0x80, 0x18, - 0xe0, 0x02, 0x20, 0xb1, 0xb0, 0x06, 0xe6, 0xe2, - 0x78, 0x50, 0x23, 0x80, 0x43, 0xdb, 0x40, 0x18, - 0x70, 0x50, 0x98, 0x05, 0x78, 0x80, 0x28, 0x00, - 0xd1, 0x09, 0x98, 0x00, 0x68, 0x00, 0x23, 0x01, - 0x03, 0x5b, 0x43, 0x18, 0x9b, 0x00, 0x60, 0x18, - 0x20, 0x02, 0x9b, 0x05, 0x70, 0xd8, 0x98, 0x05, - 0x78, 0x80, 0x30, 0x01, 0x9b, 0x05, 0x70, 0x98, - 0x20, 0x00, 0xb0, 0x06, 0xe6, 0xc7, 0xb0, 0x06, - 0xe6, 0xc5, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x38, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9c, 0x48, - 0x2e, 0x08, 0x9c, 0x50, 0x2e, 0x08, 0x9d, 0x10, - 0x64, 0x00, 0x10, 0x00, 0x64, 0x00, 0x08, 0x00, - 0x2e, 0x08, 0xb9, 0x60, 0x64, 0x00, 0x00, 0x18, - 0x2e, 0x08, 0x9c, 0x4c, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x9c, 0xd0, 0x2e, 0x08, 0x9d, 0x30, - 0x2e, 0x08, 0x9b, 0x30, 0x9e, 0x00, 0x04, 0xb8, - 0xb5, 0xf3, 0x1c, 0x02, 0x99, 0x01, 0x06, 0x0f, - 0x0e, 0x3f, 0xb0, 0x86, 0x00, 0xb8, 0x4b, 0x65, - 0x68, 0x1b, 0x18, 0xc0, 0x90, 0x01, 0x2f, 0x20, - 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x06, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0xb8, - 0x4b, 0x5f, 0x58, 0x18, 0x1c, 0x05, 0xd1, 0x02, - 0x20, 0xb0, 0xb0, 0x06, 0xe7, 0xf3, 0x78, 0x90, - 0x90, 0x03, 0x78, 0xd1, 0x00, 0x88, 0x4b, 0x5b, - 0x58, 0x18, 0x42, 0x90, 0xd0, 0x02, 0x20, 0xb1, - 0xb0, 0x06, 0xe7, 0xe8, 0x98, 0x03, 0x23, 0x80, - 0x40, 0x18, 0xd1, 0x49, 0x01, 0x08, 0x4b, 0x56, - 0x18, 0xc3, 0x93, 0x00, 0x20, 0x00, 0x9b, 0x00, - 0x60, 0x18, 0x23, 0x00, 0x00, 0x88, 0x4e, 0x51, - 0x50, 0x33, 0x23, 0xff, 0x48, 0x51, 0x54, 0x43, - 0x20, 0x01, 0x40, 0x88, 0x43, 0xc0, 0x4b, 0x50, - 0x68, 0x1b, 0x40, 0x18, 0x4b, 0x4e, 0x60, 0x18, - 0x98, 0x03, 0x23, 0x08, 0x40, 0x18, 0xd0, 0x27, - 0x20, 0x01, 0x40, 0x88, 0x90, 0x04, 0x7a, 0x10, - 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x0b, 0x98, 0x04, - 0x23, 0x19, 0x06, 0x9b, 0x69, 0x1b, 0x40, 0x18, - 0xd0, 0x04, 0x98, 0x04, 0x23, 0x19, 0x06, 0x9b, - 0x61, 0x18, 0xe7, 0xf4, 0xe0, 0x0e, 0x7a, 0x10, - 0x23, 0x02, 0x40, 0x18, 0xd0, 0x0a, 0x98, 0x04, - 0x23, 0x19, 0x06, 0x9b, 0x69, 0x5b, 0x40, 0x18, - 0xd0, 0x04, 0x98, 0x04, 0x23, 0x19, 0x06, 0x9b, - 0x61, 0x58, 0xe7, 0xf4, 0x48, 0x3b, 0x5d, 0xc0, - 0x38, 0x01, 0x4b, 0x3a, 0x55, 0xd8, 0xe0, 0x06, - 0x4e, 0x39, 0x20, 0x01, 0x40, 0x88, 0x43, 0xc0, - 0x68, 0x33, 0x40, 0x18, 0x60, 0x30, 0xe0, 0x36, - 0x98, 0x03, 0x23, 0x80, 0x40, 0x18, 0xd0, 0x2f, - 0x00, 0xf8, 0x1b, 0xc0, 0x00, 0x80, 0x4b, 0x33, - 0x68, 0x1b, 0x18, 0xc3, 0x93, 0x02, 0x9b, 0x02, - 0x7e, 0x18, 0x42, 0x88, 0xd1, 0x03, 0x20, 0xff, - 0x9b, 0x02, 0x76, 0x18, 0xe0, 0x0a, 0x9b, 0x02, - 0x7e, 0x58, 0x42, 0x88, 0xd1, 0x03, 0x20, 0xff, - 0x9b, 0x02, 0x76, 0x58, 0xe0, 0x02, 0x20, 0xb1, - 0xb0, 0x06, 0xe7, 0x7c, 0x23, 0x00, 0x00, 0x88, - 0x4e, 0x27, 0x50, 0x33, 0x20, 0xff, 0x4b, 0x27, - 0x54, 0x58, 0x20, 0x01, 0x40, 0x88, 0x43, 0xc0, - 0x4b, 0x25, 0x88, 0x1b, 0x40, 0x18, 0x4b, 0x24, - 0x80, 0x18, 0x4e, 0x24, 0x96, 0x05, 0x23, 0x00, - 0x00, 0x88, 0x9e, 0x05, 0x50, 0x33, 0xe0, 0x02, - 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0x63, 0x78, 0xa8, - 0x38, 0x01, 0x70, 0xa8, 0x78, 0x50, 0x23, 0x80, - 0x43, 0x18, 0x70, 0x50, 0x78, 0xa8, 0x28, 0x00, - 0xd1, 0x07, 0x98, 0x01, 0x68, 0x00, 0x4b, 0x1a, - 0x40, 0x18, 0x9b, 0x01, 0x60, 0x18, 0x20, 0x01, - 0x70, 0xe8, 0x24, 0x1f, 0x2c, 0x00, 0xd1, 0x02, - 0xe0, 0x0a, 0x3c, 0x01, 0xe7, 0xfa, 0x48, 0x0d, - 0x5d, 0x00, 0x28, 0x00, 0xd1, 0x03, 0x20, 0x19, - 0x06, 0x80, 0x64, 0xc4, 0xe0, 0x00, 0xe7, 0xf4, - 0x20, 0x00, 0xb0, 0x06, 0xe7, 0x3f, 0xb0, 0x06, - 0xe7, 0x3d, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0x38, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9c, 0x50, - 0x64, 0x00, 0x08, 0x08, 0x2e, 0x08, 0x9d, 0x10, - 0x2e, 0x08, 0x9c, 0x48, 0x2e, 0x08, 0xb9, 0x60, - 0x64, 0x00, 0x00, 0x18, 0x2e, 0x08, 0x9b, 0x30, - 0x2e, 0x08, 0x9c, 0xd0, 0x2e, 0x08, 0x9d, 0x30, - 0x2e, 0x08, 0x9c, 0x4c, 0x9e, 0x00, 0x04, 0xb8, - 0xff, 0xff, 0xdf, 0xff, 0x1c, 0x03, 0x1c, 0x0a, - 0x78, 0x58, 0x70, 0x10, 0x20, 0x00, 0x47, 0x70, - 0xe7, 0xfd, 0xb5, 0xf7, 0x1c, 0x07, 0xb0, 0x81, - 0x9a, 0x03, 0x06, 0x10, 0x0e, 0x00, 0x90, 0x00, - 0xb0, 0x87, 0x78, 0x78, 0x23, 0x80, 0x40, 0x18, - 0xd0, 0x4c, 0x78, 0x78, 0x23, 0x80, 0x40, 0x18, - 0xd0, 0x48, 0x78, 0xb8, 0x90, 0x06, 0x99, 0x09, - 0x78, 0x88, 0x90, 0x05, 0x98, 0x06, 0x23, 0x20, - 0x40, 0x18, 0xd0, 0x3f, 0x98, 0x05, 0x23, 0x20, - 0x40, 0x18, 0xd0, 0x3b, 0x6b, 0x38, 0x90, 0x01, - 0x99, 0x09, 0x6b, 0x08, 0x90, 0x00, 0x98, 0x01, - 0x28, 0x00, 0xd1, 0x02, 0x98, 0x00, 0x28, 0x00, - 0xd0, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd1, 0x05, 0x20, 0xb6, 0xb0, 0x08, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x98, 0x01, 0x68, 0x05, 0x98, 0x00, 0x68, 0x04, - 0x7a, 0x2e, 0x7a, 0x21, 0x91, 0x04, 0x7d, 0x6a, - 0x92, 0x03, 0x7d, 0x62, 0x92, 0x02, 0x98, 0x07, - 0x28, 0x00, 0xd0, 0x0a, 0x9a, 0x02, 0x99, 0x04, - 0x1c, 0x28, 0xf0, 0x00, 0xfc, 0xe5, 0x9a, 0x03, - 0x1c, 0x31, 0x1c, 0x20, 0xf0, 0x00, 0xfc, 0xe0, - 0xe0, 0x09, 0x99, 0x04, 0x1c, 0x28, 0x22, 0x00, - 0xf0, 0x00, 0xfc, 0xda, 0x1c, 0x31, 0x1c, 0x20, - 0x22, 0x00, 0xf0, 0x00, 0xfc, 0xd5, 0x20, 0x00, - 0xb0, 0x08, 0xe7, 0xd5, 0x20, 0xb1, 0xb0, 0x08, - 0xe7, 0xd2, 0xb0, 0x07, 0xb0, 0x01, 0xe7, 0xcf, - 0xb4, 0xf0, 0x1c, 0x02, 0x1c, 0x0b, 0x06, 0x1d, - 0x0e, 0x2d, 0xb0, 0x82, 0x2d, 0x00, 0xd1, 0x0a, - 0x48, 0x1a, 0x69, 0x00, 0x90, 0x01, 0x49, 0x1a, - 0x48, 0x18, 0x69, 0x40, 0x90, 0x00, 0x48, 0x17, - 0x6a, 0x00, 0x1e, 0x44, 0xe0, 0x10, 0x2d, 0x20, - 0xd1, 0x0a, 0x48, 0x14, 0x69, 0x80, 0x90, 0x01, - 0x49, 0x14, 0x48, 0x12, 0x69, 0xc0, 0x90, 0x00, - 0x48, 0x10, 0x6a, 0x40, 0x1e, 0x44, 0xe0, 0x03, - 0x20, 0xb3, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, - 0x20, 0x00, 0x70, 0x10, 0x78, 0x50, 0x00, 0x80, - 0x4e, 0x0d, 0x58, 0x37, 0x69, 0x38, 0x61, 0x78, - 0x98, 0x01, 0x9e, 0x00, 0x42, 0xb0, 0xd0, 0x07, - 0x98, 0x01, 0x30, 0x01, 0x90, 0x01, 0x98, 0x01, - 0x40, 0x20, 0x90, 0x01, 0x98, 0x01, 0x60, 0x08, - 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xe6, 0xb0, 0x02, - 0xe7, 0xe4, 0x00, 0x00, 0x9e, 0x00, 0x04, 0x80, - 0x9e, 0x00, 0x04, 0x90, 0x9e, 0x00, 0x04, 0x98, - 0x2e, 0x08, 0x9b, 0xc8, 0xb5, 0xf3, 0x1c, 0x07, - 0xb0, 0x81, 0x99, 0x02, 0x06, 0x08, 0x0e, 0x00, - 0x90, 0x00, 0xb0, 0x88, 0x98, 0x08, 0x28, 0x00, - 0xd1, 0x0e, 0x49, 0x69, 0x91, 0x02, 0x48, 0x69, - 0x69, 0x00, 0x90, 0x07, 0x48, 0x68, 0x90, 0x06, - 0x48, 0x66, 0x69, 0x40, 0x90, 0x05, 0x48, 0x65, - 0x6a, 0x00, 0x1e, 0x41, 0x91, 0x04, 0xe0, 0x17, - 0x98, 0x08, 0x28, 0x20, 0xd1, 0x0e, 0x49, 0x63, - 0x91, 0x02, 0x48, 0x60, 0x69, 0x80, 0x90, 0x07, - 0x48, 0x61, 0x90, 0x06, 0x48, 0x5d, 0x69, 0xc0, - 0x90, 0x05, 0x48, 0x5c, 0x6a, 0x40, 0x1e, 0x41, - 0x91, 0x04, 0xe0, 0x05, 0x20, 0xb3, 0xb0, 0x09, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x25, 0x00, 0x98, 0x07, 0x99, 0x05, 0x42, 0x88, - 0xd0, 0x73, 0x2d, 0x00, 0xd1, 0x72, 0x98, 0x07, - 0x00, 0x80, 0x99, 0x02, 0x18, 0x40, 0x23, 0x01, - 0x02, 0x9b, 0x18, 0xc0, 0x68, 0x01, 0x91, 0x03, - 0x98, 0x07, 0x00, 0x80, 0x99, 0x02, 0x58, 0x08, - 0x90, 0x01, 0x99, 0x02, 0x98, 0x07, 0x18, 0x08, - 0x23, 0x01, 0x02, 0xdb, 0x18, 0xc0, 0x78, 0x00, - 0x90, 0x00, 0x20, 0x00, 0x99, 0x02, 0x9a, 0x07, - 0x18, 0x89, 0x23, 0x01, 0x02, 0xdb, 0x18, 0xc9, - 0x70, 0x08, 0x98, 0x07, 0x30, 0x01, 0x90, 0x07, - 0x98, 0x07, 0x99, 0x04, 0x40, 0x08, 0x90, 0x07, - 0x99, 0x03, 0x29, 0x00, 0xd0, 0x71, 0xb0, 0x83, - 0x20, 0x00, 0x90, 0x00, 0x99, 0x06, 0x91, 0x02, - 0x20, 0x01, 0x90, 0x01, 0x98, 0x03, 0x28, 0x80, - 0xd1, 0x1f, 0x24, 0x00, 0x2c, 0x10, 0xd3, 0x02, - 0xe0, 0x1a, 0x34, 0x01, 0xe7, 0xfa, 0x98, 0x01, - 0x99, 0x02, 0x40, 0x08, 0xd0, 0x10, 0x48, 0x39, - 0x5d, 0x00, 0x28, 0xff, 0xd0, 0x0c, 0x48, 0x37, - 0x5d, 0x00, 0x90, 0x00, 0x00, 0xa0, 0x49, 0x36, - 0x58, 0x09, 0x00, 0xa8, 0x19, 0xc0, 0x61, 0x01, - 0x1c, 0x68, 0x06, 0x05, 0x0e, 0x2d, 0xe0, 0x03, - 0x98, 0x01, 0x00, 0x40, 0x90, 0x01, 0xe7, 0xe4, - 0xe0, 0x1d, 0x24, 0x00, 0x2c, 0x20, 0xd3, 0x02, - 0xe0, 0x19, 0x34, 0x01, 0xe7, 0xfa, 0x98, 0x01, - 0x99, 0x02, 0x40, 0x08, 0xd0, 0x0f, 0x48, 0x2b, - 0x5d, 0x00, 0x28, 0xff, 0xd0, 0x0b, 0x48, 0x29, - 0x5d, 0x00, 0x90, 0x00, 0x00, 0xa0, 0x49, 0x28, - 0x58, 0x09, 0x00, 0xa8, 0x19, 0xc0, 0x61, 0x01, - 0x1c, 0x68, 0x06, 0x05, 0x0e, 0x2d, 0x98, 0x01, - 0x00, 0x40, 0x90, 0x01, 0xe7, 0xe5, 0x2d, 0x00, - 0xe0, 0x01, 0xe0, 0x27, 0xe0, 0x26, 0xd0, 0x23, - 0xb0, 0x81, 0x98, 0x01, 0x70, 0x78, 0x98, 0x05, - 0x60, 0x78, 0x98, 0x01, 0x00, 0x80, 0x49, 0x1d, - 0x58, 0x08, 0x90, 0x00, 0x98, 0x00, 0x69, 0x46, - 0x98, 0x05, 0x42, 0xb0, 0xd3, 0x04, 0x1d, 0xf0, - 0x30, 0xb9, 0x99, 0x05, 0x42, 0x88, 0xd2, 0x08, - 0x68, 0x30, 0x28, 0x00, 0xd0, 0x01, 0x68, 0x36, - 0xe0, 0x02, 0x20, 0xba, 0xb0, 0x0d, 0xe7, 0x63, - 0xe7, 0xee, 0x60, 0xbe, 0x98, 0x00, 0x61, 0x46, - 0x1c, 0x38, 0xf0, 0x00, 0xfb, 0x02, 0xb0, 0x01, - 0xb0, 0x03, 0xe7, 0x5e, 0x70, 0x3d, 0x98, 0x07, - 0x99, 0x06, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x09, - 0xe7, 0x52, 0xb0, 0x08, 0xb0, 0x01, 0xe7, 0x4f, - 0x2e, 0x08, 0x9d, 0xfc, 0x9e, 0x00, 0x04, 0x80, - 0x9e, 0x00, 0x04, 0x90, 0x2e, 0x08, 0xa6, 0xfc, - 0x9e, 0x00, 0x04, 0x98, 0x2e, 0x08, 0x9d, 0x30, - 0x2e, 0x08, 0x9c, 0xd0, 0x2e, 0x08, 0x9d, 0x10, - 0x2e, 0x08, 0x9c, 0x50, 0x2e, 0x08, 0x9b, 0xc8, - 0xb4, 0x90, 0x1c, 0x01, 0x78, 0x48, 0x00, 0x80, - 0x4c, 0x0d, 0x58, 0x23, 0x69, 0x1a, 0x68, 0x8f, - 0x42, 0xba, 0xd0, 0x12, 0x68, 0x10, 0x42, 0xb8, - 0xd0, 0x08, 0x68, 0x10, 0x28, 0x00, 0xd0, 0x01, - 0x68, 0x12, 0xe0, 0x02, 0x20, 0xba, 0xbc, 0x90, - 0x47, 0x70, 0xe7, 0xf3, 0x20, 0x00, 0x60, 0x10, - 0x69, 0x9c, 0x69, 0x18, 0x60, 0x20, 0x61, 0x1f, - 0x61, 0x9a, 0x20, 0x00, 0xe7, 0xf3, 0xe7, 0xf2, - 0x2e, 0x08, 0x9b, 0xc8, 0xb4, 0xb0, 0x1c, 0x02, - 0x1c, 0x0f, 0x78, 0x90, 0x23, 0x04, 0x40, 0x18, - 0xd0, 0x1c, 0x78, 0x90, 0x23, 0x20, 0x40, 0x18, - 0xd0, 0x18, 0x6b, 0x14, 0x68, 0x20, 0x28, 0x00, - 0xd0, 0x02, 0x1d, 0xe5, 0x35, 0x05, 0xe0, 0x01, - 0x1d, 0xe5, 0x35, 0x31, 0x21, 0x00, 0x29, 0x08, - 0xdb, 0x04, 0xe0, 0x08, 0x1c, 0x48, 0x06, 0x01, - 0x0e, 0x09, 0xe7, 0xf8, 0x00, 0x88, 0x58, 0x2b, - 0x00, 0x88, 0x50, 0x3b, 0xe7, 0xf6, 0x20, 0x00, - 0xbc, 0xb0, 0x47, 0x70, 0x20, 0xb1, 0xe7, 0xfb, - 0xe7, 0xfa, 0xb5, 0xf3, 0x1c, 0x0a, 0xb0, 0x93, - 0x20, 0x00, 0x90, 0x06, 0x98, 0x13, 0x69, 0x00, - 0x90, 0x00, 0x98, 0x00, 0x6b, 0x00, 0x90, 0x12, - 0x98, 0x00, 0x78, 0x80, 0x90, 0x05, 0x98, 0x12, - 0x68, 0x00, 0x90, 0x01, 0x28, 0x00, 0xd0, 0x03, - 0x98, 0x12, 0x30, 0x0c, 0x90, 0x09, 0xe0, 0x0e, - 0x98, 0x12, 0x6a, 0xc0, 0x90, 0x01, 0x28, 0x00, - 0xd0, 0x03, 0x98, 0x12, 0x30, 0x38, 0x90, 0x09, - 0xe0, 0x05, 0x20, 0xb1, 0xb0, 0x13, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, - 0x90, 0x06, 0x98, 0x05, 0x23, 0x04, 0x40, 0x18, - 0xd0, 0x73, 0x21, 0x00, 0x29, 0x08, 0xdb, 0x04, - 0xe0, 0x0c, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, - 0xe7, 0xf8, 0x98, 0x13, 0x30, 0x80, 0x69, 0x00, - 0x00, 0x8b, 0x58, 0xc0, 0x00, 0x8e, 0xab, 0x0a, - 0x51, 0x98, 0xe7, 0xf2, 0x9d, 0x01, 0x21, 0x00, - 0x29, 0x08, 0xdb, 0x04, 0xe0, 0xa7, 0x1c, 0x48, - 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x00, 0x88, - 0xab, 0x0a, 0x58, 0x18, 0x28, 0x00, 0xd0, 0x55, - 0x20, 0x00, 0x90, 0x08, 0x48, 0x73, 0x90, 0x07, - 0x20, 0x00, 0x90, 0x02, 0x98, 0x02, 0x28, 0x20, - 0xdb, 0x06, 0xe0, 0x8d, 0x98, 0x02, 0x30, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x90, 0x02, 0xe7, 0xf5, - 0x00, 0x8b, 0xa8, 0x0a, 0x58, 0xc0, 0x9b, 0x07, - 0x40, 0x18, 0x90, 0x08, 0x28, 0x00, 0xd0, 0x73, - 0x00, 0x88, 0x9b, 0x09, 0x58, 0x18, 0x9b, 0x08, - 0x40, 0x18, 0xd0, 0x6e, 0x1d, 0xec, 0x34, 0x01, - 0x27, 0x00, 0x79, 0xa0, 0x9b, 0x06, 0x42, 0x98, - 0xd0, 0x08, 0x68, 0x68, 0x1c, 0x05, 0xd1, 0x02, - 0x20, 0xba, 0xb0, 0x13, 0xe7, 0xab, 0x1d, 0xec, - 0x34, 0x01, 0xe7, 0xf2, 0x78, 0x60, 0x07, 0x00, - 0x0f, 0x00, 0x02, 0x00, 0x04, 0x07, 0x0c, 0x3f, - 0x78, 0xa0, 0x19, 0xc0, 0x30, 0x03, 0x04, 0x07, - 0x0c, 0x3f, 0x2a, 0x00, 0xd0, 0x42, 0x98, 0x13, - 0x88, 0x40, 0x42, 0xb8, 0xdb, 0x3a, 0x98, 0x13, - 0x88, 0x40, 0x1b, 0xc0, 0x9b, 0x13, 0x80, 0x58, - 0x20, 0xbc, 0x90, 0x04, 0x2f, 0x00, 0xdd, 0x30, - 0x2f, 0xbc, 0xdd, 0x1b, 0x20, 0x00, 0x90, 0x03, - 0x98, 0x03, 0x28, 0xbc, 0xdb, 0x09, 0xe0, 0x0d, - 0x98, 0x03, 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, - 0xe0, 0x01, 0xe0, 0x4c, 0xe0, 0x41, 0x90, 0x03, - 0xe7, 0xf2, 0x78, 0x23, 0x34, 0x01, 0x70, 0x13, - 0x32, 0x01, 0xe7, 0xf1, 0x1f, 0xf8, 0x38, 0xb5, - 0x04, 0x07, 0x0c, 0x3f, 0x68, 0x2d, 0x1d, 0xec, - 0x34, 0x01, 0xe0, 0x11, 0x20, 0x00, 0x90, 0x03, - 0x98, 0x03, 0x42, 0xb8, 0xdb, 0x06, 0xe0, 0x0a, - 0x98, 0x03, 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, - 0x90, 0x03, 0xe7, 0xf5, 0x78, 0x23, 0x34, 0x01, - 0x70, 0x13, 0x32, 0x01, 0xe7, 0xf4, 0x27, 0x00, - 0xe7, 0xcc, 0xe0, 0x02, 0x20, 0xb7, 0xb0, 0x13, - 0xe7, 0x59, 0xe0, 0x04, 0x98, 0x13, 0x88, 0x40, - 0x19, 0xc0, 0x9b, 0x13, 0x80, 0x58, 0x00, 0x88, - 0xab, 0x0a, 0x58, 0x18, 0x9b, 0x07, 0x43, 0x98, - 0x00, 0x8e, 0xab, 0x0a, 0x51, 0x98, 0xe0, 0x01, - 0xe0, 0x01, 0xe0, 0x00, 0x9d, 0x01, 0x98, 0x06, - 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x06, - 0x98, 0x07, 0x08, 0x40, 0x90, 0x07, 0xe7, 0x71, - 0xe0, 0x04, 0x98, 0x06, 0x30, 0x20, 0x06, 0x00, - 0x0e, 0x00, 0x90, 0x06, 0xe7, 0x57, 0x20, 0x00, - 0xb0, 0x13, 0xe7, 0x34, 0xe0, 0x44, 0x98, 0x05, - 0x23, 0x02, 0x40, 0x18, 0xd0, 0x3b, 0x98, 0x01, - 0x1d, 0xc4, 0x34, 0x01, 0x78, 0x60, 0x07, 0x00, - 0x0f, 0x00, 0x02, 0x00, 0x04, 0x07, 0x0c, 0x3f, - 0x78, 0xa0, 0x19, 0xc0, 0x30, 0x03, 0x04, 0x07, - 0x0c, 0x3f, 0x2f, 0x00, 0xdd, 0x28, 0x2f, 0xbc, - 0xdd, 0x17, 0x21, 0x00, 0x29, 0xbc, 0xdb, 0x04, - 0xe0, 0x08, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, - 0xe7, 0xf8, 0x78, 0x23, 0x34, 0x01, 0x70, 0x13, - 0x32, 0x01, 0xe7, 0xf6, 0x1f, 0xf8, 0x38, 0xb5, - 0x04, 0x07, 0x0c, 0x3f, 0x98, 0x01, 0x68, 0x00, - 0x90, 0x01, 0x98, 0x01, 0x1d, 0xc4, 0x34, 0x01, - 0xe0, 0x0d, 0x21, 0x00, 0x42, 0xb9, 0xdb, 0x04, - 0xe0, 0x08, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, - 0xe7, 0xf8, 0x78, 0x23, 0x34, 0x01, 0x70, 0x13, - 0x32, 0x01, 0xe7, 0xf6, 0x27, 0x00, 0xe7, 0xd4, - 0x20, 0x00, 0xb0, 0x13, 0xe6, 0xf3, 0x20, 0xb1, - 0xb0, 0x13, 0xe6, 0xf0, 0xb0, 0x13, 0xe6, 0xee, - 0xe6, 0xed, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0xb5, 0xf3, 0xb0, 0x84, 0x98, 0x04, 0x78, 0x40, - 0x00, 0x80, 0x49, 0x4b, 0x58, 0x08, 0x90, 0x03, - 0x28, 0x00, 0xd1, 0x05, 0x20, 0xb0, 0xb0, 0x04, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x98, 0x04, 0x68, 0x86, 0x98, 0x04, 0x88, 0x47, - 0x98, 0x04, 0x68, 0x44, 0x1d, 0xf0, 0x30, 0xb9, - 0x99, 0x04, 0x68, 0x49, 0x1a, 0x45, 0x42, 0xbd, - 0xdb, 0x0c, 0x2f, 0x00, 0xdb, 0x01, 0x2f, 0xbc, - 0xdd, 0x02, 0x20, 0xba, 0xb0, 0x04, 0xe7, 0xe7, - 0x1c, 0x3a, 0x99, 0x05, 0x1c, 0x20, 0xf0, 0x00, - 0xf9, 0x29, 0xe0, 0x6b, 0x20, 0x00, 0x90, 0x00, - 0x98, 0x04, 0x78, 0x40, 0x00, 0xc3, 0x1a, 0x18, - 0x00, 0x80, 0x49, 0x36, 0x68, 0x09, 0x18, 0x40, - 0x90, 0x01, 0x98, 0x01, 0x78, 0x80, 0x90, 0x02, - 0x98, 0x02, 0x06, 0xc0, 0x0e, 0xc0, 0x90, 0x02, - 0x98, 0x02, 0x28, 0x12, 0xd1, 0x03, 0x2d, 0x0e, - 0xda, 0x01, 0x20, 0x01, 0x90, 0x00, 0x2f, 0x00, - 0xdd, 0x50, 0xb0, 0x81, 0x42, 0xaf, 0xdd, 0x0d, - 0x2d, 0x00, 0xdb, 0x01, 0x2d, 0xbc, 0xdd, 0x02, - 0x20, 0xba, 0xb0, 0x05, 0xe7, 0xbc, 0x1c, 0x2a, - 0x99, 0x06, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0xfe, - 0x68, 0x36, 0xe0, 0x0b, 0x2f, 0x00, 0xdb, 0x01, - 0x2f, 0xbc, 0xdd, 0x02, 0x20, 0xba, 0xb0, 0x05, - 0xe7, 0xae, 0x1c, 0x3a, 0x99, 0x06, 0x1c, 0x20, - 0xf0, 0x00, 0xf8, 0xf0, 0x99, 0x06, 0x19, 0x49, - 0x91, 0x06, 0x1b, 0x7f, 0x1d, 0x31, 0x91, 0x00, - 0x99, 0x00, 0x78, 0x88, 0x19, 0x84, 0x98, 0x01, - 0x28, 0x00, 0xd0, 0x20, 0x99, 0x00, 0x78, 0xc8, - 0x23, 0x80, 0x40, 0x18, 0xd1, 0x1b, 0x1d, 0xf0, - 0x30, 0xb9, 0x1b, 0x05, 0x42, 0xbd, 0xdb, 0x01, - 0x3c, 0x01, 0xe0, 0x14, 0x1c, 0x68, 0x42, 0xb8, - 0xd1, 0x11, 0x99, 0x00, 0x78, 0x88, 0x28, 0x09, - 0xdd, 0x08, 0x99, 0x00, 0x79, 0x08, 0x30, 0x09, - 0x99, 0x00, 0x78, 0x89, 0x42, 0x88, 0xd0, 0x00, - 0x3c, 0x01, 0xe0, 0x04, 0x99, 0x00, 0x78, 0x88, - 0x28, 0x09, 0xd1, 0x00, 0x3c, 0x01, 0x20, 0x00, - 0x90, 0x01, 0x1d, 0xf0, 0x30, 0xb9, 0x1b, 0x05, - 0xb0, 0x01, 0xe7, 0xac, 0x20, 0x00, 0xb0, 0x04, - 0xe7, 0x72, 0xb0, 0x04, 0xe7, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9b, 0x30, - 0xb5, 0xf1, 0x98, 0x00, 0x06, 0x04, 0x0e, 0x24, - 0xb0, 0x83, 0x00, 0xa0, 0x4b, 0x4c, 0x58, 0x1d, - 0x78, 0x28, 0x90, 0x02, 0x2c, 0x20, 0xdb, 0x05, - 0x20, 0xa2, 0xb0, 0x03, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0xa0, 0x4b, 0x46, - 0x58, 0x18, 0x1c, 0x05, 0xd1, 0x02, 0x20, 0xb0, - 0xb0, 0x03, 0xe7, 0xf3, 0x00, 0xe0, 0x1b, 0x00, - 0x00, 0x80, 0x4b, 0x42, 0x68, 0x1b, 0x18, 0xc7, - 0x78, 0xa8, 0x28, 0x00, 0xd0, 0x63, 0x20, 0x00, - 0x42, 0x80, 0xd0, 0x20, 0x21, 0x00, 0x29, 0x20, - 0xdb, 0x04, 0xe0, 0x1b, 0x1c, 0x48, 0x06, 0x01, - 0x0e, 0x09, 0xe7, 0xf8, 0x00, 0x88, 0x4b, 0x3a, - 0x58, 0x18, 0x90, 0x01, 0x98, 0x01, 0x79, 0xc0, - 0x42, 0xa0, 0xd1, 0x0e, 0x20, 0x01, 0x40, 0x88, - 0x43, 0xc0, 0x4b, 0x36, 0x68, 0x1b, 0x40, 0x18, - 0x4b, 0x34, 0x60, 0x18, 0x23, 0x00, 0x00, 0x88, - 0x4e, 0x31, 0x50, 0x33, 0x23, 0xff, 0x48, 0x32, - 0x54, 0x43, 0xe7, 0xe3, 0xe0, 0x3f, 0x7e, 0x38, - 0x1c, 0x02, 0x28, 0xff, 0xd0, 0x10, 0x20, 0xff, - 0x4b, 0x2e, 0x54, 0x98, 0x23, 0x00, 0x00, 0x90, - 0x4e, 0x2d, 0x50, 0x33, 0x20, 0x01, 0x40, 0x90, - 0x43, 0xc0, 0x4b, 0x2c, 0x88, 0x1b, 0x40, 0x18, - 0x4b, 0x2a, 0x80, 0x18, 0x20, 0xff, 0x76, 0x38, - 0x7e, 0x78, 0x1c, 0x02, 0x28, 0xff, 0xd0, 0x11, - 0x20, 0xff, 0x4b, 0x24, 0x54, 0x98, 0x23, 0x00, - 0x00, 0x90, 0x4e, 0x23, 0x50, 0x33, 0x20, 0x01, - 0x40, 0x90, 0x43, 0xc0, 0x4b, 0x21, 0x88, 0x1b, - 0x40, 0x18, 0x4b, 0x20, 0x80, 0x18, 0x20, 0xff, - 0x76, 0x78, 0xe0, 0x02, 0x20, 0xb1, 0xb0, 0x03, - 0xe7, 0x98, 0x23, 0x00, 0x00, 0x90, 0x4e, 0x1a, - 0x50, 0x33, 0x20, 0x01, 0x40, 0x90, 0x43, 0xc0, - 0x4b, 0x18, 0x88, 0x1b, 0x40, 0x18, 0x4b, 0x17, - 0x80, 0x18, 0x4e, 0x17, 0x96, 0x00, 0x20, 0x00, - 0x00, 0x93, 0x9e, 0x00, 0x50, 0xf0, 0x98, 0x02, - 0x23, 0x20, 0x40, 0x18, 0xd0, 0xff, 0x21, 0x00, - 0x29, 0x0c, 0xdb, 0x04, 0xe0, 0x07, 0x1c, 0x48, - 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x20, 0x00, - 0x18, 0x7b, 0x73, 0x18, 0xe7, 0xf7, 0x20, 0x00, - 0x83, 0x38, 0x20, 0x00, 0x70, 0xf8, 0x20, 0x00, - 0xb0, 0x03, 0xe7, 0x6f, 0xb0, 0x03, 0xe7, 0x6d, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9b, 0x30, - 0x2e, 0x08, 0x9c, 0x50, 0x2e, 0x08, 0x9c, 0x48, - 0x2e, 0x08, 0x9d, 0x10, 0x2e, 0x08, 0x9d, 0x30, - 0x2e, 0x08, 0x9c, 0xd0, 0x2e, 0x08, 0x9c, 0x4c, - 0x9e, 0x00, 0x04, 0xb8, 0xb5, 0xf0, 0x1c, 0x05, - 0x1c, 0x0c, 0x1c, 0x17, 0x20, 0x1d, 0x02, 0x80, - 0x69, 0x86, 0x1c, 0x3a, 0x1c, 0x29, 0x1c, 0x20, - 0xf0, 0x08, 0xfb, 0x32, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0xb4, 0xf0, 0x1c, 0x01, 0xb0, 0x82, - 0x68, 0x48, 0x68, 0x8c, 0x1d, 0xe2, 0x32, 0xb7, - 0x42, 0x82, 0xd9, 0x09, 0x78, 0x42, 0x07, 0x12, - 0x0f, 0x12, 0x02, 0x12, 0x78, 0x83, 0x43, 0x1a, - 0x32, 0x03, 0x04, 0x17, 0x0c, 0x3f, 0xe0, 0x41, - 0xb0, 0x82, 0x68, 0x23, 0x93, 0x01, 0x9b, 0x01, - 0x33, 0x04, 0x93, 0x00, 0x9b, 0x00, 0x78, 0x9b, - 0x9e, 0x01, 0x19, 0x9a, 0x78, 0x4e, 0x00, 0xf3, - 0x1b, 0x9b, 0x00, 0x9b, 0x4e, 0x1b, 0x68, 0x36, - 0x19, 0x9b, 0x93, 0x02, 0x9b, 0x02, 0x78, 0x9d, - 0x06, 0xed, 0x0e, 0xed, 0x2d, 0x12, 0xd1, 0x0f, - 0x1d, 0xe3, 0x33, 0xb9, 0x68, 0x4e, 0x1b, 0x9b, - 0x06, 0x1b, 0x0e, 0x1b, 0x93, 0x03, 0x9b, 0x00, - 0x78, 0xde, 0x23, 0x80, 0x40, 0x33, 0xd1, 0x03, - 0x9b, 0x03, 0x2b, 0x0e, 0xda, 0x00, 0x3a, 0x01, - 0x1d, 0xe3, 0x33, 0xb8, 0x42, 0x83, 0xd9, 0x0b, - 0x78, 0x43, 0x07, 0x1b, 0x0f, 0x1b, 0x02, 0x1b, - 0x04, 0x1f, 0x0c, 0x3f, 0x78, 0x13, 0x18, 0xfb, - 0x33, 0x03, 0x04, 0x1f, 0x0c, 0x3f, 0xe0, 0x08, - 0x78, 0x13, 0x07, 0x1b, 0x0f, 0x1b, 0x02, 0x1b, - 0x78, 0x56, 0x43, 0x33, 0x33, 0x03, 0x04, 0x1f, - 0x0c, 0x3f, 0xb0, 0x02, 0x80, 0x4f, 0xb0, 0x02, - 0xbc, 0xf0, 0x47, 0x70, 0x2e, 0x08, 0x9b, 0x30, - 0xb5, 0xf3, 0xb0, 0x81, 0x99, 0x02, 0x06, 0x0b, - 0x0e, 0x1b, 0x93, 0x00, 0x9b, 0x00, 0x2b, 0x00, - 0xd1, 0x0a, 0x49, 0x24, 0x4b, 0x24, 0x69, 0x1b, - 0x1c, 0x18, 0x4b, 0x23, 0x69, 0x5b, 0x1c, 0x1c, - 0x4b, 0x21, 0x6a, 0x1b, 0x1e, 0x5a, 0xe0, 0x09, - 0x49, 0x20, 0x4b, 0x1f, 0x69, 0x9b, 0x1c, 0x18, - 0x4b, 0x1d, 0x69, 0xdb, 0x1c, 0x1c, 0x4b, 0x1c, - 0x6a, 0x5b, 0x1e, 0x5a, 0x9b, 0x01, 0x78, 0xdd, - 0x26, 0x01, 0x40, 0xae, 0x1c, 0x37, 0x42, 0xa0, - 0xd0, 0x26, 0x00, 0x83, 0x18, 0x5d, 0x23, 0x01, - 0x02, 0x9b, 0x18, 0xeb, 0x68, 0x1b, 0x40, 0x3b, - 0xd0, 0x1b, 0x00, 0x83, 0x18, 0x5d, 0x23, 0x01, - 0x02, 0x9b, 0x18, 0xeb, 0x68, 0x1b, 0x43, 0xbb, - 0x1c, 0x1d, 0x00, 0x83, 0x18, 0x5e, 0x23, 0x01, - 0x02, 0x9b, 0x18, 0xf3, 0x60, 0x1d, 0x00, 0x83, - 0x18, 0x5d, 0x23, 0x01, 0x02, 0x9b, 0x18, 0xeb, - 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x05, 0x25, 0x00, - 0x18, 0x0e, 0x23, 0x01, 0x02, 0xdb, 0x18, 0xf3, - 0x70, 0x1d, 0x30, 0x01, 0x40, 0x10, 0xe7, 0xd6, - 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x9d, 0xfc, - 0x9e, 0x00, 0x04, 0x80, 0x2e, 0x08, 0xa6, 0xfc, - 0xb4, 0x90, 0x1c, 0x03, 0x1c, 0x0c, 0x1c, 0x17, - 0x06, 0x21, 0x0e, 0x09, 0x06, 0x38, 0x0e, 0x00, - 0x72, 0x19, 0x28, 0x00, 0xd0, 0x00, 0x75, 0x58, - 0x68, 0x5b, 0x2b, 0x00, 0xd1, 0xf8, 0xbc, 0x90, - 0x47, 0x70, 0x00, 0x00, 0xb5, 0x80, 0x1c, 0x07, - 0x68, 0xf8, 0x28, 0x1f, 0xd9, 0x03, 0x20, 0xe1, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x1e, - 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x1d, 0x40, 0x18, - 0x49, 0x1b, 0x6d, 0x09, 0x60, 0x08, 0x05, 0x80, - 0x48, 0x19, 0x6d, 0x00, 0x68, 0x00, 0x49, 0x18, - 0x6e, 0xc9, 0x60, 0x08, 0x48, 0x16, 0x6d, 0x00, - 0x68, 0x00, 0x23, 0x01, 0x02, 0x5b, 0x43, 0x18, - 0x49, 0x13, 0x6d, 0x09, 0x60, 0x08, 0x05, 0x80, - 0x48, 0x11, 0x6d, 0x00, 0x68, 0x00, 0x49, 0x10, - 0x6e, 0xc9, 0x60, 0x08, 0x48, 0x0e, 0x6f, 0xc1, - 0xcf, 0x09, 0xc1, 0x09, 0xcf, 0x09, 0xc1, 0x09, - 0xcf, 0x08, 0xc1, 0x08, 0xf0, 0x00, 0xfc, 0x1e, - 0x20, 0x00, 0x49, 0x09, 0x60, 0x08, 0x20, 0x00, - 0x49, 0x07, 0x60, 0x48, 0x20, 0x00, 0x49, 0x06, - 0x60, 0x88, 0x49, 0x07, 0x20, 0x0b, 0xf0, 0x0d, - 0xfd, 0xef, 0x20, 0xff, 0x30, 0x01, 0x49, 0x02, - 0x61, 0xc8, 0x20, 0x00, 0xe7, 0xc0, 0xe7, 0xbf, - 0x2e, 0x08, 0x1f, 0x9c, 0xff, 0xff, 0xfd, 0xff, - 0x2e, 0x01, 0x5f, 0x15, 0x1c, 0x01, 0x48, 0x0e, - 0x6f, 0x00, 0x68, 0x00, 0x60, 0x08, 0x48, 0x0c, - 0x6e, 0x80, 0x68, 0x00, 0x60, 0x48, 0x48, 0x0a, - 0x6e, 0xc0, 0x68, 0x00, 0x60, 0x88, 0x48, 0x08, - 0x6f, 0x40, 0x68, 0x00, 0x60, 0xc8, 0x48, 0x06, - 0x68, 0x00, 0x61, 0x08, 0x48, 0x04, 0x68, 0x40, - 0x61, 0x48, 0x48, 0x03, 0x68, 0x80, 0x61, 0x88, - 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x00, 0x00, - 0x2e, 0x08, 0x1f, 0x9c, 0x48, 0x03, 0x6e, 0x80, - 0x68, 0x00, 0x07, 0x40, 0x0f, 0xc0, 0x47, 0x70, - 0xe7, 0xfd, 0x00, 0x00, 0x2e, 0x08, 0x1f, 0x9c, - 0xb4, 0x80, 0x1c, 0x07, 0x1c, 0x0a, 0x48, 0x37, - 0x69, 0xc0, 0x23, 0xff, 0x33, 0x01, 0x42, 0x98, - 0xd0, 0x02, 0x20, 0xe0, 0xbc, 0x80, 0x47, 0x70, - 0x48, 0x32, 0x62, 0x07, 0x20, 0x00, 0x49, 0x31, - 0x62, 0x48, 0x48, 0x31, 0x60, 0x02, 0x48, 0x30, - 0x68, 0x00, 0x78, 0x00, 0x49, 0x2d, 0x61, 0x88, - 0x48, 0x2d, 0x68, 0x00, 0x7a, 0x00, 0x49, 0x2b, - 0x61, 0x08, 0x48, 0x2b, 0x68, 0x00, 0x68, 0x40, - 0x49, 0x28, 0x60, 0xc8, 0x48, 0x27, 0x69, 0x80, - 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x01, 0x48, 0x27, - 0xe0, 0x01, 0x20, 0x01, 0x02, 0x40, 0x49, 0x23, - 0x61, 0xc8, 0x48, 0x22, 0x68, 0x40, 0x30, 0x01, - 0x49, 0x20, 0x60, 0x48, 0x48, 0x1f, 0x6d, 0x40, - 0x68, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x49, 0x1d, - 0x69, 0x89, 0x08, 0x49, 0x06, 0x09, 0x0e, 0x09, - 0x43, 0x08, 0x49, 0x1a, 0x6d, 0x49, 0x60, 0x08, - 0x06, 0x00, 0x48, 0x18, 0x6d, 0x00, 0x68, 0x00, - 0x4b, 0x19, 0x40, 0x18, 0x49, 0x15, 0x69, 0x89, - 0x07, 0xc9, 0x0c, 0x49, 0x43, 0x08, 0x49, 0x13, - 0x6d, 0x09, 0x60, 0x08, 0x04, 0x40, 0x48, 0x11, - 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x13, 0x40, 0x18, - 0x49, 0x0e, 0x6d, 0x09, 0x60, 0x08, 0x05, 0x40, - 0x48, 0x0c, 0x6d, 0x00, 0x68, 0x00, 0x23, 0x01, - 0x03, 0x1b, 0x43, 0x18, 0x49, 0x09, 0x6d, 0x09, - 0x60, 0x08, 0x04, 0xc0, 0x48, 0x07, 0x6d, 0x40, - 0x68, 0x00, 0x49, 0x06, 0x6f, 0x09, 0x60, 0x08, - 0x48, 0x04, 0x6d, 0x00, 0x68, 0x00, 0x49, 0x03, - 0x6e, 0xc9, 0x60, 0x08, 0x20, 0x00, 0xe7, 0x99, - 0xe7, 0x98, 0x00, 0x00, 0x2e, 0x08, 0x1f, 0x9c, - 0x2e, 0x08, 0x9d, 0xc0, 0x00, 0x00, 0x02, 0x01, - 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xfb, 0xff, - 0xb5, 0x00, 0x48, 0xf6, 0x6e, 0x80, 0x68, 0x00, - 0x23, 0x08, 0x40, 0x18, 0xd0, 0x74, 0x48, 0xf3, - 0x6d, 0x00, 0x68, 0x00, 0x4b, 0xf2, 0x40, 0x18, - 0x49, 0xf0, 0x6d, 0x09, 0x60, 0x08, 0x04, 0x80, - 0x48, 0xee, 0x6e, 0x40, 0x68, 0x00, 0x0a, 0x00, - 0x02, 0x00, 0x49, 0xec, 0x6e, 0x49, 0x60, 0x08, - 0x06, 0x00, 0x48, 0xea, 0x6e, 0xc0, 0x68, 0x00, - 0x23, 0x01, 0x02, 0xdb, 0x40, 0x18, 0xd0, 0x3e, - 0x20, 0xff, 0x30, 0x01, 0x49, 0xe5, 0x61, 0xc8, - 0x48, 0xe4, 0x6d, 0x00, 0x68, 0x00, 0x4b, 0xe5, - 0x40, 0x18, 0x49, 0xe2, 0x6d, 0x09, 0x60, 0x08, - 0x04, 0xc0, 0x48, 0xe0, 0x6f, 0xc0, 0x68, 0x80, - 0x68, 0x01, 0x02, 0x09, 0x0a, 0x09, 0x4a, 0xdd, - 0x6a, 0x52, 0x06, 0x12, 0x43, 0x11, 0x60, 0x01, - 0x48, 0xdd, 0x68, 0x00, 0x7a, 0x00, 0x49, 0xd9, - 0x69, 0x09, 0x1a, 0x41, 0x48, 0xd7, 0x6f, 0xc0, - 0x68, 0x80, 0x68, 0x02, 0x4b, 0xd9, 0x40, 0x1a, - 0x04, 0x09, 0x0c, 0x09, 0x02, 0x09, 0x43, 0x11, - 0x60, 0x01, 0x02, 0x08, 0x0c, 0x00, 0x48, 0xd1, - 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x23, 0x04, - 0x43, 0x19, 0x60, 0x01, 0x07, 0x48, 0x48, 0xcd, - 0x6f, 0xc0, 0x68, 0xc1, 0x20, 0x01, 0x40, 0x88, - 0xf0, 0x0d, 0xfc, 0xd0, 0x48, 0xc9, 0x68, 0x00, - 0x30, 0x01, 0x49, 0xc8, 0x60, 0x08, 0x48, 0xc7, - 0x69, 0xc0, 0x4b, 0xcb, 0x42, 0x98, 0xd0, 0x73, - 0xdc, 0x08, 0x23, 0xff, 0x33, 0x01, 0x42, 0x98, - 0xd0, 0x6f, 0x23, 0x01, 0x02, 0x5b, 0x42, 0x98, - 0xd0, 0x07, 0xe2, 0xba, 0x4b, 0xc5, 0x42, 0x98, - 0xd0, 0x68, 0x4b, 0xc5, 0x42, 0x98, 0xd0, 0x66, - 0xe2, 0xb3, 0x48, 0xbc, 0x6e, 0x80, 0x68, 0x00, - 0x23, 0x01, 0x02, 0x5b, 0x40, 0x18, 0xe0, 0x00, - 0xe2, 0xcd, 0xd0, 0x3f, 0x48, 0xb7, 0x68, 0x00, - 0x30, 0x01, 0x49, 0xb6, 0x60, 0x08, 0x48, 0xb5, - 0x6d, 0x00, 0x68, 0x00, 0x4b, 0xb5, 0x40, 0x18, - 0x49, 0xb2, 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, - 0x20, 0xff, 0x30, 0x01, 0x49, 0xaf, 0x61, 0xc8, - 0x48, 0xae, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, - 0x02, 0x09, 0x0a, 0x09, 0x4a, 0xab, 0x6a, 0x52, - 0x06, 0x12, 0x43, 0x11, 0x60, 0x01, 0x48, 0xac, - 0x68, 0x00, 0x7a, 0x00, 0x49, 0xa7, 0x69, 0x09, - 0x1a, 0x41, 0x48, 0xa6, 0x6f, 0xc0, 0x68, 0x80, - 0x68, 0x02, 0x4b, 0xa8, 0x40, 0x1a, 0x04, 0x09, - 0x0c, 0x09, 0x02, 0x09, 0x43, 0x11, 0x60, 0x01, - 0x02, 0x08, 0x0c, 0x00, 0x48, 0x9f, 0x6f, 0xc0, - 0x68, 0x80, 0x68, 0x01, 0x23, 0x02, 0x43, 0x19, - 0x60, 0x01, 0x07, 0x88, 0x48, 0x9b, 0x6f, 0xc0, - 0x68, 0xc1, 0x20, 0x01, 0x40, 0x88, 0xf0, 0x0d, - 0xfc, 0x6d, 0xe0, 0x5e, 0x48, 0x97, 0x69, 0x00, - 0x28, 0x00, 0xd0, 0x20, 0x48, 0x95, 0x69, 0x00, - 0x38, 0x01, 0x49, 0x94, 0x61, 0x08, 0x48, 0x93, - 0x68, 0xc0, 0x78, 0x00, 0x49, 0x91, 0x6c, 0x89, - 0x68, 0x09, 0x0a, 0x09, 0x02, 0x09, 0x43, 0x08, - 0x49, 0x8e, 0x6c, 0x89, 0x60, 0x08, 0x06, 0x00, - 0x0e, 0x00, 0x48, 0x8c, 0x68, 0xc0, 0xe0, 0x03, - 0xe1, 0x4b, 0xe2, 0x4d, 0xe0, 0x42, 0xe1, 0x93, - 0x30, 0x01, 0x49, 0x88, 0x60, 0xc8, 0x48, 0x8d, - 0x49, 0x86, 0x61, 0xc8, 0xe0, 0x39, 0x20, 0xff, - 0x30, 0x01, 0x49, 0x84, 0x61, 0xc8, 0x48, 0x83, - 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x02, 0x09, - 0x0a, 0x09, 0x4a, 0x80, 0x6a, 0x52, 0x06, 0x12, - 0x43, 0x11, 0x60, 0x01, 0x48, 0x80, 0x68, 0x00, - 0x7a, 0x00, 0x49, 0x7c, 0x69, 0x09, 0x1a, 0x41, - 0x48, 0x7a, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x02, - 0x4b, 0x7c, 0x40, 0x1a, 0x04, 0x09, 0x0c, 0x09, - 0x02, 0x09, 0x43, 0x11, 0x60, 0x01, 0x02, 0x08, - 0x0c, 0x00, 0x48, 0x74, 0x6f, 0xc0, 0x68, 0x80, - 0x68, 0x01, 0x23, 0x01, 0x43, 0x19, 0x60, 0x01, - 0x07, 0xc8, 0x48, 0x70, 0x6f, 0xc0, 0x68, 0xc1, - 0x20, 0x01, 0x40, 0x88, 0xf0, 0x0d, 0xfc, 0x16, - 0x48, 0x6c, 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x6d, - 0x40, 0x18, 0x49, 0x6a, 0x6d, 0x09, 0x60, 0x08, - 0x04, 0xc0, 0xe2, 0x08, 0x48, 0x67, 0x69, 0x00, - 0x28, 0x00, 0xd0, 0x5f, 0x48, 0x65, 0x6e, 0x80, - 0x68, 0x00, 0x23, 0xff, 0x33, 0x01, 0x40, 0x18, - 0xd0, 0x3f, 0x48, 0x62, 0x68, 0x00, 0x30, 0x01, - 0x49, 0x60, 0x60, 0x08, 0x48, 0x5f, 0x6d, 0x00, - 0x68, 0x00, 0x4b, 0x60, 0x40, 0x18, 0x49, 0x5d, - 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, 0x20, 0xff, - 0x30, 0x01, 0x49, 0x5a, 0x61, 0xc8, 0x48, 0x59, - 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x02, 0x09, - 0x0a, 0x09, 0x4a, 0x56, 0x6a, 0x52, 0x06, 0x12, - 0x43, 0x11, 0x60, 0x01, 0x48, 0x56, 0x68, 0x00, - 0x7a, 0x00, 0x49, 0x52, 0x69, 0x09, 0x1a, 0x41, - 0x48, 0x50, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x02, - 0x4b, 0x52, 0x40, 0x1a, 0x04, 0x09, 0x0c, 0x09, - 0x02, 0x09, 0x43, 0x11, 0x60, 0x01, 0x02, 0x08, - 0x0c, 0x00, 0x48, 0x4a, 0x6f, 0xc0, 0x68, 0x80, - 0x68, 0x01, 0x23, 0x02, 0x43, 0x19, 0x60, 0x01, - 0x07, 0x88, 0x48, 0x46, 0x6f, 0xc0, 0x68, 0xc1, - 0x20, 0x01, 0x40, 0x88, 0xf0, 0x0d, 0xfb, 0xc2, - 0xe0, 0x17, 0x48, 0x42, 0x68, 0xc0, 0x78, 0x00, - 0x49, 0x40, 0x6c, 0x89, 0x68, 0x09, 0x0a, 0x09, - 0x02, 0x09, 0x43, 0x08, 0x49, 0x3d, 0x6c, 0x89, - 0x60, 0x08, 0x06, 0x00, 0x0e, 0x00, 0x48, 0x3b, - 0x68, 0xc0, 0x30, 0x01, 0x49, 0x39, 0x60, 0xc8, - 0x48, 0x38, 0x69, 0x00, 0x38, 0x01, 0x49, 0x37, - 0x61, 0x08, 0xe0, 0xa1, 0x48, 0x35, 0x6a, 0x00, - 0x38, 0x01, 0x49, 0x34, 0x62, 0x08, 0x48, 0x33, - 0x6a, 0x00, 0x28, 0x00, 0xd0, 0x4b, 0x48, 0x31, - 0x6a, 0x40, 0x30, 0x01, 0x49, 0x2f, 0x62, 0x48, - 0x48, 0x31, 0x68, 0x00, 0x30, 0x0c, 0x49, 0x30, - 0x60, 0x08, 0x48, 0x2f, 0x68, 0x00, 0x78, 0x00, - 0x49, 0x2a, 0x61, 0x88, 0x48, 0x2c, 0x68, 0x00, - 0x7a, 0x00, 0x49, 0x28, 0x61, 0x08, 0x48, 0x2a, - 0x68, 0x00, 0x68, 0x40, 0x49, 0x25, 0x60, 0xc8, - 0x48, 0x24, 0x69, 0x80, 0x07, 0xc0, 0x0f, 0xc0, - 0xd0, 0x01, 0x48, 0x27, 0xe0, 0x01, 0x20, 0x01, - 0x02, 0x40, 0x49, 0x20, 0x61, 0xc8, 0x48, 0x1f, - 0x6d, 0x00, 0x68, 0x00, 0x23, 0x01, 0x03, 0x5b, - 0x43, 0x18, 0x49, 0x1c, 0x6d, 0x09, 0x60, 0x08, - 0x04, 0x80, 0x48, 0x1a, 0x6d, 0x40, 0x68, 0x00, - 0x0a, 0x00, 0x02, 0x00, 0x49, 0x17, 0x69, 0x89, - 0x08, 0x49, 0x06, 0x09, 0x0e, 0x09, 0x43, 0x08, - 0x49, 0x14, 0x6d, 0x49, 0x60, 0x08, 0x06, 0x00, - 0x48, 0x12, 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x19, - 0x40, 0x18, 0x49, 0x10, 0x69, 0x89, 0x07, 0xc9, - 0x0c, 0x49, 0x43, 0x08, 0x49, 0x0d, 0x6d, 0x09, - 0x60, 0x08, 0x04, 0x40, 0xe0, 0x4c, 0x20, 0xff, - 0x30, 0x01, 0x49, 0x0a, 0x61, 0xc8, 0x48, 0x09, - 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x02, 0x09, - 0x0a, 0x09, 0x4a, 0x06, 0x6a, 0x52, 0x06, 0x12, - 0x43, 0x11, 0x60, 0x01, 0x48, 0x06, 0x68, 0x00, - 0x7a, 0x00, 0x49, 0x02, 0x69, 0x09, 0x1a, 0x41, - 0x48, 0x00, 0xe0, 0x11, 0x2e, 0x08, 0x1f, 0x9c, - 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xef, 0xff, - 0x2e, 0x08, 0x9d, 0xc0, 0xff, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02, - 0x00, 0x00, 0x02, 0x03, 0xff, 0xff, 0xbf, 0xff, - 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x02, 0x4b, 0xa5, - 0x40, 0x1a, 0x04, 0x09, 0x0c, 0x09, 0x02, 0x09, - 0x43, 0x11, 0x60, 0x01, 0x02, 0x08, 0x0c, 0x00, - 0x48, 0xa1, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, - 0x23, 0x01, 0x43, 0x19, 0x60, 0x01, 0x07, 0xc8, - 0x48, 0x9d, 0x6f, 0xc0, 0x68, 0xc1, 0x20, 0x01, - 0x40, 0x88, 0xf0, 0x0d, 0xfb, 0x0f, 0x48, 0x9a, - 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x99, 0x40, 0x18, - 0x49, 0x97, 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, - 0xe1, 0x01, 0x48, 0x95, 0x6e, 0x80, 0x68, 0x00, - 0x23, 0x01, 0x02, 0x5b, 0x40, 0x18, 0xd0, 0x3f, - 0x48, 0x91, 0x68, 0x00, 0x30, 0x01, 0x49, 0x90, - 0x60, 0x08, 0x48, 0x8f, 0x6d, 0x00, 0x68, 0x00, - 0x4b, 0x8e, 0x40, 0x18, 0x49, 0x8c, 0x6d, 0x09, - 0x60, 0x08, 0x04, 0xc0, 0x20, 0xff, 0x30, 0x01, - 0x49, 0x89, 0x61, 0xc8, 0x48, 0x88, 0x6f, 0xc0, - 0x68, 0x80, 0x68, 0x01, 0x02, 0x09, 0x0a, 0x09, - 0x4a, 0x85, 0x6a, 0x52, 0x06, 0x12, 0x43, 0x11, - 0x60, 0x01, 0x48, 0x85, 0x68, 0x00, 0x7a, 0x00, - 0x49, 0x81, 0x69, 0x09, 0x1a, 0x41, 0x48, 0x80, - 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x02, 0x4b, 0x7d, - 0x40, 0x1a, 0x04, 0x09, 0x0c, 0x09, 0x02, 0x09, - 0x43, 0x11, 0x60, 0x01, 0x02, 0x08, 0x0c, 0x00, - 0x48, 0x79, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, - 0x23, 0x02, 0x43, 0x19, 0x60, 0x01, 0x07, 0x88, - 0x48, 0x75, 0x6f, 0xc0, 0x68, 0xc1, 0x20, 0x01, - 0x40, 0x88, 0xf0, 0x0d, 0xfa, 0xbf, 0xe0, 0x02, - 0x48, 0x74, 0x49, 0x71, 0x61, 0xc8, 0xe0, 0xb6, - 0x48, 0x6f, 0x69, 0x00, 0x28, 0x00, 0xd0, 0x62, - 0x48, 0x6d, 0x6e, 0x00, 0x68, 0x00, 0x49, 0x6c, - 0x68, 0xc9, 0x70, 0x08, 0x48, 0x6a, 0x68, 0xc0, - 0x30, 0x01, 0x49, 0x69, 0x60, 0xc8, 0x48, 0x68, - 0x69, 0x00, 0x38, 0x01, 0x49, 0x66, 0x61, 0x08, - 0x48, 0x65, 0x69, 0x00, 0x28, 0x00, 0xd1, 0x4d, - 0x48, 0x63, 0x6a, 0x00, 0x28, 0x01, 0xd1, 0x49, - 0x48, 0x63, 0x68, 0x00, 0x7a, 0x40, 0x49, 0x60, - 0x6d, 0x09, 0x68, 0x09, 0x4b, 0x62, 0x40, 0x19, - 0x07, 0xc0, 0x0d, 0x40, 0x43, 0x08, 0x49, 0x5c, - 0x6d, 0x09, 0x60, 0x08, 0x05, 0x40, 0x0f, 0xc0, - 0x20, 0xff, 0x30, 0x01, 0x49, 0x58, 0x61, 0xc8, - 0x48, 0x57, 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x57, - 0x40, 0x18, 0x49, 0x55, 0x6d, 0x09, 0x60, 0x08, - 0x04, 0xc0, 0x48, 0x53, 0x6f, 0xc0, 0x68, 0x80, - 0x68, 0x01, 0x02, 0x09, 0x0a, 0x09, 0x4a, 0x50, - 0x6a, 0x52, 0x06, 0x12, 0x43, 0x11, 0x60, 0x01, - 0x48, 0x4f, 0x68, 0x00, 0x7a, 0x00, 0x49, 0x4c, - 0x69, 0x09, 0x1a, 0x41, 0x48, 0x4a, 0x6f, 0xc0, - 0x68, 0x80, 0x68, 0x02, 0x4b, 0x47, 0x40, 0x1a, - 0x04, 0x09, 0x0c, 0x09, 0x02, 0x09, 0x43, 0x11, - 0x60, 0x01, 0x02, 0x08, 0x0c, 0x00, 0x48, 0x44, - 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x23, 0x01, - 0x43, 0x19, 0x60, 0x01, 0x07, 0xc8, 0x48, 0x40, - 0x6f, 0xc0, 0x68, 0xc1, 0x20, 0x01, 0x40, 0x88, - 0xf0, 0x0d, 0xfa, 0x54, 0xe0, 0x4f, 0x48, 0x3c, - 0x6a, 0x00, 0x38, 0x01, 0x49, 0x3a, 0x62, 0x08, - 0x48, 0x39, 0x6a, 0x40, 0x30, 0x01, 0x49, 0x38, - 0x62, 0x48, 0x48, 0x39, 0x68, 0x00, 0x30, 0x0c, - 0x49, 0x37, 0x60, 0x08, 0x48, 0x36, 0x68, 0x00, - 0x78, 0x00, 0x49, 0x33, 0x61, 0x88, 0x48, 0x34, - 0x68, 0x00, 0x7a, 0x00, 0x49, 0x30, 0x61, 0x08, - 0x48, 0x31, 0x68, 0x00, 0x68, 0x40, 0x49, 0x2e, - 0x60, 0xc8, 0x48, 0x2d, 0x69, 0x80, 0x07, 0xc0, - 0x0f, 0xc0, 0xd0, 0x01, 0x48, 0x2f, 0xe0, 0x01, - 0x20, 0x01, 0x02, 0x40, 0x49, 0x28, 0x61, 0xc8, - 0x48, 0x27, 0x6d, 0x00, 0x68, 0x00, 0x23, 0x01, - 0x03, 0x5b, 0x43, 0x18, 0x49, 0x24, 0x6d, 0x09, - 0x60, 0x08, 0x04, 0x80, 0x48, 0x22, 0x6d, 0x40, - 0x68, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x49, 0x20, - 0x69, 0x89, 0x08, 0x49, 0x06, 0x09, 0x0e, 0x09, - 0x43, 0x08, 0x49, 0x1d, 0x6d, 0x49, 0x60, 0x08, - 0x06, 0x00, 0x48, 0x1b, 0x6d, 0x00, 0x68, 0x00, - 0x4b, 0x1f, 0x40, 0x18, 0x49, 0x18, 0x69, 0x89, - 0x07, 0xc9, 0x0c, 0x49, 0x43, 0x08, 0x49, 0x16, - 0x6d, 0x09, 0x60, 0x08, 0x04, 0x40, 0xe0, 0x01, - 0xe0, 0x00, 0xe7, 0xff, 0x48, 0x12, 0x6c, 0x80, - 0x68, 0x00, 0x49, 0x11, 0x6e, 0x49, 0x60, 0x08, - 0x48, 0x0f, 0x6d, 0x40, 0x68, 0x00, 0x49, 0x0e, - 0x6f, 0x09, 0x60, 0x08, 0x48, 0x0c, 0x6d, 0x00, - 0x68, 0x00, 0x49, 0x0b, 0x6e, 0xc9, 0x60, 0x08, - 0x48, 0x09, 0x6c, 0xc0, 0x68, 0x00, 0x23, 0x08, - 0x43, 0x18, 0x49, 0x07, 0x6c, 0xc9, 0x60, 0x08, - 0x07, 0x00, 0x48, 0x05, 0x6c, 0xc0, 0x68, 0x00, - 0x49, 0x03, 0x6e, 0x89, 0x60, 0x08, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, - 0x2e, 0x08, 0x1f, 0x9c, 0xff, 0xff, 0xef, 0xff, - 0x2e, 0x08, 0x9d, 0xc0, 0x00, 0x00, 0x02, 0x03, - 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0x02, 0x01, - 0xff, 0xff, 0xbf, 0xff, 0xb4, 0x80, 0x49, 0x2e, - 0x20, 0x00, 0x28, 0x08, 0xd3, 0x04, 0xe0, 0x06, - 0x1c, 0x42, 0x06, 0x10, 0x0e, 0x00, 0xe7, 0xf8, - 0x23, 0x00, 0xc1, 0x08, 0xe7, 0xf8, 0x4a, 0x29, - 0x6f, 0xd2, 0x68, 0x12, 0x4b, 0x27, 0x6d, 0x9b, - 0x68, 0x1b, 0x0a, 0x1b, 0x02, 0x1b, 0x06, 0x12, - 0x0e, 0x12, 0x43, 0x1a, 0x4b, 0x23, 0x6d, 0x9b, - 0x60, 0x1a, 0x06, 0x12, 0x0e, 0x12, 0x4a, 0x21, - 0x6f, 0xd2, 0x68, 0x52, 0x4b, 0x1f, 0x6d, 0x1b, - 0x68, 0x1f, 0x23, 0x01, 0x03, 0xdb, 0x43, 0x9f, - 0x1c, 0x3b, 0x07, 0xd2, 0x0c, 0x12, 0x43, 0x1a, - 0x4b, 0x1a, 0x6d, 0x1b, 0x60, 0x1a, 0x04, 0x12, - 0x0f, 0xd2, 0x4a, 0x18, 0x6f, 0xd2, 0x69, 0x12, - 0x4b, 0x16, 0x6d, 0xdb, 0x68, 0x1b, 0x0c, 0x1b, - 0x04, 0x1b, 0x04, 0x12, 0x0c, 0x12, 0x43, 0x1a, - 0x4b, 0x12, 0x6d, 0xdb, 0x60, 0x1a, 0x04, 0x12, - 0x0c, 0x12, 0x4a, 0x10, 0x6d, 0x12, 0x68, 0x12, - 0x23, 0x01, 0x02, 0x5b, 0x43, 0x1a, 0x4b, 0x0d, - 0x6d, 0x1b, 0x60, 0x1a, 0x05, 0x92, 0x4a, 0x0b, - 0x6d, 0x12, 0x68, 0x12, 0x4b, 0x09, 0x6e, 0xdb, - 0x60, 0x1a, 0x4a, 0x08, 0x6d, 0x92, 0x68, 0x12, - 0x4b, 0x06, 0x6f, 0x5b, 0x60, 0x1a, 0x4a, 0x05, - 0x6d, 0xd2, 0x68, 0x12, 0x4b, 0x03, 0x6f, 0x9b, - 0x60, 0x1a, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x1f, 0xc4, 0x2e, 0x08, 0x1f, 0x9c, - 0xb5, 0x90, 0x1c, 0x07, 0x1c, 0x0c, 0x2f, 0x22, - 0xd1, 0x07, 0x2c, 0x3f, 0xd8, 0x01, 0x2c, 0x01, - 0xd2, 0x03, 0x20, 0x38, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x01, 0x49, 0x13, 0x70, 0x08, - 0x23, 0x01, 0x03, 0xdb, 0x42, 0x9f, 0xd0, 0x02, - 0x4b, 0x11, 0x42, 0x9f, 0xd1, 0x04, 0x48, 0x11, - 0x60, 0x07, 0x20, 0x00, 0xe7, 0xee, 0xe0, 0x18, - 0x2f, 0xff, 0xd1, 0x0b, 0x21, 0x00, 0x43, 0xc9, - 0x20, 0x0d, 0xf0, 0x00, 0xf8, 0x1d, 0x48, 0x0c, - 0x68, 0x01, 0x48, 0x0c, 0x68, 0x00, 0xf0, 0x00, - 0xf8, 0x43, 0xe0, 0x07, 0x1c, 0x21, 0x1c, 0x38, - 0xf0, 0x00, 0xf8, 0x3e, 0x48, 0x07, 0x60, 0x07, - 0x48, 0x05, 0x60, 0x04, 0x20, 0x00, 0xe7, 0xd5, - 0xe7, 0xd4, 0xe7, 0xd3, 0x2e, 0x08, 0x9d, 0xe8, - 0x00, 0x00, 0x80, 0x0f, 0xcc, 0x00, 0x05, 0x00, - 0x2e, 0x08, 0x9d, 0xe4, 0x2e, 0x08, 0x20, 0x1c, - 0xb4, 0xb0, 0x1c, 0x07, 0x1c, 0x0a, 0x4b, 0x13, - 0x68, 0x5b, 0x1c, 0x18, 0x21, 0x00, 0x29, 0x02, - 0xdb, 0x04, 0xe0, 0x1a, 0x1c, 0x4b, 0x06, 0x19, - 0x0e, 0x09, 0xe7, 0xf8, 0x23, 0x0d, 0x06, 0x9b, - 0x1a, 0xc4, 0x29, 0x00, 0xd1, 0x01, 0x60, 0x27, - 0xe0, 0x05, 0x23, 0x01, 0x42, 0xda, 0xd0, 0x01, - 0x60, 0x22, 0xe0, 0x00, 0xe0, 0x09, 0x1d, 0x05, - 0x23, 0x05, 0x02, 0x1b, 0x42, 0x9d, 0xdb, 0x02, - 0x20, 0x01, 0x02, 0x80, 0xe0, 0x00, 0x30, 0x04, - 0xe7, 0xe4, 0x4b, 0x02, 0x60, 0x58, 0xbc, 0xb0, - 0x47, 0x70, 0x00, 0x00, 0xcc, 0x00, 0x0f, 0x00, - 0xb5, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x05, 0x20, - 0x0d, 0x00, 0x23, 0xff, 0x33, 0x04, 0x42, 0x98, - 0xd0, 0x50, 0xdc, 0x18, 0x28, 0x10, 0xd0, 0x2d, - 0xdc, 0x08, 0x28, 0x01, 0xd0, 0x23, 0x28, 0x02, - 0xd0, 0x1e, 0x28, 0x04, 0xd0, 0x1f, 0x28, 0x08, - 0xd0, 0x1d, 0xe0, 0x76, 0x28, 0x12, 0xd0, 0x1d, - 0x28, 0x22, 0xd0, 0x3a, 0x23, 0xff, 0x33, 0x02, - 0x42, 0x98, 0xd0, 0x24, 0x23, 0xff, 0x33, 0x03, - 0x42, 0x98, 0xd0, 0x29, 0xe0, 0x69, 0x38, 0xff, - 0x38, 0x05, 0x28, 0x08, 0xd2, 0x65, 0xa3, 0x02, - 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x35, 0x3c, 0x41, 0x4f, 0x56, 0x4b, 0x5d, 0x46, - 0x20, 0x00, 0x49, 0x32, 0x63, 0x48, 0x48, 0x31, - 0x62, 0x04, 0xe0, 0x5c, 0x20, 0x01, 0x49, 0x2f, - 0x63, 0x48, 0xe0, 0x58, 0x20, 0x00, 0x49, 0x2e, - 0x67, 0x08, 0x21, 0x00, 0x43, 0xc9, 0x20, 0x10, - 0xf7, 0xff, 0xff, 0x92, 0xe0, 0x4f, 0x20, 0x01, - 0x49, 0x29, 0x67, 0x08, 0x21, 0x00, 0x43, 0xc9, - 0x20, 0x10, 0xf7, 0xff, 0xff, 0x89, 0xe0, 0x46, - 0x20, 0x02, 0x49, 0x25, 0x67, 0x08, 0x21, 0x00, - 0x43, 0xc9, 0x20, 0x10, 0xf7, 0xff, 0xff, 0x80, - 0xe0, 0x3d, 0x1c, 0x39, 0x20, 0x22, 0xf7, 0xff, - 0xff, 0x7b, 0xe0, 0x38, 0x48, 0x1e, 0x65, 0xc7, - 0x21, 0x01, 0x20, 0x35, 0xf7, 0xff, 0xff, 0x74, - 0xe0, 0x31, 0x48, 0x1b, 0x65, 0xc7, 0x21, 0x02, - 0x20, 0x35, 0xf7, 0xff, 0xff, 0x6d, 0xe0, 0x2a, - 0x21, 0x00, 0x20, 0x35, 0xf7, 0xff, 0xff, 0x68, - 0xe0, 0x25, 0x21, 0x03, 0x20, 0x35, 0xf7, 0xff, - 0xff, 0x63, 0xe0, 0x20, 0x21, 0x04, 0x20, 0x35, - 0xf7, 0xff, 0xff, 0x5e, 0xe0, 0x1b, 0x20, 0x00, - 0x49, 0x0f, 0x65, 0xc8, 0xe0, 0x17, 0x48, 0x0e, - 0x66, 0x07, 0x21, 0x01, 0x20, 0x36, 0xf7, 0xff, - 0xff, 0x53, 0xe0, 0x10, 0x48, 0x0a, 0x66, 0x07, - 0x21, 0x02, 0x20, 0x36, 0xf7, 0xff, 0xff, 0x4c, - 0xe0, 0x09, 0x20, 0x00, 0x49, 0x06, 0x66, 0x08, - 0xe0, 0x05, 0x1c, 0x20, 0x21, 0x00, 0x43, 0xc9, - 0xf7, 0xff, 0xff, 0x42, 0xe7, 0xff, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xcc, 0x00, 0x0f, 0x80, - 0xcc, 0x00, 0x05, 0x00, 0xb4, 0xb0, 0x1c, 0x04, - 0x1c, 0x0f, 0x1c, 0x13, 0x06, 0x38, 0x0e, 0x00, - 0x06, 0x19, 0x0e, 0x09, 0x29, 0x01, 0xd0, 0x08, - 0x22, 0x00, 0x4d, 0x09, 0x60, 0x2a, 0x22, 0x00, - 0x43, 0xd2, 0x4d, 0x08, 0x68, 0x2d, 0x60, 0x2a, - 0xe0, 0x08, 0x4a, 0x07, 0x68, 0x12, 0x60, 0x14, - 0x4a, 0x04, 0x68, 0x12, 0x60, 0x10, 0x22, 0x01, - 0x4d, 0x01, 0x60, 0x2a, 0xbc, 0xb0, 0x47, 0x70, - 0xcc, 0x00, 0x0d, 0x00, 0x2e, 0x08, 0x9d, 0xdc, - 0x2e, 0x08, 0x9d, 0xd8, 0xb5, 0xf3, 0xb0, 0x81, - 0x99, 0x02, 0x06, 0x08, 0x16, 0x00, 0x90, 0x00, - 0xb0, 0x85, 0x20, 0x00, 0x90, 0x01, 0x9c, 0x06, - 0x1d, 0xe6, 0x36, 0x05, 0xcc, 0x20, 0x07, 0xa8, - 0x0f, 0x80, 0x06, 0x00, 0x16, 0x00, 0x90, 0x00, - 0x08, 0xad, 0x3d, 0x03, 0xcc, 0x80, 0x08, 0xb8, - 0x00, 0x80, 0x19, 0x86, 0xcc, 0x02, 0x91, 0x04, - 0x99, 0x04, 0x08, 0x89, 0x91, 0x04, 0x20, 0x03, - 0x05, 0x80, 0x21, 0x35, 0x06, 0x49, 0x60, 0x08, - 0x48, 0x46, 0x68, 0x01, 0x08, 0x89, 0x00, 0x89, - 0x60, 0x01, 0x48, 0x45, 0x90, 0x03, 0x20, 0x00, - 0x90, 0x02, 0x98, 0x02, 0x42, 0xa8, 0xd3, 0x04, - 0xe0, 0x08, 0x98, 0x02, 0x30, 0x01, 0x90, 0x02, - 0xe7, 0xf7, 0xcc, 0x02, 0x98, 0x03, 0xc0, 0x02, - 0x90, 0x03, 0xe7, 0xf6, 0x98, 0x00, 0x28, 0x00, - 0xd0, 0x03, 0xcc, 0x02, 0x98, 0x03, 0xc0, 0x02, - 0x90, 0x03, 0x20, 0x00, 0x49, 0x39, 0x65, 0x88, - 0x9f, 0x04, 0x2f, 0x00, 0xd8, 0x02, 0xe0, 0x05, - 0x3f, 0x01, 0xe7, 0xfa, 0xce, 0x02, 0x48, 0x35, - 0x64, 0x81, 0xe7, 0xf9, 0x20, 0x00, 0x49, 0x34, - 0x60, 0x48, 0x20, 0x00, 0x21, 0x35, 0x06, 0x49, - 0x60, 0x08, 0x20, 0x00, 0x49, 0x2f, 0x66, 0x88, - 0x20, 0x00, 0x21, 0x35, 0x06, 0x49, 0x61, 0x88, - 0x20, 0x01, 0x49, 0x2c, 0x64, 0xc8, 0x48, 0x2c, - 0x68, 0x40, 0x28, 0x00, 0xd1, 0x0e, 0x27, 0x00, - 0x2f, 0x64, 0xd3, 0x02, 0xe0, 0x02, 0x37, 0x01, - 0xe7, 0xfa, 0xe7, 0xfc, 0x98, 0x01, 0x1c, 0x41, - 0x91, 0x01, 0x4b, 0x26, 0x42, 0x98, 0xdb, 0x00, - 0xe0, 0x00, 0xe7, 0xec, 0x48, 0x24, 0x68, 0x01, - 0x23, 0x01, 0x43, 0x19, 0x60, 0x01, 0x48, 0x23, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x48, 0x21, - 0x68, 0x40, 0x28, 0x00, 0xd1, 0x0b, 0x48, 0x20, - 0x68, 0x40, 0x4b, 0x19, 0x18, 0xc0, 0x49, 0x1d, - 0x60, 0x08, 0x48, 0x1d, 0x68, 0x80, 0x4b, 0x16, - 0x18, 0xc0, 0x49, 0x1a, 0x60, 0x48, 0x48, 0x19, - 0x68, 0x00, 0x21, 0x33, 0x06, 0x49, 0x65, 0x48, - 0x48, 0x16, 0x68, 0x40, 0x21, 0x33, 0x06, 0x49, - 0x65, 0x88, 0x48, 0x14, 0x68, 0x40, 0x21, 0x33, - 0x06, 0x49, 0x66, 0x88, 0x48, 0x11, 0x68, 0x00, - 0x21, 0x33, 0x06, 0x49, 0x66, 0x48, 0x20, 0x03, - 0x21, 0x33, 0x06, 0x49, 0x67, 0x08, 0x20, 0x00, - 0x49, 0x0e, 0x68, 0x09, 0x70, 0x08, 0x21, 0x00, - 0x20, 0x0d, 0xf7, 0xff, 0xfe, 0x2d, 0xb0, 0x05, - 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x66, 0x00, 0x00, 0x70, - 0xcc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x80, - 0xcc, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x27, 0x10, - 0x6a, 0x00, 0x00, 0x10, 0x2e, 0x08, 0xb9, 0x88, - 0xcc, 0x00, 0x0f, 0x80, 0x2e, 0x08, 0xd2, 0x10, - 0x1c, 0x01, 0xb0, 0x81, 0x48, 0x27, 0x22, 0x00, - 0x92, 0x00, 0x9a, 0x00, 0x2a, 0x16, 0xdb, 0x04, - 0xe0, 0x09, 0x9a, 0x00, 0x32, 0x01, 0x92, 0x00, - 0xe7, 0xf7, 0x68, 0x02, 0x9b, 0x00, 0x00, 0x9b, - 0x50, 0xca, 0x30, 0x04, 0xe7, 0xf5, 0x48, 0x20, - 0x22, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x2a, 0x0b, - 0xdb, 0x04, 0xe0, 0x0a, 0x9a, 0x00, 0x32, 0x01, - 0x92, 0x00, 0xe7, 0xf7, 0x68, 0x03, 0x9a, 0x00, - 0x00, 0x92, 0x18, 0x52, 0x65, 0x93, 0x30, 0x04, - 0xe7, 0xf4, 0x48, 0x18, 0x22, 0x00, 0x92, 0x00, - 0x9a, 0x00, 0x2a, 0x11, 0xdb, 0x04, 0xe0, 0x0b, - 0x9a, 0x00, 0x32, 0x01, 0x92, 0x00, 0xe7, 0xf7, - 0x68, 0x03, 0x9a, 0x00, 0x00, 0x92, 0x18, 0x52, - 0x32, 0x80, 0x60, 0x53, 0x30, 0x04, 0xe7, 0xf3, - 0x48, 0x0f, 0x22, 0x02, 0x92, 0x00, 0x9a, 0x00, - 0x2a, 0x05, 0xdb, 0x04, 0xe0, 0x0b, 0x9a, 0x00, - 0x32, 0x01, 0x92, 0x00, 0xe7, 0xf7, 0x68, 0x02, - 0x9b, 0x00, 0x00, 0x9b, 0x18, 0x5b, 0x33, 0x80, - 0x60, 0x5a, 0x30, 0x04, 0xe7, 0xf3, 0x4a, 0x07, - 0x6c, 0x12, 0x1d, 0xcb, 0x33, 0x79, 0x61, 0xda, - 0xb0, 0x01, 0x47, 0x70, 0xcc, 0x00, 0x05, 0x20, - 0xcc, 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x0c, 0x5c, - 0xcc, 0x00, 0x0c, 0xa0, 0xcc, 0x00, 0x0c, 0x80, - 0xb4, 0xf0, 0x1c, 0x06, 0x1c, 0x0f, 0x1c, 0x14, - 0x1c, 0x1d, 0x06, 0x29, 0x0e, 0x09, 0x2c, 0x1f, - 0xdb, 0x02, 0x20, 0xaf, 0xbc, 0xf0, 0x47, 0x70, - 0x4b, 0x0b, 0x40, 0x1f, 0x48, 0x0b, 0x68, 0x00, - 0x60, 0x06, 0x29, 0x01, 0xd1, 0x07, 0x48, 0x0a, - 0x68, 0x02, 0x43, 0x3a, 0x60, 0x02, 0x20, 0x80, - 0x6e, 0x00, 0x60, 0x04, 0xe0, 0x05, 0x29, 0x02, - 0xd1, 0x03, 0x48, 0x05, 0x68, 0x02, 0x43, 0xba, - 0x60, 0x02, 0x20, 0x00, 0xe7, 0xe6, 0xe7, 0xe5, - 0xff, 0xff, 0xf8, 0xff, 0x2e, 0x08, 0x9d, 0xe0, - 0xcc, 0x00, 0x02, 0x20, 0xb5, 0xf3, 0xb0, 0x81, - 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, - 0x99, 0x02, 0x06, 0x0e, 0x0e, 0x36, 0x48, 0x1a, - 0x6f, 0x00, 0x23, 0x02, 0x40, 0x18, 0xd0, 0x0d, - 0x20, 0x33, 0x06, 0x40, 0x6d, 0x80, 0x21, 0x33, - 0x06, 0x49, 0x6d, 0x49, 0x1a, 0x41, 0x48, 0x14, - 0x6d, 0xc0, 0x4a, 0x13, 0x6d, 0x92, 0x1a, 0x80, - 0x18, 0x0d, 0xe0, 0x06, 0x20, 0x33, 0x06, 0x40, - 0x6d, 0x80, 0x21, 0x33, 0x06, 0x49, 0x6d, 0x49, - 0x1a, 0x45, 0x98, 0x00, 0x43, 0x68, 0x1c, 0x01, - 0x20, 0x64, 0xf0, 0x07, 0xfb, 0x43, 0x1c, 0x04, - 0x43, 0x6e, 0x1c, 0x31, 0x20, 0x64, 0xf0, 0x07, - 0xfb, 0x3d, 0x1c, 0x07, 0x08, 0xa4, 0x00, 0xa4, - 0x08, 0xbf, 0x00, 0xbf, 0x48, 0x05, 0x64, 0x84, - 0x48, 0x04, 0x64, 0xc7, 0xb0, 0x01, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x80, 0xcc, 0x00, 0x0c, 0x80, - 0xb5, 0xf7, 0x9a, 0x02, 0x06, 0x15, 0x0e, 0x2d, - 0xb0, 0x82, 0x27, 0x00, 0x2d, 0x1f, 0xdb, 0x05, - 0x20, 0xaf, 0xb0, 0x02, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2f, 0x00, 0xd1, 0x0d, - 0x48, 0x19, 0x69, 0x80, 0x28, 0x00, 0xd0, 0x00, - 0xe7, 0xfa, 0x20, 0x02, 0x49, 0x16, 0x61, 0x88, - 0x48, 0x15, 0x69, 0x80, 0x28, 0x02, 0xd1, 0x00, - 0x27, 0xff, 0xe7, 0xef, 0x4c, 0x13, 0x94, 0x00, - 0x20, 0x01, 0x02, 0x40, 0x90, 0x01, 0x22, 0x00, - 0x99, 0x03, 0xb4, 0x06, 0x06, 0x2b, 0x16, 0x1b, - 0x9a, 0x03, 0x99, 0x04, 0x1c, 0x20, 0xf0, 0x01, - 0xff, 0x75, 0xb0, 0x02, 0x1c, 0x06, 0x2e, 0xd2, - 0xd1, 0x06, 0x20, 0x00, 0x49, 0x08, 0x61, 0x88, - 0x20, 0xd2, 0xb0, 0x02, 0xe7, 0xd2, 0xe0, 0x08, - 0x20, 0x00, 0x99, 0x00, 0x60, 0x08, 0x20, 0x00, - 0x49, 0x03, 0x61, 0x88, 0x20, 0x00, 0xb0, 0x02, - 0xe7, 0xc8, 0xb0, 0x02, 0xe7, 0xc6, 0x00, 0x00, - 0xcc, 0x00, 0x0f, 0x80, 0xcc, 0x00, 0x06, 0x00, - 0xb5, 0xff, 0x9f, 0x09, 0xb0, 0x81, 0x9b, 0x01, - 0x06, 0x18, 0x0e, 0x00, 0x9b, 0x02, 0x06, 0x19, - 0x0e, 0x09, 0x9b, 0x03, 0x06, 0x1b, 0x0e, 0x1b, - 0x93, 0x00, 0x9b, 0x04, 0x06, 0x1a, 0x0e, 0x12, - 0x06, 0x3d, 0x0e, 0x2d, 0x2d, 0x01, 0xd1, 0x07, - 0x4c, 0x1c, 0x68, 0x26, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x9e, 0x1c, 0x33, 0x60, 0x23, 0xe0, 0x07, - 0x2d, 0x02, 0xd1, 0x05, 0x4c, 0x17, 0x68, 0x26, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x33, 0x60, 0x23, - 0x28, 0x00, 0xd1, 0x03, 0x23, 0x00, 0x4c, 0x14, - 0x61, 0xe3, 0xe0, 0x04, 0x28, 0x01, 0xd1, 0x02, - 0x23, 0x01, 0x4c, 0x11, 0x61, 0xe3, 0x29, 0x00, - 0xd1, 0x03, 0x23, 0x00, 0x4c, 0x0e, 0x65, 0xa3, - 0xe0, 0x04, 0x29, 0x01, 0xd1, 0x02, 0x23, 0x01, - 0x4c, 0x0b, 0x65, 0xa3, 0x2a, 0x00, 0xd1, 0x03, - 0x23, 0x02, 0x4c, 0x09, 0x66, 0xe3, 0xe0, 0x04, - 0x2a, 0x01, 0xd1, 0x02, 0x23, 0x03, 0x4c, 0x06, - 0x66, 0xe3, 0x9b, 0x00, 0x4c, 0x04, 0x67, 0x23, - 0xb0, 0x01, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0xcc, 0x00, 0x02, 0x20, - 0xcc, 0x00, 0x0f, 0x80, 0xb5, 0xf0, 0x1c, 0x05, - 0x1c, 0x0c, 0x1c, 0x17, 0x06, 0x2e, 0x0e, 0x36, - 0xb0, 0x84, 0x48, 0x15, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x04, 0x20, 0x39, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x01, 0xd1, 0x0a, - 0x94, 0x00, 0x97, 0x01, 0x48, 0x0f, 0x90, 0x02, - 0x48, 0x0f, 0x90, 0x03, 0x46, 0x68, 0x21, 0x01, - 0xf0, 0x00, 0xfd, 0x1a, 0xe0, 0x0f, 0x20, 0x00, - 0x90, 0x00, 0x20, 0x00, 0x90, 0x01, 0x48, 0x09, - 0x90, 0x02, 0x48, 0x09, 0x90, 0x03, 0x46, 0x68, - 0x21, 0x01, 0xf0, 0x00, 0xfd, 0x0d, 0x21, 0x00, - 0x20, 0x02, 0xf7, 0xff, 0xfc, 0x85, 0x20, 0x00, - 0xb0, 0x04, 0xe7, 0xdc, 0xb0, 0x04, 0xe7, 0xda, - 0x2e, 0x08, 0xba, 0x28, 0x00, 0x00, 0x02, 0xcf, - 0x00, 0x00, 0x02, 0x3f, 0xb4, 0xb0, 0x1c, 0x05, - 0x1c, 0x0c, 0x1c, 0x17, 0x48, 0x14, 0x6c, 0x00, - 0x1c, 0x01, 0x48, 0x13, 0x6f, 0x80, 0x23, 0x09, - 0x01, 0x9b, 0x42, 0x98, 0xd1, 0x12, 0x20, 0x02, - 0x40, 0x20, 0xd0, 0x0c, 0x2d, 0x02, 0xd1, 0x0a, - 0x2f, 0x03, 0xd1, 0x00, 0x31, 0x04, 0x2f, 0x03, - 0xd2, 0x05, 0x07, 0xe0, 0x0f, 0xc0, 0xd0, 0x01, - 0x31, 0x05, 0xe0, 0x00, 0x31, 0x08, 0x2d, 0x02, - 0xd9, 0x00, 0x21, 0x12, 0x00, 0x48, 0x18, 0x40, - 0x30, 0x01, 0x10, 0x40, 0x21, 0x2d, 0x02, 0x09, - 0x43, 0x41, 0x48, 0x03, 0x69, 0x40, 0x18, 0x09, - 0x1c, 0x08, 0xbc, 0xb0, 0x47, 0x70, 0xe7, 0xfc, - 0xcc, 0x00, 0x0f, 0x80, 0x48, 0x07, 0x6a, 0xc0, - 0x1c, 0x01, 0x00, 0x48, 0x18, 0x40, 0x30, 0x01, - 0x10, 0x40, 0x21, 0x2d, 0x02, 0x09, 0x43, 0x41, - 0x48, 0x03, 0x69, 0x40, 0x18, 0x09, 0x1c, 0x08, - 0x47, 0x70, 0xe7, 0xfd, 0xcc, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x0f, 0x80, 0x48, 0x07, 0x68, 0x80, - 0x28, 0x00, 0xd1, 0x03, 0x48, 0x06, 0x69, 0x00, - 0x1c, 0x01, 0xe0, 0x02, 0x48, 0x04, 0x68, 0xc0, - 0x1c, 0x01, 0x4b, 0x02, 0x18, 0xc9, 0x1c, 0x08, - 0x47, 0x70, 0xe7, 0xfd, 0xcc, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x0f, 0x80, 0xb5, 0x90, 0x1c, 0x04, - 0x1c, 0x0f, 0x48, 0x06, 0x6c, 0x40, 0x60, 0x20, - 0x48, 0x04, 0x6c, 0x80, 0x60, 0x38, 0xf7, 0xff, - 0xff, 0xe1, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xe7, 0xfb, 0x00, 0x00, 0xcc, 0x00, 0x02, 0x00, - 0xb5, 0xf0, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, - 0xf7, 0xff, 0xff, 0xd4, 0x1c, 0x06, 0x2d, 0x00, - 0xd0, 0x01, 0x2c, 0x00, 0xd1, 0x03, 0x20, 0x3a, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x08, 0x78, - 0x00, 0x40, 0xd0, 0x01, 0x20, 0x3a, 0xe7, 0xf7, - 0x20, 0x00, 0x49, 0x0d, 0x66, 0x88, 0x48, 0x0d, - 0x68, 0x01, 0x23, 0x12, 0x43, 0x19, 0x60, 0x01, - 0x48, 0x0b, 0x63, 0x45, 0x48, 0x0a, 0x63, 0x84, - 0x20, 0x01, 0x49, 0x09, 0x62, 0x48, 0x48, 0x09, - 0x68, 0x01, 0x23, 0x01, 0x40, 0x59, 0x60, 0x01, - 0x48, 0x05, 0x63, 0xc7, 0x48, 0x02, 0x60, 0x46, - 0x20, 0x00, 0xe7, 0xdd, 0xe7, 0xdc, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x0f, 0x48, - 0xcc, 0x00, 0x00, 0x80, 0xcc, 0x00, 0x00, 0x08, - 0xb4, 0xf0, 0x1c, 0x07, 0x1c, 0x0c, 0x1c, 0x16, - 0x1c, 0x1d, 0x48, 0x10, 0x6a, 0x00, 0x28, 0x10, - 0xd0, 0x02, 0x20, 0x3b, 0xbc, 0xf0, 0x47, 0x70, - 0x48, 0x0d, 0x68, 0x00, 0x60, 0x38, 0x68, 0x38, - 0x4b, 0x0b, 0x18, 0xc0, 0x60, 0x38, 0x48, 0x0b, - 0x6b, 0x40, 0x60, 0x30, 0x48, 0x09, 0x6b, 0x80, - 0x60, 0x28, 0x48, 0x09, 0x6c, 0x80, 0x23, 0x10, - 0x40, 0x18, 0xd0, 0x02, 0x20, 0x02, 0x60, 0x20, - 0xe0, 0x01, 0x20, 0x01, 0x60, 0x20, 0x20, 0x00, - 0xe7, 0xe4, 0xe7, 0xe3, 0xcc, 0x00, 0x05, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x80, - 0xcc, 0x00, 0x0f, 0x00, 0xb4, 0xf0, 0x1c, 0x05, - 0x1c, 0x0c, 0x1c, 0x17, 0x06, 0x2a, 0x0e, 0x12, - 0x06, 0x21, 0x0e, 0x09, 0x2f, 0x00, 0xd1, 0x30, - 0xb0, 0x81, 0x46, 0x6f, 0x2a, 0x00, 0xd0, 0x06, - 0x2a, 0x08, 0xd0, 0x0d, 0x2a, 0x10, 0xd0, 0x14, - 0x2a, 0x18, 0xd0, 0x1b, 0xe0, 0x23, 0x20, 0x00, - 0x70, 0x38, 0x20, 0x00, 0x70, 0x78, 0x20, 0x0c, - 0x70, 0xb8, 0x20, 0x00, 0x70, 0xf8, 0xe0, 0x1b, - 0x20, 0x00, 0x70, 0x38, 0x20, 0x08, 0x70, 0x78, - 0x20, 0x1c, 0x70, 0xb8, 0x20, 0x00, 0x70, 0xf8, - 0xe0, 0x12, 0x20, 0x00, 0x70, 0x38, 0x20, 0x10, - 0x70, 0x78, 0x20, 0x0c, 0x70, 0xb8, 0x20, 0x00, - 0x70, 0xf8, 0xe0, 0x09, 0x20, 0x00, 0x70, 0x38, - 0x20, 0x18, 0x70, 0x78, 0x20, 0x1c, 0x70, 0xb8, - 0x20, 0x00, 0x70, 0xf8, 0xe0, 0x00, 0xe7, 0xff, - 0xb0, 0x01, 0x23, 0x00, 0x56, 0xf8, 0x23, 0x39, - 0x06, 0x5b, 0x60, 0x18, 0x23, 0x01, 0x56, 0xf8, - 0x23, 0x39, 0x06, 0x5b, 0x61, 0xd8, 0x29, 0x00, - 0xd1, 0x06, 0x48, 0x0e, 0x68, 0x06, 0x23, 0x20, - 0x43, 0x9e, 0x1c, 0x33, 0x60, 0x03, 0xe0, 0x06, - 0x29, 0x20, 0xd1, 0x04, 0x48, 0x09, 0x68, 0x06, - 0x23, 0x20, 0x43, 0x33, 0x60, 0x03, 0x23, 0x02, - 0x56, 0xf8, 0x23, 0x39, 0x06, 0x5b, 0x60, 0x58, - 0x23, 0x03, 0x56, 0xf8, 0x4b, 0x04, 0x63, 0x18, - 0x20, 0x00, 0x23, 0x39, 0x06, 0x5b, 0x64, 0x98, - 0xbc, 0xf0, 0x47, 0x70, 0x72, 0x00, 0x00, 0x1c, - 0x72, 0x00, 0x01, 0x00, 0xb4, 0xb0, 0x1c, 0x07, - 0x1c, 0x0d, 0x1c, 0x14, 0x06, 0x29, 0x0e, 0x09, - 0x06, 0x22, 0x0e, 0x12, 0xb0, 0x84, 0x29, 0x33, - 0xdc, 0x01, 0x2a, 0x0f, 0xdd, 0x03, 0x20, 0xff, - 0xb0, 0x04, 0xbc, 0xb0, 0x47, 0x70, 0x20, 0x39, - 0x06, 0x40, 0x63, 0x41, 0x20, 0x10, 0x43, 0x10, - 0x23, 0x39, 0x06, 0x5b, 0x63, 0x98, 0x20, 0x39, - 0x06, 0x40, 0x68, 0x00, 0x90, 0x03, 0x98, 0x03, - 0x23, 0x9c, 0x43, 0xdb, 0x40, 0x18, 0x90, 0x03, - 0x20, 0x39, 0x06, 0x40, 0x68, 0x40, 0x90, 0x01, - 0x98, 0x01, 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, - 0x90, 0x01, 0x06, 0x38, 0x0e, 0x00, 0xd0, 0x29, - 0x20, 0x10, 0x40, 0x38, 0xd0, 0x03, 0x98, 0x03, - 0x23, 0x80, 0x43, 0x18, 0x90, 0x03, 0x20, 0x08, - 0x40, 0x38, 0xd0, 0x03, 0x98, 0x03, 0x23, 0x10, - 0x43, 0x18, 0x90, 0x03, 0x20, 0x04, 0x40, 0x38, - 0xd0, 0x04, 0x98, 0x03, 0x23, 0x08, 0x43, 0x18, - 0x90, 0x03, 0xe0, 0x0c, 0x20, 0x02, 0x40, 0x38, - 0xd0, 0x04, 0x98, 0x03, 0x23, 0x0c, 0x43, 0x18, - 0x90, 0x03, 0xe0, 0x04, 0x98, 0x03, 0x23, 0x0c, - 0x43, 0xdb, 0x40, 0x18, 0x90, 0x03, 0x20, 0x20, - 0x40, 0x38, 0xd0, 0x03, 0x98, 0x01, 0x23, 0x20, - 0x43, 0x18, 0x90, 0x01, 0x98, 0x03, 0x23, 0x39, - 0x06, 0x5b, 0x60, 0x18, 0x98, 0x01, 0x23, 0x39, - 0x06, 0x5b, 0x60, 0x58, 0x20, 0x39, 0x06, 0x40, - 0x6a, 0x00, 0x90, 0x00, 0x98, 0x00, 0x23, 0xf0, - 0x43, 0xdb, 0x43, 0x18, 0x90, 0x00, 0x20, 0xff, - 0x02, 0x00, 0x40, 0x38, 0xd0, 0x27, 0x20, 0xff, - 0x30, 0x01, 0x40, 0x38, 0xd0, 0x03, 0x98, 0x00, - 0x23, 0xfe, 0x40, 0x18, 0x90, 0x00, 0x20, 0x01, - 0x02, 0x40, 0x40, 0x38, 0xd0, 0x03, 0x98, 0x00, - 0x23, 0xfd, 0x40, 0x18, 0x90, 0x00, 0x20, 0x01, - 0x02, 0x80, 0x40, 0x38, 0xd0, 0x03, 0x98, 0x00, - 0x23, 0xfb, 0x40, 0x18, 0x90, 0x00, 0x20, 0x01, - 0x02, 0xc0, 0x40, 0x38, 0xd0, 0x03, 0x98, 0x00, - 0x23, 0xf7, 0x40, 0x18, 0x90, 0x00, 0x20, 0x01, - 0x03, 0x00, 0x40, 0x38, 0xd0, 0x03, 0x98, 0x00, - 0x23, 0xf0, 0x40, 0x18, 0x90, 0x00, 0x98, 0x00, - 0x23, 0x39, 0x06, 0x5b, 0x62, 0x18, 0x20, 0x39, - 0x06, 0x40, 0x69, 0xc0, 0x90, 0x02, 0x98, 0x02, - 0x08, 0x40, 0x00, 0x40, 0x90, 0x02, 0x20, 0x39, - 0x06, 0x40, 0x6a, 0xc0, 0x90, 0x00, 0x98, 0x00, - 0x23, 0x1c, 0x43, 0xdb, 0x40, 0x18, 0x90, 0x00, - 0x20, 0x39, 0x06, 0x40, 0x6b, 0x80, 0x90, 0x03, - 0x98, 0x03, 0x23, 0x10, 0x43, 0xdb, 0x40, 0x18, - 0x90, 0x03, 0x20, 0x39, 0x06, 0x40, 0x6b, 0xc0, - 0x90, 0x01, 0x98, 0x01, 0x09, 0x00, 0x01, 0x00, - 0x90, 0x01, 0x48, 0x4a, 0x40, 0x38, 0xd0, 0x45, - 0x20, 0x01, 0x04, 0x00, 0x40, 0x38, 0xd0, 0x03, - 0x98, 0x02, 0x23, 0x01, 0x43, 0x18, 0x90, 0x02, - 0x20, 0x01, 0x05, 0xc0, 0x40, 0x38, 0xd0, 0x03, - 0x98, 0x00, 0x23, 0x10, 0x43, 0x18, 0x90, 0x00, - 0x20, 0x07, 0x04, 0x40, 0x40, 0x38, 0x23, 0x01, - 0x04, 0x5b, 0x42, 0x98, 0xd0, 0x08, 0x23, 0x01, - 0x04, 0x9b, 0x42, 0x98, 0xd0, 0x07, 0x23, 0x01, - 0x04, 0xdb, 0x42, 0x98, 0xd0, 0x08, 0xe0, 0x0c, - 0x98, 0x00, 0x90, 0x00, 0xe0, 0x0a, 0x98, 0x00, - 0x23, 0x04, 0x43, 0x18, 0x90, 0x00, 0xe0, 0x05, - 0x98, 0x00, 0x23, 0x0c, 0x43, 0x18, 0x90, 0x00, - 0xe0, 0x00, 0xe7, 0xff, 0x20, 0x01, 0x05, 0x80, - 0x40, 0x38, 0xd0, 0x03, 0x98, 0x03, 0x23, 0x10, - 0x43, 0x18, 0x90, 0x03, 0x20, 0x01, 0x05, 0x00, - 0x40, 0x38, 0xd0, 0x03, 0x98, 0x01, 0x23, 0x08, - 0x43, 0x18, 0x90, 0x01, 0x20, 0x01, 0x05, 0x40, - 0x40, 0x38, 0xd0, 0x03, 0x98, 0x01, 0x23, 0x07, - 0x43, 0x18, 0x90, 0x01, 0x98, 0x03, 0x23, 0x39, - 0x06, 0x5b, 0x63, 0x98, 0x98, 0x02, 0x23, 0x39, - 0x06, 0x5b, 0x61, 0xd8, 0x98, 0x01, 0x23, 0x39, - 0x06, 0x5b, 0x63, 0xd8, 0x98, 0x00, 0x23, 0x39, - 0x06, 0x5b, 0x62, 0xd8, 0x20, 0x39, 0x06, 0x40, - 0x68, 0x80, 0x90, 0x03, 0x98, 0x03, 0x08, 0x80, - 0x00, 0x80, 0x90, 0x03, 0x0f, 0x38, 0x07, 0x00, - 0xd0, 0x26, 0x20, 0x01, 0x07, 0x00, 0x40, 0x38, - 0x23, 0x01, 0x07, 0x1b, 0x42, 0x98, 0xd1, 0x04, - 0x98, 0x03, 0x23, 0x02, 0x43, 0x18, 0x90, 0x03, - 0xe0, 0x07, 0x20, 0x00, 0x42, 0x80, 0xd1, 0x04, - 0x98, 0x03, 0x23, 0x02, 0x43, 0xdb, 0x40, 0x18, - 0x90, 0x03, 0x20, 0x01, 0x07, 0x40, 0x40, 0x38, - 0x23, 0x01, 0x07, 0x5b, 0x42, 0x98, 0xd1, 0x04, - 0x98, 0x03, 0x23, 0x01, 0x43, 0x18, 0x90, 0x03, - 0xe0, 0x06, 0x20, 0x00, 0x42, 0x80, 0xd1, 0x03, - 0x98, 0x03, 0x08, 0x40, 0x00, 0x40, 0x90, 0x03, - 0x98, 0x03, 0x23, 0x39, 0x06, 0x5b, 0x60, 0x98, - 0x20, 0x00, 0xb0, 0x04, 0xe6, 0xc1, 0xb0, 0x04, - 0xe6, 0xbf, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, - 0x48, 0x02, 0x69, 0xc0, 0x06, 0x00, 0x16, 0x00, - 0x47, 0x70, 0xe7, 0xfd, 0x72, 0x00, 0x01, 0x00, - 0xb5, 0xf7, 0x1c, 0x04, 0x1c, 0x0f, 0x06, 0x23, - 0x16, 0x18, 0x06, 0x3b, 0x16, 0x19, 0x9b, 0x02, - 0x06, 0x1a, 0x0e, 0x12, 0x2a, 0x00, 0xd1, 0x0b, - 0x23, 0x39, 0x06, 0x5b, 0x60, 0xd8, 0x23, 0x39, - 0x06, 0x5b, 0x61, 0x19, 0x4d, 0x0b, 0x68, 0x2e, - 0x23, 0x01, 0x43, 0x33, 0x60, 0x2b, 0xe0, 0x0c, - 0x2a, 0x01, 0xd1, 0x0a, 0x23, 0x39, 0x06, 0x5b, - 0x61, 0x58, 0x23, 0x39, 0x06, 0x5b, 0x61, 0x99, - 0x4d, 0x04, 0x68, 0x2e, 0x23, 0x02, 0x43, 0x33, - 0x60, 0x2b, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x72, 0x00, 0x00, 0x08, - 0xb4, 0x90, 0x1c, 0x01, 0x20, 0x92, 0x4b, 0x4b, - 0x60, 0x18, 0x20, 0x92, 0x4b, 0x4a, 0x60, 0x18, - 0x20, 0x10, 0x4b, 0x4a, 0x60, 0x18, 0x20, 0x00, - 0x4b, 0x48, 0x60, 0x58, 0x48, 0x48, 0x4b, 0x47, - 0x60, 0x98, 0x22, 0x00, 0x2a, 0x10, 0xdb, 0x02, - 0xe0, 0x07, 0x32, 0x01, 0xe7, 0xfa, 0x20, 0x00, - 0x43, 0xc0, 0x00, 0x93, 0x4c, 0x42, 0x50, 0xe0, - 0xe7, 0xf7, 0x20, 0x00, 0x43, 0xc0, 0x00, 0x93, - 0x4c, 0x3f, 0x50, 0xe0, 0x22, 0x00, 0x2a, 0x08, - 0xdb, 0x02, 0xe0, 0x08, 0x32, 0x01, 0xe7, 0xfa, - 0x20, 0x00, 0x43, 0xc0, 0x00, 0x94, 0x4b, 0x3b, - 0x18, 0xe3, 0x64, 0x18, 0xe7, 0xf6, 0x22, 0x00, - 0x2a, 0x20, 0xdb, 0x02, 0xe0, 0x08, 0x32, 0x01, - 0xe7, 0xfa, 0x20, 0x00, 0x43, 0xc0, 0x00, 0x94, - 0x4b, 0x35, 0x18, 0xe3, 0x60, 0x18, 0xe7, 0xf6, - 0x22, 0x00, 0x2a, 0x19, 0xdb, 0x02, 0xe0, 0x06, - 0x32, 0x01, 0xe7, 0xfa, 0x20, 0x00, 0x00, 0x93, - 0x4c, 0x30, 0x50, 0xe0, 0xe7, 0xf8, 0x20, 0x00, - 0x4b, 0x2f, 0x60, 0x18, 0x20, 0x39, 0x06, 0x40, - 0x69, 0xc0, 0x27, 0x18, 0x40, 0x07, 0x2f, 0x00, - 0xd0, 0x03, 0x48, 0x2c, 0x4b, 0x2c, 0x60, 0x18, - 0xe0, 0x03, 0x20, 0xff, 0x30, 0xe0, 0x4b, 0x2a, - 0x60, 0x18, 0x20, 0x00, 0x4b, 0x29, 0x60, 0x18, - 0x20, 0x00, 0x4b, 0x28, 0x60, 0x58, 0x48, 0x28, - 0x4b, 0x26, 0x60, 0x98, 0x48, 0x24, 0x68, 0x00, - 0x4b, 0x24, 0x60, 0xd8, 0x48, 0x25, 0x60, 0x01, - 0x20, 0x0d, 0x06, 0xc0, 0x61, 0xc1, 0x20, 0x05, - 0x02, 0x00, 0x23, 0x0d, 0x06, 0xdb, 0x60, 0x18, - 0x48, 0x21, 0x23, 0x0d, 0x06, 0xdb, 0x60, 0x58, - 0x48, 0x1f, 0x4b, 0x16, 0x63, 0x98, 0x20, 0x00, - 0x23, 0x0d, 0x06, 0xdb, 0x60, 0x98, 0x20, 0x00, - 0x23, 0x0d, 0x06, 0xdb, 0x61, 0x18, 0x48, 0x1b, - 0x23, 0x0d, 0x06, 0xdb, 0x61, 0x98, 0x20, 0x01, - 0x23, 0x0d, 0x06, 0xdb, 0x60, 0xd8, 0x48, 0x18, - 0x23, 0x0d, 0x06, 0xdb, 0x63, 0x18, 0x48, 0x17, - 0x23, 0x0d, 0x06, 0xdb, 0x63, 0x58, 0x20, 0x00, - 0x4b, 0x15, 0x60, 0x18, 0x48, 0x11, 0x4b, 0x15, - 0x60, 0x18, 0x20, 0x00, 0xbc, 0x90, 0x47, 0x70, - 0xe7, 0xfc, 0x00, 0x00, 0x2e, 0x08, 0xba, 0x30, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xbb, 0x00, - 0x2e, 0x08, 0xba, 0x38, 0x68, 0x00, 0x0d, 0x00, - 0x68, 0x00, 0x04, 0x00, 0x2e, 0x08, 0xb9, 0xc4, - 0x2e, 0x08, 0xba, 0x28, 0x00, 0x00, 0x02, 0x3f, - 0x2e, 0x08, 0x9d, 0xec, 0x2e, 0x08, 0xbb, 0x0c, - 0x00, 0x00, 0x02, 0xcf, 0x2e, 0x08, 0x9d, 0xf0, - 0x00, 0xf0, 0x29, 0x6d, 0x3f, 0xff, 0xff, 0xff, - 0x00, 0x80, 0x10, 0x80, 0x00, 0x80, 0xeb, 0x80, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0x9b, 0xb8, - 0xb5, 0xff, 0xb0, 0x85, 0x20, 0x39, 0x06, 0x40, - 0x69, 0xc0, 0x23, 0x18, 0x40, 0x18, 0x90, 0x00, - 0x98, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x48, 0x5a, - 0x4b, 0x5a, 0x60, 0x18, 0xe0, 0x03, 0x20, 0xff, - 0x30, 0xe0, 0x4b, 0x58, 0x60, 0x18, 0x9c, 0x06, - 0x9f, 0x07, 0x22, 0x00, 0x21, 0x00, 0x98, 0x05, - 0x38, 0x0c, 0x28, 0x06, 0xd2, 0x0c, 0xa3, 0x02, - 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x04, 0x03, 0x06, 0x04, 0x03, 0x06, 0x32, 0x01, - 0x32, 0x01, 0xe0, 0x02, 0x3a, 0x01, 0xe0, 0x00, - 0xe7, 0xff, 0x98, 0x05, 0x38, 0x0b, 0x28, 0x08, - 0xd2, 0x15, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x0a, 0x04, 0x04, 0x04, - 0x0a, 0x0a, 0x0a, 0x04, 0x25, 0x2d, 0x01, 0x2d, - 0x48, 0x44, 0x68, 0x00, 0x1c, 0x46, 0xe0, 0x0e, - 0x48, 0x43, 0x6c, 0x40, 0x1c, 0x05, 0x48, 0x43, - 0x68, 0x40, 0x1c, 0x06, 0xe0, 0x07, 0x21, 0xff, - 0x1c, 0x08, 0xb0, 0x05, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xe7, 0xff, 0x2d, 0x00, - 0xd0, 0x01, 0x2e, 0x00, 0xd1, 0x04, 0x25, 0x2d, - 0x01, 0x2d, 0x48, 0x38, 0x68, 0x00, 0x1c, 0x46, - 0x29, 0xff, 0xd1, 0x02, 0x1c, 0x08, 0xb0, 0x05, - 0xe7, 0xec, 0x1e, 0x68, 0x90, 0x02, 0x1e, 0x70, - 0x90, 0x01, 0x23, 0x01, 0x42, 0xda, 0xd1, 0x08, - 0x42, 0x50, 0x40, 0x85, 0x1c, 0x2b, 0x1e, 0x5d, - 0x42, 0x50, 0x40, 0x86, 0x1c, 0x33, 0x1e, 0x5e, - 0xe0, 0x05, 0x41, 0x15, 0x1c, 0x28, 0x1e, 0x45, - 0x41, 0x16, 0x1c, 0x30, 0x1e, 0x46, 0x07, 0xe0, - 0x0f, 0xc0, 0xd0, 0x02, 0x21, 0x80, 0x08, 0x64, - 0x00, 0x64, 0x07, 0xf8, 0x0f, 0xc0, 0xd0, 0x02, - 0x21, 0x80, 0x08, 0x7f, 0x00, 0x7f, 0x19, 0x60, - 0x90, 0x04, 0x19, 0xb8, 0x90, 0x03, 0x2c, 0x00, - 0xda, 0x01, 0x21, 0x80, 0x24, 0x00, 0x98, 0x04, - 0x28, 0x01, 0xda, 0x02, 0x21, 0x80, 0x20, 0x01, - 0x90, 0x04, 0x4b, 0x1f, 0x42, 0x9c, 0xdb, 0x01, - 0x21, 0x80, 0x4c, 0x1e, 0x98, 0x04, 0x4b, 0x1c, - 0x42, 0x98, 0xdd, 0x02, 0x21, 0x80, 0x48, 0x1a, - 0x90, 0x04, 0x2f, 0x00, 0xda, 0x01, 0x21, 0x80, - 0x27, 0x00, 0x98, 0x03, 0x28, 0x01, 0xda, 0x02, - 0x21, 0x80, 0x20, 0x01, 0x90, 0x03, 0x48, 0x11, - 0x68, 0x00, 0x42, 0x87, 0xd3, 0x03, 0x21, 0x80, - 0x48, 0x0e, 0x68, 0x00, 0x1e, 0x47, 0x98, 0x03, - 0x4b, 0x0c, 0x68, 0x1b, 0x42, 0x98, 0xd9, 0x03, - 0x21, 0x80, 0x48, 0x0a, 0x68, 0x00, 0x90, 0x03, - 0x9b, 0x08, 0x60, 0x1c, 0x9b, 0x08, 0x60, 0x5f, - 0x98, 0x04, 0x9b, 0x08, 0x60, 0x98, 0x98, 0x03, - 0x9b, 0x08, 0x60, 0xd8, 0x1c, 0x08, 0xb0, 0x05, - 0xe7, 0x88, 0xb0, 0x05, 0xe7, 0x86, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x3f, 0x2e, 0x08, 0x9d, 0xec, - 0xcc, 0x00, 0x02, 0x00, 0xcc, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x02, 0xcf, 0x00, 0x00, 0x02, 0xce, - 0xb5, 0xf0, 0x1c, 0x07, 0x1c, 0x0c, 0xb0, 0x81, - 0x2c, 0x0b, 0xdb, 0x19, 0x2c, 0x12, 0xdc, 0x17, - 0x68, 0xbe, 0x68, 0xf9, 0x91, 0x00, 0x68, 0x7a, - 0x1c, 0x3b, 0x68, 0x39, 0x1c, 0x20, 0xf7, 0xff, - 0xff, 0x23, 0x1c, 0x05, 0x68, 0xb8, 0x42, 0xb0, - 0xd0, 0x00, 0x25, 0x80, 0x68, 0xf8, 0x99, 0x00, - 0x42, 0x88, 0xd0, 0x00, 0x25, 0x80, 0x1c, 0x28, - 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x25, 0x00, 0x68, 0x38, 0x28, 0x00, 0xda, 0x02, - 0x25, 0x80, 0x20, 0x00, 0x60, 0x38, 0x68, 0x78, - 0x28, 0x00, 0xda, 0x02, 0x25, 0x80, 0x20, 0x00, - 0x60, 0x78, 0x68, 0x38, 0x07, 0xc0, 0x0f, 0xc0, - 0xd0, 0x04, 0x25, 0x80, 0x68, 0x38, 0x08, 0x40, - 0x00, 0x40, 0x60, 0x38, 0x68, 0xb8, 0x07, 0xc0, - 0x0f, 0xc0, 0xd1, 0x09, 0x25, 0x80, 0x68, 0xb8, - 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x01, 0x68, 0xb8, - 0xe0, 0x01, 0x68, 0xb8, 0x38, 0x01, 0x60, 0xb8, - 0x68, 0xb8, 0x68, 0x39, 0x42, 0x88, 0xdc, 0x03, - 0x25, 0x80, 0x68, 0x38, 0x30, 0x01, 0x60, 0xb8, - 0x68, 0x78, 0x68, 0xf9, 0x42, 0x88, 0xdb, 0x03, - 0x25, 0x80, 0x68, 0x78, 0x30, 0x01, 0x60, 0xf8, - 0x1c, 0x28, 0xb0, 0x01, 0xe7, 0xc5, 0xb0, 0x01, - 0xe7, 0xc3, 0x1c, 0x02, 0x21, 0x18, 0xe0, 0x00, - 0x31, 0x01, 0x1c, 0x08, 0x47, 0x70, 0xe7, 0xfd, - 0xb4, 0xf0, 0x1c, 0x07, 0x1c, 0x0a, 0xb0, 0x81, - 0x68, 0xb8, 0x68, 0x3b, 0x1a, 0xc0, 0x1c, 0x46, - 0x68, 0xf8, 0x68, 0x7b, 0x1a, 0xc0, 0x30, 0x01, - 0x90, 0x00, 0x00, 0x90, 0x4b, 0x15, 0x58, 0x1c, - 0x98, 0x00, 0x43, 0x46, 0x1c, 0x35, 0x07, 0xa0, - 0x0f, 0x80, 0x1c, 0x29, 0x40, 0x81, 0x2a, 0x0b, - 0xdb, 0x01, 0x2a, 0x12, 0xdd, 0x01, 0x2a, 0x13, - 0xd1, 0x01, 0x21, 0x00, 0xe0, 0x0a, 0x2a, 0x09, - 0xd0, 0x01, 0x2a, 0x0a, 0xd1, 0x03, 0x00, 0x69, - 0x19, 0x49, 0x00, 0xc9, 0xe0, 0x02, 0x2a, 0x08, - 0xd1, 0x00, 0x01, 0x29, 0x20, 0x04, 0x40, 0x20, - 0xd0, 0x00, 0x08, 0x49, 0x09, 0x4c, 0x06, 0xc8, - 0x0e, 0xc0, 0xd0, 0x00, 0x34, 0x01, 0x1c, 0x20, - 0xb0, 0x01, 0xbc, 0xf0, 0x47, 0x70, 0xb0, 0x01, - 0xe7, 0xfb, 0x00, 0x00, 0x2e, 0x03, 0xa8, 0x78, - 0xb4, 0x80, 0x23, 0x00, 0x22, 0x01, 0x21, 0x00, - 0x29, 0x08, 0xdb, 0x02, 0xe0, 0x09, 0x31, 0x01, - 0xe7, 0xfa, 0x00, 0x88, 0x4f, 0x05, 0x58, 0x38, - 0x28, 0x00, 0xd0, 0x00, 0x43, 0x13, 0x00, 0x52, - 0xe7, 0xf5, 0x1c, 0x18, 0xbc, 0x80, 0x47, 0x70, - 0xe7, 0xfc, 0x00, 0x00, 0x2e, 0x08, 0xb9, 0xc4, - 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x81, 0x20, 0x39, - 0x06, 0x40, 0x69, 0xc0, 0x23, 0x18, 0x40, 0x18, - 0x90, 0x00, 0x98, 0x00, 0x28, 0x00, 0xd0, 0x03, - 0x48, 0x32, 0x49, 0x33, 0x60, 0x08, 0xe0, 0x03, - 0x20, 0xff, 0x30, 0xe0, 0x49, 0x30, 0x60, 0x08, - 0x24, 0x00, 0x99, 0x01, 0x48, 0x2f, 0xf7, 0xfc, - 0xfa, 0x1f, 0x48, 0x2e, 0x68, 0x00, 0x28, 0x00, - 0xda, 0x03, 0x20, 0x00, 0x49, 0x2b, 0x60, 0x08, - 0x24, 0x80, 0x48, 0x2a, 0x68, 0x40, 0x28, 0x00, - 0xda, 0x03, 0x20, 0x00, 0x49, 0x27, 0x60, 0x48, - 0x24, 0x80, 0x48, 0x26, 0x68, 0x80, 0x4b, 0x26, - 0x42, 0x98, 0xdd, 0x03, 0x48, 0x24, 0x49, 0x23, - 0x60, 0x88, 0x24, 0x80, 0x48, 0x21, 0x68, 0xc0, - 0x49, 0x1f, 0x68, 0x09, 0x42, 0x88, 0xd9, 0x04, - 0x48, 0x1d, 0x68, 0x00, 0x49, 0x1d, 0x60, 0xc8, - 0x24, 0x80, 0x48, 0x1e, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x27, 0x2f, 0x01, 0xd1, 0x25, 0x48, 0x19, - 0x68, 0x06, 0x48, 0x18, 0x68, 0x45, 0x23, 0xff, - 0x33, 0x68, 0x42, 0x9e, 0xdd, 0x01, 0x26, 0xff, - 0x36, 0x68, 0x48, 0x13, 0x68, 0x00, 0x08, 0x40, - 0x42, 0xa8, 0xd2, 0x02, 0x48, 0x10, 0x68, 0x00, - 0x08, 0x45, 0x48, 0x13, 0x49, 0x13, 0x65, 0x48, - 0x48, 0x13, 0x43, 0x70, 0x23, 0x01, 0x04, 0x1b, - 0x18, 0xc0, 0x14, 0x40, 0x49, 0x0f, 0x65, 0x88, - 0x20, 0x00, 0x49, 0x0e, 0x65, 0xc8, 0x48, 0x0d, - 0x66, 0x05, 0x1c, 0x38, 0x21, 0x00, 0xf7, 0xfe, - 0xff, 0x13, 0x1c, 0x20, 0xb0, 0x01, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x01, - 0xe7, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3f, - 0x2e, 0x08, 0x9d, 0xec, 0x2e, 0x08, 0xbb, 0x0c, - 0x00, 0x00, 0x02, 0xcf, 0x2e, 0x08, 0xba, 0x28, - 0x00, 0x00, 0x07, 0xfa, 0xcc, 0x00, 0x00, 0x00, - 0x00, 0x0b, 0x60, 0xb6, 0xb5, 0xf0, 0x1c, 0x04, - 0x1c, 0x0f, 0xb0, 0x81, 0x1c, 0x26, 0x69, 0x30, - 0x90, 0x00, 0x98, 0x00, 0x28, 0x13, 0xd1, 0x04, - 0x20, 0x75, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0xf5, 0x68, 0x38, 0x08, 0x40, - 0x00, 0x40, 0x60, 0x38, 0x68, 0x78, 0x08, 0x40, - 0x00, 0x40, 0x60, 0x78, 0x68, 0xb8, 0x07, 0xc0, - 0x0f, 0xc0, 0xd1, 0x02, 0x68, 0xb8, 0x38, 0x01, - 0x60, 0xb8, 0x68, 0xf8, 0x07, 0xc0, 0x0f, 0xc0, - 0xd1, 0x02, 0x68, 0xf8, 0x38, 0x01, 0x60, 0xf8, - 0x1d, 0xf0, 0x30, 0x49, 0x1c, 0x39, 0xf7, 0xfc, - 0xf9, 0x8b, 0x48, 0x1c, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x2d, 0x19, 0xd3, 0x01, 0x20, 0x01, - 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2d, 0x08, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, 0xb0, 0x01, - 0xe7, 0xcc, 0x49, 0x13, 0x20, 0x91, 0xf0, 0x14, - 0xff, 0x47, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, - 0xf0, 0x05, 0xfa, 0xf4, 0xe7, 0xf5, 0x00, 0xa8, - 0x49, 0x0e, 0x58, 0x08, 0x42, 0xa0, 0xd0, 0x05, - 0x20, 0x92, 0x49, 0x0b, 0x60, 0x08, 0x20, 0xff, - 0xb0, 0x01, 0xe7, 0xb7, 0x48, 0x0a, 0x68, 0x00, - 0x42, 0xa0, 0xd1, 0x03, 0x1c, 0x39, 0x1c, 0x20, - 0xf0, 0x00, 0xf8, 0x10, 0x20, 0x92, 0x49, 0x04, - 0x60, 0x08, 0x20, 0x00, 0xb0, 0x01, 0xe7, 0xa9, - 0xb0, 0x01, 0xe7, 0xa7, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x2c, 0x2e, 0x08, 0xb9, 0xc4, - 0x2e, 0x08, 0xba, 0x28, 0xb5, 0xf3, 0x1c, 0x0f, - 0xb0, 0x9b, 0x20, 0x39, 0x06, 0x40, 0x69, 0xc0, - 0x23, 0x18, 0x40, 0x18, 0x90, 0x01, 0x98, 0x01, - 0x28, 0x00, 0xd0, 0x03, 0x48, 0xf8, 0x49, 0xf9, - 0x60, 0x08, 0xe0, 0x03, 0x20, 0xff, 0x30, 0xe0, - 0x49, 0xf6, 0x60, 0x08, 0x20, 0xff, 0x30, 0x01, - 0x90, 0x06, 0x98, 0x1b, 0x90, 0x1a, 0x98, 0x1a, - 0x69, 0x05, 0x98, 0x1a, 0x68, 0xc0, 0x90, 0x19, - 0x48, 0xf1, 0x68, 0x00, 0x99, 0x1b, 0x42, 0x88, - 0xd1, 0x73, 0x20, 0x02, 0x90, 0x08, 0x2d, 0x0c, - 0xd0, 0x01, 0x2d, 0x0f, 0xd1, 0x02, 0x20, 0x04, - 0x90, 0x08, 0xe0, 0x0c, 0x2d, 0x0d, 0xd0, 0x01, - 0x2d, 0x10, 0xd1, 0x02, 0x20, 0x08, 0x90, 0x08, - 0xe0, 0x05, 0x2d, 0x0e, 0xd0, 0x01, 0x2d, 0x11, - 0xd1, 0x01, 0x20, 0x01, 0x90, 0x08, 0x68, 0xf8, - 0x68, 0x79, 0x1a, 0x40, 0x1c, 0x44, 0x2d, 0x0b, - 0xd0, 0x05, 0x2d, 0x0f, 0xd0, 0x03, 0x2d, 0x10, - 0xd0, 0x01, 0x2d, 0x11, 0xd1, 0x11, 0x48, 0xdf, - 0x6c, 0x40, 0x1c, 0x06, 0x48, 0xdd, 0x6c, 0x81, - 0x91, 0x07, 0x2e, 0x00, 0xd0, 0x02, 0x99, 0x07, - 0x29, 0x00, 0xd1, 0x05, 0x26, 0x2d, 0x01, 0x36, - 0x48, 0xd6, 0x68, 0x00, 0x1c, 0x41, 0x91, 0x07, - 0xe0, 0x05, 0x26, 0x2d, 0x01, 0x36, 0x48, 0xd3, - 0x68, 0x00, 0x1c, 0x41, 0x91, 0x07, 0x49, 0xd4, - 0xa8, 0x15, 0xf7, 0xfc, 0xf8, 0xe9, 0x98, 0x17, - 0x1e, 0x71, 0x42, 0x88, 0xdd, 0x01, 0x1e, 0x70, - 0x90, 0x17, 0x98, 0x18, 0x99, 0x07, 0x39, 0x01, - 0x42, 0x88, 0xdd, 0x02, 0x99, 0x07, 0x1e, 0x48, - 0x90, 0x18, 0x98, 0x18, 0x99, 0x16, 0x1a, 0x40, - 0x00, 0x40, 0x1c, 0x81, 0x98, 0x08, 0xf0, 0x06, - 0xfb, 0xd3, 0x90, 0x0a, 0x98, 0x0a, 0x42, 0x84, - 0xdd, 0x00, 0x9c, 0x0a, 0x48, 0xc5, 0x6f, 0x00, - 0x90, 0x02, 0x20, 0x00, 0x90, 0x05, 0x98, 0x02, - 0x28, 0x02, 0xd0, 0x02, 0x98, 0x02, 0x28, 0x03, - 0xd1, 0x3a, 0x48, 0xc1, 0x6b, 0x00, 0x90, 0x04, - 0x48, 0xbe, 0x6e, 0xc1, 0x91, 0x03, 0x98, 0x04, - 0x99, 0x03, 0x42, 0x88, 0xdd, 0x21, 0x20, 0xc0, - 0x90, 0x06, 0x1d, 0x20, 0x28, 0x00, 0xda, 0x02, - 0xe0, 0x00, 0xe1, 0x8e, 0x30, 0x07, 0x10, 0xc0, - 0x90, 0x05, 0x98, 0x04, 0x28, 0x03, 0xd0, 0x14, - 0x99, 0x03, 0x29, 0x03, 0xd1, 0x07, 0x20, 0xcd, - 0x90, 0x06, 0x1d, 0x61, 0x20, 0x0a, 0xf0, 0x06, - 0xfb, 0xa3, 0x90, 0x05, 0xe0, 0x09, 0x98, 0x02, - 0x28, 0x02, 0xd1, 0x06, 0x20, 0x9a, 0x90, 0x06, - 0x1c, 0xa1, 0x20, 0x05, 0xf0, 0x06, 0xfb, 0x98, - 0x90, 0x05, 0x98, 0x06, 0x28, 0x9a, 0xd0, 0x02, - 0x98, 0x06, 0x28, 0xcd, 0xd1, 0x08, 0x2d, 0x0e, - 0xd0, 0x01, 0x2d, 0x11, 0xd1, 0x04, 0x20, 0x00, - 0x90, 0x05, 0x20, 0xff, 0x30, 0x01, 0x90, 0x06, - 0x2d, 0x12, 0xd1, 0x0b, 0x48, 0x9d, 0x68, 0x00, - 0x30, 0x01, 0x42, 0xa0, 0xd1, 0x06, 0x68, 0x78, - 0x28, 0x00, 0xd1, 0x03, 0x20, 0x01, 0x49, 0x9f, - 0x63, 0x48, 0xe0, 0x02, 0x20, 0x00, 0x49, 0x9d, - 0x63, 0x48, 0x98, 0x0a, 0x99, 0x06, 0x43, 0x48, - 0x28, 0x00, 0xda, 0x00, 0x30, 0xff, 0x12, 0x00, - 0x42, 0xa0, 0xdd, 0x04, 0x20, 0x00, 0x90, 0x05, - 0x20, 0xff, 0x30, 0x01, 0x90, 0x06, 0x68, 0x78, - 0x99, 0x05, 0x18, 0x40, 0x60, 0x78, 0x1c, 0x39, - 0xa8, 0x11, 0xf7, 0xfc, 0xf8, 0x61, 0x1c, 0x29, - 0xa8, 0x11, 0xf7, 0xff, 0xfd, 0x71, 0x98, 0x12, - 0x49, 0x88, 0x68, 0x09, 0x39, 0x01, 0x42, 0x88, - 0xd1, 0x00, 0x24, 0x00, 0x99, 0x15, 0x91, 0x0d, - 0x98, 0x16, 0x90, 0x0f, 0x21, 0x00, 0x91, 0x10, - 0x68, 0x38, 0x28, 0x00, 0xda, 0x08, 0x68, 0x38, - 0x99, 0x08, 0x43, 0x48, 0x42, 0x41, 0x29, 0x00, - 0xda, 0x00, 0x31, 0x01, 0x10, 0x49, 0x91, 0x10, - 0x68, 0x78, 0x28, 0x00, 0xda, 0x0d, 0x68, 0x78, - 0x99, 0x08, 0x43, 0x48, 0x28, 0x00, 0xda, 0x00, - 0x30, 0x01, 0x10, 0x40, 0x02, 0x01, 0x98, 0x06, - 0xf0, 0x06, 0xfb, 0x36, 0x99, 0x0f, 0x1a, 0x08, - 0x90, 0x0f, 0x98, 0x18, 0x99, 0x0f, 0x42, 0x88, - 0xdc, 0x02, 0x98, 0x18, 0x30, 0x01, 0x90, 0x0f, - 0x98, 0x17, 0x99, 0x0d, 0x1a, 0x40, 0x30, 0x01, - 0x90, 0x0e, 0x98, 0x18, 0x99, 0x0f, 0x1a, 0x40, - 0x30, 0x01, 0x90, 0x09, 0x98, 0x09, 0x00, 0x41, - 0x98, 0x08, 0xf0, 0x06, 0xfb, 0x1d, 0x99, 0x06, - 0x43, 0x48, 0x28, 0x00, 0xda, 0x00, 0x30, 0xff, - 0x12, 0x00, 0x90, 0x09, 0x68, 0xb8, 0x68, 0x39, - 0x1a, 0x40, 0x1c, 0x41, 0x91, 0x0c, 0x98, 0x17, - 0x99, 0x15, 0x1a, 0x40, 0x00, 0x40, 0x1c, 0x81, - 0x98, 0x08, 0xf0, 0x06, 0xfb, 0x09, 0x90, 0x0b, - 0x98, 0x0b, 0x4b, 0x65, 0x40, 0x18, 0x90, 0x0b, - 0x98, 0x0b, 0x99, 0x08, 0x43, 0x48, 0x28, 0x00, - 0xda, 0x00, 0x30, 0x01, 0x10, 0x40, 0x90, 0x0e, - 0x99, 0x0c, 0x98, 0x0b, 0x42, 0x81, 0xdd, 0x01, - 0x98, 0x0b, 0x90, 0x0c, 0x99, 0x0c, 0x4b, 0x5c, - 0x40, 0x19, 0x91, 0x0c, 0x98, 0x0c, 0x28, 0x00, - 0xdd, 0x05, 0x68, 0x38, 0x99, 0x0c, 0x18, 0x40, - 0x38, 0x01, 0x90, 0x13, 0xe0, 0x02, 0x68, 0x38, - 0x30, 0x01, 0x90, 0x13, 0x98, 0x13, 0x28, 0x01, - 0xda, 0x01, 0x20, 0x01, 0x90, 0x13, 0x98, 0x13, - 0x4b, 0x52, 0x42, 0x98, 0xdd, 0x01, 0x48, 0x51, - 0x90, 0x13, 0x99, 0x06, 0x43, 0x4c, 0x1c, 0x20, - 0x28, 0x00, 0xda, 0x00, 0x30, 0xff, 0x12, 0x04, - 0x98, 0x0a, 0x42, 0x84, 0xdd, 0x00, 0x9c, 0x0a, - 0x2c, 0x02, 0xda, 0x00, 0x24, 0x02, 0x68, 0x78, - 0x19, 0x00, 0x38, 0x01, 0x90, 0x14, 0x98, 0x14, - 0x28, 0x01, 0xda, 0x01, 0x20, 0x01, 0x90, 0x14, - 0x98, 0x14, 0x49, 0x3c, 0x68, 0x09, 0x42, 0x88, - 0xd9, 0x02, 0x48, 0x3a, 0x68, 0x00, 0x90, 0x14, - 0x98, 0x12, 0x49, 0x38, 0x68, 0x09, 0x39, 0x01, - 0x42, 0x88, 0xd9, 0x03, 0x48, 0x35, 0x68, 0x00, - 0x38, 0x01, 0x90, 0x12, 0x98, 0x09, 0x28, 0x04, - 0xdb, 0x01, 0x2c, 0x04, 0xda, 0x01, 0x20, 0x00, - 0x90, 0x0e, 0x98, 0x0e, 0x28, 0x03, 0xdb, 0x02, - 0x98, 0x0c, 0x28, 0x04, 0xda, 0x09, 0x20, 0x00, - 0x90, 0x0e, 0x48, 0x35, 0x90, 0x11, 0x48, 0x33, - 0x90, 0x13, 0x20, 0x00, 0x90, 0x12, 0x20, 0x01, - 0x90, 0x14, 0x21, 0x00, 0x91, 0x00, 0x98, 0x08, - 0x28, 0x01, 0xd1, 0x16, 0x98, 0x0e, 0x99, 0x10, - 0x1a, 0x40, 0x00, 0x40, 0x4b, 0x2b, 0x42, 0x98, - 0xdd, 0x0b, 0x98, 0x0e, 0x99, 0x10, 0x1a, 0x40, - 0x00, 0x40, 0x23, 0x2d, 0x01, 0x1b, 0x1a, 0xc1, - 0x29, 0x00, 0xda, 0x00, 0x31, 0x01, 0x10, 0x49, - 0x91, 0x00, 0x98, 0x0e, 0x42, 0xb0, 0xdd, 0x00, - 0x96, 0x0e, 0x99, 0x10, 0x42, 0xb1, 0xdd, 0x00, - 0x96, 0x10, 0x1c, 0x30, 0x21, 0x01, 0x07, 0x49, - 0xf0, 0x06, 0xfa, 0x76, 0x99, 0x0d, 0x43, 0x48, - 0x23, 0x01, 0x04, 0x1b, 0x18, 0xc0, 0x14, 0x40, - 0x49, 0x1c, 0x65, 0x88, 0x1c, 0x30, 0x21, 0x01, - 0x07, 0x49, 0xf0, 0x06, 0xfa, 0x69, 0x99, 0x10, - 0x43, 0x48, 0x23, 0x01, 0x04, 0x1b, 0x18, 0xc0, - 0x14, 0x40, 0x49, 0x16, 0x65, 0xc8, 0x1c, 0x30, - 0x21, 0x01, 0x07, 0x49, 0xf0, 0x06, 0xfa, 0x5c, - 0x99, 0x0e, 0x43, 0x48, 0x23, 0x01, 0x04, 0x1b, - 0x18, 0xc0, 0x14, 0x40, 0x49, 0x0f, 0x65, 0x48, - 0x99, 0x07, 0x1f, 0x08, 0x99, 0x0f, 0x42, 0x88, - 0xdc, 0x1b, 0x99, 0x07, 0x1f, 0x08, 0xe0, 0x17, - 0x00, 0x00, 0x02, 0x3f, 0x2e, 0x08, 0x9d, 0xec, - 0x2e, 0x08, 0xba, 0x28, 0xcc, 0x00, 0x02, 0x00, - 0x2e, 0x08, 0xbb, 0x0c, 0xcc, 0x00, 0x0f, 0x80, - 0xcc, 0x00, 0x00, 0x80, 0xcc, 0x00, 0x01, 0x00, - 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x02, 0xcf, - 0x00, 0x00, 0x02, 0xce, 0xcc, 0x00, 0x00, 0x00, - 0x90, 0x0f, 0x98, 0x0f, 0x49, 0x0d, 0x66, 0x08, - 0x1c, 0x30, 0x21, 0x01, 0x07, 0x49, 0xf0, 0x06, - 0xfa, 0x2b, 0x99, 0x00, 0x43, 0x48, 0x23, 0x01, - 0x04, 0x1b, 0x18, 0xc0, 0x14, 0x40, 0x49, 0x07, - 0x66, 0x48, 0xa9, 0x11, 0x1c, 0x38, 0xf7, 0xfb, - 0xff, 0x1f, 0x20, 0x00, 0xb0, 0x1b, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x1b, - 0xe7, 0xf9, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0xb4, 0xb0, 0x1c, 0x02, 0x1c, 0x0f, 0x2a, 0x00, - 0xd1, 0x02, 0x20, 0x01, 0xbc, 0xb0, 0x47, 0x70, - 0x2f, 0x01, 0xd1, 0x20, 0x20, 0x00, 0x23, 0x00, - 0x4d, 0x13, 0x62, 0x2b, 0x23, 0x00, 0x4d, 0x12, - 0x62, 0xab, 0x4b, 0x12, 0x68, 0x9b, 0x1c, 0x1c, - 0x4b, 0x11, 0x6e, 0xdb, 0x1c, 0x19, 0x2c, 0x02, - 0xd0, 0x01, 0x29, 0x02, 0xd1, 0x01, 0x20, 0x08, - 0xe0, 0x00, 0x20, 0x07, 0x79, 0x13, 0x2b, 0x00, - 0xd0, 0x01, 0x23, 0x10, 0x43, 0x18, 0x4b, 0x08, - 0x62, 0x58, 0x79, 0x55, 0x23, 0x80, 0x43, 0x2b, - 0x4d, 0x05, 0x62, 0xab, 0xe0, 0x05, 0x48, 0x07, - 0x68, 0x05, 0x23, 0x80, 0x43, 0x9d, 0x1c, 0x2b, - 0x60, 0x03, 0x20, 0x00, 0xe7, 0xd2, 0xe7, 0xd1, - 0x72, 0x00, 0x01, 0x00, 0xcc, 0x00, 0x0c, 0x00, - 0xcc, 0x00, 0x0f, 0x80, 0x72, 0x00, 0x01, 0x28, - 0xb5, 0xff, 0x9f, 0x09, 0xb0, 0x81, 0x98, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, 0x99, 0x02, - 0x06, 0x0c, 0x0e, 0x24, 0x98, 0x03, 0x06, 0x02, - 0x0e, 0x12, 0x9b, 0x04, 0x06, 0x1d, 0x0e, 0x2d, - 0x2f, 0x01, 0xd1, 0x1b, 0x20, 0x00, 0x4b, 0x14, - 0x62, 0x18, 0x20, 0x00, 0x4b, 0x12, 0x62, 0x98, - 0x98, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x01, 0x23, - 0x43, 0x18, 0x06, 0x01, 0x0e, 0x09, 0x48, 0x0e, - 0x62, 0x41, 0x07, 0x50, 0x0f, 0x40, 0x07, 0x6b, - 0x0f, 0x5b, 0x00, 0xdb, 0x43, 0x18, 0x06, 0x01, - 0x0e, 0x09, 0x20, 0x80, 0x43, 0x08, 0x4b, 0x08, - 0x62, 0x98, 0xe0, 0x05, 0x48, 0x07, 0x68, 0x06, - 0x23, 0x80, 0x43, 0x9e, 0x1c, 0x33, 0x60, 0x03, - 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x01, 0xe7, 0xf9, - 0x72, 0x00, 0x01, 0x00, 0x72, 0x00, 0x01, 0x28, - 0xb5, 0xf1, 0x98, 0x00, 0x06, 0x07, 0x0e, 0x3f, - 0xb0, 0x81, 0x2f, 0x1f, 0xdb, 0x05, 0x20, 0xb3, - 0xb0, 0x01, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x48, 0x62, 0x23, 0x80, 0x68, 0x1b, - 0x60, 0x18, 0x48, 0x61, 0x23, 0x80, 0x6b, 0x1b, - 0x60, 0x18, 0x48, 0x60, 0x23, 0x80, 0x6b, 0x5b, - 0x60, 0x18, 0x48, 0x5f, 0x23, 0x80, 0x6b, 0x9b, - 0x60, 0x18, 0x20, 0x01, 0x40, 0xb8, 0x4b, 0x59, - 0x60, 0x18, 0x20, 0x00, 0x4b, 0x57, 0x71, 0x18, - 0x20, 0x00, 0x4b, 0x56, 0x71, 0x58, 0x48, 0x55, - 0x68, 0x00, 0x4b, 0x58, 0x60, 0x58, 0x48, 0x58, - 0x4b, 0x56, 0x60, 0x98, 0x48, 0x57, 0x4b, 0x55, - 0x60, 0xd8, 0x20, 0xff, 0x30, 0x01, 0x4b, 0x53, - 0x62, 0x18, 0x20, 0xff, 0x30, 0x01, 0x4b, 0x51, - 0x62, 0x58, 0x20, 0x03, 0x4b, 0x52, 0x75, 0x18, - 0x20, 0x0e, 0x4b, 0x51, 0x75, 0x58, 0x20, 0x04, - 0x4b, 0x4f, 0x75, 0x98, 0x20, 0x03, 0x4b, 0x4e, - 0x75, 0xd8, 0x20, 0x00, 0x4b, 0x4d, 0x60, 0x18, - 0x20, 0x00, 0x4b, 0x4d, 0x60, 0x18, 0x20, 0x0d, - 0x23, 0x19, 0x06, 0x9b, 0x63, 0x18, 0x22, 0x00, - 0x2a, 0x20, 0xdb, 0x04, 0xe0, 0x21, 0x1c, 0x50, - 0x06, 0x02, 0x0e, 0x12, 0xe7, 0xf8, 0x25, 0x00, - 0x00, 0x93, 0x4e, 0x46, 0x50, 0xf5, 0x25, 0xff, - 0x4b, 0x45, 0x54, 0x9d, 0x01, 0x15, 0x4b, 0x45, - 0x18, 0xec, 0x01, 0x15, 0x4b, 0x44, 0x18, 0xe8, - 0x25, 0x00, 0xc4, 0x20, 0x25, 0x00, 0xc4, 0x20, - 0x25, 0x00, 0xc4, 0x20, 0x25, 0x00, 0xc4, 0x20, - 0x25, 0x00, 0xc0, 0x20, 0x25, 0x00, 0xc0, 0x20, - 0x25, 0x00, 0xc0, 0x20, 0x25, 0x00, 0xc0, 0x20, - 0xe7, 0xdd, 0x21, 0x00, 0x29, 0x20, 0xdb, 0x04, - 0xe0, 0x0b, 0x1c, 0x48, 0x04, 0x01, 0x0c, 0x09, - 0xe7, 0xf8, 0x23, 0x00, 0x00, 0x88, 0x4c, 0x2a, - 0x50, 0x23, 0x23, 0x00, 0x48, 0x35, 0x54, 0x43, - 0xe7, 0xf3, 0x4c, 0x35, 0x94, 0x00, 0x22, 0x00, - 0x2a, 0x10, 0xdb, 0x04, 0xe0, 0x0f, 0x1c, 0x50, - 0x06, 0x02, 0x0e, 0x12, 0xe7, 0xf8, 0x20, 0x00, - 0x00, 0x93, 0x4c, 0x30, 0x50, 0xe0, 0x23, 0xff, - 0x48, 0x2f, 0x54, 0x83, 0x20, 0x00, 0x00, 0x93, - 0x9c, 0x00, 0x50, 0xe0, 0xe7, 0xef, 0x21, 0x00, - 0x23, 0xff, 0x33, 0x01, 0x42, 0x99, 0xdb, 0x04, - 0xe0, 0x2a, 0x1c, 0x48, 0x04, 0x01, 0x0c, 0x09, - 0xe7, 0xf6, 0x23, 0x00, 0x00, 0x88, 0x4c, 0x1a, - 0x50, 0x23, 0x20, 0x00, 0x00, 0x8b, 0x4c, 0x18, - 0x19, 0x1c, 0x23, 0x01, 0x02, 0x9b, 0x18, 0xe3, - 0x60, 0x18, 0x20, 0x00, 0x4b, 0x14, 0x18, 0x5c, - 0x23, 0x01, 0x02, 0xdb, 0x18, 0xe3, 0x70, 0x18, - 0x20, 0x00, 0x00, 0x8b, 0x4c, 0x11, 0x50, 0xe0, - 0x20, 0x00, 0x00, 0x8b, 0x4c, 0x0f, 0x19, 0x1c, - 0x23, 0x01, 0x02, 0x9b, 0x18, 0xe3, 0x60, 0x18, - 0x20, 0x00, 0x4b, 0x0c, 0x18, 0x5c, 0x23, 0x01, - 0x02, 0xdb, 0x18, 0xe3, 0x70, 0x18, 0xe7, 0xd4, - 0x20, 0x00, 0xb0, 0x01, 0xe7, 0x39, 0xb0, 0x01, - 0xe7, 0x37, 0x00, 0x00, 0x2e, 0x08, 0xb0, 0x58, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0xaf, 0xfc, - 0x2e, 0x08, 0xb0, 0x08, 0x9e, 0x00, 0x04, 0x80, - 0x2e, 0x08, 0x9d, 0xfc, 0x2e, 0x08, 0xa6, 0xfc, - 0x9e, 0x00, 0x04, 0xa0, 0x2e, 0x08, 0x9c, 0x48, - 0x2e, 0x08, 0x9c, 0x4c, 0x2e, 0x08, 0x9c, 0x50, - 0x2e, 0x08, 0x9d, 0x10, 0x64, 0x00, 0x08, 0x00, - 0x64, 0x00, 0x10, 0x00, 0x2e, 0x08, 0xb9, 0x60, - 0x9e, 0x00, 0x04, 0xb8, 0x2e, 0x08, 0x9c, 0xd0, - 0x2e, 0x08, 0x9d, 0x30, 0xb4, 0xb0, 0x1c, 0x07, - 0x1c, 0x0a, 0x06, 0x11, 0x0e, 0x09, 0x29, 0x20, - 0xdb, 0x02, 0x20, 0xa2, 0xbc, 0xb0, 0x47, 0x70, - 0x00, 0x88, 0x4b, 0x0a, 0x58, 0x18, 0x1c, 0x05, - 0xd1, 0x01, 0x20, 0xb0, 0xe7, 0xf6, 0x68, 0xe8, - 0x1c, 0x04, 0xd1, 0x01, 0x20, 0xb6, 0xe7, 0xf1, - 0x68, 0x60, 0x00, 0x43, 0x18, 0x18, 0x01, 0x80, - 0x08, 0x80, 0x60, 0x38, 0x20, 0x00, 0xe7, 0xe9, - 0xe7, 0xe8, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0xc8, - 0xb5, 0xff, 0xb0, 0x82, 0x9a, 0x04, 0x06, 0x11, - 0x0e, 0x09, 0x91, 0x00, 0x9b, 0x05, 0x06, 0x18, - 0x0e, 0x00, 0x90, 0x01, 0xb0, 0x83, 0x99, 0x03, - 0x29, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x05, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x98, 0x05, 0x28, 0x00, 0xd0, 0x64, 0x98, 0x05, - 0x23, 0x0d, 0x06, 0x9b, 0x42, 0xd8, 0xd3, 0x02, - 0x20, 0xb4, 0xb0, 0x05, 0xe7, 0xf0, 0x99, 0x06, - 0x23, 0xff, 0x33, 0x81, 0x42, 0x99, 0xd2, 0x02, - 0x20, 0xb5, 0xb0, 0x05, 0xe7, 0xe8, 0x99, 0x03, - 0x00, 0x88, 0x49, 0x2c, 0x58, 0x08, 0x90, 0x02, - 0x28, 0x00, 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x05, - 0xe7, 0xde, 0x99, 0x06, 0x00, 0x88, 0x1f, 0xc1, - 0x39, 0x05, 0x91, 0x00, 0x9e, 0x05, 0x98, 0x05, - 0x1d, 0xc5, 0x35, 0x05, 0x60, 0x35, 0x99, 0x06, - 0x60, 0x71, 0x20, 0x00, 0x60, 0xb0, 0x98, 0x04, - 0x28, 0x10, 0xd1, 0x0a, 0x98, 0x02, 0x68, 0x84, - 0x98, 0x02, 0x30, 0x18, 0x90, 0x01, 0x1c, 0x2a, - 0x99, 0x00, 0x98, 0x01, 0xf0, 0x00, 0xfc, 0x86, - 0xe0, 0x25, 0x98, 0x04, 0x28, 0x20, 0xd1, 0x1f, - 0x98, 0x02, 0x68, 0xc0, 0x1c, 0x07, 0xd1, 0x02, - 0x20, 0xb6, 0xb0, 0x05, 0xe7, 0xb8, 0x78, 0xb8, - 0x08, 0x40, 0x00, 0x40, 0x70, 0xb8, 0x69, 0x3c, - 0x1d, 0xf8, 0x30, 0x05, 0x90, 0x01, 0x68, 0xb8, - 0x28, 0x00, 0xd1, 0x00, 0x60, 0xbd, 0x1c, 0x2a, - 0x99, 0x00, 0x98, 0x01, 0xf0, 0x00, 0xfc, 0x6a, - 0x68, 0x79, 0x18, 0x40, 0x60, 0x78, 0x78, 0x78, - 0x99, 0x03, 0xf0, 0x00, 0xf8, 0xb9, 0xe0, 0x02, - 0x20, 0xbc, 0xb0, 0x05, 0xe7, 0x9c, 0x68, 0xa0, - 0x28, 0x00, 0xd0, 0x01, 0x68, 0xa4, 0xe7, 0xfa, - 0x60, 0xa6, 0x20, 0x00, 0xb0, 0x05, 0xe7, 0x93, - 0x20, 0xb4, 0xb0, 0x05, 0xe7, 0x90, 0xb0, 0x03, - 0xb0, 0x02, 0xe7, 0x8d, 0x2e, 0x08, 0x9b, 0xc8, - 0xb5, 0xff, 0xb0, 0x81, 0x9a, 0x03, 0x06, 0x16, - 0x0e, 0x36, 0x9b, 0x04, 0x06, 0x18, 0x0e, 0x00, - 0x90, 0x00, 0xb0, 0x83, 0x27, 0x00, 0x2e, 0x20, - 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x04, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0xb0, - 0x49, 0x45, 0x58, 0x08, 0x1c, 0x04, 0xd1, 0x02, - 0x20, 0xb0, 0xb0, 0x04, 0xe7, 0xf3, 0x78, 0xe0, - 0x28, 0x00, 0xd1, 0x73, 0x98, 0x03, 0x28, 0x20, - 0xd1, 0x19, 0x68, 0xe0, 0x1c, 0x07, 0xd1, 0x02, - 0x20, 0xb6, 0xb0, 0x04, 0xe7, 0xe7, 0x69, 0x38, - 0x49, 0x3c, 0x60, 0x48, 0x48, 0x3b, 0x68, 0x40, - 0x68, 0x00, 0x60, 0xb8, 0x1d, 0xf8, 0x30, 0x05, - 0x90, 0x02, 0x20, 0x01, 0x90, 0x00, 0x48, 0x37, - 0x68, 0x40, 0x68, 0x40, 0x00, 0x80, 0x1f, 0xc1, - 0x39, 0x19, 0x91, 0x01, 0xe0, 0x1d, 0x98, 0x03, - 0x28, 0x10, 0xd1, 0x17, 0x68, 0xa0, 0x49, 0x31, - 0x60, 0x48, 0x48, 0x30, 0x68, 0x40, 0x68, 0x00, - 0x61, 0x20, 0x48, 0x2e, 0x68, 0x40, 0x68, 0x00, - 0x61, 0x60, 0x1d, 0xe0, 0x30, 0x11, 0x90, 0x02, - 0x48, 0x2a, 0x68, 0x40, 0x68, 0x40, 0x00, 0x80, - 0x1f, 0xc1, 0x39, 0x21, 0x91, 0x01, 0x20, 0x00, - 0x90, 0x00, 0xe0, 0x02, 0x20, 0xbc, 0xb0, 0x04, - 0xe7, 0xb5, 0x48, 0x24, 0x68, 0x40, 0x68, 0x80, - 0x28, 0x00, 0xd0, 0x37, 0x25, 0x00, 0x48, 0x21, - 0x68, 0x40, 0x68, 0x02, 0x99, 0x01, 0x98, 0x02, - 0xf0, 0x00, 0xfb, 0xe8, 0x19, 0x45, 0x48, 0x1d, - 0x68, 0x40, 0x49, 0x1c, 0x60, 0x08, 0x48, 0x1b, - 0x68, 0x00, 0x68, 0x80, 0x49, 0x19, 0x60, 0x48, - 0x48, 0x18, 0x68, 0x40, 0x68, 0x40, 0x00, 0x80, - 0x1f, 0xc1, 0x39, 0x05, 0x91, 0x01, 0x48, 0x15, - 0x68, 0x40, 0x68, 0x80, 0x28, 0x00, 0xd1, 0xe2, - 0x20, 0x00, 0x49, 0x12, 0x68, 0x09, 0x60, 0x88, - 0x48, 0x10, 0x68, 0x40, 0x99, 0x04, 0x60, 0x08, - 0x48, 0x0e, 0x68, 0x40, 0x68, 0x40, 0x99, 0x05, - 0x60, 0x08, 0x98, 0x00, 0x28, 0x00, 0xd0, 0x06, - 0x60, 0x7d, 0x78, 0x78, 0x1c, 0x31, 0xf0, 0x00, - 0xf8, 0x13, 0xe0, 0x00, 0xe0, 0x05, 0x20, 0x00, - 0xb0, 0x04, 0xe7, 0x78, 0x20, 0xb4, 0xb0, 0x04, - 0xe7, 0x75, 0x20, 0xbc, 0xb0, 0x04, 0xe7, 0x72, - 0xb0, 0x03, 0xb0, 0x01, 0xe7, 0x6f, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9d, 0xf4, - 0xb5, 0xf3, 0x98, 0x00, 0x06, 0x02, 0x0e, 0x12, - 0x99, 0x01, 0x06, 0x0c, 0x0e, 0x24, 0xb0, 0x81, - 0x2c, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x01, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0xa0, 0x4b, 0x14, 0x58, 0x18, 0x1c, 0x05, - 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x01, 0xe7, 0xf3, - 0x68, 0xe8, 0x1c, 0x01, 0xd1, 0x02, 0x20, 0xb6, - 0xb0, 0x01, 0xe7, 0xed, 0x11, 0x10, 0x06, 0x00, - 0x0e, 0x00, 0x90, 0x00, 0x28, 0x00, 0xd1, 0x04, - 0x68, 0x48, 0x40, 0xd0, 0x06, 0x07, 0x0e, 0x3f, - 0xe0, 0x09, 0x68, 0x48, 0x07, 0x16, 0x0f, 0x36, - 0x40, 0xf0, 0x68, 0x4e, 0x40, 0xd6, 0x1c, 0x33, - 0x18, 0xc0, 0x06, 0x07, 0x0e, 0x3f, 0x70, 0x0f, - 0x70, 0x4a, 0x20, 0x00, 0xb0, 0x01, 0xe7, 0xd3, - 0xb0, 0x01, 0xe7, 0xd1, 0x2e, 0x08, 0x9b, 0xc8, - 0xb4, 0xb0, 0x1c, 0x03, 0x1c, 0x0a, 0x06, 0x11, - 0x0e, 0x09, 0x29, 0x20, 0xdb, 0x02, 0x20, 0xa2, - 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x88, 0x4d, 0x08, - 0x58, 0x28, 0x1c, 0x04, 0xd1, 0x01, 0x20, 0xb0, - 0xe7, 0xf6, 0x68, 0xe0, 0x1c, 0x07, 0xd1, 0x01, - 0x20, 0xb6, 0xe7, 0xf1, 0x78, 0x78, 0x70, 0x18, - 0x20, 0x00, 0xe7, 0xed, 0xe7, 0xec, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0xc8, 0xb5, 0xf3, 0xb0, 0x81, - 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, - 0x99, 0x02, 0x06, 0x0d, 0x0e, 0x2d, 0xb0, 0x86, - 0x20, 0x00, 0x90, 0x00, 0x2d, 0x20, 0xdd, 0x05, - 0x20, 0xa2, 0xb0, 0x07, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0xa8, 0x49, 0xa2, - 0x58, 0x08, 0x90, 0x04, 0x28, 0x00, 0xd1, 0x02, - 0x20, 0xb0, 0xb0, 0x07, 0xe7, 0xf2, 0x00, 0xa8, - 0x49, 0x9e, 0x68, 0x09, 0x18, 0x40, 0x90, 0x05, - 0x00, 0xe8, 0x1b, 0x40, 0x00, 0x80, 0x49, 0x9c, - 0x68, 0x09, 0x18, 0x46, 0x98, 0x06, 0x28, 0x00, - 0xd0, 0x73, 0x28, 0x01, 0xd0, 0x4f, 0x28, 0x02, - 0xd0, 0x00, 0xe1, 0x1d, 0x98, 0x04, 0x69, 0x00, - 0x60, 0x70, 0x98, 0x04, 0x78, 0x40, 0x06, 0xc0, - 0x0e, 0xc0, 0x90, 0x02, 0x98, 0x02, 0x28, 0x13, - 0xd0, 0x16, 0x27, 0x00, 0x2f, 0x20, 0xdb, 0x04, - 0xe0, 0x11, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, - 0xe7, 0xf8, 0x48, 0x8e, 0x5d, 0xc0, 0x42, 0xa8, - 0xd1, 0x08, 0x00, 0xb8, 0x49, 0x8c, 0x58, 0x08, - 0x30, 0x01, 0x78, 0x01, 0x23, 0x80, 0x43, 0xdb, - 0x40, 0x19, 0x70, 0x01, 0xe7, 0xed, 0xe0, 0x1e, - 0x27, 0x00, 0x2f, 0x10, 0xdb, 0x04, 0xe0, 0x1a, - 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, - 0x48, 0x84, 0x5d, 0xc0, 0x42, 0xa8, 0xd1, 0x11, - 0x00, 0xb8, 0x49, 0x83, 0x58, 0x08, 0x30, 0x01, - 0x78, 0x01, 0x23, 0x80, 0x43, 0xdb, 0x40, 0x19, - 0x70, 0x01, 0x98, 0x00, 0x30, 0x01, 0x06, 0x00, - 0x0e, 0x00, 0x90, 0x00, 0x98, 0x00, 0x28, 0x02, - 0xd1, 0x00, 0xe0, 0x00, 0xe7, 0xe4, 0x88, 0x30, - 0x4b, 0x7a, 0x40, 0x18, 0x80, 0x30, 0x98, 0x05, - 0x68, 0x00, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, - 0x99, 0x05, 0x60, 0x08, 0xe0, 0xd3, 0x98, 0x05, - 0x68, 0x00, 0x4b, 0x75, 0x40, 0x18, 0x99, 0x05, - 0x60, 0x08, 0x20, 0x00, 0x60, 0xb0, 0x20, 0x00, - 0x70, 0xf0, 0x20, 0x00, 0x60, 0xf0, 0x98, 0x04, - 0x78, 0x40, 0x06, 0xc0, 0x0e, 0xc0, 0x90, 0x02, - 0x98, 0x02, 0x28, 0x13, 0xd0, 0x16, 0x27, 0x00, - 0x2f, 0x20, 0xdb, 0x04, 0xe0, 0x11, 0x1c, 0x78, - 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, 0x48, 0x63, - 0x5d, 0xc0, 0x42, 0xa8, 0xd1, 0x08, 0x00, 0xb8, - 0xe0, 0x00, 0xe0, 0x27, 0x49, 0x60, 0x58, 0x0c, - 0x78, 0x60, 0x23, 0x80, 0x43, 0x18, 0x70, 0x60, - 0xe7, 0xed, 0xe0, 0x1e, 0x27, 0x00, 0x2f, 0x10, - 0xdb, 0x04, 0xe0, 0x1a, 0x1c, 0x78, 0x06, 0x07, - 0x0e, 0x3f, 0xe7, 0xf8, 0x48, 0x59, 0x5d, 0xc0, - 0x42, 0xa8, 0xd1, 0x11, 0x00, 0xb8, 0x49, 0x58, - 0x58, 0x08, 0x30, 0x01, 0x78, 0x01, 0x23, 0x80, - 0x43, 0xdb, 0x40, 0x19, 0x70, 0x01, 0x98, 0x00, - 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, - 0x98, 0x00, 0x28, 0x02, 0xd1, 0x00, 0xe0, 0x00, - 0xe7, 0xe4, 0xe0, 0x88, 0x98, 0x05, 0x68, 0x00, - 0x4b, 0x4f, 0x40, 0x18, 0x99, 0x05, 0x60, 0x08, - 0x20, 0x00, 0x60, 0xb0, 0x20, 0x00, 0x70, 0xf0, - 0x20, 0x00, 0x60, 0xf0, 0x98, 0x04, 0x78, 0x40, - 0x06, 0xc0, 0x0e, 0xc0, 0x90, 0x02, 0x98, 0x04, - 0x78, 0x40, 0x21, 0x20, 0x40, 0x01, 0x91, 0x03, - 0x98, 0x02, 0x28, 0x13, 0xd0, 0x4c, 0x27, 0x00, - 0x2f, 0x20, 0xdb, 0x04, 0xe0, 0x47, 0x1c, 0x78, - 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, 0x48, 0x3b, - 0x5d, 0xc0, 0x42, 0xa8, 0xd1, 0x3e, 0x00, 0xb8, - 0x49, 0x39, 0x58, 0x0c, 0x20, 0x80, 0x70, 0x60, - 0x99, 0x03, 0x1c, 0x20, 0xf7, 0xfd, 0xfb, 0x30, - 0x78, 0xa0, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x28, - 0x6a, 0xe0, 0x22, 0x00, 0x92, 0x01, 0x99, 0x01, - 0x29, 0x08, 0xdb, 0x06, 0xe0, 0x1f, 0x99, 0x01, - 0x31, 0x01, 0x06, 0x09, 0x0e, 0x09, 0x91, 0x01, - 0xe7, 0xf5, 0x99, 0x01, 0x00, 0x89, 0x18, 0x09, - 0x68, 0x49, 0x9a, 0x01, 0x00, 0x92, 0x18, 0x12, - 0x64, 0x51, 0x22, 0x00, 0x99, 0x01, 0x00, 0x89, - 0x18, 0x09, 0x62, 0x4a, 0x99, 0x01, 0x00, 0x89, - 0x18, 0x09, 0x6c, 0x49, 0x29, 0x00, 0xd0, 0x05, - 0x9a, 0x01, 0x21, 0x80, 0x41, 0x11, 0x88, 0x02, - 0x43, 0x11, 0x80, 0x01, 0xe7, 0xdf, 0x88, 0x01, - 0x80, 0x41, 0x78, 0xa0, 0x23, 0x20, 0x40, 0x18, - 0xd0, 0x04, 0x98, 0x04, 0x68, 0xc1, 0x1c, 0x20, - 0xf0, 0x00, 0xfa, 0x3d, 0xe7, 0xb7, 0xe0, 0x1e, - 0x27, 0x00, 0x2f, 0x10, 0xdb, 0x04, 0xe0, 0x1a, - 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, - 0x48, 0x16, 0x5d, 0xc0, 0x42, 0xa8, 0xd1, 0x11, - 0x00, 0xb8, 0x49, 0x15, 0x58, 0x0c, 0x20, 0x80, - 0x70, 0x60, 0x99, 0x03, 0x1c, 0x20, 0xf7, 0xfd, - 0xfa, 0xe3, 0x98, 0x00, 0x30, 0x01, 0x06, 0x00, - 0x0e, 0x00, 0x90, 0x00, 0x98, 0x00, 0x28, 0x02, - 0xd1, 0x00, 0xe0, 0x00, 0xe7, 0xe4, 0xe0, 0x02, - 0x20, 0xbc, 0xb0, 0x07, 0xe6, 0xbe, 0x98, 0x06, - 0x99, 0x04, 0x70, 0xc8, 0x20, 0x00, 0xb0, 0x07, - 0xe6, 0xb8, 0xb0, 0x06, 0xb0, 0x01, 0xe6, 0xb5, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9b, 0x38, - 0x2e, 0x08, 0x9b, 0x30, 0x2e, 0x08, 0x9d, 0x10, - 0x2e, 0x08, 0x9c, 0x50, 0x2e, 0x08, 0x9d, 0x30, - 0x2e, 0x08, 0x9c, 0xd0, 0xff, 0xff, 0xfb, 0xff, - 0xff, 0xff, 0xdf, 0xff, 0xb4, 0x90, 0x1c, 0x03, - 0x1c, 0x0a, 0x06, 0x11, 0x0e, 0x09, 0x29, 0x20, - 0xdd, 0x02, 0x20, 0xa2, 0xbc, 0x90, 0x47, 0x70, - 0x00, 0x88, 0x4c, 0x05, 0x58, 0x20, 0x1c, 0x07, - 0xd1, 0x01, 0x20, 0xb0, 0xe7, 0xf6, 0x78, 0xf8, - 0x70, 0x18, 0x20, 0x00, 0xe7, 0xf2, 0xe7, 0xf1, - 0x2e, 0x08, 0x9b, 0xc8, 0xb4, 0x90, 0x1c, 0x02, - 0x1c, 0x0f, 0x06, 0x38, 0x16, 0x04, 0x2a, 0x02, - 0xda, 0x02, 0x20, 0x00, 0xbc, 0x90, 0x47, 0x70, - 0x2c, 0x01, 0xd1, 0x01, 0x21, 0x28, 0xe0, 0x09, - 0x2c, 0x02, 0xd1, 0x01, 0x21, 0x20, 0xe0, 0x05, - 0x2c, 0x00, 0xd1, 0x01, 0x21, 0x0c, 0xe0, 0x01, - 0x20, 0x00, 0xe7, 0xef, 0x00, 0x50, 0x18, 0x80, - 0x01, 0x80, 0x18, 0x41, 0x1c, 0xc8, 0x08, 0x81, - 0x1c, 0x08, 0xe7, 0xe7, 0xe7, 0xe6, 0xb5, 0xf7, - 0x1c, 0x07, 0xb0, 0x81, 0x9a, 0x03, 0x06, 0x11, - 0x0e, 0x09, 0x91, 0x00, 0xb0, 0x84, 0x99, 0x04, - 0x29, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x05, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x99, 0x04, 0x00, 0x88, 0x49, 0x29, 0x58, 0x08, - 0x1c, 0x06, 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x05, - 0xe7, 0xf2, 0x2f, 0x00, 0xd1, 0x02, 0x20, 0xb4, - 0xb0, 0x05, 0xe7, 0xed, 0x4b, 0x24, 0x42, 0x9f, - 0xd1, 0x0a, 0x78, 0xf0, 0x28, 0x00, 0xd0, 0x02, - 0x20, 0xbc, 0xb0, 0x05, 0xe7, 0xe4, 0x20, 0x00, - 0x60, 0xf0, 0x20, 0x00, 0xb0, 0x05, 0xe7, 0xdf, - 0x68, 0xf0, 0x28, 0x00, 0xd0, 0x02, 0x20, 0xb4, - 0xb0, 0x05, 0xe7, 0xd9, 0x99, 0x06, 0x00, 0x88, - 0x1f, 0xc1, 0x39, 0x19, 0x91, 0x02, 0x20, 0xff, - 0x30, 0x81, 0x90, 0x01, 0x99, 0x02, 0x98, 0x01, - 0x42, 0x81, 0xda, 0x02, 0x20, 0xb5, 0xb0, 0x05, - 0xe7, 0xca, 0x1c, 0x3c, 0x60, 0xf4, 0x37, 0x14, - 0x1c, 0x3d, 0x37, 0x0c, 0x60, 0x2f, 0x99, 0x06, - 0x60, 0x69, 0x20, 0x00, 0x60, 0xa8, 0x97, 0x03, - 0x20, 0x00, 0x60, 0xe0, 0x1d, 0xe0, 0x30, 0x05, - 0x9a, 0x03, 0x99, 0x02, 0xf0, 0x00, 0xf9, 0x56, - 0x90, 0x00, 0x20, 0x00, 0x70, 0xa0, 0x98, 0x00, - 0x60, 0x60, 0x9a, 0x03, 0x60, 0xa2, 0x61, 0x25, - 0x99, 0x04, 0x20, 0x54, 0xf7, 0xff, 0xfd, 0xa0, - 0xb0, 0x05, 0xe7, 0xa9, 0xb0, 0x04, 0xb0, 0x01, - 0xe7, 0xa6, 0x00, 0x00, 0x2e, 0x08, 0x9b, 0xc8, - 0x00, 0x00, 0xff, 0xff, 0xb5, 0xff, 0xb0, 0x83, - 0x9a, 0x05, 0x06, 0x11, 0x0e, 0x09, 0x91, 0x00, - 0x9b, 0x06, 0x06, 0x18, 0x0e, 0x00, 0x90, 0x01, - 0x98, 0x0c, 0x06, 0x01, 0x0e, 0x09, 0x91, 0x02, - 0xb0, 0x85, 0x99, 0x05, 0x29, 0x20, 0xdb, 0x05, - 0x20, 0xa2, 0xb0, 0x08, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x98, 0x08, 0x28, 0x00, - 0xd1, 0x02, 0x20, 0xb4, 0xb0, 0x08, 0xe7, 0xf5, - 0x99, 0x05, 0x00, 0xc8, 0x1a, 0x40, 0x00, 0x80, - 0x49, 0x83, 0x68, 0x09, 0x18, 0x47, 0x98, 0x08, - 0x4b, 0x82, 0x42, 0x98, 0xd1, 0x73, 0x99, 0x05, - 0x00, 0x88, 0x49, 0x81, 0x58, 0x08, 0x1c, 0x05, - 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x08, 0xe7, 0xe1, - 0x68, 0xe8, 0x28, 0x00, 0xd1, 0x02, 0x78, 0xe8, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0xbc, 0xb0, 0x08, - 0xe7, 0xd8, 0x78, 0xa8, 0x28, 0x00, 0xd0, 0x54, - 0x20, 0x00, 0x42, 0x80, 0xd0, 0x1d, 0x24, 0x00, - 0x2c, 0x20, 0xdb, 0x04, 0xe0, 0x18, 0x1c, 0x60, - 0x06, 0x04, 0x0e, 0x24, 0xe7, 0xf8, 0x48, 0x73, - 0x5d, 0x00, 0x99, 0x05, 0x42, 0x88, 0xd1, 0x0e, - 0x20, 0x01, 0x40, 0xa0, 0x43, 0xc0, 0x49, 0x70, - 0x68, 0x09, 0x40, 0x08, 0x49, 0x6e, 0x60, 0x08, - 0x20, 0x00, 0x00, 0xa1, 0x4a, 0x6d, 0x50, 0x50, - 0x20, 0xff, 0x49, 0x6a, 0x55, 0x08, 0xe7, 0xe6, - 0xe0, 0x33, 0x4a, 0x6b, 0x92, 0x03, 0x7e, 0x38, - 0x1c, 0x06, 0x28, 0xff, 0xd0, 0x14, 0x20, 0x00, - 0x00, 0xb1, 0x4a, 0x68, 0x50, 0x50, 0x20, 0x01, - 0x40, 0xb0, 0x43, 0xc0, 0x49, 0x66, 0x68, 0x09, - 0x40, 0x08, 0x49, 0x65, 0x60, 0x08, 0x20, 0xff, - 0x76, 0x38, 0x21, 0xff, 0x48, 0x63, 0x55, 0x81, - 0x21, 0x00, 0x00, 0xb0, 0x9a, 0x03, 0x50, 0x11, - 0x7e, 0x78, 0x1c, 0x06, 0x28, 0xff, 0xd0, 0x14, - 0x21, 0x00, 0x00, 0xb0, 0x4a, 0x5b, 0x50, 0x11, - 0x20, 0x01, 0x40, 0xb0, 0x43, 0xc0, 0x49, 0x5a, - 0x68, 0x09, 0x40, 0x08, 0x49, 0x58, 0x60, 0x08, - 0x20, 0xff, 0x76, 0x78, 0x20, 0xff, 0x49, 0x51, - 0x55, 0x88, 0x21, 0x00, 0x00, 0xb0, 0x9a, 0x03, - 0x50, 0x11, 0x20, 0x00, 0x99, 0x05, 0x00, 0x89, - 0x4a, 0x4b, 0x50, 0x50, 0x24, 0x00, 0x2c, 0x0c, - 0xdb, 0x06, 0xe0, 0x09, 0xe0, 0x00, 0xe0, 0x0e, - 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, 0xe7, 0xf6, - 0x20, 0x00, 0x19, 0x39, 0x73, 0x08, 0xe7, 0xf7, - 0x20, 0x00, 0x83, 0x38, 0x20, 0x00, 0x70, 0xf8, - 0x20, 0x00, 0xb0, 0x08, 0xe7, 0x66, 0x99, 0x05, - 0x00, 0x88, 0x49, 0x3f, 0x58, 0x08, 0x28, 0x00, - 0xd0, 0x02, 0x20, 0xb0, 0xb0, 0x08, 0xe7, 0x5d, - 0x99, 0x07, 0x29, 0x11, 0xdb, 0x02, 0x99, 0x07, - 0x29, 0x13, 0xdd, 0x02, 0x20, 0xb1, 0xb0, 0x08, - 0xe7, 0x54, 0x99, 0x09, 0x00, 0x88, 0x1f, 0xc1, - 0x39, 0x21, 0x91, 0x01, 0x20, 0xff, 0x30, 0x81, - 0x90, 0x00, 0x99, 0x01, 0x98, 0x00, 0x42, 0x81, - 0xda, 0x02, 0x20, 0xb5, 0xb0, 0x08, 0xe7, 0x45, - 0x9d, 0x08, 0x98, 0x08, 0x30, 0x1c, 0x90, 0x08, - 0x98, 0x08, 0x90, 0x04, 0x98, 0x08, 0x30, 0x0c, - 0x90, 0x08, 0x98, 0x08, 0x90, 0x02, 0x9a, 0x02, - 0x98, 0x04, 0x60, 0x02, 0x99, 0x09, 0x98, 0x04, - 0x60, 0x41, 0x20, 0x00, 0x99, 0x04, 0x60, 0x88, - 0x20, 0x00, 0x61, 0xa8, 0x1d, 0xe8, 0x30, 0x11, - 0x9a, 0x02, 0x99, 0x01, 0xf0, 0x00, 0xf8, 0x56, - 0x20, 0x00, 0x70, 0x28, 0x98, 0x06, 0x99, 0x07, - 0x43, 0x08, 0x70, 0x68, 0x20, 0x00, 0x70, 0xa8, - 0x20, 0x02, 0x70, 0xe8, 0x20, 0x00, 0x71, 0x28, - 0x98, 0x04, 0x60, 0xa8, 0x20, 0x00, 0x60, 0xe8, - 0x9a, 0x02, 0x61, 0x2a, 0x9a, 0x02, 0x61, 0x6a, - 0x99, 0x05, 0x00, 0x88, 0x49, 0x16, 0x50, 0x0d, - 0x20, 0x00, 0x60, 0xf8, 0x88, 0x38, 0x4b, 0x1c, - 0x40, 0x18, 0x80, 0x38, 0x20, 0x00, 0x60, 0xb8, - 0x9a, 0x02, 0x60, 0x7a, 0x98, 0x06, 0x99, 0x07, - 0x43, 0x08, 0x70, 0xb8, 0x24, 0x00, 0x2c, 0x0c, - 0xdb, 0x04, 0xe0, 0x07, 0x1c, 0x60, 0x06, 0x04, - 0x0e, 0x24, 0xe7, 0xf8, 0x20, 0x00, 0x19, 0x39, - 0x74, 0x08, 0xe7, 0xf7, 0x20, 0x00, 0x83, 0x38, - 0x20, 0x00, 0x70, 0xf8, 0x20, 0xff, 0x76, 0x38, - 0x20, 0xff, 0x76, 0x78, 0x20, 0x00, 0xb0, 0x08, - 0xe6, 0xec, 0xb0, 0x05, 0xb0, 0x03, 0xe6, 0xe9, - 0x2e, 0x08, 0x9b, 0x30, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0x9b, 0xc8, 0x2e, 0x08, 0x9d, 0x10, - 0x2e, 0x08, 0x9c, 0x48, 0x2e, 0x08, 0x9c, 0x50, - 0x9e, 0x00, 0x04, 0xb8, 0x2e, 0x08, 0x9c, 0xd0, - 0x2e, 0x08, 0x9c, 0x4c, 0x2e, 0x08, 0x9d, 0x30, - 0xff, 0xff, 0xfb, 0xff, 0xb4, 0x90, 0x1c, 0x04, - 0x1c, 0x0f, 0x1c, 0x13, 0x21, 0x00, 0x68, 0x22, - 0x2a, 0x00, 0xd0, 0x00, 0x60, 0x13, 0x1d, 0xd8, - 0x30, 0xb9, 0x60, 0x18, 0x33, 0xc0, 0x31, 0x01, - 0x3f, 0xc0, 0x2f, 0xc0, 0xd8, 0xf7, 0x20, 0x00, - 0x60, 0x18, 0x60, 0x23, 0x31, 0x01, 0x1c, 0x08, - 0xbc, 0x90, 0x47, 0x70, 0xe7, 0xfc, 0xb4, 0x90, - 0x1c, 0x03, 0x1c, 0x0a, 0x6b, 0x18, 0x68, 0xd1, - 0x68, 0x07, 0x2f, 0x00, 0xd0, 0x0c, 0x68, 0x07, - 0x60, 0x0f, 0x68, 0x41, 0x68, 0x57, 0x68, 0x84, - 0x19, 0x3f, 0x60, 0x57, 0x27, 0x00, 0x60, 0x07, - 0x27, 0x00, 0x60, 0x47, 0x27, 0x00, 0x60, 0x87, - 0x6a, 0xc7, 0x2f, 0x00, 0xd0, 0x0c, 0x6a, 0xc7, - 0x60, 0x0f, 0x6b, 0x01, 0x68, 0x57, 0x6b, 0x44, - 0x19, 0x3f, 0x60, 0x57, 0x27, 0x00, 0x62, 0xc7, - 0x27, 0x00, 0x63, 0x07, 0x27, 0x00, 0x63, 0x47, - 0x60, 0xd1, 0xbc, 0x90, 0x47, 0x70, 0xe7, 0xfc, - 0x20, 0x00, 0x49, 0x01, 0x70, 0x08, 0x47, 0x70, - 0x2e, 0x08, 0xb9, 0x80, 0xb5, 0xff, 0xb0, 0x82, - 0x9b, 0x05, 0x06, 0x18, 0x16, 0x00, 0x90, 0x00, - 0x98, 0x0c, 0x06, 0x01, 0x16, 0x09, 0x91, 0x01, - 0x98, 0x00, 0x28, 0x1f, 0xdd, 0x05, 0x20, 0xaf, - 0xb0, 0x02, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x48, 0x37, 0x78, 0x00, 0x28, 0x00, - 0xd0, 0x03, 0x20, 0xd2, 0xb0, 0x02, 0xe7, 0xf4, - 0xe0, 0x64, 0x20, 0xff, 0x49, 0x32, 0x70, 0x08, - 0x49, 0x32, 0x98, 0x00, 0xf0, 0x0a, 0xff, 0x04, - 0x9a, 0x04, 0x2a, 0x00, 0xd9, 0x52, 0x20, 0xff, - 0x49, 0x2f, 0x70, 0x08, 0x9d, 0x02, 0x98, 0x0b, - 0x99, 0x01, 0x18, 0x44, 0x99, 0x01, 0x20, 0xc0, - 0x1a, 0x40, 0x9a, 0x04, 0x42, 0x90, 0xd9, 0x01, - 0x9f, 0x04, 0xe0, 0x02, 0x99, 0x01, 0x20, 0xc0, - 0x1a, 0x47, 0x1c, 0x3a, 0x1c, 0x21, 0x1c, 0x28, - 0x23, 0xfe, 0xf0, 0x05, 0xfa, 0xa5, 0x1c, 0x06, - 0x2e, 0xd0, 0xd1, 0x0a, 0x20, 0x03, 0xf0, 0x04, - 0xf9, 0xa9, 0x1c, 0x3a, 0x1c, 0x21, 0x1c, 0x28, - 0x23, 0xfe, 0xf0, 0x05, 0xfa, 0x99, 0x1c, 0x06, - 0xe7, 0xf2, 0x98, 0x02, 0x19, 0xc0, 0x90, 0x02, - 0x9a, 0x04, 0x1b, 0xd2, 0x92, 0x04, 0x9d, 0x0b, - 0x9c, 0x03, 0x9b, 0x00, 0x1c, 0x3a, 0x1c, 0x21, - 0x1c, 0x28, 0xf0, 0x05, 0xfa, 0x89, 0x1c, 0x06, - 0x2e, 0xd0, 0xd1, 0x0a, 0x20, 0x03, 0xf0, 0x04, - 0xf9, 0x8d, 0x9b, 0x00, 0x1c, 0x3a, 0x1c, 0x21, - 0x1c, 0x28, 0xf0, 0x05, 0xfa, 0x7d, 0x1c, 0x06, - 0xe7, 0xf2, 0x99, 0x03, 0x29, 0x20, 0xd3, 0x04, - 0x99, 0x01, 0x18, 0x78, 0x99, 0x03, 0x18, 0x41, - 0x91, 0x03, 0x48, 0x0b, 0x78, 0x00, 0x28, 0x00, - 0xd0, 0x03, 0x20, 0x03, 0xf0, 0x04, 0xf9, 0x76, - 0xe7, 0xf7, 0xe7, 0xa9, 0x20, 0x00, 0x49, 0x04, - 0x70, 0x08, 0x20, 0x00, 0xb0, 0x02, 0xe7, 0x90, - 0xb0, 0x02, 0xe7, 0x8e, 0xe7, 0x8d, 0x00, 0x00, - 0x2e, 0x08, 0x20, 0x20, 0x2e, 0x01, 0x8b, 0x35, - 0x2e, 0x08, 0xb9, 0x80, 0xb5, 0xff, 0x1c, 0x0f, - 0x9a, 0x02, 0x06, 0x14, 0x0e, 0x24, 0x9b, 0x03, - 0x06, 0x1d, 0x0e, 0x2d, 0x2c, 0x1f, 0xdb, 0x04, - 0x20, 0xb3, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x04, 0x3a, 0x0c, 0x12, 0x2d, 0x01, - 0xd1, 0x73, 0x20, 0x01, 0x03, 0x40, 0x40, 0x10, - 0xd0, 0x0a, 0x4b, 0x6f, 0x40, 0x1a, 0x48, 0x6f, - 0x68, 0x00, 0x68, 0x00, 0x23, 0x02, 0x43, 0xdb, - 0x40, 0x18, 0x4b, 0x6c, 0x68, 0x1b, 0x60, 0x18, - 0x20, 0x01, 0x02, 0x40, 0x40, 0x10, 0xd0, 0x0a, - 0x4b, 0x69, 0x40, 0x1a, 0x48, 0x67, 0x68, 0x00, - 0x68, 0x00, 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, - 0x4b, 0x64, 0x68, 0x1b, 0x60, 0x18, 0x20, 0x01, - 0x05, 0x00, 0x40, 0x38, 0xd0, 0x08, 0x48, 0x63, - 0x68, 0x00, 0x69, 0x80, 0x23, 0x01, 0x05, 0x1b, - 0x43, 0x18, 0x4b, 0x60, 0x68, 0x1b, 0x61, 0x98, - 0x20, 0x01, 0x05, 0x40, 0x40, 0x38, 0xd0, 0x08, - 0x48, 0x5c, 0x68, 0x00, 0x69, 0x80, 0x23, 0x01, - 0x05, 0x5b, 0x43, 0x18, 0x4b, 0x59, 0x68, 0x1b, - 0x61, 0x98, 0x0a, 0x12, 0x48, 0x55, 0x68, 0x00, - 0x68, 0x00, 0x43, 0x90, 0x4b, 0x53, 0x68, 0x1b, - 0x60, 0x18, 0x48, 0x52, 0x68, 0x00, 0x68, 0x00, - 0x4b, 0x53, 0x65, 0x18, 0x48, 0x51, 0x68, 0x00, - 0x77, 0x04, 0x20, 0x09, 0x04, 0x80, 0x40, 0x38, - 0xd0, 0x35, 0x21, 0x00, 0x29, 0x20, 0xdb, 0x04, - 0xe0, 0x31, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, - 0xe7, 0xf8, 0x20, 0x01, 0x40, 0x88, 0x9b, 0x00, - 0x40, 0x18, 0xd0, 0x27, 0x20, 0x01, 0x05, 0x40, - 0x40, 0x38, 0xd0, 0x0e, 0x00, 0xc8, 0x1a, 0x40, - 0x00, 0x80, 0x4b, 0x46, 0x68, 0x1b, 0x5a, 0x18, - 0x23, 0xff, 0x33, 0x01, 0x43, 0x18, 0x00, 0xcb, - 0x1a, 0x5b, 0x00, 0x9b, 0x4e, 0x41, 0x68, 0x36, - 0x52, 0xf0, 0x20, 0x01, 0x04, 0x80, 0x40, 0x38, - 0xd0, 0x10, 0x00, 0xc8, 0x1a, 0x40, 0x00, 0x80, - 0xe0, 0x00, 0xe0, 0x0d, 0x4b, 0x3b, 0x68, 0x1b, - 0x5a, 0x18, 0x23, 0x01, 0x02, 0x5b, 0x43, 0x18, - 0x00, 0xcb, 0x1a, 0x5b, 0x00, 0x9b, 0x4e, 0x37, - 0x68, 0x36, 0x52, 0xf0, 0xe7, 0xcd, 0xe0, 0x5c, - 0x2d, 0x02, 0xd1, 0x5a, 0x0a, 0x12, 0x48, 0x2f, - 0x68, 0x00, 0x68, 0x00, 0x43, 0x10, 0x4b, 0x2d, - 0x68, 0x1b, 0x60, 0x18, 0x48, 0x2b, 0x68, 0x00, - 0x68, 0x00, 0x4b, 0x2d, 0x65, 0x18, 0x20, 0x01, - 0x05, 0x00, 0x40, 0x38, 0xd0, 0x07, 0x48, 0x29, - 0x68, 0x00, 0x69, 0x80, 0x4b, 0x2a, 0x40, 0x18, - 0x4b, 0x26, 0x68, 0x1b, 0x61, 0x98, 0x20, 0x01, - 0x05, 0x40, 0x40, 0x38, 0xd0, 0x07, 0x48, 0x23, - 0x68, 0x00, 0x69, 0x80, 0x4b, 0x25, 0x40, 0x18, - 0x4b, 0x20, 0x68, 0x1b, 0x61, 0x98, 0x21, 0x00, - 0x29, 0x20, 0xdb, 0x04, 0xe0, 0x31, 0x1c, 0x48, - 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x20, 0x09, - 0x04, 0x80, 0x40, 0x38, 0xd0, 0x28, 0x20, 0x01, - 0x40, 0x88, 0x9b, 0x00, 0x40, 0x18, 0xd0, 0x23, - 0x20, 0x01, 0x05, 0x40, 0x40, 0x38, 0xd0, 0x0d, - 0x00, 0xc8, 0x1a, 0x40, 0x00, 0x80, 0x4b, 0x15, - 0x68, 0x1b, 0x5a, 0x18, 0x4b, 0x16, 0x40, 0x18, - 0x00, 0xcb, 0x1a, 0x5b, 0x00, 0x9b, 0x4e, 0x11, - 0x68, 0x36, 0x52, 0xf0, 0x20, 0x01, 0x04, 0x80, - 0x40, 0x38, 0xd0, 0x0d, 0x00, 0xc8, 0x1a, 0x40, - 0x00, 0x80, 0x4b, 0x0c, 0x68, 0x1b, 0x5a, 0x18, - 0x4b, 0x05, 0x40, 0x18, 0x00, 0xcb, 0x1a, 0x5b, - 0x00, 0x9b, 0x4e, 0x08, 0x68, 0x36, 0x52, 0xf0, - 0xe7, 0xcd, 0x20, 0x00, 0xe7, 0x15, 0xe7, 0x14, - 0xff, 0xff, 0xfd, 0xff, 0x2e, 0x08, 0xb9, 0x84, - 0xff, 0xff, 0xdf, 0xff, 0x2e, 0x08, 0x9b, 0x78, - 0x66, 0x00, 0x00, 0x80, 0x2e, 0x08, 0x9b, 0x30, - 0xff, 0xef, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, - 0xff, 0xff, 0xfe, 0xff, 0xb5, 0x80, 0x1c, 0x07, - 0x48, 0x17, 0x68, 0x01, 0x20, 0x00, 0xf0, 0x13, - 0xfc, 0xa3, 0x60, 0x38, 0x48, 0x14, 0x68, 0x00, - 0x1d, 0x01, 0x20, 0x00, 0xf0, 0x13, 0xfc, 0x9c, - 0x60, 0x78, 0x48, 0x11, 0x68, 0x00, 0x1d, 0xc1, - 0x31, 0x05, 0x20, 0x00, 0xf0, 0x13, 0xfc, 0x94, - 0x60, 0xf8, 0x48, 0x0d, 0x68, 0x00, 0x1d, 0xc1, - 0x31, 0x09, 0x20, 0x00, 0xf0, 0x13, 0xfc, 0x8c, - 0x61, 0x38, 0x48, 0x09, 0x68, 0x00, 0x1d, 0xc1, - 0x31, 0x0d, 0x20, 0x00, 0xf0, 0x13, 0xfc, 0x84, - 0x61, 0x78, 0x48, 0x05, 0x68, 0x00, 0x1d, 0xc1, - 0x31, 0x01, 0x20, 0x00, 0xf0, 0x13, 0xfc, 0x7c, - 0x60, 0xb8, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x9b, 0x78, 0xb5, 0xf0, 0x1c, 0x07, - 0xb0, 0x82, 0x26, 0x00, 0x89, 0xb8, 0x23, 0x08, - 0x40, 0x18, 0xd0, 0x08, 0x48, 0x59, 0x6e, 0xc2, - 0x48, 0x58, 0x6f, 0x01, 0x48, 0x57, 0x6a, 0x00, - 0xf7, 0xfd, 0xff, 0x5c, 0x1c, 0x06, 0x89, 0xb8, - 0x23, 0x10, 0x40, 0x18, 0xd0, 0x02, 0x48, 0x53, - 0x69, 0x40, 0x1c, 0x06, 0x89, 0xb8, 0x07, 0xc0, - 0x0f, 0xc0, 0xd0, 0x21, 0x48, 0x50, 0x68, 0xc0, - 0x90, 0x00, 0x68, 0x78, 0x02, 0x40, 0x99, 0x00, - 0x1a, 0x08, 0x90, 0x01, 0x98, 0x01, 0x21, 0x33, - 0x06, 0x49, 0x65, 0xc8, 0x98, 0x00, 0x21, 0x33, - 0x06, 0x49, 0x66, 0x08, 0x98, 0x01, 0x49, 0x48, - 0x60, 0x88, 0x98, 0x00, 0x49, 0x46, 0x60, 0xc8, - 0x20, 0x01, 0x21, 0x33, 0x06, 0x49, 0x66, 0xc8, - 0x20, 0x00, 0x21, 0x33, 0x06, 0x49, 0x66, 0xc8, - 0x89, 0xb8, 0x23, 0x02, 0x43, 0x18, 0x81, 0xb8, - 0x89, 0xb8, 0x23, 0x02, 0x40, 0x18, 0xd0, 0x3e, - 0x48, 0x3d, 0x68, 0x80, 0x1f, 0xc4, 0x3c, 0xff, - 0x3c, 0xfa, 0x68, 0x38, 0x02, 0x40, 0x1a, 0x25, - 0x48, 0x38, 0x60, 0x45, 0x48, 0x37, 0x60, 0x84, - 0x20, 0x33, 0x06, 0x40, 0x65, 0x45, 0x20, 0x33, - 0x06, 0x40, 0x65, 0x84, 0x1b, 0x60, 0x38, 0xc0, - 0x21, 0x33, 0x06, 0x49, 0x66, 0x88, 0x21, 0x00, - 0x48, 0x32, 0xf7, 0xfd, 0xfb, 0x89, 0x48, 0x32, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x00, 0xe7, 0xfa, - 0x48, 0x30, 0x68, 0x01, 0x23, 0xff, 0x33, 0x01, - 0x43, 0x19, 0x60, 0x01, 0x48, 0x2e, 0x6d, 0x80, - 0x49, 0x2d, 0x65, 0x88, 0x48, 0x2c, 0x6b, 0xc0, - 0x23, 0x01, 0x07, 0x9b, 0x40, 0x18, 0xd0, 0x00, - 0xe7, 0xf8, 0x20, 0x33, 0x06, 0x40, 0x66, 0x45, - 0x20, 0x33, 0x06, 0x40, 0x66, 0x84, 0x21, 0x00, - 0x20, 0xff, 0xf7, 0xfd, 0xfb, 0x69, 0x48, 0x20, - 0x60, 0x05, 0x48, 0x1f, 0x60, 0x44, 0x89, 0xb8, - 0x23, 0x04, 0x40, 0x18, 0xd0, 0x21, 0x68, 0xb8, - 0x28, 0x00, 0xd1, 0x06, 0x48, 0x1f, 0x68, 0x01, - 0x23, 0x02, 0x43, 0xdb, 0x40, 0x19, 0x60, 0x01, - 0xe0, 0x17, 0x69, 0x38, 0x49, 0x1a, 0x65, 0x88, - 0x69, 0x38, 0x68, 0xb9, 0x02, 0x49, 0x18, 0x40, - 0x49, 0x17, 0x65, 0xc8, 0x20, 0x03, 0x02, 0x00, - 0x49, 0x15, 0x67, 0x48, 0x20, 0x02, 0x49, 0x14, - 0x67, 0x88, 0x20, 0x40, 0x49, 0x12, 0x66, 0x08, - 0x48, 0x12, 0x68, 0x01, 0x23, 0x02, 0x43, 0x19, - 0x60, 0x01, 0x20, 0x33, 0x06, 0x40, 0x6d, 0x40, - 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, 0x60, 0x38, - 0x20, 0x33, 0x06, 0x40, 0x6d, 0xc0, 0x23, 0x0d, - 0x06, 0x9b, 0x1a, 0xc0, 0x60, 0x78, 0x48, 0x0a, - 0x43, 0x30, 0x60, 0xb8, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xcc, 0x00, 0x0f, 0x80, - 0x2e, 0x08, 0xb9, 0x88, 0x00, 0x00, 0x80, 0x0f, - 0xcc, 0x00, 0x05, 0x00, 0x66, 0x00, 0x00, 0xe0, - 0x66, 0x00, 0x00, 0x80, 0x66, 0x00, 0x00, 0xf0, - 0xcc, 0x00, 0x00, 0x00, 0xb5, 0xf3, 0x1c, 0x02, - 0xb0, 0x81, 0x68, 0x93, 0x68, 0x54, 0x21, 0x00, - 0x1d, 0xd8, 0x30, 0xb9, 0x1b, 0x00, 0x06, 0x05, - 0x0e, 0x2d, 0x2d, 0x12, 0xda, 0x12, 0x21, 0x00, - 0x42, 0xa9, 0xdb, 0x04, 0xe0, 0x08, 0x1c, 0x48, - 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x78, 0x26, - 0x34, 0x01, 0x98, 0x02, 0x54, 0x46, 0xe7, 0xf6, - 0x68, 0x1b, 0x1d, 0x18, 0x90, 0x00, 0x98, 0x00, - 0x78, 0x80, 0x18, 0xc4, 0x1c, 0x0f, 0x2f, 0x12, - 0xdb, 0x04, 0xe0, 0x08, 0x1c, 0x78, 0x06, 0x07, - 0x0e, 0x3f, 0xe7, 0xf8, 0x78, 0x26, 0x34, 0x01, - 0x98, 0x02, 0x55, 0xc6, 0xe7, 0xf6, 0x20, 0x00, - 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0xb0, 0x01, 0xe7, 0xf9, 0xb4, 0xf0, - 0x1c, 0x07, 0x1c, 0x0d, 0x1c, 0x14, 0xb0, 0x82, - 0x20, 0x00, 0x70, 0x20, 0x78, 0x78, 0x23, 0x80, - 0x40, 0x18, 0xd0, 0x03, 0x20, 0xb1, 0xb0, 0x02, - 0xbc, 0xf0, 0x47, 0x70, 0x78, 0xba, 0x20, 0x40, - 0x40, 0x10, 0xd0, 0x2a, 0x07, 0x12, 0x0f, 0x12, - 0x07, 0xd0, 0x0f, 0xc0, 0xd0, 0x25, 0x20, 0x40, - 0x70, 0x20, 0x35, 0x0a, 0x21, 0x00, 0x1d, 0xf8, - 0x30, 0x0d, 0x90, 0x01, 0x1d, 0xf8, 0x30, 0x1d, - 0x90, 0x00, 0x21, 0x00, 0x29, 0x08, 0xdb, 0x04, - 0xe0, 0x14, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, - 0xe7, 0xf8, 0x78, 0x2e, 0x35, 0x01, 0x98, 0x00, - 0x78, 0x03, 0x30, 0x01, 0x90, 0x00, 0x40, 0x33, - 0x98, 0x01, 0x78, 0x06, 0x30, 0x01, 0x90, 0x01, - 0x42, 0xb3, 0xd0, 0x02, 0x20, 0x00, 0x70, 0x20, - 0xe0, 0x00, 0xe7, 0xea, 0x20, 0x00, 0xb0, 0x02, - 0xe7, 0xce, 0x20, 0xb1, 0xb0, 0x02, 0xe7, 0xcb, - 0xb0, 0x02, 0xe7, 0xc9, 0xb5, 0xf7, 0x1c, 0x07, - 0xb0, 0x8d, 0x20, 0x00, 0x9a, 0x0f, 0x70, 0x10, - 0x78, 0x78, 0x23, 0x80, 0x40, 0x18, 0xd0, 0x05, - 0x20, 0xb1, 0xb0, 0x0d, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x78, 0xb8, 0x90, 0x05, - 0x98, 0x05, 0x23, 0x40, 0x40, 0x18, 0xd0, 0x73, - 0x98, 0x05, 0x07, 0x00, 0x0f, 0x00, 0x90, 0x05, - 0x98, 0x05, 0x23, 0x02, 0x40, 0x18, 0xd1, 0x03, - 0x98, 0x05, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x68, - 0x99, 0x0e, 0x79, 0x48, 0x23, 0x3e, 0x40, 0x18, - 0x90, 0x0c, 0x78, 0xf8, 0x90, 0x04, 0x98, 0x04, - 0x01, 0x00, 0x4b, 0x81, 0x18, 0xc0, 0x90, 0x02, - 0x98, 0x02, 0x68, 0x00, 0x90, 0x01, 0x78, 0x7c, - 0x23, 0xbf, 0x40, 0x1c, 0x23, 0xfe, 0x40, 0x1c, - 0x20, 0x00, 0x90, 0x03, 0x98, 0x01, 0x06, 0x00, - 0x0e, 0x00, 0x99, 0x0c, 0x42, 0x88, 0xd0, 0x08, - 0x06, 0x20, 0x0e, 0x00, 0x24, 0x01, 0x43, 0x04, - 0x20, 0x01, 0x90, 0x03, 0x23, 0xdf, 0x40, 0x1c, - 0xe0, 0x06, 0x20, 0x02, 0x40, 0x20, 0xd0, 0x03, - 0x70, 0x7c, 0x20, 0x00, 0xb0, 0x0d, 0xe7, 0xbd, - 0x23, 0xfd, 0x40, 0x1c, 0x98, 0x05, 0x23, 0x04, - 0x40, 0x18, 0xd0, 0x73, 0x6a, 0xfd, 0x98, 0x03, - 0x28, 0x00, 0xd0, 0x14, 0x26, 0x00, 0x2e, 0x08, - 0xdb, 0x04, 0xe0, 0x0e, 0x1c, 0x70, 0x06, 0x06, - 0x0e, 0x36, 0xe7, 0xf8, 0x00, 0xb0, 0x19, 0x40, - 0x68, 0x40, 0x00, 0xb1, 0x19, 0x49, 0x64, 0x48, - 0x20, 0x00, 0x00, 0xb1, 0x19, 0x49, 0x62, 0x48, - 0xe7, 0xf0, 0x88, 0x28, 0x80, 0x68, 0x20, 0x20, - 0x40, 0x20, 0xd1, 0x3e, 0x99, 0x0e, 0x79, 0xc8, - 0x09, 0x40, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x0a, - 0x99, 0x0e, 0x79, 0xc8, 0x06, 0xc0, 0x0e, 0xc0, - 0x90, 0x09, 0x98, 0x0a, 0x30, 0x01, 0x06, 0x06, - 0x0e, 0x36, 0x2e, 0x08, 0xdb, 0x04, 0xe0, 0x10, - 0x1c, 0x70, 0x06, 0x06, 0x0e, 0x36, 0xe7, 0xf8, - 0x20, 0x00, 0x00, 0xb1, 0x19, 0x49, 0xe0, 0x01, - 0xe0, 0x9d, 0xe0, 0x9c, 0x64, 0x48, 0x88, 0x68, - 0x21, 0x80, 0x41, 0x31, 0x43, 0x88, 0x80, 0x68, - 0xe7, 0xee, 0x98, 0x0a, 0x00, 0x80, 0x19, 0x40, - 0x6c, 0x41, 0x98, 0x09, 0x00, 0x80, 0x4a, 0x4b, - 0x58, 0x10, 0x40, 0x08, 0x99, 0x0a, 0x00, 0x89, - 0x19, 0x49, 0x64, 0x48, 0x06, 0x20, 0x0e, 0x00, - 0x24, 0x20, 0x43, 0x04, 0x98, 0x01, 0x0a, 0x00, - 0x02, 0x00, 0x90, 0x01, 0x98, 0x01, 0x99, 0x0c, - 0x43, 0x08, 0x90, 0x01, 0x98, 0x01, 0x99, 0x02, - 0x60, 0x08, 0x78, 0x38, 0x23, 0x80, 0x40, 0x18, - 0xd0, 0x19, 0x99, 0x0e, 0x7b, 0x08, 0x07, 0x42, - 0x0f, 0x52, 0x92, 0x07, 0x99, 0x0e, 0x7b, 0x08, - 0x08, 0xc0, 0x06, 0x02, 0x0e, 0x12, 0x92, 0x08, - 0x1d, 0xe9, 0x31, 0x3d, 0x91, 0x06, 0x99, 0x06, - 0x9a, 0x08, 0x5c, 0x88, 0x49, 0x36, 0x9a, 0x07, - 0x5c, 0x89, 0xe0, 0x00, 0xe0, 0x4e, 0x40, 0x08, - 0x99, 0x06, 0x9a, 0x08, 0x54, 0x88, 0x99, 0x0e, - 0x79, 0x88, 0x06, 0xc0, 0x0e, 0xc0, 0x90, 0x00, - 0x98, 0x00, 0x49, 0x30, 0x40, 0xc1, 0x91, 0x00, - 0x99, 0x0e, 0x79, 0x88, 0x09, 0x40, 0x06, 0x02, - 0x0e, 0x12, 0x92, 0x0b, 0x9a, 0x0b, 0x00, 0x90, - 0x19, 0x40, 0x6c, 0x40, 0x99, 0x00, 0x40, 0x08, - 0xd0, 0x33, 0x06, 0x20, 0x0e, 0x00, 0x24, 0x40, - 0x43, 0x04, 0x9a, 0x0b, 0x00, 0x90, 0x19, 0x40, - 0x6c, 0x40, 0x99, 0x00, 0x40, 0x41, 0x00, 0x90, - 0x19, 0x40, 0x64, 0x41, 0x9a, 0x0b, 0x00, 0x90, - 0x19, 0x40, 0x6a, 0x40, 0x99, 0x00, 0x43, 0x01, - 0x00, 0x90, 0x19, 0x40, 0x62, 0x41, 0x9a, 0x0b, - 0x00, 0x90, 0x19, 0x40, 0x6c, 0x40, 0x28, 0x00, - 0xd1, 0x17, 0x88, 0x68, 0x9a, 0x0b, 0x21, 0x80, - 0x41, 0x11, 0x43, 0x88, 0x80, 0x68, 0x88, 0x68, - 0x28, 0x00, 0xd1, 0x0e, 0x06, 0x20, 0x0e, 0x00, - 0x24, 0x02, 0x43, 0x04, 0x23, 0xfe, 0x40, 0x1c, - 0x98, 0x0c, 0x30, 0x02, 0x06, 0x00, 0x0e, 0x00, - 0x90, 0x0c, 0x98, 0x0c, 0x23, 0x3e, 0x40, 0x18, - 0x90, 0x0c, 0xe0, 0x0a, 0x06, 0x20, 0x0e, 0x00, - 0x24, 0x40, 0x43, 0x04, 0x23, 0xfe, 0x40, 0x1c, - 0x98, 0x0c, 0x1c, 0x41, 0x98, 0x04, 0xf0, 0x00, - 0xf8, 0x13, 0x9a, 0x0f, 0x70, 0x14, 0x70, 0x7c, - 0x20, 0x00, 0xb0, 0x0d, 0xe6, 0xe2, 0x20, 0xb1, - 0xb0, 0x0d, 0xe6, 0xdf, 0xb0, 0x0d, 0xe6, 0xdd, - 0x64, 0x00, 0x08, 0x00, 0x2e, 0x08, 0x20, 0x90, - 0x2e, 0x08, 0x21, 0x10, 0x80, 0x00, 0x00, 0x00, - 0xb5, 0xf3, 0x98, 0x00, 0x06, 0x07, 0x0e, 0x3f, - 0x99, 0x01, 0x06, 0x0e, 0x0e, 0x36, 0x00, 0xf8, - 0x4b, 0x13, 0x18, 0xc5, 0x01, 0x38, 0x4b, 0x13, - 0x18, 0xc4, 0x01, 0x38, 0x4b, 0x12, 0x18, 0xc2, - 0x68, 0x10, 0x23, 0x40, 0x43, 0xdb, 0x40, 0x18, - 0x60, 0x10, 0x2e, 0x3e, 0xdc, 0x15, 0x68, 0x20, - 0x1c, 0x01, 0x0a, 0x09, 0x02, 0x09, 0x43, 0x31, - 0x60, 0x21, 0x68, 0x28, 0x1c, 0x01, 0x0a, 0x09, - 0x02, 0x09, 0x23, 0x3e, 0x43, 0x19, 0x60, 0x29, - 0x68, 0x10, 0x23, 0x40, 0x43, 0x18, 0x60, 0x10, - 0x20, 0x00, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0xbd, 0xe7, 0xf9, 0xe7, 0xf8, - 0x64, 0x00, 0x10, 0x00, 0x64, 0x00, 0x08, 0x00, - 0x64, 0x00, 0x08, 0x08, 0xb5, 0xf3, 0xb0, 0x93, - 0x98, 0x13, 0x69, 0x00, 0x90, 0x01, 0x98, 0x01, - 0x78, 0x40, 0x23, 0x80, 0x40, 0x18, 0xd0, 0x05, - 0x20, 0xbe, 0xb0, 0x13, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x98, 0x01, 0x78, 0x80, - 0x90, 0x08, 0x98, 0x08, 0x23, 0x40, 0x40, 0x18, - 0xd0, 0x73, 0x98, 0x08, 0x23, 0x20, 0x40, 0x18, - 0xd0, 0x6f, 0x98, 0x01, 0x6b, 0x07, 0x98, 0x01, - 0x79, 0xc0, 0x00, 0x80, 0x49, 0x76, 0x58, 0x08, - 0x90, 0x00, 0x98, 0x00, 0x68, 0xc0, 0x1c, 0x06, - 0xd1, 0x02, 0x20, 0xb6, 0xb0, 0x13, 0xe7, 0xe1, - 0x78, 0xb0, 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x02, - 0x20, 0xb6, 0xb0, 0x13, 0xe7, 0xda, 0xa9, 0x11, - 0x1c, 0x30, 0xf0, 0x00, 0xf9, 0x2b, 0x90, 0x02, - 0x98, 0x11, 0x28, 0x00, 0xd1, 0x02, 0x98, 0x02, - 0xb0, 0x13, 0xe7, 0xcf, 0x98, 0x11, 0x90, 0x0e, - 0x20, 0x01, 0x90, 0x0b, 0x98, 0x13, 0x88, 0x40, - 0x90, 0x0d, 0x98, 0x13, 0x68, 0x40, 0x90, 0x06, - 0x98, 0x13, 0x68, 0x81, 0x91, 0x10, 0x99, 0x10, - 0x1d, 0xc8, 0x30, 0xb9, 0x90, 0x05, 0x98, 0x05, - 0x99, 0x06, 0x1a, 0x40, 0x04, 0x04, 0x0c, 0x24, - 0x99, 0x14, 0x79, 0x88, 0x90, 0x03, 0x98, 0x03, - 0x06, 0xc0, 0x0e, 0xc0, 0x90, 0x0a, 0x98, 0x0a, - 0x49, 0x5a, 0x40, 0xc1, 0x91, 0x0a, 0x98, 0x03, - 0x09, 0x40, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x09, - 0x98, 0x09, 0x00, 0x80, 0x19, 0xc0, 0x6b, 0x80, - 0x99, 0x0a, 0x40, 0x08, 0xd0, 0x02, 0x20, 0xb1, - 0xb0, 0x13, 0xe7, 0x9f, 0x20, 0xb8, 0x90, 0x0c, - 0x98, 0x11, 0x30, 0x08, 0x90, 0x04, 0x20, 0x00, - 0x90, 0x07, 0x98, 0x07, 0x28, 0x00, 0xd0, 0x10, - 0x99, 0x10, 0x68, 0x09, 0x91, 0x10, 0x99, 0x10, - 0x1d, 0x08, 0x90, 0x12, 0x98, 0x12, 0x78, 0x80, - 0x99, 0x10, 0x18, 0x40, 0x90, 0x06, 0x98, 0x12, - 0x78, 0x81, 0x20, 0xc0, 0x1a, 0x40, 0x04, 0x04, - 0x0c, 0x24, 0x98, 0x0d, 0x42, 0x84, 0xdb, 0x05, - 0xe0, 0x00, 0xe0, 0x7c, 0x9c, 0x0d, 0x20, 0x00, - 0x90, 0x0d, 0xe0, 0x06, 0x98, 0x0d, 0x1b, 0x00, - 0x04, 0x00, 0x0c, 0x00, 0x90, 0x0d, 0x20, 0x01, - 0x90, 0x07, 0x98, 0x0c, 0x42, 0xa0, 0xda, 0x2e, - 0x25, 0x00, 0x98, 0x0c, 0x42, 0x85, 0xdb, 0x04, - 0xe0, 0x0c, 0x1c, 0x68, 0x06, 0x05, 0x0e, 0x2d, - 0xe7, 0xf7, 0x98, 0x06, 0x78, 0x01, 0x30, 0x01, - 0x90, 0x06, 0x98, 0x04, 0x70, 0x01, 0x30, 0x01, - 0x90, 0x04, 0xe7, 0xf2, 0x98, 0x0c, 0x1a, 0x20, - 0x04, 0x04, 0x0c, 0x24, 0xa9, 0x11, 0x1c, 0x30, - 0xf0, 0x00, 0xf8, 0xac, 0x90, 0x02, 0x98, 0x11, - 0x28, 0x00, 0xd1, 0x08, 0x98, 0x0e, 0x60, 0xb0, - 0x68, 0x70, 0x99, 0x0b, 0x18, 0x40, 0x60, 0x70, - 0x98, 0x02, 0xb0, 0x13, 0xe7, 0x4a, 0x98, 0x0b, - 0x30, 0x01, 0x90, 0x0b, 0x20, 0xb8, 0x90, 0x0c, - 0x98, 0x11, 0x30, 0x08, 0x90, 0x04, 0x25, 0x00, - 0x42, 0xa5, 0xdb, 0x04, 0xe0, 0x0c, 0x1c, 0x68, - 0x06, 0x05, 0x0e, 0x2d, 0xe7, 0xf8, 0x98, 0x06, - 0x78, 0x01, 0x30, 0x01, 0x90, 0x06, 0x98, 0x04, - 0x70, 0x01, 0x30, 0x01, 0x90, 0x04, 0xe7, 0xf2, - 0x98, 0x0c, 0x1b, 0x00, 0x04, 0x00, 0x0c, 0x00, - 0x90, 0x0c, 0x98, 0x0d, 0x28, 0x00, 0xd1, 0x90, - 0x6b, 0x39, 0x91, 0x0f, 0x6a, 0xf8, 0x28, 0x00, - 0xd1, 0x02, 0x98, 0x0e, 0x62, 0xf8, 0xe0, 0x05, - 0x98, 0x0e, 0x99, 0x0f, 0x60, 0x08, 0x98, 0x0e, - 0x6d, 0xb9, 0x60, 0x08, 0x98, 0x09, 0x00, 0x80, - 0x19, 0xc0, 0x6b, 0x80, 0x99, 0x0a, 0x43, 0x01, - 0x98, 0x09, 0x00, 0x80, 0x19, 0xc0, 0x63, 0x81, - 0x6b, 0x78, 0x99, 0x0b, 0x18, 0x40, 0x63, 0x78, - 0x20, 0x00, 0x99, 0x11, 0x60, 0x08, 0x98, 0x11, - 0x63, 0x38, 0x98, 0x0e, 0x30, 0x04, 0x65, 0xb8, - 0x98, 0x02, 0xb0, 0x13, 0xe7, 0x02, 0x20, 0xb1, - 0xb0, 0x13, 0xe6, 0xff, 0xb0, 0x13, 0xe6, 0xfd, - 0x2e, 0x08, 0x9b, 0xc8, 0x80, 0x00, 0x00, 0x00, - 0xb4, 0xf0, 0x1c, 0x01, 0x78, 0x88, 0x23, 0x20, - 0x40, 0x18, 0xd0, 0x42, 0x79, 0xc8, 0x00, 0x80, - 0x4b, 0x21, 0x58, 0x1d, 0x6b, 0x0a, 0x68, 0xef, - 0x68, 0x10, 0x28, 0x00, 0xd0, 0x17, 0x68, 0xfe, - 0x68, 0x10, 0x60, 0x30, 0x68, 0x50, 0x60, 0xf8, - 0x68, 0x78, 0x68, 0x93, 0x18, 0xc0, 0x60, 0x78, - 0x20, 0x00, 0x60, 0x10, 0x20, 0x00, 0x60, 0x50, - 0x20, 0x00, 0x60, 0x90, 0x68, 0x78, 0x78, 0x3b, - 0x42, 0x98, 0xd9, 0x04, 0x78, 0xb8, 0x23, 0x02, - 0x43, 0xdb, 0x40, 0x18, 0x70, 0xb8, 0x6a, 0xd0, - 0x60, 0x10, 0x6b, 0x10, 0x60, 0x50, 0x6b, 0x50, - 0x60, 0x90, 0x24, 0x00, 0x2c, 0x08, 0xdb, 0x04, - 0xe0, 0x0e, 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, - 0xe7, 0xf8, 0x00, 0xa0, 0x18, 0x80, 0x6b, 0x80, - 0x00, 0xa3, 0x18, 0x9b, 0x60, 0xd8, 0x23, 0x00, - 0x00, 0xa0, 0x18, 0x80, 0x63, 0x83, 0xe7, 0xf0, - 0x20, 0x00, 0x62, 0xd0, 0x20, 0x00, 0x63, 0x10, - 0x20, 0x00, 0x63, 0x50, 0x20, 0x00, 0xbc, 0xf0, - 0x47, 0x70, 0x20, 0xb1, 0xe7, 0xfb, 0xe7, 0xfa, - 0x2e, 0x08, 0x9b, 0xc8, 0xb4, 0x90, 0x1c, 0x02, - 0x1c, 0x0f, 0x78, 0x14, 0x68, 0x90, 0x1c, 0x01, - 0xd1, 0x08, 0x20, 0x00, 0x60, 0x38, 0x78, 0x90, - 0x23, 0x01, 0x43, 0x18, 0x70, 0x90, 0x20, 0xb7, - 0xbc, 0x90, 0x47, 0x70, 0x68, 0x08, 0x60, 0x90, - 0x20, 0x00, 0x60, 0x48, 0x60, 0x39, 0x68, 0x50, - 0x38, 0x01, 0x60, 0x50, 0x68, 0x50, 0x42, 0xa0, - 0xd1, 0x02, 0x20, 0xbf, 0xe7, 0xf0, 0xe0, 0x01, - 0x20, 0x00, 0xe7, 0xed, 0xe7, 0xec, 0x00, 0x00, - 0x1c, 0x01, 0x22, 0x00, 0x6a, 0x50, 0x68, 0x02, - 0x60, 0x0a, 0x4a, 0x05, 0x6f, 0xd2, 0x60, 0x8a, - 0x4a, 0x04, 0x68, 0x12, 0x60, 0x4a, 0x22, 0x1d, - 0x02, 0x92, 0x68, 0x12, 0x60, 0xca, 0x47, 0x70, - 0xcc, 0x00, 0x0f, 0x80, 0x2e, 0x08, 0x20, 0x24, - 0x1c, 0x01, 0x48, 0x02, 0x60, 0x01, 0x20, 0x00, - 0x47, 0x70, 0xe7, 0xfd, 0x66, 0x00, 0x01, 0x00, - 0x1c, 0x01, 0x20, 0x33, 0x06, 0x40, 0x62, 0x01, - 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, - 0x20, 0x33, 0x06, 0x40, 0x6a, 0xc0, 0x23, 0x7f, - 0x03, 0x9b, 0x40, 0x18, 0x03, 0x8a, 0x43, 0x10, - 0x22, 0x33, 0x06, 0x52, 0x62, 0xd0, 0x20, 0x00, - 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, 0x20, 0x33, - 0x06, 0x40, 0x6a, 0xc0, 0x23, 0x03, 0x03, 0x1b, - 0x40, 0x18, 0x43, 0x08, 0x22, 0x33, 0x06, 0x52, - 0x62, 0xd0, 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, - 0x1c, 0x01, 0x06, 0x0a, 0x0e, 0x12, 0x2a, 0x00, - 0xd0, 0x06, 0x20, 0x33, 0x06, 0x40, 0x6a, 0xc0, - 0x23, 0x01, 0x05, 0x5b, 0x43, 0x18, 0xe0, 0x04, - 0x20, 0x33, 0x06, 0x40, 0x6a, 0xc0, 0x4b, 0x04, - 0x40, 0x18, 0x23, 0x33, 0x06, 0x5b, 0x62, 0xd8, - 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x00, 0x00, - 0xff, 0xdf, 0xff, 0xff, 0x48, 0x04, 0x69, 0x80, - 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x01, 0x20, 0xff, - 0x47, 0x70, 0x20, 0x00, 0xe7, 0xfc, 0xe7, 0xfb, - 0x66, 0x00, 0x00, 0x80, 0xb4, 0x80, 0x1c, 0x01, - 0x06, 0x0f, 0x0e, 0x3f, 0x4a, 0x08, 0x2f, 0x00, - 0xd0, 0x03, 0x68, 0x10, 0x23, 0x01, 0x43, 0x18, - 0xe0, 0x02, 0x68, 0x10, 0x08, 0x40, 0x00, 0x40, - 0x68, 0x13, 0x43, 0x18, 0x60, 0x10, 0x20, 0x00, - 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xfc, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x98, 0xb4, 0x80, 0x1c, 0x07, - 0x1c, 0x0a, 0x4b, 0x06, 0x40, 0x1a, 0x4b, 0x06, - 0x40, 0x1f, 0x0b, 0x10, 0x02, 0x39, 0x43, 0x08, - 0x49, 0x04, 0x61, 0xc8, 0x20, 0x00, 0xbc, 0x80, - 0x47, 0x70, 0xe7, 0xfc, 0x01, 0xff, 0xf0, 0x00, - 0x00, 0xff, 0xf0, 0x00, 0x66, 0x00, 0x00, 0x80, - 0x48, 0x01, 0x69, 0xc0, 0x47, 0x70, 0xe7, 0xfd, - 0x66, 0x00, 0x00, 0x80, 0x1c, 0x01, 0x48, 0x07, - 0x68, 0x02, 0x4b, 0x07, 0x40, 0x1a, 0x60, 0x02, - 0x23, 0x01, 0x05, 0x9b, 0x42, 0x99, 0xd1, 0x03, - 0x48, 0x02, 0x68, 0x02, 0x43, 0x0a, 0x60, 0x02, - 0x47, 0x70, 0x00, 0x00, 0x66, 0x00, 0x00, 0x2c, - 0xff, 0xbf, 0xff, 0xff, 0x1c, 0x01, 0x20, 0x33, - 0x06, 0x40, 0x67, 0x41, 0x47, 0x70, 0x1c, 0x01, - 0x20, 0x33, 0x06, 0x40, 0x67, 0x81, 0x47, 0x70, - 0xb5, 0x90, 0x4c, 0x21, 0x20, 0x01, 0x60, 0x20, - 0xf0, 0x12, 0xff, 0xa4, 0x48, 0x1f, 0x69, 0x84, - 0x27, 0x00, 0x2f, 0x04, 0xd3, 0x04, 0xe0, 0x06, - 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, - 0x21, 0x00, 0xc4, 0x02, 0xe7, 0xf8, 0x20, 0x00, - 0x49, 0x18, 0x69, 0x49, 0x60, 0x08, 0x20, 0x00, - 0x49, 0x16, 0x69, 0x49, 0x60, 0x48, 0x20, 0x00, - 0x49, 0x14, 0x69, 0x49, 0x60, 0x88, 0x20, 0x00, - 0x49, 0x12, 0x69, 0x49, 0x60, 0xc8, 0x20, 0x00, - 0x49, 0x10, 0x69, 0x49, 0x61, 0x08, 0x20, 0x00, - 0x49, 0x0e, 0x69, 0x49, 0x61, 0x48, 0x20, 0x00, - 0x49, 0x0c, 0x69, 0x49, 0x61, 0x88, 0x20, 0x00, - 0x49, 0x0a, 0x69, 0x49, 0x61, 0xc8, 0x20, 0x00, - 0x49, 0x08, 0x69, 0x49, 0x62, 0x08, 0x20, 0x00, - 0x49, 0x06, 0x69, 0x49, 0x62, 0x48, 0x20, 0x18, - 0x49, 0x04, 0x69, 0x49, 0x62, 0x88, 0x20, 0x00, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xe7, 0xfb, - 0x70, 0x00, 0x00, 0x38, 0x2e, 0x08, 0x20, 0x28, - 0xb5, 0xff, 0x1c, 0x0f, 0xb0, 0x81, 0x9c, 0x01, - 0x69, 0x20, 0x28, 0x08, 0xd1, 0x01, 0x08, 0x7f, - 0x00, 0x7f, 0x6b, 0xa0, 0x9a, 0x03, 0x43, 0x50, - 0x19, 0xc6, 0x69, 0x20, 0x00, 0x80, 0x49, 0x34, - 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x00, - 0x08, 0x76, 0x69, 0x20, 0x00, 0x80, 0x49, 0x31, - 0x58, 0x08, 0x43, 0x70, 0x90, 0x00, 0x69, 0xa0, - 0x99, 0x00, 0x09, 0x49, 0x18, 0x45, 0x6b, 0xe0, - 0x28, 0x00, 0xd1, 0x02, 0x03, 0x28, 0x0b, 0x00, - 0xe0, 0x01, 0x02, 0x28, 0x0a, 0x00, 0x1c, 0x05, - 0xf0, 0x12, 0xff, 0x42, 0xf0, 0x12, 0xff, 0x1e, - 0x48, 0x27, 0x69, 0x80, 0x68, 0x00, 0x08, 0xc0, - 0x00, 0xc0, 0x49, 0x25, 0x69, 0x89, 0x60, 0x08, - 0x07, 0x40, 0x48, 0x23, 0x69, 0x80, 0x68, 0x00, - 0x01, 0x40, 0x09, 0x40, 0x49, 0x20, 0x69, 0x89, - 0x60, 0x08, 0x6b, 0xe0, 0x49, 0x1e, 0x69, 0x89, - 0x68, 0x09, 0x4b, 0x1e, 0x40, 0x19, 0x07, 0xc0, - 0x0c, 0x80, 0x43, 0x08, 0x49, 0x1a, 0x69, 0x89, - 0x60, 0x08, 0x04, 0x80, 0x0f, 0xc0, 0x1c, 0x21, - 0x1c, 0x20, 0xf0, 0x00, 0xfe, 0x51, 0x48, 0x16, - 0x69, 0xc0, 0x68, 0x00, 0x4b, 0x16, 0x40, 0x18, - 0x02, 0x29, 0x0a, 0x09, 0x00, 0x89, 0x43, 0x08, - 0x49, 0x11, 0x69, 0xc9, 0x60, 0x08, 0x01, 0x80, - 0x48, 0x0f, 0x69, 0xc0, 0x68, 0x00, 0x01, 0x40, - 0x09, 0x40, 0x99, 0x00, 0x06, 0xc9, 0x43, 0x08, - 0x49, 0x0b, 0x69, 0xc9, 0x60, 0x08, 0x99, 0x04, - 0x1c, 0x20, 0x22, 0x00, 0xf0, 0x00, 0xfe, 0xbc, - 0xf0, 0x00, 0xff, 0x9d, 0xf0, 0x12, 0xff, 0x14, - 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x01, 0xe7, 0xf9, - 0x2e, 0x03, 0xa8, 0x78, 0x2e, 0x03, 0xa8, 0xc8, - 0x2e, 0x08, 0x20, 0x28, 0xff, 0xff, 0xdf, 0xff, - 0xfc, 0x00, 0x00, 0x03, 0xb5, 0xff, 0x1c, 0x0f, - 0xb0, 0x81, 0x9c, 0x01, 0x69, 0x20, 0x28, 0x08, - 0xd1, 0x01, 0x08, 0x7f, 0x00, 0x7f, 0x6b, 0xa0, - 0x9a, 0x03, 0x43, 0x50, 0x19, 0xc6, 0x69, 0x20, - 0x00, 0x80, 0x49, 0x37, 0x58, 0x08, 0x23, 0x04, - 0x40, 0x18, 0xd0, 0x00, 0x08, 0x76, 0x69, 0x20, - 0x00, 0x80, 0x49, 0x34, 0x58, 0x08, 0x43, 0x70, - 0x90, 0x00, 0x69, 0xa0, 0x99, 0x00, 0x09, 0x49, - 0x18, 0x45, 0x6b, 0xe0, 0x28, 0x00, 0xd1, 0x02, - 0x03, 0x28, 0x0b, 0x00, 0xe0, 0x01, 0x02, 0x28, - 0x0a, 0x00, 0x1c, 0x05, 0xf0, 0x12, 0xfe, 0xc0, - 0xf0, 0x12, 0xfe, 0x9c, 0x48, 0x2a, 0x69, 0x80, - 0x68, 0x00, 0x08, 0xc0, 0x00, 0xc0, 0x23, 0x01, - 0x43, 0x18, 0x49, 0x27, 0x69, 0x89, 0x60, 0x08, - 0x07, 0x40, 0x6b, 0xe0, 0x49, 0x24, 0x69, 0x89, - 0x68, 0x09, 0x4b, 0x24, 0x40, 0x19, 0x07, 0xc0, - 0x0c, 0x80, 0x43, 0x08, 0x49, 0x20, 0x69, 0x89, - 0x60, 0x08, 0x04, 0x80, 0x0f, 0xc0, 0x48, 0x1e, - 0x69, 0x80, 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, - 0x99, 0x00, 0x06, 0xc9, 0x43, 0x01, 0x48, 0x1a, - 0x69, 0x80, 0x60, 0x01, 0x1c, 0x21, 0x1c, 0x20, - 0xf0, 0x00, 0xfd, 0xca, 0x48, 0x16, 0x69, 0xc0, - 0x68, 0x00, 0x4b, 0x17, 0x40, 0x18, 0x02, 0x29, - 0x0a, 0x09, 0x00, 0x89, 0x43, 0x08, 0x49, 0x12, - 0x69, 0xc9, 0x60, 0x08, 0x01, 0x80, 0x48, 0x10, - 0x69, 0xc0, 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, - 0x49, 0x0d, 0x69, 0xc9, 0x60, 0x08, 0xf0, 0x00, - 0xff, 0x1e, 0xf0, 0x12, 0xfe, 0x73, 0x48, 0x0a, - 0x6b, 0x81, 0x1c, 0x20, 0xf0, 0x00, 0xfe, 0xf0, - 0x9b, 0x04, 0x60, 0x18, 0xf0, 0x12, 0xfe, 0x8c, - 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x01, 0xe7, 0xf9, - 0x2e, 0x03, 0xa8, 0x78, 0x2e, 0x03, 0xa8, 0xc8, - 0x2e, 0x08, 0x20, 0x28, 0xff, 0xff, 0xdf, 0xff, - 0xfc, 0x00, 0x00, 0x03, 0xb5, 0xff, 0x1c, 0x0c, - 0x1c, 0x1f, 0xb0, 0x83, 0x9d, 0x03, 0x6b, 0x28, - 0x6a, 0xa9, 0x1a, 0x40, 0x30, 0x01, 0x90, 0x00, - 0x19, 0xe0, 0x99, 0x00, 0x42, 0x88, 0xd9, 0x01, - 0x98, 0x00, 0x1b, 0x07, 0x69, 0x28, 0x28, 0x08, - 0xd1, 0x02, 0x08, 0x7f, 0x08, 0x64, 0x00, 0x64, - 0x6b, 0xa8, 0x9a, 0x05, 0x43, 0x50, 0x19, 0x01, - 0x91, 0x01, 0x69, 0x28, 0x00, 0x80, 0x49, 0x38, - 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x02, - 0x99, 0x01, 0x08, 0x49, 0x91, 0x01, 0x69, 0x28, - 0x00, 0x80, 0x49, 0x34, 0x58, 0x08, 0x99, 0x01, - 0x43, 0x48, 0x90, 0x02, 0x69, 0xa8, 0x99, 0x02, - 0x09, 0x49, 0x18, 0x46, 0x6b, 0xe8, 0x28, 0x00, - 0xd1, 0x02, 0x03, 0x30, 0x0b, 0x00, 0xe0, 0x01, - 0x02, 0x30, 0x0a, 0x00, 0x1c, 0x06, 0xf0, 0x12, - 0xfe, 0x27, 0xf0, 0x12, 0xfe, 0x03, 0x48, 0x2a, - 0x69, 0x80, 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, - 0x49, 0x27, 0x69, 0x89, 0x60, 0x08, 0x48, 0x26, - 0x69, 0x80, 0x68, 0x00, 0x08, 0xc0, 0x00, 0xc0, - 0x23, 0x02, 0x43, 0x18, 0x49, 0x22, 0x69, 0x89, - 0x60, 0x08, 0x07, 0x40, 0x6b, 0xe8, 0x49, 0x20, - 0x69, 0x89, 0x68, 0x09, 0x4b, 0x1f, 0x40, 0x19, - 0x07, 0xc0, 0x0c, 0x80, 0x43, 0x08, 0x49, 0x1c, - 0x69, 0x89, 0x60, 0x08, 0x04, 0x80, 0x0f, 0xc0, - 0x1c, 0x29, 0x1c, 0x28, 0xf0, 0x00, 0xfd, 0x34, - 0x48, 0x17, 0x69, 0xc0, 0x68, 0x00, 0x4b, 0x18, - 0x40, 0x18, 0x02, 0x31, 0x0a, 0x09, 0x00, 0x89, - 0x43, 0x08, 0x49, 0x13, 0x69, 0xc9, 0x60, 0x08, - 0x01, 0x80, 0x48, 0x11, 0x69, 0xc0, 0x68, 0x00, - 0x01, 0x40, 0x09, 0x40, 0x99, 0x02, 0x06, 0xc9, - 0x43, 0x08, 0x49, 0x0d, 0x69, 0xc9, 0x60, 0x08, - 0x99, 0x0c, 0x1c, 0x28, 0x22, 0x02, 0xf0, 0x00, - 0xfd, 0x9f, 0x48, 0x09, 0x69, 0x40, 0x62, 0x07, - 0xf0, 0x00, 0xfe, 0x7d, 0xf0, 0x12, 0xfd, 0xf4, - 0x20, 0x00, 0xb0, 0x03, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x03, 0xe7, 0xf9, - 0x2e, 0x03, 0xa8, 0x78, 0x2e, 0x03, 0xa8, 0xc8, - 0x2e, 0x08, 0x20, 0x28, 0xff, 0xff, 0xdf, 0xff, - 0xfc, 0x00, 0x00, 0x03, 0xb5, 0xff, 0xb0, 0x81, - 0x9f, 0x01, 0x6b, 0x78, 0x6a, 0xf9, 0x1a, 0x40, - 0x30, 0x01, 0x90, 0x00, 0x9a, 0x03, 0x9b, 0x04, - 0x18, 0xd0, 0x99, 0x00, 0x42, 0x88, 0xd9, 0x03, - 0x98, 0x00, 0x9a, 0x03, 0x1a, 0x83, 0x93, 0x04, - 0x69, 0x38, 0x28, 0x08, 0xd1, 0x03, 0x99, 0x02, - 0x08, 0x49, 0x00, 0x49, 0x91, 0x02, 0x6b, 0xb8, - 0x9a, 0x03, 0x43, 0x50, 0x99, 0x02, 0x18, 0x45, - 0x69, 0x38, 0x00, 0x80, 0x49, 0x3c, 0x58, 0x08, - 0x23, 0x04, 0x40, 0x18, 0xd0, 0x00, 0x08, 0x6d, - 0x69, 0x38, 0x00, 0x80, 0x49, 0x39, 0x58, 0x08, - 0x1c, 0x06, 0x43, 0x6e, 0x69, 0xb8, 0x09, 0x71, - 0x18, 0x44, 0x6b, 0xf8, 0x28, 0x00, 0xd1, 0x02, - 0x03, 0x20, 0x0b, 0x00, 0xe0, 0x01, 0x02, 0x20, - 0x0a, 0x00, 0x1c, 0x04, 0xf0, 0x12, 0xfd, 0x90, - 0xf0, 0x12, 0xfd, 0x6c, 0x48, 0x30, 0x69, 0x80, - 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, 0x49, 0x2e, - 0x69, 0x89, 0x60, 0x08, 0x48, 0x2c, 0x69, 0x80, - 0x68, 0x00, 0x08, 0xc0, 0x00, 0xc0, 0x23, 0x03, - 0x43, 0x18, 0x49, 0x29, 0x69, 0x89, 0x60, 0x08, - 0x07, 0x40, 0x6b, 0xf8, 0x49, 0x26, 0x69, 0x89, - 0x68, 0x09, 0x4b, 0x26, 0x40, 0x19, 0x07, 0xc0, - 0x0c, 0x80, 0x43, 0x08, 0x49, 0x22, 0x69, 0x89, - 0x60, 0x08, 0x04, 0x80, 0x0f, 0xc0, 0x1c, 0x39, - 0x1c, 0x38, 0xf0, 0x00, 0xfc, 0x9d, 0x99, 0x0a, - 0x1c, 0x38, 0x22, 0x03, 0xf0, 0x00, 0xfd, 0x20, - 0x69, 0xf8, 0x49, 0x1b, 0x69, 0x49, 0x61, 0x08, - 0x48, 0x19, 0x69, 0xc0, 0x68, 0x00, 0x4b, 0x1a, - 0x40, 0x18, 0x02, 0x21, 0x0a, 0x09, 0x00, 0x89, - 0x43, 0x08, 0x49, 0x15, 0x69, 0xc9, 0x60, 0x08, - 0x01, 0x80, 0x48, 0x13, 0x69, 0xc0, 0x68, 0x00, - 0x01, 0x40, 0x09, 0x40, 0x06, 0xf1, 0x43, 0x08, - 0x49, 0x0f, 0x69, 0xc9, 0x60, 0x08, 0x48, 0x0e, - 0x69, 0x40, 0x61, 0x84, 0x06, 0xf0, 0x0e, 0xc0, - 0x49, 0x0b, 0x69, 0x49, 0x61, 0x48, 0x9b, 0x04, - 0x48, 0x09, 0x69, 0x40, 0x62, 0x43, 0xf0, 0x00, - 0xfd, 0xda, 0xf0, 0x12, 0xfd, 0x51, 0x20, 0x00, - 0xb0, 0x01, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0xb0, 0x01, 0xe7, 0xf9, 0x00, 0x00, - 0x2e, 0x03, 0xa8, 0x78, 0x2e, 0x03, 0xa8, 0xc8, - 0x2e, 0x08, 0x20, 0x28, 0xff, 0xff, 0xdf, 0xff, - 0xfc, 0x00, 0x00, 0x03, 0xb5, 0xf3, 0xb0, 0x86, - 0x9f, 0x06, 0x99, 0x07, 0x68, 0x8c, 0x99, 0x07, - 0x68, 0xc8, 0x90, 0x03, 0x99, 0x07, 0x68, 0x0d, - 0x99, 0x07, 0x68, 0x49, 0x91, 0x02, 0x6b, 0x78, - 0x6a, 0xf9, 0x1a, 0x40, 0x30, 0x01, 0x90, 0x01, - 0x6b, 0x38, 0x6a, 0xb9, 0x1a, 0x40, 0x30, 0x01, - 0x90, 0x00, 0x99, 0x02, 0x98, 0x03, 0x18, 0x08, - 0x99, 0x01, 0x42, 0x88, 0xd9, 0x03, 0x98, 0x01, - 0x99, 0x02, 0x1a, 0x40, 0x90, 0x03, 0x19, 0x28, - 0x99, 0x00, 0x42, 0x88, 0xd9, 0x01, 0x98, 0x00, - 0x1b, 0x44, 0x69, 0x38, 0x28, 0x08, 0xd1, 0x02, - 0x08, 0x64, 0x08, 0x6d, 0x00, 0x6d, 0x6b, 0xb8, - 0x99, 0x02, 0x43, 0x48, 0x19, 0x41, 0x91, 0x04, - 0x69, 0x38, 0x00, 0x80, 0x49, 0x41, 0x58, 0x08, - 0x23, 0x04, 0x40, 0x18, 0xd0, 0x02, 0x99, 0x04, - 0x08, 0x49, 0x91, 0x04, 0x69, 0x38, 0x00, 0x80, - 0x49, 0x3d, 0x58, 0x08, 0x99, 0x04, 0x43, 0x48, - 0x90, 0x05, 0x69, 0xb8, 0x99, 0x05, 0x09, 0x49, - 0x18, 0x46, 0x6b, 0xf8, 0x28, 0x00, 0xd1, 0x02, - 0x03, 0x30, 0x0b, 0x00, 0xe0, 0x01, 0x02, 0x30, - 0x0a, 0x00, 0x1c, 0x06, 0xf0, 0x12, 0xfc, 0xd4, - 0xf0, 0x12, 0xfc, 0xb0, 0x48, 0x33, 0x69, 0x80, - 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, 0x49, 0x31, - 0x69, 0x89, 0x60, 0x08, 0x48, 0x2f, 0x69, 0x80, - 0x68, 0x00, 0x08, 0xc0, 0x00, 0xc0, 0x23, 0x04, - 0x43, 0x18, 0x49, 0x2c, 0x69, 0x89, 0x60, 0x08, - 0x07, 0x40, 0x48, 0x2a, 0x69, 0xc0, 0x68, 0x00, - 0x01, 0x40, 0x09, 0x40, 0x99, 0x05, 0x06, 0xc9, - 0x43, 0x08, 0x49, 0x26, 0x69, 0xc9, 0x60, 0x08, - 0x48, 0x24, 0x69, 0xc0, 0x68, 0x00, 0x4b, 0x24, - 0x40, 0x18, 0x02, 0x31, 0x0a, 0x09, 0x00, 0x89, - 0x43, 0x08, 0x49, 0x20, 0x69, 0xc9, 0x60, 0x08, - 0x01, 0x80, 0x1c, 0x39, 0x1c, 0x38, 0xf0, 0x00, - 0xfb, 0xd7, 0x6b, 0xf8, 0x49, 0x1b, 0x69, 0x89, - 0x68, 0x09, 0x4b, 0x1c, 0x40, 0x19, 0x07, 0xc0, - 0x0c, 0x80, 0x43, 0x08, 0x49, 0x17, 0x69, 0x89, - 0x60, 0x08, 0x04, 0x80, 0x0f, 0xc0, 0x99, 0x07, - 0x69, 0x09, 0x1c, 0x38, 0x22, 0x04, 0xf0, 0x00, - 0xfc, 0x4b, 0x69, 0xf8, 0x49, 0x11, 0x69, 0x49, - 0x61, 0x08, 0x98, 0x05, 0x06, 0xc0, 0x0e, 0xc0, - 0x49, 0x0e, 0x69, 0x49, 0x61, 0x48, 0x48, 0x0d, - 0x69, 0x40, 0x61, 0x86, 0x48, 0x0b, 0x69, 0x40, - 0x62, 0x04, 0x98, 0x03, 0x49, 0x09, 0x69, 0x49, - 0x62, 0x48, 0xf0, 0x00, 0xfd, 0x18, 0xf0, 0x12, - 0xfc, 0x8f, 0x20, 0x00, 0xb0, 0x06, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x06, - 0xe7, 0xf9, 0x00, 0x00, 0x2e, 0x03, 0xa8, 0x78, - 0x2e, 0x03, 0xa8, 0xc8, 0x2e, 0x08, 0x20, 0x28, - 0xfc, 0x00, 0x00, 0x03, 0xff, 0xff, 0xdf, 0xff, - 0xb5, 0xff, 0x9d, 0x09, 0xb0, 0x81, 0x98, 0x0b, - 0x06, 0x02, 0x0e, 0x12, 0x92, 0x00, 0xb0, 0x93, - 0x98, 0x14, 0x90, 0x12, 0x99, 0x15, 0x91, 0x11, - 0xaf, 0x0c, 0x1c, 0x38, 0x9a, 0x16, 0xca, 0x5e, - 0xc0, 0x5e, 0x68, 0x39, 0x91, 0x04, 0x68, 0x79, - 0x91, 0x03, 0x98, 0x12, 0x99, 0x11, 0x42, 0x88, - 0xd1, 0x73, 0x99, 0x03, 0x42, 0x8d, 0xd9, 0x71, - 0x68, 0xb8, 0x90, 0x01, 0x68, 0xf8, 0x90, 0x02, - 0x99, 0x11, 0x6b, 0x48, 0x6a, 0xc9, 0x1a, 0x40, - 0x1c, 0x44, 0x99, 0x11, 0x6b, 0x08, 0x6a, 0x89, - 0x1a, 0x40, 0x30, 0x01, 0x90, 0x00, 0x98, 0x02, - 0x18, 0x28, 0x42, 0xa0, 0xd9, 0x01, 0x1b, 0x61, - 0x91, 0x02, 0x9b, 0x17, 0x98, 0x01, 0x18, 0x18, - 0x99, 0x00, 0x42, 0x88, 0xd9, 0x03, 0x98, 0x00, - 0x9b, 0x17, 0x1a, 0xc0, 0x90, 0x01, 0x98, 0x01, - 0x60, 0xb8, 0x98, 0x02, 0x60, 0xf8, 0x98, 0x12, - 0x69, 0xc0, 0x90, 0x0a, 0x98, 0x12, 0x6b, 0x80, - 0x99, 0x03, 0x43, 0x48, 0x99, 0x04, 0x18, 0x41, - 0x91, 0x05, 0x98, 0x12, 0x69, 0x00, 0x00, 0x80, - 0x49, 0x48, 0x58, 0x08, 0x99, 0x05, 0x43, 0x48, - 0x90, 0x0b, 0x98, 0x12, 0x69, 0x80, 0x99, 0x0b, - 0x09, 0x49, 0x18, 0x41, 0x91, 0x07, 0x98, 0x0a, - 0x99, 0x02, 0x43, 0x48, 0x90, 0x0b, 0x98, 0x0b, - 0x09, 0x40, 0x99, 0x07, 0x18, 0x40, 0x90, 0x06, - 0x98, 0x06, 0x0b, 0xc0, 0x99, 0x07, 0x0b, 0xc9, - 0x1a, 0x40, 0x90, 0x09, 0x98, 0x09, 0x28, 0x00, - 0xd0, 0x56, 0x9e, 0x02, 0x98, 0x06, 0x04, 0x40, - 0x0c, 0x40, 0x01, 0x41, 0x91, 0x08, 0x99, 0x08, - 0x98, 0x0a, 0xf0, 0x04, 0xf9, 0x17, 0x1c, 0x04, - 0x2c, 0x00, 0xd1, 0x00, 0x34, 0x01, 0x99, 0x03, - 0x98, 0x02, 0x18, 0x08, 0x1b, 0x00, 0x60, 0x78, - 0x60, 0xfc, 0x98, 0x02, 0x18, 0x28, 0x1b, 0x05, - 0x9a, 0x13, 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x19, - 0x1c, 0x3a, 0x99, 0x17, 0x98, 0x16, 0xf0, 0x00, - 0xf8, 0x57, 0xb0, 0x02, 0x1b, 0x36, 0x98, 0x09, - 0xe0, 0x01, 0xe0, 0x3c, 0xe0, 0x3b, 0x38, 0x01, - 0x90, 0x09, 0x98, 0x09, 0x28, 0x00, 0xd0, 0x1a, - 0x98, 0x0a, 0x21, 0x01, 0x03, 0x09, 0xf0, 0x04, - 0xf8, 0xf1, 0x1c, 0x04, 0x68, 0x78, 0x1b, 0x80, - 0x60, 0x78, 0x60, 0xfc, 0x68, 0xf8, 0x1a, 0x2d, - 0x9a, 0x13, 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x19, - 0x1c, 0x3a, 0x99, 0x17, 0x98, 0x16, 0xf0, 0x00, - 0xf8, 0x37, 0xb0, 0x02, 0x1b, 0x36, 0x98, 0x09, - 0x38, 0x01, 0x90, 0x09, 0xe7, 0xe1, 0x68, 0x78, - 0x1b, 0x80, 0x60, 0x78, 0x60, 0xfe, 0x68, 0xf8, - 0x1a, 0x2d, 0x9a, 0x13, 0x1c, 0x29, 0xb4, 0x06, - 0x9b, 0x19, 0x1c, 0x3a, 0x99, 0x17, 0x98, 0x16, - 0xf0, 0x00, 0xf8, 0x22, 0xb0, 0x02, 0xe0, 0x09, - 0x9a, 0x13, 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x19, - 0x1c, 0x3a, 0x99, 0x17, 0x98, 0x16, 0xf0, 0x00, - 0xf8, 0x17, 0xb0, 0x02, 0xe0, 0x09, 0x9a, 0x13, - 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x19, 0x1c, 0x3a, - 0x99, 0x17, 0x98, 0x16, 0xf0, 0x00, 0xf8, 0xb8, - 0xb0, 0x02, 0x20, 0x00, 0xb0, 0x14, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x13, - 0xb0, 0x01, 0xe7, 0xf8, 0x2e, 0x03, 0xa8, 0xc8, - 0xb5, 0xff, 0x9d, 0x09, 0xb0, 0x81, 0x98, 0x0b, - 0x06, 0x02, 0x0e, 0x12, 0x92, 0x00, 0xb0, 0x92, - 0x98, 0x13, 0x90, 0x11, 0x99, 0x14, 0x91, 0x10, - 0xaf, 0x0b, 0x1c, 0x38, 0x9a, 0x15, 0xca, 0x5e, - 0xc0, 0x5e, 0x68, 0x38, 0x90, 0x03, 0x68, 0x78, - 0x90, 0x02, 0x68, 0xb8, 0x90, 0x00, 0x68, 0xf9, - 0x91, 0x01, 0x98, 0x11, 0x69, 0xc0, 0x90, 0x09, - 0x99, 0x10, 0x6b, 0x88, 0x43, 0x68, 0x9b, 0x16, - 0x18, 0xc1, 0x91, 0x04, 0x99, 0x10, 0x69, 0x08, - 0x00, 0x80, 0x49, 0x42, 0x58, 0x08, 0x99, 0x04, - 0x43, 0x48, 0x90, 0x0a, 0x99, 0x10, 0x69, 0x88, - 0x99, 0x0a, 0x09, 0x49, 0x18, 0x40, 0x90, 0x06, - 0x98, 0x09, 0x99, 0x01, 0x43, 0x48, 0x90, 0x0a, - 0x98, 0x0a, 0x09, 0x40, 0x99, 0x06, 0x18, 0x40, - 0x90, 0x05, 0x98, 0x05, 0x0b, 0xc0, 0x99, 0x06, - 0x0b, 0xc9, 0x1a, 0x40, 0x90, 0x08, 0x98, 0x08, - 0x28, 0x00, 0xd0, 0x53, 0x9e, 0x01, 0x98, 0x05, - 0x04, 0x40, 0x0c, 0x40, 0x01, 0x41, 0x91, 0x07, - 0x99, 0x07, 0x98, 0x09, 0xf0, 0x04, 0xf8, 0x5e, - 0x1c, 0x04, 0x2c, 0x00, 0xd1, 0x00, 0x34, 0x01, - 0x98, 0x02, 0x99, 0x01, 0x18, 0x40, 0x1b, 0x00, - 0x60, 0x78, 0x60, 0xfc, 0x99, 0x01, 0x18, 0x68, - 0x1b, 0x05, 0x9a, 0x12, 0x1c, 0x29, 0xb4, 0x06, - 0x9b, 0x18, 0x1c, 0x3a, 0x99, 0x16, 0x98, 0x15, - 0xf0, 0x00, 0xf8, 0x4a, 0xb0, 0x02, 0x1b, 0x36, - 0x98, 0x08, 0x38, 0x01, 0x90, 0x08, 0x98, 0x08, - 0x28, 0x00, 0xd0, 0x1a, 0x98, 0x09, 0x21, 0x01, - 0x03, 0x09, 0xf0, 0x04, 0xf8, 0x3b, 0x1c, 0x04, - 0x68, 0x78, 0x1b, 0x80, 0x60, 0x78, 0x60, 0xfc, - 0x68, 0xf8, 0x1a, 0x2d, 0x9a, 0x12, 0x1c, 0x29, - 0xb4, 0x06, 0x9b, 0x18, 0x1c, 0x3a, 0x99, 0x16, - 0x98, 0x15, 0xf0, 0x00, 0xf8, 0x2d, 0xb0, 0x02, - 0x1b, 0x36, 0x98, 0x08, 0x38, 0x01, 0x90, 0x08, - 0xe7, 0xe1, 0x68, 0x78, 0x1b, 0x80, 0x60, 0x78, - 0x60, 0xfe, 0x68, 0xf8, 0x1a, 0x2d, 0x9a, 0x12, - 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x18, 0x1c, 0x3a, - 0x99, 0x16, 0x98, 0x15, 0xf0, 0x00, 0xf8, 0x18, - 0xb0, 0x02, 0xe0, 0x09, 0x9a, 0x12, 0x1c, 0x29, - 0xb4, 0x06, 0x9b, 0x18, 0x1c, 0x3a, 0x99, 0x16, - 0x98, 0x15, 0xf0, 0x00, 0xf8, 0x0d, 0xb0, 0x02, - 0x20, 0x00, 0xb0, 0x13, 0xb0, 0x04, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x12, 0xb0, 0x01, - 0xe7, 0xf8, 0x00, 0x00, 0x2e, 0x03, 0xa8, 0xc8, - 0xb5, 0xff, 0xb0, 0x81, 0x98, 0x0b, 0x06, 0x02, - 0x0e, 0x12, 0x92, 0x00, 0xb0, 0x8e, 0x9f, 0x0f, - 0x9c, 0x10, 0x9a, 0x11, 0x68, 0x10, 0x90, 0x07, - 0x9a, 0x11, 0x68, 0x50, 0x90, 0x06, 0x9a, 0x11, - 0x68, 0x91, 0x91, 0x08, 0x9a, 0x11, 0x68, 0xd0, - 0x90, 0x09, 0x6b, 0x60, 0x6a, 0xe1, 0x1a, 0x40, - 0x30, 0x01, 0x90, 0x01, 0x6b, 0x20, 0x6a, 0xa1, - 0x1a, 0x40, 0x30, 0x01, 0x90, 0x00, 0x99, 0x18, - 0x98, 0x09, 0x18, 0x08, 0x99, 0x01, 0x42, 0x88, - 0xd9, 0x03, 0x98, 0x01, 0x99, 0x18, 0x1a, 0x41, - 0x91, 0x09, 0x9b, 0x12, 0x99, 0x08, 0x18, 0x58, - 0x99, 0x00, 0x42, 0x88, 0xd9, 0x03, 0x98, 0x00, - 0x9b, 0x12, 0x1a, 0xc1, 0x91, 0x08, 0x22, 0x00, - 0x92, 0x05, 0x42, 0xa7, 0xd1, 0x20, 0x99, 0x18, - 0x98, 0x06, 0x42, 0x81, 0xd9, 0x0c, 0x22, 0x02, - 0x92, 0x05, 0x99, 0x06, 0x98, 0x09, 0x18, 0x08, - 0x1e, 0x41, 0x91, 0x06, 0x99, 0x18, 0x98, 0x09, - 0x18, 0x08, 0x1e, 0x41, 0x91, 0x18, 0xe0, 0x0f, - 0x9b, 0x12, 0x98, 0x07, 0x42, 0x83, 0xd9, 0x0b, - 0x22, 0x01, 0x92, 0x05, 0x98, 0x07, 0x99, 0x08, - 0x18, 0x40, 0x38, 0x01, 0x90, 0x07, 0x9b, 0x12, - 0x99, 0x08, 0x18, 0x58, 0x1e, 0x43, 0x93, 0x12, - 0x69, 0x38, 0x28, 0x08, 0xd1, 0x0a, 0x99, 0x08, - 0x08, 0x49, 0x91, 0x08, 0x98, 0x07, 0x08, 0x40, - 0x00, 0x40, 0x90, 0x07, 0x9b, 0x12, 0x08, 0x5b, - 0x00, 0x5b, 0x93, 0x12, 0x69, 0x38, 0x00, 0x80, - 0x49, 0xc6, 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, - 0x08, 0x80, 0x90, 0x03, 0x69, 0x20, 0x00, 0x80, - 0x49, 0xc2, 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, - 0x08, 0x80, 0x90, 0x02, 0x6b, 0xb8, 0x99, 0x06, - 0x43, 0x48, 0x99, 0x07, 0x18, 0x41, 0x91, 0x04, - 0x98, 0x03, 0x28, 0x00, 0xd0, 0x02, 0x99, 0x04, - 0x08, 0x49, 0x91, 0x04, 0x69, 0x38, 0x00, 0x80, - 0x49, 0xb9, 0x58, 0x08, 0x99, 0x04, 0x1c, 0x06, - 0x43, 0x4e, 0x6b, 0xa0, 0x99, 0x18, 0x43, 0x48, - 0x9b, 0x12, 0x18, 0xc1, 0x91, 0x04, 0x98, 0x02, - 0x28, 0x00, 0xd0, 0x02, 0x99, 0x04, 0x08, 0x49, - 0x91, 0x04, 0x69, 0x20, 0x00, 0x80, 0x49, 0xb0, - 0x58, 0x08, 0x99, 0x04, 0x1c, 0x05, 0x43, 0x4d, - 0x9a, 0x05, 0x2a, 0x01, 0xd1, 0x3d, 0x69, 0x38, - 0x28, 0x08, 0xd0, 0x3a, 0x69, 0x38, 0x28, 0x09, - 0xd0, 0x02, 0x69, 0x38, 0x28, 0x0a, 0xd1, 0x0a, - 0x36, 0x10, 0x69, 0xb8, 0x09, 0x71, 0x18, 0x41, - 0x91, 0x0b, 0x06, 0xf0, 0x0e, 0xc0, 0x1d, 0xc1, - 0x31, 0x01, 0x91, 0x0a, 0xe0, 0x0b, 0x69, 0xb8, - 0x09, 0x71, 0x18, 0x41, 0x91, 0x0b, 0x69, 0x38, - 0x00, 0x80, 0x49, 0x9f, 0x58, 0x08, 0x19, 0x86, - 0x06, 0xf1, 0x0e, 0xc9, 0x91, 0x0a, 0x69, 0x20, - 0x28, 0x09, 0xd0, 0x02, 0x69, 0x20, 0x28, 0x0a, - 0xd1, 0x0a, 0x35, 0x10, 0x69, 0xa0, 0x09, 0x69, - 0x18, 0x41, 0x91, 0x0d, 0x06, 0xe8, 0x0e, 0xc0, - 0x1d, 0xc1, 0x31, 0x01, 0x91, 0x0c, 0xe0, 0x0b, - 0x69, 0xa0, 0x09, 0x69, 0x18, 0x41, 0x91, 0x0d, - 0x69, 0x20, 0x00, 0x80, 0x49, 0x90, 0x58, 0x08, - 0x19, 0x45, 0x06, 0xe9, 0x0e, 0xc9, 0x91, 0x0c, - 0xe0, 0x0d, 0x69, 0xb8, 0x09, 0x71, 0x18, 0x41, - 0x91, 0x0b, 0x69, 0xa0, 0x09, 0x69, 0x18, 0x41, - 0x91, 0x0d, 0x06, 0xf1, 0x0e, 0xc9, 0x91, 0x0a, - 0x06, 0xe9, 0x0e, 0xc9, 0x91, 0x0c, 0x6b, 0xf8, - 0x28, 0x00, 0xd1, 0x03, 0x99, 0x0b, 0x03, 0x09, - 0x0b, 0x09, 0xe0, 0x02, 0x99, 0x0b, 0x02, 0x09, - 0x0a, 0x09, 0x91, 0x0b, 0x6b, 0xe0, 0x28, 0x00, - 0xd1, 0x03, 0x99, 0x0d, 0x03, 0x09, 0x0b, 0x09, - 0xe0, 0x02, 0x99, 0x0d, 0x02, 0x09, 0x0a, 0x09, - 0x91, 0x0d, 0xf0, 0x12, 0xf9, 0xd5, 0xf0, 0x12, - 0xf9, 0xb1, 0x48, 0x7a, 0x69, 0x80, 0x68, 0x00, - 0x08, 0xc0, 0x00, 0xc0, 0x23, 0x05, 0x43, 0x18, - 0x49, 0x76, 0x69, 0x89, 0x60, 0x08, 0x07, 0x40, - 0x1c, 0x21, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0xf8, - 0x98, 0x03, 0x28, 0x00, 0xd0, 0x18, 0x98, 0x02, - 0x28, 0x00, 0xd0, 0x15, 0x48, 0x6f, 0x69, 0x80, - 0x68, 0x00, 0x23, 0x08, 0x43, 0xdb, 0x40, 0x18, - 0x49, 0x6c, 0x69, 0x89, 0x60, 0x08, 0x07, 0x00, - 0x48, 0x6a, 0x69, 0x80, 0x68, 0x00, 0x4b, 0x6a, - 0x40, 0x18, 0x49, 0x68, 0x69, 0x89, 0x60, 0x08, - 0x05, 0xc0, 0x99, 0x08, 0x08, 0x49, 0x91, 0x08, - 0x6b, 0xf8, 0x49, 0x64, 0x69, 0x89, 0x68, 0x09, - 0x4b, 0x64, 0x40, 0x19, 0x07, 0xc0, 0x0c, 0x40, - 0x43, 0x08, 0x49, 0x60, 0x69, 0x89, 0x60, 0x08, - 0x04, 0x40, 0x0f, 0xc0, 0x6b, 0xe0, 0x49, 0x5d, - 0x69, 0x89, 0x68, 0x09, 0x4b, 0x5e, 0x40, 0x19, - 0x07, 0xc0, 0x0c, 0x80, 0x43, 0x08, 0x49, 0x59, - 0x69, 0x89, 0x60, 0x08, 0x04, 0x80, 0x0f, 0xc0, - 0x68, 0x38, 0x28, 0x00, 0xd0, 0x0d, 0x79, 0x38, - 0x49, 0x54, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x57, - 0x40, 0x19, 0x03, 0xc0, 0x43, 0x08, 0x49, 0x51, - 0x69, 0x89, 0x60, 0x08, 0x02, 0x40, 0x0e, 0x00, - 0xe0, 0x0d, 0x6a, 0x78, 0x78, 0x00, 0x49, 0x4d, - 0x69, 0x89, 0x68, 0x09, 0x4b, 0x4f, 0x40, 0x19, - 0x03, 0xc0, 0x43, 0x08, 0x49, 0x49, 0x69, 0x89, - 0x60, 0x08, 0x02, 0x40, 0x0e, 0x00, 0x69, 0x20, - 0x00, 0x80, 0x49, 0x45, 0x58, 0x08, 0x99, 0x08, - 0x43, 0x48, 0x28, 0x40, 0xd9, 0x01, 0x21, 0x00, - 0xe0, 0x00, 0x21, 0x01, 0x1c, 0x08, 0x49, 0x41, - 0x69, 0x89, 0x68, 0x09, 0x4b, 0x44, 0x40, 0x19, - 0x07, 0xc2, 0x09, 0x52, 0x43, 0x11, 0x4a, 0x3d, - 0x69, 0x92, 0x60, 0x11, 0x01, 0x49, 0x0f, 0xc9, - 0x49, 0x3a, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x3f, - 0x40, 0x19, 0x9a, 0x05, 0x07, 0x92, 0x0f, 0x92, - 0x05, 0xd2, 0x43, 0x11, 0x4a, 0x35, 0x69, 0x92, - 0x60, 0x11, 0x01, 0xc9, 0x49, 0x33, 0x69, 0x89, - 0x68, 0x09, 0x4b, 0x39, 0x40, 0x19, 0x9a, 0x0e, - 0x07, 0xd2, 0x09, 0x92, 0x43, 0x11, 0x4a, 0x2f, - 0x69, 0x92, 0x60, 0x11, 0x01, 0x89, 0x69, 0xf9, - 0x4a, 0x2c, 0x69, 0x52, 0x60, 0x11, 0x49, 0x2b, - 0x69, 0x89, 0x68, 0x09, 0x01, 0x49, 0x09, 0x49, - 0x9a, 0x0a, 0x06, 0xd2, 0x43, 0x11, 0x4a, 0x27, - 0x69, 0x92, 0x60, 0x11, 0x99, 0x0a, 0x4a, 0x25, - 0x69, 0x52, 0x60, 0x51, 0x99, 0x0b, 0x4a, 0x23, - 0x69, 0x52, 0x60, 0x91, 0x99, 0x0b, 0x4a, 0x21, - 0x69, 0x52, 0x60, 0xd1, 0x69, 0xe1, 0x4a, 0x1f, - 0x69, 0x52, 0x61, 0x11, 0x49, 0x1d, 0x69, 0xc9, - 0x68, 0x09, 0x01, 0x49, 0x09, 0x49, 0x9a, 0x0c, - 0x06, 0xd2, 0x43, 0x11, 0x4a, 0x19, 0x69, 0xd2, - 0x60, 0x11, 0x99, 0x0c, 0x4a, 0x17, 0x69, 0x52, - 0x61, 0x51, 0x99, 0x0d, 0x4a, 0x15, 0x69, 0x52, - 0x61, 0x91, 0x99, 0x0d, 0x4a, 0x13, 0x69, 0x52, - 0x61, 0xd1, 0x99, 0x09, 0x4a, 0x11, 0x69, 0x52, - 0x62, 0x51, 0x99, 0x08, 0x4a, 0x0f, 0x69, 0x52, - 0x62, 0x11, 0x68, 0x38, 0x28, 0x00, 0xd0, 0x05, - 0x48, 0x14, 0x68, 0x01, 0x23, 0x01, 0x43, 0x19, - 0x60, 0x01, 0xe0, 0x02, 0x48, 0x11, 0x21, 0x00, - 0x60, 0x01, 0xf0, 0x00, 0xf9, 0x8c, 0xf0, 0x12, - 0xf9, 0x03, 0x20, 0x00, 0xb0, 0x0f, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x0e, - 0xb0, 0x01, 0xe7, 0xf8, 0x2e, 0x03, 0xa8, 0x78, - 0x2e, 0x03, 0xa8, 0xc8, 0x2e, 0x08, 0x20, 0x28, - 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xbf, 0xff, - 0xff, 0xff, 0xdf, 0xff, 0xff, 0x80, 0x7f, 0xff, - 0xfb, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xff, 0xff, - 0xfd, 0xff, 0xff, 0xff, 0x68, 0x00, 0x00, 0x40, - 0xb4, 0x80, 0x1c, 0x07, 0x1c, 0x0a, 0x69, 0x38, - 0x00, 0x80, 0x49, 0x3c, 0x58, 0x08, 0x23, 0x18, - 0x40, 0x18, 0x08, 0xc0, 0x49, 0x3a, 0x69, 0x89, - 0x68, 0x09, 0x23, 0xc0, 0x43, 0xdb, 0x40, 0x19, - 0x07, 0x80, 0x0f, 0x80, 0x01, 0x80, 0x43, 0x08, - 0x49, 0x35, 0x69, 0x89, 0x60, 0x08, 0x06, 0x00, - 0x0f, 0x80, 0x69, 0x38, 0x00, 0x80, 0x49, 0x31, - 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, 0x08, 0x80, - 0x49, 0x2f, 0x69, 0x89, 0x68, 0x09, 0x23, 0x08, - 0x43, 0xdb, 0x40, 0x19, 0x07, 0xc0, 0x0f, 0x00, - 0x43, 0x08, 0x49, 0x2b, 0x69, 0x89, 0x60, 0x08, - 0x07, 0x00, 0x0f, 0xc0, 0x69, 0x38, 0x00, 0x80, - 0x49, 0x26, 0x58, 0x08, 0x49, 0x26, 0x69, 0x89, - 0x68, 0x09, 0x23, 0x30, 0x43, 0xdb, 0x40, 0x19, - 0x07, 0x80, 0x0f, 0x80, 0x01, 0x00, 0x43, 0x08, - 0x49, 0x21, 0x69, 0x89, 0x60, 0x08, 0x06, 0x80, - 0x0f, 0x80, 0x69, 0x10, 0x00, 0x80, 0x49, 0x1d, - 0x58, 0x08, 0x23, 0x18, 0x40, 0x18, 0x08, 0xc0, - 0x49, 0x1b, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x1b, - 0x40, 0x19, 0x07, 0x80, 0x0f, 0x80, 0x02, 0xc0, - 0x43, 0x08, 0x49, 0x17, 0x69, 0x89, 0x60, 0x08, - 0x04, 0xc0, 0x0f, 0x80, 0x69, 0x10, 0x00, 0x80, - 0x49, 0x12, 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, - 0x08, 0x80, 0x49, 0x11, 0x69, 0x89, 0x68, 0x09, - 0x4b, 0x11, 0x40, 0x19, 0x07, 0xc0, 0x0d, 0xc0, - 0x43, 0x08, 0x49, 0x0d, 0x69, 0x89, 0x60, 0x08, - 0x05, 0xc0, 0x0f, 0xc0, 0x69, 0x10, 0x00, 0x80, - 0x49, 0x08, 0x58, 0x08, 0x49, 0x08, 0x69, 0x89, - 0x68, 0x09, 0x4b, 0x0a, 0x40, 0x19, 0x07, 0x80, - 0x0f, 0x80, 0x02, 0x40, 0x43, 0x08, 0x49, 0x04, - 0x69, 0x89, 0x60, 0x08, 0x05, 0x40, 0x0f, 0x80, - 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x03, 0xa8, 0x78, - 0x2e, 0x08, 0x20, 0x28, 0xff, 0xff, 0xe7, 0xff, - 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf9, 0xff, - 0xb4, 0xb0, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x15, - 0x2d, 0x00, 0xd0, 0x06, 0x2d, 0x02, 0xd0, 0x21, - 0x2d, 0x03, 0xd0, 0x02, 0x2d, 0x04, 0xd0, 0x1d, - 0xe0, 0xa3, 0x69, 0x20, 0x28, 0x0b, 0xd2, 0x14, - 0xa3, 0x01, 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, - 0x05, 0x07, 0x09, 0x0b, 0x05, 0x07, 0x09, 0x0b, - 0x0d, 0x0e, 0x0e, 0x00, 0x07, 0xff, 0xe0, 0x09, - 0x07, 0xbf, 0xe0, 0x07, 0x07, 0x3f, 0xe0, 0x05, - 0x06, 0x3f, 0xe0, 0x03, 0xe0, 0x02, 0x02, 0x3f, - 0xe0, 0x00, 0xe7, 0xff, 0x48, 0x46, 0x6a, 0x00, - 0x60, 0x07, 0xe0, 0x86, 0x69, 0x20, 0x28, 0x0b, - 0xd2, 0x73, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x06, 0x15, 0x24, 0x33, - 0x06, 0x15, 0x24, 0x33, 0x41, 0x45, 0x45, 0x00, - 0x01, 0xff, 0x48, 0x3d, 0x6a, 0x40, 0x68, 0x00, - 0x4b, 0x3c, 0x40, 0x18, 0x06, 0x39, 0x0e, 0x09, - 0x00, 0x89, 0x43, 0x08, 0x49, 0x38, 0x6a, 0x49, - 0x60, 0x08, 0x05, 0x80, 0xe0, 0x69, 0x01, 0xbf, - 0x48, 0x35, 0x6a, 0x40, 0x68, 0x00, 0x4b, 0x35, - 0x40, 0x18, 0x06, 0x39, 0x0e, 0x09, 0x00, 0x89, - 0x43, 0x08, 0x49, 0x31, 0x6a, 0x49, 0x60, 0x08, - 0x05, 0x80, 0xe0, 0x5a, 0x01, 0x3f, 0x48, 0x2e, - 0x6a, 0x40, 0x68, 0x00, 0x4b, 0x2d, 0x40, 0x18, - 0x06, 0x39, 0x0e, 0x09, 0x00, 0x89, 0x43, 0x08, - 0x49, 0x29, 0x6a, 0x49, 0x60, 0x08, 0x05, 0x80, - 0xe0, 0x4b, 0x48, 0x27, 0x6a, 0x40, 0x68, 0x00, - 0x4b, 0x26, 0x40, 0x18, 0x06, 0x39, 0x0e, 0x09, - 0x00, 0x89, 0x43, 0x08, 0x49, 0x22, 0x6a, 0x49, - 0x60, 0x08, 0x05, 0x80, 0xe0, 0x3d, 0x48, 0x20, - 0x6a, 0x00, 0x60, 0x07, 0xe0, 0x39, 0x48, 0x1e, - 0x6a, 0x40, 0x68, 0x00, 0x4b, 0x1d, 0x40, 0x18, - 0x06, 0x39, 0x0e, 0x09, 0x00, 0x89, 0x43, 0x08, - 0x49, 0x19, 0x6a, 0x49, 0x60, 0x08, 0x05, 0x80, - 0x48, 0x17, 0x6a, 0x40, 0x68, 0x00, 0x4b, 0x18, - 0x40, 0x18, 0x21, 0xff, 0x02, 0x09, 0x40, 0x39, - 0x00, 0x89, 0x43, 0x08, 0x49, 0x12, 0x6a, 0x49, - 0x60, 0x08, 0x03, 0x80, 0x48, 0x10, 0x6a, 0x40, - 0x68, 0x00, 0x4b, 0x12, 0x40, 0x18, 0x21, 0xff, - 0x04, 0x09, 0x40, 0x39, 0x00, 0x89, 0x43, 0x01, - 0x48, 0x0b, 0x6a, 0x40, 0x60, 0x01, 0x01, 0x88, - 0xe0, 0x00, 0xe0, 0x0d, 0x48, 0x08, 0x6a, 0x40, - 0x68, 0x00, 0x01, 0x80, 0x09, 0x80, 0x21, 0x3f, - 0x06, 0x09, 0x40, 0x39, 0x00, 0x89, 0x43, 0x08, - 0x49, 0x03, 0x6a, 0x49, 0x60, 0x08, 0xe0, 0x00, - 0xe7, 0xff, 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x20, 0x28, 0xff, 0xff, 0xfc, 0x03, - 0xff, 0xfc, 0x03, 0xff, 0xfc, 0x03, 0xff, 0xff, - 0xb4, 0x80, 0x1c, 0x07, 0x1c, 0x0a, 0x69, 0x38, - 0x28, 0x0b, 0xd2, 0x1a, 0xa3, 0x01, 0x5c, 0x1b, - 0x00, 0x5b, 0x44, 0x9f, 0x05, 0x08, 0x0b, 0x0e, - 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x13, 0x13, 0x00, - 0x68, 0x10, 0x0f, 0xc1, 0xe0, 0x0f, 0x68, 0x10, - 0x0f, 0x81, 0xe0, 0x0c, 0x68, 0x10, 0x0f, 0x01, - 0xe0, 0x09, 0x68, 0x10, 0x0e, 0x01, 0xe0, 0x06, - 0x68, 0x11, 0xe0, 0x04, 0x68, 0x10, 0x0a, 0x01, - 0xe0, 0x01, 0x68, 0x11, 0xe7, 0xff, 0x1c, 0x08, - 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xfc, 0x48, 0x14, - 0x69, 0x80, 0x68, 0x00, 0x49, 0x12, 0x6a, 0x89, - 0x60, 0x08, 0x48, 0x11, 0x69, 0xc0, 0x68, 0x00, - 0x49, 0x0f, 0x6a, 0xc9, 0x60, 0x08, 0x48, 0x0e, - 0x6a, 0x00, 0x68, 0x00, 0x49, 0x0c, 0x6b, 0x09, - 0x60, 0x08, 0x48, 0x0b, 0x6a, 0x40, 0x68, 0x00, - 0x49, 0x09, 0x6b, 0x49, 0x60, 0x08, 0x20, 0x01, - 0x49, 0x07, 0x6b, 0xc9, 0x60, 0x08, 0x20, 0x00, - 0x49, 0x06, 0x60, 0x08, 0x20, 0x00, 0x49, 0x05, - 0x60, 0x48, 0x20, 0x00, 0x49, 0x03, 0x60, 0x88, - 0x20, 0x00, 0x49, 0x02, 0x60, 0xc8, 0x47, 0x70, - 0x2e, 0x08, 0x20, 0x28, 0x2e, 0x08, 0x20, 0x2c, - 0xb4, 0x90, 0x1c, 0x01, 0x29, 0x00, 0xd1, 0x02, - 0x20, 0x8d, 0xbc, 0x90, 0x47, 0x70, 0x4c, 0x08, - 0x1c, 0x0f, 0x22, 0x00, 0x23, 0xff, 0x33, 0x01, - 0x42, 0x9a, 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, - 0xe7, 0xf8, 0xcf, 0x08, 0xc4, 0x08, 0xe7, 0xfa, - 0x20, 0x00, 0xe7, 0xee, 0xe7, 0xed, 0x00, 0x00, - 0x68, 0x00, 0x18, 0x00, 0xb4, 0x90, 0x1c, 0x04, - 0x1c, 0x0f, 0x1c, 0x13, 0x06, 0x1a, 0x0e, 0x12, - 0x1c, 0x21, 0x60, 0x0f, 0x71, 0x0a, 0x20, 0x00, - 0xbc, 0x90, 0x47, 0x70, 0xe7, 0xfc, 0x00, 0x00, - 0xb5, 0x00, 0x48, 0x1d, 0x69, 0x00, 0x23, 0x04, - 0x40, 0x18, 0xd0, 0x19, 0x48, 0x1a, 0x69, 0x00, - 0x23, 0x02, 0x40, 0x18, 0xd0, 0x09, 0x48, 0x18, - 0x69, 0x40, 0x49, 0x18, 0x68, 0x09, 0x60, 0x08, - 0x20, 0x01, 0x49, 0x17, 0x68, 0x09, 0x70, 0x08, - 0xe0, 0x03, 0x20, 0x00, 0x49, 0x14, 0x68, 0x09, - 0x70, 0x08, 0x48, 0x14, 0x78, 0x01, 0x20, 0x01, - 0x40, 0x88, 0xf0, 0x08, 0xff, 0x9f, 0xe0, 0x18, - 0x48, 0x11, 0x6a, 0x80, 0x23, 0x02, 0x40, 0x18, - 0xd0, 0x13, 0x48, 0x0f, 0x6a, 0x80, 0x07, 0xc0, - 0x0f, 0xc0, 0xd0, 0x04, 0x20, 0xfe, 0x49, 0x0d, - 0x68, 0x09, 0x70, 0x08, 0xe0, 0x03, 0x20, 0x0e, - 0x49, 0x0a, 0x68, 0x09, 0x70, 0x08, 0x48, 0x0a, - 0x78, 0x01, 0x20, 0x01, 0x40, 0x88, 0xf0, 0x08, - 0xff, 0x85, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x6e, 0x00, 0x0c, 0x00, 0x2e, 0x08, 0xb9, 0x98, - 0x2e, 0x08, 0xb9, 0x9c, 0x2e, 0x08, 0xb9, 0xa0, - 0x6e, 0x00, 0x0e, 0x00, 0x2e, 0x08, 0xb9, 0xa4, - 0x2e, 0x08, 0xb9, 0xa8, 0xb5, 0xf0, 0x1c, 0x05, - 0x1c, 0x0c, 0x1c, 0x17, 0x06, 0x2e, 0x0e, 0x36, - 0x2e, 0x1f, 0xdd, 0x03, 0x20, 0xaf, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x49, 0x08, 0x20, 0x0d, - 0xf0, 0x08, 0xff, 0x76, 0x48, 0x07, 0x60, 0x04, - 0x20, 0x00, 0x49, 0x06, 0x68, 0x09, 0x70, 0x08, - 0x48, 0x05, 0x60, 0x07, 0x48, 0x05, 0x70, 0x06, - 0x20, 0x00, 0xe7, 0xec, 0xe7, 0xeb, 0x00, 0x00, - 0x2e, 0x01, 0xa9, 0xed, 0x2e, 0x08, 0xb9, 0x9c, - 0x2e, 0x08, 0xb9, 0x98, 0x2e, 0x08, 0xb9, 0xa0, - 0xb5, 0xb0, 0x1c, 0x04, 0x1c, 0x0f, 0x06, 0x25, - 0x0e, 0x2d, 0x2d, 0x1f, 0xdd, 0x03, 0x20, 0xaf, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x49, 0x07, - 0x20, 0x0d, 0xf0, 0x08, 0xff, 0x51, 0x48, 0x06, - 0x60, 0x07, 0x20, 0x00, 0x49, 0x04, 0x68, 0x09, - 0x70, 0x08, 0x48, 0x04, 0x70, 0x05, 0x20, 0x00, - 0xe7, 0xee, 0xe7, 0xed, 0x2e, 0x01, 0xa9, 0xed, - 0x2e, 0x08, 0xb9, 0xa4, 0x2e, 0x08, 0xb9, 0xa8, - 0xb4, 0xb0, 0x1c, 0x01, 0x4a, 0x35, 0x23, 0x01, - 0x60, 0x13, 0x4a, 0x35, 0x1c, 0x0f, 0x68, 0x3d, - 0xc2, 0x20, 0x88, 0x8d, 0xc2, 0x20, 0x88, 0xcb, - 0x60, 0x13, 0x68, 0x8c, 0x2c, 0x00, 0xd0, 0x57, - 0x4a, 0x30, 0x1c, 0x27, 0x20, 0x00, 0x28, 0x13, - 0xdb, 0x02, 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, - 0xcf, 0x20, 0xc2, 0x20, 0xe7, 0xfa, 0x4a, 0x2c, - 0x1d, 0xe7, 0x37, 0x45, 0x20, 0x00, 0x28, 0x0b, - 0xdb, 0x02, 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, - 0xcf, 0x20, 0xc2, 0x20, 0xe7, 0xfa, 0x4a, 0x27, - 0x1d, 0xe7, 0x37, 0x71, 0x20, 0x00, 0x28, 0x07, - 0xdb, 0x02, 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, - 0xcf, 0x20, 0xc2, 0x20, 0xe7, 0xfa, 0x4a, 0x22, - 0x1d, 0xe7, 0x37, 0x8d, 0x20, 0x00, 0x28, 0x09, - 0xdb, 0x02, 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, - 0xcf, 0x20, 0xc2, 0x20, 0xe7, 0xfa, 0x4a, 0x1d, - 0x1d, 0xe7, 0x37, 0xb1, 0x20, 0x00, 0x28, 0x09, - 0xdb, 0x02, 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, - 0xcf, 0x20, 0xc2, 0x20, 0xe7, 0xfa, 0x68, 0x0d, - 0x23, 0x01, 0x02, 0x9b, 0x40, 0x2b, 0xd0, 0x17, - 0x4a, 0x15, 0x1d, 0xe7, 0x37, 0xd5, 0x20, 0x00, - 0x28, 0x09, 0xdb, 0x02, 0xe0, 0x04, 0x30, 0x01, - 0xe7, 0xfa, 0xcf, 0x20, 0xc2, 0x20, 0xe7, 0xfa, - 0x4a, 0x10, 0x1d, 0xe7, 0x37, 0xf9, 0x20, 0x00, - 0x28, 0x09, 0xdb, 0x02, 0xe0, 0x04, 0x30, 0x01, - 0xe7, 0xfa, 0xcf, 0x20, 0xc2, 0x20, 0xe7, 0xfa, - 0x4a, 0x02, 0x23, 0x00, 0x60, 0x13, 0xbc, 0xb0, - 0x47, 0x70, 0x00, 0x00, 0x6e, 0x00, 0x0c, 0x0c, - 0x6e, 0x00, 0x0c, 0x00, 0x6e, 0x00, 0x08, 0x00, - 0x6e, 0x00, 0x08, 0x50, 0x6e, 0x00, 0x08, 0x80, - 0x6e, 0x00, 0x08, 0xa0, 0x6e, 0x00, 0x08, 0xd0, - 0x6e, 0x00, 0x09, 0x00, 0x6e, 0x00, 0x09, 0x30, - 0xb4, 0xf0, 0x1c, 0x01, 0x69, 0x08, 0x06, 0xc0, - 0x0e, 0xc0, 0x28, 0x01, 0xdb, 0x04, 0x69, 0x08, - 0x06, 0xc0, 0x0e, 0xc0, 0x28, 0x0a, 0xdd, 0x02, - 0x20, 0xc3, 0xbc, 0xf0, 0x47, 0x70, 0x69, 0x08, - 0x05, 0x80, 0x0e, 0xc0, 0x28, 0x01, 0xdb, 0x04, - 0x69, 0x08, 0x05, 0x80, 0x0e, 0xc0, 0x28, 0x0a, - 0xdd, 0x01, 0x20, 0xc4, 0xe7, 0xf1, 0x48, 0x4f, - 0x6a, 0x80, 0x07, 0xc0, 0x0f, 0xc0, 0xd1, 0x01, - 0x20, 0xc0, 0xe7, 0xea, 0x68, 0x08, 0x07, 0x00, - 0x0f, 0xc0, 0x4b, 0x4b, 0x70, 0x18, 0x4f, 0x49, - 0x1c, 0x0c, 0x22, 0x00, 0x2a, 0x04, 0xd3, 0x02, - 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, - 0xc7, 0x08, 0xe7, 0xfa, 0x4f, 0x45, 0x69, 0x08, - 0x06, 0xc0, 0x0e, 0xc0, 0x00, 0x43, 0x18, 0x18, - 0x38, 0x03, 0x69, 0x0b, 0x05, 0x9b, 0x0e, 0xde, - 0x00, 0x73, 0x19, 0x9b, 0x3b, 0x03, 0x01, 0x5b, - 0x43, 0x18, 0x60, 0x38, 0x4f, 0x3e, 0x69, 0x48, - 0x60, 0x38, 0x4f, 0x3e, 0x69, 0x88, 0x05, 0x40, - 0x0d, 0x40, 0x69, 0x8b, 0x02, 0x9b, 0x0d, 0x5b, - 0x02, 0xdb, 0x43, 0x18, 0x60, 0x38, 0x69, 0xcd, - 0x2d, 0x00, 0xd0, 0x63, 0x4f, 0x38, 0x1c, 0x2c, - 0x22, 0x00, 0x2a, 0x09, 0xd3, 0x02, 0xe0, 0x04, - 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, - 0xe7, 0xfa, 0x4f, 0x34, 0x1d, 0xec, 0x34, 0x1d, - 0x22, 0x00, 0x2a, 0x09, 0xd3, 0x02, 0xe0, 0x04, - 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, - 0xe7, 0xfa, 0x4f, 0x2f, 0x1d, 0xec, 0x34, 0x41, - 0x22, 0x00, 0x2a, 0x09, 0xd3, 0x02, 0xe0, 0x04, - 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, - 0xe7, 0xfa, 0x4f, 0x2a, 0x1d, 0xec, 0x34, 0x65, - 0x22, 0x00, 0x2a, 0x09, 0xd3, 0x02, 0xe0, 0x04, - 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, - 0xe7, 0xfa, 0x4f, 0x25, 0x1d, 0xec, 0x34, 0x89, - 0x22, 0x00, 0x2a, 0x05, 0xd3, 0x02, 0xe0, 0x04, - 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, - 0xe7, 0xfa, 0x4f, 0x20, 0x1d, 0xec, 0x34, 0x9d, - 0x22, 0x00, 0x2a, 0x05, 0xd3, 0x02, 0xe0, 0x04, - 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, - 0xe7, 0xfa, 0x68, 0x08, 0x23, 0x01, 0x02, 0x9b, - 0x40, 0x18, 0xd0, 0x17, 0x4f, 0x18, 0x1d, 0xec, - 0x34, 0xb1, 0x22, 0x00, 0x2a, 0x05, 0xd3, 0x02, - 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, - 0xc7, 0x08, 0xe7, 0xfa, 0x4f, 0x13, 0x1d, 0xec, - 0x34, 0xc5, 0x22, 0x00, 0x2a, 0x05, 0xd3, 0x02, - 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, 0xcc, 0x08, - 0xc7, 0x08, 0xe7, 0xfa, 0x20, 0x00, 0xe7, 0x54, - 0xe7, 0x53, 0x00, 0x00, 0x6e, 0x00, 0x0e, 0x00, - 0x2e, 0x08, 0xb9, 0xa9, 0x6e, 0x00, 0x0e, 0x10, - 0x6e, 0x00, 0x0e, 0x14, 0x6e, 0x00, 0x0e, 0x18, - 0x6e, 0x00, 0x0a, 0x00, 0x6e, 0x00, 0x0a, 0x24, - 0x6e, 0x00, 0x0a, 0x48, 0x6e, 0x00, 0x0a, 0x90, - 0x6e, 0x00, 0x0a, 0xc0, 0x6e, 0x00, 0x0a, 0xe4, - 0x6e, 0x00, 0x09, 0xc0, 0x6e, 0x00, 0x09, 0xe4, - 0x1c, 0x01, 0x48, 0x0c, 0x78, 0x00, 0x28, 0x00, - 0xd0, 0x01, 0x20, 0xc1, 0x47, 0x70, 0x48, 0x0a, - 0x6a, 0x80, 0x07, 0xc0, 0x0f, 0xc0, 0xd1, 0x01, - 0x20, 0xc0, 0xe7, 0xf7, 0x20, 0x00, 0x4b, 0x06, - 0x61, 0x58, 0x4a, 0x06, 0x68, 0x08, 0x60, 0x10, - 0x4a, 0x05, 0x68, 0x48, 0x60, 0x10, 0x20, 0x00, - 0xe7, 0xec, 0xe7, 0xeb, 0x2e, 0x08, 0xb9, 0xa9, - 0x6e, 0x00, 0x0e, 0x00, 0x6e, 0x00, 0x0e, 0x20, - 0x6e, 0x00, 0x0e, 0x24, 0x48, 0x09, 0x78, 0x00, - 0x28, 0x00, 0xd0, 0x01, 0x20, 0xc1, 0x47, 0x70, - 0x48, 0x07, 0x6a, 0x80, 0x07, 0xc0, 0x0f, 0xc0, - 0xd0, 0x01, 0x20, 0xc2, 0xe7, 0xf7, 0x20, 0x01, - 0x49, 0x03, 0x61, 0x48, 0x20, 0x00, 0xe7, 0xf2, - 0xe7, 0xf1, 0x00, 0x00, 0x2e, 0x08, 0xb9, 0xa9, - 0x6e, 0x00, 0x0e, 0x00, 0xb5, 0xff, 0x1c, 0x04, - 0x1c, 0x0d, 0x1c, 0x17, 0x9e, 0x09, 0x20, 0x00, - 0x60, 0x30, 0x48, 0x13, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x07, 0x9b, 0x03, 0x2b, 0x00, 0xd1, 0x04, - 0x20, 0x8a, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x23, 0xff, 0x33, 0x01, 0x42, 0x9c, - 0xdd, 0x01, 0x20, 0x87, 0xe7, 0xf5, 0x19, 0x28, - 0x23, 0xff, 0x33, 0x01, 0x42, 0x98, 0xd9, 0x01, - 0x20, 0x88, 0xe7, 0xee, 0x68, 0x79, 0x1c, 0x20, - 0x80, 0x48, 0x70, 0x0d, 0x9b, 0x03, 0x60, 0x4b, - 0x68, 0x78, 0x60, 0xc8, 0x68, 0x38, 0x60, 0x88, - 0x60, 0x31, 0x20, 0x00, 0xe7, 0xe1, 0xe7, 0xe0, - 0x2e, 0x08, 0x9d, 0xf0, 0x1c, 0x03, 0x1c, 0x0a, - 0x1c, 0x19, 0x68, 0xc8, 0x60, 0x50, 0x68, 0x88, - 0x60, 0x10, 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, - 0xb5, 0xf3, 0xb0, 0x87, 0x21, 0x00, 0x91, 0x06, - 0x26, 0x00, 0x98, 0x07, 0xf0, 0x00, 0xfa, 0xcb, - 0x90, 0x03, 0x9c, 0x07, 0x9d, 0x08, 0x88, 0x69, - 0x91, 0x04, 0x98, 0x03, 0x99, 0x04, 0x42, 0x88, - 0xd0, 0x09, 0x48, 0xbb, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x05, 0x20, 0xff, 0xb0, 0x07, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x78, 0x28, - 0x90, 0x05, 0x99, 0x04, 0x23, 0xff, 0x33, 0x01, - 0x42, 0x99, 0xdd, 0x02, 0x20, 0xff, 0xb0, 0x07, - 0xe7, 0xf1, 0x98, 0x05, 0x99, 0x04, 0x18, 0x40, - 0x23, 0xff, 0x33, 0x01, 0x42, 0x98, 0xdd, 0x02, - 0x20, 0xff, 0xb0, 0x07, 0xe7, 0xe7, 0x48, 0xad, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x0a, 0x68, 0xa0, - 0x23, 0x01, 0x06, 0x1b, 0x40, 0x18, 0xd0, 0x05, - 0x68, 0x68, 0x28, 0x00, 0xd1, 0x02, 0x20, 0x8a, - 0xb0, 0x07, 0xe7, 0xd8, 0x62, 0x65, 0x69, 0x60, - 0x4b, 0xa5, 0x40, 0x18, 0x99, 0x05, 0x06, 0x09, - 0x0e, 0x09, 0x04, 0x09, 0x43, 0x08, 0x61, 0x60, - 0x02, 0x00, 0x68, 0xe0, 0x90, 0x00, 0x48, 0x9e, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x06, 0x98, 0x00, - 0x28, 0x19, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, - 0x20, 0x00, 0xe0, 0x05, 0x98, 0x00, 0x28, 0x08, - 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, 0xb0, 0x07, - 0xe7, 0xb5, 0x48, 0x94, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x1e, 0x48, 0x91, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x1a, 0x68, 0xa0, 0x02, 0x00, 0x0e, 0x00, - 0x06, 0x01, 0x0e, 0x09, 0x91, 0x06, 0x99, 0x04, - 0x29, 0x04, 0xd0, 0x06, 0x29, 0x10, 0xd0, 0x07, - 0x23, 0xff, 0x33, 0x01, 0x42, 0x99, 0xd0, 0x06, - 0xe0, 0x08, 0x26, 0xff, 0x36, 0x01, 0xe0, 0x07, - 0x26, 0x01, 0x02, 0x76, 0xe0, 0x04, 0x26, 0x03, - 0x02, 0x36, 0xe0, 0x01, 0x26, 0x00, 0xe7, 0xff, - 0x49, 0x84, 0x20, 0x91, 0xf0, 0x11, 0xfc, 0x04, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, - 0xff, 0xb1, 0xe7, 0xf5, 0x98, 0x00, 0x00, 0x80, - 0x49, 0x7f, 0x58, 0x08, 0x99, 0x07, 0x42, 0x88, - 0xd0, 0x05, 0x20, 0x92, 0x49, 0x7b, 0x60, 0x08, - 0x20, 0xff, 0xb0, 0x07, 0xe7, 0x7b, 0x48, 0x77, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x73, 0x48, 0x74, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x6f, 0x98, 0x00, - 0xf0, 0x02, 0xfe, 0xd6, 0x28, 0x00, 0xd0, 0x6a, - 0xb0, 0x82, 0x49, 0x74, 0x20, 0x91, 0xf0, 0x11, - 0xfb, 0xdf, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, - 0xf0, 0x02, 0xff, 0x25, 0x20, 0x92, 0x49, 0x6f, - 0x60, 0x08, 0x20, 0x01, 0x49, 0x6e, 0x68, 0x09, - 0x60, 0x08, 0x27, 0x00, 0x20, 0x00, 0x90, 0x00, - 0x98, 0x00, 0x28, 0x00, 0xd1, 0x15, 0x2f, 0x07, - 0xd2, 0x13, 0x6a, 0xe0, 0x05, 0x81, 0x0d, 0x89, - 0x1c, 0x38, 0x37, 0x01, 0x00, 0x83, 0x18, 0x18, - 0x00, 0xc0, 0x4a, 0x65, 0x68, 0x12, 0x18, 0x80, - 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, - 0x42, 0x81, 0xd1, 0x01, 0x20, 0x01, 0x90, 0x00, - 0xe7, 0xe6, 0x98, 0x00, 0x28, 0x00, 0xd1, 0x14, - 0x2f, 0x18, 0xd2, 0x12, 0x6a, 0xe0, 0x05, 0x81, - 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, 0x23, 0x4c, - 0x43, 0x58, 0x4a, 0x59, 0x68, 0x12, 0x18, 0x80, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x69, 0x40, - 0x42, 0x81, 0xd1, 0x01, 0x20, 0x01, 0x90, 0x00, - 0xe7, 0xe7, 0x3f, 0x01, 0x2f, 0x07, 0xd2, 0x10, - 0x00, 0xb8, 0x19, 0xc0, 0x00, 0xc0, 0x49, 0x50, - 0x68, 0x09, 0x18, 0x40, 0x23, 0x2b, 0x01, 0x5b, - 0x18, 0xc0, 0x1c, 0x21, 0xf0, 0x02, 0xfb, 0x38, - 0x48, 0x4b, 0x68, 0x00, 0xf0, 0x02, 0xfe, 0xee, - 0xe0, 0x46, 0x2f, 0x18, 0xd2, 0x44, 0x20, 0x4c, - 0x43, 0x78, 0x49, 0x47, 0x68, 0x09, 0x18, 0x40, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x0a, 0x1c, 0x21, - 0xf0, 0x02, 0xfb, 0x26, 0x20, 0x4c, 0x43, 0x78, - 0x49, 0x41, 0x68, 0x09, 0xe0, 0x00, 0xe0, 0x48, - 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, 0x38, 0x82, - 0x6f, 0xc0, 0x28, 0x00, 0xd0, 0x17, 0x20, 0x4c, - 0x43, 0x78, 0x49, 0x3b, 0x68, 0x09, 0x18, 0x40, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, - 0x04, 0x00, 0x0c, 0x00, 0xd0, 0x0b, 0x20, 0x4c, - 0x43, 0x78, 0x49, 0x35, 0x68, 0x09, 0x18, 0x40, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, - 0x0c, 0x00, 0x04, 0x00, 0xd1, 0x0a, 0x20, 0x02, - 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x2e, 0x68, 0x12, - 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, 0x39, 0x82, - 0x67, 0x48, 0xe0, 0x09, 0x20, 0x03, 0x21, 0x4c, - 0x43, 0x79, 0x4a, 0x29, 0x68, 0x12, 0x18, 0x89, - 0x39, 0xff, 0x39, 0xff, 0x39, 0x82, 0x67, 0x48, - 0x49, 0x24, 0x20, 0x91, 0xf0, 0x11, 0xfb, 0x40, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x22, - 0x68, 0x00, 0x90, 0x01, 0x48, 0x21, 0x68, 0x00, - 0x49, 0x1f, 0x60, 0x08, 0x98, 0x01, 0x49, 0x1f, - 0x60, 0x08, 0x20, 0x92, 0x49, 0x1b, 0x60, 0x08, - 0xb0, 0x02, 0x48, 0x15, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x1d, 0x98, 0x00, 0x01, 0x00, 0x4b, 0x1a, - 0x18, 0xc1, 0x91, 0x01, 0x1d, 0xe0, 0x30, 0x0d, - 0x90, 0x02, 0x98, 0x02, 0x68, 0x00, 0x99, 0x01, - 0x60, 0x08, 0x48, 0x0e, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x0d, 0x68, 0x68, 0x08, 0x80, 0x99, 0x06, - 0x00, 0x89, 0x4b, 0x12, 0x18, 0xc9, 0x67, 0x08, - 0x98, 0x05, 0x43, 0x30, 0x99, 0x06, 0x00, 0x89, - 0x4b, 0x0f, 0x18, 0xc9, 0x61, 0x08, 0x20, 0x92, - 0x49, 0x06, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x07, - 0xe6, 0x91, 0xb0, 0x07, 0xe6, 0x8f, 0x00, 0x00, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0x9d, 0xf0, - 0xff, 0x00, 0xff, 0xff, 0x2e, 0x08, 0xba, 0x2c, - 0x2e, 0x08, 0xb9, 0xc4, 0x2e, 0x08, 0xd1, 0xf4, - 0x2e, 0x08, 0xbb, 0x20, 0x2e, 0x08, 0xbb, 0x24, - 0x68, 0x00, 0x0c, 0x00, 0x68, 0x00, 0x0e, 0x00, - 0x68, 0x00, 0x0e, 0x80, 0x1c, 0x01, 0x1c, 0x0a, - 0x6a, 0x53, 0x1c, 0x18, 0x47, 0x70, 0xe7, 0xfd, - 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x82, 0x48, 0x2b, - 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x20, 0x8a, - 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x98, 0x02, 0x90, 0x01, 0x98, 0x01, - 0x88, 0x44, 0x98, 0x01, 0x78, 0x06, 0x23, 0xff, - 0x33, 0x01, 0x42, 0x9c, 0xdd, 0x02, 0x20, 0xff, - 0xb0, 0x02, 0xe7, 0xee, 0x19, 0x30, 0x23, 0xff, - 0x33, 0x01, 0x42, 0x98, 0xdd, 0x02, 0x20, 0xff, - 0xb0, 0x02, 0xe7, 0xe6, 0x49, 0x1c, 0x20, 0x91, - 0xf0, 0x11, 0xfa, 0xc2, 0x28, 0x92, 0xd0, 0x03, - 0x20, 0x01, 0xf0, 0x01, 0xfe, 0x6f, 0xe7, 0xf5, - 0x2c, 0x10, 0xda, 0x0d, 0x25, 0x00, 0x42, 0xa5, - 0xdb, 0x02, 0xe0, 0x08, 0x35, 0x01, 0xe7, 0xfa, - 0xcf, 0x01, 0x19, 0x71, 0x00, 0x89, 0x4b, 0x13, - 0x18, 0xc9, 0x60, 0x08, 0xe7, 0xf6, 0xe0, 0x15, - 0x4a, 0x11, 0x43, 0x22, 0x92, 0x00, 0x20, 0x91, - 0x49, 0x10, 0x60, 0x08, 0x00, 0xb0, 0x4b, 0x0d, - 0x18, 0xc1, 0x9a, 0x00, 0x1c, 0x38, 0x23, 0x02, - 0xf0, 0x00, 0xfa, 0xfe, 0x28, 0x00, 0xd0, 0x00, - 0xe7, 0xf4, 0x48, 0x0a, 0x68, 0x00, 0x28, 0x92, - 0xd0, 0x00, 0xe7, 0xfa, 0x20, 0x92, 0x49, 0x04, - 0x60, 0x08, 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xb0, - 0xb0, 0x02, 0xe7, 0xae, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xba, 0x30, 0x68, 0x00, 0x08, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x2e, 0x08, 0xba, 0x34, - 0x21, 0x04, 0xe0, 0x00, 0x31, 0x01, 0x1c, 0x08, - 0x47, 0x70, 0xe7, 0xfd, 0xb5, 0xf3, 0x1c, 0x0f, - 0xb0, 0x82, 0x48, 0x2b, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x05, 0x20, 0x8a, 0xb0, 0x02, 0xb0, 0x02, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x98, 0x02, - 0x90, 0x01, 0x98, 0x01, 0x88, 0x44, 0x98, 0x01, - 0x78, 0x06, 0x23, 0xff, 0x33, 0x01, 0x42, 0x9c, - 0xdd, 0x02, 0x20, 0xff, 0xb0, 0x02, 0xe7, 0xee, - 0x19, 0x30, 0x23, 0xff, 0x33, 0x01, 0x42, 0x98, - 0xdd, 0x02, 0x20, 0xff, 0xb0, 0x02, 0xe7, 0xe6, - 0x49, 0x1c, 0x20, 0x91, 0xf0, 0x11, 0xfa, 0x58, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, - 0xfe, 0x05, 0xe7, 0xf5, 0x2c, 0x10, 0xda, 0x0d, - 0x25, 0x00, 0x42, 0xa5, 0xdb, 0x02, 0xe0, 0x08, - 0x35, 0x01, 0xe7, 0xfa, 0x19, 0x70, 0x00, 0x80, - 0x4b, 0x13, 0x18, 0xc0, 0x68, 0x01, 0xc7, 0x02, - 0xe7, 0xf6, 0xe0, 0x15, 0x4a, 0x11, 0x43, 0x22, - 0x92, 0x00, 0x20, 0x91, 0x49, 0x10, 0x60, 0x08, - 0x00, 0xb0, 0x4b, 0x0d, 0x18, 0xc0, 0x9a, 0x00, - 0x1c, 0x39, 0x23, 0x02, 0xf0, 0x00, 0xfa, 0x94, - 0x28, 0x00, 0xd0, 0x00, 0xe7, 0xf4, 0x48, 0x0a, - 0x68, 0x00, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xfa, - 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, - 0xb0, 0x02, 0xe7, 0xb0, 0xb0, 0x02, 0xe7, 0xae, - 0x2e, 0x08, 0x9d, 0xf0, 0x2e, 0x08, 0xba, 0x30, - 0x68, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0xba, 0x34, 0xb5, 0xf7, 0x9a, 0x02, - 0x06, 0x15, 0x0e, 0x2d, 0x9c, 0x00, 0x88, 0x66, - 0x42, 0xb5, 0xdd, 0x04, 0x20, 0xff, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x78, 0x20, - 0x19, 0x40, 0x06, 0x07, 0x0e, 0x3f, 0x23, 0xff, - 0x33, 0x01, 0x42, 0x9f, 0xdd, 0x01, 0x20, 0xff, - 0xe7, 0xf1, 0x49, 0x0a, 0x20, 0x91, 0xf0, 0x11, - 0xf9, 0xff, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, - 0xf0, 0x01, 0xfd, 0xac, 0xe7, 0xf5, 0x99, 0x01, - 0x00, 0xb8, 0x4b, 0x05, 0x18, 0xc0, 0x60, 0x01, - 0x20, 0x92, 0x49, 0x02, 0x60, 0x08, 0x20, 0x00, - 0xe7, 0xdd, 0xe7, 0xdc, 0x2e, 0x08, 0xba, 0x30, - 0x68, 0x00, 0x08, 0x00, 0xb5, 0xf7, 0x9a, 0x02, - 0x06, 0x14, 0x0e, 0x24, 0x9f, 0x00, 0x88, 0x7d, - 0x78, 0x38, 0x19, 0x00, 0x06, 0x06, 0x0e, 0x36, - 0x42, 0xac, 0xdd, 0x04, 0x20, 0xff, 0xb0, 0x03, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x49, 0x0b, - 0x20, 0x91, 0xf0, 0x11, 0xf9, 0xd5, 0x28, 0x92, - 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, 0xfd, 0x82, - 0xe7, 0xf5, 0x00, 0xb0, 0x4b, 0x06, 0x18, 0xc0, - 0x68, 0x00, 0x99, 0x01, 0x60, 0x08, 0x20, 0x92, - 0x49, 0x02, 0x60, 0x08, 0x20, 0x00, 0xe7, 0xe6, - 0xe7, 0xe5, 0x00, 0x00, 0x2e, 0x08, 0xba, 0x30, - 0x68, 0x00, 0x08, 0x00, 0x1c, 0x01, 0x1c, 0x0a, - 0x88, 0x50, 0x47, 0x70, 0xe7, 0xfd, 0xb4, 0x80, - 0x1c, 0x01, 0x1c, 0x0f, 0x69, 0x3a, 0x2a, 0x08, - 0xd2, 0x12, 0xa3, 0x02, 0x5c, 0x9b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x07, 0x09, 0x0b, - 0x04, 0x07, 0x09, 0x0b, 0x20, 0x02, 0xbc, 0x80, - 0x47, 0x70, 0x20, 0x04, 0xe7, 0xfb, 0x20, 0x10, - 0xe7, 0xf9, 0x20, 0xff, 0x30, 0x01, 0xe7, 0xf6, - 0x20, 0x00, 0xe7, 0xf4, 0xe7, 0xf3, 0xb5, 0xf3, - 0x98, 0x00, 0x06, 0x05, 0x0e, 0x2d, 0x48, 0x89, - 0x68, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x20, 0x8b, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x48, 0x85, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x04, - 0x2d, 0x17, 0xdd, 0x02, 0x20, 0x8c, 0xe7, 0xf3, - 0xe0, 0xfe, 0x2d, 0x07, 0xdd, 0x01, 0x20, 0x8c, - 0xe7, 0xee, 0x49, 0x80, 0x20, 0x91, 0xf0, 0x11, - 0xf9, 0x7f, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, - 0xf0, 0x01, 0xfd, 0x2c, 0xe7, 0xf5, 0x1c, 0x28, - 0xf7, 0xf8, 0xfc, 0xd8, 0x1c, 0x04, 0x2c, 0x00, - 0xd0, 0x09, 0x68, 0xa0, 0x4b, 0x78, 0x40, 0x18, - 0x99, 0x01, 0x07, 0xc9, 0x09, 0xc9, 0x43, 0x08, - 0x60, 0xa0, 0x01, 0xc0, 0xe0, 0x04, 0x20, 0x92, - 0x49, 0x72, 0x60, 0x08, 0x20, 0xff, 0xe7, 0xcf, - 0x48, 0x6f, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x11, - 0x99, 0x01, 0x29, 0x00, 0xd0, 0x06, 0x48, 0x6f, - 0x21, 0x01, 0x40, 0xa9, 0x68, 0x02, 0x43, 0x11, - 0x60, 0x01, 0xe0, 0x06, 0x48, 0x6b, 0x21, 0x01, - 0x40, 0xa9, 0x43, 0xc9, 0x68, 0x02, 0x40, 0x11, - 0x60, 0x01, 0xe0, 0xbf, 0x68, 0xe0, 0xf0, 0x02, - 0xfc, 0x3b, 0x28, 0x00, 0xd0, 0x73, 0xb0, 0x81, - 0x49, 0x65, 0x20, 0x91, 0xf0, 0x11, 0xf9, 0x44, - 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x02, - 0xfc, 0x8a, 0x20, 0x92, 0x49, 0x60, 0x60, 0x08, - 0x20, 0x01, 0x49, 0x60, 0x68, 0x09, 0x60, 0x08, - 0x27, 0x00, 0x26, 0x00, 0x2e, 0x00, 0xd1, 0x14, - 0x2f, 0x07, 0xd2, 0x12, 0x6a, 0xe0, 0x05, 0x81, - 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, 0x00, 0x83, - 0x18, 0x18, 0x00, 0xc0, 0x4a, 0x57, 0x68, 0x12, - 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, - 0x6f, 0xc0, 0x42, 0x81, 0xd1, 0x00, 0x26, 0x01, - 0xe7, 0xe8, 0x2e, 0x00, 0xd1, 0x13, 0x2f, 0x18, - 0xd2, 0x11, 0x6a, 0xe0, 0x05, 0x81, 0x0d, 0x89, - 0x1c, 0x38, 0x37, 0x01, 0x23, 0x4c, 0x43, 0x58, - 0x4a, 0x4c, 0x68, 0x12, 0x18, 0x80, 0x38, 0xff, - 0x38, 0xff, 0x38, 0x02, 0x69, 0x40, 0x42, 0x81, - 0xd1, 0x00, 0x26, 0x01, 0xe7, 0xe9, 0x3f, 0x01, - 0x2f, 0x07, 0xd2, 0x32, 0x99, 0x02, 0x29, 0x00, - 0xd0, 0x16, 0x00, 0xb8, 0x19, 0xc0, 0x00, 0xc0, - 0x49, 0x42, 0x68, 0x09, 0x18, 0x40, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc0, 0x6e, 0x80, 0x4b, 0x40, - 0x43, 0x18, 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, - 0x4a, 0x3c, 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, 0xe0, 0x17, - 0x00, 0xb8, 0x19, 0xc0, 0x00, 0xc0, 0x49, 0x37, - 0x68, 0x09, 0x18, 0x40, 0x23, 0x05, 0x02, 0x1b, - 0x18, 0xc0, 0x6e, 0x80, 0x04, 0x00, 0x0c, 0x00, - 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x31, - 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, - 0x18, 0xc9, 0x66, 0x88, 0xe0, 0x00, 0xe0, 0x45, - 0xe0, 0x2b, 0x99, 0x02, 0x29, 0x00, 0xd0, 0x14, - 0x20, 0x4c, 0x43, 0x78, 0x49, 0x29, 0x68, 0x09, - 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x68, 0x00, 0x4b, 0x27, 0x43, 0x18, 0x21, 0x4c, - 0x43, 0x79, 0x4a, 0x24, 0x68, 0x12, 0x18, 0x89, - 0x39, 0xff, 0x39, 0xff, 0x39, 0x02, 0x60, 0x08, - 0xe0, 0x13, 0x20, 0x4c, 0x43, 0x78, 0x49, 0x1f, - 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x02, 0x68, 0x00, 0x04, 0x00, 0x0c, 0x00, - 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x19, 0x68, 0x12, - 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, 0x39, 0x02, - 0x60, 0x08, 0x48, 0x16, 0x68, 0x00, 0xf0, 0x02, - 0xfc, 0x05, 0x49, 0x13, 0x20, 0x91, 0xf0, 0x11, - 0xf8, 0x9f, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, - 0x48, 0x10, 0x68, 0x00, 0x90, 0x00, 0x48, 0x11, - 0x68, 0x00, 0x49, 0x0e, 0x60, 0x08, 0x98, 0x00, - 0x49, 0x0e, 0x60, 0x08, 0x20, 0x92, 0x49, 0x0a, - 0x60, 0x08, 0xb0, 0x01, 0x20, 0x92, 0x49, 0x05, - 0x60, 0x08, 0x20, 0x00, 0xe6, 0xf4, 0xe6, 0xf3, - 0xe6, 0xf2, 0x00, 0x00, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0xba, 0x30, - 0xfe, 0xff, 0xff, 0xff, 0x68, 0x00, 0x00, 0x20, - 0x2e, 0x08, 0xd1, 0xf4, 0x2e, 0x08, 0xbb, 0x20, - 0xff, 0xff, 0x00, 0x00, 0x2e, 0x08, 0xbb, 0x24, - 0xb5, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0x06, 0x26, - 0x0e, 0x36, 0x48, 0x0f, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x03, 0x20, 0x8b, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x2e, 0x07, 0xdd, 0x01, 0x20, 0x8c, - 0xe7, 0xf8, 0x1c, 0x30, 0xf7, 0xf8, 0xfb, 0xc2, - 0x1c, 0x05, 0x2d, 0x00, 0xd0, 0x04, 0x68, 0xa8, - 0x01, 0xc0, 0x0f, 0xc0, 0x60, 0x38, 0xe0, 0x04, - 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, 0x20, 0xff, - 0xe7, 0xe8, 0x20, 0x00, 0xe7, 0xe6, 0xe7, 0xe5, - 0x2e, 0x08, 0x9d, 0xf0, 0x2e, 0x08, 0xba, 0x30, - 0xb5, 0xb0, 0x1c, 0x04, 0x1c, 0x0f, 0x06, 0x25, - 0x0e, 0x2d, 0x48, 0x20, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x03, 0x20, 0x8b, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x48, 0x1d, 0x68, 0x00, 0x28, 0x01, - 0xd1, 0x04, 0x2d, 0x17, 0xdd, 0x02, 0x20, 0x8c, - 0xe7, 0xf4, 0xe0, 0x2d, 0x2d, 0x07, 0xdd, 0x01, - 0x20, 0x8c, 0xe7, 0xef, 0x48, 0x16, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x01, 0x20, 0xff, 0xe7, 0xe9, - 0x49, 0x14, 0x20, 0x91, 0xf0, 0x11, 0xf8, 0x28, - 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, - 0xfb, 0xd5, 0xe7, 0xf5, 0x2f, 0x00, 0xd0, 0x08, - 0x48, 0x0f, 0x1d, 0xe9, 0x31, 0x01, 0x22, 0x01, - 0x40, 0x8a, 0x68, 0x01, 0x43, 0x11, 0x60, 0x01, - 0xe0, 0x08, 0x48, 0x0b, 0x1d, 0xea, 0x32, 0x01, - 0x21, 0x01, 0x40, 0x91, 0x43, 0xc9, 0x68, 0x02, - 0x40, 0x11, 0x60, 0x01, 0x20, 0x92, 0x49, 0x05, - 0x60, 0x08, 0x20, 0x00, 0xe7, 0xc6, 0xe7, 0xc5, - 0xe7, 0xc4, 0x00, 0x00, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xd1, 0xf0, 0x2e, 0x08, 0xba, 0x30, - 0x68, 0x00, 0x00, 0x20, 0xb4, 0x90, 0x1c, 0x07, - 0x1c, 0x0a, 0x06, 0x39, 0x0e, 0x09, 0x48, 0x10, - 0x68, 0x00, 0x28, 0x00, 0xd1, 0x02, 0x20, 0x8b, - 0xbc, 0x90, 0x47, 0x70, 0x29, 0x07, 0xdd, 0x01, - 0x20, 0x8c, 0xe7, 0xf9, 0x48, 0x0b, 0x68, 0x00, - 0x28, 0x00, 0xd0, 0x01, 0x20, 0xff, 0xe7, 0xf3, - 0x1d, 0xc8, 0x30, 0x01, 0x24, 0x01, 0x40, 0x84, - 0x1c, 0x23, 0x20, 0x0d, 0x06, 0xc0, 0x6a, 0x00, - 0x40, 0x18, 0x1d, 0xcc, 0x34, 0x01, 0x40, 0xe0, - 0x60, 0x10, 0x20, 0x00, 0xe7, 0xe4, 0xe7, 0xe3, - 0x2e, 0x08, 0x9d, 0xf0, 0x2e, 0x08, 0xd1, 0xf0, - 0xb5, 0xb0, 0x1c, 0x04, 0x1c, 0x0f, 0x06, 0x25, - 0x0e, 0x2d, 0x48, 0x13, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x03, 0x20, 0x8b, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x2d, 0x07, 0xdd, 0x01, 0x20, 0x8c, - 0xe7, 0xf8, 0x48, 0x0e, 0x68, 0x00, 0x28, 0x00, - 0xd0, 0x01, 0x20, 0xff, 0xe7, 0xf2, 0x49, 0x0c, - 0x20, 0x91, 0xf0, 0x10, 0xff, 0xb9, 0x28, 0x92, - 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, 0xfb, 0x66, - 0xe7, 0xf5, 0x08, 0xb8, 0x00, 0xa9, 0x4b, 0x07, - 0x18, 0xc9, 0x67, 0x08, 0x20, 0x92, 0x49, 0x04, - 0x60, 0x08, 0x20, 0x00, 0xe7, 0xde, 0xe7, 0xdd, - 0x2e, 0x08, 0x9d, 0xf0, 0x2e, 0x08, 0xd1, 0xf0, - 0x2e, 0x08, 0xba, 0x30, 0x68, 0x00, 0x0e, 0x00, - 0xb4, 0xf0, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, - 0x1c, 0x1e, 0x04, 0x3f, 0x0c, 0x3f, 0x1c, 0x39, - 0x29, 0x00, 0xd8, 0x02, 0xe0, 0x04, 0x39, 0x01, - 0xe7, 0xfa, 0xcd, 0x04, 0xc4, 0x04, 0xe7, 0xfa, - 0x20, 0x92, 0x4a, 0x03, 0x60, 0x10, 0x20, 0x00, - 0xbc, 0xf0, 0x47, 0x70, 0xe7, 0xfc, 0x00, 0x00, - 0x2e, 0x08, 0xba, 0x34, 0x20, 0x00, 0x6b, 0x00, - 0x49, 0x63, 0x60, 0x08, 0x20, 0x00, 0x6b, 0x40, - 0x49, 0x62, 0x60, 0x08, 0x48, 0x62, 0x49, 0x63, - 0x60, 0x08, 0x48, 0x63, 0x49, 0x63, 0x60, 0x08, - 0x20, 0x00, 0x6a, 0xc0, 0x49, 0x62, 0x60, 0x08, - 0x48, 0x62, 0x49, 0x63, 0x60, 0x08, 0x48, 0x63, - 0x49, 0x63, 0x60, 0x08, 0x48, 0x63, 0x49, 0x64, - 0x60, 0x08, 0x20, 0x00, 0x6b, 0x80, 0x49, 0x63, - 0x60, 0x08, 0x20, 0x00, 0x6b, 0xc0, 0x49, 0x62, - 0x60, 0x08, 0x20, 0x00, 0x6c, 0x00, 0x49, 0x61, - 0x60, 0x08, 0x20, 0x00, 0x6c, 0x40, 0x49, 0x60, - 0x60, 0x08, 0x20, 0x00, 0x6c, 0x80, 0x49, 0x5f, - 0x60, 0x08, 0x20, 0x00, 0x6c, 0xc0, 0x49, 0x5e, - 0x60, 0x08, 0x20, 0x00, 0x6e, 0xc0, 0x49, 0x5d, - 0x60, 0x08, 0x20, 0x80, 0x6d, 0x00, 0x49, 0x5c, - 0x60, 0x08, 0x20, 0x80, 0x6d, 0x40, 0x49, 0x5b, - 0x60, 0x08, 0x20, 0x80, 0x6d, 0x80, 0x49, 0x5a, - 0x60, 0x08, 0x20, 0x00, 0x6d, 0x00, 0x49, 0x59, - 0x60, 0x08, 0x20, 0x00, 0x6d, 0x40, 0x49, 0x58, - 0x60, 0x08, 0x20, 0x00, 0x6d, 0x80, 0x49, 0x57, - 0x60, 0x08, 0x20, 0x00, 0x6d, 0xc0, 0x49, 0x56, - 0x60, 0x08, 0x20, 0x80, 0x6a, 0xc0, 0x49, 0x55, - 0x60, 0x08, 0x20, 0x80, 0x6d, 0xc0, 0x49, 0x54, - 0x60, 0x08, 0x20, 0x80, 0x6c, 0xc0, 0x49, 0x53, - 0x60, 0x08, 0x20, 0x80, 0x68, 0x40, 0x49, 0x52, - 0x60, 0x08, 0x20, 0x80, 0x68, 0x80, 0x49, 0x51, - 0x60, 0x08, 0x20, 0x80, 0x68, 0xc0, 0x49, 0x50, - 0x60, 0x08, 0x20, 0x80, 0x69, 0x00, 0x49, 0x4f, - 0x60, 0x08, 0x20, 0x80, 0x69, 0x40, 0x49, 0x4e, - 0x60, 0x08, 0x20, 0x80, 0x69, 0x80, 0x49, 0x4d, - 0x60, 0x08, 0x20, 0x80, 0x69, 0xc0, 0x49, 0x4c, - 0x60, 0x08, 0x20, 0x80, 0x6a, 0x00, 0x49, 0x4b, - 0x60, 0x08, 0x20, 0x80, 0x6a, 0x40, 0x49, 0x4a, - 0x60, 0x08, 0x20, 0x80, 0x6a, 0x80, 0x49, 0x49, - 0x60, 0x08, 0x20, 0x00, 0x6f, 0x00, 0x49, 0x48, - 0x60, 0x08, 0x20, 0x00, 0x6f, 0x40, 0x49, 0x47, - 0x60, 0x08, 0x20, 0x80, 0x6c, 0x40, 0x49, 0x46, - 0x60, 0x08, 0x20, 0x80, 0x6c, 0x80, 0x49, 0x45, - 0x60, 0x08, 0x20, 0x80, 0x6e, 0x40, 0x49, 0x44, - 0x60, 0x08, 0x20, 0x80, 0x6e, 0x80, 0x49, 0x43, - 0x60, 0x08, 0x20, 0x00, 0x49, 0x42, 0x60, 0x08, - 0x20, 0x00, 0x49, 0x41, 0x60, 0x48, 0x48, 0x41, - 0x49, 0x3f, 0x60, 0x88, 0x48, 0x40, 0x49, 0x3e, - 0x60, 0xc8, 0x20, 0xff, 0x30, 0x01, 0x68, 0x40, - 0x49, 0x3e, 0x60, 0x08, 0x20, 0x80, 0x6e, 0xc0, - 0x49, 0x3d, 0x60, 0x08, 0x20, 0x80, 0x6f, 0x00, - 0x49, 0x3c, 0x60, 0x08, 0x20, 0x80, 0x6f, 0x40, - 0x49, 0x3b, 0x60, 0x08, 0x20, 0x80, 0x6f, 0x80, - 0x49, 0x3a, 0x60, 0x08, 0x20, 0x80, 0x6f, 0xc0, - 0x49, 0x39, 0x60, 0x08, 0x20, 0xff, 0x30, 0x01, - 0x68, 0x80, 0x49, 0x38, 0x60, 0x08, 0x47, 0x70, - 0x2e, 0x08, 0x9b, 0x28, 0x2e, 0x08, 0x9b, 0x2c, - 0x64, 0x00, 0x05, 0x00, 0x2e, 0x08, 0x9b, 0x34, - 0x64, 0x00, 0x00, 0x80, 0x2e, 0x08, 0x9b, 0x38, - 0x2e, 0x08, 0x9b, 0x30, 0x64, 0x00, 0x04, 0x00, - 0x2e, 0x08, 0x9b, 0x3c, 0x9e, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0x9b, 0x54, 0x9e, 0x00, 0x05, 0x00, - 0x2e, 0x08, 0x9b, 0x40, 0x2e, 0x08, 0xd2, 0x08, - 0x2e, 0x08, 0xd2, 0x0c, 0x2e, 0x08, 0xd2, 0x10, - 0x2e, 0x08, 0xd2, 0x14, 0x2e, 0x08, 0x9b, 0x44, - 0x2e, 0x08, 0x9b, 0x48, 0x2e, 0x08, 0x9b, 0x58, - 0x2e, 0x08, 0x9b, 0x5c, 0x2e, 0x08, 0x9b, 0x60, - 0x2e, 0x08, 0x9b, 0x64, 0x2e, 0x08, 0x9b, 0x4c, - 0x2e, 0x08, 0x9b, 0x50, 0x2e, 0x08, 0x9d, 0xd8, - 0x2e, 0x08, 0x9d, 0xdc, 0x2e, 0x08, 0x9b, 0x68, - 0x2e, 0x08, 0x9b, 0x6c, 0x2e, 0x08, 0x9b, 0x98, - 0x2e, 0x08, 0x9b, 0x70, 0x2e, 0x08, 0x9b, 0x74, - 0x2e, 0x08, 0x9b, 0x78, 0x2e, 0x08, 0x9b, 0x7c, - 0x2e, 0x08, 0x9b, 0x80, 0x2e, 0x08, 0x9b, 0x84, - 0x2e, 0x08, 0x9b, 0x88, 0x2e, 0x08, 0x9b, 0x8c, - 0x2e, 0x08, 0x9b, 0x90, 0x2e, 0x08, 0x9b, 0x94, - 0x2e, 0x08, 0x9b, 0x1c, 0x2e, 0x08, 0x9b, 0x20, - 0x2e, 0x08, 0xb9, 0xb0, 0x2e, 0x08, 0x9b, 0xc0, - 0x2e, 0x08, 0x9b, 0xa0, 0x2e, 0x08, 0x9d, 0xe0, - 0x2e, 0x08, 0xb9, 0x88, 0xcc, 0x1f, 0xe0, 0x00, - 0xcc, 0x1f, 0xfe, 0x00, 0x2e, 0x08, 0x9b, 0xac, - 0x2e, 0x08, 0x9b, 0xc4, 0x2e, 0x08, 0x9b, 0xa4, - 0x2e, 0x08, 0x9b, 0xa8, 0x2e, 0x08, 0xb9, 0xac, - 0x2e, 0x08, 0xb9, 0x84, 0x2e, 0x08, 0x9b, 0xb4, - 0x49, 0x4f, 0x68, 0x0a, 0x23, 0x04, 0x43, 0x1a, - 0x60, 0x0a, 0x21, 0xff, 0x4a, 0x4d, 0x68, 0x12, - 0x32, 0x40, 0x72, 0x11, 0x21, 0xff, 0x4a, 0x4b, - 0x68, 0x12, 0x32, 0x40, 0x76, 0x11, 0x21, 0xff, - 0x4a, 0x48, 0x68, 0x12, 0x32, 0x60, 0x72, 0x11, - 0x21, 0xff, 0x4a, 0x46, 0x68, 0x12, 0x32, 0x20, - 0x72, 0x11, 0x21, 0xff, 0x4a, 0x43, 0x68, 0x12, - 0x32, 0x20, 0x76, 0x11, 0x21, 0xff, 0x4a, 0x41, - 0x68, 0x12, 0x32, 0x60, 0x76, 0x11, 0x21, 0x00, - 0x4a, 0x3e, 0x68, 0x12, 0x32, 0x40, 0x72, 0x91, - 0x21, 0x00, 0x4a, 0x3c, 0x68, 0x12, 0x32, 0x40, - 0x76, 0x91, 0x21, 0x00, 0x4a, 0x39, 0x68, 0x12, - 0x32, 0x60, 0x72, 0x91, 0x21, 0x00, 0x4a, 0x37, - 0x68, 0x12, 0x32, 0x20, 0x72, 0x91, 0x21, 0x00, - 0x4a, 0x34, 0x68, 0x12, 0x32, 0x20, 0x76, 0x91, - 0x21, 0x00, 0x4a, 0x32, 0x68, 0x12, 0x32, 0x60, - 0x76, 0x91, 0x21, 0x00, 0x4a, 0x2f, 0x68, 0x12, - 0x32, 0x80, 0x70, 0xd1, 0x21, 0x00, 0x4a, 0x2d, - 0x68, 0x12, 0x32, 0x80, 0x70, 0x51, 0x21, 0x00, - 0x4a, 0x2a, 0x68, 0x12, 0x32, 0x80, 0x70, 0x91, - 0x21, 0x00, 0x4a, 0x29, 0x60, 0x11, 0x21, 0x00, - 0x4a, 0x28, 0x64, 0x11, 0x21, 0x03, 0x4a, 0x28, - 0x61, 0x11, 0x49, 0x28, 0x68, 0x0a, 0x4b, 0x28, - 0x43, 0x1a, 0x60, 0x0a, 0x49, 0x26, 0x22, 0x33, - 0x06, 0x52, 0x60, 0x51, 0x21, 0x00, 0x4a, 0x25, - 0x70, 0x11, 0x21, 0x00, 0x4a, 0x23, 0x70, 0x51, - 0x21, 0x00, 0x4a, 0x22, 0x70, 0x91, 0x21, 0x00, - 0x4a, 0x20, 0x70, 0xd1, 0x21, 0x00, 0x4a, 0x1f, - 0x71, 0x11, 0x21, 0x00, 0x4a, 0x1d, 0x71, 0x51, - 0x21, 0x00, 0x4a, 0x1c, 0x71, 0x91, 0x21, 0x00, - 0x4a, 0x1a, 0x71, 0xd1, 0x21, 0x00, 0x4a, 0x19, - 0x72, 0x11, 0x21, 0x00, 0x4a, 0x17, 0x72, 0x51, - 0x21, 0x00, 0x4a, 0x16, 0x72, 0x91, 0x21, 0x00, - 0x4a, 0x14, 0x72, 0xd1, 0x21, 0x00, 0x4a, 0x13, - 0x73, 0x11, 0x21, 0xff, 0x4a, 0x11, 0x70, 0x11, - 0x21, 0x00, 0x4a, 0x10, 0x70, 0x11, 0x21, 0x00, - 0x4a, 0x0e, 0x70, 0x51, 0x20, 0x00, 0x28, 0x20, - 0xdb, 0x04, 0xe0, 0x08, 0x1c, 0x41, 0x06, 0x08, - 0x0e, 0x00, 0xe7, 0xf8, 0x21, 0xff, 0x4a, 0x03, - 0x68, 0x12, 0x54, 0x11, 0xe7, 0xf6, 0x47, 0x70, - 0x66, 0x00, 0x01, 0x18, 0x2e, 0x08, 0xb9, 0xb0, - 0x9e, 0x00, 0x0a, 0x00, 0x9e, 0x00, 0x0a, 0x80, - 0x66, 0x00, 0x01, 0x00, 0x66, 0x00, 0x00, 0x08, - 0x23, 0x48, 0x00, 0x00, 0x2e, 0x08, 0xb9, 0xb4, - 0xb4, 0x80, 0x1c, 0x07, 0x1c, 0x0a, 0x06, 0x39, - 0x0e, 0x09, 0x29, 0x05, 0xd2, 0x40, 0xa3, 0x02, - 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x03, 0x14, 0x07, 0x0d, 0x13, 0x00, 0x78, 0x10, - 0x4b, 0x1f, 0x70, 0x18, 0xe0, 0x38, 0x78, 0x50, - 0x4b, 0x1e, 0x68, 0x1b, 0x33, 0x80, 0x71, 0x58, - 0xe0, 0x32, 0x78, 0x10, 0x4b, 0x1b, 0x68, 0x1b, - 0x33, 0x80, 0x71, 0x18, 0xe0, 0x2c, 0xe0, 0x2b, - 0x78, 0x10, 0x4b, 0x17, 0x70, 0x18, 0x78, 0x50, - 0x4b, 0x15, 0x70, 0x58, 0x78, 0x90, 0x4b, 0x14, - 0x70, 0x98, 0x78, 0xd0, 0x4b, 0x12, 0x70, 0xd8, - 0x79, 0x10, 0x4b, 0x11, 0x71, 0x18, 0x79, 0x50, - 0x4b, 0x0f, 0x71, 0x58, 0x79, 0x90, 0x4b, 0x0e, - 0x71, 0x98, 0x79, 0xd0, 0x4b, 0x0c, 0x71, 0xd8, - 0x7a, 0x10, 0x4b, 0x0b, 0x72, 0x18, 0x7a, 0x50, - 0x4b, 0x09, 0x72, 0x58, 0x7a, 0x90, 0x4b, 0x08, - 0x72, 0x98, 0x7a, 0xd0, 0x4b, 0x06, 0x72, 0xd8, - 0x7b, 0x10, 0x4b, 0x05, 0x73, 0x18, 0xe0, 0x03, - 0x20, 0x4a, 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xff, - 0x20, 0x00, 0xe7, 0xfa, 0xe7, 0xf9, 0x00, 0x00, - 0x2e, 0x08, 0xb9, 0xb4, 0x2e, 0x08, 0xb9, 0xb0, - 0xb5, 0xf3, 0x1c, 0x07, 0x06, 0x3e, 0x0e, 0x36, - 0x99, 0x01, 0x06, 0x0c, 0x0e, 0x24, 0x2e, 0x20, - 0xdb, 0x04, 0x20, 0xa2, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x02, 0xd0, 0x03, - 0x2c, 0x03, 0xd0, 0x01, 0x2c, 0x04, 0xd1, 0x0b, - 0x48, 0xb8, 0x68, 0x00, 0x30, 0x20, 0x7a, 0x80, - 0x28, 0x00, 0xd1, 0x39, 0x48, 0xb5, 0x68, 0x00, - 0x30, 0x20, 0x7e, 0x80, 0x28, 0x00, 0xd1, 0x33, - 0x2c, 0x00, 0xd1, 0x17, 0x48, 0xb1, 0x68, 0x00, - 0x30, 0x40, 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x2b, - 0x48, 0xae, 0x68, 0x00, 0x30, 0x40, 0x7e, 0x80, - 0x28, 0x00, 0xd1, 0x25, 0x48, 0xab, 0x68, 0x00, - 0x30, 0x60, 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x1f, - 0x48, 0xa8, 0x68, 0x00, 0x30, 0x20, 0x7e, 0x80, - 0x28, 0x00, 0xd1, 0x19, 0x2c, 0x01, 0xd1, 0x19, - 0x48, 0xa4, 0x68, 0x00, 0x30, 0x40, 0x7a, 0x80, - 0x28, 0x00, 0xd1, 0x11, 0x48, 0xa1, 0x68, 0x00, - 0x30, 0x40, 0x7e, 0x80, 0x28, 0x00, 0xd1, 0x0b, - 0x48, 0x9e, 0x68, 0x00, 0x30, 0x60, 0x7a, 0x80, - 0x28, 0x00, 0xd1, 0x05, 0x48, 0x9b, 0x68, 0x00, - 0x30, 0x20, 0x7a, 0x80, 0x28, 0x00, 0xd0, 0x01, - 0x20, 0x49, 0xe7, 0xb3, 0x48, 0x97, 0x68, 0x00, - 0x55, 0x84, 0x2c, 0xff, 0xd0, 0x73, 0x20, 0x01, - 0x49, 0x95, 0x60, 0x48, 0x2c, 0x05, 0xd2, 0x6f, - 0xa3, 0x01, 0x5d, 0x1b, 0x00, 0x5b, 0x44, 0x9f, - 0x02, 0x34, 0x30, 0x30, 0x30, 0x00, 0x20, 0x02, - 0x49, 0x90, 0x61, 0x88, 0x48, 0x90, 0x6a, 0xc0, - 0x49, 0x90, 0x60, 0x08, 0x48, 0x90, 0x68, 0x01, - 0x23, 0x01, 0x07, 0x5b, 0x43, 0x19, 0x60, 0x01, - 0x48, 0x8e, 0x49, 0x8b, 0x62, 0xc8, 0x48, 0x8c, - 0x68, 0x01, 0x4b, 0x8d, 0x40, 0x19, 0x60, 0x01, - 0x20, 0x01, 0x21, 0x31, 0x06, 0x49, 0x61, 0x88, - 0x20, 0x15, 0x21, 0x31, 0x06, 0x49, 0x61, 0x08, - 0x20, 0x0f, 0x21, 0x31, 0x06, 0x49, 0x61, 0xc8, - 0x20, 0x0c, 0x21, 0x31, 0x06, 0x49, 0x61, 0xc8, - 0x20, 0x54, 0x21, 0x31, 0x06, 0x49, 0x62, 0xc8, - 0x20, 0x37, 0x21, 0x31, 0x06, 0x49, 0x60, 0x88, - 0xe0, 0x56, 0x20, 0x00, 0x49, 0x79, 0x61, 0x88, - 0xe0, 0x52, 0x20, 0x01, 0x49, 0x77, 0x61, 0x88, - 0x20, 0x01, 0x49, 0x7c, 0x62, 0x88, 0x48, 0x7c, - 0x78, 0x00, 0x06, 0x80, 0x0e, 0x80, 0x02, 0x80, - 0x49, 0x79, 0x78, 0x49, 0x07, 0xc9, 0x0d, 0x89, - 0x43, 0x08, 0x49, 0x77, 0x78, 0x89, 0x07, 0xc9, - 0x0d, 0xc9, 0x43, 0x08, 0x49, 0x74, 0x78, 0xc9, - 0x07, 0x89, 0x0f, 0x89, 0x01, 0x89, 0x43, 0x08, - 0x49, 0x71, 0x79, 0x09, 0x07, 0x89, 0x0f, 0x89, - 0x01, 0x09, 0x43, 0x08, 0x49, 0x6e, 0x79, 0x49, - 0x07, 0x89, 0x0f, 0x89, 0x00, 0x89, 0x43, 0x08, - 0x49, 0x6b, 0x79, 0x89, 0x07, 0x89, 0x0f, 0x89, - 0x43, 0x08, 0x49, 0x68, 0x62, 0x08, 0x48, 0x68, - 0x79, 0xc0, 0x07, 0xc0, 0x0e, 0x40, 0x49, 0x66, - 0x7a, 0x09, 0x07, 0xc9, 0xe0, 0x01, 0xe0, 0x21, - 0xe0, 0x18, 0x0e, 0xc9, 0x43, 0x08, 0x49, 0x62, - 0x7a, 0x49, 0x07, 0xc9, 0x0f, 0x09, 0x43, 0x08, - 0x49, 0x5f, 0x7a, 0x89, 0x07, 0xc9, 0x0f, 0x49, - 0x43, 0x08, 0x49, 0x5d, 0x7a, 0xc9, 0x07, 0xc9, - 0x0f, 0x89, 0x43, 0x08, 0x49, 0x5a, 0x7b, 0x09, - 0x07, 0xc9, 0x0f, 0xc9, 0x43, 0x08, 0x49, 0x57, - 0x62, 0x48, 0xe0, 0x01, 0x20, 0x4a, 0xe7, 0x1d, - 0x48, 0x51, 0x68, 0x01, 0x4b, 0x55, 0x40, 0x19, - 0x60, 0x01, 0xe0, 0x8f, 0x48, 0x49, 0x68, 0x00, - 0x30, 0x80, 0x78, 0xc0, 0x28, 0x00, 0xd0, 0x08, - 0x22, 0x00, 0xb4, 0x04, 0x1c, 0x30, 0x23, 0x00, - 0x22, 0x00, 0x49, 0x4f, 0xf7, 0xf4, 0xfc, 0x10, - 0xb0, 0x01, 0x20, 0x00, 0x49, 0x42, 0x60, 0x48, - 0x48, 0x45, 0x68, 0x01, 0x4b, 0x4b, 0x43, 0x19, - 0x60, 0x01, 0x48, 0x4a, 0x21, 0x33, 0x06, 0x49, - 0x60, 0x48, 0x48, 0x49, 0x68, 0x01, 0x23, 0x04, - 0x43, 0x19, 0x60, 0x01, 0x2c, 0x00, 0xd1, 0x0e, - 0x48, 0x3c, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x0a, - 0x48, 0x3a, 0x68, 0x00, 0x49, 0x38, 0x62, 0xc8, - 0x20, 0x00, 0x49, 0x38, 0x60, 0x08, 0x20, 0x00, - 0x21, 0x31, 0x06, 0x49, 0x61, 0x88, 0x20, 0x00, - 0x49, 0x30, 0x68, 0x09, 0x31, 0x80, 0x70, 0x48, - 0x20, 0x00, 0x49, 0x2e, 0x68, 0x09, 0x31, 0x80, - 0x70, 0x88, 0x20, 0x00, 0x49, 0x39, 0x60, 0x08, - 0x20, 0x00, 0x49, 0x39, 0x64, 0x08, 0x20, 0x03, - 0x49, 0x2a, 0x61, 0x08, 0x25, 0x00, 0x2d, 0x20, - 0xd3, 0x02, 0xe0, 0x06, 0x35, 0x01, 0xe7, 0xfa, - 0x20, 0xff, 0x49, 0x24, 0x68, 0x09, 0x55, 0x48, - 0xe7, 0xf8, 0x20, 0xff, 0x49, 0x21, 0x68, 0x09, - 0x31, 0x40, 0x72, 0x08, 0x20, 0xff, 0x49, 0x1f, - 0x68, 0x09, 0x31, 0x40, 0x76, 0x08, 0x20, 0xff, - 0x49, 0x1c, 0x68, 0x09, 0x31, 0x60, 0x72, 0x08, - 0x20, 0xff, 0x49, 0x1a, 0x68, 0x09, 0x31, 0x20, - 0x72, 0x08, 0x20, 0xff, 0x49, 0x17, 0x68, 0x09, - 0x31, 0x20, 0x76, 0x08, 0x20, 0xff, 0x49, 0x15, - 0x68, 0x09, 0x31, 0x60, 0x76, 0x08, 0x20, 0x00, - 0x49, 0x12, 0x68, 0x09, 0x31, 0x40, 0x72, 0x88, - 0x20, 0x00, 0x49, 0x10, 0x68, 0x09, 0x31, 0x40, - 0x76, 0x88, 0x20, 0x00, 0x49, 0x0d, 0x68, 0x09, - 0x31, 0x60, 0x72, 0x88, 0x20, 0x00, 0x49, 0x0b, - 0x68, 0x09, 0x31, 0x20, 0x72, 0x88, 0x20, 0x00, - 0x49, 0x08, 0x68, 0x09, 0x31, 0x20, 0x76, 0x88, - 0x20, 0x00, 0x49, 0x06, 0x68, 0x09, 0x31, 0x60, - 0x76, 0x88, 0x20, 0x00, 0x49, 0x03, 0x68, 0x09, - 0x31, 0x80, 0x70, 0xc8, 0x20, 0x00, 0xe6, 0x85, - 0xe6, 0x84, 0x00, 0x00, 0x2e, 0x08, 0xb9, 0xb0, - 0x62, 0x00, 0x03, 0x00, 0x66, 0x00, 0x01, 0x00, - 0xa0, 0x00, 0x0d, 0x80, 0x2e, 0x08, 0x20, 0x88, - 0x66, 0x00, 0x00, 0x08, 0x2e, 0x01, 0xe1, 0xa8, - 0xdf, 0xff, 0xff, 0xff, 0x62, 0x01, 0x00, 0x00, - 0x2e, 0x08, 0xb9, 0xb4, 0xfc, 0xb7, 0xff, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x23, 0x48, 0x00, 0x00, - 0x66, 0x00, 0x01, 0x18, 0x9e, 0x00, 0x0a, 0x00, - 0x9e, 0x00, 0x0a, 0x80, 0xb5, 0xf7, 0x1c, 0x17, - 0x98, 0x00, 0x06, 0x02, 0x0e, 0x12, 0x99, 0x01, - 0x06, 0x0d, 0x0e, 0x2d, 0x48, 0x6a, 0x68, 0x00, - 0x5c, 0x81, 0x2a, 0x20, 0xdb, 0x04, 0x20, 0xa2, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x29, 0xff, 0xd1, 0x01, 0x20, 0x4b, 0xe7, 0xf7, - 0x48, 0x64, 0x69, 0x80, 0x28, 0x00, 0xd1, 0x03, - 0x29, 0x04, 0xd1, 0x01, 0x20, 0x58, 0xe7, 0xef, - 0x48, 0x60, 0x69, 0x80, 0x28, 0x00, 0xd1, 0x03, - 0x29, 0x02, 0xd0, 0x01, 0x29, 0x03, 0xd1, 0x0b, - 0x48, 0x5c, 0x69, 0x80, 0x28, 0x02, 0xd1, 0x01, - 0x29, 0x00, 0xd1, 0x05, 0x48, 0x59, 0x69, 0x80, - 0x28, 0x01, 0xd1, 0x03, 0x29, 0x01, 0xd0, 0x01, - 0x20, 0x4d, 0xe7, 0xd9, 0x29, 0x02, 0xd1, 0x05, - 0x48, 0x53, 0x68, 0x00, 0x30, 0x40, 0x7a, 0x80, - 0x28, 0x00, 0xd1, 0x17, 0x29, 0x03, 0xd1, 0x05, - 0x48, 0x4f, 0x68, 0x00, 0x30, 0x40, 0x7e, 0x80, - 0x28, 0x00, 0xd1, 0x0f, 0x29, 0x00, 0xd1, 0x05, - 0x48, 0x4b, 0x68, 0x00, 0x30, 0x20, 0x7a, 0x80, - 0x28, 0x00, 0xd1, 0x07, 0x29, 0x01, 0xd1, 0x07, - 0x48, 0x47, 0x68, 0x00, 0x30, 0x20, 0x7e, 0x80, - 0x28, 0x00, 0xd0, 0x01, 0x20, 0x4e, 0xe7, 0xb7, - 0x68, 0x78, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x4c, - 0xe7, 0xb2, 0x23, 0x01, 0x01, 0x08, 0x4e, 0x40, - 0x68, 0x36, 0x19, 0x80, 0x30, 0x20, 0x72, 0x83, - 0x2d, 0x01, 0xd1, 0x0b, 0x20, 0x33, 0x06, 0x40, - 0x6e, 0x40, 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, - 0x00, 0xd3, 0x4e, 0x3b, 0x68, 0x36, 0x19, 0x9b, - 0x60, 0x58, 0xe0, 0x12, 0x2d, 0x02, 0xd1, 0x0a, - 0x48, 0x38, 0x6c, 0xc0, 0x23, 0x0d, 0x06, 0x9b, - 0x1a, 0xc3, 0x00, 0xd0, 0x4e, 0x34, 0x68, 0x36, - 0x19, 0x80, 0x60, 0x43, 0xe0, 0x05, 0x68, 0x3b, - 0x00, 0xd0, 0x4e, 0x31, 0x68, 0x36, 0x19, 0x80, - 0x60, 0x43, 0x68, 0x3b, 0x01, 0x08, 0x4e, 0x2c, - 0x68, 0x36, 0x19, 0x80, 0x62, 0x03, 0x68, 0x7b, - 0x01, 0x08, 0x4e, 0x29, 0x68, 0x36, 0x19, 0x80, - 0x62, 0x43, 0x01, 0x08, 0x4b, 0x26, 0x68, 0x1b, - 0x18, 0xc0, 0x62, 0xc7, 0x01, 0x08, 0x4b, 0x24, - 0x68, 0x1b, 0x18, 0xc0, 0x30, 0x20, 0x72, 0x45, - 0x01, 0x08, 0x4b, 0x21, 0x68, 0x1b, 0x18, 0xc0, - 0x30, 0x20, 0x72, 0x02, 0x20, 0x00, 0x60, 0x78, - 0x20, 0x00, 0x72, 0x78, 0x20, 0x00, 0x4b, 0x20, - 0x60, 0x18, 0x20, 0x00, 0x4b, 0x1f, 0x64, 0x18, - 0x01, 0x08, 0x4b, 0x19, 0x68, 0x1b, 0x18, 0xc0, - 0x6a, 0x40, 0x28, 0xbc, 0xdd, 0x01, 0x24, 0xbc, - 0xe0, 0x04, 0x01, 0x08, 0x4b, 0x14, 0x68, 0x1b, - 0x18, 0xc0, 0x6a, 0x44, 0x48, 0x18, 0x60, 0x04, - 0x29, 0x01, 0xd1, 0x14, 0x20, 0x01, 0x4b, 0x17, - 0x62, 0x98, 0x48, 0x17, 0x68, 0x03, 0x04, 0x1b, - 0x0c, 0x1b, 0x60, 0x03, 0x48, 0x14, 0x04, 0x23, - 0x68, 0x06, 0x43, 0x33, 0x60, 0x03, 0x48, 0x13, - 0x68, 0x06, 0x23, 0x20, 0x43, 0x33, 0x60, 0x03, - 0x20, 0x01, 0x4b, 0x0e, 0x63, 0x18, 0x48, 0x07, - 0x69, 0x80, 0x28, 0x00, 0xd1, 0x04, 0x48, 0x0e, - 0x68, 0x06, 0x23, 0x28, 0x43, 0x33, 0x60, 0x03, - 0x20, 0x00, 0xe7, 0x31, 0xe7, 0x30, 0x00, 0x00, - 0x2e, 0x08, 0xb9, 0xb0, 0x66, 0x00, 0x01, 0x00, - 0x2e, 0x08, 0x9b, 0x40, 0x66, 0x00, 0x00, 0x80, - 0x9e, 0x00, 0x0a, 0x00, 0x9e, 0x00, 0x0a, 0x80, - 0x62, 0x00, 0x03, 0x00, 0x62, 0x01, 0x00, 0x00, - 0x62, 0x01, 0x00, 0x20, 0x62, 0x01, 0x00, 0x24, - 0x64, 0x00, 0x00, 0x60, 0xb5, 0xf3, 0x1c, 0x0f, - 0x98, 0x00, 0x06, 0x06, 0x0e, 0x36, 0xb0, 0x82, - 0x4d, 0x68, 0x49, 0x69, 0x91, 0x01, 0x48, 0x69, - 0x68, 0x00, 0x5d, 0x84, 0x2e, 0x20, 0xdb, 0x05, - 0x20, 0xa2, 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2c, 0xff, 0xd1, 0x02, - 0x20, 0x4b, 0xb0, 0x02, 0xe7, 0xf6, 0x48, 0x62, - 0x69, 0x80, 0x28, 0x00, 0xd1, 0x05, 0x2c, 0x02, - 0xd0, 0x03, 0x2c, 0x03, 0xd0, 0x01, 0x2c, 0x04, - 0xd1, 0x0b, 0x48, 0x5d, 0x69, 0x80, 0x28, 0x02, - 0xd1, 0x01, 0x2c, 0x00, 0xd1, 0x05, 0x48, 0x5a, - 0x69, 0x80, 0x28, 0x01, 0xd1, 0x04, 0x2c, 0x01, - 0xd0, 0x02, 0x20, 0x4d, 0xb0, 0x02, 0xe7, 0xdd, - 0x48, 0x54, 0x68, 0x00, 0x30, 0x60, 0x7e, 0x80, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0x4f, 0xb0, 0x02, - 0xe7, 0xd4, 0x48, 0x50, 0x68, 0x00, 0x30, 0x80, - 0x78, 0xc0, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x50, - 0xb0, 0x02, 0xe7, 0xcb, 0x68, 0x78, 0x28, 0x00, - 0xd1, 0x02, 0x20, 0x4c, 0xb0, 0x02, 0xe7, 0xc5, - 0x2c, 0x04, 0xd1, 0x08, 0x68, 0x79, 0x20, 0xbc, - 0xf0, 0x01, 0xff, 0xac, 0x29, 0x00, 0xd0, 0x02, - 0x20, 0x59, 0xb0, 0x02, 0xe7, 0xba, 0x48, 0x43, - 0x68, 0x00, 0x30, 0x80, 0x78, 0x80, 0x21, 0x01, - 0x40, 0x81, 0x48, 0x41, 0x68, 0x40, 0x40, 0x08, - 0x07, 0x80, 0x0f, 0x80, 0xd0, 0x02, 0x20, 0x51, - 0xb0, 0x02, 0xe7, 0xab, 0x20, 0x33, 0x06, 0x40, - 0x6b, 0x80, 0x90, 0x00, 0x23, 0x04, 0x40, 0x18, - 0xd0, 0x02, 0x20, 0x52, 0xb0, 0x02, 0xe7, 0xa1, - 0x2c, 0x00, 0xd1, 0x04, 0x48, 0x37, 0x68, 0x01, - 0x23, 0xfd, 0x40, 0x19, 0x60, 0x01, 0x20, 0x01, - 0x49, 0x32, 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, - 0x68, 0x38, 0x49, 0x30, 0x68, 0x09, 0x67, 0x08, - 0x68, 0x78, 0x49, 0x2e, 0x68, 0x09, 0x67, 0x48, - 0x48, 0x2c, 0x68, 0x00, 0x67, 0xc7, 0x20, 0x00, - 0x49, 0x2a, 0x68, 0x09, 0x31, 0x60, 0x76, 0x48, - 0x48, 0x28, 0x68, 0x00, 0x30, 0x60, 0x76, 0x06, - 0x20, 0x00, 0x60, 0x78, 0x20, 0x00, 0x72, 0x78, - 0x48, 0x24, 0x68, 0x00, 0x5d, 0x80, 0x28, 0x01, - 0xd1, 0x02, 0x20, 0x01, 0x49, 0x24, 0x62, 0x88, - 0x98, 0x00, 0x01, 0x00, 0x19, 0x45, 0x48, 0x1f, - 0x68, 0x00, 0x6f, 0x40, 0x28, 0xbc, 0xdd, 0x07, - 0x48, 0x20, 0x60, 0xa8, 0x20, 0xbc, 0x49, 0x1b, - 0x68, 0x09, 0x31, 0x80, 0x70, 0x08, 0xe0, 0x0d, - 0x48, 0x18, 0x68, 0x00, 0x6f, 0x40, 0x23, 0x01, - 0x07, 0x9b, 0x43, 0x18, 0x60, 0xa8, 0x48, 0x15, - 0x68, 0x00, 0x6f, 0x40, 0x49, 0x13, 0x68, 0x09, - 0x31, 0x80, 0x70, 0x08, 0x48, 0x11, 0x68, 0x00, - 0x30, 0x80, 0x78, 0x80, 0x00, 0x43, 0x18, 0x18, - 0x01, 0x80, 0x99, 0x01, 0x18, 0x41, 0x91, 0x01, - 0x48, 0x0c, 0x68, 0x00, 0x6f, 0x00, 0x60, 0x28, - 0x99, 0x01, 0x1d, 0x08, 0x60, 0x68, 0x20, 0x01, - 0x06, 0x00, 0x60, 0xe8, 0x99, 0x00, 0x20, 0x01, - 0x40, 0x88, 0x21, 0x33, 0x06, 0x49, 0x63, 0x48, - 0x20, 0x00, 0xb0, 0x02, 0xe7, 0x3a, 0xb0, 0x02, - 0xe7, 0x38, 0x00, 0x00, 0x9e, 0x00, 0x09, 0x80, - 0x9e, 0x00, 0x0b, 0x80, 0x2e, 0x08, 0xb9, 0xb0, - 0x66, 0x00, 0x01, 0x00, 0x62, 0x00, 0x00, 0x1c, - 0x62, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0xbc, - 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x81, 0x98, 0x01, - 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, 0xb0, 0x82, - 0x48, 0xf9, 0x68, 0x00, 0x99, 0x02, 0x5c, 0x44, - 0x98, 0x02, 0x28, 0x20, 0xdb, 0x05, 0x20, 0xa2, - 0xb0, 0x03, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x2c, 0xff, 0xd1, 0x02, 0x20, 0x4b, - 0xb0, 0x03, 0xe7, 0xf6, 0x48, 0xf1, 0x69, 0x80, - 0x28, 0x00, 0xd1, 0x05, 0x2c, 0x02, 0xd0, 0x03, - 0x2c, 0x03, 0xd0, 0x01, 0x2c, 0x04, 0xd1, 0x0b, - 0x48, 0xec, 0x69, 0x80, 0x28, 0x02, 0xd1, 0x01, - 0x2c, 0x00, 0xd1, 0x05, 0x48, 0xe9, 0x69, 0x80, - 0x28, 0x01, 0xd1, 0x04, 0x2c, 0x01, 0xd0, 0x02, - 0x20, 0x4d, 0xb0, 0x03, 0xe7, 0xdd, 0x48, 0xe4, - 0x68, 0x00, 0x30, 0x60, 0x7e, 0x80, 0x28, 0x00, - 0xd0, 0x02, 0x20, 0x4f, 0xb0, 0x03, 0xe7, 0xd4, - 0x68, 0x78, 0x28, 0x00, 0xd1, 0x02, 0x20, 0x4c, - 0xb0, 0x03, 0xe7, 0xce, 0x2c, 0x04, 0xd1, 0x08, - 0x68, 0x79, 0x20, 0xbc, 0xf0, 0x01, 0xfe, 0xce, - 0x29, 0x00, 0xd0, 0x02, 0x20, 0x59, 0xb0, 0x03, - 0xe7, 0xc3, 0x48, 0xd7, 0x68, 0x00, 0x30, 0x80, - 0x78, 0xc0, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x50, - 0xb0, 0x03, 0xe7, 0xba, 0x2c, 0x00, 0xd1, 0x04, - 0x48, 0xd3, 0x68, 0x01, 0x23, 0xfd, 0x40, 0x19, - 0x60, 0x01, 0x48, 0xd2, 0x68, 0x01, 0x23, 0x8d, - 0x05, 0x9b, 0x43, 0x19, 0x60, 0x01, 0x48, 0xd0, - 0x21, 0x33, 0x06, 0x49, 0x60, 0x48, 0x20, 0x01, - 0x49, 0xc9, 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, - 0x68, 0x38, 0x49, 0xc7, 0x68, 0x09, 0x67, 0x08, - 0x68, 0x78, 0x49, 0xc5, 0x68, 0x09, 0x67, 0x48, - 0x48, 0xc3, 0x68, 0x00, 0x67, 0xc7, 0x20, 0x00, - 0x49, 0xc1, 0x68, 0x09, 0x31, 0x60, 0x76, 0x48, - 0x98, 0x02, 0x49, 0xbf, 0x68, 0x09, 0x31, 0x60, - 0x76, 0x08, 0x20, 0x00, 0x49, 0xbc, 0x68, 0x09, - 0x6f, 0xc9, 0x60, 0x48, 0x20, 0x00, 0x49, 0xba, - 0x68, 0x09, 0x6f, 0xc9, 0x72, 0x48, 0x48, 0xb8, - 0x68, 0x00, 0x99, 0x02, 0x5c, 0x40, 0x28, 0x01, - 0xd1, 0x02, 0x20, 0x01, 0x49, 0xb9, 0x62, 0x88, - 0x48, 0xb3, 0x68, 0x00, 0x30, 0x80, 0x78, 0x81, - 0x20, 0x01, 0x40, 0x88, 0x49, 0xb1, 0x68, 0x49, - 0x40, 0x08, 0x07, 0x80, 0x0f, 0x80, 0xd0, 0x1b, - 0x20, 0x00, 0x49, 0xad, 0x68, 0x09, 0x31, 0x60, - 0x76, 0x88, 0x20, 0x51, 0x49, 0xaa, 0x68, 0x09, - 0x6f, 0xc9, 0x72, 0x48, 0x48, 0xa8, 0x68, 0x00, - 0x6f, 0xc0, 0x7a, 0x00, 0x28, 0xff, 0xd0, 0x07, - 0x48, 0xa5, 0x68, 0x00, 0x6f, 0xc0, 0x7a, 0x01, - 0x20, 0x01, 0x40, 0x88, 0xf0, 0x07, 0xf9, 0xea, - 0x20, 0x51, 0xb0, 0x03, 0xe7, 0x55, 0xe1, 0x6c, - 0x20, 0x33, 0x06, 0x40, 0x6b, 0x81, 0x91, 0x00, - 0x99, 0x00, 0x20, 0x04, 0x40, 0x08, 0xd0, 0x07, - 0x20, 0x04, 0xf0, 0x00, 0xfc, 0xb3, 0x20, 0x33, - 0x06, 0x40, 0x6b, 0x81, 0x91, 0x00, 0xe7, 0xf3, - 0x4d, 0x9d, 0x99, 0x00, 0x01, 0x08, 0x19, 0x45, - 0x48, 0x95, 0x68, 0x00, 0x6f, 0x40, 0x28, 0xbc, - 0xdd, 0x07, 0x48, 0x9a, 0x60, 0xa8, 0x20, 0xbc, - 0x49, 0x91, 0x68, 0x09, 0x31, 0x80, 0x70, 0x08, - 0xe0, 0x0d, 0x48, 0x8f, 0x68, 0x00, 0x6f, 0x40, - 0x23, 0x01, 0x07, 0x9b, 0x43, 0x18, 0x60, 0xa8, - 0x48, 0x8b, 0x68, 0x00, 0x6f, 0x40, 0x49, 0x8a, - 0x68, 0x09, 0x31, 0x80, 0x70, 0x08, 0x48, 0x90, - 0x90, 0x01, 0x48, 0x87, 0x68, 0x00, 0x30, 0x80, - 0x78, 0x80, 0x00, 0x43, 0x18, 0x18, 0x01, 0x80, - 0x99, 0x01, 0x18, 0x40, 0x90, 0x01, 0x48, 0x82, - 0x68, 0x00, 0x6f, 0x00, 0x60, 0x28, 0x98, 0x01, - 0x30, 0x04, 0x60, 0x68, 0x20, 0x01, 0x06, 0x00, - 0x60, 0xe8, 0x99, 0x00, 0x20, 0x01, 0x40, 0x88, - 0x21, 0x33, 0x06, 0x49, 0x63, 0x48, 0x48, 0x83, - 0x6b, 0x00, 0x23, 0x01, 0x06, 0x1b, 0x40, 0x18, - 0xd1, 0x03, 0x20, 0x04, 0xf0, 0x00, 0xfc, 0x6a, - 0xe7, 0xf5, 0x20, 0x01, 0x06, 0x00, 0x21, 0x33, - 0x06, 0x49, 0x60, 0x48, 0x4e, 0x7c, 0x48, 0x72, - 0x68, 0x00, 0x30, 0x80, 0x78, 0x80, 0x01, 0x00, - 0x19, 0x86, 0x98, 0x01, 0x30, 0x04, 0x60, 0x30, - 0x48, 0x78, 0x60, 0x70, 0x48, 0x6c, 0x68, 0x00, - 0x30, 0x80, 0x78, 0x00, 0x23, 0x01, 0x07, 0x9b, - 0x43, 0x18, 0x60, 0xb0, 0x20, 0x01, 0x05, 0x80, - 0x60, 0xf0, 0x48, 0x67, 0x68, 0x00, 0x30, 0x80, - 0x78, 0x81, 0x20, 0x01, 0x40, 0x88, 0x49, 0x65, - 0x60, 0xc8, 0x48, 0x63, 0x68, 0x00, 0x30, 0x60, - 0x7e, 0x00, 0x49, 0x61, 0x68, 0x09, 0x5c, 0x08, - 0x28, 0x00, 0xd0, 0x48, 0x28, 0x01, 0xd0, 0x47, - 0x28, 0x02, 0xd0, 0x02, 0x28, 0x03, 0xd0, 0x21, - 0xe0, 0x5a, 0x48, 0x67, 0x68, 0x01, 0x23, 0x02, - 0x43, 0x19, 0x60, 0x01, 0x48, 0x58, 0x68, 0x00, - 0x6f, 0x40, 0x49, 0x57, 0x68, 0x09, 0x31, 0x80, - 0x78, 0x09, 0x1a, 0x40, 0x28, 0xbc, 0xd8, 0x05, - 0x48, 0x5f, 0x68, 0x01, 0x23, 0x10, 0x43, 0x19, - 0x60, 0x01, 0xe0, 0x05, 0x48, 0x5c, 0x68, 0x01, - 0x23, 0x10, 0x43, 0xdb, 0x40, 0x19, 0x60, 0x01, - 0x48, 0x59, 0x68, 0x01, 0x23, 0x08, 0x43, 0x19, - 0x60, 0x01, 0xe0, 0x39, 0x48, 0x56, 0x68, 0x01, - 0x23, 0x04, 0x43, 0x19, 0x60, 0x01, 0x48, 0x48, - 0x68, 0x00, 0x6f, 0x40, 0x49, 0x46, 0x68, 0x09, - 0x31, 0x80, 0x78, 0x09, 0x1a, 0x40, 0x28, 0xbc, - 0xd8, 0x05, 0x48, 0x4f, 0x68, 0x01, 0x23, 0x10, - 0x43, 0x19, 0x60, 0x01, 0xe0, 0x05, 0x48, 0x4c, - 0x68, 0x01, 0x23, 0x10, 0x43, 0xdb, 0x40, 0x19, - 0x60, 0x01, 0x48, 0x49, 0x68, 0x01, 0x23, 0x08, - 0x43, 0x19, 0x60, 0x01, 0xe0, 0x18, 0xe0, 0x17, - 0x48, 0x46, 0x68, 0x01, 0x04, 0x09, 0x0c, 0x09, - 0x60, 0x01, 0x48, 0x44, 0x49, 0x36, 0x68, 0x09, - 0x31, 0x80, 0x78, 0x09, 0x04, 0x09, 0x68, 0x02, - 0x43, 0x11, 0x60, 0x01, 0x48, 0x40, 0x68, 0x01, - 0x23, 0x20, 0x43, 0xdb, 0x40, 0x19, 0x60, 0x01, - 0x20, 0x01, 0x49, 0x34, 0x63, 0x08, 0xe7, 0xff, - 0x48, 0x36, 0x6b, 0x00, 0x23, 0x01, 0x05, 0x9b, - 0x40, 0x18, 0xd1, 0x03, 0x20, 0x04, 0xf0, 0x00, - 0xfb, 0xd1, 0xe7, 0xf5, 0x20, 0x01, 0x05, 0x80, - 0x21, 0x33, 0x06, 0x49, 0x60, 0x48, 0x48, 0x26, - 0x68, 0x00, 0x30, 0x80, 0x78, 0x80, 0x23, 0x01, - 0x40, 0x58, 0x49, 0x23, 0x68, 0x09, 0x31, 0x80, - 0x70, 0x88, 0x48, 0x21, 0x68, 0x00, 0x6f, 0x40, - 0x49, 0x1f, 0x68, 0x09, 0x31, 0x80, 0x78, 0x09, - 0x1a, 0x40, 0x49, 0x1d, 0x68, 0x09, 0x67, 0x48, - 0x48, 0x1b, 0x68, 0x00, 0x6f, 0xc0, 0x30, 0x04, - 0x49, 0x19, 0x68, 0x09, 0x31, 0x80, 0x78, 0x09, - 0x68, 0x02, 0x18, 0x89, 0x60, 0x01, 0x48, 0x16, - 0x68, 0x00, 0x6f, 0x00, 0x49, 0x14, 0x68, 0x09, - 0x31, 0x80, 0x78, 0x09, 0x18, 0x40, 0x49, 0x12, - 0x68, 0x09, 0x67, 0x08, 0x48, 0x10, 0x68, 0x00, - 0x6f, 0x40, 0x28, 0x00, 0xd0, 0x00, 0xe6, 0xb3, - 0x48, 0x11, 0x21, 0x33, 0x06, 0x49, 0x60, 0x48, - 0x48, 0x0e, 0x68, 0x01, 0x4b, 0x19, 0x40, 0x19, - 0x60, 0x01, 0x20, 0x48, 0x49, 0x08, 0x68, 0x09, - 0x6f, 0xc9, 0x72, 0x48, 0x20, 0x00, 0x49, 0x06, - 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, 0x48, 0x04, - 0x68, 0x00, 0x6f, 0xc0, 0x7a, 0x00, 0x28, 0xff, - 0xd0, 0x29, 0x48, 0x01, 0xe0, 0x20, 0x00, 0x00, - 0x2e, 0x08, 0xb9, 0xb0, 0x66, 0x00, 0x01, 0x00, - 0x62, 0x00, 0x00, 0x1c, 0x66, 0x00, 0x00, 0x08, - 0x23, 0x48, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, - 0x9e, 0x00, 0x09, 0x80, 0x40, 0x00, 0x00, 0xbc, - 0x9e, 0x00, 0x0b, 0x80, 0x66, 0x00, 0x00, 0x80, - 0x9e, 0x00, 0x09, 0xc0, 0x66, 0x00, 0x01, 0xf0, - 0x64, 0x00, 0x00, 0x60, 0x62, 0x01, 0x00, 0x20, - 0x62, 0x01, 0x00, 0x24, 0xfc, 0xb7, 0xff, 0xff, - 0x68, 0x00, 0x6f, 0xc0, 0x7a, 0x01, 0x20, 0x01, - 0x40, 0x88, 0xf0, 0x07, 0xf8, 0x7f, 0x20, 0x00, - 0xb0, 0x03, 0xe5, 0xea, 0xb0, 0x02, 0xb0, 0x01, - 0xe5, 0xe7, 0xe5, 0xe6, 0xb5, 0xb0, 0x1c, 0x07, - 0x06, 0x3d, 0x0e, 0x2d, 0x48, 0x5d, 0x68, 0x00, - 0x5d, 0x44, 0x2d, 0x20, 0xdb, 0x03, 0x20, 0xa2, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x59, - 0x68, 0x00, 0x5d, 0x40, 0x28, 0xff, 0xd1, 0x01, - 0x20, 0x4b, 0xe7, 0xf5, 0x48, 0x56, 0x69, 0x80, - 0x28, 0x00, 0xd1, 0x05, 0x2c, 0x02, 0xd0, 0x03, - 0x2c, 0x03, 0xd0, 0x01, 0x2c, 0x04, 0xd1, 0x0b, - 0x48, 0x51, 0x69, 0x80, 0x28, 0x02, 0xd1, 0x01, - 0x2c, 0x00, 0xd1, 0x05, 0x48, 0x4e, 0x69, 0x80, - 0x28, 0x01, 0xd1, 0x04, 0x2c, 0x01, 0xd0, 0x02, - 0x20, 0x4d, 0xe7, 0xdd, 0xe0, 0x90, 0x48, 0x4b, - 0x68, 0x01, 0x4b, 0x4b, 0x43, 0x19, 0x60, 0x01, - 0x48, 0x49, 0x21, 0x33, 0x06, 0x49, 0x60, 0x48, - 0x48, 0x48, 0x68, 0x01, 0x23, 0x04, 0x43, 0x19, - 0x60, 0x01, 0x20, 0x00, 0x49, 0x41, 0x68, 0x09, - 0x31, 0x80, 0x70, 0x88, 0x20, 0x00, 0x49, 0x3f, - 0x68, 0x09, 0x31, 0x80, 0x70, 0x48, 0x20, 0xff, - 0x49, 0x3c, 0x68, 0x09, 0x55, 0x48, 0x2c, 0x00, - 0xd1, 0x03, 0x20, 0x18, 0x21, 0x31, 0x06, 0x49, - 0x62, 0x48, 0x01, 0x20, 0x49, 0x37, 0x68, 0x09, - 0x18, 0x40, 0x30, 0x20, 0x7a, 0x80, 0x28, 0x00, - 0xd0, 0x28, 0x20, 0x00, 0x49, 0x38, 0x60, 0x08, - 0x20, 0x00, 0x49, 0x38, 0x64, 0x08, 0x20, 0x03, - 0x49, 0x31, 0x61, 0x08, 0x21, 0x55, 0x01, 0x20, - 0x4a, 0x2e, 0x68, 0x12, 0x18, 0x80, 0x6a, 0xc0, - 0x72, 0x41, 0x21, 0x00, 0x01, 0x20, 0x4a, 0x2b, - 0x68, 0x12, 0x18, 0x80, 0x30, 0x20, 0x72, 0x81, - 0x01, 0x20, 0x49, 0x28, 0x68, 0x09, 0x18, 0x40, - 0x6a, 0xc0, 0x7a, 0x00, 0x28, 0xff, 0xd0, 0x09, - 0x01, 0x20, 0x49, 0x24, 0x68, 0x09, 0x18, 0x40, - 0x6a, 0xc0, 0x7a, 0x01, 0x20, 0x01, 0x40, 0x88, - 0xf0, 0x06, 0xff, 0xf8, 0x48, 0x1f, 0x68, 0x00, - 0x30, 0x60, 0x7e, 0x80, 0x28, 0x00, 0xd0, 0x2b, - 0x48, 0x1c, 0x68, 0x00, 0x30, 0x80, 0x78, 0xc0, - 0x28, 0x00, 0xd0, 0x0d, 0x20, 0x00, 0x49, 0x19, - 0x68, 0x09, 0x31, 0x80, 0x70, 0xc8, 0x22, 0x00, - 0xb4, 0x04, 0x1c, 0x28, 0x23, 0x00, 0x22, 0x00, - 0x49, 0x1b, 0xf7, 0xf3, 0xfe, 0xcd, 0xb0, 0x01, - 0x20, 0x55, 0x49, 0x12, 0x68, 0x09, 0x6f, 0xc9, - 0x72, 0x48, 0x20, 0x00, 0x49, 0x0f, 0x68, 0x09, - 0x31, 0x60, 0x76, 0x88, 0x48, 0x0d, 0x68, 0x00, - 0x6f, 0xc0, 0x7a, 0x00, 0x28, 0xff, 0xd0, 0x07, - 0x48, 0x0a, 0x68, 0x00, 0x6f, 0xc0, 0x7a, 0x01, - 0x20, 0x01, 0x40, 0x88, 0xf0, 0x06, 0xff, 0xc6, - 0x48, 0x09, 0x21, 0x33, 0x06, 0x49, 0x60, 0x48, - 0x48, 0x06, 0x68, 0x01, 0x4b, 0x0b, 0x40, 0x19, - 0x60, 0x01, 0x20, 0x00, 0xe7, 0x4c, 0xe7, 0x4b, - 0xe7, 0x4a, 0x00, 0x00, 0x2e, 0x08, 0xb9, 0xb0, - 0x66, 0x00, 0x01, 0x00, 0x66, 0x00, 0x00, 0x08, - 0x23, 0x48, 0x00, 0x00, 0x66, 0x00, 0x01, 0x18, - 0x9e, 0x00, 0x0a, 0x00, 0x9e, 0x00, 0x0a, 0x80, - 0x00, 0x00, 0xff, 0xff, 0xfc, 0xb7, 0xff, 0xff, - 0xb5, 0xff, 0x1c, 0x1f, 0x98, 0x00, 0x06, 0x02, - 0x0e, 0x12, 0x99, 0x01, 0x06, 0x0d, 0x0e, 0x2d, - 0x98, 0x02, 0x06, 0x04, 0x0e, 0x24, 0x48, 0x2d, - 0x68, 0x00, 0x5c, 0x81, 0x2a, 0x20, 0xdb, 0x04, - 0x20, 0xa2, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x29, 0xff, 0xd1, 0x01, 0x20, 0x4b, - 0xe7, 0xf7, 0x48, 0x27, 0x69, 0x80, 0x28, 0x00, - 0xd1, 0x05, 0x29, 0x02, 0xd0, 0x03, 0x29, 0x03, - 0xd0, 0x01, 0x29, 0x04, 0xd1, 0x0b, 0x48, 0x22, - 0x69, 0x80, 0x28, 0x02, 0xd1, 0x01, 0x29, 0x00, - 0xd1, 0x05, 0x48, 0x1f, 0x69, 0x80, 0x28, 0x01, - 0xd1, 0x03, 0x29, 0x01, 0xd0, 0x01, 0x20, 0x4d, - 0xe7, 0xdf, 0x29, 0x05, 0xd2, 0x2a, 0xa3, 0x02, - 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, - 0x03, 0x07, 0x04, 0x05, 0x06, 0x00, 0xe0, 0x24, - 0xe0, 0x23, 0xe0, 0x22, 0xe0, 0x21, 0x01, 0x08, - 0x4b, 0x12, 0x68, 0x1b, 0x18, 0xc0, 0x30, 0x20, - 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x05, 0x48, 0x0f, - 0x68, 0x00, 0x30, 0x60, 0x7e, 0x80, 0x28, 0x00, - 0xd0, 0x02, 0x20, 0x49, 0xe7, 0xc1, 0xe0, 0x13, - 0x2d, 0x00, 0xd1, 0x05, 0x00, 0xa0, 0x4b, 0x0b, - 0x18, 0xc0, 0x68, 0x00, 0x60, 0x38, 0xe0, 0x04, - 0x68, 0x38, 0x00, 0xa6, 0x4b, 0x07, 0x18, 0xf3, - 0x60, 0x18, 0xe0, 0x02, 0x20, 0x4a, 0xe7, 0xb0, - 0xe7, 0xff, 0x20, 0x00, 0xe7, 0xad, 0xe7, 0xac, - 0xe7, 0xab, 0x00, 0x00, 0x2e, 0x08, 0xb9, 0xb0, - 0x66, 0x00, 0x01, 0x00, 0x62, 0x01, 0x00, 0x80, - 0xb5, 0xf7, 0xb0, 0x82, 0x98, 0x02, 0x06, 0x03, - 0x0e, 0x1b, 0x93, 0x00, 0x99, 0x03, 0x06, 0x08, - 0x0e, 0x00, 0x90, 0x01, 0x9a, 0x04, 0x06, 0x15, - 0x0e, 0x2d, 0xb0, 0x84, 0x4a, 0xca, 0x4f, 0xcb, - 0x48, 0xcb, 0x68, 0x00, 0x9b, 0x04, 0x5c, 0xc4, - 0x48, 0xca, 0x90, 0x02, 0x21, 0x00, 0x23, 0x00, - 0x93, 0x01, 0x9b, 0x04, 0x2b, 0x20, 0xdb, 0x05, - 0x20, 0xa2, 0xb0, 0x06, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2c, 0xff, 0xd1, 0x02, - 0x20, 0x4b, 0xb0, 0x06, 0xe7, 0xf6, 0x48, 0xc2, - 0x69, 0x80, 0x28, 0x02, 0xd1, 0x01, 0x2c, 0x00, - 0xd1, 0x03, 0x48, 0xbf, 0x69, 0x80, 0x28, 0x02, - 0xd0, 0x02, 0x20, 0x4d, 0xb0, 0x06, 0xe7, 0xe9, - 0x98, 0x05, 0x28, 0x01, 0xd1, 0x08, 0x48, 0xb8, - 0x68, 0x00, 0x30, 0x80, 0x78, 0xc0, 0x28, 0x00, - 0xd0, 0x02, 0x20, 0x50, 0xb0, 0x06, 0xe7, 0xdd, - 0x98, 0x05, 0x28, 0x00, 0xd1, 0x05, 0x48, 0xb2, - 0x68, 0x00, 0x30, 0x20, 0x7a, 0x80, 0x28, 0x00, - 0xd0, 0x08, 0x98, 0x05, 0x28, 0x01, 0xd1, 0x08, - 0x48, 0xad, 0x68, 0x00, 0x30, 0x60, 0x7e, 0x80, - 0x28, 0x00, 0xd1, 0x02, 0x20, 0x5a, 0xb0, 0x06, - 0xe7, 0xc8, 0x20, 0x00, 0x4b, 0xa8, 0x68, 0x1b, - 0x6f, 0xdb, 0x72, 0x58, 0x98, 0x05, 0x28, 0x00, - 0xd1, 0x50, 0x2d, 0x01, 0xd0, 0x01, 0x2d, 0x02, - 0xd1, 0x32, 0x4e, 0xa6, 0x68, 0x30, 0x23, 0x01, - 0x04, 0xdb, 0x43, 0x18, 0x60, 0x30, 0x20, 0x00, - 0x4b, 0xa3, 0x60, 0x18, 0x48, 0x9e, 0x68, 0x00, - 0x30, 0x80, 0x78, 0x40, 0x00, 0x43, 0x18, 0x18, - 0x01, 0x80, 0x9b, 0x02, 0x18, 0xc0, 0x90, 0x02, - 0x98, 0x02, 0x68, 0x01, 0x48, 0x9a, 0x69, 0x80, - 0x07, 0x80, 0x0f, 0x80, 0x01, 0x80, 0x43, 0x01, - 0x23, 0x20, 0x43, 0x19, 0x4b, 0x99, 0x43, 0x19, - 0x98, 0x02, 0x60, 0x01, 0x4e, 0x98, 0x68, 0x30, - 0x23, 0x01, 0x04, 0xdb, 0x43, 0x18, 0x60, 0x30, - 0x4e, 0x92, 0x68, 0x30, 0x4b, 0x95, 0x40, 0x18, - 0x60, 0x30, 0x2c, 0x00, 0xd1, 0x04, 0x20, 0x00, - 0x4b, 0x8b, 0x68, 0x1b, 0x33, 0x20, 0x72, 0x98, - 0x2d, 0x02, 0xd0, 0x04, 0x20, 0x01, 0x04, 0xc0, - 0x23, 0x33, 0x06, 0x5b, 0x60, 0x18, 0x2c, 0x00, - 0xd1, 0x0f, 0x20, 0xff, 0x02, 0x00, 0x40, 0x08, - 0xd1, 0x0b, 0x2d, 0x02, 0xd0, 0x09, 0x48, 0x82, - 0x68, 0x00, 0x30, 0x80, 0x78, 0x40, 0x23, 0x01, - 0x40, 0x58, 0x4b, 0x7f, 0x68, 0x1b, 0x33, 0x80, - 0x70, 0x58, 0xe0, 0xed, 0x2d, 0x01, 0xd1, 0x73, - 0x2c, 0x00, 0xd1, 0x72, 0x20, 0x31, 0x06, 0x40, - 0x68, 0x80, 0x23, 0x08, 0x40, 0x18, 0xd1, 0x3a, - 0x48, 0x7a, 0x68, 0x06, 0x23, 0x05, 0x05, 0x9b, - 0x43, 0x33, 0x60, 0x03, 0x68, 0x10, 0x4b, 0x7c, - 0x40, 0x18, 0x60, 0x10, 0x32, 0xc0, 0x68, 0x10, - 0x4b, 0x79, 0x40, 0x18, 0x60, 0x10, 0x20, 0x00, - 0x4b, 0x6f, 0x68, 0x1b, 0x67, 0x58, 0x20, 0x00, - 0x4b, 0x6d, 0x68, 0x1b, 0x33, 0x80, 0x70, 0x18, - 0x48, 0x6d, 0x68, 0x80, 0x23, 0x02, 0x40, 0x18, - 0xd1, 0x04, 0x20, 0x00, 0x4b, 0x68, 0x68, 0x1b, - 0x33, 0x60, 0x76, 0x98, 0x20, 0x5b, 0x4b, 0x66, - 0x68, 0x1b, 0x6f, 0xdb, 0x72, 0x58, 0x4e, 0x6d, - 0x68, 0x30, 0x23, 0x02, 0x43, 0x18, 0x60, 0x30, - 0x4e, 0x67, 0x68, 0x30, 0x23, 0x05, 0x05, 0x9b, - 0x43, 0x18, 0x60, 0x30, 0x4e, 0x61, 0x68, 0x30, - 0x4b, 0x67, 0x40, 0x18, 0x60, 0x30, 0x20, 0x5b, - 0xb0, 0x06, 0xe7, 0x2b, 0xe0, 0xae, 0x48, 0x5d, - 0x68, 0x06, 0x23, 0x01, 0x05, 0x9b, 0x43, 0x33, - 0x60, 0x03, 0x20, 0x31, 0x06, 0x40, 0x6a, 0x00, - 0x23, 0x04, 0x40, 0x18, 0xd1, 0x27, 0x9b, 0x01, - 0x20, 0x31, 0x06, 0x40, 0x6b, 0x00, 0x18, 0x1b, - 0x93, 0x01, 0x4e, 0x5c, 0x68, 0x30, 0x23, 0x3b, - 0x40, 0x18, 0x60, 0x30, 0x4e, 0x57, 0x68, 0x30, - 0x23, 0x0e, 0x43, 0x18, 0x60, 0x30, 0x4e, 0x55, - 0x68, 0x30, 0x23, 0x0c, 0x40, 0x18, 0x60, 0x30, - 0x20, 0x37, 0x23, 0x31, 0x06, 0x5b, 0x60, 0x98, - 0x20, 0x01, 0x90, 0x00, 0x98, 0x00, 0x28, 0x64, - 0xd3, 0x04, 0xe0, 0x07, 0x98, 0x00, 0x30, 0x01, - 0x90, 0x00, 0xe7, 0xf7, 0xe7, 0xfa, 0xe0, 0x01, - 0xe0, 0x36, 0xe0, 0x34, 0xe7, 0xd1, 0x4e, 0x46, - 0x68, 0x30, 0x23, 0x01, 0x05, 0x9b, 0x43, 0x18, - 0x60, 0x30, 0x4e, 0x40, 0x68, 0x30, 0x4b, 0x48, - 0x40, 0x18, 0x60, 0x30, 0x48, 0x3c, 0x68, 0x40, - 0x28, 0x00, 0xd0, 0x0d, 0x20, 0x5b, 0x4b, 0x38, - 0x68, 0x1b, 0x6f, 0xdb, 0x72, 0x58, 0x20, 0x00, - 0x4b, 0x35, 0x68, 0x1b, 0x33, 0x60, 0x76, 0x98, - 0x20, 0x5b, 0xb0, 0x06, 0xe6, 0xda, 0xe0, 0x5d, - 0x48, 0x31, 0x68, 0x00, 0x6f, 0xc0, 0x1d, 0x06, - 0x48, 0x2f, 0x68, 0x00, 0x30, 0x80, 0x78, 0x00, - 0x9b, 0x01, 0x1a, 0xc0, 0x68, 0x33, 0x18, 0xc0, - 0x60, 0x30, 0x20, 0x5c, 0x4b, 0x2a, 0x68, 0x1b, - 0x6f, 0xdb, 0x72, 0x58, 0x20, 0x00, 0x4b, 0x28, - 0x68, 0x1b, 0x33, 0x60, 0x76, 0x98, 0xe0, 0x3f, - 0x20, 0x33, 0x06, 0x40, 0x6b, 0x80, 0x90, 0x03, - 0x23, 0x04, 0x40, 0x18, 0xd0, 0x03, 0x20, 0x52, - 0xb0, 0x06, 0xe6, 0xb7, 0xe0, 0x3a, 0x98, 0x03, - 0x01, 0x00, 0x19, 0xc7, 0x48, 0x1e, 0x68, 0x00, - 0x6f, 0x40, 0x28, 0xbc, 0xdd, 0x07, 0x48, 0x29, - 0x60, 0xb8, 0x20, 0xbc, 0x4b, 0x1a, 0x68, 0x1b, - 0x33, 0x80, 0x70, 0x18, 0xe0, 0x0d, 0x48, 0x18, - 0x68, 0x00, 0x6f, 0x40, 0x23, 0x01, 0x07, 0x9b, - 0x43, 0x18, 0x60, 0xb8, 0x48, 0x14, 0x68, 0x00, - 0x6f, 0x40, 0x4b, 0x13, 0x68, 0x1b, 0x33, 0x80, - 0x70, 0x18, 0x48, 0x11, 0x68, 0x00, 0x30, 0x80, - 0x78, 0x80, 0x00, 0x43, 0x18, 0x18, 0x01, 0x80, - 0x18, 0x82, 0x48, 0x0d, 0x68, 0x00, 0x6f, 0x00, - 0x60, 0x38, 0x1d, 0x10, 0x60, 0x78, 0x20, 0x01, - 0x06, 0x00, 0x60, 0xf8, 0x9e, 0x03, 0x20, 0x01, - 0x40, 0xb0, 0x23, 0x33, 0x06, 0x5b, 0x63, 0x58, - 0x20, 0x00, 0xb0, 0x06, 0xe6, 0x7e, 0xb0, 0x04, - 0xb0, 0x02, 0xe6, 0x7b, 0xe6, 0x7a, 0x00, 0x00, - 0x9e, 0x00, 0x0b, 0x80, 0x9e, 0x00, 0x09, 0x80, - 0x2e, 0x08, 0xb9, 0xb0, 0x9e, 0x00, 0x0a, 0x00, - 0x66, 0x00, 0x01, 0x00, 0x66, 0x00, 0x00, 0x08, - 0x62, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x04, 0xff, 0xf7, 0xff, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x62, 0x00, 0x00, 0x1c, - 0xfe, 0xbf, 0xff, 0xff, 0x62, 0x00, 0x00, 0x08, - 0xff, 0xbf, 0xff, 0xff, 0x40, 0x00, 0x00, 0xbc, - 0x48, 0x07, 0x69, 0x80, 0x28, 0x02, 0xd0, 0x03, - 0x48, 0x05, 0x69, 0x80, 0x28, 0x03, 0xd1, 0x04, - 0x20, 0x31, 0x06, 0x40, 0x6a, 0x80, 0x47, 0x70, - 0xe0, 0x01, 0x20, 0x00, 0xe7, 0xfb, 0xe7, 0xfa, - 0x66, 0x00, 0x01, 0x00, 0xb5, 0xb0, 0x27, 0x0f, - 0x20, 0x31, 0x06, 0x40, 0x68, 0xc0, 0x09, 0x05, - 0xf7, 0xff, 0xff, 0xe6, 0x43, 0xc4, 0x48, 0x18, - 0x69, 0x80, 0x28, 0x00, 0xd0, 0x03, 0x48, 0x16, - 0x69, 0x80, 0x28, 0x01, 0xd1, 0x03, 0x1c, 0x38, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x2d, 0x09, - 0xd2, 0x1e, 0xa3, 0x02, 0x5d, 0x5b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x07, 0x07, 0x07, 0x0e, 0x00, 0x1c, 0x2f, - 0xe0, 0x13, 0x20, 0x08, 0x40, 0x20, 0xd0, 0x01, - 0x1c, 0x2f, 0xe0, 0x00, 0x27, 0x02, 0xe0, 0x0c, - 0x20, 0x08, 0x40, 0x20, 0xd0, 0x06, 0x20, 0x02, - 0x40, 0x20, 0xd0, 0x01, 0x27, 0x07, 0xe0, 0x00, - 0x27, 0x08, 0xe0, 0x00, 0x27, 0x02, 0xe0, 0x00, - 0xe7, 0xff, 0x1c, 0x38, 0xe7, 0xd8, 0xe7, 0xd7, - 0x66, 0x00, 0x01, 0x00, 0x1c, 0x01, 0x29, 0x07, - 0xd2, 0x0f, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, - 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x05, 0x06, 0x09, - 0x08, 0x07, 0x0a, 0x00, 0xe0, 0x06, 0xe0, 0x05, - 0xe0, 0x04, 0xe0, 0x03, 0xe0, 0x02, 0xe0, 0x01, - 0xe0, 0x00, 0xe7, 0xff, 0x20, 0x00, 0x47, 0x70, - 0xe7, 0xfd, 0x00, 0x00, 0x20, 0x1d, 0x02, 0x80, - 0x69, 0x80, 0x49, 0x06, 0x60, 0x08, 0x20, 0x1d, - 0x02, 0x80, 0x69, 0x40, 0x49, 0x04, 0x60, 0x08, - 0x20, 0x1d, 0x02, 0x80, 0x69, 0xc0, 0x49, 0x03, - 0x60, 0x08, 0x47, 0x70, 0x2e, 0x08, 0xd1, 0xfc, - 0x2e, 0x08, 0xd2, 0x00, 0x2e, 0x08, 0xd2, 0x04, - 0xb5, 0xf1, 0xb0, 0x81, 0x20, 0x00, 0x4d, 0x21, - 0x95, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, - 0x43, 0xdb, 0x4c, 0x1f, 0x68, 0x64, 0x42, 0x8c, - 0xdd, 0x21, 0x1c, 0x0c, 0x31, 0x01, 0x00, 0xa4, - 0x9d, 0x00, 0x59, 0x2f, 0x42, 0x9f, 0xd0, 0xf8, - 0x4c, 0x19, 0x68, 0x64, 0x42, 0x8c, 0xda, 0x00, - 0xe0, 0x15, 0x32, 0x01, 0x1c, 0x0c, 0x31, 0x01, - 0x00, 0xa4, 0x9d, 0x00, 0x59, 0x2b, 0x42, 0x9f, - 0xd0, 0xf8, 0x02, 0x9c, 0x43, 0x3c, 0x1c, 0x25, - 0x1c, 0x04, 0x30, 0x01, 0x00, 0xa4, 0x9e, 0x01, - 0x51, 0x35, 0x4c, 0x0f, 0x68, 0x64, 0x42, 0x8c, - 0xdb, 0x00, 0x32, 0x01, 0xe7, 0xd9, 0x28, 0x08, - 0xd3, 0x02, 0xe0, 0x07, 0x30, 0x01, 0xe7, 0xfa, - 0x25, 0x00, 0x43, 0xed, 0x00, 0x84, 0x9e, 0x01, - 0x51, 0x35, 0xe7, 0xf7, 0x4c, 0x07, 0x68, 0x24, - 0x2c, 0x00, 0xd1, 0x02, 0x24, 0x0d, 0x06, 0xe4, - 0x61, 0x22, 0xb0, 0x01, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0xba, 0x38, - 0x2e, 0x08, 0xbb, 0x00, 0x2e, 0x08, 0xd1, 0xf0, - 0xb5, 0x80, 0x48, 0xdc, 0x68, 0x00, 0x28, 0x00, - 0xd1, 0x04, 0x48, 0xda, 0x68, 0x00, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xff, 0x92, - 0x48, 0xd7, 0x49, 0xd8, 0x60, 0x08, 0x48, 0xd8, - 0x49, 0xd8, 0x60, 0x08, 0x48, 0xd8, 0x49, 0xd9, - 0x60, 0x08, 0x48, 0xd3, 0x49, 0xd8, 0x68, 0x0b, - 0x4a, 0xd8, 0x21, 0x00, 0xf0, 0x01, 0xf8, 0xda, - 0x20, 0x00, 0x49, 0xd0, 0x68, 0x09, 0x60, 0x08, - 0x20, 0x00, 0x49, 0xd0, 0x68, 0x09, 0x60, 0x08, - 0x20, 0x00, 0x49, 0xd0, 0x68, 0x09, 0x60, 0x08, - 0x20, 0x00, 0x49, 0xca, 0x68, 0x09, 0x23, 0x07, - 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, 0x48, 0xce, - 0x49, 0xc6, 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xc9, 0x66, 0xc8, 0x20, 0x00, 0x49, 0xc5, - 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, - 0x66, 0x88, 0x48, 0xc7, 0x49, 0xc1, 0x68, 0x09, - 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, 0x66, 0xc8, - 0x20, 0x00, 0x49, 0xc0, 0x68, 0x09, 0x23, 0x07, - 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, 0x48, 0xc0, - 0x49, 0xbc, 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xc9, 0x66, 0xc8, 0x27, 0x00, 0x2f, 0x19, - 0xd3, 0x02, 0xe0, 0x38, 0x37, 0x01, 0xe7, 0xfa, - 0x48, 0xba, 0x00, 0xb9, 0x4a, 0xb1, 0x68, 0x12, - 0x18, 0x89, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, - 0x62, 0x08, 0x48, 0xb6, 0x00, 0xb9, 0x4a, 0xad, - 0x68, 0x12, 0x18, 0x89, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xc9, 0x60, 0x48, 0x48, 0xb1, 0x00, 0xb9, - 0x4a, 0xaa, 0x68, 0x12, 0x18, 0x89, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0x62, 0x08, 0x48, 0xad, - 0x00, 0xb9, 0x4a, 0xa6, 0x68, 0x12, 0x18, 0x89, - 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, 0x60, 0x48, - 0x48, 0xa8, 0x00, 0xb9, 0x4a, 0xa3, 0x68, 0x12, - 0x18, 0x89, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, - 0x62, 0x08, 0x48, 0xa4, 0x00, 0xb9, 0x4a, 0x9f, - 0x68, 0x12, 0x18, 0x89, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xc9, 0x60, 0x48, 0xe7, 0xc6, 0x27, 0x00, - 0x2f, 0x07, 0xd3, 0x02, 0xe0, 0x86, 0x37, 0x01, - 0xe7, 0xfa, 0x48, 0x9c, 0x00, 0xb9, 0x19, 0xc9, - 0x00, 0xc9, 0x4a, 0x92, 0x68, 0x12, 0x18, 0x89, - 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, 0x60, 0x08, - 0x48, 0x96, 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, - 0x4a, 0x8c, 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc9, 0x67, 0xc8, 0x48, 0x91, - 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x87, - 0x68, 0x12, 0x18, 0x89, 0x23, 0x0b, 0x01, 0xdb, - 0x18, 0xc9, 0x60, 0x48, 0x48, 0x8b, 0x00, 0xb9, - 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x81, 0x68, 0x12, - 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, - 0x67, 0x88, 0x48, 0x86, 0x00, 0xb9, 0x19, 0xc9, - 0x00, 0xc9, 0x4a, 0x7e, 0x68, 0x12, 0x18, 0x89, - 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, 0x60, 0x08, - 0x48, 0x80, 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, - 0x4a, 0x78, 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc9, 0x67, 0xc8, 0x48, 0x7b, - 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x73, - 0x68, 0x12, 0x18, 0x89, 0x23, 0x0b, 0x01, 0xdb, - 0x18, 0xc9, 0x60, 0x48, 0x48, 0x75, 0x00, 0xb9, - 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x6d, 0x68, 0x12, - 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, - 0x67, 0x88, 0x48, 0x70, 0x00, 0xb9, 0x19, 0xc9, - 0x00, 0xc9, 0x4a, 0x6a, 0x68, 0x12, 0x18, 0x89, - 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, 0x60, 0x08, - 0x48, 0x6a, 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, - 0x4a, 0x64, 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc9, 0x67, 0xc8, 0x48, 0x65, - 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x5f, - 0x68, 0x12, 0x18, 0x89, 0x23, 0x0b, 0x01, 0xdb, - 0x18, 0xc9, 0x60, 0x48, 0x48, 0x5f, 0x00, 0xb9, - 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x59, 0x68, 0x12, - 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, - 0x67, 0x88, 0xe7, 0x78, 0x27, 0x00, 0x2f, 0x12, - 0xd3, 0x02, 0xe0, 0x56, 0x37, 0x01, 0xe7, 0xfa, - 0x48, 0x56, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x4d, - 0x68, 0x12, 0x18, 0x89, 0x62, 0xc8, 0x48, 0x53, - 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x49, 0x68, 0x12, - 0x18, 0x89, 0x62, 0x88, 0x48, 0x4f, 0x21, 0x4c, - 0x43, 0x79, 0x4a, 0x46, 0x68, 0x12, 0x18, 0x89, - 0x63, 0x08, 0x48, 0x4c, 0x21, 0x4c, 0x43, 0x79, - 0x4a, 0x42, 0x68, 0x12, 0x18, 0x89, 0x62, 0x48, - 0x48, 0x48, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x41, - 0x68, 0x12, 0x18, 0x89, 0x62, 0xc8, 0x48, 0x45, - 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x3d, 0x68, 0x12, - 0x18, 0x89, 0x62, 0x88, 0x48, 0x41, 0x21, 0x4c, - 0x43, 0x79, 0x4a, 0x3a, 0x68, 0x12, 0x18, 0x89, - 0x63, 0x08, 0x48, 0x3e, 0x21, 0x4c, 0x43, 0x79, - 0x4a, 0x36, 0x68, 0x12, 0x18, 0x89, 0x62, 0x48, - 0x48, 0x3a, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x35, - 0x68, 0x12, 0x18, 0x89, 0x62, 0xc8, 0x48, 0x37, - 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x31, 0x68, 0x12, - 0x18, 0x89, 0x62, 0x88, 0x48, 0x33, 0x21, 0x4c, - 0x43, 0x79, 0x4a, 0x2e, 0x68, 0x12, 0x18, 0x89, - 0x63, 0x08, 0x48, 0x30, 0x21, 0x4c, 0x43, 0x79, - 0x4a, 0x2a, 0x68, 0x12, 0x18, 0x89, 0x62, 0x48, - 0xe7, 0xa8, 0x20, 0x00, 0x49, 0x25, 0x68, 0x09, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0xc8, - 0x20, 0x00, 0x49, 0x22, 0x68, 0x09, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, 0x20, 0x00, - 0x49, 0x1c, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xc9, 0x61, 0xc8, 0x20, 0x00, 0x49, 0x19, - 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, - 0x61, 0x88, 0x20, 0x00, 0x49, 0x19, 0x68, 0x09, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0xc8, - 0x20, 0x00, 0x49, 0x16, 0x68, 0x09, 0x23, 0x0d, - 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, 0x20, 0x92, - 0x49, 0x17, 0x60, 0x08, 0x27, 0x00, 0x2f, 0x08, - 0xd3, 0x02, 0xe0, 0x08, 0x37, 0x01, 0xe7, 0xfa, - 0x20, 0x00, 0x43, 0xc0, 0x00, 0xb9, 0x4b, 0x13, - 0x18, 0xc9, 0x64, 0x08, 0xe7, 0xf6, 0x20, 0x10, - 0x21, 0x0d, 0x06, 0xc9, 0x61, 0x08, 0x20, 0x01, - 0x49, 0x0f, 0x60, 0x08, 0x48, 0x0e, 0x68, 0x00, - 0xe6, 0x4d, 0xe6, 0x4c, 0x2e, 0x08, 0x9d, 0xf0, - 0x2e, 0x08, 0xbb, 0x28, 0x2e, 0x08, 0xbb, 0x1c, - 0x2e, 0x08, 0xc2, 0xc0, 0x2e, 0x08, 0xbb, 0x20, - 0x2e, 0x08, 0xca, 0x58, 0x2e, 0x08, 0xbb, 0x24, - 0x2e, 0x08, 0xd2, 0x00, 0x00, 0x00, 0x16, 0xc8, - 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, - 0x2e, 0x08, 0xd1, 0xf4, 0x68, 0x00, 0x0d, 0x00, - 0x2e, 0x08, 0xd1, 0xf0, 0xb5, 0x90, 0x1c, 0x04, - 0x1c, 0x0f, 0x1c, 0x39, 0x20, 0x00, 0xf0, 0x00, - 0xf8, 0x4d, 0x1c, 0x39, 0x1c, 0x20, 0xf0, 0x00, - 0xf8, 0x03, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0x68, 0x78, - 0x28, 0x07, 0xd9, 0x1d, 0x23, 0x03, 0x02, 0x5b, - 0x18, 0xf8, 0x6d, 0x40, 0x28, 0x00, 0xd0, 0x06, - 0x23, 0x03, 0x02, 0x5b, 0x18, 0xf8, 0x6d, 0x80, - 0x04, 0x00, 0x0c, 0x00, 0xd1, 0x02, 0x20, 0x02, - 0x60, 0xb8, 0xe0, 0x01, 0x20, 0x03, 0x60, 0xb8, - 0x1d, 0xfd, 0x35, 0x05, 0x23, 0x65, 0x01, 0x1b, - 0x18, 0xfe, 0x1c, 0x31, 0x1c, 0x28, 0x4a, 0x11, - 0x68, 0x13, 0x22, 0x28, 0xf0, 0x00, 0xfe, 0xee, - 0x2c, 0x06, 0xd0, 0x18, 0x00, 0xa0, 0x19, 0x00, - 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x2b, 0x01, 0x5b, - 0x18, 0xc6, 0x00, 0xa0, 0x19, 0x00, 0x00, 0xc0, - 0x19, 0xc0, 0x23, 0xb1, 0x00, 0xdb, 0x18, 0xc5, - 0x20, 0x06, 0x1b, 0x00, 0x00, 0x82, 0x18, 0x12, - 0x00, 0xd2, 0x1c, 0x31, 0x1c, 0x28, 0x4b, 0x04, - 0x68, 0x1b, 0xf0, 0x00, 0xfe, 0xd3, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0xd1, 0xfc, - 0x2e, 0x08, 0xd2, 0x04, 0xb5, 0xf0, 0x1c, 0x07, - 0x1c, 0x0c, 0x2f, 0x10, 0xd0, 0x13, 0x20, 0x4c, - 0x43, 0x78, 0x19, 0x00, 0x1d, 0xc6, 0x36, 0x01, - 0x20, 0x4c, 0x43, 0x78, 0x19, 0x00, 0x1d, 0xc5, - 0x35, 0x4d, 0x20, 0x10, 0x1b, 0xc0, 0x22, 0x4c, - 0x43, 0x42, 0x1c, 0x31, 0x1c, 0x28, 0x4b, 0x03, - 0x68, 0x1b, 0xf0, 0x00, 0xfe, 0xb3, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0xd2, 0x04, - 0xb5, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x39, - 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x07, 0x1c, 0x39, - 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x33, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x1c, 0x04, - 0x1c, 0x0f, 0x00, 0xa0, 0x19, 0x00, 0x00, 0xc0, - 0x19, 0xc0, 0x23, 0xb1, 0x00, 0xdb, 0x18, 0xc6, - 0x00, 0xa0, 0x19, 0x00, 0x00, 0xc0, 0x19, 0xc0, - 0x23, 0x2b, 0x01, 0x5b, 0x18, 0xc5, 0x20, 0x06, - 0x1b, 0x00, 0x00, 0x82, 0x18, 0x12, 0x00, 0xd2, - 0x1c, 0x31, 0x1c, 0x28, 0x4b, 0x09, 0x68, 0x1b, - 0xf0, 0x00, 0xfe, 0x84, 0x1d, 0xfe, 0x36, 0x05, - 0x23, 0x65, 0x01, 0x1b, 0x18, 0xfd, 0x1c, 0x31, - 0x1c, 0x28, 0x4a, 0x05, 0x68, 0x13, 0x22, 0x28, - 0xf0, 0x00, 0xfe, 0x78, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0xd2, 0x04, - 0x2e, 0x08, 0xd1, 0xfc, 0xb5, 0xf0, 0x1c, 0x07, - 0x1c, 0x0c, 0x20, 0x4c, 0x43, 0x78, 0x19, 0x00, - 0x1d, 0xc6, 0x36, 0x4d, 0x20, 0x4c, 0x43, 0x78, - 0x19, 0x00, 0x1d, 0xc5, 0x35, 0x01, 0x20, 0x10, - 0x1b, 0xc0, 0x22, 0x4c, 0x43, 0x42, 0x1c, 0x31, - 0x1c, 0x28, 0x4b, 0x03, 0x68, 0x1b, 0xf0, 0x00, - 0xfe, 0x59, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0xd2, 0x04, 0xb4, 0xb0, 0x1c, 0x02, - 0x1c, 0x0f, 0x20, 0x00, 0x1c, 0x03, 0x30, 0x01, - 0x00, 0x9b, 0x18, 0x9c, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xe3, 0x68, 0x5b, 0x10, 0x7c, 0x34, 0x01, - 0x42, 0xa3, 0xd2, 0x00, 0xe7, 0xf2, 0x38, 0x01, - 0x21, 0x18, 0x42, 0x81, 0xd8, 0x02, 0xe0, 0x1a, - 0x39, 0x01, 0xe7, 0xfa, 0x00, 0x8b, 0x18, 0x9c, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xe3, 0x69, 0xdc, - 0x00, 0x8b, 0x18, 0x9d, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xeb, 0x62, 0x1c, 0x00, 0x8b, 0x18, 0x9c, - 0x23, 0x07, 0x02, 0x1b, 0x18, 0xe3, 0x68, 0x1c, - 0x00, 0x8b, 0x18, 0x9d, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xeb, 0x60, 0x5c, 0xe7, 0xe4, 0x23, 0x00, - 0x2b, 0x00, 0xd0, 0x10, 0x10, 0x7b, 0x1c, 0x5c, - 0x00, 0x83, 0x18, 0x9d, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xeb, 0x62, 0x1c, 0x10, 0x7b, 0x1c, 0x5c, - 0x00, 0x83, 0x18, 0x9d, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xeb, 0x60, 0x5c, 0xe0, 0x0e, 0x10, 0x7c, - 0x00, 0x83, 0x18, 0x9d, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xeb, 0x62, 0x1c, 0x10, 0x7b, 0x1c, 0x5c, - 0x00, 0x83, 0x18, 0x9d, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xeb, 0x60, 0x5c, 0xbc, 0xb0, 0x47, 0x70, - 0xb4, 0xb0, 0x1c, 0x02, 0x1c, 0x0f, 0x21, 0x00, - 0x1c, 0x0b, 0x31, 0x01, 0x00, 0x9b, 0x18, 0x9c, - 0x23, 0x07, 0x02, 0x1b, 0x18, 0xe3, 0x68, 0x5b, - 0x10, 0x7c, 0x34, 0x01, 0x42, 0xa3, 0xd0, 0x00, - 0xe7, 0xf2, 0x39, 0x01, 0x1c, 0x08, 0x28, 0x18, - 0xd3, 0x02, 0xe0, 0x1a, 0x30, 0x01, 0xe7, 0xfa, - 0x00, 0x83, 0x18, 0x9c, 0x23, 0x0d, 0x01, 0xdb, - 0x18, 0xe3, 0x6a, 0x5c, 0x00, 0x83, 0x18, 0x9d, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xeb, 0x62, 0x1c, - 0x00, 0x83, 0x18, 0x9c, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xe3, 0x68, 0x9c, 0x00, 0x83, 0x18, 0x9d, - 0x23, 0x07, 0x02, 0x1b, 0x18, 0xeb, 0x60, 0x5c, - 0xe7, 0xe4, 0x4c, 0x06, 0x23, 0x07, 0x02, 0x1b, - 0x18, 0xd3, 0x60, 0x1c, 0x4c, 0x03, 0x23, 0x07, - 0x02, 0x1b, 0x18, 0xd3, 0x66, 0x5c, 0xbc, 0xb0, - 0x47, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xb4, 0xb0, 0x1c, 0x07, 0x1c, 0x0c, 0x1c, 0x15, - 0x6a, 0xa1, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x19, - 0x62, 0x39, 0x21, 0x01, 0x02, 0x89, 0x43, 0x29, - 0x62, 0x79, 0x6a, 0xe1, 0x05, 0x89, 0x0d, 0x89, - 0x61, 0xf9, 0x6b, 0x61, 0x31, 0x01, 0x05, 0x89, - 0x0d, 0x89, 0x61, 0xb9, 0x69, 0x61, 0x60, 0xf9, - 0x69, 0xa1, 0x61, 0x39, 0x69, 0xe1, 0x61, 0x79, - 0x68, 0xa1, 0x23, 0x01, 0x06, 0x1b, 0x40, 0x19, - 0xd0, 0x02, 0x49, 0x0f, 0x60, 0xb9, 0xe0, 0x01, - 0x21, 0x00, 0x60, 0xb9, 0x6a, 0x60, 0x28, 0x00, - 0xd0, 0x0b, 0x68, 0x41, 0x60, 0x39, 0x78, 0x01, - 0x00, 0x89, 0x4b, 0x0a, 0x18, 0xc9, 0x60, 0x79, - 0x68, 0xb9, 0x88, 0x42, 0x43, 0x11, 0x60, 0xb9, - 0xe0, 0x07, 0x21, 0x00, 0x60, 0x39, 0x21, 0x00, - 0x60, 0x79, 0x68, 0xb9, 0x0c, 0x09, 0x04, 0x09, - 0x60, 0xb9, 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x68, 0x00, 0x08, 0x00, - 0xb4, 0x80, 0x1c, 0x02, 0x1c, 0x0f, 0x69, 0x79, - 0x60, 0xd1, 0x69, 0xb9, 0x61, 0x11, 0x69, 0xf9, - 0x61, 0x51, 0x68, 0xb9, 0x23, 0x01, 0x06, 0x1b, - 0x40, 0x19, 0xd0, 0x02, 0x49, 0x0e, 0x60, 0x91, - 0xe0, 0x01, 0x21, 0x00, 0x60, 0x91, 0x6a, 0x78, - 0x28, 0x00, 0xd0, 0x0b, 0x68, 0x41, 0x60, 0x11, - 0x78, 0x01, 0x00, 0x89, 0x4b, 0x09, 0x18, 0xc9, - 0x60, 0x51, 0x68, 0x91, 0x88, 0x43, 0x43, 0x19, - 0x60, 0x91, 0xe0, 0x07, 0x21, 0x00, 0x60, 0x11, - 0x21, 0x00, 0x60, 0x51, 0x68, 0x91, 0x0c, 0x09, - 0x04, 0x09, 0x60, 0x91, 0xbc, 0x80, 0x47, 0x70, - 0xff, 0xff, 0x00, 0x00, 0x68, 0x00, 0x08, 0x00, - 0x1c, 0x01, 0x48, 0x07, 0x62, 0x08, 0x48, 0x06, - 0x62, 0x48, 0x48, 0x05, 0x61, 0xc8, 0x48, 0x04, - 0x61, 0x88, 0x20, 0x00, 0x60, 0x08, 0x20, 0x00, - 0x60, 0x48, 0x20, 0x00, 0x60, 0x88, 0x47, 0x70, - 0x00, 0x00, 0xff, 0xff, 0xb5, 0xb0, 0x1c, 0x07, - 0x1c, 0x0c, 0x2c, 0x07, 0xd2, 0x73, 0x25, 0x00, - 0x2d, 0x07, 0xdb, 0x02, 0xe0, 0x2f, 0x35, 0x01, - 0xe7, 0xfa, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, - 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, - 0x68, 0x00, 0x00, 0xa9, 0x19, 0x49, 0x00, 0xc9, - 0x19, 0xc9, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, - 0x68, 0x49, 0x42, 0x88, 0xd0, 0x1a, 0x00, 0xa8, - 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, - 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x40, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x00, 0xa8, - 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, - 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0xf8, - 0xf0, 0x00, 0xfb, 0xd2, 0xe7, 0xcf, 0x23, 0xcf, - 0x00, 0xdb, 0x18, 0xf8, 0xf7, 0xff, 0xfb, 0xb8, - 0x25, 0x00, 0x2d, 0x07, 0xdb, 0x02, 0xe0, 0x54, - 0x35, 0x01, 0xe7, 0xfa, 0x00, 0xa8, 0x19, 0x40, - 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, - 0x18, 0xc0, 0x68, 0x00, 0x00, 0xa9, 0x19, 0x49, - 0x00, 0xc9, 0x19, 0xc9, 0x23, 0x0b, 0x01, 0xdb, - 0x18, 0xc9, 0x68, 0x49, 0x42, 0x88, 0xd0, 0x1a, - 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, - 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x40, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, - 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, - 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, - 0x48, 0xdb, 0xf0, 0x00, 0xfb, 0x6b, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, - 0x43, 0x69, 0x19, 0xc9, 0xe0, 0x00, 0xe0, 0x94, - 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0xcc, - 0xf0, 0x00, 0xfb, 0x7a, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x30, 0x34, 0xf7, 0xff, 0xfb, 0x60, - 0xe7, 0xaa, 0x25, 0x07, 0x2d, 0x11, 0xdb, 0x02, - 0xe0, 0x4e, 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x02, 0x69, 0x80, 0x21, 0x4c, 0x43, 0x69, - 0x19, 0xc9, 0x39, 0xff, 0x39, 0xff, 0x39, 0x02, - 0x69, 0xc9, 0x42, 0x88, 0xd0, 0x18, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x02, 0x69, 0xc0, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x69, 0x80, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, - 0x1c, 0x01, 0x48, 0xb1, 0xf0, 0x00, 0xfb, 0x16, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, - 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, - 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x01, 0x48, 0xa2, 0xf0, 0x00, - 0xfb, 0x27, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x30, 0x34, 0xf7, 0xff, 0xfb, 0x0d, 0xe7, 0xb0, - 0x25, 0x0a, 0x2d, 0x11, 0xdb, 0x02, 0xe0, 0x1f, - 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, - 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, - 0x48, 0x8d, 0xf0, 0x00, 0xfa, 0xcf, 0xe7, 0xdf, - 0xe1, 0xca, 0x2c, 0x0e, 0xd3, 0x73, 0x3c, 0x07, - 0x1f, 0xe5, 0x42, 0xa5, 0xd3, 0x02, 0xe0, 0x1f, - 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, - 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, - 0x48, 0x79, 0xf0, 0x00, 0xfa, 0xd5, 0xe7, 0xdf, - 0x1c, 0x25, 0x2d, 0x11, 0xdb, 0x02, 0xe0, 0x50, - 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x69, 0x80, 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, - 0x39, 0xff, 0x39, 0xff, 0x39, 0x02, 0x69, 0xc9, - 0x42, 0x88, 0xd0, 0x18, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x69, 0xc0, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, - 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x69, 0x80, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, - 0x48, 0x61, 0xf0, 0x00, 0xfa, 0x77, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, - 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, - 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, - 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, - 0x1c, 0x01, 0x48, 0x53, 0xf0, 0x00, 0xfa, 0x88, - 0x20, 0x4c, 0x43, 0x68, 0xe0, 0x00, 0xe0, 0x29, - 0x19, 0xc0, 0x30, 0x34, 0xf7, 0xff, 0xfa, 0x6c, - 0xe7, 0xae, 0x25, 0x0a, 0x2d, 0x11, 0xdb, 0x02, - 0xe0, 0x1f, 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, - 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, - 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, - 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, - 0x1c, 0x01, 0x48, 0x3d, 0xf0, 0x00, 0xfa, 0x2e, - 0xe7, 0xdf, 0xe1, 0x29, 0x3c, 0x07, 0x1c, 0x25, - 0x2d, 0x07, 0xdb, 0x02, 0xe0, 0x2f, 0x35, 0x01, - 0xe7, 0xfa, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, - 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, - 0x68, 0x00, 0x00, 0xa9, 0x19, 0x49, 0x00, 0xc9, - 0x19, 0xc9, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, - 0x68, 0x49, 0x42, 0x88, 0xd0, 0x1a, 0x00, 0xa8, - 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, - 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x40, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x00, 0xa8, - 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, - 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0x22, - 0xf0, 0x00, 0xfa, 0x26, 0xe7, 0xcf, 0x25, 0x00, - 0x42, 0xa5, 0xd3, 0x02, 0xe0, 0x1f, 0x35, 0x01, - 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, - 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0x10, - 0xf0, 0x00, 0xfa, 0x02, 0xe7, 0xdf, 0x1c, 0x25, - 0x2d, 0x07, 0xdb, 0x02, 0xe0, 0x55, 0x35, 0x01, - 0xe7, 0xfa, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, - 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, - 0x68, 0x00, 0x00, 0xa9, 0x19, 0x49, 0x00, 0xc9, - 0x19, 0xc9, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, - 0x68, 0x49, 0x42, 0x88, 0xd0, 0x1d, 0x00, 0xa8, - 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0xe0, 0x01, - 0x2e, 0x08, 0xbb, 0x00, 0x23, 0x0b, 0x01, 0xdb, - 0x18, 0xc0, 0x68, 0x40, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x02, 0x00, 0xa8, 0x19, 0x40, - 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, - 0x18, 0xc0, 0x68, 0x00, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x01, 0x48, 0x50, 0xf0, 0x00, - 0xf9, 0x9d, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, - 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0x42, - 0xf0, 0x00, 0xf9, 0xae, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x30, 0x34, 0xf7, 0xff, 0xf9, 0x94, - 0xe7, 0xa9, 0x25, 0x07, 0x2d, 0x11, 0xdb, 0x02, - 0xe0, 0x4e, 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x02, 0x69, 0x80, 0x21, 0x4c, 0x43, 0x69, - 0x19, 0xc9, 0x39, 0xff, 0x39, 0xff, 0x39, 0x02, - 0x69, 0xc9, 0x42, 0x88, 0xd0, 0x18, 0x20, 0x4c, - 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, - 0x38, 0x02, 0x69, 0xc0, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, - 0x69, 0x80, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, - 0x1c, 0x01, 0x48, 0x27, 0xf0, 0x00, 0xf9, 0x4a, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, - 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, - 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, - 0x43, 0x98, 0x1c, 0x01, 0x48, 0x18, 0xf0, 0x00, - 0xf9, 0x5b, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, - 0x30, 0x34, 0xf7, 0xff, 0xf9, 0x41, 0xe7, 0xb0, - 0x25, 0x0a, 0x2d, 0x11, 0xdb, 0x02, 0xe0, 0x1f, - 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, - 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, - 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, - 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, - 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, - 0x48, 0x03, 0xf0, 0x00, 0xf9, 0x03, 0xe7, 0xdf, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0xbb, 0x00, 0xb4, 0x90, 0x1c, 0x02, - 0x1c, 0x0f, 0x3a, 0x01, 0x2f, 0x01, 0xd1, 0x0d, - 0x09, 0x50, 0x00, 0x80, 0x49, 0x0d, 0x58, 0x08, - 0x06, 0xd4, 0x0e, 0xe4, 0x21, 0x01, 0x40, 0xa1, - 0x43, 0x08, 0x09, 0x51, 0x00, 0x89, 0x4b, 0x09, - 0x50, 0x58, 0xe0, 0x0d, 0x09, 0x50, 0x00, 0x80, - 0x49, 0x06, 0x58, 0x08, 0x06, 0xd4, 0x0e, 0xe4, - 0x21, 0x01, 0x40, 0xa1, 0x43, 0xc9, 0x40, 0x01, - 0x09, 0x50, 0x00, 0x80, 0x4b, 0x01, 0x50, 0x19, - 0xbc, 0x90, 0x47, 0x70, 0x2e, 0x08, 0xd1, 0xf8, - 0xb4, 0x80, 0x1c, 0x01, 0x39, 0x01, 0x09, 0x48, - 0x00, 0x80, 0x4a, 0x08, 0x58, 0x10, 0x06, 0xca, - 0x0e, 0xd2, 0x27, 0x01, 0x40, 0x97, 0x1c, 0x3b, - 0x40, 0x18, 0xd0, 0x03, 0x20, 0x01, 0xbc, 0x80, - 0x47, 0x70, 0xe0, 0x01, 0x20, 0x00, 0xe7, 0xfa, - 0xe7, 0xf9, 0x00, 0x00, 0x2e, 0x08, 0xd1, 0xf8, - 0xb4, 0xf0, 0x1c, 0x07, 0x1c, 0x0a, 0x68, 0x54, - 0x6a, 0xf8, 0x05, 0x86, 0x0d, 0xb6, 0x2c, 0x07, - 0xda, 0x01, 0x1c, 0x20, 0xe0, 0x00, 0x20, 0x07, - 0x1c, 0x05, 0x21, 0x00, 0x42, 0xa9, 0xd3, 0x02, - 0xe0, 0x15, 0x31, 0x01, 0xe7, 0xfa, 0x00, 0x88, - 0x18, 0x40, 0x00, 0xc0, 0x18, 0x80, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0xb0, - 0xd1, 0x08, 0x00, 0x88, 0x18, 0x40, 0x00, 0xc0, - 0x18, 0x80, 0x23, 0x2b, 0x01, 0x5b, 0x18, 0xc0, - 0xbc, 0xf0, 0x47, 0x70, 0xe7, 0xe9, 0x1f, 0xe0, - 0x28, 0x11, 0xda, 0x01, 0x1f, 0xe0, 0xe0, 0x00, - 0x20, 0x11, 0x1c, 0x05, 0x21, 0x00, 0x42, 0xa9, - 0xd3, 0x02, 0xe0, 0x0d, 0x31, 0x01, 0xe7, 0xfa, - 0x20, 0x4c, 0x43, 0x48, 0x18, 0x80, 0x6a, 0x80, - 0x42, 0xb0, 0xd1, 0x04, 0x20, 0x4c, 0x43, 0x48, - 0x18, 0x80, 0x30, 0x0c, 0xe7, 0xe4, 0xe7, 0xf1, - 0x20, 0x00, 0xe7, 0xe1, 0xe7, 0xe0, 0xb5, 0x90, - 0x48, 0x07, 0x68, 0x04, 0x48, 0x07, 0x68, 0x07, - 0x1c, 0x39, 0x1c, 0x20, 0x4a, 0x06, 0x68, 0x13, - 0x22, 0xf3, 0x00, 0xd2, 0xf0, 0x00, 0xf9, 0xca, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0xbb, 0x20, 0x2e, 0x08, 0xbb, 0x24, - 0x2e, 0x08, 0xd1, 0xfc, 0xb4, 0xf0, 0x1c, 0x01, - 0xb0, 0x83, 0x22, 0x00, 0x68, 0x4b, 0x2b, 0x07, - 0xdd, 0x01, 0x23, 0x07, 0xe0, 0x00, 0x68, 0x4b, - 0x1c, 0x1c, 0x23, 0x00, 0x43, 0xdb, 0x93, 0x02, - 0x23, 0x00, 0x43, 0xdb, 0x93, 0x01, 0x23, 0x00, - 0x93, 0x00, 0x4b, 0x17, 0x68, 0x1b, 0x2b, 0x00, - 0xd0, 0x07, 0x4b, 0x15, 0x68, 0x1b, 0x6a, 0xdb, - 0x93, 0x02, 0x4b, 0x13, 0x68, 0x1b, 0x6b, 0x5b, - 0x93, 0x01, 0x20, 0x00, 0x42, 0xa0, 0xd3, 0x02, - 0xe0, 0x16, 0x30, 0x01, 0xe7, 0xfa, 0x00, 0x83, - 0x18, 0x1b, 0x00, 0xdb, 0x18, 0x5d, 0x23, 0x05, - 0x02, 0x1b, 0x18, 0xeb, 0x6e, 0x9f, 0x04, 0x3b, - 0x0c, 0x1b, 0xd0, 0x08, 0x0c, 0x3b, 0x04, 0x1b, - 0xd0, 0x05, 0x9b, 0x00, 0x18, 0xc5, 0x26, 0x01, - 0x40, 0xae, 0x1c, 0x33, 0x43, 0x1a, 0xe7, 0xe8, - 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xcb, 0x61, 0xda, - 0xb0, 0x03, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0xb9, 0xc4, 0xb4, 0x80, 0x1c, 0x01, - 0x20, 0x00, 0x68, 0x0a, 0x42, 0x90, 0xdb, 0x02, - 0xe0, 0x07, 0x30, 0x01, 0xe7, 0xf9, 0x23, 0x00, - 0x43, 0xdb, 0x68, 0x8a, 0x00, 0x87, 0x51, 0xd3, - 0xe7, 0xf7, 0x22, 0x00, 0x43, 0xd2, 0x68, 0x8b, - 0x68, 0x0f, 0x00, 0xbf, 0x51, 0xda, 0x23, 0x00, - 0x43, 0xdb, 0x68, 0x8a, 0x68, 0x0f, 0x00, 0xbf, - 0x19, 0xd2, 0x60, 0x53, 0x22, 0x00, 0x60, 0x4a, - 0xbc, 0x80, 0x47, 0x70, 0xb4, 0xf0, 0x1c, 0x03, - 0x1c, 0x0c, 0x1c, 0x17, 0x68, 0x9a, 0xca, 0x40, - 0x42, 0xa6, 0xd2, 0x00, 0xe7, 0xfb, 0x3a, 0x04, - 0x1c, 0x11, 0xc9, 0x40, 0x42, 0xbe, 0xd2, 0x00, - 0xe7, 0xfb, 0x39, 0x04, 0x68, 0x10, 0x42, 0xa0, - 0xd1, 0x02, 0x68, 0x08, 0x42, 0xb8, 0xd0, 0x02, - 0x20, 0xff, 0xbc, 0xf0, 0x47, 0x70, 0x39, 0x04, - 0x68, 0x98, 0x68, 0x5e, 0x00, 0xb6, 0x19, 0x85, - 0x68, 0x58, 0x38, 0x02, 0x60, 0x58, 0x68, 0x50, - 0x60, 0x10, 0x32, 0x04, 0x42, 0x8a, 0xd3, 0xfa, - 0x68, 0x88, 0x60, 0x08, 0x31, 0x04, 0x42, 0xa9, - 0xd3, 0xfa, 0x20, 0x00, 0xe7, 0xe9, 0xe7, 0xe8, - 0xb4, 0xf0, 0x1c, 0x03, 0x1c, 0x0c, 0x1c, 0x17, - 0x68, 0x58, 0x68, 0x1e, 0x3e, 0x01, 0x42, 0xb0, - 0xdb, 0x02, 0x20, 0xff, 0xbc, 0xf0, 0x47, 0x70, - 0x68, 0x9a, 0xca, 0x40, 0x42, 0xa6, 0xd2, 0x00, - 0xe7, 0xfb, 0x3a, 0x04, 0x1c, 0x15, 0xcd, 0x40, - 0x42, 0xbe, 0xd2, 0x00, 0xe7, 0xfb, 0x68, 0x58, - 0x30, 0x02, 0x60, 0x58, 0x68, 0x98, 0x68, 0x5e, - 0x00, 0xb6, 0x19, 0x80, 0x1f, 0xc1, 0x39, 0x01, - 0x68, 0x08, 0x60, 0x88, 0x39, 0x04, 0x1d, 0xc8, - 0x30, 0x01, 0x42, 0xa8, 0xd8, 0xf8, 0x60, 0x8f, - 0x68, 0x08, 0x60, 0x48, 0x39, 0x04, 0x1d, 0x08, - 0x42, 0x90, 0xd8, 0xf9, 0x60, 0x14, 0x20, 0x00, - 0xe7, 0xd8, 0xe7, 0xd7, 0xb5, 0xf0, 0x1c, 0x07, - 0x1c, 0x0c, 0xb0, 0x81, 0x1c, 0x38, 0x21, 0x00, - 0xf0, 0x0e, 0xfc, 0x1a, 0x1c, 0x06, 0x1c, 0x38, - 0x21, 0x01, 0xf0, 0x0e, 0xfc, 0x15, 0x90, 0x00, - 0x1c, 0x31, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x50, - 0x49, 0x20, 0x68, 0x09, 0x60, 0x08, 0x99, 0x00, - 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x49, 0x49, 0x1e, - 0x68, 0x09, 0x60, 0x08, 0x48, 0x1b, 0x68, 0x00, - 0x68, 0x05, 0x48, 0x1c, 0x68, 0x01, 0x23, 0x02, - 0x43, 0xdb, 0x40, 0x19, 0x60, 0x01, 0x2c, 0x00, - 0xd0, 0x0c, 0x48, 0x19, 0x68, 0x00, 0x78, 0x00, - 0x28, 0x00, 0xd0, 0x07, 0x48, 0x14, 0x68, 0x00, - 0x68, 0x05, 0x48, 0x14, 0x68, 0x01, 0x23, 0x02, - 0x43, 0x19, 0x60, 0x01, 0x1c, 0x20, 0x49, 0x13, - 0x68, 0x09, 0x70, 0x08, 0x48, 0x12, 0x63, 0xc5, - 0x20, 0x3f, 0x04, 0x00, 0x40, 0x28, 0x0c, 0x00, - 0x49, 0x10, 0x62, 0x08, 0x20, 0xff, 0x02, 0x00, - 0x40, 0x28, 0x0a, 0x00, 0x49, 0x0d, 0x62, 0x48, - 0x06, 0xa8, 0x0e, 0x80, 0x23, 0x80, 0x43, 0x18, - 0x49, 0x0a, 0x62, 0x88, 0x1c, 0x28, 0xb0, 0x01, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x01, - 0xe7, 0xfa, 0x00, 0x00, 0x2e, 0x08, 0xd2, 0x08, - 0x2e, 0x08, 0xd2, 0x0c, 0x6a, 0x00, 0x00, 0x18, - 0x2e, 0x08, 0xd2, 0x10, 0x2e, 0x08, 0xd2, 0x14, - 0x68, 0x00, 0x0d, 0x00, 0x72, 0x00, 0x01, 0x00, - 0xb4, 0x80, 0x1c, 0x02, 0x1c, 0x0f, 0x06, 0xb9, - 0x0e, 0x89, 0x20, 0x01, 0x03, 0x80, 0x40, 0x10, - 0x09, 0xc0, 0x43, 0x01, 0x20, 0xf0, 0x40, 0x10, - 0x01, 0x40, 0x43, 0x01, 0x07, 0x10, 0x0f, 0x00, - 0x03, 0x00, 0x43, 0x01, 0x20, 0x07, 0x02, 0xc0, - 0x40, 0x10, 0x01, 0x40, 0x43, 0x01, 0x20, 0x07, - 0x02, 0x00, 0x40, 0x10, 0x02, 0xc0, 0x43, 0x01, - 0x1c, 0x08, 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xfc, - 0xb5, 0xff, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, - 0x9b, 0x03, 0x06, 0x18, 0x16, 0x06, 0x20, 0x33, - 0x06, 0x40, 0x6b, 0x80, 0x1c, 0x01, 0x20, 0x04, - 0x40, 0x08, 0xd0, 0x05, 0x20, 0xd0, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xe0, 0x17, - 0x23, 0x04, 0x43, 0xdb, 0x40, 0x19, 0x01, 0x08, - 0x4b, 0x0a, 0x68, 0x1b, 0x18, 0xc2, 0x60, 0x15, - 0x60, 0x54, 0x2e, 0xfe, 0xd0, 0x04, 0x20, 0x01, - 0x40, 0xb0, 0x60, 0xd0, 0x4b, 0x06, 0x43, 0x1f, - 0x60, 0x97, 0x20, 0x01, 0x40, 0x88, 0x23, 0x33, - 0x06, 0x5b, 0x63, 0x58, 0x20, 0x00, 0xe7, 0xe2, - 0xe7, 0xe1, 0x00, 0x00, 0x2e, 0x08, 0x20, 0x8c, - 0x80, 0x00, 0x00, 0x00, 0xb4, 0xb0, 0x1c, 0x01, - 0x06, 0x08, 0x16, 0x04, 0x4f, 0x0c, 0x22, 0x00, - 0x20, 0x00, 0x28, 0x04, 0xd3, 0x02, 0xe0, 0x0b, - 0x30, 0x01, 0xe7, 0xfa, 0x01, 0x03, 0x19, 0xdb, - 0x68, 0x5b, 0x42, 0xa3, 0xd1, 0x03, 0x25, 0x01, - 0x40, 0x85, 0x1c, 0x2b, 0x43, 0x1a, 0xe7, 0xf3, - 0x23, 0x33, 0x06, 0x5b, 0x6c, 0x1b, 0x40, 0x13, - 0xd0, 0x00, 0xe7, 0xf9, 0xbc, 0xb0, 0x47, 0x70, - 0x9e, 0x00, 0x00, 0xc0, 0xe3, 0xa0, 0x14, 0x62, - 0xe5, 0x91, 0x10, 0x14, 0xe2, 0x01, 0x00, 0xff, - 0xe5, 0x9f, 0x10, 0x2c, 0xe5, 0xd1, 0x10, 0x00, - 0xe3, 0x51, 0x00, 0xff, 0x0a, 0x00, 0x00, 0x05, - 0xe5, 0x9f, 0x10, 0x1c, 0xe5, 0xd1, 0x10, 0x00, - 0xe3, 0xa0, 0x20, 0x01, 0xe1, 0xa0, 0x11, 0x12, - 0xe3, 0xa0, 0x24, 0x66, 0xe5, 0x82, 0x10, 0x10, - 0xe3, 0xa0, 0x14, 0x62, 0xe5, 0x81, 0x00, 0x14, - 0xe1, 0x2f, 0xff, 0x1e, 0x2e, 0x08, 0xb9, 0xb4, - 0x47, 0x00, 0x00, 0x00, 0x47, 0x08, 0x00, 0x00, - 0x47, 0x10, 0x00, 0x00, 0x47, 0x18, 0x00, 0x00, - 0x47, 0x20, 0x00, 0x00, 0x47, 0x28, 0x00, 0x00, - 0x47, 0x30, 0x00, 0x00, 0x47, 0x38, 0x00, 0x00, - 0x17, 0xcb, 0x40, 0x59, 0x1a, 0xc9, 0x17, 0xc2, - 0x40, 0x50, 0x1a, 0x80, 0xd1, 0x01, 0xf0, 0x00, - 0xf9, 0xf1, 0xb4, 0x0c, 0x08, 0x4b, 0x1c, 0x02, - 0x42, 0x9a, 0xd8, 0x00, 0x00, 0x52, 0xd3, 0xfb, - 0x23, 0x00, 0xe0, 0x00, 0x08, 0x52, 0x42, 0x91, - 0x41, 0x5b, 0x42, 0x91, 0xd3, 0x00, 0x1a, 0x89, - 0x42, 0x82, 0xd1, 0xf7, 0x1c, 0x18, 0xbc, 0x0c, - 0x40, 0x5a, 0x40, 0x50, 0x1a, 0x80, 0x40, 0x59, - 0x1a, 0xc9, 0x47, 0x70, 0x08, 0x4b, 0x1c, 0x02, - 0xd1, 0x01, 0xf0, 0x00, 0xf9, 0xd3, 0x42, 0x9a, - 0xd8, 0x00, 0x00, 0x52, 0xd3, 0xfb, 0x23, 0x00, - 0xe0, 0x00, 0x08, 0x52, 0x42, 0x91, 0x41, 0x5b, - 0x42, 0x91, 0xd3, 0x00, 0x1a, 0x89, 0x42, 0x82, - 0xd1, 0xf7, 0x1c, 0x18, 0x47, 0x70, 0x00, 0x00, - 0x3a, 0x20, 0xd5, 0x09, 0x42, 0x53, 0x32, 0x20, - 0x40, 0xd0, 0x46, 0x94, 0x1c, 0x0a, 0x40, 0x9a, - 0x43, 0x10, 0x46, 0x62, 0x40, 0xd1, 0x47, 0x70, - 0x1c, 0x08, 0x40, 0xd0, 0x21, 0x00, 0x47, 0x70, - 0x40, 0x10, 0x40, 0x19, 0x47, 0x70, 0x00, 0x00, - 0x47, 0x70, 0x00, 0x00, 0x1a, 0x43, 0x42, 0x93, - 0xd3, 0x30, 0x46, 0x84, 0x07, 0x8b, 0xd0, 0x07, - 0x1e, 0x52, 0xd3, 0x29, 0x78, 0x0b, 0x70, 0x03, - 0x1c, 0x40, 0x1c, 0x49, 0x07, 0x8b, 0xd1, 0xf7, - 0x07, 0x83, 0xd1, 0x17, 0x3a, 0x10, 0xd3, 0x05, - 0xb4, 0xb0, 0xc9, 0xb8, 0xc0, 0xb8, 0x3a, 0x10, - 0xd2, 0xfb, 0xbc, 0xb0, 0x32, 0x0c, 0xd3, 0x0f, - 0xc9, 0x08, 0xc0, 0x08, 0x1f, 0x12, 0xd2, 0xfb, - 0xe0, 0x0a, 0xc9, 0x08, 0x70, 0xc3, 0x0a, 0x1b, - 0x70, 0x83, 0x0a, 0x1b, 0x70, 0x43, 0x0a, 0x1b, - 0x70, 0x03, 0x1d, 0x00, 0x1f, 0x12, 0xd2, 0xf4, - 0x1c, 0xd2, 0xd3, 0x05, 0x78, 0x0b, 0x70, 0x03, - 0x1c, 0x49, 0x1c, 0x40, 0x1e, 0x52, 0xd2, 0xf9, - 0x46, 0x60, 0x47, 0x70, 0x1c, 0x03, 0x43, 0x0b, - 0x43, 0x13, 0x07, 0x9b, 0xd1, 0x04, 0x1f, 0x12, - 0x58, 0x8b, 0x50, 0x83, 0xd1, 0xfb, 0x47, 0x70, - 0x1e, 0x52, 0x5c, 0x8b, 0x54, 0x83, 0xd1, 0xfb, - 0x47, 0x70, 0x00, 0x00, 0x1c, 0x02, 0x43, 0x0a, - 0x07, 0x92, 0xd1, 0x1a, 0x46, 0xbc, 0xb4, 0x30, - 0x4c, 0x11, 0x01, 0xe5, 0xc8, 0x04, 0xc9, 0x08, - 0x1a, 0xd7, 0xd1, 0x09, 0x1b, 0x17, 0x43, 0x97, - 0x40, 0x2f, 0xd0, 0xf7, 0x20, 0x00, 0xbc, 0x30, - 0x46, 0x67, 0x47, 0x70, 0x02, 0x12, 0x02, 0x1b, - 0x0e, 0x11, 0x0e, 0x18, 0x1a, 0x08, 0xd1, 0x01, - 0x29, 0x00, 0xd1, 0xf7, 0xbc, 0x30, 0x46, 0x67, - 0x47, 0x70, 0x78, 0x02, 0x78, 0x0b, 0x1a, 0xd2, - 0xd1, 0x03, 0x1c, 0x40, 0x1c, 0x49, 0x2b, 0x00, - 0xd1, 0xf7, 0x1c, 0x10, 0x47, 0x70, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x42, 0x41, 0x46, 0x8c, - 0x07, 0x83, 0xd0, 0x05, 0x78, 0x03, 0x2b, 0x00, - 0xd0, 0x16, 0x1c, 0x40, 0x07, 0x83, 0xd1, 0xf9, - 0x49, 0x0a, 0xc8, 0x04, 0x09, 0xc9, 0x1a, 0x53, - 0x43, 0x93, 0x01, 0xc9, 0x40, 0x0b, 0xd0, 0xf8, - 0x1f, 0x00, 0x0e, 0x13, 0xd0, 0x08, 0x1c, 0x40, - 0x02, 0x13, 0x0e, 0x1b, 0xd0, 0x04, 0x1c, 0x40, - 0x04, 0x13, 0x0e, 0x1b, 0xd0, 0x00, 0x1c, 0x40, - 0x44, 0x60, 0x47, 0x70, 0x80, 0x80, 0x80, 0x80, - 0x46, 0xbc, 0xb4, 0x60, 0x1c, 0x03, 0x43, 0x08, - 0x07, 0x80, 0xd1, 0x1b, 0x1f, 0x12, 0xd3, 0x0b, - 0x4e, 0x0f, 0xcb, 0x01, 0xc9, 0x80, 0x1b, 0xc0, - 0xd1, 0x09, 0x1b, 0xbd, 0x43, 0xbd, 0x01, 0xf7, - 0x40, 0x3d, 0xd1, 0x04, 0x1f, 0x12, 0xd2, 0xf4, - 0x1c, 0xd2, 0xd3, 0x0e, 0xe0, 0x02, 0x1f, 0x1b, - 0x1f, 0x09, 0x1c, 0xd2, 0x78, 0x18, 0x78, 0x0f, - 0x1b, 0xc0, 0xd1, 0x06, 0x2f, 0x00, 0xd0, 0x04, - 0x1c, 0x5b, 0x1c, 0x49, 0x1e, 0x52, 0xd2, 0xf5, - 0x20, 0x00, 0xbc, 0x60, 0x46, 0x67, 0x47, 0x70, - 0x01, 0x01, 0x01, 0x01, 0x46, 0xbc, 0x1c, 0x03, - 0x43, 0x08, 0x07, 0x80, 0xd1, 0x13, 0x1f, 0x12, - 0xd3, 0x05, 0xcb, 0x01, 0xc9, 0x80, 0x1b, 0xc0, - 0xd1, 0x04, 0x1f, 0x12, 0xd2, 0xf9, 0x1c, 0xd2, - 0xd3, 0x0c, 0xe0, 0x02, 0x1f, 0x1b, 0x1f, 0x09, - 0x1c, 0xd2, 0x78, 0x18, 0x78, 0x0f, 0x1b, 0xc0, - 0xd1, 0x04, 0x1c, 0x5b, 0x1c, 0x49, 0x1e, 0x52, - 0xd2, 0xf7, 0x20, 0x00, 0x46, 0x67, 0x47, 0x70, - 0xb5, 0x80, 0xb0, 0x8f, 0x4b, 0x0a, 0x93, 0x08, - 0x4b, 0x0a, 0x93, 0x09, 0x4b, 0x0a, 0x93, 0x07, - 0x90, 0x0e, 0x46, 0x6b, 0xa8, 0x0e, 0xf0, 0x00, - 0xff, 0x4d, 0x1c, 0x07, 0x20, 0x00, 0xa9, 0x0e, - 0xf0, 0x00, 0xf8, 0xdc, 0x1c, 0x38, 0xb0, 0x0f, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x01, 0xe6, 0x39, 0x2e, 0x01, 0xe6, 0x47, - 0x2e, 0x01, 0xeb, 0xe3, 0x46, 0x84, 0x07, 0x83, - 0xd0, 0x05, 0x1e, 0x52, 0xd3, 0x12, 0x70, 0x01, - 0x1c, 0x40, 0x07, 0x83, 0xd1, 0xf9, 0x3a, 0x08, - 0xd3, 0x07, 0x02, 0x0b, 0x43, 0x19, 0x04, 0x0b, - 0x43, 0x19, 0x1c, 0x0b, 0xc0, 0x0a, 0x3a, 0x08, - 0xd2, 0xfc, 0x1d, 0xd2, 0xd3, 0x02, 0x54, 0x81, - 0x1e, 0x52, 0xd2, 0xfc, 0x46, 0x60, 0x47, 0x70, - 0x47, 0x78, 0x00, 0x00, 0xe2, 0x10, 0xc1, 0x02, - 0x12, 0x60, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, - 0x03, 0xa0, 0x10, 0x00, 0x01, 0x2f, 0xff, 0x1e, - 0xe3, 0x8c, 0xc1, 0x01, 0xe3, 0x8c, 0xc6, 0x1e, - 0xe1, 0xb0, 0x28, 0x20, 0x01, 0xa0, 0x08, 0x00, - 0x02, 0x4c, 0xc4, 0x01, 0xe1, 0xb0, 0x2c, 0x20, - 0x01, 0xa0, 0x04, 0x00, 0x02, 0x4c, 0xc5, 0x02, - 0xe1, 0xb0, 0x2e, 0x20, 0x01, 0xa0, 0x02, 0x00, - 0x02, 0x4c, 0xc5, 0x01, 0xe1, 0xb0, 0x2f, 0x20, - 0x01, 0xa0, 0x01, 0x00, 0x02, 0x4c, 0xc6, 0x02, - 0xe1, 0xb0, 0x2f, 0xa0, 0x01, 0xa0, 0x00, 0x80, - 0x02, 0x4c, 0xc6, 0x01, 0xe1, 0xa0, 0x00, 0x80, - 0xe1, 0xa0, 0x1a, 0x00, 0xe1, 0x8c, 0x06, 0x20, - 0xe1, 0x2f, 0xff, 0x1e, 0x22, 0x01, 0x07, 0xd2, - 0x40, 0x50, 0x47, 0x70, 0xe2, 0x20, 0x01, 0x02, - 0xe1, 0x2f, 0xff, 0x1e, 0x00, 0x40, 0x08, 0x40, - 0x47, 0x70, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe3, 0xa0, 0xc4, 0xff, 0xe3, 0x8c, 0xc6, 0x0e, - 0xe1, 0x5c, 0x00, 0x82, 0x9a, 0x00, 0x00, 0x0a, - 0xe1, 0xb0, 0x00, 0x80, 0x03, 0x31, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x0a, 0x3a, 0x00, 0x00, 0x12, - 0xe1, 0x50, 0x00, 0x0c, 0x03, 0x51, 0x00, 0x00, - 0x8a, 0x00, 0x04, 0xec, 0xe1, 0xb0, 0x20, 0x82, - 0x8a, 0x00, 0x00, 0x18, 0xe3, 0xa0, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x1e, 0x03, 0x53, 0x00, 0x00, - 0x0a, 0xff, 0xff, 0xf2, 0xea, 0x00, 0x04, 0xe9, - 0xe1, 0x50, 0x00, 0x0c, 0x03, 0x51, 0x00, 0x00, - 0x8a, 0x00, 0x04, 0xe2, 0xe1, 0xb0, 0x20, 0x82, - 0x33, 0xa0, 0x00, 0x01, 0x23, 0xa0, 0x00, 0x00, - 0x03, 0x33, 0x00, 0x00, 0x03, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x0c, - 0x03, 0x51, 0x00, 0x00, 0x8a, 0x00, 0x04, 0xd9, - 0xe1, 0xb0, 0x20, 0x82, 0x23, 0xa0, 0x00, 0x00, - 0x21, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x02, - 0x01, 0x51, 0x00, 0x03, 0x33, 0xa0, 0x00, 0x01, - 0x23, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0x50, 0x00, 0x02, 0x01, 0x51, 0x00, 0x03, - 0x83, 0xa0, 0x00, 0x01, 0x93, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe5, 0x9f, 0xc0, 0x28, 0xe8, 0xac, 0x7f, 0xff, - 0xe2, 0x8f, 0x00, 0x0c, 0xe2, 0x4c, 0x10, 0x3c, - 0xe2, 0x4e, 0xe0, 0x04, 0xe5, 0x8c, 0xe0, 0x00, - 0xea, 0x00, 0x05, 0x71, 0x80, 0x00, 0x00, 0x20, - 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, 0x62, - 0x79, 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x00, 0x00, - 0x2e, 0x08, 0x21, 0xd0, 0x06, 0x00, 0x0e, 0x00, - 0x68, 0x0a, 0x70, 0x10, 0x32, 0x01, 0x60, 0x0a, - 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, 0x00, 0x00, - 0xb4, 0x90, 0x18, 0x42, 0x78, 0x17, 0x23, 0x00, - 0x2f, 0x00, 0xd0, 0x22, 0x2f, 0x35, 0xdb, 0x20, - 0x2f, 0x35, 0xd0, 0x01, 0x24, 0x30, 0xe0, 0x07, - 0x1c, 0x17, 0x78, 0x7c, 0x37, 0x01, 0x2c, 0x30, - 0xd0, 0xfb, 0x2c, 0x00, 0xd1, 0xf6, 0xe0, 0x14, - 0x3a, 0x01, 0x78, 0x17, 0x2f, 0x39, 0xd1, 0x01, - 0x70, 0x14, 0xe7, 0xf9, 0x37, 0x01, 0x70, 0x17, - 0x78, 0x02, 0x2a, 0x30, 0xd0, 0x09, 0x29, 0x00, - 0xdb, 0x04, 0x5c, 0x42, 0x18, 0x43, 0x70, 0x5a, - 0x39, 0x01, 0xd5, 0xfa, 0x20, 0x01, 0xbc, 0x90, - 0x47, 0x70, 0x1c, 0x18, 0xbc, 0x90, 0x47, 0x70, - 0xb5, 0x90, 0x1c, 0x0c, 0x1e, 0x57, 0x2a, 0x00, - 0xdd, 0x08, 0xf0, 0x01, 0xfc, 0x81, 0x31, 0x30, - 0x70, 0x21, 0x1c, 0x39, 0x3c, 0x01, 0x3f, 0x01, - 0x29, 0x00, 0xdc, 0xf6, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0xf7, 0x1c, 0x14, 0x1c, 0x0f, - 0xb0, 0x85, 0xa3, 0xfb, 0x1c, 0x08, 0x1c, 0x11, - 0xcb, 0x0c, 0xf7, 0xff, 0xff, 0x3b, 0x28, 0x00, - 0xd0, 0x05, 0x1c, 0x38, 0x1c, 0x21, 0xf7, 0xff, - 0xff, 0x29, 0x1c, 0x0c, 0x1c, 0x07, 0xa3, 0xf4, - 0xcb, 0x0c, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x01, - 0xfc, 0x7b, 0x28, 0x00, 0xd0, 0x05, 0x27, 0x00, - 0x97, 0x01, 0x1f, 0x78, 0x90, 0x00, 0x1c, 0x3e, - 0xe1, 0xc8, 0xb0, 0x8a, 0x46, 0x6a, 0x1c, 0x38, - 0x1c, 0x21, 0xf0, 0x01, 0xfc, 0x93, 0x90, 0x08, - 0x91, 0x09, 0x20, 0xff, 0x30, 0x2e, 0x9f, 0x00, - 0x43, 0x78, 0x4b, 0xe9, 0x18, 0xc1, 0x20, 0x7d, - 0x00, 0xc0, 0xf7, 0xff, 0xfd, 0x71, 0x90, 0x0a, - 0x1b, 0xc2, 0xa1, 0xe6, 0xc9, 0x03, 0xf0, 0x01, - 0xfc, 0xc7, 0x9e, 0x0a, 0xb0, 0x83, 0xf0, 0x01, - 0xfd, 0x55, 0x90, 0x00, 0x91, 0x01, 0x92, 0x02, - 0x2e, 0x00, 0xda, 0x04, 0x42, 0x76, 0x4d, 0xe1, - 0x4c, 0xe1, 0x1c, 0x67, 0xe0, 0x02, 0x4d, 0xe1, - 0x4c, 0xe1, 0x27, 0x00, 0x2e, 0x00, 0xd0, 0x16, - 0x08, 0x70, 0xd3, 0x0a, 0x46, 0x6b, 0x1c, 0x28, - 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x01, 0xfd, 0xba, - 0x90, 0x00, 0x91, 0x01, 0x92, 0x02, 0x2e, 0x01, - 0xd0, 0x09, 0x1c, 0x28, 0x1c, 0x21, 0x1c, 0x3a, - 0xf0, 0x01, 0xfd, 0xca, 0x10, 0x76, 0x1c, 0x0c, - 0x1c, 0x05, 0x1c, 0x17, 0xe7, 0xe8, 0xaa, 0x00, - 0xca, 0x07, 0xf0, 0x01, 0xfd, 0xdd, 0x90, 0x04, - 0x91, 0x05, 0xb0, 0x03, 0x98, 0x08, 0x99, 0x09, - 0x9a, 0x01, 0x9b, 0x02, 0xf0, 0x01, 0xfe, 0xd6, - 0x1c, 0x04, 0x1c, 0x0f, 0xa3, 0xcd, 0xcb, 0x0c, - 0xf7, 0xff, 0xfe, 0xd0, 0x28, 0x00, 0xd0, 0x1d, - 0xa3, 0xcc, 0x68, 0x1a, 0x68, 0x5b, 0x1c, 0x20, - 0x1c, 0x39, 0x1c, 0x15, 0x1c, 0x1e, 0xf0, 0x01, - 0xff, 0x6f, 0x1c, 0x04, 0x98, 0x0a, 0x38, 0x01, - 0x90, 0x0a, 0x1c, 0x0f, 0x98, 0x01, 0x99, 0x02, - 0x1c, 0x2a, 0x1c, 0x33, 0xf0, 0x01, 0xfe, 0xba, - 0x90, 0x01, 0x91, 0x02, 0xa3, 0xbf, 0xcb, 0x0c, - 0x1c, 0x20, 0x1c, 0x39, 0xf7, 0xff, 0xfe, 0xb2, - 0x28, 0x00, 0xd1, 0xe1, 0xa3, 0xbf, 0xcb, 0x0c, - 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x01, 0xff, 0xc2, - 0x28, 0x00, 0xd0, 0x1d, 0xa3, 0xb9, 0x68, 0x1a, - 0x68, 0x5b, 0x1c, 0x20, 0x1c, 0x39, 0x1c, 0x15, - 0x1c, 0x1e, 0xf0, 0x01, 0xfe, 0x9f, 0x1c, 0x04, - 0x98, 0x0a, 0x30, 0x01, 0x90, 0x0a, 0x1c, 0x0f, - 0x98, 0x01, 0x99, 0x02, 0x1c, 0x2a, 0x1c, 0x33, - 0xf0, 0x01, 0xff, 0x3e, 0x90, 0x01, 0x91, 0x02, - 0xa3, 0xb0, 0xcb, 0x0c, 0x1c, 0x20, 0x1c, 0x39, - 0xf0, 0x01, 0xff, 0xa4, 0x28, 0x00, 0xd1, 0xe1, - 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x01, 0xff, 0xf6, - 0x90, 0x0b, 0x98, 0x0a, 0x42, 0x46, 0x96, 0x0e, - 0x98, 0x0b, 0xf7, 0xff, 0xfe, 0x3d, 0x9a, 0x00, - 0x9e, 0x0a, 0x1a, 0xb2, 0xf0, 0x01, 0xfc, 0x34, - 0x90, 0x06, 0x91, 0x07, 0xa0, 0x96, 0x68, 0x02, - 0x92, 0x04, 0x68, 0x41, 0x91, 0x05, 0x9e, 0x0a, - 0x2e, 0x00, 0xda, 0x25, 0x9e, 0x0e, 0xa1, 0xa1, - 0xc9, 0x03, 0xa2, 0x91, 0x68, 0x14, 0x68, 0x52, - 0x92, 0x03, 0x25, 0x00, 0x1c, 0x02, 0x1c, 0x2b, - 0x1c, 0x07, 0xf0, 0x02, 0xf8, 0x13, 0x1c, 0x02, - 0x1c, 0x0b, 0x99, 0x03, 0x1c, 0x20, 0xf0, 0x02, - 0xf8, 0x15, 0xa1, 0x9a, 0x68, 0x08, 0x68, 0x49, - 0x91, 0x0d, 0x1c, 0x3a, 0x1c, 0x2b, 0x1c, 0x04, - 0xf0, 0x01, 0xfe, 0xfe, 0xa3, 0x87, 0xcb, 0x0c, - 0xf0, 0x02, 0xf8, 0x76, 0x9b, 0x0d, 0x1c, 0x22, - 0xf0, 0x01, 0xfe, 0x4c, 0x1c, 0x04, 0xe0, 0x05, - 0xa0, 0x90, 0x68, 0x45, 0x68, 0x07, 0xa0, 0x7e, - 0x68, 0x41, 0x68, 0x04, 0x91, 0x03, 0x2e, 0x00, - 0xd0, 0x5d, 0x08, 0x70, 0xd3, 0x35, 0xb0, 0x82, - 0x98, 0x08, 0x99, 0x09, 0x9b, 0x05, 0x1c, 0x22, - 0xf0, 0x01, 0xfe, 0xe2, 0x90, 0x00, 0x91, 0x01, - 0x9b, 0x05, 0x1c, 0x38, 0x1c, 0x29, 0x1c, 0x22, - 0xf0, 0x01, 0xff, 0xe8, 0x9a, 0x06, 0x9b, 0x07, - 0xf0, 0x01, 0xfe, 0xd6, 0x9a, 0x00, 0x9b, 0x01, - 0xb0, 0x02, 0xf0, 0x01, 0xff, 0xdf, 0x90, 0x04, - 0x91, 0x05, 0x98, 0x06, 0x99, 0x07, 0x1c, 0x3a, - 0x1c, 0x2b, 0xf0, 0x01, 0xfe, 0xc9, 0xb0, 0x82, - 0x90, 0x00, 0x23, 0x00, 0x93, 0x01, 0x1c, 0x02, - 0xf0, 0x01, 0xff, 0xc8, 0x1c, 0x02, 0x1c, 0x0b, - 0x98, 0x06, 0x99, 0x07, 0xf0, 0x01, 0xff, 0xca, - 0x90, 0x06, 0x91, 0x07, 0x98, 0x00, 0x90, 0x08, - 0x99, 0x01, 0x91, 0x09, 0xb0, 0x02, 0x2e, 0x01, - 0xd0, 0x25, 0xa1, 0x72, 0xc9, 0x03, 0x1c, 0x3a, - 0x1c, 0x2b, 0xf0, 0x01, 0xfe, 0xad, 0x9b, 0x03, - 0x1c, 0x22, 0xf0, 0x01, 0xff, 0xb7, 0x9b, 0x03, - 0x1c, 0x22, 0xf0, 0x01, 0xfe, 0xa5, 0x91, 0x03, - 0x1c, 0x04, 0x1c, 0x38, 0x1c, 0x29, 0x1c, 0x3a, - 0x1c, 0x2b, 0xf0, 0x01, 0xfe, 0x9d, 0x25, 0x00, - 0x1c, 0x02, 0x1c, 0x2b, 0x1c, 0x07, 0xf0, 0x01, - 0xff, 0x9d, 0x1c, 0x02, 0x1c, 0x0b, 0x99, 0x03, - 0x1c, 0x20, 0xf0, 0x01, 0xff, 0x9f, 0x91, 0x03, - 0x10, 0x76, 0x1c, 0x04, 0xe7, 0xa1, 0xe7, 0xff, - 0xab, 0x06, 0xcb, 0x0f, 0xf0, 0x02, 0xf8, 0x0c, - 0x28, 0x00, 0xd1, 0x03, 0x98, 0x0b, 0x38, 0x01, - 0x90, 0x0b, 0xe7, 0x55, 0x98, 0x08, 0x99, 0x09, - 0x9a, 0x06, 0x9b, 0x07, 0xf0, 0x01, 0xff, 0x82, - 0x9a, 0x04, 0x9b, 0x05, 0xf0, 0x01, 0xff, 0x7e, - 0x9a, 0x01, 0x9b, 0x02, 0xf0, 0x01, 0xfd, 0xca, - 0xa3, 0x4c, 0x68, 0x1a, 0x68, 0x5b, 0x93, 0x0c, - 0x1c, 0x15, 0xf0, 0x01, 0xfe, 0x6d, 0x1c, 0x0c, - 0x1c, 0x07, 0xf0, 0x01, 0xff, 0x2f, 0x1c, 0x06, - 0xf7, 0xff, 0xfd, 0x7a, 0x1c, 0x3a, 0x1c, 0x23, - 0xf0, 0x01, 0xff, 0xde, 0x9b, 0x0c, 0x1c, 0x2a, - 0xf0, 0x01, 0xfe, 0x5e, 0xf0, 0x01, 0xff, 0x22, - 0x1c, 0x07, 0xd5, 0x04, 0x4b, 0x47, 0x18, 0xff, - 0x3e, 0x01, 0x2f, 0x00, 0xdb, 0xfa, 0x48, 0x45, - 0x42, 0x87, 0xdb, 0x04, 0x4b, 0x43, 0x1a, 0xff, - 0x36, 0x01, 0x42, 0x87, 0xda, 0xfa, 0x2e, 0x00, - 0xda, 0x06, 0x4b, 0x40, 0x18, 0xf6, 0x99, 0x0b, - 0x39, 0x01, 0x91, 0x0b, 0x2e, 0x00, 0xdb, 0xf8, - 0x42, 0x86, 0xdb, 0x06, 0x4b, 0x3b, 0x1a, 0xf6, - 0x99, 0x0b, 0x31, 0x01, 0x91, 0x0b, 0x42, 0x86, - 0xda, 0xf8, 0x99, 0x0b, 0x4b, 0x38, 0x42, 0x99, - 0xda, 0x17, 0x98, 0x0b, 0x00, 0x84, 0x18, 0x24, - 0x00, 0x64, 0x1c, 0x18, 0x1c, 0x31, 0xf7, 0xff, - 0xfb, 0xe3, 0x18, 0x20, 0x90, 0x0b, 0x00, 0x8c, - 0x18, 0x64, 0x00, 0x64, 0x1c, 0x39, 0x48, 0x30, - 0xf7, 0xff, 0xfb, 0xda, 0x18, 0x26, 0x00, 0x8f, - 0x18, 0x7f, 0x00, 0x7f, 0x98, 0x0a, 0x38, 0x01, - 0xe0, 0x16, 0x99, 0x0b, 0x42, 0x81, 0xdb, 0x14, - 0x98, 0x0b, 0xf0, 0x01, 0xfa, 0xa1, 0x4b, 0x27, - 0x43, 0x59, 0x19, 0x89, 0x90, 0x0b, 0x1c, 0x08, - 0xf0, 0x01, 0xfa, 0x9a, 0x4b, 0x23, 0x43, 0x59, - 0x19, 0xc9, 0x1c, 0x06, 0x1d, 0x48, 0xf0, 0x01, - 0xfa, 0x93, 0x1c, 0x07, 0x98, 0x0a, 0x30, 0x01, - 0x90, 0x0a, 0xb0, 0x0a, 0x24, 0x30, 0x98, 0x05, - 0x70, 0x04, 0x98, 0x05, 0x1d, 0x81, 0x22, 0x06, - 0x98, 0x01, 0xf7, 0xff, 0xfd, 0xfd, 0x98, 0x05, - 0x1d, 0xc1, 0x31, 0x05, 0x22, 0x06, 0x1c, 0x30, - 0xf7, 0xff, 0xfd, 0xf6, 0xe0, 0x2e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xea, 0x84, 0x3f, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, - 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00, 0x40, 0x01, - 0xa0, 0x00, 0x00, 0x00, 0x40, 0xf8, 0x6a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x2e, 0x84, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc9, 0x99, 0x99, - 0x99, 0x99, 0x99, 0x9a, 0x40, 0x14, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x42, 0x40, - 0x00, 0x01, 0x86, 0xa0, 0x98, 0x05, 0x1d, 0xc1, - 0x31, 0x0b, 0x22, 0x06, 0x1c, 0x38, 0xf7, 0xff, - 0xfd, 0xbf, 0x98, 0x05, 0x74, 0xc4, 0x27, 0x00, - 0x98, 0x05, 0x75, 0x07, 0x98, 0x00, 0x30, 0x05, - 0xb0, 0x05, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0x02, 0x08, 0x12, 0xd3, 0x01, - 0x22, 0x01, 0xe0, 0x00, 0x22, 0x00, 0x60, 0x0a, - 0x68, 0x01, 0x4a, 0x08, 0x40, 0x0a, 0x4b, 0x07, - 0x42, 0x9a, 0xd0, 0x01, 0x20, 0x00, 0x47, 0x70, - 0x03, 0x09, 0xd1, 0x02, 0x68, 0x40, 0x28, 0x00, - 0xd0, 0x01, 0x20, 0x01, 0x47, 0x70, 0x20, 0x02, - 0x47, 0x70, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, - 0xb5, 0x90, 0x1c, 0x04, 0x54, 0x63, 0x1c, 0x4f, - 0x2a, 0x00, 0xda, 0x02, 0x42, 0x52, 0x21, 0x2d, - 0xe0, 0x00, 0x21, 0x2b, 0x1c, 0x38, 0x54, 0x21, - 0x23, 0x7d, 0x00, 0xdb, 0x37, 0x01, 0x42, 0x9a, - 0xdb, 0x09, 0x1c, 0x18, 0x1c, 0x11, 0xf7, 0xff, - 0xfb, 0x37, 0x1d, 0xc2, 0x32, 0x29, 0x1c, 0x38, - 0x54, 0x22, 0x1c, 0x0a, 0x37, 0x01, 0x2a, 0x64, - 0xdb, 0x09, 0x20, 0x64, 0x1c, 0x11, 0xf7, 0xff, - 0xfb, 0x2b, 0x1d, 0xc2, 0x32, 0x29, 0x1c, 0x38, - 0x54, 0x22, 0x1c, 0x0a, 0x37, 0x01, 0x1c, 0x10, - 0xf0, 0x01, 0xf9, 0xf6, 0x1d, 0xc2, 0x32, 0x29, - 0x1c, 0x38, 0x54, 0x22, 0x37, 0x01, 0x1c, 0x38, - 0x31, 0x30, 0x54, 0x21, 0x37, 0x01, 0x1c, 0x38, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, - 0x1c, 0x06, 0xb0, 0x82, 0x68, 0x10, 0x90, 0x00, - 0x1d, 0xd0, 0x30, 0x0d, 0xb0, 0x81, 0x1c, 0x0f, - 0x46, 0x69, 0x1c, 0x14, 0x1c, 0x05, 0xf7, 0xff, - 0xff, 0xa0, 0x99, 0x00, 0x29, 0x00, 0xd0, 0x01, - 0xa1, 0xc9, 0xe0, 0x0a, 0x99, 0x01, 0x08, 0x89, - 0xd3, 0x01, 0xa1, 0xc8, 0xe0, 0x05, 0x99, 0x01, - 0x08, 0xc9, 0xd3, 0x01, 0xa1, 0xc6, 0xe0, 0x00, - 0xa1, 0xc6, 0x60, 0x61, 0x28, 0x00, 0xd0, 0x15, - 0x28, 0x01, 0xd1, 0x01, 0xa0, 0xc4, 0xe0, 0x00, - 0xa0, 0xc4, 0x78, 0x01, 0x70, 0x39, 0x78, 0x41, - 0x70, 0x79, 0x78, 0x80, 0x70, 0xb8, 0x20, 0x00, - 0x70, 0xf8, 0x98, 0x01, 0x4b, 0xc0, 0x40, 0x18, - 0x60, 0x20, 0x20, 0x03, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xcd, 0x06, 0xb0, 0x01, - 0x48, 0xbc, 0x90, 0x01, 0x2e, 0x45, 0xd0, 0x74, - 0x2e, 0x65, 0xd0, 0x72, 0x2e, 0x66, 0xd1, 0x71, - 0x1c, 0x38, 0xf7, 0xff, 0xfd, 0x2e, 0x1c, 0x06, - 0xd5, 0x4e, 0x42, 0x76, 0x68, 0xa0, 0x1c, 0x41, - 0x42, 0xb1, 0xda, 0x09, 0x21, 0x30, 0x70, 0x39, - 0x98, 0x01, 0x68, 0x00, 0x78, 0x00, 0x25, 0x02, - 0x70, 0x78, 0x68, 0xa0, 0x61, 0x20, 0xe0, 0x3b, - 0x1b, 0x80, 0x1c, 0x85, 0x2d, 0x12, 0xdd, 0x03, - 0x1f, 0xe8, 0x38, 0x0c, 0x25, 0x13, 0x61, 0x20, - 0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff, 0xfc, 0xd4, - 0x28, 0x00, 0xd0, 0x01, 0x35, 0x01, 0x3e, 0x01, - 0x2e, 0x00, 0xd1, 0x02, 0x78, 0x78, 0x70, 0x38, - 0xe0, 0x0d, 0x2e, 0x01, 0xd1, 0x10, 0x1c, 0x28, - 0x2d, 0x00, 0xdd, 0x05, 0x5c, 0x39, 0x18, 0x3a, - 0x70, 0x51, 0x38, 0x01, 0x28, 0x00, 0xdc, 0xf9, - 0x21, 0x30, 0x70, 0x39, 0x35, 0x01, 0x98, 0x01, - 0x68, 0x00, 0x78, 0x00, 0x70, 0x78, 0xe0, 0x13, - 0x1c, 0x28, 0x2d, 0x00, 0xdd, 0x05, 0x5c, 0x39, - 0x18, 0x3a, 0x70, 0x91, 0x38, 0x01, 0x28, 0x00, - 0xdc, 0xf9, 0x21, 0x30, 0x70, 0x39, 0x98, 0x01, - 0x68, 0x00, 0x78, 0x00, 0x70, 0x78, 0x20, 0x3c, - 0x70, 0xb8, 0x1e, 0x70, 0x60, 0xe0, 0x35, 0x02, - 0x69, 0x20, 0x28, 0x00, 0xdd, 0x5d, 0xe0, 0x26, - 0x68, 0xa0, 0x19, 0x80, 0x1c, 0x85, 0x2d, 0x12, - 0xdd, 0x41, 0x25, 0x13, 0x1c, 0x38, 0x1c, 0x29, - 0xf7, 0xff, 0xfc, 0x96, 0x28, 0x00, 0xd0, 0x01, - 0x25, 0x14, 0x36, 0x01, 0x1e, 0x69, 0x42, 0xb1, - 0xdd, 0x1a, 0x20, 0x00, 0x2e, 0x00, 0xdb, 0x05, - 0x18, 0x39, 0x78, 0x49, 0x54, 0x39, 0x30, 0x01, - 0x42, 0xb0, 0xdd, 0xf9, 0x98, 0x01, 0x68, 0x00, - 0xe0, 0x01, 0xe0, 0xc1, 0xe0, 0x45, 0x78, 0x00, - 0x19, 0xb9, 0x70, 0x48, 0x68, 0xa0, 0x19, 0x80, - 0x38, 0x11, 0x61, 0x20, 0xd0, 0x35, 0x21, 0x3e, - 0x1c, 0x28, 0x54, 0x39, 0x35, 0x01, 0xe0, 0x30, - 0x20, 0x00, 0x29, 0x00, 0xdd, 0x05, 0x18, 0x3a, - 0x78, 0x52, 0x54, 0x3a, 0x30, 0x01, 0x42, 0x81, - 0xdc, 0xf9, 0x20, 0x3c, 0x19, 0x79, 0x39, 0x20, - 0x77, 0xc8, 0x1b, 0x70, 0x30, 0x02, 0x60, 0xe0, - 0x98, 0x01, 0x68, 0x00, 0x78, 0x01, 0x1c, 0x28, - 0x54, 0x39, 0x68, 0xa0, 0x35, 0x01, 0x28, 0x00, - 0xd0, 0x17, 0x61, 0x20, 0xe7, 0xdf, 0x1c, 0x38, - 0x1c, 0x29, 0xf7, 0xff, 0xfc, 0x55, 0x28, 0x00, - 0xd0, 0x01, 0x35, 0x01, 0x36, 0x01, 0x20, 0x00, - 0x2e, 0x00, 0xdb, 0x05, 0x18, 0x39, 0x78, 0x49, - 0x54, 0x39, 0x30, 0x01, 0x42, 0xb0, 0xdd, 0xf9, - 0x98, 0x01, 0x68, 0x00, 0x78, 0x00, 0x19, 0xb9, - 0x70, 0x48, 0x68, 0xa0, 0x28, 0x00, 0xd1, 0x68, - 0x98, 0x00, 0x09, 0x00, 0xd2, 0x66, 0x3d, 0x01, - 0xe0, 0x75, 0x1c, 0x38, 0xb0, 0x81, 0xf7, 0xff, - 0xfc, 0x74, 0x90, 0x00, 0x68, 0xa0, 0x28, 0x01, - 0xda, 0x01, 0x20, 0x01, 0x60, 0xa0, 0x68, 0xa0, - 0x28, 0x11, 0xdd, 0x01, 0x25, 0x12, 0xe0, 0x00, - 0x1c, 0x45, 0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff, - 0xfc, 0x27, 0x99, 0x00, 0x18, 0x42, 0x68, 0xa0, - 0x42, 0x90, 0xdd, 0x02, 0x23, 0x04, 0x42, 0xda, - 0xda, 0x02, 0x78, 0x78, 0x70, 0x38, 0xe0, 0x22, - 0x26, 0x66, 0x2a, 0x00, 0xdb, 0x0e, 0x20, 0x00, - 0x2a, 0x00, 0xdb, 0x05, 0x18, 0x39, 0x78, 0x49, - 0x54, 0x39, 0x30, 0x01, 0x42, 0x90, 0xdd, 0xf9, - 0x98, 0x02, 0x68, 0x00, 0x78, 0x00, 0x18, 0xb9, - 0x70, 0x48, 0xe0, 0x14, 0x42, 0x52, 0x1c, 0x28, - 0xd4, 0x04, 0x5c, 0x3b, 0x18, 0x81, 0x54, 0x7b, - 0x38, 0x01, 0xd5, 0xfa, 0x18, 0xad, 0x20, 0x00, - 0x2a, 0x00, 0xdb, 0x04, 0x21, 0x30, 0x54, 0x39, - 0x30, 0x01, 0x42, 0x90, 0xdd, 0xfb, 0x98, 0x02, - 0x68, 0x00, 0x78, 0x00, 0x70, 0x78, 0x98, 0x01, - 0x09, 0x00, 0xd2, 0x1c, 0x20, 0x00, 0x43, 0xc0, - 0x61, 0x20, 0x5d, 0x78, 0x99, 0x02, 0x68, 0x09, - 0x78, 0x09, 0x42, 0x88, 0xd0, 0x0a, 0x19, 0x78, - 0x38, 0x20, 0x7f, 0xc0, 0x28, 0x30, 0xd1, 0x05, - 0x3d, 0x01, 0x19, 0x78, 0x38, 0x20, 0x7f, 0xc0, - 0x28, 0x30, 0xd0, 0xf9, 0x19, 0x78, 0x38, 0x20, - 0x7f, 0xc0, 0x42, 0x88, 0xd1, 0x0c, 0x3d, 0x01, - 0xe0, 0x0a, 0xe0, 0x10, 0xe0, 0x0f, 0x68, 0xa0, - 0x28, 0x11, 0xdd, 0x05, 0x38, 0x11, 0x21, 0x3e, - 0x61, 0x20, 0x1c, 0x28, 0x54, 0x39, 0x35, 0x01, - 0x2e, 0x66, 0xd0, 0x03, 0x1c, 0x38, 0x1c, 0x29, - 0x1e, 0xb3, 0xe0, 0x31, 0xb0, 0x01, 0x1c, 0x28, - 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x1c, 0x38, 0xb0, 0x81, 0xf7, 0xff, 0xfb, 0xf9, - 0x90, 0x00, 0x68, 0xa0, 0x28, 0x11, 0xdd, 0x03, - 0x38, 0x11, 0x61, 0x20, 0x20, 0x11, 0x60, 0xa0, - 0x68, 0xa0, 0x1c, 0x85, 0x1c, 0x38, 0x1c, 0x29, - 0xf7, 0xff, 0xfb, 0xae, 0x99, 0x00, 0x18, 0x42, - 0x78, 0x78, 0x70, 0x38, 0x68, 0xa0, 0x28, 0x00, - 0xd1, 0x04, 0x98, 0x01, 0x09, 0x00, 0xd2, 0x01, - 0x25, 0x01, 0xe0, 0x03, 0x98, 0x02, 0x68, 0x00, - 0x78, 0x00, 0x70, 0x78, 0x69, 0x20, 0x28, 0x00, - 0xdd, 0x03, 0x21, 0x3e, 0x1c, 0x28, 0x54, 0x39, - 0x35, 0x01, 0x1c, 0x38, 0x1c, 0x29, 0x1c, 0x33, - 0xf7, 0xff, 0xfe, 0x26, 0x1c, 0x05, 0xe7, 0xc9, - 0x2d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x4e, 0x61, 0x4e, 0x00, 0x49, 0x6e, 0x66, 0x00, - 0xff, 0xff, 0xfe, 0xff, 0x2e, 0x08, 0x22, 0x10, - 0xb5, 0xf0, 0x1c, 0x04, 0x25, 0x00, 0x26, 0x00, - 0x1c, 0x18, 0xb0, 0x92, 0x68, 0x13, 0x93, 0x00, - 0x1c, 0x17, 0x43, 0xea, 0x60, 0xfa, 0x61, 0x3a, - 0x1c, 0x1a, 0x23, 0x21, 0x01, 0x1b, 0x40, 0x1a, - 0xd1, 0x01, 0x22, 0x01, 0x60, 0xba, 0x1d, 0xfa, - 0x32, 0x29, 0x29, 0x67, 0xd0, 0x0e, 0xdc, 0x2c, - 0x29, 0x64, 0xd0, 0x5b, 0xdc, 0x06, 0x29, 0x45, - 0xd0, 0x08, 0x29, 0x47, 0xd0, 0x06, 0x29, 0x58, - 0xd1, 0x0c, 0xe0, 0x58, 0x29, 0x65, 0xd0, 0x01, - 0x29, 0x66, 0xd1, 0x07, 0xab, 0x01, 0x1c, 0x08, - 0x1c, 0x19, 0x69, 0xfb, 0x1c, 0x3a, 0xf7, 0xff, - 0xf9, 0x29, 0x1c, 0x05, 0xb0, 0x82, 0x6a, 0xf9, - 0x91, 0x00, 0x23, 0x01, 0x02, 0x5b, 0x98, 0x02, - 0x40, 0x18, 0x90, 0x0d, 0xd0, 0x6c, 0x21, 0x00, - 0x91, 0x01, 0x68, 0xf8, 0x28, 0x00, 0xdd, 0x01, - 0x1e, 0x41, 0x91, 0x01, 0x69, 0x38, 0x28, 0x00, - 0xdd, 0x63, 0x99, 0x01, 0x18, 0x40, 0x1e, 0x41, - 0xe0, 0xca, 0x29, 0x70, 0xd0, 0x33, 0xdc, 0x2e, - 0x29, 0x69, 0xd0, 0x2b, 0x29, 0x6f, 0xd1, 0xe1, - 0x99, 0x00, 0x09, 0xc9, 0xd3, 0x63, 0xb0, 0x82, - 0x68, 0x10, 0x90, 0x00, 0x68, 0x51, 0x91, 0x01, - 0xa3, 0xc0, 0x93, 0x12, 0xcb, 0x0c, 0xf0, 0x01, - 0xfd, 0x2d, 0x28, 0x00, 0xd0, 0x18, 0x98, 0x00, - 0x99, 0x01, 0xf7, 0xff, 0xf9, 0x4d, 0x07, 0x40, - 0x0f, 0x40, 0x6a, 0xb9, 0x5c, 0x09, 0x1c, 0x28, - 0xaa, 0x03, 0x54, 0x11, 0x22, 0x03, 0x98, 0x00, - 0x99, 0x01, 0x35, 0x01, 0xf7, 0xff, 0xf9, 0x2c, - 0x90, 0x00, 0x91, 0x01, 0x9b, 0x12, 0xcb, 0x0c, - 0xf0, 0x01, 0xfd, 0x14, 0x28, 0x00, 0xd1, 0xe6, - 0xb0, 0x02, 0xe0, 0x49, 0xe0, 0x4f, 0x29, 0x75, - 0xd0, 0x4d, 0x29, 0x78, 0xd1, 0xb2, 0x99, 0x00, - 0x09, 0xc9, 0xd3, 0x27, 0xb0, 0x82, 0x68, 0x10, - 0x90, 0x00, 0x68, 0x51, 0x91, 0x01, 0xa3, 0xa9, - 0x93, 0x13, 0xcb, 0x0c, 0xf0, 0x01, 0xfc, 0xfe, - 0x28, 0x00, 0xd0, 0x71, 0x98, 0x00, 0x99, 0x01, - 0xf7, 0xff, 0xf9, 0x1e, 0x07, 0x00, 0x0f, 0x00, - 0x6a, 0xb9, 0x5c, 0x09, 0x1c, 0x28, 0xaa, 0x03, - 0x54, 0x11, 0x22, 0x04, 0x98, 0x00, 0x99, 0x01, - 0x35, 0x01, 0xf7, 0xff, 0xf8, 0xfd, 0x90, 0x00, - 0x91, 0x01, 0x9b, 0x13, 0xcb, 0x0c, 0xf0, 0x01, - 0xfc, 0xe5, 0x28, 0x00, 0xd1, 0xe6, 0xe0, 0x57, - 0xe0, 0x65, 0xe0, 0x6a, 0x28, 0x00, 0xd0, 0x85, - 0x07, 0x02, 0x0f, 0x12, 0x6a, 0xb9, 0x5c, 0x8a, - 0x1c, 0x29, 0xab, 0x01, 0x54, 0x5a, 0x35, 0x01, - 0x09, 0x00, 0xd1, 0xf5, 0xe7, 0x7a, 0xe7, 0xff, - 0x28, 0x00, 0xd0, 0x09, 0x07, 0x41, 0x0f, 0x49, - 0x1d, 0xca, 0x32, 0x29, 0x1c, 0x29, 0xab, 0x01, - 0x54, 0x5a, 0x35, 0x01, 0x08, 0xc0, 0xd1, 0xf5, - 0x98, 0x00, 0x09, 0x00, 0xd3, 0xee, 0x68, 0xb8, - 0x38, 0x01, 0x60, 0xb8, 0xe7, 0x66, 0x99, 0x00, - 0x09, 0xc9, 0xd3, 0x33, 0xb0, 0x82, 0x68, 0x10, - 0x90, 0x00, 0x68, 0x51, 0x91, 0x01, 0xa3, 0x83, - 0x93, 0x11, 0xcb, 0x0c, 0xf0, 0x01, 0xfc, 0xb2, - 0x28, 0x00, 0xd0, 0x25, 0xa3, 0x81, 0x93, 0x10, - 0xa3, 0x82, 0x93, 0x0f, 0xa3, 0x7f, 0x93, 0x0e, - 0x98, 0x00, 0x99, 0x01, 0x9b, 0x10, 0xcb, 0x0c, - 0xf0, 0x01, 0xfc, 0xac, 0x1c, 0x19, 0x1c, 0x10, - 0x9b, 0x0f, 0xcb, 0x0c, 0xf0, 0x01, 0xfc, 0xe8, - 0xf7, 0xff, 0xf8, 0xc2, 0x1c, 0x29, 0xaa, 0x03, - 0x54, 0x50, 0x98, 0x00, 0x99, 0x01, 0x9b, 0x0e, - 0xcb, 0x0c, 0x35, 0x01, 0xf0, 0x01, 0xfc, 0x9a, - 0x90, 0x00, 0x91, 0x01, 0x9b, 0x11, 0xcb, 0x0c, - 0xf0, 0x01, 0xfc, 0x8c, 0x28, 0x00, 0xd1, 0xdf, - 0xb0, 0x02, 0xe7, 0x2f, 0x28, 0x00, 0xd0, 0xb1, - 0xf0, 0x01, 0xfc, 0xd2, 0x1d, 0xca, 0x32, 0x29, - 0x1c, 0x29, 0xab, 0x01, 0x54, 0x5a, 0x35, 0x01, - 0x28, 0x00, 0xd1, 0xf5, 0xe7, 0x22, 0x68, 0xb8, - 0x1b, 0x41, 0x91, 0x01, 0xd5, 0x01, 0x21, 0x00, - 0x91, 0x01, 0x68, 0x78, 0xf7, 0xff, 0xf9, 0x0a, - 0x99, 0x01, 0x19, 0x49, 0x18, 0x40, 0x99, 0x00, - 0x1a, 0x08, 0x90, 0x00, 0x23, 0xff, 0x33, 0x01, - 0x98, 0x02, 0x40, 0x18, 0x90, 0x0c, 0xd1, 0x1b, - 0x98, 0x02, 0x08, 0x40, 0xd2, 0x18, 0xb0, 0x81, - 0x98, 0x0d, 0x28, 0x00, 0xd0, 0x01, 0x20, 0x30, - 0xe0, 0x00, 0x20, 0x20, 0x06, 0x00, 0x0e, 0x00, - 0x90, 0x00, 0x98, 0x01, 0x38, 0x01, 0x90, 0x01, - 0xd4, 0x09, 0x98, 0x00, 0x6a, 0x3a, 0x1c, 0x21, - 0x36, 0x01, 0xf7, 0xff, 0xf8, 0x1d, 0x98, 0x01, - 0x38, 0x01, 0x90, 0x01, 0xd5, 0xf5, 0xb0, 0x01, - 0x68, 0x79, 0x78, 0x08, 0x31, 0x01, 0xb0, 0x81, - 0x91, 0x00, 0x28, 0x00, 0xd0, 0x0a, 0x6a, 0x3a, - 0x1c, 0x21, 0xf7, 0xff, 0xf8, 0x0d, 0x99, 0x00, - 0x78, 0x08, 0x31, 0x01, 0x91, 0x00, 0x36, 0x01, - 0x28, 0x00, 0xd1, 0xf4, 0xb0, 0x01, 0x98, 0x02, - 0x07, 0xc0, 0x0f, 0xc0, 0x90, 0x0b, 0xd1, 0x18, - 0xb0, 0x81, 0x98, 0x0d, 0x28, 0x00, 0xd0, 0x01, - 0x20, 0x30, 0xe0, 0x00, 0x20, 0x20, 0x06, 0x00, - 0x0e, 0x00, 0x90, 0x00, 0x98, 0x01, 0x38, 0x01, - 0x90, 0x01, 0xd4, 0x09, 0x98, 0x00, 0x6a, 0x3a, - 0x1c, 0x21, 0x36, 0x01, 0xf7, 0xfe, 0xff, 0xec, - 0x98, 0x01, 0x38, 0x01, 0x90, 0x01, 0xd5, 0xf5, - 0xb0, 0x01, 0x98, 0x0d, 0x28, 0x00, 0xd0, 0x35, - 0x21, 0x00, 0xb0, 0x81, 0x91, 0x00, 0x2d, 0x00, - 0xdd, 0x2e, 0xa8, 0x04, 0x99, 0x00, 0x5c, 0x40, - 0x28, 0x3c, 0xd0, 0x10, 0x28, 0x3e, 0xd1, 0x1d, - 0x69, 0x38, 0x38, 0x01, 0x61, 0x38, 0xd4, 0x1e, - 0x20, 0x30, 0x6a, 0x3a, 0x1c, 0x21, 0x36, 0x01, - 0xf7, 0xfe, 0xff, 0xce, 0x69, 0x38, 0x38, 0x01, - 0x61, 0x38, 0xd5, 0xf5, 0xe0, 0x13, 0x68, 0xf8, - 0x38, 0x01, 0x60, 0xf8, 0xd4, 0x0f, 0x20, 0x30, - 0x6a, 0x3a, 0x1c, 0x21, 0x36, 0x01, 0xf7, 0xfe, - 0xff, 0xbf, 0x68, 0xf8, 0x38, 0x01, 0x60, 0xf8, - 0xd5, 0xf5, 0xe0, 0x04, 0x6a, 0x3a, 0x1c, 0x21, - 0xf7, 0xfe, 0xff, 0xb6, 0x36, 0x01, 0x99, 0x00, - 0x31, 0x01, 0x91, 0x00, 0x42, 0xa9, 0xdb, 0xd0, - 0xb0, 0x01, 0xe0, 0x1c, 0x99, 0x01, 0x1e, 0x48, - 0x90, 0x01, 0xd4, 0x09, 0x20, 0x30, 0x6a, 0x3a, - 0x1c, 0x21, 0x36, 0x01, 0xf7, 0xfe, 0xff, 0xa4, - 0x98, 0x01, 0x38, 0x01, 0x90, 0x01, 0xd5, 0xf5, - 0x19, 0x76, 0x1c, 0x28, 0x3d, 0x01, 0x28, 0x00, - 0xdd, 0x09, 0xa8, 0x03, 0x5d, 0x40, 0x6a, 0x3a, - 0x1c, 0x21, 0xf7, 0xfe, 0xff, 0x95, 0x1c, 0x28, - 0x3d, 0x01, 0x28, 0x00, 0xdc, 0xf5, 0x98, 0x0b, - 0x28, 0x00, 0xd0, 0x0a, 0x98, 0x00, 0x1e, 0x45, - 0xd4, 0x07, 0x20, 0x20, 0x6a, 0x3a, 0x1c, 0x21, - 0x36, 0x01, 0xf7, 0xfe, 0xff, 0x85, 0x3d, 0x01, - 0xd5, 0xf7, 0x1c, 0x30, 0xb0, 0x14, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x00, 0x00, 0xb5, 0xff, 0x20, 0x00, - 0xb0, 0x88, 0x90, 0x00, 0x99, 0x09, 0x78, 0x08, - 0x31, 0x01, 0x91, 0x09, 0x1c, 0x1c, 0x1c, 0x17, - 0x28, 0x00, 0xd0, 0x74, 0xa3, 0xf4, 0x93, 0x07, - 0x1d, 0xe2, 0x32, 0x0d, 0x92, 0x06, 0x1d, 0xe1, - 0x31, 0x29, 0x91, 0x05, 0x28, 0x25, 0xd0, 0x07, - 0x99, 0x08, 0x6a, 0x22, 0xf7, 0xfe, 0xff, 0x58, - 0x98, 0x00, 0x30, 0x01, 0x90, 0x00, 0xe2, 0xc4, - 0x25, 0x00, 0x23, 0x00, 0xb0, 0x82, 0x93, 0x00, - 0x20, 0x00, 0x60, 0xa0, 0x99, 0x0b, 0x78, 0x0e, - 0x31, 0x01, 0x91, 0x0b, 0x2e, 0x2b, 0xd0, 0x16, - 0xdc, 0x06, 0x2e, 0x20, 0xd0, 0x16, 0x2e, 0x23, - 0xd1, 0x17, 0x23, 0x08, 0x43, 0x1d, 0xe7, 0xf1, - 0x2e, 0x2d, 0xd0, 0x05, 0x2e, 0x30, 0xd1, 0x10, - 0x23, 0xff, 0x33, 0x01, 0x43, 0x1d, 0xe7, 0xe9, - 0x23, 0xff, 0x33, 0x01, 0x43, 0x9d, 0x1c, 0x28, - 0x25, 0x01, 0x43, 0x05, 0xe7, 0xe2, 0x23, 0x02, - 0x43, 0x1d, 0xe7, 0xdf, 0x23, 0x04, 0x43, 0x1d, - 0xe7, 0xdc, 0x20, 0x00, 0x2e, 0x2a, 0xd1, 0x11, - 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, - 0x30, 0x04, 0x60, 0x38, 0x38, 0x80, 0x6f, 0xc0, - 0x28, 0x00, 0xda, 0x02, 0x42, 0x40, 0x23, 0x01, - 0x40, 0x5d, 0x99, 0x0b, 0x78, 0x0e, 0x31, 0x01, - 0x91, 0x0b, 0xe0, 0x0f, 0x49, 0xce, 0x5d, 0x8a, - 0x09, 0x92, 0xd3, 0x0b, 0x00, 0x83, 0x18, 0x18, - 0x00, 0x40, 0x19, 0x80, 0x9a, 0x0b, 0x78, 0x16, - 0x32, 0x01, 0x92, 0x0b, 0x5d, 0x8a, 0x38, 0x30, - 0x09, 0x92, 0xd2, 0xf3, 0x28, 0x00, 0xda, 0x00, - 0x20, 0x00, 0x90, 0x01, 0x2e, 0x2e, 0xd1, 0x2a, - 0x20, 0x00, 0x99, 0x0b, 0x78, 0x0e, 0x31, 0x01, - 0x91, 0x0b, 0x2e, 0x2a, 0xd1, 0x0e, 0x68, 0x38, - 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, 0x30, 0x04, - 0x60, 0x38, 0x38, 0x80, 0xe0, 0x00, 0xe2, 0x67, - 0x6f, 0xc0, 0x99, 0x0b, 0x78, 0x0e, 0x31, 0x01, - 0x91, 0x0b, 0xe0, 0x0f, 0x49, 0xb8, 0x5d, 0x8a, - 0x09, 0x92, 0xd3, 0x0b, 0x00, 0x83, 0x18, 0x18, - 0x00, 0x40, 0x19, 0x80, 0x9a, 0x0b, 0x78, 0x16, - 0x32, 0x01, 0x92, 0x0b, 0x5d, 0x8a, 0x38, 0x30, - 0x09, 0x92, 0xd2, 0xf3, 0x28, 0x00, 0xdb, 0x02, - 0x23, 0x10, 0x43, 0x1d, 0x60, 0xa0, 0x2e, 0x6c, - 0xd0, 0x01, 0x2e, 0x4c, 0xd1, 0x0d, 0x99, 0x0b, - 0x78, 0x0e, 0x31, 0x01, 0x91, 0x0b, 0x2e, 0x6c, - 0xd0, 0x01, 0x2e, 0x4c, 0xd1, 0x02, 0x23, 0x40, - 0x43, 0x1d, 0xe0, 0x06, 0x23, 0x20, 0x43, 0x1d, - 0xe0, 0x07, 0x2e, 0x68, 0xd1, 0x05, 0x23, 0x80, - 0x43, 0x1d, 0x99, 0x0b, 0x78, 0x0e, 0x31, 0x01, - 0x91, 0x0b, 0x2e, 0x67, 0xd0, 0x63, 0xdc, 0x12, - 0x2e, 0x63, 0xd0, 0x21, 0xdc, 0x08, 0x2e, 0x00, - 0xd0, 0x5e, 0x2e, 0x45, 0xd0, 0x5b, 0x2e, 0x47, - 0xd0, 0x59, 0x2e, 0x58, 0xd0, 0x59, 0xe0, 0x1f, - 0x2e, 0x64, 0xd0, 0x57, 0x2e, 0x65, 0xd0, 0x52, - 0x2e, 0x66, 0xd0, 0x50, 0xe0, 0x18, 0x2e, 0x70, - 0xd0, 0x55, 0xdc, 0x06, 0x2e, 0x69, 0xd0, 0x4d, - 0x2e, 0x6e, 0xd0, 0x51, 0x2e, 0x6f, 0xd0, 0x5c, - 0xe0, 0x0e, 0x2e, 0x73, 0xd0, 0x5a, 0x2e, 0x75, - 0xd0, 0x59, 0x2e, 0x78, 0xd0, 0x58, 0xe0, 0x07, - 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, - 0x30, 0x04, 0x60, 0x38, 0x38, 0x80, 0x6f, 0xc6, - 0x98, 0x01, 0x38, 0x01, 0x90, 0x01, 0x07, 0xe8, - 0x0f, 0xc0, 0x90, 0x06, 0xd1, 0x16, 0x0a, 0x68, - 0xd3, 0x01, 0x20, 0x30, 0xe0, 0x00, 0x20, 0x20, - 0x06, 0x05, 0x0e, 0x2d, 0x98, 0x01, 0x38, 0x01, - 0x90, 0x01, 0xd4, 0x0b, 0x98, 0x02, 0x30, 0x01, - 0x90, 0x02, 0x99, 0x0a, 0x6a, 0x22, 0x1c, 0x28, - 0xf7, 0xfe, 0xfe, 0x72, 0x98, 0x01, 0x38, 0x01, - 0x90, 0x01, 0xd5, 0xf3, 0x99, 0x0a, 0x6a, 0x22, - 0x1c, 0x30, 0xf7, 0xfe, 0xfe, 0x69, 0x98, 0x02, - 0x30, 0x01, 0x90, 0x02, 0x98, 0x06, 0x28, 0x00, - 0xd0, 0x52, 0x98, 0x01, 0x1e, 0x45, 0xd4, 0x58, - 0x98, 0x02, 0x30, 0x01, 0x90, 0x02, 0x20, 0x20, - 0x99, 0x0a, 0x6a, 0x22, 0xf7, 0xfe, 0xfe, 0x58, - 0x3d, 0x01, 0xd5, 0xf5, 0xe1, 0xc4, 0xe1, 0xa0, - 0xe0, 0x01, 0xe0, 0x8e, 0xe1, 0x53, 0x99, 0x0b, - 0x39, 0x01, 0x91, 0x0b, 0xe1, 0xbc, 0xe0, 0xed, - 0x0a, 0x28, 0xd3, 0x0e, 0x98, 0x02, 0x68, 0x39, - 0x31, 0x03, 0x08, 0x89, 0x00, 0x89, 0x31, 0x04, - 0x60, 0x39, 0x39, 0x80, 0x6f, 0xc9, 0x80, 0x08, - 0xe1, 0xae, 0xe0, 0xf5, 0xe0, 0x1d, 0xe1, 0x1b, - 0xe0, 0xa0, 0x09, 0xe8, 0xd3, 0x0c, 0x98, 0x02, - 0x68, 0x39, 0x31, 0x03, 0x08, 0x89, 0x00, 0x89, - 0x31, 0x04, 0x60, 0x39, 0x39, 0x80, 0x6f, 0xcd, - 0xf0, 0x01, 0xfa, 0xda, 0xc5, 0x03, 0xe1, 0x9b, - 0x20, 0x20, 0x40, 0x28, 0x99, 0x02, 0x68, 0x38, - 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, 0x30, 0x04, - 0x60, 0x38, 0x38, 0x80, 0x6f, 0xc0, 0x60, 0x01, - 0xe1, 0x8e, 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, - 0x00, 0x80, 0x30, 0x04, 0x60, 0x38, 0x38, 0x80, - 0x6f, 0xc0, 0xb0, 0x81, 0x90, 0x00, 0x09, 0x68, - 0xd3, 0x0c, 0x26, 0x00, 0x68, 0xa0, 0xe0, 0x01, - 0xe1, 0x7e, 0x36, 0x01, 0x42, 0x86, 0xda, 0x09, - 0x99, 0x00, 0x5d, 0x89, 0x29, 0x00, 0xd1, 0xf8, - 0xe0, 0x04, 0xe1, 0x75, 0x98, 0x00, 0xf7, 0xfe, - 0xfe, 0xcd, 0x1c, 0x06, 0x98, 0x02, 0x1b, 0x80, - 0x90, 0x02, 0x07, 0xe8, 0x0f, 0xc0, 0x90, 0x06, - 0xd1, 0x16, 0x0a, 0x68, 0xd3, 0x01, 0x20, 0x30, - 0xe0, 0x00, 0x20, 0x20, 0x06, 0x05, 0x0e, 0x2d, - 0x98, 0x02, 0x38, 0x01, 0x90, 0x02, 0xd4, 0x0b, - 0x98, 0x03, 0x30, 0x01, 0x90, 0x03, 0x99, 0x0b, - 0x6a, 0x22, 0x1c, 0x28, 0xf7, 0xfe, 0xfd, 0xe8, - 0x98, 0x02, 0x38, 0x01, 0x90, 0x02, 0xd5, 0xf3, - 0x25, 0x00, 0x2e, 0x00, 0xdd, 0x08, 0x99, 0x00, - 0x5d, 0x48, 0x99, 0x0b, 0x6a, 0x22, 0xf7, 0xfe, - 0xfd, 0xdb, 0x35, 0x01, 0x42, 0xb5, 0xdb, 0xf6, - 0x98, 0x03, 0x19, 0x80, 0x90, 0x03, 0x98, 0x06, - 0x28, 0x00, 0xd0, 0x0c, 0x98, 0x02, 0x1e, 0x45, - 0xd4, 0x09, 0x98, 0x03, 0x30, 0x01, 0x90, 0x03, - 0x20, 0x20, 0x99, 0x0b, 0x6a, 0x22, 0xf7, 0xfe, - 0xfd, 0xc7, 0x3d, 0x01, 0xd5, 0xf5, 0xb0, 0x01, - 0xe1, 0x32, 0x09, 0xe8, 0xd3, 0x0c, 0x68, 0x38, - 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, 0x30, 0x08, - 0x1f, 0xc1, 0x39, 0x01, 0x60, 0x38, 0x22, 0x08, - 0x98, 0x07, 0xf7, 0xfe, 0xfe, 0x0f, 0xe0, 0x08, - 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, - 0x30, 0x04, 0x60, 0x38, 0x38, 0x80, 0x6f, 0xc3, - 0x93, 0x00, 0x0a, 0x28, 0xd3, 0x03, 0x9b, 0x00, - 0x04, 0x1b, 0x0c, 0x1b, 0x93, 0x00, 0xa0, 0x17, - 0x62, 0xa0, 0x09, 0x28, 0xd3, 0x01, 0xa0, 0x1a, - 0xe0, 0x00, 0xa0, 0x18, 0x60, 0x60, 0x09, 0x68, - 0xd3, 0x61, 0xe0, 0xe3, 0x09, 0xe8, 0xd3, 0x0c, - 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, - 0x30, 0x08, 0x1f, 0xc1, 0x39, 0x01, 0x60, 0x38, - 0x22, 0x08, 0x98, 0x07, 0xf7, 0xfe, 0xfd, 0xe6, - 0xe0, 0x08, 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, - 0x00, 0x80, 0x30, 0x04, 0x60, 0x38, 0x38, 0x80, - 0x6f, 0xc3, 0x93, 0x00, 0x0a, 0x28, 0xd3, 0x16, - 0x9b, 0x00, 0x04, 0x1b, 0x0c, 0x1b, 0xe0, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0x22, 0x44, 0x30, 0x31, 0x32, 0x33, - 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, - 0x43, 0x44, 0x45, 0x46, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x58, 0x00, 0x00, 0x93, 0x00, 0xa0, 0x78, - 0x62, 0xa0, 0x09, 0x28, 0xd3, 0x01, 0xa0, 0x7b, - 0xe0, 0x00, 0xa0, 0x79, 0x60, 0x60, 0x09, 0x68, - 0xd3, 0x25, 0xe0, 0xa7, 0x68, 0x38, 0x30, 0x03, - 0x08, 0x80, 0x00, 0x80, 0x30, 0x04, 0x60, 0x38, - 0x38, 0x80, 0x6f, 0xc3, 0x93, 0x00, 0xa0, 0x6e, - 0x62, 0xa0, 0x09, 0x28, 0xd3, 0x01, 0xa0, 0x72, - 0xe0, 0x00, 0xa0, 0x6f, 0x60, 0x60, 0x20, 0x08, - 0x23, 0x10, 0x43, 0x1d, 0x60, 0xa0, 0xe0, 0x7e, - 0x09, 0xe8, 0xd3, 0x0d, 0x68, 0x38, 0x30, 0x03, - 0x08, 0x80, 0x00, 0x80, 0x30, 0x08, 0x1f, 0xc1, - 0x39, 0x01, 0x60, 0x38, 0x22, 0x08, 0x98, 0x07, - 0xf7, 0xfe, 0xfd, 0x94, 0xe0, 0x09, 0xe0, 0x9b, - 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, - 0x30, 0x04, 0x60, 0x38, 0x38, 0x80, 0x6f, 0xc3, - 0x93, 0x00, 0x0a, 0x28, 0xd3, 0x03, 0x9b, 0x00, - 0x04, 0x1b, 0x0c, 0x1b, 0x93, 0x00, 0x09, 0x28, - 0xd3, 0x01, 0xa0, 0x5e, 0xe0, 0x00, 0xa0, 0x5a, - 0x60, 0x60, 0x09, 0x68, 0xd3, 0x57, 0xe0, 0x69, - 0x09, 0xe8, 0xd3, 0x0c, 0x68, 0x38, 0x30, 0x03, - 0x08, 0x80, 0x00, 0x80, 0x30, 0x08, 0x1f, 0xc1, - 0x39, 0x01, 0x60, 0x38, 0x22, 0x08, 0x98, 0x07, - 0xf7, 0xfe, 0xfd, 0x6c, 0xe0, 0x08, 0x68, 0x38, - 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, 0x30, 0x04, - 0x60, 0x38, 0x38, 0x80, 0x6f, 0xc3, 0x93, 0x00, - 0x0a, 0x28, 0xd3, 0x03, 0x9b, 0x00, 0x04, 0x1b, - 0x0c, 0x1b, 0x93, 0x00, 0xa0, 0x48, 0x60, 0x60, - 0x09, 0x68, 0xd3, 0x34, 0xe0, 0x46, 0x09, 0xe8, - 0xd3, 0x21, 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, - 0x00, 0x80, 0x30, 0x08, 0x1f, 0xc1, 0x39, 0x01, - 0x60, 0x38, 0x22, 0x08, 0x98, 0x07, 0xf7, 0xfe, - 0xfd, 0x49, 0x99, 0x07, 0x9b, 0x09, 0x68, 0x08, - 0x90, 0x04, 0x68, 0x49, 0x91, 0x03, 0xcb, 0x0c, - 0xf0, 0x01, 0xf9, 0x94, 0x28, 0x00, 0xd0, 0x08, - 0x98, 0x04, 0x99, 0x03, 0xf0, 0x01, 0xf9, 0x98, - 0x9a, 0x07, 0xc2, 0x03, 0x20, 0x00, 0x43, 0xc0, - 0xe0, 0x14, 0x20, 0x00, 0xe0, 0x12, 0x68, 0x38, - 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, 0x30, 0x04, - 0x60, 0x38, 0x38, 0x80, 0x6f, 0xc0, 0x0a, 0x29, - 0xd3, 0x01, 0x04, 0x00, 0x14, 0x00, 0x28, 0x00, - 0xda, 0x02, 0x42, 0x43, 0xe0, 0x01, 0xe0, 0x2b, - 0x1c, 0x03, 0x93, 0x00, 0x28, 0x00, 0xda, 0x01, - 0xa0, 0x2d, 0xe0, 0x08, 0x08, 0xa8, 0xd3, 0x01, - 0xa0, 0x2c, 0xe0, 0x04, 0x08, 0xe8, 0xd3, 0x01, - 0xa0, 0x2b, 0xe0, 0x00, 0xa0, 0x24, 0x60, 0x60, - 0x09, 0x68, 0xd3, 0x19, 0x4b, 0x29, 0x40, 0x1d, - 0xe0, 0x16, 0x23, 0x01, 0x02, 0x5b, 0x43, 0x1d, - 0x09, 0x68, 0xd2, 0x01, 0x20, 0x06, 0x60, 0xa0, - 0x68, 0x38, 0x30, 0x03, 0x08, 0x80, 0x00, 0x80, - 0x30, 0x08, 0x1f, 0xc1, 0x39, 0x01, 0x60, 0x38, - 0x22, 0x08, 0x98, 0x08, 0xf7, 0xfe, 0xfc, 0xfa, - 0x20, 0x00, 0x23, 0x00, 0x60, 0x60, 0x93, 0x00, - 0x98, 0x01, 0x62, 0xe0, 0x60, 0x25, 0x98, 0x0a, - 0x9b, 0x00, 0x1c, 0x31, 0x1c, 0x22, 0xf7, 0xff, - 0xfb, 0x3f, 0x99, 0x02, 0x18, 0x40, 0x90, 0x02, - 0xb0, 0x02, 0x99, 0x09, 0x78, 0x08, 0x31, 0x01, - 0x91, 0x09, 0x28, 0x00, 0xd0, 0x00, 0xe5, 0x29, - 0x98, 0x08, 0x6a, 0x61, 0xf7, 0xfe, 0xfc, 0x82, - 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, 0x43, 0xc0, - 0xe0, 0x00, 0x98, 0x00, 0xb0, 0x08, 0xb0, 0x04, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, - 0xe3, 0x10, 0x06, 0x01, 0x13, 0xa0, 0x00, 0x00, - 0x11, 0x2f, 0xff, 0x1e, 0xea, 0x00, 0x00, 0x0a, - 0xe3, 0x12, 0x07, 0x02, 0x0a, 0x00, 0x00, 0x08, - 0xe1, 0x5c, 0x00, 0x80, 0x83, 0xa0, 0x00, 0x00, - 0x81, 0x2f, 0xff, 0x1e, 0x03, 0x51, 0x00, 0x00, - 0x03, 0xa0, 0x00, 0x00, 0x01, 0x2f, 0xff, 0x1e, - 0xe3, 0x10, 0x07, 0x02, 0x13, 0xa0, 0x00, 0x00, - 0x11, 0x2f, 0xff, 0x1e, 0xe3, 0xa0, 0x35, 0x06, - 0xea, 0x00, 0x07, 0x2e, 0xe1, 0x2f, 0xff, 0x1f, - 0xea, 0x00, 0x00, 0x3e, 0xe5, 0x9f, 0x04, 0x5c, - 0xe3, 0x50, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x02, - 0xe3, 0xa0, 0x00, 0x20, 0xe3, 0xa0, 0x10, 0x01, - 0xef, 0x12, 0x34, 0x56, 0xe5, 0x9f, 0x04, 0x48, - 0xe3, 0x50, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x05, - 0xe5, 0x90, 0x10, 0x00, 0xe5, 0x9f, 0x04, 0x3c, - 0xe5, 0x90, 0x30, 0x00, 0xe5, 0x9f, 0x04, 0x38, - 0xe5, 0x90, 0xd0, 0x00, 0xea, 0x00, 0x00, 0x0b, - 0xe3, 0xa0, 0x00, 0x16, 0xe5, 0x9f, 0x44, 0x18, - 0xe2, 0x84, 0x20, 0xa8, 0xe2, 0x84, 0x10, 0xa4, - 0xe5, 0x81, 0x20, 0x00, 0xef, 0x12, 0x34, 0x56, - 0xe2, 0x84, 0x00, 0xa8, 0xe5, 0x90, 0xd0, 0x08, - 0xe5, 0x90, 0x30, 0x04, 0xe5, 0x90, 0x10, 0x00, - 0xe3, 0x51, 0x00, 0x00, 0x05, 0x9f, 0x14, 0x04, - 0xe2, 0x8f, 0x00, 0x10, 0xeb, 0x00, 0x00, 0x36, - 0xe5, 0x9f, 0x03, 0xfc, 0xe5, 0x9f, 0x33, 0xfc, - 0xeb, 0x00, 0x00, 0x12, 0xea, 0x00, 0x00, 0x4e, - 0x2e, 0x00, 0x04, 0x04, 0x2e, 0x03, 0xa9, 0xd0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe9, 0x2d, 0x40, 0x00, 0xe3, 0x1c, 0x00, 0x01, - 0x1a, 0x00, 0x00, 0x03, 0xe1, 0xa0, 0xe0, 0x0f, - 0xe1, 0x2f, 0xff, 0x1c, 0xe8, 0xbd, 0x40, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x8f, 0xe0, 0x01, - 0xe1, 0x2f, 0xff, 0x1c, 0x47, 0x78, 0x00, 0x00, - 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x1c, 0x02, 0x1c, 0x13, 0x47, 0x78, 0x00, 0x00, - 0xe9, 0x2d, 0x40, 0x00, 0xe3, 0x13, 0x00, 0x01, - 0x1a, 0x00, 0x00, 0x03, 0xe1, 0xa0, 0xe0, 0x0f, - 0xe1, 0x2f, 0xff, 0x13, 0xe8, 0xbd, 0x40, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x8f, 0xe0, 0x01, - 0xe1, 0x2f, 0xff, 0x13, 0x47, 0x78, 0x00, 0x00, - 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe5, 0x9f, 0xc0, 0x44, 0xe8, 0x8c, 0xff, 0xff, - 0xe2, 0x8f, 0x00, 0x00, 0xea, 0x00, 0x0e, 0xf4, - 0x00, 0x80, 0x0e, 0x09, 0x54, 0x68, 0x69, 0x73, - 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, 0x61, - 0x6e, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, - 0x75, 0x6e, 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x20, - 0x54, 0x68, 0x75, 0x6d, 0x62, 0x20, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, - 0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x6f, 0x72, 0x00, 0x00, 0x2e, 0x08, 0x21, 0xd0, - 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0x73, 0x08, - 0xe5, 0x87, 0x00, 0x00, 0xe2, 0x8f, 0x50, 0xc9, - 0xe2, 0x85, 0x5c, 0x02, 0xe5, 0x87, 0x50, 0x10, - 0xe2, 0x8f, 0x50, 0xe9, 0xe2, 0x85, 0x5c, 0x02, - 0xe5, 0x87, 0x50, 0x14, 0xe1, 0xa0, 0x80, 0x0e, - 0xe2, 0x87, 0x00, 0x04, 0xeb, 0x00, 0x04, 0x1d, - 0xe9, 0x2d, 0x01, 0x00, 0xe3, 0xa0, 0x00, 0x00, - 0xe5, 0xc7, 0x00, 0x2c, 0xe2, 0x87, 0x00, 0x04, - 0xeb, 0x00, 0x00, 0xce, 0xe3, 0xa0, 0x40, 0x00, - 0xe2, 0x8d, 0x00, 0x04, 0xe5, 0x97, 0x10, 0x00, - 0xe3, 0xa0, 0x30, 0x00, 0xe5, 0xc7, 0x30, 0x2e, - 0xe2, 0x81, 0x30, 0x08, 0xe8, 0x91, 0x00, 0x06, - 0xe5, 0x9f, 0xc2, 0xcc, 0xeb, 0xff, 0xff, 0xb7, - 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0x80, 0x01, - 0xea, 0x00, 0x00, 0x01, 0x47, 0x78, 0x00, 0x00, - 0xe3, 0xa0, 0x80, 0x00, 0xe1, 0xa0, 0x70, 0x00, - 0xeb, 0x00, 0x04, 0x15, 0xe1, 0xa0, 0x00, 0x08, - 0xeb, 0x00, 0x00, 0x0d, 0xe1, 0xa0, 0x20, 0x07, - 0xe3, 0x52, 0x00, 0x00, 0x12, 0x8f, 0x00, 0x08, - 0x15, 0x9f, 0x10, 0x00, 0xeb, 0x00, 0x0e, 0xb5, - 0x41, 0x42, 0x45, 0x58, 0x00, 0x80, 0x0e, 0x06, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, - 0x6f, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x6f, 0x20, - 0x6c, 0x61, 0x72, 0x67, 0x65, 0x00, 0x00, 0x00, - 0xe3, 0xa0, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, - 0xe5, 0x9f, 0x32, 0x60, 0xeb, 0xff, 0xff, 0xa9, - 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0xc2, 0x28, - 0xe5, 0xdc, 0x00, 0x2c, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0xa0, 0x30, 0x00, 0xe5, 0x9f, 0x12, 0x14, - 0xe4, 0x81, 0xf0, 0x04, 0xe8, 0xb3, 0x00, 0x04, - 0xe8, 0xa1, 0x00, 0x04, 0xe4, 0xd3, 0x20, 0x01, - 0xe4, 0xc1, 0x20, 0x01, 0xe3, 0x52, 0x00, 0x00, - 0x1a, 0xff, 0xff, 0xfb, 0xe1, 0xa0, 0xf0, 0x0e, - 0x47, 0x78, 0x00, 0x00, 0xe1, 0xa0, 0x80, 0x01, - 0xeb, 0xff, 0xff, 0xf2, 0xe5, 0x9f, 0x71, 0xe8, - 0xe5, 0xd7, 0x20, 0x2f, 0xe3, 0x52, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x2c, 0xe3, 0xa0, 0x20, 0x01, - 0xe5, 0xc7, 0x20, 0x2f, 0xeb, 0x00, 0x00, 0x3b, - 0xe1, 0xa0, 0x10, 0x08, 0xeb, 0x00, 0x03, 0xde, - 0xe3, 0x50, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x1b, - 0xe2, 0x88, 0xb0, 0x40, 0xe9, 0x3b, 0x01, 0xef, - 0xe9, 0x2c, 0x01, 0xef, 0xe9, 0x3b, 0x01, 0xef, - 0xe9, 0x2c, 0x01, 0xef, 0xe5, 0x9f, 0x71, 0xa8, - 0xe5, 0x97, 0x40, 0xa0, 0xe3, 0x84, 0x40, 0x80, - 0xe1, 0x21, 0xf0, 0x04, 0xe1, 0xa0, 0xd0, 0x0c, - 0xe1, 0xa0, 0xb0, 0x04, 0xe5, 0x9f, 0x01, 0x8c, - 0xe5, 0x90, 0x00, 0x04, 0xe1, 0xa0, 0x10, 0x0d, - 0xeb, 0x00, 0x03, 0xfe, 0xe3, 0xa0, 0x10, 0x00, - 0xe5, 0xc7, 0x10, 0x2f, 0xe1, 0xa0, 0x10, 0x0d, - 0xe3, 0x54, 0x00, 0x10, 0x1a, 0x00, 0x00, 0x02, - 0xe3, 0xa0, 0x00, 0x17, 0xef, 0x12, 0x34, 0x56, - 0xe3, 0x21, 0xf0, 0x93, 0xe1, 0xa0, 0x00, 0x00, - 0xe2, 0x81, 0xe0, 0x3c, 0xe9, 0x5e, 0x7f, 0xff, - 0xe1, 0xa0, 0x00, 0x00, 0xe8, 0xde, 0x80, 0x00, - 0xe2, 0x8f, 0x00, 0x00, 0xea, 0x00, 0x0e, 0x72, - 0x00, 0x80, 0x0e, 0x07, 0x4e, 0x6f, 0x20, 0x53, - 0x74, 0x61, 0x63, 0x6b, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x54, 0x72, 0x61, 0x70, 0x20, 0x48, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00, 0x00, 0x00, - 0xe2, 0x8f, 0x00, 0x00, 0xea, 0x00, 0x0e, 0x68, - 0x00, 0x80, 0x0e, 0x00, 0x52, 0x65, 0x63, 0x75, - 0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 0x54, 0x72, - 0x61, 0x70, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe5, 0x9f, 0xc1, 0x04, 0xe3, 0xa0, 0x00, 0x00, - 0xe5, 0xcc, 0x00, 0x2f, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0x00, 0xf0, - 0xe5, 0x90, 0x00, 0x00, 0xe5, 0x90, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe5, 0x9f, 0x00, 0xdc, 0xe2, 0x80, 0x00, 0x04, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe5, 0x9f, 0xc0, 0xcc, 0xe3, 0x50, 0x0b, 0x02, - 0x33, 0xa0, 0x0b, 0x02, 0xe2, 0x8c, 0xc0, 0x04, - 0xe9, 0x9c, 0x00, 0x0c, 0xe0, 0x53, 0x31, 0x00, - 0x21, 0x53, 0x00, 0x02, 0x3a, 0x00, 0x00, 0x03, - 0xe5, 0x81, 0x20, 0x00, 0xe0, 0x82, 0x21, 0x00, - 0xe5, 0x8c, 0x20, 0x04, 0xe1, 0x2f, 0xff, 0x1e, - 0xe9, 0x2d, 0x50, 0x03, 0xe1, 0xa0, 0x10, 0x0c, - 0xeb, 0x00, 0x00, 0x44, 0xe3, 0x50, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x0d, 0xe5, 0x9d, 0xc0, 0x08, - 0xe9, 0x9c, 0x40, 0x04, 0xe1, 0x5e, 0x00, 0x01, - 0x10, 0x4e, 0x30, 0x02, 0xe0, 0x81, 0xe0, 0x00, - 0x11, 0xa0, 0x00, 0x02, 0x11, 0xa0, 0x20, 0x01, - 0xe9, 0x8c, 0x40, 0x04, 0x13, 0x53, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x03, 0xe8, 0xbd, 0x50, 0x03, - 0xe5, 0x81, 0x00, 0x00, 0xe1, 0xa0, 0x01, 0x43, - 0xe1, 0x2f, 0xff, 0x1e, 0xe8, 0xbd, 0x50, 0x03, - 0xe9, 0x9c, 0x00, 0x0c, 0xe0, 0x43, 0x00, 0x02, - 0xe1, 0xb0, 0x01, 0x40, 0x03, 0xa0, 0x20, 0x00, - 0x15, 0x8c, 0x30, 0x04, 0xe5, 0x81, 0x20, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe2, 0x80, 0x20, 0x03, 0xe3, 0xc2, 0x20, 0x03, - 0xe5, 0x9f, 0xc0, 0x24, 0xe2, 0x8c, 0xc0, 0x08, - 0xe8, 0x9c, 0x00, 0x03, 0xe0, 0x90, 0x20, 0x02, - 0x31, 0x52, 0x00, 0x01, 0x35, 0x8c, 0x20, 0x00, - 0x23, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x2e, 0x08, 0x21, 0x4c, 0x2e, 0x08, 0x21, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x02, 0xcc, 0x18, - 0x2e, 0x02, 0xcc, 0x14, 0x2e, 0x02, 0xcc, 0x10, - 0x2e, 0x08, 0xd7, 0x68, 0x2e, 0x00, 0x1a, 0xf9, - 0x2e, 0x02, 0x0e, 0x19, 0x2e, 0x02, 0x0c, 0xcd, - 0x2e, 0x02, 0x0d, 0x8d, 0x47, 0x78, 0x00, 0x00, - 0xe3, 0xa0, 0x00, 0x04, 0xe5, 0x90, 0x00, 0x00, - 0xe2, 0x00, 0x04, 0xff, 0xe3, 0x50, 0x04, 0xea, - 0x03, 0xa0, 0x00, 0x01, 0x13, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe2, 0x40, 0x0b, 0x05, 0xe3, 0x50, 0x0b, 0x1b, - 0x33, 0xa0, 0x00, 0x01, 0x23, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe3, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe2, 0x8f, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x55, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x20, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x20, 0x54, - 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x5a, - 0x65, 0x72, 0x6f, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, - 0x64, 0x20, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x02, 0x55, 0x6e, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x53, 0x57, - 0x49, 0x20, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x03, 0x50, 0x72, 0x65, 0x66, - 0x65, 0x74, 0x63, 0x68, 0x20, 0x41, 0x62, 0x6f, - 0x72, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x20, 0x41, 0x62, 0x6f, - 0x72, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, - 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, - 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x64, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, - 0x75, 0x70, 0x74, 0x00, 0x00, 0x02, 0x00, 0x07, - 0x55, 0x6e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x64, 0x20, 0x46, 0x61, 0x73, 0x74, 0x20, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xfe, 0x80, - 0x2e, 0x01, 0xfe, 0x98, 0x2e, 0x01, 0xfe, 0xb4, - 0x2e, 0x01, 0xfe, 0xd4, 0x2e, 0x01, 0xfe, 0xe8, - 0x2e, 0x01, 0xfe, 0xf8, 0x2e, 0x01, 0xff, 0x10, - 0x2e, 0x01, 0xff, 0x28, 0xe2, 0x4f, 0x20, 0x28, - 0xe7, 0x92, 0x01, 0x00, 0xea, 0xff, 0xff, 0x1c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x17, 0xc3, 0x40, 0x58, 0x1a, 0xc0, 0x1c, 0x01, - 0x08, 0x40, 0x08, 0x42, 0x18, 0x80, 0x09, 0x02, - 0x18, 0x80, 0x0a, 0x02, 0x18, 0x80, 0x0c, 0x02, - 0x18, 0x80, 0x08, 0xc0, 0x00, 0x82, 0x18, 0x12, - 0x00, 0x52, 0x1a, 0x89, 0x29, 0x0a, 0xdb, 0x01, - 0x1c, 0x40, 0x39, 0x0a, 0x40, 0x58, 0x1a, 0xc0, - 0x40, 0x59, 0x1a, 0xc9, 0x47, 0x70, 0x00, 0x00, - 0x47, 0x78, 0x00, 0x00, 0xe1, 0x30, 0x00, 0x02, - 0x01, 0x31, 0x00, 0x03, 0x0a, 0x00, 0x00, 0x05, - 0xe1, 0x80, 0xc0, 0x02, 0xe3, 0x3c, 0x01, 0x02, - 0x01, 0x91, 0xc0, 0x03, 0x03, 0xa0, 0x00, 0x01, - 0x13, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe3, 0xa0, 0xc4, 0xff, 0xe3, 0x8c, 0xc6, 0x0e, - 0xe1, 0x5c, 0x00, 0x80, 0x83, 0xa0, 0x00, 0x01, - 0x81, 0x2f, 0xff, 0x1e, 0x03, 0x51, 0x00, 0x00, - 0x03, 0xa0, 0x00, 0x01, 0x13, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xb5, 0x04, 0xf0, 0x00, - 0xf8, 0x04, 0xbc, 0x08, 0x60, 0x1a, 0xbc, 0x08, - 0x47, 0x18, 0x47, 0x78, 0xe1, 0xb0, 0x00, 0x80, - 0x03, 0x31, 0x00, 0x00, 0x01, 0xa0, 0x00, 0x60, - 0x03, 0xa0, 0x20, 0x00, 0x01, 0x2f, 0xff, 0x1e, - 0xe1, 0xa0, 0x2a, 0xa0, 0xe1, 0xc0, 0x0a, 0x82, - 0xe1, 0xa0, 0x00, 0x60, 0xe3, 0x32, 0x00, 0x00, - 0xe2, 0x42, 0x2c, 0x03, 0xe2, 0x42, 0x20, 0xfe, - 0x0a, 0x00, 0x00, 0x06, 0xe3, 0x80, 0x04, 0x3f, - 0xe3, 0x80, 0x06, 0x0e, 0xe2, 0x22, 0x3b, 0x01, - 0xe3, 0x33, 0x00, 0x01, 0x11, 0x2f, 0xff, 0x1e, - 0xe3, 0xa0, 0x10, 0x01, 0xea, 0x00, 0x04, 0x70, - 0xe2, 0x00, 0xc1, 0x02, 0xe1, 0xa0, 0x06, 0x00, - 0xe2, 0x42, 0x20, 0x01, 0xe1, 0xb0, 0x00, 0x80, - 0x4a, 0x00, 0x00, 0x02, 0xe1, 0xb0, 0x10, 0x81, - 0x23, 0x80, 0x0a, 0x01, 0xea, 0xff, 0xff, 0xf9, - 0xe1, 0xa0, 0x04, 0xc0, 0xe3, 0xc0, 0x05, 0x01, - 0xe1, 0x8c, 0x01, 0x20, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, - 0xe2, 0x00, 0xc1, 0x02, 0xe1, 0xb0, 0x30, 0x80, - 0xe1, 0xb0, 0x3a, 0xa3, 0x0a, 0x00, 0x00, 0x0b, - 0xe2, 0x83, 0xe0, 0x01, 0xe3, 0x5e, 0x0b, 0x02, - 0xaa, 0x00, 0x00, 0x39, 0xe0, 0x93, 0x30, 0x02, - 0xda, 0x00, 0x00, 0x11, 0xe2, 0x83, 0xe0, 0x01, - 0xe3, 0x5e, 0x0b, 0x02, 0xaa, 0x00, 0x00, 0x37, - 0xe1, 0x83, 0x06, 0x00, 0xe1, 0x8c, 0x06, 0x60, - 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0x91, 0x30, 0x80, 0x01, 0xa0, 0x00, 0x0c, - 0x08, 0xbd, 0x40, 0x00, 0x01, 0x2f, 0xff, 0x1e, - 0xe1, 0xb0, 0x10, 0x81, 0xe0, 0xa0, 0x00, 0x00, - 0xe2, 0x42, 0x20, 0x01, 0xe3, 0x10, 0x06, 0x01, - 0x0a, 0xff, 0xff, 0xfa, 0xe3, 0xa0, 0x30, 0x01, - 0xea, 0xff, 0xff, 0xeb, 0xe1, 0xa0, 0x05, 0x80, - 0xe3, 0x80, 0x01, 0x02, 0xe3, 0x73, 0x00, 0x14, - 0xca, 0x00, 0x00, 0x05, 0xe3, 0x73, 0x00, 0x34, - 0xaa, 0x00, 0x00, 0x0d, 0xe1, 0xa0, 0x00, 0x0c, - 0xe3, 0xa0, 0x10, 0x00, 0xe8, 0xbd, 0x40, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xa0, 0x05, 0xa0, - 0xe2, 0x63, 0x30, 0x01, 0xe2, 0x63, 0x20, 0x20, - 0xe1, 0xa0, 0xe2, 0x11, 0xe1, 0xb0, 0xe0, 0x8e, - 0xe1, 0xa0, 0xe2, 0x10, 0xe1, 0x8e, 0x13, 0x31, - 0xe1, 0xa0, 0x03, 0x30, 0xe1, 0x80, 0x00, 0x0c, - 0xea, 0x00, 0x00, 0x0a, 0xe2, 0x93, 0x30, 0x20, - 0xda, 0x00, 0x00, 0x03, 0xe1, 0x80, 0x0a, 0xa1, - 0xe1, 0xb0, 0xe3, 0x11, 0xe2, 0x63, 0x30, 0x0c, - 0xea, 0x00, 0x00, 0x02, 0xe2, 0x83, 0x30, 0x15, - 0xe1, 0x91, 0xe3, 0x10, 0xe2, 0x63, 0x30, 0x21, - 0xe1, 0xa0, 0x13, 0x30, 0xe1, 0xa0, 0x00, 0x0c, - 0x03, 0x11, 0x00, 0x01, 0x98, 0xbd, 0x40, 0x00, - 0x91, 0x2f, 0xff, 0x1e, 0xe2, 0x91, 0x10, 0x01, - 0x22, 0x80, 0x00, 0x01, 0xe8, 0xbd, 0x40, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe8, 0xbd, 0x40, 0x00, - 0xe3, 0xa0, 0x10, 0x01, 0xea, 0x00, 0x04, 0x1e, - 0xe8, 0xbd, 0x40, 0x00, 0xe3, 0xa0, 0x10, 0x01, - 0xea, 0x00, 0x04, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0xb0, 0xc0, 0x80, 0x03, 0x31, 0x00, 0x00, - 0xe1, 0xa0, 0x35, 0x0c, 0xe1, 0xa0, 0x0a, 0x2c, - 0xe1, 0xa0, 0x25, 0x81, 0xe1, 0x83, 0x1a, 0xa1, - 0x12, 0x80, 0x0b, 0x1e, 0xe1, 0xa0, 0x00, 0x60, - 0x13, 0x81, 0x11, 0x02, 0xe1, 0xb0, 0xca, 0xcc, - 0x0a, 0x00, 0x00, 0x02, 0xe3, 0x7c, 0x00, 0x01, - 0x03, 0x80, 0x01, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0xe3, 0x11, 0x01, 0x02, 0x01, 0x2f, 0xff, 0x1e, - 0xe3, 0xd1, 0x11, 0x02, 0x0a, 0x00, 0x00, 0x15, - 0xe1, 0xb0, 0x38, 0x21, 0x01, 0xa0, 0x18, 0x01, - 0x03, 0xa0, 0xc0, 0x10, 0x13, 0xa0, 0xc0, 0x00, - 0xe1, 0xb0, 0x3c, 0x21, 0x01, 0xa0, 0x14, 0x01, - 0x02, 0x8c, 0xc0, 0x08, 0xe1, 0xb0, 0x3e, 0x21, - 0x01, 0xa0, 0x12, 0x01, 0x02, 0x8c, 0xc0, 0x04, - 0xe1, 0xb0, 0x3f, 0x21, 0x01, 0xa0, 0x11, 0x01, - 0x02, 0x8c, 0xc0, 0x02, 0xe1, 0xb0, 0x3f, 0xa1, - 0x01, 0xa0, 0x10, 0x81, 0x02, 0x8c, 0xc0, 0x01, - 0xe2, 0x6c, 0x30, 0x20, 0xe1, 0x81, 0x13, 0x32, - 0xe1, 0xa0, 0x2c, 0x12, 0xe0, 0x40, 0x00, 0x0c, - 0xe2, 0x80, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0xb0, 0x38, 0x22, 0x01, 0xa0, 0x28, 0x02, - 0x03, 0xa0, 0xc0, 0x10, 0x13, 0xa0, 0xc0, 0x00, - 0xe1, 0xb0, 0x3c, 0x22, 0x01, 0xa0, 0x24, 0x02, - 0x02, 0x8c, 0xc0, 0x08, 0xe1, 0xb0, 0x3e, 0x22, - 0x01, 0xa0, 0x22, 0x02, 0x02, 0x8c, 0xc0, 0x04, - 0xe1, 0xb0, 0x3f, 0x22, 0x01, 0xa0, 0x21, 0x02, - 0x02, 0x8c, 0xc0, 0x02, 0xe1, 0xb0, 0x3f, 0xa2, - 0x01, 0xa0, 0x20, 0x82, 0x02, 0x8c, 0xc0, 0x01, - 0xe1, 0xa0, 0x10, 0x02, 0xe3, 0xa0, 0x20, 0x00, - 0xe2, 0x40, 0x00, 0x1f, 0xe0, 0x40, 0x00, 0x0c, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe9, 0x2d, 0x4b, 0xf0, 0xe8, 0x93, 0x00, 0x38, - 0xe3, 0x10, 0x01, 0x01, 0x03, 0x13, 0x01, 0x01, - 0x1a, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x03, 0xe5, - 0xeb, 0x00, 0x05, 0x39, 0xe8, 0xbd, 0x4b, 0xf0, - 0xe1, 0x2f, 0xff, 0x1e, 0xe2, 0x4f, 0xe0, 0x14, - 0xe3, 0xa0, 0xb0, 0x00, 0xea, 0x00, 0x04, 0x7f, - 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x4b, 0xf0, - 0xe1, 0xa0, 0x30, 0x00, 0xe1, 0xa0, 0x40, 0x01, - 0xe1, 0xa0, 0x50, 0x02, 0xe3, 0x10, 0x01, 0x01, - 0x1a, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x03, 0xd7, - 0xeb, 0x00, 0x05, 0x2b, 0xe8, 0xbd, 0x4b, 0xf0, - 0xe1, 0x2f, 0xff, 0x1e, 0xe2, 0x4f, 0xe0, 0x14, - 0xe3, 0xa0, 0xb0, 0x00, 0xea, 0x00, 0x04, 0x71, - 0x47, 0x78, 0x00, 0x00, 0xe1, 0xa0, 0x38, 0x80, - 0xe1, 0xa0, 0x38, 0xa3, 0xe1, 0xc0, 0x00, 0x03, - 0xe1, 0xd1, 0xc0, 0x80, 0x5a, 0x00, 0x00, 0x0c, - 0xe2, 0x53, 0x3b, 0x0f, 0x4a, 0x00, 0x00, 0x13, - 0x12, 0x83, 0xc0, 0x01, 0x13, 0x5c, 0x0b, 0x02, - 0xaa, 0x00, 0x00, 0x0d, 0xe1, 0xb0, 0xc5, 0xa2, - 0x2a, 0x00, 0x00, 0x58, 0xe1, 0x80, 0x0a, 0x03, - 0xe3, 0xc1, 0x11, 0x02, 0xe1, 0x80, 0x05, 0xa1, - 0xe1, 0x8c, 0x1a, 0x81, 0xe3, 0xa0, 0x30, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x10, 0x01, 0x01, - 0x1a, 0x00, 0x00, 0x40, 0xe2, 0x00, 0x01, 0x02, - 0xe3, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x30, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x33, 0x00, 0x00, - 0x13, 0xa0, 0x33, 0x19, 0x11, 0x2f, 0xff, 0x1e, - 0xe2, 0x93, 0x30, 0x34, 0x0a, 0x00, 0x00, 0x31, - 0x42, 0x00, 0x01, 0x02, 0x43, 0xa0, 0x10, 0x00, - 0x43, 0xa0, 0x30, 0x00, 0x41, 0x2f, 0xff, 0x1e, - 0xe2, 0x53, 0x30, 0x20, 0x0a, 0x00, 0x00, 0x13, - 0xba, 0x00, 0x00, 0x1a, 0xe1, 0xb0, 0xc3, 0x12, - 0x4a, 0x00, 0x00, 0x05, 0xe2, 0x63, 0xc0, 0x20, - 0xe1, 0x80, 0x0c, 0x31, 0xe1, 0xa0, 0x2c, 0x32, - 0xe1, 0x82, 0x13, 0x11, 0xe3, 0xa0, 0x30, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x96, 0xc0, 0x8c, - 0xe2, 0x63, 0xc0, 0x20, 0xe1, 0x80, 0x0c, 0x31, - 0xe1, 0xa0, 0x2c, 0x32, 0xe1, 0x82, 0x13, 0x11, - 0xe3, 0xa0, 0x30, 0x00, 0x03, 0x11, 0x00, 0x01, - 0x01, 0x2f, 0xff, 0x1e, 0xe2, 0x91, 0x10, 0x01, - 0x22, 0x80, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0xe3, 0xa0, 0x30, 0x00, 0xe3, 0x32, 0x01, 0x02, - 0x41, 0x2f, 0xff, 0x1e, 0x03, 0x11, 0x00, 0x01, - 0x01, 0x2f, 0xff, 0x1e, 0xe2, 0x91, 0x10, 0x01, - 0x22, 0x80, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0xe2, 0x83, 0x30, 0x20, 0xe1, 0xb0, 0xc3, 0x11, - 0x4a, 0x00, 0x00, 0x04, 0xe2, 0x63, 0xc0, 0x20, - 0xe1, 0xa0, 0x1c, 0x31, 0xe2, 0x00, 0x01, 0x02, - 0xe3, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe3, 0x3c, 0x01, 0x02, 0x01, 0x92, 0xc0, 0x06, - 0xe2, 0x63, 0xc0, 0x20, 0xe1, 0xa0, 0x1c, 0x31, - 0x03, 0x11, 0x00, 0x01, 0x12, 0x81, 0x10, 0x01, - 0xe3, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe3, 0x31, 0x01, 0x02, 0x03, 0x32, 0x00, 0x00, - 0x03, 0xa0, 0x10, 0x00, 0x13, 0xa0, 0x10, 0x01, - 0xe3, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe3, 0x10, 0x02, 0x02, 0x1a, 0x00, 0x00, 0x0b, - 0xe3, 0xa0, 0x30, 0x00, 0xe3, 0x31, 0x00, 0x00, - 0x11, 0xb0, 0x10, 0x81, 0x43, 0xe0, 0x00, 0x00, - 0x41, 0x2f, 0xff, 0x1e, 0x03, 0x32, 0x00, 0x00, - 0x13, 0xa0, 0x34, 0x61, 0x11, 0x2f, 0xff, 0x1e, - 0xe2, 0x00, 0x01, 0x02, 0xe3, 0x80, 0x02, 0x07, - 0xe3, 0x80, 0x06, 0xff, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe3, 0xc1, 0x11, 0x02, 0xe1, 0xa0, 0xcb, 0x02, - 0xe1, 0x9c, 0xc0, 0x06, 0xe2, 0x00, 0xc1, 0x02, - 0xe1, 0xa0, 0x0a, 0x03, 0xe1, 0x80, 0x05, 0xa1, - 0xe1, 0xa0, 0x1a, 0x81, 0xe1, 0x81, 0x15, 0xa2, - 0xe3, 0xa0, 0x30, 0x00, 0x0a, 0x00, 0x00, 0x06, - 0xe2, 0x91, 0x10, 0x01, 0x22, 0x80, 0x00, 0x01, - 0xe2, 0x90, 0x26, 0x01, 0xe1, 0x80, 0x00, 0x0c, - 0x51, 0x2f, 0xff, 0x1e, 0xe3, 0xa0, 0x33, 0x19, - 0xe1, 0x2f, 0xff, 0x1e, 0x03, 0x11, 0x00, 0x01, - 0x01, 0x80, 0x00, 0x0c, 0x01, 0x2f, 0xff, 0x1e, - 0xe2, 0x91, 0x10, 0x01, 0x22, 0x80, 0x00, 0x01, - 0xe2, 0x90, 0x26, 0x01, 0xe1, 0x80, 0x00, 0x0c, - 0x51, 0x2f, 0xff, 0x1e, 0xe3, 0xa0, 0x33, 0x19, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe9, 0x2d, 0x4b, 0xf0, 0xe1, 0xb0, 0xc0, 0x82, - 0x03, 0x33, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x3c, - 0xe1, 0xa0, 0x85, 0x0c, 0xe1, 0xa0, 0x2a, 0x2c, - 0xe1, 0xa0, 0x55, 0x83, 0xe1, 0x88, 0x4a, 0xa3, - 0x12, 0x82, 0x2b, 0x1e, 0xe1, 0xa0, 0x30, 0x62, - 0x13, 0x84, 0x41, 0x02, 0xe1, 0xb0, 0xca, 0xcc, - 0x02, 0x8f, 0xe0, 0x08, 0x0a, 0x00, 0x04, 0xf8, - 0xe3, 0x7c, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x16, - 0xe1, 0xb0, 0xc0, 0x80, 0x03, 0x31, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x3c, 0xe1, 0xa0, 0x85, 0x0c, - 0xe1, 0xa0, 0x0a, 0x2c, 0xe1, 0xa0, 0x25, 0x81, - 0xe1, 0x88, 0x1a, 0xa1, 0x12, 0x80, 0x0b, 0x1e, - 0xe1, 0xa0, 0x00, 0x60, 0x13, 0x81, 0x11, 0x02, - 0xe1, 0xb0, 0xca, 0xcc, 0x02, 0x8f, 0xe0, 0x08, - 0x0a, 0x00, 0x04, 0xb9, 0xe3, 0x7c, 0x00, 0x01, - 0x0a, 0x00, 0x00, 0x16, 0xe3, 0xa0, 0xb0, 0x02, - 0xeb, 0x00, 0x05, 0x15, 0xeb, 0xff, 0xff, 0x5f, - 0xe3, 0x13, 0x02, 0x02, 0x08, 0xbd, 0x4b, 0xf0, - 0x01, 0x2f, 0xff, 0x1e, 0xe3, 0x83, 0x35, 0x02, - 0xea, 0x00, 0x04, 0x0f, 0xe3, 0x83, 0x31, 0x01, - 0xe1, 0xb0, 0xc0, 0x80, 0x03, 0x31, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x0e, 0xe1, 0xa0, 0x85, 0x0c, - 0xe1, 0xa0, 0x0a, 0x2c, 0xe1, 0xa0, 0x25, 0x81, - 0xe1, 0x88, 0x1a, 0xa1, 0x12, 0x80, 0x0b, 0x1e, - 0xe1, 0xa0, 0x00, 0x60, 0x13, 0x81, 0x11, 0x02, - 0xe1, 0xb0, 0xca, 0xcc, 0x02, 0x8f, 0xe0, 0x08, - 0x0a, 0x00, 0x04, 0xa1, 0xe3, 0x7c, 0x00, 0x01, - 0x03, 0x80, 0x01, 0x01, 0xe2, 0x4f, 0xe0, 0x60, - 0xe3, 0xa0, 0xb0, 0x02, 0xea, 0x00, 0x06, 0x2b, - 0xe1, 0x95, 0xc0, 0x84, 0x0a, 0x00, 0x00, 0x13, - 0xe1, 0xb0, 0x40, 0x84, 0x5a, 0x00, 0x00, 0x0d, - 0xe3, 0xe0, 0x00, 0x00, 0xe8, 0xbd, 0x4b, 0xf0, - 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xb0, 0xc0, 0x80, - 0x03, 0x31, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x07, - 0xe1, 0xf0, 0xca, 0x4c, 0x08, 0xbd, 0x4b, 0xf0, - 0x01, 0x2f, 0xff, 0x1e, 0xe3, 0x3c, 0x00, 0x01, - 0x1a, 0x00, 0x00, 0x04, 0xe1, 0x91, 0xc6, 0x00, - 0x08, 0xbd, 0x4b, 0xf0, 0x01, 0x2f, 0xff, 0x1e, - 0xe3, 0xa0, 0x35, 0x06, 0xea, 0x00, 0x03, 0xe8, - 0xe3, 0xa0, 0x35, 0x0a, 0xea, 0x00, 0x03, 0xe6, - 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, - 0xe8, 0xbd, 0x4b, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x4b, 0xf0, - 0xe1, 0xb0, 0xc0, 0x82, 0x03, 0x33, 0x00, 0x00, - 0xe1, 0xa0, 0x85, 0x0c, 0xe1, 0xa0, 0x2a, 0x2c, - 0xe1, 0xa0, 0x55, 0x83, 0xe1, 0x88, 0x4a, 0xa3, - 0x12, 0x82, 0x2b, 0x1e, 0xe1, 0xa0, 0x30, 0x62, - 0x13, 0x84, 0x41, 0x02, 0xe1, 0xb0, 0xca, 0xcc, - 0x02, 0x8f, 0xe0, 0x08, 0x0a, 0x00, 0x04, 0xa4, - 0xe3, 0x7c, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x14, - 0xe1, 0xb0, 0xc0, 0x80, 0x03, 0x31, 0x00, 0x00, - 0xe1, 0xa0, 0x85, 0x0c, 0xe1, 0xa0, 0x0a, 0x2c, - 0xe1, 0xa0, 0x25, 0x81, 0xe1, 0x88, 0x1a, 0xa1, - 0x12, 0x80, 0x0b, 0x1e, 0xe1, 0xa0, 0x00, 0x60, - 0x13, 0x81, 0x11, 0x02, 0xe1, 0xb0, 0xca, 0xcc, - 0x02, 0x8f, 0xe0, 0x08, 0x0a, 0x00, 0x04, 0x66, - 0xe3, 0x7c, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x14, - 0xeb, 0x00, 0x02, 0xdc, 0xeb, 0xff, 0xff, 0x0d, - 0xe3, 0x13, 0x02, 0x02, 0x08, 0xbd, 0x4b, 0xf0, - 0x01, 0x2f, 0xff, 0x1e, 0xe3, 0x83, 0x35, 0x02, - 0xea, 0x00, 0x03, 0xbd, 0xe3, 0x83, 0x31, 0x01, - 0xe1, 0xb0, 0xc0, 0x80, 0x03, 0x31, 0x00, 0x00, - 0xe1, 0xa0, 0x85, 0x0c, 0xe1, 0xa0, 0x0a, 0x2c, - 0xe1, 0xa0, 0x25, 0x81, 0xe1, 0x88, 0x1a, 0xa1, - 0x12, 0x80, 0x0b, 0x1e, 0xe1, 0xa0, 0x00, 0x60, - 0x13, 0x81, 0x11, 0x02, 0xe1, 0xb0, 0xca, 0xcc, - 0x02, 0x8f, 0xe0, 0x08, 0x0a, 0x00, 0x04, 0x50, - 0xe3, 0x7c, 0x00, 0x01, 0x03, 0x80, 0x01, 0x01, - 0xe2, 0x4f, 0xe0, 0x5c, 0xe3, 0xa0, 0xb0, 0x02, - 0xea, 0x00, 0x03, 0x64, 0x47, 0x78, 0x00, 0x00, - 0xe3, 0xa0, 0xc4, 0xff, 0xe3, 0x8c, 0xc6, 0x0e, - 0xe1, 0x5c, 0x00, 0x82, 0x9a, 0x00, 0x00, 0x0a, - 0xe1, 0xb0, 0x00, 0x80, 0x03, 0x31, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x0a, 0x3a, 0x00, 0x00, 0x12, - 0xe1, 0x50, 0x00, 0x0c, 0x03, 0x51, 0x00, 0x00, - 0x8a, 0xff, 0xfc, 0x60, 0xe1, 0xb0, 0x20, 0x82, - 0x8a, 0x00, 0x00, 0x18, 0xe3, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x03, 0x53, 0x00, 0x00, - 0x0a, 0xff, 0xff, 0xf2, 0xea, 0xff, 0xfc, 0x5d, - 0xe1, 0x50, 0x00, 0x0c, 0x03, 0x51, 0x00, 0x00, - 0x8a, 0xff, 0xfc, 0x56, 0xe1, 0xb0, 0x20, 0x82, - 0x33, 0xa0, 0x00, 0x00, 0x23, 0xa0, 0x00, 0x01, - 0x03, 0x33, 0x00, 0x00, 0x03, 0xa0, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x0c, - 0x03, 0x51, 0x00, 0x00, 0x8a, 0xff, 0xfc, 0x4d, - 0xe1, 0xb0, 0x20, 0x82, 0x23, 0xa0, 0x00, 0x01, - 0x21, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x02, - 0x01, 0x51, 0x00, 0x03, 0x33, 0xa0, 0x00, 0x00, - 0x23, 0xa0, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0x50, 0x00, 0x02, 0x01, 0x51, 0x00, 0x03, - 0x83, 0xa0, 0x00, 0x00, 0x93, 0xa0, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0xb0, 0x20, 0x80, 0xe1, 0xa0, 0x2a, 0xa2, - 0xe1, 0xa0, 0x05, 0x80, 0xe1, 0x80, 0x0a, 0xa1, - 0xe3, 0x80, 0x01, 0x02, 0xe2, 0x42, 0x2c, 0x03, - 0x2a, 0x00, 0x00, 0x08, 0xe2, 0x52, 0x20, 0xff, - 0x4a, 0x00, 0x00, 0x04, 0xe2, 0x72, 0x20, 0x1f, - 0xc1, 0xa0, 0x02, 0x30, 0xc1, 0x2f, 0xff, 0x1e, - 0xe3, 0xc0, 0x01, 0x02, 0xea, 0x00, 0x00, 0x09, - 0xe3, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe2, 0x52, 0x20, 0xff, 0x4a, 0xff, 0xff, 0xfb, - 0xe2, 0x72, 0x20, 0x1f, 0xc1, 0xa0, 0x02, 0x30, - 0xc2, 0x60, 0x00, 0x00, 0xc1, 0x2f, 0xff, 0x1e, - 0x01, 0x91, 0xc0, 0x80, 0x01, 0x2f, 0xff, 0x1e, - 0xe3, 0xa0, 0x36, 0x12, 0xe2, 0x82, 0x2e, 0x3e, - 0xe3, 0x72, 0x00, 0x01, 0x1a, 0x00, 0x03, 0x63, - 0xe1, 0x91, 0xc0, 0x80, 0x13, 0xa0, 0x37, 0x42, - 0xea, 0x00, 0x03, 0x60, 0x47, 0x78, 0x00, 0x00, - 0xe9, 0x2d, 0x4b, 0xf0, 0xe2, 0x22, 0x21, 0x02, - 0xea, 0x00, 0x00, 0x01, 0x47, 0x78, 0x00, 0x00, - 0xe9, 0x2d, 0x4b, 0xf0, 0xe1, 0xb0, 0xc0, 0x82, - 0x03, 0x33, 0x00, 0x00, 0xe1, 0xa0, 0x85, 0x0c, - 0xe1, 0xa0, 0x2a, 0x2c, 0xe1, 0xa0, 0x55, 0x83, - 0xe1, 0x88, 0x4a, 0xa3, 0x12, 0x82, 0x2b, 0x1e, - 0xe1, 0xa0, 0x30, 0x62, 0x13, 0x84, 0x41, 0x02, - 0xe1, 0xb0, 0xca, 0xcc, 0x02, 0x8f, 0xe0, 0x08, - 0x0a, 0x00, 0x04, 0x1d, 0xe3, 0x7c, 0x00, 0x01, - 0x0a, 0x00, 0x00, 0x14, 0xe1, 0xb0, 0xc0, 0x80, - 0x03, 0x31, 0x00, 0x00, 0xe1, 0xa0, 0x85, 0x0c, - 0xe1, 0xa0, 0x0a, 0x2c, 0xe1, 0xa0, 0x25, 0x81, - 0xe1, 0x88, 0x1a, 0xa1, 0x12, 0x80, 0x0b, 0x1e, - 0xe1, 0xa0, 0x00, 0x60, 0x13, 0x81, 0x11, 0x02, - 0xe1, 0xb0, 0xca, 0xcc, 0x02, 0x8f, 0xe0, 0x08, - 0x0a, 0x00, 0x03, 0xdf, 0xe3, 0x7c, 0x00, 0x01, - 0x0a, 0x00, 0x00, 0x14, 0xeb, 0x00, 0x05, 0xbb, - 0xeb, 0xff, 0xfe, 0x86, 0xe3, 0x13, 0x02, 0x02, - 0x08, 0xbd, 0x4b, 0xf0, 0x01, 0x2f, 0xff, 0x1e, - 0xe3, 0x83, 0x35, 0x02, 0xea, 0x00, 0x03, 0x36, - 0xe3, 0x83, 0x31, 0x01, 0xe1, 0xb0, 0xc0, 0x80, - 0x03, 0x31, 0x00, 0x00, 0xe1, 0xa0, 0x85, 0x0c, - 0xe1, 0xa0, 0x0a, 0x2c, 0xe1, 0xa0, 0x25, 0x81, - 0xe1, 0x88, 0x1a, 0xa1, 0x12, 0x80, 0x0b, 0x1e, - 0xe1, 0xa0, 0x00, 0x60, 0x13, 0x81, 0x11, 0x02, - 0xe1, 0xb0, 0xca, 0xcc, 0x02, 0x8f, 0xe0, 0x08, - 0x0a, 0x00, 0x03, 0xc9, 0xe3, 0x7c, 0x00, 0x01, - 0x03, 0x80, 0x01, 0x01, 0xe2, 0x4f, 0xe0, 0x5c, - 0xe3, 0xa0, 0xb0, 0x02, 0xea, 0x00, 0x05, 0xff, - 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x4b, 0xf0, - 0xe2, 0x20, 0x01, 0x02, 0xea, 0xff, 0xff, 0xc6, - 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0xc4, 0xff, - 0xe3, 0x8c, 0xc6, 0x0e, 0xe1, 0x5c, 0x00, 0x82, - 0x9a, 0x00, 0x00, 0x0a, 0xe1, 0xb0, 0x00, 0x80, - 0x03, 0x31, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, - 0x3a, 0x00, 0x00, 0x11, 0xe1, 0x50, 0x00, 0x0c, - 0x03, 0x51, 0x00, 0x00, 0x8a, 0xff, 0xfb, 0xd5, - 0xe1, 0xb0, 0x20, 0x82, 0x8a, 0x00, 0x00, 0x17, - 0xe3, 0xa0, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0x03, 0x53, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xf2, - 0xea, 0xff, 0xfb, 0xd2, 0xe1, 0x50, 0x00, 0x0c, - 0x03, 0x51, 0x00, 0x00, 0x8a, 0xff, 0xfb, 0xcb, - 0xe1, 0xb0, 0x20, 0x82, 0x03, 0x33, 0x00, 0x00, - 0x83, 0xa0, 0x00, 0x00, 0x93, 0xa0, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x0c, - 0x03, 0x51, 0x00, 0x00, 0x8a, 0xff, 0xfb, 0xc3, - 0xe1, 0xb0, 0x20, 0x82, 0x23, 0xa0, 0x00, 0x00, - 0x21, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x02, - 0x01, 0x51, 0x00, 0x03, 0x93, 0xa0, 0x00, 0x01, - 0x83, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0x50, 0x00, 0x02, 0x01, 0x51, 0x00, 0x03, - 0x33, 0xa0, 0x00, 0x00, 0x23, 0xa0, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x1e, 0x42, 0x99, 0xd1, 0x03, - 0x42, 0x90, 0xd1, 0x01, 0x20, 0x00, 0x47, 0x70, - 0x20, 0x01, 0x47, 0x70, 0xb5, 0x70, 0x1c, 0x04, - 0x1c, 0x0d, 0x1c, 0x16, 0x46, 0x9e, 0x47, 0x78, - 0xe3, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x10, 0x00, - 0xe1, 0xa0, 0x30, 0x05, 0xe1, 0xa0, 0x20, 0x04, - 0xe3, 0x3e, 0x00, 0x00, 0x03, 0x36, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x14, 0xe3, 0xb0, 0xc0, 0x00, - 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xbe, 0xe0, 0x0e, - 0x2a, 0x00, 0x00, 0x04, 0xe1, 0x5e, 0x00, 0x03, - 0x01, 0x56, 0x00, 0x02, 0x92, 0x8c, 0xc0, 0x01, - 0x9a, 0xff, 0xff, 0xf8, 0xe2, 0x9c, 0xc0, 0x00, - 0xe1, 0xb0, 0xe0, 0x6e, 0xe1, 0xa0, 0x60, 0x66, - 0xe0, 0x52, 0x40, 0x06, 0xe0, 0xd3, 0x50, 0x0e, - 0x21, 0xa0, 0x30, 0x05, 0x21, 0xa0, 0x20, 0x04, - 0xe0, 0xb0, 0x00, 0x00, 0xe0, 0xa1, 0x10, 0x01, - 0xe1, 0xb0, 0xe0, 0xae, 0xe1, 0xa0, 0x60, 0x66, - 0xe2, 0x5c, 0xc0, 0x01, 0xaa, 0xff, 0xff, 0xf5, - 0xe8, 0xbd, 0x40, 0x70, 0xe1, 0x2f, 0xff, 0x1e, - 0x18, 0x80, 0x41, 0x59, 0x47, 0x70, 0x00, 0x00, - 0x1c, 0x01, 0x08, 0x40, 0x08, 0x42, 0x18, 0x80, - 0x09, 0x02, 0x18, 0x80, 0x0a, 0x02, 0x18, 0x80, - 0x0c, 0x02, 0x18, 0x80, 0x08, 0xc0, 0x00, 0x82, - 0x18, 0x12, 0x00, 0x52, 0x1a, 0x89, 0x29, 0x0a, - 0xdb, 0x01, 0x1c, 0x40, 0x39, 0x0a, 0x47, 0x70, - 0xb4, 0x80, 0x20, 0x03, 0x43, 0xc0, 0x23, 0x00, - 0x49, 0x07, 0x54, 0x0b, 0x30, 0x01, 0xd4, 0xfc, - 0x20, 0x00, 0x4a, 0x06, 0x5c, 0x17, 0x54, 0x0f, - 0x18, 0x0f, 0x37, 0x80, 0x70, 0x3b, 0x30, 0x01, - 0x28, 0x80, 0xd3, 0xf7, 0xbc, 0x80, 0x47, 0x70, - 0x2e, 0x08, 0x22, 0x44, 0x2e, 0x03, 0xa9, 0x2c, - 0x17, 0xc1, 0x47, 0x70, 0x42, 0x99, 0xdb, 0x04, - 0xdc, 0x01, 0x42, 0x90, 0xd3, 0x01, 0x20, 0x00, - 0x47, 0x70, 0x20, 0x01, 0x47, 0x70, 0x00, 0x00, - 0x1c, 0x0b, 0x21, 0x00, 0x42, 0x40, 0x41, 0x99, - 0x47, 0x70, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe3, 0xa0, 0xb0, 0x00, 0xe1, 0xa0, 0x20, 0x01, - 0xe8, 0x80, 0x00, 0x0e, 0xe5, 0x9f, 0xc0, 0x38, - 0xe5, 0x8c, 0xd0, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0x20, 0x28, - 0xe5, 0x92, 0x20, 0x00, 0xe5, 0x91, 0x40, 0x2c, - 0xe5, 0x91, 0xc0, 0x34, 0xe1, 0x5c, 0x00, 0x02, - 0x23, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0xc0, 0x08, - 0xe5, 0x9c, 0xd0, 0x00, 0xe3, 0xa0, 0xb0, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x2e, 0x08, 0x23, 0x44, - 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, - 0xe5, 0x9f, 0xc0, 0xe4, 0xe5, 0x9c, 0x00, 0x00, - 0xe3, 0x50, 0x00, 0x00, 0xe3, 0xa0, 0x00, 0x04, - 0x15, 0x8c, 0x00, 0x04, 0x0b, 0x00, 0x00, 0x01, - 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe5, 0x9f, 0xc0, 0xcc, 0xea, 0xff, 0xfb, 0x87, - 0xe3, 0xa0, 0x10, 0x0a, 0xe3, 0x50, 0x01, 0x02, - 0x13, 0x50, 0x01, 0x06, 0x13, 0x50, 0x01, 0x16, - 0x03, 0xa0, 0x10, 0x03, 0xe3, 0x50, 0x01, 0x0a, - 0x13, 0x50, 0x01, 0x0e, 0x03, 0xa0, 0x10, 0x05, - 0xe5, 0x9f, 0x20, 0xa8, 0xe1, 0x50, 0x00, 0x02, - 0xe2, 0x82, 0x20, 0xff, 0x21, 0x52, 0x00, 0x00, - 0x23, 0xa0, 0x10, 0x02, 0xe3, 0x50, 0x01, 0x82, - 0x03, 0xa0, 0x10, 0x02, 0xe3, 0x50, 0x01, 0x86, - 0x03, 0xa0, 0x10, 0x07, 0xe5, 0x9f, 0x20, 0x88, - 0xe0, 0x50, 0x20, 0x02, 0x13, 0x52, 0x00, 0x01, - 0x03, 0xa0, 0x10, 0x05, 0xe1, 0xa0, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe9, 0x2d, 0x40, 0x02, 0xe1, 0xa0, 0x30, 0x00, - 0xeb, 0xff, 0xff, 0xe4, 0xe8, 0xbd, 0x40, 0x02, - 0xe5, 0x9f, 0xc0, 0x50, 0xe3, 0xa0, 0x20, 0x01, - 0xe5, 0xcc, 0x20, 0x00, 0xe9, 0x2d, 0x00, 0x0a, - 0xeb, 0xff, 0xff, 0xdc, 0xea, 0x00, 0x00, 0x09, - 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0xc0, 0x30, - 0xe3, 0xa0, 0x10, 0x00, 0xe5, 0x8c, 0x10, 0x00, - 0xe5, 0x9c, 0x00, 0x04, 0xe3, 0x50, 0x00, 0x00, - 0x01, 0x2f, 0xff, 0x1e, 0xe5, 0x8c, 0x10, 0x04, - 0xea, 0xff, 0xff, 0xd2, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0xa0, 0xc0, 0x0d, 0xe9, 0x2d, 0xd9, 0xf0, - 0xe2, 0x4c, 0xb0, 0x04, 0xe3, 0xa0, 0x10, 0x01, - 0xea, 0xff, 0xfb, 0xa4, 0x2e, 0x08, 0x21, 0x34, - 0x2e, 0x08, 0x21, 0x46, 0x2e, 0x02, 0x24, 0x85, - 0x80, 0x00, 0x02, 0x00, 0x80, 0x80, 0x0e, 0xa0, - 0xb5, 0xff, 0xa6, 0x23, 0xa5, 0x22, 0xa4, 0x22, - 0x68, 0x5a, 0x68, 0x1f, 0x4b, 0x21, 0x60, 0x5a, - 0x23, 0x00, 0x4a, 0x21, 0x70, 0x13, 0x70, 0x53, - 0x70, 0x93, 0x4a, 0x20, 0x2a, 0x00, 0xd0, 0x02, - 0x9a, 0x02, 0xf7, 0xff, 0xff, 0xfe, 0x48, 0x1e, - 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xfe, - 0x48, 0x1c, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, - 0xff, 0xfe, 0x48, 0x1b, 0x28, 0x00, 0xd0, 0x01, - 0xf7, 0xff, 0xff, 0x06, 0x48, 0x19, 0x28, 0x00, - 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xfe, 0x48, 0x18, - 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x01, 0xfb, 0xf8, - 0x48, 0x16, 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x01, - 0xfd, 0x69, 0x48, 0x15, 0x28, 0x00, 0xd0, 0x01, - 0xf7, 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xff, 0xa0, - 0x48, 0x12, 0x28, 0x00, 0xd0, 0x04, 0x1c, 0x30, - 0x1c, 0x29, 0x1c, 0x22, 0xf0, 0x01, 0xff, 0x6e, - 0x2f, 0x00, 0xd0, 0x01, 0xf7, 0xfd, 0xfa, 0x5a, - 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x3a, 0x74, 0x74, 0x00, 0x2e, 0x08, 0x23, 0x48, - 0x2e, 0x08, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x0b, 0x1d, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x25, 0x15, 0x2e, 0x02, 0x28, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x2c, 0x29, - 0xb5, 0x90, 0x28, 0x00, 0xd0, 0x04, 0x48, 0x12, - 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xfe, - 0x4f, 0x10, 0x68, 0x78, 0x28, 0x00, 0xd0, 0x03, - 0xf7, 0xfd, 0xfa, 0x22, 0x20, 0x00, 0x60, 0x78, - 0x4f, 0x0d, 0x78, 0x78, 0x24, 0x01, 0x28, 0x00, - 0xd1, 0x05, 0x70, 0x7c, 0x48, 0x0b, 0x28, 0x00, - 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xfe, 0x78, 0xb8, - 0x28, 0x00, 0xd1, 0x05, 0x70, 0xbc, 0x48, 0x08, - 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x01, 0xff, 0x7a, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x23, 0x48, - 0x2e, 0x08, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x2c, 0xc9, 0xb5, 0x90, 0x1c, 0x0c, - 0x21, 0x01, 0x1c, 0x17, 0xf0, 0x01, 0xfb, 0x9c, - 0x21, 0x00, 0x1c, 0x20, 0xf0, 0x01, 0xfb, 0x98, - 0x21, 0x02, 0x1c, 0x38, 0xf0, 0x01, 0xfb, 0x94, - 0x20, 0x01, 0xf7, 0xfe, 0xfe, 0x95, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf1, 0x20, 0x00, - 0xb0, 0x89, 0x90, 0x06, 0x26, 0x00, 0x90, 0x05, - 0x20, 0x01, 0x90, 0x04, 0x27, 0x00, 0x20, 0x00, - 0x90, 0x03, 0x90, 0x02, 0x25, 0x00, 0x90, 0x01, - 0xf0, 0x01, 0xfc, 0xc2, 0x1c, 0x04, 0x78, 0x00, - 0x28, 0x00, 0xd0, 0x17, 0x49, 0xe3, 0x5d, 0xe0, - 0x5c, 0x08, 0x08, 0x40, 0xd3, 0x06, 0x37, 0x01, - 0x5d, 0xe0, 0x5c, 0x08, 0x08, 0x40, 0xd2, 0xfa, - 0xe0, 0x00, 0x37, 0x01, 0x5d, 0xe0, 0x5c, 0x0a, - 0x08, 0x52, 0xd2, 0x01, 0x28, 0x00, 0xd1, 0xf8, - 0x98, 0x04, 0x30, 0x01, 0x90, 0x04, 0x5d, 0xe0, - 0x28, 0x00, 0xd1, 0xe8, 0x98, 0x04, 0x00, 0x80, - 0xf0, 0x01, 0xfc, 0xde, 0x4b, 0xd6, 0x93, 0x08, - 0x60, 0x18, 0x1c, 0x78, 0xf0, 0x01, 0xfc, 0xd8, - 0x9b, 0x08, 0x60, 0x58, 0x48, 0xd3, 0x28, 0x00, - 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xfe, 0x21, 0x00, - 0x20, 0x00, 0x90, 0x04, 0x48, 0xd0, 0x90, 0x07, - 0x78, 0x27, 0x34, 0x01, 0x2e, 0x00, 0xd1, 0x58, - 0x2f, 0x22, 0xd0, 0x01, 0x2f, 0x27, 0xd1, 0x02, - 0x97, 0x05, 0x1c, 0x3e, 0xe0, 0x93, 0x98, 0x06, - 0x42, 0x81, 0xd1, 0x4e, 0x98, 0x03, 0x28, 0x00, - 0xd1, 0x4b, 0x25, 0x00, 0x43, 0xed, 0x1c, 0x2a, - 0x95, 0x01, 0x22, 0x00, 0xab, 0x00, 0x70, 0x1a, - 0x70, 0x5a, 0x1e, 0x60, 0x78, 0x02, 0x2a, 0x30, - 0xdb, 0x04, 0x2a, 0x39, 0xdc, 0x02, 0x30, 0x01, - 0x1f, 0xd5, 0x3d, 0x29, 0x78, 0x02, 0x2a, 0x3e, - 0xd0, 0x01, 0x2a, 0x3c, 0xd1, 0x35, 0x2a, 0x3e, - 0xd1, 0x0e, 0x22, 0x77, 0xab, 0x00, 0x70, 0x1a, - 0x2d, 0x00, 0xd0, 0x63, 0x2d, 0x02, 0xdc, 0x62, - 0x78, 0x42, 0x30, 0x01, 0x2a, 0x3e, 0xd1, 0x13, - 0x22, 0x61, 0x70, 0x1a, 0x30, 0x01, 0xe0, 0x0f, - 0x30, 0x01, 0x1c, 0x02, 0xe0, 0x02, 0x2b, 0x3e, - 0xd0, 0x56, 0x32, 0x01, 0x78, 0x13, 0x2b, 0x00, - 0xd0, 0x01, 0x2b, 0x20, 0xd1, 0xf7, 0x2d, 0x00, - 0xdc, 0x4d, 0x22, 0x72, 0xab, 0x00, 0x70, 0x1a, - 0x78, 0x02, 0x2a, 0x26, 0xd1, 0x24, 0x23, 0x01, - 0x42, 0xdd, 0xd0, 0x19, 0x2d, 0x00, 0xdd, 0x5e, - 0x78, 0x42, 0x30, 0x01, 0x2a, 0x30, 0xdb, 0x5b, - 0x2a, 0x32, 0xdc, 0x3c, 0x30, 0x01, 0x1c, 0x2b, - 0xd5, 0x04, 0x07, 0xdb, 0x0f, 0xdb, 0x42, 0x5b, - 0xe0, 0x02, 0xe0, 0x42, 0x07, 0xdb, 0x0f, 0xdb, - 0x33, 0x31, 0x42, 0x9a, 0xd1, 0x63, 0x22, 0x00, - 0xab, 0x00, 0x70, 0x1a, 0x95, 0x01, 0xe0, 0x11, - 0x22, 0x02, 0x92, 0x01, 0xaa, 0x00, 0x78, 0x12, - 0x30, 0x01, 0x2a, 0x72, 0xd0, 0x09, 0xe0, 0x06, - 0x23, 0x01, 0x42, 0xdd, 0xd1, 0x06, 0xaa, 0x00, - 0x78, 0x12, 0x2a, 0x72, 0xd0, 0x01, 0x25, 0x01, - 0xe0, 0x00, 0x25, 0x00, 0xaa, 0x00, 0x78, 0x12, - 0x2a, 0x00, 0xd0, 0x16, 0x22, 0x01, 0x92, 0x03, - 0x4a, 0x8c, 0x78, 0x03, 0x5c, 0xd3, 0x08, 0x5b, - 0xd3, 0x04, 0x78, 0x43, 0x5c, 0xd3, 0x30, 0x01, - 0x08, 0x5b, 0xd2, 0xfa, 0x78, 0x02, 0x2a, 0x22, - 0xd0, 0x01, 0x2a, 0x27, 0xd1, 0x0c, 0x30, 0x01, - 0x1c, 0x16, 0xe0, 0x09, 0xe0, 0x6a, 0xe0, 0xfb, - 0xe0, 0x23, 0x78, 0x02, 0x2a, 0x00, 0xd0, 0x03, - 0x4b, 0x80, 0x5c, 0x9a, 0x08, 0x52, 0xd3, 0x61, - 0x22, 0x01, 0x92, 0x02, 0x1c, 0x04, 0x78, 0x27, - 0x34, 0x01, 0x2e, 0x00, 0xd0, 0x15, 0x2f, 0x5c, - 0xd1, 0x0b, 0x78, 0x20, 0x28, 0x22, 0xd0, 0x03, - 0x28, 0x5c, 0xd0, 0x01, 0x28, 0x27, 0xd1, 0x04, - 0x34, 0x01, 0x1c, 0x07, 0xe0, 0x09, 0xe0, 0xdf, - 0xe0, 0xde, 0x1c, 0x30, 0x42, 0xb7, 0xd1, 0x04, - 0x40, 0x7e, 0x78, 0x27, 0x34, 0x01, 0x42, 0x87, - 0xd0, 0xfa, 0x2f, 0x00, 0xd0, 0x0c, 0x2e, 0x00, - 0xd1, 0x03, 0x48, 0x6e, 0x5d, 0xc0, 0x08, 0x40, - 0xd2, 0x06, 0x1c, 0x08, 0x9b, 0x08, 0x68, 0x5a, - 0x54, 0x17, 0x31, 0x01, 0xe0, 0x97, 0xe0, 0xc7, - 0x98, 0x06, 0x42, 0x81, 0xd1, 0x08, 0x98, 0x05, - 0x28, 0x00, 0xd1, 0x05, 0x98, 0x02, 0x28, 0x00, - 0xd0, 0x74, 0x98, 0x03, 0x28, 0x00, 0xd1, 0x72, - 0x22, 0x00, 0x1c, 0x08, 0x9b, 0x08, 0x68, 0x5b, - 0x54, 0x1a, 0x98, 0x02, 0x31, 0x01, 0x28, 0x00, - 0xd0, 0x6a, 0x98, 0x03, 0x28, 0x00, 0xd0, 0x13, - 0x01, 0xa8, 0x99, 0x07, 0x18, 0x42, 0x9b, 0x08, - 0x68, 0x58, 0x99, 0x06, 0x18, 0x40, 0x46, 0x69, - 0xf0, 0x01, 0xfd, 0x3a, 0x28, 0x00, 0xd1, 0x07, - 0x9b, 0x08, 0x68, 0x58, 0x99, 0x06, 0x18, 0x41, - 0xa2, 0x58, 0xa0, 0x5e, 0xf7, 0xff, 0xfe, 0xb6, - 0x23, 0x01, 0x98, 0x01, 0x42, 0xd8, 0xdd, 0x51, - 0x98, 0x01, 0x28, 0x00, 0xda, 0x03, 0x40, 0x18, - 0x42, 0x40, 0xe0, 0x02, 0xe0, 0x90, 0x07, 0xc0, - 0x0f, 0xc0, 0x1c, 0x41, 0x98, 0x01, 0xf0, 0x01, - 0xfe, 0x29, 0x01, 0x80, 0x99, 0x07, 0x18, 0x40, - 0xf0, 0x01, 0xfa, 0xdc, 0x28, 0x00, 0xd1, 0x3d, - 0xb0, 0x82, 0x98, 0x03, 0x01, 0x80, 0x99, 0x09, - 0x18, 0x40, 0x90, 0x01, 0x9a, 0x03, 0x2a, 0x00, - 0xda, 0x03, 0x07, 0xd2, 0x0f, 0xd2, 0x42, 0x52, - 0xe0, 0x01, 0x07, 0xd2, 0x0f, 0xd2, 0x01, 0x90, - 0x99, 0x09, 0x18, 0x40, 0x30, 0x40, 0x90, 0x00, - 0x20, 0xff, 0x30, 0x01, 0xf0, 0x01, 0xfb, 0xa8, - 0x1c, 0x01, 0x23, 0xff, 0x22, 0x01, 0x02, 0x52, - 0x98, 0x01, 0x33, 0x01, 0xf0, 0x01, 0xfe, 0x1e, - 0x98, 0x01, 0x68, 0xc0, 0x23, 0x01, 0x02, 0xdb, - 0x43, 0x18, 0x99, 0x01, 0x60, 0xc8, 0x08, 0xd8, - 0xf0, 0x01, 0xfb, 0x96, 0x1c, 0x01, 0x23, 0xff, - 0x22, 0x01, 0x02, 0x52, 0x98, 0x00, 0x33, 0x01, - 0xf0, 0x01, 0xfe, 0x0c, 0x98, 0x00, 0x68, 0xc0, - 0x23, 0x01, 0x02, 0xdb, 0x43, 0x18, 0x99, 0x00, - 0x60, 0xc8, 0xe0, 0x02, 0xe0, 0x13, 0xe0, 0x12, - 0xe0, 0x05, 0xb0, 0x02, 0x20, 0x00, 0x90, 0x02, - 0x90, 0x03, 0x99, 0x06, 0xe0, 0x0b, 0x9b, 0x08, - 0x68, 0x58, 0x9a, 0x06, 0x18, 0x82, 0x98, 0x04, - 0x1c, 0x43, 0x93, 0x04, 0x00, 0x80, 0x9b, 0x08, - 0x68, 0x1b, 0x50, 0x1a, 0x91, 0x06, 0x2f, 0x00, - 0xd0, 0x01, 0x26, 0x00, 0x96, 0x05, 0x2f, 0x00, - 0xd0, 0x00, 0xe6, 0x9d, 0x2e, 0x00, 0xd0, 0x0a, - 0xb0, 0x81, 0xab, 0x00, 0x70, 0x1e, 0x22, 0x00, - 0x70, 0x5a, 0x46, 0x69, 0xa2, 0x24, 0xa0, 0x25, - 0xf7, 0xff, 0xfe, 0x3c, 0xb0, 0x01, 0x22, 0x00, - 0x98, 0x04, 0x00, 0x80, 0x9b, 0x08, 0x68, 0x19, - 0x50, 0x0a, 0x98, 0x04, 0x28, 0x00, 0xdd, 0x0f, - 0x9b, 0x08, 0x68, 0x18, 0x68, 0x01, 0x68, 0x09, - 0x4b, 0x21, 0x40, 0x19, 0xa2, 0x21, 0x68, 0x12, - 0x42, 0x91, 0xd1, 0x05, 0x9b, 0x04, 0x3b, 0x01, - 0x93, 0x04, 0x30, 0x04, 0x9b, 0x08, 0x60, 0x18, - 0x9a, 0x09, 0x9b, 0x08, 0x68, 0x19, 0x98, 0x04, - 0xf7, 0xfe, 0xfc, 0x47, 0xf7, 0xfe, 0xfc, 0xc0, - 0x1e, 0x61, 0xa2, 0x19, 0xa0, 0x19, 0xf7, 0xff, - 0xfe, 0x15, 0xb0, 0x09, 0xb0, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x22, 0x44, - 0x2e, 0x08, 0x23, 0x50, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0xd3, 0x48, 0x27, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x49, 0x2f, 0x4f, 0x20, 0x72, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x0a, 0x00, 0x00, 0x63, 0x61, 0x6e, 0x27, - 0x74, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x27, - 0x00, 0x00, 0x00, 0x00, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6c, 0x6f, 0x73, - 0x69, 0x6e, 0x67, 0x20, 0x00, 0x00, 0x00, 0x00, - 0xdf, 0xdf, 0xdf, 0xdf, 0x52, 0x55, 0x4e, 0x00, - 0x27, 0x0a, 0x00, 0x00, 0x75, 0x6e, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, - 0x6f, 0x72, 0x20, 0x69, 0x6c, 0x6c, 0x65, 0x67, - 0x61, 0x6c, 0x20, 0x49, 0x2f, 0x4f, 0x20, 0x72, - 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x27, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0x20, 0x01, - 0xea, 0x00, 0x00, 0x01, 0x47, 0x78, 0x00, 0x00, - 0xe3, 0xa0, 0x20, 0x02, 0xe2, 0x00, 0x31, 0x02, - 0xe5, 0x9f, 0x00, 0x18, 0xe5, 0x80, 0x20, 0x00, - 0xe3, 0x31, 0x00, 0x00, 0x03, 0xa0, 0x00, 0x00, - 0x15, 0x9f, 0x00, 0x0c, 0x18, 0x90, 0x00, 0x03, - 0xe1, 0x80, 0x00, 0x03, 0xe1, 0x2f, 0xff, 0x1e, - 0x2e, 0x08, 0x21, 0x30, 0x2e, 0x08, 0x21, 0x3c, - 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, - 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, - 0xe0, 0x88, 0x30, 0x09, 0xe2, 0x43, 0x3c, 0x3f, - 0xe2, 0x43, 0x30, 0xfe, 0xe3, 0x32, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x5d, 0xe3, 0x35, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x3d, 0xe9, 0x2d, 0x48, 0x81, - 0xe1, 0xa0, 0x08, 0x21, 0xe1, 0xc1, 0x78, 0x00, - 0xe1, 0xa0, 0x68, 0x24, 0xe1, 0xc4, 0x88, 0x06, - 0xe0, 0x09, 0x06, 0x90, 0xe0, 0x06, 0x06, 0x97, - 0xe0, 0x07, 0x07, 0x98, 0xe0, 0x97, 0x78, 0x06, - 0xe0, 0xa9, 0x98, 0x26, 0xe0, 0x08, 0x08, 0x90, - 0xe0, 0x97, 0x78, 0x08, 0xe0, 0xa9, 0x08, 0x28, - 0xe1, 0xa0, 0xb8, 0x22, 0xe1, 0xc2, 0xe8, 0x0b, - 0xe1, 0xa0, 0x68, 0x25, 0xe1, 0xc5, 0x88, 0x06, - 0xe0, 0x09, 0x06, 0x9b, 0xe0, 0x06, 0x06, 0x9e, - 0xe0, 0x0e, 0x0e, 0x98, 0xe0, 0x9e, 0xe8, 0x06, - 0xe0, 0xa9, 0x98, 0x26, 0xe0, 0x08, 0x08, 0x9b, - 0xe0, 0x9e, 0xe8, 0x08, 0xe0, 0xa9, 0xb8, 0x28, - 0xe0, 0x97, 0x70, 0x0b, 0xe2, 0xa0, 0x00, 0x00, - 0xe0, 0x97, 0xb0, 0x0e, 0xe0, 0xb7, 0x70, 0x00, - 0xe2, 0xa0, 0x00, 0x00, 0xe0, 0x51, 0x80, 0x02, - 0xe3, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x60, 0x00, - 0x31, 0xe0, 0x10, 0x01, 0x30, 0x44, 0x60, 0x05, - 0x10, 0x55, 0x90, 0x04, 0x03, 0xa0, 0x10, 0x00, - 0x31, 0xe0, 0x10, 0x01, 0x30, 0x46, 0x60, 0x08, - 0xe1, 0xa0, 0x48, 0x28, 0xe1, 0xc8, 0x58, 0x04, - 0xe1, 0xa0, 0x88, 0x29, 0xe1, 0xc9, 0x98, 0x08, - 0xe0, 0x22, 0x68, 0x94, 0xe0, 0x08, 0x08, 0x95, - 0xe0, 0x06, 0x05, 0x99, 0xe0, 0x96, 0x68, 0x08, - 0xe0, 0xa2, 0x28, 0x28, 0xe0, 0x09, 0x09, 0x94, - 0xe0, 0x96, 0x68, 0x09, 0xe0, 0xa2, 0x28, 0x29, - 0xe0, 0x9b, 0x60, 0x06, 0xe0, 0xb7, 0x20, 0x02, - 0xe0, 0xb0, 0x10, 0x01, 0xe1, 0x8e, 0xe1, 0x0e, - 0xe1, 0x86, 0x61, 0x2e, 0x48, 0xbd, 0x88, 0x81, - 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xb2, 0x20, 0x02, - 0xe0, 0xa1, 0x10, 0x01, 0xe2, 0x43, 0x30, 0x01, - 0xe8, 0xbd, 0x88, 0x81, 0xe1, 0xa0, 0x58, 0x24, - 0xe1, 0xc4, 0x68, 0x05, 0xe1, 0xa0, 0x88, 0x21, - 0xe1, 0xc1, 0x98, 0x08, 0xe0, 0x04, 0x08, 0x95, - 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x01, 0x06, 0x99, - 0xe0, 0x91, 0x18, 0x08, 0xe0, 0xa4, 0x48, 0x28, - 0xe0, 0x09, 0x09, 0x95, 0xe0, 0x91, 0x18, 0x09, - 0xe0, 0xa4, 0x48, 0x29, 0xe1, 0xa0, 0x88, 0x22, - 0xe1, 0xc2, 0x98, 0x08, 0xe0, 0x02, 0x08, 0x95, - 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x06, 0x06, 0x99, - 0xe0, 0x96, 0x68, 0x08, 0xe0, 0xa2, 0x28, 0x28, - 0xe0, 0x09, 0x09, 0x95, 0xe0, 0x96, 0x68, 0x09, - 0xe0, 0xa2, 0x58, 0x29, 0xe0, 0x95, 0x20, 0x01, - 0xe2, 0xb4, 0x10, 0x00, 0x41, 0xa0, 0xf0, 0x0e, - 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xb2, 0x20, 0x02, - 0xe0, 0xa1, 0x10, 0x01, 0xe2, 0x43, 0x30, 0x01, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x35, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x24, 0xe1, 0xa0, 0x28, 0x21, - 0xe1, 0xc1, 0x68, 0x02, 0xe1, 0xa0, 0x88, 0x24, - 0xe1, 0xc4, 0x98, 0x08, 0xe0, 0x01, 0x08, 0x92, - 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x04, 0x06, 0x99, - 0xe0, 0x94, 0x48, 0x08, 0xe0, 0xa1, 0x18, 0x28, - 0xe0, 0x09, 0x09, 0x92, 0xe0, 0x94, 0x48, 0x09, - 0xe0, 0xa1, 0x18, 0x29, 0xe1, 0xa0, 0x88, 0x25, - 0xe1, 0xc5, 0x98, 0x08, 0xe0, 0x05, 0x08, 0x92, - 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x06, 0x06, 0x99, - 0xe0, 0x96, 0x68, 0x08, 0xe0, 0xa5, 0x58, 0x28, - 0xe0, 0x09, 0x09, 0x92, 0xe0, 0x96, 0x68, 0x09, - 0xe0, 0xa5, 0x28, 0x29, 0xe0, 0x92, 0x20, 0x04, - 0xe2, 0xb1, 0x10, 0x00, 0x41, 0xa0, 0xf0, 0x0e, - 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xb2, 0x20, 0x02, - 0xe0, 0xa1, 0x10, 0x01, 0xe2, 0x43, 0x30, 0x01, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0xc0, 0x81, 0x03, - 0xe3, 0xc3, 0x91, 0x03, 0xe0, 0x20, 0x00, 0x03, - 0xe2, 0x00, 0x01, 0x02, 0xe0, 0x88, 0x30, 0x09, - 0xe2, 0x43, 0x3c, 0x3f, 0xe2, 0x43, 0x30, 0xfe, - 0xe1, 0xa0, 0x58, 0x24, 0xe1, 0xc4, 0x68, 0x05, - 0xe1, 0xa0, 0x88, 0x21, 0xe1, 0xc1, 0x98, 0x08, - 0xe0, 0x01, 0x08, 0x95, 0xe0, 0x08, 0x08, 0x96, - 0xe0, 0x02, 0x06, 0x99, 0xe0, 0x92, 0x28, 0x08, - 0xe0, 0xa1, 0x18, 0x28, 0xe0, 0x09, 0x09, 0x95, - 0xe0, 0x92, 0x28, 0x09, 0xe0, 0xb1, 0x18, 0x29, - 0xe3, 0xa0, 0x60, 0x00, 0x41, 0xa0, 0xf0, 0x0e, - 0xe0, 0x92, 0x20, 0x02, 0xe0, 0xa1, 0x10, 0x01, - 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0xa0, 0x98, 0x83, 0xe3, 0x79, 0x08, 0x02, - 0x30, 0x09, 0x90, 0x04, 0xe0, 0x19, 0x90, 0x83, - 0xe1, 0xa0, 0x88, 0x80, 0xe3, 0x78, 0x08, 0x02, - 0x30, 0x08, 0x80, 0x01, 0xe0, 0x18, 0x80, 0x80, - 0x4a, 0x00, 0x00, 0x1f, 0xe3, 0x19, 0x01, 0x02, - 0x1a, 0x00, 0x00, 0x2f, 0xe1, 0x91, 0x80, 0x02, - 0x11, 0x94, 0x80, 0x05, 0x0a, 0x00, 0x00, 0x13, - 0xe0, 0x11, 0x60, 0x80, 0x43, 0xc1, 0x11, 0x02, - 0x42, 0x80, 0x00, 0x01, 0xe0, 0x14, 0x60, 0x83, - 0x43, 0xc4, 0x41, 0x02, 0x42, 0x83, 0x30, 0x01, - 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, - 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, - 0xe0, 0x88, 0x30, 0x09, 0xe2, 0x43, 0x3c, 0x3f, - 0xe2, 0x43, 0x30, 0xfe, 0xe9, 0x2d, 0x40, 0x00, - 0xe3, 0x11, 0x01, 0x02, 0x0b, 0x00, 0x06, 0x7c, - 0xe3, 0x14, 0x01, 0x02, 0x0b, 0x00, 0x06, 0x93, - 0xe8, 0xbd, 0x40, 0x00, 0xea, 0xff, 0xff, 0x44, - 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, - 0xe3, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x20, 0x00, - 0xe3, 0xa0, 0x30, 0x00, 0xe3, 0xa0, 0x60, 0x00, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x19, 0x01, 0x02, - 0x0a, 0x00, 0x00, 0x09, 0xe1, 0x82, 0x80, 0x81, - 0xe1, 0x88, 0x80, 0x05, 0xe1, 0x98, 0x80, 0x84, - 0x1a, 0x00, 0x06, 0xbc, 0xe0, 0x20, 0x80, 0x03, - 0xe2, 0x08, 0x81, 0x02, 0xe2, 0x8f, 0x00, 0x44, - 0xe8, 0x90, 0x00, 0x07, 0xe1, 0x80, 0x00, 0x08, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0x92, 0x80, 0x81, - 0x1a, 0x00, 0x06, 0xc5, 0xe1, 0x94, 0x80, 0x05, - 0x1a, 0xff, 0xff, 0xf5, 0xe3, 0x80, 0x04, 0x61, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0x95, 0x80, 0x84, - 0x1a, 0x00, 0x06, 0xb6, 0xe1, 0x91, 0x80, 0x02, - 0x1a, 0xff, 0xff, 0xef, 0xe3, 0x80, 0x04, 0x61, - 0xe1, 0xa0, 0xf0, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0xbd, 0x4b, 0xf0, - 0xe5, 0x9f, 0x20, 0x6c, 0xe5, 0x92, 0x10, 0x00, - 0xe1, 0xa0, 0xc1, 0x83, 0xe1, 0xa0, 0xcd, 0xac, - 0xe1, 0x81, 0x10, 0x0c, 0xe5, 0x82, 0x10, 0x00, - 0xe3, 0x13, 0x03, 0x01, 0x1a, 0x00, 0x00, 0x05, - 0xe3, 0x13, 0x04, 0x02, 0x1a, 0x00, 0x00, 0x07, - 0xe3, 0x11, 0x08, 0x01, 0x0a, 0x00, 0x00, 0x44, - 0xe2, 0x8f, 0x00, 0x54, 0xea, 0x00, 0x00, 0x06, - 0xe3, 0x11, 0x07, 0x01, 0x0a, 0x00, 0x00, 0x34, - 0xe2, 0x8f, 0x00, 0x74, 0xea, 0x00, 0x00, 0x02, - 0xe3, 0x11, 0x08, 0x02, 0x0a, 0x00, 0x00, 0x30, - 0xe2, 0x8f, 0x00, 0x8c, 0xe5, 0x9f, 0x10, 0x1c, - 0xe2, 0x4e, 0xe0, 0x04, 0xe5, 0x81, 0xe0, 0x3c, - 0xe3, 0xa0, 0xec, 0xde, 0xe3, 0x8e, 0xe0, 0xad, - 0xe1, 0x8e, 0xe8, 0x0e, 0xe8, 0x81, 0x7f, 0xff, - 0xea, 0x00, 0x00, 0x01, 0x2e, 0x08, 0x23, 0x5c, - 0x2e, 0x08, 0x23, 0x60, 0xe5, 0x9f, 0xc1, 0x2c, - 0xe3, 0x5c, 0x00, 0x00, 0x11, 0x2f, 0xff, 0x1c, - 0xe6, 0x00, 0x00, 0x10, 0x80, 0x00, 0x02, 0x00, - 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x45, - 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x20, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x00, 0x80, 0x00, 0x02, 0x01, - 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x45, - 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x4f, 0x76, 0x65, 0x72, 0x66, 0x6c, - 0x6f, 0x77, 0x00, 0x00, 0x80, 0x00, 0x02, 0x02, - 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x45, - 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x3a, 0x20, 0x44, 0x69, 0x76, 0x69, 0x64, 0x65, - 0x20, 0x42, 0x79, 0x20, 0x5a, 0x65, 0x72, 0x6f, - 0x00, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x21, 0x02, - 0xe3, 0x13, 0x07, 0x0f, 0x1a, 0x00, 0x00, 0x13, - 0xe3, 0x13, 0x05, 0x02, 0x12, 0x8f, 0x00, 0x0c, - 0x18, 0x90, 0x00, 0x03, 0x05, 0x9f, 0x00, 0x0c, - 0xe1, 0x80, 0x00, 0x02, 0xe1, 0x2f, 0xff, 0x1e, - 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0xe3, 0x13, 0x07, 0x0f, - 0x12, 0x00, 0x21, 0x02, 0x1a, 0x00, 0x00, 0x07, - 0xe3, 0x13, 0x05, 0x02, 0x12, 0x8f, 0x00, 0x08, - 0x18, 0x90, 0x00, 0x03, 0x05, 0x9f, 0x00, 0x08, - 0xe1, 0x2f, 0xff, 0x1e, 0x7f, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, - 0xe3, 0x13, 0x07, 0x02, 0x13, 0xa0, 0x00, 0x00, - 0x13, 0xa0, 0x10, 0x00, 0x11, 0x2f, 0xff, 0x1e, - 0xe3, 0x13, 0x07, 0x01, 0x13, 0xe0, 0x00, 0x00, - 0x13, 0xe0, 0x10, 0x00, 0x11, 0x2f, 0xff, 0x1e, - 0xe3, 0x13, 0x06, 0x01, 0x13, 0xa0, 0x00, 0x00, - 0x13, 0xa0, 0x11, 0x02, 0x03, 0xa0, 0x01, 0x02, - 0xe3, 0x32, 0x01, 0x02, 0x11, 0xe0, 0x00, 0x00, - 0x11, 0xe0, 0x10, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0x2e, 0x01, 0xfb, 0xe5, 0xe3, 0x10, 0x02, 0x06, - 0x1a, 0x00, 0x00, 0x0d, 0xe1, 0xb0, 0x80, 0x86, - 0x0a, 0x00, 0x00, 0x0d, 0x22, 0x92, 0x20, 0x01, - 0x22, 0x91, 0x10, 0x01, 0x23, 0xa0, 0x11, 0x02, - 0xe2, 0xb3, 0x30, 0x00, 0x4a, 0x00, 0x00, 0x0a, - 0xe2, 0x83, 0xc0, 0x01, 0xe3, 0xcc, 0xc1, 0x01, - 0xe3, 0x5c, 0x09, 0x02, 0xc3, 0xa0, 0x33, 0x19, - 0xe2, 0x00, 0x01, 0x02, 0xe1, 0x83, 0x00, 0x00, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0xa0, 0x30, 0x00, - 0xe1, 0xa0, 0xf0, 0x0e, 0x21, 0xb0, 0x80, 0xa2, - 0xea, 0xff, 0xff, 0xef, 0xe3, 0x11, 0x01, 0x02, - 0x1a, 0x00, 0x00, 0x04, 0xe3, 0xa0, 0x10, 0x00, - 0xe3, 0xa0, 0x20, 0x00, 0xe2, 0x00, 0x01, 0x02, - 0xe3, 0xa0, 0x30, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0xb0, 0xc8, 0x21, 0x01, 0xa0, 0xc8, 0x22, - 0x01, 0x8c, 0x18, 0x01, 0x02, 0x83, 0x30, 0x10, - 0xe1, 0xb0, 0xcc, 0x21, 0x01, 0xa0, 0xcc, 0x22, - 0x01, 0x8c, 0x14, 0x01, 0x02, 0x83, 0x30, 0x08, - 0xe1, 0xb0, 0xce, 0x21, 0x01, 0xa0, 0xce, 0x22, - 0x01, 0x8c, 0x12, 0x01, 0x02, 0x83, 0x30, 0x04, - 0xe1, 0xb0, 0xcf, 0x21, 0x01, 0xa0, 0xcf, 0x22, - 0x01, 0x8c, 0x11, 0x01, 0x02, 0x83, 0x30, 0x02, - 0xe1, 0xb0, 0xcf, 0xa1, 0x01, 0xa0, 0xcf, 0xa2, - 0x01, 0x8c, 0x10, 0x81, 0x02, 0x83, 0x30, 0x01, - 0xe1, 0xb0, 0x30, 0x03, 0x4a, 0xff, 0xff, 0xe4, - 0x5a, 0xff, 0xff, 0xda, 0xe3, 0x11, 0x01, 0x02, - 0x01, 0xa0, 0xf0, 0x0e, 0xe9, 0x2d, 0x40, 0x08, - 0xe3, 0xd1, 0x11, 0x02, 0x0a, 0x00, 0x00, 0x15, - 0xe1, 0xb0, 0x38, 0x21, 0x01, 0xa0, 0x18, 0x01, - 0x03, 0xa0, 0xc0, 0x10, 0x13, 0xa0, 0xc0, 0x00, - 0xe1, 0xb0, 0x3c, 0x21, 0x01, 0xa0, 0x14, 0x01, - 0x02, 0x8c, 0xc0, 0x08, 0xe1, 0xb0, 0x3e, 0x21, - 0x01, 0xa0, 0x12, 0x01, 0x02, 0x8c, 0xc0, 0x04, - 0xe1, 0xb0, 0x3f, 0x21, 0x01, 0xa0, 0x11, 0x01, - 0x02, 0x8c, 0xc0, 0x02, 0xe1, 0xb0, 0x3f, 0xa1, - 0x01, 0xa0, 0x10, 0x81, 0x02, 0x8c, 0xc0, 0x01, - 0xe2, 0x6c, 0x30, 0x20, 0xe1, 0x81, 0x13, 0x32, - 0xe1, 0xa0, 0x2c, 0x12, 0xe0, 0x40, 0x00, 0x0c, - 0xe2, 0x80, 0x00, 0x01, 0xe8, 0xbd, 0x80, 0x08, - 0xe1, 0xb0, 0x38, 0x22, 0x01, 0xa0, 0x28, 0x02, - 0x03, 0xa0, 0xc0, 0x10, 0x13, 0xa0, 0xc0, 0x00, - 0xe1, 0xb0, 0x3c, 0x22, 0x01, 0xa0, 0x24, 0x02, - 0x02, 0x8c, 0xc0, 0x08, 0xe1, 0xb0, 0x3e, 0x22, - 0x01, 0xa0, 0x22, 0x02, 0x02, 0x8c, 0xc0, 0x04, - 0xe1, 0xb0, 0x3f, 0x22, 0x01, 0xa0, 0x21, 0x02, - 0x02, 0x8c, 0xc0, 0x02, 0xe1, 0xb0, 0x3f, 0xa2, - 0x01, 0xa0, 0x20, 0x82, 0x02, 0x8c, 0xc0, 0x01, - 0xe1, 0xa0, 0x10, 0x02, 0xe3, 0xa0, 0x20, 0x00, - 0xe2, 0x40, 0x00, 0x1f, 0xe0, 0x40, 0x00, 0x0c, - 0xe8, 0xbd, 0x80, 0x08, 0xe3, 0x14, 0x01, 0x02, - 0x01, 0xa0, 0xf0, 0x0e, 0xe9, 0x2d, 0x40, 0x01, - 0xe3, 0xd4, 0x41, 0x02, 0x0a, 0x00, 0x00, 0x15, - 0xe1, 0xb0, 0x08, 0x24, 0x01, 0xa0, 0x48, 0x04, - 0x03, 0xa0, 0xc0, 0x10, 0x13, 0xa0, 0xc0, 0x00, - 0xe1, 0xb0, 0x0c, 0x24, 0x01, 0xa0, 0x44, 0x04, - 0x02, 0x8c, 0xc0, 0x08, 0xe1, 0xb0, 0x0e, 0x24, - 0x01, 0xa0, 0x42, 0x04, 0x02, 0x8c, 0xc0, 0x04, - 0xe1, 0xb0, 0x0f, 0x24, 0x01, 0xa0, 0x41, 0x04, - 0x02, 0x8c, 0xc0, 0x02, 0xe1, 0xb0, 0x0f, 0xa4, - 0x01, 0xa0, 0x40, 0x84, 0x02, 0x8c, 0xc0, 0x01, - 0xe2, 0x6c, 0x00, 0x20, 0xe1, 0x84, 0x40, 0x35, - 0xe1, 0xa0, 0x5c, 0x15, 0xe0, 0x43, 0x30, 0x0c, - 0xe2, 0x83, 0x30, 0x01, 0xe8, 0xbd, 0x80, 0x01, - 0xe1, 0xb0, 0x08, 0x25, 0x01, 0xa0, 0x58, 0x05, - 0x03, 0xa0, 0xc0, 0x10, 0x13, 0xa0, 0xc0, 0x00, - 0xe1, 0xb0, 0x0c, 0x25, 0x01, 0xa0, 0x54, 0x05, - 0x02, 0x8c, 0xc0, 0x08, 0xe1, 0xb0, 0x0e, 0x25, - 0x01, 0xa0, 0x52, 0x05, 0x02, 0x8c, 0xc0, 0x04, - 0xe1, 0xb0, 0x0f, 0x25, 0x01, 0xa0, 0x51, 0x05, - 0x02, 0x8c, 0xc0, 0x02, 0xe1, 0xb0, 0x0f, 0xa5, - 0x01, 0xa0, 0x50, 0x85, 0x02, 0x8c, 0xc0, 0x01, - 0xe1, 0xa0, 0x40, 0x05, 0xe3, 0xa0, 0x50, 0x00, - 0xe2, 0x43, 0x30, 0x1f, 0xe0, 0x43, 0x30, 0x0c, - 0xe8, 0xbd, 0x80, 0x01, 0xe1, 0xa0, 0x80, 0x00, - 0xe1, 0xa0, 0x00, 0x03, 0xe1, 0xa0, 0x30, 0x08, - 0xe1, 0xa0, 0x80, 0x01, 0xe1, 0xa0, 0x10, 0x04, - 0xe1, 0xa0, 0x40, 0x08, 0xe1, 0xa0, 0x80, 0x02, - 0xe1, 0xa0, 0x20, 0x05, 0xe1, 0xa0, 0x50, 0x08, - 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, - 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, - 0xe0, 0x49, 0x30, 0x08, 0xe2, 0x83, 0x3c, 0x3f, - 0xe2, 0x83, 0x30, 0xff, 0xe9, 0x2d, 0x48, 0x89, - 0xe1, 0xa0, 0x08, 0x21, 0xe1, 0xc1, 0x78, 0x00, - 0xe1, 0xa0, 0xb8, 0x22, 0xe1, 0xc2, 0xe8, 0x0b, - 0xe2, 0x8f, 0x6e, 0x36, 0xe7, 0xd6, 0x64, 0x20, - 0xe0, 0x28, 0x66, 0x90, 0xe2, 0x68, 0x85, 0x02, - 0xe0, 0x06, 0x06, 0x98, 0xe1, 0xa0, 0x69, 0xa6, - 0xe2, 0x86, 0x60, 0x02, 0xe1, 0xa0, 0x86, 0xa1, - 0xe0, 0x29, 0x66, 0x98, 0xe2, 0x69, 0x92, 0x02, - 0xe1, 0xa0, 0x88, 0x29, 0xe1, 0xc9, 0x98, 0x08, - 0xe0, 0x02, 0x06, 0x99, 0xe0, 0x01, 0x06, 0x98, - 0xe0, 0x81, 0x68, 0x22, 0xe1, 0xa0, 0x63, 0x26, - 0xe1, 0xb0, 0x40, 0xa4, 0xe1, 0xb0, 0x50, 0x65, - 0x33, 0xa0, 0x30, 0x00, 0x23, 0xa0, 0x31, 0x02, - 0xe1, 0xa0, 0x87, 0xa4, 0xe0, 0x09, 0x08, 0x96, - 0xe1, 0xa0, 0x98, 0x29, 0xe0, 0x08, 0x0b, 0x99, - 0xe0, 0x55, 0x50, 0x08, 0xe0, 0x08, 0x09, 0x90, - 0xe0, 0xc4, 0x40, 0x08, 0xe0, 0x08, 0x0e, 0x99, - 0xe0, 0x53, 0x38, 0x08, 0xe0, 0xd5, 0x58, 0x28, - 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x58, 0x08, - 0x20, 0x55, 0x58, 0x08, 0xe0, 0xc4, 0x48, 0x28, - 0xe1, 0xa0, 0x18, 0x09, 0xe1, 0xa0, 0x81, 0x24, - 0xe0, 0x09, 0x08, 0x96, 0xe1, 0xa0, 0x98, 0x29, - 0xe0, 0x08, 0x0b, 0x99, 0xe0, 0x53, 0x39, 0x88, - 0xe0, 0xd5, 0x56, 0xa8, 0xe0, 0x08, 0x09, 0x90, - 0x30, 0x45, 0x59, 0x88, 0x20, 0x55, 0x59, 0x88, - 0xe0, 0xc4, 0x46, 0xa8, 0xe0, 0x08, 0x0e, 0x99, - 0xe0, 0x53, 0x31, 0x88, 0xe0, 0xd5, 0x5e, 0xa8, - 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x51, 0x88, - 0x20, 0x55, 0x51, 0x88, 0xe0, 0xc4, 0x4e, 0xa8, - 0xe1, 0xa0, 0x4d, 0x04, 0xe1, 0x84, 0x43, 0x25, - 0xe1, 0xa0, 0x5d, 0x05, 0xe1, 0x85, 0x53, 0x23, - 0xe1, 0xa0, 0x3d, 0x03, 0xe0, 0x81, 0x11, 0x89, - 0xe5, 0x9d, 0x80, 0x0c, 0xe3, 0x18, 0x00, 0x01, - 0x1a, 0x00, 0x00, 0x94, 0xe1, 0xa0, 0x87, 0xa4, - 0xe0, 0x09, 0x08, 0x96, 0xe1, 0xa0, 0x98, 0x29, - 0xe0, 0x08, 0x0b, 0x99, 0xe0, 0x55, 0x50, 0x08, - 0xe0, 0x08, 0x09, 0x90, 0xe0, 0xc4, 0x40, 0x08, - 0xe0, 0x08, 0x0e, 0x99, 0xe0, 0x53, 0x38, 0x08, - 0xe0, 0xd5, 0x58, 0x28, 0xe0, 0x08, 0x07, 0x99, - 0x30, 0x45, 0x58, 0x08, 0x20, 0x55, 0x58, 0x08, - 0xe0, 0xc4, 0x48, 0x28, 0xe1, 0xa0, 0x2b, 0x09, - 0xe0, 0x81, 0x15, 0x29, 0xe1, 0xa0, 0x81, 0x24, - 0xe0, 0x09, 0x08, 0x96, 0xe1, 0xa0, 0x98, 0x29, - 0xe0, 0x08, 0x0b, 0x99, 0xe0, 0x53, 0x39, 0x88, - 0xe0, 0xd5, 0x56, 0xa8, 0xe0, 0x08, 0x09, 0x90, - 0x30, 0x45, 0x59, 0x88, 0x20, 0x55, 0x59, 0x88, - 0xe0, 0xc4, 0x46, 0xa8, 0xe0, 0x08, 0x0e, 0x99, - 0xe0, 0x53, 0x31, 0x88, 0xe0, 0xd5, 0x5e, 0xa8, - 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x51, 0x88, - 0x20, 0x55, 0x51, 0x88, 0xe0, 0xc4, 0x4e, 0xa8, - 0xe1, 0xa0, 0x4d, 0x04, 0xe1, 0x84, 0x43, 0x25, - 0xe1, 0xa0, 0x5d, 0x05, 0xe1, 0x85, 0x53, 0x23, - 0xe1, 0xa0, 0x3d, 0x03, 0xe0, 0x92, 0x24, 0x89, - 0xe2, 0xa1, 0x10, 0x00, 0xe5, 0x9d, 0x80, 0x0c, - 0xe3, 0x18, 0x00, 0x02, 0x1a, 0x00, 0x00, 0x3f, - 0xe1, 0xa0, 0x87, 0xa4, 0xe0, 0x09, 0x08, 0x96, - 0xe1, 0xa0, 0x98, 0x29, 0xe0, 0x08, 0x0b, 0x99, - 0xe0, 0x55, 0x50, 0x08, 0xe0, 0x08, 0x09, 0x90, - 0xe0, 0xc4, 0x40, 0x08, 0xe0, 0x08, 0x0e, 0x99, - 0xe0, 0x53, 0x38, 0x08, 0xe0, 0xd5, 0x58, 0x28, - 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x58, 0x08, - 0x20, 0x55, 0x58, 0x08, 0xe0, 0xc4, 0x48, 0x28, - 0xe1, 0xa0, 0x47, 0x04, 0xe1, 0x84, 0x49, 0x25, - 0xe1, 0xa0, 0x57, 0x05, 0xe1, 0x85, 0x59, 0x23, - 0xe1, 0xa0, 0x37, 0x03, 0xe1, 0xa0, 0x6e, 0x09, - 0xe0, 0x92, 0x22, 0x29, 0xe2, 0xa1, 0x10, 0x00, - 0xe1, 0x87, 0x08, 0x00, 0xe1, 0x8e, 0x78, 0x0b, - 0xe3, 0xa0, 0xe0, 0x00, 0xe0, 0x55, 0x90, 0x07, - 0xe0, 0xd4, 0x80, 0x00, 0x21, 0xa0, 0x50, 0x09, - 0x21, 0xa0, 0x40, 0x08, 0xe0, 0xae, 0xe0, 0x0e, - 0xe3, 0xa0, 0xb0, 0x00, 0xe0, 0x93, 0x30, 0x03, - 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xb4, 0x40, 0x04, - 0xe0, 0xab, 0xb0, 0x0b, 0xe0, 0x55, 0x90, 0x07, - 0xe0, 0xd4, 0x80, 0x00, 0xe2, 0xdb, 0xb0, 0x00, - 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, - 0xe0, 0xae, 0xe0, 0x0e, 0xe3, 0xa0, 0xb0, 0x00, - 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, - 0xe0, 0xb4, 0x40, 0x04, 0xe0, 0xab, 0xb0, 0x0b, - 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, - 0xe2, 0xdb, 0xb0, 0x00, 0x21, 0xa0, 0x50, 0x09, - 0x21, 0xa0, 0x40, 0x08, 0xe0, 0xae, 0xe0, 0x0e, - 0xe1, 0x94, 0x80, 0x05, 0x13, 0x86, 0x60, 0x01, - 0xe0, 0x96, 0x6e, 0x0e, 0xe2, 0xb2, 0x20, 0x00, - 0xe2, 0xb1, 0x10, 0x00, 0x48, 0xbd, 0x88, 0x89, - 0xe8, 0xbd, 0x48, 0x89, 0xe0, 0x96, 0x60, 0x06, - 0xe0, 0xb2, 0x20, 0x02, 0xe0, 0xa1, 0x10, 0x01, - 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0x87, 0x08, 0x00, 0xe1, 0x8e, 0x78, 0x0b, - 0xe3, 0xa0, 0xe0, 0x00, 0xe0, 0x93, 0x30, 0x03, - 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xa4, 0x40, 0x04, - 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, - 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, - 0xe0, 0xae, 0xe0, 0x0e, 0xe3, 0xa0, 0xb0, 0x00, - 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, - 0xe0, 0xb4, 0x40, 0x04, 0xe0, 0xab, 0xb0, 0x0b, - 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, - 0xe2, 0xdb, 0xb0, 0x00, 0x21, 0xa0, 0x50, 0x09, - 0x21, 0xa0, 0x40, 0x08, 0xe0, 0xae, 0xe0, 0x0e, - 0xe3, 0xa0, 0xb0, 0x00, 0xe0, 0x93, 0x30, 0x03, - 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xb4, 0x40, 0x04, - 0xe0, 0xab, 0xb0, 0x0b, 0xe0, 0x55, 0x90, 0x07, - 0xe0, 0xd4, 0x80, 0x00, 0xe2, 0xdb, 0xb0, 0x00, - 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, - 0xe0, 0xae, 0xe0, 0x0e, 0xe1, 0x84, 0x60, 0x05, - 0xe0, 0x92, 0x24, 0x8e, 0xe2, 0xb1, 0x10, 0x00, - 0x48, 0xbd, 0x88, 0x89, 0xe8, 0xbd, 0x48, 0x89, - 0xe0, 0x92, 0x20, 0x02, 0xe0, 0xa1, 0x10, 0x01, - 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0x87, 0x08, 0x00, 0xe1, 0x8e, 0x78, 0x0b, - 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, - 0xe0, 0xa4, 0x40, 0x04, 0xe0, 0x55, 0x90, 0x07, - 0xe0, 0xd4, 0x80, 0x00, 0x21, 0xa0, 0x50, 0x09, - 0x21, 0xa0, 0x40, 0x08, 0x22, 0x81, 0x10, 0x20, - 0xe3, 0xa0, 0xb0, 0x00, 0xe0, 0x93, 0x30, 0x03, - 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xb4, 0x40, 0x04, - 0xe0, 0xab, 0xb0, 0x0b, 0xe0, 0x55, 0x90, 0x07, - 0xe0, 0xd4, 0x80, 0x00, 0xe2, 0xdb, 0xb0, 0x00, - 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, - 0x22, 0x81, 0x10, 0x10, 0xe3, 0xa0, 0xb0, 0x00, - 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, - 0xe0, 0xb4, 0x40, 0x04, 0xe0, 0xab, 0xb0, 0x0b, - 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, - 0xe2, 0xdb, 0xb0, 0x00, 0x21, 0xa0, 0x50, 0x09, - 0x21, 0xa0, 0x40, 0x08, 0x22, 0x81, 0x10, 0x08, - 0xe1, 0x84, 0x60, 0x05, 0xe3, 0xa0, 0x20, 0x00, - 0xe3, 0x31, 0x00, 0x00, 0x48, 0xbd, 0x88, 0x89, - 0xe8, 0xbd, 0x48, 0x89, 0xe1, 0xa0, 0x10, 0x81, - 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, - 0x80, 0x80, 0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, - 0x79, 0x78, 0x77, 0x76, 0x76, 0x75, 0x74, 0x73, - 0x72, 0x71, 0x71, 0x70, 0x6f, 0x6e, 0x6e, 0x6d, - 0x6c, 0x6c, 0x6b, 0x6a, 0x6a, 0x69, 0x68, 0x68, - 0x67, 0x66, 0x66, 0x65, 0x64, 0x64, 0x63, 0x63, - 0x62, 0x61, 0x61, 0x60, 0x60, 0x5f, 0x5f, 0x5e, - 0x5e, 0x5d, 0x5d, 0x5c, 0x5c, 0x5b, 0x5b, 0x5a, - 0x5a, 0x59, 0x59, 0x58, 0x58, 0x57, 0x57, 0x56, - 0x56, 0x55, 0x55, 0x55, 0x54, 0x54, 0x53, 0x53, - 0x52, 0x52, 0x52, 0x51, 0x51, 0x50, 0x50, 0x50, - 0x4f, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4d, 0x4d, - 0x4c, 0x4c, 0x4c, 0x4b, 0x4b, 0x4b, 0x4a, 0x4a, - 0x4a, 0x49, 0x49, 0x49, 0x48, 0x48, 0x48, 0x47, - 0x47, 0x47, 0x47, 0x46, 0x46, 0x46, 0x45, 0x45, - 0x45, 0x44, 0x44, 0x44, 0x44, 0x43, 0x43, 0x43, - 0x43, 0x42, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, - 0xe1, 0xa0, 0x98, 0x83, 0xe3, 0x79, 0x08, 0x02, - 0x30, 0x09, 0x90, 0x04, 0xe0, 0x19, 0x90, 0x83, - 0xe1, 0xa0, 0x88, 0x80, 0xe3, 0x78, 0x08, 0x02, - 0x30, 0x08, 0x80, 0x01, 0xe0, 0x18, 0x80, 0x80, - 0x4a, 0x00, 0x00, 0x20, 0xe3, 0x19, 0x01, 0x02, - 0x1a, 0x00, 0x00, 0x32, 0xe3, 0x1b, 0x00, 0x04, - 0x1a, 0x00, 0x00, 0x08, 0xe1, 0xa0, 0x80, 0x00, - 0xe1, 0xa0, 0x00, 0x03, 0xe1, 0xa0, 0x30, 0x08, - 0xe1, 0xa0, 0x80, 0x01, 0xe1, 0xa0, 0x10, 0x04, - 0xe1, 0xa0, 0x40, 0x08, 0xe1, 0xa0, 0x80, 0x02, - 0xe1, 0xa0, 0x20, 0x05, 0xe1, 0xa0, 0x50, 0x08, - 0xe0, 0x11, 0x60, 0x80, 0x43, 0xc1, 0x11, 0x02, - 0x42, 0x80, 0x00, 0x01, 0xe0, 0x14, 0x60, 0x83, - 0x43, 0xc4, 0x41, 0x02, 0x42, 0x83, 0x30, 0x01, - 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, - 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, - 0xe0, 0x49, 0x30, 0x08, 0xe2, 0x83, 0x3c, 0x3f, - 0xe2, 0x83, 0x30, 0xff, 0xe9, 0x2d, 0x40, 0x00, - 0xe3, 0x11, 0x01, 0x02, 0x0b, 0x00, 0x04, 0x30, - 0xe3, 0x14, 0x01, 0x02, 0x0b, 0x00, 0x04, 0x15, - 0xe8, 0xbd, 0x40, 0x00, 0xea, 0xff, 0xfe, 0xb6, - 0xe3, 0x19, 0x01, 0x02, 0x0a, 0x00, 0x00, 0x05, - 0xe1, 0x82, 0x80, 0x81, 0xe1, 0x88, 0x80, 0x05, - 0xe1, 0x98, 0x80, 0x84, 0x1a, 0x00, 0x04, 0x45, - 0xe3, 0x80, 0x04, 0x61, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0x92, 0x80, 0x81, 0x1a, 0x00, 0x04, 0x52, - 0xe0, 0x20, 0x80, 0x03, 0xe2, 0x08, 0x81, 0x02, - 0xe3, 0x1b, 0x00, 0x04, 0x02, 0x8f, 0x00, 0x50, - 0x12, 0x8f, 0x00, 0x40, 0xe8, 0x90, 0x00, 0x07, - 0xe1, 0x80, 0x00, 0x08, 0xe3, 0xa0, 0x30, 0x00, - 0xe3, 0xa0, 0x60, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0x95, 0x80, 0x84, 0x1a, 0x00, 0x04, 0x3d, - 0xe0, 0x20, 0x80, 0x03, 0xe2, 0x08, 0x81, 0x02, - 0xe3, 0x1b, 0x00, 0x04, 0x12, 0x8f, 0x00, 0x20, - 0x02, 0x8f, 0x00, 0x10, 0xe8, 0x90, 0x00, 0x07, - 0xe1, 0x80, 0x00, 0x08, 0xe3, 0xa0, 0x30, 0x00, - 0xe3, 0xa0, 0x60, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7f, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe9, 0x2d, 0x40, 0x00, 0xe1, 0xa0, 0x68, 0x80, - 0xe0, 0x56, 0x88, 0x83, 0xe0, 0x20, 0xe0, 0x03, - 0xe2, 0x00, 0x01, 0x02, 0xe1, 0xa0, 0x38, 0xa6, - 0x8a, 0x00, 0x00, 0x1a, 0x01, 0xa0, 0x90, 0x08, - 0x0a, 0x00, 0x00, 0x2e, 0xe2, 0x68, 0x60, 0x00, - 0xe1, 0xa0, 0x68, 0xa6, 0xe0, 0x83, 0x30, 0x06, - 0xe1, 0xa0, 0x92, 0xa6, 0xe1, 0xc6, 0x62, 0x89, - 0xe3, 0x59, 0x00, 0x02, 0x33, 0x39, 0x00, 0x00, - 0xe2, 0x66, 0x90, 0x20, 0xe1, 0xa0, 0x89, 0x12, - 0xe1, 0xa0, 0x26, 0x32, 0xe1, 0x82, 0x29, 0x11, - 0xe1, 0xa0, 0x16, 0x31, 0x0a, 0x00, 0x00, 0x03, - 0x11, 0x88, 0x81, 0x08, 0x11, 0x82, 0x81, 0x28, - 0x11, 0xa0, 0x20, 0x01, 0x13, 0xa0, 0x10, 0x00, - 0x3a, 0x00, 0x00, 0x04, 0x21, 0x88, 0x80, 0x02, - 0x21, 0x88, 0x81, 0x08, 0x21, 0x81, 0x81, 0x28, - 0x23, 0xa0, 0x20, 0x00, 0x23, 0xa0, 0x10, 0x00, - 0xe3, 0xa0, 0x90, 0x00, 0xea, 0x00, 0x00, 0x15, - 0xe1, 0xa0, 0x68, 0xa8, 0xe1, 0xa0, 0x82, 0xa6, - 0xe1, 0xc6, 0x62, 0x88, 0xe3, 0x58, 0x00, 0x02, - 0x33, 0x38, 0x00, 0x00, 0xe2, 0x66, 0x80, 0x20, - 0xe1, 0xa0, 0x98, 0x15, 0xe1, 0xa0, 0x56, 0x35, - 0xe1, 0x85, 0x58, 0x14, 0xe1, 0xa0, 0x46, 0x34, - 0x0a, 0x00, 0x00, 0x03, 0x11, 0x89, 0x91, 0x09, - 0x11, 0x85, 0x91, 0x29, 0x11, 0xa0, 0x50, 0x04, - 0x13, 0xa0, 0x40, 0x00, 0x3a, 0x00, 0x00, 0x04, - 0x21, 0x89, 0x90, 0x05, 0x21, 0x89, 0x91, 0x09, - 0x21, 0x84, 0x91, 0x29, 0x23, 0xa0, 0x50, 0x00, - 0x23, 0xa0, 0x40, 0x00, 0xe3, 0xa0, 0x80, 0x00, - 0xe3, 0x1e, 0x01, 0x02, 0x1a, 0x00, 0x00, 0x09, - 0xe0, 0x98, 0x60, 0x09, 0xe0, 0xb2, 0x20, 0x05, - 0xe0, 0xb1, 0x10, 0x04, 0x38, 0xbd, 0x80, 0x00, - 0xe2, 0x83, 0x30, 0x01, 0xe1, 0xb0, 0x10, 0x61, - 0xe1, 0xb0, 0x20, 0x62, 0xe1, 0x86, 0x60, 0x86, - 0xe1, 0xa0, 0x60, 0x66, 0xe8, 0xbd, 0x80, 0x00, - 0xe0, 0x58, 0x60, 0x09, 0xe0, 0xd2, 0x20, 0x05, - 0xe0, 0xd1, 0x10, 0x04, 0x2a, 0x00, 0x00, 0x03, - 0xe2, 0x20, 0x01, 0x02, 0xe2, 0x76, 0x60, 0x00, - 0xe2, 0xf2, 0x20, 0x00, 0xe2, 0xe1, 0x10, 0x00, - 0xe3, 0x11, 0x01, 0x02, 0x18, 0xbd, 0x80, 0x00, - 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xb2, 0x20, 0x02, - 0xe0, 0xa1, 0x10, 0x01, 0xe2, 0x43, 0x30, 0x01, - 0xe3, 0x11, 0x01, 0x02, 0x18, 0xbd, 0x80, 0x00, - 0xe1, 0x91, 0xe0, 0x02, 0x1b, 0x00, 0x03, 0x7e, - 0x18, 0xbd, 0x80, 0x00, 0xe3, 0xa0, 0x00, 0x00, - 0xe3, 0xa0, 0x10, 0x00, 0xe2, 0x8d, 0xd0, 0x04, - 0xe8, 0xbd, 0x4b, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0xa0, 0x98, 0x83, 0xe3, 0x79, 0x08, 0x02, - 0x30, 0x09, 0x90, 0x04, 0xe0, 0x19, 0x90, 0x83, - 0xe1, 0xa0, 0x88, 0x80, 0xe3, 0x78, 0x08, 0x02, - 0x30, 0x08, 0x80, 0x01, 0xe0, 0x18, 0x80, 0x80, - 0x4a, 0x00, 0x00, 0x14, 0xe3, 0x19, 0x01, 0x02, - 0x1a, 0x00, 0x00, 0x22, 0xe9, 0x2d, 0x40, 0x00, - 0xe0, 0x11, 0x60, 0x80, 0x43, 0xc1, 0x11, 0x02, - 0x42, 0x80, 0x00, 0x01, 0xe0, 0x14, 0x60, 0x83, - 0x43, 0xc4, 0x41, 0x02, 0x42, 0x83, 0x30, 0x01, - 0xe3, 0x10, 0x01, 0x01, 0x11, 0xb0, 0x68, 0x80, - 0x1b, 0x00, 0x02, 0xe6, 0xe3, 0x13, 0x01, 0x01, - 0x11, 0xb0, 0x68, 0x83, 0x1b, 0x00, 0x03, 0x1d, - 0xeb, 0xff, 0xff, 0x8a, 0xe3, 0x11, 0x01, 0x02, - 0x18, 0xbd, 0x80, 0x00, 0xe1, 0x91, 0xe0, 0x02, - 0x1b, 0x00, 0x03, 0x5b, 0xe8, 0xbd, 0x80, 0x00, - 0xe3, 0x19, 0x01, 0x02, 0x0a, 0x00, 0x00, 0x09, - 0xe1, 0x82, 0x80, 0x81, 0xe1, 0x88, 0x80, 0x05, - 0xe1, 0x98, 0x80, 0x84, 0x1a, 0x00, 0x03, 0xa5, - 0xe0, 0x23, 0x85, 0x0b, 0xe0, 0x38, 0x80, 0x00, - 0x52, 0x00, 0x81, 0x02, 0x5a, 0x00, 0x00, 0x0a, - 0xe3, 0x80, 0x04, 0x61, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0x92, 0x80, 0x81, 0x1a, 0x00, 0x03, 0xae, - 0xe2, 0x00, 0x81, 0x02, 0xea, 0x00, 0x00, 0x04, - 0xe1, 0x95, 0x80, 0x84, 0x1a, 0x00, 0x03, 0xa1, - 0xe2, 0x03, 0x81, 0x02, 0xe3, 0x1b, 0x06, 0x02, - 0x12, 0x28, 0x81, 0x02, 0xe3, 0x1b, 0x06, 0x01, - 0x12, 0x28, 0x81, 0x02, 0xe2, 0x8f, 0x00, 0x14, - 0xe8, 0x90, 0x00, 0x07, 0xe1, 0x80, 0x00, 0x08, - 0xe1, 0xa0, 0xf0, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x49, 0x02, - 0xf0, 0x00, 0xf9, 0x2a, 0xbc, 0x08, 0x47, 0x18, - 0xff, 0xff, 0xff, 0xfd, 0xb5, 0x80, 0x1c, 0x07, - 0x28, 0x0a, 0xd2, 0x14, 0xa3, 0x01, 0x5c, 0x1b, - 0x00, 0x5b, 0x44, 0x9f, 0x10, 0x04, 0x10, 0x06, - 0x08, 0x0a, 0x0c, 0x10, 0x0e, 0x0e, 0xa0, 0x0f, - 0xe0, 0x0c, 0xa0, 0x1a, 0xe0, 0x0a, 0xa0, 0x33, - 0xe0, 0x08, 0xa0, 0x3f, 0xe0, 0x06, 0xa0, 0x4b, - 0xe0, 0x04, 0xa0, 0x52, 0xe0, 0x02, 0x1c, 0x38, - 0xf0, 0x00, 0xff, 0x71, 0x21, 0x03, 0xf0, 0x00, - 0xf9, 0x27, 0x2f, 0x04, 0xd1, 0x05, 0x20, 0x01, - 0xf7, 0xfd, 0xfc, 0x2c, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0xf7, 0xfe, 0xfc, 0xd3, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x41, 0x62, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x61, - 0x62, 0x6f, 0x72, 0x74, 0x28, 0x29, 0x20, 0x66, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x29, - 0x00, 0x00, 0x00, 0x00, 0x49, 0x6c, 0x6c, 0x65, - 0x67, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x28, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, - 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x66, 0x75, 0x6e, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, - 0x64, 0x65, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x75, - 0x70, 0x74, 0x65, 0x64, 0x29, 0x0a, 0x5b, 0x69, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6c, - 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x6d, 0x75, - 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x3f, - 0x5d, 0x00, 0x00, 0x00, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, - 0x72, 0x6f, 0x6d, 0x20, 0x75, 0x73, 0x65, 0x72, - 0x20, 0x2d, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x61, 0x74, 0x65, 0x64, 0x00, 0x00, 0x00, - 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x20, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, - 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x77, 0x69, - 0x6c, 0x64, 0x6c, 0x79, 0x20, 0x6f, 0x75, 0x74, - 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x72, 0x72, - 0x61, 0x79, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x73, 0x29, 0x00, 0x00, 0x54, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x00, 0x00, 0x00, 0x00, 0x55, 0x73, 0x65, 0x72, - 0x2d, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, - 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x00, - 0xb5, 0x00, 0x20, 0x01, 0x49, 0x05, 0x70, 0x08, - 0xa0, 0x05, 0x21, 0x03, 0xf0, 0x00, 0xf8, 0x78, - 0x20, 0x64, 0xf7, 0xfd, 0xfb, 0x7f, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x23, 0x48, - 0x53, 0x74, 0x61, 0x63, 0x6b, 0x20, 0x6f, 0x76, - 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x0a, 0x00, - 0xb5, 0x00, 0x28, 0x07, 0xd1, 0x03, 0xf7, 0xff, - 0xff, 0xe3, 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, - 0xff, 0x19, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, - 0xf7, 0xff, 0xff, 0xf2, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x90, 0x28, 0x00, 0xdd, 0x01, 0x28, 0x0b, - 0xdb, 0x05, 0x20, 0x03, 0x49, 0x0b, 0x60, 0x08, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x87, - 0x4b, 0x09, 0x59, 0xd9, 0x4a, 0x09, 0x42, 0x91, - 0xd1, 0x02, 0xf7, 0xff, 0xff, 0xdd, 0xe0, 0x05, - 0x4c, 0x07, 0x42, 0xa1, 0xd0, 0x02, 0x51, 0xda, - 0xf7, 0xfb, 0xfe, 0x9c, 0x20, 0x00, 0xbc, 0x90, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x21, 0x30, - 0x2e, 0x08, 0xd2, 0x18, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xfd, 0x28, 0x00, 0xdd, 0x09, - 0x28, 0x0b, 0xda, 0x07, 0x00, 0x80, 0x49, 0x04, - 0x58, 0x08, 0x49, 0x04, 0x42, 0x88, 0xd0, 0x01, - 0x20, 0x01, 0x47, 0x70, 0x20, 0x00, 0x47, 0x70, - 0x2e, 0x08, 0xd2, 0x18, 0xff, 0xff, 0xff, 0xff, - 0x28, 0x00, 0xdd, 0x01, 0x28, 0x0b, 0xdb, 0x01, - 0x48, 0x03, 0x47, 0x70, 0x00, 0x83, 0x4a, 0x03, - 0x58, 0xd0, 0x50, 0xd1, 0x47, 0x70, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xfe, 0x2e, 0x08, 0xd2, 0x18, - 0xb5, 0x90, 0x27, 0x01, 0x4c, 0x05, 0x1c, 0x38, - 0x1c, 0x21, 0xf7, 0xff, 0xff, 0xe9, 0x37, 0x01, - 0x2f, 0x0b, 0xdb, 0xf8, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0xb5, 0x90, 0x1c, 0x0c, 0x1c, 0x07, 0x48, 0x12, - 0x28, 0x00, 0xd0, 0x09, 0x48, 0x11, 0x78, 0x00, - 0x28, 0x00, 0xd1, 0x05, 0x1c, 0x38, 0x1c, 0x21, - 0xf0, 0x00, 0xfb, 0x2c, 0x28, 0x00, 0xd1, 0x13, - 0x08, 0x60, 0xd3, 0x02, 0x20, 0x0a, 0xf0, 0x00, - 0xf8, 0xd3, 0x78, 0x38, 0x28, 0x00, 0xd0, 0x06, - 0x78, 0x38, 0x37, 0x01, 0xf0, 0x00, 0xf8, 0xcc, - 0x78, 0x38, 0x28, 0x00, 0xd1, 0xf8, 0x08, 0xa0, - 0xd3, 0x02, 0x20, 0x0a, 0xf0, 0x00, 0xf8, 0xc4, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x02, 0x2b, 0xa9, 0x2e, 0x08, 0x23, 0x48, - 0xb5, 0x80, 0xb0, 0x83, 0x90, 0x00, 0x91, 0x01, - 0xf7, 0xfb, 0xfe, 0xf8, 0x90, 0x02, 0x46, 0x69, - 0x20, 0x01, 0xf0, 0x01, 0xf8, 0x49, 0x23, 0x01, - 0x1c, 0x07, 0x42, 0xd8, 0xd1, 0x05, 0x21, 0x00, - 0x20, 0x13, 0xf0, 0x01, 0xf8, 0x41, 0x49, 0x03, - 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x03, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x21, 0x30, - 0xb5, 0x80, 0xb0, 0x81, 0x90, 0x00, 0x46, 0x69, - 0x20, 0x02, 0xf0, 0x01, 0xf8, 0x31, 0x1c, 0x07, - 0xd0, 0x05, 0x21, 0x00, 0x20, 0x13, 0xf0, 0x01, - 0xf8, 0x2b, 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, - 0xb0, 0x01, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x21, 0x30, 0xb5, 0x80, 0xb0, 0x84, - 0x90, 0x00, 0x91, 0x01, 0x92, 0x02, 0x46, 0x69, - 0x20, 0x05, 0xf0, 0x01, 0xf8, 0x19, 0x1c, 0x07, - 0xd0, 0x05, 0x21, 0x00, 0x20, 0x13, 0xf0, 0x01, - 0xf8, 0x13, 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, - 0xb0, 0x04, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x21, 0x30, 0xb5, 0x80, 0xb0, 0x84, - 0x90, 0x00, 0x91, 0x01, 0x92, 0x02, 0x93, 0x03, - 0x46, 0x69, 0x20, 0x06, 0xf0, 0x01, 0xf8, 0x00, - 0x1c, 0x07, 0xd0, 0x05, 0x21, 0x00, 0x20, 0x13, - 0xf0, 0x00, 0xff, 0xfa, 0x49, 0x03, 0x60, 0x08, - 0x1c, 0x38, 0xb0, 0x04, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x21, 0x30, - 0xb5, 0x00, 0xb0, 0x81, 0x90, 0x00, 0x46, 0x69, - 0x20, 0x08, 0xf0, 0x00, 0xff, 0xe9, 0xb0, 0x01, - 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, 0x69, 0x40, - 0xb0, 0x81, 0x90, 0x00, 0x46, 0x69, 0x20, 0x09, - 0xf0, 0x00, 0xff, 0xde, 0xb0, 0x01, 0xbc, 0x08, - 0x47, 0x18, 0xb5, 0x80, 0xb0, 0x82, 0x90, 0x00, - 0x91, 0x01, 0x46, 0x69, 0x20, 0x0a, 0xf0, 0x00, - 0xff, 0xd3, 0x1c, 0x07, 0xd5, 0x05, 0x21, 0x00, - 0x20, 0x13, 0xf0, 0x00, 0xff, 0xcd, 0x49, 0x03, - 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x02, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x21, 0x30, - 0xb5, 0x80, 0xb0, 0x81, 0x90, 0x00, 0x46, 0x69, - 0x20, 0x0b, 0xf0, 0x00, 0xff, 0xbd, 0x1c, 0x07, - 0xd5, 0x05, 0x21, 0x00, 0x20, 0x13, 0xf0, 0x00, - 0xff, 0xb7, 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, - 0xb0, 0x01, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x21, 0x30, 0xb5, 0x00, 0xb0, 0x81, - 0x90, 0x00, 0x46, 0x69, 0x20, 0x0c, 0xf0, 0x00, - 0xff, 0xa7, 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x00, 0xb0, 0x83, 0x90, 0x00, 0x91, 0x01, - 0x92, 0x02, 0x46, 0x69, 0x20, 0x0d, 0xf0, 0x00, - 0xff, 0x9b, 0xb0, 0x03, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x01, 0x46, 0x69, 0x20, 0x03, 0xf0, 0x00, - 0xff, 0x93, 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, - 0xb5, 0x80, 0xb0, 0x82, 0x90, 0x00, 0xf7, 0xfb, - 0xfe, 0x35, 0x90, 0x01, 0x46, 0x69, 0x20, 0x12, - 0xf0, 0x00, 0xff, 0x86, 0x1c, 0x07, 0xd0, 0x05, - 0x21, 0x00, 0x20, 0x13, 0xf0, 0x00, 0xff, 0x80, - 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x02, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x21, 0x30, 0xb5, 0x80, 0xb0, 0x82, - 0x90, 0x00, 0xf7, 0xfb, 0xfe, 0x1b, 0x90, 0x01, - 0x46, 0x69, 0x20, 0x0e, 0xf0, 0x00, 0xff, 0x6c, - 0x1c, 0x07, 0xd0, 0x05, 0x21, 0x00, 0x20, 0x13, - 0xf0, 0x00, 0xff, 0x66, 0x49, 0x03, 0x60, 0x08, - 0x1c, 0x38, 0xb0, 0x02, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x21, 0x30, - 0xb5, 0x80, 0xb0, 0x84, 0x90, 0x00, 0x1c, 0x0f, - 0xf7, 0xfb, 0xfe, 0x00, 0x90, 0x01, 0x97, 0x02, - 0x1c, 0x38, 0xf7, 0xfb, 0xfd, 0xfb, 0x90, 0x03, - 0x46, 0x69, 0x20, 0x0f, 0xf0, 0x00, 0xff, 0x4c, - 0x1c, 0x07, 0xd0, 0x05, 0x21, 0x00, 0x20, 0x13, - 0xf0, 0x00, 0xff, 0x46, 0x49, 0x03, 0x60, 0x08, - 0x1c, 0x38, 0xb0, 0x04, 0xbc, 0x80, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x21, 0x30, - 0xb5, 0x80, 0xb0, 0x82, 0x4f, 0x08, 0x97, 0x00, - 0x20, 0xff, 0x30, 0x01, 0x90, 0x01, 0x46, 0x69, - 0x20, 0x15, 0xf0, 0x00, 0xff, 0x31, 0x28, 0x00, - 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x1c, 0x38, - 0xb0, 0x02, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0xd2, 0x48, 0xb5, 0x00, 0x21, 0x00, - 0x20, 0x10, 0xf0, 0x00, 0xff, 0x21, 0x49, 0x02, - 0x68, 0x09, 0x1a, 0x40, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x23, 0x58, 0xb5, 0x00, 0x21, 0x00, - 0x20, 0x10, 0xf0, 0x00, 0xff, 0x15, 0x49, 0x02, - 0x60, 0x08, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x23, 0x58, 0xb5, 0x80, 0x21, 0x00, - 0x1c, 0x07, 0x20, 0x11, 0xf0, 0x00, 0xff, 0x08, - 0x2f, 0x00, 0xd0, 0x00, 0x60, 0x38, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x47, 0x70, - 0xb5, 0x80, 0x49, 0x07, 0x68, 0x09, 0xf7, 0xfb, - 0xfc, 0xd9, 0x1c, 0x07, 0xd1, 0x03, 0xa1, 0x05, - 0xa0, 0x05, 0xf0, 0x00, 0xfc, 0xe7, 0x1c, 0x38, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x21, 0x28, 0x00, 0x00, 0x00, 0x00, - 0x4e, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x49, 0x2f, 0x4f, 0x20, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x20, 0x6f, 0x72, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x6b, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x80, 0x68, 0xc1, - 0x43, 0x19, 0x60, 0xc1, 0x21, 0x00, 0x60, 0x01, - 0x60, 0x81, 0x47, 0x70, 0xb5, 0xf7, 0x68, 0xd5, - 0x69, 0x56, 0x1c, 0x0c, 0x1c, 0x17, 0x0d, 0x68, - 0xd3, 0x05, 0x23, 0x10, 0x43, 0x1d, 0x1c, 0x30, - 0xf7, 0xff, 0xff, 0x14, 0x61, 0xb8, 0x48, 0x12, - 0x40, 0x28, 0xd0, 0x08, 0x69, 0xb9, 0x1c, 0x30, - 0xf7, 0xff, 0xfe, 0xdf, 0x28, 0x00, 0xdb, 0x10, - 0x4b, 0x0e, 0x40, 0x1d, 0x60, 0xfd, 0x99, 0x00, - 0x1c, 0x30, 0x1c, 0x22, 0x1c, 0x2b, 0xf7, 0xff, - 0xfe, 0x8d, 0x00, 0x41, 0x08, 0x49, 0x1a, 0x61, - 0x69, 0xba, 0x18, 0x51, 0x61, 0xb9, 0x28, 0x00, - 0xd0, 0x08, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xce, - 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x03, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xe7, 0xf9, - 0x00, 0x02, 0x00, 0x10, 0xff, 0xfd, 0xff, 0xef, - 0xb5, 0xb0, 0x48, 0x15, 0x68, 0xc1, 0x4b, 0x15, - 0x40, 0x19, 0x1c, 0x1d, 0x42, 0x99, 0xd1, 0x01, - 0xf0, 0x00, 0xfc, 0xd6, 0x48, 0x12, 0x68, 0xc1, - 0x4b, 0x10, 0x40, 0x19, 0x42, 0xa9, 0xd1, 0x01, - 0xf0, 0x00, 0xfc, 0xce, 0x48, 0x0f, 0x68, 0xc1, - 0x4b, 0x0c, 0x40, 0x19, 0x42, 0xa9, 0xd1, 0x01, - 0xf0, 0x00, 0xfc, 0xc6, 0x27, 0x00, 0x4c, 0x0c, - 0x01, 0xb8, 0x19, 0x00, 0x68, 0xc1, 0x4b, 0x07, - 0x40, 0x19, 0x42, 0xa9, 0xd1, 0x01, 0xf0, 0x00, - 0xfc, 0xbb, 0x37, 0x01, 0x2f, 0x0d, 0xdb, 0xf3, - 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0xd3, 0x48, 0x00, 0x00, 0x02, 0x02, - 0x2e, 0x08, 0xd3, 0x88, 0x2e, 0x08, 0xd3, 0xc8, - 0x2e, 0x08, 0xd4, 0x08, 0xb5, 0xf0, 0x1c, 0x07, - 0x69, 0x04, 0x6a, 0xc0, 0x68, 0x79, 0x42, 0x88, - 0xd9, 0x00, 0x1c, 0x01, 0x68, 0xf8, 0x4b, 0x13, - 0x40, 0x18, 0x07, 0x82, 0x0f, 0x92, 0x25, 0x00, - 0x60, 0xf8, 0x2a, 0x01, 0xd0, 0x1a, 0x22, 0x82, - 0x40, 0x02, 0x15, 0x1e, 0x2a, 0x02, 0xd1, 0x0a, - 0x0c, 0x40, 0xd3, 0x13, 0x42, 0xa1, 0xd0, 0x0a, - 0x1b, 0x09, 0x1c, 0x20, 0x1c, 0x3a, 0xf7, 0xff, - 0xff, 0x75, 0x28, 0x00, 0xd0, 0x03, 0x1c, 0x30, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x62, 0xfc, - 0x60, 0x7c, 0x60, 0xbd, 0x68, 0xf8, 0x4b, 0x04, - 0x40, 0x18, 0x60, 0xf8, 0x1c, 0x28, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0xff, 0xf7, 0xff, 0xff, - 0xff, 0xfe, 0xff, 0xff, 0xb5, 0x80, 0x1c, 0x07, - 0x68, 0xc0, 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, - 0x60, 0xf8, 0x69, 0xb8, 0x6a, 0xb9, 0x42, 0x88, - 0xd0, 0x0d, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xbe, - 0x68, 0xf8, 0x4b, 0x08, 0x40, 0x18, 0x23, 0x10, - 0x43, 0x18, 0x60, 0xf8, 0x6a, 0xb8, 0x61, 0xb8, - 0x69, 0x38, 0x62, 0xf8, 0x60, 0x78, 0x68, 0xf8, - 0x4b, 0x03, 0x40, 0x18, 0x60, 0xf8, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0xff, 0xff, 0xcf, 0xff, - 0xff, 0xff, 0xbf, 0xbf, 0xb5, 0xf0, 0x1c, 0x07, - 0x69, 0x40, 0xb0, 0x83, 0x90, 0x01, 0x69, 0x38, - 0x90, 0x00, 0x25, 0x00, 0x68, 0xfe, 0x07, 0xb0, - 0xd1, 0x01, 0x43, 0xc0, 0xe0, 0x48, 0x09, 0x30, - 0xd2, 0x40, 0x24, 0x10, 0x1c, 0x38, 0xf0, 0x00, - 0xfc, 0x3f, 0x1c, 0x05, 0x0d, 0x70, 0xd3, 0x1b, - 0x24, 0x00, 0x49, 0x21, 0x91, 0x02, 0x01, 0xa0, - 0x99, 0x02, 0x18, 0x40, 0x42, 0xb8, 0xd0, 0x10, - 0x68, 0xc1, 0x07, 0x8a, 0xd0, 0x0d, 0x69, 0x42, - 0x9b, 0x01, 0x42, 0x9a, 0xd1, 0x09, 0x0d, 0x49, - 0xd3, 0x07, 0x68, 0xc1, 0x4b, 0x19, 0x40, 0x19, - 0x60, 0xc1, 0x68, 0xf8, 0x40, 0x18, 0x60, 0xf8, - 0xe0, 0x02, 0x34, 0x01, 0x2c, 0x10, 0xdb, 0xe6, - 0x2c, 0x10, 0xd1, 0x06, 0x98, 0x01, 0xf7, 0xff, - 0xfd, 0x9b, 0x28, 0x00, 0xda, 0x01, 0x25, 0x00, - 0x43, 0xed, 0x0b, 0x30, 0xd3, 0x04, 0x98, 0x00, - 0x49, 0x0f, 0x68, 0x09, 0xf7, 0xfb, 0xfb, 0xa6, - 0x0d, 0xf0, 0x05, 0xc0, 0x23, 0xa5, 0x05, 0xdb, - 0x42, 0xd8, 0xd1, 0x07, 0x48, 0x0b, 0x28, 0x00, - 0xd0, 0x04, 0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff, - 0xff, 0xfe, 0x1c, 0x05, 0x22, 0x40, 0x21, 0x00, - 0x1c, 0x38, 0xf7, 0xfb, 0xfc, 0xe7, 0x1c, 0x28, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0xd3, 0x48, 0xff, 0xef, 0xff, 0xff, - 0x2e, 0x08, 0x21, 0x2c, 0x00, 0x00, 0x00, 0x00, - 0xb5, 0xf7, 0x1c, 0x10, 0x1c, 0x0c, 0x1c, 0x17, - 0xf7, 0xff, 0xff, 0x98, 0x78, 0x20, 0x34, 0x01, - 0x28, 0x61, 0xd0, 0x09, 0x28, 0x72, 0xd0, 0x04, - 0x28, 0x77, 0xd1, 0x25, 0x26, 0x02, 0x25, 0x04, - 0xe0, 0x04, 0x26, 0x01, 0x25, 0x00, 0xe0, 0x01, - 0x4e, 0x1a, 0x25, 0x08, 0x78, 0x20, 0x34, 0x01, - 0x28, 0x2b, 0xd0, 0x06, 0x28, 0x62, 0xd1, 0x09, - 0x23, 0x04, 0x43, 0x1e, 0x23, 0x01, 0x43, 0x1d, - 0xe7, 0xf4, 0x23, 0x03, 0x43, 0x1e, 0x23, 0x02, - 0x43, 0x1d, 0xe7, 0xef, 0x1f, 0xe0, 0x38, 0x19, - 0x7f, 0xc0, 0x28, 0x74, 0xd1, 0x01, 0x23, 0x10, - 0x43, 0x1d, 0x98, 0x00, 0x1c, 0x29, 0xf7, 0xff, - 0xfd, 0x23, 0x23, 0x01, 0x42, 0xd8, 0xd1, 0x04, - 0x20, 0x00, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x21, 0x00, 0x60, 0x79, 0x61, 0x39, - 0x21, 0x01, 0x03, 0x09, 0x61, 0x78, 0x61, 0xf9, - 0x60, 0xfe, 0x09, 0x28, 0xd3, 0x04, 0x22, 0x02, - 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x00, 0xfb, 0xc4, - 0x1c, 0x38, 0xe7, 0xea, 0x00, 0x00, 0x80, 0x02, - 0xb5, 0x90, 0x23, 0x03, 0x4f, 0x08, 0x01, 0x9a, - 0x19, 0xd2, 0x68, 0xd4, 0x07, 0xa4, 0xd1, 0x04, - 0xf7, 0xff, 0xff, 0xaa, 0xbc, 0x90, 0xbc, 0x08, - 0x47, 0x18, 0x33, 0x01, 0x2b, 0x10, 0xdb, 0xf2, - 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0xd3, 0x48, 0xb5, 0xf0, 0x1c, 0x04, - 0x1c, 0x0f, 0x4d, 0x10, 0x68, 0xe8, 0x08, 0x80, - 0xd3, 0x18, 0x20, 0x01, 0x4e, 0x0e, 0x70, 0x30, - 0x40, 0x38, 0xd0, 0x03, 0x20, 0x0a, 0x1c, 0x29, - 0xf0, 0x00, 0xfc, 0x1e, 0x1c, 0x20, 0x1c, 0x29, - 0xf0, 0x00, 0xfc, 0x2c, 0x08, 0xb8, 0xd3, 0x03, - 0x20, 0x0a, 0x1c, 0x29, 0xf0, 0x00, 0xfc, 0x14, - 0x20, 0x00, 0x70, 0x30, 0x20, 0x01, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0xbc, 0xf0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0xd3, 0xc8, - 0x2e, 0x08, 0x23, 0x48, 0xb5, 0x80, 0x1c, 0x07, - 0xa0, 0x06, 0x21, 0x01, 0xf7, 0xff, 0xfc, 0x98, - 0x21, 0x02, 0x1c, 0x38, 0xf7, 0xff, 0xfc, 0x94, - 0x20, 0x01, 0xf7, 0xfc, 0xff, 0x95, 0xbc, 0x80, - 0xbc, 0x08, 0x47, 0x18, 0x43, 0x6f, 0x75, 0x6c, - 0x64, 0x6e, 0x27, 0x74, 0x20, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x20, 0x00, 0xb5, 0xf0, 0x1c, 0x04, - 0x1c, 0x15, 0x1c, 0x0f, 0x48, 0x20, 0x22, 0x01, - 0x02, 0x92, 0x21, 0x00, 0x1c, 0x06, 0xf7, 0xfb, - 0xfc, 0x2d, 0x4a, 0x1e, 0x1c, 0x28, 0xa1, 0x1e, - 0xf7, 0xff, 0xff, 0x4e, 0x28, 0x00, 0xd1, 0x02, - 0x1c, 0x28, 0xf7, 0xff, 0xff, 0xd3, 0x1c, 0x20, - 0x1c, 0x32, 0xa1, 0x1a, 0xf7, 0xff, 0xff, 0x44, - 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x20, 0xf7, 0xff, - 0xff, 0xc9, 0x4a, 0x17, 0x1c, 0x38, 0x1c, 0x15, - 0xa1, 0x13, 0xf7, 0xff, 0xff, 0x39, 0x28, 0x00, - 0xd1, 0x02, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xbe, - 0x1c, 0x30, 0x26, 0x01, 0x03, 0x36, 0x08, 0xf2, - 0x21, 0x00, 0x1c, 0x33, 0xf0, 0x00, 0xf8, 0x52, - 0x28, 0x00, 0xd0, 0x02, 0x1c, 0x20, 0xf7, 0xff, - 0xff, 0xb1, 0x22, 0x01, 0x02, 0x52, 0x21, 0x00, - 0x1c, 0x28, 0x1c, 0x33, 0xf0, 0x00, 0xf8, 0x46, - 0x28, 0x00, 0xd0, 0x02, 0x1c, 0x38, 0xf7, 0xff, - 0xff, 0xa5, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0xd3, 0x48, 0x2e, 0x08, 0xd3, 0xc8, - 0x77, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0xd3, 0x88, 0xb5, 0x90, 0x27, 0x03, - 0x4c, 0x09, 0x01, 0xb8, 0x19, 0x00, 0xf7, 0xff, - 0xfe, 0xa5, 0x37, 0x01, 0x2f, 0x10, 0xdb, 0xf8, - 0x27, 0x00, 0x01, 0xb8, 0x19, 0x00, 0xf7, 0xff, - 0xfe, 0x9d, 0x37, 0x01, 0x2f, 0x03, 0xdb, 0xf8, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0xd3, 0x48, 0xb5, 0xb0, 0x01, 0x80, - 0x1c, 0x0f, 0x4c, 0x0a, 0x19, 0x00, 0x1c, 0x05, - 0xf7, 0xff, 0xfe, 0x8c, 0x01, 0xb8, 0x19, 0x00, - 0x23, 0x01, 0x05, 0x1b, 0x68, 0xc1, 0x43, 0x19, - 0x60, 0xc1, 0x4b, 0x05, 0x40, 0x19, 0x60, 0xe9, - 0x69, 0x40, 0x61, 0x68, 0x1c, 0x38, 0xbc, 0xb0, - 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0xd3, 0x48, - 0x00, 0x10, 0x8f, 0x03, 0xb4, 0xf0, 0x1c, 0x1f, - 0x68, 0xc3, 0x07, 0x9e, 0x0f, 0xb6, 0x25, 0x01, - 0x1c, 0x1c, 0x2e, 0x00, 0xd0, 0x13, 0x1c, 0x1e, - 0x0d, 0xf3, 0xd2, 0x10, 0x02, 0x2b, 0x42, 0x9a, - 0xd0, 0x09, 0x00, 0x5b, 0x42, 0x9a, 0xd0, 0x06, - 0x00, 0x5b, 0x42, 0x9a, 0xd1, 0x07, 0x27, 0x01, - 0x1d, 0xc1, 0x31, 0x1d, 0xe0, 0x06, 0x1e, 0x7e, - 0x4b, 0x08, 0x42, 0x9e, 0xd3, 0x02, 0x1c, 0x28, - 0xbc, 0xf0, 0x47, 0x70, 0x61, 0x01, 0x23, 0x0f, - 0x02, 0x1b, 0x43, 0x9c, 0x60, 0x41, 0x61, 0xc7, - 0x1c, 0x21, 0x43, 0x11, 0x60, 0xc1, 0x20, 0x00, - 0xbc, 0xf0, 0x47, 0x70, 0x00, 0xff, 0xff, 0xff, - 0xe2, 0x00, 0x01, 0x02, 0xe3, 0x31, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x17, 0xe3, 0xa0, 0x80, 0x00, - 0xe1, 0xb0, 0x98, 0x21, 0x01, 0xa0, 0x18, 0x01, - 0x02, 0x88, 0x80, 0x10, 0xe1, 0xb0, 0x9c, 0x21, - 0x01, 0xa0, 0x14, 0x01, 0x02, 0x88, 0x80, 0x08, - 0xe1, 0xb0, 0x9e, 0x21, 0x01, 0xa0, 0x12, 0x01, - 0x02, 0x88, 0x80, 0x04, 0xe1, 0xb0, 0x9f, 0x21, - 0x01, 0xa0, 0x11, 0x01, 0x02, 0x88, 0x80, 0x02, - 0xe1, 0xb0, 0x9f, 0xa1, 0x01, 0xa0, 0x10, 0x81, - 0x02, 0x88, 0x80, 0x01, 0xe0, 0x58, 0x98, 0xa6, - 0x81, 0xa0, 0x19, 0x31, 0x81, 0xa0, 0x88, 0xa6, - 0xe2, 0x68, 0x60, 0x20, 0xe1, 0x81, 0x16, 0x32, - 0xe1, 0xa0, 0x28, 0x12, 0x30, 0x40, 0x00, 0x09, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x56, 0x05, 0x01, - 0x3a, 0x00, 0x00, 0x16, 0xe1, 0xb0, 0x10, 0x02, - 0x01, 0xa0, 0xf0, 0x0e, 0xe3, 0xa0, 0x20, 0x00, - 0xe3, 0xa0, 0x80, 0x20, 0xe1, 0xb0, 0x98, 0x21, - 0x01, 0xa0, 0x18, 0x01, 0x02, 0x88, 0x80, 0x10, - 0xe1, 0xb0, 0x9c, 0x21, 0x01, 0xa0, 0x14, 0x01, - 0x02, 0x88, 0x80, 0x08, 0xe1, 0xb0, 0x9e, 0x21, - 0x01, 0xa0, 0x12, 0x01, 0x02, 0x88, 0x80, 0x04, - 0xe1, 0xb0, 0x9f, 0x21, 0x01, 0xa0, 0x11, 0x01, - 0x02, 0x88, 0x80, 0x02, 0xe1, 0xb0, 0x9f, 0xa1, - 0x01, 0xa0, 0x10, 0x81, 0x02, 0x88, 0x80, 0x01, - 0xe0, 0x58, 0x98, 0xa6, 0x81, 0xa0, 0x19, 0x31, - 0x30, 0x40, 0x00, 0x09, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0xa0, 0x88, 0xa6, 0xe2, 0x68, 0x90, 0x20, - 0xe1, 0xa0, 0x18, 0x11, 0xe1, 0x81, 0x19, 0x32, - 0xe1, 0xa0, 0x28, 0x12, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe2, 0x03, 0x31, 0x02, 0xe3, 0x34, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x17, 0xe3, 0xa0, 0x80, 0x00, - 0xe1, 0xb0, 0x98, 0x24, 0x01, 0xa0, 0x48, 0x04, - 0x02, 0x88, 0x80, 0x10, 0xe1, 0xb0, 0x9c, 0x24, - 0x01, 0xa0, 0x44, 0x04, 0x02, 0x88, 0x80, 0x08, - 0xe1, 0xb0, 0x9e, 0x24, 0x01, 0xa0, 0x42, 0x04, - 0x02, 0x88, 0x80, 0x04, 0xe1, 0xb0, 0x9f, 0x24, - 0x01, 0xa0, 0x41, 0x04, 0x02, 0x88, 0x80, 0x02, - 0xe1, 0xb0, 0x9f, 0xa4, 0x01, 0xa0, 0x40, 0x84, - 0x02, 0x88, 0x80, 0x01, 0xe0, 0x58, 0x98, 0xa6, - 0x81, 0xa0, 0x49, 0x34, 0x81, 0xa0, 0x88, 0xa6, - 0xe2, 0x68, 0x60, 0x20, 0xe1, 0x84, 0x46, 0x35, - 0xe1, 0xa0, 0x58, 0x15, 0x30, 0x43, 0x30, 0x09, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x56, 0x05, 0x01, - 0x3a, 0x00, 0x00, 0x16, 0xe1, 0xb0, 0x40, 0x05, - 0x01, 0xa0, 0xf0, 0x0e, 0xe3, 0xa0, 0x50, 0x00, - 0xe3, 0xa0, 0x80, 0x20, 0xe1, 0xb0, 0x98, 0x24, - 0x01, 0xa0, 0x48, 0x04, 0x02, 0x88, 0x80, 0x10, - 0xe1, 0xb0, 0x9c, 0x24, 0x01, 0xa0, 0x44, 0x04, - 0x02, 0x88, 0x80, 0x08, 0xe1, 0xb0, 0x9e, 0x24, - 0x01, 0xa0, 0x42, 0x04, 0x02, 0x88, 0x80, 0x04, - 0xe1, 0xb0, 0x9f, 0x24, 0x01, 0xa0, 0x41, 0x04, - 0x02, 0x88, 0x80, 0x02, 0xe1, 0xb0, 0x9f, 0xa4, - 0x01, 0xa0, 0x40, 0x84, 0x02, 0x88, 0x80, 0x01, - 0xe0, 0x58, 0x98, 0xa6, 0x81, 0xa0, 0x49, 0x34, - 0x30, 0x43, 0x30, 0x09, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe1, 0xa0, 0x88, 0xa6, 0xe2, 0x68, 0x90, 0x20, - 0xe1, 0xa0, 0x48, 0x14, 0xe1, 0x84, 0x49, 0x35, - 0xe1, 0xa0, 0x58, 0x15, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe3, 0xa0, 0x20, 0x00, 0xe2, 0x16, 0x01, 0x02, - 0x12, 0x66, 0x10, 0x00, 0x01, 0xb0, 0x10, 0x06, - 0x03, 0xa0, 0x30, 0x00, 0x01, 0xa0, 0xf0, 0x0e, - 0xe3, 0xa0, 0x39, 0x01, 0xe3, 0x83, 0x30, 0x1e, - 0xe3, 0xa0, 0x60, 0x00, 0xe3, 0x31, 0x00, 0x00, - 0x01, 0xa0, 0x10, 0x02, 0x03, 0xa0, 0x20, 0x00, - 0x02, 0x43, 0x30, 0x20, 0xe3, 0xa0, 0x80, 0x00, - 0xe1, 0xb0, 0x98, 0x21, 0x01, 0xa0, 0x18, 0x01, - 0x02, 0x88, 0x80, 0x10, 0xe1, 0xb0, 0x9c, 0x21, - 0x01, 0xa0, 0x14, 0x01, 0x02, 0x88, 0x80, 0x08, - 0xe1, 0xb0, 0x9e, 0x21, 0x01, 0xa0, 0x12, 0x01, - 0x02, 0x88, 0x80, 0x04, 0xe1, 0xb0, 0x9f, 0x21, - 0x01, 0xa0, 0x11, 0x01, 0x02, 0x88, 0x80, 0x02, - 0xe1, 0xb0, 0x9f, 0xa1, 0x01, 0xa0, 0x10, 0x81, - 0x02, 0x88, 0x80, 0x01, 0xe2, 0x78, 0x90, 0x20, - 0xe1, 0x81, 0x19, 0x32, 0xe1, 0xa0, 0x28, 0x12, - 0xe0, 0x43, 0x30, 0x08, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe3, 0x34, 0x00, 0x00, 0x01, 0xa0, 0x40, 0x05, - 0x03, 0xa0, 0x50, 0x00, 0x02, 0x43, 0x30, 0x20, - 0xe3, 0xa0, 0x80, 0x00, 0xe1, 0xb0, 0x98, 0x24, - 0x01, 0xa0, 0x48, 0x04, 0x02, 0x88, 0x80, 0x10, - 0xe1, 0xb0, 0x9c, 0x24, 0x01, 0xa0, 0x44, 0x04, - 0x02, 0x88, 0x80, 0x08, 0xe1, 0xb0, 0x9e, 0x24, - 0x01, 0xa0, 0x42, 0x04, 0x02, 0x88, 0x80, 0x04, - 0xe1, 0xb0, 0x9f, 0x24, 0x01, 0xa0, 0x41, 0x04, - 0x02, 0x88, 0x80, 0x02, 0xe1, 0xb0, 0x9f, 0xa4, - 0x01, 0xa0, 0x40, 0x84, 0x02, 0x88, 0x80, 0x01, - 0xe2, 0x78, 0x90, 0x20, 0xe1, 0x84, 0x49, 0x35, - 0xe1, 0xa0, 0x58, 0x15, 0xe0, 0x43, 0x30, 0x08, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x31, 0x00, 0x00, - 0x01, 0xa0, 0x10, 0x02, 0x03, 0xa0, 0x20, 0x00, - 0x02, 0x83, 0x30, 0x20, 0xe3, 0xa0, 0x80, 0x00, - 0xe1, 0xb0, 0x98, 0x21, 0x01, 0xa0, 0x18, 0x01, - 0x02, 0x88, 0x80, 0x10, 0xe1, 0xb0, 0x9c, 0x21, - 0x01, 0xa0, 0x14, 0x01, 0x02, 0x88, 0x80, 0x08, - 0xe1, 0xb0, 0x9e, 0x21, 0x01, 0xa0, 0x12, 0x01, - 0x02, 0x88, 0x80, 0x04, 0xe1, 0xb0, 0x9f, 0x21, - 0x01, 0xa0, 0x11, 0x01, 0x02, 0x88, 0x80, 0x02, - 0xe1, 0xb0, 0x9f, 0xa1, 0x01, 0xa0, 0x10, 0x81, - 0x02, 0x88, 0x80, 0x01, 0xe2, 0x78, 0x90, 0x20, - 0xe1, 0x81, 0x19, 0x32, 0xe1, 0xa0, 0x28, 0x12, - 0xe0, 0x83, 0x30, 0x08, 0xe1, 0xa0, 0xf0, 0x0e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7f, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe1, 0x92, 0x80, 0x81, 0x0a, 0x00, 0x00, 0x05, - 0xe3, 0x11, 0x01, 0x01, 0x0a, 0x00, 0x00, 0x0c, - 0xe1, 0x95, 0x80, 0x84, 0x0a, 0x00, 0x00, 0x0a, - 0xe3, 0x14, 0x01, 0x01, 0x1a, 0x00, 0x00, 0x08, - 0xe3, 0x14, 0x01, 0x01, 0x0a, 0x00, 0x00, 0x28, - 0xe1, 0xa0, 0x00, 0x03, 0xe1, 0xa0, 0x10, 0x04, - 0xe1, 0xa0, 0x20, 0x05, 0xea, 0x00, 0x00, 0x04, - 0xe3, 0x11, 0x01, 0x01, 0x0a, 0x00, 0x00, 0x22, - 0xea, 0x00, 0x00, 0x01, 0xe3, 0x11, 0x01, 0x01, - 0x0a, 0x00, 0x00, 0x1f, 0xe3, 0x1b, 0x00, 0x01, - 0x1a, 0x00, 0x00, 0x16, 0xe3, 0x1b, 0x00, 0x02, - 0x1a, 0x00, 0x00, 0x0c, 0xe3, 0x1b, 0x0c, 0x02, - 0x1a, 0x00, 0x00, 0x05, 0xe3, 0xc0, 0x81, 0x03, - 0xe3, 0xa0, 0x90, 0xff, 0xe3, 0x89, 0x9c, 0x43, - 0xe1, 0x58, 0x00, 0x09, 0x33, 0xc2, 0x20, 0x01, - 0x03, 0x82, 0x20, 0x01, 0xe2, 0x00, 0x01, 0x03, - 0xe3, 0x80, 0x00, 0xff, 0xe3, 0x80, 0x0c, 0x7f, - 0xe1, 0x30, 0x00, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe2, 0x00, 0x01, 0x03, 0xe3, 0x80, 0x00, 0xff, - 0xe3, 0x80, 0x0c, 0x43, 0xe1, 0xa0, 0x25, 0xa2, - 0xe1, 0xa0, 0x25, 0x82, 0xe3, 0x81, 0x11, 0x02, - 0xe1, 0x30, 0x00, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, - 0xe2, 0x00, 0x01, 0x03, 0xe3, 0x80, 0x00, 0x7f, - 0xe3, 0x80, 0x09, 0x01, 0xe3, 0xa0, 0x20, 0x00, - 0xe3, 0xc1, 0x10, 0xff, 0xe3, 0x81, 0x11, 0x02, - 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x80, 0x04, 0x61, - 0xe1, 0xa0, 0xf0, 0x0e, 0xb5, 0x80, 0x1c, 0x0f, - 0x29, 0x0f, 0xdd, 0x04, 0x11, 0x39, 0xf7, 0xff, - 0xff, 0xf9, 0x07, 0x3f, 0x0f, 0x3f, 0x2f, 0x09, - 0xdd, 0x02, 0x1d, 0xf9, 0x31, 0x29, 0xe0, 0x01, - 0x1d, 0xf9, 0x31, 0x50, 0x70, 0x01, 0x30, 0x01, - 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, - 0x1c, 0x07, 0x48, 0x0d, 0x68, 0x01, 0x29, 0x00, - 0xd1, 0x12, 0x4c, 0x0c, 0x1c, 0x20, 0xa1, 0x0c, - 0x22, 0x14, 0xf7, 0xfb, 0xf8, 0x67, 0x1d, 0xe0, - 0x30, 0x0b, 0x1c, 0x39, 0xf7, 0xff, 0xff, 0xda, - 0x21, 0x29, 0x70, 0x01, 0x21, 0x00, 0x70, 0x41, - 0x1c, 0x20, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x30, 0x08, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, - 0x2e, 0x08, 0x21, 0x4c, 0x2e, 0x08, 0xd7, 0x48, - 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x20, 0x28, - 0x30, 0x78, 0x00, 0x00, 0xb5, 0x90, 0x1c, 0x04, - 0x1c, 0x0f, 0xa0, 0x09, 0x21, 0x01, 0xf7, 0xff, - 0xf9, 0x87, 0x21, 0x00, 0x1c, 0x20, 0xf7, 0xff, - 0xf9, 0x83, 0x21, 0x02, 0x1c, 0x38, 0xf7, 0xff, - 0xf9, 0x7f, 0x20, 0x01, 0xf7, 0xfc, 0xfc, 0x80, - 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x2a, 0x2a, 0x2a, 0x20, 0x66, 0x61, 0x74, 0x61, - 0x6c, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, - 0x69, 0x6e, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00, - 0xb5, 0xb0, 0x1c, 0x07, 0x68, 0xc0, 0x07, 0x81, - 0xd0, 0x1f, 0x23, 0x20, 0x40, 0x18, 0xd0, 0x01, - 0x6a, 0xbd, 0xe0, 0x04, 0x68, 0x79, 0x69, 0xba, - 0x18, 0x89, 0x69, 0x3a, 0x1a, 0x8d, 0x28, 0x00, - 0xd0, 0x02, 0x1c, 0x38, 0xf7, 0xff, 0xfb, 0xa2, - 0x68, 0xf8, 0x4b, 0x0a, 0x40, 0x18, 0x60, 0xf8, - 0x1c, 0x38, 0xf7, 0xff, 0xfb, 0x67, 0x1c, 0x04, - 0x22, 0x00, 0x1c, 0x38, 0x1c, 0x29, 0xf0, 0x00, - 0xf8, 0x27, 0x1c, 0x20, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x20, 0x00, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0xff, 0xff, 0xcf, 0xff, - 0xb5, 0xb0, 0x24, 0x00, 0x28, 0x00, 0xd0, 0x03, - 0xf7, 0xff, 0xff, 0xce, 0x1c, 0x04, 0xe0, 0x0c, - 0x27, 0x00, 0x4d, 0x08, 0x01, 0xb8, 0x19, 0x40, - 0xf7, 0xff, 0xff, 0xc6, 0x28, 0x00, 0xd0, 0x01, - 0x24, 0x00, 0x43, 0xe4, 0x37, 0x01, 0x2f, 0x10, - 0xdb, 0xf4, 0x1c, 0x20, 0xbc, 0xb0, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0xd3, 0x48, - 0xb5, 0xf7, 0x68, 0xc5, 0x69, 0x46, 0x1c, 0x0c, - 0x1c, 0x07, 0xb0, 0x81, 0x48, 0x3c, 0x40, 0x28, - 0xd0, 0x04, 0x1c, 0x38, 0xf7, 0xff, 0xf9, 0xaa, - 0x28, 0x00, 0xd0, 0x01, 0x20, 0x02, 0xe0, 0x6a, - 0x9a, 0x03, 0x2a, 0x00, 0xd0, 0x26, 0x2a, 0x01, - 0xd0, 0x0b, 0x2a, 0x02, 0xd1, 0x24, 0x1c, 0x30, - 0xf7, 0xff, 0xf9, 0xd4, 0x28, 0x00, 0xda, 0x09, - 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0xa7, 0x20, 0x01, - 0xe0, 0x59, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x8c, - 0x19, 0x04, 0xe0, 0x13, 0x68, 0x79, 0x6a, 0xfa, - 0x42, 0x8a, 0xd9, 0x00, 0x1c, 0x11, 0x69, 0xba, - 0x18, 0x89, 0x69, 0x3a, 0x1a, 0x89, 0x68, 0xfa, - 0x09, 0x92, 0xd3, 0x03, 0x6a, 0xba, 0x42, 0x8a, - 0xdd, 0x00, 0x1c, 0x11, 0x42, 0x81, 0xdd, 0x00, - 0x1c, 0x08, 0x18, 0x24, 0x2c, 0x00, 0xda, 0x03, - 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x87, 0xe7, 0xcd, - 0x0b, 0xa8, 0xd3, 0x04, 0x68, 0x78, 0x6a, 0xf9, - 0x42, 0x81, 0xd2, 0x00, 0x62, 0xf8, 0x69, 0xb8, - 0x42, 0xa0, 0xdc, 0x10, 0x68, 0x79, 0x6a, 0xfa, - 0x42, 0x8a, 0xd9, 0x01, 0x1c, 0x13, 0xe0, 0x00, - 0x1c, 0x0b, 0x18, 0x1b, 0x69, 0x3e, 0x1b, 0x9b, - 0x42, 0xa3, 0xdb, 0x04, 0x6b, 0x3b, 0x93, 0x00, - 0x18, 0xc3, 0x42, 0xa3, 0xdc, 0x06, 0x20, 0x20, - 0x43, 0x28, 0x21, 0x00, 0x60, 0x39, 0x60, 0xb9, - 0x62, 0xbc, 0xe0, 0x14, 0x1a, 0x24, 0x08, 0xa8, - 0xd3, 0x03, 0x9b, 0x00, 0x1b, 0x18, 0x42, 0x40, - 0x60, 0xb8, 0x08, 0x68, 0xd3, 0x06, 0x42, 0x8a, - 0xd9, 0x00, 0x1c, 0x11, 0x1b, 0x88, 0x1b, 0x00, - 0x42, 0x40, 0x60, 0x38, 0x19, 0x30, 0x23, 0x20, - 0x43, 0x9d, 0x60, 0x78, 0x1c, 0x28, 0x4b, 0x05, - 0x40, 0x18, 0x60, 0xf8, 0x20, 0x00, 0xb0, 0x01, - 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, - 0x00, 0x10, 0x00, 0x03, 0xff, 0xf7, 0xcf, 0xbf, - 0xb5, 0x00, 0x68, 0x8a, 0x68, 0x4b, 0x3a, 0x01, - 0xd5, 0x03, 0xf0, 0x00, 0xf8, 0x3f, 0xbc, 0x08, - 0x47, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x70, 0x18, - 0x33, 0x01, 0x60, 0x8a, 0x60, 0x4b, 0xbc, 0x08, - 0x47, 0x18, 0x00, 0x00, 0xb5, 0xb0, 0x1c, 0x07, - 0x78, 0x00, 0x1c, 0x0c, 0x37, 0x01, 0x28, 0x00, - 0xd0, 0x0e, 0x25, 0x00, 0x43, 0xed, 0x1c, 0x21, - 0xf0, 0x00, 0xf8, 0xe8, 0x42, 0xa8, 0xd1, 0x03, - 0x1c, 0x28, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x78, 0x38, 0x37, 0x01, 0x28, 0x00, 0xd1, 0xf2, - 0x20, 0x00, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, - 0x68, 0xc1, 0x07, 0x8a, 0xd1, 0x04, 0x20, 0x01, - 0x49, 0x09, 0x60, 0x08, 0x42, 0x40, 0x47, 0x70, - 0x09, 0x8a, 0xd3, 0x01, 0x6a, 0x80, 0xe0, 0x04, - 0x68, 0x42, 0x69, 0x83, 0x18, 0xd2, 0x69, 0x00, - 0x1a, 0x10, 0x0d, 0x09, 0xd3, 0xf3, 0x28, 0x00, - 0xdd, 0xf1, 0x38, 0x01, 0x47, 0x70, 0x00, 0x00, - 0x2e, 0x08, 0x21, 0x30, 0xb5, 0xf0, 0x1c, 0x04, - 0x68, 0xc8, 0x1c, 0x0f, 0x4b, 0x5a, 0x40, 0x18, - 0x23, 0x01, 0x05, 0x9b, 0x43, 0x18, 0x60, 0xc8, - 0x09, 0x80, 0xd3, 0x02, 0x1c, 0x38, 0xf7, 0xff, - 0xfa, 0x95, 0x06, 0x26, 0x0e, 0x36, 0x68, 0xb9, - 0x29, 0x00, 0xda, 0x12, 0x68, 0xf8, 0x0a, 0x82, - 0xd2, 0x0f, 0x22, 0x00, 0x43, 0xd2, 0x1a, 0x51, - 0x23, 0x09, 0x03, 0x5b, 0x43, 0x18, 0x60, 0xf8, - 0x60, 0xb9, 0x68, 0x79, 0x70, 0x0e, 0x31, 0x01, - 0x60, 0x79, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, - 0x47, 0x18, 0x68, 0xf8, 0x49, 0x49, 0x40, 0x01, - 0x29, 0x02, 0xd0, 0x03, 0x1c, 0x38, 0xf7, 0xff, - 0xf9, 0xcd, 0xe0, 0x7f, 0x49, 0x46, 0x40, 0x01, - 0x23, 0x01, 0x03, 0xdb, 0x42, 0x99, 0xd1, 0x0b, - 0x22, 0x02, 0x21, 0x00, 0x1c, 0x38, 0xf7, 0xff, - 0xfe, 0xfb, 0x68, 0xf8, 0x09, 0x80, 0xd3, 0x02, - 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x63, 0x68, 0xf8, - 0x25, 0x09, 0x03, 0x6d, 0x43, 0x05, 0x60, 0xfd, - 0x69, 0x38, 0x28, 0x00, 0xd1, 0x2f, 0x1c, 0x38, - 0xf7, 0xff, 0xf8, 0xa0, 0x28, 0x00, 0xd0, 0x18, - 0x68, 0xf8, 0x0a, 0x00, 0x07, 0x80, 0xd0, 0x09, - 0x69, 0xf8, 0xf7, 0xff, 0xf9, 0x7d, 0x61, 0x38, - 0x60, 0x78, 0x23, 0x01, 0x02, 0xdb, 0x43, 0x1d, - 0x68, 0xf8, 0xe0, 0x1a, 0x1d, 0xf8, 0x30, 0x1d, - 0x61, 0x38, 0x60, 0x78, 0x20, 0x01, 0x23, 0x01, - 0x02, 0x9b, 0x43, 0x1d, 0x61, 0xf8, 0x60, 0xfd, - 0xe0, 0x11, 0x69, 0xf8, 0xf7, 0xff, 0xf9, 0x68, - 0x61, 0x38, 0x60, 0x78, 0x23, 0x01, 0x02, 0xdb, - 0x43, 0x1d, 0x68, 0xf8, 0x43, 0x28, 0x60, 0xf8, - 0x0a, 0x29, 0x07, 0x89, 0xd1, 0x03, 0x08, 0xdb, - 0x43, 0x1d, 0x43, 0x28, 0x60, 0xf8, 0x0a, 0x68, - 0xd3, 0x19, 0x68, 0x78, 0x6a, 0xf9, 0x69, 0x3c, - 0x42, 0x81, 0xd9, 0x00, 0x1c, 0x08, 0x1b, 0x01, - 0xd0, 0x05, 0x1c, 0x20, 0x1c, 0x3a, 0xf7, 0xff, - 0xf9, 0x7d, 0x28, 0x00, 0xd1, 0x26, 0x1c, 0x60, - 0x62, 0xf8, 0x60, 0x78, 0x69, 0xf8, 0x1e, 0x41, - 0x63, 0x38, 0x60, 0xb9, 0x70, 0x26, 0x1c, 0x30, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x69, 0x38, - 0x68, 0x7a, 0x70, 0x14, 0x32, 0x01, 0x60, 0x7a, - 0x6a, 0xf9, 0x42, 0x91, 0xd8, 0x00, 0x1c, 0x11, - 0x1a, 0x09, 0x69, 0xfa, 0x63, 0x3a, 0x0a, 0xeb, - 0xd2, 0x03, 0x2e, 0x0a, 0xd0, 0x01, 0x42, 0x8a, - 0xdc, 0x0d, 0x62, 0xf8, 0x22, 0x00, 0x60, 0x78, - 0x60, 0xba, 0x1c, 0x3a, 0xf7, 0xff, 0xf9, 0x56, - 0x28, 0x00, 0xd0, 0x04, 0x20, 0x00, 0x43, 0xc0, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x30, - 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0xff, 0xf7, 0xff, 0xff, 0x00, 0x00, 0x10, 0x8a, - 0x00, 0x00, 0xa0, 0x10, 0xb5, 0x00, 0x68, 0x8a, - 0x68, 0x4b, 0x3a, 0x01, 0xd5, 0x03, 0xf7, 0xff, - 0xff, 0x39, 0xbc, 0x08, 0x47, 0x18, 0x06, 0x00, - 0x0e, 0x00, 0x70, 0x18, 0x33, 0x01, 0x60, 0x8a, - 0x60, 0x4b, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, - 0x47, 0x78, 0x46, 0xc0, 0xe9, 0x2d, 0x40, 0x00, - 0xe2, 0x8f, 0xe0, 0x00, 0xef, 0x12, 0x34, 0x56, - 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, - 0xe1, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x00, 0x18, - 0xe5, 0x9f, 0x10, 0x18, 0xef, 0x12, 0x34, 0x56, - 0xea, 0xff, 0xff, 0xfe, 0xe1, 0xa0, 0x10, 0x00, - 0xe3, 0xa0, 0x00, 0x18, 0xe5, 0x9f, 0x10, 0x08, - 0xef, 0x12, 0x34, 0x56, 0xea, 0xff, 0xff, 0xfe, - 0x00, 0x02, 0x00, 0x26, 0x00, 0x02, 0x00, 0x23, - 0xe8, 0xb0, 0x01, 0xf0, 0xe8, 0xa1, 0x01, 0xf0, - 0xe8, 0xb0, 0x01, 0xf8, 0xe8, 0xa1, 0x01, 0xf8, - 0xe8, 0xb0, 0x01, 0xf8, 0xe8, 0xa1, 0x01, 0xf8, - 0xe8, 0xb0, 0x01, 0xf8, 0xe8, 0xa1, 0x01, 0xf8, - 0xe8, 0xb0, 0x01, 0xf8, 0xe8, 0xa1, 0x01, 0xf8, - 0xe8, 0xb0, 0x01, 0xf8, 0xe8, 0xa1, 0x01, 0xf8, - 0xe8, 0xb0, 0x01, 0xf8, 0xe8, 0xa1, 0x01, 0xf8, - 0xe8, 0xb0, 0x01, 0xf8, 0xe8, 0xa1, 0x01, 0xf8, - 0xe2, 0x52, 0x20, 0xbc, 0x1a, 0xff, 0xff, 0xed, - 0xe8, 0xbd, 0x01, 0xf8, 0xe1, 0x2f, 0xff, 0x1e, - 0xe4, 0x90, 0x40, 0x04, 0xe1, 0x85, 0x54, 0x24, - 0xe4, 0x81, 0x50, 0x04, 0xe1, 0xa0, 0x5c, 0x04, - 0xe2, 0x53, 0x30, 0x04, 0x1a, 0xff, 0xff, 0xf9, - 0xe5, 0x9f, 0xf0, 0x88, 0xe4, 0x90, 0x40, 0x04, - 0xe1, 0x85, 0x5c, 0x24, 0xe4, 0x81, 0x50, 0x04, - 0xe1, 0xa0, 0x54, 0x04, 0xe2, 0x53, 0x30, 0x04, - 0x1a, 0xff, 0xff, 0xf9, 0xe5, 0x9f, 0xf0, 0x70, - 0xe4, 0x90, 0x40, 0x04, 0xe1, 0xa0, 0x58, 0x24, - 0xe0, 0xc1, 0x50, 0xb2, 0xe0, 0xc1, 0x40, 0xb2, - 0xe2, 0x53, 0x30, 0x04, 0x1a, 0xff, 0xff, 0xf9, - 0xe5, 0x9f, 0xf0, 0x4c, 0xe2, 0x03, 0x40, 0x0f, - 0xe0, 0x53, 0x40, 0x04, 0x0a, 0x00, 0x00, 0x0a, - 0xe9, 0x2d, 0x00, 0xc4, 0xe1, 0xa0, 0x20, 0x03, - 0xe1, 0xa0, 0x30, 0x04, 0xe8, 0xb0, 0x00, 0xf0, - 0xe8, 0xa1, 0x00, 0xf0, 0xe2, 0x53, 0x30, 0x10, - 0x1a, 0xff, 0xff, 0xfb, 0xe1, 0xa0, 0x30, 0x02, - 0xe8, 0xbd, 0x00, 0xc4, 0xe2, 0x13, 0x30, 0x0f, - 0x0a, 0x00, 0x00, 0x03, 0xe4, 0x90, 0x40, 0x04, - 0xe4, 0x81, 0x40, 0x04, 0xe2, 0x53, 0x30, 0x04, - 0x1a, 0xff, 0xff, 0xfb, 0xe5, 0x9f, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x38, 0x58, - 0x2e, 0x02, 0x37, 0xfc, 0x2e, 0x02, 0x38, 0x2c, - 0xe9, 0x2d, 0x00, 0x38, 0xe3, 0x52, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x3f, 0xe3, 0xe0, 0x30, 0x03, - 0xe0, 0x12, 0x30, 0x03, 0x0a, 0x00, 0x00, 0x30, - 0xe2, 0x10, 0x30, 0x01, 0x0a, 0x00, 0x00, 0x03, - 0xe4, 0xd0, 0x30, 0x01, 0xe4, 0xc1, 0x30, 0x01, - 0xe2, 0x52, 0x20, 0x01, 0x0a, 0x00, 0x00, 0x36, - 0xe2, 0x10, 0x30, 0x02, 0x0a, 0x00, 0x00, 0x05, - 0xe0, 0xd0, 0x30, 0xb2, 0xe1, 0xa0, 0x44, 0x23, - 0xe4, 0xc1, 0x40, 0x01, 0xe4, 0xc1, 0x30, 0x01, - 0xe2, 0x52, 0x20, 0x02, 0x0a, 0x00, 0x00, 0x2e, - 0xe3, 0xe0, 0x30, 0x03, 0xe0, 0x12, 0x30, 0x03, - 0x0a, 0x00, 0x00, 0x1f, 0xe2, 0x11, 0x40, 0x01, - 0x0a, 0x00, 0x00, 0x19, 0xe2, 0x11, 0x40, 0x02, - 0x1a, 0x00, 0x00, 0x0b, 0xe2, 0x41, 0x10, 0x01, - 0xe5, 0x91, 0x50, 0x00, 0xe1, 0xa0, 0x5c, 0x25, - 0xe1, 0xa0, 0x5c, 0x05, 0xe5, 0x9f, 0xf0, 0xa8, - 0xe5, 0x91, 0x40, 0x00, 0xe1, 0xa0, 0x44, 0x04, - 0xe1, 0xa0, 0x44, 0x24, 0xe1, 0x85, 0x50, 0x04, - 0xe5, 0x81, 0x50, 0x00, 0xe2, 0x81, 0x10, 0x01, - 0xea, 0x00, 0x00, 0x0f, 0xe2, 0x41, 0x10, 0x03, - 0xe5, 0x91, 0x50, 0x00, 0xe1, 0xa0, 0x54, 0x25, - 0xe1, 0xa0, 0x54, 0x05, 0xe5, 0x9f, 0xf0, 0x7c, - 0xe5, 0x91, 0x40, 0x00, 0xe1, 0xa0, 0x4c, 0x04, - 0xe1, 0xa0, 0x4c, 0x24, 0xe1, 0x85, 0x50, 0x04, - 0xe5, 0x81, 0x50, 0x00, 0xe2, 0x81, 0x10, 0x03, - 0xea, 0x00, 0x00, 0x03, 0xe2, 0x11, 0x40, 0x02, - 0x0a, 0x00, 0x00, 0x00, 0xe5, 0x9f, 0xf0, 0x5c, - 0xe5, 0x9f, 0xf0, 0x48, 0xe2, 0x12, 0x20, 0x03, - 0x0a, 0x00, 0x00, 0x09, 0xe4, 0xd0, 0x40, 0x01, - 0xe4, 0xc1, 0x40, 0x01, 0xe2, 0x52, 0x20, 0x01, - 0x0a, 0x00, 0x00, 0x05, 0xe4, 0xd0, 0x40, 0x01, - 0xe4, 0xc1, 0x40, 0x01, 0xe2, 0x52, 0x20, 0x01, - 0x0a, 0x00, 0x00, 0x01, 0xe4, 0xd0, 0x40, 0x01, - 0xe4, 0xc1, 0x40, 0x01, 0xe8, 0xbd, 0x00, 0x38, - 0xe3, 0x8e, 0xe0, 0x01, 0xe1, 0x2f, 0xff, 0x1e, - 0xe9, 0x2d, 0x01, 0xf8, 0xe5, 0x9f, 0xf0, 0x18, - 0x2e, 0x02, 0x36, 0xcc, 0x2e, 0x02, 0x37, 0x04, - 0x2e, 0x02, 0x37, 0x20, 0x2e, 0x02, 0x36, 0xcc, - 0x2e, 0x02, 0x36, 0xe8, 0x2e, 0x02, 0x37, 0x20, - 0x2e, 0x02, 0x37, 0x04, 0x2e, 0x02, 0x36, 0x7c, - 0xe9, 0x2d, 0x5f, 0xff, 0xe1, 0x4f, 0x00, 0x00, - 0xe9, 0x2d, 0x00, 0x01, 0xe2, 0x8f, 0x00, 0x01, - 0xe1, 0x2f, 0xff, 0x10, 0x21, 0xff, 0x48, 0x37, - 0x68, 0x00, 0x40, 0x52, 0x42, 0x08, 0xd1, 0x0b, - 0x32, 0x20, 0x0a, 0x00, 0x42, 0x08, 0xd1, 0x07, - 0x32, 0x20, 0x0a, 0x00, 0x42, 0x08, 0xd1, 0x03, - 0x0a, 0x00, 0x42, 0x08, 0xd0, 0x23, 0x32, 0x20, - 0x21, 0x0f, 0x42, 0x08, 0xd1, 0x01, 0x32, 0x10, - 0x09, 0x00, 0x21, 0x01, 0x42, 0x08, 0xd1, 0x08, - 0x1d, 0x12, 0x21, 0x02, 0x42, 0x08, 0xd1, 0x04, - 0x1d, 0x12, 0x21, 0x04, 0x42, 0x08, 0xd1, 0x00, - 0x1d, 0x12, 0x48, 0x25, 0x68, 0x00, 0xb4, 0x01, - 0x08, 0x90, 0x21, 0x01, 0x40, 0x81, 0x48, 0x21, - 0x60, 0x01, 0x48, 0x1d, 0x58, 0x82, 0x48, 0x01, - 0x46, 0x86, 0x47, 0x10, 0x2e, 0x02, 0x39, 0x35, - 0xbc, 0x02, 0x48, 0x1d, 0x60, 0x01, 0x00, 0x00, - 0x47, 0x78, 0x00, 0x00, 0xe8, 0xbd, 0x00, 0x01, - 0xe1, 0x69, 0xf0, 0x00, 0xe8, 0xbd, 0x5f, 0xff, - 0xe2, 0x5e, 0xf0, 0x04, 0x48, 0x12, 0x21, 0x20, - 0x4a, 0x12, 0x60, 0x02, 0x1d, 0x00, 0x1e, 0x49, - 0xd1, 0xfb, 0x20, 0x00, 0x47, 0x70, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0x46, 0x73, 0x49, 0x0e, - 0x60, 0x08, 0x20, 0x00, 0x47, 0x18, 0x46, 0x73, - 0x49, 0x0c, 0x60, 0x08, 0x20, 0x00, 0x47, 0x18, - 0x46, 0x73, 0x48, 0x0b, 0x68, 0x00, 0x47, 0x18, - 0x46, 0x73, 0x49, 0x09, 0x60, 0x08, 0x47, 0x18, - 0x46, 0x73, 0x4a, 0x03, 0x00, 0x80, 0x18, 0x12, - 0x68, 0x10, 0x60, 0x11, 0x47, 0x18, 0x00, 0x00, - 0x2e, 0x08, 0x3b, 0xa4, 0x2e, 0x02, 0x39, 0x64, - 0x66, 0x00, 0x00, 0x10, 0x66, 0x00, 0x00, 0x14, - 0x66, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0x1c, - 0xe9, 0x2d, 0x5f, 0xf0, 0xe1, 0x4f, 0x40, 0x00, - 0xe3, 0x14, 0x00, 0x20, 0x11, 0x5e, 0x40, 0xb2, - 0x13, 0xc4, 0x4c, 0xff, 0x05, 0x1e, 0x40, 0x04, - 0x03, 0xc4, 0x44, 0xff, 0xe5, 0x9f, 0x50, 0x14, - 0xe7, 0x95, 0x51, 0x04, 0xe5, 0x9f, 0xe0, 0x00, - 0xe1, 0x2f, 0xff, 0x15, 0x2e, 0x02, 0x39, 0xe4, - 0xe8, 0xbd, 0x5f, 0xf0, 0xe1, 0xb0, 0xf0, 0x0e, - 0x2e, 0x08, 0x20, 0x68, 0x00, 0x00, 0x00, 0xc0, - 0x46, 0x73, 0x47, 0x78, 0xe1, 0x0f, 0x10, 0x00, - 0xe3, 0x81, 0x00, 0x80, 0xe1, 0x29, 0xf0, 0x00, - 0xe2, 0x01, 0x00, 0x80, 0xe1, 0x2f, 0xff, 0x13, - 0x46, 0x73, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0x4f, 0x10, 0x00, 0xe3, 0x81, 0x00, 0x80, - 0xe1, 0x69, 0xf0, 0x00, 0xe2, 0x01, 0x00, 0x80, - 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x00, 0x00, - 0x47, 0x78, 0x00, 0x00, 0xe1, 0x0f, 0x10, 0x00, - 0xe3, 0x81, 0x00, 0x40, 0xe1, 0x29, 0xf0, 0x00, - 0xe2, 0x01, 0x00, 0x40, 0xe1, 0x2f, 0xff, 0x13, - 0x46, 0x73, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0x4f, 0x10, 0x00, 0xe3, 0x81, 0x00, 0x40, - 0xe1, 0x69, 0xf0, 0x00, 0xe2, 0x01, 0x00, 0x40, - 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x00, 0x00, - 0x47, 0x78, 0x00, 0x00, 0xe1, 0x0f, 0x00, 0x00, - 0xe3, 0xc0, 0x00, 0x80, 0xe1, 0x29, 0xf0, 0x00, - 0xe3, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x13, - 0x46, 0x73, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0x4f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x80, - 0xe1, 0x69, 0xf0, 0x00, 0xe3, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x00, 0x00, - 0x47, 0x78, 0x00, 0x00, 0xe1, 0x0f, 0x00, 0x00, - 0xe3, 0xc0, 0x00, 0x40, 0xe1, 0x29, 0xf0, 0x00, - 0xe3, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x13, - 0x46, 0x73, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, - 0xe1, 0x4f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x40, - 0xe1, 0x69, 0xf0, 0x00, 0xe3, 0xa0, 0x00, 0x00, - 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x49, 0x02, - 0x60, 0x08, 0x20, 0x00, 0x46, 0x9f, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x46, 0x73, 0x49, 0x02, - 0x60, 0x08, 0x20, 0x00, 0x46, 0x9f, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x04, 0x46, 0x73, 0x48, 0x03, - 0x68, 0x00, 0x47, 0x18, 0x46, 0x73, 0x49, 0x01, - 0x60, 0x08, 0x47, 0x18, 0x66, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x46, 0x6c, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x50, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x02, 0xd0, 0x00, 0x00, 0x02, 0xd0, - 0x00, 0x00, 0x00, 0x15, 0x00, 0x03, 0xb1, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x90, 0x85, - 0x00, 0x00, 0xa6, 0xee, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0xd0, 0x00, 0x00, 0x02, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xa0, - 0x00, 0x08, 0x08, 0x28, 0x00, 0x08, 0x88, 0x68, - 0x00, 0x08, 0xa0, 0x98, 0x00, 0x08, 0x88, 0x68, - 0x00, 0x08, 0x28, 0x98, 0x00, 0x08, 0xac, 0xf4, - 0x00, 0x08, 0xb8, 0x7c, 0x00, 0x02, 0x02, 0x88, - 0x00, 0x02, 0x08, 0x22, 0x00, 0x02, 0x88, 0xaa, - 0x00, 0x02, 0x22, 0xaa, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x24, - 0x00, 0x04, 0x04, 0x24, 0x00, 0x04, 0x28, 0x6c, - 0x00, 0x04, 0x28, 0x6c, 0x00, 0x01, 0x10, 0x44, - 0x00, 0x01, 0x20, 0x44, 0x00, 0x01, 0x11, 0xaa, - 0x00, 0x01, 0x88, 0x55, 0x00, 0x01, 0x44, 0xaa, - 0x00, 0x01, 0x44, 0x55, 0x00, 0x20, 0x80, 0xa0, - 0x00, 0x20, 0x80, 0xc0, 0x00, 0x20, 0x20, 0xa0, - 0x00, 0x20, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, - 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x13, 0x16, - 0x1a, 0x1b, 0x1d, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x13, 0x16, - 0x1a, 0x1b, 0x1d, 0x22, 0x10, 0x10, 0x16, 0x18, - 0x1b, 0x1d, 0x22, 0x25, 0x13, 0x16, 0x1a, 0x1b, - 0x1d, 0x22, 0x22, 0x26, 0x16, 0x16, 0x1a, 0x1b, - 0x1d, 0x22, 0x25, 0x28, 0x16, 0x1a, 0x1b, 0x1d, - 0x20, 0x23, 0x28, 0x30, 0x1a, 0x1b, 0x1d, 0x20, - 0x23, 0x28, 0x30, 0x3a, 0x1a, 0x1b, 0x1d, 0x22, - 0x26, 0x2e, 0x38, 0x45, 0x1b, 0x1d, 0x23, 0x26, - 0x2e, 0x38, 0x45, 0x53, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd6, 0x00, - 0x00, 0x1b, 0x08, 0x00, 0x00, 0x1f, 0xde, 0x00, - 0x00, 0x00, 0x50, 0x00, 0x00, 0x09, 0xce, 0x00, - 0x00, 0x13, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x05, 0x28, 0x20, 0x01, 0x00, 0x00, 0x02, 0x40, - 0x71, 0x01, 0x00, 0x68, 0xe0, 0x7f, 0xb0, 0x7f, - 0x60, 0x40, 0xe0, 0x1d, 0x90, 0x10, 0xb4, 0x81, - 0xe8, 0xc0, 0xe0, 0xc2, 0x90, 0x18, 0x00, 0x8a, - 0x70, 0xc0, 0x0f, 0x87, 0xe3, 0xe8, 0xc0, 0x00, - 0x70, 0x40, 0xe0, 0x01, 0xe0, 0x86, 0x00, 0x26, - 0xd0, 0x28, 0xe0, 0x0e, 0xd0, 0x0e, 0x0f, 0x0b, - 0x70, 0x1d, 0xe0, 0x67, 0x0f, 0x87, 0x0f, 0x87, - 0x0f, 0x87, 0x0f, 0x87, 0x0f, 0x87, 0x02, 0x20, - 0xd0, 0x01, 0xe0, 0x25, 0x0f, 0x45, 0x6f, 0x81, - 0xdf, 0xa6, 0xe0, 0x36, 0xe1, 0x30, 0xa0, 0x37, - 0xc0, 0x00, 0xe0, 0x26, 0x00, 0x33, 0xdf, 0x00, - 0xe0, 0x32, 0x0f, 0xc5, 0x0f, 0x87, 0x00, 0x27, - 0xd0, 0x4c, 0xe0, 0x21, 0x00, 0x33, 0xdf, 0x60, - 0x00, 0x27, 0xd0, 0x56, 0x60, 0x01, 0xe0, 0x2d, - 0x03, 0xa0, 0xd0, 0x41, 0xa0, 0x78, 0x00, 0x60, - 0xd0, 0x41, 0xa0, 0x77, 0x00, 0x22, 0xd0, 0x58, - 0xa0, 0x76, 0x00, 0x21, 0xd0, 0x7c, 0x00, 0x4a, - 0xd0, 0x72, 0x70, 0x40, 0x00, 0x06, 0x0f, 0x87, - 0x00, 0x22, 0xdc, 0xf8, 0xf0, 0x4a, 0xe1, 0x70, - 0x07, 0xef, 0xdd, 0xbf, 0x4f, 0x36, 0x1d, 0x99, - 0x4d, 0x80, 0x10, 0x18, 0xdd, 0x50, 0x60, 0x35, - 0xdd, 0x72, 0xdd, 0x10, 0x3d, 0xb4, 0xec, 0x57, - 0x2d, 0x36, 0x1d, 0x03, 0xbd, 0x04, 0xe4, 0x2b, - 0x01, 0x46, 0x00, 0x06, 0xac, 0xf6, 0x80, 0x3f, - 0x0d, 0x0a, 0x10, 0x02, 0x7d, 0x40, 0x10, 0x1e, - 0xb0, 0x20, 0xbc, 0xe0, 0x00, 0x06, 0x00, 0xc6, - 0xe0, 0x52, 0xb7, 0x60, 0xb7, 0x60, 0xc0, 0x5d, - 0x30, 0x5f, 0xe4, 0x72, 0xc7, 0x5e, 0x00, 0xed, - 0xd0, 0x28, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, - 0xc0, 0x1d, 0x30, 0x1c, 0xf8, 0x7e, 0x00, 0x21, - 0xd0, 0x01, 0x00, 0x26, 0xd0, 0x78, 0xa0, 0x38, - 0x80, 0x3f, 0x70, 0x01, 0xb0, 0x3f, 0x60, 0x01, - 0x0f, 0x87, 0x80, 0x34, 0x03, 0xef, 0xd8, 0x3f, - 0xa8, 0x38, 0x01, 0x35, 0xdc, 0x33, 0xe0, 0x46, - 0xc0, 0x1c, 0xe4, 0xa5, 0x97, 0x2e, 0x30, 0x1c, - 0xe8, 0x8e, 0x00, 0x21, 0xd0, 0x00, 0xa0, 0x38, - 0xc0, 0x5d, 0x00, 0x23, 0xd0, 0x00, 0x30, 0x40, - 0x30, 0x5e, 0xe4, 0x99, 0x20, 0x5e, 0xc0, 0x01, - 0x30, 0x1c, 0xec, 0xa4, 0xe0, 0x9d, 0x20, 0x5f, - 0xc0, 0x1c, 0x30, 0x01, 0xf4, 0xa5, 0xc0, 0x1c, - 0x30, 0x1d, 0xec, 0xa4, 0xe4, 0xa5, 0x90, 0x38, - 0x00, 0x1b, 0xe8, 0xa5, 0xa0, 0x66, 0xb1, 0x3f, - 0xe4, 0xb3, 0xe8, 0xb1, 0xc0, 0x4b, 0x30, 0x44, - 0xf8, 0xb3, 0x60, 0x45, 0xb1, 0x7c, 0x01, 0x20, - 0xd0, 0x00, 0xa0, 0x05, 0x80, 0x40, 0x72, 0xc5, - 0x00, 0x06, 0x90, 0x55, 0xd0, 0x01, 0x00, 0x40, - 0xa0, 0x55, 0x0f, 0x87, 0x01, 0x46, 0x00, 0x06, - 0x03, 0xef, 0xd0, 0x3f, 0xa0, 0x38, 0xb0, 0x01, - 0xa0, 0x37, 0x80, 0x3f, 0x82, 0x34, 0x80, 0x3f, - 0xf2, 0x1a, 0x80, 0x34, 0x80, 0x3f, 0xf2, 0x1a, - 0xd8, 0x00, 0xd8, 0x40, 0xd8, 0x80, 0xd8, 0xc0, - 0xd9, 0x00, 0xd9, 0x40, 0xd9, 0x80, 0xd9, 0xc0, - 0xda, 0x00, 0xda, 0x40, 0xda, 0x80, 0xda, 0xc0, - 0xdb, 0x00, 0xdb, 0x40, 0xdb, 0x80, 0xdb, 0xc0, - 0xdc, 0x00, 0xdc, 0x40, 0xdc, 0x80, 0xdc, 0xc0, - 0xdd, 0x00, 0xdd, 0x40, 0xdd, 0x80, 0xdd, 0xc0, - 0xde, 0x00, 0xde, 0x40, 0xde, 0x80, 0xde, 0xc0, - 0xdf, 0x00, 0xdf, 0x40, 0xdf, 0x80, 0xdf, 0xc0, - 0xde, 0x80, 0xde, 0xc1, 0x00, 0x28, 0xd0, 0x60, - 0x6e, 0x81, 0x80, 0x00, 0x80, 0x05, 0x00, 0xe3, - 0xd1, 0x88, 0x00, 0x73, 0xd5, 0x80, 0x60, 0x06, - 0xb1, 0xbc, 0x00, 0xfa, 0xd0, 0x80, 0x60, 0x06, - 0x00, 0x26, 0xd0, 0x6c, 0x6e, 0x81, 0x04, 0xf4, - 0xdc, 0x00, 0x00, 0xee, 0xd1, 0x94, 0x60, 0x06, - 0x00, 0xed, 0xd0, 0x50, 0x6e, 0x81, 0x00, 0x22, - 0xd0, 0x70, 0x6e, 0x81, 0x00, 0xee, 0xd0, 0x74, - 0x6e, 0x81, 0xd0, 0x4c, 0x6e, 0x81, 0xd0, 0x02, - 0x00, 0xef, 0xd0, 0x6c, 0x60, 0x01, 0xd0, 0x03, - 0x00, 0xef, 0xd0, 0x70, 0x60, 0x01, 0x00, 0xe0, - 0xd0, 0x48, 0xd0, 0x02, 0x60, 0x01, 0x00, 0x32, - 0xdf, 0x20, 0xa0, 0x1c, 0x00, 0x21, 0xd0, 0x60, - 0xa0, 0x76, 0x00, 0x34, 0xd5, 0x70, 0x80, 0x3f, - 0x00, 0x23, 0xd0, 0x5c, 0x00, 0x4a, 0xd0, 0x72, - 0x70, 0x40, 0x00, 0x06, 0x00, 0x22, 0xd1, 0xa4, - 0x6e, 0xc6, 0xd0, 0x58, 0x6e, 0xc1, 0xd0, 0xc9, - 0x00, 0xed, 0xd0, 0x54, 0x60, 0xc1, 0x00, 0x22, - 0xd0, 0x40, 0x60, 0xc1, 0x00, 0x22, 0xd0, 0x60, - 0x60, 0xc1, 0x82, 0x34, 0x80, 0x3f, 0xd6, 0xd9, - 0x01, 0x2d, 0xd6, 0x0c, 0x16, 0x08, 0xd0, 0x55, - 0xd0, 0x2c, 0x60, 0x40, 0xd0, 0x70, 0x00, 0xfb, - 0xd1, 0x00, 0x60, 0x01, 0x00, 0x2b, 0xd4, 0x10, - 0x00, 0x29, 0xd4, 0x40, 0x00, 0x2b, 0xd0, 0x90, - 0xc0, 0xc2, 0xd1, 0x18, 0xd1, 0x44, 0xa1, 0x50, - 0x00, 0x21, 0xd0, 0xb6, 0xd0, 0xd7, 0x00, 0x29, - 0xd0, 0x04, 0x64, 0x00, 0xb0, 0x3c, 0x64, 0x40, - 0x80, 0x34, 0x80, 0x3f, 0xd0, 0x40, 0x00, 0x35, - 0xd0, 0x00, 0x60, 0x01, 0xd0, 0x48, 0x6e, 0x81, - 0xd0, 0x44, 0x6e, 0x81, 0x00, 0x64, 0xd1, 0x80, - 0x6e, 0x86, 0x01, 0x3c, 0xd2, 0x39, 0xe0, 0x46, - 0xd0, 0x00, 0xd0, 0x40, 0xd0, 0x80, 0xd0, 0xc0, - 0xd1, 0x00, 0xd1, 0x40, 0xd1, 0x80, 0xd1, 0xc0, - 0xd2, 0x00, 0xd2, 0x40, 0xd2, 0x80, 0xd2, 0xc0, - 0xd3, 0x00, 0xd3, 0x40, 0xd3, 0x80, 0xd3, 0xc0, - 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, - 0xd5, 0x00, 0xd5, 0x40, 0xd5, 0x80, 0xd5, 0xc0, - 0xd6, 0x00, 0xd6, 0x40, 0xd6, 0x80, 0xd6, 0xc0, - 0xd7, 0x00, 0xd7, 0x40, 0xd7, 0x80, 0xd7, 0xc0, - 0x0f, 0xc5, 0x50, 0x00, 0x01, 0x46, 0x00, 0x06, - 0xde, 0x80, 0xde, 0xc1, 0x03, 0x2f, 0xd0, 0x33, - 0xa0, 0x38, 0xb0, 0x01, 0xa0, 0x37, 0x80, 0x3f, - 0x08, 0x20, 0xdf, 0x00, 0x82, 0x34, 0x80, 0x3f, - 0x00, 0xee, 0xd0, 0x08, 0x77, 0xc0, 0xb0, 0x04, - 0x77, 0x80, 0xb0, 0x04, 0xc0, 0x5f, 0x30, 0x5e, - 0x60, 0x40, 0xd7, 0x00, 0xb7, 0x01, 0x80, 0x34, - 0x80, 0x3f, 0x00, 0x60, 0xd0, 0x80, 0x00, 0xec, - 0xd0, 0x40, 0x60, 0x81, 0xb0, 0x7c, 0x60, 0x81, - 0x00, 0xa0, 0xd0, 0x80, 0xb0, 0x74, 0x60, 0x81, - 0xb0, 0x7c, 0x60, 0x81, 0x00, 0x68, 0xd0, 0x80, - 0x6e, 0x82, 0x00, 0xef, 0xd0, 0x8c, 0x6e, 0x82, - 0x00, 0x06, 0xd0, 0x11, 0xa0, 0x38, 0x80, 0x3f, - 0x08, 0x20, 0xd0, 0x40, 0x10, 0x48, 0xa0, 0x4a, - 0xa0, 0x5b, 0x0c, 0x20, 0xd0, 0x00, 0x10, 0x08, - 0xa0, 0x27, 0xa0, 0x0a, 0x90, 0x4d, 0x0f, 0xff, - 0xd8, 0x1f, 0x40, 0x40, 0xa0, 0x4d, 0x80, 0x0a, - 0x80, 0x07, 0x80, 0x1b, 0x80, 0x27, 0x00, 0x60, - 0xd0, 0x00, 0xa0, 0x09, 0x80, 0x28, 0x01, 0x20, - 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, - 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, - 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x00, 0xa0, 0x29, - 0x80, 0x2b, 0x02, 0x30, 0xd0, 0x00, 0xa0, 0x38, - 0x80, 0x3f, 0x01, 0xb0, 0xd0, 0x10, 0xa0, 0x37, - 0x80, 0x3f, 0x02, 0x30, 0xd0, 0x01, 0xa0, 0x38, - 0x00, 0xea, 0xd0, 0x00, 0xd0, 0x4e, 0x0f, 0x0b, - 0x70, 0x40, 0x00, 0x06, 0x00, 0x21, 0xd0, 0x88, - 0x00, 0xe1, 0xd0, 0x60, 0x60, 0x81, 0x00, 0x2b, - 0xd0, 0x80, 0x00, 0xe0, 0xd0, 0x6c, 0x60, 0x81, - 0xb0, 0x7c, 0x00, 0x29, 0xd0, 0x80, 0x60, 0x81, - 0xb0, 0x7c, 0xd0, 0x82, 0x60, 0x81, 0xb0, 0x7c, - 0xd0, 0x85, 0x60, 0x81, 0xb0, 0x7c, 0x03, 0xaa, - 0xd0, 0x98, 0x60, 0x81, 0xb0, 0x7c, 0x6e, 0x81, - 0x00, 0x27, 0xd0, 0x40, 0x6e, 0x81, 0xb0, 0x7c, - 0x6e, 0x81, 0xb0, 0x7c, 0x6e, 0x81, 0x00, 0x27, - 0xd1, 0x90, 0x6e, 0x86, 0x00, 0x21, 0xd1, 0xb8, - 0x6e, 0x86, 0x00, 0x66, 0xd1, 0xa0, 0xd0, 0x00, - 0x01, 0x64, 0xd0, 0x58, 0x30, 0x01, 0x60, 0x06, - 0x00, 0xed, 0xd1, 0xbc, 0x6e, 0x86, 0x00, 0xec, - 0xd1, 0xb8, 0x6e, 0x86, 0xb1, 0x84, 0x6e, 0x86, - 0x00, 0xee, 0xd1, 0x84, 0x70, 0x46, 0x00, 0x65, - 0xd1, 0x94, 0x60, 0x46, 0x00, 0x64, 0xd1, 0xbc, - 0x6e, 0x86, 0x00, 0x65, 0xd1, 0x80, 0x6e, 0x86, - 0xb1, 0xbc, 0x6e, 0x86, 0xb1, 0xbc, 0x6e, 0x86, - 0x00, 0xed, 0xd1, 0xa8, 0x6e, 0x86, 0xd0, 0x0e, - 0xb1, 0xbc, 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, - 0x00, 0x65, 0xd1, 0xa4, 0x60, 0x06, 0x00, 0x28, - 0xd1, 0xa4, 0x6e, 0x86, 0x00, 0x27, 0xd1, 0x98, - 0x6e, 0x86, 0x00, 0x64, 0xd1, 0xa4, 0x6e, 0x86, - 0xd2, 0x01, 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, - 0x00, 0x64, 0xd1, 0x80, 0x70, 0x46, 0x6e, 0x86, - 0x00, 0xef, 0xd1, 0x98, 0x70, 0x86, 0x08, 0x20, - 0xd0, 0xcf, 0x30, 0xc1, 0xea, 0x42, 0xd0, 0x81, - 0x00, 0x21, 0xd1, 0xa8, 0x60, 0x86, 0x00, 0xed, - 0xd1, 0xa0, 0x6e, 0xc6, 0x00, 0x65, 0xd1, 0x98, - 0x6e, 0xc6, 0x00, 0x22, 0xd0, 0x00, 0xa0, 0x05, - 0x80, 0x40, 0x00, 0xc6, 0x01, 0x73, 0xd4, 0x3d, - 0xe0, 0x46, 0x50, 0x00, 0x08, 0x20, 0xd0, 0x00, - 0x5f, 0x00, 0x00, 0x64, 0xd0, 0x60, 0x70, 0xc1, - 0x00, 0xec, 0xd0, 0x40, 0x71, 0x81, 0xb0, 0x7c, - 0x71, 0xc1, 0xc0, 0x87, 0x30, 0x86, 0xf9, 0x83, - 0x10, 0xee, 0xe9, 0x76, 0x10, 0xe1, 0xe9, 0x76, - 0xe2, 0x57, 0x00, 0x63, 0xd0, 0xbf, 0x72, 0x06, - 0xb1, 0xbc, 0x41, 0x82, 0x02, 0x1b, 0xe9, 0x8d, - 0x72, 0x86, 0xb1, 0xbc, 0x41, 0x82, 0xd0, 0x75, - 0x30, 0x48, 0xe9, 0xfe, 0xb0, 0x7f, 0xea, 0x00, - 0x02, 0x1c, 0xe9, 0x96, 0x15, 0xa3, 0xea, 0x57, - 0x10, 0xf0, 0xe9, 0x9a, 0x10, 0xfa, 0xf9, 0xa1, - 0x15, 0xa3, 0xea, 0x57, 0x00, 0x21, 0xd0, 0x4c, - 0x70, 0x41, 0x10, 0x61, 0xfa, 0x57, 0x00, 0xed, - 0xd0, 0x08, 0x70, 0x40, 0xd0, 0x85, 0x40, 0x42, - 0x60, 0x40, 0x00, 0x64, 0xd0, 0x64, 0x62, 0x01, - 0x12, 0x2b, 0xe9, 0xeb, 0x12, 0x3b, 0xe9, 0xd5, - 0x00, 0xec, 0xd0, 0x40, 0x61, 0x81, 0x12, 0x2d, - 0xe9, 0xbf, 0x12, 0x30, 0xe9, 0xd4, 0x12, 0x36, - 0xe9, 0xd4, 0x12, 0x3a, 0xe9, 0xd4, 0xd0, 0x62, - 0x30, 0x48, 0xe9, 0xf2, 0x12, 0x2e, 0xe9, 0xf9, - 0xe1, 0x76, 0x00, 0xed, 0xd0, 0x08, 0x70, 0x40, - 0xd0, 0x85, 0x40, 0x42, 0x60, 0x40, 0xb0, 0x08, - 0x00, 0x21, 0xd0, 0x41, 0x60, 0x40, 0x00, 0x64, - 0xd0, 0x60, 0x62, 0x01, 0xf2, 0x5a, 0x00, 0xed, - 0xd0, 0x20, 0xd0, 0x41, 0x60, 0x40, 0x10, 0xe1, - 0xea, 0x3a, 0xe2, 0x57, 0xe2, 0x53, 0x10, 0xee, - 0xf9, 0xe9, 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, - 0x97, 0x2e, 0xc7, 0x5c, 0xa7, 0x66, 0x81, 0x34, - 0x80, 0x3f, 0x00, 0x21, 0xd0, 0x01, 0xa0, 0x38, - 0x00, 0xc6, 0x00, 0x21, 0xd0, 0x15, 0x0b, 0x09, - 0x00, 0x4d, 0xb0, 0x01, 0xed, 0xe5, 0xd2, 0x1a, - 0xe1, 0xec, 0xf1, 0x18, 0x00, 0xec, 0xd0, 0x40, - 0x71, 0x81, 0xd0, 0x4e, 0x60, 0x46, 0xe2, 0x54, - 0xc0, 0x0a, 0x10, 0x06, 0x52, 0x80, 0x00, 0xed, - 0xd0, 0x40, 0x62, 0x81, 0xe2, 0x53, 0x00, 0x64, - 0xd0, 0x60, 0x62, 0x01, 0xf2, 0x5a, 0xe1, 0x70, - 0x12, 0xa3, 0xf6, 0x57, 0x15, 0xa1, 0xfa, 0x57, - 0x12, 0xa0, 0xea, 0x23, 0x00, 0x65, 0xd1, 0x1c, - 0xd0, 0x75, 0x30, 0x48, 0xea, 0x0a, 0xb1, 0x3c, - 0x71, 0x04, 0x11, 0x20, 0xfa, 0x11, 0x00, 0xec, - 0xd0, 0x40, 0x61, 0x81, 0xe2, 0x57, 0x12, 0xa1, - 0xea, 0x33, 0x00, 0xe2, 0xd0, 0x60, 0x70, 0x01, - 0xb0, 0x7c, 0x70, 0x41, 0x10, 0x0c, 0x50, 0x40, - 0x0c, 0x30, 0xd0, 0x00, 0x31, 0x01, 0xee, 0x21, - 0x21, 0x00, 0xe6, 0x57, 0xe2, 0x23, 0x31, 0x00, - 0xfe, 0x57, 0xd0, 0x75, 0x30, 0x48, 0xea, 0x28, - 0xf2, 0x5a, 0xe2, 0x0d, 0x00, 0xec, 0xd0, 0x40, - 0x71, 0x81, 0x00, 0x63, 0xd1, 0x3f, 0xb1, 0xbc, - 0x41, 0x84, 0x61, 0x81, 0xd0, 0x50, 0x60, 0x46, - 0xe2, 0x57, 0x00, 0xed, 0xd0, 0x7c, 0x70, 0x41, - 0x08, 0x20, 0xd0, 0x00, 0x10, 0x08, 0xe2, 0x1c, - 0xd2, 0x84, 0x00, 0xed, 0xd1, 0xa4, 0x62, 0x86, - 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x46, 0x82, 0x34, - 0x80, 0x3f, 0xc7, 0x5e, 0x97, 0x2e, 0x81, 0x34, - 0x80, 0x3f, 0x02, 0xe8, 0xd0, 0x30, 0xa0, 0x37, - 0xa0, 0x38, 0x08, 0x20, 0xdf, 0x00, 0x80, 0x73, - 0x80, 0x3f, 0x00, 0xc6, 0x01, 0x7a, 0xde, 0x1a, - 0xe0, 0x46, 0xf2, 0x5a, 0x00, 0x64, 0xd0, 0x60, - 0x62, 0x01, 0x02, 0x3c, 0xdc, 0x89, 0xe0, 0x46, - 0x00, 0x28, 0xd0, 0x64, 0x70, 0x81, 0x00, 0x22, - 0xd0, 0x00, 0x50, 0x80, 0x60, 0x81, 0x0f, 0xc5, - 0x50, 0x00, 0x50, 0x00, 0x00, 0xed, 0xd1, 0xa4, - 0x72, 0x86, 0x00, 0xef, 0xd1, 0x90, 0x70, 0x46, - 0x10, 0x5c, 0x10, 0x65, 0xed, 0x7d, 0xd0, 0x46, - 0xc0, 0x0a, 0x10, 0x40, 0x60, 0x46, 0x00, 0x22, - 0xd0, 0x73, 0x30, 0x54, 0xe9, 0x8e, 0x12, 0xa4, - 0xe9, 0xb5, 0x15, 0x20, 0xe9, 0xc0, 0xb0, 0x7b, - 0xe9, 0xc3, 0xb0, 0x41, 0xe9, 0xc9, 0xc0, 0x54, - 0x10, 0x5c, 0x10, 0x6e, 0xe9, 0xc6, 0xe1, 0xb5, - 0x00, 0x28, 0xd1, 0xb0, 0xd0, 0x00, 0x60, 0x06, - 0x12, 0xa4, 0xf9, 0xb2, 0x00, 0xed, 0xd1, 0x9c, - 0x62, 0x86, 0xd2, 0x80, 0x00, 0xed, 0xd1, 0xa4, - 0x62, 0x86, 0xd0, 0x02, 0x00, 0xec, 0xd1, 0xbc, - 0x60, 0x06, 0x00, 0x64, 0xd1, 0xa0, 0x72, 0x06, - 0x12, 0x21, 0xf9, 0xa6, 0xd2, 0x0d, 0x62, 0x06, - 0x00, 0xed, 0xd1, 0xa0, 0x61, 0x86, 0xd0, 0x0e, - 0x00, 0xed, 0xd1, 0xac, 0x60, 0x06, 0xb1, 0xbc, - 0x60, 0x06, 0x00, 0x65, 0xd1, 0xa4, 0x60, 0x06, - 0x01, 0x7e, 0xd2, 0x32, 0xe1, 0xcb, 0x01, 0x46, - 0x90, 0x49, 0x00, 0x60, 0xd0, 0x00, 0x50, 0x40, - 0xa0, 0x49, 0x80, 0x3f, 0x00, 0xc6, 0x0c, 0x09, - 0x05, 0x0d, 0xe1, 0x70, 0x01, 0xbf, 0xd0, 0x41, - 0xe1, 0xcb, 0x01, 0xbb, 0xda, 0x10, 0xe1, 0xcb, - 0x01, 0xbd, 0xda, 0x0b, 0xe1, 0xcb, 0x03, 0xb9, - 0xd8, 0x10, 0x01, 0x46, 0x90, 0x49, 0x00, 0x60, - 0xd1, 0x00, 0x50, 0x44, 0x30, 0x44, 0xa0, 0x49, - 0x80, 0x3f, 0x00, 0xc6, 0xe0, 0x46, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0x01, 0xfa, 0xd4, 0x3d, - 0x00, 0x25, 0xdc, 0xd8, 0xf0, 0x4a, 0x00, 0x26, - 0xd0, 0x18, 0xd0, 0x40, 0x60, 0x40, 0x00, 0x28, - 0xd0, 0x24, 0x70, 0x40, 0xd0, 0x82, 0x50, 0x42, - 0x60, 0x40, 0x00, 0xec, 0xd0, 0xa4, 0x70, 0xc2, - 0x10, 0xe0, 0xf9, 0x81, 0x00, 0xec, 0xd1, 0x98, - 0xd0, 0x41, 0x60, 0x46, 0x70, 0xc2, 0x10, 0xe0, - 0xe9, 0x8e, 0xd0, 0x40, 0x60, 0x46, 0xe1, 0x81, - 0xd0, 0x40, 0x00, 0xe6, 0xd0, 0x10, 0x60, 0x40, - 0xb0, 0x3c, 0x60, 0x40, 0xb0, 0x3c, 0x60, 0x40, - 0xd0, 0xe0, 0x00, 0xea, 0xd0, 0x40, 0x00, 0xe8, - 0xd0, 0x82, 0x01, 0x46, 0x70, 0x01, 0xb0, 0x7c, - 0x60, 0x02, 0xb0, 0xbc, 0x00, 0x06, 0x00, 0xc6, - 0xb0, 0xc1, 0xed, 0x9b, 0x80, 0x49, 0xd6, 0x44, - 0xd5, 0x43, 0x00, 0xe0, 0xd1, 0x80, 0x00, 0x06, - 0x0b, 0x09, 0x01, 0x0d, 0x0b, 0x09, 0x61, 0x06, - 0xb1, 0xbc, 0x01, 0x4d, 0x09, 0x09, 0x61, 0x46, - 0xb1, 0xbc, 0x00, 0xcd, 0x09, 0x09, 0x10, 0xe4, - 0xed, 0xb8, 0x60, 0xc6, 0xb1, 0xbc, 0x00, 0xcd, - 0x60, 0xc6, 0x00, 0xed, 0xd0, 0x04, 0x70, 0x00, - 0x10, 0x20, 0xf9, 0xd8, 0xd0, 0x0a, 0x40, 0x03, - 0xe9, 0xc9, 0x10, 0xe2, 0xe9, 0xc9, 0x10, 0xe7, - 0xe9, 0xc9, 0x10, 0xe8, 0xf9, 0xd8, 0x01, 0x46, - 0x90, 0x10, 0x00, 0x20, 0xd0, 0x44, 0x50, 0x40, - 0x00, 0xc6, 0xa0, 0x50, 0x00, 0xa0, 0xd0, 0x00, - 0xa0, 0x05, 0x80, 0x40, 0x00, 0xed, 0xd1, 0xa4, - 0xd0, 0x04, 0x60, 0x06, 0x00, 0xee, 0xd1, 0xac, - 0x73, 0x86, 0x10, 0xe3, 0xe5, 0xe3, 0xe9, 0xe8, - 0x00, 0xe7, 0xd0, 0x40, 0x00, 0xae, 0xd0, 0xbb, - 0xe1, 0xec, 0x01, 0x24, 0xd0, 0x6b, 0x00, 0xea, - 0xd0, 0xa6, 0xe1, 0xec, 0x01, 0x21, 0xd0, 0x7b, - 0x00, 0xe8, 0xd0, 0x90, 0x13, 0xa0, 0xf9, 0xef, - 0xc0, 0x42, 0x00, 0xe0, 0xd1, 0xa8, 0x60, 0x46, - 0xb1, 0x98, 0x0b, 0xc9, 0x00, 0x4d, 0x09, 0x09, - 0x10, 0x44, 0x00, 0x8d, 0x20, 0x42, 0x10, 0x5f, - 0x60, 0x46, 0xb1, 0xb8, 0x00, 0x90, 0xea, 0x1c, - 0x0a, 0x89, 0x00, 0x8d, 0x60, 0x86, 0xb1, 0xbc, - 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0x10, 0x60, - 0xea, 0x10, 0x00, 0xe8, 0xd1, 0x80, 0xf2, 0xb0, - 0x10, 0x60, 0xfa, 0x1c, 0x08, 0x49, 0x00, 0xe0, - 0xd1, 0xa4, 0x00, 0x4d, 0x60, 0x46, 0x10, 0x60, - 0xea, 0x20, 0x00, 0xe9, 0xd1, 0x80, 0xf2, 0xb0, - 0x10, 0x60, 0xea, 0x20, 0x00, 0xe0, 0xd1, 0x88, - 0xd0, 0x40, 0x60, 0x46, 0xd0, 0x00, 0x00, 0xe0, - 0xd1, 0xa8, 0x70, 0x46, 0x00, 0xef, 0xd1, 0x9c, - 0x70, 0x86, 0xb0, 0xb0, 0xee, 0x2a, 0xd0, 0x81, - 0x00, 0x90, 0xea, 0x2d, 0x20, 0x01, 0x10, 0x41, - 0x10, 0x9f, 0x10, 0xa0, 0xee, 0x2a, 0x10, 0x1c, - 0x00, 0x65, 0xd1, 0xa8, 0x60, 0x06, 0x01, 0xb4, - 0xd6, 0x3a, 0xe0, 0x46, 0x02, 0x31, 0xde, 0x13, - 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0x0c, 0x09, - 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, - 0x30, 0x54, 0xe9, 0xea, 0xb0, 0x7d, 0xfa, 0x05, - 0x09, 0x09, 0x01, 0xcd, 0x11, 0xe1, 0xf9, 0xc7, - 0x80, 0x09, 0x80, 0x27, 0x0a, 0x09, 0xd6, 0x45, - 0x00, 0xe1, 0xd1, 0xa0, 0x00, 0x4d, 0x60, 0x46, - 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, - 0x00, 0x50, 0xe9, 0x91, 0xd4, 0x01, 0xb1, 0xbc, - 0x08, 0x89, 0x00, 0x4d, 0x60, 0x46, 0x00, 0xe0, - 0xd1, 0x80, 0x08, 0x89, 0x00, 0x4d, 0x08, 0x89, - 0x10, 0x4c, 0x71, 0x06, 0x21, 0x01, 0x61, 0x06, - 0xb1, 0xbc, 0x00, 0x4d, 0x0b, 0x49, 0x10, 0x4c, - 0x71, 0x46, 0x21, 0x41, 0x61, 0x46, 0xb1, 0xb0, - 0x00, 0x4d, 0x10, 0x5f, 0x60, 0x46, 0xb1, 0xbc, - 0x0a, 0x09, 0x00, 0x4d, 0x10, 0x4a, 0x70, 0x86, - 0x20, 0x81, 0x60, 0x86, 0x00, 0xe1, 0xd1, 0xac, - 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x08, 0x89, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x09, 0x49, 0x00, 0x8d, 0x60, 0x86, 0xc0, 0x02, - 0x00, 0xe0, 0xd1, 0xa8, 0x70, 0xc6, 0x10, 0xc0, - 0xd0, 0x20, 0x30, 0x01, 0x10, 0xc0, 0x60, 0xc6, - 0xe1, 0x75, 0x11, 0xe2, 0xf9, 0x75, 0x00, 0xe2, - 0xd1, 0x80, 0x08, 0xc9, 0x00, 0x4d, 0x60, 0x46, - 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, - 0xb1, 0xbc, 0x10, 0x60, 0xf9, 0xd7, 0xb1, 0xb4, - 0xe1, 0xde, 0xd2, 0x03, 0x0a, 0x09, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0xb2, 0x01, 0xf9, 0xd8, - 0x0b, 0xc9, 0x00, 0x4d, 0x10, 0x49, 0x10, 0x56, - 0x60, 0x46, 0xb1, 0xbc, 0x0b, 0x89, 0x00, 0x4d, - 0x10, 0x4a, 0x10, 0x56, 0x60, 0x46, 0xe1, 0x75, - 0x0b, 0x2c, 0xd4, 0x40, 0xf3, 0xb0, 0xe1, 0x77, - 0x00, 0xe0, 0xd0, 0x6c, 0x00, 0xe0, 0xd1, 0x80, - 0xd0, 0x0a, 0xf1, 0xfe, 0x00, 0xe1, 0xd1, 0xb0, - 0xd0, 0x02, 0xf1, 0xfe, 0x00, 0xe0, 0xd1, 0x80, - 0x76, 0x86, 0xb1, 0xbc, 0x73, 0x46, 0xe2, 0x3c, - 0x70, 0x81, 0x60, 0x86, 0xb1, 0xbc, 0xb0, 0x7c, - 0xb0, 0x01, 0xed, 0xfe, 0x0f, 0xc5, 0x00, 0xe1, - 0xd1, 0xa0, 0x70, 0x46, 0xd0, 0x8f, 0x40, 0x42, - 0x00, 0x25, 0xd0, 0xe0, 0x00, 0x24, 0xd1, 0x20, - 0x10, 0x6a, 0xea, 0x1e, 0x00, 0x66, 0xd0, 0xe0, - 0x00, 0x62, 0xd1, 0x00, 0x10, 0x66, 0xea, 0x1e, - 0x00, 0x6e, 0xd0, 0xc0, 0x10, 0x64, 0xea, 0x1e, - 0x00, 0x2b, 0xd0, 0xd0, 0x00, 0x29, 0xd1, 0x00, - 0x00, 0xe0, 0xd1, 0x80, 0x76, 0x86, 0x16, 0xa0, - 0xe9, 0xee, 0x30, 0xda, 0xe5, 0xee, 0xb1, 0xbc, - 0x73, 0x46, 0x13, 0x60, 0xe9, 0xee, 0x31, 0x0d, - 0xe5, 0xee, 0xd0, 0x82, 0xb1, 0xbc, 0x70, 0x46, - 0x10, 0x60, 0xe9, 0xee, 0xb0, 0x81, 0xee, 0x2c, - 0x00, 0xe0, 0xd0, 0x40, 0x00, 0xe0, 0xd1, 0xac, - 0xd0, 0x0a, 0xf1, 0xfe, 0x00, 0xe1, 0xd0, 0x70, - 0xd0, 0x02, 0xf1, 0xfe, 0x00, 0xec, 0xd1, 0x98, - 0xd0, 0x40, 0x60, 0x46, 0x00, 0xe0, 0xd0, 0x8c, - 0x70, 0x82, 0x00, 0x21, 0xd0, 0x70, 0x60, 0x81, - 0xd0, 0x40, 0x00, 0x25, 0xd0, 0x20, 0x30, 0x1a, - 0xfa, 0x50, 0x00, 0x24, 0xd0, 0x20, 0x30, 0x0d, - 0xfa, 0x50, 0xd0, 0x41, 0x00, 0x21, 0xd1, 0x84, - 0x60, 0x46, 0xb6, 0xb1, 0x16, 0x9c, 0x01, 0x7a, - 0xde, 0x1a, 0xe0, 0x46, 0x02, 0x31, 0xde, 0x13, - 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0x00, 0xec, - 0xd0, 0xa8, 0x70, 0xc2, 0x10, 0xe0, 0xf9, 0x77, - 0x00, 0xec, 0xd1, 0x9c, 0xd0, 0x41, 0x60, 0x46, - 0x70, 0xc2, 0x10, 0xe0, 0xe9, 0x84, 0xd0, 0x40, - 0x60, 0x46, 0xe1, 0x77, 0x0b, 0x49, 0x00, 0xe2, - 0xd1, 0xa0, 0x00, 0x4d, 0x10, 0x5f, 0x00, 0x6f, - 0xd0, 0xff, 0x40, 0x43, 0x60, 0x46, 0xb1, 0xbc, - 0x0b, 0x09, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x08, 0x89, 0x00, 0x4d, 0x60, 0x46, 0x10, 0x61, - 0xf9, 0x9b, 0xd3, 0xc2, 0x00, 0xec, 0xd1, 0xbc, - 0x63, 0xc6, 0x0c, 0x09, 0x90, 0x4d, 0x10, 0x60, - 0xe5, 0x9c, 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, - 0xd0, 0x72, 0x30, 0x54, 0xf9, 0xa9, 0x0b, 0xa0, - 0xd4, 0x40, 0xf3, 0xb0, 0xe1, 0xa0, 0x00, 0xec, - 0xd1, 0x9c, 0xd0, 0x40, 0x60, 0x46, 0x01, 0x7a, - 0xde, 0x1a, 0xe0, 0x46, 0x0b, 0x09, 0x00, 0x4d, - 0x0b, 0x09, 0x00, 0x4d, 0x0a, 0x09, 0x01, 0x4d, - 0x0a, 0x09, 0x00, 0x4d, 0x01, 0x59, 0xe9, 0x96, - 0x09, 0x09, 0x00, 0x4d, 0x10, 0x5f, 0x10, 0x61, - 0xf9, 0x96, 0x09, 0x09, 0x01, 0x4d, 0x11, 0x5f, - 0x0b, 0xc9, 0x00, 0x4d, 0xc0, 0x01, 0x10, 0x5f, - 0x11, 0x4e, 0x51, 0x41, 0x08, 0x49, 0x00, 0x4d, - 0x0b, 0xc9, 0x10, 0x0f, 0x00, 0x4d, 0x50, 0x01, - 0x00, 0xed, 0xd1, 0xb6, 0x01, 0x46, 0x00, 0x06, - 0xa0, 0x3c, 0xa1, 0x7d, 0x60, 0x06, 0x00, 0xc6, - 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, - 0xe0, 0x46, 0x50, 0x00, 0x00, 0xec, 0xd0, 0xac, - 0x70, 0xc2, 0x10, 0xe0, 0xf9, 0x70, 0x00, 0xec, - 0xd1, 0xa0, 0xd0, 0x41, 0x60, 0x46, 0x70, 0xc2, - 0x10, 0xe0, 0xe9, 0x7f, 0xd0, 0x40, 0x60, 0x46, - 0xe1, 0x70, 0x0a, 0x89, 0x0b, 0xcd, 0x00, 0xe3, - 0xd1, 0x80, 0x6b, 0xc6, 0x08, 0xc9, 0x05, 0x8d, - 0x15, 0xa3, 0xee, 0x6e, 0x15, 0xa0, 0xea, 0x6e, - 0x90, 0x4d, 0xd0, 0x9f, 0xd0, 0xdf, 0x40, 0x81, - 0x10, 0x55, 0x40, 0xc1, 0x01, 0x46, 0x82, 0x34, - 0x80, 0x3f, 0xc8, 0x1d, 0x81, 0x34, 0x80, 0x3f, - 0x00, 0xc6, 0xd1, 0x23, 0x31, 0x03, 0x11, 0x02, - 0x38, 0x04, 0xb0, 0x8d, 0x10, 0x9d, 0x28, 0x02, - 0xc0, 0x60, 0x00, 0x65, 0xd1, 0x94, 0x71, 0x06, - 0x68, 0x06, 0x30, 0x44, 0x00, 0xed, 0xd1, 0xa8, - 0x70, 0x06, 0x10, 0x20, 0xe9, 0xb0, 0x00, 0xee, - 0xd0, 0xc0, 0x70, 0xc3, 0x20, 0x43, 0xb0, 0x01, - 0xf9, 0xac, 0x60, 0x06, 0x00, 0x64, 0xd1, 0xbc, - 0x71, 0x06, 0xc0, 0x04, 0x21, 0x01, 0x61, 0x06, - 0x10, 0x20, 0xf5, 0xbb, 0x11, 0x20, 0xe5, 0xbb, - 0xb0, 0x41, 0x00, 0x65, 0xd1, 0x80, 0x71, 0x06, - 0x21, 0x01, 0x61, 0x06, 0x00, 0xed, 0xd1, 0xac, - 0x71, 0x06, 0x15, 0xa1, 0xe9, 0xcb, 0xb1, 0x3f, - 0x61, 0x06, 0x15, 0xa3, 0xf9, 0xd6, 0xd0, 0xbf, - 0xe1, 0xd3, 0xd0, 0x40, 0x60, 0x46, 0xb1, 0xbc, - 0x70, 0x86, 0x61, 0x06, 0x31, 0x02, 0xe5, 0xd3, - 0x20, 0x84, 0x00, 0x65, 0xd1, 0xa4, 0x60, 0x86, - 0xd9, 0x40, 0x00, 0xec, 0xd1, 0x94, 0x79, 0x06, - 0xb1, 0x84, 0x78, 0xc6, 0xc0, 0x63, 0x30, 0x64, - 0xe9, 0xf8, 0x00, 0xa7, 0xd0, 0xff, 0x7a, 0x63, - 0x00, 0x65, 0xd0, 0x00, 0x71, 0x00, 0x31, 0x29, - 0xe5, 0xf8, 0xc0, 0x63, 0xc8, 0xc1, 0xb0, 0x78, - 0x40, 0x43, 0xc0, 0xa4, 0x30, 0x81, 0xe9, 0xf2, - 0x7a, 0x41, 0x31, 0x29, 0xf5, 0xe8, 0x21, 0x29, - 0x61, 0x00, 0xb8, 0xfc, 0x79, 0x63, 0xb8, 0xfc, - 0x48, 0xc3, 0x68, 0xc6, 0x00, 0xed, 0xd1, 0xb8, - 0x69, 0x46, 0x80, 0x28, 0x0b, 0xc9, 0x00, 0x4d, - 0x08, 0x49, 0x10, 0x41, 0x00, 0xe3, 0xd1, 0x84, - 0x00, 0x8d, 0x20, 0x42, 0x60, 0x46, 0x00, 0xee, - 0xd1, 0xa4, 0x70, 0x86, 0x10, 0xa1, 0xee, 0x18, - 0xe6, 0x6b, 0x90, 0x86, 0x00, 0x90, 0xea, 0x18, - 0x00, 0xed, 0xd0, 0x1c, 0x70, 0x80, 0xb0, 0x81, - 0xe6, 0x6b, 0x60, 0x80, 0xb1, 0xa8, 0x70, 0x86, - 0x10, 0xa0, 0xfa, 0x6b, 0x00, 0x21, 0xd0, 0x38, - 0x70, 0x80, 0x10, 0xa0, 0xfa, 0x6b, 0x0f, 0xef, - 0xd0, 0xbf, 0x30, 0x81, 0xfa, 0x22, 0x60, 0x00, - 0x08, 0x20, 0xd0, 0x00, 0x5f, 0x00, 0x15, 0xa3, - 0xea, 0x6b, 0x00, 0xee, 0xd1, 0x80, 0x79, 0x46, - 0x00, 0xf8, 0xd0, 0x00, 0xc4, 0x40, 0x00, 0xe3, - 0xd1, 0x84, 0x78, 0x46, 0x0f, 0xef, 0xd0, 0x3f, - 0x30, 0x21, 0xea, 0x48, 0x00, 0xe0, 0xd1, 0x90, - 0x78, 0x06, 0xc0, 0xa1, 0x18, 0x43, 0x28, 0x42, - 0x18, 0x43, 0x28, 0x42, 0x18, 0x1e, 0xd8, 0x80, - 0x08, 0x11, 0xea, 0x41, 0x28, 0xa1, 0x18, 0x01, - 0x18, 0x5f, 0x18, 0x60, 0xee, 0x3e, 0xc0, 0x51, - 0x30, 0x62, 0xee, 0x4e, 0xc8, 0x91, 0x18, 0x9f, - 0x00, 0x21, 0xd1, 0xb8, 0xd0, 0x01, 0x60, 0x06, - 0x00, 0xef, 0xd0, 0x10, 0xd0, 0x72, 0x60, 0x40, - 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0xc8, 0xdc, - 0xc9, 0x1d, 0x81, 0x34, 0x80, 0x3f, 0x00, 0xc6, - 0x38, 0xe4, 0xee, 0x5e, 0xea, 0x52, 0x28, 0xe5, - 0x01, 0x46, 0x90, 0x6d, 0x28, 0xc1, 0x00, 0xc6, - 0x38, 0xe2, 0xf6, 0x6b, 0xdb, 0x08, 0xf1, 0x16, - 0xf1, 0x18, 0x00, 0x21, 0xd1, 0xb4, 0x61, 0x86, - 0xe2, 0x52, 0x01, 0xf7, 0xd2, 0x19, 0xe0, 0x46, - 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, - 0xe0, 0x46, 0x50, 0x00, 0x02, 0x31, 0xde, 0x13, - 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0xdb, 0x09, - 0x00, 0xe3, 0xd0, 0x1c, 0x6b, 0x00, 0xda, 0xc1, - 0x00, 0xe6, 0xd1, 0x98, 0x70, 0x06, 0xb1, 0x84, - 0x60, 0x06, 0xb1, 0x84, 0x60, 0x06, 0x05, 0x9f, - 0xe9, 0x9f, 0x08, 0x49, 0xd1, 0x17, 0x46, 0x44, - 0x00, 0x4d, 0x10, 0x43, 0x26, 0x41, 0x08, 0xc9, - 0x05, 0xcd, 0xb5, 0xc1, 0xe5, 0xcc, 0xc0, 0x57, - 0x15, 0xc6, 0x25, 0xc1, 0x15, 0xa3, 0xf9, 0x9f, - 0x08, 0x49, 0xd1, 0x0f, 0x46, 0x44, 0x00, 0x4d, - 0x10, 0x44, 0x26, 0x41, 0x08, 0xc9, 0x06, 0x0d, - 0xb6, 0x01, 0xe5, 0xcc, 0xc0, 0x58, 0x16, 0x06, - 0x26, 0x01, 0x08, 0x49, 0x00, 0x4d, 0x10, 0x60, - 0xe9, 0xa6, 0x0a, 0x09, 0x00, 0x4d, 0xe1, 0x9f, - 0x0c, 0x09, 0x90, 0x4d, 0x10, 0x60, 0xe5, 0xa7, - 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, - 0x30, 0x54, 0xf9, 0xb3, 0xd4, 0x40, 0xf3, 0xb0, - 0xe1, 0xab, 0xb0, 0x7d, 0xf9, 0xb8, 0x02, 0x34, - 0xd4, 0x44, 0xe0, 0x46, 0x00, 0xec, 0xd1, 0xa0, - 0xd0, 0x40, 0x60, 0x46, 0x02, 0x3c, 0xdc, 0x89, - 0x00, 0xec, 0xd1, 0x80, 0x70, 0x46, 0xb1, 0xbc, - 0x70, 0x86, 0x30, 0x81, 0xe8, 0x46, 0x15, 0x63, - 0xe9, 0xc9, 0x05, 0x5e, 0xe8, 0x46, 0x01, 0x73, - 0xd4, 0x3d, 0xe0, 0x46, 0xd5, 0x00, 0xb5, 0x01, - 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0xcc, 0xc0, 0xcd, 0x01, - 0xcd, 0x42, 0xcd, 0x83, 0x00, 0xa0, 0xd0, 0x01, - 0xa0, 0x38, 0xc8, 0x7f, 0xc8, 0x06, 0xb1, 0xbe, - 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, 0x58, 0x80, - 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x96, 0xc9, 0x00, - 0xf3, 0x92, 0x58, 0xc0, 0xf3, 0x96, 0xc9, 0x40, - 0xf3, 0x92, 0x59, 0x40, 0xc0, 0x22, 0xc0, 0x65, - 0xc0, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0x80, - 0xf3, 0x92, 0x59, 0x00, 0xf3, 0x96, 0xc9, 0x40, - 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, 0x59, 0x40, - 0xf3, 0x96, 0xc9, 0xc0, 0xf3, 0x92, 0x58, 0x80, - 0xc0, 0x23, 0xc0, 0x62, 0xd0, 0x88, 0x20, 0x86, - 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x92, - 0x58, 0xc0, 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, - 0x59, 0xc0, 0xc0, 0x24, 0xc0, 0x67, 0xd0, 0x90, - 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x00, - 0xf3, 0x92, 0x59, 0x80, 0xf3, 0x96, 0xc9, 0xc0, - 0xf3, 0x96, 0xca, 0x00, 0xf3, 0x92, 0x59, 0xc0, - 0xf3, 0x96, 0xca, 0x40, 0xf3, 0x92, 0x59, 0x00, - 0xc0, 0x25, 0xc0, 0x64, 0xd0, 0x98, 0x20, 0x86, - 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, - 0x58, 0x80, 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, - 0x59, 0x00, 0xc0, 0x23, 0xc0, 0x64, 0xd0, 0x84, - 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0xc0, - 0xf3, 0x92, 0x59, 0x40, 0xf3, 0x96, 0xc9, 0x00, - 0xf3, 0x92, 0x5a, 0x40, 0xc0, 0x26, 0xc0, 0x69, - 0xd0, 0xa0, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, - 0xc9, 0x80, 0xf3, 0x92, 0x5a, 0x00, 0xf3, 0x96, - 0xca, 0x40, 0xf3, 0x92, 0x5a, 0x40, 0xf3, 0x96, - 0xca, 0x80, 0xf3, 0x92, 0x59, 0x80, 0xc0, 0x27, - 0xc0, 0x66, 0xd0, 0xa8, 0x20, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xc9, 0xc0, 0xf3, 0x92, 0x59, 0x00, - 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, 0x58, 0xc0, - 0xc0, 0x22, 0xc0, 0x63, 0xd0, 0x8c, 0x20, 0x86, - 0xf3, 0x9a, 0xf3, 0x92, 0x59, 0x80, 0xc0, 0x25, - 0xc0, 0x66, 0xd0, 0x94, 0x20, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, 0x59, 0xc0, - 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x92, 0x5a, 0x80, - 0xc0, 0x28, 0xc0, 0x6a, 0xd0, 0xb0, 0x20, 0x86, - 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, - 0x59, 0x40, 0xc0, 0x29, 0xc0, 0x65, 0xd0, 0xb8, - 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x80, - 0xf3, 0x92, 0x58, 0xc0, 0xf3, 0x96, 0xca, 0x00, - 0xf3, 0x92, 0x58, 0x80, 0xc0, 0x24, 0xc0, 0x62, - 0xd0, 0x9c, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x92, - 0x5a, 0x00, 0xc0, 0x27, 0xc0, 0x68, 0xd0, 0xa4, - 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xca, 0x80, - 0xf3, 0x92, 0x59, 0x80, 0xf3, 0x96, 0xca, 0x40, - 0xf3, 0x92, 0x5a, 0x40, 0xf3, 0x96, 0xc9, 0x40, - 0xf3, 0x92, 0x5a, 0x80, 0xc0, 0x23, 0xc0, 0x6a, - 0xd0, 0xac, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x92, - 0x59, 0x40, 0xc0, 0x26, 0xc0, 0x65, 0xd0, 0xb4, - 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x00, - 0xf3, 0x92, 0x59, 0x00, 0xc0, 0x29, 0xc0, 0x64, - 0xd0, 0xbc, 0x20, 0x86, 0xf3, 0x9a, 0xc0, 0x33, - 0xc0, 0x74, 0xc0, 0xb5, 0xc0, 0xf6, 0xd0, 0x40, - 0x00, 0xa0, 0xd8, 0x00, 0xa8, 0x38, 0x08, 0x45, - 0x0a, 0x09, 0x00, 0x0d, 0x0f, 0xc5, 0x50, 0x00, - 0x0a, 0x09, 0x00, 0x0d, 0x10, 0x08, 0x0f, 0xc5, - 0x01, 0x46, 0x00, 0x06, 0xa0, 0x7c, 0xa0, 0x3d, - 0x60, 0x42, 0x00, 0xc6, 0x0f, 0xc5, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0x14, 0x48, 0xd0, 0x81, - 0x00, 0xef, 0xd1, 0x8c, 0x71, 0x46, 0x11, 0x60, - 0xfb, 0xb1, 0x60, 0x86, 0x71, 0x46, 0x31, 0x42, - 0xfb, 0xb1, 0x00, 0xec, 0xd1, 0x0c, 0x74, 0x84, - 0x00, 0x68, 0xd0, 0x80, 0x70, 0x02, 0x10, 0x20, - 0xfb, 0xc4, 0xc4, 0x82, 0xc4, 0xd2, 0xb4, 0xfc, - 0xda, 0x00, 0xda, 0x4f, 0x0a, 0x09, 0x0f, 0xef, - 0xd0, 0x3f, 0xb4, 0x7f, 0xca, 0x29, 0x1a, 0x18, - 0x4a, 0x00, 0x1a, 0x48, 0x00, 0x8d, 0x2a, 0x42, - 0xd0, 0x03, 0x40, 0x11, 0xfb, 0xe3, 0xb4, 0x44, - 0x00, 0xa0, 0xd0, 0xc0, 0x30, 0xd3, 0xff, 0xe3, - 0xb4, 0xfe, 0x01, 0x46, 0x00, 0x06, 0xaa, 0x3d, - 0xaa, 0x7c, 0x6a, 0x53, 0x00, 0xc6, 0xb4, 0xfe, - 0xb4, 0x7c, 0x1a, 0x61, 0xfb, 0xc8, 0xb4, 0x43, - 0x00, 0xef, 0xd0, 0x3f, 0x40, 0x11, 0xeb, 0xf7, - 0xb0, 0xc4, 0xe7, 0xf7, 0xeb, 0xee, 0x61, 0x53, - 0x64, 0x52, 0x64, 0xc4, 0x00, 0x28, 0xd1, 0x24, - 0x70, 0x04, 0x00, 0x21, 0xd0, 0x80, 0x50, 0x02, - 0x60, 0x04, 0x61, 0x46, 0x0a, 0x09, 0x0f, 0xc5, - 0x50, 0x00, 0x50, 0x00, 0x02, 0x31, 0xde, 0x13, - 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0x01, 0xfa, - 0xd4, 0x3d, 0x00, 0x25, 0xdc, 0xd8, 0xf0, 0x4a, - 0x09, 0x09, 0x01, 0xcd, 0x11, 0xe8, 0xf9, 0xe2, - 0x00, 0xe3, 0xd1, 0x9c, 0x09, 0x09, 0x05, 0xcd, - 0xb5, 0xc1, 0x09, 0x09, 0x00, 0x4d, 0xb0, 0x41, - 0x10, 0x46, 0x25, 0xc1, 0x09, 0x09, 0x06, 0x0d, - 0xb6, 0x01, 0x09, 0x09, 0x00, 0x4d, 0x08, 0x89, - 0xb0, 0x41, 0x10, 0x46, 0x26, 0x01, 0x00, 0x8d, - 0x08, 0x89, 0x10, 0x82, 0xd0, 0x04, 0xc0, 0x55, - 0x00, 0x40, 0x40, 0x40, 0x05, 0x4d, 0x08, 0x49, - 0x0b, 0x0d, 0xd1, 0x00, 0x15, 0x63, 0xe9, 0xa2, - 0xd1, 0x01, 0x55, 0x41, 0xdb, 0x01, 0x4b, 0x15, - 0xa1, 0x1b, 0x08, 0x89, 0x00, 0x4d, 0x08, 0x49, - 0x10, 0x41, 0xd1, 0x19, 0x46, 0x44, 0x26, 0x41, - 0x00, 0xcd, 0x08, 0x49, 0x10, 0xc4, 0x00, 0x4d, - 0x08, 0x49, 0x10, 0x41, 0x20, 0x81, 0xa0, 0x89, - 0x00, 0x4d, 0x10, 0x43, 0x20, 0xc1, 0xa0, 0xe8, - 0x08, 0x49, 0x00, 0x4d, 0x1b, 0x03, 0x5b, 0x01, - 0xbb, 0x3f, 0x6b, 0x06, 0x08, 0x49, 0xb1, 0xbc, - 0x00, 0x4d, 0x60, 0x46, 0x08, 0x49, 0xb1, 0xbc, - 0x0a, 0xcd, 0x1a, 0xc2, 0x4a, 0xd9, 0x1a, 0xde, - 0x6a, 0xc6, 0x08, 0x49, 0xb1, 0xbc, 0x00, 0x4d, - 0x60, 0x46, 0x10, 0x60, 0xea, 0x3e, 0xb1, 0xbc, - 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x08, 0xc9, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x09, 0xc9, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0x0a, 0x09, 0x00, 0x4d, 0x60, 0x46, 0xe2, 0x3e, - 0x11, 0xe3, 0xfa, 0x00, 0x00, 0xe7, 0xd0, 0xc0, - 0xd0, 0x84, 0xb0, 0x81, 0xe6, 0x3e, 0x08, 0x49, - 0x00, 0x4d, 0x60, 0x43, 0xb0, 0xfc, 0x10, 0x60, - 0xe9, 0xe7, 0x10, 0xa3, 0xf9, 0xf4, 0x00, 0xe8, - 0xd1, 0x80, 0xe1, 0xf8, 0x10, 0xa2, 0xf9, 0xfa, - 0x00, 0xe9, 0xd1, 0x80, 0xf2, 0xb0, 0xe1, 0xe7, - 0xd2, 0x3f, 0x0a, 0x09, 0x00, 0x4d, 0xb2, 0x01, - 0xf5, 0xfb, 0xe1, 0xe7, 0x11, 0xe7, 0xfa, 0x3e, - 0xd4, 0x01, 0x00, 0xe1, 0xd0, 0x24, 0x70, 0x00, - 0x10, 0x21, 0xea, 0x0d, 0x15, 0x63, 0xfa, 0x0d, - 0xd4, 0x03, 0x44, 0x2c, 0xb4, 0x3f, 0x00, 0xe6, - 0xd1, 0x90, 0x0b, 0x09, 0x00, 0x4d, 0x09, 0x49, - 0x10, 0x45, 0x00, 0x8d, 0x50, 0x81, 0xd0, 0x40, - 0x10, 0x87, 0x10, 0x98, 0x30, 0x42, 0xf2, 0x61, - 0x60, 0x46, 0xb1, 0xbc, 0x0b, 0x09, 0x00, 0x0d, - 0x09, 0x49, 0x00, 0x0d, 0xb4, 0x01, 0xfa, 0x0f, - 0x00, 0xe6, 0xd0, 0x18, 0x30, 0x06, 0xe6, 0x29, - 0x60, 0x46, 0xb1, 0xbc, 0xe2, 0x22, 0x00, 0xe0, - 0xd1, 0x88, 0x70, 0x46, 0x10, 0x63, 0xea, 0x39, - 0x10, 0x64, 0xea, 0x39, 0x00, 0xe6, 0xd1, 0x90, - 0xd0, 0x00, 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, - 0xb1, 0xbc, 0x60, 0x06, 0xe2, 0x3e, 0x00, 0xef, - 0xd1, 0x84, 0x70, 0x46, 0x10, 0x60, 0xfa, 0x30, - 0x0c, 0x09, 0x90, 0x4d, 0x10, 0x60, 0xe6, 0x3f, - 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, - 0x30, 0x54, 0xfa, 0x4b, 0xd4, 0x40, 0xf3, 0xb0, - 0xe2, 0x43, 0xb0, 0x7d, 0xe9, 0x7a, 0x00, 0xec, - 0xd1, 0xa0, 0xd0, 0x40, 0x60, 0x46, 0x02, 0x3c, - 0xdc, 0x89, 0x00, 0xec, 0xd1, 0x80, 0x70, 0x46, - 0xb1, 0xbc, 0x70, 0x86, 0x30, 0x81, 0xe8, 0x46, - 0x15, 0x63, 0xea, 0x5e, 0x05, 0x5e, 0xe8, 0x46, - 0x01, 0x73, 0xd4, 0x3d, 0xe0, 0x46, 0x00, 0xe0, - 0xd0, 0x00, 0x70, 0xc0, 0x10, 0xc1, 0x00, 0xe0, - 0xd0, 0x08, 0x70, 0x00, 0x10, 0x23, 0xea, 0x75, - 0xc0, 0x83, 0x10, 0x9d, 0x30, 0xc2, 0x10, 0x9f, - 0x30, 0xc2, 0x00, 0xef, 0xd0, 0xac, 0x70, 0x82, - 0x10, 0xa3, 0xea, 0x75, 0x10, 0xc1, 0xc0, 0x83, - 0x30, 0x81, 0xe6, 0x7e, 0xc0, 0x83, 0x20, 0x81, - 0xf6, 0x7f, 0xd0, 0x40, 0x30, 0x43, 0x0f, 0xc5, - 0xc0, 0x43, 0x0f, 0xc5, 0x00, 0xed, 0xd1, 0xa4, - 0x72, 0x86, 0x15, 0xa3, 0xee, 0x23, 0x15, 0xa1, - 0xe6, 0x23, 0x08, 0x20, 0xd0, 0x00, 0x5f, 0x00, - 0xd8, 0xc4, 0x15, 0x63, 0xe9, 0x7e, 0x48, 0xd5, - 0x18, 0xde, 0x18, 0xe0, 0xe9, 0xc2, 0x00, 0xed, - 0xd1, 0xb4, 0x79, 0xc6, 0x19, 0xe0, 0xe9, 0x8c, - 0x00, 0xed, 0xd0, 0x3a, 0x79, 0xc6, 0x69, 0xc0, - 0xd9, 0xc0, 0x69, 0xc6, 0x00, 0xed, 0xd0, 0x38, - 0x79, 0x40, 0x19, 0x60, 0xe9, 0x98, 0x00, 0x28, - 0xd0, 0x24, 0x70, 0x40, 0x02, 0x20, 0xd0, 0x80, - 0x50, 0x42, 0x60, 0x40, 0x15, 0xa3, 0xe9, 0x9f, - 0x00, 0xec, 0xd1, 0xb8, 0x79, 0xc6, 0x69, 0x46, - 0xc9, 0x67, 0x00, 0xec, 0xd9, 0xb4, 0x70, 0x66, - 0x00, 0xec, 0xd1, 0xbc, 0x70, 0x06, 0x10, 0x20, - 0xed, 0xbe, 0x10, 0x60, 0xe9, 0xc1, 0x00, 0xe0, - 0xda, 0xa8, 0x7a, 0xaa, 0xc0, 0x2a, 0x10, 0x1f, - 0x00, 0x22, 0xd0, 0xa0, 0x70, 0x82, 0x20, 0x6a, - 0x00, 0x9f, 0xe9, 0xb5, 0x20, 0x40, 0x19, 0x60, - 0xf9, 0xb8, 0xc9, 0x41, 0xb0, 0x48, 0x30, 0x65, - 0xf5, 0xbd, 0xb0, 0x70, 0xed, 0xbe, 0xd9, 0x40, - 0x00, 0xed, 0xd1, 0xbc, 0x69, 0x46, 0x69, 0x66, - 0x12, 0xa4, 0xea, 0x21, 0x00, 0xec, 0xd1, 0xbc, - 0x73, 0xc6, 0x15, 0xa3, 0xe9, 0xdf, 0x33, 0xe3, - 0xe5, 0xd3, 0xed, 0xd2, 0x63, 0xc6, 0x00, 0x21, - 0xd1, 0xa8, 0x63, 0xc6, 0x00, 0xed, 0xd1, 0xa0, - 0x63, 0xc6, 0x15, 0xa1, 0xf9, 0xdc, 0x12, 0xa3, - 0xe5, 0xe3, 0xd3, 0xc2, 0x00, 0xec, 0xd1, 0xbc, - 0x63, 0xc6, 0xe1, 0xe3, 0x12, 0xa3, 0xea, 0x21, - 0xe1, 0xe3, 0x12, 0xa2, 0xf6, 0x21, 0x13, 0xe0, - 0xfa, 0x21, 0x00, 0xee, 0xd1, 0x8c, 0x78, 0x06, - 0xb1, 0xbc, 0x78, 0x46, 0xb1, 0xbc, 0x78, 0x86, - 0xd1, 0x88, 0x72, 0x46, 0xd1, 0x84, 0x73, 0x06, - 0x13, 0x20, 0xf9, 0xe3, 0x00, 0x64, 0xd1, 0xa0, - 0x70, 0x46, 0xd0, 0xa2, 0x30, 0x81, 0xe9, 0xff, - 0x10, 0x70, 0xea, 0x11, 0x10, 0x6d, 0xea, 0x14, - 0x10, 0x76, 0xea, 0x19, 0x10, 0x7a, 0xea, 0x28, - 0xe2, 0x3b, 0x18, 0xe0, 0xea, 0x3b, 0x00, 0xed, - 0xd1, 0x80, 0x70, 0x86, 0xb0, 0x81, 0xd0, 0x3f, - 0x40, 0x02, 0x10, 0x20, 0xea, 0x0c, 0x60, 0x86, - 0xf3, 0x8a, 0xe1, 0xe3, 0xc0, 0x02, 0x10, 0x1a, - 0x50, 0x80, 0x60, 0x86, 0xe2, 0x3b, 0x15, 0xa3, - 0xea, 0x21, 0xe2, 0xe9, 0xd2, 0x80, 0x00, 0xed, - 0xd1, 0xa4, 0x62, 0x86, 0xe3, 0x0c, 0x00, 0xed, - 0xd1, 0x88, 0xd0, 0x60, 0x70, 0x06, 0x50, 0x40, - 0x60, 0x46, 0x15, 0xa3, 0xfb, 0x0c, 0xd5, 0x84, - 0xe3, 0x0c, 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, - 0xde, 0x1a, 0xe0, 0x46, 0x00, 0xed, 0xd1, 0x88, - 0xd0, 0x60, 0x70, 0x06, 0x50, 0x40, 0x60, 0x46, - 0x15, 0xa2, 0xe7, 0x0c, 0xee, 0x21, 0x00, 0x21, - 0xd1, 0x8c, 0x18, 0xe0, 0xfa, 0x39, 0x70, 0x46, - 0x10, 0x61, 0xea, 0x70, 0xe2, 0x21, 0x65, 0x86, - 0xe2, 0x21, 0x18, 0xe0, 0xea, 0x70, 0xd1, 0x80, - 0x73, 0x06, 0x15, 0xa2, 0xee, 0x68, 0x00, 0x22, - 0xd1, 0x80, 0x70, 0x46, 0x6b, 0x06, 0xcb, 0x01, - 0xb1, 0xb4, 0x70, 0x46, 0x6a, 0xc6, 0xca, 0xc1, - 0x00, 0x65, 0xd1, 0x98, 0x70, 0x46, 0x10, 0x61, - 0xfa, 0x50, 0x02, 0x41, 0xc3, 0x21, 0xc7, 0xe0, - 0x02, 0x50, 0xea, 0x56, 0xc3, 0x20, 0xc7, 0xe1, - 0xd1, 0x88, 0xd0, 0x01, 0x02, 0x40, 0x62, 0x46, - 0x0f, 0xef, 0xd0, 0x7f, 0x30, 0x6f, 0xfa, 0x5f, - 0xc3, 0x20, 0xc7, 0x4c, 0xd0, 0x00, 0x00, 0x65, - 0xd1, 0x98, 0x70, 0x46, 0x60, 0x06, 0xb0, 0x41, - 0x43, 0x01, 0xe2, 0x70, 0xc3, 0x22, 0xc7, 0xcc, - 0xc7, 0x60, 0xc7, 0xa1, 0x02, 0x50, 0xea, 0x70, - 0xc7, 0x61, 0xc7, 0xa0, 0xdb, 0x80, 0xd1, 0x00, - 0x00, 0xef, 0xd1, 0xa8, 0x70, 0x46, 0x10, 0x60, - 0xfa, 0x7a, 0x00, 0xe0, 0xd1, 0x88, 0x70, 0x46, - 0x00, 0x22, 0xd1, 0xb0, 0x70, 0x86, 0x30, 0x81, - 0xea, 0x82, 0x60, 0x46, 0xd0, 0x20, 0xf3, 0x06, - 0x10, 0x63, 0xea, 0x87, 0x10, 0x64, 0xea, 0x87, - 0xe2, 0x95, 0x00, 0xef, 0xd1, 0x6c, 0x71, 0x45, - 0xc0, 0x05, 0x30, 0x01, 0xf6, 0x95, 0xdb, 0x82, - 0xd1, 0x01, 0x10, 0x63, 0xea, 0x95, 0xd1, 0x02, - 0x11, 0x62, 0xea, 0x95, 0xd1, 0x03, 0xd1, 0x8c, - 0x61, 0x06, 0xdb, 0x40, 0x00, 0xe0, 0xd0, 0x00, - 0x71, 0x00, 0xc0, 0x84, 0x10, 0x9c, 0xb0, 0x96, - 0xfa, 0xa0, 0xb1, 0x38, 0xb0, 0x96, 0xfa, 0xa3, - 0xb1, 0x30, 0x00, 0x29, 0xd1, 0x84, 0x00, 0x22, - 0xd0, 0x74, 0x70, 0x86, 0x70, 0xc1, 0x61, 0x06, - 0x30, 0xc2, 0xea, 0xae, 0x60, 0x81, 0xdb, 0x41, - 0xb0, 0x3c, 0xb1, 0xbc, 0xb0, 0x7c, 0x71, 0x00, - 0x70, 0x86, 0x70, 0xc1, 0x61, 0x06, 0x30, 0xc2, - 0xea, 0xb9, 0x60, 0x81, 0xdb, 0x41, 0x00, 0xee, - 0xd1, 0xb4, 0x70, 0x06, 0xb1, 0xbc, 0x70, 0x46, - 0x30, 0x40, 0xea, 0xc2, 0x60, 0x06, 0xdb, 0x41, - 0x00, 0x24, 0xd0, 0x60, 0x30, 0x81, 0xea, 0xc7, - 0x30, 0x81, 0x50, 0x02, 0xea, 0xca, 0xd0, 0x01, - 0x00, 0x22, 0xd1, 0xbc, 0x70, 0x86, 0x30, 0x80, - 0xea, 0xd2, 0x60, 0x06, 0xd0, 0x10, 0xf3, 0x06, - 0x00, 0x22, 0xd1, 0xa4, 0x71, 0x06, 0xd0, 0x01, - 0x41, 0x00, 0x5b, 0x44, 0x5b, 0x6e, 0x6b, 0x46, - 0x00, 0x28, 0xd0, 0x70, 0x70, 0x41, 0x10, 0x62, - 0xfa, 0xe6, 0xd1, 0x84, 0x70, 0x06, 0x10, 0x20, - 0xfa, 0xdf, 0x00, 0x22, 0xd0, 0x00, 0xf3, 0x06, - 0x02, 0x7d, 0xde, 0x68, 0xe0, 0x46, 0x00, 0xed, - 0xd1, 0x88, 0x71, 0x06, 0x01, 0x1f, 0xfa, 0xfd, - 0xd0, 0x41, 0x41, 0x01, 0xd0, 0x62, 0x00, 0x65, - 0xd0, 0x30, 0x70, 0x00, 0x10, 0x21, 0xea, 0xfa, - 0xee, 0xf9, 0x1a, 0xe1, 0xfa, 0xfa, 0xd0, 0x52, - 0x51, 0x01, 0x61, 0x06, 0xe3, 0x0c, 0x18, 0xe0, - 0xea, 0x70, 0xc7, 0x60, 0xc7, 0xe1, 0x02, 0x50, - 0xea, 0x70, 0xc7, 0x61, 0xc7, 0xe0, 0xe2, 0x70, - 0x00, 0x28, 0xdc, 0xa4, 0x7c, 0x72, 0x5c, 0x40, - 0x6c, 0x72, 0x0f, 0xc5, 0x18, 0xe0, 0xeb, 0x82, - 0xd9, 0x0d, 0x00, 0xee, 0xd1, 0xa4, 0x70, 0x06, - 0x10, 0x21, 0xfb, 0x7f, 0xd9, 0x0c, 0x90, 0x06, - 0x00, 0x10, 0xeb, 0x7f, 0x00, 0x21, 0xd1, 0x88, - 0x7a, 0x06, 0x1a, 0x20, 0xeb, 0x7f, 0xd9, 0x00, - 0x00, 0xed, 0xd1, 0xbc, 0x79, 0x46, 0x19, 0x60, - 0xeb, 0x7f, 0x39, 0x68, 0xc0, 0xe5, 0xc0, 0x25, - 0x10, 0x13, 0xb0, 0x0f, 0xef, 0x7f, 0xb0, 0x22, - 0xe7, 0x7f, 0x00, 0xe0, 0xd1, 0xa8, 0x71, 0x46, - 0x11, 0x5f, 0x29, 0x45, 0x00, 0x22, 0xd0, 0x18, - 0x00, 0x22, 0xd4, 0x54, 0x00, 0x22, 0xd0, 0x9c, - 0x70, 0x00, 0x74, 0x51, 0x70, 0x42, 0x34, 0x40, - 0xe7, 0x3c, 0xd0, 0x40, 0x00, 0x22, 0xd4, 0x50, - 0x74, 0x51, 0x34, 0x40, 0xef, 0x42, 0x20, 0x45, - 0x60, 0x42, 0x39, 0x41, 0x19, 0x60, 0xf7, 0x5e, - 0x00, 0x65, 0xd1, 0xa8, 0x7a, 0x86, 0x29, 0x6a, - 0x19, 0x59, 0xb9, 0x7e, 0xf7, 0x75, 0x15, 0xa3, - 0xf7, 0x57, 0x00, 0xed, 0xd1, 0xac, 0x70, 0x06, - 0x00, 0xed, 0xd1, 0xb0, 0x70, 0x46, 0x30, 0x01, - 0xfb, 0x7f, 0x00, 0x65, 0xd1, 0x84, 0x70, 0x46, - 0xb0, 0x7f, 0x60, 0x46, 0xd5, 0x84, 0xe3, 0x7f, - 0x11, 0x41, 0xd0, 0x4a, 0x00, 0xed, 0xd1, 0xa0, - 0x74, 0x46, 0xd0, 0x00, 0x60, 0x06, 0x30, 0xc5, - 0x39, 0x45, 0xe7, 0x6e, 0x14, 0x60, 0xeb, 0x6b, - 0xf3, 0x85, 0xb0, 0x41, 0xef, 0x65, 0xe3, 0x71, - 0x00, 0x66, 0xd1, 0xa0, 0x60, 0xc6, 0x15, 0xa3, - 0xeb, 0x7f, 0xf3, 0x85, 0xe3, 0x7f, 0xd9, 0x01, - 0x00, 0x66, 0xd1, 0xa0, 0x70, 0x06, 0x30, 0x03, - 0xe7, 0x7e, 0x10, 0x1d, 0x10, 0x3b, 0xe7, 0x7f, - 0x60, 0xc6, 0x00, 0x66, 0xd1, 0xa4, 0x69, 0x06, - 0x15, 0xa4, 0xea, 0x23, 0xe2, 0x3b, 0x00, 0x65, - 0xdd, 0x08, 0x7c, 0xf4, 0xbc, 0xff, 0x6c, 0xf4, - 0x00, 0xef, 0xdd, 0x10, 0x7c, 0xf4, 0xbc, 0xfe, - 0x6c, 0xf4, 0xc0, 0x3f, 0xf1, 0x18, 0xf1, 0x16, - 0xf1, 0x18, 0x00, 0x05, 0x08, 0x20, 0xd0, 0x40, - 0x5f, 0x01, 0x15, 0x63, 0xe9, 0x77, 0x05, 0x5e, - 0xeb, 0x08, 0x00, 0x22, 0xd1, 0xa0, 0x6b, 0x06, - 0x00, 0x22, 0xd1, 0xa8, 0x6b, 0xc6, 0x00, 0x22, - 0xd1, 0xac, 0x6a, 0xc6, 0x00, 0xee, 0xd0, 0x0c, - 0x00, 0xe6, 0xd1, 0x9c, 0x70, 0x40, 0x30, 0x5f, - 0xe9, 0x8d, 0xb0, 0x3c, 0xb1, 0xb4, 0x70, 0x40, - 0x30, 0x5f, 0xe9, 0x8d, 0xb1, 0xb4, 0x00, 0xe6, - 0xd0, 0x10, 0xd0, 0x83, 0x70, 0x40, 0x60, 0x46, - 0xb0, 0x3c, 0xb1, 0xbc, 0xb0, 0x81, 0xed, 0x90, - 0x00, 0xee, 0xd0, 0x0c, 0x00, 0xe6, 0xd1, 0x9c, - 0x70, 0x40, 0x30, 0x4c, 0xe9, 0xa3, 0xb0, 0x3c, - 0xb1, 0xb4, 0x70, 0x40, 0x30, 0x4c, 0xe9, 0xa3, - 0xb1, 0xb4, 0x00, 0xe6, 0xd0, 0x00, 0x61, 0x80, - 0x00, 0x21, 0xd1, 0xb4, 0x70, 0x06, 0x10, 0x20, - 0xe9, 0xae, 0xd0, 0x00, 0x60, 0x06, 0xf1, 0x18, - 0x00, 0x21, 0xd1, 0x8c, 0x70, 0x46, 0x65, 0x86, - 0xde, 0xc0, 0x00, 0xee, 0xd0, 0x20, 0x70, 0x00, - 0x10, 0x22, 0xfd, 0xb9, 0xde, 0xc2, 0x00, 0x21, - 0xd0, 0x04, 0x70, 0x00, 0x10, 0x21, 0xe9, 0xc0, - 0x15, 0xa3, 0xe9, 0xdc, 0xd0, 0x02, 0x4c, 0x00, - 0x10, 0x63, 0xe9, 0xc5, 0xcc, 0x3b, 0xd0, 0x04, - 0x63, 0x00, 0xd0, 0x00, 0x70, 0x00, 0x30, 0x1f, - 0xfb, 0x08, 0xd0, 0x18, 0x70, 0x00, 0x10, 0x20, - 0xed, 0xc7, 0xd0, 0x04, 0x70, 0x80, 0x10, 0xa0, - 0xeb, 0x08, 0xf1, 0x16, 0x00, 0x21, 0xd0, 0x9a, - 0xc0, 0x39, 0x30, 0x1f, 0x10, 0x18, 0x30, 0x02, - 0xfd, 0xcf, 0xe3, 0x08, 0x00, 0xe0, 0xd9, 0x04, - 0x79, 0x24, 0xb9, 0x38, 0x19, 0x1c, 0xdc, 0x88, - 0x4c, 0xac, 0xd0, 0x02, 0x40, 0x2c, 0x10, 0x02, - 0x0c, 0x80, 0x10, 0x63, 0xea, 0x70, 0x15, 0x63, - 0xf9, 0xec, 0xf1, 0x18, 0x00, 0xef, 0xdc, 0x00, - 0x7c, 0x30, 0x00, 0x24, 0xd0, 0x30, 0x70, 0x00, - 0x10, 0x21, 0xf9, 0xf6, 0xbc, 0x3b, 0xe1, 0xfd, - 0x10, 0x22, 0xf9, 0xfa, 0xbc, 0x38, 0xe1, 0xfd, - 0x10, 0x23, 0xf9, 0xfd, 0xbc, 0x3c, 0x1e, 0xe0, - 0xea, 0x03, 0x15, 0x63, 0xfa, 0x02, 0xbe, 0xfc, - 0xdc, 0x12, 0x0e, 0xde, 0xfa, 0x09, 0xc0, 0x24, - 0x30, 0x30, 0xf6, 0x09, 0x2c, 0x00, 0xd0, 0x2c, - 0x6c, 0x00, 0x1e, 0xe0, 0xea, 0x0f, 0xcc, 0x24, - 0x1c, 0x1f, 0xd9, 0x40, 0x06, 0x50, 0xea, 0x22, - 0xc0, 0x24, 0xb0, 0x12, 0xfe, 0x22, 0xd9, 0x74, - 0x79, 0x65, 0x19, 0x5f, 0x30, 0x25, 0xee, 0x1b, - 0x29, 0x40, 0x19, 0x5f, 0x19, 0x41, 0xc0, 0x25, - 0x20, 0x30, 0x30, 0x24, 0xe6, 0x22, 0x3c, 0x00, - 0xd0, 0x38, 0x69, 0x40, 0x1c, 0x05, 0xbc, 0x38, - 0x3c, 0x32, 0x5c, 0x3b, 0xbc, 0x3f, 0xd8, 0xec, - 0x78, 0xe3, 0xc0, 0xa3, 0x10, 0xb2, 0xf6, 0x2f, - 0xd0, 0x92, 0x02, 0xe4, 0xd8, 0x00, 0xd0, 0xc0, - 0x20, 0xe0, 0xb0, 0x81, 0xee, 0x32, 0xd0, 0x30, - 0x60, 0xc0, 0x00, 0xac, 0xd0, 0x20, 0xc0, 0xc0, - 0xd8, 0x40, 0xc1, 0x23, 0xd4, 0x64, 0x34, 0x63, - 0xdc, 0x40, 0x0c, 0x1f, 0xfa, 0x5b, 0xc0, 0x65, - 0xb0, 0x41, 0xe6, 0x47, 0x68, 0x40, 0xb0, 0x3c, - 0xe2, 0x42, 0xc0, 0xc0, 0x34, 0x65, 0xdc, 0x48, - 0x4c, 0x70, 0x1c, 0x5f, 0x20, 0xf1, 0x15, 0x63, - 0xfa, 0x5c, 0xf2, 0x54, 0xc1, 0x11, 0xc0, 0x83, - 0xf2, 0xa5, 0xe2, 0x6f, 0xb1, 0x01, 0xe6, 0x5a, - 0x68, 0x40, 0x28, 0x60, 0xb0, 0x3c, 0xe2, 0x54, - 0x0f, 0xc5, 0xd9, 0x40, 0xb1, 0x12, 0x11, 0x01, - 0x21, 0x25, 0xf2, 0x54, 0xc1, 0x11, 0xb1, 0x01, - 0xe6, 0x6f, 0x20, 0x31, 0x68, 0x40, 0x30, 0x31, - 0xb0, 0x3c, 0x28, 0x60, 0x70, 0x43, 0x30, 0x31, - 0x60, 0x40, 0x20, 0x31, 0xb0, 0x3c, 0xb0, 0xf8, - 0xe2, 0x61, 0xe2, 0xf7, 0xd8, 0xec, 0x78, 0xe3, - 0x00, 0xa8, 0xd0, 0x80, 0x00, 0xa8, 0xd1, 0x44, - 0x00, 0xac, 0xd0, 0x20, 0xc0, 0xc0, 0x0c, 0x1f, - 0xfa, 0xb3, 0xd9, 0x78, 0x79, 0x65, 0x39, 0x25, - 0x19, 0x5f, 0xc9, 0xa5, 0x19, 0x83, 0x20, 0x26, - 0x20, 0xe6, 0x20, 0xa6, 0x21, 0x66, 0xc1, 0x23, - 0xc0, 0x64, 0x10, 0x5f, 0x10, 0x9d, 0x20, 0x81, - 0x31, 0x01, 0x30, 0x44, 0xf6, 0x8e, 0x21, 0x01, - 0x30, 0x84, 0x10, 0x83, 0xc4, 0x64, 0x34, 0x63, - 0xdc, 0x48, 0x4c, 0x70, 0x1c, 0x5f, 0x15, 0x63, - 0xfa, 0xc3, 0x20, 0xb1, 0xf2, 0xa5, 0xc1, 0x24, - 0x11, 0x1f, 0xc0, 0x85, 0x30, 0xb1, 0xf2, 0xa5, - 0xc1, 0x11, 0xc0, 0x83, 0x0c, 0x9d, 0xfa, 0xa3, - 0xb0, 0xbc, 0xf2, 0xa5, 0xe2, 0xec, 0xb1, 0x01, - 0xe6, 0x5a, 0x70, 0x42, 0xb0, 0xb8, 0x60, 0x40, - 0xb0, 0x3c, 0xe2, 0xa5, 0xb1, 0x01, 0xe6, 0x5a, - 0x70, 0x42, 0xb0, 0xb8, 0x60, 0x40, 0xb0, 0x38, - 0xe2, 0xac, 0x00, 0xac, 0xd0, 0x24, 0xc1, 0x23, - 0xb1, 0x12, 0xf2, 0xac, 0xd1, 0x24, 0x31, 0x23, - 0x00, 0xa8, 0xd0, 0x84, 0xf2, 0xac, 0xd1, 0x12, - 0x00, 0xa8, 0xd0, 0x84, 0xc0, 0x03, 0xf2, 0xac, - 0xe2, 0xec, 0xd8, 0x82, 0x48, 0x95, 0x18, 0x81, - 0xb1, 0x01, 0xe6, 0xd9, 0x20, 0xb1, 0x70, 0x42, - 0x30, 0xb1, 0x20, 0x22, 0x60, 0x40, 0x30, 0x22, - 0xb0, 0xbc, 0xb0, 0x3c, 0x30, 0xb1, 0x70, 0x42, - 0x20, 0xb1, 0x30, 0x22, 0x60, 0x40, 0x20, 0x22, - 0xb0, 0xbc, 0xb0, 0x3c, 0xe2, 0xc6, 0xc1, 0x11, - 0xc0, 0x85, 0x30, 0xb1, 0x20, 0xe2, 0xb1, 0x01, - 0xe6, 0xec, 0x70, 0x42, 0xb0, 0xb8, 0x20, 0x22, - 0x60, 0x40, 0x30, 0x22, 0xb0, 0x3c, 0x70, 0x43, - 0xb0, 0xf8, 0x30, 0x22, 0x60, 0x40, 0x20, 0x22, - 0xb0, 0x3c, 0xe2, 0xdd, 0xd0, 0x08, 0x5c, 0x00, - 0x3c, 0x32, 0xd0, 0x04, 0x40, 0x30, 0x3c, 0x00, - 0x15, 0x63, 0xfa, 0xf7, 0x1e, 0xe0, 0xea, 0xf7, - 0xbc, 0x3c, 0x00, 0xac, 0xd0, 0xa0, 0x00, 0xa8, - 0xd0, 0x00, 0x00, 0x20, 0xd1, 0x24, 0x70, 0x42, - 0xb0, 0xbc, 0x60, 0x40, 0xb0, 0x3c, 0xb1, 0x01, - 0xee, 0xfd, 0xd0, 0x30, 0x30, 0x30, 0xef, 0x03, - 0xd0, 0x04, 0x63, 0x00, 0x08, 0x20, 0xd0, 0x40, - 0x3f, 0x01, 0x02, 0xba, 0xde, 0x3c, 0xe0, 0x46, - 0x50, 0x00, 0x50, 0x00, 0x01, 0x46, 0xd0, 0x08, - 0x94, 0x89, 0xd0, 0x8c, 0x44, 0x82, 0x14, 0x9e, - 0x30, 0x12, 0xd0, 0x88, 0x10, 0x80, 0x00, 0xe8, - 0xd1, 0x80, 0x70, 0xc6, 0x00, 0x06, 0xa0, 0xbd, - 0xa0, 0xfc, 0x80, 0x3f, 0xb1, 0xbe, 0x60, 0xc6, - 0x00, 0x06, 0x80, 0xa9, 0x80, 0x3f, 0x80, 0x2a, - 0x80, 0x3f, 0x00, 0x21, 0xd0, 0x3c, 0x00, 0x0a, - 0xb1, 0x82, 0xd0, 0x6b, 0x70, 0x46, 0x00, 0x06, - 0x80, 0x07, 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, - 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, - 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, - 0xd0, 0x00, 0xa0, 0x29, 0x80, 0x2b, 0x0c, 0x20, - 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x27, 0x90, 0x09, - 0xd0, 0x41, 0x40, 0x01, 0xd0, 0x44, 0x40, 0x70, - 0x20, 0x01, 0xa0, 0x27, 0x80, 0x3f, 0x00, 0xc6, - 0x15, 0x63, 0xe9, 0xae, 0x05, 0x5e, 0xe9, 0xbe, - 0x00, 0xe0, 0xd0, 0x40, 0x70, 0x81, 0x10, 0x9c, - 0xb0, 0x96, 0xf9, 0xb7, 0x00, 0x21, 0xd0, 0x40, - 0xe1, 0xbb, 0xb0, 0x96, 0xf9, 0xbe, 0x00, 0x22, - 0xd0, 0x40, 0x27, 0xc1, 0x27, 0x41, 0x27, 0x81, - 0x90, 0x83, 0x00, 0x64, 0xd0, 0x10, 0x60, 0x80, - 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0x00, 0x64, - 0xd0, 0x14, 0x67, 0x40, 0x80, 0x34, 0x80, 0x3f, - 0x00, 0xc6, 0x90, 0xae, 0x00, 0x64, 0xd0, 0x18, - 0x60, 0x80, 0x90, 0xa6, 0x00, 0x64, 0xd0, 0x1c, - 0x60, 0x80, 0x15, 0x63, 0xe9, 0xe3, 0x0c, 0x1f, - 0xe9, 0xe3, 0x05, 0x50, 0xf9, 0xe3, 0x15, 0xa3, - 0xf9, 0xe3, 0x90, 0x4d, 0x10, 0x60, 0xe5, 0xdb, - 0x00, 0x06, 0x05, 0x0d, 0x01, 0x7a, 0xde, 0x1a, - 0xe0, 0x46, 0x15, 0xa3, 0xf9, 0xfb, 0x00, 0x21, - 0xd0, 0x04, 0x70, 0x00, 0x10, 0x21, 0xe9, 0xfb, - 0xd0, 0x38, 0x70, 0x00, 0x15, 0x63, 0xe9, 0xef, - 0x10, 0x1f, 0x15, 0x21, 0xe5, 0xe0, 0xd0, 0x64, - 0x30, 0x54, 0xe5, 0xe0, 0xc0, 0x40, 0xb0, 0x7f, - 0x30, 0x54, 0xe9, 0xfb, 0x0c, 0x09, 0x05, 0x0d, - 0xe1, 0xef, 0xc0, 0x5f, 0x10, 0x58, 0x10, 0x48, - 0x00, 0xee, 0xd0, 0x8c, 0xd0, 0xc3, 0x70, 0x02, - 0x30, 0x01, 0xea, 0x10, 0xb0, 0xbc, 0xb0, 0xc1, - 0xee, 0x01, 0x00, 0x26, 0xd0, 0x20, 0x70, 0x40, - 0xb0, 0x7f, 0x60, 0x40, 0x15, 0xa3, 0xea, 0x0f, - 0xb0, 0x88, 0x77, 0xc2, 0x80, 0x07, 0x09, 0x49, - 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, - 0x00, 0x4d, 0xa0, 0x6c, 0xd3, 0x80, 0xd0, 0xa1, - 0x00, 0x88, 0xd0, 0xa9, 0x00, 0x4d, 0x00, 0x50, - 0xfa, 0x1a, 0x0c, 0x49, 0x00, 0x8d, 0xc0, 0x42, - 0x10, 0x60, 0xea, 0x2a, 0xb0, 0x5e, 0xb0, 0x43, - 0xfe, 0x34, 0xd0, 0x61, 0x23, 0x81, 0xe2, 0x1f, - 0x0c, 0x09, 0x05, 0x0d, 0x15, 0x20, 0xfe, 0x31, - 0xd0, 0x65, 0x30, 0x54, 0xee, 0x10, 0x03, 0xb4, - 0xd6, 0x29, 0xe0, 0x46, 0xc6, 0xd4, 0xb6, 0xc1, - 0xe6, 0x31, 0xd0, 0x64, 0x30, 0x5b, 0xfe, 0x31, - 0xd7, 0x00, 0xb7, 0x01, 0xd3, 0x81, 0x00, 0x27, - 0xd0, 0x10, 0xd0, 0x81, 0x60, 0x80, 0x15, 0x63, - 0xfa, 0x54, 0x00, 0x22, 0xdc, 0xd8, 0x03, 0xf8, - 0xd0, 0x10, 0xf0, 0x4a, 0x15, 0xa3, 0xfa, 0x51, - 0x02, 0xf7, 0xdc, 0x26, 0x0c, 0x10, 0xf8, 0x46, - 0x02, 0xfc, 0xd8, 0x22, 0xe0, 0x46, 0x02, 0xf2, - 0xd6, 0x2b, 0xe0, 0x46, 0x00, 0x22, 0xdc, 0xd8, - 0x03, 0xfa, 0xd0, 0x10, 0xf0, 0x4a, 0x03, 0x35, - 0xda, 0x20, 0x15, 0xa3, 0xe8, 0x46, 0x03, 0x30, - 0xdc, 0x27, 0xe0, 0x46, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xe0, - 0xe1, 0xec, 0xe2, 0x12, 0xe2, 0x14, 0xe1, 0xc7, - 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8d, 0x06, 0x50, - 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, - 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x64, - 0x30, 0x5b, 0xfc, 0x11, 0xc0, 0x39, 0x30, 0x31, - 0x10, 0x12, 0x10, 0x20, 0xe9, 0x88, 0x03, 0x10, - 0xe9, 0x93, 0x0f, 0x19, 0xf9, 0x8f, 0xd1, 0x44, - 0xe1, 0x79, 0x03, 0xde, 0xf9, 0xba, 0x03, 0xdf, - 0xe9, 0x99, 0xd3, 0x40, 0xca, 0x50, 0xd1, 0x42, - 0xe2, 0xea, 0xc0, 0x50, 0x10, 0x54, 0xc0, 0x90, - 0x10, 0x8c, 0x10, 0x92, 0x10, 0xe0, 0xe5, 0xa8, - 0xc0, 0x01, 0x10, 0x01, 0x20, 0x40, 0xc0, 0x02, - 0x10, 0x01, 0x20, 0x80, 0x10, 0x60, 0xfd, 0xab, - 0xb0, 0x7f, 0x10, 0xa0, 0xfd, 0xae, 0xb0, 0xbf, - 0x10, 0x5f, 0x10, 0x9f, 0x00, 0xef, 0xd0, 0x3e, - 0x20, 0x52, 0x20, 0x83, 0x20, 0x93, 0x10, 0x4c, - 0x10, 0x82, 0x40, 0x80, 0x50, 0x42, 0x0f, 0xc5, - 0xcb, 0xaa, 0xcb, 0xeb, 0xca, 0x50, 0xd0, 0xc0, - 0xb0, 0xc1, 0xf1, 0x9b, 0xcb, 0x01, 0xd0, 0xc1, - 0xf1, 0x9b, 0xcb, 0x41, 0xba, 0x7f, 0xbb, 0x3f, - 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, - 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x48, - 0xcc, 0xb1, 0x1c, 0x9f, 0x06, 0xd0, 0xe9, 0xd5, - 0x01, 0x69, 0xd0, 0x20, 0x3c, 0x80, 0xc0, 0x1c, - 0x10, 0x08, 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, - 0x01, 0xb5, 0xd4, 0x00, 0x2c, 0x80, 0xde, 0x84, - 0xde, 0xc4, 0xe3, 0x1e, 0xd3, 0xc2, 0xf2, 0xd3, - 0x13, 0xa0, 0xed, 0xe5, 0xf2, 0x32, 0xb3, 0x81, - 0xe9, 0xec, 0x80, 0x07, 0xd4, 0x00, 0xc4, 0x50, - 0xd3, 0x08, 0xe2, 0x95, 0xd0, 0x71, 0x20, 0x56, - 0x00, 0x48, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, - 0xe9, 0xfa, 0x06, 0x5e, 0xfa, 0x03, 0x08, 0x89, - 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xfa, 0xd3, 0xc4, - 0x06, 0x5e, 0xfa, 0x03, 0xd0, 0x43, 0x40, 0x4c, - 0xea, 0x03, 0x08, 0x49, 0x00, 0x8d, 0x10, 0x87, - 0x53, 0x02, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, - 0x03, 0x1c, 0xea, 0x0a, 0x09, 0x49, 0x00, 0x0d, - 0xd0, 0x9f, 0x40, 0x02, 0xb0, 0x20, 0x03, 0x19, - 0xea, 0x10, 0xb0, 0x20, 0xa0, 0x2c, 0xe2, 0x5b, - 0x06, 0x5f, 0xfa, 0x80, 0xd4, 0x00, 0xc4, 0x50, - 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xd3, - 0xe1, 0xdc, 0xe2, 0x00, 0xe2, 0x02, 0xe1, 0xac, - 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x91, 0x06, 0x50, - 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, - 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x64, - 0x30, 0x5b, 0xfc, 0x11, 0xbc, 0x10, 0xd0, 0x10, - 0x0c, 0x1e, 0xf9, 0x8e, 0xbc, 0x10, 0xd0, 0x30, - 0xc0, 0x40, 0x30, 0x70, 0xed, 0x8e, 0x03, 0x10, - 0xe9, 0x97, 0x0f, 0x19, 0xf9, 0x93, 0xd1, 0x44, - 0xe1, 0x79, 0x03, 0xdf, 0xe9, 0xa1, 0xd3, 0x40, - 0xca, 0x50, 0xcb, 0x52, 0x03, 0x1d, 0xf9, 0xa8, - 0xca, 0x12, 0xca, 0x52, 0xe1, 0xa5, 0x03, 0x1d, - 0xf9, 0xa8, 0xca, 0x12, 0xca, 0x53, 0xca, 0xae, - 0xca, 0xef, 0xb1, 0x7e, 0x03, 0x1e, 0xfa, 0xea, - 0xb1, 0x7e, 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, - 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xd2, - 0x00, 0xa8, 0xd0, 0x00, 0xcc, 0x5b, 0x1c, 0x5f, - 0x1c, 0x43, 0x20, 0x31, 0x7c, 0x40, 0xb0, 0x3c, - 0x7e, 0x80, 0xcc, 0xb1, 0xce, 0xfa, 0x1c, 0x9f, - 0x1e, 0xdf, 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, - 0xe9, 0xc4, 0x3c, 0x80, 0x0e, 0xd9, 0xe9, 0xc7, - 0x3e, 0xc0, 0x3e, 0xf2, 0x3e, 0xb1, 0xd0, 0x01, - 0x40, 0x1b, 0x10, 0x05, 0x20, 0x1f, 0x2c, 0x40, - 0x2c, 0x80, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, - 0xe3, 0x1e, 0xd3, 0xc2, 0xf2, 0xd3, 0x13, 0xa0, - 0xed, 0xd8, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xdc, - 0x80, 0x07, 0xe2, 0x95, 0x0d, 0x09, 0xd1, 0x8c, - 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xe8, 0x06, 0x5e, - 0xf9, 0xf1, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, - 0xf9, 0xe8, 0xd3, 0xc4, 0x06, 0x5e, 0xf9, 0xf1, - 0xd0, 0x43, 0x40, 0x4c, 0xe9, 0xf1, 0x08, 0x49, - 0x00, 0x8d, 0x10, 0x87, 0x53, 0x02, 0x01, 0x46, - 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xf8, - 0x09, 0x49, 0x00, 0x0d, 0xd0, 0x9f, 0x40, 0x02, - 0xb0, 0x20, 0x03, 0x19, 0xe9, 0xfe, 0xb0, 0x20, - 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x80, - 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, - 0xe2, 0x8d, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xc1, - 0xe1, 0xca, 0xe1, 0xee, 0xe1, 0xf0, 0xe1, 0xa8, - 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8d, 0x06, 0x50, - 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, - 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x64, - 0x30, 0x5b, 0xfc, 0x11, 0xc0, 0x39, 0x30, 0x31, - 0x10, 0x12, 0x10, 0x20, 0xe9, 0x88, 0x03, 0x10, - 0xe9, 0x93, 0x0f, 0x19, 0xf9, 0x8f, 0xd1, 0x44, - 0xe1, 0x79, 0x03, 0xdf, 0xe9, 0x9d, 0xd3, 0x40, - 0xca, 0x50, 0xcb, 0x52, 0x03, 0x1d, 0xf9, 0xa4, - 0xca, 0x12, 0xca, 0x52, 0xe1, 0xa1, 0x03, 0x1d, - 0xf9, 0xa4, 0xca, 0x12, 0xca, 0x53, 0xca, 0xae, - 0xca, 0xef, 0xb1, 0x7e, 0x03, 0x1e, 0xfa, 0xea, - 0xb1, 0x7e, 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, - 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, - 0x1c, 0x48, 0xcc, 0xb1, 0x1c, 0x9f, 0x06, 0xd0, - 0xe9, 0xb6, 0x01, 0x69, 0xd0, 0x20, 0x3c, 0x80, - 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, 0x2c, 0x40, - 0x2c, 0x80, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, - 0xde, 0x84, 0xde, 0xc4, 0xe3, 0x1e, 0xd3, 0xc2, - 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xc6, 0xf2, 0x32, - 0xb3, 0x81, 0xe9, 0xca, 0x80, 0x07, 0xe2, 0x95, - 0x0d, 0x09, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, - 0xe9, 0xd6, 0x06, 0x5e, 0xf9, 0xdf, 0x08, 0x89, - 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xd6, 0xd3, 0xc4, - 0x06, 0x5e, 0xf9, 0xdf, 0xd0, 0x43, 0x40, 0x4c, - 0xe9, 0xdf, 0x08, 0x49, 0x00, 0x8d, 0x10, 0x87, - 0x53, 0x02, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, - 0x03, 0x1c, 0xe9, 0xe6, 0x09, 0x49, 0x00, 0x0d, - 0xd0, 0x9f, 0x40, 0x02, 0xb0, 0x20, 0x03, 0x19, - 0xe9, 0xec, 0xb0, 0x20, 0xa0, 0x2c, 0xe2, 0x5b, - 0x06, 0x5f, 0xfa, 0x80, 0xd4, 0x00, 0xc4, 0x50, - 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xdb, - 0xe1, 0xe9, 0xe2, 0x00, 0xe2, 0x02, 0xe1, 0xc3, - 0xe1, 0x65, 0x30, 0x5a, 0xe5, 0x8d, 0x06, 0x50, - 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, - 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x52, - 0x30, 0x5b, 0xfc, 0x11, 0xc0, 0x39, 0x30, 0x31, - 0x10, 0x11, 0x10, 0x20, 0xe9, 0x88, 0x03, 0x10, - 0xe9, 0x93, 0x0f, 0x19, 0xf9, 0x8f, 0xd1, 0x44, - 0xe1, 0x79, 0x03, 0xd0, 0xf9, 0x98, 0xca, 0x50, - 0x03, 0xde, 0xf9, 0x9a, 0xd1, 0x42, 0xe2, 0xea, - 0xcb, 0xaa, 0xcb, 0xeb, 0xc0, 0x50, 0x10, 0x54, - 0xc0, 0x90, 0x10, 0x8c, 0x10, 0x92, 0xd0, 0xc1, - 0x05, 0x50, 0xe9, 0xa5, 0xb0, 0xc2, 0x10, 0x60, - 0xfd, 0xa8, 0xb0, 0x7f, 0x10, 0xa0, 0xfd, 0xab, - 0xb0, 0xbf, 0x10, 0x5f, 0x10, 0x9f, 0x00, 0xef, - 0xd0, 0x3e, 0x20, 0x52, 0x20, 0x83, 0x20, 0x93, - 0x10, 0x4c, 0x10, 0x82, 0x40, 0x80, 0x50, 0x42, - 0xd0, 0x81, 0x14, 0x1f, 0x14, 0x01, 0x05, 0x50, - 0xe9, 0xbd, 0x50, 0x42, 0xe1, 0xbe, 0x54, 0x02, - 0xca, 0x10, 0xca, 0x50, 0xcb, 0x01, 0xcb, 0x41, - 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, - 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x49, - 0xcc, 0xb1, 0x1c, 0x9f, 0xc0, 0x1c, 0x10, 0x08, - 0x20, 0x1f, 0x05, 0x50, 0xf9, 0xd2, 0xb0, 0x3c, - 0x2c, 0x40, 0x2c, 0x80, 0x01, 0xb5, 0xd4, 0x00, - 0x2c, 0x80, 0x02, 0xe4, 0xde, 0x80, 0xde, 0xc1, - 0xe3, 0x1e, 0xd3, 0xc0, 0xf2, 0xd3, 0x13, 0xa0, - 0xed, 0xe0, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xe9, - 0x80, 0x07, 0xd4, 0x02, 0x44, 0x15, 0x14, 0x1f, - 0xc4, 0x50, 0xd3, 0x08, 0xe2, 0x95, 0xd0, 0x71, - 0x20, 0x56, 0x00, 0x48, 0xd1, 0x8c, 0x03, 0x0d, - 0x41, 0x8c, 0xe9, 0xf7, 0x08, 0x89, 0x03, 0xcd, - 0x13, 0xe3, 0xf9, 0xf6, 0xd3, 0xc4, 0xe1, 0xf7, - 0xb3, 0xc1, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, - 0x03, 0x1c, 0xe9, 0xfe, 0x09, 0x49, 0x00, 0x0d, - 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x7f, - 0xd4, 0x02, 0x44, 0x15, 0x14, 0x1f, 0xc4, 0x50, - 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xc9, - 0xe1, 0xd2, 0xe1, 0xe7, 0xe1, 0xe9, 0xe1, 0xab, - 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x91, 0x06, 0x50, - 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, - 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x52, - 0x30, 0x5b, 0xfc, 0x11, 0xbc, 0x10, 0xd0, 0x10, - 0x0c, 0x1e, 0xf9, 0x8e, 0xbc, 0x10, 0xd0, 0x20, - 0xc0, 0x40, 0x30, 0x70, 0xed, 0x8e, 0x03, 0x10, - 0xe9, 0x97, 0x0f, 0x19, 0xf9, 0x93, 0xd1, 0x44, - 0xe1, 0x79, 0x03, 0xd0, 0xf9, 0xa0, 0xca, 0x50, - 0xcb, 0x52, 0x03, 0x1d, 0xf9, 0xa7, 0xca, 0x12, - 0xca, 0x52, 0xe1, 0xa4, 0x03, 0x1d, 0xf9, 0xa7, - 0xca, 0x12, 0xca, 0x53, 0xca, 0xae, 0xca, 0xef, - 0xb1, 0x7e, 0x03, 0x1e, 0xfa, 0xea, 0xb1, 0x7e, - 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, - 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xc8, 0x00, 0x2a, - 0xd0, 0x00, 0x20, 0x1b, 0x20, 0x1b, 0x05, 0x50, - 0xf9, 0xb8, 0xb0, 0x3f, 0x10, 0x02, 0x7c, 0x40, - 0xcc, 0xb1, 0x1c, 0x9f, 0x01, 0x69, 0xd0, 0x3c, - 0x0c, 0x99, 0xe9, 0xc1, 0x3c, 0x80, 0xde, 0xa0, - 0x2c, 0x5f, 0x2c, 0x9f, 0xd0, 0x30, 0x70, 0x00, - 0x2c, 0x80, 0xde, 0xc1, 0xe3, 0x1e, 0xd3, 0xc0, - 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xce, 0xf2, 0x32, - 0xb3, 0x81, 0xe9, 0xd2, 0x80, 0x07, 0xe2, 0x95, - 0x0d, 0x09, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, - 0xe9, 0xde, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, - 0xf9, 0xdd, 0xd3, 0xc4, 0xe1, 0xde, 0xb3, 0xc1, - 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, - 0xe9, 0xe5, 0x09, 0x49, 0x00, 0x0d, 0xa0, 0x2c, - 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x7f, 0xd4, 0x00, - 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, - 0x50, 0x00, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xa3, - 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8a, - 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x87, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x64, 0x30, 0x5b, 0xfd, 0xb4, - 0xc0, 0x39, 0x30, 0x31, 0x10, 0x12, 0x10, 0x20, - 0xe9, 0x82, 0xd1, 0x42, 0xd3, 0x40, 0xe2, 0xea, - 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, - 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x48, 0xcc, 0xb1, - 0x1c, 0x9f, 0x06, 0xd0, 0xe9, 0x98, 0x01, 0x69, - 0xd0, 0x20, 0x3c, 0x80, 0xc0, 0x1c, 0x10, 0x08, - 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0x01, 0xb5, - 0xd4, 0x00, 0x2c, 0x80, 0xde, 0x84, 0xde, 0xc4, - 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, - 0x30, 0x5a, 0xe5, 0xc8, 0x00, 0x26, 0xd0, 0x00, - 0x70, 0x00, 0x10, 0x20, 0xe9, 0xbf, 0x00, 0xe0, - 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5c, 0x30, 0x5b, - 0xb0, 0x41, 0xed, 0xc8, 0x0f, 0x17, 0xf9, 0xb4, - 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xb8, - 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb4, 0xd6, 0x29, - 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, - 0xe5, 0xc8, 0x0f, 0x17, 0xf9, 0xc3, 0x02, 0xf2, - 0xd6, 0x2b, 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, - 0xe2, 0x95, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xb5, - 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8e, - 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8b, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x64, 0x30, 0x5b, 0xfd, 0xc6, - 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x88, - 0xbc, 0x10, 0xd0, 0x30, 0xc0, 0x40, 0x30, 0x70, - 0xed, 0x88, 0xd1, 0x42, 0xd3, 0x40, 0xe2, 0xea, - 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, - 0x17, 0x20, 0xf9, 0xb4, 0x00, 0xa8, 0xd0, 0x00, - 0xcc, 0x5b, 0x1c, 0x5f, 0x1c, 0x43, 0x20, 0x31, - 0x7c, 0x40, 0xb0, 0x3c, 0x7e, 0x80, 0xcc, 0xb1, - 0xce, 0xfa, 0x1c, 0x9f, 0x1e, 0xdf, 0x01, 0x69, - 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xa6, 0x3c, 0x80, - 0x0e, 0xd9, 0xe9, 0xa9, 0x3e, 0xc0, 0x3e, 0xf2, - 0x3e, 0xb1, 0xd0, 0x01, 0x40, 0x1b, 0x10, 0x05, - 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0xd0, 0x30, - 0x70, 0x00, 0x2c, 0x80, 0xe3, 0x1e, 0xf2, 0xd3, - 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xda, - 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, - 0xe9, 0xd1, 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, - 0x10, 0x5c, 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xda, - 0x0f, 0x17, 0xf9, 0xc6, 0x0f, 0x49, 0xf2, 0xd3, - 0x0f, 0x19, 0xf9, 0xca, 0xdf, 0x00, 0x00, 0x06, - 0x03, 0xb4, 0xd6, 0x29, 0xe0, 0x46, 0xc0, 0x5b, - 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xda, 0x0f, 0x17, - 0xf9, 0xd5, 0x02, 0xf7, 0xdc, 0x26, 0xe0, 0x46, - 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xa2, - 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8a, - 0xe1, 0x65, 0x30, 0x5a, 0xe5, 0x87, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x52, 0x30, 0x5b, 0xfd, 0xb3, - 0xc0, 0x39, 0x30, 0x31, 0x10, 0x11, 0x10, 0x20, - 0xe9, 0x82, 0xd1, 0x42, 0xd3, 0x41, 0xe2, 0xea, - 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, - 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x49, 0xcc, 0xb1, - 0x1c, 0x9f, 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, - 0x05, 0x50, 0xf9, 0x99, 0xb0, 0x3c, 0x2c, 0x40, - 0x2c, 0x80, 0x01, 0xb5, 0xd4, 0x00, 0x2c, 0x80, - 0x02, 0xe4, 0xde, 0x80, 0xde, 0xc1, 0xe3, 0x1e, - 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, - 0xe5, 0xc7, 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, - 0x10, 0x20, 0xe9, 0xbe, 0x00, 0xe0, 0xd0, 0x44, - 0x70, 0x41, 0x10, 0x5b, 0x30, 0x5b, 0xb0, 0x41, - 0xed, 0xc7, 0x0f, 0x17, 0xf9, 0xb3, 0x0f, 0x49, - 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xb7, 0xdf, 0x00, - 0x00, 0x06, 0x03, 0xb4, 0xd6, 0x29, 0xe0, 0x46, - 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xc7, - 0x0f, 0x17, 0xf9, 0xc2, 0x03, 0x30, 0xdc, 0x27, - 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, - 0x50, 0x00, 0x50, 0x00, 0x03, 0x76, 0xd0, 0x73, - 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xac, - 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8e, - 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8b, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x52, 0x30, 0x5b, 0xfd, 0xbd, - 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x88, - 0xbc, 0x10, 0xd0, 0x20, 0xc0, 0x40, 0x30, 0x70, - 0xed, 0x88, 0xd1, 0x42, 0xd3, 0x41, 0xe2, 0xea, - 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, - 0x17, 0x20, 0xf9, 0xab, 0x00, 0x2a, 0xd0, 0x00, - 0x20, 0x1b, 0x20, 0x1b, 0x05, 0x50, 0xf9, 0x9b, - 0xb0, 0x3f, 0x10, 0x02, 0x7c, 0x40, 0xcc, 0xb1, - 0x1c, 0x9f, 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, - 0xe9, 0xa4, 0x3c, 0x80, 0xde, 0xa0, 0x2c, 0x5f, - 0x2c, 0x9f, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, - 0xde, 0xc1, 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, - 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xd1, 0x00, 0x26, - 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, 0xe9, 0xc8, - 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5b, - 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xd1, 0x0f, 0x17, - 0xf9, 0xbd, 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, - 0xf9, 0xc1, 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb4, - 0xd6, 0x29, 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, - 0xb0, 0x7e, 0xe5, 0xd1, 0x0f, 0x17, 0xf9, 0xcc, - 0x03, 0x35, 0xda, 0x20, 0xe0, 0x46, 0xd3, 0x08, - 0xd3, 0xc0, 0xe2, 0x95, 0xd0, 0x61, 0x23, 0x81, - 0x0c, 0x49, 0xd0, 0x61, 0x00, 0x8d, 0x10, 0xa0, - 0xea, 0x3b, 0x30, 0x42, 0xe6, 0x30, 0x23, 0x82, - 0x0f, 0xc5, 0x0c, 0x09, 0x05, 0x0d, 0x15, 0x20, - 0xfe, 0x45, 0xd0, 0x65, 0x15, 0x63, 0xea, 0x43, - 0xd0, 0x53, 0x30, 0x54, 0xee, 0x4a, 0x0f, 0x17, - 0xfa, 0x45, 0x03, 0xb4, 0xd6, 0x29, 0xe0, 0x46, - 0x80, 0x07, 0x09, 0x49, 0xd4, 0x00, 0xd4, 0x40, - 0xd4, 0x80, 0xd4, 0xc0, 0x00, 0x4d, 0xa0, 0x6c, - 0xd0, 0xa1, 0x00, 0x88, 0xd0, 0xa9, 0x00, 0x4d, - 0x00, 0x50, 0xfa, 0x53, 0xf2, 0x32, 0xd3, 0x80, - 0xe1, 0x76, 0xd1, 0xc2, 0x41, 0xcf, 0x11, 0xdf, - 0xd0, 0x41, 0x01, 0xc1, 0x00, 0xef, 0xd0, 0xbe, - 0x03, 0x10, 0xf9, 0x77, 0x80, 0x07, 0x21, 0x96, - 0x11, 0xa2, 0xe9, 0x78, 0x03, 0x1d, 0xea, 0x73, - 0xc0, 0xd7, 0xc2, 0x90, 0xf2, 0xa4, 0xc4, 0x0a, - 0x03, 0xd0, 0xea, 0x72, 0xc2, 0x91, 0xf2, 0xa4, - 0xc4, 0x4a, 0x03, 0x1e, 0xea, 0x8d, 0xc0, 0xd8, - 0xc2, 0x92, 0xf2, 0xa4, 0xc4, 0x8a, 0x03, 0xd0, - 0xea, 0x7d, 0xc2, 0x93, 0xf2, 0xa4, 0xc4, 0xca, - 0xe2, 0x8d, 0xd3, 0xc0, 0xc0, 0xd7, 0xc2, 0x90, - 0xf2, 0xa4, 0xc4, 0x0a, 0x03, 0xd0, 0xea, 0x88, - 0xc2, 0x91, 0xf2, 0xa4, 0xc4, 0x4a, 0x08, 0x49, - 0x00, 0x4d, 0x10, 0x61, 0xf8, 0x11, 0x03, 0x1f, - 0xea, 0x93, 0x0d, 0xc9, 0x00, 0x4d, 0xd0, 0x1a, - 0xe2, 0x98, 0x03, 0x10, 0xfa, 0x97, 0xd0, 0x1d, - 0xe2, 0x98, 0xd0, 0x18, 0x0f, 0x16, 0xfa, 0x98, - 0xd0, 0x4c, 0x40, 0x4c, 0x10, 0x6c, 0xea, 0xa2, - 0x03, 0xde, 0xfa, 0xa2, 0x0f, 0x12, 0xfa, 0xa0, - 0x00, 0x08, 0xe2, 0xd9, 0xd2, 0x00, 0x13, 0xe1, - 0xee, 0xa9, 0x08, 0x49, 0x02, 0x0d, 0x00, 0xc8, - 0xc2, 0xca, 0x12, 0x94, 0xd0, 0x1f, 0x30, 0x07, - 0x12, 0xc0, 0xc2, 0x43, 0x12, 0x5a, 0x00, 0x0d, - 0x03, 0xde, 0xea, 0xb6, 0x0e, 0xc9, 0x04, 0x8d, - 0x02, 0x48, 0x22, 0x80, 0x12, 0x88, 0xd0, 0x0b, - 0x30, 0x03, 0x12, 0x80, 0xd0, 0x19, 0x20, 0x03, - 0x12, 0x80, 0x00, 0x0d, 0x22, 0xc0, 0x12, 0xc8, - 0xd0, 0x0b, 0x30, 0x09, 0x12, 0xc0, 0x12, 0xd8, - 0xd0, 0x16, 0x20, 0x09, 0x20, 0x07, 0x12, 0xc0, - 0x42, 0xc2, 0x22, 0x8b, 0x22, 0x88, 0x03, 0xde, - 0xea, 0xd2, 0x0e, 0xc9, 0xc4, 0x4a, 0x04, 0xcd, - 0x0f, 0xc5, 0x01, 0x46, 0x90, 0x4d, 0x00, 0xc6, - 0x10, 0x60, 0xe6, 0xd3, 0x0f, 0xc5, 0x01, 0xb5, - 0xd4, 0x00, 0xca, 0x9d, 0xcb, 0x9e, 0xca, 0xea, - 0xcb, 0xee, 0x2a, 0xc0, 0x2b, 0xc0, 0xca, 0x10, - 0xca, 0x51, 0xcb, 0x12, 0xcb, 0x53, 0xd1, 0x40, - 0xd3, 0x41, 0xb7, 0x3f, 0xc0, 0x5c, 0xe1, 0x7b, - 0xd0, 0xc0, 0xc1, 0x28, 0xc2, 0x2a, 0xc2, 0xab, - 0xf1, 0x7a, 0x0f, 0x17, 0xfa, 0xef, 0xcc, 0xe8, - 0xcd, 0x29, 0xcd, 0x6c, 0xcd, 0xad, 0xc8, 0x08, - 0xc8, 0x49, 0xca, 0x0a, 0xca, 0x4b, 0xf3, 0x31, - 0xd0, 0xc1, 0xc1, 0x34, 0xc2, 0x2a, 0xc2, 0xab, - 0xf1, 0x7a, 0x00, 0x28, 0xd9, 0xc0, 0xc8, 0x88, - 0xc8, 0xc9, 0xa9, 0xf8, 0xca, 0x8a, 0xca, 0xcb, - 0x11, 0x62, 0xe9, 0x79, 0xd0, 0xc0, 0xc1, 0x35, - 0xc2, 0x2e, 0xc2, 0xaf, 0xf1, 0x7a, 0xc9, 0x08, - 0xc9, 0x49, 0xa9, 0xf8, 0xcb, 0x0a, 0xcb, 0x4b, - 0xd0, 0xc1, 0xc1, 0x36, 0xc2, 0x2e, 0xc2, 0xaf, - 0xf1, 0x7a, 0xc0, 0x27, 0xc9, 0x88, 0xc9, 0xc9, - 0xa0, 0x38, 0xcb, 0x8a, 0xcb, 0xcb, 0xe1, 0x79, - 0x5f, 0x0d, 0x07, 0x7d, 0xde, 0x07, 0x11, 0x5e, - 0x30, 0x05, 0xcd, 0xc0, 0x00, 0x28, 0xd0, 0x00, - 0xa0, 0x38, 0x11, 0x61, 0xf9, 0x75, 0x00, 0xe2, - 0xd0, 0x00, 0x0f, 0x1d, 0xeb, 0x29, 0x00, 0x2d, - 0xdf, 0x4b, 0xf3, 0x3f, 0xe1, 0x75, 0x04, 0xeb, - 0xd0, 0x00, 0x11, 0x62, 0xeb, 0x36, 0xb0, 0x20, - 0x0f, 0x19, 0xfb, 0x36, 0xac, 0xe0, 0x01, 0xa4, - 0xde, 0x00, 0x5e, 0x0d, 0x00, 0x2d, 0xdf, 0x7a, - 0xdd, 0xc0, 0xd8, 0x80, 0xd9, 0x00, 0xd9, 0x80, - 0x5f, 0x00, 0x01, 0x46, 0x00, 0x28, 0xd0, 0x01, - 0x00, 0x06, 0xa0, 0x37, 0x80, 0x3f, 0x00, 0xc6, - 0x0f, 0xc5, 0xad, 0xda, 0xc6, 0xb1, 0xd0, 0x01, - 0x01, 0xa3, 0xde, 0x1d, 0x40, 0x30, 0x3e, 0x00, - 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, 0xc8, 0x28, - 0xc8, 0x69, 0xc8, 0xaa, 0xc8, 0xeb, 0x0c, 0x1e, - 0xfb, 0x68, 0x26, 0xba, 0x07, 0x7d, 0xdc, 0x00, - 0x1d, 0xcf, 0x1d, 0xd1, 0x5d, 0xc0, 0x00, 0x2d, - 0xdf, 0x64, 0x0f, 0x87, 0xad, 0xda, 0x80, 0x3f, - 0x0e, 0x0a, 0x66, 0xda, 0xc9, 0x2c, 0xc9, 0x6d, - 0xc9, 0xae, 0xc9, 0xef, 0x0f, 0x2f, 0xd0, 0x37, - 0x4f, 0x00, 0x0f, 0x1a, 0xeb, 0xbe, 0x01, 0xa4, - 0xde, 0x20, 0xd0, 0x01, 0x40, 0x3c, 0x2e, 0x00, - 0x00, 0x2d, 0xdf, 0x7a, 0xac, 0xe0, 0x0f, 0x87, - 0x0e, 0x0a, 0x76, 0xe0, 0xbf, 0x79, 0xbe, 0x3c, - 0x0f, 0x1b, 0xeb, 0x9e, 0x0f, 0x87, 0x0e, 0x0a, - 0x76, 0xe1, 0xbf, 0x79, 0xbe, 0x34, 0x18, 0xa0, - 0xeb, 0xb9, 0x0f, 0x87, 0xad, 0x20, 0x80, 0x3f, - 0x0e, 0x0a, 0x76, 0xe2, 0xbf, 0x79, 0xbe, 0x3c, - 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe3, 0x0f, 0x1b, - 0xeb, 0xb3, 0xbf, 0x77, 0xbe, 0x0c, 0x19, 0x20, - 0xeb, 0xb9, 0x0f, 0x87, 0xad, 0x60, 0x80, 0x3f, - 0x0e, 0x0a, 0x76, 0xe4, 0xbe, 0x3c, 0xbf, 0x75, - 0x0f, 0x15, 0xf8, 0x1c, 0x1f, 0x0a, 0x1f, 0x16, - 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe5, 0xbf, 0x79, - 0xbe, 0x34, 0x19, 0xa0, 0xeb, 0xb9, 0x0f, 0x87, - 0xad, 0xa0, 0x80, 0x3f, 0x0e, 0x0a, 0x76, 0xe6, - 0xbe, 0x3c, 0xbf, 0x79, 0x0f, 0x87, 0x0e, 0x0a, - 0x76, 0xe7, 0x0f, 0x15, 0xeb, 0xbe, 0x00, 0x2f, - 0xdf, 0x72, 0x1d, 0xe0, 0xf8, 0x1c, 0x00, 0x28, - 0xd0, 0x01, 0xa0, 0x38, 0x80, 0x3f, 0x0f, 0x87, - 0xd0, 0x01, 0x4d, 0xc0, 0x1f, 0x0f, 0x1f, 0x11, - 0x00, 0x2f, 0xdf, 0x76, 0xc6, 0xb2, 0x03, 0x7d, - 0xde, 0x0e, 0x01, 0xa3, 0xde, 0x2d, 0x5d, 0xc0, - 0x0f, 0x87, 0x1e, 0xe1, 0xeb, 0xdb, 0xad, 0xda, - 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, 0x0c, 0x1e, - 0xfb, 0xe4, 0x26, 0xbb, 0x03, 0xff, 0xdd, 0xff, - 0x4d, 0xc0, 0x00, 0xa3, 0xde, 0x2d, 0xbf, 0x56, - 0x0f, 0x87, 0x07, 0x7d, 0xde, 0x0e, 0x5d, 0xc0, - 0x00, 0xa3, 0xde, 0x1d, 0xad, 0xda, 0x80, 0x3f, - 0x0e, 0x0a, 0x66, 0xda, 0xdf, 0x5c, 0xd0, 0x0e, - 0x4f, 0x00, 0x0f, 0x87, 0xd0, 0x06, 0x40, 0x3c, - 0xeb, 0xf0, 0xbf, 0x3e, 0xb0, 0x04, 0xe7, 0xf2, - 0xeb, 0xf6, 0xbf, 0x0c, 0xbf, 0x3a, 0x0f, 0x87, - 0x0f, 0x1d, 0xfb, 0x4b, 0xbf, 0x38, 0x0f, 0x87, - 0x0f, 0x1c, 0xfb, 0xcb, 0xbf, 0x30, 0x0f, 0x87, - 0x50, 0x00, 0x50, 0x00, 0x0f, 0x17, 0xf9, 0x70, - 0x90, 0x4d, 0x10, 0x60, 0xe5, 0x72, 0x0f, 0x49, - 0x90, 0x4d, 0x10, 0x60, 0xe5, 0x76, 0x0f, 0x19, - 0xf9, 0x79, 0x01, 0x46, 0xd0, 0x11, 0xa0, 0x38, - 0x80, 0x3f, 0x00, 0xc6, 0xdf, 0x00, 0x00, 0x06, - 0x08, 0x20, 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x0a, - 0xa0, 0x1b, 0x0c, 0x20, 0xd0, 0x00, 0x10, 0x08, - 0xa0, 0x27, 0x90, 0x4d, 0x0f, 0xff, 0xd8, 0x1f, - 0x40, 0x40, 0xa0, 0x4d, 0x80, 0x0a, 0xd0, 0x00, - 0x06, 0x50, 0xf9, 0x95, 0xd0, 0x01, 0xa0, 0x09, - 0x80, 0x1b, 0xa0, 0x27, 0x01, 0x20, 0xd0, 0x67, - 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, - 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, - 0x01, 0x20, 0xd0, 0x40, 0xa0, 0x69, 0x80, 0x2b, - 0x80, 0x07, 0x08, 0x20, 0xdf, 0x00, 0x02, 0x30, - 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, 0x01, 0xb0, - 0xd0, 0x10, 0xa0, 0x37, 0x80, 0x3f, 0x02, 0x30, - 0xd0, 0x01, 0xa0, 0x38, 0xd0, 0x10, 0xa0, 0x38, - 0x15, 0x63, 0xe9, 0xba, 0x05, 0x5e, 0xf9, 0xfa, - 0xc0, 0xdf, 0x00, 0xe0, 0xd1, 0x80, 0x70, 0x06, - 0x10, 0x1c, 0xc1, 0x40, 0x11, 0x48, 0xd3, 0x10, - 0x00, 0x21, 0xd0, 0x80, 0xb0, 0x16, 0xe9, 0xca, - 0xd3, 0x20, 0x10, 0x81, 0xb0, 0x16, 0xf9, 0xfa, - 0x30, 0xc2, 0xd2, 0x64, 0xd0, 0x92, 0x00, 0xee, - 0xd0, 0x54, 0x70, 0x41, 0x30, 0x43, 0xed, 0xd7, - 0xd2, 0x6c, 0x72, 0x49, 0xc0, 0x89, 0xb0, 0xbf, - 0x10, 0x9f, 0x22, 0x42, 0x04, 0x31, 0xd0, 0x10, - 0xc0, 0x42, 0x30, 0x49, 0xe5, 0xde, 0x10, 0x03, - 0xc1, 0x0c, 0xc1, 0x83, 0xb1, 0xbe, 0x01, 0x46, - 0x00, 0x06, 0xa0, 0x3d, 0xa0, 0x3c, 0x60, 0x06, - 0x00, 0xc6, 0xb1, 0xbc, 0xb1, 0x01, 0xed, 0xe1, - 0xc1, 0x0c, 0x21, 0x85, 0x01, 0x46, 0x00, 0x06, - 0xa0, 0x3d, 0xa0, 0x3c, 0x60, 0x06, 0x00, 0xc6, - 0xb1, 0xbc, 0xb1, 0x01, 0xed, 0xec, 0x02, 0xe4, - 0xd0, 0x00, 0x20, 0xc0, 0xb2, 0x41, 0xed, 0xd8, - 0x15, 0xa3, 0xfa, 0x00, 0xbc, 0x10, 0x0c, 0x1e, - 0xfa, 0x00, 0xbc, 0x10, 0xd0, 0x04, 0x70, 0x00, - 0x10, 0x20, 0xfa, 0x00, 0x00, 0x27, 0xd0, 0x10, - 0xd0, 0x40, 0x60, 0x40, 0x00, 0x26, 0xd0, 0x14, - 0x60, 0x40, 0xb0, 0x28, 0x70, 0x40, 0xb0, 0x7f, - 0x60, 0x40, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, - 0x50, 0x00, 0x50, 0x00, 0x00, 0x28, 0xd1, 0xb0, - 0x70, 0x06, 0xd0, 0x81, 0x60, 0x86, 0x10, 0x20, - 0xe9, 0xab, 0xb0, 0x3f, 0x60, 0x06, 0x00, 0xec, - 0xd1, 0x84, 0x70, 0x46, 0xb1, 0x84, 0x70, 0x86, - 0x30, 0x42, 0xe9, 0xab, 0x70, 0x42, 0xd0, 0x35, - 0x30, 0x40, 0xf9, 0xab, 0x00, 0x63, 0xd0, 0x3f, - 0xb0, 0xbc, 0x40, 0x80, 0x70, 0xc2, 0x10, 0xe3, - 0xe5, 0xab, 0xb0, 0xbc, 0x40, 0x80, 0x60, 0x86, - 0x00, 0x28, 0xd0, 0x24, 0x70, 0x40, 0x00, 0x22, - 0xd0, 0x80, 0x50, 0x42, 0x60, 0x40, 0x00, 0x64, - 0xd0, 0x60, 0xd0, 0x90, 0x60, 0x81, 0x00, 0xed, - 0xd1, 0x88, 0x70, 0x46, 0x10, 0xe4, 0xe9, 0xa8, - 0x00, 0x21, 0xd0, 0xe8, 0xd0, 0x00, 0x60, 0x03, - 0xd0, 0x81, 0x40, 0x42, 0x60, 0x46, 0x02, 0x3c, - 0xdc, 0x89, 0xe0, 0x46, 0xd0, 0x82, 0x50, 0x42, - 0x60, 0x46, 0x00, 0x23, 0xd5, 0x3e, 0x01, 0x7a, - 0xde, 0x1a, 0xe0, 0x46, 0x01, 0x46, 0xdf, 0x5c, - 0x08, 0x20, 0xd1, 0x00, 0xcf, 0x04, 0x11, 0x08, - 0xa1, 0x0a, 0xa1, 0x1b, 0x11, 0x1f, 0xa1, 0x27, - 0xd2, 0x80, 0xb2, 0x81, 0x90, 0x4d, 0xc0, 0x01, - 0x10, 0x14, 0x00, 0x16, 0xe9, 0x8d, 0x80, 0x33, - 0x80, 0x3f, 0x92, 0x8b, 0x00, 0x23, 0xd0, 0x3f, - 0x42, 0x80, 0xe9, 0x8d, 0x0f, 0xff, 0xdf, 0xff, - 0x40, 0x01, 0xa0, 0x0d, 0xe1, 0x94, 0xa1, 0x0a, - 0x00, 0xea, 0xd0, 0x00, 0xd0, 0x8e, 0x00, 0x06, - 0x0f, 0x0b, 0x70, 0x80, 0x80, 0x73, 0x80, 0x0a, - 0xd0, 0x00, 0x06, 0x50, 0xf9, 0x9a, 0xd0, 0x01, - 0xd0, 0x44, 0x40, 0x70, 0x20, 0x01, 0x15, 0x63, - 0xf9, 0xa1, 0x80, 0x1b, 0xe1, 0xa2, 0x80, 0x5b, - 0xa0, 0x27, 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, - 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, - 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, - 0xd0, 0x40, 0xa0, 0x69, 0x80, 0x2b, 0x80, 0x07, - 0x08, 0x20, 0xd0, 0x00, 0xcf, 0x00, 0x02, 0x30, - 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, 0x01, 0xb2, - 0xd2, 0x10, 0xa0, 0x37, 0x80, 0x3f, 0x02, 0x30, - 0xd0, 0x01, 0xa0, 0x38, 0x00, 0x30, 0xd0, 0x10, - 0xa0, 0x38, 0x80, 0x3f, 0x00, 0xc6, 0x00, 0x28, - 0xd1, 0x24, 0x70, 0x04, 0xd0, 0x41, 0x50, 0x01, - 0x60, 0x04, 0x00, 0x27, 0xd0, 0x18, 0x70, 0x40, - 0xb0, 0x7f, 0x60, 0x40, 0x00, 0x26, 0xd0, 0x20, - 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x08, 0x20, - 0xdf, 0x00, 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, - 0xd4, 0xc0, 0xd3, 0x81, 0x12, 0xa0, 0xed, 0xe3, - 0xd0, 0x08, 0x0a, 0x09, 0x00, 0x4d, 0xb0, 0x01, - 0xed, 0xdf, 0x03, 0xbf, 0xd4, 0x27, 0xe0, 0x46, - 0x50, 0x00, 0x50, 0x00, 0x02, 0x24, 0xd0, 0x00, - 0xa0, 0x37, 0x00, 0x27, 0xd3, 0xd0, 0x00, 0x26, - 0xd0, 0x04, 0x73, 0xcf, 0x13, 0xe1, 0xe9, 0x7b, - 0xb0, 0x3c, 0xf2, 0x00, 0x00, 0x26, 0xd0, 0x40, - 0xd0, 0x00, 0x60, 0x01, 0x00, 0x26, 0xd0, 0x14, - 0xf2, 0x00, 0x00, 0x26, 0xd0, 0x18, 0xf2, 0x00, - 0x00, 0xee, 0xd0, 0x1c, 0x71, 0x40, 0xd1, 0x24, - 0x15, 0x63, 0xe9, 0x8d, 0x11, 0x1f, 0xc7, 0x1a, - 0xb7, 0x01, 0xd3, 0x81, 0xc4, 0xd4, 0xf2, 0x04, - 0x00, 0x26, 0xd0, 0x18, 0x70, 0x40, 0xb0, 0x54, - 0xfd, 0x9b, 0x00, 0xed, 0xd0, 0x24, 0xd0, 0x44, - 0x60, 0x40, 0x13, 0xe1, 0xf9, 0xbc, 0x15, 0xa3, - 0xf9, 0xa1, 0x0c, 0x10, 0xe9, 0xb9, 0x11, 0x61, - 0xe5, 0xb3, 0xed, 0xb9, 0x15, 0xa3, 0xf9, 0xab, - 0x00, 0x26, 0xd0, 0x14, 0x70, 0x40, 0x10, 0x62, - 0xf5, 0xb3, 0x15, 0x22, 0xe5, 0xb3, 0xc0, 0x44, - 0x30, 0x54, 0xe5, 0xb3, 0x34, 0xd4, 0xf5, 0xb3, - 0xe1, 0xbf, 0x03, 0xb4, 0xd6, 0x29, 0x00, 0x26, - 0xd0, 0x40, 0x60, 0x01, 0xe1, 0xdb, 0x03, 0xb4, - 0xd6, 0x29, 0xe0, 0x46, 0x01, 0x7a, 0xde, 0x1a, - 0xe0, 0x46, 0x80, 0x07, 0x09, 0x49, 0xd4, 0x00, - 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, 0x00, 0x4d, - 0xa0, 0x6c, 0xd3, 0x80, 0xd0, 0xa1, 0x00, 0x88, - 0xd0, 0xa9, 0x00, 0x4d, 0x00, 0x50, 0xf9, 0xc9, - 0x0c, 0x49, 0xd0, 0x61, 0x00, 0x8d, 0x10, 0xa0, - 0xe9, 0x90, 0x30, 0x42, 0xf5, 0xd8, 0xd0, 0x61, - 0x23, 0x81, 0xe1, 0xce, 0x23, 0x82, 0x13, 0xa1, - 0xf9, 0x90, 0xd0, 0x42, 0x15, 0xa1, 0xf9, 0xdf, - 0xb0, 0x7f, 0x00, 0x26, 0xd0, 0x14, 0x70, 0x00, - 0x30, 0x01, 0xf5, 0xe8, 0x16, 0xe0, 0xe5, 0xe8, - 0xb6, 0xc1, 0xbc, 0x20, 0xc0, 0x44, 0x30, 0x5b, - 0xfd, 0xb9, 0xc0, 0x44, 0x30, 0x54, 0xe5, 0xb9, - 0x15, 0x63, 0xf9, 0xf8, 0x15, 0xa3, 0xf9, 0xf5, - 0x03, 0x3c, 0xd8, 0x1c, 0xe0, 0x46, 0x03, 0x39, - 0xda, 0x17, 0xe0, 0x46, 0x15, 0xa3, 0xf9, 0xfd, - 0x03, 0x72, 0xde, 0x19, 0xe0, 0x46, 0x03, 0x70, - 0xd0, 0x17, 0xe0, 0x46, 0x70, 0x40, 0xb0, 0x7f, - 0x60, 0x40, 0x0f, 0xc5, 0xdf, 0x00, 0x0c, 0x09, - 0x05, 0x0d, 0x08, 0x20, 0xdf, 0x00, 0x0f, 0xc5, - 0x50, 0x00, 0x50, 0x00, 0x00, 0xef, 0xd0, 0x14, - 0x70, 0x40, 0x10, 0x60, 0xe9, 0x45, 0xb0, 0x04, - 0x70, 0x40, 0xb0, 0x41, 0xed, 0x44, 0x00, 0xed, - 0xd0, 0x24, 0xd0, 0x44, 0x60, 0x40, 0x00, 0x64, - 0xd0, 0x20, 0x70, 0x00, 0x10, 0x30, 0xe9, 0x45, - 0x00, 0x21, 0xd0, 0x28, 0x60, 0x40, 0x00, 0x64, - 0xd2, 0xc0, 0x70, 0x0b, 0x00, 0x11, 0xe9, 0x6a, - 0x08, 0x20, 0xd0, 0x4f, 0x30, 0x40, 0xe9, 0x55, - 0xb0, 0x4f, 0xf9, 0x6a, 0x03, 0xef, 0xdf, 0xbf, - 0xaf, 0xb8, 0xdf, 0x80, 0x0f, 0x87, 0xd0, 0x18, - 0x70, 0x00, 0x10, 0x20, 0xed, 0x6c, 0xdf, 0x84, - 0xd0, 0x40, 0x60, 0x7e, 0x00, 0x27, 0xd0, 0x54, - 0x70, 0x41, 0x10, 0x60, 0x01, 0xa0, 0xd0, 0x40, - 0xa0, 0x78, 0x80, 0x34, 0x80, 0x3f, 0x01, 0x3c, - 0xd2, 0x39, 0x00, 0x21, 0xdf, 0x86, 0x0f, 0x87, - 0xd0, 0x40, 0x60, 0x4b, 0x03, 0xe6, 0xd0, 0x08, - 0xe0, 0x36, 0x50, 0x00, 0x00, 0x28, 0xd0, 0x24, - 0x72, 0xc0, 0xd0, 0x40, 0x60, 0x40, 0xd0, 0x0c, - 0x52, 0xc0, 0xc0, 0x1c, 0x30, 0x1d, 0xf5, 0x3c, - 0x20, 0x1f, 0x30, 0x1e, 0x90, 0x6d, 0x20, 0x01, - 0x00, 0x22, 0xd0, 0x58, 0x60, 0x01, 0x00, 0xe3, - 0xd0, 0x48, 0x70, 0x41, 0x30, 0x40, 0xf5, 0x47, - 0xb2, 0xc8, 0x00, 0xe3, 0xd0, 0x4c, 0x70, 0x41, - 0x30, 0x40, 0xfd, 0x4d, 0xb2, 0xc4, 0x00, 0x28, - 0xd0, 0x20, 0x70, 0x00, 0x42, 0xc0, 0xa2, 0xc5, - 0x12, 0xe0, 0xe9, 0x55, 0x80, 0x40, 0x80, 0x34, - 0x80, 0x3f, 0xcf, 0x95, 0x82, 0x34, 0x80, 0x3f, - 0x03, 0xe8, 0xd0, 0x00, 0x1f, 0xa3, 0xe9, 0x60, - 0x03, 0xea, 0xd0, 0x00, 0x00, 0x27, 0xd0, 0x4c, - 0x7f, 0x81, 0x00, 0x27, 0xd0, 0x54, 0x70, 0x41, - 0x10, 0x60, 0x03, 0xa0, 0xd0, 0x40, 0xa0, 0x78, - 0xe0, 0x3c, 0x50, 0x00, 0xc0, 0x84, 0x10, 0x8c, - 0x10, 0x92, 0xd0, 0x41, 0x30, 0x4d, 0x40, 0x43, - 0x10, 0x43, 0x20, 0x81, 0xd1, 0x8f, 0x41, 0x82, - 0x10, 0x9c, 0x20, 0x9b, 0xc1, 0xc2, 0x10, 0x82, - 0x20, 0x87, 0xc0, 0x42, 0x10, 0x43, 0x20, 0x81, - 0x10, 0x88, 0x22, 0x02, 0x10, 0x97, 0x01, 0xd0, - 0xe9, 0x48, 0xb0, 0x96, 0x10, 0x88, 0x22, 0x82, - 0xc0, 0x5c, 0x10, 0x48, 0xc0, 0x84, 0x10, 0x91, - 0x10, 0x86, 0x20, 0x42, 0x41, 0x0d, 0x11, 0x02, - 0x20, 0x44, 0x22, 0x01, 0x22, 0x81, 0x02, 0xe4, - 0xd2, 0x40, 0xc2, 0xca, 0xb2, 0xe0, 0x01, 0xd0, - 0xe9, 0x5e, 0xc2, 0xca, 0x22, 0xc9, 0xb2, 0xa0, - 0x22, 0x48, 0xd0, 0x78, 0x03, 0x50, 0xf9, 0x69, - 0xd0, 0x7c, 0x01, 0x9d, 0xf9, 0x69, 0xc2, 0x48, - 0xb2, 0x60, 0xc2, 0xca, 0xb2, 0xf0, 0x11, 0x82, - 0x41, 0x81, 0x22, 0x06, 0x11, 0x9f, 0x41, 0x81, - 0x22, 0x86, 0x0f, 0xc5, 0xc0, 0x84, 0x10, 0x8c, - 0x10, 0x92, 0xd1, 0x8f, 0x41, 0x82, 0x10, 0x9c, - 0xc1, 0xdb, 0x11, 0xc1, 0x21, 0xc3, 0x20, 0x87, - 0xc1, 0xc2, 0x10, 0x82, 0x20, 0x87, 0xc0, 0x42, - 0x10, 0x43, 0x20, 0x81, 0x10, 0x88, 0x22, 0x02, - 0x10, 0x97, 0x01, 0xd0, 0xe9, 0x46, 0xb0, 0x96, - 0x10, 0x88, 0x22, 0x82, 0xc0, 0x5c, 0x10, 0x48, - 0xc0, 0x84, 0x10, 0x91, 0x10, 0x86, 0x20, 0x42, - 0xd0, 0x81, 0x41, 0x02, 0x11, 0x02, 0x20, 0x44, - 0x22, 0x01, 0x22, 0x81, 0x02, 0xe4, 0xd2, 0x40, - 0xc2, 0xca, 0xb2, 0xe0, 0x01, 0xd0, 0xe9, 0x5d, - 0xc2, 0xca, 0x22, 0xc9, 0xb2, 0xa0, 0x22, 0x48, - 0x11, 0x9f, 0x11, 0x83, 0x22, 0x06, 0x11, 0x9c, - 0x11, 0x83, 0x22, 0x86, 0x0f, 0xc5, 0xd0, 0x41, - 0x40, 0x44, 0x20, 0x55, 0x10, 0x62, 0xf9, 0x6f, - 0x01, 0xb5, 0xd4, 0x00, 0xc2, 0x9f, 0xc2, 0x1f, - 0x22, 0x80, 0xe1, 0x30, 0x0f, 0x11, 0xf9, 0x51, - 0x90, 0x38, 0x80, 0x3f, 0x00, 0x1b, 0xf9, 0x51, - 0x00, 0x27, 0xd0, 0x04, 0x70, 0x40, 0x30, 0x71, - 0xf9, 0x51, 0xb0, 0x3c, 0x70, 0x40, 0x30, 0x5d, - 0xf9, 0x51, 0xb0, 0x08, 0x70, 0x40, 0xb0, 0x7f, - 0x60, 0x40, 0x10, 0x63, 0xe5, 0x5d, 0x02, 0x20, - 0xd0, 0x01, 0xa0, 0x37, 0x00, 0x26, 0xd0, 0x24, - 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0xb0, 0x08, - 0x70, 0x40, 0xb0, 0x41, 0x60, 0x40, 0x00, 0x26, - 0xd0, 0x30, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, - 0xb0, 0x30, 0xd0, 0x40, 0x60, 0x40, 0xb0, 0x3c, - 0x6c, 0x40, 0xb0, 0x3c, 0x67, 0x40, 0x00, 0x33, - 0xdf, 0xb0, 0xe0, 0x36, 0x00, 0x26, 0xd0, 0x1c, - 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0xb0, 0x3c, - 0x70, 0x40, 0xb0, 0x41, 0x60, 0x40, 0x08, 0x20, - 0xdf, 0x00, 0x80, 0x35, 0xc0, 0x3c, 0x10, 0x08, - 0xa0, 0x0a, 0xa0, 0x27, 0xa0, 0x1b, 0xdf, 0x5c, - 0x01, 0xa0, 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, - 0x80, 0x34, 0x80, 0x3f, 0x03, 0xbb, 0xd8, 0x1e, - 0xcf, 0x95, 0x82, 0x34, 0x80, 0x3f, 0x03, 0xe8, - 0xd0, 0x00, 0x1f, 0xa3, 0xe9, 0x55, 0x1f, 0xa0, - 0xe9, 0x55, 0x03, 0xea, 0xd0, 0x00, 0x00, 0x21, - 0xdf, 0x86, 0xe0, 0x3c, 0x89, 0x78, 0x89, 0x37, - 0x00, 0xee, 0xd0, 0x14, 0x76, 0x00, 0xd0, 0x30, - 0x76, 0x40, 0x26, 0x58, 0xd6, 0xd9, 0x00, 0xee, - 0xd0, 0x20, 0x75, 0x40, 0xd0, 0x1c, 0x71, 0x40, - 0xd0, 0x20, 0x71, 0x00, 0xd0, 0x24, 0x70, 0x80, - 0xc4, 0x02, 0xd0, 0x28, 0x70, 0xc0, 0x00, 0x21, - 0xd0, 0x10, 0x72, 0x00, 0x93, 0x90, 0xd4, 0x81, - 0x13, 0x96, 0x43, 0x92, 0x34, 0x8e, 0x00, 0x22, - 0xd1, 0xa4, 0x71, 0x86, 0xde, 0x40, 0x7e, 0x79, - 0xd0, 0x18, 0x70, 0x40, 0xb0, 0x41, 0xf5, 0x58, - 0xd3, 0x42, 0x50, 0x4d, 0x60, 0x40, 0x10, 0x60, - 0xe5, 0x62, 0xd0, 0x54, 0x70, 0x01, 0xb0, 0x3c, - 0x60, 0x01, 0x04, 0x2d, 0xd0, 0x30, 0xe0, 0x36, - 0x00, 0x22, 0xd0, 0x60, 0x71, 0xc1, 0xd0, 0x4f, - 0x41, 0xc1, 0x04, 0x20, 0xd0, 0x28, 0xe0, 0x36, - 0x50, 0x00, 0x50, 0x00, 0x04, 0x22, 0xd0, 0x18, - 0xd3, 0x44, 0x72, 0x8d, 0x12, 0xa0, 0xe8, 0x36, - 0xc0, 0x47, 0x10, 0x5d, 0x30, 0x4e, 0xf8, 0x36, - 0xb2, 0x3e, 0x60, 0x4d, 0x00, 0xed, 0xd0, 0x48, - 0x70, 0x01, 0xde, 0x45, 0x50, 0x39, 0x00, 0x1b, - 0xf9, 0x44, 0xb0, 0x01, 0x00, 0x1c, 0xf9, 0x47, - 0xb0, 0x04, 0x60, 0x01, 0xd0, 0x40, 0x62, 0x81, - 0xce, 0x4a, 0xd0, 0x43, 0x41, 0xc1, 0xd0, 0x58, - 0x61, 0xc1, 0x90, 0x43, 0x00, 0xe0, 0xd0, 0x28, - 0x70, 0x00, 0x10, 0x1f, 0x20, 0x40, 0xb1, 0xc1, - 0xf5, 0x54, 0x00, 0x21, 0xd0, 0x08, 0x60, 0x40, - 0x00, 0xe6, 0xd0, 0x40, 0x70, 0x41, 0xd2, 0x94, - 0x60, 0x4a, 0x04, 0x2c, 0xd0, 0x08, 0x01, 0x90, - 0xf8, 0x36, 0x04, 0x2d, 0xd0, 0x30, 0xe0, 0x36, - 0x50, 0x00, 0x50, 0x00, 0xc0, 0x47, 0x10, 0x5d, - 0x30, 0x4e, 0xf9, 0x41, 0x90, 0x43, 0x00, 0xe0, - 0xd0, 0x28, 0x70, 0x00, 0x20, 0x40, 0x00, 0x21, - 0xd0, 0x08, 0x60, 0x40, 0x00, 0x26, 0xd0, 0x74, - 0x70, 0x01, 0xb0, 0x3f, 0x60, 0x01, 0x00, 0xed, - 0xd0, 0x48, 0x70, 0x41, 0x00, 0x5e, 0xf9, 0x4b, - 0x00, 0x21, 0xd0, 0x00, 0x73, 0x80, 0xd4, 0x81, - 0x34, 0x8e, 0x00, 0x34, 0xd3, 0x70, 0xe0, 0x36, - 0x50, 0x00, 0x50, 0x00, 0xd1, 0x88, 0xd1, 0xc8, - 0x01, 0x1b, 0xe9, 0x39, 0x11, 0x9f, 0x11, 0xdf, - 0xd4, 0x80, 0xd3, 0x81, 0xe1, 0x43, 0x00, 0xed, - 0xd0, 0x08, 0x70, 0x00, 0x00, 0x10, 0xf9, 0x37, - 0x0c, 0x1f, 0xf9, 0x36, 0x13, 0xa1, 0xe9, 0x43, - 0xbe, 0x7c, 0x00, 0x69, 0xd2, 0x54, 0x12, 0x48, - 0xc0, 0x39, 0x30, 0x18, 0xe5, 0x4b, 0xd2, 0x70, - 0x72, 0x49, 0x22, 0x79, 0x00, 0x21, 0xd0, 0x00, - 0x63, 0x80, 0x04, 0x24, 0xd0, 0x38, 0x02, 0x10, - 0xe9, 0x56, 0xd0, 0x41, 0x51, 0x41, 0xe0, 0x36, - 0x15, 0x61, 0xe8, 0x36, 0xd5, 0x80, 0xd3, 0x00, - 0xd3, 0x40, 0x04, 0x28, 0xd0, 0x18, 0xe0, 0x36, - 0x50, 0x00, 0x50, 0x00, 0x00, 0x21, 0xd0, 0x18, - 0x73, 0x00, 0xb0, 0x04, 0x73, 0x80, 0xd2, 0x80, - 0xb0, 0x38, 0x72, 0xc0, 0x31, 0x0d, 0xc0, 0x0e, - 0x10, 0x0b, 0x10, 0x20, 0xe9, 0x42, 0xf5, 0x3f, - 0x22, 0x8d, 0x10, 0x01, 0x13, 0x5f, 0xe1, 0x3b, - 0x33, 0x8b, 0x15, 0x61, 0xf9, 0x49, 0x00, 0x21, - 0xd0, 0x64, 0x70, 0x41, 0x33, 0x81, 0x03, 0xd0, - 0xe9, 0x4c, 0x20, 0x0b, 0x13, 0xdf, 0x12, 0xc1, - 0x13, 0xe0, 0xf9, 0x49, 0x10, 0x03, 0xc0, 0x50, - 0x10, 0x4b, 0x13, 0x0b, 0x23, 0x00, 0x13, 0x20, - 0xe9, 0x5c, 0xf5, 0x59, 0x22, 0x81, 0x13, 0x01, - 0x10, 0x5f, 0xe1, 0x55, 0x12, 0x99, 0x12, 0x87, - 0x21, 0x0a, 0x00, 0xa0, 0xd2, 0x80, 0xc3, 0x0a, - 0x03, 0x90, 0xe9, 0x66, 0x22, 0x82, 0x23, 0x03, - 0x10, 0x81, 0x10, 0xc1, 0x13, 0x9f, 0x13, 0xa0, - 0xed, 0x62, 0xc0, 0x8a, 0xc0, 0xcc, 0x04, 0x26, - 0xd0, 0x38, 0xe0, 0x36, 0x15, 0x61, 0xf9, 0x3d, - 0x07, 0x32, 0xd0, 0x00, 0x30, 0x03, 0xed, 0x3d, - 0xc0, 0x03, 0x10, 0x1d, 0x30, 0xc0, 0xc0, 0x02, - 0x10, 0x1d, 0x30, 0x80, 0xe1, 0x32, 0x10, 0x94, - 0x10, 0xd4, 0x00, 0x21, 0xd0, 0x20, 0x73, 0x00, - 0xc5, 0x8c, 0xd3, 0x4e, 0x01, 0x1b, 0xe9, 0x48, - 0x13, 0x1f, 0xd3, 0x4f, 0x43, 0x4c, 0x13, 0x1c, - 0xc0, 0x0c, 0x10, 0x03, 0x20, 0x0c, 0xc0, 0x40, - 0x10, 0x42, 0x20, 0x40, 0x10, 0x46, 0x20, 0x4d, - 0x10, 0x42, 0x2e, 0x41, 0x10, 0x5c, 0x10, 0x43, - 0x00, 0x59, 0xe9, 0x5b, 0x01, 0x69, 0xd0, 0x20, - 0x30, 0x40, 0x22, 0x41, 0x04, 0x28, 0xd0, 0x18, - 0xe0, 0x36, 0x50, 0x00, 0x2c, 0x14, 0xd0, 0x34, - 0x63, 0x00, 0xd0, 0x38, 0x72, 0xc0, 0xc0, 0x51, - 0x10, 0x5c, 0x30, 0x4b, 0x10, 0x44, 0xd4, 0xc0, - 0xd5, 0x00, 0xc0, 0x18, 0x30, 0x39, 0xed, 0x5f, - 0xd4, 0xd0, 0xc5, 0x01, 0xd0, 0x18, 0x70, 0x00, - 0x0c, 0x1f, 0xe9, 0x48, 0x10, 0x20, 0xfd, 0x48, - 0xd4, 0xc0, 0xd5, 0x00, 0x10, 0x22, 0xe5, 0x4e, - 0xd4, 0xc0, 0xbc, 0x30, 0xd5, 0x00, 0xb5, 0x10, - 0xb0, 0x3f, 0xf9, 0x52, 0x3c, 0x01, 0x3c, 0x01, - 0x02, 0x1f, 0xe9, 0x5f, 0x00, 0xa8, 0xd3, 0xc0, - 0xd3, 0xa4, 0x00, 0xaa, 0xd0, 0x10, 0x70, 0x4f, - 0xb3, 0xfc, 0x60, 0x40, 0xb0, 0x3c, 0xb3, 0x81, - 0xed, 0x59, 0x00, 0x21, 0xd0, 0x28, 0x70, 0x00, - 0x10, 0x20, 0xf9, 0x69, 0x02, 0x1f, 0xf9, 0x6a, - 0x90, 0x10, 0x00, 0x1e, 0xe9, 0x6a, 0xb1, 0x7c, - 0x04, 0x2a, 0xd0, 0x18, 0xe0, 0x36, 0x50, 0x00, - 0x50, 0x00, 0x50, 0x00, 0x01, 0x5e, 0xf9, 0x35, - 0x01, 0x50, 0xe9, 0x35, 0xb1, 0x78, 0xd2, 0x00, - 0x01, 0x5c, 0xf9, 0x5f, 0xc0, 0x18, 0x30, 0x39, - 0xed, 0x5f, 0x11, 0x9f, 0xce, 0x58, 0xc2, 0x59, - 0x00, 0xaa, 0xd2, 0x10, 0x14, 0x82, 0x22, 0x12, - 0xc0, 0x0c, 0x10, 0x1f, 0x10, 0x03, 0x22, 0x00, - 0x70, 0x48, 0x03, 0x10, 0xe9, 0x4c, 0xb2, 0x38, - 0xbe, 0x60, 0xb2, 0x60, 0x2e, 0x41, 0x10, 0x5f, - 0x00, 0x59, 0xe9, 0x53, 0x01, 0x69, 0xd0, 0x3c, - 0x30, 0x40, 0x22, 0x41, 0x13, 0x41, 0x2e, 0x4d, - 0x13, 0x5d, 0x13, 0x43, 0x22, 0x4d, 0x14, 0xe0, - 0xe9, 0x5f, 0x33, 0x0b, 0x13, 0x04, 0x2c, 0x0c, - 0x35, 0x0c, 0xc3, 0x46, 0xc3, 0x87, 0x04, 0x62, - 0xd0, 0x10, 0x15, 0x62, 0xfc, 0x36, 0x04, 0x60, - 0xd0, 0x10, 0xe0, 0x36, 0x00, 0x22, 0xd0, 0x74, - 0x74, 0x01, 0xb0, 0x7c, 0x74, 0x41, 0xb0, 0x7c, - 0x71, 0x41, 0xd1, 0x18, 0xc0, 0x10, 0x10, 0x1c, - 0xb0, 0x16, 0xf9, 0x45, 0x00, 0x24, 0xd0, 0x20, - 0x30, 0x11, 0xf9, 0x45, 0xb1, 0x70, 0x01, 0x50, - 0xf9, 0x45, 0xb1, 0x20, 0x14, 0x41, 0xc0, 0x90, - 0x00, 0x2b, 0xd0, 0xd0, 0x01, 0x50, 0xe9, 0x4b, - 0xc0, 0xd0, 0x00, 0x35, 0xdc, 0x00, 0x20, 0x11, - 0x10, 0x1f, 0xa0, 0x1c, 0x00, 0x21, 0xd0, 0x2c, - 0x70, 0x00, 0x10, 0x05, 0x51, 0x40, 0xd0, 0x1c, - 0x61, 0x40, 0xd0, 0x20, 0x61, 0x00, 0xd0, 0x24, - 0x60, 0x80, 0xd0, 0x28, 0x60, 0xc0, 0x04, 0x2d, - 0xd0, 0x30, 0x00, 0x22, 0xd0, 0x64, 0xb1, 0x81, - 0x61, 0x81, 0xe0, 0x36, 0x90, 0x50, 0xd0, 0x3c, - 0x10, 0x41, 0x60, 0x40, 0x15, 0x62, 0xfd, 0x3d, - 0xc0, 0x10, 0x10, 0x1e, 0x10, 0x07, 0x21, 0x00, - 0x10, 0x16, 0x34, 0x00, 0xc0, 0x90, 0xd3, 0x40, - 0x00, 0x24, 0xd3, 0xc0, 0x04, 0x23, 0xd0, 0x18, - 0x01, 0x9f, 0xe8, 0x36, 0xd0, 0x54, 0x70, 0x41, - 0x73, 0x41, 0x04, 0x2e, 0xd0, 0x28, 0xe0, 0x36, - 0x50, 0x00, 0x50, 0x00, 0x00, 0xef, 0xd3, 0x30, - 0x73, 0x0c, 0xd0, 0x0c, 0x70, 0x00, 0xc0, 0x40, - 0x13, 0x24, 0xf5, 0x42, 0x13, 0x22, 0xe9, 0x41, - 0xe5, 0x43, 0xd3, 0x00, 0x10, 0x22, 0xf9, 0x41, - 0xd0, 0x01, 0xd0, 0x43, 0xd3, 0x01, 0x21, 0x00, - 0xd3, 0x40, 0x03, 0x10, 0xf9, 0x47, 0xd3, 0x40, - 0xe1, 0x61, 0x00, 0x23, 0xd0, 0x00, 0x10, 0x61, - 0xe9, 0x50, 0xb0, 0x33, 0x10, 0x63, 0xe9, 0x50, - 0x00, 0x22, 0xd0, 0x1a, 0xc3, 0xc0, 0xd2, 0xc0, - 0x00, 0x10, 0xe9, 0x55, 0x22, 0xd0, 0x10, 0x1f, - 0x14, 0x01, 0x10, 0x20, 0xed, 0x52, 0x14, 0x18, - 0x12, 0xd8, 0xc0, 0x8b, 0x32, 0xd0, 0x12, 0xc3, - 0x33, 0x4b, 0x13, 0x47, 0x21, 0x0d, 0x04, 0x23, - 0xd0, 0x18, 0xe0, 0x36, 0x00, 0x24, 0xd0, 0x30, - 0xd0, 0x40, 0x60, 0x40, 0xd3, 0xc7, 0x43, 0xc4, - 0x31, 0x0f, 0xd5, 0xd4, 0x25, 0xcf, 0x15, 0xc4, - 0x10, 0xdf, 0xc2, 0xc6, 0xc3, 0x07, 0x11, 0x81, - 0xb1, 0x3b, 0x15, 0x64, 0xe9, 0x47, 0x10, 0xdf, - 0x12, 0xc1, 0x11, 0x81, 0x11, 0xc1, 0xb1, 0x3f, - 0xb5, 0xf8, 0x90, 0x10, 0x00, 0x16, 0xf9, 0x5e, - 0xb5, 0xfc, 0xd0, 0x20, 0x40, 0x39, 0x2e, 0x4b, - 0x22, 0x4c, 0x12, 0x20, 0xe9, 0x59, 0x20, 0x39, - 0x00, 0x1b, 0xe9, 0x59, 0x2c, 0x13, 0x35, 0x13, - 0x0e, 0x5a, 0xf9, 0x59, 0xb2, 0x38, 0x02, 0xe3, - 0xd0, 0x00, 0x0e, 0x5a, 0xe9, 0x5e, 0x2e, 0x40, - 0x01, 0xee, 0xd2, 0x80, 0x42, 0x84, 0xc0, 0x03, - 0x30, 0x02, 0xf5, 0x6b, 0x31, 0x0a, 0x12, 0x98, - 0x20, 0x03, 0xf5, 0x69, 0x12, 0x9f, 0x12, 0x87, - 0x51, 0x0a, 0x00, 0x34, 0xd4, 0xf0, 0xe0, 0x36, - 0x50, 0x00, 0x50, 0x00, 0xd3, 0xc7, 0x43, 0xc4, - 0x15, 0x61, 0xf9, 0x48, 0x10, 0xc1, 0xd5, 0xe0, - 0xd1, 0x80, 0xd1, 0xc0, 0x31, 0x0f, 0x13, 0xe1, - 0xe9, 0x3c, 0xd3, 0xc0, 0x00, 0x24, 0xd0, 0x30, - 0x63, 0xc0, 0x25, 0xcf, 0x15, 0xc2, 0xd0, 0x03, - 0x40, 0x16, 0x25, 0xc0, 0x15, 0xc2, 0x15, 0x81, - 0x35, 0x91, 0xe1, 0x5c, 0x00, 0x24, 0xd0, 0x30, - 0x63, 0xc0, 0x01, 0x50, 0xe9, 0x54, 0x15, 0xa0, - 0xf9, 0x55, 0x00, 0x24, 0xd0, 0x34, 0x70, 0x00, - 0x10, 0x20, 0xe9, 0x55, 0xd3, 0xc0, 0x31, 0x0f, - 0xd5, 0xfc, 0x25, 0xcf, 0x15, 0xc3, 0x14, 0xa0, - 0xe9, 0x5c, 0xb5, 0xfc, 0x00, 0x34, 0xd4, 0xf0, - 0xe0, 0x36, 0x50, 0x00, 0xc4, 0x91, 0x34, 0x96, - 0xed, 0x34, 0xd4, 0x80, 0x14, 0x84, 0xb3, 0xc1, - 0xe5, 0x41, 0xc0, 0x52, 0x10, 0x5e, 0x34, 0x81, - 0xb3, 0xc1, 0xe5, 0x41, 0xc0, 0x52, 0x10, 0x5c, - 0x24, 0x81, 0xb3, 0xc1, 0xe5, 0x37, 0x02, 0xe8, - 0xd0, 0x00, 0xb4, 0xb0, 0x14, 0x9b, 0x00, 0x24, - 0xd0, 0x60, 0x30, 0x52, 0xed, 0x4a, 0x24, 0x81, - 0x20, 0x12, 0xa0, 0x1c, 0x10, 0x8a, 0x50, 0x83, - 0xa0, 0x96, 0xa1, 0x50, 0xa1, 0x11, 0xc0, 0x52, - 0xd4, 0x84, 0x10, 0x6c, 0xed, 0x56, 0xd4, 0x81, - 0xd1, 0x00, 0xb1, 0x17, 0x00, 0x23, 0xd1, 0x40, - 0xc2, 0xb9, 0x22, 0x86, 0x12, 0x20, 0xf9, 0x66, - 0x02, 0xe3, 0xd0, 0x40, 0x02, 0x9a, 0xe9, 0x63, - 0x22, 0x81, 0x02, 0x5a, 0xe9, 0x66, 0x22, 0x41, - 0x75, 0xd7, 0xc3, 0xd7, 0xd0, 0xd7, 0x00, 0x21, - 0xd0, 0xb6, 0x8b, 0x38, 0x00, 0x33, 0xdd, 0x08, - 0xe0, 0x36, 0x50, 0x00, 0xd0, 0x7c, 0x60, 0x01, - 0xae, 0x52, 0xd0, 0x60, 0x40, 0x79, 0x00, 0x13, - 0xe8, 0xc9, 0xa2, 0x94, 0x22, 0x86, 0x13, 0xe0, - 0xe4, 0xd0, 0x13, 0xc1, 0x15, 0x62, 0xfc, 0xd1, - 0x13, 0xc1, 0xe0, 0xd1, 0xc3, 0xd7, 0x03, 0xd9, - 0xe8, 0xd4, 0x22, 0x8d, 0x15, 0x62, 0xfc, 0xda, - 0x03, 0xda, 0xe8, 0xda, 0x22, 0x8d, 0x22, 0x8d, - 0xce, 0x4a, 0x22, 0x86, 0x00, 0x14, 0xe8, 0xe0, - 0xa2, 0x53, 0x22, 0x47, 0x03, 0xd1, 0xe8, 0xe8, - 0x22, 0x4e, 0x15, 0x62, 0xfc, 0xe8, 0x03, 0xd2, - 0xe8, 0xe8, 0x22, 0x4e, 0x12, 0x20, 0xe9, 0x09, - 0x20, 0x79, 0x00, 0x5b, 0xe8, 0xf4, 0x15, 0x20, - 0xfc, 0xf1, 0x2c, 0x13, 0x35, 0x13, 0x0e, 0x5b, - 0xe8, 0xf4, 0xb2, 0x38, 0x02, 0x9a, 0xe8, 0xfb, - 0x70, 0x08, 0xd0, 0x7c, 0x42, 0x81, 0x22, 0x98, - 0x22, 0x80, 0x02, 0x5a, 0xe9, 0x11, 0x70, 0x08, - 0xd0, 0x78, 0x42, 0x41, 0x22, 0x59, 0x10, 0x1f, - 0x22, 0x40, 0x00, 0x19, 0xe9, 0x11, 0x01, 0x69, - 0xd0, 0x7c, 0x32, 0x41, 0xe1, 0x11, 0x02, 0xe3, - 0xd0, 0x40, 0x02, 0x9a, 0xe9, 0x0e, 0x22, 0x81, - 0x02, 0x5a, 0xe9, 0x11, 0x22, 0x41, 0x0e, 0x5a, - 0xe9, 0x15, 0xce, 0x4a, 0x3e, 0x46, 0x0f, 0x87, - 0xdd, 0x48, 0xe1, 0x19, 0xdd, 0x40, 0xdc, 0xc8, - 0xdd, 0x3c, 0x7d, 0x34, 0x1d, 0x19, 0x3d, 0x35, - 0x4d, 0x33, 0x4c, 0xec, 0x3d, 0x33, 0xf9, 0x17, - 0x0f, 0xc5, 0x50, 0x00, 0xd0, 0x39, 0xd0, 0x35, - 0xd0, 0x1d, 0xd0, 0x2d, 0xd0, 0x3f, 0xd0, 0x2e, - 0xd0, 0x3c, 0xd0, 0x37, 0xd0, 0x33, 0xd0, 0x19, - 0xd0, 0x33, 0xd0, 0x2e, 0xd0, 0x3d, 0xd0, 0x3e, - 0xd0, 0x27, 0xd0, 0x3e, 0xd0, 0x3a, 0xd0, 0x2f, - 0xd0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x46, 0x44, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x80, - 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0xd0, - 0x00, 0x00, 0x02, 0xd0, 0x00, 0x00, 0x00, 0x1e, - 0x00, 0x05, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x90, 0x85, 0x00, 0x00, 0xa6, 0xee, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xd0, - 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x08, 0xa0, 0x00, 0x08, 0x08, 0x28, - 0x00, 0x08, 0x88, 0x68, 0x00, 0x08, 0xa0, 0x98, - 0x00, 0x08, 0x88, 0x68, 0x00, 0x08, 0x28, 0x98, - 0x00, 0x08, 0xac, 0xf4, 0x00, 0x08, 0xb8, 0x7c, - 0x00, 0x02, 0x02, 0x88, 0x00, 0x02, 0x08, 0x22, - 0x00, 0x02, 0x88, 0xaa, 0x00, 0x02, 0x22, 0xaa, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x04, 0x24, 0x00, 0x04, 0x04, 0x24, - 0x00, 0x04, 0x28, 0x6c, 0x00, 0x04, 0x28, 0x6c, - 0x00, 0x01, 0x10, 0x44, 0x00, 0x01, 0x20, 0x44, - 0x00, 0x01, 0x11, 0xaa, 0x00, 0x01, 0x88, 0x55, - 0x00, 0x01, 0x44, 0xaa, 0x00, 0x01, 0x44, 0x55, - 0x00, 0x20, 0x80, 0xa0, 0x00, 0x20, 0x80, 0xc0, - 0x00, 0x20, 0x20, 0xa0, 0x00, 0x20, 0x40, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x01, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x13, 0x16, 0x1a, 0x1b, 0x1d, 0x22, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x10, 0x13, 0x16, 0x1a, 0x1b, 0x1d, 0x22, - 0x10, 0x10, 0x16, 0x18, 0x1b, 0x1d, 0x22, 0x25, - 0x13, 0x16, 0x1a, 0x1b, 0x1d, 0x22, 0x22, 0x26, - 0x16, 0x16, 0x1a, 0x1b, 0x1d, 0x22, 0x25, 0x28, - 0x16, 0x1a, 0x1b, 0x1d, 0x20, 0x23, 0x28, 0x30, - 0x1a, 0x1b, 0x1d, 0x20, 0x23, 0x28, 0x30, 0x3a, - 0x1a, 0x1b, 0x1d, 0x22, 0x26, 0x2e, 0x38, 0x45, - 0x1b, 0x1d, 0x23, 0x26, 0x2e, 0x38, 0x45, 0x53, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0xd6, 0x00, 0x00, 0x1b, 0x08, 0x00, - 0x00, 0x1f, 0xde, 0x00, 0x00, 0x00, 0x50, 0x00, - 0x00, 0x08, 0x39, 0x00, 0x00, 0x10, 0x22, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x05, 0x28, 0x20, 0x01, - 0x00, 0x00, 0x01, 0xe0, 0x71, 0x01, 0x00, 0x68, - 0xe0, 0x7f, 0xb0, 0x7f, 0x60, 0x40, 0xe0, 0x1d, - 0x90, 0x10, 0xb4, 0x81, 0xe8, 0xc0, 0xe0, 0xc2, - 0x90, 0x18, 0x00, 0x8a, 0x70, 0xc0, 0x0f, 0x87, - 0xe3, 0xe8, 0xc0, 0x00, 0x70, 0x40, 0xe0, 0x01, - 0xe0, 0x86, 0x00, 0x26, 0xd0, 0x28, 0xe0, 0x0e, - 0xd0, 0x0e, 0x0f, 0x0b, 0x70, 0x1d, 0xe0, 0x67, - 0x0f, 0x87, 0x0f, 0x87, 0x0f, 0x87, 0x0f, 0x87, - 0x0f, 0x87, 0x02, 0x20, 0xd0, 0x01, 0xe0, 0x25, - 0x0f, 0x45, 0x6f, 0x81, 0xdf, 0xa6, 0xe0, 0x36, - 0xe1, 0x30, 0xa0, 0x37, 0xc0, 0x00, 0xe0, 0x26, - 0x00, 0x33, 0xde, 0xc8, 0xe0, 0x32, 0x0f, 0xc5, - 0x0f, 0x87, 0x00, 0x27, 0xd0, 0x4c, 0xe0, 0x21, - 0x00, 0x33, 0xdf, 0x28, 0x00, 0x27, 0xd0, 0x56, - 0x60, 0x01, 0xe0, 0x2d, 0x03, 0xa0, 0xd0, 0x41, - 0xa0, 0x78, 0x00, 0x60, 0xd0, 0x41, 0xa0, 0x77, - 0x00, 0x22, 0xd0, 0x58, 0xa0, 0x76, 0x00, 0x21, - 0xd0, 0x7c, 0x00, 0x4a, 0xd0, 0x72, 0x70, 0x40, - 0x00, 0x06, 0x0f, 0x87, 0x00, 0x22, 0xdc, 0xf8, - 0xf0, 0x4a, 0xe1, 0x70, 0x07, 0xef, 0xdd, 0xbf, - 0x4f, 0x36, 0x1d, 0x99, 0x4d, 0x80, 0x10, 0x18, - 0xdd, 0x50, 0x60, 0x35, 0xdd, 0x72, 0xdd, 0x10, - 0x3d, 0xb4, 0xec, 0x57, 0x2d, 0x36, 0x1d, 0x03, - 0xbd, 0x04, 0xe4, 0x2b, 0x01, 0x46, 0x00, 0x06, - 0xac, 0xf6, 0x80, 0x3f, 0x0d, 0x0a, 0x10, 0x02, - 0x7d, 0x40, 0x10, 0x1e, 0xb0, 0x20, 0xbc, 0xe0, - 0x00, 0x06, 0x00, 0xc6, 0xe0, 0x52, 0xb7, 0x60, - 0xb7, 0x60, 0xc0, 0x5d, 0x30, 0x5f, 0xe4, 0x72, - 0xc7, 0x5e, 0x00, 0xed, 0xd0, 0x28, 0x70, 0x40, - 0xb0, 0x7f, 0x60, 0x40, 0xc0, 0x1d, 0x30, 0x1c, - 0xf8, 0x7e, 0x00, 0x21, 0xd0, 0x01, 0x00, 0x26, - 0xd0, 0x78, 0xa0, 0x38, 0x80, 0x3f, 0x70, 0x01, - 0xb0, 0x3f, 0x60, 0x01, 0x0f, 0x87, 0x80, 0x34, - 0x03, 0xef, 0xd8, 0x3f, 0xa8, 0x38, 0x01, 0x35, - 0xdc, 0x33, 0xe0, 0x46, 0xc0, 0x1c, 0xe4, 0xa5, - 0x97, 0x2e, 0x30, 0x1c, 0xe8, 0x8e, 0x00, 0x21, - 0xd0, 0x00, 0xa0, 0x38, 0xc0, 0x5d, 0x00, 0x23, - 0xd0, 0x00, 0x30, 0x40, 0x30, 0x5e, 0xe4, 0x99, - 0x20, 0x5e, 0xc0, 0x01, 0x30, 0x1c, 0xec, 0xa4, - 0xe0, 0x9d, 0x20, 0x5f, 0xc0, 0x1c, 0x30, 0x01, - 0xf4, 0xa5, 0xc0, 0x1c, 0x30, 0x1d, 0xec, 0xa4, - 0xe4, 0xa5, 0x90, 0x38, 0x00, 0x1b, 0xe8, 0xa5, - 0xa0, 0x66, 0xb1, 0x3f, 0xe4, 0xb3, 0xe8, 0xb1, - 0xc0, 0x4b, 0x30, 0x44, 0xf8, 0xb3, 0x60, 0x45, - 0xb1, 0x7c, 0x01, 0x20, 0xd0, 0x00, 0xa0, 0x05, - 0x80, 0x40, 0x72, 0xc5, 0x00, 0x06, 0x90, 0x55, - 0xd0, 0x01, 0x00, 0x40, 0xa0, 0x55, 0x0f, 0x87, - 0x01, 0x46, 0x00, 0x06, 0x03, 0xef, 0xd0, 0x3f, - 0xa0, 0x38, 0xb0, 0x01, 0xa0, 0x37, 0x80, 0x3f, - 0x82, 0x34, 0x80, 0x3f, 0xf2, 0x1a, 0x80, 0x34, - 0x80, 0x3f, 0xf2, 0x1a, 0xd8, 0x00, 0xd8, 0x40, - 0xd8, 0x80, 0xd8, 0xc0, 0xd9, 0x00, 0xd9, 0x40, - 0xd9, 0x80, 0xd9, 0xc0, 0xda, 0x00, 0xda, 0x40, - 0xda, 0x80, 0xda, 0xc0, 0xdb, 0x00, 0xdb, 0x40, - 0xdb, 0x80, 0xdb, 0xc0, 0xdc, 0x00, 0xdc, 0x40, - 0xdc, 0x80, 0xdc, 0xc0, 0xdd, 0x00, 0xdd, 0x40, - 0xdd, 0x80, 0xdd, 0xc0, 0xde, 0x00, 0xde, 0x40, - 0xde, 0x80, 0xde, 0xc0, 0xdf, 0x00, 0xdf, 0x40, - 0xdf, 0x80, 0xdf, 0xc0, 0xde, 0x80, 0xde, 0xc1, - 0x00, 0x28, 0xd0, 0x60, 0x6e, 0x81, 0x80, 0x00, - 0x80, 0x05, 0x00, 0xe3, 0xd1, 0x88, 0x00, 0x73, - 0xd5, 0x80, 0x60, 0x06, 0xb1, 0xbc, 0x00, 0xfa, - 0xd0, 0x80, 0x60, 0x06, 0x00, 0x26, 0xd0, 0x6c, - 0x6e, 0x81, 0x04, 0x32, 0xd2, 0x00, 0x00, 0xee, - 0xd1, 0x94, 0x60, 0x06, 0x00, 0xed, 0xd0, 0x50, - 0x6e, 0x81, 0x00, 0x22, 0xd0, 0x70, 0x6e, 0x81, - 0x00, 0xee, 0xd0, 0x74, 0x6e, 0x81, 0xd0, 0x4c, - 0x6e, 0x81, 0xd0, 0x02, 0x00, 0xef, 0xd0, 0x6c, - 0x60, 0x01, 0xd0, 0x03, 0x00, 0xef, 0xd0, 0x70, - 0x60, 0x01, 0x00, 0xe0, 0xd0, 0x48, 0xd0, 0x02, - 0x60, 0x01, 0x00, 0x32, 0xd6, 0xf0, 0xa0, 0x1c, - 0x00, 0x21, 0xd0, 0x60, 0xa0, 0x76, 0x00, 0x34, - 0xd5, 0x48, 0x80, 0x3f, 0x00, 0x23, 0xd0, 0x5c, - 0x00, 0x4a, 0xd0, 0x72, 0x70, 0x40, 0x00, 0x06, - 0x00, 0x22, 0xd1, 0xa4, 0x6e, 0xc6, 0xd0, 0x58, - 0x6e, 0xc1, 0xd0, 0xc9, 0x00, 0xed, 0xd0, 0x54, - 0x60, 0xc1, 0x00, 0x22, 0xd0, 0x40, 0x60, 0xc1, - 0x00, 0x22, 0xd0, 0x60, 0x60, 0xc1, 0x82, 0x34, - 0x80, 0x3f, 0xd6, 0xd9, 0x01, 0x20, 0xd6, 0x22, - 0x16, 0x08, 0xd0, 0x5e, 0xd0, 0x2c, 0x60, 0x40, - 0xd0, 0x70, 0x01, 0x74, 0xd6, 0x00, 0x60, 0x01, - 0x00, 0x2b, 0xd4, 0x10, 0x00, 0x27, 0xd4, 0x60, - 0x00, 0x2b, 0xd0, 0x90, 0xc0, 0xc2, 0xd1, 0x08, - 0xd1, 0x44, 0xa1, 0x50, 0x00, 0x21, 0xd0, 0xb6, - 0xd0, 0xd7, 0x00, 0x29, 0xd0, 0x04, 0x64, 0x00, - 0xb0, 0x3c, 0x64, 0x40, 0x80, 0x34, 0x80, 0x3f, - 0xd0, 0x40, 0x00, 0x35, 0xd0, 0x00, 0x60, 0x01, - 0xd0, 0x48, 0x6e, 0x81, 0xd0, 0x44, 0x6e, 0x81, - 0x00, 0x64, 0xd1, 0x80, 0x6e, 0x86, 0x01, 0x3c, - 0xd2, 0x39, 0xe0, 0x46, 0xd0, 0x00, 0xd0, 0x40, - 0xd0, 0x80, 0xd0, 0xc0, 0xd1, 0x00, 0xd1, 0x40, - 0xd1, 0x80, 0xd1, 0xc0, 0xd2, 0x00, 0xd2, 0x40, - 0xd2, 0x80, 0xd2, 0xc0, 0xd3, 0x00, 0xd3, 0x40, - 0xd3, 0x80, 0xd3, 0xc0, 0xd4, 0x00, 0xd4, 0x40, - 0xd4, 0x80, 0xd4, 0xc0, 0xd5, 0x00, 0xd5, 0x40, - 0xd5, 0x80, 0xd5, 0xc0, 0xd6, 0x00, 0xd6, 0x40, - 0xd6, 0x80, 0xd6, 0xc0, 0xd7, 0x00, 0xd7, 0x40, - 0xd7, 0x80, 0xd7, 0xc0, 0x0f, 0xc5, 0x50, 0x00, - 0x01, 0x46, 0x00, 0x06, 0xde, 0x80, 0xde, 0xc1, - 0x03, 0x2f, 0xd0, 0x33, 0xa0, 0x38, 0xb0, 0x01, - 0xa0, 0x37, 0x80, 0x3f, 0x08, 0x20, 0xdf, 0x00, - 0x82, 0x34, 0x80, 0x3f, 0x00, 0xee, 0xd0, 0x08, - 0x77, 0xc0, 0xb0, 0x04, 0x77, 0x80, 0xb0, 0x04, - 0xc0, 0x5f, 0x30, 0x5e, 0x60, 0x40, 0xd7, 0x00, - 0xb7, 0x01, 0x80, 0x34, 0x80, 0x3f, 0x00, 0x60, - 0xd0, 0x80, 0x00, 0xec, 0xd0, 0x40, 0x60, 0x81, - 0xb0, 0x7c, 0x60, 0x81, 0x00, 0xa0, 0xd0, 0x80, - 0xb0, 0x74, 0x60, 0x81, 0xb0, 0x7c, 0x60, 0x81, - 0x00, 0x68, 0xd0, 0x80, 0x6e, 0x82, 0x00, 0xef, - 0xd0, 0x8c, 0x6e, 0x82, 0x00, 0x06, 0xd0, 0x11, - 0xa0, 0x38, 0x80, 0x3f, 0x08, 0x20, 0xd0, 0x40, - 0x10, 0x48, 0xa0, 0x4a, 0xa0, 0x5b, 0x0c, 0x20, - 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x27, 0xa0, 0x0a, - 0x90, 0x4d, 0x0f, 0xff, 0xd8, 0x1f, 0x40, 0x40, - 0xa0, 0x4d, 0x80, 0x0a, 0x80, 0x07, 0x80, 0x1b, - 0x80, 0x27, 0x00, 0x60, 0xd0, 0x00, 0xa0, 0x09, - 0x80, 0x28, 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, - 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, - 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, - 0xd0, 0x00, 0xa0, 0x29, 0x80, 0x2b, 0x02, 0x30, - 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, 0x01, 0xb0, - 0xd0, 0x10, 0xa0, 0x37, 0x80, 0x3f, 0x02, 0x30, - 0xd0, 0x01, 0xa0, 0x38, 0x00, 0xea, 0xd0, 0x00, - 0xd0, 0x4e, 0x0f, 0x0b, 0x70, 0x40, 0x00, 0x06, - 0x00, 0x21, 0xd0, 0x88, 0x00, 0xe1, 0xd0, 0x60, - 0x60, 0x81, 0x00, 0x2b, 0xd0, 0x80, 0x00, 0xe0, - 0xd0, 0x6c, 0x60, 0x81, 0xb0, 0x7c, 0x00, 0x27, - 0xd0, 0xa0, 0x60, 0x81, 0xb0, 0x7c, 0xd0, 0x82, - 0x60, 0x81, 0xb0, 0x7c, 0xd0, 0x85, 0x60, 0x81, - 0xb0, 0x7c, 0x03, 0xaa, 0xd0, 0x98, 0x60, 0x81, - 0xb0, 0x7c, 0x6e, 0x81, 0x00, 0x27, 0xd0, 0x40, - 0x6e, 0x81, 0xb0, 0x7c, 0x6e, 0x81, 0xb0, 0x7c, - 0x6e, 0x81, 0x00, 0x27, 0xd1, 0x90, 0x6e, 0x86, - 0x00, 0x21, 0xd1, 0xb8, 0x6e, 0x86, 0x00, 0x66, - 0xd1, 0xa0, 0xd0, 0x00, 0x01, 0x26, 0xd0, 0x58, - 0x30, 0x01, 0x60, 0x06, 0x00, 0xed, 0xd1, 0xbc, - 0x6e, 0x86, 0x00, 0xec, 0xd1, 0xb8, 0x6e, 0x86, - 0xb1, 0x84, 0x6e, 0x86, 0x00, 0xee, 0xd1, 0x84, - 0x70, 0x46, 0x00, 0x65, 0xd1, 0x94, 0x60, 0x46, - 0x00, 0x64, 0xd1, 0xbc, 0x6e, 0x86, 0x00, 0x65, - 0xd1, 0x80, 0x6e, 0x86, 0xb1, 0xbc, 0x6e, 0x86, - 0xb1, 0xbc, 0x6e, 0x86, 0x00, 0xed, 0xd1, 0xa8, - 0x6e, 0x86, 0xd0, 0x0e, 0xb1, 0xbc, 0x60, 0x06, - 0xb1, 0xbc, 0x60, 0x06, 0x00, 0x65, 0xd1, 0xa4, - 0x60, 0x06, 0x00, 0x28, 0xd1, 0xa4, 0x6e, 0x86, - 0x00, 0x27, 0xd1, 0x98, 0x6e, 0x86, 0x00, 0x64, - 0xd1, 0xa4, 0x6e, 0x86, 0xd2, 0x01, 0x00, 0x64, - 0xd0, 0x60, 0x62, 0x01, 0x00, 0x64, 0xd1, 0x80, - 0x70, 0x46, 0x6e, 0x86, 0x00, 0xef, 0xd1, 0x98, - 0x70, 0x86, 0x08, 0x20, 0xd0, 0xcf, 0x30, 0xc1, - 0xea, 0x42, 0xd0, 0x81, 0x00, 0x21, 0xd1, 0xa8, - 0x60, 0x86, 0x00, 0xed, 0xd1, 0xa0, 0x6e, 0xc6, - 0x00, 0x65, 0xd1, 0x98, 0x6e, 0xc6, 0x00, 0x22, - 0xd0, 0x00, 0xa0, 0x05, 0x80, 0x40, 0x00, 0xc6, - 0x01, 0x73, 0xd4, 0x3d, 0xe0, 0x46, 0x50, 0x00, - 0x08, 0x20, 0xd0, 0x00, 0x5f, 0x00, 0x00, 0x64, - 0xd0, 0x60, 0x70, 0xc1, 0x00, 0xec, 0xd0, 0x40, - 0x71, 0x81, 0xb0, 0x7c, 0x71, 0xc1, 0xc0, 0x87, - 0x30, 0x86, 0xf9, 0x83, 0x10, 0xee, 0xe9, 0x76, - 0x10, 0xe1, 0xe9, 0x76, 0xe2, 0x57, 0x00, 0x63, - 0xd0, 0xbf, 0x72, 0x06, 0xb1, 0xbc, 0x41, 0x82, - 0x02, 0x1b, 0xe9, 0x8d, 0x72, 0x86, 0xb1, 0xbc, - 0x41, 0x82, 0xd0, 0x75, 0x30, 0x48, 0xe9, 0xfe, - 0xb0, 0x7f, 0xea, 0x00, 0x02, 0x1c, 0xe9, 0x96, - 0x15, 0xa3, 0xea, 0x57, 0x10, 0xf0, 0xe9, 0x9a, - 0x10, 0xfa, 0xf9, 0xa1, 0x15, 0xa3, 0xea, 0x57, - 0x00, 0x21, 0xd0, 0x4c, 0x70, 0x41, 0x10, 0x61, - 0xfa, 0x57, 0x00, 0xed, 0xd0, 0x08, 0x70, 0x40, - 0xd0, 0x85, 0x40, 0x42, 0x60, 0x40, 0x00, 0x64, - 0xd0, 0x64, 0x62, 0x01, 0x12, 0x2b, 0xe9, 0xeb, - 0x12, 0x3b, 0xe9, 0xd5, 0x00, 0xec, 0xd0, 0x40, - 0x61, 0x81, 0x12, 0x2d, 0xe9, 0xbf, 0x12, 0x30, - 0xe9, 0xd4, 0x12, 0x36, 0xe9, 0xd4, 0x12, 0x3a, - 0xe9, 0xd4, 0xd0, 0x62, 0x30, 0x48, 0xe9, 0xf2, - 0x12, 0x2e, 0xe9, 0xf9, 0xe1, 0x76, 0x00, 0xed, - 0xd0, 0x08, 0x70, 0x40, 0xd0, 0x85, 0x40, 0x42, - 0x60, 0x40, 0xb0, 0x08, 0x00, 0x21, 0xd0, 0x41, - 0x60, 0x40, 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, - 0xf2, 0x5a, 0x00, 0xed, 0xd0, 0x20, 0xd0, 0x41, - 0x60, 0x40, 0x10, 0xe1, 0xea, 0x3a, 0xe2, 0x57, - 0xe2, 0x53, 0x10, 0xee, 0xf9, 0xe9, 0x01, 0x46, - 0x82, 0x34, 0x80, 0x3f, 0x97, 0x2e, 0xc7, 0x5c, - 0xa7, 0x66, 0x81, 0x34, 0x80, 0x3f, 0x00, 0x21, - 0xd0, 0x01, 0xa0, 0x38, 0x00, 0xc6, 0x00, 0x21, - 0xd0, 0x15, 0x0b, 0x09, 0x00, 0x4d, 0xb0, 0x01, - 0xed, 0xe5, 0xd2, 0x1a, 0xe1, 0xec, 0xf1, 0x18, - 0x00, 0xec, 0xd0, 0x40, 0x71, 0x81, 0xd0, 0x4e, - 0x60, 0x46, 0xe2, 0x54, 0xc0, 0x0a, 0x10, 0x06, - 0x52, 0x80, 0x00, 0xed, 0xd0, 0x40, 0x62, 0x81, - 0xe2, 0x53, 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, - 0xf2, 0x5a, 0xe1, 0x70, 0x12, 0xa3, 0xf6, 0x57, - 0x15, 0xa1, 0xfa, 0x57, 0x12, 0xa0, 0xea, 0x23, - 0x00, 0x65, 0xd1, 0x1c, 0xd0, 0x75, 0x30, 0x48, - 0xea, 0x0a, 0xb1, 0x3c, 0x71, 0x04, 0x11, 0x20, - 0xfa, 0x11, 0x00, 0xec, 0xd0, 0x40, 0x61, 0x81, - 0xe2, 0x57, 0x12, 0xa1, 0xea, 0x33, 0x00, 0xe2, - 0xd0, 0x60, 0x70, 0x01, 0xb0, 0x7c, 0x70, 0x41, - 0x10, 0x0c, 0x50, 0x40, 0x0c, 0x30, 0xd0, 0x00, - 0x31, 0x01, 0xee, 0x21, 0x21, 0x00, 0xe6, 0x57, - 0xe2, 0x23, 0x31, 0x00, 0xfe, 0x57, 0xd0, 0x75, - 0x30, 0x48, 0xea, 0x28, 0xf2, 0x5a, 0xe2, 0x0d, - 0x00, 0xec, 0xd0, 0x40, 0x71, 0x81, 0x00, 0x63, - 0xd1, 0x3f, 0xb1, 0xbc, 0x41, 0x84, 0x61, 0x81, - 0xd0, 0x50, 0x60, 0x46, 0xe2, 0x57, 0x00, 0xed, - 0xd0, 0x7c, 0x70, 0x41, 0x08, 0x20, 0xd0, 0x00, - 0x10, 0x08, 0xe2, 0x1c, 0xd2, 0x84, 0x00, 0xed, - 0xd1, 0xa4, 0x62, 0x86, 0xd5, 0x00, 0xb5, 0x01, - 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0xc7, 0x5e, - 0x97, 0x2e, 0x81, 0x34, 0x80, 0x3f, 0x02, 0xe8, - 0xd0, 0x30, 0xa0, 0x37, 0xa0, 0x38, 0x08, 0x20, - 0xdf, 0x00, 0x80, 0x73, 0x80, 0x3f, 0x00, 0xc6, - 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0xf2, 0x5a, - 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, 0x02, 0x3c, - 0xda, 0x89, 0xe0, 0x46, 0x00, 0x28, 0xd0, 0x64, - 0x70, 0x81, 0x00, 0x22, 0xd0, 0x00, 0x50, 0x80, - 0x60, 0x81, 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, - 0x00, 0xed, 0xd1, 0xa4, 0x72, 0x86, 0x00, 0xef, - 0xd1, 0x90, 0x70, 0x46, 0x10, 0x5c, 0x10, 0x65, - 0xed, 0x7d, 0xd0, 0x46, 0xc0, 0x0a, 0x10, 0x40, - 0x60, 0x46, 0x00, 0x22, 0xd0, 0x73, 0x30, 0x54, - 0xe9, 0x8e, 0x12, 0xa4, 0xe9, 0xb5, 0x15, 0x20, - 0xe9, 0xc0, 0xb0, 0x7b, 0xe9, 0xc3, 0xb0, 0x41, - 0xe9, 0xc9, 0xc0, 0x54, 0x10, 0x5c, 0x10, 0x6e, - 0xe9, 0xc6, 0xe1, 0xb5, 0x00, 0x28, 0xd1, 0xb0, - 0xd0, 0x00, 0x60, 0x06, 0x12, 0xa4, 0xf9, 0xb2, - 0x00, 0xed, 0xd1, 0x9c, 0x62, 0x86, 0xd2, 0x80, - 0x00, 0xed, 0xd1, 0xa4, 0x62, 0x86, 0xd0, 0x02, - 0x00, 0xec, 0xd1, 0xbc, 0x60, 0x06, 0x00, 0x64, - 0xd1, 0xa0, 0x72, 0x06, 0x12, 0x21, 0xf9, 0xa6, - 0xd2, 0x0d, 0x62, 0x06, 0x00, 0xed, 0xd1, 0xa0, - 0x61, 0x86, 0xd0, 0x0e, 0x00, 0xed, 0xd1, 0xac, - 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, 0x00, 0x65, - 0xd1, 0xa4, 0x60, 0x06, 0x01, 0x7e, 0xd2, 0x31, - 0xe1, 0xcb, 0x01, 0x46, 0x90, 0x49, 0x00, 0x60, - 0xd0, 0x00, 0x50, 0x40, 0xa0, 0x49, 0x80, 0x3f, - 0x00, 0xc6, 0x0c, 0x09, 0x05, 0x0d, 0xe1, 0x70, - 0x01, 0xbe, 0xde, 0x41, 0xe1, 0xcb, 0x01, 0xbb, - 0xd8, 0x10, 0xe1, 0xcb, 0x01, 0xbd, 0xd8, 0x0b, - 0xe1, 0xcb, 0x03, 0xb8, 0xda, 0x10, 0x01, 0x46, - 0x90, 0x49, 0x00, 0x60, 0xd1, 0x00, 0x50, 0x44, - 0x30, 0x44, 0xa0, 0x49, 0x80, 0x3f, 0x00, 0xc6, - 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x01, 0xfa, 0xd2, 0x3d, 0x00, 0x25, 0xdc, 0xd8, - 0xf0, 0x4a, 0x00, 0x26, 0xd0, 0x18, 0xd0, 0x40, - 0x60, 0x40, 0x00, 0x28, 0xd0, 0x24, 0x70, 0x40, - 0xd0, 0x82, 0x50, 0x42, 0x60, 0x40, 0x00, 0xec, - 0xd0, 0xa4, 0x70, 0xc2, 0x10, 0xe0, 0xf9, 0x81, - 0x00, 0xec, 0xd1, 0x98, 0xd0, 0x41, 0x60, 0x46, - 0x70, 0xc2, 0x10, 0xe0, 0xe9, 0x8e, 0xd0, 0x40, - 0x60, 0x46, 0xe1, 0x81, 0xd0, 0x40, 0x00, 0xe6, - 0xd0, 0x10, 0x60, 0x40, 0xb0, 0x3c, 0x60, 0x40, - 0xb0, 0x3c, 0x60, 0x40, 0xd0, 0xe0, 0x00, 0xea, - 0xd0, 0x40, 0x00, 0xe8, 0xd0, 0x82, 0x01, 0x46, - 0x70, 0x01, 0xb0, 0x7c, 0x60, 0x02, 0xb0, 0xbc, - 0x00, 0x06, 0x00, 0xc6, 0xb0, 0xc1, 0xed, 0x9b, - 0x80, 0x49, 0xd6, 0x44, 0xd5, 0x43, 0x00, 0xe0, - 0xd1, 0x80, 0x00, 0x06, 0x0b, 0x09, 0x01, 0x0d, - 0x0b, 0x09, 0x61, 0x06, 0xb1, 0xbc, 0x01, 0x4d, - 0x09, 0x09, 0x61, 0x46, 0xb1, 0xbc, 0x00, 0xcd, - 0x09, 0x09, 0x10, 0xe4, 0xed, 0xb8, 0x60, 0xc6, - 0xb1, 0xbc, 0x00, 0xcd, 0x60, 0xc6, 0x00, 0xed, - 0xd0, 0x04, 0x70, 0x00, 0x10, 0x20, 0xf9, 0xd3, - 0x10, 0xe3, 0xe9, 0xc4, 0x10, 0xe6, 0xf9, 0xd3, - 0x01, 0x46, 0x90, 0x10, 0x00, 0x20, 0xd0, 0x44, - 0x50, 0x40, 0x00, 0xc6, 0xa0, 0x50, 0x00, 0xa0, - 0xd0, 0x00, 0xa0, 0x05, 0x80, 0x40, 0x00, 0xed, - 0xd1, 0xa4, 0xd0, 0x04, 0x60, 0x06, 0x00, 0xee, - 0xd1, 0xac, 0x73, 0x86, 0x10, 0xe3, 0xe5, 0xde, - 0xe9, 0xe3, 0x00, 0xe7, 0xd0, 0x40, 0x00, 0xae, - 0xd0, 0xbb, 0xe1, 0xe7, 0x01, 0x24, 0xd0, 0x6b, - 0x00, 0xea, 0xd0, 0xa6, 0xe1, 0xe7, 0x01, 0x21, - 0xd0, 0x7b, 0x00, 0xe8, 0xd0, 0x90, 0x13, 0xa0, - 0xf9, 0xea, 0xc0, 0x42, 0x00, 0xe0, 0xd1, 0xa8, - 0x60, 0x46, 0xb1, 0x98, 0x0b, 0xc9, 0x00, 0x4d, - 0x09, 0x09, 0x10, 0x44, 0x00, 0x8d, 0x20, 0x42, - 0x10, 0x5f, 0x60, 0x46, 0xb1, 0xb8, 0x00, 0x90, - 0xea, 0x17, 0x0a, 0x89, 0x00, 0x8d, 0x60, 0x86, - 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, - 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, - 0x10, 0x60, 0xea, 0x0b, 0x00, 0xe8, 0xd1, 0x80, - 0xf2, 0xb0, 0x10, 0x60, 0xfa, 0x17, 0x08, 0x49, - 0x00, 0xe0, 0xd1, 0xa4, 0x00, 0x4d, 0x60, 0x46, - 0x10, 0x60, 0xea, 0x1b, 0x00, 0xe9, 0xd1, 0x80, - 0xf2, 0xb0, 0x10, 0x60, 0xea, 0x1b, 0x00, 0xe0, - 0xd1, 0x88, 0xd0, 0x40, 0x60, 0x46, 0xd0, 0x00, - 0x00, 0xe0, 0xd1, 0xa8, 0x70, 0x46, 0x00, 0xef, - 0xd1, 0x9c, 0x70, 0x86, 0xb0, 0xb0, 0xee, 0x25, - 0xd0, 0x81, 0x00, 0x90, 0xea, 0x28, 0x20, 0x01, - 0x10, 0x41, 0x10, 0x9f, 0x10, 0xa0, 0xee, 0x25, - 0x10, 0x1c, 0x00, 0x65, 0xd1, 0xa8, 0x60, 0x06, - 0x01, 0xb4, 0xd4, 0x3a, 0xe0, 0x46, 0x50, 0x00, - 0x02, 0x31, 0xdc, 0x13, 0x00, 0x27, 0xdc, 0xd8, - 0xf0, 0x4a, 0x0c, 0x09, 0x00, 0x06, 0x05, 0x0d, - 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, 0xe9, 0xea, - 0xb0, 0x7d, 0xfa, 0x05, 0x09, 0x09, 0x01, 0xcd, - 0x11, 0xe1, 0xf9, 0xc7, 0x80, 0x09, 0x80, 0x27, - 0x0a, 0x09, 0xd6, 0x45, 0x00, 0xe1, 0xd1, 0xa0, - 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, - 0x00, 0x4d, 0x60, 0x46, 0x00, 0x50, 0xe9, 0x91, - 0xd4, 0x01, 0xb1, 0xbc, 0x08, 0x89, 0x00, 0x4d, - 0x60, 0x46, 0x00, 0xe0, 0xd1, 0x80, 0x08, 0x89, - 0x00, 0x4d, 0x08, 0x89, 0x10, 0x4c, 0x71, 0x06, - 0x21, 0x01, 0x61, 0x06, 0xb1, 0xbc, 0x00, 0x4d, - 0x0b, 0x49, 0x10, 0x4c, 0x71, 0x46, 0x21, 0x41, - 0x61, 0x46, 0xb1, 0xb0, 0x00, 0x4d, 0x10, 0x5f, - 0x60, 0x46, 0xb1, 0xbc, 0x0a, 0x09, 0x00, 0x4d, - 0x10, 0x4a, 0x70, 0x86, 0x20, 0x81, 0x60, 0x86, - 0x00, 0xe1, 0xd1, 0xac, 0x08, 0x49, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x89, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0x09, 0x49, 0x00, 0x8d, - 0x60, 0x86, 0xc0, 0x02, 0x00, 0xe0, 0xd1, 0xa8, - 0x70, 0xc6, 0x10, 0xc0, 0xd0, 0x20, 0x30, 0x01, - 0x10, 0xc0, 0x60, 0xc6, 0xe1, 0x75, 0x11, 0xe2, - 0xf9, 0x75, 0x00, 0xe2, 0xd1, 0x80, 0x08, 0xc9, - 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, - 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, 0x10, 0x60, - 0xf9, 0xd7, 0xb1, 0xb4, 0xe1, 0xde, 0xd2, 0x03, - 0x0a, 0x09, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, - 0xb2, 0x01, 0xf9, 0xd8, 0x0b, 0xc9, 0x00, 0x4d, - 0x10, 0x49, 0x10, 0x56, 0x60, 0x46, 0xb1, 0xbc, - 0x0b, 0x89, 0x00, 0x4d, 0x10, 0x4a, 0x10, 0x56, - 0x60, 0x46, 0xe1, 0x75, 0x0b, 0x2c, 0xd4, 0x40, - 0xf3, 0xb0, 0xe1, 0x77, 0x00, 0xe0, 0xd0, 0x6c, - 0x00, 0xe0, 0xd1, 0x80, 0xd0, 0x0a, 0xf1, 0xfe, - 0x00, 0xe1, 0xd1, 0xb0, 0xd0, 0x02, 0xf1, 0xfe, - 0x00, 0xe0, 0xd1, 0x80, 0x76, 0x86, 0xb1, 0xbc, - 0x73, 0x46, 0xe2, 0x3c, 0x70, 0x81, 0x60, 0x86, - 0xb1, 0xbc, 0xb0, 0x7c, 0xb0, 0x01, 0xed, 0xfe, - 0x0f, 0xc5, 0x00, 0xe1, 0xd1, 0xa0, 0x70, 0x46, - 0xd0, 0x8f, 0x40, 0x42, 0x00, 0x25, 0xd0, 0xe0, - 0x00, 0x24, 0xd1, 0x20, 0x10, 0x6a, 0xea, 0x1e, - 0x00, 0x66, 0xd0, 0xe0, 0x00, 0x62, 0xd1, 0x00, - 0x10, 0x66, 0xea, 0x1e, 0x00, 0x6e, 0xd0, 0xc0, - 0x10, 0x64, 0xea, 0x1e, 0x00, 0x2b, 0xd0, 0xd0, - 0x00, 0x29, 0xd1, 0x00, 0x00, 0xe0, 0xd1, 0x80, - 0x76, 0x86, 0x16, 0xa0, 0xe9, 0xee, 0x30, 0xda, - 0xe5, 0xee, 0xb1, 0xbc, 0x73, 0x46, 0x13, 0x60, - 0xe9, 0xee, 0x31, 0x0d, 0xe5, 0xee, 0xd0, 0x82, - 0xb1, 0xbc, 0x70, 0x46, 0x10, 0x60, 0xe9, 0xee, - 0xb0, 0x81, 0xee, 0x2c, 0x00, 0xe0, 0xd0, 0x40, - 0x00, 0xe0, 0xd1, 0xac, 0xd0, 0x0a, 0xf1, 0xfe, - 0x00, 0xe1, 0xd0, 0x70, 0xd0, 0x02, 0xf1, 0xfe, - 0x00, 0xec, 0xd1, 0x98, 0xd0, 0x40, 0x60, 0x46, - 0x00, 0xe0, 0xd0, 0x8c, 0x70, 0x82, 0x00, 0x21, - 0xd0, 0x70, 0x60, 0x81, 0xd0, 0x40, 0x00, 0x25, - 0xd0, 0x20, 0x30, 0x1a, 0xfa, 0x50, 0x00, 0x23, - 0xd0, 0x30, 0x30, 0x0d, 0xfa, 0x50, 0xd0, 0x41, - 0x00, 0x21, 0xd1, 0x84, 0x60, 0x46, 0xb6, 0xb1, - 0x16, 0x9c, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, - 0x02, 0x31, 0xdc, 0x13, 0x00, 0x27, 0xdc, 0xd8, - 0xf0, 0x4a, 0x00, 0xec, 0xd0, 0xa8, 0x70, 0xc2, - 0x10, 0xe0, 0xf9, 0x77, 0x00, 0xec, 0xd1, 0x9c, - 0xd0, 0x41, 0x60, 0x46, 0x70, 0xc2, 0x10, 0xe0, - 0xe9, 0x84, 0xd0, 0x40, 0x60, 0x46, 0xe1, 0x77, - 0x0b, 0x49, 0x00, 0xe2, 0xd1, 0xa0, 0x00, 0x4d, - 0x10, 0x5f, 0x00, 0x6f, 0xd0, 0xff, 0x40, 0x43, - 0x60, 0x46, 0xb1, 0xbc, 0x0b, 0x09, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x89, 0x00, 0x4d, - 0x60, 0x46, 0x10, 0x61, 0xf9, 0x9b, 0xd3, 0xc2, - 0x00, 0xec, 0xd1, 0xbc, 0x63, 0xc6, 0x0c, 0x09, - 0x90, 0x4d, 0x10, 0x60, 0xe5, 0x9c, 0x00, 0x06, - 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, - 0xf9, 0xa9, 0x0b, 0xa0, 0xd4, 0x40, 0xf3, 0xb0, - 0xe1, 0xa0, 0x00, 0xec, 0xd1, 0x9c, 0xd0, 0x40, - 0x60, 0x46, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, - 0x0b, 0x09, 0x00, 0x4d, 0x0b, 0x09, 0x00, 0x4d, - 0x0a, 0x09, 0x01, 0x4d, 0x0a, 0x09, 0x00, 0x4d, - 0x01, 0x59, 0xe9, 0x96, 0x09, 0x09, 0x00, 0x4d, - 0x10, 0x5f, 0x10, 0x61, 0xf9, 0x96, 0x09, 0x09, - 0x01, 0x4d, 0x11, 0x5f, 0x0b, 0xc9, 0x00, 0x4d, - 0xc0, 0x01, 0x10, 0x5f, 0x11, 0x4e, 0x51, 0x41, - 0x08, 0x49, 0x00, 0x4d, 0x0b, 0xc9, 0x10, 0x0f, - 0x00, 0x4d, 0x50, 0x01, 0x00, 0xed, 0xd1, 0xb6, - 0x01, 0x46, 0x00, 0x06, 0xa0, 0x3c, 0xa1, 0x7d, - 0x60, 0x06, 0x00, 0xc6, 0xd5, 0x00, 0xb5, 0x01, - 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, - 0x00, 0xec, 0xd0, 0xac, 0x70, 0xc2, 0x10, 0xe0, - 0xf9, 0x70, 0x00, 0xec, 0xd1, 0xa0, 0xd0, 0x41, - 0x60, 0x46, 0x70, 0xc2, 0x10, 0xe0, 0xe9, 0x7f, - 0xd0, 0x40, 0x60, 0x46, 0xe1, 0x70, 0x0a, 0x89, - 0x0b, 0xcd, 0x00, 0xe3, 0xd1, 0x80, 0x6b, 0xc6, - 0x08, 0xc9, 0x05, 0x8d, 0x15, 0xa3, 0xee, 0x6e, - 0x15, 0xa0, 0xea, 0x6e, 0x90, 0x4d, 0xd0, 0x9f, - 0xd0, 0xdf, 0x40, 0x81, 0x10, 0x55, 0x40, 0xc1, - 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0xc8, 0x1d, - 0x81, 0x34, 0x80, 0x3f, 0x00, 0xc6, 0xd1, 0x23, - 0x31, 0x03, 0x11, 0x02, 0x38, 0x04, 0xb0, 0x8d, - 0x10, 0x9d, 0x28, 0x02, 0xc0, 0x60, 0x00, 0x65, - 0xd1, 0x94, 0x71, 0x06, 0x68, 0x06, 0x30, 0x44, - 0x00, 0xed, 0xd1, 0xa8, 0x70, 0x06, 0x10, 0x20, - 0xe9, 0xb0, 0x00, 0xee, 0xd0, 0xc0, 0x70, 0xc3, - 0x20, 0x43, 0xb0, 0x01, 0xf9, 0xac, 0x60, 0x06, - 0x00, 0x64, 0xd1, 0xbc, 0x71, 0x06, 0xc0, 0x04, - 0x21, 0x01, 0x61, 0x06, 0x10, 0x20, 0xf5, 0xbb, - 0x11, 0x20, 0xe5, 0xbb, 0xb0, 0x41, 0x00, 0x65, - 0xd1, 0x80, 0x71, 0x06, 0x21, 0x01, 0x61, 0x06, - 0x00, 0xed, 0xd1, 0xac, 0x71, 0x06, 0x15, 0xa1, - 0xe9, 0xcb, 0xb1, 0x3f, 0x61, 0x06, 0x15, 0xa3, - 0xf9, 0xd6, 0xd0, 0xbf, 0xe1, 0xd3, 0xd0, 0x40, - 0x60, 0x46, 0xb1, 0xbc, 0x70, 0x86, 0x61, 0x06, - 0x31, 0x02, 0xe5, 0xd3, 0x20, 0x84, 0x00, 0x65, - 0xd1, 0xa4, 0x60, 0x86, 0xd9, 0x40, 0x00, 0xec, - 0xd1, 0x94, 0x79, 0x06, 0xb1, 0x84, 0x78, 0xc6, - 0xc0, 0x63, 0x30, 0x64, 0xe9, 0xf8, 0x00, 0xa7, - 0xd0, 0xff, 0x7a, 0x63, 0x00, 0x65, 0xd0, 0x00, - 0x71, 0x00, 0x31, 0x29, 0xe5, 0xf8, 0xc0, 0x63, - 0xc8, 0xc1, 0xb0, 0x78, 0x40, 0x43, 0xc0, 0xa4, - 0x30, 0x81, 0xe9, 0xf2, 0x7a, 0x41, 0x31, 0x29, - 0xf5, 0xe8, 0x21, 0x29, 0x61, 0x00, 0xb8, 0xfc, - 0x79, 0x63, 0xb8, 0xfc, 0x48, 0xc3, 0x68, 0xc6, - 0x00, 0xed, 0xd1, 0xb8, 0x69, 0x46, 0x80, 0x28, - 0x0b, 0xc9, 0x00, 0x4d, 0x08, 0x49, 0x10, 0x41, - 0x00, 0xe3, 0xd1, 0x84, 0x00, 0x8d, 0x20, 0x42, - 0x60, 0x46, 0x00, 0xee, 0xd1, 0xa4, 0x70, 0x86, - 0x10, 0xa1, 0xee, 0x18, 0xe6, 0x6b, 0x90, 0x86, - 0x00, 0x90, 0xea, 0x18, 0x00, 0xed, 0xd0, 0x1c, - 0x70, 0x80, 0xb0, 0x81, 0xe6, 0x6b, 0x60, 0x80, - 0xb1, 0xa8, 0x70, 0x86, 0x10, 0xa0, 0xfa, 0x6b, - 0x00, 0x21, 0xd0, 0x38, 0x70, 0x80, 0x10, 0xa0, - 0xfa, 0x6b, 0x0f, 0xef, 0xd0, 0xbf, 0x30, 0x81, - 0xfa, 0x22, 0x60, 0x00, 0x08, 0x20, 0xd0, 0x00, - 0x5f, 0x00, 0x15, 0xa3, 0xea, 0x6b, 0x00, 0xee, - 0xd1, 0x80, 0x79, 0x46, 0x00, 0xf8, 0xd0, 0x00, - 0xc4, 0x40, 0x00, 0xe3, 0xd1, 0x84, 0x78, 0x46, - 0x0f, 0xef, 0xd0, 0x3f, 0x30, 0x21, 0xea, 0x48, - 0x00, 0xe0, 0xd1, 0x90, 0x78, 0x06, 0xc0, 0xa1, - 0x18, 0x43, 0x28, 0x42, 0x18, 0x43, 0x28, 0x42, - 0x18, 0x1e, 0xd8, 0x80, 0x08, 0x11, 0xea, 0x41, - 0x28, 0xa1, 0x18, 0x01, 0x18, 0x5f, 0x18, 0x60, - 0xee, 0x3e, 0xc0, 0x51, 0x30, 0x62, 0xee, 0x4e, - 0xc8, 0x91, 0x18, 0x9f, 0x00, 0x21, 0xd1, 0xb8, - 0xd0, 0x01, 0x60, 0x06, 0x00, 0xef, 0xd0, 0x10, - 0xd0, 0x72, 0x60, 0x40, 0x01, 0x46, 0x82, 0x34, - 0x80, 0x3f, 0xc8, 0xdc, 0xc9, 0x1d, 0x81, 0x34, - 0x80, 0x3f, 0x00, 0xc6, 0x38, 0xe4, 0xee, 0x5e, - 0xea, 0x52, 0x28, 0xe5, 0x01, 0x46, 0x90, 0x6d, - 0x28, 0xc1, 0x00, 0xc6, 0x38, 0xe2, 0xf6, 0x6b, - 0xdb, 0x08, 0xf1, 0x16, 0xf1, 0x18, 0x00, 0x21, - 0xd1, 0xb4, 0x61, 0x86, 0xe2, 0x52, 0x01, 0xf7, - 0xd0, 0x19, 0xe0, 0x46, 0xd5, 0x00, 0xb5, 0x01, - 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, - 0x02, 0x31, 0xdc, 0x13, 0x00, 0x27, 0xdc, 0xd8, - 0xf0, 0x4a, 0xdb, 0x09, 0x00, 0xe3, 0xd0, 0x1c, - 0x6b, 0x00, 0xda, 0xc1, 0x00, 0xe6, 0xd1, 0x98, - 0x70, 0x06, 0xb1, 0x84, 0x60, 0x06, 0xb1, 0x84, - 0x60, 0x06, 0x05, 0x9f, 0xe9, 0x9f, 0x08, 0x49, - 0xd1, 0x17, 0x46, 0x44, 0x00, 0x4d, 0x10, 0x43, - 0x26, 0x41, 0x08, 0xc9, 0x05, 0xcd, 0xb5, 0xc1, - 0xe5, 0xcc, 0xc0, 0x57, 0x15, 0xc6, 0x25, 0xc1, - 0x15, 0xa3, 0xf9, 0x9f, 0x08, 0x49, 0xd1, 0x0f, - 0x46, 0x44, 0x00, 0x4d, 0x10, 0x44, 0x26, 0x41, - 0x08, 0xc9, 0x06, 0x0d, 0xb6, 0x01, 0xe5, 0xcc, - 0xc0, 0x58, 0x16, 0x06, 0x26, 0x01, 0x08, 0x49, - 0x00, 0x4d, 0x10, 0x60, 0xe9, 0xa6, 0x0a, 0x09, - 0x00, 0x4d, 0xe1, 0x9f, 0x0c, 0x09, 0x90, 0x4d, - 0x10, 0x60, 0xe5, 0xa7, 0x00, 0x06, 0x05, 0x0d, - 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, 0xf9, 0xb3, - 0xd4, 0x40, 0xf3, 0xb0, 0xe1, 0xab, 0xb0, 0x7d, - 0xf9, 0xb8, 0x02, 0x34, 0xd2, 0x44, 0xe0, 0x46, - 0x00, 0xec, 0xd1, 0xa0, 0xd0, 0x40, 0x60, 0x46, - 0x02, 0x3c, 0xda, 0x89, 0x00, 0xec, 0xd1, 0x80, - 0x70, 0x46, 0xb1, 0xbc, 0x70, 0x86, 0x30, 0x81, - 0xe8, 0x46, 0x15, 0x63, 0xe9, 0xc9, 0x05, 0x5e, - 0xe8, 0x46, 0x01, 0x73, 0xd4, 0x3d, 0xe0, 0x46, - 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, - 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0xcc, 0xc0, 0xcd, 0x01, 0xcd, 0x42, 0xcd, 0x83, - 0x00, 0xa0, 0xd0, 0x01, 0xa0, 0x38, 0xc8, 0x7f, - 0xc8, 0x06, 0xb1, 0xbe, 0xf3, 0x96, 0xc8, 0x80, - 0xf3, 0x92, 0x58, 0x80, 0xf3, 0x96, 0xc8, 0xc0, - 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x58, 0xc0, - 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, 0x59, 0x40, - 0xc0, 0x22, 0xc0, 0x65, 0xc0, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, 0x59, 0x00, - 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x96, 0xc9, 0x80, - 0xf3, 0x92, 0x59, 0x40, 0xf3, 0x96, 0xc9, 0xc0, - 0xf3, 0x92, 0x58, 0x80, 0xc0, 0x23, 0xc0, 0x62, - 0xd0, 0x88, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, - 0xc8, 0xc0, 0xf3, 0x92, 0x58, 0xc0, 0xf3, 0x96, - 0xc8, 0x80, 0xf3, 0x92, 0x59, 0xc0, 0xc0, 0x24, - 0xc0, 0x67, 0xd0, 0x90, 0x20, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x59, 0x80, - 0xf3, 0x96, 0xc9, 0xc0, 0xf3, 0x96, 0xca, 0x00, - 0xf3, 0x92, 0x59, 0xc0, 0xf3, 0x96, 0xca, 0x40, - 0xf3, 0x92, 0x59, 0x00, 0xc0, 0x25, 0xc0, 0x64, - 0xd0, 0x98, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, - 0xc9, 0x40, 0xf3, 0x92, 0x58, 0x80, 0xf3, 0x96, - 0xc9, 0x00, 0xf3, 0x92, 0x59, 0x00, 0xc0, 0x23, - 0xc0, 0x64, 0xd0, 0x84, 0x20, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x92, 0x59, 0x40, - 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x5a, 0x40, - 0xc0, 0x26, 0xc0, 0x69, 0xd0, 0xa0, 0x20, 0x86, - 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, - 0x5a, 0x00, 0xf3, 0x96, 0xca, 0x40, 0xf3, 0x92, - 0x5a, 0x40, 0xf3, 0x96, 0xca, 0x80, 0xf3, 0x92, - 0x59, 0x80, 0xc0, 0x27, 0xc0, 0x66, 0xd0, 0xa8, - 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0xc0, - 0xf3, 0x92, 0x59, 0x00, 0xf3, 0x96, 0xc9, 0x80, - 0xf3, 0x92, 0x58, 0xc0, 0xc0, 0x22, 0xc0, 0x63, - 0xd0, 0x8c, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x92, - 0x59, 0x80, 0xc0, 0x25, 0xc0, 0x66, 0xd0, 0x94, - 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0x80, - 0xf3, 0x92, 0x59, 0xc0, 0xf3, 0x96, 0xc8, 0xc0, - 0xf3, 0x92, 0x5a, 0x80, 0xc0, 0x28, 0xc0, 0x6a, - 0xd0, 0xb0, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, - 0xc9, 0x40, 0xf3, 0x92, 0x59, 0x40, 0xc0, 0x29, - 0xc0, 0x65, 0xd0, 0xb8, 0x20, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, 0x58, 0xc0, - 0xf3, 0x96, 0xca, 0x00, 0xf3, 0x92, 0x58, 0x80, - 0xc0, 0x24, 0xc0, 0x62, 0xd0, 0x9c, 0x20, 0x86, - 0xf3, 0x9a, 0xf3, 0x92, 0x5a, 0x00, 0xc0, 0x27, - 0xc0, 0x68, 0xd0, 0xa4, 0x20, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xca, 0x80, 0xf3, 0x92, 0x59, 0x80, - 0xf3, 0x96, 0xca, 0x40, 0xf3, 0x92, 0x5a, 0x40, - 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, 0x5a, 0x80, - 0xc0, 0x23, 0xc0, 0x6a, 0xd0, 0xac, 0x20, 0x86, - 0xf3, 0x9a, 0xf3, 0x92, 0x59, 0x40, 0xc0, 0x26, - 0xc0, 0x65, 0xd0, 0xb4, 0x20, 0x86, 0xf3, 0x9a, - 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x59, 0x00, - 0xc0, 0x29, 0xc0, 0x64, 0xd0, 0xbc, 0x20, 0x86, - 0xf3, 0x9a, 0xc0, 0x33, 0xc0, 0x74, 0xc0, 0xb5, - 0xc0, 0xf6, 0xd0, 0x40, 0x00, 0xa0, 0xd8, 0x00, - 0xa8, 0x38, 0x08, 0x45, 0x0a, 0x09, 0x00, 0x0d, - 0x0f, 0xc5, 0x50, 0x00, 0x0a, 0x09, 0x00, 0x0d, - 0x10, 0x08, 0x0f, 0xc5, 0x01, 0x46, 0x00, 0x06, - 0xa0, 0x7c, 0xa0, 0x3d, 0x60, 0x42, 0x00, 0xc6, - 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x14, 0x48, 0xd0, 0x81, 0x00, 0xef, 0xd1, 0x8c, - 0x71, 0x46, 0x11, 0x60, 0xfb, 0xb1, 0x60, 0x86, - 0x71, 0x46, 0x31, 0x42, 0xfb, 0xb1, 0x00, 0xec, - 0xd1, 0x0c, 0x74, 0x84, 0x00, 0x68, 0xd0, 0x80, - 0x70, 0x02, 0x10, 0x20, 0xfb, 0xc4, 0xc4, 0x82, - 0xc4, 0xd2, 0xb4, 0xfc, 0xda, 0x00, 0xda, 0x4f, - 0x0a, 0x09, 0x0f, 0xef, 0xd0, 0x3f, 0xb4, 0x7f, - 0xca, 0x29, 0x1a, 0x18, 0x4a, 0x00, 0x1a, 0x48, - 0x00, 0x8d, 0x2a, 0x42, 0xd0, 0x03, 0x40, 0x11, - 0xfb, 0xe3, 0xb4, 0x44, 0x00, 0xa0, 0xd0, 0xc0, - 0x30, 0xd3, 0xff, 0xe3, 0xb4, 0xfe, 0x01, 0x46, - 0x00, 0x06, 0xaa, 0x3d, 0xaa, 0x7c, 0x6a, 0x53, - 0x00, 0xc6, 0xb4, 0xfe, 0xb4, 0x7c, 0x1a, 0x61, - 0xfb, 0xc8, 0xb4, 0x43, 0x00, 0xef, 0xd0, 0x3f, - 0x40, 0x11, 0xeb, 0xf7, 0xb0, 0xc4, 0xe7, 0xf7, - 0xeb, 0xee, 0x61, 0x53, 0x64, 0x52, 0x64, 0xc4, - 0x00, 0x28, 0xd1, 0x24, 0x70, 0x04, 0x00, 0x21, - 0xd0, 0x80, 0x50, 0x02, 0x60, 0x04, 0x61, 0x46, - 0x0a, 0x09, 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, - 0x02, 0x31, 0xdc, 0x13, 0x00, 0x27, 0xdc, 0xd8, - 0xf0, 0x4a, 0x01, 0xfa, 0xd2, 0x3d, 0x00, 0x25, - 0xdc, 0xd8, 0xf0, 0x4a, 0x09, 0x09, 0x01, 0xcd, - 0x11, 0xe8, 0xf9, 0xe2, 0x00, 0xe3, 0xd1, 0x9c, - 0x09, 0x09, 0x05, 0xcd, 0xb5, 0xc1, 0x09, 0x09, - 0x00, 0x4d, 0xb0, 0x41, 0x10, 0x46, 0x25, 0xc1, - 0x09, 0x09, 0x06, 0x0d, 0xb6, 0x01, 0x09, 0x09, - 0x00, 0x4d, 0x08, 0x89, 0xb0, 0x41, 0x10, 0x46, - 0x26, 0x01, 0x00, 0x8d, 0x08, 0x89, 0x10, 0x82, - 0xd0, 0x04, 0xc0, 0x55, 0x00, 0x40, 0x40, 0x40, - 0x05, 0x4d, 0x08, 0x49, 0x0b, 0x0d, 0xd1, 0x00, - 0x15, 0x63, 0xe9, 0xa2, 0xd1, 0x01, 0x55, 0x41, - 0xdb, 0x01, 0x4b, 0x15, 0xa1, 0x1b, 0x08, 0x89, - 0x00, 0x4d, 0x08, 0x49, 0x10, 0x41, 0xd1, 0x19, - 0x46, 0x44, 0x26, 0x41, 0x00, 0xcd, 0x08, 0x49, - 0x10, 0xc4, 0x00, 0x4d, 0x08, 0x49, 0x10, 0x41, - 0x20, 0x81, 0xa0, 0x89, 0x00, 0x4d, 0x10, 0x43, - 0x20, 0xc1, 0xa0, 0xe8, 0x08, 0x49, 0x00, 0x4d, - 0x1b, 0x03, 0x5b, 0x01, 0xbb, 0x3f, 0x6b, 0x06, - 0x08, 0x49, 0xb1, 0xbc, 0x00, 0x4d, 0x60, 0x46, - 0x08, 0x49, 0xb1, 0xbc, 0x0a, 0xcd, 0x1a, 0xc2, - 0x4a, 0xd9, 0x1a, 0xde, 0x6a, 0xc6, 0x08, 0x49, - 0xb1, 0xbc, 0x00, 0x4d, 0x60, 0x46, 0x10, 0x60, - 0xea, 0x3e, 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0x08, 0xc9, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0x09, 0xc9, 0x00, 0x4d, - 0x60, 0x46, 0xb1, 0xbc, 0x0a, 0x09, 0x00, 0x4d, - 0x60, 0x46, 0xe2, 0x3e, 0x11, 0xe3, 0xfa, 0x00, - 0x00, 0xe7, 0xd0, 0xc0, 0xd0, 0x84, 0xb0, 0x81, - 0xe6, 0x3e, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x43, - 0xb0, 0xfc, 0x10, 0x60, 0xe9, 0xe7, 0x10, 0xa3, - 0xf9, 0xf4, 0x00, 0xe8, 0xd1, 0x80, 0xe1, 0xf8, - 0x10, 0xa2, 0xf9, 0xfa, 0x00, 0xe9, 0xd1, 0x80, - 0xf2, 0xb0, 0xe1, 0xe7, 0xd2, 0x3f, 0x0a, 0x09, - 0x00, 0x4d, 0xb2, 0x01, 0xf5, 0xfb, 0xe1, 0xe7, - 0x11, 0xe7, 0xfa, 0x3e, 0xd4, 0x01, 0x00, 0xe1, - 0xd0, 0x24, 0x70, 0x00, 0x10, 0x21, 0xea, 0x0d, - 0x15, 0x63, 0xfa, 0x0d, 0xd4, 0x03, 0x44, 0x2c, - 0xb4, 0x3f, 0x00, 0xe6, 0xd1, 0x90, 0x0b, 0x09, - 0x00, 0x4d, 0x09, 0x49, 0x10, 0x45, 0x00, 0x8d, - 0x50, 0x81, 0xd0, 0x40, 0x10, 0x87, 0x10, 0x98, - 0x30, 0x42, 0xf2, 0x61, 0x60, 0x46, 0xb1, 0xbc, - 0x0b, 0x09, 0x00, 0x0d, 0x09, 0x49, 0x00, 0x0d, - 0xb4, 0x01, 0xfa, 0x0f, 0x00, 0xe6, 0xd0, 0x18, - 0x30, 0x06, 0xe6, 0x29, 0x60, 0x46, 0xb1, 0xbc, - 0xe2, 0x22, 0x00, 0xe0, 0xd1, 0x88, 0x70, 0x46, - 0x10, 0x63, 0xea, 0x39, 0x10, 0x64, 0xea, 0x39, - 0x00, 0xe6, 0xd1, 0x90, 0xd0, 0x00, 0x60, 0x06, - 0xb1, 0xbc, 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, - 0xe2, 0x3e, 0x00, 0xef, 0xd1, 0x84, 0x70, 0x46, - 0x10, 0x60, 0xfa, 0x30, 0x0c, 0x09, 0x90, 0x4d, - 0x10, 0x60, 0xe6, 0x3f, 0x00, 0x06, 0x05, 0x0d, - 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, 0xfa, 0x4b, - 0xd4, 0x40, 0xf3, 0xb0, 0xe2, 0x43, 0xb0, 0x7d, - 0xe9, 0x7a, 0x00, 0xec, 0xd1, 0xa0, 0xd0, 0x40, - 0x60, 0x46, 0x02, 0x3c, 0xda, 0x89, 0x00, 0xec, - 0xd1, 0x80, 0x70, 0x46, 0xb1, 0xbc, 0x70, 0x86, - 0x30, 0x81, 0xe8, 0x46, 0x15, 0x63, 0xea, 0x5e, - 0x05, 0x5e, 0xe8, 0x46, 0x01, 0x73, 0xd4, 0x3d, - 0xe0, 0x46, 0x00, 0xe0, 0xd0, 0x00, 0x70, 0xc0, - 0x10, 0xc1, 0x00, 0xe0, 0xd0, 0x08, 0x70, 0x00, - 0x10, 0x23, 0xea, 0x75, 0xc0, 0x83, 0x10, 0x9d, - 0x30, 0xc2, 0x10, 0x9f, 0x30, 0xc2, 0x00, 0xef, - 0xd0, 0xac, 0x70, 0x82, 0x10, 0xa3, 0xea, 0x75, - 0x10, 0xc1, 0xc0, 0x83, 0x30, 0x81, 0xe6, 0x7e, - 0xc0, 0x83, 0x20, 0x81, 0xf6, 0x7f, 0xd0, 0x40, - 0x30, 0x43, 0x0f, 0xc5, 0xc0, 0x43, 0x0f, 0xc5, - 0x00, 0xed, 0xd1, 0xa4, 0x72, 0x86, 0x15, 0xa3, - 0xee, 0x23, 0x15, 0xa1, 0xe6, 0x23, 0x08, 0x20, - 0xd0, 0x00, 0x5f, 0x00, 0xd8, 0xc4, 0x15, 0x63, - 0xe9, 0x7e, 0x48, 0xd5, 0x18, 0xde, 0x18, 0xe0, - 0xe9, 0xc2, 0x00, 0xed, 0xd1, 0xb4, 0x79, 0xc6, - 0x19, 0xe0, 0xe9, 0x8c, 0x00, 0xed, 0xd0, 0x3a, - 0x79, 0xc6, 0x69, 0xc0, 0xd9, 0xc0, 0x69, 0xc6, - 0x00, 0xed, 0xd0, 0x38, 0x79, 0x40, 0x19, 0x60, - 0xe9, 0x98, 0x00, 0x28, 0xd0, 0x24, 0x70, 0x40, - 0x02, 0x20, 0xd0, 0x80, 0x50, 0x42, 0x60, 0x40, - 0x15, 0xa3, 0xe9, 0x9f, 0x00, 0xec, 0xd1, 0xb8, - 0x79, 0xc6, 0x69, 0x46, 0xc9, 0x67, 0x00, 0xec, - 0xd9, 0xb4, 0x70, 0x66, 0x00, 0xec, 0xd1, 0xbc, - 0x70, 0x06, 0x10, 0x20, 0xed, 0xbe, 0x10, 0x60, - 0xe9, 0xc1, 0x00, 0xe0, 0xda, 0xa8, 0x7a, 0xaa, - 0xc0, 0x2a, 0x10, 0x1f, 0x00, 0x22, 0xd0, 0xa0, - 0x70, 0x82, 0x20, 0x6a, 0x00, 0x9f, 0xe9, 0xb5, - 0x20, 0x40, 0x19, 0x60, 0xf9, 0xb8, 0xc9, 0x41, - 0xb0, 0x48, 0x30, 0x65, 0xf5, 0xbd, 0xb0, 0x70, - 0xed, 0xbe, 0xd9, 0x40, 0x00, 0xed, 0xd1, 0xbc, - 0x69, 0x46, 0x69, 0x66, 0x12, 0xa4, 0xea, 0x21, - 0x00, 0xec, 0xd1, 0xbc, 0x73, 0xc6, 0x15, 0xa3, - 0xe9, 0xdf, 0x33, 0xe3, 0xe5, 0xd3, 0xed, 0xd2, - 0x63, 0xc6, 0x00, 0x21, 0xd1, 0xa8, 0x63, 0xc6, - 0x00, 0xed, 0xd1, 0xa0, 0x63, 0xc6, 0x15, 0xa1, - 0xf9, 0xdc, 0x12, 0xa3, 0xe5, 0xe3, 0xd3, 0xc2, - 0x00, 0xec, 0xd1, 0xbc, 0x63, 0xc6, 0xe1, 0xe3, - 0x12, 0xa3, 0xea, 0x21, 0xe1, 0xe3, 0x12, 0xa2, - 0xf6, 0x21, 0x13, 0xe0, 0xfa, 0x21, 0x00, 0xee, - 0xd1, 0x8c, 0x78, 0x06, 0xb1, 0xbc, 0x78, 0x46, - 0xb1, 0xbc, 0x78, 0x86, 0xd1, 0x88, 0x72, 0x46, - 0xd1, 0x84, 0x73, 0x06, 0x13, 0x20, 0xf9, 0xe3, - 0x00, 0x64, 0xd1, 0xa0, 0x70, 0x46, 0xd0, 0xa2, - 0x30, 0x81, 0xe9, 0xff, 0x10, 0x70, 0xea, 0x11, - 0x10, 0x6d, 0xea, 0x14, 0x10, 0x76, 0xea, 0x19, - 0x10, 0x7a, 0xea, 0x28, 0xe2, 0x3b, 0x18, 0xe0, - 0xea, 0x3b, 0x00, 0xed, 0xd1, 0x80, 0x70, 0x86, - 0xb0, 0x81, 0xd0, 0x3f, 0x40, 0x02, 0x10, 0x20, - 0xea, 0x0c, 0x60, 0x86, 0xf3, 0x8a, 0xe1, 0xe3, - 0xc0, 0x02, 0x10, 0x1a, 0x50, 0x80, 0x60, 0x86, - 0xe2, 0x3b, 0x15, 0xa3, 0xea, 0x21, 0xe2, 0xe9, - 0xd2, 0x80, 0x00, 0xed, 0xd1, 0xa4, 0x62, 0x86, - 0xe3, 0x0c, 0x00, 0xed, 0xd1, 0x88, 0xd0, 0x60, - 0x70, 0x06, 0x50, 0x40, 0x60, 0x46, 0x15, 0xa3, - 0xfb, 0x0c, 0xd5, 0x84, 0xe3, 0x0c, 0xd5, 0x00, - 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, - 0x00, 0xed, 0xd1, 0x88, 0xd0, 0x60, 0x70, 0x06, - 0x50, 0x40, 0x60, 0x46, 0x15, 0xa2, 0xe7, 0x0c, - 0xee, 0x21, 0x00, 0x21, 0xd1, 0x8c, 0x18, 0xe0, - 0xfa, 0x39, 0x70, 0x46, 0x10, 0x61, 0xea, 0x70, - 0xe2, 0x21, 0x65, 0x86, 0xe2, 0x21, 0x18, 0xe0, - 0xea, 0x70, 0xd1, 0x80, 0x73, 0x06, 0x15, 0xa2, - 0xee, 0x68, 0x00, 0x22, 0xd1, 0x80, 0x70, 0x46, - 0x6b, 0x06, 0xcb, 0x01, 0xb1, 0xb4, 0x70, 0x46, - 0x6a, 0xc6, 0xca, 0xc1, 0x00, 0x65, 0xd1, 0x98, - 0x70, 0x46, 0x10, 0x61, 0xfa, 0x50, 0x02, 0x41, - 0xc3, 0x21, 0xc7, 0xe0, 0x02, 0x50, 0xea, 0x56, - 0xc3, 0x20, 0xc7, 0xe1, 0xd1, 0x88, 0xd0, 0x01, - 0x02, 0x40, 0x62, 0x46, 0x0f, 0xef, 0xd0, 0x7f, - 0x30, 0x6f, 0xfa, 0x5f, 0xc3, 0x20, 0xc7, 0x4c, - 0xd0, 0x00, 0x00, 0x65, 0xd1, 0x98, 0x70, 0x46, - 0x60, 0x06, 0xb0, 0x41, 0x43, 0x01, 0xe2, 0x70, - 0xc3, 0x22, 0xc7, 0xcc, 0xc7, 0x60, 0xc7, 0xa1, - 0x02, 0x50, 0xea, 0x70, 0xc7, 0x61, 0xc7, 0xa0, - 0xdb, 0x80, 0xd1, 0x00, 0x00, 0xef, 0xd1, 0xa8, - 0x70, 0x46, 0x10, 0x60, 0xfa, 0x7a, 0x00, 0xe0, - 0xd1, 0x88, 0x70, 0x46, 0x00, 0x22, 0xd1, 0xb0, - 0x70, 0x86, 0x30, 0x81, 0xea, 0x82, 0x60, 0x46, - 0xd0, 0x20, 0xf3, 0x06, 0x10, 0x63, 0xea, 0x87, - 0x10, 0x64, 0xea, 0x87, 0xe2, 0x95, 0x00, 0xef, - 0xd1, 0x6c, 0x71, 0x45, 0xc0, 0x05, 0x30, 0x01, - 0xf6, 0x95, 0xdb, 0x82, 0xd1, 0x01, 0x10, 0x63, - 0xea, 0x95, 0xd1, 0x02, 0x11, 0x62, 0xea, 0x95, - 0xd1, 0x03, 0xd1, 0x8c, 0x61, 0x06, 0xdb, 0x40, - 0x00, 0xe0, 0xd0, 0x00, 0x71, 0x00, 0xc0, 0x84, - 0x10, 0x9c, 0xb0, 0x96, 0xfa, 0xa0, 0xb1, 0x38, - 0xb0, 0x96, 0xfa, 0xa3, 0xb1, 0x30, 0x00, 0x29, - 0xd1, 0x84, 0x00, 0x22, 0xd0, 0x74, 0x70, 0x86, - 0x70, 0xc1, 0x61, 0x06, 0x30, 0xc2, 0xea, 0xae, - 0x60, 0x81, 0xdb, 0x41, 0xb0, 0x3c, 0xb1, 0xbc, - 0xb0, 0x7c, 0x71, 0x00, 0x70, 0x86, 0x70, 0xc1, - 0x61, 0x06, 0x30, 0xc2, 0xea, 0xb9, 0x60, 0x81, - 0xdb, 0x41, 0x00, 0xee, 0xd1, 0xb4, 0x70, 0x06, - 0xb1, 0xbc, 0x70, 0x46, 0x30, 0x40, 0xea, 0xc2, - 0x60, 0x06, 0xdb, 0x41, 0x00, 0x23, 0xd0, 0x70, - 0x30, 0x81, 0xea, 0xc7, 0x30, 0x81, 0x50, 0x02, - 0xea, 0xca, 0xd0, 0x01, 0x00, 0x22, 0xd1, 0xbc, - 0x70, 0x86, 0x30, 0x80, 0xea, 0xd2, 0x60, 0x06, - 0xd0, 0x10, 0xf3, 0x06, 0x00, 0x22, 0xd1, 0xa4, - 0x71, 0x06, 0xd0, 0x01, 0x41, 0x00, 0x5b, 0x44, - 0x5b, 0x6e, 0x6b, 0x46, 0x00, 0x28, 0xd0, 0x70, - 0x70, 0x41, 0x10, 0x62, 0xfa, 0xe6, 0xd1, 0x84, - 0x70, 0x06, 0x10, 0x20, 0xfa, 0xdf, 0x00, 0x22, - 0xd0, 0x00, 0xf3, 0x06, 0x02, 0x7d, 0xdc, 0x62, - 0xe0, 0x46, 0x00, 0xed, 0xd1, 0x88, 0x71, 0x06, - 0x01, 0x1f, 0xfa, 0xfd, 0xd0, 0x41, 0x41, 0x01, - 0xd0, 0x62, 0x00, 0x65, 0xd0, 0x30, 0x70, 0x00, - 0x10, 0x21, 0xea, 0xfa, 0xee, 0xf9, 0x1a, 0xe1, - 0xfa, 0xfa, 0xd0, 0x52, 0x51, 0x01, 0x61, 0x06, - 0xe3, 0x0c, 0x18, 0xe0, 0xea, 0x70, 0xc7, 0x60, - 0xc7, 0xe1, 0x02, 0x50, 0xea, 0x70, 0xc7, 0x61, - 0xc7, 0xe0, 0xe2, 0x70, 0x00, 0x28, 0xdc, 0xa4, - 0x7c, 0x72, 0x5c, 0x40, 0x6c, 0x72, 0x0f, 0xc5, - 0x18, 0xe0, 0xeb, 0x82, 0xd9, 0x0d, 0x00, 0xee, - 0xd1, 0xa4, 0x70, 0x06, 0x10, 0x21, 0xfb, 0x7f, - 0xd9, 0x0c, 0x90, 0x06, 0x00, 0x10, 0xeb, 0x7f, - 0x00, 0x21, 0xd1, 0x88, 0x7a, 0x06, 0x1a, 0x20, - 0xeb, 0x7f, 0xd9, 0x00, 0x00, 0xed, 0xd1, 0xbc, - 0x79, 0x46, 0x19, 0x60, 0xeb, 0x7f, 0x39, 0x68, - 0xc0, 0xe5, 0xc0, 0x25, 0x10, 0x13, 0xb0, 0x0f, - 0xef, 0x7f, 0xb0, 0x22, 0xe7, 0x7f, 0x00, 0xe0, - 0xd1, 0xa8, 0x71, 0x46, 0x11, 0x5f, 0x29, 0x45, - 0x00, 0x22, 0xd0, 0x18, 0x00, 0x22, 0xd4, 0x54, - 0x00, 0x22, 0xd0, 0x9c, 0x70, 0x00, 0x74, 0x51, - 0x70, 0x42, 0x34, 0x40, 0xe7, 0x3c, 0xd0, 0x40, - 0x00, 0x22, 0xd4, 0x50, 0x74, 0x51, 0x34, 0x40, - 0xef, 0x42, 0x20, 0x45, 0x60, 0x42, 0x39, 0x41, - 0x19, 0x60, 0xf7, 0x5e, 0x00, 0x65, 0xd1, 0xa8, - 0x7a, 0x86, 0x29, 0x6a, 0x19, 0x59, 0xb9, 0x7e, - 0xf7, 0x75, 0x15, 0xa3, 0xf7, 0x57, 0x00, 0xed, - 0xd1, 0xac, 0x70, 0x06, 0x00, 0xed, 0xd1, 0xb0, - 0x70, 0x46, 0x30, 0x01, 0xfb, 0x7f, 0x00, 0x65, - 0xd1, 0x84, 0x70, 0x46, 0xb0, 0x7f, 0x60, 0x46, - 0xd5, 0x84, 0xe3, 0x7f, 0x11, 0x41, 0xd0, 0x4a, - 0x00, 0xed, 0xd1, 0xa0, 0x74, 0x46, 0xd0, 0x00, - 0x60, 0x06, 0x30, 0xc5, 0x39, 0x45, 0xe7, 0x6e, - 0x14, 0x60, 0xeb, 0x6b, 0xf3, 0x85, 0xb0, 0x41, - 0xef, 0x65, 0xe3, 0x71, 0x00, 0x66, 0xd1, 0xa0, - 0x60, 0xc6, 0x15, 0xa3, 0xeb, 0x7f, 0xf3, 0x85, - 0xe3, 0x7f, 0xd9, 0x01, 0x00, 0x66, 0xd1, 0xa0, - 0x70, 0x06, 0x30, 0x03, 0xe7, 0x7e, 0x10, 0x1d, - 0x10, 0x3b, 0xe7, 0x7f, 0x60, 0xc6, 0x00, 0x66, - 0xd1, 0xa4, 0x69, 0x06, 0x15, 0xa4, 0xea, 0x23, - 0xe2, 0x3b, 0x00, 0x65, 0xdd, 0x08, 0x7c, 0xf4, - 0xbc, 0xff, 0x6c, 0xf4, 0x00, 0xef, 0xdd, 0x10, - 0x7c, 0xf4, 0xbc, 0xfe, 0x6c, 0xf4, 0xc0, 0x3f, - 0xf1, 0x18, 0xf1, 0x16, 0xf1, 0x18, 0x00, 0x05, - 0x08, 0x20, 0xd0, 0x40, 0x5f, 0x01, 0x15, 0x63, - 0xe9, 0x77, 0x05, 0x5e, 0xea, 0xf2, 0x00, 0x22, - 0xd1, 0xa0, 0x6b, 0x06, 0x00, 0x22, 0xd1, 0xa8, - 0x6b, 0xc6, 0x00, 0x22, 0xd1, 0xac, 0x6a, 0xc6, - 0x00, 0xee, 0xd0, 0x0c, 0x00, 0xe6, 0xd1, 0x9c, - 0x70, 0x40, 0x30, 0x5f, 0xe9, 0x8d, 0xb0, 0x3c, - 0xb1, 0xb4, 0x70, 0x40, 0x30, 0x5f, 0xe9, 0x8d, - 0xb1, 0xb4, 0x00, 0xe6, 0xd0, 0x10, 0xd0, 0x83, - 0x70, 0x40, 0x60, 0x46, 0xb0, 0x3c, 0xb1, 0xbc, - 0xb0, 0x81, 0xed, 0x90, 0x00, 0xee, 0xd0, 0x0c, - 0x00, 0xe6, 0xd1, 0x9c, 0x70, 0x40, 0x30, 0x4c, - 0xe9, 0xa3, 0xb0, 0x3c, 0xb1, 0xb4, 0x70, 0x40, - 0x30, 0x4c, 0xe9, 0xa3, 0xb1, 0xb4, 0x00, 0xe6, - 0xd0, 0x00, 0x61, 0x80, 0x00, 0x21, 0xd1, 0xb4, - 0x70, 0x06, 0x10, 0x20, 0xe9, 0xae, 0xd0, 0x00, - 0x60, 0x06, 0xf1, 0x18, 0x00, 0x21, 0xd1, 0x8c, - 0x70, 0x46, 0x65, 0x86, 0xde, 0xc0, 0x00, 0xee, - 0xd0, 0x20, 0x70, 0x00, 0x10, 0x22, 0xfd, 0xb9, - 0xde, 0xc2, 0x00, 0x21, 0xd0, 0x04, 0x70, 0x00, - 0x10, 0x21, 0xe9, 0xc0, 0x15, 0xa3, 0xe9, 0xdc, - 0xd0, 0x02, 0x4c, 0x00, 0x10, 0x63, 0xe9, 0xc5, - 0xcc, 0x3b, 0xd0, 0x04, 0x63, 0x00, 0xd0, 0x00, - 0x70, 0x00, 0x30, 0x1f, 0xfa, 0xf2, 0xd0, 0x18, - 0x70, 0x00, 0x10, 0x20, 0xed, 0xc7, 0xd0, 0x04, - 0x70, 0x80, 0x10, 0xa0, 0xea, 0xf2, 0xf1, 0x16, - 0x00, 0x21, 0xd0, 0x9a, 0xc0, 0x39, 0x30, 0x1f, - 0x10, 0x18, 0x30, 0x02, 0xfd, 0xcf, 0xe2, 0xf2, - 0x00, 0xe0, 0xd9, 0x04, 0x79, 0x24, 0xb9, 0x38, - 0x19, 0x1c, 0xd0, 0x1e, 0x30, 0x24, 0xf5, 0xe5, - 0x29, 0x00, 0xdc, 0x88, 0x4c, 0xac, 0xd0, 0x02, - 0x40, 0x2c, 0x10, 0x02, 0x0c, 0x80, 0x10, 0x63, - 0xea, 0x5a, 0x15, 0x63, 0xf9, 0xf0, 0xf1, 0x18, - 0xdc, 0x1e, 0x1e, 0xe0, 0xe9, 0xf6, 0x15, 0x63, - 0xf9, 0xf6, 0xbe, 0xfc, 0xd0, 0x2c, 0x6c, 0x00, - 0xcc, 0x24, 0xd9, 0x40, 0x06, 0x50, 0xea, 0x0c, - 0xc0, 0x24, 0xb0, 0x0f, 0xfe, 0x0c, 0xd9, 0x74, - 0x79, 0x65, 0x19, 0x5f, 0x30, 0x25, 0xee, 0x05, - 0x29, 0x40, 0x19, 0x5f, 0x19, 0x41, 0xc0, 0x25, - 0x20, 0x30, 0x30, 0x24, 0xe6, 0x0c, 0x3c, 0x00, - 0xd0, 0x38, 0x69, 0x40, 0x1c, 0x05, 0xbc, 0x38, - 0x3c, 0x32, 0x5c, 0x3b, 0xbc, 0x3f, 0xd8, 0xec, - 0x78, 0xe3, 0xc0, 0xa3, 0x10, 0xaf, 0xf6, 0x19, - 0xd0, 0x8f, 0x02, 0xe4, 0xd8, 0x00, 0xd0, 0xc0, - 0x20, 0xe0, 0xb0, 0x81, 0xee, 0x1c, 0xd0, 0x30, - 0x60, 0xc0, 0x00, 0xab, 0xd0, 0x30, 0xc0, 0xc0, - 0xd8, 0x40, 0xc1, 0x23, 0xd4, 0x5e, 0x34, 0x63, - 0xdc, 0x40, 0x0c, 0x1f, 0xfa, 0x45, 0xc0, 0x65, - 0xb0, 0x41, 0xe6, 0x31, 0x68, 0x40, 0xb0, 0x3c, - 0xe2, 0x2c, 0xc0, 0xc0, 0x34, 0x65, 0xdc, 0x48, - 0x4c, 0x70, 0x1c, 0x5f, 0x20, 0xf1, 0x15, 0x63, - 0xfa, 0x46, 0xf2, 0x3e, 0xc1, 0x11, 0xc0, 0x83, - 0xf2, 0x8f, 0xe2, 0x59, 0xb1, 0x01, 0xe6, 0x44, - 0x68, 0x40, 0x28, 0x60, 0xb0, 0x3c, 0xe2, 0x3e, - 0x0f, 0xc5, 0xd9, 0x40, 0xb1, 0x0f, 0x11, 0x01, - 0x21, 0x25, 0xf2, 0x3e, 0xc1, 0x11, 0xb1, 0x01, - 0xe6, 0x59, 0x20, 0x31, 0x68, 0x40, 0x30, 0x31, - 0xb0, 0x3c, 0x28, 0x60, 0x70, 0x43, 0x30, 0x31, - 0x60, 0x40, 0x20, 0x31, 0xb0, 0x3c, 0xb0, 0xf8, - 0xe2, 0x4b, 0xe2, 0xe1, 0xd8, 0xec, 0x78, 0xe3, - 0x00, 0xa8, 0xd0, 0x80, 0x00, 0xa8, 0xd1, 0x44, - 0x00, 0xab, 0xd0, 0x30, 0xc0, 0xc0, 0x0c, 0x1f, - 0xfa, 0x9d, 0xd9, 0x78, 0x79, 0x65, 0x39, 0x25, - 0x19, 0x5f, 0xc9, 0xa5, 0x19, 0x83, 0x20, 0x26, - 0x20, 0xe6, 0x20, 0xa6, 0x21, 0x66, 0xc1, 0x23, - 0xc0, 0x64, 0x10, 0x5f, 0x10, 0x9d, 0x20, 0x81, - 0x31, 0x01, 0x30, 0x44, 0xf6, 0x78, 0x21, 0x01, - 0x30, 0x84, 0x10, 0x83, 0xc4, 0x64, 0x34, 0x63, - 0xdc, 0x48, 0x4c, 0x70, 0x1c, 0x5f, 0x15, 0x63, - 0xfa, 0xad, 0x20, 0xb1, 0xf2, 0x8f, 0xc1, 0x24, - 0x11, 0x1f, 0xc0, 0x85, 0x30, 0xb1, 0xf2, 0x8f, - 0xc1, 0x11, 0xc0, 0x83, 0x0c, 0x9d, 0xfa, 0x8d, - 0xb0, 0xbc, 0xf2, 0x8f, 0xe2, 0xd6, 0xb1, 0x01, - 0xe6, 0x44, 0x70, 0x42, 0xb0, 0xb8, 0x60, 0x40, - 0xb0, 0x3c, 0xe2, 0x8f, 0xb1, 0x01, 0xe6, 0x44, - 0x70, 0x42, 0xb0, 0xb8, 0x60, 0x40, 0xb0, 0x38, - 0xe2, 0x96, 0x00, 0xab, 0xd0, 0x34, 0xc1, 0x23, - 0xb1, 0x0f, 0xf2, 0x96, 0xd1, 0x1e, 0x31, 0x23, - 0x00, 0xa8, 0xd0, 0x84, 0xf2, 0x96, 0xd1, 0x0f, - 0x00, 0xa8, 0xd0, 0x84, 0xc0, 0x03, 0xf2, 0x96, - 0xe2, 0xd6, 0xd8, 0x82, 0x48, 0x95, 0x18, 0x81, - 0xb1, 0x01, 0xe6, 0xc3, 0x20, 0xb1, 0x70, 0x42, - 0x30, 0xb1, 0x20, 0x22, 0x60, 0x40, 0x30, 0x22, - 0xb0, 0xbc, 0xb0, 0x3c, 0x30, 0xb1, 0x70, 0x42, - 0x20, 0xb1, 0x30, 0x22, 0x60, 0x40, 0x20, 0x22, - 0xb0, 0xbc, 0xb0, 0x3c, 0xe2, 0xb0, 0xc1, 0x11, - 0xc0, 0x85, 0x30, 0xb1, 0x20, 0xe2, 0xb1, 0x01, - 0xe6, 0xd6, 0x70, 0x42, 0xb0, 0xb8, 0x20, 0x22, - 0x60, 0x40, 0x30, 0x22, 0xb0, 0x3c, 0x70, 0x43, - 0xb0, 0xf8, 0x30, 0x22, 0x60, 0x40, 0x20, 0x22, - 0xb0, 0x3c, 0xe2, 0xc7, 0xd0, 0x08, 0x5c, 0x00, - 0x3c, 0x32, 0xd0, 0x04, 0x40, 0x30, 0x3c, 0x00, - 0x15, 0x63, 0xfa, 0xe1, 0x1e, 0xe0, 0xea, 0xe1, - 0xbc, 0x3c, 0x00, 0xab, 0xd0, 0xb0, 0x00, 0xa8, - 0xd0, 0x00, 0x00, 0x20, 0xd1, 0x1e, 0x70, 0x42, - 0xb0, 0xbc, 0x60, 0x40, 0xb0, 0x3c, 0xb1, 0x01, - 0xee, 0xe7, 0xd0, 0x30, 0x30, 0x30, 0xee, 0xed, - 0xd0, 0x04, 0x63, 0x00, 0x08, 0x20, 0xd0, 0x40, - 0x3f, 0x01, 0x02, 0xba, 0xd0, 0x3c, 0xe0, 0x46, - 0x01, 0x46, 0xd0, 0x08, 0x94, 0x89, 0xd0, 0x8c, - 0x44, 0x82, 0x14, 0x9e, 0x30, 0x12, 0xd0, 0x88, - 0x10, 0x80, 0x00, 0xe8, 0xd1, 0x80, 0x70, 0xc6, - 0x00, 0x06, 0xa0, 0xbd, 0xa0, 0xfc, 0x80, 0x3f, - 0xb1, 0xbe, 0x60, 0xc6, 0x00, 0x06, 0x80, 0xa9, - 0x80, 0x3f, 0x80, 0x2a, 0x80, 0x3f, 0x00, 0x21, - 0xd0, 0x3c, 0x00, 0x0a, 0xb1, 0x82, 0xd0, 0x6b, - 0x70, 0x46, 0x00, 0x06, 0x80, 0x07, 0x01, 0x20, - 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, - 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, - 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x00, 0xa0, 0x29, - 0x80, 0x2b, 0x0c, 0x20, 0xd0, 0x00, 0x10, 0x08, - 0xa0, 0x27, 0x90, 0x09, 0xd0, 0x41, 0x40, 0x01, - 0xd0, 0x44, 0x40, 0x70, 0x20, 0x01, 0xa0, 0x27, - 0x80, 0x3f, 0x00, 0xc6, 0x15, 0x63, 0xe9, 0xae, - 0x05, 0x5e, 0xe9, 0xbe, 0x00, 0xe0, 0xd0, 0x40, - 0x70, 0x81, 0x10, 0x9c, 0xb0, 0x96, 0xf9, 0xb7, - 0x00, 0x21, 0xd0, 0x40, 0xe1, 0xbb, 0xb0, 0x96, - 0xf9, 0xbe, 0x00, 0x22, 0xd0, 0x40, 0x27, 0xc1, - 0x27, 0x41, 0x27, 0x81, 0x90, 0x83, 0x00, 0x64, - 0xd0, 0x10, 0x60, 0x80, 0x01, 0x46, 0x82, 0x34, - 0x80, 0x3f, 0x00, 0x64, 0xd0, 0x14, 0x67, 0x40, - 0x80, 0x34, 0x80, 0x3f, 0x00, 0xc6, 0x90, 0xae, - 0x00, 0x64, 0xd0, 0x18, 0x60, 0x80, 0x90, 0xa6, - 0x00, 0x64, 0xd0, 0x1c, 0x60, 0x80, 0x15, 0x63, - 0xe9, 0xe3, 0x0c, 0x1f, 0xe9, 0xe3, 0x05, 0x50, - 0xf9, 0xe3, 0x15, 0xa3, 0xf9, 0xe3, 0x90, 0x4d, - 0x10, 0x60, 0xe5, 0xdb, 0x00, 0x06, 0x05, 0x0d, - 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x15, 0xa3, - 0xf9, 0xfb, 0x00, 0x21, 0xd0, 0x04, 0x70, 0x00, - 0x10, 0x21, 0xe9, 0xfb, 0xd0, 0x38, 0x70, 0x00, - 0x15, 0x63, 0xe9, 0xef, 0x10, 0x1f, 0x15, 0x21, - 0xe5, 0xe0, 0xd0, 0x5e, 0x30, 0x54, 0xe5, 0xe0, - 0xc0, 0x40, 0xb0, 0x7f, 0x30, 0x54, 0xe9, 0xfb, - 0x0c, 0x09, 0x05, 0x0d, 0xe1, 0xef, 0xc0, 0x5f, - 0x10, 0x58, 0x10, 0x48, 0x00, 0xee, 0xd0, 0x8c, - 0xd0, 0xc3, 0x70, 0x02, 0x30, 0x01, 0xea, 0x10, - 0xb0, 0xbc, 0xb0, 0xc1, 0xee, 0x01, 0x00, 0x26, - 0xd0, 0x20, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, - 0x15, 0xa3, 0xea, 0x0f, 0xb0, 0x88, 0x77, 0xc2, - 0x80, 0x07, 0x09, 0x49, 0xd4, 0x00, 0xd4, 0x40, - 0xd4, 0x80, 0xd4, 0xc0, 0x00, 0x4d, 0xa0, 0x6c, - 0xd3, 0x80, 0xd0, 0xa1, 0x00, 0x88, 0xd0, 0xa9, - 0x00, 0x4d, 0x00, 0x50, 0xfa, 0x1a, 0x0c, 0x49, - 0x00, 0x8d, 0xc0, 0x42, 0x10, 0x60, 0xea, 0x2a, - 0xb0, 0x5e, 0xb0, 0x43, 0xfe, 0x34, 0xd0, 0x61, - 0x23, 0x81, 0xe2, 0x1f, 0x0c, 0x09, 0x05, 0x0d, - 0x15, 0x20, 0xfe, 0x31, 0xd0, 0x5f, 0x30, 0x54, - 0xee, 0x10, 0x03, 0xb3, 0xd8, 0x29, 0xe0, 0x46, - 0xc6, 0xd4, 0xb6, 0xc1, 0xe6, 0x31, 0xd0, 0x5e, - 0x30, 0x5b, 0xfe, 0x31, 0xd7, 0x00, 0xb7, 0x01, - 0xd3, 0x81, 0x00, 0x27, 0xd0, 0x10, 0xd0, 0x81, - 0x60, 0x80, 0x15, 0x63, 0xfa, 0x54, 0x00, 0x22, - 0xdc, 0xd8, 0x03, 0xf7, 0xd2, 0x10, 0xf0, 0x4a, - 0x15, 0xa3, 0xfa, 0x51, 0x02, 0xf6, 0xde, 0x26, - 0x0c, 0x10, 0xf8, 0x46, 0x02, 0xfb, 0xda, 0x22, - 0xe0, 0x46, 0x02, 0xf1, 0xd8, 0x2b, 0xe0, 0x46, - 0x00, 0x22, 0xdc, 0xd8, 0x03, 0xf9, 0xd2, 0x10, - 0xf0, 0x4a, 0x03, 0x34, 0xdc, 0x20, 0x15, 0xa3, - 0xe8, 0x46, 0x02, 0xff, 0xde, 0x27, 0xe0, 0x46, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xe0, 0xe1, 0xec, 0xe2, 0x12, - 0xe2, 0x14, 0xe1, 0xc7, 0xe1, 0x30, 0x30, 0x5a, - 0xe5, 0x8d, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, - 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x5e, 0x30, 0x5b, 0xfc, 0x11, - 0xc0, 0x39, 0x30, 0x31, 0x10, 0x12, 0x10, 0x20, - 0xe9, 0x88, 0x03, 0x10, 0xe9, 0x93, 0x0f, 0x19, - 0xf9, 0x8f, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xde, - 0xf9, 0xba, 0x03, 0xdf, 0xe9, 0x99, 0xd3, 0x40, - 0xca, 0x50, 0xd1, 0x42, 0xe2, 0xea, 0xc0, 0x50, - 0x10, 0x54, 0xc0, 0x90, 0x10, 0x8c, 0x10, 0x92, - 0x10, 0xe0, 0xe5, 0xa8, 0xc0, 0x01, 0x10, 0x01, - 0x20, 0x40, 0xc0, 0x02, 0x10, 0x01, 0x20, 0x80, - 0x10, 0x60, 0xfd, 0xab, 0xb0, 0x7f, 0x10, 0xa0, - 0xfd, 0xae, 0xb0, 0xbf, 0x10, 0x5f, 0x10, 0x9f, - 0x00, 0xef, 0xd0, 0x3e, 0x20, 0x52, 0x20, 0x83, - 0x20, 0x93, 0x10, 0x4c, 0x10, 0x82, 0x40, 0x80, - 0x50, 0x42, 0x0f, 0xc5, 0xcb, 0xaa, 0xcb, 0xeb, - 0xca, 0x50, 0xd0, 0xc0, 0xb0, 0xc1, 0xf1, 0x9b, - 0xcb, 0x01, 0xd0, 0xc1, 0xf1, 0x9b, 0xcb, 0x41, - 0xba, 0x7f, 0xbb, 0x3f, 0xe2, 0xea, 0xcc, 0x5b, - 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, - 0x2c, 0x40, 0x1c, 0x48, 0xcc, 0xb1, 0x1c, 0x9f, - 0x06, 0xd0, 0xe9, 0xd5, 0x01, 0x69, 0xd0, 0x20, - 0x3c, 0x80, 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, - 0x2c, 0x40, 0x2c, 0x80, 0x01, 0x74, 0xd6, 0x00, - 0x2c, 0x80, 0xde, 0x84, 0xde, 0xc4, 0xe3, 0x1e, - 0xd3, 0xc2, 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xe5, - 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xec, 0x80, 0x07, - 0xd4, 0x00, 0xc4, 0x50, 0xd3, 0x08, 0xe2, 0x95, - 0xd0, 0x71, 0x20, 0x56, 0x00, 0x48, 0xd1, 0x8c, - 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xfa, 0x06, 0x5e, - 0xfa, 0x03, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, - 0xf9, 0xfa, 0xd3, 0xc4, 0x06, 0x5e, 0xfa, 0x03, - 0xd0, 0x43, 0x40, 0x4c, 0xea, 0x03, 0x08, 0x49, - 0x00, 0x8d, 0x10, 0x87, 0x53, 0x02, 0x01, 0x46, - 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xea, 0x0a, - 0x09, 0x49, 0x00, 0x0d, 0xd0, 0x9f, 0x40, 0x02, - 0xb0, 0x20, 0x03, 0x19, 0xea, 0x10, 0xb0, 0x20, - 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x80, - 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, - 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xd3, 0xe1, 0xdc, 0xe2, 0x00, - 0xe2, 0x02, 0xe1, 0xac, 0xe1, 0x30, 0x30, 0x5a, - 0xe5, 0x91, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, - 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x5e, 0x30, 0x5b, 0xfc, 0x11, - 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x8e, - 0xbc, 0x10, 0xd0, 0x30, 0xc0, 0x40, 0x30, 0x70, - 0xed, 0x8e, 0x03, 0x10, 0xe9, 0x97, 0x0f, 0x19, - 0xf9, 0x93, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xdf, - 0xe9, 0xa1, 0xd3, 0x40, 0xca, 0x50, 0xcb, 0x52, - 0x03, 0x1d, 0xf9, 0xa8, 0xca, 0x12, 0xca, 0x52, - 0xe1, 0xa5, 0x03, 0x1d, 0xf9, 0xa8, 0xca, 0x12, - 0xca, 0x53, 0xca, 0xae, 0xca, 0xef, 0xb1, 0x7e, - 0x03, 0x1e, 0xfa, 0xea, 0xb1, 0x7e, 0xe2, 0xea, - 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, - 0x17, 0x20, 0xf9, 0xd2, 0x00, 0xa8, 0xd0, 0x00, - 0xcc, 0x5b, 0x1c, 0x5f, 0x1c, 0x43, 0x20, 0x31, - 0x7c, 0x40, 0xb0, 0x3c, 0x7e, 0x80, 0xcc, 0xb1, - 0xce, 0xfa, 0x1c, 0x9f, 0x1e, 0xdf, 0x01, 0x69, - 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xc4, 0x3c, 0x80, - 0x0e, 0xd9, 0xe9, 0xc7, 0x3e, 0xc0, 0x3e, 0xf2, - 0x3e, 0xb1, 0xd0, 0x01, 0x40, 0x1b, 0x10, 0x05, - 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0xd0, 0x30, - 0x70, 0x00, 0x2c, 0x80, 0xe3, 0x1e, 0xd3, 0xc2, - 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xd8, 0xf2, 0x32, - 0xb3, 0x81, 0xe9, 0xdc, 0x80, 0x07, 0xe2, 0x95, - 0x0d, 0x09, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, - 0xe9, 0xe8, 0x06, 0x5e, 0xf9, 0xf1, 0x08, 0x89, - 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xe8, 0xd3, 0xc4, - 0x06, 0x5e, 0xf9, 0xf1, 0xd0, 0x43, 0x40, 0x4c, - 0xe9, 0xf1, 0x08, 0x49, 0x00, 0x8d, 0x10, 0x87, - 0x53, 0x02, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, - 0x03, 0x1c, 0xe9, 0xf8, 0x09, 0x49, 0x00, 0x0d, - 0xd0, 0x9f, 0x40, 0x02, 0xb0, 0x20, 0x03, 0x19, - 0xe9, 0xfe, 0xb0, 0x20, 0xa0, 0x2c, 0xe2, 0x5b, - 0x06, 0x5f, 0xfa, 0x80, 0xd4, 0x00, 0xc4, 0x50, - 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xc1, 0xe1, 0xca, 0xe1, 0xee, - 0xe1, 0xf0, 0xe1, 0xa8, 0xe1, 0x30, 0x30, 0x5a, - 0xe5, 0x8d, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, - 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x5e, 0x30, 0x5b, 0xfc, 0x11, - 0xc0, 0x39, 0x30, 0x31, 0x10, 0x12, 0x10, 0x20, - 0xe9, 0x88, 0x03, 0x10, 0xe9, 0x93, 0x0f, 0x19, - 0xf9, 0x8f, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xdf, - 0xe9, 0x9d, 0xd3, 0x40, 0xca, 0x50, 0xcb, 0x52, - 0x03, 0x1d, 0xf9, 0xa4, 0xca, 0x12, 0xca, 0x52, - 0xe1, 0xa1, 0x03, 0x1d, 0xf9, 0xa4, 0xca, 0x12, - 0xca, 0x53, 0xca, 0xae, 0xca, 0xef, 0xb1, 0x7e, - 0x03, 0x1e, 0xfa, 0xea, 0xb1, 0x7e, 0xe2, 0xea, - 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, - 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x48, 0xcc, 0xb1, - 0x1c, 0x9f, 0x06, 0xd0, 0xe9, 0xb6, 0x01, 0x69, - 0xd0, 0x20, 0x3c, 0x80, 0xc0, 0x1c, 0x10, 0x08, - 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0xd0, 0x30, - 0x70, 0x00, 0x2c, 0x80, 0xde, 0x84, 0xde, 0xc4, - 0xe3, 0x1e, 0xd3, 0xc2, 0xf2, 0xd3, 0x13, 0xa0, - 0xed, 0xc6, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xca, - 0x80, 0x07, 0xe2, 0x95, 0x0d, 0x09, 0xd1, 0x8c, - 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xd6, 0x06, 0x5e, - 0xf9, 0xdf, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, - 0xf9, 0xd6, 0xd3, 0xc4, 0x06, 0x5e, 0xf9, 0xdf, - 0xd0, 0x43, 0x40, 0x4c, 0xe9, 0xdf, 0x08, 0x49, - 0x00, 0x8d, 0x10, 0x87, 0x53, 0x02, 0x01, 0x46, - 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xe6, - 0x09, 0x49, 0x00, 0x0d, 0xd0, 0x9f, 0x40, 0x02, - 0xb0, 0x20, 0x03, 0x19, 0xe9, 0xec, 0xb0, 0x20, - 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x80, - 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, - 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xdb, 0xe1, 0xe9, 0xe2, 0x00, - 0xe2, 0x02, 0xe1, 0xc3, 0xe1, 0x65, 0x30, 0x5a, - 0xe5, 0x8d, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, - 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x4f, 0x30, 0x5b, 0xfc, 0x11, - 0xc0, 0x39, 0x30, 0x31, 0x10, 0x11, 0x10, 0x20, - 0xe9, 0x88, 0x03, 0x10, 0xe9, 0x93, 0x0f, 0x19, - 0xf9, 0x8f, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xd0, - 0xf9, 0x98, 0xca, 0x50, 0x03, 0xde, 0xf9, 0x9a, - 0xd1, 0x42, 0xe2, 0xea, 0xcb, 0xaa, 0xcb, 0xeb, - 0xc0, 0x50, 0x10, 0x54, 0xc0, 0x90, 0x10, 0x8c, - 0x10, 0x92, 0xd0, 0xc1, 0x05, 0x50, 0xe9, 0xa5, - 0xb0, 0xc2, 0x10, 0x60, 0xfd, 0xa8, 0xb0, 0x7f, - 0x10, 0xa0, 0xfd, 0xab, 0xb0, 0xbf, 0x10, 0x5f, - 0x10, 0x9f, 0x00, 0xef, 0xd0, 0x3e, 0x20, 0x52, - 0x20, 0x83, 0x20, 0x93, 0x10, 0x4c, 0x10, 0x82, - 0x40, 0x80, 0x50, 0x42, 0xd0, 0x81, 0x14, 0x1f, - 0x14, 0x01, 0x05, 0x50, 0xe9, 0xbd, 0x50, 0x42, - 0xe1, 0xbe, 0x54, 0x02, 0xca, 0x10, 0xca, 0x50, - 0xcb, 0x01, 0xcb, 0x41, 0xe2, 0xea, 0xcc, 0x5b, - 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, - 0x2c, 0x40, 0x1c, 0x49, 0xcc, 0xb1, 0x1c, 0x9f, - 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, 0x05, 0x50, - 0xf9, 0xd2, 0xb0, 0x3c, 0x2c, 0x40, 0x2c, 0x80, - 0x01, 0x74, 0xd6, 0x00, 0x2c, 0x80, 0x02, 0xe4, - 0xde, 0x80, 0xde, 0xc1, 0xe3, 0x1e, 0xd3, 0xc0, - 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xe0, 0xf2, 0x32, - 0xb3, 0x81, 0xe9, 0xe9, 0x80, 0x07, 0xd4, 0x02, - 0x44, 0x15, 0x14, 0x1f, 0xc4, 0x50, 0xd3, 0x08, - 0xe2, 0x95, 0xd0, 0x71, 0x20, 0x56, 0x00, 0x48, - 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xf7, - 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xf6, - 0xd3, 0xc4, 0xe1, 0xf7, 0xb3, 0xc1, 0x01, 0x46, - 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xfe, - 0x09, 0x49, 0x00, 0x0d, 0xa0, 0x2c, 0xe2, 0x5b, - 0x06, 0x5f, 0xfa, 0x7f, 0xd4, 0x02, 0x44, 0x15, - 0x14, 0x1f, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, - 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xc9, 0xe1, 0xd2, 0xe1, 0xe7, - 0xe1, 0xe9, 0xe1, 0xab, 0xe1, 0x30, 0x30, 0x5a, - 0xe5, 0x91, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, - 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, - 0xb6, 0xff, 0xd0, 0x4f, 0x30, 0x5b, 0xfc, 0x11, - 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x8e, - 0xbc, 0x10, 0xd0, 0x20, 0xc0, 0x40, 0x30, 0x70, - 0xed, 0x8e, 0x03, 0x10, 0xe9, 0x97, 0x0f, 0x19, - 0xf9, 0x93, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xd0, - 0xf9, 0xa0, 0xca, 0x50, 0xcb, 0x52, 0x03, 0x1d, - 0xf9, 0xa7, 0xca, 0x12, 0xca, 0x52, 0xe1, 0xa4, - 0x03, 0x1d, 0xf9, 0xa7, 0xca, 0x12, 0xca, 0x53, - 0xca, 0xae, 0xca, 0xef, 0xb1, 0x7e, 0x03, 0x1e, - 0xfa, 0xea, 0xb1, 0x7e, 0xe2, 0xea, 0x00, 0x24, - 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, - 0xf9, 0xc8, 0x00, 0x2a, 0xd0, 0x00, 0x20, 0x1b, - 0x20, 0x1b, 0x05, 0x50, 0xf9, 0xb8, 0xb0, 0x3f, - 0x10, 0x02, 0x7c, 0x40, 0xcc, 0xb1, 0x1c, 0x9f, - 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xc1, - 0x3c, 0x80, 0xde, 0xa0, 0x2c, 0x5f, 0x2c, 0x9f, - 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, 0xde, 0xc1, - 0xe3, 0x1e, 0xd3, 0xc0, 0xf2, 0xd3, 0x13, 0xa0, - 0xed, 0xce, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xd2, - 0x80, 0x07, 0xe2, 0x95, 0x0d, 0x09, 0xd1, 0x8c, - 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xde, 0x08, 0x89, - 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xdd, 0xd3, 0xc4, - 0xe1, 0xde, 0xb3, 0xc1, 0x01, 0x46, 0x90, 0x2c, - 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xe5, 0x09, 0x49, - 0x00, 0x0d, 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, - 0xfa, 0x7f, 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, - 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xa3, 0xc0, 0x00, 0xc0, 0x00, - 0xc0, 0x00, 0xe1, 0x8a, 0xe1, 0x30, 0x30, 0x5a, - 0xe5, 0x87, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x5e, - 0x30, 0x5b, 0xfd, 0xb4, 0xc0, 0x39, 0x30, 0x31, - 0x10, 0x12, 0x10, 0x20, 0xe9, 0x82, 0xd1, 0x42, - 0xd3, 0x40, 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, - 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, - 0x1c, 0x48, 0xcc, 0xb1, 0x1c, 0x9f, 0x06, 0xd0, - 0xe9, 0x98, 0x01, 0x69, 0xd0, 0x20, 0x3c, 0x80, - 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, 0x2c, 0x40, - 0x2c, 0x80, 0x01, 0x74, 0xd6, 0x00, 0x2c, 0x80, - 0xde, 0x84, 0xde, 0xc4, 0xe3, 0x1e, 0xf2, 0xd3, - 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xc8, - 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, - 0xe9, 0xbf, 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, - 0x10, 0x5c, 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xc8, - 0x0f, 0x17, 0xf9, 0xb4, 0x0f, 0x49, 0xf2, 0xd3, - 0x0f, 0x19, 0xf9, 0xb8, 0xdf, 0x00, 0x00, 0x06, - 0x03, 0xb3, 0xd8, 0x29, 0xe0, 0x46, 0xc0, 0x5b, - 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xc8, 0x0f, 0x17, - 0xf9, 0xc3, 0x02, 0xf1, 0xd8, 0x2b, 0xe0, 0x46, - 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xb5, 0xc0, 0x00, 0xc0, 0x00, - 0xc0, 0x00, 0xe1, 0x8e, 0xe1, 0x30, 0x30, 0x5a, - 0xe5, 0x8b, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x5e, - 0x30, 0x5b, 0xfd, 0xc6, 0xbc, 0x10, 0xd0, 0x10, - 0x0c, 0x1e, 0xf9, 0x88, 0xbc, 0x10, 0xd0, 0x30, - 0xc0, 0x40, 0x30, 0x70, 0xed, 0x88, 0xd1, 0x42, - 0xd3, 0x40, 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, - 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xb4, - 0x00, 0xa8, 0xd0, 0x00, 0xcc, 0x5b, 0x1c, 0x5f, - 0x1c, 0x43, 0x20, 0x31, 0x7c, 0x40, 0xb0, 0x3c, - 0x7e, 0x80, 0xcc, 0xb1, 0xce, 0xfa, 0x1c, 0x9f, - 0x1e, 0xdf, 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, - 0xe9, 0xa6, 0x3c, 0x80, 0x0e, 0xd9, 0xe9, 0xa9, - 0x3e, 0xc0, 0x3e, 0xf2, 0x3e, 0xb1, 0xd0, 0x01, - 0x40, 0x1b, 0x10, 0x05, 0x20, 0x1f, 0x2c, 0x40, - 0x2c, 0x80, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, - 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, - 0x30, 0x5a, 0xe5, 0xda, 0x00, 0x26, 0xd0, 0x00, - 0x70, 0x00, 0x10, 0x20, 0xe9, 0xd1, 0x00, 0xe0, - 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5c, 0x30, 0x5b, - 0xb0, 0x41, 0xed, 0xda, 0x0f, 0x17, 0xf9, 0xc6, - 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xca, - 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb3, 0xd8, 0x29, - 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, - 0xe5, 0xda, 0x0f, 0x17, 0xf9, 0xd5, 0x02, 0xf6, - 0xde, 0x26, 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, - 0xe2, 0x95, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xa2, 0xc0, 0x00, 0xc0, 0x00, - 0xc0, 0x00, 0xe1, 0x8a, 0xe1, 0x65, 0x30, 0x5a, - 0xe5, 0x87, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x4f, - 0x30, 0x5b, 0xfd, 0xb3, 0xc0, 0x39, 0x30, 0x31, - 0x10, 0x11, 0x10, 0x20, 0xe9, 0x82, 0xd1, 0x42, - 0xd3, 0x41, 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, - 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, - 0x1c, 0x49, 0xcc, 0xb1, 0x1c, 0x9f, 0xc0, 0x1c, - 0x10, 0x08, 0x20, 0x1f, 0x05, 0x50, 0xf9, 0x99, - 0xb0, 0x3c, 0x2c, 0x40, 0x2c, 0x80, 0x01, 0x74, - 0xd6, 0x00, 0x2c, 0x80, 0x02, 0xe4, 0xde, 0x80, - 0xde, 0xc1, 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, - 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xc7, 0x00, 0x26, - 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, 0xe9, 0xbe, - 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5b, - 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xc7, 0x0f, 0x17, - 0xf9, 0xb3, 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, - 0xf9, 0xb7, 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb3, - 0xd8, 0x29, 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, - 0xb0, 0x7e, 0xe5, 0xc7, 0x0f, 0x17, 0xf9, 0xc2, - 0x02, 0xff, 0xde, 0x27, 0xe0, 0x46, 0xd3, 0x08, - 0xd3, 0xc0, 0xe2, 0x95, 0x50, 0x00, 0x50, 0x00, - 0x03, 0x75, 0xd2, 0x73, 0x00, 0x24, 0xdc, 0xd8, - 0xf0, 0x4a, 0xe1, 0xac, 0xc0, 0x00, 0xc0, 0x00, - 0xc0, 0x00, 0xe1, 0x8e, 0xe1, 0x30, 0x30, 0x5a, - 0xe5, 0x8b, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x4f, - 0x30, 0x5b, 0xfd, 0xbd, 0xbc, 0x10, 0xd0, 0x10, - 0x0c, 0x1e, 0xf9, 0x88, 0xbc, 0x10, 0xd0, 0x20, - 0xc0, 0x40, 0x30, 0x70, 0xed, 0x88, 0xd1, 0x42, - 0xd3, 0x41, 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, - 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xab, - 0x00, 0x2a, 0xd0, 0x00, 0x20, 0x1b, 0x20, 0x1b, - 0x05, 0x50, 0xf9, 0x9b, 0xb0, 0x3f, 0x10, 0x02, - 0x7c, 0x40, 0xcc, 0xb1, 0x1c, 0x9f, 0x01, 0x69, - 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xa4, 0x3c, 0x80, - 0xde, 0xa0, 0x2c, 0x5f, 0x2c, 0x9f, 0xd0, 0x30, - 0x70, 0x00, 0x2c, 0x80, 0xde, 0xc1, 0xe3, 0x1e, - 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, - 0xe5, 0xd1, 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, - 0x10, 0x20, 0xe9, 0xc8, 0x00, 0xe0, 0xd0, 0x44, - 0x70, 0x41, 0x10, 0x5b, 0x30, 0x5b, 0xb0, 0x41, - 0xed, 0xd1, 0x0f, 0x17, 0xf9, 0xbd, 0x0f, 0x49, - 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xc1, 0xdf, 0x00, - 0x00, 0x06, 0x03, 0xb3, 0xd8, 0x29, 0xe0, 0x46, - 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xd1, - 0x0f, 0x17, 0xf9, 0xcc, 0x03, 0x34, 0xdc, 0x20, - 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, - 0xd0, 0x61, 0x23, 0x81, 0x0c, 0x49, 0xd0, 0x61, - 0x00, 0x8d, 0x10, 0xa0, 0xea, 0x3b, 0x30, 0x42, - 0xe6, 0x30, 0x23, 0x82, 0x0f, 0xc5, 0x0c, 0x09, - 0x05, 0x0d, 0x15, 0x20, 0xfe, 0x45, 0xd0, 0x5f, - 0x15, 0x63, 0xea, 0x43, 0xd0, 0x50, 0x30, 0x54, - 0xee, 0x4a, 0x0f, 0x17, 0xfa, 0x45, 0x03, 0xb3, - 0xd8, 0x29, 0xe0, 0x46, 0x80, 0x07, 0x09, 0x49, - 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, - 0x00, 0x4d, 0xa0, 0x6c, 0xd0, 0xa1, 0x00, 0x88, - 0xd0, 0xa9, 0x00, 0x4d, 0x00, 0x50, 0xfa, 0x53, - 0xf2, 0x32, 0xd3, 0x80, 0xe1, 0x76, 0xd1, 0xc2, - 0x41, 0xcf, 0x11, 0xdf, 0xd0, 0x41, 0x01, 0xc1, - 0x00, 0xef, 0xd0, 0xbe, 0x03, 0x10, 0xf9, 0x77, - 0x80, 0x07, 0x21, 0x96, 0x11, 0xa2, 0xe9, 0x78, - 0x03, 0x1d, 0xea, 0x73, 0xc0, 0xd7, 0xc2, 0x90, - 0xf2, 0xa4, 0xc4, 0x0a, 0x03, 0xd0, 0xea, 0x72, - 0xc2, 0x91, 0xf2, 0xa4, 0xc4, 0x4a, 0x03, 0x1e, - 0xea, 0x8d, 0xc0, 0xd8, 0xc2, 0x92, 0xf2, 0xa4, - 0xc4, 0x8a, 0x03, 0xd0, 0xea, 0x7d, 0xc2, 0x93, - 0xf2, 0xa4, 0xc4, 0xca, 0xe2, 0x8d, 0xd3, 0xc0, - 0xc0, 0xd7, 0xc2, 0x90, 0xf2, 0xa4, 0xc4, 0x0a, - 0x03, 0xd0, 0xea, 0x88, 0xc2, 0x91, 0xf2, 0xa4, - 0xc4, 0x4a, 0x08, 0x49, 0x00, 0x4d, 0x10, 0x61, - 0xf8, 0x11, 0x03, 0x1f, 0xea, 0x93, 0x0d, 0xc9, - 0x00, 0x4d, 0xd0, 0x1a, 0xe2, 0x98, 0x03, 0x10, - 0xfa, 0x97, 0xd0, 0x1d, 0xe2, 0x98, 0xd0, 0x18, - 0x0f, 0x16, 0xfa, 0x98, 0xd0, 0x4c, 0x40, 0x4c, - 0x10, 0x6c, 0xea, 0xa2, 0x03, 0xde, 0xfa, 0xa2, - 0x0f, 0x12, 0xfa, 0xa0, 0x00, 0x08, 0xe2, 0xd9, - 0xd2, 0x00, 0x13, 0xe1, 0xee, 0xa9, 0x08, 0x49, - 0x02, 0x0d, 0x00, 0xc8, 0xc2, 0xca, 0x12, 0x94, - 0xd0, 0x1f, 0x30, 0x07, 0x12, 0xc0, 0xc2, 0x43, - 0x12, 0x5a, 0x00, 0x0d, 0x03, 0xde, 0xea, 0xb6, - 0x0e, 0xc9, 0x04, 0x8d, 0x02, 0x48, 0x22, 0x80, - 0x12, 0x88, 0xd0, 0x0b, 0x30, 0x03, 0x12, 0x80, - 0xd0, 0x19, 0x20, 0x03, 0x12, 0x80, 0x00, 0x0d, - 0x22, 0xc0, 0x12, 0xc8, 0xd0, 0x0b, 0x30, 0x09, - 0x12, 0xc0, 0x12, 0xd8, 0xd0, 0x16, 0x20, 0x09, - 0x20, 0x07, 0x12, 0xc0, 0x42, 0xc2, 0x22, 0x8b, - 0x22, 0x88, 0x03, 0xde, 0xea, 0xd2, 0x0e, 0xc9, - 0xc4, 0x4a, 0x04, 0xcd, 0x0f, 0xc5, 0x01, 0x46, - 0x90, 0x4d, 0x00, 0xc6, 0x10, 0x60, 0xe6, 0xd3, - 0x0f, 0xc5, 0x01, 0x74, 0xd6, 0x00, 0xca, 0x9d, - 0xcb, 0x9e, 0xca, 0xea, 0xcb, 0xee, 0x2a, 0xc0, - 0x2b, 0xc0, 0xca, 0x10, 0xca, 0x51, 0xcb, 0x12, - 0xcb, 0x53, 0xd1, 0x40, 0xd3, 0x41, 0xb7, 0x3f, - 0xc0, 0x5c, 0xe1, 0x7b, 0xd0, 0xc0, 0xc1, 0x28, - 0xc2, 0x2a, 0xc2, 0xab, 0xf1, 0x7a, 0x0f, 0x17, - 0xfa, 0xef, 0xcc, 0xe8, 0xcd, 0x29, 0xcd, 0x6c, - 0xcd, 0xad, 0xc8, 0x08, 0xc8, 0x49, 0xca, 0x0a, - 0xca, 0x4b, 0xf3, 0x31, 0xd0, 0xc1, 0xc1, 0x34, - 0xc2, 0x2a, 0xc2, 0xab, 0xf1, 0x7a, 0x00, 0x28, - 0xd9, 0xc0, 0xc8, 0x88, 0xc8, 0xc9, 0xa9, 0xf8, - 0xca, 0x8a, 0xca, 0xcb, 0x11, 0x62, 0xe9, 0x79, - 0xd0, 0xc0, 0xc1, 0x35, 0xc2, 0x2e, 0xc2, 0xaf, - 0xf1, 0x7a, 0xc9, 0x08, 0xc9, 0x49, 0xa9, 0xf8, - 0xcb, 0x0a, 0xcb, 0x4b, 0xd0, 0xc1, 0xc1, 0x36, - 0xc2, 0x2e, 0xc2, 0xaf, 0xf1, 0x7a, 0xc0, 0x27, - 0xc9, 0x88, 0xc9, 0xc9, 0xa0, 0x38, 0xcb, 0x8a, - 0xcb, 0xcb, 0xe1, 0x79, 0x5f, 0x0d, 0x07, 0x7d, - 0xde, 0x07, 0x11, 0x5e, 0x30, 0x05, 0xcd, 0xc0, - 0x00, 0x28, 0xd0, 0x00, 0xa0, 0x38, 0x11, 0x61, - 0xf9, 0x75, 0x00, 0xe2, 0xd0, 0x00, 0x0f, 0x1d, - 0xeb, 0x29, 0x00, 0x2d, 0xdf, 0x4b, 0xf3, 0x3f, - 0xe1, 0x75, 0x04, 0xeb, 0xd0, 0x00, 0x11, 0x62, - 0xeb, 0x36, 0xb0, 0x20, 0x0f, 0x19, 0xfb, 0x36, - 0xac, 0xe0, 0x01, 0xa4, 0xde, 0x00, 0x5e, 0x0d, - 0x00, 0x2d, 0xdf, 0x7a, 0xdd, 0xc0, 0xd8, 0x80, - 0xd9, 0x00, 0xd9, 0x80, 0x5f, 0x00, 0x01, 0x46, - 0x00, 0x28, 0xd0, 0x01, 0x00, 0x06, 0xa0, 0x37, - 0x80, 0x3f, 0x00, 0xc6, 0x0f, 0xc5, 0xad, 0xda, - 0xc6, 0xb1, 0xd0, 0x01, 0x01, 0xa3, 0xde, 0x1d, - 0x40, 0x30, 0x3e, 0x00, 0x80, 0x3f, 0x0e, 0x0a, - 0x66, 0xda, 0xc8, 0x28, 0xc8, 0x69, 0xc8, 0xaa, - 0xc8, 0xeb, 0x0c, 0x1e, 0xfb, 0x68, 0x26, 0xba, - 0x07, 0x7d, 0xdc, 0x00, 0x1d, 0xcf, 0x1d, 0xd1, - 0x5d, 0xc0, 0x00, 0x2d, 0xdf, 0x64, 0x0f, 0x87, - 0xad, 0xda, 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, - 0xc9, 0x2c, 0xc9, 0x6d, 0xc9, 0xae, 0xc9, 0xef, - 0x0f, 0x2f, 0xd0, 0x37, 0x4f, 0x00, 0x0f, 0x1a, - 0xeb, 0xbe, 0x01, 0xa4, 0xde, 0x20, 0xd0, 0x01, - 0x40, 0x3c, 0x2e, 0x00, 0x00, 0x2d, 0xdf, 0x7a, - 0xac, 0xe0, 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe0, - 0xbf, 0x79, 0xbe, 0x3c, 0x0f, 0x1b, 0xeb, 0x9e, - 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe1, 0xbf, 0x79, - 0xbe, 0x34, 0x18, 0xa0, 0xeb, 0xb9, 0x0f, 0x87, - 0xad, 0x20, 0x80, 0x3f, 0x0e, 0x0a, 0x76, 0xe2, - 0xbf, 0x79, 0xbe, 0x3c, 0x0f, 0x87, 0x0e, 0x0a, - 0x76, 0xe3, 0x0f, 0x1b, 0xeb, 0xb3, 0xbf, 0x77, - 0xbe, 0x0c, 0x19, 0x20, 0xeb, 0xb9, 0x0f, 0x87, - 0xad, 0x60, 0x80, 0x3f, 0x0e, 0x0a, 0x76, 0xe4, - 0xbe, 0x3c, 0xbf, 0x75, 0x0f, 0x15, 0xf8, 0x1c, - 0x1f, 0x0a, 0x1f, 0x16, 0x0f, 0x87, 0x0e, 0x0a, - 0x76, 0xe5, 0xbf, 0x79, 0xbe, 0x34, 0x19, 0xa0, - 0xeb, 0xb9, 0x0f, 0x87, 0xad, 0xa0, 0x80, 0x3f, - 0x0e, 0x0a, 0x76, 0xe6, 0xbe, 0x3c, 0xbf, 0x79, - 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe7, 0x0f, 0x15, - 0xeb, 0xbe, 0x00, 0x2f, 0xdf, 0x72, 0x1d, 0xe0, - 0xf8, 0x1c, 0x00, 0x28, 0xd0, 0x01, 0xa0, 0x38, - 0x80, 0x3f, 0x0f, 0x87, 0xd0, 0x01, 0x4d, 0xc0, - 0x1f, 0x0f, 0x1f, 0x11, 0x00, 0x2f, 0xdf, 0x76, - 0xc6, 0xb2, 0x03, 0x7d, 0xde, 0x0e, 0x01, 0xa3, - 0xde, 0x2d, 0x5d, 0xc0, 0x0f, 0x87, 0x1e, 0xe1, - 0xeb, 0xdb, 0xad, 0xda, 0x80, 0x3f, 0x0e, 0x0a, - 0x66, 0xda, 0x0c, 0x1e, 0xfb, 0xe4, 0x26, 0xbb, - 0x03, 0xff, 0xdd, 0xff, 0x4d, 0xc0, 0x00, 0xa3, - 0xde, 0x2d, 0xbf, 0x56, 0x0f, 0x87, 0x07, 0x7d, - 0xde, 0x0e, 0x5d, 0xc0, 0x00, 0xa3, 0xde, 0x1d, - 0xad, 0xda, 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, - 0xdf, 0x5c, 0xd0, 0x0e, 0x4f, 0x00, 0x0f, 0x87, - 0xd0, 0x06, 0x40, 0x3c, 0xeb, 0xf0, 0xbf, 0x3e, - 0xb0, 0x04, 0xe7, 0xf2, 0xeb, 0xf6, 0xbf, 0x0c, - 0xbf, 0x3a, 0x0f, 0x87, 0x0f, 0x1d, 0xfb, 0x4b, - 0xbf, 0x38, 0x0f, 0x87, 0x0f, 0x1c, 0xfb, 0xcb, - 0xbf, 0x30, 0x0f, 0x87, 0x50, 0x00, 0x50, 0x00, - 0x0f, 0x17, 0xf9, 0x70, 0x90, 0x4d, 0x10, 0x60, - 0xe5, 0x72, 0x0f, 0x49, 0x90, 0x4d, 0x10, 0x60, - 0xe5, 0x76, 0x0f, 0x19, 0xf9, 0x79, 0x01, 0x46, - 0xd0, 0x11, 0xa0, 0x38, 0x80, 0x3f, 0x00, 0xc6, - 0xdf, 0x00, 0x00, 0x06, 0x08, 0x20, 0xd0, 0x00, - 0x10, 0x08, 0xa0, 0x0a, 0xa0, 0x1b, 0x0c, 0x20, - 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x27, 0x90, 0x4d, - 0x0f, 0xff, 0xd8, 0x1f, 0x40, 0x40, 0xa0, 0x4d, - 0x80, 0x0a, 0xd0, 0x00, 0x06, 0x50, 0xf9, 0x95, - 0xd0, 0x01, 0xa0, 0x09, 0x80, 0x1b, 0xa0, 0x27, - 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, - 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, - 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x40, - 0xa0, 0x69, 0x80, 0x2b, 0x80, 0x07, 0x08, 0x20, - 0xdf, 0x00, 0x02, 0x30, 0xd0, 0x00, 0xa0, 0x38, - 0x80, 0x3f, 0x01, 0xb0, 0xd0, 0x10, 0xa0, 0x37, - 0x80, 0x3f, 0x02, 0x30, 0xd0, 0x01, 0xa0, 0x38, - 0xd0, 0x10, 0xa0, 0x38, 0x15, 0x63, 0xe9, 0xba, - 0x05, 0x5e, 0xf9, 0xfa, 0xc0, 0xdf, 0x00, 0xe0, - 0xd1, 0x80, 0x70, 0x06, 0x10, 0x1c, 0xc1, 0x40, - 0x11, 0x48, 0xd3, 0x10, 0x00, 0x21, 0xd0, 0x80, - 0xb0, 0x16, 0xe9, 0xca, 0xd3, 0x20, 0x10, 0x81, - 0xb0, 0x16, 0xf9, 0xfa, 0x30, 0xc2, 0xd2, 0x5e, - 0xd0, 0x8f, 0x00, 0xee, 0xd0, 0x54, 0x70, 0x41, - 0x30, 0x43, 0xed, 0xd7, 0xd2, 0x6c, 0x72, 0x49, - 0xc0, 0x89, 0xb0, 0xbf, 0x10, 0x9f, 0x22, 0x42, - 0x04, 0x31, 0xd0, 0x10, 0xc0, 0x42, 0x30, 0x49, - 0xe5, 0xde, 0x10, 0x03, 0xc1, 0x0c, 0xc1, 0x83, - 0xb1, 0xbe, 0x01, 0x46, 0x00, 0x06, 0xa0, 0x3d, - 0xa0, 0x3c, 0x60, 0x06, 0x00, 0xc6, 0xb1, 0xbc, - 0xb1, 0x01, 0xed, 0xe1, 0xc1, 0x0c, 0x21, 0x85, - 0x01, 0x46, 0x00, 0x06, 0xa0, 0x3d, 0xa0, 0x3c, - 0x60, 0x06, 0x00, 0xc6, 0xb1, 0xbc, 0xb1, 0x01, - 0xed, 0xec, 0x02, 0xe4, 0xd0, 0x00, 0x20, 0xc0, - 0xb2, 0x41, 0xed, 0xd8, 0x15, 0xa3, 0xfa, 0x00, - 0xbc, 0x10, 0x0c, 0x1e, 0xfa, 0x00, 0xbc, 0x10, - 0xd0, 0x04, 0x70, 0x00, 0x10, 0x20, 0xfa, 0x00, - 0x00, 0x27, 0xd0, 0x10, 0xd0, 0x40, 0x60, 0x40, - 0x00, 0x26, 0xd0, 0x14, 0x60, 0x40, 0xb0, 0x28, - 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x01, 0x7a, - 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, - 0x00, 0x28, 0xd1, 0xb0, 0x70, 0x06, 0xd0, 0x81, - 0x60, 0x86, 0x10, 0x20, 0xe9, 0xab, 0xb0, 0x3f, - 0x60, 0x06, 0x00, 0xec, 0xd1, 0x84, 0x70, 0x46, - 0xb1, 0x84, 0x70, 0x86, 0x30, 0x42, 0xe9, 0xab, - 0x70, 0x42, 0xd0, 0x35, 0x30, 0x40, 0xf9, 0xab, - 0x00, 0x63, 0xd0, 0x3f, 0xb0, 0xbc, 0x40, 0x80, - 0x70, 0xc2, 0x10, 0xe3, 0xe5, 0xab, 0xb0, 0xbc, - 0x40, 0x80, 0x60, 0x86, 0x00, 0x28, 0xd0, 0x24, - 0x70, 0x40, 0x00, 0x22, 0xd0, 0x80, 0x50, 0x42, - 0x60, 0x40, 0x00, 0x64, 0xd0, 0x60, 0xd0, 0x90, - 0x60, 0x81, 0x00, 0xed, 0xd1, 0x88, 0x70, 0x46, - 0x10, 0xe4, 0xe9, 0xa8, 0x00, 0x21, 0xd0, 0xe8, - 0xd0, 0x00, 0x60, 0x03, 0xd0, 0x81, 0x40, 0x42, - 0x60, 0x46, 0x02, 0x3c, 0xda, 0x89, 0xe0, 0x46, - 0xd0, 0x82, 0x50, 0x42, 0x60, 0x46, 0x00, 0x23, - 0xd5, 0x3e, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, - 0x01, 0x46, 0xdf, 0x5c, 0x08, 0x20, 0xd1, 0x00, - 0xcf, 0x04, 0x11, 0x08, 0xa1, 0x0a, 0xa1, 0x1b, - 0x11, 0x1f, 0xa1, 0x27, 0xd2, 0x80, 0xb2, 0x81, - 0x90, 0x4d, 0xc0, 0x01, 0x10, 0x14, 0x00, 0x16, - 0xe9, 0x8d, 0x80, 0x33, 0x80, 0x3f, 0x92, 0x8b, - 0x00, 0x23, 0xd0, 0x3f, 0x42, 0x80, 0xe9, 0x8d, - 0x0f, 0xff, 0xdf, 0xff, 0x40, 0x01, 0xa0, 0x0d, - 0xe1, 0x94, 0xa1, 0x0a, 0x00, 0xea, 0xd0, 0x00, - 0xd0, 0x8e, 0x00, 0x06, 0x0f, 0x0b, 0x70, 0x80, - 0x80, 0x73, 0x80, 0x0a, 0xd0, 0x00, 0x06, 0x50, - 0xf9, 0x9a, 0xd0, 0x01, 0xd0, 0x44, 0x40, 0x70, - 0x20, 0x01, 0x15, 0x63, 0xf9, 0xa1, 0x80, 0x1b, - 0xe1, 0xa2, 0x80, 0x5b, 0xa0, 0x27, 0x01, 0x20, - 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, - 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, - 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x40, 0xa0, 0x69, - 0x80, 0x2b, 0x80, 0x07, 0x08, 0x20, 0xd0, 0x00, - 0xcf, 0x00, 0x02, 0x30, 0xd0, 0x00, 0xa0, 0x38, - 0x80, 0x3f, 0x01, 0xb2, 0xd2, 0x10, 0xa0, 0x37, - 0x80, 0x3f, 0x02, 0x30, 0xd0, 0x01, 0xa0, 0x38, - 0x00, 0x30, 0xd0, 0x10, 0xa0, 0x38, 0x80, 0x3f, - 0x00, 0xc6, 0x00, 0x28, 0xd1, 0x24, 0x70, 0x04, - 0xd0, 0x41, 0x50, 0x01, 0x60, 0x04, 0x00, 0x27, - 0xd0, 0x18, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, - 0x00, 0x26, 0xd0, 0x20, 0x70, 0x40, 0xb0, 0x7f, - 0x60, 0x40, 0x08, 0x20, 0xdf, 0x00, 0xd4, 0x00, - 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, 0xd3, 0x81, - 0x12, 0xa0, 0xed, 0xe3, 0xd0, 0x08, 0x0a, 0x09, - 0x00, 0x4d, 0xb0, 0x01, 0xed, 0xdf, 0x03, 0xbe, - 0xd6, 0x27, 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, - 0x02, 0x24, 0xd0, 0x00, 0xa0, 0x37, 0x00, 0x27, - 0xd3, 0xd0, 0x00, 0x26, 0xd0, 0x04, 0x73, 0xcf, - 0x13, 0xe1, 0xe9, 0x7b, 0xb0, 0x3c, 0xf2, 0x00, - 0x00, 0x26, 0xd0, 0x40, 0xd0, 0x00, 0x60, 0x01, - 0x00, 0x26, 0xd0, 0x14, 0xf2, 0x00, 0x00, 0x26, - 0xd0, 0x18, 0xf2, 0x00, 0x00, 0xee, 0xd0, 0x1c, - 0x71, 0x40, 0xd1, 0x1e, 0x15, 0x63, 0xe9, 0x8d, - 0x11, 0x1f, 0xc7, 0x1a, 0xb7, 0x01, 0xd3, 0x81, - 0xc4, 0xd4, 0xf2, 0x04, 0x00, 0x26, 0xd0, 0x18, - 0x70, 0x40, 0xb0, 0x54, 0xfd, 0x9b, 0x00, 0xed, - 0xd0, 0x24, 0xd0, 0x44, 0x60, 0x40, 0x13, 0xe1, - 0xf9, 0xbc, 0x15, 0xa3, 0xf9, 0xa1, 0x0c, 0x10, - 0xe9, 0xb9, 0x11, 0x61, 0xe5, 0xb3, 0xed, 0xb9, - 0x15, 0xa3, 0xf9, 0xab, 0x00, 0x26, 0xd0, 0x14, - 0x70, 0x40, 0x10, 0x62, 0xf5, 0xb3, 0x15, 0x22, - 0xe5, 0xb3, 0xc0, 0x44, 0x30, 0x54, 0xe5, 0xb3, - 0x34, 0xd4, 0xf5, 0xb3, 0xe1, 0xbf, 0x03, 0xb3, - 0xd8, 0x29, 0x00, 0x26, 0xd0, 0x40, 0x60, 0x01, - 0xe1, 0xdb, 0x03, 0xb3, 0xd8, 0x29, 0xe0, 0x46, - 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x80, 0x07, - 0x09, 0x49, 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, - 0xd4, 0xc0, 0x00, 0x4d, 0xa0, 0x6c, 0xd3, 0x80, - 0xd0, 0xa1, 0x00, 0x88, 0xd0, 0xa9, 0x00, 0x4d, - 0x00, 0x50, 0xf9, 0xc9, 0x0c, 0x49, 0xd0, 0x61, - 0x00, 0x8d, 0x10, 0xa0, 0xe9, 0x90, 0x30, 0x42, - 0xf5, 0xd8, 0xd0, 0x61, 0x23, 0x81, 0xe1, 0xce, - 0x23, 0x82, 0x13, 0xa1, 0xf9, 0x90, 0xd0, 0x42, - 0x15, 0xa1, 0xf9, 0xdf, 0xb0, 0x7f, 0x00, 0x26, - 0xd0, 0x14, 0x70, 0x00, 0x30, 0x01, 0xf5, 0xe8, - 0x16, 0xe0, 0xe5, 0xe8, 0xb6, 0xc1, 0xbc, 0x20, - 0xc0, 0x44, 0x30, 0x5b, 0xfd, 0xb9, 0xc0, 0x44, - 0x30, 0x54, 0xe5, 0xb9, 0x15, 0x63, 0xf9, 0xf8, - 0x15, 0xa3, 0xf9, 0xf5, 0x03, 0x3b, 0xda, 0x1c, - 0xe0, 0x46, 0x03, 0x38, 0xdc, 0x17, 0xe0, 0x46, - 0x15, 0xa3, 0xf9, 0xfd, 0x03, 0x72, 0xd0, 0x19, - 0xe0, 0x46, 0x03, 0x3f, 0xd2, 0x17, 0xe0, 0x46, - 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x0f, 0xc5, - 0xdf, 0x00, 0x0c, 0x09, 0x05, 0x0d, 0x08, 0x20, - 0xdf, 0x00, 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, - 0x00, 0xef, 0xd0, 0x14, 0x70, 0x40, 0x10, 0x60, - 0xe9, 0x45, 0xb0, 0x04, 0x70, 0x40, 0xb0, 0x41, - 0xed, 0x44, 0x00, 0xed, 0xd0, 0x24, 0xd0, 0x44, - 0x60, 0x40, 0x00, 0x64, 0xd0, 0x20, 0x70, 0x00, - 0x10, 0x30, 0xe9, 0x45, 0x00, 0x21, 0xd0, 0x28, - 0x60, 0x40, 0x00, 0x64, 0xd2, 0xc0, 0x70, 0x0b, - 0x00, 0x11, 0xe9, 0x6a, 0x08, 0x20, 0xd0, 0x4f, - 0x30, 0x40, 0xe9, 0x55, 0xb0, 0x4f, 0xf9, 0x6a, - 0x03, 0xef, 0xdf, 0xbf, 0xaf, 0xb8, 0xdf, 0x80, - 0x0f, 0x87, 0xd0, 0x18, 0x70, 0x00, 0x10, 0x20, - 0xed, 0x6c, 0xdf, 0x84, 0xd0, 0x40, 0x60, 0x7e, - 0x00, 0x27, 0xd0, 0x54, 0x70, 0x41, 0x10, 0x60, - 0x01, 0xa0, 0xd0, 0x40, 0xa0, 0x78, 0x80, 0x34, - 0x80, 0x3f, 0x01, 0x3c, 0xd2, 0x39, 0x00, 0x21, - 0xdf, 0x86, 0x0f, 0x87, 0xd0, 0x40, 0x60, 0x4b, - 0x03, 0xe5, 0xd0, 0x10, 0xe0, 0x36, 0x50, 0x00, - 0x00, 0x28, 0xd0, 0x24, 0x72, 0xc0, 0xd0, 0x40, - 0x60, 0x40, 0xd0, 0x0c, 0x52, 0xc0, 0xc0, 0x1c, - 0x30, 0x1d, 0xf5, 0x3c, 0x20, 0x1f, 0x30, 0x1e, - 0x90, 0x6d, 0x20, 0x01, 0x00, 0x22, 0xd0, 0x58, - 0x60, 0x01, 0x00, 0xe3, 0xd0, 0x48, 0x70, 0x41, - 0x30, 0x40, 0xf5, 0x47, 0xb2, 0xc8, 0x00, 0xe3, - 0xd0, 0x4c, 0x70, 0x41, 0x30, 0x40, 0xfd, 0x4d, - 0xb2, 0xc4, 0x00, 0x28, 0xd0, 0x20, 0x70, 0x00, - 0x42, 0xc0, 0xa2, 0xc5, 0x12, 0xe0, 0xe9, 0x55, - 0x80, 0x40, 0x80, 0x34, 0x80, 0x3f, 0xcf, 0x95, - 0x82, 0x34, 0x80, 0x3f, 0x03, 0xe7, 0xd0, 0x08, - 0x1f, 0xa3, 0xe9, 0x60, 0x03, 0xe9, 0xd0, 0x08, - 0x00, 0x27, 0xd0, 0x4c, 0x7f, 0x81, 0x00, 0x27, - 0xd0, 0x54, 0x70, 0x41, 0x10, 0x60, 0x03, 0xa0, - 0xd0, 0x40, 0xa0, 0x78, 0xe0, 0x3c, 0x50, 0x00, - 0xc0, 0x84, 0x10, 0x8c, 0x10, 0x92, 0xd0, 0x41, - 0x30, 0x4d, 0x40, 0x43, 0x10, 0x43, 0x20, 0x81, - 0xd1, 0x8f, 0x41, 0x82, 0x10, 0x9c, 0x20, 0x9b, - 0xc1, 0xc2, 0x10, 0x82, 0x20, 0x87, 0xc0, 0x42, - 0x10, 0x43, 0x20, 0x81, 0x10, 0x88, 0x22, 0x02, - 0x10, 0x97, 0x01, 0xd0, 0xe9, 0x48, 0xb0, 0x96, - 0x10, 0x88, 0x22, 0x82, 0xc0, 0x5c, 0x10, 0x48, - 0xc0, 0x84, 0x10, 0x91, 0x10, 0x86, 0x20, 0x42, - 0x41, 0x0d, 0x11, 0x02, 0x20, 0x44, 0x22, 0x01, - 0x22, 0x81, 0x02, 0xe4, 0xd2, 0x40, 0xc2, 0xca, - 0xb2, 0xe0, 0x01, 0xd0, 0xe9, 0x5e, 0xc2, 0xca, - 0x22, 0xc9, 0xb2, 0xa0, 0x22, 0x48, 0xd0, 0x78, - 0x03, 0x50, 0xf9, 0x69, 0xd0, 0x7c, 0x01, 0x9d, - 0xf9, 0x69, 0xc2, 0x48, 0xb2, 0x60, 0xc2, 0xca, - 0xb2, 0xf0, 0x11, 0x82, 0x41, 0x81, 0x22, 0x06, - 0x11, 0x9f, 0x41, 0x81, 0x22, 0x86, 0x0f, 0xc5, - 0xc0, 0x84, 0x10, 0x8c, 0x10, 0x92, 0xd1, 0x8f, - 0x41, 0x82, 0x10, 0x9c, 0xc1, 0xdb, 0x11, 0xc1, - 0x21, 0xc3, 0x20, 0x87, 0xc1, 0xc2, 0x10, 0x82, - 0x20, 0x87, 0xc0, 0x42, 0x10, 0x43, 0x20, 0x81, - 0x10, 0x88, 0x22, 0x02, 0x10, 0x97, 0x01, 0xd0, - 0xe9, 0x46, 0xb0, 0x96, 0x10, 0x88, 0x22, 0x82, - 0xc0, 0x5c, 0x10, 0x48, 0xc0, 0x84, 0x10, 0x91, - 0x10, 0x86, 0x20, 0x42, 0xd0, 0x81, 0x41, 0x02, - 0x11, 0x02, 0x20, 0x44, 0x22, 0x01, 0x22, 0x81, - 0x02, 0xe4, 0xd2, 0x40, 0xc2, 0xca, 0xb2, 0xe0, - 0x01, 0xd0, 0xe9, 0x5d, 0xc2, 0xca, 0x22, 0xc9, - 0xb2, 0xa0, 0x22, 0x48, 0x11, 0x9f, 0x11, 0x83, - 0x22, 0x06, 0x11, 0x9c, 0x11, 0x83, 0x22, 0x86, - 0x0f, 0xc5, 0xd0, 0x41, 0x40, 0x44, 0x20, 0x55, - 0x10, 0x62, 0xf9, 0x6f, 0x01, 0x74, 0xd6, 0x00, - 0xc2, 0x9f, 0xc2, 0x1f, 0x22, 0x80, 0xe1, 0x30, - 0x0f, 0x11, 0xf9, 0x51, 0x90, 0x38, 0x80, 0x3f, - 0x00, 0x1b, 0xf9, 0x51, 0x00, 0x27, 0xd0, 0x04, - 0x70, 0x40, 0x30, 0x71, 0xf9, 0x51, 0xb0, 0x3c, - 0x70, 0x40, 0x30, 0x5d, 0xf9, 0x51, 0xb0, 0x08, - 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x10, 0x63, - 0xe5, 0x5d, 0x02, 0x20, 0xd0, 0x01, 0xa0, 0x37, - 0x00, 0x26, 0xd0, 0x24, 0x70, 0x40, 0xb0, 0x7f, - 0x60, 0x40, 0xb0, 0x08, 0x70, 0x40, 0xb0, 0x41, - 0x60, 0x40, 0x00, 0x26, 0xd0, 0x30, 0x70, 0x40, - 0xb0, 0x7f, 0x60, 0x40, 0xb0, 0x30, 0xd0, 0x40, - 0x60, 0x40, 0xb0, 0x3c, 0x6c, 0x40, 0xb0, 0x3c, - 0x67, 0x40, 0x00, 0x33, 0xdf, 0x78, 0xe0, 0x36, - 0x00, 0x26, 0xd0, 0x1c, 0x70, 0x40, 0xb0, 0x7f, - 0x60, 0x40, 0xb0, 0x3c, 0x70, 0x40, 0xb0, 0x41, - 0x60, 0x40, 0x08, 0x20, 0xdf, 0x00, 0x80, 0x35, - 0xc0, 0x3c, 0x10, 0x08, 0xa0, 0x0a, 0xa0, 0x27, - 0xa0, 0x1b, 0xdf, 0x5c, 0x01, 0xa0, 0xd0, 0x00, - 0xa0, 0x38, 0x80, 0x3f, 0x80, 0x34, 0x80, 0x3f, - 0x03, 0xba, 0xda, 0x1e, 0xcf, 0x95, 0x82, 0x34, - 0x80, 0x3f, 0x03, 0xe7, 0xd0, 0x08, 0x1f, 0xa3, - 0xe9, 0x55, 0x1f, 0xa0, 0xe9, 0x55, 0x03, 0xe9, - 0xd0, 0x08, 0x00, 0x21, 0xdf, 0x86, 0xe0, 0x3c, - 0x89, 0x78, 0x89, 0x37, 0x00, 0xee, 0xd0, 0x14, - 0x76, 0x00, 0xd0, 0x30, 0x76, 0x40, 0x26, 0x58, - 0xd6, 0xd9, 0x00, 0xee, 0xd0, 0x20, 0x75, 0x40, - 0xd0, 0x1c, 0x71, 0x40, 0xd0, 0x20, 0x71, 0x00, - 0xd0, 0x24, 0x70, 0x80, 0xc4, 0x02, 0xd0, 0x28, - 0x70, 0xc0, 0x00, 0x21, 0xd0, 0x10, 0x72, 0x00, - 0x93, 0x90, 0xd4, 0x81, 0x13, 0x96, 0x43, 0x92, - 0x34, 0x8e, 0x00, 0x22, 0xd1, 0xa4, 0x71, 0x86, - 0xde, 0x40, 0x7e, 0x79, 0xd0, 0x18, 0x70, 0x40, - 0xb0, 0x41, 0xf5, 0x58, 0xd3, 0x42, 0x50, 0x4d, - 0x60, 0x40, 0x10, 0x60, 0xe5, 0x62, 0xd0, 0x54, - 0x70, 0x01, 0xb0, 0x3c, 0x60, 0x01, 0x04, 0x2d, - 0xd0, 0x08, 0xe0, 0x36, 0x00, 0x22, 0xd0, 0x60, - 0x71, 0xc1, 0xd0, 0x4f, 0x41, 0xc1, 0x03, 0xef, - 0xd0, 0x30, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, - 0x04, 0x21, 0xd0, 0x20, 0xd3, 0x44, 0x72, 0x8d, - 0x12, 0xa0, 0xe8, 0x36, 0xc0, 0x47, 0x10, 0x5d, - 0x30, 0x4e, 0xf8, 0x36, 0xb2, 0x3e, 0x60, 0x4d, - 0x00, 0xed, 0xd0, 0x48, 0x70, 0x01, 0xde, 0x45, - 0x50, 0x39, 0x00, 0x1b, 0xf9, 0x44, 0xb0, 0x01, - 0x00, 0x1c, 0xf9, 0x47, 0xb0, 0x04, 0x60, 0x01, - 0xd0, 0x40, 0x62, 0x81, 0xce, 0x4a, 0xd0, 0x43, - 0x41, 0xc1, 0xd0, 0x58, 0x61, 0xc1, 0x90, 0x43, - 0x00, 0xe0, 0xd0, 0x28, 0x70, 0x00, 0x10, 0x1f, - 0x20, 0x40, 0xb1, 0xc1, 0xf5, 0x54, 0x00, 0x21, - 0xd0, 0x08, 0x60, 0x40, 0x00, 0xe6, 0xd0, 0x40, - 0x70, 0x41, 0xd2, 0x94, 0x60, 0x4a, 0x04, 0x2b, - 0xd0, 0x10, 0x01, 0x90, 0xf8, 0x36, 0x04, 0x2d, - 0xd0, 0x08, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, - 0xc0, 0x47, 0x10, 0x5d, 0x30, 0x4e, 0xf9, 0x41, - 0x90, 0x43, 0x00, 0xe0, 0xd0, 0x28, 0x70, 0x00, - 0x20, 0x40, 0x00, 0x21, 0xd0, 0x08, 0x60, 0x40, - 0x00, 0x26, 0xd0, 0x74, 0x70, 0x01, 0xb0, 0x3f, - 0x60, 0x01, 0x00, 0xed, 0xd0, 0x48, 0x70, 0x41, - 0x00, 0x5e, 0xf9, 0x4b, 0x00, 0x21, 0xd0, 0x00, - 0x73, 0x80, 0xd4, 0x81, 0x34, 0x8e, 0x00, 0x34, - 0xd3, 0x48, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, - 0xd1, 0x88, 0xd1, 0xc8, 0x01, 0x1b, 0xe9, 0x39, - 0x11, 0x9f, 0x11, 0xdf, 0xd4, 0x80, 0xd3, 0x81, - 0xe1, 0x43, 0x00, 0xed, 0xd0, 0x08, 0x70, 0x00, - 0x00, 0x10, 0xf9, 0x37, 0x0c, 0x1f, 0xf9, 0x36, - 0x13, 0xa1, 0xe9, 0x43, 0xbe, 0x7c, 0x00, 0x65, - 0xd2, 0x46, 0x12, 0x48, 0xc0, 0x39, 0x30, 0x18, - 0xe5, 0x4b, 0xd2, 0x70, 0x72, 0x49, 0x22, 0x79, - 0x00, 0x21, 0xd0, 0x00, 0x63, 0x80, 0x04, 0x24, - 0xd0, 0x00, 0x02, 0x10, 0xe9, 0x56, 0xd0, 0x41, - 0x51, 0x41, 0xe0, 0x36, 0x15, 0x61, 0xe8, 0x36, - 0xd5, 0x80, 0xd3, 0x00, 0xd3, 0x40, 0x04, 0x27, - 0xd0, 0x20, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, - 0x00, 0x21, 0xd0, 0x18, 0x73, 0x00, 0xb0, 0x04, - 0x73, 0x80, 0xd2, 0x80, 0xb0, 0x38, 0x72, 0xc0, - 0x31, 0x0d, 0xc0, 0x0e, 0x10, 0x0b, 0x10, 0x20, - 0xe9, 0x42, 0xf5, 0x3f, 0x22, 0x8d, 0x10, 0x01, - 0x13, 0x5f, 0xe1, 0x3b, 0x33, 0x8b, 0x15, 0x61, - 0xf9, 0x49, 0x00, 0x21, 0xd0, 0x64, 0x70, 0x41, - 0x33, 0x81, 0x03, 0xd0, 0xe9, 0x4c, 0x20, 0x0b, - 0x13, 0xdf, 0x12, 0xc1, 0x13, 0xe0, 0xf9, 0x49, - 0x10, 0x03, 0xc0, 0x50, 0x10, 0x4b, 0x13, 0x0b, - 0x23, 0x00, 0x13, 0x20, 0xe9, 0x5c, 0xf5, 0x59, - 0x22, 0x81, 0x13, 0x01, 0x10, 0x5f, 0xe1, 0x55, - 0x12, 0x99, 0x12, 0x87, 0x21, 0x0a, 0x00, 0xa0, - 0xd2, 0x80, 0xc3, 0x0a, 0x03, 0x90, 0xe9, 0x66, - 0x22, 0x82, 0x23, 0x03, 0x10, 0x81, 0x10, 0xc1, - 0x13, 0x9f, 0x13, 0xa0, 0xed, 0x62, 0xc0, 0x8a, - 0xc0, 0xcc, 0x04, 0x26, 0xd0, 0x00, 0xe0, 0x36, - 0x15, 0x61, 0xf9, 0x3d, 0x07, 0x32, 0xd0, 0x00, - 0x30, 0x03, 0xed, 0x3d, 0xc0, 0x03, 0x10, 0x1d, - 0x30, 0xc0, 0xc0, 0x02, 0x10, 0x1d, 0x30, 0x80, - 0xe1, 0x32, 0x10, 0x94, 0x10, 0xd4, 0x00, 0x21, - 0xd0, 0x20, 0x73, 0x00, 0xc5, 0x8c, 0xd3, 0x4e, - 0x01, 0x1b, 0xe9, 0x48, 0x13, 0x1f, 0xd3, 0x4f, - 0x43, 0x4c, 0x13, 0x1c, 0xc0, 0x0c, 0x10, 0x03, - 0x20, 0x0c, 0xc0, 0x40, 0x10, 0x42, 0x20, 0x40, - 0x10, 0x46, 0x20, 0x4d, 0x10, 0x42, 0x2e, 0x41, - 0x10, 0x5c, 0x10, 0x43, 0x00, 0x59, 0xe9, 0x5b, - 0x01, 0x69, 0xd0, 0x20, 0x30, 0x40, 0x22, 0x41, - 0x04, 0x27, 0xd0, 0x20, 0xe0, 0x36, 0x50, 0x00, - 0x2c, 0x14, 0xd0, 0x34, 0x63, 0x00, 0xd0, 0x38, - 0x72, 0xc0, 0xc0, 0x51, 0x10, 0x5c, 0x30, 0x4b, - 0x10, 0x44, 0xd4, 0xc0, 0xd5, 0x00, 0xc0, 0x18, - 0x30, 0x39, 0xed, 0x5f, 0xd4, 0xd0, 0xc5, 0x01, - 0xd0, 0x18, 0x70, 0x00, 0x0c, 0x1f, 0xe9, 0x48, - 0x10, 0x20, 0xfd, 0x48, 0xd4, 0xc0, 0xd5, 0x00, - 0x10, 0x22, 0xe5, 0x4e, 0xd4, 0xc0, 0xbc, 0x30, - 0xd5, 0x00, 0xb5, 0x10, 0xb0, 0x3f, 0xf9, 0x52, - 0x3c, 0x01, 0x3c, 0x01, 0x02, 0x1f, 0xe9, 0x5f, - 0x00, 0xa8, 0xd3, 0xc0, 0xd3, 0x9e, 0x00, 0xa9, - 0xd0, 0x38, 0x70, 0x4f, 0xb3, 0xfc, 0x60, 0x40, - 0xb0, 0x3c, 0xb3, 0x81, 0xed, 0x59, 0x00, 0x21, - 0xd0, 0x28, 0x70, 0x00, 0x10, 0x20, 0xf9, 0x69, - 0x02, 0x1f, 0xf9, 0x6a, 0x90, 0x10, 0x00, 0x1e, - 0xe9, 0x6a, 0xb1, 0x7c, 0x04, 0x29, 0xd0, 0x20, - 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x01, 0x5e, 0xf9, 0x35, 0x01, 0x50, 0xe9, 0x35, - 0xb1, 0x78, 0xd2, 0x00, 0x01, 0x5c, 0xf9, 0x5f, - 0xc0, 0x18, 0x30, 0x39, 0xed, 0x5f, 0x11, 0x9f, - 0xce, 0x58, 0xc2, 0x59, 0x00, 0xa9, 0xd2, 0x38, - 0x14, 0x82, 0x22, 0x12, 0xc0, 0x0c, 0x10, 0x1f, - 0x10, 0x03, 0x22, 0x00, 0x70, 0x48, 0x03, 0x10, - 0xe9, 0x4c, 0xb2, 0x38, 0xbe, 0x60, 0xb2, 0x60, - 0x2e, 0x41, 0x10, 0x5f, 0x00, 0x59, 0xe9, 0x53, - 0x01, 0x69, 0xd0, 0x3c, 0x30, 0x40, 0x22, 0x41, - 0x13, 0x41, 0x2e, 0x4d, 0x13, 0x5d, 0x13, 0x43, - 0x22, 0x4d, 0x14, 0xe0, 0xe9, 0x5f, 0x33, 0x0b, - 0x13, 0x04, 0x2c, 0x0c, 0x35, 0x0c, 0xc3, 0x46, - 0xc3, 0x87, 0x04, 0x61, 0xd0, 0x28, 0x15, 0x62, - 0xfc, 0x36, 0x04, 0x2f, 0xd0, 0x28, 0xe0, 0x36, - 0x00, 0x22, 0xd0, 0x74, 0x74, 0x01, 0xb0, 0x7c, - 0x74, 0x41, 0xb0, 0x7c, 0x00, 0x27, 0xd0, 0x20, - 0x30, 0x11, 0xf5, 0x3b, 0x24, 0x40, 0x71, 0x41, - 0xd1, 0x08, 0xc0, 0x10, 0x10, 0x1c, 0xb0, 0x16, - 0xf9, 0x4a, 0x00, 0x23, 0xd0, 0x30, 0x30, 0x11, - 0xf9, 0x4a, 0xb1, 0x70, 0x01, 0x50, 0xf9, 0x4a, - 0xb1, 0x20, 0x14, 0x41, 0xc0, 0x90, 0x00, 0x2b, - 0xd0, 0xd0, 0x01, 0x50, 0xe9, 0x50, 0xc0, 0xd0, - 0x00, 0x34, 0xdc, 0x00, 0x20, 0x11, 0x10, 0x1f, - 0xa0, 0x1c, 0x00, 0x21, 0xd0, 0x2c, 0x70, 0x00, - 0x10, 0x05, 0x51, 0x40, 0xd0, 0x1c, 0x61, 0x40, - 0xd0, 0x20, 0x61, 0x00, 0xd0, 0x24, 0x60, 0x80, - 0xd0, 0x28, 0x60, 0xc0, 0x04, 0x2d, 0xd0, 0x08, - 0x00, 0x22, 0xd0, 0x64, 0xb1, 0x81, 0x61, 0x81, - 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, - 0x90, 0x50, 0xd0, 0x3c, 0x10, 0x41, 0x60, 0x40, - 0x15, 0x62, 0xfd, 0x3d, 0xc0, 0x10, 0x10, 0x1e, - 0x10, 0x07, 0x21, 0x00, 0x10, 0x16, 0x34, 0x00, - 0xc0, 0x90, 0xd3, 0x40, 0x00, 0x24, 0xd3, 0xc0, - 0x04, 0x22, 0xd0, 0x20, 0x01, 0x9f, 0xe8, 0x36, - 0xd0, 0x54, 0x70, 0x41, 0x73, 0x41, 0x04, 0x2e, - 0xd0, 0x00, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, - 0x00, 0xef, 0xd3, 0x30, 0x73, 0x0c, 0xd0, 0x0c, - 0x70, 0x00, 0xc0, 0x40, 0x13, 0x24, 0xf5, 0x42, - 0x13, 0x22, 0xe9, 0x41, 0xe5, 0x43, 0xd3, 0x00, - 0x10, 0x22, 0xf9, 0x41, 0xd0, 0x01, 0xd0, 0x43, - 0xd3, 0x01, 0x21, 0x00, 0xd3, 0x40, 0x03, 0x10, - 0xf9, 0x47, 0xd3, 0x40, 0xe1, 0x61, 0x00, 0x23, - 0xd0, 0x00, 0x10, 0x61, 0xe9, 0x50, 0xb0, 0x33, - 0x10, 0x63, 0xe9, 0x50, 0x00, 0x22, 0xd0, 0x1a, - 0xc3, 0xc0, 0xd2, 0xc0, 0x00, 0x10, 0xe9, 0x55, - 0x22, 0xd0, 0x10, 0x1f, 0x14, 0x01, 0x10, 0x20, - 0xed, 0x52, 0x14, 0x18, 0x12, 0xd8, 0xc0, 0x8b, - 0x32, 0xd0, 0x12, 0xc3, 0x33, 0x4b, 0x13, 0x47, - 0x21, 0x0d, 0x04, 0x22, 0xd0, 0x20, 0xe0, 0x36, - 0x00, 0x24, 0xd0, 0x30, 0xd0, 0x40, 0x60, 0x40, - 0xd3, 0xc7, 0x43, 0xc4, 0x31, 0x0f, 0xd5, 0xd4, - 0x25, 0xcf, 0x15, 0xc4, 0x10, 0xdf, 0xc2, 0xc6, - 0xc3, 0x07, 0x11, 0x81, 0xb1, 0x3b, 0x15, 0x64, - 0xe9, 0x47, 0x10, 0xdf, 0x12, 0xc1, 0x11, 0x81, - 0x11, 0xc1, 0xb1, 0x3f, 0xb5, 0xf8, 0x90, 0x10, - 0x00, 0x16, 0xf9, 0x5e, 0xb5, 0xfc, 0xd0, 0x20, - 0x40, 0x39, 0x2e, 0x4b, 0x22, 0x4c, 0x12, 0x20, - 0xe9, 0x59, 0x20, 0x39, 0x00, 0x1b, 0xe9, 0x59, - 0x2c, 0x13, 0x35, 0x13, 0x0e, 0x5a, 0xf9, 0x59, - 0xb2, 0x38, 0x02, 0xe3, 0xd0, 0x00, 0x0e, 0x5a, - 0xe9, 0x5e, 0x2e, 0x40, 0x01, 0xee, 0xd2, 0x80, - 0x42, 0x84, 0xc0, 0x03, 0x30, 0x02, 0xf5, 0x6b, - 0x31, 0x0a, 0x12, 0x98, 0x20, 0x03, 0xf5, 0x69, - 0x12, 0x9f, 0x12, 0x87, 0x51, 0x0a, 0x00, 0x34, - 0xd4, 0xc8, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, - 0xd3, 0xc7, 0x43, 0xc4, 0x15, 0x61, 0xf9, 0x48, - 0x10, 0xc1, 0xd5, 0xe0, 0xd1, 0x80, 0xd1, 0xc0, - 0x31, 0x0f, 0x13, 0xe1, 0xe9, 0x3c, 0xd3, 0xc0, - 0x00, 0x24, 0xd0, 0x30, 0x63, 0xc0, 0x25, 0xcf, - 0x15, 0xc2, 0xd0, 0x03, 0x40, 0x16, 0x25, 0xc0, - 0x15, 0xc2, 0x15, 0x81, 0x35, 0x91, 0xe1, 0x5c, - 0x00, 0x24, 0xd0, 0x30, 0x63, 0xc0, 0x01, 0x50, - 0xe9, 0x54, 0x15, 0xa0, 0xf9, 0x55, 0x00, 0x24, - 0xd0, 0x34, 0x70, 0x00, 0x10, 0x20, 0xe9, 0x55, - 0xd3, 0xc0, 0x31, 0x0f, 0xd5, 0xfc, 0x25, 0xcf, - 0x15, 0xc3, 0x14, 0xa0, 0xe9, 0x5c, 0xb5, 0xfc, - 0x00, 0x34, 0xd4, 0xc8, 0xe0, 0x36, 0x50, 0x00, - 0xc4, 0x91, 0x34, 0x96, 0xed, 0x34, 0xd4, 0x80, - 0x14, 0x84, 0xb3, 0xc1, 0xe5, 0x41, 0xc0, 0x52, - 0x10, 0x5e, 0x34, 0x81, 0xb3, 0xc1, 0xe5, 0x41, - 0xc0, 0x52, 0x10, 0x5c, 0x24, 0x81, 0xb3, 0xc1, - 0xe5, 0x37, 0x02, 0x68, 0xd0, 0x00, 0xb4, 0xb0, - 0x14, 0x9b, 0x00, 0x23, 0xd0, 0x70, 0x30, 0x52, - 0xed, 0x4a, 0x24, 0x81, 0x20, 0x12, 0xa0, 0x1c, - 0x10, 0x8a, 0x50, 0x83, 0xa0, 0x96, 0xa1, 0x50, - 0xa1, 0x11, 0xc0, 0x52, 0xd4, 0x84, 0x10, 0x6c, - 0xed, 0x56, 0xd4, 0x81, 0xd1, 0x00, 0xb1, 0x13, - 0x00, 0x23, 0xd1, 0x40, 0xc2, 0xb9, 0x22, 0x86, - 0x12, 0x20, 0xf9, 0x66, 0x02, 0xe3, 0xd0, 0x40, - 0x02, 0x9a, 0xe9, 0x63, 0x22, 0x81, 0x02, 0x5a, - 0xe9, 0x66, 0x22, 0x41, 0x75, 0xd7, 0xc3, 0xd7, - 0xd0, 0xd7, 0x00, 0x21, 0xd0, 0xb6, 0x8b, 0x38, - 0x00, 0x33, 0xdc, 0xd0, 0xe0, 0x36, 0x50, 0x00, - 0xd0, 0x7c, 0x60, 0x01, 0xae, 0x52, 0xd0, 0x60, - 0x40, 0x79, 0x00, 0x13, 0xe8, 0xc9, 0xa2, 0x94, - 0x22, 0x86, 0x13, 0xe0, 0xe4, 0xd0, 0x13, 0xc1, - 0x15, 0x62, 0xfc, 0xd1, 0x13, 0xc1, 0xe0, 0xd1, - 0xc3, 0xd7, 0x03, 0xd9, 0xe8, 0xd4, 0x22, 0x8d, - 0x15, 0x62, 0xfc, 0xda, 0x03, 0xda, 0xe8, 0xda, - 0x22, 0x8d, 0x22, 0x8d, 0xce, 0x4a, 0x22, 0x86, - 0x00, 0x14, 0xe8, 0xe0, 0xa2, 0x53, 0x22, 0x47, - 0x03, 0xd1, 0xe8, 0xe8, 0x22, 0x4e, 0x15, 0x62, - 0xfc, 0xe8, 0x03, 0xd2, 0xe8, 0xe8, 0x22, 0x4e, - 0x12, 0x20, 0xe9, 0x09, 0x20, 0x79, 0x00, 0x5b, - 0xe8, 0xf4, 0x15, 0x20, 0xfc, 0xf1, 0x2c, 0x13, - 0x35, 0x13, 0x0e, 0x5b, 0xe8, 0xf4, 0xb2, 0x38, - 0x02, 0x9a, 0xe8, 0xfb, 0x70, 0x08, 0xd0, 0x7c, - 0x42, 0x81, 0x22, 0x98, 0x22, 0x80, 0x02, 0x5a, - 0xe9, 0x11, 0x70, 0x08, 0xd0, 0x78, 0x42, 0x41, - 0x22, 0x59, 0x10, 0x1f, 0x22, 0x40, 0x00, 0x19, - 0xe9, 0x11, 0x01, 0x69, 0xd0, 0x7c, 0x32, 0x41, - 0xe1, 0x11, 0x02, 0xe3, 0xd0, 0x40, 0x02, 0x9a, - 0xe9, 0x0e, 0x22, 0x81, 0x02, 0x5a, 0xe9, 0x11, - 0x22, 0x41, 0x0e, 0x5a, 0xe9, 0x15, 0xce, 0x4a, - 0x3e, 0x46, 0x0f, 0x87, 0xdd, 0x48, 0xe1, 0x19, - 0xdd, 0x40, 0xdc, 0xc8, 0xdd, 0x3c, 0x7d, 0x34, - 0x1d, 0x19, 0x3d, 0x35, 0x4d, 0x33, 0x4c, 0xec, - 0x3d, 0x33, 0xf9, 0x17, 0x0f, 0xc5, 0x50, 0x00, - 0xd0, 0x39, 0xd0, 0x35, 0xd0, 0x1d, 0xd0, 0x2d, - 0xd0, 0x3f, 0xd0, 0x2e, 0xd0, 0x3c, 0xd0, 0x37, - 0xd0, 0x38, 0xd0, 0x19, 0xd0, 0x33, 0xd0, 0x2e, - 0xd0, 0x3d, 0xd0, 0x3e, 0xd0, 0x27, 0xd0, 0x3e, - 0xd0, 0x3a, 0xd0, 0x2f, 0xd0, 0x32, 0x00, 0x00, - 0x47, 0x78, 0x46, 0xc0, 0xe1, 0x01, 0x00, 0x90, - 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, - 0xe9, 0x2d, 0x40, 0x00, 0xe5, 0x9f, 0x20, 0x6c, - 0xe0, 0x21, 0x10, 0x01, 0xe1, 0x02, 0x00, 0x91, - 0xe3, 0x50, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x02, - 0xe3, 0xa0, 0x00, 0x00, 0xeb, 0x00, 0x38, 0x71, - 0xea, 0xff, 0xff, 0xf7, 0xe8, 0xbd, 0x40, 0x00, - 0xe1, 0x2f, 0xff, 0x1e, 0xb5, 0x00, 0x4a, 0x12, - 0x68, 0x10, 0x28, 0x00, 0xd1, 0x03, 0x20, 0x00, - 0xf7, 0xf0, 0xfb, 0x8c, 0xe7, 0xf7, 0xbd, 0x00, - 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, - 0xe5, 0x9f, 0x20, 0x2c, 0xe3, 0xa0, 0x10, 0x01, - 0xe1, 0x02, 0x00, 0x91, 0xe3, 0x50, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x02, 0xe3, 0xa0, 0x00, 0x00, - 0xeb, 0x00, 0x38, 0x60, 0xea, 0xff, 0xff, 0xf7, - 0xe8, 0xbd, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x10, - 0x48, 0x02, 0x40, 0x49, 0x60, 0x01, 0x47, 0x70, - 0x70, 0x00, 0x00, 0x34, 0x2e, 0x08, 0x20, 0x28, - 0x47, 0x78, 0x46, 0xc0, 0xe1, 0xa0, 0x09, 0x00, - 0xe1, 0xb0, 0x10, 0x01, 0x03, 0xc0, 0x01, 0x02, - 0x13, 0x80, 0x01, 0x02, 0xe3, 0xa0, 0x13, 0x3f, - 0xe3, 0xa0, 0x30, 0x0e, 0xe1, 0xb0, 0x10, 0x81, - 0x3a, 0x00, 0x00, 0x04, 0xe1, 0xb0, 0x00, 0x80, - 0x32, 0x21, 0x13, 0x03, 0xe2, 0x53, 0x30, 0x01, - 0x1a, 0xff, 0xff, 0xf9, 0xea, 0x00, 0x00, 0x03, - 0xe1, 0xb0, 0x00, 0x80, 0x22, 0x21, 0x13, 0x03, - 0xe2, 0x53, 0x30, 0x01, 0x1a, 0xff, 0xff, 0xf4, - 0xe1, 0xa0, 0x0d, 0x21, 0xe1, 0x2f, 0xff, 0x1e, - 0xe9, 0x2d, 0x41, 0xf0, 0xe2, 0x4d, 0xd0, 0x14, - 0xe3, 0xa0, 0xc0, 0x44, 0xe2, 0x8c, 0xc4, 0x66, - 0xe5, 0x9c, 0xc0, 0x00, 0xe5, 0x9f, 0x01, 0x94, - 0xe5, 0x80, 0xc0, 0x00, 0xe1, 0xa0, 0xc1, 0x4c, - 0xe2, 0x0c, 0xc0, 0x03, 0xe5, 0x9f, 0x01, 0x88, - 0xe5, 0xc0, 0xc0, 0x00, 0xe5, 0x9f, 0x01, 0x84, - 0xe5, 0x90, 0x00, 0x00, 0xe0, 0x80, 0x64, 0x0c, - 0xe1, 0xa0, 0x70, 0x06, 0xe8, 0xb7, 0x00, 0x01, - 0xe2, 0x00, 0x40, 0x1f, 0xe2, 0x8f, 0x2f, 0x69, - 0xe7, 0x92, 0x21, 0x04, 0xe3, 0x52, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x51, 0xe5, 0x9f, 0x32, 0x1c, - 0xe2, 0x83, 0x50, 0xbc, 0xe5, 0x9f, 0x12, 0x1c, - 0xe1, 0x55, 0x00, 0x01, 0x03, 0xa0, 0x50, 0x00, - 0xe5, 0x9f, 0x12, 0x04, 0xe1, 0x51, 0x00, 0x05, - 0x0a, 0x00, 0x00, 0x45, 0xe5, 0x9f, 0x81, 0xf4, - 0xe0, 0x88, 0x80, 0x03, 0xe5, 0x9f, 0x11, 0x5c, - 0xe1, 0xa0, 0x36, 0x20, 0xe2, 0x03, 0x30, 0x0f, - 0xe1, 0x81, 0x10, 0x03, 0xe5, 0x9f, 0x21, 0x48, - 0xe7, 0x92, 0x31, 0x04, 0xe1, 0xa0, 0x39, 0x83, - 0xe1, 0xa0, 0x35, 0xa3, 0xe1, 0x81, 0x10, 0x03, - 0xe1, 0xa0, 0x33, 0xa0, 0xe2, 0x03, 0x30, 0x01, - 0xe1, 0xa0, 0x3b, 0x03, 0xe1, 0x81, 0x10, 0x03, - 0xe1, 0xa0, 0x35, 0x20, 0xe2, 0x03, 0x30, 0x03, - 0xe1, 0xa0, 0x32, 0x03, 0xe1, 0x81, 0x10, 0x03, - 0xe1, 0xa0, 0x3a, 0xa0, 0xe2, 0x03, 0x30, 0x01, - 0xe1, 0xa0, 0x3b, 0x83, 0xe1, 0x81, 0x10, 0x03, - 0xe1, 0xa0, 0x34, 0xa0, 0xe2, 0x03, 0x30, 0x01, - 0xe1, 0xa0, 0x3a, 0x83, 0xe1, 0x81, 0x10, 0x03, - 0xe2, 0x00, 0x30, 0x60, 0xe1, 0xa0, 0x31, 0x03, - 0xe1, 0x81, 0x10, 0x03, 0xe8, 0xa8, 0x00, 0x02, - 0xe5, 0x9f, 0x00, 0xf0, 0xe3, 0xa0, 0x10, 0x30, - 0xe5, 0x80, 0x10, 0x00, 0xe5, 0x9f, 0x00, 0x9c, - 0xe5, 0xd0, 0x40, 0x00, 0xe2, 0x84, 0x10, 0x01, - 0xe5, 0xc0, 0x10, 0x00, 0xe2, 0x04, 0x40, 0x00, - 0xe5, 0x9f, 0x00, 0x98, 0xe5, 0x90, 0x10, 0x00, - 0xe3, 0x11, 0x00, 0x10, 0x1a, 0x00, 0x00, 0x1a, - 0xe5, 0x80, 0x10, 0x00, 0xe5, 0x8f, 0x51, 0x4c, - 0xe1, 0xa0, 0x22, 0x04, 0xe1, 0x82, 0x10, 0x0c, - 0xe5, 0x9f, 0x00, 0xac, 0xe0, 0x80, 0x02, 0x01, - 0xe5, 0x80, 0x70, 0x00, 0xe5, 0x80, 0x80, 0x04, - 0xe5, 0x9f, 0x10, 0x5c, 0xe5, 0x80, 0x10, 0x08, - 0xe5, 0x9f, 0x10, 0x58, 0xe5, 0x80, 0x10, 0x0c, - 0xe5, 0x9f, 0x00, 0x58, 0xe5, 0x90, 0x10, 0x00, - 0xe0, 0x84, 0x00, 0x01, 0xe3, 0xa0, 0x20, 0x01, - 0xe1, 0xa0, 0x00, 0x12, 0xe3, 0xa0, 0x10, 0x40, - 0xe2, 0x81, 0x14, 0x66, 0xe5, 0x81, 0x00, 0x00, - 0xe3, 0xa0, 0x10, 0x01, 0xe1, 0xa0, 0x0c, 0x11, - 0xe3, 0xa0, 0x10, 0xb8, 0xe2, 0x81, 0x14, 0x66, - 0xe5, 0x81, 0x00, 0x00, 0xe2, 0x8d, 0xd0, 0x14, - 0xe8, 0xbd, 0x81, 0xf0, 0xe5, 0x9f, 0x10, 0xf0, - 0xe2, 0x81, 0x10, 0x01, 0xe5, 0x8f, 0x10, 0xe8, - 0xea, 0xff, 0xff, 0xf4, 0xe5, 0x9f, 0xf0, 0x08, - 0xa0, 0x00, 0x05, 0xc4, 0x80, 0x00, 0x00, 0xb8, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0xf4, - 0xa0, 0x00, 0x04, 0x28, 0xa0, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x05, 0x50, 0x2c, 0x00, 0x1f, 0xe8, - 0x2c, 0x00, 0x1f, 0xea, 0x2c, 0x00, 0x1f, 0xf4, - 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x2c, 0x00, 0x02, 0x00, - 0x64, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x80, - 0x47, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0xc0, - 0x66, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x07, 0xe1, 0xb0, 0xf0, 0x0e, - 0xe5, 0x9f, 0xf1, 0x00, 0xe2, 0x5e, 0xf0, 0x04, - 0xe2, 0x5e, 0xf0, 0x08, 0xea, 0x00, 0x00, 0x02, - 0xe5, 0x9f, 0xf0, 0xec, 0xe2, 0x5e, 0xf0, 0x04, - 0x2c, 0x00, 0x00, 0xe8, 0xe1, 0x0f, 0x00, 0x00, - 0xe3, 0xc0, 0x00, 0x1f, 0xe3, 0x80, 0x00, 0x1b, - 0xe1, 0x29, 0xf0, 0x00, 0xe5, 0x9f, 0xd0, 0xd8, - 0xe5, 0x9f, 0x00, 0xd8, 0xe0, 0x8d, 0xd0, 0x00, - 0xe1, 0x0f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x1f, - 0xe3, 0x80, 0x00, 0x13, 0xe1, 0x29, 0xf0, 0x00, - 0xe5, 0x9f, 0xd0, 0xc4, 0xe5, 0x9f, 0x00, 0xc4, - 0xe0, 0x8d, 0xd0, 0x00, 0xe1, 0x0f, 0x00, 0x00, - 0xe3, 0xc0, 0x00, 0x1f, 0xe3, 0x80, 0x00, 0x12, - 0xe1, 0x29, 0xf0, 0x00, 0xe5, 0x9f, 0xd0, 0xb0, - 0xe5, 0x9f, 0x00, 0xb0, 0xe0, 0x8d, 0xd0, 0x00, - 0xe1, 0x0f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x9f, - 0xe3, 0x80, 0x00, 0x10, 0xe1, 0x29, 0xf0, 0x00, - 0xe5, 0x9f, 0xd0, 0x60, 0xeb, 0x00, 0x00, 0x08, - 0xe5, 0x9f, 0x00, 0x64, 0xe5, 0x9f, 0x10, 0x5c, - 0xeb, 0x00, 0x37, 0x7f, 0xe5, 0x9f, 0x00, 0x60, - 0xe5, 0x9f, 0x10, 0x58, 0xeb, 0x00, 0x37, 0x7f, - 0xe5, 0x9f, 0xe0, 0x58, 0xe3, 0x8e, 0xe0, 0x01, - 0xe1, 0x2f, 0xff, 0x1e, 0xe5, 0x9f, 0x00, 0x8c, - 0xe5, 0x9f, 0x10, 0x8c, 0xe5, 0x9f, 0x30, 0x8c, - 0xe1, 0x50, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x03, - 0xe1, 0x51, 0x00, 0x03, 0x34, 0x90, 0x20, 0x04, - 0x34, 0x81, 0x20, 0x04, 0x3a, 0xff, 0xff, 0xfb, - 0xe5, 0x9f, 0x10, 0x74, 0xe3, 0xa0, 0x20, 0x00, - 0xe1, 0x53, 0x00, 0x01, 0x34, 0x83, 0x20, 0x04, - 0x3a, 0xff, 0xff, 0xfc, 0xe1, 0x2f, 0xff, 0x1e, - 0x2e, 0x1b, 0xff, 0xf0, 0x2e, 0x1b, 0x7f, 0xf0, - 0x2e, 0x1b, 0x7f, 0xef, 0x2e, 0x08, 0xd7, 0x6c, - 0xcc, 0x1f, 0xff, 0xef, 0xcc, 0x1f, 0x7f, 0xf0, - 0x2e, 0x00, 0x1a, 0xf9, 0x2e, 0x02, 0x38, 0xbc, - 0x2e, 0x02, 0x39, 0xb4, 0x2e, 0x08, 0x33, 0xa4, - 0x00, 0x00, 0x08, 0x00, 0x2e, 0x08, 0x23, 0xa4, - 0x00, 0x00, 0x08, 0x00, 0x2e, 0x08, 0x2b, 0xa4, - 0x00, 0x00, 0x08, 0x00, 0x2e, 0x08, 0x97, 0x1c, - 0xe5, 0x9f, 0xf0, 0x04, 0xe5, 0x9f, 0xf0, 0x04, - 0xe5, 0x9f, 0xf0, 0x04, 0x2e, 0x08, 0x97, 0x1c, - 0x2e, 0x08, 0x97, 0x1d, 0x2e, 0x08, 0x97, 0x1e, - 0x2e, 0x03, 0xa9, 0xd0, 0x2e, 0x08, 0x00, 0x00, - 0x2e, 0x08, 0x3c, 0x20, 0x2e, 0x08, 0xd7, 0x68, - 0x1d, 0x77, 0x1e, 0x16, 0x03, 0x00, 0x03, 0x03, - 0x1d, 0x7f, 0x50, 0x50, 0x4f, 0x5d, 0x49, 0x5d, - 0x40, 0x4a, 0x44, 0x43, 0x01, 0x49, 0x4d, 0x56, - 0x48, 0x4b, 0x5d, 0x4f, 0x5d, 0x4d, 0x4f, 0x0a, - 0x78, 0x71, 0x73, 0x7f, 0x70, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x1b, 0x12, 0x12, 0x12, 0x12, - 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, - 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, - 0x12, 0x12, 0x12, 0x12, 0x08, 0x0f, 0x0f, 0x0d, - 0x13, 0x0d, 0x11, 0x0e, 0x07, 0x08, 0x09, 0x0d, - 0x0d, 0x15, 0x10, 0x05, 0x08, 0x08, 0x09, 0x0e, - 0x07, 0x08, 0x07, 0x07, 0x0d, 0x0d, 0x0d, 0x0d, - 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x07, 0x07, - 0x0e, 0x0e, 0x0e, 0x0d, 0x18, 0x0f, 0x10, 0x11, - 0x11, 0x10, 0x0f, 0x13, 0x11, 0x06, 0x0c, 0x10, - 0x0d, 0x13, 0x11, 0x13, 0x10, 0x13, 0x11, 0x10, - 0x0e, 0x11, 0x0f, 0x17, 0x0f, 0x10, 0x0f, 0x07, - 0x07, 0x07, 0x0c, 0x0d, 0x08, 0x0d, 0x0e, 0x0c, - 0x0e, 0x0d, 0x07, 0x0e, 0x0e, 0x05, 0x06, 0x0c, - 0x06, 0x14, 0x0e, 0x0d, 0x0e, 0x0e, 0x08, 0x0c, - 0x07, 0x0e, 0x0b, 0x11, 0x0b, 0x0c, 0x0c, 0x08, - 0x06, 0x08, 0x0e, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xc0, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x19, 0x80, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x0c, 0xc0, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x0c, 0xc0, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x19, 0x80, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, - 0x0c, 0xc0, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x0c, 0xc0, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x60, 0x00, 0x00, 0x06, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x60, 0x00, 0x00, 0x0e, 0xe0, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x30, 0x01, 0x80, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x60, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xc0, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xc0, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x60, 0x60, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xc0, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xf0, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x03, 0xe0, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x30, 0x78, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x30, 0x1c, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x3e, 0x60, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x0c, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x70, 0x60, 0x00, 0x00, 0x30, 0x01, 0x80, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x32, 0x0c, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, - 0x60, 0xe0, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, - 0x30, 0x70, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x37, 0x1c, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, - 0x71, 0xe0, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x33, 0xf8, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, - 0x7f, 0xe0, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0xf0, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, - 0x1e, 0x30, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, - 0x0f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x06, 0x30, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, - 0x1e, 0x03, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x0e, 0x70, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x33, 0x07, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x0e, 0x70, 0x00, 0x00, 0x7a, 0xf0, 0x00, 0x00, - 0x61, 0x86, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x0c, 0x60, 0x00, 0x00, 0x62, 0x30, 0x00, 0x00, - 0x61, 0x8e, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x0c, 0x60, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x61, 0x8c, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0xff, 0xf8, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x61, 0x9c, 0x00, 0x00, 0x0c, 0xe0, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf8, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x61, 0xb8, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0xc0, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, - 0x33, 0x30, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0xc0, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, - 0x1e, 0x73, 0xc0, 0x00, 0x1f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0xc0, 0x00, 0x00, 0x02, 0xe0, 0x00, 0x00, - 0x00, 0x66, 0x60, 0x00, 0x39, 0xcc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x39, 0xc0, 0x00, 0x00, 0x02, 0x70, 0x00, 0x00, - 0x00, 0xec, 0x30, 0x00, 0x70, 0xdc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf8, 0x00, 0x00, 0x02, 0x30, 0x00, 0x00, - 0x00, 0xcc, 0x30, 0x00, 0x60, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf8, 0x00, 0x00, 0x62, 0x30, 0x00, 0x00, - 0x01, 0xcc, 0x30, 0x00, 0x60, 0x78, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x80, 0x00, 0x00, 0x72, 0x70, 0x00, 0x00, - 0x01, 0x8c, 0x30, 0x00, 0x70, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0x3a, 0xf0, 0x00, 0x00, - 0x03, 0x8c, 0x30, 0x00, 0x38, 0xfc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x03, 0x06, 0x60, 0x00, 0x3f, 0xee, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x07, 0x03, 0xc0, 0x00, 0x0f, 0xcc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0xc0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x70, 0x60, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x60, 0x60, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x1d, 0x80, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x06, 0xc0, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x19, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x0e, 0xc0, 0x00, 0x00, - 0x3f, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x01, 0xc0, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x01, 0xc0, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, - 0x7f, 0xe0, 0x00, 0x00, 0x67, 0x80, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x1c, 0xc0, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x38, 0xc0, 0x00, 0x00, - 0x60, 0x70, 0x00, 0x00, 0x78, 0xe0, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x03, 0xc0, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x30, 0xe0, 0x00, 0x00, - 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x70, 0x00, 0x00, - 0x0f, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x38, 0x60, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x30, 0x0f, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x38, 0x06, 0x00, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, - 0x07, 0xc0, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x0f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x0f, 0xfe, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x30, 0x1e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3c, 0x07, 0x80, 0x00, 0x38, 0x06, 0x00, 0x00, - 0x0f, 0xfe, 0x00, 0x00, 0x07, 0xc1, 0xe0, 0x00, - 0x07, 0xc0, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, - 0x1e, 0x1e, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1e, 0x0f, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x30, 0x3c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3c, 0x07, 0x80, 0x00, 0x3c, 0x06, 0x00, 0x00, - 0x1e, 0x0f, 0x00, 0x00, 0x0e, 0x00, 0x70, 0x00, - 0x06, 0xc0, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, - 0x38, 0x07, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0x03, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x30, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3c, 0x07, 0x80, 0x00, 0x3e, 0x06, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x1c, 0x79, 0xb8, 0x00, - 0x0e, 0xe0, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, - 0x30, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x03, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x30, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x36, 0x0d, 0x80, 0x00, 0x36, 0x06, 0x00, 0x00, - 0x30, 0x01, 0x80, 0x00, 0x39, 0xff, 0x9c, 0x00, - 0x0c, 0x60, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x31, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x36, 0x0d, 0x80, 0x00, 0x37, 0x06, 0x00, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0x31, 0xcf, 0x9c, 0x00, - 0x0c, 0x60, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x37, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x36, 0x0d, 0x80, 0x00, 0x33, 0x06, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x33, 0x87, 0x0c, 0x00, - 0x1c, 0x70, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x3f, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x37, 0x1d, 0x80, 0x00, 0x31, 0x86, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x77, 0x03, 0x0c, 0x00, - 0x18, 0x30, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x60, 0x3f, 0x80, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x33, 0x19, 0x80, 0x00, 0x31, 0xc6, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x67, 0x03, 0x0c, 0x00, - 0x38, 0x38, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x3f, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x3d, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x33, 0x19, 0x80, 0x00, 0x30, 0xc6, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x66, 0x03, 0x0c, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x01, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x33, 0x19, 0x80, 0x00, 0x30, 0x66, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x66, 0x07, 0x1c, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x70, 0x03, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0x01, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, - 0x30, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0xb1, 0x80, 0x00, 0x30, 0x76, 0x00, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0x66, 0x06, 0x18, 0x00, - 0x70, 0x1c, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x07, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x01, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x60, 0xc0, 0x00, 0x00, - 0x30, 0x38, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0xb1, 0x80, 0x00, 0x30, 0x36, 0x00, 0x00, - 0x30, 0x01, 0x80, 0x00, 0x67, 0x0e, 0x38, 0x00, - 0x60, 0x0c, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x38, 0x06, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x60, 0xc0, 0x00, 0x00, - 0x30, 0x3c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0xf1, 0x80, 0x00, 0x30, 0x3e, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x77, 0x1e, 0x70, 0x00, - 0x60, 0x0c, 0x00, 0x00, 0x30, 0x1e, 0x00, 0x00, - 0x1e, 0x1e, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1e, 0x0f, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, - 0x30, 0x1c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0xf1, 0x80, 0x00, 0x30, 0x1e, 0x00, 0x00, - 0x1e, 0x0f, 0x00, 0x00, 0x73, 0xff, 0xe0, 0x00, - 0xe0, 0x0e, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x0f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0f, 0xff, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, - 0x30, 0x0e, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x30, 0xe1, 0x80, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x0f, 0xfe, 0x00, 0x00, 0x39, 0xe7, 0xc0, 0x00, - 0xc0, 0x06, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x07, 0xf0, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x03, 0xfc, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x30, 0x07, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x30, 0xe1, 0x80, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x3c, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x07, 0xf0, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, - 0xc0, 0x38, 0x06, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0xe0, 0x07, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x0f, 0xfe, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x1f, 0xfc, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0xe0, 0x0e, 0x00, 0x00, - 0xe0, 0x7c, 0x0e, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x1e, 0x00, 0x00, - 0x1e, 0x0f, 0x00, 0x00, 0x30, 0x1e, 0x00, 0x00, - 0x3c, 0x1c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, - 0xe0, 0x7c, 0x0e, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x30, 0x1c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x0e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x60, 0x6c, 0x0c, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x01, 0x80, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x60, 0xec, 0x0c, 0x00, 0x0e, 0xe0, 0x00, 0x00, - 0x1c, 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x70, 0xee, 0x1c, 0x00, 0x06, 0xc0, 0x00, 0x00, - 0x0e, 0x70, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x39, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x30, 0x1e, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x70, 0xc6, 0x1c, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x06, 0x60, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, - 0x30, 0xc6, 0x18, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x07, 0xf8, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x18, 0x30, 0x00, 0x00, - 0x31, 0xc7, 0x18, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x03, 0xc0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x30, 0xe0, 0x00, 0x00, - 0x00, 0x7c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x31, 0x83, 0x18, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0x30, 0x70, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x00, - 0x39, 0x83, 0x38, 0x00, 0x0e, 0xe0, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0x30, 0x38, 0x00, 0x00, - 0x60, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x0e, 0xe0, 0x00, 0x00, - 0x1b, 0x83, 0xb0, 0x00, 0x0e, 0xe0, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x31, 0x80, 0x00, 0x30, 0x38, 0x00, 0x00, - 0x70, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x30, 0x06, 0x00, 0x00, 0x0e, 0xe0, 0x00, 0x00, - 0x1b, 0x01, 0xb0, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0x3f, 0x80, 0x00, 0x30, 0x1c, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x1f, 0x01, 0xf0, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1e, 0x1f, 0x00, 0x00, 0x30, 0x1e, 0x00, 0x00, - 0x3c, 0x1c, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x1c, 0x1c, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x1f, 0x01, 0xf0, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0f, 0xff, 0x80, 0x00, 0x30, 0x0e, 0x00, 0x00, - 0x1f, 0xfc, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x0f, 0xf8, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x1e, 0x00, 0xe0, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x03, 0xff, 0xc0, 0x00, 0x30, 0x07, 0x00, 0x00, - 0x07, 0xf0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x07, 0xf0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x0e, 0x00, 0xe0, 0x00, 0xe0, 0x0e, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x33, 0xc0, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x0f, 0xb0, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x0f, 0x30, 0x00, 0x00, 0x33, 0xc0, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x37, 0xcf, 0x80, 0x00, 0x33, 0xc0, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3f, 0xdf, 0x80, 0x00, 0x37, 0xe0, 0x00, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3c, 0xf9, 0xc0, 0x00, 0x3c, 0x70, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x60, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x70, 0x60, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x38, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x70, 0xc0, 0x00, 0x38, 0x30, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xe0, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x7f, 0xf0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x60, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x33, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x60, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x33, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0xe0, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x70, 0x60, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x70, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x71, 0xe0, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xe0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x30, 0x00, 0x00, 0x33, 0xc0, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0f, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x60, 0xc0, 0x00, 0x30, 0x30, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x37, 0xc0, 0x00, 0x00, - 0x0f, 0x30, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00, - 0xc0, 0x81, 0x80, 0x00, 0xe0, 0x60, 0x00, 0x00, - 0x60, 0x60, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x3f, 0xf0, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00, - 0xc1, 0xc1, 0x80, 0x00, 0x60, 0xc0, 0x00, 0x00, - 0x60, 0xe0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, - 0xe1, 0xc1, 0x80, 0x00, 0x31, 0xc0, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x60, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x60, 0xc0, 0x00, 0x00, - 0x63, 0xe3, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x00, - 0x30, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3e, 0x08, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, - 0x63, 0x63, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x31, 0xc0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x7f, 0x98, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, - 0x67, 0x63, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x39, 0xc0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x67, 0xf8, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1f, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, - 0x37, 0x76, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x19, 0x80, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x41, 0xf0, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x00, - 0x36, 0x36, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x19, 0x80, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x30, 0x18, 0x00, 0x00, - 0x60, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x30, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x3e, 0x3e, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x60, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x70, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x1e, 0x3c, 0x00, 0x00, 0x3b, 0x80, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0xf0, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1c, 0x1c, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x37, 0xe0, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1c, 0x1c, 0x00, 0x00, 0x60, 0xc0, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x02, 0x00, 0x00, 0x33, 0xc0, 0x00, 0x00, - 0x0f, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x0f, 0x30, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0c, 0x18, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, - 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, - 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, - 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, - 0x0a, 0x12, 0x13, 0x10, 0x17, 0x10, 0x15, 0x10, - 0x08, 0x09, 0x0a, 0x10, 0x10, 0x1a, 0x13, 0x06, - 0x0a, 0x0a, 0x0b, 0x11, 0x08, 0x0a, 0x08, 0x08, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x08, 0x08, 0x11, 0x11, 0x11, 0x10, - 0x1d, 0x13, 0x13, 0x15, 0x15, 0x13, 0x12, 0x17, - 0x15, 0x07, 0x0f, 0x13, 0x10, 0x17, 0x15, 0x17, - 0x13, 0x17, 0x15, 0x13, 0x13, 0x15, 0x13, 0x1e, - 0x13, 0x13, 0x12, 0x08, 0x08, 0x08, 0x0e, 0x10, - 0x0a, 0x10, 0x10, 0x0f, 0x10, 0x10, 0x08, 0x10, - 0x10, 0x07, 0x07, 0x0e, 0x07, 0x19, 0x10, 0x10, - 0x10, 0x10, 0x0a, 0x0f, 0x08, 0x10, 0x0d, 0x15, - 0x0d, 0x0d, 0x0e, 0x0a, 0x08, 0x0a, 0x11, 0x16, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, - 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x07, 0xff, 0x80, 0x00, 0x0e, 0x38, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x00, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x0f, 0xff, 0xe0, 0x00, 0x0e, 0x38, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x00, 0x00, - 0x03, 0xb8, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x1f, 0x83, 0xf0, 0x00, 0x0e, 0x38, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x07, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x07, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x07, 0x1c, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, - 0x78, 0x00, 0x3c, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x0f, 0x1e, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x78, 0x00, 0x3c, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, - 0x0e, 0x0e, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x70, 0x00, 0x1c, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, - 0x0e, 0x0e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x70, 0x00, 0x1c, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, - 0x1e, 0x0f, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x70, 0x00, 0x1c, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, - 0x1c, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x70, 0x00, 0x1c, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0x38, 0x3e, 0x00, 0x00, - 0x1f, 0xff, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, - 0x70, 0x00, 0x1c, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0x38, 0x1f, 0x00, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x78, 0x00, 0x3c, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0x38, 0x07, 0x80, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x3f, 0x9c, 0x00, 0x00, - 0x78, 0x00, 0x3c, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x78, 0x1c, 0x00, 0x00, - 0x3c, 0x00, 0x78, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x3c, 0x01, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x78, 0x03, 0xc0, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x1e, 0x00, 0xf8, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x3c, 0x01, 0xe0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x39, 0xc3, 0x80, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0x70, 0x3c, 0x00, 0x00, - 0x1f, 0x83, 0xf0, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x1f, 0x07, 0xc0, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x39, 0xe7, 0x00, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0x78, 0x7c, 0x00, 0x00, - 0x0f, 0xff, 0xe0, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x0f, 0xff, 0x80, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0x00, 0x00, - 0xe0, 0x01, 0xe0, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x03, 0xff, 0xc0, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x07, 0xff, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x7c, 0x00, 0x00, - 0xe0, 0x00, 0xe0, 0x00, 0x1f, 0x8e, 0x00, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x03, 0xfe, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, - 0x0f, 0xe0, 0x00, 0x00, 0x0f, 0x80, 0x60, 0x00, - 0x03, 0xe0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x01, 0xc0, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x1f, 0xc0, 0xe0, 0x00, - 0x07, 0xf0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, - 0x3d, 0xb8, 0x00, 0x00, 0x38, 0xe0, 0xc0, 0x00, - 0x0f, 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x76, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0x0e, 0x38, 0x00, 0x00, - 0x79, 0xbc, 0x00, 0x00, 0x30, 0x61, 0xc0, 0x00, - 0x0e, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0x0e, 0x38, 0x00, 0x00, - 0x71, 0x9c, 0x00, 0x00, 0x30, 0x61, 0x80, 0x00, - 0x0e, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, - 0x71, 0x80, 0x00, 0x00, 0x30, 0x63, 0x80, 0x00, - 0x0e, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x73, 0x80, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, - 0x79, 0x80, 0x00, 0x00, 0x30, 0x63, 0x00, 0x00, - 0x0f, 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, - 0x7d, 0x80, 0x00, 0x00, 0x30, 0x67, 0x00, 0x00, - 0x07, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x39, 0xc0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x78, 0x00, 0x00, - 0x3f, 0x80, 0x00, 0x00, 0x38, 0xe6, 0x00, 0x00, - 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x19, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xce, 0x00, 0x00, - 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x0f, 0xf8, 0x00, 0x00, 0x0f, 0x8c, 0x7c, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x70, 0x00, 0x00, - 0x01, 0xfc, 0x00, 0x00, 0x00, 0x1c, 0xfe, 0x00, - 0x3e, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x00, - 0x01, 0xbe, 0x00, 0x00, 0x00, 0x19, 0xc7, 0x00, - 0x38, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, - 0x01, 0x9e, 0x00, 0x00, 0x00, 0x39, 0x83, 0x00, - 0x78, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, - 0x01, 0x8e, 0x00, 0x00, 0x00, 0x31, 0x83, 0x00, - 0x70, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, - 0x71, 0x8e, 0x00, 0x00, 0x00, 0x71, 0x83, 0x00, - 0x70, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x71, 0x8e, 0x00, 0x00, 0x00, 0x61, 0x83, 0x00, - 0x70, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x79, 0x9e, 0x00, 0x00, 0x00, 0xe1, 0x83, 0x00, - 0x78, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x79, 0xe0, 0x00, 0x00, - 0x3d, 0xbc, 0x00, 0x00, 0x00, 0xc1, 0xc7, 0x00, - 0x3c, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x01, 0xc0, 0xfe, 0x00, - 0x1f, 0xfb, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, - 0x0f, 0xf0, 0x00, 0x00, 0x01, 0x80, 0x7c, 0x00, - 0x0f, 0xe1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xc0, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, - 0x0f, 0xe0, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x03, 0xf0, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x0f, 0xf8, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x1f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x3c, 0x3c, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, - 0x7c, 0x7c, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, - 0x00, 0xf8, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3e, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, - 0x78, 0x3c, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, - 0x01, 0xf8, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x78, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x78, 0x0e, 0x00, 0x00, - 0x78, 0x1e, 0x00, 0x00, 0x1e, 0xe0, 0x00, 0x00, - 0x70, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x01, 0xf8, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x03, 0xb8, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x3f, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x10, 0xe0, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x07, 0x38, 0x00, 0x00, 0x7b, 0xe0, 0x00, 0x00, - 0x73, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x1c, 0x38, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x07, 0xfc, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x0f, 0x38, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, - 0x77, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x03, 0xfc, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x0e, 0x38, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, - 0x7f, 0xfc, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x0f, 0xe0, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7e, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x1c, 0x38, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, - 0x7c, 0x3e, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x3c, 0x3e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x38, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x78, 0x1e, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x3c, 0x3c, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7e, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x01, 0xe0, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x78, 0x38, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x78, 0x1e, 0x00, 0x00, 0x1f, 0xee, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x03, 0xfc, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x03, 0xc0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x0f, 0xce, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xfc, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x1f, 0xf0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x3f, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x78, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x7f, 0xfe, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x78, 0x0e, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x70, 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x38, 0x1e, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x78, 0x1e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x3c, 0x3c, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x7c, 0x3e, 0x00, 0x00, 0x78, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x7f, 0xfc, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x1f, 0xfc, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x7f, 0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x0f, 0xf8, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x1f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x7f, 0xfc, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0xe0, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0xf0, 0x00, 0x01, 0xf0, 0x00, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x00, 0xff, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0x01, 0xe0, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, - 0x3c, 0x00, 0xe0, 0x00, 0x01, 0xff, 0x00, 0x00, - 0x00, 0x7f, 0xfe, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x07, 0xff, 0xc0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0x03, 0xc0, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, - 0x3c, 0x00, 0xe0, 0x00, 0x07, 0xff, 0x80, 0x00, - 0x01, 0xff, 0xff, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x3f, 0xff, 0xc0, 0x00, 0x3f, 0xff, 0x80, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xe0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0x07, 0x80, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xfc, 0x00, - 0x3e, 0x00, 0xe0, 0x00, 0x0f, 0xff, 0xe0, 0x00, - 0x03, 0xf8, 0x3f, 0x80, 0x03, 0xb8, 0x00, 0x00, - 0x38, 0x0f, 0x80, 0x00, 0x1f, 0x83, 0xe0, 0x00, - 0x38, 0x07, 0xc0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1f, 0x83, 0xf0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0x0f, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x7e, 0x00, 0xfc, 0x00, - 0x3f, 0x00, 0xe0, 0x00, 0x1f, 0x83, 0xf0, 0x00, - 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xbc, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x3e, 0x01, 0xe0, 0x00, - 0x38, 0x01, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x7f, 0x01, 0xfc, 0x00, - 0x3f, 0x00, 0xe0, 0x00, 0x3e, 0x00, 0xf8, 0x00, - 0x07, 0x80, 0x03, 0xe0, 0x07, 0x1c, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x3c, 0x00, 0xf0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x77, 0x01, 0xdc, 0x00, - 0x3b, 0x80, 0xe0, 0x00, 0x3c, 0x00, 0x78, 0x00, - 0x0f, 0x0f, 0x1d, 0xe0, 0x07, 0x1c, 0x00, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x78, 0x00, 0x70, 0x00, - 0x38, 0x00, 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x30, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x77, 0x01, 0xdc, 0x00, - 0x3b, 0xc0, 0xe0, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x1e, 0x3f, 0xbc, 0xf0, 0x0f, 0x1e, 0x00, 0x00, - 0x38, 0x0f, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x77, 0x83, 0xdc, 0x00, - 0x39, 0xc0, 0xe0, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x1e, 0x7f, 0xfc, 0xf0, 0x0e, 0x0e, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x70, 0x00, 0x3f, 0xff, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x3f, 0xff, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x39, 0xe0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x73, 0x83, 0x9c, 0x00, - 0x38, 0xe0, 0xe0, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x1c, 0xf9, 0xf8, 0x70, 0x0e, 0x0e, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x70, 0x00, 0x3f, 0xff, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x3f, 0xff, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x3b, 0xe0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x73, 0x83, 0x9c, 0x00, - 0x38, 0xe0, 0xe0, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x3c, 0xf0, 0xf8, 0x70, 0x1e, 0x0f, 0x00, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x70, 0x00, 0x3f, 0xff, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x0f, 0xf8, 0x00, - 0x3f, 0xff, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x73, 0xc7, 0x9c, 0x00, - 0x38, 0x70, 0xe0, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x39, 0xe0, 0x78, 0x70, 0x1c, 0x07, 0x00, 0x00, - 0x38, 0x07, 0x80, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x0f, 0xf8, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x71, 0xc7, 0x1c, 0x00, - 0x38, 0x38, 0xe0, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x39, 0xe0, 0x78, 0x70, 0x1f, 0xff, 0x00, 0x00, - 0x38, 0x03, 0xc0, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x0f, 0xf8, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x3e, 0x78, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x71, 0xc7, 0x1c, 0x00, - 0x38, 0x38, 0xe0, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x39, 0xc0, 0x70, 0x70, 0x3f, 0xff, 0x80, 0x00, - 0x38, 0x01, 0xc0, 0x00, 0x78, 0x00, 0x60, 0x00, - 0x38, 0x00, 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x71, 0xef, 0x1c, 0x00, - 0x38, 0x1c, 0xe0, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x39, 0xc0, 0xf0, 0xf0, 0x3f, 0xff, 0x80, 0x00, - 0x38, 0x01, 0xc0, 0x00, 0x78, 0x00, 0xf0, 0x00, - 0x38, 0x00, 0xf0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x00, 0x38, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x70, 0x38, 0x00, 0x00, 0x38, 0x3e, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0xee, 0x1c, 0x00, - 0x38, 0x1e, 0xe0, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x39, 0xc0, 0xf0, 0xe0, 0x38, 0x03, 0x80, 0x00, - 0x38, 0x01, 0xc0, 0x00, 0x3c, 0x00, 0xf0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x70, 0x38, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0xee, 0x1c, 0x00, - 0x38, 0x0e, 0xe0, 0x00, 0x3c, 0x00, 0x78, 0x00, - 0x39, 0xe1, 0xe1, 0xc0, 0x78, 0x03, 0xc0, 0x00, - 0x38, 0x03, 0xc0, 0x00, 0x3e, 0x01, 0xe0, 0x00, - 0x38, 0x01, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x78, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x78, 0x78, 0x00, 0x00, 0x38, 0x0f, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0xfe, 0x1c, 0x00, - 0x38, 0x07, 0xe0, 0x00, 0x1e, 0x00, 0xf8, 0x00, - 0x3d, 0xe3, 0xe3, 0xc0, 0x70, 0x01, 0xc0, 0x00, - 0x38, 0x07, 0xc0, 0x00, 0x1f, 0x87, 0xe0, 0x00, - 0x38, 0x07, 0xc0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1f, 0x81, 0xf8, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x7c, 0xf8, 0x00, 0x00, 0x38, 0x07, 0x80, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x7c, 0x1c, 0x00, - 0x38, 0x07, 0xe0, 0x00, 0x1f, 0x83, 0xf0, 0x00, - 0x3c, 0xff, 0xe7, 0x80, 0x70, 0x01, 0xc0, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x3f, 0xff, 0x80, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x3f, 0xf0, 0x00, 0x00, 0x38, 0x07, 0x80, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x7c, 0x1c, 0x00, - 0x38, 0x03, 0xe0, 0x00, 0x0f, 0xff, 0xe0, 0x00, - 0x1e, 0xfe, 0xff, 0x00, 0xe0, 0x01, 0xe0, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x3f, 0xf0, 0x00, 0x00, 0x38, 0x03, 0xc0, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x7c, 0x1c, 0x00, - 0x38, 0x01, 0xe0, 0x00, 0x03, 0xff, 0xc0, 0x00, - 0x1e, 0x3c, 0x7c, 0x78, 0xe0, 0x00, 0xe0, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, - 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x0f, 0xc0, 0x00, 0x00, 0x38, 0x01, 0xe0, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x38, 0x1c, 0x00, - 0x38, 0x01, 0xe0, 0x00, 0x00, 0xfe, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xc0, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xf8, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x7f, 0xff, 0xc0, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x0f, 0x80, 0x38, - 0x78, 0x03, 0xc0, 0x00, 0xf0, 0x01, 0xe0, 0x00, - 0x7f, 0xff, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x07, 0xff, 0xc0, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x7f, 0xff, 0xc0, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0xf0, 0x01, 0xe0, 0x00, 0xf0, 0x0f, 0x80, 0x78, - 0x3c, 0x07, 0x80, 0x00, 0x70, 0x03, 0xc0, 0x00, - 0x7f, 0xff, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x0f, 0xff, 0xe0, 0x00, - 0x3f, 0xff, 0xc0, 0x00, 0x1f, 0xff, 0x00, 0x00, - 0x7f, 0xff, 0xc0, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0xf0, 0x1f, 0xc0, 0x78, - 0x1c, 0x07, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x7f, 0xff, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x07, 0xc0, 0x00, 0x1f, 0x83, 0xf0, 0x00, - 0x38, 0x03, 0xe0, 0x00, 0x3e, 0x0f, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x70, 0x01, 0xc0, 0x00, 0x70, 0x1f, 0xc0, 0x70, - 0x1e, 0x0f, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x0f, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x03, 0xc0, 0x00, 0x1e, 0x00, 0xf8, 0x00, - 0x38, 0x01, 0xe0, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x78, 0x03, 0xc0, 0x00, 0x70, 0x1d, 0xc0, 0x70, - 0x0f, 0x1e, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, - 0x00, 0x1e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x01, 0xc0, 0x00, 0x3c, 0x00, 0x78, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x78, 0x1d, 0xc0, 0xf0, - 0x07, 0xbc, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, - 0x00, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x01, 0xc0, 0x00, 0x38, 0x00, 0x3c, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x38, 0x07, 0x80, 0x00, 0x78, 0x3d, 0xe0, 0xf0, - 0x07, 0xbc, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x01, 0xc0, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x38, 0x01, 0xe0, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x3c, 0x07, 0x80, 0x00, 0x38, 0x38, 0xe0, 0xe0, - 0x03, 0xf8, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x03, 0xc0, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x38, 0x03, 0xe0, 0x00, 0x1f, 0x80, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x1c, 0x07, 0x00, 0x00, 0x38, 0x38, 0xe0, 0xe0, - 0x01, 0xf0, 0x00, 0x00, 0x07, 0xbc, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x07, 0xc0, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x3f, 0xff, 0xc0, 0x00, 0x0f, 0xf8, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x1e, 0x0f, 0x00, 0x00, 0x3c, 0x38, 0xe1, 0xe0, - 0x00, 0xe0, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x01, 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x3f, 0xff, 0x80, 0x00, 0x03, 0xfe, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x1e, 0x0f, 0x00, 0x00, 0x3c, 0x78, 0xf1, 0xe0, - 0x01, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, - 0x03, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x70, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x3f, 0xff, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x0e, 0x0e, 0x00, 0x00, 0x1c, 0x70, 0x71, 0xc0, - 0x01, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, - 0x38, 0x3c, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x0f, 0x1e, 0x00, 0x00, 0x1c, 0x70, 0x71, 0xc0, - 0x03, 0xb8, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x38, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x07, 0x1c, 0x00, 0x00, 0x1e, 0x70, 0x73, 0xc0, - 0x07, 0xbc, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x08, 0x38, 0x00, - 0x38, 0x0f, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, - 0x07, 0x1c, 0x00, 0x00, 0x1e, 0xf0, 0x7b, 0xc0, - 0x0f, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x0e, 0x78, 0x00, - 0x38, 0x07, 0x80, 0x00, 0x78, 0x03, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x3c, 0x01, 0xe0, 0x00, - 0x07, 0xbc, 0x00, 0x00, 0x0e, 0xe0, 0x3b, 0x80, - 0x0f, 0x1e, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1e, 0x0f, 0xf0, 0x00, - 0x38, 0x03, 0x80, 0x00, 0x78, 0x07, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x3c, 0x01, 0xe0, 0x00, - 0x03, 0xb8, 0x00, 0x00, 0x0e, 0xe0, 0x3b, 0x80, - 0x1e, 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1f, 0x83, 0xe0, 0x00, - 0x38, 0x03, 0xc0, 0x00, 0x3e, 0x0f, 0x80, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x1f, 0x07, 0xc0, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xe0, 0x3f, 0x80, - 0x3c, 0x07, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x00, - 0x38, 0x01, 0xe0, 0x00, 0x1f, 0xff, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, - 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xe0, 0x3f, 0x80, - 0x38, 0x03, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0xff, 0xff, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf8, 0x00, - 0x38, 0x00, 0xe0, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, - 0x01, 0xf0, 0x00, 0x00, 0x07, 0xc0, 0x1f, 0x00, - 0x78, 0x03, 0xc0, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0xff, 0xff, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x01, 0xff, 0x3c, 0x00, - 0x38, 0x00, 0xf0, 0x00, 0x07, 0xf8, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, - 0x01, 0xf0, 0x00, 0x00, 0x07, 0xc0, 0x1f, 0x00, - 0xf0, 0x01, 0xe0, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0xff, 0xff, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, - 0x39, 0xf0, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x0f, 0x9c, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, - 0x39, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x39, 0xf0, 0xf8, 0x00, - 0x39, 0xf0, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x1f, 0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3f, 0xfb, 0xfc, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x3e, 0x3c, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x00, - 0x3c, 0x7c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x3e, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x1e, 0x00, - 0x3e, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x3c, 0x1c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x38, 0x3c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x3c, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x39, 0xe0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x0e, 0x00, - 0x3c, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x1e, 0x00, 0x00, 0x78, 0x1c, 0x00, 0x00, - 0x78, 0x3c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3b, 0xc0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x70, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x70, 0x1c, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x70, 0x1c, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0x9c, 0x00, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x70, 0x1c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3b, 0xc0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x1c, 0x00, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x70, 0x1c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x39, 0xe0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x3c, 0x1e, 0x00, 0x00, 0x78, 0x1c, 0x00, 0x00, - 0x78, 0x3c, 0x00, 0x00, 0x78, 0x0e, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, - 0x3c, 0x1c, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x38, 0x3c, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x7c, 0x00, 0x00, - 0x3e, 0x3c, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x00, - 0x3c, 0x7c, 0x00, 0x00, 0x3e, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x1f, 0xfc, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0x8e, 0x00, 0x00, - 0x39, 0xf0, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x0f, 0x9c, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x0e, 0x00, - 0x38, 0x1c, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7c, 0x78, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x39, 0xf0, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, - 0x3b, 0xc0, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0xe0, 0x38, 0x00, 0x01, 0xe0, 0x70, 0x3c, 0x00, - 0xe0, 0x38, 0x00, 0x00, 0xe0, 0x38, 0x00, 0x00, - 0x7f, 0xf8, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0xf0, 0x78, 0x00, 0x00, 0xe0, 0x70, 0x38, 0x00, - 0x70, 0x70, 0x00, 0x00, 0xf0, 0x78, 0x00, 0x00, - 0x7f, 0xf8, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x3e, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0xe0, 0xf8, 0x38, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x3c, 0x1c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0xe0, 0xf8, 0x38, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x7f, 0xe3, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x38, 0x1e, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x70, 0xd8, 0x70, 0x00, - 0x1d, 0xc0, 0x00, 0x00, 0x78, 0xf0, 0x00, 0x00, - 0x01, 0xe0, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x7f, 0xff, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x71, 0xdc, 0x70, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x03, 0xc0, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x61, 0xff, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x71, 0x8c, 0x70, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x40, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x31, 0x8c, 0x60, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x39, 0xe0, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x1d, 0xc0, 0x00, 0x00, 0x33, 0x8e, 0xe0, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x1d, 0xc0, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x38, 0x0e, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x1d, 0xc0, 0x00, 0x00, 0x3b, 0x06, 0xe0, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x1d, 0xc0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x3c, 0x1e, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x0d, 0x80, 0x00, 0x00, 0x1b, 0x06, 0xe0, 0x00, - 0x1d, 0xc0, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x3c, 0x1c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x78, 0x1c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x1f, 0x07, 0xc0, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x3e, 0x3c, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, - 0x0f, 0x80, 0x00, 0x00, 0x1e, 0x07, 0xc0, 0x00, - 0x38, 0xe0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x1e, 0x03, 0xc0, 0x00, - 0x70, 0x70, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, - 0xff, 0xf8, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, - 0x39, 0xe0, 0x00, 0x00, 0x07, 0x9c, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x80, 0x00, - 0xe0, 0x38, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0xff, 0xf8, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, - 0x00, 0x00, 0x00, 0x27, 0x1a, 0x1a, 0x1a, 0x1a, - 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, - 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, - 0x1a, 0x1a, 0x1a, 0x1a, 0x0b, 0x15, 0x17, 0x13, - 0x1a, 0x13, 0x19, 0x13, 0x09, 0x0b, 0x0c, 0x13, - 0x13, 0x1e, 0x17, 0x06, 0x0b, 0x0b, 0x0d, 0x14, - 0x09, 0x0b, 0x09, 0x09, 0x13, 0x13, 0x13, 0x13, - 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x09, 0x09, - 0x14, 0x14, 0x14, 0x13, 0x23, 0x17, 0x17, 0x19, - 0x19, 0x17, 0x15, 0x1a, 0x19, 0x09, 0x11, 0x17, - 0x13, 0x1d, 0x19, 0x1a, 0x17, 0x1a, 0x19, 0x17, - 0x15, 0x19, 0x17, 0x22, 0x17, 0x15, 0x15, 0x09, - 0x09, 0x09, 0x11, 0x13, 0x0b, 0x12, 0x12, 0x11, - 0x12, 0x12, 0x0a, 0x12, 0x13, 0x07, 0x07, 0x11, - 0x07, 0x1b, 0x13, 0x12, 0x12, 0x12, 0x0b, 0x11, - 0x09, 0x13, 0x11, 0x17, 0x10, 0x11, 0x10, 0x0b, - 0x09, 0x0b, 0x14, 0x1a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, - 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, - 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, - 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, - 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, - 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, - 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, - 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, - 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, - 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, - 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, - 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, - 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, - 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, - 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, - 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, - 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe3, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe3, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xe3, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x00, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, - 0x03, 0xff, 0xf0, 0x00, 0x00, 0x07, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x07, - 0x1c, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, - 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, - 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, - 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, - 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x00, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, - 0x07, 0xe1, 0xf8, 0x00, 0x00, 0x07, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x07, - 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x07, 0x00, 0x00, 0x00, 0x00, 0xee, - 0x00, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, - 0x0f, 0x80, 0x7c, 0x00, 0x00, 0x07, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x07, - 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x01, 0xef, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x01, 0xc7, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x07, 0x00, 0x00, 0x00, 0x03, 0xc7, - 0x80, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x03, 0xf0, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0x03, 0xc7, - 0x80, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0xfc, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x0e, 0x00, 0x00, 0x00, 0x03, 0x83, - 0x80, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x07, 0x00, 0x00, 0x1f, 0xfe, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x83, - 0xc0, 0x00, 0x00, 0x78, 0x1f, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x07, 0x00, 0x00, 0x3e, 0x1f, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x01, - 0xc0, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x07, 0x00, 0x00, 0x3c, 0x0f, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x0f, 0x01, - 0xe0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x07, 0x00, 0x00, 0x78, 0x07, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x01, - 0xe0, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x03, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x0f, 0x80, 0x00, 0x00, 0x0f, 0xff, - 0xe0, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x03, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, - 0x00, 0x1c, 0x07, 0xc0, 0x00, 0x00, 0x1f, 0xff, - 0xf0, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x03, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, - 0x00, 0x1c, 0x01, 0xe0, 0x00, 0x00, 0x1f, 0xff, - 0xf0, 0x00, 0x00, 0x3f, 0xf7, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x0f, 0x00, 0x00, 0x70, 0x03, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0xf0, 0x00, 0x00, 0x1c, 0x00, - 0x70, 0x00, 0x00, 0x7c, 0x07, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x70, 0x03, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x3c, 0x00, - 0x78, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x70, 0x03, 0x80, - 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x20, 0x70, 0x00, 0x00, 0x38, 0x00, - 0x38, 0x00, 0x00, 0x70, 0x0f, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x78, 0x07, 0x80, - 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x38, - 0x07, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0xf0, 0xf0, 0x00, 0x00, 0x78, 0x00, - 0x3c, 0x00, 0x00, 0x70, 0x1f, 0x00, 0x00, 0x00, - 0x0f, 0x80, 0x7c, 0x00, 0x00, 0x3c, 0x0f, 0x00, - 0x00, 0x00, 0x0f, 0x00, 0x78, 0x00, 0x00, 0x3c, - 0x07, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0xf9, 0xf0, 0x00, 0x00, 0x78, 0x00, - 0x3c, 0x00, 0x00, 0x7c, 0x3f, 0x00, 0x00, 0x00, - 0x07, 0xe1, 0xf8, 0x00, 0x00, 0x3e, 0x1f, 0x00, - 0x00, 0x00, 0x0f, 0xc1, 0xf8, 0x00, 0x00, 0x3e, - 0x1f, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x7f, 0xe0, 0x00, 0x00, 0x70, 0x00, - 0x1c, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, - 0x03, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xfe, 0x00, - 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x1f, - 0xff, 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, - 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x3f, 0xc0, 0x00, 0x00, 0xf0, 0x00, - 0x1e, 0x00, 0x00, 0x3f, 0xf7, 0x80, 0x00, 0x00, - 0x01, 0xff, 0xe0, 0x00, 0x00, 0x0f, 0xfc, 0x00, - 0x00, 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x1f, - 0xfb, 0x80, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, - 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, - 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, - 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, - 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x1f, 0x80, 0x00, 0x00, 0xe0, 0x00, - 0x0e, 0x00, 0x00, 0x0f, 0xe3, 0x80, 0x00, 0x00, - 0x00, 0x7f, 0x80, 0x00, 0x00, 0x03, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x07, - 0xe3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0x00, 0x00, - 0x07, 0xf8, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x0e, - 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x01, 0xc7, 0x80, 0x00, 0x00, - 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x1e, - 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x03, 0xc7, 0x80, 0x00, 0x00, - 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x70, 0x1c, - 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x03, 0xc7, 0x00, 0x00, 0x00, - 0x3e, 0xde, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x3c, - 0x00, 0x00, 0x07, 0x8f, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x76, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, - 0x3c, 0xcf, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, - 0x38, 0xc7, 0x00, 0x00, 0x00, 0x38, 0x38, 0x78, - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x03, 0x8f, 0x00, 0x00, 0x00, - 0x38, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x38, 0x70, - 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, - 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, - 0x38, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x38, 0xf0, - 0x00, 0x00, 0x07, 0x8f, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x70, 0xc0, - 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, - 0x3c, 0xc0, 0x00, 0x00, 0x00, 0x38, 0x38, 0xe0, - 0x00, 0x00, 0x03, 0x9e, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x39, 0xc0, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, - 0x1e, 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x79, 0xe0, - 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x19, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x00, 0x00, - 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x71, 0xc0, - 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x1e, 0x00, 0x00, 0x00, - 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xe3, 0xc0, - 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xc3, 0x8f, - 0x80, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xbf, - 0xc0, 0x00, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, - 0xe0, 0x00, 0x1e, 0x3c, 0x78, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, - 0x00, 0xc7, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x78, - 0xf0, 0x00, 0x3c, 0x1e, 0x78, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, - 0x00, 0xc3, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x70, - 0x70, 0x00, 0x38, 0x1e, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, - 0x00, 0xc3, 0x80, 0x00, 0x00, 0x00, 0x1e, 0x70, - 0x70, 0x00, 0x38, 0x0f, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1e, 0x38, 0x00, 0x00, 0x00, - 0x70, 0xc3, 0x80, 0x00, 0x00, 0x00, 0x1c, 0x70, - 0x70, 0x00, 0x38, 0x07, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x00, - 0x78, 0xc7, 0x80, 0x00, 0x00, 0x00, 0x3c, 0x70, - 0x70, 0x00, 0x3c, 0x03, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, 0x00, - 0x78, 0xc7, 0x80, 0x00, 0x00, 0x00, 0x38, 0x70, - 0x70, 0x00, 0x3c, 0x07, 0xe0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x78, 0x00, 0x00, 0x00, - 0x3e, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x70, 0x78, - 0xf0, 0x00, 0x1f, 0x1f, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x00, 0x00, - 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x70, 0x38, - 0xe0, 0x00, 0x0f, 0xff, 0x7c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3c, 0x70, 0x00, 0x00, 0x00, - 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, - 0xc0, 0x00, 0x07, 0xfe, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, 0x00, - 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0f, - 0x80, 0x00, 0x03, 0xf8, 0x18, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xfc, - 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, - 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x7f, - 0xff, 0xc0, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xf8, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0xfe, - 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, - 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x7f, - 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x1f, 0xff, - 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x80, - 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, 0x00, 0x7f, - 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, - 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0xff, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, - 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x3e, 0x0f, - 0x80, 0x00, 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, - 0x00, 0x3e, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x1f, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x03, - 0xc0, 0x00, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, - 0x00, 0x7e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x03, 0xc0, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x3c, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x07, 0x80, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x03, - 0xc0, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, - 0x00, 0x7e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x01, 0xc0, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x78, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x03, 0x80, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, - 0x00, 0x1f, 0x70, 0x00, 0x00, 0x00, 0x70, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x00, 0xfe, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x03, 0x80, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, - 0x00, 0x1e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x01, 0xee, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x03, 0xce, 0x00, 0x00, 0x00, 0x3b, 0xf8, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, - 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xc0, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x03, 0xce, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, - 0x00, 0x00, 0x71, 0xfc, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, - 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, - 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, - 0x07, 0x8e, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, - 0x00, 0x00, 0x77, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x00, 0x78, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, - 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, - 0x80, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, - 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x7c, 0x0f, 0x80, - 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, - 0x00, 0x78, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x00, - 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x78, 0x03, 0x80, - 0x00, 0x00, 0x7e, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, - 0x00, 0x3e, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, - 0x00, 0x00, 0x7c, 0x03, 0xc0, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0x80, 0x00, - 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x3c, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, - 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, 0x00, 0x01, - 0xe0, 0x00, 0x00, 0x00, 0x78, 0x03, 0x80, 0x00, - 0x00, 0x0f, 0xfd, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x78, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, - 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, - 0x00, 0x07, 0xf1, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, - 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x01, - 0xe0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x01, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xc0, - 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, - 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, - 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xc0, - 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x03, - 0xc0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x80, 0x00, 0x00, 0x3f, 0xff, 0xc0, - 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, - 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x70, 0x01, 0xc0, - 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, - 0x00, 0x00, 0x38, 0x03, 0xc0, 0x00, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, - 0x00, 0x70, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x78, 0x07, 0x80, - 0x00, 0x00, 0x3c, 0x03, 0x80, 0x00, 0x00, 0x07, - 0x80, 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, - 0x00, 0x78, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x00, 0x3e, 0x0f, 0x80, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0x00, - 0x00, 0x00, 0x1e, 0x0f, 0x80, 0x00, 0x00, 0x07, - 0x80, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0x80, 0x00, - 0x00, 0x3c, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7f, 0xff, - 0xc0, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, - 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, - 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7f, 0xff, - 0xc0, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, - 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, - 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7f, 0xff, - 0xc0, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, - 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, - 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, - 0x1f, 0xff, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xf0, - 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x7c, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x07, - 0xc0, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, - 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0xff, - 0xc0, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, - 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, 0xf0, - 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x01, - 0xff, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0xf8, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x0f, - 0xc0, 0x00, 0x1e, 0x00, 0x1c, 0x00, 0x00, 0x01, - 0xff, 0xe0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xe0, - 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xff, - 0xe0, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, - 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xf0, - 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x03, - 0xff, 0xf8, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x01, 0xf0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x0f, - 0xc0, 0x00, 0x1f, 0x00, 0x1c, 0x00, 0x00, 0x03, - 0xff, 0xf0, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xf0, - 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x01, - 0xf0, 0x00, 0x00, 0x07, 0xc1, 0xf0, 0x00, 0x00, - 0x1c, 0x01, 0xf8, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, - 0xe0, 0xfc, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x03, 0xe0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x0f, - 0xc0, 0x00, 0x1f, 0x80, 0x1c, 0x00, 0x00, 0x07, - 0xe1, 0xf8, 0x00, 0x00, 0x01, 0xf0, 0x00, 0xf8, - 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0xf0, 0x00, 0x00, 0x0f, 0x00, 0x78, 0x00, 0x00, - 0x1c, 0x00, 0x78, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x80, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x07, 0xc0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x1f, - 0xc0, 0x00, 0x1f, 0x80, 0x1c, 0x00, 0x00, 0x0f, - 0x80, 0x7c, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x7c, - 0x00, 0x01, 0xef, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x70, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, - 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x80, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xc0, 0x1d, - 0xc0, 0x00, 0x1f, 0xc0, 0x1c, 0x00, 0x00, 0x1e, - 0x00, 0x1e, 0x00, 0x00, 0x07, 0x80, 0x00, 0x3c, - 0x00, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x70, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, - 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, - 0x00, 0x0f, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x1f, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xc0, 0x1d, - 0xc0, 0x00, 0x1d, 0xc0, 0x1c, 0x00, 0x00, 0x1e, - 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x03, 0xe3, 0x9e, - 0x00, 0x03, 0xc7, 0x80, 0x00, 0x00, 0x1c, 0x00, - 0x70, 0x00, 0x00, 0x1c, 0x00, 0x18, 0x00, 0x00, - 0x1c, 0x00, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x06, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1d, 0xe0, 0x1d, - 0xc0, 0x00, 0x1c, 0xe0, 0x1c, 0x00, 0x00, 0x1c, - 0x00, 0x0e, 0x00, 0x00, 0x0f, 0x0f, 0xf7, 0x8e, - 0x00, 0x03, 0xc7, 0x80, 0x00, 0x00, 0x1c, 0x00, - 0xf0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x7c, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x39, - 0xc0, 0x00, 0x1c, 0xf0, 0x1c, 0x00, 0x00, 0x3c, - 0x00, 0x0f, 0x00, 0x00, 0x1e, 0x1f, 0xff, 0x8f, - 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x1c, 0x01, - 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0xf8, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x39, - 0xc0, 0x00, 0x1c, 0x70, 0x1c, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x1c, 0x3e, 0x3f, 0x0f, - 0x00, 0x07, 0x83, 0xc0, 0x00, 0x00, 0x1f, 0xff, - 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfc, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1d, 0xf0, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf0, 0x39, - 0xc0, 0x00, 0x1c, 0x78, 0x1c, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x1c, 0x3c, 0x1f, 0x07, - 0x00, 0x07, 0x01, 0xc0, 0x00, 0x00, 0x1f, 0xff, - 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xff, 0xe0, - 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfc, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf0, 0x79, - 0xc0, 0x00, 0x1c, 0x3c, 0x1c, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x3c, 0x78, 0x0f, 0x07, - 0x00, 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x1f, 0xff, - 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xff, 0xe0, - 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x38, - 0x03, 0xff, 0x00, 0x00, 0x1f, 0xff, 0xfc, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x70, 0x71, - 0xc0, 0x00, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x38, 0x70, 0x0f, 0x07, - 0x00, 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x1c, 0x01, - 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xff, 0xe0, - 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x38, - 0x03, 0xff, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1f, 0x9c, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x70, 0x71, - 0xc0, 0x00, 0x1c, 0x1e, 0x1c, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x38, 0xf0, 0x0f, 0x07, - 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x1c, 0x00, - 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x03, 0xff, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1f, 0x1e, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x78, 0xf1, - 0xc0, 0x00, 0x1c, 0x0f, 0x1c, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x38, 0xe0, 0x0e, 0x07, - 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1c, 0x00, - 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0xe1, - 0xc0, 0x00, 0x1c, 0x07, 0x1c, 0x00, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0x38, 0xe0, 0x0e, 0x0f, - 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1c, 0x00, - 0x38, 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0x00, - 0x1c, 0x00, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x07, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x07, 0x80, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0xe1, - 0xc0, 0x00, 0x1c, 0x07, 0x9c, 0x00, 0x00, 0x3c, - 0x00, 0x0f, 0x00, 0x00, 0x38, 0xe0, 0x1e, 0x0e, - 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x1c, 0x00, - 0x38, 0x00, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x00, - 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x07, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x03, 0x80, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3d, 0xe1, - 0xc0, 0x00, 0x1c, 0x03, 0x9c, 0x00, 0x00, 0x1c, - 0x00, 0x0e, 0x00, 0x00, 0x38, 0xe0, 0x1e, 0x1e, - 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x1c, 0x00, - 0x38, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, - 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, - 0x00, 0x07, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x03, 0xc0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0xc1, - 0xc0, 0x00, 0x1c, 0x01, 0xdc, 0x00, 0x00, 0x1e, - 0x00, 0x1e, 0x00, 0x00, 0x38, 0xe0, 0x3c, 0x1c, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x1c, 0x00, - 0x78, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, - 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x07, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, - 0x00, 0x00, 0x00, 0x1c, 0x01, 0xe0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0xc1, - 0xc0, 0x00, 0x1c, 0x01, 0xfc, 0x00, 0x00, 0x1e, - 0x00, 0x1e, 0x00, 0x00, 0x3c, 0xf0, 0x7c, 0x3c, - 0x00, 0x78, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, - 0x78, 0x00, 0x00, 0x0f, 0x00, 0x7c, 0x00, 0x00, - 0x1c, 0x00, 0x78, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x80, 0x1f, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x3c, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1f, 0xc1, - 0xc0, 0x00, 0x1c, 0x00, 0xfc, 0x00, 0x00, 0x0f, - 0x80, 0x7c, 0x00, 0x00, 0x3c, 0x78, 0xfc, 0xf8, - 0x00, 0x78, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x01, - 0xf0, 0x00, 0x00, 0x07, 0xe1, 0xf8, 0x00, 0x00, - 0x1c, 0x01, 0xf8, 0x00, 0x00, 0x1c, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, - 0xe0, 0x7f, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x78, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1f, 0x81, - 0xc0, 0x00, 0x1c, 0x00, 0xfc, 0x00, 0x00, 0x07, - 0xe1, 0xf8, 0x00, 0x00, 0x1c, 0x7f, 0xff, 0xf0, - 0x00, 0x70, 0x00, 0x1c, 0x00, 0x00, 0x1f, 0xff, - 0xe0, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, - 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xf8, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xff, 0xfc, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, - 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x1c, 0x0f, 0x81, - 0xc0, 0x00, 0x1c, 0x00, 0x7c, 0x00, 0x00, 0x03, - 0xff, 0xf0, 0x00, 0x00, 0x1e, 0x3f, 0xdf, 0xe0, - 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, 0x1f, 0xff, - 0xc0, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, - 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xf8, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf8, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, - 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x1c, 0x0f, 0x81, - 0xc0, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x01, - 0xff, 0xe0, 0x00, 0x00, 0x0f, 0x1f, 0x0f, 0x87, - 0x80, 0xe0, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xff, - 0x80, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, - 0x1f, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x00, - 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x1c, 0x0f, 0x01, - 0xc0, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x7f, 0x80, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x7e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x01, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x1f, 0xff, - 0xc0, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, - 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0xe0, 0x00, 0x0e, 0x00, 0x00, 0xe0, - 0x03, 0xe0, 0x03, 0x80, 0x3c, 0x00, 0x78, 0x00, - 0x00, 0xf0, 0x00, 0x78, 0x00, 0x00, 0x1f, 0xff, - 0xe0, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, - 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xff, - 0xf0, 0x00, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, - 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, 0xf0, - 0x03, 0xe0, 0x07, 0x80, 0x1e, 0x00, 0xf0, 0x00, - 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x1f, 0xff, - 0xe0, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, - 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, - 0xf8, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, - 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, 0xf0, - 0x07, 0xe0, 0x07, 0x80, 0x0e, 0x00, 0xe0, 0x00, - 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x1f, 0xff, - 0xe0, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x00, - 0x00, 0x07, 0xc1, 0xf0, 0x00, 0x00, 0x1c, 0x00, - 0xf8, 0x00, 0x00, 0x0f, 0x83, 0xe0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x00, 0x70, - 0x07, 0xf0, 0x07, 0x00, 0x0f, 0x01, 0xe0, 0x00, - 0x00, 0x3c, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x01, - 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, - 0x00, 0x0f, 0x00, 0x78, 0x00, 0x00, 0x1c, 0x00, - 0x3c, 0x00, 0x00, 0x1e, 0x00, 0xf0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x00, 0x70, - 0x07, 0x70, 0x07, 0x00, 0x07, 0x83, 0xc0, 0x00, - 0x00, 0x1c, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x03, - 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, - 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, - 0x1c, 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x78, - 0x07, 0x70, 0x0f, 0x00, 0x03, 0x83, 0x80, 0x00, - 0x00, 0x1e, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x07, - 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, - 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, - 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x78, - 0x0f, 0x78, 0x0f, 0x00, 0x03, 0xc7, 0x80, 0x00, - 0x00, 0x0f, 0x07, 0x80, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, - 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, - 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x38, - 0x0e, 0x38, 0x0e, 0x00, 0x01, 0xef, 0x00, 0x00, - 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x1e, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, - 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x00, 0x1c, 0x00, - 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x38, - 0x0e, 0x38, 0x0e, 0x00, 0x00, 0xfe, 0x00, 0x00, - 0x00, 0x07, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, - 0x3c, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x1e, 0x00, 0xf0, 0x00, 0x00, 0x3c, - 0x0e, 0x38, 0x1e, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x00, 0x03, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x1e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x00, - 0xf8, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x1e, 0x00, 0xf0, 0x00, 0x00, 0x3c, - 0x1e, 0x3c, 0x1e, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x00, 0x03, 0xde, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0xf0, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xff, - 0xf8, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x1c, - 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xff, - 0xf0, 0x00, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x1c, - 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf0, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xff, - 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x07, 0x01, 0xc0, 0x00, 0x00, 0x1e, - 0x3c, 0x1c, 0x3c, 0x00, 0x00, 0xfe, 0x00, 0x00, - 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xe0, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x0f, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x07, 0x83, 0xc0, 0x00, 0x00, 0x1e, - 0x3c, 0x1e, 0x3c, 0x00, 0x01, 0xef, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0xc0, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x0e, 0x00, 0x00, 0x1c, 0x07, - 0x80, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x07, 0x83, 0xc0, 0x00, 0x00, 0x0e, - 0x38, 0x0e, 0x38, 0x00, 0x01, 0xc7, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0xc0, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x00, 0x1c, 0x07, - 0xc0, 0x00, 0x00, 0x38, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x03, 0xc7, 0x80, 0x00, 0x00, 0x0e, - 0x38, 0x0e, 0x38, 0x00, 0x03, 0xc7, 0x80, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x03, - 0xe0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, - 0x00, 0x00, 0x03, 0xc7, 0x80, 0x00, 0x00, 0x0f, - 0x78, 0x0f, 0x78, 0x00, 0x07, 0x83, 0xc0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x07, 0x3c, 0x00, 0x00, 0x1c, 0x01, - 0xf0, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x3c, - 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x0f, - 0x70, 0x07, 0x78, 0x00, 0x0f, 0x01, 0xe0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x1e, 0x07, 0xb8, 0x00, 0x00, 0x1c, 0x00, - 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x3c, - 0x00, 0x00, 0x01, 0xef, 0x00, 0x00, 0x00, 0x07, - 0x70, 0x07, 0x70, 0x00, 0x0e, 0x00, 0xe0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x07, 0xf8, 0x00, 0x00, 0x1c, 0x00, - 0x78, 0x00, 0x00, 0x1e, 0x00, 0xf8, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x78, - 0x00, 0x00, 0x01, 0xef, 0x00, 0x00, 0x00, 0x07, - 0xf0, 0x07, 0xf0, 0x00, 0x1e, 0x00, 0xf0, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x07, 0xc1, 0xf0, 0x00, 0x00, 0x1c, 0x00, - 0x78, 0x00, 0x00, 0x0f, 0xc1, 0xf0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0xc1, 0xf8, - 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x07, - 0xf0, 0x07, 0xf0, 0x00, 0x3c, 0x00, 0x78, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xff, 0xf8, 0x00, 0x00, 0x1c, 0x00, - 0x3c, 0x00, 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, - 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x07, - 0xe0, 0x03, 0xf0, 0x00, 0x38, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7f, 0xff, - 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x1c, 0x00, - 0x3e, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0xff, 0xe0, - 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, - 0xe0, 0x03, 0xe0, 0x00, 0x78, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7f, 0xff, - 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xc0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0x9f, 0x00, 0x00, 0x1c, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, - 0xe0, 0x03, 0xe0, 0x00, 0xf0, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7f, 0xff, - 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xc0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, - 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, - 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, - 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x39, 0xf8, - 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, - 0x07, 0xe7, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x07, - 0xe7, 0x00, 0x00, 0x00, 0x38, 0xfc, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x0f, 0x80, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x39, 0xf0, 0x7e, - 0x00, 0x00, 0x39, 0xfc, 0x00, 0x00, 0x00, 0x03, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x3b, 0xfc, - 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, - 0x0f, 0xf7, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, - 0xf7, 0x00, 0x00, 0x00, 0x3b, 0xfe, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x1f, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xfc, 0xff, - 0x00, 0x00, 0x3b, 0xff, 0x00, 0x00, 0x00, 0x0f, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xfe, - 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, - 0x1f, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x1f, - 0xff, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x3e, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfd, 0xff, - 0x80, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x1f, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x78, 0x1f, 0x00, 0x00, 0x00, 0x3f, 0x1f, - 0x00, 0x00, 0x00, 0x3e, 0x1e, 0x00, 0x00, 0x00, - 0x3e, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3e, - 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x0f, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1f, 0x8f, - 0x80, 0x00, 0x3f, 0x0f, 0x80, 0x00, 0x00, 0x3e, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x3e, 0x07, - 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, - 0x38, 0x1f, 0x00, 0x00, 0x00, 0x38, 0x07, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x1f, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x1f, 0x07, - 0x80, 0x00, 0x3c, 0x07, 0x80, 0x00, 0x00, 0x3c, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3c, 0x07, - 0x80, 0x00, 0x00, 0x78, 0x07, 0x00, 0x00, 0x00, - 0x78, 0x0f, 0x00, 0x00, 0x00, 0x78, 0x07, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x39, 0xe0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x03, - 0x80, 0x00, 0x3c, 0x03, 0x80, 0x00, 0x00, 0x78, - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x38, 0x03, - 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3b, 0xc0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x38, 0x03, - 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x07, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x38, 0x03, - 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x07, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0xf7, 0x00, 0x00, 0x00, 0x38, 0x03, - 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x07, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7c, 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, - 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x07, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, - 0x80, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, - 0x70, 0x07, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x07, - 0x80, 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, - 0x78, 0x0f, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x0f, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x78, - 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x70, 0x1f, 0x00, 0x00, 0x00, 0x3c, 0x0f, - 0x00, 0x00, 0x00, 0x38, 0x0f, 0x00, 0x00, 0x00, - 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, - 0x0f, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x3c, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7c, 0x3f, 0x00, 0x00, 0x00, 0x3f, 0x1f, - 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x00, 0x00, 0x00, - 0x3e, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3e, - 0x3f, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x3e, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xfe, - 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, - 0x1f, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0xff, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x1f, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0xf7, 0x80, 0x00, 0x00, 0x3b, 0xfc, - 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, - 0x0f, 0xf7, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0xff, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x0f, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x0f, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0xe3, 0x80, 0x00, 0x00, 0x39, 0xf8, - 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, - 0x07, 0xe7, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, - 0xe7, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x07, 0x80, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x03, - 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x03, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, - 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x39, 0xf8, 0x00, 0x00, - 0x00, 0x07, 0xe7, 0x00, 0x00, 0x00, 0x39, 0xe0, - 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0xf0, 0x07, 0x80, 0x00, 0x01, 0xe0, - 0x38, 0x0f, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x7f, 0xfe, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3b, 0xfc, 0x00, 0x00, - 0x00, 0x0f, 0xf7, 0x00, 0x00, 0x00, 0x3b, 0xe0, - 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0xf0, 0x07, 0x80, 0x00, 0x00, 0xe0, - 0x3c, 0x0e, 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, - 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, 0x7f, 0xfe, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xe0, - 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0xf0, - 0x7c, 0x1e, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, - 0x00, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x7f, 0xfe, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, - 0x00, 0x3e, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x00, 0x78, 0x3e, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, 0xf0, - 0x7c, 0x1e, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x3c, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3e, 0x0f, 0x00, 0x00, - 0x00, 0x38, 0x1f, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x70, - 0x7c, 0x1c, 0x00, 0x00, 0x1e, 0x38, 0x00, 0x00, - 0x00, 0x3c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x3f, 0xc0, 0xc0, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x70, - 0xec, 0x1c, 0x00, 0x00, 0x0e, 0x78, 0x00, 0x00, - 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0xf1, 0xc0, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3c, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x3c, 0x1e, 0x00, 0x00, 0x00, 0x78, - 0xee, 0x3c, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, - 0x00, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xf0, - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0x00, 0x71, 0xff, 0xc0, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x38, - 0xee, 0x38, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x00, 0x1e, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xe0, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, - 0x00, 0x00, 0x60, 0x7f, 0x80, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x1e, 0x3c, 0x00, 0x00, 0x00, 0x38, - 0xe6, 0x38, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, - 0x00, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x03, 0xc0, - 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, - 0x00, 0x00, 0x40, 0x1f, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x3d, - 0xc6, 0x78, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, - 0x00, 0x0f, 0x38, 0x00, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x1d, - 0xc7, 0x70, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, - 0x00, 0x0f, 0x38, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, - 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, - 0x00, 0x00, 0x0f, 0x78, 0x00, 0x00, 0x00, 0x1d, - 0xc7, 0x70, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, - 0x00, 0x07, 0x70, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, - 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x80, - 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, 0x00, 0x1d, - 0xc3, 0x70, 0x00, 0x00, 0x0f, 0x70, 0x00, 0x00, - 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, - 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x78, 0x07, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, - 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x0f, - 0x83, 0xe0, 0x00, 0x00, 0x1e, 0x78, 0x00, 0x00, - 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x7c, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, - 0x00, 0x3e, 0x3f, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3c, 0x1f, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x80, - 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x0f, - 0x83, 0xe0, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, - 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x80, - 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x0f, - 0x83, 0xe0, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, - 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x3b, 0xfc, 0x00, 0x00, - 0x00, 0x0f, 0xf7, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfb, 0x80, - 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x0f, - 0x03, 0xc0, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, - 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x04, 0x00, 0x00, 0x39, 0xf0, 0x00, 0x00, - 0x00, 0x03, 0xe7, 0x00, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x80, - 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x07, - 0x01, 0xc0, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, - 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0xff, 0xfc, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x08, 0xf0, 0x24, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x0c, 0x94, 0xea, 0xff, 0xfd, 0x70, - 0xea, 0x00, 0x00, 0x01, 0xe3, 0x5c, 0x00, 0xb7, - 0xa5, 0x9f, 0xf0, 0x04, 0xe0, 0x86, 0xc0, 0x0c, - 0xe5, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0x74, - 0x00, 0x00, 0x0c, 0x98, 0x00, 0x00, 0x00, 0x0f, - 0xf0, 0x24, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x0e, 0x4c, - 0xea, 0xff, 0xfd, 0x03, 0xea, 0x00, 0x00, 0x07, - 0xe5, 0x9f, 0xc0, 0x1c, 0xe5, 0x9c, 0x30, 0x00, - 0xe3, 0x83, 0x33, 0x33, 0xe1, 0x52, 0x00, 0x03, - 0x05, 0x9f, 0xc0, 0x10, 0x05, 0x9c, 0xc0, 0x00, - 0x03, 0x8c, 0x23, 0x33, 0xe5, 0x9f, 0xc0, 0x08, - 0xe5, 0x9f, 0xf0, 0x08, 0x66, 0x00, 0x00, 0x60, - 0x66, 0x00, 0x00, 0x5c, 0x66, 0x00, 0x00, 0x58, - 0x00, 0x00, 0x0e, 0x50, 0x00, 0x00, 0x00, 0x01, - 0xf0, 0x24, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x02, 0x6c, - 0xa0, 0x00, 0x0b, 0x38, 0x00, 0x00, 0x01, 0xc0, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0b, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, - 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, - 0x05, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x02, 0x02, 0x02, 0x02, 0x40, - 0xe5, 0x9f, 0xc0, 0x00, 0xe1, 0x2f, 0xff, 0x1c, - 0x2e, 0x01, 0xcf, 0x19, 0xe5, 0x9f, 0xc0, 0x00, - 0xe1, 0x2f, 0xff, 0x1c, 0x2e, 0x00, 0x5b, 0x17, - 0xe5, 0x9f, 0xc0, 0x00, 0xe1, 0x2f, 0xff, 0x1c, - 0x2e, 0x00, 0x5b, 0xa1, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x37, 0x7c, - 0x2e, 0x02, 0x38, 0x94, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x37, 0x7c, 0xff, 0x7f, 0x3f, 0x1f, - 0x0f, 0x07, 0x03, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0xcf, 0x00, 0x00, 0x02, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x01, 0x00, 0x43, 0x6f, 0x70, 0x79, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x46, 0x75, - 0x6a, 0x69, 0x74, 0x73, 0x75, 0x20, 0x53, 0x69, - 0x65, 0x6d, 0x65, 0x6e, 0x73, 0x20, 0x26, 0x20, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x67, 0x65, - 0x6e, 0x63, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x57, 0x5e, 0x61, 0xa3, - 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x0c, - 0x6c, 0x00, 0x00, 0x24, 0x64, 0x00, 0x00, 0x28, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4e, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xd0, 0x00, 0x00, 0x07, 0xd0, - 0x00, 0x00, 0x13, 0x88, 0x02, 0x02, 0x01, 0x00, - 0x00, 0x00, 0x4e, 0x20, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xd0, 0x00, 0x00, 0x07, 0xd0, - 0x00, 0x00, 0x13, 0x88, 0x02, 0x02, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xd0, - 0x2e, 0x08, 0x05, 0xd0, 0x2e, 0x08, 0x05, 0xd8, - 0x2e, 0x08, 0x05, 0xd8, 0x2e, 0x08, 0x05, 0xe0, - 0x2e, 0x08, 0x05, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, - 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, - 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, - 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, - 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, - 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, - 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, - 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, - 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, - 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, - 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, - 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, - 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, - 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, - 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, - 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, - 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, - 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, - 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, - 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, - 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, - 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, - 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, - 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, - 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, - 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6c, 0xfe, - 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, - 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, - 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, - 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, - 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, - 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, - 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, - 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, - 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, - 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, - 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, - 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, - 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, - 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, - 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, - 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, - 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, - 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, - 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, - 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, - 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, - 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, - 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, - 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, - 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, - 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, - 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, - 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, - 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, - 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, - 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, - 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00, - 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, - 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, - 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, - 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, - 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, - 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, - 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, - 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, - 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, - 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, - 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x78, 0x30, - 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00, - 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, - 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00, - 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, - 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, - 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, - 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, - 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, - 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, - 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, - 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, - 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, - 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, - 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, - 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x70, 0x00, 0x00, - 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, - 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, - 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x70, 0x00, 0x00, - 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, - 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe, - 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, - 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, - 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x6c, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xfe, - 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, - 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x36, 0x36, - 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, - 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00, - 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, - 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, - 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, - 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0xcc, 0xcc, 0xf8, 0xc4, 0xcc, 0xde, - 0xcc, 0xcc, 0xcc, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, - 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, - 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, - 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, - 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, - 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, - 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, - 0x60, 0xdc, 0x86, 0x0c, 0x18, 0x3e, 0x00, 0x00, - 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, - 0x66, 0xce, 0x9a, 0x3f, 0x06, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, - 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, - 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, - 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, - 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, - 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, - 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, - 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, - 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, - 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, - 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, - 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, - 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, - 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, - 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, - 0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, - 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, - 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x18, - 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, - 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, - 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, - 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, - 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, - 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, - 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, - 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, - 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, - 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, - 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, - 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, - 0x18, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, - 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, - 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, - 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7e, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, - 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, - 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x6c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3c, 0x66, 0x0c, 0x18, 0x32, 0x7e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, - 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x65, 0xd0, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, - 0x2e, 0x08, 0x07, 0xa4, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf7, - 0x11, 0x38, 0x06, 0x53, 0x2e, 0x08, 0x17, 0xe4, - 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x21, - 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x39, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x21, - 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb9, - 0x0e, 0xa6, 0x06, 0x53, 0x2e, 0x08, 0x19, 0x14, - 0x2e, 0x08, 0x1a, 0x38, 0x2e, 0x08, 0x19, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0x8b, 0x98, 0x00, 0x44, 0x45, 0x55, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x64, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x80, 0x10, 0x80, 0x00, 0x80, 0xda, 0x80, - 0x00, 0x5a, 0x51, 0xf0, 0x00, 0x36, 0x91, 0x22, - 0x00, 0xf0, 0x29, 0x6e, 0x00, 0x10, 0xd2, 0x92, - 0x00, 0xca, 0x6a, 0xde, 0x00, 0xa6, 0xaa, 0x10, - 0x00, 0x80, 0x3b, 0x80, 0x00, 0x80, 0xbc, 0x80, - 0x00, 0x80, 0x7e, 0x80, 0x00, 0xcf, 0x22, 0x73, - 0x00, 0x93, 0x48, 0x5d, 0x00, 0xa2, 0x73, 0x93, - 0x00, 0x25, 0xae, 0xad, 0x00, 0xa7, 0x9f, 0x60, - 0x00, 0x10, 0x10, 0x10, 0x00, 0x59, 0x10, 0x10, - 0x00, 0xa2, 0x10, 0x10, 0x00, 0xeb, 0x10, 0x10, - 0x00, 0x10, 0x10, 0x59, 0x00, 0x59, 0x10, 0x59, - 0x00, 0xa2, 0x10, 0x59, 0x00, 0xeb, 0x10, 0x59, - 0x00, 0x10, 0x10, 0xa2, 0x00, 0x59, 0x10, 0xa2, - 0x00, 0xa2, 0x10, 0xa2, 0x00, 0xeb, 0x10, 0xa2, - 0x00, 0x10, 0x10, 0xeb, 0x00, 0x59, 0x10, 0xeb, - 0x00, 0xa2, 0x10, 0xeb, 0x00, 0xeb, 0x10, 0xeb, - 0x00, 0x10, 0x2f, 0x10, 0x00, 0x59, 0x2f, 0x10, - 0x00, 0xa2, 0x2f, 0x10, 0x00, 0xeb, 0x2f, 0x10, - 0x00, 0x10, 0x2f, 0x59, 0x00, 0x59, 0x2f, 0x59, - 0x00, 0xa2, 0x2f, 0x59, 0x00, 0xeb, 0x2f, 0x59, - 0x00, 0x10, 0x2f, 0xa2, 0x00, 0x59, 0x2f, 0xa2, - 0x00, 0xa2, 0x2f, 0xa2, 0x00, 0xeb, 0x2f, 0xa2, - 0x00, 0x10, 0x2f, 0xeb, 0x00, 0x59, 0x2f, 0xeb, - 0x00, 0xa2, 0x2f, 0xeb, 0x00, 0xeb, 0x2f, 0xeb, - 0x00, 0x10, 0x4e, 0x10, 0x00, 0x59, 0x4e, 0x10, - 0x00, 0xa2, 0x4e, 0x10, 0x00, 0xeb, 0x4e, 0x10, - 0x00, 0x10, 0x4e, 0x59, 0x00, 0x59, 0x4e, 0x59, - 0x00, 0xa2, 0x4e, 0x59, 0x00, 0xeb, 0x4e, 0x59, - 0x00, 0x10, 0x4e, 0xa2, 0x00, 0x59, 0x4e, 0xa2, - 0x00, 0xa2, 0x4e, 0xa2, 0x00, 0xeb, 0x4e, 0xa2, - 0x00, 0x10, 0x4e, 0xeb, 0x00, 0x59, 0x4e, 0xeb, - 0x00, 0xa2, 0x4e, 0xeb, 0x00, 0xeb, 0x4e, 0xeb, - 0x00, 0x10, 0x6d, 0x10, 0x00, 0x59, 0x6d, 0x10, - 0x00, 0xa2, 0x6d, 0x10, 0x00, 0xeb, 0x6d, 0x10, - 0x00, 0x10, 0x6d, 0x59, 0x00, 0x59, 0x6d, 0x59, - 0x00, 0xa2, 0x6d, 0x59, 0x00, 0xeb, 0x6d, 0x59, - 0x00, 0x10, 0x6d, 0xa2, 0x00, 0x59, 0x6d, 0xa2, - 0x00, 0xa2, 0x6d, 0xa2, 0x00, 0xeb, 0x6d, 0xa2, - 0x00, 0x10, 0x6d, 0xeb, 0x00, 0x59, 0x6d, 0xeb, - 0x00, 0xa2, 0x6d, 0xeb, 0x00, 0xeb, 0x6d, 0xeb, - 0x00, 0x10, 0x8c, 0x10, 0x00, 0x59, 0x8c, 0x10, - 0x00, 0xa2, 0x8c, 0x10, 0x00, 0xeb, 0x8c, 0x10, - 0x00, 0x10, 0x8c, 0x59, 0x00, 0x59, 0x8c, 0x59, - 0x00, 0xa2, 0x8c, 0x59, 0x00, 0xeb, 0x8c, 0x59, - 0x00, 0x10, 0x8c, 0xa2, 0x00, 0x59, 0x8c, 0xa2, - 0x00, 0xa2, 0x8c, 0xa2, 0x00, 0xeb, 0x8c, 0xa2, - 0x00, 0x10, 0x8c, 0xeb, 0x00, 0x59, 0x8c, 0xeb, - 0x00, 0xa2, 0x8c, 0xeb, 0x00, 0xeb, 0x8c, 0xeb, - 0x00, 0x10, 0xab, 0x10, 0x00, 0x59, 0xab, 0x10, - 0x00, 0xa2, 0xab, 0x10, 0x00, 0xeb, 0xab, 0x10, - 0x00, 0x10, 0xab, 0x59, 0x00, 0x59, 0xab, 0x59, - 0x00, 0xa2, 0xab, 0x59, 0x00, 0xeb, 0xab, 0x59, - 0x00, 0x10, 0xab, 0xa2, 0x00, 0x59, 0xab, 0xa2, - 0x00, 0xa2, 0xab, 0xa2, 0x00, 0xeb, 0xab, 0xa2, - 0x00, 0x10, 0xab, 0xeb, 0x00, 0x59, 0xab, 0xeb, - 0x00, 0xa2, 0xab, 0xeb, 0x00, 0xeb, 0xab, 0xeb, - 0x00, 0x10, 0xca, 0x10, 0x00, 0x59, 0xca, 0x10, - 0x00, 0xa2, 0xca, 0x10, 0x00, 0xeb, 0xca, 0x10, - 0x00, 0x10, 0xca, 0x59, 0x00, 0x59, 0xca, 0x59, - 0x00, 0xa2, 0xca, 0x59, 0x00, 0xeb, 0xca, 0x59, - 0x00, 0x10, 0xca, 0xa2, 0x00, 0x59, 0xca, 0xa2, - 0x00, 0xa2, 0xca, 0xa2, 0x00, 0xeb, 0xca, 0xa2, - 0x00, 0x10, 0xca, 0xeb, 0x00, 0x59, 0xca, 0xeb, - 0x00, 0xa2, 0xca, 0xeb, 0x00, 0xeb, 0xca, 0xeb, - 0x00, 0x10, 0xe9, 0x10, 0x00, 0x59, 0xe9, 0x10, - 0x00, 0xa2, 0xe9, 0x10, 0x00, 0xeb, 0xe9, 0x10, - 0x00, 0x10, 0xe9, 0x59, 0x00, 0x59, 0xe9, 0x59, - 0x00, 0xa2, 0xe9, 0x59, 0x00, 0xeb, 0xe9, 0x59, - 0x00, 0x10, 0xe9, 0xa2, 0x00, 0x59, 0xe9, 0xa2, - 0x00, 0xa2, 0xe9, 0xa2, 0x00, 0xeb, 0xe9, 0xa2, - 0x00, 0x10, 0xe9, 0xeb, 0x00, 0x59, 0xe9, 0xeb, - 0x00, 0xa2, 0xe9, 0xeb, 0x00, 0xeb, 0xe9, 0xeb, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x24, 0xc0, - 0xc1, 0x11, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x6d, 0xbb, 0xeb, 0x8e, 0x01, 0xea, 0x25, - 0x04, 0xd0, 0x82, 0x49, 0xed, 0x4c, 0x8f, 0xc2, - 0x66, 0x0b, 0x65, 0xc5, 0x0c, 0xc2, 0x41, 0x19, - 0x07, 0xa8, 0x94, 0x13, 0x42, 0x09, 0x27, 0xb5, - 0x32, 0x3f, 0x09, 0x98, 0x2d, 0x97, 0x14, 0x33, - 0x09, 0x04, 0x64, 0x00, 0xff, 0xff, 0x24, 0xc0, - 0xe0, 0x11, 0x21, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x13, 0x8e, 0xf7, 0xe7, 0x6e, 0x9c, 0x0c, 0xc3, - 0xd2, 0xb4, 0x05, 0x16, 0x3c, 0x8e, 0x82, 0xd4, - 0x16, 0x5e, 0x9c, 0x0c, 0xc3, 0xd2, 0xb4, 0x05, - 0x16, 0x3c, 0x8e, 0x82, 0xd4, 0x16, 0x5e, 0x9c, - 0x0c, 0xc3, 0xd2, 0xb4, 0x05, 0x16, 0x3c, 0x8e, - 0x82, 0xd4, 0x16, 0x50, 0xff, 0xff, 0x24, 0xc0, - 0xd4, 0x11, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x4d, 0xf8, 0xd5, 0x9e, 0x7f, 0x02, 0x22, - 0x08, 0xa3, 0xbd, 0x94, 0x53, 0x16, 0x79, 0xfc, - 0x08, 0x88, 0x22, 0x8e, 0xf6, 0x51, 0x4c, 0x59, - 0xe7, 0xf0, 0x22, 0x20, 0x8a, 0x3b, 0xd9, 0x45, - 0x31, 0x67, 0x9f, 0xc0, 0x88, 0x82, 0x28, 0xef, - 0x65, 0x14, 0xc4, 0x00, 0xff, 0xff, 0x24, 0xc0, - 0xe8, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x6d, 0xfb, 0x1d, 0x77, 0xc1, 0x38, 0x81, - 0xfb, 0xb1, 0xd7, 0x7c, 0x13, 0x88, 0x1f, 0xbb, - 0x1d, 0x77, 0xc1, 0x38, 0x81, 0xfb, 0xb1, 0xd7, - 0x7c, 0x13, 0x88, 0x1f, 0xbb, 0x1d, 0x77, 0xc1, - 0x38, 0x81, 0xfb, 0xb1, 0xd7, 0x7c, 0x13, 0x88, - 0x1f, 0x80, 0x00, 0x00, 0xff, 0xff, 0x24, 0xc0, - 0x9b, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x3d, 0x75, 0xf7, 0x14, 0x0a, 0xc3, 0x29, - 0x9f, 0x51, 0xbc, 0xfb, 0xdc, 0x7b, 0x8a, 0x05, - 0x61, 0x94, 0xcf, 0xa8, 0xde, 0x7d, 0xee, 0x3d, - 0xc5, 0x02, 0xb0, 0xca, 0x67, 0xd4, 0x6f, 0x3e, - 0xf7, 0x1e, 0xe2, 0x81, 0x58, 0x65, 0x33, 0xea, - 0x37, 0x9f, 0x7b, 0x80, 0xff, 0xff, 0x24, 0xc0, - 0x12, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xeb, 0x50, 0xfb, 0xe7, 0x78, 0x1f, 0xde, 0xa1, - 0x62, 0x99, 0x11, 0x36, 0x02, 0x00, 0x97, 0xd6, - 0x69, 0x98, 0x1f, 0xde, 0xa1, 0x62, 0x99, 0x11, - 0x36, 0x02, 0x00, 0x97, 0xd6, 0x69, 0x98, 0x1f, - 0xde, 0xa1, 0x62, 0x99, 0x11, 0x36, 0x02, 0x00, - 0x97, 0xd6, 0x69, 0x90, 0xff, 0xff, 0x24, 0xc0, - 0x11, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xdf, 0x95, 0x03, 0xa1, 0x49, 0xc5, 0x45, 0xe7, - 0x96, 0xe6, 0x1d, 0xdc, 0x0d, 0x50, 0xa4, 0xe2, - 0xa2, 0xf3, 0xcb, 0x73, 0x0e, 0xee, 0x06, 0xa8, - 0x52, 0x71, 0x51, 0x79, 0xe5, 0xb9, 0x87, 0x77, - 0x03, 0x54, 0x29, 0x38, 0xa8, 0xbc, 0xf2, 0xdc, - 0xc3, 0xbb, 0x81, 0xa0, 0xff, 0xff, 0x24, 0xc0, - 0x11, 0x21, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe7, 0xae, 0x35, 0x0d, 0x42, 0x14, 0xc2, 0xf9, - 0x4a, 0x13, 0x55, 0xa6, 0x6e, 0xf4, 0x88, 0x53, - 0x0b, 0xe5, 0x28, 0x4d, 0x56, 0x99, 0xbb, 0xd2, - 0x21, 0x4c, 0x2f, 0x94, 0xa1, 0x35, 0x5a, 0x66, - 0xef, 0x48, 0x85, 0x30, 0xbe, 0x52, 0x84, 0xd5, - 0x69, 0x9b, 0xbd, 0x20, 0x00, 0x00, 0x00, 0x14, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x08, 0x1f, 0xc8, 0x2e, 0x08, 0x1f, 0xcc, - 0x2e, 0x08, 0x1f, 0xd0, 0x2e, 0x08, 0x1f, 0xd8, - 0x2e, 0x08, 0x1f, 0xdc, 0x2e, 0x08, 0x1f, 0xe0, - 0x6e, 0x00, 0x01, 0x00, 0x6e, 0x00, 0x01, 0x00, - 0x6e, 0x00, 0x01, 0x08, 0x6e, 0x00, 0x01, 0x0c, - 0x6e, 0x00, 0x01, 0x04, 0x6e, 0x00, 0x01, 0x10, - 0x6e, 0x00, 0x01, 0x14, 0x2e, 0x08, 0x9d, 0xc4, - 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x25, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x0d, 0x00, 0x2e, 0x08, 0x20, 0x2c, - 0x2e, 0x08, 0x20, 0x30, 0x2e, 0x08, 0x20, 0x34, - 0x2e, 0x08, 0x20, 0x38, 0x70, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x04, 0x70, 0x00, 0x00, 0x08, - 0x70, 0x00, 0x00, 0x0c, 0x70, 0x00, 0x00, 0x10, - 0x70, 0x00, 0x00, 0x30, 0x2e, 0x02, 0x3a, 0x7d, - 0x2e, 0x02, 0x3a, 0x0d, 0x2e, 0x02, 0x39, 0x85, - 0x2e, 0x02, 0x39, 0x7d, 0x2e, 0x02, 0x3a, 0xb5, - 0x2e, 0x02, 0x3a, 0x45, 0x2e, 0x02, 0x3a, 0xf9, - 0x2e, 0x02, 0x3a, 0xf1, 0x00, 0x00, 0x00, 0x00, - 0x9e, 0x00, 0x09, 0x80, 0x80, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0xc0, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, - 0xff, 0xf0, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, - 0xff, 0xfc, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, - 0xff, 0xff, 0xc0, 0x00, 0xff, 0xff, 0xe0, 0x00, - 0xff, 0xff, 0xf0, 0x00, 0xff, 0xff, 0xf8, 0x00, - 0xff, 0xff, 0xfc, 0x00, 0xff, 0xff, 0xfe, 0x00, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x80, - 0xff, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xff, 0xe0, - 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf8, - 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xfe, - 0xff, 0xff, 0xff, 0xff, 0x80, 0xc0, 0xe0, 0xf0, - 0xf8, 0xfc, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2e, 0x03, 0xa9, 0x18, - 0x2e, 0x03, 0xa9, 0x1a, 0x2e, 0x03, 0xa9, 0x1b, - 0x2e, 0x03, 0xa9, 0x1c, 0x2e, 0x03, 0xa9, 0x1d, - 0x2e, 0x03, 0xa9, 0x1e, 0x2e, 0x03, 0xa9, 0x1f, - 0x2e, 0x03, 0xa9, 0x20, 0x2e, 0x03, 0xa9, 0x21, - 0x2e, 0x03, 0xa9, 0x22, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, 0x2e, 0x02, 0x39, 0x64, - 0x2e, 0x02, 0x39, 0x64, -}; - diff -Nru a/drivers/media/dvb/av7110/av7110_ir.c b/drivers/media/dvb/av7110/av7110_ir.c --- a/drivers/media/dvb/av7110/av7110_ir.c Fri Nov 29 08:30:34 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,171 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "av7110.h" - - -#define UP_TIMEOUT (HZ/2) - -static int av7110_ir_debug = 0; - -#define dprintk(x...) do { if (av7110_ir_debug) printk (x); } while (0) - - -static struct input_dev input_dev; - - -static -u16 key_map [256] = { - KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, - KEY_8, KEY_9, KEY_LAST, 0, KEY_POWER, KEY_MUTE, 0, KEY_INFO, - KEY_VOLUMEUP, KEY_VOLUMEDOWN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - KEY_CHANNELUP, KEY_CHANNELDOWN, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, KEY_TEXT, 0, 0, KEY_TV, 0, 0, 0, 0, 0, KEY_SETUP, 0, 0, - 0, 0, 0, KEY_SUBTITLE, 0, 0, KEY_LANGUAGE, 0, - KEY_RADIO, 0, 0, 0, 0, KEY_EXIT, 0, 0, - KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_OK, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RED, KEY_GREEN, KEY_YELLOW, - KEY_BLUE, 0, 0, 0, 0, 0, 0, 0, KEY_MENU, KEY_LIST, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, KEY_UP, KEY_UP, KEY_DOWN, KEY_DOWN, - 0, 0, 0, 0, KEY_EPG, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_MHP -}; - - -static -void av7110_emit_keyup (unsigned long data) -{ - if (!data || !test_bit (data, input_dev.key)) - return; - - input_event (&input_dev, EV_KEY, data, !!0); -} - - -static -struct timer_list keyup_timer = { .function = av7110_emit_keyup }; - - -static -void av7110_emit_key (u32 ircom) -{ - int down = ircom & (0x80000000); - u16 keycode = key_map[ircom & 0xff]; - - dprintk ("#########%08x######### key %02x %s (keycode %i)\n", - ircom, ircom & 0xff, down ? "pressed" : "released", keycode); - - if (!keycode) { - printk ("%s: unknown key 0x%02x!!\n", - __FUNCTION__, ircom & 0xff); - return; - } - - if (timer_pending (&keyup_timer)) { - del_timer (&keyup_timer); - if (keyup_timer.data != keycode) - input_event (&input_dev, EV_KEY, keyup_timer.data, !!0); - } - - clear_bit (keycode, input_dev.key); - - input_event (&input_dev, EV_KEY, keycode, !0); - - keyup_timer.expires = jiffies + UP_TIMEOUT; - keyup_timer.data = keycode; - - add_timer (&keyup_timer); -} - -static -void input_register_keys (void) -{ - int i; - - memset (input_dev.keybit, 0, sizeof(input_dev.keybit)); - - for (i=0; i KEY_MAX) - key_map[i] = 0; - else if (key_map[i] > KEY_RESERVED) - set_bit (key_map[i], input_dev.keybit); - } -} - - -static -int av7110_ir_write_proc (struct file *file, const char *buffer, - unsigned long count, void *data) -{ - u32 ir_config; - - if (count < 4 + 256 * sizeof(u16)) - return -EINVAL; - - memcpy (&ir_config, buffer, 4); - memcpy (&key_map, buffer + 4, 256 * sizeof(u16)); - - av7110_setup_irc_config (NULL, ir_config); - - input_register_keys (); - - return count; -} - - -int __init av7110_ir_init (void) -{ - static struct proc_dir_entry *e; - - init_timer (&keyup_timer); - keyup_timer.data = 0; - - input_dev.name = "DVB on-card IR receiver"; - - /** - * enable keys - */ - set_bit (EV_KEY, input_dev.evbit); - - input_register_keys (); - - input_register_device(&input_dev); - - av7110_setup_irc_config (NULL, 0x0001); - av7110_register_irc_handler (av7110_emit_key); - - e = create_proc_entry ("av7110_ir", S_IFREG | S_IRUGO | S_IWUSR, NULL); - - if (e) { - e->write_proc = av7110_ir_write_proc; - e->size = 4 + 256 * sizeof(u16); - } - - return 0; -} - - -void __exit av7110_ir_exit (void) -{ - remove_proc_entry ("av7110_ir", NULL); - av7110_unregister_irc_handler (av7110_emit_key); - input_unregister_device(&input_dev); -} - -//MODULE_AUTHOR("Holger Waechtler "); -//MODULE_LICENSE("GPL"); - -MODULE_PARM(av7110_ir_debug,"i"); -MODULE_PARM_DESC(av7110_ir_debug, "enable AV7110 IR receiver debug messages"); - diff -Nru a/drivers/media/dvb/av7110/saa7146.c b/drivers/media/dvb/av7110/saa7146.c --- a/drivers/media/dvb/av7110/saa7146.c Mon Feb 24 10:14:48 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,1662 +0,0 @@ -/* - the api- and os-independet parts of the saa7146 device driver - - Copyright (C) 1998,1999 Michael Hunold - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "saa7146_defs.h" - -#define TRUNC(val,max) ((val) < (max) ? (val) : (max)) - -#ifdef __COMPILE_SAA7146__ - -struct saa7146_modes_constants - modes_constants[] = { - { V_OFFSET_PAL, V_FIELD_PAL, V_ACTIVE_LINES_PAL, - H_OFFSET_PAL, H_PIXELS_PAL, H_PIXELS_PAL+1, - V_ACTIVE_LINES_PAL, 1024 }, /* PAL values */ - { V_OFFSET_NTSC, V_FIELD_NTSC, V_ACTIVE_LINES_NTSC, - H_OFFSET_NTSC, H_PIXELS_NTSC, H_PIXELS_NTSC+1, - V_ACTIVE_LINES_NTSC, 1024 }, /* NTSC values */ - { 0,0,0,0,0,0,0,0 }, /* secam values */ - { 0,288,576, - 0,188*4,188*4+1, - 288,188*4 } /* TS values */ -}; - -/* ----------------------------------------------------------------------------------------- - helper functions for the calculation of the horizontal- and vertical scaling registers, - clip-format-register etc ... - these functions take pointers to the (most-likely read-out original-values) and manipulate - them according to the requested new scaling parameters. - ----------------------------------------------------------------------------------------- */ - -/* hps_coeff used for CXY and CXUV; scale 1/1 -> scale 1/64 */ -struct { - u16 hps_coeff; - u16 weight_sum; -} hps_h_coeff_tab [] = { - {0x00, 2}, {0x02, 4}, {0x00, 4}, {0x06, 8}, {0x02, 8}, - {0x08, 8}, {0x00, 8}, {0x1E, 16}, {0x0E, 8}, {0x26, 8}, - {0x06, 8}, {0x42, 8}, {0x02, 8}, {0x80, 8}, {0x00, 8}, - {0xFE, 16}, {0xFE, 8}, {0x7E, 8}, {0x7E, 8}, {0x3E, 8}, - {0x3E, 8}, {0x1E, 8}, {0x1E, 8}, {0x0E, 8}, {0x0E, 8}, - {0x06, 8}, {0x06, 8}, {0x02, 8}, {0x02, 8}, {0x00, 8}, - {0x00, 8}, {0xFE, 16}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, - {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, - {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, - {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0xFE, 8}, {0x7E, 8}, - {0x7E, 8}, {0x3E, 8}, {0x3E, 8}, {0x1E, 8}, {0x1E, 8}, - {0x0E, 8}, {0x0E, 8}, {0x06, 8}, {0x06, 8}, {0x02, 8}, - {0x02, 8}, {0x00, 8}, {0x00, 8}, {0xFE, 16} -}; - -/* table of attenuation values for horizontal scaling */ -u8 h_attenuation[] = { 1, 2, 4, 8, 2, 4, 8, 16, 0}; - -int calculate_h_scale_registers(struct saa7146* saa, u32 in_x, u32 out_x, int flip_lr, u32* hps_ctrl, u32* hps_v_gain, u32* hps_h_prescale, u32* hps_h_scale) -{ - /* horizontal prescaler */ - u32 dcgx = 0, xpsc = 0, xacm = 0, cxy = 0, cxuv = 0; - /* horizontal scaler */ - u32 xim = 0, xp = 0, xsci =0; - /* vertical scale & gain */ - u32 pfuv = 0; - /* helper variables */ - u32 h_atten = 0, i = 0; - - if ( 0 == out_x ) { - printk("saa7146: ==> calculate_h_scale_registers: invalid value (=0).\n"); - return -EINVAL; - } - - /* mask out vanity-bit */ - *hps_ctrl &= ~MASK_29; - - /* calculate prescale-(xspc)-value: [n .. 1/2) : 1 - [1/2 .. 1/3) : 2 - [1/3 .. 1/4) : 3 - ... */ - if (in_x > out_x) { - xpsc = in_x / out_x; - } else { - /* zooming */ - xpsc = 1; - } - - /* if flip_lr-bit is set, number of pixels after horizontal prescaling must be < 384 */ - if ( 0 != flip_lr ) { - /* set vanity bit */ - *hps_ctrl |= MASK_29; - - while (in_x / xpsc >= 384 ) - xpsc++; - } - /* if zooming is wanted, number of pixels after horizontal prescaling must be < 768 */ - else { - while ( in_x / xpsc >= 768 ) - xpsc++; - } - - /* maximum prescale is 64 (p.69) */ - if ( xpsc > 64 ) - xpsc = 64; - - /* keep xacm clear*/ - xacm = 0; - - /* set horizontal filter parameters (CXY = CXUV) */ - cxy = hps_h_coeff_tab[TRUNC(xpsc - 1, 63)].hps_coeff; - cxuv = cxy; - - /* calculate and set horizontal fine scale (xsci) */ - - /* bypass the horizontal scaler ? */ - if ( (in_x == out_x) && ( 1 == xpsc ) ) - xsci = 0x400; - else - xsci = ( (1024 * in_x) / (out_x * xpsc) ) + xpsc; - - /* set start phase for horizontal fine scale (xp) to 0 */ - xp = 0; - - /* set xim, if we bypass the horizontal scaler */ - if ( 0x400 == xsci ) - xim = 1; - else - xim = 0; - - /* if the prescaler is bypassed, enable horizontal accumulation mode (xacm) - and clear dcgx */ - if( 1 == xpsc ) { - xacm = 1; - dcgx = 0; - } else { - xacm = 0; - /* get best match in the table of attenuations for horizontal scaling */ - h_atten = hps_h_coeff_tab[TRUNC(xpsc - 1, 63)].weight_sum; - - for (i = 0; h_attenuation[i] != 0; i++) { - if (h_attenuation[i] >= h_atten) - break; - } - - dcgx = i; - } - - /* the horizontal scaling increment controls the UV filter to reduce the bandwith to - improve the display quality, so set it ... */ - if ( xsci == 0x400) - pfuv = 0x00; - else if ( xsci < 0x600) - pfuv = 0x01; - else if ( xsci < 0x680) - pfuv = 0x11; - else if ( xsci < 0x700) - pfuv = 0x22; - else - pfuv = 0x33; - - - *hps_v_gain &= MASK_W0|MASK_B2; - *hps_v_gain |= (pfuv << 24); - - *hps_h_scale &= ~(MASK_W1 | 0xf000); - *hps_h_scale |= (xim << 31) | (xp << 24) | (xsci << 12); - - *hps_h_prescale |= (dcgx << 27) | ((xpsc-1) << 18) | (xacm << 17) | (cxy << 8) | (cxuv << 0); - - return 0; -} - -struct { - u16 hps_coeff; - u16 weight_sum; -} hps_v_coeff_tab [] = { - {0x0100, 2}, {0x0102, 4}, {0x0300, 4}, {0x0106, 8}, - {0x0502, 8}, {0x0708, 8}, {0x0F00, 8}, {0x011E, 16}, - {0x110E, 16}, {0x1926, 16}, {0x3906, 16}, {0x3D42, 16}, - {0x7D02, 16}, {0x7F80, 16}, {0xFF00, 16}, {0x01FE, 32}, - {0x01FE, 32}, {0x817E, 32}, {0x817E, 32}, {0xC13E, 32}, - {0xC13E, 32}, {0xE11E, 32}, {0xE11E, 32}, {0xF10E, 32}, - {0xF10E, 32}, {0xF906, 32}, {0xF906, 32}, {0xFD02, 32}, - {0xFD02, 32}, {0xFF00, 32}, {0xFF00, 32}, {0x01FE, 64}, - {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, - {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, - {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, - {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, {0x01FE, 64}, - {0x01FE, 64}, {0x817E, 64}, {0x817E, 64}, {0xC13E, 64}, - {0xC13E, 64}, {0xE11E, 64}, {0xE11E, 64}, {0xF10E, 64}, - {0xF10E, 64}, {0xF906, 64}, {0xF906, 64}, {0xFD02, 64}, - {0xFD02, 64}, {0xFF00, 64}, {0xFF00, 64}, {0x01FE, 128} -}; - -/* table of attenuation values for vertical scaling */ -u16 v_attenuation[] = { 2, 4, 8, 16, 32, 64, 128, 256, 0}; - -int calculate_v_scale_registers(struct saa7146* saa, u32 in_y, u32 out_y, u32* hps_v_scale, u32* hps_v_gain) -{ - u32 yacm = 0, ysci = 0, yacl = 0, ypo = 0, ype = 0; /* vertical scaling */ - u32 dcgy = 0, cya_cyb = 0; /* vertical scale & gain */ - - u32 v_atten = 0, i = 0; /* helper variables */ - - /* error, if vertical zooming */ - if ( in_y < out_y ) { - printk("saa7146: ==> calculate_v_scale_registers: we cannot do vertical zooming.\n"); - return -EINVAL; - } - - /* linear phase interpolation may be used if scaling is between 1 and 1/2 - or scaling is between 1/2 and 1/4 (if interlace is set; see below) */ - if( ((2*out_y) >= in_y) || (((4*out_y) >= in_y) && saa->interlace != 0)) { - - /* convention: if scaling is between 1/2 and 1/4 we only use - the even lines, the odd lines get discarded (see function move_to) - if interlace is set */ - if( saa->interlace != 0 && (out_y*4) >= in_y && (out_y*2) <= in_y) - out_y *= 2; - - yacm = 0; - yacl = 0; - cya_cyb = 0x00ff; - - /* calculate scaling increment */ - if ( in_y > out_y ) - ysci = ((1024 * in_y) / (out_y + 1)) - 1024; - else - ysci = 0; - - dcgy = 0; - - /* calculate ype and ypo */ - if (saa->interlace !=0) { - - /* Special case for interlaced input */ - - /* See Philips SAA7146A Product Spec (page 75): */ - /* "For interlaced input, ype and ypo is defiend as */ - /* YPeven= 3/2 x YPodd (line 1 = odd)" */ - /* */ - /* It looks like the spec is wrong! */ - /* The ad hoc values below works fine for a target */ - /* window height of 480 (vertical scale = 1/1) NTSC. */ - /* PLI: December 27, 2000. */ - ypo=64; - ype=0; - } else { - ype = ysci / 16; - ypo = ype + (ysci / 64); - } - } - else { - yacm = 1; - - /* calculate scaling increment */ - ysci = (((10 * 1024 * (in_y - out_y - 1)) / in_y) + 9) / 10; - - /* calculate ype and ypo */ - ypo = ype = ((ysci + 15) / 16); - - /* the sequence length interval (yacl) has to be set according - to the prescale value, e.g. [n .. 1/2) : 0 - [1/2 .. 1/3) : 1 - [1/3 .. 1/4) : 2 - ... */ - if ( ysci < 512) { - yacl = 0; - } - else { - yacl = ( ysci / (1024 - ysci) ); - } - - /* get filter coefficients for cya, cyb from table hps_v_coeff_tab */ - cya_cyb = hps_v_coeff_tab[TRUNC(yacl, 63)].hps_coeff; - - /* get best match in the table of attenuations for vertical scaling */ - v_atten = hps_v_coeff_tab[TRUNC(yacl, 63)].weight_sum; - - for (i = 0; v_attenuation[i] != 0; i++) { - if (v_attenuation[i] >= v_atten) - break; - } - - dcgy = i; - } - - /* ypo and ype swapped in spec ? */ - *hps_v_scale |= (yacm << 31) | (ysci << 21) | (yacl << 15) | (ypo << 8 ) | (ype << 1); - - *hps_v_gain &= ~(MASK_W0|MASK_B2); - *hps_v_gain |= (dcgy << 16) | (cya_cyb << 0); - - return 0; -} - -void calculate_hxo_hyo_and_sources(struct saa7146* saa, int port_sel, int sync_sel, u32* hps_h_scale, u32* hps_ctrl) -{ - u32 hyo = 0, hxo = 0; - - hyo = modes_constants[saa->mode].v_offset; - hxo = modes_constants[saa->mode].h_offset; - - *hps_h_scale &= ~(MASK_B0 | 0xf00); - *hps_ctrl &= ~(MASK_W0 | MASK_B2 | MASK_30 | MASK_31 | MASK_28); - - *hps_h_scale |= (hxo << 0); - *hps_ctrl |= (hyo << 12); - - *hps_ctrl |= ( port_sel == 0 ? 0x0 : MASK_30); - *hps_ctrl |= ( sync_sel == 0 ? 0x0 : MASK_28); -} - -void calculate_output_format_register(struct saa7146* saa, u16 palette, u32* clip_format) -{ - /* clear out the necessary bits */ - *clip_format &= 0x0000ffff; - /* set these bits new */ - *clip_format |= (( ((palette&0xf00)>>8) << 30) | ((palette&0x00f) << 24) | (((palette&0x0f0)>>4) << 16)); -} - -void calculate_bcs_ctrl_register(struct saa7146 *saa, u32 brightness, u32 contrast, u32 colour, u32 *bcs_ctrl) -{ - *bcs_ctrl = ((brightness << 24) | (contrast << 16) | (colour << 0)); -} - - -int calculate_video_dma1_grab(struct saa7146* saa, int frame, struct saa7146_video_dma* vdma1) -{ - int depth = 0; - - switch(saa->grab_format[frame]) { - case YUV422_COMPOSED: - case RGB15_COMPOSED: - case RGB16_COMPOSED: - depth = 2; - break; - case RGB24_COMPOSED: - depth = 3; - break; - default: - depth = 4; - break; - } - - vdma1->pitch = saa->grab_width[frame]*depth*2; - vdma1->base_even = 0; - vdma1->base_odd = vdma1->base_even + (vdma1->pitch/2); - vdma1->prot_addr = (saa->grab_width[frame]*saa->grab_height[frame]*depth)-1; - vdma1->num_line_byte = ((modes_constants[saa->mode].v_field<<16) + modes_constants[saa->mode].h_pixels); - vdma1->base_page = virt_to_bus(saa->page_table[frame]) | ME1; - - /* convention: if scaling is between 1/2 and 1/4 we only use - the even lines, the odd lines get discarded (see vertical scaling) */ - if( saa->interlace != 0 && saa->grab_height[frame]*4 >= modes_constants[saa->mode].v_calc && saa->grab_height[frame]*2 <= modes_constants[saa->mode].v_calc) { - vdma1->base_odd = vdma1->prot_addr; - vdma1->pitch /= 2; - } - - return 0; -} - -/* ---------------------------------------------*/ -/* position of overlay-window */ -/* ---------------------------------------------*/ - -/* calculate the new memory offsets for a desired position */ -int move_to(struct saa7146* saa, int w_x, int w_y, int w_height, int b_width, int b_depth, int b_bpl, u32 base, int td_flip) -{ - struct saa7146_video_dma vdma1; - - if( w_y < 0 || w_height <= 0 || b_depth <= 0 || b_bpl <= 0 || base == 0 ) { - printk("saa7146: ==> calculate_video_dma1_overlay: illegal values: y: %d h: %d d: %d b: %d base: %d\n",w_y ,w_height,b_depth,b_bpl,base); - return -EINVAL; - } - - /* calculate memory offsets for picture, look if we shall top-down-flip */ - vdma1.pitch = 2*b_bpl; - if ( 0 == td_flip ) { - vdma1.prot_addr = (u32)base + ((w_height+w_y+1)*b_width*(b_depth/4)); - vdma1.base_even = (u32)base + (w_y * (vdma1.pitch/2)) + (w_x * (b_depth / 8)); - vdma1.base_odd = vdma1.base_even + (vdma1.pitch / 2); - } - else { - vdma1.prot_addr = (u32)base + (w_y * (vdma1.pitch/2)); - vdma1.base_even = (u32)base + ((w_y+w_height) * (vdma1.pitch/2)) + (w_x * (b_depth / 8)); - vdma1.base_odd = vdma1.base_even + (vdma1.pitch / 2); - vdma1.pitch *= -1; - } - - /* convention: if scaling is between 1/2 and 1/4 we only use - the even lines, the odd lines get discarded (see vertical scaling) */ - if( saa->interlace != 0 && w_height*4 >= modes_constants[saa->mode].v_calc && w_height*2 <= modes_constants[saa->mode].v_calc) { - vdma1.base_odd = vdma1.prot_addr; - vdma1.pitch /= 2; - } - - vdma1.base_page = 0; - vdma1.num_line_byte = (modes_constants[saa->mode].v_field<<16)+modes_constants[saa->mode].h_pixels; - - saa7146_write(saa->mem, BASE_EVEN1, vdma1.base_even); - saa7146_write(saa->mem, BASE_ODD1, vdma1.base_odd); - saa7146_write(saa->mem, PROT_ADDR1, vdma1.prot_addr); - saa7146_write(saa->mem, BASE_PAGE1, vdma1.base_page); - saa7146_write(saa->mem, PITCH1, vdma1.pitch); - saa7146_write(saa->mem, NUM_LINE_BYTE1, vdma1.num_line_byte); - - /* update the video dma 1 registers */ - saa7146_write(saa->mem, MC2, (MASK_02 | MASK_18)); - - return 0; - -} - -/* ---------------------------------------------*/ -/* size of window (overlay) */ -/* ---------------------------------------------*/ - -int set_window(struct saa7146* saa, int width, int height, int flip_lr, int port_sel, int sync_sel) -{ - u32 hps_v_scale = 0, hps_v_gain = 0, hps_ctrl = 0, hps_h_prescale = 0, hps_h_scale = 0; - - /* set vertical scale according to selected mode: 0 = PAL, 1 = NTSC */ - hps_v_scale = 0; /* all bits get set by the function-call */ - hps_v_gain = 0; /* fixme: saa7146_read(saa->mem, HPS_V_GAIN);*/ - calculate_v_scale_registers(saa, modes_constants[saa->mode].v_calc, height, &hps_v_scale, &hps_v_gain); - - /* set horizontal scale according to selected mode: 0 = PAL, 1 = NTSC */ - hps_ctrl = 0; - hps_h_prescale = 0; /* all bits get set in the function */ - hps_h_scale = 0; - calculate_h_scale_registers(saa, modes_constants[saa->mode].h_calc, width, 0, &hps_ctrl, &hps_v_gain, &hps_h_prescale, &hps_h_scale); - - /* set hyo and hxo */ - calculate_hxo_hyo_and_sources(saa, port_sel, sync_sel, &hps_h_scale, &hps_ctrl); - - /* write out new register contents */ - saa7146_write(saa->mem, HPS_V_SCALE, hps_v_scale); - saa7146_write(saa->mem, HPS_V_GAIN, hps_v_gain); - saa7146_write(saa->mem, HPS_CTRL, hps_ctrl); - saa7146_write(saa->mem, HPS_H_PRESCALE,hps_h_prescale); - saa7146_write(saa->mem, HPS_H_SCALE, hps_h_scale); - - /* upload shadow-ram registers */ - saa7146_write( saa->mem, MC2, (MASK_05 | MASK_06 | MASK_21 | MASK_22) ); - -/* - printk("w:%d,h:%d\n",width,height); -*/ - return 0; - -} - -void set_output_format(struct saa7146* saa, u16 palette) -{ - u32 clip_format = saa7146_read(saa->mem, CLIP_FORMAT_CTRL); - - dprintk("saa7146: ==> set_output_format: pal:0x%03x\n",palette); - - /* call helper function */ - calculate_output_format_register(saa,palette,&clip_format); - dprintk("saa7146: ==> set_output_format: 0x%08x\n",clip_format); - - /* update the hps registers */ - saa7146_write(saa->mem, CLIP_FORMAT_CTRL, clip_format); - saa7146_write(saa->mem, MC2, (MASK_05 | MASK_21)); -} - -void set_picture_prop(struct saa7146 *saa, u32 brightness, u32 contrast, u32 colour) -{ - u32 bcs_ctrl = 0; - - calculate_bcs_ctrl_register(saa, brightness, contrast, colour, &bcs_ctrl); - saa7146_write(saa->mem, BCS_CTRL, bcs_ctrl); - - /* update the bcs register */ - saa7146_write(saa->mem, MC2, (MASK_06 | MASK_22)); -} - -/* ---------------------------------------------*/ -/* overlay enable/disable */ -/* ---------------------------------------------*/ - -/* enable(1) / disable(0) video */ -void video_setmode(struct saa7146* saa, int v) -{ - hprintk("saa7146: ==> video_setmode; m:%d\n",v); - - /* disable ? */ - if(v==0) { - /* disable video dma1 */ - saa7146_write(saa->mem, MC1, MASK_22); - } else {/* or enable ? */ - /* fixme: enable video */ - saa7146_write(saa->mem, MC1, (MASK_06 | MASK_22)); - } -} - -/* ----------------------------------------------------- - common grabbing-functions. if you have some simple - saa7146-based frame-grabber you can most likely call - these. they do all the revision-dependend stuff and - do rps/irq-based grabbing for you. - -----------------------------------------------------*/ - -/* this function initializes the rps for the next grab for any "old" - saa7146s (= revision 0). it assumes that the rps is *not* running - when it gets called. */ -int init_rps0_rev0(struct saa7146* saa, int frame, int irq_call) -{ - struct saa7146_video_dma vdma1; - u32 hps_v_scale = 0, hps_v_gain = 0, hps_ctrl = 0, hps_h_prescale = 0, hps_h_scale = 0; - u32 clip_format = 0; /* this can be 0, since we don't do clipping */ - u32 bcs_ctrl = 0; - - int count = 0; - -/* these static values are used to remember the last "programming" of the rps. - if the height, width and format of the grab has not changed (which is very likely - when some streaming capture is done) the reprogramming overhead can be minimized */ -static int last_height = 0; -static int last_width = 0; -static int last_format = 0; -static int last_port = 0; -static int last_frame = -1; - - /* write the address of the rps-program */ - saa7146_write(saa->mem, RPS_ADDR0, virt_to_bus(&saa->rps0[ 0])); - - /* let's check if we can re-use something of the last grabbing process */ - if ( saa->grab_height[frame] != last_height - || saa->grab_width[frame] != last_width - || saa->grab_port[frame] != last_port - || saa->grab_format[frame] != last_format ) { - - /* nope, we have to start from the beginning */ - calculate_video_dma1_grab(saa, frame, &vdma1); - calculate_v_scale_registers(saa, modes_constants[saa->mode].v_calc, saa->grab_height[frame], &hps_v_scale, &hps_v_gain); - calculate_h_scale_registers(saa, modes_constants[saa->mode].h_calc, saa->grab_width[frame], 0, &hps_ctrl, &hps_v_gain, &hps_h_prescale, &hps_h_scale); - calculate_hxo_hyo_and_sources(saa, saa->grab_port[frame], saa->grab_port[frame], &hps_h_scale, &hps_ctrl); - calculate_output_format_register(saa,saa->grab_format[frame],&clip_format); - calculate_bcs_ctrl_register(saa, 0x80, 0x40, 0x40, &bcs_ctrl); - - count = 0; - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG_MASK | (MC1/4)); /* turn off video-dma1 and dma2 (clipping)*/ - saa->rps0[ count++ ] = cpu_to_le32(MASK_06 | MASK_22 | MASK_05 | MASK_21); /* => mask */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_22 | MASK_21); /* => values */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | ( saa->grab_port[frame] == 0 ? MASK_12 : MASK_14)); /* wait for o_fid_a/b */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | ( saa->grab_port[frame] == 0 ? MASK_11 : MASK_13)); /* wait for e_fid_a/b */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (6 << 8) | HPS_CTRL/4); /* upload hps-registers for next grab */ - saa->rps0[ count++ ] = cpu_to_le32(hps_ctrl); - saa->rps0[ count++ ] = cpu_to_le32(hps_v_scale); - saa->rps0[ count++ ] = cpu_to_le32(hps_v_gain); - saa->rps0[ count++ ] = cpu_to_le32(hps_h_prescale); - saa->rps0[ count++ ] = cpu_to_le32(hps_h_scale); - saa->rps0[ count++ ] = cpu_to_le32(bcs_ctrl); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (1 << 8) | CLIP_FORMAT_CTRL/4);/* upload hps-registers for next grab */ - saa->rps0[ count++ ] = cpu_to_le32(clip_format); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_UPLOAD | MASK_05 | MASK_06); /* upload hps1/2 */ - - /* upload video-dma1 registers for next grab */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (6 << 8) | BASE_ODD1/4); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.base_odd); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.base_even); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.prot_addr); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.pitch); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.base_page); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.num_line_byte); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_UPLOAD | MASK_02); /* upload video-dma1 */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG_MASK | (MC1/4)); /* turn on video-dma1 */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_06 | MASK_22); /* => mask */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_06 | MASK_22); /* => values */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (1 << 8) | (MC2/4)); /* Write MC2 */ - saa->rps0[ count++ ] = cpu_to_le32((1 << (27+frame)) | (1 << (11+frame))); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | ( saa->grab_port[frame] == 0 ? MASK_12 : MASK_14)); /* wait for o_fid_a/b */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | ( saa->grab_port[frame] == 0 ? MASK_11 : MASK_13)); /* wait for e_fid_a/b */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG_MASK | (MC1/4)); /* turn off video-dma1 */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_06 | MASK_22); /* => mask */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_22); /* => values */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_INTERRUPT); /* generate interrupt */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_STOP); /* stop processing */ - } else { - - /* the height, width, ... have not changed. check if the user wants to grab to - another *buffer* */ - if( frame != last_frame ) { - - /* ok, we want to grab to another buffer, but with the same programming. - it is sufficient to adjust the video_dma1-registers and the rps-signal stuff. */ - saa->rps0[ 20 ] = cpu_to_le32(virt_to_bus(saa->page_table[frame]) | ME1); - saa->rps0[ 27 ] = cpu_to_le32((1 << (27+frame)) | (1 << (11+frame))); - - } - } - - /* if we are called from within the irq-handler, the hps is at the beginning of a - new frame. the rps does not need to wait the new frame, and so we tweak the - starting address a little bit and so we can directly start grabbing again. - note: for large video-sizes and slow computers this can cause jaggy pictures - because the whole process is not in sync. perhaps one should be able to - disable this. (please remember that this whole stuff only belongs to - "old" saa7146s (= revision 0), newer saa7146s don´t have any hardware-bugs - and capture works fine. (see below) */ - if( 1 == irq_call ) { - saa7146_write(saa->mem, RPS_ADDR0, virt_to_bus(&saa->rps0[15])); - } - - /* turn on rps */ - saa7146_write(saa->mem, MC1, (MASK_12 | MASK_28)); - - /* store the values for the last grab */ - last_height = saa->grab_height[frame]; - last_width = saa->grab_width[frame]; - last_format = saa->grab_format[frame]; - last_port = saa->grab_port[frame]; - last_frame = frame; - - return 0; -} - -int init_rps0_rev1(struct saa7146* saa, int frame) { - -static int old_width[SAA7146_MAX_BUF]; /* pixel width of grabs */ -static int old_height[SAA7146_MAX_BUF]; /* pixel height of grabs */ -static int old_format[SAA7146_MAX_BUF]; /* video format of grabs */ -static int old_port[SAA7146_MAX_BUF]; /* video port for grab */ - -static int buf_stat[SAA7146_MAX_BUF]; - - struct saa7146_video_dma vdma1; - u32 hps_v_scale = 0, hps_v_gain = 0, hps_ctrl = 0, hps_h_prescale = 0, hps_h_scale = 0; - u32 clip_format = 0; /* this can be 0, since we don't do clipping */ - u32 bcs_ctrl = 0; - - int i = 0, count = 0; - - /* check if something has changed since the last grab for this buffer */ - if ( saa->grab_height[frame] == old_height[frame] - && saa->grab_width[frame] == old_width[frame] - && saa->grab_port[frame] == old_port[frame] - && saa->grab_format[frame] == old_format[frame] ) { - - /* nope, nothing to be done here */ - return 0; - } - - /* re-program the rps0 completely */ - - /* indicate that the user has requested re-programming of the 'frame'-buffer */ - buf_stat[frame] = 1; - - /* turn off rps */ - saa7146_write(saa->mem, MC1, MASK_28); - - - /* write beginning of rps-program */ - count = 0; - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | MASK_12); /* wait for o_fid_a */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | MASK_11); /* wait for e_fid_a */ - for(i = 0; i < saa->buffers; i++) { - saa->rps0[ count++ ] = cpu_to_le32(CMD_JUMP | (1 << (21+i))); /* check signal x, jump if set */ - saa->rps0[ count++ ] = cpu_to_le32(virt_to_bus(&saa->rps0[40*(i+1)])); - } - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | MASK_12); /* wait for o_fid_a */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | MASK_11); /* wait for e_fid_a */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_JUMP); /* jump to the beginning */ - saa->rps0[ count++ ] = cpu_to_le32(virt_to_bus(&saa->rps0[2])); - - for(i = 0; i < saa->buffers; i++) { - - /* we only re-program the i-th buffer if the user had set some values for it earlier. - otherwise the calculation-functions may fail. */ - if( buf_stat[i] == 0) - continue; - - count = 40*(i+1); - - calculate_video_dma1_grab(saa, i, &vdma1); - calculate_v_scale_registers(saa, modes_constants[saa->mode].v_calc, saa->grab_height[i], &hps_v_scale, &hps_v_gain); - calculate_h_scale_registers(saa, modes_constants[saa->mode].h_calc, saa->grab_width[i], 0, &hps_ctrl, &hps_v_gain, &hps_h_prescale, &hps_h_scale); - calculate_hxo_hyo_and_sources(saa, saa->grab_port[i], saa->grab_port[i], &hps_h_scale, &hps_ctrl); - calculate_output_format_register(saa,saa->grab_format[i],&clip_format); - calculate_bcs_ctrl_register(saa, 0x80, 0x40, 0x40, &bcs_ctrl); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (6 << 8) | HPS_CTRL/4); /* upload hps-registers for next grab */ - saa->rps0[ count++ ] = cpu_to_le32(hps_ctrl); - saa->rps0[ count++ ] = cpu_to_le32(hps_v_scale); - saa->rps0[ count++ ] = cpu_to_le32(hps_v_gain); - saa->rps0[ count++ ] = cpu_to_le32(hps_h_prescale); - saa->rps0[ count++ ] = cpu_to_le32(hps_h_scale); - saa->rps0[ count++ ] = cpu_to_le32(bcs_ctrl); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (1 << 8) | CLIP_FORMAT_CTRL/4);/* upload hps-registers for next grab */ - saa->rps0[ count++ ] = cpu_to_le32(clip_format); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_UPLOAD | MASK_05 | MASK_06); /* upload hps1/2 */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (6 << 8) | BASE_ODD1/4); /* upload video-dma1 registers for next grab */ - saa->rps0[ count++ ] = cpu_to_le32(vdma1.base_odd); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.base_even); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.prot_addr); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.pitch); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.base_page); - saa->rps0[ count++ ] = cpu_to_le32(vdma1.num_line_byte); - - saa->rps0[ count++ ] = cpu_to_le32(CMD_UPLOAD | MASK_02); /* upload video-dma1 */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG_MASK | (MC1/4)); /* turn on video-dma1 */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_06 | MASK_22); /* => mask */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_06 | MASK_22); /* => values */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | ( saa->grab_port[i] == 0 ? MASK_12 : MASK_14)); /* wait for o_fid_a/b */ - saa->rps0[ count++ ] = cpu_to_le32(CMD_PAUSE | ( saa->grab_port[i] == 0 ? MASK_11 : MASK_13)); /* wait for e_fid_a/b */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG_MASK | (MC1/4)); /* turn off video-dma1 and dma2 (clipping)*/ - saa->rps0[ count++ ] = cpu_to_le32(MASK_06 | MASK_22 | MASK_05 | MASK_21); /* => mask */ - saa->rps0[ count++ ] = cpu_to_le32(MASK_22 | MASK_21); /* => values */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_WR_REG | (1 << 8) | (MC2/4)); /* Write MC2 */ - saa->rps0[ count++ ] = cpu_to_le32((1 << (27+i))); - saa->rps0[ count++ ] = cpu_to_le32(CMD_INTERRUPT); /* generate interrupt */ - - saa->rps0[ count++ ] = cpu_to_le32(CMD_JUMP); /* jump to the beginning */ - saa->rps0[ count++ ] = cpu_to_le32(virt_to_bus(&saa->rps0[2])); - - old_height[frame] = saa->grab_height[frame]; - old_width[frame] = saa->grab_width[frame]; - old_port[frame] = saa->grab_port[frame]; - old_format[frame] = saa->grab_format[frame]; - } - - /* write the address of the rps-program */ - saa7146_write(saa->mem, RPS_ADDR0, virt_to_bus(&saa->rps0[ 0])); - /* turn on rps again */ - saa7146_write(saa->mem, MC1, (MASK_12 | MASK_28)); - - return 0; -} - -/* this funtion is called whenever a new grab is requested. if possible (that - means: if the rps is not running) it re-programs the rps, otherwise it relys on - the irq-handler to do that */ -int set_up_grabbing(struct saa7146* saa, int frame) -{ - u32 mc1 = 0; - - if( 0 == saa->revision ) { - - /* check if the rps is currently in use */ - mc1 = saa7146_read(saa->mem, MC1); - - /* the rps is not running ... */ - if( 0 == ( mc1 & MASK_12) ) { - - /* we can completly re-program the rps now */ - dprintk("saa7146_v4l.o: ==> set_up_grabbing: start new rps.\n"); - init_rps0_rev0(saa,frame,0); - } else { - - /* the rps is running. in this case, the irq-handler is responsible for - re-programming the rps and nothing can be done right now */ - dprintk("saa7146_v4l.o: ==> set_up_grabbing: no new rps started.\n"); - } - } else { - /* check if something has changed, reprogram if necessary */ - init_rps0_rev1(saa,frame); - /* set rps-signal-bit to start grabbing */ - saa7146_write(saa->mem, MC2, (1 << (27+frame)) | (1 << (11+frame))); - } - - return 0; -} - - -void saa7146_std_grab_irq_callback_rps0(struct saa7146* saa, u32 isr, void* data) -{ - u32 mc2 = 0; - int i = 0; - - hprintk("saa7146_v4l.o: ==> saa7146_v4l_irq_callback_rps0\n"); - - /* check for revision: old revision */ - if( 0 == saa->revision ) { - - /* look what buffer has been grabbed, set the ´done´-flag and clear the signal */ - mc2 = saa7146_read(saa->mem, MC2); - for( i = 0; i < saa->buffers; i++ ) { - - if ((0 != (mc2 & (1 << (11+i)))) && (GBUFFER_GRABBING == saa->frame_stat[i])) { - saa->frame_stat[i] = GBUFFER_DONE; - saa7146_write(saa->mem, MC2, (1<<(27+i))); - } - } - - /* look if there is another buffer we can grab to */ - for( i = 0; i < saa->buffers; i++ ) { - if ( GBUFFER_GRABBING == saa->frame_stat[i] ) - break; - } - - /* yes, then set up the rps again */ - if( saa->buffers != i) { - init_rps0_rev0(saa,i,1); - } - } else { - /* new revisions */ - - /* look what buffer has been grabbed, set the ´done´-flag */ - mc2 = saa7146_read(saa->mem, MC2); - for( i = 0; i < saa->buffers; i++ ) { - - if ((0 == (mc2 & (1 << (11+i)))) && (GBUFFER_GRABBING == saa->frame_stat[i])) { - saa->frame_stat[i] = GBUFFER_DONE; - } - } - - } - /* notify any pending process */ - wake_up_interruptible(&saa->rps0_wq); - return; -} - -/* ---------------------------------------------*/ -/* mask-clipping */ -/* ---------------------------------------------*/ -int calculate_clipping_registers_mask(struct saa7146* saa, u32 width, u32 height, struct saa7146_video_dma* vdma2, u32* clip_format, u32* arbtr_ctrl) -{ - u32 clip_addr = 0, clip_pitch = 0; - - dprintk("saa7146: ==> calculate_clipping_registers_mask\n"); - - /* adjust arbitration control register */ - *arbtr_ctrl &= 0xffff00ff; - *arbtr_ctrl |= 0x00001000; - - clip_addr = virt_to_bus(saa->clipping); - clip_pitch = ((width+31)/32)*4; - - vdma2->base_even = clip_addr; - vdma2->base_page = 0x04; /* enable read - operation */ - vdma2->prot_addr = clip_addr + (clip_pitch*height); - - /* convention: if scaling is between 1/2 and 1/4 we only use - the even lines, the odd lines get discarded (see vertical scaling) */ - if( saa->interlace != 0 && height*4 >= modes_constants[saa->mode].v_calc && height*2 <= modes_constants[saa->mode].v_calc) { - vdma2->base_odd = vdma2->prot_addr; - vdma2->pitch = clip_pitch; - vdma2->num_line_byte = (((height)-1) << 16) | (clip_pitch-1); - } else { - vdma2->base_odd = clip_addr+clip_pitch; - vdma2->pitch = clip_pitch*2; - vdma2->num_line_byte = (((height/2)-1) << 16) | (clip_pitch-1); - } - - *clip_format &= 0xfffffff7; - - return 0; -} - -/* helper functions for emulate rect-clipping via mask-clipping. - note: these are extremely inefficient, but for clipping with less than 16 - windows rect-clipping should be done anyway... -*/ - -/* clear one pixel of the clipping memory at position (x,y) */ -void set_pixel(s32 x, s32 y, s32 window_width, u32* mem) { - - u32 mem_per_row = 0; - u32 adr = 0; - u32 shift = 0; - u32 bit = 0; - - mem_per_row = (window_width + 31 )/ 32 ; - adr = y * mem_per_row + (x / 32); - shift = 31 - (x % 32); - bit = (1 << shift); - - mem[adr] |= bit; -} - -/* clear a box out of the clipping memory, beginning at (x,y) with "width" and "height" */ -void set_box(s32 x, s32 y, s32 width, s32 height, s32 window_width, s32 window_height, u32* mem) -{ - s32 ty = 0; - s32 tx = 0; - - /* the video_clip-struct may contain negative values to indicate that a window - doesn't lay completly over the video window. Thus, we correct the values */ - - if( width < 0) { - x += width; width = -width; - } - if( height < 0) { - y += height; height = -height; - } - - if( x < 0) { - width += x; x = 0; - } - if( y < 0) { - height += y; y = 0; - } - - if( width <= 0 || height <= 0) { - printk("saa7146: ==> set_box: sanity error!\n"); - return; - } - - if(x + width > window_width) - width -= (x + width) - window_width; - if(y + height > window_height) - height -= (y + height) - window_height; - - /* Now, set a '1' in the memory, where no video picture should appear */ - for(ty = y; ty < y+height; ty++) { - for(tx = x; tx < x+width; tx++) { - set_pixel(tx, ty, window_width, mem); - } - } -} - -int emulate_rect_clipping(struct saa7146 *saa, u16 clipcount, int x[], int y[], int w[], int h[], u32 w_width, u32 w_height) -{ - int i = 0; - - /* clear out clipping mem */ - memset(saa->clipping, 0x0, CLIPPING_MEM_SIZE*sizeof(u32)); - - /* go through list of clipping-windows, clear out rectangular-regions in the clipping memory */ - for(i = 0; i < clipcount; i++) { - set_box(x[i], y[i], w[i], h[i], w_width, w_height, saa->clipping); - } - - return 0; -} - -/* ---------------------------------------------*/ -/* rectangle-clipping */ -/* ---------------------------------------------*/ - -#define MIN(x,y) ( ((x) < (y)) ? (x) : (y) ) -#define MAX(x,y) ( ((x) > (y)) ? (x) : (y) ) - -/* simple double-sort algorithm with duplicate elimination */ -int sort_and_eliminate(u32* values, int* count) -{ - int low = 0, high = 0, top = 0, temp = 0; - int cur = 0, next = 0; - - /* sanity checks */ - if( (0 > *count) || (NULL == values) ) { - printk("saa7146: ==> sort_and_eliminate: internal error #1\n"); - return -EINVAL; - } - - /* bubble sort the first ´count´ items of the array ´values´ */ - for( top = *count; top > 0; top--) { - for( low = 0, high = 1; high < top; low++, high++) { - if( values[low] > values[high] ) { - temp = values[low]; - values[low] = values[high]; - values[high] = temp; - } - } - } - - /* remove duplicate items */ - for( cur = 0, next = 1; next < *count; next++) { - if( values[cur] != values[next]) - values[++cur] = values[next]; - } - - *count = cur + 1; - - return 0; -} - -int calculate_clipping_registers_rect(struct saa7146 *saa, int clipcount, int x[], int y[], int w[], int h[], u32 width, u32 height, struct saa7146_video_dma* vdma2, u32* clip_format, u32* arbtr_ctrl) -{ - u32 line_list[32]; - u32 pixel_list[32]; - u32 numdwords = 0; - - int i = 0, j = 0; - int l = 0, r = 0, t = 0, b = 0; - int cnt_line = 0, cnt_pixel = 0; - - dprintk("saa7146: ==> calculate_clipping_registers_clip\n"); - - /* clear out memory */ - memset(&line_list[0], 0x00, sizeof(u32)*32); - memset(&pixel_list[0], 0x00, sizeof(u32)*32); - memset(saa->clipping, 0x00, sizeof(u32)*CLIPPING_MEM_SIZE); - - /* fill the line and pixel-lists */ - for(i = 0; i < clipcount; i++) { - - /* calculate values for l(eft), r(ight), t(op), b(ottom) */ - l = x[i]; - r = x[i]+w[i]; - t = y[i]; - b = y[i]+h[i]; - - /* insert left/right coordinates */ - pixel_list[ 2*i ] = MIN(l, width); - pixel_list[(2*i)+1] = MIN(r, width); - /* insert top/bottom coordinates */ - line_list[ 2*i ] = MIN(t, height); - line_list[(2*i)+1] = MIN(b, height); - } - - /* sort and eliminate lists */ - cnt_line = cnt_pixel = 2*clipcount; - sort_and_eliminate( &pixel_list[0], &cnt_pixel ); - sort_and_eliminate( &line_list[0], &cnt_line ); - - /* calculate the number of used u32s */ - numdwords = MAX( (cnt_line+1), (cnt_pixel+1))*2; - numdwords = MAX(4, numdwords); - numdwords = MIN(64, numdwords); - - /* fill up cliptable */ - for(i = 0; i < cnt_pixel; i++) { - saa->clipping[2*i] |= (pixel_list[i] << 16); - } - for(i = 0; i < cnt_line; i++) { - saa->clipping[(2*i)+1] |= (line_list[i] << 16); - } - - /* fill up cliptable with the display infos */ - for(j = 0; j < clipcount; j++) { - - for(i = 0; i < cnt_pixel; i++) { - - if( x[j] < 0) - x[j] = 0; - - if( pixel_list[i] < (x[j] + w[j])) { - - if ( pixel_list[i] >= x[j] ) { - saa->clipping[2*i] |= (1 << j); - } - } - } - for(i = 0; i < cnt_line; i++) { - - if( y[j] < 0) - y[j] = 0; - - if( line_list[i] < (y[j] + h[j]) ) { - - if( line_list[i] >= y[j] ) { - saa->clipping[(2*i)+1] |= (1 << j); - } - } - } - } - - /* adjust arbitration control register */ - *arbtr_ctrl &= 0xffff00ff; - *arbtr_ctrl |= 0x00001c00; - - vdma2->base_even = virt_to_bus(saa->clipping); - vdma2->base_odd = virt_to_bus(saa->clipping); - vdma2->prot_addr = virt_to_bus(saa->clipping)+((sizeof(u32))*(numdwords)); - vdma2->base_page = 0x04; - vdma2->pitch = 0x00; - vdma2->num_line_byte = (0 << 16 | (sizeof(u32))*(numdwords-1) ); - - /* set clipping-mode. please note again, that for sizes below 1/2, we only use the - even-field. because of this, we have to specify ´recinterl´ correctly (specs, p. 97)*/ - *clip_format &= 0xfffffff7; - - if( saa->interlace != 0 && height*4 >= modes_constants[saa->mode].v_calc && height*2 <= modes_constants[saa->mode].v_calc) { - *clip_format |= 0x00000000; - } else { - *clip_format |= 0x00000008; - } - return 0; -} - - -/* ---------------------------------------------*/ -/* main function for clipping */ -/* ---------------------------------------------*/ -/* arguments: - type = see ´saa7146.h´ - width = width of the video-window - height = height of the video-window - *mask = pointer to mask memory (only needed for mask-clipping) - *clips = pointer to clip-window-list (only needed for rect-clipping) - clipcount = # of clip-windows (only needed for rect-clipping) -*/ -int clip_windows(struct saa7146* saa, u32 type, u32 width, u32 height, u32* mask, u16 clipcount, int x[], int y[], int w[], int h[]) -{ - struct saa7146_video_dma vdma2; - - u32 clip_format = saa7146_read(saa->mem, CLIP_FORMAT_CTRL); - u32 arbtr_ctrl = saa7146_read(saa->mem, PCI_BT_V1); - - hprintk("saa7146: ==> clip_windows\n"); - - /* some sanity checks first */ - if ( width <= 0 || height <= 0 ) { - printk("saa7146: ==> clip_windows: sanity error #1!\n"); - return -EINVAL; - } - - /* check if anything to do here, disable clipping if == 0 */ - if( clipcount == 0 ) { - - /* mask out relevant bits (=lower word)*/ - clip_format &= MASK_W1; - - /* upload clipping-registers*/ - saa7146_write(saa->mem, CLIP_FORMAT_CTRL,clip_format); - saa7146_write(saa->mem, MC2, (MASK_05 | MASK_21)); - - /* disable video dma2 */ - saa7146_write(saa->mem, MC1, (MASK_21)); - - return 0; - } - - switch(type) { - - case SAA7146_CLIPPING_MASK_INVERTED: - case SAA7146_CLIPPING_MASK: - { - printk("mask\n"); - /* sanity check */ - if( NULL == mask ) { - printk("saa7146: ==> clip_windows: sanity error #1!\n"); - return -EINVAL; - } - - /* copy the clipping mask to structure */ - memmove(saa->clipping, mask, CLIPPING_MEM_SIZE*sizeof(u32)); - /* set clipping registers */ - calculate_clipping_registers_mask(saa,width,height,&vdma2,&clip_format,&arbtr_ctrl); - - break; - } - - case SAA7146_CLIPPING_RECT_INVERTED: - case SAA7146_CLIPPING_RECT: - { - /* see if we have anything to do */ - if ( 0 == clipcount ) { - return 0; - } - - /* sanity check */ - if( NULL == x || NULL == y || NULL == w || NULL == h ) { - printk("saa7146: ==> clip_windows: sanity error #2!\n"); - return -EINVAL; - } - - /* rectangle clipping can only handle 16 overlay windows; if we - have more, we have do emulate the whole thing with mask-clipping */ - if (1) { //clipcount > > 16 ) { - //printk("emulate\n"); - emulate_rect_clipping(saa, clipcount, x,y,w,h, width, height); - calculate_clipping_registers_mask(saa,width,height,&vdma2,&clip_format,&arbtr_ctrl); - if( SAA7146_CLIPPING_RECT == type ) - type = SAA7146_CLIPPING_MASK; - else - type = SAA7146_CLIPPING_MASK_INVERTED; - - } - else { - calculate_clipping_registers_rect(saa,clipcount,x,y,w,h,width,height,&vdma2,&clip_format,&arbtr_ctrl); - } - - break; - } - - default: - { - printk("saa7146: ==> clip_windows: internal error #1!\n"); - return -EINVAL; - } - - } - - /* set clipping format */ - clip_format &= 0xffff0008; - clip_format |= (type << 4); - - saa7146_write(saa->mem, BASE_EVEN2, vdma2.base_even); - saa7146_write(saa->mem, BASE_ODD2, vdma2.base_odd); - saa7146_write(saa->mem, PROT_ADDR2, vdma2.prot_addr); - saa7146_write(saa->mem, BASE_PAGE2, vdma2.base_page); - saa7146_write(saa->mem, PITCH2, vdma2.pitch); - saa7146_write(saa->mem, NUM_LINE_BYTE2, vdma2.num_line_byte); - - saa7146_write(saa->mem, CLIP_FORMAT_CTRL,clip_format); - saa7146_write(saa->mem, PCI_BT_V1, arbtr_ctrl); - - /* upload clip_control-register, clipping-registers, enable video dma2 */ - saa7146_write(saa->mem, MC2, (MASK_05 | MASK_21 | MASK_03 | MASK_19)); - saa7146_write(saa->mem, MC1, (MASK_05 | MASK_21)); -/* - printk("ARBTR_CTRL: 0x%08x\n",saa7146_read(saa->mem, PCI_BT_V1)); - printk("CLIP_FORMAT: 0x%08x\n",saa7146_read(saa->mem, CLIP_FORMAT_CTRL)); - printk("BASE_ODD1: 0x%08x\n",saa7146_read(saa->mem, BASE_ODD1)); - printk("BASE_EVEN1: 0x%08x\n",saa7146_read(saa->mem, BASE_EVEN1)); - printk("PROT_ADDR1: 0x%08x\n",saa7146_read(saa->mem, PROT_ADDR1)); - printk("PITCH1: 0x%08x\n",saa7146_read(saa->mem, PITCH1)); - printk("BASE_PAGE1: 0x%08x\n",saa7146_read(saa->mem, BASE_PAGE1)); - printk("NUM_LINE_BYTE1: 0x%08x\n",saa7146_read(saa->mem, NUM_LINE_BYTE1)); - printk("BASE_ODD2: 0x%08x\n",saa7146_read(saa->mem, BASE_ODD2)); - printk("BASE_EVEN2: 0x%08x\n",saa7146_read(saa->mem, BASE_EVEN2)); - printk("PROT_ADDR2: 0x%08x\n",saa7146_read(saa->mem, PROT_ADDR2)); - printk("PITCH2: 0x%08x\n",saa7146_read(saa->mem, PITCH2)); - printk("BASE_PAGE2: 0x%08x\n",saa7146_read(saa->mem, BASE_PAGE2)); - printk("NUM_LINE_BYTE2: 0x%08x\n",saa7146_read(saa->mem, NUM_LINE_BYTE2)); -*/ - return 0; - -} -#endif - -#ifdef __COMPILE_SAA7146_I2C__ - -/* ---------------------------------------------*/ -/* i2c-helper functions */ -/* ---------------------------------------------*/ - -/* this functions gets the status from the saa7146 at address 'addr' - and returns it */ -u32 i2c_status_check(struct saa7146* saa) -{ - u32 iicsta = 0; - - iicsta = saa7146_read(saa->mem, I2C_STATUS ); - hprintk("saa7146: ==> i2c_status_check:0x%08x\n",iicsta); - - return iicsta; -} - -/* this function should be called after an i2c-command has been written. - if we are debugging, it checks, if the busy flags rises and falls correctly - and reports a timeout (-1) or the error-bits set like in described in the specs, - p.123, table 110 */ -int i2c_busy_rise_and_fall(struct saa7146* saa, int timeout) -{ - int i = 0; - u32 status = 0; - - hprintk("saa7146: ==> i2c_busy_rise_and_fall\n"); - - /* wait until busy-flag rises */ - for (i = 5; i > 0; i--) { - - hprintk("saa7146: i2c_busy_rise_and_fall; rise wait %d\n",i); - - status = i2c_status_check(saa); - - /* check busy flag */ - if ( 0 != (status & SAA7146_I2C_BUSY)) - break; - - /* see if anything can be done while we're waiting */ - cond_resched (); - mdelay(1); - } - - /* we don't check the i-value, since it does not matter - if we missed the rise of the busy flag or the fall or - whatever. we just have to wait some undefined time - after an i2c-command has been written out */ - - /* wait until busy-flag is inactive or error is reported */ - for (i = timeout; i > 0; i--) { - - hprintk("saa7146: i2c_busy_rise_and_fall; fall wait %d\n",i); - - status = i2c_status_check(saa); - - /* check busy flag */ - if ( 0 == (status & SAA7146_I2C_BUSY)) - break; - - /* check error flag */ - if ( 0 != (status & SAA7146_I2C_ERR)) - break; - - /* see if anything can be done while we're waiting */ - cond_resched (); - - mdelay(1); - } - - /* did a timeout occur ? */ - if ( 0 == i ) { - hprintk("saa7146: i2c_busy_rise_and_fall: timeout #2\n"); - return -1; - } - - /* report every error pending */ - switch( status & 0xfc ) { - - case SAA7146_I2C_SPERR: - hprintk("saa7146: i2c_busy_rise_and_fall: error due to invalid start/stop condition\n"); - break; - - case SAA7146_I2C_APERR: - hprintk("saa7146: i2c_busy_rise_and_fall: error in address phase\n"); - break; - - case SAA7146_I2C_DTERR: - hprintk("saa7146: i2c_busy_rise_and_fall: error in data transmission\n"); - break; - - case SAA7146_I2C_DRERR: - hprintk("saa7146: i2c_busy_rise_and_fall: error when receiving data\n"); - break; - - case SAA7146_I2C_AL: - hprintk("saa7146: i2c_busy_rise_and_fall: error because arbitration lost\n"); - break; - } - - return status; - -} - -/* this functions resets the saa7146 at address 'addr' - and returns 0 if everything was fine, otherwise -1 */ -int i2c_reset(struct saa7146* saa) -{ - u32 status = 0; - - hprintk("saa7146: ==> i2c_reset\n"); - - status = i2c_status_check(saa); - - /* clear data-byte for sure */ - saa7146_write(saa->mem, I2C_TRANSFER, 0x00); - - /* check if any operation is still in progress */ - if ( 0 != ( status & SAA7146_I2C_BUSY) ) { - - /* Yes, kill ongoing operation */ - hprintk("saa7146: i2c_reset: busy_state detected\n"); - - /* set ABORT-OPERATION-bit */ - saa7146_write(saa->mem, I2C_STATUS, ( SAA7146_I2C_BBR | MASK_07)); - saa7146_write(saa->mem, MC2, (MASK_00 | MASK_16)); - mdelay( SAA7146_I2C_DELAY ); - - /* clear all error-bits pending; this is needed because p.123, note 1 */ - saa7146_write(saa->mem, I2C_STATUS, SAA7146_I2C_BBR ); - saa7146_write(saa->mem, MC2, (MASK_00 | MASK_16)); - mdelay( SAA7146_I2C_DELAY ); - } - - /* check if any other error is still present */ - if ( SAA7146_I2C_BBR != (status = i2c_status_check(saa)) ) { - - /* yes, try to kick it */ - hprintk("saa7146: i2c_reset: error_state detected, status:0x%08x\n",status); - - /* clear all error-bits pending */ - saa7146_write(saa->mem, I2C_STATUS, SAA7146_I2C_BBR ); - saa7146_write(saa->mem, MC2, (MASK_00 | MASK_16)); - mdelay( SAA7146_I2C_DELAY ); - /* the data sheet says it might be necessary to clear the status - twice after an abort */ - saa7146_write(saa->mem, I2C_STATUS, SAA7146_I2C_BBR ); - saa7146_write(saa->mem, MC2, (MASK_00 | MASK_16)); - } - - /* if any error is still present, a fatal error has occurred ... */ - if ( SAA7146_I2C_BBR != (status = i2c_status_check(saa)) ) { - hprintk("saa7146: i2c_reset: fatal error, status:0x%08x\n",status); - return -EIO; - } - - return 0; -} - -/* this functions writes out the data-bytes at 'data' to the saa7146 - at address 'addr' regarding the 'timeout' and 'retries' values; - it returns 0 if ok, -1 if the transfer failed, -2 if the transfer - failed badly (e.g. address error) */ -int i2c_write_out(struct saa7146* saa, u32* data, int timeout) -{ - int status = 0; - - hprintk("saa7146: ==> writeout: 0x%08x (before) (to:%d)\n",*data,timeout); - - /* write out i2c-command */ - saa7146_write(saa->mem, I2C_TRANSFER, *data); - saa7146_write(saa->mem, I2C_STATUS, SAA7146_I2C_BBR); - saa7146_write(saa->mem, MC2, (MASK_00 | MASK_16)); - - /* after writing out an i2c-command we have to wait for a while; - because we do not know, how long we have to wait, we simply look - what the busy-flag is doing, before doing something else */ - - /* reason: while fiddling around with the i2c-routines, I noticed - that after writing out an i2c-command, one may not read out the - status immediately after that. you *must* wait some time, before - even the busy-flag gets set */ - - status = i2c_busy_rise_and_fall(saa,timeout); - - if ( -1 == status ) { - hprintk("saa7146: i2c_write_out; timeout\n"); - return -ETIMEDOUT; - } - - /* we only handle address-errors here */ - if ( 0 != (status & SAA7146_I2C_APERR)) { - hprintk("saa7146: i2c_write_out; error in address phase\n"); - return -EREMOTEIO; - } - - /* check for some other mysterious error; we don't handle this here */ - if ( 0 != ( status & 0xff)) { - hprintk("saa7146: i2c_write_out: some error has occurred\n"); - return -EIO; - } - - /* read back data, just in case we were reading ... */ - *data = saa7146_read(saa->mem, I2C_TRANSFER); - - hprintk("saa7146: writeout: 0x%08x (after)\n",*data); - - return 0; -} - -int clean_up(struct i2c_msg m[], int num, u32 *op) -{ - u16 i, j; - u16 op_count = 0; - - /* loop through all messages */ - for(i = 0; i < num; i++) { - op_count++; - /* loop throgh all bytes of message i */ - for(j = 0; j < m[i].len; j++) { - /* write back all bytes that could have been read */ - m[i].buf[j] = (op[op_count/3] >> ((3-(op_count%3))*8)); - op_count++; - } - } - - return 0; -} - -int prepare(struct i2c_msg m[], int num, u32 *op) -{ - u16 h1, h2; - u16 i, j, addr; - u16 mem = 0, op_count = 0; - -//for (i=0; i I2C_MEM_SIZE ) { - hprintk("saa7146: prepare: i2c-message to big\n"); - return -1; - } - - /* be careful: clear out the i2c-mem first */ - memset(op,0,sizeof(u32)*mem); - - for(i = 0; i < num; i++) { - /* insert the address of the i2c-slave. - * note: we get 7-bit-i2c-addresses, - * so we have to perform a translation - */ - addr = (m[i].addr << 1) | ((m[i].flags & I2C_M_RD) ? 1 : 0); - h1 = op_count/3; h2 = op_count%3; - op[h1] |= ((u8)addr << ((3-h2)*8)); - op[h1] |= (SAA7146_I2C_START << ((3-h2)*2)); - op_count++; - /* loop through all bytes of message i */ - for(j = 0; j < m[i].len; j++) { - /* insert the data bytes */ - h1 = op_count/3; h2 = op_count%3; - op[h1] |= ((u8)m[i].buf[j] << ((3-h2)*8)); - op[h1] |= (SAA7146_I2C_CONT << ((3-h2)*2)); - op_count++; - } - } - - /* have a look at the last byte inserted: - * if it was: ...CONT change it to ...STOP - */ - h1 = (op_count-1)/3; h2 = (op_count-1)%3; - if ( SAA7146_I2C_CONT == (0x3 & ((op[h1]) >> ((3-h2)*2))) ) { - op[h1] &= ~(0x2 << ((3-h2)*2)); - op[h1] |= (SAA7146_I2C_STOP << ((3-h2)*2)); - } - - return mem; -} -#endif - - -#ifdef __COMPILE_SAA7146_DEBI__ - -/* functions for accessing the debi-port. note: we currently don't support - * page-table-transfers. - */ - -#define MY_DEBI_TIMEOUT_MS 5 - -int debi_transfer(struct saa7146* saa, struct saa7146_debi_transfer* dt) -{ - u32 debi_config = 0, debi_command = 0, debi_page = 0, debi_ad = 0; - u32 timeout = MY_DEBI_TIMEOUT_MS; - - /* sanity checks */ - if(dt->direction > 1 || dt->timeout > 15 || dt->swap > 3 || dt->slave16 > 2 || dt->intel > 1 || dt->increment > 1 || dt->tien > 1 ) - return -EINVAL; - - debi_page = 0; - /* keep bits 31,30,28 clear */ - debi_config = (dt->timeout << 22) | (dt->swap << 20) | (dt->slave16 << 19) | (dt->increment << 18) | (dt->intel << 17) | (dt->tien << 16); - debi_command = (dt->num_bytes << 17) | (dt->direction << 16) | (dt->address << 0); - debi_ad = dt->mem; - - saa7146_write(saa->mem, DEBI_PAGE, debi_page); - saa7146_write(saa->mem, DEBI_CONFIG, debi_config); - saa7146_write(saa->mem, DEBI_COMMAND, debi_command); - saa7146_write(saa->mem, DEBI_AD, debi_ad); - - /* upload debi-registers */ - saa7146_write(saa->mem, MC2, (MASK_01|MASK_17)); - - /* wait for DEBI upload to complete */ - while (! (saa7146_read(saa->mem, MC2) & 0x2)); - - while( --timeout ) { - /* check, if DEBI still active */ - u32 psr = saa7146_read(saa->mem, PSR); - if (0 != (psr & SPCI_DEBI_S)) { - /* check, if error occurred */ -/* if ( 0 != (saa7146_read(saa->mem, SSR) & (MASK_23|MASK_22))) { */ - if ( 0 != (saa7146_read(saa->mem, SSR) & (MASK_22))) { - /* clear error status and indicate error */ - saa7146_write(saa->mem, ISR, SPCI_DEBI_E); - return -1; - } - } - else { - /* Clear status bit */ - saa7146_write(saa->mem, ISR, SPCI_DEBI_S); - break; - } - /* I don´t know how we should actually wait for the debi to have finished. - we simply wait 1ms here and then check in a loop for max. MY_DEBI_TIMEOUT_MS */ - mdelay(1); - } - - /* check for timeout */ - if( 0 == timeout ) { - return -1; - } - - /* read back data if we did immediate read-transfer */ - if(dt->num_bytes <= 4 && dt->direction == 1) { - dt->mem = saa7146_read(saa->mem, DEBI_AD); - switch(dt->num_bytes) { - case 1: - dt->mem &= 0x000000ff; - break; - case 2: - dt->mem &= 0x0000ffff; - break; - case 3: - dt->mem &= 0x00ffffff; - break; - } - } - - return 0; -} -#endif - -#ifdef __COMPILE_SAA7146_STUFF__ -/* ---------------------------------------------*/ -/* helper-function: set gpio-pins */ -/* ---------------------------------------------*/ -void gpio_set(struct saa7146* saa, u8 pin, u8 data) -{ - u32 value = 0; - - /* sanity check */ - if(pin > 3) - return; - - /* read old register contents */ - value = saa7146_read(saa->mem, GPIO_CTRL ); - - value &= ~(0xff << (8*pin)); - value |= (data << (8*pin)); - - saa7146_write(saa->mem, GPIO_CTRL, value); -} - -void select_input(struct saa7146* saa, int p) -{ - u32 hps_ctrl = 0; - - /* sanity check */ - if( p < 0 || p > 1 ) - return; - - /* read old state */ - hps_ctrl = saa7146_read(saa->mem, HPS_CTRL); - - /* mask out relevant bits */ - hps_ctrl &= ~( MASK_31 | MASK_30 | MASK_28 ); - - /* set bits for input b */ - if( 1 == p ) { - hps_ctrl |= ( (1 << 30) | (1 << 28) ); - } - - /* write back & upload register */ - saa7146_write(saa->mem, HPS_CTRL, hps_ctrl); - saa7146_write(saa->mem, MC2, (MASK_05 | MASK_21)); -} - -#endif - diff -Nru a/drivers/media/dvb/av7110/saa7146_core.c b/drivers/media/dvb/av7110/saa7146_core.c --- a/drivers/media/dvb/av7110/saa7146_core.c Mon Feb 24 10:14:50 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,962 +0,0 @@ -/* - saa7146_core.c - core-functions + i2c driver for the saa7146 by - Philips Semiconductors. - - Copyright (C) 1998,1999 Michael Hunold - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#include /* for module-version */ -#include /* for delay-stuff */ -#include /* for kmalloc/kfree */ -#include /* for pci-config-stuff, vendor ids etc. */ -#include /* for mem_map_reserve */ -#include -#include /* for accessing the pci-device */ -#include /* for module-version */ - -#include "saa7146_defs.h" -#include "saa7146_core.h" -#include "saa7146_v4l.h" -#include "av7110.h" -#include "compat.h" -#include "dvb_i2c.h" - -/* insmod parameter: here you can specify the number of video-buffers - to be allocated. for simple capturing 2 buffers (double-buffering) - should suffice. but if you plan to do 25fps grabbing, you should - set this to 4(=maximum), in order to be able to catch up from - temporarily delays */ -static int buffers = 2; - -/* insmod parameter: some programs (e.g. ´vic´) do not allow to - specify the used video-mode, so you have to tell this to the - modules by hand, 0 = PAL (default), 1 = NTSC */ -static int mode; - -/* debug levels: 0 -- no debugging outputs: default - 1 -- prints out entering (and exiting if useful) of functions - 2 -- prints out very, very detailed informations of what is going on - 3 -- both of the above */ -int saa7146_debug; /* insmod parameter */ - -#define dprintk if (saa7146_debug & 1) printk -#define hprintk if (saa7146_debug & 2) printk - -/* ---------------------------------------------*/ -/* memory functions - taken from bttv.c */ -/* ---------------------------------------------*/ - -static inline unsigned long kvirt_to_pa(unsigned long adr) -{ - unsigned long kva; - - kva = (unsigned long) page_address(vmalloc_to_page((void *)adr)); - kva |= adr & (PAGE_SIZE-1); /* restore the offset */ - - return __pa(kva); -} - - -static LIST_HEAD(saa7146_list); - -static int saa7146_extension_count = 0; -static struct saa7146_extension* saa7146_ext[SAA7146_MAX_EXTENSIONS]; - -#define SAA7146_I2C_TIMEOUT 100 /* in ms */ -#define SAA7146_I2C_RETRIES 6 - -static u32 SAA7146_I2C_BBR = SAA7146_I2C_BUS_BIT_RATE_3200; - -#define __COMPILE_SAA7146_I2C__ -#define __COMPILE_SAA7146_DEBI__ -#include "saa7146.c" -#undef __COMPILE_SAA7146_I2C__ - -/* ---------------------------------------------*/ -/* memory functions designed for saa7146 */ -/* ---------------------------------------------*/ - -/* rvmalloc allocates the memory and builds up - the page-tables for ´quant´-number of buffers */ -static void* rvmalloc(int quant, u32* pt[]) -{ - void* mem; - - unsigned long adr = 0; - unsigned long count = 0; - - u32* ptp = 0; - int i = 0, j = 0; - - dprintk(KERN_ERR "saa7146: rvmalloc called, quant:%d\n",quant); - - if(!quant) - return NULL; - - /* get grabbing memory */ - mem = vmalloc_32(quant*GRABBING_MEM_SIZE); - - if(!mem) - return NULL; - - dprintk(KERN_ERR "saa7146: alloc page tables\n"); - - /* alloc one page for a page-table for ´quant´ buffers */ - for(i = 0; i < quant; i++) { - pt[i] = (u32*)kmalloc(PAGE_SIZE,GFP_KERNEL); - - /* error: memory could not be allocated */ - if(!pt[i]) { - dprintk(KERN_ERR "saa7146: failed, free tables\n"); - for(j = (i-1); j >= 0; j--) - kfree(pt[j]); - dprintk(KERN_ERR "saa7146: free buffer memory\n"); - vfree(mem); - dprintk(KERN_ERR "saa7146: return 0 address for buffer\n"); - return NULL; - } - memset(pt[i], 0x00, PAGE_SIZE); - } - - dprintk(KERN_ERR "saa7146: clear RAM\n"); - - /* clear the ram out, no junk to the user - note: 0x7f gives a nice grey field - in RGB and YUV as well */ - memset(mem, 0x7f, quant*GRABBING_MEM_SIZE); - - dprintk(KERN_ERR "saa7146: build page tables\n"); - adr = (unsigned long)mem; - /* walk through the grabbing-memory and build up the page-tables */ - for(i = 0; i < quant; i++) { - - for (count=0; count 0) { - page = kvirt_to_pa(adr); - mem_map_unreserve(virt_to_page(__va(page))); - adr += PAGE_SIZE; - size -= PAGE_SIZE; - } - - /* release the grabbing memory */ - vfree(mem); - } - /* free the page tables */ - for(i = 0; i < quant; i++) { - kfree(pt[i]); - } -} - - -/* ---------------------------------------------*/ -/* i2c-functions */ -/* ---------------------------------------------*/ - -static -int do_master_xfer (struct dvb_i2c_bus *i2c, struct i2c_msg msgs[], int num) -{ - struct saa7146 *a = i2c->data; - int count; - int i = 0; - - dprintk(KERN_ERR "saa7146_core.o: master_xfer called, num:%d\n",num); - - /* prepare the message(s), get number of u32s to transfer */ - count = prepare(msgs, num, a->i2c); - - if (count < 0) { - hprintk(KERN_ERR "saa7146_core.o: could not prepare i2c-message\n"); - return -EIO; - } - - /* reset the i2c-device if necessary */ - if (i2c_reset(a) < 0) { - hprintk(KERN_ERR "saa7146_core.o: could not reset i2c-bus\n"); - return -EIO; - } - - for(i = 0; i < count; i++) { - /* see how many u32 have to be transferred; - * if there is only 1, - * we do not start the whole rps1-engine... - */ - - /* if address-error occurred, don't retry */ - if (i2c_write_out(a, &a->i2c[i], SAA7146_I2C_TIMEOUT) < 0) { - hprintk (KERN_ERR "saa7146_core.o: " - "i2c error in address phase\n"); - return -EREMOTEIO; - } - } - - /* if any things had to be read, get the results */ - if (clean_up(msgs, num, a->i2c) < 0) { - hprintk(KERN_ERR "saa7146_core.o: i2c cleanup failed!\n"); - return -EIO; - } - - /* return the number of delivered messages */ - return num; -} - - - -static -int master_xfer (struct dvb_i2c_bus *i2c, struct i2c_msg msgs[], int num) -{ - struct saa7146 *saa = i2c->data; - int retries = SAA7146_I2C_RETRIES; - int ret; - - if (down_interruptible (&saa->i2c_sem)) - return -ERESTARTSYS; - - do { - ret = do_master_xfer (i2c, msgs, num); - } while (ret != num && retries--); - - up (&saa->i2c_sem); - - return ret; -} - - -/* registering functions to load algorithms at runtime */ -int i2c_saa7146_add_bus (struct saa7146 *saa) -{ - init_MUTEX(&saa->i2c_sem); - - /* enable i2c-port pins */ - saa7146_write (saa->mem, MC1, (MASK_08 | MASK_24)); - - sprintf(saa->name, "saa7146(%d)", saa->dvb_adapter->num); - - saa->i2c_bus = dvb_register_i2c_bus (master_xfer, saa, - saa->dvb_adapter, 0); - if (!saa->i2c_bus) - return -ENOMEM; - - return 0; -} - - -void i2c_saa7146_del_bus (struct saa7146 *saa) -{ - dvb_unregister_i2c_bus (master_xfer, - saa->i2c_bus->adapter, saa->i2c_bus->id); - - dvb_unregister_adapter (saa->dvb_adapter); -} - -/* ---------------------------------------------*/ -/* debug-helper function: dump-registers */ -/* ---------------------------------------------*/ - -void dump_registers(unsigned char* mem) { - - u16 j = 0; - - for( j = 0x0; j < 0x1fe; j+=0x4 ) { - printk("0x%03x: 0x%08x\n",j,saa7146_read(mem,j)); - } - -} - -/* -----------------------------------------------------*/ -/* dispatcher-function for handling external commands */ -/* -----------------------------------------------------*/ - -static int saa7146_core_command (struct dvb_i2c_bus *i2c, unsigned int cmd, void *arg) -{ - int i = 0, result = -ENOIOCTLCMD; - struct saa7146* saa = i2c->data; - - dprintk("saa7146_core.o: ==> saa7146_core_command\n"); - - if( NULL == saa) - return -EINVAL; - - /* first let the extensions handle the command */ - for (i = 0; i < SAA7146_MAX_EXTENSIONS; i++) { - if (NULL != saa7146_ext[i]) { - if( -ENOIOCTLCMD != (result = saa7146_ext[i]->command(saa, saa->data[i], cmd, arg))) { - break; - } - } - } - - /* if command has not been handled by an extension, handle it now */ - if( result == -ENOIOCTLCMD ) { - - switch(cmd) { - case SAA7146_DUMP_REGISTERS: - { - dump_registers(saa->mem); - break; - } - case SAA7146_SET_DD1: - { - u32 *i = arg; - - dprintk(KERN_ERR "saa7146_core.o: SAA7146_SET_DD1 to 0x%08x\n",*i); - - /* set dd1 port register */ - saa7146_write(saa->mem, DD1_INIT, *i); - - /* write out init-values */ - saa7146_write(saa->mem,MC2, (MASK_09 | MASK_10 | MASK_26 | MASK_26)); - - break; - } - case SAA7146_DO_MMAP: - { - struct vm_area_struct *vma = arg; - unsigned long size = vma->vm_end - vma->vm_start; - unsigned long start = vma->vm_start; - unsigned long page,pos; - - dprintk(KERN_ERR "saa7146_core.o: SAA7146_DO_MMAP.\n"); - - if (size > saa->buffers * GRABBING_MEM_SIZE) - return -EINVAL; - - if ( NULL == saa->grabbing ) - return -EINVAL; - - pos=(unsigned long)saa->grabbing; - - while (size > 0) - { - page = kvirt_to_pa(pos); - if (remap_page_range(vma, start, page, - PAGE_SIZE, PAGE_SHARED)) - return -EAGAIN; - start += PAGE_SIZE; - pos += PAGE_SIZE; - size -= PAGE_SIZE; - } - - break; - } - case SAA7146_DEBI_TRANSFER: { - - struct saa7146_debi_transfer *dt = arg; - - dprintk("saa7146_core.o: SAA7146_DEBI_TRANSFER\n"); - dprintk("saa7146_core.o: timeout:%d, swap:%d, slave16:%d, increment:%d, intel:%d, tien:%d\n", dt->timeout, dt->swap, dt->slave16, dt->increment, dt->intel, dt->tien); - dprintk("saa7146_core.o: address:0x%04x, num_bytes:%d, direction:%d, mem:0x%08x\n",dt->address,dt->address,dt->direction,dt->mem); - - debi_transfer(saa, dt); - break; - } - - default: { - return -ENOIOCTLCMD; - } - } - } - - return 0; -} - -/* -----------------------------------------------------*/ -/* dispatcher-function for handling irq-events */ -/* -----------------------------------------------------*/ - -/* irq-handler function */ -static void saa7146_irq(int irq, void *dev_id, struct pt_regs * regs) -{ - struct saa7146 *saa = (struct saa7146 *)dev_id; - u32 isr = 0; - int i; - int count = 0; - - /* process all interrupts */ - while (1) { - - /* read out the primary status register */ - isr = saa7146_read(saa->mem, ISR); - /* clear all IRQs */ - saa7146_write(saa->mem, ISR, isr); - - /* is anything to do? */ - if ( 0 == isr ) - return; - - dprintk("%s: irq-call: isr:0x%08x\n",saa->name,isr); - - /* first let the extensions handle the interrupt */ - for (i = 0; i < SAA7146_MAX_EXTENSIONS; i++) - if (saa7146_ext[i] && - (isr&saa7146_ext[i]->handles_irqs)) { - saa7146_ext[i]->irq_handler(saa, isr, saa->data[i]); - //saa7146_write(saa->mem, ISR, saa7146_ext[i]->handles_irqs); - } - - //printk(KERN_ERR "%s: unhandled interrupt: 0x%08x\n", saa->name, isr); - - /* see if we are in a hard interrupt loop */ - ++count; - if (count > 10) - printk (KERN_WARNING "%s: irq loop %d\n", saa->name, count); - if (count > 20) { - saa7146_write(saa->mem, IER, 0x00000000); - printk(KERN_ERR "%s: IRQ lockup, cleared int mask\n", saa->name); - break; - } - } -} - -/* ----------------------------------------------------- - functions for finding any saa7146s in the system, - inserting/removing module for kernel, etc. - -----------------------------------------------------*/ - -int configure_saa7146 (struct saa7146 *saa) -{ - u32 rev = 0; - int result = 0; - - hprintk("saa7146_core.o: ==> configure_saa7146\n"); - - /* check module-parameters for sanity */ - - /* check if wanted number of video-buffers is valid, otherwise fix it */ - //if (buffers < 2) - // buffers = 2; - - if ( buffers > SAA7146_MAX_BUF ) - buffers = SAA7146_MAX_BUF; - - /* check if mode is supported */ - switch( mode ) { - /* 0 = pal, 1 = ntsc */ - case 0: - case 1: - { - break; - } - /* default to pal */ - default: - { - mode = 0; - break; - } - } - - /* get chip-revision; this is needed to enable bug-fixes */ - if( 0 > pci_read_config_dword(saa->device, 0x08, &rev)) { - printk (KERN_ERR - "saa7146_core.o: cannot read from pci-device!\n"); - return -1; - } - - saa->revision = (rev & 0xf); - - /* remap the memory from virtual to physical address */ - saa->mem = ioremap ((saa->device->resource[0].start) - &PCI_BASE_ADDRESS_MEM_MASK, 0x1000); - - if ( !saa->mem ) { - printk(KERN_ERR "saa7146_core.o: cannot map pci-address!\n"); - return -EFAULT; - } - - /* get clipping memory */ - saa->clipping = (u32*) kmalloc (CLIPPING_MEM_SIZE*sizeof(u32),GFP_KERNEL); - - if ( !saa->clipping ) { - printk(KERN_ERR "saa7146_core.o: not enough kernel-memory for clipping!\n"); - return -ENOMEM; - } - - memset(saa->clipping, 0x0, CLIPPING_MEM_SIZE*sizeof(u32)); - - /* get i2c memory */ - saa->i2c = (u32*) kmalloc (I2C_MEM_SIZE*sizeof(u32),GFP_KERNEL); /*64*/ - - if ( !saa->i2c ) { - printk(KERN_ERR "saa7146_core.o: not enough kernel-memory for i2c!\n"); - kfree(saa->clipping); - return -ENOMEM; - } - - memset(saa->i2c, 0x0, I2C_MEM_SIZE*sizeof(u32)); - - /* get grabbing memory */ - saa->grabbing = (u32*) rvmalloc (buffers, &saa->page_table[0]); - - if ( !saa->grabbing ) { - printk(KERN_ERR "saa7146_core.o: not enough kernel-memory for grabbing_mem!\n"); - kfree(saa->i2c); - kfree(saa->clipping); - return -ENOMEM; - } - - /* get rps0 memory */ - saa->rps0 = (u32*) kmalloc (RPS_MEM_SIZE*sizeof(u32),GFP_KERNEL); - - if ( !saa->rps0 ) { - printk(KERN_ERR "saa7146_core.o: not enough kernel-memory for rps0_mem!\n"); - kfree(saa->i2c); - kfree(saa->clipping); - rvfree(saa->grabbing, buffers, &saa->page_table[0]); - return -ENOMEM; - } - - memset(saa->rps0, 0x0, RPS_MEM_SIZE*sizeof(u32)); - - /* get rps1 memory */ - saa->rps1 = (u32*) kmalloc (RPS_MEM_SIZE*sizeof(u32),GFP_KERNEL); - if ( !saa->rps1 ) { - printk(KERN_ERR "saa7146_core.o: not enough kernel-memory for rps1_mem!\n"); - kfree(saa->rps0); - kfree(saa->i2c); - kfree(saa->clipping); - rvfree(saa->grabbing, buffers, &saa->page_table[0]); - return -1; - } - - memset(saa->rps1, 0x0, RPS_MEM_SIZE*sizeof(u32)); - - /* get debi memory (32kB) */ - saa->debi = (u32*) kmalloc (8192*sizeof(u32),GFP_KERNEL); - - if ( !saa->debi ) { - printk(KERN_ERR "saa7146_core.o: not enough kernel-memory for debi_mem!\n"); - kfree(saa->rps1); - kfree(saa->rps0); - kfree(saa->i2c); - kfree(saa->clipping); - rvfree(saa->grabbing, buffers, &saa->page_table[0]); - return -1; - } - - memset(saa->debi, 0x0, 8192*sizeof(u32)); - - - /* clear out memory for grabbing information */ - memset(&saa->grab_width[0], 0x0, sizeof(int)*SAA7146_MAX_BUF); - memset(&saa->grab_height[0], 0x0, sizeof(int)*SAA7146_MAX_BUF); - memset(&saa->grab_format[0], 0x0, sizeof(int)*SAA7146_MAX_BUF); - memset(&saa->grab_port[0], 0x0, sizeof(int)*SAA7146_MAX_BUF); - - /* init the frame-status array */ - memset(&saa->frame_stat[0], GBUFFER_UNUSED, sizeof(int)*SAA7146_MAX_BUF); - - /* clear out all wait queues */ - init_waitqueue_head(&saa->rps0_wq); - init_waitqueue_head(&saa->rps1_wq); - - - /* request an interrupt for the saa7146 */ - result = request_irq (saa->device->irq, saa7146_irq, - SA_SHIRQ | SA_INTERRUPT, saa->name, (void *) saa); - - switch(result) { - case -EINVAL: - { - printk(KERN_ERR "saa7146_core.o: Bad irq number or handler\n"); - return -EINVAL; - } - case -EBUSY: - { - printk(KERN_ERR "saa7146_core.o: IRQ %d busy, change your PnP config in BIOS\n", saa->device->irq); - return -EBUSY; - } - case 0: - { - break; - } - default: - { - return result; - } - } - - /* print status message */ - dprintk("saa7146_core.o: %s: bus:%d, rev:%d, mem:0x%08x.\n", saa->name, saa->device->bus->number, saa->revision, (unsigned int) saa->mem); - - /* enable bus-mastering */ - pci_set_master( saa->device ); - - /* disable everything on the saa7146, perform a software-reset */ - saa7146_write(saa->mem, MC1, 0xbfff0000); - mdelay(2); -#if 0 - { - int j; - - /* clear all registers */ - for( j = 0x0; j < 0xfc; j+=0x4 ) { - saa7146_write(saa->mem,j, 0x0000000); - } - for( j = 0x104; j < 0x1fc; j+=0x4 ) { - saa7146_write(saa->mem,j, 0x0000000); - } - } -#endif - /* clear out any rps-signals pending */ - saa7146_write(saa->mem, MC2, 0xf8000000); - - /* enable video-port-pins*/ - saa7146_write(saa->mem,MC1, (MASK_10 | MASK_26)); - - /* disable all interrupt-conditions, only enable RPS interrupts */ - saa7146_write(saa->mem, ISR, 0xffffffff); - saa7146_write(saa->mem, IER, (MASK_27 | MASK_28)); -/* - printk("main: 0x114: 0x%08x\n",saa7146_read(saa->mem, 0x114)); - printk("main: 0x0e4: 0x%08x\n",saa7146_read(saa->mem, 0x0e4)); - printk("PSR: 0x%08x\n",saa7146_read(saa->mem, PSR)); - printk("SSR: 0x%08x\n",saa7146_read(saa->mem, SSR)); - printk("IER: 0x%08x\n",saa7146_read(saa->mem, IER)); - printk("ISR: 0x%08x\n",saa7146_read(saa->mem, ISR)); -*/ - - saa7146_write(saa->mem,PCI_BT_V1, 0x1c00101f); - saa7146_write(saa->mem,BCS_CTRL, 0x80400040); - - /* set dd1 stream a & b */ - saa7146_write(saa->mem, DD1_STREAM_B, 0x00000000); - saa7146_write(saa->mem, DD1_INIT, 0x02000000); - saa7146_write(saa->mem, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); - - saa7146_write(saa->mem, MC2, 0x077c077c); - - /* the Siemens DVB needs this if you want to have the i2c chips - get recognized before the main driver is loaded - */ - saa7146_write(saa->mem, GPIO_CTRL, 0x500000); - - saa->command = &saa7146_core_command; - saa->buffers = buffers; - saa->mode = mode; - saa->interlace = 1; - - i2c_saa7146_add_bus (saa); - - saa7146_write(saa->mem, GPIO_CTRL, 0x000000); - return 0; -} - - -void saa7146_foreach (void (*callback) (struct saa7146* saa, void *data), - void *data) -{ - struct list_head *entry; - - list_for_each (entry, &saa7146_list) { - struct saa7146* saa; - - saa = list_entry (entry, struct saa7146, list_head); - callback (saa, data); - } -} - - -static -void saa7146_attach_extension (struct saa7146* saa, void *data) -{ - int ext_id = (int) data; - saa7146_ext[ext_id]->attach (saa, &saa->data[ext_id]); -} - - -static -void saa7146_detach_extension (struct saa7146* saa, void *data) -{ - int ext_id = (int) data; - saa7146_ext[ext_id]->detach (saa, &saa->data[ext_id]); -} - - -int saa7146_add_extension(struct saa7146_extension* ext) -{ - int ext_id = 0; - - for (ext_id = 0; ext_id < SAA7146_MAX_EXTENSIONS; ext_id++) { - if (NULL == saa7146_ext[ext_id]) - break; - if (SAA7146_MAX_EXTENSIONS == ext_id) { - printk(KERN_WARNING "saa7146.o: attach_extension(%s) - " - "enlarge SAA7146_MAX_EXTENSIONS.\n",ext->name); - return -ENOMEM; - } - } - - saa7146_ext[ext_id] = ext; - saa7146_extension_count++; - - if (ext->attach) - saa7146_foreach (saa7146_attach_extension, (void*) ext_id); - - return 0; -} - - -int saa7146_del_extension(struct saa7146_extension* ext) -{ - int ext_id = 0; - - for (ext_id = 0; ext_id < SAA7146_MAX_EXTENSIONS; ext_id++) - if (ext == saa7146_ext[ext_id]) - break; - - if (SAA7146_MAX_EXTENSIONS == ext_id) { - printk("%s: detach_extension extension [%s] not found.\n", - __FUNCTION__, ext->name); - return -ENODEV; - } - - if (ext->detach) - saa7146_foreach (saa7146_detach_extension, (void*) ext_id); - - saa7146_ext[ext_id] = NULL; - saa7146_extension_count--; - - return 0; -} - - -static -void remove_saa7146(struct saa7146 *saa) -{ - i2c_saa7146_del_bus (saa); - - /* shut down all dma transfers */ - saa7146_write(saa->mem, MC1, 0xbfff0000); - - dprintk("free irqs\n"); - /* disable alle irqs, release irq-routine */ - saa7146_write(saa->mem, IER, 0x00); - saa7146_write(saa->mem, ISR, 0xffffffff); - free_irq(saa->device->irq, (void *)saa); - dprintk("unmap memory\n"); - /* unmap the memory, if necessary */ - if (saa->mem) - iounmap((unsigned char *)((unsigned int)saa->mem)); - - dprintk("release grabbing memory\n"); - /* release grabbing memory */ - if(saa->grabbing) - rvfree(saa->grabbing, buffers, &saa->page_table[0]); - - dprintk("release other memory\n"); - /* release clipping, i2c, rps0 memory */ - kfree(saa->clipping); - kfree(saa->i2c); - kfree(saa->rps0); - kfree(saa->rps1); - kfree(saa->debi); -} - - -static int saa7146_suspend(struct pci_dev *pdev, u32 state) -{ - printk("saa7146_suspend()\n"); - saa7146_core_command(((struct saa7146 *)pci_get_drvdata(pdev))->i2c_bus, - SAA7146_SUSPEND, 0); - return 0; -} - -static int -saa7146_resume(struct pci_dev *pdev) -{ - printk("saa7146_resume()\n"); - saa7146_core_command(((struct saa7146 *)pci_get_drvdata(pdev))->i2c_bus, - SAA7146_RESUME, 0); - return 0; -} - - -struct card_info { - int type; - char *name; -}; - - -static -int __devinit saa7146_init_one (struct pci_dev *pdev, - const struct pci_device_id *ent) -{ - struct dvb_adapter *adap; - struct saa7146 *saa; - int card_type; - struct card_info *cinfo= (struct card_info *) ent->driver_data; - - dprintk("saa7146_init_one()\n"); - - card_type = cinfo->type; - dvb_register_adapter(&adap, cinfo->name); - - if (!(saa = kmalloc (sizeof (struct saa7146), GFP_KERNEL))) { - printk ("%s: out of memory!\n", __FUNCTION__); - return -ENOMEM; - } - - memset (saa, 0, sizeof (struct saa7146)); - - saa->device = pdev; - pci_set_drvdata(pdev, saa); - saa->card_type = card_type; - saa->dvb_adapter = adap; - - pci_enable_device (saa->device); - - configure_saa7146 (saa); - - list_add_tail (&saa->list_head, &saa7146_list); - - return 0; -} - -static -void __devexit saa7146_remove_one (struct pci_dev *pdev) -{ - struct saa7146 *saa = pci_get_drvdata(pdev); - - dprintk("saa7146_remove_one()\n"); - - list_del (&saa->list_head); - pci_disable_device(pdev); - remove_saa7146 (saa); -} - - -static struct card_info fs_1_5 = { DVB_CARD_TT_SIEMENS, "Siemens cable card PCI rev1.5" }; -static struct card_info fs_1_3 = { DVB_CARD_TT_SIEMENS, "Siemens/Technotrend/Hauppauge PCI rev1.3" }; -static struct card_info ttbs = { DVB_CARD_TT_BUDGET, "TT-Budget/WinTV-NOVA-S PCI" }; -static struct card_info ttbc = { DVB_CARD_TT_BUDGET, "TT-Budget/WinTV-NOVA-C PCI" }; -static struct card_info ttbt = { DVB_CARD_TT_BUDGET, "TT-Budget/WinTV-NOVA-T PCI" }; -static struct card_info ttbci = { DVB_CARD_TT_BUDGET_CI, "TT-Budget/WinTV-NOVA-CI PCI" }; -static struct card_info satel = { DVB_CARD_TT_BUDGET, "SATELCO Multimedia PCI"}; -static struct card_info unkwn = { DVB_CARD_TT_SIEMENS, "Technotrend/Hauppauge PCI rev?(unknown0)?"}; -static struct card_info tt_1_6 = { DVB_CARD_TT_SIEMENS, "Technotrend/Hauppauge PCI rev1.3 or 1.6" }; -static struct card_info tt_2_1 = { DVB_CARD_TT_SIEMENS, "Technotrend/Hauppauge PCI rev2.1" }; -static struct card_info tt_t = { DVB_CARD_TT_SIEMENS, "Technotrend/Hauppauge PCI DVB-T" }; -static struct card_info knc1 = { DVB_CARD_KNC1, "KNC1 DVB-S" }; - -#define PHILIPS_SAA7146 PCI_VENDOR_ID_PHILIPS, PCI_DEVICE_ID_PHILIPS_SAA7146 -#define CARD_INFO driver_data: (unsigned long) & - -static struct pci_device_id saa7146_pci_tbl[] __devinitdata = { - { PHILIPS_SAA7146, 0x110a, 0xffff, CARD_INFO fs_1_5 }, - { PHILIPS_SAA7146, 0x110a, 0x0000, CARD_INFO fs_1_5 }, - { PHILIPS_SAA7146, 0x13c2, 0x1003, CARD_INFO ttbs }, - { PHILIPS_SAA7146, 0x13c2, 0x1004, CARD_INFO ttbc }, - { PHILIPS_SAA7146, 0x13c2, 0x1005, CARD_INFO ttbt }, - { PHILIPS_SAA7146, 0x13c2, 0x100c, CARD_INFO ttbci }, - { PHILIPS_SAA7146, 0x13c2, 0x1013, CARD_INFO satel }, - { PHILIPS_SAA7146, 0x13c2, 0x0000, CARD_INFO fs_1_3 }, - { PHILIPS_SAA7146, 0x13c2, 0x1002, CARD_INFO unkwn }, - { PHILIPS_SAA7146, 0x13c2, 0x0001, CARD_INFO tt_1_6 }, - { PHILIPS_SAA7146, 0x13c2, 0x0002, CARD_INFO tt_2_1 }, - { PHILIPS_SAA7146, 0x13c2, 0x0003, CARD_INFO tt_2_1 }, - { PHILIPS_SAA7146, 0x13c2, 0x0004, CARD_INFO tt_2_1 }, - { PHILIPS_SAA7146, 0x13c2, 0x0006, CARD_INFO tt_1_6 }, - { PHILIPS_SAA7146, 0x13c2, 0x0008, CARD_INFO tt_t }, - { PHILIPS_SAA7146, 0xffc2, 0x0000, CARD_INFO unkwn }, - { PHILIPS_SAA7146, 0x1131, 0x4f56, CARD_INFO knc1 }, - { 0,}, -}; - -MODULE_DEVICE_TABLE(pci, saa7146_pci_tbl); - -static struct pci_driver saa7146_driver = { - .name = "saa7146", - .id_table = saa7146_pci_tbl, - .probe = saa7146_init_one, - .remove = saa7146_remove_one, - .suspend = saa7146_suspend, - .resume = saa7146_resume, -}; - - -static -int __init saa7146_init_module(void) -{ - int err; - - dprintk("saa7146_init_module\n"); - - if ((err = pci_module_init(&saa7146_driver))) - return err; - - if ((err = saa7146_v4l_init ())) - return err; - - if ((err = av7110_init ())) - return err; - - if ((err = av7110_ir_init ())) - return err; - - return 0; -} - -static -void __exit saa7146_cleanup_module(void) -{ - av7110_ir_exit (); - av7110_exit (); - saa7146_v4l_exit (); - pci_unregister_driver(&saa7146_driver); -} - -module_init(saa7146_init_module); -module_exit(saa7146_cleanup_module); - -MODULE_AUTHOR("Michael Hunold , " - "Christian Theiss , " - "Ralph Metzler , " - "Marcus Metzler , " - "Holger Waechtler and others"); - -MODULE_DESCRIPTION("driver for saa7146/av7110 based DVB PCI cards"); -MODULE_LICENSE("GPL"); -MODULE_PARM(mode,"i"); -MODULE_PARM(saa7146_debug,"i"); -MODULE_PARM(buffers,"i"); - diff -Nru a/drivers/media/dvb/av7110/saa7146_core.h b/drivers/media/dvb/av7110/saa7146_core.h --- a/drivers/media/dvb/av7110/saa7146_core.h Tue Nov 12 17:26:41 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,111 +0,0 @@ -#ifndef __SAA7146_CORE__ -#define __SAA7146_CORE__ - -#include -#include - -#include "dvbdev.h" - - -/* maximum number of capture frames we support */ -#define SAA7146_MAX_BUF 5 -/* maximum number of extensions we support */ -#define SAA7146_MAX_EXTENSIONS 4 - -/* stuff for writing to saa7146 */ -#define saa7146_write(mem,adr,dat) writel((dat),(mem+(adr))) -#define saa7146_read(mem,adr) readl(mem+(adr)) - - -#define DVB_CARD_TT_SIEMENS 0 -#define DVB_CARD_TT_BUDGET 1 -#define DVB_CARD_TT_BUDGET_CI 2 -#define DVB_CARD_KNC1 3 - - -/* this struct contains some constants needed for horizontal and vertical scaling. - currently we only support PAL (mode=0)and NTSC (mode=1). */ - -struct saa7146 { - - char name[32]; /* give it a nice name */ - - struct list_head list_head; - struct pci_dev *device; - int card_type; - - struct dvb_adapter *dvb_adapter; - struct dvb_i2c_bus *i2c_bus; - struct semaphore i2c_sem; - - void* data[SAA7146_MAX_EXTENSIONS]; /* data hooks for extensions */ - - int (*command) (struct dvb_i2c_bus *i, unsigned int cmd, void *arg); - - unsigned char* mem; /* pointer to mapped IO memory */ - int revision; /* chip revision; needed for bug-workarounds*/ - - int interlace; - int mode; - - u32* i2c; /* i2c memory */ - u32* grabbing; /* grabbing memory */ - u32* clipping; /* clipping memory for mask or rectangle clipping*/ - u32* rps0; /* memory for rps0-program */ - u32* rps1; /* memory for rps1-program */ - u32* debi; /* memory for debi-transfers */ - - int buffers; /* number of grabbing-buffers */ - - u32* page_table[SAA7146_MAX_BUF]; /* page_tables for buffers*/ - int frame_stat[SAA7146_MAX_BUF]; /* status of grabbing buffers */ - - int grab_width[SAA7146_MAX_BUF]; /* pixel width of grabs */ - int grab_height[SAA7146_MAX_BUF]; /* pixel height of grabs */ - int grab_format[SAA7146_MAX_BUF]; /* video format of grabs */ - int grab_port[SAA7146_MAX_BUF]; /* video port for grab */ - - wait_queue_head_t rps0_wq; /* rps0 interrupt queue (=> capture) */ - wait_queue_head_t rps1_wq; /* rps1 interrupt queue (=> i2c, ...) */ -}; - -#define SAA7146_IRQ_RPS0 -#define SAA7146_IRQ_RPS1 - -struct saa7146_extension { - char name[32]; - u32 handles_irqs; - - void (*irq_handler)(struct saa7146*, u32, void*); - - int (*command)(struct saa7146*, void*, unsigned int cmd, void *arg); - - int (*attach)(struct saa7146*, void**); - int (*detach)(struct saa7146*, void**); - - void (*inc_use)(struct saa7146*); - void (*dec_use)(struct saa7146*); -}; - -extern int saa7146_add_extension(struct saa7146_extension* ext); -extern int saa7146_del_extension(struct saa7146_extension* ext); - - -/* external grabbing states */ -#define GBUFFER_UNUSED 0x000 -#define GBUFFER_GRABBING 0x001 -#define GBUFFER_DONE 0x002 - -#define SAA7146_CORE_BASE 200 - -#define SAA7146_DO_MMAP _IOW('d', (SAA7146_CORE_BASE+11), struct vm_area_struct *) -#define SAA7146_SET_DD1 _IOW('d', (SAA7146_CORE_BASE+12), u32) -#define SAA7146_DUMP_REGISTERS _IOW('d', (SAA7146_CORE_BASE+13), u32) -#define SAA7146_DEBI_TRANSFER _IOW('d', (SAA7146_CORE_BASE+14), struct saa7146_debi_transfer) - - -#define SAA7146_SUSPEND _IOW('d', (SAA7146_CORE_BASE+32), u32) -#define SAA7146_RESUME _IOW('d', (SAA7146_CORE_BASE+33), u32) - -#endif - diff -Nru a/drivers/media/dvb/av7110/saa7146_defs.h b/drivers/media/dvb/av7110/saa7146_defs.h --- a/drivers/media/dvb/av7110/saa7146_defs.h Tue Oct 22 07:50:21 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,382 +0,0 @@ -#ifndef __INCLUDED_SAA7146__ -#define __INCLUDED_SAA7146__ - -struct saa7146_video_dma { - u32 base_odd; - u32 base_even; - u32 prot_addr; - u32 pitch; - u32 base_page; - u32 num_line_byte; -}; - -struct saa7146_debi_transfer { - - u8 timeout; /* have a look at the specs for reasonable values, p.110 ff */ - u8 swap; - u8 slave16; - u8 increment; /* only for block transfers */ - u8 intel; - u8 tien; - - u16 address; - u16 num_bytes; - u8 direction; - u32 mem; /* either a "pointer" (actually the physical address) of the debi-memory (block-transfer, use virt_to_bus to supply it) or 4 bytes (as one u32-value) for immediate transfer */ -}; - -struct saa7146_modes_constants { - u8 v_offset; - u16 v_field; - u16 v_calc; - - u8 h_offset; - u16 h_pixels; - u16 h_calc; - - u16 v_max_out; - u16 h_max_out; -}; - -struct saa7146_mmap_struct -{ - const char *adr; - unsigned long size; -}; - -#define SAA7146_PAL 0 -#define SAA7146_NTSC 1 -#define SAA7146_SECAM 2 - -#define SAA7146_HPS_SOURCE_PORT_A 0x00 -#define SAA7146_HPS_SOURCE_PORT_B 0x01 -#define SAA7146_HPS_SOURCE_YPB_CPA 0x02 -#define SAA7146_HPS_SOURCE_YPA_CPB 0x03 - -#define SAA7146_HPS_SYNC_PORT_A 0x00 -#define SAA7146_HPS_SYNC_PORT_B 0x01 - - -/* Number of vertical active lines */ -#define V_ACTIVE_LINES_PAL 576 -#define V_ACTIVE_LINES_NTSC 480 -#define V_ACTIVE_LINES_SECAM 576 - -/* Number of lines in a field for HPS to process */ -#define V_FIELD_PAL 288 -#define V_FIELD_NTSC 240 -#define V_FIELD_SECAM 288 - -/* Number of lines of vertical offset before processing */ -#define V_OFFSET_NTSC 0x10 /* PLI */ -#define V_OFFSET_PAL 0x15 -#define V_OFFSET_SECAM 0x14 - -/* Number of horizontal pixels to process */ -#define H_PIXELS_NTSC 708 -#define H_PIXELS_PAL 720 -#define H_PIXELS_SECAM 720 - -/* Horizontal offset of processing window */ -#define H_OFFSET_NTSC 0x40 /* PLI Try 0x3f and find all red colors turning into blue !!?? */ -#define H_OFFSET_PAL 0x3a -#define H_OFFSET_SECAM 0x14 - -/* some memory-sizes */ -#define GRABBING_MEM_SIZE 0x240000 /* 1024 * 576 * 4*/ -#define CLIPPING_MEM_SIZE 20000 /* 1024 * 625 / 32 */ -#define I2C_MEM_SIZE 0x000800 /* 2048 */ -#define RPS_MEM_SIZE 0x000800 /* 2048 */ - -/************************************************************************/ -/* UNSORTED */ -/************************************************************************/ - -#define ME1 0x0000000800 -#define PV1 0x0000000008 - -/************************************************************************/ -/* CLIPPING */ -/************************************************************************/ - -/* some defines for the various clipping-modes */ -#define SAA7146_CLIPPING_RECT 0x4 -#define SAA7146_CLIPPING_RECT_INVERTED 0x5 -#define SAA7146_CLIPPING_MASK 0x6 -#define SAA7146_CLIPPING_MASK_INVERTED 0x7 - -/************************************************************************/ -/* RPS */ -/************************************************************************/ - -#define CMD_NOP 0x00000000 /* No operation */ -#define CMD_CLR_EVENT 0x00000000 /* Clear event */ -#define CMD_SET_EVENT 0x10000000 /* Set signal event */ -#define CMD_PAUSE 0x20000000 /* Pause */ -#define CMD_CHECK_LATE 0x30000000 /* Check late */ -#define CMD_UPLOAD 0x40000000 /* Upload */ -#define CMD_STOP 0x50000000 /* Stop */ -#define CMD_INTERRUPT 0x60000000 /* Interrupt */ -#define CMD_JUMP 0x80000000 /* Jump */ -#define CMD_WR_REG 0x90000000 /* Write (load) register */ -#define CMD_RD_REG 0xa0000000 /* Read (store) register */ -#define CMD_WR_REG_MASK 0xc0000000 /* Write register with mask */ - -/************************************************************************/ -/* OUTPUT FORMATS */ -/************************************************************************/ - -/* output formats; each entry holds three types of information */ -/* composed is used in the sense of "not-planar" */ - -#define RGB15_COMPOSED 0x213 -/* this means: yuv2rgb-conversation-mode=2, dither=yes(=1), format-mode = 3 */ -#define RGB16_COMPOSED 0x210 -#define RGB24_COMPOSED 0x201 -#define RGB32_COMPOSED 0x202 - -#define YUV411_COMPOSED 0x003 -/* this means: yuv2rgb-conversation-mode=0, dither=no(=0), format-mode = 3 */ -#define YUV422_COMPOSED 0x000 -#define YUV411_DECOMPOSED 0x00b -#define YUV422_DECOMPOSED 0x009 -#define YUV420_DECOMPOSED 0x00a - -/************************************************************************/ -/* MISC */ -/************************************************************************/ - -/* Bit mask constants */ -#define MASK_00 0x00000001 /* Mask value for bit 0 */ -#define MASK_01 0x00000002 /* Mask value for bit 1 */ -#define MASK_02 0x00000004 /* Mask value for bit 2 */ -#define MASK_03 0x00000008 /* Mask value for bit 3 */ -#define MASK_04 0x00000010 /* Mask value for bit 4 */ -#define MASK_05 0x00000020 /* Mask value for bit 5 */ -#define MASK_06 0x00000040 /* Mask value for bit 6 */ -#define MASK_07 0x00000080 /* Mask value for bit 7 */ -#define MASK_08 0x00000100 /* Mask value for bit 8 */ -#define MASK_09 0x00000200 /* Mask value for bit 9 */ -#define MASK_10 0x00000400 /* Mask value for bit 10 */ -#define MASK_11 0x00000800 /* Mask value for bit 11 */ -#define MASK_12 0x00001000 /* Mask value for bit 12 */ -#define MASK_13 0x00002000 /* Mask value for bit 13 */ -#define MASK_14 0x00004000 /* Mask value for bit 14 */ -#define MASK_15 0x00008000 /* Mask value for bit 15 */ -#define MASK_16 0x00010000 /* Mask value for bit 16 */ -#define MASK_17 0x00020000 /* Mask value for bit 17 */ -#define MASK_18 0x00040000 /* Mask value for bit 18 */ -#define MASK_19 0x00080000 /* Mask value for bit 19 */ -#define MASK_20 0x00100000 /* Mask value for bit 20 */ -#define MASK_21 0x00200000 /* Mask value for bit 21 */ -#define MASK_22 0x00400000 /* Mask value for bit 22 */ -#define MASK_23 0x00800000 /* Mask value for bit 23 */ -#define MASK_24 0x01000000 /* Mask value for bit 24 */ -#define MASK_25 0x02000000 /* Mask value for bit 25 */ -#define MASK_26 0x04000000 /* Mask value for bit 26 */ -#define MASK_27 0x08000000 /* Mask value for bit 27 */ -#define MASK_28 0x10000000 /* Mask value for bit 28 */ -#define MASK_29 0x20000000 /* Mask value for bit 29 */ -#define MASK_30 0x40000000 /* Mask value for bit 30 */ -#define MASK_31 0x80000000 /* Mask value for bit 31 */ - -#define MASK_B0 0x000000ff /* Mask value for byte 0 */ -#define MASK_B1 0x0000ff00 /* Mask value for byte 1 */ -#define MASK_B2 0x00ff0000 /* Mask value for byte 2 */ -#define MASK_B3 0xff000000 /* Mask value for byte 3 */ - -#define MASK_W0 0x0000ffff /* Mask value for word 0 */ -#define MASK_W1 0xffff0000 /* Mask value for word 1 */ - -#define MASK_PA 0xfffffffc /* Mask value for physical address */ -#define MASK_PR 0xfffffffe /* Mask value for protection register */ -#define MASK_ER 0xffffffff /* Mask value for the entire register */ - -#define MASK_NONE 0x00000000 /* No mask */ - -/************************************************************************/ -/* REGISTERS */ -/************************************************************************/ - -#define BASE_ODD1 0x00 /* Video DMA 1 registers */ -#define BASE_EVEN1 0x04 -#define PROT_ADDR1 0x08 -#define PITCH1 0x0C -#define BASE_PAGE1 0x10 /* Video DMA 1 base page */ -#define NUM_LINE_BYTE1 0x14 - -#define BASE_ODD2 0x18 /* Video DMA 2 registers */ -#define BASE_EVEN2 0x1C -#define PROT_ADDR2 0x20 -#define PITCH2 0x24 -#define BASE_PAGE2 0x28 /* Video DMA 2 base page */ -#define NUM_LINE_BYTE2 0x2C - -#define BASE_ODD3 0x30 /* Video DMA 3 registers */ -#define BASE_EVEN3 0x34 -#define PROT_ADDR3 0x38 -#define PITCH3 0x3C -#define BASE_PAGE3 0x40 /* Video DMA 3 base page */ -#define NUM_LINE_BYTE3 0x44 - -#define PCI_BT_V1 0x48 /* Video/FIFO 1 */ -#define PCI_BT_V2 0x49 /* Video/FIFO 2 */ -#define PCI_BT_V3 0x4A /* Video/FIFO 3 */ -#define PCI_BT_DEBI 0x4B /* DEBI */ -#define PCI_BT_A 0x4C /* Audio */ - -#define DD1_INIT 0x50 /* Init setting of DD1 interface */ - -#define DD1_STREAM_B 0x54 /* DD1 B video data stream handling */ -#define DD1_STREAM_A 0x56 /* DD1 A video data stream handling */ - -#define BRS_CTRL 0x58 /* BRS control register */ -#define HPS_CTRL 0x5C /* HPS control register */ -#define HPS_V_SCALE 0x60 /* HPS vertical scale */ -#define HPS_V_GAIN 0x64 /* HPS vertical ACL and gain */ -#define HPS_H_PRESCALE 0x68 /* HPS horizontal prescale */ -#define HPS_H_SCALE 0x6C /* HPS horizontal scale */ -#define BCS_CTRL 0x70 /* BCS control */ -#define CHROMA_KEY_RANGE 0x74 -#define CLIP_FORMAT_CTRL 0x78 /* HPS outputs formats & clipping */ - -#define DEBI_CONFIG 0x7C -#define DEBI_COMMAND 0x80 -#define DEBI_PAGE 0x84 -#define DEBI_AD 0x88 - -#define I2C_TRANSFER 0x8C -#define I2C_STATUS 0x90 - -#define BASE_A1_IN 0x94 /* Audio 1 input DMA */ -#define PROT_A1_IN 0x98 -#define PAGE_A1_IN 0x9C - -#define BASE_A1_OUT 0xA0 /* Audio 1 output DMA */ -#define PROT_A1_OUT 0xA4 -#define PAGE_A1_OUT 0xA8 - -#define BASE_A2_IN 0xAC /* Audio 2 input DMA */ -#define PROT_A2_IN 0xB0 -#define PAGE_A2_IN 0xB4 - -#define BASE_A2_OUT 0xB8 /* Audio 2 output DMA */ -#define PROT_A2_OUT 0xBC -#define PAGE_A2_OUT 0xC0 - -#define RPS_PAGE0 0xC4 /* RPS task 0 page register */ -#define RPS_PAGE1 0xC8 /* RPS task 1 page register */ - -#define RPS_THRESH0 0xCC /* HBI threshold for task 0 */ -#define RPS_THRESH1 0xD0 /* HBI threshold for task 1 */ - -#define RPS_TOV0 0xD4 /* RPS timeout for task 0 */ -#define RPS_TOV1 0xD8 /* RPS timeout for task 1 */ - -#define IER 0xDC /* Interrupt enable register */ - -#define GPIO_CTRL 0xE0 /* GPIO 0-3 register */ - -#define EC1SSR 0xE4 /* Event cnt set 1 source select */ -#define EC2SSR 0xE8 /* Event cnt set 2 source select */ -#define ECT1R 0xEC /* Event cnt set 1 thresholds */ -#define ECT2R 0xF0 /* Event cnt set 2 thresholds */ - -#define ACON1 0xF4 -#define ACON2 0xF8 - -#define MC1 0xFC /* Main control register 1 */ -#define MC2 0x100 /* Main control register 2 */ - -#define RPS_ADDR0 0x104 /* RPS task 0 address register */ -#define RPS_ADDR1 0x108 /* RPS task 1 address register */ - -#define ISR 0x10C /* Interrupt status register */ -#define PSR 0x110 /* Primary status register */ -#define SSR 0x114 /* Secondary status register */ - -#define EC1R 0x118 /* Event counter set 1 register */ -#define EC2R 0x11C /* Event counter set 2 register */ - -#define PCI_VDP1 0x120 /* Video DMA pointer of FIFO 1 */ -#define PCI_VDP2 0x124 /* Video DMA pointer of FIFO 2 */ -#define PCI_VDP3 0x128 /* Video DMA pointer of FIFO 3 */ -#define PCI_ADP1 0x12C /* Audio DMA pointer of audio out 1 */ -#define PCI_ADP2 0x130 /* Audio DMA pointer of audio in 1 */ -#define PCI_ADP3 0x134 /* Audio DMA pointer of audio out 2 */ -#define PCI_ADP4 0x138 /* Audio DMA pointer of audio in 2 */ -#define PCI_DMA_DDP 0x13C /* DEBI DMA pointer */ - -#define LEVEL_REP 0x140, -#define A_TIME_SLOT1 0x180, /* from 180 - 1BC */ -#define A_TIME_SLOT2 0x1C0, /* from 1C0 - 1FC */ - -/************************************************************************/ -/* ISR-MASKS */ -/************************************************************************/ - -#define SPCI_PPEF 0x80000000 /* PCI parity error */ -#define SPCI_PABO 0x40000000 /* PCI access error (target or master abort) */ -#define SPCI_PPED 0x20000000 /* PCI parity error on 'real time data' */ -#define SPCI_RPS_I1 0x10000000 /* Interrupt issued by RPS1 */ -#define SPCI_RPS_I0 0x08000000 /* Interrupt issued by RPS0 */ -#define SPCI_RPS_LATE1 0x04000000 /* RPS task 1 is late */ -#define SPCI_RPS_LATE0 0x02000000 /* RPS task 0 is late */ -#define SPCI_RPS_E1 0x01000000 /* RPS error from task 1 */ -#define SPCI_RPS_E0 0x00800000 /* RPS error from task 0 */ -#define SPCI_RPS_TO1 0x00400000 /* RPS timeout task 1 */ -#define SPCI_RPS_TO0 0x00200000 /* RPS timeout task 0 */ -#define SPCI_UPLD 0x00100000 /* RPS in upload */ -#define SPCI_DEBI_S 0x00080000 /* DEBI status */ -#define SPCI_DEBI_E 0x00040000 /* DEBI error */ -#define SPCI_IIC_S 0x00020000 /* I2C status */ -#define SPCI_IIC_E 0x00010000 /* I2C error */ -#define SPCI_A2_IN 0x00008000 /* Audio 2 input DMA protection / limit */ -#define SPCI_A2_OUT 0x00004000 /* Audio 2 output DMA protection / limit */ -#define SPCI_A1_IN 0x00002000 /* Audio 1 input DMA protection / limit */ -#define SPCI_A1_OUT 0x00001000 /* Audio 1 output DMA protection / limit */ -#define SPCI_AFOU 0x00000800 /* Audio FIFO over- / underflow */ -#define SPCI_V_PE 0x00000400 /* Video protection address */ -#define SPCI_VFOU 0x00000200 /* Video FIFO over- / underflow */ -#define SPCI_FIDA 0x00000100 /* Field ID video port A */ -#define SPCI_FIDB 0x00000080 /* Field ID video port B */ -#define SPCI_PIN3 0x00000040 /* GPIO pin 3 */ -#define SPCI_PIN2 0x00000020 /* GPIO pin 2 */ -#define SPCI_PIN1 0x00000010 /* GPIO pin 1 */ -#define SPCI_PIN0 0x00000008 /* GPIO pin 0 */ -#define SPCI_ECS 0x00000004 /* Event counter 1, 2, 4, 5 */ -#define SPCI_EC3S 0x00000002 /* Event counter 3 */ -#define SPCI_EC0S 0x00000001 /* Event counter 0 */ - -/************************************************************************/ -/* I2C */ -/************************************************************************/ - -/* time we wait after certain i2c-operations */ -#define SAA7146_I2C_DELAY 10 - -#define SAA7146_I2C_ABORT (1<<7) -#define SAA7146_I2C_SPERR (1<<6) -#define SAA7146_I2C_APERR (1<<5) -#define SAA7146_I2C_DTERR (1<<4) -#define SAA7146_I2C_DRERR (1<<3) -#define SAA7146_I2C_AL (1<<2) -#define SAA7146_I2C_ERR (1<<1) -#define SAA7146_I2C_BUSY (1<<0) - -#define SAA7146_I2C_START (0x3) -#define SAA7146_I2C_CONT (0x2) -#define SAA7146_I2C_STOP (0x1) -#define SAA7146_I2C_NOP (0x0) - -#define SAA7146_I2C_BUS_BIT_RATE_6400 (0x500) -#define SAA7146_I2C_BUS_BIT_RATE_3200 (0x100) -#define SAA7146_I2C_BUS_BIT_RATE_480 (0x400) -#define SAA7146_I2C_BUS_BIT_RATE_320 (0x600) -#define SAA7146_I2C_BUS_BIT_RATE_240 (0x700) -#define SAA7146_I2C_BUS_BIT_RATE_120 (0x000) -#define SAA7146_I2C_BUS_BIT_RATE_80 (0x200) -#define SAA7146_I2C_BUS_BIT_RATE_60 (0x300) - - -#endif diff -Nru a/drivers/media/dvb/av7110/saa7146_v4l.c b/drivers/media/dvb/av7110/saa7146_v4l.c --- a/drivers/media/dvb/av7110/saa7146_v4l.c Tue Nov 12 17:26:41 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,501 +0,0 @@ -/* - video4linux-parts of the saa7146 device driver - - Copyright (C) 1998,1999 Michael Hunold - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include /* for module-version */ -#include -#include /* for kmalloc/kfree */ -#include /* for delay-stuff */ -#include /* for copy_to/from_user */ -#include /* for mem_map_reserve */ -#include -#include - -#include "saa7146_defs.h" -#include "saa7146_core.h" -#include "saa7146_v4l.h" - - -static int saa7146_v4l_debug = 0; - -#define dprintk if (saa7146_v4l_debug) printk -#define hprintk if (saa7146_v4l_debug >= 2) printk -#define gprintk if (saa7146_v4l_debug >= 3) printk - -#define __COMPILE_SAA7146__ -#include "saa7146.c" - -/* transform video4linux-cliplist to plain arrays -- we assume that the arrays - are big enough -- if not: your fault! */ -int saa7146_v4lclip2plain(struct video_clip *clips, u16 clipcount, int x[], int y[], int width[], int height[]) -{ - int i = 0; - struct video_clip* vc = NULL; - - dprintk("saa7146_v4l.o: ==> saa7146_v4lclip2plain, cc:%d\n",clipcount); - - /* anything to do here? */ - if( 0 == clipcount ) - return 0; - - /* copy to kernel-space */ - vc = vmalloc(sizeof(struct video_clip)*(clipcount)); - if( NULL == vc ) { - printk("saa7146_v4l.o: ==> v4lclip2saa7146_v4l.o: no memory #2!\n"); - return -ENOMEM; - } - if(copy_from_user(vc,clips,sizeof(struct video_clip)*clipcount)) { - printk("saa7146_v4l.o: ==> v4lclip2saa7146_v4l.o: could not copy from user-space!\n"); - return -EFAULT; - } - - /* copy the clip-list to the arrays - note: the video_clip-struct may contain negative values to indicate that a window - doesn't lay completly over the video window. Thus, we correct the values right here */ - for(i = 0; i < clipcount; i++) { - - if( vc[i].width < 0) { - vc[i].x += vc[i].width; vc[i].width = -vc[i].width; - } - if( vc[i].height < 0) { - vc[i].y += vc[i].height; vc[i].height = -vc[i].height; - } - - if( vc[i].x < 0) { - vc[i].width += vc[i].x; vc[i].x = 0; - } - if( vc[i].y < 0) { - vc[i].height += vc[i].y; vc[i].y = 0; - } - - if(vc[i].width <= 0 || vc[i].height <= 0) { - vfree(vc); - return -EINVAL; - } - - x[i] = vc[i].x; - y[i] = vc[i].y; - width[i] = vc[i].width; - height[i] = vc[i].height; - } - - /* free memory used for temporary clips */ - vfree(vc); - - return 0; -} - -struct saa7146_v4l_struct { - struct video_buffer buffer; - struct video_mbuf mbuf; - struct video_window window; - struct video_picture picture; -}; - -static int saa7146_v4l_command(struct saa7146* saa, void *p, unsigned int cmd, void *arg) -{ - struct saa7146_v4l_struct* data = (struct saa7146_v4l_struct*)p; - - hprintk("saa7146_v4l.o: ==> saa7146_v4l_command\n"); - - if( NULL == saa) - return -EINVAL; - - switch(cmd) { - case SAA7146_V4L_GPICT: - { - struct video_picture *p = arg; - - hprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_GPICT\n"); - - memcpy(p, &data->picture, sizeof(struct video_picture)); - - } - break; - - case SAA7146_V4L_SPICT: - { - struct video_picture *p = arg; - - hprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_SPICT\n"); - - memcpy(&data->picture, p, sizeof(struct video_picture)); - set_picture_prop(saa, (u32)(data->picture.brightness>>8),(u32)(data->picture.contrast>>9),(u32)(data->picture.colour>>9)); - - } - break; - - case SAA7146_V4L_SWIN: - { - struct video_window *vw = arg; - int *x = NULL, *y = NULL, *w = NULL, *h = NULL; - - u32 palette = 0; - - hprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_SWIN\n"); - - video_setmode(saa, 0); - saa7146_write(saa->mem, MC1, (MASK_21)); - - set_window(saa, vw->width, vw->height,0,0,0); - //saa->port, saa->sync); - if (move_to(saa, vw->x, vw->y, vw->height, data->buffer.width, - data->buffer.depth, data->buffer.bytesperline, - (u32)data->buffer.base, 0)<0) - return -1; - - switch( data->picture.palette ) { - - case VIDEO_PALETTE_RGB555: - palette = RGB15_COMPOSED; - break; - - case VIDEO_PALETTE_RGB24: - palette = RGB24_COMPOSED; - break; - - case VIDEO_PALETTE_RGB32: - palette = RGB32_COMPOSED; - break; - - case VIDEO_PALETTE_UYVY: - palette = YUV422_COMPOSED; - break; - - case VIDEO_PALETTE_YUV422P: - palette = YUV422_DECOMPOSED; - break; - - case VIDEO_PALETTE_YUV420P: - palette = YUV420_DECOMPOSED; - break; - - case VIDEO_PALETTE_YUV411P: - palette = YUV411_DECOMPOSED; - break; - - default: - /*case VIDEO_PALETTE_RGB565:*/ - palette = RGB16_COMPOSED; - break; - } - - set_output_format(saa, palette); - - if (vw->flags==VIDEO_CLIP_BITMAP) { - clip_windows(saa, SAA7146_CLIPPING_MASK, vw->width, vw->height, - (u32 *) vw->clips, 1, 0, 0, 0, 0); - } else { - - - /* this is tricky, but helps us saving kmalloc/kfree-calls - and boring if/else-constructs ... */ - x = (int*)kmalloc(sizeof(int)*vw->clipcount*4,GFP_KERNEL); - if( NULL == x ) { - hprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_SWIN: out of kernel-memory.\n"); - return -ENOMEM; - } - y = x+(1*vw->clipcount); - w = x+(2*vw->clipcount); - h = x+(3*vw->clipcount); - - /* transform clipping-windows */ - if (0 != saa7146_v4lclip2plain(vw->clips, vw->clipcount,x,y,w,h)) - break; - clip_windows(saa, SAA7146_CLIPPING_RECT, vw->width, vw->height, - NULL, vw->clipcount, x, y, w, h); - kfree(x); - - memcpy(&data->window, arg, sizeof(struct video_window)); - } - video_setmode(saa, 1); - break; - } - - case SAA7146_V4L_CCAPTURE: - { - int* i = arg; - - hprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_CCAPTURE\n"); - - if ( 0 == *i ) { - video_setmode(saa, 0); - } - else { - video_setmode(saa, 1); - } - - break; - } - - case SAA7146_V4L_GFBUF: - { - struct video_buffer *b = arg; - - hprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_GFBUF\n"); - - memcpy(b, &data->buffer, sizeof(struct video_buffer)); - - break; - } - - case SAA7146_V4L_SFBUF: - { - struct video_buffer *b = arg; - - memcpy(&data->buffer, b, sizeof(struct video_buffer)); - hprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_SFBUF: b:0x%08x, h:%d, w:%d, d:%d\n", (u32)data->buffer.base, data->buffer.height, data->buffer.width, data->buffer.depth); - - break; - } - - - case SAA7146_V4L_CSYNC: - { - int i = *((int*)arg); - - int count = 0, k = 0; - unsigned char* grabbfr; - unsigned char y, uv; - - /* sanity checks */ - if ( i >= saa->buffers || i < 0) { - gprintk("saa7146_v4l.o: SAA7146_V4L_CSYNC, invalid buffer %d\n",i); - return -EINVAL; - } - - /* get the state */ - switch ( saa->frame_stat[i] ) { - case GBUFFER_UNUSED: - { - /* there was no grab to this buffer */ - gprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_CSYNC, invalid frame (fr:%d)\n",i); - return -EINVAL; - } - case GBUFFER_GRABBING: - { - /* wait to be woken up by the irq-handler */ - interruptible_sleep_on(&saa->rps0_wq); - break; - } - case GBUFFER_DONE: - { - gprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_CSYNC, frame done! (fr:%d)\n",i); - break; - } - } - - /* all saa7146´s below chip-revision 3 are not capable of - doing byte-swaps with video-dma1. for rgb-grabbing this - does not matter, but yuv422-grabbing has the wrong - byte-order, so we have to swap in software */ - if ( ( saa->revision<3) && - (saa->grab_format[i] == YUV422_COMPOSED)) { - /* swap UYVY to YUYV */ - count = saa->grab_height[i]*saa->grab_width[i]*2; - grabbfr = ((unsigned char*)(saa->grabbing))+i*GRABBING_MEM_SIZE; - for (k=0; kframe_stat[i] = GBUFFER_UNUSED; - - break; - } - case SAA7146_V4L_CMCAPTURE: - { - struct video_mmap *vm = arg; - - gprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_CMCAPTURE, trying buffer:%d\n", vm->frame); - - /* check status for wanted frame */ - if ( GBUFFER_GRABBING == saa->frame_stat[vm->frame] ) { - gprintk("saa7146_v4l.o: frame #%d still grabbing!\n",vm->frame); - return -EBUSY; - } - - /* do necessary transformations from the videodev-structure to our own format. */ - - /* sanity checks */ - if ( vm->width <= 0 || vm->height <= 0 ) { - gprintk("saa7146_v4l.o: set_up_grabbing, invalid dimension for wanted buffer %d\n",vm->frame); - return -EINVAL; - } - - /* set corresponding buffer to ´grabbing´ */ - saa->frame_stat[vm->frame] = GBUFFER_GRABBING; - - /* copy grabbing informtaion for the buffer */ - saa->grab_height[vm->frame] = vm->height; - saa->grab_width[vm->frame] = vm->width; - /* fixme: setting of grabbing port ?!*/ - saa->grab_port[vm->frame] = 0; - - switch( vm->format ) { - - case VIDEO_PALETTE_RGB555: - saa->grab_format[vm->frame] = RGB15_COMPOSED; - break; - - case VIDEO_PALETTE_RGB24: - saa->grab_format[vm->frame] = RGB24_COMPOSED; - break; - - case VIDEO_PALETTE_RGB32: - saa->grab_format[vm->frame] = RGB32_COMPOSED; - break; - - case VIDEO_PALETTE_YUV420P: - return -EINVAL; - - case VIDEO_PALETTE_YUV422: - saa->grab_format[vm->frame] = YUV422_COMPOSED; - break; - - case VIDEO_PALETTE_YUV422P: - saa->grab_format[vm->frame] = YUV422_DECOMPOSED; - break; - - case VIDEO_PALETTE_YUV411P: - saa->grab_format[vm->frame] = YUV411_DECOMPOSED; - break; - - default: - /*case VIDEO_PALETTE_RGB565:*/ - saa->grab_format[vm->frame] = RGB16_COMPOSED; - break; - } - - set_up_grabbing(saa,vm->frame); - break; - } - case SAA7146_V4L_GMBUF: - { - struct video_mbuf *m = arg; - int i = 0; - - m->size = saa->buffers * GRABBING_MEM_SIZE; - m->frames = saa->buffers; - - for(i = 0; i < saa->buffers; i++) - m->offsets[i]=(i*GRABBING_MEM_SIZE); - - gprintk(KERN_ERR "saa7146_v4l.o: SAA7146_V4L_GMBUF, providing %d buffers.\n", saa->buffers); - - break; - } - - default: - return -ENOIOCTLCMD; - } - - return 0; -} - -int saa7146_v4l_attach(struct saa7146* adap, void** p) -{ - struct saa7146_v4l_struct* data; - - hprintk("saa7146_v4l.o: ==> saa7146_v4l_inc_use_attach\n"); - - if (!(data = kmalloc(sizeof(struct saa7146_v4l_struct), GFP_KERNEL))) { - printk (KERN_ERR "%s: out of memory!\n", __FUNCTION__); - return -ENOMEM; - } - *(struct saa7146_v4l_struct**)p = data; - - memset(&data->buffer, 0x0, sizeof(struct video_buffer)); - memset(&data->mbuf, 0x0, sizeof(struct video_mbuf)); - memset(&data->window, 0x0, sizeof(struct video_window)); - memset(&data->picture,0x0, sizeof(struct video_picture)); - - data->picture.brightness = 32768; - data->picture.contrast = 32768; - data->picture.colour = 32768; /* saturation */ - data->picture.depth = 16; - data->picture.palette = VIDEO_PALETTE_RGB565; - - return 0; -} - - -void saa7146_v4l_inc_use(struct saa7146* adap) -{ - MOD_INC_USE_COUNT; -} - - -int saa7146_v4l_detach(struct saa7146* adap, void** p) -{ - struct saa7146_v4l_struct** data = (struct saa7146_v4l_struct**)p; - - kfree(*data); - *data = NULL; - - return 0; -} - - -void saa7146_v4l_dec_use(struct saa7146* adap) -{ - MOD_DEC_USE_COUNT; -} - - -static struct saa7146_extension saa7146_v4l_extension = { - "v4l extension\0", - MASK_27, /* handles rps0 irqs */ - saa7146_std_grab_irq_callback_rps0, - saa7146_v4l_command, - saa7146_v4l_attach, - saa7146_v4l_detach, - saa7146_v4l_inc_use, - saa7146_v4l_dec_use -}; - - -int saa7146_v4l_init (void) -{ - int res = 0; - - if((res = saa7146_add_extension(&saa7146_v4l_extension))) { - printk("saa7146_v4l.o: extension registration failed, module not inserted.\n"); - return res; - } - - return 0; -} - - -void saa7146_v4l_exit (void) -{ - int res = 0; - if ((res = saa7146_del_extension(&saa7146_v4l_extension))) { - printk("saa7146_v4l.o: extension deregistration failed, module not removed.\n"); - } -} - -MODULE_PARM(saa7146_v4l_debug, "i"); -MODULE_PARM_DESC(saa7146_v4l_debug, "set saa7146_v4l.c in debug mode"); - diff -Nru a/drivers/media/dvb/av7110/saa7146_v4l.h b/drivers/media/dvb/av7110/saa7146_v4l.h --- a/drivers/media/dvb/av7110/saa7146_v4l.h Tue Oct 22 07:50:21 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,32 +0,0 @@ -#ifndef __INCLUDED_SAA7146_V4L_V4L__ -#define __INCLUDED_SAA7146_V4L_V4L__ - -/************************************************************************/ -/* ADDRESSING */ -/************************************************************************/ - -#define SAA7146_V4L_BASE 100 - -#define SAA7146_V4L_GPICT _IOW('d', (SAA7146_V4L_BASE+ 1), struct video_picture) -#define SAA7146_V4L_SPICT _IOW('d', (SAA7146_V4L_BASE+ 2), struct video_picture) - -#define SAA7146_V4L_GFBUF _IOW('d', (SAA7146_V4L_BASE+ 3), struct video_buffer) -#define SAA7146_V4L_SFBUF _IOW('d', (SAA7146_V4L_BASE+ 4), struct video_buffer) - -#define SAA7146_V4L_GMBUF _IOW('d', (SAA7146_V4L_BASE+ 5), struct video_mbuf) - -#define SAA7146_V4L_SWIN _IOW('d', (SAA7146_V4L_BASE+ 6), struct video_window) - -#define SAA7146_V4L_CCAPTURE _IOW('d', (SAA7146_V4L_BASE+ 7), int) - -#define SAA7146_V4L_CMCAPTURE _IOW('d', (SAA7146_V4L_BASE+ 8), struct video_mmap) -#define SAA7146_V4L_CSYNC _IOW('d', (SAA7146_V4L_BASE+ 9), int) -#define SAA7146_V4L_CGSTATUS _IOW('d', (SAA7146_V4L_BASE+10), int) - -#define SAA7146_V4L_TSCAPTURE _IOW('d', (SAA7146_V4L_BASE+11), int) - -extern int saa7146_v4l_init (void); -extern void saa7146_v4l_exit (void); - -#endif - diff -Nru a/drivers/media/dvb/dvb-core/Makefile b/drivers/media/dvb/dvb-core/Makefile --- a/drivers/media/dvb/dvb-core/Makefile Mon Feb 3 14:19:37 2003 +++ b/drivers/media/dvb/dvb-core/Makefile Mon Apr 7 13:17:58 2003 @@ -3,6 +3,6 @@ # dvb-core-objs = dvbdev.o dmxdev.o dvb_demux.o dvb_filter.o \ - dvb_frontend.o dvb_i2c.o dvb_net.o dvb_ksyms.o + dvb_frontend.o dvb_i2c.o dvb_net.o dvb_ksyms.o dvb_ringbuffer.o obj-$(CONFIG_DVB_CORE) += dvb-core.o diff -Nru a/drivers/media/dvb/dvb-core/Makefile.lib b/drivers/media/dvb/dvb-core/Makefile.lib --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/dvb-core/Makefile.lib Mon Apr 7 13:17:58 2003 @@ -0,0 +1 @@ +obj-$(CONFIG_DVB_CORE) += crc32.o diff -Nru a/drivers/media/dvb/dvb-core/compat.h b/drivers/media/dvb/dvb-core/compat.h --- a/drivers/media/dvb/dvb-core/compat.h Tue Oct 22 07:48:37 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,24 +0,0 @@ -#ifndef __CRAP_H -#define __CRAP_H - -/** - * compatibility crap for old kernels. No guarantee for a working driver - * even when everything compiles. - */ - - -#include -#include - -#ifndef MODULE_LICENSE -#define MODULE_LICENSE(x) -#endif - -#ifndef list_for_each_safe -#define list_for_each_safe(pos, n, head) \ - for (pos = (head)->next, n = pos->next; pos != (head); \ - pos = n, n = pos->next) -#endif - -#endif - diff -Nru a/drivers/media/dvb/dvb-core/demux.h b/drivers/media/dvb/dvb-core/demux.h --- a/drivers/media/dvb/dvb-core/demux.h Tue Oct 22 07:48:37 2002 +++ b/drivers/media/dvb/dvb-core/demux.h Mon Apr 7 13:17:58 2003 @@ -144,6 +144,14 @@ int is_filtering; /* Set to non-zero when filtering in progress */ struct dmx_demux_s* parent; /* Back-pointer */ void* priv; /* Pointer to private data of the API client */ + + int check_crc; + u32 crc_val; + + u8 secbuf[4096]; + int secbufp; + int seclen; + int (*set) (struct dmx_section_feed_s* feed, __u16 pid, size_t circular_buffer_size, @@ -162,16 +170,16 @@ /* Callback functions */ /*--------------------------------------------------------------------------*/ -typedef int (*dmx_ts_cb) ( __u8 * buffer1, +typedef int (*dmx_ts_cb) ( const u8 * buffer1, size_t buffer1_length, - __u8 * buffer2, + const u8 * buffer2, size_t buffer2_length, dmx_ts_feed_t* source, dmx_success_t success); -typedef int (*dmx_section_cb) ( __u8 * buffer1, +typedef int (*dmx_section_cb) ( const u8 * buffer1, size_t buffer1_len, - __u8 * buffer2, + const u8 * buffer2, size_t buffer2_len, dmx_section_filter_t * source, dmx_success_t success); @@ -278,6 +286,9 @@ int (*disconnect_frontend) (struct dmx_demux_s* demux); int (*get_pes_pids) (struct dmx_demux_s* demux, __u16 *pids); + + int (*get_stc) (struct dmx_demux_s* demux, unsigned int num, + uint64_t *stc, unsigned int *base); }; typedef struct dmx_demux_s dmx_demux_t; diff -Nru a/drivers/media/dvb/dvb-core/dmxdev.c b/drivers/media/dvb/dvb-core/dmxdev.c --- a/drivers/media/dvb/dvb-core/dmxdev.c Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dmxdev.c Mon Apr 7 13:17:58 2003 @@ -2,8 +2,8 @@ * dmxdev.c - DVB demultiplexer device * * Copyright (C) 2000 Ralph Metzler - * & Marcus Metzler - for convergence integrated media GmbH + * & Marcus Metzler + for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -24,11 +24,13 @@ #include #include #include -#include #include #include "dmxdev.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #include "compat.h" +#endif //MODULE_DESCRIPTION(""); //MODULE_AUTHOR("Ralph Metzler, Marcus Metzler"); @@ -43,133 +45,133 @@ inline dmxdev_filter_t * dvb_dmxdev_file_to_filter(struct file *file) { - return (dmxdev_filter_t *) file->private_data; + return (dmxdev_filter_t *) file->private_data; } inline dmxdev_dvr_t * dvb_dmxdev_file_to_dvr(dmxdev_t *dmxdev, struct file *file) { - return (dmxdev_dvr_t *) file->private_data; + return (dmxdev_dvr_t *) file->private_data; } static inline void dvb_dmxdev_buffer_init(dmxdev_buffer_t *buffer) { - buffer->data=0; - buffer->size=8192; - buffer->pread=0; - buffer->pwrite=0; - buffer->error=0; - init_waitqueue_head(&buffer->queue); + buffer->data=0; + buffer->size=8192; + buffer->pread=0; + buffer->pwrite=0; + buffer->error=0; + init_waitqueue_head(&buffer->queue); } -static inline int -dvb_dmxdev_buffer_write(dmxdev_buffer_t *buf, uint8_t *src, int len) -{ - int split; - int free; - int todo; +static inline +int dvb_dmxdev_buffer_write(dmxdev_buffer_t *buf, const u8 *src, int len) +{ + int split; + int free; + int todo; if (!len) - return 0; + return 0; if (!buf->data) - return 0; + return 0; - free=buf->pread-buf->pwrite; - split=0; - if (free<=0) { - free+=buf->size; - split=buf->size-buf->pwrite; - } - if (len>=free) { + free=buf->pread-buf->pwrite; + split=0; + if (free<=0) { + free+=buf->size; + split=buf->size-buf->pwrite; + } + if (len>=free) { dprintk("dmxdev: buffer overflow\n"); - return -1; + return -1; } - if (split>=len) - split=0; - todo=len; - if (split) { - memcpy(buf->data + buf->pwrite, src, split); - todo-=split; - buf->pwrite=0; - } - memcpy(buf->data + buf->pwrite, src+split, todo); - buf->pwrite=(buf->pwrite+todo)%buf->size; - return len; + if (split>=len) + split=0; + todo=len; + if (split) { + memcpy(buf->data + buf->pwrite, src, split); + todo-=split; + buf->pwrite=0; + } + memcpy(buf->data + buf->pwrite, src+split, todo); + buf->pwrite=(buf->pwrite+todo)%buf->size; + return len; } static ssize_t dvb_dmxdev_buffer_read(dmxdev_buffer_t *src, int non_blocking, - char *buf, size_t count, loff_t *ppos) + char *buf, size_t count, loff_t *ppos) { - unsigned long todo=count; - int split, avail, error; + unsigned long todo=count; + int split, avail, error; if (!src->data) - return 0; + return 0; if ((error=src->error)) { src->pwrite=src->pread; - src->error=0; + src->error=0; return error; } if (non_blocking && (src->pwrite==src->pread)) - return -EWOULDBLOCK; + return -EWOULDBLOCK; - while (todo>0) { - if (non_blocking && (src->pwrite==src->pread)) - return (count-todo) ? (count-todo) : -EWOULDBLOCK; + while (todo>0) { + if (non_blocking && (src->pwrite==src->pread)) + return (count-todo) ? (count-todo) : -EWOULDBLOCK; - if (wait_event_interruptible(src->queue, + if (wait_event_interruptible(src->queue, (src->pread!=src->pwrite) || (src->error))<0) - return count-todo; + return count-todo; if ((error=src->error)) { src->pwrite=src->pread; - src->error=0; + src->error=0; return error; } - split=src->size; - avail=src->pwrite - src->pread; - if (avail<0) { - avail+=src->size; - split=src->size - src->pread; - } - if (avail>todo) - avail=todo; - if (splitdata+src->pread, split)) - return -EFAULT; - buf+=split; - src->pread=0; - todo-=split; - avail-=split; - } - if (avail) { - if (copy_to_user(buf, src->data+src->pread, avail)) - return -EFAULT; - src->pread = (src->pread + avail) % src->size; - todo-=avail; - buf+=avail; - } - } - return count; + split=src->size; + avail=src->pwrite - src->pread; + if (avail<0) { + avail+=src->size; + split=src->size - src->pread; + } + if (avail>todo) + avail=todo; + if (splitdata+src->pread, split)) + return -EFAULT; + buf+=split; + src->pread=0; + todo-=split; + avail-=split; + } + if (avail) { + if (copy_to_user(buf, src->data+src->pread, avail)) + return -EFAULT; + src->pread = (src->pread + avail) % src->size; + todo-=avail; + buf+=avail; + } + } + return count; } static dmx_frontend_t * get_fe(dmx_demux_t *demux, int type) { - struct list_head *head, *pos; + struct list_head *head, *pos; - head=demux->get_frontends(demux); + head=demux->get_frontends(demux); if (!head) - return 0; + return 0; list_for_each(pos, head) - if (DMX_FE_ENTRY(pos)->source==type) - return DMX_FE_ENTRY(pos); + if (DMX_FE_ENTRY(pos)->source==type) + return DMX_FE_ENTRY(pos); return 0; } @@ -177,8 +179,8 @@ static inline void dvb_dmxdev_dvr_state_set(dmxdev_dvr_t *dmxdevdvr, int state) { - spin_lock_irq(&dmxdevdvr->dev->lock); - dmxdevdvr->state=state; + spin_lock_irq(&dmxdevdvr->dev->lock); + dmxdevdvr->state=state; spin_unlock_irq(&dmxdevdvr->dev->lock); } @@ -186,17 +188,17 @@ { struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; dmxdev_t *dmxdev=(dmxdev_t *) dvbdev->priv; - dmx_frontend_t *front; + dmx_frontend_t *front; - dprintk ("function : %s\n", __FUNCTION__); + dprintk ("function : %s\n", __FUNCTION__); - if (down_interruptible (&dmxdev->mutex)) + if (down_interruptible (&dmxdev->mutex)) return -ERESTARTSYS; if ((file->f_flags&O_ACCMODE)==O_RDWR) { - if (!(dmxdev->capabilities&DMXDEV_CAP_DUPLEX)) { + if (!(dmxdev->capabilities&DMXDEV_CAP_DUPLEX)) { up(&dmxdev->mutex); - return -EOPNOTSUPP; + return -EOPNOTSUPP; } } @@ -206,12 +208,12 @@ dmxdev->dvr_buffer.data=vmalloc(DVR_BUFFER_SIZE); if (!dmxdev->dvr_buffer.data) { up(&dmxdev->mutex); - return -ENOMEM; + return -ENOMEM; } } if ((file->f_flags&O_ACCMODE)==O_WRONLY) { - dmxdev->dvr_orig_fe=dmxdev->demux->frontend; + dmxdev->dvr_orig_fe=dmxdev->demux->frontend; if (!dmxdev->demux->write) { up(&dmxdev->mutex); @@ -222,13 +224,13 @@ if (!front) { up(&dmxdev->mutex); - return -EINVAL; + return -EINVAL; } dmxdev->demux->disconnect_frontend(dmxdev->demux); dmxdev->demux->connect_frontend(dmxdev->demux, front); } - up(&dmxdev->mutex); - return 0; + up(&dmxdev->mutex); + return 0; } static int dvb_dvr_release(struct inode *inode, struct file *file) @@ -236,25 +238,25 @@ struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; dmxdev_t *dmxdev=(dmxdev_t *) dvbdev->priv; - if (down_interruptible (&dmxdev->mutex)) + if (down_interruptible (&dmxdev->mutex)) return -ERESTARTSYS; if ((file->f_flags&O_ACCMODE)==O_WRONLY) { - dmxdev->demux->disconnect_frontend(dmxdev->demux); + dmxdev->demux->disconnect_frontend(dmxdev->demux); dmxdev->demux->connect_frontend(dmxdev->demux, dmxdev->dvr_orig_fe); } if ((file->f_flags&O_ACCMODE)==O_RDONLY) { if (dmxdev->dvr_buffer.data) { - void *mem=dmxdev->dvr_buffer.data; + void *mem=dmxdev->dvr_buffer.data; mb(); spin_lock_irq(&dmxdev->lock); dmxdev->dvr_buffer.data=0; spin_unlock_irq(&dmxdev->lock); - vfree(mem); + vfree(mem); } } - up(&dmxdev->mutex); + up(&dmxdev->mutex); return 0; } @@ -265,14 +267,14 @@ dmxdev_t *dmxdev=(dmxdev_t *) dvbdev->priv; int ret; - if (!dmxdev->demux->write) - return -EOPNOTSUPP; + if (!dmxdev->demux->write) + return -EOPNOTSUPP; if ((file->f_flags&O_ACCMODE)!=O_WRONLY) - return -EINVAL; - if (down_interruptible (&dmxdev->mutex)) + return -EINVAL; + if (down_interruptible (&dmxdev->mutex)) return -ERESTARTSYS; - ret=dmxdev->demux->write(dmxdev->demux, buf, count); - up(&dmxdev->mutex); + ret=dmxdev->demux->write(dmxdev->demux, buf, count); + up(&dmxdev->mutex); return ret; } @@ -283,19 +285,19 @@ dmxdev_t *dmxdev=(dmxdev_t *) dvbdev->priv; int ret; - //down(&dmxdev->mutex); - ret= dvb_dmxdev_buffer_read(&dmxdev->dvr_buffer, + //down(&dmxdev->mutex); + ret= dvb_dmxdev_buffer_read(&dmxdev->dvr_buffer, file->f_flags&O_NONBLOCK, buf, count, ppos); - //up(&dmxdev->mutex); + //up(&dmxdev->mutex); return ret; } static inline void dvb_dmxdev_filter_state_set(dmxdev_filter_t *dmxdevfilter, int state) { - spin_lock_irq(&dmxdevfilter->dev->lock); - dmxdevfilter->state=state; + spin_lock_irq(&dmxdevfilter->dev->lock); + dmxdevfilter->state=state; spin_unlock_irq(&dmxdevfilter->dev->lock); } @@ -306,25 +308,25 @@ void *mem; if (buf->size==size) - return 0; - if (dmxdevfilter->state>=DMXDEV_STATE_GO) - return -EBUSY; + return 0; + if (dmxdevfilter->state>=DMXDEV_STATE_GO) + return -EBUSY; spin_lock_irq(&dmxdevfilter->dev->lock); mem=buf->data; buf->data=0; buf->size=size; buf->pwrite=buf->pread=0; spin_unlock_irq(&dmxdevfilter->dev->lock); - if (mem) + if (mem) vfree(mem); - if (buf->size) { - mem=vmalloc(dmxdevfilter->buffer.size); + if (buf->size) { + mem=vmalloc(dmxdevfilter->buffer.size); if (!mem) - return -ENOMEM; - spin_lock_irq(&dmxdevfilter->dev->lock); - buf->data=mem; - spin_unlock_irq(&dmxdevfilter->dev->lock); + return -ENOMEM; + spin_lock_irq(&dmxdevfilter->dev->lock); + buf->data=mem; + spin_unlock_irq(&dmxdevfilter->dev->lock); } return 0; } @@ -332,23 +334,23 @@ static void dvb_dmxdev_filter_timeout(unsigned long data) { - dmxdev_filter_t *dmxdevfilter=(dmxdev_filter_t *)data; + dmxdev_filter_t *dmxdevfilter=(dmxdev_filter_t *)data; dmxdevfilter->buffer.error=-ETIMEDOUT; - spin_lock_irq(&dmxdevfilter->dev->lock); + spin_lock_irq(&dmxdevfilter->dev->lock); dmxdevfilter->state=DMXDEV_STATE_TIMEDOUT; - spin_unlock_irq(&dmxdevfilter->dev->lock); + spin_unlock_irq(&dmxdevfilter->dev->lock); wake_up(&dmxdevfilter->buffer.queue); } static void dvb_dmxdev_filter_timer(dmxdev_filter_t *dmxdevfilter) { - struct dmx_sct_filter_params *para=&dmxdevfilter->params.sec; + struct dmx_sct_filter_params *para=&dmxdevfilter->params.sec; del_timer(&dmxdevfilter->timer); if (para->timeout) { - dmxdevfilter->timer.function=dvb_dmxdev_filter_timeout; + dmxdevfilter->timer.function=dvb_dmxdev_filter_timeout; dmxdevfilter->timer.data=(unsigned long) dmxdevfilter; dmxdevfilter->timer.expires=jiffies+1+(HZ/2+HZ*para->timeout)/1000; add_timer(&dmxdevfilter->timer); @@ -356,53 +358,51 @@ } static int -dvb_dmxdev_section_callback(u8 *buffer1, size_t buffer1_len, - u8 *buffer2, size_t buffer2_len, - dmx_section_filter_t *filter, - dmx_success_t success) -{ - dmxdev_filter_t *dmxdevfilter=(dmxdev_filter_t *) filter->priv; - int ret; - +dvb_dmxdev_section_callback(const u8 *buffer1, size_t buffer1_len, + const u8 *buffer2, size_t buffer2_len, + dmx_section_filter_t *filter, dmx_success_t success) +{ + dmxdev_filter_t *dmxdevfilter=(dmxdev_filter_t *) filter->priv; + int ret; + if (dmxdevfilter->buffer.error) { wake_up(&dmxdevfilter->buffer.queue); - return 0; + return 0; } spin_lock(&dmxdevfilter->dev->lock); if (dmxdevfilter->state!=DMXDEV_STATE_GO) { spin_unlock(&dmxdevfilter->dev->lock); - return 0; + return 0; } del_timer(&dmxdevfilter->timer); dprintk("dmxdev: section callback %02x %02x %02x %02x %02x %02x\n", buffer1[0], buffer1[1], buffer1[2], buffer1[3], buffer1[4], buffer1[5]); - ret=dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer1, buffer1_len); - if (ret==buffer1_len) { - ret=dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer2, buffer2_len); - } - if (ret<0) { - dmxdevfilter->buffer.pwrite=dmxdevfilter->buffer.pread; - dmxdevfilter->buffer.error=-EOVERFLOW; + ret=dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer1, buffer1_len); + if (ret==buffer1_len) { + ret=dvb_dmxdev_buffer_write(&dmxdevfilter->buffer, buffer2, buffer2_len); + } + if (ret<0) { + dmxdevfilter->buffer.pwrite=dmxdevfilter->buffer.pread; + dmxdevfilter->buffer.error=-EOVERFLOW; } if (dmxdevfilter->params.sec.flags&DMX_ONESHOT) - dmxdevfilter->state=DMXDEV_STATE_DONE; + dmxdevfilter->state=DMXDEV_STATE_DONE; spin_unlock(&dmxdevfilter->dev->lock); wake_up(&dmxdevfilter->buffer.queue); return 0; } static int -dvb_dmxdev_ts_callback(u8 *buffer1, size_t buffer1_len, - u8 *buffer2, size_t buffer2_len, - dmx_ts_feed_t *feed, - dmx_success_t success) +dvb_dmxdev_ts_callback(const u8 *buffer1, size_t buffer1_len, + const u8 *buffer2, size_t buffer2_len, + dmx_ts_feed_t *feed, dmx_success_t success) { - dmxdev_filter_t *dmxdevfilter=(dmxdev_filter_t *) feed->priv; + dmxdev_filter_t *dmxdevfilter=(dmxdev_filter_t *) feed->priv; dmxdev_buffer_t *buffer; - int ret; - + int ret; + spin_lock(&dmxdevfilter->dev->lock); if (dmxdevfilter->params.pes.output==DMX_OUT_DECODER) { spin_unlock(&dmxdevfilter->dev->lock); @@ -410,20 +410,20 @@ } if (dmxdevfilter->params.pes.output==DMX_OUT_TAP) - buffer=&dmxdevfilter->buffer; + buffer=&dmxdevfilter->buffer; else - buffer=&dmxdevfilter->dev->dvr_buffer; + buffer=&dmxdevfilter->dev->dvr_buffer; if (buffer->error) { spin_unlock(&dmxdevfilter->dev->lock); wake_up(&buffer->queue); - return 0; + return 0; } - ret=dvb_dmxdev_buffer_write(buffer, buffer1, buffer1_len); - if (ret==buffer1_len) - ret=dvb_dmxdev_buffer_write(buffer, buffer2, buffer2_len); - if (ret<0) { - buffer->pwrite=buffer->pread; - buffer->error=-EOVERFLOW; + ret=dvb_dmxdev_buffer_write(buffer, buffer1, buffer1_len); + if (ret==buffer1_len) + ret=dvb_dmxdev_buffer_write(buffer, buffer2, buffer2_len); + if (ret<0) { + buffer->pwrite=buffer->pread; + buffer->error=-EOVERFLOW; } spin_unlock(&dmxdevfilter->dev->lock); wake_up(&buffer->queue); @@ -440,49 +440,50 @@ switch (dmxdevfilter->type) { case DMXDEV_TYPE_SEC: - del_timer(&dmxdevfilter->timer); - dmxdevfilter->feed.sec->stop_filtering(dmxdevfilter->feed.sec); + del_timer(&dmxdevfilter->timer); + dmxdevfilter->feed.sec->stop_filtering(dmxdevfilter->feed.sec); break; case DMXDEV_TYPE_PES: - dmxdevfilter->feed.ts->stop_filtering(dmxdevfilter->feed.ts); + dmxdevfilter->feed.ts->stop_filtering(dmxdevfilter->feed.ts); break; default: - return -EINVAL; + return -EINVAL; } - return 0; + return 0; } /* start feed associated with the specified filter */ -static int -dvb_dmxdev_feed_start(dmxdev_filter_t *dmxdevfilter) +static +int dvb_dmxdev_feed_start(dmxdev_filter_t *filter) { - dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_GO); + dvb_dmxdev_filter_state_set (filter, DMXDEV_STATE_GO); - switch (dmxdevfilter->type) { + switch (filter->type) { case DMXDEV_TYPE_SEC: - dmxdevfilter->feed.sec->start_filtering(dmxdevfilter->feed.sec); + return filter->feed.sec->start_filtering(filter->feed.sec); break; case DMXDEV_TYPE_PES: - dmxdevfilter->feed.ts->start_filtering(dmxdevfilter->feed.ts); + return filter->feed.ts->start_filtering(filter->feed.ts); break; default: - return -EINVAL; + return -EINVAL; } - return 0; + + return 0; } /* restart section feed if it has filters left associated with it, otherwise release the feed */ -static int -dvb_dmxdev_feed_restart(dmxdev_filter_t *dmxdevfilter) +static +int dvb_dmxdev_feed_restart(dmxdev_filter_t *filter) { int i; - dmxdev_t *dmxdev=dmxdevfilter->dev; - uint16_t pid=dmxdevfilter->params.sec.pid; + dmxdev_t *dmxdev = filter->dev; + uint16_t pid = filter->params.sec.pid; for (i=0; ifilternum; i++) if (dmxdev->filter[i].state>=DMXDEV_STATE_GO && @@ -492,36 +493,34 @@ return 0; } - dmxdevfilter->dev->demux-> - release_section_feed(dmxdev->demux, - dmxdevfilter->feed.sec); + filter->dev->demux->release_section_feed(dmxdev->demux, filter->feed.sec); - return 0; + return 0; } static int dvb_dmxdev_filter_stop(dmxdev_filter_t *dmxdevfilter) { - if (dmxdevfilter->statestatetype) { case DMXDEV_TYPE_SEC: - if (!dmxdevfilter->feed.sec) - break; - dvb_dmxdev_feed_stop(dmxdevfilter); - if (dmxdevfilter->filter.sec) - dmxdevfilter->feed.sec-> + if (!dmxdevfilter->feed.sec) + break; + dvb_dmxdev_feed_stop(dmxdevfilter); + if (dmxdevfilter->filter.sec) + dmxdevfilter->feed.sec-> release_filter(dmxdevfilter->feed.sec, dmxdevfilter->filter.sec); - dvb_dmxdev_feed_restart(dmxdevfilter); + dvb_dmxdev_feed_restart(dmxdevfilter); dmxdevfilter->feed.sec=0; break; case DMXDEV_TYPE_PES: - if (!dmxdevfilter->feed.ts) - break; - dvb_dmxdev_feed_stop(dmxdevfilter); - dmxdevfilter->dev->demux-> + if (!dmxdevfilter->feed.ts) + break; + dvb_dmxdev_feed_stop(dmxdevfilter); + dmxdevfilter->dev->demux-> release_ts_feed(dmxdevfilter->dev->demux, dmxdevfilter->feed.ts); dmxdevfilter->feed.ts=0; @@ -529,10 +528,10 @@ default: if (dmxdevfilter->state==DMXDEV_STATE_ALLOCATED) return 0; - return -EINVAL; + return -EINVAL; } dmxdevfilter->buffer.pwrite=dmxdevfilter->buffer.pread=0; - return 0; + return 0; } static inline int @@ -544,58 +543,58 @@ dmxdevfilter->type=DMXDEV_TYPE_NONE; dmxdevfilter->pid=0xffff; dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_ALLOCATED); - return 0; + return 0; } static int -dvb_dmxdev_filter_start(dmxdev_filter_t *dmxdevfilter) +dvb_dmxdev_filter_start(dmxdev_filter_t *filter) { - dmxdev_t *dmxdev=dmxdevfilter->dev; + dmxdev_t *dmxdev = filter->dev; void *mem; int ret, i; - if (dmxdevfilter->statestate>=DMXDEV_STATE_GO) - dvb_dmxdev_filter_stop(dmxdevfilter); - - mem=dmxdevfilter->buffer.data; - if (!mem) { - mem=vmalloc(dmxdevfilter->buffer.size); - spin_lock_irq(&dmxdevfilter->dev->lock); - dmxdevfilter->buffer.data=mem; - spin_unlock_irq(&dmxdevfilter->dev->lock); - if (!dmxdevfilter->buffer.data) - return -ENOMEM; + if (filter->state < DMXDEV_STATE_SET) + return -EINVAL; + + if (filter->state >= DMXDEV_STATE_GO) + dvb_dmxdev_filter_stop(filter); + + if (!(mem = filter->buffer.data)) { + mem = vmalloc(filter->buffer.size); + spin_lock_irq(&filter->dev->lock); + filter->buffer.data=mem; + spin_unlock_irq(&filter->dev->lock); + if (!filter->buffer.data) + return -ENOMEM; } - dmxdevfilter->buffer.pwrite=dmxdevfilter->buffer.pread=0; + filter->buffer.pwrite = filter->buffer.pread = 0; - switch (dmxdevfilter->type) { + switch (filter->type) { case DMXDEV_TYPE_SEC: { - struct dmx_sct_filter_params *para=&dmxdevfilter->params.sec; - dmx_section_filter_t **secfilter=&dmxdevfilter->filter.sec; - dmx_section_feed_t **secfeed=&dmxdevfilter->feed.sec; + struct dmx_sct_filter_params *para=&filter->params.sec; + dmx_section_filter_t **secfilter=&filter->filter.sec; + dmx_section_feed_t **secfeed=&filter->feed.sec; *secfilter=0; *secfeed=0; /* find active filter/feed with same PID */ - for (i=0; ifilternum; i++) - if (dmxdev->filter[i].state>=DMXDEV_STATE_GO && - dmxdev->filter[i].pid==para->pid) { - if (dmxdev->filter[i].type!=DMXDEV_TYPE_SEC) - return -EBUSY; - *secfeed=dmxdev->filter[i].feed.sec; + for (i=0; ifilternum; i++) { + if (dmxdev->filter[i].state >= DMXDEV_STATE_GO && + dmxdev->filter[i].pid == para->pid && + dmxdev->filter[i].type == DMXDEV_TYPE_SEC) { + *secfeed = dmxdev->filter[i].feed.sec; break; } + } /* if no feed found, try to allocate new one */ if (!*secfeed) { ret=dmxdev->demux->allocate_section_feed(dmxdev->demux, - secfeed, - dvb_dmxdev_section_callback); + secfeed, + dvb_dmxdev_section_callback); if (ret<0) { printk ("DVB (%s): could not alloc feed\n", __FUNCTION__); @@ -608,22 +607,23 @@ if (ret<0) { printk ("DVB (%s): could not set feed\n", __FUNCTION__); - dvb_dmxdev_feed_restart(dmxdevfilter); + dvb_dmxdev_feed_restart(filter); return ret; } + } else { + dvb_dmxdev_feed_stop(filter); } - else - dvb_dmxdev_feed_stop(dmxdevfilter); ret=(*secfeed)->allocate_filter(*secfeed, secfilter); - if (ret<0) { - dvb_dmxdev_feed_restart(dmxdevfilter); - dmxdevfilter->feed.sec->start_filtering(*secfeed); + + if (ret < 0) { + dvb_dmxdev_feed_restart(filter); + filter->feed.sec->start_filtering(*secfeed); dprintk ("could not get filter\n"); return ret; } - (*secfilter)->priv=(void *) dmxdevfilter; + (*secfilter)->priv = filter; memcpy(&((*secfilter)->filter_value[3]), &(para->filter.filter[1]), DMX_FILTER_SIZE-1); @@ -638,23 +638,28 @@ (*secfilter)->filter_mask[1]=0; (*secfilter)->filter_mask[2]=0; - dmxdevfilter->todo=0; - dmxdevfilter->feed.sec->start_filtering(dmxdevfilter->feed.sec); - dvb_dmxdev_filter_timer(dmxdevfilter); + filter->todo = 0; + + ret = filter->feed.sec->start_filtering (filter->feed.sec); + + if (ret < 0) + return ret; + + dvb_dmxdev_filter_timer(filter); break; } case DMXDEV_TYPE_PES: { struct timespec timeout = { 0 }; - struct dmx_pes_filter_params *para=&dmxdevfilter->params.pes; + struct dmx_pes_filter_params *para = &filter->params.pes; dmx_output_t otype; int ret; int ts_type; dmx_ts_pes_t ts_pes; - dmx_ts_feed_t **tsfeed=&dmxdevfilter->feed.ts; + dmx_ts_feed_t **tsfeed = &filter->feed.ts; - dmxdevfilter->feed.ts=0; + filter->feed.ts = 0; otype=para->output; ts_pes=(dmx_ts_pes_t) para->pes_type; @@ -664,11 +669,11 @@ else ts_type=0; - if (otype==DMX_OUT_TS_TAP) - ts_type|=TS_PACKET; + if (otype == DMX_OUT_TS_TAP) + ts_type |= TS_PACKET; - if (otype==DMX_OUT_TAP) - ts_type|=TS_PAYLOAD_ONLY|TS_PACKET; + if (otype == DMX_OUT_TAP) + ts_type |= TS_PAYLOAD_ONLY|TS_PACKET; ret=dmxdev->demux->allocate_ts_feed(dmxdev->demux, tsfeed, @@ -676,75 +681,97 @@ if (ret<0) return ret; - (*tsfeed)->priv=(void *) dmxdevfilter; - ret=(*tsfeed)->set(*tsfeed, para->pid, ts_type, ts_pes, 188, 32768, 0, timeout); - if (ret<0) { + (*tsfeed)->priv = (void *) filter; + + ret = (*tsfeed)->set(*tsfeed, para->pid, ts_type, ts_pes, + 188, 32768, 0, timeout); + + if (ret < 0) { dmxdev->demux->release_ts_feed(dmxdev->demux, *tsfeed); return ret; } - dmxdevfilter->feed.ts->start_filtering(dmxdevfilter->feed.ts); + + ret = filter->feed.ts->start_filtering(filter->feed.ts); + + if (ret < 0) + return ret; + break; } default: - return -EINVAL; + return -EINVAL; } - dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_GO); - return 0; + + dvb_dmxdev_filter_state_set(filter, DMXDEV_STATE_GO); + return 0; } static int dvb_demux_open(struct inode *inode, struct file *file) { struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; dmxdev_t *dmxdev=(dmxdev_t *) dvbdev->priv; - int i; - dmxdev_filter_t *dmxdevfilter; + int i; + dmxdev_filter_t *dmxdevfilter; if (!dmxdev->filter) - return -EINVAL; - if (down_interruptible(&dmxdev->mutex)) + return -EINVAL; + + if (down_interruptible(&dmxdev->mutex)) return -ERESTARTSYS; - for (i=0; ifilternum; i++) - if (dmxdev->filter[i].state==DMXDEV_STATE_FREE) - break; - if (i==dmxdev->filternum) { - up(&dmxdev->mutex); - return -EMFILE; + + for (i=0; ifilternum; i++) + if (dmxdev->filter[i].state==DMXDEV_STATE_FREE) + break; + + if (i==dmxdev->filternum) { + up(&dmxdev->mutex); + return -EMFILE; } - dmxdevfilter=&dmxdev->filter[i]; - dmxdevfilter->dvbdev=dmxdev->dvbdev; + + dmxdevfilter=&dmxdev->filter[i]; + sema_init(&dmxdevfilter->mutex, 1); + dmxdevfilter->dvbdev=dmxdev->dvbdev; file->private_data=dmxdevfilter; dvb_dmxdev_buffer_init(&dmxdevfilter->buffer); - dmxdevfilter->type=DMXDEV_TYPE_NONE; + dmxdevfilter->type=DMXDEV_TYPE_NONE; dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_ALLOCATED); dmxdevfilter->feed.ts=0; init_timer(&dmxdevfilter->timer); - up(&dmxdev->mutex); - return 0; + up(&dmxdev->mutex); + return 0; } -int -dvb_dmxdev_filter_free(dmxdev_t *dmxdev, dmxdev_filter_t *dmxdevfilter) + +static +int dvb_dmxdev_filter_free(dmxdev_t *dmxdev, dmxdev_filter_t *dmxdevfilter) { - if (down_interruptible(&dmxdev->mutex)) + if (down_interruptible(&dmxdev->mutex)) return -ERESTARTSYS; - dvb_dmxdev_filter_stop(dmxdevfilter); + if (down_interruptible(&dmxdevfilter->mutex)) { + up(&dmxdev->mutex); + return -ERESTARTSYS; + } + + dvb_dmxdev_filter_stop(dmxdevfilter); dvb_dmxdev_filter_reset(dmxdevfilter); - - if (dmxdevfilter->buffer.data) { - void *mem=dmxdevfilter->buffer.data; + + if (dmxdevfilter->buffer.data) { + void *mem=dmxdevfilter->buffer.data; - spin_lock_irq(&dmxdev->lock); + spin_lock_irq(&dmxdev->lock); dmxdevfilter->buffer.data=0; - spin_unlock_irq(&dmxdev->lock); + spin_unlock_irq(&dmxdev->lock); vfree(mem); } + dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_FREE); wake_up(&dmxdevfilter->buffer.queue); + up(&dmxdevfilter->mutex); up(&dmxdev->mutex); - return 0; + return 0; } static inline void @@ -759,83 +786,83 @@ static int dvb_dmxdev_filter_set(dmxdev_t *dmxdev, - dmxdev_filter_t *dmxdevfilter, + dmxdev_filter_t *dmxdevfilter, struct dmx_sct_filter_params *params) { - dprintk ("function : %s\n", __FUNCTION__); + dprintk ("function : %s\n", __FUNCTION__); dvb_dmxdev_filter_stop(dmxdevfilter); - - dmxdevfilter->type=DMXDEV_TYPE_SEC; - dmxdevfilter->pid=params->pid; + + dmxdevfilter->type=DMXDEV_TYPE_SEC; + dmxdevfilter->pid=params->pid; memcpy(&dmxdevfilter->params.sec, params, sizeof(struct dmx_sct_filter_params)); invert_mode(&dmxdevfilter->params.sec.filter); dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_SET); - if (params->flags&DMX_IMMEDIATE_START) - return dvb_dmxdev_filter_start(dmxdevfilter); + if (params->flags&DMX_IMMEDIATE_START) + return dvb_dmxdev_filter_start(dmxdevfilter); - return 0; + return 0; } static int dvb_dmxdev_pes_filter_set(dmxdev_t *dmxdev, - dmxdev_filter_t *dmxdevfilter, - struct dmx_pes_filter_params *params) + dmxdev_filter_t *dmxdevfilter, + struct dmx_pes_filter_params *params) { dvb_dmxdev_filter_stop(dmxdevfilter); if (params->pes_type>DMX_PES_OTHER || params->pes_type<0) - return -EINVAL; + return -EINVAL; - dmxdevfilter->type=DMXDEV_TYPE_PES; - dmxdevfilter->pid=params->pid; + dmxdevfilter->type=DMXDEV_TYPE_PES; + dmxdevfilter->pid=params->pid; memcpy(&dmxdevfilter->params, params, sizeof(struct dmx_pes_filter_params)); dvb_dmxdev_filter_state_set(dmxdevfilter, DMXDEV_STATE_SET); - if (params->flags&DMX_IMMEDIATE_START) - return dvb_dmxdev_filter_start(dmxdevfilter); + if (params->flags&DMX_IMMEDIATE_START) + return dvb_dmxdev_filter_start(dmxdevfilter); - return 0; + return 0; } static ssize_t dvb_dmxdev_read_sec(dmxdev_filter_t *dfil, struct file *file, char *buf, size_t count, loff_t *ppos) { - int result, hcount; + int result, hcount; int done=0; if (dfil->todo<=0) { - hcount=3+dfil->todo; - if (hcount>count) - hcount=count; + hcount=3+dfil->todo; + if (hcount>count) + hcount=count; result=dvb_dmxdev_buffer_read(&dfil->buffer, file->f_flags&O_NONBLOCK, buf, hcount, ppos); if (result<0) { dfil->todo=0; - return result; + return result; } if (copy_from_user(dfil->secheader-dfil->todo, buf, result)) - return -EFAULT; + return -EFAULT; buf+=result; done=result; count-=result; dfil->todo-=result; if (dfil->todo>-3) - return done; + return done; dfil->todo=((dfil->secheader[1]<<8)|dfil->secheader[2])&0xfff; if (!count) - return done; + return done; } if (count>dfil->todo) - count=dfil->todo; - result=dvb_dmxdev_buffer_read(&dfil->buffer, file->f_flags&O_NONBLOCK, + count=dfil->todo; + result=dvb_dmxdev_buffer_read(&dfil->buffer, file->f_flags&O_NONBLOCK, buf, count, ppos); if (result<0) - return result; + return result; dfil->todo-=result; return (result+done); } @@ -844,19 +871,20 @@ ssize_t dvb_demux_read(struct file *file, char *buf, size_t count, loff_t *ppos) { - dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); - //dmxdev_t *dmxdev=dmxdevfilter->dev; + dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); int ret=0; - // semaphore should not be necessary (I hope ...) - //down(&dmxdev->mutex); + if (down_interruptible(&dmxdevfilter->mutex)) + return -ERESTARTSYS; + if (dmxdevfilter->type==DMXDEV_TYPE_SEC) - ret=dvb_dmxdev_read_sec(dmxdevfilter, file, buf, count, ppos); + ret=dvb_dmxdev_read_sec(dmxdevfilter, file, buf, count, ppos); else - ret=dvb_dmxdev_buffer_read(&dmxdevfilter->buffer, + ret=dvb_dmxdev_buffer_read(&dmxdevfilter->buffer, file->f_flags&O_NONBLOCK, buf, count, ppos); - //up(&dmxdev->mutex); + + up(&dmxdevfilter->mutex); return ret; } @@ -864,102 +892,131 @@ static int dvb_demux_do_ioctl(struct inode *inode, struct file *file, unsigned int cmd, void *parg) { - dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); + dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); dmxdev_t *dmxdev=dmxdevfilter->dev; - unsigned long arg=(unsigned long) parg; + unsigned long arg=(unsigned long) parg; int ret=0; - if (down_interruptible (&dmxdev->mutex)) + if (down_interruptible (&dmxdev->mutex)) return -ERESTARTSYS; switch (cmd) { - case DMX_START: - if (dmxdevfilter->statemutex)) { + up(&dmxdev->mutex); + return -ERESTARTSYS; + } + if (dmxdevfilter->statemutex); break; - case DMX_STOP: + case DMX_STOP: + if (down_interruptible(&dmxdevfilter->mutex)) { + up(&dmxdev->mutex); + return -ERESTARTSYS; + } ret=dvb_dmxdev_filter_stop(dmxdevfilter); + up(&dmxdevfilter->mutex); break; case DMX_SET_FILTER: - ret=dvb_dmxdev_filter_set(dmxdev, dmxdevfilter, + if (down_interruptible(&dmxdevfilter->mutex)) { + up(&dmxdev->mutex); + return -ERESTARTSYS; + } + ret = dvb_dmxdev_filter_set(dmxdev, dmxdevfilter, (struct dmx_sct_filter_params *)parg); + up(&dmxdevfilter->mutex); break; case DMX_SET_PES_FILTER: + if (down_interruptible(&dmxdevfilter->mutex)) { + up(&dmxdev->mutex); + return -ERESTARTSYS; + } ret=dvb_dmxdev_pes_filter_set(dmxdev, dmxdevfilter, (struct dmx_pes_filter_params *)parg); + up(&dmxdevfilter->mutex); break; case DMX_SET_BUFFER_SIZE: - ret=dvb_dmxdev_set_buffer_size(dmxdevfilter, arg); + if (down_interruptible(&dmxdevfilter->mutex)) { + up(&dmxdev->mutex); + return -ERESTARTSYS; + } + ret=dvb_dmxdev_set_buffer_size(dmxdevfilter, arg); + up(&dmxdevfilter->mutex); + break; + + case DMX_GET_EVENT: break; - - case DMX_GET_EVENT: - break; - case DMX_GET_PES_PIDS: + case DMX_GET_PES_PIDS: if (!dmxdev->demux->get_pes_pids) { - ret=-EINVAL; + ret=-EINVAL; break; } dmxdev->demux->get_pes_pids(dmxdev->demux, (uint16_t *)parg); - break; + break; + + case DMX_GET_STC: + if (!dmxdev->demux->get_stc) { + ret=-EINVAL; + break; + } + ret = dmxdev->demux->get_stc(dmxdev->demux, + ((struct dmx_stc *)parg)->num, + &((struct dmx_stc *)parg)->stc, + &((struct dmx_stc *)parg)->base); + break; default: - ret=-EINVAL; + ret=-EINVAL; } - up(&dmxdev->mutex); + up(&dmxdev->mutex); return ret; } static int dvb_demux_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { - return video_usercopy(inode, file, cmd, arg, dvb_demux_do_ioctl); + return dvb_usercopy(inode, file, cmd, arg, dvb_demux_do_ioctl); } -static unsigned int dvb_demux_poll(struct file *file, poll_table *wait) +static +unsigned int dvb_demux_poll (struct file *file, poll_table *wait) { - dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); + dmxdev_filter_t *dmxdevfilter = dvb_dmxdev_file_to_filter(file); + unsigned int mask = 0; if (!dmxdevfilter) - return -EINVAL; - - if (dmxdevfilter->state==DMXDEV_STATE_FREE) - return 0; - - if (dmxdevfilter->buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); - - if (dmxdevfilter->buffer.pread!=dmxdevfilter->buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); - - if (dmxdevfilter->state!=DMXDEV_STATE_GO) - return 0; + return -EINVAL; poll_wait(file, &dmxdevfilter->buffer.queue, wait); - - if (dmxdevfilter->state==DMXDEV_STATE_FREE) - return 0; + + if (dmxdevfilter->state != DMXDEV_STATE_GO && + dmxdevfilter->state != DMXDEV_STATE_DONE) + return 0; if (dmxdevfilter->buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); + mask |= (POLLIN | POLLRDNORM | POLLPRI | POLLERR); - if (dmxdevfilter->buffer.pread!=dmxdevfilter->buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); + if (dmxdevfilter->buffer.pread != dmxdevfilter->buffer.pwrite) + mask |= (POLLIN | POLLRDNORM | POLLPRI); - return 0; + return mask; } -static int dvb_demux_release(struct inode *inode, struct file *file) + +static +int dvb_demux_release(struct inode *inode, struct file *file) { - dmxdev_filter_t *dmxdevfilter=dvb_dmxdev_file_to_filter(file); - dmxdev_t *dmxdev=dmxdevfilter->dev; + dmxdev_filter_t *dmxdevfilter = dvb_dmxdev_file_to_filter(file); + dmxdev_t *dmxdev = dmxdevfilter->dev; return dvb_dmxdev_filter_free(dmxdev, dmxdevfilter); } @@ -988,64 +1045,62 @@ int ret=0; - if (down_interruptible (&dmxdev->mutex)) + if (down_interruptible (&dmxdev->mutex)) return -ERESTARTSYS; switch (cmd) { case DMX_SET_BUFFER_SIZE: // FIXME: implement - ret=0; + ret=0; break; default: - ret=-EINVAL; + ret=-EINVAL; } - up(&dmxdev->mutex); + up(&dmxdev->mutex); return ret; } static int dvb_dvr_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) { - return video_usercopy(inode, file, cmd, arg, dvb_dvr_do_ioctl); + return dvb_usercopy(inode, file, cmd, arg, dvb_dvr_do_ioctl); } -static unsigned int dvb_dvr_poll(struct file *file, poll_table *wait) +static +unsigned int dvb_dvr_poll (struct file *file, poll_table *wait) { - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - dmxdev_t *dmxdev=(dmxdev_t *) dvbdev->priv; + struct dvb_device *dvbdev = (struct dvb_device *) file->private_data; + dmxdev_t *dmxdev = (dmxdev_t *) dvbdev->priv; + unsigned int mask = 0; - dprintk ("function : %s\n", __FUNCTION__); + dprintk ("function : %s\n", __FUNCTION__); - if ((file->f_flags&O_ACCMODE)==O_RDONLY) { - if (dmxdev->dvr_buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); + poll_wait(file, &dmxdev->dvr_buffer.queue, wait); - if (dmxdev->dvr_buffer.pread!=dmxdev->dvr_buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); - - poll_wait(file, &dmxdev->dvr_buffer.queue, wait); - + if ((file->f_flags&O_ACCMODE) == O_RDONLY) { if (dmxdev->dvr_buffer.error) - return (POLLIN | POLLRDNORM | POLLPRI | POLLERR); + mask |= (POLLIN | POLLRDNORM | POLLPRI | POLLERR); if (dmxdev->dvr_buffer.pread!=dmxdev->dvr_buffer.pwrite) - return (POLLIN | POLLRDNORM | POLLPRI); - - return 0; + mask |= (POLLIN | POLLRDNORM | POLLPRI); } else - return (POLLOUT | POLLWRNORM | POLLPRI); + mask |= (POLLOUT | POLLWRNORM | POLLPRI); + + return mask; } -static struct file_operations dvb_dvr_fops = { + +static +struct file_operations dvb_dvr_fops = { .owner = THIS_MODULE, .read = dvb_dvr_read, .write = dvb_dvr_write, .ioctl = dvb_dvr_ioctl, .open = dvb_dvr_open, .release = dvb_dvr_release, - .poll =dvb_dvr_poll, + .poll = dvb_dvr_poll, }; static struct dvb_device dvbdev_dvr = { @@ -1058,37 +1113,38 @@ int dvb_dmxdev_init(dmxdev_t *dmxdev, struct dvb_adapter *dvb_adapter) { - int i; + int i; if (dmxdev->demux->open(dmxdev->demux)<0) return -EUSERS; dmxdev->filter=vmalloc(dmxdev->filternum*sizeof(dmxdev_filter_t)); if (!dmxdev->filter) - return -ENOMEM; + return -ENOMEM; dmxdev->dvr=vmalloc(dmxdev->filternum*sizeof(dmxdev_dvr_t)); if (!dmxdev->dvr) { vfree(dmxdev->filter); dmxdev->filter=0; - return -ENOMEM; + return -ENOMEM; } - sema_init(&dmxdev->mutex, 1); + sema_init(&dmxdev->mutex, 1); spin_lock_init(&dmxdev->lock); for (i=0; ifilternum; i++) { - dmxdev->filter[i].dev=dmxdev; - dmxdev->filter[i].buffer.data=0; - dvb_dmxdev_filter_state_set(&dmxdev->filter[i], DMXDEV_STATE_FREE); - dmxdev->dvr[i].dev=dmxdev; - dmxdev->dvr[i].buffer.data=0; - dvb_dmxdev_filter_state_set(&dmxdev->filter[i], DMXDEV_STATE_FREE); - dvb_dmxdev_dvr_state_set(&dmxdev->dvr[i], DMXDEV_STATE_FREE); + dmxdev->filter[i].dev=dmxdev; + dmxdev->filter[i].buffer.data=0; + dvb_dmxdev_filter_state_set(&dmxdev->filter[i], DMXDEV_STATE_FREE); + dmxdev->dvr[i].dev=dmxdev; + dmxdev->dvr[i].buffer.data=0; + dvb_dmxdev_filter_state_set(&dmxdev->filter[i], DMXDEV_STATE_FREE); + dvb_dmxdev_dvr_state_set(&dmxdev->dvr[i], DMXDEV_STATE_FREE); } dvb_register_device(dvb_adapter, &dmxdev->dvbdev, &dvbdev_demux, dmxdev, DVB_DEVICE_DEMUX); dvb_register_device(dvb_adapter, &dmxdev->dvr_dvbdev, &dvbdev_dvr, dmxdev, DVB_DEVICE_DVR); dvb_dmxdev_buffer_init(&dmxdev->dvr_buffer); - MOD_INC_USE_COUNT; + /* fixme: is this correct? */ + try_module_get(THIS_MODULE); return 0; } @@ -1098,15 +1154,16 @@ dvb_unregister_device(dmxdev->dvbdev); dvb_unregister_device(dmxdev->dvr_dvbdev); if (dmxdev->filter) { - vfree(dmxdev->filter); + vfree(dmxdev->filter); dmxdev->filter=0; } if (dmxdev->dvr) { - vfree(dmxdev->dvr); + vfree(dmxdev->dvr); dmxdev->dvr=0; } - dmxdev->demux->close(dmxdev->demux); - MOD_DEC_USE_COUNT; + dmxdev->demux->close(dmxdev->demux); + /* fixme: is this correct? */ + module_put(THIS_MODULE); } diff -Nru a/drivers/media/dvb/dvb-core/dmxdev.h b/drivers/media/dvb/dvb-core/dmxdev.h --- a/drivers/media/dvb/dvb-core/dmxdev.h Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dmxdev.h Mon Apr 7 13:17:58 2003 @@ -85,6 +85,8 @@ struct dmxdev_s *dev; dmxdev_buffer_t buffer; + struct semaphore mutex; + // only for sections struct timer_list timer; int todo; diff -Nru a/drivers/media/dvb/dvb-core/dvb_demux.c b/drivers/media/dvb/dvb-core/dvb_demux.c --- a/drivers/media/dvb/dvb-core/dvb_demux.c Sun Mar 2 03:26:22 2003 +++ b/drivers/media/dvb/dvb-core/dvb_demux.c Mon Apr 7 13:20:11 2003 @@ -2,8 +2,8 @@ * dvb_demux.c - DVB kernel demux API * * Copyright (C) 2000-2001 Ralph Metzler - * & Marcus Metzler - * for convergence integrated media GmbH + * & Marcus Metzler + * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -27,27 +27,36 @@ #include #include -#include "compat.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #include "compat.h" +#else + #include +#endif + #include "dvb_demux.h" #define NOBUFS LIST_HEAD(dmx_muxs); + int dmx_register_demux(dmx_demux_t *demux) { - struct list_head *pos, *head=&dmx_muxs; + struct list_head *pos; if (!(demux->id && demux->vendor && demux->model)) - return -EINVAL; - list_for_each(pos, head) - { - if (!strcmp(DMX_DIR_ENTRY(pos)->id, demux->id)) - return -EEXIST; + return -EINVAL; + + list_for_each(pos, &dmx_muxs) { + if (!strcmp(DMX_DIR_ENTRY(pos)->id, demux->id)) + return -EEXIST; } - demux->users=0; - list_add(&(demux->reg_list), head); - MOD_INC_USE_COUNT; + + demux->users = 0; + list_add(&demux->reg_list, &dmx_muxs); + /* fixme: is this correct? */ + try_module_get(THIS_MODULE); + return 0; } @@ -55,25 +64,25 @@ { struct list_head *pos, *n, *head=&dmx_muxs; - list_for_each_safe (pos, n, head) - { - if (DMX_DIR_ENTRY(pos)==demux) - { - if (demux->users>0) - return -EINVAL; - list_del(pos); - MOD_DEC_USE_COUNT; + list_for_each_safe (pos, n, head) { + if (DMX_DIR_ENTRY(pos) == demux) { + if (demux->users>0) + return -EINVAL; + list_del(pos); + /* fixme: is this correct? */ + module_put(THIS_MODULE); return 0; } } + return -ENODEV; } struct list_head *dmx_get_demuxes(void) { - if (list_empty(&dmx_muxs)) - return NULL; + if (list_empty(&dmx_muxs)) + return NULL; return &dmx_muxs; } @@ -82,628 +91,661 @@ * static inlined helper functions ******************************************************************************/ -static inline u16 -section_length(const u8 *buf) + +static inline +u16 section_length(const u8 *buf) { - return 3+((buf[1]&0x0f)<<8)+buf[2]; + return 3+((buf[1]&0x0f)<<8)+buf[2]; } -static inline u16 -ts_pid(const u8 *buf) + +static inline +u16 ts_pid(const u8 *buf) { - return ((buf[1]&0x1f)<<8)+buf[2]; + return ((buf[1]&0x1f)<<8)+buf[2]; } -static inline int -payload(const u8 *tsp) + +static inline +int payload(const u8 *tsp) { - if (!(tsp[3]&0x10)) // no payload? - return 0; - if (tsp[3]&0x20) { // adaptation field? + if (!(tsp[3]&0x10)) // no payload? + return 0; + if (tsp[3]&0x20) { // adaptation field? if (tsp[4]>183) // corrupted data? return 0; else return 184-1-tsp[4]; } - return 184; + return 184; } -static u32 -dvb_crc_table[256] = { - 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, - 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, - 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, - 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, - 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, - 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, - 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, - 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, - 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, - 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, - 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, - 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, - 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, - 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, - 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, - 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, - 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, - 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, - 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, - 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, - 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, - 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, - 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, - 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, - 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, - 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, - 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, - 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, - 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, - 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, - 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, - 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, - 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, - 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, - 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, - 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, - 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, - 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, - 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, - 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, - 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, - 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, - 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4}; - -u32 dvb_crc32(u8 *data, int len) +void dvb_set_crc32(u8 *data, int length) { - int i; - u32 crc = 0xffffffff; + u32 crc; + + crc = crc32_le(~0, data, length); - for (i=0; i> 24) ^ *data++) & 0xff]; - return crc; + data[length] = (crc >> 24) & 0xff; + data[length+1] = (crc >> 16) & 0xff; + data[length+2] = (crc >> 8) & 0xff; + data[length+3] = (crc) & 0xff; } -void dvb_set_crc32(u8 *data, int length) + +static +u32 dvb_dmx_crc32 (struct dvb_demux_feed *f, const u8 *src, size_t len) { - u32 crc; + return (f->feed.sec.crc_val = crc32_le (f->feed.sec.crc_val, src, len)); +} + - crc=dvb_crc32(data,length); - data[length] = (crc>>24)&0xff; - data[length+1] = (crc>>16)&0xff; - data[length+2] = (crc>>8)&0xff; - data[length+3] = (crc)&0xff; +static +void dvb_dmx_memcopy (struct dvb_demux_feed *f, u8 *d, const u8 *s, size_t len) +{ + memcpy (d, s, len); } - + /****************************************************************************** * Software filter functions ******************************************************************************/ -static inline int -dvb_dmx_swfilter_payload(struct dvb_demux_feed *dvbdmxfeed, const u8 *buf) +static inline +int dvb_dmx_swfilter_payload (struct dvb_demux_feed *feed, const u8 *buf) { - int p, count; + int count = payload(buf); + int p; //int ccok; //u8 cc; - if (!(count=payload(buf))) - return -1; - p=188-count; - /* + if (count == 0) + return -1; + + p = 188-count; + + /* cc=buf[3]&0x0f; - ccok=((dvbdmxfeed->cc+1)&0x0f)==cc ? 1 : 0; - dvbdmxfeed->cc=cc; - if (!ccok) - printk("missed packet!\n"); - */ - if (buf[1]&0x40) // PUSI ? - dvbdmxfeed->peslen=0xfffa; - dvbdmxfeed->peslen+=count; - - return dvbdmxfeed->cb.ts((u8 *)&buf[p], count, 0, 0, - &dvbdmxfeed->feed.ts, DMX_OK); + ccok=((dvbdmxfeed->cc+1)&0x0f)==cc ? 1 : 0; + dvbdmxfeed->cc=cc; + if (!ccok) + printk("missed packet!\n"); + */ + + if (buf[1] & 0x40) // PUSI ? + feed->peslen = 0xfffa; + + feed->peslen += count; + + return feed->cb.ts (&buf[p], count, 0, 0, &feed->feed.ts, DMX_OK); } -static int -dvb_dmx_swfilter_sectionfilter(struct dvb_demux_feed *dvbdmxfeed, - struct dvb_demux_filter *f) -{ - dmx_section_filter_t *filter=&f->filter; - int i; - u8 xor, neq=0; - - for (i=0; ifilter_value[i]^dvbdmxfeed->secbuf[i]; - if (f->maskandmode[i]&xor) +static +int dvb_dmx_swfilter_sectionfilter (struct dvb_demux_feed *feed, + struct dvb_demux_filter *f) +{ + u8 neq = 0; + int i; + + for (i=0; ifilter.filter_value[i] ^ feed->feed.sec.secbuf[i]; + + if (f->maskandmode[i] & xor) return 0; - neq|=f->maskandnotmode[i]&xor; + + neq |= f->maskandnotmode[i] & xor; } - if (f->doneq && !neq) + + if (f->doneq & !neq) return 0; - return dvbdmxfeed->cb.sec(dvbdmxfeed->secbuf, dvbdmxfeed->seclen, - 0, 0, filter, DMX_OK); + return feed->cb.sec (feed->feed.sec.secbuf, feed->feed.sec.seclen, + 0, 0, &f->filter, DMX_OK); } -static inline int -dvb_dmx_swfilter_section_feed(struct dvb_demux_feed *dvbdmxfeed) + +static inline +int dvb_dmx_swfilter_section_feed (struct dvb_demux_feed *feed) { - u8 *buf=dvbdmxfeed->secbuf; - struct dvb_demux_filter *f; + struct dvb_demux *demux = feed->demux; + struct dvb_demux_filter *f = feed->filter; + dmx_section_feed_t *sec = &feed->feed.sec; + u8 *buf = sec->secbuf; + + if (sec->secbufp != sec->seclen) + return -1; + + if (!sec->is_filtering) + return 0; + + if (!f) + return 0; + + if (sec->check_crc && demux->check_crc32(feed, sec->secbuf, sec->seclen)) + return -1; - if (dvbdmxfeed->secbufp!=dvbdmxfeed->seclen) - return -1; - if (!dvbdmxfeed->feed.sec.is_filtering) - return 0; - if (!(f=dvbdmxfeed->filter)) - return 0; - do - if (dvb_dmx_swfilter_sectionfilter(dvbdmxfeed, f)<0) - return -1; - while ((f=f->next) && dvbdmxfeed->feed.sec.is_filtering); + do { + if (dvb_dmx_swfilter_sectionfilter(feed, f) < 0) + return -1; + } while ((f = f->next) && sec->is_filtering); + + sec->secbufp = sec->seclen = 0; - dvbdmxfeed->secbufp=dvbdmxfeed->seclen=0; - memset(buf, 0, DVB_DEMUX_MASK_MAX); - return 0; + memset(buf, 0, DVB_DEMUX_MASK_MAX); + + return 0; } -static inline int -dvb_dmx_swfilter_section_packet(struct dvb_demux_feed *dvbdmxfeed, const u8 *buf) + +static +int dvb_dmx_swfilter_section_packet(struct dvb_demux_feed *feed, const u8 *buf) { - int p, count; - int ccok, rest; + struct dvb_demux *demux = feed->demux; + dmx_section_feed_t *sec = &feed->feed.sec; + int p, count; + int ccok, rest; u8 cc; - if (!(count=payload(buf))) - return -1; - p=188-count; + if (!(count = payload(buf))) + return -1; - cc=buf[3]&0x0f; - ccok=((dvbdmxfeed->cc+1)&0x0f)==cc ? 1 : 0; - dvbdmxfeed->cc=cc; + p = 188-count; - if (buf[1]&0x40) { // PUSI set - // offset to start of first section is in buf[p] + cc = buf[3] & 0x0f; + ccok = ((feed->cc+1) & 0x0f) == cc ? 1 : 0; + feed->cc = cc; + + if (buf[1] & 0x40) { // PUSI set + // offset to start of first section is in buf[p] if (p+buf[p]>187) // trash if it points beyond packet return -1; - if (buf[p] && ccok) { // rest of previous section? - // did we have enough data in last packet to calc length? - int tmp=3-dvbdmxfeed->secbufp; - if (tmp>0 && tmp!=3) { - if (p+tmp>=187) + + if (buf[p] && ccok) { // rest of previous section? + // did we have enough data in last packet to calc length? + int tmp = 3 - sec->secbufp; + + if (tmp > 0 && tmp != 3) { + if (p + tmp >= 187) return -1; - memcpy(dvbdmxfeed->secbuf+dvbdmxfeed->secbufp, - buf+p+1, tmp); - dvbdmxfeed->seclen=section_length(dvbdmxfeed->secbuf); - if (dvbdmxfeed->seclen>4096) + + demux->memcopy (feed, sec->secbuf+sec->secbufp, + buf+p+1, tmp); + + sec->seclen = section_length(sec->secbuf); + + if (sec->seclen > 4096) return -1; - } - rest=dvbdmxfeed->seclen-dvbdmxfeed->secbufp; - if (rest==buf[p] && dvbdmxfeed->seclen) { - memcpy(dvbdmxfeed->secbuf+dvbdmxfeed->secbufp, - buf+p+1, buf[p]); - dvbdmxfeed->secbufp+=buf[p]; - dvb_dmx_swfilter_section_feed(dvbdmxfeed); - } - } - p+=buf[p]+1; // skip rest of last section - count=188-p; - while (count>0) { - if ((count>2) && // enough data to determine sec length? - ((dvbdmxfeed->seclen=section_length(buf+p))<=count)) { - if (dvbdmxfeed->seclen>4096) + } + + rest = sec->seclen - sec->secbufp; + + if (rest == buf[p] && sec->seclen) { + demux->memcopy (feed, sec->secbuf + sec->secbufp, + buf+p+1, buf[p]); + sec->secbufp += buf[p]; + dvb_dmx_swfilter_section_feed(feed); + } + } + + p += buf[p] + 1; // skip rest of last section + count = 188 - p; + + while (count) { + + sec->crc_val = ~0; + + if ((count>2) && // enough data to determine sec length? + ((sec->seclen = section_length(buf+p)) <= count)) { + if (sec->seclen>4096) return -1; - memcpy(dvbdmxfeed->secbuf, buf+p, - dvbdmxfeed->seclen); - dvbdmxfeed->secbufp=dvbdmxfeed->seclen; - p+=dvbdmxfeed->seclen; - count=188-p; - dvb_dmx_swfilter_section_feed(dvbdmxfeed); - - // filling bytes until packet end? - if (count && buf[p]==0xff) - count=0; - } else { // section continues to following TS packet - memcpy(dvbdmxfeed->secbuf, buf+p, count); - dvbdmxfeed->secbufp+=count; - count=0; - } - } + + demux->memcopy (feed, sec->secbuf, buf+p, + sec->seclen); + + sec->secbufp = sec->seclen; + p += sec->seclen; + count = 188 - p; + + dvb_dmx_swfilter_section_feed(feed); + + // filling bytes until packet end? + if (count && buf[p]==0xff) + count=0; + + } else { // section continues to following TS packet + demux->memcopy(feed, sec->secbuf, buf+p, count); + sec->secbufp+=count; + count=0; + } + } + return 0; } // section continued below if (!ccok) return -1; - if (!dvbdmxfeed->secbufp) // any data in last ts packet? + + if (!sec->secbufp) // any data in last ts packet? return -1; + // did we have enough data in last packet to calc section length? - if (dvbdmxfeed->secbufp<3) { - int tmp=3-dvbdmxfeed->secbufp; + if (sec->secbufp < 3) { + int tmp = 3 - sec->secbufp; if (tmp>count) return -1; - memcpy(dvbdmxfeed->secbuf+dvbdmxfeed->secbufp, buf+p, tmp); - dvbdmxfeed->seclen=section_length(dvbdmxfeed->secbuf); - if (dvbdmxfeed->seclen>4096) + + sec->crc_val = ~0; + + demux->memcopy (feed, sec->secbuf + sec->secbufp, buf+p, tmp); + + sec->seclen = section_length(sec->secbuf); + + if (sec->seclen > 4096) return -1; } - rest=dvbdmxfeed->seclen-dvbdmxfeed->secbufp; - if (rest<0) + + rest = sec->seclen - sec->secbufp; + + if (rest < 0) return -1; - if (rest<=count) { // section completed in this TS packet - memcpy(dvbdmxfeed->secbuf+dvbdmxfeed->secbufp, buf+p, rest); - dvbdmxfeed->secbufp+=rest; - dvb_dmx_swfilter_section_feed(dvbdmxfeed); + + if (rest <= count) { // section completed in this TS packet + demux->memcopy (feed, sec->secbuf + sec->secbufp, buf+p, rest); + sec->secbufp += rest; + dvb_dmx_swfilter_section_feed(feed); } else { // section continues in following ts packet - memcpy(dvbdmxfeed->secbuf+dvbdmxfeed->secbufp, buf+p, count); - dvbdmxfeed->secbufp+=count; + demux->memcopy (feed, sec->secbuf + sec->secbufp, buf+p, count); + sec->secbufp += count; } - return 0; + + return 0; } -static inline void -dvb_dmx_swfilter_packet_type(struct dvb_demux_feed *dvbdmxfeed, const u8 *buf) + +static inline +void dvb_dmx_swfilter_packet_type(struct dvb_demux_feed *feed, const u8 *buf) { - switch(dvbdmxfeed->type) { - case DMX_TYPE_TS: - if (!dvbdmxfeed->feed.ts.is_filtering) - break; - if (dvbdmxfeed->ts_type & TS_PACKET) { - if (dvbdmxfeed->ts_type & TS_PAYLOAD_ONLY) - dvb_dmx_swfilter_payload(dvbdmxfeed, buf); - else - dvbdmxfeed->cb.ts((u8 *)buf, 188, 0, 0, - &dvbdmxfeed->feed.ts, DMX_OK); - } - if (dvbdmxfeed->ts_type & TS_DECODER) - if (dvbdmxfeed->demux->write_to_decoder) - dvbdmxfeed->demux-> - write_to_decoder(dvbdmxfeed, (u8 *)buf, 188); - break; - - case DMX_TYPE_SEC: - if (!dvbdmxfeed->feed.sec.is_filtering) - break; - if (dvb_dmx_swfilter_section_packet(dvbdmxfeed, buf)<0) - dvbdmxfeed->seclen=dvbdmxfeed->secbufp=0; - break; - - default: - break; - } -} - -void -dvb_dmx_swfilter_packet(struct dvb_demux *dvbdmx, const u8 *buf) -{ - struct dvb_demux_feed *dvbdmxfeed; - - if (!(dvbdmxfeed=dvbdmx->pid2feed[ts_pid(buf)])) - return; - dvb_dmx_swfilter_packet_type(dvbdmxfeed, buf); -} - -void -dvb_dmx_swfilter_packets(struct dvb_demux *dvbdmx, const u8 *buf, int count) -{ - struct dvb_demux_feed *dvbdmxfeed; - - spin_lock(&dvbdmx->lock); - if ((dvbdmxfeed=dvbdmx->pid2feed[0x2000])) - dvbdmxfeed->cb.ts((u8 *)buf, count*188, 0, 0, - &dvbdmxfeed->feed.ts, DMX_OK); - while (count) { - dvb_dmx_swfilter_packet(dvbdmx, buf); - count--; - buf+=188; - } - spin_unlock(&dvbdmx->lock); -} - -static inline void -dvb_dmx_swfilter(struct dvb_demux *dvbdmx, const u8 *buf, size_t count) -{ - int p=0,i, j; - - if ((i=dvbdmx->tsbufp)) { - if (count<(j=188-i)) { - memcpy(&dvbdmx->tsbuf[i], buf, count); - dvbdmx->tsbufp+=count; - return; - } - memcpy(&dvbdmx->tsbuf[i], buf, j); - dvb_dmx_swfilter_packet(dvbdmx, dvbdmx->tsbuf); - dvbdmx->tsbufp=0; - p+=j; - } - - while (p=188) { - dvb_dmx_swfilter_packet(dvbdmx, buf+p); - p+=188; - } else { - i=count-p; - memcpy(dvbdmx->tsbuf, buf+p, i); - dvbdmx->tsbufp=i; - return; - } - } else - p++; - } -} + switch(feed->type) { + case DMX_TYPE_TS: + if (!feed->feed.ts.is_filtering) + break; + if (feed->ts_type & TS_PACKET) { + if (feed->ts_type & TS_PAYLOAD_ONLY) + dvb_dmx_swfilter_payload(feed, buf); + else + feed->cb.ts(buf, 188, 0, 0, &feed->feed.ts, DMX_OK); + } + if (feed->ts_type & TS_DECODER) + if (feed->demux->write_to_decoder) + feed->demux->write_to_decoder(feed, buf, 188); + break; + case DMX_TYPE_SEC: + if (!feed->feed.sec.is_filtering) + break; + if (dvb_dmx_swfilter_section_packet(feed, buf) < 0) + feed->feed.sec.seclen = feed->feed.sec.secbufp=0; + break; + + default: + break; + } +} -/****************************************************************************** - ****************************************************************************** - * DVB DEMUX API LEVEL FUNCTIONS - ****************************************************************************** - ******************************************************************************/ -static struct dvb_demux_filter * -dvb_dmx_filter_alloc(struct dvb_demux *dvbdmx) +void dvb_dmx_swfilter_packet(struct dvb_demux *demux, const u8 *buf) { - int i; + struct dvb_demux_feed *feed; + struct list_head *pos, *head=&demux->feed_list; + u16 pid = ts_pid(buf); - for (i=0; ifilternum; i++) - if (dvbdmx->filter[i].state==DMX_STATE_FREE) - break; - if (i==dvbdmx->filternum) - return 0; - dvbdmx->filter[i].state=DMX_STATE_ALLOCATED; - return &dvbdmx->filter[i]; -} - -static struct dvb_demux_feed * -dvb_dmx_feed_alloc(struct dvb_demux *dvbdmx) -{ - int i; - - for (i=0; ifeednum; i++) - if (dvbdmx->feed[i].state==DMX_STATE_FREE) - break; - if (i==dvbdmx->feednum) - return 0; - dvbdmx->feed[i].state=DMX_STATE_ALLOCATED; - return &dvbdmx->feed[i]; + list_for_each(pos, head) { + feed = list_entry(pos, struct dvb_demux_feed, list_head); + if (feed->pid == pid) + dvb_dmx_swfilter_packet_type (feed, buf); + if (feed->pid == 0x2000) + feed->cb.ts(buf, 188, 0, 0, &feed->feed.ts, DMX_OK); + } } -/****************************************************************************** - * dmx_ts_feed API calls - ******************************************************************************/ +void dvb_dmx_swfilter_packets(struct dvb_demux *demux, const u8 *buf, size_t count) +{ + spin_lock(&demux->lock); -static int -dmx_pid_set(u16 pid, struct dvb_demux_feed *dvbdmxfeed) + while (count--) { + dvb_dmx_swfilter_packet(demux, buf); + buf += 188; + } + + spin_unlock(&demux->lock); +} + + +void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count) { - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - struct dvb_demux_feed **pid2feed=dvbdmx->pid2feed; + int p = 0,i, j; + + if ((i = demux->tsbufp)) { + if (count < (j=188-i)) { + memcpy(&demux->tsbuf[i], buf, count); + demux->tsbufp += count; + return; + } + memcpy(&demux->tsbuf[i], buf, j); + dvb_dmx_swfilter_packet(demux, demux->tsbuf); + demux->tsbufp = 0; + p += j; + } - if (pid>DMX_MAX_PID) - return -EINVAL; - if (dvbdmxfeed->pid!=0xffff) { - if (dvbdmxfeed->pid<=DMX_MAX_PID) - pid2feed[dvbdmxfeed->pid]=0; - dvbdmxfeed->pid=0xffff; - } - if (pid2feed[pid]) { - return -EBUSY; + while (p < count) { + if (buf[p] == 0x47) { + if (count-p >= 188) { + dvb_dmx_swfilter_packet(demux, buf+p); + p += 188; + } else { + i = count-p; + memcpy(demux->tsbuf, buf+p, i); + demux->tsbufp=i; + return; + } + } else + p++; } - pid2feed[pid]=dvbdmxfeed; - dvbdmxfeed->pid=pid; +} + + +static +struct dvb_demux_filter* dvb_dmx_filter_alloc(struct dvb_demux *demux) +{ + int i; + + for (i=0; ifilternum; i++) + if (demux->filter[i].state == DMX_STATE_FREE) + break; + + if (i == demux->filternum) + return NULL; + + demux->filter[i].state = DMX_STATE_ALLOCATED; + + return &demux->filter[i]; +} + +static +struct dvb_demux_feed* dvb_dmx_feed_alloc(struct dvb_demux *demux) +{ + int i; + + for (i=0; ifeednum; i++) + if (demux->feed[i].state == DMX_STATE_FREE) + break; + + if (i == demux->feednum) + return NULL; + + demux->feed[i].state = DMX_STATE_ALLOCATED; + + return &demux->feed[i]; +} + + +static +int dmx_pid_set (u16 pid, struct dvb_demux_feed *feed) +{ + struct dvb_demux *demux = feed->demux; + struct list_head *pos, *n, *head=&demux->feed_list; + + if (pid > DMX_MAX_PID) + return -EINVAL; + + if (pid == feed->pid) + return 0; + + if (feed->pid <= DMX_MAX_PID) + list_for_each_safe(pos, n, head) + if (DMX_FEED_ENTRY(pos)->pid == feed->pid) { + list_del(pos); + break; + } + + list_add(&feed->list_head, head); + feed->pid = pid; + return 0; } -static int -dmx_ts_feed_set(struct dmx_ts_feed_s* feed, - u16 pid, - int ts_type, - dmx_ts_pes_t pes_type, - size_t callback_length, - size_t circular_buffer_size, - int descramble, - struct timespec timeout - ) +static +int dmx_ts_feed_set (struct dmx_ts_feed_s* ts_feed, u16 pid, int ts_type, + dmx_ts_pes_t pes_type, size_t callback_length, + size_t circular_buffer_size, int descramble, + struct timespec timeout) { - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + struct dvb_demux_feed *feed = (struct dvb_demux_feed *) ts_feed; + struct dvb_demux *demux = feed->demux; int ret; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&demux->mutex)) return -ERESTARTSYS; if (ts_type & TS_DECODER) { - if (pes_type >= DMX_TS_PES_OTHER) { - up(&dvbdmx->mutex); - return -EINVAL; + if (pes_type >= DMX_TS_PES_OTHER) { + up(&demux->mutex); + return -EINVAL; } - if (dvbdmx->pesfilter[pes_type] && - (dvbdmx->pesfilter[pes_type]!=dvbdmxfeed)) { - up(&dvbdmx->mutex); - return -EINVAL; + + if (demux->pesfilter[pes_type] && + demux->pesfilter[pes_type] != feed) { + up(&demux->mutex); + return -EINVAL; } + if ((pes_type != DMX_TS_PES_PCR0) && (pes_type != DMX_TS_PES_PCR1) && (pes_type != DMX_TS_PES_PCR2) && (pes_type != DMX_TS_PES_PCR3)) { - if ((ret=dmx_pid_set(pid, dvbdmxfeed))<0) { - up(&dvbdmx->mutex); + if ((ret = dmx_pid_set(pid, feed))<0) { + up(&demux->mutex); return ret; - } else - dvbdmxfeed->pid=pid; - } - dvbdmx->pesfilter[pes_type]=dvbdmxfeed; - dvbdmx->pids[pes_type]=dvbdmxfeed->pid; - } else - if ((ret=dmx_pid_set(pid, dvbdmxfeed))<0) { - up(&dvbdmx->mutex); + } + } else + feed->pid = pid; + + demux->pesfilter[pes_type] = feed; + demux->pids[pes_type] = feed->pid; + } else { + if ((ret = dmx_pid_set(pid, feed))<0) { + up(&demux->mutex); return ret; } + } - dvbdmxfeed->buffer_size=circular_buffer_size; - dvbdmxfeed->descramble=descramble; - dvbdmxfeed->timeout=timeout; - dvbdmxfeed->cb_length=callback_length; - dvbdmxfeed->ts_type=ts_type; - dvbdmxfeed->pes_type=pes_type; - - if (dvbdmxfeed->descramble) { - up(&dvbdmx->mutex); - return -ENOSYS; + feed->buffer_size = circular_buffer_size; + feed->descramble = descramble; + feed->timeout = timeout; + feed->cb_length = callback_length; + feed->ts_type = ts_type; + feed->pes_type = pes_type; + + if (feed->descramble) { + up(&demux->mutex); + return -ENOSYS; } - if (dvbdmxfeed->buffer_size) { + if (feed->buffer_size) { #ifdef NOBUFS - dvbdmxfeed->buffer=0; + feed->buffer=0; #else - dvbdmxfeed->buffer=vmalloc(dvbdmxfeed->buffer_size); - if (!dvbdmxfeed->buffer) { - up(&dvbdmx->mutex); + feed->buffer = vmalloc(feed->buffer_size); + if (!feed->buffer) { + up(&demux->mutex); return -ENOMEM; } #endif - } - dvbdmxfeed->state=DMX_STATE_READY; - up(&dvbdmx->mutex); - return 0; + } + + feed->state = DMX_STATE_READY; + up(&demux->mutex); + + return 0; } -static int -dmx_ts_feed_start_filtering(struct dmx_ts_feed_s* feed) + +static +int dmx_ts_feed_start_filtering(struct dmx_ts_feed_s* ts_feed) { - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + struct dvb_demux_feed *feed = (struct dvb_demux_feed *) ts_feed; + struct dvb_demux *demux = feed->demux; int ret; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&demux->mutex)) return -ERESTARTSYS; - if (dvbdmxfeed->state!=DMX_STATE_READY || - dvbdmxfeed->type!=DMX_TYPE_TS) { - up(&dvbdmx->mutex); - return -EINVAL; + if (feed->state != DMX_STATE_READY || feed->type != DMX_TYPE_TS) { + up(&demux->mutex); + return -EINVAL; } - if (!dvbdmx->start_feed) { - up(&dvbdmx->mutex); - return -1; + + if (!demux->start_feed) { + up(&demux->mutex); + return -ENODEV; } - ret=dvbdmx->start_feed(dvbdmxfeed); - if (ret<0) { - up(&dvbdmx->mutex); + + if ((ret = demux->start_feed(feed)) < 0) { + up(&demux->mutex); return ret; } - spin_lock_irq(&dvbdmx->lock); - feed->is_filtering=1; - dvbdmxfeed->state=DMX_STATE_GO; - spin_unlock_irq(&dvbdmx->lock); - up(&dvbdmx->mutex); + + spin_lock_irq(&demux->lock); + ts_feed->is_filtering = 1; + feed->state = DMX_STATE_GO; + spin_unlock_irq(&demux->lock); + up(&demux->mutex); + return 0; } -static int -dmx_ts_feed_stop_filtering(struct dmx_ts_feed_s* feed) +static +int dmx_ts_feed_stop_filtering(struct dmx_ts_feed_s* ts_feed) { - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + struct dvb_demux_feed *feed = (struct dvb_demux_feed *) ts_feed; + struct dvb_demux *demux = feed->demux; int ret; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&demux->mutex)) return -ERESTARTSYS; - if (dvbdmxfeed->statemutex); - return -EINVAL; + if (feed->statemutex); + return -EINVAL; } - if (!dvbdmx->stop_feed) { - up(&dvbdmx->mutex); - return -1; + + if (!demux->stop_feed) { + up(&demux->mutex); + return -ENODEV; } - ret=dvbdmx->stop_feed(dvbdmxfeed); - spin_lock_irq(&dvbdmx->lock); - feed->is_filtering=0; - dvbdmxfeed->state=DMX_STATE_ALLOCATED; - spin_unlock_irq(&dvbdmx->lock); - up(&dvbdmx->mutex); - return ret; + ret = demux->stop_feed(feed); + + spin_lock_irq(&demux->lock); + ts_feed->is_filtering = 0; + feed->state = DMX_STATE_ALLOCATED; + spin_unlock_irq(&demux->lock); + up(&demux->mutex); + + return ret; } -static int dvbdmx_allocate_ts_feed(dmx_demux_t *demux, - dmx_ts_feed_t **feed, - dmx_ts_cb callback) +static +int dvbdmx_allocate_ts_feed (dmx_demux_t *dmx, dmx_ts_feed_t **ts_feed, + dmx_ts_cb callback) { - struct dvb_demux *dvbdmx=(struct dvb_demux *) demux; - struct dvb_demux_feed *dvbdmxfeed; + struct dvb_demux *demux = (struct dvb_demux *) dmx; + struct dvb_demux_feed *feed; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&demux->mutex)) return -ERESTARTSYS; - if (!(dvbdmxfeed=dvb_dmx_feed_alloc(dvbdmx))) { - up(&dvbdmx->mutex); - return -EBUSY; + if (!(feed = dvb_dmx_feed_alloc(demux))) { + up(&demux->mutex); + return -EBUSY; } - dvbdmxfeed->type=DMX_TYPE_TS; - dvbdmxfeed->cb.ts=callback; - dvbdmxfeed->demux=dvbdmx; - dvbdmxfeed->pid=0xffff; - dvbdmxfeed->peslen=0xfffa; - dvbdmxfeed->buffer=0; - - (*feed)=&dvbdmxfeed->feed.ts; - (*feed)->is_filtering=0; - (*feed)->parent=demux; - (*feed)->priv=0; - (*feed)->set=dmx_ts_feed_set; - (*feed)->start_filtering=dmx_ts_feed_start_filtering; - (*feed)->stop_filtering=dmx_ts_feed_stop_filtering; + feed->type = DMX_TYPE_TS; + feed->cb.ts = callback; + feed->demux = demux; + feed->pid = 0xffff; + feed->peslen = 0xfffa; + feed->buffer = 0; + + (*ts_feed) = &feed->feed.ts; + (*ts_feed)->is_filtering = 0; + (*ts_feed)->parent = dmx; + (*ts_feed)->priv = 0; + (*ts_feed)->set = dmx_ts_feed_set; + (*ts_feed)->start_filtering = dmx_ts_feed_start_filtering; + (*ts_feed)->stop_filtering = dmx_ts_feed_stop_filtering; + + + if (!(feed->filter = dvb_dmx_filter_alloc(demux))) { + feed->state = DMX_STATE_FREE; + up(&demux->mutex); + return -EBUSY; + } - if (!(dvbdmxfeed->filter=dvb_dmx_filter_alloc(dvbdmx))) { - dvbdmxfeed->state=DMX_STATE_FREE; - up(&dvbdmx->mutex); - return -EBUSY; - } + feed->filter->type = DMX_TYPE_TS; + feed->filter->feed = feed; + feed->filter->state = DMX_STATE_READY; + + up(&demux->mutex); - dvbdmxfeed->filter->type=DMX_TYPE_TS; - dvbdmxfeed->filter->feed=dvbdmxfeed; - dvbdmxfeed->filter->state=DMX_STATE_READY; - - up(&dvbdmx->mutex); - return 0; + return 0; } -static int dvbdmx_release_ts_feed(dmx_demux_t *demux, dmx_ts_feed_t *feed) +static +int dvbdmx_release_ts_feed(dmx_demux_t *dmx, dmx_ts_feed_t *ts_feed) { - struct dvb_demux *dvbdmx=(struct dvb_demux *) demux; - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; + struct dvb_demux *demux = (struct dvb_demux *) dmx; + struct dvb_demux_feed *feed = (struct dvb_demux_feed *) ts_feed; + struct list_head *pos, *n, *head=&demux->feed_list; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&demux->mutex)) return -ERESTARTSYS; - if (dvbdmxfeed->state==DMX_STATE_FREE) { - up(&dvbdmx->mutex); - return -EINVAL; + if (feed->state == DMX_STATE_FREE) { + up(&demux->mutex); + return -EINVAL; } + #ifndef NOBUFS - if (dvbdmxfeed->buffer) { - vfree(dvbdmxfeed->buffer); - dvbdmxfeed->buffer=0; - } + if (feed->buffer) { + vfree(feed->buffer); + feed->buffer=0; + } #endif - dvbdmxfeed->state=DMX_STATE_FREE; - dvbdmxfeed->filter->state=DMX_STATE_FREE; - if (dvbdmxfeed->pid<=DMX_MAX_PID) { - dvbdmxfeed->demux->pid2feed[dvbdmxfeed->pid]=0; - dvbdmxfeed->pid=0xffff; - } - up(&dvbdmx->mutex); - return 0; + feed->state = DMX_STATE_FREE; + feed->filter->state = DMX_STATE_FREE; + + if (feed->pid <= DMX_MAX_PID) { + list_for_each_safe(pos, n, head) + if (DMX_FEED_ENTRY(pos)->pid == feed->pid) { + list_del(pos); + break; + } + feed->pid = 0xffff; + } + + if (feed->ts_type & TS_DECODER) + demux->pesfilter[feed->pes_type] = NULL; + + up(&demux->mutex); + return 0; } @@ -713,92 +755,92 @@ static int dmx_section_feed_allocate_filter(struct dmx_section_feed_s* feed, - dmx_section_filter_t** filter) + dmx_section_filter_t** filter) { - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdemux=dvbdmxfeed->demux; - struct dvb_demux_filter *dvbdmxfilter; + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; + struct dvb_demux *dvbdemux=dvbdmxfeed->demux; + struct dvb_demux_filter *dvbdmxfilter; if (down_interruptible (&dvbdemux->mutex)) return -ERESTARTSYS; - dvbdmxfilter=dvb_dmx_filter_alloc(dvbdemux); - if (!dvbdmxfilter) { + dvbdmxfilter=dvb_dmx_filter_alloc(dvbdemux); + if (!dvbdmxfilter) { up(&dvbdemux->mutex); - return -ENOSPC; + return -ENOSPC; } spin_lock_irq(&dvbdemux->lock); - *filter=&dvbdmxfilter->filter; - (*filter)->parent=feed; - (*filter)->priv=0; - dvbdmxfilter->feed=dvbdmxfeed; - dvbdmxfilter->type=DMX_TYPE_SEC; - dvbdmxfilter->state=DMX_STATE_READY; + *filter=&dvbdmxfilter->filter; + (*filter)->parent=feed; + (*filter)->priv=0; + dvbdmxfilter->feed=dvbdmxfeed; + dvbdmxfilter->type=DMX_TYPE_SEC; + dvbdmxfilter->state=DMX_STATE_READY; - dvbdmxfilter->next=dvbdmxfeed->filter; - dvbdmxfeed->filter=dvbdmxfilter; + dvbdmxfilter->next=dvbdmxfeed->filter; + dvbdmxfeed->filter=dvbdmxfilter; spin_unlock_irq(&dvbdemux->lock); - up(&dvbdemux->mutex); - return 0; + up(&dvbdemux->mutex); + return 0; } static int dmx_section_feed_set(struct dmx_section_feed_s* feed, - u16 pid, size_t circular_buffer_size, - int descramble, int check_crc) + u16 pid, size_t circular_buffer_size, + int descramble, int check_crc) { - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; + struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + struct list_head *pos, *n, *head=&dvbdmx->feed_list; - if (pid>0x1fff) - return -EINVAL; + if (pid>0x1fff) + return -EINVAL; if (down_interruptible (&dvbdmx->mutex)) return -ERESTARTSYS; - if (dvbdmxfeed->pid!=0xffff) { - dvbdmx->pid2feed[dvbdmxfeed->pid]=0; - dvbdmxfeed->pid=0xffff; - } - if (dvbdmx->pid2feed[pid]) { - up(&dvbdmx->mutex); - return -EBUSY; - } - dvbdmx->pid2feed[pid]=dvbdmxfeed; - dvbdmxfeed->pid=pid; - - dvbdmxfeed->buffer_size=circular_buffer_size; - dvbdmxfeed->descramble=descramble; - if (dvbdmxfeed->descramble) { + if (dvbdmxfeed->pid <= DMX_MAX_PID) + list_for_each_safe(pos, n, head) + if (DMX_FEED_ENTRY(pos)->pid == dvbdmxfeed->pid) { + list_del(pos); + break; + } + + list_add(&dvbdmxfeed->list_head, head); + dvbdmxfeed->pid=pid; + + dvbdmxfeed->buffer_size=circular_buffer_size; + dvbdmxfeed->descramble=descramble; + if (dvbdmxfeed->descramble) { up(&dvbdmx->mutex); - return -ENOSYS; + return -ENOSYS; } - dvbdmxfeed->check_crc=check_crc; + dvbdmxfeed->feed.sec.check_crc=check_crc; #ifdef NOBUFS - dvbdmxfeed->buffer=0; + dvbdmxfeed->buffer=0; #else - dvbdmxfeed->buffer=vmalloc(dvbdmxfeed->buffer_size); - if (!dvbdmxfeed->buffer) { + dvbdmxfeed->buffer=vmalloc(dvbdmxfeed->buffer_size); + if (!dvbdmxfeed->buffer) { up(&dvbdmx->mutex); return -ENOMEM; } #endif - dvbdmxfeed->state=DMX_STATE_READY; - up(&dvbdmx->mutex); - return 0; + dvbdmxfeed->state=DMX_STATE_READY; + up(&dvbdmx->mutex); + return 0; } static void prepare_secfilters(struct dvb_demux_feed *dvbdmxfeed) { int i; - dmx_section_filter_t *sf; + dmx_section_filter_t *sf; struct dvb_demux_filter *f; u8 mask, mode, doneq; if (!(f=dvbdmxfeed->filter)) - return; - do { + return; + do { sf=&f->filter; doneq=0; for (i=0; idemux; + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; + struct dvb_demux *dvbdmx=dvbdmxfeed->demux; int ret; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&dvbdmx->mutex)) return -ERESTARTSYS; - if (feed->is_filtering) { + if (feed->is_filtering) { up(&dvbdmx->mutex); return -EBUSY; } - if (!dvbdmxfeed->filter) { + if (!dvbdmxfeed->filter) { up(&dvbdmx->mutex); - return -EINVAL; + return -EINVAL; } - dvbdmxfeed->secbufp=0; - dvbdmxfeed->seclen=0; - - if (!dvbdmx->start_feed) { + dvbdmxfeed->feed.sec.secbufp=0; + dvbdmxfeed->feed.sec.seclen=0; + + if (!dvbdmx->start_feed) { up(&dvbdmx->mutex); - return -1; + return -ENODEV; } + prepare_secfilters(dvbdmxfeed); - ret=dvbdmx->start_feed(dvbdmxfeed); - if (ret<0) { + + if ((ret = dvbdmx->start_feed(dvbdmxfeed)) < 0) { up(&dvbdmx->mutex); return ret; } + spin_lock_irq(&dvbdmx->lock); - feed->is_filtering=1; - dvbdmxfeed->state=DMX_STATE_GO; + feed->is_filtering=1; + dvbdmxfeed->state=DMX_STATE_GO; spin_unlock_irq(&dvbdmx->lock); - up(&dvbdmx->mutex); + up(&dvbdmx->mutex); return 0; } static int dmx_section_feed_stop_filtering(struct dmx_section_feed_s* feed) { - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - int ret; + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; + struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + int ret; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&dvbdmx->mutex)) return -ERESTARTSYS; - if (!dvbdmx->stop_feed) { + if (!dvbdmx->stop_feed) { up(&dvbdmx->mutex); - return -1; + return -ENODEV; } ret=dvbdmx->stop_feed(dvbdmxfeed); spin_lock_irq(&dvbdmx->lock); - dvbdmxfeed->state=DMX_STATE_READY; - feed->is_filtering=0; + dvbdmxfeed->state=DMX_STATE_READY; + feed->is_filtering=0; spin_unlock_irq(&dvbdmx->lock); - up(&dvbdmx->mutex); + up(&dvbdmx->mutex); return ret; } static int dmx_section_feed_release_filter(dmx_section_feed_t *feed, - dmx_section_filter_t* filter) + dmx_section_filter_t* filter) { - struct dvb_demux_filter *dvbdmxfilter=(struct dvb_demux_filter *) filter, *f; - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + struct dvb_demux_filter *dvbdmxfilter=(struct dvb_demux_filter *) filter, *f; + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; + struct dvb_demux *dvbdmx=dvbdmxfeed->demux; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&dvbdmx->mutex)) return -ERESTARTSYS; - if (dvbdmxfilter->feed!=dvbdmxfeed) { + if (dvbdmxfilter->feed!=dvbdmxfeed) { up(&dvbdmx->mutex); - return -EINVAL; + return -EINVAL; } - if (feed->is_filtering) - feed->stop_filtering(feed); + if (feed->is_filtering) + feed->stop_filtering(feed); spin_lock_irq(&dvbdmx->lock); - f=dvbdmxfeed->filter; - if (f==dvbdmxfilter) - dvbdmxfeed->filter=dvbdmxfilter->next; - else { - while(f->next!=dvbdmxfilter) - f=f->next; - f->next=f->next->next; - } - dvbdmxfilter->state=DMX_STATE_FREE; + f=dvbdmxfeed->filter; + if (f==dvbdmxfilter) + dvbdmxfeed->filter=dvbdmxfilter->next; + else { + while(f->next!=dvbdmxfilter) + f=f->next; + f->next=f->next->next; + } + dvbdmxfilter->state=DMX_STATE_FREE; spin_unlock_irq(&dvbdmx->lock); - up(&dvbdmx->mutex); - return 0; + up(&dvbdmx->mutex); + return 0; } static int dvbdmx_allocate_section_feed(dmx_demux_t *demux, - dmx_section_feed_t **feed, - dmx_section_cb callback) + dmx_section_feed_t **feed, + dmx_section_cb callback) { - struct dvb_demux *dvbdmx=(struct dvb_demux *) demux; - struct dvb_demux_feed *dvbdmxfeed; + struct dvb_demux *dvbdmx=(struct dvb_demux *) demux; + struct dvb_demux_feed *dvbdmxfeed; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&dvbdmx->mutex)) return -ERESTARTSYS; - if (!(dvbdmxfeed=dvb_dmx_feed_alloc(dvbdmx))) { + if (!(dvbdmxfeed=dvb_dmx_feed_alloc(dvbdmx))) { up(&dvbdmx->mutex); - return -EBUSY; + return -EBUSY; } - dvbdmxfeed->type=DMX_TYPE_SEC; - dvbdmxfeed->cb.sec=callback; - dvbdmxfeed->demux=dvbdmx; - dvbdmxfeed->pid=0xffff; - dvbdmxfeed->secbufp=0; - dvbdmxfeed->filter=0; - dvbdmxfeed->buffer=0; - - (*feed)=&dvbdmxfeed->feed.sec; - (*feed)->is_filtering=0; - (*feed)->parent=demux; - (*feed)->priv=0; - (*feed)->set=dmx_section_feed_set; - (*feed)->allocate_filter=dmx_section_feed_allocate_filter; - (*feed)->release_filter=dmx_section_feed_release_filter; - (*feed)->start_filtering=dmx_section_feed_start_filtering; - (*feed)->stop_filtering=dmx_section_feed_stop_filtering; + dvbdmxfeed->type=DMX_TYPE_SEC; + dvbdmxfeed->cb.sec=callback; + dvbdmxfeed->demux=dvbdmx; + dvbdmxfeed->pid=0xffff; + dvbdmxfeed->feed.sec.secbufp=0; + dvbdmxfeed->filter=0; + dvbdmxfeed->buffer=0; + + (*feed)=&dvbdmxfeed->feed.sec; + (*feed)->is_filtering=0; + (*feed)->parent=demux; + (*feed)->priv=0; + (*feed)->set=dmx_section_feed_set; + (*feed)->allocate_filter=dmx_section_feed_allocate_filter; + (*feed)->release_filter=dmx_section_feed_release_filter; + (*feed)->start_filtering=dmx_section_feed_start_filtering; + (*feed)->stop_filtering=dmx_section_feed_stop_filtering; - up(&dvbdmx->mutex); - return 0; + up(&dvbdmx->mutex); + return 0; } static int dvbdmx_release_section_feed(dmx_demux_t *demux, - dmx_section_feed_t *feed) + dmx_section_feed_t *feed) { - struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; - struct dvb_demux *dvbdmx=(struct dvb_demux *) demux; + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) feed; + struct dvb_demux *dvbdmx=(struct dvb_demux *) demux; + struct list_head *pos, *n, *head=&dvbdmx->feed_list; - if (down_interruptible (&dvbdmx->mutex)) + if (down_interruptible (&dvbdmx->mutex)) return -ERESTARTSYS; - if (dvbdmxfeed->state==DMX_STATE_FREE) { + if (dvbdmxfeed->state==DMX_STATE_FREE) { up(&dvbdmx->mutex); - return -EINVAL; + return -EINVAL; } #ifndef NOBUFS - if (dvbdmxfeed->buffer) { - vfree(dvbdmxfeed->buffer); - dvbdmxfeed->buffer=0; - } + if (dvbdmxfeed->buffer) { + vfree(dvbdmxfeed->buffer); + dvbdmxfeed->buffer=0; + } #endif - dvbdmxfeed->state=DMX_STATE_FREE; - dvbdmxfeed->demux->pid2feed[dvbdmxfeed->pid]=0; - if (dvbdmxfeed->pid!=0xffff) - dvbdmxfeed->demux->pid2feed[dvbdmxfeed->pid]=0; - up(&dvbdmx->mutex); - return 0; + dvbdmxfeed->state=DMX_STATE_FREE; + + if (dvbdmxfeed->pid <= DMX_MAX_PID) { + list_for_each_safe(pos, n, head) + if (DMX_FEED_ENTRY(pos)->pid == dvbdmxfeed->pid) { + list_del(pos); + break; + } + dvbdmxfeed->pid = 0xffff; + } + + up(&dvbdmx->mutex); + return 0; } @@ -977,72 +1029,72 @@ static int dvbdmx_open(dmx_demux_t *demux) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - if (dvbdemux->users>=MAX_DVB_DEMUX_USERS) - return -EUSERS; - dvbdemux->users++; - return 0; + if (dvbdemux->users>=MAX_DVB_DEMUX_USERS) + return -EUSERS; + dvbdemux->users++; + return 0; } static int dvbdmx_close(struct dmx_demux_s *demux) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - if (dvbdemux->users==0) - return -ENODEV; - dvbdemux->users--; - //FIXME: release any unneeded resources if users==0 - return 0; + if (dvbdemux->users==0) + return -ENODEV; + dvbdemux->users--; + //FIXME: release any unneeded resources if users==0 + return 0; } static int dvbdmx_write(dmx_demux_t *demux, const char *buf, size_t count) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - if ((!demux->frontend) || - (demux->frontend->source!=DMX_MEMORY_FE)) - return -EINVAL; + if ((!demux->frontend) || + (demux->frontend->source!=DMX_MEMORY_FE)) + return -EINVAL; - if (down_interruptible (&dvbdemux->mutex)) + if (down_interruptible (&dvbdemux->mutex)) return -ERESTARTSYS; - dvb_dmx_swfilter(dvbdemux, buf, count); - up(&dvbdemux->mutex); - return count; + dvb_dmx_swfilter(dvbdemux, buf, count); + up(&dvbdemux->mutex); + return count; } static int dvbdmx_add_frontend(dmx_demux_t *demux, - dmx_frontend_t *frontend) + dmx_frontend_t *frontend) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - struct list_head *pos, *head=&dvbdemux->frontend_list; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct list_head *pos, *head=&dvbdemux->frontend_list; if (!(frontend->id && frontend->vendor && frontend->model)) - return -EINVAL; + return -EINVAL; list_for_each(pos, head) { - if (!strcmp(DMX_FE_ENTRY(pos)->id, frontend->id)) - return -EEXIST; + if (!strcmp(DMX_FE_ENTRY(pos)->id, frontend->id)) + return -EEXIST; } list_add(&(frontend->connectivity_list), head); - return 0; + return 0; } static int dvbdmx_remove_frontend(dmx_demux_t *demux, - dmx_frontend_t *frontend) + dmx_frontend_t *frontend) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - struct list_head *pos, *n, *head=&dvbdemux->frontend_list; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct list_head *pos, *n, *head=&dvbdemux->frontend_list; list_for_each_safe (pos, n, head) { - if (DMX_FE_ENTRY(pos)==frontend) - { - list_del(pos); + if (DMX_FE_ENTRY(pos)==frontend) + { + list_del(pos); return 0; } } @@ -1052,123 +1104,129 @@ static struct list_head * dvbdmx_get_frontends(dmx_demux_t *demux) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - if (list_empty(&dvbdemux->frontend_list)) - return NULL; - return &dvbdemux->frontend_list; + if (list_empty(&dvbdemux->frontend_list)) + return NULL; + return &dvbdemux->frontend_list; } static int dvbdmx_connect_frontend(dmx_demux_t *demux, - dmx_frontend_t *frontend) + dmx_frontend_t *frontend) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - if (demux->frontend) - return -EINVAL; - - if (down_interruptible (&dvbdemux->mutex)) + if (demux->frontend) + return -EINVAL; + + if (down_interruptible (&dvbdemux->mutex)) return -ERESTARTSYS; - demux->frontend=frontend; - up(&dvbdemux->mutex); - return 0; + demux->frontend=frontend; + up(&dvbdemux->mutex); + return 0; } static int dvbdmx_disconnect_frontend(dmx_demux_t *demux) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - if (down_interruptible (&dvbdemux->mutex)) + if (down_interruptible (&dvbdemux->mutex)) return -ERESTARTSYS; - demux->frontend=NULL; - up(&dvbdemux->mutex); - return 0; + demux->frontend=NULL; + up(&dvbdemux->mutex); + return 0; } static int dvbdmx_get_pes_pids(dmx_demux_t *demux, u16 *pids) { - struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; + struct dvb_demux *dvbdemux=(struct dvb_demux *) demux; - memcpy(pids, dvbdemux->pids, 5*sizeof(u16)); - return 0; + memcpy(pids, dvbdemux->pids, 5*sizeof(u16)); + return 0; } int dvb_dmx_init(struct dvb_demux *dvbdemux) { - int i; - dmx_demux_t *dmx=&dvbdemux->dmx; + int i; + dmx_demux_t *dmx=&dvbdemux->dmx; - dvbdemux->users=0; + dvbdemux->users=0; dvbdemux->filter=vmalloc(dvbdemux->filternum*sizeof(struct dvb_demux_filter)); if (!dvbdemux->filter) - return -ENOMEM; + return -ENOMEM; dvbdemux->feed=vmalloc(dvbdemux->feednum*sizeof(struct dvb_demux_feed)); if (!dvbdemux->feed) { - vfree(dvbdemux->filter); - return -ENOMEM; + vfree(dvbdemux->filter); + return -ENOMEM; } - for (i=0; ifilternum; i++) { - dvbdemux->filter[i].state=DMX_STATE_FREE; - dvbdemux->filter[i].index=i; - } - for (i=0; ifeednum; i++) - dvbdemux->feed[i].state=DMX_STATE_FREE; - dvbdemux->frontend_list.next= - dvbdemux->frontend_list.prev= - &dvbdemux->frontend_list; - for (i=0; ipesfilter[i]=NULL; - dvbdemux->pids[i]=0xffff; - } - dvbdemux->playing=dvbdemux->recording=0; - memset(dvbdemux->pid2feed, 0, (DMX_MAX_PID+1)*sizeof(struct dvb_demux_feed *)); - dvbdemux->tsbufp=0; - - dmx->frontend=0; - dmx->reg_list.next=dmx->reg_list.prev=&dmx->reg_list; - dmx->priv=(void *) dvbdemux; - //dmx->users=0; // reset in dmx_register_demux() - dmx->open=dvbdmx_open; - dmx->close=dvbdmx_close; - dmx->write=dvbdmx_write; - dmx->allocate_ts_feed=dvbdmx_allocate_ts_feed; - dmx->release_ts_feed=dvbdmx_release_ts_feed; - dmx->allocate_section_feed=dvbdmx_allocate_section_feed; - dmx->release_section_feed=dvbdmx_release_section_feed; - - dmx->descramble_mac_address=NULL; - dmx->descramble_section_payload=NULL; - - dmx->add_frontend=dvbdmx_add_frontend; - dmx->remove_frontend=dvbdmx_remove_frontend; - dmx->get_frontends=dvbdmx_get_frontends; - dmx->connect_frontend=dvbdmx_connect_frontend; - dmx->disconnect_frontend=dvbdmx_disconnect_frontend; - dmx->get_pes_pids=dvbdmx_get_pes_pids; - sema_init(&dvbdemux->mutex, 1); + for (i=0; ifilternum; i++) { + dvbdemux->filter[i].state=DMX_STATE_FREE; + dvbdemux->filter[i].index=i; + } + for (i=0; ifeednum; i++) + dvbdemux->feed[i].state=DMX_STATE_FREE; + dvbdemux->frontend_list.next= + dvbdemux->frontend_list.prev= + &dvbdemux->frontend_list; + for (i=0; ipesfilter[i]=NULL; + dvbdemux->pids[i]=0xffff; + } + dvbdemux->playing=dvbdemux->recording=0; + INIT_LIST_HEAD(&dvbdemux->feed_list); + dvbdemux->tsbufp=0; + + if (!dvbdemux->check_crc32) + dvbdemux->check_crc32 = dvb_dmx_crc32; + + if (!dvbdemux->memcopy) + dvbdemux->memcopy = dvb_dmx_memcopy; + + dmx->frontend=0; + dmx->reg_list.next=dmx->reg_list.prev=&dmx->reg_list; + dmx->priv=(void *) dvbdemux; + //dmx->users=0; // reset in dmx_register_demux() + dmx->open=dvbdmx_open; + dmx->close=dvbdmx_close; + dmx->write=dvbdmx_write; + dmx->allocate_ts_feed=dvbdmx_allocate_ts_feed; + dmx->release_ts_feed=dvbdmx_release_ts_feed; + dmx->allocate_section_feed=dvbdmx_allocate_section_feed; + dmx->release_section_feed=dvbdmx_release_section_feed; + + dmx->descramble_mac_address=NULL; + dmx->descramble_section_payload=NULL; + + dmx->add_frontend=dvbdmx_add_frontend; + dmx->remove_frontend=dvbdmx_remove_frontend; + dmx->get_frontends=dvbdmx_get_frontends; + dmx->connect_frontend=dvbdmx_connect_frontend; + dmx->disconnect_frontend=dvbdmx_disconnect_frontend; + dmx->get_pes_pids=dvbdmx_get_pes_pids; + sema_init(&dvbdemux->mutex, 1); spin_lock_init(&dvbdemux->lock); - if (dmx_register_demux(dmx)<0) - return -1; + if (dmx_register_demux(dmx)<0) + return -1; - return 0; + return 0; } int dvb_dmx_release(struct dvb_demux *dvbdemux) { - dmx_demux_t *dmx=&dvbdemux->dmx; + dmx_demux_t *dmx=&dvbdemux->dmx; - dmx_unregister_demux(dmx); + dmx_unregister_demux(dmx); if (dvbdemux->filter) - vfree(dvbdemux->filter); + vfree(dvbdemux->filter); if (dvbdemux->feed) - vfree(dvbdemux->feed); - return 0; + vfree(dvbdemux->feed); + return 0; } #if 0 diff -Nru a/drivers/media/dvb/dvb-core/dvb_demux.h b/drivers/media/dvb/dvb-core/dvb_demux.h --- a/drivers/media/dvb/dvb-core/dvb_demux.h Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_demux.h Mon Apr 7 13:17:58 2003 @@ -25,6 +25,9 @@ #ifndef _DVB_DEMUX_H_ #define _DVB_DEMUX_H_ +#include +#include + #include "demux.h" #define DMX_TYPE_TS 0 @@ -59,6 +62,8 @@ }; +#define DMX_FEED_ENTRY(pos) list_entry(pos, struct dvb_demux_feed, list_head) + struct dvb_demux_feed { union { dmx_ts_feed_t ts; @@ -71,13 +76,13 @@ } cb; struct dvb_demux *demux; + void *priv; int type; int state; u16 pid; u8 *buffer; int buffer_size; int descramble; - int check_crc; struct timespec timeout; struct dvb_demux_filter *filter; @@ -86,12 +91,11 @@ int ts_type; dmx_ts_pes_t pes_type; - u8 secbuf[4096]; - int secbufp; - int seclen; int cc; u16 peslen; + + struct list_head list_head; }; struct dvb_demux { @@ -99,10 +103,14 @@ void *priv; int filternum; int feednum; - int (*start_feed)(struct dvb_demux_feed *); - int (*stop_feed)(struct dvb_demux_feed *); - int (*write_to_decoder)(struct dvb_demux_feed *, u8 *, size_t); - + int (*start_feed) (struct dvb_demux_feed *feed); + int (*stop_feed) (struct dvb_demux_feed *feed); + int (*write_to_decoder) (struct dvb_demux_feed *feed, + const u8 *buf, size_t len); + u32 (*check_crc32) (struct dvb_demux_feed *feed, + const u8 *buf, size_t len); + void (*memcopy) (struct dvb_demux_feed *feed, u8 *dst, + const u8 *src, size_t len); int users; #define MAX_DVB_DEMUX_USERS 10 @@ -117,7 +125,7 @@ int recording; #define DMX_MAX_PID 0x2000 - struct dvb_demux_feed *pid2feed[DMX_MAX_PID+1]; + struct list_head feed_list; u8 tsbuf[188]; int tsbufp; @@ -129,6 +137,7 @@ int dvb_dmx_init(struct dvb_demux *dvbdemux); int dvb_dmx_release(struct dvb_demux *dvbdemux); void dvb_dmx_swfilter_packet(struct dvb_demux *dvbdmx, const u8 *buf); -void dvb_dmx_swfilter_packets(struct dvb_demux *dvbdmx, const u8 *buf, int count); +void dvb_dmx_swfilter_packets(struct dvb_demux *dvbdmx, const u8 *buf, size_t count); +void dvb_dmx_swfilter(struct dvb_demux *demux, const u8 *buf, size_t count); #endif /* _DVB_DEMUX_H_ */ diff -Nru a/drivers/media/dvb/dvb-core/dvb_filter.c b/drivers/media/dvb/dvb-core/dvb_filter.c --- a/drivers/media/dvb/dvb-core/dvb_filter.c Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_filter.c Mon Apr 7 13:17:58 2003 @@ -1,5 +1,4 @@ #include -#include #include "dvb_filter.h" unsigned int bitrates[3][16] = @@ -52,10 +51,10 @@ if (buf[1]&PAY_START) { if (p->plength == MMAX_PLENGTH-6 && p->found>6){ p->plength = p->found-6; - p->found = 0; + p->found = 0; send_ipack(p); dvb_filter_ipack_reset(p); - } + } } if (buf[3] & ADAPT_FIELD) { // adaptation field? off = buf[4] + 1; @@ -71,12 +70,12 @@ int read_picture_header(uint8_t *headr, mpg_picture *pic, int field, int pr) { uint8_t pct; - + if (pr) printk( "Pic header: "); pic->temporal_reference[field] = (( headr[0] << 2 ) | (headr[1] & 0x03) )& 0x03ff; if (pr) printk( " temp ref: 0x%04x", pic->temporal_reference[field]); - + pct = ( headr[1] >> 2 ) & 0x07; pic->picture_coding_type[field] = pct; if (pr) { @@ -90,26 +89,26 @@ case P_FRAME: printk( " P-FRAME"); break; - } - } - + } + } + pic->vinfo.vbv_delay = (( headr[1] >> 5 ) | ( headr[2] << 3) | ( (headr[3] & 0x1F) << 11) ) & 0xffff; - + if (pr) printk( " vbv delay: 0x%04x", pic->vinfo.vbv_delay); - + pic->picture_header_parameter = ( headr[3] & 0xe0 ) | ((headr[4] & 0x80) >> 3); if ( pct == B_FRAME ){ pic->picture_header_parameter |= ( headr[4] >> 3 ) & 0x0f; - } + } if (pr) printk( " pic head param: 0x%x", pic->picture_header_parameter); return pct; -} +} #endif #if 0 @@ -130,14 +129,14 @@ pic->closed_gop = 1; } else { pic->closed_gop = 0; - } + } if (pr) printk("closed: %d", pic->closed_gop); if ( ( headr[3] & 0x20 ) != 0 ){ pic->broken_link = 1; - } else { + } else { pic->broken_link = 0; - } + } if (pr) printk(" broken: %d\n", pic->broken_link); return 0; @@ -160,37 +159,37 @@ sw = (int)((headr[3]&0xF0) >> 4) ; switch( sw ){ - case 1: + case 1: if (pr) printk("Videostream: ASPECT: 1:1"); vi->aspect_ratio = 100; - break; - case 2: + break; + case 2: if (pr) printk("Videostream: ASPECT: 4:3"); vi->aspect_ratio = 133; - break; - case 3: + break; + case 3: if (pr) printk("Videostream: ASPECT: 16:9"); vi->aspect_ratio = 177; - break; + break; case 4: if (pr) printk("Videostream: ASPECT: 2.21:1"); vi->aspect_ratio = 221; - break; + break; case 5 ... 15: if (pr) printk("Videostream: ASPECT: reserved"); vi->aspect_ratio = 0; - break; - + break; + default: vi->aspect_ratio = 0; return -1; - } + } if (pr) printk(" Size = %dx%d",vi->horizontal_size,vi->vertical_size); @@ -221,29 +220,29 @@ printk(" FRate: 29.97 fps"); vi->framerate = 29970; form = VIDEO_MODE_NTSC; - break; - case 5: + break; + case 5: if (pr) printk(" FRate: 30 fps"); vi->framerate = 30000; form = VIDEO_MODE_NTSC; - break; - case 6: + break; + case 6: if (pr) printk(" FRate: 50 fps"); vi->framerate = 50000; form = VIDEO_MODE_PAL; - break; - case 7: + break; + case 7: if (pr) printk(" FRate: 60 fps"); vi->framerate = 60000; form = VIDEO_MODE_NTSC; - break; - } - - vi->bit_rate = (headr[4] << 10) | (headr[5] << 2) | (headr[6] & 0x03); + break; + } + vi->bit_rate = (headr[4] << 10) | (headr[5] << 2) | (headr[6] & 0x03); + vi->vbv_buffer_size = (( headr[6] & 0xF8) >> 3 ) | (( headr[7] & 0x1F )<< 5); @@ -259,7 +258,7 @@ } #endif - + #if 0 static int get_vinfo(uint8_t *mbuf, int count, VideoInfo *vi, int pr) @@ -267,7 +266,7 @@ uint8_t *headr; int found = 0; int c = 0; - + while (found < 4 && c+4 < count){ uint8_t *b; @@ -277,7 +276,7 @@ else { c++; } - } + } if (! found) return -1; c += 4; @@ -288,7 +287,7 @@ return 0; } #endif - + #if 0 static @@ -306,9 +305,9 @@ if ( b[0] == 0xff && (b[1] & 0xf8) == 0xf8) found = 2; else { - c++; - } - } + c++; + } + } if (!found) return -1; @@ -330,7 +329,7 @@ printk(" BRate: reserved"); else printk(" BRate: %d kb/s", ai->bit_rate/1000); - } + } fr = (headr[2] & 0x0c ) >> 2; ai->frequency = freq[fr]*100; @@ -340,41 +339,41 @@ else printk(" Freq: %d kHz\n",ai->frequency); - } + } ai->off = c; return 0; } #endif - -static -int get_ac3info(uint8_t *mbuf, int count, AudioInfo *ai, int pr) + + +int dvb_filter_get_ac3info(uint8_t *mbuf, int count, AudioInfo *ai, int pr) { uint8_t *headr; int found = 0; int c = 0; uint8_t frame = 0; int fr = 0; - + while ( !found && c < count){ uint8_t *b = mbuf+c; - + if ( b[0] == 0x0b && b[1] == 0x77 ) found = 1; else { - c++; - } - } - + c++; + } + } + if (!found) return -1; if (pr) printk("Audiostream: AC3"); - + ai->off = c; if (c+5 >= count) return -1; - + ai->layer = 0; // 0 for AC3 headr = mbuf+c+2; - + frame = (headr[2]&0x3f); ai->bit_rate = ac3_bitrates[frame >> 1]*1000; @@ -420,8 +419,8 @@ } else { /* mpeg1 */ for (buf = inbuf + 6; *buf == 0xff; buf++) if (buf == inbuf + 6 + 16) { - break; - } + break; + } if ((*buf & 0xc0) == 0x40) buf += 2; skip = mpeg1_skip_table [*buf >> 4]; @@ -433,7 +432,7 @@ *bufp = buf; return pts; -} +} #endif #if 0 @@ -509,7 +508,7 @@ pic->progressive_frame = 1; pic->picture_coding_parameter = 0x000010; } - + /* Reset flag */ pic->picture_display_extension_flag[field_type] = 0; @@ -527,7 +526,7 @@ } else { pic->frame_centre_horizontal_offset[3] = last_h_offset; pic->frame_centre_vertical_offset[3] = last_v_offset; - } + } } #endif @@ -566,7 +565,7 @@ dvb_filter_pes2ts_cb_t *cb, void *priv) { unsigned char *buf=p2ts->buf; - + buf[0]=0x47; buf[1]=(pid>>8); buf[2]=pid&0xff; @@ -579,7 +578,7 @@ { unsigned char *buf=p2ts->buf; int ret=0, rest; - + //len=6+((pes[4]<<8)|pes[5]); buf[1]|=0x40; @@ -592,7 +591,7 @@ buf[1]&=~0x40; } if (!len) - return 0; + return 0; buf[3]=0x30|((p2ts->cc++)&0x0f); rest=183-len; if (rest) { @@ -603,399 +602,5 @@ buf[4]=rest; memcpy(buf+5+rest, pes, len); return p2ts->cb(p2ts->priv, buf); -} - -void dvb_filter_ipack_reset(ipack *p) -{ - p->found = 0; - p->cid = 0; - p->plength = 0; - p->flag1 = 0; - p->flag2 = 0; - p->hlength = 0; - p->mpeg = 0; - p->check = 0; - p->which = 0; - p->done = 0; - p->count = 0; -} - -void dvb_filter_ipack_init(ipack *p, int size, - void (*func)(u8 *buf, int size, void *priv)) -{ - if ( !(p->buf = vmalloc(size*sizeof(u8))) ){ - printk ("Couldn't allocate memory for ipack\n"); - } - p->size = size; - p->func = func; - p->repack_subids = 0; - dvb_filter_ipack_reset(p); -} - -void dvb_filter_ipack_free(ipack * p) -{ - if (p->buf) vfree(p->buf); -} - -static -void send_ipack(ipack *p) -{ - int off; - AudioInfo ai; - int ac3_off = 0; - int streamid=0; - int nframes= 0; - int f=0; - - switch ( p->mpeg ){ - case 2: - if (p->count < 10) return; - p->buf[3] = p->cid; - - p->buf[4] = (u8)(((p->count-6) & 0xFF00) >> 8); - p->buf[5] = (u8)((p->count-6) & 0x00FF); - if (p->repack_subids && p->cid == PRIVATE_STREAM1){ - - off = 9+p->buf[8]; - streamid = p->buf[off]; - if ((streamid & 0xF8) == 0x80){ - ai.off = 0; - ac3_off = ((p->buf[off+2] << 8)| - p->buf[off+3]); - if (ac3_off < p->count) - f=get_ac3info(p->buf+off+3+ac3_off, - p->count-ac3_off, &ai,0); - if ( !f ){ - nframes = (p->count-off-3-ac3_off)/ - ai.framesize + 1; - p->buf[off+2] = (ac3_off >> 8)& 0xFF; - p->buf[off+3] = (ac3_off)& 0xFF; - p->buf[off+1] = nframes; - - ac3_off += nframes * ai.framesize - - p->count; - } - } - } - p->func(p->buf, p->count, p->data); - - p->buf[6] = 0x80; - p->buf[7] = 0x00; - p->buf[8] = 0x00; - p->count = 9; - if (p->repack_subids && p->cid == PRIVATE_STREAM1 - && (streamid & 0xF8)==0x80 ){ - p->count += 4; - p->buf[9] = streamid; - p->buf[10] = (ac3_off >> 8)& 0xFF; - p->buf[11] = (ac3_off)& 0xFF; - p->buf[12] = 0; - } - - break; - case 1: - if (p->count < 8) return; - p->buf[3] = p->cid; - - p->buf[4] = (u8)(((p->count-6) & 0xFF00) >> 8); - p->buf[5] = (u8)((p->count-6) & 0x00FF); - p->func(p->buf, p->count, p->data); - - p->buf[6] = 0x0F; - p->count = 7; - break; - } -} - -void dvb_filter_ipack_flush(ipack *p) -{ - if (p->plength != MMAX_PLENGTH-6 || p->found<=6) - return; - p->plength = p->found-6; - p->found = 0; - send_ipack(p); - dvb_filter_ipack_reset(p); -} - -static -void write_ipack(ipack *p, u8 *data, int count) -{ - u8 headr[3] = { 0x00, 0x00, 0x01} ; - - if (p->count < 6){ - memcpy(p->buf, headr, 3); - p->count = 6; - } - - if (p->count + count < p->size){ - memcpy(p->buf+p->count, data, count); - p->count += count; - } else { - int rest = p->size - p->count; - memcpy(p->buf+p->count, data, rest); - p->count += rest; - send_ipack(p); - if (count - rest > 0) - write_ipack(p, data+rest, count-rest); - } -} - - -int dvb_filter_instant_repack(u8 *buf, int count, ipack *p) -{ - int l; - int c=0; - - while (c < count && (p->mpeg == 0 || - (p->mpeg == 1 && p->found < 7) || - (p->mpeg == 2 && p->found < 9)) - && (p->found < 5 || !p->done)){ - switch ( p->found ){ - case 0: - case 1: - if (buf[c] == 0x00) p->found++; - else p->found = 0; - c++; - break; - case 2: - if (buf[c] == 0x01) p->found++; - else if (buf[c] == 0) { - p->found = 2; - } else p->found = 0; - c++; - break; - case 3: - p->cid = 0; - switch (buf[c]){ - case PROG_STREAM_MAP: - case PRIVATE_STREAM2: - case PROG_STREAM_DIR: - case ECM_STREAM : - case EMM_STREAM : - case PADDING_STREAM : - case DSM_CC_STREAM : - case ISO13522_STREAM: - p->done = 1; - case PRIVATE_STREAM1: - case VIDEO_STREAM_S ... VIDEO_STREAM_E: - case AUDIO_STREAM_S ... AUDIO_STREAM_E: - p->found++; - p->cid = buf[c]; - c++; - break; - default: - p->found = 0; - break; - } - break; - - case 4: - if (count-c > 1){ - p->plen[0] = buf[c]; - c++; - p->plen[1] = buf[c]; - c++; - p->found+=2; - p->plength=(p->plen[0]<<8)|p->plen[1]; - } else { - p->plen[0] = buf[c]; - p->found++; - return count; - } - break; - case 5: - p->plen[1] = buf[c]; - c++; - p->found++; - p->plength=(p->plen[0]<<8)|p->plen[1]; - break; - case 6: - if (!p->done){ - p->flag1 = buf[c]; - c++; - p->found++; - if ( (p->flag1 & 0xC0) == 0x80 ) p->mpeg = 2; - else { - p->hlength = 0; - p->which = 0; - p->mpeg = 1; - p->flag2 = 0; - } - } - break; - - case 7: - if ( !p->done && p->mpeg == 2) { - p->flag2 = buf[c]; - c++; - p->found++; - } - break; - - case 8: - if ( !p->done && p->mpeg == 2) { - p->hlength = buf[c]; - c++; - p->found++; - } - break; - - default: - - break; - } - } - - if (c == count) return count; - - if (!p->plength) p->plength = MMAX_PLENGTH-6; - - if ( p->done || ((p->mpeg == 2 && p->found >= 9) || - (p->mpeg == 1 && p->found >= 7)) ){ - switch (p->cid){ - - case AUDIO_STREAM_S ... AUDIO_STREAM_E: - case VIDEO_STREAM_S ... VIDEO_STREAM_E: - case PRIVATE_STREAM1: - - if (p->mpeg == 2 && p->found == 9) { - write_ipack(p, &p->flag1, 1); - write_ipack(p, &p->flag2, 1); - write_ipack(p, &p->hlength, 1); - } - - if (p->mpeg == 1 && p->found == 7) - write_ipack(p, &p->flag1, 1); - - if (p->mpeg == 2 && (p->flag2 & PTS_ONLY) && - p->found < 14) { - while (c < count && p->found < 14) { - p->pts[p->found-9] = buf[c]; - write_ipack(p, buf+c, 1); - c++; - p->found++; - } - if (c == count) return count; - } - - if (p->mpeg == 1 && p->which < 2000) { - - if (p->found == 7) { - p->check = p->flag1; - p->hlength = 1; - } - - while (!p->which && c < count && - p->check == 0xFF){ - p->check = buf[c]; - write_ipack(p, buf+c, 1); - c++; - p->found++; - p->hlength++; - } - - if ( c == count) return count; - - if ( (p->check & 0xC0) == 0x40 && !p->which){ - p->check = buf[c]; - write_ipack(p, buf+c, 1); - c++; - p->found++; - p->hlength++; - - p->which = 1; - if ( c == count) return count; - p->check = buf[c]; - write_ipack(p, buf+c, 1); - c++; - p->found++; - p->hlength++; - p->which = 2; - if ( c == count) return count; - } - - if (p->which == 1){ - p->check = buf[c]; - write_ipack(p, buf+c, 1); - c++; - p->found++; - p->hlength++; - p->which = 2; - if ( c == count) return count; - } - - if ( (p->check & 0x30) && p->check != 0xFF){ - p->flag2 = (p->check & 0xF0) << 2; - p->pts[0] = p->check; - p->which = 3; - } - - if ( c == count) return count; - if (p->which > 2){ - if ((p->flag2 & PTS_DTS_FLAGS) - == PTS_ONLY){ - while (c < count && - p->which < 7){ - p->pts[p->which-2] = - buf[c]; - write_ipack(p,buf+c,1); - c++; - p->found++; - p->which++; - p->hlength++; - } - if ( c == count) return count; - } else if ((p->flag2 & PTS_DTS_FLAGS) - == PTS_DTS){ - while (c < count && - p->which< 12){ - if (p->which< 7) - p->pts[p->which - -2] = - buf[c]; - write_ipack(p,buf+c,1); - c++; - p->found++; - p->which++; - p->hlength++; - } - if ( c == count) return count; - } - p->which = 2000; - } - - } - - while (c < count && p->found < p->plength+6){ - l = count -c; - if (l+p->found > p->plength+6) - l = p->plength+6-p->found; - write_ipack(p, buf+c, l); - p->found += l; - c += l; - } - - break; - } - - - if ( p->done ){ - if( p->found + count - c < p->plength+6){ - p->found += count-c; - c = count; - } else { - c += p->plength+6 - p->found; - p->found = p->plength+6; - } - } - - if (p->plength && p->found == p->plength+6) { - send_ipack(p); - dvb_filter_ipack_reset(p); - if (c < count) - dvb_filter_instant_repack(buf+c, count-c, p); - } - } - return count; } diff -Nru a/drivers/media/dvb/dvb-core/dvb_filter.h b/drivers/media/dvb/dvb-core/dvb_filter.h --- a/drivers/media/dvb/dvb-core/dvb_filter.h Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_filter.h Mon Apr 7 13:17:58 2003 @@ -17,6 +17,7 @@ void dvb_filter_pes2ts_init(dvb_filter_pes2ts_t *p2ts, unsigned short pid, dvb_filter_pes2ts_cb_t *cb, void *priv); + int dvb_filter_pes2ts(dvb_filter_pes2ts_t *p2ts, unsigned char *pes, int len); @@ -223,12 +224,7 @@ uint32_t off; } AudioInfo; +int dvb_filter_get_ac3info(uint8_t *mbuf, int count, AudioInfo *ai, int pr); -void dvb_filter_ipack_reset(ipack *p); -int dvb_filter_instant_repack(u8 *buf, int count, ipack *p); -void dvb_filter_ipack_init(ipack *p, int size, - void (*func)(u8 *buf, int size, void *priv)); -void dvb_filter_ipack_free(ipack * p); -void dvb_filter_ipack_flush(ipack *p); #endif diff -Nru a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c --- a/drivers/media/dvb/dvb-core/dvb_frontend.c Tue Feb 11 14:57:51 2003 +++ b/drivers/media/dvb/dvb-core/dvb_frontend.c Mon Apr 7 13:17:58 2003 @@ -27,16 +27,14 @@ #include #include #include -#include #include -#include "compat.h" #include "dvb_frontend.h" #include "dvbdev.h" static int dvb_frontend_debug = 0; -static int dvb_shutdown_timeout = 0; +static int dvb_shutdown_timeout = 5; #define dprintk if (dvb_frontend_debug) printk @@ -52,18 +50,10 @@ }; -struct dvb_fe_notifier_callbacks { - struct list_head list_head; - void (*callback) (fe_status_t s, void *data); - void *data; -}; - - struct dvb_frontend_data { struct dvb_frontend_info *info; struct dvb_frontend frontend; struct dvb_device *dvbdev; - struct list_head notifier_callbacks; struct dvb_frontend_parameters parameters; struct dvb_fe_events events; struct semaphore sem; @@ -92,8 +82,17 @@ }; +struct dvb_frontend_notifier_data { + struct list_head list_head; + struct dvb_adapter *adapter; + void (*callback) (fe_status_t s, void *data); + void *data; +}; + + static LIST_HEAD(frontend_list); static LIST_HEAD(frontend_ioctl_list); +static LIST_HEAD(frontend_notifier_list); static DECLARE_MUTEX(frontend_mutex); @@ -153,6 +152,7 @@ if (!recursive) { if (down_interruptible (&frontend_mutex)) return; + this_fe->bending = 0; } @@ -170,7 +170,7 @@ frequency += this_fe->lnb_drift; frequency += this_fe->bending; - if (this_fe != fe && + if (this_fe != fe && fe->lost_sync_count != -1 && frequency > f - stepsize && frequency < f + stepsize) { if (recursive % 2) @@ -192,9 +192,6 @@ void dvb_call_frontend_notifiers (struct dvb_frontend_data *fe, fe_status_t s) { - struct list_head *e; - struct dvb_fe_notifier_callbacks *c; - dprintk ("%s\n", __FUNCTION__); if ((fe->status & FE_HAS_LOCK) && !(s & FE_HAS_LOCK)) @@ -211,10 +208,8 @@ /** * now tell the Demux about the TS status changes... */ - list_for_each (e, &fe->notifier_callbacks) { - c = list_entry (e, struct dvb_fe_notifier_callbacks, list_head); - c->callback (fe->status, c->data); - } + if (fe->frontend.notifier_callback) + fe->frontend.notifier_callback(fe->status, fe->frontend.notifier_data); } @@ -297,38 +292,6 @@ static -struct dvb_frontend_parameters default_param [] = { - { /* NTV on Astra */ - frequency: 12669500-10600000, - inversion: INVERSION_OFF, - { qpsk: { symbol_rate: 22000000, fec_inner: FEC_AUTO } } - }, - { /* Cable */ - frequency: 394000000, - inversion: INVERSION_OFF, - { qam: { symbol_rate: 6900000, - fec_inner: FEC_AUTO, - modulation: QAM_64 - } - } - }, - { /* DVB-T */ - frequency: 730000000, - inversion: INVERSION_OFF, - { ofdm: { bandwidth: BANDWIDTH_8_MHZ, - code_rate_HP: FEC_2_3, - code_rate_LP: FEC_1_2, - constellation: QAM_16, - transmission_mode: TRANSMISSION_MODE_2K, - guard_interval: GUARD_INTERVAL_1_8, - hierarchy_information: HIERARCHY_NONE - } - } - } -}; - - -static int dvb_frontend_set_parameters (struct dvb_frontend_data *fe, struct dvb_frontend_parameters *param, int first_trial) @@ -336,8 +299,6 @@ struct dvb_frontend *frontend = &fe->frontend; int err; - dvb_bend_frequency (fe, 0); - if (first_trial) { fe->timeout_count = 0; fe->lost_sync_count = 0; @@ -349,6 +310,8 @@ sizeof (struct dvb_frontend_parameters)); } + dvb_bend_frequency (fe, 0); + dprintk ("%s: f == %i, drift == %i\n", __FUNCTION__, param->frequency, fe->lnb_drift); @@ -365,23 +328,12 @@ void dvb_frontend_init (struct dvb_frontend_data *fe) { struct dvb_frontend *frontend = &fe->frontend; - struct dvb_frontend_parameters *init_param; - printk ("DVB: initialising frontend %i:%i (%s)...\n", - frontend->i2c->adapter->num, frontend->i2c->id, fe->info->name); + dprintk ("DVB: initialising frontend %i:%i (%s)...\n", + frontend->i2c->adapter->num, frontend->i2c->id, + fe->info->name); dvb_frontend_internal_ioctl (frontend, FE_INIT, NULL); - - if (fe->info->type == FE_QPSK) { - dvb_frontend_internal_ioctl (frontend, FE_SET_VOLTAGE, - (void*) SEC_VOLTAGE_13); - dvb_frontend_internal_ioctl (frontend, FE_SET_TONE, - (void*) SEC_TONE_ON); - } - - init_param = &default_param[fe->info->type-FE_QPSK]; - - dvb_frontend_set_parameters (fe, init_param, 1); } @@ -464,7 +416,7 @@ if (fe->exit) return 1; - if (fe->dvbdev->users == 0 && dvb_shutdown_timeout) + if (fe->dvbdev->writers == 1) if (jiffies - fe->release_jiffies > dvb_shutdown_timeout * HZ) return 1; @@ -482,13 +434,27 @@ dprintk ("%s\n", __FUNCTION__); lock_kernel (); - daemonize("kdvb-fe"); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,61)) + daemonize (); +#else + daemonize ("dvb fe"); +#endif +/* not needed anymore in 2.5.x, done in daemonize() */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + reparent_to_init (); +#endif + + sigfillset (¤t->blocked); fe->thread = current; + snprintf (current->comm, sizeof (current->comm), "kdvb-fe-%i:%i", + fe->frontend.i2c->adapter->num, fe->frontend.i2c->id); unlock_kernel (); dvb_call_frontend_notifiers (fe, 0); dvb_frontend_init (fe); + fe->lost_sync_count = -1; + while (!dvb_frontend_is_exiting (fe)) { up (&fe->sem); /* is locked when we enter the thread... */ @@ -499,6 +465,9 @@ return -ERESTARTSYS; } + if (fe->lost_sync_count == -1) + continue; + if (dvb_frontend_is_exiting (fe)) break; @@ -513,10 +482,14 @@ fe->lost_sync_count = 0; } else { fe->lost_sync_count++; - if (fe->lost_sync_count < 10) /* XXX FIXME CHECKME! */ - continue; - dvb_frontend_recover (fe); - delay = HZ/5; + if (!(fe->info->caps & FE_CAN_RECOVER)) { + if (!(fe->info->caps & FE_CAN_CLEAN_SETUP)) { + if (fe->lost_sync_count < 10) + continue; + } + dvb_frontend_recover (fe); + delay = HZ/5; + } if (jiffies - fe->lost_sync_jiffies > TIMEOUT) { s |= FE_TIMEDOUT; if ((fe->status & FE_TIMEDOUT) == 0) @@ -528,7 +501,9 @@ dvb_frontend_add_event (fe, s); }; - dvb_frontend_internal_ioctl (&fe->frontend, FE_SLEEP, NULL); + if (dvb_shutdown_timeout) + dvb_frontend_internal_ioctl (&fe->frontend, FE_SLEEP, NULL); + up (&fe->sem); fe->thread = NULL; return 0; @@ -536,30 +511,36 @@ static -void dvb_frontend_start (struct dvb_frontend_data *fe) +void dvb_frontend_stop (struct dvb_frontend_data *fe) { dprintk ("%s\n", __FUNCTION__); - if (!fe->exit && !fe->thread) { - if (down_interruptible (&fe->sem)) - return; - kernel_thread (dvb_frontend_thread, fe, 0); - } + while (fe->thread) { + fe->exit = 1; + wake_up_interruptible (&fe->wait_queue); + current->state = TASK_INTERRUPTIBLE; + schedule_timeout (5); + if (signal_pending(current)) + break; + }; } static -void dvb_frontend_stop (struct dvb_frontend_data *fe) +void dvb_frontend_start (struct dvb_frontend_data *fe) { dprintk ("%s\n", __FUNCTION__); - fe->exit = 1; - wake_up_interruptible (&fe->wait_queue); + if (fe->thread) + dvb_frontend_stop (fe); - while (fe->thread) { - current->state = TASK_INTERRUPTIBLE; - schedule_timeout (5); - }; + if (down_interruptible (&fe->sem)) + return; + + fe->exit = 0; + fe->thread = (void*) ~0; + + kernel_thread (dvb_frontend_thread, fe, 0); } @@ -615,9 +596,6 @@ dprintk ("%s\n", __FUNCTION__); - if (fe->events.eventw != fe->events.eventr) - return (POLLIN | POLLRDNORM | POLLPRI); - poll_wait (file, &fe->events.wait_queue, wait); if (fe->events.eventw != fe->events.eventr) @@ -639,10 +617,12 @@ if ((ret = dvb_generic_open (inode, file)) < 0) return ret; - dvb_frontend_start (fe); + if ((file->f_flags & O_ACCMODE) != O_RDONLY) { + dvb_frontend_start (fe); - /* empty event queue */ - fe->events.eventr = fe->events.eventw; + /* empty event queue */ + fe->events.eventr = fe->events.eventw; + } return ret; } @@ -656,7 +636,8 @@ dprintk ("%s\n", __FUNCTION__); - fe->release_jiffies = jiffies; + if ((file->f_flags & O_ACCMODE) != O_RDONLY) + fe->release_jiffies = jiffies; return dvb_generic_release (inode, file); } @@ -673,7 +654,6 @@ { struct dvb_frontend_ioctl_data *ioctl; struct list_head *entry; - int frontend_count = 0; dprintk ("%s\n", __FUNCTION__); @@ -706,14 +686,12 @@ fe->frontend.before_ioctl = before_ioctl; fe->frontend.after_ioctl = after_ioctl; fe->frontend.before_after_data = before_after_data; - dvb_frontend_start (fe); - frontend_count++; } } up (&frontend_mutex); - return frontend_count; + return 0; } @@ -724,12 +702,11 @@ int (*after_ioctl) (struct dvb_frontend *frontend, unsigned int cmd, void *arg)) { - struct list_head *entry; + struct list_head *entry, *n; dprintk ("%s\n", __FUNCTION__); - if (down_interruptible (&frontend_mutex)) - return; + down (&frontend_mutex); list_for_each (entry, &frontend_list) { struct dvb_frontend_data *fe; @@ -746,6 +723,22 @@ } } + list_for_each_safe (entry, n, &frontend_ioctl_list) { + struct dvb_frontend_ioctl_data *ioctl; + + ioctl = list_entry (entry, struct dvb_frontend_ioctl_data, list_head); + + if (ioctl->adapter == adapter && + ioctl->before_ioctl == before_ioctl && + ioctl->after_ioctl == after_ioctl) + { + list_del (&ioctl->list_head); + kfree (ioctl); + + break; + } + } + up (&frontend_mutex); } @@ -755,41 +748,43 @@ void (*callback) (fe_status_t s, void *data), void *data) { - struct list_head *entry; + struct dvb_frontend_notifier_data *notifier; + struct list_head *entry; dprintk ("%s\n", __FUNCTION__); if (down_interruptible (&frontend_mutex)) return -ERESTARTSYS; - list_for_each (entry, &frontend_list) { - struct dvb_frontend_data *fe; + notifier = kmalloc (sizeof(struct dvb_frontend_notifier_data), GFP_KERNEL); - fe = list_entry (entry, struct dvb_frontend_data, list_head); + if (!notifier) { + up (&frontend_mutex); + return -ENOMEM; + } - if (fe->frontend.i2c->adapter == adapter) { - struct dvb_fe_notifier_callbacks *e; + notifier->adapter = adapter; + notifier->callback = callback; + notifier->data = data; - e = kmalloc (sizeof(struct dvb_fe_notifier_callbacks), - GFP_KERNEL); + list_add_tail (¬ifier->list_head, &frontend_notifier_list); - if (!e) { - up (&frontend_mutex); - return -ENOMEM; - } + list_for_each (entry, &frontend_list) { + struct dvb_frontend_data *fe; - e->callback = callback; - e->data = data; - list_add_tail (&e->list_head, &fe->notifier_callbacks); + fe = list_entry (entry, struct dvb_frontend_data, list_head); - up (&frontend_mutex); - return 0; + if (fe->frontend.i2c->adapter == adapter && + fe->frontend.notifier_callback == NULL) + { + fe->frontend.notifier_callback = callback; + fe->frontend.notifier_data = data; } } up (&frontend_mutex); - return -ENODEV; + return 0; } @@ -797,30 +792,37 @@ dvb_remove_frontend_notifier (struct dvb_adapter *adapter, void (*callback) (fe_status_t s, void *data)) { - struct list_head *entry; + struct list_head *entry, *n; dprintk ("%s\n", __FUNCTION__); - if (down_interruptible (&frontend_mutex)) - return; + down (&frontend_mutex); list_for_each (entry, &frontend_list) { struct dvb_frontend_data *fe; fe = list_entry (entry, struct dvb_frontend_data, list_head); - if (fe->frontend.i2c->adapter == adapter) { - struct list_head *e0, *n0; + if (fe->frontend.i2c->adapter == adapter && + fe->frontend.notifier_callback == callback) + { + fe->frontend.notifier_callback = NULL; - list_for_each_safe (e0, n0, &fe->notifier_callbacks) { - struct dvb_fe_notifier_callbacks *e; + } + } - e = list_entry (e0, - struct dvb_fe_notifier_callbacks, - list_head); - list_del (&e->list_head); - kfree (e); - } + list_for_each_safe (entry, n, &frontend_notifier_list) { + struct dvb_frontend_notifier_data *notifier; + + notifier = list_entry (entry, struct dvb_frontend_notifier_data, list_head); + + if (notifier->adapter == adapter && + notifier->callback == callback) + { + list_del (¬ifier->list_head); + kfree (notifier); + + break; } } @@ -849,7 +851,7 @@ struct list_head *entry; struct dvb_frontend_data *fe; static const struct dvb_device dvbdev_template = { - .users = 1, + .users = ~0, .writers = 1, .fops = &dvb_frontend_fops, .kernel_ioctl = dvb_frontend_ioctl @@ -873,7 +875,6 @@ init_MUTEX (&fe->events.sem); fe->events.eventw = fe->events.eventr = 0; fe->events.overflow = 0; - INIT_LIST_HEAD (&fe->notifier_callbacks); fe->frontend.ioctl = ioctl; fe->frontend.i2c = i2c; @@ -891,13 +892,30 @@ fe->frontend.before_ioctl = ioctl->before_ioctl; fe->frontend.after_ioctl = ioctl->after_ioctl; fe->frontend.before_after_data = ioctl->before_after_data; - dvb_frontend_start (fe); + break; + } + } + + list_for_each (entry, &frontend_notifier_list) { + struct dvb_frontend_notifier_data *notifier; + + notifier = list_entry (entry, + struct dvb_frontend_notifier_data, + list_head); + + if (notifier->adapter == i2c->adapter) { + fe->frontend.notifier_callback = notifier->callback; + fe->frontend.notifier_data = notifier->data; break; } } list_add_tail (&fe->list_head, &frontend_list); + printk ("DVB: registering frontend %i:%i (%s)...\n", + fe->frontend.i2c->adapter->num, fe->frontend.i2c->id, + fe->info->name); + dvb_register_device (i2c->adapter, &fe->dvbdev, &dvbdev_template, fe, DVB_DEVICE_FRONTEND); @@ -915,8 +933,7 @@ dprintk ("%s\n", __FUNCTION__); - if (down_interruptible (&frontend_mutex)) - return -ERESTARTSYS; + down (&frontend_mutex); list_for_each_safe (entry, n, &frontend_list) { struct dvb_frontend_data *fe; @@ -925,10 +942,8 @@ if (fe->frontend.ioctl == ioctl && fe->frontend.i2c == i2c) { dvb_unregister_device (fe->dvbdev); - list_del (entry); up (&frontend_mutex); - dvb_frontend_stop (fe); kfree (fe); return 0; diff -Nru a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h --- a/drivers/media/dvb/dvb-core/dvb_frontend.h Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_frontend.h Mon Apr 7 13:17:58 2003 @@ -52,8 +52,10 @@ int (*before_ioctl) (struct dvb_frontend *frontend, unsigned int cmd, void *arg); int (*ioctl) (struct dvb_frontend *frontend, unsigned int cmd, void *arg); int (*after_ioctl) (struct dvb_frontend *frontend, unsigned int cmd, void *arg); + void (*notifier_callback) (fe_status_t s, void *data); struct dvb_i2c_bus *i2c; void *before_after_data; /* can be used by hardware module... */ + void *notifier_data; /* can be used by hardware module... */ void *data; /* can be used by hardware module... */ }; diff -Nru a/drivers/media/dvb/dvb-core/dvb_i2c.c b/drivers/media/dvb/dvb-core/dvb_i2c.c --- a/drivers/media/dvb/dvb-core/dvb_i2c.c Sun Dec 29 18:46:52 2002 +++ b/drivers/media/dvb/dvb-core/dvb_i2c.c Mon Apr 7 13:17:58 2003 @@ -22,10 +22,13 @@ #include #include #include +#include -#include "compat.h" -#include "dvb_i2c.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #include "compat.h" +#endif +#include "dvb_i2c.h" struct dvb_i2c_device { struct list_head list_head; @@ -34,13 +37,11 @@ void (*detach) (struct dvb_i2c_bus *i2c); }; - LIST_HEAD(dvb_i2c_buslist); LIST_HEAD(dvb_i2c_devicelist); DECLARE_MUTEX(dvb_i2c_mutex); - static int register_i2c_client (struct dvb_i2c_bus *i2c, struct dvb_i2c_device *dev) { @@ -63,11 +64,16 @@ static void try_attach_device (struct dvb_i2c_bus *i2c, struct dvb_i2c_device *dev) { - if (try_module_get(dev->owner)) { - if (dev->attach(i2c) == 0) - register_i2c_client(i2c, dev); - else - module_put(dev->owner); + if (dev->owner) { + if (!try_module_get(dev->owner)) + return; + } + + if (dev->attach (i2c) == 0) { + register_i2c_client (i2c, dev); + } else { + if (dev->owner) + module_put (dev->owner); } } @@ -75,8 +81,10 @@ static void detach_device (struct dvb_i2c_bus *i2c, struct dvb_i2c_device *dev) { - dev->detach(i2c); - module_put(dev->owner); + dev->detach (i2c); + + if (dev->owner) + module_put (dev->owner); } @@ -84,15 +92,17 @@ void unregister_i2c_client_from_bus (struct dvb_i2c_device *dev, struct dvb_i2c_bus *i2c) { - struct list_head *entry; + struct list_head *entry, *n; - list_for_each (entry, &i2c->client_list) { + list_for_each_safe (entry, n, &i2c->client_list) { struct dvb_i2c_device *client; client = list_entry (entry, struct dvb_i2c_device, list_head); - if (client->detach == dev->detach) + if (client->detach == dev->detach) { + list_del (entry); detach_device (i2c, dev); + } } } @@ -100,9 +110,9 @@ static void unregister_i2c_client_from_all_busses (struct dvb_i2c_device *dev) { - struct list_head *entry; + struct list_head *entry, *n; - list_for_each (entry, &dvb_i2c_buslist) { + list_for_each_safe (entry, n, &dvb_i2c_buslist) { struct dvb_i2c_bus *i2c; i2c = list_entry (entry, struct dvb_i2c_bus, list_head); @@ -118,18 +128,15 @@ struct list_head *entry, *n; list_for_each_safe (entry, n, &(i2c->client_list)) { - struct dvb_i2c_device *client; - - client = list_entry (entry, struct dvb_i2c_device, list_head); + struct dvb_i2c_device *dev; - detach_device (i2c, client); + dev = list_entry (entry, struct dvb_i2c_device, list_head); - list_del (entry); + unregister_i2c_client_from_bus (dev, i2c); } } - static void probe_device_on_all_busses (struct dvb_i2c_device *dev) { @@ -160,15 +167,38 @@ } +static +struct dvb_i2c_bus* dvb_find_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c, + const struct i2c_msg msgs[], + int num), + struct dvb_adapter *adapter, + int id) +{ + struct list_head *entry; + + list_for_each (entry, &dvb_i2c_buslist) { + struct dvb_i2c_bus *i2c; + + i2c = list_entry (entry, struct dvb_i2c_bus, list_head); + + if (i2c->xfer == xfer && i2c->adapter == adapter && i2c->id == id) + return i2c; + } + + return NULL; +} + + struct dvb_i2c_bus* dvb_register_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c, - struct i2c_msg msgs[], int num), - void *data, - struct dvb_adapter *adapter, - int id) + const struct i2c_msg *msgs, int num), + void *data, struct dvb_adapter *adapter, int id) { struct dvb_i2c_bus *i2c; + if (down_interruptible (&dvb_i2c_mutex)) + return NULL; + if (!(i2c = kmalloc (sizeof (struct dvb_i2c_bus), GFP_KERNEL))) return NULL; @@ -184,54 +214,27 @@ list_add_tail (&i2c->list_head, &dvb_i2c_buslist); - return i2c; -} - - -struct dvb_i2c_bus* -dvb_find_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c, - struct i2c_msg msgs[], int num), - struct dvb_adapter *adapter, - int id) -{ - struct list_head *entry; - - if (down_interruptible (&dvb_i2c_mutex)) - return NULL; - - list_for_each (entry, &dvb_i2c_buslist) { - struct dvb_i2c_bus *i2c; - - i2c = list_entry (entry, struct dvb_i2c_bus, list_head); - - if (i2c->xfer == xfer && - i2c->adapter == adapter && - i2c->id == id) - { - up (&dvb_i2c_mutex); - return i2c; - } - } - up (&dvb_i2c_mutex); - return NULL; + return i2c; } - void dvb_unregister_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c, - struct i2c_msg msgs[], int num), - struct dvb_adapter *adapter, - int id) + const struct i2c_msg msgs[], int num), + struct dvb_adapter *adapter, int id) { - struct dvb_i2c_bus *i2c = dvb_find_i2c_bus (xfer, adapter, id); + struct dvb_i2c_bus *i2c; + + down (&dvb_i2c_mutex); - if (i2c) { + if ((i2c = dvb_find_i2c_bus (xfer, adapter, id))) { unregister_all_clients_from_bus (i2c); list_del (&i2c->list_head); kfree (i2c); } + + up (&dvb_i2c_mutex); } @@ -267,8 +270,7 @@ { struct list_head *entry, *n; - if (down_interruptible (&dvb_i2c_mutex)) - return -ERESTARTSYS; + down (&dvb_i2c_mutex); list_for_each_safe (entry, n, &dvb_i2c_devicelist) { struct dvb_i2c_device *dev; diff -Nru a/drivers/media/dvb/dvb-core/dvb_i2c.h b/drivers/media/dvb/dvb-core/dvb_i2c.h --- a/drivers/media/dvb/dvb-core/dvb_i2c.h Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_i2c.h Mon Apr 7 13:17:58 2003 @@ -30,7 +30,9 @@ struct dvb_i2c_bus { struct list_head list_head; - int (*xfer) (struct dvb_i2c_bus *i2c, struct i2c_msg msgs[], int num); + int (*xfer) (struct dvb_i2c_bus *i2c, + const struct i2c_msg msgs[], + int num); void *data; struct dvb_adapter *adapter; int id; @@ -38,17 +40,16 @@ }; -extern -struct dvb_i2c_bus* dvb_register_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c, - struct i2c_msg msgs[], - int num), - void *data, - struct dvb_adapter *adapter, - int id); +extern struct dvb_i2c_bus* +dvb_register_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c, + const struct i2c_msg *msgs, int num), + void *data, + struct dvb_adapter *adapter, + int id); extern void dvb_unregister_i2c_bus (int (*xfer) (struct dvb_i2c_bus *i2c, - struct i2c_msg msgs[], int num), + const struct i2c_msg msgs[], int num), struct dvb_adapter *adapter, int id); diff -Nru a/drivers/media/dvb/dvb-core/dvb_ksyms.c b/drivers/media/dvb/dvb-core/dvb_ksyms.c --- a/drivers/media/dvb/dvb-core/dvb_ksyms.c Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_ksyms.c Mon Apr 7 13:17:58 2003 @@ -8,6 +8,69 @@ #include "dvb_demux.h" #include "dvb_net.h" +/* if the miracle happens and "generic_usercopy()" is included into + the kernel, then this can vanish. please don't make the mistake and + define this as video_usercopy(). this will introduce a dependecy + to the v4l "videodev.o" module, which is unnecessary for some + cards (ie. the budget dvb-cards don't need the v4l module...) */ +int dvb_usercopy(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg, + int (*func)(struct inode *inode, struct file *file, + unsigned int cmd, void *arg)) +{ + char sbuf[128]; + void *mbuf = NULL; + void *parg = NULL; + int err = -EINVAL; + + /* Copy arguments into temp kernel buffer */ + switch (_IOC_DIR(cmd)) { + case _IOC_NONE: + parg = (void *)arg; + break; + case _IOC_READ: /* some v4l ioctls are marked wrong ... */ + case _IOC_WRITE: + case (_IOC_WRITE | _IOC_READ): + if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { + parg = sbuf; + } else { + /* too big to allocate from stack */ + mbuf = kmalloc(_IOC_SIZE(cmd),GFP_KERNEL); + if (NULL == mbuf) + return -ENOMEM; + parg = mbuf; + } + + err = -EFAULT; + if (copy_from_user(parg, (void *)arg, _IOC_SIZE(cmd))) + goto out; + break; + } + + /* call driver */ + if ((err = func(inode, file, cmd, parg)) == -ENOIOCTLCMD) + err = -EINVAL; + + if (err < 0) + goto out; + + /* Copy results into user buffer */ + switch (_IOC_DIR(cmd)) + { + case _IOC_READ: + case (_IOC_WRITE | _IOC_READ): + if (copy_to_user((void *)arg, parg, _IOC_SIZE(cmd))) + err = -EFAULT; + break; + } + +out: + if (mbuf) + kfree(mbuf); + + return err; +} +EXPORT_SYMBOL(dvb_usercopy); EXPORT_SYMBOL(dvb_dmxdev_init); EXPORT_SYMBOL(dvb_dmxdev_release); @@ -15,6 +78,7 @@ EXPORT_SYMBOL(dvb_dmx_release); EXPORT_SYMBOL(dvb_dmx_swfilter_packet); EXPORT_SYMBOL(dvb_dmx_swfilter_packets); +EXPORT_SYMBOL(dvb_dmx_swfilter); EXPORT_SYMBOL(dvb_register_frontend); EXPORT_SYMBOL(dvb_unregister_frontend); @@ -39,11 +103,7 @@ EXPORT_SYMBOL(dvb_generic_open); EXPORT_SYMBOL(dvb_generic_release); -EXPORT_SYMBOL(dvb_filter_ipack_init); -EXPORT_SYMBOL(dvb_filter_ipack_reset); -EXPORT_SYMBOL(dvb_filter_ipack_free); -EXPORT_SYMBOL(dvb_filter_ipack_flush); -EXPORT_SYMBOL(dvb_filter_instant_repack); EXPORT_SYMBOL(dvb_filter_pes2ts_init); EXPORT_SYMBOL(dvb_filter_pes2ts); +EXPORT_SYMBOL(dvb_filter_get_ac3info); diff -Nru a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c --- a/drivers/media/dvb/dvb-core/dvb_net.c Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_net.c Mon Apr 7 13:17:58 2003 @@ -3,29 +3,52 @@ * * Copyright (C) 2001 Convergence integrated media GmbH * Ralph Metzler + * Copyright (C) 2002 Ralph Metzler * * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. + * * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. + * * - * You should have received a copy of the GNU Lesser General Public License + * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * */ -#include - #include -#include "demux.h" + +#include +#include "dvb_demux.h" #include "dvb_net.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #include "compat.h" +#endif + +#define DVB_NET_MULTICAST_MAX 10 + +struct dvb_net_priv { + struct net_device_stats stats; + char name[6]; + u16 pid; + struct dmx_demux_s *demux; + dmx_section_feed_t *secfeed; + dmx_section_filter_t *secfilter; + int multi_num; + dmx_section_filter_t *multi_secfilter[DVB_NET_MULTICAST_MAX]; + unsigned char multi_macs[DVB_NET_MULTICAST_MAX][6]; + int mode; +}; + /* * Determine the packet's protocol ID. The rule here is that we * assume 802.3 if the type field is short enough to be a length. @@ -73,7 +96,7 @@ } static void -dvb_net_sec(struct net_device *dev, u8 *pkt, int pkt_len) +dvb_net_sec(struct net_device *dev, const u8 *pkt, int pkt_len) { u8 *eth; struct sk_buff *skb; @@ -86,7 +109,7 @@ if (skb == NULL) { printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n", dev->name); - ((dvb_net_priv_t *)dev->priv)->stats.rx_dropped++; + ((struct dvb_net_priv *)dev->priv)->stats.rx_dropped++; return; } eth=(u8 *) skb_put(skb, pkt_len+2); @@ -104,15 +127,14 @@ skb->protocol=my_eth_type_trans(skb,dev); skb->dev=dev; - ((dvb_net_priv_t *)dev->priv)->stats.rx_packets++; - ((dvb_net_priv_t *)dev->priv)->stats.rx_bytes+=skb->len; - //sti(); + ((struct dvb_net_priv *)dev->priv)->stats.rx_packets++; + ((struct dvb_net_priv *)dev->priv)->stats.rx_bytes+=skb->len; netif_rx(skb); } static int -dvb_net_callback(u8 *buffer1, size_t buffer1_len, - u8 *buffer2, size_t buffer2_len, +dvb_net_callback(const u8 *buffer1, size_t buffer1_len, + const u8 *buffer2, size_t buffer2_len, dmx_section_filter_t *filter, dmx_success_t success) { @@ -130,18 +152,21 @@ return 0; } -#define MASK 0x00; +static u8 mask_normal[6]={0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; +static u8 mask_allmulti[6]={0xff, 0xff, 0xff, 0x00, 0x00, 0x00}; +static u8 mac_allmulti[6]={0x01, 0x00, 0x5e, 0x00, 0x00, 0x00}; +static u8 mask_promisc[6]={0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; static int dvb_net_filter_set(struct net_device *dev, dmx_section_filter_t **secfilter, - unsigned char *mac) + u8 *mac, u8 *mac_mask) { - dvb_net_priv_t *priv=(dvb_net_priv_t *)dev->priv; + struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; int ret; *secfilter=0; - ret=priv->secfeed->allocate_filter(priv->secfeed, secfilter); + ret = priv->secfeed->allocate_filter(priv->secfeed, secfilter); if (ret<0) { printk("%s: could not get filter\n", dev->name); return ret; @@ -149,25 +174,26 @@ (*secfilter)->priv=(void *) dev; - memset((*secfilter)->filter_value, 0, DMX_MAX_FILTER_SIZE); - memset((*secfilter)->filter_mask , 0, DMX_MAX_FILTER_SIZE); + memset((*secfilter)->filter_value, 0x00, DMX_MAX_FILTER_SIZE); + memset((*secfilter)->filter_mask, 0x00, DMX_MAX_FILTER_SIZE); + memset((*secfilter)->filter_mode, 0xff, DMX_MAX_FILTER_SIZE); (*secfilter)->filter_value[0]=0x3e; - (*secfilter)->filter_mask[0]=MASK; + (*secfilter)->filter_mask[0]=0xff; (*secfilter)->filter_value[3]=mac[5]; - (*secfilter)->filter_mask[3]=MASK; + (*secfilter)->filter_mask[3]=mac_mask[5]; (*secfilter)->filter_value[4]=mac[4]; - (*secfilter)->filter_mask[4]=MASK; + (*secfilter)->filter_mask[4]=mac_mask[4]; (*secfilter)->filter_value[8]=mac[3]; - (*secfilter)->filter_mask[8]=MASK; + (*secfilter)->filter_mask[8]=mac_mask[3]; (*secfilter)->filter_value[9]=mac[2]; - (*secfilter)->filter_mask[9]=MASK; + (*secfilter)->filter_mask[9]=mac_mask[2]; (*secfilter)->filter_value[10]=mac[1]; - (*secfilter)->filter_mask[10]=MASK; + (*secfilter)->filter_mask[10]=mac_mask[1]; (*secfilter)->filter_value[11]=mac[0]; - (*secfilter)->filter_mask[11]=MASK; + (*secfilter)->filter_mask[11]=mac_mask[0]; printk("%s: filter mac=%02x %02x %02x %02x %02x %02x\n", dev->name, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); @@ -178,9 +204,9 @@ dvb_net_feed_start(struct net_device *dev) { int ret, i; - dvb_net_priv_t *priv=(dvb_net_priv_t *)dev->priv; - dmx_demux_t *demux=priv->demux; - unsigned char *mac=(unsigned char *) dev->dev_addr; + struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; + dmx_demux_t *demux = priv->demux; + unsigned char *mac = (unsigned char *) dev->dev_addr; priv->secfeed=0; priv->secfilter=0; @@ -200,28 +226,41 @@ priv->secfeed=0; return ret; } - MOD_INC_USE_COUNT; + /* fixme: is this correct? */ + try_module_get(THIS_MODULE); - dvb_net_filter_set(dev, &priv->secfilter, mac); - for (i=0; imulti_num; i++) - dvb_net_filter_set(dev, &priv->secfilter, - priv->multi_macs[i]); + if (priv->mode<3) + dvb_net_filter_set(dev, &priv->secfilter, mac, mask_normal); + switch (priv->mode) { + case 1: + for (i=0; imulti_num; i++) + dvb_net_filter_set(dev, &priv->multi_secfilter[i], + priv->multi_macs[i], mask_normal); + break; + case 2: + priv->multi_num=1; + dvb_net_filter_set(dev, &priv->multi_secfilter[0], mac_allmulti, mask_allmulti); + break; + case 3: + priv->multi_num=0; + dvb_net_filter_set(dev, &priv->secfilter, mac, mask_promisc); + break; + } + priv->secfeed->start_filtering(priv->secfeed); - printk("%s: feed_started\n", dev->name); return 0; } static void dvb_net_feed_stop(struct net_device *dev) { - dvb_net_priv_t *priv=(dvb_net_priv_t *)dev->priv; + struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; int i; if (priv->secfeed) { if (priv->secfeed->is_filtering) priv->secfeed->stop_filtering(priv->secfeed); - printk("%s: feed_stopped\n", dev->name); if (priv->secfilter) priv->secfeed-> release_filter(priv->secfeed, @@ -238,62 +277,70 @@ priv->demux-> release_section_feed(priv->demux, priv->secfeed); priv->secfeed=0; - MOD_DEC_USE_COUNT; + /* fixme: is this correct? */ + module_put(THIS_MODULE); } else printk("%s: no feed to stop\n", dev->name); } static int -dvb_set_mc_filter(struct net_device *dev, struct dev_mc_list *mc) +dvb_add_mc_filter(struct net_device *dev, struct dev_mc_list *mc) { - dvb_net_priv_t *priv=(dvb_net_priv_t *)dev->priv; + struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; + int ret; - if (priv->multi_num==DVB_NET_MULTICAST_MAX) + if (priv->multi_num >= DVB_NET_MULTICAST_MAX) return -ENOMEM; - printk("%s: set_mc_filter %d: %02x %02x %02x %02x %02x %02x\n", - dev->name, - priv->multi_num, - mc->dmi_addr[0], - mc->dmi_addr[1], - mc->dmi_addr[2], - mc->dmi_addr[3], - mc->dmi_addr[4], - mc->dmi_addr[5]); + ret = memcmp(priv->multi_macs[priv->multi_num], mc->dmi_addr, 6); memcpy(priv->multi_macs[priv->multi_num], mc->dmi_addr, 6); - + priv->multi_num++; - return 0; + + return ret; } static void dvb_net_set_multi(struct net_device *dev) { - dvb_net_priv_t *priv=(dvb_net_priv_t *)dev->priv; - - printk("%s: set_multi()\n", dev->name); - dvb_net_feed_stop(dev); + struct dvb_net_priv *priv = (struct dvb_net_priv*) dev->priv; + struct dev_mc_list *mc; + int mci; + int update = 0; + + if(dev->flags & IFF_PROMISC) { +// printk("%s: promiscuous mode\n", dev->name); + if(priv->mode != 3) + update = 1; + priv->mode = 3; + } else if(dev->flags & IFF_ALLMULTI) { +// printk("%s: allmulti mode\n", dev->name); + if(priv->mode != 2) + update = 1; + priv->mode = 2; + } else if(dev->mc_count > 0) { +// printk("%s: set_mc_list, %d entries\n", +// dev->name, dev->mc_count); + if(priv->mode != 1) + update = 1; + priv->mode = 1; + priv->multi_num = 0; + for (mci = 0, mc=dev->mc_list; + mci < dev->mc_count; + mc=mc->next, mci++) + if(dvb_add_mc_filter(dev, mc) != 0) + update = 1; + } else { + if(priv->mode != 0) + update = 1; + priv->mode = 0; + } - if (dev->flags&IFF_PROMISC) { - /* Enable promiscuous mode */ - printk("%s: promiscuous mode\n", dev->name); - } else if((dev->flags&IFF_ALLMULTI)) { - /* Disable promiscuous mode, use normal mode. */ - printk("%s: normal mode\n", dev->name); - } else if(dev->mc_count) { - int mci; - struct dev_mc_list *mc; - - printk("%s: set_mc_list, %d entries\n", - dev->name, dev->mc_count); - priv->multi_num=0; - for (mci=0, mc=dev->mc_list; - mcimc_count; - mc=mc->next, mci++) { - dvb_set_mc_filter(dev, mc); - } + if(netif_running(dev) != 0 && update > 0) + { + dvb_net_feed_stop(dev); + dvb_net_feed_start(dev); } - dvb_net_feed_start(dev); } static int @@ -308,13 +355,15 @@ dvb_net_set_mac(struct net_device *dev, void *p) { struct sockaddr *addr=p; + int update; + update = memcmp(dev->dev_addr, addr->sa_data, dev->addr_len); memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); - if (netif_running(dev)) { - dvb_net_feed_stop(dev); + if (netif_running(dev) != 0 && update > 0) { + dvb_net_feed_stop(dev); dvb_net_feed_start(dev); } - return 0; + return 0; } @@ -335,15 +384,13 @@ static struct net_device_stats * dvb_net_get_stats(struct net_device *dev) { - return &((dvb_net_priv_t *)dev->priv)->stats; + return &((struct dvb_net_priv*) dev->priv)->stats; } static int dvb_net_init_dev(struct net_device *dev) { - printk("dvb_net: dvb_net_init_dev()\n"); - ether_setup(dev); dev->open = dvb_net_open; @@ -354,6 +401,7 @@ dev->set_config = dvb_net_set_config; dev->set_mac_address = dvb_net_set_mac; dev->mtu = 4096; + dev->mc_count = 0; dev->flags |= IFF_NOARP; dev->hard_header_cache = NULL; @@ -364,7 +412,7 @@ } static int -get_if(dvb_net_t *dvbnet) +get_if(struct dvb_net *dvbnet) { int i; @@ -379,10 +427,11 @@ int -dvb_net_add_if(dvb_net_t *dvbnet, u16 pid) +dvb_net_add_if(struct dvb_net *dvbnet, u16 pid) { struct net_device *net; dmx_demux_t *demux; + struct dvb_net_priv *priv; int result; int if_num; @@ -402,25 +451,29 @@ net->name[5]=if_num+0x30; net->next = NULL; net->init = dvb_net_init_dev; - net->priv = kmalloc(sizeof(dvb_net_priv_t), GFP_KERNEL); + net->priv = kmalloc(sizeof(struct dvb_net_priv), GFP_KERNEL); if (net->priv == NULL) return -ENOMEM; - memset(net->priv, 0, sizeof(dvb_net_priv_t)); - ((dvb_net_priv_t *)net->priv)->demux=demux; - ((dvb_net_priv_t *)net->priv)->pid=pid; + priv = net->priv; + memset(priv, 0, sizeof(struct dvb_net_priv)); + priv->demux = demux; + priv->pid = pid; + priv->mode = 0; - net->base_addr=pid; + net->base_addr = pid; if ((result = register_netdev(net)) < 0) { return result; } - MOD_INC_USE_COUNT; + /* fixme: is this correct? */ + try_module_get(THIS_MODULE); + return if_num; } int -dvb_net_remove_if(dvb_net_t *dvbnet, int num) +dvb_net_remove_if(struct dvb_net *dvbnet, int num) { if (!dvbnet->state[num]) return -EINVAL; @@ -428,15 +481,17 @@ kfree(dvbnet->device[num].priv); unregister_netdev(&dvbnet->device[num]); dvbnet->state[num]=0; - MOD_DEC_USE_COUNT; + /* fixme: is this correct? */ + module_put(THIS_MODULE); + return 0; } -int dvb_net_ioctl(struct inode *inode, struct file *file, +int dvb_net_do_ioctl(struct inode *inode, struct file *file, unsigned int cmd, void *parg) { - struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; - dvb_net_t *dvbnet=(dvb_net_t *) dvbdev->priv; + struct dvb_device *dvbdev = (struct dvb_device *) file->private_data; + struct dvb_net *dvbnet = (struct dvb_net *) dvbdev->priv; if (((file->f_flags&O_ACCMODE)==O_RDONLY)) return -EPERM; @@ -453,6 +508,21 @@ dvbnetif->if_num=result; break; } + case NET_GET_IF: + { + struct net_device *netdev; + struct dvb_net_priv *priv_data; + struct dvb_net_if *dvbnetif=(struct dvb_net_if *)parg; + + if (dvbnetif->if_num >= dvbnet->dev_num || + !dvbnet->state[dvbnetif->if_num]) + return -EFAULT; + + netdev=(struct net_device*)&dvbnet->device[dvbnetif->if_num]; + priv_data=(struct dvb_net_priv*)netdev->priv; + dvbnetif->pid=priv_data->pid; + break; + } case NET_REMOVE_IF: return dvb_net_remove_if(dvbnet, (int) parg); default: @@ -461,23 +531,32 @@ return 0; } +static int +dvb_net_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) +{ + return dvb_usercopy(inode, file, cmd, arg, dvb_net_do_ioctl); +} + static struct file_operations dvb_net_fops = { - .owner = THIS_MODULE, - .ioctl = dvb_generic_ioctl, - .open = dvb_generic_open, - .release = dvb_generic_release, + .owner = THIS_MODULE, + .read = 0, + .write = 0, + .ioctl = dvb_net_ioctl, + .open = dvb_generic_open, + .release = dvb_generic_release, + .poll = 0, }; static struct dvb_device dvbdev_net = { - .priv = 0, - .users = 1, - .writers = 1, - .fops = &dvb_net_fops, - .kernel_ioctl = dvb_net_ioctl, + .priv = 0, + .users = 1, + .writers = 1, + .fops = &dvb_net_fops, }; void -dvb_net_release(dvb_net_t *dvbnet) +dvb_net_release(struct dvb_net *dvbnet) { int i; @@ -490,15 +569,19 @@ } int -dvb_net_init(struct dvb_adapter *adap, dvb_net_t *dvbnet, dmx_demux_t *demux) +dvb_net_init(struct dvb_adapter *adap, struct dvb_net *dvbnet, dmx_demux_t *dmx) { int i; - dvbnet->demux=demux; - dvbnet->dev_num=DVB_NET_DEVICES_MAX; + dvbnet->demux = dmx; + dvbnet->dev_num = DVB_NET_DEVICES_MAX; + for (i=0; idev_num; i++) - dvbnet->state[i]=0; - dvb_register_device(adap, &dvbnet->dvbdev, &dvbdev_net, dvbnet, DVB_DEVICE_NET); + dvbnet->state[i] = 0; + + dvb_register_device (adap, &dvbnet->dvbdev, &dvbdev_net, + dvbnet, DVB_DEVICE_NET); + return 0; } diff -Nru a/drivers/media/dvb/dvb-core/dvb_net.h b/drivers/media/dvb/dvb-core/dvb_net.h --- a/drivers/media/dvb/dvb-core/dvb_net.h Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvb_net.h Mon Apr 7 13:17:58 2003 @@ -32,23 +32,9 @@ #include "dvbdev.h" #define DVB_NET_DEVICES_MAX 10 -#define DVB_NET_MULTICAST_MAX 10 -typedef struct dvb_net_priv_s { - struct net_device_stats stats; - char name[6]; - u16 pid; - dmx_demux_t *demux; - dmx_section_feed_t *secfeed; - dmx_section_filter_t *secfilter; - int multi_num; - dmx_section_filter_t *multi_secfilter[DVB_NET_MULTICAST_MAX]; - unsigned char multi_macs[DVB_NET_MULTICAST_MAX][6]; -} dvb_net_priv_t; - -typedef struct dvb_net_s { +typedef struct dvb_net { struct dvb_device *dvbdev; - int card_num; int dev_num; struct net_device device[DVB_NET_DEVICES_MAX]; @@ -57,7 +43,8 @@ } dvb_net_t; -void dvb_net_release(dvb_net_t *); -int dvb_net_init(struct dvb_adapter *, dvb_net_t *, dmx_demux_t *); +void dvb_net_release(struct dvb_net *); +int dvb_net_init(struct dvb_adapter *, struct dvb_net *, dmx_demux_t *); #endif + diff -Nru a/drivers/media/dvb/dvb-core/dvb_ringbuffer.c b/drivers/media/dvb/dvb-core/dvb_ringbuffer.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/dvb-core/dvb_ringbuffer.c Mon Apr 7 13:17:58 2003 @@ -0,0 +1,176 @@ +/* + * + * dvb_ringbuffer.c: ring buffer implementation for the dvb driver + * + * Copyright (C) 2003 Oliver Endriss + * + * based on code originally found in av7110.c: + * Copyright (C) 1999-2002 Ralph Metzler + * & Marcus Metzler for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * + * + * the project's page is at http://www.linuxtv.org/dvb/ + */ + + + +#define __KERNEL_SYSCALLS__ +#include +#include +#include +#include + +#include "dvb_ringbuffer.h" + + + +void dvb_ringbuffer_init(dvb_ringbuffer_t *rbuf, void *data, size_t len) +{ + rbuf->pread=rbuf->pwrite=0; + rbuf->data=data; + rbuf->size=len; + + init_waitqueue_head(&rbuf->queue); + + spin_lock_init(&(rbuf->lock)); + rbuf->lock=SPIN_LOCK_UNLOCKED; +} + + + +int dvb_ringbuffer_empty(dvb_ringbuffer_t *rbuf) +{ + return (rbuf->pread==rbuf->pwrite); +} + + + +ssize_t dvb_ringbuffer_free(dvb_ringbuffer_t *rbuf) +{ + ssize_t free; + + free = rbuf->pread - rbuf->pwrite; + if (free <= 0) + free += rbuf->size; + return free-1; +} + + + +ssize_t dvb_ringbuffer_avail(dvb_ringbuffer_t *rbuf) +{ + ssize_t avail; + + avail = rbuf->pwrite - rbuf->pread; + if (avail < 0) + avail += rbuf->size; + return avail; +} + + + +void dvb_ringbuffer_flush(dvb_ringbuffer_t *rbuf) +{ + rbuf->pread = rbuf->pwrite; +} + + + +void dvb_ringbuffer_flush_spinlock_wakeup(dvb_ringbuffer_t *rbuf) +{ + unsigned long flags; + + spin_lock_irqsave(&rbuf->lock, flags); + dvb_ringbuffer_flush(rbuf); + spin_unlock_irqrestore(&rbuf->lock, flags); + + wake_up(&rbuf->queue); +} + + + +ssize_t dvb_ringbuffer_read(dvb_ringbuffer_t *rbuf, u8 *buf, size_t len, int usermem) +{ + size_t todo = len; + size_t split; + + split = (rbuf->pread + len > rbuf->size) ? rbuf->size - rbuf->pread : 0; + if (split > 0) { + if (!usermem) + memcpy(buf, rbuf->data+rbuf->pread, split); + else + if (copy_to_user(buf, rbuf->data+rbuf->pread, split)) + return -EFAULT; + buf += split; + todo -= split; + rbuf->pread = 0; + } + if (!usermem) + memcpy(buf, rbuf->data+rbuf->pread, todo); + else + if (copy_to_user(buf, rbuf->data+rbuf->pread, todo)) + return -EFAULT; + + rbuf->pread = (rbuf->pread + len) % rbuf->size; + + return len; +} + + + +ssize_t dvb_ringbuffer_write(dvb_ringbuffer_t *rbuf, const u8 *buf, + size_t len, int usermem) +{ + size_t todo = len; + size_t split; + + split = (rbuf->pwrite + len > rbuf->size) ? rbuf->size - rbuf->pwrite : 0; + + if (split > 0) { + if (!usermem) + memcpy(rbuf->data+rbuf->pwrite, buf, split); + else + if (copy_from_user(rbuf->data+rbuf->pwrite, + buf, split)) + return -EFAULT; + buf += split; + todo -= split; + rbuf->pwrite = 0; + } + if (!usermem) + memcpy(rbuf->data+rbuf->pwrite, buf, todo); + else + if (copy_from_user(rbuf->data+rbuf->pwrite, buf, todo)) + return -EFAULT; + + rbuf->pwrite = (rbuf->pwrite + len) % rbuf->size; + + return len; +} + + +EXPORT_SYMBOL_GPL(dvb_ringbuffer_init); +EXPORT_SYMBOL_GPL(dvb_ringbuffer_empty); +EXPORT_SYMBOL_GPL(dvb_ringbuffer_free); +EXPORT_SYMBOL_GPL(dvb_ringbuffer_avail); +EXPORT_SYMBOL_GPL(dvb_ringbuffer_flush); +EXPORT_SYMBOL_GPL(dvb_ringbuffer_flush_spinlock_wakeup); +EXPORT_SYMBOL_GPL(dvb_ringbuffer_read); +EXPORT_SYMBOL_GPL(dvb_ringbuffer_write); diff -Nru a/drivers/media/dvb/dvb-core/dvb_ringbuffer.h b/drivers/media/dvb/dvb-core/dvb_ringbuffer.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/dvb-core/dvb_ringbuffer.h Mon Apr 7 13:17:58 2003 @@ -0,0 +1,127 @@ +/* + * + * dvb_ringbuffer.h: ring buffer implementation for the dvb driver + * + * Copyright (C) 2003 Oliver Endriss + * + * based on code originally found in av7110.c: + * Copyright (C) 1999-2002 Ralph Metzler + * & Marcus Metzler for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * + * + * the project's page is at http://www.linuxtv.org/dvb/ + */ + +#ifndef _DVB_RINGBUFFER_H_ +#define _DVB_RINGBUFFER_H_ + + +typedef struct dvb_ringbuffer { + u8 *data; + ssize_t size; + ssize_t pread; + ssize_t pwrite; + + wait_queue_head_t queue; + spinlock_t lock; +} dvb_ringbuffer_t; + + +/* +** Notes: +** ------ +** (1) For performance reasons read and write routines don't check buffer sizes +** and/or number of bytes free/available. This has to be done before these +** routines are called. For example: +** +** *** write bytes *** +** free = dvb_ringbuffer_free(rbuf); +** if (free >= buflen) +** count = dvb_ringbuffer_write(rbuf, buffer, buflen, 0); +** else +** ... +** +** *** read min. 1000, max. bytes *** +** avail = dvb_ringbuffer_avail(rbuf); +** if (avail >= 1000) +** count = dvb_ringbuffer_read(rbuf, buffer, min(avail, bufsize), 0); +** else +** ... +** +** (2) If there is exactly one reader and one writer, there is no need +** to lock read or write operations. +** Two or more readers must be locked against each other. +** Flushing the buffer counts as a read operation. +** Two or more writers must be locked against each other. +*/ + +/* initialize ring buffer, lock and queue */ +extern void dvb_ringbuffer_init(dvb_ringbuffer_t *rbuf, void *data, size_t len); + +/* test whether buffer is empty */ +extern int dvb_ringbuffer_empty(dvb_ringbuffer_t *rbuf); + +/* return the number of free bytes in the buffer */ +extern ssize_t dvb_ringbuffer_free(dvb_ringbuffer_t *rbuf); + +/* return the number of bytes waiting in the buffer */ +extern ssize_t dvb_ringbuffer_avail(dvb_ringbuffer_t *rbuf); + + +/* read routines & macros */ +/* ---------------------- */ +/* flush buffer */ +extern void dvb_ringbuffer_flush(dvb_ringbuffer_t *rbuf); + +/* flush buffer protected by spinlock and wake-up waiting task(s) */ +extern void dvb_ringbuffer_flush_spinlock_wakeup(dvb_ringbuffer_t *rbuf); + +/* peek at byte in the buffer */ +#define DVB_RINGBUFFER_PEEK(rbuf,offs) \ + (rbuf)->data[((rbuf)->pread+(offs))%(rbuf)->size] + +/* advance read ptr by bytes */ +#define DVB_RINGBUFFER_SKIP(rbuf,num) \ + (rbuf)->pread=((rbuf)->pread+(num))%(rbuf)->size + +/* +** read bytes from ring buffer into +** specifies whether resides in user space +** returns number of bytes transferred or -EFAULT +*/ +extern ssize_t dvb_ringbuffer_read(dvb_ringbuffer_t *rbuf, u8 *buf, + size_t len, int usermem); + + +/* write routines & macros */ +/* ----------------------- */ +/* write single byte to ring buffer */ +#define DVB_RINGBUFFER_WRITE_BYTE(rbuf,byte) \ + { (rbuf)->data[(rbuf)->pwrite]=(byte); \ + (rbuf)->pwrite=((rbuf)->pwrite+1)%(rbuf)->size; } +/* +** write bytes to ring buffer +** specifies whether resides in user space +** returns number of bytes transferred or -EFAULT +*/ +extern ssize_t dvb_ringbuffer_write(dvb_ringbuffer_t *rbuf, const u8 *buf, + size_t len, int usermem); + +#endif /* _DVB_RINGBUFFER_H_ */ diff -Nru a/drivers/media/dvb/dvb-core/dvbdev.c b/drivers/media/dvb/dvb-core/dvbdev.c --- a/drivers/media/dvb/dvb-core/dvbdev.c Sat Mar 22 07:38:04 2003 +++ b/drivers/media/dvb/dvb-core/dvbdev.c Mon Apr 7 13:27:28 2003 @@ -35,11 +35,13 @@ #include #include #include -#include -#include "compat.h" #include "dvbdev.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #include "compat.h" +#endif + static int dvbdev_debug = 0; #define dprintk if (dvbdev_debug) printk @@ -57,7 +59,6 @@ #define DVB_MAX_IDS 4 #define nums2minor(num,type,id) ((num << 6) | (id << 4) | type) - static struct dvb_device* dvbdev_find_device (int minor) { @@ -160,7 +161,7 @@ if (!dvbdev->kernel_ioctl) return -EINVAL; - return video_usercopy (inode, file, cmd, arg, dvbdev->kernel_ioctl); + return dvb_usercopy (inode, file, cmd, arg, dvbdev->kernel_ioctl); } @@ -267,7 +268,7 @@ } -int dvb_register_adapter(struct dvb_adapter **padap, char *name) +int dvb_register_adapter(struct dvb_adapter **padap, const char *name) { struct dvb_adapter *adap; int num; @@ -288,12 +289,14 @@ memset (adap, 0, sizeof(struct dvb_adapter)); INIT_LIST_HEAD (&adap->device_list); - MOD_INC_USE_COUNT; + /* fixme: is this correct? */ + try_module_get(THIS_MODULE); printk ("DVB: registering new adapter (%s).\n", name); adap->devfs_handle = devfs_mk_dir("dvb/adapter%d", num); adap->num = num; + adap->name = name; list_add_tail (&adap->list_head, &dvb_adapter_list); @@ -311,7 +314,8 @@ list_del (&adap->list_head); up (&dvbdev_register_lock); kfree (adap); - MOD_DEC_USE_COUNT; + /* fixme: is this correct? */ + module_put(THIS_MODULE); return 0; } diff -Nru a/drivers/media/dvb/dvb-core/dvbdev.h b/drivers/media/dvb/dvb-core/dvbdev.h --- a/drivers/media/dvb/dvb-core/dvbdev.h Tue Nov 12 17:26:41 2002 +++ b/drivers/media/dvb/dvb-core/dvbdev.h Mon Apr 7 13:17:58 2003 @@ -48,6 +48,7 @@ devfs_handle_t devfs_handle; struct list_head list_head; struct list_head device_list; + const char *name; }; @@ -63,14 +64,14 @@ int writers; /* don't really need those !? -- FIXME: use video_usercopy */ - int (*kernel_ioctl)(struct inode *inode, struct file *file, + int (*kernel_ioctl)(struct inode *inode, struct file *file, unsigned int cmd, void *arg); void *priv; }; -extern int dvb_register_adapter (struct dvb_adapter **padap, char *name); +extern int dvb_register_adapter (struct dvb_adapter **padap, const char *name); extern int dvb_unregister_adapter (struct dvb_adapter *adap); extern int dvb_register_device (struct dvb_adapter *adap, @@ -84,7 +85,10 @@ extern int dvb_generic_open (struct inode *inode, struct file *file); extern int dvb_generic_release (struct inode *inode, struct file *file); extern int dvb_generic_ioctl (struct inode *inode, struct file *file, - unsigned int cmd, unsigned long arg); - + unsigned int cmd, unsigned long arg); +int dvb_usercopy(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg, + int (*func)(struct inode *inode, struct file *file, + unsigned int cmd, void *arg)); #endif /* #ifndef _DVBDEV_H_ */ diff -Nru a/drivers/media/dvb/frontends/Kconfig b/drivers/media/dvb/frontends/Kconfig --- a/drivers/media/dvb/frontends/Kconfig Sun Feb 9 17:29:49 2003 +++ b/drivers/media/dvb/frontends/Kconfig Mon Apr 7 13:20:02 2003 @@ -1,13 +1,17 @@ comment "Supported Frontend Modules" depends on DVB -config DVB_ALPS_BSRU6 - tristate "Alps BSRU6 (QPSK)" +config DVB_STV0299 + tristate "STV0299 based DVB-S frontend (QPSK)" depends on DVB_CORE help A DVB-S tuner module. - Say Y when you want to support this frontend. + Say Y when you want to support frontend based on this + demodulator. + + Some examples are the Alps BSRU6, the Philips SU1278 and + the LG TDQB-S00x. If you don't know what tuner module is soldered on your DVB adapter simply enable all supported frontends, the @@ -29,22 +33,34 @@ help A DVB-T tuner module. Say Y when you want to support this frontend. - This tuner module needs some microcode located in a file called + This tuner module needs some microcode located in a file called "Sc_main.mc" in the windows driver. Please pass the module parameter - mcfile="/PATH/FILENAME" when loading alps_tdlb7. + mcfile="/PATH/FILENAME" when loading alps_tdlb7.o. - If you don't know what tuner module is soldered on your - DVB adapter simply enable all supported frontends, the + If you don't know what tuner module is soldered on your + DVB adapter simply enable all supported frontends, the right one will get autodetected. + config DVB_ALPS_TDMB7 - tristate "Alps BSRV2 (OFDM)" + tristate "Alps TDMB7 (OFDM)" depends on DVB_CORE help - A DVB-S tuner module. Say Y when you want to support this frontend. + A DVB-T tuner module. Say Y when you want to support this frontend. - If you don't know what tuner module is soldered on your - DVB adapter simply enable all supported frontends, the + If you don't know what tuner module is soldered on your + DVB adapter simply enable all supported frontends, the + right one will get autodetected. + +config DVB_ATMEL_AT76C651 + tristate "Atmel AT76C651 (QAM)" + depends on DVB_CORE + help + The AT76C651 Demodulator is used in some DVB-C SetTopBoxes. Say Y + when you see this demodulator chip near your tuner module. + + If you don't know what tuner module is soldered on your + DVB adapter simply enable all supported frontends, the right one will get autodetected. config DVB_GRUNDIG_29504_491 diff -Nru a/drivers/media/dvb/frontends/Makefile b/drivers/media/dvb/frontends/Makefile --- a/drivers/media/dvb/frontends/Makefile Sat Dec 14 04:38:56 2002 +++ b/drivers/media/dvb/frontends/Makefile Mon Apr 7 13:20:02 2003 @@ -4,10 +4,11 @@ EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -obj-$(CONFIG_DVB_ALPS_BSRU6) += alps_bsru6.o +obj-$(CONFIG_DVB_STV0299) += stv0299.o obj-$(CONFIG_DVB_ALPS_BSRV2) += alps_bsrv2.o obj-$(CONFIG_DVB_ALPS_TDLB7) += alps_tdlb7.o obj-$(CONFIG_DVB_ALPS_TDMB7) += alps_tdmb7.o +obj-$(CONFIG_DVB_ATMEL_AT76C651) += at76c651.o obj-$(CONFIG_DVB_GRUNDIG_29504_491) += grundig_29504-491.o obj-$(CONFIG_DVB_GRUNDIG_29504_401) += grundig_29504-401.o obj-$(CONFIG_DVB_VES1820) += ves1820.o diff -Nru a/drivers/media/dvb/frontends/alps_bsru6.c b/drivers/media/dvb/frontends/alps_bsru6.c --- a/drivers/media/dvb/frontends/alps_bsru6.c Sat Nov 30 09:08:12 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,745 +0,0 @@ -/* - Alps BSRU6 and LG TDQB-S00x DVB QPSK frontend driver - - Copyright (C) 2001-2002 Convergence Integrated Media GmbH - , , - - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include -#include - -#include "compat.h" -#include "dvb_frontend.h" - - -static int debug = 0; -#define dprintk if (debug) printk - - -#define M_CLK (88000000UL) -/* M=21, K=0, P=0, f_VCO = 4MHz*4*(M+1)/(K+1) = 352 MHz */ - - -static -struct dvb_frontend_info bsru6_info = { -#ifdef CONFIG_ALPS_BSRU6_IS_LG_TDQBS00X - .name = "LG TDQB-S00x", -#else - .name = "Alps BSRU6", -#endif - .type = FE_QPSK, - .frequency_min = 950000, - .frequency_max = 2150000, - .frequency_stepsize = 125, /* kHz for QPSK frontends */ - .frequency_tolerance = M_CLK/2000, - .symbol_rate_min = 1000000, - .symbol_rate_max = 45000000, - .symbol_rate_tolerance = 500, /* ppm */ - .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | - FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | - FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | - FE_CAN_QPSK -}; - - -static -u8 init_tab [] = { - 0x01, 0x15, // M: 0x15 DIRCLK: 0 K:0 - 0x02, 0x30, // P: 0 SERCLK: 0 VCO:ON STDBY:0 - - 0x03, 0x00, - 0x04, 0x7d, // F22FR, F22=22kHz - 0x05, 0x35, // SDAT:0 SCLT:0 I2CT:1 - 0x06, 0x00, // DAC mode and MSB - 0x07, 0x00, // DAC LSB -// 0x08, 0x43, // DiSEqC - 0x08, 0x03, // DiSEqC - 0x09, 0x00, - 0x0a, 0x42, - 0x0c, 0x51, // QPSK reverse:1 Nyquist:0 OP0 val:1 OP0 con:1 OP1 val:1 OP1 con:1 - 0x0d, 0x82, - 0x0e, 0x23, - 0x0f, 0x52, - - 0x10, 0x3d, // AGC2 - 0x11, 0x84, - 0x12, 0xb5, // Lock detect: -64 Carrier freq detect:on - 0x13, 0xb6, // alpha_car b:4 a:0 noise est:256ks derot:on - 0x14, 0x93, // beat carc:0 d:0 e:0xf phase detect algo: 1 - 0x15, 0xc9, // lock detector threshold - - 0x16, 0x1d, - 0x17, 0x00, - 0x18, 0x14, - 0x19, 0xf2, - - 0x1a, 0x11, - - 0x1b, 0x9c, - 0x1c, 0x00, - 0x1d, 0x00, - 0x1e, 0x0b, - 0x1f, 0x50, - - 0x20, 0x00, - 0x21, 0x00, - 0x22, 0x00, - 0x23, 0x00, - 0x24, 0xff, - 0x25, 0xff, - 0x26, 0xff, - - 0x28, 0x00, // out imp: normal out type: parallel FEC mode:0 - 0x29, 0x1e, // 1/2 threshold - 0x2a, 0x14, // 2/3 threshold - 0x2b, 0x0f, // 3/4 threshold - 0x2c, 0x09, // 5/6 threshold - 0x2d, 0x05, // 7/8 threshold - 0x2e, 0x01, - - 0x31, 0x1f, // test all FECs - - 0x32, 0x19, // viterbi and synchro search - 0x33, 0xfc, // rs control - 0x34, 0x93, // error control - - 0x0b, 0x00, - 0x27, 0x00, - 0x2f, 0x00, - 0x30, 0x00, - 0x35, 0x00, - 0x36, 0x00, - 0x37, 0x00, - 0x38, 0x00, - 0x39, 0x00, - 0x3a, 0x00, - 0x3b, 0x00, - 0x3c, 0x00, - 0x3d, 0x00, - 0x3e, 0x00, - 0x3f, 0x00, - 0x40, 0x00, - 0x41, 0x00, - 0x42, 0x00, - 0x43, 0x00, - 0x44, 0x00, - 0x45, 0x00, - 0x46, 0x00, - 0x47, 0x00, - 0x48, 0x00, - 0x49, 0x00, - 0x4a, 0x00, - 0x4b, 0x00, - 0x4c, 0x00, - 0x4d, 0x00, - 0x4e, 0x00, - 0x4f, 0x00 -}; - - -static -int stv0299_writereg (struct dvb_i2c_bus *i2c, u8 reg, u8 data) -{ - int ret; - u8 buf [] = { reg, data }; - struct i2c_msg msg = { .addr = 0x68, .flags = 0, .buf = buf, .len = 2 }; - - dprintk ("%s\n", __FUNCTION__); - - ret = i2c->xfer (i2c, &msg, 1); - - if (ret != 1) - dprintk("%s: writereg error (reg == 0x%02x, val == 0x%02x, ret == %i)\n", - __FUNCTION__, reg, data, ret); - - return (ret != 1) ? -1 : 0; -} - - -static -u8 stv0299_readreg (struct dvb_i2c_bus *i2c, u8 reg) -{ - int ret; - u8 b0 [] = { reg }; - u8 b1 [] = { 0 }; - struct i2c_msg msg [] = { { .addr = 0x68, .flags = 0, .buf = b0, .len = 1 }, - { .addr = 0x68, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; - - dprintk ("%s\n", __FUNCTION__); - - ret = i2c->xfer (i2c, msg, 2); - - if (ret != 2) - dprintk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); - - return b1[0]; -} - - -static -int stv0299_readregs (struct dvb_i2c_bus *i2c, u8 reg1, u8 *b, u8 len) -{ - int ret; - struct i2c_msg msg [] = { { .addr = 0x68, .flags = 0, .buf = ®1, .len = 1 }, - { .addr = 0x68, .flags = I2C_M_RD, .buf = b, .len = len } }; - - dprintk ("%s\n", __FUNCTION__); - - ret = i2c->xfer (i2c, msg, 2); - - if (ret != 2) - dprintk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); - - return ret == 2 ? 0 : -1; -} - - - -static -int tsa5059_write (struct dvb_i2c_bus *i2c, u8 data [4]) -{ - int ret; - u8 rpt1 [] = { 0x05, 0xb5 }; /* enable i2c repeater on stv0299 */ - struct i2c_msg msg [] = {{ .addr = 0x68, .flags = 0, .buf = rpt1, .len = 2 }, - { .addr = 0x61, .flags = 0, .buf = data, .len = 4 }}; - - dprintk ("%s\n", __FUNCTION__); - - ret = i2c->xfer (i2c, msg, 2); - - if (ret != 2) - dprintk("%s: i/o error (ret == %i)\n", __FUNCTION__, ret); - - return (ret != 2) ? -1 : 0; -} - - -/** - * set up the downconverter frequency divisor for a - * reference clock comparision frequency of 125 kHz. - */ -static -int tsa5059_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, u8 pwr) -{ - u32 div = freq / 125; - u8 buf [4] = { (div >> 8) & 0x7f, div & 0xff, 0x84, (pwr << 5) | 0x20 }; - - dprintk ("%s\n", __FUNCTION__); - - return tsa5059_write (i2c, buf); -} - - -static -int stv0299_init (struct dvb_i2c_bus *i2c) -{ - int i; - - dprintk("stv0299: init chip\n"); - - for (i=0; i 4) - return FEC_AUTO; - - return fec_tab [index]; -} - - -static -int stv0299_wait_diseqc_fifo (struct dvb_i2c_bus *i2c, int timeout) -{ - unsigned long start = jiffies; - - dprintk ("%s\n", __FUNCTION__); - - while (stv0299_readreg(i2c, 0x0a) & 1) { - if (jiffies - start > timeout) { - dprintk ("%s: timeout!!\n", __FUNCTION__); - return -ETIMEDOUT; - } - current->state = TASK_INTERRUPTIBLE; - schedule_timeout (1); - }; - - return 0; -} - - -static -int stv0299_wait_diseqc_idle (struct dvb_i2c_bus *i2c, int timeout) -{ - unsigned long start = jiffies; - - dprintk ("%s\n", __FUNCTION__); - - while ((stv0299_readreg(i2c, 0x0a) & 3) != 2 ) { - if (jiffies - start > timeout) { - dprintk ("%s: timeout!!\n", __FUNCTION__); - return -ETIMEDOUT; - } - current->state = TASK_INTERRUPTIBLE; - schedule_timeout (1); - }; - - return 0; -} - - -static -int stv0299_send_diseqc_msg (struct dvb_i2c_bus *i2c, - struct dvb_diseqc_master_cmd *m) -{ - u8 val; - int i; - - dprintk ("%s\n", __FUNCTION__); - - if (stv0299_wait_diseqc_idle (i2c, 100) < 0) - return -ETIMEDOUT; - - val = stv0299_readreg (i2c, 0x08); - - if (stv0299_writereg (i2c, 0x08, (val & ~0x7) | 0x6)) /* DiSEqC mode */ - return -EREMOTEIO; - - for (i=0; imsg_len; i++) { - if (stv0299_wait_diseqc_fifo (i2c, 100) < 0) - return -ETIMEDOUT; - - if (stv0299_writereg (i2c, 0x09, m->msg[i])) - return -EREMOTEIO; - } - - if (stv0299_wait_diseqc_idle (i2c, 100) < 0) - return -ETIMEDOUT; - - return 0; -} - - -static -int stv0299_send_diseqc_burst (struct dvb_i2c_bus *i2c, fe_sec_mini_cmd_t burst) -{ - u8 val; - - dprintk ("%s\n", __FUNCTION__); - - if (stv0299_wait_diseqc_idle (i2c, 100) < 0) - return -ETIMEDOUT; - - val = stv0299_readreg (i2c, 0x08); - - if (stv0299_writereg (i2c, 0x08, (val & ~0x7) | 0x2)) /* burst mode */ - return -EREMOTEIO; - - if (stv0299_writereg (i2c, 0x09, burst == SEC_MINI_A ? 0x00 : 0xff)) - return -EREMOTEIO; - - if (stv0299_wait_diseqc_idle (i2c, 100) < 0) - return -ETIMEDOUT; - - if (stv0299_writereg (i2c, 0x08, val)) - return -EREMOTEIO; - - return 0; -} - - -static -int stv0299_set_tone (struct dvb_i2c_bus *i2c, fe_sec_tone_mode_t tone) -{ - u8 val; - - dprintk ("%s\n", __FUNCTION__); - - if (stv0299_wait_diseqc_idle (i2c, 100) < 0) - return -ETIMEDOUT; - - val = stv0299_readreg (i2c, 0x08); - - switch (tone) { - case SEC_TONE_ON: - return stv0299_writereg (i2c, 0x08, val | 0x3); - case SEC_TONE_OFF: - return stv0299_writereg (i2c, 0x08, (val & ~0x3) | 0x02); - default: - return -EINVAL; - }; -} - - -static -int stv0299_set_voltage (struct dvb_i2c_bus *i2c, fe_sec_voltage_t voltage) -{ - u8 val; - - dprintk ("%s\n", __FUNCTION__); - - val = stv0299_readreg (i2c, 0x0c); - val &= 0x0f; - val |= 0x40; - - switch (voltage) { - case SEC_VOLTAGE_13: - return stv0299_writereg (i2c, 0x0c, val); - case SEC_VOLTAGE_18: - return stv0299_writereg (i2c, 0x0c, val | 0x10); - default: - return -EINVAL; - }; -} - - -static -int stv0299_set_symbolrate (struct dvb_i2c_bus *i2c, u32 srate) -{ - u32 ratio; - u32 tmp; - u8 aclk = 0xb4, bclk = 0x51; - - if (srate > M_CLK) - srate = M_CLK; - if (srate < 500000) - srate = 500000; - - if (srate < 30000000) { aclk = 0xb6; bclk = 0x53; } - if (srate < 14000000) { aclk = 0xb7; bclk = 0x53; } - if (srate < 7000000) { aclk = 0xb7; bclk = 0x4f; } - if (srate < 3000000) { aclk = 0xb7; bclk = 0x4b; } - if (srate < 1500000) { aclk = 0xb7; bclk = 0x47; } - -#define FIN (M_CLK >> 4) - - tmp = srate << 4; - ratio = tmp / FIN; - - tmp = (tmp % FIN) << 8; - ratio = (ratio << 8) + tmp / FIN; - - tmp = (tmp % FIN) << 8; - ratio = (ratio << 8) + tmp / FIN; - - stv0299_writereg (i2c, 0x13, aclk); - stv0299_writereg (i2c, 0x14, bclk); - stv0299_writereg (i2c, 0x1f, (ratio >> 16) & 0xff); - stv0299_writereg (i2c, 0x20, (ratio >> 8) & 0xff); - stv0299_writereg (i2c, 0x21, (ratio ) & 0xf0); - - return 0; -} - - -static -int stv0299_get_symbolrate (struct dvb_i2c_bus *i2c) -{ - u32 Mclk = M_CLK / 4096L; - u32 srate; - s32 offset; - u8 sfr[3]; - s8 rtf; - - dprintk ("%s\n", __FUNCTION__); - - stv0299_readregs (i2c, 0x1f, sfr, 3); - stv0299_readregs (i2c, 0x1a, &rtf, 1); - - srate = (sfr[0] << 8) | sfr[1]; - srate *= Mclk; - srate /= 16; - srate += (sfr[2] >> 4) * Mclk / 256; - - offset = (s32) rtf * (srate / 4096L); - offset /= 128; - - srate += offset; - - srate += 1000; - srate /= 2000; - srate *= 2000; - - return srate; -} - - -static -int bsru6_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) -{ - struct dvb_i2c_bus *i2c = fe->i2c; - - dprintk ("%s\n", __FUNCTION__); - - switch (cmd) { - case FE_GET_INFO: - memcpy (arg, &bsru6_info, sizeof(struct dvb_frontend_info)); - break; - - case FE_READ_STATUS: - { - fe_status_t *status = (fe_status_t *) arg; - u8 signal = 0xff - stv0299_readreg (i2c, 0x18); - u8 sync = stv0299_readreg (i2c, 0x1b); - - *status = 0; - - if (signal > 10) - *status |= FE_HAS_SIGNAL; - - if (sync & 0x80) - *status |= FE_HAS_CARRIER; - - if (sync & 0x10) - *status |= FE_HAS_VITERBI; - - if (sync & 0x08) - *status |= FE_HAS_SYNC; - - if ((sync & 0x98) == 0x98) - *status |= FE_HAS_LOCK; - - break; - } - - case FE_READ_BER: - *((u32*) arg) = (stv0299_readreg (i2c, 0x1d) << 8) - | stv0299_readreg (i2c, 0x1e); - break; - - case FE_READ_SIGNAL_STRENGTH: - { - s32 signal = 0xffff - ((stv0299_readreg (i2c, 0x18) << 8) - | stv0299_readreg (i2c, 0x19)); - signal = signal * 5 / 4; - *((u16*) arg) = (signal > 0xffff) ? 0xffff : - (signal < 0) ? 0 : signal; - break; - } - case FE_READ_SNR: - { - s32 snr = 0xffff - ((stv0299_readreg (i2c, 0x24) << 8) - | stv0299_readreg (i2c, 0x25)); - snr = 3 * (snr - 0xa100); - *((u16*) arg) = (snr > 0xffff) ? 0xffff : - (snr < 0) ? 0 : snr; - break; - } - case FE_READ_UNCORRECTED_BLOCKS: - *((u32*) arg) = 0; /* the stv0299 can't measure BER and */ - return -EOPNOTSUPP; /* errors at the same time.... */ - - case FE_SET_FRONTEND: - { - struct dvb_frontend_parameters *p = arg; - - tsa5059_set_tv_freq (i2c, p->frequency, 3); - stv0299_set_inversion (i2c, p->inversion); - stv0299_set_FEC (i2c, p->u.qpsk.fec_inner); - stv0299_set_symbolrate (i2c, p->u.qpsk.symbol_rate); - tsa5059_set_tv_freq (i2c, p->frequency, 0); - stv0299_writereg (i2c, 0x22, 0x00); - stv0299_writereg (i2c, 0x23, 0x00); - stv0299_readreg (i2c, 0x23); - stv0299_writereg (i2c, 0x12, 0xb9); - break; - } - - case FE_GET_FRONTEND: - { - struct dvb_frontend_parameters *p = arg; - s32 derot_freq; - - derot_freq = (s32)(s16) ((stv0299_readreg (i2c, 0x22) << 8) - | stv0299_readreg (i2c, 0x23)); - - derot_freq *= (M_CLK >> 16); - derot_freq += 500; - derot_freq /= 1000; - - p->frequency += derot_freq; - p->inversion = (stv0299_readreg (i2c, 0x0c) & 1) ? - INVERSION_OFF : INVERSION_ON; - p->u.qpsk.fec_inner = stv0299_get_fec (i2c); - p->u.qpsk.symbol_rate = stv0299_get_symbolrate (i2c); - break; - } - - case FE_SLEEP: - stv0299_writereg (i2c, 0x0c, 0x00); /* LNB power off! */ - stv0299_writereg (i2c, 0x02, 0x80); - break; - - case FE_INIT: - return stv0299_init (i2c); - - case FE_RESET: - stv0299_writereg (i2c, 0x22, 0x00); - stv0299_writereg (i2c, 0x23, 0x00); - stv0299_readreg (i2c, 0x23); - stv0299_writereg (i2c, 0x12, 0xb9); - break; - - case FE_DISEQC_SEND_MASTER_CMD: - return stv0299_send_diseqc_msg (i2c, arg); - - case FE_DISEQC_SEND_BURST: - return stv0299_send_diseqc_burst (i2c, (fe_sec_mini_cmd_t) arg); - - case FE_SET_TONE: - return stv0299_set_tone (i2c, (fe_sec_tone_mode_t) arg); - - case FE_SET_VOLTAGE: - return stv0299_set_voltage (i2c, (fe_sec_voltage_t) arg); - - default: - return -EOPNOTSUPP; - }; - - return 0; -} - - - -static -int bsru6_attach (struct dvb_i2c_bus *i2c) -{ - dprintk ("%s\n", __FUNCTION__); - - if ((stv0299_readreg (i2c, 0x00)) != 0xa1) - return -ENODEV; - - dvb_register_frontend (bsru6_ioctl, i2c, NULL, &bsru6_info); - - return 0; -} - - -static -void bsru6_detach (struct dvb_i2c_bus *i2c) -{ - dprintk ("%s\n", __FUNCTION__); - - dvb_unregister_frontend (bsru6_ioctl, i2c); -} - - -static -int __init init_bsru6 (void) -{ - dprintk ("%s\n", __FUNCTION__); - - return dvb_register_i2c_device (THIS_MODULE, bsru6_attach, bsru6_detach); -} - - -static -void __exit exit_bsru6 (void) -{ - dprintk ("%s\n", __FUNCTION__); - - dvb_unregister_i2c_device (bsru6_attach); -} - -module_init (init_bsru6); -module_exit (exit_bsru6); - -MODULE_PARM(debug,"i"); -MODULE_PARM_DESC(debug, "enable verbose debug messages"); -MODULE_DESCRIPTION("Alps BSRU6/LG TDQB-S00x DVB Frontend driver"); -MODULE_AUTHOR("Ralph Metzler, Holger Waechtler"); -MODULE_LICENSE("GPL"); - diff -Nru a/drivers/media/dvb/frontends/alps_bsrv2.c b/drivers/media/dvb/frontends/alps_bsrv2.c --- a/drivers/media/dvb/frontends/alps_bsrv2.c Sat Nov 30 09:09:19 2002 +++ b/drivers/media/dvb/frontends/alps_bsrv2.c Mon Apr 7 13:20:02 2003 @@ -23,7 +23,6 @@ #include #include -#include "compat.h" #include "dvb_frontend.h" static int debug = 0; @@ -32,20 +31,20 @@ static struct dvb_frontend_info bsrv2_info = { - .name = "Alps BSRV2", - .type = FE_QPSK, - .frequency_min = 950000, - .frequency_max = 2150000, - .frequency_stepsize = 250, /* kHz for QPSK frontends */ - .frequency_tolerance = 29500, - .symbol_rate_min = 1000000, - .symbol_rate_max = 45000000, - .notifier_delay = 50, /* 1/20 s */ - .caps = FE_CAN_INVERSION_AUTO | - FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | - FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | - FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | - FE_CAN_QPSK + name: "Alps BSRV2", + type: FE_QPSK, + frequency_min: 950000, + frequency_max: 2150000, + frequency_stepsize: 250, /* kHz for QPSK frontends */ + frequency_tolerance: 29500, + symbol_rate_min: 1000000, + symbol_rate_max: 45000000, +/* symbol_rate_tolerance: ???,*/ + notifier_delay: 50, /* 1/20 s */ + caps: FE_CAN_INVERSION_AUTO | + FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | + FE_CAN_QPSK }; @@ -73,10 +72,10 @@ static -int ves1893_writereg (struct dvb_i2c_bus *i2c, int reg, int data) +int ves1893_writereg (struct dvb_i2c_bus *i2c, u8 reg, u8 data) { u8 buf [] = { 0x00, reg, data }; - struct i2c_msg msg = { .addr = 0x08, .flags = 0, .buf = buf, .len = 3 }; + struct i2c_msg msg = { addr: 0x08, flags: 0, buf: buf, len: 3 }; int err; if ((err = i2c->xfer (i2c, &msg, 1)) != 1) { @@ -94,8 +93,8 @@ int ret; u8 b0 [] = { 0x00, reg }; u8 b1 [] = { 0 }; - struct i2c_msg msg [] = { { .addr = 0x08, .flags = 0, .buf = b0, .len = 2 }, - { .addr = 0x08, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; + struct i2c_msg msg [] = { { addr: 0x08, flags: 0, buf: b0, len: 2 }, + { addr: 0x08, flags: I2C_M_RD, buf: b1, len: 1 } }; ret = i2c->xfer (i2c, msg, 2); @@ -110,7 +109,7 @@ int sp5659_write (struct dvb_i2c_bus *i2c, u8 data [4]) { int ret; - struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = 4 }; + struct i2c_msg msg = { addr: 0x61, flags: 0, buf: data, len: 4 }; ret = i2c->xfer (i2c, &msg, 1); @@ -297,7 +296,7 @@ return ves1893_writereg (i2c, 0x1f, 0x30); default: return -EINVAL; - }; + } } @@ -314,7 +313,7 @@ case FE_READ_STATUS: { fe_status_t *status = arg; - int sync = ves1893_readreg (i2c, 0x0e); + u8 sync = ves1893_readreg (i2c, 0x0e); *status = 0; diff -Nru a/drivers/media/dvb/frontends/alps_tdlb7.c b/drivers/media/dvb/frontends/alps_tdlb7.c --- a/drivers/media/dvb/frontends/alps_tdlb7.c Sat Nov 30 09:10:12 2002 +++ b/drivers/media/dvb/frontends/alps_tdlb7.c Mon Apr 7 13:20:02 2003 @@ -51,7 +51,6 @@ #include #include -#include "compat.h" #include "dvb_frontend.h" static int debug = 0; @@ -63,7 +62,7 @@ #define dprintk if (debug) printk /* microcode size for sp8870 */ -#define SP8870_CODE_SIZE 16384 +#define SP8870_CODE_SIZE 16382 /* starting point for microcode in file 'Sc_main.mc' */ #define SP8870_CODE_OFFSET 0x0A @@ -73,15 +72,21 @@ static struct dvb_frontend_info tdlb7_info = { - .name = "Alps TDLB7", - .type = FE_OFDM, - .frequency_min = 470000000, - .frequency_max = 860000000, - .frequency_stepsize = 166666, - .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | - FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | - FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | - FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 + name: "Alps TDLB7", + type: FE_OFDM, + frequency_min: 470000000, + frequency_max: 860000000, + frequency_stepsize: 166666, +#if 0 + frequency_tolerance: ???, + symbol_rate_min: ???, + symbol_rate_max: ???, + symbol_rate_tolerance: ???, + notifier_delay: 0, +#endif + caps: FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | + FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 }; @@ -89,7 +94,7 @@ int sp8870_writereg (struct dvb_i2c_bus *i2c, u16 reg, u16 data) { u8 buf [] = { reg >> 8, reg & 0xff, data >> 8, data & 0xff }; - struct i2c_msg msg = { .addr = 0x71, .flags = 0, .buf = buf, .len = 4 }; + struct i2c_msg msg = { addr: 0x71, flags: 0, buf: buf, len: 4 }; int err; if ((err = i2c->xfer (i2c, &msg, 1)) != 1) { @@ -107,8 +112,8 @@ int ret; u8 b0 [] = { reg >> 8 , reg & 0xff }; u8 b1 [] = { 0, 0 }; - struct i2c_msg msg [] = { { .addr = 0x71, .flags = 0, .buf = b0, .len = 2 }, - { .addr = 0x71, .flags = I2C_M_RD, .buf = b1, .len = 2 } }; + struct i2c_msg msg [] = { { addr: 0x71, flags: 0, buf: b0, len: 2 }, + { addr: 0x71, flags: I2C_M_RD, buf: b1, len: 2 } }; ret = i2c->xfer (i2c, msg, 2); @@ -123,7 +128,7 @@ int sp5659_write (struct dvb_i2c_bus *i2c, u8 data [4]) { int ret; - struct i2c_msg msg = { .addr = 0x60, .flags = 0, .buf = data, .len = 4 }; + struct i2c_msg msg = { addr: 0x60, flags: 0, buf: data, len: 4 }; ret = i2c->xfer (i2c, &msg, 1); @@ -135,10 +140,21 @@ static -int sp5659_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, u8 pwr) +int sp5659_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq) { u32 div = (freq + 36200000) / 166666; - u8 buf [4] = { (div >> 8) & 0x7f, div & 0xff, 0x85, (pwr << 5) | 0x30 }; + u8 buf [4]; + int pwr; + + if (freq <= 782000000) + pwr = 1; + else + pwr = 2; + + buf[0] = (div >> 8) & 0x7f; + buf[1] = div & 0xff; + buf[2] = 0x85; + buf[3] = pwr << 6; return sp5659_write (i2c, buf); } @@ -193,8 +209,14 @@ int c; mm_segment_t fs = get_fs(); - sp8870_writereg(i2c,0x8F08,0x1FFF); - sp8870_writereg(i2c,0x8F0A,0x0000); + // system controller stop + sp8870_writereg(i2c,0x0F00,0x0000); + + // instruction RAM register hiword + sp8870_writereg(i2c,0x8F08,((SP8870_CODE_SIZE/2) & 0xFFFF)); + + // instruction RAM MWR + sp8870_writereg(i2c,0x8F0A,((SP8870_CODE_SIZE/2) >> 16)); set_fs(get_ds()); if (sp8870_read_code(mcfile,(char**) &lcode)<0) return -1; @@ -210,7 +232,8 @@ msg.buf=buf; msg.len=c; if ((err = i2c->xfer (i2c, &msg, 1)) != 1) { - dprintk ("%s: i2c error (err == %i)\n", __FUNCTION__, err); + dprintk ("%s: i2c error (err == %i)\n", + __FUNCTION__, err); vfree(lcode); return -EREMOTEIO; } @@ -228,49 +251,40 @@ dprintk ("%s\n", __FUNCTION__); - sp8870_readreg(i2c,0x200); - sp8870_readreg(i2c,0x200); - sp8870_readreg(i2c,0x0F00); /* system controller stop */ - sp8870_readreg(i2c,0x0301); /* ???????? */ - sp8870_readreg(i2c,0x0309); /* integer carrier offset */ - sp8870_readreg(i2c,0x030A); /* fractional carrier offset */ - sp8870_readreg(i2c,0x0311); /* filter for 8 Mhz channel */ - sp8870_readreg(i2c,0x0319); /* sample rate correction bit [23..17] */ - sp8870_readreg(i2c,0x031A); /* sample rate correction bit [16..0] */ - sp8870_readreg(i2c,0x0338); /* ???????? */ - sp8870_readreg(i2c,0x0F00); - sp8870_readreg(i2c,0x0200); + // system controller stop + sp8870_writereg(i2c,0x0F00,0x0000); - if (loadcode) { - dprintk("%s: loading mcfile '%s' !\n", __FUNCTION__, mcfile); - if (sp8870_load_code(i2c)==0) - dprintk("%s: microcode loaded!\n", __FUNCTION__); - }else{ - dprintk("%s: without loading mcfile!\n", __FUNCTION__); - } + // ADC mode: 2 for MT8872, 3 for MT8870/8871 + sp8870_writereg(i2c,0x0301,0x0003); - return 0; -} + // Reed Solomon parity bytes passed to output + sp8870_writereg(i2c,0x0C13,0x0001); + // MPEG clock is suppressed if no valid data + sp8870_writereg(i2c,0x0C14,0x0001); -static -int sp8870_reset (struct dvb_i2c_bus *i2c) -{ - dprintk("%s\n", __FUNCTION__); - sp8870_writereg(i2c,0x0F00,0x0000); /* system controller stop */ - sp8870_writereg(i2c,0x0301,0x0003); /* ???????? */ - sp8870_writereg(i2c,0x0309,0x0400); /* integer carrier offset */ - sp8870_writereg(i2c,0x030A,0x0000); /* fractional carrier offset */ - sp8870_writereg(i2c,0x0311,0x0000); /* filter for 8 Mhz channel */ - sp8870_writereg(i2c,0x0319,0x000A); /* sample rate correction bit [23..17] */ - sp8870_writereg(i2c,0x031A,0x0AAB); /* sample rate correction bit [16..0] */ - sp8870_writereg(i2c,0x0338,0x0000); /* ???????? */ - sp8870_writereg(i2c,0x0201,0x0000); /* interrupts for change of lock or tuner adjustment disabled */ - sp8870_writereg(i2c,0x0F00,0x0001); /* system controller start */ + // sample rate correction bit [23..17] + sp8870_writereg(i2c,0x0319,0x000A); - return 0; + // sample rate correction bit [16..0] + sp8870_writereg(i2c,0x031A,0x0AAB); + + // integer carrier offset + sp8870_writereg(i2c,0x0309,0x0400); + + // fractional carrier offset + sp8870_writereg(i2c,0x030A,0x0000); + + // filter for 8 Mhz channel + sp8870_writereg(i2c,0x0311,0x0000); + + // scan order: 2k first = 0x0000, 8k first = 0x0001 + sp8870_writereg(i2c,0x0338,0x0000); + + return 0; } + static int tdlb7_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) { @@ -285,10 +299,10 @@ { fe_status_t *status = arg; int sync = sp8870_readreg (i2c, 0x0200); + int signal = 0xff-sp8870_readreg (i2c, 0x303); *status=0; - - if (sync&0x04) // FIXME: find criteria for having signal + if (signal>10) // FIXME: is 10 the right value ? *status |= FE_HAS_SIGNAL; if (sync&0x04) // FIXME: find criteria @@ -309,15 +323,15 @@ case FE_READ_BER: { u32 *ber=(u32 *) arg; - *ber=sp8870_readreg(i2c,0x0C07); // bit error rate before Viterbi + // bit error rate before Viterbi + *ber=sp8870_readreg(i2c,0x0C07); break; } - case FE_READ_SIGNAL_STRENGTH: // not supported by hardware? + case FE_READ_SIGNAL_STRENGTH: // FIXME: correct registers ? { - s32 *signal=(s32 *) arg; - *signal=0; + *((u16*) arg) = 0xffff-((sp8870_readreg (i2c, 0x306) << 8) | sp8870_readreg (i2c, 0x303)); break; } @@ -325,27 +339,64 @@ { s32 *snr=(s32 *) arg; *snr=0; - break; + return -EOPNOTSUPP; } case FE_READ_UNCORRECTED_BLOCKS: // not supported by hardware? { u32 *ublocks=(u32 *) arg; *ublocks=0; - break; + return -EOPNOTSUPP; } case FE_SET_FRONTEND: { struct dvb_frontend_parameters *p = arg; - sp5659_set_tv_freq (i2c, p->frequency, 0); - // all other parameters are set by the on card - // system controller. Don't know how to pass - // distinct values to the card. - break; + + // system controller stop + sp8870_writereg(i2c,0x0F00,0x0000); + + sp5659_set_tv_freq (i2c, p->frequency); + + // sample rate correction bit [23..17] + sp8870_writereg(i2c,0x0319,0x000A); + + // sample rate correction bit [16..0] + sp8870_writereg(i2c,0x031A,0x0AAB); + + // integer carrier offset + sp8870_writereg(i2c,0x0309,0x0400); + + // fractional carrier offset + sp8870_writereg(i2c,0x030A,0x0000); + + // filter for 6/7/8 Mhz channel + if (p->u.ofdm.bandwidth == BANDWIDTH_6_MHZ) + sp8870_writereg(i2c,0x0311,0x0002); + else if (p->u.ofdm.bandwidth == BANDWIDTH_7_MHZ) + sp8870_writereg(i2c,0x0311,0x0001); + else + sp8870_writereg(i2c,0x0311,0x0000); + + // scan order: 2k first = 0x0000, 8k first = 0x0001 + if (p->u.ofdm.transmission_mode == TRANSMISSION_MODE_2K) + sp8870_writereg(i2c,0x0338,0x0000); + else + sp8870_writereg(i2c,0x0338,0x0001); + + // instruction RAM register loword + sp8870_writereg(i2c,0x0F09,0x0000); + + // instruction RAM register hiword + sp8870_writereg(i2c,0x0F08,0x0000); + + // system controller start + sp8870_writereg(i2c,0x0F00,0x0001); + + break; } - case FE_GET_FRONTEND: // how to do this? + case FE_GET_FRONTEND: // FIXME: read known values back from Hardware... { break; } @@ -356,9 +407,6 @@ case FE_INIT: return sp8870_init (i2c); - case FE_RESET: - return sp8870_reset (i2c); - default: return -EOPNOTSUPP; }; @@ -371,12 +419,20 @@ int tdlb7_attach (struct dvb_i2c_bus *i2c) { - struct i2c_msg msg = { .addr = 0x71, .flags = 0, .buf = NULL, .len = 0 }; + struct i2c_msg msg = { addr: 0x71, flags: 0, buf: NULL, len: 0 }; dprintk ("%s\n", __FUNCTION__); if (i2c->xfer (i2c, &msg, 1) != 1) return -ENODEV; + + if (loadcode) { + dprintk("%s: loading mcfile '%s' !\n", __FUNCTION__, mcfile); + if (sp8870_load_code(i2c)==0) + dprintk("%s: microcode loaded!\n", __FUNCTION__); + }else{ + dprintk("%s: without loading mcfile!\n", __FUNCTION__); + } dvb_register_frontend (tdlb7_ioctl, i2c, NULL, &tdlb7_info); diff -Nru a/drivers/media/dvb/frontends/alps_tdmb7.c b/drivers/media/dvb/frontends/alps_tdmb7.c --- a/drivers/media/dvb/frontends/alps_tdmb7.c Sat Nov 30 09:11:26 2002 +++ b/drivers/media/dvb/frontends/alps_tdmb7.c Mon Apr 7 13:20:02 2003 @@ -23,7 +23,6 @@ #include #include -#include "compat.h" #include "dvb_frontend.h" @@ -33,15 +32,22 @@ static struct dvb_frontend_info tdmb7_info = { - .name = "Alps TDMB7", - .type = FE_OFDM, - .frequency_min = 470000000, - .frequency_max = 860000000, - .frequency_stepsize = 166667, - .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | - FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | - FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | - FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 + name: "Alps TDMB7", + type: FE_OFDM, + frequency_min: 470000000, + frequency_max: 860000000, + frequency_stepsize: 166667, +#if 0 + frequency_tolerance: ???, + symbol_rate_min: ???, + symbol_rate_max: ???, + symbol_rate_tolerance: 500, /* ppm */ + notifier_delay: 0, +#endif + caps: FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | + FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | + FE_CAN_CLEAN_SETUP | FE_CAN_RECOVER }; @@ -81,7 +87,7 @@ { int ret; u8 buf [] = { reg, data }; - struct i2c_msg msg = { .addr = 0x43, .flags = 0, .buf = buf, .len = 2 }; + struct i2c_msg msg = { addr: 0x43, flags: 0, buf: buf, len: 2 }; dprintk ("%s\n", __FUNCTION__); @@ -101,8 +107,8 @@ int ret; u8 b0 [] = { reg }; u8 b1 [] = { 0 }; - struct i2c_msg msg [] = { { .addr = 0x43, .flags = 0, .buf = b0, .len = 1 }, - { .addr = 0x43, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; + struct i2c_msg msg [] = { { addr: 0x43, flags: 0, buf: b0, len: 1 }, + { addr: 0x43, flags: I2C_M_RD, buf: b1, len: 1 } }; dprintk ("%s\n", __FUNCTION__); @@ -118,7 +124,7 @@ static int pll_write (struct dvb_i2c_bus *i2c, u8 data [4]) { - struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = 4 }; + struct i2c_msg msg = { addr: 0x61, flags: 0, buf: data, len: 4 }; int ret; cx22700_writereg (i2c, 0x0a, 0x00); /* open i2c bus switch */ @@ -350,6 +356,7 @@ case FE_READ_BER: *((uint32_t*) arg) = cx22700_readreg (i2c, 0x0c) & 0x7f; + cx22700_writereg (i2c, 0x0c, 0x00); break; case FE_READ_SIGNAL_STRENGTH: @@ -368,6 +375,7 @@ } case FE_READ_UNCORRECTED_BLOCKS: *((uint32_t*) arg) = cx22700_readreg (i2c, 0x0f); + cx22700_writereg (i2c, 0x0f, 0x00); break; case FE_SET_FRONTEND: @@ -412,7 +420,7 @@ static int tdmb7_attach (struct dvb_i2c_bus *i2c) { - struct i2c_msg msg = { .addr = 0x43, .flags = 0, .buf = NULL, .len = 0 }; + struct i2c_msg msg = { addr: 0x43, flags: 0, buf: NULL, len: 0 }; dprintk ("%s\n", __FUNCTION__); diff -Nru a/drivers/media/dvb/frontends/at76c651.c b/drivers/media/dvb/frontends/at76c651.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/frontends/at76c651.c Tue Apr 8 09:39:31 2003 @@ -0,0 +1,542 @@ +/* + * at76c651.c + * + * Atmel DVB-C Frontend Driver (at76c651/dat7021) + * + * Copyright (C) 2001 fnbrd + * & 2002 Andreas Oberritter + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include +#include +#include +#include +#include + +#if defined(__powerpc__) +#include +#endif + +#include "dvb_frontend.h" +#include "dvb_i2c.h" + +static int debug = 0; + +#define dprintk if (debug) printk + +/* + * DAT7021 + * ------- + * Input Frequency Range (RF): 48.25 MHz to 863.25 MHz + * Band Width: 8 MHz + * Level Input (Range for Digital Signals): -61 dBm to -41 dBm + * Output Frequency (IF): 36 MHz + * + * (see http://www.atmel.com/atmel/acrobat/doc1320.pdf) + */ + +static struct dvb_frontend_info at76c651_info = { + + .name = "Atmel AT76c651(B) with DAT7021", + .type = FE_QAM, + .frequency_min = 48250000, + .frequency_max = 863250000, + .frequency_stepsize = 62500, + /*.frequency_tolerance = */ /* FIXME: 12% of SR */ + .symbol_rate_min = 0, /* FIXME */ + .symbol_rate_max = 9360000, /* FIXME */ + .symbol_rate_tolerance = 4000, + .notifier_delay = 0, + .caps = FE_CAN_INVERSION_AUTO | + FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | + FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO | + FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | FE_CAN_QAM_128 | + FE_CAN_QAM_256, + /* FE_CAN_QAM_512 | FE_CAN_QAM_1024 | */ + +}; + +#if ! defined(__powerpc__) +static __inline__ int +__ilog2(unsigned long x) +{ + int i; + + if (x == 0) + return -1; + + for (i = 0; x != 0; i++) + x >>= 1; + + return i - 1; +} +#endif + +static int +at76c651_writereg(struct dvb_i2c_bus *i2c, u8 reg, u8 data) +{ + + int ret; + u8 buf[] = { reg, data }; + struct i2c_msg msg = { addr:0x1a >> 1, flags:0, buf:buf, len:2 }; + + ret = i2c->xfer(i2c, &msg, 1); + + if (ret != 1) + dprintk("%s: writereg error " + "(reg == 0x%02x, val == 0x%02x, ret == %i)\n", + __FUNCTION__, reg, data, ret); + + mdelay(10); + + return (ret != 1) ? -EREMOTEIO : 0; + +} + +static u8 +at76c651_readreg(struct dvb_i2c_bus *i2c, u8 reg) +{ + + int ret; + u8 b0[] = { reg }; + u8 b1[] = { 0 }; + struct i2c_msg msg[] = { {addr: 0x1a >> 1, flags: 0, buf: b0, len:1}, + {addr: 0x1a >> 1, flags: I2C_M_RD, buf: b1, len:1} }; + + ret = i2c->xfer(i2c, msg, 2); + + if (ret != 2) + dprintk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); + + return b1[0]; + +} + +static int +at76c651_set_auto_config(struct dvb_i2c_bus *i2c) +{ + + at76c651_writereg(i2c, 0x06, 0x01); + + /* + * performance optimizations + */ + + at76c651_writereg(i2c, 0x10, 0x06); + at76c651_writereg(i2c, 0x11, 0x10); + at76c651_writereg(i2c, 0x15, 0x28); + at76c651_writereg(i2c, 0x20, 0x09); + at76c651_writereg(i2c, 0x24, 0x90); + + return 0; + +} + +static int +at76c651_set_bbfreq(struct dvb_i2c_bus *i2c) +{ + + at76c651_writereg(i2c, 0x04, 0x3f); + at76c651_writereg(i2c, 0x05, 0xee); + + return 0; + +} + +static int +at76c651_reset(struct dvb_i2c_bus *i2c) +{ + + return at76c651_writereg(i2c, 0x07, 0x01); + +} + +static int +at76c651_disable_interrupts(struct dvb_i2c_bus *i2c) +{ + + return at76c651_writereg(i2c, 0x0b, 0x00); + +} + +static int +at76c651_switch_tuner_i2c(struct dvb_i2c_bus *i2c, u8 enable) +{ + + if (enable) + return at76c651_writereg(i2c, 0x0c, 0xc2 | 0x01); + else + return at76c651_writereg(i2c, 0x0c, 0xc2); + +} + +static int +dat7021_write(struct dvb_i2c_bus *i2c, u32 tw) +{ + + int ret; + struct i2c_msg msg = + { addr:0xc2 >> 1, flags:0, buf:(u8 *) & tw, len:sizeof (tw) }; + + at76c651_switch_tuner_i2c(i2c, 1); + + ret = i2c->xfer(i2c, &msg, 1); + + at76c651_switch_tuner_i2c(i2c, 0); + + if (ret != 4) + return -EFAULT; + + at76c651_reset(i2c); + + return 0; + +} + +static int +dat7021_set_tv_freq(struct dvb_i2c_bus *i2c, u32 freq) +{ + + u32 dw; + + freq /= 1000; + + if ((freq < 48250) || (freq > 863250)) + return -EINVAL; + + /* + * formula: dw=0x17e28e06+(freq-346000UL)/8000UL*0x800000 + * or: dw=0x4E28E06+(freq-42000) / 125 * 0x20000 + */ + + dw = (freq - 42000) * 4096; + dw = dw / 125; + dw = dw * 32; + + if (freq > 394000) + dw += 0x4E28E85; + else + dw += 0x4E28E06; + + return dat7021_write(i2c, dw); + +} + +static int +at76c651_set_symbolrate(struct dvb_i2c_bus *i2c, u32 symbolrate) +{ + + u8 exponent; + u32 mantissa; + + if (symbolrate > 9360000) + return -1; + + /* + * FREF = 57800 kHz + * exponent = 10 + floor ( log2 ( symbolrate / FREF ) ) + * mantissa = ( symbolrate / FREF) * ( 1 << ( 30 - exponent ) ) + */ + + exponent = __ilog2((symbolrate << 4) / 903125); + mantissa = ((symbolrate / 3125) * (1 << (24 - exponent))) / 289; + + at76c651_writereg(i2c, 0x00, mantissa >> 13); + at76c651_writereg(i2c, 0x01, mantissa >> 5); + at76c651_writereg(i2c, 0x02, (mantissa << 3) | exponent); + + return 0; + +} + +static int +at76c651_set_qam(struct dvb_i2c_bus *i2c, fe_modulation_t qam) +{ + + u8 qamsel = 0; + + switch (qam) { + + case QPSK: + qamsel = 0x02; + break; + case QAM_16: + qamsel = 0x04; + break; + case QAM_32: + qamsel = 0x05; + break; + case QAM_64: + qamsel = 0x06; + break; + case QAM_128: + qamsel = 0x07; + break; + case QAM_256: + qamsel = 0x08; + break; +#if 0 + case QAM_512: + qamsel = 0x09; + break; + case QAM_1024: + qamsel = 0x0A; + break; +#endif + default: + return -EINVAL; + + } + + return at76c651_writereg(i2c, 0x03, qamsel); + +} + +static int +at76c651_set_inversion(struct dvb_i2c_bus *i2c, + fe_spectral_inversion_t inversion) +{ + + u8 feciqinv = at76c651_readreg(i2c, 0x60); + + switch (inversion) { + case INVERSION_OFF: + feciqinv |= 0x02; + feciqinv &= 0xFE; + break; + + case INVERSION_ON: + feciqinv |= 0x03; + break; + + case INVERSION_AUTO: + feciqinv &= 0xFC; + break; + + default: + return -EINVAL; + } + + return at76c651_writereg(i2c, 0x60, feciqinv); + +} + +static int +at76c651_set_parameters(struct dvb_i2c_bus *i2c, + struct dvb_frontend_parameters *p) +{ + + dat7021_set_tv_freq(i2c, p->frequency); + at76c651_set_symbolrate(i2c, p->u.qam.symbol_rate); + at76c651_set_inversion(i2c, p->inversion); + at76c651_set_auto_config(i2c); + + return 0; + +} + +static int +at76c651_set_defaults(struct dvb_i2c_bus *i2c) +{ + + at76c651_set_symbolrate(i2c, 6900000); + at76c651_set_qam(i2c, QAM_64); + at76c651_set_bbfreq(i2c); + at76c651_set_auto_config(i2c); + at76c651_disable_interrupts(i2c); + + return 0; + +} + +static int +at76c651_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg) +{ + + switch (cmd) { + + case FE_GET_INFO: + memcpy(arg, &at76c651_info, sizeof (struct dvb_frontend_info)); + break; + + case FE_READ_STATUS: + { + + fe_status_t *status = (fe_status_t *) arg; + u8 sync; + + /* + * Bits: FEC, CAR, EQU, TIM, AGC2, AGC1, ADC, PLL (PLL=0) + */ + sync = at76c651_readreg(fe->i2c, 0x80); + + *status = 0; + + if (sync & (0x04 | 0x10)) /* AGC1 || TIM */ + *status |= FE_HAS_SIGNAL; + + if (sync & 0x10) /* TIM */ + *status |= FE_HAS_CARRIER; + + if (sync & 0x80) /* FEC */ + *status |= FE_HAS_VITERBI; + + if (sync & 0x40) /* CAR */ + *status |= FE_HAS_SYNC; + + if ((sync & 0xF0) == 0xF0) /* TIM && EQU && CAR && FEC */ + *status |= FE_HAS_LOCK; + + break; + + } + + case FE_READ_BER: + { + u32 *ber = (u32 *) arg; + + *ber = (at76c651_readreg(fe->i2c, 0x81) & 0x0F) << 16; + *ber |= at76c651_readreg(fe->i2c, 0x82) << 8; + *ber |= at76c651_readreg(fe->i2c, 0x83); + *ber *= 10; + + break; + } + + case FE_READ_SIGNAL_STRENGTH: + { + u8 gain = ~at76c651_readreg(fe->i2c, 0x91); + + *(s32 *) arg = (gain << 8) | gain; + *(s32 *) arg = 0x0FFF; + break; + } + + case FE_READ_SNR: + *(s32 *) arg = + 0xFFFF - + ((at76c651_readreg(fe->i2c, 0x8F) << 8) | + at76c651_readreg(fe->i2c, 0x90)); + break; + + case FE_READ_UNCORRECTED_BLOCKS: + *(u32 *) arg = at76c651_readreg(fe->i2c, 0x82); + break; + + case FE_SET_FRONTEND: + return at76c651_set_parameters(fe->i2c, arg); + + case FE_GET_FRONTEND: + break; + + case FE_SLEEP: + break; + + case FE_INIT: + return at76c651_set_defaults(fe->i2c); + + case FE_RESET: + return at76c651_reset(fe->i2c); + + default: + return -ENOSYS; + } + + return 0; + +} + +static int +at76c651_attach(struct dvb_i2c_bus *i2c) +{ + + if (at76c651_readreg(i2c, 0x0e) != 0x65) { + + dprintk("no AT76C651(B) found\n"); + + return -ENODEV; + + } + + if (at76c651_readreg(i2c, 0x0F) != 0x10) { + + if (at76c651_readreg(i2c, 0x0F) == 0x11) { + + dprintk("AT76C651B found\n"); + + } else { + + dprintk("no AT76C651(B) found\n"); + + return -ENODEV; + + } + + } else { + + dprintk("AT76C651B found\n"); + + } + + at76c651_set_defaults(i2c); + + dvb_register_frontend(at76c651_ioctl, i2c, NULL, &at76c651_info); + + return 0; + +} + +static void +at76c651_detach(struct dvb_i2c_bus *i2c) +{ + + dvb_unregister_frontend(at76c651_ioctl, i2c); + + at76c651_disable_interrupts(i2c); + +} + +static int __init +at76c651_init(void) +{ + + return dvb_register_i2c_device(THIS_MODULE, at76c651_attach, + at76c651_detach); + +} + +static void __exit +at76c651_exit(void) +{ + + dvb_unregister_i2c_device(at76c651_attach); + +} + +module_init(at76c651_init); +module_exit(at76c651_exit); + +#ifdef MODULE +MODULE_DESCRIPTION("at76c651/dat7021 dvb-c frontend driver"); +MODULE_AUTHOR("Andreas Oberritter "); +#ifdef MODULE_LICENSE +MODULE_LICENSE("GPL"); +#endif +MODULE_PARM(debug, "i"); +#endif diff -Nru a/drivers/media/dvb/frontends/dvb_dummy_fe.c b/drivers/media/dvb/frontends/dvb_dummy_fe.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/frontends/dvb_dummy_fe.c Tue Apr 8 09:39:32 2003 @@ -0,0 +1,219 @@ +/* + * Driver for Dummy Frontend + * + * Written by Emard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.= + */ + +#include +#include + +#include "dvb_frontend.h" + +static int sct = 0; + + +/* depending on module parameter sct deliver different infos + */ + +static +struct dvb_frontend_info dvb_s_dummyfe_info = { + name: "DVB-S dummy frontend", + type: FE_QPSK, + frequency_min: 950000, + frequency_max: 2150000, + frequency_stepsize: 250, /* kHz for QPSK frontends */ + frequency_tolerance: 29500, + symbol_rate_min: 1000000, + symbol_rate_max: 45000000, +/* symbol_rate_tolerance: ???,*/ + notifier_delay: 50, /* 1/20 s */ + caps: FE_CAN_INVERSION_AUTO | + FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | + FE_CAN_QPSK +}; + +static +struct dvb_frontend_info dvb_c_dummyfe_info = { + .name = "DVB-C dummy frontend", + .type = FE_QAM, + .frequency_stepsize = 62500, + .frequency_min = 51000000, + .frequency_max = 858000000, + .symbol_rate_min = (57840000/2)/64, /* SACLK/64 == (XIN/2)/64 */ + .symbol_rate_max = (57840000/2)/4, /* SACLK/4 */ +#if 0 + frequency_tolerance: ???, + symbol_rate_tolerance: ???, /* ppm */ /* == 8% (spec p. 5) */ + notifier_delay: ?, +#endif + .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | + FE_CAN_QAM_128 | FE_CAN_QAM_256 | + FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO | + FE_CAN_CLEAN_SETUP +}; + +static struct dvb_frontend_info dvb_t_dummyfe_info = { + .name = "DVB-T dummy frontend", + .type = FE_OFDM, + .frequency_min = 0, + .frequency_max = 863250000, + .frequency_stepsize = 62500, + /*.frequency_tolerance = */ /* FIXME: 12% of SR */ + .symbol_rate_min = 0, /* FIXME */ + .symbol_rate_max = 9360000, /* FIXME */ + .symbol_rate_tolerance = 4000, + .notifier_delay = 0, + .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | + FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO | + FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | + FE_CAN_TRANSMISSION_MODE_AUTO | + FE_CAN_GUARD_INTERVAL_AUTO | + FE_CAN_HIERARCHY_AUTO, +}; + +struct dvb_frontend_info *frontend_info(void) +{ + switch(sct) + { + case 2: + return &dvb_t_dummyfe_info; + case 1: + return &dvb_c_dummyfe_info; + case 0: + default: + return &dvb_s_dummyfe_info; + } +} + + +static +int dvbdummyfe_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) +{ + switch (cmd) { + case FE_GET_INFO: + memcpy (arg, frontend_info(), + sizeof(struct dvb_frontend_info)); + break; + + case FE_READ_STATUS: + { + fe_status_t *status = arg; + *status = FE_HAS_SIGNAL + | FE_HAS_CARRIER + | FE_HAS_VITERBI + | FE_HAS_SYNC + | FE_HAS_LOCK; + break; + } + + case FE_READ_BER: + { + u32 *ber = (u32 *) arg; + *ber = 0; + break; + } + + case FE_READ_SIGNAL_STRENGTH: + { + u8 signal = 0xff; + *((u16*) arg) = (signal << 8) | signal; + break; + } + + case FE_READ_SNR: + { + u8 snr = 0xf0; + *(u16*) arg = (snr << 8) | snr; + break; + } + + case FE_READ_UNCORRECTED_BLOCKS: + *(u32*) arg = 0; + break; + + case FE_SET_FRONTEND: + break; + + case FE_GET_FRONTEND: + break; + + case FE_SLEEP: + return 0; + + case FE_INIT: + return 0; + + case FE_RESET: + return 0; + + case FE_SET_TONE: + return -EOPNOTSUPP; + + case FE_SET_VOLTAGE: + return 0; + + default: + return -EOPNOTSUPP; + } + return 0; +} + + +static +int dvbdummyfe_attach (struct dvb_i2c_bus *i2c) +{ + dvb_register_frontend (dvbdummyfe_ioctl, i2c, NULL, frontend_info()); + return 0; +} + + +static +void dvbdummyfe_detach (struct dvb_i2c_bus *i2c) +{ + dvb_unregister_frontend (dvbdummyfe_ioctl, i2c); +} + + +static +int __init init_dvbdummyfe (void) +{ + return dvb_register_i2c_device (THIS_MODULE, + dvbdummyfe_attach, + dvbdummyfe_detach); + return 0; +} + + +static +void __exit exit_dvbdummyfe (void) +{ + dvb_unregister_i2c_device (dvbdummyfe_attach); + return; +} + + +module_init(init_dvbdummyfe); +module_exit(exit_dvbdummyfe); + + +MODULE_DESCRIPTION("DVB DUMMY Frontend"); +MODULE_AUTHOR("Emard"); +MODULE_LICENSE("GPL"); +MODULE_PARM(sct, "i"); diff -Nru a/drivers/media/dvb/frontends/grundig_29504-401.c b/drivers/media/dvb/frontends/grundig_29504-401.c --- a/drivers/media/dvb/frontends/grundig_29504-401.c Sat Nov 30 09:12:24 2002 +++ b/drivers/media/dvb/frontends/grundig_29504-401.c Mon Apr 7 13:20:02 2003 @@ -25,7 +25,6 @@ #include #include -#include "compat.h" #include "dvb_frontend.h" static int debug = 0; @@ -34,14 +33,18 @@ struct dvb_frontend_info grundig_29504_401_info = { - .name = "Grundig 29504-401", - .type = FE_OFDM, - .frequency_stepsize = 166666, - .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | - FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | - FE_CAN_FEC_7_8 | FE_CAN_QPSK | - FE_CAN_QAM_16 | FE_CAN_QAM_64 | - FE_CAN_MUTE_TS + name: "Grundig 29504-401", + type: FE_OFDM, +/* frequency_min: ???,*/ +/* frequency_max: ???,*/ + frequency_stepsize: 166666, +/* frequency_tolerance: ???,*/ +/* symbol_rate_tolerance: ???,*/ + notifier_delay: 0, + caps: FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | + FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | + FE_CAN_MUTE_TS /*| FE_CAN_CLEAN_SETUP*/ }; @@ -50,7 +53,7 @@ { int ret; u8 buf [] = { reg, data }; - struct i2c_msg msg = { .addr = 0x55, .flags = 0, .buf = buf, .len = 2 }; + struct i2c_msg msg = { addr: 0x55, flags: 0, buf: buf, len: 2 }; if ((ret = i2c->xfer (i2c, &msg, 1)) != 1) dprintk ("%s: write_reg error (reg == %02x) = %02x!\n", @@ -66,8 +69,8 @@ int ret; u8 b0 [] = { reg }; u8 b1 [] = { 0 }; - struct i2c_msg msg [] = { { .addr = 0x55, .flags = 0, .buf = b0, .len = 1 }, - { .addr = 0x55, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; + struct i2c_msg msg [] = { { addr: 0x55, flags: 0, buf: b0, len: 1 }, + { addr: 0x55, flags: I2C_M_RD, buf: b1, len: 1 } }; ret = i2c->xfer (i2c, msg, 2); @@ -82,7 +85,7 @@ int tsa5060_write (struct dvb_i2c_bus *i2c, u8 data [4]) { int ret; - struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = 4 }; + struct i2c_msg msg = { addr: 0x61, flags: 0, buf: data, len: 4 }; if ((ret = i2c->xfer (i2c, &msg, 1)) != 1) dprintk ("%s: write_reg error == %02x!\n", __FUNCTION__, ret); @@ -97,24 +100,19 @@ * frequency offset is 36000000 Hz. */ static -int tsa5060_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, u8 pwr) +int tsa5060_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq) { u32 div; u8 buf [4]; u8 cfg; - if (freq < 700000000) { - div = (36000000 + freq) / 31250; - cfg = 0x86; - } else { - div = (36000000 + freq) / 166666; - cfg = 0x88; - } + div = (36000000 + freq) / 166666; + cfg = 0x88; buf [0] = (div >> 8) & 0x7f; buf [1] = div & 0xff; buf [2] = ((div >> 10) & 0x60) | cfg; - buf [3] = pwr << 6; + buf [3] = 0xc0; return tsa5060_write (i2c, buf); } @@ -175,12 +173,13 @@ u8 val0x04; u8 val0x05; u8 val0x06; + int bw = p->bandwidth - BANDWIDTH_8_MHZ; if (param->inversion != INVERSION_ON && param->inversion != INVERSION_OFF) return -EINVAL; - if (p->bandwidth < BANDWIDTH_8_MHZ || p->bandwidth > BANDWIDTH_6_MHZ) + if (bw < 0 || bw > 2) return -EINVAL; if (p->code_rate_HP != FEC_1_2 && p->code_rate_HP != FEC_2_3 && @@ -230,6 +229,7 @@ val0x04 = (p->transmission_mode << 2) | p->guard_interval; val0x05 = fec_tab[p->code_rate_HP]; + if (p->hierarchy_information != HIERARCHY_NONE) val0x05 |= (p->code_rate_LP - FEC_1_2) << 3; @@ -269,7 +269,7 @@ void reset_and_configure (struct dvb_i2c_bus *i2c) { u8 buf [] = { 0x06 }; - struct i2c_msg msg = { .addr = 0x00, .flags = 0, .buf = buf, .len = 1 }; + struct i2c_msg msg = { addr: 0x00, flags: 0, buf: buf, len: 1 }; i2c->xfer (i2c, &msg, 1); } @@ -307,7 +307,7 @@ /*l64781_writereg (i2c, 0x19, 0x92);*/ /* Everything is two's complement, soft bit and CSI_OUT too */ - l64781_writereg (i2c, 0x1e, 0x49); + l64781_writereg (i2c, 0x1e, 0x09); return 0; } @@ -390,9 +390,8 @@ { struct dvb_frontend_parameters *p = arg; - tsa5060_set_tv_freq (i2c, p->frequency, 3); + tsa5060_set_tv_freq (i2c, p->frequency); apply_frontend_param (i2c, p); -// tsa5060_set_tv_freq (i2c, p->frequency, 0); } case FE_GET_FRONTEND: /* we could correct the frequency here, but... @@ -407,13 +406,6 @@ case FE_INIT: return init (i2c); - case FE_RESET: - //reset_afc (i2c); - apply_tps (i2c); - l64781_readreg (i2c, 0x00); /* clear interrupt registers... */ - l64781_readreg (i2c, 0x01); /* dto. */ - break; - default: dprintk ("%s: unknown command !!!\n", __FUNCTION__); return -EINVAL; @@ -428,8 +420,8 @@ { u8 b0 [] = { 0x1a }; u8 b1 [] = { 0x00 }; - struct i2c_msg msg [] = { { .addr = 0x55, .flags = 0, .buf = b0, .len = 1 }, - { .addr = 0x55, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; + struct i2c_msg msg [] = { { addr: 0x55, flags: 0, buf: b0, len: 1 }, + { addr: 0x55, flags: I2C_M_RD, buf: b1, len: 1 } }; if (i2c->xfer (i2c, msg, 2) == 2) /* probably an EEPROM... */ return -ENODEV; diff -Nru a/drivers/media/dvb/frontends/grundig_29504-491.c b/drivers/media/dvb/frontends/grundig_29504-491.c --- a/drivers/media/dvb/frontends/grundig_29504-491.c Sat Nov 30 09:13:26 2002 +++ b/drivers/media/dvb/frontends/grundig_29504-491.c Mon Apr 7 13:20:02 2003 @@ -27,7 +27,6 @@ #include #include -#include "compat.h" #include "dvb_frontend.h" static int debug = 0; @@ -36,20 +35,22 @@ static struct dvb_frontend_info grundig_29504_491_info = { - .name = "Grundig 29504-491, (TDA8083 based)", - .type = FE_QPSK, - .frequency_min = 950000, /* FIXME: guessed! */ - .frequency_max = 1400000, /* FIXME: guessed! */ - .frequency_stepsize = 125, /* kHz for QPSK frontends */ - .symbol_rate_min = 1000000, /* FIXME: guessed! */ - .symbol_rate_max = 45000000, /* FIXME: guessed! */ - .caps = FE_CAN_INVERSION_AUTO | - FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | - FE_CAN_FEC_3_4 | FE_CAN_FEC_4_5 | - FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | - FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | - FE_CAN_FEC_AUTO | FE_CAN_QPSK | - FE_CAN_MUTE_TS + name: "Grundig 29504-491, (TDA8083 based)", + type: FE_QPSK, + frequency_min: 950000, /* FIXME: guessed! */ + frequency_max: 1400000, /* FIXME: guessed! */ + frequency_stepsize: 125, /* kHz for QPSK frontends */ +/* frequency_tolerance: ???,*/ + symbol_rate_min: 1000000, /* FIXME: guessed! */ + symbol_rate_max: 45000000, /* FIXME: guessed! */ +/* symbol_rate_tolerance: ???,*/ + notifier_delay: 0, + caps: FE_CAN_INVERSION_AUTO | + FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | + FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO | + FE_CAN_QPSK | + FE_CAN_MUTE_TS | FE_CAN_CLEAN_SETUP }; @@ -71,7 +72,7 @@ { int ret; u8 buf [] = { reg, data }; - struct i2c_msg msg = { .addr = 0x68, .flags = 0, .buf = buf, .len = 2 }; + struct i2c_msg msg = { addr: 0x68, flags: 0, buf: buf, len: 2 }; ret = i2c->xfer (i2c, &msg, 1); @@ -87,8 +88,8 @@ int tda8083_readregs (struct dvb_i2c_bus *i2c, u8 reg1, u8 *b, u8 len) { int ret; - struct i2c_msg msg [] = { { .addr = 0x68, .flags = 0, .buf = ®1, .len = 1 }, - { .addr = 0x68, .flags = I2C_M_RD, .buf = b, .len = len } }; + struct i2c_msg msg [] = { { addr: 0x68, flags: 0, buf: ®1, len: 1 }, + { addr: 0x68, flags: I2C_M_RD, buf: b, len: len } }; ret = i2c->xfer (i2c, msg, 2); @@ -115,7 +116,7 @@ int tsa5522_write (struct dvb_i2c_bus *i2c, u8 data [4]) { int ret; - struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = data, .len = 4 }; + struct i2c_msg msg = { addr: 0x61, flags: 0, buf: data, len: 4 }; ret = i2c->xfer (i2c, &msg, 1); diff -Nru a/drivers/media/dvb/frontends/nxt6000.c b/drivers/media/dvb/frontends/nxt6000.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/frontends/nxt6000.c Tue Apr 8 09:39:32 2003 @@ -0,0 +1,869 @@ +/* + + NxtWave Communications - NXT6000 demodulator driver + + This driver currently supports: + + Alps TDME7 (Tuner: MITEL SP5659) + Alps TDED4 (Tuner: TI ALP510, external Nxt6000) + + Copyright (C) 2002-2003 Florian Schirmer + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "dvb_frontend.h" +#include "nxt6000.h" + +static int debug = 0; + +MODULE_DESCRIPTION("NxtWave NXT6000 DVB demodulator driver"); +MODULE_AUTHOR("Florian Schirmer"); +MODULE_LICENSE("GPL"); +MODULE_PARM(debug, "i"); + +static struct dvb_frontend_info nxt6000_info = { + + .name = "NxtWave NXT6000", + .type = FE_OFDM, + .frequency_min = 0, + .frequency_max = 863250000, + .frequency_stepsize = 62500, + /*.frequency_tolerance = */ /* FIXME: 12% of SR */ + .symbol_rate_min = 0, /* FIXME */ + .symbol_rate_max = 9360000, /* FIXME */ + .symbol_rate_tolerance = 4000, + .notifier_delay = 0, + .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | + FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO | + FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | + FE_CAN_TRANSMISSION_MODE_AUTO | + FE_CAN_GUARD_INTERVAL_AUTO | + FE_CAN_HIERARCHY_AUTO, + +}; + +#pragma pack(1) + +struct nxt6000_config { + + u8 demod_addr; + u8 tuner_addr; + u8 tuner_type; + u8 clock_inversion; + +}; + +#pragma pack() + +#define TUNER_TYPE_ALP510 0 +#define TUNER_TYPE_SP5659 1 + +#define FE2NXT(fe) ((struct nxt6000_config *)&(fe->data)) +#define FREQ2DIV(freq) ((freq + 36166667) / 166667) + +#define dprintk if (debug) printk + +static int nxt6000_write(struct dvb_i2c_bus *i2c, u8 addr, u8 reg, u8 data) +{ + + u8 buf[] = {reg, data}; + struct i2c_msg msg = {addr: addr >> 1, flags: 0, buf: buf, len: 2}; + int ret; + + if ((ret = i2c->xfer(i2c, &msg, 1)) != 1) + dprintk("nxt6000: nxt6000_write error (addr: 0x%02X, reg: 0x%02X, data: 0x%02X, ret: %d)\n", addr, reg, data, ret); + + return (ret != 1) ? -EFAULT : 0; + +} + +static u8 nxt6000_writereg(struct dvb_frontend *fe, u8 reg, u8 data) +{ + + struct nxt6000_config *nxt = FE2NXT(fe); + + return nxt6000_write(fe->i2c, nxt->demod_addr, reg, data); + +} + +static u8 nxt6000_read(struct dvb_i2c_bus *i2c, u8 addr, u8 reg) +{ + + int ret; + u8 b0[] = {reg}; + u8 b1[] = {0}; + struct i2c_msg msgs[] = {{addr: addr >> 1, flags: 0, buf: b0, len: 1}, + {addr: addr >> 1, flags: I2C_M_RD, buf: b1, len: 1}}; + + ret = i2c->xfer(i2c, msgs, 2); + + if (ret != 2) + dprintk("nxt6000: nxt6000_read error (addr: 0x%02X, reg: 0x%02X, ret: %d)\n", addr, reg, ret); + + return b1[0]; + +} + +static u8 nxt6000_readreg(struct dvb_frontend *fe, u8 reg) +{ + + struct nxt6000_config *nxt = FE2NXT(fe); + + return nxt6000_read(fe->i2c, nxt->demod_addr, reg); + +} + +static int pll_write(struct dvb_i2c_bus *i2c, u8 demod_addr, u8 tuner_addr, u8 *buf, u8 len) +{ + + struct i2c_msg msg = {addr: tuner_addr >> 1, flags: 0, buf: buf, len: len}; + int ret; + + nxt6000_write(i2c, demod_addr, ENABLE_TUNER_IIC, 0x01); /* open i2c bus switch */ + ret = i2c->xfer(i2c, &msg, 1); + nxt6000_write(i2c, demod_addr, ENABLE_TUNER_IIC, 0x00); /* close i2c bus switch */ + + if (ret != 1) + dprintk("nxt6000: pll_write error %d\n", ret); + + return (ret != 1) ? -EFAULT : 0; + +} + +static int sp5659_set_tv_freq(struct dvb_frontend *fe, u32 freq) +{ + + u8 buf[4]; + struct nxt6000_config *nxt = FE2NXT(fe); + + buf[0] = (FREQ2DIV(freq) >> 8) & 0x7F; + buf[1] = FREQ2DIV(freq) & 0xFF; + buf[2] = (((FREQ2DIV(freq) >> 15) & 0x03) << 5) | 0x85; + + if ((freq >= 174000000) && (freq < 230000000)) + buf[3] = 0x82; + else if ((freq >= 470000000) && (freq < 782000000)) + buf[3] = 0x85; + else if ((freq >= 782000000) && (freq < 863000000)) + buf[3] = 0xC5; + else + return -EINVAL; + + return pll_write(fe->i2c, nxt->demod_addr, nxt->tuner_addr, buf, 4); + +} + +static int alp510_set_tv_freq(struct dvb_frontend *fe, u32 freq) +{ + + u8 buf[4]; + struct nxt6000_config *nxt = FE2NXT(fe); + + buf[0] = (FREQ2DIV(freq) >> 8) & 0x7F; + buf[1] = FREQ2DIV(freq) & 0xFF; + buf[2] = 0x85; + +#if 0 + if ((freq >= 47000000) && (freq < 153000000)) + buf[3] = 0x01; + else if ((freq >= 153000000) && (freq < 430000000)) + buf[3] = 0x02; + else if ((freq >= 430000000) && (freq < 824000000)) + buf[3] = 0x08; + else if ((freq >= 824000000) && (freq < 863000000)) + buf[3] = 0x88; + else + return -EINVAL; +#else + if ((freq >= 47000000) && (freq < 153000000)) + buf[3] = 0x01; + else if ((freq >= 153000000) && (freq < 430000000)) + buf[3] = 0x02; + else if ((freq >= 430000000) && (freq < 824000000)) + buf[3] = 0x0C; + else if ((freq >= 824000000) && (freq < 863000000)) + buf[3] = 0x8C; + else + return -EINVAL; +#endif + + return pll_write(fe->i2c, nxt->demod_addr, nxt->tuner_addr, buf, 4); + +} + +static void nxt6000_reset(struct dvb_frontend *fe) +{ + + u8 val; + + val = nxt6000_readreg(fe, OFDM_COR_CTL); + + nxt6000_writereg(fe, OFDM_COR_CTL, val & ~COREACT); + nxt6000_writereg(fe, OFDM_COR_CTL, val | COREACT); + +} + +static int nxt6000_set_bandwidth(struct dvb_frontend *fe, fe_bandwidth_t bandwidth) +{ + + u16 nominal_rate; + int result; + + switch(bandwidth) { + + case BANDWIDTH_6_MHZ: + + nominal_rate = 0x55B7; + + break; + + case BANDWIDTH_7_MHZ: + + nominal_rate = 0x6400; + + break; + + case BANDWIDTH_8_MHZ: + + nominal_rate = 0x7249; + + break; + + default: + + return -EINVAL; + + } + + if ((result = nxt6000_writereg(fe, OFDM_TRL_NOMINALRATE_1, nominal_rate & 0xFF)) < 0) + return result; + + return nxt6000_writereg(fe, OFDM_TRL_NOMINALRATE_2, (nominal_rate >> 8) & 0xFF); + +} + +static int nxt6000_set_guard_interval(struct dvb_frontend *fe, fe_guard_interval_t guard_interval) +{ + + switch(guard_interval) { + + case GUARD_INTERVAL_1_32: + + return nxt6000_writereg(fe, OFDM_COR_MODEGUARD, 0x00 | (nxt6000_readreg(fe, OFDM_COR_MODEGUARD) & ~0x03)); + + case GUARD_INTERVAL_1_16: + + return nxt6000_writereg(fe, OFDM_COR_MODEGUARD, 0x01 | (nxt6000_readreg(fe, OFDM_COR_MODEGUARD) & ~0x03)); + + case GUARD_INTERVAL_AUTO: + case GUARD_INTERVAL_1_8: + + return nxt6000_writereg(fe, OFDM_COR_MODEGUARD, 0x02 | (nxt6000_readreg(fe, OFDM_COR_MODEGUARD) & ~0x03)); + + case GUARD_INTERVAL_1_4: + + return nxt6000_writereg(fe, OFDM_COR_MODEGUARD, 0x03 | (nxt6000_readreg(fe, OFDM_COR_MODEGUARD) & ~0x03)); + + default: + + return -EINVAL; + + } + +} + +static int nxt6000_set_inversion(struct dvb_frontend *fe, fe_spectral_inversion_t inversion) +{ + + switch(inversion) { + + case INVERSION_OFF: + + return nxt6000_writereg(fe, OFDM_ITB_CTL, 0x00); + + case INVERSION_ON: + + return nxt6000_writereg(fe, OFDM_ITB_CTL, ITBINV); + + default: + + return -EINVAL; + + } + +} + +static int nxt6000_set_transmission_mode(struct dvb_frontend *fe, fe_transmit_mode_t transmission_mode) +{ + + int result; + + switch(transmission_mode) { + + case TRANSMISSION_MODE_2K: + + if ((result = nxt6000_writereg(fe, EN_DMD_RACQ, 0x00 | (nxt6000_readreg(fe, EN_DMD_RACQ) & ~0x03))) < 0) + return result; + + return nxt6000_writereg(fe, OFDM_COR_MODEGUARD, (0x00 << 2) | (nxt6000_readreg(fe, OFDM_COR_MODEGUARD) & ~0x04)); + + case TRANSMISSION_MODE_8K: + case TRANSMISSION_MODE_AUTO: + + if ((result = nxt6000_writereg(fe, EN_DMD_RACQ, 0x02 | (nxt6000_readreg(fe, EN_DMD_RACQ) & ~0x03))) < 0) + return result; + + return nxt6000_writereg(fe, OFDM_COR_MODEGUARD, (0x01 << 2) | (nxt6000_readreg(fe, OFDM_COR_MODEGUARD) & ~0x04)); + + default: + + return -EINVAL; + + } + +} + +static void nxt6000_setup(struct dvb_frontend *fe) +{ + + struct nxt6000_config *nxt = FE2NXT(fe); + + nxt6000_writereg(fe, RS_COR_SYNC_PARAM, SYNC_PARAM); + nxt6000_writereg(fe, BER_CTRL, /*(1 << 2) |*/ (0x01 << 1) | 0x01); + nxt6000_writereg(fe, VIT_COR_CTL, VIT_COR_RESYNC); + nxt6000_writereg(fe, OFDM_COR_CTL, (0x01 << 5) | (nxt6000_readreg(fe, OFDM_COR_CTL) & 0x0F)); + nxt6000_writereg(fe, OFDM_COR_MODEGUARD, FORCEMODE8K | 0x02); + nxt6000_writereg(fe, OFDM_AGC_CTL, AGCLAST | INITIAL_AGC_BW); + nxt6000_writereg(fe, OFDM_ITB_FREQ_1, 0x06); + nxt6000_writereg(fe, OFDM_ITB_FREQ_2, 0x31); + nxt6000_writereg(fe, OFDM_CAS_CTL, (0x01 << 7) | (0x02 << 3) | 0x04); + nxt6000_writereg(fe, CAS_FREQ, 0xBB); // CHECKME + nxt6000_writereg(fe, OFDM_SYR_CTL, 1 << 2); + nxt6000_writereg(fe, OFDM_PPM_CTL_1, PPM256); + nxt6000_writereg(fe, OFDM_TRL_NOMINALRATE_1, 0x49); + nxt6000_writereg(fe, OFDM_TRL_NOMINALRATE_2, 0x72); + nxt6000_writereg(fe, ANALOG_CONTROL_0, 1 << 5); + nxt6000_writereg(fe, EN_DMD_RACQ, (1 << 7) | (3 << 4) | 2); + nxt6000_writereg(fe, DIAG_CONFIG, TB_SET); + + if (nxt->clock_inversion) + nxt6000_writereg(fe, SUB_DIAG_MODE_SEL, CLKINVERSION); + else + nxt6000_writereg(fe, SUB_DIAG_MODE_SEL, 0); + + nxt6000_writereg(fe, TS_FORMAT, 0); + +} + +static void nxt6000_dump_status(struct dvb_frontend *fe) +{ + + u8 val; + +// printk("RS_COR_STAT: 0x%02X\n", nxt6000_readreg(fe, RS_COR_STAT)); +// printk("VIT_SYNC_STATUS: 0x%02X\n", nxt6000_readreg(fe, VIT_SYNC_STATUS)); +// printk("OFDM_COR_STAT: 0x%02X\n", nxt6000_readreg(fe, OFDM_COR_STAT)); +// printk("OFDM_SYR_STAT: 0x%02X\n", nxt6000_readreg(fe, OFDM_SYR_STAT)); +// printk("OFDM_TPS_RCVD_1: 0x%02X\n", nxt6000_readreg(fe, OFDM_TPS_RCVD_1)); +// printk("OFDM_TPS_RCVD_2: 0x%02X\n", nxt6000_readreg(fe, OFDM_TPS_RCVD_2)); +// printk("OFDM_TPS_RCVD_3: 0x%02X\n", nxt6000_readreg(fe, OFDM_TPS_RCVD_3)); +// printk("OFDM_TPS_RCVD_4: 0x%02X\n", nxt6000_readreg(fe, OFDM_TPS_RCVD_4)); +// printk("OFDM_TPS_RESERVED_1: 0x%02X\n", nxt6000_readreg(fe, OFDM_TPS_RESERVED_1)); +// printk("OFDM_TPS_RESERVED_2: 0x%02X\n", nxt6000_readreg(fe, OFDM_TPS_RESERVED_2)); + + printk("NXT6000 status:"); + + val = nxt6000_readreg(fe, RS_COR_STAT); + + printk(" DATA DESCR LOCK: %d,", val & 0x01); + printk(" DATA SYNC LOCK: %d,", (val >> 1) & 0x01); + + val = nxt6000_readreg(fe, VIT_SYNC_STATUS); + + printk(" VITERBI LOCK: %d,", (val >> 7) & 0x01); + + switch((val >> 4) & 0x07) { + + case 0x00: + + printk(" VITERBI CODERATE: 1/2,"); + + break; + + case 0x01: + + printk(" VITERBI CODERATE: 2/3,"); + + break; + + case 0x02: + + printk(" VITERBI CODERATE: 3/4,"); + + break; + + case 0x03: + + printk(" VITERBI CODERATE: 5/6,"); + + case 0x04: + + printk(" VITERBI CODERATE: 7/8,"); + + break; + + default: + + printk(" VITERBI CODERATE: Reserved,"); + + } + + val = nxt6000_readreg(fe, OFDM_COR_STAT); + + printk(" CHCTrack: %d,", (val >> 7) & 0x01); + printk(" TPSLock: %d,", (val >> 6) & 0x01); + printk(" SYRLock: %d,", (val >> 5) & 0x01); + printk(" AGCLock: %d,", (val >> 4) & 0x01); + + switch(val & 0x0F) { + + case 0x00: + + printk(" CoreState: IDLE,"); + + break; + + case 0x02: + + printk(" CoreState: WAIT_AGC,"); + + break; + + case 0x03: + + printk(" CoreState: WAIT_SYR,"); + + break; + + case 0x04: + + printk(" CoreState: WAIT_PPM,"); + + case 0x01: + + printk(" CoreState: WAIT_TRL,"); + + break; + + case 0x05: + + printk(" CoreState: WAIT_TPS,"); + + break; + + case 0x06: + + printk(" CoreState: MONITOR_TPS,"); + + break; + + default: + + printk(" CoreState: Reserved,"); + + } + + val = nxt6000_readreg(fe, OFDM_SYR_STAT); + + printk(" SYRLock: %d,", (val >> 4) & 0x01); + printk(" SYRMode: %s,", (val >> 2) & 0x01 ? "8K" : "2K"); + + switch((val >> 4) & 0x03) { + + case 0x00: + + printk(" SYRGuard: 1/32,"); + + break; + + case 0x01: + + printk(" SYRGuard: 1/16,"); + + break; + + case 0x02: + + printk(" SYRGuard: 1/8,"); + + break; + + case 0x03: + + printk(" SYRGuard: 1/4,"); + + break; + + } + + val = nxt6000_readreg(fe, OFDM_TPS_RCVD_3); + + switch((val >> 4) & 0x07) { + + case 0x00: + + printk(" TPSLP: 1/2,"); + + break; + + case 0x01: + + printk(" TPSLP: 2/3,"); + + break; + + case 0x02: + + printk(" TPSLP: 3/4,"); + + break; + + case 0x03: + + printk(" TPSLP: 5/6,"); + + case 0x04: + + printk(" TPSLP: 7/8,"); + + break; + + default: + + printk(" TPSLP: Reserved,"); + + } + + switch(val & 0x07) { + + case 0x00: + + printk(" TPSHP: 1/2,"); + + break; + + case 0x01: + + printk(" TPSHP: 2/3,"); + + break; + + case 0x02: + + printk(" TPSHP: 3/4,"); + + break; + + case 0x03: + + printk(" TPSHP: 5/6,"); + + case 0x04: + + printk(" TPSHP: 7/8,"); + + break; + + default: + + printk(" TPSHP: Reserved,"); + + } + + val = nxt6000_readreg(fe, OFDM_TPS_RCVD_4); + + printk(" TPSMode: %s,", val & 0x01 ? "8K" : "2K"); + + switch((val >> 4) & 0x03) { + + case 0x00: + + printk(" TPSGuard: 1/32,"); + + break; + + case 0x01: + + printk(" TPSGuard: 1/16,"); + + break; + + case 0x02: + + printk(" TPSGuard: 1/8,"); + + break; + + case 0x03: + + printk(" TPSGuard: 1/4,"); + + break; + + } + + // Strange magic required to gain access to RF_AGC_STATUS + nxt6000_readreg(fe, RF_AGC_VAL_1); + val = nxt6000_readreg(fe, RF_AGC_STATUS); + val = nxt6000_readreg(fe, RF_AGC_STATUS); + + printk(" RF AGC LOCK: %d,", (val >> 4) & 0x01); + + printk("\n"); + +} + +static int nxt6000_ioctl(struct dvb_frontend *fe, unsigned int cmd, void *arg) +{ + + switch (cmd) { + + case FE_GET_INFO: + + memcpy(arg, &nxt6000_info, sizeof (struct dvb_frontend_info)); + + return 0; + + case FE_READ_STATUS: + { + fe_status_t *status = (fe_status_t *)arg; + + u8 core_status; + + *status = 0; + + core_status = nxt6000_readreg(fe, OFDM_COR_STAT); + + if (core_status & AGCLOCKED) + *status |= FE_HAS_SIGNAL; + + if (nxt6000_readreg(fe, OFDM_SYR_STAT) & GI14_SYR_LOCK) + *status |= FE_HAS_CARRIER; + + if (nxt6000_readreg(fe, VIT_SYNC_STATUS) & VITINSYNC) + *status |= FE_HAS_VITERBI; + + if (nxt6000_readreg(fe, RS_COR_STAT) & RSCORESTATUS) + *status |= FE_HAS_SYNC; + + if ((core_status & TPSLOCKED) && (*status == (FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC))) + *status |= FE_HAS_LOCK; + + if (debug) + nxt6000_dump_status(fe); + + return 0; + + } + + case FE_READ_BER: + { + u32 *ber = (u32 *)arg; + + *ber=0; + + return 0; + + } + + case FE_READ_SIGNAL_STRENGTH: + { +// s16 *signal = (s16 *)arg; + +// *signal=(((signed char)readreg(client, 0x16))+128)<<8; + + return 0; + + } + + case FE_READ_SNR: + { +// s16 *snr = (s16 *)arg; + +// *snr=readreg(client, 0x24)<<8; +// *snr|=readreg(client, 0x25); + + break; + } + + case FE_READ_UNCORRECTED_BLOCKS: + { + u32 *ublocks = (u32 *)arg; + + *ublocks = 0; + + break; + } + + case FE_INIT: + case FE_RESET: + + nxt6000_reset(fe); + nxt6000_setup(fe); + + break; + + case FE_SET_FRONTEND: + { + struct nxt6000_config *nxt = FE2NXT(fe); + struct dvb_frontend_parameters *param = (struct dvb_frontend_parameters *)arg; + int result; + + switch(nxt->tuner_type) { + + case TUNER_TYPE_ALP510: + + if ((result = alp510_set_tv_freq(fe, param->frequency)) < 0) + return result; + + break; + + case TUNER_TYPE_SP5659: + + if ((result = sp5659_set_tv_freq(fe, param->frequency)) < 0) + return result; + + break; + + default: + + return -EFAULT; + + } + + if ((result = nxt6000_set_bandwidth(fe, param->u.ofdm.bandwidth)) < 0) + return result; + if ((result = nxt6000_set_guard_interval(fe, param->u.ofdm.guard_interval)) < 0) + return result; + if ((result = nxt6000_set_transmission_mode(fe, param->u.ofdm.transmission_mode)) < 0) + return result; + if ((result = nxt6000_set_inversion(fe, param->inversion)) < 0) + return result; + + break; + } + + default: + + return -EOPNOTSUPP; + + } + + return 0; + +} + +static u8 demod_addr_tbl[] = {0x14, 0x18, 0x24, 0x28}; + +static int nxt6000_attach(struct dvb_i2c_bus *i2c) +{ + + u8 addr_nr; + u8 fe_count = 0; + struct nxt6000_config nxt; + + dprintk("nxt6000: attach\n"); + + for (addr_nr = 0; addr_nr < sizeof(demod_addr_tbl); addr_nr++) { + + if (nxt6000_read(i2c, demod_addr_tbl[addr_nr], OFDM_MSC_REV) != NXT6000ASICDEVICE) + continue; + + if (pll_write(i2c, demod_addr_tbl[addr_nr], 0xC0, NULL, 0) == 0) { + + nxt.tuner_addr = 0xC0; + nxt.tuner_type = TUNER_TYPE_ALP510; + nxt.clock_inversion = 1; + + dprintk("nxt6000: detected TI ALP510 tuner at 0x%02X\n", nxt.tuner_addr); + + } else if (pll_write(i2c, demod_addr_tbl[addr_nr], 0xC2, NULL, 0) == 0) { + + nxt.tuner_addr = 0xC2; + nxt.tuner_type = TUNER_TYPE_SP5659; + nxt.clock_inversion = 0; + + dprintk("nxt6000: detected MITEL SP5659 tuner at 0x%02X\n", nxt.tuner_addr); + + } else { + + printk("nxt6000: unable to detect tuner\n"); + + continue; + + } + + nxt.demod_addr = demod_addr_tbl[addr_nr]; + + dprintk("nxt6000: attached at %d:%d\n", i2c->adapter->num, i2c->id); + + dvb_register_frontend(nxt6000_ioctl, i2c, (void *)(*((u32 *)&nxt)), &nxt6000_info); + + } + + return (fe_count > 0) ? 0 : -ENODEV; + +} + +static void nxt6000_detach(struct dvb_i2c_bus *i2c) +{ + + dprintk("nxt6000: detach\n"); + + dvb_unregister_frontend(nxt6000_ioctl, i2c); + +} + +static __init int nxt6000_init(void) +{ + + dprintk("nxt6000: init\n"); + + return dvb_register_i2c_device(THIS_MODULE, nxt6000_attach, nxt6000_detach); + +} + +static __exit void nxt6000_exit(void) +{ + + dprintk("nxt6000: cleanup\n"); + + dvb_unregister_i2c_device(nxt6000_attach); + +} + +module_init(nxt6000_init); +module_exit(nxt6000_exit); diff -Nru a/drivers/media/dvb/frontends/nxt6000.h b/drivers/media/dvb/frontends/nxt6000.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/frontends/nxt6000.h Tue Apr 8 09:39:32 2003 @@ -0,0 +1,301 @@ +/**********************************************************************/ + * DRV6000reg.H + * Public Include File for DRV6000 users + * + * Copyright (C) 2001 NxtWave Communications, Inc. + * + * $Log: nxt6000.h,v $ + * Revision 1.2 2003/01/27 12:32:42 fschirmer + * Lots of bugfixes and new features + * + * Revision 1.1 2003/01/21 18:43:09 fschirmer + * Nxt6000 based frontend driver + * + * Revision 1.1 2003/01/03 02:25:45 obi + * alps tdme7 driver + * + * + * Rev 1.10 Jun 12 2002 11:28:02 dkoeger + * Updated for SA in GUi work + * + * Rev 1.9 Apr 01 2002 10:38:46 dkoeger + * Updated for 1.0.31 GUI + * + * Rev 1.8 Mar 11 2002 10:04:56 dkoeger + * Updated for 1.0.31 GUI version + * + * Rev 1.5 Dec 07 2001 14:40:40 dkoeger + * Updated for 1.0.28 GUI + * + * Rev 1.4 Nov 13 2001 11:09:00 dkoeger + * No change. + * + * Rev 1.3 Aug 23 2001 14:21:02 dkoeger + * Updated for driver version 2.1.9 + * + * Rev 1.2 Jul 09 2001 09:20:04 dkoeger + * Updated for 1.0.18 + * + * Rev 1.1 Jun 13 2001 16:14:24 dkoeger + * Updated to reflect NXT6000 GUI BETA 1.0.11 6/13/2001 + **********************************************************************/ + + +/* Nxt6000 Register Addresses and Bit Masks */ + +/* Maximum Register Number */ +#define MAXNXT6000REG (0x9A) + +/* 0x1B A_VIT_BER_0 aka 0x3A */ +#define A_VIT_BER_0 (0x1B) + +/* 0x1D A_VIT_BER_TIMER_0 aka 0x38 */ +#define A_VIT_BER_TIMER_0 (0x1D) + +/* 0x21 RS_COR_STAT */ +#define RS_COR_STAT (0x21) +#define RSCORESTATUS (0x03) + +/* 0x22 RS_COR_INTEN */ +#define RS_COR_INTEN (0x22) + +/* 0x23 RS_COR_INSTAT */ +#define RS_COR_INSTAT (0x23) +#define INSTAT_ERROR (0x04) +#define LOCK_LOSS_BITS (0x03) + +/* 0x24 RS_COR_SYNC_PARAM */ +#define RS_COR_SYNC_PARAM (0x24) +#define SYNC_PARAM (0x03) + +/* 0x25 BER_CTRL */ +#define BER_CTRL (0x25) +#define BER_ENABLE (0x02) +#define BER_RESET (0x01) + +/* 0x26 BER_PAY */ +#define BER_PAY (0x26) + +/* 0x27 BER_PKT_L */ +#define BER_PKT_L (0x27) +#define BER_PKTOVERFLOW (0x80) + +/* 0x30 VIT_COR_CTL */ +#define VIT_COR_CTL (0x30) +#define BER_CONTROL (0x02) +#define VIT_COR_MASK (0x82) +#define VIT_COR_RESYNC (0x80) + + +/* 0x32 VIT_SYNC_STATUS */ +#define VIT_SYNC_STATUS (0x32) +#define VITINSYNC (0x80) + +/* 0x33 VIT_COR_INTEN */ +#define VIT_COR_INTEN (0x33) +#define GLOBAL_ENABLE (0x80) + +/* 0x34 VIT_COR_INTSTAT */ +#define VIT_COR_INTSTAT (0x34) +#define BER_DONE (0x08) +#define BER_OVERFLOW (0x10) + +/* 0x38 OFDM_BERTimer */ /* Use the alias registers */ +#define A_VIT_BER_TIMER_0 (0x1D) + +/* 0x3A VIT_BER_TIMER_0 */ /* Use the alias registers */ +#define A_VIT_BER_0 (0x1B) + +/* 0x40 OFDM_COR_CTL */ +#define OFDM_COR_CTL (0x40) +#define COREACT (0x20) +#define HOLDSM (0x10) +#define WAIT_AGC (0x02) +#define WAIT_SYR (0x03) + +/* 0x41 OFDM_COR_STAT */ +#define OFDM_COR_STAT (0x41) +#define COR_STATUS (0x0F) +#define MONITOR_TPS (0x06) +#define TPSLOCKED (0x40) +#define AGCLOCKED (0x10) + +/* 0x42 OFDM_COR_INTEN */ +#define OFDM_COR_INTEN (0x42) +#define TPSRCVBAD (0x04) +#define TPSRCVCHANGED (0x02) +#define TPSRCVUPDATE (0x01) + +/* 0x43 OFDM_COR_INSTAT */ +#define OFDM_COR_INSTAT (0x43) + +/* 0x44 OFDM_COR_MODEGUARD */ +#define OFDM_COR_MODEGUARD (0x44) +#define FORCEMODE (0x08) +#define FORCEMODE8K (0x04) + +/* 0x45 OFDM_AGC_CTL */ +#define OFDM_AGC_CTL (0x45) +#define INITIAL_AGC_BW (0x08) +#define AGCNEG (0x02) +#define AGCLAST (0x10) + +/* 0x48 OFDM_AGC_TARGET */ +#define OFDM_AGC_TARGET (0x48) +#define OFDM_AGC_TARGET_DEFAULT (0x28) +#define OFDM_AGC_TARGET_IMPULSE (0x38) + +/* 0x49 OFDM_AGC_GAIN_1 */ +#define OFDM_AGC_GAIN_1 (0x49) + +/* 0x4B OFDM_ITB_CTL */ +#define OFDM_ITB_CTL (0x4B) +#define ITBINV (0x01) + +/* 0x4C OFDM_ITB_FREQ_1 */ +#define OFDM_ITB_FREQ_1 (0x4C) + +/* 0x4D OFDM_ITB_FREQ_2 */ +#define OFDM_ITB_FREQ_2 (0x4D) + +/* 0x4E OFDM_CAS_CTL */ +#define OFDM_CAS_CTL (0x4E) +#define ACSDIS (0x40) +#define CCSEN (0x80) + +/* 0x4F CAS_FREQ */ +#define CAS_FREQ (0x4F) + +/* 0x51 OFDM_SYR_CTL */ +#define OFDM_SYR_CTL (0x51) +#define SIXTH_ENABLE (0x80) +#define SYR_TRACKING_DISABLE (0x01) + +/* 0x52 OFDM_SYR_STAT */ +#define OFDM_SYR_STAT (0x52) +#define GI14_2K_SYR_LOCK (0x13) +#define GI14_8K_SYR_LOCK (0x17) +#define GI14_SYR_LOCK (0x10) + +/* 0x55 OFDM_SYR_OFFSET_1 */ +#define OFDM_SYR_OFFSET_1 (0x55) + +/* 0x56 OFDM_SYR_OFFSET_2 */ +#define OFDM_SYR_OFFSET_2 (0x56) + +/* 0x58 OFDM_SCR_CTL */ +#define OFDM_SCR_CTL (0x58) +#define SYR_ADJ_DECAY_MASK (0x70) +#define SYR_ADJ_DECAY (0x30) + +/* 0x59 OFDM_PPM_CTL_1 */ +#define OFDM_PPM_CTL_1 (0x59) +#define PPMMAX_MASK (0x30) +#define PPM256 (0x30) + +/* 0x5B OFDM_TRL_NOMINALRATE_1 */ +#define OFDM_TRL_NOMINALRATE_1 (0x5B) + +/* 0x5C OFDM_TRL_NOMINALRATE_2 */ +#define OFDM_TRL_NOMINALRATE_2 (0x5C) + +/* 0x5D OFDM_TRL_TIME_1 */ +#define OFDM_TRL_TIME_1 (0x5D) + +/* 0x60 OFDM_CRL_FREQ_1 */ +#define OFDM_CRL_FREQ_1 (0x60) + +/* 0x63 OFDM_CHC_CTL_1 */ +#define OFDM_CHC_CTL_1 (0x63) +#define MANMEAN1 (0xF0); +#define CHCFIR (0x01) + +/* 0x64 OFDM_CHC_SNR */ +#define OFDM_CHC_SNR (0x64) + +/* 0x65 OFDM_BDI_CTL */ +#define OFDM_BDI_CTL (0x65) +#define LP_SELECT (0x02) + +/* 0x67 OFDM_TPS_RCVD_1 */ +#define OFDM_TPS_RCVD_1 (0x67) +#define TPSFRAME (0x03) + +/* 0x68 OFDM_TPS_RCVD_2 */ +#define OFDM_TPS_RCVD_2 (0x68) + +/* 0x69 OFDM_TPS_RCVD_3 */ +#define OFDM_TPS_RCVD_3 (0x69) + +/* 0x6A OFDM_TPS_RCVD_4 */ +#define OFDM_TPS_RCVD_4 (0x6A) + +/* 0x6B OFDM_TPS_RESERVED_1 */ +#define OFDM_TPS_RESERVED_1 (0x6B) + +/* 0x6C OFDM_TPS_RESERVED_2 */ +#define OFDM_TPS_RESERVED_2 (0x6C) + +/* 0x73 OFDM_MSC_REV */ +#define OFDM_MSC_REV (0x73) + +/* 0x76 OFDM_SNR_CARRIER_2 */ +#define OFDM_SNR_CARRIER_2 (0x76) +#define MEAN_MASK (0x80) +#define MEANBIT (0x80) + +/* 0x80 ANALOG_CONTROL_0 */ +#define ANALOG_CONTROL_0 (0x80) +#define POWER_DOWN_ADC (0x40) + +/* 0x81 ENABLE_TUNER_IIC */ +#define ENABLE_TUNER_IIC (0x81) +#define ENABLE_TUNER_BIT (0x01) + +/* 0x82 EN_DMD_RACQ */ +#define EN_DMD_RACQ (0x82) +#define EN_DMD_RACQ_REG_VAL (0x81) +#define EN_DMD_RACQ_REG_VAL_14 (0x01) + +/* 0x84 SNR_COMMAND */ +#define SNR_COMMAND (0x84) +#define SNRStat (0x80) + +/* 0x85 SNRCARRIERNUMBER_LSB */ +#define SNRCARRIERNUMBER_LSB (0x85) + +/* 0x87 SNRMINTHRESHOLD_LSB */ +#define SNRMINTHRESHOLD_LSB (0x87) + +/* 0x89 SNR_PER_CARRIER_LSB */ +#define SNR_PER_CARRIER_LSB (0x89) + +/* 0x8B SNRBELOWTHRESHOLD_LSB */ +#define SNRBELOWTHRESHOLD_LSB (0x8B) + +/* 0x91 RF_AGC_VAL_1 */ +#define RF_AGC_VAL_1 (0x91) + +/* 0x92 RF_AGC_STATUS */ +#define RF_AGC_STATUS (0x92) + +/* 0x98 DIAG_CONFIG */ +#define DIAG_CONFIG (0x98) +#define DIAG_MASK (0x70) +#define TB_SET (0x10) +#define TRAN_SELECT (0x07) +#define SERIAL_SELECT (0x01) + +/* 0x99 SUB_DIAG_MODE_SEL */ +#define SUB_DIAG_MODE_SEL (0x99) +#define CLKINVERSION (0x01) + +/* 0x9A TS_FORMAT */ +#define TS_FORMAT (0x9A) +#define ERROR_SENSE (0x08) +#define VALID_SENSE (0x04) +#define SYNC_SENSE (0x02) +#define GATED_CLOCK (0x01) + +#define NXT6000ASICDEVICE (0x0b) + diff -Nru a/drivers/media/dvb/frontends/stv0299.c b/drivers/media/dvb/frontends/stv0299.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/frontends/stv0299.c Tue Apr 8 09:39:32 2003 @@ -0,0 +1,880 @@ +/* + Universal driver for STV0299/TDA5059/SL1935 based + DVB QPSK frontends + + Alps BSRU6, LG TDQB-S00x + + Copyright (C) 2001-2002 Convergence Integrated Media GmbH + , + , + + + Philips SU1278/SH + + Copyright (C) 2002 by Peter Schildmann + + + LG TDQF-S001F + + Copyright (C) 2002 Felix Domke + & Andreas Oberritter + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include +#include + +#include "dvb_frontend.h" + +static int debug = 0; +#define dprintk if (debug) printk + +/* frontend types */ +#define UNKNOWN_FRONTEND -1 +#define PHILIPS_SU1278SH 0 +#define ALPS_BSRU6 1 +#define LG_TDQF_S001F 2 + +/* Master Clock = 88 MHz */ +#define M_CLK (88000000UL) + +static +struct dvb_frontend_info uni0299_info = { + name: "STV0299/TSA5059/SL1935 based", + type: FE_QPSK, + frequency_min: 950000, + frequency_max: 2150000, + frequency_stepsize: 125, /* kHz for QPSK frontends */ + frequency_tolerance: M_CLK/2000, + symbol_rate_min: 1000000, + symbol_rate_max: 45000000, + symbol_rate_tolerance: 500, /* ppm */ + notifier_delay: 0, + caps: FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | + FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | + FE_CAN_QPSK | + FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO | + FE_CAN_CLEAN_SETUP +}; + + +static +u8 init_tab [] = { + /* clock registers */ + 0x01, 0x15, /* K = 0, DIRCLK = 0, M = 0x15 */ + 0x02, 0x30, /* STDBY = 0, VCO = 0 (ON), SERCLK = 0, P = 0 */ + /* f_VCO = 4MHz * 4 * (M+1) / (K+1) = 352 MHz */ + 0x03, 0x00, /* auxiliary clock not used */ + 0x04, 0x7d, /* F22FR = 0x7d */ + /* F22 = f_VCO / 128 / 0x7d = 22 kHz */ + + /* I2C bus repeater */ + 0x05, 0x35, /* I2CT = 0, SCLT = 1, SDAT = 1 */ + + /* general purpose DAC registers */ + 0x06, 0x40, /* DAC not used, set to high impendance mode */ + 0x07, 0x00, /* DAC LSB */ + + /* DiSEqC registers */ + 0x08, 0x40, /* DiSEqC off */ + 0x09, 0x00, /* FIFO */ + + /* Input/Output configuration register */ + 0x0c, 0x51, /* OP1 ctl = Normal, OP1 val = 1 (LNB Power ON) */ + /* OP0 ctl = Normal, OP0 val = 1 (18 V) */ + /* Nyquist filter = 00, QPSK reverse = 0 */ + + /* AGC1 control register */ + 0x0d, 0x82, /* DC offset compensation = ON, beta_agc1 = 2 */ + + /* Timing loop register */ + 0x0e, 0x23, /* alpha_tmg = 2, beta_tmg = 3 */ + + 0x10, 0x3f, // AGC2 0x3d + 0x11, 0x84, + 0x12, 0xb5, // Lock detect: -64 Carrier freq detect:on + 0x13, 0xb6, // alpha_car b:4 a:0 noise est:256ks derot:on + 0x14, 0x93, // beat carc:0 d:0 e:0xf phase detect algo: 1 + 0x15, 0xc9, // lock detector threshold + + 0x16, 0x1d, /* AGC1 integrator value */ + 0x17, 0x00, + 0x18, 0x14, + 0x19, 0xf2, + + 0x1a, 0x11, + + 0x1b, 0x9c, + 0x1c, 0x00, + 0x1d, 0x00, + 0x1e, 0x0b, + 0x1f, 0x50, + + 0x20, 0x00, + 0x21, 0x00, + 0x22, 0x00, + 0x23, 0x00, + 0x24, 0xff, + 0x25, 0xff, + 0x26, 0xff, + + 0x28, 0x00, // out imp: normal out type: parallel FEC mode:0 + 0x29, 0x1e, // 1/2 threshold + 0x2a, 0x14, // 2/3 threshold + 0x2b, 0x0f, // 3/4 threshold + 0x2c, 0x09, // 5/6 threshold + 0x2d, 0x05, // 7/8 threshold + 0x2e, 0x01, + + 0x31, 0x1f, // test all FECs + + 0x32, 0x19, // viterbi and synchro search + 0x33, 0xfc, // rs control + 0x34, 0x93, // error control + + 0x0b, 0x00, + 0x27, 0x00, + 0x2f, 0x00, + 0x30, 0x00, + 0x35, 0x00, + 0x36, 0x00, + 0x37, 0x00, + 0x38, 0x00, + 0x39, 0x00, + 0x3a, 0x00, + 0x3b, 0x00, + 0x3c, 0x00, + 0x3d, 0x00, + 0x3e, 0x00, + 0x3f, 0x00, + 0x40, 0x00, + 0x41, 0x00, + 0x42, 0x00, + 0x43, 0x00, + 0x44, 0x00, + 0x45, 0x00, + 0x46, 0x00, + 0x47, 0x00, + 0x48, 0x00, + 0x49, 0x00, + 0x4a, 0x00, + 0x4b, 0x00, + 0x4c, 0x00, + 0x4d, 0x00, + 0x4e, 0x00, + 0x4f, 0x00 +}; + + +static +int stv0299_writereg (struct dvb_i2c_bus *i2c, u8 reg, u8 data) +{ + int ret; + u8 buf [] = { reg, data }; + struct i2c_msg msg = { addr: 0x68, flags: 0, buf: buf, len: 2 }; + + dprintk ("%s\n", __FUNCTION__); + + ret = i2c->xfer (i2c, &msg, 1); + + if (ret != 1) + dprintk("%s: writereg error (reg == 0x%02x, val == 0x%02x, ret == %i)\n", + __FUNCTION__, reg, data, ret); + + return (ret != 1) ? -1 : 0; +} + + +static +u8 stv0299_readreg (struct dvb_i2c_bus *i2c, u8 reg) +{ + int ret; + u8 b0 [] = { reg }; + u8 b1 [] = { 0 }; + struct i2c_msg msg [] = { { addr: 0x68, flags: 0, buf: b0, len: 1 }, + { addr: 0x68, flags: I2C_M_RD, buf: b1, len: 1 } }; + + dprintk ("%s\n", __FUNCTION__); + + ret = i2c->xfer (i2c, msg, 2); + + if (ret != 2) + dprintk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); + + return b1[0]; +} + + +static +int stv0299_readregs (struct dvb_i2c_bus *i2c, u8 reg1, u8 *b, u8 len) +{ + int ret; + struct i2c_msg msg [] = { { addr: 0x68, flags: 0, buf: ®1, len: 1 }, + { addr: 0x68, flags: I2C_M_RD, buf: b, len: len } }; + + dprintk ("%s\n", __FUNCTION__); + + ret = i2c->xfer (i2c, msg, 2); + + if (ret != 2) + dprintk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); + + return ret == 2 ? 0 : -1; +} + + +static +int pll_write (struct dvb_i2c_bus *i2c, u8 data [4], int ftype) +{ + int ret; + u8 rpt1 [] = { 0x05, 0xb5 }; /* enable i2c repeater on stv0299 */ + /* TSA5059 i2c-bus address */ + u8 addr = (ftype == PHILIPS_SU1278SH) ? 0x60 : 0x61; + struct i2c_msg msg [] = {{ addr: 0x68, flags: 0, buf: rpt1, len: 2 }, + { addr: addr, flags: 0, buf: data, len: 4 }}; + + dprintk ("%s\n", __FUNCTION__); + + if (ftype == LG_TDQF_S001F || ftype == ALPS_BSRU6) { + ret = i2c->xfer (i2c, &msg[0], 1); + ret += i2c->xfer (i2c, &msg[1], 1); + } + else { + ret = i2c->xfer (i2c, msg, 2); + } + + if (ret != 2) + dprintk("%s: i/o error (ret == %i)\n", __FUNCTION__, ret); + + return (ret != 2) ? -1 : 0; +} + + +static +int sl1935_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, int ftype) +{ + u8 buf[4]; + u32 div; + + u32 ratios[] = { 2000, 1000, 500, 250, 125 }; + u8 ratio; + + for (ratio = 4; ratio > 0; ratio--) + if ((freq / ratios[ratio]) <= 0x3fff) + break; + + div = freq / ratios[ratio]; + + buf[0] = (freq >> 8) & 0x7f; + buf[1] = freq & 0xff; + buf[2] = 0x80 | ratio; + + if (freq < 1531000) + buf[3] = 0x10; + else + buf[3] = 0x00; + + return pll_write (i2c, buf, ftype); +} + +/** + * set up the downconverter frequency divisor for a + * reference clock comparision frequency of 125 kHz. + */ +static +int tsa5059_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, int ftype) +{ + u32 div = freq / 125; + + u8 buf[4] = { (div >> 8) & 0x7f, div & 0xff, 0x84 }; + + if (ftype == PHILIPS_SU1278SH) + /* activate f_xtal/f_comp signal output */ + /* charge pump current C0/C1 = 00 */ + buf[3] = 0x20; + else + buf[3] = freq > 1530000 ? 0xc0 : 0xc4; + + dprintk ("%s\n", __FUNCTION__); + + return pll_write (i2c, buf, ftype); +} + +static +int pll_set_tv_freq (struct dvb_i2c_bus *i2c, u32 freq, int ftype) +{ + if (ftype == LG_TDQF_S001F) + return sl1935_set_tv_freq(i2c, freq, ftype); + else + return tsa5059_set_tv_freq(i2c, freq, ftype); +} + +#if 0 +static +int tsa5059_read_status (struct dvb_i2c_bus *i2c) +{ + int ret; + u8 rpt1 [] = { 0x05, 0xb5 }; + u8 stat [] = { 0 }; + + struct i2c_msg msg [] = {{ addr: 0x68, flags: 0, buf: rpt1, len: 2 }, + { addr: 0x60, flags: I2C_M_RD, buf: stat, len: 1 }}; + + dprintk ("%s\n", __FUNCTION__); + + ret = i2c->xfer (i2c, msg, 2); + + if (ret != 2) + dprintk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret); + + return stat[0]; +} +#endif + + +static +int stv0299_init (struct dvb_i2c_bus *i2c, int ftype) +{ + int i; + + dprintk("stv0299: init chip\n"); + + for (i=0; i 4) + return FEC_AUTO; + + return fec_tab [index]; +} + + +static +int stv0299_wait_diseqc_fifo (struct dvb_i2c_bus *i2c, int timeout) +{ + unsigned long start = jiffies; + + dprintk ("%s\n", __FUNCTION__); + + while (stv0299_readreg(i2c, 0x0a) & 1) { + if (jiffies - start > timeout) { + dprintk ("%s: timeout!!\n", __FUNCTION__); + return -ETIMEDOUT; + } + current->state = TASK_INTERRUPTIBLE; + schedule_timeout (1); + }; + + return 0; +} + + +static +int stv0299_wait_diseqc_idle (struct dvb_i2c_bus *i2c, int timeout) +{ + unsigned long start = jiffies; + + dprintk ("%s\n", __FUNCTION__); + + while ((stv0299_readreg(i2c, 0x0a) & 3) != 2 ) { + if (jiffies - start > timeout) { + dprintk ("%s: timeout!!\n", __FUNCTION__); + return -ETIMEDOUT; + } + current->state = TASK_INTERRUPTIBLE; + schedule_timeout (1); + }; + + return 0; +} + + +static +int stv0299_send_diseqc_msg (struct dvb_i2c_bus *i2c, + struct dvb_diseqc_master_cmd *m) +{ + u8 val; + int i; + + dprintk ("%s\n", __FUNCTION__); + + if (stv0299_wait_diseqc_idle (i2c, 100) < 0) + return -ETIMEDOUT; + + val = stv0299_readreg (i2c, 0x08); + + if (stv0299_writereg (i2c, 0x08, (val & ~0x7) | 0x6)) /* DiSEqC mode */ + return -EREMOTEIO; + + for (i=0; imsg_len; i++) { + if (stv0299_wait_diseqc_fifo (i2c, 100) < 0) + return -ETIMEDOUT; + + if (stv0299_writereg (i2c, 0x09, m->msg[i])) + return -EREMOTEIO; + } + + if (stv0299_wait_diseqc_idle (i2c, 100) < 0) + return -ETIMEDOUT; + + return 0; +} + + +static +int stv0299_send_diseqc_burst (struct dvb_i2c_bus *i2c, fe_sec_mini_cmd_t burst) +{ + u8 val; + + dprintk ("%s\n", __FUNCTION__); + + if (stv0299_wait_diseqc_idle (i2c, 100) < 0) + return -ETIMEDOUT; + + val = stv0299_readreg (i2c, 0x08); + + if (stv0299_writereg (i2c, 0x08, (val & ~0x7) | 0x2)) /* burst mode */ + return -EREMOTEIO; + + if (stv0299_writereg (i2c, 0x09, burst == SEC_MINI_A ? 0x00 : 0xff)) + return -EREMOTEIO; + + if (stv0299_wait_diseqc_idle (i2c, 100) < 0) + return -ETIMEDOUT; + + if (stv0299_writereg (i2c, 0x08, val)) + return -EREMOTEIO; + + return 0; +} + + +static +int stv0299_set_tone (struct dvb_i2c_bus *i2c, fe_sec_tone_mode_t tone) +{ + u8 val; + + dprintk ("%s\n", __FUNCTION__); + + if (stv0299_wait_diseqc_idle (i2c, 100) < 0) + return -ETIMEDOUT; + + val = stv0299_readreg (i2c, 0x08); + + switch (tone) { + case SEC_TONE_ON: + return stv0299_writereg (i2c, 0x08, val | 0x3); + case SEC_TONE_OFF: + return stv0299_writereg (i2c, 0x08, (val & ~0x3) | 0x02); + default: + return -EINVAL; + }; +} + + +static +int stv0299_set_voltage (struct dvb_i2c_bus *i2c, fe_sec_voltage_t voltage) +{ + u8 val; + + dprintk ("%s\n", __FUNCTION__); + + val = stv0299_readreg (i2c, 0x0c); + val &= 0x0f; + val |= 0x40; /* LNB power on */ + + switch (voltage) { + case SEC_VOLTAGE_13: + return stv0299_writereg (i2c, 0x0c, val); + case SEC_VOLTAGE_18: + return stv0299_writereg (i2c, 0x0c, val | 0x10); + default: + return -EINVAL; + }; +} + + +static +int stv0299_set_symbolrate (struct dvb_i2c_bus *i2c, u32 srate) +{ + u32 ratio; + u32 tmp; + u8 aclk = 0xb4, bclk = 0x51; + + if (srate > M_CLK) + srate = M_CLK; + if (srate < 500000) + srate = 500000; + + if (srate < 30000000) { aclk = 0xb6; bclk = 0x53; } + if (srate < 14000000) { aclk = 0xb7; bclk = 0x53; } + if (srate < 7000000) { aclk = 0xb7; bclk = 0x4f; } + if (srate < 3000000) { aclk = 0xb7; bclk = 0x4b; } + if (srate < 1500000) { aclk = 0xb7; bclk = 0x47; } + +#define FIN (M_CLK >> 4) + + tmp = srate << 4; + ratio = tmp / FIN; + + tmp = (tmp % FIN) << 8; + ratio = (ratio << 8) + tmp / FIN; + + tmp = (tmp % FIN) << 8; + ratio = (ratio << 8) + tmp / FIN; + + stv0299_writereg (i2c, 0x13, aclk); + stv0299_writereg (i2c, 0x14, bclk); + stv0299_writereg (i2c, 0x1f, (ratio >> 16) & 0xff); + stv0299_writereg (i2c, 0x20, (ratio >> 8) & 0xff); + stv0299_writereg (i2c, 0x21, (ratio ) & 0xf0); + + return 0; +} + + +static +int stv0299_get_symbolrate (struct dvb_i2c_bus *i2c) +{ + u32 Mclk = M_CLK / 4096L; + u32 srate; + s32 offset; + u8 sfr[3]; + s8 rtf; + + dprintk ("%s\n", __FUNCTION__); + + stv0299_readregs (i2c, 0x1f, sfr, 3); + stv0299_readregs (i2c, 0x1a, &rtf, 1); + + srate = (sfr[0] << 8) | sfr[1]; + srate *= Mclk; + srate /= 16; + srate += (sfr[2] >> 4) * Mclk / 256; + + offset = (s32) rtf * (srate / 4096L); + offset /= 128; + + srate += offset; + + srate += 1000; + srate /= 2000; + srate *= 2000; + + return srate; +} + + +static +int uni0299_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) +{ + int tuner_type = (int)fe->data; + struct dvb_i2c_bus *i2c = fe->i2c; + + dprintk ("%s\n", __FUNCTION__); + + switch (cmd) { + case FE_GET_INFO: + memcpy (arg, &uni0299_info, sizeof(struct dvb_frontend_info)); + break; + + case FE_READ_STATUS: + { + fe_status_t *status = (fe_status_t *) arg; + u8 signal = 0xff - stv0299_readreg (i2c, 0x18); + u8 sync = stv0299_readreg (i2c, 0x1b); + + dprintk ("VSTATUS: 0x%02x\n", sync); + + *status = 0; + + if (signal > 10) + *status |= FE_HAS_SIGNAL; + + if (sync & 0x80) + *status |= FE_HAS_CARRIER; + + if (sync & 0x10) + *status |= FE_HAS_VITERBI; + + if (sync & 0x08) + *status |= FE_HAS_SYNC; + + if ((sync & 0x98) == 0x98) + *status |= FE_HAS_LOCK; + + break; + } + + case FE_READ_BER: + *((u32*) arg) = (stv0299_readreg (i2c, 0x1d) << 8) + | stv0299_readreg (i2c, 0x1e); + break; + + case FE_READ_SIGNAL_STRENGTH: + { + s32 signal = 0xffff - ((stv0299_readreg (i2c, 0x18) << 8) + | stv0299_readreg (i2c, 0x19)); + + dprintk ("AGC2I: 0x%02x%02x, signal=0x%04x\n", + stv0299_readreg (i2c, 0x18), + stv0299_readreg (i2c, 0x19), signal); + + signal = signal * 5 / 4; + *((u16*) arg) = (signal > 0xffff) ? 0xffff : + (signal < 0) ? 0 : signal; + break; + } + case FE_READ_SNR: + { + s32 snr = 0xffff - ((stv0299_readreg (i2c, 0x24) << 8) + | stv0299_readreg (i2c, 0x25)); + snr = 3 * (snr - 0xa100); + *((u16*) arg) = (snr > 0xffff) ? 0xffff : + (snr < 0) ? 0 : snr; + break; + } + case FE_READ_UNCORRECTED_BLOCKS: + *((u32*) arg) = 0; /* the stv0299 can't measure BER and */ + return -EOPNOTSUPP; /* errors at the same time.... */ + + case FE_SET_FRONTEND: + { + struct dvb_frontend_parameters *p = arg; + + pll_set_tv_freq (i2c, p->frequency, tuner_type); + stv0299_set_FEC (i2c, p->u.qpsk.fec_inner); + stv0299_set_symbolrate (i2c, p->u.qpsk.symbol_rate); + stv0299_check_inversion (i2c); + /* pll_set_tv_freq (i2c, p->frequency, tuner_type); */ + stv0299_writereg (i2c, 0x22, 0x00); + stv0299_writereg (i2c, 0x23, 0x00); + stv0299_readreg (i2c, 0x23); + stv0299_writereg (i2c, 0x12, 0xb9); + + /* printk ("%s: tsa5059 status: %x\n", __FUNCTION__, tsa5059_read_status(i2c)); */ + break; + } + + case FE_GET_FRONTEND: + { + struct dvb_frontend_parameters *p = arg; + s32 derot_freq; + + derot_freq = (s32)(s16) ((stv0299_readreg (i2c, 0x22) << 8) + | stv0299_readreg (i2c, 0x23)); + + derot_freq *= (M_CLK >> 16); + derot_freq += 500; + derot_freq /= 1000; + + p->frequency += derot_freq; + p->inversion = (stv0299_readreg (i2c, 0x0c) & 1) ? + INVERSION_OFF : INVERSION_ON; + p->u.qpsk.fec_inner = stv0299_get_fec (i2c); + p->u.qpsk.symbol_rate = stv0299_get_symbolrate (i2c); + break; + } + + case FE_SLEEP: + stv0299_writereg (i2c, 0x0c, 0x00); /* LNB power off! */ + stv0299_writereg (i2c, 0x02, 0x80); + break; + + case FE_INIT: + return stv0299_init (i2c, tuner_type); + + case FE_RESET: + stv0299_writereg (i2c, 0x22, 0x00); + stv0299_writereg (i2c, 0x23, 0x00); + stv0299_readreg (i2c, 0x23); + stv0299_writereg (i2c, 0x12, 0xb9); + break; + + case FE_DISEQC_SEND_MASTER_CMD: + return stv0299_send_diseqc_msg (i2c, arg); + + case FE_DISEQC_SEND_BURST: + return stv0299_send_diseqc_burst (i2c, (fe_sec_mini_cmd_t) arg); + + case FE_SET_TONE: + return stv0299_set_tone (i2c, (fe_sec_tone_mode_t) arg); + + case FE_SET_VOLTAGE: + return stv0299_set_voltage (i2c, (fe_sec_voltage_t) arg); + + default: + return -EOPNOTSUPP; + }; + + return 0; +} + +static +int probe_tuner (struct dvb_i2c_bus *i2c) +{ + int type; + + /* read the status register of TSA5059 */ + u8 rpt[] = { 0x05, 0xb5 }; + u8 stat [] = { 0 }; + struct i2c_msg msg1 [] = {{ addr: 0x68, flags: 0, buf: rpt, len: 2 }, + { addr: 0x60, flags: I2C_M_RD, buf: stat, len: 1 }}; + struct i2c_msg msg2 [] = {{ addr: 0x68, flags: 0, buf: rpt, len: 2 }, + { addr: 0x61, flags: I2C_M_RD, buf: stat, len: 1 }}; + + if (i2c->xfer(i2c, msg1, 2) == 2) { + type = PHILIPS_SU1278SH; + printk ("%s: setup for tuner SU1278/SH\n", __FILE__); + } else if (i2c->xfer(i2c, msg2, 2) == 2) { +if (0) { // if ((stat[0] & 0x3f) == 0) { + type = LG_TDQF_S001F; + printk ("%s: setup for tuner TDQF-S001F\n", __FILE__); + } + else { + type = ALPS_BSRU6; + printk ("%s: setup for tuner BSRU6, TDQB-S00x\n", __FILE__); + } + } else { + type = UNKNOWN_FRONTEND; + printk ("%s: unknown PLL synthesizer, " + "please report to !!\n", + __FILE__); + } + return type; +} + + +static +int uni0299_attach (struct dvb_i2c_bus *i2c) +{ + int tuner_type; + u8 id = stv0299_readreg (i2c, 0x00); + + dprintk ("%s\n", __FUNCTION__); + + /* register 0x00 contains 0xa1 for STV0299 and STV0299B */ + /* register 0x00 might contain 0x80 when returning from standby */ + if (id != 0xa1 && id != 0x80) + return -ENODEV; + + if ((tuner_type = probe_tuner(i2c)) < 0) + return -ENODEV; + + dvb_register_frontend (uni0299_ioctl, i2c, (void*) tuner_type, + &uni0299_info); + + return 0; +} + + +static +void uni0299_detach (struct dvb_i2c_bus *i2c) +{ + dprintk ("%s\n", __FUNCTION__); + + dvb_unregister_frontend (uni0299_ioctl, i2c); +} + + +static +int __init init_uni0299 (void) +{ + dprintk ("%s\n", __FUNCTION__); + + return dvb_register_i2c_device (THIS_MODULE, uni0299_attach, uni0299_detach); +} + + +static +void __exit exit_uni0299 (void) +{ + dprintk ("%s\n", __FUNCTION__); + + dvb_unregister_i2c_device (uni0299_attach); +} + +module_init (init_uni0299); +module_exit (exit_uni0299); + +MODULE_PARM(debug,"i"); +MODULE_PARM_DESC(debug, "enable verbose debug messages"); + +MODULE_DESCRIPTION("Universal STV0299/TSA5059/SL1935 DVB Frontend driver"); +MODULE_AUTHOR("Ralph Metzler, Holger Waechtler, Peter Schildmann, Felix Domke, Andreas Oberritter"); +MODULE_LICENSE("GPL"); + diff -Nru a/drivers/media/dvb/frontends/ves1820.c b/drivers/media/dvb/frontends/ves1820.c --- a/drivers/media/dvb/frontends/ves1820.c Sat Nov 30 09:14:14 2002 +++ b/drivers/media/dvb/frontends/ves1820.c Mon Apr 7 13:20:02 2003 @@ -23,12 +23,14 @@ #include #include -#include "compat.h" #include "dvb_frontend.h" -static int debug = 0; -#define dprintk if (debug) printk +#if 0 +#define dprintk(x...) printk(x) +#else +#define dprintk(x...) +#endif /** @@ -36,36 +38,58 @@ * extra memory but use frontend->data as bitfield */ -#define SET_PWM(frontend,pwm) do { \ - (int) frontend->data &= ~0xff; \ - (int) frontend->data |= pwm; \ +#define SET_PWM(data,pwm) do { \ + (int) data &= ~0xff; \ + (int) data |= pwm; \ } while (0) -#define SET_REG0(frontend,reg0) do { \ - (int) frontend->data &= ~(0xff << 8); \ - (int) frontend->data |= reg0 << 8; \ +#define SET_REG0(data,reg0) do { \ + (int) data &= ~(0xff << 8); \ + (int) data |= reg0 << 8; \ } while (0) -#define SET_TUNER(frontend,type) do { \ - (int) frontend->data &= ~(0xff << 16); \ - (int) frontend->data |= type << 16; \ +#define SET_TUNER(data,type) do { \ + (int) data &= ~(0xff << 16); \ + (int) data |= type << 16; \ } while (0) -#define GET_PWM(frontend) ((u8) ((int) frontend->data & 0xff)) -#define GET_REG0(frontend) ((u8) (((int) frontend->data >> 8) & 0xff)) -#define GET_TUNER(frontend) ((u8) (((int) frontend->data >> 16) & 0xff)) +#define SET_DEMOD_ADDR(data,type) do { \ + (int) data &= ~(0xff << 24); \ + (int) data |= type << 24; \ +} while (0) + +#define GET_PWM(data) ((u8) ((int) data & 0xff)) +#define GET_REG0(data) ((u8) (((int) data >> 8) & 0xff)) +#define GET_TUNER(data) ((u8) (((int) data >> 16) & 0xff)) +#define GET_DEMOD_ADDR(data) ((u8) (((int) data >> 24) & 0xff)) +static inline +void ddelay (int ms) +{ + current->state=TASK_INTERRUPTIBLE; + schedule_timeout((HZ*ms)/1000); +} + static struct dvb_frontend_info ves1820_info = { - .name = "VES1820/Grundig tuner as used on the Siemens DVB-C card", - .type = FE_QAM, - .frequency_stepsize = 62500, - .frequency_min = 51000000, - .frequency_max = 858000000, - .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | - FE_CAN_QAM_128 | FE_CAN_QAM_256 + .name = "VES1820 based DVB-C frontend", + .type = FE_QAM, + .frequency_stepsize = 62500, + .frequency_min = 51000000, + .frequency_max = 858000000, + .symbol_rate_min = (57840000/2)/64, /* SACLK/64 == (XIN/2)/64 */ + .symbol_rate_max = (57840000/2)/4, /* SACLK/4 */ +#if 0 + frequency_tolerance: ???, + symbol_rate_tolerance: ???, /* ppm */ /* == 8% (spec p. 5) */ + notifier_delay: ?, +#endif + .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | + FE_CAN_QAM_128 | FE_CAN_QAM_256 | + FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO | + FE_CAN_CLEAN_SETUP | FE_CAN_RECOVER }; @@ -73,22 +97,24 @@ static u8 ves1820_inittab [] = { - 0x69, 0x6A, 0x9B, 0x0A, 0x52, 0x46, 0x26, 0x1A, - 0x43, 0x6A, 0xAA, 0xAA, 0x1E, 0x85, 0x43, 0x28, - 0xE0, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40 + 0x69, 0x6A, 0x9B, 0x0A, 0x52, 0x46, 0x26, 0x1A, + 0x43, 0x6A, 0xAA, 0xAA, 0x1E, 0x85, 0x43, 0x28, + 0xE0, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40 }; static -int ves1820_writereg (struct dvb_i2c_bus *i2c, u8 reg, u8 data) +int ves1820_writereg (struct dvb_frontend *fe, u8 reg, u8 data) { - int ret; + u8 addr = GET_DEMOD_ADDR(fe->data); u8 buf[] = { 0x00, reg, data }; - struct i2c_msg msg = { .addr = 0x09, .flags = 0, .buf = buf, .len = 3 }; + struct i2c_msg msg = { addr: addr, flags: 0, buf: buf, len: 3 }; + struct dvb_i2c_bus *i2c = fe->i2c; + int ret; ret = i2c->xfer (i2c, &msg, 1); @@ -103,14 +129,15 @@ static -u8 ves1820_readreg (struct dvb_i2c_bus *i2c, u8 reg) +u8 ves1820_readreg (struct dvb_frontend *fe, u8 reg) { - int ret; u8 b0 [] = { 0x00, reg }; u8 b1 [] = { 0 }; - struct i2c_msg msg [] = { { .addr = 0x09, .flags = 0, .buf = b0, .len = 2 }, - { .addr = 0x09, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; - + u8 addr = GET_DEMOD_ADDR(fe->data); + struct i2c_msg msg [] = { { addr: addr, flags: 0, buf: b0, len: 2 }, + { addr: addr, flags: I2C_M_RD, buf: b1, len: 1 } }; + struct dvb_i2c_bus *i2c = fe->i2c; + int ret; ret = i2c->xfer (i2c, msg, 2); @@ -125,7 +152,7 @@ int tuner_write (struct dvb_i2c_bus *i2c, u8 addr, u8 data [4]) { int ret; - struct i2c_msg msg = { .addr = addr, .flags = 0, .buf = data, .len = 4 }; + struct i2c_msg msg = { addr: addr, flags: 0, buf: data, len: 4 }; ret = i2c->xfer (i2c, &msg, 1); @@ -141,15 +168,18 @@ * reference clock comparision frequency of 62.5 kHz. */ static -int tuner_set_tv_freq (struct dvb_frontend *frontend, u32 freq) +int tuner_set_tv_freq (struct dvb_frontend *fe, u32 freq) { u32 div; static u8 addr [] = { 0x61, 0x62 }; static u8 byte3 [] = { 0x8e, 0x85 }; - int tuner_type = GET_TUNER(frontend); + int tuner_type = GET_TUNER(fe->data); u8 buf [4]; - div = (freq + 36250000 + 31250) / 62500; + if (tuner_type == 0xff) /* PLL not reachable over i2c ... */ + return 0; + + div = (freq + 36125000 + 31250) / 62500; buf[0] = (div >> 8) & 0x7f; buf[1] = div & 0xff; buf[2] = byte3[tuner_type]; @@ -163,115 +193,56 @@ freq < 454000000 ? 0x92 : 0x34); } - return tuner_write (frontend->i2c, addr[tuner_type], buf); + return tuner_write (fe->i2c, addr[tuner_type], buf); } static -int probe_tuner (struct dvb_frontend *frontend) +int ves1820_setup_reg0 (struct dvb_frontend *fe, u8 reg0) { - struct dvb_i2c_bus *i2c = frontend->i2c; - struct i2c_msg msg = { .addr = 0x61, .flags = 0, .buf = NULL, .len = 0 }; + reg0 |= GET_REG0(fe->data) & 0x62; + + ves1820_writereg (fe, 0x00, reg0 & 0xfe); + ves1820_writereg (fe, 0x00, reg0 | 0x01); - if (i2c->xfer(i2c, &msg, 1) == 1) { - SET_TUNER(frontend,0); - printk ("%s: setup for tuner spXXXX\n", __FILE__); - } else { - SET_TUNER(frontend,1); - printk ("%s: setup for tuner sp5659c\n", __FILE__); + /** + * check lock and toggle inversion bit if required... + */ + if (!(ves1820_readreg (fe, 0x11) & 0x08)) { + ddelay(1); + if (!(ves1820_readreg (fe, 0x11) & 0x08)) { + reg0 ^= 0x20; + ves1820_writereg (fe, 0x00, reg0 & 0xfe); + ves1820_writereg (fe, 0x00, reg0 | 0x01); + } } + SET_REG0(fe->data, reg0); + return 0; } static -int ves1820_init (struct dvb_frontend *frontend) +int ves1820_init (struct dvb_frontend *fe) { - struct dvb_i2c_bus *i2c = frontend->i2c; - u8 b0 [] = { 0xff }; - u8 pwm; int i; - struct i2c_msg msg [] = { { .addr = 0x50, .flags = 0, .buf = b0, .len = 1 }, - { .addr = 0x50, .flags = I2C_M_RD, .buf = &pwm, .len = 1 } }; dprintk("VES1820: init chip\n"); - i2c->xfer (i2c, msg, 2); - - dprintk("VES1820: pwm=%02x\n", pwm); - - if (pwm == 0xff) - pwm=0x48; - - ves1820_writereg (i2c, 0, 0); + ves1820_writereg (fe, 0, 0); for (i=0; i<53; i++) - ves1820_writereg (i2c, i, ves1820_inittab[i]); - - ves1820_writereg (i2c, 0x34, pwm); - - (int) frontend->data = 0; - SET_PWM(frontend,pwm); - - probe_tuner (frontend); - - return 0; -} - - -static -int ves1820_setup_reg0 (struct dvb_frontend *frontend, - u8 real_qam, fe_spectral_inversion_t inversion) -{ - struct dvb_i2c_bus *i2c = frontend->i2c; - u8 reg0 = (ves1820_inittab[0] & 0xe3) | (real_qam << 2); - - switch (inversion) { - case INVERSION_OFF: /* XXX FIXME: reversed?? p. 25 */ - reg0 |= 0x20; - break; - - case INVERSION_ON: - reg0 &= 0xdf; - break; - - default: - return -EINVAL; - } - - SET_REG0(frontend, reg0); + ves1820_writereg (fe, i, ves1820_inittab[i]); - ves1820_writereg (i2c, 0x00, reg0 & 0xfe); - ves1820_writereg (i2c, 0x00, reg0); + ves1820_writereg (fe, 0x34, GET_PWM(fe->data)); return 0; } static -int ves1820_reset (struct dvb_frontend *frontend) -{ - struct dvb_i2c_bus *i2c = frontend->i2c; - u8 reg0 = GET_REG0(frontend); - - ves1820_writereg (i2c, 0x00, reg0 & 0xfe); - ves1820_writereg (i2c, 0x00, reg0); - - return 0; -} - - -static -void ves1820_reset_uncorrected_block_counter (struct dvb_i2c_bus *i2c) -{ - ves1820_writereg (i2c, 0x10, ves1820_inittab[0x10] & 0xdf); - ves1820_writereg (i2c, 0x10, ves1820_inittab[0x10]); -} - - -static -int ves1820_set_symbolrate (struct dvb_i2c_bus *i2c, u32 symbolrate) +int ves1820_set_symbolrate (struct dvb_frontend *fe, u32 symbolrate) { s32 BDR; s32 BDRI; @@ -280,7 +251,7 @@ u32 tmp, ratio; #define XIN 57840000UL -#define FIN (57840000UL>>4) +#define FIN (XIN >> 4) if (symbolrate > XIN/2) symbolrate = XIN/2; @@ -317,81 +288,50 @@ NDEC = (NDEC << 6) | ves1820_inittab[0x03]; - ves1820_writereg (i2c, 0x03, NDEC); - ves1820_writereg (i2c, 0x0a, BDR&0xff); - ves1820_writereg (i2c, 0x0b, (BDR>> 8)&0xff); - ves1820_writereg (i2c, 0x0c, (BDR>>16)&0x3f); + ves1820_writereg (fe, 0x03, NDEC); + ves1820_writereg (fe, 0x0a, BDR&0xff); + ves1820_writereg (fe, 0x0b, (BDR>> 8)&0xff); + ves1820_writereg (fe, 0x0c, (BDR>>16)&0x3f); - ves1820_writereg (i2c, 0x0d, BDRI); - ves1820_writereg (i2c, 0x0e, SFIL); + ves1820_writereg (fe, 0x0d, BDRI); + ves1820_writereg (fe, 0x0e, SFIL); return 0; } static -void ves1820_reset_pwm (struct dvb_frontend *frontend) +int ves1820_set_parameters (struct dvb_frontend *fe, + struct dvb_frontend_parameters *p) { - u8 pwm = GET_PWM(frontend); - - ves1820_writereg (frontend->i2c, 0x34, pwm); -} - - -typedef struct { - fe_modulation_t QAM_Mode; - int NoOfSym; - u8 Reg1; - u8 Reg5; - u8 Reg8; - u8 Reg9; -} QAM_SETTING; + static const u8 reg0x00 [] = { 0x00, 0x04, 0x08, 0x0c, 0x10 }; + static const u8 reg0x01 [] = { 140, 140, 106, 120, 92 }; + static const u8 reg0x05 [] = { 135, 100, 70, 54, 38 }; + static const u8 reg0x08 [] = { 162, 116, 67, 52, 35 }; + static const u8 reg0x09 [] = { 145, 150, 106, 126, 107 }; + int real_qam = p->u.qam.modulation - QAM_16; + if (real_qam < 0 || real_qam > 4) + return -EINVAL; -QAM_SETTING QAM_Values[] = { - { QAM_16, 16, 140, 164, 162, 145 }, - { QAM_32, 32, 140, 120, 116, 150 }, - { QAM_64, 64, 106, 70, 67, 106 }, - { QAM_128, 128, 120, 54, 52, 126 }, - { QAM_256, 256, 92, 38, 35, 107 } -}; + tuner_set_tv_freq (fe, p->frequency); + ves1820_set_symbolrate (fe, p->u.qam.symbol_rate); + ves1820_writereg (fe, 0x34, GET_PWM(fe->data)); + + ves1820_writereg (fe, 0x01, reg0x01[real_qam]); + ves1820_writereg (fe, 0x05, reg0x05[real_qam]); + ves1820_writereg (fe, 0x08, reg0x08[real_qam]); + ves1820_writereg (fe, 0x09, reg0x09[real_qam]); + ves1820_setup_reg0 (fe, reg0x00[real_qam]); -static -int ves1820_set_parameters (struct dvb_frontend *frontend, - struct dvb_frontend_parameters *p) -{ - struct dvb_i2c_bus* i2c = frontend->i2c; - int real_qam; - - switch (p->u.qam.modulation) { - case QAM_16 : real_qam = 0; break; - case QAM_32 : real_qam = 1; break; - case QAM_64 : real_qam = 2; break; - case QAM_128: real_qam = 3; break; - case QAM_256: real_qam = 4; break; - default: - return -EINVAL; - } - - tuner_set_tv_freq (frontend, p->frequency); - ves1820_set_symbolrate (i2c, p->u.qam.symbol_rate); - ves1820_reset_pwm (frontend); - - ves1820_writereg (i2c, 0x01, QAM_Values[real_qam].Reg1); - ves1820_writereg (i2c, 0x05, QAM_Values[real_qam].Reg5); - ves1820_writereg (i2c, 0x08, QAM_Values[real_qam].Reg8); - ves1820_writereg (i2c, 0x09, QAM_Values[real_qam].Reg9); - - ves1820_setup_reg0 (frontend, real_qam, p->inversion); - return 0; } static -int ves1820_ioctl (struct dvb_frontend *frontend, unsigned int cmd, void *arg) +int ves1820_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) { switch (cmd) { case FE_GET_INFO: @@ -405,7 +345,7 @@ *status = 0; - sync = ves1820_readreg (frontend->i2c, 0x11); + sync = ves1820_readreg (fe, 0x11); if (sync & 2) *status |= FE_HAS_SIGNAL; @@ -427,35 +367,37 @@ case FE_READ_BER: { - u32 ber = ves1820_readreg(frontend->i2c, 0x14) | - (ves1820_readreg(frontend->i2c, 0x15) << 8) | - ((ves1820_readreg(frontend->i2c, 0x16) & 0x0f) << 16); + u32 ber = ves1820_readreg(fe, 0x14) | + (ves1820_readreg(fe, 0x15) << 8) | + ((ves1820_readreg(fe, 0x16) & 0x0f) << 16); *((u32*) arg) = 10 * ber; break; } case FE_READ_SIGNAL_STRENGTH: { - u8 gain = ves1820_readreg(frontend->i2c, 0x17); + u8 gain = ves1820_readreg(fe, 0x17); *((u16*) arg) = (gain << 8) | gain; break; } case FE_READ_SNR: { - u8 quality = ~ves1820_readreg(frontend->i2c, 0x18); + u8 quality = ~ves1820_readreg(fe, 0x18); *((u16*) arg) = (quality << 8) | quality; break; } case FE_READ_UNCORRECTED_BLOCKS: - *((u32*) arg) = ves1820_readreg (frontend->i2c, 0x13) & 0x7f; + *((u32*) arg) = ves1820_readreg (fe, 0x13) & 0x7f; if (*((u32*) arg) == 0x7f) *((u32*) arg) = 0xffffffff; - ves1820_reset_uncorrected_block_counter (frontend->i2c); + /* reset uncorrected block counter */ + ves1820_writereg (fe, 0x10, ves1820_inittab[0x10] & 0xdf); + ves1820_writereg (fe, 0x10, ves1820_inittab[0x10]); break; case FE_SET_FRONTEND: - return ves1820_set_parameters (frontend, arg); + return ves1820_set_parameters (fe, arg); case FE_GET_FRONTEND: /* XXX FIXME: implement! */ @@ -468,16 +410,12 @@ break; case FE_SLEEP: - ves1820_writereg (frontend->i2c, 0x1b, 0x02); /* pdown ADC */ - ves1820_writereg (frontend->i2c, 0x00, 0x80); /* standby */ + ves1820_writereg (fe, 0x1b, 0x02); /* pdown ADC */ + ves1820_writereg (fe, 0x00, 0x80); /* standby */ break; case FE_INIT: - return ves1820_init (frontend); - - case FE_RESET: - ves1820_reset (frontend); - break; + return ves1820_init (fe); default: return -EINVAL; @@ -488,12 +426,89 @@ static +int probe_tuner (struct dvb_i2c_bus *i2c) +{ + static const + struct i2c_msg msg1 = { addr: 0x61, flags: 0, buf: NULL, len: 0 }; + static const + struct i2c_msg msg2 = { addr: 0x62, flags: 0, buf: NULL, len: 0 }; + int type; + + if (i2c->xfer(i2c, &msg1, 1) == 1) { + type = 0; + printk ("%s: setup for tuner spXXXX\n", __FILE__); + } else if (i2c->xfer(i2c, &msg2, 1) == 1) { + type = 1; + printk ("%s: setup for tuner sp5659c\n", __FILE__); + } else { + type = -1; + printk ("%s: unknown PLL, " + "please report to !!\n", + __FILE__); + } + + return type; +} + + +static +u8 read_pwm (struct dvb_i2c_bus *i2c) +{ + u8 b = 0xff; + u8 pwm; + struct i2c_msg msg [] = { { addr: 0x50, flags: 0, buf: &b, len: 1 }, + { addr: 0x50, flags: I2C_M_RD, buf: &pwm, len: 1 } }; + + i2c->xfer (i2c, msg, 2); + + dprintk("VES1820: pwm=%02x\n", pwm); + + if (pwm == 0xff) + pwm = 0x48; + + return pwm; +} + + +static +int probe_demod_addr (struct dvb_i2c_bus *i2c) +{ + u8 b [] = { 0x00, 0x1a }; + u8 id; + struct i2c_msg msg [] = { { addr: 0x08, flags: 0, buf: b, len: 2 }, + { addr: 0x08, flags: I2C_M_RD, buf: &id, len: 1 } }; + + if (i2c->xfer(i2c, msg, 2) == 2 && (id & 0xf0) == 0x70) + return msg[0].addr; + + msg[0].addr = msg[1].addr = 0x09; + + if (i2c->xfer(i2c, msg, 2) == 2 && (id & 0xf0) == 0x70) + return msg[0].addr; + + return -1; +} + + +static int ves1820_attach (struct dvb_i2c_bus *i2c) { - if ((ves1820_readreg (i2c, 0x1a) & 0xf0) != 0x70) - return -ENODEV; - - dvb_register_frontend (ves1820_ioctl, i2c, NULL, &ves1820_info); + void *data = NULL; + int demod_addr; + int tuner_type; + + if ((demod_addr = probe_demod_addr(i2c)) < 0) + return -ENODEV; + + if ((tuner_type = probe_tuner(i2c)) < 0) + return -ENODEV; + + SET_PWM(data, read_pwm(i2c)); + SET_REG0(data, ves1820_inittab[0]); + SET_TUNER(data, tuner_type); + SET_DEMOD_ADDR(data, demod_addr); + + dvb_register_frontend (ves1820_ioctl, i2c, data, &ves1820_info); return 0; } @@ -524,8 +539,7 @@ module_init(init_ves1820); module_exit(exit_ves1820); -MODULE_DESCRIPTION(""); -MODULE_AUTHOR("Ralph Metzler"); +MODULE_DESCRIPTION("VES1820 DVB-C frontend driver"); +MODULE_AUTHOR("Ralph Metzler, Holger Waechtler"); MODULE_LICENSE("GPL"); -MODULE_PARM(debug,"i"); diff -Nru a/drivers/media/dvb/ttpci/Kconfig b/drivers/media/dvb/ttpci/Kconfig --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/Kconfig Mon Apr 7 13:20:06 2003 @@ -0,0 +1,92 @@ +config DVB_AV7110 + tristate "AV7110 cards" + depends on VIDEO_DEV && DVB_CORE + help + Support for SAA7146 and AV7110 based DVB cards as produced + by Fujitsu-Siemens, Technotrend, Hauppauge and others. + + This driver only supports the fullfeatured cards with + onboard MPEG2 decoder. + + Say Y if you own such a card and want to use it. + +config DVB_AV7110_OSD + bool "AV7110 OSD support" + depends on DVB_AV7110 + help + The AV7110 firmware provides some code to generate an OnScreenDisplay + on the video output. This is kind of nonstandard and not guaranteed to + be maintained. + + Anyway, some popular DVB software like VDR uses this OSD to render + its menus, so say Y if you want to use this software. + + All other people say N. + +config DVB_BUDGET + tristate "Budget cards" + depends on DVB_CORE + help + Support for simple SAA7146 based DVB cards + (so called Budget- or Nova-PCI cards) without onboard + MPEG2 decoder. + + Say Y if you own such a card and want to use it. + + This driver is available as a module called + dvb-ttpci-budget.o ( = code which can be inserted in + and removed from the running kernel whenever you want). + If you want to compile it as a module, say M + here and read . + +config DVB_BUDGET_CI + tristate "Budget cards with onboard CI connector" + depends on VIDEO_DEV && DVB_CORE && DVB_BUDGET + help + Support for simple SAA7146 based DVB cards + (so called Budget- or Nova-PCI cards) without onboard + MPEG2 decoder, but with onboard Common Interface connector. + + Say Y if you own such a card and want to use it. + + This driver is available as a module called + dvb-ttpci-budget-av.o ( = code which can be inserted in + and removed from the running kernel whenever you want). + If you want to compile it as a module, say M + here and read . + +config DVB_BUDGET_AV + tristate "Budget cards with analog video inputs" + depends on VIDEO_DEV && DVB_CORE && DVB_BUDGET + help + Support for simple SAA7146 based DVB cards + (so called Budget- or Nova-PCI cards) without onboard + MPEG2 decoder, but with one or more analog video inputs. + + Say Y if you own such a card and want to use it. + + This driver is available as a module called + dvb-ttpci-budget-av.o ( = code which can be inserted in + and removed from the running kernel whenever you want). + here and read . + +config DVB_BUDGET_PATCH + tristate "AV7110 cards with Budget Patch" + depends on DVB_CORE && DVB_BUDGET + help + Support for Budget Patch (full TS) modification on + SAA7146+AV7110 based cards (DVB-S cards). This + driver doesn't use onboard MPEG2 decoder. The + card is driven in Budget-only mode. Card is + required to have loaded firmware to tune properly. + Firmware can be loaded by insertion and removal of + standard AV7110 driver prior to loading this + driver. + + Say Y if you own such a card and want to use it. + + This driver is available as a module called + dvb-ttpci-budget-patch.o ( = code which can be inserted in + and removed from the running kernel whenever you want). + If you want to compile it as a module, say M + here and read . diff -Nru a/drivers/media/dvb/ttpci/Makefile b/drivers/media/dvb/ttpci/Makefile --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/Makefile Mon Apr 7 13:20:06 2003 @@ -0,0 +1,18 @@ +# +# Makefile for the kernel SAA7146 FULL TS DVB device driver +# and the AV7110 DVB device driver +# + +dvb-ttpci-budget-objs := budget.o +dvb-ttpci-budget-av-objs := budget-av.o +dvb-ttpci-budget-ci-objs := budget-ci.o +dvb-ttpci-budget-patch-objs := budget-patch.o +dvb-ttpci-objs := av7110.o av7110_ipack.o av7110_ir.o + +obj-$(CONFIG_DVB_BUDGET) += budget-core.o dvb-ttpci-budget.o +obj-$(CONFIG_DVB_BUDGET_CI) += budget-core.o dvb-ttpci-budget-ci.o +obj-$(CONFIG_DVB_BUDGET_AV) += budget-core.o dvb-ttpci-budget-av.o +obj-$(CONFIG_DVB_BUDGET_PATCH) += budget-core.o dvb-ttpci-budget-patch.o +obj-$(CONFIG_DVB_AV7110) += dvb-ttpci.o + +EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ diff -Nru a/drivers/media/dvb/ttpci/av7110.c b/drivers/media/dvb/ttpci/av7110.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/av7110.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,4371 @@ +/* + * av7110.c: driver for the SAA7146 based AV110 cards (like the Fujitsu-Siemens DVB) + * + * Copyright (C) 1999-2002 Ralph Metzler + * & Marcus Metzler for convergence integrated media GmbH + * + * originally based on code by: + * Copyright (C) 1998,1999 Christian Theiss + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * + * + * the project's page is at http://www.linuxtv.org/dvb/ + */ + +#define NEW_CI 1 + +/* for debugging ARM communication: */ +//#define COM_DEBUG + +#define __KERNEL_SYSCALLS__ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include "dvb_i2c.h" +#include "dvb_frontend.h" + +#if 1 + #define DEBUG_VARIABLE av7110_debug +#else + #define DEB_S(x) + #define DEB_D(x) + #define DEB_EE(x) +#endif + +#include "av7110.h" +#include "av7110_ipack.h" + +static int AV_StartPlay(av7110_t *av7110, int av); +static void restart_feeds(av7110_t *av7110); +static int bootarm(av7110_t *av7110); +static inline int i2c_writereg(av7110_t *av7110, u8 id, u8 reg, u8 val); +static inline u8 i2c_readreg(av7110_t *av7110, u8 id, u8 reg); +static int outcom(av7110_t *av7110, int type, int com, int num, ...); +static void SetMode(av7110_t *av7110, int mode); + +void pes_to_ts(u8 const *buf, long int length, u16 pid, p2t_t *p); +void p_to_t(u8 const *buf, long int length, u16 pid, u8 *counter, struct dvb_demux_feed *feed); + +static int av7110_debug = 0; + +static int vidmode=CVBS_RGB_OUT; +static int pids_off; +static int adac=DVB_ADAC_TI; +static int hw_sections = 1; + +int av7110_num = 0; + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME av7110 +#endif + +/**************************************************************************** + * General helper functions + ****************************************************************************/ + +static inline void ddelay(int i) +{ + current->state=TASK_INTERRUPTIBLE; + schedule_timeout((HZ*i)/100); +} + + +/**************************************************************************** + * DEBI functions + ****************************************************************************/ + +/* This DEBI code is based on the Stradis driver + by Nathan Laredo */ + +static +int wait_for_debi_done(av7110_t *av7110) +{ + struct saa7146_dev *dev = av7110->dev; + int start; + + /* wait for registers to be programmed */ + start = jiffies; + while (1) { + if (saa7146_read(dev, MC2) & 2) + break; + if (jiffies-start > HZ/20) { + printk ("%s: timed out while waiting for registers " + "getting programmed\n", __FUNCTION__); + return -ETIMEDOUT; + } + } + + /* wait for transfer to complete */ + start = jiffies; + while (1) { + if (!(saa7146_read(dev, PSR) & SPCI_DEBI_S)) + break; + saa7146_read(dev, MC2); + if (jiffies-start > HZ/4) { + printk ("%s: timed out while waiting for transfer " + "completion\n", __FUNCTION__); + return -ETIMEDOUT; + } + } + + return 0; +} + +static int debiwrite(av7110_t *av7110, u32 config, + int addr, u32 val, int count) +{ + struct saa7146_dev *dev = av7110->dev; + u32 cmd; + + if (count <= 0 || count > 32764) + return -1; + if (wait_for_debi_done(av7110) < 0) + return -1; + saa7146_write(dev, DEBI_CONFIG, config); + if (count <= 4) /* immediate transfer */ + saa7146_write(dev, DEBI_AD, val ); + else /* block transfer */ + saa7146_write(dev, DEBI_AD, av7110->debi_bus); + saa7146_write(dev, DEBI_COMMAND, (cmd = (count << 17) | (addr & 0xffff))); + saa7146_write(dev, MC2, (2 << 16) | 2); + return 0; +} + +static u32 debiread(av7110_t *av7110, u32 config, int addr, int count) +{ + struct saa7146_dev *dev = av7110->dev; + u32 result = 0; + + if (count > 32764 || count <= 0) + return 0; + if (wait_for_debi_done(av7110) < 0) + return 0; + saa7146_write(dev, DEBI_AD, av7110->debi_bus); + saa7146_write(dev, DEBI_COMMAND, (count << 17) | 0x10000 | (addr & 0xffff)); + + saa7146_write(dev, DEBI_CONFIG, config); + saa7146_write(dev, MC2, (2 << 16) | 2); + if (count > 4) + return count; + wait_for_debi_done(av7110); + result = saa7146_read(dev, DEBI_AD); + result &= (0xffffffffUL >> ((4-count)*8)); + return result; +} + +/* DEBI during interrupt */ + +static inline void +iwdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) +{ + if (count>4 && val) + memcpy(av7110->debi_virt, (char *) val, count); + debiwrite(av7110, config, addr, val, count); +} + +static inline u32 +irdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) +{ + u32 res; + + res=debiread(av7110, config, addr, count); + if (count<=4) + memcpy(av7110->debi_virt, (char *) &res, count); + return res; +} + +/* DEBI outside interrupts, only for count<=4! */ + +static inline void +wdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) +{ + unsigned long flags; + + spin_lock_irqsave(&av7110->debilock, flags); + debiwrite(av7110, config, addr, val, count); + spin_unlock_irqrestore(&av7110->debilock, flags); +} + +static inline u32 +rdebi(av7110_t *av7110, u32 config, int addr, u32 val, int count) +{ + unsigned long flags; + u32 res; + + spin_lock_irqsave(&av7110->debilock, flags); + res=debiread(av7110, config, addr, count); + spin_unlock_irqrestore(&av7110->debilock, flags); + return res; +} + + +static inline char +chtrans(char c) +{ + if (c<32 || c>126) + c=0x20; + return c; +} + + +/* handle mailbox registers of the dual ported RAM */ + +static inline void +ARM_ResetMailBox(av7110_t *av7110) +{ + unsigned long flags; + + DEB_EE(("av7110: %p\n",av7110)); + + spin_lock_irqsave(&av7110->debilock, flags); + debiread(av7110, DEBINOSWAP, IRQ_RX, 2); + //printk("dvb: IRQ_RX=%d\n", debiread(av7110, DEBINOSWAP, IRQ_RX, 2)); + debiwrite(av7110, DEBINOSWAP, IRQ_RX, 0, 2); + spin_unlock_irqrestore(&av7110->debilock, flags); +} + +static inline void +ARM_ClearMailBox(av7110_t *av7110) +{ + iwdebi(av7110, DEBINOSWAP, IRQ_RX, 0, 2); +} + +static inline void +ARM_ClearIrq(av7110_t *av7110) +{ + irdebi(av7110, DEBINOSWAP, IRQ_RX, 0, 2); +} + +static void +reset_arm(av7110_t *av7110) +{ + saa7146_setgpio(av7110->dev, RESET_LINE, SAA7146_GPIO_OUTLO); + + /* Disable DEBI and GPIO irq */ + IER_DISABLE(av7110->dev, (MASK_19 | MASK_03)); +// saa7146_write(av7110->dev, IER, +// saa7146_read(av7110->dev, IER) & ~(MASK_19 | MASK_03)); + saa7146_write(av7110->dev, ISR, (MASK_19 | MASK_03)); + + mdelay(800); + saa7146_setgpio(av7110->dev, RESET_LINE, SAA7146_GPIO_OUTHI); + mdelay(800); + + ARM_ResetMailBox(av7110); + + saa7146_write(av7110->dev, ISR, (MASK_19 | MASK_03)); + + IER_ENABLE(av7110->dev, MASK_03); +// saa7146_write(av7110->dev, IER, +// saa7146_read(av7110->dev, IER) | MASK_03 ); + + av7110->arm_ready=1; + printk("av7110: ARM RESET\n"); +} + +static void +recover_arm(av7110_t *av7110) +{ + DEB_EE(("av7110: %p\n",av7110)); + + if (current->files) + bootarm(av7110); + else { + printk("OOPS, no current->files\n"); + reset_arm(av7110); + } + ddelay(10); + restart_feeds(av7110); +} + +static void +arm_error(av7110_t *av7110) +{ + DEB_EE(("av7110: %p\n",av7110)); + + av7110->arm_errors++; + av7110->arm_ready=0; + recover_arm(av7110); +} + +static int arm_thread(void *data) +{ + av7110_t *av7110 = data; + u16 newloops = 0; + + DEB_EE(("av7110: %p\n",av7110)); + + lock_kernel(); +#if 0 + daemonize(); +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + reparent_to_init (); +#endif +#else + exit_mm(current); + current->session=current->pgrp=1; +#endif + sigfillset(¤t->blocked); + strcpy(current->comm, "arm_mon"); + av7110->arm_thread = current; + unlock_kernel(); + + while (!av7110->arm_rmmod && !signal_pending(current)) { + interruptible_sleep_on_timeout(&av7110->arm_wait, 5*HZ); + + if (!av7110->arm_ready) + continue; + + if (down_interruptible(&av7110->dcomlock)) + break; + + newloops=rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2); + up(&av7110->dcomlock); + + if (newloops==av7110->arm_loops) { + printk(KERN_ERR "av7110%d: ARM crashed!\n", + av7110->dvb_adapter->num); + + arm_error(av7110); + + if (down_interruptible(&av7110->dcomlock)) + break; + + newloops=rdebi(av7110, DEBINOSWAP, STATUS_LOOPS, 0, 2)-1; + up(&av7110->dcomlock); + } + av7110->arm_loops=newloops; + } + + av7110->arm_thread = NULL; + return 0; +} + + +static int +record_cb(dvb_filter_pes2ts_t *p2t, u8 *buf, size_t len) +{ + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) p2t->priv; + + DEB_EE(("dvb_filter_pes2ts_t:%p\n",p2t)); + + if (!(dvbdmxfeed->ts_type & TS_PACKET)) + return 0; + if (buf[3]==0xe0) // video PES do not have a length in TS + buf[4]=buf[5]=0; + if (dvbdmxfeed->ts_type & TS_PAYLOAD_ONLY) + return dvbdmxfeed->cb.ts(buf, len, 0, 0, + &dvbdmxfeed->feed.ts, DMX_OK); + else + return dvb_filter_pes2ts(p2t, buf, len); +} + +static int +dvb_filter_pes2ts_cb(void *priv, unsigned char *data) +{ + struct dvb_demux_feed *dvbdmxfeed=(struct dvb_demux_feed *) priv; + + DEB_EE(("dvb_demux_feed:%p\n",dvbdmxfeed)); + + dvbdmxfeed->cb.ts(data, 188, 0, 0, + &dvbdmxfeed->feed.ts, + DMX_OK); + return 0; +} + +static int +AV_StartRecord(av7110_t *av7110, int av, + struct dvb_demux_feed *dvbdmxfeed) +{ + struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + + DEB_EE(("av7110: %p, dvb_demux_feed:%p\n",av7110,dvbdmxfeed)); + + if (av7110->playing||(av7110->rec_mode&av)) + return -EBUSY; + outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); + dvbdmx->recording=1; + av7110->rec_mode|=av; + + switch (av7110->rec_mode) { + case RP_AUDIO: + dvb_filter_pes2ts_init (&av7110->p2t[0], + dvbdmx->pesfilter[0]->pid, + dvb_filter_pes2ts_cb, + (void *)dvbdmx->pesfilter[0]); + outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, AudioPES, 0); + break; + + case RP_VIDEO: + dvb_filter_pes2ts_init (&av7110->p2t[1], + dvbdmx->pesfilter[1]->pid, + dvb_filter_pes2ts_cb, + (void *)dvbdmx->pesfilter[1]); + outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, VideoPES, 0); + break; + + case RP_AV: + dvb_filter_pes2ts_init (&av7110->p2t[0], + dvbdmx->pesfilter[0]->pid, + dvb_filter_pes2ts_cb, + (void *)dvbdmx->pesfilter[0]); + dvb_filter_pes2ts_init (&av7110->p2t[1], + dvbdmx->pesfilter[1]->pid, + dvb_filter_pes2ts_cb, + (void *)dvbdmx->pesfilter[1]); + outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, AV_PES, 0); + break; + } + return 0; +} + +static int +AV_StartPlay(av7110_t *av7110, int av) +{ + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->rec_mode) + return -EBUSY; + if (av7110->playing&av) + return -EBUSY; + + outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); + + if (av7110->playing == RP_NONE) { + av7110_ipack_reset(&av7110->ipack[0]); + av7110_ipack_reset(&av7110->ipack[1]); + } + + av7110->playing|=av; + switch (av7110->playing) { + case RP_AUDIO: + outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, AudioPES, 0); + break; + case RP_VIDEO: + outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, VideoPES, 0); + av7110->sinfo=0; + break; + case RP_AV: + av7110->sinfo=0; + outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, AV_PES, 0); + break; + } + return av7110->playing; +} + +static void +AV_Stop(av7110_t *av7110, int av) +{ + DEB_EE(("av7110: %p\n",av7110)); + + if (!(av7110->playing&av) && !(av7110->rec_mode&av)) + return; + + outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); + if (av7110->playing) { + av7110->playing&=~av; + switch (av7110->playing) { + case RP_AUDIO: + outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, AudioPES, 0); + break; + case RP_VIDEO: + outcom(av7110, COMTYPE_REC_PLAY, __Play, 2, VideoPES, 0); + break; + case RP_NONE: + SetMode(av7110, av7110->vidmode); + break; + } + } else { + av7110->rec_mode&=~av; + switch (av7110->rec_mode) { + case RP_AUDIO: + outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, AudioPES, 0); + break; + case RP_VIDEO: + outcom(av7110, COMTYPE_REC_PLAY, __Record, 2, VideoPES, 0); + break; + case RP_NONE: + break; + } + } +} + +/** + * Hack! we save the last av7110 ptr. This should be ok, since + * you rarely will use more then one IR control. + * + * If we want to support multiple controls we would have to do much more... + */ +void av7110_setup_irc_config (av7110_t *av7110, u32 ir_config) +{ + static av7110_t *last; + + DEB_EE(("av7110: %p\n",av7110)); + + if (!av7110) + av7110 = last; + else + last = av7110; + + if (av7110) + outcom(av7110, COMTYPE_PIDFILTER, SetIR, 1, ir_config); +} + +static void (*irc_handler)(u32); + +void av7110_register_irc_handler(void (*func)(u32)) +{ + //DEB_EE(("registering %08x\n",func)); + irc_handler = func; +} + +void av7110_unregister_irc_handler(void (*func)(u32)) +{ + //DEB_EE(("unregistering %08x\n",func)); + irc_handler = NULL; +} + +void run_handlers(unsigned long ircom) +{ + if (irc_handler != NULL) + (*irc_handler)((u32) ircom); +} + +DECLARE_TASKLET(irtask,run_handlers,0); + +void IR_handle(av7110_t *av7110, u32 ircom) +{ + DEB_S(("av7110: ircommand = %08x\n", ircom)); + irtask.data = (unsigned long) ircom; + tasklet_schedule(&irtask); +} + +/**************************************************************************** + * IRQ handling + ****************************************************************************/ + +void CI_handle(av7110_t *av7110, u8 *data, u16 len) +{ + //CI_out(av7110, data, len); + + DEB_EE(("av7110: %p\n",av7110)); + + if (len<3) + return; + switch (data[0]) { + case CI_MSG_CI_INFO: + if (data[2]!=1 && data[2]!=2) + break; + switch (data[1]) { + case 0: + av7110->ci_slot[data[2]-1].flags=0; + break; + case 1: + av7110->ci_slot[data[2]-1].flags|=CA_CI_MODULE_PRESENT; + break; + case 2: + av7110->ci_slot[data[2]-1].flags|=CA_CI_MODULE_READY; + break; + } + break; + case CI_SWITCH_PRG_REPLY: + //av7110->ci_stat=data[1]; + break; + default: + break; + } + +} + +static inline int +DvbDmxFilterCallback(u8 * buffer1, size_t buffer1_len, + u8 * buffer2, size_t buffer2_len, + struct dvb_demux_filter *dvbdmxfilter, + dmx_success_t success, + av7110_t *av7110) +{ + DEB_EE(("av7110: %p\n",av7110)); + + if (!dvbdmxfilter->feed->demux->dmx.frontend) + return 0; + if (dvbdmxfilter->feed->demux->dmx.frontend->source==DMX_MEMORY_FE) + return 0; + + switch(dvbdmxfilter->type) { + case DMX_TYPE_SEC: + if ((((buffer1[1]<<8)|buffer1[2])&0xfff)+3!=buffer1_len) + return 0; + if (dvbdmxfilter->doneq) { + dmx_section_filter_t *filter=&dvbdmxfilter->filter; + int i; + u8 xor, neq=0; + + for (i=0; ifilter_value[i]^buffer1[i]; + neq|=dvbdmxfilter->maskandnotmode[i]&xor; + } + if (!neq) + return 0; + } + return dvbdmxfilter->feed->cb.sec(buffer1, buffer1_len, + buffer2, buffer2_len, + &dvbdmxfilter->filter, + DMX_OK); + case DMX_TYPE_TS: + if (!(dvbdmxfilter->feed->ts_type & TS_PACKET)) + return 0; + if (dvbdmxfilter->feed->ts_type & TS_PAYLOAD_ONLY) + return dvbdmxfilter->feed->cb.ts(buffer1, buffer1_len, + buffer2, buffer2_len, + &dvbdmxfilter->feed->feed.ts, + DMX_OK); + else + pes_to_ts(buffer1, buffer1_len, + dvbdmxfilter->feed->pid, + &av7110->p2t_filter[dvbdmxfilter->index]); + default: + return 0; + } +} + + +u8 pshead[0x26] = { + 0x00, 0x00, 0x01, 0xba, 0x5f, 0xff, 0xfe, 0xe6, + 0xc4, 0x01, 0x01, 0x89, 0xc3, 0xf8, 0x00, 0x00, + 0x01, 0xbb, 0x00, 0x12, 0x80, 0xc4, 0xe1, 0x00, + 0xe1, 0xff, 0xb9, 0xe0, 0xe8, 0xb8, 0xc0, 0x20, + 0xbd, 0xe0, 0x44, 0xbf, 0xe0, 0x02, +}; + + +//#define DEBUG_TIMING +inline static void +print_time(char *s) +{ +#ifdef DEBUG_TIMING + struct timeval tv; + do_gettimeofday(&tv); + printk("%s: %d.%d\n", s, (int)tv.tv_sec, (int)tv.tv_usec); +#endif +} + +static void +ci_get_data(dvb_ringbuffer_t *cibuf, u8 *data, int len) +{ + if (dvb_ringbuffer_free(cibuf) < len+2) + return; + + DVB_RINGBUFFER_WRITE_BYTE(cibuf,len>>8); + DVB_RINGBUFFER_WRITE_BYTE(cibuf,len&0xff); + + dvb_ringbuffer_write(cibuf,data,len,0); + + wake_up_interruptible(&cibuf->queue); +} + +static +void debiirq (unsigned long data) +{ + struct av7110_s *av7110 = (struct av7110_s*) data; + int type=av7110->debitype; + int handle=(type>>8)&0x1f; + +// DEB_EE(("av7110: %p\n",av7110)); + + print_time("debi"); + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) & ~MASK_19 ); + saa7146_write(av7110->dev, ISR, MASK_19 ); + + if (type==-1) { + printk("DEBI irq oops @ %ld, psr:0x%08x, ssr:0x%08x\n",jiffies,saa7146_read(av7110->dev,PSR),saa7146_read(av7110->dev,SSR)); + ARM_ClearMailBox(av7110); + ARM_ClearIrq(av7110); + return; + } + av7110->debitype=-1; + + switch (type&0xff) { + + case DATA_TS_RECORD: + dvb_dmx_swfilter_packets(&av7110->demux, + (const u8 *)av7110->debi_virt, + av7110->debilen/188); + spin_lock(&av7110->debilock); + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); + return; + + case DATA_PES_RECORD: + if (av7110->demux.recording) + record_cb(&av7110->p2t[handle], + (u8 *)av7110->debi_virt, + av7110->debilen); + spin_lock(&av7110->debilock); + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); + return; + + case DATA_IPMPE: + case DATA_FSECTION: + case DATA_PIPING: + if (av7110->handle2filter[handle]) + DvbDmxFilterCallback((u8 *)av7110->debi_virt, + av7110->debilen, 0, 0, + av7110->handle2filter[handle], + DMX_OK, av7110); + spin_lock(&av7110->debilock); + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); + return; + + case DATA_CI_GET: + { + u8 *data=av7110->debi_virt; + + if ((data[0]<2) && data[2]==0xff) { + int flags=0; + if (data[5]>0) + flags|=CA_CI_MODULE_PRESENT; + if (data[5]>5) + flags|=CA_CI_MODULE_READY; + av7110->ci_slot[data[0]].flags=flags; + } else + ci_get_data(&av7110->ci_rbuffer, + av7110->debi_virt, + av7110->debilen); + spin_lock(&av7110->debilock); + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); + return; + } + + case DATA_COMMON_INTERFACE: + CI_handle(av7110, (u8 *)av7110->debi_virt, av7110->debilen); +#if 0 + { + int i; + + printk("av7110%d: ", av7110->num); + printk("%02x ", *(u8 *)av7110->debi_virt); + printk("%02x ", *(1+(u8 *)av7110->debi_virt)); + for (i=2; idebilen; i++) + printk("%02x ", (*(i+(unsigned char *)av7110->debi_virt))); + for (i=2; idebilen; i++) + printk("%c", chtrans(*(i+(unsigned char *)av7110->debi_virt))); + + printk("\n"); + } +#endif + spin_lock(&av7110->debilock); + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); + return; + + case DATA_DEBUG_MESSAGE: + ((s8*)av7110->debi_virt)[Reserved_SIZE-1]=0; + printk("%s\n", (s8 *)av7110->debi_virt); + spin_lock(&av7110->debilock); + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); + return; + + case DATA_CI_PUT: + case DATA_MPEG_PLAY: + case DATA_BMP_LOAD: + spin_lock(&av7110->debilock); + iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); + return; + default: + break; + } + spin_lock(&av7110->debilock); + ARM_ClearMailBox(av7110); + spin_unlock(&av7110->debilock); +} + +static int +pes_play(void *dest, dvb_ringbuffer_t *buf, int dlen) +{ + int len; + u32 sync; + u16 blen; + + DEB_EE(("dvb_ring_buffer_t: %p\n",buf)); + + if (!dlen) { + wake_up(&buf->queue); + return -1; + } + while (1) { + if ((len=dvb_ringbuffer_avail(buf)) < 6) + return -1; + sync= DVB_RINGBUFFER_PEEK(buf,0)<<24; + sync|=DVB_RINGBUFFER_PEEK(buf,1)<<16; + sync|=DVB_RINGBUFFER_PEEK(buf,2)<<8; + sync|=DVB_RINGBUFFER_PEEK(buf,3); + + if (((sync&~0x0f)==0x000001e0) || + ((sync&~0x1f)==0x000001c0) || + (sync==0x000001bd)) + break; + printk("resync\n"); + DVB_RINGBUFFER_SKIP(buf,1); + } + blen= DVB_RINGBUFFER_PEEK(buf,4)<<8; + blen|=DVB_RINGBUFFER_PEEK(buf,5); + blen+=6; + if (lendlen) { + printk("buffer empty - avail %d blen %u dlen %d\n",len,blen,dlen); + wake_up(&buf->queue); + return -1; + } + + (void)dvb_ringbuffer_read(buf,dest,(size_t)blen,0); + + DEB_S(("pread=%08x, pwrite=%08x\n",buf->pread, buf->pwrite)); + wake_up(&buf->queue); + return blen; +} + + +static +void gpioirq (unsigned long data) +{ + struct av7110_s *av7110 = (struct av7110_s*) data; + u32 rxbuf, txbuf; + int len; + + //printk("GPIO0 irq\n"); + + if (av7110->debitype !=-1) + printk("GPIO0 irq oops @ %ld, psr:0x%08x, ssr:0x%08x\n",jiffies,saa7146_read(av7110->dev,PSR),saa7146_read(av7110->dev,SSR)); + + spin_lock(&av7110->debilock); + + ARM_ClearIrq(av7110); + + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) & ~MASK_19 ); + saa7146_write(av7110->dev, ISR, MASK_19 ); + + av7110->debitype = irdebi(av7110, DEBINOSWAP, IRQ_STATE, 0, 2); + av7110->debilen = irdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); + av7110->debibuf = 0; + rxbuf=irdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + txbuf=irdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); + len=(av7110->debilen+3)&(~3); + + DEB_D(("GPIO0 irq %d %d\n", av7110->debitype, av7110->debilen)); + print_time("gpio"); + + DEB_D(("GPIO0 irq %02x\n", av7110->debitype&0xff)); + switch (av7110->debitype&0xff) { + + case DATA_TS_PLAY: + case DATA_PES_PLAY: + break; + + case DATA_CI_PUT: + { + int avail; + dvb_ringbuffer_t *cibuf=&av7110->ci_wbuffer; + + avail=dvb_ringbuffer_avail(cibuf); + if (avail<=2) { + iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); + break; + } + len= DVB_RINGBUFFER_PEEK(cibuf,0)<<8; + len|=DVB_RINGBUFFER_PEEK(cibuf,1); + if (availdebi_virt,len,0); + + wake_up(&cibuf->queue); + iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); + iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); + wait_for_debi_done(av7110); + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) | MASK_19 ); + if (len<5) len=5; /* we want a real DEBI DMA */ + iwdebi(av7110, DEBISWAB, DPRAM_BASE+txbuf, 0, (len+3)&~3); + spin_unlock(&av7110->debilock); + return; + } + + case DATA_MPEG_PLAY: + if (!av7110->playing) { + iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); + break; + } + len=0; + if (av7110->debitype&0x100) { + spin_lock(&av7110->aout.lock); + len=pes_play(av7110->debi_virt, &av7110->aout, 2048); + spin_unlock(&av7110->aout.lock); + } + if (len<=0 && (av7110->debitype&0x200) + &&av7110->videostate.play_state!=VIDEO_FREEZED) { + spin_lock(&av7110->avout.lock); + len=pes_play(av7110->debi_virt, &av7110->avout, 2048); + spin_unlock(&av7110->avout.lock); + } + if (len<=0) { + iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); + break; + } + DEB_D(("GPIO0 PES_PLAY len=%04x\n", len)); + iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); + iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); + wait_for_debi_done(av7110); + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) | MASK_19 ); + + iwdebi(av7110, DEBISWAB, DPRAM_BASE+txbuf, 0, (len+3)&~3); + spin_unlock(&av7110->debilock); + return; + + case DATA_BMP_LOAD: + len=av7110->debilen; + if (!len) { + av7110->bmp_state=BMP_LOADED; + iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_LEN, 0, 2); + iwdebi(av7110, DEBINOSWAP, TX_BUFF, 0, 2); + wake_up(&av7110->bmpq); + break; + } + if (len>av7110->bmplen) + len=av7110->bmplen; + if (len>2*1024) + len=2*1024; + iwdebi(av7110, DEBINOSWAP, TX_LEN, len, 2); + iwdebi(av7110, DEBINOSWAP, IRQ_STATE_EXT, len, 2); + memcpy(av7110->debi_virt, av7110->bmpbuf+av7110->bmpp, len); + av7110->bmpp+=len; + av7110->bmplen-=len; + wait_for_debi_done(av7110); + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) | MASK_19 ); + if (len<5) len=5; /* we want a real DEBI DMA */ + iwdebi(av7110, DEBISWAB, DPRAM_BASE+txbuf, 0, (len+3)&~3); + spin_unlock(&av7110->debilock); + return; + + case DATA_CI_GET: + case DATA_COMMON_INTERFACE: + case DATA_FSECTION: + case DATA_IPMPE: + case DATA_PIPING: + if (!len || len>4*1024) { + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + break; + } /* yes, fall through */ + case DATA_TS_RECORD: + case DATA_PES_RECORD: + wait_for_debi_done(av7110); + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) | MASK_19); + irdebi(av7110, DEBISWAB, DPRAM_BASE+rxbuf, 0, len); + spin_unlock(&av7110->debilock); + return; + + case DATA_DEBUG_MESSAGE: + wait_for_debi_done(av7110); + if (!len || len>0xff) { + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + break; + } + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) | MASK_19); + irdebi(av7110, DEBISWAB, Reserved, 0, len); + spin_unlock(&av7110->debilock); + return; + + case DATA_IRCOMMAND: + IR_handle(av7110, + swahw32(irdebi(av7110, DEBINOSWAP, Reserved, 0, 4))); + iwdebi(av7110, DEBINOSWAP, RX_BUFF, 0, 2); + break; + + default: + printk("gpioirq unknown type=%d len=%d\n", + av7110->debitype, av7110->debilen); + break; + } + ARM_ClearMailBox(av7110); + av7110->debitype=-1; + spin_unlock(&av7110->debilock); +} + + +/**************************************************************************** + * DEBI command polling + ****************************************************************************/ + + +static int OutCommand(av7110_t *av7110, u16* buf, int length) +{ + int i; + u32 start; +#ifdef COM_DEBUG + u32 stat; +#endif + + DEB_EE(("av7110: %p\n",av7110)); + + if (!av7110->arm_ready) { + DEB_D(("arm not ready.\n")); + return -1; + } + + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2 ) ) + { + ddelay(1); + if ((jiffies - start) > ARM_WAIT_FREE) { + printk(KERN_ERR "%s: timeout waiting for COMMAND idle\n", __FUNCTION__); + return -1; + } + } + +#ifndef _NOHANDSHAKE + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) + { + ddelay(1); + if ((jiffies - start) > ARM_WAIT_SHAKE) { + printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__); + return -1; + } + } +#endif + + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2) & OSDQFull ) + { + ddelay(1); + if ((jiffies - start) > ARM_WAIT_OSD) { + printk(KERN_ERR "%s: timeout waiting for !OSDQFull\n", __FUNCTION__); + return -1; + } + } + for (i=2; i ARM_WAIT_FREE) { + printk(KERN_ERR "%s: timeout waiting for COMMAND to complete\n", __FUNCTION__); + return -1; + } + } + + stat = rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2); + if (stat & GPMQOver) { + printk(KERN_ERR "%s: GPMQOver\n", __FUNCTION__); + return -1; + } + else if (stat & OSDQOver) { + printk(KERN_ERR "%s: OSDQOver\n", __FUNCTION__); + return -1; + } +#endif + + return 0; +} + +inline static int +SOutCommand(av7110_t *av7110, u16* buf, int length) +{ + int ret; + + DEB_EE(("av7110: %p\n",av7110)); + + if (!av7110->arm_ready) { + DEB_D(("arm not ready.\n")); + return -1; + } + + if (down_interruptible(&av7110->dcomlock)) + return -ERESTARTSYS; + + ret=OutCommand(av7110, buf, length); + up(&av7110->dcomlock); + if (ret) + printk("SOutCommand error\n"); + return ret; +} + + +static int outcom(av7110_t *av7110, int type, int com, int num, ...) +{ + va_list args; + u16 buf[num+2]; + int i, ret; + + DEB_EE(("av7110: %p\n",av7110)); + + buf[0]=(( type << 8 ) | com); + buf[1]=num; + + if (num) { + va_start(args, num); + for (i=0; iarm_ready) { + DEB_D(("arm not ready.\n")); + return -1; + } + + if (down_interruptible(&av7110->dcomlock)) + return -ERESTARTSYS; + + if ((err = OutCommand(av7110, Buff, length)) < 0) { + up(&av7110->dcomlock); + printk("CommandRequest error\n"); + return err; + } + + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2) ) + { +#ifdef _NOHANDSHAKE + ddelay(1); +#endif + if ((jiffies - start) > ARM_WAIT_FREE) { + printk("%s: timeout waiting for COMMAND to complete\n", __FUNCTION__); + up(&av7110->dcomlock); + return -1; + } + } + +#ifndef _NOHANDSHAKE + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) { + ddelay(1); + if ((jiffies - start) > ARM_WAIT_SHAKE) { + printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__); + up(&av7110->dcomlock); + return -1; + } + } +#endif + +#ifdef COM_DEBUG + stat = rdebi(av7110, DEBINOSWAP, MSGSTATE, 0, 2); + if (stat & GPMQOver) { + printk(KERN_ERR "%s: GPMQOver\n", __FUNCTION__); + up(&av7110->dcomlock); + return -1; + } + else if (stat & OSDQOver) { + printk(KERN_ERR "%s: OSDQOver\n", __FUNCTION__); + up(&av7110->dcomlock); + return -1; + } +#endif + + for (i=0; idcomlock); + return 0; +} + + +static inline int +RequestParameter(av7110_t *av7110, u16 tag, u16* Buff, s16 length) +{ + int ret; + ret = CommandRequest(av7110, &tag, 0, Buff, length); + if (ret) + printk("RequestParameter error\n"); + return ret; +} + + +/**************************************************************************** + * Firmware commands + ****************************************************************************/ + + +inline static int +SendDAC(av7110_t *av7110, u8 addr, u8 data) +{ + DEB_EE(("av7110: %p\n",av7110)); + + return outcom(av7110, COMTYPE_AUDIODAC, AudioDAC, 2, addr, data); +} + +static int +SetVolume(av7110_t *av7110, int volleft, int volright) +{ + int err; + + DEB_EE(("av7110: %p\n",av7110)); + + switch (av7110->adac_type) { + case DVB_ADAC_TI: + volleft = (volleft * 256) / 1036; + volright = (volright * 256) / 1036; + if (volleft > 0x3f) + volleft = 0x3f; + if (volright > 0x3f) + volright = 0x3f; + if ((err = SendDAC(av7110, 3, 0x80 + volleft))) + return err; + return SendDAC(av7110, 4, volright); + + case DVB_ADAC_CRYSTAL: + volleft=127-volleft/2; + volright=127-volright/2; + i2c_writereg(av7110, 0x20, 0x03, volleft); + i2c_writereg(av7110, 0x20, 0x04, volright); + return 0; + } + return 0; +} + +#ifdef CONFIG_DVB_AV7110_OSD + +inline static int ResetBlend(av7110_t *av7110, u8 windownr) +{ + return outcom(av7110, COMTYPE_OSD, SetNonBlend, 1, windownr); +} + +inline static int SetColorBlend(av7110_t *av7110, u8 windownr) +{ + return outcom(av7110, COMTYPE_OSD, SetCBlend, 1, windownr); +} + +inline static int SetWindowBlend(av7110_t *av7110, u8 windownr, u8 blending) +{ + return outcom(av7110, COMTYPE_OSD, SetWBlend, 2, windownr, blending); +} + +inline static int SetBlend_(av7110_t *av7110, u8 windownr, + OSDPALTYPE colordepth, u16 index, u8 blending) +{ + return outcom(av7110, COMTYPE_OSD, SetBlend, 4, + windownr, colordepth, index, blending); +} + +inline static int SetColor_(av7110_t *av7110, u8 windownr, + OSDPALTYPE colordepth, u16 index, u16 colorhi, u16 colorlo) +{ + return outcom(av7110, COMTYPE_OSD, SetColor, 5, + windownr, colordepth, index, colorhi, colorlo); +} + +inline static int BringToTop(av7110_t *av7110, u8 windownr) +{ + return outcom(av7110, COMTYPE_OSD, WTop, 1, windownr); +} + +inline static int SetFont(av7110_t *av7110, u8 windownr, u8 fontsize, + u16 colorfg, u16 colorbg) +{ + return outcom(av7110, COMTYPE_OSD, Set_Font, 4, + windownr, fontsize, colorfg, colorbg); +} + +static int FlushText(av7110_t *av7110) +{ + u32 start; + + if (down_interruptible(&av7110->dcomlock)) + return -ERESTARTSYS; + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2 ) ) { + ddelay(1); + if ((jiffies - start) > ARM_WAIT_OSD) { + printk(KERN_ERR "%s: timeout waiting for BUFF1_BASE == 0\n", __FUNCTION__); + up(&av7110->dcomlock); + return -1; + } + } + up(&av7110->dcomlock); + return 0; +} + +static int WriteText(av7110_t *av7110, u8 win, u16 x, u16 y, u8* buf) +{ + int i, ret; + u32 start; + int length=strlen(buf)+1; + u16 cbuf[5] = { (COMTYPE_OSD<<8) + DText, 3, win, x, y }; + + if (down_interruptible(&av7110->dcomlock)) + return -ERESTARTSYS; + + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, BUFF1_BASE, 0, 2 ) ) { + ddelay(1); + if ((jiffies - start) > ARM_WAIT_OSD) { + printk(KERN_ERR "%s: timeout waiting for BUFF1_BASE == 0\n", __FUNCTION__); + up(&av7110->dcomlock); + return -1; + } + } +#ifndef _NOHANDSHAKE + start = jiffies; + while ( rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 ) ) { + ddelay(1); + if ((jiffies - start) > ARM_WAIT_SHAKE) { + printk(KERN_ERR "%s: timeout waiting for HANDSHAKE_REG\n", __FUNCTION__); + up(&av7110->dcomlock); + return -1; + } + } +#endif + for (i=0; idcomlock); + if (ret) + printk("WriteText error\n"); + return ret; +} + +inline static int DrawLine(av7110_t *av7110, u8 windownr, + u16 x, u16 y, u16 dx, u16 dy, u16 color) +{ + return outcom(av7110, COMTYPE_OSD, DLine, 6, + windownr, x, y, dx, dy, color); +} + +inline static int DrawBlock(av7110_t *av7110, u8 windownr, + u16 x, u16 y, u16 dx, u16 dy, u16 color) +{ + return outcom(av7110, COMTYPE_OSD, DBox, 6, + windownr, x, y, dx, dy, color); +} + +inline static int HideWindow(av7110_t *av7110, u8 windownr) +{ + return outcom(av7110, COMTYPE_OSD, WHide, 1, windownr); +} + +inline static int MoveWindowRel(av7110_t *av7110, u8 windownr, u16 x, u16 y) +{ + return outcom(av7110, COMTYPE_OSD, WMoveD, 3, windownr, x, y); +} + +inline static int MoveWindowAbs(av7110_t *av7110, u8 windownr, u16 x, u16 y) +{ + return outcom(av7110, COMTYPE_OSD, WMoveA, 3, windownr, x, y); +} + +inline static int DestroyOSDWindow(av7110_t *av7110, u8 windownr) +{ + return outcom(av7110, COMTYPE_OSD, WDestroy, 1, windownr); +} + +#if 0 +static void DestroyOSDWindows(av7110_t *av7110) +{ + int i; + + for (i=1; i<7; i++) + outcom(av7110, COMTYPE_OSD, WDestroy, 1, i); +} +#endif + +static inline int +CreateOSDWindow(av7110_t *av7110, u8 windownr, + DISPTYPE disptype, u16 width, u16 height) +{ + return outcom(av7110, COMTYPE_OSD, WCreate, 4, + windownr, disptype, width, height); +} + + +static OSDPALTYPE bpp2pal[8]={Pal1Bit, Pal2Bit, 0, Pal4Bit, 0, 0, 0, Pal8Bit}; +static DISPTYPE bpp2bit[8]={BITMAP1, BITMAP2, 0, BITMAP4, 0, 0, 0, BITMAP8}; + +static inline int +LoadBitmap(av7110_t *av7110, u16 format, u16 dx, u16 dy, int inc, u8* data) +{ + int bpp; + int i; + int d, delta; + u8 c; + DECLARE_WAITQUEUE(wait, current); + + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->bmp_state==BMP_LOADING) { + add_wait_queue(&av7110->bmpq, &wait); + while (1) { + set_current_state(TASK_INTERRUPTIBLE); + if (av7110->bmp_state!=BMP_LOADING + || signal_pending(current)) + break; + schedule(); + } + current->state=TASK_RUNNING; + remove_wait_queue(&av7110->bmpq, &wait); + } + if (av7110->bmp_state==BMP_LOADING) + return -1; + av7110->bmp_state=BMP_LOADING; + if (format==BITMAP8) { bpp=8; delta = 1; } + else if (format==BITMAP4) { bpp=4; delta = 2; } + else if (format==BITMAP2) { bpp=2; delta = 4; } + else if (format==BITMAP1) { bpp=1; delta = 8; } + else { + av7110->bmp_state=BMP_NONE; + return -1; + } + av7110->bmplen= ((dx*dy*bpp+7)&~7)/8; + av7110->bmpp=0; + if (av7110->bmplen>32768) { + av7110->bmp_state=BMP_NONE; + return -1; + } + for (i=0; ibmpbuf+1024+i*dx, data+i*inc, dx)) { + av7110->bmp_state=BMP_NONE; + return -1; + } + } + if (format != BITMAP8) { + for (i=0; ibmpbuf)[1024+i*delta+delta-1]; + for (d=delta-2; d>=0; d--) { + c |= (((u8 *)av7110->bmpbuf)[1024+i*delta+d] + << ((delta-d-1)*bpp)); + ((u8 *)av7110->bmpbuf)[1024+i] = c; + } + } + } + av7110->bmplen+=1024; + return outcom(av7110, COMTYPE_OSD, LoadBmp, 3, format, dx, dy); +} + +static int +BlitBitmap(av7110_t *av7110, u16 win, u16 x, u16 y, u16 trans) +{ + DECLARE_WAITQUEUE(wait, current); + + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->bmp_state==BMP_NONE) + return -1; + if (av7110->bmp_state==BMP_LOADING) { + add_wait_queue(&av7110->bmpq, &wait); + while (1) { + set_current_state(TASK_INTERRUPTIBLE); + if (av7110->bmp_state!=BMP_LOADING + || signal_pending(current)) + break; + schedule(); + } + current->state=TASK_RUNNING; + remove_wait_queue(&av7110->bmpq, &wait); + } + if (av7110->bmp_state==BMP_LOADED) + return outcom(av7110, COMTYPE_OSD, BlitBmp, 4, win, x, y, trans); + return -1; +} + +static inline int +ReleaseBitmap(av7110_t *av7110) +{ + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->bmp_state!=BMP_LOADED) + return -1; + av7110->bmp_state=BMP_NONE; + return outcom(av7110, COMTYPE_OSD, ReleaseBmp, 0); +} + +static u32 RGB2YUV(u16 R, u16 G, u16 B) +{ + u16 y, u, v; + u16 Y, Cr, Cb; + + y = R * 77 + G * 150 + B * 29; // Luma=0.299R+0.587G+0.114B 0..65535 + u = 2048+B * 8 -(y>>5); // Cr 0..4095 + v = 2048+R * 8 -(y>>5); // Cb 0..4095 + + Y=y/256; + Cb=u/16; + Cr=v/16; + + return Cr|(Cb<<16)|(Y<<8); +} + +static void +OSDSetColor(av7110_t *av7110, u8 color, u8 r, u8 g, u8 b, u8 blend) +{ + u16 ch, cl; + u32 yuv; + + yuv=blend ? RGB2YUV(r,g,b) : 0; + cl=(yuv&0xffff); + ch=((yuv>>16)&0xffff); + SetColor_(av7110, av7110->osdwin, bpp2pal[av7110->osdbpp[av7110->osdwin]], + color, ch, cl); + SetBlend_(av7110, av7110->osdwin, bpp2pal[av7110->osdbpp[av7110->osdwin]], + color, ((blend>>4)&0x0f)); +} + +static int +OSDSetBlock(av7110_t *av7110, int x0, int y0, int x1, int y1, int inc, u8 *data) +{ + uint w, h, bpp, bpl, size, lpb, bnum, brest; + int i; + + w=x1-x0+1; h=y1-y0+1; + if (inc<=0) + inc=w; + if (w<=0 || w>720 || h<=0 || h>576) + return -1; + bpp=av7110->osdbpp[av7110->osdwin]+1; + bpl=((w*bpp+7)&~7)/8; + size=h*bpl; + lpb=(32*1024)/bpl; + bnum=size/(lpb*bpl); + brest=size-bnum*lpb*bpl; + + for (i=0; iosdbpp[av7110->osdwin]], w, lpb, inc, data); + BlitBitmap(av7110, av7110->osdwin, x0, y0+i*lpb, 0); + data+=lpb*inc; + } + if (brest) { + LoadBitmap(av7110, bpp2bit[av7110->osdbpp[av7110->osdwin]], w, brest/bpl, inc, data); + BlitBitmap(av7110, av7110->osdwin, x0, y0+bnum*lpb, 0); + } + ReleaseBitmap(av7110); + return 0; +} + +static int +OSD_DrawCommand(av7110_t *av7110, osd_cmd_t *dc) +{ + switch (dc->cmd) { + case OSD_Close: + DestroyOSDWindow(av7110, av7110->osdwin); + return 0; + case OSD_Open: + av7110->osdbpp[av7110->osdwin]=(dc->color-1)&7; + CreateOSDWindow(av7110, av7110->osdwin, bpp2bit[av7110->osdbpp[av7110->osdwin]], + dc->x1-dc->x0+1, dc->y1-dc->y0+1); + if (!dc->data) { + MoveWindowAbs(av7110, av7110->osdwin, dc->x0, dc->y0); + SetColorBlend(av7110, av7110->osdwin); + } + return 0; + case OSD_Show: + MoveWindowRel(av7110, av7110->osdwin, 0, 0); + return 0; + case OSD_Hide: + HideWindow(av7110, av7110->osdwin); + return 0; + case OSD_Clear: + DrawBlock(av7110, av7110->osdwin, 0, 0, 720, 576, 0); + return 0; + case OSD_Fill: + DrawBlock(av7110, av7110->osdwin, 0, 0, 720, 576, dc->color); + return 0; + case OSD_SetColor: + OSDSetColor(av7110, dc->color, dc->x0, dc->y0, dc->x1, dc->y1); + return 0; + case OSD_SetPalette: + { + int i, len=dc->x0-dc->color+1; + u8 *colors=(u8 *)dc->data; + + for (i=0; icolor+i, + colors[i*4] , colors[i*4+1], + colors[i*4+2], colors[i*4+3]); + return 0; + } + case OSD_SetTrans: + return 0; + case OSD_SetPixel: + DrawLine(av7110, av7110->osdwin, + dc->x0, dc->y0, 0, 0, + dc->color); + return 0; + case OSD_GetPixel: + return 0; + + case OSD_SetRow: + dc->y1=dc->y0; + case OSD_SetBlock: + OSDSetBlock(av7110, dc->x0, dc->y0, dc->x1, dc->y1, dc->color, dc->data); + return 0; + + case OSD_FillRow: + DrawBlock(av7110, av7110->osdwin, dc->x0, dc->y0, + dc->x1-dc->x0+1, dc->y1, + dc->color); + return 0; + case OSD_FillBlock: + DrawBlock(av7110, av7110->osdwin, dc->x0, dc->y0, + dc->x1-dc->x0+1, dc->y1-dc->y0+1, + dc->color); + return 0; + case OSD_Line: + DrawLine(av7110, av7110->osdwin, + dc->x0, dc->y0, dc->x1-dc->x0, dc->y1-dc->y0, + dc->color); + return 0; + case OSD_Query: + return 0; + case OSD_Test: + return 0; + case OSD_Text: + { + char textbuf[240]; + + if (strncpy_from_user(textbuf, dc->data, 240)<0) + return -EFAULT; + textbuf[239]=0; + if (dc->x1>3) + dc->x1=3; + SetFont(av7110, av7110->osdwin, dc->x1, + (u16) (dc->color&0xffff), (u16) (dc->color>>16)); + FlushText(av7110); + WriteText(av7110, av7110->osdwin, dc->x0, dc->y0, textbuf); + return 0; + } + case OSD_SetWindow: + if (dc->x0<1 || dc->x0>7) + return -EINVAL; + av7110->osdwin=dc->x0; + return 0; + case OSD_MoveWindow: + MoveWindowAbs(av7110, av7110->osdwin, dc->x0, dc->y0); + SetColorBlend(av7110, av7110->osdwin); + return 0; + default: + return -EINVAL; + } +} + + +static int +dvb_osd_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, void *parg) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + + DEB_EE(("av7110: %p\n",av7110)); + + if (cmd==OSD_SEND_CMD) + return OSD_DrawCommand(av7110, (osd_cmd_t *)parg); + + return -EINVAL; +} + + +static struct file_operations dvb_osd_fops = { + .owner = THIS_MODULE, + .ioctl = dvb_generic_ioctl, + .open = dvb_generic_open, + .release = dvb_generic_release, +}; + +static struct dvb_device dvbdev_osd = { + .priv = 0, + .users = 1, + .writers = 1, + .fops = &dvb_osd_fops, + .kernel_ioctl = dvb_osd_ioctl, +}; + +#endif /* CONFIG_DVB_AV7110_OSD */ + + +/* get version of the firmware ROM, RTSL, video ucode and ARM application */ + +static void +firmversion(av7110_t *av7110) +{ + u16 buf[20]; + + u16 tag = ((COMTYPE_REQUEST << 8) + ReqVersion); + + DEB_EE(("av7110: %p\n",av7110)); + + RequestParameter(av7110, tag, buf, 16); + + av7110->arm_fw=(buf[0] << 16) + buf[1]; + av7110->arm_rtsl=(buf[2] << 16) + buf[3]; + av7110->arm_vid=(buf[4] << 16) + buf[5]; + av7110->arm_app=(buf[6] << 16) + buf[7]; + av7110->avtype=(buf[8] << 16) + buf[9]; + + printk ("DVB: AV711%d(%d) - firm %08x, rtsl %08x, vid %08x, app %08x\n", + av7110->avtype, av7110->dvb_adapter->num, av7110->arm_fw, + av7110->arm_rtsl, av7110->arm_vid, av7110->arm_app); + + /* print firmware capabilities */ + if ((av7110->arm_app >> 16) & 0x8000) + printk ("DVB: AV711%d(%d) - firmware supports CI link layer interface\n", + av7110->avtype, av7110->dvb_adapter->num); + else + printk ("DVB: AV711%d(%d) - no firmware support for CI link layer interface\n", + av7110->avtype, av7110->dvb_adapter->num); + + return; +} + +static int +waitdebi(av7110_t *av7110, int adr, int state) +{ + int k; + + DEB_EE(("av7110: %p\n",av7110)); + + for (k=0; k<100; k++, udelay(500)) { + if (irdebi(av7110, DEBINOSWAP, adr, 0, 2) == state) + return 0; + } + return -1; +} + + +static int +load_dram(av7110_t *av7110, u32 *data, int len) +{ + int i; + int blocks, rest; + u32 base, bootblock=BOOT_BLOCK; + + DEB_EE(("av7110: %p\n",av7110)); + + blocks=len/BOOT_MAX_SIZE; + rest=len % BOOT_MAX_SIZE; + base=DRAM_START_CODE; + + for (i=0; i 0) { + if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) + return -1; + if (rest>4) + iwdebi(av7110, DEBISWAB, bootblock, i*(BOOT_MAX_SIZE)+(u32)data, rest); + else + iwdebi(av7110, DEBISWAB, bootblock, i*(BOOT_MAX_SIZE)-4+(u32)data, rest+4); + + iwdebi(av7110, DEBISWAB, BOOT_BASE, swab32(base), 4); + iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, rest, 2); + iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); + } + if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BUFFER_EMPTY) < 0) + return -1; + iwdebi(av7110, DEBINOSWAP, BOOT_SIZE, 0, 2); + iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); + if (waitdebi(av7110, BOOT_STATE, BOOTSTATE_BOOT_COMPLETE) < 0) + return -1; + return 0; +} + + +static u8 +bootcode[] = { + 0xea, 0x00, 0x00, 0x0e, 0xe1, 0xb0, 0xf0, 0x0e, /* 0x0000 */ + 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, + 0xe2, 0x5e, 0xf0, 0x08, 0xe2, 0x5e, 0xf0, 0x04, + 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x04, + 0x2c, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x34, + 0x00, 0x00, 0x00, 0x00, 0xa5, 0xa5, 0x5a, 0x5a, + 0x00, 0x1f, 0x15, 0x55, 0x00, 0x00, 0x00, 0x09, + 0xe5, 0x9f, 0xd0, 0x5c, 0xe5, 0x9f, 0x40, 0x54, /* 0x0040 */ + 0xe3, 0xa0, 0x00, 0x00, 0xe5, 0x84, 0x00, 0x00, + 0xe5, 0x84, 0x00, 0x04, 0xe1, 0xd4, 0x10, 0xb0, + 0xe3, 0x51, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xfc, + 0xe1, 0xa0, 0x10, 0x0d, 0xe5, 0x94, 0x30, 0x04, + 0xe1, 0xd4, 0x20, 0xb2, 0xe2, 0x82, 0x20, 0x3f, + 0xe1, 0xb0, 0x23, 0x22, 0x03, 0xa0, 0x00, 0x02, + 0xe1, 0xc4, 0x00, 0xb0, 0x0a, 0xff, 0xff, 0xf4, + 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, /* 0x0080 */ + 0xe8, 0xb1, 0x1f, 0xe0, 0xe8, 0xa3, 0x1f, 0xe0, + 0xe2, 0x52, 0x20, 0x01, 0x1a, 0xff, 0xff, 0xf9, + 0xe2, 0x2d, 0xdb, 0x05, 0xea, 0xff, 0xff, 0xec, + 0x2c, 0x00, 0x03, 0xf8, 0x2c, 0x00, 0x04, 0x00, +}; + +#include "av7110_firm.h" + +static int +bootarm(av7110_t *av7110) +{ + struct saa7146_dev *dev= av7110->dev; + u32 ret; + int i; + + DEB_EE(("av7110: %p\n",av7110)); + + saa7146_setgpio(dev, RESET_LINE, SAA7146_GPIO_OUTLO); + + /* Disable DEBI and GPIO irq */ + IER_DISABLE(av7110->dev, MASK_03|MASK_19); +/* + saa7146_write(av7110->dev, IER, + saa7146_read(av7110->dev, IER) & + ~(MASK_19 | MASK_03)); +*/ + saa7146_write(av7110->dev, ISR, (MASK_19 | MASK_03)); + + /* enable DEBI */ + saa7146_write(av7110->dev, MC1, 0x08800880); + saa7146_write(av7110->dev, DD1_STREAM_B, 0x00000000); + saa7146_write(av7110->dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); + + /* test DEBI */ + iwdebi(av7110, DEBISWAP, DPRAM_BASE, 0x76543210, 4); + if ((ret=irdebi(av7110, DEBINOSWAP, DPRAM_BASE, 0, 4))!=0x10325476) { + printk(KERN_ERR "dvb: debi test in bootarm() failed: " + "%08x != %08x\n", ret, 0x10325476);; + return -1; + } + for (i=0; i<8192; i+=4) + iwdebi(av7110, DEBISWAP, DPRAM_BASE+i, 0x00, 4); + DEB_D(("bootarm: debi test OK\n")); + + /* boot */ + DEB_D(("bootarm: load boot code\n")); + + saa7146_setgpio(dev, ARM_IRQ_LINE, SAA7146_GPIO_IRQLO); + //saa7146_setgpio(dev, DEBI_DONE_LINE, SAA7146_GPIO_INPUT); + //saa7146_setgpio(dev, 3, SAA7146_GPIO_INPUT); + + iwdebi(av7110, DEBISWAB, DPRAM_BASE, (u32) bootcode, sizeof(bootcode)); + iwdebi(av7110, DEBINOSWAP, BOOT_STATE, BOOTSTATE_BUFFER_FULL, 2); + + wait_for_debi_done(av7110); + saa7146_setgpio(dev, RESET_LINE, SAA7146_GPIO_OUTHI); + current->state=TASK_INTERRUPTIBLE; + schedule_timeout(HZ); + + DEB_D(("bootarm: load dram code\n")); + + if (load_dram(av7110, (u32 *)Root, sizeof(Root))<0) + return -1; + + saa7146_setgpio(dev, RESET_LINE, SAA7146_GPIO_OUTLO); + mdelay(1); + + DEB_D(("bootarm: load dpram code\n")); + + iwdebi(av7110, DEBISWAB, DPRAM_BASE, (u32) Dpram, sizeof(Dpram)); + + wait_for_debi_done(av7110); + + saa7146_setgpio(dev, RESET_LINE, SAA7146_GPIO_OUTHI); + mdelay(800); + + //ARM_ClearIrq(av7110); + ARM_ResetMailBox(av7110); + saa7146_write(av7110->dev, ISR, (MASK_19 | MASK_03)); + IER_ENABLE(av7110->dev, MASK_03); +// saa7146_write(av7110->dev, IER, +// saa7146_read(av7110->dev, IER) | MASK_03 ); + + av7110->arm_errors=0; + av7110->arm_ready=1; + return 0; +} + +static inline int +SetPIDs(av7110_t *av7110, u16 vpid, u16 apid, u16 ttpid, + u16 subpid, u16 pcrpid) +{ + DEB_EE(("av7110: %p\n",av7110)); + + if (vpid == 0x1fff || apid == 0x1fff || + ttpid == 0x1fff || subpid == 0x1fff || pcrpid == 0x1fff) + vpid = apid = ttpid = subpid = pcrpid = 0; + + return outcom(av7110, COMTYPE_PIDFILTER, MultiPID, 5, + pcrpid, vpid, apid, ttpid, subpid); +} + +static void +ChangePIDs(av7110_t *av7110, u16 vpid, u16 apid, u16 ttpid, + u16 subpid, u16 pcrpid) +{ + DEB_EE(("av7110: %p\n",av7110)); + + if (down_interruptible(&av7110->pid_mutex)) + return; + + if (!(vpid&0x8000)) av7110->pids[DMX_PES_VIDEO]=vpid; + if (!(apid&0x8000)) av7110->pids[DMX_PES_AUDIO]=apid; + if (!(ttpid&0x8000)) av7110->pids[DMX_PES_TELETEXT]=ttpid; + if (!(pcrpid&0x8000)) av7110->pids[DMX_PES_PCR]=pcrpid; + + av7110->pids[DMX_PES_SUBTITLE]=0; + + if (av7110->fe_synced) + SetPIDs(av7110, vpid, apid, ttpid, subpid, pcrpid); + + up(&av7110->pid_mutex); +} + + +static void +SetMode(av7110_t *av7110, int mode) +{ + DEB_EE(("av7110: %p\n",av7110)); + + outcom(av7110, COMTYPE_ENCODER, LoadVidCode, 1, mode); + + if (!av7110->playing) { + ChangePIDs(av7110, av7110->pids[DMX_PES_VIDEO], + av7110->pids[DMX_PES_AUDIO], + av7110->pids[DMX_PES_TELETEXT], + 0, av7110->pids[DMX_PES_PCR]); + outcom(av7110, COMTYPE_PIDFILTER, Scan, 0); + } +} + +inline static void +TestMode(av7110_t *av7110, int mode) +{ + DEB_EE(("av7110: %p\n",av7110)); + outcom(av7110, COMTYPE_ENCODER, SetTestMode, 1, mode); +} + +inline static void +VidMode(av7110_t *av7110, int mode) +{ + DEB_EE(("av7110: %p\n",av7110)); + outcom(av7110, COMTYPE_ENCODER, SetVidMode, 1, mode); +} + + +static int inline +vidcom(av7110_t *av7110, u32 com, u32 arg) +{ + DEB_EE(("av7110: %p\n",av7110)); + return outcom(av7110, 0x80, 0x02, 4, + (com>>16), (com&0xffff), + (arg>>16), (arg&0xffff)); +} + +static int inline +audcom(av7110_t *av7110, u32 com) +{ + DEB_EE(("av7110: %p\n",av7110)); + return outcom(av7110, 0x80, 0x03, 4, + (com>>16), (com&0xffff)); +} + +inline static void +Set22K(av7110_t *av7110, int state) +{ + DEB_EE(("av7110: %p\n",av7110)); + outcom(av7110, COMTYPE_AUDIODAC, (state ? ON22K : OFF22K), 0); +} + + +static +int SendDiSEqCMsg(av7110_t *av7110, int len, u8 *msg, int burst) +{ + int i; + u16 buf[18] = { ((COMTYPE_AUDIODAC << 8) + SendDiSEqC), + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + + DEB_EE(("av7110: %p\n",av7110)); + + if (len>10) + len=10; + + buf[1] = len+2; + buf[2] = len; + + if (burst!=-1) + buf[3]=burst ? 0x01 : 0x00; + else + buf[3]=0xffff; + + for (i=0; ii2c_bus; + struct i2c_msg msgs; + + msgs.flags=0; + msgs.addr=id/2; + msgs.len=2; + msgs.buf=msg; + return i2c->xfer (i2c, &msgs, 1); +} + +static inline int +msp_writereg(av7110_t *av7110, u8 dev, u16 reg, u16 val) +{ + u8 msg[5]={ dev, reg>>8, reg&0xff, val>>8 , val&0xff }; + struct dvb_i2c_bus *i2c = av7110->i2c_bus; + struct i2c_msg msgs; + + msgs.flags=0; + msgs.addr=0x40; + msgs.len=5; + msgs.buf=msg; + return i2c->xfer(i2c, &msgs, 1); +} + +static inline u8 +i2c_readreg(av7110_t *av7110, u8 id, u8 reg) +{ + struct dvb_i2c_bus *i2c = av7110->i2c_bus; + u8 mm1[] = {0x00}; + u8 mm2[] = {0x00}; + struct i2c_msg msgs[2]; + + msgs[0].flags=0; + msgs[1].flags=I2C_M_RD; + msgs[0].addr=msgs[1].addr=id/2; + mm1[0]=reg; + msgs[0].len=1; msgs[1].len=1; + msgs[0].buf=mm1; msgs[1].buf=mm2; + i2c->xfer(i2c, msgs, 2); + + return mm2[0]; +} + + +/**************************************************************************** + * I/O buffer management and control + ****************************************************************************/ + +static int sw2mode[16] = { + VIDEO_MODE_PAL, VIDEO_MODE_NTSC, VIDEO_MODE_NTSC, VIDEO_MODE_PAL, + VIDEO_MODE_NTSC, VIDEO_MODE_NTSC, VIDEO_MODE_PAL, VIDEO_MODE_NTSC, + VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, + VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, VIDEO_MODE_PAL, +}; + +static void +get_video_format(av7110_t *av7110, u8 *buf, int count) +{ + int i; + int hsize,vsize; + int sw; + u8 *p; + + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->sinfo) + return; + for (i=7; i> 4) | (p[0] << 4); + vsize = ((p[1] &0x0F) << 8) | (p[2]); + sw = (p[3]&0x0F); + SetMode(av7110, sw2mode[sw]); + DEB_S(("dvb: playback %dx%d fr=%d\n", hsize, vsize, sw)); + av7110->sinfo=1; + break; + } +} + +static inline long +aux_ring_buffer_write(dvb_ringbuffer_t *rbuf, const char *buf, unsigned long count) +{ + unsigned long todo = count; + int free; + + while (todo > 0) { + if (dvb_ringbuffer_free(rbuf)<2048) { + if (wait_event_interruptible(rbuf->queue, + (dvb_ringbuffer_free(rbuf)>=2048))) + return count-todo; + } + free = dvb_ringbuffer_free(rbuf); + if (free > todo) + free = todo; + (void)dvb_ringbuffer_write(rbuf,buf,free,0); + todo -= free; + buf += free; + } + + return count-todo; +} + +static void +play_video_cb(u8 *buf, int count, void *priv) +{ + av7110_t *av7110=(av7110_t *) priv; + DEB_EE(("av7110: %p\n",av7110)); + + if ((buf[3]&0xe0)==0xe0) { + get_video_format(av7110, buf, count); + aux_ring_buffer_write(&av7110->avout, buf, count); + } else + aux_ring_buffer_write(&av7110->aout, buf, count); +} + +static void +play_audio_cb(u8 *buf, int count, void *priv) +{ + av7110_t *av7110=(av7110_t *) priv; + DEB_EE(("av7110: %p\n",av7110)); + + aux_ring_buffer_write(&av7110->aout, buf, count); +} + +#define FREE_COND (dvb_ringbuffer_free(&av7110->avout)>=20*1024 && dvb_ringbuffer_free(&av7110->aout)>=20*1024) + +static ssize_t +dvb_play(av7110_t *av7110, const u8 *buf, + unsigned long count, int nonblock, int type, int umem) +{ + unsigned long todo = count, n; + DEB_EE(("av7110: %p\n",av7110)); + + if (!av7110->kbuf[type]) + return -ENOBUFS; + + if (nonblock && !FREE_COND) + return -EWOULDBLOCK; + + while (todo>0) { + if (!FREE_COND) { + if (nonblock) + return count-todo; + if (wait_event_interruptible(av7110->avout.queue, + FREE_COND)) + return count-todo; + } + n=todo; + if (n>IPACKS*2) + n=IPACKS*2; + if (umem) { + if (copy_from_user(av7110->kbuf[type], buf, n)) + return -EFAULT; + av7110_ipack_instant_repack(av7110->kbuf[type], n, + &av7110->ipack[type]); + } else { + av7110_ipack_instant_repack(buf, n, + &av7110->ipack[type]); + } + todo -= n; + buf += n; + } + return count-todo; +} + +static ssize_t +dvb_aplay(av7110_t *av7110, const u8 *buf, + unsigned long count, int nonblock, int type) +{ + unsigned long todo = count, n; + DEB_EE(("av7110: %p\n",av7110)); + + if (!av7110->kbuf[type]) + return -ENOBUFS; + if (nonblock && dvb_ringbuffer_free(&av7110->aout)<20*1024) + return -EWOULDBLOCK; + + while (todo>0) { + if (dvb_ringbuffer_free(&av7110->aout)<20*1024) { + if (nonblock) + return count-todo; + if (wait_event_interruptible(av7110->aout.queue, + (dvb_ringbuffer_free(&av7110->aout)>= + 20*1024))) + return count-todo; + } + n=todo; + if (n>IPACKS*2) + n=IPACKS*2; + if (copy_from_user(av7110->kbuf[type], buf, n)) + return -EFAULT; + av7110_ipack_instant_repack(av7110->kbuf[type], n, + &av7110->ipack[type]); +// memcpy(dvb->kbuf[type], buf, n); + todo -= n; + buf += n; + } + return count-todo; +} + +void init_p2t(p2t_t *p, struct dvb_demux_feed *feed) +{ + memset(p->pes,0,TS_SIZE); + p->counter = 0; + p->pos = 0; + p->frags = 0; + if (feed) p->feed = feed; +} + +void clear_p2t(p2t_t *p) +{ + memset(p->pes,0,TS_SIZE); +// p->counter = 0; + p->pos = 0; + p->frags = 0; +} + + +long int find_pes_header(u8 const *buf, long int length, int *frags) +{ + int c = 0; + int found = 0; + + *frags = 0; + + while (c < length-3 && !found) { + if (buf[c] == 0x00 && buf[c+1] == 0x00 && + buf[c+2] == 0x01) { + switch ( buf[c+3] ) { + + case PROG_STREAM_MAP: + case PRIVATE_STREAM2: + case PROG_STREAM_DIR: + case ECM_STREAM : + case EMM_STREAM : + case PADDING_STREAM : + case DSM_CC_STREAM : + case ISO13522_STREAM: + case PRIVATE_STREAM1: + case AUDIO_STREAM_S ... AUDIO_STREAM_E: + case VIDEO_STREAM_S ... VIDEO_STREAM_E: + found = 1; + break; + + default: + c++; + break; + } + } else c++; + } + if (c == length-3 && !found){ + if (buf[length-1] == 0x00) *frags = 1; + if (buf[length-2] == 0x00 && + buf[length-1] == 0x00) *frags = 2; + if (buf[length-3] == 0x00 && + buf[length-2] == 0x00 && + buf[length-1] == 0x01) *frags = 3; + return -1; + } + + return c; +} + +void pes_to_ts( u8 const *buf, long int length, u16 pid, p2t_t *p) +{ + int c,c2,l,add; + int check,rest; + + c = 0; + c2 = 0; + if (p->frags){ + check = 0; + switch(p->frags){ + case 1: + if ( buf[c] == 0x00 && buf[c+1] == 0x01 ){ + check = 1; + c += 2; + } + break; + case 2: + if ( buf[c] == 0x01 ){ + check = 1; + c++; + } + break; + case 3: + check = 1; + } + if(check){ + switch ( buf[c] ) { + + case PROG_STREAM_MAP: + case PRIVATE_STREAM2: + case PROG_STREAM_DIR: + case ECM_STREAM : + case EMM_STREAM : + case PADDING_STREAM : + case DSM_CC_STREAM : + case ISO13522_STREAM: + case PRIVATE_STREAM1: + case AUDIO_STREAM_S ... AUDIO_STREAM_E: + case VIDEO_STREAM_S ... VIDEO_STREAM_E: + p->pes[0] = 0x00; + p->pes[1] = 0x00; + p->pes[2] = 0x01; + p->pes[3] = buf[c]; + p->pos=4; + memcpy(p->pes+p->pos,buf+c,(TS_SIZE-4)-p->pos); + c += (TS_SIZE-4)-p->pos; + p_to_t(p->pes,(TS_SIZE-4),pid,&p->counter, + p->feed); + clear_p2t(p); + break; + + default: + c=0; + break; + } + } + p->frags = 0; + } + + if (p->pos){ + c2 = find_pes_header(buf+c,length-c,&p->frags); + if (c2 >= 0 && c2 < (TS_SIZE-4)-p->pos){ + l = c2+c; + } else l = (TS_SIZE-4)-p->pos; + memcpy(p->pes+p->pos,buf,l); + c += l; + p->pos += l; + p_to_t(p->pes,p->pos,pid,&p->counter, p->feed); + clear_p2t(p); + } + + add = 0; + while (c < length){ + c2 = find_pes_header(buf+c+add,length-c-add,&p->frags); + if (c2 >= 0) { + c2 += c+add; + if (c2 > c){ + p_to_t(buf+c,c2-c,pid,&p->counter, + p->feed); + c = c2; + clear_p2t(p); + add = 0; + } else add = 1; + } else { + l = length-c; + rest = l % (TS_SIZE-4); + l -= rest; + p_to_t(buf+c,l,pid,&p->counter, + p->feed); + memcpy(p->pes,buf+c+l,rest); + p->pos = rest; + c = length; + } + } +} + + +int write_ts_header2(u16 pid, u8 *counter, int pes_start, u8 *buf, u8 length) +{ + int i; + int c = 0; + int fill; + u8 tshead[4] = { 0x47, 0x00, 0x00, 0x10}; + + fill = (TS_SIZE-4)-length; + if (pes_start) tshead[1] = 0x40; + if (fill) tshead[3] = 0x30; + tshead[1] |= (u8)((pid & 0x1F00) >> 8); + tshead[2] |= (u8)(pid & 0x00FF); + tshead[3] |= ((*counter)++ & 0x0F) ; + memcpy(buf,tshead,4); + c+=4; + + + if (fill){ + buf[4] = fill-1; + c++; + if (fill >1){ + buf[5] = 0x00; + c++; + } + for ( i = 6; i < fill+4; i++){ + buf[i] = 0xFF; + c++; + } + } + + return c; +} + + +void p_to_t(u8 const *buf, long int length, u16 pid, u8 *counter, + struct dvb_demux_feed *feed) +{ + + int l, pes_start; + u8 obuf[TS_SIZE]; + long int c = 0; + + pes_start = 0; + if ( length > 3 && + buf[0] == 0x00 && buf[1] == 0x00 && buf[2] == 0x01 ) + switch (buf[3]){ + case PROG_STREAM_MAP: + case PRIVATE_STREAM2: + case PROG_STREAM_DIR: + case ECM_STREAM : + case EMM_STREAM : + case PADDING_STREAM : + case DSM_CC_STREAM : + case ISO13522_STREAM: + case PRIVATE_STREAM1: + case AUDIO_STREAM_S ... AUDIO_STREAM_E: + case VIDEO_STREAM_S ... VIDEO_STREAM_E: + pes_start = 1; + break; + + default: + break; + } + + while ( c < length ){ + memset(obuf,0,TS_SIZE); + if (length - c >= (TS_SIZE-4)){ + l = write_ts_header2(pid, counter, pes_start + , obuf, (TS_SIZE-4)); + memcpy(obuf+l, buf+c, TS_SIZE-l); + c += TS_SIZE-l; + } else { + l = write_ts_header2(pid, counter, pes_start + , obuf, length-c); + memcpy(obuf+l, buf+c, TS_SIZE-l); + c = length; + } + feed->cb.ts(obuf, 188, 0, 0, &feed->feed.ts, DMX_OK); + pes_start = 0; + } +} + +/**************************************************************************** + * V4L SECTION + ****************************************************************************/ + +int av7110_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) +{ + DEB_EE(("saa7146_dev: %p\n",dev)); + + switch(cmd) { + case VIDIOC_ENUMINPUT: + { + struct v4l2_input *i = arg; + + if( i->index != 0 ) { + return -EINVAL; + } + + memset(i,0,sizeof(*i)); + i->index = 0; + strcpy(i->name, "DVB"); + i->type = V4L2_INPUT_TYPE_CAMERA; + i->audioset = 1; + + return 0; + } + case VIDIOC_G_INPUT: + { + int *input = (int *)arg; + *input = 0; + return 0; + } + case VIDIOC_S_INPUT: + { + return 0; + } + default: + return -ENOIOCTLCMD; + } + return 0; +} + +static +unsigned int dvb_audio_poll(struct file *file, poll_table *wait) +{ + struct dvb_device *dvbdev = (struct dvb_device *) file->private_data; + av7110_t *av7110 = (av7110_t *) dvbdev->priv; + unsigned int mask = 0; + + DEB_EE(("av7110: %p\n",av7110)); + + poll_wait(file, &av7110->aout.queue, wait); + + if (av7110->playing) { + if (dvb_ringbuffer_free(&av7110->aout)>=20*1024) + mask |= (POLLOUT | POLLWRNORM); + } else /* if not playing: may play if asked for */ + mask = (POLLOUT | POLLWRNORM); + + return mask; +} + + +/**************************************************************************** + * END OF V4L SECTION + ****************************************************************************/ + + +/**************************************************************************** + * DVB API SECTION + ****************************************************************************/ + + +/****************************************************************************** + * hardware filter functions + ******************************************************************************/ + +static int +StartHWFilter(struct dvb_demux_filter *dvbdmxfilter) +{ + struct dvb_demux_feed *dvbdmxfeed=dvbdmxfilter->feed; + av7110_t *av7110=(av7110_t *) dvbdmxfeed->demux->priv; + u16 buf[20]; + int ret, i; + u16 handle; +// u16 mode=0x0320; + u16 mode=0xb96a; + + DEB_EE(("av7110: %p\n",av7110)); + + if (dvbdmxfilter->type==DMX_TYPE_SEC) { + if (hw_sections) { + buf[4]=(dvbdmxfilter->filter.filter_value[0]<<8)| + dvbdmxfilter->maskandmode[0]; + for (i=3; i<18; i++) + buf[i+4-2]=(dvbdmxfilter->filter.filter_value[i]<<8)| + dvbdmxfilter->maskandmode[i]; + mode=4; + } + } else + if ((dvbdmxfeed->ts_type & TS_PACKET) && + !(dvbdmxfeed->ts_type & TS_PAYLOAD_ONLY)) + init_p2t(&av7110->p2t_filter[dvbdmxfilter->index], dvbdmxfeed); + + buf[0] = (COMTYPE_PID_FILTER << 8) + AddPIDFilter; + buf[1] = 16; + buf[2] = dvbdmxfeed->pid; + buf[3] = mode; + + ret=CommandRequest(av7110, buf, 20, &handle, 1); + if (ret<0) { + printk("StartHWFilter error\n"); + return ret; + } + + av7110->handle2filter[handle]=dvbdmxfilter; + dvbdmxfilter->hw_handle=handle; + + return ret; +} + +static int +StopHWFilter(struct dvb_demux_filter *dvbdmxfilter) +{ + av7110_t *av7110=(av7110_t *) dvbdmxfilter->feed->demux->priv; + u16 buf[3]; + u16 answ[2]; + int ret; + u16 handle; + + DEB_EE(("av7110: %p\n",av7110)); + + handle=dvbdmxfilter->hw_handle; + if (handle>32) { + DEB_S(("dvb: StopHWFilter tried to stop invalid filter %d.\n", + handle)); + DEB_S(("dvb: filter type = %d\n", dvbdmxfilter->type)); + return 0; + } + + av7110->handle2filter[handle]=NULL; + + buf[0] = (COMTYPE_PID_FILTER << 8) + DelPIDFilter; + buf[1] = 1; + buf[2] = handle; + ret=CommandRequest(av7110, buf, 3, answ, 2); + if (ret) + printk("StopHWFilter error\n"); + + if (answ[1] != handle) { + DEB_S(("dvb: filter %d shutdown error :%d\n", handle, answ[1])); + ret=-1; + } + return ret; +} + + +static int +av7110_write_to_decoder(struct dvb_demux_feed *feed, const u8 *buf, size_t len) +{ + struct dvb_demux *demux = feed->demux; + av7110_t *av7110 = (av7110_t *) demux->priv; + ipack *ipack = &av7110->ipack[feed->pes_type]; + + DEB_EE(("av7110: %p\n",av7110)); + + switch (feed->pes_type) { + case 0: + if (av7110->audiostate.stream_source==AUDIO_SOURCE_MEMORY) + return -EINVAL; + break; + case 1: + if (av7110->videostate.stream_source==VIDEO_SOURCE_MEMORY) + return -EINVAL; + break; + default: + return -1; + } + + if (!(buf[3] & 0x10)) { // no payload? + return -1; + } + if (buf[1] & 0x40) + av7110_ipack_flush(ipack); + + if (buf[3] & 0x20) { // adaptation field? + len -= buf[4]+1; + buf += buf[4]+1; + if (!len) + return 0; + } + + av7110_ipack_instant_repack(buf+4, len-4, &av7110->ipack[feed->pes_type]); + return 0; +} + + +static void +dvb_feed_start_pid(struct dvb_demux_feed *dvbdmxfeed) +{ + struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + av7110_t *av7110=(av7110_t *) dvbdmx->priv; + u16 *pid=dvbdmx->pids, npids[5]; + int i; + + DEB_EE(("av7110: %p\n",av7110)); + + npids[0]=npids[1]=npids[2]=npids[3]=0xffff; + npids[4]=0xffff; + i=dvbdmxfeed->pes_type; + npids[i]=(pid[i]&0x8000) ? 0 : pid[i]; + if ((i==2) && npids[i] && (dvbdmxfeed->ts_type & TS_PACKET)) { + npids[i]=0; + ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); + StartHWFilter(dvbdmxfeed->filter); + return; + } + if (dvbdmxfeed->pes_type<=2) + ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); + + if (dvbdmxfeed->pes_type<2 && npids[0]) + if (av7110->fe_synced) + outcom(av7110, COMTYPE_PIDFILTER, Scan, 0); + + if ((dvbdmxfeed->ts_type & TS_PACKET)) { + if (dvbdmxfeed->pes_type == 0 && + !(dvbdmx->pids[0]&0x8000)) + AV_StartRecord(av7110, RP_AUDIO, + dvbdmxfeed); + if (dvbdmxfeed->pes_type == 1 && + !(dvbdmx->pids[1]&0x8000)) + AV_StartRecord(av7110, RP_VIDEO, + dvbdmxfeed); + } +} + +static void +dvb_feed_stop_pid(struct dvb_demux_feed *dvbdmxfeed) +{ + struct dvb_demux *dvbdmx=dvbdmxfeed->demux; + av7110_t *av7110=(av7110_t *) dvbdmx->priv; + u16 *pid=dvbdmx->pids, npids[5]; + int i; + + DEB_EE(("av7110: %p\n",av7110)); + + if (dvbdmxfeed->pes_type<=1) { + AV_Stop(av7110, dvbdmxfeed->pes_type ? + RP_VIDEO : RP_AUDIO); + if (!av7110->rec_mode) + dvbdmx->recording=0; + if (!av7110->playing) + dvbdmx->playing=0; + } + npids[0]=npids[1]=npids[2]=npids[3]=0xffff; + npids[4]=0xffff; + i=dvbdmxfeed->pes_type; + switch (i) { + case 2: //teletext + if (dvbdmxfeed->ts_type & TS_PACKET) + StopHWFilter(dvbdmxfeed->filter); + npids[2]=0; + break; + case 0: + case 1: + case 4: + if (!pids_off) + return; + npids[i]=(pid[i]&0x8000) ? 0 : pid[i]; + break; + } + ChangePIDs(av7110, npids[1], npids[0], npids[2], npids[3], npids[4]); +} + +static int +av7110_start_feed(struct dvb_demux_feed *feed) +{ + struct dvb_demux *demux = feed->demux; + av7110_t *av7110 = (av7110_t *) demux->priv; + + DEB_EE(("av7110: %p\n",av7110)); + + if (!demux->dmx.frontend) + return -EINVAL; + + if (feed->pid > 0x1fff) + return -EINVAL; + + if (feed->type == DMX_TYPE_TS) { + if ((feed->ts_type & TS_DECODER) && + (feed->pes_type < DMX_TS_PES_OTHER)) { + switch (demux->dmx.frontend->source) { + case DMX_MEMORY_FE: + if (feed->ts_type & TS_DECODER) + if (feed->pes_type < 2 && + !(demux->pids[0] & 0x8000) && + !(demux->pids[1] & 0x8000)) { + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); + AV_StartPlay(av7110,RP_AV); + demux->playing = 1; + } + break; + default: + dvb_feed_start_pid(feed); + break; + } + } else + if ((feed->ts_type & TS_PACKET) && + (demux->dmx.frontend->source!=DMX_MEMORY_FE)) + StartHWFilter(feed->filter); + } + + if (feed->type == DMX_TYPE_SEC) { + int i; + + for (i=0; ifilternum; i++) { + if (demux->filter[i].state!=DMX_STATE_READY) + continue; + if (demux->filter[i].type!=DMX_TYPE_SEC) + continue; + if (demux->filter[i].filter.parent!=&feed->feed.sec) + continue; + demux->filter[i].state=DMX_STATE_GO; + if (demux->dmx.frontend->source!=DMX_MEMORY_FE) + StartHWFilter(&demux->filter[i]); + } + } + + return 0; +} + + +static int +av7110_stop_feed(struct dvb_demux_feed *feed) +{ + struct dvb_demux *demux = feed->demux; + av7110_t *av7110 = (av7110_t *) demux->priv; + + DEB_EE(("av7110: %p\n",av7110)); + + if (feed->type == DMX_TYPE_TS) { + if (feed->ts_type & TS_DECODER) { + if (feed->pes_type >= DMX_TS_PES_OTHER || + !demux->pesfilter[feed->pes_type]) + return -EINVAL; + demux->pids[feed->pes_type]|=0x8000; + demux->pesfilter[feed->pes_type]=0; + } + if (feed->ts_type & TS_DECODER && + feed->pes_type < DMX_TS_PES_OTHER) { + dvb_feed_stop_pid(feed); + } else + if ((feed->ts_type & TS_PACKET) && + (demux->dmx.frontend->source != DMX_MEMORY_FE)) + StopHWFilter(feed->filter); + } + + if (feed->type == DMX_TYPE_SEC) { + int i; + + for (i=0; ifilternum; i++) + if (demux->filter[i].state==DMX_STATE_GO && + demux->filter[i].filter.parent==&feed->feed.sec) { + demux->filter[i].state=DMX_STATE_READY; + if (demux->dmx.frontend->source!=DMX_MEMORY_FE) + StopHWFilter(&demux->filter[i]); + } + } + + return 0; +} + + +static void +restart_feeds(av7110_t *av7110) +{ + struct dvb_demux *dvbdmx=&av7110->demux; + struct dvb_demux_feed *feed; + int mode; + int i; + + DEB_EE(("av7110: %p\n",av7110)); + + mode=av7110->playing; + av7110->playing=0; + av7110->rec_mode=0; + + for (i=0; ifilternum; i++) { + feed=&dvbdmx->feed[i]; + if (feed->state==DMX_STATE_GO) + av7110_start_feed(feed); + } + + if (mode) + AV_StartPlay(av7110, mode); +} + +/****************************************************************************** + * SEC device file operations + ******************************************************************************/ + +static +int av7110_diseqc_ioctl (struct dvb_frontend *fe, unsigned int cmd, void *arg) +{ + av7110_t *av7110 = fe->before_after_data; + + DEB_EE(("av7110: %p\n",av7110)); + + switch (cmd) { + case FE_SET_TONE: + switch ((fe_sec_tone_mode_t) arg) { + case SEC_TONE_ON: + Set22K (av7110, 1); + break; + case SEC_TONE_OFF: + Set22K (av7110, 0); + break; + default: + return -EINVAL; + }; + break; + + case FE_DISEQC_SEND_MASTER_CMD: + { + struct dvb_diseqc_master_cmd *cmd = arg; + + SendDiSEqCMsg (av7110, cmd->msg_len, cmd->msg, 0); + break; + } + + case FE_DISEQC_SEND_BURST: + SendDiSEqCMsg (av7110, 0, NULL, (int) arg); + break; + + default: + return -EOPNOTSUPP; + }; + + return 0; +} + +/****************************************************************************** + * CI link layer file ops (FIXME: move this to separate module later) + ******************************************************************************/ + +int ci_ll_init(dvb_ringbuffer_t *cirbuf, dvb_ringbuffer_t *ciwbuf, int size) +{ + dvb_ringbuffer_init(cirbuf, vmalloc(size), size); + dvb_ringbuffer_init(ciwbuf, vmalloc(size), size); + return 0; +} + +void ci_ll_flush(dvb_ringbuffer_t *cirbuf, dvb_ringbuffer_t *ciwbuf) +{ + dvb_ringbuffer_flush_spinlock_wakeup(cirbuf); + dvb_ringbuffer_flush_spinlock_wakeup(ciwbuf); +} + +void ci_ll_release(dvb_ringbuffer_t *cirbuf, dvb_ringbuffer_t *ciwbuf) +{ + vfree(cirbuf->data); + cirbuf->data=0; + vfree(ciwbuf->data); + ciwbuf->data=0; +} + + +int ci_ll_reset(dvb_ringbuffer_t *cibuf, struct file *file, + int slots, ca_slot_info_t *slot) +{ + int i; + int len=0; + u8 msg[8]={0x00,0x06,0,0x00,0xff,0x02,0x00,0x00}; + + for (i=0; i<2; i++) { + if (slots & (1<f_flags&O_NONBLOCK; + + if (count>2048) + return -EINVAL; + free=dvb_ringbuffer_free(cibuf); + if (count+2>free) { + if (non_blocking) + return -EWOULDBLOCK; + if (wait_event_interruptible(cibuf->queue, + (dvb_ringbuffer_free(cibuf)>=count+2))) + return 0; + } + + DVB_RINGBUFFER_WRITE_BYTE(cibuf,count>>8); + DVB_RINGBUFFER_WRITE_BYTE(cibuf,count&0xff); + + return dvb_ringbuffer_write(cibuf,buf,count,1); +} + +static ssize_t +ci_ll_read(dvb_ringbuffer_t *cibuf, struct file *file, char *buf, size_t count, loff_t *ppos) +{ + int avail; + int non_blocking=file->f_flags&O_NONBLOCK; + ssize_t len; + + if (!cibuf->data || !count) + return 0; + if (non_blocking && (dvb_ringbuffer_empty(cibuf))) + return -EWOULDBLOCK; + if (wait_event_interruptible(cibuf->queue, + !dvb_ringbuffer_empty(cibuf))) + return 0; + avail=dvb_ringbuffer_avail(cibuf); + if (avail<4) + return 0; + len= DVB_RINGBUFFER_PEEK(cibuf,0)<<8; + len|=DVB_RINGBUFFER_PEEK(cibuf,1); + if (availprivate_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + int err=dvb_generic_open(inode, file); + + DEB_EE(("av7110: %p\n",av7110)); + + if (err<0) + return err; + ci_ll_flush(&av7110->ci_rbuffer, &av7110->ci_wbuffer); + return 0; +} + +static +unsigned int dvb_ca_poll (struct file *file, poll_table *wait) +{ + struct dvb_device *dvbdev = (struct dvb_device *) file->private_data; + av7110_t *av7110 = (av7110_t *) dvbdev->priv; + dvb_ringbuffer_t *rbuf = &av7110->ci_rbuffer; + dvb_ringbuffer_t *wbuf = &av7110->ci_wbuffer; + unsigned int mask = 0; + + DEB_EE(("av7110: %p\n",av7110)); + + poll_wait (file, &rbuf->queue, wait); + + if (!dvb_ringbuffer_empty(rbuf)) + mask |= POLLIN; + + if (dvb_ringbuffer_avail(wbuf)>1024) + mask |= POLLOUT; + + return mask; +} + +static +int dvb_ca_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, void *parg) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + unsigned long arg=(unsigned long) parg; + + DEB_EE(("av7110: %p\n",av7110)); + + switch (cmd) { + case CA_RESET: +#ifdef NEW_CI + + return ci_ll_reset(&av7110->ci_wbuffer, file, arg, &av7110->ci_slot[0]); +#endif + break; + + case CA_GET_CAP: + { + ca_caps_t cap; + + cap.slot_num=2; +#ifdef NEW_CI + cap.slot_type=CA_CI_LINK|CA_DESCR; +#else + cap.slot_type=CA_CI|CA_DESCR; +#endif + cap.descr_num=16; + cap.descr_type=CA_ECD; + memcpy(parg, &cap, sizeof(cap)); + } + break; + + case CA_GET_SLOT_INFO: + { + ca_slot_info_t *info=(ca_slot_info_t *)parg; + + if (info->num>1) + return -EINVAL; + av7110->ci_slot[info->num].num = info->num; +#ifdef NEW_CI + av7110->ci_slot[info->num].type = CA_CI_LINK; +#else + av7110->ci_slot[info->num].type = CA_CI; +#endif + memcpy(info, &av7110->ci_slot[info->num], sizeof(ca_slot_info_t)); + } + break; + + case CA_GET_MSG: + break; + + case CA_SEND_MSG: + break; + + case CA_GET_DESCR_INFO: + { + ca_descr_info_t info; + + info.num=16; + info.type=CA_ECD; + memcpy (parg, &info, sizeof (info)); + } + break; + + case CA_SET_DESCR: + { + ca_descr_t *descr=(ca_descr_t*) parg; + + if (descr->index>=16) + return -EINVAL; + if (descr->parity>1) + return -EINVAL; + outcom(av7110, COMTYPE_PIDFILTER, SetDescr, 5, + (descr->index<<8)|descr->parity, + (descr->cw[0]<<8)|descr->cw[1], + (descr->cw[2]<<8)|descr->cw[3], + (descr->cw[4]<<8)|descr->cw[5], + (descr->cw[6]<<8)|descr->cw[7]); + } + break; + + default: + return -EINVAL; + } + return 0; +} + +static ssize_t +dvb_ca_write(struct file *file, const char *buf, + size_t count, loff_t *ppos) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + + DEB_EE(("av7110: %p\n",av7110)); + return ci_ll_write(&av7110->ci_wbuffer, file, buf, count, ppos); +} + +static ssize_t +dvb_ca_read(struct file *file, char *buf, size_t count, loff_t *ppos) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + + DEB_EE(("av7110: %p\n",av7110)); + return ci_ll_read(&av7110->ci_rbuffer, file, buf, count, ppos); +} + + + +/****************************************************************************** + * DVB device file operations + ******************************************************************************/ + +static +unsigned int dvb_video_poll(struct file *file, poll_table *wait) +{ + struct dvb_device *dvbdev = (struct dvb_device *) file->private_data; + av7110_t *av7110 = (av7110_t *) dvbdev->priv; + unsigned int mask = 0; + + DEB_EE(("av7110: %p\n",av7110)); + + poll_wait(file, &av7110->avout.queue, wait); + + if (av7110->playing) { + if (FREE_COND) + mask |= (POLLOUT | POLLWRNORM); + } else /* if not playing: may play if asked for */ + mask = (POLLOUT | POLLWRNORM); + + return mask; +} + +static ssize_t +dvb_video_write(struct file *file, const char *buf, + size_t count, loff_t *ppos) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->videostate.stream_source!=VIDEO_SOURCE_MEMORY) + return -EPERM; + + return dvb_play(av7110, buf, count, file->f_flags&O_NONBLOCK, 1, 1); +} + +static ssize_t +dvb_audio_write(struct file *file, const char *buf, + size_t count, loff_t *ppos) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->audiostate.stream_source!=AUDIO_SOURCE_MEMORY) { + printk(KERN_ERR "not audio source memory\n"); + return -EPERM; + } + return dvb_aplay(av7110, buf, count, file->f_flags&O_NONBLOCK, 0); +} + +u8 iframe_header[] = { 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x80, 0x00, 0x00 }; + +#define MIN_IFRAME 400000 + +static void +play_iframe(av7110_t *av7110, u8 *buf, unsigned int len, int nonblock) +{ + int i, n=1; + + DEB_EE(("av7110: %p\n",av7110)); + + if (!(av7110->playing&RP_VIDEO)) { + AV_StartPlay(av7110, RP_VIDEO); + n=MIN_IFRAME/len+1; + } + + dvb_play(av7110, iframe_header, sizeof(iframe_header), 0, 1, 0); + + for (i=0; iipack[1]); +} + + +static int +dvb_video_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, void *parg) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + unsigned long arg=(unsigned long) parg; + int ret=0; + + DEB_EE(("av7110: %p\n",av7110)); + + if (((file->f_flags&O_ACCMODE)==O_RDONLY) && + (cmd!=VIDEO_GET_STATUS)) + return -EPERM; + + switch (cmd) { + case VIDEO_STOP: + av7110->videostate.play_state=VIDEO_STOPPED; + if (av7110->videostate.stream_source==VIDEO_SOURCE_MEMORY) + AV_Stop(av7110, RP_VIDEO); + else + vidcom(av7110, 0x000e, + av7110->videostate.video_blank ? 0 : 1); + av7110->trickmode=TRICK_NONE; + break; + + case VIDEO_PLAY: + av7110->trickmode=TRICK_NONE; + if (av7110->videostate.play_state==VIDEO_FREEZED) { + av7110->videostate.play_state=VIDEO_PLAYING; + vidcom(av7110, 0x000d, 0); + } + + if (av7110->videostate.stream_source==VIDEO_SOURCE_MEMORY) { + if (av7110->playing==RP_AV) { + outcom(av7110, COMTYPE_REC_PLAY, __Stop, 0); + av7110->playing&=~RP_VIDEO; + } + AV_StartPlay(av7110,RP_VIDEO); + vidcom(av7110, 0x000d, 0); + } else { + //AV_Stop(av7110, RP_VIDEO); + vidcom(av7110, 0x000d, 0); + } + av7110->videostate.play_state=VIDEO_PLAYING; + break; + + case VIDEO_FREEZE: + av7110->videostate.play_state=VIDEO_FREEZED; + if (av7110->playing&RP_VIDEO) + outcom(av7110, COMTYPE_REC_PLAY, __Pause, 0); + else + vidcom(av7110, 0x0102, 1); + av7110->trickmode=TRICK_FREEZE; + break; + + case VIDEO_CONTINUE: + if (av7110->playing&RP_VIDEO) + outcom(av7110, COMTYPE_REC_PLAY, __Continue, 0); + vidcom(av7110, 0x000d, 0); + av7110->videostate.play_state=VIDEO_PLAYING; + av7110->trickmode=TRICK_NONE; + break; + + case VIDEO_SELECT_SOURCE: + av7110->videostate.stream_source=(video_stream_source_t) arg; + break; + + case VIDEO_SET_BLANK: + av7110->videostate.video_blank=(int) arg; + break; + + case VIDEO_GET_STATUS: + memcpy(parg, &av7110->videostate, sizeof(struct video_status)); + break; + + case VIDEO_GET_EVENT: + //FIXME: write firmware support for this + ret=-EOPNOTSUPP; + + case VIDEO_SET_DISPLAY_FORMAT: + { + video_displayformat_t format=(video_displayformat_t) arg; + u16 val=0; + + switch(format) { + case VIDEO_PAN_SCAN: + val=VID_PAN_SCAN_PREF; + break; + + case VIDEO_LETTER_BOX: + val=VID_VC_AND_PS_PREF; + break; + + case VIDEO_CENTER_CUT_OUT: + val=VID_CENTRE_CUT_PREF; + break; + + default: + ret=-EINVAL; + break; + } + if (ret<0) + break; + av7110->videostate.video_format=format; + ret=outcom(av7110, COMTYPE_ENCODER, SetPanScanType, + 1, (u16) val); + break; + } + + case VIDEO_SET_FORMAT: + if (arg>1) { + ret=-EINVAL; + break; + } + av7110->display_ar=arg; + ret=outcom(av7110, COMTYPE_ENCODER, SetMonitorType, + 1, (u16) arg); + break; + + case VIDEO_STILLPICTURE: + { + struct video_still_picture *pic= + (struct video_still_picture *) parg; + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); + play_iframe(av7110, pic->iFrame, pic->size, + file->f_flags&O_NONBLOCK); + break; + } + + case VIDEO_FAST_FORWARD: + //note: arg is ignored by firmware + if (av7110->playing&RP_VIDEO) + outcom(av7110, COMTYPE_REC_PLAY, + __Scan_I, 2, AV_PES, 0); + else + vidcom(av7110, 0x16, arg); + av7110->trickmode=TRICK_FAST; + av7110->videostate.play_state=VIDEO_PLAYING; + break; + + case VIDEO_SLOWMOTION: + if (av7110->playing&RP_VIDEO) { + outcom(av7110, COMTYPE_REC_PLAY, __Slow, 2, 0, 0); + vidcom(av7110, 0x22, arg); + } else { + vidcom(av7110, 0x0d, 0); + vidcom(av7110, 0x0e, 0); + vidcom(av7110, 0x22, arg); + } + av7110->trickmode=TRICK_SLOW; + av7110->videostate.play_state=VIDEO_PLAYING; + break; + + case VIDEO_GET_CAPABILITIES: + *(int *)parg=VIDEO_CAP_MPEG1| + VIDEO_CAP_MPEG2| + VIDEO_CAP_SYS| + VIDEO_CAP_PROG; + break; + + case VIDEO_CLEAR_BUFFER: + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); + av7110_ipack_reset(&av7110->ipack[1]); + + if (av7110->playing==RP_AV) { + outcom(av7110, COMTYPE_REC_PLAY, + __Play, 2, AV_PES, 0); + if (av7110->trickmode==TRICK_FAST) + outcom(av7110, COMTYPE_REC_PLAY, + __Scan_I, 2, AV_PES, 0); + if (av7110->trickmode==TRICK_SLOW) { + outcom(av7110, COMTYPE_REC_PLAY, __Slow, 2, 0, 0); + vidcom(av7110, 0x22, arg); + } + if (av7110->trickmode==TRICK_FREEZE) + vidcom(av7110, 0x000e, 1); + } + break; + + case VIDEO_SET_STREAMTYPE: + + break; + + default: + ret=-ENOIOCTLCMD; + break; + } + return ret; +} + +static int +dvb_audio_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, void *parg) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + unsigned long arg=(unsigned long) parg; + int ret=0; + + DEB_EE(("av7110: %p\n",av7110)); + + if (((file->f_flags&O_ACCMODE)==O_RDONLY) && + (cmd!=AUDIO_GET_STATUS)) + return -EPERM; + + switch (cmd) { + case AUDIO_STOP: + if (av7110->audiostate.stream_source==AUDIO_SOURCE_MEMORY) + AV_Stop(av7110, RP_AUDIO); + else + audcom(av7110, 1); + av7110->audiostate.play_state=AUDIO_STOPPED; + break; + + case AUDIO_PLAY: + if (av7110->audiostate.stream_source==AUDIO_SOURCE_MEMORY) + AV_StartPlay(av7110, RP_AUDIO); + audcom(av7110, 2); + av7110->audiostate.play_state=AUDIO_PLAYING; + break; + + case AUDIO_PAUSE: + audcom(av7110, 1); + av7110->audiostate.play_state=AUDIO_PAUSED; + break; + + case AUDIO_CONTINUE: + if (av7110->audiostate.play_state==AUDIO_PAUSED) { + av7110->audiostate.play_state=AUDIO_PLAYING; + audcom(av7110, 0x12); + } + break; + + case AUDIO_SELECT_SOURCE: + av7110->audiostate.stream_source=(audio_stream_source_t) arg; + break; + + case AUDIO_SET_MUTE: + { + audcom(av7110, arg ? 1 : 2); + av7110->audiostate.mute_state=(int) arg; + break; + } + + case AUDIO_SET_AV_SYNC: + av7110->audiostate.AV_sync_state=(int) arg; + audcom(av7110, arg ? 0x0f : 0x0e); + break; + + case AUDIO_SET_BYPASS_MODE: + ret=-EINVAL; + break; + + case AUDIO_CHANNEL_SELECT: + av7110->audiostate.channel_select=(audio_channel_select_t) arg; + + switch(av7110->audiostate.channel_select) { + case AUDIO_STEREO: + audcom(av7110, 0x80); + break; + + case AUDIO_MONO_LEFT: + audcom(av7110, 0x100); + break; + + case AUDIO_MONO_RIGHT: + audcom(av7110, 0x200); + break; + + default: + ret=-EINVAL; + break; + } + break; + + case AUDIO_GET_STATUS: + memcpy(parg, &av7110->audiostate, sizeof(struct audio_status)); + break; + + case AUDIO_GET_CAPABILITIES: + *(int *)parg=AUDIO_CAP_LPCM| + AUDIO_CAP_MP1| + AUDIO_CAP_MP2; + break; + + case AUDIO_CLEAR_BUFFER: + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); + av7110_ipack_reset(&av7110->ipack[0]); + if (av7110->playing==RP_AV) + outcom(av7110, COMTYPE_REC_PLAY, + __Play, 2, AV_PES, 0); + break; + case AUDIO_SET_ID: + + break; + case AUDIO_SET_MIXER: + { + struct audio_mixer *amix=(struct audio_mixer *)parg; + + SetVolume(av7110, amix->volume_left, amix->volume_right); + break; + } + case AUDIO_SET_STREAMTYPE: + break; + default: + ret=-ENOIOCTLCMD; + break; + } + return ret; +} + + +static int dvb_video_open(struct inode *inode, struct file *file) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + int err; + + DEB_EE(("av7110: %p\n",av7110)); + + if ((err=dvb_generic_open(inode, file))<0) + return err; + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->avout); + av7110->video_blank=1; + av7110->audiostate.AV_sync_state=1; + av7110->videostate.stream_source=VIDEO_SOURCE_DEMUX; + return 0; +} + +static int dvb_video_release(struct inode *inode, struct file *file) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + + DEB_EE(("av7110: %p\n",av7110)); + + AV_Stop(av7110, RP_VIDEO); + return dvb_generic_release(inode, file); +} + +static int dvb_audio_open(struct inode *inode, struct file *file) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + int err=dvb_generic_open(inode, file); + + DEB_EE(("av7110: %p\n",av7110)); + + if (err<0) + return err; + dvb_ringbuffer_flush_spinlock_wakeup(&av7110->aout); + av7110->audiostate.stream_source=AUDIO_SOURCE_DEMUX; + return 0; +} + +static int dvb_audio_release(struct inode *inode, struct file *file) +{ + struct dvb_device *dvbdev=(struct dvb_device *) file->private_data; + av7110_t *av7110=(av7110_t *) dvbdev->priv; + + DEB_EE(("av7110: %p\n",av7110)); + + AV_Stop(av7110, RP_AUDIO); + return dvb_generic_release(inode, file); +} + + + +/****************************************************************************** + * driver registration + ******************************************************************************/ + +static struct file_operations dvb_video_fops = { + .owner = THIS_MODULE, + .write = dvb_video_write, + .ioctl = dvb_generic_ioctl, + .open = dvb_video_open, + .release = dvb_video_release, + .poll = dvb_video_poll, +}; + +static struct dvb_device dvbdev_video = { + .priv = 0, + .users = 1, + .writers = 1, + .fops = &dvb_video_fops, + .kernel_ioctl = dvb_video_ioctl, +}; + +static struct file_operations dvb_audio_fops = { + .owner = THIS_MODULE, + .write = dvb_audio_write, + .ioctl = dvb_generic_ioctl, + .open = dvb_audio_open, + .release = dvb_audio_release, + .poll = dvb_audio_poll, +}; + +static struct dvb_device dvbdev_audio = { + .priv = 0, + .users = 1, + .writers = 1, + .fops = &dvb_audio_fops, + .kernel_ioctl = dvb_audio_ioctl, +}; + +static struct file_operations dvb_ca_fops = { + .owner = THIS_MODULE, + .read = dvb_ca_read, + .write = dvb_ca_write, + .ioctl = dvb_generic_ioctl, + .open = dvb_ca_open, + .release = dvb_generic_release, + .poll = dvb_ca_poll, +}; + +static struct dvb_device dvbdev_ca = { + .priv = 0, + .users = 1, + .writers = 1, + .fops = &dvb_ca_fops, + .kernel_ioctl = dvb_ca_ioctl, +}; + + +static +void av7110_before_after_tune (fe_status_t s, void *data) +{ + struct av7110_s *av7110 = data; + + DEB_EE(("av7110: %p\n",av7110)); + + av7110->fe_synced = (s & FE_HAS_LOCK) ? 1 : 0; + + if (av7110->playing) + return; + + if (down_interruptible(&av7110->pid_mutex)) + return; + + if (av7110->fe_synced) { + SetPIDs(av7110, av7110->pids[DMX_PES_VIDEO], + av7110->pids[DMX_PES_AUDIO], + av7110->pids[DMX_PES_TELETEXT], 0, + av7110->pids[DMX_PES_PCR]); + outcom(av7110, COMTYPE_PIDFILTER, Scan, 0); + } else + SetPIDs(av7110, 0, 0, 0, 0, 0); + + up(&av7110->pid_mutex); +} + + +static +int av7110_register(av7110_t *av7110) +{ + int ret, i; + dmx_frontend_t *dvbfront=&av7110->hw_frontend; + struct dvb_demux *dvbdemux=&av7110->demux; + + DEB_EE(("av7110: %p\n",av7110)); + + if (av7110->registered) + return -1; + + av7110->registered=1; + + dvb_add_frontend_notifier (av7110->dvb_adapter, + av7110_before_after_tune, av7110); + + /** + * init DiSEqC stuff + */ + dvb_add_frontend_ioctls (av7110->dvb_adapter, + av7110_diseqc_ioctl, NULL, av7110); + + av7110->audiostate.AV_sync_state=0; + av7110->audiostate.mute_state=0; + av7110->audiostate.play_state=AUDIO_STOPPED; + av7110->audiostate.stream_source=AUDIO_SOURCE_DEMUX; + av7110->audiostate.channel_select=AUDIO_STEREO; + av7110->audiostate.bypass_mode=0; + + av7110->videostate.video_blank=0; + av7110->videostate.play_state=VIDEO_STOPPED; + av7110->videostate.stream_source=VIDEO_SOURCE_DEMUX; + av7110->videostate.video_format=VIDEO_FORMAT_4_3; + av7110->videostate.display_format=VIDEO_CENTER_CUT_OUT; + av7110->display_ar=VIDEO_FORMAT_4_3; + + memcpy(av7110->demux_id, "demux0_0", 9); + av7110->demux_id[5] = av7110->dvb_adapter->num + '0'; + dvbdemux->priv = (void *) av7110; + + for (i=0; i<32; i++) + av7110->handle2filter[i]=NULL; + + dvbdemux->filternum = 32; + dvbdemux->feednum = 32; + dvbdemux->start_feed = av7110_start_feed; + dvbdemux->stop_feed = av7110_stop_feed; + dvbdemux->write_to_decoder = av7110_write_to_decoder; + dvbdemux->dmx.vendor = "TI"; + dvbdemux->dmx.model = "AV7110"; + dvbdemux->dmx.id = av7110->demux_id; + dvbdemux->dmx.capabilities = (DMX_TS_FILTERING | DMX_SECTION_FILTERING | + DMX_MEMORY_BASED_FILTERING); + + dvb_dmx_init(&av7110->demux); + + dvbfront->id = "hw_frontend"; + dvbfront->vendor = "VLSI"; + dvbfront->model = "DVB Frontend"; + dvbfront->source = DMX_FRONTEND_0; + + av7110->dmxdev.filternum = 32; + av7110->dmxdev.demux = &dvbdemux->dmx; + av7110->dmxdev.capabilities = 0; + + dvb_dmxdev_init(&av7110->dmxdev, av7110->dvb_adapter); + + ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, + &av7110->hw_frontend); + if (ret < 0) + return ret; + + av7110->mem_frontend.id = "mem_frontend"; + av7110->mem_frontend.vendor = "memory"; + av7110->mem_frontend.model = "sw"; + av7110->mem_frontend.source = DMX_MEMORY_FE; + + ret = dvbdemux->dmx.add_frontend(&dvbdemux->dmx, &av7110->mem_frontend); + + if (ret < 0) + return ret; + + ret = dvbdemux->dmx.connect_frontend(&dvbdemux->dmx, + &av7110->hw_frontend); + if (ret < 0) + return ret; + + dvb_register_device(av7110->dvb_adapter, &av7110->video_dev, + &dvbdev_video, av7110, DVB_DEVICE_VIDEO); + + dvb_register_device(av7110->dvb_adapter, &av7110->audio_dev, + &dvbdev_audio, av7110, DVB_DEVICE_AUDIO); + + dvb_register_device(av7110->dvb_adapter, &av7110->ca_dev, + &dvbdev_ca, av7110, DVB_DEVICE_CA); +#ifdef CONFIG_DVB_AV7110_OSD + dvb_register_device(av7110->dvb_adapter, &av7110->osd_dev, + &dvbdev_osd, av7110, DVB_DEVICE_OSD); +#endif +#ifdef USE_DVB_DSP + dvb->dsp_dev = dvb_register_dsp(dvb_audio_open, + dvb_audio_release, + dvb_audio_ioctl, + dvb_audio_write, + av7110->audio_dev); +#endif +// } + + av7110->dvb_net.card_num=av7110->dvb_adapter->num; + dvb_net_init(av7110->dvb_adapter, &av7110->dvb_net, &dvbdemux->dmx); + + return 0; +} + + +static void +dvb_unregister(av7110_t *av7110) +{ + struct dvb_demux *dvbdemux=&av7110->demux; + + DEB_EE(("av7110: %p\n",av7110)); + + if (!av7110->registered) + return; + + dvb_net_release(&av7110->dvb_net); + + dvbdemux->dmx.close(&dvbdemux->dmx); + dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &av7110->hw_frontend); + dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &av7110->mem_frontend); + + dvb_dmxdev_release(&av7110->dmxdev); + dvb_dmx_release(&av7110->demux); + + dvb_remove_frontend_notifier (av7110->dvb_adapter, + av7110_before_after_tune); + + dvb_remove_frontend_ioctls (av7110->dvb_adapter, + av7110_diseqc_ioctl, NULL); + + dvb_unregister_device(av7110->audio_dev); + dvb_unregister_device(av7110->video_dev); + dvb_unregister_device(av7110->osd_dev); + dvb_unregister_device(av7110->ca_dev); +#ifdef USE_DVB_DSP + dvb_unregister_dsp(av7110->dsp_dev); +#endif +// } +} + +static +int master_xfer (struct dvb_i2c_bus *i2c, const struct i2c_msg msgs[], int num) +{ + struct saa7146_dev *dev = i2c->data; + return saa7146_i2c_transfer(dev, msgs, num, 6); +} + +/**************************************************************************** + * INITIALIZATION + ****************************************************************************/ + +struct saa7146_extension_ioctls ioctls[] = { + { VIDIOC_ENUMINPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_G_INPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_S_INPUT, SAA7146_EXCLUSIVE }, + { 0, 0 } +}; + +static +int av7110_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *pci_ext) +{ + av7110_t *av7110 = NULL; + int ret = 0; + + if (!(av7110 = kmalloc (sizeof (struct av7110_s), GFP_KERNEL))) { + printk ("%s: out of memory!\n", __FUNCTION__); + return -ENOMEM; + } + + memset(av7110, 0, sizeof(av7110_t)); + + av7110->card_name = (char*)pci_ext->ext_priv; + (av7110_t*)dev->ext_priv = av7110; + + DEB_EE(("dev: %p, av7110: %p\n",dev,av7110)); + + if (saa7146_vv_init(dev)) { + ERR(("cannot init capture device. skipping.\n")); + kfree(av7110); + return -1; + } + + if (saa7146_register_device(&av7110->vd, dev, "av7110", VFL_TYPE_GRABBER)) { + ERR(("cannot register capture device. skipping.\n")); + saa7146_vv_release(dev); + kfree(av7110); + return -1; + } + + av7110->dev=(struct saa7146_dev *)dev; + dvb_register_adapter(&av7110->dvb_adapter, av7110->card_name); + + /* the Siemens DVB needs this if you want to have the i2c chips + get recognized before the main driver is fully loaded */ + saa7146_write(dev, GPIO_CTRL, 0x500000); + + saa7146_i2c_adapter_prepare(dev, NULL, SAA7146_I2C_BUS_BIT_RATE_3200); + + av7110->i2c_bus = dvb_register_i2c_bus (master_xfer, dev, + av7110->dvb_adapter, 0); + + if (!av7110->i2c_bus) { + saa7146_unregister_device(&av7110->vd, dev); + saa7146_vv_release(dev); + dvb_unregister_adapter (av7110->dvb_adapter); + kfree(av7110); + return -ENOMEM; + } + + saa7146_write(dev, PCI_BT_V1, 0x1c00101f); + saa7146_write(dev, BCS_CTRL, 0x80400040); + + /* set dd1 stream a & b */ + saa7146_write(dev, DD1_STREAM_B, 0x00000000); + saa7146_write(dev, DD1_INIT, 0x02000000); + saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); + + /* upload all */ + saa7146_write(dev, MC2, 0x077c077c); + saa7146_write(dev, GPIO_CTRL, 0x000000); + + tasklet_init (&av7110->debi_tasklet, debiirq, (unsigned long) av7110); + tasklet_init (&av7110->gpio_tasklet, gpioirq, (unsigned long) av7110); + + sema_init(&av7110->pid_mutex, 1); + + /* locks for data transfers from/to AV7110 */ + spin_lock_init (&av7110->debilock); + sema_init(&av7110->dcomlock, 1); + av7110->debilock=SPIN_LOCK_UNLOCKED; + av7110->debitype=-1; + + /* default ADAC type */ + av7110->adac_type = adac; + + /* default OSD window */ + av7110->osdwin=1; + + /* ARM "watchdog" */ + init_waitqueue_head(&av7110->arm_wait); + av7110->arm_thread=0; + + av7110->vidmode=VIDEO_MODE_PAL; + + av7110_ipack_init(&av7110->ipack[0], IPACKS, play_audio_cb); + av7110->ipack[0].data=(void *) av7110; + av7110_ipack_init(&av7110->ipack[1], IPACKS, play_video_cb); + av7110->ipack[1].data=(void *) av7110; + + + /* allocate and init buffers */ + av7110->debi_virt = pci_alloc_consistent(dev->pci, 8192, + &av7110->debi_bus); + if (!av7110->debi_virt) { + ret = -ENOMEM; + goto err; + } + + av7110->iobuf = vmalloc(AVOUTLEN+AOUTLEN+BMPLEN+4*IPACKS); + if (!av7110->iobuf) { + ret = -ENOMEM; + goto err; + } + + dvb_ringbuffer_init(&av7110->avout, av7110->iobuf, AVOUTLEN); + dvb_ringbuffer_init(&av7110->aout, av7110->iobuf+AVOUTLEN, AOUTLEN); + + /* init BMP buffer */ + av7110->bmpbuf=av7110->iobuf+AVOUTLEN+AOUTLEN; + init_waitqueue_head(&av7110->bmpq); + + av7110->kbuf[0]=(u8 *)(av7110->iobuf+AVOUTLEN+AOUTLEN+BMPLEN); + av7110->kbuf[1]=av7110->kbuf[0]+2*IPACKS; + + /* CI link layer buffers */ + ci_ll_init(&av7110->ci_rbuffer, &av7110->ci_wbuffer, 8192); + + /* handle different card types */ + + /* load firmware into AV7110 cards */ + + bootarm(av7110); + firmversion(av7110); + + if ((av7110->arm_app&0xffff)<0x2501) + printk ("av7110: Warning, firmware version 0x%04x is too old. " + "System might be unstable!\n", av7110->arm_app&0xffff); + + kernel_thread(arm_thread, (void *) av7110, 0); + + SetVolume(av7110, 0xff, 0xff); + VidMode(av7110, vidmode); + + /* remaining inits according to card and frontend type */ + if (i2c_writereg(av7110, 0x20, 0x00, 0x00)==1) { + printk ("av7110%d: Crystal audio DAC detected\n", + av7110->dvb_adapter->num); + av7110->adac_type = DVB_ADAC_CRYSTAL; + i2c_writereg(av7110, 0x20, 0x01, 0xd2); + i2c_writereg(av7110, 0x20, 0x02, 0x49); + i2c_writereg(av7110, 0x20, 0x03, 0x00); + i2c_writereg(av7110, 0x20, 0x04, 0x00); + } + + + /** + * some special handling for the Siemens DVB-C card... + */ + if (dev->pci->subsystem_vendor == 0x110a) { + if (i2c_writereg(av7110, 0x80, 0x0, 0x80)==1) { + i2c_writereg(av7110, 0x80, 0x0, 0); + printk ("av7110: DVB-C analog module detected, " + "initializing MSP3400\n"); + ddelay(10); + msp_writereg(av7110, 0x12, 0x0013, 0x0c00); + msp_writereg(av7110, 0x12, 0x0000, 0x7f00); // loudspeaker + headphone + msp_writereg(av7110, 0x12, 0x0008, 0x0220); // loudspeaker source + msp_writereg(av7110, 0x12, 0x0004, 0x7f00); // loudspeaker volume + msp_writereg(av7110, 0x12, 0x000a, 0x0220); // SCART 1 source + msp_writereg(av7110, 0x12, 0x0007, 0x7f00); // SCART 1 volume + msp_writereg(av7110, 0x12, 0x000d, 0x4800); // prescale SCART + } + + + // switch DVB SCART on + outcom(av7110, COMTYPE_AUDIODAC, MainSwitch, 1, 0); + outcom(av7110, COMTYPE_AUDIODAC, ADSwitch, 1, 1); + //saa7146_setgpio(dev, 1, SAA7146_GPIO_OUTHI); // RGB on, SCART pin 16 + //saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); // SCARTpin 8 + av7110->adac_type = DVB_ADAC_NONE; + } + + av7110_setup_irc_config (av7110, 0); + av7110_register(av7110); + + printk(KERN_INFO "av7110: found av7110-%d.\n",av7110_num); + av7110_num++; + return 0; + +err: + if (av7110 ) + kfree(av7110); + + /* FIXME: error handling is pretty bogus: memory does not get freed...*/ + saa7146_unregister_device(&av7110->vd, dev); + saa7146_vv_release(dev); + + dvb_unregister_i2c_bus (master_xfer,av7110->i2c_bus->adapter, + av7110->i2c_bus->id); + + dvb_unregister_adapter (av7110->dvb_adapter); + + return ret; +} + +static +int av7110_detach (struct saa7146_dev* saa) +{ + av7110_t *av7110 = (av7110_t*)saa->ext_priv; + DEB_EE(("av7110: %p\n",av7110)); + + saa7146_unregister_device(&av7110->vd, saa); + + av7110->arm_rmmod=1; + wake_up_interruptible(&av7110->arm_wait); + + while (av7110->arm_thread) + ddelay(1); + + dvb_unregister(av7110); + + IER_DISABLE(saa, (MASK_19 | MASK_03)); +// saa7146_write (av7110->dev, IER, +// saa7146_read(av7110->dev, IER) & ~(MASK_19 | MASK_03)); + + saa7146_write(av7110->dev, ISR,(MASK_19 | MASK_03)); + + ci_ll_release(&av7110->ci_rbuffer, &av7110->ci_wbuffer); + av7110_ipack_free(&av7110->ipack[0]); + av7110_ipack_free(&av7110->ipack[1]); + vfree(av7110->iobuf); + pci_free_consistent(saa->pci, 8192, av7110->debi_virt, + av7110->debi_bus); + + dvb_unregister_i2c_bus (master_xfer,av7110->i2c_bus->adapter, av7110->i2c_bus->id); + dvb_unregister_adapter (av7110->dvb_adapter); + + kfree (av7110); + + saa->ext_priv = NULL; + av7110_num--; + + return 0; +} + + +static +void av7110_irq(struct saa7146_dev* dev, u32 *isr) +{ + av7110_t *av7110 = (av7110_t*)dev->ext_priv; + + DEB_EE(("dev: %p, av7110: %p\n",dev,av7110)); + + if (*isr & MASK_19) + tasklet_schedule (&av7110->debi_tasklet); + + if (*isr & MASK_03) + tasklet_schedule (&av7110->gpio_tasklet); +} + + +/* FIXME: these values are experimental values that look better than the + values from the latest "official" driver -- at least for me... (MiHu) */ +static +struct saa7146_standard standard[] = { + { "PAL", V4L2_STD_PAL, 0x15, 288, 576, 0x4a, 708, 709, 576, 768 }, +// { "PAL", V4L2_STD_PAL, 0x15, 288, 576, 0x3a, 720, 721, 576, 768 }, + { "NTSC", V4L2_STD_NTSC, 0x10, 244, 480, 0x40, 708, 709, 480, 640 }, +}; + +static +struct saa7146_extension av7110_extension; + +#define MAKE_AV7110_INFO(x_var,x_name) \ +static struct saa7146_pci_extension_data x_var = { \ + .ext_priv = x_name, \ + .ext = &av7110_extension } + +MAKE_AV7110_INFO(fs_1_5, "Siemens cable card PCI rev1.5"); +MAKE_AV7110_INFO(fs_1_3, "Siemens/Technotrend/Hauppauge PCI rev1.3"); +MAKE_AV7110_INFO(tt_1_6, "Technotrend/Hauppauge PCI rev1.3 or 1.6"); +MAKE_AV7110_INFO(tt_2_1, "Technotrend/Hauppauge PCI rev2.1"); +MAKE_AV7110_INFO(tt_t, "Technotrend/Hauppauge PCI DVB-T"); +MAKE_AV7110_INFO(unkwn0, "Technotrend/Hauppauge PCI rev?(unknown0)?"); +MAKE_AV7110_INFO(unkwn1, "Technotrend/Hauppauge PCI rev?(unknown1)?"); +MAKE_AV7110_INFO(unkwn2, "Technotrend/Hauppauge PCI rev?(unknown2)?"); +MAKE_AV7110_INFO(nexus, "Technotrend/Hauppauge Nexus PCI DVB-S"); + +static +struct pci_device_id pci_tbl[] = { + MAKE_EXTENSION_PCI(fs_1_5, 0x110a, 0xffff), + MAKE_EXTENSION_PCI(fs_1_5, 0x110a, 0x0000), + MAKE_EXTENSION_PCI(fs_1_3, 0x13c2, 0x0000), + MAKE_EXTENSION_PCI(unkwn0, 0x13c2, 0x1002), + MAKE_EXTENSION_PCI(tt_1_6, 0x13c2, 0x0001), + MAKE_EXTENSION_PCI(tt_2_1, 0x13c2, 0x0002), + MAKE_EXTENSION_PCI(tt_2_1, 0x13c2, 0x0003), + MAKE_EXTENSION_PCI(tt_2_1, 0x13c2, 0x0004), + MAKE_EXTENSION_PCI(tt_1_6, 0x13c2, 0x0006), + MAKE_EXTENSION_PCI(tt_t, 0x13c2, 0x0008), + MAKE_EXTENSION_PCI(unkwn1, 0xffc2, 0x0000), + MAKE_EXTENSION_PCI(unkwn2, 0x00a1, 0x00a1), + MAKE_EXTENSION_PCI(nexus, 0x00a1, 0xa1a0), + { + .vendor = 0, + } +}; + +static int std_callback(struct saa7146_dev* dev, struct saa7146_standard *std) +{ + av7110_t *av7110 = (av7110_t*)dev->ext_priv; + if (std->id == V4L2_STD_PAL) { + av7110->vidmode = VIDEO_MODE_PAL; + SetMode(av7110, av7110->vidmode); + } + else if (std->id == V4L2_STD_NTSC) { + av7110->vidmode = VIDEO_MODE_NTSC; + SetMode(av7110, av7110->vidmode); + } + else + return -1; + + return 0; +} + + +static +struct saa7146_ext_vv av7110_vv_data = { + .inputs = 1, + .audios = 1, + .capabilities = 0, + .flags = SAA7146_EXT_SWAP_ODD_EVEN, + + .stds = &standard[0], + .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), + .std_callback = &std_callback, + + .ioctls = &ioctls[0], + .ioctl = av7110_ioctl, +}; + +static +struct saa7146_extension av7110_extension = { + .name = "dvb\0", + .ext_vv_data = &av7110_vv_data, + + .module = THIS_MODULE, + .pci_tbl = &pci_tbl[0], + .attach = av7110_attach, + .detach = av7110_detach, + + .irq_mask = MASK_19|MASK_03, + .irq_func = av7110_irq, +}; + + +static +int __init av7110_init(void) +{ + if (saa7146_register_extension(&av7110_extension)) + return -ENODEV; + + av7110_ir_init(); + + return 0; +} + + +static +void __exit av7110_exit(void) +{ + av7110_ir_exit(); + saa7146_unregister_extension(&av7110_extension); +} + +module_init(av7110_init); +module_exit(av7110_exit); + +MODULE_DESCRIPTION("driver for the SAA7146 based AV110 PCI DVB cards by " + "Siemens, Technotrend, Hauppauge"); +MODULE_AUTHOR("Ralph Metzler, Marcus Metzler, others"); +MODULE_LICENSE("GPL"); + +MODULE_PARM(av7110_debug,"i"); +MODULE_PARM(vidmode,"i"); +MODULE_PARM(pids_off,"i"); +MODULE_PARM(adac,"i"); +MODULE_PARM(hw_sections, "i"); + diff -Nru a/drivers/media/dvb/ttpci/av7110.h b/drivers/media/dvb/ttpci/av7110.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/av7110.h Mon Apr 7 13:20:06 2003 @@ -0,0 +1,683 @@ +#ifndef _AV7110_H_ +#define _AV7110_H_ + +#define DVB_FIRM_PATH "/lib/DVB/" + +#include +#include +#include + +#ifdef CONFIG_DEVFS_FS +#include +#endif + +#include + +/* DEBI transfer mode defs */ + +#define DEBINOSWAP 0x000e0000 +#define DEBISWAB 0x001e0000 +#define DEBISWAP 0x002e0000 + +#define ARM_WAIT_FREE (HZ) +#define ARM_WAIT_SHAKE (HZ/5) +#define ARM_WAIT_OSD (HZ) + +#define WAIT_QUEUE wait_queue_head_t + +#include +#include +#include +#include +#include +#include + +#include "dvbdev.h" +#include "demux.h" +#include "dvb_demux.h" +#include "dmxdev.h" +#include "dvb_filter.h" +#include "dvb_net.h" +#include "dvb_ringbuffer.h" + +typedef enum BOOTSTATES +{ + BOOTSTATE_BUFFER_EMPTY = 0, + BOOTSTATE_BUFFER_FULL = 1, + BOOTSTATE_BOOT_COMPLETE = 2 +} BOOTSTATES; + +typedef enum +{ RP_None, + AudioPES, + AudioMp2, + AudioPCM, + VideoPES, + AV_PES +} TYPE_REC_PLAY_FORMAT; + +typedef struct PARAMSTRUCT +{ + unsigned int wCommand; + int error; + unsigned long pdwData[100]; +} PARAMSTRUCT, *PPARAMSTRUCT; + +typedef enum OSDPALTYPE +{ + NoPalet = 0, /* No palette */ + Pal1Bit = 2, /* 2 colors for 1 Bit Palette */ + Pal2Bit = 4, /* 4 colors for 2 bit palette */ + Pal4Bit = 16, /* 16 colors for 4 bit palette */ + Pal8Bit = 256 /* 256 colors for 16 bit palette */ +} OSDPALTYPE, *POSDPALTYPE; + +typedef enum { + BITMAP1, /* 1 bit bitmap */ + BITMAP2, /* 2 bit bitmap */ + BITMAP4, /* 4 bit bitmap */ + BITMAP8, /* 8 bit bitmap */ + BITMAP1HR, /* 1 Bit bitmap half resolution */ + BITMAP2HR, /* 2 bit bitmap half resolution */ + BITMAP4HR, /* 4 bit bitmap half resolution */ + BITMAP8HR, /* 8 bit bitmap half resolution */ + YCRCB422, /* 4:2:2 YCRCB Graphic Display */ + YCRCB444, /* 4:4:4 YCRCB Graphic Display */ + YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */ + VIDEOTSIZE, /* True Size Normal MPEG Video Display */ + VIDEOHSIZE, /* MPEG Video Display Half Resolution */ + VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */ + VIDEODSIZE, /* MPEG Video Display Double Resolution */ + VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */ + VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/ + VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */ + VIDEONSIZE, /* Full Size MPEG Video Display */ + CURSOR /* Cursor */ +} DISPTYPE; /* Window display type */ + +// switch defines +#define SB_GPIO 3 +#define SB_OFF SAA7146_GPIO_OUTLO //SlowBlank aus (TV-Mode) +#define SB_ON SAA7146_GPIO_INPUT //SlowBlank an (AV-Mode) +#define SB_WIDE SAA7146_GPIO_OUTHI //SlowBlank 6V (16/9-Mode) nicht realisiert + +#define FB_GPIO 1 +#define FB_OFF SAA7146_GPIO_LO //FastBlank aus (CVBS-Mode) +#define FB_ON SAA7146_GPIO_OUTHI //FastBlank an (RGB-Mode) +#define FB_LOOP SAA7146_GPIO_INPUT //FastBlank der PC-Grafik durchschleifen + +typedef enum VIDEOOUTPUTMODE +{ + NO_OUT = 0, //disable analog Output + CVBS_RGB_OUT = 1, + CVBS_YC_OUT = 2, + YC_OUT = 3 +} VIDEOOUTPUTMODE, *PVIDEOOUTPUTMODE; + + +#define GPMQFull 0x0001 //Main Message Queue Full +#define GPMQOver 0x0002 //Main Message Queue Overflow +#define HPQFull 0x0004 //High Priority Msg Queue Full +#define HPQOver 0x0008 +#define OSDQFull 0x0010 //OSD Queue Full +#define OSDQOver 0x0020 + +#define SECTION_EIT 0x01 +#define SECTION_SINGLE 0x00 +#define SECTION_CYCLE 0x02 +#define SECTION_CONTINUOS 0x04 +#define SECTION_MODE 0x06 +#define SECTION_IPMPE 0x0C // bis zu 4k gro_ +#define SECTION_HIGH_SPEED 0x1C // vergrv_erter Puffer f|r High Speed Filter +#define DATA_PIPING_FLAG 0x20 // f|r Data Piping Filter + +#define PBUFSIZE_NONE 0x0000 +#define PBUFSIZE_1P 0x0100 +#define PBUFSIZE_2P 0x0200 +#define PBUFSIZE_1K 0x0300 +#define PBUFSIZE_2K 0x0400 +#define PBUFSIZE_4K 0x0500 +#define PBUFSIZE_8K 0x0600 +#define PBUFSIZE_16K 0x0700 +#define PBUFSIZE_32K 0x0800 + +typedef enum { + WCreate, + WDestroy, + WMoveD, + WMoveA, + WHide, + WTop, + DBox, + DLine, + DText, + Set_Font, + SetColor, + SetBlend, + SetWBlend, + SetCBlend, + SetNonBlend, + LoadBmp, + BlitBmp, + ReleaseBmp, + SetWTrans, + SetWNoTrans +} OSDCOM; + +typedef enum { + MultiPID, + VideoPID, + AudioPID, + InitFilt, + FiltError, + NewVersion, + CacheError, + AddPIDFilter, + DelPIDFilter, + Scan, + SetDescr, + SetIR +} PIDCOM; + +typedef enum { + SelAudChannels +} MPEGCOM; + +typedef enum { + AudioDAC, + CabADAC, + ON22K, + OFF22K, + MainSwitch, + ADSwitch, + SendDiSEqC, + SetRegister +} AUDCOM; + +typedef enum { + AudioState, + AudioBuffState, + VideoState1, + VideoState2, + VideoState3, + CrashCounter, + ReqVersion, + ReqVCXO, + ReqRegister +} REQCOM; + +typedef enum { + SetVidMode, + SetTestMode, + LoadVidCode, + SetMonitorType, + SetPanScanType, + SetFreezeMode +} ENC; + +typedef enum { + __Record, + __Stop, + __Play, + __Pause, + __Slow, + __FF_IP, + __Scan_I, + __Continue +} REC_PLAY; + +typedef enum { + COMTYPE_NOCOM, + COMTYPE_PIDFILTER, + COMTYPE_MPEGDECODER, + COMTYPE_OSD, + COMTYPE_BMP, + COMTYPE_ENCODER, + COMTYPE_AUDIODAC, + COMTYPE_REQUEST, + COMTYPE_SYSTEM, + COMTYPE_REC_PLAY, + COMTYPE_COMMON_IF, + COMTYPE_PID_FILTER, + COMTYPE_PES, + COMTYPE_TS, + COMTYPE_VIDEO, + COMTYPE_AUDIO, + COMTYPE_CI_LL, +} COMTYPE; + +typedef enum { + AV7110_VIDEO_FREEZE, + AV7110_VIDEO_CONTINUE +} VIDEOCOM; + +typedef enum { + DVB_AUDIO_PAUSE, +} AUDIOCOM; + + +#define VID_NONE_PREF 0x00 /* No aspect ration processing preferred */ +#define VID_PAN_SCAN_PREF 0x01 /* Pan and Scan Display preferred */ +#define VID_VERT_COMP_PREF 0x02 /* Vertical compression display preferred */ +#define VID_VC_AND_PS_PREF 0x03 /* PanScan and vertical Compression if allowed */ +#define VID_CENTRE_CUT_PREF 0x05 /* PanScan with zero vector */ + +#define DATA_NONE 0x00 +#define DATA_FSECTION 0x01 +#define DATA_IPMPE 0x02 +#define DATA_MPEG_RECORD 0x03 +#define DATA_DEBUG_MESSAGE 0x04 +#define DATA_COMMON_INTERFACE 0x05 +#define DATA_MPEG_PLAY 0x06 +#define DATA_BMP_LOAD 0x07 +#define DATA_IRCOMMAND 0x08 +#define DATA_PIPING 0x09 +#define DATA_STREAMING 0x0a +#define DATA_CI_GET 0x0b +#define DATA_CI_PUT 0x0c + +#define DATA_PES_RECORD 0x10 +#define DATA_PES_PLAY 0x11 +#define DATA_TS_RECORD 0x12 +#define DATA_TS_PLAY 0x13 + +#define CI_CMD_ERROR 0x00 +#define CI_CMD_ACK 0x01 +#define CI_CMD_SYSTEM_READY 0x02 +#define CI_CMD_KEYPRESS 0x03 +#define CI_CMD_ON_TUNED 0x04 +#define CI_CMD_ON_SWITCH_PROGRAM 0x05 +#define CI_CMD_SECTION_ARRIVED 0x06 +#define CI_CMD_SECTION_TIMEOUT 0x07 +#define CI_CMD_TIME 0x08 +#define CI_CMD_ENTER_MENU 0x09 +#define CI_CMD_FAST_PSI 0x0a +#define CI_CMD_GET_SLOT_INFO 0x0b + +#define CI_MSG_NONE 0x00 +#define CI_MSG_CI_INFO 0x01 +#define CI_MSG_MENU 0x02 +#define CI_MSG_LIST 0x03 +#define CI_MSG_TEXT 0x04 +#define CI_MSG_REQUEST_INPUT 0x05 +#define CI_MSG_INPUT_COMPLETE 0x06 +#define CI_MSG_LIST_MORE 0x07 +#define CI_MSG_MENU_MORE 0x08 +#define CI_MSG_CLOSE_MMI_IMM 0x09 +#define CI_MSG_SECTION_REQUEST 0x0a +#define CI_MSG_CLOSE_FILTER 0x0b +#define CI_PSI_COMPLETE 0x0c +#define CI_MODULE_READY 0x0d +#define CI_SWITCH_PRG_REPLY 0x0e +#define CI_MSG_TEXT_MORE 0x0f + +#define CI_MSG_CA_PMT 0xe0 +#define CI_MSG_ERROR 0xf0 + + +#define PROG_STREAM_MAP 0xBC +#define PRIVATE_STREAM1 0xBD +#define PADDING_STREAM 0xBE +#define PRIVATE_STREAM2 0xBF +#define AUDIO_STREAM_S 0xC0 +#define AUDIO_STREAM_E 0xDF +#define VIDEO_STREAM_S 0xE0 +#define VIDEO_STREAM_E 0xEF +#define ECM_STREAM 0xF0 +#define EMM_STREAM 0xF1 +#define DSM_CC_STREAM 0xF2 +#define ISO13522_STREAM 0xF3 +#define PROG_STREAM_DIR 0xFF + +#define PTS_DTS_FLAGS 0xC0 + +//pts_dts flags +#define PTS_ONLY 0x80 +#define PTS_DTS 0xC0 +#define TS_SIZE 188 +#define TRANS_ERROR 0x80 +#define PAY_START 0x40 +#define TRANS_PRIO 0x20 +#define PID_MASK_HI 0x1F +//flags +#define TRANS_SCRMBL1 0x80 +#define TRANS_SCRMBL2 0x40 +#define ADAPT_FIELD 0x20 +#define PAYLOAD 0x10 +#define COUNT_MASK 0x0F + +// adaptation flags +#define DISCON_IND 0x80 +#define RAND_ACC_IND 0x40 +#define ES_PRI_IND 0x20 +#define PCR_FLAG 0x10 +#define OPCR_FLAG 0x08 +#define SPLICE_FLAG 0x04 +#define TRANS_PRIV 0x02 +#define ADAP_EXT_FLAG 0x01 + +// adaptation extension flags +#define LTW_FLAG 0x80 +#define PIECE_RATE 0x40 +#define SEAM_SPLICE 0x20 + +#define MAX_PLENGTH 0xFFFF +#define MAX_VID_PES 0x1FFF + +typedef struct section_s { + int id; + int length; + int found; + u8 payload[4096+3]; +} section_t; + + +#define MY_STATE_PES_START 1 +#define MY_STATE_PES_STARTED 2 +#define MY_STATE_FULL 4 + +#define MASKL DMX_MAX_FILTER_SIZE +#define MAXFILT 32 + +struct dvb_filter { + int state; + int flags; + int type; + u8 ts_state; + + u16 pid; + u8 value[MASKL]; + u8 mask[MASKL]; +}; + + +enum {AV_PES_STREAM, PS_STREAM, TS_STREAM, PES_STREAM}; + +typedef struct ps_packet_s{ + u8 scr[6]; + u8 mux_rate[3]; + u8 stuff_length; + u8 data[20]; + u8 sheader_llength[2]; + int sheader_length; + u8 rate_bound[3]; + u8 audio_bound; + u8 video_bound; + u8 reserved; + int npes; + int mpeg; +} ps_packet_t; + +typedef struct a2p_s{ + int type; + int found; + int length; + int headr; + u8 cid; + u8 flags; + u8 abuf[MAX_PLENGTH]; + int alength; + u8 vbuf[MAX_PLENGTH]; + int vlength; + int plength; + u8 last_av_pts[4]; + u8 av_pts[4]; + u8 scr[4]; + u16 count0; + u16 count1; + u16 pidv; + u16 pida; + u16 countv; + u16 counta; + void *dataA; + void *dataV; + void (*write_cb)(u8 const *buf, long int count, + void *data); +} a2p_t; + + +typedef struct p2t_s { + u8 pes[TS_SIZE]; + u8 counter; + long int pos; + int frags; + struct dvb_demux_feed *feed; +} p2t_t; + +/* place to store all the necessary device information */ +typedef struct av7110_s { + + /* devices */ + + struct dvb_device dvb_dev; + dvb_net_t dvb_net; + struct video_device vd; + + struct saa7146_dev *dev; + + struct dvb_i2c_bus *i2c_bus; + char *card_name; + + struct tasklet_struct debi_tasklet; + struct tasklet_struct gpio_tasklet; + + int adac_type; /* audio DAC type */ +#define DVB_ADAC_TI 0 +#define DVB_ADAC_CRYSTAL 1 +#define DVB_ADAC_NONE -1 + + + /* buffers */ + + void *iobuf; /* memory for all buffers */ + dvb_ringbuffer_t avout; /* buffer for video or A/V mux */ +#define AVOUTLEN (128*1024) + dvb_ringbuffer_t aout; /* buffer for audio */ +#define AOUTLEN (64*1024) + void *bmpbuf; +#define BMPLEN (8*32768+1024) + + /* bitmap buffers and states */ + + int bmpp; + int bmplen; + int bmp_win; + u16 bmp_x, bmp_y; + int bmp_trans; + int bmp_state; +#define BMP_NONE 0 +#define BMP_LOADING 1 +#define BMP_LOADINGS 2 +#define BMP_LOADED 3 + WAIT_QUEUE bmpq; + + + /* DEBI and polled command interface */ + + spinlock_t debilock; + struct semaphore dcomlock; + int debitype; + int debilen; + int debibuf; + + + /* Recording and playback flags */ + + int rec_mode; + int playing; +#define RP_NONE 0 +#define RP_VIDEO 1 +#define RP_AUDIO 2 +#define RP_AV 3 + + + /* OSD */ + + int osdwin; /* currently active window */ + u16 osdbpp[8]; + + + /* CA */ + + ca_slot_info_t ci_slot[2]; + + int vidmode; + dmxdev_t dmxdev; + struct dvb_demux demux; + char demux_id[16]; + + dmx_frontend_t hw_frontend; + dmx_frontend_t mem_frontend; + + int fe_synced; + struct semaphore pid_mutex; + + int video_blank; + struct video_status videostate; + int display_ar; + int trickmode; +#define TRICK_NONE 0 +#define TRICK_FAST 1 +#define TRICK_SLOW 2 +#define TRICK_FREEZE 3 + struct audio_status audiostate; + + struct dvb_demux_filter *handle2filter[32]; + p2t_t p2t_filter[MAXFILT]; + dvb_filter_pes2ts_t p2t[2]; + struct ipack_s ipack[2]; + u8 *kbuf[2]; + + int sinfo; + int feeding; + + int arm_errors; + int registered; + + + /* AV711X */ + + u32 arm_fw; + u32 arm_rtsl; + u32 arm_vid; + u32 arm_app; + u32 avtype; + int arm_ready; + struct task_struct *arm_thread; + WAIT_QUEUE arm_wait; + u16 arm_loops; + int arm_rmmod; + + void *debi_virt; + dma_addr_t debi_bus; + + u16 pids[DMX_PES_OTHER]; + + dvb_ringbuffer_t ci_rbuffer; + dvb_ringbuffer_t ci_wbuffer; + + + struct dvb_adapter *dvb_adapter; + struct dvb_device *video_dev; + struct dvb_device *audio_dev; + struct dvb_device *ca_dev; + struct dvb_device *osd_dev; + + int dsp_dev; +} av7110_t; + + +#define DPRAM_BASE 0x4000 + +#define BOOT_STATE (DPRAM_BASE + 0x3F8) +#define BOOT_SIZE (DPRAM_BASE + 0x3FA) +#define BOOT_BASE (DPRAM_BASE + 0x3FC) +#define BOOT_BLOCK (DPRAM_BASE + 0x400) +#define BOOT_MAX_SIZE 0xc00 + +#define IRQ_STATE (DPRAM_BASE + 0x0F4) +#define IRQ_STATE_EXT (DPRAM_BASE + 0x0F6) +#define MSGSTATE (DPRAM_BASE + 0x0F8) +#define FILT_STATE (DPRAM_BASE + 0x0FA) +#define COMMAND (DPRAM_BASE + 0x0FC) +#define COM_BUFF (DPRAM_BASE + 0x100) +#define COM_BUFF_SIZE 0x20 + +#define BUFF1_BASE (DPRAM_BASE + 0x120) +#define BUFF1_SIZE 0xE0 + +#define DATA_BUFF_BASE (DPRAM_BASE + 0x200) +#define DATA_BUFF_SIZE 0x1C00 + +/* new buffers */ + +#define DATA_BUFF0_BASE (DPRAM_BASE + 0x200) +#define DATA_BUFF0_SIZE 0x0800 + +#define DATA_BUFF1_BASE (DATA_BUFF0_BASE+DATA_BUFF0_SIZE) +#define DATA_BUFF1_SIZE 0x0800 + +#define DATA_BUFF2_BASE (DATA_BUFF1_BASE+DATA_BUFF1_SIZE) +#define DATA_BUFF2_SIZE 0x0800 + +#define Reserved (DPRAM_BASE + 0x1E00) +#define Reserved_SIZE 0x1C0 + +#define DEBUG_WINDOW (DPRAM_BASE + 0x1FC0) +#define DBG_LOOP_CNT (DEBUG_WINDOW + 0x00) +#define DBG_SEC_CNT (DEBUG_WINDOW + 0x02) +#define DBG_AVRP_BUFF (DEBUG_WINDOW + 0x04) +#define DBG_AVRP_PEAK (DEBUG_WINDOW + 0x06) +#define DBG_MSG_CNT (DEBUG_WINDOW + 0x08) +#define DBG_CODE_REG (DEBUG_WINDOW + 0x0a) +#define DBG_TTX_Q (DEBUG_WINDOW + 0x0c) +#define DBG_AUD_EN (DEBUG_WINDOW + 0x0e) +#define DBG_WRONG_COM (DEBUG_WINDOW + 0x10) +#define DBG_ARR_OVFL (DEBUG_WINDOW + 0x12) +#define DBG_BUFF_OVFL (DEBUG_WINDOW + 0x14) +#define DBG_OVFL_CNT (DEBUG_WINDOW + 0x16) +#define DBG_SEC_OVFL (DEBUG_WINDOW + 0x18) + +#define STATUS_BASE (DPRAM_BASE + 0x1FC0) +#define STATUS_SCR (STATUS_BASE + 0x00) +#define STATUS_MODES (STATUS_BASE + 0x04) +#define STATUS_LOOPS (STATUS_BASE + 0x08) + +#define RX_TYPE (DPRAM_BASE + 0x1FE8) +#define RX_LEN (DPRAM_BASE + 0x1FEA) +#define TX_TYPE (DPRAM_BASE + 0x1FEC) +#define TX_LEN (DPRAM_BASE + 0x1FEE) + +#define RX_BUFF (DPRAM_BASE + 0x1FF4) +#define TX_BUFF (DPRAM_BASE + 0x1FF6) + +#define HANDSHAKE_REG (DPRAM_BASE + 0x1FF8) +#define COM_IF_LOCK (DPRAM_BASE + 0x1FFA) + +#define IRQ_RX (DPRAM_BASE + 0x1FFC) +#define IRQ_TX (DPRAM_BASE + 0x1FFE) + +#define DRAM_START_CODE 0x2e000404 +#define DRAM_MAX_CODE_SIZE 0x00100000 + +#define RESET_LINE 2 +#define DEBI_DONE_LINE 1 +#define ARM_IRQ_LINE 0 + +#define DAC_CS 0x8000 +#define DAC_CDS 0x0000 + + +extern unsigned char *av7110_dpram_addr, *av7110_root_addr; +extern int av7110_dpram_len, av7110_root_len; + +extern void av7110_register_irc_handler(void (*func)(u32)); +extern void av7110_unregister_irc_handler(void (*func)(u32)); +extern void av7110_setup_irc_config (av7110_t *av7110, u32 ir_config); + +extern int av7110_ir_init (void); +extern void av7110_ir_exit (void); + + +#endif /* _AV7110_H_ */ + diff -Nru a/drivers/media/dvb/ttpci/av7110_firm.h b/drivers/media/dvb/ttpci/av7110_firm.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/av7110_firm.h Mon Apr 7 13:20:06 2003 @@ -0,0 +1,28080 @@ + +#include + +u8 Dpram [] __initdata = { + 0xe5, 0x9f, 0xf0, 0x1c, 0xe1, 0xb0, 0xf0, 0x0e, + 0xe5, 0x9f, 0xf0, 0x18, 0xe2, 0x5e, 0xf0, 0x04, + 0xe2, 0x5e, 0xf0, 0x08, 0xe1, 0xa0, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x06, 0xe2, 0x5e, 0xf0, 0x04, + 0x2c, 0x00, 0x00, 0xe8, 0x2e, 0x02, 0x55, 0x6c, + 0x2e, 0x01, 0xc3, 0xe0, 0xa5, 0xa5, 0x5a, 0x5a, + 0x00, 0x1f, 0x15, 0x55, 0x00, 0x00, 0x00, 0x09, + 0xe9, 0x2d, 0x5f, 0xff, 0xe1, 0x4f, 0x00, 0x00, + 0xe9, 0x2d, 0x00, 0x01, 0xe2, 0x8f, 0x00, 0x01, + 0xe1, 0x2f, 0xff, 0x10, 0x21, 0xff, 0x48, 0x25, + 0x68, 0x00, 0x40, 0x52, 0x42, 0x08, 0xd1, 0x0b, + 0x32, 0x20, 0x0a, 0x00, 0x42, 0x08, 0xd1, 0x07, + 0x32, 0x20, 0x0a, 0x00, 0x42, 0x08, 0xd1, 0x03, + 0x0a, 0x00, 0x42, 0x08, 0xd0, 0x29, 0x32, 0x20, + 0x21, 0x0f, 0x42, 0x08, 0xd1, 0x01, 0x32, 0x10, + 0x09, 0x00, 0x21, 0x01, 0x42, 0x08, 0xd1, 0x08, + 0x1d, 0x12, 0x21, 0x02, 0x42, 0x08, 0xd1, 0x04, + 0x1d, 0x12, 0x21, 0x04, 0x42, 0x08, 0xd1, 0x00, + 0x1d, 0x12, 0x48, 0x13, 0x68, 0x00, 0xb4, 0x01, + 0x08, 0x90, 0x21, 0x01, 0x40, 0x81, 0x48, 0x0f, + 0x60, 0x01, 0x48, 0x0d, 0x58, 0x82, 0x48, 0x01, + 0x46, 0x86, 0x47, 0x10, 0x2c, 0x00, 0x00, 0xb1, + 0xbc, 0x02, 0x48, 0x0b, 0x68, 0x02, 0x23, 0x20, + 0x05, 0x1b, 0x40, 0x1a, 0x43, 0x99, 0x43, 0x11, + 0x60, 0x01, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, + 0xe8, 0xbd, 0x00, 0x01, 0xe1, 0x69, 0xf0, 0x00, + 0xe8, 0xbd, 0x5f, 0xff, 0xe2, 0x5e, 0xf0, 0x04, + 0x2e, 0x08, 0x3a, 0xfc, 0x66, 0x00, 0x00, 0x14, + 0x66, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x0c, 0x2e, 0x02, 0x56, 0x74, + 0x2c, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + + +u8 Root [] __initdata = { + 0xb4, 0x90, 0x49, 0x18, 0x1c, 0x0b, 0x4a, 0x18, + 0x1a, 0x50, 0x4f, 0x18, 0x1a, 0x79, 0x10, 0x8f, + 0x21, 0x00, 0x2f, 0x00, 0xdd, 0x04, 0xcb, 0x10, + 0xc2, 0x10, 0x31, 0x01, 0x42, 0xb9, 0xdb, 0xfa, + 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, + 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, + 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, + 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, + 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, + 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, + 0x49, 0x13, 0x18, 0x09, 0x4a, 0x13, 0x60, 0x11, + 0x49, 0x13, 0x18, 0x08, 0x49, 0x13, 0x60, 0x08, + 0xbc, 0x90, 0x47, 0x70, 0x2e, 0x01, 0xc0, 0xa8, + 0x9e, 0x00, 0x0a, 0x00, 0x2e, 0x01, 0xc1, 0xa8, + 0x2e, 0x01, 0xc0, 0xf8, 0x2e, 0x01, 0xc2, 0xc8, + 0x2e, 0x01, 0xc1, 0x30, 0x2e, 0x01, 0xc2, 0xcc, + 0x2e, 0x01, 0xc1, 0x4c, 0x2e, 0x01, 0xc2, 0xd0, + 0x2e, 0x01, 0xc0, 0xf8, 0x2e, 0x01, 0xc2, 0xd4, + 0x2e, 0x01, 0xc1, 0x14, 0x2e, 0x01, 0xc2, 0xd8, + 0x2e, 0x01, 0xc1, 0x4c, 0x2e, 0x01, 0xc2, 0xdc, + 0x2e, 0x01, 0xc1, 0x30, 0x2e, 0x01, 0xc2, 0xe0, + 0x2e, 0x01, 0xc0, 0xa8, 0x2e, 0x01, 0xc2, 0xe4, + 0xb5, 0xf0, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x07, + 0xb0, 0x82, 0x2a, 0x00, 0xd1, 0x03, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x0e, 0x38, + 0x06, 0x00, 0x21, 0x0b, 0x06, 0x89, 0x4b, 0x43, + 0x93, 0x01, 0x42, 0x88, 0xd1, 0x32, 0x08, 0x78, + 0xd3, 0x05, 0x1e, 0x78, 0x88, 0x00, 0x70, 0x20, + 0x34, 0x01, 0x3d, 0x01, 0x37, 0x01, 0x08, 0xb8, + 0xd3, 0x0f, 0x2d, 0x02, 0xdb, 0x0d, 0x08, 0x60, + 0xd3, 0x06, 0x88, 0x39, 0x0a, 0x09, 0x70, 0x21, + 0x88, 0x38, 0x70, 0x60, 0x34, 0x02, 0xe0, 0x02, + 0x88, 0x38, 0x80, 0x20, 0x34, 0x02, 0x3d, 0x02, + 0x37, 0x02, 0x07, 0xae, 0x0f, 0xb6, 0x1b, 0xad, + 0xd0, 0x08, 0x9b, 0x01, 0x68, 0x1b, 0x1c, 0x38, + 0x1c, 0x21, 0x1c, 0x2a, 0xf0, 0x17, 0xff, 0xdc, + 0x19, 0x7f, 0x19, 0x64, 0x2e, 0x00, 0xd0, 0x54, + 0x68, 0x38, 0x90, 0x00, 0x46, 0x6f, 0x78, 0x38, + 0x70, 0x20, 0x34, 0x01, 0x37, 0x01, 0x3e, 0x01, + 0xd1, 0xf9, 0xe0, 0x4a, 0x0e, 0x20, 0x06, 0x00, + 0x42, 0x88, 0xd1, 0x3f, 0xe0, 0x14, 0x08, 0x60, + 0xd3, 0x08, 0x1e, 0x60, 0x88, 0x01, 0x23, 0xff, + 0x02, 0x1b, 0x40, 0x19, 0x78, 0x3a, 0x43, 0x11, + 0x80, 0x01, 0xe0, 0x06, 0x88, 0x21, 0x06, 0x09, + 0x0e, 0x09, 0x78, 0x3a, 0x02, 0x12, 0x43, 0x11, + 0x80, 0x21, 0x34, 0x01, 0x3d, 0x01, 0x37, 0x01, + 0x07, 0xb8, 0xd0, 0x01, 0x2d, 0x00, 0xdc, 0xe6, + 0x07, 0xae, 0x0f, 0xb6, 0x1b, 0xad, 0xd0, 0x06, + 0x9b, 0x01, 0x68, 0x1b, 0x1c, 0x38, 0x1c, 0x21, + 0x1c, 0x2a, 0xf0, 0x17, 0xff, 0xa5, 0x19, 0x7f, + 0x19, 0x64, 0x2e, 0x00, 0xd0, 0x1d, 0x08, 0x60, + 0xd3, 0x08, 0x1e, 0x60, 0x88, 0x01, 0x23, 0xff, + 0x02, 0x1b, 0x40, 0x19, 0x78, 0x3a, 0x43, 0x11, + 0x80, 0x01, 0xe0, 0x06, 0x88, 0x21, 0x06, 0x09, + 0x0e, 0x09, 0x78, 0x3a, 0x02, 0x12, 0x43, 0x11, + 0x80, 0x21, 0x34, 0x01, 0x37, 0x01, 0x3e, 0x01, + 0xd1, 0xe9, 0xe0, 0x06, 0x9b, 0x01, 0x68, 0x1b, + 0x1c, 0x38, 0x1c, 0x21, 0x1c, 0x2a, 0xf0, 0x17, + 0xff, 0x83, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x00, 0x48, + 0xb5, 0x00, 0x20, 0x03, 0xf0, 0x03, 0xfb, 0xe2, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x4f, 0x10, + 0x89, 0x3c, 0x89, 0xbe, 0x8a, 0x3d, 0x23, 0x04, + 0x43, 0xdb, 0x68, 0x78, 0x40, 0x18, 0x0c, 0x1a, + 0x60, 0x78, 0xb4, 0x04, 0x1c, 0x13, 0x22, 0x00, + 0x21, 0x00, 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x14, + 0x20, 0x01, 0x60, 0x78, 0xb0, 0x01, 0x4a, 0x07, + 0xb4, 0x04, 0x1c, 0x20, 0x1c, 0x31, 0x1c, 0x2a, + 0x4b, 0x04, 0xf0, 0x00, 0xf8, 0x09, 0xb0, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xb5, 0xf0, 0x9f, 0x05, 0x04, 0x04, 0x0c, 0x24, + 0x04, 0x0d, 0x0c, 0x2d, 0x04, 0x16, 0x0c, 0x36, + 0x04, 0x19, 0x0c, 0x09, 0xb0, 0x82, 0x91, 0x00, + 0x04, 0x38, 0x0c, 0x00, 0xb0, 0x81, 0x49, 0x89, + 0x4f, 0x89, 0x42, 0x8d, 0xd1, 0x00, 0x89, 0xbd, + 0x42, 0x8e, 0xd1, 0x00, 0x8a, 0x3e, 0x4a, 0x87, + 0x42, 0x95, 0xd1, 0x02, 0x89, 0xbd, 0x08, 0xd3, + 0x81, 0xbb, 0x4b, 0x84, 0x42, 0x9e, 0xd1, 0x02, + 0x8a, 0x3e, 0x08, 0xdb, 0x82, 0x3b, 0x9a, 0x01, + 0x42, 0x8a, 0xd1, 0x01, 0x8a, 0xba, 0x92, 0x01, + 0x8a, 0xbb, 0x99, 0x01, 0x42, 0x99, 0xd0, 0x20, + 0x68, 0x38, 0x90, 0x02, 0x28, 0x00, 0xd0, 0x1a, + 0x2b, 0x00, 0xd0, 0x0a, 0x22, 0x00, 0x21, 0x00, + 0x20, 0x1c, 0xb4, 0x07, 0x1c, 0x19, 0x23, 0x10, + 0x22, 0x1d, 0x98, 0x05, 0xf0, 0x0a, 0xf8, 0x1c, + 0xb0, 0x03, 0x99, 0x01, 0x29, 0x00, 0xd0, 0x0a, + 0x22, 0x01, 0x21, 0x00, 0x20, 0x1c, 0xb4, 0x07, + 0x99, 0x04, 0x23, 0x10, 0x22, 0x1d, 0x68, 0x38, + 0xf0, 0x0a, 0xf8, 0x0e, 0xb0, 0x03, 0x99, 0x01, + 0x82, 0xb9, 0x4b, 0x6d, 0x42, 0x9c, 0xd0, 0x37, + 0xdc, 0x28, 0x2c, 0x00, 0xd0, 0x2e, 0x3b, 0x02, + 0x42, 0x9c, 0xd0, 0x29, 0x4b, 0x69, 0x42, 0x9c, + 0xd1, 0x00, 0x1c, 0x34, 0x22, 0x00, 0xb4, 0x04, + 0x23, 0x00, 0x49, 0x62, 0x20, 0x1c, 0xf0, 0x0a, + 0xf9, 0x95, 0x89, 0xb8, 0xb0, 0x01, 0x42, 0x85, + 0xd1, 0x02, 0x89, 0x38, 0x42, 0x84, 0xd0, 0x44, + 0x81, 0xbd, 0x20, 0x1f, 0xf0, 0x0a, 0xfc, 0xce, + 0x23, 0x03, 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, + 0x21, 0x02, 0x20, 0x1f, 0xf0, 0x0a, 0xfb, 0x46, + 0x2d, 0x00, 0xd0, 0x33, 0x2d, 0x01, 0xd1, 0x11, + 0x25, 0x00, 0xe0, 0x32, 0x4b, 0x55, 0x42, 0x9c, + 0xd0, 0x04, 0x33, 0x01, 0x42, 0x9c, 0xd1, 0xd9, + 0x89, 0x3c, 0xe7, 0xd7, 0x2d, 0x00, 0xd0, 0x01, + 0x1c, 0x2c, 0xe7, 0xd3, 0x1c, 0x34, 0xe7, 0xd1, + 0x1c, 0x2c, 0xe7, 0xcf, 0x42, 0xac, 0xd1, 0x01, + 0x20, 0x80, 0xe0, 0x00, 0x20, 0x00, 0x22, 0x00, + 0xb4, 0x04, 0x06, 0x00, 0x0e, 0x00, 0x22, 0x02, + 0x43, 0x02, 0x23, 0x01, 0x20, 0x1f, 0x1c, 0x29, + 0xf0, 0x0a, 0xf9, 0x5c, 0x23, 0x01, 0x02, 0x9b, + 0x00, 0x5a, 0x21, 0x01, 0x20, 0x1f, 0xb0, 0x01, + 0xf0, 0x0a, 0xfb, 0x18, 0x21, 0x00, 0x20, 0x1f, + 0xf0, 0x0b, 0xf8, 0x0a, 0x20, 0x01, 0xf0, 0x0d, + 0xfb, 0xf9, 0xe0, 0x02, 0x20, 0x00, 0xf0, 0x0d, + 0xfb, 0xf5, 0x8a, 0x38, 0x42, 0x86, 0xd1, 0x02, + 0x89, 0x39, 0x42, 0x8c, 0xd0, 0x52, 0x28, 0x00, + 0xd0, 0x0d, 0x20, 0x03, 0xf0, 0x0d, 0xfd, 0x4c, + 0x20, 0x1e, 0xf0, 0x0a, 0xfd, 0x49, 0x23, 0x03, + 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, 0x21, 0x02, + 0x20, 0x1e, 0xf0, 0x0a, 0xfa, 0xf7, 0x82, 0x3e, + 0x2e, 0x00, 0xd0, 0x3f, 0x42, 0xb4, 0xd1, 0x02, + 0x20, 0x80, 0x90, 0x00, 0xe0, 0x01, 0x20, 0x00, + 0x90, 0x00, 0xf0, 0x1b, 0xfd, 0xe7, 0x23, 0x01, + 0x04, 0x1b, 0x43, 0x18, 0xf0, 0x1b, 0xfd, 0xe6, + 0x21, 0x00, 0x20, 0x00, 0xf0, 0x0e, 0xfa, 0x2a, + 0x20, 0xff, 0x49, 0x29, 0x68, 0x09, 0x70, 0x08, + 0x49, 0x28, 0x48, 0x29, 0x23, 0x1e, 0x22, 0x10, + 0xf0, 0x0e, 0xfb, 0x5e, 0x48, 0x27, 0x68, 0x00, + 0x78, 0x01, 0x23, 0x06, 0x43, 0x19, 0x70, 0x01, + 0xf0, 0x1b, 0xfd, 0xcc, 0x4b, 0x24, 0x40, 0x18, + 0xf0, 0x1b, 0xfd, 0xcc, 0x22, 0x00, 0xb4, 0x04, + 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x22, 0x02, + 0x43, 0x02, 0x23, 0x02, 0x20, 0x1e, 0x1c, 0x31, + 0xf0, 0x0a, 0xf8, 0xfc, 0x23, 0x01, 0x02, 0x9b, + 0x00, 0x5a, 0x21, 0x01, 0x20, 0x1e, 0xb0, 0x01, + 0xf0, 0x0a, 0xfa, 0xb8, 0x21, 0x00, 0x20, 0x1e, + 0xf0, 0x0a, 0xff, 0xaa, 0x42, 0xac, 0xd0, 0x13, + 0x42, 0xb4, 0xd0, 0x11, 0x2c, 0x00, 0xd0, 0x0f, + 0x23, 0x01, 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x01, + 0x20, 0x1c, 0xf0, 0x0a, 0xfa, 0xa7, 0x22, 0x00, + 0xb4, 0x04, 0x23, 0x00, 0x22, 0x82, 0x20, 0x1c, + 0x1c, 0x21, 0xf0, 0x0a, 0xf8, 0xdb, 0xb0, 0x01, + 0x81, 0x3c, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, + 0x00, 0x00, 0xff, 0xfd, 0x00, 0x00, 0xff, 0xfc, + 0x2e, 0x08, 0x5e, 0x34, 0x2e, 0x08, 0x47, 0x68, + 0x2e, 0x08, 0x05, 0xb8, 0x2e, 0x08, 0x5e, 0x60, + 0xff, 0xfe, 0xff, 0xff, 0xb5, 0x00, 0x22, 0x00, + 0xb4, 0x04, 0x04, 0x01, 0x0c, 0x09, 0x23, 0x00, + 0x4a, 0x03, 0x1e, 0x50, 0xf7, 0xff, 0xfe, 0xc0, + 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xb5, 0x00, 0x22, 0x00, + 0xb4, 0x04, 0x04, 0x02, 0x0c, 0x12, 0x23, 0x00, + 0x49, 0x03, 0x1e, 0x48, 0xf7, 0xff, 0xfe, 0xb0, + 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xb5, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0xd0, 0x08, 0x28, 0x01, 0xd0, 0x0b, + 0x28, 0x02, 0xd1, 0x02, 0x02, 0x00, 0xf0, 0x0d, + 0xfc, 0xa3, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x80, + 0xf0, 0x0d, 0xfc, 0x9e, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0xff, 0x30, 0x01, 0xf0, 0x0d, 0xfc, 0x98, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xb0, 0x27, 0x00, + 0x4c, 0x1b, 0x20, 0x01, 0x04, 0x80, 0x21, 0x00, + 0x22, 0x00, 0xc4, 0x86, 0xc4, 0x84, 0x3c, 0x14, + 0xf0, 0x05, 0xf9, 0x40, 0x61, 0x60, 0x28, 0x00, + 0xd0, 0x06, 0x21, 0x01, 0x04, 0x89, 0x61, 0xe1, + 0x18, 0x41, 0x62, 0x20, 0x61, 0xa1, 0xe0, 0x02, + 0x61, 0xe7, 0x61, 0xa7, 0x62, 0x27, 0x68, 0x21, + 0x00, 0xc9, 0x4a, 0x10, 0x18, 0x89, 0x60, 0x48, + 0x20, 0x00, 0x49, 0x0f, 0x4d, 0x0f, 0x00, 0x42, + 0x52, 0x8d, 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, + 0x28, 0x1d, 0xdb, 0xf8, 0x20, 0x00, 0x1c, 0x39, + 0x4c, 0x0b, 0x4f, 0x0c, 0x4b, 0x0c, 0x00, 0x42, + 0x52, 0xa5, 0x00, 0x82, 0x50, 0xb9, 0x50, 0x99, + 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x28, 0x20, + 0xdb, 0xf5, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x00, 0x1c, 0x2e, 0x08, 0x3b, 0x78, + 0x2e, 0x08, 0x49, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x49, 0x38, 0x2e, 0x08, 0x49, 0xf0, + 0x2e, 0x08, 0x4a, 0x70, 0xb4, 0xf0, 0xb0, 0x81, + 0x49, 0x25, 0xc9, 0x0c, 0x39, 0x08, 0x1a, 0xd2, + 0x60, 0x8a, 0xd5, 0x02, 0x32, 0xff, 0x32, 0x01, + 0x60, 0x8a, 0x6a, 0x0a, 0x62, 0x8a, 0x68, 0x8f, + 0x2f, 0xfe, 0xdb, 0x03, 0x20, 0x00, 0xb0, 0x01, + 0xbc, 0xf0, 0x47, 0x70, 0x30, 0x03, 0x08, 0x80, + 0x00, 0x80, 0x4c, 0x1b, 0x69, 0xa6, 0x69, 0x64, + 0x2f, 0x3e, 0xdb, 0x24, 0x00, 0xdb, 0x4f, 0x19, + 0x19, 0xdb, 0x68, 0x5b, 0x62, 0x4b, 0x93, 0x00, + 0x1a, 0x9f, 0x4b, 0x15, 0x69, 0xdd, 0x2f, 0x00, + 0xdc, 0x00, 0x19, 0x7f, 0x23, 0x01, 0x03, 0x1b, + 0x18, 0xc3, 0x42, 0xbb, 0xdd, 0x0f, 0x18, 0x17, + 0x42, 0xb7, 0xdb, 0x09, 0x9a, 0x00, 0x1b, 0x12, + 0x2a, 0x00, 0xdc, 0x00, 0x19, 0x52, 0x42, 0x93, + 0xdd, 0x11, 0x18, 0x20, 0x62, 0x08, 0xe0, 0x0e, + 0x62, 0x0f, 0x1c, 0x14, 0xe0, 0x0b, 0x18, 0x10, + 0x62, 0x08, 0x1c, 0x14, 0xe0, 0x07, 0x18, 0x12, + 0x42, 0xb2, 0xdb, 0x00, 0x62, 0x0c, 0x6a, 0x0a, + 0x18, 0x10, 0x62, 0x08, 0x1c, 0x14, 0x1c, 0x20, + 0xb0, 0x01, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x00, 0x1c, 0x2e, 0x08, 0x3b, 0x78, + 0x48, 0x03, 0x6a, 0x81, 0x62, 0x01, 0x69, 0x01, + 0x31, 0x01, 0x61, 0x01, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x00, 0x1c, 0xb5, 0xf7, 0x04, 0x05, + 0x0c, 0x2d, 0x04, 0x0e, 0x0c, 0x36, 0xb0, 0x81, + 0x23, 0x01, 0x03, 0x1b, 0x98, 0x03, 0x42, 0x9e, + 0xdd, 0x05, 0x20, 0xff, 0xb0, 0x01, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x4f, 0x24, + 0x68, 0xb9, 0x29, 0xff, 0xdb, 0x02, 0x20, 0xff, + 0xb0, 0x01, 0xe7, 0xf4, 0x00, 0x69, 0x19, 0x49, + 0x00, 0x89, 0x4a, 0x20, 0x18, 0x8c, 0x89, 0x21, + 0x29, 0x01, 0xd0, 0x02, 0x20, 0xff, 0xb0, 0x01, + 0xe7, 0xe9, 0x79, 0x81, 0x91, 0x00, 0x88, 0xa0, + 0x08, 0x40, 0x07, 0x80, 0xd1, 0x02, 0x1c, 0x28, + 0xf0, 0x05, 0xfb, 0x98, 0x88, 0xa0, 0x23, 0x06, + 0x40, 0x18, 0x28, 0x02, 0xd1, 0x09, 0x88, 0xe0, + 0x99, 0x00, 0x42, 0x88, 0xd1, 0x05, 0x1c, 0x28, + 0xf0, 0x05, 0xfb, 0x8c, 0x20, 0xff, 0xb0, 0x01, + 0xe7, 0xd1, 0x88, 0xe0, 0x4b, 0x10, 0x42, 0x98, + 0xd1, 0x01, 0x99, 0x00, 0x80, 0xe1, 0x68, 0x39, + 0x00, 0xc8, 0x4a, 0x0e, 0x52, 0x15, 0x18, 0x80, + 0x80, 0x46, 0x9a, 0x03, 0x31, 0x01, 0x60, 0x42, + 0x20, 0x00, 0x23, 0xff, 0x60, 0x39, 0x33, 0x01, + 0x42, 0x99, 0xd1, 0x00, 0x60, 0x38, 0x68, 0xb9, + 0x31, 0x01, 0x60, 0xb9, 0x68, 0xfb, 0x42, 0x99, + 0xdd, 0x00, 0x60, 0xf9, 0xb0, 0x01, 0xe7, 0xb2, + 0x2e, 0x08, 0x00, 0x1c, 0x2e, 0x08, 0x47, 0x80, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x3b, 0x78, + 0xb5, 0xf0, 0x20, 0xff, 0xb0, 0x82, 0x49, 0x33, + 0x91, 0x01, 0x49, 0x33, 0x8e, 0x89, 0x29, 0x00, + 0xd0, 0x03, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x4f, 0x30, 0xcf, 0x0a, 0x3f, 0x08, + 0x1a, 0xc9, 0x60, 0xb9, 0x1c, 0x0a, 0xd5, 0x02, + 0x1d, 0xd1, 0x31, 0xf9, 0x60, 0xb9, 0x68, 0xb9, + 0x29, 0x00, 0xd1, 0x03, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0xda, 0x49, 0x28, + 0x5a, 0x8d, 0x18, 0x51, 0x88, 0x4c, 0x68, 0x49, + 0x91, 0x00, 0x00, 0xa9, 0x4a, 0x25, 0x58, 0x56, + 0x2e, 0x00, 0xd0, 0x07, 0x48, 0x24, 0x58, 0x43, + 0x99, 0x00, 0x1c, 0x28, 0x1c, 0x22, 0xf0, 0x17, + 0xfc, 0xb1, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x29, + 0x06, 0xed, 0x0e, 0xed, 0x1c, 0xe0, 0x08, 0x82, + 0x00, 0x92, 0x98, 0x00, 0x99, 0x01, 0x6a, 0xfb, + 0xf0, 0x17, 0xfc, 0x9e, 0x00, 0x68, 0x19, 0x40, + 0x00, 0x80, 0x49, 0x1a, 0x18, 0x40, 0x88, 0x80, + 0x21, 0x0c, 0x40, 0x01, 0x29, 0x0c, 0xd1, 0x04, + 0x02, 0x29, 0x31, 0x02, 0x04, 0x09, 0x0c, 0x09, + 0xe0, 0x03, 0x02, 0x29, 0x31, 0x01, 0x04, 0x09, + 0x0c, 0x09, 0x08, 0x40, 0xd3, 0x04, 0x04, 0x08, + 0x0c, 0x00, 0x21, 0x01, 0x03, 0xc9, 0x43, 0x01, + 0x48, 0x09, 0x85, 0x01, 0x85, 0x44, 0x21, 0x01, + 0x02, 0x49, 0x86, 0x81, 0x68, 0x78, 0x28, 0xff, + 0xd1, 0x02, 0x20, 0x00, 0x60, 0x78, 0xe0, 0x01, + 0x30, 0x01, 0x60, 0x78, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x02, 0x00, + 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x00, 0x1c, + 0x2e, 0x08, 0x3b, 0x78, 0x2e, 0x08, 0x49, 0xf0, + 0x2e, 0x08, 0x4a, 0x70, 0x2e, 0x08, 0x47, 0x80, + 0xb4, 0xf0, 0x06, 0x09, 0x0e, 0x09, 0x4f, 0x14, + 0x8e, 0xba, 0x2a, 0x00, 0xd0, 0x03, 0x20, 0x00, + 0x43, 0xc0, 0xbc, 0xf0, 0x47, 0x70, 0x1c, 0x05, + 0x4c, 0x10, 0x1d, 0x48, 0xd5, 0x00, 0x30, 0x01, + 0x10, 0x40, 0x04, 0x01, 0x0c, 0x09, 0x20, 0x00, + 0x29, 0x02, 0xdb, 0xf2, 0x29, 0xe0, 0xdc, 0xf0, + 0x22, 0x00, 0x29, 0x00, 0xdd, 0x07, 0x00, 0x53, + 0x5a, 0xee, 0x52, 0xe6, 0x32, 0x01, 0x04, 0x12, + 0x0c, 0x12, 0x42, 0x8a, 0xdb, 0xf7, 0x22, 0x04, + 0x85, 0x3a, 0x00, 0x49, 0x85, 0x79, 0x21, 0x0f, + 0x02, 0x49, 0x86, 0xb9, 0xbc, 0xf0, 0x47, 0x70, + 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x1e, 0x00, + 0xb5, 0xb0, 0x27, 0x00, 0x4d, 0x13, 0x8e, 0xa9, + 0x29, 0x00, 0xd0, 0x03, 0x43, 0xf8, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x79, 0x04, 0x09, + 0x0c, 0x09, 0x1c, 0x3a, 0x1c, 0x0f, 0x56, 0x81, + 0x29, 0x00, 0xd1, 0xf7, 0x24, 0x00, 0x2f, 0xfe, + 0xdd, 0x03, 0x27, 0xfe, 0x1d, 0xc1, 0x31, 0xd9, + 0x77, 0xcc, 0x1c, 0x7a, 0x49, 0x08, 0xf7, 0xff, + 0xfc, 0x03, 0x20, 0x04, 0x85, 0x28, 0x1c, 0xf8, + 0x08, 0x80, 0x00, 0x80, 0x85, 0x68, 0x20, 0x0f, + 0x02, 0x40, 0x86, 0xa8, 0x1c, 0x20, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x1f, 0xc0, + 0x2c, 0x00, 0x1e, 0x00, 0xb4, 0xf0, 0x4b, 0x1b, + 0x8e, 0x9b, 0x2b, 0x00, 0xd0, 0x03, 0x20, 0x00, + 0x43, 0xc0, 0xbc, 0xf0, 0x47, 0x70, 0x1c, 0xd4, + 0xd5, 0x00, 0x34, 0x01, 0x10, 0x64, 0x1c, 0x0d, + 0x4f, 0x15, 0x02, 0x00, 0x04, 0x00, 0x0c, 0x00, + 0x78, 0x4e, 0x0a, 0x33, 0xd3, 0x07, 0x06, 0x73, + 0x0e, 0x5b, 0x18, 0x59, 0x78, 0x89, 0x43, 0x08, + 0x04, 0x00, 0x0c, 0x00, 0xe0, 0x03, 0x78, 0x89, + 0x43, 0x08, 0x04, 0x00, 0x0c, 0x00, 0x80, 0x38, + 0x20, 0x00, 0x2c, 0x00, 0xdd, 0x06, 0x00, 0x41, + 0x5a, 0x6b, 0x19, 0xc9, 0x80, 0x4b, 0x30, 0x01, + 0x42, 0xa0, 0xdb, 0xf8, 0x20, 0x0b, 0x49, 0x05, + 0x85, 0x08, 0x1c, 0x90, 0x85, 0x48, 0x20, 0x01, + 0x02, 0x40, 0x86, 0x88, 0x20, 0x00, 0xbc, 0xf0, + 0x47, 0x70, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, + 0x2c, 0x00, 0x02, 0x00, 0x04, 0x02, 0x0c, 0x12, + 0x48, 0x0c, 0x6f, 0xc1, 0x20, 0x00, 0x43, 0xc0, + 0x29, 0x00, 0xd1, 0x12, 0x49, 0x0a, 0x8e, 0xcb, + 0x2b, 0x00, 0xd1, 0x0e, 0x8d, 0x8b, 0x2b, 0x00, + 0xd1, 0x0b, 0x48, 0x08, 0x86, 0xc2, 0x23, 0x07, + 0x86, 0x83, 0x85, 0x8b, 0x85, 0xca, 0x20, 0x09, + 0x02, 0x40, 0x86, 0xc8, 0x20, 0x01, 0x87, 0x88, + 0x20, 0x00, 0x47, 0x70, 0x2c, 0x00, 0x1f, 0x80, + 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x00, 0xc0, + 0xb5, 0x80, 0x1c, 0x01, 0x4a, 0x0d, 0x8e, 0xd3, + 0x20, 0x00, 0x43, 0xc0, 0x2b, 0x00, 0xd1, 0x12, + 0x8d, 0x93, 0x2b, 0x07, 0xd1, 0x0f, 0x8d, 0xd7, + 0x20, 0x00, 0x85, 0x90, 0x2f, 0x00, 0xd0, 0x0a, + 0x23, 0x01, 0x02, 0xdb, 0x42, 0x9f, 0xdc, 0x06, + 0x1c, 0x3a, 0x48, 0x05, 0x4b, 0x05, 0x6a, 0xdb, + 0xf0, 0x17, 0xfb, 0x8e, 0x1c, 0x38, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x1f, 0xc0, + 0x2c, 0x00, 0x12, 0x00, 0x2e, 0x08, 0x00, 0x1c, + 0xb5, 0xf0, 0xb0, 0x83, 0x49, 0x62, 0x8e, 0x88, + 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x4e, 0x5f, 0x78, 0x30, + 0x49, 0x5f, 0x91, 0x02, 0x78, 0x09, 0x42, 0x88, + 0xd1, 0x03, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x00, 0x4d, 0x5b, 0x4b, 0x5c, + 0x93, 0x01, 0x1d, 0xd9, 0x31, 0x19, 0x7d, 0x0a, + 0x00, 0x53, 0x18, 0x9b, 0x01, 0x1b, 0x19, 0x5b, + 0x78, 0xdc, 0x1c, 0x1f, 0x79, 0x1b, 0x42, 0x9c, + 0xd1, 0x04, 0x79, 0x7b, 0x07, 0xdb, 0x0f, 0xdb, + 0x2b, 0x01, 0xd1, 0x06, 0x7d, 0x0b, 0x93, 0x00, + 0x32, 0x01, 0x07, 0x52, 0x0f, 0x52, 0x75, 0x0a, + 0xe0, 0x08, 0x32, 0x01, 0x07, 0x52, 0x0f, 0x52, + 0x75, 0x0a, 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, + 0x28, 0x08, 0xdb, 0xe0, 0x28, 0x08, 0xd1, 0x03, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x98, 0x00, 0x00, 0x43, 0x18, 0x18, 0x01, 0x00, + 0x19, 0x47, 0x78, 0xf8, 0x00, 0xc0, 0x19, 0xc0, + 0x89, 0x84, 0x23, 0x01, 0x03, 0x1b, 0x42, 0x9c, + 0xdd, 0x00, 0x1c, 0x1c, 0x68, 0x81, 0x89, 0xc0, + 0x18, 0x08, 0x1c, 0xe1, 0x08, 0x8a, 0x00, 0x92, + 0x49, 0x3e, 0x9b, 0x01, 0x6a, 0xdb, 0xf0, 0x17, + 0xfb, 0x2b, 0x88, 0x38, 0x02, 0x00, 0x30, 0x09, + 0x49, 0x35, 0x85, 0x08, 0x85, 0x4c, 0x20, 0x01, + 0x02, 0x40, 0x86, 0x88, 0x78, 0xf8, 0x00, 0xc0, + 0x19, 0xc0, 0x89, 0xc1, 0x19, 0x09, 0x81, 0xc1, + 0x78, 0xf8, 0x00, 0xc0, 0x19, 0xc0, 0x89, 0x81, + 0x1b, 0x09, 0x81, 0x81, 0x78, 0xf8, 0x00, 0xc0, + 0x19, 0xc0, 0x89, 0x81, 0x29, 0x00, 0xd1, 0x4f, + 0x24, 0x00, 0x81, 0xc4, 0x78, 0xf9, 0x6a, 0xb8, + 0x18, 0x40, 0x73, 0x04, 0x78, 0xf8, 0x30, 0x01, + 0x07, 0x80, 0x0f, 0x80, 0x70, 0xf8, 0x78, 0x30, + 0x30, 0x01, 0x70, 0x30, 0x78, 0xf8, 0x79, 0x39, + 0x42, 0x88, 0xd1, 0x3d, 0x79, 0x78, 0x21, 0x02, + 0x40, 0x01, 0x29, 0x02, 0xd1, 0x1e, 0x70, 0xfc, + 0x71, 0x3c, 0x71, 0x7c, 0x49, 0x22, 0x80, 0x39, + 0x6a, 0xb8, 0x68, 0x00, 0xf0, 0x04, 0xfe, 0x7c, + 0x6a, 0xb8, 0xf0, 0x04, 0xfe, 0x79, 0x20, 0x00, + 0x49, 0x1d, 0x00, 0x42, 0x18, 0x12, 0x01, 0x12, + 0x5a, 0xaa, 0x42, 0x8a, 0xd1, 0x04, 0x30, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0x28, 0x08, 0xdb, 0xf4, + 0x28, 0x08, 0xd1, 0x1d, 0x70, 0x34, 0x99, 0x02, + 0x70, 0x0c, 0xe0, 0x19, 0x07, 0xc0, 0x0f, 0xc0, + 0x28, 0x01, 0xd1, 0x15, 0x70, 0xfc, 0x71, 0x3c, + 0x21, 0x06, 0x1d, 0xf8, 0x30, 0x19, 0x73, 0x41, + 0x6a, 0xb9, 0x72, 0x0c, 0x79, 0x79, 0x08, 0x49, + 0x00, 0x49, 0x71, 0x79, 0x22, 0x04, 0x7b, 0x01, + 0xb4, 0x06, 0x78, 0xb9, 0x22, 0x0a, 0x20, 0x85, + 0x6a, 0xbb, 0xf0, 0x09, 0xff, 0xb9, 0xb0, 0x02, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x03, 0xc0, + 0x2e, 0x08, 0x03, 0xbc, 0x2e, 0x08, 0x44, 0x70, + 0x2e, 0x08, 0x00, 0x1c, 0x2c, 0x00, 0x02, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xb5, 0x80, 0x4f, 0x0b, + 0x68, 0x38, 0x28, 0x00, 0xd1, 0x0f, 0x20, 0x2f, + 0x02, 0x80, 0xf0, 0x04, 0xfe, 0x57, 0x60, 0x38, + 0x20, 0x00, 0x49, 0x07, 0x60, 0x08, 0x49, 0x07, + 0x60, 0x08, 0x49, 0x07, 0x60, 0x08, 0x20, 0x2f, + 0x02, 0x80, 0x49, 0x06, 0x60, 0x08, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x02, 0x55, 0x30, + 0x2e, 0x02, 0x55, 0x38, 0x2e, 0x02, 0x55, 0x34, + 0x2e, 0x02, 0x55, 0x3c, 0x2e, 0x02, 0x55, 0x40, + 0xb5, 0x80, 0x4f, 0x04, 0x68, 0x38, 0xf0, 0x04, + 0xfe, 0x43, 0x20, 0x00, 0x60, 0x38, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x02, 0x55, 0x30, + 0xb5, 0xf0, 0xb0, 0x82, 0x4a, 0x34, 0x8e, 0x90, + 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x48, 0x31, 0x68, 0x01, + 0x4e, 0x31, 0x68, 0x30, 0x1a, 0x09, 0xd1, 0x03, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x29, 0x00, 0xda, 0x02, 0x23, 0x2f, 0x02, 0x9b, + 0x18, 0xc9, 0x23, 0x2f, 0x01, 0x1b, 0x42, 0x99, + 0xda, 0x03, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x4a, 0x25, 0x8e, 0xd2, 0x2a, 0x00, + 0xd0, 0x07, 0x23, 0xeb, 0x01, 0x1b, 0x42, 0x99, + 0xda, 0x03, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x1f, 0xcf, 0x3f, 0xff, 0x3f, 0x72, + 0x4b, 0x20, 0x42, 0x9f, 0xdd, 0x00, 0x1c, 0x1f, + 0x21, 0x2f, 0x02, 0x89, 0x1a, 0x0c, 0x4d, 0x1e, + 0x49, 0x1e, 0x91, 0x01, 0x42, 0xa7, 0xdd, 0x14, + 0x1b, 0x3a, 0x92, 0x00, 0x99, 0x01, 0x68, 0x09, + 0x18, 0x08, 0x1c, 0x22, 0x49, 0x1a, 0x6b, 0x2b, + 0xf0, 0x17, 0xfa, 0x3a, 0x4b, 0x18, 0x18, 0xe1, + 0x98, 0x01, 0x9a, 0x00, 0x68, 0x00, 0x6b, 0x2b, + 0xf0, 0x17, 0xfa, 0x32, 0x9a, 0x00, 0x60, 0x32, + 0xe0, 0x0e, 0x99, 0x01, 0x68, 0x09, 0x18, 0x08, + 0x1c, 0x3a, 0x49, 0x11, 0x6b, 0x2b, 0xf0, 0x17, + 0xfa, 0x27, 0x68, 0x30, 0x19, 0xc1, 0x20, 0x2f, + 0x02, 0x80, 0xf0, 0x17, 0xfa, 0x2b, 0x60, 0x31, + 0x20, 0x12, 0x4a, 0x05, 0x85, 0x10, 0x85, 0x57, + 0x20, 0x01, 0x02, 0x40, 0x86, 0x90, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x02, 0x55, 0x38, + 0x2e, 0x02, 0x55, 0x34, 0x00, 0x00, 0x0f, 0x6c, + 0x2e, 0x08, 0x00, 0x1c, 0x2e, 0x02, 0x55, 0x30, + 0x2c, 0x00, 0x02, 0x00, 0x2a, 0x00, 0xd0, 0x05, + 0x78, 0x03, 0x70, 0x0b, 0x30, 0x01, 0x31, 0x01, + 0x3a, 0x01, 0xd1, 0xf9, 0x47, 0x70, 0xb5, 0xf3, + 0xb0, 0x83, 0x98, 0x03, 0x78, 0x40, 0x00, 0x80, + 0x1c, 0x0f, 0x49, 0x3d, 0x58, 0x08, 0x28, 0x00, + 0xd1, 0x05, 0x20, 0xb0, 0xb0, 0x03, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x98, 0x03, + 0x88, 0x45, 0x30, 0x04, 0xc8, 0x41, 0x1d, 0xf2, + 0x32, 0xb9, 0x1a, 0x14, 0x23, 0x01, 0x03, 0x1b, + 0x42, 0x9d, 0xdd, 0x03, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x03, 0xe7, 0xec, 0x19, 0x79, 0x91, 0x00, + 0x4b, 0x30, 0x93, 0x02, 0x2c, 0xbc, 0xdc, 0x01, + 0x2c, 0x00, 0xda, 0x07, 0x9b, 0x02, 0x68, 0x18, + 0x30, 0x01, 0x60, 0x18, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x03, 0xe7, 0xdc, 0x42, 0xac, 0xdb, 0x06, + 0x9b, 0x02, 0x68, 0x5b, 0x1c, 0x39, 0x1c, 0x2a, + 0xf0, 0x17, 0xf9, 0xc6, 0xe0, 0x44, 0x2d, 0x00, + 0xdd, 0x42, 0x4b, 0x25, 0x93, 0x01, 0x99, 0x00, + 0x42, 0x8f, 0xd9, 0x07, 0x9b, 0x02, 0x68, 0x18, + 0x30, 0x01, 0x60, 0x18, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x03, 0xe7, 0xc4, 0x42, 0xa5, 0xdd, 0x07, + 0x9b, 0x02, 0x68, 0x5b, 0x1c, 0x39, 0x1c, 0x22, + 0xf0, 0x17, 0xf9, 0xae, 0x68, 0x36, 0xe0, 0x05, + 0x9b, 0x02, 0x68, 0x5b, 0x1c, 0x39, 0x1c, 0x2a, + 0xf0, 0x17, 0xf9, 0xa6, 0x19, 0x3f, 0x1b, 0x2d, + 0x79, 0xb0, 0x19, 0x80, 0x9a, 0x03, 0x78, 0x52, + 0x00, 0xd3, 0x1a, 0x9a, 0x00, 0x92, 0x9b, 0x01, + 0x68, 0x1b, 0x18, 0xd2, 0x78, 0x92, 0x06, 0xd2, + 0x0e, 0xd2, 0x1d, 0x31, 0x2a, 0x12, 0xd1, 0x06, + 0x78, 0xca, 0x0a, 0x12, 0xd2, 0x03, 0x78, 0x89, + 0x29, 0x09, 0xd1, 0x00, 0x38, 0x01, 0x1d, 0xf1, + 0x31, 0xb9, 0x1a, 0x0c, 0x2c, 0xbc, 0xdc, 0x01, + 0x2c, 0x00, 0xda, 0x03, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x03, 0xe7, 0x90, 0x2d, 0x00, 0xdc, 0xbe, + 0x20, 0x00, 0xb0, 0x03, 0xe7, 0x8b, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x64, 0x2e, 0x08, 0x00, 0x58, + 0x2e, 0x08, 0x5d, 0xcc, 0xb4, 0xf0, 0x68, 0x42, + 0x68, 0x84, 0x1d, 0xe1, 0x31, 0xb7, 0x1c, 0x16, + 0xb0, 0x81, 0x42, 0x91, 0xd9, 0x09, 0x78, 0x51, + 0x07, 0x09, 0x0f, 0x09, 0x02, 0x09, 0x78, 0x92, + 0x43, 0x11, 0x31, 0x03, 0x04, 0x09, 0x0c, 0x09, + 0xe0, 0x5b, 0x68, 0x21, 0x79, 0x8b, 0x93, 0x00, + 0x1d, 0x0f, 0x18, 0x59, 0x78, 0x45, 0x00, 0xeb, + 0x1b, 0x5b, 0x00, 0x9b, 0x4d, 0x2b, 0x68, 0x2d, + 0x19, 0x5b, 0x78, 0x9b, 0x06, 0xdb, 0x0e, 0xdb, + 0x2b, 0x12, 0xd1, 0x31, 0x1d, 0xe3, 0x33, 0xb9, + 0x1b, 0x9b, 0x06, 0x1d, 0x0e, 0x2d, 0x78, 0xfe, + 0x0a, 0x33, 0xd2, 0x29, 0x2d, 0x0e, 0xda, 0x27, + 0x9b, 0x00, 0x2b, 0x09, 0xdd, 0x06, 0x79, 0x3b, + 0x18, 0xfb, 0x33, 0x05, 0x42, 0x8b, 0xd0, 0x1f, + 0x39, 0x01, 0xe0, 0x1d, 0x9b, 0x00, 0x2b, 0x09, + 0xd1, 0x1a, 0x79, 0x3b, 0x2b, 0x00, 0xd0, 0x01, + 0x39, 0x01, 0xe0, 0x15, 0x39, 0x01, 0x1d, 0xe3, + 0x33, 0xb8, 0x42, 0x93, 0xd9, 0x09, 0x78, 0x53, + 0x07, 0x1b, 0x0f, 0x1b, 0x02, 0x1b, 0x04, 0x1b, + 0x0c, 0x1b, 0x33, 0x03, 0x04, 0x1b, 0x0c, 0x1b, + 0xe0, 0x03, 0x78, 0x4b, 0x33, 0x03, 0x04, 0x1b, + 0x0c, 0x1b, 0x42, 0x9d, 0xda, 0x00, 0x31, 0x01, + 0x1d, 0xe3, 0x33, 0xb8, 0x42, 0x93, 0xd9, 0x0b, + 0x78, 0x52, 0x07, 0x12, 0x0f, 0x12, 0x02, 0x12, + 0x04, 0x12, 0x0c, 0x12, 0x78, 0x09, 0x18, 0x51, + 0x31, 0x03, 0x04, 0x09, 0x0c, 0x09, 0xe0, 0x08, + 0x78, 0x0a, 0x07, 0x12, 0x0f, 0x12, 0x02, 0x12, + 0x78, 0x49, 0x43, 0x11, 0x31, 0x03, 0x04, 0x09, + 0x0c, 0x09, 0x80, 0x41, 0xb0, 0x01, 0xbc, 0xf0, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x5d, 0xcc, + 0x4a, 0x02, 0xc2, 0x03, 0x3a, 0x08, 0x20, 0x00, + 0x60, 0x90, 0x47, 0x70, 0x2e, 0x08, 0x43, 0x78, + 0x48, 0x01, 0x68, 0x80, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x43, 0x78, 0x48, 0x01, 0x68, 0x80, + 0x08, 0xc0, 0x47, 0x70, 0x2e, 0x08, 0x43, 0x78, + 0x48, 0x02, 0x68, 0x81, 0x08, 0xc9, 0x68, 0x00, + 0x18, 0x08, 0x47, 0x70, 0x2e, 0x08, 0x43, 0x78, + 0xb4, 0xf0, 0x1c, 0x03, 0x20, 0x00, 0xb0, 0x82, + 0x49, 0x53, 0x91, 0x01, 0x68, 0x89, 0x18, 0xcf, + 0x97, 0x00, 0x08, 0xca, 0x07, 0x4c, 0x0f, 0x64, + 0x49, 0x4f, 0x68, 0x09, 0xd1, 0x32, 0x1c, 0x1f, + 0xd5, 0x04, 0x42, 0x7f, 0x07, 0x7f, 0x0f, 0x7f, + 0x42, 0x7f, 0xe0, 0x01, 0x07, 0x7f, 0x0f, 0x7f, + 0x2f, 0x00, 0xd1, 0x27, 0x2b, 0x10, 0xd0, 0x16, + 0xdc, 0x05, 0x2b, 0x00, 0xd0, 0x5a, 0x2b, 0x08, + 0xd1, 0x59, 0x5c, 0x88, 0xe0, 0x81, 0x2b, 0x18, + 0xd0, 0x13, 0x2b, 0x20, 0xd1, 0x53, 0x5c, 0x88, + 0x06, 0x00, 0x18, 0x89, 0x78, 0x4a, 0x04, 0x12, + 0x18, 0x80, 0x78, 0x8a, 0x02, 0x12, 0x18, 0x80, + 0x78, 0xc9, 0x18, 0x40, 0xe0, 0x71, 0x5c, 0x88, + 0x02, 0x00, 0x18, 0x89, 0x78, 0x49, 0x18, 0x40, + 0xe0, 0x6b, 0x5c, 0x88, 0x04, 0x00, 0x18, 0x89, + 0x78, 0x4a, 0x02, 0x12, 0x18, 0x80, 0x78, 0x89, + 0x18, 0x40, 0xe0, 0x62, 0x2b, 0x00, 0xd1, 0x03, + 0x20, 0x00, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, + 0x9f, 0x00, 0x08, 0xfd, 0x07, 0x7f, 0x0f, 0x7f, + 0x2b, 0x20, 0xdc, 0x56, 0x1a, 0xae, 0x4d, 0x2f, + 0x2e, 0x05, 0xd2, 0x52, 0xa3, 0x01, 0x5d, 0x9b, + 0x00, 0x5b, 0x44, 0x9f, 0x02, 0x09, 0x14, 0x25, + 0x38, 0x00, 0x5c, 0x88, 0x5d, 0x29, 0x40, 0x08, + 0x21, 0x08, 0x1b, 0xc9, 0x40, 0xc8, 0xe0, 0x44, + 0x1c, 0x50, 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, + 0x02, 0x12, 0x5c, 0x08, 0x18, 0x80, 0x21, 0x08, + 0x1b, 0xc9, 0x40, 0xc8, 0xe0, 0x39, 0x1c, 0x50, + 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, 0x02, 0x12, + 0x1c, 0x43, 0x5c, 0x08, 0x18, 0x80, 0x02, 0x00, + 0x5c, 0xc9, 0x18, 0x08, 0x21, 0x08, 0x1b, 0xc9, + 0x40, 0xc8, 0xe0, 0x2a, 0xe0, 0x29, 0xe0, 0x28, + 0x1c, 0x50, 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, + 0x02, 0x12, 0x1c, 0x43, 0x5c, 0x08, 0x18, 0x80, + 0x02, 0x00, 0x1c, 0x5a, 0x5c, 0xcb, 0x18, 0x18, + 0x02, 0x00, 0x5c, 0x89, 0x18, 0x08, 0x21, 0x08, + 0x1b, 0xc9, 0x40, 0xc8, 0xe0, 0x15, 0x1c, 0x50, + 0x5c, 0x8a, 0x5d, 0x2b, 0x40, 0x1a, 0x02, 0x12, + 0x1c, 0x43, 0x5c, 0x08, 0x18, 0x80, 0x02, 0x00, + 0x1c, 0x5a, 0x5c, 0xcb, 0x18, 0x18, 0x02, 0x03, + 0x1c, 0x50, 0x5c, 0x8a, 0x18, 0xd2, 0x40, 0xba, + 0x5c, 0x08, 0x21, 0x08, 0x1b, 0xc9, 0x40, 0xc8, + 0x18, 0x80, 0x99, 0x01, 0x9f, 0x00, 0x60, 0x8f, + 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x43, 0x78, 0x2e, 0x08, 0x00, 0x60, + 0xb5, 0xb0, 0x1c, 0x07, 0x20, 0x00, 0x24, 0x00, + 0x2f, 0x00, 0xdd, 0x09, 0x00, 0x85, 0x18, 0x2d, + 0x00, 0x6d, 0x20, 0x04, 0xf7, 0xff, 0xff, 0x44, + 0x19, 0x40, 0x34, 0x01, 0x42, 0xbc, 0xdb, 0xf5, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x47, 0x70, 0xb5, 0xb0, 0x1c, 0x0c, 0x1c, 0x05, + 0x1c, 0x17, 0xb0, 0x90, 0xf0, 0x1a, 0xff, 0xba, + 0x49, 0x25, 0x20, 0x0c, 0xf0, 0x1a, 0xff, 0x82, + 0xf0, 0x1a, 0xff, 0x78, 0x4b, 0x23, 0x40, 0x18, + 0xf0, 0x1a, 0xff, 0x78, 0xf0, 0x1a, 0xff, 0xe4, + 0x20, 0x10, 0x90, 0x0a, 0x20, 0xff, 0x90, 0x0b, + 0xa8, 0x0f, 0x90, 0x0c, 0x20, 0x0c, 0x90, 0x0d, + 0x48, 0x1d, 0x90, 0x0e, 0xa8, 0x0a, 0xf0, 0x0e, + 0xfd, 0x9b, 0xab, 0x07, 0x70, 0x1d, 0x94, 0x08, + 0x72, 0x1f, 0x24, 0x00, 0xab, 0x09, 0x70, 0x5c, + 0x27, 0x00, 0x4d, 0x18, 0xf0, 0x0e, 0xfd, 0xfc, + 0x28, 0x00, 0xd0, 0x02, 0x37, 0x01, 0x42, 0xaf, + 0xdb, 0xf8, 0x20, 0x01, 0xa9, 0x07, 0xf0, 0x0e, + 0xfd, 0xfd, 0xf0, 0x0e, 0xfd, 0xf1, 0x28, 0x00, + 0xd1, 0xfb, 0x94, 0x0b, 0xa8, 0x0a, 0xf0, 0x0e, + 0xfd, 0x7f, 0xf0, 0x1a, 0xff, 0x83, 0x21, 0x00, + 0x20, 0x0c, 0xf0, 0x1a, 0xff, 0x4b, 0xf0, 0x1a, + 0xff, 0x41, 0x23, 0x01, 0x02, 0xdb, 0x43, 0x18, + 0xf0, 0x1a, 0xff, 0x40, 0xf0, 0x1a, 0xff, 0xac, + 0x46, 0x68, 0xf0, 0x0e, 0xfd, 0xb9, 0x98, 0x04, + 0xb0, 0x10, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x00, 0x14, 0x9d, 0xff, 0xff, 0xf7, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x27, 0x10, + 0xb5, 0xff, 0x9e, 0x09, 0x1c, 0x04, 0x1c, 0x0d, + 0x1c, 0x17, 0xb0, 0x93, 0xf0, 0x1a, 0xff, 0x5e, + 0x49, 0x31, 0x20, 0x0c, 0xf0, 0x1a, 0xff, 0x26, + 0xf0, 0x1a, 0xff, 0x1c, 0x4b, 0x2f, 0x40, 0x18, + 0xf0, 0x1a, 0xff, 0x1c, 0xf0, 0x1a, 0xff, 0x88, + 0x20, 0x10, 0x90, 0x0d, 0x20, 0xff, 0x90, 0x0e, + 0xa8, 0x12, 0x90, 0x0f, 0x20, 0x0c, 0x90, 0x10, + 0x48, 0x29, 0x90, 0x11, 0xa8, 0x0d, 0xf0, 0x0e, + 0xfd, 0x3f, 0xab, 0x07, 0x70, 0x1c, 0x95, 0x08, + 0x72, 0x1f, 0x20, 0xff, 0xab, 0x09, 0x70, 0x58, + 0x1c, 0x60, 0x71, 0x18, 0x9b, 0x16, 0x93, 0x0b, + 0xab, 0x0c, 0x70, 0x1e, 0x20, 0xff, 0x70, 0x58, + 0x24, 0x00, 0x4d, 0x20, 0xf0, 0x0e, 0xfd, 0x98, + 0x28, 0x00, 0xd0, 0x02, 0x34, 0x01, 0x42, 0xac, + 0xdb, 0xf8, 0x2f, 0x00, 0xd1, 0x04, 0x20, 0x01, + 0xa9, 0x0a, 0xf0, 0x0e, 0xfd, 0x97, 0xe0, 0x03, + 0x20, 0x02, 0xa9, 0x07, 0xf0, 0x0e, 0xfd, 0x92, + 0xf0, 0x0e, 0xfd, 0x86, 0x28, 0x00, 0xd1, 0xfb, + 0x27, 0x00, 0x97, 0x0e, 0xa8, 0x0d, 0xf0, 0x0e, + 0xfd, 0x13, 0xf0, 0x1a, 0xff, 0x17, 0x21, 0x00, + 0x20, 0x0c, 0xf0, 0x1a, 0xfe, 0xdf, 0xf0, 0x1a, + 0xfe, 0xd5, 0x23, 0x01, 0x02, 0xdb, 0x43, 0x18, + 0xf0, 0x1a, 0xfe, 0xd4, 0xf0, 0x1a, 0xff, 0x40, + 0x46, 0x68, 0xf0, 0x0e, 0xfd, 0x4d, 0x98, 0x01, + 0x0a, 0x80, 0xd2, 0x05, 0x20, 0x01, 0xb0, 0x13, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x1c, 0x38, 0xb0, 0x13, 0xe7, 0xf8, 0x00, 0x00, + 0x2e, 0x00, 0x14, 0x9d, 0xff, 0xff, 0xf7, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x27, 0x10, + 0x1c, 0x01, 0x48, 0x04, 0x61, 0xc1, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x01, 0x48, 0x02, 0x60, 0x01, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x68, + 0x6e, 0x00, 0x17, 0x00, 0xb5, 0xb0, 0x4f, 0x41, + 0x69, 0x38, 0x4c, 0x41, 0x28, 0x00, 0xd0, 0x07, + 0x20, 0x03, 0x60, 0x20, 0x69, 0x38, 0x38, 0x01, + 0x61, 0x38, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x21, 0x02, 0x69, 0x78, 0x28, 0x00, 0xd0, 0x04, + 0x60, 0x21, 0x69, 0x78, 0x38, 0x01, 0x61, 0x78, + 0xd1, 0xf3, 0x68, 0xf8, 0x28, 0x00, 0xd0, 0x20, + 0x38, 0x01, 0x60, 0xf8, 0x4a, 0x35, 0xd0, 0x08, + 0x68, 0xbb, 0x18, 0xd2, 0x3a, 0x20, 0x7f, 0xd2, + 0x1e, 0x45, 0x40, 0xea, 0x07, 0xd2, 0x0f, 0xd2, + 0xe0, 0x09, 0x68, 0xbb, 0x18, 0xd2, 0x3a, 0x20, + 0x7f, 0xd2, 0x4b, 0x2f, 0x5c, 0x9a, 0x23, 0x01, + 0x40, 0x5a, 0x06, 0x12, 0x0e, 0x12, 0x23, 0x01, + 0x2a, 0x00, 0xd0, 0x02, 0x61, 0x79, 0x61, 0x3b, + 0xe0, 0x01, 0x61, 0x39, 0x61, 0x7b, 0x28, 0x00, + 0xd1, 0xcf, 0x68, 0xb8, 0x30, 0x01, 0x60, 0xb8, + 0x23, 0x09, 0x68, 0x7a, 0x1c, 0x01, 0x42, 0x90, + 0xdc, 0x03, 0x60, 0xfb, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x20, 0x1c, 0x55, 0x42, 0x8d, + 0xd1, 0x03, 0x61, 0x78, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x1c, 0x95, 0x42, 0x8d, 0xd1, 0x0d, + 0x7e, 0x3d, 0x2d, 0xff, 0xd0, 0x0a, 0x2d, 0x00, + 0xd0, 0x03, 0x60, 0xfb, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x19, 0x61, 0x38, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x32, 0x03, 0x42, 0x8a, + 0xd1, 0x04, 0x20, 0x22, 0x61, 0x78, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x69, 0xf9, 0x60, 0x21, + 0x68, 0x79, 0x68, 0xba, 0x31, 0x04, 0x42, 0x91, + 0xd1, 0x0a, 0x69, 0xf9, 0x29, 0x00, 0xd0, 0x03, + 0x61, 0x38, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x61, 0x78, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0xf0, 0x04, 0xf8, 0x90, 0x20, 0x00, 0x60, 0x38, + 0x69, 0xf8, 0x60, 0x20, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x68, + 0x6e, 0x00, 0x17, 0x00, 0x2e, 0x08, 0x43, 0x84, + 0x2e, 0x08, 0x00, 0x68, 0xb5, 0xb0, 0x04, 0x0b, + 0x0c, 0x1b, 0x04, 0x14, 0x0c, 0x24, 0x49, 0x14, + 0x68, 0x0a, 0x2a, 0x00, 0xd0, 0x02, 0x68, 0x0a, + 0x2a, 0x00, 0xd1, 0xfc, 0x22, 0x01, 0x60, 0x0a, + 0x2b, 0x0a, 0xdd, 0x00, 0x23, 0x0a, 0x22, 0x00, + 0x4f, 0x0e, 0x2b, 0x00, 0xdd, 0x05, 0x00, 0x55, + 0x5b, 0x45, 0x54, 0xbd, 0x32, 0x01, 0x42, 0x9a, + 0xdb, 0xf9, 0x76, 0x0c, 0x20, 0xff, 0x18, 0xfa, + 0x70, 0x50, 0x20, 0x00, 0x60, 0x4b, 0x22, 0x20, + 0x61, 0x08, 0x61, 0x4a, 0x60, 0x88, 0x60, 0xc8, + 0x49, 0x05, 0x20, 0x32, 0xf0, 0x04, 0xf8, 0x2c, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x01, 0x68, 0x2e, 0x08, 0x43, 0x84, + 0x2e, 0x00, 0x16, 0x59, 0xb5, 0x80, 0x04, 0x01, + 0x0c, 0x09, 0x20, 0x00, 0x22, 0x00, 0xb0, 0x88, + 0x00, 0x47, 0x46, 0x6b, 0x53, 0xda, 0x30, 0x01, + 0x04, 0x00, 0x14, 0x00, 0x28, 0x10, 0xdb, 0xf7, + 0x22, 0x80, 0x00, 0x43, 0x46, 0x68, 0x52, 0xc2, + 0x46, 0x6a, 0x1c, 0x08, 0x21, 0x05, 0xf0, 0x04, + 0xfa, 0xf9, 0x49, 0x06, 0x80, 0x88, 0x00, 0x42, + 0x18, 0x12, 0x00, 0x92, 0x4b, 0x04, 0x5a, 0x9a, + 0x81, 0x0a, 0xb0, 0x08, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x88, + 0x2e, 0x08, 0x47, 0x80, 0xb5, 0xf0, 0xb0, 0xb3, + 0xa8, 0x01, 0xf0, 0x0f, 0xfa, 0x8f, 0x48, 0x51, + 0x68, 0x06, 0x68, 0x45, 0x68, 0x84, 0x68, 0xc7, + 0x69, 0x00, 0x90, 0x00, 0x1c, 0x30, 0x1c, 0x29, + 0x1c, 0x3a, 0xf0, 0x00, 0xfa, 0x9b, 0x1c, 0x20, + 0xf0, 0x00, 0xfb, 0xb6, 0xa0, 0x4a, 0x22, 0x00, + 0x21, 0x11, 0xf0, 0x04, 0xff, 0xc5, 0x22, 0x0a, + 0x21, 0x11, 0x98, 0x1b, 0xf0, 0x05, 0xf8, 0x22, + 0x22, 0x14, 0x21, 0x11, 0x1c, 0x30, 0xf0, 0x05, + 0xf8, 0x1d, 0x22, 0x1e, 0x21, 0x11, 0x1c, 0x28, + 0xf0, 0x05, 0xf8, 0x18, 0x22, 0x28, 0x21, 0x11, + 0x1c, 0x20, 0xf0, 0x05, 0xf8, 0x13, 0x22, 0x32, + 0x21, 0x11, 0x1c, 0x38, 0xf0, 0x05, 0xf8, 0x0e, + 0x22, 0x3c, 0x21, 0x11, 0x98, 0x00, 0xf0, 0x05, + 0xf8, 0x09, 0xa0, 0x3b, 0x22, 0x00, 0x21, 0x13, + 0xf0, 0x04, 0xff, 0xa2, 0x22, 0x0a, 0x21, 0x13, + 0x4f, 0x39, 0x8d, 0x78, 0xf0, 0x04, 0xff, 0xfe, + 0xa0, 0x38, 0x22, 0x14, 0x21, 0x13, 0xf0, 0x04, + 0xff, 0x97, 0x22, 0x1e, 0x21, 0x13, 0x8d, 0xf8, + 0xf0, 0x04, 0xff, 0xf4, 0xa0, 0x35, 0x22, 0x00, + 0x21, 0x14, 0xf0, 0x04, 0xff, 0x8d, 0x22, 0x0a, + 0x21, 0x14, 0x8e, 0xb8, 0xf0, 0x04, 0xff, 0xea, + 0xa0, 0x32, 0x22, 0x14, 0x21, 0x14, 0xf0, 0x04, + 0xff, 0x83, 0x22, 0x1e, 0x21, 0x14, 0x8e, 0xf8, + 0xf0, 0x04, 0xff, 0xe0, 0xa0, 0x2f, 0x22, 0x28, + 0x21, 0x14, 0xf0, 0x04, 0xff, 0x79, 0x22, 0x32, + 0x21, 0x14, 0x48, 0x2f, 0x6f, 0xc0, 0xf0, 0x04, + 0xff, 0xd5, 0xa0, 0x2e, 0x22, 0x00, 0x21, 0x15, + 0xf0, 0x04, 0xff, 0x6e, 0x22, 0x0a, 0x21, 0x15, + 0x8d, 0x38, 0xf0, 0x04, 0xff, 0xcb, 0xa0, 0x2c, + 0x22, 0x14, 0x21, 0x15, 0xf0, 0x04, 0xff, 0x64, + 0x22, 0x1e, 0x21, 0x15, 0x8d, 0xb8, 0xf0, 0x04, + 0xff, 0xc1, 0xa0, 0x2a, 0x22, 0x00, 0x21, 0x10, + 0xf0, 0x04, 0xff, 0x5a, 0xf0, 0x0f, 0xfb, 0xd8, + 0x22, 0x0a, 0x21, 0x10, 0xf0, 0x04, 0xff, 0xb6, + 0xa0, 0x26, 0x22, 0x14, 0x21, 0x10, 0xf0, 0x04, + 0xff, 0x4f, 0x22, 0x1e, 0x21, 0x10, 0x27, 0x33, + 0x06, 0x7f, 0x6d, 0x78, 0xf0, 0x04, 0xff, 0xaa, + 0xa0, 0x22, 0x22, 0x28, 0x21, 0x10, 0xf0, 0x04, + 0xff, 0x43, 0xf0, 0x0f, 0xfb, 0xc1, 0x6d, 0x79, + 0x1a, 0x08, 0x22, 0x32, 0x21, 0x10, 0xf0, 0x04, + 0xff, 0x9d, 0xb0, 0x33, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0xcc, 0x00, 0x0c, 0x00, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x3a, 0x00, 0x00, + 0x72, 0x78, 0x6c, 0x65, 0x6e, 0x3a, 0x00, 0x00, + 0x2c, 0x00, 0x1f, 0xc0, 0x74, 0x78, 0x6c, 0x65, + 0x6e, 0x3a, 0x00, 0x00, 0x72, 0x78, 0x62, 0x75, + 0x66, 0x66, 0x3a, 0x00, 0x74, 0x78, 0x62, 0x75, + 0x66, 0x66, 0x3a, 0x00, 0x69, 0x66, 0x5f, 0x75, + 0x73, 0x65, 0x64, 0x3a, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x1f, 0x80, 0x72, 0x78, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x3a, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x78, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3a, + 0x00, 0x00, 0x00, 0x00, 0x65, 0x6e, 0x64, 0x63, + 0x75, 0x72, 0x3a, 0x00, 0x76, 0x69, 0x64, 0x62, + 0x75, 0x66, 0x3a, 0x00, 0x6f, 0x73, 0x64, 0x3a, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x06, 0x00, + 0x0e, 0x00, 0x06, 0x09, 0x0e, 0x09, 0xf0, 0x09, + 0xfe, 0xa1, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, + 0x06, 0x00, 0x0e, 0x00, 0x06, 0x09, 0x0e, 0x09, + 0x4b, 0x04, 0x68, 0x1b, 0x06, 0x1b, 0x0e, 0x1b, + 0x2b, 0x30, 0xd3, 0x01, 0xf0, 0x09, 0xfe, 0x92, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xc0, + 0xb5, 0xf0, 0x25, 0x00, 0x4e, 0x1a, 0x4c, 0x1b, + 0x4f, 0x1b, 0x68, 0x30, 0x68, 0x00, 0x00, 0x40, + 0x0a, 0x40, 0x02, 0x40, 0x21, 0x19, 0x06, 0x89, + 0x6a, 0x89, 0x4b, 0x18, 0x40, 0x19, 0x0a, 0x49, + 0x43, 0x08, 0x49, 0x17, 0x64, 0x08, 0xf0, 0x01, + 0xfc, 0x65, 0xf0, 0x02, 0xf9, 0x4d, 0x68, 0x38, + 0x30, 0x01, 0x60, 0x38, 0x48, 0x13, 0x88, 0x01, + 0x31, 0x01, 0x80, 0x01, 0x20, 0x0c, 0x68, 0x21, + 0xf0, 0x16, 0xfd, 0x6a, 0x29, 0x00, 0xd1, 0x01, + 0xf7, 0xff, 0xfe, 0xe0, 0x20, 0x32, 0x68, 0x21, + 0xf0, 0x16, 0xfd, 0x62, 0x4b, 0x0c, 0x42, 0x98, + 0xd9, 0x01, 0x49, 0x0c, 0x60, 0xf9, 0x42, 0x85, + 0xd0, 0xd3, 0x1c, 0x05, 0xf0, 0x00, 0xfe, 0x42, + 0x20, 0x00, 0x60, 0x38, 0xe7, 0xcd, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x40, 0x2e, 0x08, 0x05, 0xc0, + 0x2e, 0x08, 0x01, 0x88, 0x00, 0x03, 0xfe, 0x00, + 0x2c, 0x00, 0x1f, 0x80, 0x2c, 0x00, 0x1f, 0xc8, + 0x00, 0x00, 0x05, 0x46, 0x2e, 0x00, 0x19, 0xfb, + 0xb5, 0xf0, 0x27, 0x00, 0xb0, 0x94, 0x46, 0x68, + 0x4c, 0x2f, 0xcc, 0x6e, 0xc0, 0x6e, 0xcc, 0x6e, + 0xc0, 0x6e, 0x23, 0x28, 0x22, 0x41, 0x00, 0xd2, + 0x21, 0x00, 0x20, 0x01, 0xf0, 0x07, 0xfe, 0xd8, + 0x22, 0xff, 0x21, 0x64, 0x20, 0x01, 0x32, 0xf5, + 0xf0, 0x07, 0xff, 0x9a, 0x20, 0x00, 0x46, 0x69, + 0x5c, 0x09, 0x40, 0x41, 0x23, 0x35, 0x40, 0x59, + 0xaa, 0x0a, 0x54, 0x11, 0x30, 0x01, 0x28, 0x25, + 0xdb, 0xf5, 0x24, 0x00, 0xa9, 0x0a, 0x54, 0x0c, + 0x22, 0x00, 0x20, 0x01, 0x1c, 0x23, 0xf0, 0x08, + 0xf9, 0xf8, 0x4e, 0x1e, 0x4d, 0x1e, 0x4c, 0x1f, + 0xf0, 0x03, 0xff, 0x66, 0xf0, 0x03, 0xff, 0x64, + 0x28, 0x28, 0xd9, 0x10, 0x42, 0xb0, 0xd3, 0x0e, + 0x69, 0xe9, 0x08, 0xc9, 0xd3, 0x0b, 0x4b, 0x1a, + 0x18, 0xc1, 0x20, 0x1e, 0xf0, 0x16, 0xfd, 0x08, + 0x21, 0x64, 0x1d, 0xc2, 0x32, 0xff, 0x32, 0xee, + 0x20, 0x01, 0xf0, 0x07, 0xff, 0x6d, 0xf0, 0x01, + 0xfb, 0xed, 0xf0, 0x02, 0xf8, 0xd5, 0xf0, 0x03, + 0xff, 0x4b, 0x1c, 0x01, 0x20, 0x7d, 0x00, 0xc0, + 0xf0, 0x16, 0xfc, 0xf6, 0x1c, 0x01, 0x48, 0x0f, + 0x88, 0x02, 0x32, 0x01, 0x80, 0x02, 0x42, 0xb9, + 0xd0, 0xd6, 0x2f, 0x04, 0xd3, 0x06, 0x20, 0x01, + 0xf0, 0x07, 0xfe, 0x76, 0xb0, 0x14, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x0f, 0xf0, 0x00, + 0xfd, 0xcd, 0x20, 0x00, 0x60, 0x20, 0xe7, 0xc7, + 0x2e, 0x02, 0x56, 0xa0, 0x00, 0x00, 0x0b, 0xb8, + 0x72, 0x00, 0x01, 0x00, 0x2e, 0x08, 0x01, 0x88, + 0xff, 0xff, 0xf4, 0x48, 0x2c, 0x00, 0x1f, 0xc8, + 0xb5, 0x80, 0x27, 0x00, 0x48, 0x09, 0x81, 0x07, + 0x48, 0x09, 0x49, 0x0a, 0x60, 0xc8, 0xf0, 0x03, + 0xfd, 0x45, 0xf7, 0xff, 0xff, 0x85, 0xf0, 0x00, + 0xf8, 0xd5, 0xf0, 0x05, 0xfb, 0x90, 0xf7, 0xff, + 0xff, 0x37, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, + 0x2e, 0x00, 0x19, 0xe9, 0x2e, 0x08, 0x01, 0x88, + 0x47, 0x70, 0xb5, 0xf0, 0x4d, 0x29, 0x68, 0x01, + 0x31, 0x03, 0x10, 0x89, 0x1e, 0xcb, 0x68, 0x41, + 0x10, 0x89, 0x68, 0x82, 0x10, 0x92, 0x00, 0x89, + 0x30, 0x0c, 0x18, 0x0c, 0x21, 0x03, 0x05, 0x89, + 0x27, 0x35, 0x06, 0x7f, 0x60, 0x39, 0x49, 0x22, + 0x68, 0x0e, 0x08, 0xb6, 0x00, 0xb6, 0x60, 0x0e, + 0x21, 0x00, 0x2b, 0x00, 0xd9, 0x04, 0xc8, 0x40, + 0xc5, 0x40, 0x31, 0x01, 0x42, 0x99, 0xd3, 0xfa, + 0x23, 0x00, 0x49, 0x1c, 0x65, 0x8b, 0x20, 0x00, + 0x2a, 0x00, 0xd9, 0x04, 0xcc, 0x20, 0x64, 0x8d, + 0x30, 0x01, 0x42, 0x90, 0xd3, 0xfa, 0x48, 0x18, + 0x60, 0x03, 0x60, 0x3b, 0x66, 0x8b, 0x60, 0x3b, + 0x22, 0x01, 0x64, 0xca, 0x21, 0x00, 0x4a, 0x15, + 0x68, 0x03, 0x2b, 0x00, 0xd1, 0x05, 0x33, 0x01, + 0x2b, 0x64, 0xdb, 0xfc, 0x31, 0x01, 0x42, 0x91, + 0xdb, 0xf6, 0x48, 0x11, 0x68, 0x01, 0x23, 0x01, + 0x43, 0x19, 0x60, 0x01, 0x49, 0x0f, 0x20, 0x33, + 0x06, 0x40, 0x65, 0x41, 0x49, 0x0e, 0x65, 0x81, + 0x49, 0x0e, 0x66, 0x81, 0x39, 0x04, 0x66, 0x41, + 0x21, 0x03, 0x67, 0x01, 0x21, 0x00, 0x20, 0x0d, + 0xf0, 0x0e, 0xfe, 0x88, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x70, 0x6a, 0x00, 0x00, 0x80, + 0xcc, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x27, 0x10, + 0x6a, 0x00, 0x00, 0x10, 0xcc, 0x00, 0x0f, 0x84, + 0xcc, 0x00, 0x0f, 0x88, 0x98, 0x00, 0x0f, 0x88, + 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x08, + 0xf0, 0x0f, 0xfa, 0xc2, 0x48, 0x08, 0x21, 0x40, + 0xf0, 0x0e, 0xff, 0x92, 0x20, 0x01, 0x21, 0x35, + 0x06, 0x49, 0x61, 0x08, 0x20, 0x02, 0x43, 0xc0, + 0x49, 0x04, 0x63, 0x08, 0x20, 0x00, 0x21, 0x39, + 0x06, 0x49, 0x62, 0xc8, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x01, 0xc5, 0x30, 0x72, 0x00, 0x01, 0x00, + 0xb5, 0x00, 0x1c, 0x01, 0x48, 0x0f, 0xd0, 0x10, + 0x29, 0x01, 0xd0, 0x12, 0x29, 0x02, 0xd0, 0x14, + 0x29, 0x03, 0xd1, 0x01, 0x49, 0x0c, 0x60, 0x01, + 0x68, 0x01, 0x68, 0x40, 0x43, 0x08, 0x22, 0x00, + 0x21, 0x1e, 0xf0, 0x0f, 0xfb, 0x01, 0xbc, 0x08, + 0x47, 0x18, 0x21, 0x01, 0x04, 0x49, 0x60, 0x01, + 0xe7, 0xf2, 0x21, 0x21, 0x03, 0x09, 0x60, 0x01, + 0xe7, 0xee, 0x21, 0x41, 0x03, 0x09, 0x60, 0x01, + 0xe7, 0xea, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x98, + 0x00, 0x08, 0x10, 0x08, 0xb5, 0x00, 0x1c, 0x01, + 0x48, 0x0b, 0xd0, 0x0e, 0x29, 0x01, 0xd0, 0x0f, + 0x29, 0x02, 0xd1, 0x01, 0x21, 0x04, 0x60, 0x41, + 0x68, 0x01, 0x68, 0x40, 0x43, 0x08, 0x22, 0x00, + 0x21, 0x1e, 0xf0, 0x0f, 0xfa, 0xdd, 0xbc, 0x08, + 0x47, 0x18, 0x21, 0x01, 0x60, 0x41, 0xe7, 0xf3, + 0x21, 0x02, 0x60, 0x41, 0xe7, 0xf0, 0x00, 0x00, + 0x2e, 0x08, 0x01, 0x98, 0xb5, 0x80, 0x4b, 0x09, + 0x22, 0x0a, 0x21, 0x0a, 0x20, 0x0b, 0xf0, 0x0f, + 0xfd, 0x11, 0x20, 0x0b, 0xf0, 0x0f, 0xfe, 0x33, + 0x4f, 0x05, 0x60, 0x38, 0x00, 0x80, 0xf0, 0x03, + 0xff, 0x21, 0x60, 0x78, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0xc4, + 0x2e, 0x08, 0x01, 0xd4, 0xb5, 0xb0, 0x25, 0x00, + 0x1c, 0x0c, 0x1c, 0x07, 0x2a, 0x08, 0xd2, 0x30, + 0xa3, 0x01, 0x5c, 0x9b, 0x00, 0x5b, 0x44, 0x9f, + 0x2c, 0x29, 0x29, 0x03, 0x29, 0x29, 0x03, 0x29, + 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x4d, 0x23, 0x2d, + 0x01, 0x1b, 0x42, 0x9f, 0xd0, 0x13, 0x23, 0x0b, + 0x01, 0x9b, 0x42, 0x9f, 0xd0, 0x0f, 0x23, 0xff, + 0x33, 0xe1, 0x42, 0x9f, 0xd0, 0x0b, 0x23, 0xff, + 0x33, 0x61, 0x42, 0x9f, 0xd0, 0x07, 0x23, 0x21, + 0x01, 0x1b, 0x42, 0x9f, 0xd0, 0x03, 0x23, 0x11, + 0x01, 0x5b, 0x42, 0x9f, 0xd1, 0x08, 0x23, 0x09, + 0x01, 0x9b, 0x42, 0x9c, 0xd0, 0x09, 0x08, 0x5b, + 0x42, 0x9c, 0xd0, 0x06, 0x2c, 0xf0, 0xd0, 0x04, + 0x25, 0x01, 0xe0, 0x02, 0x20, 0x01, 0xf0, 0x00, + 0xf8, 0x27, 0x4f, 0x12, 0x6c, 0x78, 0x42, 0x85, + 0xd0, 0x1c, 0x1d, 0xfb, 0x33, 0x35, 0x2d, 0x00, + 0xd0, 0x12, 0x1f, 0xda, 0x3a, 0x0d, 0x21, 0x03, + 0x1d, 0x10, 0xb4, 0x07, 0x22, 0x0b, 0xb4, 0x04, + 0x1c, 0x19, 0x23, 0x00, 0x22, 0x00, 0x20, 0x00, + 0xf0, 0x0a, 0xf9, 0x0a, 0x6a, 0xb8, 0x1c, 0x29, + 0xb0, 0x04, 0xf0, 0x0b, 0xfa, 0x59, 0xe0, 0x04, + 0x21, 0x00, 0x6a, 0xb8, 0x1c, 0x1a, 0xf0, 0x0a, + 0xfc, 0x0f, 0x64, 0x7d, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0x98, + 0xb5, 0xf0, 0x1c, 0x07, 0xb0, 0x81, 0x4d, 0x56, + 0x1d, 0xee, 0x36, 0x19, 0x79, 0x30, 0x42, 0x87, + 0xd1, 0x03, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x24, 0x00, 0x6c, 0x68, 0x28, 0x00, + 0xd0, 0x05, 0x64, 0x6c, 0x4a, 0x4f, 0x21, 0x00, + 0x6a, 0xa8, 0xf0, 0x0a, 0xfb, 0xf1, 0x71, 0x37, + 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x0e, 0xfd, 0x82, + 0x20, 0x00, 0xf0, 0x0c, 0xf8, 0x83, 0x20, 0x1f, + 0xf0, 0x09, 0xf9, 0x18, 0x26, 0x03, 0x02, 0x76, + 0x22, 0x01, 0x02, 0xd2, 0x21, 0x02, 0x20, 0x1f, + 0x1c, 0x33, 0xf0, 0x08, 0xff, 0x8f, 0x20, 0x1e, + 0xf0, 0x09, 0xf9, 0xd6, 0x22, 0x01, 0x02, 0xd2, + 0x21, 0x02, 0x20, 0x1e, 0x1c, 0x33, 0xf0, 0x08, + 0xff, 0x85, 0x26, 0x1c, 0x1c, 0x39, 0x48, 0x3e, + 0x27, 0x0c, 0x29, 0x06, 0xd2, 0x07, 0xa3, 0x02, + 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x03, 0x12, 0x03, 0x21, 0x12, 0x30, 0x48, 0x39, + 0x21, 0x40, 0xf0, 0x0e, 0xfe, 0x81, 0xab, 0x00, + 0x70, 0x1c, 0x20, 0x08, 0x70, 0x58, 0x70, 0x9e, + 0x70, 0xdc, 0x22, 0x00, 0x21, 0x00, 0xf0, 0x0f, + 0xf9, 0xa3, 0xe0, 0x2b, 0x21, 0x1f, 0x43, 0xc9, + 0xf0, 0x0e, 0xfe, 0x72, 0xab, 0x00, 0x70, 0x1c, + 0x70, 0x5c, 0x70, 0x9f, 0x70, 0xdc, 0x22, 0x00, + 0x21, 0x00, 0x20, 0x00, 0xf0, 0x0f, 0xf9, 0x94, + 0xe0, 0x1c, 0x21, 0x40, 0xf0, 0x0e, 0xfe, 0x64, + 0xab, 0x00, 0x70, 0x1c, 0x20, 0x10, 0x70, 0x58, + 0x70, 0x9e, 0x70, 0xdc, 0x22, 0x00, 0x21, 0x00, + 0x20, 0x08, 0xf0, 0x0f, 0xf9, 0x85, 0xe0, 0x0d, + 0x21, 0x1f, 0x43, 0xc9, 0xf0, 0x0e, 0xfe, 0x54, + 0xab, 0x00, 0x70, 0x1c, 0x70, 0x5c, 0x70, 0x9f, + 0x70, 0xdc, 0x22, 0x00, 0x21, 0x00, 0x20, 0x08, + 0xf0, 0x0f, 0xf9, 0x76, 0x20, 0x01, 0x21, 0x35, + 0x06, 0x49, 0x61, 0x08, 0x20, 0x02, 0x43, 0xc0, + 0x49, 0x19, 0x63, 0x08, 0x20, 0x39, 0x06, 0x40, + 0x62, 0xc4, 0xcd, 0x03, 0x43, 0x08, 0x22, 0x00, + 0x21, 0x1e, 0xf0, 0x0f, 0xf9, 0xcd, 0x48, 0x15, + 0xf0, 0x0b, 0xff, 0x8e, 0x20, 0x00, 0xf0, 0x0b, + 0xff, 0xff, 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x68, + 0x20, 0x00, 0xf0, 0x03, 0xfb, 0x15, 0x20, 0x01, + 0xf0, 0x0c, 0xf8, 0x04, 0x4a, 0x0e, 0xb4, 0x04, + 0x1c, 0x13, 0x3a, 0x01, 0x49, 0x0d, 0x1e, 0xc8, + 0xf7, 0xfe, 0xfb, 0x5a, 0x21, 0x00, 0x20, 0x0d, + 0xb0, 0x01, 0xf0, 0x0e, 0xfc, 0xf3, 0xb0, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x01, 0x98, 0x2e, 0x08, 0x01, 0xd4, + 0x2e, 0x02, 0x0b, 0x9c, 0x2e, 0x01, 0xc5, 0x30, + 0x72, 0x00, 0x01, 0x00, 0x00, 0x80, 0x10, 0x80, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xfe, + 0xb5, 0xb0, 0x1c, 0x07, 0x4c, 0x10, 0x6a, 0x20, + 0x42, 0x87, 0xd0, 0x19, 0x20, 0x00, 0x2f, 0x03, + 0xd1, 0x02, 0x21, 0x01, 0x61, 0x61, 0xe0, 0x00, + 0x61, 0x60, 0x21, 0x02, 0x4d, 0x0b, 0x60, 0x29, + 0x71, 0x28, 0x71, 0x68, 0x22, 0x01, 0xb4, 0x04, + 0x7a, 0x23, 0x7c, 0x22, 0x7b, 0x21, 0x20, 0x00, + 0xf0, 0x0e, 0xff, 0xc0, 0x69, 0x61, 0x1c, 0x28, + 0xb0, 0x01, 0xf0, 0x10, 0xf8, 0x67, 0x62, 0x27, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x01, 0x98, 0x2e, 0x08, 0x01, 0xb0, + 0xb5, 0x00, 0x22, 0x02, 0x49, 0x09, 0x60, 0x0a, + 0x22, 0x00, 0x71, 0x0a, 0x71, 0x4a, 0x39, 0x48, + 0x28, 0x00, 0xd0, 0x08, 0x28, 0x01, 0xd1, 0x00, + 0x72, 0x08, 0x6a, 0x08, 0x62, 0x0a, 0xf7, 0xff, + 0xff, 0xc7, 0xbc, 0x08, 0x47, 0x18, 0x72, 0x0a, + 0xe7, 0xf7, 0x00, 0x00, 0x2e, 0x08, 0x01, 0xe0, + 0xb5, 0x80, 0x06, 0x00, 0x0e, 0x00, 0x4f, 0x0b, + 0xd0, 0x02, 0x20, 0x00, 0x73, 0x38, 0xe0, 0x01, + 0x20, 0x01, 0x73, 0x38, 0x22, 0x01, 0xb4, 0x04, + 0x7a, 0x3b, 0x7c, 0x3a, 0x7b, 0x39, 0x20, 0x00, + 0xf0, 0x0e, 0xff, 0x88, 0x69, 0x79, 0xb0, 0x01, + 0x48, 0x03, 0xf0, 0x10, 0xf8, 0x2f, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x01, 0x98, + 0x2e, 0x08, 0x01, 0xb0, 0xb5, 0x80, 0x06, 0x00, + 0x0e, 0x00, 0x1c, 0x01, 0x4f, 0x08, 0x74, 0x39, + 0x22, 0x01, 0xb4, 0x04, 0x7a, 0x3b, 0x7b, 0x39, + 0x1c, 0x02, 0x20, 0x00, 0xf0, 0x0e, 0xff, 0x6e, + 0x69, 0x79, 0xb0, 0x01, 0x48, 0x03, 0xf0, 0x10, + 0xf8, 0x15, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x01, 0x98, 0x2e, 0x08, 0x01, 0xb0, + 0xb4, 0xb0, 0x21, 0x00, 0x48, 0x08, 0x60, 0x01, + 0x20, 0x00, 0x4c, 0x08, 0x4f, 0x08, 0x4b, 0x09, + 0x4a, 0x09, 0x00, 0x85, 0x51, 0x61, 0x54, 0x39, + 0x54, 0x19, 0x54, 0x11, 0x30, 0x01, 0x28, 0x20, + 0xdb, 0xf7, 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x01, 0xe8, 0x2e, 0x08, 0x43, 0x90, + 0x2e, 0x08, 0x44, 0x10, 0x2e, 0x08, 0x44, 0x50, + 0x2e, 0x08, 0x44, 0x30, 0x06, 0x00, 0x0e, 0x00, + 0x21, 0x01, 0x40, 0x81, 0x43, 0xca, 0x49, 0x05, + 0x68, 0x0b, 0x40, 0x1a, 0x60, 0x0a, 0x21, 0x00, + 0x00, 0x82, 0x4b, 0x03, 0x50, 0x99, 0x4a, 0x03, + 0x54, 0x11, 0x47, 0x70, 0x2e, 0x08, 0x01, 0xe8, + 0x2e, 0x08, 0x43, 0x90, 0x2e, 0x08, 0x44, 0x10, + 0xb5, 0xf0, 0xb0, 0x84, 0x4f, 0x36, 0x68, 0x38, + 0x1d, 0xc1, 0x31, 0x0d, 0x20, 0x00, 0xf0, 0x23, + 0xf8, 0x5d, 0x1c, 0x04, 0x68, 0x38, 0x1d, 0xc1, + 0x31, 0x05, 0x20, 0x00, 0xf0, 0x23, 0xf8, 0x56, + 0x1c, 0x05, 0x68, 0x38, 0x1d, 0xc1, 0x31, 0x09, + 0x20, 0x00, 0xf0, 0x23, 0xf8, 0x4f, 0x43, 0x2c, + 0x1c, 0x20, 0x4c, 0x2c, 0x68, 0x21, 0x43, 0x08, + 0x27, 0x00, 0x60, 0x20, 0x1c, 0x05, 0xd0, 0x4a, + 0x48, 0x29, 0x90, 0x03, 0x48, 0x29, 0x90, 0x02, + 0x4a, 0x29, 0x92, 0x01, 0x4e, 0x29, 0x08, 0x68, + 0xd3, 0x3c, 0x98, 0x03, 0x5d, 0xc0, 0x28, 0x00, + 0xd0, 0x32, 0x98, 0x02, 0x5d, 0xc0, 0x28, 0x00, + 0xd0, 0x2a, 0x46, 0x68, 0x1c, 0x39, 0xf0, 0x10, + 0xfc, 0x27, 0xa8, 0x00, 0x78, 0x00, 0x28, 0x01, + 0xd1, 0x1b, 0x68, 0x60, 0x30, 0x01, 0x60, 0x60, + 0x5d, 0xf0, 0x28, 0x00, 0xd1, 0x06, 0x20, 0xff, + 0x55, 0xf0, 0x21, 0x00, 0x00, 0xb8, 0x9a, 0x01, + 0x50, 0x11, 0xe0, 0x1f, 0x20, 0x02, 0x1c, 0x39, + 0xf0, 0x00, 0xf8, 0x8e, 0x28, 0x00, 0xd1, 0x19, + 0x21, 0x00, 0x55, 0xf1, 0x20, 0x01, 0x40, 0xb8, + 0x43, 0xc0, 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, + 0xe0, 0x10, 0x20, 0x01, 0x40, 0xb8, 0x43, 0xc0, + 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, 0xe0, 0x09, + 0x68, 0x60, 0x30, 0x01, 0x60, 0x60, 0xe0, 0x05, + 0x20, 0x01, 0x40, 0xb8, 0x43, 0xc0, 0x68, 0x21, + 0x40, 0x08, 0x60, 0x20, 0x1c, 0x78, 0x06, 0x07, + 0x0e, 0x3f, 0x08, 0x6d, 0xd1, 0xbb, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x14, 0x2e, 0x08, 0x01, 0xe8, + 0x2e, 0x08, 0x44, 0x30, 0x2e, 0x08, 0x44, 0x50, + 0x2e, 0x08, 0x43, 0x90, 0x2e, 0x08, 0x44, 0x10, + 0xb5, 0xf0, 0x27, 0x00, 0xb0, 0x85, 0x4c, 0x26, + 0x68, 0x25, 0x2d, 0x00, 0xd0, 0x44, 0x4e, 0x25, + 0x48, 0x25, 0x90, 0x04, 0x49, 0x25, 0x91, 0x03, + 0x4a, 0x25, 0x92, 0x02, 0x48, 0x25, 0x90, 0x01, + 0x08, 0x68, 0xd3, 0x34, 0x5d, 0xf0, 0x28, 0x00, + 0xd0, 0x2b, 0x98, 0x04, 0x5d, 0xc0, 0x28, 0x00, + 0xd0, 0x2d, 0x46, 0x68, 0x1c, 0x39, 0xf0, 0x10, + 0xfb, 0xc3, 0xa8, 0x00, 0x78, 0x00, 0x28, 0x01, + 0xd1, 0x18, 0x68, 0x60, 0x30, 0x01, 0x60, 0x60, + 0x00, 0xb8, 0x99, 0x03, 0x58, 0x09, 0x69, 0x09, + 0x9a, 0x02, 0x50, 0x11, 0x20, 0x02, 0x1c, 0x39, + 0xf0, 0x00, 0xf8, 0x2e, 0x28, 0x00, 0xd1, 0x16, + 0x21, 0x00, 0x98, 0x01, 0x55, 0xc1, 0x20, 0x01, + 0x40, 0xb8, 0x43, 0xc0, 0x68, 0x21, 0x40, 0x08, + 0x60, 0x20, 0xe0, 0x0c, 0x20, 0x01, 0x40, 0xb8, + 0x43, 0xc0, 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, + 0xe0, 0x05, 0x20, 0x01, 0x40, 0xb8, 0x43, 0xc0, + 0x68, 0x21, 0x40, 0x08, 0x60, 0x20, 0x1c, 0x78, + 0x06, 0x07, 0x0e, 0x3f, 0x08, 0x6d, 0xd1, 0xc3, + 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x01, 0xe8, 0x2e, 0x08, 0x44, 0x30, + 0x2e, 0x08, 0x44, 0x50, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x43, 0x90, 0x2e, 0x08, 0x44, 0x10, + 0xb4, 0xf0, 0x06, 0x02, 0x0e, 0x12, 0xb0, 0x82, + 0x92, 0x00, 0x06, 0x0c, 0x0e, 0x24, 0x00, 0xa0, + 0xb0, 0x81, 0x49, 0x31, 0x58, 0x09, 0x91, 0x00, + 0x29, 0x00, 0xd1, 0x03, 0x20, 0xb0, 0xb0, 0x03, + 0xbc, 0xf0, 0x47, 0x70, 0x49, 0x2d, 0x68, 0x09, + 0x18, 0x47, 0x00, 0xe1, 0x1b, 0x09, 0x00, 0x89, + 0x4a, 0x2b, 0x68, 0x12, 0x18, 0x89, 0x9a, 0x01, + 0x4d, 0x2a, 0x4b, 0x2b, 0x93, 0x02, 0x2a, 0x01, + 0xd0, 0x28, 0x2a, 0x02, 0xd1, 0x44, 0x4b, 0x29, + 0x58, 0x1a, 0x2a, 0x00, 0xd1, 0x03, 0x20, 0xff, + 0xb0, 0x03, 0xbc, 0xf0, 0x47, 0x70, 0x60, 0x4a, + 0x22, 0x00, 0x50, 0x1a, 0x5c, 0xa8, 0x42, 0xa0, + 0xd1, 0x06, 0x00, 0x90, 0x9b, 0x02, 0x58, 0x18, + 0x78, 0x46, 0x23, 0x80, 0x43, 0x9e, 0x70, 0x46, + 0x1c, 0x50, 0x06, 0x02, 0x0e, 0x12, 0x2a, 0x20, + 0xdb, 0xf0, 0x88, 0x08, 0x4b, 0x1c, 0x40, 0x18, + 0x80, 0x08, 0x98, 0x00, 0x9a, 0x01, 0x70, 0xc2, + 0x68, 0x38, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, + 0x60, 0x38, 0xe0, 0x19, 0x68, 0x38, 0x4b, 0x17, + 0x40, 0x18, 0x60, 0x38, 0x98, 0x00, 0x9a, 0x01, + 0x70, 0xc2, 0x20, 0x00, 0x60, 0x88, 0x70, 0xc8, + 0x60, 0xc8, 0x5c, 0x29, 0x42, 0xa1, 0xd1, 0x06, + 0x00, 0x81, 0x9b, 0x02, 0x58, 0x59, 0x78, 0x4a, + 0x23, 0x80, 0x43, 0x1a, 0x70, 0x4a, 0x30, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0x28, 0x20, 0xdb, 0xf0, + 0x20, 0x00, 0xb0, 0x03, 0xbc, 0xf0, 0x47, 0x70, + 0x20, 0xbc, 0xb0, 0x03, 0xbc, 0xf0, 0x47, 0x70, + 0x2e, 0x08, 0x5e, 0x64, 0x2e, 0x08, 0x5d, 0xd4, + 0x2e, 0x08, 0x5d, 0xcc, 0x2e, 0x08, 0x5f, 0xac, + 0x2e, 0x08, 0x5e, 0xec, 0x2e, 0x08, 0x43, 0x90, + 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xdf, 0xff, + 0xb4, 0xf0, 0x78, 0x43, 0x00, 0x9e, 0x49, 0x32, + 0x59, 0x8c, 0x88, 0x42, 0x68, 0x87, 0x68, 0x40, + 0x1d, 0xf9, 0x31, 0xb9, 0x1a, 0x09, 0x42, 0x91, + 0xda, 0x3d, 0x25, 0x00, 0x1c, 0x18, 0x00, 0xdb, + 0x1a, 0x18, 0x00, 0x80, 0x4b, 0x2b, 0x68, 0x1b, + 0x18, 0xc0, 0x78, 0x80, 0x06, 0xc0, 0x0e, 0xc0, + 0x28, 0x12, 0xd1, 0x02, 0x29, 0x0e, 0xda, 0x00, + 0x25, 0x01, 0x2a, 0x00, 0xdd, 0x2b, 0x42, 0x8a, + 0xdd, 0x05, 0x68, 0x3f, 0x2f, 0x00, 0xd1, 0x02, + 0x20, 0xba, 0xbc, 0xf0, 0x47, 0x70, 0x1a, 0x52, + 0x79, 0xb9, 0x23, 0xc0, 0x1a, 0x59, 0x79, 0xfb, + 0x1d, 0x38, 0x08, 0x5b, 0xd3, 0x01, 0x22, 0x00, + 0xe0, 0x16, 0x2d, 0x00, 0xd0, 0x14, 0x42, 0x91, + 0xdb, 0x01, 0x31, 0x01, 0xe0, 0x10, 0x1c, 0x4b, + 0x42, 0x93, 0xd1, 0x0d, 0x78, 0x85, 0x2d, 0x09, + 0xdd, 0x06, 0x79, 0x05, 0x78, 0x80, 0x35, 0x09, + 0x42, 0x85, 0xd0, 0x05, 0x1c, 0x19, 0xe0, 0x03, + 0x78, 0x80, 0x28, 0x09, 0xd1, 0x00, 0x1c, 0x19, + 0x25, 0x00, 0x2a, 0x00, 0xdc, 0xd3, 0x69, 0x21, + 0x20, 0x00, 0x1c, 0x0a, 0x42, 0xb9, 0xd0, 0xd4, + 0x68, 0x0b, 0x42, 0xbb, 0xd0, 0x08, 0x68, 0x09, + 0x29, 0x00, 0xd1, 0x02, 0x20, 0xba, 0xbc, 0xf0, + 0x47, 0x70, 0x68, 0x0b, 0x42, 0xbb, 0xd1, 0xf6, + 0x4b, 0x07, 0x51, 0x9a, 0x60, 0x08, 0x69, 0xa2, + 0x69, 0x23, 0x60, 0x13, 0x61, 0xa1, 0x61, 0x27, + 0x61, 0x67, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x64, 0x2e, 0x08, 0x5d, 0xcc, + 0x2e, 0x08, 0x43, 0x90, 0xb5, 0xf0, 0x06, 0x07, + 0x0e, 0x3f, 0x04, 0x0c, 0x0c, 0x24, 0x06, 0x15, + 0x0e, 0x2d, 0x00, 0xf8, 0x49, 0x2c, 0x68, 0x09, + 0x18, 0x40, 0x00, 0xb9, 0x4a, 0x2b, 0x68, 0x12, + 0x18, 0x8a, 0x00, 0xf9, 0x1b, 0xc9, 0x00, 0x89, + 0x4b, 0x29, 0x68, 0x1b, 0x18, 0xc9, 0x68, 0x16, + 0x23, 0x01, 0x03, 0x5b, 0x43, 0x9e, 0x60, 0x16, + 0x68, 0x06, 0x23, 0x03, 0x03, 0x9b, 0x43, 0x9e, + 0x60, 0x06, 0x4b, 0x24, 0x42, 0x9c, 0xd0, 0x36, + 0x68, 0x06, 0x23, 0x21, 0x43, 0x9e, 0x60, 0x06, + 0x68, 0x16, 0x23, 0x07, 0x03, 0x5b, 0x40, 0x33, + 0x60, 0x13, 0x23, 0x07, 0x03, 0x5b, 0x43, 0x9c, + 0x1c, 0x23, 0x68, 0x14, 0x43, 0x23, 0x60, 0x13, + 0x22, 0x00, 0x75, 0x0a, 0x88, 0x0c, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x9c, 0x80, 0x0c, 0x07, 0xab, + 0x0f, 0x9b, 0x2b, 0x01, 0xd1, 0x04, 0x88, 0x0c, + 0x23, 0x10, 0x43, 0x23, 0x80, 0x0b, 0xe0, 0x03, + 0x88, 0x0c, 0x23, 0x10, 0x43, 0x9c, 0x80, 0x0c, + 0x68, 0x01, 0x23, 0x40, 0x43, 0xdb, 0x40, 0x19, + 0x60, 0x01, 0x00, 0xf9, 0x4b, 0x0e, 0x68, 0x1b, + 0x18, 0xc9, 0x60, 0x4a, 0x68, 0x01, 0x4b, 0x0d, + 0x43, 0x19, 0x60, 0x01, 0x68, 0x01, 0x60, 0x01, + 0x21, 0x0f, 0x60, 0x41, 0xe0, 0x04, 0x1c, 0x38, + 0xf0, 0x0d, 0xfb, 0xdc, 0x28, 0x00, 0xd1, 0x00, + 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x5d, 0xd8, 0x2e, 0x08, 0x5d, 0xd4, + 0x2e, 0x08, 0x5d, 0xcc, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x5d, 0xdc, 0x00, 0x00, 0x20, 0xa0, + 0xb5, 0xf0, 0x06, 0x09, 0x0e, 0x09, 0x1c, 0x07, + 0xb0, 0x8a, 0x48, 0x58, 0x29, 0x00, 0xd1, 0x0a, + 0x4d, 0x57, 0x69, 0x01, 0x91, 0x04, 0x49, 0x57, + 0x91, 0x03, 0x69, 0x41, 0x91, 0x02, 0x6a, 0x00, + 0x1e, 0x43, 0x93, 0x01, 0xe0, 0x0b, 0x29, 0x20, + 0xd1, 0x15, 0x4d, 0x53, 0x69, 0x81, 0x91, 0x04, + 0x49, 0x52, 0x91, 0x03, 0x69, 0xc1, 0x91, 0x02, + 0x6a, 0x40, 0x1e, 0x43, 0x93, 0x01, 0x24, 0x00, + 0x4b, 0x4f, 0x93, 0x09, 0x4a, 0x4f, 0x92, 0x08, + 0x4b, 0x4f, 0x93, 0x07, 0x4e, 0x4f, 0x96, 0x06, + 0x4a, 0x4f, 0x92, 0x05, 0xe0, 0x7a, 0x20, 0xb3, + 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x98, 0x04, 0x00, 0x80, 0x19, 0x40, 0x23, 0x01, + 0x02, 0x9b, 0x18, 0xc0, 0x68, 0x01, 0x98, 0x04, + 0x00, 0x80, 0x58, 0x28, 0x9a, 0x04, 0x18, 0xaa, + 0x00, 0x5b, 0x18, 0xd2, 0x78, 0x12, 0x92, 0x00, + 0x22, 0x00, 0x9b, 0x04, 0x18, 0xee, 0x23, 0x01, + 0x02, 0xdb, 0x18, 0xf3, 0x70, 0x1a, 0x9a, 0x04, + 0x32, 0x01, 0x92, 0x04, 0x9b, 0x01, 0x40, 0x1a, + 0x92, 0x04, 0x29, 0x00, 0xd0, 0x56, 0xb0, 0x82, + 0x91, 0x01, 0x21, 0x01, 0x9a, 0x02, 0x2a, 0x80, + 0xd1, 0x19, 0x22, 0x00, 0x9b, 0x01, 0x40, 0x0b, + 0xd0, 0x10, 0x9b, 0x0b, 0x5c, 0x9b, 0x2b, 0xff, + 0xd0, 0x0c, 0x9b, 0x0b, 0x5c, 0x9b, 0x93, 0x00, + 0x00, 0x91, 0x9a, 0x0a, 0x58, 0x52, 0x00, 0xa1, + 0x19, 0xc9, 0x61, 0x0a, 0x1c, 0x61, 0x06, 0x0c, + 0x0e, 0x24, 0xe0, 0x1c, 0x00, 0x49, 0x32, 0x01, + 0x2a, 0x10, 0xd3, 0xe7, 0xe0, 0x17, 0x22, 0x00, + 0x9b, 0x01, 0x40, 0x0b, 0xd0, 0x0f, 0x9b, 0x09, + 0x5c, 0x9b, 0x2b, 0xff, 0xd0, 0x0b, 0x93, 0x00, + 0x00, 0x93, 0x9e, 0x08, 0x58, 0xf6, 0x00, 0xa3, + 0x19, 0xdb, 0x61, 0x1e, 0x28, 0x00, 0xd0, 0x02, + 0x1c, 0x63, 0x06, 0x1c, 0x0e, 0x24, 0x00, 0x49, + 0x32, 0x01, 0x2a, 0x20, 0xd3, 0xe8, 0x2c, 0x00, + 0xd0, 0x1b, 0x9b, 0x00, 0x70, 0x7b, 0x60, 0x78, + 0x9b, 0x00, 0x00, 0x99, 0x9a, 0x07, 0x58, 0x52, + 0x69, 0x51, 0xe0, 0x07, 0x68, 0x09, 0x29, 0x00, + 0xd1, 0x04, 0x20, 0xba, 0xb0, 0x0c, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x42, 0x88, 0xd3, 0xf5, + 0x1d, 0xcb, 0x33, 0xb9, 0x42, 0x83, 0xd3, 0xf1, + 0x60, 0xb9, 0x61, 0x51, 0x1c, 0x38, 0xf0, 0x0d, + 0xfb, 0xe6, 0xb0, 0x02, 0x98, 0x04, 0x99, 0x02, + 0x42, 0x88, 0xd0, 0x01, 0x2c, 0x00, 0xd0, 0x83, + 0x70, 0x3c, 0x98, 0x04, 0x99, 0x03, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x9e, 0x00, 0x04, 0x80, + 0x2e, 0x08, 0x60, 0x98, 0x9e, 0x00, 0x04, 0x90, + 0x2e, 0x08, 0x69, 0x98, 0x9e, 0x00, 0x04, 0x98, + 0x2e, 0x08, 0x5f, 0xcc, 0x2e, 0x08, 0x5f, 0x6c, + 0x2e, 0x08, 0x5f, 0xac, 0x2e, 0x08, 0x5e, 0xec, + 0x2e, 0x08, 0x5e, 0x64, 0xb5, 0x00, 0x20, 0xff, + 0x49, 0x03, 0x60, 0x08, 0x20, 0x01, 0x05, 0x00, + 0xf0, 0x19, 0xfe, 0x3e, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x01, 0xe8, 0xb5, 0xf0, 0x06, 0x07, + 0x0e, 0x3f, 0x06, 0x0c, 0x0e, 0x24, 0x20, 0x10, + 0x2f, 0x1f, 0xdc, 0x2c, 0x2c, 0x1f, 0xdc, 0x2a, + 0x1c, 0x39, 0x43, 0x21, 0x08, 0x49, 0xd2, 0x26, + 0x49, 0x14, 0x1c, 0x38, 0xf0, 0x19, 0xfe, 0x3a, + 0x26, 0x01, 0x1c, 0x35, 0x40, 0xbd, 0x1c, 0x30, + 0x40, 0xa0, 0x1c, 0x04, 0x43, 0x28, 0xf0, 0x19, + 0xfe, 0x24, 0xf0, 0x19, 0xfe, 0x27, 0x43, 0xa8, + 0xf0, 0x19, 0xfe, 0x28, 0xf0, 0x19, 0xfe, 0x22, + 0x43, 0xa0, 0xf0, 0x19, 0xfe, 0x23, 0x1c, 0x38, + 0xf0, 0x0f, 0xfd, 0x28, 0x1c, 0x04, 0xd1, 0x07, + 0x21, 0x03, 0x05, 0x09, 0x20, 0x00, 0x1c, 0x3a, + 0x1c, 0x33, 0xf0, 0x10, 0xfb, 0xd9, 0x1c, 0x04, + 0xf7, 0xff, 0xfc, 0x92, 0x1c, 0x20, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x00, 0x2c, 0xa3, + 0xb5, 0xf0, 0x06, 0x04, 0x0e, 0x24, 0x04, 0x0d, + 0x0c, 0x2d, 0x06, 0x16, 0x0e, 0x36, 0x9f, 0x05, + 0x06, 0x38, 0x0e, 0x00, 0x22, 0x00, 0x21, 0x00, + 0xb4, 0x07, 0x21, 0x10, 0x1c, 0x1a, 0xb4, 0x06, + 0x23, 0x10, 0x1c, 0x20, 0x1c, 0x29, 0x1c, 0x32, + 0xf0, 0x00, 0xf8, 0x54, 0xb0, 0x05, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x06, 0x04, + 0x0e, 0x24, 0x04, 0x0d, 0x0c, 0x2d, 0x06, 0x16, + 0x0e, 0x36, 0x9f, 0x05, 0x06, 0x38, 0x0e, 0x00, + 0x22, 0x00, 0x21, 0x00, 0xb4, 0x07, 0x21, 0x18, + 0x1c, 0x1a, 0xb4, 0x06, 0x23, 0x11, 0x1c, 0x20, + 0x1c, 0x29, 0x1c, 0x32, 0xf0, 0x00, 0xf8, 0x3a, + 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xf0, 0x06, 0x04, 0x0e, 0x24, 0x04, 0x0d, + 0x0c, 0x2d, 0x06, 0x16, 0x0e, 0x36, 0x9f, 0x05, + 0x06, 0x38, 0x0e, 0x00, 0x22, 0x00, 0x21, 0x00, + 0xb4, 0x07, 0x21, 0x20, 0x1c, 0x1a, 0xb4, 0x06, + 0x23, 0x51, 0x1c, 0x20, 0x1c, 0x29, 0x1c, 0x32, + 0xf0, 0x00, 0xf8, 0x20, 0xb0, 0x05, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x06, 0x03, + 0x0e, 0x1b, 0x04, 0x0d, 0x0c, 0x2d, 0x06, 0x16, + 0x0e, 0x36, 0x9c, 0x09, 0x9f, 0x0a, 0x06, 0x20, + 0x0e, 0x00, 0x22, 0x00, 0x1c, 0x39, 0xb4, 0x07, + 0x21, 0x10, 0x9a, 0x06, 0xb4, 0x06, 0x1c, 0x18, + 0x23, 0x62, 0x1c, 0x29, 0x1c, 0x32, 0xf0, 0x00, + 0xf8, 0x05, 0xb0, 0x05, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x9e, 0x09, + 0x9f, 0x0b, 0x06, 0x04, 0x0e, 0x24, 0x04, 0x09, + 0x0c, 0x09, 0xb0, 0x88, 0x91, 0x00, 0x06, 0x15, + 0x0e, 0x2d, 0x06, 0x18, 0x0e, 0x00, 0x90, 0x01, + 0x06, 0x32, 0x0e, 0x12, 0x92, 0x02, 0x06, 0x38, + 0x0e, 0x00, 0x90, 0x03, 0xb0, 0x82, 0xf0, 0x19, + 0xfd, 0x89, 0x0d, 0x40, 0xd2, 0x09, 0x20, 0xff, + 0x90, 0x00, 0xf0, 0x19, 0xfd, 0x83, 0x23, 0x01, + 0x05, 0x1b, 0x43, 0x18, 0xf0, 0x19, 0xfd, 0x82, + 0xe0, 0x01, 0x20, 0x00, 0x90, 0x00, 0x98, 0x03, + 0x08, 0x40, 0xd3, 0x02, 0x22, 0x12, 0x92, 0x01, + 0xe0, 0x01, 0x22, 0x11, 0x92, 0x01, 0x22, 0x01, + 0x1c, 0x11, 0x40, 0xa9, 0x4b, 0x5f, 0x1c, 0x0f, + 0x68, 0x18, 0x40, 0x07, 0xd0, 0x01, 0x27, 0x11, + 0xe0, 0xa2, 0x27, 0x00, 0x43, 0x08, 0x60, 0x18, + 0x23, 0x1c, 0x98, 0x05, 0x40, 0x18, 0x28, 0x1c, + 0xd1, 0x06, 0x21, 0x01, 0x20, 0x7d, 0x01, 0x00, + 0xf0, 0x10, 0xf8, 0x86, 0x1c, 0x06, 0xe0, 0x0d, + 0x98, 0x05, 0x08, 0x40, 0xd3, 0x05, 0x21, 0x01, + 0x20, 0xc8, 0xf0, 0x10, 0xf8, 0x7d, 0x1c, 0x06, + 0xe0, 0x04, 0x21, 0x01, 0x20, 0x3c, 0xf0, 0x10, + 0xf8, 0x77, 0x1c, 0x06, 0x20, 0x34, 0xf0, 0x03, + 0xf9, 0x4d, 0x00, 0xaa, 0x92, 0x09, 0x49, 0x4c, + 0x91, 0x08, 0x50, 0x88, 0x00, 0xa1, 0x91, 0x07, + 0x48, 0x4a, 0x90, 0x06, 0x58, 0x40, 0x28, 0x00, + 0xd1, 0x05, 0x00, 0xb0, 0xf0, 0x03, 0xf9, 0x3e, + 0x99, 0x07, 0x9a, 0x06, 0x50, 0x50, 0x98, 0x09, + 0x99, 0x08, 0x58, 0x08, 0x28, 0x00, 0xd0, 0x04, + 0x98, 0x06, 0x99, 0x07, 0x58, 0x40, 0x28, 0x00, + 0xd1, 0x01, 0x27, 0x13, 0xe0, 0x64, 0x99, 0x07, + 0x4a, 0x3f, 0x58, 0x51, 0x29, 0x00, 0xd1, 0x3a, + 0x9a, 0x01, 0xb4, 0x04, 0x23, 0x40, 0x1c, 0x31, + 0x1c, 0x22, 0xf0, 0x10, 0xf8, 0xd5, 0xb0, 0x01, + 0x1c, 0x07, 0xd1, 0x17, 0x23, 0x03, 0x02, 0x5b, + 0x22, 0x01, 0x02, 0xd2, 0x21, 0x01, 0x1c, 0x20, + 0xf0, 0x08, 0xfa, 0x18, 0x22, 0x00, 0xb4, 0x04, + 0x22, 0x02, 0x99, 0x03, 0x9b, 0x02, 0x1c, 0x20, + 0xf0, 0x08, 0xf8, 0x4c, 0xb0, 0x01, 0x1c, 0x07, + 0xd1, 0x04, 0x22, 0x01, 0x48, 0x2f, 0x55, 0x02, + 0x48, 0x2f, 0x55, 0x02, 0x2f, 0x00, 0xd1, 0x16, + 0x98, 0x16, 0x28, 0x00, 0xd0, 0x13, 0x21, 0x02, + 0x98, 0x16, 0xf0, 0x10, 0xf8, 0x25, 0x1c, 0x07, + 0x00, 0x80, 0xf0, 0x03, 0xf8, 0xfb, 0x99, 0x07, + 0x4a, 0x28, 0x50, 0x50, 0x28, 0x00, 0xd0, 0x05, + 0x1c, 0x39, 0x1c, 0x22, 0xf0, 0x10, 0xf8, 0x39, + 0x1c, 0x07, 0xe0, 0x00, 0x27, 0x13, 0x2f, 0x00, + 0xd1, 0x22, 0x98, 0x03, 0x09, 0x80, 0xd3, 0x06, + 0x20, 0x5c, 0xf0, 0x03, 0xf8, 0xe7, 0x28, 0x00, + 0xd1, 0x02, 0x27, 0x13, 0xe0, 0x00, 0x20, 0x00, + 0x1c, 0x02, 0x98, 0x05, 0x99, 0x17, 0xb4, 0x07, + 0x1c, 0x2a, 0xb4, 0x04, 0x98, 0x0d, 0x99, 0x0c, + 0x58, 0x08, 0x99, 0x18, 0x9a, 0x08, 0x9b, 0x07, + 0xf0, 0x00, 0xf9, 0x1c, 0xb0, 0x04, 0x2f, 0x00, + 0xd1, 0x06, 0x98, 0x09, 0x99, 0x08, 0x58, 0x08, + 0x1c, 0x21, 0xf0, 0x0c, 0xfa, 0xb9, 0x1c, 0x07, + 0x2f, 0x00, 0xd0, 0x03, 0x1c, 0x20, 0x1c, 0x29, + 0xf0, 0x00, 0xf8, 0x20, 0x98, 0x00, 0x28, 0x00, + 0xd0, 0x05, 0xf0, 0x19, 0xfc, 0xbb, 0x4b, 0x0c, + 0x40, 0x18, 0xf0, 0x19, 0xfc, 0xbb, 0x1c, 0x38, + 0xb0, 0x0a, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x01, 0xf0, + 0x2e, 0x08, 0x01, 0xf4, 0x2e, 0x08, 0x02, 0x74, + 0x2e, 0x08, 0x5e, 0x64, 0x2e, 0x08, 0x44, 0x50, + 0x2e, 0x08, 0x44, 0x30, 0x2e, 0x08, 0x02, 0xf4, + 0xff, 0xef, 0xff, 0xff, 0xb5, 0xf0, 0x06, 0x07, + 0x0e, 0x3f, 0x06, 0x0d, 0x0e, 0x2d, 0xb0, 0x83, + 0xf0, 0x19, 0xfc, 0x98, 0x0d, 0x40, 0xd2, 0x09, + 0x20, 0xff, 0x90, 0x00, 0xf0, 0x19, 0xfc, 0x92, + 0x23, 0x01, 0x05, 0x1b, 0x43, 0x18, 0xf0, 0x19, + 0xfc, 0x91, 0xe0, 0x01, 0x20, 0x00, 0x90, 0x00, + 0x24, 0x00, 0x20, 0x01, 0x40, 0xa8, 0x1c, 0x02, + 0x49, 0x3f, 0x1c, 0x13, 0x68, 0x08, 0x40, 0x03, + 0xd0, 0x69, 0x43, 0xd2, 0x40, 0x10, 0x00, 0xae, + 0x60, 0x08, 0x4d, 0x3c, 0x59, 0xa8, 0x28, 0x00, + 0xd0, 0x62, 0x78, 0x81, 0x91, 0x02, 0x08, 0x49, + 0xd3, 0x02, 0x23, 0x12, 0x93, 0x01, 0xe0, 0x01, + 0x23, 0x11, 0x93, 0x01, 0x1c, 0x39, 0xf0, 0x0c, + 0xfa, 0xd3, 0x1c, 0x04, 0x59, 0xa8, 0x6b, 0x00, + 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x03, 0xf8, 0x8c, + 0x59, 0xa8, 0x6a, 0xc0, 0x28, 0x00, 0xd0, 0x01, + 0xf0, 0x03, 0xf8, 0x86, 0x59, 0xa8, 0xf0, 0x03, + 0xf8, 0x83, 0x20, 0x00, 0x51, 0xa8, 0x00, 0xbd, + 0x48, 0x2b, 0x59, 0x40, 0x78, 0x80, 0x28, 0x00, + 0xd1, 0x40, 0x1c, 0x39, 0xf0, 0x0f, 0xfd, 0xf8, + 0x2c, 0x00, 0xd1, 0x2a, 0x98, 0x02, 0x09, 0x80, + 0xd3, 0x0a, 0x21, 0x00, 0x1c, 0x3a, 0x48, 0x25, + 0xf0, 0x0f, 0xff, 0x93, 0x28, 0x00, 0xd0, 0x03, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x22, 0x00, 0xb4, 0x04, 0x22, 0x02, 0x9b, 0x02, + 0x1c, 0x38, 0x49, 0x1e, 0xf0, 0x07, 0xff, 0x7a, + 0xb0, 0x01, 0x1c, 0x04, 0xd1, 0x11, 0x9a, 0x01, + 0xb4, 0x04, 0x26, 0x00, 0x21, 0x00, 0x1c, 0x3a, + 0x1c, 0x33, 0x48, 0x18, 0xf0, 0x0f, 0xff, 0xe4, + 0x1c, 0x04, 0xb0, 0x01, 0x48, 0x16, 0x55, 0xc6, + 0x48, 0x16, 0x55, 0xc6, 0x1c, 0x38, 0xf7, 0xff, + 0xfa, 0xc5, 0x4f, 0x15, 0x59, 0x78, 0xf0, 0x03, + 0xf8, 0x47, 0x26, 0x00, 0x51, 0x7e, 0x37, 0x80, + 0x59, 0x78, 0x28, 0x00, 0xd0, 0x04, 0xf0, 0x03, + 0xf8, 0x3f, 0x51, 0x7e, 0xe0, 0x02, 0xe0, 0x00, + 0xe0, 0x00, 0x24, 0x12, 0x98, 0x00, 0x28, 0x00, + 0xd0, 0x05, 0xf0, 0x19, 0xfc, 0x0f, 0x4b, 0x0b, + 0x40, 0x18, 0xf0, 0x19, 0xfc, 0x0f, 0x1c, 0x20, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x01, 0xf0, 0x2e, 0x08, 0x01, 0xf4, + 0x2e, 0x08, 0x5e, 0x64, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x44, 0x50, 0x2e, 0x08, 0x44, 0x30, + 0x2e, 0x08, 0x02, 0x74, 0xff, 0xef, 0xff, 0xff, + 0xb5, 0xb0, 0x06, 0x00, 0x0e, 0x00, 0x00, 0x80, + 0x1c, 0x0c, 0x1c, 0x17, 0xb0, 0xad, 0x49, 0x1c, + 0x58, 0x08, 0x90, 0x04, 0x78, 0x81, 0x23, 0x04, + 0x40, 0x19, 0x25, 0x00, 0x29, 0x00, 0xd0, 0x0b, + 0xa9, 0x25, 0xf0, 0x0c, 0xfe, 0x95, 0xab, 0x00, + 0x80, 0x5d, 0xa8, 0x25, 0x90, 0x24, 0x46, 0x68, + 0x21, 0x00, 0xf0, 0x0c, 0xfe, 0xb4, 0xe0, 0x0c, + 0x78, 0x00, 0x0a, 0x00, 0xd3, 0x04, 0x20, 0x01, + 0x03, 0x00, 0xab, 0x00, 0x80, 0x58, 0xe0, 0x03, + 0x20, 0x01, 0x02, 0x80, 0xab, 0x00, 0x80, 0x58, + 0x20, 0x00, 0x28, 0x00, 0xd1, 0x0e, 0xa8, 0x00, + 0x88, 0x40, 0x60, 0x38, 0xf0, 0x02, 0xff, 0xca, + 0x60, 0x20, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x13, + 0xe0, 0x06, 0x1c, 0x01, 0x46, 0x68, 0xf0, 0x0c, + 0xfe, 0x96, 0xe0, 0x01, 0x60, 0x25, 0x60, 0x3d, + 0xb0, 0x2d, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x01, 0xf4, 0xb4, 0xf0, 0x06, 0x12, + 0x0e, 0x12, 0x06, 0x1b, 0x0e, 0x1b, 0x9c, 0x06, + 0x9f, 0x07, 0x9d, 0x05, 0x9e, 0x04, 0x06, 0x36, + 0x0e, 0x36, 0x06, 0x2d, 0xd0, 0x02, 0x25, 0x80, + 0x70, 0x05, 0xe0, 0x01, 0x25, 0x00, 0x70, 0x05, + 0x25, 0x00, 0x70, 0x45, 0x80, 0x85, 0x72, 0x05, + 0x70, 0xc6, 0x70, 0x83, 0x62, 0xc4, 0x63, 0x07, + 0x27, 0x00, 0x23, 0x00, 0x2a, 0x00, 0xdd, 0x10, + 0x5c, 0xcc, 0x19, 0xc5, 0x73, 0x2c, 0x18, 0xcc, + 0x78, 0x66, 0x1c, 0x7c, 0x06, 0x25, 0x0e, 0x2d, + 0x1c, 0x3c, 0x18, 0x24, 0x77, 0x26, 0x33, 0x02, + 0x06, 0x1b, 0x0e, 0x1b, 0x1c, 0x2f, 0x42, 0x93, + 0xdb, 0xee, 0xbc, 0xf0, 0x47, 0x70, 0xb5, 0xf0, + 0xb0, 0xac, 0x21, 0x00, 0xa8, 0x07, 0xf0, 0x0c, + 0xfd, 0x1b, 0xa8, 0x07, 0x78, 0x00, 0x90, 0x06, + 0x28, 0x00, 0xd0, 0x4b, 0x24, 0x00, 0x98, 0x06, + 0x28, 0x00, 0xdd, 0x43, 0xa8, 0x07, 0xf0, 0x0d, + 0xf8, 0xe2, 0x00, 0xa1, 0xa8, 0x07, 0x18, 0x08, + 0x69, 0x07, 0x78, 0xfe, 0xad, 0x07, 0x88, 0x6d, + 0x78, 0xb8, 0x09, 0xc0, 0xd3, 0x12, 0xa8, 0x07, + 0xa9, 0x01, 0xf0, 0x10, 0xfb, 0x31, 0x78, 0xb8, + 0x08, 0x40, 0xd3, 0x05, 0x46, 0x6a, 0x1c, 0x38, + 0xa9, 0x01, 0xf0, 0x10, 0xfb, 0x5e, 0xe0, 0x08, + 0x46, 0x6a, 0x1c, 0x38, 0xa9, 0x01, 0xf0, 0x10, + 0xfb, 0x9b, 0xe0, 0x02, 0x20, 0x40, 0xab, 0x00, + 0x70, 0x18, 0xa8, 0x00, 0x78, 0x00, 0x09, 0xc0, + 0xd3, 0x16, 0x1c, 0x28, 0xf7, 0xfd, 0xfe, 0x4a, + 0x1c, 0x07, 0xd0, 0x11, 0xa8, 0x07, 0x1c, 0x39, + 0xf0, 0x0c, 0xff, 0x54, 0x28, 0x00, 0xd1, 0x09, + 0x1c, 0x30, 0x1c, 0x29, 0x1c, 0x3a, 0xf7, 0xfd, + 0xfe, 0x99, 0x28, 0x00, 0xd0, 0x04, 0xf7, 0xfd, + 0xfe, 0x8b, 0xe0, 0x01, 0xf7, 0xfd, 0xfe, 0x88, + 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, 0x98, 0x06, + 0x42, 0x84, 0xdb, 0xbb, 0xa8, 0x07, 0xf0, 0x0c, + 0xfd, 0xbd, 0xe7, 0xaa, 0xf7, 0xff, 0xfa, 0x5c, + 0xb0, 0x2c, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xf0, 0xb0, 0xad, 0x21, 0x00, 0xa8, 0x08, + 0xf0, 0x0c, 0xfc, 0xbe, 0x22, 0x05, 0x21, 0x16, + 0x1c, 0x04, 0xf0, 0x03, 0xfd, 0x54, 0x2c, 0xb2, + 0xd1, 0x03, 0x21, 0x00, 0xa8, 0x08, 0xf0, 0x0c, + 0xfc, 0x6d, 0xa8, 0x08, 0x78, 0x00, 0x90, 0x06, + 0x28, 0x00, 0xd0, 0x73, 0x25, 0x00, 0x98, 0x06, + 0x28, 0x00, 0xdd, 0x57, 0xa8, 0x08, 0xf0, 0x0d, + 0xf8, 0x7a, 0x00, 0xa9, 0xa8, 0x08, 0x18, 0x08, + 0x69, 0x07, 0x78, 0xf8, 0x90, 0x07, 0xae, 0x08, + 0x88, 0x76, 0x78, 0xb8, 0x09, 0xc0, 0xd3, 0x12, + 0xa8, 0x08, 0xa9, 0x01, 0xf0, 0x10, 0xfa, 0xc8, + 0x78, 0xb8, 0x08, 0x40, 0xd3, 0x05, 0x46, 0x6a, + 0x1c, 0x38, 0xa9, 0x01, 0xf0, 0x10, 0xfa, 0xf5, + 0xe0, 0x08, 0x46, 0x6a, 0x1c, 0x38, 0xa9, 0x01, + 0xf0, 0x10, 0xfb, 0x32, 0xe0, 0x02, 0x20, 0x40, + 0xab, 0x00, 0x70, 0x18, 0xa8, 0x00, 0x78, 0x00, + 0x09, 0xc0, 0xd3, 0x29, 0x78, 0xb8, 0x09, 0x80, + 0xd3, 0x0f, 0xa8, 0x08, 0xa9, 0x01, 0xf0, 0x10, + 0xfc, 0x8f, 0x1c, 0x04, 0xa8, 0x00, 0x78, 0x00, + 0x08, 0x80, 0xd2, 0x02, 0x78, 0xb8, 0x08, 0x80, + 0xd3, 0x1a, 0x1c, 0x38, 0xf0, 0x10, 0xfd, 0x96, + 0xe0, 0x16, 0x1c, 0x30, 0xf7, 0xfd, 0xfd, 0xce, + 0x1c, 0x07, 0xd0, 0x11, 0xa8, 0x08, 0x1c, 0x39, + 0xf0, 0x0c, 0xfe, 0xd8, 0x28, 0x00, 0xd1, 0x09, + 0x98, 0x07, 0x1c, 0x31, 0x1c, 0x3a, 0xf7, 0xfd, + 0xfe, 0x1d, 0x28, 0x00, 0xd0, 0x04, 0xf7, 0xfd, + 0xfe, 0x0f, 0xe0, 0x01, 0xf7, 0xfd, 0xfe, 0x0c, + 0x1c, 0x68, 0x06, 0x05, 0x0e, 0x2d, 0x98, 0x06, + 0x42, 0x85, 0xdb, 0xa7, 0x98, 0x06, 0x28, 0x00, + 0xd0, 0x08, 0xa8, 0x08, 0xf0, 0x0c, 0xfd, 0x3e, + 0x2c, 0xb2, 0xd1, 0x03, 0x21, 0x00, 0xa8, 0x08, + 0xf0, 0x0c, 0xfc, 0x00, 0xf7, 0xff, 0xf9, 0x5c, + 0x21, 0x00, 0xa8, 0x08, 0xf7, 0xff, 0xfb, 0x88, + 0x1c, 0x04, 0xa8, 0x08, 0x78, 0x00, 0x90, 0x06, + 0x28, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xd1, 0x89, + 0xf7, 0xff, 0xf9, 0xca, 0xb0, 0x2d, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x26, 0x00, + 0x48, 0x28, 0x71, 0x06, 0x70, 0x06, 0x20, 0x00, + 0x4f, 0x27, 0x4a, 0x28, 0x49, 0x28, 0x00, 0x43, + 0x52, 0xd6, 0x52, 0xfe, 0x00, 0x83, 0x50, 0xce, + 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x28, 0x1d, + 0xdb, 0xf5, 0x28, 0x20, 0xda, 0x08, 0x00, 0x43, + 0x52, 0xd6, 0x00, 0x83, 0x50, 0xce, 0x30, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0x28, 0x20, 0xdb, 0xf6, + 0x20, 0x01, 0x02, 0x80, 0xf0, 0x19, 0xfa, 0x6d, + 0xf0, 0x19, 0xfa, 0x70, 0x4b, 0x1b, 0x40, 0x18, + 0xf0, 0x19, 0xfa, 0x70, 0x49, 0x1a, 0x20, 0x0a, + 0xf0, 0x19, 0xfa, 0x70, 0x21, 0x00, 0x4f, 0x19, + 0x20, 0xff, 0x4a, 0x19, 0x00, 0x4b, 0x18, 0x5b, + 0x01, 0x1b, 0x52, 0xd7, 0x18, 0x9b, 0x70, 0x98, + 0x70, 0xde, 0x71, 0x1e, 0x1d, 0xdc, 0x34, 0x19, + 0x73, 0x26, 0x71, 0x5e, 0x1c, 0x1d, 0x23, 0x06, + 0x73, 0x63, 0x23, 0x00, 0x00, 0xdc, 0x19, 0x2c, + 0x81, 0xa6, 0x81, 0xe6, 0x33, 0x01, 0x06, 0x1b, + 0x0e, 0x1b, 0x60, 0xa6, 0x2b, 0x04, 0xdb, 0xf5, + 0x31, 0x01, 0x06, 0x09, 0x0e, 0x09, 0x29, 0x08, + 0xdb, 0xe0, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x03, 0xbc, + 0x2e, 0x08, 0x49, 0xb8, 0x2e, 0x08, 0x49, 0x78, + 0x2e, 0x08, 0x45, 0xf0, 0xff, 0xff, 0xfb, 0xff, + 0x2e, 0x00, 0x30, 0xdd, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x44, 0x70, 0xb5, 0xf0, 0x06, 0x00, + 0x0e, 0x00, 0xb0, 0x83, 0x90, 0x00, 0x04, 0x09, + 0x0c, 0x09, 0x91, 0x01, 0x06, 0x10, 0x0e, 0x00, + 0x04, 0x1c, 0x0c, 0x24, 0x27, 0x00, 0x49, 0x5a, + 0x00, 0x7b, 0x19, 0xdb, 0x01, 0x1b, 0x5a, 0xcd, + 0x4b, 0x58, 0x42, 0x9d, 0xd1, 0x01, 0x1c, 0x3a, + 0xe0, 0x04, 0x1c, 0x7b, 0x06, 0x1f, 0x0e, 0x3f, + 0x2f, 0x08, 0xdb, 0xf1, 0x2f, 0x08, 0xd1, 0x05, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x46, 0x4f, 0x50, + 0x97, 0x02, 0x5b, 0xbb, 0x2b, 0x00, 0xd0, 0x05, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x23, 0x01, 0x9f, 0x02, + 0x53, 0xbb, 0x00, 0x53, 0x18, 0x9a, 0x01, 0x12, + 0x18, 0x57, 0x80, 0x38, 0x20, 0x14, 0xf0, 0x02, + 0xfd, 0xf9, 0x1c, 0x01, 0x62, 0xb8, 0x20, 0x00, + 0x29, 0x00, 0xd1, 0x08, 0x49, 0x41, 0x80, 0x39, + 0x9f, 0x02, 0x53, 0xb8, 0x43, 0xc0, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x0d, + 0x21, 0xff, 0x02, 0x09, 0x40, 0x21, 0x12, 0x08, + 0x28, 0x09, 0xd2, 0x1f, 0xa3, 0x01, 0x5c, 0x1b, + 0x00, 0x5b, 0x44, 0x9f, 0x1b, 0x04, 0x06, 0x09, + 0x0c, 0x0f, 0x12, 0x15, 0x18, 0x00, 0x24, 0xb8, + 0xe0, 0x16, 0x24, 0xff, 0x34, 0x71, 0xe0, 0x13, + 0x24, 0x01, 0x02, 0xa4, 0xe0, 0x10, 0x24, 0x01, + 0x02, 0xe4, 0xe0, 0x0d, 0x24, 0x01, 0x03, 0x24, + 0xe0, 0x0a, 0x24, 0x01, 0x03, 0x64, 0xe0, 0x07, + 0x24, 0x01, 0x03, 0xa4, 0xe0, 0x04, 0x24, 0x01, + 0x03, 0xe4, 0xe0, 0x01, 0x24, 0x01, 0x02, 0xa4, + 0x80, 0xac, 0x88, 0xa8, 0x00, 0x80, 0xf0, 0x02, + 0xfd, 0xbd, 0x60, 0x28, 0x28, 0x00, 0xd1, 0x0d, + 0x48, 0x24, 0x80, 0x38, 0x20, 0x00, 0x9f, 0x02, + 0x53, 0xb8, 0x1c, 0x28, 0xf0, 0x02, 0xfd, 0xd4, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x98, 0x00, 0x70, 0xb8, + 0x26, 0x00, 0x88, 0x38, 0x00, 0x80, 0x49, 0x1d, + 0x50, 0x0e, 0x20, 0x00, 0x1c, 0x01, 0x43, 0x61, + 0x68, 0x2a, 0x18, 0x8a, 0x00, 0xc1, 0x19, 0xc9, + 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x60, 0x8a, + 0x28, 0x04, 0xdb, 0xf3, 0x20, 0xb8, 0x1c, 0x21, + 0xf0, 0x15, 0xfa, 0x56, 0x1d, 0xfc, 0x34, 0x19, + 0x73, 0x20, 0x72, 0x2e, 0x78, 0xb8, 0x23, 0x01, + 0x02, 0x9b, 0x00, 0x5a, 0x21, 0x01, 0xf0, 0x07, + 0xfe, 0x89, 0x22, 0x00, 0xb4, 0x04, 0x78, 0xb8, + 0x23, 0x05, 0x22, 0x02, 0x99, 0x02, 0xf0, 0x07, + 0xfc, 0xbd, 0x22, 0x04, 0x7b, 0x21, 0xb0, 0x01, + 0xb4, 0x06, 0x78, 0xb9, 0x22, 0x0a, 0x20, 0x85, + 0x6a, 0xbb, 0xf0, 0x07, 0xff, 0x05, 0x1c, 0x30, + 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x44, 0x70, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x49, 0x78, 0x2e, 0x08, 0x45, 0xf0, + 0xb5, 0xf0, 0xb0, 0x82, 0x46, 0x68, 0xf0, 0x08, + 0xfc, 0x99, 0x21, 0x00, 0x4f, 0x24, 0x4b, 0x25, + 0x93, 0x01, 0x4a, 0x25, 0x00, 0x48, 0x18, 0x40, + 0x01, 0x00, 0x19, 0xc0, 0x78, 0x84, 0x9d, 0x00, + 0x40, 0xe5, 0x07, 0xeb, 0x0f, 0xdb, 0x2b, 0x01, + 0xd1, 0x31, 0x6a, 0x83, 0x7a, 0x1c, 0x2c, 0xa4, + 0xd0, 0x01, 0x2c, 0xa5, 0xd1, 0x2b, 0x1d, 0xc4, + 0x34, 0x19, 0xe0, 0x0e, 0x79, 0x05, 0x73, 0x65, + 0x88, 0xde, 0x79, 0x05, 0x00, 0xed, 0x18, 0x2d, + 0x81, 0xae, 0x79, 0x05, 0x35, 0x01, 0x07, 0xad, + 0x0f, 0xad, 0x71, 0x05, 0x78, 0x15, 0x35, 0x01, + 0x70, 0x15, 0x7a, 0x9d, 0x7b, 0x66, 0x42, 0xb5, + 0xd0, 0x02, 0x79, 0x45, 0x2d, 0x00, 0xd0, 0xe9, + 0x7a, 0x1b, 0x2b, 0xa5, 0xd1, 0x0f, 0x79, 0x43, + 0x07, 0xdc, 0x0f, 0xe4, 0x2c, 0x01, 0xd0, 0x0a, + 0x1c, 0x1c, 0x23, 0x01, 0x43, 0x23, 0x71, 0x43, + 0x88, 0x00, 0x00, 0x80, 0x9b, 0x01, 0x18, 0xc0, + 0x68, 0x03, 0x33, 0x01, 0x60, 0x03, 0x1c, 0x48, + 0x06, 0x01, 0x0e, 0x09, 0x29, 0x08, 0xdb, 0xbd, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x44, 0x70, 0x2e, 0x08, 0x45, 0xf0, + 0x2e, 0x08, 0x03, 0xbc, 0xb5, 0xf0, 0x04, 0x05, + 0x0c, 0x2d, 0x20, 0x00, 0x4c, 0x31, 0x00, 0x42, + 0x18, 0x12, 0x01, 0x12, 0x5a, 0xa2, 0x42, 0xaa, + 0xd1, 0x01, 0x1c, 0x01, 0xe0, 0x04, 0x30, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0x28, 0x08, 0xdb, 0xf2, + 0x28, 0x08, 0xd1, 0x04, 0x20, 0x00, 0x43, 0xc0, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x48, + 0x18, 0x40, 0x01, 0x00, 0x19, 0x07, 0x78, 0xb8, + 0x49, 0x25, 0xf0, 0x07, 0xfe, 0xd1, 0x79, 0x78, + 0x23, 0x02, 0x43, 0x18, 0x71, 0x78, 0x78, 0xbe, + 0x20, 0xff, 0x70, 0xb8, 0x21, 0x00, 0x1d, 0xf8, + 0x30, 0x19, 0x73, 0x01, 0x21, 0x06, 0x73, 0x41, + 0x78, 0xf8, 0x79, 0x39, 0x42, 0x88, 0xd1, 0x11, + 0x79, 0x78, 0x07, 0xc0, 0x0f, 0xc0, 0x28, 0x01, + 0xd0, 0x0c, 0x20, 0x00, 0x70, 0xf8, 0x71, 0x38, + 0x71, 0x78, 0x48, 0x17, 0x80, 0x38, 0x6a, 0xb8, + 0x68, 0x00, 0xf0, 0x02, 0xfc, 0xf5, 0x6a, 0xb8, + 0xf0, 0x02, 0xfc, 0xf2, 0x4f, 0x12, 0x00, 0x68, + 0x49, 0x12, 0x52, 0x0f, 0x00, 0x71, 0x4a, 0x12, + 0x52, 0x57, 0x21, 0x00, 0x4a, 0x11, 0x52, 0x11, + 0x1c, 0x30, 0x1c, 0x29, 0xf0, 0x02, 0xff, 0xf0, + 0x20, 0x00, 0x00, 0x41, 0x18, 0x09, 0x01, 0x09, + 0x5a, 0x61, 0x42, 0xb9, 0xd1, 0x04, 0x30, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0x28, 0x08, 0xdb, 0xf4, + 0x28, 0x08, 0xd1, 0x03, 0x21, 0x00, 0x48, 0x08, + 0x71, 0x01, 0x70, 0x01, 0x20, 0x00, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x44, 0x70, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x49, 0x38, + 0x2e, 0x08, 0x49, 0x00, 0x2e, 0x08, 0x49, 0x78, + 0x2e, 0x08, 0x03, 0xbc, 0xb5, 0x80, 0x1c, 0x07, + 0x30, 0x28, 0xf0, 0x02, 0xfc, 0x9b, 0x49, 0x07, + 0x64, 0x88, 0x65, 0x08, 0x65, 0x48, 0x19, 0xc0, + 0x64, 0xc8, 0x20, 0x00, 0x64, 0x08, 0x64, 0x4f, + 0x49, 0x03, 0x84, 0x08, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x03, 0xc4, + 0x2c, 0x00, 0x01, 0x00, 0xb5, 0x80, 0x1c, 0x07, + 0x30, 0x28, 0xf0, 0x02, 0xfc, 0x83, 0x49, 0x06, + 0x66, 0x08, 0x66, 0x88, 0x66, 0xc8, 0x19, 0xc0, + 0x66, 0x48, 0x20, 0x00, 0x65, 0x88, 0x65, 0xcf, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x03, 0xc4, 0xb4, 0x80, 0x04, 0x09, + 0x0c, 0x09, 0x88, 0x02, 0x42, 0x8a, 0xd0, 0x18, + 0x4a, 0x0d, 0x8f, 0x13, 0x2b, 0x01, 0xd0, 0x04, + 0x23, 0x01, 0x87, 0x13, 0x8f, 0x17, 0x2f, 0x01, + 0xd1, 0xfb, 0x88, 0x03, 0x42, 0x8b, 0xd0, 0x03, + 0x80, 0x01, 0x88, 0x03, 0x42, 0x8b, 0xd1, 0xfb, + 0x8f, 0x11, 0x1c, 0x10, 0x29, 0x00, 0xd0, 0x04, + 0x21, 0x00, 0x87, 0x01, 0x8f, 0x02, 0x2a, 0x00, + 0xd1, 0xfb, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, + 0x2c, 0x00, 0x1f, 0xc0, 0xb5, 0x80, 0x48, 0x1f, + 0x8f, 0x40, 0x28, 0x00, 0xd1, 0x37, 0x4f, 0x1e, + 0x88, 0x38, 0x12, 0x00, 0x4a, 0x1d, 0x28, 0x06, + 0xd0, 0x1e, 0xdc, 0x08, 0x28, 0x06, 0xd2, 0x26, + 0xa3, 0x01, 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, + 0x2a, 0x12, 0x12, 0x0d, 0x22, 0x12, 0x28, 0x07, + 0xd0, 0x15, 0x28, 0x09, 0xd0, 0x0b, 0x28, 0x0b, + 0xd0, 0x14, 0x28, 0x80, 0xd1, 0x17, 0xf0, 0x00, + 0xf9, 0x1f, 0xe0, 0x18, 0x88, 0x79, 0x88, 0x38, + 0xf0, 0x00, 0xf8, 0x24, 0xe0, 0x13, 0x88, 0x79, + 0x88, 0x38, 0xf0, 0x00, 0xf8, 0xbd, 0xe0, 0x0e, + 0xf0, 0x00, 0xf9, 0x6a, 0xe0, 0x0b, 0xf0, 0x00, + 0xf9, 0xd5, 0xe0, 0x08, 0x88, 0x79, 0x88, 0x38, + 0xf0, 0x00, 0xfc, 0x70, 0xe0, 0x03, 0x48, 0x08, + 0x8e, 0x81, 0x31, 0x01, 0x86, 0x81, 0x21, 0x00, + 0x1c, 0x38, 0xf7, 0xff, 0xff, 0x9f, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x1f, 0xc0, + 0x2c, 0x00, 0x00, 0xfc, 0x2c, 0x00, 0x01, 0x00, + 0x2e, 0x08, 0x04, 0x04, 0xb5, 0xf0, 0x04, 0x04, + 0x0c, 0x24, 0x04, 0x0d, 0x0c, 0x2d, 0x1c, 0x17, + 0x2d, 0x10, 0xdd, 0x03, 0x20, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xf0, 0x19, 0xf8, 0x32, + 0x1c, 0x68, 0x10, 0x40, 0x00, 0x40, 0x04, 0x01, + 0x0c, 0x09, 0x1c, 0x88, 0x00, 0x40, 0x1d, 0x02, + 0x48, 0x1c, 0x6c, 0x03, 0x18, 0x9d, 0x6c, 0x46, + 0x4b, 0x1b, 0x42, 0xb5, 0xdd, 0x0a, 0x88, 0x19, + 0x1c, 0x18, 0x23, 0x20, 0x43, 0x19, 0x80, 0x01, + 0xf0, 0x19, 0xf8, 0x52, 0x20, 0x01, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x64, 0x05, 0x35, 0x28, + 0x42, 0xb5, 0xdd, 0x04, 0x88, 0x1e, 0x1c, 0x1d, + 0x23, 0x10, 0x43, 0x33, 0x80, 0x2b, 0x6d, 0x03, + 0x80, 0x9c, 0x6d, 0x04, 0x80, 0xe2, 0x23, 0x00, + 0x29, 0x00, 0xdd, 0x08, 0x88, 0x3d, 0x00, 0x5c, + 0x6d, 0x06, 0x19, 0xa4, 0x81, 0x25, 0x33, 0x01, + 0x37, 0x02, 0x42, 0x8b, 0xdb, 0xf6, 0x6d, 0x01, + 0x18, 0x8a, 0x6c, 0xc3, 0x42, 0x9a, 0xd9, 0x00, + 0x6c, 0x82, 0x60, 0x0a, 0x65, 0x02, 0xf0, 0x19, + 0xf8, 0x2b, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x03, 0xc4, + 0x2c, 0x00, 0x00, 0xf8, 0xb4, 0xf0, 0x04, 0x04, + 0x0c, 0x24, 0x04, 0x08, 0x0c, 0x00, 0x28, 0x10, + 0xdd, 0x02, 0x20, 0x02, 0xbc, 0xf0, 0x47, 0x70, + 0x30, 0x01, 0x4f, 0x1c, 0x40, 0x07, 0x1c, 0xb8, + 0x00, 0x40, 0x1d, 0x01, 0x48, 0x1a, 0x6d, 0x83, + 0x18, 0x5d, 0x6d, 0xc6, 0x4b, 0x19, 0x42, 0xb5, + 0xdd, 0x07, 0x88, 0x19, 0x1c, 0x18, 0x23, 0x02, + 0x43, 0x19, 0x80, 0x01, 0x20, 0x01, 0xbc, 0xf0, + 0x47, 0x70, 0x65, 0x85, 0x35, 0x28, 0x42, 0xb5, + 0xdd, 0x04, 0x88, 0x1e, 0x1c, 0x1d, 0x23, 0x01, + 0x43, 0x33, 0x80, 0x2b, 0x6e, 0x83, 0x80, 0x9c, + 0x6e, 0x84, 0x80, 0xe1, 0x23, 0x00, 0x2f, 0x00, + 0xdd, 0x08, 0x88, 0x15, 0x00, 0x5c, 0x6e, 0x86, + 0x19, 0xa4, 0x81, 0x25, 0x32, 0x02, 0x33, 0x01, + 0x42, 0xbb, 0xdb, 0xf6, 0x6e, 0x82, 0x18, 0x51, + 0x6e, 0x43, 0x42, 0x99, 0xd3, 0x00, 0x6e, 0x01, + 0x60, 0x11, 0x66, 0x81, 0x20, 0x00, 0xbc, 0xf0, + 0x47, 0x70, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, + 0x2e, 0x08, 0x03, 0xc4, 0x2c, 0x00, 0x00, 0xf8, + 0xb5, 0xb0, 0x04, 0x04, 0x0c, 0x24, 0x04, 0x0d, + 0x0c, 0x2d, 0x1c, 0x17, 0xf0, 0x18, 0xff, 0x9a, + 0x1c, 0x20, 0x1c, 0x29, 0x1c, 0x3a, 0xf7, 0xff, + 0xff, 0xa9, 0x1c, 0x07, 0xf0, 0x18, 0xff, 0xc8, + 0x1c, 0x38, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0xb4, 0xf0, 0x04, 0x04, 0x0c, 0x24, 0x04, 0x09, + 0x0c, 0x09, 0x29, 0x08, 0xdd, 0x02, 0x20, 0x02, + 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x88, 0x1d, 0xc7, + 0x37, 0x01, 0x48, 0x19, 0x6d, 0x83, 0x19, 0xdd, + 0x6d, 0xc6, 0x4b, 0x18, 0x42, 0xb5, 0xdd, 0x07, + 0x88, 0x19, 0x1c, 0x18, 0x23, 0x02, 0x43, 0x19, + 0x80, 0x01, 0x20, 0x01, 0xbc, 0xf0, 0x47, 0x70, + 0x65, 0x85, 0x35, 0x28, 0x42, 0xb5, 0xdd, 0x04, + 0x88, 0x1e, 0x1c, 0x1d, 0x23, 0x01, 0x43, 0x33, + 0x80, 0x2b, 0x6e, 0x83, 0x80, 0x9c, 0x6e, 0x84, + 0x80, 0xe7, 0x23, 0x00, 0x6e, 0x84, 0x29, 0x00, + 0xdd, 0x06, 0xca, 0x40, 0x00, 0x9d, 0x19, 0x2d, + 0x60, 0xae, 0x33, 0x01, 0x42, 0x8b, 0xdb, 0xf8, + 0x6e, 0x81, 0x19, 0xca, 0x6e, 0x43, 0x42, 0x9a, + 0xd3, 0x00, 0x6e, 0x02, 0x60, 0x0a, 0x66, 0x82, + 0x20, 0x00, 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x03, 0xc4, 0x2c, 0x00, 0x00, 0xf8, + 0xb5, 0x80, 0x48, 0x28, 0x88, 0x00, 0x06, 0x00, + 0x0e, 0x00, 0x4f, 0x27, 0x28, 0x01, 0xd0, 0x13, + 0x28, 0x02, 0xd0, 0x1a, 0x28, 0x03, 0xd1, 0x0c, + 0x68, 0x38, 0x88, 0x41, 0x29, 0x0e, 0xdb, 0x02, + 0x88, 0x41, 0x29, 0x0f, 0xdd, 0x2f, 0x88, 0x01, + 0x04, 0x09, 0x88, 0x40, 0x43, 0x08, 0xf0, 0x0a, + 0xfe, 0x43, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x68, 0x38, 0x88, 0x82, 0x88, 0x41, 0x88, 0x00, + 0xf0, 0x0d, 0xfd, 0x22, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0x38, 0x88, 0x81, 0x04, 0x09, + 0x88, 0xc2, 0x43, 0x11, 0x88, 0x02, 0x04, 0x12, + 0x88, 0x40, 0x43, 0x10, 0xf0, 0x0d, 0xf9, 0xc6, + 0x68, 0x38, 0x88, 0x41, 0x29, 0x0e, 0xd1, 0x08, + 0x88, 0x81, 0x04, 0x09, 0x88, 0xc0, 0x43, 0x08, + 0xf0, 0x0a, 0xfc, 0xc0, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x01, 0xf0, 0x0a, 0xfc, 0xba, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x88, 0x41, + 0x48, 0x08, 0x29, 0x0e, 0xd1, 0x02, 0x21, 0x00, + 0x60, 0x01, 0xe0, 0x01, 0x21, 0x01, 0x60, 0x01, + 0x68, 0x00, 0xf0, 0x00, 0xfb, 0xc3, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x00, 0x00, 0xfc, + 0x2e, 0x08, 0x03, 0xc4, 0x2e, 0x08, 0x04, 0xfc, + 0xb5, 0x90, 0x48, 0x31, 0x88, 0x00, 0x06, 0x04, + 0x0e, 0x24, 0x48, 0x30, 0x22, 0x03, 0x21, 0x02, + 0x4f, 0x2f, 0x2c, 0x08, 0xd2, 0x4f, 0xa3, 0x02, + 0x5d, 0x1b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x04, 0x4b, 0x10, 0x16, 0x1c, 0x28, 0x34, 0x3f, + 0x68, 0x39, 0x88, 0x49, 0x06, 0x09, 0x0e, 0x09, + 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, 0xf0, 0x03, + 0xfa, 0x85, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x03, 0xf7, 0xfd, 0xff, 0xdd, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x20, 0x02, 0xf7, 0xfd, + 0xff, 0xd7, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x88, 0x00, 0x4b, 0x1e, 0x28, 0x00, 0xd0, 0x03, + 0x60, 0x1a, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x60, 0x19, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x88, 0x00, 0x4b, 0x19, 0x28, 0x00, 0xd0, 0x03, + 0x60, 0x1a, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x60, 0x19, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0xf0, 0x02, 0xfe, 0x50, 0x68, 0x39, 0x88, 0x4a, + 0x1d, 0x08, 0x88, 0x09, 0xf7, 0xfe, 0xf8, 0x4e, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x68, 0x38, + 0x88, 0x81, 0x04, 0x09, 0x88, 0xc2, 0x18, 0x8a, + 0x88, 0x01, 0x04, 0x09, 0x88, 0x40, 0x50, 0x0a, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x1d, 0xf8, + 0x30, 0x39, 0x8e, 0x81, 0x31, 0x01, 0x86, 0x81, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0xfc, 0x2c, 0x00, 0x01, 0x00, + 0x2e, 0x08, 0x03, 0xc4, 0x6e, 0x00, 0x13, 0x00, + 0x6e, 0x00, 0x12, 0x00, 0xb5, 0x90, 0xb0, 0x84, + 0x48, 0x76, 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, + 0x4c, 0x75, 0x4f, 0x76, 0x28, 0x0a, 0xd2, 0x60, + 0xa3, 0x01, 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, + 0x04, 0x0e, 0x16, 0x39, 0x5d, 0x85, 0x8f, 0xbc, + 0xc4, 0xd2, 0xf0, 0x0a, 0xff, 0xfb, 0x90, 0x03, + 0x14, 0x00, 0x68, 0x39, 0x80, 0x08, 0x98, 0x03, + 0x68, 0x39, 0x80, 0x48, 0xe0, 0xcd, 0x20, 0x1e, + 0xa9, 0x03, 0xf0, 0x0a, 0xfe, 0xfd, 0x98, 0x03, + 0x68, 0x39, 0x80, 0x08, 0xe0, 0xc5, 0x1c, 0x20, + 0xf0, 0x0d, 0xfa, 0xf4, 0x20, 0x00, 0x00, 0x81, + 0x58, 0x61, 0x00, 0x42, 0x68, 0x3b, 0x52, 0x99, + 0x30, 0x01, 0x28, 0x04, 0xdd, 0xf7, 0x20, 0x07, + 0x00, 0x81, 0x58, 0x61, 0x00, 0x42, 0x68, 0x3b, + 0x18, 0xd2, 0x3a, 0x40, 0x87, 0x91, 0x30, 0x01, + 0x28, 0x0b, 0xdd, 0xf5, 0x20, 0x0d, 0x00, 0x81, + 0x58, 0x61, 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, + 0x3a, 0x40, 0x87, 0x51, 0x30, 0x01, 0x28, 0x12, + 0xdd, 0xf5, 0xe0, 0xa2, 0x20, 0x13, 0x00, 0x81, + 0x58, 0x61, 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, + 0x3a, 0x40, 0x83, 0x51, 0x30, 0x01, 0x28, 0x15, + 0xdd, 0xf5, 0x20, 0x00, 0x00, 0x81, 0x19, 0x09, + 0x6d, 0x89, 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, + 0x80, 0xd1, 0x30, 0x01, 0x28, 0x0a, 0xdd, 0xf5, + 0x20, 0x00, 0x00, 0x81, 0x19, 0x09, 0x31, 0x80, + 0x68, 0x49, 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, + 0x83, 0x91, 0x30, 0x01, 0x28, 0x01, 0xdd, 0xf4, + 0xe0, 0x7f, 0xe0, 0x79, 0x20, 0x02, 0x00, 0x81, + 0x19, 0x09, 0x31, 0x80, 0x68, 0x49, 0x00, 0x42, + 0x68, 0x3b, 0x18, 0xd2, 0x3a, 0x40, 0x87, 0x91, + 0x30, 0x01, 0x28, 0x05, 0xdd, 0xf3, 0x20, 0x09, + 0x00, 0x81, 0x19, 0x09, 0x31, 0x80, 0x68, 0x49, + 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, 0x3a, 0x40, + 0x86, 0xd1, 0x30, 0x01, 0x28, 0x0f, 0xdd, 0xf3, + 0x20, 0x11, 0x00, 0x81, 0x19, 0x09, 0x31, 0x80, + 0x68, 0x49, 0x00, 0x42, 0x68, 0x3b, 0x18, 0xd2, + 0x3a, 0x40, 0x86, 0x91, 0x30, 0x01, 0x28, 0x13, + 0xdd, 0xf3, 0xe0, 0x56, 0x22, 0x00, 0x21, 0x00, + 0x20, 0x01, 0x02, 0xc0, 0xf7, 0xff, 0xfe, 0x48, + 0x6f, 0xb8, 0x49, 0x2d, 0x80, 0x08, 0xe0, 0x4c, + 0x46, 0x68, 0xf0, 0x10, 0xf8, 0xdb, 0x98, 0x00, + 0x0c, 0x00, 0x68, 0x39, 0x80, 0x08, 0x98, 0x00, + 0x68, 0x39, 0x80, 0x48, 0x98, 0x01, 0x0c, 0x00, + 0x68, 0x39, 0x80, 0x88, 0x98, 0x01, 0x68, 0x39, + 0x80, 0xc8, 0x98, 0x02, 0x0c, 0x00, 0x68, 0x39, + 0x81, 0x08, 0x98, 0x02, 0x68, 0x39, 0x81, 0x48, + 0x20, 0x00, 0x68, 0x39, 0x81, 0x88, 0x68, 0x38, + 0x89, 0x81, 0x23, 0x01, 0x03, 0xdb, 0x43, 0x19, + 0x81, 0x81, 0x48, 0x1c, 0x68, 0x39, 0x81, 0xc8, + 0x48, 0x1b, 0x68, 0x01, 0x14, 0x09, 0x68, 0x3a, + 0x82, 0x11, 0x68, 0x00, 0x68, 0x39, 0x82, 0x48, + 0xe0, 0x1f, 0x20, 0x19, 0x06, 0x80, 0x6b, 0x80, + 0x06, 0x00, 0x0e, 0x00, 0x68, 0x39, 0x80, 0x08, + 0xe0, 0x17, 0x68, 0x38, 0x88, 0x01, 0x04, 0x09, + 0x88, 0x40, 0x18, 0x08, 0x68, 0x00, 0x90, 0x03, + 0x14, 0x00, 0x68, 0x39, 0x80, 0x08, 0x98, 0x03, + 0x68, 0x39, 0x80, 0x48, 0xe0, 0x09, 0x48, 0x0d, + 0x68, 0x00, 0x68, 0x39, 0x80, 0x08, 0xe0, 0x04, + 0x1d, 0xf8, 0x30, 0x39, 0x8e, 0x81, 0x31, 0x01, + 0x86, 0x81, 0xb0, 0x04, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x00, 0xfc, + 0x2e, 0x08, 0x46, 0x70, 0x2e, 0x08, 0x03, 0xc4, + 0x2c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x26, 0x10, + 0x2e, 0x08, 0x05, 0x78, 0x2e, 0x08, 0x00, 0x58, + 0xb5, 0xb0, 0x4f, 0x60, 0x25, 0x00, 0x24, 0x01, + 0x6f, 0xf8, 0x28, 0x00, 0xd0, 0x08, 0xf0, 0x06, + 0xfc, 0x1f, 0x28, 0x00, 0xd0, 0x00, 0x67, 0xfd, + 0x1c, 0x20, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x6c, 0x38, 0x28, 0x00, 0xd1, 0x03, 0x1c, 0x28, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x6d, 0x78, + 0x6d, 0x39, 0x42, 0x81, 0xd1, 0x03, 0x1c, 0x28, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x88, 0x81, + 0x06, 0x09, 0x0e, 0x09, 0x29, 0x12, 0xd2, 0x57, + 0xa3, 0x01, 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, + 0x08, 0x0f, 0x19, 0x13, 0x1f, 0x4f, 0x23, 0x2e, + 0x39, 0x44, 0x54, 0x5e, 0x65, 0x6a, 0x6e, 0x72, + 0x79, 0x80, 0x89, 0xc3, 0x89, 0x82, 0x89, 0x41, + 0x89, 0x00, 0xf0, 0x05, 0xff, 0x7d, 0xe0, 0x72, + 0x89, 0x00, 0xf0, 0x05, 0xff, 0x61, 0xe0, 0x6e, + 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, 0xf0, 0x06, + 0xf8, 0x3b, 0xe0, 0x68, 0x89, 0x82, 0x89, 0x41, + 0x89, 0x00, 0xf0, 0x05, 0xff, 0xe3, 0xe0, 0x62, + 0x89, 0x00, 0xf0, 0x06, 0xf8, 0x79, 0xe0, 0x5e, + 0x8a, 0x42, 0x8a, 0x01, 0xb4, 0x06, 0x89, 0xc3, + 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, 0xf0, 0x06, + 0xf8, 0xfd, 0xb0, 0x02, 0xe0, 0x53, 0x8a, 0x42, + 0x8a, 0x01, 0xb4, 0x06, 0x89, 0xc3, 0x89, 0x82, + 0x89, 0x41, 0x89, 0x00, 0xf0, 0x06, 0xf9, 0x44, + 0xb0, 0x02, 0xe0, 0x48, 0x89, 0x83, 0x89, 0x42, + 0x89, 0x00, 0x49, 0x2f, 0xf0, 0x06, 0xfa, 0x85, + 0x21, 0x00, 0x48, 0x2d, 0xf7, 0xff, 0xfc, 0x6e, + 0xe0, 0x3d, 0x89, 0xc1, 0x04, 0x0b, 0x14, 0x1b, + 0x89, 0x81, 0x04, 0x0a, 0x14, 0x12, 0x89, 0x41, + 0x89, 0x00, 0xf0, 0x06, 0xfa, 0xa5, 0xe0, 0x32, + 0x89, 0x00, 0xf0, 0x06, 0xf8, 0x59, 0xe0, 0x2e, + 0xe0, 0x2d, 0x89, 0xc1, 0x04, 0x09, 0x8a, 0x02, + 0x18, 0x8b, 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, + 0xf0, 0x06, 0xfa, 0xde, 0xe0, 0x23, 0x89, 0xc3, + 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, 0xf0, 0x06, + 0xfb, 0x09, 0xe0, 0x1c, 0x89, 0x41, 0x89, 0x00, + 0xf0, 0x06, 0xf8, 0x7a, 0xe0, 0x17, 0x89, 0x00, + 0xf0, 0x06, 0xf8, 0x94, 0xe0, 0x13, 0x89, 0x00, + 0xf0, 0x06, 0xf8, 0xa4, 0xe0, 0x0f, 0x67, 0xfc, + 0x89, 0x82, 0x89, 0x41, 0x89, 0x00, 0xf0, 0x06, + 0xfb, 0xdd, 0xe0, 0x08, 0x89, 0xc3, 0x89, 0x82, + 0x89, 0x41, 0x89, 0x00, 0xf0, 0x06, 0xfc, 0x40, + 0xe0, 0x01, 0xf0, 0x06, 0xfc, 0xd7, 0x6d, 0x78, + 0x88, 0xc0, 0x6c, 0x39, 0x1a, 0x08, 0x64, 0x38, + 0x6c, 0x79, 0x1a, 0x08, 0x28, 0x28, 0xdb, 0x05, + 0x48, 0x08, 0x88, 0x01, 0x23, 0x10, 0x43, 0xdb, + 0x40, 0x19, 0x80, 0x01, 0x6d, 0x78, 0x68, 0x00, + 0x65, 0x78, 0x1c, 0x20, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x03, 0xc4, + 0x2c, 0x00, 0x01, 0x20, 0x2c, 0x00, 0x00, 0xf8, + 0xb5, 0x80, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x09, + 0x0e, 0x09, 0x89, 0xd7, 0x23, 0xc7, 0x40, 0x7b, + 0x81, 0xd3, 0x4b, 0x06, 0x68, 0x1f, 0x37, 0x01, + 0x60, 0x1f, 0x2f, 0x28, 0xda, 0x03, 0x4b, 0x04, + 0x68, 0x1b, 0xf0, 0x14, 0xfd, 0x09, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x44, + 0x2e, 0x08, 0x01, 0x94, 0xb5, 0x90, 0x4f, 0x5c, + 0x6e, 0xf8, 0x6e, 0xb9, 0x42, 0x81, 0xd0, 0x5a, + 0x88, 0x81, 0x0a, 0x0a, 0x2a, 0x0a, 0xd2, 0x57, + 0xa3, 0x01, 0x5c, 0x9b, 0x00, 0x5b, 0x44, 0x9f, + 0x97, 0x04, 0x3d, 0x97, 0x97, 0x43, 0x97, 0x97, + 0x6a, 0x70, 0x06, 0x09, 0x0e, 0x09, 0x24, 0x00, + 0x29, 0x0c, 0xd2, 0x49, 0xa3, 0x01, 0x5c, 0x5b, + 0x00, 0x5b, 0x44, 0x9f, 0x1d, 0x09, 0x13, 0x2a, + 0x89, 0x89, 0x89, 0x89, 0x89, 0x27, 0x89, 0x05, + 0x89, 0x00, 0xf0, 0x03, 0xf8, 0xb7, 0xe0, 0x7f, + 0x22, 0x00, 0xb4, 0x04, 0x89, 0x01, 0x1c, 0x23, + 0x4a, 0x48, 0x1e, 0x50, 0xf7, 0xfc, 0xfd, 0x84, + 0xb0, 0x01, 0xe0, 0x75, 0x22, 0x00, 0xb4, 0x04, + 0x89, 0x02, 0x1c, 0x23, 0x49, 0x43, 0x1e, 0x48, + 0xf7, 0xfc, 0xfd, 0x7a, 0xb0, 0x01, 0xe0, 0x6b, + 0x8a, 0x02, 0xb4, 0x04, 0x89, 0xc3, 0x89, 0x82, + 0x89, 0x41, 0x89, 0x00, 0xf7, 0xfc, 0xfd, 0x70, + 0xb0, 0x01, 0xe0, 0x61, 0xf7, 0xfc, 0xfd, 0x40, + 0xe0, 0x5e, 0x21, 0x18, 0x20, 0x14, 0xf7, 0xfe, + 0xfd, 0xd9, 0xe0, 0x59, 0x06, 0x09, 0xd1, 0x57, + 0x89, 0x00, 0xf7, 0xfc, 0xfe, 0xb7, 0xe0, 0x53, + 0x06, 0x09, 0x0e, 0x09, 0x29, 0x06, 0xd2, 0x0b, + 0xa3, 0x01, 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, + 0x02, 0x08, 0x0c, 0x10, 0x14, 0x18, 0x89, 0x00, + 0xf7, 0xfe, 0xf8, 0x9a, 0xe0, 0x44, 0xe0, 0x54, + 0xe0, 0x42, 0x89, 0x00, 0xf7, 0xfe, 0xf8, 0xba, + 0xe0, 0x3e, 0x89, 0x00, 0xf7, 0xfe, 0xf9, 0x48, + 0xe0, 0x3a, 0x89, 0x00, 0xf7, 0xfe, 0xfa, 0x2c, + 0xe0, 0x36, 0x89, 0x00, 0xf7, 0xfe, 0xfa, 0x5e, + 0xe0, 0x32, 0x89, 0x00, 0x06, 0x00, 0x0e, 0x00, + 0xf7, 0xfe, 0xfa, 0x3a, 0xe0, 0x2c, 0x06, 0x08, + 0xd1, 0x2a, 0x6f, 0xb8, 0x30, 0x01, 0x67, 0xb8, + 0xe0, 0x26, 0x06, 0x09, 0x0e, 0x09, 0x29, 0x08, + 0xd2, 0x22, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x0c, 0x08, 0x0f, + 0x12, 0x16, 0x19, 0x1c, 0x89, 0x00, 0xf0, 0x01, + 0xf9, 0x83, 0xe0, 0x15, 0x89, 0x00, 0xf0, 0x01, + 0xf9, 0xab, 0xe0, 0x11, 0xf0, 0x01, 0xf9, 0xf6, + 0xe0, 0x0e, 0xf0, 0x01, 0xfa, 0x4d, 0xe0, 0x0b, + 0x89, 0x00, 0xf0, 0x01, 0xfa, 0xd1, 0xe0, 0x07, + 0xf0, 0x01, 0xfb, 0x0a, 0xe0, 0x04, 0xf0, 0x01, + 0xfb, 0x23, 0xe0, 0x01, 0xf0, 0x01, 0xfa, 0x80, + 0x6e, 0xf8, 0x88, 0xc0, 0x6d, 0xb9, 0x1a, 0x08, + 0x65, 0xb8, 0x6d, 0xf9, 0x1a, 0x08, 0x28, 0x28, + 0xdb, 0x04, 0x48, 0x07, 0x88, 0x01, 0x08, 0x49, + 0x00, 0x49, 0x80, 0x01, 0x6e, 0xf8, 0x68, 0x00, + 0x66, 0xf8, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, + 0x2c, 0x00, 0x00, 0xf8, 0xb5, 0x80, 0x06, 0x00, + 0x0e, 0x00, 0x1c, 0x17, 0x28, 0x03, 0xd0, 0x0b, + 0x28, 0x07, 0xd0, 0x0e, 0x28, 0x08, 0xd1, 0x03, + 0x88, 0x38, 0xf0, 0x02, 0xfa, 0x43, 0x80, 0x78, + 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x21, 0x18, 0x20, 0x14, 0xf7, 0xfe, 0xfd, 0x4e, + 0xe7, 0xf6, 0x88, 0x79, 0x88, 0x38, 0x1d, 0x3a, + 0xf0, 0x02, 0xf8, 0xb4, 0x49, 0x01, 0x68, 0x09, + 0x80, 0x08, 0xe7, 0xed, 0x2e, 0x08, 0x03, 0xc4, + 0x48, 0x0d, 0x6f, 0xc0, 0x28, 0x00, 0xd1, 0x0c, + 0x49, 0x0c, 0x60, 0x48, 0x48, 0x0c, 0x8e, 0x83, + 0x49, 0x0c, 0x22, 0x01, 0x2b, 0x00, 0xd0, 0x05, + 0x8d, 0x03, 0x86, 0x8b, 0x8d, 0x43, 0x86, 0xcb, + 0x87, 0x82, 0x47, 0x70, 0x8e, 0xc3, 0x2b, 0x00, + 0xd0, 0xfb, 0x8d, 0x83, 0x86, 0x8b, 0x8d, 0xc3, + 0x86, 0xcb, 0x87, 0x82, 0x47, 0x70, 0x00, 0x00, + 0x2c, 0x00, 0x1f, 0x80, 0x2e, 0x08, 0x04, 0x44, + 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x00, 0xc0, + 0xb5, 0x00, 0xf0, 0x00, 0xfa, 0x7f, 0xf7, 0xfd, + 0xf8, 0x73, 0xf7, 0xfc, 0xff, 0x19, 0xf7, 0xfd, + 0xf9, 0x73, 0xf0, 0x03, 0xf8, 0x75, 0xf7, 0xff, + 0xff, 0xcf, 0x48, 0x10, 0x8e, 0x80, 0x28, 0x00, + 0xd1, 0x19, 0x48, 0x0f, 0x6f, 0xc0, 0x28, 0x00, + 0xd1, 0x0f, 0xb0, 0x82, 0x46, 0x69, 0xa8, 0x01, + 0xf0, 0x01, 0xfa, 0xcc, 0xa8, 0x01, 0x78, 0x00, + 0x28, 0x32, 0xda, 0x05, 0xa8, 0x00, 0x78, 0x00, + 0x28, 0x32, 0xda, 0x01, 0xf0, 0x03, 0xfa, 0x90, + 0xb0, 0x02, 0xf7, 0xff, 0xfd, 0xf1, 0x28, 0x00, + 0xd1, 0x01, 0xf7, 0xff, 0xfe, 0xcf, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, + 0x2c, 0x00, 0x1f, 0x80, 0xb4, 0x80, 0x02, 0x4f, + 0x4b, 0x07, 0x40, 0x3b, 0x43, 0x1a, 0x23, 0x19, + 0x06, 0x9b, 0x62, 0x9a, 0x0a, 0x49, 0x02, 0x49, + 0x08, 0x49, 0x07, 0xc0, 0x43, 0x08, 0x49, 0x03, + 0x68, 0x09, 0x60, 0x08, 0xbc, 0x80, 0x47, 0x70, + 0x00, 0x03, 0xfe, 0x00, 0x2e, 0x08, 0x5e, 0x40, + 0xb4, 0x90, 0x4b, 0x0c, 0x68, 0x1f, 0x68, 0x3f, + 0x0f, 0xff, 0x60, 0x07, 0x68, 0x18, 0x68, 0x00, + 0x00, 0x40, 0x0a, 0x47, 0x02, 0x7f, 0x20, 0x19, + 0x06, 0x80, 0x6a, 0x84, 0x4b, 0x06, 0x40, 0x23, + 0x0a, 0x5b, 0x43, 0x3b, 0x60, 0x0b, 0x6a, 0x80, + 0x05, 0xc0, 0x0d, 0xc0, 0x60, 0x10, 0xbc, 0x90, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x5e, 0x40, + 0x00, 0x03, 0xfe, 0x00, 0xb5, 0x00, 0x49, 0x1d, + 0x62, 0xc8, 0x28, 0x00, 0xd0, 0x11, 0x28, 0x01, + 0xd0, 0x1b, 0x28, 0x02, 0xd0, 0x25, 0x28, 0x03, + 0xd1, 0x09, 0x48, 0x19, 0x68, 0x01, 0x08, 0x49, + 0x00, 0x49, 0x60, 0x01, 0x22, 0x01, 0x21, 0x01, + 0x20, 0x00, 0xf0, 0x0a, 0xfe, 0x6f, 0xbc, 0x08, + 0x47, 0x18, 0x48, 0x13, 0x68, 0x01, 0x08, 0x49, + 0x00, 0x49, 0x60, 0x01, 0x48, 0x11, 0x68, 0x01, + 0x04, 0x03, 0x43, 0x19, 0x60, 0x01, 0xbc, 0x08, + 0x47, 0x18, 0x48, 0x0d, 0x68, 0x01, 0x23, 0x01, + 0x43, 0x19, 0x60, 0x01, 0x48, 0x0b, 0x68, 0x01, + 0x4b, 0x0b, 0x40, 0x19, 0x60, 0x01, 0xbc, 0x08, + 0x47, 0x18, 0x48, 0x07, 0x68, 0x01, 0x08, 0x49, + 0x00, 0x49, 0x60, 0x01, 0x22, 0x00, 0x21, 0x00, + 0x20, 0x00, 0xf0, 0x0a, 0xfe, 0x4b, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0xcc, + 0x6a, 0x00, 0x00, 0x18, 0x6c, 0x00, 0x00, 0x20, + 0xff, 0xdf, 0xff, 0xff, 0xb5, 0x90, 0x48, 0x11, + 0x6c, 0xc1, 0x6c, 0x80, 0x1a, 0x0f, 0x48, 0x10, + 0xd5, 0x01, 0x69, 0x01, 0x18, 0x7f, 0x69, 0x00, + 0x10, 0x80, 0x4c, 0x0e, 0x42, 0xb8, 0xda, 0x0b, + 0x68, 0xe0, 0x28, 0x00, 0xd1, 0x08, 0x48, 0x0c, + 0x68, 0x01, 0x23, 0x02, 0x43, 0xdb, 0x40, 0x19, + 0x60, 0x01, 0x20, 0x02, 0xf0, 0x0a, 0xf9, 0xec, + 0x2f, 0x00, 0xd1, 0x04, 0x20, 0x01, 0x61, 0xe0, + 0x6b, 0xa0, 0x30, 0x01, 0x63, 0xa0, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x66, 0x00, 0x00, 0x80, + 0x2e, 0x08, 0x04, 0x4c, 0x2e, 0x08, 0x04, 0xcc, + 0x6c, 0x00, 0x00, 0x20, 0xb5, 0x00, 0x20, 0x03, + 0xf0, 0x0a, 0xf9, 0xd6, 0x20, 0x1e, 0xf0, 0x07, + 0xf9, 0xd3, 0x23, 0x03, 0x02, 0x5b, 0x22, 0x01, + 0x02, 0xd2, 0x21, 0x02, 0x20, 0x1e, 0xf0, 0x06, + 0xff, 0x81, 0x22, 0x00, 0xb4, 0x04, 0x23, 0x02, + 0x22, 0x02, 0x49, 0x07, 0x20, 0x1e, 0xf0, 0x06, + 0xfd, 0xb5, 0x23, 0x01, 0x02, 0x9b, 0x00, 0x5a, + 0x21, 0x01, 0x20, 0x1e, 0xb0, 0x01, 0xf0, 0x06, + 0xff, 0x71, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xff, 0xb5, 0x00, 0x21, 0x00, + 0x20, 0x0e, 0xf0, 0x0c, 0xfd, 0x4b, 0x20, 0x1f, + 0xf0, 0x07, 0xf8, 0xe4, 0x23, 0x03, 0x02, 0x5b, + 0x22, 0x01, 0x02, 0xd2, 0x21, 0x02, 0x20, 0x1f, + 0xf0, 0x06, 0xff, 0x5c, 0x20, 0x00, 0xf0, 0x0a, + 0xf8, 0x41, 0x22, 0x00, 0xb4, 0x04, 0x23, 0x01, + 0x22, 0x02, 0x49, 0x07, 0x20, 0x1f, 0xf0, 0x06, + 0xfd, 0x8d, 0x23, 0x01, 0x02, 0x9b, 0x00, 0x5a, + 0x21, 0x01, 0x20, 0x1f, 0xb0, 0x01, 0xf0, 0x06, + 0xff, 0x49, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xfe, 0xb5, 0x80, 0x20, 0x0f, + 0x02, 0x40, 0x4f, 0x0a, 0x61, 0x38, 0x49, 0x0a, + 0x6c, 0x89, 0x61, 0x79, 0xf0, 0x01, 0xfe, 0x3a, + 0x1d, 0xf9, 0x31, 0x79, 0x61, 0x08, 0x28, 0x00, + 0xd0, 0x05, 0x20, 0x00, 0x61, 0xf8, 0x62, 0x38, + 0x64, 0xf8, 0x20, 0xff, 0x72, 0x08, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x4c, + 0x66, 0x00, 0x00, 0x80, 0xb5, 0x80, 0x4f, 0x05, + 0x69, 0x38, 0x28, 0x00, 0xd0, 0x03, 0xf0, 0x01, + 0xfe, 0x43, 0x20, 0x00, 0x61, 0x38, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0xcc, + 0xb5, 0x00, 0x4a, 0x0d, 0xb4, 0x04, 0x1f, 0x10, + 0x1e, 0x51, 0x1c, 0x13, 0xf7, 0xfc, 0xfb, 0x58, + 0x21, 0x33, 0x06, 0x49, 0x6d, 0x88, 0x6d, 0x4a, + 0x1a, 0x82, 0xb0, 0x01, 0x48, 0x07, 0x62, 0x42, + 0x6d, 0x49, 0x62, 0xc1, 0x21, 0x00, 0x65, 0x81, + 0x21, 0x01, 0x02, 0xc9, 0x64, 0x41, 0x21, 0x01, + 0x30, 0x60, 0x76, 0x01, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x04, 0x4c, + 0xb5, 0x00, 0x4a, 0x10, 0xb4, 0x04, 0x1c, 0x13, + 0x3a, 0x01, 0x49, 0x0f, 0x1e, 0xc8, 0xf7, 0xfc, + 0xfb, 0x37, 0x21, 0x33, 0x06, 0x49, 0x6d, 0x88, + 0x6d, 0x4a, 0x1a, 0x82, 0xb0, 0x01, 0x48, 0x0b, + 0x62, 0x42, 0x6d, 0x49, 0x62, 0xc1, 0x21, 0x00, + 0x65, 0x81, 0x21, 0x01, 0x02, 0xc9, 0x64, 0x41, + 0x21, 0x01, 0x30, 0x60, 0x76, 0x01, 0x48, 0x06, + 0x23, 0x02, 0x68, 0x01, 0x43, 0x19, 0x60, 0x01, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xfe, 0x2e, 0x08, 0x04, 0x4c, + 0x2e, 0x08, 0x00, 0x04, 0x48, 0x03, 0x23, 0x02, + 0x43, 0xdb, 0x68, 0x01, 0x40, 0x19, 0x60, 0x01, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x00, 0x04, + 0xb5, 0xf0, 0x20, 0x0f, 0x02, 0x40, 0x4c, 0x11, + 0x61, 0x20, 0x20, 0x00, 0xf7, 0xfc, 0xfc, 0x4a, + 0x48, 0x0f, 0xf7, 0xfc, 0xfc, 0x47, 0x26, 0x00, + 0x1d, 0xe0, 0x30, 0x59, 0x77, 0x06, 0x25, 0xff, + 0x1d, 0xe7, 0x37, 0x79, 0x70, 0x3d, 0x20, 0x01, + 0x63, 0x78, 0x60, 0xe6, 0x69, 0x78, 0x28, 0x00, + 0xd1, 0x04, 0x20, 0x41, 0x01, 0x40, 0xf0, 0x01, + 0xfd, 0xa9, 0x61, 0x78, 0x69, 0x78, 0x28, 0x00, + 0xd0, 0x01, 0x76, 0x3e, 0x70, 0x3d, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x4c, + 0x00, 0x00, 0x1f, 0xff, 0xb5, 0x00, 0x20, 0x00, + 0xf7, 0xfd, 0xff, 0xde, 0x22, 0x00, 0xb4, 0x04, + 0x23, 0x00, 0x4a, 0x06, 0x21, 0x00, 0x20, 0x00, + 0xf7, 0xfc, 0xfa, 0xd6, 0x21, 0x00, 0x20, 0x0d, + 0xb0, 0x01, 0xf0, 0x0c, 0xfc, 0x6f, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xb5, 0x80, 0x22, 0x00, 0xb4, 0x04, 0x27, 0x00, + 0x1c, 0x3b, 0x4a, 0x17, 0x21, 0x00, 0x20, 0x00, + 0xf7, 0xfc, 0xfa, 0xc2, 0x22, 0x00, 0xb0, 0x01, + 0xb4, 0x04, 0x1c, 0x3b, 0x4a, 0x12, 0x49, 0x13, + 0x20, 0x00, 0xf7, 0xfc, 0xfa, 0xb9, 0x21, 0x33, + 0x06, 0x49, 0x6d, 0x88, 0x6d, 0x4a, 0x1a, 0x82, + 0xb0, 0x01, 0x48, 0x0f, 0x62, 0x42, 0x6d, 0x49, + 0x63, 0x01, 0x21, 0x01, 0x02, 0xc9, 0x64, 0x81, + 0x21, 0x01, 0x65, 0x87, 0x30, 0x60, 0x76, 0x01, + 0x77, 0x07, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, + 0xf7, 0xff, 0xfe, 0x28, 0x20, 0x00, 0xf7, 0xff, + 0xfe, 0x59, 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x0c, + 0xfc, 0x39, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x1f, 0xfe, + 0x2e, 0x08, 0x04, 0x4c, 0xb5, 0xf0, 0x06, 0x05, + 0x0e, 0x2d, 0x20, 0x0f, 0x02, 0x40, 0x4f, 0x2f, + 0x26, 0x33, 0x06, 0x76, 0x61, 0x38, 0x6d, 0xb0, + 0x6d, 0x71, 0x1a, 0x40, 0x62, 0x78, 0x62, 0xb8, + 0x20, 0x00, 0x1d, 0xfc, 0x34, 0x79, 0x60, 0xe0, + 0x2d, 0x00, 0xd0, 0x02, 0x20, 0xff, 0xf7, 0xfd, + 0xff, 0x7b, 0x22, 0x00, 0xb4, 0x04, 0x23, 0x00, + 0x21, 0x00, 0x20, 0x00, 0xf7, 0xfc, 0xfa, 0x74, + 0x22, 0x01, 0x21, 0x01, 0x20, 0x00, 0xb0, 0x01, + 0xf0, 0x0a, 0xfc, 0xac, 0x21, 0x00, 0x20, 0x00, + 0xf0, 0x0a, 0xfd, 0x6c, 0x22, 0x00, 0xb4, 0x04, + 0x23, 0x00, 0x4a, 0x1d, 0x20, 0x00, 0x1e, 0x51, + 0xf7, 0xfc, 0xfa, 0x62, 0x20, 0x01, 0x63, 0x60, + 0x69, 0x60, 0xb0, 0x01, 0x28, 0x00, 0xd1, 0x04, + 0x20, 0x41, 0x01, 0x40, 0xf0, 0x01, 0xfd, 0x12, + 0x61, 0x60, 0x69, 0x60, 0x28, 0x00, 0xd0, 0x03, + 0x20, 0x00, 0x76, 0x20, 0x20, 0xff, 0x70, 0x20, + 0x6d, 0x70, 0x63, 0x38, 0x20, 0x01, 0x02, 0xc0, + 0x64, 0xb8, 0x20, 0x00, 0x26, 0x01, 0x65, 0xb8, + 0x1d, 0xf9, 0x31, 0x59, 0x76, 0x0e, 0x22, 0x00, + 0x21, 0x00, 0x20, 0x00, 0xf7, 0xff, 0xfd, 0xc6, + 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x0c, 0xfb, 0xda, + 0x20, 0x00, 0x60, 0xf8, 0x2d, 0x00, 0xd1, 0x02, + 0xf7, 0xff, 0xfd, 0xf0, 0x61, 0xe6, 0x20, 0x00, + 0x60, 0xb8, 0x66, 0x38, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x4c, + 0x00, 0x00, 0x1f, 0xff, 0xb5, 0xb0, 0x4f, 0x45, + 0x25, 0x00, 0x6d, 0x38, 0x4c, 0x44, 0x28, 0x05, + 0xd2, 0x14, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x10, 0x03, 0x2e, 0x65, + 0x73, 0x00, 0x4d, 0x40, 0x68, 0x28, 0x08, 0x41, + 0xd2, 0x08, 0x08, 0xc0, 0xd3, 0x09, 0xf7, 0xff, + 0xfe, 0xb3, 0x23, 0x04, 0x43, 0xdb, 0x68, 0x28, + 0x40, 0x18, 0x60, 0x28, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x6d, 0x78, 0x28, 0x00, 0xd0, 0xf9, + 0x28, 0x01, 0xd0, 0x01, 0x28, 0x05, 0xd1, 0x06, + 0xf0, 0x00, 0xf8, 0x6c, 0x8e, 0xa0, 0x28, 0x00, + 0xd1, 0xf0, 0xf0, 0x00, 0xf9, 0x29, 0x6d, 0x78, + 0x28, 0x04, 0xd0, 0x01, 0x28, 0x05, 0xd1, 0xe9, + 0x8e, 0xa0, 0x28, 0x00, 0xd1, 0xe6, 0xf0, 0x00, + 0xfa, 0x4b, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x8e, 0xe0, 0x28, 0x00, 0xd1, 0xde, 0x8d, 0xa0, + 0x06, 0x00, 0x0e, 0x00, 0x28, 0x06, 0xd1, 0x15, + 0x48, 0x27, 0x78, 0x00, 0x28, 0x00, 0xd0, 0x06, + 0x6d, 0x78, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x05, + 0xd1, 0x01, 0xf0, 0x00, 0xfc, 0xc5, 0x6d, 0x78, + 0x28, 0x04, 0xd0, 0x01, 0x28, 0x05, 0xd1, 0x01, + 0xf0, 0x00, 0xfc, 0x2e, 0x85, 0xa5, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x8d, 0xa0, 0x28, 0x00, + 0xd1, 0xc0, 0x6d, 0x78, 0x28, 0x01, 0xd0, 0x08, + 0x28, 0x04, 0xd0, 0x0b, 0x28, 0x05, 0xd1, 0xb9, + 0xf0, 0x00, 0xfd, 0xdc, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0xf0, 0x00, 0xfd, 0xb1, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0xf0, 0x00, 0xfd, 0x80, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x8e, 0xe0, + 0x28, 0x00, 0xd1, 0xa7, 0x20, 0x06, 0x85, 0xa0, + 0x85, 0xe5, 0x20, 0x09, 0x02, 0x40, 0x86, 0xe0, + 0x20, 0x04, 0x65, 0x38, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x8e, 0xe0, 0x28, 0x00, 0xd1, 0x99, + 0x8d, 0xa0, 0x06, 0x00, 0x0e, 0x00, 0x28, 0x06, + 0xd1, 0x94, 0x85, 0xa5, 0x65, 0x3d, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x4c, + 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x00, 0x04, + 0x2e, 0x08, 0x04, 0xcc, 0xb5, 0xb0, 0x48, 0x46, + 0x6c, 0xc1, 0x4c, 0x46, 0x64, 0x21, 0x69, 0x60, + 0x1a, 0x09, 0x1d, 0xe7, 0x37, 0x79, 0x63, 0xf9, + 0x29, 0x00, 0xda, 0x02, 0x69, 0x22, 0x18, 0x89, + 0x63, 0xf9, 0x23, 0xff, 0x6b, 0xf9, 0x33, 0x01, + 0x42, 0x99, 0xdb, 0x73, 0x22, 0x01, 0x03, 0x12, + 0x42, 0x91, 0xdd, 0x00, 0x63, 0xfa, 0x6b, 0xf9, + 0x08, 0x89, 0x00, 0x89, 0x63, 0xf9, 0x7a, 0x3a, + 0x2a, 0x00, 0xd0, 0x05, 0x23, 0xff, 0x03, 0x5b, + 0x1a, 0xc2, 0x61, 0xe2, 0x22, 0x00, 0x72, 0x3a, + 0x18, 0x42, 0x49, 0x35, 0x25, 0x12, 0x42, 0x8a, + 0xdd, 0x2c, 0x1a, 0x08, 0x64, 0x38, 0xf0, 0x18, + 0xf8, 0x1d, 0x4b, 0x32, 0x40, 0x18, 0xf0, 0x18, + 0xf8, 0x1d, 0x22, 0x00, 0x49, 0x30, 0xb4, 0x06, + 0x69, 0x60, 0x69, 0x39, 0x18, 0x41, 0x23, 0xff, + 0x03, 0x5b, 0x1a, 0xc9, 0x23, 0x0d, 0x06, 0x9b, + 0x1a, 0xc0, 0x6c, 0x3a, 0x1c, 0x2b, 0xf0, 0x0e, + 0xfd, 0x47, 0x22, 0x00, 0xb0, 0x02, 0x49, 0x28, + 0xb4, 0x06, 0x6b, 0xf8, 0x6c, 0x39, 0x1a, 0x42, + 0x69, 0x39, 0x1c, 0x2b, 0x48, 0x25, 0xf0, 0x0e, + 0xfd, 0x3b, 0xb0, 0x02, 0xf0, 0x17, 0xff, 0xfa, + 0x23, 0x01, 0x04, 0x9b, 0x43, 0x18, 0xf0, 0x17, + 0xff, 0xf9, 0xe0, 0x1d, 0xf0, 0x17, 0xff, 0xf2, + 0x4b, 0x1c, 0x40, 0x18, 0xf0, 0x17, 0xff, 0xf2, + 0x22, 0x00, 0x49, 0x1b, 0xb4, 0x06, 0x69, 0x60, + 0x69, 0x39, 0x18, 0x41, 0x23, 0xff, 0x03, 0x5b, + 0x1a, 0xc9, 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, + 0x6b, 0xfa, 0x1c, 0x2b, 0xf0, 0x0e, 0xfd, 0x1c, + 0xb0, 0x02, 0xf0, 0x17, 0xff, 0xdb, 0x23, 0x01, + 0x04, 0x9b, 0x43, 0x18, 0xf0, 0x17, 0xff, 0xda, + 0x69, 0x60, 0x6b, 0xf9, 0x18, 0x40, 0x23, 0x0d, + 0x06, 0x9b, 0x1a, 0xc1, 0x61, 0x60, 0x4b, 0x0e, + 0x42, 0x99, 0xd3, 0x02, 0x69, 0x21, 0x1a, 0x40, + 0x61, 0x60, 0x23, 0xff, 0x03, 0x5b, 0x69, 0x60, + 0x1a, 0xc0, 0xe0, 0x00, 0xe0, 0x00, 0x62, 0x20, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x80, 0x2e, 0x08, 0x04, 0x4c, + 0x00, 0x1f, 0xfe, 0x00, 0xff, 0xfb, 0xff, 0xff, + 0x9e, 0x00, 0x08, 0x00, 0xcc, 0x1f, 0xe0, 0x00, + 0xcc, 0x1f, 0xfe, 0x00, 0x21, 0x00, 0x23, 0xff, + 0x68, 0x02, 0x33, 0xc1, 0x42, 0x9a, 0xd0, 0x01, + 0x1c, 0x08, 0x47, 0x70, 0x79, 0xc2, 0x0a, 0x12, + 0xd2, 0x01, 0x1c, 0x08, 0x47, 0x70, 0x7a, 0x41, + 0x23, 0x0e, 0x40, 0x19, 0x07, 0x49, 0x7a, 0x82, + 0x05, 0x92, 0x43, 0x11, 0x7a, 0xc2, 0x23, 0xfe, + 0x40, 0x1a, 0x03, 0x92, 0x43, 0x11, 0x7b, 0x02, + 0x01, 0xd2, 0x43, 0x11, 0x7b, 0x40, 0x40, 0x18, + 0x08, 0x40, 0x43, 0x08, 0x49, 0x01, 0x67, 0x08, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x4c, + 0xb5, 0xf0, 0xb0, 0x86, 0x4c, 0x8c, 0x6c, 0xe0, + 0x1d, 0xe7, 0x37, 0x79, 0x1d, 0xfd, 0x35, 0x39, + 0x28, 0x00, 0xd0, 0x04, 0x28, 0x01, 0xd0, 0x3a, + 0x28, 0x02, 0xd1, 0x73, 0xe0, 0x74, 0x69, 0xe0, + 0x6a, 0x21, 0x1a, 0x09, 0x63, 0xf9, 0x1c, 0x0a, + 0xd5, 0x02, 0x69, 0x21, 0x18, 0x51, 0x63, 0xf9, + 0x6b, 0xf9, 0x29, 0x04, 0xdb, 0x67, 0x69, 0x3e, + 0x5c, 0x31, 0x06, 0x0a, 0x65, 0x7a, 0x92, 0x05, + 0x1c, 0x41, 0x69, 0x20, 0x90, 0x04, 0xf0, 0x14, + 0xf8, 0x09, 0x61, 0xe1, 0x5c, 0x70, 0x04, 0x00, + 0x9a, 0x05, 0x18, 0x82, 0x65, 0x7a, 0x92, 0x03, + 0x98, 0x04, 0x31, 0x01, 0xf0, 0x13, 0xff, 0xfe, + 0x61, 0xe1, 0x5c, 0x70, 0x02, 0x00, 0x9a, 0x03, + 0x18, 0x80, 0x65, 0x78, 0x90, 0x02, 0x98, 0x04, + 0x31, 0x01, 0xf0, 0x13, 0xff, 0xf3, 0x61, 0xe1, + 0x5c, 0x70, 0x9a, 0x02, 0x18, 0x80, 0x65, 0x78, + 0x98, 0x04, 0x31, 0x01, 0xf0, 0x13, 0xff, 0xea, + 0x20, 0x01, 0x64, 0xe0, 0x61, 0xe1, 0x6a, 0x20, + 0x69, 0xe1, 0x1a, 0x40, 0x63, 0xf8, 0x1c, 0x01, + 0xd4, 0x05, 0x48, 0x67, 0x69, 0x06, 0x30, 0x80, + 0x69, 0x02, 0x92, 0x01, 0xe0, 0x03, 0x69, 0x20, + 0x18, 0x08, 0x63, 0xf8, 0xe7, 0xf5, 0x6b, 0xf8, + 0x90, 0x00, 0x28, 0x02, 0xdb, 0x22, 0x6d, 0x78, + 0x09, 0x01, 0x01, 0x09, 0x23, 0xff, 0x33, 0xc1, + 0x42, 0x99, 0xd1, 0x31, 0x9a, 0x01, 0x69, 0xe0, + 0x5c, 0x11, 0x02, 0x09, 0x83, 0x29, 0x1c, 0x41, + 0x1c, 0x30, 0xf0, 0x13, 0xff, 0xc3, 0x61, 0xe1, + 0x69, 0x38, 0x5c, 0x40, 0x8b, 0x2a, 0x18, 0x80, + 0x83, 0x28, 0x8b, 0x28, 0x30, 0x06, 0x83, 0x28, + 0x19, 0x88, 0x1f, 0x41, 0x1c, 0x30, 0xf0, 0x13, + 0xff, 0xb5, 0x61, 0xe1, 0x21, 0xff, 0x71, 0x39, + 0x20, 0x02, 0x64, 0xe0, 0x6c, 0xe0, 0x28, 0x02, + 0xd1, 0x00, 0xe0, 0x01, 0xe0, 0x94, 0xe0, 0x93, + 0x6a, 0x20, 0x69, 0xe1, 0x1a, 0x40, 0x63, 0xf8, + 0x1c, 0x01, 0xd5, 0x02, 0x69, 0x20, 0x18, 0x08, + 0x63, 0xf8, 0x79, 0x38, 0x28, 0x00, 0xd0, 0x13, + 0x20, 0x01, 0x02, 0xc0, 0x83, 0xa8, 0xe0, 0x11, + 0x02, 0x01, 0x65, 0x79, 0x9a, 0x01, 0x69, 0xe0, + 0x5c, 0x12, 0x18, 0x51, 0x65, 0x79, 0x1c, 0x41, + 0x1c, 0x30, 0xf0, 0x13, 0xff, 0x8f, 0x61, 0xe1, + 0x98, 0x00, 0x38, 0x01, 0x63, 0xf8, 0xe7, 0xb2, + 0x48, 0x3c, 0x83, 0xa8, 0x8b, 0x28, 0x6b, 0xf9, + 0x42, 0x88, 0xda, 0x01, 0x63, 0xf8, 0xe0, 0x02, + 0x8b, 0xa8, 0x42, 0x81, 0xdb, 0x68, 0x8b, 0xa8, + 0x6b, 0xf9, 0x42, 0x81, 0xdd, 0x00, 0x63, 0xf8, + 0x48, 0x35, 0x21, 0x00, 0x66, 0x78, 0x80, 0x01, + 0x30, 0x02, 0x21, 0xff, 0x31, 0xc1, 0x66, 0x78, + 0x80, 0x01, 0x48, 0x32, 0x66, 0x78, 0x79, 0x39, + 0x29, 0x00, 0xd0, 0x21, 0x21, 0x00, 0x71, 0x39, + 0x69, 0x3b, 0x69, 0x20, 0x18, 0x1a, 0xb4, 0x04, + 0x69, 0xe0, 0x18, 0x18, 0x6b, 0xfa, 0x49, 0x2a, + 0xf0, 0x00, 0xfe, 0xec, 0x6b, 0xf8, 0x38, 0x06, + 0x6e, 0x79, 0x80, 0x08, 0x31, 0x02, 0x66, 0x79, + 0xb0, 0x01, 0x48, 0x25, 0xf7, 0xff, 0xff, 0x02, + 0x8b, 0x28, 0x6b, 0xf9, 0x1a, 0x40, 0x83, 0x28, + 0x69, 0xe0, 0x6b, 0xf9, 0x18, 0x41, 0x69, 0x20, + 0xf0, 0x13, 0xff, 0x4c, 0x61, 0xe1, 0xe0, 0x26, + 0x6b, 0xf9, 0x31, 0x03, 0x80, 0x01, 0x48, 0x1e, + 0x21, 0x01, 0x03, 0xc9, 0x66, 0x78, 0x80, 0x01, + 0x30, 0x02, 0x21, 0xff, 0x66, 0x78, 0x80, 0x01, + 0x48, 0x1a, 0x66, 0x78, 0x69, 0x3b, 0x69, 0x20, + 0x18, 0x1a, 0xb4, 0x04, 0x69, 0xe0, 0x18, 0x18, + 0x6b, 0xfa, 0x49, 0x17, 0xf0, 0x00, 0xfe, 0xbe, + 0x8b, 0x28, 0x6b, 0xf9, 0x1a, 0x40, 0x83, 0x28, + 0x69, 0xe0, 0x6b, 0xfe, 0x19, 0x81, 0x69, 0x20, + 0xb0, 0x01, 0xf0, 0x13, 0xff, 0x27, 0x1d, 0xf0, + 0x30, 0x02, 0x61, 0xe1, 0x63, 0xf8, 0x8b, 0x28, + 0x28, 0x00, 0xd1, 0x01, 0x21, 0x00, 0x64, 0xe0, + 0x21, 0x10, 0x48, 0x0c, 0x85, 0x01, 0x6b, 0xf9, + 0x85, 0x41, 0x21, 0x01, 0x02, 0x49, 0x86, 0x81, + 0xb0, 0x06, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x04, 0x4c, 0x00, 0x00, 0x07, 0xf7, + 0x2c, 0x00, 0x02, 0x00, 0x2c, 0x00, 0x02, 0x04, + 0x2c, 0x00, 0x02, 0x06, 0x2c, 0x00, 0x02, 0x0a, + 0x2c, 0x00, 0x02, 0x09, 0x2c, 0x00, 0x1f, 0xc0, + 0xb5, 0xf0, 0x20, 0x33, 0x06, 0x40, 0x6e, 0x40, + 0xb0, 0x81, 0x4f, 0x77, 0x63, 0xb8, 0x6a, 0xf9, + 0x1a, 0x40, 0x1d, 0xfc, 0x34, 0x79, 0x63, 0xe0, + 0x28, 0x00, 0xda, 0x02, 0x6a, 0x79, 0x18, 0x40, + 0x63, 0xe0, 0x6b, 0xe0, 0x4b, 0x71, 0x42, 0x98, + 0xdc, 0x03, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x6d, 0xb9, 0x48, 0x6e, 0x1d, 0xc5, + 0x35, 0x59, 0x29, 0x00, 0xd1, 0x16, 0x7e, 0x01, + 0x29, 0x00, 0xd1, 0x13, 0x21, 0x01, 0x75, 0x01, + 0x21, 0x05, 0x84, 0x29, 0x23, 0x0d, 0x06, 0x9b, + 0x6c, 0x79, 0x1a, 0xca, 0x68, 0x52, 0x31, 0x08, + 0x23, 0x05, 0x02, 0x5b, 0x64, 0x79, 0x66, 0xba, + 0x42, 0x99, 0xdb, 0x06, 0x21, 0x01, 0x02, 0xc9, + 0x64, 0x79, 0xe0, 0x02, 0x21, 0x00, 0x75, 0x01, + 0x84, 0x29, 0x8c, 0x29, 0x1c, 0x4a, 0x6a, 0xfb, + 0x1a, 0x9a, 0x07, 0x92, 0x0f, 0x92, 0x18, 0x51, + 0x84, 0x29, 0x7e, 0x01, 0x29, 0x00, 0xd0, 0x03, + 0x21, 0x00, 0x66, 0x39, 0x66, 0x79, 0x76, 0x01, + 0x6c, 0x79, 0x4a, 0x58, 0x69, 0x52, 0x42, 0x91, + 0xd0, 0x26, 0x6e, 0x7a, 0x2a, 0x00, 0xd1, 0x10, + 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc9, 0x68, 0x09, + 0x66, 0x79, 0x1c, 0x0a, 0x6e, 0x3b, 0x18, 0x59, + 0x66, 0x39, 0x4b, 0x51, 0x42, 0x99, 0xdb, 0x04, + 0x32, 0x01, 0x31, 0x01, 0x40, 0x19, 0x66, 0x39, + 0x66, 0x7a, 0x6e, 0x79, 0x6d, 0xba, 0x1a, 0x89, + 0x65, 0x21, 0x91, 0x00, 0x8c, 0x2b, 0x4e, 0x4b, + 0x1a, 0xf3, 0x42, 0x8b, 0xd3, 0x04, 0x63, 0xe1, + 0x21, 0x00, 0x65, 0xb9, 0x66, 0x79, 0xe0, 0x0a, + 0x18, 0xd1, 0x63, 0xe3, 0x65, 0xb9, 0xe0, 0x06, + 0x8c, 0x29, 0x4a, 0x44, 0x1a, 0x51, 0x63, 0xe1, + 0x6d, 0xba, 0x18, 0x51, 0x65, 0xb9, 0x49, 0x42, + 0x66, 0x61, 0x8c, 0x2a, 0x6b, 0xe1, 0x18, 0x89, + 0x31, 0x03, 0x83, 0xa9, 0x22, 0x00, 0x6e, 0x61, + 0x80, 0x0a, 0x31, 0x02, 0x22, 0xff, 0x32, 0xe1, + 0x66, 0x61, 0x80, 0x0a, 0x31, 0x02, 0x66, 0x61, + 0x8b, 0xaa, 0x80, 0x0a, 0x31, 0x02, 0x66, 0x61, + 0x7d, 0x00, 0x28, 0x00, 0xd0, 0x1d, 0x4a, 0x37, + 0x80, 0x0a, 0x1c, 0x88, 0x66, 0x60, 0x8c, 0x29, + 0x02, 0x09, 0x6e, 0xba, 0x0f, 0x52, 0x23, 0x06, + 0x40, 0x1a, 0x43, 0x11, 0x23, 0x21, 0x43, 0x19, + 0x80, 0x01, 0x30, 0x02, 0x66, 0x60, 0x6e, 0xb9, + 0x0b, 0x89, 0x23, 0x01, 0x43, 0x19, 0x80, 0x01, + 0x30, 0x02, 0x66, 0x60, 0x6e, 0xb9, 0x00, 0x49, + 0x43, 0x19, 0x80, 0x01, 0x30, 0x02, 0x66, 0x60, + 0xe0, 0x0b, 0x20, 0x01, 0x03, 0xc0, 0x80, 0x08, + 0x31, 0x02, 0x66, 0x61, 0x8c, 0x28, 0x02, 0x00, + 0x23, 0xff, 0x43, 0x18, 0x80, 0x08, 0x31, 0x02, + 0x66, 0x61, 0x48, 0x23, 0x6e, 0x61, 0x80, 0x08, + 0x31, 0x02, 0x66, 0x61, 0x80, 0x08, 0x31, 0x02, + 0x22, 0x33, 0x06, 0x52, 0x66, 0x61, 0x00, 0x53, + 0x6d, 0x90, 0x18, 0xc2, 0xb4, 0x04, 0x08, 0x5a, + 0x6d, 0x50, 0x18, 0xc6, 0x8c, 0x28, 0x4b, 0x1b, + 0x18, 0xc1, 0x00, 0x53, 0x6a, 0xf8, 0x18, 0xc0, + 0x6b, 0xe2, 0x1c, 0x33, 0xf0, 0x00, 0xfd, 0xb6, + 0x6a, 0xf8, 0x6b, 0xe1, 0x18, 0x40, 0x22, 0x33, + 0x06, 0x52, 0x62, 0xf8, 0x6d, 0x92, 0xb0, 0x01, + 0x42, 0x90, 0xdb, 0x02, 0x6a, 0x79, 0x1a, 0x40, + 0x62, 0xf8, 0x21, 0xff, 0x31, 0x11, 0x48, 0x10, + 0x85, 0x01, 0x8b, 0xa9, 0x31, 0x06, 0x85, 0x41, + 0x21, 0x01, 0x02, 0x49, 0x86, 0x81, 0xb0, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x04, 0x4c, 0x00, 0x00, 0x0f, 0xee, + 0x2e, 0x08, 0x04, 0xac, 0xcc, 0x00, 0x0f, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x07, 0xf7, + 0x2c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0xff, 0xff, 0x2c, 0x00, 0x02, 0x09, + 0x2c, 0x00, 0x1f, 0xc0, 0xb5, 0xb0, 0x1c, 0x07, + 0xb0, 0x83, 0x4d, 0x20, 0x6b, 0x28, 0xf7, 0xff, + 0xfa, 0x51, 0x48, 0x1f, 0x6c, 0xc1, 0x6c, 0x80, + 0x1a, 0x08, 0xd5, 0x03, 0x1f, 0xe9, 0x39, 0x79, + 0x69, 0x09, 0x18, 0x40, 0x6e, 0xa9, 0x29, 0x00, + 0xd0, 0x22, 0x29, 0x10, 0xd0, 0x20, 0x29, 0x20, + 0xd0, 0x24, 0x29, 0x30, 0xd1, 0x04, 0x24, 0x2d, + 0x43, 0x44, 0xd5, 0x00, 0x34, 0x3f, 0x11, 0xa4, + 0x46, 0x6a, 0xa8, 0x01, 0xa9, 0x02, 0xf7, 0xff, + 0xfa, 0x17, 0x1b, 0x38, 0x99, 0x02, 0x1a, 0x08, + 0x22, 0x7d, 0x01, 0x52, 0x42, 0x90, 0xdc, 0x01, + 0x42, 0x90, 0xda, 0x05, 0x1a, 0x09, 0x91, 0x02, + 0x22, 0x00, 0x20, 0x00, 0xf7, 0xff, 0xf9, 0xf2, + 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x01, 0x04, 0x1a, 0x24, 0xd5, 0x00, 0x34, 0x1f, + 0x11, 0x64, 0xe7, 0xe1, 0x21, 0x4b, 0x43, 0x41, + 0x20, 0x93, 0xf0, 0x13, 0xfd, 0xb7, 0x1c, 0x04, + 0xe7, 0xda, 0x00, 0x00, 0x2e, 0x08, 0x04, 0xcc, + 0x66, 0x00, 0x00, 0x80, 0xb5, 0x90, 0x1c, 0x07, + 0xb0, 0x83, 0x4c, 0x18, 0x6f, 0x60, 0x30, 0x01, + 0x46, 0x6a, 0x67, 0x60, 0xa8, 0x01, 0xa9, 0x02, + 0xf7, 0xff, 0xf9, 0xe6, 0x4b, 0x14, 0x18, 0xf9, + 0x98, 0x02, 0x1a, 0x40, 0x4b, 0x13, 0x42, 0x98, + 0xdc, 0x04, 0x42, 0xd8, 0xdb, 0x02, 0x69, 0xe0, + 0x28, 0x01, 0xd1, 0x07, 0x91, 0x02, 0x20, 0x00, + 0x90, 0x01, 0x22, 0x00, 0xf7, 0xff, 0xf9, 0xbe, + 0x20, 0x01, 0x61, 0xe0, 0x69, 0xe0, 0x28, 0x00, + 0xd0, 0x0b, 0x6b, 0x20, 0xf7, 0xff, 0xf9, 0xea, + 0x6f, 0x60, 0x67, 0xa0, 0x48, 0x08, 0x60, 0x07, + 0x6f, 0xe0, 0x30, 0x01, 0x67, 0xe0, 0x20, 0x00, + 0x61, 0xe0, 0xb0, 0x03, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0xcc, + 0xff, 0xff, 0xec, 0x78, 0x00, 0x02, 0xbf, 0x20, + 0x2e, 0x08, 0x05, 0x4c, 0xb4, 0xf0, 0x1c, 0x1c, + 0x23, 0x00, 0x9f, 0x04, 0x60, 0x3b, 0x79, 0x85, + 0x23, 0xc0, 0x40, 0x1d, 0x4b, 0x33, 0x2d, 0x80, + 0xd1, 0x16, 0x25, 0x02, 0x60, 0x9d, 0x79, 0xc5, + 0x0a, 0x2b, 0xd3, 0x06, 0x7a, 0x45, 0x23, 0xe0, + 0x40, 0x2b, 0x2b, 0x20, 0xd1, 0x01, 0x23, 0x09, + 0x60, 0x3b, 0x7a, 0x03, 0x33, 0x09, 0x60, 0x13, + 0x79, 0x02, 0x02, 0x12, 0x79, 0x45, 0x43, 0x2a, + 0x32, 0x06, 0x1a, 0xd2, 0x60, 0x22, 0xe0, 0x25, + 0x25, 0x06, 0x26, 0x01, 0x60, 0x9e, 0x79, 0x83, + 0x2b, 0xff, 0xd1, 0x03, 0x35, 0x01, 0x5d, 0x43, + 0x2b, 0xff, 0xd0, 0xfb, 0x5d, 0x46, 0x23, 0xc0, + 0x40, 0x33, 0x2b, 0x40, 0xd1, 0x00, 0x35, 0x02, + 0x5d, 0x46, 0x09, 0x33, 0x07, 0x9b, 0xd0, 0x08, + 0x60, 0x3d, 0x5d, 0x46, 0x09, 0x73, 0xd3, 0x02, + 0x1d, 0xeb, 0x33, 0x03, 0xe0, 0x02, 0x1d, 0x6b, + 0xe0, 0x00, 0x1c, 0x6b, 0x60, 0x13, 0x79, 0x02, + 0x02, 0x12, 0x79, 0x45, 0x43, 0x2a, 0x32, 0x06, + 0x1a, 0xd2, 0x60, 0x22, 0x68, 0x3a, 0x2a, 0x00, + 0xd0, 0x20, 0x5c, 0x82, 0x23, 0x0e, 0x40, 0x1a, + 0x07, 0x52, 0x60, 0x0a, 0x68, 0x3b, 0x18, 0xc3, + 0x78, 0x5b, 0x05, 0x9b, 0x43, 0x1a, 0x60, 0x0a, + 0x68, 0x3b, 0x18, 0xc3, 0x78, 0x9c, 0x23, 0xfe, + 0x40, 0x23, 0x03, 0x9b, 0x43, 0x1a, 0x60, 0x0a, + 0x68, 0x3b, 0x18, 0xc3, 0x78, 0xdb, 0x01, 0xdb, + 0x43, 0x1a, 0x60, 0x0a, 0x68, 0x3b, 0x18, 0xc0, + 0x79, 0x00, 0x23, 0xfe, 0x40, 0x18, 0x08, 0x40, + 0x43, 0x10, 0x60, 0x08, 0x20, 0x00, 0xbc, 0xf0, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x4c, + 0xb5, 0xb0, 0xb0, 0x83, 0x48, 0x3f, 0x49, 0x40, + 0x8d, 0xc9, 0x4c, 0x40, 0x63, 0xe1, 0x29, 0x06, + 0xda, 0x03, 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0x01, 0x09, 0x49, 0x01, 0x49, + 0x23, 0xff, 0x33, 0xe1, 0x42, 0x99, 0xd0, 0x03, + 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x46, 0x6a, 0xb4, 0x04, 0xaa, 0x03, 0xab, 0x02, + 0x49, 0x35, 0xf7, 0xff, 0xff, 0x6f, 0xb0, 0x01, + 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x03, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x98, 0x02, 0x99, 0x01, + 0x18, 0x40, 0x6b, 0xe1, 0x42, 0x88, 0xd0, 0x03, + 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x98, 0x00, 0x4f, 0x2c, 0x28, 0x00, 0xd0, 0x25, + 0x6e, 0x38, 0x6d, 0xb9, 0x18, 0x40, 0x23, 0x01, + 0x06, 0x1b, 0x66, 0x38, 0x42, 0x98, 0xdb, 0x04, + 0x43, 0xdb, 0x18, 0xc0, 0x66, 0x38, 0x1e, 0x48, + 0x65, 0xb8, 0x23, 0x0d, 0x06, 0x9b, 0x6d, 0xb8, + 0x6c, 0xb9, 0x1a, 0xc9, 0x60, 0x08, 0x6e, 0xe0, + 0x6c, 0xb9, 0x1a, 0xc9, 0x60, 0x48, 0x20, 0x00, + 0x65, 0xb8, 0x6c, 0xb8, 0x30, 0x08, 0x23, 0x05, + 0x02, 0x5b, 0x64, 0xb8, 0x42, 0x98, 0xd1, 0x02, + 0x20, 0x01, 0x02, 0xc0, 0x64, 0xb8, 0x6c, 0xb8, + 0x49, 0x19, 0x61, 0x48, 0x24, 0x33, 0x06, 0x64, + 0x00, 0x63, 0x6d, 0xa0, 0x18, 0xc2, 0xb4, 0x04, + 0x6d, 0x60, 0x18, 0xc5, 0x6e, 0x60, 0x18, 0xc1, + 0x98, 0x03, 0x4b, 0x0e, 0x18, 0xc0, 0x9a, 0x02, + 0x1c, 0x2b, 0xf0, 0x00, 0xfc, 0x53, 0xb0, 0x01, + 0x6d, 0xb8, 0x99, 0x01, 0x18, 0x40, 0x65, 0xb8, + 0x48, 0x0e, 0x68, 0x02, 0x18, 0x51, 0x60, 0x01, + 0x6e, 0x60, 0x6d, 0xa1, 0x42, 0x88, 0xdb, 0x04, + 0x48, 0x0a, 0x68, 0x01, 0x6a, 0x7a, 0x1a, 0x89, + 0x60, 0x01, 0xb0, 0x03, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x12, 0x00, + 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x04, 0xcc, + 0x2e, 0x08, 0x05, 0x38, 0x2e, 0x08, 0x04, 0x4c, + 0xcc, 0x00, 0x0f, 0x00, 0x66, 0x00, 0x00, 0x64, + 0xb5, 0xf0, 0xb0, 0x83, 0x4e, 0x65, 0x25, 0x00, + 0x4f, 0x65, 0x6a, 0xf8, 0xf7, 0xff, 0xf8, 0xca, + 0x48, 0x64, 0x8d, 0xc0, 0x63, 0xf8, 0x28, 0x0a, + 0xda, 0x03, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0x34, 0x09, 0x60, 0x01, 0x40, + 0x23, 0xff, 0x33, 0xc1, 0x42, 0x98, 0xd0, 0x07, + 0x23, 0xff, 0x33, 0xbe, 0x42, 0x9c, 0xd0, 0x03, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x46, 0x6a, 0xb4, 0x04, 0xaa, 0x03, 0xab, 0x02, + 0x49, 0x57, 0x1c, 0x30, 0xf7, 0xff, 0xfe, 0xd6, + 0xb0, 0x01, 0x28, 0x00, 0xd0, 0x03, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x98, 0x02, + 0x99, 0x01, 0x18, 0x41, 0x6b, 0xfa, 0x42, 0x91, + 0xd0, 0x03, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x21, 0x01, 0x1c, 0x22, 0x4c, 0x4d, + 0x23, 0xff, 0x33, 0xbe, 0x42, 0x9a, 0xd1, 0x3c, + 0x5c, 0x30, 0x28, 0xa0, 0xd0, 0x03, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xe0, + 0x28, 0x00, 0xd1, 0x1b, 0x20, 0x02, 0x63, 0x78, + 0x60, 0xe1, 0x21, 0x00, 0x20, 0x00, 0xf0, 0x09, + 0xfa, 0x75, 0x20, 0x00, 0xf7, 0xfb, 0xfe, 0x0a, + 0x98, 0x02, 0x4b, 0x3c, 0x18, 0xc0, 0x79, 0x40, + 0x23, 0x30, 0x40, 0x18, 0x66, 0xb8, 0xd0, 0x16, + 0x28, 0x10, 0xd0, 0x14, 0x28, 0x20, 0xd0, 0x17, + 0x28, 0x30, 0xd1, 0x03, 0x21, 0x20, 0x20, 0x1e, + 0xf0, 0x09, 0xfd, 0x8f, 0x98, 0x00, 0x28, 0x00, + 0xd0, 0x2b, 0x6d, 0x60, 0x28, 0x05, 0xd1, 0x28, + 0x68, 0xf8, 0x28, 0x00, 0xd1, 0x25, 0x6f, 0x38, + 0xf7, 0xff, 0xfe, 0x08, 0xe0, 0x21, 0x21, 0x02, + 0x20, 0x1e, 0xf0, 0x09, 0xfd, 0x7e, 0xe7, 0xed, + 0x21, 0x08, 0x20, 0x1e, 0xf0, 0x09, 0xfd, 0x79, + 0xe7, 0xe8, 0x68, 0xe0, 0x28, 0x00, 0xd0, 0x08, + 0x20, 0x00, 0x63, 0x79, 0x21, 0x00, 0x60, 0xe0, + 0xf0, 0x09, 0xfa, 0x40, 0x20, 0x02, 0xf0, 0x09, + 0xfa, 0x93, 0x98, 0x00, 0x28, 0x00, 0xd0, 0x08, + 0x6d, 0x60, 0x28, 0x05, 0xd1, 0x05, 0x68, 0xf8, + 0x28, 0x00, 0xd1, 0x02, 0x6f, 0x38, 0xf7, 0xff, + 0xfe, 0x2d, 0x68, 0xe0, 0x28, 0x00, 0xd0, 0x01, + 0x98, 0x02, 0x1d, 0xc5, 0x6b, 0xf8, 0x1b, 0x42, + 0x63, 0xfa, 0x7e, 0x39, 0x69, 0x78, 0x18, 0x41, + 0x4b, 0x16, 0x18, 0xe8, 0xf7, 0xfb, 0xfb, 0xb0, + 0x7e, 0x38, 0x6b, 0xf9, 0x18, 0x40, 0x07, 0x81, + 0x0f, 0x89, 0x76, 0x39, 0x1a, 0x44, 0x20, 0x01, + 0x06, 0x00, 0x49, 0x15, 0x60, 0x08, 0xf0, 0x17, + 0xfb, 0x1d, 0x4b, 0x14, 0x40, 0x18, 0xf0, 0x17, + 0xfb, 0x1d, 0x22, 0x04, 0x49, 0x10, 0xb4, 0x06, + 0x23, 0x12, 0x21, 0x1e, 0x69, 0x78, 0x1c, 0x22, + 0xf0, 0x0e, 0xf8, 0x4e, 0xb0, 0x02, 0xf0, 0x17, + 0xfb, 0x0d, 0x23, 0x01, 0x04, 0x9b, 0x43, 0x18, + 0xf0, 0x17, 0xfb, 0x0c, 0x69, 0x78, 0x59, 0x01, + 0x60, 0x01, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x12, 0x00, + 0x2e, 0x08, 0x04, 0xcc, 0x2c, 0x00, 0x1f, 0xc0, + 0x2e, 0x08, 0x05, 0x3c, 0x2e, 0x08, 0x04, 0x4c, + 0x9e, 0x00, 0x08, 0x00, 0xff, 0xfb, 0xff, 0xff, + 0x20, 0x33, 0x06, 0x40, 0x6e, 0x81, 0x6e, 0x40, + 0x1a, 0x09, 0x48, 0x0f, 0x63, 0xc1, 0x29, 0x00, + 0xdc, 0x04, 0x1f, 0xc2, 0x3a, 0x79, 0x6a, 0x52, + 0x18, 0x89, 0x63, 0xc1, 0x6b, 0xc1, 0x08, 0x89, + 0x00, 0x89, 0x23, 0x01, 0x02, 0xdb, 0x63, 0xc1, + 0x42, 0x99, 0xdd, 0x0b, 0x4a, 0x07, 0x42, 0x91, + 0xdd, 0x00, 0x63, 0xc2, 0x4a, 0x06, 0x49, 0x07, + 0x85, 0x8a, 0x6b, 0xc0, 0x85, 0xc8, 0x20, 0x09, + 0x02, 0x40, 0x86, 0xc8, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x04, 0xcc, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x02, 0x06, 0x2c, 0x00, 0x1f, 0xc0, + 0x48, 0x0f, 0x78, 0x01, 0x29, 0x00, 0xd0, 0x1a, + 0x49, 0x0e, 0x6c, 0x8a, 0x6c, 0xc9, 0x1a, 0x51, + 0x63, 0xc1, 0x1c, 0x0a, 0x29, 0x00, 0xdc, 0x04, + 0x1f, 0xc1, 0x39, 0x79, 0x69, 0x09, 0x18, 0x51, + 0x63, 0xc1, 0x23, 0x01, 0x03, 0x1b, 0x6b, 0xc1, + 0x42, 0x99, 0xdb, 0x08, 0x22, 0xff, 0x32, 0x07, + 0x49, 0x05, 0x85, 0x8a, 0x6b, 0xc0, 0x85, 0xc8, + 0x20, 0x09, 0x02, 0x40, 0x86, 0xc8, 0x47, 0x70, + 0x2e, 0x08, 0x04, 0xcc, 0x66, 0x00, 0x00, 0x80, + 0x2c, 0x00, 0x1f, 0xc0, 0xb4, 0x80, 0x20, 0x00, + 0x49, 0x1e, 0x6c, 0x8a, 0x6c, 0xc9, 0x1a, 0x52, + 0x49, 0x1d, 0x2a, 0x00, 0xdc, 0x01, 0x69, 0x0b, + 0x18, 0xd2, 0x23, 0x01, 0x02, 0xdb, 0x42, 0x9a, + 0xdd, 0x00, 0x08, 0xd8, 0x22, 0x33, 0x06, 0x52, + 0x6e, 0x93, 0x6e, 0x52, 0x1a, 0x9a, 0x2a, 0x00, + 0xdc, 0x01, 0x6a, 0x4b, 0x18, 0xd2, 0x08, 0x92, + 0x00, 0x92, 0x4b, 0x14, 0x68, 0xdb, 0x2b, 0x00, + 0xd0, 0x06, 0x23, 0x01, 0x03, 0x1b, 0x6a, 0x4f, + 0x18, 0xfb, 0x6a, 0x89, 0x1a, 0x59, 0xe0, 0x01, + 0x21, 0x01, 0x03, 0x09, 0x42, 0x8a, 0xdd, 0x04, + 0x04, 0x00, 0x0c, 0x00, 0x23, 0x01, 0x02, 0x5b, + 0x43, 0x18, 0x28, 0x00, 0xd0, 0x0b, 0x4b, 0x0a, + 0x42, 0x9a, 0xdd, 0x00, 0x1c, 0x1a, 0x21, 0x06, + 0x43, 0x01, 0x48, 0x08, 0x85, 0x81, 0x85, 0xc2, + 0x21, 0x09, 0x02, 0x49, 0x86, 0xc1, 0xbc, 0x80, + 0x47, 0x70, 0x00, 0x00, 0x66, 0x00, 0x00, 0x80, + 0x2e, 0x08, 0x04, 0x4c, 0x2e, 0x08, 0x04, 0xcc, + 0x00, 0x00, 0xff, 0xff, 0x2c, 0x00, 0x1f, 0xc0, + 0xb5, 0x90, 0x04, 0x00, 0x0c, 0x00, 0x4f, 0x13, + 0x6d, 0x39, 0x29, 0x00, 0xd1, 0x10, 0x24, 0x01, + 0x28, 0x01, 0xd0, 0x10, 0x28, 0x04, 0xd0, 0x15, + 0x28, 0x05, 0xd1, 0x09, 0xf7, 0xff, 0xf8, 0x50, + 0xf7, 0xff, 0xf8, 0x04, 0x20, 0x00, 0x66, 0xf8, + 0x67, 0x38, 0x20, 0x05, 0x65, 0x78, 0x65, 0x3c, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, + 0xff, 0xf9, 0x65, 0x3c, 0x65, 0x7c, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xf8, 0x3c, + 0x20, 0x04, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x4c, + 0xb5, 0x90, 0x04, 0x00, 0x0c, 0x00, 0x4f, 0x23, + 0x6d, 0x39, 0x29, 0x00, 0xd0, 0x0e, 0x29, 0x02, + 0xd1, 0x09, 0x6d, 0x78, 0x28, 0x01, 0xd0, 0x34, + 0x28, 0x04, 0xd0, 0x27, 0x28, 0x05, 0xd1, 0x02, + 0x20, 0xff, 0xf7, 0xff, 0xf8, 0xcf, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x24, 0x02, 0x28, 0x01, + 0xd0, 0x0c, 0x28, 0x04, 0xd0, 0x12, 0x28, 0x05, + 0xd1, 0xf5, 0x20, 0x00, 0xf7, 0xff, 0xf8, 0xc2, + 0x20, 0x05, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xf8, 0x40, + 0x20, 0x01, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xf8, 0x78, + 0x20, 0x04, 0x65, 0x78, 0x65, 0x3c, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x21, 0x00, 0x20, 0x0e, + 0xf0, 0x0b, 0xfc, 0xd8, 0x21, 0x00, 0x20, 0x0d, + 0xf0, 0x0b, 0xfc, 0xd4, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x02, 0xf0, 0x09, 0xf9, 0x34, + 0x20, 0xff, 0x49, 0x03, 0x70, 0x08, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x04, 0x4c, + 0x2e, 0x08, 0x04, 0xcc, 0xb5, 0xf0, 0x4f, 0x2b, + 0x24, 0x00, 0x6d, 0x38, 0x28, 0x01, 0xd0, 0x1e, + 0x28, 0x02, 0xd1, 0x19, 0x26, 0x03, 0x6d, 0x78, + 0x1d, 0xfd, 0x35, 0x79, 0x28, 0x01, 0xd0, 0x34, + 0x28, 0x04, 0xd0, 0x3f, 0x28, 0x05, 0xd1, 0x0f, + 0x20, 0x02, 0x63, 0x6c, 0xf0, 0x09, 0xf9, 0x14, + 0x20, 0x00, 0xf7, 0xfb, 0xfc, 0x53, 0xf7, 0xff, + 0xf8, 0x29, 0x65, 0x3e, 0x20, 0x00, 0x65, 0x78, + 0xf7, 0xfe, 0xfe, 0xc0, 0x20, 0x01, 0x61, 0xe8, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x6d, 0x78, + 0x28, 0x01, 0xd0, 0x0c, 0x28, 0x04, 0xd0, 0x11, + 0x28, 0x05, 0xd1, 0xf5, 0xf7, 0xfe, 0xff, 0x8a, + 0xf7, 0xfe, 0xff, 0xe0, 0x65, 0x3c, 0x65, 0x7c, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, + 0xff, 0x81, 0x65, 0x3c, 0x65, 0x7c, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, 0xff, 0xd2, + 0x65, 0x3c, 0x65, 0x7c, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x63, 0x6c, 0x20, 0x02, 0x60, 0xfc, + 0xf0, 0x09, 0xf8, 0xe2, 0x20, 0x00, 0xf7, 0xfb, + 0xfc, 0x21, 0x65, 0x7c, 0x65, 0x3e, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, 0xff, 0xf2, + 0x65, 0x7c, 0x65, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x4c, + 0xb5, 0x90, 0x4c, 0x1b, 0x68, 0xe0, 0x28, 0x03, + 0xd0, 0x1f, 0x1f, 0xe7, 0x3f, 0x79, 0x6d, 0x38, + 0x28, 0x02, 0xd1, 0x1a, 0x6d, 0x78, 0x28, 0x01, + 0xd0, 0x1a, 0x28, 0x04, 0xd0, 0x20, 0x28, 0x05, + 0xd1, 0x13, 0x4a, 0x14, 0x49, 0x14, 0x48, 0x15, + 0xf7, 0xfe, 0xfe, 0x52, 0x21, 0x00, 0x20, 0x0e, + 0xf0, 0x0b, 0xfc, 0x50, 0x20, 0x01, 0xf0, 0x09, + 0xf8, 0xb3, 0x20, 0x03, 0x60, 0xe0, 0x68, 0xf8, + 0x28, 0x00, 0xd0, 0x02, 0x20, 0x01, 0xf0, 0x09, + 0xf8, 0xab, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x01, 0xf0, 0x09, 0xf8, 0xa5, 0x20, 0x00, + 0x70, 0x20, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x21, 0x00, 0x20, 0x0b, 0xf0, 0x0b, 0xfc, 0x36, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x04, 0xcc, 0x2e, 0x08, 0x05, 0x58, + 0x2e, 0x08, 0x05, 0x50, 0x2e, 0x08, 0x05, 0x54, + 0xb5, 0xf0, 0x4c, 0x21, 0x6d, 0x20, 0x28, 0x02, + 0xd1, 0x24, 0x26, 0xff, 0x6d, 0x60, 0x1d, 0xe7, + 0x37, 0x79, 0x28, 0x01, 0xd0, 0x1d, 0x28, 0x04, + 0xd0, 0x1f, 0x28, 0x05, 0xd1, 0x1a, 0x20, 0x01, + 0xf0, 0x09, 0xf8, 0x7e, 0x25, 0x00, 0x68, 0xe0, + 0x28, 0x00, 0xd0, 0x04, 0x21, 0x00, 0x20, 0x00, + 0xf0, 0x09, 0xf8, 0x20, 0x60, 0xe5, 0x70, 0x3e, + 0x68, 0xf8, 0x28, 0x03, 0xd1, 0x14, 0x48, 0x13, + 0x22, 0x00, 0x68, 0x41, 0x20, 0x00, 0xf7, 0xfe, + 0xfd, 0xed, 0x6b, 0x38, 0xf7, 0xfe, 0xfe, 0x1e, + 0xe0, 0x0f, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x0b, + 0xfb, 0xf9, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x01, 0x61, 0xf8, 0x6b, 0x38, 0xf7, 0xfe, + 0xfe, 0x0d, 0x20, 0x02, 0x60, 0xfd, 0xf0, 0x09, + 0xf8, 0x53, 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x0b, + 0xfb, 0xe9, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x04, 0x4c, 0x2e, 0x08, 0x05, 0x4c, + 0xb5, 0xb0, 0x04, 0x07, 0x0c, 0x3f, 0x2f, 0x01, + 0xda, 0x00, 0x27, 0x01, 0x2f, 0x3f, 0xdd, 0x00, + 0x27, 0x3f, 0x48, 0x17, 0x6d, 0x01, 0x29, 0x02, + 0xd1, 0x13, 0x6d, 0x40, 0x25, 0x02, 0x4c, 0x15, + 0x28, 0x04, 0xd0, 0x11, 0x28, 0x05, 0xd1, 0x0c, + 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x0b, 0xfb, 0xca, + 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x0b, 0xfb, 0xc6, + 0x20, 0x22, 0x1c, 0x39, 0xf0, 0x0b, 0xfb, 0xc2, + 0x60, 0xe5, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x21, 0x00, 0x20, 0x0e, 0xf0, 0x0b, 0xfb, 0xba, + 0x21, 0x00, 0x20, 0x0d, 0xf0, 0x0b, 0xfb, 0xb6, + 0x20, 0x22, 0x1c, 0x39, 0xf0, 0x0b, 0xfb, 0xb2, + 0x20, 0x00, 0xf7, 0xfe, 0xfd, 0xcb, 0x60, 0xe5, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x04, 0x4c, 0x2e, 0x08, 0x04, 0xcc, + 0xb5, 0x00, 0x48, 0x0b, 0x6d, 0x01, 0x29, 0x02, + 0xd1, 0x10, 0x6d, 0x40, 0x28, 0x04, 0xd0, 0x01, + 0x28, 0x05, 0xd1, 0x0b, 0x21, 0x00, 0x20, 0x16, + 0xf0, 0x0b, 0xfb, 0x98, 0x20, 0x00, 0xf7, 0xfe, + 0xfd, 0xb1, 0x21, 0x00, 0x48, 0x03, 0x70, 0x01, + 0x21, 0x01, 0x60, 0xc1, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x04, 0x4c, 0x2e, 0x08, 0x04, 0xcc, + 0xb5, 0x00, 0x48, 0x0b, 0x6d, 0x01, 0x29, 0x02, + 0xd1, 0x10, 0x6d, 0x40, 0x28, 0x04, 0xd0, 0x01, + 0x28, 0x05, 0xd1, 0x0b, 0x21, 0x00, 0x20, 0x1a, + 0xf0, 0x0b, 0xfb, 0x7c, 0x20, 0x00, 0xf7, 0xfe, + 0xfd, 0x95, 0x21, 0x00, 0x48, 0x03, 0x70, 0x01, + 0x21, 0x01, 0x60, 0xc1, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x04, 0x4c, 0x2e, 0x08, 0x04, 0xcc, + 0x48, 0x03, 0x6d, 0x00, 0x28, 0x00, 0xd1, 0x00, + 0x47, 0x70, 0x20, 0xff, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x04, 0x4c, 0xb5, 0xf0, 0x1c, 0x04, + 0x1c, 0x0f, 0x4d, 0x52, 0x6d, 0x29, 0x48, 0x52, + 0x26, 0x00, 0x29, 0x01, 0xd0, 0x4c, 0x29, 0x02, + 0xd1, 0x6e, 0x6d, 0x69, 0x29, 0x01, 0xd0, 0x20, + 0x29, 0x04, 0xd0, 0x2e, 0x29, 0x05, 0xd1, 0x3e, + 0x6c, 0xc1, 0x6c, 0x80, 0x1a, 0x08, 0xd5, 0x01, + 0x69, 0x29, 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, + 0x69, 0x28, 0xf0, 0x13, 0xf9, 0x03, 0x70, 0x20, + 0x20, 0x33, 0x06, 0x40, 0x6e, 0x41, 0x6e, 0x80, + 0x1a, 0x08, 0xd5, 0x01, 0x6a, 0x69, 0x18, 0x40, + 0x21, 0x64, 0x43, 0x41, 0x6a, 0x68, 0xf0, 0x13, + 0xf8, 0xf5, 0x70, 0x38, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x6c, 0xc1, 0x6c, 0x80, 0x1a, 0x08, + 0xd5, 0x01, 0x69, 0x29, 0x18, 0x40, 0x21, 0x64, + 0x43, 0x41, 0x69, 0x28, 0xf0, 0x13, 0xf8, 0xe6, + 0x70, 0x20, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x33, 0x06, 0x40, 0x6e, 0x41, + 0x6e, 0x80, 0x1a, 0x08, 0xd5, 0x01, 0x6a, 0x69, + 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, 0x6a, 0x68, + 0xf0, 0x13, 0xf8, 0xd4, 0x70, 0x38, 0x70, 0x26, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x70, 0x26, + 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x6d, 0x69, 0x29, 0x01, 0xd0, 0x21, 0x29, 0x04, + 0xd0, 0x2f, 0x29, 0x05, 0xd1, 0x3f, 0x69, 0x69, + 0x6c, 0xc0, 0x1a, 0x40, 0xd5, 0x01, 0x69, 0x29, + 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, 0x69, 0x28, + 0xf0, 0x13, 0xf8, 0xb8, 0x70, 0x20, 0x21, 0x33, + 0x06, 0x49, 0x6a, 0xe8, 0x6e, 0x49, 0x1a, 0x08, + 0xd5, 0x01, 0x6a, 0x69, 0x18, 0x40, 0x21, 0x64, + 0x43, 0x41, 0x6a, 0x68, 0xf0, 0x13, 0xf8, 0xaa, + 0x70, 0x38, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xe0, 0x26, 0x69, 0x69, 0x6c, 0xc0, 0x1a, 0x40, + 0xd5, 0x01, 0x69, 0x29, 0x18, 0x40, 0x21, 0x64, + 0x43, 0x41, 0x69, 0x28, 0xf0, 0x13, 0xf8, 0x9a, + 0x70, 0x20, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x21, 0x33, 0x06, 0x49, 0x6a, 0xe8, + 0x6e, 0x49, 0x1a, 0x08, 0xd5, 0x01, 0x6a, 0x69, + 0x18, 0x40, 0x21, 0x64, 0x43, 0x41, 0x6a, 0x68, + 0xf0, 0x13, 0xf8, 0x88, 0x70, 0x38, 0x70, 0x26, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x70, 0x26, + 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x70, 0x26, 0x70, 0x3e, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x04, 0x4c, + 0x66, 0x00, 0x00, 0x80, 0xb5, 0xf0, 0x1c, 0x17, + 0x9e, 0x05, 0x1a, 0xf2, 0x1c, 0x0d, 0x21, 0x00, + 0x1c, 0x1c, 0x42, 0xba, 0xda, 0x03, 0x1c, 0x08, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x42, 0xa0, + 0xd3, 0x01, 0x42, 0xb0, 0xd9, 0x03, 0x1c, 0x08, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x19, 0xc1, + 0x42, 0xb1, 0xd9, 0x0c, 0x1a, 0x32, 0x4e, 0x0a, + 0x64, 0x32, 0x1c, 0x29, 0xf7, 0xfb, 0xf8, 0x38, + 0x6c, 0x30, 0x1a, 0x3a, 0x18, 0x29, 0x1c, 0x20, + 0xf7, 0xfb, 0xf8, 0x32, 0xe0, 0x03, 0x1c, 0x29, + 0x1c, 0x3a, 0xf7, 0xfb, 0xf8, 0x2d, 0x1c, 0x38, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x04, 0xcc, 0xb5, 0xf0, 0x1c, 0x17, + 0x9e, 0x05, 0x1a, 0xf2, 0x1c, 0x05, 0x20, 0x00, + 0x1c, 0x1c, 0x42, 0xba, 0xdb, 0x18, 0x42, 0xa1, + 0xd3, 0x16, 0x42, 0xb1, 0xd2, 0x14, 0x19, 0xc8, + 0x42, 0xb0, 0xd9, 0x0c, 0x1a, 0x72, 0x4e, 0x0a, + 0x64, 0x32, 0x1c, 0x28, 0xf7, 0xfb, 0xf8, 0x10, + 0x6c, 0x30, 0x1a, 0x3a, 0x18, 0x28, 0x1c, 0x21, + 0xf7, 0xfb, 0xf8, 0x0a, 0xe0, 0x03, 0x1c, 0x28, + 0x1c, 0x3a, 0xf7, 0xfb, 0xf8, 0x05, 0x1c, 0x38, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x04, 0xcc, 0x47, 0x70, 0xb5, 0x00, + 0xb0, 0x82, 0x46, 0x6a, 0x49, 0x06, 0xa8, 0x01, + 0xf7, 0xfe, 0xfc, 0x56, 0x21, 0x00, 0x20, 0x0b, + 0xf0, 0x0b, 0xfa, 0x54, 0x20, 0x03, 0x49, 0x03, + 0x61, 0x88, 0xb0, 0x02, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x05, 0x68, 0x2e, 0x08, 0x05, 0x4c, + 0xb5, 0x80, 0x4f, 0x0b, 0x22, 0x00, 0x20, 0x00, + 0x69, 0xf9, 0xf7, 0xfe, 0xfc, 0x2b, 0x21, 0x00, + 0x20, 0x0d, 0xf0, 0x0b, 0xfa, 0x3f, 0x21, 0x01, + 0x1f, 0xf8, 0x38, 0x79, 0x61, 0xc1, 0x6b, 0x00, + 0xf7, 0xfe, 0xfc, 0x54, 0x20, 0x00, 0x61, 0xb8, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x05, 0x4c, 0xb5, 0x80, 0x4f, 0x06, + 0x68, 0x38, 0x1d, 0xc1, 0x31, 0xb5, 0x20, 0x2f, + 0x02, 0x80, 0xf0, 0x12, 0xff, 0xe3, 0x60, 0x39, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x02, 0x55, 0x3c, 0x48, 0x05, 0x8f, 0xc1, + 0x29, 0x00, 0xd0, 0x05, 0x21, 0x00, 0x87, 0xc1, + 0x48, 0x03, 0x69, 0x01, 0x31, 0x01, 0x61, 0x01, + 0x47, 0x70, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, + 0x2e, 0x08, 0x05, 0x6c, 0x48, 0x03, 0x21, 0x00, + 0x60, 0x01, 0x48, 0x03, 0x69, 0x41, 0x31, 0x01, + 0x61, 0x41, 0x47, 0x70, 0x2e, 0x08, 0x47, 0x58, + 0x2e, 0x08, 0x05, 0x6c, 0xb5, 0x00, 0xb0, 0x88, + 0x46, 0x68, 0xf0, 0x0d, 0xfd, 0xe5, 0x48, 0x07, + 0x69, 0x81, 0x31, 0x01, 0x23, 0x01, 0x22, 0x06, + 0x61, 0x81, 0x21, 0x47, 0x02, 0x49, 0x05, 0x48, + 0xf0, 0x0d, 0xfc, 0xd2, 0xb0, 0x08, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0x6c, + 0xb5, 0x90, 0x1c, 0x07, 0x20, 0xff, 0x30, 0xa5, + 0xb0, 0x85, 0x90, 0x00, 0x20, 0x01, 0x02, 0x40, + 0x90, 0x02, 0x48, 0x12, 0x90, 0x04, 0x20, 0x0e, + 0xab, 0x03, 0x80, 0x18, 0x46, 0x68, 0xf0, 0x0d, + 0xfd, 0xf7, 0x2f, 0x00, 0xd0, 0x16, 0x20, 0x33, + 0x06, 0x40, 0x6d, 0x40, 0x23, 0x0d, 0x06, 0x9b, + 0x1a, 0xc7, 0x98, 0x02, 0x1e, 0x79, 0xf0, 0x00, + 0xfb, 0x27, 0x4c, 0x09, 0x68, 0x20, 0x28, 0x00, + 0xd1, 0x04, 0x20, 0xa5, 0x01, 0xc0, 0xf0, 0x00, + 0xfb, 0x2d, 0x60, 0x20, 0x98, 0x02, 0x1a, 0x38, + 0x49, 0x04, 0x60, 0x88, 0xb0, 0x05, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x1c, 0x00, 0x00, + 0x2e, 0x08, 0x00, 0x00, 0x2e, 0x08, 0x05, 0x6c, + 0xb5, 0x00, 0x22, 0x01, 0x21, 0x01, 0x20, 0x00, + 0xf0, 0x09, 0xfa, 0x54, 0x48, 0x04, 0x68, 0x00, + 0x78, 0x01, 0x23, 0x06, 0x43, 0x19, 0x70, 0x01, + 0xf0, 0x00, 0xf9, 0xe0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x5e, 0x60, 0xb5, 0xf0, 0x48, 0x51, + 0x4e, 0x51, 0x80, 0x30, 0x27, 0x00, 0x4c, 0x51, + 0x86, 0xe7, 0x86, 0xa7, 0x48, 0x50, 0x60, 0x07, + 0xf0, 0x05, 0xf9, 0x54, 0x48, 0x4f, 0xf0, 0x0e, + 0xfa, 0x01, 0xf7, 0xfa, 0xfe, 0xdd, 0x21, 0xff, + 0x48, 0x4d, 0x60, 0x01, 0x68, 0x01, 0x29, 0x00, + 0xd0, 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x01, + 0x4a, 0x4a, 0x60, 0xd1, 0x60, 0x07, 0xf7, 0xfc, + 0xfb, 0x17, 0x20, 0x01, 0xf7, 0xff, 0xff, 0x98, + 0x21, 0x00, 0x20, 0x00, 0xf0, 0x08, 0xfd, 0x92, + 0xf0, 0x01, 0xfa, 0xa6, 0x48, 0x44, 0x60, 0x07, + 0x25, 0x02, 0x48, 0x44, 0x60, 0x05, 0x20, 0x03, + 0x49, 0x43, 0x60, 0x08, 0x49, 0x43, 0x60, 0x08, + 0x49, 0x43, 0x60, 0x0d, 0x49, 0x43, 0x60, 0x08, + 0x48, 0x43, 0x60, 0x07, 0x48, 0x43, 0x65, 0x87, + 0xf0, 0x00, 0xf9, 0x80, 0xf0, 0x0e, 0xfa, 0x6e, + 0x20, 0x00, 0xf0, 0x0b, 0xff, 0xab, 0x28, 0x00, + 0xd1, 0x5d, 0x48, 0x3f, 0xf0, 0x08, 0xfb, 0xe4, + 0x20, 0x00, 0xf0, 0x08, 0xfc, 0x55, 0x87, 0xe7, + 0x87, 0xa7, 0x22, 0x01, 0xb4, 0x04, 0x22, 0x03, + 0x21, 0x01, 0x20, 0x00, 0x1c, 0x2b, 0xf0, 0x0b, + 0xfc, 0x51, 0x20, 0x02, 0xb0, 0x01, 0xf7, 0xfc, + 0xfc, 0x73, 0xf7, 0xff, 0xff, 0x95, 0x20, 0x7d, + 0x00, 0xc0, 0xf7, 0xfd, 0xfd, 0xc7, 0x20, 0x7d, + 0x00, 0xc0, 0xf7, 0xfd, 0xfd, 0xdb, 0xf0, 0x04, + 0xf8, 0x4b, 0xf0, 0x04, 0xf8, 0x89, 0xf7, 0xfb, + 0xf9, 0x11, 0x21, 0x18, 0x20, 0x14, 0xf7, 0xfd, + 0xf8, 0x11, 0xf7, 0xfd, 0xfb, 0xbf, 0xf7, 0xfb, + 0xfc, 0x3d, 0x05, 0xa8, 0xf0, 0x16, 0xfe, 0x49, + 0x49, 0x28, 0x20, 0x17, 0xf0, 0x16, 0xfe, 0x52, + 0x49, 0x27, 0x20, 0x08, 0xf0, 0x16, 0xfe, 0x4e, + 0xf0, 0x16, 0xfe, 0x44, 0x4b, 0x25, 0x40, 0x18, + 0xf0, 0x16, 0xfe, 0x44, 0x01, 0xe8, 0xf0, 0x16, + 0xfe, 0x38, 0x48, 0x23, 0x23, 0x01, 0x22, 0x08, + 0x21, 0x81, 0x01, 0x09, 0x60, 0x07, 0xf0, 0x0b, + 0xfb, 0x65, 0xf0, 0x01, 0xfa, 0xc7, 0x49, 0x1f, + 0x20, 0x04, 0xf0, 0x16, 0xfe, 0x37, 0xf0, 0x16, + 0xfe, 0x2d, 0x23, 0x10, 0x43, 0xdb, 0x40, 0x18, + 0xf0, 0x16, 0xfe, 0x2c, 0x20, 0x10, 0xf0, 0x16, + 0xfe, 0x20, 0x87, 0x67, 0x21, 0x00, 0x1c, 0x30, + 0xf7, 0xfd, 0xfd, 0xb0, 0x1c, 0x38, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xff, 0xff, + 0x2c, 0x00, 0x00, 0xfc, 0x2c, 0x00, 0x1f, 0xc0, + 0x2e, 0x08, 0x04, 0x9c, 0x07, 0x77, 0x77, 0x20, + 0x72, 0x00, 0x02, 0x00, 0x2e, 0x08, 0x05, 0x6c, + 0x6e, 0x00, 0x10, 0x00, 0x6e, 0x00, 0x11, 0x00, + 0x6e, 0x00, 0x14, 0x00, 0x6e, 0x00, 0x15, 0x00, + 0x6e, 0x00, 0x16, 0x00, 0x6e, 0x00, 0x17, 0x00, + 0x6e, 0x00, 0x18, 0x00, 0xcc, 0x00, 0x0f, 0x80, + 0x00, 0x80, 0x10, 0x80, 0x2e, 0x00, 0x55, 0x39, + 0x2e, 0x00, 0x55, 0x59, 0xff, 0xff, 0xfe, 0xff, + 0x2e, 0x08, 0x47, 0x58, 0x2e, 0x00, 0x55, 0x19, + 0xb5, 0x90, 0x1c, 0x0c, 0x1c, 0x07, 0xf0, 0x16, + 0xfe, 0x29, 0x2f, 0x01, 0xda, 0x00, 0x27, 0x01, + 0x4b, 0x0e, 0x42, 0x9f, 0xdd, 0x00, 0x1c, 0x1f, + 0x3f, 0x01, 0x04, 0x3f, 0x4b, 0x0c, 0x18, 0xff, + 0x21, 0x03, 0x48, 0x0c, 0x60, 0x01, 0x60, 0x47, + 0x21, 0x01, 0x60, 0x01, 0x20, 0x01, 0x1c, 0x21, + 0xf0, 0x16, 0xfd, 0xe0, 0xf0, 0x16, 0xfd, 0xd6, + 0x23, 0x02, 0x43, 0xdb, 0x40, 0x18, 0xf0, 0x16, + 0xfd, 0xd5, 0xf0, 0x16, 0xfe, 0x41, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xfd, 0xe8, + 0x00, 0x00, 0x9e, 0x34, 0x6e, 0x00, 0x03, 0x00, + 0xb5, 0x90, 0x1c, 0x0c, 0x1c, 0x07, 0xf0, 0x16, + 0xfd, 0xfd, 0x2f, 0x01, 0xda, 0x00, 0x27, 0x01, + 0x4b, 0x0e, 0x42, 0x9f, 0xdd, 0x00, 0x1c, 0x1f, + 0x3f, 0x01, 0x04, 0x3f, 0x21, 0x03, 0x37, 0xff, + 0x37, 0x96, 0x48, 0x0b, 0x60, 0x01, 0x60, 0x47, + 0x21, 0x01, 0x60, 0x01, 0x20, 0x01, 0x1c, 0x21, + 0xf0, 0x16, 0xfd, 0xb4, 0xf0, 0x16, 0xfd, 0xaa, + 0x23, 0x02, 0x43, 0xdb, 0x40, 0x18, 0xf0, 0x16, + 0xfd, 0xa9, 0xf0, 0x16, 0xfe, 0x15, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xfd, 0xe8, + 0x6e, 0x00, 0x03, 0x00, 0xb5, 0x00, 0xf0, 0x16, + 0xfd, 0xd5, 0x20, 0x03, 0x49, 0x05, 0x60, 0x08, + 0xf0, 0x16, 0xfd, 0x94, 0x23, 0x02, 0x43, 0x18, + 0xf0, 0x16, 0xfd, 0x94, 0xf0, 0x16, 0xfe, 0x00, + 0xbc, 0x08, 0x47, 0x18, 0x6e, 0x00, 0x03, 0x00, + 0xb5, 0x90, 0x1c, 0x0c, 0x1c, 0x07, 0xf0, 0x16, + 0xfd, 0xc1, 0x2f, 0x01, 0xda, 0x00, 0x27, 0x01, + 0x4b, 0x0e, 0x42, 0x9f, 0xdd, 0x00, 0x1c, 0x1f, + 0x3f, 0x01, 0x04, 0x3f, 0x4b, 0x0c, 0x18, 0xff, + 0x21, 0x03, 0x48, 0x0c, 0x60, 0x01, 0x60, 0x47, + 0x21, 0x01, 0x60, 0x01, 0x20, 0x05, 0x1c, 0x21, + 0xf0, 0x16, 0xfd, 0x78, 0xf0, 0x16, 0xfd, 0x6e, + 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, 0xf0, 0x16, + 0xfd, 0x6d, 0xf0, 0x16, 0xfd, 0xd9, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xfd, 0xe8, + 0x00, 0x00, 0x9e, 0x34, 0x6e, 0x00, 0x04, 0x00, + 0xb5, 0x90, 0x1c, 0x0c, 0x1c, 0x07, 0xf0, 0x16, + 0xfd, 0x95, 0x2f, 0x01, 0xda, 0x00, 0x27, 0x01, + 0x4b, 0x0e, 0x42, 0x9f, 0xdd, 0x00, 0x1c, 0x1f, + 0x3f, 0x01, 0x04, 0x3f, 0x21, 0x03, 0x37, 0xff, + 0x37, 0x96, 0x48, 0x0b, 0x60, 0x01, 0x60, 0x47, + 0x21, 0x01, 0x60, 0x01, 0x20, 0x05, 0x1c, 0x21, + 0xf0, 0x16, 0xfd, 0x4c, 0xf0, 0x16, 0xfd, 0x42, + 0x23, 0x20, 0x43, 0xdb, 0x40, 0x18, 0xf0, 0x16, + 0xfd, 0x41, 0xf0, 0x16, 0xfd, 0xad, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xfd, 0xe8, + 0x6e, 0x00, 0x04, 0x00, 0xb5, 0x00, 0xf0, 0x16, + 0xfd, 0x6d, 0x20, 0x03, 0x49, 0x05, 0x60, 0x08, + 0xf0, 0x16, 0xfd, 0x2c, 0x23, 0x20, 0x43, 0x18, + 0xf0, 0x16, 0xfd, 0x2c, 0xf0, 0x16, 0xfd, 0x98, + 0xbc, 0x08, 0x47, 0x18, 0x6e, 0x00, 0x04, 0x00, + 0xb5, 0x00, 0x48, 0x0b, 0x68, 0x41, 0x31, 0x14, + 0x60, 0x41, 0x68, 0x81, 0x31, 0x01, 0x60, 0x81, + 0x48, 0x08, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, + 0x28, 0x01, 0xd1, 0x01, 0xf7, 0xfe, 0xfa, 0x5a, + 0xbc, 0x08, 0x47, 0x18, 0x48, 0x04, 0x21, 0x10, + 0xf0, 0x09, 0xf9, 0x64, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x05, 0xb8, 0x2e, 0x08, 0x05, 0x00, + 0x2e, 0x08, 0x05, 0xb8, 0xb5, 0x00, 0xf0, 0x16, + 0xfd, 0x3d, 0x21, 0x00, 0x48, 0x08, 0x60, 0x41, + 0x60, 0x81, 0x49, 0x08, 0x20, 0x07, 0xf0, 0x16, + 0xfd, 0x01, 0xf0, 0x16, 0xfc, 0xf7, 0x23, 0x80, + 0x43, 0xdb, 0x40, 0x18, 0xf0, 0x16, 0xfc, 0xf6, + 0xf0, 0x16, 0xfd, 0x62, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x05, 0xb8, 0x2e, 0x00, 0x59, 0x65, + 0x48, 0x01, 0x68, 0x40, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x05, 0xb8, 0xb5, 0x90, 0x49, 0x0d, + 0x1c, 0x0f, 0x48, 0x0d, 0x24, 0x1e, 0x22, 0x10, + 0x1c, 0x23, 0xf0, 0x09, 0xfa, 0x65, 0x22, 0x02, + 0x21, 0x10, 0x1c, 0x38, 0x1c, 0x23, 0xf0, 0x05, + 0xfc, 0xcd, 0x49, 0x08, 0x20, 0x10, 0xf0, 0x16, + 0xfc, 0xd9, 0xf0, 0x16, 0xfc, 0xcf, 0x4b, 0x06, + 0x40, 0x18, 0xf0, 0x16, 0xfc, 0xcf, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x47, 0x68, + 0x2e, 0x08, 0x05, 0xb8, 0x2e, 0x00, 0x5a, 0x29, + 0xff, 0xfe, 0xff, 0xff, 0xb5, 0x00, 0xb0, 0x86, + 0x46, 0x68, 0x49, 0x0c, 0xc9, 0x0c, 0xc0, 0x0c, + 0xc9, 0x0c, 0xc0, 0x0c, 0xc9, 0x0c, 0xc0, 0x0c, + 0x48, 0x09, 0xab, 0x00, 0xcb, 0x0e, 0xb0, 0x03, + 0xf0, 0x09, 0xfa, 0x6a, 0xb0, 0x03, 0x48, 0x07, + 0x68, 0x01, 0x08, 0x4a, 0xd3, 0x04, 0x08, 0x49, + 0x00, 0x49, 0x23, 0x04, 0x43, 0x19, 0x60, 0x01, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x47, 0x68, + 0x2e, 0x08, 0x05, 0xb8, 0x2e, 0x08, 0x00, 0x04, + 0xb5, 0x80, 0x29, 0x0c, 0xd2, 0x00, 0x21, 0x0c, + 0x31, 0x07, 0x08, 0xc9, 0x00, 0xc9, 0x27, 0x00, + 0x68, 0x02, 0x42, 0x82, 0xd0, 0x03, 0x68, 0x93, + 0x42, 0x8b, 0xd3, 0x0d, 0x1c, 0x17, 0x2f, 0x00, + 0xd0, 0x1e, 0x68, 0xb8, 0x1a, 0x42, 0x2a, 0x0c, + 0xd2, 0x00, 0x1c, 0x01, 0x1a, 0x42, 0xd1, 0x05, + 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x76, 0xe0, 0x0c, + 0x68, 0x12, 0xe7, 0xea, 0x1d, 0xca, 0x32, 0x01, + 0x1a, 0x80, 0x60, 0xb8, 0x19, 0xc0, 0x1d, 0xc7, + 0x37, 0x01, 0x20, 0x00, 0x60, 0x38, 0x60, 0x78, + 0x60, 0xb9, 0x68, 0xb8, 0x60, 0x38, 0x1d, 0xf8, + 0x30, 0x01, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xb0, 0x1f, 0xcc, 0x3c, 0x01, 0x68, 0x21, + 0x19, 0x0a, 0x60, 0xa1, 0x68, 0x07, 0x32, 0x08, + 0x42, 0x87, 0xd1, 0x06, 0x68, 0x41, 0x1c, 0x20, + 0xf0, 0x00, 0xf8, 0x48, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x42, 0x97, 0xd1, 0x0f, 0x68, 0x7d, + 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x46, 0x68, 0xa0, + 0x68, 0xb9, 0x18, 0x40, 0x30, 0x08, 0x60, 0xa0, + 0x1c, 0x20, 0x1c, 0x29, 0xf0, 0x00, 0xf8, 0x36, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xbb, + 0x19, 0xdb, 0x33, 0x08, 0x42, 0xa3, 0xd1, 0x13, + 0x68, 0xb8, 0x18, 0x40, 0x30, 0x08, 0x60, 0xb8, + 0x19, 0xc0, 0x68, 0x3c, 0x30, 0x08, 0x42, 0xa0, + 0xd1, 0xdc, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x29, + 0x68, 0xb8, 0x68, 0xa1, 0x18, 0x40, 0x30, 0x08, + 0x60, 0xb8, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x42, 0xbc, 0xd2, 0x06, 0x68, 0x79, 0x1c, 0x20, + 0xf0, 0x00, 0xf8, 0x14, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0x3f, 0xe7, 0xc0, 0xb5, 0x00, + 0x31, 0x10, 0x32, 0x01, 0x1c, 0x0b, 0x1a, 0x51, + 0x39, 0x08, 0x60, 0x99, 0x60, 0x00, 0x1c, 0x01, + 0x60, 0x40, 0x1c, 0x18, 0xf0, 0x00, 0xf8, 0x02, + 0xbc, 0x08, 0x47, 0x18, 0x68, 0x0a, 0x60, 0x02, + 0x60, 0x08, 0x68, 0x02, 0x60, 0x50, 0x60, 0x41, + 0x47, 0x70, 0xc8, 0x06, 0x38, 0x08, 0x60, 0x11, + 0xc8, 0x03, 0x60, 0x41, 0x47, 0x70, 0xb5, 0x00, + 0x1c, 0x0a, 0x1c, 0x01, 0x48, 0x02, 0xf7, 0xff, + 0xff, 0xde, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x05, 0xdc, 0xb5, 0x90, 0x1c, 0x07, + 0xf0, 0x16, 0xfb, 0xf8, 0x23, 0x11, 0x05, 0x1b, + 0x1c, 0x04, 0x43, 0x18, 0xf0, 0x16, 0xfb, 0xf6, + 0x1c, 0x39, 0x48, 0x05, 0xf7, 0xff, 0xff, 0x50, + 0x1c, 0x07, 0x1c, 0x20, 0xf0, 0x16, 0xfb, 0xee, + 0x1c, 0x38, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x05, 0xdc, 0xb5, 0x00, 0x1c, 0x01, + 0x48, 0x02, 0xf7, 0xff, 0xff, 0x41, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xdc, + 0xb5, 0x90, 0x1c, 0x07, 0xd0, 0x0e, 0xf0, 0x16, + 0xfb, 0xd5, 0x23, 0x11, 0x05, 0x1b, 0x1c, 0x04, + 0x43, 0x18, 0xf0, 0x16, 0xfb, 0xd3, 0x1c, 0x39, + 0x48, 0x04, 0xf7, 0xff, 0xff, 0x61, 0x1c, 0x20, + 0xf0, 0x16, 0xfb, 0xcc, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xdc, + 0xb5, 0x00, 0x4a, 0x04, 0xc2, 0x03, 0x1c, 0x0a, + 0x1c, 0x01, 0x48, 0x03, 0xf7, 0xff, 0xff, 0x97, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xc4, + 0x2e, 0x08, 0x05, 0xd4, 0xb5, 0x00, 0x1c, 0x01, + 0x48, 0x02, 0xf7, 0xff, 0xff, 0x11, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xd4, + 0xb5, 0x00, 0x49, 0x08, 0x68, 0x0a, 0x42, 0x90, + 0xd3, 0x02, 0x68, 0x49, 0x42, 0x88, 0xd9, 0x03, + 0xf7, 0xff, 0xff, 0xc6, 0xbc, 0x08, 0x47, 0x18, + 0x1c, 0x01, 0x48, 0x03, 0xf7, 0xff, 0xff, 0x30, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xc4, + 0x2e, 0x08, 0x05, 0xd4, 0xb5, 0x00, 0x4a, 0x05, + 0x60, 0x90, 0x60, 0xd1, 0x1c, 0x0a, 0x1c, 0x01, + 0x48, 0x03, 0xf7, 0xff, 0xff, 0x68, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xc4, + 0x2e, 0x08, 0x05, 0xe4, 0xb5, 0x00, 0x1c, 0x01, + 0x48, 0x02, 0xf7, 0xff, 0xfe, 0xe1, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xe4, + 0xb5, 0x00, 0x49, 0x08, 0x68, 0x8a, 0x42, 0x90, + 0xd3, 0x02, 0x68, 0xc9, 0x42, 0x88, 0xd9, 0x03, + 0xf7, 0xff, 0xff, 0x96, 0xbc, 0x08, 0x47, 0x18, + 0x1c, 0x01, 0x48, 0x03, 0xf7, 0xff, 0xff, 0x00, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xc4, + 0x2e, 0x08, 0x05, 0xe4, 0xb5, 0xf0, 0x06, 0x07, + 0x0e, 0x3f, 0x04, 0x09, 0x0c, 0x09, 0xb0, 0x81, + 0x91, 0x00, 0x06, 0x16, 0x0e, 0x36, 0x00, 0xbd, + 0x4c, 0x15, 0x59, 0x60, 0x28, 0x00, 0xd1, 0x15, + 0xf7, 0xfb, 0xf9, 0x40, 0x22, 0x00, 0xb4, 0x04, + 0x23, 0x00, 0x22, 0x02, 0x99, 0x01, 0x1c, 0x38, + 0xf0, 0x04, 0xfe, 0x8c, 0x23, 0x01, 0x02, 0x9b, + 0x00, 0x5a, 0x21, 0x01, 0x1c, 0x38, 0xb0, 0x01, + 0xf0, 0x05, 0xf8, 0x48, 0x20, 0x03, 0x00, 0x71, + 0x4a, 0x0a, 0x52, 0x50, 0x59, 0x60, 0x30, 0x01, + 0x51, 0x60, 0x48, 0x09, 0x23, 0x14, 0x5e, 0xc1, + 0x29, 0x00, 0xd1, 0x02, 0x49, 0x07, 0x4a, 0x08, + 0x65, 0xd1, 0x8a, 0x81, 0x31, 0x01, 0x82, 0x81, + 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x02, 0x54, 0xb0, 0x2e, 0x08, 0x49, 0x78, + 0x2e, 0x08, 0x07, 0x6c, 0x2e, 0x02, 0x52, 0xc0, + 0xa0, 0x00, 0x0d, 0x00, 0xb5, 0xb0, 0x06, 0x07, + 0x0e, 0x3f, 0x06, 0x0c, 0x0e, 0x24, 0x00, 0xb9, + 0x48, 0x1a, 0x58, 0x42, 0x3a, 0x01, 0x50, 0x42, + 0xd1, 0x20, 0x23, 0x01, 0x02, 0x9b, 0x00, 0x5a, + 0x21, 0x02, 0x1c, 0x38, 0xf0, 0x05, 0xf8, 0x16, + 0x22, 0x00, 0xb4, 0x04, 0x25, 0x00, 0x1c, 0x38, + 0x1c, 0x2b, 0x49, 0x13, 0xf0, 0x04, 0xfe, 0x4a, + 0x00, 0x61, 0xb0, 0x01, 0x48, 0x11, 0x52, 0x45, + 0x48, 0x0f, 0x4a, 0x11, 0x52, 0x50, 0x00, 0x79, + 0x4a, 0x10, 0x52, 0x50, 0x00, 0x62, 0x19, 0x12, + 0x00, 0x92, 0x49, 0x0f, 0x18, 0x53, 0x81, 0x1d, + 0x52, 0x88, 0x80, 0x58, 0x48, 0x0d, 0x8a, 0x81, + 0x39, 0x01, 0x82, 0x81, 0x23, 0x14, 0x5e, 0xc0, + 0x28, 0x00, 0xd1, 0x03, 0x20, 0xd7, 0x00, 0xc0, + 0x49, 0x09, 0x65, 0xc8, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x02, 0x54, 0xb0, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x49, 0x78, + 0x2e, 0x08, 0x49, 0x38, 0x2e, 0x08, 0x49, 0x00, + 0x2e, 0x08, 0x47, 0x80, 0x2e, 0x08, 0x07, 0x6c, + 0xa0, 0x00, 0x0d, 0x00, 0xb5, 0xf0, 0x04, 0x06, + 0x0c, 0x36, 0x04, 0x0c, 0x0c, 0x24, 0x1c, 0x17, + 0xb0, 0x8a, 0x46, 0x69, 0x1c, 0x30, 0x1c, 0x22, + 0xf0, 0x00, 0xf8, 0xb0, 0x23, 0x01, 0x1c, 0x05, + 0x42, 0xd8, 0xd1, 0x03, 0xb0, 0x0a, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x4b, 0x4e, 0x42, 0x9c, + 0xd1, 0x06, 0xa8, 0x00, 0x88, 0x00, 0x1c, 0x31, + 0x1c, 0x2a, 0xf7, 0xff, 0xff, 0x57, 0xe0, 0x7f, + 0x20, 0x20, 0x40, 0x20, 0x28, 0x20, 0xd1, 0x1f, + 0x06, 0x2a, 0x0e, 0x12, 0xa8, 0x00, 0x88, 0x00, + 0x06, 0x00, 0x0e, 0x00, 0x1c, 0x31, 0x1c, 0x23, + 0xf7, 0xfd, 0xf8, 0x7c, 0x28, 0x00, 0xd0, 0x6f, + 0x48, 0x42, 0x00, 0x69, 0x4a, 0x42, 0x52, 0x50, + 0xa9, 0x00, 0x88, 0x09, 0x00, 0x49, 0x4a, 0x41, + 0x52, 0x50, 0xa8, 0x00, 0x88, 0x00, 0x1c, 0x29, + 0xf0, 0x00, 0xf9, 0xce, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0x21, 0x00, 0xaa, 0x01, 0x88, 0x3b, + 0x0a, 0x1b, 0x70, 0x13, 0x88, 0x3b, 0x93, 0x09, + 0x32, 0x01, 0x06, 0x1b, 0xd0, 0x02, 0x1c, 0x48, + 0x06, 0x00, 0x0e, 0x00, 0x9b, 0x09, 0x70, 0x13, + 0x31, 0x01, 0x32, 0x01, 0x37, 0x02, 0x29, 0x0e, + 0xdb, 0xed, 0x21, 0x00, 0x23, 0x00, 0x70, 0x13, + 0x31, 0x01, 0x32, 0x01, 0x29, 0x04, 0xdb, 0xfa, + 0x21, 0x0c, 0x40, 0x21, 0x29, 0x0c, 0xd1, 0x03, + 0x04, 0x21, 0x0c, 0x09, 0x24, 0x01, 0x43, 0x0c, + 0x28, 0x06, 0xdc, 0x0e, 0x06, 0x22, 0x0e, 0x12, + 0xb4, 0x04, 0x06, 0x2a, 0x0e, 0x12, 0xa8, 0x01, + 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x1c, 0x31, + 0xab, 0x02, 0xf7, 0xfc, 0xfc, 0x59, 0xb0, 0x01, + 0xe0, 0x1e, 0x28, 0x0a, 0xdc, 0x0e, 0x06, 0x22, + 0x0e, 0x12, 0xb4, 0x04, 0x06, 0x2a, 0x0e, 0x12, + 0xa8, 0x01, 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, + 0x1c, 0x31, 0xab, 0x02, 0xf7, 0xfc, 0xfc, 0x62, + 0xb0, 0x01, 0xe0, 0x0d, 0x06, 0x22, 0x0e, 0x12, + 0xb4, 0x04, 0x06, 0x2a, 0x0e, 0x12, 0xa8, 0x01, + 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x1c, 0x31, + 0xab, 0x02, 0xf7, 0xfc, 0xfc, 0x6d, 0xb0, 0x01, + 0x28, 0x00, 0xd0, 0x05, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xe7, 0xff, 0xa8, 0x00, 0x88, 0x00, 0x00, 0x6a, + 0x19, 0x52, 0x00, 0x92, 0x49, 0x0a, 0x52, 0x88, + 0x18, 0x50, 0x80, 0x46, 0x80, 0x84, 0x49, 0x05, + 0x80, 0xc1, 0x21, 0x01, 0x81, 0x01, 0x1c, 0x28, + 0xb0, 0x0a, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0x00, 0xb9, 0x6a, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x49, 0x38, 0x2e, 0x08, 0x49, 0x00, + 0x2e, 0x08, 0x47, 0x80, 0xb4, 0xf0, 0x04, 0x04, + 0x0c, 0x24, 0x04, 0x17, 0x0c, 0x3f, 0xb0, 0x82, + 0x48, 0x58, 0x22, 0x00, 0x4d, 0x58, 0x95, 0x01, + 0x1c, 0x06, 0x00, 0x53, 0x9d, 0x01, 0x5a, 0xed, + 0x42, 0xb5, 0xd1, 0x02, 0x04, 0x10, 0x0c, 0x00, + 0xe0, 0x02, 0x32, 0x01, 0x2a, 0x20, 0xdb, 0xf4, + 0x42, 0xb0, 0xd1, 0x04, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, 0x80, 0x0e, + 0x4a, 0x4e, 0x92, 0x00, 0x4d, 0x4e, 0x4a, 0x4f, + 0x4b, 0x4f, 0x42, 0x9f, 0xd1, 0x32, 0x23, 0x00, + 0x00, 0x5f, 0x5b, 0xd7, 0x42, 0xa7, 0xd1, 0x0a, + 0x00, 0x5f, 0x5b, 0xef, 0x2f, 0x03, 0xd1, 0x01, + 0x80, 0x0b, 0xe0, 0x07, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, 0x33, 0x01, + 0x2b, 0x1c, 0xdb, 0xed, 0x88, 0x0f, 0x4b, 0x3f, + 0x42, 0x9f, 0xd1, 0x0a, 0x27, 0x00, 0x00, 0x7b, + 0x5a, 0xd6, 0x4b, 0x3c, 0x42, 0x9e, 0xd1, 0x01, + 0x80, 0x0f, 0xe0, 0x02, 0x37, 0x01, 0x2f, 0x1c, + 0xdb, 0xf5, 0x88, 0x0f, 0x4b, 0x37, 0x42, 0x9f, + 0xd1, 0x04, 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, + 0xbc, 0xf0, 0x47, 0x70, 0x23, 0x03, 0x00, 0x47, + 0x9e, 0x00, 0x53, 0xf3, 0x88, 0x0f, 0x00, 0x7f, + 0x53, 0xeb, 0xe0, 0x54, 0x23, 0x20, 0x40, 0x3b, + 0x2b, 0x20, 0xd1, 0x1e, 0x23, 0x00, 0x00, 0x5f, + 0x5b, 0xd7, 0x42, 0xa7, 0xd1, 0x04, 0x20, 0x00, + 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, + 0x33, 0x01, 0x2b, 0x1c, 0xdb, 0xf3, 0x27, 0x00, + 0x00, 0x7b, 0x5a, 0xd5, 0x42, 0xb5, 0xd1, 0x01, + 0x80, 0x0f, 0xe0, 0x02, 0x37, 0x01, 0x2f, 0x1c, + 0xdb, 0xf6, 0x88, 0x0f, 0x42, 0xb7, 0xd1, 0x36, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, + 0x47, 0x70, 0x23, 0x00, 0x00, 0x5f, 0x5b, 0xd7, + 0x42, 0xa7, 0xd1, 0x0a, 0x00, 0x5f, 0x5b, 0xef, + 0x2f, 0x02, 0xd1, 0x01, 0x80, 0x0b, 0xe0, 0x07, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, + 0x47, 0x70, 0x33, 0x01, 0x2b, 0x1c, 0xdb, 0xed, + 0x88, 0x0f, 0x4b, 0x14, 0x42, 0x9f, 0xd1, 0x0a, + 0x27, 0x00, 0x00, 0x7b, 0x5a, 0xd6, 0x4b, 0x11, + 0x42, 0x9e, 0xd1, 0x01, 0x80, 0x0f, 0xe0, 0x02, + 0x37, 0x01, 0x2f, 0x1c, 0xdb, 0xf5, 0x88, 0x0f, + 0x4b, 0x0c, 0x42, 0x9f, 0xd1, 0x04, 0x20, 0x00, + 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, + 0x23, 0x02, 0x00, 0x47, 0x9e, 0x00, 0x53, 0xf3, + 0x88, 0x0f, 0x00, 0x7f, 0x53, 0xeb, 0x00, 0x43, + 0x9d, 0x01, 0x52, 0xec, 0x88, 0x09, 0x00, 0x49, + 0x52, 0x54, 0x04, 0x00, 0x14, 0x00, 0xb0, 0x02, + 0xbc, 0xf0, 0x47, 0x70, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x49, 0x38, 0x2e, 0x08, 0x49, 0x78, + 0x2e, 0x08, 0x49, 0xb8, 0x2e, 0x08, 0x49, 0x00, + 0x00, 0x00, 0xb9, 0x6a, 0xb5, 0xf0, 0x04, 0x07, + 0x0c, 0x3f, 0xb0, 0x81, 0x4a, 0x34, 0x92, 0x00, + 0x1c, 0x11, 0x42, 0x97, 0xd0, 0x01, 0x2f, 0x20, + 0xdb, 0x05, 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x7c, + 0x4a, 0x2e, 0x5b, 0x10, 0x42, 0x88, 0xd1, 0x05, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x01, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x49, 0x28, 0x53, 0x11, + 0x23, 0x00, 0x49, 0x29, 0x00, 0x5e, 0x5b, 0x8e, + 0x42, 0x86, 0xd1, 0x02, 0x04, 0x1d, 0x0c, 0x2d, + 0xe0, 0x02, 0x33, 0x01, 0x2b, 0x1c, 0xdb, 0xf5, + 0x23, 0x00, 0x00, 0x5e, 0x5b, 0x96, 0x42, 0x86, + 0xd1, 0x03, 0x04, 0x1a, 0x0c, 0x12, 0x92, 0x00, + 0xe0, 0x02, 0x33, 0x01, 0x2b, 0x20, 0xdb, 0xf4, + 0x9a, 0x00, 0x4e, 0x1b, 0x42, 0xb2, 0xd1, 0x0d, + 0x22, 0x00, 0x00, 0x53, 0x5a, 0xcb, 0x42, 0x83, + 0xd1, 0x05, 0x23, 0x00, 0x00, 0x50, 0x4a, 0x19, + 0x52, 0x13, 0x52, 0x0e, 0xe0, 0x02, 0x32, 0x01, + 0x2a, 0x1c, 0xdb, 0xf2, 0x4e, 0x16, 0x5b, 0x30, + 0x28, 0x02, 0xd1, 0x05, 0x23, 0x00, 0x53, 0x33, + 0x1c, 0x28, 0x1c, 0x39, 0xf0, 0x00, 0xf8, 0x38, + 0x5b, 0x30, 0x28, 0x01, 0xd1, 0x0a, 0x1c, 0x38, + 0xf7, 0xfc, 0xff, 0xf0, 0x28, 0x00, 0xd0, 0x05, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x01, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x5b, 0x30, 0x28, 0x03, + 0xd1, 0x03, 0x1c, 0x28, 0x1c, 0x39, 0xf7, 0xff, + 0xfd, 0xcd, 0x04, 0x38, 0x14, 0x00, 0xb0, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x49, 0x38, + 0x2e, 0x08, 0x49, 0x00, 0x2e, 0x08, 0x49, 0xb8, + 0x2e, 0x08, 0x49, 0x78, 0x04, 0x01, 0x0c, 0x09, + 0x20, 0x02, 0x00, 0x4b, 0x18, 0x5b, 0x00, 0x9b, + 0x4a, 0x03, 0x18, 0x99, 0x81, 0x08, 0x48, 0x03, + 0x52, 0xd0, 0x80, 0x48, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x47, 0x80, 0x00, 0x00, 0xff, 0xff, + 0xb5, 0x80, 0x04, 0x0f, 0x0c, 0x3f, 0x06, 0x39, + 0x0e, 0x09, 0x06, 0x00, 0x0e, 0x00, 0xf7, 0xfc, + 0xfc, 0x25, 0x20, 0x00, 0x00, 0x7b, 0x19, 0xdb, + 0x00, 0x9b, 0x4a, 0x04, 0x18, 0x99, 0x81, 0x08, + 0x48, 0x03, 0x52, 0xd0, 0x80, 0x48, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x47, 0x80, + 0x00, 0x00, 0xff, 0xff, 0xb5, 0x80, 0x04, 0x09, + 0x0c, 0x09, 0x78, 0x42, 0x02, 0x12, 0x78, 0x83, + 0x43, 0x1a, 0x05, 0x12, 0x0d, 0x12, 0x27, 0x00, + 0x43, 0xff, 0x32, 0x03, 0x42, 0x8a, 0xd0, 0x03, + 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0xf0, 0x05, 0xfa, 0xd0, 0x28, 0x00, 0xd0, 0x03, + 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xff, 0x9c, 0x09, 0x04, 0x00, 0x0c, 0x00, + 0xb0, 0x81, 0x90, 0x00, 0x06, 0x09, 0x0e, 0x09, + 0x06, 0x12, 0x0e, 0x12, 0xb0, 0x88, 0x4f, 0x16, + 0x68, 0xb8, 0x28, 0x0c, 0xdb, 0x06, 0x20, 0x00, + 0x43, 0xc0, 0xb0, 0x09, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x23, 0x00, + 0x00, 0x45, 0x46, 0x6e, 0x53, 0x73, 0x30, 0x01, + 0x04, 0x00, 0x14, 0x00, 0x28, 0x10, 0xdb, 0xf7, + 0x02, 0x08, 0x43, 0x10, 0xab, 0x00, 0x80, 0x18, + 0x46, 0x6a, 0x21, 0x04, 0x98, 0x08, 0xf7, 0xff, + 0xfd, 0x95, 0x28, 0x00, 0xda, 0x01, 0xb0, 0x09, + 0xe7, 0xe4, 0x00, 0x81, 0x4a, 0x05, 0x50, 0x54, + 0x9b, 0x0c, 0x4a, 0x05, 0x50, 0x53, 0x68, 0xb9, + 0x31, 0x01, 0x60, 0xb9, 0xb0, 0x09, 0xe7, 0xd9, + 0x2e, 0x08, 0x07, 0x84, 0x2e, 0x08, 0x4a, 0x70, + 0x2e, 0x08, 0x49, 0xf0, 0xb5, 0x80, 0x04, 0x07, + 0x14, 0x3f, 0xd5, 0x04, 0x20, 0x00, 0x43, 0xc0, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, + 0xf7, 0xff, 0xfe, 0xf4, 0x20, 0x00, 0x00, 0xb9, + 0x4a, 0x05, 0x50, 0x50, 0x4a, 0x05, 0x50, 0x50, + 0x49, 0x05, 0x68, 0x8a, 0x3a, 0x01, 0x60, 0x8a, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x49, 0xf0, 0x2e, 0x08, 0x4a, 0x70, + 0x2e, 0x08, 0x07, 0x84, 0xb5, 0x90, 0x27, 0x00, + 0x4c, 0x08, 0x00, 0xb8, 0x58, 0x20, 0x28, 0x00, + 0xd0, 0x02, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xd6, + 0x37, 0x01, 0x2f, 0x20, 0xdb, 0xf5, 0x20, 0x00, + 0x49, 0x03, 0x60, 0xc8, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x49, 0xf0, + 0x2e, 0x08, 0x07, 0x84, 0xb5, 0x00, 0xf7, 0xff, + 0xff, 0xe5, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, + 0x04, 0x00, 0x14, 0x00, 0xb0, 0x83, 0x90, 0x00, + 0x1c, 0x0f, 0x04, 0x11, 0x0c, 0x09, 0x24, 0x00, + 0x1c, 0x38, 0x1c, 0x1d, 0x1c, 0x0e, 0xb0, 0x81, + 0xf7, 0xff, 0xff, 0x58, 0x1c, 0x01, 0x20, 0x00, + 0x29, 0x00, 0xd0, 0x03, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x78, 0xf9, 0x02, 0x09, + 0x79, 0x3a, 0x43, 0x11, 0x04, 0x09, 0x0c, 0x09, + 0x88, 0x2a, 0x42, 0x91, 0xd0, 0x03, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x7a, 0x39, + 0x02, 0x09, 0x7a, 0x7a, 0x43, 0x11, 0x04, 0xc9, + 0x0c, 0xc9, 0x91, 0x00, 0x7a, 0xb9, 0x02, 0x09, + 0x7a, 0xfa, 0x43, 0x11, 0x05, 0x0b, 0x0d, 0x1b, + 0x1d, 0xf9, 0x31, 0x05, 0x27, 0x00, 0x1d, 0xd8, + 0x30, 0x09, 0x1a, 0x32, 0x2b, 0x00, 0xdd, 0x0a, + 0x78, 0x08, 0x28, 0x09, 0xd1, 0x00, 0x37, 0x01, + 0x78, 0x48, 0x1c, 0x85, 0x1b, 0x5b, 0x18, 0x40, + 0x1c, 0x81, 0x2b, 0x00, 0xdc, 0xf4, 0x2a, 0x00, + 0xdd, 0x36, 0x48, 0x26, 0x88, 0x06, 0x96, 0x03, + 0x88, 0x85, 0x95, 0x02, 0x78, 0xc8, 0x02, 0x00, + 0x79, 0x0b, 0x43, 0x18, 0x05, 0x00, 0x0d, 0x00, + 0x78, 0x0b, 0x2b, 0x01, 0xd0, 0x01, 0x2b, 0x02, + 0xd1, 0x06, 0x78, 0x4d, 0x02, 0x2d, 0x78, 0x8e, + 0x43, 0x35, 0x04, 0xed, 0x0c, 0xed, 0x9e, 0x03, + 0x2b, 0x04, 0xd0, 0x01, 0x2b, 0x03, 0xd1, 0x09, + 0x78, 0x4b, 0x02, 0x1b, 0x78, 0x8d, 0x43, 0x2b, + 0x04, 0xdb, 0x0c, 0xdb, 0x9d, 0x02, 0x42, 0xab, + 0xd1, 0x00, 0x24, 0x01, 0x1d, 0x43, 0x1a, 0xd2, + 0x31, 0x05, 0x28, 0x00, 0xdd, 0x0a, 0x78, 0x0b, + 0x2b, 0x09, 0xd1, 0x00, 0x37, 0x01, 0x78, 0x4b, + 0x1c, 0x9d, 0x1b, 0x40, 0x18, 0x59, 0x31, 0x02, + 0x28, 0x00, 0xdc, 0xf4, 0x2a, 0x00, 0xdc, 0xcd, + 0x2c, 0x00, 0xd0, 0x09, 0xf7, 0xff, 0xff, 0x62, + 0x99, 0x00, 0x48, 0x09, 0x80, 0x01, 0x2f, 0x00, + 0xd1, 0x07, 0xf7, 0xfa, 0xf8, 0xb7, 0xe0, 0x04, + 0x98, 0x01, 0xf7, 0xff, 0xff, 0x37, 0xf0, 0x00, + 0xf8, 0x23, 0x20, 0x00, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x07, 0x84, + 0x2e, 0x08, 0x00, 0x08, 0xb4, 0x90, 0x04, 0x02, + 0x0c, 0x12, 0x04, 0x0f, 0x0c, 0x3f, 0x4b, 0x07, + 0x68, 0xd8, 0x28, 0x80, 0xda, 0x08, 0x2a, 0x00, + 0xd0, 0x06, 0x00, 0x41, 0x4c, 0x04, 0x52, 0x67, + 0x4f, 0x04, 0x52, 0x7a, 0x30, 0x01, 0x60, 0xd8, + 0xbc, 0x90, 0x47, 0x70, 0x2e, 0x08, 0x07, 0x84, + 0x2e, 0x08, 0x4a, 0xf0, 0x2e, 0x08, 0x4b, 0xf0, + 0xb5, 0x90, 0x4f, 0x13, 0x24, 0x00, 0x43, 0xe4, + 0x68, 0xf8, 0x28, 0x00, 0xd1, 0x03, 0x1c, 0x20, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x40, + 0x49, 0x0e, 0x18, 0x41, 0x1e, 0x8a, 0xb4, 0x04, + 0x49, 0x0d, 0x18, 0x40, 0x38, 0x40, 0x8f, 0xc0, + 0x4b, 0x0c, 0x22, 0xff, 0x21, 0x02, 0xf7, 0xff, + 0xfe, 0xbb, 0xb0, 0x01, 0x28, 0x00, 0xda, 0x03, + 0x1c, 0x20, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x68, 0xf8, 0x38, 0x01, 0x60, 0xf8, 0x20, 0x00, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x07, 0x84, 0x2e, 0x08, 0x4b, 0xf0, + 0x2e, 0x08, 0x4a, 0xf0, 0x2e, 0x00, 0x63, 0x73, + 0xb5, 0xf0, 0x04, 0x05, 0x14, 0x2d, 0x1c, 0x0f, + 0x04, 0x11, 0x0c, 0x09, 0x1c, 0x0e, 0x4c, 0x28, + 0x23, 0x02, 0x69, 0x20, 0x42, 0xd8, 0xd0, 0x04, + 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0x77, 0x28, 0x00, + 0xd0, 0x06, 0x1c, 0x28, 0xf7, 0xff, 0xfe, 0xce, + 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x79, 0xb8, 0x69, 0x21, 0x42, 0x88, 0xd1, 0x09, + 0x20, 0x01, 0x43, 0xc0, 0x61, 0x20, 0x1c, 0x28, + 0xf7, 0xff, 0xfe, 0xc0, 0x20, 0x00, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x23, 0x01, 0x42, 0xd9, + 0xd1, 0x02, 0x61, 0x20, 0x20, 0x00, 0x60, 0xe0, + 0x37, 0x08, 0x1f, 0xf4, 0x3c, 0x05, 0x2c, 0x00, + 0xdd, 0x11, 0x78, 0x38, 0x02, 0x00, 0x78, 0x79, + 0x43, 0x08, 0x04, 0x00, 0x0c, 0x00, 0x78, 0xb9, + 0x02, 0x09, 0x78, 0xfa, 0x43, 0x11, 0x04, 0xc9, + 0x0c, 0xc9, 0xf7, 0xff, 0xff, 0x77, 0x37, 0x04, + 0x3c, 0x04, 0x2c, 0x00, 0xdc, 0xed, 0xf7, 0xff, + 0xff, 0x8b, 0xf7, 0xff, 0xff, 0x89, 0xf7, 0xff, + 0xff, 0x87, 0xf7, 0xff, 0xff, 0x85, 0xf7, 0xff, + 0xff, 0x83, 0xf7, 0xff, 0xff, 0x81, 0xf7, 0xff, + 0xff, 0x7f, 0xf7, 0xff, 0xff, 0x7d, 0x20, 0x00, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x07, 0x84, 0xb5, 0xf0, 0x04, 0x04, + 0x0c, 0x24, 0x04, 0x0d, 0x0c, 0x2d, 0x26, 0x00, + 0x43, 0xf6, 0x4f, 0x0f, 0x62, 0x3e, 0x61, 0xfe, + 0x61, 0xbe, 0xf7, 0xff, 0xfe, 0x9b, 0x2d, 0x00, + 0xd0, 0x13, 0x2c, 0x00, 0xd0, 0x11, 0x0c, 0xf0, + 0x42, 0x85, 0xd0, 0x0e, 0x42, 0x84, 0xd0, 0x0c, + 0x80, 0x3c, 0x80, 0xbd, 0x20, 0x00, 0x61, 0x3e, + 0x22, 0x00, 0x61, 0x78, 0xb4, 0x04, 0x4b, 0x05, + 0x22, 0xff, 0x21, 0x00, 0xf7, 0xff, 0xfe, 0x28, + 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x07, 0x84, 0x2e, 0x00, 0x65, 0x35, + 0x56, 0x47, 0x41, 0x38, 0x78, 0x31, 0x36, 0x00, + 0xb5, 0x00, 0xb0, 0x81, 0x48, 0x05, 0x69, 0xc0, + 0x68, 0x80, 0x46, 0x6b, 0x22, 0x00, 0x21, 0x00, + 0xf0, 0x0d, 0xfb, 0x5e, 0xb0, 0x01, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0xf0, 0x27, 0x00, 0xb0, 0x85, 0x97, 0x00, + 0x26, 0x10, 0x96, 0x01, 0x25, 0x05, 0x01, 0xed, + 0x95, 0x02, 0x20, 0xff, 0x30, 0xd1, 0x90, 0x03, + 0x97, 0x04, 0x22, 0x00, 0x21, 0x00, 0xb4, 0x06, + 0x4c, 0x0d, 0x69, 0xe0, 0x68, 0x81, 0x1c, 0x08, + 0xaa, 0x02, 0x1c, 0x3b, 0xf0, 0x0d, 0xfd, 0xc6, + 0xb0, 0x02, 0x97, 0x00, 0x20, 0xff, 0x30, 0xd1, + 0x90, 0x01, 0x95, 0x02, 0x96, 0x03, 0x97, 0x04, + 0x69, 0xe0, 0x68, 0x80, 0x46, 0x69, 0xf0, 0x0d, + 0xfc, 0xf7, 0xf7, 0xff, 0xff, 0xc9, 0xb0, 0x05, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x55, 0x18, 0xb5, 0x90, 0x20, 0x07, + 0xb0, 0x85, 0xf0, 0x03, 0xf8, 0xc1, 0x24, 0xff, + 0x34, 0xe1, 0x22, 0x05, 0x01, 0xd2, 0x21, 0x00, + 0x20, 0x07, 0x1c, 0x23, 0xf0, 0x03, 0xf8, 0xd0, + 0x27, 0x00, 0x22, 0x00, 0x21, 0x02, 0x20, 0x07, + 0x1c, 0x3b, 0xf0, 0x03, 0xfc, 0x79, 0x22, 0x01, + 0x21, 0x01, 0x20, 0x07, 0x1c, 0x3b, 0xf0, 0x03, + 0xfc, 0x2b, 0x22, 0x32, 0x21, 0x32, 0x20, 0x07, + 0xf0, 0x03, 0xf9, 0x86, 0x97, 0x00, 0x97, 0x01, + 0x20, 0x05, 0x01, 0xc0, 0x90, 0x02, 0x94, 0x03, + 0x97, 0x04, 0x48, 0x06, 0x69, 0xc0, 0x68, 0x80, + 0x46, 0x69, 0xf0, 0x0d, 0xfc, 0xc1, 0xf7, 0xff, + 0xff, 0x93, 0xb0, 0x05, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0xb4, 0x80, 0x01, 0x00, 0x4b, 0x2a, 0x18, 0xc0, + 0x4b, 0x2a, 0x69, 0xdb, 0x69, 0x9f, 0x00, 0x8b, + 0x18, 0x59, 0x02, 0x09, 0x18, 0x89, 0x18, 0x79, + 0x78, 0x02, 0x70, 0x0a, 0x78, 0x42, 0x1d, 0xcb, + 0x33, 0x39, 0x74, 0x1a, 0x78, 0x82, 0x1d, 0xcb, + 0x33, 0x99, 0x70, 0x1a, 0x78, 0xc2, 0x1d, 0xcb, + 0x33, 0xd9, 0x74, 0x1a, 0x79, 0x02, 0x1d, 0xcb, + 0x33, 0xff, 0x33, 0x3a, 0x70, 0x1a, 0x79, 0x42, + 0x1d, 0xcb, 0x33, 0xff, 0x33, 0x7a, 0x74, 0x1a, + 0x79, 0x82, 0x1d, 0xcb, 0x33, 0xff, 0x33, 0xda, + 0x70, 0x1a, 0x79, 0xc2, 0x23, 0x11, 0x01, 0x5b, + 0x18, 0xcb, 0x74, 0x1a, 0x7a, 0x02, 0x23, 0x05, + 0x01, 0xdb, 0x18, 0xcb, 0x70, 0x1a, 0x7a, 0x42, + 0x23, 0x0b, 0x01, 0x9b, 0x18, 0xcb, 0x74, 0x1a, + 0x7a, 0x82, 0x23, 0x19, 0x01, 0x5b, 0x18, 0xcb, + 0x70, 0x1a, 0x7a, 0xc2, 0x23, 0x1b, 0x01, 0x5b, + 0x18, 0xcb, 0x74, 0x1a, 0x7b, 0x02, 0x23, 0x0f, + 0x01, 0x9b, 0x18, 0xcb, 0x70, 0x1a, 0x7b, 0x42, + 0x23, 0x01, 0x02, 0x9b, 0x18, 0xcb, 0x74, 0x1a, + 0x7b, 0x82, 0x23, 0x23, 0x01, 0x5b, 0x18, 0xcb, + 0x70, 0x1a, 0x7b, 0xc0, 0x23, 0x25, 0x01, 0x5b, + 0x18, 0xc9, 0x74, 0x08, 0xbc, 0x80, 0x47, 0x70, + 0x2e, 0x08, 0x07, 0xa8, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0xb0, 0x23, 0x00, 0x1c, 0x07, 0x56, 0xc0, + 0x1c, 0x14, 0x1c, 0x0d, 0x28, 0x00, 0xd0, 0x0f, + 0x20, 0x50, 0x1c, 0x21, 0xf0, 0x11, 0xfe, 0x7a, + 0x19, 0x41, 0x23, 0x00, 0x56, 0xf8, 0x1c, 0x22, + 0xf7, 0xff, 0xff, 0x92, 0x23, 0x00, 0x37, 0x01, + 0x56, 0xf8, 0x34, 0x01, 0x28, 0x00, 0xd1, 0xef, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, + 0x06, 0x00, 0x0e, 0x00, 0x04, 0x09, 0x14, 0x09, + 0x04, 0x17, 0x14, 0x3f, 0x09, 0x03, 0xb0, 0x81, + 0x4a, 0x08, 0x5c, 0xd4, 0xab, 0x00, 0x70, 0x1c, + 0x07, 0x00, 0x0f, 0x00, 0x5c, 0x10, 0x70, 0x58, + 0x20, 0x00, 0x70, 0x98, 0x46, 0x68, 0x1c, 0x3a, + 0xf7, 0xff, 0xff, 0xce, 0xb0, 0x01, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x17, 0xc0, + 0xb5, 0x90, 0x04, 0x00, 0x0c, 0x00, 0x04, 0x09, + 0x14, 0x09, 0x04, 0x17, 0x14, 0x3f, 0x0b, 0x03, + 0xb0, 0x82, 0x4a, 0x0f, 0x5c, 0xd4, 0xab, 0x00, + 0x70, 0x1c, 0x0a, 0x03, 0x07, 0x1b, 0x0f, 0x1b, + 0x5c, 0xd4, 0xab, 0x00, 0x70, 0x5c, 0x09, 0x03, + 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xd4, 0xab, 0x00, + 0x70, 0x9c, 0x07, 0x00, 0x0f, 0x00, 0x5c, 0x10, + 0x70, 0xd8, 0x20, 0x00, 0x71, 0x18, 0x46, 0x68, + 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0xa5, 0xb0, 0x02, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x17, 0xc0, 0xb5, 0x90, 0x04, 0x0f, + 0x14, 0x3f, 0x04, 0x12, 0x14, 0x12, 0x0f, 0x03, + 0xb0, 0x83, 0x49, 0x1b, 0x5c, 0xcc, 0xab, 0x00, + 0x70, 0x1c, 0x0e, 0x03, 0x07, 0x1b, 0x0f, 0x1b, + 0x5c, 0xcc, 0xab, 0x00, 0x70, 0x5c, 0x0d, 0x03, + 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xcc, 0xab, 0x00, + 0x70, 0x9c, 0x0c, 0x03, 0x07, 0x1b, 0x0f, 0x1b, + 0x5c, 0xcc, 0xab, 0x00, 0x70, 0xdc, 0x0b, 0x03, + 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xcc, 0xab, 0x01, + 0x70, 0x1c, 0x0a, 0x03, 0x07, 0x1b, 0x0f, 0x1b, + 0x5c, 0xcc, 0xab, 0x01, 0x70, 0x5c, 0x09, 0x03, + 0x07, 0x1b, 0x0f, 0x1b, 0x5c, 0xcc, 0xab, 0x01, + 0x70, 0x9c, 0x07, 0x00, 0x0f, 0x00, 0x5c, 0x08, + 0x70, 0xd8, 0x20, 0x00, 0x71, 0x18, 0x46, 0x68, + 0x1c, 0x39, 0xf7, 0xff, 0xff, 0x65, 0xb0, 0x03, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x17, 0xc0, 0xb5, 0xf0, 0x1c, 0x04, + 0x04, 0x10, 0x14, 0x00, 0xb0, 0x81, 0x90, 0x00, + 0x04, 0x1e, 0x14, 0x36, 0x22, 0x3c, 0x1c, 0x20, + 0x1c, 0x0f, 0xb0, 0x85, 0xf0, 0x11, 0xfe, 0x0e, + 0xa3, 0x72, 0xcb, 0x0c, 0xf0, 0x11, 0xfe, 0x1a, + 0xf0, 0x11, 0xfe, 0x1c, 0x4d, 0x71, 0x5c, 0x28, + 0xab, 0x02, 0x70, 0x18, 0x22, 0x38, 0x1c, 0x20, + 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0xff, 0xa3, 0x6b, + 0xcb, 0x0c, 0xf0, 0x11, 0xfe, 0x0b, 0xf0, 0x11, + 0xfe, 0x0d, 0x5c, 0x28, 0xab, 0x02, 0x70, 0x58, + 0x22, 0x34, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, + 0xfd, 0xf1, 0xa3, 0x64, 0xcb, 0x0c, 0xf0, 0x11, + 0xfd, 0xfd, 0xf0, 0x11, 0xfd, 0xff, 0x5c, 0x28, + 0xab, 0x02, 0x70, 0x98, 0x22, 0x30, 0x1c, 0x20, + 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0xe3, 0xa3, 0x5d, + 0xcb, 0x0c, 0xf0, 0x11, 0xfd, 0xef, 0xf0, 0x11, + 0xfd, 0xf1, 0x5c, 0x28, 0xab, 0x02, 0x70, 0xd8, + 0x22, 0x2c, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, + 0xfd, 0xd5, 0xa3, 0x56, 0xcb, 0x0c, 0xf0, 0x11, + 0xfd, 0xe1, 0xf0, 0x11, 0xfd, 0xe3, 0x5c, 0x28, + 0xab, 0x03, 0x70, 0x18, 0x22, 0x28, 0x1c, 0x20, + 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0xc7, 0xa3, 0x4f, + 0xcb, 0x0c, 0xf0, 0x11, 0xfd, 0xd3, 0xf0, 0x11, + 0xfd, 0xd5, 0x5c, 0x28, 0xab, 0x03, 0x70, 0x58, + 0x22, 0x24, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, + 0xfd, 0xb9, 0xa3, 0x48, 0xcb, 0x0c, 0xf0, 0x11, + 0xfd, 0xc5, 0xf0, 0x11, 0xfd, 0xc7, 0x5c, 0x28, + 0xab, 0x03, 0x70, 0x98, 0x22, 0x20, 0x1c, 0x20, + 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0xab, 0xa3, 0x41, + 0xcb, 0x0c, 0xf0, 0x11, 0xfd, 0xb7, 0xf0, 0x11, + 0xfd, 0xb9, 0x5c, 0x28, 0xab, 0x03, 0x70, 0xd8, + 0x22, 0x1c, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, + 0xfd, 0x9d, 0xa3, 0x3a, 0xcb, 0x0c, 0xf0, 0x11, + 0xfd, 0xa9, 0xf0, 0x11, 0xfd, 0xab, 0x5c, 0x28, + 0xab, 0x00, 0x70, 0x18, 0x22, 0x18, 0x1c, 0x20, + 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0x8f, 0xa3, 0x33, + 0xcb, 0x0c, 0xf0, 0x11, 0xfd, 0x9b, 0xf0, 0x11, + 0xfd, 0x9d, 0x5c, 0x28, 0xab, 0x00, 0x70, 0x58, + 0x22, 0x14, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, + 0xfd, 0x81, 0xa3, 0x2c, 0xcb, 0x0c, 0xf0, 0x11, + 0xfd, 0x8d, 0xf0, 0x11, 0xfd, 0x8f, 0x5c, 0x28, + 0xab, 0x00, 0x70, 0x98, 0x22, 0x10, 0x1c, 0x20, + 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0x73, 0xa3, 0x25, + 0xcb, 0x0c, 0xf0, 0x11, 0xfd, 0x7f, 0xf0, 0x11, + 0xfd, 0x81, 0x5c, 0x28, 0xab, 0x00, 0x70, 0xd8, + 0x22, 0x0c, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, + 0xfd, 0x65, 0xa3, 0x1e, 0xcb, 0x0c, 0xf0, 0x11, + 0xfd, 0x71, 0xf0, 0x11, 0xfd, 0x73, 0x5c, 0x28, + 0xab, 0x01, 0x70, 0x18, 0x22, 0x08, 0x1c, 0x20, + 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0x57, 0xa3, 0x17, + 0xcb, 0x0c, 0xf0, 0x11, 0xfd, 0x63, 0xf0, 0x11, + 0xfd, 0x65, 0x5c, 0x28, 0xab, 0x01, 0x70, 0x58, + 0x22, 0x04, 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, + 0xfd, 0x49, 0xa3, 0x10, 0xcb, 0x0c, 0xf0, 0x11, + 0xfd, 0x55, 0xf0, 0x11, 0xfd, 0x57, 0x5c, 0x28, + 0xab, 0x01, 0x70, 0x98, 0xa3, 0x0b, 0xcb, 0x0c, + 0x1c, 0x20, 0x1c, 0x39, 0xf0, 0x11, 0xfd, 0x4a, + 0xf0, 0x11, 0xfd, 0x4c, 0x5c, 0x28, 0xab, 0x01, + 0x70, 0xd8, 0x20, 0x00, 0x73, 0x18, 0x46, 0x68, + 0x99, 0x05, 0x1c, 0x32, 0x33, 0x0c, 0xf7, 0xff, + 0xfe, 0x6f, 0xb0, 0x06, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x17, 0xc0, + 0x21, 0x00, 0xb0, 0x81, 0x91, 0x00, 0xe0, 0x02, + 0x99, 0x00, 0x31, 0x01, 0x91, 0x00, 0x99, 0x00, + 0x42, 0x81, 0xdb, 0xf9, 0xb0, 0x01, 0x47, 0x70, + 0xb5, 0xf0, 0x06, 0x06, 0x0e, 0x36, 0x25, 0x02, + 0x48, 0x0d, 0x60, 0x05, 0x27, 0x07, 0x4c, 0x0d, + 0x60, 0x25, 0x20, 0x01, 0x40, 0xb8, 0x40, 0x30, + 0xd0, 0x01, 0x20, 0x03, 0xe0, 0x00, 0x20, 0x02, + 0x49, 0x09, 0x60, 0x08, 0x20, 0x0a, 0xf7, 0xff, + 0xff, 0xdf, 0x20, 0x03, 0x60, 0x20, 0x20, 0x0c, + 0xf7, 0xff, 0xff, 0xda, 0x3f, 0x01, 0xd5, 0xeb, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x6e, 0x00, 0x14, 0x00, 0x6e, 0x00, 0x13, 0x00, + 0x6e, 0x00, 0x12, 0x00, 0xb5, 0x80, 0x06, 0x00, + 0x0e, 0x00, 0x06, 0x0f, 0x0e, 0x3f, 0x06, 0x00, + 0x0e, 0x00, 0x23, 0x80, 0x43, 0x18, 0xf7, 0xff, + 0xff, 0xcf, 0x20, 0x14, 0xf7, 0xff, 0xff, 0xc0, + 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xc9, 0x20, 0x03, + 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, 0x49, 0x04, + 0x60, 0x08, 0x49, 0x04, 0x60, 0x08, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x6e, 0x00, 0x14, 0x00, + 0x6e, 0x00, 0x12, 0x00, 0x6e, 0x00, 0x13, 0x00, + 0xb5, 0x00, 0x21, 0x01, 0x20, 0x02, 0xf7, 0xff, + 0xff, 0xd9, 0x48, 0x10, 0xf7, 0xff, 0xff, 0xa4, + 0x21, 0x00, 0x20, 0x02, 0xf7, 0xff, 0xff, 0xd2, + 0x48, 0x0d, 0xf7, 0xff, 0xff, 0x9d, 0x21, 0x44, + 0x20, 0x00, 0xf7, 0xff, 0xff, 0xcb, 0x21, 0x81, + 0x20, 0x01, 0xf7, 0xff, 0xff, 0xc7, 0x21, 0xf0, + 0x20, 0x02, 0xf7, 0xff, 0xff, 0xc3, 0x21, 0x45, + 0x20, 0x03, 0xf7, 0xff, 0xff, 0xbf, 0x21, 0x45, + 0x20, 0x04, 0xf7, 0xff, 0xff, 0xbb, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x20, + 0x00, 0x00, 0xc3, 0x50, 0xb5, 0x80, 0x06, 0x07, + 0x0e, 0x3f, 0x06, 0x08, 0x0e, 0x00, 0x28, 0x45, + 0xdd, 0x00, 0x20, 0x45, 0x1d, 0xc1, 0x31, 0x79, + 0x20, 0x03, 0xf7, 0xff, 0xff, 0xa7, 0x2f, 0x45, + 0xdd, 0x00, 0x27, 0x45, 0x20, 0x04, 0x1d, 0xf9, + 0x31, 0x79, 0xf7, 0xff, 0xff, 0x9f, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, 0xf0, 0x15, + 0xfb, 0xad, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, + 0xf0, 0x15, 0xfb, 0xac, 0xf0, 0x15, 0xfb, 0xa6, + 0x23, 0x01, 0x03, 0x9b, 0x43, 0x18, 0xf0, 0x15, + 0xfb, 0xa5, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, + 0xf0, 0x15, 0xfb, 0x9c, 0x4b, 0x05, 0x40, 0x18, + 0xf0, 0x15, 0xfb, 0x9c, 0xf0, 0x15, 0xfb, 0x96, + 0x4b, 0x03, 0x40, 0x18, 0xf0, 0x15, 0xfb, 0x96, + 0xbc, 0x08, 0x47, 0x18, 0xff, 0xff, 0xbf, 0xff, + 0xff, 0xff, 0xdf, 0xff, 0xb5, 0x80, 0x1c, 0x07, + 0xf7, 0xff, 0xff, 0xd8, 0x07, 0xf8, 0x0f, 0x40, + 0x49, 0x0a, 0x58, 0x08, 0x0c, 0x39, 0xd3, 0x05, + 0x23, 0x01, 0x02, 0x5b, 0x68, 0x01, 0x43, 0x19, + 0x60, 0x01, 0xe0, 0x03, 0x68, 0x01, 0x4b, 0x06, + 0x40, 0x19, 0x60, 0x01, 0xf0, 0x0e, 0xf8, 0x9a, + 0xf7, 0xff, 0xff, 0xd5, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x48, + 0xff, 0xff, 0xfd, 0xff, 0xb5, 0x00, 0x4a, 0x09, + 0x1f, 0x11, 0x20, 0x0e, 0xf0, 0x0e, 0xf8, 0x44, + 0x28, 0x00, 0xd1, 0x09, 0x48, 0x06, 0xf0, 0x0e, + 0xf8, 0x85, 0x49, 0x06, 0x20, 0x0e, 0xf0, 0x15, + 0xfb, 0x65, 0xf7, 0xff, 0xff, 0xbc, 0x20, 0x00, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x17, 0xe4, + 0x2e, 0x08, 0x1a, 0x3c, 0x2e, 0x00, 0x6d, 0x17, + 0xb5, 0x00, 0xf7, 0xff, 0xff, 0x9f, 0x21, 0x00, + 0x20, 0x0e, 0xf0, 0x15, 0xfb, 0x53, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0x00, 0x48, 0x05, 0x7c, 0x01, + 0x29, 0x01, 0xd1, 0x05, 0x69, 0x41, 0x29, 0xff, + 0xd0, 0x02, 0x20, 0x01, 0xf0, 0x00, 0xf8, 0x04, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x17, 0xd0, + 0xb5, 0x90, 0x06, 0x0c, 0x0e, 0x24, 0x1c, 0x07, + 0xf7, 0xff, 0xff, 0x84, 0x48, 0x11, 0x68, 0x01, + 0x00, 0x49, 0x08, 0x49, 0x07, 0xfa, 0x43, 0x11, + 0x0a, 0x09, 0x02, 0x09, 0x43, 0x21, 0x60, 0x01, + 0x68, 0xc2, 0x2a, 0x00, 0xd1, 0x11, 0x68, 0x82, + 0x1c, 0x53, 0x68, 0x82, 0x60, 0x83, 0x00, 0x92, + 0x4b, 0x09, 0x50, 0x99, 0x68, 0x81, 0x29, 0x64, + 0xd1, 0x01, 0x21, 0x00, 0x60, 0x81, 0x68, 0x81, + 0x68, 0x42, 0x42, 0x91, 0xd1, 0x01, 0x21, 0x01, + 0x60, 0xc1, 0xf7, 0xff, 0xff, 0x74, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x17, 0xd0, + 0x2e, 0x08, 0x4c, 0xf0, 0xb5, 0x90, 0x1c, 0x07, + 0xf7, 0xff, 0xff, 0x58, 0x48, 0x10, 0x68, 0xc1, + 0x24, 0x00, 0x29, 0x00, 0xd1, 0x03, 0x68, 0x41, + 0x68, 0x82, 0x42, 0x91, 0xd0, 0x12, 0x68, 0x41, + 0x1c, 0x4a, 0x68, 0x41, 0x60, 0x42, 0x00, 0x89, + 0x4a, 0x0a, 0x58, 0x51, 0x60, 0x39, 0x68, 0x41, + 0x29, 0x64, 0xd1, 0x00, 0x60, 0x44, 0x60, 0xc4, + 0xf7, 0xff, 0xff, 0x51, 0x20, 0x01, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xff, 0xff, 0x4b, + 0x1c, 0x20, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x17, 0xd0, 0x2e, 0x08, 0x4c, 0xf0, + 0xb5, 0x80, 0xb0, 0x81, 0x4f, 0x0e, 0x8e, 0xb8, + 0x28, 0x00, 0xd1, 0x04, 0x46, 0x68, 0xf7, 0xff, + 0xff, 0xcd, 0x28, 0x00, 0xd1, 0x05, 0x20, 0x00, + 0x43, 0xc0, 0xb0, 0x01, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x98, 0x00, 0x49, 0x07, 0x60, 0x08, + 0x20, 0x08, 0x85, 0x38, 0x20, 0x04, 0x85, 0x78, + 0x20, 0x0f, 0x02, 0x40, 0x86, 0xb8, 0x20, 0x01, + 0xb0, 0x01, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x2c, 0x00, 0x1f, 0xc0, 0x2c, 0x00, 0x1e, 0x00, + 0x21, 0x00, 0xb0, 0x81, 0x91, 0x00, 0xe0, 0x02, + 0x99, 0x00, 0x31, 0x01, 0x91, 0x00, 0x99, 0x00, + 0x42, 0x81, 0xd3, 0xf9, 0xb0, 0x01, 0x47, 0x70, + 0xb5, 0xf0, 0x06, 0x0d, 0x0e, 0x2d, 0xb0, 0x83, + 0x49, 0x23, 0x68, 0x09, 0x91, 0x01, 0x26, 0x09, + 0x1d, 0xc4, 0x34, 0x19, 0xab, 0x02, 0x70, 0x1d, + 0x20, 0xff, 0x3b, 0x04, 0x70, 0x18, 0x22, 0x01, + 0xb4, 0x04, 0x7b, 0x20, 0xa9, 0x03, 0xab, 0x02, + 0xf7, 0xfa, 0xfb, 0x72, 0xb0, 0x01, 0xaf, 0x01, + 0x78, 0x3f, 0xab, 0x02, 0x70, 0x1d, 0x20, 0xff, + 0x3b, 0x04, 0x70, 0x18, 0x22, 0x01, 0xb4, 0x04, + 0x7b, 0x20, 0xa9, 0x03, 0xab, 0x02, 0xf7, 0xfa, + 0xfb, 0x63, 0xb0, 0x01, 0xa9, 0x01, 0x78, 0x09, + 0x91, 0x00, 0xab, 0x02, 0x70, 0x1d, 0x20, 0xff, + 0x3b, 0x04, 0x70, 0x18, 0x22, 0x01, 0xb4, 0x04, + 0x7b, 0x20, 0xa9, 0x03, 0xab, 0x02, 0xf7, 0xfa, + 0xfb, 0x53, 0xb0, 0x01, 0xa8, 0x01, 0x78, 0x00, + 0x99, 0x00, 0x42, 0x8f, 0xd1, 0x06, 0x42, 0x87, + 0xd1, 0x04, 0x1c, 0x38, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x1e, 0x70, 0x06, 0x06, + 0x0e, 0x36, 0xd1, 0xc3, 0x20, 0xff, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x02, 0x56, 0xc8, 0xb5, 0xf0, 0x06, 0x0c, + 0x0e, 0x24, 0x06, 0x16, 0x0e, 0x36, 0x25, 0x0a, + 0xb0, 0x82, 0xab, 0x00, 0x70, 0x1c, 0x70, 0x5e, + 0x1c, 0x07, 0x30, 0x20, 0x90, 0x01, 0x98, 0x01, + 0x7b, 0x00, 0x46, 0x69, 0x22, 0x02, 0xf7, 0xfa, + 0xfa, 0xcc, 0x1c, 0x38, 0x1c, 0x21, 0xf7, 0xff, + 0xff, 0x9b, 0x1c, 0x01, 0x2c, 0x00, 0xd0, 0x05, + 0x2c, 0x09, 0xd0, 0x03, 0x2c, 0x1f, 0xd1, 0x03, + 0x20, 0x7f, 0xe0, 0x02, 0x20, 0x5e, 0xe0, 0x00, + 0x20, 0xff, 0x40, 0x71, 0x40, 0x08, 0xd1, 0x03, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x1e, 0x68, 0x06, 0x05, 0x0e, 0x2d, 0xd1, 0xde, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0x90, 0x1c, 0x07, 0x2a, 0x00, 0xd0, 0x01, + 0x24, 0x09, 0xe0, 0x00, 0x24, 0x00, 0x00, 0x90, + 0x19, 0xc0, 0x6c, 0x02, 0x42, 0x8a, 0xd0, 0x15, + 0x64, 0x01, 0x20, 0x03, 0x4a, 0x19, 0x29, 0x01, + 0xd0, 0x13, 0x29, 0x02, 0xd0, 0x1f, 0x29, 0x03, + 0xd1, 0x0c, 0x60, 0x10, 0x1c, 0x38, 0x1c, 0x21, + 0xf7, 0xff, 0xff, 0x66, 0x23, 0xf3, 0x40, 0x18, + 0x22, 0x08, 0x43, 0x02, 0x1c, 0x38, 0x1c, 0x21, + 0xf7, 0xff, 0xff, 0xac, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x60, 0x10, 0x1c, 0x38, 0x1c, 0x21, + 0xf7, 0xff, 0xff, 0x56, 0x22, 0xf3, 0x40, 0x02, + 0x1c, 0x38, 0x1c, 0x21, 0xf7, 0xff, 0xff, 0x9e, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x38, + 0x1c, 0x21, 0xf7, 0xff, 0xff, 0x49, 0x23, 0xf3, + 0x40, 0x18, 0x22, 0x04, 0x43, 0x02, 0x1c, 0x38, + 0x1c, 0x21, 0xf7, 0xff, 0xff, 0x8f, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x6e, 0x00, 0x11, 0x00, + 0xb5, 0xf0, 0x1c, 0x0c, 0x68, 0x41, 0x68, 0x09, + 0x68, 0x80, 0x1c, 0x1f, 0x28, 0x00, 0xd0, 0x01, + 0x6b, 0x8b, 0xe0, 0x00, 0x23, 0x00, 0x6b, 0x0e, + 0x43, 0x32, 0x6b, 0xcd, 0x43, 0x2a, 0x43, 0x1a, + 0x43, 0x1e, 0x1c, 0x15, 0x1c, 0x02, 0x1c, 0x08, + 0x21, 0x01, 0xf7, 0xff, 0xff, 0xa5, 0x20, 0x00, + 0x2f, 0x00, 0xdd, 0x07, 0x88, 0x29, 0x54, 0x21, + 0x88, 0x31, 0x54, 0x21, 0x30, 0x01, 0x35, 0x02, + 0x42, 0xb8, 0xdb, 0xf7, 0x1c, 0x38, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x68, 0x41, + 0x68, 0x0c, 0x68, 0x80, 0x1c, 0x1f, 0x28, 0x00, + 0xd0, 0x01, 0x6b, 0xa6, 0xe0, 0x00, 0x26, 0x00, + 0x6b, 0x21, 0x43, 0x11, 0x6b, 0xe2, 0x43, 0x11, + 0x43, 0x31, 0x1c, 0x02, 0x1c, 0x0d, 0x21, 0x01, + 0x1c, 0x20, 0xf7, 0xff, 0xff, 0x81, 0x20, 0x00, + 0x2f, 0x00, 0xdd, 0x09, 0x99, 0x01, 0x5c, 0x09, + 0x80, 0x29, 0x6b, 0x21, 0x19, 0x89, 0x88, 0x09, + 0x30, 0x01, 0x35, 0x02, 0x42, 0xb8, 0xdb, 0xf5, + 0x1c, 0x38, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0xb0, 0x68, 0x42, 0x68, 0x17, + 0x68, 0x82, 0x2a, 0x00, 0xd0, 0x01, 0x6b, 0xbc, + 0xe0, 0x00, 0x24, 0x00, 0x08, 0x48, 0xd3, 0x0a, + 0x23, 0xfe, 0x40, 0x19, 0x6b, 0x38, 0x43, 0x08, + 0x6b, 0x79, 0x43, 0x08, 0x6b, 0xf9, 0x43, 0x08, + 0x43, 0x20, 0x1c, 0x05, 0xe0, 0x05, 0x6b, 0x38, + 0x43, 0x08, 0x6b, 0xf9, 0x43, 0x08, 0x43, 0x20, + 0x1c, 0x05, 0x21, 0x02, 0x1c, 0x38, 0xf7, 0xff, + 0xff, 0x4f, 0x6b, 0x38, 0x43, 0x20, 0x88, 0x29, + 0x88, 0x01, 0x88, 0x00, 0x06, 0x00, 0x0e, 0x00, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xb0, + 0x06, 0x15, 0x0e, 0x2d, 0x68, 0x42, 0x68, 0x13, + 0x68, 0x82, 0x2a, 0x00, 0xd0, 0x01, 0x6b, 0x98, + 0xe0, 0x00, 0x20, 0x00, 0x07, 0xcc, 0x0f, 0xe4, + 0xd0, 0x08, 0x6b, 0x1f, 0x43, 0x39, 0x6b, 0x5f, + 0x43, 0x39, 0x6b, 0xdf, 0x43, 0x39, 0x43, 0x01, + 0x1c, 0x0f, 0xe0, 0x05, 0x6b, 0x1f, 0x43, 0x39, + 0x6b, 0xdf, 0x43, 0x39, 0x43, 0x01, 0x1c, 0x0f, + 0x21, 0x02, 0x1c, 0x18, 0xf7, 0xff, 0xff, 0x24, + 0x80, 0x3d, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x47, 0x70, 0xb5, 0x80, 0x68, 0x41, 0x68, 0x0a, + 0x68, 0x80, 0x28, 0x00, 0xd0, 0x01, 0x21, 0x09, + 0xe0, 0x00, 0x21, 0x00, 0x27, 0x00, 0x1c, 0x10, + 0x6c, 0xd2, 0xf0, 0x11, 0xf9, 0xdb, 0x08, 0x40, + 0xd3, 0x00, 0x27, 0x01, 0x1c, 0x38, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x68, 0x42, + 0x68, 0x17, 0x68, 0x80, 0x28, 0x00, 0xd0, 0x01, + 0x24, 0x09, 0xe0, 0x00, 0x24, 0x00, 0x29, 0x00, + 0xd0, 0x16, 0x29, 0x01, 0xd0, 0x21, 0x29, 0x02, + 0xd1, 0x0e, 0x22, 0x80, 0x6c, 0xbb, 0x1c, 0x38, + 0x1c, 0x21, 0xf0, 0x11, 0xf9, 0xc1, 0x48, 0x1e, + 0xf7, 0xff, 0xfe, 0x66, 0x22, 0x00, 0x6c, 0xbb, + 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x11, 0xf9, 0xb8, + 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x6c, 0xfa, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x11, + 0xf9, 0xad, 0x22, 0x9f, 0x40, 0x02, 0x6c, 0xbb, + 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x11, 0xf9, 0xa8, + 0xe7, 0xee, 0x6c, 0xfa, 0x1c, 0x38, 0x1c, 0x21, + 0xf0, 0x11, 0xf9, 0xa0, 0x22, 0x20, 0x43, 0x02, + 0x6c, 0xbb, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x11, + 0xf9, 0x9b, 0x25, 0x00, 0x6c, 0xfa, 0x1c, 0x38, + 0x1c, 0x21, 0xf0, 0x11, 0xf9, 0x93, 0x1c, 0x06, + 0x09, 0x80, 0xd2, 0x05, 0x20, 0x14, 0xf7, 0xff, + 0xfe, 0x37, 0x35, 0x01, 0x2d, 0x0a, 0xdb, 0xf1, + 0x22, 0x40, 0x43, 0x32, 0x6c, 0xbb, 0x1c, 0x38, + 0x1c, 0x21, 0xf0, 0x11, 0xf9, 0x85, 0xe7, 0xcb, + 0x00, 0x01, 0x86, 0xa0, 0xb5, 0x80, 0x49, 0x0f, + 0x4f, 0x0f, 0x8e, 0xfa, 0x20, 0x00, 0x43, 0xc0, + 0x2a, 0x00, 0xd1, 0x13, 0x8d, 0xba, 0x06, 0x12, + 0x0e, 0x12, 0x2a, 0x0c, 0xd1, 0x0e, 0x8d, 0xf8, + 0x28, 0x00, 0xd0, 0x09, 0x8d, 0xf8, 0x1e, 0x82, + 0xb4, 0x04, 0x78, 0x4a, 0x1c, 0x8b, 0x78, 0x09, + 0x48, 0x06, 0xf0, 0x00, 0xfd, 0x69, 0xb0, 0x01, + 0x20, 0x00, 0x85, 0xb8, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2c, 0x00, 0x12, 0x00, + 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x4e, 0x80, + 0x48, 0x08, 0x8d, 0x81, 0x29, 0x00, 0xd0, 0x02, + 0x20, 0x00, 0x43, 0xc0, 0x47, 0x70, 0x21, 0x0c, + 0x85, 0x81, 0x21, 0x01, 0x02, 0xc9, 0x85, 0xc1, + 0x21, 0x09, 0x02, 0x49, 0x86, 0xc1, 0x20, 0x00, + 0x47, 0x70, 0x00, 0x00, 0x2c, 0x00, 0x1f, 0xc0, + 0xb5, 0x90, 0x4f, 0x15, 0x68, 0x38, 0x28, 0x00, + 0xd0, 0x23, 0xf7, 0xff, 0xff, 0xbf, 0x48, 0x13, + 0x68, 0x00, 0x68, 0x79, 0x1a, 0x41, 0x29, 0x02, + 0xd3, 0x1b, 0x60, 0x78, 0x4c, 0x10, 0x8e, 0xa0, + 0x4f, 0x10, 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x38, + 0xf0, 0x00, 0xfc, 0xda, 0x8e, 0xa0, 0x28, 0x00, + 0xd1, 0x04, 0x23, 0xc9, 0x00, 0x9b, 0x18, 0xf8, + 0xf0, 0x00, 0xfc, 0xd2, 0x69, 0xb8, 0x28, 0x06, + 0xd0, 0x05, 0x23, 0x03, 0x02, 0x1b, 0x18, 0xf8, + 0x6b, 0xc0, 0x28, 0x06, 0xd1, 0x01, 0xf7, 0xff, + 0xff, 0xc3, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x1a, 0x50, 0x2e, 0x08, 0x05, 0xc0, + 0x2c, 0x00, 0x1f, 0xc0, 0x2e, 0x08, 0x4e, 0xd0, + 0xb5, 0x00, 0x1c, 0x10, 0x1c, 0x1a, 0x1c, 0x03, + 0x1c, 0x08, 0x1c, 0x19, 0xf7, 0xf9, 0xfd, 0x06, + 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, + 0x4f, 0x23, 0x24, 0x02, 0x48, 0x23, 0x60, 0x04, + 0x22, 0x50, 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x11, + 0xf9, 0x57, 0x20, 0x80, 0x1d, 0xf9, 0x31, 0x19, + 0x73, 0x08, 0x20, 0x03, 0x07, 0x00, 0x63, 0x38, + 0x02, 0xe0, 0x63, 0x78, 0x03, 0x20, 0x63, 0xb8, + 0x03, 0x60, 0x63, 0xf8, 0x48, 0x1a, 0x64, 0xb8, + 0x48, 0x1a, 0x64, 0xf8, 0x60, 0x3f, 0x48, 0x1a, + 0x60, 0xf8, 0x60, 0x7c, 0x24, 0x00, 0x60, 0xbc, + 0x48, 0x18, 0x61, 0x78, 0x48, 0x18, 0x61, 0xb8, + 0x48, 0x18, 0x61, 0xf8, 0x48, 0x18, 0x62, 0x38, + 0x48, 0x18, 0x61, 0x38, 0x48, 0x18, 0x62, 0x78, + 0x48, 0x18, 0x62, 0xb8, 0x1c, 0x38, 0xf0, 0x00, + 0xf8, 0xcb, 0x4f, 0x17, 0x28, 0x00, 0xd0, 0x03, + 0x60, 0x3c, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x01, 0x06, 0x40, 0xf0, 0x15, 0xf8, 0x2d, + 0x48, 0x12, 0xf7, 0xff, 0xfd, 0x71, 0x20, 0x01, + 0x60, 0x38, 0x48, 0x11, 0x68, 0x00, 0x60, 0x78, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x4e, 0x80, 0x6e, 0x00, 0x11, 0x00, + 0x2e, 0x00, 0x6e, 0xe1, 0x2e, 0x00, 0x6e, 0x45, + 0x2e, 0x08, 0x4e, 0xd0, 0x2e, 0x00, 0x6f, 0xcd, + 0x2e, 0x00, 0x70, 0x19, 0x2e, 0x00, 0x70, 0x67, + 0x2e, 0x00, 0x70, 0xbb, 0x2e, 0x00, 0x72, 0xb5, + 0x2e, 0x00, 0x71, 0x07, 0x2e, 0x00, 0x71, 0x31, + 0x2e, 0x08, 0x1a, 0x50, 0x00, 0x06, 0x1a, 0x80, + 0x2e, 0x08, 0x05, 0xc0, 0xb5, 0x00, 0x23, 0xc9, + 0x00, 0x9b, 0x43, 0x4b, 0x68, 0xc2, 0x18, 0xd2, + 0x60, 0x10, 0x60, 0x91, 0x60, 0x50, 0x1c, 0x10, + 0xf0, 0x00, 0xfb, 0xc4, 0x20, 0x00, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0x80, 0x22, 0x80, 0x21, 0x1f, + 0x6c, 0x83, 0x1c, 0x07, 0xf0, 0x11, 0xf8, 0x8c, + 0x48, 0x3e, 0xf7, 0xff, 0xfd, 0x31, 0x22, 0x55, + 0x21, 0x02, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x83, 0x21, 0x02, 0x6c, 0xfa, 0x1c, 0x38, + 0xf0, 0x11, 0xf8, 0x7c, 0x28, 0x55, 0xd0, 0x04, + 0x20, 0x00, 0x43, 0xc0, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x22, 0x33, 0x21, 0x05, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x71, 0x22, 0x33, + 0x21, 0x0e, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x6b, 0x22, 0x21, 0x21, 0x17, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x65, 0x22, 0x00, + 0x21, 0x01, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x5f, 0x22, 0x00, 0x21, 0x0a, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x59, 0x22, 0x01, + 0x21, 0x02, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x53, 0x22, 0x01, 0x21, 0x0b, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x4d, 0x22, 0x00, + 0x21, 0x03, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x47, 0x22, 0x00, 0x21, 0x0c, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x41, 0x22, 0x00, + 0x21, 0x04, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x3b, 0x22, 0x01, 0x21, 0x0d, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x35, 0x22, 0x02, + 0x21, 0x1e, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x2f, 0x22, 0x04, 0x21, 0x1c, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x29, 0x22, 0x03, + 0x21, 0x1b, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x23, 0x22, 0x01, 0x21, 0x1f, 0x6c, 0xbb, + 0x1c, 0x38, 0xf0, 0x11, 0xf8, 0x1d, 0x22, 0x01, + 0x21, 0x18, 0x6c, 0xbb, 0x1c, 0x38, 0xf0, 0x11, + 0xf8, 0x17, 0x21, 0x1a, 0x6c, 0xfa, 0x1c, 0x38, + 0xf0, 0x11, 0xf8, 0x10, 0x20, 0x00, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, 0xc3, 0x50, + 0xb5, 0x90, 0x1c, 0x07, 0xf7, 0xff, 0xff, 0x75, + 0x28, 0x00, 0xda, 0x04, 0x20, 0x00, 0x43, 0xc0, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x24, 0x00, + 0x64, 0x3c, 0x64, 0x7c, 0x1c, 0x38, 0xf0, 0x00, + 0xfc, 0x29, 0x1c, 0x20, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0xb5, 0x00, 0x1c, 0x13, + 0x1c, 0x0a, 0x1c, 0x01, 0x1c, 0x18, 0xf0, 0x00, + 0xf8, 0xe5, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, + 0x1c, 0x0b, 0x68, 0x54, 0x69, 0x27, 0x1c, 0x11, + 0x2f, 0x00, 0xd0, 0x04, 0x68, 0x89, 0x1c, 0x02, + 0x1c, 0x20, 0xf0, 0x10, 0xff, 0xe9, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, 0x69, 0x82, + 0x68, 0x44, 0xb0, 0x81, 0x42, 0x8a, 0xd1, 0x03, + 0xb0, 0x01, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x22, 0xff, 0xab, 0x00, 0x61, 0x81, 0x70, 0x1a, + 0x22, 0x02, 0x70, 0x5a, 0x22, 0x00, 0x70, 0x9a, + 0x70, 0xd9, 0x69, 0x27, 0x2f, 0x00, 0xd0, 0x05, + 0x46, 0x6a, 0x68, 0x81, 0x23, 0x04, 0x1c, 0x20, + 0xf0, 0x10, 0xff, 0xca, 0xb0, 0x01, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, 0x49, 0x04, + 0x68, 0x09, 0x31, 0x19, 0x61, 0x01, 0x21, 0x00, + 0xf7, 0xff, 0xff, 0xd8, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x05, 0xc0, 0xb5, 0xf0, 0x1c, 0x07, + 0x68, 0x40, 0x69, 0x40, 0x25, 0x00, 0xb0, 0x9e, + 0x28, 0x00, 0xd1, 0x08, 0x21, 0x02, 0x1c, 0x38, + 0xf7, 0xff, 0xff, 0xc8, 0x1c, 0x28, 0xb0, 0x1e, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x23, 0x11, + 0x01, 0x5b, 0x18, 0xfc, 0x70, 0x25, 0x23, 0xff, + 0x22, 0x00, 0x68, 0x7e, 0x69, 0x76, 0x1c, 0x38, + 0x1c, 0x21, 0x33, 0x01, 0xf0, 0x10, 0xff, 0x9a, + 0x46, 0x68, 0x22, 0xff, 0x1c, 0x21, 0x32, 0x01, + 0xf0, 0x01, 0xfb, 0x08, 0x28, 0x00, 0xda, 0x11, + 0x23, 0x03, 0x02, 0x1b, 0x18, 0xf8, 0x6a, 0x01, + 0x31, 0x01, 0x62, 0x01, 0x29, 0x64, 0xdd, 0x03, + 0x21, 0x00, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xa2, + 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x1e, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x46, 0x68, 0x1d, 0xc1, + 0x31, 0x6b, 0x23, 0x01, 0x9a, 0x16, 0x68, 0x7c, + 0x69, 0xa4, 0x1c, 0x38, 0xf0, 0x10, 0xff, 0x72, + 0x21, 0x02, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0x8e, + 0x21, 0x01, 0x68, 0x7a, 0x6a, 0x92, 0x1c, 0x38, + 0xf0, 0x10, 0xff, 0x64, 0x1c, 0x28, 0xb0, 0x1e, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, + 0x21, 0x01, 0x68, 0x42, 0x69, 0xd2, 0xf0, 0x10, + 0xff, 0x59, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, + 0x1d, 0xc6, 0x36, 0x19, 0x1c, 0x07, 0xf7, 0xff, + 0xff, 0xf2, 0x0a, 0x00, 0xd2, 0x03, 0x20, 0x00, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x21, 0x02, + 0x68, 0x7a, 0x69, 0xd2, 0x1c, 0x38, 0xf0, 0x10, + 0xff, 0x45, 0x1c, 0x04, 0x21, 0x03, 0x68, 0x7a, + 0x69, 0xd2, 0x1c, 0x38, 0xf0, 0x10, 0xff, 0x3e, + 0x02, 0x00, 0x43, 0x20, 0x04, 0x04, 0x0c, 0x24, + 0x69, 0xf8, 0x42, 0xa0, 0xda, 0x01, 0x04, 0x04, + 0x0c, 0x24, 0x25, 0x00, 0x2c, 0x00, 0xdd, 0x09, + 0x21, 0x00, 0x68, 0x7a, 0x69, 0xd2, 0x1c, 0x38, + 0xf0, 0x10, 0xff, 0x2c, 0x55, 0x70, 0x35, 0x01, + 0x42, 0xa5, 0xdb, 0xf5, 0x1c, 0x21, 0xa0, 0x07, + 0xf0, 0x10, 0xff, 0x98, 0x69, 0xb8, 0x28, 0x06, + 0xd1, 0x04, 0x68, 0xf8, 0x1c, 0x31, 0x1c, 0x22, + 0xf0, 0x00, 0xff, 0x5e, 0x1c, 0x20, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x20, 0x6c, 0x65, 0x6e, 0x3d, 0x25, + 0x64, 0x0a, 0x00, 0x00, 0xb5, 0xf0, 0x1c, 0x14, + 0x1c, 0x0d, 0x1c, 0x07, 0xf7, 0xff, 0xff, 0xab, + 0x22, 0x01, 0x21, 0x01, 0x68, 0x7b, 0x6a, 0x1b, + 0x1c, 0x38, 0xf0, 0x10, 0xfe, 0xfd, 0x1c, 0x38, + 0xf7, 0xff, 0xff, 0x99, 0x09, 0xc0, 0xd3, 0x23, + 0x06, 0x22, 0x0e, 0x12, 0x21, 0x02, 0x68, 0x7b, + 0x6a, 0x1b, 0x1c, 0x38, 0xf0, 0x10, 0xfe, 0xf0, + 0x12, 0x22, 0x21, 0x03, 0x68, 0x7b, 0x6a, 0x1b, + 0x1c, 0x38, 0xf0, 0x10, 0xfe, 0xe9, 0x26, 0x00, + 0x2c, 0x00, 0xdd, 0x09, 0x5d, 0xaa, 0x21, 0x00, + 0x68, 0x7b, 0x6a, 0x1b, 0x1c, 0x38, 0xf0, 0x10, + 0xfe, 0xdf, 0x36, 0x01, 0x42, 0xa6, 0xdb, 0xf5, + 0x1c, 0x38, 0xf7, 0xff, 0xff, 0x78, 0x08, 0x80, + 0xd3, 0x02, 0xa0, 0x0b, 0xf0, 0x10, 0xff, 0x46, + 0x22, 0x00, 0x21, 0x01, 0x68, 0x7b, 0x6a, 0x1b, + 0x1c, 0x38, 0xf0, 0x10, 0xfe, 0xcd, 0x1c, 0x38, + 0xf7, 0xff, 0xff, 0x69, 0x08, 0x80, 0xd3, 0x02, + 0xa0, 0x0b, 0xf0, 0x10, 0xff, 0x37, 0x20, 0x00, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x63, 0x69, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x20, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x20, 0x31, 0x0a, 0x00, 0x00, 0x00, + 0x63, 0x69, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x5f, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x20, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x20, 0x32, 0x0a, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x1c, 0x0a, 0x1d, 0xc1, 0x31, 0xff, + 0x31, 0x1a, 0xf7, 0xff, 0xff, 0x8f, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0x80, 0x1c, 0x07, 0xa0, 0x0d, + 0xf0, 0x10, 0xff, 0x04, 0x22, 0x08, 0x21, 0x01, + 0x68, 0x7b, 0x6a, 0x1b, 0x1c, 0x38, 0xf0, 0x10, + 0xfe, 0x8b, 0x21, 0x03, 0x1c, 0x38, 0xf7, 0xff, + 0xfe, 0xa9, 0x48, 0x0a, 0x68, 0x00, 0x30, 0x05, + 0x61, 0x38, 0x20, 0x00, 0x23, 0x03, 0x02, 0x1b, + 0x18, 0xf9, 0x62, 0x08, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x72, 0x65, 0x73, + 0x65, 0x74, 0x0a, 0x00, 0x2e, 0x08, 0x05, 0xc0, + 0xb5, 0x90, 0x22, 0x00, 0x21, 0x01, 0x68, 0x43, + 0x6a, 0x1b, 0x1c, 0x07, 0xf0, 0x10, 0xfe, 0x68, + 0x1c, 0x38, 0xf7, 0xff, 0xff, 0x04, 0x23, 0x40, + 0x40, 0x18, 0x4c, 0x14, 0xd1, 0x13, 0x68, 0x20, + 0x30, 0x05, 0x23, 0x03, 0x02, 0x1b, 0x61, 0x38, + 0x18, 0xf8, 0x6a, 0x01, 0x31, 0x01, 0x62, 0x01, + 0x29, 0x0a, 0xdd, 0x03, 0x21, 0x00, 0x1c, 0x38, + 0xf7, 0xff, 0xfe, 0x74, 0x20, 0x00, 0x43, 0xc0, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x22, 0x04, + 0x21, 0x01, 0x68, 0x7b, 0x6a, 0x1b, 0x1c, 0x38, + 0xf0, 0x10, 0xfe, 0x46, 0x21, 0x04, 0x1c, 0x38, + 0xf7, 0xff, 0xfe, 0x64, 0x68, 0x20, 0x30, 0x05, + 0x61, 0x38, 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xc0, + 0xb5, 0xf0, 0x26, 0xff, 0x36, 0x01, 0x61, 0xc6, + 0x1d, 0xc5, 0x35, 0x19, 0x1c, 0x07, 0xf7, 0xff, + 0xfe, 0xd6, 0x4c, 0x17, 0x28, 0x00, 0xd1, 0x0d, + 0xa0, 0x16, 0xf0, 0x10, 0xfe, 0x9b, 0x21, 0xfe, + 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0x47, 0x68, 0x20, + 0x61, 0x78, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x78, 0x28, 0x02, 0x00, + 0x78, 0x69, 0x43, 0x01, 0x61, 0xf9, 0xa0, 0x19, + 0xf0, 0x10, 0xfe, 0x88, 0x69, 0xf8, 0x42, 0xb0, + 0xdd, 0x00, 0x61, 0xfe, 0x22, 0x02, 0x21, 0x01, + 0x68, 0x7b, 0x6a, 0x1b, 0x1c, 0x38, 0xf0, 0x10, + 0xfe, 0x0b, 0x68, 0x20, 0x30, 0x05, 0x61, 0x38, + 0x21, 0x05, 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0x26, + 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x05, 0xc0, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x65, 0x6e, 0x64, 0x20, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x69, 0x7a, + 0x65, 0x0a, 0x00, 0x00, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, + 0x3d, 0x20, 0x25, 0x30, 0x34, 0x78, 0x0a, 0x00, + 0xb5, 0xb0, 0x1c, 0x07, 0xf7, 0xff, 0xfe, 0x6f, + 0x23, 0x40, 0x40, 0x18, 0x25, 0x00, 0x43, 0xed, + 0x4c, 0x3d, 0x28, 0x00, 0xd1, 0x0c, 0xa0, 0x3d, + 0xf0, 0x10, 0xfe, 0x38, 0x21, 0xff, 0x1c, 0x38, + 0xf7, 0xff, 0xfd, 0xe4, 0x68, 0x20, 0x61, 0x78, + 0x1c, 0x28, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x22, 0x03, 0x21, 0x01, 0x68, 0x7b, 0x6a, 0x1b, + 0x1c, 0x38, 0xf0, 0x10, 0xfd, 0xb5, 0x1c, 0x38, + 0xf7, 0xff, 0xfe, 0x51, 0x09, 0xc0, 0xd2, 0x0c, + 0xa0, 0x3d, 0xf0, 0x10, 0xfe, 0x1f, 0x21, 0xff, + 0x1c, 0x38, 0xf7, 0xff, 0xfd, 0xcb, 0x68, 0x20, + 0x61, 0x78, 0x1c, 0x28, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x22, 0x02, 0x21, 0x02, 0x68, 0x7b, + 0x6a, 0x1b, 0x1c, 0x38, 0xf0, 0x10, 0xfd, 0x9c, + 0x22, 0x00, 0x21, 0x03, 0x68, 0x7b, 0x6a, 0x1b, + 0x1c, 0x38, 0xf0, 0x10, 0xfd, 0x95, 0x69, 0xf8, + 0x12, 0x02, 0x21, 0x00, 0x68, 0x7b, 0x6a, 0x1b, + 0x1c, 0x38, 0xf0, 0x10, 0xfd, 0x8d, 0x69, 0xf8, + 0x06, 0x02, 0x0e, 0x12, 0x21, 0x00, 0x68, 0x7b, + 0x6a, 0x1b, 0x1c, 0x38, 0xf0, 0x10, 0xfd, 0x84, + 0xa0, 0x34, 0xf0, 0x10, 0xfd, 0xf3, 0x1c, 0x38, + 0xf7, 0xff, 0xfe, 0x1d, 0x08, 0x80, 0xd3, 0x02, + 0xa0, 0x3e, 0xf0, 0x10, 0xfd, 0xeb, 0x22, 0x00, + 0x21, 0x01, 0x68, 0x7b, 0x6a, 0x1b, 0x1c, 0x38, + 0xf0, 0x10, 0xfd, 0x72, 0x68, 0xf8, 0x69, 0xf9, + 0xf0, 0x00, 0xfa, 0x3e, 0x48, 0x42, 0x68, 0xf9, + 0x4b, 0x42, 0x18, 0xc9, 0x61, 0x48, 0x68, 0xf8, + 0x18, 0xc0, 0x61, 0x07, 0x48, 0x40, 0x68, 0xf9, + 0x18, 0xc9, 0x61, 0x88, 0x68, 0xf8, 0x18, 0xc0, + 0x60, 0xc7, 0x69, 0xf9, 0xa0, 0x3d, 0xf0, 0x10, + 0xfd, 0xcd, 0x68, 0x20, 0x61, 0x38, 0x21, 0x06, + 0x1c, 0x38, 0xf7, 0xff, 0xfd, 0x77, 0x20, 0x00, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x05, 0xc0, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x74, 0x6f, + 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, + 0x73, 0x69, 0x7a, 0x65, 0x0a, 0x00, 0x00, 0x00, + 0x63, 0x69, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x3a, + 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x79, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x20, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x20, 0x73, 0x69, 0x7a, 0x65, + 0x20, 0x32, 0x0a, 0x00, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x73, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x65, 0x67, + 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, + 0x69, 0x7a, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, + 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x0a, 0x00, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x5f, 0x6e, 0x65, 0x67, 0x6f, + 0x74, 0x69, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x69, + 0x7a, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x0a, 0x00, + 0x2e, 0x00, 0x74, 0xf1, 0x00, 0x01, 0x3b, 0x80, + 0x2e, 0x00, 0x75, 0x03, 0x63, 0x69, 0x5f, 0x73, + 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x20, 0x73, 0x69, 0x7a, 0x65, + 0x20, 0x3d, 0x20, 0x25, 0x30, 0x34, 0x78, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0x80, 0x1c, 0x07, + 0x20, 0xff, 0x30, 0x01, 0x61, 0xf8, 0x21, 0x00, + 0x1c, 0x38, 0xf7, 0xff, 0xfc, 0xeb, 0x48, 0x05, + 0x68, 0x00, 0x61, 0x38, 0x48, 0x04, 0xf7, 0xfe, + 0xf8, 0x2d, 0x60, 0xf8, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xc0, + 0x00, 0x01, 0x3b, 0x9c, 0xb5, 0x00, 0x68, 0xc0, + 0xf7, 0xfe, 0xf8, 0x42, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0x80, 0x1c, 0x1f, 0x06, 0x0b, 0x0e, 0x1b, + 0x69, 0x81, 0x29, 0x06, 0xd0, 0x04, 0x20, 0x00, + 0x43, 0xc0, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x78, 0x11, 0x29, 0xff, 0xd1, 0x05, 0xf7, 0xff, + 0xfc, 0xe5, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0xc0, 0x1c, 0x11, 0x1c, 0x3a, + 0xf0, 0x00, 0xfb, 0x9a, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x69, 0x00, 0x49, 0x04, 0x68, 0x09, + 0x1a, 0x40, 0x4b, 0x04, 0x42, 0x98, 0xd2, 0x01, + 0x20, 0x00, 0x47, 0x70, 0x20, 0x01, 0x47, 0x70, + 0x2e, 0x08, 0x05, 0xc0, 0x80, 0x00, 0x00, 0x00, + 0xb5, 0x90, 0x68, 0x44, 0x6a, 0x61, 0x1c, 0x07, + 0x29, 0x00, 0xd0, 0x03, 0x1c, 0x38, 0xf0, 0x10, + 0xfc, 0x7b, 0xe0, 0x00, 0x20, 0x01, 0x08, 0x40, + 0xd2, 0x06, 0x21, 0x00, 0x1c, 0x38, 0xf7, 0xff, + 0xfc, 0x99, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x69, 0xb8, 0x28, 0x00, 0xd1, 0xf9, 0x6a, 0xa2, + 0x2a, 0x00, 0xd0, 0x03, 0x21, 0x02, 0x1c, 0x38, + 0xf0, 0x10, 0xfc, 0x68, 0x21, 0x01, 0x1c, 0x38, + 0xf7, 0xff, 0xfc, 0x88, 0x20, 0x00, 0x23, 0x03, + 0x02, 0x1b, 0x18, 0xf9, 0x62, 0x08, 0x48, 0x03, + 0x68, 0x00, 0x30, 0x19, 0x61, 0x38, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x05, 0xc0, + 0xb5, 0x90, 0x1c, 0x07, 0xf7, 0xff, 0xff, 0xcc, + 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xba, 0x28, 0x00, + 0xd1, 0x03, 0x43, 0xc0, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x69, 0xb8, 0x4c, 0x23, 0x28, 0x05, + 0xd0, 0x30, 0xdc, 0x0b, 0x28, 0x01, 0xd0, 0x1e, + 0x28, 0x02, 0xd0, 0x23, 0x28, 0x03, 0xd0, 0x25, + 0x28, 0x04, 0xd1, 0x14, 0x1c, 0x38, 0xf7, 0xff, + 0xfe, 0x03, 0xe0, 0x10, 0x28, 0x06, 0xd0, 0x25, + 0x28, 0xfe, 0xd0, 0x01, 0x28, 0xff, 0xd1, 0x0a, + 0x69, 0x78, 0x68, 0x21, 0x1a, 0x08, 0x23, 0xff, + 0x33, 0xf5, 0x42, 0x98, 0xd9, 0x03, 0x21, 0x00, + 0x1c, 0x38, 0xf7, 0xff, 0xfc, 0x4b, 0x20, 0x00, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x68, 0x20, + 0x30, 0x05, 0x61, 0x38, 0x1c, 0x38, 0xf7, 0xff, + 0xfc, 0x6d, 0xe7, 0xf4, 0x1c, 0x38, 0xf7, 0xff, + 0xfd, 0x84, 0xe7, 0xf0, 0x1c, 0x38, 0xf7, 0xff, + 0xfd, 0xa7, 0xe7, 0xec, 0x1c, 0x38, 0xf7, 0xff, + 0xfe, 0x3f, 0xe7, 0xe8, 0x68, 0xf8, 0xf0, 0x00, + 0xfc, 0x71, 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x38, + 0xf7, 0xff, 0xfc, 0xb1, 0x68, 0xf8, 0xf0, 0x00, + 0xfb, 0xf7, 0x68, 0x20, 0x30, 0x02, 0x61, 0x38, + 0xe7, 0xd9, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xc0, + 0xb5, 0xb0, 0x06, 0x15, 0x0e, 0x2d, 0x9f, 0x04, + 0x68, 0x42, 0x1c, 0x1c, 0x42, 0x8a, 0xdc, 0x04, + 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0xc0, 0x23, 0xc9, 0x00, 0x9b, + 0x43, 0x59, 0x18, 0x40, 0x1c, 0x29, 0x1c, 0x22, + 0x1c, 0x3b, 0xf7, 0xff, 0xff, 0x35, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, 0x24, 0x00, + 0x1c, 0x07, 0x68, 0x40, 0x28, 0x00, 0xdd, 0x0a, + 0x21, 0xc9, 0x00, 0x89, 0x43, 0x61, 0x68, 0xf8, + 0x18, 0x40, 0xf7, 0xff, 0xff, 0x81, 0x68, 0x78, + 0x34, 0x01, 0x42, 0xa0, 0xdc, 0xf4, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, 0x24, 0x00, + 0x1c, 0x07, 0x68, 0x40, 0x28, 0x00, 0xdd, 0x0f, + 0x21, 0xc9, 0x00, 0x89, 0x43, 0x61, 0x68, 0xf8, + 0x18, 0x40, 0x60, 0x84, 0x68, 0x3a, 0xc0, 0x84, + 0x68, 0xf8, 0x18, 0x40, 0xf7, 0xff, 0xfe, 0xee, + 0x68, 0x78, 0x34, 0x01, 0x42, 0xa0, 0xdc, 0xef, + 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xf0, 0x25, 0x00, 0x1c, 0x07, 0x68, 0x40, + 0x1c, 0x0c, 0x28, 0x00, 0xdd, 0x0f, 0x26, 0x01, + 0x1c, 0x30, 0x40, 0xa8, 0x40, 0x20, 0xd0, 0x06, + 0x21, 0xc9, 0x00, 0x89, 0x43, 0x69, 0x68, 0xf8, + 0x18, 0x40, 0xf7, 0xff, 0xfb, 0xe7, 0x68, 0x78, + 0x35, 0x01, 0x42, 0xa8, 0xdc, 0xf0, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xb4, 0xf0, 0x21, 0x00, + 0x78, 0x07, 0x22, 0x80, 0x43, 0xd2, 0x40, 0x3a, + 0x1c, 0x04, 0x0a, 0x3b, 0xd3, 0x0f, 0x27, 0x00, + 0x30, 0x01, 0x2a, 0x00, 0xdd, 0x0d, 0x1b, 0xd3, + 0x00, 0xdb, 0x78, 0x06, 0x1f, 0xdd, 0x3d, 0x01, + 0x40, 0xae, 0x43, 0x31, 0x30, 0x01, 0x37, 0x01, + 0x42, 0x97, 0xdb, 0xf4, 0xe0, 0x01, 0x30, 0x01, + 0x1c, 0x11, 0x1b, 0x00, 0x18, 0x40, 0xbc, 0xf0, + 0x47, 0x70, 0xb4, 0xb0, 0x22, 0x01, 0x28, 0x80, + 0xda, 0x02, 0x70, 0x08, 0xbc, 0xb0, 0x47, 0x70, + 0x27, 0x03, 0x25, 0xff, 0x00, 0xfc, 0x1c, 0x2b, + 0x40, 0xa3, 0x40, 0x03, 0xd0, 0x03, 0x1c, 0x03, + 0x41, 0x23, 0x54, 0x8b, 0x32, 0x01, 0x37, 0x01, + 0xd5, 0xf4, 0x20, 0x80, 0x43, 0x10, 0x70, 0x08, + 0xbc, 0xb0, 0x47, 0x70, 0xb5, 0xb0, 0x22, 0x00, + 0x78, 0x41, 0x1c, 0x47, 0x20, 0x80, 0x43, 0xc0, + 0x40, 0x08, 0x0a, 0x09, 0xd3, 0x0f, 0x21, 0x00, + 0x37, 0x01, 0x28, 0x00, 0xdd, 0x0d, 0x1a, 0x43, + 0x00, 0xdb, 0x78, 0x3d, 0x1f, 0xdc, 0x3c, 0x01, + 0x40, 0xa5, 0x43, 0x2a, 0x31, 0x01, 0x37, 0x01, + 0x42, 0x81, 0xdb, 0xf4, 0xe0, 0x01, 0x1c, 0x02, + 0x37, 0x01, 0x78, 0x3b, 0xa1, 0x03, 0xa0, 0x04, + 0xf0, 0x10, 0xfb, 0xb8, 0x78, 0x38, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x63, 0x69, 0x3a, 0x00, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x3a, 0x20, 0x25, 0x73, 0x2c, 0x20, 0x6c, 0x65, + 0x6e, 0x3d, 0x25, 0x64, 0x2c, 0x20, 0x69, 0x64, + 0x3d, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x00, 0x00, + 0xb5, 0xb0, 0x25, 0x00, 0x60, 0x01, 0x1c, 0x07, + 0x4b, 0x2f, 0x18, 0xc4, 0x72, 0x25, 0x72, 0x65, + 0x72, 0xa5, 0x72, 0xe5, 0x1c, 0x08, 0x21, 0x01, + 0x04, 0x09, 0xf0, 0x10, 0xfb, 0x2b, 0x21, 0x01, + 0x02, 0x49, 0x42, 0x88, 0xdd, 0x01, 0x60, 0x79, + 0xe0, 0x00, 0x60, 0x78, 0x22, 0x01, 0x04, 0x12, + 0x21, 0x00, 0x1d, 0xf8, 0x30, 0x01, 0xf0, 0x10, + 0xfb, 0x6b, 0x20, 0x00, 0x43, 0xc1, 0x00, 0x82, + 0x19, 0xd2, 0x4b, 0x22, 0x18, 0xd3, 0x60, 0x9d, + 0x4b, 0x21, 0x18, 0xd3, 0x60, 0x9d, 0x23, 0x9d, + 0x02, 0x5b, 0x18, 0xd3, 0x60, 0x9d, 0x4b, 0x1f, + 0x18, 0xd2, 0x60, 0x95, 0x00, 0x42, 0x19, 0xd2, + 0x4b, 0x1d, 0x18, 0xd3, 0x81, 0x19, 0x4b, 0x1d, + 0x18, 0xd2, 0x81, 0x11, 0x30, 0x01, 0x28, 0x20, + 0xdb, 0xe5, 0x20, 0x00, 0x68, 0x79, 0x29, 0x00, + 0xdd, 0x11, 0x00, 0x41, 0x18, 0x09, 0x00, 0xc9, + 0x19, 0xc9, 0x23, 0x01, 0x04, 0x1b, 0x18, 0xc9, + 0x72, 0x0d, 0x60, 0xcd, 0x61, 0x0d, 0x61, 0x4d, + 0x76, 0x0d, 0x76, 0x4d, 0x61, 0xc8, 0x68, 0x79, + 0x30, 0x01, 0x42, 0x81, 0xdc, 0xed, 0x4b, 0x10, + 0x18, 0xf8, 0x22, 0x01, 0x02, 0xd2, 0x21, 0x00, + 0xf0, 0x10, 0xfb, 0x32, 0x4b, 0x0d, 0x18, 0xf8, + 0x22, 0xff, 0x21, 0x00, 0x32, 0x01, 0xf0, 0x10, + 0xfb, 0x2b, 0x60, 0xe5, 0x61, 0x25, 0x61, 0x65, + 0x61, 0xa5, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0x01, 0x3b, 0x80, 0x00, 0x01, 0x39, 0x00, + 0x00, 0x01, 0x39, 0x80, 0x00, 0x01, 0x3a, 0x80, + 0x00, 0x01, 0x3b, 0x00, 0x00, 0x01, 0x3b, 0x40, + 0x00, 0x01, 0x30, 0x08, 0x00, 0x01, 0x38, 0x08, + 0x21, 0x00, 0x70, 0x01, 0x60, 0x41, 0x60, 0x81, + 0x60, 0xc1, 0x74, 0x01, 0x74, 0x41, 0x47, 0x70, + 0xb4, 0x80, 0x21, 0x00, 0x68, 0x42, 0x2a, 0x00, + 0xdd, 0x18, 0x00, 0x4b, 0x18, 0x5b, 0x00, 0xdb, + 0x18, 0x1f, 0x23, 0x01, 0x04, 0x1b, 0x18, 0xfb, + 0x7a, 0x1b, 0x2b, 0x00, 0xd1, 0x0b, 0x22, 0x01, + 0x00, 0x4b, 0x18, 0x59, 0x00, 0xc9, 0x18, 0x08, + 0x04, 0x13, 0x18, 0xc1, 0x72, 0x0a, 0x4b, 0x05, + 0x18, 0xc0, 0xbc, 0x80, 0x47, 0x70, 0x31, 0x01, + 0x42, 0x8a, 0xdc, 0xe6, 0x20, 0x00, 0xbc, 0x80, + 0x47, 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, + 0xb5, 0xb0, 0x06, 0x1d, 0x0e, 0x2d, 0x1c, 0x14, + 0x68, 0x0a, 0x21, 0x00, 0x1c, 0x07, 0xf0, 0x10, + 0xfa, 0xdf, 0x70, 0x3d, 0x2c, 0x00, 0xd0, 0x04, + 0x20, 0x80, 0x70, 0x78, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x00, 0x70, 0x78, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0x99, 0x01, + 0x1c, 0x1c, 0x1c, 0x15, 0x1c, 0x07, 0x29, 0x00, + 0xd1, 0x04, 0x20, 0x00, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x1c, 0x28, 0xf7, 0xff, + 0xff, 0xb7, 0x1c, 0x06, 0xd1, 0x01, 0x20, 0x00, + 0xe7, 0xf4, 0x69, 0x70, 0x68, 0x29, 0x43, 0x48, + 0x19, 0x01, 0x23, 0x01, 0x04, 0x1b, 0x42, 0x99, + 0xdd, 0x01, 0x20, 0x00, 0xe7, 0xea, 0x18, 0x2d, + 0x99, 0x01, 0x1d, 0xe8, 0x30, 0x01, 0x1c, 0x22, + 0xf0, 0x10, 0xfa, 0xf8, 0x74, 0x34, 0x7a, 0x68, + 0x74, 0x70, 0x2f, 0x00, 0xd0, 0x04, 0x68, 0xb8, + 0x60, 0xb0, 0x60, 0xf7, 0x60, 0xbe, 0xe0, 0x02, + 0x20, 0x00, 0x60, 0xb0, 0x60, 0xf0, 0x1c, 0x30, + 0xe7, 0xd4, 0xb5, 0xff, 0x9c, 0x09, 0x06, 0x25, + 0x0e, 0x2d, 0x24, 0x00, 0x43, 0xe4, 0x1c, 0x07, + 0x98, 0x02, 0x1c, 0x21, 0x4b, 0x4c, 0x18, 0xfa, + 0x28, 0x00, 0xd0, 0x03, 0x28, 0x01, 0xd1, 0x6a, + 0x20, 0x00, 0xe0, 0x2d, 0x20, 0x00, 0x00, 0x43, + 0x19, 0xde, 0x4b, 0x48, 0x18, 0xf6, 0x23, 0x08, + 0x5e, 0xf3, 0x42, 0xab, 0xd1, 0x00, 0x1c, 0x04, + 0x29, 0x00, 0xda, 0x04, 0x1c, 0x1e, 0x23, 0x01, + 0x42, 0xde, 0xd1, 0x00, 0x1c, 0x01, 0x30, 0x01, + 0x28, 0x20, 0xdb, 0xec, 0x20, 0x00, 0x43, 0xc0, + 0x42, 0x84, 0xd1, 0x05, 0x42, 0x81, 0xd0, 0x03, + 0x7a, 0x13, 0x33, 0x01, 0x72, 0x13, 0x1c, 0x0c, + 0x2c, 0x00, 0xdb, 0x44, 0x00, 0x60, 0x19, 0xc0, + 0x4b, 0x38, 0x18, 0xc0, 0x81, 0x05, 0x00, 0xa0, + 0x19, 0xc1, 0x4b, 0x37, 0x18, 0xc8, 0x68, 0x80, + 0x4b, 0x36, 0x18, 0xc9, 0x68, 0x8d, 0xe0, 0x2c, + 0x00, 0x43, 0x19, 0xde, 0x4b, 0x34, 0x18, 0xf6, + 0x23, 0x08, 0x5e, 0xf3, 0x42, 0xab, 0xd1, 0x00, + 0x1c, 0x04, 0x29, 0x00, 0xda, 0x04, 0x1c, 0x1e, + 0x23, 0x01, 0x42, 0xde, 0xd1, 0x00, 0x1c, 0x01, + 0x30, 0x01, 0x28, 0x20, 0xdb, 0xec, 0x20, 0x00, + 0x43, 0xc0, 0x42, 0x84, 0xd1, 0x05, 0x42, 0x81, + 0xd0, 0x03, 0x7a, 0x93, 0x33, 0x01, 0x72, 0x93, + 0x1c, 0x0c, 0x2c, 0x00, 0xdb, 0x17, 0x00, 0x60, + 0x19, 0xc0, 0x4b, 0x25, 0x18, 0xc0, 0x81, 0x05, + 0x00, 0xa0, 0x19, 0xc1, 0x23, 0x9d, 0x02, 0x5b, + 0x18, 0xc8, 0x68, 0x80, 0x4b, 0x21, 0x18, 0xc9, + 0x68, 0x8d, 0x28, 0x00, 0xd0, 0x0f, 0x99, 0x01, + 0x9b, 0x03, 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0x5a, + 0x28, 0x00, 0xd1, 0x12, 0x43, 0xc0, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xe7, 0xff, + 0x20, 0x00, 0x43, 0xc0, 0xe7, 0xf7, 0x99, 0x01, + 0x9b, 0x03, 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0x4a, + 0x1c, 0x05, 0xd1, 0x01, 0x43, 0xe8, 0xe7, 0xee, + 0x1c, 0x28, 0x60, 0x44, 0x9a, 0x02, 0x2a, 0x00, + 0xd0, 0x0c, 0x2a, 0x01, 0xd1, 0x08, 0x00, 0xa1, + 0x19, 0xc9, 0x23, 0x9d, 0x02, 0x5b, 0x18, 0xca, + 0x60, 0x90, 0x4b, 0x0c, 0x18, 0xc8, 0x60, 0x85, + 0x1c, 0x20, 0xe7, 0xdc, 0x00, 0xa1, 0x19, 0xc9, + 0x4b, 0x05, 0x18, 0xca, 0x60, 0x90, 0x4b, 0x05, + 0x18, 0xc8, 0x60, 0x85, 0xe7, 0xf4, 0x00, 0x00, + 0x00, 0x01, 0x3b, 0x80, 0x00, 0x01, 0x3b, 0x00, + 0x00, 0x01, 0x39, 0x00, 0x00, 0x01, 0x39, 0x80, + 0x00, 0x01, 0x3b, 0x40, 0x00, 0x01, 0x3a, 0x80, + 0xb5, 0x80, 0x27, 0x00, 0x28, 0x00, 0xd1, 0x03, + 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x22, 0x00, 0x68, 0x81, 0x29, 0x00, 0xd0, 0x0b, + 0x68, 0xc3, 0x2b, 0x00, 0xd0, 0x05, 0x60, 0x99, + 0x68, 0xc1, 0x68, 0x82, 0x60, 0xd1, 0x68, 0xc7, + 0xe0, 0x07, 0x60, 0xca, 0x68, 0x87, 0xe0, 0x04, + 0x68, 0xc1, 0x29, 0x00, 0xd0, 0x01, 0x60, 0x8a, + 0x68, 0xc7, 0xf7, 0xff, 0xfe, 0xbd, 0x1c, 0x38, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf7, + 0x1c, 0x07, 0x98, 0x01, 0x68, 0x46, 0x99, 0x02, + 0x29, 0x00, 0xd0, 0x0b, 0x29, 0x01, 0xd1, 0x12, + 0x00, 0xb0, 0x19, 0xc0, 0x23, 0x9d, 0x02, 0x5b, + 0x18, 0xc1, 0x68, 0x8d, 0x4b, 0x2c, 0x18, 0xc0, + 0x68, 0x84, 0xe0, 0x0a, 0x00, 0xb0, 0x19, 0xc0, + 0x4b, 0x2a, 0x18, 0xc1, 0x68, 0x8d, 0x4b, 0x2a, + 0x18, 0xc0, 0x68, 0x84, 0xe0, 0x01, 0x25, 0x00, + 0x24, 0x00, 0x99, 0x01, 0x42, 0xa9, 0xd1, 0x08, + 0x98, 0x01, 0xf7, 0xff, 0xff, 0xb9, 0x99, 0x01, + 0x1c, 0x05, 0x42, 0xa1, 0xd1, 0x08, 0x24, 0x00, + 0xe0, 0x06, 0x99, 0x01, 0x42, 0xa1, 0xd1, 0x03, + 0x98, 0x01, 0xf7, 0xff, 0xff, 0xad, 0x1c, 0x04, + 0x22, 0x00, 0x43, 0xd2, 0x99, 0x02, 0x4b, 0x1d, + 0x18, 0xf8, 0x29, 0x00, 0xd0, 0x1a, 0x29, 0x01, + 0xd1, 0x14, 0x00, 0xb1, 0x19, 0xc9, 0x23, 0x9d, + 0x02, 0x5b, 0x18, 0xcb, 0x60, 0x9d, 0x4b, 0x14, + 0x18, 0xc9, 0x60, 0x8c, 0x2d, 0x00, 0xd1, 0x09, + 0x2c, 0x00, 0xd1, 0x07, 0x7a, 0x81, 0x39, 0x01, + 0x72, 0x81, 0x00, 0x70, 0x19, 0xc0, 0x4b, 0x12, + 0x18, 0xc0, 0x81, 0x02, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0xb1, 0x19, 0xc9, + 0x4b, 0x0a, 0x18, 0xcb, 0x60, 0x9d, 0x4b, 0x0a, + 0x18, 0xc9, 0x60, 0x8c, 0x2d, 0x00, 0xd1, 0xf1, + 0x2c, 0x00, 0xd1, 0xef, 0x7a, 0x01, 0x39, 0x01, + 0x72, 0x01, 0x00, 0x70, 0x19, 0xc0, 0x4b, 0x07, + 0x18, 0xc0, 0x81, 0x02, 0xe7, 0xe6, 0x00, 0x00, + 0x00, 0x01, 0x3a, 0x80, 0x00, 0x01, 0x39, 0x00, + 0x00, 0x01, 0x39, 0x80, 0x00, 0x01, 0x3b, 0x80, + 0x00, 0x01, 0x3b, 0x40, 0x00, 0x01, 0x3b, 0x00, + 0xb5, 0xf0, 0x1c, 0x14, 0x06, 0x1a, 0x0e, 0x12, + 0xb0, 0x81, 0x92, 0x00, 0x1c, 0x07, 0x1c, 0x08, + 0x1c, 0x0d, 0xb0, 0x81, 0xf7, 0xff, 0xfd, 0x8e, + 0x90, 0x00, 0x1c, 0x22, 0x1c, 0x03, 0xa1, 0x3e, + 0x48, 0x3e, 0xf0, 0x10, 0xf9, 0x5f, 0x68, 0x38, + 0x38, 0x02, 0x4b, 0x3d, 0x18, 0xfe, 0x42, 0xa0, + 0xda, 0x3a, 0x68, 0x38, 0x38, 0x02, 0x1a, 0x24, + 0x22, 0x01, 0x9b, 0x00, 0x1c, 0x30, 0x1c, 0x39, + 0xf7, 0xff, 0xfe, 0x4e, 0x9a, 0x01, 0xb4, 0x04, + 0x22, 0x00, 0x68, 0x3b, 0x1c, 0x38, 0x1c, 0x31, + 0xf7, 0xff, 0xfe, 0x8f, 0xb0, 0x01, 0x28, 0x00, + 0xda, 0x05, 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x80, + 0x19, 0xc0, 0x4b, 0x2e, 0x18, 0xc0, 0x68, 0x80, + 0x69, 0x40, 0x68, 0x39, 0x43, 0x48, 0x30, 0x02, + 0x18, 0x42, 0x23, 0x01, 0x04, 0x1b, 0x3a, 0x02, + 0x42, 0x9a, 0xdd, 0x05, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x18, 0x38, 0x1e, 0x8a, 0x30, 0x08, 0x1c, 0x29, + 0xf0, 0x10, 0xf9, 0x54, 0x68, 0x38, 0x18, 0x29, + 0x38, 0x02, 0x1e, 0x8d, 0x42, 0xa0, 0xdb, 0xc4, + 0x2c, 0x00, 0xd0, 0x30, 0x22, 0x00, 0x9b, 0x00, + 0x1c, 0x30, 0x1c, 0x39, 0xf7, 0xff, 0xfe, 0x14, + 0x9a, 0x01, 0xb4, 0x04, 0x22, 0x00, 0x1c, 0x38, + 0x1c, 0x31, 0x1c, 0xa3, 0xf7, 0xff, 0xfe, 0x55, + 0xb0, 0x01, 0x28, 0x00, 0xda, 0x05, 0x20, 0x00, + 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x80, 0x19, 0xc0, 0x4b, 0x11, + 0x18, 0xc0, 0x68, 0x80, 0x69, 0x40, 0x68, 0x39, + 0x43, 0x48, 0x30, 0x02, 0x19, 0x01, 0x23, 0x01, + 0x04, 0x1b, 0x42, 0x99, 0xdd, 0x05, 0x20, 0x00, + 0x43, 0xc0, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x18, 0x38, 0x30, 0x08, 0x1c, 0x29, + 0x1c, 0x22, 0xf0, 0x10, 0xf9, 0x1b, 0x20, 0x00, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x63, 0x69, 0x3a, 0x00, 0x2e, 0x00, 0x7e, 0x5c, + 0x00, 0x01, 0x38, 0x08, 0x00, 0x01, 0x39, 0x00, + 0xb5, 0xf3, 0xb0, 0x83, 0x1c, 0x07, 0x99, 0x04, + 0x00, 0x88, 0x19, 0xc0, 0x4b, 0x27, 0x18, 0xc0, + 0x90, 0x02, 0x68, 0x84, 0x4b, 0x26, 0x18, 0xf8, + 0x90, 0x01, 0x2c, 0x00, 0xd0, 0x37, 0x25, 0x00, + 0x7c, 0x26, 0x69, 0x60, 0x68, 0x39, 0x43, 0x48, + 0x7c, 0x61, 0x23, 0x80, 0x40, 0x19, 0x91, 0x00, + 0x30, 0x02, 0x19, 0x81, 0x02, 0x5b, 0x39, 0x02, + 0x42, 0x99, 0xdd, 0x04, 0xb0, 0x03, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x18, 0x38, + 0x1d, 0xc1, 0x31, 0x01, 0x19, 0x78, 0x1e, 0xb2, + 0x4b, 0x18, 0x18, 0xc0, 0xf0, 0x10, 0xf8, 0xe2, + 0x19, 0xa8, 0x1e, 0x85, 0x22, 0x01, 0x1c, 0x38, + 0x1c, 0x21, 0xf7, 0xff, 0xfe, 0xc4, 0x98, 0x02, + 0x68, 0x84, 0x2c, 0x00, 0xd0, 0x02, 0x99, 0x00, + 0x29, 0x00, 0xd1, 0xd5, 0x23, 0x01, 0x02, 0xdb, + 0x42, 0x9d, 0xda, 0x08, 0x98, 0x01, 0x68, 0xc2, + 0x4b, 0x0c, 0x18, 0xf8, 0x9b, 0x01, 0x69, 0x9b, + 0x1c, 0x29, 0xf0, 0x10, 0xf8, 0x25, 0x99, 0x04, + 0x1c, 0x48, 0xd5, 0x04, 0x42, 0x40, 0x06, 0xc0, + 0x0e, 0xc0, 0x42, 0x40, 0xe0, 0x01, 0x06, 0xc0, + 0x0e, 0xc0, 0x9b, 0x01, 0x72, 0x58, 0xb0, 0x03, + 0xe7, 0xc9, 0x00, 0x00, 0x00, 0x01, 0x3a, 0x80, + 0x00, 0x01, 0x3b, 0x80, 0x00, 0x01, 0x30, 0x08, + 0xb5, 0xf0, 0x21, 0x00, 0x4b, 0x24, 0x18, 0xc4, + 0x7a, 0xe7, 0x7a, 0xa2, 0x25, 0x00, 0x2a, 0x00, + 0xd1, 0x03, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x22, 0x00, 0xe0, 0x1e, 0x00, 0x7b, + 0x18, 0x1e, 0x4b, 0x1e, 0x18, 0xf6, 0x23, 0x08, + 0x5e, 0xf3, 0x2b, 0x00, 0xdb, 0x0c, 0x00, 0xbb, + 0x18, 0x1e, 0x23, 0x9d, 0x02, 0x5b, 0x18, 0xf3, + 0x68, 0x9b, 0x2b, 0x00, 0xd0, 0x04, 0x7c, 0x5e, + 0x0a, 0x33, 0xd2, 0x01, 0x21, 0x01, 0xe0, 0x09, + 0x37, 0x01, 0xd5, 0x04, 0x42, 0x7f, 0x06, 0xff, + 0x0e, 0xff, 0x42, 0x7f, 0xe0, 0x01, 0x06, 0xff, + 0x0e, 0xff, 0x32, 0x01, 0x2a, 0x20, 0xda, 0x01, + 0x29, 0x00, 0xd0, 0xdc, 0x29, 0x00, 0xd1, 0x04, + 0x72, 0xe5, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x72, 0xe7, 0x1c, 0x39, 0xf7, 0xff, + 0xff, 0x67, 0x1c, 0x78, 0xd5, 0x04, 0x42, 0x40, + 0x06, 0xc0, 0x0e, 0xc0, 0x42, 0x40, 0xe0, 0x01, + 0x06, 0xc0, 0x0e, 0xc0, 0x72, 0xe0, 0x20, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x00, 0x01, 0x3b, 0x80, 0x00, 0x01, 0x3b, 0x40, + 0xb5, 0xb0, 0x78, 0x0b, 0x1c, 0x14, 0x1c, 0x05, + 0x1c, 0x0f, 0xa1, 0x0c, 0x48, 0x0c, 0xf0, 0x10, + 0xf8, 0x29, 0x78, 0x3a, 0xb4, 0x04, 0x22, 0x01, + 0x1c, 0x28, 0x1c, 0x39, 0x1c, 0x23, 0xf7, 0xff, + 0xfd, 0x68, 0xb0, 0x01, 0x28, 0x00, 0xda, 0x04, + 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x00, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x63, 0x69, 0x3a, 0x00, + 0x2e, 0x00, 0x7e, 0x5c, 0xb5, 0xf0, 0x1c, 0x07, + 0x4b, 0x2a, 0x18, 0xc4, 0x7a, 0x65, 0x7a, 0x20, + 0x28, 0x00, 0xd1, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x00, 0x43, 0xc1, 0xe0, 0x09, + 0x35, 0x01, 0xd5, 0x04, 0x42, 0x6d, 0x06, 0xed, + 0x0e, 0xed, 0x42, 0x6d, 0xe0, 0x01, 0x06, 0xed, + 0x0e, 0xed, 0x30, 0x01, 0x28, 0x20, 0xda, 0x07, + 0x00, 0x6a, 0x19, 0xd2, 0x4b, 0x1e, 0x18, 0xd2, + 0x23, 0x08, 0x5e, 0xd2, 0x42, 0x8a, 0xd0, 0xeb, + 0x00, 0xa8, 0x19, 0xc0, 0x4b, 0x1b, 0x18, 0xc1, + 0x68, 0x89, 0x29, 0x00, 0xd0, 0x10, 0x72, 0x65, + 0x4b, 0x19, 0x18, 0xc6, 0x68, 0xb1, 0x69, 0x48, + 0x68, 0x3a, 0x43, 0x50, 0x7c, 0x09, 0x18, 0x0a, + 0x23, 0x01, 0x04, 0x1b, 0x42, 0x9a, 0xdd, 0x08, + 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0x72, 0x60, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x18, 0x38, 0x69, 0x22, 0x69, 0x63, + 0x30, 0x08, 0xf0, 0x0f, 0xff, 0x59, 0x22, 0x00, + 0x68, 0xb1, 0x1c, 0x38, 0xf7, 0xff, 0xfd, 0xdf, + 0x1c, 0x68, 0xd5, 0x04, 0x42, 0x40, 0x06, 0xc0, + 0x0e, 0xc0, 0x42, 0x40, 0xe0, 0x01, 0x06, 0xc0, + 0x0e, 0xc0, 0x72, 0x60, 0x20, 0x01, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x01, 0x3b, 0x80, + 0x00, 0x01, 0x3b, 0x00, 0x00, 0x01, 0x39, 0x00, + 0x00, 0x01, 0x39, 0x80, 0xb5, 0xff, 0xb0, 0x8b, + 0x9a, 0x0d, 0x1c, 0x1c, 0x1c, 0x0f, 0x2a, 0x02, + 0xda, 0x06, 0x20, 0x00, 0x43, 0xc0, 0xb0, 0x0b, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x78, 0x79, 0x91, 0x04, 0x31, 0x02, 0x78, 0x3b, + 0x1c, 0x0d, 0x42, 0x83, 0xd0, 0x07, 0x1c, 0x19, + 0x1c, 0x02, 0xa0, 0xf9, 0xf0, 0x0f, 0xff, 0x96, + 0x42, 0x68, 0xb0, 0x0b, 0xe7, 0xec, 0x9a, 0x0d, + 0x42, 0x91, 0xdd, 0x02, 0x42, 0x68, 0xb0, 0x0b, + 0xe7, 0xe6, 0x1d, 0x39, 0x91, 0x0a, 0x1d, 0xe2, + 0x32, 0x59, 0x92, 0x09, 0x1d, 0xe6, 0x36, 0x39, + 0x28, 0x1d, 0xd0, 0x63, 0xdc, 0x08, 0x28, 0x15, + 0xd0, 0x13, 0x28, 0x1a, 0xd0, 0x5f, 0x28, 0x1b, + 0xd0, 0x5e, 0x28, 0x1c, 0xd0, 0x5a, 0xe0, 0x7a, + 0x28, 0x20, 0xd0, 0x41, 0x1c, 0xbe, 0x28, 0xc0, + 0xd0, 0x74, 0x28, 0xc1, 0xd1, 0x73, 0x98, 0x14, + 0x28, 0x1b, 0xd0, 0x71, 0x42, 0x68, 0xb0, 0x0b, + 0xe7, 0xc6, 0x78, 0xb8, 0x28, 0x05, 0xd0, 0x02, + 0x42, 0x68, 0xb0, 0x0b, 0xe7, 0xc0, 0x78, 0xf8, + 0x28, 0x00, 0xd0, 0x02, 0x42, 0x68, 0xb0, 0x0b, + 0xe7, 0xba, 0x98, 0x04, 0x1e, 0x82, 0x2a, 0x4f, + 0xda, 0x04, 0x99, 0x0a, 0x1c, 0x20, 0xf0, 0x0f, + 0xff, 0x89, 0xe0, 0x04, 0x22, 0x4f, 0x99, 0x0a, + 0x1c, 0x20, 0xf0, 0x0f, 0xff, 0x83, 0x78, 0xfa, + 0x78, 0xb9, 0x9c, 0x0a, 0xa0, 0xe0, 0x1c, 0x23, + 0xf0, 0x0f, 0xff, 0x4c, 0x98, 0x04, 0x18, 0x38, + 0x1c, 0x47, 0x42, 0xa7, 0xd9, 0x0c, 0x1c, 0x20, + 0xf0, 0x0f, 0xff, 0xb8, 0x19, 0x00, 0x1c, 0x44, + 0x42, 0xa7, 0xd9, 0x03, 0x1c, 0x21, 0xa0, 0xdd, + 0xf0, 0x0f, 0xff, 0x3c, 0x42, 0xa7, 0xd8, 0xf2, + 0xa0, 0xd4, 0xf0, 0x0f, 0xff, 0x37, 0xe0, 0xe3, + 0x98, 0x04, 0x28, 0x04, 0xd0, 0x02, 0x42, 0x68, + 0xb0, 0x0b, 0xe7, 0x89, 0x78, 0xf8, 0x02, 0x00, + 0x78, 0xb9, 0x43, 0x08, 0x82, 0x30, 0x79, 0x78, + 0x02, 0x00, 0x79, 0x39, 0x43, 0x08, 0x82, 0x70, + 0x8a, 0x72, 0x8a, 0x31, 0xa0, 0xd1, 0xf0, 0x0f, + 0xff, 0x21, 0xe0, 0xcd, 0xe2, 0x17, 0xe0, 0x00, + 0xe0, 0x62, 0x78, 0xb8, 0x07, 0x80, 0x0f, 0x80, + 0x30, 0x01, 0x75, 0x30, 0x78, 0xb8, 0x08, 0x80, + 0x07, 0x00, 0x0f, 0x00, 0x30, 0x01, 0x75, 0x70, + 0x78, 0xf8, 0x9a, 0x09, 0x73, 0x10, 0x20, 0x00, + 0x65, 0xa0, 0x7d, 0x31, 0x29, 0x00, 0xdd, 0x0e, + 0x18, 0x39, 0x79, 0x09, 0x00, 0xc2, 0x40, 0x91, + 0x6d, 0xa2, 0x43, 0x11, 0x65, 0xa1, 0x7d, 0x31, + 0x30, 0x01, 0xe0, 0x02, 0xe1, 0x02, 0xe1, 0xf9, + 0xe1, 0x4b, 0x42, 0x81, 0xdc, 0xf0, 0x7d, 0x30, + 0x30, 0x04, 0x90, 0x03, 0x7d, 0x72, 0x18, 0x39, + 0x1d, 0xe0, 0x30, 0x55, 0xf0, 0x0f, 0xff, 0x22, + 0x7d, 0x70, 0x99, 0x03, 0x18, 0x40, 0x90, 0x03, + 0x6d, 0xa1, 0xa0, 0xbc, 0xf0, 0x0f, 0xfe, 0xea, + 0x7d, 0x70, 0x28, 0x00, 0xd0, 0x17, 0xa0, 0xbf, + 0xf0, 0x0f, 0xfe, 0xe4, 0x21, 0x00, 0x91, 0x02, + 0x7d, 0x70, 0x28, 0x00, 0xdd, 0x0c, 0x99, 0x02, + 0x18, 0x60, 0x30, 0x40, 0x7f, 0x01, 0xa0, 0xbc, + 0xf0, 0x0f, 0xfe, 0xd8, 0x99, 0x02, 0x31, 0x01, + 0x91, 0x02, 0x7d, 0x70, 0x42, 0x88, 0xdc, 0xf2, + 0xa0, 0xb9, 0xf0, 0x0f, 0xfe, 0xcf, 0x9a, 0x09, + 0x7b, 0x11, 0xa0, 0xb8, 0xf0, 0x0f, 0xfe, 0xca, + 0x22, 0x1a, 0xb4, 0x04, 0x98, 0x04, 0x9a, 0x0e, + 0x1a, 0x12, 0x18, 0x39, 0x20, 0xc0, 0x1c, 0x23, + 0xf7, 0xff, 0xff, 0x10, 0xb0, 0x01, 0x28, 0x00, + 0xda, 0x6a, 0x42, 0x68, 0xb0, 0x0b, 0xe7, 0x13, + 0x78, 0xb8, 0x06, 0x86, 0x0e, 0xb6, 0x1c, 0x31, + 0xa0, 0xb1, 0xf0, 0x0f, 0xfe, 0xb3, 0x9a, 0x09, + 0x7b, 0x10, 0x42, 0xb0, 0xd1, 0x01, 0x22, 0x01, + 0x67, 0x62, 0x78, 0xb8, 0x23, 0xc0, 0x40, 0x18, + 0x28, 0xc0, 0xd0, 0x02, 0x1c, 0x28, 0xb0, 0x0b, + 0xe6, 0xfe, 0x2e, 0x00, 0xd1, 0x02, 0x1c, 0x28, + 0xb0, 0x0b, 0xe6, 0xf9, 0x78, 0xf8, 0x28, 0x04, + 0xd0, 0x02, 0x1c, 0x28, 0xb0, 0x0b, 0xe6, 0xf3, + 0x79, 0x38, 0x90, 0x08, 0x23, 0x0b, 0x40, 0x18, + 0x28, 0x09, 0xda, 0x02, 0x1c, 0x28, 0xb0, 0x0b, + 0xe6, 0xea, 0x20, 0x00, 0x21, 0x00, 0x79, 0x7a, + 0x92, 0x07, 0x9a, 0x07, 0x40, 0xca, 0x08, 0x52, + 0xd3, 0x05, 0x30, 0x01, 0x18, 0x3a, 0x79, 0x52, + 0x0a, 0x12, 0xd3, 0x00, 0x30, 0x01, 0x31, 0x01, + 0x29, 0x08, 0xdb, 0xf2, 0x1c, 0x41, 0x98, 0x08, + 0x08, 0xc0, 0xd3, 0x22, 0x20, 0x00, 0x18, 0x7a, + 0x79, 0x52, 0x92, 0x06, 0x07, 0x92, 0xd0, 0x0a, + 0x19, 0xca, 0x79, 0x92, 0x0a, 0x12, 0xd3, 0x05, + 0x30, 0x01, 0x18, 0x0a, 0x19, 0xd2, 0x79, 0x92, + 0x0a, 0x12, 0xd2, 0xf9, 0x30, 0x01, 0x9a, 0x06, + 0x08, 0x92, 0x07, 0x52, 0xd0, 0x0b, 0x18, 0x0a, + 0x19, 0xd2, 0x79, 0x92, 0x0a, 0x12, 0xd3, 0x05, + 0x30, 0x01, 0x18, 0x0a, 0x19, 0xd2, 0x79, 0x92, + 0x0a, 0x12, 0xd2, 0xf9, 0x30, 0x01, 0x18, 0x08, + 0x1c, 0x41, 0x18, 0x78, 0x79, 0x40, 0x28, 0x22, + 0xd0, 0x03, 0x1c, 0x28, 0xb0, 0x0b, 0xe6, 0xab, + 0xe1, 0x49, 0x1c, 0x48, 0x99, 0x08, 0x09, 0x49, + 0xd3, 0x05, 0x18, 0x39, 0x79, 0x49, 0x09, 0x49, + 0xd3, 0x00, 0x30, 0x02, 0x30, 0x01, 0x99, 0x08, + 0x09, 0x49, 0x07, 0x49, 0xd0, 0x1b, 0x22, 0x00, + 0x92, 0x01, 0x92, 0x00, 0x18, 0x39, 0x79, 0x49, + 0x91, 0x05, 0x08, 0xc9, 0x07, 0x89, 0x0f, 0x89, + 0xd0, 0x03, 0x22, 0x01, 0x39, 0x01, 0x40, 0x8a, + 0x92, 0x01, 0x99, 0x05, 0x09, 0x49, 0x07, 0x89, + 0x0f, 0x89, 0xd0, 0x03, 0x22, 0x01, 0x39, 0x01, + 0x40, 0x8a, 0x92, 0x00, 0x99, 0x00, 0x9a, 0x01, + 0x18, 0x51, 0x18, 0x08, 0x30, 0x01, 0x1d, 0x41, + 0x91, 0x03, 0x22, 0x1b, 0xb4, 0x04, 0x99, 0x04, + 0x9a, 0x0e, 0x1a, 0x52, 0x18, 0x79, 0x20, 0xc0, + 0x1c, 0x23, 0xf7, 0xff, 0xfe, 0x6b, 0xb0, 0x01, + 0x28, 0x00, 0xda, 0x02, 0x42, 0x68, 0xb0, 0x0b, + 0xe6, 0x6e, 0x99, 0x03, 0x18, 0x08, 0x22, 0x1b, + 0xb4, 0x04, 0x9a, 0x0e, 0x1a, 0x12, 0x18, 0x39, + 0x20, 0xc1, 0x1c, 0x23, 0xf7, 0xff, 0xfe, 0x5a, + 0xb0, 0x01, 0x28, 0x00, 0xda, 0x02, 0x42, 0x68, + 0xb0, 0x0b, 0xe6, 0x5d, 0x9a, 0x09, 0x74, 0x96, + 0x9a, 0x09, 0x7c, 0x91, 0xa0, 0x5d, 0xf0, 0x0f, + 0xfd, 0xfd, 0xe0, 0xf4, 0x98, 0x14, 0x28, 0x1a, + 0xd1, 0x2f, 0x98, 0x04, 0x28, 0x0e, 0xd0, 0x02, + 0x42, 0x68, 0xb0, 0x0b, 0xe6, 0x4c, 0x78, 0xb8, + 0x28, 0x41, 0xd1, 0x02, 0x78, 0xf8, 0x28, 0x02, + 0xd0, 0x02, 0x42, 0x68, 0xb0, 0x0b, 0xe6, 0x43, + 0xa0, 0x5a, 0xf0, 0x0f, 0xfe, 0x5b, 0x99, 0x0a, + 0x1c, 0x02, 0xa0, 0x58, 0xf0, 0x0f, 0xfe, 0x78, + 0x28, 0x00, 0xd0, 0x02, 0x42, 0x68, 0xb0, 0x0b, + 0xe6, 0x36, 0xa0, 0x54, 0xf0, 0x0f, 0xfe, 0x4e, + 0x19, 0xc0, 0x1d, 0x01, 0x1d, 0xe0, 0x30, 0x66, + 0x22, 0x04, 0x1c, 0x07, 0xf0, 0x0f, 0xfe, 0x92, + 0x20, 0x00, 0x9a, 0x09, 0x74, 0x50, 0x1c, 0x3a, + 0xa1, 0x4c, 0xa0, 0x4f, 0xf0, 0x0f, 0xfd, 0xca, + 0xe0, 0xc1, 0x98, 0x14, 0x28, 0x1b, 0xd1, 0x11, + 0xa0, 0x4f, 0xf0, 0x0f, 0xfe, 0x37, 0x1c, 0x31, + 0x1c, 0x02, 0xa0, 0x4d, 0xf0, 0x0f, 0xfe, 0x54, + 0x28, 0x00, 0xd0, 0x02, 0x42, 0x68, 0xb0, 0x0b, + 0xe6, 0x12, 0xa1, 0x49, 0xa0, 0x4b, 0xf0, 0x0f, + 0xfd, 0xb5, 0xe0, 0xac, 0x42, 0x68, 0xb0, 0x0b, + 0xe6, 0x0a, 0xa0, 0x4c, 0xf0, 0x0f, 0xfe, 0x22, + 0x1c, 0x31, 0x1c, 0x02, 0xa0, 0x49, 0xf0, 0x0f, + 0xfe, 0x3f, 0x28, 0x00, 0xe0, 0x96, 0x00, 0x00, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x3a, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x30, 0x32, + 0x78, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x30, 0x78, + 0x25, 0x30, 0x32, 0x78, 0x0a, 0x00, 0x00, 0x00, + 0x76, 0x65, 0x72, 0x73, 0x5f, 0x31, 0x3a, 0x20, + 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2c, 0x20, 0x25, + 0x73, 0x00, 0x00, 0x00, 0x2c, 0x20, 0x25, 0x73, + 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x6e, 0x66, + 0x69, 0x64, 0x3a, 0x20, 0x30, 0x78, 0x25, 0x30, + 0x34, 0x78, 0x20, 0x20, 0x30, 0x78, 0x25, 0x30, + 0x34, 0x78, 0x0a, 0x00, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x3a, + 0x20, 0x30, 0x78, 0x25, 0x30, 0x34, 0x78, 0x20, + 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x73, 0x6b, + 0x3a, 0x20, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3a, 0x20, + 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x0a, 0x00, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x20, 0x6e, 0x62, 0x3a, + 0x20, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x63, 0x66, 0x67, 0x20, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x6f, + 0x72, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x20, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x20, + 0x0a, 0x00, 0x00, 0x00, 0x44, 0x56, 0x42, 0x5f, + 0x43, 0x49, 0x5f, 0x56, 0x00, 0x00, 0x00, 0x00, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, + 0x20, 0x25, 0x73, 0x25, 0x73, 0x0a, 0x00, 0x00, + 0x44, 0x56, 0x42, 0x5f, 0x48, 0x4f, 0x53, 0x54, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x74, 0x63, 0x65, + 0x5f, 0x65, 0x76, 0x3a, 0x20, 0x25, 0x73, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x42, 0x5f, + 0x43, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, + 0x45, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x42, 0x68, + 0xb0, 0x0b, 0xe5, 0x65, 0x46, 0x79, 0x39, 0x1c, + 0xa0, 0x04, 0xf0, 0x0f, 0xfd, 0x07, 0x1c, 0x28, + 0xb0, 0x0b, 0xe5, 0x5d, 0x1c, 0x28, 0xb0, 0x0b, + 0xe5, 0x5a, 0x00, 0x00, 0x73, 0x74, 0x63, 0x65, + 0x5f, 0x70, 0x64, 0x3a, 0x20, 0x25, 0x73, 0x0a, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0xf0, 0x26, 0x00, + 0x1c, 0x04, 0x20, 0x00, 0x67, 0x60, 0x1c, 0x0d, + 0x1c, 0x17, 0xe0, 0x00, 0x36, 0x01, 0x42, 0xbe, + 0xda, 0x02, 0x5d, 0xa8, 0x28, 0x1d, 0xd1, 0xf9, + 0x22, 0x00, 0xb4, 0x04, 0x1b, 0xba, 0x19, 0xa9, + 0x20, 0x1d, 0x1c, 0x23, 0xf7, 0xff, 0xfd, 0x32, + 0xb0, 0x01, 0x28, 0x00, 0xda, 0x04, 0x20, 0x00, + 0x43, 0xc0, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x18, 0x36, 0x22, 0x00, 0xb4, 0x04, 0x1b, 0xba, + 0x19, 0xa9, 0x20, 0x1c, 0x1c, 0x23, 0xf7, 0xff, + 0xfd, 0x21, 0xb0, 0x01, 0x28, 0x00, 0xda, 0x04, + 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x18, 0x36, 0x22, 0x00, 0xb4, 0x04, + 0x1b, 0xba, 0x19, 0xa9, 0x20, 0x15, 0x1c, 0x23, + 0xf7, 0xff, 0xfd, 0x10, 0xb0, 0x01, 0x28, 0x00, + 0xda, 0x04, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x18, 0x36, 0x22, 0x00, + 0xb4, 0x04, 0x1b, 0xba, 0x19, 0xa9, 0x20, 0x20, + 0x1c, 0x23, 0xf7, 0xff, 0xfc, 0xff, 0xb0, 0x01, + 0x28, 0x00, 0xda, 0x04, 0x20, 0x00, 0x43, 0xc0, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x18, 0x36, + 0x22, 0x00, 0xb4, 0x04, 0x1b, 0xba, 0x19, 0xa9, + 0x20, 0x1a, 0x1c, 0x23, 0xf7, 0xff, 0xfc, 0xee, + 0xb0, 0x01, 0x28, 0x00, 0xda, 0x04, 0x20, 0x00, + 0x43, 0xc0, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x18, 0x36, 0xe0, 0x10, 0x22, 0x00, 0xb4, 0x04, + 0x1b, 0xba, 0x19, 0xa9, 0x20, 0x1b, 0x1c, 0x23, + 0xf7, 0xff, 0xfc, 0xdc, 0xb0, 0x01, 0x28, 0x00, + 0xda, 0x04, 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x18, 0x36, 0x42, 0xbe, + 0xda, 0x02, 0x6f, 0x60, 0x28, 0x00, 0xd0, 0xe9, + 0x22, 0x00, 0xb4, 0x04, 0x1b, 0xba, 0x19, 0xa9, + 0x20, 0x14, 0x1c, 0x23, 0xf7, 0xff, 0xfc, 0xc6, + 0xb0, 0x01, 0x28, 0x00, 0xda, 0x04, 0x20, 0x00, + 0x43, 0xc0, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xf7, 0x06, 0x0e, 0x0e, 0x36, 0xb0, 0x83, + 0xf0, 0x0c, 0xfc, 0x4c, 0x1c, 0x05, 0xd0, 0x05, + 0x00, 0xa8, 0x30, 0x0c, 0xf7, 0xfc, 0xff, 0x56, + 0x1c, 0x04, 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x22, + 0x95, 0x01, 0x1d, 0xe0, 0x30, 0x05, 0x90, 0x02, + 0x46, 0x6a, 0xb4, 0x04, 0x25, 0x00, 0x98, 0x04, + 0x1c, 0x31, 0xaa, 0x02, 0x1c, 0x2b, 0x1c, 0x27, + 0xf0, 0x0c, 0xf9, 0xf2, 0xb0, 0x01, 0x98, 0x00, + 0x60, 0x38, 0x28, 0x00, 0xd0, 0x0b, 0x99, 0x05, + 0xf0, 0x0c, 0xfb, 0xc8, 0x28, 0x00, 0xd1, 0x02, + 0x60, 0x7d, 0x1c, 0x38, 0xe0, 0x07, 0x68, 0x38, + 0xa9, 0x01, 0xf0, 0x0c, 0xfa, 0x11, 0x1c, 0x20, + 0xf7, 0xfc, 0xff, 0x52, 0x1c, 0x28, 0xb0, 0x03, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xff, 0x9c, 0x0b, 0x9d, 0x09, 0x9e, 0x0a, + 0xb0, 0x8c, 0x4a, 0x78, 0x92, 0x0b, 0x49, 0x78, + 0x91, 0x0a, 0x2c, 0x00, 0xd1, 0x0b, 0x20, 0x00, + 0x00, 0x81, 0x9a, 0x0b, 0x58, 0x51, 0x29, 0x00, + 0xd1, 0x01, 0x1c, 0x04, 0xe0, 0x19, 0x30, 0x01, + 0x28, 0x08, 0xdb, 0xf5, 0xe0, 0x15, 0x2c, 0x08, + 0xd8, 0x07, 0x3c, 0x01, 0x00, 0xa0, 0x9a, 0x0b, + 0x58, 0x10, 0x28, 0x00, 0xd0, 0x0d, 0x20, 0x00, + 0xe0, 0xcf, 0x23, 0x20, 0x99, 0x0a, 0x5e, 0xcc, + 0x1c, 0x60, 0x84, 0x08, 0x99, 0x0a, 0x5e, 0xc8, + 0x28, 0x00, 0xd1, 0x02, 0x20, 0x64, 0x99, 0x0a, + 0x84, 0x08, 0x2e, 0x00, 0xd0, 0x03, 0x2e, 0x01, + 0xd1, 0x03, 0x22, 0x01, 0xe0, 0x02, 0x22, 0x00, + 0xe0, 0x00, 0x22, 0x03, 0x92, 0x01, 0x1c, 0x28, + 0xf0, 0x08, 0xfd, 0xfd, 0x90, 0x00, 0x00, 0x80, + 0x30, 0x80, 0xf7, 0xfc, 0xfe, 0xeb, 0x1c, 0x07, + 0xd0, 0xdd, 0x98, 0x00, 0x1d, 0xc2, 0x32, 0x79, + 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x0f, 0xfb, 0xd0, + 0x98, 0x00, 0x60, 0xf8, 0x1d, 0xf8, 0x30, 0x79, + 0x61, 0x38, 0x98, 0x0e, 0x86, 0x78, 0x98, 0x0f, + 0x86, 0xb8, 0x98, 0x0c, 0x90, 0x02, 0x99, 0x0d, + 0x91, 0x03, 0x9a, 0x0e, 0x18, 0x80, 0x38, 0x01, + 0x90, 0x04, 0x98, 0x0f, 0x18, 0x08, 0x38, 0x01, + 0x90, 0x05, 0xa8, 0x02, 0x1c, 0x29, 0xf0, 0x08, + 0xfd, 0xdd, 0x61, 0x78, 0x9a, 0x01, 0x2a, 0x00, + 0xd0, 0x0e, 0x2a, 0x01, 0xd1, 0x1e, 0x00, 0x80, + 0xf7, 0xfc, 0xfe, 0xc0, 0x61, 0xb8, 0x28, 0x00, + 0xd0, 0x04, 0x69, 0x79, 0x00, 0x8a, 0x21, 0x00, + 0xf0, 0x0f, 0xfb, 0xa6, 0x20, 0x01, 0xe0, 0x0b, + 0x00, 0x80, 0xf7, 0xfc, 0xfe, 0xfb, 0x61, 0xb8, + 0x28, 0x00, 0xd0, 0x04, 0x69, 0x79, 0x00, 0x8a, + 0x21, 0x00, 0xf0, 0x0f, 0xfb, 0x99, 0x20, 0x00, + 0x86, 0x38, 0x23, 0x01, 0x03, 0xdb, 0x69, 0xf8, + 0x43, 0x18, 0xe0, 0x0d, 0x61, 0xbe, 0x0e, 0x36, + 0x06, 0x36, 0x23, 0x0d, 0x06, 0x9b, 0x42, 0xde, + 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x01, + 0x86, 0x38, 0x69, 0xf8, 0x4b, 0x33, 0x40, 0x18, + 0x61, 0xf8, 0x69, 0xb8, 0x28, 0x00, 0xd1, 0x06, + 0x69, 0x78, 0x28, 0x00, 0xd0, 0x03, 0x1c, 0x38, + 0xf7, 0xfc, 0xfe, 0xae, 0xe7, 0x7f, 0x68, 0xf8, + 0x90, 0x06, 0x69, 0x38, 0x90, 0x07, 0x69, 0x78, + 0x90, 0x08, 0x69, 0xb8, 0x90, 0x09, 0xa8, 0x02, + 0x1c, 0x21, 0x1d, 0xfa, 0x32, 0x01, 0xb4, 0x07, + 0x1c, 0x2a, 0xb4, 0x04, 0x20, 0x00, 0x9a, 0x05, + 0xa9, 0x0a, 0xab, 0x0c, 0xf0, 0x03, 0xf8, 0xb4, + 0xb0, 0x04, 0x28, 0x00, 0xd0, 0x03, 0x1c, 0x38, + 0xf0, 0x00, 0xf8, 0x5f, 0xe7, 0x63, 0x2d, 0x00, + 0xd0, 0x09, 0x2d, 0x01, 0xd0, 0x07, 0x2d, 0x02, + 0xd0, 0x05, 0x2d, 0x03, 0xd0, 0x03, 0x23, 0x02, + 0x69, 0xf8, 0x43, 0x18, 0x61, 0xf8, 0x85, 0xfc, + 0x2c, 0x08, 0xd2, 0x02, 0x00, 0xa0, 0x9a, 0x0b, + 0x50, 0x17, 0x20, 0x01, 0x24, 0x00, 0x63, 0xf8, + 0x63, 0xbc, 0x85, 0xbd, 0x21, 0x01, 0x1c, 0x38, + 0xf0, 0x00, 0xf9, 0x0c, 0x99, 0x0a, 0x8c, 0x88, + 0x06, 0x01, 0x0e, 0x09, 0x1c, 0x38, 0xf0, 0x00, + 0xf8, 0xbe, 0x22, 0x00, 0x21, 0x00, 0x1c, 0x38, + 0xf0, 0x00, 0xf8, 0x93, 0x98, 0x18, 0x60, 0x38, + 0x98, 0x18, 0x28, 0x00, 0xd0, 0x06, 0x22, 0x00, + 0x21, 0x03, 0x1c, 0x23, 0x9c, 0x18, 0x1c, 0x38, + 0xf0, 0x0f, 0xfa, 0xd4, 0x68, 0xb8, 0x60, 0x78, + 0x1c, 0x38, 0xb0, 0x0c, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x58, + 0x2e, 0x08, 0x1a, 0x58, 0xff, 0xff, 0x7f, 0xff, + 0xb5, 0x80, 0x1c, 0x07, 0xb0, 0x82, 0x28, 0x00, + 0xd0, 0x13, 0x68, 0x78, 0x28, 0x00, 0xd1, 0x10, + 0x68, 0xb8, 0x90, 0x00, 0x1d, 0xf8, 0x30, 0x05, + 0x90, 0x01, 0x46, 0x69, 0x68, 0x38, 0xf0, 0x0c, + 0xf8, 0xfb, 0x22, 0x0c, 0x21, 0x00, 0x1c, 0x38, + 0xf0, 0x0f, 0xfb, 0x06, 0x1c, 0x38, 0xf7, 0xfc, + 0xfe, 0x37, 0xb0, 0x02, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0x90, 0x1c, 0x07, 0xb0, 0x84, + 0x28, 0x00, 0xd1, 0x03, 0xb0, 0x04, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, 0x23, 0x00, + 0x49, 0x1d, 0x00, 0x82, 0x58, 0x8c, 0x42, 0xbc, + 0xd1, 0x00, 0x50, 0x8b, 0x30, 0x01, 0x28, 0x08, + 0xdb, 0xf7, 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x00, + 0xf8, 0xbc, 0x68, 0xf8, 0x90, 0x00, 0x69, 0x38, + 0x90, 0x01, 0x69, 0x78, 0x90, 0x02, 0x69, 0xb8, + 0x90, 0x03, 0x46, 0x68, 0x1d, 0xc2, 0x32, 0x01, + 0x46, 0x69, 0x68, 0xb8, 0xf0, 0x03, 0xfb, 0x38, + 0x6a, 0x38, 0x28, 0x00, 0xd0, 0x03, 0x68, 0x41, + 0x39, 0x01, 0x60, 0x41, 0x30, 0x04, 0x69, 0xf8, + 0x0c, 0x00, 0xd3, 0x0c, 0x23, 0x30, 0x5e, 0xf8, + 0x28, 0x00, 0xd1, 0x03, 0x69, 0xb8, 0xf7, 0xfc, + 0xfe, 0x2b, 0xe0, 0x04, 0x28, 0x01, 0xd1, 0x02, + 0x69, 0xb8, 0xf7, 0xfc, 0xfd, 0xf5, 0x22, 0x80, + 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x0f, 0xfa, 0xbc, + 0x1c, 0x38, 0xf7, 0xfc, 0xfd, 0xed, 0xe7, 0xbd, + 0x2e, 0x08, 0x1a, 0x58, 0x28, 0x00, 0xd0, 0x08, + 0x28, 0x01, 0xd0, 0x08, 0x28, 0x02, 0xd0, 0x08, + 0x28, 0x03, 0xd1, 0x08, 0x20, 0xff, 0x30, 0x01, + 0x47, 0x70, 0x20, 0x02, 0x47, 0x70, 0x20, 0x04, + 0x47, 0x70, 0x20, 0x10, 0x47, 0x70, 0x20, 0x00, + 0x47, 0x70, 0xb5, 0x90, 0x1c, 0x07, 0x06, 0x08, + 0x0e, 0x00, 0x06, 0x14, 0x0e, 0x24, 0x28, 0x00, + 0xd0, 0x0a, 0x21, 0x03, 0x68, 0xb8, 0xf0, 0x04, + 0xfc, 0x3f, 0x68, 0xb8, 0x1c, 0x21, 0xf0, 0x04, + 0xfc, 0xe7, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x21, 0x00, 0x68, 0xb8, 0xf0, 0x04, 0xfc, 0x34, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, + 0x06, 0x09, 0xd0, 0x02, 0x68, 0x80, 0x21, 0x02, + 0xe0, 0x01, 0x68, 0x80, 0x21, 0x00, 0xf0, 0x04, + 0xfc, 0x27, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, + 0x06, 0x09, 0x0e, 0x09, 0x28, 0x00, 0xd0, 0x02, + 0x68, 0x80, 0xf0, 0x04, 0xfe, 0x2d, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0xb0, 0x23, 0x05, 0x43, 0x18, + 0x4d, 0x08, 0x84, 0xa8, 0x27, 0x00, 0x4c, 0x08, + 0x00, 0xb8, 0x58, 0x20, 0x8c, 0xa9, 0x06, 0x09, + 0x0e, 0x09, 0xf7, 0xff, 0xff, 0xe8, 0x37, 0x01, + 0x2f, 0x08, 0xdb, 0xf5, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x58, + 0x2e, 0x08, 0x1a, 0x58, 0x48, 0x01, 0x23, 0x24, + 0x5e, 0xc0, 0x47, 0x70, 0x2e, 0x08, 0x1a, 0x58, + 0xb5, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x28, 0x00, + 0xd0, 0x15, 0x6a, 0x20, 0x28, 0x00, 0xd0, 0x06, + 0x42, 0xb8, 0xd0, 0x10, 0x68, 0x41, 0x39, 0x01, + 0x60, 0x41, 0x20, 0x00, 0x62, 0x20, 0x2f, 0x00, + 0xd0, 0x09, 0x68, 0xa0, 0x68, 0x39, 0xf0, 0x0c, + 0xf8, 0x39, 0x28, 0x00, 0xd1, 0x03, 0x62, 0x27, + 0x68, 0x78, 0x30, 0x01, 0x60, 0x78, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, 0x06, 0x09, + 0xd0, 0x01, 0x21, 0x01, 0xe0, 0x00, 0x21, 0x00, + 0x68, 0x80, 0xf0, 0x04, 0xfd, 0x2d, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0x90, 0x1c, 0x07, 0x1c, 0x0c, + 0xd0, 0x01, 0x21, 0x01, 0xe0, 0x00, 0x21, 0x00, + 0x68, 0xb8, 0xf0, 0x04, 0xf8, 0xc5, 0x2c, 0x00, + 0xd0, 0x03, 0x23, 0x01, 0x69, 0xf8, 0x43, 0x18, + 0xe0, 0x02, 0x69, 0xf8, 0x08, 0x40, 0x00, 0x40, + 0x61, 0xf8, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x01, 0x21, 0x07, 0x07, 0x09, 0x63, 0x88, + 0x47, 0x70, 0x00, 0x00, 0xb5, 0x90, 0x9c, 0x03, + 0x9f, 0x04, 0xb0, 0x85, 0x91, 0x00, 0x92, 0x01, + 0x93, 0x02, 0x94, 0x03, 0x97, 0x04, 0x68, 0x80, + 0x46, 0x69, 0xf0, 0x0a, 0xff, 0x89, 0xb0, 0x05, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, + 0xb0, 0x86, 0x98, 0x06, 0x6a, 0x40, 0x68, 0xc3, + 0x93, 0x05, 0x98, 0x06, 0x6b, 0xc0, 0x01, 0x80, + 0x06, 0x05, 0x0e, 0x2d, 0x95, 0x00, 0x68, 0x18, + 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, 0x01, 0x40, + 0x08, 0xc0, 0x90, 0x04, 0x99, 0x07, 0x68, 0x48, + 0x99, 0x04, 0x43, 0x48, 0x99, 0x07, 0x68, 0x09, + 0x08, 0xc9, 0x18, 0x0f, 0x97, 0x03, 0x21, 0x00, + 0x91, 0x02, 0x9b, 0x05, 0x68, 0x58, 0x28, 0x00, + 0xdd, 0x5e, 0x23, 0x32, 0x98, 0x06, 0x5e, 0xc0, + 0x9b, 0x09, 0x43, 0x58, 0x9a, 0x08, 0x18, 0x81, + 0x1c, 0x08, 0xd5, 0x00, 0x30, 0x03, 0x10, 0x80, + 0x29, 0x00, 0xda, 0x04, 0x42, 0x49, 0x07, 0x89, + 0x0f, 0x89, 0x42, 0x49, 0xe0, 0x01, 0x07, 0x89, + 0x0f, 0x89, 0x00, 0x4a, 0x9d, 0x00, 0x41, 0x15, + 0x1c, 0x2b, 0x06, 0x2d, 0x0e, 0x2d, 0x27, 0xc0, + 0x40, 0xd7, 0x06, 0x3a, 0x0e, 0x12, 0x9b, 0x06, + 0x69, 0x9b, 0x18, 0x18, 0x9b, 0x05, 0x9f, 0x03, + 0x19, 0xdb, 0x33, 0x88, 0x78, 0x1f, 0x33, 0x01, + 0x93, 0x01, 0x24, 0x00, 0x9b, 0x07, 0x68, 0x9b, + 0x2b, 0x00, 0xd9, 0x23, 0x0a, 0x3b, 0xd3, 0x05, + 0x78, 0x03, 0x43, 0x93, 0x70, 0x03, 0x78, 0x03, + 0x43, 0x2b, 0x70, 0x03, 0x31, 0x01, 0x29, 0x03, + 0xdd, 0x04, 0x22, 0xc0, 0x21, 0x00, 0x9d, 0x00, + 0x30, 0x01, 0xe0, 0x05, 0x10, 0x92, 0x06, 0x12, + 0x0e, 0x12, 0x10, 0xab, 0x06, 0x1d, 0x0e, 0x2d, + 0x00, 0x7b, 0x06, 0x1f, 0x0e, 0x3f, 0x34, 0x01, + 0x07, 0x63, 0xd1, 0x03, 0x9b, 0x01, 0x78, 0x1f, + 0x33, 0x01, 0x93, 0x01, 0x9b, 0x07, 0x68, 0x9b, + 0x42, 0xa3, 0xd8, 0xdb, 0x98, 0x04, 0x9f, 0x03, + 0x18, 0x3f, 0x97, 0x03, 0x9b, 0x09, 0x33, 0x01, + 0x93, 0x09, 0x99, 0x02, 0x31, 0x01, 0x91, 0x02, + 0x9b, 0x05, 0x68, 0x58, 0x42, 0x88, 0xdc, 0xa0, + 0xb0, 0x06, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0xff, 0xb0, 0x86, 0x98, 0x06, + 0x6a, 0x40, 0x68, 0xc3, 0x93, 0x05, 0x98, 0x06, + 0x6b, 0xc0, 0x07, 0x06, 0x0f, 0x36, 0x96, 0x00, + 0x01, 0x30, 0x06, 0x06, 0x0e, 0x36, 0x96, 0x01, + 0x68, 0x18, 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, + 0x01, 0x40, 0x08, 0xc0, 0x90, 0x04, 0x68, 0x48, + 0x9a, 0x04, 0x43, 0x50, 0x68, 0x0a, 0x08, 0xd2, + 0x18, 0x17, 0x97, 0x03, 0x22, 0x00, 0x92, 0x02, + 0x9b, 0x05, 0x68, 0x58, 0x28, 0x00, 0xdd, 0x48, + 0x23, 0x32, 0x98, 0x06, 0x5e, 0xc0, 0x9b, 0x09, + 0x43, 0x58, 0x9a, 0x08, 0x18, 0x82, 0x1c, 0x10, + 0xd5, 0x00, 0x30, 0x01, 0x10, 0x40, 0x9b, 0x06, + 0x69, 0x9b, 0x18, 0x18, 0x9b, 0x05, 0x9f, 0x03, + 0x19, 0xdb, 0x1d, 0xdd, 0x35, 0x81, 0x78, 0x2f, + 0x24, 0x00, 0x68, 0x8b, 0x35, 0x01, 0x2b, 0x00, + 0xd9, 0x21, 0x0a, 0x3b, 0xd3, 0x10, 0x08, 0x53, + 0xd3, 0x06, 0x78, 0x06, 0x23, 0xf0, 0x40, 0x33, + 0x70, 0x03, 0x78, 0x03, 0x9e, 0x00, 0xe0, 0x05, + 0x78, 0x03, 0x07, 0x1b, 0x0f, 0x1b, 0x70, 0x03, + 0x78, 0x03, 0x9e, 0x01, 0x43, 0x33, 0x70, 0x03, + 0x32, 0x01, 0x08, 0x53, 0xd2, 0x00, 0x30, 0x01, + 0x00, 0x7b, 0x06, 0x1f, 0x0e, 0x3f, 0x34, 0x01, + 0x07, 0x63, 0xd1, 0x01, 0x78, 0x2f, 0x35, 0x01, + 0x68, 0x8b, 0x42, 0xa3, 0xd8, 0xdd, 0x98, 0x04, + 0x9f, 0x03, 0x18, 0x3f, 0x97, 0x03, 0x9b, 0x09, + 0x33, 0x01, 0x93, 0x09, 0x9a, 0x02, 0x32, 0x01, + 0x92, 0x02, 0x9b, 0x05, 0x68, 0x58, 0x42, 0x90, + 0xdc, 0xb6, 0xb0, 0x06, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xff, 0xb0, 0x83, + 0x98, 0x03, 0x6a, 0x40, 0x68, 0xc4, 0x98, 0x03, + 0x6b, 0xc0, 0x06, 0x03, 0x0e, 0x1b, 0x93, 0x00, + 0x68, 0x20, 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, + 0x01, 0x40, 0x08, 0xc2, 0x92, 0x02, 0x68, 0x48, + 0x43, 0x50, 0x68, 0x0a, 0x08, 0xd2, 0x18, 0x10, + 0x90, 0x01, 0x25, 0x00, 0x68, 0x60, 0x28, 0x00, + 0xdd, 0x35, 0x23, 0x32, 0x98, 0x03, 0x5e, 0xc0, + 0x9b, 0x06, 0x43, 0x58, 0x9a, 0x05, 0x18, 0x80, + 0x9a, 0x03, 0x69, 0x92, 0x18, 0x17, 0x98, 0x01, + 0x18, 0x20, 0x1d, 0xc6, 0x36, 0x81, 0x78, 0x32, + 0x20, 0x00, 0x68, 0x8b, 0x36, 0x01, 0x2b, 0x00, + 0xd9, 0x16, 0x0a, 0x13, 0xd3, 0x01, 0x9b, 0x00, + 0x70, 0x3b, 0x00, 0x52, 0x06, 0x12, 0x0e, 0x12, + 0xd1, 0x09, 0x1d, 0xc2, 0x32, 0x01, 0x08, 0xd2, + 0x00, 0xd2, 0x1a, 0x10, 0x19, 0xc7, 0x1c, 0x10, + 0x78, 0x32, 0x36, 0x01, 0xe0, 0x01, 0x30, 0x01, + 0x37, 0x01, 0x68, 0x8b, 0x42, 0x83, 0xd8, 0xe8, + 0x98, 0x01, 0x9a, 0x02, 0x18, 0x80, 0x90, 0x01, + 0x9b, 0x06, 0x33, 0x01, 0x93, 0x06, 0x68, 0x60, + 0x35, 0x01, 0x42, 0xa8, 0xdc, 0xc9, 0xb0, 0x03, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xff, 0x23, 0x2c, 0x1c, 0x07, 0x5e, 0xc0, + 0xb0, 0x85, 0x28, 0x01, 0xd0, 0x0f, 0x28, 0x02, + 0xd0, 0x07, 0x28, 0x03, 0xd1, 0x11, 0xab, 0x06, + 0xcb, 0x0e, 0x1c, 0x38, 0xf7, 0xff, 0xff, 0x9a, + 0xe0, 0x5d, 0xab, 0x06, 0xcb, 0x0e, 0x1c, 0x38, + 0xf7, 0xff, 0xff, 0x23, 0xe0, 0x57, 0xab, 0x06, + 0xcb, 0x0e, 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0x97, + 0xe0, 0x51, 0x6a, 0x78, 0x68, 0xc0, 0x90, 0x04, + 0x68, 0x00, 0x01, 0x00, 0x30, 0x1f, 0x09, 0x40, + 0x01, 0x40, 0x08, 0xc0, 0x90, 0x03, 0x99, 0x06, + 0x68, 0x48, 0x99, 0x03, 0x43, 0x48, 0x99, 0x06, + 0x68, 0x09, 0x08, 0xc9, 0x18, 0x09, 0x91, 0x02, + 0x21, 0x00, 0x91, 0x01, 0x98, 0x04, 0x68, 0x40, + 0x28, 0x00, 0xdd, 0x38, 0x98, 0x04, 0x99, 0x02, + 0x9e, 0x07, 0x18, 0x40, 0x30, 0x88, 0x78, 0x05, + 0x30, 0x01, 0x90, 0x00, 0x24, 0x00, 0x99, 0x06, + 0x68, 0x88, 0x28, 0x00, 0xd9, 0x1d, 0x0a, 0x28, + 0xd3, 0x05, 0x68, 0xb8, 0x6b, 0xfb, 0x9a, 0x08, + 0x1c, 0x31, 0xf0, 0x0a, 0xfb, 0xa7, 0x00, 0x68, + 0x06, 0x05, 0x0e, 0x2d, 0xd1, 0x0b, 0x1d, 0xe0, + 0x30, 0x01, 0x08, 0xc0, 0x00, 0xc0, 0x1b, 0x01, + 0x19, 0x8e, 0x1c, 0x04, 0x98, 0x00, 0x78, 0x05, + 0x30, 0x01, 0x90, 0x00, 0xe0, 0x01, 0x34, 0x01, + 0x36, 0x01, 0x99, 0x06, 0x68, 0x88, 0x42, 0xa0, + 0xd8, 0xe1, 0x98, 0x03, 0x99, 0x02, 0x18, 0x09, + 0x91, 0x02, 0x9a, 0x08, 0x32, 0x01, 0x92, 0x08, + 0x99, 0x01, 0x31, 0x01, 0x91, 0x01, 0x98, 0x04, + 0x68, 0x40, 0x42, 0x88, 0xdc, 0xc6, 0xb0, 0x05, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0x90, 0x1c, 0x07, 0x20, 0x00, 0xb0, 0x88, + 0xf0, 0x08, 0xfa, 0x55, 0x90, 0x06, 0x00, 0x80, + 0x30, 0x10, 0x00, 0x80, 0xf7, 0xfc, 0xfb, 0x42, + 0x1c, 0x04, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x03, + 0xb0, 0x08, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x1d, 0xe1, 0x31, 0x09, 0x91, 0x07, 0x49, 0x19, + 0x68, 0x4b, 0x1c, 0x5a, 0x60, 0x4a, 0x60, 0x63, + 0x60, 0xe7, 0x68, 0x39, 0x01, 0x09, 0x31, 0x1f, + 0x09, 0x49, 0x01, 0x49, 0x90, 0x00, 0x90, 0x01, + 0x1e, 0x48, 0x90, 0x02, 0x68, 0xe0, 0x68, 0x40, + 0x00, 0xc0, 0x38, 0x01, 0x90, 0x03, 0x46, 0x68, + 0x21, 0x00, 0xf0, 0x08, 0xfa, 0x33, 0x60, 0xa0, + 0x68, 0xe0, 0x30, 0x88, 0x90, 0x05, 0x68, 0xa0, + 0x90, 0x04, 0x46, 0x68, 0x1c, 0x22, 0x68, 0x61, + 0xb4, 0x07, 0x22, 0x00, 0xb4, 0x04, 0x22, 0x01, + 0x20, 0x00, 0xa9, 0x0a, 0xab, 0x08, 0xf0, 0x02, + 0xfd, 0x4b, 0xb0, 0x04, 0x28, 0x00, 0xd0, 0x03, + 0x1c, 0x20, 0xf7, 0xfc, 0xfb, 0x29, 0x24, 0x00, + 0x1c, 0x20, 0xe7, 0xc5, 0x2e, 0x08, 0x1a, 0x80, + 0xb5, 0x80, 0x1c, 0x07, 0xb0, 0x84, 0x28, 0x00, + 0xd0, 0x1a, 0x20, 0x00, 0xf0, 0x08, 0xfa, 0x07, + 0x90, 0x00, 0x1d, 0xf8, 0x30, 0x09, 0x90, 0x01, + 0x68, 0xb8, 0x90, 0x02, 0x68, 0xf8, 0x30, 0x88, + 0x90, 0x03, 0x46, 0x68, 0x46, 0x69, 0x1d, 0xc2, + 0x32, 0x01, 0x68, 0x38, 0xf0, 0x03, 0xf8, 0x38, + 0x22, 0x10, 0x21, 0x00, 0x1c, 0x38, 0xf0, 0x0e, + 0xff, 0xd3, 0x1c, 0x38, 0xf7, 0xfc, 0xfb, 0x04, + 0xb0, 0x04, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xff, 0x23, 0x32, 0x1c, 0x07, 0x5e, 0xc0, + 0x1c, 0x0c, 0x1c, 0x15, 0xb0, 0x8a, 0x42, 0x90, + 0xdd, 0x63, 0x6a, 0x78, 0x28, 0x00, 0xd1, 0x0b, + 0x4e, 0x38, 0x68, 0x30, 0x28, 0x00, 0xd1, 0x05, + 0x48, 0x37, 0xf7, 0xff, 0xff, 0x7d, 0x60, 0x30, + 0x28, 0x00, 0xd0, 0x61, 0x68, 0x30, 0x62, 0x78, + 0x23, 0x01, 0x6b, 0xb8, 0x6a, 0x79, 0x42, 0xd8, + 0xd1, 0x01, 0x22, 0x01, 0xe0, 0x00, 0x22, 0x00, + 0x92, 0x01, 0x68, 0xc8, 0x90, 0x00, 0x68, 0x00, + 0x90, 0x04, 0x98, 0x00, 0x68, 0x40, 0x90, 0x03, + 0x6b, 0xf8, 0x28, 0x01, 0xd1, 0x01, 0x90, 0x02, + 0xe0, 0x11, 0x20, 0x00, 0x90, 0x02, 0x9a, 0x01, + 0x2a, 0x00, 0xd1, 0x0c, 0x1c, 0x20, 0xf0, 0x00, + 0xf8, 0x57, 0x6b, 0xba, 0x99, 0x03, 0xb4, 0x06, + 0x1c, 0x03, 0x9a, 0x0f, 0x1c, 0x38, 0x1c, 0x29, + 0xf7, 0xff, 0xfd, 0x80, 0xb0, 0x02, 0x99, 0x03, + 0x91, 0x08, 0x20, 0x01, 0x90, 0x09, 0x78, 0x20, + 0x28, 0x00, 0xd0, 0x31, 0x23, 0x32, 0x5e, 0xf8, + 0x42, 0xa8, 0xdd, 0x22, 0x78, 0x20, 0x99, 0x00, + 0xf0, 0x00, 0xf8, 0x34, 0x90, 0x07, 0x1c, 0x06, + 0x78, 0x20, 0x07, 0x00, 0x0f, 0x00, 0x99, 0x04, + 0x43, 0x48, 0x90, 0x05, 0x78, 0x20, 0x09, 0x00, + 0x07, 0x40, 0x0f, 0x40, 0x99, 0x03, 0x43, 0x48, + 0x90, 0x06, 0x98, 0x02, 0x34, 0x01, 0x28, 0x00, + 0xd0, 0x0c, 0x99, 0x0d, 0x9a, 0x01, 0xb4, 0x06, + 0x6a, 0x78, 0x68, 0xb9, 0x68, 0x00, 0xaa, 0x07, + 0x1c, 0x2b, 0xf0, 0x0a, 0xfd, 0xab, 0xb0, 0x02, + 0xe0, 0x06, 0xe0, 0x09, 0x9b, 0x0d, 0x1c, 0x38, + 0xa9, 0x05, 0x1c, 0x2a, 0xf7, 0xff, 0xfe, 0xa8, + 0x19, 0xad, 0x78, 0x20, 0x28, 0x00, 0xd1, 0xcd, + 0xb0, 0x0a, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x1a, 0x80, + 0x2e, 0x02, 0xcf, 0xe4, 0x29, 0x00, 0xd1, 0x00, + 0x49, 0x02, 0x06, 0x40, 0x0e, 0x40, 0x18, 0x40, + 0x7a, 0x00, 0x47, 0x70, 0x2e, 0x02, 0xcf, 0xe4, + 0xb5, 0xb0, 0x1c, 0x04, 0x1c, 0x0f, 0xd1, 0x08, + 0x4f, 0x0c, 0x68, 0x38, 0x28, 0x00, 0xd1, 0x03, + 0x48, 0x0b, 0xf7, 0xff, 0xfe, 0xf9, 0x60, 0x38, + 0x68, 0x3f, 0x25, 0x00, 0x78, 0x20, 0x28, 0x00, + 0xd0, 0x08, 0x78, 0x20, 0x68, 0xf9, 0x34, 0x01, + 0xf7, 0xff, 0xff, 0xe0, 0x19, 0x45, 0x78, 0x20, + 0x28, 0x00, 0xd1, 0xf6, 0x1c, 0x28, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1a, 0x80, + 0x2e, 0x02, 0xcf, 0xe4, 0xb5, 0x80, 0x28, 0x00, + 0xd1, 0x08, 0x4f, 0x09, 0x68, 0x38, 0x28, 0x00, + 0xd1, 0x03, 0x48, 0x08, 0xf7, 0xff, 0xfe, 0xd8, + 0x60, 0x38, 0x68, 0x38, 0x28, 0x00, 0xd1, 0x02, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xc0, + 0x68, 0x40, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x1a, 0x80, 0x2e, 0x02, 0xcf, 0xe4, + 0xb5, 0xf0, 0xb0, 0x83, 0x4a, 0x18, 0x21, 0x00, + 0x20, 0xff, 0x30, 0x01, 0xf7, 0xff, 0xfa, 0xac, + 0x49, 0x16, 0x27, 0x00, 0x64, 0x08, 0x49, 0x16, + 0x91, 0x02, 0x49, 0x16, 0x91, 0x01, 0x49, 0x16, + 0x91, 0x00, 0x4c, 0x16, 0x01, 0x38, 0x06, 0x01, + 0x0e, 0x09, 0x20, 0x10, 0x1c, 0x22, 0x1c, 0x0d, + 0xf7, 0xff, 0xfa, 0x9a, 0x00, 0xbe, 0x99, 0x02, + 0x51, 0x88, 0x20, 0x04, 0x1c, 0x29, 0x1c, 0x22, + 0xf7, 0xff, 0xfa, 0x92, 0x99, 0x01, 0x51, 0x88, + 0x20, 0x02, 0x1c, 0x29, 0x1c, 0x22, 0xf7, 0xff, + 0xfa, 0x8b, 0x99, 0x00, 0x51, 0x88, 0x37, 0x01, + 0x2f, 0x08, 0xdb, 0xe3, 0x20, 0x00, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x1a, 0xc8, 0x2e, 0x08, 0x1c, 0x88, + 0x2e, 0x08, 0x55, 0x58, 0x2e, 0x08, 0x55, 0x78, + 0x2e, 0x08, 0x55, 0x98, 0x2e, 0x08, 0x1a, 0x88, + 0xb5, 0x80, 0x48, 0x0c, 0xf7, 0xff, 0xfe, 0x84, + 0x4f, 0x0b, 0x64, 0x78, 0x48, 0x0b, 0xf7, 0xff, + 0xfe, 0x7f, 0x64, 0xb8, 0x48, 0x0a, 0xf7, 0xff, + 0xfe, 0x7b, 0x64, 0xf8, 0x20, 0x00, 0x22, 0x00, + 0x49, 0x08, 0x00, 0x83, 0x50, 0xca, 0x30, 0x01, + 0x28, 0x10, 0xdb, 0xfa, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x02, 0x56, 0xcc, + 0x2e, 0x08, 0x1c, 0x88, 0x2e, 0x02, 0x8d, 0x58, + 0x2e, 0x02, 0xcf, 0xe4, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0x90, 0x04, 0x01, 0x0c, 0x09, 0x20, 0xff, + 0x29, 0x00, 0xd0, 0x0b, 0x29, 0x0f, 0xdc, 0x09, + 0x00, 0x8c, 0x4f, 0x06, 0x59, 0x39, 0x29, 0x00, + 0xd0, 0x04, 0x1c, 0x08, 0xf7, 0xff, 0xfb, 0x91, + 0x20, 0x00, 0x51, 0x38, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0xff, 0x04, 0x05, 0x0c, 0x2d, 0x04, 0x10, + 0x0c, 0x00, 0xb0, 0x82, 0x90, 0x00, 0x04, 0x18, + 0x0c, 0x00, 0x90, 0x01, 0x2d, 0x00, 0xd0, 0x01, + 0x2d, 0x0f, 0xdd, 0x01, 0x20, 0xff, 0xe0, 0x53, + 0x00, 0xaf, 0x4c, 0x2c, 0x59, 0xe0, 0x28, 0x00, + 0xd0, 0x02, 0x1c, 0x28, 0xf7, 0xff, 0xff, 0xd0, + 0x98, 0x00, 0x4a, 0x29, 0x40, 0x02, 0x92, 0x00, + 0x23, 0x2d, 0x01, 0x1b, 0x42, 0x9a, 0xdd, 0x01, + 0x1c, 0x1a, 0x93, 0x00, 0x23, 0x09, 0x01, 0x9b, + 0x98, 0x01, 0x42, 0x98, 0xdd, 0x01, 0x1c, 0x1a, + 0x93, 0x00, 0x2d, 0x08, 0xda, 0x01, 0x20, 0x00, + 0xe0, 0x00, 0x20, 0x01, 0x22, 0x00, 0x21, 0x00, + 0xb4, 0x07, 0x9a, 0x06, 0xb4, 0x04, 0x20, 0x00, + 0x9a, 0x04, 0x9b, 0x05, 0xf7, 0xff, 0xfa, 0x38, + 0x51, 0xe0, 0xb0, 0x04, 0x1c, 0x01, 0xd0, 0xd1, + 0x48, 0x18, 0x6c, 0x82, 0x62, 0x4a, 0x21, 0x01, + 0x59, 0xe2, 0x63, 0xd1, 0x21, 0x00, 0x43, 0xc9, + 0x59, 0xe2, 0x63, 0x91, 0x99, 0x03, 0x29, 0x08, + 0xd2, 0x10, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x06, 0x08, 0x0b, + 0x04, 0x06, 0x08, 0x0b, 0x48, 0x0e, 0xe0, 0x02, + 0x48, 0x0e, 0xe0, 0x00, 0x48, 0x0e, 0x59, 0xc6, + 0xe0, 0x00, 0x6c, 0x06, 0x59, 0xe0, 0x1c, 0x31, + 0xf7, 0xff, 0xfb, 0xd6, 0x59, 0xe0, 0x68, 0x80, + 0x21, 0x07, 0xf0, 0x04, 0xf9, 0xdd, 0x20, 0x00, + 0xb0, 0x02, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0x00, 0x00, 0xff, 0xfe, 0x2e, 0x08, 0x1c, 0x88, + 0x2e, 0x08, 0x55, 0x98, 0x2e, 0x08, 0x55, 0x78, + 0x2e, 0x08, 0x55, 0x58, 0xb5, 0xf0, 0x04, 0x00, + 0x0c, 0x00, 0x04, 0x09, 0x14, 0x09, 0x04, 0x16, + 0x14, 0x36, 0xb0, 0x85, 0x28, 0x07, 0xdc, 0x29, + 0x00, 0x84, 0x4f, 0x21, 0x59, 0x38, 0x28, 0x00, + 0xd0, 0x24, 0x08, 0x49, 0x00, 0x49, 0x04, 0x0d, + 0x14, 0x2d, 0x68, 0x80, 0xa9, 0x01, 0xf0, 0x04, + 0xfa, 0x8b, 0x98, 0x01, 0x19, 0x40, 0x90, 0x01, + 0x98, 0x03, 0x19, 0x40, 0x90, 0x03, 0x98, 0x02, + 0x19, 0x80, 0x90, 0x02, 0x98, 0x04, 0x19, 0x80, + 0x90, 0x04, 0x98, 0x01, 0x49, 0x15, 0x42, 0x88, + 0xd8, 0x0c, 0x98, 0x02, 0x42, 0x88, 0xd8, 0x09, + 0x23, 0x2d, 0x01, 0x1b, 0x98, 0x01, 0x42, 0x98, + 0xda, 0x04, 0x23, 0x09, 0x01, 0x9b, 0x98, 0x02, + 0x42, 0x98, 0xdb, 0x01, 0x20, 0xff, 0xe0, 0x12, + 0x59, 0x38, 0x68, 0x80, 0xa9, 0x01, 0xf0, 0x02, + 0xf8, 0x5b, 0x59, 0x38, 0x68, 0x80, 0x46, 0x69, + 0xf0, 0x03, 0xff, 0x2a, 0x98, 0x00, 0x28, 0x00, + 0xd1, 0x04, 0x59, 0x38, 0x68, 0x80, 0x21, 0x01, + 0xf0, 0x03, 0xfc, 0x6e, 0x20, 0x00, 0xb0, 0x05, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x55, 0x18, 0x80, 0x00, 0x00, 0x00, + 0xb5, 0xf0, 0x04, 0x07, 0x0c, 0x3f, 0x04, 0x0b, + 0x0c, 0x1b, 0x04, 0x16, 0x0c, 0x36, 0x20, 0xff, + 0xb0, 0x85, 0x2f, 0x07, 0xdc, 0x10, 0x00, 0xbc, + 0x4f, 0x1c, 0x59, 0x39, 0x29, 0x00, 0xd0, 0x0b, + 0x08, 0x5a, 0x00, 0x52, 0x04, 0x15, 0x0c, 0x2d, + 0x23, 0x2d, 0x01, 0x1b, 0x42, 0x9d, 0xda, 0x03, + 0x23, 0x09, 0x01, 0x9b, 0x42, 0x9e, 0xdb, 0x03, + 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x68, 0x88, 0xa9, 0x01, 0xf0, 0x04, 0xfa, 0x2c, + 0x98, 0x03, 0x99, 0x01, 0x1a, 0x40, 0x90, 0x03, + 0x19, 0x40, 0x90, 0x03, 0x98, 0x04, 0x99, 0x02, + 0x1a, 0x40, 0x90, 0x04, 0x19, 0x80, 0x90, 0x04, + 0x95, 0x01, 0x96, 0x02, 0x59, 0x38, 0x68, 0x80, + 0xa9, 0x01, 0xf0, 0x02, 0xf8, 0x0d, 0x59, 0x38, + 0x68, 0x80, 0x46, 0x69, 0xf0, 0x03, 0xfe, 0xdc, + 0x98, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x59, 0x38, + 0x68, 0x80, 0x21, 0x01, 0xf0, 0x03, 0xfc, 0x20, + 0x20, 0x00, 0xe7, 0xd5, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x80, + 0x49, 0x04, 0x58, 0x08, 0x28, 0x00, 0xd0, 0x03, + 0x68, 0x80, 0x21, 0x00, 0xf0, 0x03, 0xfc, 0x10, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0x80, 0x04, 0x01, 0x0c, 0x09, 0x20, 0xff, + 0x29, 0x07, 0xdc, 0x0c, 0x29, 0x01, 0xdb, 0x0a, + 0x00, 0x88, 0x49, 0x06, 0x58, 0x08, 0x27, 0x00, + 0x28, 0x00, 0xd0, 0x03, 0x68, 0x80, 0x21, 0x01, + 0xf0, 0x03, 0xfa, 0x56, 0x1c, 0x38, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x55, 0x18, + 0x04, 0x01, 0x0c, 0x09, 0x20, 0x00, 0x29, 0x0f, + 0xdc, 0x06, 0x00, 0x89, 0x4a, 0x03, 0x58, 0x51, + 0x29, 0x00, 0xd0, 0x01, 0x23, 0x32, 0x5e, 0xc8, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0x04, 0x01, 0x0c, 0x09, 0x20, 0x00, 0x29, 0x0f, + 0xdc, 0x06, 0x00, 0x89, 0x4a, 0x03, 0x58, 0x51, + 0x29, 0x00, 0xd0, 0x01, 0x23, 0x34, 0x5e, 0xc8, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0xb0, 0x04, 0x03, 0x0c, 0x1b, 0x04, 0x0a, + 0x0c, 0x12, 0x20, 0xff, 0x2b, 0x07, 0xdc, 0x10, + 0x00, 0x9d, 0x4f, 0x09, 0x59, 0x79, 0x29, 0x00, + 0xd0, 0x0b, 0x07, 0x14, 0x0f, 0x24, 0x68, 0x88, + 0x21, 0x03, 0xf0, 0x03, 0xfe, 0xc5, 0x59, 0x78, + 0x68, 0x80, 0x1c, 0x21, 0xf0, 0x03, 0xff, 0x6c, + 0x20, 0x00, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x55, 0x18, 0xb5, 0x00, 0x04, 0x01, + 0x0c, 0x09, 0x20, 0xff, 0x29, 0x07, 0xdc, 0x09, + 0x00, 0x89, 0x4a, 0x05, 0x58, 0x51, 0x29, 0x00, + 0xd0, 0x04, 0x68, 0x88, 0x21, 0x02, 0xf0, 0x03, + 0xfe, 0xab, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x55, 0x18, 0xb5, 0x00, 0x04, 0x01, + 0x0c, 0x09, 0x20, 0xff, 0x29, 0x07, 0xdc, 0x09, + 0x00, 0x89, 0x4a, 0x05, 0x58, 0x51, 0x29, 0x00, + 0xd0, 0x04, 0x68, 0x88, 0x21, 0x00, 0xf0, 0x03, + 0xfe, 0x97, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x55, 0x18, 0xb5, 0xf0, 0x04, 0x05, + 0x0c, 0x2d, 0x04, 0x09, 0x0c, 0x09, 0x04, 0x12, + 0x0c, 0x12, 0x04, 0x1e, 0x0c, 0x36, 0x9c, 0x05, + 0x9f, 0x06, 0x04, 0x24, 0x0c, 0x24, 0x04, 0x3f, + 0x0c, 0x3f, 0x20, 0xff, 0xb0, 0x85, 0x2d, 0x0f, + 0xdc, 0x04, 0x00, 0xab, 0x4d, 0x10, 0x58, 0xed, + 0x2d, 0x00, 0xd1, 0x03, 0xb0, 0x05, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x19, 0x88, 0x23, 0x32, + 0x5e, 0xeb, 0x42, 0x98, 0xdd, 0x02, 0x1a, 0x58, + 0x04, 0x06, 0x0c, 0x36, 0x19, 0x10, 0x23, 0x34, + 0x5e, 0xeb, 0x42, 0x98, 0xdd, 0x02, 0x1a, 0x98, + 0x04, 0x04, 0x0c, 0x24, 0x91, 0x00, 0x92, 0x01, + 0x96, 0x02, 0x94, 0x03, 0x97, 0x04, 0x46, 0x69, + 0x68, 0xa8, 0xf0, 0x0a, 0xfa, 0x3d, 0xe7, 0xe1, + 0x2e, 0x08, 0x55, 0x18, 0xb4, 0x80, 0x04, 0x03, + 0x0c, 0x1b, 0x20, 0x00, 0x29, 0x00, 0xdb, 0x0f, + 0x2a, 0x00, 0xdb, 0x0d, 0x00, 0x9b, 0x4f, 0x07, + 0x58, 0xff, 0x2f, 0x00, 0xd0, 0x08, 0x23, 0x32, + 0x5e, 0xfb, 0x42, 0x8b, 0xdd, 0x04, 0x23, 0x34, + 0x5e, 0xf9, 0x42, 0x91, 0xdd, 0x00, 0x20, 0x01, + 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0xf0, 0x9c, 0x06, 0x9e, 0x05, 0x04, 0x00, + 0x0c, 0x00, 0xb0, 0x85, 0x90, 0x00, 0x04, 0x08, + 0x14, 0x00, 0x04, 0x17, 0x14, 0x3f, 0x04, 0x1d, + 0x14, 0x2d, 0x04, 0x31, 0x14, 0x09, 0x91, 0x01, + 0x04, 0x23, 0x0c, 0x1b, 0x93, 0x02, 0xb0, 0x82, + 0x99, 0x02, 0x00, 0x89, 0x91, 0x06, 0x4a, 0x71, + 0x92, 0x05, 0x58, 0x51, 0x29, 0x00, 0xd1, 0x01, + 0x20, 0xff, 0xe0, 0xd6, 0x2d, 0x00, 0xda, 0x0e, + 0x19, 0x40, 0x04, 0x00, 0x14, 0x00, 0x42, 0x69, + 0x04, 0x0d, 0x14, 0x2d, 0x99, 0x03, 0x18, 0x79, + 0x04, 0x0f, 0x14, 0x3f, 0x99, 0x03, 0x42, 0x49, + 0x04, 0x09, 0x14, 0x09, 0x91, 0x03, 0x1c, 0x01, + 0x1c, 0x04, 0x98, 0x02, 0x1c, 0x3a, 0xf7, 0xff, + 0xff, 0xb1, 0x28, 0x00, 0xd0, 0x08, 0x98, 0x06, + 0x99, 0x05, 0x58, 0x08, 0x68, 0x80, 0x9b, 0x04, + 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x09, 0xff, 0x9a, + 0x98, 0x03, 0x10, 0x40, 0x90, 0x00, 0x10, 0x6e, + 0x1c, 0x28, 0xb0, 0x82, 0xf0, 0x0e, 0xfd, 0x56, + 0xf0, 0x0e, 0xfd, 0x92, 0x90, 0x00, 0x91, 0x01, + 0x98, 0x05, 0xf0, 0x0e, 0xfd, 0x4f, 0xf0, 0x0e, + 0xfd, 0x8b, 0x9a, 0x00, 0x9b, 0x01, 0xb0, 0x02, + 0xf0, 0x0e, 0xfd, 0x8a, 0x28, 0x00, 0xd0, 0x4c, + 0x98, 0x03, 0x28, 0x00, 0xdd, 0x21, 0x26, 0x00, + 0x2d, 0x00, 0xdd, 0x6d, 0x98, 0x00, 0x99, 0x03, + 0x18, 0x40, 0x90, 0x00, 0x34, 0x01, 0x42, 0xa8, + 0xdb, 0x03, 0x98, 0x00, 0x1b, 0x40, 0x90, 0x00, + 0x37, 0x01, 0x98, 0x02, 0x1c, 0x21, 0x1c, 0x3a, + 0xf7, 0xff, 0xff, 0x78, 0x28, 0x00, 0xd0, 0x08, + 0x98, 0x06, 0x99, 0x05, 0x58, 0x08, 0x68, 0x80, + 0x9b, 0x04, 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x09, + 0xff, 0x61, 0x36, 0x01, 0x42, 0xae, 0xdb, 0xe1, + 0xe0, 0x76, 0x98, 0x03, 0x42, 0x40, 0x04, 0x00, + 0x14, 0x00, 0x90, 0x03, 0x98, 0x00, 0x42, 0x46, + 0x20, 0x00, 0x90, 0x01, 0x2d, 0x00, 0xdd, 0x43, + 0x98, 0x03, 0x18, 0x36, 0x34, 0x01, 0x42, 0xae, + 0xdb, 0x01, 0x1b, 0x76, 0x3f, 0x01, 0x98, 0x02, + 0x1c, 0x21, 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0x52, + 0x28, 0x00, 0xd0, 0x08, 0x98, 0x06, 0x99, 0x05, + 0x58, 0x08, 0x68, 0x80, 0x9b, 0x04, 0x1c, 0x21, + 0x1c, 0x3a, 0xf0, 0x09, 0xff, 0x3b, 0x98, 0x01, + 0x30, 0x01, 0x90, 0x01, 0x42, 0xa8, 0xdb, 0xe3, + 0xe0, 0x4e, 0x98, 0x03, 0x28, 0x00, 0xdd, 0x24, + 0x20, 0x00, 0x90, 0x01, 0x98, 0x03, 0x28, 0x00, + 0xdd, 0x1e, 0x19, 0x76, 0x99, 0x03, 0x37, 0x01, + 0x42, 0x8e, 0xdb, 0x02, 0x98, 0x03, 0x1a, 0x36, + 0x34, 0x01, 0x98, 0x02, 0x1c, 0x21, 0x1c, 0x3a, + 0xf7, 0xff, 0xff, 0x2c, 0x28, 0x00, 0xd0, 0x08, + 0x98, 0x06, 0x99, 0x05, 0x58, 0x08, 0x68, 0x80, + 0x9b, 0x04, 0x1c, 0x21, 0x1c, 0x3a, 0xf0, 0x09, + 0xff, 0x15, 0x98, 0x01, 0x30, 0x01, 0x90, 0x01, + 0x99, 0x03, 0x42, 0x88, 0xdb, 0xe1, 0xe0, 0x27, + 0xe0, 0x26, 0x98, 0x03, 0x42, 0x40, 0x04, 0x01, + 0x14, 0x09, 0x91, 0x03, 0x20, 0x00, 0x90, 0x01, + 0x29, 0x00, 0xdd, 0x1d, 0x19, 0x76, 0x99, 0x03, + 0x3f, 0x01, 0x42, 0x8e, 0xdb, 0x02, 0x99, 0x03, + 0x1a, 0x76, 0x34, 0x01, 0x98, 0x02, 0x1c, 0x21, + 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0x03, 0x28, 0x00, + 0xd0, 0x08, 0x98, 0x06, 0x99, 0x05, 0x58, 0x08, + 0x68, 0x80, 0x9b, 0x04, 0x1c, 0x21, 0x1c, 0x3a, + 0xf0, 0x09, 0xfe, 0xec, 0x98, 0x01, 0x30, 0x01, + 0x90, 0x01, 0x99, 0x03, 0x42, 0x88, 0xdb, 0xe1, + 0x20, 0x00, 0xb0, 0x07, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0xb4, 0x80, 0x23, 0x00, 0x88, 0x01, 0x0a, 0x0a, + 0x06, 0x12, 0x0e, 0x12, 0x06, 0x09, 0x0e, 0x09, + 0x2a, 0xdf, 0xd0, 0x1a, 0xdc, 0x07, 0x2a, 0xc4, + 0xd0, 0x19, 0x2a, 0xd6, 0xd0, 0x1b, 0x2a, 0xdc, + 0xd1, 0x08, 0x22, 0x1e, 0xe0, 0x06, 0x2a, 0xe4, + 0xd0, 0x13, 0x2a, 0xf6, 0xd0, 0x15, 0x2a, 0xfc, + 0xd1, 0x00, 0x22, 0x1f, 0x29, 0xdf, 0xd0, 0x26, + 0xdc, 0x11, 0x29, 0xc4, 0xd0, 0x25, 0x29, 0xd6, + 0xd0, 0x27, 0x29, 0xdc, 0xd1, 0x12, 0x21, 0x1e, + 0xe0, 0x10, 0x22, 0x19, 0xe7, 0xf2, 0x22, 0x1a, + 0xe7, 0xf0, 0x22, 0x1b, 0xe7, 0xee, 0x22, 0x1c, + 0xe7, 0xec, 0x22, 0x1d, 0xe7, 0xea, 0x29, 0xe4, + 0xd0, 0x15, 0x29, 0xf6, 0xd0, 0x17, 0x29, 0xfc, + 0xd1, 0x00, 0x21, 0x1f, 0x02, 0x17, 0x18, 0x7f, + 0x80, 0x07, 0x30, 0x02, 0x2a, 0x00, 0xd0, 0x04, + 0x29, 0x00, 0xd0, 0x02, 0x33, 0x01, 0x2b, 0x70, + 0xdb, 0xc0, 0xbc, 0x80, 0x47, 0x70, 0x21, 0x19, + 0xe7, 0xf0, 0x21, 0x1a, 0xe7, 0xee, 0x21, 0x1b, + 0xe7, 0xec, 0x21, 0x1c, 0xe7, 0xea, 0x21, 0x1d, + 0xe7, 0xe8, 0xb5, 0xf0, 0x1c, 0x0f, 0x1c, 0x11, + 0x04, 0x02, 0x0c, 0x12, 0x04, 0x0c, 0x0c, 0x24, + 0x04, 0x1d, 0x0c, 0x2d, 0x00, 0x96, 0xb0, 0x81, + 0x48, 0x10, 0x90, 0x00, 0x59, 0x81, 0x20, 0xff, + 0x29, 0x00, 0xd0, 0x16, 0x2a, 0x00, 0xd0, 0x14, + 0x2a, 0x0f, 0xdc, 0x12, 0x23, 0x32, 0x5e, 0xca, + 0x42, 0xa2, 0xdb, 0x0e, 0x23, 0x34, 0x5e, 0xc9, + 0x42, 0xa9, 0xdb, 0x0a, 0x1c, 0x38, 0xf7, 0xff, + 0xff, 0x93, 0x98, 0x00, 0x59, 0x80, 0x1c, 0x39, + 0x1c, 0x22, 0x1c, 0x2b, 0xf7, 0xff, 0xfb, 0x5c, + 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0xb4, 0xb0, 0x04, 0x07, 0x0c, 0x3f, 0x04, 0x09, + 0x0c, 0x09, 0x04, 0x14, 0x14, 0x24, 0x04, 0x1a, + 0x14, 0x12, 0x20, 0xff, 0x2f, 0x0f, 0xdc, 0x1d, + 0x00, 0xbd, 0x4f, 0x0f, 0x59, 0x7b, 0x2b, 0x00, + 0xd0, 0x18, 0x48, 0x0e, 0x29, 0x01, 0xd0, 0x05, + 0x29, 0x02, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0x03, + 0x6c, 0x80, 0xe0, 0x02, 0x6c, 0x40, 0xe0, 0x00, + 0x6c, 0xc0, 0x62, 0x58, 0x59, 0x78, 0x63, 0xc4, + 0x20, 0x00, 0x43, 0xc0, 0x42, 0x82, 0xd1, 0x02, + 0x59, 0x79, 0x63, 0x88, 0xe0, 0x01, 0x59, 0x78, + 0x63, 0x82, 0x20, 0x00, 0xbc, 0xb0, 0x47, 0x70, + 0x2e, 0x08, 0x55, 0x18, 0x2e, 0x08, 0x1c, 0x88, + 0xb5, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x04, 0x09, + 0x0c, 0x09, 0x00, 0x80, 0x4a, 0x07, 0x58, 0x10, + 0x28, 0x00, 0xd1, 0x02, 0x20, 0xff, 0xbc, 0x08, + 0x47, 0x18, 0x07, 0x89, 0x0f, 0x89, 0x68, 0x80, + 0xf0, 0x03, 0xfe, 0x96, 0x20, 0x00, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x55, 0x18, + 0xb5, 0x80, 0x04, 0x00, 0x0c, 0x00, 0x04, 0x12, + 0x0c, 0x12, 0x1c, 0x1f, 0x28, 0x07, 0xdc, 0x1f, + 0x28, 0x01, 0xdb, 0x1d, 0x00, 0x80, 0x4b, 0x10, + 0x58, 0x1b, 0x2b, 0x00, 0xd0, 0x18, 0x29, 0x02, + 0xd0, 0x0e, 0x29, 0x04, 0xd0, 0x0c, 0x29, 0x10, + 0xd0, 0x0a, 0x23, 0xff, 0x33, 0x01, 0x42, 0x99, + 0xd1, 0x0e, 0x06, 0x12, 0x0e, 0x12, 0x1c, 0x39, + 0x48, 0x08, 0x6c, 0x00, 0x68, 0x00, 0xe0, 0x05, + 0x07, 0x12, 0x0f, 0x12, 0x49, 0x06, 0x58, 0x08, + 0x68, 0x00, 0x1c, 0x39, 0xf0, 0x0b, 0xfb, 0x1c, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x55, 0x18, 0x2e, 0x08, 0x1c, 0x88, + 0x2e, 0x08, 0x55, 0x58, 0xb5, 0xf0, 0x04, 0x07, + 0x0c, 0x3f, 0x04, 0x10, 0x0c, 0x00, 0x22, 0x00, + 0xb0, 0x85, 0x92, 0x00, 0x2f, 0x07, 0xdc, 0x74, + 0x2f, 0x01, 0xdb, 0x73, 0x00, 0xbe, 0x4a, 0x3e, + 0x59, 0x92, 0x2a, 0x00, 0xd0, 0x6f, 0x04, 0x1a, + 0x0c, 0x12, 0x07, 0xd5, 0x0f, 0xed, 0x24, 0x02, + 0x40, 0x14, 0x27, 0x04, 0x40, 0x17, 0x23, 0x08, + 0x40, 0x1a, 0x92, 0x04, 0x29, 0x02, 0xd0, 0x34, + 0x29, 0x04, 0xd0, 0x32, 0x29, 0x10, 0xd0, 0x30, + 0x01, 0x5b, 0x42, 0x99, 0xd1, 0x60, 0x06, 0x02, + 0x0e, 0x12, 0x46, 0x69, 0x1c, 0x16, 0x48, 0x31, + 0x90, 0x01, 0x6c, 0x00, 0x68, 0x00, 0xf0, 0x0b, + 0xfb, 0x13, 0x98, 0x00, 0x4b, 0x2e, 0x40, 0x18, + 0x90, 0x00, 0x2d, 0x00, 0xd0, 0x02, 0x23, 0x02, + 0x43, 0x18, 0x90, 0x00, 0x2c, 0x00, 0xd0, 0x04, + 0x23, 0x01, 0x04, 0x5b, 0x98, 0x00, 0x43, 0x18, + 0x90, 0x00, 0x2f, 0x00, 0xd0, 0x03, 0x23, 0x01, + 0x98, 0x00, 0x43, 0x18, 0x90, 0x00, 0x9a, 0x04, + 0x2a, 0x00, 0xd0, 0x04, 0x23, 0x01, 0x04, 0x1b, + 0x98, 0x00, 0x43, 0x18, 0x90, 0x00, 0x98, 0x01, + 0x99, 0x00, 0x6c, 0x00, 0x68, 0x00, 0x1c, 0x32, + 0xe0, 0x30, 0x07, 0x02, 0x0f, 0x12, 0x92, 0x03, + 0x48, 0x1c, 0x90, 0x02, 0x59, 0x80, 0x68, 0x00, + 0x46, 0x69, 0xf0, 0x0b, 0xfa, 0xe5, 0x98, 0x00, + 0x4b, 0x17, 0x40, 0x18, 0x90, 0x00, 0x2d, 0x00, + 0xd0, 0x02, 0x23, 0x02, 0x43, 0x18, 0x90, 0x00, + 0x2c, 0x00, 0xd0, 0x04, 0x23, 0x01, 0x04, 0x5b, + 0x98, 0x00, 0x43, 0x18, 0x90, 0x00, 0x2f, 0x00, + 0xd0, 0x03, 0x23, 0x01, 0x98, 0x00, 0x43, 0x18, + 0x90, 0x00, 0x9a, 0x04, 0x2a, 0x00, 0xd0, 0x04, + 0x23, 0x01, 0x04, 0x1b, 0x98, 0x00, 0x43, 0x18, + 0x90, 0x00, 0x98, 0x02, 0x9a, 0x03, 0x59, 0x80, + 0xe0, 0x02, 0xe0, 0x05, 0xe0, 0x04, 0xe0, 0x03, + 0x68, 0x00, 0x99, 0x00, 0xf0, 0x0b, 0xfa, 0x8c, + 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x55, 0x18, 0x2e, 0x08, 0x1c, 0x88, + 0xff, 0xfc, 0xff, 0xfc, 0x2e, 0x08, 0x55, 0x58, + 0xb5, 0xf0, 0x4f, 0x28, 0x25, 0x00, 0x24, 0xff, + 0x69, 0x38, 0x28, 0x00, 0xd1, 0x01, 0x60, 0xbd, + 0xe0, 0x0c, 0x26, 0x05, 0x68, 0xb9, 0x29, 0x07, + 0xd2, 0xf9, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x08, 0x10, 0x1a, + 0x21, 0x30, 0x38, 0x00, 0x1c, 0x20, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x20, 0x01, 0x02, 0x80, + 0xf7, 0xf6, 0xfd, 0xd4, 0x28, 0x00, 0xdb, 0x2d, + 0x20, 0x02, 0xe0, 0x25, 0x48, 0x18, 0xf7, 0xf6, + 0xfd, 0xef, 0x28, 0x00, 0xdb, 0x26, 0x89, 0xb8, + 0x28, 0x00, 0xdd, 0x15, 0x20, 0x03, 0xe0, 0x1b, + 0x89, 0xb8, 0xf7, 0xf6, 0xfd, 0xc3, 0x28, 0x00, + 0xdb, 0x1c, 0x20, 0x04, 0xe0, 0x14, 0xf7, 0xf6, + 0xfd, 0xdf, 0x28, 0x00, 0xdb, 0x16, 0x69, 0x39, + 0x18, 0x09, 0x61, 0x39, 0x89, 0xb9, 0x1a, 0x08, + 0x81, 0xb8, 0x89, 0xb8, 0x28, 0x00, 0xdc, 0xe9, + 0x60, 0xbe, 0xe0, 0x0b, 0x20, 0x00, 0xf7, 0xf6, + 0xfd, 0xad, 0x28, 0x00, 0xd1, 0x06, 0x20, 0x06, + 0x60, 0xb8, 0xe0, 0x03, 0xf7, 0xf6, 0xfd, 0xc8, + 0x28, 0x00, 0xda, 0xb8, 0x1c, 0x28, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x1d, 0x08, + 0x2e, 0x08, 0x55, 0xb8, 0xb5, 0xf0, 0x04, 0x04, + 0x0c, 0x24, 0x04, 0x0d, 0x0c, 0x2d, 0x04, 0x16, + 0x0c, 0x36, 0xb0, 0x85, 0xa8, 0x01, 0x49, 0x2e, + 0xc9, 0x8e, 0xc0, 0x8e, 0x2c, 0x00, 0xd0, 0x07, + 0x2c, 0x01, 0xd0, 0x07, 0x2c, 0x02, 0xd0, 0x07, + 0x2c, 0x03, 0xd1, 0x3f, 0x21, 0x08, 0xe0, 0x04, + 0x21, 0x01, 0xe0, 0x02, 0x21, 0x02, 0xe0, 0x00, + 0x21, 0x04, 0x91, 0x00, 0x23, 0x2d, 0x01, 0x1b, + 0x42, 0x9d, 0xdc, 0x33, 0x23, 0x09, 0x01, 0x9b, + 0x42, 0x9e, 0xdc, 0x2f, 0x1e, 0x68, 0x90, 0x03, + 0x1e, 0x70, 0x90, 0x04, 0xa8, 0x01, 0x1c, 0x21, + 0xf0, 0x07, 0xfb, 0xb8, 0x4f, 0x1d, 0x60, 0x78, + 0x00, 0x80, 0x23, 0x01, 0x04, 0x1b, 0x42, 0x98, + 0xdc, 0x20, 0x1f, 0xf8, 0x38, 0x79, 0x67, 0xc4, + 0x68, 0x38, 0x28, 0x00, 0xd0, 0x0a, 0x68, 0x80, + 0xb0, 0x81, 0x46, 0x6b, 0x22, 0x00, 0x21, 0x00, + 0xf0, 0x09, 0xfd, 0x42, 0x68, 0x38, 0xf7, 0xfe, + 0xfe, 0x7c, 0xb0, 0x01, 0x22, 0x00, 0x21, 0x0a, + 0x20, 0x01, 0xb4, 0x07, 0x1c, 0x22, 0xb4, 0x04, + 0x21, 0x00, 0x20, 0x00, 0x1c, 0x2a, 0x1c, 0x33, + 0xf7, 0xfe, 0xfd, 0x56, 0xb0, 0x04, 0x60, 0x38, + 0x1c, 0x01, 0xd1, 0x03, 0xb0, 0x05, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x69, 0x88, 0x99, 0x00, + 0x43, 0x4d, 0x1d, 0xe9, 0xd5, 0x00, 0x31, 0x07, + 0x10, 0xc9, 0x43, 0x71, 0x61, 0x38, 0x60, 0x79, + 0x81, 0xb9, 0x20, 0x01, 0x60, 0xb8, 0xe7, 0xed, + 0x2e, 0x03, 0x31, 0xf0, 0x2e, 0x08, 0x1d, 0x08, + 0xb5, 0xf0, 0x04, 0x00, 0x0c, 0x00, 0x04, 0x09, + 0x0c, 0x09, 0xb0, 0x87, 0x91, 0x00, 0x04, 0x11, + 0x0c, 0x09, 0x91, 0x01, 0x04, 0x19, 0x0c, 0x09, + 0x91, 0x02, 0xb0, 0x85, 0x28, 0x07, 0xdc, 0x43, + 0x28, 0x01, 0xdb, 0x41, 0x00, 0x85, 0x48, 0x3e, + 0x90, 0x0b, 0x59, 0x41, 0x29, 0x00, 0xd0, 0x3b, + 0x48, 0x3c, 0x90, 0x0a, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x36, 0x23, 0x2c, 0x5e, 0xca, 0x2a, 0x0b, + 0xd2, 0x32, 0xa3, 0x02, 0x5c, 0x9b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, + 0x22, 0x00, 0x92, 0x00, 0x92, 0x01, 0x23, 0x32, + 0x5e, 0xc3, 0x93, 0x02, 0x23, 0x34, 0x5e, 0xc0, + 0x90, 0x03, 0x92, 0x04, 0x98, 0x07, 0x08, 0x80, + 0xd3, 0x40, 0x23, 0x2c, 0x5e, 0xc8, 0x28, 0x00, + 0xd0, 0x08, 0x28, 0x01, 0xd0, 0x08, 0x28, 0x02, + 0xd0, 0x08, 0x28, 0x03, 0xd1, 0x10, 0x27, 0xff, + 0x37, 0x01, 0xe0, 0x04, 0x27, 0x02, 0xe0, 0x02, + 0x27, 0x04, 0xe0, 0x00, 0x27, 0x10, 0x4e, 0x24, + 0x23, 0xff, 0x33, 0x01, 0x42, 0x9f, 0xd1, 0x16, + 0x24, 0x00, 0x48, 0x22, 0x90, 0x09, 0xe0, 0x03, + 0xb0, 0x0c, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0xa0, 0x58, 0x31, 0x29, 0x00, 0xd0, 0x06, + 0x06, 0x22, 0x0e, 0x12, 0x98, 0x09, 0x6c, 0x00, + 0x68, 0x00, 0xf0, 0x0b, 0xf9, 0x5d, 0x34, 0x01, + 0x42, 0xbc, 0xdb, 0xf1, 0xe0, 0x12, 0x24, 0x00, + 0x2f, 0x00, 0xdd, 0x0f, 0x48, 0x16, 0x90, 0x08, + 0x00, 0xa0, 0x58, 0x31, 0x29, 0x00, 0xd0, 0x06, + 0x07, 0x22, 0x0f, 0x12, 0x98, 0x08, 0x59, 0x40, + 0x68, 0x00, 0xf0, 0x0b, 0xf9, 0x49, 0x34, 0x01, + 0x42, 0xbc, 0xdb, 0xf1, 0x98, 0x07, 0x08, 0x40, + 0xd3, 0x01, 0x22, 0xff, 0xe0, 0x00, 0x22, 0x00, + 0x99, 0x06, 0xb4, 0x06, 0x98, 0x0d, 0x59, 0x40, + 0x68, 0x81, 0x98, 0x0c, 0x68, 0x00, 0x68, 0x80, + 0x9b, 0x07, 0xaa, 0x02, 0xf0, 0x09, 0xff, 0x12, + 0xb0, 0x0e, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x55, 0x18, 0x2e, 0x08, 0x1d, 0x08, + 0x2e, 0x08, 0x55, 0xb8, 0x2e, 0x08, 0x1c, 0x88, + 0x2e, 0x08, 0x55, 0x58, 0xb5, 0x80, 0x4f, 0x0a, + 0x68, 0x38, 0x28, 0x00, 0xd0, 0x0c, 0x68, 0x80, + 0xb0, 0x81, 0x46, 0x6b, 0x22, 0x00, 0x21, 0x00, + 0xf0, 0x09, 0xfc, 0x72, 0x68, 0x38, 0xf7, 0xfe, + 0xfd, 0xac, 0x20, 0x00, 0x60, 0x38, 0xb0, 0x01, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x1d, 0x08, 0xb5, 0x00, 0x04, 0x01, + 0x0c, 0x09, 0x20, 0xff, 0x29, 0x07, 0xdc, 0x09, + 0x00, 0x89, 0x4a, 0x05, 0x58, 0x51, 0x29, 0x00, + 0xd0, 0x04, 0x68, 0x88, 0x21, 0x01, 0xf0, 0x03, + 0xfb, 0x93, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x55, 0x18, 0xb5, 0x00, 0x04, 0x01, + 0x0c, 0x09, 0x20, 0xff, 0x29, 0x07, 0xdc, 0x09, + 0x00, 0x89, 0x4a, 0x05, 0x58, 0x51, 0x29, 0x00, + 0xd0, 0x04, 0x68, 0x88, 0x21, 0x00, 0xf0, 0x03, + 0xfb, 0x7f, 0x20, 0x00, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x55, 0x18, 0xb5, 0xf7, 0xb0, 0x86, + 0x9c, 0x07, 0x20, 0x00, 0x6e, 0x40, 0x90, 0x05, + 0x98, 0x05, 0x30, 0x0c, 0x90, 0x05, 0x48, 0x7f, + 0x90, 0x04, 0x98, 0x04, 0x30, 0x0c, 0x90, 0x04, + 0xf0, 0x11, 0xff, 0xce, 0x90, 0x01, 0xf0, 0x11, + 0xff, 0xb1, 0x90, 0x00, 0x20, 0x00, 0x43, 0xc0, + 0x49, 0x79, 0x60, 0x08, 0x20, 0x00, 0x43, 0xc0, + 0x49, 0x77, 0x60, 0x88, 0x20, 0x00, 0x43, 0xc0, + 0x49, 0x75, 0x61, 0x08, 0x98, 0x06, 0x28, 0x00, + 0xd0, 0x73, 0x20, 0x00, 0x6a, 0x40, 0x90, 0x03, + 0x68, 0x20, 0x30, 0x05, 0x99, 0x06, 0x1a, 0x08, + 0x90, 0x06, 0x68, 0xe0, 0x28, 0x00, 0xd0, 0x08, + 0x68, 0x60, 0x99, 0x03, 0x68, 0x09, 0x42, 0x88, + 0xd1, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0xe0, 0x06, 0x68, 0x60, 0x9a, 0x08, 0x42, 0x90, + 0xd1, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0x28, 0x00, 0xd0, 0x73, 0x68, 0x27, 0x68, 0xe0, + 0x28, 0x00, 0xd0, 0x01, 0x98, 0x05, 0xe0, 0x00, + 0x98, 0x04, 0x1c, 0x06, 0x68, 0xe0, 0x28, 0x00, + 0xd0, 0x02, 0x20, 0x00, 0x6e, 0x40, 0xe0, 0x00, + 0x48, 0x5c, 0x90, 0x02, 0x1d, 0xe5, 0x35, 0x0d, + 0x68, 0xa0, 0x28, 0x08, 0xd2, 0x5f, 0xa3, 0x02, + 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x04, 0x16, 0x28, 0x3a, 0x49, 0x55, 0x65, 0x71, + 0x69, 0x20, 0x49, 0x55, 0x60, 0x08, 0xcd, 0x02, + 0x48, 0x53, 0x60, 0x41, 0xcd, 0x02, 0x98, 0x02, + 0x60, 0x01, 0x3f, 0x01, 0x1c, 0x38, 0x3f, 0x01, + 0x28, 0x00, 0xd0, 0x02, 0xcd, 0x02, 0xc6, 0x02, + 0xe7, 0xf8, 0xe0, 0x67, 0x69, 0x20, 0x49, 0x4c, + 0x60, 0x88, 0xcd, 0x02, 0x48, 0x4a, 0x60, 0xc1, + 0xcd, 0x02, 0x98, 0x02, 0x60, 0x41, 0x3f, 0x01, + 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x02, + 0xcd, 0x02, 0xc6, 0x02, 0xe7, 0xf8, 0xe0, 0x55, + 0x69, 0x20, 0x49, 0x43, 0x61, 0x08, 0xcd, 0x02, + 0x48, 0x41, 0x61, 0x41, 0xcd, 0x02, 0x98, 0x02, + 0x60, 0x81, 0x3f, 0x01, 0x1c, 0x38, 0x3f, 0x01, + 0x28, 0x00, 0xd0, 0x02, 0xcd, 0x02, 0xc6, 0x02, + 0xe7, 0xf8, 0xe0, 0x43, 0x69, 0x20, 0x00, 0x80, + 0xe0, 0x00, 0xe0, 0x4b, 0x21, 0x00, 0x6a, 0x89, + 0x50, 0x0e, 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, + 0xd0, 0x02, 0xcd, 0x02, 0xc6, 0x02, 0xe7, 0xf8, + 0xe0, 0x34, 0x69, 0x20, 0x00, 0x80, 0x49, 0x33, + 0x50, 0x0e, 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, + 0xd0, 0x02, 0xcd, 0x02, 0xc6, 0x02, 0xe7, 0xf8, + 0xe0, 0x28, 0x69, 0x20, 0x00, 0x80, 0x21, 0x00, + 0x6e, 0x09, 0xe0, 0x01, 0xe0, 0x28, 0xe0, 0x20, + 0x50, 0x0e, 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, + 0xd0, 0x02, 0xcd, 0x02, 0xc6, 0x02, 0xe7, 0xf8, + 0xe0, 0x18, 0x69, 0x20, 0x00, 0x80, 0x49, 0x26, + 0x50, 0x0e, 0x1c, 0x38, 0x3f, 0x01, 0x28, 0x00, + 0xd0, 0x02, 0xcd, 0x02, 0xc6, 0x02, 0xe7, 0xf8, + 0xe0, 0x0c, 0x69, 0x20, 0x90, 0x03, 0x1c, 0x38, + 0x3f, 0x01, 0x28, 0x00, 0xd0, 0x04, 0xcd, 0x02, + 0x98, 0x03, 0xc0, 0x02, 0x90, 0x03, 0xe7, 0xf6, + 0xe0, 0x00, 0xe7, 0xff, 0x68, 0xe0, 0x28, 0xff, + 0xd1, 0x01, 0x96, 0x05, 0xe0, 0x00, 0x96, 0x04, + 0x68, 0x20, 0x00, 0x80, 0x19, 0x00, 0x1d, 0xc4, + 0x34, 0x0d, 0xe7, 0x3b, 0x98, 0x01, 0x28, 0x00, + 0xd1, 0x01, 0xf0, 0x11, 0xff, 0x2d, 0x98, 0x00, + 0x28, 0x00, 0xd1, 0x01, 0xf0, 0x11, 0xff, 0x0c, + 0x20, 0x00, 0x6e, 0x80, 0x68, 0x00, 0x4b, 0x0f, + 0x42, 0x98, 0xd0, 0x06, 0x48, 0x0d, 0x21, 0x00, + 0x6e, 0x89, 0x60, 0x08, 0x20, 0x01, 0x49, 0x08, + 0x62, 0x08, 0x20, 0x00, 0x21, 0x00, 0x6e, 0x89, + 0x60, 0x08, 0x20, 0x00, 0xb0, 0x06, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x06, + 0xe7, 0xf9, 0x00, 0x00, 0x2e, 0x08, 0x59, 0xb8, + 0x66, 0x00, 0x00, 0x80, 0x2e, 0x08, 0x3a, 0xfc, + 0x2e, 0x08, 0x1d, 0x1c, 0xda, 0xa5, 0xaa, 0x57, + 0xb5, 0x80, 0xb0, 0xa7, 0x46, 0x68, 0x4f, 0x08, + 0x23, 0x13, 0xcf, 0x06, 0xc0, 0x06, 0x3b, 0x01, + 0xd1, 0xfb, 0xcf, 0x04, 0xc0, 0x04, 0x46, 0x69, + 0x4a, 0x04, 0x20, 0x27, 0xf7, 0xff, 0xfe, 0xde, + 0xb0, 0x27, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x03, 0x32, 0x00, 0xf0, 0x24, 0x00, 0x09, + 0xb5, 0xff, 0xb0, 0x83, 0x99, 0x04, 0x04, 0x09, + 0x0c, 0x09, 0x91, 0x00, 0x9a, 0x05, 0x06, 0x16, + 0x0e, 0x36, 0x9b, 0x06, 0x06, 0x18, 0x0e, 0x00, + 0x90, 0x01, 0x98, 0x0c, 0x06, 0x00, 0x0e, 0x00, + 0x90, 0x02, 0xb0, 0x84, 0x25, 0x00, 0x98, 0x07, + 0x1d, 0xc2, 0x32, 0x21, 0x92, 0x00, 0x20, 0xff, + 0x30, 0x01, 0x68, 0x00, 0x49, 0x6b, 0x60, 0x08, + 0x98, 0x12, 0x28, 0x01, 0xd1, 0x73, 0x98, 0x07, + 0x28, 0x00, 0xd1, 0x05, 0x20, 0x63, 0xb0, 0x07, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x21, 0x00, 0x91, 0x01, 0x99, 0x01, 0x23, 0xff, + 0x33, 0xe1, 0x42, 0x99, 0xd3, 0x04, 0xe0, 0x0a, + 0x99, 0x01, 0x31, 0x01, 0x91, 0x01, 0xe7, 0xf5, + 0x20, 0x00, 0x99, 0x01, 0x23, 0x2c, 0x43, 0x59, + 0x9a, 0x00, 0x50, 0x50, 0xe7, 0xf4, 0x98, 0x07, + 0x49, 0x5b, 0x68, 0x09, 0x60, 0x08, 0x98, 0x05, + 0x28, 0x10, 0xdb, 0x01, 0x20, 0x01, 0xe0, 0x00, + 0x20, 0x00, 0x99, 0x05, 0x29, 0x1f, 0xdc, 0x01, + 0x21, 0x01, 0xe0, 0x00, 0x21, 0x00, 0x40, 0x08, + 0xd0, 0x04, 0x98, 0x05, 0x49, 0x53, 0x68, 0x09, + 0x60, 0x08, 0xe0, 0x02, 0x20, 0x62, 0xb0, 0x07, + 0xe7, 0xce, 0x20, 0x00, 0x49, 0x4d, 0x68, 0x09, + 0x70, 0x08, 0x1c, 0x30, 0x23, 0x03, 0x02, 0x5b, + 0x22, 0x01, 0x02, 0xd2, 0x21, 0x01, 0xf0, 0x00, + 0xfb, 0x01, 0x1c, 0x07, 0x2f, 0x00, 0xd0, 0x02, + 0x20, 0xa2, 0xb0, 0x07, 0xe7, 0xbc, 0x22, 0x00, + 0xb4, 0x04, 0x99, 0x05, 0x1c, 0x30, 0x23, 0x04, + 0x22, 0x00, 0xf0, 0x00, 0xf9, 0x2f, 0xb0, 0x01, + 0x1c, 0x07, 0x2f, 0x00, 0xd0, 0x02, 0x20, 0xa2, + 0xb0, 0x07, 0xe7, 0xad, 0x98, 0x06, 0x28, 0x00, + 0xdb, 0x04, 0x98, 0x06, 0x28, 0x3f, 0xdc, 0x01, + 0x9d, 0x06, 0xe0, 0x00, 0x25, 0x1b, 0x98, 0x11, + 0x01, 0x80, 0x43, 0x05, 0x23, 0x80, 0x43, 0x1d, + 0x48, 0x39, 0x68, 0x01, 0x0a, 0x09, 0x02, 0x09, + 0x60, 0x01, 0x48, 0x37, 0x68, 0x01, 0x43, 0x29, + 0x60, 0x01, 0xf0, 0x11, 0xfe, 0x0b, 0x90, 0x03, + 0xf0, 0x11, 0xfe, 0x22, 0xe0, 0x00, 0xe0, 0x13, + 0x90, 0x02, 0xf0, 0x11, 0xfe, 0x81, 0x1c, 0x04, + 0x4b, 0x30, 0x40, 0x1c, 0x1c, 0x20, 0xf0, 0x11, + 0xfe, 0x7f, 0x98, 0x02, 0x28, 0x40, 0xd0, 0x01, + 0xf0, 0x11, 0xfe, 0x4a, 0x98, 0x03, 0x28, 0x80, + 0xd0, 0x01, 0xf0, 0x11, 0xfe, 0x29, 0xe0, 0x43, + 0x22, 0x00, 0xb4, 0x04, 0x1c, 0x30, 0x23, 0x04, + 0x22, 0x00, 0x49, 0x27, 0xf0, 0x00, 0xf8, 0xee, + 0xb0, 0x01, 0x1c, 0x07, 0x2f, 0x00, 0xd0, 0x02, + 0x20, 0xa2, 0xb0, 0x07, 0xe7, 0x6c, 0x1c, 0x30, + 0x23, 0x03, 0x02, 0x5b, 0x22, 0x01, 0x02, 0xd2, + 0x21, 0x02, 0xf0, 0x00, 0xfa, 0xa3, 0x1c, 0x07, + 0x2f, 0x00, 0xd0, 0x02, 0x20, 0xa2, 0xb0, 0x07, + 0xe7, 0x5e, 0x48, 0x19, 0x68, 0x01, 0x0a, 0x09, + 0x02, 0x09, 0x60, 0x01, 0x48, 0x16, 0x68, 0x01, + 0x23, 0x1b, 0x43, 0x19, 0x60, 0x01, 0x48, 0x12, + 0x68, 0x00, 0x68, 0x00, 0x90, 0x07, 0xf0, 0x11, + 0xfd, 0xc5, 0x90, 0x03, 0xf0, 0x11, 0xfd, 0xdc, + 0x90, 0x02, 0xf0, 0x11, 0xfe, 0x3d, 0x1c, 0x04, + 0x23, 0x01, 0x04, 0x5b, 0x43, 0x1c, 0x1c, 0x20, + 0xf0, 0x11, 0xfe, 0x3a, 0x98, 0x02, 0x28, 0x40, + 0xd0, 0x01, 0xf0, 0x11, 0xfe, 0x05, 0x98, 0x03, + 0x28, 0x80, 0xd0, 0x01, 0xf0, 0x11, 0xfd, 0xe4, + 0x1c, 0x38, 0xb0, 0x07, 0xe7, 0x34, 0xb0, 0x04, + 0xb0, 0x03, 0xe7, 0x31, 0x2e, 0x08, 0x5d, 0xc0, + 0x2e, 0x08, 0x5d, 0xb8, 0x2e, 0x08, 0x5d, 0xbc, + 0x68, 0x00, 0x00, 0x38, 0xff, 0xfd, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xb5, 0x00, 0xf7, 0xff, + 0xfe, 0xe7, 0xf0, 0x00, 0xf8, 0x02, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0xf0, 0xf0, 0x0b, 0xf9, 0x48, + 0x26, 0x00, 0x2e, 0x04, 0xd3, 0x02, 0xe0, 0x12, + 0x36, 0x01, 0xe7, 0xfa, 0x01, 0x30, 0x4b, 0x3c, + 0x18, 0xc7, 0x25, 0x00, 0x2d, 0x04, 0xd3, 0x02, + 0xe0, 0x08, 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x00, + 0x60, 0xb8, 0x20, 0x00, 0x60, 0xf8, 0x37, 0xff, + 0x37, 0x01, 0xe7, 0xf6, 0xe7, 0xec, 0x4f, 0x35, + 0x25, 0x00, 0x2d, 0x04, 0xd3, 0x02, 0xe0, 0x07, + 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x00, 0x60, 0xb8, + 0x20, 0x00, 0x60, 0xf8, 0x37, 0x10, 0xe7, 0xf7, + 0x20, 0x00, 0x49, 0x2f, 0x68, 0x09, 0x70, 0x08, + 0x24, 0x00, 0x2c, 0x20, 0xd3, 0x02, 0xe0, 0x1f, + 0x34, 0x01, 0xe7, 0xfa, 0x21, 0x00, 0x00, 0xe0, + 0x4a, 0x2a, 0x68, 0x12, 0x50, 0x11, 0x20, 0x00, + 0x00, 0xe1, 0x4a, 0x28, 0x68, 0x12, 0x18, 0x89, + 0x60, 0x48, 0x21, 0x00, 0x00, 0xe0, 0x4a, 0x26, + 0x68, 0x12, 0x18, 0x80, 0x60, 0x41, 0x20, 0x00, + 0x00, 0xa1, 0x4a, 0x24, 0x68, 0x12, 0x50, 0x50, + 0x20, 0x00, 0x00, 0xe1, 0x1b, 0x09, 0x00, 0x89, + 0x4a, 0x21, 0x68, 0x12, 0x52, 0x50, 0xe7, 0xdf, + 0x20, 0x00, 0x21, 0x19, 0x06, 0x89, 0x62, 0x48, + 0x48, 0x1e, 0x21, 0x19, 0x06, 0x89, 0x62, 0x48, + 0x20, 0x00, 0x49, 0x1d, 0x68, 0x09, 0x60, 0x08, + 0x20, 0x00, 0x49, 0x1b, 0x68, 0x09, 0x60, 0x48, + 0x20, 0x00, 0x49, 0x19, 0x68, 0x09, 0x60, 0xc8, + 0x20, 0x00, 0x49, 0x17, 0x68, 0x09, 0x61, 0x08, + 0x20, 0x00, 0x49, 0x15, 0x68, 0x09, 0x61, 0x48, + 0x20, 0x00, 0x49, 0x13, 0x68, 0x09, 0x61, 0x88, + 0x20, 0x00, 0x49, 0x12, 0x68, 0x09, 0x60, 0x08, + 0x20, 0x00, 0x49, 0x10, 0x68, 0x09, 0x60, 0x48, + 0x20, 0x00, 0x49, 0x0e, 0x68, 0x09, 0x60, 0x88, + 0x48, 0x0d, 0x68, 0x01, 0x23, 0x01, 0x43, 0x19, + 0x60, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x9e, 0x00, 0x00, 0xc0, 0x9e, 0x00, 0x09, 0x80, + 0x2e, 0x08, 0x5d, 0xc4, 0x2e, 0x08, 0x5d, 0xd8, + 0x2e, 0x08, 0x5d, 0xdc, 0x2e, 0x08, 0x5d, 0xd4, + 0x2e, 0x08, 0x5d, 0xcc, 0x00, 0x40, 0x00, 0x03, + 0x2e, 0x08, 0x5e, 0x14, 0x2e, 0x08, 0x5e, 0x18, + 0x6a, 0x00, 0x00, 0x10, 0xb5, 0xff, 0xb0, 0x83, + 0x98, 0x03, 0x06, 0x04, 0x0e, 0x24, 0x99, 0x04, + 0x04, 0x08, 0x0c, 0x00, 0x90, 0x00, 0x9a, 0x05, + 0x06, 0x10, 0x0e, 0x00, 0x90, 0x01, 0x9b, 0x06, + 0x06, 0x18, 0x0e, 0x00, 0x90, 0x02, 0xb0, 0x81, + 0x00, 0xe0, 0x49, 0xc1, 0x68, 0x09, 0x18, 0x47, + 0x00, 0xa0, 0x49, 0xc0, 0x68, 0x09, 0x18, 0x45, + 0x00, 0xe0, 0x1b, 0x00, 0x00, 0x80, 0x49, 0xbe, + 0x68, 0x09, 0x18, 0x46, 0x2c, 0x20, 0xdb, 0x05, + 0x20, 0xa2, 0xb0, 0x04, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x68, 0x28, 0x4b, 0xb9, + 0x40, 0x18, 0x60, 0x28, 0x68, 0x38, 0x4b, 0xb8, + 0x40, 0x18, 0x60, 0x38, 0x68, 0x38, 0x23, 0x40, + 0x40, 0x18, 0xd0, 0x17, 0x68, 0x38, 0x23, 0x40, + 0x43, 0xdb, 0x40, 0x18, 0x60, 0x38, 0x48, 0xb3, + 0x68, 0x01, 0x08, 0x49, 0x00, 0x49, 0x60, 0x01, + 0x48, 0xb1, 0x68, 0x01, 0x23, 0x01, 0x05, 0x5b, + 0x43, 0x19, 0x60, 0x01, 0x98, 0x01, 0x4b, 0xaf, + 0x42, 0x98, 0xd1, 0x03, 0x20, 0x00, 0x49, 0xae, + 0x68, 0x09, 0x60, 0x08, 0x98, 0x01, 0x4b, 0xab, + 0x42, 0x98, 0xd0, 0x73, 0x68, 0x38, 0x23, 0x21, + 0x43, 0xdb, 0x40, 0x18, 0x60, 0x38, 0x68, 0x28, + 0x23, 0x07, 0x03, 0x5b, 0x40, 0x18, 0x60, 0x28, + 0x98, 0x01, 0x4b, 0xa6, 0x40, 0x18, 0x68, 0x29, + 0x43, 0x08, 0x60, 0x28, 0x20, 0x00, 0x75, 0x30, + 0x98, 0x02, 0x07, 0x80, 0x0f, 0x80, 0x28, 0x01, + 0xd1, 0x04, 0x88, 0x30, 0x23, 0x10, 0x43, 0x18, + 0x80, 0x30, 0xe0, 0x04, 0x88, 0x30, 0x23, 0x10, + 0x43, 0xdb, 0x40, 0x18, 0x80, 0x30, 0x98, 0x02, + 0x23, 0x80, 0x40, 0x18, 0x28, 0x80, 0xd1, 0x08, + 0x68, 0x38, 0x23, 0x40, 0x43, 0x18, 0x60, 0x38, + 0x20, 0xff, 0x49, 0x97, 0x68, 0x09, 0x70, 0x08, + 0xe0, 0x04, 0x68, 0x38, 0x23, 0x40, 0x43, 0xdb, + 0x40, 0x18, 0x60, 0x38, 0x98, 0x03, 0x28, 0x01, + 0xd1, 0x36, 0x88, 0x30, 0x23, 0x10, 0x43, 0xdb, + 0x40, 0x18, 0x80, 0x30, 0x20, 0x33, 0x06, 0x40, + 0x6d, 0x40, 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc1, + 0x00, 0xe0, 0x4a, 0x8c, 0x68, 0x12, 0x18, 0x80, + 0x60, 0x41, 0x20, 0x01, 0x70, 0xb0, 0x68, 0x38, + 0x23, 0x01, 0x03, 0x9b, 0x43, 0x18, 0x60, 0x38, + 0x68, 0x38, 0x4b, 0x87, 0x43, 0x18, 0x60, 0x38, + 0x48, 0x86, 0x70, 0x44, 0x20, 0x00, 0x49, 0x86, + 0x68, 0x09, 0x60, 0x08, 0x20, 0x01, 0x02, 0xc0, + 0x49, 0x84, 0x61, 0x48, 0x49, 0x83, 0x61, 0x08, + 0x20, 0x01, 0x49, 0x83, 0x64, 0x48, 0x20, 0x00, + 0x49, 0x81, 0x64, 0x48, 0x68, 0x28, 0x23, 0x01, + 0x03, 0x5b, 0x43, 0x18, 0x60, 0x28, 0x20, 0x00, + 0x49, 0x7e, 0x68, 0x09, 0x60, 0x08, 0xe0, 0x9a, + 0x98, 0x03, 0x28, 0x02, 0xd1, 0x30, 0x20, 0x33, + 0x06, 0x40, 0xe0, 0x00, 0xe0, 0x94, 0x6d, 0xc0, + 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, 0x00, 0xe1, + 0x4a, 0x70, 0x68, 0x12, 0x18, 0x89, 0x60, 0x48, + 0x20, 0x02, 0x70, 0xb0, 0x68, 0x38, 0x23, 0x01, + 0x03, 0xdb, 0x43, 0x18, 0x60, 0x38, 0x68, 0x38, + 0x4b, 0x6b, 0x43, 0x18, 0x60, 0x38, 0x48, 0x6b, + 0x70, 0x84, 0x20, 0x00, 0x49, 0x6e, 0x60, 0x08, + 0x00, 0xe0, 0x49, 0x5b, 0x68, 0x09, 0x58, 0x08, + 0x23, 0xff, 0x33, 0x01, 0x43, 0x18, 0x00, 0xe1, + 0x4a, 0x57, 0x68, 0x12, 0x50, 0x50, 0x20, 0x4b, + 0x49, 0x67, 0x60, 0x08, 0x68, 0x28, 0x23, 0x01, + 0x03, 0x5b, 0x43, 0x18, 0x60, 0x28, 0xe0, 0x66, + 0x98, 0x03, 0x28, 0x04, 0xd1, 0x15, 0x20, 0x00, + 0x00, 0xe1, 0x4a, 0x5a, 0x68, 0x12, 0x18, 0x89, + 0x60, 0x48, 0x98, 0x03, 0x70, 0xb0, 0x68, 0x38, + 0x23, 0x20, 0x43, 0x18, 0x60, 0x38, 0x68, 0x38, + 0x60, 0x38, 0x48, 0x56, 0x70, 0x04, 0x68, 0x28, + 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, 0x60, 0x28, + 0xe0, 0x4d, 0x98, 0x03, 0x23, 0x10, 0x40, 0x18, + 0xd0, 0x0f, 0x21, 0x00, 0x00, 0xe0, 0x4a, 0x4d, + 0x68, 0x12, 0x18, 0x80, 0x60, 0x41, 0x68, 0x38, + 0x4b, 0x52, 0x43, 0x18, 0x60, 0x38, 0x68, 0x38, + 0x60, 0x38, 0x37, 0x04, 0x20, 0x0e, 0x60, 0x38, + 0xe0, 0x39, 0x98, 0x03, 0x28, 0x08, 0xd1, 0x23, + 0x48, 0x4d, 0x68, 0x00, 0x30, 0x60, 0x7e, 0x80, + 0x28, 0x00, 0xd0, 0x03, 0x20, 0x4f, 0xb0, 0x04, + 0xe6, 0xf8, 0xe0, 0x67, 0x20, 0x01, 0x49, 0x48, + 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, 0x48, 0x46, + 0x68, 0x00, 0x30, 0x60, 0x76, 0x04, 0x20, 0x01, + 0x49, 0x43, 0x68, 0x09, 0x31, 0x80, 0x70, 0xc8, + 0x49, 0x42, 0x00, 0xe0, 0x4a, 0x37, 0x68, 0x12, + 0x18, 0x80, 0x60, 0x41, 0x68, 0x28, 0x23, 0x01, + 0x03, 0x5b, 0x43, 0x18, 0x60, 0x28, 0xe0, 0x12, + 0x21, 0x00, 0x00, 0xe0, 0x4a, 0x31, 0x68, 0x12, + 0x18, 0x80, 0x60, 0x41, 0x98, 0x03, 0x70, 0xb0, + 0x68, 0x38, 0x23, 0x20, 0x43, 0x18, 0x60, 0x38, + 0x68, 0x38, 0x60, 0x38, 0x68, 0x28, 0x23, 0x01, + 0x03, 0x5b, 0x43, 0x18, 0x60, 0x28, 0xe0, 0x33, + 0x98, 0x03, 0x23, 0x10, 0x40, 0x18, 0xd0, 0x09, + 0x1c, 0x20, 0xf0, 0x05, 0xf8, 0x0f, 0x90, 0x00, + 0x28, 0x00, 0xd0, 0x02, 0x98, 0x00, 0xb0, 0x04, + 0xe6, 0xbc, 0xe0, 0x1a, 0x98, 0x03, 0x28, 0x01, + 0xd1, 0x03, 0x20, 0xff, 0x49, 0x21, 0x70, 0x48, + 0xe0, 0x13, 0x98, 0x03, 0x28, 0x02, 0xd1, 0x03, + 0x20, 0xff, 0x49, 0x1e, 0x70, 0x88, 0xe0, 0x0c, + 0x98, 0x03, 0x28, 0x08, 0xd1, 0x09, 0x20, 0x00, + 0x49, 0x21, 0x68, 0x09, 0x31, 0x80, 0x70, 0xc8, + 0x20, 0x00, 0x49, 0x1f, 0x68, 0x09, 0x31, 0x60, + 0x76, 0x88, 0x7d, 0x30, 0x07, 0xc0, 0x0f, 0xc0, + 0x28, 0x01, 0xd1, 0x03, 0x1c, 0x20, 0x49, 0x1c, + 0xf0, 0x00, 0xf9, 0x16, 0x20, 0x00, 0x70, 0xb0, + 0x20, 0x00, 0xb0, 0x04, 0xe6, 0x92, 0xb0, 0x01, + 0xb0, 0x03, 0xe6, 0x8f, 0xe6, 0x8e, 0x00, 0x00, + 0x2e, 0x08, 0x5d, 0xd8, 0x2e, 0x08, 0x5d, 0xd4, + 0x2e, 0x08, 0x5d, 0xcc, 0xff, 0xff, 0xdf, 0xff, + 0xff, 0xff, 0x3f, 0xff, 0x6a, 0x00, 0x00, 0x18, + 0x6c, 0x00, 0x00, 0x20, 0x00, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x5d, 0xe0, 0xff, 0xff, 0x1f, 0xff, + 0x2e, 0x08, 0x5e, 0x34, 0x2e, 0x08, 0x5d, 0xdc, + 0x00, 0x00, 0x20, 0x01, 0x2e, 0x08, 0x5e, 0x38, + 0x2e, 0x08, 0x5e, 0x04, 0xcc, 0x00, 0x0f, 0x00, + 0x66, 0x00, 0x00, 0x80, 0x2e, 0x08, 0x5e, 0x48, + 0x2e, 0x08, 0x5e, 0x4c, 0x00, 0x00, 0x20, 0xa0, + 0x2e, 0x08, 0x7c, 0x4c, 0x66, 0x00, 0x01, 0xf0, + 0xff, 0xff, 0x00, 0x00, 0xb5, 0xff, 0x98, 0x00, + 0x06, 0x01, 0x0e, 0x09, 0x98, 0x01, 0x06, 0x02, + 0x0e, 0x12, 0x98, 0x02, 0x04, 0x07, 0x0c, 0x3f, + 0x9b, 0x03, 0x04, 0x1c, 0x0c, 0x24, 0x29, 0x20, + 0xdb, 0x04, 0x20, 0xa2, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2a, 0x02, 0xd1, 0x0a, + 0x00, 0xc8, 0x4b, 0x1f, 0x68, 0x1b, 0x58, 0x18, + 0x4b, 0x1e, 0x40, 0x18, 0x00, 0xcb, 0x4d, 0x1c, + 0x68, 0x2d, 0x50, 0xe8, 0xe0, 0x30, 0x2a, 0x01, + 0xd1, 0x0b, 0x00, 0xc8, 0x4b, 0x18, 0x68, 0x1b, + 0x58, 0x18, 0x43, 0x27, 0x1c, 0x3b, 0x43, 0x18, + 0x00, 0xcb, 0x4d, 0x15, 0x68, 0x2d, 0x50, 0xe8, + 0xe0, 0x22, 0x20, 0x00, 0x28, 0x20, 0xdb, 0x04, + 0xe0, 0x1e, 0x1c, 0x43, 0x06, 0x1b, 0x16, 0x18, + 0xe7, 0xf8, 0x2a, 0x03, 0xd1, 0x0b, 0x00, 0xc3, + 0x4d, 0x0d, 0x68, 0x2d, 0x58, 0xeb, 0x1c, 0x3d, + 0x43, 0x25, 0x43, 0x1d, 0x00, 0xc3, 0x4e, 0x0a, + 0x68, 0x36, 0x50, 0xf5, 0xe0, 0x0b, 0x2a, 0x04, + 0xd1, 0x09, 0x00, 0xc3, 0x4d, 0x06, 0x68, 0x2d, + 0x58, 0xed, 0x4b, 0x06, 0x40, 0x2b, 0x00, 0xc5, + 0x4e, 0x03, 0x68, 0x36, 0x51, 0x73, 0xe7, 0xe0, + 0x20, 0x00, 0xe7, 0xbb, 0xe7, 0xba, 0x00, 0x00, + 0x2e, 0x08, 0x5d, 0xd8, 0xff, 0xff, 0xe1, 0xff, + 0xb4, 0xb0, 0x1c, 0x07, 0x1c, 0x0a, 0x06, 0x38, + 0x0e, 0x00, 0x06, 0x11, 0x0e, 0x09, 0x4c, 0x14, + 0x68, 0x25, 0x4b, 0x14, 0x40, 0x2b, 0x60, 0x23, + 0x28, 0x01, 0xd1, 0x06, 0x4c, 0x10, 0x68, 0x25, + 0x23, 0x01, 0x04, 0x1b, 0x43, 0x2b, 0x60, 0x23, + 0xe0, 0x07, 0x28, 0x00, 0xd1, 0x05, 0x4c, 0x0c, + 0x68, 0x25, 0x23, 0x01, 0x05, 0x9b, 0x43, 0x2b, + 0x60, 0x23, 0x29, 0x01, 0xd1, 0x06, 0x4c, 0x08, + 0x68, 0x25, 0x23, 0x01, 0x03, 0x9b, 0x43, 0x2b, + 0x60, 0x23, 0xe0, 0x07, 0x29, 0x02, 0xd1, 0x05, + 0x4c, 0x03, 0x68, 0x25, 0x23, 0x01, 0x03, 0xdb, + 0x43, 0x2b, 0x60, 0x23, 0xbc, 0xb0, 0x47, 0x70, + 0x64, 0x00, 0x00, 0x24, 0xff, 0xbe, 0x3f, 0xff, + 0xb5, 0xff, 0x1c, 0x1f, 0x9c, 0x09, 0xb0, 0x82, + 0x98, 0x02, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x00, + 0x99, 0x03, 0x06, 0x0a, 0x0e, 0x12, 0x98, 0x04, + 0x06, 0x05, 0x0e, 0x2d, 0x98, 0x0c, 0x06, 0x00, + 0x0e, 0x00, 0x90, 0x01, 0x00, 0xd0, 0x1a, 0x80, + 0x00, 0x80, 0x4b, 0x1b, 0x68, 0x1b, 0x18, 0xc1, + 0x2a, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x02, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2d, 0x1f, 0xdb, 0x02, 0x20, 0xaf, 0xb0, 0x02, + 0xe7, 0xf6, 0x71, 0x8d, 0x68, 0x3b, 0x00, 0xd0, + 0x4e, 0x12, 0x68, 0x36, 0x19, 0x80, 0x60, 0x43, + 0x1c, 0x20, 0x71, 0xc8, 0x20, 0x00, 0x80, 0x88, + 0x20, 0x00, 0x60, 0xc8, 0x98, 0x00, 0x23, 0x01, + 0x43, 0x18, 0x75, 0x08, 0x98, 0x01, 0x74, 0x88, + 0x60, 0x8f, 0x88, 0xb8, 0x82, 0x08, 0x20, 0x00, + 0x74, 0xc8, 0x88, 0xb8, 0x61, 0x38, 0x20, 0x00, + 0x73, 0x38, 0x20, 0x00, 0x73, 0x78, 0x20, 0x00, + 0x73, 0xb8, 0x20, 0x00, 0x73, 0xf8, 0x20, 0x00, + 0xb0, 0x02, 0xe7, 0xd1, 0xb0, 0x02, 0xe7, 0xcf, + 0x2e, 0x08, 0x5d, 0xcc, 0x2e, 0x08, 0x5d, 0xdc, + 0xb5, 0xf3, 0x98, 0x00, 0x06, 0x04, 0x0e, 0x24, + 0x99, 0x01, 0x04, 0x0d, 0x0c, 0x2d, 0x00, 0xe0, + 0x1b, 0x00, 0x00, 0x80, 0x49, 0x25, 0x68, 0x09, + 0x18, 0x47, 0x2c, 0x20, 0xdb, 0x04, 0x20, 0xa2, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x4b, 0x21, 0x42, 0x9d, 0xd1, 0x27, 0x00, 0xe1, + 0x4b, 0x20, 0x68, 0x1b, 0x18, 0xc8, 0x00, 0xa1, + 0x4b, 0x1f, 0x68, 0x1b, 0x18, 0xca, 0x68, 0x11, + 0x4b, 0x1e, 0x40, 0x19, 0x60, 0x11, 0x68, 0x01, + 0x23, 0x40, 0x40, 0x19, 0xd0, 0x13, 0x68, 0x01, + 0x23, 0x40, 0x43, 0xdb, 0x40, 0x19, 0x60, 0x01, + 0x21, 0x00, 0x4b, 0x19, 0x68, 0x1b, 0x70, 0x19, + 0x49, 0x18, 0x68, 0x0b, 0x08, 0x5b, 0x00, 0x5b, + 0x60, 0x0b, 0x49, 0x17, 0x68, 0x0e, 0x23, 0x01, + 0x05, 0x5b, 0x43, 0x33, 0x60, 0x0b, 0x68, 0x01, + 0x4b, 0x14, 0x40, 0x19, 0x60, 0x01, 0x20, 0x00, + 0x75, 0x38, 0x20, 0x00, 0x80, 0x38, 0x20, 0x00, + 0x80, 0xb8, 0x68, 0xb8, 0x72, 0x44, 0x20, 0xa0, + 0x68, 0xb9, 0x72, 0x08, 0x20, 0x00, 0x60, 0xb8, + 0x79, 0xb9, 0x20, 0x01, 0x40, 0x88, 0xf0, 0x11, + 0xf9, 0xc3, 0x20, 0x00, 0x71, 0xb8, 0x20, 0x00, + 0xe7, 0xba, 0xe7, 0xb9, 0x2e, 0x08, 0x5d, 0xcc, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x5d, 0xd8, + 0x2e, 0x08, 0x5d, 0xd4, 0xff, 0xff, 0xdf, 0xff, + 0x2e, 0x08, 0x5d, 0xc8, 0x6a, 0x00, 0x00, 0x18, + 0x6c, 0x00, 0x00, 0x20, 0xff, 0xff, 0x3f, 0xde, + 0xb5, 0xff, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, + 0x06, 0x28, 0x0e, 0x00, 0x06, 0x23, 0x0e, 0x1b, + 0x06, 0x39, 0x0e, 0x09, 0x9e, 0x03, 0x06, 0x36, + 0x16, 0x32, 0x28, 0x20, 0xda, 0x02, 0x4e, 0x08, + 0x68, 0x36, 0x60, 0x30, 0x4e, 0x07, 0x68, 0x36, + 0x60, 0x33, 0x4e, 0x07, 0x68, 0x36, 0x60, 0x31, + 0x4e, 0x06, 0x68, 0x36, 0x60, 0x32, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x5d, 0xf4, 0x2e, 0x08, 0x5d, 0xf8, + 0x2e, 0x08, 0x5d, 0xfc, 0x2e, 0x08, 0x5e, 0x00, + 0x1c, 0x01, 0x06, 0x08, 0x0e, 0x00, 0x28, 0x01, + 0xd1, 0x04, 0x22, 0x01, 0x4b, 0x04, 0x68, 0x1b, + 0x60, 0x1a, 0xe0, 0x03, 0x22, 0x02, 0x4b, 0x02, + 0x68, 0x1b, 0x60, 0x1a, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x3c, 0xb5, 0xf1, 0x98, 0x00, + 0x06, 0x04, 0x0e, 0x24, 0xb0, 0x81, 0x27, 0x00, + 0x26, 0x00, 0x4a, 0x55, 0x92, 0x00, 0x00, 0xe0, + 0x49, 0x54, 0x68, 0x09, 0x58, 0x08, 0x23, 0x03, + 0x03, 0x9b, 0x40, 0x18, 0x23, 0x01, 0x03, 0x9b, + 0x42, 0x98, 0xd0, 0x05, 0x20, 0xa0, 0xb0, 0x01, + 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0xe0, 0x49, 0x4c, 0x68, 0x09, 0x58, 0x08, + 0x21, 0x20, 0x43, 0x01, 0x00, 0xe0, 0x4a, 0x49, + 0x68, 0x12, 0x50, 0x11, 0x21, 0x00, 0x48, 0x48, + 0xf0, 0x05, 0xfc, 0x3c, 0x48, 0x47, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x01, 0xe0, 0x08, 0xe0, 0x82, + 0x20, 0x02, 0xf0, 0x0c, 0xf8, 0x75, 0x1c, 0x38, + 0x37, 0x01, 0x4b, 0x43, 0x42, 0x98, 0xd3, 0xf1, + 0x4b, 0x41, 0x42, 0x9f, 0xd3, 0x00, 0x26, 0xa1, + 0x48, 0x40, 0x68, 0x01, 0x4b, 0x40, 0x40, 0x19, + 0x60, 0x01, 0x20, 0x00, 0x00, 0xe1, 0x1b, 0x09, + 0x00, 0x89, 0x4a, 0x3e, 0x68, 0x12, 0x18, 0x89, + 0x70, 0x88, 0x20, 0x00, 0x43, 0xc0, 0x49, 0x3c, + 0x67, 0x48, 0x22, 0x00, 0xb4, 0x04, 0x1c, 0x20, + 0x23, 0x00, 0x22, 0x00, 0x49, 0x39, 0xf7, 0xff, + 0xfc, 0x69, 0xb0, 0x01, 0x27, 0x00, 0x25, 0x00, + 0x2d, 0x04, 0xdb, 0x02, 0xe0, 0x1e, 0x35, 0x01, + 0xe7, 0xfa, 0x00, 0xa9, 0x22, 0x0f, 0x1c, 0x10, + 0x40, 0x88, 0x01, 0x29, 0x9a, 0x00, 0x18, 0x89, + 0x68, 0x49, 0x42, 0xa1, 0xd1, 0x11, 0x21, 0x33, + 0x06, 0x49, 0x6b, 0xc9, 0x40, 0x01, 0xd0, 0x01, + 0x37, 0x01, 0xe0, 0x00, 0xe0, 0x02, 0x4b, 0x26, + 0x42, 0x9f, 0xd3, 0xf4, 0x4b, 0x24, 0x42, 0x9f, + 0xd3, 0x02, 0x26, 0xa1, 0xe0, 0x02, 0xe0, 0x3a, + 0x27, 0x00, 0xe7, 0xe0, 0x48, 0x26, 0x68, 0x01, + 0x23, 0xff, 0x33, 0x01, 0x43, 0x19, 0x60, 0x01, + 0x48, 0x21, 0x6d, 0x80, 0x49, 0x20, 0x65, 0x88, + 0x48, 0x1f, 0x6b, 0xc0, 0x23, 0x01, 0x07, 0x9b, + 0x40, 0x18, 0xd0, 0x00, 0xe7, 0xf8, 0x20, 0x33, + 0x06, 0x40, 0x6d, 0x40, 0x21, 0x33, 0x06, 0x49, + 0x66, 0x48, 0x20, 0x33, 0x06, 0x40, 0x6d, 0x80, + 0x21, 0x33, 0x06, 0x49, 0x66, 0x88, 0x20, 0x03, + 0x02, 0x00, 0x49, 0x15, 0x67, 0x48, 0x48, 0x11, + 0x68, 0x01, 0x23, 0x01, 0x02, 0x5b, 0x43, 0x19, + 0x60, 0x01, 0x20, 0x00, 0x49, 0x13, 0x65, 0x88, + 0x20, 0x00, 0x49, 0x12, 0x65, 0xc8, 0x20, 0x00, + 0x49, 0x10, 0x66, 0x08, 0x21, 0x00, 0x20, 0xff, + 0xf0, 0x05, 0xfb, 0xb8, 0x1c, 0x30, 0xb0, 0x01, + 0xe7, 0x66, 0xb0, 0x01, 0xe7, 0x64, 0xe7, 0x63, + 0x9e, 0x00, 0x00, 0xc0, 0x2e, 0x08, 0x5d, 0xd8, + 0x00, 0x00, 0x80, 0x0f, 0xcc, 0x00, 0x05, 0x00, + 0x00, 0x1e, 0x84, 0x80, 0x66, 0x00, 0x00, 0x4c, + 0xff, 0xff, 0xfd, 0xff, 0x2e, 0x08, 0x5d, 0xcc, + 0x66, 0x00, 0x00, 0x80, 0x00, 0x00, 0xff, 0xff, + 0x66, 0x00, 0x00, 0xe0, 0xcc, 0x00, 0x00, 0x00, + 0xb5, 0xf1, 0x98, 0x00, 0x06, 0x07, 0x0e, 0x3f, + 0xb0, 0x81, 0x25, 0x00, 0x26, 0x00, 0x4a, 0x2e, + 0x92, 0x00, 0x00, 0xf8, 0x49, 0x2d, 0x68, 0x09, + 0x58, 0x08, 0x23, 0x03, 0x03, 0x9b, 0x40, 0x18, + 0x23, 0x01, 0x03, 0xdb, 0x42, 0x98, 0xd0, 0x05, + 0x20, 0xa0, 0xb0, 0x01, 0xb0, 0x01, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x22, 0x00, 0xb4, 0x04, + 0x1c, 0x38, 0x23, 0x00, 0x22, 0x00, 0x49, 0x24, + 0xf7, 0xff, 0xfb, 0xd0, 0xb0, 0x01, 0x24, 0x00, + 0x2c, 0x04, 0xdb, 0x02, 0xe0, 0x1e, 0x34, 0x01, + 0xe7, 0xfa, 0x00, 0xa1, 0x22, 0x0f, 0x1c, 0x10, + 0x40, 0x88, 0x01, 0x21, 0x9a, 0x00, 0x18, 0x89, + 0x68, 0x49, 0x42, 0xb9, 0xd1, 0x11, 0x21, 0x33, + 0x06, 0x49, 0x6b, 0xc9, 0x40, 0x01, 0xd0, 0x01, + 0x35, 0x01, 0xe0, 0x00, 0xe0, 0x02, 0x4b, 0x17, + 0x42, 0x9d, 0xd3, 0xf4, 0x4b, 0x15, 0x42, 0x9d, + 0xd9, 0x02, 0x26, 0xa1, 0xe0, 0x02, 0xe0, 0x1d, + 0x25, 0x00, 0xe7, 0xe0, 0x20, 0x04, 0xf0, 0x02, + 0xff, 0xb7, 0x20, 0x01, 0x21, 0x33, 0x06, 0x49, + 0x66, 0xc8, 0x21, 0x00, 0x00, 0xf8, 0x4a, 0x0b, + 0x68, 0x12, 0x50, 0x11, 0x21, 0x00, 0x00, 0xf8, + 0x4a, 0x08, 0x68, 0x12, 0x18, 0x80, 0x60, 0x41, + 0x21, 0x00, 0x00, 0xb8, 0x4a, 0x08, 0x68, 0x12, + 0x50, 0x11, 0x1c, 0x30, 0xb0, 0x01, 0xe7, 0xb5, + 0xb0, 0x01, 0xe7, 0xb3, 0xe7, 0xb2, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0xc0, 0x2e, 0x08, 0x5d, 0xd8, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x01, 0xd4, 0xc0, + 0x2e, 0x08, 0x5d, 0xd4, 0xb5, 0xff, 0x99, 0x01, + 0x06, 0x0f, 0x0e, 0x3f, 0x9a, 0x02, 0x06, 0x15, + 0x0e, 0x2d, 0x9b, 0x03, 0x06, 0x1e, 0x0e, 0x36, + 0x2d, 0x1f, 0xdb, 0x04, 0x20, 0xaf, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x2f, 0x20, + 0xdb, 0x01, 0x20, 0xa2, 0xe7, 0xf7, 0x2e, 0x80, + 0xd0, 0x13, 0xf0, 0x11, 0xf8, 0x67, 0x1c, 0x04, + 0x1c, 0x39, 0x22, 0x80, 0x20, 0x01, 0xf0, 0x00, + 0xfb, 0x6d, 0x2c, 0x80, 0xd0, 0x01, 0xf0, 0x11, + 0xf8, 0x93, 0x98, 0x00, 0x21, 0x80, 0x68, 0x49, + 0x60, 0x08, 0x48, 0x09, 0x68, 0x00, 0x70, 0x05, + 0xe0, 0x0b, 0xf0, 0x11, 0xf8, 0x53, 0x1c, 0x04, + 0x1c, 0x39, 0x22, 0x80, 0x20, 0x02, 0xf0, 0x00, + 0xfb, 0x59, 0x2c, 0x80, 0xd0, 0x01, 0xf0, 0x11, + 0xf8, 0x7f, 0x20, 0x00, 0xe7, 0xd3, 0xe7, 0xd2, + 0x2e, 0x08, 0x5e, 0x24, 0xb5, 0xff, 0x99, 0x01, + 0x06, 0x0e, 0x0e, 0x36, 0x9a, 0x02, 0x06, 0x17, + 0x0e, 0x3f, 0x9b, 0x03, 0x06, 0x1c, 0x0e, 0x24, + 0xb0, 0x82, 0x20, 0x80, 0x40, 0x38, 0x90, 0x00, + 0x06, 0x7f, 0x0e, 0x7f, 0x2e, 0x1f, 0xdb, 0x05, + 0x20, 0xaf, 0xb0, 0x02, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2c, 0x20, 0xdb, 0x02, + 0x20, 0xa2, 0xb0, 0x02, 0xe7, 0xf6, 0x2f, 0x04, + 0xd1, 0x00, 0x27, 0x00, 0x00, 0xe0, 0x1b, 0x00, + 0x00, 0x80, 0x49, 0x17, 0x68, 0x09, 0x18, 0x40, + 0x90, 0x01, 0x98, 0x00, 0x28, 0x00, 0xd0, 0x0d, + 0xf0, 0x11, 0xf8, 0x18, 0x1c, 0x05, 0x1c, 0x21, + 0x22, 0x01, 0x02, 0x92, 0x20, 0x02, 0xf0, 0x00, + 0xfb, 0x1d, 0x2d, 0x80, 0xd0, 0x01, 0xf0, 0x11, + 0xf8, 0x43, 0xe0, 0x13, 0xf0, 0x11, 0xf8, 0x0a, + 0x1c, 0x05, 0x1c, 0x21, 0x22, 0x01, 0x02, 0x92, + 0x20, 0x01, 0xf0, 0x00, 0xfb, 0x0f, 0x2d, 0x80, + 0xd0, 0x01, 0xf0, 0x11, 0xf8, 0x35, 0x98, 0x02, + 0x21, 0x80, 0x68, 0x89, 0x60, 0x08, 0x20, 0x80, + 0x6a, 0x00, 0x55, 0xc6, 0x20, 0x00, 0xb0, 0x02, + 0xe7, 0xc4, 0xb0, 0x02, 0xe7, 0xc2, 0x00, 0x00, + 0x2e, 0x08, 0x5d, 0xcc, 0xb5, 0xff, 0xb0, 0x82, + 0x99, 0x03, 0x04, 0x0d, 0x0c, 0x2d, 0x9a, 0x04, + 0x06, 0x10, 0x0e, 0x00, 0x90, 0x00, 0x9b, 0x05, + 0x06, 0x18, 0x0e, 0x00, 0x90, 0x01, 0x98, 0x00, + 0x28, 0x1f, 0xdb, 0x05, 0x20, 0xaf, 0xb0, 0x02, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x98, 0x01, 0x23, 0x80, 0x40, 0x18, 0xd1, 0x2f, + 0x98, 0x00, 0x49, 0x2c, 0x68, 0x09, 0x73, 0x08, + 0x27, 0x00, 0x2f, 0x20, 0xdb, 0x04, 0xe0, 0x26, + 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, + 0x20, 0x01, 0x40, 0xb8, 0x99, 0x02, 0x40, 0x08, + 0xd0, 0x1c, 0x24, 0x00, 0x20, 0x40, 0x40, 0x28, + 0xd0, 0x04, 0x04, 0x20, 0x0c, 0x00, 0x24, 0x01, + 0x03, 0xa4, 0x43, 0x04, 0x20, 0x80, 0x40, 0x28, + 0xd0, 0x04, 0x04, 0x20, 0x0c, 0x00, 0x24, 0x01, + 0x03, 0xe4, 0x43, 0x04, 0xf0, 0x10, 0xff, 0xb2, + 0x1c, 0x06, 0x1c, 0x22, 0x1c, 0x39, 0x20, 0x01, + 0xf0, 0x00, 0xfa, 0xb8, 0x2e, 0x80, 0xd0, 0x01, + 0xf0, 0x10, 0xff, 0xde, 0xe7, 0xd8, 0xe0, 0x24, + 0x27, 0x00, 0x2f, 0x20, 0xdb, 0x04, 0xe0, 0x20, + 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, + 0x20, 0x01, 0x40, 0xb8, 0x99, 0x02, 0x40, 0x08, + 0xd0, 0x16, 0x24, 0x00, 0x20, 0x40, 0x40, 0x28, + 0xd0, 0x01, 0x4b, 0x0d, 0x40, 0x1c, 0x20, 0x80, + 0x40, 0x28, 0xd0, 0x01, 0x04, 0x64, 0x0c, 0x64, + 0xf0, 0x10, 0xff, 0x8c, 0x1c, 0x06, 0x1c, 0x22, + 0x1c, 0x39, 0x20, 0x02, 0xf0, 0x00, 0xfa, 0x92, + 0x2e, 0x80, 0xd0, 0x01, 0xf0, 0x10, 0xff, 0xb8, + 0xe7, 0xde, 0x20, 0x00, 0xb0, 0x02, 0xe7, 0x9f, + 0xb0, 0x02, 0xe7, 0x9d, 0x2e, 0x08, 0x5e, 0x18, + 0x00, 0x00, 0xbf, 0xff, 0xb5, 0x80, 0x1c, 0x07, + 0x48, 0x07, 0x68, 0x01, 0x20, 0x00, 0xf0, 0x19, + 0xfe, 0x51, 0x60, 0x38, 0x48, 0x04, 0x68, 0x00, + 0x1d, 0x01, 0x20, 0x00, 0xf0, 0x19, 0xfe, 0x4a, + 0x60, 0x78, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x5e, 0x18, 0xb5, 0xf7, 0x1c, 0x07, + 0x99, 0x01, 0x06, 0x0e, 0x0e, 0x36, 0x9a, 0x02, + 0x06, 0x14, 0x0e, 0x24, 0x2e, 0x1f, 0xdb, 0x04, + 0x20, 0xaf, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x2c, 0x20, 0xdb, 0x01, 0x20, 0xa2, + 0xe7, 0xf7, 0x20, 0x80, 0x40, 0x20, 0xd0, 0x0d, + 0xf0, 0x10, 0xff, 0x4c, 0x1c, 0x05, 0x1c, 0x21, + 0x22, 0x01, 0x02, 0xd2, 0x20, 0x02, 0xf0, 0x00, + 0xfa, 0x51, 0x2d, 0x80, 0xd0, 0x01, 0xf0, 0x10, + 0xff, 0x77, 0xe0, 0x16, 0x48, 0x0c, 0x68, 0x00, + 0x60, 0x07, 0x48, 0x0b, 0x68, 0x00, 0x71, 0x46, + 0x20, 0xff, 0x49, 0x09, 0x68, 0x09, 0x71, 0x08, + 0xf0, 0x10, 0xff, 0x34, 0x1c, 0x05, 0x1c, 0x21, + 0x22, 0x01, 0x02, 0xd2, 0x20, 0x01, 0xf0, 0x00, + 0xfa, 0x39, 0x2d, 0x80, 0xd0, 0x01, 0xf0, 0x10, + 0xff, 0x5f, 0x20, 0x00, 0xe7, 0xcd, 0xe7, 0xcc, + 0x2e, 0x08, 0x5e, 0x1c, 0xb5, 0xf7, 0x1c, 0x07, + 0x99, 0x01, 0x06, 0x0e, 0x0e, 0x36, 0x9a, 0x02, + 0x06, 0x14, 0x0e, 0x24, 0x2e, 0x1f, 0xdb, 0x04, + 0x20, 0xaf, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x2c, 0x20, 0xdb, 0x01, 0x20, 0xa2, + 0xe7, 0xf7, 0x20, 0x80, 0x40, 0x20, 0xd0, 0x0d, + 0xf0, 0x10, 0xff, 0x0c, 0x1c, 0x05, 0x1c, 0x21, + 0x22, 0x01, 0x03, 0x12, 0x20, 0x02, 0xf0, 0x00, + 0xfa, 0x11, 0x2d, 0x80, 0xd0, 0x01, 0xf0, 0x10, + 0xff, 0x37, 0xe0, 0x16, 0x48, 0x0c, 0x68, 0x00, + 0x60, 0x07, 0x48, 0x0b, 0x68, 0x00, 0x71, 0x46, + 0x20, 0xff, 0x49, 0x09, 0x68, 0x09, 0x71, 0x08, + 0xf0, 0x10, 0xfe, 0xf4, 0x1c, 0x05, 0x1c, 0x21, + 0x22, 0x01, 0x03, 0x12, 0x20, 0x01, 0xf0, 0x00, + 0xf9, 0xf9, 0x2d, 0x80, 0xd0, 0x01, 0xf0, 0x10, + 0xff, 0x1f, 0x20, 0x00, 0xe7, 0xcd, 0xe7, 0xcc, + 0x2e, 0x08, 0x5e, 0x20, 0xb5, 0xff, 0xb0, 0x81, + 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, + 0x99, 0x02, 0x06, 0x0d, 0x0e, 0x2d, 0x9a, 0x03, + 0x06, 0x16, 0x0e, 0x36, 0x9f, 0x04, 0x1c, 0x29, + 0x98, 0x00, 0xf0, 0x00, 0xf8, 0x91, 0x28, 0x00, + 0xd0, 0x05, 0x20, 0xa2, 0xb0, 0x01, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x79, 0x38, + 0x79, 0x79, 0x18, 0x40, 0x79, 0xb9, 0x18, 0x40, + 0x06, 0x04, 0x0e, 0x24, 0x79, 0xb8, 0x02, 0x00, + 0x43, 0x04, 0x00, 0x68, 0x19, 0x80, 0x01, 0x00, + 0x49, 0x15, 0x68, 0x09, 0x50, 0x0c, 0x9b, 0x04, + 0x88, 0x99, 0x00, 0x68, 0x19, 0x80, 0x01, 0x00, + 0x4a, 0x11, 0x68, 0x12, 0x18, 0x80, 0x60, 0x41, + 0x78, 0x78, 0x78, 0x39, 0x18, 0x40, 0x78, 0xb9, + 0x18, 0x40, 0x06, 0x04, 0x0e, 0x24, 0x78, 0xb8, + 0x02, 0x00, 0x43, 0x04, 0x00, 0x68, 0x19, 0x80, + 0x01, 0x00, 0x49, 0x09, 0x68, 0x09, 0x18, 0x40, + 0x60, 0x84, 0x9b, 0x04, 0x88, 0x19, 0x00, 0x68, + 0x19, 0x80, 0x01, 0x00, 0x4a, 0x04, 0x68, 0x12, + 0x18, 0x80, 0x60, 0xc1, 0x20, 0x00, 0xb0, 0x01, + 0xe7, 0xc5, 0xb0, 0x01, 0xe7, 0xc3, 0x00, 0x00, + 0x2e, 0x08, 0x5d, 0xd0, 0xb5, 0xff, 0x1c, 0x07, + 0x06, 0x3d, 0x0e, 0x2d, 0x99, 0x01, 0x06, 0x0c, + 0x0e, 0x24, 0x9a, 0x02, 0x06, 0x16, 0x0e, 0x36, + 0x1c, 0x21, 0x1c, 0x28, 0xf0, 0x00, 0xf8, 0x40, + 0x28, 0x00, 0xd0, 0x04, 0x20, 0xa2, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x9a, 0x03, + 0x1c, 0x31, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x02, + 0xe7, 0xf5, 0xe7, 0xf4, 0xb4, 0xf0, 0x1c, 0x04, + 0x1c, 0x0f, 0x1c, 0x13, 0x06, 0x21, 0x0e, 0x09, + 0x06, 0x3a, 0x0e, 0x12, 0x29, 0x10, 0xdb, 0x02, + 0x20, 0xa2, 0xbc, 0xf0, 0x47, 0x70, 0x88, 0xdd, + 0x00, 0x48, 0x18, 0x80, 0x01, 0x00, 0x4e, 0x0f, + 0x68, 0x36, 0x50, 0x35, 0x88, 0x98, 0x00, 0x4d, + 0x18, 0xad, 0x01, 0x2d, 0x4e, 0x0b, 0x68, 0x36, + 0x19, 0xad, 0x60, 0x68, 0x88, 0x58, 0x00, 0x4d, + 0x18, 0xad, 0x01, 0x2d, 0x4e, 0x07, 0x68, 0x36, + 0x19, 0xad, 0x60, 0xa8, 0x88, 0x18, 0x00, 0x4d, + 0x18, 0xad, 0x01, 0x2d, 0x4e, 0x03, 0x68, 0x36, + 0x19, 0xad, 0x60, 0xe8, 0x20, 0x00, 0xe7, 0xdc, + 0xe7, 0xdb, 0x00, 0x00, 0x2e, 0x08, 0x5d, 0xd0, + 0xb4, 0xb0, 0x1c, 0x07, 0x1c, 0x0a, 0x06, 0x39, + 0x0e, 0x09, 0x06, 0x15, 0x0e, 0x2d, 0xb0, 0x81, + 0x29, 0x20, 0xdb, 0x03, 0x20, 0xa2, 0xb0, 0x01, + 0xbc, 0xb0, 0x47, 0x70, 0x2d, 0x10, 0xdb, 0x02, + 0x20, 0xa2, 0xb0, 0x01, 0xe7, 0xf8, 0x00, 0xc8, + 0x4b, 0x0a, 0x68, 0x1b, 0x18, 0xc4, 0x68, 0x20, + 0x90, 0x00, 0x98, 0x00, 0x4b, 0x08, 0x40, 0x18, + 0x90, 0x00, 0x00, 0x68, 0x23, 0x1e, 0x40, 0x18, + 0x9b, 0x00, 0x43, 0x18, 0x90, 0x00, 0x98, 0x00, + 0x60, 0x20, 0x20, 0x00, 0xb0, 0x01, 0xe7, 0xe3, + 0xb0, 0x01, 0xe7, 0xe1, 0x2e, 0x08, 0x5d, 0xd8, + 0xff, 0xff, 0xdf, 0xe1, 0x20, 0xff, 0x49, 0x02, + 0x68, 0x09, 0x70, 0x08, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x34, 0xb4, 0xb0, 0x1c, 0x07, + 0x1c, 0x0a, 0xb0, 0x83, 0x20, 0x00, 0x43, 0xc0, + 0x23, 0x19, 0x06, 0x9b, 0x67, 0x58, 0x08, 0xb9, + 0x00, 0x89, 0x1a, 0x78, 0x90, 0x02, 0x98, 0x02, + 0x18, 0x10, 0x07, 0x80, 0x0f, 0x80, 0x90, 0x01, + 0x98, 0x02, 0x18, 0x10, 0x08, 0x80, 0x90, 0x00, + 0x9b, 0x02, 0x20, 0x03, 0x1a, 0xc0, 0x23, 0x19, + 0x06, 0x9b, 0x67, 0xd8, 0x24, 0x00, 0x98, 0x00, + 0x42, 0x84, 0xd3, 0x02, 0xe0, 0x06, 0x34, 0x01, + 0xe7, 0xf9, 0xc9, 0x08, 0x20, 0x19, 0x06, 0x80, + 0x67, 0x03, 0xe7, 0xf8, 0x98, 0x01, 0x28, 0x00, + 0xd0, 0x0b, 0x9b, 0x01, 0x00, 0xd8, 0x25, 0x00, + 0x43, 0xed, 0x40, 0xc5, 0x1c, 0x2b, 0x43, 0xdb, + 0x68, 0x0d, 0x40, 0x2b, 0x25, 0x19, 0x06, 0xad, + 0x67, 0x2b, 0x20, 0x19, 0x06, 0x80, 0x6f, 0x40, + 0xb0, 0x03, 0xbc, 0xb0, 0x47, 0x70, 0xb0, 0x03, + 0xe7, 0xfb, 0x1c, 0x01, 0x06, 0x08, 0x0e, 0x00, + 0x22, 0x19, 0x06, 0x92, 0x63, 0x90, 0x47, 0x70, + 0xb4, 0xf0, 0x48, 0x4d, 0x6a, 0x80, 0x07, 0xc0, + 0x0f, 0xc0, 0xd0, 0x74, 0x22, 0x00, 0x27, 0x00, + 0x49, 0x4a, 0x20, 0x00, 0x28, 0x20, 0xdb, 0x04, + 0xe0, 0x16, 0x1c, 0x43, 0x06, 0x18, 0x0e, 0x00, + 0xe7, 0xf8, 0x00, 0x83, 0x58, 0xcc, 0x23, 0x01, + 0x03, 0x5b, 0x40, 0x23, 0xd0, 0x0b, 0x24, 0x01, + 0x40, 0x84, 0x1c, 0x23, 0x43, 0x1f, 0x00, 0x83, + 0x58, 0xcc, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x9c, + 0x1c, 0x23, 0x00, 0x84, 0x51, 0x0b, 0xe7, 0xe8, + 0x20, 0x00, 0x28, 0x04, 0xdb, 0x04, 0xe0, 0x1a, + 0x1c, 0x43, 0x06, 0x18, 0x0e, 0x00, 0xe7, 0xf8, + 0x01, 0x05, 0x4b, 0x39, 0x18, 0xec, 0x22, 0x00, + 0x2a, 0x04, 0xdb, 0x04, 0xe0, 0x0e, 0x1c, 0x53, + 0x06, 0x1a, 0x0e, 0x12, 0xe7, 0xf8, 0x4b, 0x35, + 0x60, 0x23, 0x4b, 0x35, 0x60, 0x63, 0x23, 0x00, + 0x60, 0xa3, 0x23, 0x00, 0x60, 0xe3, 0x34, 0xff, + 0x34, 0x01, 0xe7, 0xf0, 0xe7, 0xe4, 0xb0, 0x82, + 0x4b, 0x2b, 0x69, 0xdc, 0x23, 0x0c, 0x40, 0x23, + 0x08, 0x9c, 0xab, 0x01, 0x70, 0x1c, 0x4b, 0x28, + 0x69, 0xdc, 0x23, 0x30, 0x40, 0x23, 0x09, 0x1c, + 0xab, 0x00, 0x70, 0x1c, 0xab, 0x01, 0x78, 0x1b, + 0xac, 0x00, 0x78, 0x24, 0x42, 0xa3, 0xd1, 0x09, + 0x23, 0x33, 0x06, 0x5b, 0x6b, 0xdb, 0x2b, 0x00, + 0xd1, 0x04, 0x4b, 0x1f, 0x6a, 0x9b, 0x07, 0xdb, + 0x0f, 0xdb, 0xd0, 0x21, 0x4b, 0x1c, 0x69, 0xdd, + 0x23, 0x0c, 0x40, 0x2b, 0x08, 0x9c, 0x00, 0xa5, + 0x26, 0x01, 0x40, 0xae, 0x1c, 0x33, 0x25, 0x33, + 0x06, 0x6d, 0x64, 0x2b, 0x25, 0x01, 0x40, 0xa5, + 0x1c, 0x2b, 0x4d, 0x1a, 0x63, 0xab, 0x4b, 0x14, + 0x69, 0xdd, 0x23, 0x0c, 0x40, 0x2b, 0x08, 0x9d, + 0xab, 0x01, 0x70, 0x1d, 0xe0, 0x00, 0xe0, 0x1d, + 0x4b, 0x0f, 0x69, 0xdd, 0x23, 0x30, 0x40, 0x2b, + 0x09, 0x1d, 0xab, 0x00, 0x70, 0x1d, 0xe7, 0xcd, + 0xb0, 0x02, 0x20, 0x00, 0x28, 0x20, 0xdb, 0x04, + 0xe0, 0x10, 0x1c, 0x43, 0x06, 0x18, 0x0e, 0x00, + 0xe7, 0xf8, 0x24, 0x01, 0x40, 0x84, 0x1c, 0x23, + 0x40, 0x3b, 0xd0, 0x06, 0x00, 0x83, 0x58, 0xcc, + 0x23, 0x01, 0x03, 0x5b, 0x43, 0x23, 0x00, 0x84, + 0x51, 0x0b, 0xe7, 0xee, 0xbc, 0xf0, 0x47, 0x70, + 0x66, 0x00, 0x01, 0x00, 0x64, 0x00, 0x00, 0x80, + 0x9e, 0x00, 0x00, 0xc0, 0x9e, 0x00, 0x00, 0x00, + 0x2e, 0x0f, 0x00, 0x00, 0x66, 0x00, 0x00, 0x80, + 0xb4, 0x80, 0x1c, 0x03, 0x1c, 0x0a, 0x48, 0x0a, + 0x68, 0x00, 0x68, 0x01, 0x20, 0x19, 0x06, 0x80, + 0x6a, 0x80, 0x0a, 0x40, 0x00, 0x4f, 0x43, 0x38, + 0x60, 0x18, 0x0f, 0xc8, 0x07, 0xc0, 0x60, 0x10, + 0x68, 0x10, 0x0f, 0xc0, 0x60, 0x10, 0x20, 0x00, + 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xfc, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x40, 0xb5, 0x80, 0x1c, 0x07, + 0x48, 0x05, 0x68, 0x00, 0x1d, 0xc1, 0x31, 0x01, + 0x20, 0x00, 0xf0, 0x19, 0xfb, 0xdb, 0x60, 0x38, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x18, 0xb4, 0xf0, 0x1c, 0x04, + 0x1c, 0x0f, 0x1c, 0x13, 0x06, 0x20, 0x0e, 0x00, + 0x06, 0x39, 0x0e, 0x09, 0x04, 0x1a, 0x0c, 0x12, + 0x4d, 0x07, 0x68, 0x2d, 0x70, 0xe8, 0x4d, 0x06, + 0x68, 0x2d, 0x70, 0xa9, 0x4d, 0x04, 0x68, 0x2d, + 0x80, 0x2a, 0x25, 0x01, 0x04, 0x2d, 0x26, 0x33, + 0x06, 0x76, 0x60, 0x35, 0xbc, 0xf0, 0x47, 0x70, + 0x2e, 0x08, 0x5e, 0x44, 0x20, 0x0d, 0x06, 0xc0, + 0x69, 0xc0, 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, + 0x31, 0x01, 0x23, 0x2d, 0x01, 0x1b, 0x42, 0x99, + 0xd9, 0x03, 0x20, 0x2d, 0x01, 0x00, 0x47, 0x70, + 0xe0, 0x01, 0x1c, 0x08, 0xe7, 0xfb, 0xe7, 0xfa, + 0xb5, 0xf3, 0xb0, 0x85, 0x20, 0x00, 0x90, 0x03, + 0x20, 0x00, 0x90, 0x02, 0x9f, 0x05, 0x69, 0x3d, + 0x69, 0x38, 0x28, 0x13, 0xd1, 0x05, 0x20, 0x75, + 0xb0, 0x05, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x99, 0x06, 0x68, 0x88, 0x68, 0x09, + 0x1a, 0x40, 0x1c, 0x41, 0x91, 0x04, 0x69, 0x78, + 0x23, 0x04, 0x40, 0x18, 0xd0, 0x02, 0x99, 0x04, + 0x08, 0x49, 0x91, 0x04, 0x00, 0xa8, 0x49, 0xf8, + 0x58, 0x08, 0x99, 0x04, 0x43, 0x48, 0x61, 0xf8, + 0x99, 0x06, 0x68, 0x88, 0x68, 0x09, 0x1a, 0x40, + 0x30, 0x01, 0x63, 0xb8, 0x68, 0xf8, 0x90, 0x01, + 0x48, 0xf2, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x06, + 0x98, 0x01, 0x28, 0x19, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x05, 0x98, 0x01, + 0x28, 0x08, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, + 0x20, 0x00, 0x28, 0x00, 0xd0, 0x07, 0x1d, 0xf8, + 0x30, 0x21, 0x99, 0x06, 0xf0, 0x02, 0xf9, 0xea, + 0x20, 0x00, 0xb0, 0x05, 0xe7, 0xc5, 0x49, 0xe6, + 0x20, 0x91, 0xf0, 0x19, 0xfb, 0x5b, 0x28, 0x92, + 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x0b, 0xfb, 0x64, + 0xe7, 0xf5, 0x98, 0x01, 0x00, 0x80, 0x49, 0xe1, + 0x58, 0x08, 0x99, 0x05, 0x42, 0x88, 0xd0, 0x05, + 0x20, 0x92, 0x49, 0xdd, 0x60, 0x08, 0x20, 0xff, + 0xb0, 0x05, 0xe7, 0xae, 0x48, 0xd9, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x03, 0x2d, 0x0b, 0xdb, 0x26, + 0x2d, 0x12, 0xdc, 0x24, 0x2d, 0x0b, 0xdb, 0x0b, + 0x2d, 0x12, 0xdc, 0x09, 0x48, 0xd6, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x05, 0x1d, 0xf8, 0x30, 0x21, + 0x99, 0x06, 0xf0, 0x02, 0xf9, 0xbb, 0xe0, 0x16, + 0x6b, 0x38, 0xf7, 0xff, 0xff, 0x7c, 0x90, 0x00, + 0x6a, 0xb9, 0x9a, 0x00, 0x48, 0xcf, 0xf0, 0x0c, + 0xfb, 0x4b, 0x1d, 0xf8, 0x30, 0x21, 0x99, 0x06, + 0xf0, 0x02, 0xf9, 0xac, 0x6b, 0x38, 0xf7, 0xff, + 0xff, 0x6e, 0x90, 0x00, 0x6a, 0xb9, 0x9a, 0x00, + 0x48, 0xc8, 0xf0, 0x0c, 0xfb, 0x6b, 0x48, 0xc8, + 0x68, 0x00, 0x99, 0x05, 0x42, 0x88, 0xd1, 0x30, + 0x48, 0xc0, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x2c, + 0x48, 0xc1, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x0a, + 0x20, 0x0d, 0x06, 0xc0, 0x68, 0xc0, 0x90, 0x02, + 0x98, 0x02, 0x28, 0x01, 0xd1, 0x03, 0x20, 0x00, + 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, 0x48, 0xba, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x0d, 0x6a, 0xb8, + 0x30, 0x01, 0x05, 0x00, 0x6a, 0xf9, 0x31, 0x01, + 0x02, 0x89, 0x43, 0x08, 0x6b, 0x79, 0x31, 0x02, + 0x43, 0x08, 0x21, 0x0d, 0x06, 0xc9, 0x61, 0x88, + 0xe0, 0x0b, 0x6a, 0xb8, 0x30, 0x01, 0x05, 0x00, + 0x6a, 0xf9, 0x31, 0x01, 0x02, 0x89, 0x43, 0x08, + 0x6b, 0x79, 0x31, 0x02, 0x43, 0x08, 0x49, 0xaf, + 0x60, 0x08, 0x2d, 0x0b, 0xdb, 0x15, 0x2d, 0x12, + 0xdc, 0x13, 0x48, 0xa9, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x0f, 0x48, 0xa4, 0x68, 0x00, 0x28, 0x00, + 0xd1, 0x0b, 0x20, 0x00, 0x62, 0xb8, 0x20, 0x00, + 0x62, 0xf8, 0x48, 0xa7, 0x63, 0x38, 0x48, 0xa7, + 0x63, 0x78, 0x6b, 0x38, 0xf7, 0xff, 0xff, 0x1b, + 0x90, 0x00, 0x48, 0x9c, 0x68, 0x00, 0x28, 0x00, + 0xd1, 0x16, 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, + 0x90, 0x03, 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, + 0x60, 0x88, 0xf0, 0x01, 0xfb, 0x07, 0x6b, 0x38, + 0xf7, 0xff, 0xff, 0x09, 0x90, 0x00, 0x9a, 0x00, + 0x99, 0x01, 0x1c, 0x38, 0xf0, 0x01, 0xfa, 0x8c, + 0x98, 0x03, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, + 0x48, 0x93, 0x68, 0x00, 0x99, 0x05, 0x42, 0x88, + 0xd1, 0x0b, 0x48, 0x8c, 0x68, 0x00, 0x28, 0x00, + 0xd1, 0x07, 0x48, 0x8d, 0x68, 0x00, 0x28, 0x00, + 0xd1, 0x03, 0x98, 0x02, 0x21, 0x0d, 0x06, 0xc9, + 0x60, 0xc8, 0x48, 0x86, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x73, 0x48, 0x87, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x6f, 0xb0, 0x84, 0x98, 0x05, 0xf0, 0x0c, + 0xf9, 0xe1, 0x28, 0x00, 0xd1, 0x0e, 0x2d, 0x0b, + 0xdb, 0x01, 0x2d, 0x12, 0xdd, 0x0a, 0x1d, 0xf8, + 0x30, 0x21, 0x99, 0x0a, 0xf0, 0x02, 0xf9, 0x12, + 0x20, 0x92, 0x49, 0x7b, 0x60, 0x08, 0x20, 0x00, + 0xb0, 0x09, 0xe6, 0xea, 0x49, 0x80, 0x20, 0x91, + 0xf0, 0x19, 0xfa, 0x80, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0xf0, 0x0c, 0xfa, 0x22, 0x20, 0x92, + 0x49, 0x7b, 0x60, 0x08, 0x20, 0x01, 0x49, 0x7b, + 0x68, 0x09, 0x60, 0x08, 0x2d, 0x0b, 0xdb, 0x39, + 0x2d, 0x12, 0xdc, 0x37, 0xb0, 0x81, 0x24, 0x00, + 0x20, 0x00, 0x90, 0x03, 0x20, 0x01, 0x49, 0x75, + 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, + 0x66, 0x88, 0x6a, 0xb8, 0x30, 0x01, 0x05, 0x00, + 0x6a, 0xf9, 0x31, 0x01, 0x02, 0x89, 0x43, 0x08, + 0x6b, 0x79, 0x31, 0x02, 0x43, 0x08, 0x90, 0x00, + 0x20, 0x00, 0x62, 0xb8, 0x20, 0x00, 0x62, 0xf8, + 0x48, 0x67, 0x63, 0x38, 0x48, 0x67, 0x63, 0x78, + 0x6b, 0x38, 0xf7, 0xff, 0xfe, 0x9c, 0x90, 0x02, + 0x48, 0x66, 0x68, 0x00, 0x23, 0x77, 0x01, 0x1b, + 0x18, 0xc0, 0x9a, 0x02, 0x1c, 0x39, 0xf0, 0x0b, + 0xfe, 0x05, 0x98, 0x00, 0x49, 0x61, 0x68, 0x09, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, 0x66, 0xc8, + 0x48, 0x5e, 0x68, 0x00, 0xf0, 0x0c, 0xf9, 0xf8, + 0xb0, 0x01, 0xe1, 0x2b, 0x24, 0x00, 0x26, 0x00, + 0x2e, 0x00, 0xd1, 0x16, 0x2c, 0x07, 0xd2, 0x14, + 0x6a, 0xf8, 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x20, + 0x34, 0x01, 0x00, 0x83, 0x18, 0x18, 0x00, 0xc0, + 0xe0, 0x00, 0xe1, 0x3c, 0x4a, 0x53, 0x68, 0x12, + 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, + 0x6f, 0xc0, 0x42, 0x81, 0xd1, 0x00, 0x26, 0x01, + 0xe7, 0xe6, 0x2e, 0x00, 0xd1, 0x13, 0x2c, 0x18, + 0xd2, 0x11, 0x6a, 0xf8, 0x05, 0x81, 0x0d, 0x89, + 0x1c, 0x20, 0x34, 0x01, 0x23, 0x4c, 0x43, 0x58, + 0x4a, 0x48, 0x68, 0x12, 0x18, 0x80, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x69, 0x40, 0x42, 0x81, + 0xd1, 0x00, 0x26, 0x01, 0xe7, 0xe9, 0x3c, 0x01, + 0x6b, 0x38, 0xf7, 0xff, 0xfe, 0x50, 0x90, 0x01, + 0x2c, 0x07, 0xd2, 0x05, 0x48, 0x3f, 0x68, 0x01, + 0x1c, 0x20, 0xf0, 0x0b, 0xfc, 0xcb, 0xe0, 0x06, + 0x2c, 0x18, 0xd2, 0x04, 0x1f, 0xe0, 0x49, 0x3b, + 0x68, 0x09, 0xf0, 0x0b, 0xfd, 0x01, 0x48, 0x3a, + 0x49, 0x38, 0x68, 0x09, 0x23, 0x09, 0x01, 0xdb, + 0x18, 0xc9, 0x66, 0xc8, 0x48, 0x36, 0x49, 0x35, + 0x68, 0x09, 0x23, 0x09, 0x01, 0xdb, 0x18, 0xc9, + 0x67, 0x08, 0x48, 0x33, 0x49, 0x31, 0x68, 0x09, + 0x23, 0x09, 0x01, 0xdb, 0x18, 0xc9, 0x66, 0x88, + 0x48, 0x2f, 0x49, 0x2e, 0x68, 0x09, 0x23, 0x09, + 0x01, 0xdb, 0x18, 0xc9, 0x66, 0x48, 0x20, 0x00, + 0x49, 0x2a, 0x68, 0x09, 0x23, 0x09, 0x01, 0xdb, + 0x18, 0xc9, 0x64, 0x88, 0x6b, 0x79, 0x48, 0x27, + 0x68, 0x00, 0xf0, 0x0b, 0xfd, 0x4b, 0x94, 0x02, + 0x1d, 0xf8, 0x30, 0x21, 0x99, 0x0a, 0xf0, 0x02, + 0xf8, 0x4d, 0x24, 0x00, 0x26, 0x00, 0x2e, 0x00, + 0xd1, 0x14, 0x2c, 0x07, 0xd2, 0x12, 0x6a, 0xf8, + 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x20, 0x34, 0x01, + 0x00, 0x83, 0x18, 0x18, 0x00, 0xc0, 0x4a, 0x1b, + 0x68, 0x12, 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, + 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0x81, 0xda, 0x00, + 0x26, 0x01, 0xe7, 0xe8, 0x2e, 0x00, 0xd1, 0x2f, + 0x2c, 0x18, 0xd2, 0x2d, 0x6a, 0xf8, 0x05, 0x81, + 0x0d, 0x89, 0x1c, 0x20, 0x34, 0x01, 0x23, 0x4c, + 0x43, 0x58, 0x4a, 0x10, 0x68, 0x12, 0x18, 0x80, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x69, 0x40, + 0x42, 0x81, 0xda, 0x1c, 0xe0, 0x1a, 0x00, 0x00, + 0x2e, 0x03, 0x32, 0xf4, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x7c, 0xc8, 0x2e, 0x08, 0x7c, 0x60, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x7d, 0x9c, + 0x2e, 0x08, 0x7c, 0xc4, 0x2e, 0x08, 0x5e, 0x54, + 0x00, 0x00, 0x02, 0xcf, 0x00, 0x00, 0x02, 0x3f, + 0x2e, 0x08, 0x94, 0x90, 0x2e, 0x08, 0x7d, 0xbc, + 0x00, 0x00, 0xff, 0xff, 0x26, 0x01, 0xe7, 0xcd, + 0x3c, 0x01, 0x6b, 0x38, 0xf7, 0xff, 0xfd, 0xc3, + 0x90, 0x01, 0x2c, 0x07, 0xd2, 0x12, 0x48, 0x48, + 0x68, 0x01, 0x1c, 0x20, 0xf0, 0x0b, 0xfb, 0xcc, + 0x00, 0xa0, 0x19, 0x00, 0x00, 0xc0, 0x49, 0x44, + 0x68, 0x09, 0x18, 0x40, 0x23, 0x2b, 0x01, 0x5b, + 0x18, 0xc0, 0x9a, 0x01, 0x1c, 0x39, 0xf0, 0x0b, + 0xfd, 0x21, 0xe0, 0x4a, 0x2c, 0x18, 0xd2, 0x48, + 0x1f, 0xe0, 0x49, 0x3d, 0x68, 0x09, 0xf0, 0x0b, + 0xfc, 0x0b, 0x20, 0x4c, 0x43, 0x60, 0x49, 0x3a, + 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x0a, 0x9a, 0x01, 0x1c, 0x39, 0xf0, 0x0b, + 0xfd, 0x0d, 0x20, 0x4c, 0x43, 0x60, 0x49, 0x34, + 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x82, 0x6f, 0xc0, 0x28, 0x00, 0xd0, 0x17, + 0x20, 0x4c, 0x43, 0x60, 0x49, 0x2e, 0x68, 0x09, + 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, + 0x68, 0x00, 0x04, 0x00, 0x0c, 0x00, 0xd0, 0x0b, + 0x20, 0x4c, 0x43, 0x60, 0x49, 0x28, 0x68, 0x09, + 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, + 0x68, 0x00, 0x0c, 0x00, 0x04, 0x00, 0xd1, 0x0a, + 0x20, 0x02, 0x21, 0x4c, 0x43, 0x61, 0x4a, 0x22, + 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, + 0x39, 0x82, 0x67, 0x48, 0xe0, 0x09, 0x20, 0x03, + 0x21, 0x4c, 0x43, 0x61, 0x4a, 0x1c, 0x68, 0x12, + 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, 0x39, 0x82, + 0x67, 0x48, 0x48, 0x19, 0x68, 0x00, 0xf0, 0x0c, + 0xf8, 0xcf, 0x6b, 0x79, 0x48, 0x16, 0x68, 0x00, + 0xf0, 0x0b, 0xfc, 0x36, 0x98, 0x02, 0x42, 0x84, + 0xda, 0x01, 0x1c, 0x21, 0xe0, 0x00, 0x99, 0x02, + 0x91, 0x00, 0x99, 0x00, 0x48, 0x10, 0x68, 0x00, + 0xf0, 0x0b, 0xfd, 0x46, 0x49, 0x0f, 0x20, 0x91, + 0xf0, 0x19, 0xf8, 0xfc, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0x48, 0x0b, 0x68, 0x00, 0x90, 0x03, + 0x48, 0x0b, 0x68, 0x00, 0x49, 0x08, 0x60, 0x08, + 0x98, 0x03, 0x49, 0x09, 0x60, 0x08, 0x20, 0x92, + 0x49, 0x06, 0x60, 0x08, 0xb0, 0x04, 0x20, 0x92, + 0x49, 0x06, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x05, + 0xe5, 0x4b, 0xb0, 0x05, 0xe5, 0x49, 0x00, 0x00, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xc0, 0x2e, 0x08, 0x7c, 0xc8, + 0xb5, 0xff, 0x1c, 0x07, 0x9d, 0x09, 0xb0, 0x89, + 0x26, 0x00, 0x20, 0x00, 0x90, 0x03, 0x99, 0x0a, + 0x68, 0x4c, 0x2d, 0x13, 0xd1, 0x05, 0x20, 0x75, + 0xb0, 0x09, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x98, 0x15, 0x60, 0x04, 0x20, 0x00, + 0x60, 0xe0, 0x20, 0x00, 0x61, 0x20, 0x69, 0x60, + 0x4b, 0xf9, 0x40, 0x18, 0x61, 0x60, 0x02, 0x00, + 0x69, 0x60, 0x4b, 0xf8, 0x40, 0x18, 0x61, 0x60, + 0x04, 0x80, 0x69, 0x60, 0x4b, 0xf6, 0x40, 0x18, + 0x61, 0x60, 0x05, 0x80, 0x69, 0x60, 0x23, 0xc0, + 0x43, 0xdb, 0x40, 0x18, 0x61, 0x60, 0x06, 0x00, + 0x69, 0x60, 0x4b, 0xf2, 0x40, 0x18, 0x61, 0x60, + 0x04, 0x40, 0x69, 0x60, 0x23, 0x20, 0x43, 0xdb, + 0x40, 0x18, 0x61, 0x60, 0x06, 0x80, 0x69, 0x60, + 0x09, 0x40, 0x01, 0x40, 0x61, 0x60, 0x06, 0xc0, + 0x20, 0x00, 0x61, 0xa0, 0x20, 0x00, 0x61, 0xe0, + 0x20, 0x00, 0x62, 0x20, 0x20, 0x00, 0x62, 0x60, + 0x20, 0x00, 0x63, 0xa0, 0x20, 0x00, 0x63, 0xe0, + 0x20, 0x00, 0x64, 0x60, 0x20, 0x00, 0x64, 0x20, + 0x20, 0x00, 0x60, 0x20, 0x20, 0x00, 0x71, 0x20, + 0x99, 0x0a, 0x68, 0x48, 0x64, 0xe0, 0x99, 0x0a, + 0x68, 0x08, 0x64, 0xa0, 0x1d, 0xe0, 0x30, 0x21, + 0x99, 0x13, 0xf0, 0x01, 0xff, 0x07, 0x2d, 0x0b, + 0xdb, 0x06, 0x2d, 0x12, 0xdc, 0x04, 0x1d, 0xe0, + 0x30, 0x49, 0x99, 0x13, 0xf0, 0x01, 0xfe, 0xfe, + 0x6b, 0x20, 0x6a, 0xa1, 0x1a, 0x40, 0x30, 0x01, + 0x63, 0xa0, 0x00, 0xa8, 0x49, 0xd4, 0x58, 0x08, + 0x69, 0x61, 0x09, 0x49, 0x01, 0x49, 0x06, 0xc0, + 0x0e, 0xc0, 0x43, 0x08, 0x61, 0x60, 0x06, 0xc0, + 0x0e, 0xc0, 0x6b, 0x20, 0x6a, 0xa1, 0x1a, 0x40, + 0x1c, 0x41, 0x91, 0x04, 0x69, 0x60, 0x23, 0x04, + 0x40, 0x18, 0xd0, 0x02, 0x99, 0x04, 0x08, 0x49, + 0x91, 0x04, 0x00, 0xa8, 0x49, 0xc9, 0x58, 0x08, + 0x99, 0x04, 0x43, 0x48, 0x61, 0xe0, 0x2d, 0x13, + 0xd1, 0x04, 0x20, 0x00, 0x90, 0x14, 0x20, 0x00, + 0x61, 0xa0, 0xe0, 0x13, 0x9b, 0x0c, 0x68, 0x58, + 0x90, 0x01, 0x98, 0x01, 0x08, 0x80, 0x61, 0xa0, + 0x98, 0x01, 0x64, 0x60, 0x9b, 0x0c, 0x68, 0x18, + 0x64, 0x20, 0x20, 0x00, 0x62, 0x60, 0x9a, 0x0b, + 0x63, 0xe2, 0x69, 0x60, 0x4b, 0xb6, 0x40, 0x18, + 0x61, 0x60, 0x02, 0x00, 0x69, 0x60, 0x4b, 0xb6, + 0x40, 0x18, 0x61, 0x60, 0x05, 0x80, 0x69, 0x60, + 0x23, 0x0f, 0x02, 0x9b, 0x43, 0x18, 0x61, 0x60, + 0x04, 0x80, 0x69, 0x60, 0x23, 0x20, 0x43, 0xdb, + 0x40, 0x18, 0x61, 0x60, 0x06, 0x80, 0x69, 0x60, + 0x23, 0xc0, 0x43, 0x18, 0x61, 0x60, 0x06, 0x00, + 0x69, 0x60, 0x23, 0x01, 0x03, 0x9b, 0x43, 0x18, + 0x61, 0x60, 0x04, 0x40, 0x98, 0x14, 0x60, 0xe0, + 0x61, 0x25, 0x48, 0xab, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x06, 0x98, 0x14, 0x28, 0x19, 0xd3, 0x01, + 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x05, + 0x98, 0x14, 0x28, 0x08, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, + 0x20, 0x00, 0xb0, 0x09, 0xe7, 0x35, 0x49, 0xa1, + 0x20, 0x91, 0xf0, 0x18, 0xff, 0xff, 0x28, 0x92, + 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x0b, 0xf8, 0x08, + 0xe7, 0xf5, 0x48, 0x9d, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x53, 0x68, 0x38, 0x01, 0x80, 0x0f, 0xc0, + 0x68, 0xa1, 0x4b, 0x9a, 0x40, 0x19, 0x07, 0xc0, + 0x09, 0x80, 0x43, 0x08, 0x60, 0xa0, 0x01, 0x80, + 0x0f, 0xc0, 0x68, 0x38, 0x01, 0xc0, 0x0f, 0xc0, + 0x68, 0xa1, 0x4b, 0x95, 0x40, 0x19, 0x07, 0xc0, + 0x09, 0xc0, 0x43, 0x08, 0x60, 0xa0, 0x01, 0xc0, + 0x0f, 0xc0, 0x68, 0x38, 0x02, 0x00, 0x0e, 0x00, + 0x68, 0xa1, 0x4b, 0x85, 0x40, 0x19, 0x06, 0x00, + 0x0e, 0x00, 0x04, 0x00, 0x43, 0x08, 0x60, 0xa0, + 0x02, 0x00, 0x0e, 0x00, 0x48, 0x86, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x2a, 0x2f, 0x00, 0xd0, 0x28, + 0x20, 0x0d, 0x06, 0xc0, 0x6a, 0x00, 0x1c, 0x06, + 0x68, 0x38, 0x4b, 0x85, 0x43, 0x98, 0xd0, 0x06, + 0x68, 0x38, 0x02, 0x00, 0x0e, 0x01, 0x20, 0x01, + 0x40, 0x88, 0x43, 0x06, 0xe0, 0x05, 0x68, 0x38, + 0x02, 0x00, 0x0e, 0x00, 0x21, 0x01, 0x40, 0x81, + 0x43, 0x8e, 0x68, 0x38, 0x4b, 0x7b, 0x43, 0x98, + 0xd0, 0x08, 0x68, 0x38, 0x02, 0x00, 0x0e, 0x00, + 0x1d, 0xc1, 0x31, 0x01, 0x20, 0x01, 0x40, 0x88, + 0x43, 0x06, 0xe0, 0x06, 0x68, 0x38, 0x02, 0x00, + 0x0e, 0x00, 0x30, 0x08, 0x21, 0x01, 0x40, 0x81, + 0x43, 0x8e, 0x2d, 0x0b, 0xdb, 0x0a, 0x2d, 0x12, + 0xdc, 0x08, 0x48, 0x6f, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x04, 0x20, 0x51, 0x01, 0x00, 0x21, 0x0d, + 0x06, 0xc9, 0x60, 0x08, 0x98, 0x14, 0x00, 0x80, + 0x49, 0x6c, 0x58, 0x08, 0x28, 0x00, 0xd0, 0x01, + 0x20, 0x83, 0x90, 0x03, 0x2d, 0x0b, 0xdb, 0x08, + 0x2d, 0x12, 0xdc, 0x06, 0x48, 0x68, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x01, 0x20, 0x84, 0x90, 0x03, + 0xe0, 0x06, 0x9a, 0x0b, 0x2a, 0x01, 0xd1, 0x03, + 0x2d, 0x13, 0xd0, 0x01, 0x20, 0x82, 0x90, 0x03, + 0x98, 0x03, 0x28, 0x00, 0xd0, 0x07, 0x20, 0x92, + 0x49, 0x5a, 0x60, 0x08, 0x20, 0x08, 0x60, 0xe0, + 0x98, 0x03, 0xb0, 0x09, 0xe6, 0xa1, 0x98, 0x15, + 0x68, 0x01, 0x98, 0x14, 0x00, 0x80, 0x4a, 0x59, + 0x50, 0x11, 0x6a, 0xa0, 0x28, 0x00, 0xda, 0x01, + 0x20, 0x00, 0x62, 0xa0, 0x6b, 0x20, 0x28, 0x00, + 0xdc, 0x01, 0x20, 0x01, 0x63, 0x20, 0x6a, 0xe0, + 0x28, 0x00, 0xda, 0x01, 0x20, 0x00, 0x62, 0xe0, + 0x6b, 0x60, 0x4b, 0x52, 0x42, 0x98, 0xdd, 0x01, + 0x48, 0x50, 0x63, 0x60, 0x6b, 0x20, 0xf7, 0xff, + 0xfb, 0x9e, 0x90, 0x00, 0x2d, 0x13, 0xd1, 0x05, + 0x6a, 0xa1, 0x9a, 0x00, 0x48, 0x4c, 0xf0, 0x0b, + 0xff, 0x99, 0xe0, 0x15, 0x2d, 0x0b, 0xdb, 0x01, + 0x2d, 0x12, 0xdd, 0x03, 0x48, 0x40, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x0d, 0x2d, 0x0b, 0xdb, 0x06, + 0x2d, 0x12, 0xdc, 0x04, 0x48, 0x3e, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x00, 0xe0, 0x04, 0x6a, 0xa1, + 0x9a, 0x00, 0x48, 0x41, 0xf0, 0x0b, 0xff, 0x82, + 0x2d, 0x0b, 0xdb, 0x5f, 0x2d, 0x12, 0xdc, 0x5e, + 0x98, 0x15, 0x68, 0x00, 0x49, 0x3a, 0x60, 0x08, + 0x99, 0x13, 0xa8, 0x05, 0xf0, 0x01, 0xfd, 0xae, + 0xa9, 0x05, 0x98, 0x15, 0x68, 0x00, 0xf0, 0x05, + 0xfc, 0x5f, 0x1d, 0xe0, 0x30, 0x21, 0xa9, 0x05, + 0xf0, 0x01, 0xfd, 0xa4, 0x20, 0x01, 0x49, 0x35, + 0x65, 0x08, 0x20, 0x02, 0x21, 0x0d, 0x06, 0xc9, + 0x60, 0xc8, 0x21, 0x00, 0x20, 0x02, 0xf0, 0x04, + 0xfa, 0xdd, 0x2d, 0x0b, 0xd0, 0x05, 0x2d, 0x0f, + 0xd0, 0x03, 0x2d, 0x10, 0xd0, 0x01, 0x2d, 0x11, + 0xd1, 0x03, 0x21, 0x00, 0x20, 0x12, 0xf0, 0x04, + 0xfa, 0xd1, 0x2d, 0x0c, 0xd0, 0x01, 0x2d, 0x0f, + 0xd1, 0x03, 0x21, 0x00, 0x20, 0x04, 0xf0, 0x04, + 0xfa, 0xc9, 0x2d, 0x0d, 0xd0, 0x01, 0x2d, 0x10, + 0xd1, 0x03, 0x21, 0x00, 0x20, 0x08, 0xf0, 0x04, + 0xfa, 0xc1, 0x2d, 0x0e, 0xd0, 0x01, 0x2d, 0x11, + 0xd1, 0x03, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x04, + 0xfa, 0xb9, 0x48, 0x15, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x73, 0xb0, 0x82, 0x49, 0x1c, 0x20, 0x91, + 0xf0, 0x18, 0xfe, 0xe4, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0xf0, 0x0b, 0xfe, 0x86, 0x20, 0x92, + 0x49, 0x17, 0x60, 0x08, 0x20, 0x01, 0x49, 0x17, + 0x68, 0x09, 0x60, 0x08, 0x20, 0x01, 0x49, 0x15, + 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, + 0x66, 0x88, 0xe0, 0x25, 0xe0, 0xae, 0xe0, 0xad, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, + 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xbf, 0xff, + 0x2e, 0x03, 0x32, 0xa4, 0x2e, 0x03, 0x32, 0xf4, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x60, 0x8c, 0xfd, 0xff, 0xff, 0xff, + 0xfe, 0xff, 0xff, 0xff, 0x2e, 0x08, 0x7c, 0x60, + 0x2e, 0x08, 0x7c, 0xc4, 0x00, 0x00, 0x02, 0x3f, + 0x2e, 0x08, 0x7d, 0x9c, 0xcc, 0x00, 0x00, 0x00, + 0x2e, 0x08, 0x94, 0x90, 0x2e, 0x08, 0x7d, 0xbc, + 0x6a, 0xa0, 0x30, 0x01, 0x05, 0x00, 0x6a, 0xe1, + 0x31, 0x01, 0x02, 0x89, 0x43, 0x08, 0x6b, 0x61, + 0x31, 0x02, 0x43, 0x08, 0x90, 0x00, 0x20, 0x00, + 0x62, 0xa0, 0x20, 0x00, 0x62, 0xe0, 0x48, 0x5f, + 0x63, 0x20, 0x48, 0x5f, 0x63, 0x60, 0x6b, 0x20, + 0xf7, 0xff, 0xfa, 0xe1, 0x90, 0x02, 0x48, 0x5d, + 0x68, 0x00, 0x23, 0x77, 0x01, 0x1b, 0x18, 0xc0, + 0x9a, 0x02, 0x1c, 0x21, 0xf0, 0x0b, 0xfa, 0x4a, + 0x98, 0x00, 0x49, 0x58, 0x68, 0x09, 0x23, 0x07, + 0x02, 0x1b, 0x18, 0xc9, 0x66, 0xc8, 0x48, 0x55, + 0x68, 0x00, 0x21, 0x00, 0xf0, 0x0b, 0xfa, 0xc4, + 0x48, 0x52, 0x68, 0x00, 0xf0, 0x0b, 0xfe, 0x38, + 0x49, 0x51, 0x20, 0x91, 0xf0, 0x18, 0xfe, 0x76, + 0xe0, 0x00, 0xe0, 0x11, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf6, 0x48, 0x4c, 0x68, 0x00, 0x90, 0x01, + 0x48, 0x4c, 0x68, 0x00, 0x49, 0x49, 0x60, 0x08, + 0x98, 0x01, 0x49, 0x4a, 0x60, 0x08, 0x20, 0x92, + 0x49, 0x47, 0x60, 0x08, 0xb0, 0x02, 0xe0, 0x40, + 0x48, 0x47, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x0c, + 0x6a, 0xa0, 0x30, 0x01, 0x05, 0x00, 0x6a, 0xe1, + 0x31, 0x01, 0x02, 0x89, 0x43, 0x08, 0x6b, 0x61, + 0x31, 0x02, 0x43, 0x08, 0x49, 0x41, 0x60, 0x08, + 0xe0, 0x0c, 0x6a, 0xa0, 0x30, 0x01, 0x05, 0x00, + 0x6a, 0xe1, 0x31, 0x01, 0x02, 0x89, 0x43, 0x08, + 0x6b, 0x61, 0x31, 0x02, 0x43, 0x08, 0x21, 0x0d, + 0x06, 0xc9, 0x61, 0x88, 0x20, 0x0d, 0x06, 0xc0, + 0x68, 0x80, 0x90, 0x02, 0x20, 0x00, 0x21, 0x0d, + 0x06, 0xc9, 0x60, 0x88, 0xf0, 0x00, 0xfe, 0x82, + 0x48, 0x33, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x07, + 0x20, 0x00, 0x62, 0xa0, 0x20, 0x00, 0x62, 0xe0, + 0x48, 0x2a, 0x63, 0x20, 0x48, 0x2a, 0x63, 0x60, + 0x6b, 0x20, 0xf7, 0xff, 0xfa, 0x78, 0x90, 0x00, + 0x9a, 0x00, 0x99, 0x14, 0x1c, 0x20, 0xf0, 0x00, + 0xfd, 0xfb, 0x98, 0x02, 0x21, 0x0d, 0x06, 0xc9, + 0x60, 0x88, 0xe0, 0x05, 0x2d, 0x13, 0xd1, 0x03, + 0x20, 0x1f, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x08, + 0x2d, 0x0b, 0xdb, 0x01, 0x2d, 0x12, 0xdd, 0x1a, + 0x48, 0x23, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x16, + 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, 0x90, 0x02, + 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, + 0xf0, 0x00, 0xfe, 0x50, 0x6b, 0x20, 0xf7, 0xff, + 0xfa, 0x52, 0x90, 0x00, 0x9a, 0x00, 0x99, 0x14, + 0x1c, 0x20, 0xf0, 0x00, 0xfd, 0xd5, 0x98, 0x02, + 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, 0x48, 0x14, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x06, 0x48, 0x14, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x02, 0x20, 0x0d, + 0x06, 0xc0, 0x62, 0x06, 0x48, 0x0e, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x07, 0x48, 0x0e, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x03, 0x98, 0x14, 0x21, 0x00, + 0xf0, 0x0b, 0xfd, 0x0a, 0x20, 0x92, 0x49, 0x0b, + 0x60, 0x08, 0x20, 0x00, 0xb0, 0x09, 0xe5, 0x10, + 0xb0, 0x09, 0xe5, 0x0e, 0x00, 0x00, 0x02, 0xcf, + 0x00, 0x00, 0x02, 0x3f, 0x2e, 0x08, 0x7d, 0xbc, + 0x2e, 0x08, 0x94, 0x90, 0x2e, 0x08, 0x7d, 0xc0, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x5e, 0x54, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0xb5, 0xf7, 0xb0, 0x83, 0x9f, 0x03, 0x69, 0x38, + 0x90, 0x00, 0x98, 0x00, 0x28, 0x13, 0xd1, 0x05, + 0x20, 0x75, 0xb0, 0x03, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x6c, 0x78, 0x99, 0x04, + 0x60, 0x48, 0x6c, 0x38, 0x99, 0x04, 0x60, 0x08, + 0x6c, 0xf8, 0x9a, 0x05, 0x60, 0x50, 0x6c, 0xb8, + 0x9a, 0x05, 0x60, 0x10, 0x68, 0xfd, 0x48, 0xf9, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2d, 0x19, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0xe0, 0x04, 0x2d, 0x08, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, + 0x20, 0x00, 0xb0, 0x03, 0xe7, 0xda, 0x49, 0xf0, + 0x20, 0x91, 0xf0, 0x18, 0xfd, 0x97, 0x28, 0x92, + 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x0a, 0xfd, 0xa0, + 0xe7, 0xf5, 0x00, 0xa8, 0x49, 0xeb, 0x58, 0x08, + 0x99, 0x03, 0x42, 0x88, 0xd0, 0x05, 0x20, 0x92, + 0x49, 0xe7, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x03, + 0xe7, 0xc4, 0x21, 0x00, 0x00, 0xa8, 0x4a, 0xe5, + 0x50, 0x11, 0x48, 0xe2, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x05, 0x69, 0x38, 0x28, 0x0b, 0xdb, 0x16, + 0x69, 0x38, 0x28, 0x12, 0xdc, 0x13, 0x48, 0xe0, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x06, 0x69, 0x38, + 0x28, 0x0b, 0xdb, 0x03, 0x69, 0x38, 0x28, 0x12, + 0xdc, 0x00, 0xe0, 0x08, 0x6b, 0x38, 0xf7, 0xff, + 0xf9, 0xb6, 0x90, 0x01, 0x6a, 0xb9, 0x9a, 0x01, + 0x48, 0xd8, 0xf0, 0x0b, 0xfd, 0x85, 0x69, 0x38, + 0x28, 0x0b, 0xdb, 0x2e, 0x69, 0x38, 0x28, 0x12, + 0xdc, 0x2b, 0x48, 0xd0, 0x68, 0x00, 0x28, 0x00, + 0xd1, 0x27, 0x20, 0x00, 0x49, 0xd2, 0x65, 0x08, + 0x20, 0x01, 0x03, 0x00, 0x49, 0xd0, 0x65, 0x48, + 0x20, 0x00, 0x49, 0xcf, 0x65, 0x88, 0x20, 0x00, + 0x49, 0xcd, 0x65, 0xc8, 0x20, 0x00, 0x49, 0xcc, + 0x66, 0x08, 0x20, 0x00, 0x49, 0xcb, 0x60, 0x08, + 0x20, 0x02, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, + 0x21, 0x00, 0x20, 0x02, 0xf0, 0x04, 0xf9, 0x0a, + 0x48, 0xc3, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x04, + 0x48, 0xc5, 0x21, 0x0d, 0x06, 0xc9, 0x61, 0x88, + 0xe0, 0x02, 0x48, 0xc3, 0x49, 0xc3, 0x60, 0x08, + 0xe0, 0x06, 0x69, 0x38, 0x28, 0x13, 0xd1, 0x03, + 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x08, + 0x48, 0xb6, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x2c, + 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, 0x90, 0x02, + 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, + 0xf0, 0x00, 0xfd, 0x64, 0x20, 0x00, 0x43, 0xc0, + 0x00, 0xe9, 0x4b, 0xb7, 0x18, 0xc9, 0x60, 0x08, + 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0xb4, + 0x18, 0xc9, 0x60, 0x48, 0x20, 0x00, 0x43, 0xc0, + 0x00, 0xe9, 0x4b, 0xb1, 0x18, 0xc9, 0x64, 0x08, + 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0xae, + 0x18, 0xc9, 0x64, 0x48, 0x20, 0x01, 0x40, 0xa8, + 0x43, 0xc0, 0x99, 0x02, 0x40, 0x08, 0x90, 0x02, + 0x98, 0x02, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, + 0xe0, 0x9c, 0x69, 0x38, 0x28, 0x0b, 0xdb, 0x74, + 0x69, 0x38, 0x28, 0x12, 0xdc, 0x72, 0x48, 0x9b, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x6f, 0x20, 0x00, + 0x49, 0x9d, 0x65, 0x08, 0x20, 0x01, 0x03, 0x00, + 0x49, 0x9b, 0x65, 0x48, 0x20, 0x00, 0x49, 0x9a, + 0x65, 0x88, 0x20, 0x00, 0x49, 0x98, 0x65, 0xc8, + 0x20, 0x00, 0x49, 0x97, 0x66, 0x08, 0x20, 0x00, + 0x49, 0x96, 0x60, 0x08, 0x20, 0x02, 0x21, 0x0d, + 0x06, 0xc9, 0x60, 0xc8, 0x21, 0x00, 0x20, 0x02, + 0xf0, 0x04, 0xf8, 0xa0, 0x49, 0x95, 0x20, 0x91, + 0xf0, 0x18, 0xfc, 0xd0, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0xf0, 0x0b, 0xfc, 0x72, 0x20, 0x92, + 0x49, 0x90, 0x60, 0x08, 0x48, 0x90, 0x68, 0x00, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, + 0x08, 0x40, 0x00, 0x40, 0x49, 0x8c, 0x68, 0x09, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, + 0x20, 0x01, 0x49, 0x89, 0x68, 0x09, 0x60, 0x08, + 0x20, 0x01, 0x49, 0x87, 0x68, 0x09, 0x23, 0x07, + 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, 0x20, 0x00, + 0x43, 0xc0, 0x49, 0x83, 0x68, 0x09, 0x23, 0x0f, + 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x08, 0x20, 0x00, + 0x43, 0xc0, 0x49, 0x7f, 0x68, 0x09, 0x23, 0x0f, + 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x48, 0x20, 0x00, + 0x43, 0xc0, 0x49, 0x7b, 0x68, 0x09, 0x23, 0x0f, + 0x01, 0xdb, 0x18, 0xc9, 0x60, 0xc8, 0x20, 0x00, + 0x43, 0xc0, 0x49, 0x77, 0x68, 0x09, 0x23, 0x0f, + 0x01, 0xdb, 0x18, 0xc9, 0x60, 0x88, 0x6b, 0x38, + 0xf7, 0xff, 0xf8, 0xd9, 0x90, 0x01, 0x48, 0x72, + 0x68, 0x00, 0x23, 0x77, 0x01, 0x1b, 0x18, 0xc0, + 0x9a, 0x01, 0x1c, 0x39, 0xf0, 0x0b, 0xf8, 0x42, + 0xe0, 0x02, 0xe0, 0x23, 0xe0, 0x22, 0xe0, 0x21, + 0x48, 0x67, 0x49, 0x6b, 0x68, 0x09, 0x23, 0x07, + 0x02, 0x1b, 0x18, 0xc9, 0x66, 0xc8, 0x48, 0x68, + 0x68, 0x00, 0x21, 0x00, 0xf0, 0x0b, 0xf8, 0xb8, + 0x48, 0x65, 0x68, 0x00, 0xf0, 0x0b, 0xfc, 0x2c, + 0x49, 0x62, 0x20, 0x91, 0xf0, 0x18, 0xfc, 0x6a, + 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x60, + 0x68, 0x04, 0x48, 0x60, 0x68, 0x00, 0x49, 0x5e, + 0x60, 0x08, 0x48, 0x5e, 0x60, 0x04, 0x20, 0x92, + 0x49, 0x5a, 0x60, 0x08, 0x48, 0x52, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x73, 0x48, 0x4d, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x6f, 0x1c, 0x28, 0xf0, 0x0b, + 0xfb, 0x9d, 0x28, 0x01, 0xd1, 0x6a, 0x98, 0x00, + 0x28, 0x0b, 0xdb, 0x02, 0x98, 0x00, 0x28, 0x12, + 0xdd, 0x65, 0xb0, 0x84, 0x49, 0x4f, 0x20, 0x91, + 0xf0, 0x18, 0xfc, 0x44, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0xf0, 0x0b, 0xfb, 0xe6, 0x48, 0x4c, + 0x68, 0x00, 0x68, 0x40, 0x28, 0x00, 0xd0, 0x06, + 0x48, 0x49, 0x68, 0x00, 0x68, 0x40, 0x38, 0x01, + 0x49, 0x47, 0x68, 0x09, 0x60, 0x48, 0x20, 0x92, + 0x49, 0x44, 0x60, 0x08, 0x20, 0x01, 0x49, 0x44, + 0x68, 0x09, 0x60, 0x08, 0x24, 0x00, 0x20, 0x00, + 0x90, 0x02, 0x98, 0x02, 0x28, 0x00, 0xd1, 0x15, + 0x2c, 0x07, 0xd2, 0x13, 0x6a, 0xf8, 0x05, 0x81, + 0x0d, 0x89, 0x1c, 0x20, 0x34, 0x01, 0x00, 0x83, + 0x18, 0x18, 0x00, 0xc0, 0x4a, 0x3a, 0x68, 0x12, + 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, + 0x6f, 0xc0, 0x42, 0x81, 0xd1, 0x01, 0x20, 0x01, + 0x90, 0x02, 0xe7, 0xe6, 0x98, 0x02, 0x28, 0x00, + 0xd1, 0x14, 0x2c, 0x18, 0xd2, 0x12, 0x6a, 0xf8, + 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x20, 0x34, 0x01, + 0x23, 0x4c, 0x43, 0x58, 0x4a, 0x2e, 0x68, 0x12, + 0x18, 0x80, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, + 0x69, 0x40, 0x42, 0x81, 0xd1, 0x01, 0x20, 0x01, + 0x90, 0x02, 0xe7, 0xe7, 0x3c, 0x01, 0x6b, 0x38, + 0xf7, 0xff, 0xf8, 0x41, 0x90, 0x01, 0x2c, 0x07, + 0xd2, 0x09, 0x48, 0x25, 0x68, 0x01, 0x1c, 0x20, + 0xf0, 0x0a, 0xfe, 0xbc, 0x48, 0x22, 0x68, 0x00, + 0xf0, 0x0b, 0xfb, 0xa6, 0xe0, 0x09, 0x2c, 0x18, + 0xd2, 0x07, 0xe0, 0x01, 0xe0, 0x95, 0xe0, 0x94, + 0x1f, 0xe0, 0x49, 0x1d, 0x68, 0x09, 0xf0, 0x0a, + 0xfe, 0xeb, 0x48, 0x1b, 0x68, 0x00, 0x4b, 0x1c, + 0x18, 0xc0, 0xf0, 0x0b, 0xf8, 0x0b, 0x20, 0x00, + 0x49, 0x17, 0x68, 0x09, 0x23, 0x09, 0x01, 0xdb, + 0x18, 0xc9, 0x64, 0x88, 0x48, 0x14, 0x68, 0x00, + 0x68, 0x40, 0x28, 0x07, 0xd3, 0x2c, 0x48, 0x12, + 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, + 0x69, 0x80, 0x23, 0xfe, 0x43, 0x18, 0x49, 0x0e, + 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0xe0, 0x1c, 0x00, 0x00, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x7c, 0xc8, 0x2e, 0x08, 0x7c, 0x60, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x7d, 0x9c, + 0xcc, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0xc4, + 0x3f, 0xff, 0xff, 0xff, 0x2e, 0x08, 0x5e, 0x54, + 0x68, 0x00, 0x04, 0x00, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x7d, 0xc0, + 0x00, 0x00, 0x04, 0xcc, 0x61, 0x88, 0xe0, 0x2d, + 0x26, 0x01, 0x21, 0x00, 0x91, 0x00, 0x48, 0x2b, + 0x68, 0x00, 0x68, 0x40, 0x99, 0x00, 0x42, 0x88, + 0xd8, 0x04, 0xe0, 0x06, 0x99, 0x00, 0x31, 0x01, + 0x91, 0x00, 0xe7, 0xf4, 0x00, 0x70, 0x1c, 0x46, + 0xe7, 0xf8, 0x08, 0x76, 0x00, 0x76, 0x48, 0x23, + 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, + 0x69, 0x80, 0x07, 0xc0, 0x0f, 0xc0, 0x49, 0x1f, + 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0x61, 0x88, 0x48, 0x1c, 0x68, 0x00, 0x23, 0x0d, + 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, 0x43, 0x30, + 0x49, 0x18, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xc9, 0x61, 0x88, 0x1c, 0x21, 0x48, 0x15, + 0x68, 0x00, 0xf0, 0x0a, 0xff, 0xb1, 0x6b, 0x79, + 0x48, 0x12, 0x68, 0x00, 0xf0, 0x0a, 0xfe, 0xe6, + 0x1c, 0x28, 0x21, 0x00, 0xf0, 0x0b, 0xfa, 0x88, + 0x49, 0x0f, 0x20, 0x91, 0xf0, 0x18, 0xfb, 0x5e, + 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x0b, + 0x68, 0x00, 0x90, 0x03, 0x48, 0x0b, 0x68, 0x00, + 0x49, 0x08, 0x60, 0x08, 0x98, 0x03, 0x49, 0x09, + 0x60, 0x08, 0x20, 0x92, 0x49, 0x06, 0x60, 0x08, + 0xb0, 0x04, 0x20, 0x92, 0x49, 0x06, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x03, 0xe5, 0x86, 0xb0, 0x03, + 0xe5, 0x84, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0xbc, + 0x2e, 0x08, 0x94, 0x90, 0x2e, 0x08, 0x7d, 0xc0, + 0x2e, 0x08, 0x7c, 0xc8, 0xb5, 0xf3, 0xb0, 0x85, + 0x20, 0x00, 0x90, 0x01, 0x9d, 0x05, 0x9f, 0x06, + 0x69, 0x28, 0x90, 0x04, 0x69, 0x3c, 0x98, 0x04, + 0x28, 0x13, 0xd0, 0x01, 0x2c, 0x13, 0xd1, 0x05, + 0x20, 0xff, 0xb0, 0x05, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x68, 0xee, 0x68, 0xf9, + 0x91, 0x03, 0x48, 0xdf, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x05, 0x2e, 0x19, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2e, 0x08, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0x28, 0x00, 0xd0, 0x20, 0x48, 0xd6, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x06, 0x99, 0x03, 0x29, 0x19, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0xe0, 0x05, 0x99, 0x03, 0x29, 0x08, 0xd3, 0x01, + 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, + 0xd0, 0x06, 0x99, 0x03, 0x60, 0xe9, 0x60, 0xfe, + 0x20, 0x00, 0xb0, 0x05, 0xe7, 0xce, 0xe1, 0x92, + 0x1c, 0x3d, 0x9f, 0x05, 0x9e, 0x03, 0x68, 0xf9, + 0x91, 0x03, 0x9c, 0x04, 0xe0, 0xaa, 0x48, 0xc6, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x06, 0x99, 0x03, + 0x29, 0x19, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, + 0x20, 0x00, 0xe0, 0x05, 0x99, 0x03, 0x29, 0x08, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0x28, 0x00, 0xd1, 0x73, 0x49, 0xbd, 0x20, 0x91, + 0xf0, 0x18, 0xfa, 0xdc, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x0a, 0xfa, 0xe5, 0xe7, 0xf5, + 0x00, 0xb0, 0x49, 0xb9, 0x58, 0x08, 0x42, 0xa8, + 0xd1, 0x05, 0x99, 0x03, 0x00, 0x88, 0x49, 0xb6, + 0x58, 0x08, 0x42, 0xb8, 0xd0, 0x05, 0x20, 0x92, + 0x49, 0xb2, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x05, + 0xe7, 0x98, 0x48, 0xb2, 0x68, 0x00, 0x42, 0xa8, + 0xd0, 0x03, 0x48, 0xb0, 0x68, 0x00, 0x42, 0xb8, + 0xd1, 0x0a, 0x20, 0x0d, 0x06, 0xc0, 0x68, 0xc0, + 0x90, 0x01, 0x98, 0x01, 0x28, 0x01, 0xd1, 0x03, + 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, + 0x99, 0x03, 0x60, 0xe9, 0x60, 0xfe, 0x00, 0xb0, + 0x49, 0xa5, 0x50, 0x0f, 0x99, 0x03, 0x00, 0x88, + 0x49, 0xa3, 0x50, 0x0d, 0x48, 0xa0, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x55, 0x20, 0x0d, 0x06, 0xc0, + 0x68, 0x80, 0x90, 0x02, 0x20, 0x00, 0x21, 0x0d, + 0x06, 0xc9, 0x60, 0x88, 0x20, 0x01, 0x40, 0xb0, + 0x99, 0x02, 0x40, 0x08, 0xd1, 0x12, 0x99, 0x03, + 0x20, 0x01, 0x40, 0x88, 0x99, 0x02, 0x40, 0x08, + 0xd0, 0x0b, 0x99, 0x03, 0x20, 0x01, 0x40, 0x88, + 0x43, 0xc0, 0x99, 0x02, 0x40, 0x08, 0x90, 0x02, + 0x20, 0x01, 0x40, 0xb0, 0x99, 0x02, 0x43, 0x08, + 0x90, 0x02, 0xe0, 0x11, 0x99, 0x03, 0x20, 0x01, + 0x40, 0x88, 0x99, 0x02, 0x40, 0x08, 0xd1, 0x0b, + 0x20, 0x01, 0x40, 0xb0, 0x43, 0xc0, 0x99, 0x02, + 0x40, 0x08, 0x90, 0x02, 0x99, 0x03, 0x20, 0x01, + 0x40, 0x88, 0x99, 0x02, 0x43, 0x08, 0x90, 0x02, + 0x6b, 0x28, 0xf7, 0xfe, 0xfe, 0xbc, 0x90, 0x00, + 0x9a, 0x00, 0xe0, 0x00, 0xe0, 0x22, 0x99, 0x03, + 0x1c, 0x28, 0xf0, 0x00, 0xfa, 0x3d, 0x6b, 0x38, + 0xf7, 0xfe, 0xfe, 0xb1, 0x90, 0x00, 0x9a, 0x00, + 0x1c, 0x31, 0x1c, 0x38, 0xf0, 0x00, 0xfa, 0x34, + 0x98, 0x02, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, + 0x48, 0x7c, 0x68, 0x00, 0x42, 0xa8, 0xd0, 0x03, + 0x48, 0x7a, 0x68, 0x00, 0x42, 0xb8, 0xd1, 0x03, + 0x98, 0x01, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, + 0x20, 0x92, 0x49, 0x74, 0x60, 0x08, 0x20, 0x00, + 0xb0, 0x05, 0xe7, 0x1b, 0x49, 0x71, 0x20, 0x91, + 0xf0, 0x18, 0xfa, 0x44, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x0a, 0xfa, 0x4d, 0xe7, 0xf5, + 0x00, 0xb0, 0x49, 0x6d, 0x58, 0x08, 0x42, 0xa8, + 0xd0, 0x05, 0x20, 0x92, 0x49, 0x69, 0x60, 0x08, + 0x20, 0xff, 0xb0, 0x05, 0xe7, 0x06, 0x2c, 0x0b, + 0xdb, 0x12, 0x2c, 0x12, 0xdc, 0x10, 0x48, 0x67, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x09, 0x48, 0x65, + 0x68, 0x00, 0x42, 0xa8, 0xd0, 0x05, 0x20, 0x92, + 0x49, 0x60, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x05, + 0xe6, 0xf4, 0x48, 0x60, 0x60, 0x07, 0xe0, 0x08, + 0x6b, 0xf8, 0x28, 0x01, 0xd1, 0x05, 0x20, 0x92, + 0x49, 0x5a, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x05, + 0xe6, 0xe8, 0x48, 0x5a, 0x68, 0x00, 0x42, 0xa8, + 0xd1, 0x02, 0x20, 0x00, 0x49, 0x57, 0x60, 0x08, + 0x00, 0xb0, 0x49, 0x55, 0x50, 0x0f, 0x99, 0x03, + 0x60, 0xe9, 0x60, 0xfe, 0x48, 0x50, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x73, 0x6b, 0x28, 0xf7, 0xfe, + 0xfe, 0x4e, 0x90, 0x00, 0x6a, 0xa9, 0x9a, 0x00, + 0x48, 0x4f, 0xf0, 0x0b, 0xfa, 0x1d, 0x6b, 0x38, + 0xf7, 0xfe, 0xfe, 0x45, 0x90, 0x00, 0x6a, 0xb9, + 0x9a, 0x00, 0x48, 0x4b, 0xf0, 0x0b, 0xfa, 0x42, + 0x48, 0x48, 0x68, 0x00, 0x42, 0xa8, 0xd1, 0x0f, + 0x20, 0x02, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, + 0x2c, 0x0b, 0xdb, 0x01, 0x2c, 0x12, 0xdd, 0x07, + 0x21, 0x00, 0x20, 0x02, 0xf0, 0x03, 0xfd, 0xae, + 0x48, 0x42, 0x21, 0x0d, 0x06, 0xc9, 0x61, 0x88, + 0x2c, 0x0b, 0xdb, 0x42, 0x2c, 0x12, 0xdc, 0x40, + 0x98, 0x04, 0x42, 0xa0, 0xd0, 0x2c, 0x20, 0x02, + 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, 0x21, 0x00, + 0x20, 0x02, 0xf0, 0x03, 0xfd, 0x9b, 0x2c, 0x0f, + 0xd0, 0x05, 0x2c, 0x10, 0xd0, 0x03, 0x2c, 0x11, + 0xd0, 0x01, 0x2c, 0x0b, 0xd1, 0x03, 0x21, 0x00, + 0x20, 0x12, 0xf0, 0x03, 0xfd, 0x8f, 0x2c, 0x0c, + 0xd0, 0x01, 0x2c, 0x0f, 0xd1, 0x03, 0x21, 0x00, + 0x20, 0x04, 0xf0, 0x03, 0xfd, 0x87, 0x2c, 0x0d, + 0xd0, 0x01, 0x2c, 0x10, 0xd1, 0x03, 0x21, 0x00, + 0x20, 0x08, 0xf0, 0x03, 0xfd, 0x7f, 0x2c, 0x0e, + 0xd0, 0x01, 0x2c, 0x11, 0xd1, 0x03, 0x21, 0x00, + 0x20, 0x01, 0xf0, 0x03, 0xfd, 0x77, 0xe0, 0x03, + 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, + 0x6a, 0xb8, 0x30, 0x01, 0x05, 0x00, 0x6a, 0xf9, + 0x31, 0x01, 0x02, 0x89, 0x43, 0x08, 0x6b, 0x79, + 0x31, 0x02, 0x43, 0x08, 0x21, 0x0d, 0x06, 0xc9, + 0x61, 0x88, 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x80, + 0x90, 0x02, 0x20, 0x00, 0x21, 0x0d, 0x06, 0xc9, + 0x60, 0x88, 0xe0, 0x00, 0xe0, 0x1f, 0x20, 0x01, + 0x40, 0xb0, 0x43, 0xc0, 0x99, 0x02, 0x40, 0x08, + 0x90, 0x02, 0xf0, 0x00, 0xf9, 0xcf, 0x6b, 0x38, + 0xf7, 0xfe, 0xfd, 0xd1, 0x90, 0x00, 0x9a, 0x00, + 0x1c, 0x31, 0x1c, 0x38, 0xf0, 0x00, 0xf9, 0x54, + 0x98, 0x02, 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, + 0x2c, 0x0b, 0xdb, 0x08, 0x2c, 0x12, 0xdc, 0x06, + 0x98, 0x04, 0x42, 0xa0, 0xd1, 0x03, 0x20, 0x01, + 0x21, 0x0d, 0x06, 0xc9, 0x60, 0xc8, 0x20, 0x92, + 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x05, + 0xe6, 0x3c, 0xb0, 0x05, 0xe6, 0x3a, 0xe6, 0x39, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7c, 0x60, 0x2e, 0x08, 0x7c, 0xc4, + 0x2e, 0x08, 0x7d, 0x9c, 0x3f, 0xff, 0xff, 0xff, + 0xb5, 0xf0, 0x1c, 0x07, 0x00, 0xb8, 0x49, 0x09, + 0x58, 0x0c, 0x1c, 0x7d, 0x60, 0xe5, 0x00, 0xa8, + 0x49, 0x06, 0x50, 0x0c, 0x6b, 0x20, 0xf7, 0xfe, + 0xfd, 0x9a, 0x1c, 0x06, 0x1c, 0x32, 0x1c, 0x29, + 0x1c, 0x20, 0xf0, 0x00, 0xf9, 0x1d, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x7c, 0x60, + 0xb5, 0xf0, 0x1c, 0x07, 0x00, 0xb8, 0x49, 0x09, + 0x58, 0x0c, 0x1e, 0x7d, 0x60, 0xe5, 0x00, 0xa8, + 0x49, 0x06, 0x50, 0x0c, 0x6b, 0x20, 0xf7, 0xfe, + 0xfd, 0x82, 0x1c, 0x06, 0x1c, 0x32, 0x1c, 0x29, + 0x1c, 0x20, 0xf0, 0x00, 0xf9, 0x05, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x7c, 0x60, + 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x86, 0x98, 0x06, + 0x90, 0x05, 0x98, 0x05, 0x68, 0xc5, 0x48, 0x77, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2d, 0x19, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0xe0, 0x04, 0x2d, 0x08, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x05, + 0x20, 0xff, 0xb0, 0x06, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x98, 0x05, 0x69, 0x00, + 0x28, 0x13, 0xd1, 0x02, 0x20, 0xff, 0xb0, 0x06, + 0xe7, 0xf4, 0x49, 0x69, 0x20, 0x91, 0xf0, 0x18, + 0xf9, 0x01, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, + 0xf0, 0x0a, 0xf9, 0x0a, 0xe7, 0xf5, 0x00, 0xa8, + 0x49, 0x64, 0x58, 0x08, 0x99, 0x05, 0x42, 0x88, + 0xd0, 0x05, 0x20, 0x92, 0x49, 0x60, 0x60, 0x08, + 0x20, 0xff, 0xb0, 0x06, 0xe7, 0xde, 0x42, 0xbd, + 0xd1, 0x05, 0x20, 0x92, 0x49, 0x5c, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x06, 0xe7, 0xd6, 0x20, 0x00, + 0x00, 0xa9, 0x4a, 0x5a, 0x50, 0x50, 0x98, 0x05, + 0x60, 0xc7, 0x48, 0x59, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x0d, 0x48, 0x54, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x09, 0x99, 0x05, 0x00, 0xb8, 0x4a, 0x53, + 0x50, 0x11, 0x20, 0x92, 0x49, 0x50, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x06, 0xe7, 0xbe, 0x20, 0x0d, + 0x06, 0xc0, 0x68, 0x80, 0x1c, 0x04, 0x20, 0x00, + 0x21, 0x0d, 0x06, 0xc9, 0x60, 0x88, 0x20, 0x00, + 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0x4b, 0x18, 0xc9, + 0x60, 0x08, 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, + 0x4b, 0x48, 0x18, 0xc9, 0x60, 0x48, 0x20, 0x00, + 0x43, 0xc0, 0x00, 0xe9, 0x4b, 0x45, 0x18, 0xc9, + 0x64, 0x08, 0x20, 0x00, 0x43, 0xc0, 0x00, 0xe9, + 0x4b, 0x42, 0x18, 0xc9, 0x64, 0x48, 0x20, 0x01, + 0x90, 0x01, 0x20, 0x01, 0x40, 0xa8, 0x40, 0x20, + 0xd1, 0x01, 0x20, 0x00, 0x90, 0x01, 0x20, 0x01, + 0x40, 0xa8, 0x43, 0xc0, 0x40, 0x04, 0x1c, 0x3e, + 0x42, 0xbd, 0xd9, 0x23, 0x00, 0xb0, 0x49, 0x37, + 0x58, 0x08, 0x28, 0x00, 0xd0, 0x01, 0x36, 0x01, + 0xe7, 0xf8, 0x1e, 0x70, 0x90, 0x04, 0x98, 0x04, + 0x42, 0xb8, 0xda, 0x04, 0xe0, 0x07, 0x98, 0x04, + 0x38, 0x01, 0x90, 0x04, 0xe7, 0xf7, 0x98, 0x04, + 0xf7, 0xff, 0xff, 0x32, 0xe7, 0xf7, 0x20, 0xff, + 0x40, 0xb8, 0x90, 0x03, 0x20, 0xff, 0x40, 0xb0, + 0x43, 0xc0, 0x99, 0x03, 0x40, 0x08, 0x90, 0x03, + 0x98, 0x03, 0x00, 0x40, 0x90, 0x03, 0x00, 0x60, + 0x90, 0x00, 0xe0, 0x1f, 0x00, 0xb0, 0x49, 0x25, + 0x58, 0x08, 0x28, 0x00, 0xd0, 0x01, 0x3e, 0x01, + 0xe7, 0xf8, 0x1c, 0x70, 0x90, 0x04, 0x98, 0x04, + 0x42, 0xb8, 0xd9, 0x04, 0xe0, 0x07, 0x98, 0x04, + 0x30, 0x01, 0x90, 0x04, 0xe7, 0xf7, 0x98, 0x04, + 0xf7, 0xff, 0xff, 0x26, 0xe7, 0xf7, 0x20, 0xff, + 0x40, 0xb0, 0x90, 0x03, 0x20, 0xff, 0x40, 0xb8, + 0x43, 0xc0, 0x99, 0x03, 0x40, 0x08, 0x90, 0x03, + 0x08, 0x60, 0x90, 0x00, 0x98, 0x00, 0x99, 0x03, + 0x40, 0x08, 0x90, 0x00, 0x98, 0x03, 0x43, 0x84, + 0x98, 0x00, 0x43, 0x04, 0x20, 0x01, 0x40, 0xb8, + 0x43, 0xc0, 0x40, 0x04, 0x98, 0x01, 0x40, 0xb8, + 0x43, 0x04, 0x99, 0x05, 0x00, 0xb8, 0x4a, 0x0d, + 0x50, 0x11, 0x98, 0x05, 0x6b, 0x00, 0xf7, 0xfe, + 0xfc, 0x92, 0x90, 0x02, 0x9a, 0x02, 0x1c, 0x39, + 0x98, 0x05, 0xf0, 0x00, 0xf8, 0x15, 0x20, 0x0d, + 0x06, 0xc0, 0x60, 0x84, 0x20, 0x92, 0x49, 0x04, + 0x60, 0x08, 0x20, 0x00, 0xb0, 0x06, 0xe7, 0x25, + 0xb0, 0x06, 0xe7, 0x23, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x7c, 0xc8, 0x2e, 0x08, 0x7c, 0x60, + 0x2e, 0x08, 0x60, 0x8c, 0x68, 0x00, 0x04, 0x00, + 0xb5, 0xf7, 0x1c, 0x04, 0x1c, 0x0f, 0x01, 0x3d, + 0x4b, 0x2f, 0x18, 0xe9, 0x1d, 0xe2, 0x32, 0x0d, + 0x20, 0x00, 0x28, 0x03, 0xd3, 0x02, 0xe0, 0x04, + 0x30, 0x01, 0xe7, 0xfa, 0xca, 0x20, 0xc1, 0x20, + 0xe7, 0xfa, 0x6a, 0xe3, 0x05, 0x9d, 0x0d, 0xad, + 0x00, 0xfe, 0x4b, 0x28, 0x18, 0xf3, 0x60, 0x1d, + 0x6b, 0x63, 0x33, 0x01, 0x05, 0x9d, 0x0d, 0xad, + 0x00, 0xfe, 0x4b, 0x24, 0x18, 0xf3, 0x60, 0x5d, + 0x6a, 0xa5, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x1d, + 0x00, 0xfe, 0x4b, 0x20, 0x18, 0xf3, 0x64, 0x1d, + 0x9d, 0x02, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x1d, + 0x00, 0xfe, 0x4b, 0x1c, 0x18, 0xf3, 0x64, 0x5d, + 0x4b, 0x1b, 0x68, 0x1b, 0x2b, 0x01, 0xd1, 0x2a, + 0x2f, 0x00, 0xd1, 0x28, 0x4b, 0x17, 0x68, 0x5d, + 0x23, 0x8f, 0x00, 0x9b, 0x42, 0x9d, 0xd3, 0x03, + 0x23, 0x8f, 0x00, 0x9b, 0x4d, 0x13, 0x60, 0x6b, + 0x4b, 0x12, 0x68, 0x1d, 0x4b, 0x13, 0x42, 0x9d, + 0xd3, 0x02, 0x4b, 0x12, 0x4d, 0x0f, 0x60, 0x2b, + 0x4b, 0x0e, 0x6c, 0x5d, 0x23, 0x01, 0x02, 0x9b, + 0x1a, 0xed, 0x23, 0xb3, 0x00, 0x9b, 0x42, 0x9d, + 0xd3, 0x02, 0x4b, 0x0d, 0x4d, 0x09, 0x64, 0x6b, + 0x4b, 0x08, 0x6c, 0x1d, 0x23, 0x01, 0x02, 0x9b, + 0x1a, 0xed, 0x4b, 0x0a, 0x42, 0x9d, 0xd3, 0x02, + 0x4b, 0x09, 0x4d, 0x04, 0x64, 0x2b, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x68, 0x00, 0x0c, 0x00, 0x68, 0x00, 0x04, 0x00, + 0x2e, 0x08, 0x60, 0x8c, 0x00, 0x00, 0x02, 0x3a, + 0x00, 0x00, 0x06, 0xcc, 0x00, 0x00, 0x02, 0xca, + 0x00, 0x00, 0x06, 0xca, 0xb4, 0xf0, 0x4f, 0x15, + 0x4c, 0x15, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, + 0x43, 0xd2, 0x4d, 0x14, 0x68, 0x6d, 0x42, 0x85, + 0xdd, 0x1b, 0x1c, 0x05, 0x30, 0x01, 0x00, 0xad, + 0x59, 0x7b, 0x42, 0x93, 0xd0, 0xf9, 0x4d, 0x0f, + 0x68, 0x6d, 0x42, 0x85, 0xda, 0x00, 0xe0, 0x10, + 0x31, 0x01, 0x1c, 0x05, 0x30, 0x01, 0x00, 0xad, + 0x59, 0x7a, 0x42, 0x93, 0xd0, 0xf9, 0x02, 0x95, + 0x43, 0x1d, 0x1c, 0x2e, 0xc4, 0x40, 0x4d, 0x07, + 0x68, 0x6d, 0x42, 0x85, 0xdb, 0x00, 0x31, 0x01, + 0xe7, 0xdf, 0x25, 0x0d, 0x06, 0xed, 0x61, 0x29, + 0xbc, 0xf0, 0x47, 0x70, 0x2e, 0x08, 0x7c, 0xd4, + 0x68, 0x00, 0x0d, 0x40, 0x2e, 0x08, 0x7d, 0x9c, + 0xb5, 0xf3, 0xb0, 0x82, 0x9d, 0x02, 0x69, 0x2c, + 0x2c, 0x13, 0xd1, 0x05, 0x20, 0x75, 0xb0, 0x02, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x68, 0xee, 0x48, 0xf8, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x05, 0x2e, 0x19, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2e, 0x08, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0x28, 0x00, 0xd0, 0x02, 0x20, 0xff, 0xb0, 0x02, + 0xe7, 0xe6, 0x49, 0xef, 0x20, 0x91, 0xf0, 0x17, + 0xff, 0x61, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, + 0xf0, 0x09, 0xff, 0x6a, 0xe7, 0xf5, 0x00, 0xb0, + 0x49, 0xea, 0x58, 0x08, 0x99, 0x02, 0x42, 0x88, + 0xd0, 0x05, 0x20, 0x92, 0x49, 0xe6, 0x60, 0x08, + 0x20, 0xff, 0xb0, 0x02, 0xe7, 0xd0, 0x48, 0xe3, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x16, 0x20, 0x0d, + 0x06, 0xc0, 0x68, 0x80, 0x90, 0x01, 0x99, 0x03, + 0x29, 0x01, 0xd1, 0x05, 0x20, 0x01, 0x40, 0xb0, + 0x99, 0x01, 0x43, 0x08, 0x90, 0x01, 0xe0, 0x05, + 0x20, 0x01, 0x40, 0xb0, 0x43, 0xc0, 0x99, 0x01, + 0x40, 0x08, 0x90, 0x01, 0x98, 0x01, 0x21, 0x0d, + 0x06, 0xc9, 0x60, 0x88, 0x48, 0xd8, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x73, 0x48, 0xd3, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x6f, 0x99, 0x03, 0x29, 0x01, + 0xd1, 0x6c, 0xb0, 0x83, 0x1c, 0x30, 0xf0, 0x0a, + 0xfe, 0x71, 0x28, 0x01, 0xd1, 0x05, 0x20, 0x92, + 0x49, 0xcd, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x05, + 0xe7, 0x9e, 0x49, 0xce, 0x20, 0x91, 0xf0, 0x17, + 0xff, 0x19, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, + 0xf0, 0x0a, 0xfe, 0xbb, 0x2c, 0x0b, 0xdb, 0x01, + 0x2c, 0x12, 0xdd, 0x06, 0x48, 0xc8, 0x68, 0x00, + 0x68, 0x40, 0x30, 0x01, 0x49, 0xc6, 0x68, 0x09, + 0x60, 0x48, 0x20, 0x92, 0x49, 0xc3, 0x60, 0x08, + 0x20, 0x01, 0x49, 0xc3, 0x68, 0x09, 0x60, 0x08, + 0x2c, 0x0b, 0xdb, 0x11, 0x2c, 0x12, 0xdc, 0x0f, + 0x48, 0xbf, 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xc0, 0x69, 0x80, 0x23, 0x01, 0x43, 0x18, + 0x49, 0xbb, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xc9, 0x61, 0x88, 0x27, 0x00, 0xe0, 0xbc, + 0x27, 0x00, 0x20, 0x00, 0x90, 0x01, 0x98, 0x01, + 0x28, 0x00, 0xd1, 0x15, 0x2f, 0x07, 0xd2, 0x13, + 0x6a, 0xe8, 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, + 0x37, 0x01, 0x00, 0x83, 0x18, 0x18, 0x00, 0xc0, + 0x4a, 0xaf, 0x68, 0x12, 0x18, 0x80, 0x23, 0x05, + 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0x81, + 0xda, 0x01, 0x20, 0x01, 0x90, 0x01, 0xe7, 0xe6, + 0x98, 0x01, 0x28, 0x00, 0xd1, 0x16, 0x2f, 0x18, + 0xd2, 0x14, 0x6a, 0xe8, 0x05, 0x81, 0x0d, 0x89, + 0x1c, 0x38, 0x37, 0x01, 0x23, 0x4c, 0x43, 0x58, + 0x4a, 0xa3, 0x68, 0x12, 0x18, 0x80, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x69, 0x40, 0x42, 0x81, + 0xda, 0x03, 0xe0, 0x00, 0xe0, 0xb0, 0x20, 0x01, + 0x90, 0x01, 0xe7, 0xe5, 0x3f, 0x01, 0x6b, 0x28, + 0xf7, 0xfe, 0xfb, 0x01, 0x90, 0x00, 0x2f, 0x07, + 0xd2, 0x16, 0x48, 0x99, 0x68, 0x01, 0x1c, 0x38, + 0xf0, 0x0a, 0xf9, 0x0a, 0x00, 0xb8, 0x19, 0xc0, + 0x00, 0xc0, 0x49, 0x95, 0x68, 0x09, 0x18, 0x40, + 0x23, 0x2b, 0x01, 0x5b, 0x18, 0xc0, 0x9a, 0x00, + 0x1c, 0x29, 0xf0, 0x0a, 0xfa, 0x5f, 0x48, 0x90, + 0x68, 0x00, 0xf0, 0x0a, 0xfe, 0x59, 0xe0, 0x4a, + 0x2f, 0x18, 0xd2, 0x48, 0x1f, 0xf8, 0x49, 0x8c, + 0x68, 0x09, 0xf0, 0x0a, 0xf9, 0x45, 0x20, 0x4c, + 0x43, 0x78, 0x49, 0x89, 0x68, 0x09, 0x18, 0x40, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x0a, 0x9a, 0x00, + 0x1c, 0x29, 0xf0, 0x0a, 0xfa, 0x47, 0x20, 0x4c, + 0x43, 0x78, 0x49, 0x83, 0x68, 0x09, 0x18, 0x40, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x82, 0x6f, 0xc0, + 0x28, 0x00, 0xd0, 0x17, 0x20, 0x4c, 0x43, 0x78, + 0x49, 0x7d, 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0xd0, 0x0b, 0x20, 0x4c, 0x43, 0x78, + 0x49, 0x77, 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, 0x0c, 0x00, + 0x04, 0x00, 0xd1, 0x0a, 0x20, 0x02, 0x21, 0x4c, + 0x43, 0x79, 0x4a, 0x71, 0x68, 0x12, 0x18, 0x89, + 0x39, 0xff, 0x39, 0xff, 0x39, 0x82, 0x67, 0x48, + 0xe0, 0x09, 0x20, 0x03, 0x21, 0x4c, 0x43, 0x79, + 0x4a, 0x6b, 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, + 0x39, 0xff, 0x39, 0x82, 0x67, 0x48, 0x48, 0x68, + 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, + 0x69, 0x80, 0x00, 0x40, 0x90, 0x03, 0x98, 0x03, + 0x23, 0x02, 0x43, 0x18, 0x90, 0x03, 0x48, 0x62, + 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, + 0x69, 0x80, 0x07, 0xc0, 0x0f, 0xc0, 0x99, 0x03, + 0x18, 0x40, 0x90, 0x03, 0x98, 0x03, 0x49, 0x5c, + 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0x61, 0x88, 0x1c, 0x39, 0x48, 0x58, 0x68, 0x00, + 0xf0, 0x0a, 0xfa, 0x72, 0x2c, 0x0b, 0xdb, 0x01, + 0x2c, 0x12, 0xdd, 0x04, 0x6b, 0x69, 0x48, 0x54, + 0x68, 0x00, 0xf0, 0x0a, 0xf9, 0x4d, 0x1c, 0x30, + 0x21, 0x01, 0xf0, 0x0a, 0xfd, 0x45, 0x49, 0x4f, + 0x20, 0x91, 0xf0, 0x17, 0xfe, 0x1b, 0x28, 0x92, + 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x4c, 0x68, 0x00, + 0x90, 0x02, 0x48, 0x4c, 0x68, 0x00, 0x49, 0x4a, + 0x60, 0x08, 0x98, 0x02, 0x49, 0x49, 0x60, 0x08, + 0x20, 0x92, 0x49, 0x46, 0x60, 0x08, 0xb0, 0x03, + 0x48, 0x43, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x75, + 0x48, 0x3e, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x71, + 0x99, 0x03, 0x29, 0x00, 0xd1, 0x6e, 0xb0, 0x85, + 0x1c, 0x30, 0xf0, 0x0a, 0xfd, 0x47, 0x28, 0x00, + 0xd1, 0x05, 0x20, 0x92, 0x49, 0x38, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x07, 0xe6, 0x74, 0x49, 0x39, + 0x20, 0x91, 0xf0, 0x17, 0xfd, 0xef, 0x28, 0x92, + 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0a, 0xfd, 0x91, + 0x2c, 0x0b, 0xdb, 0x01, 0x2c, 0x12, 0xdd, 0x0b, + 0x48, 0x33, 0x68, 0x00, 0x68, 0x40, 0x28, 0x00, + 0xd0, 0x06, 0x48, 0x31, 0x68, 0x00, 0x68, 0x40, + 0x38, 0x01, 0x49, 0x2f, 0x68, 0x09, 0x60, 0x48, + 0x20, 0x92, 0x49, 0x2c, 0x60, 0x08, 0x20, 0x01, + 0x49, 0x2b, 0x68, 0x09, 0x60, 0x08, 0x2c, 0x0b, + 0xdb, 0x11, 0x2c, 0x12, 0xdc, 0x0f, 0x48, 0x28, + 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, + 0x69, 0x80, 0x08, 0x40, 0x00, 0x40, 0x49, 0x24, + 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0x61, 0x88, 0x27, 0x00, 0xe0, 0xb2, 0x27, 0x00, + 0x20, 0x00, 0x90, 0x03, 0x98, 0x03, 0x28, 0x00, + 0xd1, 0x15, 0x2f, 0x07, 0xd2, 0x13, 0x6a, 0xe8, + 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, + 0x00, 0x83, 0x18, 0x18, 0x00, 0xc0, 0x4a, 0x18, + 0x68, 0x12, 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, + 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0x81, 0xd1, 0x01, + 0x20, 0x01, 0x90, 0x03, 0xe7, 0xe6, 0x98, 0x03, + 0x28, 0x00, 0xd1, 0x26, 0x2f, 0x18, 0xd2, 0x24, + 0x6a, 0xe8, 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, + 0x37, 0x01, 0x23, 0x4c, 0x43, 0x58, 0x4a, 0x0c, + 0x68, 0x12, 0x18, 0x80, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x02, 0xe0, 0x00, 0xe0, 0xa9, 0x69, 0x40, + 0x42, 0x81, 0xd1, 0x11, 0x20, 0x01, 0x90, 0x03, + 0xe0, 0x0e, 0x00, 0x00, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x7c, 0xc8, 0x2e, 0x08, 0x7c, 0x60, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x7d, 0xc0, + 0xe7, 0xd5, 0x3f, 0x01, 0x6b, 0x28, 0xf7, 0xfe, + 0xf9, 0xc2, 0x90, 0x01, 0x2f, 0x07, 0xd2, 0x09, + 0x48, 0x4a, 0x68, 0x01, 0x1c, 0x38, 0xf0, 0x0a, + 0xf8, 0x3d, 0x48, 0x48, 0x68, 0x00, 0xf0, 0x0a, + 0xfd, 0x27, 0xe0, 0x06, 0x2f, 0x18, 0xd2, 0x04, + 0x1f, 0xf8, 0x49, 0x44, 0x68, 0x09, 0xf0, 0x0a, + 0xf8, 0x6f, 0x48, 0x42, 0x68, 0x00, 0x4b, 0x42, + 0x18, 0xc0, 0xf0, 0x0a, 0xf9, 0x8f, 0x20, 0x00, + 0x49, 0x3e, 0x68, 0x09, 0x23, 0x09, 0x01, 0xdb, + 0x18, 0xc9, 0x64, 0x88, 0x48, 0x3b, 0x68, 0x00, + 0x68, 0x40, 0x28, 0x07, 0xd3, 0x0e, 0x48, 0x39, + 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, + 0x69, 0x80, 0x23, 0xfe, 0x43, 0x18, 0x49, 0x35, + 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0x61, 0x88, 0xe0, 0x33, 0x20, 0x01, 0x90, 0x00, + 0x21, 0x00, 0x91, 0x02, 0x48, 0x2f, 0x68, 0x00, + 0x68, 0x40, 0x99, 0x02, 0x42, 0x88, 0xd8, 0x04, + 0xe0, 0x08, 0x99, 0x02, 0x31, 0x01, 0x91, 0x02, + 0xe7, 0xf4, 0x98, 0x00, 0x00, 0x40, 0x30, 0x01, + 0x90, 0x00, 0xe7, 0xf6, 0x98, 0x00, 0x08, 0x40, + 0x00, 0x40, 0x90, 0x00, 0x48, 0x25, 0x68, 0x00, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc0, 0x69, 0x80, + 0x07, 0xc0, 0x0f, 0xc0, 0x49, 0x21, 0x68, 0x09, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, + 0x48, 0x1e, 0x68, 0x00, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xc0, 0x69, 0x80, 0x99, 0x00, 0x43, 0x08, + 0x49, 0x1a, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xc9, 0x61, 0x88, 0x1c, 0x39, 0x48, 0x17, + 0x68, 0x00, 0xf0, 0x0a, 0xf9, 0x4d, 0x2c, 0x0b, + 0xdb, 0x01, 0x2c, 0x12, 0xdd, 0x04, 0x6b, 0x69, + 0x48, 0x12, 0x68, 0x00, 0xf0, 0x0a, 0xf8, 0x7e, + 0x1c, 0x30, 0x21, 0x00, 0xf0, 0x0a, 0xfc, 0x20, + 0x49, 0x10, 0x20, 0x91, 0xf0, 0x17, 0xfc, 0xf6, + 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x0b, + 0x68, 0x00, 0x90, 0x04, 0x48, 0x0c, 0x68, 0x00, + 0x49, 0x08, 0x60, 0x08, 0x98, 0x04, 0x49, 0x0a, + 0x60, 0x08, 0x20, 0x92, 0x49, 0x07, 0x60, 0x08, + 0xb0, 0x05, 0x20, 0x92, 0x49, 0x07, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x02, 0xe5, 0x60, 0xb0, 0x02, + 0xe5, 0x5e, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0xbc, + 0x00, 0x00, 0x04, 0xcc, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xc0, 0x2e, 0x08, 0x7c, 0xc8, + 0xb5, 0xf3, 0x1c, 0x07, 0x1c, 0x3e, 0x69, 0x30, + 0x28, 0x13, 0xd1, 0x04, 0x20, 0x75, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xf4, + 0x48, 0x1e, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, + 0x2c, 0x19, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, + 0x20, 0x00, 0xe0, 0x04, 0x2c, 0x08, 0xd3, 0x01, + 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, + 0xd0, 0x01, 0x20, 0xff, 0xe7, 0xe7, 0x49, 0x16, + 0x20, 0x91, 0xf0, 0x17, 0xfc, 0xaf, 0x28, 0x92, + 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x09, 0xfc, 0xb8, + 0xe7, 0xf5, 0x00, 0xa0, 0x49, 0x11, 0x58, 0x08, + 0x42, 0xb8, 0xd0, 0x04, 0x20, 0x92, 0x49, 0x0e, + 0x60, 0x08, 0x20, 0xff, 0xe7, 0xd3, 0x20, 0x0d, + 0x06, 0xc0, 0x68, 0x80, 0x1c, 0x05, 0x20, 0x01, + 0x40, 0xa0, 0x40, 0x05, 0x2d, 0x00, 0xd1, 0x03, + 0x20, 0x00, 0x99, 0x01, 0x60, 0x08, 0xe0, 0x02, + 0x20, 0x01, 0x99, 0x01, 0x60, 0x08, 0x20, 0x92, + 0x49, 0x03, 0x60, 0x08, 0x20, 0x00, 0xe7, 0xbe, + 0xe7, 0xbd, 0x00, 0x00, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x7c, 0xc8, 0x2e, 0x08, 0x7c, 0x60, + 0xb5, 0xf3, 0x1c, 0x07, 0xb0, 0x81, 0x1c, 0x3c, + 0x68, 0xe5, 0x69, 0x60, 0x4b, 0x49, 0x40, 0x18, + 0x99, 0x02, 0x07, 0x89, 0x0f, 0x89, 0x02, 0x09, + 0x43, 0x08, 0x61, 0x60, 0x05, 0x80, 0x48, 0x46, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2d, 0x19, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0xe0, 0x04, 0x2d, 0x08, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x05, + 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x49, 0x3b, 0x20, 0x91, + 0xf0, 0x17, 0xfc, 0x58, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x09, 0xfc, 0x61, 0xe7, 0xf5, + 0x00, 0xa8, 0x49, 0x37, 0x58, 0x08, 0x42, 0xb8, + 0xd0, 0x05, 0x20, 0x92, 0x49, 0x33, 0x60, 0x08, + 0x20, 0xff, 0xb0, 0x01, 0xe7, 0xe6, 0x48, 0x30, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x69, 0x20, + 0x28, 0x0b, 0xdb, 0x0c, 0x69, 0x20, 0x28, 0x12, + 0xdc, 0x09, 0x01, 0x28, 0x4b, 0x2d, 0x18, 0xc1, + 0x91, 0x00, 0x1d, 0xe6, 0x36, 0x0d, 0x68, 0x30, + 0x99, 0x00, 0x60, 0x08, 0xe0, 0x41, 0x48, 0x26, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x3d, 0x48, 0x28, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x39, 0xb0, 0x82, + 0x1c, 0x28, 0xf0, 0x0a, 0xfb, 0x73, 0x28, 0x00, + 0xd1, 0x05, 0x20, 0x92, 0x49, 0x1f, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x03, 0xe7, 0xbe, 0x49, 0x21, + 0x20, 0x91, 0xf0, 0x17, 0xfc, 0x1b, 0x28, 0x92, + 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0a, 0xfb, 0xbd, + 0x20, 0x92, 0x49, 0x1c, 0x60, 0x08, 0x20, 0x01, + 0x49, 0x1b, 0x68, 0x09, 0x60, 0x08, 0x48, 0x1a, + 0x68, 0x01, 0x1c, 0x20, 0xf0, 0x0a, 0xfb, 0x6e, + 0x90, 0x00, 0x69, 0x60, 0x99, 0x00, 0x60, 0xc8, + 0x49, 0x14, 0x20, 0x91, 0xf0, 0x17, 0xfc, 0x02, + 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x12, + 0x68, 0x00, 0x90, 0x01, 0x48, 0x11, 0x68, 0x00, + 0x49, 0x0f, 0x60, 0x08, 0x98, 0x01, 0x49, 0x0f, + 0x60, 0x08, 0x20, 0x92, 0x49, 0x0b, 0x60, 0x08, + 0xb0, 0x02, 0x20, 0x92, 0x49, 0x05, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x01, 0xe7, 0x8a, 0xb0, 0x01, + 0xe7, 0x88, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xff, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7c, 0x60, 0x68, 0x00, 0x0c, 0x00, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x7d, 0xc0, + 0xb5, 0xf3, 0x1c, 0x07, 0xb0, 0x81, 0x1c, 0x3c, + 0x68, 0xe5, 0x69, 0x60, 0x4b, 0x49, 0x40, 0x18, + 0x99, 0x02, 0x07, 0x09, 0x0f, 0x09, 0x02, 0x89, + 0x43, 0x08, 0x61, 0x60, 0x04, 0x80, 0x48, 0x46, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2d, 0x19, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0xe0, 0x04, 0x2d, 0x08, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x05, + 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x49, 0x3b, 0x20, 0x91, + 0xf0, 0x17, 0xfb, 0xac, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x09, 0xfb, 0xb5, 0xe7, 0xf5, + 0x00, 0xa8, 0x49, 0x37, 0x58, 0x08, 0x42, 0xb8, + 0xd0, 0x05, 0x20, 0x92, 0x49, 0x33, 0x60, 0x08, + 0x20, 0xff, 0xb0, 0x01, 0xe7, 0xe6, 0x48, 0x30, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x69, 0x20, + 0x28, 0x0b, 0xdb, 0x0c, 0x69, 0x20, 0x28, 0x12, + 0xdc, 0x09, 0x01, 0x28, 0x4b, 0x2d, 0x18, 0xc6, + 0x1d, 0xe0, 0x30, 0x0d, 0x90, 0x00, 0x98, 0x00, + 0x68, 0x00, 0x60, 0x30, 0xe0, 0x41, 0x48, 0x26, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x3d, 0x48, 0x28, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x39, 0xb0, 0x82, + 0x1c, 0x28, 0xf0, 0x0a, 0xfa, 0xc7, 0x28, 0x00, + 0xd1, 0x05, 0x20, 0x92, 0x49, 0x1f, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x03, 0xe7, 0xbe, 0x49, 0x21, + 0x20, 0x91, 0xf0, 0x17, 0xfb, 0x6f, 0x28, 0x92, + 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0a, 0xfb, 0x11, + 0x20, 0x92, 0x49, 0x1c, 0x60, 0x08, 0x20, 0x01, + 0x49, 0x1b, 0x68, 0x09, 0x60, 0x08, 0x48, 0x1a, + 0x68, 0x01, 0x1c, 0x20, 0xf0, 0x0a, 0xfa, 0xc2, + 0x90, 0x00, 0x69, 0x60, 0x99, 0x00, 0x60, 0xc8, + 0x49, 0x14, 0x20, 0x91, 0xf0, 0x17, 0xfb, 0x56, + 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x12, + 0x68, 0x00, 0x90, 0x01, 0x48, 0x11, 0x68, 0x00, + 0x49, 0x0f, 0x60, 0x08, 0x98, 0x01, 0x49, 0x0f, + 0x60, 0x08, 0x20, 0x92, 0x49, 0x0b, 0x60, 0x08, + 0xb0, 0x02, 0x20, 0x92, 0x49, 0x05, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x01, 0xe7, 0x8a, 0xb0, 0x01, + 0xe7, 0x88, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xff, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7c, 0x60, 0x68, 0x00, 0x0c, 0x00, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x7d, 0xc0, + 0xb5, 0xf3, 0x1c, 0x07, 0xb0, 0x82, 0x1c, 0x3c, + 0x68, 0xe5, 0x26, 0x00, 0x99, 0x03, 0x29, 0x01, + 0xd1, 0x00, 0x26, 0x01, 0x69, 0x60, 0x06, 0x80, + 0x0f, 0xc0, 0x42, 0xb0, 0xd1, 0x05, 0x20, 0x00, + 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x69, 0x60, 0x23, 0x20, 0x43, 0xdb, + 0x40, 0x18, 0x07, 0xf1, 0x0e, 0x89, 0x43, 0x08, + 0x61, 0x60, 0x06, 0x80, 0x48, 0x44, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x05, 0x2d, 0x19, 0xd3, 0x01, + 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, + 0x2d, 0x08, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, + 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, + 0xb0, 0x02, 0xe7, 0xde, 0x49, 0x3b, 0x20, 0x91, + 0xf0, 0x17, 0xfa, 0xf4, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x09, 0xfa, 0xfd, 0xe7, 0xf5, + 0x00, 0xa8, 0x49, 0x37, 0x58, 0x08, 0x42, 0xb8, + 0xd0, 0x05, 0x20, 0x92, 0x49, 0x33, 0x60, 0x08, + 0x20, 0xff, 0xb0, 0x02, 0xe7, 0xc9, 0x48, 0x30, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x69, 0x20, + 0x28, 0x0b, 0xdb, 0x0e, 0x69, 0x20, 0x28, 0x12, + 0xdc, 0x0b, 0x01, 0x28, 0x4b, 0x2d, 0x18, 0xc1, + 0x91, 0x01, 0x1d, 0xe0, 0x30, 0x0d, 0x90, 0x00, + 0x98, 0x00, 0x68, 0x00, 0x99, 0x01, 0x60, 0x08, + 0xe0, 0x41, 0x48, 0x25, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x3d, 0x48, 0x27, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x39, 0xb0, 0x82, 0x1c, 0x28, 0xf0, 0x0a, + 0xfa, 0x0d, 0x28, 0x00, 0xd1, 0x05, 0x20, 0x92, + 0x49, 0x1e, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x04, + 0xe7, 0x9f, 0x49, 0x20, 0x20, 0x91, 0xf0, 0x17, + 0xfa, 0xb5, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, + 0xf0, 0x0a, 0xfa, 0x57, 0x20, 0x92, 0x49, 0x1b, + 0x60, 0x08, 0x20, 0x01, 0x49, 0x1a, 0x68, 0x09, + 0x60, 0x08, 0x48, 0x19, 0x68, 0x01, 0x1c, 0x20, + 0xf0, 0x0a, 0xfa, 0x08, 0x90, 0x00, 0x69, 0x60, + 0x99, 0x00, 0x60, 0xc8, 0x49, 0x13, 0x20, 0x91, + 0xf0, 0x17, 0xfa, 0x9c, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0x48, 0x11, 0x68, 0x00, 0x90, 0x01, + 0x48, 0x10, 0x68, 0x00, 0x49, 0x0e, 0x60, 0x08, + 0x98, 0x01, 0x49, 0x0e, 0x60, 0x08, 0x20, 0x92, + 0x49, 0x0a, 0x60, 0x08, 0xb0, 0x02, 0x20, 0x92, + 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x02, + 0xe7, 0x6b, 0xb0, 0x02, 0xe7, 0x69, 0x00, 0x00, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7c, 0x60, 0x68, 0x00, 0x0c, 0x00, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x7d, 0xc0, + 0xb5, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0xb0, 0x83, + 0x1c, 0x25, 0x69, 0x28, 0x28, 0x13, 0xd1, 0x04, + 0x20, 0x75, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0xee, 0x20, 0x04, 0x40, 0x38, + 0x08, 0x81, 0x91, 0x02, 0x69, 0x68, 0x23, 0xc0, + 0x43, 0xdb, 0x40, 0x18, 0x07, 0xb9, 0x0f, 0x89, + 0x01, 0x89, 0x43, 0x08, 0x61, 0x68, 0x06, 0x00, + 0x69, 0x68, 0x4b, 0x48, 0x40, 0x18, 0x99, 0x02, + 0x07, 0xc9, 0x0c, 0x49, 0x43, 0x08, 0x61, 0x68, + 0x04, 0x40, 0x48, 0x45, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x05, 0x2e, 0x19, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x04, 0x2e, 0x08, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0x28, 0x00, 0xd0, 0x02, 0x20, 0x00, 0xb0, 0x03, + 0xe7, 0xd0, 0x49, 0x3c, 0x20, 0x91, 0xf0, 0x17, + 0xfa, 0x35, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, + 0xf0, 0x09, 0xfa, 0x3e, 0xe7, 0xf5, 0x00, 0xb0, + 0x49, 0x37, 0x58, 0x08, 0x42, 0xa0, 0xd0, 0x05, + 0x20, 0x92, 0x49, 0x34, 0x60, 0x08, 0x20, 0xff, + 0xb0, 0x03, 0xe7, 0xbb, 0x48, 0x30, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x05, 0x69, 0x28, 0x28, 0x0b, + 0xdb, 0x0e, 0x69, 0x28, 0x28, 0x12, 0xdc, 0x0b, + 0x01, 0x30, 0x4b, 0x2e, 0x18, 0xc0, 0x90, 0x01, + 0x1d, 0xe8, 0x30, 0x0d, 0x90, 0x00, 0x98, 0x00, + 0x68, 0x00, 0x99, 0x01, 0x60, 0x08, 0xe0, 0x41, + 0x48, 0x25, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x3d, + 0x48, 0x27, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x39, + 0xb0, 0x82, 0x1c, 0x30, 0xf0, 0x0a, 0xf9, 0x4e, + 0x28, 0x00, 0xd1, 0x05, 0x20, 0x92, 0x49, 0x1f, + 0x60, 0x08, 0x20, 0x00, 0xb0, 0x05, 0xe7, 0x91, + 0x49, 0x20, 0x20, 0x91, 0xf0, 0x17, 0xf9, 0xf6, + 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x0a, + 0xf9, 0x98, 0x20, 0x92, 0x49, 0x1b, 0x60, 0x08, + 0x20, 0x01, 0x49, 0x1b, 0x68, 0x09, 0x60, 0x08, + 0x48, 0x19, 0x68, 0x01, 0x1c, 0x28, 0xf0, 0x0a, + 0xf9, 0x49, 0x90, 0x00, 0x69, 0x68, 0x99, 0x00, + 0x60, 0xc8, 0x49, 0x14, 0x20, 0x91, 0xf0, 0x17, + 0xf9, 0xdd, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, + 0x48, 0x11, 0x68, 0x00, 0x90, 0x01, 0x48, 0x11, + 0x68, 0x00, 0x49, 0x0f, 0x60, 0x08, 0x98, 0x01, + 0x49, 0x0e, 0x60, 0x08, 0x20, 0x92, 0x49, 0x0b, + 0x60, 0x08, 0xb0, 0x02, 0x20, 0x92, 0x49, 0x05, + 0x60, 0x08, 0x20, 0x00, 0xb0, 0x03, 0xe7, 0x5d, + 0xb0, 0x03, 0xe7, 0x5b, 0xff, 0xff, 0xbf, 0xff, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7c, 0x60, 0x68, 0x00, 0x0c, 0x00, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x7d, 0xc0, + 0x1c, 0x01, 0x20, 0x0d, 0x06, 0xc0, 0x60, 0x41, + 0x48, 0x02, 0x63, 0x81, 0x20, 0x00, 0x47, 0x70, + 0xe7, 0xfd, 0x00, 0x00, 0x68, 0x00, 0x0d, 0x00, + 0x20, 0x0d, 0x06, 0xc0, 0x68, 0x40, 0x02, 0x00, + 0x0a, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, + 0x1c, 0x0a, 0x68, 0xd0, 0x47, 0x70, 0xe7, 0xfd, + 0x1c, 0x03, 0x1c, 0x0a, 0x1c, 0x19, 0x69, 0x08, + 0x28, 0x13, 0xd1, 0x01, 0x20, 0x75, 0x47, 0x70, + 0x69, 0x08, 0x28, 0x0b, 0xdb, 0x0b, 0x69, 0x08, + 0x28, 0x12, 0xdc, 0x08, 0x6d, 0x08, 0x60, 0x10, + 0x6d, 0x88, 0x60, 0x90, 0x6d, 0x48, 0x60, 0x50, + 0x6d, 0xc8, 0x60, 0xd0, 0xe0, 0x07, 0x6a, 0x88, + 0x60, 0x10, 0x6b, 0x08, 0x60, 0x90, 0x6a, 0xc8, + 0x60, 0x50, 0x6b, 0x48, 0x60, 0xd0, 0x20, 0x00, + 0xe7, 0xe5, 0xe7, 0xe4, 0x1c, 0x03, 0x1c, 0x0a, + 0x68, 0x10, 0x60, 0x18, 0x68, 0x90, 0x60, 0x98, + 0x68, 0x50, 0x60, 0x58, 0x68, 0xd0, 0x60, 0xd8, + 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, 0x1c, 0x0a, + 0x69, 0x50, 0x05, 0x80, 0x0f, 0x80, 0x47, 0x70, + 0xe7, 0xfd, 0x1c, 0x01, 0x1c, 0x0a, 0x69, 0x50, + 0x12, 0x80, 0x07, 0x00, 0x0f, 0x00, 0x47, 0x70, + 0xe7, 0xfd, 0xb4, 0x80, 0x1c, 0x01, 0x1c, 0x0f, + 0x22, 0x01, 0x69, 0x78, 0x23, 0x20, 0x40, 0x18, + 0xd1, 0x00, 0x22, 0x00, 0x1c, 0x10, 0xbc, 0x80, + 0x47, 0x70, 0xe7, 0xfc, 0x1c, 0x01, 0x1c, 0x0b, + 0x69, 0x18, 0x28, 0x13, 0xd1, 0x01, 0x20, 0x75, + 0x47, 0x70, 0x69, 0x58, 0x06, 0x00, 0x0f, 0x82, + 0x69, 0x58, 0x04, 0x40, 0x0f, 0xc0, 0x00, 0x80, + 0x43, 0x02, 0x1c, 0x10, 0xe7, 0xf4, 0xe7, 0xf3, + 0x1c, 0x01, 0x20, 0x0d, 0x06, 0xc0, 0x61, 0x41, + 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x20, 0x0d, + 0x06, 0xc0, 0x69, 0x40, 0x1c, 0x01, 0x1c, 0x08, + 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, 0x22, 0x00, + 0x29, 0x01, 0xd1, 0x00, 0x22, 0x01, 0x20, 0x0d, + 0x06, 0xc0, 0x68, 0xc0, 0x1c, 0x03, 0x2b, 0x02, + 0xd1, 0x01, 0x29, 0x00, 0xd1, 0x02, 0x20, 0x0d, + 0x06, 0xc0, 0x60, 0xc2, 0x20, 0x00, 0x47, 0x70, + 0xe7, 0xfd, 0x21, 0x01, 0x20, 0x0d, 0x06, 0xc0, + 0x68, 0xc0, 0x1c, 0x02, 0x2a, 0x00, 0xd1, 0x00, + 0x21, 0x00, 0x1c, 0x08, 0x47, 0x70, 0xe7, 0xfd, + 0x1c, 0x01, 0x1c, 0x0a, 0x69, 0x10, 0x47, 0x70, + 0xe7, 0xfd, 0xb4, 0x90, 0x1c, 0x07, 0x1c, 0x0a, + 0x1c, 0x39, 0x69, 0x08, 0x28, 0x13, 0xd0, 0x05, + 0x69, 0x08, 0x28, 0x0b, 0xdb, 0x05, 0x69, 0x08, + 0x28, 0x12, 0xdc, 0x02, 0x20, 0x86, 0xbc, 0x90, + 0x47, 0x70, 0x6b, 0x8c, 0x69, 0x48, 0x23, 0x04, + 0x40, 0x18, 0xd0, 0x00, 0x08, 0x64, 0x69, 0x08, + 0x00, 0x80, 0x4b, 0x03, 0x58, 0x18, 0x43, 0x60, + 0x60, 0x10, 0x20, 0x00, 0xe7, 0xef, 0xe7, 0xee, + 0x2e, 0x03, 0x32, 0xf4, 0xb5, 0xf3, 0x1c, 0x07, + 0xb0, 0x81, 0x9c, 0x02, 0x69, 0x20, 0x28, 0x13, + 0xd0, 0x05, 0x69, 0x20, 0x28, 0x0b, 0xdb, 0x08, + 0x69, 0x20, 0x28, 0x12, 0xdc, 0x05, 0x20, 0x86, + 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x68, 0xe5, 0x68, 0x38, 0x64, 0x20, + 0x68, 0x7e, 0x64, 0x66, 0x08, 0xb6, 0x61, 0xa6, + 0x48, 0x3f, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, + 0x2d, 0x19, 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, + 0x20, 0x00, 0xe0, 0x04, 0x2d, 0x08, 0xd3, 0x01, + 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, + 0xd0, 0x02, 0x20, 0x00, 0xb0, 0x01, 0xe7, 0xe0, + 0x49, 0x36, 0x20, 0x91, 0xf0, 0x17, 0xf8, 0xba, + 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x09, + 0xf8, 0xc3, 0xe7, 0xf5, 0x00, 0xa8, 0x49, 0x32, + 0x58, 0x08, 0x99, 0x02, 0x42, 0x88, 0xd0, 0x05, + 0x20, 0x92, 0x49, 0x2e, 0x60, 0x08, 0x20, 0x86, + 0xb0, 0x01, 0xe7, 0xca, 0x48, 0x2a, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x06, 0x01, 0x28, 0x4b, 0x2b, + 0x18, 0xc0, 0x90, 0x00, 0x98, 0x00, 0x60, 0x06, + 0xe0, 0x41, 0x48, 0x25, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x3d, 0x48, 0x27, 0x68, 0x00, 0x28, 0x01, + 0xd1, 0x39, 0xb0, 0x82, 0x1c, 0x28, 0xf0, 0x09, + 0xff, 0xdd, 0x28, 0x00, 0xd1, 0x05, 0x20, 0x92, + 0x49, 0x1e, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x03, + 0xe7, 0xab, 0x49, 0x20, 0x20, 0x91, 0xf0, 0x17, + 0xf8, 0x85, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xf8, + 0xf0, 0x0a, 0xf8, 0x27, 0x20, 0x92, 0x49, 0x1b, + 0x60, 0x08, 0x20, 0x01, 0x49, 0x1a, 0x68, 0x09, + 0x60, 0x08, 0x48, 0x19, 0x68, 0x01, 0x1c, 0x20, + 0xf0, 0x09, 0xff, 0xd8, 0x90, 0x00, 0x69, 0xa0, + 0x99, 0x00, 0x61, 0x08, 0x49, 0x13, 0x20, 0x91, + 0xf0, 0x17, 0xf8, 0x6c, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0x48, 0x11, 0x68, 0x00, 0x90, 0x01, + 0x48, 0x10, 0x68, 0x00, 0x49, 0x0e, 0x60, 0x08, + 0x98, 0x01, 0x49, 0x0e, 0x60, 0x08, 0x20, 0x92, + 0x49, 0x0a, 0x60, 0x08, 0xb0, 0x02, 0x20, 0x92, + 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x01, + 0xe7, 0x77, 0xb0, 0x01, 0xe7, 0x75, 0x00, 0x00, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7c, 0x60, 0x68, 0x00, 0x0c, 0x04, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x7d, 0xc0, + 0xb4, 0x80, 0x1c, 0x01, 0x06, 0x0b, 0x0e, 0x1b, + 0x22, 0x01, 0x2a, 0x19, 0xd3, 0x02, 0xe0, 0x0f, + 0x32, 0x01, 0xe7, 0xfa, 0x00, 0x90, 0x4f, 0x08, + 0x58, 0x38, 0x68, 0x80, 0x02, 0x00, 0x0e, 0x00, + 0x42, 0x98, 0xd1, 0x04, 0x00, 0x90, 0x4f, 0x04, + 0x58, 0x38, 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xef, + 0x20, 0x00, 0xe7, 0xfa, 0xe7, 0xf9, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0x60, 0xb4, 0x90, 0x1c, 0x07, + 0x1c, 0x0a, 0x06, 0x38, 0x16, 0x01, 0x48, 0x20, + 0x60, 0x02, 0x48, 0x20, 0x68, 0x80, 0x23, 0x33, + 0x06, 0x5b, 0x65, 0xd8, 0x48, 0x1d, 0x68, 0xc0, + 0x23, 0x33, 0x06, 0x5b, 0x66, 0x18, 0x48, 0x1c, + 0x4b, 0x1a, 0x60, 0x98, 0x48, 0x1b, 0x4b, 0x19, + 0x60, 0xd8, 0x20, 0x01, 0x23, 0x33, 0x06, 0x5b, + 0x66, 0xd8, 0x48, 0x19, 0x68, 0x04, 0x23, 0x01, + 0x04, 0xdb, 0x43, 0x23, 0x60, 0x03, 0x48, 0x16, + 0x68, 0x04, 0x23, 0x01, 0x04, 0xdb, 0x43, 0x9c, + 0x1c, 0x23, 0x60, 0x03, 0x29, 0x00, 0xd1, 0x10, + 0x20, 0xff, 0x30, 0x14, 0x23, 0x1b, 0x06, 0x9b, + 0x62, 0x18, 0x48, 0x10, 0x68, 0x04, 0x23, 0xff, + 0x33, 0x01, 0x43, 0x9c, 0x1c, 0x23, 0x60, 0x03, + 0x48, 0x0d, 0x23, 0x1b, 0x06, 0x9b, 0x64, 0x18, + 0xe0, 0x08, 0x20, 0xff, 0x30, 0x14, 0x23, 0x1b, + 0x06, 0x9b, 0x62, 0x18, 0x48, 0x02, 0x68, 0x00, + 0x4b, 0x08, 0x60, 0x18, 0xbc, 0x90, 0x47, 0x70, + 0x2e, 0x08, 0x5e, 0x58, 0x2e, 0x08, 0x7c, 0x24, + 0xcc, 0x1f, 0xe0, 0x00, 0xcc, 0x1f, 0xfe, 0x00, + 0x6c, 0x00, 0x00, 0x40, 0x6c, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x82, 0x18, 0x6c, 0x00, 0x00, 0x80, + 0xb4, 0xf0, 0x1c, 0x01, 0xb0, 0x82, 0x23, 0x1b, + 0x06, 0x9b, 0x6a, 0x1b, 0x1c, 0x18, 0x27, 0x00, + 0x22, 0x00, 0x08, 0x40, 0x00, 0x40, 0x4b, 0xaf, + 0x68, 0x1c, 0x08, 0x64, 0x00, 0x64, 0x60, 0x1c, + 0x4b, 0xad, 0x68, 0x1b, 0x1c, 0x1d, 0x23, 0x1b, + 0x06, 0x9b, 0x6c, 0x1b, 0x93, 0x01, 0x23, 0xff, + 0x33, 0x01, 0x40, 0x03, 0xd0, 0x00, 0x22, 0xff, + 0x23, 0x01, 0x04, 0x9b, 0x40, 0x03, 0xd0, 0x1b, + 0x4c, 0xa4, 0x68, 0x26, 0x23, 0x01, 0x04, 0x9b, + 0x43, 0x9e, 0x1c, 0x33, 0x60, 0x23, 0x4c, 0xa1, + 0x68, 0x26, 0x23, 0x01, 0x43, 0x33, 0x60, 0x23, + 0x23, 0x00, 0x93, 0x00, 0x9b, 0x00, 0x2b, 0x0a, + 0xdb, 0x04, 0xe0, 0x04, 0x9b, 0x00, 0x33, 0x01, + 0x93, 0x00, 0xe7, 0xf7, 0xe7, 0xfa, 0x4b, 0x99, + 0x68, 0x1c, 0x08, 0x64, 0x00, 0x64, 0x60, 0x1c, + 0x23, 0x01, 0x02, 0x9b, 0x40, 0x0b, 0xd0, 0x29, + 0x23, 0x01, 0x02, 0xdb, 0x40, 0x0b, 0xd0, 0x01, + 0x4b, 0x94, 0x40, 0x18, 0x23, 0x01, 0x03, 0x1b, + 0x40, 0x0b, 0xd0, 0x02, 0x23, 0x01, 0x05, 0x9b, + 0x43, 0x18, 0x4b, 0x91, 0x40, 0x18, 0x02, 0x4c, + 0x23, 0x7f, 0x02, 0x5b, 0x40, 0x23, 0x43, 0x18, + 0x23, 0x40, 0x40, 0x0b, 0xd0, 0x03, 0x23, 0x01, + 0x04, 0x5b, 0x43, 0x18, 0xe0, 0x0a, 0x4b, 0x8b, + 0x40, 0x18, 0x23, 0x20, 0x40, 0x0b, 0xd0, 0x03, + 0x23, 0x01, 0x04, 0x1b, 0x43, 0x18, 0xe0, 0x01, + 0x4b, 0x87, 0x40, 0x18, 0x23, 0x1b, 0x06, 0x9b, + 0x62, 0x18, 0xe0, 0xfc, 0x23, 0x04, 0x40, 0x0b, + 0xd0, 0x0f, 0x4c, 0x7e, 0x68, 0x26, 0x23, 0x01, + 0x43, 0x33, 0x60, 0x23, 0x4b, 0x81, 0x68, 0x9b, + 0x24, 0x33, 0x06, 0x64, 0x65, 0xe3, 0x4b, 0x7f, + 0x68, 0xdb, 0x24, 0x33, 0x06, 0x64, 0x66, 0x23, + 0xe0, 0xe9, 0x23, 0x01, 0x03, 0x5b, 0x40, 0x0b, + 0xd0, 0x13, 0x4b, 0x7a, 0x68, 0x9b, 0x24, 0x33, + 0x06, 0x64, 0x65, 0xe3, 0x4b, 0x77, 0x68, 0xdb, + 0x24, 0x33, 0x06, 0x64, 0x66, 0x23, 0x23, 0x01, + 0x24, 0x33, 0x06, 0x64, 0x66, 0xe3, 0x4c, 0x6d, + 0x68, 0x26, 0x23, 0x01, 0x43, 0x33, 0x60, 0x23, + 0xe0, 0xd1, 0x07, 0xcb, 0x0f, 0xdb, 0xd0, 0x02, + 0x23, 0x02, 0x43, 0x18, 0xe0, 0x05, 0x23, 0x02, + 0x40, 0x0b, 0xd0, 0x02, 0x23, 0x02, 0x43, 0xdb, + 0x40, 0x18, 0x23, 0x07, 0x01, 0xdb, 0x40, 0x0b, + 0xd0, 0x0f, 0x23, 0x0c, 0x43, 0xdb, 0x40, 0x18, + 0x23, 0xff, 0x33, 0x01, 0x40, 0x0b, 0xd0, 0x02, + 0x23, 0x04, 0x43, 0x18, 0xe0, 0x05, 0x23, 0x01, + 0x02, 0x5b, 0x40, 0x0b, 0xd0, 0x01, 0x23, 0x08, + 0x43, 0x18, 0x23, 0x01, 0x04, 0x1b, 0x40, 0x0b, + 0xd0, 0x08, 0x23, 0x01, 0x04, 0x9b, 0x43, 0x98, + 0x1c, 0x04, 0x20, 0x01, 0x04, 0xc0, 0x43, 0x20, + 0x23, 0x01, 0x43, 0x18, 0x23, 0x78, 0x40, 0x0b, + 0xd0, 0x73, 0x23, 0x30, 0x40, 0x03, 0xd0, 0x06, + 0x2b, 0x10, 0xd0, 0x04, 0x2b, 0x20, 0xd0, 0x42, + 0x2b, 0x30, 0xd0, 0x40, 0xe0, 0x81, 0x23, 0x10, + 0x40, 0x0b, 0xd1, 0x02, 0x23, 0x08, 0x40, 0x0b, + 0xd0, 0x08, 0x23, 0x30, 0x43, 0xdb, 0x40, 0x18, + 0x23, 0x10, 0x40, 0x0b, 0xd0, 0x01, 0x23, 0x10, + 0x43, 0x18, 0xe0, 0x2f, 0x23, 0x30, 0x43, 0xdb, + 0x40, 0x18, 0x23, 0x20, 0x40, 0x0b, 0xd0, 0x02, + 0x23, 0x20, 0x43, 0x18, 0xe0, 0x01, 0x23, 0x30, + 0x43, 0x18, 0x23, 0x01, 0x43, 0x18, 0x23, 0x1b, + 0x06, 0x9b, 0x62, 0x18, 0x27, 0xff, 0x2a, 0x00, + 0xd0, 0x04, 0x4b, 0x43, 0x68, 0x1b, 0x4c, 0x43, + 0x60, 0x23, 0xe0, 0x17, 0x07, 0xab, 0x0f, 0x9b, + 0xd0, 0x09, 0x2b, 0x01, 0xd0, 0x02, 0x2b, 0x02, + 0xd0, 0x0a, 0xe0, 0x0e, 0x4b, 0x3e, 0x24, 0x1b, + 0x06, 0xa4, 0x64, 0x23, 0xe0, 0x0a, 0x4b, 0x3d, + 0x24, 0x1b, 0x06, 0xa4, 0x64, 0x23, 0xe0, 0x05, + 0x4b, 0x3b, 0x24, 0x1b, 0x06, 0xa4, 0x64, 0x23, + 0xe0, 0x00, 0xe7, 0xff, 0xe0, 0x42, 0x23, 0x40, + 0x40, 0x0b, 0xd1, 0x02, 0x23, 0x20, 0x40, 0x0b, + 0xd0, 0x0b, 0x23, 0x30, 0x43, 0xdb, 0x40, 0x18, + 0x23, 0x20, 0x40, 0x0b, 0xd0, 0x02, 0x23, 0x20, + 0x43, 0x18, 0xe0, 0x01, 0x23, 0x30, 0x43, 0x18, + 0xe0, 0x2e, 0x23, 0x30, 0x43, 0xdb, 0x40, 0x18, + 0x23, 0x10, 0x40, 0x0b, 0xd0, 0x01, 0x23, 0x10, + 0x43, 0x18, 0x23, 0x01, 0x43, 0x18, 0x23, 0x1b, + 0x06, 0x9b, 0x62, 0x18, 0x27, 0xff, 0x2a, 0x00, + 0xd0, 0x04, 0x4b, 0x23, 0x68, 0x1b, 0x4c, 0x23, + 0x60, 0x23, 0xe0, 0x19, 0x07, 0xab, 0x0f, 0x9b, + 0xe0, 0x00, 0xe0, 0x17, 0xd0, 0x09, 0x2b, 0x01, + 0xd0, 0x02, 0x2b, 0x02, 0xd0, 0x0a, 0xe0, 0x0e, + 0x4b, 0x20, 0x24, 0x1b, 0x06, 0xa4, 0x64, 0x23, + 0xe0, 0x0a, 0x4b, 0x1f, 0x24, 0x1b, 0x06, 0xa4, + 0x64, 0x23, 0xe0, 0x05, 0x4b, 0x1d, 0x24, 0x1b, + 0x06, 0xa4, 0x64, 0x23, 0xe0, 0x00, 0xe7, 0xff, + 0xe0, 0x00, 0xe7, 0xff, 0x2f, 0x00, 0xd1, 0x12, + 0x23, 0x1b, 0x06, 0x9b, 0x62, 0x18, 0x23, 0x00, + 0x93, 0x00, 0x9b, 0x00, 0x2b, 0x0a, 0xdb, 0x04, + 0xe0, 0x04, 0x9b, 0x00, 0x33, 0x01, 0x93, 0x00, + 0xe7, 0xf7, 0xe7, 0xfa, 0x4b, 0x03, 0x68, 0x1c, + 0x08, 0x64, 0x00, 0x64, 0x60, 0x1c, 0xb0, 0x02, + 0xbc, 0xf0, 0x47, 0x70, 0x6c, 0x00, 0x00, 0x20, + 0x6c, 0x00, 0x68, 0x00, 0xff, 0xbf, 0xff, 0xff, + 0xff, 0xfe, 0x01, 0xff, 0xff, 0xfd, 0xff, 0xff, + 0xff, 0xfe, 0xff, 0xff, 0x2e, 0x08, 0x7c, 0x24, + 0x2e, 0x08, 0x5e, 0x58, 0x6c, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x98, 0x60, 0x00, 0x01, 0x58, 0x60, + 0x00, 0x02, 0x54, 0x28, 0x00, 0x00, 0x82, 0x18, + 0x00, 0x01, 0x42, 0x18, 0x00, 0x02, 0x42, 0x18, + 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x81, 0x98, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, 0x98, 0x00, + 0x28, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x01, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x33, 0x06, 0x40, 0x6e, 0x00, 0x21, 0x33, + 0x06, 0x49, 0x6d, 0xc9, 0x1a, 0x46, 0x48, 0x12, + 0x6c, 0x80, 0x1c, 0x04, 0x48, 0x10, 0x6c, 0xc0, + 0x1c, 0x05, 0x42, 0xac, 0xd9, 0x09, 0x1b, 0x60, + 0x21, 0x64, 0x43, 0x41, 0x1c, 0x30, 0xf0, 0x09, + 0xff, 0xcb, 0x21, 0x64, 0x1a, 0x08, 0x60, 0x38, + 0xe0, 0x06, 0x1b, 0x28, 0x21, 0x64, 0x43, 0x41, + 0x1c, 0x30, 0xf0, 0x09, 0xff, 0xc1, 0x60, 0x38, + 0x42, 0xac, 0xd1, 0x03, 0x20, 0x31, 0xb0, 0x01, + 0xe7, 0xd6, 0xe0, 0x02, 0x20, 0x00, 0xb0, 0x01, + 0xe7, 0xd2, 0xb0, 0x01, 0xe7, 0xd0, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x80, 0xb5, 0xff, 0x1c, 0x14, + 0x1c, 0x1f, 0xb0, 0x82, 0x98, 0x02, 0x06, 0x01, + 0x0e, 0x09, 0x91, 0x00, 0x98, 0x0b, 0x06, 0x03, + 0x16, 0x1b, 0x93, 0x01, 0xb0, 0x84, 0x99, 0x04, + 0x29, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x06, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x9b, 0x05, 0x2b, 0x1f, 0xdd, 0x02, 0x20, 0xaf, + 0xb0, 0x06, 0xe7, 0xf5, 0x98, 0x07, 0x90, 0x01, + 0x2f, 0x00, 0xd0, 0x47, 0xb0, 0x81, 0x98, 0x08, + 0x22, 0x00, 0x92, 0x00, 0x22, 0x1b, 0x06, 0x92, + 0x6a, 0x12, 0x23, 0x01, 0x05, 0x1b, 0x40, 0x1a, + 0xd0, 0x01, 0x22, 0xff, 0x92, 0x00, 0x25, 0x00, + 0x08, 0x62, 0x42, 0xaa, 0xd8, 0x02, 0xe0, 0x34, + 0x35, 0x01, 0xe7, 0xf9, 0x9a, 0x00, 0x2a, 0x00, + 0xd0, 0x1e, 0x88, 0x02, 0x23, 0xff, 0x02, 0x1b, + 0x40, 0x1a, 0x12, 0x12, 0x88, 0x03, 0x02, 0x1b, + 0x43, 0x1a, 0x04, 0x11, 0x0c, 0x09, 0x2f, 0x00, + 0xda, 0x05, 0x42, 0x7a, 0x41, 0x11, 0x1c, 0x0b, + 0x04, 0x19, 0x0c, 0x09, 0xe0, 0x03, 0x40, 0xb9, + 0x1c, 0x0a, 0x04, 0x11, 0x0c, 0x09, 0x22, 0xff, + 0x02, 0x12, 0x40, 0x0a, 0x12, 0x12, 0x02, 0x0b, + 0x43, 0x13, 0x80, 0x03, 0x30, 0x02, 0xe0, 0x0f, + 0x2f, 0x00, 0xda, 0x07, 0x88, 0x02, 0x42, 0x7e, + 0x41, 0x32, 0x04, 0x12, 0x0c, 0x12, 0x80, 0x02, + 0x30, 0x02, 0xe0, 0x05, 0x88, 0x02, 0x40, 0xba, + 0x04, 0x12, 0x0c, 0x12, 0x80, 0x02, 0x30, 0x02, + 0xe7, 0xca, 0xb0, 0x01, 0x49, 0x23, 0x91, 0x03, + 0x20, 0x01, 0x06, 0x00, 0x99, 0x03, 0x60, 0x08, + 0x48, 0x21, 0x6c, 0x80, 0x49, 0x20, 0x6c, 0xc9, + 0x1a, 0x40, 0x90, 0x00, 0x98, 0x00, 0x28, 0x00, + 0xdc, 0x09, 0x20, 0x33, 0x06, 0x40, 0x6e, 0x00, + 0x21, 0x33, 0x06, 0x49, 0x6d, 0xc9, 0x1a, 0x40, + 0x99, 0x00, 0x18, 0x40, 0x90, 0x00, 0x98, 0x00, + 0x23, 0x3b, 0x01, 0xdb, 0x42, 0x98, 0xda, 0x02, + 0x20, 0x06, 0xf0, 0x08, 0xfd, 0x8d, 0x98, 0x00, + 0x23, 0x3b, 0x01, 0xdb, 0x42, 0x98, 0xdb, 0xdf, + 0x98, 0x00, 0x42, 0x84, 0xd9, 0x02, 0x98, 0x00, + 0x90, 0x02, 0xe0, 0x00, 0x94, 0x02, 0x22, 0x04, + 0x99, 0x03, 0xb4, 0x06, 0x9b, 0x07, 0x9a, 0x04, + 0x99, 0x06, 0x98, 0x03, 0xf0, 0x04, 0xfb, 0x8c, + 0xb0, 0x02, 0x98, 0x02, 0x1a, 0x24, 0x98, 0x01, + 0x99, 0x02, 0x18, 0x40, 0x90, 0x01, 0x20, 0x00, + 0x90, 0x00, 0x2c, 0x00, 0xd1, 0xc4, 0x20, 0x00, + 0xb0, 0x06, 0xe7, 0x65, 0xb0, 0x04, 0xb0, 0x02, + 0xe7, 0x62, 0x00, 0x00, 0x9e, 0x00, 0x08, 0x00, + 0x66, 0x00, 0x00, 0x80, 0x20, 0x1b, 0x06, 0x80, + 0x6a, 0x00, 0x07, 0xc0, 0x0f, 0xc0, 0x4a, 0x03, + 0x68, 0x12, 0x1c, 0x01, 0x43, 0x11, 0x1c, 0x08, + 0x47, 0x70, 0xe7, 0xfd, 0x6c, 0x00, 0x08, 0x00, + 0xb4, 0x90, 0x1c, 0x01, 0x20, 0x1b, 0x06, 0x80, + 0x6a, 0x00, 0x1c, 0x04, 0x48, 0x1b, 0x68, 0x00, + 0x1c, 0x07, 0x20, 0x30, 0x40, 0x20, 0xd0, 0x06, + 0x28, 0x10, 0xd0, 0x06, 0x28, 0x20, 0xd0, 0x06, + 0x28, 0x30, 0xd0, 0x06, 0xe0, 0x07, 0x22, 0x01, + 0xe0, 0x08, 0x22, 0x02, 0xe0, 0x06, 0x22, 0x04, + 0xe0, 0x04, 0x22, 0x08, 0xe0, 0x02, 0x20, 0x30, + 0xbc, 0x90, 0x47, 0x70, 0x20, 0x03, 0x07, 0x40, + 0x40, 0x38, 0x0f, 0x40, 0xd0, 0x04, 0x28, 0x01, + 0xd0, 0x05, 0x28, 0x02, 0xd0, 0x06, 0xe0, 0x08, + 0x23, 0x10, 0x43, 0x1a, 0xe0, 0x07, 0x23, 0x20, + 0x43, 0x1a, 0xe0, 0x04, 0x23, 0x40, 0x43, 0x1a, + 0xe0, 0x01, 0x20, 0x30, 0xe7, 0xe8, 0x20, 0x01, + 0x05, 0xc0, 0x40, 0x38, 0xd1, 0x01, 0x23, 0x80, + 0x43, 0x1a, 0x60, 0x0a, 0x20, 0x00, 0xe7, 0xdf, + 0xe7, 0xde, 0x00, 0x00, 0x6c, 0x00, 0x08, 0x00, + 0x1c, 0x01, 0x48, 0x01, 0x60, 0x01, 0x47, 0x70, + 0x6c, 0x00, 0x00, 0x80, 0x1c, 0x01, 0x29, 0x1f, + 0xdd, 0x01, 0x20, 0xaf, 0x47, 0x70, 0x20, 0x80, + 0x6c, 0x00, 0x60, 0x01, 0x20, 0x00, 0xe7, 0xf9, + 0xe7, 0xf8, 0xb5, 0xf3, 0x1c, 0x0a, 0xb0, 0x81, + 0x98, 0x01, 0x06, 0x03, 0x0e, 0x1b, 0x93, 0x00, + 0xb0, 0x81, 0x20, 0x1b, 0x06, 0x80, 0x6a, 0x00, + 0x1c, 0x01, 0x25, 0x00, 0x20, 0x00, 0x90, 0x00, + 0x20, 0x1b, 0x06, 0x80, 0x6c, 0x00, 0x1c, 0x04, + 0x27, 0x00, 0x9b, 0x01, 0x2b, 0x20, 0xdb, 0x05, + 0x20, 0xa2, 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x20, 0x33, 0x06, 0x40, + 0x6d, 0xc0, 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, + 0x9b, 0x01, 0x00, 0xdb, 0x4e, 0x5f, 0x68, 0x36, + 0x19, 0x9b, 0x60, 0x58, 0x20, 0xff, 0x30, 0x01, + 0x40, 0x08, 0xd0, 0x01, 0x20, 0xff, 0x90, 0x00, + 0x23, 0x01, 0x04, 0xdb, 0x43, 0x99, 0x1c, 0x08, + 0x21, 0x01, 0x04, 0x89, 0x43, 0x01, 0x20, 0x01, + 0x03, 0x00, 0x40, 0x10, 0xd0, 0x05, 0x06, 0x90, + 0x0e, 0x80, 0xd0, 0x02, 0x23, 0x01, 0x05, 0x1b, + 0x43, 0x19, 0x23, 0x30, 0x43, 0xdb, 0x40, 0x19, + 0x05, 0x10, 0x0d, 0x00, 0x28, 0x40, 0xd0, 0x48, + 0xdc, 0x0e, 0x28, 0x08, 0xd0, 0x32, 0xdc, 0x06, + 0x28, 0x01, 0xd0, 0x1e, 0x28, 0x02, 0xd0, 0x21, + 0x28, 0x04, 0xd0, 0x26, 0xe0, 0x67, 0x28, 0x10, + 0xd0, 0x2f, 0x28, 0x20, 0xd0, 0x32, 0xe0, 0x62, + 0x23, 0x01, 0x02, 0x5b, 0x42, 0x98, 0xd0, 0x49, + 0xdc, 0x06, 0x28, 0x80, 0xd0, 0x38, 0x23, 0xff, + 0x33, 0x01, 0x42, 0x98, 0xd0, 0x3b, 0xe0, 0x56, + 0x23, 0x01, 0x02, 0x9b, 0x42, 0x98, 0xd0, 0x44, + 0x23, 0x01, 0x02, 0xdb, 0x42, 0x98, 0xd0, 0x47, + 0xe0, 0x4d, 0x4b, 0x3d, 0x42, 0x9c, 0xd0, 0x00, + 0x4f, 0x3b, 0xe0, 0x49, 0x23, 0x10, 0x43, 0x19, + 0x4b, 0x39, 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x38, + 0xe0, 0x42, 0x4b, 0x38, 0x42, 0x9c, 0xd0, 0x00, + 0x4f, 0x36, 0xe0, 0x3d, 0x23, 0x10, 0x43, 0x19, + 0x4b, 0x34, 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x33, + 0xe0, 0x36, 0x4b, 0x33, 0x42, 0x9c, 0xd0, 0x00, + 0x4f, 0x31, 0xe0, 0x31, 0x23, 0x10, 0x43, 0x19, + 0x4b, 0x2f, 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x2e, + 0xe0, 0x2a, 0x23, 0x20, 0x43, 0x19, 0x4b, 0x2d, + 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x2b, 0xe0, 0x23, + 0x23, 0x30, 0x43, 0x19, 0x4b, 0x29, 0x42, 0x9c, + 0xd0, 0x00, 0x4f, 0x28, 0xe0, 0x1c, 0x23, 0x20, + 0x43, 0x19, 0x4b, 0x27, 0x42, 0x9c, 0xd0, 0x00, + 0x4f, 0x25, 0xe0, 0x15, 0x23, 0x30, 0x43, 0x19, + 0x4b, 0x23, 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x22, + 0xe0, 0x0e, 0x23, 0x20, 0x43, 0x19, 0x4b, 0x21, + 0x42, 0x9c, 0xd0, 0x00, 0x4f, 0x1f, 0xe0, 0x07, + 0x23, 0x30, 0x43, 0x19, 0x4b, 0x1d, 0x42, 0x9c, + 0xd0, 0x00, 0x4f, 0x1c, 0xe0, 0x00, 0xe7, 0xff, + 0x98, 0x00, 0x28, 0x00, 0xd0, 0x0a, 0x23, 0x01, + 0x43, 0x19, 0x20, 0x1b, 0x06, 0x80, 0x62, 0x01, + 0x48, 0x17, 0x68, 0x00, 0x4b, 0x17, 0x60, 0x18, + 0x25, 0xff, 0xe0, 0x0e, 0x23, 0x01, 0x43, 0x19, + 0x2f, 0x00, 0xd0, 0x07, 0x20, 0x1b, 0x06, 0x80, + 0x62, 0x01, 0x20, 0x1b, 0x06, 0x80, 0x64, 0x07, + 0x25, 0xff, 0xe0, 0x02, 0x20, 0x1b, 0x06, 0x80, + 0x62, 0x01, 0x2d, 0x00, 0xd1, 0x04, 0x48, 0x0e, + 0x68, 0x03, 0x08, 0x5b, 0x00, 0x5b, 0x60, 0x03, + 0x20, 0x00, 0xb0, 0x02, 0xe7, 0x36, 0xb0, 0x01, + 0xb0, 0x01, 0xe7, 0x33, 0x2e, 0x08, 0x5d, 0xdc, + 0x00, 0x00, 0x82, 0x18, 0x00, 0x01, 0x42, 0x18, + 0x00, 0x02, 0x42, 0x18, 0x00, 0x00, 0x98, 0x60, + 0x00, 0x01, 0x58, 0x60, 0x00, 0x02, 0x54, 0x28, + 0x2e, 0x08, 0x5e, 0x58, 0x6c, 0x00, 0x00, 0x80, + 0x6c, 0x00, 0x00, 0x20, 0xb5, 0xf3, 0x1c, 0x0f, + 0xb0, 0x82, 0x49, 0x2c, 0x46, 0x68, 0x22, 0x08, + 0xf0, 0x09, 0xfe, 0x14, 0x20, 0x04, 0xf7, 0xff, + 0xfc, 0x23, 0x48, 0x29, 0x68, 0x80, 0x21, 0x33, + 0x06, 0x49, 0x65, 0xc8, 0x48, 0x26, 0x68, 0xc0, + 0x21, 0x33, 0x06, 0x49, 0x66, 0x08, 0x48, 0x25, + 0x68, 0x01, 0x23, 0x02, 0x43, 0x19, 0x60, 0x01, + 0x20, 0x01, 0x21, 0x33, 0x06, 0x49, 0x67, 0xc8, + 0x48, 0x21, 0x68, 0x01, 0x31, 0xff, 0x31, 0xff, + 0x31, 0x02, 0x60, 0x01, 0x1c, 0x78, 0x12, 0x00, + 0xab, 0x01, 0x70, 0x18, 0x1c, 0x78, 0xab, 0x01, + 0x70, 0x58, 0x20, 0x33, 0x06, 0x40, 0x6d, 0xc5, + 0x4b, 0x1a, 0x43, 0x1d, 0x26, 0x00, 0x2e, 0x10, + 0xdb, 0x02, 0xe0, 0x18, 0x36, 0x01, 0xe7, 0xfa, + 0x24, 0x00, 0x2c, 0x07, 0xd3, 0x02, 0xe0, 0x06, + 0x34, 0x01, 0xe7, 0xfa, 0x46, 0x68, 0x5d, 0x01, + 0x70, 0x29, 0x35, 0x01, 0xe7, 0xf8, 0x24, 0x00, + 0x42, 0xbc, 0xdb, 0x02, 0xe0, 0x06, 0x34, 0x01, + 0xe7, 0xfa, 0x98, 0x02, 0x5d, 0x01, 0x70, 0x29, + 0x35, 0x01, 0xe7, 0xf8, 0xe7, 0xe6, 0x20, 0x33, + 0x06, 0x40, 0x66, 0x05, 0x48, 0x0a, 0x68, 0x01, + 0x23, 0x01, 0x05, 0x5b, 0x43, 0x19, 0x60, 0x01, + 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x03, 0x32, 0x9c, + 0x2e, 0x08, 0x7c, 0x24, 0x66, 0x00, 0x00, 0x70, + 0x66, 0x00, 0x00, 0x5c, 0xcc, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x20, 0xb5, 0xf7, 0x1c, 0x04, + 0x1c, 0x0f, 0x06, 0x20, 0x0e, 0x00, 0x06, 0x3d, + 0x0e, 0x2d, 0x99, 0x02, 0x06, 0x0a, 0x0e, 0x12, + 0x21, 0x02, 0x40, 0x01, 0xd0, 0x04, 0x21, 0xff, + 0x4b, 0x2f, 0x68, 0x1b, 0x72, 0x19, 0xe0, 0x0c, + 0x49, 0x2d, 0x68, 0x09, 0x7a, 0x09, 0x29, 0xff, + 0xd1, 0x03, 0x21, 0x00, 0x4b, 0x2a, 0x68, 0x1b, + 0x60, 0x19, 0x21, 0x00, 0x4b, 0x28, 0x68, 0x1b, + 0x72, 0x19, 0x07, 0xc1, 0x0f, 0xc9, 0xd0, 0x04, + 0x21, 0xff, 0x4b, 0x25, 0x68, 0x1b, 0x72, 0x59, + 0xe0, 0x0c, 0x49, 0x23, 0x68, 0x09, 0x7a, 0x49, + 0x29, 0xff, 0xd1, 0x03, 0x21, 0x00, 0x4b, 0x20, + 0x68, 0x1b, 0x60, 0x59, 0x21, 0x00, 0x4b, 0x1e, + 0x68, 0x1b, 0x72, 0x59, 0x2d, 0x01, 0xd1, 0x0f, + 0x49, 0x1c, 0x68, 0x0e, 0x23, 0x01, 0x05, 0x5b, + 0x43, 0x9e, 0x1c, 0x33, 0x60, 0x0b, 0x49, 0x1a, + 0x68, 0x09, 0x78, 0x09, 0x23, 0x02, 0x43, 0x19, + 0x4b, 0x17, 0x68, 0x1b, 0x70, 0x19, 0xe0, 0x0e, + 0x49, 0x14, 0x68, 0x0e, 0x23, 0x01, 0x05, 0x5b, + 0x43, 0x33, 0x60, 0x0b, 0x49, 0x12, 0x68, 0x09, + 0x78, 0x09, 0x23, 0x02, 0x43, 0xdb, 0x40, 0x19, + 0x4b, 0x0f, 0x68, 0x1b, 0x70, 0x19, 0x49, 0x0f, + 0x62, 0x4a, 0x2a, 0x01, 0xd1, 0x08, 0x49, 0x0c, + 0x68, 0x09, 0x78, 0x09, 0x23, 0x01, 0x43, 0x19, + 0x4b, 0x09, 0x68, 0x1b, 0x70, 0x19, 0xe0, 0x07, + 0x49, 0x07, 0x68, 0x09, 0x78, 0x09, 0x08, 0x49, + 0x00, 0x49, 0x4b, 0x05, 0x68, 0x1b, 0x70, 0x19, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x5e, 0x5c, 0x6c, 0x00, 0x00, 0x20, + 0x2e, 0x08, 0x5e, 0x60, 0xcc, 0x00, 0x0f, 0x80, + 0xb4, 0x80, 0x1c, 0x07, 0x1c, 0x0a, 0x68, 0x38, + 0x49, 0x23, 0x68, 0x09, 0x60, 0xc8, 0x68, 0x78, + 0x49, 0x21, 0x68, 0x09, 0x61, 0x08, 0x68, 0xb8, + 0x49, 0x1f, 0x68, 0x09, 0x61, 0x48, 0x68, 0xf8, + 0x49, 0x1d, 0x68, 0x09, 0x61, 0x88, 0x7d, 0x38, + 0x49, 0x1b, 0x68, 0x09, 0x31, 0x20, 0x70, 0x08, + 0x7d, 0x78, 0x49, 0x19, 0x68, 0x09, 0x31, 0x20, + 0x70, 0x48, 0x69, 0x38, 0x49, 0x16, 0x68, 0x09, + 0x61, 0xc8, 0x7d, 0xb8, 0x49, 0x14, 0x68, 0x09, + 0x31, 0x20, 0x70, 0x88, 0x68, 0x10, 0x49, 0x12, + 0x68, 0x09, 0x62, 0x48, 0x68, 0x50, 0x49, 0x10, + 0x68, 0x09, 0x62, 0x88, 0x68, 0x90, 0x49, 0x0e, + 0x68, 0x09, 0x62, 0xc8, 0x68, 0xd0, 0x49, 0x0c, + 0x68, 0x09, 0x63, 0x08, 0x7d, 0x10, 0x49, 0x0a, + 0x68, 0x09, 0x31, 0x20, 0x76, 0x08, 0x7d, 0x50, + 0x49, 0x07, 0x68, 0x09, 0x31, 0x20, 0x76, 0x48, + 0x69, 0x10, 0x49, 0x05, 0x68, 0x09, 0x63, 0x48, + 0x7d, 0x90, 0x49, 0x03, 0x68, 0x09, 0x31, 0x20, + 0x76, 0x88, 0xbc, 0x80, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x5c, 0x1c, 0x02, 0x1c, 0x0b, + 0x48, 0x03, 0x68, 0x00, 0x60, 0x02, 0x48, 0x02, + 0x68, 0x00, 0x60, 0x43, 0x47, 0x70, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x5c, 0xb5, 0xf3, 0xb0, 0x88, + 0x98, 0x08, 0x68, 0x04, 0x20, 0x01, 0x90, 0x06, + 0x20, 0x01, 0x90, 0x05, 0x48, 0x8c, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x19, 0x48, 0x8a, 0x68, 0x00, + 0x38, 0x01, 0x49, 0x89, 0x60, 0x08, 0x48, 0x88, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x10, 0x48, 0x87, + 0x78, 0x80, 0x90, 0x00, 0x98, 0x00, 0x00, 0xc0, + 0x49, 0x85, 0x68, 0x09, 0x58, 0x08, 0x23, 0xff, + 0x33, 0x01, 0x43, 0x98, 0x1c, 0x01, 0x98, 0x00, + 0x00, 0xc0, 0x4a, 0x81, 0x68, 0x12, 0x50, 0x11, + 0x20, 0x33, 0x06, 0x40, 0x6e, 0x00, 0x23, 0x0d, + 0x06, 0x9b, 0x1a, 0xc1, 0x91, 0x02, 0x20, 0x33, + 0x06, 0x40, 0x6d, 0xc0, 0x23, 0x0d, 0x06, 0x9b, + 0x1a, 0xc0, 0x90, 0x01, 0x48, 0x79, 0x68, 0x00, + 0x42, 0x84, 0xd1, 0x73, 0x98, 0x01, 0x1d, 0xc7, + 0x37, 0x01, 0x78, 0x38, 0x18, 0x38, 0x1c, 0x47, + 0x48, 0x75, 0x6c, 0xc0, 0x23, 0x0d, 0x06, 0x9b, + 0x1a, 0xc0, 0x42, 0xb8, 0xd9, 0x19, 0x78, 0x38, + 0x28, 0xff, 0xd1, 0x12, 0x78, 0x78, 0x23, 0xf0, + 0x40, 0x18, 0x28, 0xf0, 0xd1, 0x0d, 0x78, 0xb8, + 0x10, 0x80, 0x07, 0x80, 0x0f, 0x80, 0x06, 0x00, + 0x16, 0x00, 0x90, 0x06, 0x78, 0x78, 0x10, 0xc0, + 0x07, 0xc0, 0x09, 0xc0, 0x16, 0x00, 0x90, 0x05, + 0xe0, 0x03, 0x21, 0x01, 0x70, 0x39, 0x18, 0x7f, + 0xe7, 0xde, 0x21, 0x40, 0x91, 0x03, 0x25, 0x20, + 0x21, 0x14, 0x91, 0x07, 0x98, 0x06, 0x28, 0x00, + 0xd1, 0x02, 0x25, 0x23, 0x21, 0x12, 0x91, 0x07, + 0x98, 0x06, 0x28, 0x02, 0xd1, 0x02, 0x25, 0x30, + 0x21, 0x18, 0x91, 0x07, 0x98, 0x05, 0x28, 0x00, + 0xd1, 0x02, 0x00, 0x6d, 0x21, 0x70, 0x91, 0x03, + 0x99, 0x03, 0x00, 0x48, 0x99, 0x02, 0x1a, 0x08, + 0x90, 0x04, 0x98, 0x04, 0x99, 0x02, 0x42, 0x88, + 0xd3, 0x05, 0xe0, 0x4e, 0x98, 0x04, 0x99, 0x03, + 0x18, 0x40, 0x90, 0x04, 0xe7, 0xf5, 0x9f, 0x04, + 0x21, 0x00, 0x70, 0x39, 0x37, 0x01, 0x21, 0x00, + 0x70, 0x39, 0x37, 0x01, 0x21, 0x01, 0x70, 0x39, + 0x18, 0x7f, 0x21, 0xc0, 0x70, 0x39, 0x37, 0x01, + 0x21, 0x00, 0x70, 0x39, 0x37, 0x01, 0x21, 0x3a, + 0x70, 0x39, 0x37, 0x01, 0x21, 0x80, 0x70, 0x39, + 0x37, 0x01, 0x21, 0x00, 0x70, 0x39, 0x37, 0x01, + 0x99, 0x03, 0x1f, 0xc8, 0x38, 0x02, 0x1b, 0x41, + 0x70, 0x39, 0x37, 0x01, 0x26, 0x00, 0x99, 0x03, + 0x1f, 0xc8, 0x38, 0x02, 0x1b, 0x40, 0x42, 0xb0, + 0xdc, 0x04, 0xe0, 0x00, 0xe0, 0x34, 0xe0, 0x05, + 0x36, 0x01, 0xe7, 0xf4, 0x21, 0xff, 0x70, 0x39, + 0x37, 0x01, 0xe7, 0xf9, 0x21, 0xff, 0x70, 0x39, + 0x37, 0x01, 0x98, 0x05, 0x00, 0xc0, 0x21, 0xf7, + 0x43, 0x01, 0x70, 0x39, 0x37, 0x01, 0x99, 0x07, + 0x70, 0x39, 0x37, 0x01, 0x21, 0xc0, 0x70, 0x39, + 0x37, 0x01, 0x26, 0x00, 0x1f, 0x28, 0x42, 0xb0, + 0xdc, 0x02, 0xe0, 0x05, 0x36, 0x01, 0xe7, 0xf9, + 0x21, 0x00, 0x70, 0x39, 0x37, 0x01, 0xe7, 0xf9, + 0xe7, 0xb0, 0x99, 0x03, 0x00, 0x48, 0x99, 0x02, + 0x1a, 0x08, 0x23, 0x0d, 0x06, 0x9b, 0x18, 0xc0, + 0x49, 0x29, 0x64, 0x88, 0x99, 0x09, 0x20, 0x78, + 0x40, 0x08, 0x23, 0x02, 0x43, 0x18, 0xf7, 0xff, + 0xfa, 0x17, 0x20, 0x01, 0xf7, 0xff, 0xfa, 0x14, + 0x48, 0x22, 0x68, 0x00, 0x38, 0x02, 0x42, 0xa0, + 0xd1, 0x09, 0x48, 0x22, 0x68, 0x01, 0x23, 0x01, + 0x05, 0x5b, 0x43, 0x19, 0x60, 0x01, 0x20, 0xff, + 0x49, 0x1f, 0x68, 0x09, 0x70, 0x08, 0x48, 0x1b, + 0x68, 0x00, 0x38, 0x02, 0x42, 0xa0, 0xd3, 0x0f, + 0x48, 0x1c, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, + 0x48, 0x1a, 0x68, 0x00, 0x23, 0x01, 0x06, 0x9b, + 0x40, 0x18, 0xd0, 0x05, 0x20, 0x32, 0x49, 0x13, + 0x60, 0x08, 0x48, 0x12, 0x68, 0x00, 0x1e, 0x84, + 0x2c, 0x01, 0xd1, 0x02, 0x20, 0x02, 0xf7, 0xff, + 0xf9, 0xeb, 0x2c, 0xff, 0xd1, 0x08, 0x20, 0x33, + 0x06, 0x40, 0x6d, 0xc0, 0x30, 0xbc, 0x49, 0x0c, + 0x6c, 0xc9, 0x42, 0x88, 0xd2, 0x00, 0x24, 0x18, + 0x2c, 0x00, 0xd0, 0x02, 0x2c, 0xff, 0xd0, 0x00, + 0x3c, 0x01, 0x98, 0x08, 0x60, 0x04, 0xb0, 0x08, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x5e, 0x4c, 0x2e, 0x08, 0x5e, 0x38, + 0x2e, 0x08, 0x5d, 0xd8, 0x2e, 0x08, 0x1f, 0x20, + 0x66, 0x00, 0x00, 0x80, 0x6c, 0x00, 0x00, 0x20, + 0x2e, 0x08, 0x5e, 0x34, 0x6c, 0x00, 0x08, 0x00, + 0xb5, 0xff, 0x1c, 0x04, 0x1c, 0x0f, 0x9a, 0x02, + 0x06, 0x15, 0x0e, 0x2d, 0x9b, 0x03, 0x06, 0x1e, + 0x0e, 0x36, 0x2e, 0x20, 0xdb, 0x04, 0x20, 0xa2, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2d, 0x1f, 0xdb, 0x01, 0x20, 0xaf, 0xe7, 0xf7, + 0x20, 0x01, 0x03, 0x40, 0xf7, 0xff, 0xf9, 0xac, + 0x20, 0x14, 0x49, 0x09, 0x60, 0x08, 0x20, 0xff, + 0x60, 0x20, 0x1c, 0x33, 0x1c, 0x29, 0x1c, 0x38, + 0x22, 0x02, 0xf7, 0xfc, 0xfa, 0x4b, 0x48, 0x05, + 0x68, 0x01, 0x23, 0x01, 0x05, 0x5b, 0x43, 0x19, + 0x60, 0x01, 0x20, 0x00, 0xe7, 0xe0, 0xe7, 0xdf, + 0x2e, 0x08, 0x1f, 0x20, 0x6c, 0x00, 0x00, 0x20, + 0xb4, 0x0f, 0xb5, 0xf0, 0x1c, 0x07, 0xb0, 0x82, + 0x20, 0x00, 0x49, 0x16, 0x60, 0x08, 0x48, 0x16, + 0x6f, 0x80, 0x23, 0x09, 0x01, 0x9b, 0x42, 0x98, + 0xd1, 0x02, 0x20, 0xe1, 0x00, 0xc0, 0xe0, 0x00, + 0x48, 0x12, 0x1c, 0x05, 0x68, 0x38, 0x28, 0xff, + 0xd1, 0x17, 0x98, 0x0d, 0x90, 0x00, 0x98, 0x0c, + 0x90, 0x01, 0x98, 0x01, 0x99, 0x00, 0x1a, 0x46, + 0x08, 0x68, 0x19, 0x81, 0x1c, 0x28, 0xf0, 0x09, + 0xfa, 0xeb, 0x1c, 0x04, 0x34, 0x01, 0x0f, 0xf0, + 0x07, 0xc0, 0xd0, 0x00, 0x24, 0x04, 0x2c, 0x32, + 0xd9, 0x00, 0x24, 0x04, 0x1d, 0xe0, 0x30, 0x0d, + 0x60, 0x38, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0xb0, 0x04, 0x47, 0x18, 0x2e, 0x08, 0x5e, 0x4c, + 0xcc, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x05, 0xdd, + 0xb5, 0xf3, 0x1c, 0x07, 0xb0, 0x81, 0x99, 0x02, + 0x06, 0x09, 0x0e, 0x09, 0x91, 0x00, 0xb0, 0x82, + 0x99, 0x02, 0x29, 0x20, 0xdb, 0x05, 0x20, 0xa2, + 0xb0, 0x03, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x99, 0x02, 0x00, 0x88, 0x49, 0x2f, + 0x58, 0x08, 0x90, 0x01, 0x28, 0x00, 0xd1, 0x02, + 0x20, 0xb0, 0xb0, 0x03, 0xe7, 0xf1, 0x20, 0x00, + 0x70, 0x78, 0x78, 0xb8, 0x07, 0x00, 0x0f, 0x00, + 0x90, 0x00, 0x98, 0x00, 0x28, 0x04, 0xd1, 0x1f, + 0x6a, 0xfe, 0x24, 0x00, 0x2c, 0x08, 0xdb, 0x04, + 0xe0, 0x18, 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, + 0xe7, 0xf8, 0x00, 0xa0, 0x19, 0x80, 0x68, 0x40, + 0x00, 0xa1, 0x19, 0x89, 0x64, 0x48, 0x21, 0x00, + 0x00, 0xa0, 0x19, 0x80, 0x62, 0x41, 0x00, 0xa0, + 0x19, 0x80, 0x6c, 0x40, 0x28, 0x00, 0xd0, 0x04, + 0x20, 0x80, 0x41, 0x20, 0x88, 0x31, 0x43, 0x08, + 0x80, 0x30, 0xe7, 0xe6, 0x88, 0x30, 0x80, 0x70, + 0x78, 0xb8, 0x23, 0x20, 0x40, 0x18, 0xd0, 0x1f, + 0x6b, 0x3d, 0x20, 0x00, 0x60, 0x28, 0x20, 0x00, + 0x60, 0x68, 0x20, 0x00, 0x60, 0xa8, 0x24, 0x00, + 0x2c, 0x08, 0xdb, 0x04, 0xe0, 0x0c, 0x1c, 0x60, + 0x06, 0x04, 0x0e, 0x24, 0xe7, 0xf8, 0x20, 0x00, + 0x00, 0xa1, 0x19, 0x49, 0x60, 0xc8, 0x20, 0x00, + 0x00, 0xa1, 0x19, 0x49, 0x63, 0x88, 0xe7, 0xf2, + 0x20, 0x00, 0x62, 0xe8, 0x20, 0x00, 0x63, 0x28, + 0x20, 0x00, 0x63, 0x68, 0x20, 0x00, 0x65, 0xa8, + 0x99, 0x02, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x3e, + 0xb0, 0x03, 0xe7, 0x9e, 0xb0, 0x02, 0xb0, 0x01, + 0xe7, 0x9b, 0x00, 0x00, 0x2e, 0x08, 0x5e, 0x64, + 0xb5, 0xf3, 0x1c, 0x07, 0x99, 0x01, 0x06, 0x0c, + 0x0e, 0x24, 0xb0, 0x82, 0x2c, 0x20, 0xdb, 0x05, + 0x20, 0xa2, 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0xa0, 0x49, 0x12, + 0x58, 0x08, 0x1c, 0x05, 0xd1, 0x02, 0x20, 0xb0, + 0xb0, 0x02, 0xe7, 0xf3, 0x1c, 0x21, 0x1c, 0x38, + 0xf0, 0x00, 0xf9, 0x84, 0x1c, 0x06, 0xd0, 0x02, + 0x1c, 0x30, 0xb0, 0x02, 0xe7, 0xea, 0x78, 0x68, + 0x21, 0x20, 0x40, 0x01, 0x91, 0x00, 0x99, 0x00, + 0x1c, 0x38, 0xf0, 0x00, 0xff, 0x3f, 0x68, 0xe9, + 0x91, 0x01, 0x29, 0x00, 0xd0, 0x03, 0x99, 0x01, + 0x1c, 0x38, 0xf0, 0x03, 0xfe, 0x7a, 0x20, 0x00, + 0xb0, 0x02, 0xe7, 0xd7, 0xb0, 0x02, 0xe7, 0xd5, + 0x2e, 0x08, 0x5e, 0x64, 0xb5, 0xf3, 0x1c, 0x02, + 0x99, 0x01, 0x06, 0x0f, 0x0e, 0x3f, 0xb0, 0x86, + 0x00, 0xb8, 0x4b, 0xa1, 0x68, 0x1b, 0x18, 0xc0, + 0x90, 0x00, 0x2f, 0x20, 0xdb, 0x05, 0x20, 0xa2, + 0xb0, 0x06, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0xb8, 0x4b, 0x9b, 0x58, 0x18, + 0x90, 0x05, 0x28, 0x00, 0xd1, 0x02, 0x20, 0xb0, + 0xb0, 0x06, 0xe7, 0xf2, 0x78, 0x90, 0x90, 0x01, + 0x71, 0xd7, 0x78, 0xd1, 0x98, 0x01, 0x23, 0x80, + 0x40, 0x18, 0xd1, 0x73, 0x29, 0x20, 0xdd, 0x02, + 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0xe5, 0x48, 0x92, + 0x68, 0x00, 0x23, 0x01, 0x42, 0xd8, 0xd1, 0x02, + 0x20, 0xb2, 0xb0, 0x06, 0xe7, 0xdd, 0x20, 0x01, + 0x40, 0x88, 0x4b, 0x8d, 0x68, 0x1b, 0x40, 0x18, + 0xd0, 0x02, 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0xd4, + 0x00, 0x88, 0x4b, 0x8a, 0x50, 0x1a, 0x48, 0x8a, + 0x54, 0x47, 0x01, 0x08, 0x4b, 0x89, 0x18, 0xc5, + 0x7f, 0x10, 0x06, 0x00, 0x7f, 0x53, 0x04, 0x1b, + 0x43, 0x18, 0x7f, 0x93, 0x02, 0x1b, 0x43, 0x18, + 0x7f, 0xd3, 0x43, 0x03, 0xc5, 0x08, 0x1d, 0xd0, + 0x30, 0x19, 0x78, 0x00, 0x06, 0x00, 0x1d, 0xd3, + 0x33, 0x19, 0x78, 0x5b, 0x04, 0x1b, 0x43, 0x18, + 0x1d, 0xd3, 0x33, 0x19, 0x78, 0x9b, 0x02, 0x1b, + 0x43, 0x18, 0x1d, 0xd3, 0x33, 0x19, 0x78, 0xdb, + 0x43, 0x03, 0xc5, 0x08, 0x01, 0x08, 0x4b, 0x7a, + 0x18, 0xc4, 0x7b, 0x10, 0x06, 0x00, 0x7b, 0x53, + 0x04, 0x1b, 0x43, 0x18, 0x7b, 0x93, 0x02, 0x1b, + 0x43, 0x18, 0x7b, 0xd3, 0x43, 0x03, 0xc4, 0x08, + 0x7c, 0x10, 0x06, 0x00, 0x7c, 0x53, 0x04, 0x1b, + 0x43, 0x18, 0x7c, 0x93, 0x02, 0x1b, 0x43, 0x18, + 0x7c, 0xd3, 0x43, 0x03, 0xc4, 0x08, 0x98, 0x01, + 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x20, 0x1d, 0xd0, + 0x30, 0x19, 0x79, 0x00, 0x06, 0x00, 0x1d, 0xd3, + 0x33, 0x19, 0x79, 0x5b, 0x04, 0x1b, 0x43, 0x18, + 0x1d, 0xd3, 0x33, 0x19, 0x79, 0x9b, 0x02, 0x1b, + 0x43, 0x18, 0x1d, 0xd3, 0x33, 0x19, 0x79, 0xdb, + 0x43, 0x03, 0xc5, 0x08, 0x7d, 0x10, 0x06, 0x00, + 0x7d, 0x53, 0x04, 0x1b, 0x43, 0x18, 0x7d, 0x93, + 0x02, 0x1b, 0xe0, 0x00, 0xe0, 0x42, 0x43, 0x18, + 0x7d, 0xd3, 0x43, 0x03, 0xc4, 0x08, 0xe0, 0x03, + 0x23, 0x00, 0xc5, 0x08, 0x23, 0x00, 0xc4, 0x08, + 0x23, 0xff, 0xc5, 0x08, 0x20, 0x19, 0x06, 0x80, + 0x6b, 0x00, 0x23, 0x08, 0x40, 0x18, 0xd0, 0x06, + 0x88, 0x90, 0x04, 0x00, 0x19, 0xc3, 0x93, 0x02, + 0x9b, 0x02, 0xc4, 0x08, 0xe0, 0x00, 0xc4, 0x80, + 0x98, 0x01, 0x23, 0x08, 0x40, 0x18, 0xd0, 0x17, + 0x48, 0x50, 0x5d, 0xc0, 0x30, 0x01, 0x4b, 0x4f, + 0x55, 0xd8, 0x7a, 0x10, 0x07, 0xc0, 0x0f, 0xc0, + 0xd0, 0x04, 0x20, 0x01, 0x40, 0x88, 0x23, 0x19, + 0x06, 0x9b, 0x61, 0x18, 0x7a, 0x10, 0x23, 0x02, + 0x40, 0x18, 0xd0, 0x04, 0x20, 0x01, 0x40, 0x88, + 0x23, 0x19, 0x06, 0x9b, 0x61, 0x58, 0xe0, 0x05, + 0x4e, 0x45, 0x20, 0x01, 0x40, 0x88, 0x68, 0x33, + 0x43, 0x18, 0x60, 0x30, 0x20, 0x01, 0x40, 0x88, + 0x4b, 0x3b, 0x68, 0x1b, 0x43, 0x18, 0x4b, 0x3a, + 0x60, 0x18, 0xe0, 0x4f, 0x98, 0x01, 0x23, 0x80, + 0x40, 0x18, 0xd0, 0x48, 0x48, 0x3d, 0x88, 0x00, + 0x4b, 0x3d, 0x42, 0x98, 0xd1, 0x02, 0x20, 0xb2, + 0xb0, 0x06, 0xe7, 0x26, 0x00, 0x88, 0x4b, 0x3b, + 0x58, 0x18, 0x28, 0x00, 0xd0, 0x02, 0x20, 0xb1, + 0xb0, 0x06, 0xe7, 0x1e, 0x29, 0x10, 0xdb, 0x02, + 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0x19, 0x20, 0x01, + 0x40, 0x88, 0x4b, 0x32, 0x88, 0x1b, 0x40, 0x18, + 0xd0, 0x02, 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0x10, + 0x98, 0x05, 0x78, 0x80, 0x28, 0x02, 0xdb, 0x02, + 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0x09, 0x00, 0x88, + 0x4b, 0x2c, 0x50, 0x1a, 0x48, 0x2c, 0x54, 0x47, + 0x00, 0xf8, 0x1b, 0xc0, 0x00, 0x80, 0x4b, 0x2b, + 0x68, 0x1b, 0x18, 0xc0, 0x90, 0x04, 0x98, 0x04, + 0x7e, 0x00, 0x28, 0xff, 0xd1, 0x02, 0x98, 0x04, + 0x76, 0x01, 0xe0, 0x01, 0x98, 0x04, 0x76, 0x41, + 0x4e, 0x25, 0x96, 0x03, 0x1d, 0xd3, 0x33, 0x05, + 0x00, 0x88, 0x9e, 0x03, 0x50, 0x33, 0x20, 0x01, + 0x40, 0x88, 0x4b, 0x1c, 0x88, 0x1b, 0x43, 0x18, + 0x4b, 0x1a, 0x80, 0x18, 0xe0, 0x02, 0x20, 0xb1, + 0xb0, 0x06, 0xe6, 0xe2, 0x78, 0x50, 0x23, 0x80, + 0x43, 0xdb, 0x40, 0x18, 0x70, 0x50, 0x98, 0x05, + 0x78, 0x80, 0x28, 0x00, 0xd1, 0x09, 0x98, 0x00, + 0x68, 0x00, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, + 0x9b, 0x00, 0x60, 0x18, 0x20, 0x02, 0x9b, 0x05, + 0x70, 0xd8, 0x98, 0x05, 0x78, 0x80, 0x30, 0x01, + 0x9b, 0x05, 0x70, 0x98, 0x20, 0x00, 0xb0, 0x06, + 0xe6, 0xc7, 0xb0, 0x06, 0xe6, 0xc5, 0x00, 0x00, + 0x2e, 0x08, 0x5d, 0xd4, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x5e, 0xe4, 0x2e, 0x08, 0x5e, 0xec, + 0x2e, 0x08, 0x5f, 0xac, 0x64, 0x00, 0x10, 0x00, + 0x64, 0x00, 0x08, 0x00, 0x2e, 0x08, 0x7b, 0xfc, + 0x64, 0x00, 0x00, 0x18, 0x2e, 0x08, 0x5e, 0xe8, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x5f, 0x6c, + 0x2e, 0x08, 0x5f, 0xcc, 0x2e, 0x08, 0x5d, 0xcc, + 0x9e, 0x00, 0x04, 0xb8, 0xb5, 0xf3, 0x1c, 0x02, + 0x99, 0x01, 0x06, 0x0f, 0x0e, 0x3f, 0xb0, 0x86, + 0x00, 0xb8, 0x4b, 0x65, 0x68, 0x1b, 0x18, 0xc0, + 0x90, 0x01, 0x2f, 0x20, 0xdb, 0x05, 0x20, 0xa2, + 0xb0, 0x06, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0xb8, 0x4b, 0x5f, 0x58, 0x18, + 0x1c, 0x05, 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x06, + 0xe7, 0xf3, 0x78, 0x90, 0x90, 0x03, 0x78, 0xd1, + 0x00, 0x88, 0x4b, 0x5b, 0x58, 0x18, 0x42, 0x90, + 0xd0, 0x02, 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0xe8, + 0x98, 0x03, 0x23, 0x80, 0x40, 0x18, 0xd1, 0x49, + 0x01, 0x08, 0x4b, 0x56, 0x18, 0xc3, 0x93, 0x00, + 0x20, 0x00, 0x9b, 0x00, 0x60, 0x18, 0x23, 0x00, + 0x00, 0x88, 0x4e, 0x51, 0x50, 0x33, 0x23, 0xff, + 0x48, 0x51, 0x54, 0x43, 0x20, 0x01, 0x40, 0x88, + 0x43, 0xc0, 0x4b, 0x50, 0x68, 0x1b, 0x40, 0x18, + 0x4b, 0x4e, 0x60, 0x18, 0x98, 0x03, 0x23, 0x08, + 0x40, 0x18, 0xd0, 0x27, 0x20, 0x01, 0x40, 0x88, + 0x90, 0x04, 0x7a, 0x10, 0x07, 0xc0, 0x0f, 0xc0, + 0xd0, 0x0b, 0x98, 0x04, 0x23, 0x19, 0x06, 0x9b, + 0x69, 0x1b, 0x40, 0x18, 0xd0, 0x04, 0x98, 0x04, + 0x23, 0x19, 0x06, 0x9b, 0x61, 0x18, 0xe7, 0xf4, + 0xe0, 0x0e, 0x7a, 0x10, 0x23, 0x02, 0x40, 0x18, + 0xd0, 0x0a, 0x98, 0x04, 0x23, 0x19, 0x06, 0x9b, + 0x69, 0x5b, 0x40, 0x18, 0xd0, 0x04, 0x98, 0x04, + 0x23, 0x19, 0x06, 0x9b, 0x61, 0x58, 0xe7, 0xf4, + 0x48, 0x3b, 0x5d, 0xc0, 0x38, 0x01, 0x4b, 0x3a, + 0x55, 0xd8, 0xe0, 0x06, 0x4e, 0x39, 0x20, 0x01, + 0x40, 0x88, 0x43, 0xc0, 0x68, 0x33, 0x40, 0x18, + 0x60, 0x30, 0xe0, 0x36, 0x98, 0x03, 0x23, 0x80, + 0x40, 0x18, 0xd0, 0x2f, 0x00, 0xf8, 0x1b, 0xc0, + 0x00, 0x80, 0x4b, 0x33, 0x68, 0x1b, 0x18, 0xc3, + 0x93, 0x02, 0x9b, 0x02, 0x7e, 0x18, 0x42, 0x88, + 0xd1, 0x03, 0x20, 0xff, 0x9b, 0x02, 0x76, 0x18, + 0xe0, 0x0a, 0x9b, 0x02, 0x7e, 0x58, 0x42, 0x88, + 0xd1, 0x03, 0x20, 0xff, 0x9b, 0x02, 0x76, 0x58, + 0xe0, 0x02, 0x20, 0xb1, 0xb0, 0x06, 0xe7, 0x7c, + 0x23, 0x00, 0x00, 0x88, 0x4e, 0x27, 0x50, 0x33, + 0x20, 0xff, 0x4b, 0x27, 0x54, 0x58, 0x20, 0x01, + 0x40, 0x88, 0x43, 0xc0, 0x4b, 0x25, 0x88, 0x1b, + 0x40, 0x18, 0x4b, 0x24, 0x80, 0x18, 0x4e, 0x24, + 0x96, 0x05, 0x23, 0x00, 0x00, 0x88, 0x9e, 0x05, + 0x50, 0x33, 0xe0, 0x02, 0x20, 0xb1, 0xb0, 0x06, + 0xe7, 0x63, 0x78, 0xa8, 0x38, 0x01, 0x70, 0xa8, + 0x78, 0x50, 0x23, 0x80, 0x43, 0x18, 0x70, 0x50, + 0x78, 0xa8, 0x28, 0x00, 0xd1, 0x07, 0x98, 0x01, + 0x68, 0x00, 0x4b, 0x1a, 0x40, 0x18, 0x9b, 0x01, + 0x60, 0x18, 0x20, 0x01, 0x70, 0xe8, 0x24, 0x1f, + 0x2c, 0x00, 0xd1, 0x02, 0xe0, 0x0a, 0x3c, 0x01, + 0xe7, 0xfa, 0x48, 0x0d, 0x5d, 0x00, 0x28, 0x00, + 0xd1, 0x03, 0x20, 0x19, 0x06, 0x80, 0x64, 0xc4, + 0xe0, 0x00, 0xe7, 0xf4, 0x20, 0x00, 0xb0, 0x06, + 0xe7, 0x3f, 0xb0, 0x06, 0xe7, 0x3d, 0x00, 0x00, + 0x2e, 0x08, 0x5d, 0xd4, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x5e, 0xec, 0x64, 0x00, 0x08, 0x08, + 0x2e, 0x08, 0x5f, 0xac, 0x2e, 0x08, 0x5e, 0xe4, + 0x2e, 0x08, 0x7b, 0xfc, 0x64, 0x00, 0x00, 0x18, + 0x2e, 0x08, 0x5d, 0xcc, 0x2e, 0x08, 0x5f, 0x6c, + 0x2e, 0x08, 0x5f, 0xcc, 0x2e, 0x08, 0x5e, 0xe8, + 0x9e, 0x00, 0x04, 0xb8, 0xff, 0xff, 0xdf, 0xff, + 0x1c, 0x03, 0x1c, 0x0a, 0x78, 0x58, 0x70, 0x10, + 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0xb5, 0xf7, + 0x1c, 0x07, 0xb0, 0x81, 0x9a, 0x03, 0x06, 0x10, + 0x0e, 0x00, 0x90, 0x00, 0xb0, 0x87, 0x78, 0x78, + 0x23, 0x80, 0x40, 0x18, 0xd0, 0x4c, 0x78, 0x78, + 0x23, 0x80, 0x40, 0x18, 0xd0, 0x48, 0x78, 0xb8, + 0x90, 0x06, 0x99, 0x09, 0x78, 0x88, 0x90, 0x05, + 0x98, 0x06, 0x23, 0x20, 0x40, 0x18, 0xd0, 0x3f, + 0x98, 0x05, 0x23, 0x20, 0x40, 0x18, 0xd0, 0x3b, + 0x6b, 0x38, 0x90, 0x01, 0x99, 0x09, 0x6b, 0x08, + 0x90, 0x00, 0x98, 0x01, 0x28, 0x00, 0xd1, 0x02, + 0x98, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd1, 0x05, + 0x20, 0xb6, 0xb0, 0x08, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x98, 0x01, 0x68, 0x05, + 0x98, 0x00, 0x68, 0x04, 0x7a, 0x2e, 0x7a, 0x21, + 0x91, 0x04, 0x7d, 0x6a, 0x92, 0x03, 0x7d, 0x62, + 0x92, 0x02, 0x98, 0x07, 0x28, 0x00, 0xd0, 0x0a, + 0x9a, 0x02, 0x99, 0x04, 0x1c, 0x28, 0xf0, 0x00, + 0xfc, 0xe5, 0x9a, 0x03, 0x1c, 0x31, 0x1c, 0x20, + 0xf0, 0x00, 0xfc, 0xe0, 0xe0, 0x09, 0x99, 0x04, + 0x1c, 0x28, 0x22, 0x00, 0xf0, 0x00, 0xfc, 0xda, + 0x1c, 0x31, 0x1c, 0x20, 0x22, 0x00, 0xf0, 0x00, + 0xfc, 0xd5, 0x20, 0x00, 0xb0, 0x08, 0xe7, 0xd5, + 0x20, 0xb1, 0xb0, 0x08, 0xe7, 0xd2, 0xb0, 0x07, + 0xb0, 0x01, 0xe7, 0xcf, 0xb4, 0xf0, 0x1c, 0x02, + 0x1c, 0x0b, 0x06, 0x1d, 0x0e, 0x2d, 0xb0, 0x82, + 0x2d, 0x00, 0xd1, 0x0a, 0x48, 0x1a, 0x69, 0x00, + 0x90, 0x01, 0x49, 0x1a, 0x48, 0x18, 0x69, 0x40, + 0x90, 0x00, 0x48, 0x17, 0x6a, 0x00, 0x1e, 0x44, + 0xe0, 0x10, 0x2d, 0x20, 0xd1, 0x0a, 0x48, 0x14, + 0x69, 0x80, 0x90, 0x01, 0x49, 0x14, 0x48, 0x12, + 0x69, 0xc0, 0x90, 0x00, 0x48, 0x10, 0x6a, 0x40, + 0x1e, 0x44, 0xe0, 0x03, 0x20, 0xb3, 0xb0, 0x02, + 0xbc, 0xf0, 0x47, 0x70, 0x20, 0x00, 0x70, 0x10, + 0x78, 0x50, 0x00, 0x80, 0x4e, 0x0d, 0x58, 0x37, + 0x69, 0x38, 0x61, 0x78, 0x98, 0x01, 0x9e, 0x00, + 0x42, 0xb0, 0xd0, 0x07, 0x98, 0x01, 0x30, 0x01, + 0x90, 0x01, 0x98, 0x01, 0x40, 0x20, 0x90, 0x01, + 0x98, 0x01, 0x60, 0x08, 0x20, 0x00, 0xb0, 0x02, + 0xe7, 0xe6, 0xb0, 0x02, 0xe7, 0xe4, 0x00, 0x00, + 0x9e, 0x00, 0x04, 0x80, 0x9e, 0x00, 0x04, 0x90, + 0x9e, 0x00, 0x04, 0x98, 0x2e, 0x08, 0x5e, 0x64, + 0xb5, 0xf3, 0x1c, 0x07, 0xb0, 0x81, 0x99, 0x02, + 0x06, 0x08, 0x0e, 0x00, 0x90, 0x00, 0xb0, 0x88, + 0x98, 0x08, 0x28, 0x00, 0xd1, 0x0e, 0x49, 0x69, + 0x91, 0x02, 0x48, 0x69, 0x69, 0x00, 0x90, 0x07, + 0x48, 0x68, 0x90, 0x06, 0x48, 0x66, 0x69, 0x40, + 0x90, 0x05, 0x48, 0x65, 0x6a, 0x00, 0x1e, 0x41, + 0x91, 0x04, 0xe0, 0x17, 0x98, 0x08, 0x28, 0x20, + 0xd1, 0x0e, 0x49, 0x63, 0x91, 0x02, 0x48, 0x60, + 0x69, 0x80, 0x90, 0x07, 0x48, 0x61, 0x90, 0x06, + 0x48, 0x5d, 0x69, 0xc0, 0x90, 0x05, 0x48, 0x5c, + 0x6a, 0x40, 0x1e, 0x41, 0x91, 0x04, 0xe0, 0x05, + 0x20, 0xb3, 0xb0, 0x09, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x25, 0x00, 0x98, 0x07, + 0x99, 0x05, 0x42, 0x88, 0xd0, 0x73, 0x2d, 0x00, + 0xd1, 0x72, 0x98, 0x07, 0x00, 0x80, 0x99, 0x02, + 0x18, 0x40, 0x23, 0x01, 0x02, 0x9b, 0x18, 0xc0, + 0x68, 0x01, 0x91, 0x03, 0x98, 0x07, 0x00, 0x80, + 0x99, 0x02, 0x58, 0x08, 0x90, 0x01, 0x99, 0x02, + 0x98, 0x07, 0x18, 0x08, 0x23, 0x01, 0x02, 0xdb, + 0x18, 0xc0, 0x78, 0x00, 0x90, 0x00, 0x20, 0x00, + 0x99, 0x02, 0x9a, 0x07, 0x18, 0x89, 0x23, 0x01, + 0x02, 0xdb, 0x18, 0xc9, 0x70, 0x08, 0x98, 0x07, + 0x30, 0x01, 0x90, 0x07, 0x98, 0x07, 0x99, 0x04, + 0x40, 0x08, 0x90, 0x07, 0x99, 0x03, 0x29, 0x00, + 0xd0, 0x71, 0xb0, 0x83, 0x20, 0x00, 0x90, 0x00, + 0x99, 0x06, 0x91, 0x02, 0x20, 0x01, 0x90, 0x01, + 0x98, 0x03, 0x28, 0x80, 0xd1, 0x1f, 0x24, 0x00, + 0x2c, 0x10, 0xd3, 0x02, 0xe0, 0x1a, 0x34, 0x01, + 0xe7, 0xfa, 0x98, 0x01, 0x99, 0x02, 0x40, 0x08, + 0xd0, 0x10, 0x48, 0x39, 0x5d, 0x00, 0x28, 0xff, + 0xd0, 0x0c, 0x48, 0x37, 0x5d, 0x00, 0x90, 0x00, + 0x00, 0xa0, 0x49, 0x36, 0x58, 0x09, 0x00, 0xa8, + 0x19, 0xc0, 0x61, 0x01, 0x1c, 0x68, 0x06, 0x05, + 0x0e, 0x2d, 0xe0, 0x03, 0x98, 0x01, 0x00, 0x40, + 0x90, 0x01, 0xe7, 0xe4, 0xe0, 0x1d, 0x24, 0x00, + 0x2c, 0x20, 0xd3, 0x02, 0xe0, 0x19, 0x34, 0x01, + 0xe7, 0xfa, 0x98, 0x01, 0x99, 0x02, 0x40, 0x08, + 0xd0, 0x0f, 0x48, 0x2b, 0x5d, 0x00, 0x28, 0xff, + 0xd0, 0x0b, 0x48, 0x29, 0x5d, 0x00, 0x90, 0x00, + 0x00, 0xa0, 0x49, 0x28, 0x58, 0x09, 0x00, 0xa8, + 0x19, 0xc0, 0x61, 0x01, 0x1c, 0x68, 0x06, 0x05, + 0x0e, 0x2d, 0x98, 0x01, 0x00, 0x40, 0x90, 0x01, + 0xe7, 0xe5, 0x2d, 0x00, 0xe0, 0x01, 0xe0, 0x27, + 0xe0, 0x26, 0xd0, 0x23, 0xb0, 0x81, 0x98, 0x01, + 0x70, 0x78, 0x98, 0x05, 0x60, 0x78, 0x98, 0x01, + 0x00, 0x80, 0x49, 0x1d, 0x58, 0x08, 0x90, 0x00, + 0x98, 0x00, 0x69, 0x46, 0x98, 0x05, 0x42, 0xb0, + 0xd3, 0x04, 0x1d, 0xf0, 0x30, 0xb9, 0x99, 0x05, + 0x42, 0x88, 0xd2, 0x08, 0x68, 0x30, 0x28, 0x00, + 0xd0, 0x01, 0x68, 0x36, 0xe0, 0x02, 0x20, 0xba, + 0xb0, 0x0d, 0xe7, 0x63, 0xe7, 0xee, 0x60, 0xbe, + 0x98, 0x00, 0x61, 0x46, 0x1c, 0x38, 0xf0, 0x00, + 0xfb, 0x02, 0xb0, 0x01, 0xb0, 0x03, 0xe7, 0x5e, + 0x70, 0x3d, 0x98, 0x07, 0x99, 0x06, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x09, 0xe7, 0x52, 0xb0, 0x08, + 0xb0, 0x01, 0xe7, 0x4f, 0x2e, 0x08, 0x60, 0x98, + 0x9e, 0x00, 0x04, 0x80, 0x9e, 0x00, 0x04, 0x90, + 0x2e, 0x08, 0x69, 0x98, 0x9e, 0x00, 0x04, 0x98, + 0x2e, 0x08, 0x5f, 0xcc, 0x2e, 0x08, 0x5f, 0x6c, + 0x2e, 0x08, 0x5f, 0xac, 0x2e, 0x08, 0x5e, 0xec, + 0x2e, 0x08, 0x5e, 0x64, 0xb4, 0x90, 0x1c, 0x01, + 0x78, 0x48, 0x00, 0x80, 0x4c, 0x0d, 0x58, 0x23, + 0x69, 0x1a, 0x68, 0x8f, 0x42, 0xba, 0xd0, 0x12, + 0x68, 0x10, 0x42, 0xb8, 0xd0, 0x08, 0x68, 0x10, + 0x28, 0x00, 0xd0, 0x01, 0x68, 0x12, 0xe0, 0x02, + 0x20, 0xba, 0xbc, 0x90, 0x47, 0x70, 0xe7, 0xf3, + 0x20, 0x00, 0x60, 0x10, 0x69, 0x9c, 0x69, 0x18, + 0x60, 0x20, 0x61, 0x1f, 0x61, 0x9a, 0x20, 0x00, + 0xe7, 0xf3, 0xe7, 0xf2, 0x2e, 0x08, 0x5e, 0x64, + 0xb4, 0xb0, 0x1c, 0x02, 0x1c, 0x0f, 0x78, 0x90, + 0x23, 0x04, 0x40, 0x18, 0xd0, 0x1c, 0x78, 0x90, + 0x23, 0x20, 0x40, 0x18, 0xd0, 0x18, 0x6b, 0x14, + 0x68, 0x20, 0x28, 0x00, 0xd0, 0x02, 0x1d, 0xe5, + 0x35, 0x05, 0xe0, 0x01, 0x1d, 0xe5, 0x35, 0x31, + 0x21, 0x00, 0x29, 0x08, 0xdb, 0x04, 0xe0, 0x08, + 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, + 0x00, 0x88, 0x58, 0x2b, 0x00, 0x88, 0x50, 0x3b, + 0xe7, 0xf6, 0x20, 0x00, 0xbc, 0xb0, 0x47, 0x70, + 0x20, 0xb1, 0xe7, 0xfb, 0xe7, 0xfa, 0xb5, 0xf3, + 0x1c, 0x0a, 0xb0, 0x93, 0x20, 0x00, 0x90, 0x06, + 0x98, 0x13, 0x69, 0x00, 0x90, 0x00, 0x98, 0x00, + 0x6b, 0x00, 0x90, 0x12, 0x98, 0x00, 0x78, 0x80, + 0x90, 0x05, 0x98, 0x12, 0x68, 0x00, 0x90, 0x01, + 0x28, 0x00, 0xd0, 0x03, 0x98, 0x12, 0x30, 0x0c, + 0x90, 0x09, 0xe0, 0x0e, 0x98, 0x12, 0x6a, 0xc0, + 0x90, 0x01, 0x28, 0x00, 0xd0, 0x03, 0x98, 0x12, + 0x30, 0x38, 0x90, 0x09, 0xe0, 0x05, 0x20, 0xb1, + 0xb0, 0x13, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x20, 0x00, 0x90, 0x06, 0x98, 0x05, + 0x23, 0x04, 0x40, 0x18, 0xd0, 0x73, 0x21, 0x00, + 0x29, 0x08, 0xdb, 0x04, 0xe0, 0x0c, 0x1c, 0x48, + 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x98, 0x13, + 0x30, 0x80, 0x69, 0x00, 0x00, 0x8b, 0x58, 0xc0, + 0x00, 0x8e, 0xab, 0x0a, 0x51, 0x98, 0xe7, 0xf2, + 0x9d, 0x01, 0x21, 0x00, 0x29, 0x08, 0xdb, 0x04, + 0xe0, 0xa7, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, + 0xe7, 0xf8, 0x00, 0x88, 0xab, 0x0a, 0x58, 0x18, + 0x28, 0x00, 0xd0, 0x55, 0x20, 0x00, 0x90, 0x08, + 0x48, 0x73, 0x90, 0x07, 0x20, 0x00, 0x90, 0x02, + 0x98, 0x02, 0x28, 0x20, 0xdb, 0x06, 0xe0, 0x8d, + 0x98, 0x02, 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, + 0x90, 0x02, 0xe7, 0xf5, 0x00, 0x8b, 0xa8, 0x0a, + 0x58, 0xc0, 0x9b, 0x07, 0x40, 0x18, 0x90, 0x08, + 0x28, 0x00, 0xd0, 0x73, 0x00, 0x88, 0x9b, 0x09, + 0x58, 0x18, 0x9b, 0x08, 0x40, 0x18, 0xd0, 0x6e, + 0x1d, 0xec, 0x34, 0x01, 0x27, 0x00, 0x79, 0xa0, + 0x9b, 0x06, 0x42, 0x98, 0xd0, 0x08, 0x68, 0x68, + 0x1c, 0x05, 0xd1, 0x02, 0x20, 0xba, 0xb0, 0x13, + 0xe7, 0xab, 0x1d, 0xec, 0x34, 0x01, 0xe7, 0xf2, + 0x78, 0x60, 0x07, 0x00, 0x0f, 0x00, 0x02, 0x00, + 0x04, 0x07, 0x0c, 0x3f, 0x78, 0xa0, 0x19, 0xc0, + 0x30, 0x03, 0x04, 0x07, 0x0c, 0x3f, 0x2a, 0x00, + 0xd0, 0x42, 0x98, 0x13, 0x88, 0x40, 0x42, 0xb8, + 0xdb, 0x3a, 0x98, 0x13, 0x88, 0x40, 0x1b, 0xc0, + 0x9b, 0x13, 0x80, 0x58, 0x20, 0xbc, 0x90, 0x04, + 0x2f, 0x00, 0xdd, 0x30, 0x2f, 0xbc, 0xdd, 0x1b, + 0x20, 0x00, 0x90, 0x03, 0x98, 0x03, 0x28, 0xbc, + 0xdb, 0x09, 0xe0, 0x0d, 0x98, 0x03, 0x30, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0xe0, 0x01, 0xe0, 0x4c, + 0xe0, 0x41, 0x90, 0x03, 0xe7, 0xf2, 0x78, 0x23, + 0x34, 0x01, 0x70, 0x13, 0x32, 0x01, 0xe7, 0xf1, + 0x1f, 0xf8, 0x38, 0xb5, 0x04, 0x07, 0x0c, 0x3f, + 0x68, 0x2d, 0x1d, 0xec, 0x34, 0x01, 0xe0, 0x11, + 0x20, 0x00, 0x90, 0x03, 0x98, 0x03, 0x42, 0xb8, + 0xdb, 0x06, 0xe0, 0x0a, 0x98, 0x03, 0x30, 0x01, + 0x06, 0x00, 0x0e, 0x00, 0x90, 0x03, 0xe7, 0xf5, + 0x78, 0x23, 0x34, 0x01, 0x70, 0x13, 0x32, 0x01, + 0xe7, 0xf4, 0x27, 0x00, 0xe7, 0xcc, 0xe0, 0x02, + 0x20, 0xb7, 0xb0, 0x13, 0xe7, 0x59, 0xe0, 0x04, + 0x98, 0x13, 0x88, 0x40, 0x19, 0xc0, 0x9b, 0x13, + 0x80, 0x58, 0x00, 0x88, 0xab, 0x0a, 0x58, 0x18, + 0x9b, 0x07, 0x43, 0x98, 0x00, 0x8e, 0xab, 0x0a, + 0x51, 0x98, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, + 0x9d, 0x01, 0x98, 0x06, 0x30, 0x01, 0x06, 0x00, + 0x0e, 0x00, 0x90, 0x06, 0x98, 0x07, 0x08, 0x40, + 0x90, 0x07, 0xe7, 0x71, 0xe0, 0x04, 0x98, 0x06, + 0x30, 0x20, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x06, + 0xe7, 0x57, 0x20, 0x00, 0xb0, 0x13, 0xe7, 0x34, + 0xe0, 0x44, 0x98, 0x05, 0x23, 0x02, 0x40, 0x18, + 0xd0, 0x3b, 0x98, 0x01, 0x1d, 0xc4, 0x34, 0x01, + 0x78, 0x60, 0x07, 0x00, 0x0f, 0x00, 0x02, 0x00, + 0x04, 0x07, 0x0c, 0x3f, 0x78, 0xa0, 0x19, 0xc0, + 0x30, 0x03, 0x04, 0x07, 0x0c, 0x3f, 0x2f, 0x00, + 0xdd, 0x28, 0x2f, 0xbc, 0xdd, 0x17, 0x21, 0x00, + 0x29, 0xbc, 0xdb, 0x04, 0xe0, 0x08, 0x1c, 0x48, + 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x78, 0x23, + 0x34, 0x01, 0x70, 0x13, 0x32, 0x01, 0xe7, 0xf6, + 0x1f, 0xf8, 0x38, 0xb5, 0x04, 0x07, 0x0c, 0x3f, + 0x98, 0x01, 0x68, 0x00, 0x90, 0x01, 0x98, 0x01, + 0x1d, 0xc4, 0x34, 0x01, 0xe0, 0x0d, 0x21, 0x00, + 0x42, 0xb9, 0xdb, 0x04, 0xe0, 0x08, 0x1c, 0x48, + 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x78, 0x23, + 0x34, 0x01, 0x70, 0x13, 0x32, 0x01, 0xe7, 0xf6, + 0x27, 0x00, 0xe7, 0xd4, 0x20, 0x00, 0xb0, 0x13, + 0xe6, 0xf3, 0x20, 0xb1, 0xb0, 0x13, 0xe6, 0xf0, + 0xb0, 0x13, 0xe6, 0xee, 0xe6, 0xed, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0xb5, 0xf3, 0xb0, 0x84, + 0x98, 0x04, 0x78, 0x40, 0x00, 0x80, 0x49, 0x4b, + 0x58, 0x08, 0x90, 0x03, 0x28, 0x00, 0xd1, 0x05, + 0x20, 0xb0, 0xb0, 0x04, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x98, 0x04, 0x68, 0x86, + 0x98, 0x04, 0x88, 0x47, 0x98, 0x04, 0x68, 0x44, + 0x1d, 0xf0, 0x30, 0xb9, 0x99, 0x04, 0x68, 0x49, + 0x1a, 0x45, 0x42, 0xbd, 0xdb, 0x0c, 0x2f, 0x00, + 0xdb, 0x01, 0x2f, 0xbc, 0xdd, 0x02, 0x20, 0xba, + 0xb0, 0x04, 0xe7, 0xe7, 0x1c, 0x3a, 0x99, 0x05, + 0x1c, 0x20, 0xf0, 0x00, 0xf9, 0x29, 0xe0, 0x6b, + 0x20, 0x00, 0x90, 0x00, 0x98, 0x04, 0x78, 0x40, + 0x00, 0xc3, 0x1a, 0x18, 0x00, 0x80, 0x49, 0x36, + 0x68, 0x09, 0x18, 0x40, 0x90, 0x01, 0x98, 0x01, + 0x78, 0x80, 0x90, 0x02, 0x98, 0x02, 0x06, 0xc0, + 0x0e, 0xc0, 0x90, 0x02, 0x98, 0x02, 0x28, 0x12, + 0xd1, 0x03, 0x2d, 0x0e, 0xda, 0x01, 0x20, 0x01, + 0x90, 0x00, 0x2f, 0x00, 0xdd, 0x50, 0xb0, 0x81, + 0x42, 0xaf, 0xdd, 0x0d, 0x2d, 0x00, 0xdb, 0x01, + 0x2d, 0xbc, 0xdd, 0x02, 0x20, 0xba, 0xb0, 0x05, + 0xe7, 0xbc, 0x1c, 0x2a, 0x99, 0x06, 0x1c, 0x20, + 0xf0, 0x00, 0xf8, 0xfe, 0x68, 0x36, 0xe0, 0x0b, + 0x2f, 0x00, 0xdb, 0x01, 0x2f, 0xbc, 0xdd, 0x02, + 0x20, 0xba, 0xb0, 0x05, 0xe7, 0xae, 0x1c, 0x3a, + 0x99, 0x06, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0xf0, + 0x99, 0x06, 0x19, 0x49, 0x91, 0x06, 0x1b, 0x7f, + 0x1d, 0x31, 0x91, 0x00, 0x99, 0x00, 0x78, 0x88, + 0x19, 0x84, 0x98, 0x01, 0x28, 0x00, 0xd0, 0x20, + 0x99, 0x00, 0x78, 0xc8, 0x23, 0x80, 0x40, 0x18, + 0xd1, 0x1b, 0x1d, 0xf0, 0x30, 0xb9, 0x1b, 0x05, + 0x42, 0xbd, 0xdb, 0x01, 0x3c, 0x01, 0xe0, 0x14, + 0x1c, 0x68, 0x42, 0xb8, 0xd1, 0x11, 0x99, 0x00, + 0x78, 0x88, 0x28, 0x09, 0xdd, 0x08, 0x99, 0x00, + 0x79, 0x08, 0x30, 0x09, 0x99, 0x00, 0x78, 0x89, + 0x42, 0x88, 0xd0, 0x00, 0x3c, 0x01, 0xe0, 0x04, + 0x99, 0x00, 0x78, 0x88, 0x28, 0x09, 0xd1, 0x00, + 0x3c, 0x01, 0x20, 0x00, 0x90, 0x01, 0x1d, 0xf0, + 0x30, 0xb9, 0x1b, 0x05, 0xb0, 0x01, 0xe7, 0xac, + 0x20, 0x00, 0xb0, 0x04, 0xe7, 0x72, 0xb0, 0x04, + 0xe7, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x5d, 0xcc, 0xb5, 0xf1, 0x98, 0x00, + 0x06, 0x04, 0x0e, 0x24, 0xb0, 0x83, 0x00, 0xa0, + 0x4b, 0x4c, 0x58, 0x1d, 0x78, 0x28, 0x90, 0x02, + 0x2c, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x03, + 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0xa0, 0x4b, 0x46, 0x58, 0x18, 0x1c, 0x05, + 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x03, 0xe7, 0xf3, + 0x00, 0xe0, 0x1b, 0x00, 0x00, 0x80, 0x4b, 0x42, + 0x68, 0x1b, 0x18, 0xc7, 0x78, 0xa8, 0x28, 0x00, + 0xd0, 0x63, 0x20, 0x00, 0x42, 0x80, 0xd0, 0x20, + 0x21, 0x00, 0x29, 0x20, 0xdb, 0x04, 0xe0, 0x1b, + 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, + 0x00, 0x88, 0x4b, 0x3a, 0x58, 0x18, 0x90, 0x01, + 0x98, 0x01, 0x79, 0xc0, 0x42, 0xa0, 0xd1, 0x0e, + 0x20, 0x01, 0x40, 0x88, 0x43, 0xc0, 0x4b, 0x36, + 0x68, 0x1b, 0x40, 0x18, 0x4b, 0x34, 0x60, 0x18, + 0x23, 0x00, 0x00, 0x88, 0x4e, 0x31, 0x50, 0x33, + 0x23, 0xff, 0x48, 0x32, 0x54, 0x43, 0xe7, 0xe3, + 0xe0, 0x3f, 0x7e, 0x38, 0x1c, 0x02, 0x28, 0xff, + 0xd0, 0x10, 0x20, 0xff, 0x4b, 0x2e, 0x54, 0x98, + 0x23, 0x00, 0x00, 0x90, 0x4e, 0x2d, 0x50, 0x33, + 0x20, 0x01, 0x40, 0x90, 0x43, 0xc0, 0x4b, 0x2c, + 0x88, 0x1b, 0x40, 0x18, 0x4b, 0x2a, 0x80, 0x18, + 0x20, 0xff, 0x76, 0x38, 0x7e, 0x78, 0x1c, 0x02, + 0x28, 0xff, 0xd0, 0x11, 0x20, 0xff, 0x4b, 0x24, + 0x54, 0x98, 0x23, 0x00, 0x00, 0x90, 0x4e, 0x23, + 0x50, 0x33, 0x20, 0x01, 0x40, 0x90, 0x43, 0xc0, + 0x4b, 0x21, 0x88, 0x1b, 0x40, 0x18, 0x4b, 0x20, + 0x80, 0x18, 0x20, 0xff, 0x76, 0x78, 0xe0, 0x02, + 0x20, 0xb1, 0xb0, 0x03, 0xe7, 0x98, 0x23, 0x00, + 0x00, 0x90, 0x4e, 0x1a, 0x50, 0x33, 0x20, 0x01, + 0x40, 0x90, 0x43, 0xc0, 0x4b, 0x18, 0x88, 0x1b, + 0x40, 0x18, 0x4b, 0x17, 0x80, 0x18, 0x4e, 0x17, + 0x96, 0x00, 0x20, 0x00, 0x00, 0x93, 0x9e, 0x00, + 0x50, 0xf0, 0x98, 0x02, 0x23, 0x20, 0x40, 0x18, + 0xd0, 0xff, 0x21, 0x00, 0x29, 0x0c, 0xdb, 0x04, + 0xe0, 0x07, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, + 0xe7, 0xf8, 0x20, 0x00, 0x18, 0x7b, 0x73, 0x18, + 0xe7, 0xf7, 0x20, 0x00, 0x83, 0x38, 0x20, 0x00, + 0x70, 0xf8, 0x20, 0x00, 0xb0, 0x03, 0xe7, 0x6f, + 0xb0, 0x03, 0xe7, 0x6d, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x5d, 0xcc, 0x2e, 0x08, 0x5e, 0xec, + 0x2e, 0x08, 0x5e, 0xe4, 0x2e, 0x08, 0x5f, 0xac, + 0x2e, 0x08, 0x5f, 0xcc, 0x2e, 0x08, 0x5f, 0x6c, + 0x2e, 0x08, 0x5e, 0xe8, 0x9e, 0x00, 0x04, 0xb8, + 0xb5, 0xf0, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, + 0x20, 0x1d, 0x02, 0x80, 0x69, 0x86, 0x1c, 0x3a, + 0x1c, 0x29, 0x1c, 0x20, 0xf0, 0x08, 0xfb, 0x32, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb4, 0xf0, + 0x1c, 0x01, 0xb0, 0x82, 0x68, 0x48, 0x68, 0x8c, + 0x1d, 0xe2, 0x32, 0xb7, 0x42, 0x82, 0xd9, 0x09, + 0x78, 0x42, 0x07, 0x12, 0x0f, 0x12, 0x02, 0x12, + 0x78, 0x83, 0x43, 0x1a, 0x32, 0x03, 0x04, 0x17, + 0x0c, 0x3f, 0xe0, 0x41, 0xb0, 0x82, 0x68, 0x23, + 0x93, 0x01, 0x9b, 0x01, 0x33, 0x04, 0x93, 0x00, + 0x9b, 0x00, 0x78, 0x9b, 0x9e, 0x01, 0x19, 0x9a, + 0x78, 0x4e, 0x00, 0xf3, 0x1b, 0x9b, 0x00, 0x9b, + 0x4e, 0x1b, 0x68, 0x36, 0x19, 0x9b, 0x93, 0x02, + 0x9b, 0x02, 0x78, 0x9d, 0x06, 0xed, 0x0e, 0xed, + 0x2d, 0x12, 0xd1, 0x0f, 0x1d, 0xe3, 0x33, 0xb9, + 0x68, 0x4e, 0x1b, 0x9b, 0x06, 0x1b, 0x0e, 0x1b, + 0x93, 0x03, 0x9b, 0x00, 0x78, 0xde, 0x23, 0x80, + 0x40, 0x33, 0xd1, 0x03, 0x9b, 0x03, 0x2b, 0x0e, + 0xda, 0x00, 0x3a, 0x01, 0x1d, 0xe3, 0x33, 0xb8, + 0x42, 0x83, 0xd9, 0x0b, 0x78, 0x43, 0x07, 0x1b, + 0x0f, 0x1b, 0x02, 0x1b, 0x04, 0x1f, 0x0c, 0x3f, + 0x78, 0x13, 0x18, 0xfb, 0x33, 0x03, 0x04, 0x1f, + 0x0c, 0x3f, 0xe0, 0x08, 0x78, 0x13, 0x07, 0x1b, + 0x0f, 0x1b, 0x02, 0x1b, 0x78, 0x56, 0x43, 0x33, + 0x33, 0x03, 0x04, 0x1f, 0x0c, 0x3f, 0xb0, 0x02, + 0x80, 0x4f, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, + 0x2e, 0x08, 0x5d, 0xcc, 0xb5, 0xf3, 0xb0, 0x81, + 0x99, 0x02, 0x06, 0x0b, 0x0e, 0x1b, 0x93, 0x00, + 0x9b, 0x00, 0x2b, 0x00, 0xd1, 0x0a, 0x49, 0x24, + 0x4b, 0x24, 0x69, 0x1b, 0x1c, 0x18, 0x4b, 0x23, + 0x69, 0x5b, 0x1c, 0x1c, 0x4b, 0x21, 0x6a, 0x1b, + 0x1e, 0x5a, 0xe0, 0x09, 0x49, 0x20, 0x4b, 0x1f, + 0x69, 0x9b, 0x1c, 0x18, 0x4b, 0x1d, 0x69, 0xdb, + 0x1c, 0x1c, 0x4b, 0x1c, 0x6a, 0x5b, 0x1e, 0x5a, + 0x9b, 0x01, 0x78, 0xdd, 0x26, 0x01, 0x40, 0xae, + 0x1c, 0x37, 0x42, 0xa0, 0xd0, 0x26, 0x00, 0x83, + 0x18, 0x5d, 0x23, 0x01, 0x02, 0x9b, 0x18, 0xeb, + 0x68, 0x1b, 0x40, 0x3b, 0xd0, 0x1b, 0x00, 0x83, + 0x18, 0x5d, 0x23, 0x01, 0x02, 0x9b, 0x18, 0xeb, + 0x68, 0x1b, 0x43, 0xbb, 0x1c, 0x1d, 0x00, 0x83, + 0x18, 0x5e, 0x23, 0x01, 0x02, 0x9b, 0x18, 0xf3, + 0x60, 0x1d, 0x00, 0x83, 0x18, 0x5d, 0x23, 0x01, + 0x02, 0x9b, 0x18, 0xeb, 0x68, 0x1b, 0x2b, 0x00, + 0xd1, 0x05, 0x25, 0x00, 0x18, 0x0e, 0x23, 0x01, + 0x02, 0xdb, 0x18, 0xf3, 0x70, 0x1d, 0x30, 0x01, + 0x40, 0x10, 0xe7, 0xd6, 0xb0, 0x01, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x60, 0x98, 0x9e, 0x00, 0x04, 0x80, + 0x2e, 0x08, 0x69, 0x98, 0xb4, 0x90, 0x1c, 0x03, + 0x1c, 0x0c, 0x1c, 0x17, 0x06, 0x21, 0x0e, 0x09, + 0x06, 0x38, 0x0e, 0x00, 0x72, 0x19, 0x28, 0x00, + 0xd0, 0x00, 0x75, 0x58, 0x68, 0x5b, 0x2b, 0x00, + 0xd1, 0xf8, 0xbc, 0x90, 0x47, 0x70, 0x00, 0x00, + 0xb5, 0x80, 0x1c, 0x07, 0x68, 0xf8, 0x28, 0x1f, + 0xd9, 0x03, 0x20, 0xe1, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x48, 0x1e, 0x6d, 0x00, 0x68, 0x00, + 0x4b, 0x1d, 0x40, 0x18, 0x49, 0x1b, 0x6d, 0x09, + 0x60, 0x08, 0x05, 0x80, 0x48, 0x19, 0x6d, 0x00, + 0x68, 0x00, 0x49, 0x18, 0x6e, 0xc9, 0x60, 0x08, + 0x48, 0x16, 0x6d, 0x00, 0x68, 0x00, 0x23, 0x01, + 0x02, 0x5b, 0x43, 0x18, 0x49, 0x13, 0x6d, 0x09, + 0x60, 0x08, 0x05, 0x80, 0x48, 0x11, 0x6d, 0x00, + 0x68, 0x00, 0x49, 0x10, 0x6e, 0xc9, 0x60, 0x08, + 0x48, 0x0e, 0x6f, 0xc1, 0xcf, 0x09, 0xc1, 0x09, + 0xcf, 0x09, 0xc1, 0x09, 0xcf, 0x08, 0xc1, 0x08, + 0xf0, 0x00, 0xfc, 0x1e, 0x20, 0x00, 0x49, 0x09, + 0x60, 0x08, 0x20, 0x00, 0x49, 0x07, 0x60, 0x48, + 0x20, 0x00, 0x49, 0x06, 0x60, 0x88, 0x49, 0x07, + 0x20, 0x0b, 0xf0, 0x0c, 0xf9, 0x93, 0x20, 0xff, + 0x30, 0x01, 0x49, 0x02, 0x61, 0xc8, 0x20, 0x00, + 0xe7, 0xc0, 0xe7, 0xbf, 0x2e, 0x08, 0x1f, 0x24, + 0xff, 0xff, 0xfd, 0xff, 0x2e, 0x01, 0x01, 0xf9, + 0x1c, 0x01, 0x48, 0x0e, 0x6f, 0x00, 0x68, 0x00, + 0x60, 0x08, 0x48, 0x0c, 0x6e, 0x80, 0x68, 0x00, + 0x60, 0x48, 0x48, 0x0a, 0x6e, 0xc0, 0x68, 0x00, + 0x60, 0x88, 0x48, 0x08, 0x6f, 0x40, 0x68, 0x00, + 0x60, 0xc8, 0x48, 0x06, 0x68, 0x00, 0x61, 0x08, + 0x48, 0x04, 0x68, 0x40, 0x61, 0x48, 0x48, 0x03, + 0x68, 0x80, 0x61, 0x88, 0x20, 0x00, 0x47, 0x70, + 0xe7, 0xfd, 0x00, 0x00, 0x2e, 0x08, 0x1f, 0x24, + 0x48, 0x03, 0x6e, 0x80, 0x68, 0x00, 0x07, 0x40, + 0x0f, 0xc0, 0x47, 0x70, 0xe7, 0xfd, 0x00, 0x00, + 0x2e, 0x08, 0x1f, 0x24, 0xb4, 0x80, 0x1c, 0x07, + 0x1c, 0x0a, 0x48, 0x37, 0x69, 0xc0, 0x23, 0xff, + 0x33, 0x01, 0x42, 0x98, 0xd0, 0x02, 0x20, 0xe0, + 0xbc, 0x80, 0x47, 0x70, 0x48, 0x32, 0x62, 0x07, + 0x20, 0x00, 0x49, 0x31, 0x62, 0x48, 0x48, 0x31, + 0x60, 0x02, 0x48, 0x30, 0x68, 0x00, 0x78, 0x00, + 0x49, 0x2d, 0x61, 0x88, 0x48, 0x2d, 0x68, 0x00, + 0x7a, 0x00, 0x49, 0x2b, 0x61, 0x08, 0x48, 0x2b, + 0x68, 0x00, 0x68, 0x40, 0x49, 0x28, 0x60, 0xc8, + 0x48, 0x27, 0x69, 0x80, 0x07, 0xc0, 0x0f, 0xc0, + 0xd0, 0x01, 0x48, 0x27, 0xe0, 0x01, 0x20, 0x01, + 0x02, 0x40, 0x49, 0x23, 0x61, 0xc8, 0x48, 0x22, + 0x68, 0x40, 0x30, 0x01, 0x49, 0x20, 0x60, 0x48, + 0x48, 0x1f, 0x6d, 0x40, 0x68, 0x00, 0x0a, 0x00, + 0x02, 0x00, 0x49, 0x1d, 0x69, 0x89, 0x08, 0x49, + 0x06, 0x09, 0x0e, 0x09, 0x43, 0x08, 0x49, 0x1a, + 0x6d, 0x49, 0x60, 0x08, 0x06, 0x00, 0x48, 0x18, + 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x19, 0x40, 0x18, + 0x49, 0x15, 0x69, 0x89, 0x07, 0xc9, 0x0c, 0x49, + 0x43, 0x08, 0x49, 0x13, 0x6d, 0x09, 0x60, 0x08, + 0x04, 0x40, 0x48, 0x11, 0x6d, 0x00, 0x68, 0x00, + 0x4b, 0x13, 0x40, 0x18, 0x49, 0x0e, 0x6d, 0x09, + 0x60, 0x08, 0x05, 0x40, 0x48, 0x0c, 0x6d, 0x00, + 0x68, 0x00, 0x23, 0x01, 0x03, 0x1b, 0x43, 0x18, + 0x49, 0x09, 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, + 0x48, 0x07, 0x6d, 0x40, 0x68, 0x00, 0x49, 0x06, + 0x6f, 0x09, 0x60, 0x08, 0x48, 0x04, 0x6d, 0x00, + 0x68, 0x00, 0x49, 0x03, 0x6e, 0xc9, 0x60, 0x08, + 0x20, 0x00, 0xe7, 0x99, 0xe7, 0x98, 0x00, 0x00, + 0x2e, 0x08, 0x1f, 0x24, 0x2e, 0x08, 0x60, 0x5c, + 0x00, 0x00, 0x02, 0x01, 0xff, 0xff, 0xbf, 0xff, + 0xff, 0xff, 0xfb, 0xff, 0xb5, 0x00, 0x48, 0xf6, + 0x6e, 0x80, 0x68, 0x00, 0x23, 0x08, 0x40, 0x18, + 0xd0, 0x74, 0x48, 0xf3, 0x6d, 0x00, 0x68, 0x00, + 0x4b, 0xf2, 0x40, 0x18, 0x49, 0xf0, 0x6d, 0x09, + 0x60, 0x08, 0x04, 0x80, 0x48, 0xee, 0x6e, 0x40, + 0x68, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x49, 0xec, + 0x6e, 0x49, 0x60, 0x08, 0x06, 0x00, 0x48, 0xea, + 0x6e, 0xc0, 0x68, 0x00, 0x23, 0x01, 0x02, 0xdb, + 0x40, 0x18, 0xd0, 0x3e, 0x20, 0xff, 0x30, 0x01, + 0x49, 0xe5, 0x61, 0xc8, 0x48, 0xe4, 0x6d, 0x00, + 0x68, 0x00, 0x4b, 0xe5, 0x40, 0x18, 0x49, 0xe2, + 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, 0x48, 0xe0, + 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x02, 0x09, + 0x0a, 0x09, 0x4a, 0xdd, 0x6a, 0x52, 0x06, 0x12, + 0x43, 0x11, 0x60, 0x01, 0x48, 0xdd, 0x68, 0x00, + 0x7a, 0x00, 0x49, 0xd9, 0x69, 0x09, 0x1a, 0x41, + 0x48, 0xd7, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x02, + 0x4b, 0xd9, 0x40, 0x1a, 0x04, 0x09, 0x0c, 0x09, + 0x02, 0x09, 0x43, 0x11, 0x60, 0x01, 0x02, 0x08, + 0x0c, 0x00, 0x48, 0xd1, 0x6f, 0xc0, 0x68, 0x80, + 0x68, 0x01, 0x23, 0x04, 0x43, 0x19, 0x60, 0x01, + 0x07, 0x48, 0x48, 0xcd, 0x6f, 0xc0, 0x68, 0xc1, + 0x20, 0x01, 0x40, 0x88, 0xf0, 0x0c, 0xf8, 0x74, + 0x48, 0xc9, 0x68, 0x00, 0x30, 0x01, 0x49, 0xc8, + 0x60, 0x08, 0x48, 0xc7, 0x69, 0xc0, 0x4b, 0xcb, + 0x42, 0x98, 0xd0, 0x73, 0xdc, 0x08, 0x23, 0xff, + 0x33, 0x01, 0x42, 0x98, 0xd0, 0x6f, 0x23, 0x01, + 0x02, 0x5b, 0x42, 0x98, 0xd0, 0x07, 0xe2, 0xba, + 0x4b, 0xc5, 0x42, 0x98, 0xd0, 0x68, 0x4b, 0xc5, + 0x42, 0x98, 0xd0, 0x66, 0xe2, 0xb3, 0x48, 0xbc, + 0x6e, 0x80, 0x68, 0x00, 0x23, 0x01, 0x02, 0x5b, + 0x40, 0x18, 0xe0, 0x00, 0xe2, 0xcd, 0xd0, 0x3f, + 0x48, 0xb7, 0x68, 0x00, 0x30, 0x01, 0x49, 0xb6, + 0x60, 0x08, 0x48, 0xb5, 0x6d, 0x00, 0x68, 0x00, + 0x4b, 0xb5, 0x40, 0x18, 0x49, 0xb2, 0x6d, 0x09, + 0x60, 0x08, 0x04, 0xc0, 0x20, 0xff, 0x30, 0x01, + 0x49, 0xaf, 0x61, 0xc8, 0x48, 0xae, 0x6f, 0xc0, + 0x68, 0x80, 0x68, 0x01, 0x02, 0x09, 0x0a, 0x09, + 0x4a, 0xab, 0x6a, 0x52, 0x06, 0x12, 0x43, 0x11, + 0x60, 0x01, 0x48, 0xac, 0x68, 0x00, 0x7a, 0x00, + 0x49, 0xa7, 0x69, 0x09, 0x1a, 0x41, 0x48, 0xa6, + 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x02, 0x4b, 0xa8, + 0x40, 0x1a, 0x04, 0x09, 0x0c, 0x09, 0x02, 0x09, + 0x43, 0x11, 0x60, 0x01, 0x02, 0x08, 0x0c, 0x00, + 0x48, 0x9f, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, + 0x23, 0x02, 0x43, 0x19, 0x60, 0x01, 0x07, 0x88, + 0x48, 0x9b, 0x6f, 0xc0, 0x68, 0xc1, 0x20, 0x01, + 0x40, 0x88, 0xf0, 0x0c, 0xf8, 0x11, 0xe0, 0x5e, + 0x48, 0x97, 0x69, 0x00, 0x28, 0x00, 0xd0, 0x20, + 0x48, 0x95, 0x69, 0x00, 0x38, 0x01, 0x49, 0x94, + 0x61, 0x08, 0x48, 0x93, 0x68, 0xc0, 0x78, 0x00, + 0x49, 0x91, 0x6c, 0x89, 0x68, 0x09, 0x0a, 0x09, + 0x02, 0x09, 0x43, 0x08, 0x49, 0x8e, 0x6c, 0x89, + 0x60, 0x08, 0x06, 0x00, 0x0e, 0x00, 0x48, 0x8c, + 0x68, 0xc0, 0xe0, 0x03, 0xe1, 0x4b, 0xe2, 0x4d, + 0xe0, 0x42, 0xe1, 0x93, 0x30, 0x01, 0x49, 0x88, + 0x60, 0xc8, 0x48, 0x8d, 0x49, 0x86, 0x61, 0xc8, + 0xe0, 0x39, 0x20, 0xff, 0x30, 0x01, 0x49, 0x84, + 0x61, 0xc8, 0x48, 0x83, 0x6f, 0xc0, 0x68, 0x80, + 0x68, 0x01, 0x02, 0x09, 0x0a, 0x09, 0x4a, 0x80, + 0x6a, 0x52, 0x06, 0x12, 0x43, 0x11, 0x60, 0x01, + 0x48, 0x80, 0x68, 0x00, 0x7a, 0x00, 0x49, 0x7c, + 0x69, 0x09, 0x1a, 0x41, 0x48, 0x7a, 0x6f, 0xc0, + 0x68, 0x80, 0x68, 0x02, 0x4b, 0x7c, 0x40, 0x1a, + 0x04, 0x09, 0x0c, 0x09, 0x02, 0x09, 0x43, 0x11, + 0x60, 0x01, 0x02, 0x08, 0x0c, 0x00, 0x48, 0x74, + 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x23, 0x01, + 0x43, 0x19, 0x60, 0x01, 0x07, 0xc8, 0x48, 0x70, + 0x6f, 0xc0, 0x68, 0xc1, 0x20, 0x01, 0x40, 0x88, + 0xf0, 0x0b, 0xff, 0xba, 0x48, 0x6c, 0x6d, 0x00, + 0x68, 0x00, 0x4b, 0x6d, 0x40, 0x18, 0x49, 0x6a, + 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, 0xe2, 0x08, + 0x48, 0x67, 0x69, 0x00, 0x28, 0x00, 0xd0, 0x5f, + 0x48, 0x65, 0x6e, 0x80, 0x68, 0x00, 0x23, 0xff, + 0x33, 0x01, 0x40, 0x18, 0xd0, 0x3f, 0x48, 0x62, + 0x68, 0x00, 0x30, 0x01, 0x49, 0x60, 0x60, 0x08, + 0x48, 0x5f, 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x60, + 0x40, 0x18, 0x49, 0x5d, 0x6d, 0x09, 0x60, 0x08, + 0x04, 0xc0, 0x20, 0xff, 0x30, 0x01, 0x49, 0x5a, + 0x61, 0xc8, 0x48, 0x59, 0x6f, 0xc0, 0x68, 0x80, + 0x68, 0x01, 0x02, 0x09, 0x0a, 0x09, 0x4a, 0x56, + 0x6a, 0x52, 0x06, 0x12, 0x43, 0x11, 0x60, 0x01, + 0x48, 0x56, 0x68, 0x00, 0x7a, 0x00, 0x49, 0x52, + 0x69, 0x09, 0x1a, 0x41, 0x48, 0x50, 0x6f, 0xc0, + 0x68, 0x80, 0x68, 0x02, 0x4b, 0x52, 0x40, 0x1a, + 0x04, 0x09, 0x0c, 0x09, 0x02, 0x09, 0x43, 0x11, + 0x60, 0x01, 0x02, 0x08, 0x0c, 0x00, 0x48, 0x4a, + 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x23, 0x02, + 0x43, 0x19, 0x60, 0x01, 0x07, 0x88, 0x48, 0x46, + 0x6f, 0xc0, 0x68, 0xc1, 0x20, 0x01, 0x40, 0x88, + 0xf0, 0x0b, 0xff, 0x66, 0xe0, 0x17, 0x48, 0x42, + 0x68, 0xc0, 0x78, 0x00, 0x49, 0x40, 0x6c, 0x89, + 0x68, 0x09, 0x0a, 0x09, 0x02, 0x09, 0x43, 0x08, + 0x49, 0x3d, 0x6c, 0x89, 0x60, 0x08, 0x06, 0x00, + 0x0e, 0x00, 0x48, 0x3b, 0x68, 0xc0, 0x30, 0x01, + 0x49, 0x39, 0x60, 0xc8, 0x48, 0x38, 0x69, 0x00, + 0x38, 0x01, 0x49, 0x37, 0x61, 0x08, 0xe0, 0xa1, + 0x48, 0x35, 0x6a, 0x00, 0x38, 0x01, 0x49, 0x34, + 0x62, 0x08, 0x48, 0x33, 0x6a, 0x00, 0x28, 0x00, + 0xd0, 0x4b, 0x48, 0x31, 0x6a, 0x40, 0x30, 0x01, + 0x49, 0x2f, 0x62, 0x48, 0x48, 0x31, 0x68, 0x00, + 0x30, 0x0c, 0x49, 0x30, 0x60, 0x08, 0x48, 0x2f, + 0x68, 0x00, 0x78, 0x00, 0x49, 0x2a, 0x61, 0x88, + 0x48, 0x2c, 0x68, 0x00, 0x7a, 0x00, 0x49, 0x28, + 0x61, 0x08, 0x48, 0x2a, 0x68, 0x00, 0x68, 0x40, + 0x49, 0x25, 0x60, 0xc8, 0x48, 0x24, 0x69, 0x80, + 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x01, 0x48, 0x27, + 0xe0, 0x01, 0x20, 0x01, 0x02, 0x40, 0x49, 0x20, + 0x61, 0xc8, 0x48, 0x1f, 0x6d, 0x00, 0x68, 0x00, + 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, 0x49, 0x1c, + 0x6d, 0x09, 0x60, 0x08, 0x04, 0x80, 0x48, 0x1a, + 0x6d, 0x40, 0x68, 0x00, 0x0a, 0x00, 0x02, 0x00, + 0x49, 0x17, 0x69, 0x89, 0x08, 0x49, 0x06, 0x09, + 0x0e, 0x09, 0x43, 0x08, 0x49, 0x14, 0x6d, 0x49, + 0x60, 0x08, 0x06, 0x00, 0x48, 0x12, 0x6d, 0x00, + 0x68, 0x00, 0x4b, 0x19, 0x40, 0x18, 0x49, 0x10, + 0x69, 0x89, 0x07, 0xc9, 0x0c, 0x49, 0x43, 0x08, + 0x49, 0x0d, 0x6d, 0x09, 0x60, 0x08, 0x04, 0x40, + 0xe0, 0x4c, 0x20, 0xff, 0x30, 0x01, 0x49, 0x0a, + 0x61, 0xc8, 0x48, 0x09, 0x6f, 0xc0, 0x68, 0x80, + 0x68, 0x01, 0x02, 0x09, 0x0a, 0x09, 0x4a, 0x06, + 0x6a, 0x52, 0x06, 0x12, 0x43, 0x11, 0x60, 0x01, + 0x48, 0x06, 0x68, 0x00, 0x7a, 0x00, 0x49, 0x02, + 0x69, 0x09, 0x1a, 0x41, 0x48, 0x00, 0xe0, 0x11, + 0x2e, 0x08, 0x1f, 0x24, 0xff, 0xff, 0xdf, 0xff, + 0xff, 0xff, 0xef, 0xff, 0x2e, 0x08, 0x60, 0x5c, + 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x02, 0x01, + 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x03, + 0xff, 0xff, 0xbf, 0xff, 0x6f, 0xc0, 0x68, 0x80, + 0x68, 0x02, 0x4b, 0xa5, 0x40, 0x1a, 0x04, 0x09, + 0x0c, 0x09, 0x02, 0x09, 0x43, 0x11, 0x60, 0x01, + 0x02, 0x08, 0x0c, 0x00, 0x48, 0xa1, 0x6f, 0xc0, + 0x68, 0x80, 0x68, 0x01, 0x23, 0x01, 0x43, 0x19, + 0x60, 0x01, 0x07, 0xc8, 0x48, 0x9d, 0x6f, 0xc0, + 0x68, 0xc1, 0x20, 0x01, 0x40, 0x88, 0xf0, 0x0b, + 0xfe, 0xb3, 0x48, 0x9a, 0x6d, 0x00, 0x68, 0x00, + 0x4b, 0x99, 0x40, 0x18, 0x49, 0x97, 0x6d, 0x09, + 0x60, 0x08, 0x04, 0xc0, 0xe1, 0x01, 0x48, 0x95, + 0x6e, 0x80, 0x68, 0x00, 0x23, 0x01, 0x02, 0x5b, + 0x40, 0x18, 0xd0, 0x3f, 0x48, 0x91, 0x68, 0x00, + 0x30, 0x01, 0x49, 0x90, 0x60, 0x08, 0x48, 0x8f, + 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x8e, 0x40, 0x18, + 0x49, 0x8c, 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, + 0x20, 0xff, 0x30, 0x01, 0x49, 0x89, 0x61, 0xc8, + 0x48, 0x88, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, + 0x02, 0x09, 0x0a, 0x09, 0x4a, 0x85, 0x6a, 0x52, + 0x06, 0x12, 0x43, 0x11, 0x60, 0x01, 0x48, 0x85, + 0x68, 0x00, 0x7a, 0x00, 0x49, 0x81, 0x69, 0x09, + 0x1a, 0x41, 0x48, 0x80, 0x6f, 0xc0, 0x68, 0x80, + 0x68, 0x02, 0x4b, 0x7d, 0x40, 0x1a, 0x04, 0x09, + 0x0c, 0x09, 0x02, 0x09, 0x43, 0x11, 0x60, 0x01, + 0x02, 0x08, 0x0c, 0x00, 0x48, 0x79, 0x6f, 0xc0, + 0x68, 0x80, 0x68, 0x01, 0x23, 0x02, 0x43, 0x19, + 0x60, 0x01, 0x07, 0x88, 0x48, 0x75, 0x6f, 0xc0, + 0x68, 0xc1, 0x20, 0x01, 0x40, 0x88, 0xf0, 0x0b, + 0xfe, 0x63, 0xe0, 0x02, 0x48, 0x74, 0x49, 0x71, + 0x61, 0xc8, 0xe0, 0xb6, 0x48, 0x6f, 0x69, 0x00, + 0x28, 0x00, 0xd0, 0x62, 0x48, 0x6d, 0x6e, 0x00, + 0x68, 0x00, 0x49, 0x6c, 0x68, 0xc9, 0x70, 0x08, + 0x48, 0x6a, 0x68, 0xc0, 0x30, 0x01, 0x49, 0x69, + 0x60, 0xc8, 0x48, 0x68, 0x69, 0x00, 0x38, 0x01, + 0x49, 0x66, 0x61, 0x08, 0x48, 0x65, 0x69, 0x00, + 0x28, 0x00, 0xd1, 0x4d, 0x48, 0x63, 0x6a, 0x00, + 0x28, 0x01, 0xd1, 0x49, 0x48, 0x63, 0x68, 0x00, + 0x7a, 0x40, 0x49, 0x60, 0x6d, 0x09, 0x68, 0x09, + 0x4b, 0x62, 0x40, 0x19, 0x07, 0xc0, 0x0d, 0x40, + 0x43, 0x08, 0x49, 0x5c, 0x6d, 0x09, 0x60, 0x08, + 0x05, 0x40, 0x0f, 0xc0, 0x20, 0xff, 0x30, 0x01, + 0x49, 0x58, 0x61, 0xc8, 0x48, 0x57, 0x6d, 0x00, + 0x68, 0x00, 0x4b, 0x57, 0x40, 0x18, 0x49, 0x55, + 0x6d, 0x09, 0x60, 0x08, 0x04, 0xc0, 0x48, 0x53, + 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x01, 0x02, 0x09, + 0x0a, 0x09, 0x4a, 0x50, 0x6a, 0x52, 0x06, 0x12, + 0x43, 0x11, 0x60, 0x01, 0x48, 0x4f, 0x68, 0x00, + 0x7a, 0x00, 0x49, 0x4c, 0x69, 0x09, 0x1a, 0x41, + 0x48, 0x4a, 0x6f, 0xc0, 0x68, 0x80, 0x68, 0x02, + 0x4b, 0x47, 0x40, 0x1a, 0x04, 0x09, 0x0c, 0x09, + 0x02, 0x09, 0x43, 0x11, 0x60, 0x01, 0x02, 0x08, + 0x0c, 0x00, 0x48, 0x44, 0x6f, 0xc0, 0x68, 0x80, + 0x68, 0x01, 0x23, 0x01, 0x43, 0x19, 0x60, 0x01, + 0x07, 0xc8, 0x48, 0x40, 0x6f, 0xc0, 0x68, 0xc1, + 0x20, 0x01, 0x40, 0x88, 0xf0, 0x0b, 0xfd, 0xf8, + 0xe0, 0x4f, 0x48, 0x3c, 0x6a, 0x00, 0x38, 0x01, + 0x49, 0x3a, 0x62, 0x08, 0x48, 0x39, 0x6a, 0x40, + 0x30, 0x01, 0x49, 0x38, 0x62, 0x48, 0x48, 0x39, + 0x68, 0x00, 0x30, 0x0c, 0x49, 0x37, 0x60, 0x08, + 0x48, 0x36, 0x68, 0x00, 0x78, 0x00, 0x49, 0x33, + 0x61, 0x88, 0x48, 0x34, 0x68, 0x00, 0x7a, 0x00, + 0x49, 0x30, 0x61, 0x08, 0x48, 0x31, 0x68, 0x00, + 0x68, 0x40, 0x49, 0x2e, 0x60, 0xc8, 0x48, 0x2d, + 0x69, 0x80, 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x01, + 0x48, 0x2f, 0xe0, 0x01, 0x20, 0x01, 0x02, 0x40, + 0x49, 0x28, 0x61, 0xc8, 0x48, 0x27, 0x6d, 0x00, + 0x68, 0x00, 0x23, 0x01, 0x03, 0x5b, 0x43, 0x18, + 0x49, 0x24, 0x6d, 0x09, 0x60, 0x08, 0x04, 0x80, + 0x48, 0x22, 0x6d, 0x40, 0x68, 0x00, 0x0a, 0x00, + 0x02, 0x00, 0x49, 0x20, 0x69, 0x89, 0x08, 0x49, + 0x06, 0x09, 0x0e, 0x09, 0x43, 0x08, 0x49, 0x1d, + 0x6d, 0x49, 0x60, 0x08, 0x06, 0x00, 0x48, 0x1b, + 0x6d, 0x00, 0x68, 0x00, 0x4b, 0x1f, 0x40, 0x18, + 0x49, 0x18, 0x69, 0x89, 0x07, 0xc9, 0x0c, 0x49, + 0x43, 0x08, 0x49, 0x16, 0x6d, 0x09, 0x60, 0x08, + 0x04, 0x40, 0xe0, 0x01, 0xe0, 0x00, 0xe7, 0xff, + 0x48, 0x12, 0x6c, 0x80, 0x68, 0x00, 0x49, 0x11, + 0x6e, 0x49, 0x60, 0x08, 0x48, 0x0f, 0x6d, 0x40, + 0x68, 0x00, 0x49, 0x0e, 0x6f, 0x09, 0x60, 0x08, + 0x48, 0x0c, 0x6d, 0x00, 0x68, 0x00, 0x49, 0x0b, + 0x6e, 0xc9, 0x60, 0x08, 0x48, 0x09, 0x6c, 0xc0, + 0x68, 0x00, 0x23, 0x08, 0x43, 0x18, 0x49, 0x07, + 0x6c, 0xc9, 0x60, 0x08, 0x07, 0x00, 0x48, 0x05, + 0x6c, 0xc0, 0x68, 0x00, 0x49, 0x03, 0x6e, 0x89, + 0x60, 0x08, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0xff, 0x00, 0x00, 0xff, 0x2e, 0x08, 0x1f, 0x24, + 0xff, 0xff, 0xef, 0xff, 0x2e, 0x08, 0x60, 0x5c, + 0x00, 0x00, 0x02, 0x03, 0xff, 0xff, 0xfb, 0xff, + 0x00, 0x00, 0x02, 0x01, 0xff, 0xff, 0xbf, 0xff, + 0xb4, 0x80, 0x49, 0x2e, 0x20, 0x00, 0x28, 0x08, + 0xd3, 0x04, 0xe0, 0x06, 0x1c, 0x42, 0x06, 0x10, + 0x0e, 0x00, 0xe7, 0xf8, 0x23, 0x00, 0xc1, 0x08, + 0xe7, 0xf8, 0x4a, 0x29, 0x6f, 0xd2, 0x68, 0x12, + 0x4b, 0x27, 0x6d, 0x9b, 0x68, 0x1b, 0x0a, 0x1b, + 0x02, 0x1b, 0x06, 0x12, 0x0e, 0x12, 0x43, 0x1a, + 0x4b, 0x23, 0x6d, 0x9b, 0x60, 0x1a, 0x06, 0x12, + 0x0e, 0x12, 0x4a, 0x21, 0x6f, 0xd2, 0x68, 0x52, + 0x4b, 0x1f, 0x6d, 0x1b, 0x68, 0x1f, 0x23, 0x01, + 0x03, 0xdb, 0x43, 0x9f, 0x1c, 0x3b, 0x07, 0xd2, + 0x0c, 0x12, 0x43, 0x1a, 0x4b, 0x1a, 0x6d, 0x1b, + 0x60, 0x1a, 0x04, 0x12, 0x0f, 0xd2, 0x4a, 0x18, + 0x6f, 0xd2, 0x69, 0x12, 0x4b, 0x16, 0x6d, 0xdb, + 0x68, 0x1b, 0x0c, 0x1b, 0x04, 0x1b, 0x04, 0x12, + 0x0c, 0x12, 0x43, 0x1a, 0x4b, 0x12, 0x6d, 0xdb, + 0x60, 0x1a, 0x04, 0x12, 0x0c, 0x12, 0x4a, 0x10, + 0x6d, 0x12, 0x68, 0x12, 0x23, 0x01, 0x02, 0x5b, + 0x43, 0x1a, 0x4b, 0x0d, 0x6d, 0x1b, 0x60, 0x1a, + 0x05, 0x92, 0x4a, 0x0b, 0x6d, 0x12, 0x68, 0x12, + 0x4b, 0x09, 0x6e, 0xdb, 0x60, 0x1a, 0x4a, 0x08, + 0x6d, 0x92, 0x68, 0x12, 0x4b, 0x06, 0x6f, 0x5b, + 0x60, 0x1a, 0x4a, 0x05, 0x6d, 0xd2, 0x68, 0x12, + 0x4b, 0x03, 0x6f, 0x9b, 0x60, 0x1a, 0xbc, 0x80, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x1f, 0x4c, + 0x2e, 0x08, 0x1f, 0x24, 0xb5, 0x90, 0x1c, 0x07, + 0x1c, 0x0c, 0x2f, 0x22, 0xd1, 0x07, 0x2c, 0x3f, + 0xd8, 0x01, 0x2c, 0x01, 0xd2, 0x03, 0x20, 0x38, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x01, + 0x49, 0x13, 0x70, 0x08, 0x23, 0x01, 0x03, 0xdb, + 0x42, 0x9f, 0xd0, 0x02, 0x4b, 0x11, 0x42, 0x9f, + 0xd1, 0x04, 0x48, 0x11, 0x60, 0x07, 0x20, 0x00, + 0xe7, 0xee, 0xe0, 0x18, 0x2f, 0xff, 0xd1, 0x0b, + 0x21, 0x00, 0x43, 0xc9, 0x20, 0x0d, 0xf0, 0x00, + 0xf8, 0x1d, 0x48, 0x0c, 0x68, 0x01, 0x48, 0x0c, + 0x68, 0x00, 0xf0, 0x00, 0xf8, 0x43, 0xe0, 0x07, + 0x1c, 0x21, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x3e, + 0x48, 0x07, 0x60, 0x07, 0x48, 0x05, 0x60, 0x04, + 0x20, 0x00, 0xe7, 0xd5, 0xe7, 0xd4, 0xe7, 0xd3, + 0x2e, 0x08, 0x60, 0x84, 0x00, 0x00, 0x80, 0x0f, + 0xcc, 0x00, 0x05, 0x00, 0x2e, 0x08, 0x60, 0x80, + 0x2e, 0x08, 0x1f, 0xa4, 0xb4, 0xb0, 0x1c, 0x07, + 0x1c, 0x0a, 0x4b, 0x13, 0x68, 0x5b, 0x1c, 0x18, + 0x21, 0x00, 0x29, 0x02, 0xdb, 0x04, 0xe0, 0x1a, + 0x1c, 0x4b, 0x06, 0x19, 0x0e, 0x09, 0xe7, 0xf8, + 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc4, 0x29, 0x00, + 0xd1, 0x01, 0x60, 0x27, 0xe0, 0x05, 0x23, 0x01, + 0x42, 0xda, 0xd0, 0x01, 0x60, 0x22, 0xe0, 0x00, + 0xe0, 0x09, 0x1d, 0x05, 0x23, 0x05, 0x02, 0x1b, + 0x42, 0x9d, 0xdb, 0x02, 0x20, 0x01, 0x02, 0x80, + 0xe0, 0x00, 0x30, 0x04, 0xe7, 0xe4, 0x4b, 0x02, + 0x60, 0x58, 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x00, + 0xcc, 0x00, 0x0f, 0x00, 0xb5, 0x90, 0x1c, 0x04, + 0x1c, 0x0f, 0x05, 0x20, 0x0d, 0x00, 0x23, 0xff, + 0x33, 0x04, 0x42, 0x98, 0xd0, 0x50, 0xdc, 0x18, + 0x28, 0x10, 0xd0, 0x2d, 0xdc, 0x08, 0x28, 0x01, + 0xd0, 0x23, 0x28, 0x02, 0xd0, 0x1e, 0x28, 0x04, + 0xd0, 0x1f, 0x28, 0x08, 0xd0, 0x1d, 0xe0, 0x76, + 0x28, 0x12, 0xd0, 0x1d, 0x28, 0x22, 0xd0, 0x3a, + 0x23, 0xff, 0x33, 0x02, 0x42, 0x98, 0xd0, 0x24, + 0x23, 0xff, 0x33, 0x03, 0x42, 0x98, 0xd0, 0x29, + 0xe0, 0x69, 0x38, 0xff, 0x38, 0x05, 0x28, 0x08, + 0xd2, 0x65, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x35, 0x3c, 0x41, 0x4f, + 0x56, 0x4b, 0x5d, 0x46, 0x20, 0x00, 0x49, 0x32, + 0x63, 0x48, 0x48, 0x31, 0x62, 0x04, 0xe0, 0x5c, + 0x20, 0x01, 0x49, 0x2f, 0x63, 0x48, 0xe0, 0x58, + 0x20, 0x00, 0x49, 0x2e, 0x67, 0x08, 0x21, 0x00, + 0x43, 0xc9, 0x20, 0x10, 0xf7, 0xff, 0xff, 0x92, + 0xe0, 0x4f, 0x20, 0x01, 0x49, 0x29, 0x67, 0x08, + 0x21, 0x00, 0x43, 0xc9, 0x20, 0x10, 0xf7, 0xff, + 0xff, 0x89, 0xe0, 0x46, 0x20, 0x02, 0x49, 0x25, + 0x67, 0x08, 0x21, 0x00, 0x43, 0xc9, 0x20, 0x10, + 0xf7, 0xff, 0xff, 0x80, 0xe0, 0x3d, 0x1c, 0x39, + 0x20, 0x22, 0xf7, 0xff, 0xff, 0x7b, 0xe0, 0x38, + 0x48, 0x1e, 0x65, 0xc7, 0x21, 0x01, 0x20, 0x35, + 0xf7, 0xff, 0xff, 0x74, 0xe0, 0x31, 0x48, 0x1b, + 0x65, 0xc7, 0x21, 0x02, 0x20, 0x35, 0xf7, 0xff, + 0xff, 0x6d, 0xe0, 0x2a, 0x21, 0x00, 0x20, 0x35, + 0xf7, 0xff, 0xff, 0x68, 0xe0, 0x25, 0x21, 0x03, + 0x20, 0x35, 0xf7, 0xff, 0xff, 0x63, 0xe0, 0x20, + 0x21, 0x04, 0x20, 0x35, 0xf7, 0xff, 0xff, 0x5e, + 0xe0, 0x1b, 0x20, 0x00, 0x49, 0x0f, 0x65, 0xc8, + 0xe0, 0x17, 0x48, 0x0e, 0x66, 0x07, 0x21, 0x01, + 0x20, 0x36, 0xf7, 0xff, 0xff, 0x53, 0xe0, 0x10, + 0x48, 0x0a, 0x66, 0x07, 0x21, 0x02, 0x20, 0x36, + 0xf7, 0xff, 0xff, 0x4c, 0xe0, 0x09, 0x20, 0x00, + 0x49, 0x06, 0x66, 0x08, 0xe0, 0x05, 0x1c, 0x20, + 0x21, 0x00, 0x43, 0xc9, 0xf7, 0xff, 0xff, 0x42, + 0xe7, 0xff, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0xcc, 0x00, 0x0f, 0x80, 0xcc, 0x00, 0x05, 0x00, + 0xb4, 0xb0, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x13, + 0x06, 0x38, 0x0e, 0x00, 0x06, 0x19, 0x0e, 0x09, + 0x29, 0x01, 0xd0, 0x08, 0x22, 0x00, 0x4d, 0x09, + 0x60, 0x2a, 0x22, 0x00, 0x43, 0xd2, 0x4d, 0x08, + 0x68, 0x2d, 0x60, 0x2a, 0xe0, 0x08, 0x4a, 0x07, + 0x68, 0x12, 0x60, 0x14, 0x4a, 0x04, 0x68, 0x12, + 0x60, 0x10, 0x22, 0x01, 0x4d, 0x01, 0x60, 0x2a, + 0xbc, 0xb0, 0x47, 0x70, 0xcc, 0x00, 0x0d, 0x00, + 0x2e, 0x08, 0x60, 0x78, 0x2e, 0x08, 0x60, 0x74, + 0xb5, 0xf3, 0xb0, 0x81, 0x99, 0x02, 0x06, 0x08, + 0x16, 0x00, 0x90, 0x00, 0xb0, 0x85, 0x20, 0x00, + 0x90, 0x01, 0x9c, 0x06, 0x1d, 0xe6, 0x36, 0x05, + 0xcc, 0x20, 0x07, 0xa8, 0x0f, 0x80, 0x06, 0x00, + 0x16, 0x00, 0x90, 0x00, 0x08, 0xad, 0x3d, 0x03, + 0xcc, 0x80, 0x08, 0xb8, 0x00, 0x80, 0x19, 0x86, + 0xcc, 0x02, 0x91, 0x04, 0x99, 0x04, 0x08, 0x89, + 0x91, 0x04, 0x20, 0x03, 0x05, 0x80, 0x21, 0x35, + 0x06, 0x49, 0x60, 0x08, 0x48, 0x46, 0x68, 0x01, + 0x08, 0x89, 0x00, 0x89, 0x60, 0x01, 0x48, 0x45, + 0x90, 0x03, 0x20, 0x00, 0x90, 0x02, 0x98, 0x02, + 0x42, 0xa8, 0xd3, 0x04, 0xe0, 0x08, 0x98, 0x02, + 0x30, 0x01, 0x90, 0x02, 0xe7, 0xf7, 0xcc, 0x02, + 0x98, 0x03, 0xc0, 0x02, 0x90, 0x03, 0xe7, 0xf6, + 0x98, 0x00, 0x28, 0x00, 0xd0, 0x03, 0xcc, 0x02, + 0x98, 0x03, 0xc0, 0x02, 0x90, 0x03, 0x20, 0x00, + 0x49, 0x39, 0x65, 0x88, 0x9f, 0x04, 0x2f, 0x00, + 0xd8, 0x02, 0xe0, 0x05, 0x3f, 0x01, 0xe7, 0xfa, + 0xce, 0x02, 0x48, 0x35, 0x64, 0x81, 0xe7, 0xf9, + 0x20, 0x00, 0x49, 0x34, 0x60, 0x48, 0x20, 0x00, + 0x21, 0x35, 0x06, 0x49, 0x60, 0x08, 0x20, 0x00, + 0x49, 0x2f, 0x66, 0x88, 0x20, 0x00, 0x21, 0x35, + 0x06, 0x49, 0x61, 0x88, 0x20, 0x01, 0x49, 0x2c, + 0x64, 0xc8, 0x48, 0x2c, 0x68, 0x40, 0x28, 0x00, + 0xd1, 0x0e, 0x27, 0x00, 0x2f, 0x64, 0xd3, 0x02, + 0xe0, 0x02, 0x37, 0x01, 0xe7, 0xfa, 0xe7, 0xfc, + 0x98, 0x01, 0x1c, 0x41, 0x91, 0x01, 0x4b, 0x26, + 0x42, 0x98, 0xdb, 0x00, 0xe0, 0x00, 0xe7, 0xec, + 0x48, 0x24, 0x68, 0x01, 0x23, 0x01, 0x43, 0x19, + 0x60, 0x01, 0x48, 0x23, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x03, 0x48, 0x21, 0x68, 0x40, 0x28, 0x00, + 0xd1, 0x0b, 0x48, 0x20, 0x68, 0x40, 0x4b, 0x19, + 0x18, 0xc0, 0x49, 0x1d, 0x60, 0x08, 0x48, 0x1d, + 0x68, 0x80, 0x4b, 0x16, 0x18, 0xc0, 0x49, 0x1a, + 0x60, 0x48, 0x48, 0x19, 0x68, 0x00, 0x21, 0x33, + 0x06, 0x49, 0x65, 0x48, 0x48, 0x16, 0x68, 0x40, + 0x21, 0x33, 0x06, 0x49, 0x65, 0x88, 0x48, 0x14, + 0x68, 0x40, 0x21, 0x33, 0x06, 0x49, 0x66, 0x88, + 0x48, 0x11, 0x68, 0x00, 0x21, 0x33, 0x06, 0x49, + 0x66, 0x48, 0x20, 0x03, 0x21, 0x33, 0x06, 0x49, + 0x67, 0x08, 0x20, 0x00, 0x49, 0x0e, 0x68, 0x09, + 0x70, 0x08, 0x21, 0x00, 0x20, 0x0d, 0xf7, 0xff, + 0xfe, 0x2d, 0xb0, 0x05, 0xb0, 0x01, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x70, 0xcc, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x80, 0xcc, 0x00, 0x0f, 0x00, + 0x00, 0x00, 0x27, 0x10, 0x6a, 0x00, 0x00, 0x10, + 0x2e, 0x08, 0x7c, 0x24, 0xcc, 0x00, 0x0f, 0x80, + 0x2e, 0x08, 0x94, 0xac, 0x1c, 0x01, 0xb0, 0x81, + 0x48, 0x27, 0x22, 0x00, 0x92, 0x00, 0x9a, 0x00, + 0x2a, 0x16, 0xdb, 0x04, 0xe0, 0x09, 0x9a, 0x00, + 0x32, 0x01, 0x92, 0x00, 0xe7, 0xf7, 0x68, 0x02, + 0x9b, 0x00, 0x00, 0x9b, 0x50, 0xca, 0x30, 0x04, + 0xe7, 0xf5, 0x48, 0x20, 0x22, 0x00, 0x92, 0x00, + 0x9a, 0x00, 0x2a, 0x0b, 0xdb, 0x04, 0xe0, 0x0a, + 0x9a, 0x00, 0x32, 0x01, 0x92, 0x00, 0xe7, 0xf7, + 0x68, 0x03, 0x9a, 0x00, 0x00, 0x92, 0x18, 0x52, + 0x65, 0x93, 0x30, 0x04, 0xe7, 0xf4, 0x48, 0x18, + 0x22, 0x00, 0x92, 0x00, 0x9a, 0x00, 0x2a, 0x11, + 0xdb, 0x04, 0xe0, 0x0b, 0x9a, 0x00, 0x32, 0x01, + 0x92, 0x00, 0xe7, 0xf7, 0x68, 0x03, 0x9a, 0x00, + 0x00, 0x92, 0x18, 0x52, 0x32, 0x80, 0x60, 0x53, + 0x30, 0x04, 0xe7, 0xf3, 0x48, 0x0f, 0x22, 0x02, + 0x92, 0x00, 0x9a, 0x00, 0x2a, 0x05, 0xdb, 0x04, + 0xe0, 0x0b, 0x9a, 0x00, 0x32, 0x01, 0x92, 0x00, + 0xe7, 0xf7, 0x68, 0x02, 0x9b, 0x00, 0x00, 0x9b, + 0x18, 0x5b, 0x33, 0x80, 0x60, 0x5a, 0x30, 0x04, + 0xe7, 0xf3, 0x4a, 0x07, 0x6c, 0x12, 0x1d, 0xcb, + 0x33, 0x79, 0x61, 0xda, 0xb0, 0x01, 0x47, 0x70, + 0xcc, 0x00, 0x05, 0x20, 0xcc, 0x00, 0x0c, 0x00, + 0xcc, 0x00, 0x0c, 0x5c, 0xcc, 0x00, 0x0c, 0xa0, + 0xcc, 0x00, 0x0c, 0x80, 0xb4, 0xf0, 0x1c, 0x06, + 0x1c, 0x0f, 0x1c, 0x14, 0x1c, 0x1d, 0x06, 0x29, + 0x0e, 0x09, 0x2c, 0x1f, 0xdb, 0x02, 0x20, 0xaf, + 0xbc, 0xf0, 0x47, 0x70, 0x4b, 0x0b, 0x40, 0x1f, + 0x48, 0x0b, 0x68, 0x00, 0x60, 0x06, 0x29, 0x01, + 0xd1, 0x07, 0x48, 0x0a, 0x68, 0x02, 0x43, 0x3a, + 0x60, 0x02, 0x20, 0x80, 0x6e, 0x00, 0x60, 0x04, + 0xe0, 0x05, 0x29, 0x02, 0xd1, 0x03, 0x48, 0x05, + 0x68, 0x02, 0x43, 0xba, 0x60, 0x02, 0x20, 0x00, + 0xe7, 0xe6, 0xe7, 0xe5, 0xff, 0xff, 0xf8, 0xff, + 0x2e, 0x08, 0x60, 0x7c, 0xcc, 0x00, 0x02, 0x20, + 0xb5, 0xf3, 0xb0, 0x81, 0x98, 0x01, 0x06, 0x00, + 0x0e, 0x00, 0x90, 0x00, 0x99, 0x02, 0x06, 0x0e, + 0x0e, 0x36, 0x48, 0x1a, 0x6f, 0x00, 0x23, 0x02, + 0x40, 0x18, 0xd0, 0x0d, 0x20, 0x33, 0x06, 0x40, + 0x6d, 0x80, 0x21, 0x33, 0x06, 0x49, 0x6d, 0x49, + 0x1a, 0x41, 0x48, 0x14, 0x6d, 0xc0, 0x4a, 0x13, + 0x6d, 0x92, 0x1a, 0x80, 0x18, 0x0d, 0xe0, 0x06, + 0x20, 0x33, 0x06, 0x40, 0x6d, 0x80, 0x21, 0x33, + 0x06, 0x49, 0x6d, 0x49, 0x1a, 0x45, 0x98, 0x00, + 0x43, 0x68, 0x1c, 0x01, 0x20, 0x64, 0xf0, 0x07, + 0xfb, 0x43, 0x1c, 0x04, 0x43, 0x6e, 0x1c, 0x31, + 0x20, 0x64, 0xf0, 0x07, 0xfb, 0x3d, 0x1c, 0x07, + 0x08, 0xa4, 0x00, 0xa4, 0x08, 0xbf, 0x00, 0xbf, + 0x48, 0x05, 0x64, 0x84, 0x48, 0x04, 0x64, 0xc7, + 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x66, 0x00, 0x00, 0x80, + 0xcc, 0x00, 0x0c, 0x80, 0xb5, 0xf7, 0x9a, 0x02, + 0x06, 0x15, 0x0e, 0x2d, 0xb0, 0x82, 0x27, 0x00, + 0x2d, 0x1f, 0xdb, 0x05, 0x20, 0xaf, 0xb0, 0x02, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2f, 0x00, 0xd1, 0x0d, 0x48, 0x19, 0x69, 0x80, + 0x28, 0x00, 0xd0, 0x00, 0xe7, 0xfa, 0x20, 0x02, + 0x49, 0x16, 0x61, 0x88, 0x48, 0x15, 0x69, 0x80, + 0x28, 0x02, 0xd1, 0x00, 0x27, 0xff, 0xe7, 0xef, + 0x4c, 0x13, 0x94, 0x00, 0x20, 0x01, 0x02, 0x40, + 0x90, 0x01, 0x22, 0x00, 0x99, 0x03, 0xb4, 0x06, + 0x06, 0x2b, 0x16, 0x1b, 0x9a, 0x03, 0x99, 0x04, + 0x1c, 0x20, 0xf0, 0x01, 0xff, 0x75, 0xb0, 0x02, + 0x1c, 0x06, 0x2e, 0xd2, 0xd1, 0x06, 0x20, 0x00, + 0x49, 0x08, 0x61, 0x88, 0x20, 0xd2, 0xb0, 0x02, + 0xe7, 0xd2, 0xe0, 0x08, 0x20, 0x00, 0x99, 0x00, + 0x60, 0x08, 0x20, 0x00, 0x49, 0x03, 0x61, 0x88, + 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xc8, 0xb0, 0x02, + 0xe7, 0xc6, 0x00, 0x00, 0xcc, 0x00, 0x0f, 0x80, + 0xcc, 0x00, 0x06, 0x00, 0xb5, 0xff, 0x9f, 0x09, + 0xb0, 0x81, 0x9b, 0x01, 0x06, 0x18, 0x0e, 0x00, + 0x9b, 0x02, 0x06, 0x19, 0x0e, 0x09, 0x9b, 0x03, + 0x06, 0x1b, 0x0e, 0x1b, 0x93, 0x00, 0x9b, 0x04, + 0x06, 0x1a, 0x0e, 0x12, 0x06, 0x3d, 0x0e, 0x2d, + 0x2d, 0x01, 0xd1, 0x07, 0x4c, 0x1c, 0x68, 0x26, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x9e, 0x1c, 0x33, + 0x60, 0x23, 0xe0, 0x07, 0x2d, 0x02, 0xd1, 0x05, + 0x4c, 0x17, 0x68, 0x26, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x33, 0x60, 0x23, 0x28, 0x00, 0xd1, 0x03, + 0x23, 0x00, 0x4c, 0x14, 0x61, 0xe3, 0xe0, 0x04, + 0x28, 0x01, 0xd1, 0x02, 0x23, 0x01, 0x4c, 0x11, + 0x61, 0xe3, 0x29, 0x00, 0xd1, 0x03, 0x23, 0x00, + 0x4c, 0x0e, 0x65, 0xa3, 0xe0, 0x04, 0x29, 0x01, + 0xd1, 0x02, 0x23, 0x01, 0x4c, 0x0b, 0x65, 0xa3, + 0x2a, 0x00, 0xd1, 0x03, 0x23, 0x02, 0x4c, 0x09, + 0x66, 0xe3, 0xe0, 0x04, 0x2a, 0x01, 0xd1, 0x02, + 0x23, 0x03, 0x4c, 0x06, 0x66, 0xe3, 0x9b, 0x00, + 0x4c, 0x04, 0x67, 0x23, 0xb0, 0x01, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0xcc, 0x00, 0x02, 0x20, 0xcc, 0x00, 0x0f, 0x80, + 0xb5, 0xf0, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, + 0x06, 0x2e, 0x0e, 0x36, 0xb0, 0x84, 0x48, 0x15, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x04, 0x20, 0x39, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x01, 0xd1, 0x0a, 0x94, 0x00, 0x97, 0x01, + 0x48, 0x0f, 0x90, 0x02, 0x48, 0x0f, 0x90, 0x03, + 0x46, 0x68, 0x21, 0x01, 0xf0, 0x00, 0xfd, 0x1a, + 0xe0, 0x0f, 0x20, 0x00, 0x90, 0x00, 0x20, 0x00, + 0x90, 0x01, 0x48, 0x09, 0x90, 0x02, 0x48, 0x09, + 0x90, 0x03, 0x46, 0x68, 0x21, 0x01, 0xf0, 0x00, + 0xfd, 0x0d, 0x21, 0x00, 0x20, 0x02, 0xf7, 0xff, + 0xfc, 0x85, 0x20, 0x00, 0xb0, 0x04, 0xe7, 0xdc, + 0xb0, 0x04, 0xe7, 0xda, 0x2e, 0x08, 0x7c, 0xc4, + 0x00, 0x00, 0x02, 0xcf, 0x00, 0x00, 0x02, 0x3f, + 0xb4, 0xb0, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, + 0x48, 0x14, 0x6c, 0x00, 0x1c, 0x01, 0x48, 0x13, + 0x6f, 0x80, 0x23, 0x09, 0x01, 0x9b, 0x42, 0x98, + 0xd1, 0x12, 0x20, 0x02, 0x40, 0x20, 0xd0, 0x0c, + 0x2d, 0x02, 0xd1, 0x0a, 0x2f, 0x03, 0xd1, 0x00, + 0x31, 0x04, 0x2f, 0x03, 0xd2, 0x05, 0x07, 0xe0, + 0x0f, 0xc0, 0xd0, 0x01, 0x31, 0x05, 0xe0, 0x00, + 0x31, 0x08, 0x2d, 0x02, 0xd9, 0x00, 0x21, 0x12, + 0x00, 0x48, 0x18, 0x40, 0x30, 0x01, 0x10, 0x40, + 0x21, 0x2d, 0x02, 0x09, 0x43, 0x41, 0x48, 0x03, + 0x69, 0x40, 0x18, 0x09, 0x1c, 0x08, 0xbc, 0xb0, + 0x47, 0x70, 0xe7, 0xfc, 0xcc, 0x00, 0x0f, 0x80, + 0x48, 0x07, 0x6a, 0xc0, 0x1c, 0x01, 0x00, 0x48, + 0x18, 0x40, 0x30, 0x01, 0x10, 0x40, 0x21, 0x2d, + 0x02, 0x09, 0x43, 0x41, 0x48, 0x03, 0x69, 0x40, + 0x18, 0x09, 0x1c, 0x08, 0x47, 0x70, 0xe7, 0xfd, + 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x0f, 0x80, + 0x48, 0x07, 0x68, 0x80, 0x28, 0x00, 0xd1, 0x03, + 0x48, 0x06, 0x69, 0x00, 0x1c, 0x01, 0xe0, 0x02, + 0x48, 0x04, 0x68, 0xc0, 0x1c, 0x01, 0x4b, 0x02, + 0x18, 0xc9, 0x1c, 0x08, 0x47, 0x70, 0xe7, 0xfd, + 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x0f, 0x80, + 0xb5, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x48, 0x06, + 0x6c, 0x40, 0x60, 0x20, 0x48, 0x04, 0x6c, 0x80, + 0x60, 0x38, 0xf7, 0xff, 0xff, 0xe1, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xe7, 0xfb, 0x00, 0x00, + 0xcc, 0x00, 0x02, 0x00, 0xb5, 0xf0, 0x1c, 0x05, + 0x1c, 0x0c, 0x1c, 0x17, 0xf7, 0xff, 0xff, 0xd4, + 0x1c, 0x06, 0x2d, 0x00, 0xd0, 0x01, 0x2c, 0x00, + 0xd1, 0x03, 0x20, 0x3a, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x08, 0x78, 0x00, 0x40, 0xd0, 0x01, + 0x20, 0x3a, 0xe7, 0xf7, 0x20, 0x00, 0x49, 0x0d, + 0x66, 0x88, 0x48, 0x0d, 0x68, 0x01, 0x23, 0x12, + 0x43, 0x19, 0x60, 0x01, 0x48, 0x0b, 0x63, 0x45, + 0x48, 0x0a, 0x63, 0x84, 0x20, 0x01, 0x49, 0x09, + 0x62, 0x48, 0x48, 0x09, 0x68, 0x01, 0x23, 0x01, + 0x40, 0x59, 0x60, 0x01, 0x48, 0x05, 0x63, 0xc7, + 0x48, 0x02, 0x60, 0x46, 0x20, 0x00, 0xe7, 0xdd, + 0xe7, 0xdc, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x0f, 0x48, 0xcc, 0x00, 0x00, 0x80, + 0xcc, 0x00, 0x00, 0x08, 0xb4, 0xf0, 0x1c, 0x07, + 0x1c, 0x0c, 0x1c, 0x16, 0x1c, 0x1d, 0x48, 0x10, + 0x6a, 0x00, 0x28, 0x10, 0xd0, 0x02, 0x20, 0x3b, + 0xbc, 0xf0, 0x47, 0x70, 0x48, 0x0d, 0x68, 0x00, + 0x60, 0x38, 0x68, 0x38, 0x4b, 0x0b, 0x18, 0xc0, + 0x60, 0x38, 0x48, 0x0b, 0x6b, 0x40, 0x60, 0x30, + 0x48, 0x09, 0x6b, 0x80, 0x60, 0x28, 0x48, 0x09, + 0x6c, 0x80, 0x23, 0x10, 0x40, 0x18, 0xd0, 0x02, + 0x20, 0x02, 0x60, 0x20, 0xe0, 0x01, 0x20, 0x01, + 0x60, 0x20, 0x20, 0x00, 0xe7, 0xe4, 0xe7, 0xe3, + 0xcc, 0x00, 0x05, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x80, 0xcc, 0x00, 0x0f, 0x00, + 0xb4, 0xf0, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, + 0x06, 0x2a, 0x0e, 0x12, 0x06, 0x21, 0x0e, 0x09, + 0x2f, 0x00, 0xd1, 0x30, 0xb0, 0x81, 0x46, 0x6f, + 0x2a, 0x00, 0xd0, 0x06, 0x2a, 0x08, 0xd0, 0x0d, + 0x2a, 0x10, 0xd0, 0x14, 0x2a, 0x18, 0xd0, 0x1b, + 0xe0, 0x23, 0x20, 0x00, 0x70, 0x38, 0x20, 0x00, + 0x70, 0x78, 0x20, 0x0c, 0x70, 0xb8, 0x20, 0x00, + 0x70, 0xf8, 0xe0, 0x1b, 0x20, 0x00, 0x70, 0x38, + 0x20, 0x08, 0x70, 0x78, 0x20, 0x1c, 0x70, 0xb8, + 0x20, 0x00, 0x70, 0xf8, 0xe0, 0x12, 0x20, 0x00, + 0x70, 0x38, 0x20, 0x10, 0x70, 0x78, 0x20, 0x0c, + 0x70, 0xb8, 0x20, 0x00, 0x70, 0xf8, 0xe0, 0x09, + 0x20, 0x00, 0x70, 0x38, 0x20, 0x18, 0x70, 0x78, + 0x20, 0x1c, 0x70, 0xb8, 0x20, 0x00, 0x70, 0xf8, + 0xe0, 0x00, 0xe7, 0xff, 0xb0, 0x01, 0x23, 0x00, + 0x56, 0xf8, 0x23, 0x39, 0x06, 0x5b, 0x60, 0x18, + 0x23, 0x01, 0x56, 0xf8, 0x23, 0x39, 0x06, 0x5b, + 0x61, 0xd8, 0x29, 0x00, 0xd1, 0x06, 0x48, 0x0e, + 0x68, 0x06, 0x23, 0x20, 0x43, 0x9e, 0x1c, 0x33, + 0x60, 0x03, 0xe0, 0x06, 0x29, 0x20, 0xd1, 0x04, + 0x48, 0x09, 0x68, 0x06, 0x23, 0x20, 0x43, 0x33, + 0x60, 0x03, 0x23, 0x02, 0x56, 0xf8, 0x23, 0x39, + 0x06, 0x5b, 0x60, 0x58, 0x23, 0x03, 0x56, 0xf8, + 0x4b, 0x04, 0x63, 0x18, 0x20, 0x00, 0x23, 0x39, + 0x06, 0x5b, 0x64, 0x98, 0xbc, 0xf0, 0x47, 0x70, + 0x72, 0x00, 0x00, 0x1c, 0x72, 0x00, 0x01, 0x00, + 0xb4, 0xb0, 0x1c, 0x07, 0x1c, 0x0d, 0x1c, 0x14, + 0x06, 0x29, 0x0e, 0x09, 0x06, 0x22, 0x0e, 0x12, + 0xb0, 0x84, 0x29, 0x33, 0xdc, 0x01, 0x2a, 0x0f, + 0xdd, 0x03, 0x20, 0xff, 0xb0, 0x04, 0xbc, 0xb0, + 0x47, 0x70, 0x20, 0x39, 0x06, 0x40, 0x63, 0x41, + 0x20, 0x10, 0x43, 0x10, 0x23, 0x39, 0x06, 0x5b, + 0x63, 0x98, 0x20, 0x39, 0x06, 0x40, 0x68, 0x00, + 0x90, 0x03, 0x98, 0x03, 0x23, 0x9c, 0x43, 0xdb, + 0x40, 0x18, 0x90, 0x03, 0x20, 0x39, 0x06, 0x40, + 0x68, 0x40, 0x90, 0x01, 0x98, 0x01, 0x23, 0x20, + 0x43, 0xdb, 0x40, 0x18, 0x90, 0x01, 0x06, 0x38, + 0x0e, 0x00, 0xd0, 0x29, 0x20, 0x10, 0x40, 0x38, + 0xd0, 0x03, 0x98, 0x03, 0x23, 0x80, 0x43, 0x18, + 0x90, 0x03, 0x20, 0x08, 0x40, 0x38, 0xd0, 0x03, + 0x98, 0x03, 0x23, 0x10, 0x43, 0x18, 0x90, 0x03, + 0x20, 0x04, 0x40, 0x38, 0xd0, 0x04, 0x98, 0x03, + 0x23, 0x08, 0x43, 0x18, 0x90, 0x03, 0xe0, 0x0c, + 0x20, 0x02, 0x40, 0x38, 0xd0, 0x04, 0x98, 0x03, + 0x23, 0x0c, 0x43, 0x18, 0x90, 0x03, 0xe0, 0x04, + 0x98, 0x03, 0x23, 0x0c, 0x43, 0xdb, 0x40, 0x18, + 0x90, 0x03, 0x20, 0x20, 0x40, 0x38, 0xd0, 0x03, + 0x98, 0x01, 0x23, 0x20, 0x43, 0x18, 0x90, 0x01, + 0x98, 0x03, 0x23, 0x39, 0x06, 0x5b, 0x60, 0x18, + 0x98, 0x01, 0x23, 0x39, 0x06, 0x5b, 0x60, 0x58, + 0x20, 0x39, 0x06, 0x40, 0x6a, 0x00, 0x90, 0x00, + 0x98, 0x00, 0x23, 0xf0, 0x43, 0xdb, 0x43, 0x18, + 0x90, 0x00, 0x20, 0xff, 0x02, 0x00, 0x40, 0x38, + 0xd0, 0x27, 0x20, 0xff, 0x30, 0x01, 0x40, 0x38, + 0xd0, 0x03, 0x98, 0x00, 0x23, 0xfe, 0x40, 0x18, + 0x90, 0x00, 0x20, 0x01, 0x02, 0x40, 0x40, 0x38, + 0xd0, 0x03, 0x98, 0x00, 0x23, 0xfd, 0x40, 0x18, + 0x90, 0x00, 0x20, 0x01, 0x02, 0x80, 0x40, 0x38, + 0xd0, 0x03, 0x98, 0x00, 0x23, 0xfb, 0x40, 0x18, + 0x90, 0x00, 0x20, 0x01, 0x02, 0xc0, 0x40, 0x38, + 0xd0, 0x03, 0x98, 0x00, 0x23, 0xf7, 0x40, 0x18, + 0x90, 0x00, 0x20, 0x01, 0x03, 0x00, 0x40, 0x38, + 0xd0, 0x03, 0x98, 0x00, 0x23, 0xf0, 0x40, 0x18, + 0x90, 0x00, 0x98, 0x00, 0x23, 0x39, 0x06, 0x5b, + 0x62, 0x18, 0x20, 0x39, 0x06, 0x40, 0x69, 0xc0, + 0x90, 0x02, 0x98, 0x02, 0x08, 0x40, 0x00, 0x40, + 0x90, 0x02, 0x20, 0x39, 0x06, 0x40, 0x6a, 0xc0, + 0x90, 0x00, 0x98, 0x00, 0x23, 0x1c, 0x43, 0xdb, + 0x40, 0x18, 0x90, 0x00, 0x20, 0x39, 0x06, 0x40, + 0x6b, 0x80, 0x90, 0x03, 0x98, 0x03, 0x23, 0x10, + 0x43, 0xdb, 0x40, 0x18, 0x90, 0x03, 0x20, 0x39, + 0x06, 0x40, 0x6b, 0xc0, 0x90, 0x01, 0x98, 0x01, + 0x09, 0x00, 0x01, 0x00, 0x90, 0x01, 0x48, 0x4a, + 0x40, 0x38, 0xd0, 0x45, 0x20, 0x01, 0x04, 0x00, + 0x40, 0x38, 0xd0, 0x03, 0x98, 0x02, 0x23, 0x01, + 0x43, 0x18, 0x90, 0x02, 0x20, 0x01, 0x05, 0xc0, + 0x40, 0x38, 0xd0, 0x03, 0x98, 0x00, 0x23, 0x10, + 0x43, 0x18, 0x90, 0x00, 0x20, 0x07, 0x04, 0x40, + 0x40, 0x38, 0x23, 0x01, 0x04, 0x5b, 0x42, 0x98, + 0xd0, 0x08, 0x23, 0x01, 0x04, 0x9b, 0x42, 0x98, + 0xd0, 0x07, 0x23, 0x01, 0x04, 0xdb, 0x42, 0x98, + 0xd0, 0x08, 0xe0, 0x0c, 0x98, 0x00, 0x90, 0x00, + 0xe0, 0x0a, 0x98, 0x00, 0x23, 0x04, 0x43, 0x18, + 0x90, 0x00, 0xe0, 0x05, 0x98, 0x00, 0x23, 0x0c, + 0x43, 0x18, 0x90, 0x00, 0xe0, 0x00, 0xe7, 0xff, + 0x20, 0x01, 0x05, 0x80, 0x40, 0x38, 0xd0, 0x03, + 0x98, 0x03, 0x23, 0x10, 0x43, 0x18, 0x90, 0x03, + 0x20, 0x01, 0x05, 0x00, 0x40, 0x38, 0xd0, 0x03, + 0x98, 0x01, 0x23, 0x08, 0x43, 0x18, 0x90, 0x01, + 0x20, 0x01, 0x05, 0x40, 0x40, 0x38, 0xd0, 0x03, + 0x98, 0x01, 0x23, 0x07, 0x43, 0x18, 0x90, 0x01, + 0x98, 0x03, 0x23, 0x39, 0x06, 0x5b, 0x63, 0x98, + 0x98, 0x02, 0x23, 0x39, 0x06, 0x5b, 0x61, 0xd8, + 0x98, 0x01, 0x23, 0x39, 0x06, 0x5b, 0x63, 0xd8, + 0x98, 0x00, 0x23, 0x39, 0x06, 0x5b, 0x62, 0xd8, + 0x20, 0x39, 0x06, 0x40, 0x68, 0x80, 0x90, 0x03, + 0x98, 0x03, 0x08, 0x80, 0x00, 0x80, 0x90, 0x03, + 0x0f, 0x38, 0x07, 0x00, 0xd0, 0x26, 0x20, 0x01, + 0x07, 0x00, 0x40, 0x38, 0x23, 0x01, 0x07, 0x1b, + 0x42, 0x98, 0xd1, 0x04, 0x98, 0x03, 0x23, 0x02, + 0x43, 0x18, 0x90, 0x03, 0xe0, 0x07, 0x20, 0x00, + 0x42, 0x80, 0xd1, 0x04, 0x98, 0x03, 0x23, 0x02, + 0x43, 0xdb, 0x40, 0x18, 0x90, 0x03, 0x20, 0x01, + 0x07, 0x40, 0x40, 0x38, 0x23, 0x01, 0x07, 0x5b, + 0x42, 0x98, 0xd1, 0x04, 0x98, 0x03, 0x23, 0x01, + 0x43, 0x18, 0x90, 0x03, 0xe0, 0x06, 0x20, 0x00, + 0x42, 0x80, 0xd1, 0x03, 0x98, 0x03, 0x08, 0x40, + 0x00, 0x40, 0x90, 0x03, 0x98, 0x03, 0x23, 0x39, + 0x06, 0x5b, 0x60, 0x98, 0x20, 0x00, 0xb0, 0x04, + 0xe6, 0xc1, 0xb0, 0x04, 0xe6, 0xbf, 0x00, 0x00, + 0x0f, 0xff, 0x00, 0x00, 0x48, 0x02, 0x69, 0xc0, + 0x06, 0x00, 0x16, 0x00, 0x47, 0x70, 0xe7, 0xfd, + 0x72, 0x00, 0x01, 0x00, 0xb5, 0xf7, 0x1c, 0x04, + 0x1c, 0x0f, 0x06, 0x23, 0x16, 0x18, 0x06, 0x3b, + 0x16, 0x19, 0x9b, 0x02, 0x06, 0x1a, 0x0e, 0x12, + 0x2a, 0x00, 0xd1, 0x0b, 0x23, 0x39, 0x06, 0x5b, + 0x60, 0xd8, 0x23, 0x39, 0x06, 0x5b, 0x61, 0x19, + 0x4d, 0x0b, 0x68, 0x2e, 0x23, 0x01, 0x43, 0x33, + 0x60, 0x2b, 0xe0, 0x0c, 0x2a, 0x01, 0xd1, 0x0a, + 0x23, 0x39, 0x06, 0x5b, 0x61, 0x58, 0x23, 0x39, + 0x06, 0x5b, 0x61, 0x99, 0x4d, 0x04, 0x68, 0x2e, + 0x23, 0x02, 0x43, 0x33, 0x60, 0x2b, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x08, 0xb4, 0x90, 0x1c, 0x01, + 0x20, 0x92, 0x4b, 0x4b, 0x60, 0x18, 0x20, 0x92, + 0x4b, 0x4a, 0x60, 0x18, 0x20, 0x10, 0x4b, 0x4a, + 0x60, 0x18, 0x20, 0x00, 0x4b, 0x48, 0x60, 0x58, + 0x48, 0x48, 0x4b, 0x47, 0x60, 0x98, 0x22, 0x00, + 0x2a, 0x10, 0xdb, 0x02, 0xe0, 0x07, 0x32, 0x01, + 0xe7, 0xfa, 0x20, 0x00, 0x43, 0xc0, 0x00, 0x93, + 0x4c, 0x42, 0x50, 0xe0, 0xe7, 0xf7, 0x20, 0x00, + 0x43, 0xc0, 0x00, 0x93, 0x4c, 0x3f, 0x50, 0xe0, + 0x22, 0x00, 0x2a, 0x08, 0xdb, 0x02, 0xe0, 0x08, + 0x32, 0x01, 0xe7, 0xfa, 0x20, 0x00, 0x43, 0xc0, + 0x00, 0x94, 0x4b, 0x3b, 0x18, 0xe3, 0x64, 0x18, + 0xe7, 0xf6, 0x22, 0x00, 0x2a, 0x20, 0xdb, 0x02, + 0xe0, 0x08, 0x32, 0x01, 0xe7, 0xfa, 0x20, 0x00, + 0x43, 0xc0, 0x00, 0x94, 0x4b, 0x35, 0x18, 0xe3, + 0x60, 0x18, 0xe7, 0xf6, 0x22, 0x00, 0x2a, 0x19, + 0xdb, 0x02, 0xe0, 0x06, 0x32, 0x01, 0xe7, 0xfa, + 0x20, 0x00, 0x00, 0x93, 0x4c, 0x30, 0x50, 0xe0, + 0xe7, 0xf8, 0x20, 0x00, 0x4b, 0x2f, 0x60, 0x18, + 0x20, 0x39, 0x06, 0x40, 0x69, 0xc0, 0x27, 0x18, + 0x40, 0x07, 0x2f, 0x00, 0xd0, 0x03, 0x48, 0x2c, + 0x4b, 0x2c, 0x60, 0x18, 0xe0, 0x03, 0x20, 0xff, + 0x30, 0xe0, 0x4b, 0x2a, 0x60, 0x18, 0x20, 0x00, + 0x4b, 0x29, 0x60, 0x18, 0x20, 0x00, 0x4b, 0x28, + 0x60, 0x58, 0x48, 0x28, 0x4b, 0x26, 0x60, 0x98, + 0x48, 0x24, 0x68, 0x00, 0x4b, 0x24, 0x60, 0xd8, + 0x48, 0x25, 0x60, 0x01, 0x20, 0x0d, 0x06, 0xc0, + 0x61, 0xc1, 0x20, 0x05, 0x02, 0x00, 0x23, 0x0d, + 0x06, 0xdb, 0x60, 0x18, 0x48, 0x21, 0x23, 0x0d, + 0x06, 0xdb, 0x60, 0x58, 0x48, 0x1f, 0x4b, 0x16, + 0x63, 0x98, 0x20, 0x00, 0x23, 0x0d, 0x06, 0xdb, + 0x60, 0x98, 0x20, 0x00, 0x23, 0x0d, 0x06, 0xdb, + 0x61, 0x18, 0x48, 0x1b, 0x23, 0x0d, 0x06, 0xdb, + 0x61, 0x98, 0x20, 0x01, 0x23, 0x0d, 0x06, 0xdb, + 0x60, 0xd8, 0x48, 0x18, 0x23, 0x0d, 0x06, 0xdb, + 0x63, 0x18, 0x48, 0x17, 0x23, 0x0d, 0x06, 0xdb, + 0x63, 0x58, 0x20, 0x00, 0x4b, 0x15, 0x60, 0x18, + 0x48, 0x11, 0x4b, 0x15, 0x60, 0x18, 0x20, 0x00, + 0xbc, 0x90, 0x47, 0x70, 0xe7, 0xfc, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0xcc, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7d, 0x9c, 0x2e, 0x08, 0x7c, 0xd4, + 0x68, 0x00, 0x0d, 0x00, 0x68, 0x00, 0x04, 0x00, + 0x2e, 0x08, 0x7c, 0x60, 0x2e, 0x08, 0x7c, 0xc4, + 0x00, 0x00, 0x02, 0x3f, 0x2e, 0x08, 0x60, 0x88, + 0x2e, 0x08, 0x7d, 0xa8, 0x00, 0x00, 0x02, 0xcf, + 0x2e, 0x08, 0x60, 0x8c, 0x00, 0xf0, 0x29, 0x6d, + 0x3f, 0xff, 0xff, 0xff, 0x00, 0x80, 0x10, 0x80, + 0x00, 0x80, 0xeb, 0x80, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x5e, 0x54, 0xb5, 0xff, 0xb0, 0x85, + 0x20, 0x39, 0x06, 0x40, 0x69, 0xc0, 0x23, 0x18, + 0x40, 0x18, 0x90, 0x00, 0x98, 0x00, 0x28, 0x00, + 0xd0, 0x03, 0x48, 0x5a, 0x4b, 0x5a, 0x60, 0x18, + 0xe0, 0x03, 0x20, 0xff, 0x30, 0xe0, 0x4b, 0x58, + 0x60, 0x18, 0x9c, 0x06, 0x9f, 0x07, 0x22, 0x00, + 0x21, 0x00, 0x98, 0x05, 0x38, 0x0c, 0x28, 0x06, + 0xd2, 0x0c, 0xa3, 0x02, 0x5c, 0x1b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x04, 0x03, 0x06, 0x04, + 0x03, 0x06, 0x32, 0x01, 0x32, 0x01, 0xe0, 0x02, + 0x3a, 0x01, 0xe0, 0x00, 0xe7, 0xff, 0x98, 0x05, + 0x38, 0x0b, 0x28, 0x08, 0xd2, 0x15, 0xa3, 0x02, + 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x0a, 0x04, 0x04, 0x04, 0x0a, 0x0a, 0x0a, 0x04, + 0x25, 0x2d, 0x01, 0x2d, 0x48, 0x44, 0x68, 0x00, + 0x1c, 0x46, 0xe0, 0x0e, 0x48, 0x43, 0x6c, 0x40, + 0x1c, 0x05, 0x48, 0x43, 0x68, 0x40, 0x1c, 0x06, + 0xe0, 0x07, 0x21, 0xff, 0x1c, 0x08, 0xb0, 0x05, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xe7, 0xff, 0x2d, 0x00, 0xd0, 0x01, 0x2e, 0x00, + 0xd1, 0x04, 0x25, 0x2d, 0x01, 0x2d, 0x48, 0x38, + 0x68, 0x00, 0x1c, 0x46, 0x29, 0xff, 0xd1, 0x02, + 0x1c, 0x08, 0xb0, 0x05, 0xe7, 0xec, 0x1e, 0x68, + 0x90, 0x02, 0x1e, 0x70, 0x90, 0x01, 0x23, 0x01, + 0x42, 0xda, 0xd1, 0x08, 0x42, 0x50, 0x40, 0x85, + 0x1c, 0x2b, 0x1e, 0x5d, 0x42, 0x50, 0x40, 0x86, + 0x1c, 0x33, 0x1e, 0x5e, 0xe0, 0x05, 0x41, 0x15, + 0x1c, 0x28, 0x1e, 0x45, 0x41, 0x16, 0x1c, 0x30, + 0x1e, 0x46, 0x07, 0xe0, 0x0f, 0xc0, 0xd0, 0x02, + 0x21, 0x80, 0x08, 0x64, 0x00, 0x64, 0x07, 0xf8, + 0x0f, 0xc0, 0xd0, 0x02, 0x21, 0x80, 0x08, 0x7f, + 0x00, 0x7f, 0x19, 0x60, 0x90, 0x04, 0x19, 0xb8, + 0x90, 0x03, 0x2c, 0x00, 0xda, 0x01, 0x21, 0x80, + 0x24, 0x00, 0x98, 0x04, 0x28, 0x01, 0xda, 0x02, + 0x21, 0x80, 0x20, 0x01, 0x90, 0x04, 0x4b, 0x1f, + 0x42, 0x9c, 0xdb, 0x01, 0x21, 0x80, 0x4c, 0x1e, + 0x98, 0x04, 0x4b, 0x1c, 0x42, 0x98, 0xdd, 0x02, + 0x21, 0x80, 0x48, 0x1a, 0x90, 0x04, 0x2f, 0x00, + 0xda, 0x01, 0x21, 0x80, 0x27, 0x00, 0x98, 0x03, + 0x28, 0x01, 0xda, 0x02, 0x21, 0x80, 0x20, 0x01, + 0x90, 0x03, 0x48, 0x11, 0x68, 0x00, 0x42, 0x87, + 0xd3, 0x03, 0x21, 0x80, 0x48, 0x0e, 0x68, 0x00, + 0x1e, 0x47, 0x98, 0x03, 0x4b, 0x0c, 0x68, 0x1b, + 0x42, 0x98, 0xd9, 0x03, 0x21, 0x80, 0x48, 0x0a, + 0x68, 0x00, 0x90, 0x03, 0x9b, 0x08, 0x60, 0x1c, + 0x9b, 0x08, 0x60, 0x5f, 0x98, 0x04, 0x9b, 0x08, + 0x60, 0x98, 0x98, 0x03, 0x9b, 0x08, 0x60, 0xd8, + 0x1c, 0x08, 0xb0, 0x05, 0xe7, 0x88, 0xb0, 0x05, + 0xe7, 0x86, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3f, + 0x2e, 0x08, 0x60, 0x88, 0xcc, 0x00, 0x02, 0x00, + 0xcc, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0xcf, + 0x00, 0x00, 0x02, 0xce, 0xb5, 0xf0, 0x1c, 0x07, + 0x1c, 0x0c, 0xb0, 0x81, 0x2c, 0x0b, 0xdb, 0x19, + 0x2c, 0x12, 0xdc, 0x17, 0x68, 0xbe, 0x68, 0xf9, + 0x91, 0x00, 0x68, 0x7a, 0x1c, 0x3b, 0x68, 0x39, + 0x1c, 0x20, 0xf7, 0xff, 0xff, 0x23, 0x1c, 0x05, + 0x68, 0xb8, 0x42, 0xb0, 0xd0, 0x00, 0x25, 0x80, + 0x68, 0xf8, 0x99, 0x00, 0x42, 0x88, 0xd0, 0x00, + 0x25, 0x80, 0x1c, 0x28, 0xb0, 0x01, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x25, 0x00, 0x68, 0x38, + 0x28, 0x00, 0xda, 0x02, 0x25, 0x80, 0x20, 0x00, + 0x60, 0x38, 0x68, 0x78, 0x28, 0x00, 0xda, 0x02, + 0x25, 0x80, 0x20, 0x00, 0x60, 0x78, 0x68, 0x38, + 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x04, 0x25, 0x80, + 0x68, 0x38, 0x08, 0x40, 0x00, 0x40, 0x60, 0x38, + 0x68, 0xb8, 0x07, 0xc0, 0x0f, 0xc0, 0xd1, 0x09, + 0x25, 0x80, 0x68, 0xb8, 0x07, 0xc0, 0x0f, 0xc0, + 0xd0, 0x01, 0x68, 0xb8, 0xe0, 0x01, 0x68, 0xb8, + 0x38, 0x01, 0x60, 0xb8, 0x68, 0xb8, 0x68, 0x39, + 0x42, 0x88, 0xdc, 0x03, 0x25, 0x80, 0x68, 0x38, + 0x30, 0x01, 0x60, 0xb8, 0x68, 0x78, 0x68, 0xf9, + 0x42, 0x88, 0xdb, 0x03, 0x25, 0x80, 0x68, 0x78, + 0x30, 0x01, 0x60, 0xf8, 0x1c, 0x28, 0xb0, 0x01, + 0xe7, 0xc5, 0xb0, 0x01, 0xe7, 0xc3, 0x1c, 0x02, + 0x21, 0x18, 0xe0, 0x00, 0x31, 0x01, 0x1c, 0x08, + 0x47, 0x70, 0xe7, 0xfd, 0xb4, 0xf0, 0x1c, 0x07, + 0x1c, 0x0a, 0xb0, 0x81, 0x68, 0xb8, 0x68, 0x3b, + 0x1a, 0xc0, 0x1c, 0x46, 0x68, 0xf8, 0x68, 0x7b, + 0x1a, 0xc0, 0x30, 0x01, 0x90, 0x00, 0x00, 0x90, + 0x4b, 0x15, 0x58, 0x1c, 0x98, 0x00, 0x43, 0x46, + 0x1c, 0x35, 0x07, 0xa0, 0x0f, 0x80, 0x1c, 0x29, + 0x40, 0x81, 0x2a, 0x0b, 0xdb, 0x01, 0x2a, 0x12, + 0xdd, 0x01, 0x2a, 0x13, 0xd1, 0x01, 0x21, 0x00, + 0xe0, 0x0a, 0x2a, 0x09, 0xd0, 0x01, 0x2a, 0x0a, + 0xd1, 0x03, 0x00, 0x69, 0x19, 0x49, 0x00, 0xc9, + 0xe0, 0x02, 0x2a, 0x08, 0xd1, 0x00, 0x01, 0x29, + 0x20, 0x04, 0x40, 0x20, 0xd0, 0x00, 0x08, 0x49, + 0x09, 0x4c, 0x06, 0xc8, 0x0e, 0xc0, 0xd0, 0x00, + 0x34, 0x01, 0x1c, 0x20, 0xb0, 0x01, 0xbc, 0xf0, + 0x47, 0x70, 0xb0, 0x01, 0xe7, 0xfb, 0x00, 0x00, + 0x2e, 0x03, 0x32, 0xa4, 0xb4, 0x80, 0x23, 0x00, + 0x22, 0x01, 0x21, 0x00, 0x29, 0x08, 0xdb, 0x02, + 0xe0, 0x09, 0x31, 0x01, 0xe7, 0xfa, 0x00, 0x88, + 0x4f, 0x05, 0x58, 0x38, 0x28, 0x00, 0xd0, 0x00, + 0x43, 0x13, 0x00, 0x52, 0xe7, 0xf5, 0x1c, 0x18, + 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xfc, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0x60, 0xb5, 0xf3, 0x1c, 0x0f, + 0xb0, 0x81, 0x20, 0x39, 0x06, 0x40, 0x69, 0xc0, + 0x23, 0x18, 0x40, 0x18, 0x90, 0x00, 0x98, 0x00, + 0x28, 0x00, 0xd0, 0x03, 0x48, 0x32, 0x49, 0x33, + 0x60, 0x08, 0xe0, 0x03, 0x20, 0xff, 0x30, 0xe0, + 0x49, 0x30, 0x60, 0x08, 0x24, 0x00, 0x99, 0x01, + 0x48, 0x2f, 0xf7, 0xfc, 0xfa, 0x1f, 0x48, 0x2e, + 0x68, 0x00, 0x28, 0x00, 0xda, 0x03, 0x20, 0x00, + 0x49, 0x2b, 0x60, 0x08, 0x24, 0x80, 0x48, 0x2a, + 0x68, 0x40, 0x28, 0x00, 0xda, 0x03, 0x20, 0x00, + 0x49, 0x27, 0x60, 0x48, 0x24, 0x80, 0x48, 0x26, + 0x68, 0x80, 0x4b, 0x26, 0x42, 0x98, 0xdd, 0x03, + 0x48, 0x24, 0x49, 0x23, 0x60, 0x88, 0x24, 0x80, + 0x48, 0x21, 0x68, 0xc0, 0x49, 0x1f, 0x68, 0x09, + 0x42, 0x88, 0xd9, 0x04, 0x48, 0x1d, 0x68, 0x00, + 0x49, 0x1d, 0x60, 0xc8, 0x24, 0x80, 0x48, 0x1e, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x27, 0x2f, 0x01, + 0xd1, 0x25, 0x48, 0x19, 0x68, 0x06, 0x48, 0x18, + 0x68, 0x45, 0x23, 0xff, 0x33, 0x68, 0x42, 0x9e, + 0xdd, 0x01, 0x26, 0xff, 0x36, 0x68, 0x48, 0x13, + 0x68, 0x00, 0x08, 0x40, 0x42, 0xa8, 0xd2, 0x02, + 0x48, 0x10, 0x68, 0x00, 0x08, 0x45, 0x48, 0x13, + 0x49, 0x13, 0x65, 0x48, 0x48, 0x13, 0x43, 0x70, + 0x23, 0x01, 0x04, 0x1b, 0x18, 0xc0, 0x14, 0x40, + 0x49, 0x0f, 0x65, 0x88, 0x20, 0x00, 0x49, 0x0e, + 0x65, 0xc8, 0x48, 0x0d, 0x66, 0x05, 0x1c, 0x38, + 0x21, 0x00, 0xf7, 0xfe, 0xff, 0x13, 0x1c, 0x20, + 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb0, 0x01, 0xe7, 0xf9, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x3f, 0x2e, 0x08, 0x60, 0x88, + 0x2e, 0x08, 0x7d, 0xa8, 0x00, 0x00, 0x02, 0xcf, + 0x2e, 0x08, 0x7c, 0xc4, 0x00, 0x00, 0x07, 0xfa, + 0xcc, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x60, 0xb6, + 0xb5, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0xb0, 0x81, + 0x1c, 0x26, 0x69, 0x30, 0x90, 0x00, 0x98, 0x00, + 0x28, 0x13, 0xd1, 0x04, 0x20, 0x75, 0xb0, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xf5, + 0x68, 0x38, 0x08, 0x40, 0x00, 0x40, 0x60, 0x38, + 0x68, 0x78, 0x08, 0x40, 0x00, 0x40, 0x60, 0x78, + 0x68, 0xb8, 0x07, 0xc0, 0x0f, 0xc0, 0xd1, 0x02, + 0x68, 0xb8, 0x38, 0x01, 0x60, 0xb8, 0x68, 0xf8, + 0x07, 0xc0, 0x0f, 0xc0, 0xd1, 0x02, 0x68, 0xf8, + 0x38, 0x01, 0x60, 0xf8, 0x1d, 0xf0, 0x30, 0x49, + 0x1c, 0x39, 0xf7, 0xfc, 0xf9, 0x8b, 0x48, 0x1c, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x2d, 0x19, + 0xd3, 0x01, 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, + 0xe0, 0x04, 0x2d, 0x08, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, + 0x20, 0x00, 0xb0, 0x01, 0xe7, 0xcc, 0x49, 0x13, + 0x20, 0x91, 0xf0, 0x13, 0xfa, 0xeb, 0x28, 0x92, + 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x05, 0xfa, 0xf4, + 0xe7, 0xf5, 0x00, 0xa8, 0x49, 0x0e, 0x58, 0x08, + 0x42, 0xa0, 0xd0, 0x05, 0x20, 0x92, 0x49, 0x0b, + 0x60, 0x08, 0x20, 0xff, 0xb0, 0x01, 0xe7, 0xb7, + 0x48, 0x0a, 0x68, 0x00, 0x42, 0xa0, 0xd1, 0x03, + 0x1c, 0x39, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x10, + 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, + 0xb0, 0x01, 0xe7, 0xa9, 0xb0, 0x01, 0xe7, 0xa7, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xc8, + 0x2e, 0x08, 0x7c, 0x60, 0x2e, 0x08, 0x7c, 0xc4, + 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x9b, 0x20, 0x39, + 0x06, 0x40, 0x69, 0xc0, 0x23, 0x18, 0x40, 0x18, + 0x90, 0x01, 0x98, 0x01, 0x28, 0x00, 0xd0, 0x03, + 0x48, 0xf8, 0x49, 0xf9, 0x60, 0x08, 0xe0, 0x03, + 0x20, 0xff, 0x30, 0xe0, 0x49, 0xf6, 0x60, 0x08, + 0x20, 0xff, 0x30, 0x01, 0x90, 0x06, 0x98, 0x1b, + 0x90, 0x1a, 0x98, 0x1a, 0x69, 0x05, 0x98, 0x1a, + 0x68, 0xc0, 0x90, 0x19, 0x48, 0xf1, 0x68, 0x00, + 0x99, 0x1b, 0x42, 0x88, 0xd1, 0x73, 0x20, 0x02, + 0x90, 0x08, 0x2d, 0x0c, 0xd0, 0x01, 0x2d, 0x0f, + 0xd1, 0x02, 0x20, 0x04, 0x90, 0x08, 0xe0, 0x0c, + 0x2d, 0x0d, 0xd0, 0x01, 0x2d, 0x10, 0xd1, 0x02, + 0x20, 0x08, 0x90, 0x08, 0xe0, 0x05, 0x2d, 0x0e, + 0xd0, 0x01, 0x2d, 0x11, 0xd1, 0x01, 0x20, 0x01, + 0x90, 0x08, 0x68, 0xf8, 0x68, 0x79, 0x1a, 0x40, + 0x1c, 0x44, 0x2d, 0x0b, 0xd0, 0x05, 0x2d, 0x0f, + 0xd0, 0x03, 0x2d, 0x10, 0xd0, 0x01, 0x2d, 0x11, + 0xd1, 0x11, 0x48, 0xdf, 0x6c, 0x40, 0x1c, 0x06, + 0x48, 0xdd, 0x6c, 0x81, 0x91, 0x07, 0x2e, 0x00, + 0xd0, 0x02, 0x99, 0x07, 0x29, 0x00, 0xd1, 0x05, + 0x26, 0x2d, 0x01, 0x36, 0x48, 0xd6, 0x68, 0x00, + 0x1c, 0x41, 0x91, 0x07, 0xe0, 0x05, 0x26, 0x2d, + 0x01, 0x36, 0x48, 0xd3, 0x68, 0x00, 0x1c, 0x41, + 0x91, 0x07, 0x49, 0xd4, 0xa8, 0x15, 0xf7, 0xfc, + 0xf8, 0xe9, 0x98, 0x17, 0x1e, 0x71, 0x42, 0x88, + 0xdd, 0x01, 0x1e, 0x70, 0x90, 0x17, 0x98, 0x18, + 0x99, 0x07, 0x39, 0x01, 0x42, 0x88, 0xdd, 0x02, + 0x99, 0x07, 0x1e, 0x48, 0x90, 0x18, 0x98, 0x18, + 0x99, 0x16, 0x1a, 0x40, 0x00, 0x40, 0x1c, 0x81, + 0x98, 0x08, 0xf0, 0x06, 0xfb, 0xd3, 0x90, 0x0a, + 0x98, 0x0a, 0x42, 0x84, 0xdd, 0x00, 0x9c, 0x0a, + 0x48, 0xc5, 0x6f, 0x00, 0x90, 0x02, 0x20, 0x00, + 0x90, 0x05, 0x98, 0x02, 0x28, 0x02, 0xd0, 0x02, + 0x98, 0x02, 0x28, 0x03, 0xd1, 0x3a, 0x48, 0xc1, + 0x6b, 0x00, 0x90, 0x04, 0x48, 0xbe, 0x6e, 0xc1, + 0x91, 0x03, 0x98, 0x04, 0x99, 0x03, 0x42, 0x88, + 0xdd, 0x21, 0x20, 0xc0, 0x90, 0x06, 0x1d, 0x20, + 0x28, 0x00, 0xda, 0x02, 0xe0, 0x00, 0xe1, 0x8e, + 0x30, 0x07, 0x10, 0xc0, 0x90, 0x05, 0x98, 0x04, + 0x28, 0x03, 0xd0, 0x14, 0x99, 0x03, 0x29, 0x03, + 0xd1, 0x07, 0x20, 0xcd, 0x90, 0x06, 0x1d, 0x61, + 0x20, 0x0a, 0xf0, 0x06, 0xfb, 0xa3, 0x90, 0x05, + 0xe0, 0x09, 0x98, 0x02, 0x28, 0x02, 0xd1, 0x06, + 0x20, 0x9a, 0x90, 0x06, 0x1c, 0xa1, 0x20, 0x05, + 0xf0, 0x06, 0xfb, 0x98, 0x90, 0x05, 0x98, 0x06, + 0x28, 0x9a, 0xd0, 0x02, 0x98, 0x06, 0x28, 0xcd, + 0xd1, 0x08, 0x2d, 0x0e, 0xd0, 0x01, 0x2d, 0x11, + 0xd1, 0x04, 0x20, 0x00, 0x90, 0x05, 0x20, 0xff, + 0x30, 0x01, 0x90, 0x06, 0x2d, 0x12, 0xd1, 0x0b, + 0x48, 0x9d, 0x68, 0x00, 0x30, 0x01, 0x42, 0xa0, + 0xd1, 0x06, 0x68, 0x78, 0x28, 0x00, 0xd1, 0x03, + 0x20, 0x01, 0x49, 0x9f, 0x63, 0x48, 0xe0, 0x02, + 0x20, 0x00, 0x49, 0x9d, 0x63, 0x48, 0x98, 0x0a, + 0x99, 0x06, 0x43, 0x48, 0x28, 0x00, 0xda, 0x00, + 0x30, 0xff, 0x12, 0x00, 0x42, 0xa0, 0xdd, 0x04, + 0x20, 0x00, 0x90, 0x05, 0x20, 0xff, 0x30, 0x01, + 0x90, 0x06, 0x68, 0x78, 0x99, 0x05, 0x18, 0x40, + 0x60, 0x78, 0x1c, 0x39, 0xa8, 0x11, 0xf7, 0xfc, + 0xf8, 0x61, 0x1c, 0x29, 0xa8, 0x11, 0xf7, 0xff, + 0xfd, 0x71, 0x98, 0x12, 0x49, 0x88, 0x68, 0x09, + 0x39, 0x01, 0x42, 0x88, 0xd1, 0x00, 0x24, 0x00, + 0x99, 0x15, 0x91, 0x0d, 0x98, 0x16, 0x90, 0x0f, + 0x21, 0x00, 0x91, 0x10, 0x68, 0x38, 0x28, 0x00, + 0xda, 0x08, 0x68, 0x38, 0x99, 0x08, 0x43, 0x48, + 0x42, 0x41, 0x29, 0x00, 0xda, 0x00, 0x31, 0x01, + 0x10, 0x49, 0x91, 0x10, 0x68, 0x78, 0x28, 0x00, + 0xda, 0x0d, 0x68, 0x78, 0x99, 0x08, 0x43, 0x48, + 0x28, 0x00, 0xda, 0x00, 0x30, 0x01, 0x10, 0x40, + 0x02, 0x01, 0x98, 0x06, 0xf0, 0x06, 0xfb, 0x36, + 0x99, 0x0f, 0x1a, 0x08, 0x90, 0x0f, 0x98, 0x18, + 0x99, 0x0f, 0x42, 0x88, 0xdc, 0x02, 0x98, 0x18, + 0x30, 0x01, 0x90, 0x0f, 0x98, 0x17, 0x99, 0x0d, + 0x1a, 0x40, 0x30, 0x01, 0x90, 0x0e, 0x98, 0x18, + 0x99, 0x0f, 0x1a, 0x40, 0x30, 0x01, 0x90, 0x09, + 0x98, 0x09, 0x00, 0x41, 0x98, 0x08, 0xf0, 0x06, + 0xfb, 0x1d, 0x99, 0x06, 0x43, 0x48, 0x28, 0x00, + 0xda, 0x00, 0x30, 0xff, 0x12, 0x00, 0x90, 0x09, + 0x68, 0xb8, 0x68, 0x39, 0x1a, 0x40, 0x1c, 0x41, + 0x91, 0x0c, 0x98, 0x17, 0x99, 0x15, 0x1a, 0x40, + 0x00, 0x40, 0x1c, 0x81, 0x98, 0x08, 0xf0, 0x06, + 0xfb, 0x09, 0x90, 0x0b, 0x98, 0x0b, 0x4b, 0x65, + 0x40, 0x18, 0x90, 0x0b, 0x98, 0x0b, 0x99, 0x08, + 0x43, 0x48, 0x28, 0x00, 0xda, 0x00, 0x30, 0x01, + 0x10, 0x40, 0x90, 0x0e, 0x99, 0x0c, 0x98, 0x0b, + 0x42, 0x81, 0xdd, 0x01, 0x98, 0x0b, 0x90, 0x0c, + 0x99, 0x0c, 0x4b, 0x5c, 0x40, 0x19, 0x91, 0x0c, + 0x98, 0x0c, 0x28, 0x00, 0xdd, 0x05, 0x68, 0x38, + 0x99, 0x0c, 0x18, 0x40, 0x38, 0x01, 0x90, 0x13, + 0xe0, 0x02, 0x68, 0x38, 0x30, 0x01, 0x90, 0x13, + 0x98, 0x13, 0x28, 0x01, 0xda, 0x01, 0x20, 0x01, + 0x90, 0x13, 0x98, 0x13, 0x4b, 0x52, 0x42, 0x98, + 0xdd, 0x01, 0x48, 0x51, 0x90, 0x13, 0x99, 0x06, + 0x43, 0x4c, 0x1c, 0x20, 0x28, 0x00, 0xda, 0x00, + 0x30, 0xff, 0x12, 0x04, 0x98, 0x0a, 0x42, 0x84, + 0xdd, 0x00, 0x9c, 0x0a, 0x2c, 0x02, 0xda, 0x00, + 0x24, 0x02, 0x68, 0x78, 0x19, 0x00, 0x38, 0x01, + 0x90, 0x14, 0x98, 0x14, 0x28, 0x01, 0xda, 0x01, + 0x20, 0x01, 0x90, 0x14, 0x98, 0x14, 0x49, 0x3c, + 0x68, 0x09, 0x42, 0x88, 0xd9, 0x02, 0x48, 0x3a, + 0x68, 0x00, 0x90, 0x14, 0x98, 0x12, 0x49, 0x38, + 0x68, 0x09, 0x39, 0x01, 0x42, 0x88, 0xd9, 0x03, + 0x48, 0x35, 0x68, 0x00, 0x38, 0x01, 0x90, 0x12, + 0x98, 0x09, 0x28, 0x04, 0xdb, 0x01, 0x2c, 0x04, + 0xda, 0x01, 0x20, 0x00, 0x90, 0x0e, 0x98, 0x0e, + 0x28, 0x03, 0xdb, 0x02, 0x98, 0x0c, 0x28, 0x04, + 0xda, 0x09, 0x20, 0x00, 0x90, 0x0e, 0x48, 0x35, + 0x90, 0x11, 0x48, 0x33, 0x90, 0x13, 0x20, 0x00, + 0x90, 0x12, 0x20, 0x01, 0x90, 0x14, 0x21, 0x00, + 0x91, 0x00, 0x98, 0x08, 0x28, 0x01, 0xd1, 0x16, + 0x98, 0x0e, 0x99, 0x10, 0x1a, 0x40, 0x00, 0x40, + 0x4b, 0x2b, 0x42, 0x98, 0xdd, 0x0b, 0x98, 0x0e, + 0x99, 0x10, 0x1a, 0x40, 0x00, 0x40, 0x23, 0x2d, + 0x01, 0x1b, 0x1a, 0xc1, 0x29, 0x00, 0xda, 0x00, + 0x31, 0x01, 0x10, 0x49, 0x91, 0x00, 0x98, 0x0e, + 0x42, 0xb0, 0xdd, 0x00, 0x96, 0x0e, 0x99, 0x10, + 0x42, 0xb1, 0xdd, 0x00, 0x96, 0x10, 0x1c, 0x30, + 0x21, 0x01, 0x07, 0x49, 0xf0, 0x06, 0xfa, 0x76, + 0x99, 0x0d, 0x43, 0x48, 0x23, 0x01, 0x04, 0x1b, + 0x18, 0xc0, 0x14, 0x40, 0x49, 0x1c, 0x65, 0x88, + 0x1c, 0x30, 0x21, 0x01, 0x07, 0x49, 0xf0, 0x06, + 0xfa, 0x69, 0x99, 0x10, 0x43, 0x48, 0x23, 0x01, + 0x04, 0x1b, 0x18, 0xc0, 0x14, 0x40, 0x49, 0x16, + 0x65, 0xc8, 0x1c, 0x30, 0x21, 0x01, 0x07, 0x49, + 0xf0, 0x06, 0xfa, 0x5c, 0x99, 0x0e, 0x43, 0x48, + 0x23, 0x01, 0x04, 0x1b, 0x18, 0xc0, 0x14, 0x40, + 0x49, 0x0f, 0x65, 0x48, 0x99, 0x07, 0x1f, 0x08, + 0x99, 0x0f, 0x42, 0x88, 0xdc, 0x1b, 0x99, 0x07, + 0x1f, 0x08, 0xe0, 0x17, 0x00, 0x00, 0x02, 0x3f, + 0x2e, 0x08, 0x60, 0x88, 0x2e, 0x08, 0x7c, 0xc4, + 0xcc, 0x00, 0x02, 0x00, 0x2e, 0x08, 0x7d, 0xa8, + 0xcc, 0x00, 0x0f, 0x80, 0xcc, 0x00, 0x00, 0x80, + 0xcc, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xfe, + 0x00, 0x00, 0x02, 0xcf, 0x00, 0x00, 0x02, 0xce, + 0xcc, 0x00, 0x00, 0x00, 0x90, 0x0f, 0x98, 0x0f, + 0x49, 0x0d, 0x66, 0x08, 0x1c, 0x30, 0x21, 0x01, + 0x07, 0x49, 0xf0, 0x06, 0xfa, 0x2b, 0x99, 0x00, + 0x43, 0x48, 0x23, 0x01, 0x04, 0x1b, 0x18, 0xc0, + 0x14, 0x40, 0x49, 0x07, 0x66, 0x48, 0xa9, 0x11, + 0x1c, 0x38, 0xf7, 0xfb, 0xff, 0x1f, 0x20, 0x00, + 0xb0, 0x1b, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb0, 0x1b, 0xe7, 0xf9, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xb4, 0xb0, 0x1c, 0x02, + 0x1c, 0x0f, 0x2a, 0x00, 0xd1, 0x02, 0x20, 0x01, + 0xbc, 0xb0, 0x47, 0x70, 0x2f, 0x01, 0xd1, 0x20, + 0x20, 0x00, 0x23, 0x00, 0x4d, 0x13, 0x62, 0x2b, + 0x23, 0x00, 0x4d, 0x12, 0x62, 0xab, 0x4b, 0x12, + 0x68, 0x9b, 0x1c, 0x1c, 0x4b, 0x11, 0x6e, 0xdb, + 0x1c, 0x19, 0x2c, 0x02, 0xd0, 0x01, 0x29, 0x02, + 0xd1, 0x01, 0x20, 0x08, 0xe0, 0x00, 0x20, 0x07, + 0x79, 0x13, 0x2b, 0x00, 0xd0, 0x01, 0x23, 0x10, + 0x43, 0x18, 0x4b, 0x08, 0x62, 0x58, 0x79, 0x55, + 0x23, 0x80, 0x43, 0x2b, 0x4d, 0x05, 0x62, 0xab, + 0xe0, 0x05, 0x48, 0x07, 0x68, 0x05, 0x23, 0x80, + 0x43, 0x9d, 0x1c, 0x2b, 0x60, 0x03, 0x20, 0x00, + 0xe7, 0xd2, 0xe7, 0xd1, 0x72, 0x00, 0x01, 0x00, + 0xcc, 0x00, 0x0c, 0x00, 0xcc, 0x00, 0x0f, 0x80, + 0x72, 0x00, 0x01, 0x28, 0xb5, 0xff, 0x9f, 0x09, + 0xb0, 0x81, 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, + 0x90, 0x00, 0x99, 0x02, 0x06, 0x0c, 0x0e, 0x24, + 0x98, 0x03, 0x06, 0x02, 0x0e, 0x12, 0x9b, 0x04, + 0x06, 0x1d, 0x0e, 0x2d, 0x2f, 0x01, 0xd1, 0x1b, + 0x20, 0x00, 0x4b, 0x14, 0x62, 0x18, 0x20, 0x00, + 0x4b, 0x12, 0x62, 0x98, 0x98, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x01, 0x23, 0x43, 0x18, 0x06, 0x01, + 0x0e, 0x09, 0x48, 0x0e, 0x62, 0x41, 0x07, 0x50, + 0x0f, 0x40, 0x07, 0x6b, 0x0f, 0x5b, 0x00, 0xdb, + 0x43, 0x18, 0x06, 0x01, 0x0e, 0x09, 0x20, 0x80, + 0x43, 0x08, 0x4b, 0x08, 0x62, 0x98, 0xe0, 0x05, + 0x48, 0x07, 0x68, 0x06, 0x23, 0x80, 0x43, 0x9e, + 0x1c, 0x33, 0x60, 0x03, 0x20, 0x00, 0xb0, 0x01, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb0, 0x01, 0xe7, 0xf9, 0x72, 0x00, 0x01, 0x00, + 0x72, 0x00, 0x01, 0x28, 0xb5, 0xf1, 0x98, 0x00, + 0x06, 0x07, 0x0e, 0x3f, 0xb0, 0x81, 0x2f, 0x1f, + 0xdb, 0x05, 0x20, 0xb3, 0xb0, 0x01, 0xb0, 0x01, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x62, + 0x23, 0x80, 0x68, 0x1b, 0x60, 0x18, 0x48, 0x61, + 0x23, 0x80, 0x6b, 0x1b, 0x60, 0x18, 0x48, 0x60, + 0x23, 0x80, 0x6b, 0x5b, 0x60, 0x18, 0x48, 0x5f, + 0x23, 0x80, 0x6b, 0x9b, 0x60, 0x18, 0x20, 0x01, + 0x40, 0xb8, 0x4b, 0x59, 0x60, 0x18, 0x20, 0x00, + 0x4b, 0x57, 0x71, 0x18, 0x20, 0x00, 0x4b, 0x56, + 0x71, 0x58, 0x48, 0x55, 0x68, 0x00, 0x4b, 0x58, + 0x60, 0x58, 0x48, 0x58, 0x4b, 0x56, 0x60, 0x98, + 0x48, 0x57, 0x4b, 0x55, 0x60, 0xd8, 0x20, 0xff, + 0x30, 0x01, 0x4b, 0x53, 0x62, 0x18, 0x20, 0xff, + 0x30, 0x01, 0x4b, 0x51, 0x62, 0x58, 0x20, 0x03, + 0x4b, 0x52, 0x75, 0x18, 0x20, 0x0e, 0x4b, 0x51, + 0x75, 0x58, 0x20, 0x04, 0x4b, 0x4f, 0x75, 0x98, + 0x20, 0x03, 0x4b, 0x4e, 0x75, 0xd8, 0x20, 0x00, + 0x4b, 0x4d, 0x60, 0x18, 0x20, 0x00, 0x4b, 0x4d, + 0x60, 0x18, 0x20, 0x0d, 0x23, 0x19, 0x06, 0x9b, + 0x63, 0x18, 0x22, 0x00, 0x2a, 0x20, 0xdb, 0x04, + 0xe0, 0x21, 0x1c, 0x50, 0x06, 0x02, 0x0e, 0x12, + 0xe7, 0xf8, 0x25, 0x00, 0x00, 0x93, 0x4e, 0x46, + 0x50, 0xf5, 0x25, 0xff, 0x4b, 0x45, 0x54, 0x9d, + 0x01, 0x15, 0x4b, 0x45, 0x18, 0xec, 0x01, 0x15, + 0x4b, 0x44, 0x18, 0xe8, 0x25, 0x00, 0xc4, 0x20, + 0x25, 0x00, 0xc4, 0x20, 0x25, 0x00, 0xc4, 0x20, + 0x25, 0x00, 0xc4, 0x20, 0x25, 0x00, 0xc0, 0x20, + 0x25, 0x00, 0xc0, 0x20, 0x25, 0x00, 0xc0, 0x20, + 0x25, 0x00, 0xc0, 0x20, 0xe7, 0xdd, 0x21, 0x00, + 0x29, 0x20, 0xdb, 0x04, 0xe0, 0x0b, 0x1c, 0x48, + 0x04, 0x01, 0x0c, 0x09, 0xe7, 0xf8, 0x23, 0x00, + 0x00, 0x88, 0x4c, 0x2a, 0x50, 0x23, 0x23, 0x00, + 0x48, 0x35, 0x54, 0x43, 0xe7, 0xf3, 0x4c, 0x35, + 0x94, 0x00, 0x22, 0x00, 0x2a, 0x10, 0xdb, 0x04, + 0xe0, 0x0f, 0x1c, 0x50, 0x06, 0x02, 0x0e, 0x12, + 0xe7, 0xf8, 0x20, 0x00, 0x00, 0x93, 0x4c, 0x30, + 0x50, 0xe0, 0x23, 0xff, 0x48, 0x2f, 0x54, 0x83, + 0x20, 0x00, 0x00, 0x93, 0x9c, 0x00, 0x50, 0xe0, + 0xe7, 0xef, 0x21, 0x00, 0x23, 0xff, 0x33, 0x01, + 0x42, 0x99, 0xdb, 0x04, 0xe0, 0x2a, 0x1c, 0x48, + 0x04, 0x01, 0x0c, 0x09, 0xe7, 0xf6, 0x23, 0x00, + 0x00, 0x88, 0x4c, 0x1a, 0x50, 0x23, 0x20, 0x00, + 0x00, 0x8b, 0x4c, 0x18, 0x19, 0x1c, 0x23, 0x01, + 0x02, 0x9b, 0x18, 0xe3, 0x60, 0x18, 0x20, 0x00, + 0x4b, 0x14, 0x18, 0x5c, 0x23, 0x01, 0x02, 0xdb, + 0x18, 0xe3, 0x70, 0x18, 0x20, 0x00, 0x00, 0x8b, + 0x4c, 0x11, 0x50, 0xe0, 0x20, 0x00, 0x00, 0x8b, + 0x4c, 0x0f, 0x19, 0x1c, 0x23, 0x01, 0x02, 0x9b, + 0x18, 0xe3, 0x60, 0x18, 0x20, 0x00, 0x4b, 0x0c, + 0x18, 0x5c, 0x23, 0x01, 0x02, 0xdb, 0x18, 0xe3, + 0x70, 0x18, 0xe7, 0xd4, 0x20, 0x00, 0xb0, 0x01, + 0xe7, 0x39, 0xb0, 0x01, 0xe7, 0x37, 0x00, 0x00, + 0x2e, 0x08, 0x72, 0xf4, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x72, 0x98, 0x2e, 0x08, 0x72, 0xa4, + 0x9e, 0x00, 0x04, 0x80, 0x2e, 0x08, 0x60, 0x98, + 0x2e, 0x08, 0x69, 0x98, 0x9e, 0x00, 0x04, 0xa0, + 0x2e, 0x08, 0x5e, 0xe4, 0x2e, 0x08, 0x5e, 0xe8, + 0x2e, 0x08, 0x5e, 0xec, 0x2e, 0x08, 0x5f, 0xac, + 0x64, 0x00, 0x08, 0x00, 0x64, 0x00, 0x10, 0x00, + 0x2e, 0x08, 0x7b, 0xfc, 0x9e, 0x00, 0x04, 0xb8, + 0x2e, 0x08, 0x5f, 0x6c, 0x2e, 0x08, 0x5f, 0xcc, + 0xb4, 0xb0, 0x1c, 0x07, 0x1c, 0x0a, 0x06, 0x11, + 0x0e, 0x09, 0x29, 0x20, 0xdb, 0x02, 0x20, 0xa2, + 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x88, 0x4b, 0x0a, + 0x58, 0x18, 0x1c, 0x05, 0xd1, 0x01, 0x20, 0xb0, + 0xe7, 0xf6, 0x68, 0xe8, 0x1c, 0x04, 0xd1, 0x01, + 0x20, 0xb6, 0xe7, 0xf1, 0x68, 0x60, 0x00, 0x43, + 0x18, 0x18, 0x01, 0x80, 0x08, 0x80, 0x60, 0x38, + 0x20, 0x00, 0xe7, 0xe9, 0xe7, 0xe8, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x64, 0xb5, 0xff, 0xb0, 0x82, + 0x9a, 0x04, 0x06, 0x11, 0x0e, 0x09, 0x91, 0x00, + 0x9b, 0x05, 0x06, 0x18, 0x0e, 0x00, 0x90, 0x01, + 0xb0, 0x83, 0x99, 0x03, 0x29, 0x20, 0xdb, 0x05, + 0x20, 0xa2, 0xb0, 0x05, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x98, 0x05, 0x28, 0x00, + 0xd0, 0x64, 0x98, 0x05, 0x23, 0x0d, 0x06, 0x9b, + 0x42, 0xd8, 0xd3, 0x02, 0x20, 0xb4, 0xb0, 0x05, + 0xe7, 0xf0, 0x99, 0x06, 0x23, 0xff, 0x33, 0x81, + 0x42, 0x99, 0xd2, 0x02, 0x20, 0xb5, 0xb0, 0x05, + 0xe7, 0xe8, 0x99, 0x03, 0x00, 0x88, 0x49, 0x2c, + 0x58, 0x08, 0x90, 0x02, 0x28, 0x00, 0xd1, 0x02, + 0x20, 0xb0, 0xb0, 0x05, 0xe7, 0xde, 0x99, 0x06, + 0x00, 0x88, 0x1f, 0xc1, 0x39, 0x05, 0x91, 0x00, + 0x9e, 0x05, 0x98, 0x05, 0x1d, 0xc5, 0x35, 0x05, + 0x60, 0x35, 0x99, 0x06, 0x60, 0x71, 0x20, 0x00, + 0x60, 0xb0, 0x98, 0x04, 0x28, 0x10, 0xd1, 0x0a, + 0x98, 0x02, 0x68, 0x84, 0x98, 0x02, 0x30, 0x18, + 0x90, 0x01, 0x1c, 0x2a, 0x99, 0x00, 0x98, 0x01, + 0xf0, 0x00, 0xfc, 0x86, 0xe0, 0x25, 0x98, 0x04, + 0x28, 0x20, 0xd1, 0x1f, 0x98, 0x02, 0x68, 0xc0, + 0x1c, 0x07, 0xd1, 0x02, 0x20, 0xb6, 0xb0, 0x05, + 0xe7, 0xb8, 0x78, 0xb8, 0x08, 0x40, 0x00, 0x40, + 0x70, 0xb8, 0x69, 0x3c, 0x1d, 0xf8, 0x30, 0x05, + 0x90, 0x01, 0x68, 0xb8, 0x28, 0x00, 0xd1, 0x00, + 0x60, 0xbd, 0x1c, 0x2a, 0x99, 0x00, 0x98, 0x01, + 0xf0, 0x00, 0xfc, 0x6a, 0x68, 0x79, 0x18, 0x40, + 0x60, 0x78, 0x78, 0x78, 0x99, 0x03, 0xf0, 0x00, + 0xf8, 0xb9, 0xe0, 0x02, 0x20, 0xbc, 0xb0, 0x05, + 0xe7, 0x9c, 0x68, 0xa0, 0x28, 0x00, 0xd0, 0x01, + 0x68, 0xa4, 0xe7, 0xfa, 0x60, 0xa6, 0x20, 0x00, + 0xb0, 0x05, 0xe7, 0x93, 0x20, 0xb4, 0xb0, 0x05, + 0xe7, 0x90, 0xb0, 0x03, 0xb0, 0x02, 0xe7, 0x8d, + 0x2e, 0x08, 0x5e, 0x64, 0xb5, 0xff, 0xb0, 0x81, + 0x9a, 0x03, 0x06, 0x16, 0x0e, 0x36, 0x9b, 0x04, + 0x06, 0x18, 0x0e, 0x00, 0x90, 0x00, 0xb0, 0x83, + 0x27, 0x00, 0x2e, 0x20, 0xdb, 0x05, 0x20, 0xa2, + 0xb0, 0x04, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0xb0, 0x49, 0x45, 0x58, 0x08, + 0x1c, 0x04, 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x04, + 0xe7, 0xf3, 0x78, 0xe0, 0x28, 0x00, 0xd1, 0x73, + 0x98, 0x03, 0x28, 0x20, 0xd1, 0x19, 0x68, 0xe0, + 0x1c, 0x07, 0xd1, 0x02, 0x20, 0xb6, 0xb0, 0x04, + 0xe7, 0xe7, 0x69, 0x38, 0x49, 0x3c, 0x60, 0x48, + 0x48, 0x3b, 0x68, 0x40, 0x68, 0x00, 0x60, 0xb8, + 0x1d, 0xf8, 0x30, 0x05, 0x90, 0x02, 0x20, 0x01, + 0x90, 0x00, 0x48, 0x37, 0x68, 0x40, 0x68, 0x40, + 0x00, 0x80, 0x1f, 0xc1, 0x39, 0x19, 0x91, 0x01, + 0xe0, 0x1d, 0x98, 0x03, 0x28, 0x10, 0xd1, 0x17, + 0x68, 0xa0, 0x49, 0x31, 0x60, 0x48, 0x48, 0x30, + 0x68, 0x40, 0x68, 0x00, 0x61, 0x20, 0x48, 0x2e, + 0x68, 0x40, 0x68, 0x00, 0x61, 0x60, 0x1d, 0xe0, + 0x30, 0x11, 0x90, 0x02, 0x48, 0x2a, 0x68, 0x40, + 0x68, 0x40, 0x00, 0x80, 0x1f, 0xc1, 0x39, 0x21, + 0x91, 0x01, 0x20, 0x00, 0x90, 0x00, 0xe0, 0x02, + 0x20, 0xbc, 0xb0, 0x04, 0xe7, 0xb5, 0x48, 0x24, + 0x68, 0x40, 0x68, 0x80, 0x28, 0x00, 0xd0, 0x37, + 0x25, 0x00, 0x48, 0x21, 0x68, 0x40, 0x68, 0x02, + 0x99, 0x01, 0x98, 0x02, 0xf0, 0x00, 0xfb, 0xe8, + 0x19, 0x45, 0x48, 0x1d, 0x68, 0x40, 0x49, 0x1c, + 0x60, 0x08, 0x48, 0x1b, 0x68, 0x00, 0x68, 0x80, + 0x49, 0x19, 0x60, 0x48, 0x48, 0x18, 0x68, 0x40, + 0x68, 0x40, 0x00, 0x80, 0x1f, 0xc1, 0x39, 0x05, + 0x91, 0x01, 0x48, 0x15, 0x68, 0x40, 0x68, 0x80, + 0x28, 0x00, 0xd1, 0xe2, 0x20, 0x00, 0x49, 0x12, + 0x68, 0x09, 0x60, 0x88, 0x48, 0x10, 0x68, 0x40, + 0x99, 0x04, 0x60, 0x08, 0x48, 0x0e, 0x68, 0x40, + 0x68, 0x40, 0x99, 0x05, 0x60, 0x08, 0x98, 0x00, + 0x28, 0x00, 0xd0, 0x06, 0x60, 0x7d, 0x78, 0x78, + 0x1c, 0x31, 0xf0, 0x00, 0xf8, 0x13, 0xe0, 0x00, + 0xe0, 0x05, 0x20, 0x00, 0xb0, 0x04, 0xe7, 0x78, + 0x20, 0xb4, 0xb0, 0x04, 0xe7, 0x75, 0x20, 0xbc, + 0xb0, 0x04, 0xe7, 0x72, 0xb0, 0x03, 0xb0, 0x01, + 0xe7, 0x6f, 0x00, 0x00, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x60, 0x90, 0xb5, 0xf3, 0x98, 0x00, + 0x06, 0x02, 0x0e, 0x12, 0x99, 0x01, 0x06, 0x0c, + 0x0e, 0x24, 0xb0, 0x81, 0x2c, 0x20, 0xdb, 0x05, + 0x20, 0xa2, 0xb0, 0x01, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0xa0, 0x4b, 0x14, + 0x58, 0x18, 0x1c, 0x05, 0xd1, 0x02, 0x20, 0xb0, + 0xb0, 0x01, 0xe7, 0xf3, 0x68, 0xe8, 0x1c, 0x01, + 0xd1, 0x02, 0x20, 0xb6, 0xb0, 0x01, 0xe7, 0xed, + 0x11, 0x10, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, + 0x28, 0x00, 0xd1, 0x04, 0x68, 0x48, 0x40, 0xd0, + 0x06, 0x07, 0x0e, 0x3f, 0xe0, 0x09, 0x68, 0x48, + 0x07, 0x16, 0x0f, 0x36, 0x40, 0xf0, 0x68, 0x4e, + 0x40, 0xd6, 0x1c, 0x33, 0x18, 0xc0, 0x06, 0x07, + 0x0e, 0x3f, 0x70, 0x0f, 0x70, 0x4a, 0x20, 0x00, + 0xb0, 0x01, 0xe7, 0xd3, 0xb0, 0x01, 0xe7, 0xd1, + 0x2e, 0x08, 0x5e, 0x64, 0xb4, 0xb0, 0x1c, 0x03, + 0x1c, 0x0a, 0x06, 0x11, 0x0e, 0x09, 0x29, 0x20, + 0xdb, 0x02, 0x20, 0xa2, 0xbc, 0xb0, 0x47, 0x70, + 0x00, 0x88, 0x4d, 0x08, 0x58, 0x28, 0x1c, 0x04, + 0xd1, 0x01, 0x20, 0xb0, 0xe7, 0xf6, 0x68, 0xe0, + 0x1c, 0x07, 0xd1, 0x01, 0x20, 0xb6, 0xe7, 0xf1, + 0x78, 0x78, 0x70, 0x18, 0x20, 0x00, 0xe7, 0xed, + 0xe7, 0xec, 0x00, 0x00, 0x2e, 0x08, 0x5e, 0x64, + 0xb5, 0xf3, 0xb0, 0x81, 0x98, 0x01, 0x06, 0x00, + 0x0e, 0x00, 0x90, 0x00, 0x99, 0x02, 0x06, 0x0d, + 0x0e, 0x2d, 0xb0, 0x86, 0x20, 0x00, 0x90, 0x00, + 0x2d, 0x20, 0xdd, 0x05, 0x20, 0xa2, 0xb0, 0x07, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x00, 0xa8, 0x49, 0xa2, 0x58, 0x08, 0x90, 0x04, + 0x28, 0x00, 0xd1, 0x02, 0x20, 0xb0, 0xb0, 0x07, + 0xe7, 0xf2, 0x00, 0xa8, 0x49, 0x9e, 0x68, 0x09, + 0x18, 0x40, 0x90, 0x05, 0x00, 0xe8, 0x1b, 0x40, + 0x00, 0x80, 0x49, 0x9c, 0x68, 0x09, 0x18, 0x46, + 0x98, 0x06, 0x28, 0x00, 0xd0, 0x73, 0x28, 0x01, + 0xd0, 0x4f, 0x28, 0x02, 0xd0, 0x00, 0xe1, 0x1d, + 0x98, 0x04, 0x69, 0x00, 0x60, 0x70, 0x98, 0x04, + 0x78, 0x40, 0x06, 0xc0, 0x0e, 0xc0, 0x90, 0x02, + 0x98, 0x02, 0x28, 0x13, 0xd0, 0x16, 0x27, 0x00, + 0x2f, 0x20, 0xdb, 0x04, 0xe0, 0x11, 0x1c, 0x78, + 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, 0x48, 0x8e, + 0x5d, 0xc0, 0x42, 0xa8, 0xd1, 0x08, 0x00, 0xb8, + 0x49, 0x8c, 0x58, 0x08, 0x30, 0x01, 0x78, 0x01, + 0x23, 0x80, 0x43, 0xdb, 0x40, 0x19, 0x70, 0x01, + 0xe7, 0xed, 0xe0, 0x1e, 0x27, 0x00, 0x2f, 0x10, + 0xdb, 0x04, 0xe0, 0x1a, 0x1c, 0x78, 0x06, 0x07, + 0x0e, 0x3f, 0xe7, 0xf8, 0x48, 0x84, 0x5d, 0xc0, + 0x42, 0xa8, 0xd1, 0x11, 0x00, 0xb8, 0x49, 0x83, + 0x58, 0x08, 0x30, 0x01, 0x78, 0x01, 0x23, 0x80, + 0x43, 0xdb, 0x40, 0x19, 0x70, 0x01, 0x98, 0x00, + 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, + 0x98, 0x00, 0x28, 0x02, 0xd1, 0x00, 0xe0, 0x00, + 0xe7, 0xe4, 0x88, 0x30, 0x4b, 0x7a, 0x40, 0x18, + 0x80, 0x30, 0x98, 0x05, 0x68, 0x00, 0x23, 0x01, + 0x03, 0x5b, 0x43, 0x18, 0x99, 0x05, 0x60, 0x08, + 0xe0, 0xd3, 0x98, 0x05, 0x68, 0x00, 0x4b, 0x75, + 0x40, 0x18, 0x99, 0x05, 0x60, 0x08, 0x20, 0x00, + 0x60, 0xb0, 0x20, 0x00, 0x70, 0xf0, 0x20, 0x00, + 0x60, 0xf0, 0x98, 0x04, 0x78, 0x40, 0x06, 0xc0, + 0x0e, 0xc0, 0x90, 0x02, 0x98, 0x02, 0x28, 0x13, + 0xd0, 0x16, 0x27, 0x00, 0x2f, 0x20, 0xdb, 0x04, + 0xe0, 0x11, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, + 0xe7, 0xf8, 0x48, 0x63, 0x5d, 0xc0, 0x42, 0xa8, + 0xd1, 0x08, 0x00, 0xb8, 0xe0, 0x00, 0xe0, 0x27, + 0x49, 0x60, 0x58, 0x0c, 0x78, 0x60, 0x23, 0x80, + 0x43, 0x18, 0x70, 0x60, 0xe7, 0xed, 0xe0, 0x1e, + 0x27, 0x00, 0x2f, 0x10, 0xdb, 0x04, 0xe0, 0x1a, + 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, + 0x48, 0x59, 0x5d, 0xc0, 0x42, 0xa8, 0xd1, 0x11, + 0x00, 0xb8, 0x49, 0x58, 0x58, 0x08, 0x30, 0x01, + 0x78, 0x01, 0x23, 0x80, 0x43, 0xdb, 0x40, 0x19, + 0x70, 0x01, 0x98, 0x00, 0x30, 0x01, 0x06, 0x00, + 0x0e, 0x00, 0x90, 0x00, 0x98, 0x00, 0x28, 0x02, + 0xd1, 0x00, 0xe0, 0x00, 0xe7, 0xe4, 0xe0, 0x88, + 0x98, 0x05, 0x68, 0x00, 0x4b, 0x4f, 0x40, 0x18, + 0x99, 0x05, 0x60, 0x08, 0x20, 0x00, 0x60, 0xb0, + 0x20, 0x00, 0x70, 0xf0, 0x20, 0x00, 0x60, 0xf0, + 0x98, 0x04, 0x78, 0x40, 0x06, 0xc0, 0x0e, 0xc0, + 0x90, 0x02, 0x98, 0x04, 0x78, 0x40, 0x21, 0x20, + 0x40, 0x01, 0x91, 0x03, 0x98, 0x02, 0x28, 0x13, + 0xd0, 0x4c, 0x27, 0x00, 0x2f, 0x20, 0xdb, 0x04, + 0xe0, 0x47, 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, + 0xe7, 0xf8, 0x48, 0x3b, 0x5d, 0xc0, 0x42, 0xa8, + 0xd1, 0x3e, 0x00, 0xb8, 0x49, 0x39, 0x58, 0x0c, + 0x20, 0x80, 0x70, 0x60, 0x99, 0x03, 0x1c, 0x20, + 0xf7, 0xfd, 0xfb, 0x30, 0x78, 0xa0, 0x23, 0x04, + 0x40, 0x18, 0xd0, 0x28, 0x6a, 0xe0, 0x22, 0x00, + 0x92, 0x01, 0x99, 0x01, 0x29, 0x08, 0xdb, 0x06, + 0xe0, 0x1f, 0x99, 0x01, 0x31, 0x01, 0x06, 0x09, + 0x0e, 0x09, 0x91, 0x01, 0xe7, 0xf5, 0x99, 0x01, + 0x00, 0x89, 0x18, 0x09, 0x68, 0x49, 0x9a, 0x01, + 0x00, 0x92, 0x18, 0x12, 0x64, 0x51, 0x22, 0x00, + 0x99, 0x01, 0x00, 0x89, 0x18, 0x09, 0x62, 0x4a, + 0x99, 0x01, 0x00, 0x89, 0x18, 0x09, 0x6c, 0x49, + 0x29, 0x00, 0xd0, 0x05, 0x9a, 0x01, 0x21, 0x80, + 0x41, 0x11, 0x88, 0x02, 0x43, 0x11, 0x80, 0x01, + 0xe7, 0xdf, 0x88, 0x01, 0x80, 0x41, 0x78, 0xa0, + 0x23, 0x20, 0x40, 0x18, 0xd0, 0x04, 0x98, 0x04, + 0x68, 0xc1, 0x1c, 0x20, 0xf0, 0x00, 0xfa, 0x3d, + 0xe7, 0xb7, 0xe0, 0x1e, 0x27, 0x00, 0x2f, 0x10, + 0xdb, 0x04, 0xe0, 0x1a, 0x1c, 0x78, 0x06, 0x07, + 0x0e, 0x3f, 0xe7, 0xf8, 0x48, 0x16, 0x5d, 0xc0, + 0x42, 0xa8, 0xd1, 0x11, 0x00, 0xb8, 0x49, 0x15, + 0x58, 0x0c, 0x20, 0x80, 0x70, 0x60, 0x99, 0x03, + 0x1c, 0x20, 0xf7, 0xfd, 0xfa, 0xe3, 0x98, 0x00, + 0x30, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x90, 0x00, + 0x98, 0x00, 0x28, 0x02, 0xd1, 0x00, 0xe0, 0x00, + 0xe7, 0xe4, 0xe0, 0x02, 0x20, 0xbc, 0xb0, 0x07, + 0xe6, 0xbe, 0x98, 0x06, 0x99, 0x04, 0x70, 0xc8, + 0x20, 0x00, 0xb0, 0x07, 0xe6, 0xb8, 0xb0, 0x06, + 0xb0, 0x01, 0xe6, 0xb5, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x5d, 0xd4, 0x2e, 0x08, 0x5d, 0xcc, + 0x2e, 0x08, 0x5f, 0xac, 0x2e, 0x08, 0x5e, 0xec, + 0x2e, 0x08, 0x5f, 0xcc, 0x2e, 0x08, 0x5f, 0x6c, + 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xdf, 0xff, + 0xb4, 0x90, 0x1c, 0x03, 0x1c, 0x0a, 0x06, 0x11, + 0x0e, 0x09, 0x29, 0x20, 0xdd, 0x02, 0x20, 0xa2, + 0xbc, 0x90, 0x47, 0x70, 0x00, 0x88, 0x4c, 0x05, + 0x58, 0x20, 0x1c, 0x07, 0xd1, 0x01, 0x20, 0xb0, + 0xe7, 0xf6, 0x78, 0xf8, 0x70, 0x18, 0x20, 0x00, + 0xe7, 0xf2, 0xe7, 0xf1, 0x2e, 0x08, 0x5e, 0x64, + 0xb4, 0x90, 0x1c, 0x02, 0x1c, 0x0f, 0x06, 0x38, + 0x16, 0x04, 0x2a, 0x02, 0xda, 0x02, 0x20, 0x00, + 0xbc, 0x90, 0x47, 0x70, 0x2c, 0x01, 0xd1, 0x01, + 0x21, 0x28, 0xe0, 0x09, 0x2c, 0x02, 0xd1, 0x01, + 0x21, 0x20, 0xe0, 0x05, 0x2c, 0x00, 0xd1, 0x01, + 0x21, 0x0c, 0xe0, 0x01, 0x20, 0x00, 0xe7, 0xef, + 0x00, 0x50, 0x18, 0x80, 0x01, 0x80, 0x18, 0x41, + 0x1c, 0xc8, 0x08, 0x81, 0x1c, 0x08, 0xe7, 0xe7, + 0xe7, 0xe6, 0xb5, 0xf7, 0x1c, 0x07, 0xb0, 0x81, + 0x9a, 0x03, 0x06, 0x11, 0x0e, 0x09, 0x91, 0x00, + 0xb0, 0x84, 0x99, 0x04, 0x29, 0x20, 0xdb, 0x05, + 0x20, 0xa2, 0xb0, 0x05, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x99, 0x04, 0x00, 0x88, + 0x49, 0x29, 0x58, 0x08, 0x1c, 0x06, 0xd1, 0x02, + 0x20, 0xb0, 0xb0, 0x05, 0xe7, 0xf2, 0x2f, 0x00, + 0xd1, 0x02, 0x20, 0xb4, 0xb0, 0x05, 0xe7, 0xed, + 0x4b, 0x24, 0x42, 0x9f, 0xd1, 0x0a, 0x78, 0xf0, + 0x28, 0x00, 0xd0, 0x02, 0x20, 0xbc, 0xb0, 0x05, + 0xe7, 0xe4, 0x20, 0x00, 0x60, 0xf0, 0x20, 0x00, + 0xb0, 0x05, 0xe7, 0xdf, 0x68, 0xf0, 0x28, 0x00, + 0xd0, 0x02, 0x20, 0xb4, 0xb0, 0x05, 0xe7, 0xd9, + 0x99, 0x06, 0x00, 0x88, 0x1f, 0xc1, 0x39, 0x19, + 0x91, 0x02, 0x20, 0xff, 0x30, 0x81, 0x90, 0x01, + 0x99, 0x02, 0x98, 0x01, 0x42, 0x81, 0xda, 0x02, + 0x20, 0xb5, 0xb0, 0x05, 0xe7, 0xca, 0x1c, 0x3c, + 0x60, 0xf4, 0x37, 0x14, 0x1c, 0x3d, 0x37, 0x0c, + 0x60, 0x2f, 0x99, 0x06, 0x60, 0x69, 0x20, 0x00, + 0x60, 0xa8, 0x97, 0x03, 0x20, 0x00, 0x60, 0xe0, + 0x1d, 0xe0, 0x30, 0x05, 0x9a, 0x03, 0x99, 0x02, + 0xf0, 0x00, 0xf9, 0x56, 0x90, 0x00, 0x20, 0x00, + 0x70, 0xa0, 0x98, 0x00, 0x60, 0x60, 0x9a, 0x03, + 0x60, 0xa2, 0x61, 0x25, 0x99, 0x04, 0x20, 0x54, + 0xf7, 0xff, 0xfd, 0xa0, 0xb0, 0x05, 0xe7, 0xa9, + 0xb0, 0x04, 0xb0, 0x01, 0xe7, 0xa6, 0x00, 0x00, + 0x2e, 0x08, 0x5e, 0x64, 0x00, 0x00, 0xff, 0xff, + 0xb5, 0xff, 0xb0, 0x83, 0x9a, 0x05, 0x06, 0x11, + 0x0e, 0x09, 0x91, 0x00, 0x9b, 0x06, 0x06, 0x18, + 0x0e, 0x00, 0x90, 0x01, 0x98, 0x0c, 0x06, 0x01, + 0x0e, 0x09, 0x91, 0x02, 0xb0, 0x85, 0x99, 0x05, + 0x29, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x08, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x98, 0x08, 0x28, 0x00, 0xd1, 0x02, 0x20, 0xb4, + 0xb0, 0x08, 0xe7, 0xf5, 0x99, 0x05, 0x00, 0xc8, + 0x1a, 0x40, 0x00, 0x80, 0x49, 0x83, 0x68, 0x09, + 0x18, 0x47, 0x98, 0x08, 0x4b, 0x82, 0x42, 0x98, + 0xd1, 0x73, 0x99, 0x05, 0x00, 0x88, 0x49, 0x81, + 0x58, 0x08, 0x1c, 0x05, 0xd1, 0x02, 0x20, 0xb0, + 0xb0, 0x08, 0xe7, 0xe1, 0x68, 0xe8, 0x28, 0x00, + 0xd1, 0x02, 0x78, 0xe8, 0x28, 0x00, 0xd0, 0x02, + 0x20, 0xbc, 0xb0, 0x08, 0xe7, 0xd8, 0x78, 0xa8, + 0x28, 0x00, 0xd0, 0x54, 0x20, 0x00, 0x42, 0x80, + 0xd0, 0x1d, 0x24, 0x00, 0x2c, 0x20, 0xdb, 0x04, + 0xe0, 0x18, 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, + 0xe7, 0xf8, 0x48, 0x73, 0x5d, 0x00, 0x99, 0x05, + 0x42, 0x88, 0xd1, 0x0e, 0x20, 0x01, 0x40, 0xa0, + 0x43, 0xc0, 0x49, 0x70, 0x68, 0x09, 0x40, 0x08, + 0x49, 0x6e, 0x60, 0x08, 0x20, 0x00, 0x00, 0xa1, + 0x4a, 0x6d, 0x50, 0x50, 0x20, 0xff, 0x49, 0x6a, + 0x55, 0x08, 0xe7, 0xe6, 0xe0, 0x33, 0x4a, 0x6b, + 0x92, 0x03, 0x7e, 0x38, 0x1c, 0x06, 0x28, 0xff, + 0xd0, 0x14, 0x20, 0x00, 0x00, 0xb1, 0x4a, 0x68, + 0x50, 0x50, 0x20, 0x01, 0x40, 0xb0, 0x43, 0xc0, + 0x49, 0x66, 0x68, 0x09, 0x40, 0x08, 0x49, 0x65, + 0x60, 0x08, 0x20, 0xff, 0x76, 0x38, 0x21, 0xff, + 0x48, 0x63, 0x55, 0x81, 0x21, 0x00, 0x00, 0xb0, + 0x9a, 0x03, 0x50, 0x11, 0x7e, 0x78, 0x1c, 0x06, + 0x28, 0xff, 0xd0, 0x14, 0x21, 0x00, 0x00, 0xb0, + 0x4a, 0x5b, 0x50, 0x11, 0x20, 0x01, 0x40, 0xb0, + 0x43, 0xc0, 0x49, 0x5a, 0x68, 0x09, 0x40, 0x08, + 0x49, 0x58, 0x60, 0x08, 0x20, 0xff, 0x76, 0x78, + 0x20, 0xff, 0x49, 0x51, 0x55, 0x88, 0x21, 0x00, + 0x00, 0xb0, 0x9a, 0x03, 0x50, 0x11, 0x20, 0x00, + 0x99, 0x05, 0x00, 0x89, 0x4a, 0x4b, 0x50, 0x50, + 0x24, 0x00, 0x2c, 0x0c, 0xdb, 0x06, 0xe0, 0x09, + 0xe0, 0x00, 0xe0, 0x0e, 0x1c, 0x60, 0x06, 0x04, + 0x0e, 0x24, 0xe7, 0xf6, 0x20, 0x00, 0x19, 0x39, + 0x73, 0x08, 0xe7, 0xf7, 0x20, 0x00, 0x83, 0x38, + 0x20, 0x00, 0x70, 0xf8, 0x20, 0x00, 0xb0, 0x08, + 0xe7, 0x66, 0x99, 0x05, 0x00, 0x88, 0x49, 0x3f, + 0x58, 0x08, 0x28, 0x00, 0xd0, 0x02, 0x20, 0xb0, + 0xb0, 0x08, 0xe7, 0x5d, 0x99, 0x07, 0x29, 0x11, + 0xdb, 0x02, 0x99, 0x07, 0x29, 0x13, 0xdd, 0x02, + 0x20, 0xb1, 0xb0, 0x08, 0xe7, 0x54, 0x99, 0x09, + 0x00, 0x88, 0x1f, 0xc1, 0x39, 0x21, 0x91, 0x01, + 0x20, 0xff, 0x30, 0x81, 0x90, 0x00, 0x99, 0x01, + 0x98, 0x00, 0x42, 0x81, 0xda, 0x02, 0x20, 0xb5, + 0xb0, 0x08, 0xe7, 0x45, 0x9d, 0x08, 0x98, 0x08, + 0x30, 0x1c, 0x90, 0x08, 0x98, 0x08, 0x90, 0x04, + 0x98, 0x08, 0x30, 0x0c, 0x90, 0x08, 0x98, 0x08, + 0x90, 0x02, 0x9a, 0x02, 0x98, 0x04, 0x60, 0x02, + 0x99, 0x09, 0x98, 0x04, 0x60, 0x41, 0x20, 0x00, + 0x99, 0x04, 0x60, 0x88, 0x20, 0x00, 0x61, 0xa8, + 0x1d, 0xe8, 0x30, 0x11, 0x9a, 0x02, 0x99, 0x01, + 0xf0, 0x00, 0xf8, 0x56, 0x20, 0x00, 0x70, 0x28, + 0x98, 0x06, 0x99, 0x07, 0x43, 0x08, 0x70, 0x68, + 0x20, 0x00, 0x70, 0xa8, 0x20, 0x02, 0x70, 0xe8, + 0x20, 0x00, 0x71, 0x28, 0x98, 0x04, 0x60, 0xa8, + 0x20, 0x00, 0x60, 0xe8, 0x9a, 0x02, 0x61, 0x2a, + 0x9a, 0x02, 0x61, 0x6a, 0x99, 0x05, 0x00, 0x88, + 0x49, 0x16, 0x50, 0x0d, 0x20, 0x00, 0x60, 0xf8, + 0x88, 0x38, 0x4b, 0x1c, 0x40, 0x18, 0x80, 0x38, + 0x20, 0x00, 0x60, 0xb8, 0x9a, 0x02, 0x60, 0x7a, + 0x98, 0x06, 0x99, 0x07, 0x43, 0x08, 0x70, 0xb8, + 0x24, 0x00, 0x2c, 0x0c, 0xdb, 0x04, 0xe0, 0x07, + 0x1c, 0x60, 0x06, 0x04, 0x0e, 0x24, 0xe7, 0xf8, + 0x20, 0x00, 0x19, 0x39, 0x74, 0x08, 0xe7, 0xf7, + 0x20, 0x00, 0x83, 0x38, 0x20, 0x00, 0x70, 0xf8, + 0x20, 0xff, 0x76, 0x38, 0x20, 0xff, 0x76, 0x78, + 0x20, 0x00, 0xb0, 0x08, 0xe6, 0xec, 0xb0, 0x05, + 0xb0, 0x03, 0xe6, 0xe9, 0x2e, 0x08, 0x5d, 0xcc, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x5e, 0x64, + 0x2e, 0x08, 0x5f, 0xac, 0x2e, 0x08, 0x5e, 0xe4, + 0x2e, 0x08, 0x5e, 0xec, 0x9e, 0x00, 0x04, 0xb8, + 0x2e, 0x08, 0x5f, 0x6c, 0x2e, 0x08, 0x5e, 0xe8, + 0x2e, 0x08, 0x5f, 0xcc, 0xff, 0xff, 0xfb, 0xff, + 0xb4, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x13, + 0x21, 0x00, 0x68, 0x22, 0x2a, 0x00, 0xd0, 0x00, + 0x60, 0x13, 0x1d, 0xd8, 0x30, 0xb9, 0x60, 0x18, + 0x33, 0xc0, 0x31, 0x01, 0x3f, 0xc0, 0x2f, 0xc0, + 0xd8, 0xf7, 0x20, 0x00, 0x60, 0x18, 0x60, 0x23, + 0x31, 0x01, 0x1c, 0x08, 0xbc, 0x90, 0x47, 0x70, + 0xe7, 0xfc, 0xb4, 0x90, 0x1c, 0x03, 0x1c, 0x0a, + 0x6b, 0x18, 0x68, 0xd1, 0x68, 0x07, 0x2f, 0x00, + 0xd0, 0x0c, 0x68, 0x07, 0x60, 0x0f, 0x68, 0x41, + 0x68, 0x57, 0x68, 0x84, 0x19, 0x3f, 0x60, 0x57, + 0x27, 0x00, 0x60, 0x07, 0x27, 0x00, 0x60, 0x47, + 0x27, 0x00, 0x60, 0x87, 0x6a, 0xc7, 0x2f, 0x00, + 0xd0, 0x0c, 0x6a, 0xc7, 0x60, 0x0f, 0x6b, 0x01, + 0x68, 0x57, 0x6b, 0x44, 0x19, 0x3f, 0x60, 0x57, + 0x27, 0x00, 0x62, 0xc7, 0x27, 0x00, 0x63, 0x07, + 0x27, 0x00, 0x63, 0x47, 0x60, 0xd1, 0xbc, 0x90, + 0x47, 0x70, 0xe7, 0xfc, 0x20, 0x00, 0x49, 0x01, + 0x70, 0x08, 0x47, 0x70, 0x2e, 0x08, 0x7c, 0x1c, + 0xb5, 0xff, 0xb0, 0x82, 0x9b, 0x05, 0x06, 0x18, + 0x16, 0x00, 0x90, 0x00, 0x98, 0x0c, 0x06, 0x01, + 0x16, 0x09, 0x91, 0x01, 0x98, 0x00, 0x28, 0x1f, + 0xdd, 0x05, 0x20, 0xaf, 0xb0, 0x02, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x37, + 0x78, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x20, 0xd2, + 0xb0, 0x02, 0xe7, 0xf4, 0xe0, 0x64, 0x20, 0xff, + 0x49, 0x32, 0x70, 0x08, 0x49, 0x32, 0x98, 0x00, + 0xf0, 0x09, 0xfa, 0xa8, 0x9a, 0x04, 0x2a, 0x00, + 0xd9, 0x52, 0x20, 0xff, 0x49, 0x2f, 0x70, 0x08, + 0x9d, 0x02, 0x98, 0x0b, 0x99, 0x01, 0x18, 0x44, + 0x99, 0x01, 0x20, 0xc0, 0x1a, 0x40, 0x9a, 0x04, + 0x42, 0x90, 0xd9, 0x01, 0x9f, 0x04, 0xe0, 0x02, + 0x99, 0x01, 0x20, 0xc0, 0x1a, 0x47, 0x1c, 0x3a, + 0x1c, 0x21, 0x1c, 0x28, 0x23, 0xfe, 0xf0, 0x05, + 0xfa, 0xa5, 0x1c, 0x06, 0x2e, 0xd0, 0xd1, 0x0a, + 0x20, 0x03, 0xf0, 0x04, 0xf9, 0xa9, 0x1c, 0x3a, + 0x1c, 0x21, 0x1c, 0x28, 0x23, 0xfe, 0xf0, 0x05, + 0xfa, 0x99, 0x1c, 0x06, 0xe7, 0xf2, 0x98, 0x02, + 0x19, 0xc0, 0x90, 0x02, 0x9a, 0x04, 0x1b, 0xd2, + 0x92, 0x04, 0x9d, 0x0b, 0x9c, 0x03, 0x9b, 0x00, + 0x1c, 0x3a, 0x1c, 0x21, 0x1c, 0x28, 0xf0, 0x05, + 0xfa, 0x89, 0x1c, 0x06, 0x2e, 0xd0, 0xd1, 0x0a, + 0x20, 0x03, 0xf0, 0x04, 0xf9, 0x8d, 0x9b, 0x00, + 0x1c, 0x3a, 0x1c, 0x21, 0x1c, 0x28, 0xf0, 0x05, + 0xfa, 0x7d, 0x1c, 0x06, 0xe7, 0xf2, 0x99, 0x03, + 0x29, 0x20, 0xd3, 0x04, 0x99, 0x01, 0x18, 0x78, + 0x99, 0x03, 0x18, 0x41, 0x91, 0x03, 0x48, 0x0b, + 0x78, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x20, 0x03, + 0xf0, 0x04, 0xf9, 0x76, 0xe7, 0xf7, 0xe7, 0xa9, + 0x20, 0x00, 0x49, 0x04, 0x70, 0x08, 0x20, 0x00, + 0xb0, 0x02, 0xe7, 0x90, 0xb0, 0x02, 0xe7, 0x8e, + 0xe7, 0x8d, 0x00, 0x00, 0x2e, 0x08, 0x1f, 0xa8, + 0x2e, 0x01, 0x2e, 0x19, 0x2e, 0x08, 0x7c, 0x1c, + 0xb5, 0xff, 0x1c, 0x0f, 0x9a, 0x02, 0x06, 0x14, + 0x0e, 0x24, 0x9b, 0x03, 0x06, 0x1d, 0x0e, 0x2d, + 0x2c, 0x1f, 0xdb, 0x04, 0x20, 0xb3, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x04, 0x3a, + 0x0c, 0x12, 0x2d, 0x01, 0xd1, 0x73, 0x20, 0x01, + 0x03, 0x40, 0x40, 0x10, 0xd0, 0x0a, 0x4b, 0x6f, + 0x40, 0x1a, 0x48, 0x6f, 0x68, 0x00, 0x68, 0x00, + 0x23, 0x02, 0x43, 0xdb, 0x40, 0x18, 0x4b, 0x6c, + 0x68, 0x1b, 0x60, 0x18, 0x20, 0x01, 0x02, 0x40, + 0x40, 0x10, 0xd0, 0x0a, 0x4b, 0x69, 0x40, 0x1a, + 0x48, 0x67, 0x68, 0x00, 0x68, 0x00, 0x23, 0x20, + 0x43, 0xdb, 0x40, 0x18, 0x4b, 0x64, 0x68, 0x1b, + 0x60, 0x18, 0x20, 0x01, 0x05, 0x00, 0x40, 0x38, + 0xd0, 0x08, 0x48, 0x63, 0x68, 0x00, 0x69, 0x80, + 0x23, 0x01, 0x05, 0x1b, 0x43, 0x18, 0x4b, 0x60, + 0x68, 0x1b, 0x61, 0x98, 0x20, 0x01, 0x05, 0x40, + 0x40, 0x38, 0xd0, 0x08, 0x48, 0x5c, 0x68, 0x00, + 0x69, 0x80, 0x23, 0x01, 0x05, 0x5b, 0x43, 0x18, + 0x4b, 0x59, 0x68, 0x1b, 0x61, 0x98, 0x0a, 0x12, + 0x48, 0x55, 0x68, 0x00, 0x68, 0x00, 0x43, 0x90, + 0x4b, 0x53, 0x68, 0x1b, 0x60, 0x18, 0x48, 0x52, + 0x68, 0x00, 0x68, 0x00, 0x4b, 0x53, 0x65, 0x18, + 0x48, 0x51, 0x68, 0x00, 0x77, 0x04, 0x20, 0x09, + 0x04, 0x80, 0x40, 0x38, 0xd0, 0x35, 0x21, 0x00, + 0x29, 0x20, 0xdb, 0x04, 0xe0, 0x31, 0x1c, 0x48, + 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x20, 0x01, + 0x40, 0x88, 0x9b, 0x00, 0x40, 0x18, 0xd0, 0x27, + 0x20, 0x01, 0x05, 0x40, 0x40, 0x38, 0xd0, 0x0e, + 0x00, 0xc8, 0x1a, 0x40, 0x00, 0x80, 0x4b, 0x46, + 0x68, 0x1b, 0x5a, 0x18, 0x23, 0xff, 0x33, 0x01, + 0x43, 0x18, 0x00, 0xcb, 0x1a, 0x5b, 0x00, 0x9b, + 0x4e, 0x41, 0x68, 0x36, 0x52, 0xf0, 0x20, 0x01, + 0x04, 0x80, 0x40, 0x38, 0xd0, 0x10, 0x00, 0xc8, + 0x1a, 0x40, 0x00, 0x80, 0xe0, 0x00, 0xe0, 0x0d, + 0x4b, 0x3b, 0x68, 0x1b, 0x5a, 0x18, 0x23, 0x01, + 0x02, 0x5b, 0x43, 0x18, 0x00, 0xcb, 0x1a, 0x5b, + 0x00, 0x9b, 0x4e, 0x37, 0x68, 0x36, 0x52, 0xf0, + 0xe7, 0xcd, 0xe0, 0x5c, 0x2d, 0x02, 0xd1, 0x5a, + 0x0a, 0x12, 0x48, 0x2f, 0x68, 0x00, 0x68, 0x00, + 0x43, 0x10, 0x4b, 0x2d, 0x68, 0x1b, 0x60, 0x18, + 0x48, 0x2b, 0x68, 0x00, 0x68, 0x00, 0x4b, 0x2d, + 0x65, 0x18, 0x20, 0x01, 0x05, 0x00, 0x40, 0x38, + 0xd0, 0x07, 0x48, 0x29, 0x68, 0x00, 0x69, 0x80, + 0x4b, 0x2a, 0x40, 0x18, 0x4b, 0x26, 0x68, 0x1b, + 0x61, 0x98, 0x20, 0x01, 0x05, 0x40, 0x40, 0x38, + 0xd0, 0x07, 0x48, 0x23, 0x68, 0x00, 0x69, 0x80, + 0x4b, 0x25, 0x40, 0x18, 0x4b, 0x20, 0x68, 0x1b, + 0x61, 0x98, 0x21, 0x00, 0x29, 0x20, 0xdb, 0x04, + 0xe0, 0x31, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, + 0xe7, 0xf8, 0x20, 0x09, 0x04, 0x80, 0x40, 0x38, + 0xd0, 0x28, 0x20, 0x01, 0x40, 0x88, 0x9b, 0x00, + 0x40, 0x18, 0xd0, 0x23, 0x20, 0x01, 0x05, 0x40, + 0x40, 0x38, 0xd0, 0x0d, 0x00, 0xc8, 0x1a, 0x40, + 0x00, 0x80, 0x4b, 0x15, 0x68, 0x1b, 0x5a, 0x18, + 0x4b, 0x16, 0x40, 0x18, 0x00, 0xcb, 0x1a, 0x5b, + 0x00, 0x9b, 0x4e, 0x11, 0x68, 0x36, 0x52, 0xf0, + 0x20, 0x01, 0x04, 0x80, 0x40, 0x38, 0xd0, 0x0d, + 0x00, 0xc8, 0x1a, 0x40, 0x00, 0x80, 0x4b, 0x0c, + 0x68, 0x1b, 0x5a, 0x18, 0x4b, 0x05, 0x40, 0x18, + 0x00, 0xcb, 0x1a, 0x5b, 0x00, 0x9b, 0x4e, 0x08, + 0x68, 0x36, 0x52, 0xf0, 0xe7, 0xcd, 0x20, 0x00, + 0xe7, 0x15, 0xe7, 0x14, 0xff, 0xff, 0xfd, 0xff, + 0x2e, 0x08, 0x7c, 0x20, 0xff, 0xff, 0xdf, 0xff, + 0x2e, 0x08, 0x5e, 0x14, 0x66, 0x00, 0x00, 0x80, + 0x2e, 0x08, 0x5d, 0xcc, 0xff, 0xef, 0xff, 0xff, + 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xb5, 0x80, 0x1c, 0x07, 0x48, 0x17, 0x68, 0x01, + 0x20, 0x00, 0xf0, 0x12, 0xf8, 0x47, 0x60, 0x38, + 0x48, 0x14, 0x68, 0x00, 0x1d, 0x01, 0x20, 0x00, + 0xf0, 0x12, 0xf8, 0x40, 0x60, 0x78, 0x48, 0x11, + 0x68, 0x00, 0x1d, 0xc1, 0x31, 0x05, 0x20, 0x00, + 0xf0, 0x12, 0xf8, 0x38, 0x60, 0xf8, 0x48, 0x0d, + 0x68, 0x00, 0x1d, 0xc1, 0x31, 0x09, 0x20, 0x00, + 0xf0, 0x12, 0xf8, 0x30, 0x61, 0x38, 0x48, 0x09, + 0x68, 0x00, 0x1d, 0xc1, 0x31, 0x0d, 0x20, 0x00, + 0xf0, 0x12, 0xf8, 0x28, 0x61, 0x78, 0x48, 0x05, + 0x68, 0x00, 0x1d, 0xc1, 0x31, 0x01, 0x20, 0x00, + 0xf0, 0x12, 0xf8, 0x20, 0x60, 0xb8, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x5e, 0x14, + 0xb5, 0xf0, 0x1c, 0x07, 0xb0, 0x82, 0x26, 0x00, + 0x89, 0xb8, 0x23, 0x08, 0x40, 0x18, 0xd0, 0x08, + 0x48, 0x59, 0x6e, 0xc2, 0x48, 0x58, 0x6f, 0x01, + 0x48, 0x57, 0x6a, 0x00, 0xf7, 0xfd, 0xff, 0x5c, + 0x1c, 0x06, 0x89, 0xb8, 0x23, 0x10, 0x40, 0x18, + 0xd0, 0x02, 0x48, 0x53, 0x69, 0x40, 0x1c, 0x06, + 0x89, 0xb8, 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x21, + 0x48, 0x50, 0x68, 0xc0, 0x90, 0x00, 0x68, 0x78, + 0x02, 0x40, 0x99, 0x00, 0x1a, 0x08, 0x90, 0x01, + 0x98, 0x01, 0x21, 0x33, 0x06, 0x49, 0x65, 0xc8, + 0x98, 0x00, 0x21, 0x33, 0x06, 0x49, 0x66, 0x08, + 0x98, 0x01, 0x49, 0x48, 0x60, 0x88, 0x98, 0x00, + 0x49, 0x46, 0x60, 0xc8, 0x20, 0x01, 0x21, 0x33, + 0x06, 0x49, 0x66, 0xc8, 0x20, 0x00, 0x21, 0x33, + 0x06, 0x49, 0x66, 0xc8, 0x89, 0xb8, 0x23, 0x02, + 0x43, 0x18, 0x81, 0xb8, 0x89, 0xb8, 0x23, 0x02, + 0x40, 0x18, 0xd0, 0x3e, 0x48, 0x3d, 0x68, 0x80, + 0x1f, 0xc4, 0x3c, 0xff, 0x3c, 0xfa, 0x68, 0x38, + 0x02, 0x40, 0x1a, 0x25, 0x48, 0x38, 0x60, 0x45, + 0x48, 0x37, 0x60, 0x84, 0x20, 0x33, 0x06, 0x40, + 0x65, 0x45, 0x20, 0x33, 0x06, 0x40, 0x65, 0x84, + 0x1b, 0x60, 0x38, 0xc0, 0x21, 0x33, 0x06, 0x49, + 0x66, 0x88, 0x21, 0x00, 0x48, 0x32, 0xf7, 0xfd, + 0xfb, 0x89, 0x48, 0x32, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x00, 0xe7, 0xfa, 0x48, 0x30, 0x68, 0x01, + 0x23, 0xff, 0x33, 0x01, 0x43, 0x19, 0x60, 0x01, + 0x48, 0x2e, 0x6d, 0x80, 0x49, 0x2d, 0x65, 0x88, + 0x48, 0x2c, 0x6b, 0xc0, 0x23, 0x01, 0x07, 0x9b, + 0x40, 0x18, 0xd0, 0x00, 0xe7, 0xf8, 0x20, 0x33, + 0x06, 0x40, 0x66, 0x45, 0x20, 0x33, 0x06, 0x40, + 0x66, 0x84, 0x21, 0x00, 0x20, 0xff, 0xf7, 0xfd, + 0xfb, 0x69, 0x48, 0x20, 0x60, 0x05, 0x48, 0x1f, + 0x60, 0x44, 0x89, 0xb8, 0x23, 0x04, 0x40, 0x18, + 0xd0, 0x21, 0x68, 0xb8, 0x28, 0x00, 0xd1, 0x06, + 0x48, 0x1f, 0x68, 0x01, 0x23, 0x02, 0x43, 0xdb, + 0x40, 0x19, 0x60, 0x01, 0xe0, 0x17, 0x69, 0x38, + 0x49, 0x1a, 0x65, 0x88, 0x69, 0x38, 0x68, 0xb9, + 0x02, 0x49, 0x18, 0x40, 0x49, 0x17, 0x65, 0xc8, + 0x20, 0x03, 0x02, 0x00, 0x49, 0x15, 0x67, 0x48, + 0x20, 0x02, 0x49, 0x14, 0x67, 0x88, 0x20, 0x40, + 0x49, 0x12, 0x66, 0x08, 0x48, 0x12, 0x68, 0x01, + 0x23, 0x02, 0x43, 0x19, 0x60, 0x01, 0x20, 0x33, + 0x06, 0x40, 0x6d, 0x40, 0x23, 0x0d, 0x06, 0x9b, + 0x1a, 0xc0, 0x60, 0x38, 0x20, 0x33, 0x06, 0x40, + 0x6d, 0xc0, 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc0, + 0x60, 0x78, 0x48, 0x0a, 0x43, 0x30, 0x60, 0xb8, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xcc, 0x00, 0x0f, 0x80, 0x2e, 0x08, 0x7c, 0x24, + 0x00, 0x00, 0x80, 0x0f, 0xcc, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0xe0, 0x66, 0x00, 0x00, 0x80, + 0x66, 0x00, 0x00, 0xf0, 0xcc, 0x00, 0x00, 0x00, + 0xb5, 0xf3, 0x1c, 0x02, 0xb0, 0x81, 0x68, 0x93, + 0x68, 0x54, 0x21, 0x00, 0x1d, 0xd8, 0x30, 0xb9, + 0x1b, 0x00, 0x06, 0x05, 0x0e, 0x2d, 0x2d, 0x12, + 0xda, 0x12, 0x21, 0x00, 0x42, 0xa9, 0xdb, 0x04, + 0xe0, 0x08, 0x1c, 0x48, 0x06, 0x01, 0x0e, 0x09, + 0xe7, 0xf8, 0x78, 0x26, 0x34, 0x01, 0x98, 0x02, + 0x54, 0x46, 0xe7, 0xf6, 0x68, 0x1b, 0x1d, 0x18, + 0x90, 0x00, 0x98, 0x00, 0x78, 0x80, 0x18, 0xc4, + 0x1c, 0x0f, 0x2f, 0x12, 0xdb, 0x04, 0xe0, 0x08, + 0x1c, 0x78, 0x06, 0x07, 0x0e, 0x3f, 0xe7, 0xf8, + 0x78, 0x26, 0x34, 0x01, 0x98, 0x02, 0x55, 0xc6, + 0xe7, 0xf6, 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x01, + 0xe7, 0xf9, 0xb4, 0xf0, 0x1c, 0x07, 0x1c, 0x0d, + 0x1c, 0x14, 0xb0, 0x82, 0x20, 0x00, 0x70, 0x20, + 0x78, 0x78, 0x23, 0x80, 0x40, 0x18, 0xd0, 0x03, + 0x20, 0xb1, 0xb0, 0x02, 0xbc, 0xf0, 0x47, 0x70, + 0x78, 0xba, 0x20, 0x40, 0x40, 0x10, 0xd0, 0x2a, + 0x07, 0x12, 0x0f, 0x12, 0x07, 0xd0, 0x0f, 0xc0, + 0xd0, 0x25, 0x20, 0x40, 0x70, 0x20, 0x35, 0x0a, + 0x21, 0x00, 0x1d, 0xf8, 0x30, 0x0d, 0x90, 0x01, + 0x1d, 0xf8, 0x30, 0x1d, 0x90, 0x00, 0x21, 0x00, + 0x29, 0x08, 0xdb, 0x04, 0xe0, 0x14, 0x1c, 0x48, + 0x06, 0x01, 0x0e, 0x09, 0xe7, 0xf8, 0x78, 0x2e, + 0x35, 0x01, 0x98, 0x00, 0x78, 0x03, 0x30, 0x01, + 0x90, 0x00, 0x40, 0x33, 0x98, 0x01, 0x78, 0x06, + 0x30, 0x01, 0x90, 0x01, 0x42, 0xb3, 0xd0, 0x02, + 0x20, 0x00, 0x70, 0x20, 0xe0, 0x00, 0xe7, 0xea, + 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xce, 0x20, 0xb1, + 0xb0, 0x02, 0xe7, 0xcb, 0xb0, 0x02, 0xe7, 0xc9, + 0xb5, 0xf7, 0x1c, 0x07, 0xb0, 0x8d, 0x20, 0x00, + 0x9a, 0x0f, 0x70, 0x10, 0x78, 0x78, 0x23, 0x80, + 0x40, 0x18, 0xd0, 0x05, 0x20, 0xb1, 0xb0, 0x0d, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x78, 0xb8, 0x90, 0x05, 0x98, 0x05, 0x23, 0x40, + 0x40, 0x18, 0xd0, 0x73, 0x98, 0x05, 0x07, 0x00, + 0x0f, 0x00, 0x90, 0x05, 0x98, 0x05, 0x23, 0x02, + 0x40, 0x18, 0xd1, 0x03, 0x98, 0x05, 0x23, 0x04, + 0x40, 0x18, 0xd0, 0x68, 0x99, 0x0e, 0x79, 0x48, + 0x23, 0x3e, 0x40, 0x18, 0x90, 0x0c, 0x78, 0xf8, + 0x90, 0x04, 0x98, 0x04, 0x01, 0x00, 0x4b, 0x81, + 0x18, 0xc0, 0x90, 0x02, 0x98, 0x02, 0x68, 0x00, + 0x90, 0x01, 0x78, 0x7c, 0x23, 0xbf, 0x40, 0x1c, + 0x23, 0xfe, 0x40, 0x1c, 0x20, 0x00, 0x90, 0x03, + 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, 0x99, 0x0c, + 0x42, 0x88, 0xd0, 0x08, 0x06, 0x20, 0x0e, 0x00, + 0x24, 0x01, 0x43, 0x04, 0x20, 0x01, 0x90, 0x03, + 0x23, 0xdf, 0x40, 0x1c, 0xe0, 0x06, 0x20, 0x02, + 0x40, 0x20, 0xd0, 0x03, 0x70, 0x7c, 0x20, 0x00, + 0xb0, 0x0d, 0xe7, 0xbd, 0x23, 0xfd, 0x40, 0x1c, + 0x98, 0x05, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x73, + 0x6a, 0xfd, 0x98, 0x03, 0x28, 0x00, 0xd0, 0x14, + 0x26, 0x00, 0x2e, 0x08, 0xdb, 0x04, 0xe0, 0x0e, + 0x1c, 0x70, 0x06, 0x06, 0x0e, 0x36, 0xe7, 0xf8, + 0x00, 0xb0, 0x19, 0x40, 0x68, 0x40, 0x00, 0xb1, + 0x19, 0x49, 0x64, 0x48, 0x20, 0x00, 0x00, 0xb1, + 0x19, 0x49, 0x62, 0x48, 0xe7, 0xf0, 0x88, 0x28, + 0x80, 0x68, 0x20, 0x20, 0x40, 0x20, 0xd1, 0x3e, + 0x99, 0x0e, 0x79, 0xc8, 0x09, 0x40, 0x06, 0x00, + 0x0e, 0x00, 0x90, 0x0a, 0x99, 0x0e, 0x79, 0xc8, + 0x06, 0xc0, 0x0e, 0xc0, 0x90, 0x09, 0x98, 0x0a, + 0x30, 0x01, 0x06, 0x06, 0x0e, 0x36, 0x2e, 0x08, + 0xdb, 0x04, 0xe0, 0x10, 0x1c, 0x70, 0x06, 0x06, + 0x0e, 0x36, 0xe7, 0xf8, 0x20, 0x00, 0x00, 0xb1, + 0x19, 0x49, 0xe0, 0x01, 0xe0, 0x9d, 0xe0, 0x9c, + 0x64, 0x48, 0x88, 0x68, 0x21, 0x80, 0x41, 0x31, + 0x43, 0x88, 0x80, 0x68, 0xe7, 0xee, 0x98, 0x0a, + 0x00, 0x80, 0x19, 0x40, 0x6c, 0x41, 0x98, 0x09, + 0x00, 0x80, 0x4a, 0x4b, 0x58, 0x10, 0x40, 0x08, + 0x99, 0x0a, 0x00, 0x89, 0x19, 0x49, 0x64, 0x48, + 0x06, 0x20, 0x0e, 0x00, 0x24, 0x20, 0x43, 0x04, + 0x98, 0x01, 0x0a, 0x00, 0x02, 0x00, 0x90, 0x01, + 0x98, 0x01, 0x99, 0x0c, 0x43, 0x08, 0x90, 0x01, + 0x98, 0x01, 0x99, 0x02, 0x60, 0x08, 0x78, 0x38, + 0x23, 0x80, 0x40, 0x18, 0xd0, 0x19, 0x99, 0x0e, + 0x7b, 0x08, 0x07, 0x42, 0x0f, 0x52, 0x92, 0x07, + 0x99, 0x0e, 0x7b, 0x08, 0x08, 0xc0, 0x06, 0x02, + 0x0e, 0x12, 0x92, 0x08, 0x1d, 0xe9, 0x31, 0x3d, + 0x91, 0x06, 0x99, 0x06, 0x9a, 0x08, 0x5c, 0x88, + 0x49, 0x36, 0x9a, 0x07, 0x5c, 0x89, 0xe0, 0x00, + 0xe0, 0x4e, 0x40, 0x08, 0x99, 0x06, 0x9a, 0x08, + 0x54, 0x88, 0x99, 0x0e, 0x79, 0x88, 0x06, 0xc0, + 0x0e, 0xc0, 0x90, 0x00, 0x98, 0x00, 0x49, 0x30, + 0x40, 0xc1, 0x91, 0x00, 0x99, 0x0e, 0x79, 0x88, + 0x09, 0x40, 0x06, 0x02, 0x0e, 0x12, 0x92, 0x0b, + 0x9a, 0x0b, 0x00, 0x90, 0x19, 0x40, 0x6c, 0x40, + 0x99, 0x00, 0x40, 0x08, 0xd0, 0x33, 0x06, 0x20, + 0x0e, 0x00, 0x24, 0x40, 0x43, 0x04, 0x9a, 0x0b, + 0x00, 0x90, 0x19, 0x40, 0x6c, 0x40, 0x99, 0x00, + 0x40, 0x41, 0x00, 0x90, 0x19, 0x40, 0x64, 0x41, + 0x9a, 0x0b, 0x00, 0x90, 0x19, 0x40, 0x6a, 0x40, + 0x99, 0x00, 0x43, 0x01, 0x00, 0x90, 0x19, 0x40, + 0x62, 0x41, 0x9a, 0x0b, 0x00, 0x90, 0x19, 0x40, + 0x6c, 0x40, 0x28, 0x00, 0xd1, 0x17, 0x88, 0x68, + 0x9a, 0x0b, 0x21, 0x80, 0x41, 0x11, 0x43, 0x88, + 0x80, 0x68, 0x88, 0x68, 0x28, 0x00, 0xd1, 0x0e, + 0x06, 0x20, 0x0e, 0x00, 0x24, 0x02, 0x43, 0x04, + 0x23, 0xfe, 0x40, 0x1c, 0x98, 0x0c, 0x30, 0x02, + 0x06, 0x00, 0x0e, 0x00, 0x90, 0x0c, 0x98, 0x0c, + 0x23, 0x3e, 0x40, 0x18, 0x90, 0x0c, 0xe0, 0x0a, + 0x06, 0x20, 0x0e, 0x00, 0x24, 0x40, 0x43, 0x04, + 0x23, 0xfe, 0x40, 0x1c, 0x98, 0x0c, 0x1c, 0x41, + 0x98, 0x04, 0xf0, 0x00, 0xf8, 0x13, 0x9a, 0x0f, + 0x70, 0x14, 0x70, 0x7c, 0x20, 0x00, 0xb0, 0x0d, + 0xe6, 0xe2, 0x20, 0xb1, 0xb0, 0x0d, 0xe6, 0xdf, + 0xb0, 0x0d, 0xe6, 0xdd, 0x64, 0x00, 0x08, 0x00, + 0x2e, 0x08, 0x20, 0x18, 0x2e, 0x08, 0x20, 0x98, + 0x80, 0x00, 0x00, 0x00, 0xb5, 0xf3, 0x98, 0x00, + 0x06, 0x07, 0x0e, 0x3f, 0x99, 0x01, 0x06, 0x0e, + 0x0e, 0x36, 0x00, 0xf8, 0x4b, 0x13, 0x18, 0xc5, + 0x01, 0x38, 0x4b, 0x13, 0x18, 0xc4, 0x01, 0x38, + 0x4b, 0x12, 0x18, 0xc2, 0x68, 0x10, 0x23, 0x40, + 0x43, 0xdb, 0x40, 0x18, 0x60, 0x10, 0x2e, 0x3e, + 0xdc, 0x15, 0x68, 0x20, 0x1c, 0x01, 0x0a, 0x09, + 0x02, 0x09, 0x43, 0x31, 0x60, 0x21, 0x68, 0x28, + 0x1c, 0x01, 0x0a, 0x09, 0x02, 0x09, 0x23, 0x3e, + 0x43, 0x19, 0x60, 0x29, 0x68, 0x10, 0x23, 0x40, + 0x43, 0x18, 0x60, 0x10, 0x20, 0x00, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x20, 0xbd, + 0xe7, 0xf9, 0xe7, 0xf8, 0x64, 0x00, 0x10, 0x00, + 0x64, 0x00, 0x08, 0x00, 0x64, 0x00, 0x08, 0x08, + 0xb5, 0xf3, 0xb0, 0x93, 0x98, 0x13, 0x69, 0x00, + 0x90, 0x01, 0x98, 0x01, 0x78, 0x40, 0x23, 0x80, + 0x40, 0x18, 0xd0, 0x05, 0x20, 0xbe, 0xb0, 0x13, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x98, 0x01, 0x78, 0x80, 0x90, 0x08, 0x98, 0x08, + 0x23, 0x40, 0x40, 0x18, 0xd0, 0x73, 0x98, 0x08, + 0x23, 0x20, 0x40, 0x18, 0xd0, 0x6f, 0x98, 0x01, + 0x6b, 0x07, 0x98, 0x01, 0x79, 0xc0, 0x00, 0x80, + 0x49, 0x76, 0x58, 0x08, 0x90, 0x00, 0x98, 0x00, + 0x68, 0xc0, 0x1c, 0x06, 0xd1, 0x02, 0x20, 0xb6, + 0xb0, 0x13, 0xe7, 0xe1, 0x78, 0xb0, 0x07, 0xc0, + 0x0f, 0xc0, 0xd0, 0x02, 0x20, 0xb6, 0xb0, 0x13, + 0xe7, 0xda, 0xa9, 0x11, 0x1c, 0x30, 0xf0, 0x00, + 0xf9, 0x2b, 0x90, 0x02, 0x98, 0x11, 0x28, 0x00, + 0xd1, 0x02, 0x98, 0x02, 0xb0, 0x13, 0xe7, 0xcf, + 0x98, 0x11, 0x90, 0x0e, 0x20, 0x01, 0x90, 0x0b, + 0x98, 0x13, 0x88, 0x40, 0x90, 0x0d, 0x98, 0x13, + 0x68, 0x40, 0x90, 0x06, 0x98, 0x13, 0x68, 0x81, + 0x91, 0x10, 0x99, 0x10, 0x1d, 0xc8, 0x30, 0xb9, + 0x90, 0x05, 0x98, 0x05, 0x99, 0x06, 0x1a, 0x40, + 0x04, 0x04, 0x0c, 0x24, 0x99, 0x14, 0x79, 0x88, + 0x90, 0x03, 0x98, 0x03, 0x06, 0xc0, 0x0e, 0xc0, + 0x90, 0x0a, 0x98, 0x0a, 0x49, 0x5a, 0x40, 0xc1, + 0x91, 0x0a, 0x98, 0x03, 0x09, 0x40, 0x06, 0x00, + 0x0e, 0x00, 0x90, 0x09, 0x98, 0x09, 0x00, 0x80, + 0x19, 0xc0, 0x6b, 0x80, 0x99, 0x0a, 0x40, 0x08, + 0xd0, 0x02, 0x20, 0xb1, 0xb0, 0x13, 0xe7, 0x9f, + 0x20, 0xb8, 0x90, 0x0c, 0x98, 0x11, 0x30, 0x08, + 0x90, 0x04, 0x20, 0x00, 0x90, 0x07, 0x98, 0x07, + 0x28, 0x00, 0xd0, 0x10, 0x99, 0x10, 0x68, 0x09, + 0x91, 0x10, 0x99, 0x10, 0x1d, 0x08, 0x90, 0x12, + 0x98, 0x12, 0x78, 0x80, 0x99, 0x10, 0x18, 0x40, + 0x90, 0x06, 0x98, 0x12, 0x78, 0x81, 0x20, 0xc0, + 0x1a, 0x40, 0x04, 0x04, 0x0c, 0x24, 0x98, 0x0d, + 0x42, 0x84, 0xdb, 0x05, 0xe0, 0x00, 0xe0, 0x7c, + 0x9c, 0x0d, 0x20, 0x00, 0x90, 0x0d, 0xe0, 0x06, + 0x98, 0x0d, 0x1b, 0x00, 0x04, 0x00, 0x0c, 0x00, + 0x90, 0x0d, 0x20, 0x01, 0x90, 0x07, 0x98, 0x0c, + 0x42, 0xa0, 0xda, 0x2e, 0x25, 0x00, 0x98, 0x0c, + 0x42, 0x85, 0xdb, 0x04, 0xe0, 0x0c, 0x1c, 0x68, + 0x06, 0x05, 0x0e, 0x2d, 0xe7, 0xf7, 0x98, 0x06, + 0x78, 0x01, 0x30, 0x01, 0x90, 0x06, 0x98, 0x04, + 0x70, 0x01, 0x30, 0x01, 0x90, 0x04, 0xe7, 0xf2, + 0x98, 0x0c, 0x1a, 0x20, 0x04, 0x04, 0x0c, 0x24, + 0xa9, 0x11, 0x1c, 0x30, 0xf0, 0x00, 0xf8, 0xac, + 0x90, 0x02, 0x98, 0x11, 0x28, 0x00, 0xd1, 0x08, + 0x98, 0x0e, 0x60, 0xb0, 0x68, 0x70, 0x99, 0x0b, + 0x18, 0x40, 0x60, 0x70, 0x98, 0x02, 0xb0, 0x13, + 0xe7, 0x4a, 0x98, 0x0b, 0x30, 0x01, 0x90, 0x0b, + 0x20, 0xb8, 0x90, 0x0c, 0x98, 0x11, 0x30, 0x08, + 0x90, 0x04, 0x25, 0x00, 0x42, 0xa5, 0xdb, 0x04, + 0xe0, 0x0c, 0x1c, 0x68, 0x06, 0x05, 0x0e, 0x2d, + 0xe7, 0xf8, 0x98, 0x06, 0x78, 0x01, 0x30, 0x01, + 0x90, 0x06, 0x98, 0x04, 0x70, 0x01, 0x30, 0x01, + 0x90, 0x04, 0xe7, 0xf2, 0x98, 0x0c, 0x1b, 0x00, + 0x04, 0x00, 0x0c, 0x00, 0x90, 0x0c, 0x98, 0x0d, + 0x28, 0x00, 0xd1, 0x90, 0x6b, 0x39, 0x91, 0x0f, + 0x6a, 0xf8, 0x28, 0x00, 0xd1, 0x02, 0x98, 0x0e, + 0x62, 0xf8, 0xe0, 0x05, 0x98, 0x0e, 0x99, 0x0f, + 0x60, 0x08, 0x98, 0x0e, 0x6d, 0xb9, 0x60, 0x08, + 0x98, 0x09, 0x00, 0x80, 0x19, 0xc0, 0x6b, 0x80, + 0x99, 0x0a, 0x43, 0x01, 0x98, 0x09, 0x00, 0x80, + 0x19, 0xc0, 0x63, 0x81, 0x6b, 0x78, 0x99, 0x0b, + 0x18, 0x40, 0x63, 0x78, 0x20, 0x00, 0x99, 0x11, + 0x60, 0x08, 0x98, 0x11, 0x63, 0x38, 0x98, 0x0e, + 0x30, 0x04, 0x65, 0xb8, 0x98, 0x02, 0xb0, 0x13, + 0xe7, 0x02, 0x20, 0xb1, 0xb0, 0x13, 0xe6, 0xff, + 0xb0, 0x13, 0xe6, 0xfd, 0x2e, 0x08, 0x5e, 0x64, + 0x80, 0x00, 0x00, 0x00, 0xb4, 0xf0, 0x1c, 0x01, + 0x78, 0x88, 0x23, 0x20, 0x40, 0x18, 0xd0, 0x42, + 0x79, 0xc8, 0x00, 0x80, 0x4b, 0x21, 0x58, 0x1d, + 0x6b, 0x0a, 0x68, 0xef, 0x68, 0x10, 0x28, 0x00, + 0xd0, 0x17, 0x68, 0xfe, 0x68, 0x10, 0x60, 0x30, + 0x68, 0x50, 0x60, 0xf8, 0x68, 0x78, 0x68, 0x93, + 0x18, 0xc0, 0x60, 0x78, 0x20, 0x00, 0x60, 0x10, + 0x20, 0x00, 0x60, 0x50, 0x20, 0x00, 0x60, 0x90, + 0x68, 0x78, 0x78, 0x3b, 0x42, 0x98, 0xd9, 0x04, + 0x78, 0xb8, 0x23, 0x02, 0x43, 0xdb, 0x40, 0x18, + 0x70, 0xb8, 0x6a, 0xd0, 0x60, 0x10, 0x6b, 0x10, + 0x60, 0x50, 0x6b, 0x50, 0x60, 0x90, 0x24, 0x00, + 0x2c, 0x08, 0xdb, 0x04, 0xe0, 0x0e, 0x1c, 0x60, + 0x06, 0x04, 0x0e, 0x24, 0xe7, 0xf8, 0x00, 0xa0, + 0x18, 0x80, 0x6b, 0x80, 0x00, 0xa3, 0x18, 0x9b, + 0x60, 0xd8, 0x23, 0x00, 0x00, 0xa0, 0x18, 0x80, + 0x63, 0x83, 0xe7, 0xf0, 0x20, 0x00, 0x62, 0xd0, + 0x20, 0x00, 0x63, 0x10, 0x20, 0x00, 0x63, 0x50, + 0x20, 0x00, 0xbc, 0xf0, 0x47, 0x70, 0x20, 0xb1, + 0xe7, 0xfb, 0xe7, 0xfa, 0x2e, 0x08, 0x5e, 0x64, + 0xb4, 0x90, 0x1c, 0x02, 0x1c, 0x0f, 0x78, 0x14, + 0x68, 0x90, 0x1c, 0x01, 0xd1, 0x08, 0x20, 0x00, + 0x60, 0x38, 0x78, 0x90, 0x23, 0x01, 0x43, 0x18, + 0x70, 0x90, 0x20, 0xb7, 0xbc, 0x90, 0x47, 0x70, + 0x68, 0x08, 0x60, 0x90, 0x20, 0x00, 0x60, 0x48, + 0x60, 0x39, 0x68, 0x50, 0x38, 0x01, 0x60, 0x50, + 0x68, 0x50, 0x42, 0xa0, 0xd1, 0x02, 0x20, 0xbf, + 0xe7, 0xf0, 0xe0, 0x01, 0x20, 0x00, 0xe7, 0xed, + 0xe7, 0xec, 0x00, 0x00, 0x1c, 0x01, 0x22, 0x00, + 0x6a, 0x50, 0x68, 0x02, 0x60, 0x0a, 0x4a, 0x05, + 0x6f, 0xd2, 0x60, 0x8a, 0x4a, 0x04, 0x68, 0x12, + 0x60, 0x4a, 0x22, 0x1d, 0x02, 0x92, 0x68, 0x12, + 0x60, 0xca, 0x47, 0x70, 0xcc, 0x00, 0x0f, 0x80, + 0x2e, 0x08, 0x1f, 0xac, 0x1c, 0x01, 0x48, 0x02, + 0x60, 0x01, 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, + 0x66, 0x00, 0x01, 0x00, 0x1c, 0x01, 0x20, 0x33, + 0x06, 0x40, 0x62, 0x01, 0x20, 0x00, 0x47, 0x70, + 0xe7, 0xfd, 0x1c, 0x01, 0x20, 0x33, 0x06, 0x40, + 0x6a, 0xc0, 0x23, 0x7f, 0x03, 0x9b, 0x40, 0x18, + 0x03, 0x8a, 0x43, 0x10, 0x22, 0x33, 0x06, 0x52, + 0x62, 0xd0, 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, + 0x1c, 0x01, 0x20, 0x33, 0x06, 0x40, 0x6a, 0xc0, + 0x23, 0x03, 0x03, 0x1b, 0x40, 0x18, 0x43, 0x08, + 0x22, 0x33, 0x06, 0x52, 0x62, 0xd0, 0x20, 0x00, + 0x47, 0x70, 0xe7, 0xfd, 0x1c, 0x01, 0x06, 0x0a, + 0x0e, 0x12, 0x2a, 0x00, 0xd0, 0x06, 0x20, 0x33, + 0x06, 0x40, 0x6a, 0xc0, 0x23, 0x01, 0x05, 0x5b, + 0x43, 0x18, 0xe0, 0x04, 0x20, 0x33, 0x06, 0x40, + 0x6a, 0xc0, 0x4b, 0x04, 0x40, 0x18, 0x23, 0x33, + 0x06, 0x5b, 0x62, 0xd8, 0x20, 0x00, 0x47, 0x70, + 0xe7, 0xfd, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, + 0x48, 0x04, 0x69, 0x80, 0x07, 0xc0, 0x0f, 0xc0, + 0xd0, 0x01, 0x20, 0xff, 0x47, 0x70, 0x20, 0x00, + 0xe7, 0xfc, 0xe7, 0xfb, 0x66, 0x00, 0x00, 0x80, + 0xb4, 0x80, 0x1c, 0x01, 0x06, 0x0f, 0x0e, 0x3f, + 0x4a, 0x08, 0x2f, 0x00, 0xd0, 0x03, 0x68, 0x10, + 0x23, 0x01, 0x43, 0x18, 0xe0, 0x02, 0x68, 0x10, + 0x08, 0x40, 0x00, 0x40, 0x68, 0x13, 0x43, 0x18, + 0x60, 0x10, 0x20, 0x00, 0xbc, 0x80, 0x47, 0x70, + 0xe7, 0xfc, 0x00, 0x00, 0x66, 0x00, 0x00, 0x98, + 0xb4, 0x80, 0x1c, 0x07, 0x1c, 0x0a, 0x4b, 0x06, + 0x40, 0x1a, 0x4b, 0x06, 0x40, 0x1f, 0x0b, 0x10, + 0x02, 0x39, 0x43, 0x08, 0x49, 0x04, 0x61, 0xc8, + 0x20, 0x00, 0xbc, 0x80, 0x47, 0x70, 0xe7, 0xfc, + 0x01, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xf0, 0x00, + 0x66, 0x00, 0x00, 0x80, 0x48, 0x01, 0x69, 0xc0, + 0x47, 0x70, 0xe7, 0xfd, 0x66, 0x00, 0x00, 0x80, + 0x1c, 0x01, 0x48, 0x07, 0x68, 0x02, 0x4b, 0x07, + 0x40, 0x1a, 0x60, 0x02, 0x23, 0x01, 0x05, 0x9b, + 0x42, 0x99, 0xd1, 0x03, 0x48, 0x02, 0x68, 0x02, + 0x43, 0x0a, 0x60, 0x02, 0x47, 0x70, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x2c, 0xff, 0xbf, 0xff, 0xff, + 0x1c, 0x01, 0x20, 0x33, 0x06, 0x40, 0x67, 0x41, + 0x47, 0x70, 0x1c, 0x01, 0x20, 0x33, 0x06, 0x40, + 0x67, 0x81, 0x47, 0x70, 0xb5, 0x90, 0x4c, 0x21, + 0x20, 0x01, 0x60, 0x20, 0xf0, 0x11, 0xfb, 0x48, + 0x48, 0x1f, 0x69, 0x84, 0x27, 0x00, 0x2f, 0x04, + 0xd3, 0x04, 0xe0, 0x06, 0x1c, 0x78, 0x06, 0x07, + 0x0e, 0x3f, 0xe7, 0xf8, 0x21, 0x00, 0xc4, 0x02, + 0xe7, 0xf8, 0x20, 0x00, 0x49, 0x18, 0x69, 0x49, + 0x60, 0x08, 0x20, 0x00, 0x49, 0x16, 0x69, 0x49, + 0x60, 0x48, 0x20, 0x00, 0x49, 0x14, 0x69, 0x49, + 0x60, 0x88, 0x20, 0x00, 0x49, 0x12, 0x69, 0x49, + 0x60, 0xc8, 0x20, 0x00, 0x49, 0x10, 0x69, 0x49, + 0x61, 0x08, 0x20, 0x00, 0x49, 0x0e, 0x69, 0x49, + 0x61, 0x48, 0x20, 0x00, 0x49, 0x0c, 0x69, 0x49, + 0x61, 0x88, 0x20, 0x00, 0x49, 0x0a, 0x69, 0x49, + 0x61, 0xc8, 0x20, 0x00, 0x49, 0x08, 0x69, 0x49, + 0x62, 0x08, 0x20, 0x00, 0x49, 0x06, 0x69, 0x49, + 0x62, 0x48, 0x20, 0x18, 0x49, 0x04, 0x69, 0x49, + 0x62, 0x88, 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0xe7, 0xfb, 0x70, 0x00, 0x00, 0x38, + 0x2e, 0x08, 0x1f, 0xb0, 0xb5, 0xff, 0x1c, 0x0f, + 0xb0, 0x81, 0x9c, 0x01, 0x69, 0x20, 0x28, 0x08, + 0xd1, 0x01, 0x08, 0x7f, 0x00, 0x7f, 0x6b, 0xa0, + 0x9a, 0x03, 0x43, 0x50, 0x19, 0xc6, 0x69, 0x20, + 0x00, 0x80, 0x49, 0x34, 0x58, 0x08, 0x23, 0x04, + 0x40, 0x18, 0xd0, 0x00, 0x08, 0x76, 0x69, 0x20, + 0x00, 0x80, 0x49, 0x31, 0x58, 0x08, 0x43, 0x70, + 0x90, 0x00, 0x69, 0xa0, 0x99, 0x00, 0x09, 0x49, + 0x18, 0x45, 0x6b, 0xe0, 0x28, 0x00, 0xd1, 0x02, + 0x03, 0x28, 0x0b, 0x00, 0xe0, 0x01, 0x02, 0x28, + 0x0a, 0x00, 0x1c, 0x05, 0xf0, 0x11, 0xfa, 0xe6, + 0xf0, 0x11, 0xfa, 0xc2, 0x48, 0x27, 0x69, 0x80, + 0x68, 0x00, 0x08, 0xc0, 0x00, 0xc0, 0x49, 0x25, + 0x69, 0x89, 0x60, 0x08, 0x07, 0x40, 0x48, 0x23, + 0x69, 0x80, 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, + 0x49, 0x20, 0x69, 0x89, 0x60, 0x08, 0x6b, 0xe0, + 0x49, 0x1e, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x1e, + 0x40, 0x19, 0x07, 0xc0, 0x0c, 0x80, 0x43, 0x08, + 0x49, 0x1a, 0x69, 0x89, 0x60, 0x08, 0x04, 0x80, + 0x0f, 0xc0, 0x1c, 0x21, 0x1c, 0x20, 0xf0, 0x00, + 0xfe, 0x51, 0x48, 0x16, 0x69, 0xc0, 0x68, 0x00, + 0x4b, 0x16, 0x40, 0x18, 0x02, 0x29, 0x0a, 0x09, + 0x00, 0x89, 0x43, 0x08, 0x49, 0x11, 0x69, 0xc9, + 0x60, 0x08, 0x01, 0x80, 0x48, 0x0f, 0x69, 0xc0, + 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, 0x99, 0x00, + 0x06, 0xc9, 0x43, 0x08, 0x49, 0x0b, 0x69, 0xc9, + 0x60, 0x08, 0x99, 0x04, 0x1c, 0x20, 0x22, 0x00, + 0xf0, 0x00, 0xfe, 0xbc, 0xf0, 0x00, 0xff, 0x9d, + 0xf0, 0x11, 0xfa, 0xb8, 0x20, 0x00, 0xb0, 0x01, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb0, 0x01, 0xe7, 0xf9, 0x2e, 0x03, 0x32, 0xa4, + 0x2e, 0x03, 0x32, 0xf4, 0x2e, 0x08, 0x1f, 0xb0, + 0xff, 0xff, 0xdf, 0xff, 0xfc, 0x00, 0x00, 0x03, + 0xb5, 0xff, 0x1c, 0x0f, 0xb0, 0x81, 0x9c, 0x01, + 0x69, 0x20, 0x28, 0x08, 0xd1, 0x01, 0x08, 0x7f, + 0x00, 0x7f, 0x6b, 0xa0, 0x9a, 0x03, 0x43, 0x50, + 0x19, 0xc6, 0x69, 0x20, 0x00, 0x80, 0x49, 0x37, + 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x00, + 0x08, 0x76, 0x69, 0x20, 0x00, 0x80, 0x49, 0x34, + 0x58, 0x08, 0x43, 0x70, 0x90, 0x00, 0x69, 0xa0, + 0x99, 0x00, 0x09, 0x49, 0x18, 0x45, 0x6b, 0xe0, + 0x28, 0x00, 0xd1, 0x02, 0x03, 0x28, 0x0b, 0x00, + 0xe0, 0x01, 0x02, 0x28, 0x0a, 0x00, 0x1c, 0x05, + 0xf0, 0x11, 0xfa, 0x64, 0xf0, 0x11, 0xfa, 0x40, + 0x48, 0x2a, 0x69, 0x80, 0x68, 0x00, 0x08, 0xc0, + 0x00, 0xc0, 0x23, 0x01, 0x43, 0x18, 0x49, 0x27, + 0x69, 0x89, 0x60, 0x08, 0x07, 0x40, 0x6b, 0xe0, + 0x49, 0x24, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x24, + 0x40, 0x19, 0x07, 0xc0, 0x0c, 0x80, 0x43, 0x08, + 0x49, 0x20, 0x69, 0x89, 0x60, 0x08, 0x04, 0x80, + 0x0f, 0xc0, 0x48, 0x1e, 0x69, 0x80, 0x68, 0x00, + 0x01, 0x40, 0x09, 0x40, 0x99, 0x00, 0x06, 0xc9, + 0x43, 0x01, 0x48, 0x1a, 0x69, 0x80, 0x60, 0x01, + 0x1c, 0x21, 0x1c, 0x20, 0xf0, 0x00, 0xfd, 0xca, + 0x48, 0x16, 0x69, 0xc0, 0x68, 0x00, 0x4b, 0x17, + 0x40, 0x18, 0x02, 0x29, 0x0a, 0x09, 0x00, 0x89, + 0x43, 0x08, 0x49, 0x12, 0x69, 0xc9, 0x60, 0x08, + 0x01, 0x80, 0x48, 0x10, 0x69, 0xc0, 0x68, 0x00, + 0x01, 0x40, 0x09, 0x40, 0x49, 0x0d, 0x69, 0xc9, + 0x60, 0x08, 0xf0, 0x00, 0xff, 0x1e, 0xf0, 0x11, + 0xfa, 0x17, 0x48, 0x0a, 0x6b, 0x81, 0x1c, 0x20, + 0xf0, 0x00, 0xfe, 0xf0, 0x9b, 0x04, 0x60, 0x18, + 0xf0, 0x11, 0xfa, 0x30, 0x20, 0x00, 0xb0, 0x01, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb0, 0x01, 0xe7, 0xf9, 0x2e, 0x03, 0x32, 0xa4, + 0x2e, 0x03, 0x32, 0xf4, 0x2e, 0x08, 0x1f, 0xb0, + 0xff, 0xff, 0xdf, 0xff, 0xfc, 0x00, 0x00, 0x03, + 0xb5, 0xff, 0x1c, 0x0c, 0x1c, 0x1f, 0xb0, 0x83, + 0x9d, 0x03, 0x6b, 0x28, 0x6a, 0xa9, 0x1a, 0x40, + 0x30, 0x01, 0x90, 0x00, 0x19, 0xe0, 0x99, 0x00, + 0x42, 0x88, 0xd9, 0x01, 0x98, 0x00, 0x1b, 0x07, + 0x69, 0x28, 0x28, 0x08, 0xd1, 0x02, 0x08, 0x7f, + 0x08, 0x64, 0x00, 0x64, 0x6b, 0xa8, 0x9a, 0x05, + 0x43, 0x50, 0x19, 0x01, 0x91, 0x01, 0x69, 0x28, + 0x00, 0x80, 0x49, 0x38, 0x58, 0x08, 0x23, 0x04, + 0x40, 0x18, 0xd0, 0x02, 0x99, 0x01, 0x08, 0x49, + 0x91, 0x01, 0x69, 0x28, 0x00, 0x80, 0x49, 0x34, + 0x58, 0x08, 0x99, 0x01, 0x43, 0x48, 0x90, 0x02, + 0x69, 0xa8, 0x99, 0x02, 0x09, 0x49, 0x18, 0x46, + 0x6b, 0xe8, 0x28, 0x00, 0xd1, 0x02, 0x03, 0x30, + 0x0b, 0x00, 0xe0, 0x01, 0x02, 0x30, 0x0a, 0x00, + 0x1c, 0x06, 0xf0, 0x11, 0xf9, 0xcb, 0xf0, 0x11, + 0xf9, 0xa7, 0x48, 0x2a, 0x69, 0x80, 0x68, 0x00, + 0x01, 0x40, 0x09, 0x40, 0x49, 0x27, 0x69, 0x89, + 0x60, 0x08, 0x48, 0x26, 0x69, 0x80, 0x68, 0x00, + 0x08, 0xc0, 0x00, 0xc0, 0x23, 0x02, 0x43, 0x18, + 0x49, 0x22, 0x69, 0x89, 0x60, 0x08, 0x07, 0x40, + 0x6b, 0xe8, 0x49, 0x20, 0x69, 0x89, 0x68, 0x09, + 0x4b, 0x1f, 0x40, 0x19, 0x07, 0xc0, 0x0c, 0x80, + 0x43, 0x08, 0x49, 0x1c, 0x69, 0x89, 0x60, 0x08, + 0x04, 0x80, 0x0f, 0xc0, 0x1c, 0x29, 0x1c, 0x28, + 0xf0, 0x00, 0xfd, 0x34, 0x48, 0x17, 0x69, 0xc0, + 0x68, 0x00, 0x4b, 0x18, 0x40, 0x18, 0x02, 0x31, + 0x0a, 0x09, 0x00, 0x89, 0x43, 0x08, 0x49, 0x13, + 0x69, 0xc9, 0x60, 0x08, 0x01, 0x80, 0x48, 0x11, + 0x69, 0xc0, 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, + 0x99, 0x02, 0x06, 0xc9, 0x43, 0x08, 0x49, 0x0d, + 0x69, 0xc9, 0x60, 0x08, 0x99, 0x0c, 0x1c, 0x28, + 0x22, 0x02, 0xf0, 0x00, 0xfd, 0x9f, 0x48, 0x09, + 0x69, 0x40, 0x62, 0x07, 0xf0, 0x00, 0xfe, 0x7d, + 0xf0, 0x11, 0xf9, 0x98, 0x20, 0x00, 0xb0, 0x03, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb0, 0x03, 0xe7, 0xf9, 0x2e, 0x03, 0x32, 0xa4, + 0x2e, 0x03, 0x32, 0xf4, 0x2e, 0x08, 0x1f, 0xb0, + 0xff, 0xff, 0xdf, 0xff, 0xfc, 0x00, 0x00, 0x03, + 0xb5, 0xff, 0xb0, 0x81, 0x9f, 0x01, 0x6b, 0x78, + 0x6a, 0xf9, 0x1a, 0x40, 0x30, 0x01, 0x90, 0x00, + 0x9a, 0x03, 0x9b, 0x04, 0x18, 0xd0, 0x99, 0x00, + 0x42, 0x88, 0xd9, 0x03, 0x98, 0x00, 0x9a, 0x03, + 0x1a, 0x83, 0x93, 0x04, 0x69, 0x38, 0x28, 0x08, + 0xd1, 0x03, 0x99, 0x02, 0x08, 0x49, 0x00, 0x49, + 0x91, 0x02, 0x6b, 0xb8, 0x9a, 0x03, 0x43, 0x50, + 0x99, 0x02, 0x18, 0x45, 0x69, 0x38, 0x00, 0x80, + 0x49, 0x3c, 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, + 0xd0, 0x00, 0x08, 0x6d, 0x69, 0x38, 0x00, 0x80, + 0x49, 0x39, 0x58, 0x08, 0x1c, 0x06, 0x43, 0x6e, + 0x69, 0xb8, 0x09, 0x71, 0x18, 0x44, 0x6b, 0xf8, + 0x28, 0x00, 0xd1, 0x02, 0x03, 0x20, 0x0b, 0x00, + 0xe0, 0x01, 0x02, 0x20, 0x0a, 0x00, 0x1c, 0x04, + 0xf0, 0x11, 0xf9, 0x34, 0xf0, 0x11, 0xf9, 0x10, + 0x48, 0x30, 0x69, 0x80, 0x68, 0x00, 0x01, 0x40, + 0x09, 0x40, 0x49, 0x2e, 0x69, 0x89, 0x60, 0x08, + 0x48, 0x2c, 0x69, 0x80, 0x68, 0x00, 0x08, 0xc0, + 0x00, 0xc0, 0x23, 0x03, 0x43, 0x18, 0x49, 0x29, + 0x69, 0x89, 0x60, 0x08, 0x07, 0x40, 0x6b, 0xf8, + 0x49, 0x26, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x26, + 0x40, 0x19, 0x07, 0xc0, 0x0c, 0x80, 0x43, 0x08, + 0x49, 0x22, 0x69, 0x89, 0x60, 0x08, 0x04, 0x80, + 0x0f, 0xc0, 0x1c, 0x39, 0x1c, 0x38, 0xf0, 0x00, + 0xfc, 0x9d, 0x99, 0x0a, 0x1c, 0x38, 0x22, 0x03, + 0xf0, 0x00, 0xfd, 0x20, 0x69, 0xf8, 0x49, 0x1b, + 0x69, 0x49, 0x61, 0x08, 0x48, 0x19, 0x69, 0xc0, + 0x68, 0x00, 0x4b, 0x1a, 0x40, 0x18, 0x02, 0x21, + 0x0a, 0x09, 0x00, 0x89, 0x43, 0x08, 0x49, 0x15, + 0x69, 0xc9, 0x60, 0x08, 0x01, 0x80, 0x48, 0x13, + 0x69, 0xc0, 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, + 0x06, 0xf1, 0x43, 0x08, 0x49, 0x0f, 0x69, 0xc9, + 0x60, 0x08, 0x48, 0x0e, 0x69, 0x40, 0x61, 0x84, + 0x06, 0xf0, 0x0e, 0xc0, 0x49, 0x0b, 0x69, 0x49, + 0x61, 0x48, 0x9b, 0x04, 0x48, 0x09, 0x69, 0x40, + 0x62, 0x43, 0xf0, 0x00, 0xfd, 0xda, 0xf0, 0x11, + 0xf8, 0xf5, 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0xb0, 0x01, + 0xe7, 0xf9, 0x00, 0x00, 0x2e, 0x03, 0x32, 0xa4, + 0x2e, 0x03, 0x32, 0xf4, 0x2e, 0x08, 0x1f, 0xb0, + 0xff, 0xff, 0xdf, 0xff, 0xfc, 0x00, 0x00, 0x03, + 0xb5, 0xf3, 0xb0, 0x86, 0x9f, 0x06, 0x99, 0x07, + 0x68, 0x8c, 0x99, 0x07, 0x68, 0xc8, 0x90, 0x03, + 0x99, 0x07, 0x68, 0x0d, 0x99, 0x07, 0x68, 0x49, + 0x91, 0x02, 0x6b, 0x78, 0x6a, 0xf9, 0x1a, 0x40, + 0x30, 0x01, 0x90, 0x01, 0x6b, 0x38, 0x6a, 0xb9, + 0x1a, 0x40, 0x30, 0x01, 0x90, 0x00, 0x99, 0x02, + 0x98, 0x03, 0x18, 0x08, 0x99, 0x01, 0x42, 0x88, + 0xd9, 0x03, 0x98, 0x01, 0x99, 0x02, 0x1a, 0x40, + 0x90, 0x03, 0x19, 0x28, 0x99, 0x00, 0x42, 0x88, + 0xd9, 0x01, 0x98, 0x00, 0x1b, 0x44, 0x69, 0x38, + 0x28, 0x08, 0xd1, 0x02, 0x08, 0x64, 0x08, 0x6d, + 0x00, 0x6d, 0x6b, 0xb8, 0x99, 0x02, 0x43, 0x48, + 0x19, 0x41, 0x91, 0x04, 0x69, 0x38, 0x00, 0x80, + 0x49, 0x41, 0x58, 0x08, 0x23, 0x04, 0x40, 0x18, + 0xd0, 0x02, 0x99, 0x04, 0x08, 0x49, 0x91, 0x04, + 0x69, 0x38, 0x00, 0x80, 0x49, 0x3d, 0x58, 0x08, + 0x99, 0x04, 0x43, 0x48, 0x90, 0x05, 0x69, 0xb8, + 0x99, 0x05, 0x09, 0x49, 0x18, 0x46, 0x6b, 0xf8, + 0x28, 0x00, 0xd1, 0x02, 0x03, 0x30, 0x0b, 0x00, + 0xe0, 0x01, 0x02, 0x30, 0x0a, 0x00, 0x1c, 0x06, + 0xf0, 0x11, 0xf8, 0x78, 0xf0, 0x11, 0xf8, 0x54, + 0x48, 0x33, 0x69, 0x80, 0x68, 0x00, 0x01, 0x40, + 0x09, 0x40, 0x49, 0x31, 0x69, 0x89, 0x60, 0x08, + 0x48, 0x2f, 0x69, 0x80, 0x68, 0x00, 0x08, 0xc0, + 0x00, 0xc0, 0x23, 0x04, 0x43, 0x18, 0x49, 0x2c, + 0x69, 0x89, 0x60, 0x08, 0x07, 0x40, 0x48, 0x2a, + 0x69, 0xc0, 0x68, 0x00, 0x01, 0x40, 0x09, 0x40, + 0x99, 0x05, 0x06, 0xc9, 0x43, 0x08, 0x49, 0x26, + 0x69, 0xc9, 0x60, 0x08, 0x48, 0x24, 0x69, 0xc0, + 0x68, 0x00, 0x4b, 0x24, 0x40, 0x18, 0x02, 0x31, + 0x0a, 0x09, 0x00, 0x89, 0x43, 0x08, 0x49, 0x20, + 0x69, 0xc9, 0x60, 0x08, 0x01, 0x80, 0x1c, 0x39, + 0x1c, 0x38, 0xf0, 0x00, 0xfb, 0xd7, 0x6b, 0xf8, + 0x49, 0x1b, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x1c, + 0x40, 0x19, 0x07, 0xc0, 0x0c, 0x80, 0x43, 0x08, + 0x49, 0x17, 0x69, 0x89, 0x60, 0x08, 0x04, 0x80, + 0x0f, 0xc0, 0x99, 0x07, 0x69, 0x09, 0x1c, 0x38, + 0x22, 0x04, 0xf0, 0x00, 0xfc, 0x4b, 0x69, 0xf8, + 0x49, 0x11, 0x69, 0x49, 0x61, 0x08, 0x98, 0x05, + 0x06, 0xc0, 0x0e, 0xc0, 0x49, 0x0e, 0x69, 0x49, + 0x61, 0x48, 0x48, 0x0d, 0x69, 0x40, 0x61, 0x86, + 0x48, 0x0b, 0x69, 0x40, 0x62, 0x04, 0x98, 0x03, + 0x49, 0x09, 0x69, 0x49, 0x62, 0x48, 0xf0, 0x00, + 0xfd, 0x18, 0xf0, 0x11, 0xf8, 0x33, 0x20, 0x00, + 0xb0, 0x06, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb0, 0x06, 0xe7, 0xf9, 0x00, 0x00, + 0x2e, 0x03, 0x32, 0xa4, 0x2e, 0x03, 0x32, 0xf4, + 0x2e, 0x08, 0x1f, 0xb0, 0xfc, 0x00, 0x00, 0x03, + 0xff, 0xff, 0xdf, 0xff, 0xb5, 0xff, 0x9d, 0x09, + 0xb0, 0x81, 0x98, 0x0b, 0x06, 0x02, 0x0e, 0x12, + 0x92, 0x00, 0xb0, 0x93, 0x98, 0x14, 0x90, 0x12, + 0x99, 0x15, 0x91, 0x11, 0xaf, 0x0c, 0x1c, 0x38, + 0x9a, 0x16, 0xca, 0x5e, 0xc0, 0x5e, 0x68, 0x39, + 0x91, 0x04, 0x68, 0x79, 0x91, 0x03, 0x98, 0x12, + 0x99, 0x11, 0x42, 0x88, 0xd1, 0x73, 0x99, 0x03, + 0x42, 0x8d, 0xd9, 0x71, 0x68, 0xb8, 0x90, 0x01, + 0x68, 0xf8, 0x90, 0x02, 0x99, 0x11, 0x6b, 0x48, + 0x6a, 0xc9, 0x1a, 0x40, 0x1c, 0x44, 0x99, 0x11, + 0x6b, 0x08, 0x6a, 0x89, 0x1a, 0x40, 0x30, 0x01, + 0x90, 0x00, 0x98, 0x02, 0x18, 0x28, 0x42, 0xa0, + 0xd9, 0x01, 0x1b, 0x61, 0x91, 0x02, 0x9b, 0x17, + 0x98, 0x01, 0x18, 0x18, 0x99, 0x00, 0x42, 0x88, + 0xd9, 0x03, 0x98, 0x00, 0x9b, 0x17, 0x1a, 0xc0, + 0x90, 0x01, 0x98, 0x01, 0x60, 0xb8, 0x98, 0x02, + 0x60, 0xf8, 0x98, 0x12, 0x69, 0xc0, 0x90, 0x0a, + 0x98, 0x12, 0x6b, 0x80, 0x99, 0x03, 0x43, 0x48, + 0x99, 0x04, 0x18, 0x41, 0x91, 0x05, 0x98, 0x12, + 0x69, 0x00, 0x00, 0x80, 0x49, 0x48, 0x58, 0x08, + 0x99, 0x05, 0x43, 0x48, 0x90, 0x0b, 0x98, 0x12, + 0x69, 0x80, 0x99, 0x0b, 0x09, 0x49, 0x18, 0x41, + 0x91, 0x07, 0x98, 0x0a, 0x99, 0x02, 0x43, 0x48, + 0x90, 0x0b, 0x98, 0x0b, 0x09, 0x40, 0x99, 0x07, + 0x18, 0x40, 0x90, 0x06, 0x98, 0x06, 0x0b, 0xc0, + 0x99, 0x07, 0x0b, 0xc9, 0x1a, 0x40, 0x90, 0x09, + 0x98, 0x09, 0x28, 0x00, 0xd0, 0x56, 0x9e, 0x02, + 0x98, 0x06, 0x04, 0x40, 0x0c, 0x40, 0x01, 0x41, + 0x91, 0x08, 0x99, 0x08, 0x98, 0x0a, 0xf0, 0x04, + 0xf9, 0x17, 0x1c, 0x04, 0x2c, 0x00, 0xd1, 0x00, + 0x34, 0x01, 0x99, 0x03, 0x98, 0x02, 0x18, 0x08, + 0x1b, 0x00, 0x60, 0x78, 0x60, 0xfc, 0x98, 0x02, + 0x18, 0x28, 0x1b, 0x05, 0x9a, 0x13, 0x1c, 0x29, + 0xb4, 0x06, 0x9b, 0x19, 0x1c, 0x3a, 0x99, 0x17, + 0x98, 0x16, 0xf0, 0x00, 0xf8, 0x57, 0xb0, 0x02, + 0x1b, 0x36, 0x98, 0x09, 0xe0, 0x01, 0xe0, 0x3c, + 0xe0, 0x3b, 0x38, 0x01, 0x90, 0x09, 0x98, 0x09, + 0x28, 0x00, 0xd0, 0x1a, 0x98, 0x0a, 0x21, 0x01, + 0x03, 0x09, 0xf0, 0x04, 0xf8, 0xf1, 0x1c, 0x04, + 0x68, 0x78, 0x1b, 0x80, 0x60, 0x78, 0x60, 0xfc, + 0x68, 0xf8, 0x1a, 0x2d, 0x9a, 0x13, 0x1c, 0x29, + 0xb4, 0x06, 0x9b, 0x19, 0x1c, 0x3a, 0x99, 0x17, + 0x98, 0x16, 0xf0, 0x00, 0xf8, 0x37, 0xb0, 0x02, + 0x1b, 0x36, 0x98, 0x09, 0x38, 0x01, 0x90, 0x09, + 0xe7, 0xe1, 0x68, 0x78, 0x1b, 0x80, 0x60, 0x78, + 0x60, 0xfe, 0x68, 0xf8, 0x1a, 0x2d, 0x9a, 0x13, + 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x19, 0x1c, 0x3a, + 0x99, 0x17, 0x98, 0x16, 0xf0, 0x00, 0xf8, 0x22, + 0xb0, 0x02, 0xe0, 0x09, 0x9a, 0x13, 0x1c, 0x29, + 0xb4, 0x06, 0x9b, 0x19, 0x1c, 0x3a, 0x99, 0x17, + 0x98, 0x16, 0xf0, 0x00, 0xf8, 0x17, 0xb0, 0x02, + 0xe0, 0x09, 0x9a, 0x13, 0x1c, 0x29, 0xb4, 0x06, + 0x9b, 0x19, 0x1c, 0x3a, 0x99, 0x17, 0x98, 0x16, + 0xf0, 0x00, 0xf8, 0xb8, 0xb0, 0x02, 0x20, 0x00, + 0xb0, 0x14, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb0, 0x13, 0xb0, 0x01, 0xe7, 0xf8, + 0x2e, 0x03, 0x32, 0xf4, 0xb5, 0xff, 0x9d, 0x09, + 0xb0, 0x81, 0x98, 0x0b, 0x06, 0x02, 0x0e, 0x12, + 0x92, 0x00, 0xb0, 0x92, 0x98, 0x13, 0x90, 0x11, + 0x99, 0x14, 0x91, 0x10, 0xaf, 0x0b, 0x1c, 0x38, + 0x9a, 0x15, 0xca, 0x5e, 0xc0, 0x5e, 0x68, 0x38, + 0x90, 0x03, 0x68, 0x78, 0x90, 0x02, 0x68, 0xb8, + 0x90, 0x00, 0x68, 0xf9, 0x91, 0x01, 0x98, 0x11, + 0x69, 0xc0, 0x90, 0x09, 0x99, 0x10, 0x6b, 0x88, + 0x43, 0x68, 0x9b, 0x16, 0x18, 0xc1, 0x91, 0x04, + 0x99, 0x10, 0x69, 0x08, 0x00, 0x80, 0x49, 0x42, + 0x58, 0x08, 0x99, 0x04, 0x43, 0x48, 0x90, 0x0a, + 0x99, 0x10, 0x69, 0x88, 0x99, 0x0a, 0x09, 0x49, + 0x18, 0x40, 0x90, 0x06, 0x98, 0x09, 0x99, 0x01, + 0x43, 0x48, 0x90, 0x0a, 0x98, 0x0a, 0x09, 0x40, + 0x99, 0x06, 0x18, 0x40, 0x90, 0x05, 0x98, 0x05, + 0x0b, 0xc0, 0x99, 0x06, 0x0b, 0xc9, 0x1a, 0x40, + 0x90, 0x08, 0x98, 0x08, 0x28, 0x00, 0xd0, 0x53, + 0x9e, 0x01, 0x98, 0x05, 0x04, 0x40, 0x0c, 0x40, + 0x01, 0x41, 0x91, 0x07, 0x99, 0x07, 0x98, 0x09, + 0xf0, 0x04, 0xf8, 0x5e, 0x1c, 0x04, 0x2c, 0x00, + 0xd1, 0x00, 0x34, 0x01, 0x98, 0x02, 0x99, 0x01, + 0x18, 0x40, 0x1b, 0x00, 0x60, 0x78, 0x60, 0xfc, + 0x99, 0x01, 0x18, 0x68, 0x1b, 0x05, 0x9a, 0x12, + 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x18, 0x1c, 0x3a, + 0x99, 0x16, 0x98, 0x15, 0xf0, 0x00, 0xf8, 0x4a, + 0xb0, 0x02, 0x1b, 0x36, 0x98, 0x08, 0x38, 0x01, + 0x90, 0x08, 0x98, 0x08, 0x28, 0x00, 0xd0, 0x1a, + 0x98, 0x09, 0x21, 0x01, 0x03, 0x09, 0xf0, 0x04, + 0xf8, 0x3b, 0x1c, 0x04, 0x68, 0x78, 0x1b, 0x80, + 0x60, 0x78, 0x60, 0xfc, 0x68, 0xf8, 0x1a, 0x2d, + 0x9a, 0x12, 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x18, + 0x1c, 0x3a, 0x99, 0x16, 0x98, 0x15, 0xf0, 0x00, + 0xf8, 0x2d, 0xb0, 0x02, 0x1b, 0x36, 0x98, 0x08, + 0x38, 0x01, 0x90, 0x08, 0xe7, 0xe1, 0x68, 0x78, + 0x1b, 0x80, 0x60, 0x78, 0x60, 0xfe, 0x68, 0xf8, + 0x1a, 0x2d, 0x9a, 0x12, 0x1c, 0x29, 0xb4, 0x06, + 0x9b, 0x18, 0x1c, 0x3a, 0x99, 0x16, 0x98, 0x15, + 0xf0, 0x00, 0xf8, 0x18, 0xb0, 0x02, 0xe0, 0x09, + 0x9a, 0x12, 0x1c, 0x29, 0xb4, 0x06, 0x9b, 0x18, + 0x1c, 0x3a, 0x99, 0x16, 0x98, 0x15, 0xf0, 0x00, + 0xf8, 0x0d, 0xb0, 0x02, 0x20, 0x00, 0xb0, 0x13, + 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xb0, 0x12, 0xb0, 0x01, 0xe7, 0xf8, 0x00, 0x00, + 0x2e, 0x03, 0x32, 0xf4, 0xb5, 0xff, 0xb0, 0x81, + 0x98, 0x0b, 0x06, 0x02, 0x0e, 0x12, 0x92, 0x00, + 0xb0, 0x8e, 0x9f, 0x0f, 0x9c, 0x10, 0x9a, 0x11, + 0x68, 0x10, 0x90, 0x07, 0x9a, 0x11, 0x68, 0x50, + 0x90, 0x06, 0x9a, 0x11, 0x68, 0x91, 0x91, 0x08, + 0x9a, 0x11, 0x68, 0xd0, 0x90, 0x09, 0x6b, 0x60, + 0x6a, 0xe1, 0x1a, 0x40, 0x30, 0x01, 0x90, 0x01, + 0x6b, 0x20, 0x6a, 0xa1, 0x1a, 0x40, 0x30, 0x01, + 0x90, 0x00, 0x99, 0x18, 0x98, 0x09, 0x18, 0x08, + 0x99, 0x01, 0x42, 0x88, 0xd9, 0x03, 0x98, 0x01, + 0x99, 0x18, 0x1a, 0x41, 0x91, 0x09, 0x9b, 0x12, + 0x99, 0x08, 0x18, 0x58, 0x99, 0x00, 0x42, 0x88, + 0xd9, 0x03, 0x98, 0x00, 0x9b, 0x12, 0x1a, 0xc1, + 0x91, 0x08, 0x22, 0x00, 0x92, 0x05, 0x42, 0xa7, + 0xd1, 0x20, 0x99, 0x18, 0x98, 0x06, 0x42, 0x81, + 0xd9, 0x0c, 0x22, 0x02, 0x92, 0x05, 0x99, 0x06, + 0x98, 0x09, 0x18, 0x08, 0x1e, 0x41, 0x91, 0x06, + 0x99, 0x18, 0x98, 0x09, 0x18, 0x08, 0x1e, 0x41, + 0x91, 0x18, 0xe0, 0x0f, 0x9b, 0x12, 0x98, 0x07, + 0x42, 0x83, 0xd9, 0x0b, 0x22, 0x01, 0x92, 0x05, + 0x98, 0x07, 0x99, 0x08, 0x18, 0x40, 0x38, 0x01, + 0x90, 0x07, 0x9b, 0x12, 0x99, 0x08, 0x18, 0x58, + 0x1e, 0x43, 0x93, 0x12, 0x69, 0x38, 0x28, 0x08, + 0xd1, 0x0a, 0x99, 0x08, 0x08, 0x49, 0x91, 0x08, + 0x98, 0x07, 0x08, 0x40, 0x00, 0x40, 0x90, 0x07, + 0x9b, 0x12, 0x08, 0x5b, 0x00, 0x5b, 0x93, 0x12, + 0x69, 0x38, 0x00, 0x80, 0x49, 0xc6, 0x58, 0x08, + 0x23, 0x04, 0x40, 0x18, 0x08, 0x80, 0x90, 0x03, + 0x69, 0x20, 0x00, 0x80, 0x49, 0xc2, 0x58, 0x08, + 0x23, 0x04, 0x40, 0x18, 0x08, 0x80, 0x90, 0x02, + 0x6b, 0xb8, 0x99, 0x06, 0x43, 0x48, 0x99, 0x07, + 0x18, 0x41, 0x91, 0x04, 0x98, 0x03, 0x28, 0x00, + 0xd0, 0x02, 0x99, 0x04, 0x08, 0x49, 0x91, 0x04, + 0x69, 0x38, 0x00, 0x80, 0x49, 0xb9, 0x58, 0x08, + 0x99, 0x04, 0x1c, 0x06, 0x43, 0x4e, 0x6b, 0xa0, + 0x99, 0x18, 0x43, 0x48, 0x9b, 0x12, 0x18, 0xc1, + 0x91, 0x04, 0x98, 0x02, 0x28, 0x00, 0xd0, 0x02, + 0x99, 0x04, 0x08, 0x49, 0x91, 0x04, 0x69, 0x20, + 0x00, 0x80, 0x49, 0xb0, 0x58, 0x08, 0x99, 0x04, + 0x1c, 0x05, 0x43, 0x4d, 0x9a, 0x05, 0x2a, 0x01, + 0xd1, 0x3d, 0x69, 0x38, 0x28, 0x08, 0xd0, 0x3a, + 0x69, 0x38, 0x28, 0x09, 0xd0, 0x02, 0x69, 0x38, + 0x28, 0x0a, 0xd1, 0x0a, 0x36, 0x10, 0x69, 0xb8, + 0x09, 0x71, 0x18, 0x41, 0x91, 0x0b, 0x06, 0xf0, + 0x0e, 0xc0, 0x1d, 0xc1, 0x31, 0x01, 0x91, 0x0a, + 0xe0, 0x0b, 0x69, 0xb8, 0x09, 0x71, 0x18, 0x41, + 0x91, 0x0b, 0x69, 0x38, 0x00, 0x80, 0x49, 0x9f, + 0x58, 0x08, 0x19, 0x86, 0x06, 0xf1, 0x0e, 0xc9, + 0x91, 0x0a, 0x69, 0x20, 0x28, 0x09, 0xd0, 0x02, + 0x69, 0x20, 0x28, 0x0a, 0xd1, 0x0a, 0x35, 0x10, + 0x69, 0xa0, 0x09, 0x69, 0x18, 0x41, 0x91, 0x0d, + 0x06, 0xe8, 0x0e, 0xc0, 0x1d, 0xc1, 0x31, 0x01, + 0x91, 0x0c, 0xe0, 0x0b, 0x69, 0xa0, 0x09, 0x69, + 0x18, 0x41, 0x91, 0x0d, 0x69, 0x20, 0x00, 0x80, + 0x49, 0x90, 0x58, 0x08, 0x19, 0x45, 0x06, 0xe9, + 0x0e, 0xc9, 0x91, 0x0c, 0xe0, 0x0d, 0x69, 0xb8, + 0x09, 0x71, 0x18, 0x41, 0x91, 0x0b, 0x69, 0xa0, + 0x09, 0x69, 0x18, 0x41, 0x91, 0x0d, 0x06, 0xf1, + 0x0e, 0xc9, 0x91, 0x0a, 0x06, 0xe9, 0x0e, 0xc9, + 0x91, 0x0c, 0x6b, 0xf8, 0x28, 0x00, 0xd1, 0x03, + 0x99, 0x0b, 0x03, 0x09, 0x0b, 0x09, 0xe0, 0x02, + 0x99, 0x0b, 0x02, 0x09, 0x0a, 0x09, 0x91, 0x0b, + 0x6b, 0xe0, 0x28, 0x00, 0xd1, 0x03, 0x99, 0x0d, + 0x03, 0x09, 0x0b, 0x09, 0xe0, 0x02, 0x99, 0x0d, + 0x02, 0x09, 0x0a, 0x09, 0x91, 0x0d, 0xf0, 0x10, + 0xfd, 0x79, 0xf0, 0x10, 0xfd, 0x55, 0x48, 0x7a, + 0x69, 0x80, 0x68, 0x00, 0x08, 0xc0, 0x00, 0xc0, + 0x23, 0x05, 0x43, 0x18, 0x49, 0x76, 0x69, 0x89, + 0x60, 0x08, 0x07, 0x40, 0x1c, 0x21, 0x1c, 0x38, + 0xf0, 0x00, 0xf8, 0xf8, 0x98, 0x03, 0x28, 0x00, + 0xd0, 0x18, 0x98, 0x02, 0x28, 0x00, 0xd0, 0x15, + 0x48, 0x6f, 0x69, 0x80, 0x68, 0x00, 0x23, 0x08, + 0x43, 0xdb, 0x40, 0x18, 0x49, 0x6c, 0x69, 0x89, + 0x60, 0x08, 0x07, 0x00, 0x48, 0x6a, 0x69, 0x80, + 0x68, 0x00, 0x4b, 0x6a, 0x40, 0x18, 0x49, 0x68, + 0x69, 0x89, 0x60, 0x08, 0x05, 0xc0, 0x99, 0x08, + 0x08, 0x49, 0x91, 0x08, 0x6b, 0xf8, 0x49, 0x64, + 0x69, 0x89, 0x68, 0x09, 0x4b, 0x64, 0x40, 0x19, + 0x07, 0xc0, 0x0c, 0x40, 0x43, 0x08, 0x49, 0x60, + 0x69, 0x89, 0x60, 0x08, 0x04, 0x40, 0x0f, 0xc0, + 0x6b, 0xe0, 0x49, 0x5d, 0x69, 0x89, 0x68, 0x09, + 0x4b, 0x5e, 0x40, 0x19, 0x07, 0xc0, 0x0c, 0x80, + 0x43, 0x08, 0x49, 0x59, 0x69, 0x89, 0x60, 0x08, + 0x04, 0x80, 0x0f, 0xc0, 0x68, 0x38, 0x28, 0x00, + 0xd0, 0x0d, 0x79, 0x38, 0x49, 0x54, 0x69, 0x89, + 0x68, 0x09, 0x4b, 0x57, 0x40, 0x19, 0x03, 0xc0, + 0x43, 0x08, 0x49, 0x51, 0x69, 0x89, 0x60, 0x08, + 0x02, 0x40, 0x0e, 0x00, 0xe0, 0x0d, 0x6a, 0x78, + 0x78, 0x00, 0x49, 0x4d, 0x69, 0x89, 0x68, 0x09, + 0x4b, 0x4f, 0x40, 0x19, 0x03, 0xc0, 0x43, 0x08, + 0x49, 0x49, 0x69, 0x89, 0x60, 0x08, 0x02, 0x40, + 0x0e, 0x00, 0x69, 0x20, 0x00, 0x80, 0x49, 0x45, + 0x58, 0x08, 0x99, 0x08, 0x43, 0x48, 0x28, 0x40, + 0xd9, 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x01, + 0x1c, 0x08, 0x49, 0x41, 0x69, 0x89, 0x68, 0x09, + 0x4b, 0x44, 0x40, 0x19, 0x07, 0xc2, 0x09, 0x52, + 0x43, 0x11, 0x4a, 0x3d, 0x69, 0x92, 0x60, 0x11, + 0x01, 0x49, 0x0f, 0xc9, 0x49, 0x3a, 0x69, 0x89, + 0x68, 0x09, 0x4b, 0x3f, 0x40, 0x19, 0x9a, 0x05, + 0x07, 0x92, 0x0f, 0x92, 0x05, 0xd2, 0x43, 0x11, + 0x4a, 0x35, 0x69, 0x92, 0x60, 0x11, 0x01, 0xc9, + 0x49, 0x33, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x39, + 0x40, 0x19, 0x9a, 0x0e, 0x07, 0xd2, 0x09, 0x92, + 0x43, 0x11, 0x4a, 0x2f, 0x69, 0x92, 0x60, 0x11, + 0x01, 0x89, 0x69, 0xf9, 0x4a, 0x2c, 0x69, 0x52, + 0x60, 0x11, 0x49, 0x2b, 0x69, 0x89, 0x68, 0x09, + 0x01, 0x49, 0x09, 0x49, 0x9a, 0x0a, 0x06, 0xd2, + 0x43, 0x11, 0x4a, 0x27, 0x69, 0x92, 0x60, 0x11, + 0x99, 0x0a, 0x4a, 0x25, 0x69, 0x52, 0x60, 0x51, + 0x99, 0x0b, 0x4a, 0x23, 0x69, 0x52, 0x60, 0x91, + 0x99, 0x0b, 0x4a, 0x21, 0x69, 0x52, 0x60, 0xd1, + 0x69, 0xe1, 0x4a, 0x1f, 0x69, 0x52, 0x61, 0x11, + 0x49, 0x1d, 0x69, 0xc9, 0x68, 0x09, 0x01, 0x49, + 0x09, 0x49, 0x9a, 0x0c, 0x06, 0xd2, 0x43, 0x11, + 0x4a, 0x19, 0x69, 0xd2, 0x60, 0x11, 0x99, 0x0c, + 0x4a, 0x17, 0x69, 0x52, 0x61, 0x51, 0x99, 0x0d, + 0x4a, 0x15, 0x69, 0x52, 0x61, 0x91, 0x99, 0x0d, + 0x4a, 0x13, 0x69, 0x52, 0x61, 0xd1, 0x99, 0x09, + 0x4a, 0x11, 0x69, 0x52, 0x62, 0x51, 0x99, 0x08, + 0x4a, 0x0f, 0x69, 0x52, 0x62, 0x11, 0x68, 0x38, + 0x28, 0x00, 0xd0, 0x05, 0x48, 0x14, 0x68, 0x01, + 0x23, 0x01, 0x43, 0x19, 0x60, 0x01, 0xe0, 0x02, + 0x48, 0x11, 0x21, 0x00, 0x60, 0x01, 0xf0, 0x00, + 0xf9, 0x8c, 0xf0, 0x10, 0xfc, 0xa7, 0x20, 0x00, + 0xb0, 0x0f, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb0, 0x0e, 0xb0, 0x01, 0xe7, 0xf8, + 0x2e, 0x03, 0x32, 0xa4, 0x2e, 0x03, 0x32, 0xf4, + 0x2e, 0x08, 0x1f, 0xb0, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xdf, 0xff, + 0xff, 0x80, 0x7f, 0xff, 0xfb, 0xff, 0xff, 0xff, + 0xfe, 0x7f, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, + 0x68, 0x00, 0x00, 0x40, 0xb4, 0x80, 0x1c, 0x07, + 0x1c, 0x0a, 0x69, 0x38, 0x00, 0x80, 0x49, 0x3c, + 0x58, 0x08, 0x23, 0x18, 0x40, 0x18, 0x08, 0xc0, + 0x49, 0x3a, 0x69, 0x89, 0x68, 0x09, 0x23, 0xc0, + 0x43, 0xdb, 0x40, 0x19, 0x07, 0x80, 0x0f, 0x80, + 0x01, 0x80, 0x43, 0x08, 0x49, 0x35, 0x69, 0x89, + 0x60, 0x08, 0x06, 0x00, 0x0f, 0x80, 0x69, 0x38, + 0x00, 0x80, 0x49, 0x31, 0x58, 0x08, 0x23, 0x04, + 0x40, 0x18, 0x08, 0x80, 0x49, 0x2f, 0x69, 0x89, + 0x68, 0x09, 0x23, 0x08, 0x43, 0xdb, 0x40, 0x19, + 0x07, 0xc0, 0x0f, 0x00, 0x43, 0x08, 0x49, 0x2b, + 0x69, 0x89, 0x60, 0x08, 0x07, 0x00, 0x0f, 0xc0, + 0x69, 0x38, 0x00, 0x80, 0x49, 0x26, 0x58, 0x08, + 0x49, 0x26, 0x69, 0x89, 0x68, 0x09, 0x23, 0x30, + 0x43, 0xdb, 0x40, 0x19, 0x07, 0x80, 0x0f, 0x80, + 0x01, 0x00, 0x43, 0x08, 0x49, 0x21, 0x69, 0x89, + 0x60, 0x08, 0x06, 0x80, 0x0f, 0x80, 0x69, 0x10, + 0x00, 0x80, 0x49, 0x1d, 0x58, 0x08, 0x23, 0x18, + 0x40, 0x18, 0x08, 0xc0, 0x49, 0x1b, 0x69, 0x89, + 0x68, 0x09, 0x4b, 0x1b, 0x40, 0x19, 0x07, 0x80, + 0x0f, 0x80, 0x02, 0xc0, 0x43, 0x08, 0x49, 0x17, + 0x69, 0x89, 0x60, 0x08, 0x04, 0xc0, 0x0f, 0x80, + 0x69, 0x10, 0x00, 0x80, 0x49, 0x12, 0x58, 0x08, + 0x23, 0x04, 0x40, 0x18, 0x08, 0x80, 0x49, 0x11, + 0x69, 0x89, 0x68, 0x09, 0x4b, 0x11, 0x40, 0x19, + 0x07, 0xc0, 0x0d, 0xc0, 0x43, 0x08, 0x49, 0x0d, + 0x69, 0x89, 0x60, 0x08, 0x05, 0xc0, 0x0f, 0xc0, + 0x69, 0x10, 0x00, 0x80, 0x49, 0x08, 0x58, 0x08, + 0x49, 0x08, 0x69, 0x89, 0x68, 0x09, 0x4b, 0x0a, + 0x40, 0x19, 0x07, 0x80, 0x0f, 0x80, 0x02, 0x40, + 0x43, 0x08, 0x49, 0x04, 0x69, 0x89, 0x60, 0x08, + 0x05, 0x40, 0x0f, 0x80, 0xbc, 0x80, 0x47, 0x70, + 0x2e, 0x03, 0x32, 0xa4, 0x2e, 0x08, 0x1f, 0xb0, + 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xfe, 0xff, + 0xff, 0xff, 0xf9, 0xff, 0xb4, 0xb0, 0x1c, 0x04, + 0x1c, 0x0f, 0x1c, 0x15, 0x2d, 0x00, 0xd0, 0x06, + 0x2d, 0x02, 0xd0, 0x21, 0x2d, 0x03, 0xd0, 0x02, + 0x2d, 0x04, 0xd0, 0x1d, 0xe0, 0xa3, 0x69, 0x20, + 0x28, 0x0b, 0xd2, 0x14, 0xa3, 0x01, 0x5c, 0x1b, + 0x00, 0x5b, 0x44, 0x9f, 0x05, 0x07, 0x09, 0x0b, + 0x05, 0x07, 0x09, 0x0b, 0x0d, 0x0e, 0x0e, 0x00, + 0x07, 0xff, 0xe0, 0x09, 0x07, 0xbf, 0xe0, 0x07, + 0x07, 0x3f, 0xe0, 0x05, 0x06, 0x3f, 0xe0, 0x03, + 0xe0, 0x02, 0x02, 0x3f, 0xe0, 0x00, 0xe7, 0xff, + 0x48, 0x46, 0x6a, 0x00, 0x60, 0x07, 0xe0, 0x86, + 0x69, 0x20, 0x28, 0x0b, 0xd2, 0x73, 0xa3, 0x02, + 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x06, 0x15, 0x24, 0x33, 0x06, 0x15, 0x24, 0x33, + 0x41, 0x45, 0x45, 0x00, 0x01, 0xff, 0x48, 0x3d, + 0x6a, 0x40, 0x68, 0x00, 0x4b, 0x3c, 0x40, 0x18, + 0x06, 0x39, 0x0e, 0x09, 0x00, 0x89, 0x43, 0x08, + 0x49, 0x38, 0x6a, 0x49, 0x60, 0x08, 0x05, 0x80, + 0xe0, 0x69, 0x01, 0xbf, 0x48, 0x35, 0x6a, 0x40, + 0x68, 0x00, 0x4b, 0x35, 0x40, 0x18, 0x06, 0x39, + 0x0e, 0x09, 0x00, 0x89, 0x43, 0x08, 0x49, 0x31, + 0x6a, 0x49, 0x60, 0x08, 0x05, 0x80, 0xe0, 0x5a, + 0x01, 0x3f, 0x48, 0x2e, 0x6a, 0x40, 0x68, 0x00, + 0x4b, 0x2d, 0x40, 0x18, 0x06, 0x39, 0x0e, 0x09, + 0x00, 0x89, 0x43, 0x08, 0x49, 0x29, 0x6a, 0x49, + 0x60, 0x08, 0x05, 0x80, 0xe0, 0x4b, 0x48, 0x27, + 0x6a, 0x40, 0x68, 0x00, 0x4b, 0x26, 0x40, 0x18, + 0x06, 0x39, 0x0e, 0x09, 0x00, 0x89, 0x43, 0x08, + 0x49, 0x22, 0x6a, 0x49, 0x60, 0x08, 0x05, 0x80, + 0xe0, 0x3d, 0x48, 0x20, 0x6a, 0x00, 0x60, 0x07, + 0xe0, 0x39, 0x48, 0x1e, 0x6a, 0x40, 0x68, 0x00, + 0x4b, 0x1d, 0x40, 0x18, 0x06, 0x39, 0x0e, 0x09, + 0x00, 0x89, 0x43, 0x08, 0x49, 0x19, 0x6a, 0x49, + 0x60, 0x08, 0x05, 0x80, 0x48, 0x17, 0x6a, 0x40, + 0x68, 0x00, 0x4b, 0x18, 0x40, 0x18, 0x21, 0xff, + 0x02, 0x09, 0x40, 0x39, 0x00, 0x89, 0x43, 0x08, + 0x49, 0x12, 0x6a, 0x49, 0x60, 0x08, 0x03, 0x80, + 0x48, 0x10, 0x6a, 0x40, 0x68, 0x00, 0x4b, 0x12, + 0x40, 0x18, 0x21, 0xff, 0x04, 0x09, 0x40, 0x39, + 0x00, 0x89, 0x43, 0x01, 0x48, 0x0b, 0x6a, 0x40, + 0x60, 0x01, 0x01, 0x88, 0xe0, 0x00, 0xe0, 0x0d, + 0x48, 0x08, 0x6a, 0x40, 0x68, 0x00, 0x01, 0x80, + 0x09, 0x80, 0x21, 0x3f, 0x06, 0x09, 0x40, 0x39, + 0x00, 0x89, 0x43, 0x08, 0x49, 0x03, 0x6a, 0x49, + 0x60, 0x08, 0xe0, 0x00, 0xe7, 0xff, 0xbc, 0xb0, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x1f, 0xb0, + 0xff, 0xff, 0xfc, 0x03, 0xff, 0xfc, 0x03, 0xff, + 0xfc, 0x03, 0xff, 0xff, 0xb4, 0x80, 0x1c, 0x07, + 0x1c, 0x0a, 0x69, 0x38, 0x28, 0x0b, 0xd2, 0x1a, + 0xa3, 0x01, 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, + 0x05, 0x08, 0x0b, 0x0e, 0x05, 0x08, 0x0b, 0x0e, + 0x11, 0x13, 0x13, 0x00, 0x68, 0x10, 0x0f, 0xc1, + 0xe0, 0x0f, 0x68, 0x10, 0x0f, 0x81, 0xe0, 0x0c, + 0x68, 0x10, 0x0f, 0x01, 0xe0, 0x09, 0x68, 0x10, + 0x0e, 0x01, 0xe0, 0x06, 0x68, 0x11, 0xe0, 0x04, + 0x68, 0x10, 0x0a, 0x01, 0xe0, 0x01, 0x68, 0x11, + 0xe7, 0xff, 0x1c, 0x08, 0xbc, 0x80, 0x47, 0x70, + 0xe7, 0xfc, 0x48, 0x14, 0x69, 0x80, 0x68, 0x00, + 0x49, 0x12, 0x6a, 0x89, 0x60, 0x08, 0x48, 0x11, + 0x69, 0xc0, 0x68, 0x00, 0x49, 0x0f, 0x6a, 0xc9, + 0x60, 0x08, 0x48, 0x0e, 0x6a, 0x00, 0x68, 0x00, + 0x49, 0x0c, 0x6b, 0x09, 0x60, 0x08, 0x48, 0x0b, + 0x6a, 0x40, 0x68, 0x00, 0x49, 0x09, 0x6b, 0x49, + 0x60, 0x08, 0x20, 0x01, 0x49, 0x07, 0x6b, 0xc9, + 0x60, 0x08, 0x20, 0x00, 0x49, 0x06, 0x60, 0x08, + 0x20, 0x00, 0x49, 0x05, 0x60, 0x48, 0x20, 0x00, + 0x49, 0x03, 0x60, 0x88, 0x20, 0x00, 0x49, 0x02, + 0x60, 0xc8, 0x47, 0x70, 0x2e, 0x08, 0x1f, 0xb0, + 0x2e, 0x08, 0x1f, 0xb4, 0xb4, 0x90, 0x1c, 0x01, + 0x29, 0x00, 0xd1, 0x02, 0x20, 0x8d, 0xbc, 0x90, + 0x47, 0x70, 0x4c, 0x08, 0x1c, 0x0f, 0x22, 0x00, + 0x23, 0xff, 0x33, 0x01, 0x42, 0x9a, 0xd3, 0x02, + 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xf8, 0xcf, 0x08, + 0xc4, 0x08, 0xe7, 0xfa, 0x20, 0x00, 0xe7, 0xee, + 0xe7, 0xed, 0x00, 0x00, 0x68, 0x00, 0x18, 0x00, + 0xb4, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x13, + 0x06, 0x1a, 0x0e, 0x12, 0x1c, 0x21, 0x60, 0x0f, + 0x71, 0x0a, 0x20, 0x00, 0xbc, 0x90, 0x47, 0x70, + 0xe7, 0xfc, 0x00, 0x00, 0xb5, 0x00, 0x48, 0x1d, + 0x69, 0x00, 0x23, 0x04, 0x40, 0x18, 0xd0, 0x19, + 0x48, 0x1a, 0x69, 0x00, 0x23, 0x02, 0x40, 0x18, + 0xd0, 0x09, 0x48, 0x18, 0x69, 0x40, 0x49, 0x18, + 0x68, 0x09, 0x60, 0x08, 0x20, 0x01, 0x49, 0x17, + 0x68, 0x09, 0x70, 0x08, 0xe0, 0x03, 0x20, 0x00, + 0x49, 0x14, 0x68, 0x09, 0x70, 0x08, 0x48, 0x14, + 0x78, 0x01, 0x20, 0x01, 0x40, 0x88, 0xf0, 0x07, + 0xfb, 0x43, 0xe0, 0x18, 0x48, 0x11, 0x6a, 0x80, + 0x23, 0x02, 0x40, 0x18, 0xd0, 0x13, 0x48, 0x0f, + 0x6a, 0x80, 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x04, + 0x20, 0xfe, 0x49, 0x0d, 0x68, 0x09, 0x70, 0x08, + 0xe0, 0x03, 0x20, 0x0e, 0x49, 0x0a, 0x68, 0x09, + 0x70, 0x08, 0x48, 0x0a, 0x78, 0x01, 0x20, 0x01, + 0x40, 0x88, 0xf0, 0x07, 0xfb, 0x29, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x6e, 0x00, 0x0c, 0x00, + 0x2e, 0x08, 0x7c, 0x34, 0x2e, 0x08, 0x7c, 0x38, + 0x2e, 0x08, 0x7c, 0x3c, 0x6e, 0x00, 0x0e, 0x00, + 0x2e, 0x08, 0x7c, 0x40, 0x2e, 0x08, 0x7c, 0x44, + 0xb5, 0xf0, 0x1c, 0x05, 0x1c, 0x0c, 0x1c, 0x17, + 0x06, 0x2e, 0x0e, 0x36, 0x2e, 0x1f, 0xdd, 0x03, + 0x20, 0xaf, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x49, 0x08, 0x20, 0x0d, 0xf0, 0x07, 0xfb, 0x1a, + 0x48, 0x07, 0x60, 0x04, 0x20, 0x00, 0x49, 0x06, + 0x68, 0x09, 0x70, 0x08, 0x48, 0x05, 0x60, 0x07, + 0x48, 0x05, 0x70, 0x06, 0x20, 0x00, 0xe7, 0xec, + 0xe7, 0xeb, 0x00, 0x00, 0x2e, 0x01, 0x4c, 0xd1, + 0x2e, 0x08, 0x7c, 0x38, 0x2e, 0x08, 0x7c, 0x34, + 0x2e, 0x08, 0x7c, 0x3c, 0xb5, 0xb0, 0x1c, 0x04, + 0x1c, 0x0f, 0x06, 0x25, 0x0e, 0x2d, 0x2d, 0x1f, + 0xdd, 0x03, 0x20, 0xaf, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x49, 0x07, 0x20, 0x0d, 0xf0, 0x07, + 0xfa, 0xf5, 0x48, 0x06, 0x60, 0x07, 0x20, 0x00, + 0x49, 0x04, 0x68, 0x09, 0x70, 0x08, 0x48, 0x04, + 0x70, 0x05, 0x20, 0x00, 0xe7, 0xee, 0xe7, 0xed, + 0x2e, 0x01, 0x4c, 0xd1, 0x2e, 0x08, 0x7c, 0x40, + 0x2e, 0x08, 0x7c, 0x44, 0xb4, 0xb0, 0x1c, 0x01, + 0x4a, 0x35, 0x23, 0x01, 0x60, 0x13, 0x4a, 0x35, + 0x1c, 0x0f, 0x68, 0x3d, 0xc2, 0x20, 0x88, 0x8d, + 0xc2, 0x20, 0x88, 0xcb, 0x60, 0x13, 0x68, 0x8c, + 0x2c, 0x00, 0xd0, 0x57, 0x4a, 0x30, 0x1c, 0x27, + 0x20, 0x00, 0x28, 0x13, 0xdb, 0x02, 0xe0, 0x04, + 0x30, 0x01, 0xe7, 0xfa, 0xcf, 0x20, 0xc2, 0x20, + 0xe7, 0xfa, 0x4a, 0x2c, 0x1d, 0xe7, 0x37, 0x45, + 0x20, 0x00, 0x28, 0x0b, 0xdb, 0x02, 0xe0, 0x04, + 0x30, 0x01, 0xe7, 0xfa, 0xcf, 0x20, 0xc2, 0x20, + 0xe7, 0xfa, 0x4a, 0x27, 0x1d, 0xe7, 0x37, 0x71, + 0x20, 0x00, 0x28, 0x07, 0xdb, 0x02, 0xe0, 0x04, + 0x30, 0x01, 0xe7, 0xfa, 0xcf, 0x20, 0xc2, 0x20, + 0xe7, 0xfa, 0x4a, 0x22, 0x1d, 0xe7, 0x37, 0x8d, + 0x20, 0x00, 0x28, 0x09, 0xdb, 0x02, 0xe0, 0x04, + 0x30, 0x01, 0xe7, 0xfa, 0xcf, 0x20, 0xc2, 0x20, + 0xe7, 0xfa, 0x4a, 0x1d, 0x1d, 0xe7, 0x37, 0xb1, + 0x20, 0x00, 0x28, 0x09, 0xdb, 0x02, 0xe0, 0x04, + 0x30, 0x01, 0xe7, 0xfa, 0xcf, 0x20, 0xc2, 0x20, + 0xe7, 0xfa, 0x68, 0x0d, 0x23, 0x01, 0x02, 0x9b, + 0x40, 0x2b, 0xd0, 0x17, 0x4a, 0x15, 0x1d, 0xe7, + 0x37, 0xd5, 0x20, 0x00, 0x28, 0x09, 0xdb, 0x02, + 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, 0xcf, 0x20, + 0xc2, 0x20, 0xe7, 0xfa, 0x4a, 0x10, 0x1d, 0xe7, + 0x37, 0xf9, 0x20, 0x00, 0x28, 0x09, 0xdb, 0x02, + 0xe0, 0x04, 0x30, 0x01, 0xe7, 0xfa, 0xcf, 0x20, + 0xc2, 0x20, 0xe7, 0xfa, 0x4a, 0x02, 0x23, 0x00, + 0x60, 0x13, 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x00, + 0x6e, 0x00, 0x0c, 0x0c, 0x6e, 0x00, 0x0c, 0x00, + 0x6e, 0x00, 0x08, 0x00, 0x6e, 0x00, 0x08, 0x50, + 0x6e, 0x00, 0x08, 0x80, 0x6e, 0x00, 0x08, 0xa0, + 0x6e, 0x00, 0x08, 0xd0, 0x6e, 0x00, 0x09, 0x00, + 0x6e, 0x00, 0x09, 0x30, 0xb4, 0xf0, 0x1c, 0x01, + 0x69, 0x08, 0x06, 0xc0, 0x0e, 0xc0, 0x28, 0x01, + 0xdb, 0x04, 0x69, 0x08, 0x06, 0xc0, 0x0e, 0xc0, + 0x28, 0x0a, 0xdd, 0x02, 0x20, 0xc3, 0xbc, 0xf0, + 0x47, 0x70, 0x69, 0x08, 0x05, 0x80, 0x0e, 0xc0, + 0x28, 0x01, 0xdb, 0x04, 0x69, 0x08, 0x05, 0x80, + 0x0e, 0xc0, 0x28, 0x0a, 0xdd, 0x01, 0x20, 0xc4, + 0xe7, 0xf1, 0x48, 0x4f, 0x6a, 0x80, 0x07, 0xc0, + 0x0f, 0xc0, 0xd1, 0x01, 0x20, 0xc0, 0xe7, 0xea, + 0x68, 0x08, 0x07, 0x00, 0x0f, 0xc0, 0x4b, 0x4b, + 0x70, 0x18, 0x4f, 0x49, 0x1c, 0x0c, 0x22, 0x00, + 0x2a, 0x04, 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, + 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, + 0x4f, 0x45, 0x69, 0x08, 0x06, 0xc0, 0x0e, 0xc0, + 0x00, 0x43, 0x18, 0x18, 0x38, 0x03, 0x69, 0x0b, + 0x05, 0x9b, 0x0e, 0xde, 0x00, 0x73, 0x19, 0x9b, + 0x3b, 0x03, 0x01, 0x5b, 0x43, 0x18, 0x60, 0x38, + 0x4f, 0x3e, 0x69, 0x48, 0x60, 0x38, 0x4f, 0x3e, + 0x69, 0x88, 0x05, 0x40, 0x0d, 0x40, 0x69, 0x8b, + 0x02, 0x9b, 0x0d, 0x5b, 0x02, 0xdb, 0x43, 0x18, + 0x60, 0x38, 0x69, 0xcd, 0x2d, 0x00, 0xd0, 0x63, + 0x4f, 0x38, 0x1c, 0x2c, 0x22, 0x00, 0x2a, 0x09, + 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, + 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, 0x4f, 0x34, + 0x1d, 0xec, 0x34, 0x1d, 0x22, 0x00, 0x2a, 0x09, + 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, + 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, 0x4f, 0x2f, + 0x1d, 0xec, 0x34, 0x41, 0x22, 0x00, 0x2a, 0x09, + 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, + 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, 0x4f, 0x2a, + 0x1d, 0xec, 0x34, 0x65, 0x22, 0x00, 0x2a, 0x09, + 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, + 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, 0x4f, 0x25, + 0x1d, 0xec, 0x34, 0x89, 0x22, 0x00, 0x2a, 0x05, + 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, + 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, 0x4f, 0x20, + 0x1d, 0xec, 0x34, 0x9d, 0x22, 0x00, 0x2a, 0x05, + 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, 0xe7, 0xfa, + 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, 0x68, 0x08, + 0x23, 0x01, 0x02, 0x9b, 0x40, 0x18, 0xd0, 0x17, + 0x4f, 0x18, 0x1d, 0xec, 0x34, 0xb1, 0x22, 0x00, + 0x2a, 0x05, 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, + 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, + 0x4f, 0x13, 0x1d, 0xec, 0x34, 0xc5, 0x22, 0x00, + 0x2a, 0x05, 0xd3, 0x02, 0xe0, 0x04, 0x32, 0x01, + 0xe7, 0xfa, 0xcc, 0x08, 0xc7, 0x08, 0xe7, 0xfa, + 0x20, 0x00, 0xe7, 0x54, 0xe7, 0x53, 0x00, 0x00, + 0x6e, 0x00, 0x0e, 0x00, 0x2e, 0x08, 0x7c, 0x45, + 0x6e, 0x00, 0x0e, 0x10, 0x6e, 0x00, 0x0e, 0x14, + 0x6e, 0x00, 0x0e, 0x18, 0x6e, 0x00, 0x0a, 0x00, + 0x6e, 0x00, 0x0a, 0x24, 0x6e, 0x00, 0x0a, 0x48, + 0x6e, 0x00, 0x0a, 0x90, 0x6e, 0x00, 0x0a, 0xc0, + 0x6e, 0x00, 0x0a, 0xe4, 0x6e, 0x00, 0x09, 0xc0, + 0x6e, 0x00, 0x09, 0xe4, 0x1c, 0x01, 0x48, 0x0c, + 0x78, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x20, 0xc1, + 0x47, 0x70, 0x48, 0x0a, 0x6a, 0x80, 0x07, 0xc0, + 0x0f, 0xc0, 0xd1, 0x01, 0x20, 0xc0, 0xe7, 0xf7, + 0x20, 0x00, 0x4b, 0x06, 0x61, 0x58, 0x4a, 0x06, + 0x68, 0x08, 0x60, 0x10, 0x4a, 0x05, 0x68, 0x48, + 0x60, 0x10, 0x20, 0x00, 0xe7, 0xec, 0xe7, 0xeb, + 0x2e, 0x08, 0x7c, 0x45, 0x6e, 0x00, 0x0e, 0x00, + 0x6e, 0x00, 0x0e, 0x20, 0x6e, 0x00, 0x0e, 0x24, + 0x48, 0x09, 0x78, 0x00, 0x28, 0x00, 0xd0, 0x01, + 0x20, 0xc1, 0x47, 0x70, 0x48, 0x07, 0x6a, 0x80, + 0x07, 0xc0, 0x0f, 0xc0, 0xd0, 0x01, 0x20, 0xc2, + 0xe7, 0xf7, 0x20, 0x01, 0x49, 0x03, 0x61, 0x48, + 0x20, 0x00, 0xe7, 0xf2, 0xe7, 0xf1, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0x45, 0x6e, 0x00, 0x0e, 0x00, + 0xb5, 0xff, 0x1c, 0x04, 0x1c, 0x0d, 0x1c, 0x17, + 0x9e, 0x09, 0x20, 0x00, 0x60, 0x30, 0x48, 0x13, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x07, 0x9b, 0x03, + 0x2b, 0x00, 0xd1, 0x04, 0x20, 0x8a, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x23, 0xff, + 0x33, 0x01, 0x42, 0x9c, 0xdd, 0x01, 0x20, 0x87, + 0xe7, 0xf5, 0x19, 0x28, 0x23, 0xff, 0x33, 0x01, + 0x42, 0x98, 0xd9, 0x01, 0x20, 0x88, 0xe7, 0xee, + 0x68, 0x79, 0x1c, 0x20, 0x80, 0x48, 0x70, 0x0d, + 0x9b, 0x03, 0x60, 0x4b, 0x68, 0x78, 0x60, 0xc8, + 0x68, 0x38, 0x60, 0x88, 0x60, 0x31, 0x20, 0x00, + 0xe7, 0xe1, 0xe7, 0xe0, 0x2e, 0x08, 0x60, 0x8c, + 0x1c, 0x03, 0x1c, 0x0a, 0x1c, 0x19, 0x68, 0xc8, + 0x60, 0x50, 0x68, 0x88, 0x60, 0x10, 0x20, 0x00, + 0x47, 0x70, 0xe7, 0xfd, 0xb5, 0xf3, 0xb0, 0x87, + 0x21, 0x00, 0x91, 0x06, 0x26, 0x00, 0x98, 0x07, + 0xf0, 0x00, 0xfa, 0xcb, 0x90, 0x03, 0x9c, 0x07, + 0x9d, 0x08, 0x88, 0x69, 0x91, 0x04, 0x98, 0x03, + 0x99, 0x04, 0x42, 0x88, 0xd0, 0x09, 0x48, 0xbb, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x05, 0x20, 0xff, + 0xb0, 0x07, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x78, 0x28, 0x90, 0x05, 0x99, 0x04, + 0x23, 0xff, 0x33, 0x01, 0x42, 0x99, 0xdd, 0x02, + 0x20, 0xff, 0xb0, 0x07, 0xe7, 0xf1, 0x98, 0x05, + 0x99, 0x04, 0x18, 0x40, 0x23, 0xff, 0x33, 0x01, + 0x42, 0x98, 0xdd, 0x02, 0x20, 0xff, 0xb0, 0x07, + 0xe7, 0xe7, 0x48, 0xad, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x0a, 0x68, 0xa0, 0x23, 0x01, 0x06, 0x1b, + 0x40, 0x18, 0xd0, 0x05, 0x68, 0x68, 0x28, 0x00, + 0xd1, 0x02, 0x20, 0x8a, 0xb0, 0x07, 0xe7, 0xd8, + 0x62, 0x65, 0x69, 0x60, 0x4b, 0xa5, 0x40, 0x18, + 0x99, 0x05, 0x06, 0x09, 0x0e, 0x09, 0x04, 0x09, + 0x43, 0x08, 0x61, 0x60, 0x02, 0x00, 0x68, 0xe0, + 0x90, 0x00, 0x48, 0x9e, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x06, 0x98, 0x00, 0x28, 0x19, 0xd3, 0x01, + 0x20, 0x01, 0xe0, 0x00, 0x20, 0x00, 0xe0, 0x05, + 0x98, 0x00, 0x28, 0x08, 0xd3, 0x01, 0x20, 0x01, + 0xe0, 0x00, 0x20, 0x00, 0x28, 0x00, 0xd0, 0x02, + 0x20, 0x00, 0xb0, 0x07, 0xe7, 0xb5, 0x48, 0x94, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x1e, 0x48, 0x91, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x1a, 0x68, 0xa0, + 0x02, 0x00, 0x0e, 0x00, 0x06, 0x01, 0x0e, 0x09, + 0x91, 0x06, 0x99, 0x04, 0x29, 0x04, 0xd0, 0x06, + 0x29, 0x10, 0xd0, 0x07, 0x23, 0xff, 0x33, 0x01, + 0x42, 0x99, 0xd0, 0x06, 0xe0, 0x08, 0x26, 0xff, + 0x36, 0x01, 0xe0, 0x07, 0x26, 0x01, 0x02, 0x76, + 0xe0, 0x04, 0x26, 0x03, 0x02, 0x36, 0xe0, 0x01, + 0x26, 0x00, 0xe7, 0xff, 0x49, 0x84, 0x20, 0x91, + 0xf0, 0x0f, 0xff, 0xa8, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x01, 0xff, 0xb1, 0xe7, 0xf5, + 0x98, 0x00, 0x00, 0x80, 0x49, 0x7f, 0x58, 0x08, + 0x99, 0x07, 0x42, 0x88, 0xd0, 0x05, 0x20, 0x92, + 0x49, 0x7b, 0x60, 0x08, 0x20, 0xff, 0xb0, 0x07, + 0xe7, 0x7b, 0x48, 0x77, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x73, 0x48, 0x74, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x6f, 0x98, 0x00, 0xf0, 0x02, 0xfe, 0xd6, + 0x28, 0x00, 0xd0, 0x6a, 0xb0, 0x82, 0x49, 0x74, + 0x20, 0x91, 0xf0, 0x0f, 0xff, 0x83, 0x28, 0x92, + 0xd0, 0x00, 0xe7, 0xf8, 0xf0, 0x02, 0xff, 0x25, + 0x20, 0x92, 0x49, 0x6f, 0x60, 0x08, 0x20, 0x01, + 0x49, 0x6e, 0x68, 0x09, 0x60, 0x08, 0x27, 0x00, + 0x20, 0x00, 0x90, 0x00, 0x98, 0x00, 0x28, 0x00, + 0xd1, 0x15, 0x2f, 0x07, 0xd2, 0x13, 0x6a, 0xe0, + 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, + 0x00, 0x83, 0x18, 0x18, 0x00, 0xc0, 0x4a, 0x65, + 0x68, 0x12, 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, + 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0x81, 0xd1, 0x01, + 0x20, 0x01, 0x90, 0x00, 0xe7, 0xe6, 0x98, 0x00, + 0x28, 0x00, 0xd1, 0x14, 0x2f, 0x18, 0xd2, 0x12, + 0x6a, 0xe0, 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, + 0x37, 0x01, 0x23, 0x4c, 0x43, 0x58, 0x4a, 0x59, + 0x68, 0x12, 0x18, 0x80, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x02, 0x69, 0x40, 0x42, 0x81, 0xd1, 0x01, + 0x20, 0x01, 0x90, 0x00, 0xe7, 0xe7, 0x3f, 0x01, + 0x2f, 0x07, 0xd2, 0x10, 0x00, 0xb8, 0x19, 0xc0, + 0x00, 0xc0, 0x49, 0x50, 0x68, 0x09, 0x18, 0x40, + 0x23, 0x2b, 0x01, 0x5b, 0x18, 0xc0, 0x1c, 0x21, + 0xf0, 0x02, 0xfb, 0x38, 0x48, 0x4b, 0x68, 0x00, + 0xf0, 0x02, 0xfe, 0xee, 0xe0, 0x46, 0x2f, 0x18, + 0xd2, 0x44, 0x20, 0x4c, 0x43, 0x78, 0x49, 0x47, + 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x0a, 0x1c, 0x21, 0xf0, 0x02, 0xfb, 0x26, + 0x20, 0x4c, 0x43, 0x78, 0x49, 0x41, 0x68, 0x09, + 0xe0, 0x00, 0xe0, 0x48, 0x18, 0x40, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x82, 0x6f, 0xc0, 0x28, 0x00, + 0xd0, 0x17, 0x20, 0x4c, 0x43, 0x78, 0x49, 0x3b, + 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x02, 0x68, 0x00, 0x04, 0x00, 0x0c, 0x00, + 0xd0, 0x0b, 0x20, 0x4c, 0x43, 0x78, 0x49, 0x35, + 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x02, 0x68, 0x00, 0x0c, 0x00, 0x04, 0x00, + 0xd1, 0x0a, 0x20, 0x02, 0x21, 0x4c, 0x43, 0x79, + 0x4a, 0x2e, 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, + 0x39, 0xff, 0x39, 0x82, 0x67, 0x48, 0xe0, 0x09, + 0x20, 0x03, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x29, + 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, + 0x39, 0x82, 0x67, 0x48, 0x49, 0x24, 0x20, 0x91, + 0xf0, 0x0f, 0xfe, 0xe4, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0x48, 0x22, 0x68, 0x00, 0x90, 0x01, + 0x48, 0x21, 0x68, 0x00, 0x49, 0x1f, 0x60, 0x08, + 0x98, 0x01, 0x49, 0x1f, 0x60, 0x08, 0x20, 0x92, + 0x49, 0x1b, 0x60, 0x08, 0xb0, 0x02, 0x48, 0x15, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x1d, 0x98, 0x00, + 0x01, 0x00, 0x4b, 0x1a, 0x18, 0xc1, 0x91, 0x01, + 0x1d, 0xe0, 0x30, 0x0d, 0x90, 0x02, 0x98, 0x02, + 0x68, 0x00, 0x99, 0x01, 0x60, 0x08, 0x48, 0x0e, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x0d, 0x68, 0x68, + 0x08, 0x80, 0x99, 0x06, 0x00, 0x89, 0x4b, 0x12, + 0x18, 0xc9, 0x67, 0x08, 0x98, 0x05, 0x43, 0x30, + 0x99, 0x06, 0x00, 0x89, 0x4b, 0x0f, 0x18, 0xc9, + 0x61, 0x08, 0x20, 0x92, 0x49, 0x06, 0x60, 0x08, + 0x20, 0x00, 0xb0, 0x07, 0xe6, 0x91, 0xb0, 0x07, + 0xe6, 0x8f, 0x00, 0x00, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x60, 0x8c, 0xff, 0x00, 0xff, 0xff, + 0x2e, 0x08, 0x7c, 0xc8, 0x2e, 0x08, 0x7c, 0x60, + 0x2e, 0x08, 0x94, 0x90, 0x2e, 0x08, 0x7d, 0xbc, + 0x2e, 0x08, 0x7d, 0xc0, 0x68, 0x00, 0x0c, 0x00, + 0x68, 0x00, 0x0e, 0x00, 0x68, 0x00, 0x0e, 0x80, + 0x1c, 0x01, 0x1c, 0x0a, 0x6a, 0x53, 0x1c, 0x18, + 0x47, 0x70, 0xe7, 0xfd, 0xb5, 0xf3, 0x1c, 0x0f, + 0xb0, 0x82, 0x48, 0x2b, 0x68, 0x00, 0x28, 0x00, + 0xd0, 0x05, 0x20, 0x8a, 0xb0, 0x02, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x98, 0x02, + 0x90, 0x01, 0x98, 0x01, 0x88, 0x44, 0x98, 0x01, + 0x78, 0x06, 0x23, 0xff, 0x33, 0x01, 0x42, 0x9c, + 0xdd, 0x02, 0x20, 0xff, 0xb0, 0x02, 0xe7, 0xee, + 0x19, 0x30, 0x23, 0xff, 0x33, 0x01, 0x42, 0x98, + 0xdd, 0x02, 0x20, 0xff, 0xb0, 0x02, 0xe7, 0xe6, + 0x49, 0x1c, 0x20, 0x91, 0xf0, 0x0f, 0xfe, 0x66, + 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, + 0xfe, 0x6f, 0xe7, 0xf5, 0x2c, 0x10, 0xda, 0x0d, + 0x25, 0x00, 0x42, 0xa5, 0xdb, 0x02, 0xe0, 0x08, + 0x35, 0x01, 0xe7, 0xfa, 0xcf, 0x01, 0x19, 0x71, + 0x00, 0x89, 0x4b, 0x13, 0x18, 0xc9, 0x60, 0x08, + 0xe7, 0xf6, 0xe0, 0x15, 0x4a, 0x11, 0x43, 0x22, + 0x92, 0x00, 0x20, 0x91, 0x49, 0x10, 0x60, 0x08, + 0x00, 0xb0, 0x4b, 0x0d, 0x18, 0xc1, 0x9a, 0x00, + 0x1c, 0x38, 0x23, 0x02, 0xf0, 0x00, 0xfa, 0xfe, + 0x28, 0x00, 0xd0, 0x00, 0xe7, 0xf4, 0x48, 0x0a, + 0x68, 0x00, 0x28, 0x92, 0xd0, 0x00, 0xe7, 0xfa, + 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, + 0xb0, 0x02, 0xe7, 0xb0, 0xb0, 0x02, 0xe7, 0xae, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x7c, 0xcc, + 0x68, 0x00, 0x08, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0xd0, 0x21, 0x04, 0xe0, 0x00, + 0x31, 0x01, 0x1c, 0x08, 0x47, 0x70, 0xe7, 0xfd, + 0xb5, 0xf3, 0x1c, 0x0f, 0xb0, 0x82, 0x48, 0x2b, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x05, 0x20, 0x8a, + 0xb0, 0x02, 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x98, 0x02, 0x90, 0x01, 0x98, 0x01, + 0x88, 0x44, 0x98, 0x01, 0x78, 0x06, 0x23, 0xff, + 0x33, 0x01, 0x42, 0x9c, 0xdd, 0x02, 0x20, 0xff, + 0xb0, 0x02, 0xe7, 0xee, 0x19, 0x30, 0x23, 0xff, + 0x33, 0x01, 0x42, 0x98, 0xdd, 0x02, 0x20, 0xff, + 0xb0, 0x02, 0xe7, 0xe6, 0x49, 0x1c, 0x20, 0x91, + 0xf0, 0x0f, 0xfd, 0xfc, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x01, 0xfe, 0x05, 0xe7, 0xf5, + 0x2c, 0x10, 0xda, 0x0d, 0x25, 0x00, 0x42, 0xa5, + 0xdb, 0x02, 0xe0, 0x08, 0x35, 0x01, 0xe7, 0xfa, + 0x19, 0x70, 0x00, 0x80, 0x4b, 0x13, 0x18, 0xc0, + 0x68, 0x01, 0xc7, 0x02, 0xe7, 0xf6, 0xe0, 0x15, + 0x4a, 0x11, 0x43, 0x22, 0x92, 0x00, 0x20, 0x91, + 0x49, 0x10, 0x60, 0x08, 0x00, 0xb0, 0x4b, 0x0d, + 0x18, 0xc0, 0x9a, 0x00, 0x1c, 0x39, 0x23, 0x02, + 0xf0, 0x00, 0xfa, 0x94, 0x28, 0x00, 0xd0, 0x00, + 0xe7, 0xf4, 0x48, 0x0a, 0x68, 0x00, 0x28, 0x92, + 0xd0, 0x00, 0xe7, 0xfa, 0x20, 0x92, 0x49, 0x04, + 0x60, 0x08, 0x20, 0x00, 0xb0, 0x02, 0xe7, 0xb0, + 0xb0, 0x02, 0xe7, 0xae, 0x2e, 0x08, 0x60, 0x8c, + 0x2e, 0x08, 0x7c, 0xcc, 0x68, 0x00, 0x08, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0xd0, + 0xb5, 0xf7, 0x9a, 0x02, 0x06, 0x15, 0x0e, 0x2d, + 0x9c, 0x00, 0x88, 0x66, 0x42, 0xb5, 0xdd, 0x04, + 0x20, 0xff, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x78, 0x20, 0x19, 0x40, 0x06, 0x07, + 0x0e, 0x3f, 0x23, 0xff, 0x33, 0x01, 0x42, 0x9f, + 0xdd, 0x01, 0x20, 0xff, 0xe7, 0xf1, 0x49, 0x0a, + 0x20, 0x91, 0xf0, 0x0f, 0xfd, 0xa3, 0x28, 0x92, + 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, 0xfd, 0xac, + 0xe7, 0xf5, 0x99, 0x01, 0x00, 0xb8, 0x4b, 0x05, + 0x18, 0xc0, 0x60, 0x01, 0x20, 0x92, 0x49, 0x02, + 0x60, 0x08, 0x20, 0x00, 0xe7, 0xdd, 0xe7, 0xdc, + 0x2e, 0x08, 0x7c, 0xcc, 0x68, 0x00, 0x08, 0x00, + 0xb5, 0xf7, 0x9a, 0x02, 0x06, 0x14, 0x0e, 0x24, + 0x9f, 0x00, 0x88, 0x7d, 0x78, 0x38, 0x19, 0x00, + 0x06, 0x06, 0x0e, 0x36, 0x42, 0xac, 0xdd, 0x04, + 0x20, 0xff, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x49, 0x0b, 0x20, 0x91, 0xf0, 0x0f, + 0xfd, 0x79, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, + 0xf0, 0x01, 0xfd, 0x82, 0xe7, 0xf5, 0x00, 0xb0, + 0x4b, 0x06, 0x18, 0xc0, 0x68, 0x00, 0x99, 0x01, + 0x60, 0x08, 0x20, 0x92, 0x49, 0x02, 0x60, 0x08, + 0x20, 0x00, 0xe7, 0xe6, 0xe7, 0xe5, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0xcc, 0x68, 0x00, 0x08, 0x00, + 0x1c, 0x01, 0x1c, 0x0a, 0x88, 0x50, 0x47, 0x70, + 0xe7, 0xfd, 0xb4, 0x80, 0x1c, 0x01, 0x1c, 0x0f, + 0x69, 0x3a, 0x2a, 0x08, 0xd2, 0x12, 0xa3, 0x02, + 0x5c, 0x9b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x04, 0x07, 0x09, 0x0b, 0x04, 0x07, 0x09, 0x0b, + 0x20, 0x02, 0xbc, 0x80, 0x47, 0x70, 0x20, 0x04, + 0xe7, 0xfb, 0x20, 0x10, 0xe7, 0xf9, 0x20, 0xff, + 0x30, 0x01, 0xe7, 0xf6, 0x20, 0x00, 0xe7, 0xf4, + 0xe7, 0xf3, 0xb5, 0xf3, 0x98, 0x00, 0x06, 0x05, + 0x0e, 0x2d, 0x48, 0x89, 0x68, 0x00, 0x28, 0x00, + 0xd1, 0x04, 0x20, 0x8b, 0xb0, 0x02, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x48, 0x85, 0x68, 0x00, + 0x28, 0x01, 0xd1, 0x04, 0x2d, 0x17, 0xdd, 0x02, + 0x20, 0x8c, 0xe7, 0xf3, 0xe0, 0xfe, 0x2d, 0x07, + 0xdd, 0x01, 0x20, 0x8c, 0xe7, 0xee, 0x49, 0x80, + 0x20, 0x91, 0xf0, 0x0f, 0xfd, 0x23, 0x28, 0x92, + 0xd0, 0x03, 0x20, 0x01, 0xf0, 0x01, 0xfd, 0x2c, + 0xe7, 0xf5, 0x1c, 0x28, 0xf7, 0xf8, 0xfc, 0xd8, + 0x1c, 0x04, 0x2c, 0x00, 0xd0, 0x09, 0x68, 0xa0, + 0x4b, 0x78, 0x40, 0x18, 0x99, 0x01, 0x07, 0xc9, + 0x09, 0xc9, 0x43, 0x08, 0x60, 0xa0, 0x01, 0xc0, + 0xe0, 0x04, 0x20, 0x92, 0x49, 0x72, 0x60, 0x08, + 0x20, 0xff, 0xe7, 0xcf, 0x48, 0x6f, 0x68, 0x00, + 0x28, 0x00, 0xd1, 0x11, 0x99, 0x01, 0x29, 0x00, + 0xd0, 0x06, 0x48, 0x6f, 0x21, 0x01, 0x40, 0xa9, + 0x68, 0x02, 0x43, 0x11, 0x60, 0x01, 0xe0, 0x06, + 0x48, 0x6b, 0x21, 0x01, 0x40, 0xa9, 0x43, 0xc9, + 0x68, 0x02, 0x40, 0x11, 0x60, 0x01, 0xe0, 0xbf, + 0x68, 0xe0, 0xf0, 0x02, 0xfc, 0x3b, 0x28, 0x00, + 0xd0, 0x73, 0xb0, 0x81, 0x49, 0x65, 0x20, 0x91, + 0xf0, 0x0f, 0xfc, 0xe8, 0x28, 0x92, 0xd0, 0x00, + 0xe7, 0xf8, 0xf0, 0x02, 0xfc, 0x8a, 0x20, 0x92, + 0x49, 0x60, 0x60, 0x08, 0x20, 0x01, 0x49, 0x60, + 0x68, 0x09, 0x60, 0x08, 0x27, 0x00, 0x26, 0x00, + 0x2e, 0x00, 0xd1, 0x14, 0x2f, 0x07, 0xd2, 0x12, + 0x6a, 0xe0, 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, + 0x37, 0x01, 0x00, 0x83, 0x18, 0x18, 0x00, 0xc0, + 0x4a, 0x57, 0x68, 0x12, 0x18, 0x80, 0x23, 0x05, + 0x02, 0x1b, 0x18, 0xc0, 0x6f, 0xc0, 0x42, 0x81, + 0xd1, 0x00, 0x26, 0x01, 0xe7, 0xe8, 0x2e, 0x00, + 0xd1, 0x13, 0x2f, 0x18, 0xd2, 0x11, 0x6a, 0xe0, + 0x05, 0x81, 0x0d, 0x89, 0x1c, 0x38, 0x37, 0x01, + 0x23, 0x4c, 0x43, 0x58, 0x4a, 0x4c, 0x68, 0x12, + 0x18, 0x80, 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, + 0x69, 0x40, 0x42, 0x81, 0xd1, 0x00, 0x26, 0x01, + 0xe7, 0xe9, 0x3f, 0x01, 0x2f, 0x07, 0xd2, 0x32, + 0x99, 0x02, 0x29, 0x00, 0xd0, 0x16, 0x00, 0xb8, + 0x19, 0xc0, 0x00, 0xc0, 0x49, 0x42, 0x68, 0x09, + 0x18, 0x40, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, + 0x6e, 0x80, 0x4b, 0x40, 0x43, 0x18, 0x00, 0xb9, + 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x3c, 0x68, 0x12, + 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, + 0x66, 0x88, 0xe0, 0x17, 0x00, 0xb8, 0x19, 0xc0, + 0x00, 0xc0, 0x49, 0x37, 0x68, 0x09, 0x18, 0x40, + 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, 0x6e, 0x80, + 0x04, 0x00, 0x0c, 0x00, 0x00, 0xb9, 0x19, 0xc9, + 0x00, 0xc9, 0x4a, 0x31, 0x68, 0x12, 0x18, 0x89, + 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, + 0xe0, 0x00, 0xe0, 0x45, 0xe0, 0x2b, 0x99, 0x02, + 0x29, 0x00, 0xd0, 0x14, 0x20, 0x4c, 0x43, 0x78, + 0x49, 0x29, 0x68, 0x09, 0x18, 0x40, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, 0x4b, 0x27, + 0x43, 0x18, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x24, + 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, 0x39, 0xff, + 0x39, 0x02, 0x60, 0x08, 0xe0, 0x13, 0x20, 0x4c, + 0x43, 0x78, 0x49, 0x1f, 0x68, 0x09, 0x18, 0x40, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x68, 0x00, + 0x04, 0x00, 0x0c, 0x00, 0x21, 0x4c, 0x43, 0x79, + 0x4a, 0x19, 0x68, 0x12, 0x18, 0x89, 0x39, 0xff, + 0x39, 0xff, 0x39, 0x02, 0x60, 0x08, 0x48, 0x16, + 0x68, 0x00, 0xf0, 0x02, 0xfc, 0x05, 0x49, 0x13, + 0x20, 0x91, 0xf0, 0x0f, 0xfc, 0x43, 0x28, 0x92, + 0xd0, 0x00, 0xe7, 0xf8, 0x48, 0x10, 0x68, 0x00, + 0x90, 0x00, 0x48, 0x11, 0x68, 0x00, 0x49, 0x0e, + 0x60, 0x08, 0x98, 0x00, 0x49, 0x0e, 0x60, 0x08, + 0x20, 0x92, 0x49, 0x0a, 0x60, 0x08, 0xb0, 0x01, + 0x20, 0x92, 0x49, 0x05, 0x60, 0x08, 0x20, 0x00, + 0xe6, 0xf4, 0xe6, 0xf3, 0xe6, 0xf2, 0x00, 0x00, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x7c, 0xcc, 0xfe, 0xff, 0xff, 0xff, + 0x68, 0x00, 0x00, 0x20, 0x2e, 0x08, 0x94, 0x90, + 0x2e, 0x08, 0x7d, 0xbc, 0xff, 0xff, 0x00, 0x00, + 0x2e, 0x08, 0x7d, 0xc0, 0xb5, 0xf0, 0x1c, 0x04, + 0x1c, 0x0f, 0x06, 0x26, 0x0e, 0x36, 0x48, 0x0f, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x03, 0x20, 0x8b, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x07, + 0xdd, 0x01, 0x20, 0x8c, 0xe7, 0xf8, 0x1c, 0x30, + 0xf7, 0xf8, 0xfb, 0xc2, 0x1c, 0x05, 0x2d, 0x00, + 0xd0, 0x04, 0x68, 0xa8, 0x01, 0xc0, 0x0f, 0xc0, + 0x60, 0x38, 0xe0, 0x04, 0x20, 0x92, 0x49, 0x04, + 0x60, 0x08, 0x20, 0xff, 0xe7, 0xe8, 0x20, 0x00, + 0xe7, 0xe6, 0xe7, 0xe5, 0x2e, 0x08, 0x60, 0x8c, + 0x2e, 0x08, 0x7c, 0xcc, 0xb5, 0xb0, 0x1c, 0x04, + 0x1c, 0x0f, 0x06, 0x25, 0x0e, 0x2d, 0x48, 0x20, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x03, 0x20, 0x8b, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x48, 0x1d, + 0x68, 0x00, 0x28, 0x01, 0xd1, 0x04, 0x2d, 0x17, + 0xdd, 0x02, 0x20, 0x8c, 0xe7, 0xf4, 0xe0, 0x2d, + 0x2d, 0x07, 0xdd, 0x01, 0x20, 0x8c, 0xe7, 0xef, + 0x48, 0x16, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x01, + 0x20, 0xff, 0xe7, 0xe9, 0x49, 0x14, 0x20, 0x91, + 0xf0, 0x0f, 0xfb, 0xcc, 0x28, 0x92, 0xd0, 0x03, + 0x20, 0x01, 0xf0, 0x01, 0xfb, 0xd5, 0xe7, 0xf5, + 0x2f, 0x00, 0xd0, 0x08, 0x48, 0x0f, 0x1d, 0xe9, + 0x31, 0x01, 0x22, 0x01, 0x40, 0x8a, 0x68, 0x01, + 0x43, 0x11, 0x60, 0x01, 0xe0, 0x08, 0x48, 0x0b, + 0x1d, 0xea, 0x32, 0x01, 0x21, 0x01, 0x40, 0x91, + 0x43, 0xc9, 0x68, 0x02, 0x40, 0x11, 0x60, 0x01, + 0x20, 0x92, 0x49, 0x05, 0x60, 0x08, 0x20, 0x00, + 0xe7, 0xc6, 0xe7, 0xc5, 0xe7, 0xc4, 0x00, 0x00, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x94, 0x8c, + 0x2e, 0x08, 0x7c, 0xcc, 0x68, 0x00, 0x00, 0x20, + 0xb4, 0x90, 0x1c, 0x07, 0x1c, 0x0a, 0x06, 0x39, + 0x0e, 0x09, 0x48, 0x10, 0x68, 0x00, 0x28, 0x00, + 0xd1, 0x02, 0x20, 0x8b, 0xbc, 0x90, 0x47, 0x70, + 0x29, 0x07, 0xdd, 0x01, 0x20, 0x8c, 0xe7, 0xf9, + 0x48, 0x0b, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x01, + 0x20, 0xff, 0xe7, 0xf3, 0x1d, 0xc8, 0x30, 0x01, + 0x24, 0x01, 0x40, 0x84, 0x1c, 0x23, 0x20, 0x0d, + 0x06, 0xc0, 0x6a, 0x00, 0x40, 0x18, 0x1d, 0xcc, + 0x34, 0x01, 0x40, 0xe0, 0x60, 0x10, 0x20, 0x00, + 0xe7, 0xe4, 0xe7, 0xe3, 0x2e, 0x08, 0x60, 0x8c, + 0x2e, 0x08, 0x94, 0x8c, 0xb5, 0xb0, 0x1c, 0x04, + 0x1c, 0x0f, 0x06, 0x25, 0x0e, 0x2d, 0x48, 0x13, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x03, 0x20, 0x8b, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x2d, 0x07, + 0xdd, 0x01, 0x20, 0x8c, 0xe7, 0xf8, 0x48, 0x0e, + 0x68, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x20, 0xff, + 0xe7, 0xf2, 0x49, 0x0c, 0x20, 0x91, 0xf0, 0x0f, + 0xfb, 0x5d, 0x28, 0x92, 0xd0, 0x03, 0x20, 0x01, + 0xf0, 0x01, 0xfb, 0x66, 0xe7, 0xf5, 0x08, 0xb8, + 0x00, 0xa9, 0x4b, 0x07, 0x18, 0xc9, 0x67, 0x08, + 0x20, 0x92, 0x49, 0x04, 0x60, 0x08, 0x20, 0x00, + 0xe7, 0xde, 0xe7, 0xdd, 0x2e, 0x08, 0x60, 0x8c, + 0x2e, 0x08, 0x94, 0x8c, 0x2e, 0x08, 0x7c, 0xcc, + 0x68, 0x00, 0x0e, 0x00, 0xb4, 0xf0, 0x1c, 0x05, + 0x1c, 0x0c, 0x1c, 0x17, 0x1c, 0x1e, 0x04, 0x3f, + 0x0c, 0x3f, 0x1c, 0x39, 0x29, 0x00, 0xd8, 0x02, + 0xe0, 0x04, 0x39, 0x01, 0xe7, 0xfa, 0xcd, 0x04, + 0xc4, 0x04, 0xe7, 0xfa, 0x20, 0x92, 0x4a, 0x03, + 0x60, 0x10, 0x20, 0x00, 0xbc, 0xf0, 0x47, 0x70, + 0xe7, 0xfc, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0xd0, + 0x20, 0x00, 0x6b, 0x00, 0x49, 0x63, 0x60, 0x08, + 0x20, 0x00, 0x6b, 0x40, 0x49, 0x62, 0x60, 0x08, + 0x48, 0x62, 0x49, 0x63, 0x60, 0x08, 0x48, 0x63, + 0x49, 0x63, 0x60, 0x08, 0x20, 0x00, 0x6a, 0xc0, + 0x49, 0x62, 0x60, 0x08, 0x48, 0x62, 0x49, 0x63, + 0x60, 0x08, 0x48, 0x63, 0x49, 0x63, 0x60, 0x08, + 0x48, 0x63, 0x49, 0x64, 0x60, 0x08, 0x20, 0x00, + 0x6b, 0x80, 0x49, 0x63, 0x60, 0x08, 0x20, 0x00, + 0x6b, 0xc0, 0x49, 0x62, 0x60, 0x08, 0x20, 0x00, + 0x6c, 0x00, 0x49, 0x61, 0x60, 0x08, 0x20, 0x00, + 0x6c, 0x40, 0x49, 0x60, 0x60, 0x08, 0x20, 0x00, + 0x6c, 0x80, 0x49, 0x5f, 0x60, 0x08, 0x20, 0x00, + 0x6c, 0xc0, 0x49, 0x5e, 0x60, 0x08, 0x20, 0x00, + 0x6e, 0xc0, 0x49, 0x5d, 0x60, 0x08, 0x20, 0x80, + 0x6d, 0x00, 0x49, 0x5c, 0x60, 0x08, 0x20, 0x80, + 0x6d, 0x40, 0x49, 0x5b, 0x60, 0x08, 0x20, 0x80, + 0x6d, 0x80, 0x49, 0x5a, 0x60, 0x08, 0x20, 0x00, + 0x6d, 0x00, 0x49, 0x59, 0x60, 0x08, 0x20, 0x00, + 0x6d, 0x40, 0x49, 0x58, 0x60, 0x08, 0x20, 0x00, + 0x6d, 0x80, 0x49, 0x57, 0x60, 0x08, 0x20, 0x00, + 0x6d, 0xc0, 0x49, 0x56, 0x60, 0x08, 0x20, 0x80, + 0x6a, 0xc0, 0x49, 0x55, 0x60, 0x08, 0x20, 0x80, + 0x6d, 0xc0, 0x49, 0x54, 0x60, 0x08, 0x20, 0x80, + 0x6c, 0xc0, 0x49, 0x53, 0x60, 0x08, 0x20, 0x80, + 0x68, 0x40, 0x49, 0x52, 0x60, 0x08, 0x20, 0x80, + 0x68, 0x80, 0x49, 0x51, 0x60, 0x08, 0x20, 0x80, + 0x68, 0xc0, 0x49, 0x50, 0x60, 0x08, 0x20, 0x80, + 0x69, 0x00, 0x49, 0x4f, 0x60, 0x08, 0x20, 0x80, + 0x69, 0x40, 0x49, 0x4e, 0x60, 0x08, 0x20, 0x80, + 0x69, 0x80, 0x49, 0x4d, 0x60, 0x08, 0x20, 0x80, + 0x69, 0xc0, 0x49, 0x4c, 0x60, 0x08, 0x20, 0x80, + 0x6a, 0x00, 0x49, 0x4b, 0x60, 0x08, 0x20, 0x80, + 0x6a, 0x40, 0x49, 0x4a, 0x60, 0x08, 0x20, 0x80, + 0x6a, 0x80, 0x49, 0x49, 0x60, 0x08, 0x20, 0x00, + 0x6f, 0x00, 0x49, 0x48, 0x60, 0x08, 0x20, 0x00, + 0x6f, 0x40, 0x49, 0x47, 0x60, 0x08, 0x20, 0x80, + 0x6c, 0x40, 0x49, 0x46, 0x60, 0x08, 0x20, 0x80, + 0x6c, 0x80, 0x49, 0x45, 0x60, 0x08, 0x20, 0x80, + 0x6e, 0x40, 0x49, 0x44, 0x60, 0x08, 0x20, 0x80, + 0x6e, 0x80, 0x49, 0x43, 0x60, 0x08, 0x20, 0x00, + 0x49, 0x42, 0x60, 0x08, 0x20, 0x00, 0x49, 0x41, + 0x60, 0x48, 0x48, 0x41, 0x49, 0x3f, 0x60, 0x88, + 0x48, 0x40, 0x49, 0x3e, 0x60, 0xc8, 0x20, 0xff, + 0x30, 0x01, 0x68, 0x40, 0x49, 0x3e, 0x60, 0x08, + 0x20, 0x80, 0x6e, 0xc0, 0x49, 0x3d, 0x60, 0x08, + 0x20, 0x80, 0x6f, 0x00, 0x49, 0x3c, 0x60, 0x08, + 0x20, 0x80, 0x6f, 0x40, 0x49, 0x3b, 0x60, 0x08, + 0x20, 0x80, 0x6f, 0x80, 0x49, 0x3a, 0x60, 0x08, + 0x20, 0x80, 0x6f, 0xc0, 0x49, 0x39, 0x60, 0x08, + 0x20, 0xff, 0x30, 0x01, 0x68, 0x80, 0x49, 0x38, + 0x60, 0x08, 0x47, 0x70, 0x2e, 0x08, 0x5d, 0xc4, + 0x2e, 0x08, 0x5d, 0xc8, 0x64, 0x00, 0x05, 0x00, + 0x2e, 0x08, 0x5d, 0xd0, 0x64, 0x00, 0x00, 0x80, + 0x2e, 0x08, 0x5d, 0xd4, 0x2e, 0x08, 0x5d, 0xcc, + 0x64, 0x00, 0x04, 0x00, 0x2e, 0x08, 0x5d, 0xd8, + 0x9e, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x5d, 0xf0, + 0x9e, 0x00, 0x05, 0x00, 0x2e, 0x08, 0x5d, 0xdc, + 0x2e, 0x08, 0x94, 0xa4, 0x2e, 0x08, 0x94, 0xa8, + 0x2e, 0x08, 0x94, 0xac, 0x2e, 0x08, 0x94, 0xb0, + 0x2e, 0x08, 0x5d, 0xe0, 0x2e, 0x08, 0x5d, 0xe4, + 0x2e, 0x08, 0x5d, 0xf4, 0x2e, 0x08, 0x5d, 0xf8, + 0x2e, 0x08, 0x5d, 0xfc, 0x2e, 0x08, 0x5e, 0x00, + 0x2e, 0x08, 0x5d, 0xe8, 0x2e, 0x08, 0x5d, 0xec, + 0x2e, 0x08, 0x60, 0x74, 0x2e, 0x08, 0x60, 0x78, + 0x2e, 0x08, 0x5e, 0x04, 0x2e, 0x08, 0x5e, 0x08, + 0x2e, 0x08, 0x5e, 0x34, 0x2e, 0x08, 0x5e, 0x0c, + 0x2e, 0x08, 0x5e, 0x10, 0x2e, 0x08, 0x5e, 0x14, + 0x2e, 0x08, 0x5e, 0x18, 0x2e, 0x08, 0x5e, 0x1c, + 0x2e, 0x08, 0x5e, 0x20, 0x2e, 0x08, 0x5e, 0x24, + 0x2e, 0x08, 0x5e, 0x28, 0x2e, 0x08, 0x5e, 0x2c, + 0x2e, 0x08, 0x5e, 0x30, 0x2e, 0x08, 0x5d, 0xb8, + 0x2e, 0x08, 0x5d, 0xbc, 0x2e, 0x08, 0x7c, 0x4c, + 0x2e, 0x08, 0x5e, 0x5c, 0x2e, 0x08, 0x5e, 0x3c, + 0x2e, 0x08, 0x60, 0x7c, 0x2e, 0x08, 0x7c, 0x24, + 0xcc, 0x1f, 0xe0, 0x00, 0xcc, 0x1f, 0xfe, 0x00, + 0x2e, 0x08, 0x5e, 0x48, 0x2e, 0x08, 0x5e, 0x60, + 0x2e, 0x08, 0x5e, 0x40, 0x2e, 0x08, 0x5e, 0x44, + 0x2e, 0x08, 0x7c, 0x48, 0x2e, 0x08, 0x7c, 0x20, + 0x2e, 0x08, 0x5e, 0x50, 0x49, 0x4f, 0x68, 0x0a, + 0x23, 0x04, 0x43, 0x1a, 0x60, 0x0a, 0x21, 0xff, + 0x4a, 0x4d, 0x68, 0x12, 0x32, 0x40, 0x72, 0x11, + 0x21, 0xff, 0x4a, 0x4b, 0x68, 0x12, 0x32, 0x40, + 0x76, 0x11, 0x21, 0xff, 0x4a, 0x48, 0x68, 0x12, + 0x32, 0x60, 0x72, 0x11, 0x21, 0xff, 0x4a, 0x46, + 0x68, 0x12, 0x32, 0x20, 0x72, 0x11, 0x21, 0xff, + 0x4a, 0x43, 0x68, 0x12, 0x32, 0x20, 0x76, 0x11, + 0x21, 0xff, 0x4a, 0x41, 0x68, 0x12, 0x32, 0x60, + 0x76, 0x11, 0x21, 0x00, 0x4a, 0x3e, 0x68, 0x12, + 0x32, 0x40, 0x72, 0x91, 0x21, 0x00, 0x4a, 0x3c, + 0x68, 0x12, 0x32, 0x40, 0x76, 0x91, 0x21, 0x00, + 0x4a, 0x39, 0x68, 0x12, 0x32, 0x60, 0x72, 0x91, + 0x21, 0x00, 0x4a, 0x37, 0x68, 0x12, 0x32, 0x20, + 0x72, 0x91, 0x21, 0x00, 0x4a, 0x34, 0x68, 0x12, + 0x32, 0x20, 0x76, 0x91, 0x21, 0x00, 0x4a, 0x32, + 0x68, 0x12, 0x32, 0x60, 0x76, 0x91, 0x21, 0x00, + 0x4a, 0x2f, 0x68, 0x12, 0x32, 0x80, 0x70, 0xd1, + 0x21, 0x00, 0x4a, 0x2d, 0x68, 0x12, 0x32, 0x80, + 0x70, 0x51, 0x21, 0x00, 0x4a, 0x2a, 0x68, 0x12, + 0x32, 0x80, 0x70, 0x91, 0x21, 0x00, 0x4a, 0x29, + 0x60, 0x11, 0x21, 0x00, 0x4a, 0x28, 0x64, 0x11, + 0x21, 0x03, 0x4a, 0x28, 0x61, 0x11, 0x49, 0x28, + 0x68, 0x0a, 0x4b, 0x28, 0x43, 0x1a, 0x60, 0x0a, + 0x49, 0x26, 0x22, 0x33, 0x06, 0x52, 0x60, 0x51, + 0x21, 0x00, 0x4a, 0x25, 0x70, 0x11, 0x21, 0x00, + 0x4a, 0x23, 0x70, 0x51, 0x21, 0x00, 0x4a, 0x22, + 0x70, 0x91, 0x21, 0x00, 0x4a, 0x20, 0x70, 0xd1, + 0x21, 0x00, 0x4a, 0x1f, 0x71, 0x11, 0x21, 0x00, + 0x4a, 0x1d, 0x71, 0x51, 0x21, 0x00, 0x4a, 0x1c, + 0x71, 0x91, 0x21, 0x00, 0x4a, 0x1a, 0x71, 0xd1, + 0x21, 0x00, 0x4a, 0x19, 0x72, 0x11, 0x21, 0x00, + 0x4a, 0x17, 0x72, 0x51, 0x21, 0x00, 0x4a, 0x16, + 0x72, 0x91, 0x21, 0x00, 0x4a, 0x14, 0x72, 0xd1, + 0x21, 0x00, 0x4a, 0x13, 0x73, 0x11, 0x21, 0xff, + 0x4a, 0x11, 0x70, 0x11, 0x21, 0x00, 0x4a, 0x10, + 0x70, 0x11, 0x21, 0x00, 0x4a, 0x0e, 0x70, 0x51, + 0x20, 0x00, 0x28, 0x20, 0xdb, 0x04, 0xe0, 0x08, + 0x1c, 0x41, 0x06, 0x08, 0x0e, 0x00, 0xe7, 0xf8, + 0x21, 0xff, 0x4a, 0x03, 0x68, 0x12, 0x54, 0x11, + 0xe7, 0xf6, 0x47, 0x70, 0x66, 0x00, 0x01, 0x18, + 0x2e, 0x08, 0x7c, 0x4c, 0x9e, 0x00, 0x0a, 0x00, + 0x9e, 0x00, 0x0a, 0x80, 0x66, 0x00, 0x01, 0x00, + 0x66, 0x00, 0x00, 0x08, 0x23, 0x48, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0x50, 0xb4, 0x80, 0x1c, 0x07, + 0x1c, 0x0a, 0x06, 0x39, 0x0e, 0x09, 0x29, 0x05, + 0xd2, 0x40, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x03, 0x14, 0x07, 0x0d, + 0x13, 0x00, 0x78, 0x10, 0x4b, 0x1f, 0x70, 0x18, + 0xe0, 0x38, 0x78, 0x50, 0x4b, 0x1e, 0x68, 0x1b, + 0x33, 0x80, 0x71, 0x58, 0xe0, 0x32, 0x78, 0x10, + 0x4b, 0x1b, 0x68, 0x1b, 0x33, 0x80, 0x71, 0x18, + 0xe0, 0x2c, 0xe0, 0x2b, 0x78, 0x10, 0x4b, 0x17, + 0x70, 0x18, 0x78, 0x50, 0x4b, 0x15, 0x70, 0x58, + 0x78, 0x90, 0x4b, 0x14, 0x70, 0x98, 0x78, 0xd0, + 0x4b, 0x12, 0x70, 0xd8, 0x79, 0x10, 0x4b, 0x11, + 0x71, 0x18, 0x79, 0x50, 0x4b, 0x0f, 0x71, 0x58, + 0x79, 0x90, 0x4b, 0x0e, 0x71, 0x98, 0x79, 0xd0, + 0x4b, 0x0c, 0x71, 0xd8, 0x7a, 0x10, 0x4b, 0x0b, + 0x72, 0x18, 0x7a, 0x50, 0x4b, 0x09, 0x72, 0x58, + 0x7a, 0x90, 0x4b, 0x08, 0x72, 0x98, 0x7a, 0xd0, + 0x4b, 0x06, 0x72, 0xd8, 0x7b, 0x10, 0x4b, 0x05, + 0x73, 0x18, 0xe0, 0x03, 0x20, 0x4a, 0xbc, 0x80, + 0x47, 0x70, 0xe7, 0xff, 0x20, 0x00, 0xe7, 0xfa, + 0xe7, 0xf9, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0x50, + 0x2e, 0x08, 0x7c, 0x4c, 0xb5, 0xf3, 0x1c, 0x07, + 0x06, 0x3e, 0x0e, 0x36, 0x99, 0x01, 0x06, 0x0c, + 0x0e, 0x24, 0x2e, 0x20, 0xdb, 0x04, 0x20, 0xa2, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2c, 0x02, 0xd0, 0x03, 0x2c, 0x03, 0xd0, 0x01, + 0x2c, 0x04, 0xd1, 0x0b, 0x48, 0xb8, 0x68, 0x00, + 0x30, 0x20, 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x39, + 0x48, 0xb5, 0x68, 0x00, 0x30, 0x20, 0x7e, 0x80, + 0x28, 0x00, 0xd1, 0x33, 0x2c, 0x00, 0xd1, 0x17, + 0x48, 0xb1, 0x68, 0x00, 0x30, 0x40, 0x7a, 0x80, + 0x28, 0x00, 0xd1, 0x2b, 0x48, 0xae, 0x68, 0x00, + 0x30, 0x40, 0x7e, 0x80, 0x28, 0x00, 0xd1, 0x25, + 0x48, 0xab, 0x68, 0x00, 0x30, 0x60, 0x7a, 0x80, + 0x28, 0x00, 0xd1, 0x1f, 0x48, 0xa8, 0x68, 0x00, + 0x30, 0x20, 0x7e, 0x80, 0x28, 0x00, 0xd1, 0x19, + 0x2c, 0x01, 0xd1, 0x19, 0x48, 0xa4, 0x68, 0x00, + 0x30, 0x40, 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x11, + 0x48, 0xa1, 0x68, 0x00, 0x30, 0x40, 0x7e, 0x80, + 0x28, 0x00, 0xd1, 0x0b, 0x48, 0x9e, 0x68, 0x00, + 0x30, 0x60, 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x05, + 0x48, 0x9b, 0x68, 0x00, 0x30, 0x20, 0x7a, 0x80, + 0x28, 0x00, 0xd0, 0x01, 0x20, 0x49, 0xe7, 0xb3, + 0x48, 0x97, 0x68, 0x00, 0x55, 0x84, 0x2c, 0xff, + 0xd0, 0x73, 0x20, 0x01, 0x49, 0x95, 0x60, 0x48, + 0x2c, 0x05, 0xd2, 0x6f, 0xa3, 0x01, 0x5d, 0x1b, + 0x00, 0x5b, 0x44, 0x9f, 0x02, 0x34, 0x30, 0x30, + 0x30, 0x00, 0x20, 0x02, 0x49, 0x90, 0x61, 0x88, + 0x48, 0x90, 0x6a, 0xc0, 0x49, 0x90, 0x60, 0x08, + 0x48, 0x90, 0x68, 0x01, 0x23, 0x01, 0x07, 0x5b, + 0x43, 0x19, 0x60, 0x01, 0x48, 0x8e, 0x49, 0x8b, + 0x62, 0xc8, 0x48, 0x8c, 0x68, 0x01, 0x4b, 0x8d, + 0x40, 0x19, 0x60, 0x01, 0x20, 0x01, 0x21, 0x31, + 0x06, 0x49, 0x61, 0x88, 0x20, 0x15, 0x21, 0x31, + 0x06, 0x49, 0x61, 0x08, 0x20, 0x0f, 0x21, 0x31, + 0x06, 0x49, 0x61, 0xc8, 0x20, 0x0c, 0x21, 0x31, + 0x06, 0x49, 0x61, 0xc8, 0x20, 0x54, 0x21, 0x31, + 0x06, 0x49, 0x62, 0xc8, 0x20, 0x37, 0x21, 0x31, + 0x06, 0x49, 0x60, 0x88, 0xe0, 0x56, 0x20, 0x00, + 0x49, 0x79, 0x61, 0x88, 0xe0, 0x52, 0x20, 0x01, + 0x49, 0x77, 0x61, 0x88, 0x20, 0x01, 0x49, 0x7c, + 0x62, 0x88, 0x48, 0x7c, 0x78, 0x00, 0x06, 0x80, + 0x0e, 0x80, 0x02, 0x80, 0x49, 0x79, 0x78, 0x49, + 0x07, 0xc9, 0x0d, 0x89, 0x43, 0x08, 0x49, 0x77, + 0x78, 0x89, 0x07, 0xc9, 0x0d, 0xc9, 0x43, 0x08, + 0x49, 0x74, 0x78, 0xc9, 0x07, 0x89, 0x0f, 0x89, + 0x01, 0x89, 0x43, 0x08, 0x49, 0x71, 0x79, 0x09, + 0x07, 0x89, 0x0f, 0x89, 0x01, 0x09, 0x43, 0x08, + 0x49, 0x6e, 0x79, 0x49, 0x07, 0x89, 0x0f, 0x89, + 0x00, 0x89, 0x43, 0x08, 0x49, 0x6b, 0x79, 0x89, + 0x07, 0x89, 0x0f, 0x89, 0x43, 0x08, 0x49, 0x68, + 0x62, 0x08, 0x48, 0x68, 0x79, 0xc0, 0x07, 0xc0, + 0x0e, 0x40, 0x49, 0x66, 0x7a, 0x09, 0x07, 0xc9, + 0xe0, 0x01, 0xe0, 0x21, 0xe0, 0x18, 0x0e, 0xc9, + 0x43, 0x08, 0x49, 0x62, 0x7a, 0x49, 0x07, 0xc9, + 0x0f, 0x09, 0x43, 0x08, 0x49, 0x5f, 0x7a, 0x89, + 0x07, 0xc9, 0x0f, 0x49, 0x43, 0x08, 0x49, 0x5d, + 0x7a, 0xc9, 0x07, 0xc9, 0x0f, 0x89, 0x43, 0x08, + 0x49, 0x5a, 0x7b, 0x09, 0x07, 0xc9, 0x0f, 0xc9, + 0x43, 0x08, 0x49, 0x57, 0x62, 0x48, 0xe0, 0x01, + 0x20, 0x4a, 0xe7, 0x1d, 0x48, 0x51, 0x68, 0x01, + 0x4b, 0x55, 0x40, 0x19, 0x60, 0x01, 0xe0, 0x8f, + 0x48, 0x49, 0x68, 0x00, 0x30, 0x80, 0x78, 0xc0, + 0x28, 0x00, 0xd0, 0x08, 0x22, 0x00, 0xb4, 0x04, + 0x1c, 0x30, 0x23, 0x00, 0x22, 0x00, 0x49, 0x4f, + 0xf7, 0xf4, 0xfc, 0x10, 0xb0, 0x01, 0x20, 0x00, + 0x49, 0x42, 0x60, 0x48, 0x48, 0x45, 0x68, 0x01, + 0x4b, 0x4b, 0x43, 0x19, 0x60, 0x01, 0x48, 0x4a, + 0x21, 0x33, 0x06, 0x49, 0x60, 0x48, 0x48, 0x49, + 0x68, 0x01, 0x23, 0x04, 0x43, 0x19, 0x60, 0x01, + 0x2c, 0x00, 0xd1, 0x0e, 0x48, 0x3c, 0x68, 0x00, + 0x28, 0x00, 0xd0, 0x0a, 0x48, 0x3a, 0x68, 0x00, + 0x49, 0x38, 0x62, 0xc8, 0x20, 0x00, 0x49, 0x38, + 0x60, 0x08, 0x20, 0x00, 0x21, 0x31, 0x06, 0x49, + 0x61, 0x88, 0x20, 0x00, 0x49, 0x30, 0x68, 0x09, + 0x31, 0x80, 0x70, 0x48, 0x20, 0x00, 0x49, 0x2e, + 0x68, 0x09, 0x31, 0x80, 0x70, 0x88, 0x20, 0x00, + 0x49, 0x39, 0x60, 0x08, 0x20, 0x00, 0x49, 0x39, + 0x64, 0x08, 0x20, 0x03, 0x49, 0x2a, 0x61, 0x08, + 0x25, 0x00, 0x2d, 0x20, 0xd3, 0x02, 0xe0, 0x06, + 0x35, 0x01, 0xe7, 0xfa, 0x20, 0xff, 0x49, 0x24, + 0x68, 0x09, 0x55, 0x48, 0xe7, 0xf8, 0x20, 0xff, + 0x49, 0x21, 0x68, 0x09, 0x31, 0x40, 0x72, 0x08, + 0x20, 0xff, 0x49, 0x1f, 0x68, 0x09, 0x31, 0x40, + 0x76, 0x08, 0x20, 0xff, 0x49, 0x1c, 0x68, 0x09, + 0x31, 0x60, 0x72, 0x08, 0x20, 0xff, 0x49, 0x1a, + 0x68, 0x09, 0x31, 0x20, 0x72, 0x08, 0x20, 0xff, + 0x49, 0x17, 0x68, 0x09, 0x31, 0x20, 0x76, 0x08, + 0x20, 0xff, 0x49, 0x15, 0x68, 0x09, 0x31, 0x60, + 0x76, 0x08, 0x20, 0x00, 0x49, 0x12, 0x68, 0x09, + 0x31, 0x40, 0x72, 0x88, 0x20, 0x00, 0x49, 0x10, + 0x68, 0x09, 0x31, 0x40, 0x76, 0x88, 0x20, 0x00, + 0x49, 0x0d, 0x68, 0x09, 0x31, 0x60, 0x72, 0x88, + 0x20, 0x00, 0x49, 0x0b, 0x68, 0x09, 0x31, 0x20, + 0x72, 0x88, 0x20, 0x00, 0x49, 0x08, 0x68, 0x09, + 0x31, 0x20, 0x76, 0x88, 0x20, 0x00, 0x49, 0x06, + 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, 0x20, 0x00, + 0x49, 0x03, 0x68, 0x09, 0x31, 0x80, 0x70, 0xc8, + 0x20, 0x00, 0xe6, 0x85, 0xe6, 0x84, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0x4c, 0x62, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x01, 0x00, 0xa0, 0x00, 0x0d, 0x80, + 0x2e, 0x08, 0x20, 0x10, 0x66, 0x00, 0x00, 0x08, + 0x2e, 0x01, 0x84, 0x8c, 0xdf, 0xff, 0xff, 0xff, + 0x62, 0x01, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0x50, + 0xfc, 0xb7, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, + 0x23, 0x48, 0x00, 0x00, 0x66, 0x00, 0x01, 0x18, + 0x9e, 0x00, 0x0a, 0x00, 0x9e, 0x00, 0x0a, 0x80, + 0xb5, 0xf7, 0x1c, 0x17, 0x98, 0x00, 0x06, 0x02, + 0x0e, 0x12, 0x99, 0x01, 0x06, 0x0d, 0x0e, 0x2d, + 0x48, 0x6a, 0x68, 0x00, 0x5c, 0x81, 0x2a, 0x20, + 0xdb, 0x04, 0x20, 0xa2, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x29, 0xff, 0xd1, 0x01, + 0x20, 0x4b, 0xe7, 0xf7, 0x48, 0x64, 0x69, 0x80, + 0x28, 0x00, 0xd1, 0x03, 0x29, 0x04, 0xd1, 0x01, + 0x20, 0x58, 0xe7, 0xef, 0x48, 0x60, 0x69, 0x80, + 0x28, 0x00, 0xd1, 0x03, 0x29, 0x02, 0xd0, 0x01, + 0x29, 0x03, 0xd1, 0x0b, 0x48, 0x5c, 0x69, 0x80, + 0x28, 0x02, 0xd1, 0x01, 0x29, 0x00, 0xd1, 0x05, + 0x48, 0x59, 0x69, 0x80, 0x28, 0x01, 0xd1, 0x03, + 0x29, 0x01, 0xd0, 0x01, 0x20, 0x4d, 0xe7, 0xd9, + 0x29, 0x02, 0xd1, 0x05, 0x48, 0x53, 0x68, 0x00, + 0x30, 0x40, 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x17, + 0x29, 0x03, 0xd1, 0x05, 0x48, 0x4f, 0x68, 0x00, + 0x30, 0x40, 0x7e, 0x80, 0x28, 0x00, 0xd1, 0x0f, + 0x29, 0x00, 0xd1, 0x05, 0x48, 0x4b, 0x68, 0x00, + 0x30, 0x20, 0x7a, 0x80, 0x28, 0x00, 0xd1, 0x07, + 0x29, 0x01, 0xd1, 0x07, 0x48, 0x47, 0x68, 0x00, + 0x30, 0x20, 0x7e, 0x80, 0x28, 0x00, 0xd0, 0x01, + 0x20, 0x4e, 0xe7, 0xb7, 0x68, 0x78, 0x28, 0x00, + 0xd1, 0x01, 0x20, 0x4c, 0xe7, 0xb2, 0x23, 0x01, + 0x01, 0x08, 0x4e, 0x40, 0x68, 0x36, 0x19, 0x80, + 0x30, 0x20, 0x72, 0x83, 0x2d, 0x01, 0xd1, 0x0b, + 0x20, 0x33, 0x06, 0x40, 0x6e, 0x40, 0x23, 0x0d, + 0x06, 0x9b, 0x1a, 0xc0, 0x00, 0xd3, 0x4e, 0x3b, + 0x68, 0x36, 0x19, 0x9b, 0x60, 0x58, 0xe0, 0x12, + 0x2d, 0x02, 0xd1, 0x0a, 0x48, 0x38, 0x6c, 0xc0, + 0x23, 0x0d, 0x06, 0x9b, 0x1a, 0xc3, 0x00, 0xd0, + 0x4e, 0x34, 0x68, 0x36, 0x19, 0x80, 0x60, 0x43, + 0xe0, 0x05, 0x68, 0x3b, 0x00, 0xd0, 0x4e, 0x31, + 0x68, 0x36, 0x19, 0x80, 0x60, 0x43, 0x68, 0x3b, + 0x01, 0x08, 0x4e, 0x2c, 0x68, 0x36, 0x19, 0x80, + 0x62, 0x03, 0x68, 0x7b, 0x01, 0x08, 0x4e, 0x29, + 0x68, 0x36, 0x19, 0x80, 0x62, 0x43, 0x01, 0x08, + 0x4b, 0x26, 0x68, 0x1b, 0x18, 0xc0, 0x62, 0xc7, + 0x01, 0x08, 0x4b, 0x24, 0x68, 0x1b, 0x18, 0xc0, + 0x30, 0x20, 0x72, 0x45, 0x01, 0x08, 0x4b, 0x21, + 0x68, 0x1b, 0x18, 0xc0, 0x30, 0x20, 0x72, 0x02, + 0x20, 0x00, 0x60, 0x78, 0x20, 0x00, 0x72, 0x78, + 0x20, 0x00, 0x4b, 0x20, 0x60, 0x18, 0x20, 0x00, + 0x4b, 0x1f, 0x64, 0x18, 0x01, 0x08, 0x4b, 0x19, + 0x68, 0x1b, 0x18, 0xc0, 0x6a, 0x40, 0x28, 0xbc, + 0xdd, 0x01, 0x24, 0xbc, 0xe0, 0x04, 0x01, 0x08, + 0x4b, 0x14, 0x68, 0x1b, 0x18, 0xc0, 0x6a, 0x44, + 0x48, 0x18, 0x60, 0x04, 0x29, 0x01, 0xd1, 0x14, + 0x20, 0x01, 0x4b, 0x17, 0x62, 0x98, 0x48, 0x17, + 0x68, 0x03, 0x04, 0x1b, 0x0c, 0x1b, 0x60, 0x03, + 0x48, 0x14, 0x04, 0x23, 0x68, 0x06, 0x43, 0x33, + 0x60, 0x03, 0x48, 0x13, 0x68, 0x06, 0x23, 0x20, + 0x43, 0x33, 0x60, 0x03, 0x20, 0x01, 0x4b, 0x0e, + 0x63, 0x18, 0x48, 0x07, 0x69, 0x80, 0x28, 0x00, + 0xd1, 0x04, 0x48, 0x0e, 0x68, 0x06, 0x23, 0x28, + 0x43, 0x33, 0x60, 0x03, 0x20, 0x00, 0xe7, 0x31, + 0xe7, 0x30, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0x4c, + 0x66, 0x00, 0x01, 0x00, 0x2e, 0x08, 0x5d, 0xdc, + 0x66, 0x00, 0x00, 0x80, 0x9e, 0x00, 0x0a, 0x00, + 0x9e, 0x00, 0x0a, 0x80, 0x62, 0x00, 0x03, 0x00, + 0x62, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x20, + 0x62, 0x01, 0x00, 0x24, 0x64, 0x00, 0x00, 0x60, + 0xb5, 0xf3, 0x1c, 0x0f, 0x98, 0x00, 0x06, 0x06, + 0x0e, 0x36, 0xb0, 0x82, 0x4d, 0x68, 0x49, 0x69, + 0x91, 0x01, 0x48, 0x69, 0x68, 0x00, 0x5d, 0x84, + 0x2e, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x02, + 0xb0, 0x02, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2c, 0xff, 0xd1, 0x02, 0x20, 0x4b, 0xb0, 0x02, + 0xe7, 0xf6, 0x48, 0x62, 0x69, 0x80, 0x28, 0x00, + 0xd1, 0x05, 0x2c, 0x02, 0xd0, 0x03, 0x2c, 0x03, + 0xd0, 0x01, 0x2c, 0x04, 0xd1, 0x0b, 0x48, 0x5d, + 0x69, 0x80, 0x28, 0x02, 0xd1, 0x01, 0x2c, 0x00, + 0xd1, 0x05, 0x48, 0x5a, 0x69, 0x80, 0x28, 0x01, + 0xd1, 0x04, 0x2c, 0x01, 0xd0, 0x02, 0x20, 0x4d, + 0xb0, 0x02, 0xe7, 0xdd, 0x48, 0x54, 0x68, 0x00, + 0x30, 0x60, 0x7e, 0x80, 0x28, 0x00, 0xd0, 0x02, + 0x20, 0x4f, 0xb0, 0x02, 0xe7, 0xd4, 0x48, 0x50, + 0x68, 0x00, 0x30, 0x80, 0x78, 0xc0, 0x28, 0x00, + 0xd0, 0x02, 0x20, 0x50, 0xb0, 0x02, 0xe7, 0xcb, + 0x68, 0x78, 0x28, 0x00, 0xd1, 0x02, 0x20, 0x4c, + 0xb0, 0x02, 0xe7, 0xc5, 0x2c, 0x04, 0xd1, 0x08, + 0x68, 0x79, 0x20, 0xbc, 0xf0, 0x01, 0xff, 0xac, + 0x29, 0x00, 0xd0, 0x02, 0x20, 0x59, 0xb0, 0x02, + 0xe7, 0xba, 0x48, 0x43, 0x68, 0x00, 0x30, 0x80, + 0x78, 0x80, 0x21, 0x01, 0x40, 0x81, 0x48, 0x41, + 0x68, 0x40, 0x40, 0x08, 0x07, 0x80, 0x0f, 0x80, + 0xd0, 0x02, 0x20, 0x51, 0xb0, 0x02, 0xe7, 0xab, + 0x20, 0x33, 0x06, 0x40, 0x6b, 0x80, 0x90, 0x00, + 0x23, 0x04, 0x40, 0x18, 0xd0, 0x02, 0x20, 0x52, + 0xb0, 0x02, 0xe7, 0xa1, 0x2c, 0x00, 0xd1, 0x04, + 0x48, 0x37, 0x68, 0x01, 0x23, 0xfd, 0x40, 0x19, + 0x60, 0x01, 0x20, 0x01, 0x49, 0x32, 0x68, 0x09, + 0x31, 0x60, 0x76, 0x88, 0x68, 0x38, 0x49, 0x30, + 0x68, 0x09, 0x67, 0x08, 0x68, 0x78, 0x49, 0x2e, + 0x68, 0x09, 0x67, 0x48, 0x48, 0x2c, 0x68, 0x00, + 0x67, 0xc7, 0x20, 0x00, 0x49, 0x2a, 0x68, 0x09, + 0x31, 0x60, 0x76, 0x48, 0x48, 0x28, 0x68, 0x00, + 0x30, 0x60, 0x76, 0x06, 0x20, 0x00, 0x60, 0x78, + 0x20, 0x00, 0x72, 0x78, 0x48, 0x24, 0x68, 0x00, + 0x5d, 0x80, 0x28, 0x01, 0xd1, 0x02, 0x20, 0x01, + 0x49, 0x24, 0x62, 0x88, 0x98, 0x00, 0x01, 0x00, + 0x19, 0x45, 0x48, 0x1f, 0x68, 0x00, 0x6f, 0x40, + 0x28, 0xbc, 0xdd, 0x07, 0x48, 0x20, 0x60, 0xa8, + 0x20, 0xbc, 0x49, 0x1b, 0x68, 0x09, 0x31, 0x80, + 0x70, 0x08, 0xe0, 0x0d, 0x48, 0x18, 0x68, 0x00, + 0x6f, 0x40, 0x23, 0x01, 0x07, 0x9b, 0x43, 0x18, + 0x60, 0xa8, 0x48, 0x15, 0x68, 0x00, 0x6f, 0x40, + 0x49, 0x13, 0x68, 0x09, 0x31, 0x80, 0x70, 0x08, + 0x48, 0x11, 0x68, 0x00, 0x30, 0x80, 0x78, 0x80, + 0x00, 0x43, 0x18, 0x18, 0x01, 0x80, 0x99, 0x01, + 0x18, 0x41, 0x91, 0x01, 0x48, 0x0c, 0x68, 0x00, + 0x6f, 0x00, 0x60, 0x28, 0x99, 0x01, 0x1d, 0x08, + 0x60, 0x68, 0x20, 0x01, 0x06, 0x00, 0x60, 0xe8, + 0x99, 0x00, 0x20, 0x01, 0x40, 0x88, 0x21, 0x33, + 0x06, 0x49, 0x63, 0x48, 0x20, 0x00, 0xb0, 0x02, + 0xe7, 0x3a, 0xb0, 0x02, 0xe7, 0x38, 0x00, 0x00, + 0x9e, 0x00, 0x09, 0x80, 0x9e, 0x00, 0x0b, 0x80, + 0x2e, 0x08, 0x7c, 0x4c, 0x66, 0x00, 0x01, 0x00, + 0x62, 0x00, 0x00, 0x1c, 0x62, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0xbc, 0xb5, 0xf3, 0x1c, 0x0f, + 0xb0, 0x81, 0x98, 0x01, 0x06, 0x00, 0x0e, 0x00, + 0x90, 0x00, 0xb0, 0x82, 0x48, 0xf9, 0x68, 0x00, + 0x99, 0x02, 0x5c, 0x44, 0x98, 0x02, 0x28, 0x20, + 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x03, 0xb0, 0x02, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x2c, 0xff, + 0xd1, 0x02, 0x20, 0x4b, 0xb0, 0x03, 0xe7, 0xf6, + 0x48, 0xf1, 0x69, 0x80, 0x28, 0x00, 0xd1, 0x05, + 0x2c, 0x02, 0xd0, 0x03, 0x2c, 0x03, 0xd0, 0x01, + 0x2c, 0x04, 0xd1, 0x0b, 0x48, 0xec, 0x69, 0x80, + 0x28, 0x02, 0xd1, 0x01, 0x2c, 0x00, 0xd1, 0x05, + 0x48, 0xe9, 0x69, 0x80, 0x28, 0x01, 0xd1, 0x04, + 0x2c, 0x01, 0xd0, 0x02, 0x20, 0x4d, 0xb0, 0x03, + 0xe7, 0xdd, 0x48, 0xe4, 0x68, 0x00, 0x30, 0x60, + 0x7e, 0x80, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x4f, + 0xb0, 0x03, 0xe7, 0xd4, 0x68, 0x78, 0x28, 0x00, + 0xd1, 0x02, 0x20, 0x4c, 0xb0, 0x03, 0xe7, 0xce, + 0x2c, 0x04, 0xd1, 0x08, 0x68, 0x79, 0x20, 0xbc, + 0xf0, 0x01, 0xfe, 0xce, 0x29, 0x00, 0xd0, 0x02, + 0x20, 0x59, 0xb0, 0x03, 0xe7, 0xc3, 0x48, 0xd7, + 0x68, 0x00, 0x30, 0x80, 0x78, 0xc0, 0x28, 0x00, + 0xd0, 0x02, 0x20, 0x50, 0xb0, 0x03, 0xe7, 0xba, + 0x2c, 0x00, 0xd1, 0x04, 0x48, 0xd3, 0x68, 0x01, + 0x23, 0xfd, 0x40, 0x19, 0x60, 0x01, 0x48, 0xd2, + 0x68, 0x01, 0x23, 0x8d, 0x05, 0x9b, 0x43, 0x19, + 0x60, 0x01, 0x48, 0xd0, 0x21, 0x33, 0x06, 0x49, + 0x60, 0x48, 0x20, 0x01, 0x49, 0xc9, 0x68, 0x09, + 0x31, 0x60, 0x76, 0x88, 0x68, 0x38, 0x49, 0xc7, + 0x68, 0x09, 0x67, 0x08, 0x68, 0x78, 0x49, 0xc5, + 0x68, 0x09, 0x67, 0x48, 0x48, 0xc3, 0x68, 0x00, + 0x67, 0xc7, 0x20, 0x00, 0x49, 0xc1, 0x68, 0x09, + 0x31, 0x60, 0x76, 0x48, 0x98, 0x02, 0x49, 0xbf, + 0x68, 0x09, 0x31, 0x60, 0x76, 0x08, 0x20, 0x00, + 0x49, 0xbc, 0x68, 0x09, 0x6f, 0xc9, 0x60, 0x48, + 0x20, 0x00, 0x49, 0xba, 0x68, 0x09, 0x6f, 0xc9, + 0x72, 0x48, 0x48, 0xb8, 0x68, 0x00, 0x99, 0x02, + 0x5c, 0x40, 0x28, 0x01, 0xd1, 0x02, 0x20, 0x01, + 0x49, 0xb9, 0x62, 0x88, 0x48, 0xb3, 0x68, 0x00, + 0x30, 0x80, 0x78, 0x81, 0x20, 0x01, 0x40, 0x88, + 0x49, 0xb1, 0x68, 0x49, 0x40, 0x08, 0x07, 0x80, + 0x0f, 0x80, 0xd0, 0x1b, 0x20, 0x00, 0x49, 0xad, + 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, 0x20, 0x51, + 0x49, 0xaa, 0x68, 0x09, 0x6f, 0xc9, 0x72, 0x48, + 0x48, 0xa8, 0x68, 0x00, 0x6f, 0xc0, 0x7a, 0x00, + 0x28, 0xff, 0xd0, 0x07, 0x48, 0xa5, 0x68, 0x00, + 0x6f, 0xc0, 0x7a, 0x01, 0x20, 0x01, 0x40, 0x88, + 0xf0, 0x05, 0xfd, 0x8e, 0x20, 0x51, 0xb0, 0x03, + 0xe7, 0x55, 0xe1, 0x6c, 0x20, 0x33, 0x06, 0x40, + 0x6b, 0x81, 0x91, 0x00, 0x99, 0x00, 0x20, 0x04, + 0x40, 0x08, 0xd0, 0x07, 0x20, 0x04, 0xf0, 0x00, + 0xfc, 0xb3, 0x20, 0x33, 0x06, 0x40, 0x6b, 0x81, + 0x91, 0x00, 0xe7, 0xf3, 0x4d, 0x9d, 0x99, 0x00, + 0x01, 0x08, 0x19, 0x45, 0x48, 0x95, 0x68, 0x00, + 0x6f, 0x40, 0x28, 0xbc, 0xdd, 0x07, 0x48, 0x9a, + 0x60, 0xa8, 0x20, 0xbc, 0x49, 0x91, 0x68, 0x09, + 0x31, 0x80, 0x70, 0x08, 0xe0, 0x0d, 0x48, 0x8f, + 0x68, 0x00, 0x6f, 0x40, 0x23, 0x01, 0x07, 0x9b, + 0x43, 0x18, 0x60, 0xa8, 0x48, 0x8b, 0x68, 0x00, + 0x6f, 0x40, 0x49, 0x8a, 0x68, 0x09, 0x31, 0x80, + 0x70, 0x08, 0x48, 0x90, 0x90, 0x01, 0x48, 0x87, + 0x68, 0x00, 0x30, 0x80, 0x78, 0x80, 0x00, 0x43, + 0x18, 0x18, 0x01, 0x80, 0x99, 0x01, 0x18, 0x40, + 0x90, 0x01, 0x48, 0x82, 0x68, 0x00, 0x6f, 0x00, + 0x60, 0x28, 0x98, 0x01, 0x30, 0x04, 0x60, 0x68, + 0x20, 0x01, 0x06, 0x00, 0x60, 0xe8, 0x99, 0x00, + 0x20, 0x01, 0x40, 0x88, 0x21, 0x33, 0x06, 0x49, + 0x63, 0x48, 0x48, 0x83, 0x6b, 0x00, 0x23, 0x01, + 0x06, 0x1b, 0x40, 0x18, 0xd1, 0x03, 0x20, 0x04, + 0xf0, 0x00, 0xfc, 0x6a, 0xe7, 0xf5, 0x20, 0x01, + 0x06, 0x00, 0x21, 0x33, 0x06, 0x49, 0x60, 0x48, + 0x4e, 0x7c, 0x48, 0x72, 0x68, 0x00, 0x30, 0x80, + 0x78, 0x80, 0x01, 0x00, 0x19, 0x86, 0x98, 0x01, + 0x30, 0x04, 0x60, 0x30, 0x48, 0x78, 0x60, 0x70, + 0x48, 0x6c, 0x68, 0x00, 0x30, 0x80, 0x78, 0x00, + 0x23, 0x01, 0x07, 0x9b, 0x43, 0x18, 0x60, 0xb0, + 0x20, 0x01, 0x05, 0x80, 0x60, 0xf0, 0x48, 0x67, + 0x68, 0x00, 0x30, 0x80, 0x78, 0x81, 0x20, 0x01, + 0x40, 0x88, 0x49, 0x65, 0x60, 0xc8, 0x48, 0x63, + 0x68, 0x00, 0x30, 0x60, 0x7e, 0x00, 0x49, 0x61, + 0x68, 0x09, 0x5c, 0x08, 0x28, 0x00, 0xd0, 0x48, + 0x28, 0x01, 0xd0, 0x47, 0x28, 0x02, 0xd0, 0x02, + 0x28, 0x03, 0xd0, 0x21, 0xe0, 0x5a, 0x48, 0x67, + 0x68, 0x01, 0x23, 0x02, 0x43, 0x19, 0x60, 0x01, + 0x48, 0x58, 0x68, 0x00, 0x6f, 0x40, 0x49, 0x57, + 0x68, 0x09, 0x31, 0x80, 0x78, 0x09, 0x1a, 0x40, + 0x28, 0xbc, 0xd8, 0x05, 0x48, 0x5f, 0x68, 0x01, + 0x23, 0x10, 0x43, 0x19, 0x60, 0x01, 0xe0, 0x05, + 0x48, 0x5c, 0x68, 0x01, 0x23, 0x10, 0x43, 0xdb, + 0x40, 0x19, 0x60, 0x01, 0x48, 0x59, 0x68, 0x01, + 0x23, 0x08, 0x43, 0x19, 0x60, 0x01, 0xe0, 0x39, + 0x48, 0x56, 0x68, 0x01, 0x23, 0x04, 0x43, 0x19, + 0x60, 0x01, 0x48, 0x48, 0x68, 0x00, 0x6f, 0x40, + 0x49, 0x46, 0x68, 0x09, 0x31, 0x80, 0x78, 0x09, + 0x1a, 0x40, 0x28, 0xbc, 0xd8, 0x05, 0x48, 0x4f, + 0x68, 0x01, 0x23, 0x10, 0x43, 0x19, 0x60, 0x01, + 0xe0, 0x05, 0x48, 0x4c, 0x68, 0x01, 0x23, 0x10, + 0x43, 0xdb, 0x40, 0x19, 0x60, 0x01, 0x48, 0x49, + 0x68, 0x01, 0x23, 0x08, 0x43, 0x19, 0x60, 0x01, + 0xe0, 0x18, 0xe0, 0x17, 0x48, 0x46, 0x68, 0x01, + 0x04, 0x09, 0x0c, 0x09, 0x60, 0x01, 0x48, 0x44, + 0x49, 0x36, 0x68, 0x09, 0x31, 0x80, 0x78, 0x09, + 0x04, 0x09, 0x68, 0x02, 0x43, 0x11, 0x60, 0x01, + 0x48, 0x40, 0x68, 0x01, 0x23, 0x20, 0x43, 0xdb, + 0x40, 0x19, 0x60, 0x01, 0x20, 0x01, 0x49, 0x34, + 0x63, 0x08, 0xe7, 0xff, 0x48, 0x36, 0x6b, 0x00, + 0x23, 0x01, 0x05, 0x9b, 0x40, 0x18, 0xd1, 0x03, + 0x20, 0x04, 0xf0, 0x00, 0xfb, 0xd1, 0xe7, 0xf5, + 0x20, 0x01, 0x05, 0x80, 0x21, 0x33, 0x06, 0x49, + 0x60, 0x48, 0x48, 0x26, 0x68, 0x00, 0x30, 0x80, + 0x78, 0x80, 0x23, 0x01, 0x40, 0x58, 0x49, 0x23, + 0x68, 0x09, 0x31, 0x80, 0x70, 0x88, 0x48, 0x21, + 0x68, 0x00, 0x6f, 0x40, 0x49, 0x1f, 0x68, 0x09, + 0x31, 0x80, 0x78, 0x09, 0x1a, 0x40, 0x49, 0x1d, + 0x68, 0x09, 0x67, 0x48, 0x48, 0x1b, 0x68, 0x00, + 0x6f, 0xc0, 0x30, 0x04, 0x49, 0x19, 0x68, 0x09, + 0x31, 0x80, 0x78, 0x09, 0x68, 0x02, 0x18, 0x89, + 0x60, 0x01, 0x48, 0x16, 0x68, 0x00, 0x6f, 0x00, + 0x49, 0x14, 0x68, 0x09, 0x31, 0x80, 0x78, 0x09, + 0x18, 0x40, 0x49, 0x12, 0x68, 0x09, 0x67, 0x08, + 0x48, 0x10, 0x68, 0x00, 0x6f, 0x40, 0x28, 0x00, + 0xd0, 0x00, 0xe6, 0xb3, 0x48, 0x11, 0x21, 0x33, + 0x06, 0x49, 0x60, 0x48, 0x48, 0x0e, 0x68, 0x01, + 0x4b, 0x19, 0x40, 0x19, 0x60, 0x01, 0x20, 0x48, + 0x49, 0x08, 0x68, 0x09, 0x6f, 0xc9, 0x72, 0x48, + 0x20, 0x00, 0x49, 0x06, 0x68, 0x09, 0x31, 0x60, + 0x76, 0x88, 0x48, 0x04, 0x68, 0x00, 0x6f, 0xc0, + 0x7a, 0x00, 0x28, 0xff, 0xd0, 0x29, 0x48, 0x01, + 0xe0, 0x20, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0x4c, + 0x66, 0x00, 0x01, 0x00, 0x62, 0x00, 0x00, 0x1c, + 0x66, 0x00, 0x00, 0x08, 0x23, 0x48, 0x00, 0x00, + 0x62, 0x01, 0x00, 0x00, 0x9e, 0x00, 0x09, 0x80, + 0x40, 0x00, 0x00, 0xbc, 0x9e, 0x00, 0x0b, 0x80, + 0x66, 0x00, 0x00, 0x80, 0x9e, 0x00, 0x09, 0xc0, + 0x66, 0x00, 0x01, 0xf0, 0x64, 0x00, 0x00, 0x60, + 0x62, 0x01, 0x00, 0x20, 0x62, 0x01, 0x00, 0x24, + 0xfc, 0xb7, 0xff, 0xff, 0x68, 0x00, 0x6f, 0xc0, + 0x7a, 0x01, 0x20, 0x01, 0x40, 0x88, 0xf0, 0x05, + 0xfc, 0x23, 0x20, 0x00, 0xb0, 0x03, 0xe5, 0xea, + 0xb0, 0x02, 0xb0, 0x01, 0xe5, 0xe7, 0xe5, 0xe6, + 0xb5, 0xb0, 0x1c, 0x07, 0x06, 0x3d, 0x0e, 0x2d, + 0x48, 0x5d, 0x68, 0x00, 0x5d, 0x44, 0x2d, 0x20, + 0xdb, 0x03, 0x20, 0xa2, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x48, 0x59, 0x68, 0x00, 0x5d, 0x40, + 0x28, 0xff, 0xd1, 0x01, 0x20, 0x4b, 0xe7, 0xf5, + 0x48, 0x56, 0x69, 0x80, 0x28, 0x00, 0xd1, 0x05, + 0x2c, 0x02, 0xd0, 0x03, 0x2c, 0x03, 0xd0, 0x01, + 0x2c, 0x04, 0xd1, 0x0b, 0x48, 0x51, 0x69, 0x80, + 0x28, 0x02, 0xd1, 0x01, 0x2c, 0x00, 0xd1, 0x05, + 0x48, 0x4e, 0x69, 0x80, 0x28, 0x01, 0xd1, 0x04, + 0x2c, 0x01, 0xd0, 0x02, 0x20, 0x4d, 0xe7, 0xdd, + 0xe0, 0x90, 0x48, 0x4b, 0x68, 0x01, 0x4b, 0x4b, + 0x43, 0x19, 0x60, 0x01, 0x48, 0x49, 0x21, 0x33, + 0x06, 0x49, 0x60, 0x48, 0x48, 0x48, 0x68, 0x01, + 0x23, 0x04, 0x43, 0x19, 0x60, 0x01, 0x20, 0x00, + 0x49, 0x41, 0x68, 0x09, 0x31, 0x80, 0x70, 0x88, + 0x20, 0x00, 0x49, 0x3f, 0x68, 0x09, 0x31, 0x80, + 0x70, 0x48, 0x20, 0xff, 0x49, 0x3c, 0x68, 0x09, + 0x55, 0x48, 0x2c, 0x00, 0xd1, 0x03, 0x20, 0x18, + 0x21, 0x31, 0x06, 0x49, 0x62, 0x48, 0x01, 0x20, + 0x49, 0x37, 0x68, 0x09, 0x18, 0x40, 0x30, 0x20, + 0x7a, 0x80, 0x28, 0x00, 0xd0, 0x28, 0x20, 0x00, + 0x49, 0x38, 0x60, 0x08, 0x20, 0x00, 0x49, 0x38, + 0x64, 0x08, 0x20, 0x03, 0x49, 0x31, 0x61, 0x08, + 0x21, 0x55, 0x01, 0x20, 0x4a, 0x2e, 0x68, 0x12, + 0x18, 0x80, 0x6a, 0xc0, 0x72, 0x41, 0x21, 0x00, + 0x01, 0x20, 0x4a, 0x2b, 0x68, 0x12, 0x18, 0x80, + 0x30, 0x20, 0x72, 0x81, 0x01, 0x20, 0x49, 0x28, + 0x68, 0x09, 0x18, 0x40, 0x6a, 0xc0, 0x7a, 0x00, + 0x28, 0xff, 0xd0, 0x09, 0x01, 0x20, 0x49, 0x24, + 0x68, 0x09, 0x18, 0x40, 0x6a, 0xc0, 0x7a, 0x01, + 0x20, 0x01, 0x40, 0x88, 0xf0, 0x05, 0xfb, 0x9c, + 0x48, 0x1f, 0x68, 0x00, 0x30, 0x60, 0x7e, 0x80, + 0x28, 0x00, 0xd0, 0x2b, 0x48, 0x1c, 0x68, 0x00, + 0x30, 0x80, 0x78, 0xc0, 0x28, 0x00, 0xd0, 0x0d, + 0x20, 0x00, 0x49, 0x19, 0x68, 0x09, 0x31, 0x80, + 0x70, 0xc8, 0x22, 0x00, 0xb4, 0x04, 0x1c, 0x28, + 0x23, 0x00, 0x22, 0x00, 0x49, 0x1b, 0xf7, 0xf3, + 0xfe, 0xcd, 0xb0, 0x01, 0x20, 0x55, 0x49, 0x12, + 0x68, 0x09, 0x6f, 0xc9, 0x72, 0x48, 0x20, 0x00, + 0x49, 0x0f, 0x68, 0x09, 0x31, 0x60, 0x76, 0x88, + 0x48, 0x0d, 0x68, 0x00, 0x6f, 0xc0, 0x7a, 0x00, + 0x28, 0xff, 0xd0, 0x07, 0x48, 0x0a, 0x68, 0x00, + 0x6f, 0xc0, 0x7a, 0x01, 0x20, 0x01, 0x40, 0x88, + 0xf0, 0x05, 0xfb, 0x6a, 0x48, 0x09, 0x21, 0x33, + 0x06, 0x49, 0x60, 0x48, 0x48, 0x06, 0x68, 0x01, + 0x4b, 0x0b, 0x40, 0x19, 0x60, 0x01, 0x20, 0x00, + 0xe7, 0x4c, 0xe7, 0x4b, 0xe7, 0x4a, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0x4c, 0x66, 0x00, 0x01, 0x00, + 0x66, 0x00, 0x00, 0x08, 0x23, 0x48, 0x00, 0x00, + 0x66, 0x00, 0x01, 0x18, 0x9e, 0x00, 0x0a, 0x00, + 0x9e, 0x00, 0x0a, 0x80, 0x00, 0x00, 0xff, 0xff, + 0xfc, 0xb7, 0xff, 0xff, 0xb5, 0xff, 0x1c, 0x1f, + 0x98, 0x00, 0x06, 0x02, 0x0e, 0x12, 0x99, 0x01, + 0x06, 0x0d, 0x0e, 0x2d, 0x98, 0x02, 0x06, 0x04, + 0x0e, 0x24, 0x48, 0x2d, 0x68, 0x00, 0x5c, 0x81, + 0x2a, 0x20, 0xdb, 0x04, 0x20, 0xa2, 0xb0, 0x04, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x29, 0xff, + 0xd1, 0x01, 0x20, 0x4b, 0xe7, 0xf7, 0x48, 0x27, + 0x69, 0x80, 0x28, 0x00, 0xd1, 0x05, 0x29, 0x02, + 0xd0, 0x03, 0x29, 0x03, 0xd0, 0x01, 0x29, 0x04, + 0xd1, 0x0b, 0x48, 0x22, 0x69, 0x80, 0x28, 0x02, + 0xd1, 0x01, 0x29, 0x00, 0xd1, 0x05, 0x48, 0x1f, + 0x69, 0x80, 0x28, 0x01, 0xd1, 0x03, 0x29, 0x01, + 0xd0, 0x01, 0x20, 0x4d, 0xe7, 0xdf, 0x29, 0x05, + 0xd2, 0x2a, 0xa3, 0x02, 0x5c, 0x5b, 0x00, 0x5b, + 0x44, 0x9f, 0x1c, 0x00, 0x03, 0x07, 0x04, 0x05, + 0x06, 0x00, 0xe0, 0x24, 0xe0, 0x23, 0xe0, 0x22, + 0xe0, 0x21, 0x01, 0x08, 0x4b, 0x12, 0x68, 0x1b, + 0x18, 0xc0, 0x30, 0x20, 0x7a, 0x80, 0x28, 0x00, + 0xd1, 0x05, 0x48, 0x0f, 0x68, 0x00, 0x30, 0x60, + 0x7e, 0x80, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x49, + 0xe7, 0xc1, 0xe0, 0x13, 0x2d, 0x00, 0xd1, 0x05, + 0x00, 0xa0, 0x4b, 0x0b, 0x18, 0xc0, 0x68, 0x00, + 0x60, 0x38, 0xe0, 0x04, 0x68, 0x38, 0x00, 0xa6, + 0x4b, 0x07, 0x18, 0xf3, 0x60, 0x18, 0xe0, 0x02, + 0x20, 0x4a, 0xe7, 0xb0, 0xe7, 0xff, 0x20, 0x00, + 0xe7, 0xad, 0xe7, 0xac, 0xe7, 0xab, 0x00, 0x00, + 0x2e, 0x08, 0x7c, 0x4c, 0x66, 0x00, 0x01, 0x00, + 0x62, 0x01, 0x00, 0x80, 0xb5, 0xf7, 0xb0, 0x82, + 0x98, 0x02, 0x06, 0x03, 0x0e, 0x1b, 0x93, 0x00, + 0x99, 0x03, 0x06, 0x08, 0x0e, 0x00, 0x90, 0x01, + 0x9a, 0x04, 0x06, 0x15, 0x0e, 0x2d, 0xb0, 0x84, + 0x4a, 0xca, 0x4f, 0xcb, 0x48, 0xcb, 0x68, 0x00, + 0x9b, 0x04, 0x5c, 0xc4, 0x48, 0xca, 0x90, 0x02, + 0x21, 0x00, 0x23, 0x00, 0x93, 0x01, 0x9b, 0x04, + 0x2b, 0x20, 0xdb, 0x05, 0x20, 0xa2, 0xb0, 0x06, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2c, 0xff, 0xd1, 0x02, 0x20, 0x4b, 0xb0, 0x06, + 0xe7, 0xf6, 0x48, 0xc2, 0x69, 0x80, 0x28, 0x02, + 0xd1, 0x01, 0x2c, 0x00, 0xd1, 0x03, 0x48, 0xbf, + 0x69, 0x80, 0x28, 0x02, 0xd0, 0x02, 0x20, 0x4d, + 0xb0, 0x06, 0xe7, 0xe9, 0x98, 0x05, 0x28, 0x01, + 0xd1, 0x08, 0x48, 0xb8, 0x68, 0x00, 0x30, 0x80, + 0x78, 0xc0, 0x28, 0x00, 0xd0, 0x02, 0x20, 0x50, + 0xb0, 0x06, 0xe7, 0xdd, 0x98, 0x05, 0x28, 0x00, + 0xd1, 0x05, 0x48, 0xb2, 0x68, 0x00, 0x30, 0x20, + 0x7a, 0x80, 0x28, 0x00, 0xd0, 0x08, 0x98, 0x05, + 0x28, 0x01, 0xd1, 0x08, 0x48, 0xad, 0x68, 0x00, + 0x30, 0x60, 0x7e, 0x80, 0x28, 0x00, 0xd1, 0x02, + 0x20, 0x5a, 0xb0, 0x06, 0xe7, 0xc8, 0x20, 0x00, + 0x4b, 0xa8, 0x68, 0x1b, 0x6f, 0xdb, 0x72, 0x58, + 0x98, 0x05, 0x28, 0x00, 0xd1, 0x50, 0x2d, 0x01, + 0xd0, 0x01, 0x2d, 0x02, 0xd1, 0x32, 0x4e, 0xa6, + 0x68, 0x30, 0x23, 0x01, 0x04, 0xdb, 0x43, 0x18, + 0x60, 0x30, 0x20, 0x00, 0x4b, 0xa3, 0x60, 0x18, + 0x48, 0x9e, 0x68, 0x00, 0x30, 0x80, 0x78, 0x40, + 0x00, 0x43, 0x18, 0x18, 0x01, 0x80, 0x9b, 0x02, + 0x18, 0xc0, 0x90, 0x02, 0x98, 0x02, 0x68, 0x01, + 0x48, 0x9a, 0x69, 0x80, 0x07, 0x80, 0x0f, 0x80, + 0x01, 0x80, 0x43, 0x01, 0x23, 0x20, 0x43, 0x19, + 0x4b, 0x99, 0x43, 0x19, 0x98, 0x02, 0x60, 0x01, + 0x4e, 0x98, 0x68, 0x30, 0x23, 0x01, 0x04, 0xdb, + 0x43, 0x18, 0x60, 0x30, 0x4e, 0x92, 0x68, 0x30, + 0x4b, 0x95, 0x40, 0x18, 0x60, 0x30, 0x2c, 0x00, + 0xd1, 0x04, 0x20, 0x00, 0x4b, 0x8b, 0x68, 0x1b, + 0x33, 0x20, 0x72, 0x98, 0x2d, 0x02, 0xd0, 0x04, + 0x20, 0x01, 0x04, 0xc0, 0x23, 0x33, 0x06, 0x5b, + 0x60, 0x18, 0x2c, 0x00, 0xd1, 0x0f, 0x20, 0xff, + 0x02, 0x00, 0x40, 0x08, 0xd1, 0x0b, 0x2d, 0x02, + 0xd0, 0x09, 0x48, 0x82, 0x68, 0x00, 0x30, 0x80, + 0x78, 0x40, 0x23, 0x01, 0x40, 0x58, 0x4b, 0x7f, + 0x68, 0x1b, 0x33, 0x80, 0x70, 0x58, 0xe0, 0xed, + 0x2d, 0x01, 0xd1, 0x73, 0x2c, 0x00, 0xd1, 0x72, + 0x20, 0x31, 0x06, 0x40, 0x68, 0x80, 0x23, 0x08, + 0x40, 0x18, 0xd1, 0x3a, 0x48, 0x7a, 0x68, 0x06, + 0x23, 0x05, 0x05, 0x9b, 0x43, 0x33, 0x60, 0x03, + 0x68, 0x10, 0x4b, 0x7c, 0x40, 0x18, 0x60, 0x10, + 0x32, 0xc0, 0x68, 0x10, 0x4b, 0x79, 0x40, 0x18, + 0x60, 0x10, 0x20, 0x00, 0x4b, 0x6f, 0x68, 0x1b, + 0x67, 0x58, 0x20, 0x00, 0x4b, 0x6d, 0x68, 0x1b, + 0x33, 0x80, 0x70, 0x18, 0x48, 0x6d, 0x68, 0x80, + 0x23, 0x02, 0x40, 0x18, 0xd1, 0x04, 0x20, 0x00, + 0x4b, 0x68, 0x68, 0x1b, 0x33, 0x60, 0x76, 0x98, + 0x20, 0x5b, 0x4b, 0x66, 0x68, 0x1b, 0x6f, 0xdb, + 0x72, 0x58, 0x4e, 0x6d, 0x68, 0x30, 0x23, 0x02, + 0x43, 0x18, 0x60, 0x30, 0x4e, 0x67, 0x68, 0x30, + 0x23, 0x05, 0x05, 0x9b, 0x43, 0x18, 0x60, 0x30, + 0x4e, 0x61, 0x68, 0x30, 0x4b, 0x67, 0x40, 0x18, + 0x60, 0x30, 0x20, 0x5b, 0xb0, 0x06, 0xe7, 0x2b, + 0xe0, 0xae, 0x48, 0x5d, 0x68, 0x06, 0x23, 0x01, + 0x05, 0x9b, 0x43, 0x33, 0x60, 0x03, 0x20, 0x31, + 0x06, 0x40, 0x6a, 0x00, 0x23, 0x04, 0x40, 0x18, + 0xd1, 0x27, 0x9b, 0x01, 0x20, 0x31, 0x06, 0x40, + 0x6b, 0x00, 0x18, 0x1b, 0x93, 0x01, 0x4e, 0x5c, + 0x68, 0x30, 0x23, 0x3b, 0x40, 0x18, 0x60, 0x30, + 0x4e, 0x57, 0x68, 0x30, 0x23, 0x0e, 0x43, 0x18, + 0x60, 0x30, 0x4e, 0x55, 0x68, 0x30, 0x23, 0x0c, + 0x40, 0x18, 0x60, 0x30, 0x20, 0x37, 0x23, 0x31, + 0x06, 0x5b, 0x60, 0x98, 0x20, 0x01, 0x90, 0x00, + 0x98, 0x00, 0x28, 0x64, 0xd3, 0x04, 0xe0, 0x07, + 0x98, 0x00, 0x30, 0x01, 0x90, 0x00, 0xe7, 0xf7, + 0xe7, 0xfa, 0xe0, 0x01, 0xe0, 0x36, 0xe0, 0x34, + 0xe7, 0xd1, 0x4e, 0x46, 0x68, 0x30, 0x23, 0x01, + 0x05, 0x9b, 0x43, 0x18, 0x60, 0x30, 0x4e, 0x40, + 0x68, 0x30, 0x4b, 0x48, 0x40, 0x18, 0x60, 0x30, + 0x48, 0x3c, 0x68, 0x40, 0x28, 0x00, 0xd0, 0x0d, + 0x20, 0x5b, 0x4b, 0x38, 0x68, 0x1b, 0x6f, 0xdb, + 0x72, 0x58, 0x20, 0x00, 0x4b, 0x35, 0x68, 0x1b, + 0x33, 0x60, 0x76, 0x98, 0x20, 0x5b, 0xb0, 0x06, + 0xe6, 0xda, 0xe0, 0x5d, 0x48, 0x31, 0x68, 0x00, + 0x6f, 0xc0, 0x1d, 0x06, 0x48, 0x2f, 0x68, 0x00, + 0x30, 0x80, 0x78, 0x00, 0x9b, 0x01, 0x1a, 0xc0, + 0x68, 0x33, 0x18, 0xc0, 0x60, 0x30, 0x20, 0x5c, + 0x4b, 0x2a, 0x68, 0x1b, 0x6f, 0xdb, 0x72, 0x58, + 0x20, 0x00, 0x4b, 0x28, 0x68, 0x1b, 0x33, 0x60, + 0x76, 0x98, 0xe0, 0x3f, 0x20, 0x33, 0x06, 0x40, + 0x6b, 0x80, 0x90, 0x03, 0x23, 0x04, 0x40, 0x18, + 0xd0, 0x03, 0x20, 0x52, 0xb0, 0x06, 0xe6, 0xb7, + 0xe0, 0x3a, 0x98, 0x03, 0x01, 0x00, 0x19, 0xc7, + 0x48, 0x1e, 0x68, 0x00, 0x6f, 0x40, 0x28, 0xbc, + 0xdd, 0x07, 0x48, 0x29, 0x60, 0xb8, 0x20, 0xbc, + 0x4b, 0x1a, 0x68, 0x1b, 0x33, 0x80, 0x70, 0x18, + 0xe0, 0x0d, 0x48, 0x18, 0x68, 0x00, 0x6f, 0x40, + 0x23, 0x01, 0x07, 0x9b, 0x43, 0x18, 0x60, 0xb8, + 0x48, 0x14, 0x68, 0x00, 0x6f, 0x40, 0x4b, 0x13, + 0x68, 0x1b, 0x33, 0x80, 0x70, 0x18, 0x48, 0x11, + 0x68, 0x00, 0x30, 0x80, 0x78, 0x80, 0x00, 0x43, + 0x18, 0x18, 0x01, 0x80, 0x18, 0x82, 0x48, 0x0d, + 0x68, 0x00, 0x6f, 0x00, 0x60, 0x38, 0x1d, 0x10, + 0x60, 0x78, 0x20, 0x01, 0x06, 0x00, 0x60, 0xf8, + 0x9e, 0x03, 0x20, 0x01, 0x40, 0xb0, 0x23, 0x33, + 0x06, 0x5b, 0x63, 0x58, 0x20, 0x00, 0xb0, 0x06, + 0xe6, 0x7e, 0xb0, 0x04, 0xb0, 0x02, 0xe6, 0x7b, + 0xe6, 0x7a, 0x00, 0x00, 0x9e, 0x00, 0x0b, 0x80, + 0x9e, 0x00, 0x09, 0x80, 0x2e, 0x08, 0x7c, 0x4c, + 0x9e, 0x00, 0x0a, 0x00, 0x66, 0x00, 0x01, 0x00, + 0x66, 0x00, 0x00, 0x08, 0x62, 0x00, 0x03, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x04, + 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, + 0x62, 0x00, 0x00, 0x1c, 0xfe, 0xbf, 0xff, 0xff, + 0x62, 0x00, 0x00, 0x08, 0xff, 0xbf, 0xff, 0xff, + 0x40, 0x00, 0x00, 0xbc, 0x48, 0x07, 0x69, 0x80, + 0x28, 0x02, 0xd0, 0x03, 0x48, 0x05, 0x69, 0x80, + 0x28, 0x03, 0xd1, 0x04, 0x20, 0x31, 0x06, 0x40, + 0x6a, 0x80, 0x47, 0x70, 0xe0, 0x01, 0x20, 0x00, + 0xe7, 0xfb, 0xe7, 0xfa, 0x66, 0x00, 0x01, 0x00, + 0xb5, 0xb0, 0x27, 0x0f, 0x20, 0x31, 0x06, 0x40, + 0x68, 0xc0, 0x09, 0x05, 0xf7, 0xff, 0xff, 0xe6, + 0x43, 0xc4, 0x48, 0x18, 0x69, 0x80, 0x28, 0x00, + 0xd0, 0x03, 0x48, 0x16, 0x69, 0x80, 0x28, 0x01, + 0xd1, 0x03, 0x1c, 0x38, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x2d, 0x09, 0xd2, 0x1e, 0xa3, 0x02, + 0x5d, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x07, 0x07, 0x07, + 0x0e, 0x00, 0x1c, 0x2f, 0xe0, 0x13, 0x20, 0x08, + 0x40, 0x20, 0xd0, 0x01, 0x1c, 0x2f, 0xe0, 0x00, + 0x27, 0x02, 0xe0, 0x0c, 0x20, 0x08, 0x40, 0x20, + 0xd0, 0x06, 0x20, 0x02, 0x40, 0x20, 0xd0, 0x01, + 0x27, 0x07, 0xe0, 0x00, 0x27, 0x08, 0xe0, 0x00, + 0x27, 0x02, 0xe0, 0x00, 0xe7, 0xff, 0x1c, 0x38, + 0xe7, 0xd8, 0xe7, 0xd7, 0x66, 0x00, 0x01, 0x00, + 0x1c, 0x01, 0x29, 0x07, 0xd2, 0x0f, 0xa3, 0x02, + 0x5c, 0x5b, 0x00, 0x5b, 0x44, 0x9f, 0x1c, 0x00, + 0x04, 0x05, 0x06, 0x09, 0x08, 0x07, 0x0a, 0x00, + 0xe0, 0x06, 0xe0, 0x05, 0xe0, 0x04, 0xe0, 0x03, + 0xe0, 0x02, 0xe0, 0x01, 0xe0, 0x00, 0xe7, 0xff, + 0x20, 0x00, 0x47, 0x70, 0xe7, 0xfd, 0x00, 0x00, + 0x20, 0x1d, 0x02, 0x80, 0x69, 0x80, 0x49, 0x06, + 0x60, 0x08, 0x20, 0x1d, 0x02, 0x80, 0x69, 0x40, + 0x49, 0x04, 0x60, 0x08, 0x20, 0x1d, 0x02, 0x80, + 0x69, 0xc0, 0x49, 0x03, 0x60, 0x08, 0x47, 0x70, + 0x2e, 0x08, 0x94, 0x98, 0x2e, 0x08, 0x94, 0x9c, + 0x2e, 0x08, 0x94, 0xa0, 0xb5, 0xf1, 0xb0, 0x81, + 0x20, 0x00, 0x4d, 0x21, 0x95, 0x00, 0x21, 0x00, + 0x22, 0x00, 0x23, 0x00, 0x43, 0xdb, 0x4c, 0x1f, + 0x68, 0x64, 0x42, 0x8c, 0xdd, 0x21, 0x1c, 0x0c, + 0x31, 0x01, 0x00, 0xa4, 0x9d, 0x00, 0x59, 0x2f, + 0x42, 0x9f, 0xd0, 0xf8, 0x4c, 0x19, 0x68, 0x64, + 0x42, 0x8c, 0xda, 0x00, 0xe0, 0x15, 0x32, 0x01, + 0x1c, 0x0c, 0x31, 0x01, 0x00, 0xa4, 0x9d, 0x00, + 0x59, 0x2b, 0x42, 0x9f, 0xd0, 0xf8, 0x02, 0x9c, + 0x43, 0x3c, 0x1c, 0x25, 0x1c, 0x04, 0x30, 0x01, + 0x00, 0xa4, 0x9e, 0x01, 0x51, 0x35, 0x4c, 0x0f, + 0x68, 0x64, 0x42, 0x8c, 0xdb, 0x00, 0x32, 0x01, + 0xe7, 0xd9, 0x28, 0x08, 0xd3, 0x02, 0xe0, 0x07, + 0x30, 0x01, 0xe7, 0xfa, 0x25, 0x00, 0x43, 0xed, + 0x00, 0x84, 0x9e, 0x01, 0x51, 0x35, 0xe7, 0xf7, + 0x4c, 0x07, 0x68, 0x24, 0x2c, 0x00, 0xd1, 0x02, + 0x24, 0x0d, 0x06, 0xe4, 0x61, 0x22, 0xb0, 0x01, + 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x7c, 0xd4, 0x2e, 0x08, 0x7d, 0x9c, + 0x2e, 0x08, 0x94, 0x8c, 0xb5, 0x80, 0x48, 0xdc, + 0x68, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x48, 0xda, + 0x68, 0x00, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0xf7, 0xff, 0xff, 0x92, 0x48, 0xd7, 0x49, 0xd8, + 0x60, 0x08, 0x48, 0xd8, 0x49, 0xd8, 0x60, 0x08, + 0x48, 0xd8, 0x49, 0xd9, 0x60, 0x08, 0x48, 0xd3, + 0x49, 0xd8, 0x68, 0x0b, 0x4a, 0xd8, 0x21, 0x00, + 0xf0, 0x01, 0xf8, 0xda, 0x20, 0x00, 0x49, 0xd0, + 0x68, 0x09, 0x60, 0x08, 0x20, 0x00, 0x49, 0xd0, + 0x68, 0x09, 0x60, 0x08, 0x20, 0x00, 0x49, 0xd0, + 0x68, 0x09, 0x60, 0x08, 0x20, 0x00, 0x49, 0xca, + 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, + 0x66, 0x88, 0x48, 0xce, 0x49, 0xc6, 0x68, 0x09, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, 0x66, 0xc8, + 0x20, 0x00, 0x49, 0xc5, 0x68, 0x09, 0x23, 0x07, + 0x02, 0x1b, 0x18, 0xc9, 0x66, 0x88, 0x48, 0xc7, + 0x49, 0xc1, 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, + 0x18, 0xc9, 0x66, 0xc8, 0x20, 0x00, 0x49, 0xc0, + 0x68, 0x09, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, + 0x66, 0x88, 0x48, 0xc0, 0x49, 0xbc, 0x68, 0x09, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, 0x66, 0xc8, + 0x27, 0x00, 0x2f, 0x19, 0xd3, 0x02, 0xe0, 0x38, + 0x37, 0x01, 0xe7, 0xfa, 0x48, 0xba, 0x00, 0xb9, + 0x4a, 0xb1, 0x68, 0x12, 0x18, 0x89, 0x23, 0x0d, + 0x01, 0xdb, 0x18, 0xc9, 0x62, 0x08, 0x48, 0xb6, + 0x00, 0xb9, 0x4a, 0xad, 0x68, 0x12, 0x18, 0x89, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, 0x60, 0x48, + 0x48, 0xb1, 0x00, 0xb9, 0x4a, 0xaa, 0x68, 0x12, + 0x18, 0x89, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0x62, 0x08, 0x48, 0xad, 0x00, 0xb9, 0x4a, 0xa6, + 0x68, 0x12, 0x18, 0x89, 0x23, 0x07, 0x02, 0x1b, + 0x18, 0xc9, 0x60, 0x48, 0x48, 0xa8, 0x00, 0xb9, + 0x4a, 0xa3, 0x68, 0x12, 0x18, 0x89, 0x23, 0x0d, + 0x01, 0xdb, 0x18, 0xc9, 0x62, 0x08, 0x48, 0xa4, + 0x00, 0xb9, 0x4a, 0x9f, 0x68, 0x12, 0x18, 0x89, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xc9, 0x60, 0x48, + 0xe7, 0xc6, 0x27, 0x00, 0x2f, 0x07, 0xd3, 0x02, + 0xe0, 0x86, 0x37, 0x01, 0xe7, 0xfa, 0x48, 0x9c, + 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x92, + 0x68, 0x12, 0x18, 0x89, 0x23, 0x0b, 0x01, 0xdb, + 0x18, 0xc9, 0x60, 0x08, 0x48, 0x96, 0x00, 0xb9, + 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x8c, 0x68, 0x12, + 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, + 0x67, 0xc8, 0x48, 0x91, 0x00, 0xb9, 0x19, 0xc9, + 0x00, 0xc9, 0x4a, 0x87, 0x68, 0x12, 0x18, 0x89, + 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, 0x60, 0x48, + 0x48, 0x8b, 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, + 0x4a, 0x81, 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, + 0x02, 0x1b, 0x18, 0xc9, 0x67, 0x88, 0x48, 0x86, + 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x7e, + 0x68, 0x12, 0x18, 0x89, 0x23, 0x0b, 0x01, 0xdb, + 0x18, 0xc9, 0x60, 0x08, 0x48, 0x80, 0x00, 0xb9, + 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x78, 0x68, 0x12, + 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, + 0x67, 0xc8, 0x48, 0x7b, 0x00, 0xb9, 0x19, 0xc9, + 0x00, 0xc9, 0x4a, 0x73, 0x68, 0x12, 0x18, 0x89, + 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, 0x60, 0x48, + 0x48, 0x75, 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, + 0x4a, 0x6d, 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, + 0x02, 0x1b, 0x18, 0xc9, 0x67, 0x88, 0x48, 0x70, + 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x6a, + 0x68, 0x12, 0x18, 0x89, 0x23, 0x0b, 0x01, 0xdb, + 0x18, 0xc9, 0x60, 0x08, 0x48, 0x6a, 0x00, 0xb9, + 0x19, 0xc9, 0x00, 0xc9, 0x4a, 0x64, 0x68, 0x12, + 0x18, 0x89, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc9, + 0x67, 0xc8, 0x48, 0x65, 0x00, 0xb9, 0x19, 0xc9, + 0x00, 0xc9, 0x4a, 0x5f, 0x68, 0x12, 0x18, 0x89, + 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, 0x60, 0x48, + 0x48, 0x5f, 0x00, 0xb9, 0x19, 0xc9, 0x00, 0xc9, + 0x4a, 0x59, 0x68, 0x12, 0x18, 0x89, 0x23, 0x05, + 0x02, 0x1b, 0x18, 0xc9, 0x67, 0x88, 0xe7, 0x78, + 0x27, 0x00, 0x2f, 0x12, 0xd3, 0x02, 0xe0, 0x56, + 0x37, 0x01, 0xe7, 0xfa, 0x48, 0x56, 0x21, 0x4c, + 0x43, 0x79, 0x4a, 0x4d, 0x68, 0x12, 0x18, 0x89, + 0x62, 0xc8, 0x48, 0x53, 0x21, 0x4c, 0x43, 0x79, + 0x4a, 0x49, 0x68, 0x12, 0x18, 0x89, 0x62, 0x88, + 0x48, 0x4f, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x46, + 0x68, 0x12, 0x18, 0x89, 0x63, 0x08, 0x48, 0x4c, + 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x42, 0x68, 0x12, + 0x18, 0x89, 0x62, 0x48, 0x48, 0x48, 0x21, 0x4c, + 0x43, 0x79, 0x4a, 0x41, 0x68, 0x12, 0x18, 0x89, + 0x62, 0xc8, 0x48, 0x45, 0x21, 0x4c, 0x43, 0x79, + 0x4a, 0x3d, 0x68, 0x12, 0x18, 0x89, 0x62, 0x88, + 0x48, 0x41, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x3a, + 0x68, 0x12, 0x18, 0x89, 0x63, 0x08, 0x48, 0x3e, + 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x36, 0x68, 0x12, + 0x18, 0x89, 0x62, 0x48, 0x48, 0x3a, 0x21, 0x4c, + 0x43, 0x79, 0x4a, 0x35, 0x68, 0x12, 0x18, 0x89, + 0x62, 0xc8, 0x48, 0x37, 0x21, 0x4c, 0x43, 0x79, + 0x4a, 0x31, 0x68, 0x12, 0x18, 0x89, 0x62, 0x88, + 0x48, 0x33, 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x2e, + 0x68, 0x12, 0x18, 0x89, 0x63, 0x08, 0x48, 0x30, + 0x21, 0x4c, 0x43, 0x79, 0x4a, 0x2a, 0x68, 0x12, + 0x18, 0x89, 0x62, 0x48, 0xe7, 0xa8, 0x20, 0x00, + 0x49, 0x25, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xc9, 0x61, 0xc8, 0x20, 0x00, 0x49, 0x22, + 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0x61, 0x88, 0x20, 0x00, 0x49, 0x1c, 0x68, 0x09, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, 0x61, 0xc8, + 0x20, 0x00, 0x49, 0x19, 0x68, 0x09, 0x23, 0x0d, + 0x01, 0xdb, 0x18, 0xc9, 0x61, 0x88, 0x20, 0x00, + 0x49, 0x19, 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xc9, 0x61, 0xc8, 0x20, 0x00, 0x49, 0x16, + 0x68, 0x09, 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xc9, + 0x61, 0x88, 0x20, 0x92, 0x49, 0x17, 0x60, 0x08, + 0x27, 0x00, 0x2f, 0x08, 0xd3, 0x02, 0xe0, 0x08, + 0x37, 0x01, 0xe7, 0xfa, 0x20, 0x00, 0x43, 0xc0, + 0x00, 0xb9, 0x4b, 0x13, 0x18, 0xc9, 0x64, 0x08, + 0xe7, 0xf6, 0x20, 0x10, 0x21, 0x0d, 0x06, 0xc9, + 0x61, 0x08, 0x20, 0x01, 0x49, 0x0f, 0x60, 0x08, + 0x48, 0x0e, 0x68, 0x00, 0xe6, 0x4d, 0xe6, 0x4c, + 0x2e, 0x08, 0x60, 0x8c, 0x2e, 0x08, 0x7d, 0xc4, + 0x2e, 0x08, 0x7d, 0xb8, 0x2e, 0x08, 0x85, 0x5c, + 0x2e, 0x08, 0x7d, 0xbc, 0x2e, 0x08, 0x8c, 0xf4, + 0x2e, 0x08, 0x7d, 0xc0, 0x2e, 0x08, 0x94, 0x9c, + 0x00, 0x00, 0x16, 0xc8, 0x3f, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0x2e, 0x08, 0x94, 0x90, + 0x68, 0x00, 0x0d, 0x00, 0x2e, 0x08, 0x94, 0x8c, + 0xb5, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0x1c, 0x39, + 0x20, 0x00, 0xf0, 0x00, 0xf8, 0x4d, 0x1c, 0x39, + 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x03, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0xf0, 0x1c, 0x04, + 0x1c, 0x0f, 0x68, 0x78, 0x28, 0x07, 0xd9, 0x1d, + 0x23, 0x03, 0x02, 0x5b, 0x18, 0xf8, 0x6d, 0x40, + 0x28, 0x00, 0xd0, 0x06, 0x23, 0x03, 0x02, 0x5b, + 0x18, 0xf8, 0x6d, 0x80, 0x04, 0x00, 0x0c, 0x00, + 0xd1, 0x02, 0x20, 0x02, 0x60, 0xb8, 0xe0, 0x01, + 0x20, 0x03, 0x60, 0xb8, 0x1d, 0xfd, 0x35, 0x05, + 0x23, 0x65, 0x01, 0x1b, 0x18, 0xfe, 0x1c, 0x31, + 0x1c, 0x28, 0x4a, 0x11, 0x68, 0x13, 0x22, 0x28, + 0xf0, 0x00, 0xfe, 0xee, 0x2c, 0x06, 0xd0, 0x18, + 0x00, 0xa0, 0x19, 0x00, 0x00, 0xc0, 0x19, 0xc0, + 0x23, 0x2b, 0x01, 0x5b, 0x18, 0xc6, 0x00, 0xa0, + 0x19, 0x00, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0xb1, + 0x00, 0xdb, 0x18, 0xc5, 0x20, 0x06, 0x1b, 0x00, + 0x00, 0x82, 0x18, 0x12, 0x00, 0xd2, 0x1c, 0x31, + 0x1c, 0x28, 0x4b, 0x04, 0x68, 0x1b, 0xf0, 0x00, + 0xfe, 0xd3, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x94, 0x98, 0x2e, 0x08, 0x94, 0xa0, + 0xb5, 0xf0, 0x1c, 0x07, 0x1c, 0x0c, 0x2f, 0x10, + 0xd0, 0x13, 0x20, 0x4c, 0x43, 0x78, 0x19, 0x00, + 0x1d, 0xc6, 0x36, 0x01, 0x20, 0x4c, 0x43, 0x78, + 0x19, 0x00, 0x1d, 0xc5, 0x35, 0x4d, 0x20, 0x10, + 0x1b, 0xc0, 0x22, 0x4c, 0x43, 0x42, 0x1c, 0x31, + 0x1c, 0x28, 0x4b, 0x03, 0x68, 0x1b, 0xf0, 0x00, + 0xfe, 0xb3, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x94, 0xa0, 0xb5, 0x90, 0x1c, 0x04, + 0x1c, 0x0f, 0x1c, 0x39, 0x1c, 0x20, 0xf0, 0x00, + 0xf8, 0x07, 0x1c, 0x39, 0x20, 0x00, 0xf0, 0x00, + 0xf8, 0x33, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0x00, 0xa0, + 0x19, 0x00, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0xb1, + 0x00, 0xdb, 0x18, 0xc6, 0x00, 0xa0, 0x19, 0x00, + 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x2b, 0x01, 0x5b, + 0x18, 0xc5, 0x20, 0x06, 0x1b, 0x00, 0x00, 0x82, + 0x18, 0x12, 0x00, 0xd2, 0x1c, 0x31, 0x1c, 0x28, + 0x4b, 0x09, 0x68, 0x1b, 0xf0, 0x00, 0xfe, 0x84, + 0x1d, 0xfe, 0x36, 0x05, 0x23, 0x65, 0x01, 0x1b, + 0x18, 0xfd, 0x1c, 0x31, 0x1c, 0x28, 0x4a, 0x05, + 0x68, 0x13, 0x22, 0x28, 0xf0, 0x00, 0xfe, 0x78, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x94, 0xa0, 0x2e, 0x08, 0x94, 0x98, + 0xb5, 0xf0, 0x1c, 0x07, 0x1c, 0x0c, 0x20, 0x4c, + 0x43, 0x78, 0x19, 0x00, 0x1d, 0xc6, 0x36, 0x4d, + 0x20, 0x4c, 0x43, 0x78, 0x19, 0x00, 0x1d, 0xc5, + 0x35, 0x01, 0x20, 0x10, 0x1b, 0xc0, 0x22, 0x4c, + 0x43, 0x42, 0x1c, 0x31, 0x1c, 0x28, 0x4b, 0x03, + 0x68, 0x1b, 0xf0, 0x00, 0xfe, 0x59, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x94, 0xa0, + 0xb4, 0xb0, 0x1c, 0x02, 0x1c, 0x0f, 0x20, 0x00, + 0x1c, 0x03, 0x30, 0x01, 0x00, 0x9b, 0x18, 0x9c, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xe3, 0x68, 0x5b, + 0x10, 0x7c, 0x34, 0x01, 0x42, 0xa3, 0xd2, 0x00, + 0xe7, 0xf2, 0x38, 0x01, 0x21, 0x18, 0x42, 0x81, + 0xd8, 0x02, 0xe0, 0x1a, 0x39, 0x01, 0xe7, 0xfa, + 0x00, 0x8b, 0x18, 0x9c, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xe3, 0x69, 0xdc, 0x00, 0x8b, 0x18, 0x9d, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xeb, 0x62, 0x1c, + 0x00, 0x8b, 0x18, 0x9c, 0x23, 0x07, 0x02, 0x1b, + 0x18, 0xe3, 0x68, 0x1c, 0x00, 0x8b, 0x18, 0x9d, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xeb, 0x60, 0x5c, + 0xe7, 0xe4, 0x23, 0x00, 0x2b, 0x00, 0xd0, 0x10, + 0x10, 0x7b, 0x1c, 0x5c, 0x00, 0x83, 0x18, 0x9d, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xeb, 0x62, 0x1c, + 0x10, 0x7b, 0x1c, 0x5c, 0x00, 0x83, 0x18, 0x9d, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xeb, 0x60, 0x5c, + 0xe0, 0x0e, 0x10, 0x7c, 0x00, 0x83, 0x18, 0x9d, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xeb, 0x62, 0x1c, + 0x10, 0x7b, 0x1c, 0x5c, 0x00, 0x83, 0x18, 0x9d, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xeb, 0x60, 0x5c, + 0xbc, 0xb0, 0x47, 0x70, 0xb4, 0xb0, 0x1c, 0x02, + 0x1c, 0x0f, 0x21, 0x00, 0x1c, 0x0b, 0x31, 0x01, + 0x00, 0x9b, 0x18, 0x9c, 0x23, 0x07, 0x02, 0x1b, + 0x18, 0xe3, 0x68, 0x5b, 0x10, 0x7c, 0x34, 0x01, + 0x42, 0xa3, 0xd0, 0x00, 0xe7, 0xf2, 0x39, 0x01, + 0x1c, 0x08, 0x28, 0x18, 0xd3, 0x02, 0xe0, 0x1a, + 0x30, 0x01, 0xe7, 0xfa, 0x00, 0x83, 0x18, 0x9c, + 0x23, 0x0d, 0x01, 0xdb, 0x18, 0xe3, 0x6a, 0x5c, + 0x00, 0x83, 0x18, 0x9d, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xeb, 0x62, 0x1c, 0x00, 0x83, 0x18, 0x9c, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xe3, 0x68, 0x9c, + 0x00, 0x83, 0x18, 0x9d, 0x23, 0x07, 0x02, 0x1b, + 0x18, 0xeb, 0x60, 0x5c, 0xe7, 0xe4, 0x4c, 0x06, + 0x23, 0x07, 0x02, 0x1b, 0x18, 0xd3, 0x60, 0x1c, + 0x4c, 0x03, 0x23, 0x07, 0x02, 0x1b, 0x18, 0xd3, + 0x66, 0x5c, 0xbc, 0xb0, 0x47, 0x70, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xb4, 0xb0, 0x1c, 0x07, + 0x1c, 0x0c, 0x1c, 0x15, 0x6a, 0xa1, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x19, 0x62, 0x39, 0x21, 0x01, + 0x02, 0x89, 0x43, 0x29, 0x62, 0x79, 0x6a, 0xe1, + 0x05, 0x89, 0x0d, 0x89, 0x61, 0xf9, 0x6b, 0x61, + 0x31, 0x01, 0x05, 0x89, 0x0d, 0x89, 0x61, 0xb9, + 0x69, 0x61, 0x60, 0xf9, 0x69, 0xa1, 0x61, 0x39, + 0x69, 0xe1, 0x61, 0x79, 0x68, 0xa1, 0x23, 0x01, + 0x06, 0x1b, 0x40, 0x19, 0xd0, 0x02, 0x49, 0x0f, + 0x60, 0xb9, 0xe0, 0x01, 0x21, 0x00, 0x60, 0xb9, + 0x6a, 0x60, 0x28, 0x00, 0xd0, 0x0b, 0x68, 0x41, + 0x60, 0x39, 0x78, 0x01, 0x00, 0x89, 0x4b, 0x0a, + 0x18, 0xc9, 0x60, 0x79, 0x68, 0xb9, 0x88, 0x42, + 0x43, 0x11, 0x60, 0xb9, 0xe0, 0x07, 0x21, 0x00, + 0x60, 0x39, 0x21, 0x00, 0x60, 0x79, 0x68, 0xb9, + 0x0c, 0x09, 0x04, 0x09, 0x60, 0xb9, 0xbc, 0xb0, + 0x47, 0x70, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x68, 0x00, 0x08, 0x00, 0xb4, 0x80, 0x1c, 0x02, + 0x1c, 0x0f, 0x69, 0x79, 0x60, 0xd1, 0x69, 0xb9, + 0x61, 0x11, 0x69, 0xf9, 0x61, 0x51, 0x68, 0xb9, + 0x23, 0x01, 0x06, 0x1b, 0x40, 0x19, 0xd0, 0x02, + 0x49, 0x0e, 0x60, 0x91, 0xe0, 0x01, 0x21, 0x00, + 0x60, 0x91, 0x6a, 0x78, 0x28, 0x00, 0xd0, 0x0b, + 0x68, 0x41, 0x60, 0x11, 0x78, 0x01, 0x00, 0x89, + 0x4b, 0x09, 0x18, 0xc9, 0x60, 0x51, 0x68, 0x91, + 0x88, 0x43, 0x43, 0x19, 0x60, 0x91, 0xe0, 0x07, + 0x21, 0x00, 0x60, 0x11, 0x21, 0x00, 0x60, 0x51, + 0x68, 0x91, 0x0c, 0x09, 0x04, 0x09, 0x60, 0x91, + 0xbc, 0x80, 0x47, 0x70, 0xff, 0xff, 0x00, 0x00, + 0x68, 0x00, 0x08, 0x00, 0x1c, 0x01, 0x48, 0x07, + 0x62, 0x08, 0x48, 0x06, 0x62, 0x48, 0x48, 0x05, + 0x61, 0xc8, 0x48, 0x04, 0x61, 0x88, 0x20, 0x00, + 0x60, 0x08, 0x20, 0x00, 0x60, 0x48, 0x20, 0x00, + 0x60, 0x88, 0x47, 0x70, 0x00, 0x00, 0xff, 0xff, + 0xb5, 0xb0, 0x1c, 0x07, 0x1c, 0x0c, 0x2c, 0x07, + 0xd2, 0x73, 0x25, 0x00, 0x2d, 0x07, 0xdb, 0x02, + 0xe0, 0x2f, 0x35, 0x01, 0xe7, 0xfa, 0x00, 0xa8, + 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, + 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, 0x00, 0xa9, + 0x19, 0x49, 0x00, 0xc9, 0x19, 0xc9, 0x23, 0x0b, + 0x01, 0xdb, 0x18, 0xc9, 0x68, 0x49, 0x42, 0x88, + 0xd0, 0x1a, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, + 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, + 0x68, 0x40, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x02, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, + 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, + 0x68, 0x00, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x01, 0x48, 0xf8, 0xf0, 0x00, 0xfb, 0xd2, + 0xe7, 0xcf, 0x23, 0xcf, 0x00, 0xdb, 0x18, 0xf8, + 0xf7, 0xff, 0xfb, 0xb8, 0x25, 0x00, 0x2d, 0x07, + 0xdb, 0x02, 0xe0, 0x54, 0x35, 0x01, 0xe7, 0xfa, + 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, + 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, + 0x00, 0xa9, 0x19, 0x49, 0x00, 0xc9, 0x19, 0xc9, + 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc9, 0x68, 0x49, + 0x42, 0x88, 0xd0, 0x1a, 0x00, 0xa8, 0x19, 0x40, + 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, + 0x18, 0xc0, 0x68, 0x40, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x02, 0x00, 0xa8, 0x19, 0x40, + 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, + 0x18, 0xc0, 0x68, 0x00, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x01, 0x48, 0xdb, 0xf0, 0x00, + 0xfb, 0x6b, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, + 0xe0, 0x00, 0xe0, 0x94, 0x6b, 0x09, 0x42, 0x88, + 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x01, 0x48, 0xcc, 0xf0, 0x00, 0xfb, 0x7a, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x30, 0x34, + 0xf7, 0xff, 0xfb, 0x60, 0xe7, 0xaa, 0x25, 0x07, + 0x2d, 0x11, 0xdb, 0x02, 0xe0, 0x4e, 0x35, 0x01, + 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x69, 0x80, + 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, 0x39, 0xff, + 0x39, 0xff, 0x39, 0x02, 0x69, 0xc9, 0x42, 0x88, + 0xd0, 0x18, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x69, 0xc0, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x69, 0x80, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0xb1, + 0xf0, 0x00, 0xfb, 0x16, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, + 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, + 0x48, 0xa2, 0xf0, 0x00, 0xfb, 0x27, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x30, 0x34, 0xf7, 0xff, + 0xfb, 0x0d, 0xe7, 0xb0, 0x25, 0x0a, 0x2d, 0x11, + 0xdb, 0x02, 0xe0, 0x1f, 0x35, 0x01, 0xe7, 0xfa, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, + 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, + 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x01, 0x48, 0x8d, 0xf0, 0x00, + 0xfa, 0xcf, 0xe7, 0xdf, 0xe1, 0xca, 0x2c, 0x0e, + 0xd3, 0x73, 0x3c, 0x07, 0x1f, 0xe5, 0x42, 0xa5, + 0xd3, 0x02, 0xe0, 0x1f, 0x35, 0x01, 0xe7, 0xfa, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, + 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, + 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x01, 0x48, 0x79, 0xf0, 0x00, + 0xfa, 0xd5, 0xe7, 0xdf, 0x1c, 0x25, 0x2d, 0x11, + 0xdb, 0x02, 0xe0, 0x50, 0x35, 0x01, 0xe7, 0xfa, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x69, 0x80, 0x21, 0x4c, + 0x43, 0x69, 0x19, 0xc9, 0x39, 0xff, 0x39, 0xff, + 0x39, 0x02, 0x69, 0xc9, 0x42, 0x88, 0xd0, 0x18, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x69, 0xc0, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, 0x38, 0xff, + 0x38, 0x02, 0x69, 0x80, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x01, 0x48, 0x61, 0xf0, 0x00, + 0xfa, 0x77, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, + 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0x53, + 0xf0, 0x00, 0xfa, 0x88, 0x20, 0x4c, 0x43, 0x68, + 0xe0, 0x00, 0xe0, 0x29, 0x19, 0xc0, 0x30, 0x34, + 0xf7, 0xff, 0xfa, 0x6c, 0xe7, 0xae, 0x25, 0x0a, + 0x2d, 0x11, 0xdb, 0x02, 0xe0, 0x1f, 0x35, 0x01, + 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, + 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0x3d, + 0xf0, 0x00, 0xfa, 0x2e, 0xe7, 0xdf, 0xe1, 0x29, + 0x3c, 0x07, 0x1c, 0x25, 0x2d, 0x07, 0xdb, 0x02, + 0xe0, 0x2f, 0x35, 0x01, 0xe7, 0xfa, 0x00, 0xa8, + 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, + 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, 0x00, 0xa9, + 0x19, 0x49, 0x00, 0xc9, 0x19, 0xc9, 0x23, 0x0b, + 0x01, 0xdb, 0x18, 0xc9, 0x68, 0x49, 0x42, 0x88, + 0xd0, 0x1a, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, + 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, + 0x68, 0x40, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x02, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, + 0x19, 0xc0, 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, + 0x68, 0x00, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x01, 0x48, 0x22, 0xf0, 0x00, 0xfa, 0x26, + 0xe7, 0xcf, 0x25, 0x00, 0x42, 0xa5, 0xd3, 0x02, + 0xe0, 0x1f, 0x35, 0x01, 0xe7, 0xfa, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, + 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, + 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x01, 0x48, 0x10, 0xf0, 0x00, 0xfa, 0x02, + 0xe7, 0xdf, 0x1c, 0x25, 0x2d, 0x07, 0xdb, 0x02, + 0xe0, 0x55, 0x35, 0x01, 0xe7, 0xfa, 0x00, 0xa8, + 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, 0x23, 0x0b, + 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, 0x00, 0xa9, + 0x19, 0x49, 0x00, 0xc9, 0x19, 0xc9, 0x23, 0x0b, + 0x01, 0xdb, 0x18, 0xc9, 0x68, 0x49, 0x42, 0x88, + 0xd0, 0x1d, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, + 0x19, 0xc0, 0xe0, 0x01, 0x2e, 0x08, 0x7d, 0x9c, + 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x40, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, + 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, 0x19, 0xc0, + 0x23, 0x0b, 0x01, 0xdb, 0x18, 0xc0, 0x68, 0x00, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, + 0x48, 0x50, 0xf0, 0x00, 0xf9, 0x9d, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, + 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, + 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, + 0x1c, 0x01, 0x48, 0x42, 0xf0, 0x00, 0xf9, 0xae, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x30, 0x34, + 0xf7, 0xff, 0xf9, 0x94, 0xe7, 0xa9, 0x25, 0x07, + 0x2d, 0x11, 0xdb, 0x02, 0xe0, 0x4e, 0x35, 0x01, + 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x69, 0x80, + 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, 0x39, 0xff, + 0x39, 0xff, 0x39, 0x02, 0x69, 0xc9, 0x42, 0x88, + 0xd0, 0x18, 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, + 0x38, 0xff, 0x38, 0xff, 0x38, 0x02, 0x69, 0xc0, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x38, 0xff, + 0x38, 0xff, 0x38, 0x02, 0x69, 0x80, 0x23, 0x01, + 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, 0x48, 0x27, + 0xf0, 0x00, 0xf9, 0x4a, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6a, 0xc0, 0x21, 0x4c, 0x43, 0x69, + 0x19, 0xc9, 0x6b, 0x09, 0x42, 0x88, 0xd0, 0x12, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6b, 0x00, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x02, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, + 0x23, 0x01, 0x02, 0x9b, 0x43, 0x98, 0x1c, 0x01, + 0x48, 0x18, 0xf0, 0x00, 0xf9, 0x5b, 0x20, 0x4c, + 0x43, 0x68, 0x19, 0xc0, 0x30, 0x34, 0xf7, 0xff, + 0xf9, 0x41, 0xe7, 0xb0, 0x25, 0x0a, 0x2d, 0x11, + 0xdb, 0x02, 0xe0, 0x1f, 0x35, 0x01, 0xe7, 0xfa, + 0x20, 0x4c, 0x43, 0x68, 0x19, 0xc0, 0x6a, 0xc0, + 0x21, 0x4c, 0x43, 0x69, 0x19, 0xc9, 0x6b, 0x09, + 0x42, 0x88, 0xd0, 0x12, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6b, 0x00, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x02, 0x20, 0x4c, 0x43, 0x68, + 0x19, 0xc0, 0x6a, 0xc0, 0x23, 0x01, 0x02, 0x9b, + 0x43, 0x98, 0x1c, 0x01, 0x48, 0x03, 0xf0, 0x00, + 0xf9, 0x03, 0xe7, 0xdf, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0x9c, + 0xb4, 0x90, 0x1c, 0x02, 0x1c, 0x0f, 0x3a, 0x01, + 0x2f, 0x01, 0xd1, 0x0d, 0x09, 0x50, 0x00, 0x80, + 0x49, 0x0d, 0x58, 0x08, 0x06, 0xd4, 0x0e, 0xe4, + 0x21, 0x01, 0x40, 0xa1, 0x43, 0x08, 0x09, 0x51, + 0x00, 0x89, 0x4b, 0x09, 0x50, 0x58, 0xe0, 0x0d, + 0x09, 0x50, 0x00, 0x80, 0x49, 0x06, 0x58, 0x08, + 0x06, 0xd4, 0x0e, 0xe4, 0x21, 0x01, 0x40, 0xa1, + 0x43, 0xc9, 0x40, 0x01, 0x09, 0x50, 0x00, 0x80, + 0x4b, 0x01, 0x50, 0x19, 0xbc, 0x90, 0x47, 0x70, + 0x2e, 0x08, 0x94, 0x94, 0xb4, 0x80, 0x1c, 0x01, + 0x39, 0x01, 0x09, 0x48, 0x00, 0x80, 0x4a, 0x08, + 0x58, 0x10, 0x06, 0xca, 0x0e, 0xd2, 0x27, 0x01, + 0x40, 0x97, 0x1c, 0x3b, 0x40, 0x18, 0xd0, 0x03, + 0x20, 0x01, 0xbc, 0x80, 0x47, 0x70, 0xe0, 0x01, + 0x20, 0x00, 0xe7, 0xfa, 0xe7, 0xf9, 0x00, 0x00, + 0x2e, 0x08, 0x94, 0x94, 0xb4, 0xf0, 0x1c, 0x07, + 0x1c, 0x0a, 0x68, 0x54, 0x6a, 0xf8, 0x05, 0x86, + 0x0d, 0xb6, 0x2c, 0x07, 0xda, 0x01, 0x1c, 0x20, + 0xe0, 0x00, 0x20, 0x07, 0x1c, 0x05, 0x21, 0x00, + 0x42, 0xa9, 0xd3, 0x02, 0xe0, 0x15, 0x31, 0x01, + 0xe7, 0xfa, 0x00, 0x88, 0x18, 0x40, 0x00, 0xc0, + 0x18, 0x80, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xc0, + 0x6f, 0xc0, 0x42, 0xb0, 0xd1, 0x08, 0x00, 0x88, + 0x18, 0x40, 0x00, 0xc0, 0x18, 0x80, 0x23, 0x2b, + 0x01, 0x5b, 0x18, 0xc0, 0xbc, 0xf0, 0x47, 0x70, + 0xe7, 0xe9, 0x1f, 0xe0, 0x28, 0x11, 0xda, 0x01, + 0x1f, 0xe0, 0xe0, 0x00, 0x20, 0x11, 0x1c, 0x05, + 0x21, 0x00, 0x42, 0xa9, 0xd3, 0x02, 0xe0, 0x0d, + 0x31, 0x01, 0xe7, 0xfa, 0x20, 0x4c, 0x43, 0x48, + 0x18, 0x80, 0x6a, 0x80, 0x42, 0xb0, 0xd1, 0x04, + 0x20, 0x4c, 0x43, 0x48, 0x18, 0x80, 0x30, 0x0c, + 0xe7, 0xe4, 0xe7, 0xf1, 0x20, 0x00, 0xe7, 0xe1, + 0xe7, 0xe0, 0xb5, 0x90, 0x48, 0x07, 0x68, 0x04, + 0x48, 0x07, 0x68, 0x07, 0x1c, 0x39, 0x1c, 0x20, + 0x4a, 0x06, 0x68, 0x13, 0x22, 0xf3, 0x00, 0xd2, + 0xf0, 0x00, 0xf9, 0xca, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x7d, 0xbc, + 0x2e, 0x08, 0x7d, 0xc0, 0x2e, 0x08, 0x94, 0x98, + 0xb4, 0xf0, 0x1c, 0x01, 0xb0, 0x83, 0x22, 0x00, + 0x68, 0x4b, 0x2b, 0x07, 0xdd, 0x01, 0x23, 0x07, + 0xe0, 0x00, 0x68, 0x4b, 0x1c, 0x1c, 0x23, 0x00, + 0x43, 0xdb, 0x93, 0x02, 0x23, 0x00, 0x43, 0xdb, + 0x93, 0x01, 0x23, 0x00, 0x93, 0x00, 0x4b, 0x17, + 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x07, 0x4b, 0x15, + 0x68, 0x1b, 0x6a, 0xdb, 0x93, 0x02, 0x4b, 0x13, + 0x68, 0x1b, 0x6b, 0x5b, 0x93, 0x01, 0x20, 0x00, + 0x42, 0xa0, 0xd3, 0x02, 0xe0, 0x16, 0x30, 0x01, + 0xe7, 0xfa, 0x00, 0x83, 0x18, 0x1b, 0x00, 0xdb, + 0x18, 0x5d, 0x23, 0x05, 0x02, 0x1b, 0x18, 0xeb, + 0x6e, 0x9f, 0x04, 0x3b, 0x0c, 0x1b, 0xd0, 0x08, + 0x0c, 0x3b, 0x04, 0x1b, 0xd0, 0x05, 0x9b, 0x00, + 0x18, 0xc5, 0x26, 0x01, 0x40, 0xae, 0x1c, 0x33, + 0x43, 0x1a, 0xe7, 0xe8, 0x23, 0x0d, 0x01, 0xdb, + 0x18, 0xcb, 0x61, 0xda, 0xb0, 0x03, 0xbc, 0xf0, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x7c, 0x60, + 0xb4, 0x80, 0x1c, 0x01, 0x20, 0x00, 0x68, 0x0a, + 0x42, 0x90, 0xdb, 0x02, 0xe0, 0x07, 0x30, 0x01, + 0xe7, 0xf9, 0x23, 0x00, 0x43, 0xdb, 0x68, 0x8a, + 0x00, 0x87, 0x51, 0xd3, 0xe7, 0xf7, 0x22, 0x00, + 0x43, 0xd2, 0x68, 0x8b, 0x68, 0x0f, 0x00, 0xbf, + 0x51, 0xda, 0x23, 0x00, 0x43, 0xdb, 0x68, 0x8a, + 0x68, 0x0f, 0x00, 0xbf, 0x19, 0xd2, 0x60, 0x53, + 0x22, 0x00, 0x60, 0x4a, 0xbc, 0x80, 0x47, 0x70, + 0xb4, 0xf0, 0x1c, 0x03, 0x1c, 0x0c, 0x1c, 0x17, + 0x68, 0x9a, 0xca, 0x40, 0x42, 0xa6, 0xd2, 0x00, + 0xe7, 0xfb, 0x3a, 0x04, 0x1c, 0x11, 0xc9, 0x40, + 0x42, 0xbe, 0xd2, 0x00, 0xe7, 0xfb, 0x39, 0x04, + 0x68, 0x10, 0x42, 0xa0, 0xd1, 0x02, 0x68, 0x08, + 0x42, 0xb8, 0xd0, 0x02, 0x20, 0xff, 0xbc, 0xf0, + 0x47, 0x70, 0x39, 0x04, 0x68, 0x98, 0x68, 0x5e, + 0x00, 0xb6, 0x19, 0x85, 0x68, 0x58, 0x38, 0x02, + 0x60, 0x58, 0x68, 0x50, 0x60, 0x10, 0x32, 0x04, + 0x42, 0x8a, 0xd3, 0xfa, 0x68, 0x88, 0x60, 0x08, + 0x31, 0x04, 0x42, 0xa9, 0xd3, 0xfa, 0x20, 0x00, + 0xe7, 0xe9, 0xe7, 0xe8, 0xb4, 0xf0, 0x1c, 0x03, + 0x1c, 0x0c, 0x1c, 0x17, 0x68, 0x58, 0x68, 0x1e, + 0x3e, 0x01, 0x42, 0xb0, 0xdb, 0x02, 0x20, 0xff, + 0xbc, 0xf0, 0x47, 0x70, 0x68, 0x9a, 0xca, 0x40, + 0x42, 0xa6, 0xd2, 0x00, 0xe7, 0xfb, 0x3a, 0x04, + 0x1c, 0x15, 0xcd, 0x40, 0x42, 0xbe, 0xd2, 0x00, + 0xe7, 0xfb, 0x68, 0x58, 0x30, 0x02, 0x60, 0x58, + 0x68, 0x98, 0x68, 0x5e, 0x00, 0xb6, 0x19, 0x80, + 0x1f, 0xc1, 0x39, 0x01, 0x68, 0x08, 0x60, 0x88, + 0x39, 0x04, 0x1d, 0xc8, 0x30, 0x01, 0x42, 0xa8, + 0xd8, 0xf8, 0x60, 0x8f, 0x68, 0x08, 0x60, 0x48, + 0x39, 0x04, 0x1d, 0x08, 0x42, 0x90, 0xd8, 0xf9, + 0x60, 0x14, 0x20, 0x00, 0xe7, 0xd8, 0xe7, 0xd7, + 0xb5, 0xf0, 0x1c, 0x07, 0x1c, 0x0c, 0xb0, 0x81, + 0x1c, 0x38, 0x21, 0x00, 0xf0, 0x0c, 0xff, 0xbe, + 0x1c, 0x06, 0x1c, 0x38, 0x21, 0x01, 0xf0, 0x0c, + 0xff, 0xb9, 0x90, 0x00, 0x1c, 0x31, 0x1c, 0x38, + 0xf0, 0x00, 0xf8, 0x50, 0x49, 0x20, 0x68, 0x09, + 0x60, 0x08, 0x99, 0x00, 0x1c, 0x38, 0xf0, 0x00, + 0xf8, 0x49, 0x49, 0x1e, 0x68, 0x09, 0x60, 0x08, + 0x48, 0x1b, 0x68, 0x00, 0x68, 0x05, 0x48, 0x1c, + 0x68, 0x01, 0x23, 0x02, 0x43, 0xdb, 0x40, 0x19, + 0x60, 0x01, 0x2c, 0x00, 0xd0, 0x0c, 0x48, 0x19, + 0x68, 0x00, 0x78, 0x00, 0x28, 0x00, 0xd0, 0x07, + 0x48, 0x14, 0x68, 0x00, 0x68, 0x05, 0x48, 0x14, + 0x68, 0x01, 0x23, 0x02, 0x43, 0x19, 0x60, 0x01, + 0x1c, 0x20, 0x49, 0x13, 0x68, 0x09, 0x70, 0x08, + 0x48, 0x12, 0x63, 0xc5, 0x20, 0x3f, 0x04, 0x00, + 0x40, 0x28, 0x0c, 0x00, 0x49, 0x10, 0x62, 0x08, + 0x20, 0xff, 0x02, 0x00, 0x40, 0x28, 0x0a, 0x00, + 0x49, 0x0d, 0x62, 0x48, 0x06, 0xa8, 0x0e, 0x80, + 0x23, 0x80, 0x43, 0x18, 0x49, 0x0a, 0x62, 0x88, + 0x1c, 0x28, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xb0, 0x01, 0xe7, 0xfa, 0x00, 0x00, + 0x2e, 0x08, 0x94, 0xa4, 0x2e, 0x08, 0x94, 0xa8, + 0x6a, 0x00, 0x00, 0x18, 0x2e, 0x08, 0x94, 0xac, + 0x2e, 0x08, 0x94, 0xb0, 0x68, 0x00, 0x0d, 0x00, + 0x72, 0x00, 0x01, 0x00, 0xb4, 0x80, 0x1c, 0x02, + 0x1c, 0x0f, 0x06, 0xb9, 0x0e, 0x89, 0x20, 0x01, + 0x03, 0x80, 0x40, 0x10, 0x09, 0xc0, 0x43, 0x01, + 0x20, 0xf0, 0x40, 0x10, 0x01, 0x40, 0x43, 0x01, + 0x07, 0x10, 0x0f, 0x00, 0x03, 0x00, 0x43, 0x01, + 0x20, 0x07, 0x02, 0xc0, 0x40, 0x10, 0x01, 0x40, + 0x43, 0x01, 0x20, 0x07, 0x02, 0x00, 0x40, 0x10, + 0x02, 0xc0, 0x43, 0x01, 0x1c, 0x08, 0xbc, 0x80, + 0x47, 0x70, 0xe7, 0xfc, 0xb5, 0xff, 0x1c, 0x05, + 0x1c, 0x0c, 0x1c, 0x17, 0x9b, 0x03, 0x06, 0x18, + 0x16, 0x06, 0x20, 0x33, 0x06, 0x40, 0x6b, 0x80, + 0x1c, 0x01, 0x20, 0x04, 0x40, 0x08, 0xd0, 0x05, + 0x20, 0xd0, 0xb0, 0x04, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0xe0, 0x17, 0x23, 0x04, 0x43, 0xdb, + 0x40, 0x19, 0x01, 0x08, 0x4b, 0x0a, 0x68, 0x1b, + 0x18, 0xc2, 0x60, 0x15, 0x60, 0x54, 0x2e, 0xfe, + 0xd0, 0x04, 0x20, 0x01, 0x40, 0xb0, 0x60, 0xd0, + 0x4b, 0x06, 0x43, 0x1f, 0x60, 0x97, 0x20, 0x01, + 0x40, 0x88, 0x23, 0x33, 0x06, 0x5b, 0x63, 0x58, + 0x20, 0x00, 0xe7, 0xe2, 0xe7, 0xe1, 0x00, 0x00, + 0x2e, 0x08, 0x20, 0x14, 0x80, 0x00, 0x00, 0x00, + 0xb4, 0xb0, 0x1c, 0x01, 0x06, 0x08, 0x16, 0x04, + 0x4f, 0x0c, 0x22, 0x00, 0x20, 0x00, 0x28, 0x04, + 0xd3, 0x02, 0xe0, 0x0b, 0x30, 0x01, 0xe7, 0xfa, + 0x01, 0x03, 0x19, 0xdb, 0x68, 0x5b, 0x42, 0xa3, + 0xd1, 0x03, 0x25, 0x01, 0x40, 0x85, 0x1c, 0x2b, + 0x43, 0x1a, 0xe7, 0xf3, 0x23, 0x33, 0x06, 0x5b, + 0x6c, 0x1b, 0x40, 0x13, 0xd0, 0x00, 0xe7, 0xf9, + 0xbc, 0xb0, 0x47, 0x70, 0x9e, 0x00, 0x00, 0xc0, + 0xe3, 0xa0, 0x14, 0x62, 0xe5, 0x91, 0x10, 0x14, + 0xe2, 0x01, 0x00, 0xff, 0xe5, 0x9f, 0x10, 0x2c, + 0xe5, 0xd1, 0x10, 0x00, 0xe3, 0x51, 0x00, 0xff, + 0x0a, 0x00, 0x00, 0x05, 0xe5, 0x9f, 0x10, 0x1c, + 0xe5, 0xd1, 0x10, 0x00, 0xe3, 0xa0, 0x20, 0x01, + 0xe1, 0xa0, 0x11, 0x12, 0xe3, 0xa0, 0x24, 0x66, + 0xe5, 0x82, 0x10, 0x10, 0xe3, 0xa0, 0x14, 0x62, + 0xe5, 0x81, 0x00, 0x14, 0xe1, 0x2f, 0xff, 0x1e, + 0x2e, 0x08, 0x7c, 0x50, 0x47, 0x00, 0x00, 0x00, + 0x47, 0x08, 0x00, 0x00, 0x47, 0x10, 0x00, 0x00, + 0x47, 0x18, 0x00, 0x00, 0x47, 0x20, 0x00, 0x00, + 0x47, 0x28, 0x00, 0x00, 0x47, 0x30, 0x00, 0x00, + 0x47, 0x38, 0x00, 0x00, 0x17, 0xcb, 0x40, 0x59, + 0x1a, 0xc9, 0x17, 0xc2, 0x40, 0x50, 0x1a, 0x80, + 0xd1, 0x01, 0xf0, 0x00, 0xf9, 0xe5, 0xb4, 0x0c, + 0x08, 0x4b, 0x1c, 0x02, 0x42, 0x9a, 0xd8, 0x00, + 0x00, 0x52, 0xd3, 0xfb, 0x23, 0x00, 0xe0, 0x00, + 0x08, 0x52, 0x42, 0x91, 0x41, 0x5b, 0x42, 0x91, + 0xd3, 0x00, 0x1a, 0x89, 0x42, 0x82, 0xd1, 0xf7, + 0x1c, 0x18, 0xbc, 0x0c, 0x40, 0x5a, 0x40, 0x50, + 0x1a, 0x80, 0x40, 0x59, 0x1a, 0xc9, 0x47, 0x70, + 0x08, 0x4b, 0x1c, 0x02, 0xd1, 0x01, 0xf0, 0x00, + 0xf9, 0xc7, 0x42, 0x9a, 0xd8, 0x00, 0x00, 0x52, + 0xd3, 0xfb, 0x23, 0x00, 0xe0, 0x00, 0x08, 0x52, + 0x42, 0x91, 0x41, 0x5b, 0x42, 0x91, 0xd3, 0x00, + 0x1a, 0x89, 0x42, 0x82, 0xd1, 0xf7, 0x1c, 0x18, + 0x47, 0x70, 0x00, 0x00, 0x3a, 0x20, 0xd5, 0x09, + 0x42, 0x53, 0x32, 0x20, 0x40, 0xd0, 0x46, 0x94, + 0x1c, 0x0a, 0x40, 0x9a, 0x43, 0x10, 0x46, 0x62, + 0x40, 0xd1, 0x47, 0x70, 0x1c, 0x08, 0x40, 0xd0, + 0x21, 0x00, 0x47, 0x70, 0x40, 0x10, 0x40, 0x19, + 0x47, 0x70, 0x00, 0x00, 0x47, 0x70, 0x00, 0x00, + 0x46, 0x84, 0x07, 0x83, 0xd0, 0x05, 0x1e, 0x52, + 0xd3, 0x12, 0x70, 0x01, 0x1c, 0x40, 0x07, 0x83, + 0xd1, 0xf9, 0x3a, 0x08, 0xd3, 0x07, 0x02, 0x0b, + 0x43, 0x19, 0x04, 0x0b, 0x43, 0x19, 0x1c, 0x0b, + 0xc0, 0x0a, 0x3a, 0x08, 0xd2, 0xfc, 0x1d, 0xd2, + 0xd3, 0x02, 0x54, 0x81, 0x1e, 0x52, 0xd2, 0xfc, + 0x46, 0x60, 0x47, 0x70, 0xb5, 0x80, 0x00, 0x43, + 0x15, 0x5f, 0x43, 0xff, 0x1c, 0x02, 0x0f, 0xc0, + 0x07, 0xc0, 0x2f, 0x00, 0xd0, 0x15, 0x43, 0x0b, + 0xd0, 0x0c, 0x28, 0x00, 0xd1, 0x07, 0x1c, 0x10, + 0xf0, 0x00, 0xf9, 0x92, 0xf0, 0x00, 0xfa, 0x2c, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x21, 0x01, + 0x1c, 0x10, 0xe0, 0x11, 0x21, 0x01, 0x07, 0xc8, + 0xf0, 0x00, 0xfb, 0x2a, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x03, 0x13, 0x43, 0x0b, 0xd1, 0x05, + 0x28, 0x00, 0xd1, 0x03, 0x1c, 0x10, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x21, 0x01, 0x07, 0xc8, + 0xf0, 0x00, 0xfb, 0x14, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x1a, 0x43, 0x42, 0x93, + 0xd3, 0x30, 0x46, 0x84, 0x07, 0x8b, 0xd0, 0x07, + 0x1e, 0x52, 0xd3, 0x29, 0x78, 0x0b, 0x70, 0x03, + 0x1c, 0x40, 0x1c, 0x49, 0x07, 0x8b, 0xd1, 0xf7, + 0x07, 0x83, 0xd1, 0x17, 0x3a, 0x10, 0xd3, 0x05, + 0xb4, 0xb0, 0xc9, 0xb8, 0xc0, 0xb8, 0x3a, 0x10, + 0xd2, 0xfb, 0xbc, 0xb0, 0x32, 0x0c, 0xd3, 0x0f, + 0xc9, 0x08, 0xc0, 0x08, 0x1f, 0x12, 0xd2, 0xfb, + 0xe0, 0x0a, 0xc9, 0x08, 0x70, 0xc3, 0x0a, 0x1b, + 0x70, 0x83, 0x0a, 0x1b, 0x70, 0x43, 0x0a, 0x1b, + 0x70, 0x03, 0x1d, 0x00, 0x1f, 0x12, 0xd2, 0xf4, + 0x1c, 0xd2, 0xd3, 0x05, 0x78, 0x0b, 0x70, 0x03, + 0x1c, 0x49, 0x1c, 0x40, 0x1e, 0x52, 0xd2, 0xf9, + 0x46, 0x60, 0x47, 0x70, 0x1c, 0x03, 0x43, 0x0b, + 0x43, 0x13, 0x07, 0x9b, 0xd1, 0x04, 0x1f, 0x12, + 0x58, 0x8b, 0x50, 0x83, 0xd1, 0xfb, 0x47, 0x70, + 0x1e, 0x52, 0x5c, 0x8b, 0x54, 0x83, 0xd1, 0xfb, + 0x47, 0x70, 0x00, 0x00, 0x42, 0x41, 0x46, 0x8c, + 0x07, 0x83, 0xd0, 0x05, 0x78, 0x03, 0x2b, 0x00, + 0xd0, 0x16, 0x1c, 0x40, 0x07, 0x83, 0xd1, 0xf9, + 0x49, 0x0a, 0xc8, 0x04, 0x09, 0xc9, 0x1a, 0x53, + 0x43, 0x93, 0x01, 0xc9, 0x40, 0x0b, 0xd0, 0xf8, + 0x1f, 0x00, 0x0e, 0x13, 0xd0, 0x08, 0x1c, 0x40, + 0x02, 0x13, 0x0e, 0x1b, 0xd0, 0x04, 0x1c, 0x40, + 0x04, 0x13, 0x0e, 0x1b, 0xd0, 0x00, 0x1c, 0x40, + 0x44, 0x60, 0x47, 0x70, 0x80, 0x80, 0x80, 0x80, + 0x46, 0xbc, 0xb4, 0x60, 0x1c, 0x03, 0x43, 0x08, + 0x07, 0x80, 0xd1, 0x1b, 0x1f, 0x12, 0xd3, 0x0b, + 0x4e, 0x0f, 0xcb, 0x01, 0xc9, 0x80, 0x1b, 0xc0, + 0xd1, 0x09, 0x1b, 0xbd, 0x43, 0xbd, 0x01, 0xf7, + 0x40, 0x3d, 0xd1, 0x04, 0x1f, 0x12, 0xd2, 0xf4, + 0x1c, 0xd2, 0xd3, 0x0e, 0xe0, 0x02, 0x1f, 0x1b, + 0x1f, 0x09, 0x1c, 0xd2, 0x78, 0x18, 0x78, 0x0f, + 0x1b, 0xc0, 0xd1, 0x06, 0x2f, 0x00, 0xd0, 0x04, + 0x1c, 0x5b, 0x1c, 0x49, 0x1e, 0x52, 0xd2, 0xf5, + 0x20, 0x00, 0xbc, 0x60, 0x46, 0x67, 0x47, 0x70, + 0x01, 0x01, 0x01, 0x01, 0x46, 0x84, 0x1c, 0x03, + 0x43, 0x0b, 0x07, 0x9b, 0xd1, 0x15, 0x1f, 0x12, + 0xd3, 0x0b, 0xb4, 0xb0, 0x4c, 0x10, 0x01, 0xe5, + 0xc9, 0x80, 0x1b, 0x3b, 0x43, 0xbb, 0x40, 0x2b, + 0xd1, 0x0f, 0xc0, 0x80, 0x1f, 0x12, 0xd2, 0xf7, + 0xbc, 0xb0, 0x1c, 0xd2, 0xd3, 0x11, 0x78, 0x0b, + 0x70, 0x03, 0x1c, 0x49, 0x1c, 0x40, 0x2b, 0x00, + 0xd0, 0x09, 0x1e, 0x52, 0xd2, 0xf7, 0x46, 0x60, + 0x47, 0x70, 0xbc, 0xb0, 0x1f, 0x09, 0x1c, 0xd2, + 0xe7, 0xf1, 0x70, 0x03, 0x1c, 0x40, 0x1e, 0x52, + 0xd2, 0xfb, 0x46, 0x60, 0x47, 0x70, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x47, 0x78, 0x00, 0x00, + 0xe2, 0x10, 0xc1, 0x02, 0x12, 0x60, 0x00, 0x00, + 0x03, 0x30, 0x00, 0x00, 0x03, 0xa0, 0x10, 0x00, + 0x01, 0x2f, 0xff, 0x1e, 0xe3, 0x8c, 0xc1, 0x01, + 0xe3, 0x8c, 0xc6, 0x1e, 0xe1, 0xb0, 0x28, 0x20, + 0x01, 0xa0, 0x08, 0x00, 0x02, 0x4c, 0xc4, 0x01, + 0xe1, 0xb0, 0x2c, 0x20, 0x01, 0xa0, 0x04, 0x00, + 0x02, 0x4c, 0xc5, 0x02, 0xe1, 0xb0, 0x2e, 0x20, + 0x01, 0xa0, 0x02, 0x00, 0x02, 0x4c, 0xc5, 0x01, + 0xe1, 0xb0, 0x2f, 0x20, 0x01, 0xa0, 0x01, 0x00, + 0x02, 0x4c, 0xc6, 0x02, 0xe1, 0xb0, 0x2f, 0xa0, + 0x01, 0xa0, 0x00, 0x80, 0x02, 0x4c, 0xc6, 0x01, + 0xe1, 0xa0, 0x00, 0x80, 0xe1, 0xa0, 0x1a, 0x00, + 0xe1, 0x8c, 0x06, 0x20, 0xe1, 0x2f, 0xff, 0x1e, + 0x22, 0x01, 0x07, 0xd2, 0x40, 0x50, 0x47, 0x70, + 0xe2, 0x20, 0x01, 0x02, 0xe1, 0x2f, 0xff, 0x1e, + 0x00, 0x40, 0x08, 0x40, 0x47, 0x70, 0x00, 0x00, + 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0xc4, 0xff, + 0xe3, 0x8c, 0xc6, 0x0e, 0xe1, 0x5c, 0x00, 0x82, + 0x9a, 0x00, 0x00, 0x0a, 0xe1, 0xb0, 0x00, 0x80, + 0x03, 0x31, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, + 0x3a, 0x00, 0x00, 0x12, 0xe1, 0x50, 0x00, 0x0c, + 0x03, 0x51, 0x00, 0x00, 0x8a, 0x00, 0x01, 0x0c, + 0xe1, 0xb0, 0x20, 0x82, 0x8a, 0x00, 0x00, 0x18, + 0xe3, 0xa0, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, + 0x03, 0x53, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xf2, + 0xea, 0x00, 0x01, 0x09, 0xe1, 0x50, 0x00, 0x0c, + 0x03, 0x51, 0x00, 0x00, 0x8a, 0x00, 0x01, 0x02, + 0xe1, 0xb0, 0x20, 0x82, 0x33, 0xa0, 0x00, 0x01, + 0x23, 0xa0, 0x00, 0x00, 0x03, 0x33, 0x00, 0x00, + 0x03, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xe1, 0x50, 0x00, 0x0c, 0x03, 0x51, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0xf9, 0xe1, 0xb0, 0x20, 0x82, + 0x23, 0xa0, 0x00, 0x00, 0x21, 0x2f, 0xff, 0x1e, + 0xe1, 0x50, 0x00, 0x02, 0x01, 0x51, 0x00, 0x03, + 0x33, 0xa0, 0x00, 0x01, 0x23, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x02, + 0x01, 0x51, 0x00, 0x03, 0x83, 0xa0, 0x00, 0x01, + 0x93, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0xc0, 0x28, + 0xe8, 0xac, 0x7f, 0xff, 0xe2, 0x8f, 0x00, 0x0c, + 0xe2, 0x4c, 0x10, 0x3c, 0xe2, 0x4e, 0xe0, 0x04, + 0xe5, 0x8c, 0xe0, 0x00, 0xea, 0x00, 0x01, 0x91, + 0x80, 0x00, 0x00, 0x20, 0x44, 0x69, 0x76, 0x69, + 0x64, 0x65, 0x20, 0x62, 0x79, 0x20, 0x7a, 0x65, + 0x72, 0x6f, 0x00, 0x00, 0x2e, 0x08, 0x21, 0x58, + 0xb5, 0xf0, 0xb0, 0x8f, 0xf0, 0x00, 0xfd, 0x01, + 0x1c, 0x04, 0x1c, 0x16, 0x1c, 0x0f, 0xf0, 0x00, + 0xfd, 0x3b, 0x90, 0x03, 0x91, 0x04, 0x92, 0x05, + 0xa3, 0x3e, 0xcb, 0x0c, 0x1c, 0x20, 0x1c, 0x39, + 0xf0, 0x00, 0xfd, 0xae, 0x49, 0x3d, 0x22, 0x00, + 0x4f, 0x3d, 0x28, 0x00, 0xd0, 0x0a, 0x48, 0x3d, + 0xab, 0x03, 0xf0, 0x00, 0xfd, 0xfb, 0x90, 0x0c, + 0x91, 0x0d, 0x92, 0x0e, 0xaa, 0x03, 0xca, 0x07, + 0x1c, 0x3b, 0xe0, 0x08, 0x48, 0x38, 0xab, 0x03, + 0x3e, 0x01, 0xf0, 0x00, 0xfd, 0xef, 0x90, 0x0c, + 0x91, 0x0d, 0x92, 0x0e, 0x1c, 0x3b, 0xf0, 0x00, + 0xfe, 0x03, 0x1c, 0x3b, 0xf0, 0x00, 0xfd, 0xe6, + 0xab, 0x0c, 0xf0, 0x00, 0xfe, 0x17, 0x90, 0x09, + 0x91, 0x0a, 0x92, 0x0b, 0xf0, 0x00, 0xfe, 0x48, + 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0x0f, 0x4a, 0x2d, + 0xb4, 0x04, 0x23, 0x03, 0x1c, 0x2a, 0xf0, 0x00, + 0xfe, 0x5b, 0x90, 0x01, 0x91, 0x02, 0x92, 0x03, + 0xb0, 0x01, 0x4a, 0x29, 0xb4, 0x04, 0x23, 0x03, + 0x1c, 0x20, 0x1c, 0x39, 0x1c, 0x2a, 0xf0, 0x00, + 0xfe, 0x65, 0xb0, 0x01, 0x46, 0x6b, 0xf0, 0x00, + 0xfd, 0xf9, 0xab, 0x09, 0xf0, 0x00, 0xfd, 0xdc, + 0xab, 0x09, 0xf0, 0x00, 0xfd, 0xbf, 0x2e, 0x00, + 0xd0, 0x2c, 0xb0, 0x86, 0xab, 0x0c, 0xc3, 0x07, + 0x1c, 0x30, 0xf0, 0x00, 0xfe, 0x69, 0x1c, 0x0c, + 0x1c, 0x05, 0x1c, 0x17, 0x4b, 0x1b, 0x1c, 0x1e, + 0xf0, 0x00, 0xfd, 0xca, 0x90, 0x03, 0x91, 0x04, + 0x92, 0x05, 0xab, 0x0c, 0xf0, 0x00, 0xfd, 0xaa, + 0x90, 0x06, 0x91, 0x07, 0x92, 0x08, 0xab, 0x03, + 0xf0, 0x00, 0xfe, 0x86, 0xab, 0x0c, 0xf0, 0x00, + 0xfe, 0x83, 0x90, 0x00, 0x91, 0x01, 0x92, 0x02, + 0x1c, 0x28, 0x1c, 0x21, 0x1c, 0x3a, 0x1d, 0xf3, + 0x33, 0x05, 0xf0, 0x00, 0xfd, 0xb1, 0x46, 0x6b, + 0xf0, 0x00, 0xfd, 0x94, 0xab, 0x06, 0xf0, 0x00, + 0xfd, 0x91, 0xb0, 0x06, 0xb0, 0x0f, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x3f, 0xe6, 0xa0, 0x9e, + 0x66, 0x7f, 0x3b, 0xcd, 0x80, 0x00, 0x00, 0x00, + 0x2e, 0x03, 0x33, 0xb0, 0x80, 0x00, 0x3f, 0xff, + 0x80, 0x00, 0x3f, 0xfe, 0x2e, 0x03, 0x33, 0x5c, + 0x2e, 0x03, 0x33, 0x80, 0x2e, 0x03, 0x33, 0x44, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0xa0, 0x38, 0x80, + 0xe1, 0xa0, 0x38, 0xa3, 0xe1, 0xc0, 0x00, 0x03, + 0xe1, 0xd1, 0xc0, 0x80, 0x5a, 0x00, 0x00, 0x0c, + 0xe2, 0x53, 0x3b, 0x0f, 0x4a, 0x00, 0x00, 0x13, + 0x12, 0x83, 0xc0, 0x01, 0x13, 0x5c, 0x0b, 0x02, + 0xaa, 0x00, 0x00, 0x0d, 0xe1, 0xb0, 0xc5, 0xa2, + 0x2a, 0x00, 0x00, 0x58, 0xe1, 0x80, 0x0a, 0x03, + 0xe3, 0xc1, 0x11, 0x02, 0xe1, 0x80, 0x05, 0xa1, + 0xe1, 0x8c, 0x1a, 0x81, 0xe3, 0xa0, 0x30, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x10, 0x01, 0x01, + 0x1a, 0x00, 0x00, 0x40, 0xe2, 0x00, 0x01, 0x02, + 0xe3, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x30, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x33, 0x00, 0x00, + 0x13, 0xa0, 0x33, 0x19, 0x11, 0x2f, 0xff, 0x1e, + 0xe2, 0x93, 0x30, 0x34, 0x0a, 0x00, 0x00, 0x31, + 0x42, 0x00, 0x01, 0x02, 0x43, 0xa0, 0x10, 0x00, + 0x43, 0xa0, 0x30, 0x00, 0x41, 0x2f, 0xff, 0x1e, + 0xe2, 0x53, 0x30, 0x20, 0x0a, 0x00, 0x00, 0x13, + 0xba, 0x00, 0x00, 0x1a, 0xe1, 0xb0, 0xc3, 0x12, + 0x4a, 0x00, 0x00, 0x05, 0xe2, 0x63, 0xc0, 0x20, + 0xe1, 0x80, 0x0c, 0x31, 0xe1, 0xa0, 0x2c, 0x32, + 0xe1, 0x82, 0x13, 0x11, 0xe3, 0xa0, 0x30, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x96, 0xc0, 0x8c, + 0xe2, 0x63, 0xc0, 0x20, 0xe1, 0x80, 0x0c, 0x31, + 0xe1, 0xa0, 0x2c, 0x32, 0xe1, 0x82, 0x13, 0x11, + 0xe3, 0xa0, 0x30, 0x00, 0x03, 0x11, 0x00, 0x01, + 0x01, 0x2f, 0xff, 0x1e, 0xe2, 0x91, 0x10, 0x01, + 0x22, 0x80, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0xa0, 0x30, 0x00, 0xe3, 0x32, 0x01, 0x02, + 0x41, 0x2f, 0xff, 0x1e, 0x03, 0x11, 0x00, 0x01, + 0x01, 0x2f, 0xff, 0x1e, 0xe2, 0x91, 0x10, 0x01, + 0x22, 0x80, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, + 0xe2, 0x83, 0x30, 0x20, 0xe1, 0xb0, 0xc3, 0x11, + 0x4a, 0x00, 0x00, 0x04, 0xe2, 0x63, 0xc0, 0x20, + 0xe1, 0xa0, 0x1c, 0x31, 0xe2, 0x00, 0x01, 0x02, + 0xe3, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0x3c, 0x01, 0x02, 0x01, 0x92, 0xc0, 0x06, + 0xe2, 0x63, 0xc0, 0x20, 0xe1, 0xa0, 0x1c, 0x31, + 0x03, 0x11, 0x00, 0x01, 0x12, 0x81, 0x10, 0x01, + 0xe3, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0x31, 0x01, 0x02, 0x03, 0x32, 0x00, 0x00, + 0x03, 0xa0, 0x10, 0x00, 0x13, 0xa0, 0x10, 0x01, + 0xe3, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0x10, 0x02, 0x02, 0x1a, 0x00, 0x00, 0x0b, + 0xe3, 0xa0, 0x30, 0x00, 0xe3, 0x31, 0x00, 0x00, + 0x11, 0xb0, 0x10, 0x81, 0x43, 0xe0, 0x00, 0x00, + 0x41, 0x2f, 0xff, 0x1e, 0x03, 0x32, 0x00, 0x00, + 0x13, 0xa0, 0x34, 0x61, 0x11, 0x2f, 0xff, 0x1e, + 0xe2, 0x00, 0x01, 0x02, 0xe3, 0x80, 0x02, 0x07, + 0xe3, 0x80, 0x06, 0xff, 0xe1, 0x2f, 0xff, 0x1e, + 0xe1, 0xa0, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0xc1, 0x11, 0x02, 0xe1, 0xa0, 0xcb, 0x02, + 0xe1, 0x9c, 0xc0, 0x06, 0xe2, 0x00, 0xc1, 0x02, + 0xe1, 0xa0, 0x0a, 0x03, 0xe1, 0x80, 0x05, 0xa1, + 0xe1, 0xa0, 0x1a, 0x81, 0xe1, 0x81, 0x15, 0xa2, + 0xe3, 0xa0, 0x30, 0x00, 0x0a, 0x00, 0x00, 0x06, + 0xe2, 0x91, 0x10, 0x01, 0x22, 0x80, 0x00, 0x01, + 0xe2, 0x90, 0x26, 0x01, 0xe1, 0x80, 0x00, 0x0c, + 0x51, 0x2f, 0xff, 0x1e, 0xe3, 0xa0, 0x33, 0x19, + 0xe1, 0x2f, 0xff, 0x1e, 0x03, 0x11, 0x00, 0x01, + 0x01, 0x80, 0x00, 0x0c, 0x01, 0x2f, 0xff, 0x1e, + 0xe2, 0x91, 0x10, 0x01, 0x22, 0x80, 0x00, 0x01, + 0xe2, 0x90, 0x26, 0x01, 0xe1, 0x80, 0x00, 0x0c, + 0x51, 0x2f, 0xff, 0x1e, 0xe3, 0xa0, 0x33, 0x19, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe3, 0xa0, 0x20, 0x01, 0xea, 0x00, 0x00, 0x01, + 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0x20, 0x02, + 0xe2, 0x00, 0x31, 0x02, 0xe5, 0x9f, 0x00, 0x18, + 0xe5, 0x80, 0x20, 0x00, 0xe3, 0x31, 0x00, 0x00, + 0x03, 0xa0, 0x00, 0x00, 0x15, 0x9f, 0x00, 0x0c, + 0x18, 0x90, 0x00, 0x03, 0xe1, 0x80, 0x00, 0x03, + 0xe1, 0x2f, 0xff, 0x1e, 0x2e, 0x08, 0x20, 0xb8, + 0x2e, 0x08, 0x20, 0xc4, 0xe3, 0x10, 0x06, 0x01, + 0x13, 0xa0, 0x00, 0x00, 0x11, 0x2f, 0xff, 0x1e, + 0xea, 0x00, 0x00, 0x0a, 0xe3, 0x12, 0x07, 0x02, + 0x0a, 0x00, 0x00, 0x08, 0xe1, 0x5c, 0x00, 0x80, + 0x83, 0xa0, 0x00, 0x00, 0x81, 0x2f, 0xff, 0x1e, + 0x03, 0x51, 0x00, 0x00, 0x03, 0xa0, 0x00, 0x00, + 0x01, 0x2f, 0xff, 0x1e, 0xe3, 0x10, 0x07, 0x02, + 0x13, 0xa0, 0x00, 0x00, 0x11, 0x2f, 0xff, 0x1e, + 0xe3, 0xa0, 0x35, 0x06, 0xea, 0x00, 0x04, 0xee, + 0xe1, 0x2f, 0xff, 0x1f, 0xea, 0x00, 0x00, 0x3e, + 0xe5, 0x9f, 0x04, 0x5c, 0xe3, 0x50, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x02, 0xe3, 0xa0, 0x00, 0x20, + 0xe3, 0xa0, 0x10, 0x01, 0xef, 0x12, 0x34, 0x56, + 0xe5, 0x9f, 0x04, 0x48, 0xe3, 0x50, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x05, 0xe5, 0x90, 0x10, 0x00, + 0xe5, 0x9f, 0x04, 0x3c, 0xe5, 0x90, 0x30, 0x00, + 0xe5, 0x9f, 0x04, 0x38, 0xe5, 0x90, 0xd0, 0x00, + 0xea, 0x00, 0x00, 0x0b, 0xe3, 0xa0, 0x00, 0x16, + 0xe5, 0x9f, 0x44, 0x18, 0xe2, 0x84, 0x20, 0xa8, + 0xe2, 0x84, 0x10, 0xa4, 0xe5, 0x81, 0x20, 0x00, + 0xef, 0x12, 0x34, 0x56, 0xe2, 0x84, 0x00, 0xa8, + 0xe5, 0x90, 0xd0, 0x08, 0xe5, 0x90, 0x30, 0x04, + 0xe5, 0x90, 0x10, 0x00, 0xe3, 0x51, 0x00, 0x00, + 0x05, 0x9f, 0x14, 0x04, 0xe2, 0x8f, 0x00, 0x10, + 0xeb, 0x00, 0x00, 0x36, 0xe5, 0x9f, 0x03, 0xfc, + 0xe5, 0x9f, 0x33, 0xfc, 0xeb, 0x00, 0x00, 0x12, + 0xea, 0x00, 0x00, 0x4e, 0x2e, 0x00, 0x04, 0x04, + 0x2e, 0x03, 0x34, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, + 0xe3, 0x1c, 0x00, 0x01, 0x1a, 0x00, 0x00, 0x03, + 0xe1, 0xa0, 0xe0, 0x0f, 0xe1, 0x2f, 0xff, 0x1c, + 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0x8f, 0xe0, 0x01, 0xe1, 0x2f, 0xff, 0x1c, + 0x47, 0x78, 0x00, 0x00, 0xe8, 0xbd, 0x40, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x1c, 0x02, 0x1c, 0x13, + 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, + 0xe3, 0x13, 0x00, 0x01, 0x1a, 0x00, 0x00, 0x03, + 0xe1, 0xa0, 0xe0, 0x0f, 0xe1, 0x2f, 0xff, 0x13, + 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0x8f, 0xe0, 0x01, 0xe1, 0x2f, 0xff, 0x13, + 0x47, 0x78, 0x00, 0x00, 0xe8, 0xbd, 0x40, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe5, 0x9f, 0xc0, 0x44, + 0xe8, 0x8c, 0xff, 0xff, 0xe2, 0x8f, 0x00, 0x00, + 0xea, 0x00, 0x0c, 0xac, 0x00, 0x80, 0x0e, 0x09, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x64, + 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x6f, 0x6e, + 0x6c, 0x79, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x6f, + 0x6e, 0x20, 0x61, 0x20, 0x54, 0x68, 0x75, 0x6d, + 0x62, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, + 0x69, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x00, 0x00, + 0x2e, 0x08, 0x21, 0x58, 0x47, 0x78, 0x00, 0x00, + 0xe5, 0x9f, 0x73, 0x08, 0xe5, 0x87, 0x00, 0x00, + 0xe2, 0x8f, 0x50, 0xc9, 0xe2, 0x85, 0x5c, 0x02, + 0xe5, 0x87, 0x50, 0x10, 0xe2, 0x8f, 0x50, 0xe9, + 0xe2, 0x85, 0x5c, 0x02, 0xe5, 0x87, 0x50, 0x14, + 0xe1, 0xa0, 0x80, 0x0e, 0xe2, 0x87, 0x00, 0x04, + 0xeb, 0x00, 0x02, 0x39, 0xe9, 0x2d, 0x01, 0x00, + 0xe3, 0xa0, 0x00, 0x00, 0xe5, 0xc7, 0x00, 0x2c, + 0xe2, 0x87, 0x00, 0x04, 0xeb, 0x00, 0x00, 0xce, + 0xe3, 0xa0, 0x40, 0x00, 0xe2, 0x8d, 0x00, 0x04, + 0xe5, 0x97, 0x10, 0x00, 0xe3, 0xa0, 0x30, 0x00, + 0xe5, 0xc7, 0x30, 0x2e, 0xe2, 0x81, 0x30, 0x08, + 0xe8, 0x91, 0x00, 0x06, 0xe5, 0x9f, 0xc2, 0xcc, + 0xeb, 0xff, 0xff, 0xb7, 0xe8, 0xbd, 0x40, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe3, 0xa0, 0x80, 0x01, 0xea, 0x00, 0x00, 0x01, + 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0x80, 0x00, + 0xe1, 0xa0, 0x70, 0x00, 0xeb, 0x00, 0x02, 0x31, + 0xe1, 0xa0, 0x00, 0x08, 0xeb, 0x00, 0x00, 0x0d, + 0xe1, 0xa0, 0x20, 0x07, 0xe3, 0x52, 0x00, 0x00, + 0x12, 0x8f, 0x00, 0x08, 0x15, 0x9f, 0x10, 0x00, + 0xeb, 0x00, 0x0c, 0x6d, 0x41, 0x42, 0x45, 0x58, + 0x00, 0x80, 0x0e, 0x06, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, + 0x74, 0x6f, 0x6f, 0x20, 0x6c, 0x61, 0x72, 0x67, + 0x65, 0x00, 0x00, 0x00, 0xe3, 0xa0, 0x00, 0x00, + 0xe9, 0x2d, 0x40, 0x00, 0xe5, 0x9f, 0x32, 0x60, + 0xeb, 0xff, 0xff, 0xa9, 0xe8, 0xbd, 0x40, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe5, 0x9f, 0xc2, 0x28, 0xe5, 0xdc, 0x00, 0x2c, + 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xa0, 0x30, 0x00, + 0xe5, 0x9f, 0x12, 0x14, 0xe4, 0x81, 0xf0, 0x04, + 0xe8, 0xb3, 0x00, 0x04, 0xe8, 0xa1, 0x00, 0x04, + 0xe4, 0xd3, 0x20, 0x01, 0xe4, 0xc1, 0x20, 0x01, + 0xe3, 0x52, 0x00, 0x00, 0x1a, 0xff, 0xff, 0xfb, + 0xe1, 0xa0, 0xf0, 0x0e, 0x47, 0x78, 0x00, 0x00, + 0xe1, 0xa0, 0x80, 0x01, 0xeb, 0xff, 0xff, 0xf2, + 0xe5, 0x9f, 0x71, 0xe8, 0xe5, 0xd7, 0x20, 0x2f, + 0xe3, 0x52, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x2c, + 0xe3, 0xa0, 0x20, 0x01, 0xe5, 0xc7, 0x20, 0x2f, + 0xeb, 0x00, 0x00, 0x3b, 0xe1, 0xa0, 0x10, 0x08, + 0xeb, 0x00, 0x01, 0xfa, 0xe3, 0x50, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x1b, 0xe2, 0x88, 0xb0, 0x40, + 0xe9, 0x3b, 0x01, 0xef, 0xe9, 0x2c, 0x01, 0xef, + 0xe9, 0x3b, 0x01, 0xef, 0xe9, 0x2c, 0x01, 0xef, + 0xe5, 0x9f, 0x71, 0xa8, 0xe5, 0x97, 0x40, 0xa0, + 0xe3, 0x84, 0x40, 0x80, 0xe1, 0x21, 0xf0, 0x04, + 0xe1, 0xa0, 0xd0, 0x0c, 0xe1, 0xa0, 0xb0, 0x04, + 0xe5, 0x9f, 0x01, 0x8c, 0xe5, 0x90, 0x00, 0x04, + 0xe1, 0xa0, 0x10, 0x0d, 0xeb, 0x00, 0x02, 0x1a, + 0xe3, 0xa0, 0x10, 0x00, 0xe5, 0xc7, 0x10, 0x2f, + 0xe1, 0xa0, 0x10, 0x0d, 0xe3, 0x54, 0x00, 0x10, + 0x1a, 0x00, 0x00, 0x02, 0xe3, 0xa0, 0x00, 0x17, + 0xef, 0x12, 0x34, 0x56, 0xe3, 0x21, 0xf0, 0x93, + 0xe1, 0xa0, 0x00, 0x00, 0xe2, 0x81, 0xe0, 0x3c, + 0xe9, 0x5e, 0x7f, 0xff, 0xe1, 0xa0, 0x00, 0x00, + 0xe8, 0xde, 0x80, 0x00, 0xe2, 0x8f, 0x00, 0x00, + 0xea, 0x00, 0x0c, 0x2a, 0x00, 0x80, 0x0e, 0x07, + 0x4e, 0x6f, 0x20, 0x53, 0x74, 0x61, 0x63, 0x6b, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x54, 0x72, 0x61, + 0x70, 0x20, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x72, 0x00, 0x00, 0x00, 0xe2, 0x8f, 0x00, 0x00, + 0xea, 0x00, 0x0c, 0x20, 0x00, 0x80, 0x0e, 0x00, + 0x52, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, + 0x65, 0x20, 0x54, 0x72, 0x61, 0x70, 0x00, 0x00, + 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0xc1, 0x04, + 0xe3, 0xa0, 0x00, 0x00, 0xe5, 0xcc, 0x00, 0x2f, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe5, 0x9f, 0x00, 0xf0, 0xe5, 0x90, 0x00, 0x00, + 0xe5, 0x90, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0x00, 0xdc, + 0xe2, 0x80, 0x00, 0x04, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe5, 0x9f, 0xc0, 0xcc, + 0xe3, 0x50, 0x0b, 0x02, 0x33, 0xa0, 0x0b, 0x02, + 0xe2, 0x8c, 0xc0, 0x04, 0xe9, 0x9c, 0x00, 0x0c, + 0xe0, 0x53, 0x31, 0x00, 0x21, 0x53, 0x00, 0x02, + 0x3a, 0x00, 0x00, 0x03, 0xe5, 0x81, 0x20, 0x00, + 0xe0, 0x82, 0x21, 0x00, 0xe5, 0x8c, 0x20, 0x04, + 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x50, 0x03, + 0xe1, 0xa0, 0x10, 0x0c, 0xeb, 0x00, 0x00, 0x44, + 0xe3, 0x50, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0d, + 0xe5, 0x9d, 0xc0, 0x08, 0xe9, 0x9c, 0x40, 0x04, + 0xe1, 0x5e, 0x00, 0x01, 0x10, 0x4e, 0x30, 0x02, + 0xe0, 0x81, 0xe0, 0x00, 0x11, 0xa0, 0x00, 0x02, + 0x11, 0xa0, 0x20, 0x01, 0xe9, 0x8c, 0x40, 0x04, + 0x13, 0x53, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x03, + 0xe8, 0xbd, 0x50, 0x03, 0xe5, 0x81, 0x00, 0x00, + 0xe1, 0xa0, 0x01, 0x43, 0xe1, 0x2f, 0xff, 0x1e, + 0xe8, 0xbd, 0x50, 0x03, 0xe9, 0x9c, 0x00, 0x0c, + 0xe0, 0x43, 0x00, 0x02, 0xe1, 0xb0, 0x01, 0x40, + 0x03, 0xa0, 0x20, 0x00, 0x15, 0x8c, 0x30, 0x04, + 0xe5, 0x81, 0x20, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe2, 0x80, 0x20, 0x03, + 0xe3, 0xc2, 0x20, 0x03, 0xe5, 0x9f, 0xc0, 0x24, + 0xe2, 0x8c, 0xc0, 0x08, 0xe8, 0x9c, 0x00, 0x03, + 0xe0, 0x90, 0x20, 0x02, 0x31, 0x52, 0x00, 0x01, + 0x35, 0x8c, 0x20, 0x00, 0x23, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x2e, 0x08, 0x20, 0xd4, + 0x2e, 0x08, 0x20, 0xa0, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x02, 0x56, 0x44, 0x2e, 0x02, 0x56, 0x40, + 0x2e, 0x02, 0x56, 0x3c, 0x2e, 0x08, 0x9a, 0x04, + 0x2e, 0x00, 0x1b, 0x8d, 0x2e, 0x01, 0x99, 0xd5, + 0x2e, 0x01, 0x98, 0x89, 0x2e, 0x01, 0x99, 0x49, + 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0x00, 0x04, + 0xe5, 0x90, 0x00, 0x00, 0xe2, 0x00, 0x04, 0xff, + 0xe3, 0x50, 0x04, 0xea, 0x03, 0xa0, 0x00, 0x01, + 0x13, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe2, 0x40, 0x0b, 0x05, + 0xe3, 0x50, 0x0b, 0x1b, 0x33, 0xa0, 0x00, 0x01, + 0x23, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe2, 0x8f, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x20, 0x54, 0x68, 0x72, 0x6f, 0x75, + 0x67, 0x68, 0x20, 0x5a, 0x65, 0x72, 0x6f, 0x00, + 0x00, 0x02, 0x00, 0x01, 0x55, 0x6e, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x49, 0x6e, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, + 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x64, 0x20, 0x53, 0x57, 0x49, 0x20, 0x49, 0x6e, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, + 0x50, 0x72, 0x65, 0x66, 0x65, 0x74, 0x63, 0x68, + 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x04, 0x44, 0x61, 0x74, 0x61, + 0x20, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x20, 0x45, 0x78, 0x63, 0x65, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x06, 0x55, 0x6e, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x20, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x00, + 0x00, 0x02, 0x00, 0x07, 0x55, 0x6e, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x64, 0x20, 0x46, 0x61, + 0x73, 0x74, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x72, 0x75, 0x70, 0x74, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x01, 0x91, 0xcc, 0x2e, 0x01, 0x91, 0xe4, + 0x2e, 0x01, 0x92, 0x00, 0x2e, 0x01, 0x92, 0x20, + 0x2e, 0x01, 0x92, 0x34, 0x2e, 0x01, 0x92, 0x44, + 0x2e, 0x01, 0x92, 0x5c, 0x2e, 0x01, 0x92, 0x74, + 0xe2, 0x4f, 0x20, 0x28, 0xe7, 0x92, 0x01, 0x00, + 0xea, 0xff, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0x04, 0xf0, 0x00, + 0xf8, 0x04, 0xbc, 0x08, 0x60, 0x1a, 0xbc, 0x08, + 0x47, 0x18, 0x47, 0x78, 0xe1, 0xb0, 0x00, 0x80, + 0x03, 0x31, 0x00, 0x00, 0x01, 0xa0, 0x00, 0x60, + 0x03, 0xa0, 0x20, 0x00, 0x01, 0x2f, 0xff, 0x1e, + 0xe1, 0xa0, 0x2a, 0xa0, 0xe1, 0xc0, 0x0a, 0x82, + 0xe1, 0xa0, 0x00, 0x60, 0xe3, 0x32, 0x00, 0x00, + 0xe2, 0x42, 0x2c, 0x03, 0xe2, 0x42, 0x20, 0xfe, + 0x0a, 0x00, 0x00, 0x06, 0xe3, 0x80, 0x04, 0x3f, + 0xe3, 0x80, 0x06, 0x0e, 0xe2, 0x22, 0x3b, 0x01, + 0xe3, 0x33, 0x00, 0x01, 0x11, 0x2f, 0xff, 0x1e, + 0xe3, 0xa0, 0x10, 0x01, 0xea, 0xff, 0xfe, 0x39, + 0xe2, 0x00, 0xc1, 0x02, 0xe1, 0xa0, 0x06, 0x00, + 0xe2, 0x42, 0x20, 0x01, 0xe1, 0xb0, 0x00, 0x80, + 0x4a, 0x00, 0x00, 0x02, 0xe1, 0xb0, 0x10, 0x81, + 0x23, 0x80, 0x0a, 0x01, 0xea, 0xff, 0xff, 0xf9, + 0xe1, 0xa0, 0x04, 0xc0, 0xe3, 0xc0, 0x05, 0x01, + 0xe1, 0x8c, 0x01, 0x20, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0xb0, 0xc0, 0x80, + 0x03, 0x31, 0x00, 0x00, 0xe1, 0xa0, 0x35, 0x0c, + 0xe1, 0xa0, 0x0a, 0x2c, 0xe1, 0xa0, 0x25, 0x81, + 0xe1, 0x83, 0x1a, 0xa1, 0x12, 0x80, 0x0b, 0x1e, + 0xe1, 0xa0, 0x00, 0x60, 0x13, 0x81, 0x11, 0x02, + 0xe1, 0xb0, 0xca, 0xcc, 0x0a, 0x00, 0x00, 0x02, + 0xe3, 0x7c, 0x00, 0x01, 0x03, 0x80, 0x01, 0x01, + 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x11, 0x01, 0x02, + 0x01, 0x2f, 0xff, 0x1e, 0xe3, 0xd1, 0x11, 0x02, + 0x0a, 0x00, 0x00, 0x15, 0xe1, 0xb0, 0x38, 0x21, + 0x01, 0xa0, 0x18, 0x01, 0x03, 0xa0, 0xc0, 0x10, + 0x13, 0xa0, 0xc0, 0x00, 0xe1, 0xb0, 0x3c, 0x21, + 0x01, 0xa0, 0x14, 0x01, 0x02, 0x8c, 0xc0, 0x08, + 0xe1, 0xb0, 0x3e, 0x21, 0x01, 0xa0, 0x12, 0x01, + 0x02, 0x8c, 0xc0, 0x04, 0xe1, 0xb0, 0x3f, 0x21, + 0x01, 0xa0, 0x11, 0x01, 0x02, 0x8c, 0xc0, 0x02, + 0xe1, 0xb0, 0x3f, 0xa1, 0x01, 0xa0, 0x10, 0x81, + 0x02, 0x8c, 0xc0, 0x01, 0xe2, 0x6c, 0x30, 0x20, + 0xe1, 0x81, 0x13, 0x32, 0xe1, 0xa0, 0x2c, 0x12, + 0xe0, 0x40, 0x00, 0x0c, 0xe2, 0x80, 0x00, 0x01, + 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xb0, 0x38, 0x22, + 0x01, 0xa0, 0x28, 0x02, 0x03, 0xa0, 0xc0, 0x10, + 0x13, 0xa0, 0xc0, 0x00, 0xe1, 0xb0, 0x3c, 0x22, + 0x01, 0xa0, 0x24, 0x02, 0x02, 0x8c, 0xc0, 0x08, + 0xe1, 0xb0, 0x3e, 0x22, 0x01, 0xa0, 0x22, 0x02, + 0x02, 0x8c, 0xc0, 0x04, 0xe1, 0xb0, 0x3f, 0x22, + 0x01, 0xa0, 0x21, 0x02, 0x02, 0x8c, 0xc0, 0x02, + 0xe1, 0xb0, 0x3f, 0xa2, 0x01, 0xa0, 0x20, 0x82, + 0x02, 0x8c, 0xc0, 0x01, 0xe1, 0xa0, 0x10, 0x02, + 0xe3, 0xa0, 0x20, 0x00, 0xe2, 0x40, 0x00, 0x1f, + 0xe0, 0x40, 0x00, 0x0c, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0xc4, 0xff, + 0xe3, 0x8c, 0xc6, 0x0e, 0xe1, 0x5c, 0x00, 0x82, + 0x9a, 0x00, 0x00, 0x0a, 0xe1, 0xb0, 0x00, 0x80, + 0x03, 0x31, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, + 0x3a, 0x00, 0x00, 0x11, 0xe1, 0x50, 0x00, 0x0c, + 0x03, 0x51, 0x00, 0x00, 0x8a, 0xff, 0xfd, 0xf2, + 0xe1, 0xb0, 0x20, 0x82, 0x8a, 0x00, 0x00, 0x17, + 0xe3, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x03, 0x53, 0x00, 0x00, 0x0a, 0xff, 0xff, 0xf2, + 0xea, 0xff, 0xfd, 0xef, 0xe1, 0x50, 0x00, 0x0c, + 0x03, 0x51, 0x00, 0x00, 0x8a, 0xff, 0xfd, 0xe8, + 0xe1, 0xb0, 0x20, 0x82, 0x03, 0x33, 0x00, 0x00, + 0x83, 0xa0, 0x00, 0x01, 0x93, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x0c, + 0x03, 0x51, 0x00, 0x00, 0x8a, 0xff, 0xfd, 0xe0, + 0xe1, 0xb0, 0x20, 0x82, 0x23, 0xa0, 0x00, 0x01, + 0x21, 0x2f, 0xff, 0x1e, 0xe1, 0x50, 0x00, 0x02, + 0x01, 0x51, 0x00, 0x03, 0x93, 0xa0, 0x00, 0x00, + 0x83, 0xa0, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, + 0xe1, 0x50, 0x00, 0x02, 0x01, 0x51, 0x00, 0x03, + 0x33, 0xa0, 0x00, 0x01, 0x23, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe9, 0x2d, 0x4b, 0xf0, 0xe8, 0x93, 0x00, 0x38, + 0xe3, 0x10, 0x01, 0x01, 0x03, 0x13, 0x01, 0x01, + 0x1a, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x02, 0x30, + 0xeb, 0x00, 0x03, 0x38, 0xe8, 0xbd, 0x4b, 0xf0, + 0xe1, 0x2f, 0xff, 0x1e, 0xe2, 0x4f, 0xe0, 0x14, + 0xe3, 0xa0, 0xb0, 0x00, 0xea, 0x00, 0x02, 0x86, + 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x4b, 0xf0, + 0xe8, 0x93, 0x00, 0x38, 0xe3, 0x10, 0x01, 0x01, + 0x03, 0x13, 0x01, 0x01, 0x1a, 0x00, 0x00, 0x03, + 0xeb, 0x00, 0x03, 0x5e, 0xeb, 0x00, 0x03, 0x2b, + 0xe8, 0xbd, 0x4b, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, + 0xe2, 0x4f, 0xe0, 0x14, 0xe3, 0xa0, 0xb0, 0x00, + 0xea, 0x00, 0x03, 0xf8, 0x47, 0x78, 0x00, 0x00, + 0xe9, 0x2d, 0x4b, 0xf0, 0xe8, 0x93, 0x00, 0x38, + 0xe3, 0xa0, 0xb0, 0x00, 0xe1, 0xd1, 0xc0, 0x80, + 0x41, 0xd4, 0xc0, 0x83, 0x5a, 0x00, 0x00, 0x04, + 0xe3, 0xa0, 0xb0, 0x04, 0xeb, 0x00, 0x04, 0x3f, + 0xeb, 0x00, 0x03, 0x1c, 0xe8, 0xbd, 0x4b, 0xf0, + 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x11, 0x01, 0x02, + 0x0a, 0x00, 0x00, 0x08, 0xe3, 0x10, 0x01, 0x01, + 0x03, 0x13, 0x01, 0x01, 0x02, 0x4f, 0xe0, 0x24, + 0xe3, 0xa0, 0xb0, 0x04, 0x0a, 0x00, 0x05, 0x5b, + 0xe0, 0x23, 0x00, 0x00, 0xe2, 0x00, 0x01, 0x02, + 0xe8, 0xbd, 0x4b, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, + 0xe3, 0x14, 0x01, 0x02, 0x03, 0xa0, 0x34, 0x62, + 0x13, 0xa0, 0x34, 0x61, 0xea, 0x00, 0x02, 0x9d, + 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x4b, 0xf0, + 0xe1, 0xa0, 0x30, 0x00, 0xe1, 0xa0, 0x40, 0x01, + 0xe1, 0xa0, 0x50, 0x02, 0xe3, 0x10, 0x01, 0x01, + 0x1a, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x03, 0x35, + 0xeb, 0x00, 0x03, 0x02, 0xe8, 0xbd, 0x4b, 0xf0, + 0xe1, 0x2f, 0xff, 0x1e, 0xe2, 0x4f, 0xe0, 0x14, + 0xe3, 0xa0, 0xb0, 0x00, 0xea, 0x00, 0x03, 0xcf, + 0xb4, 0x77, 0x46, 0x76, 0x1e, 0x5d, 0x9b, 0x06, + 0x1c, 0x1c, 0x34, 0x0c, 0xf7, 0xff, 0xff, 0x8c, + 0x1c, 0x23, 0x34, 0x0c, 0xf7, 0xff, 0xff, 0x6e, + 0x46, 0x6b, 0xf7, 0xff, 0xff, 0x85, 0x1e, 0x6d, + 0xd1, 0xf6, 0xb0, 0x03, 0x46, 0xb6, 0xbc, 0x70, + 0x47, 0x70, 0x00, 0x00, 0xb4, 0x77, 0x46, 0x76, + 0x1e, 0x5d, 0x9b, 0x06, 0x1c, 0x1c, 0x34, 0x0c, + 0xf7, 0xff, 0xff, 0x5c, 0x46, 0x6b, 0xf7, 0xff, + 0xff, 0x73, 0x1c, 0x23, 0x34, 0x0c, 0xf7, 0xff, + 0xff, 0x55, 0x1e, 0x6d, 0xd1, 0xf6, 0xb0, 0x03, + 0x46, 0xb6, 0xbc, 0x70, 0x47, 0x70, 0x00, 0x00, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0xb0, 0x10, 0x00, + 0xe2, 0x00, 0x01, 0x02, 0x42, 0x61, 0x10, 0x00, + 0xe3, 0xa0, 0x20, 0x00, 0x01, 0x2f, 0xff, 0x1e, + 0xe3, 0x80, 0x09, 0x01, 0xe3, 0x80, 0x00, 0x1e, + 0xe1, 0xb0, 0xc8, 0x21, 0x01, 0xa0, 0x18, 0x01, + 0x02, 0x40, 0x00, 0x10, 0xe1, 0xb0, 0xcc, 0x21, + 0x01, 0xa0, 0x14, 0x01, 0x02, 0x40, 0x00, 0x08, + 0xe1, 0xb0, 0xce, 0x21, 0x01, 0xa0, 0x12, 0x01, + 0x02, 0x40, 0x00, 0x04, 0xe1, 0xb0, 0xcf, 0x21, + 0x01, 0xa0, 0x11, 0x01, 0x02, 0x40, 0x00, 0x02, + 0xe1, 0xb0, 0xcf, 0xa1, 0x01, 0xa0, 0x10, 0x81, + 0x02, 0x40, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x4b, 0xf0, + 0xe8, 0x93, 0x00, 0x38, 0xe2, 0x23, 0x31, 0x02, + 0xe3, 0x10, 0x01, 0x01, 0x03, 0x13, 0x01, 0x01, + 0x1a, 0x00, 0x00, 0x03, 0xeb, 0x00, 0x01, 0xbe, + 0xeb, 0x00, 0x02, 0xc6, 0xe8, 0xbd, 0x4b, 0xf0, + 0xe1, 0x2f, 0xff, 0x1e, 0xe2, 0x4f, 0xe0, 0x14, + 0xe3, 0xa0, 0xb0, 0x00, 0xea, 0x00, 0x02, 0x14, + 0x47, 0x78, 0x00, 0x00, 0xe3, 0xa0, 0xb0, 0x00, + 0xe1, 0xa0, 0x20, 0x01, 0xe8, 0x80, 0x00, 0x0e, + 0xe5, 0x9f, 0xc0, 0x38, 0xe5, 0x8c, 0xd0, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe5, 0x9f, 0x20, 0x28, 0xe5, 0x92, 0x20, 0x00, + 0xe5, 0x91, 0x40, 0x2c, 0xe5, 0x91, 0xc0, 0x34, + 0xe1, 0x5c, 0x00, 0x02, 0x23, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x78, 0x00, 0x00, + 0xe5, 0x9f, 0xc0, 0x08, 0xe5, 0x9c, 0xd0, 0x00, + 0xe3, 0xa0, 0xb0, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x2e, 0x08, 0x21, 0x98, 0x47, 0x78, 0x00, 0x00, + 0xe9, 0x2d, 0x40, 0x00, 0xe5, 0x9f, 0xc0, 0xe4, + 0xe5, 0x9c, 0x00, 0x00, 0xe3, 0x50, 0x00, 0x00, + 0xe3, 0xa0, 0x00, 0x04, 0x15, 0x8c, 0x00, 0x04, + 0x0b, 0x00, 0x00, 0x01, 0xe8, 0xbd, 0x40, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe5, 0x9f, 0xc0, 0xcc, + 0xea, 0xff, 0xfd, 0x6b, 0xe3, 0xa0, 0x10, 0x0a, + 0xe3, 0x50, 0x01, 0x02, 0x13, 0x50, 0x01, 0x06, + 0x13, 0x50, 0x01, 0x16, 0x03, 0xa0, 0x10, 0x03, + 0xe3, 0x50, 0x01, 0x0a, 0x13, 0x50, 0x01, 0x0e, + 0x03, 0xa0, 0x10, 0x05, 0xe5, 0x9f, 0x20, 0xa8, + 0xe1, 0x50, 0x00, 0x02, 0xe2, 0x82, 0x20, 0xff, + 0x21, 0x52, 0x00, 0x00, 0x23, 0xa0, 0x10, 0x02, + 0xe3, 0x50, 0x01, 0x82, 0x03, 0xa0, 0x10, 0x02, + 0xe3, 0x50, 0x01, 0x86, 0x03, 0xa0, 0x10, 0x07, + 0xe5, 0x9f, 0x20, 0x88, 0xe0, 0x50, 0x20, 0x02, + 0x13, 0x52, 0x00, 0x01, 0x03, 0xa0, 0x10, 0x05, + 0xe1, 0xa0, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x02, + 0xe1, 0xa0, 0x30, 0x00, 0xeb, 0xff, 0xff, 0xe4, + 0xe8, 0xbd, 0x40, 0x02, 0xe5, 0x9f, 0xc0, 0x50, + 0xe3, 0xa0, 0x20, 0x01, 0xe5, 0xcc, 0x20, 0x00, + 0xe9, 0x2d, 0x00, 0x0a, 0xeb, 0xff, 0xff, 0xdc, + 0xea, 0x00, 0x00, 0x09, 0x47, 0x78, 0x00, 0x00, + 0xe5, 0x9f, 0xc0, 0x30, 0xe3, 0xa0, 0x10, 0x00, + 0xe5, 0x8c, 0x10, 0x00, 0xe5, 0x9c, 0x00, 0x04, + 0xe3, 0x50, 0x00, 0x00, 0x01, 0x2f, 0xff, 0x1e, + 0xe5, 0x8c, 0x10, 0x04, 0xea, 0xff, 0xff, 0xd2, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0xa0, 0xc0, 0x0d, + 0xe9, 0x2d, 0xd9, 0xf0, 0xe2, 0x4c, 0xb0, 0x04, + 0xe3, 0xa0, 0x10, 0x01, 0xea, 0xff, 0xfd, 0x88, + 0x2e, 0x08, 0x20, 0xbc, 0x2e, 0x08, 0x20, 0xce, + 0x2e, 0x01, 0xae, 0x81, 0x80, 0x00, 0x02, 0x00, + 0x80, 0x80, 0x0e, 0xa0, 0xb5, 0xff, 0xa6, 0x23, + 0xa5, 0x22, 0xa4, 0x22, 0x68, 0x5a, 0x68, 0x1f, + 0x4b, 0x21, 0x60, 0x5a, 0x23, 0x00, 0x4a, 0x21, + 0x70, 0x13, 0x70, 0x53, 0x70, 0x93, 0x4a, 0x20, + 0x2a, 0x00, 0xd0, 0x02, 0x9a, 0x02, 0xf7, 0xff, + 0xff, 0xfe, 0x48, 0x1e, 0x28, 0x00, 0xd0, 0x01, + 0xf7, 0xff, 0xff, 0xfe, 0x48, 0x1c, 0x28, 0x00, + 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xfe, 0x48, 0x1b, + 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x01, 0xfc, 0xb2, + 0x48, 0x19, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, + 0xff, 0xfe, 0x48, 0x18, 0x28, 0x00, 0xd0, 0x01, + 0xf0, 0x01, 0xfb, 0x18, 0x48, 0x16, 0x28, 0x00, + 0xd0, 0x01, 0xf0, 0x01, 0xfc, 0x89, 0x48, 0x15, + 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xfe, + 0xf7, 0xff, 0xff, 0xa0, 0x48, 0x12, 0x28, 0x00, + 0xd0, 0x04, 0x1c, 0x30, 0x1c, 0x29, 0x1c, 0x22, + 0xf0, 0x01, 0xfe, 0xa6, 0x2f, 0x00, 0xd0, 0x01, + 0xf7, 0xfe, 0xfd, 0xee, 0xb0, 0x04, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x3a, 0x74, 0x74, 0x00, + 0x2e, 0x08, 0x21, 0x9c, 0x2e, 0x08, 0x21, 0x9c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xb2, 0x31, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xaf, 0x11, + 0x2e, 0x01, 0xb1, 0xfd, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x01, 0xb6, 0x55, 0xb5, 0x90, 0x28, 0x00, + 0xd0, 0x04, 0x48, 0x12, 0x28, 0x00, 0xd0, 0x01, + 0xf7, 0xff, 0xff, 0xfe, 0x4f, 0x10, 0x68, 0x78, + 0x28, 0x00, 0xd0, 0x03, 0xf7, 0xfe, 0xfd, 0xb6, + 0x20, 0x00, 0x60, 0x78, 0x4f, 0x0d, 0x78, 0x78, + 0x24, 0x01, 0x28, 0x00, 0xd1, 0x05, 0x70, 0x7c, + 0x48, 0x0b, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, + 0xff, 0xfe, 0x78, 0xb8, 0x28, 0x00, 0xd1, 0x05, + 0x70, 0xbc, 0x48, 0x08, 0x28, 0x00, 0xd0, 0x01, + 0xf0, 0x01, 0xfe, 0xb2, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x08, 0x21, 0x9c, 0x2e, 0x08, 0x21, 0x9c, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xb6, 0xf5, + 0xb5, 0x90, 0x1c, 0x0c, 0x21, 0x01, 0x1c, 0x17, + 0xf0, 0x01, 0xfa, 0xbc, 0x21, 0x00, 0x1c, 0x20, + 0xf0, 0x01, 0xfa, 0xb8, 0x21, 0x02, 0x1c, 0x38, + 0xf0, 0x01, 0xfa, 0xb4, 0x20, 0x01, 0xf7, 0xff, + 0xfa, 0x5d, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0xf1, 0x20, 0x00, 0xb0, 0x89, 0x90, 0x06, + 0x26, 0x00, 0x90, 0x05, 0x20, 0x01, 0x90, 0x04, + 0x27, 0x00, 0x20, 0x00, 0x90, 0x03, 0x90, 0x02, + 0x25, 0x00, 0x90, 0x01, 0xf0, 0x01, 0xfb, 0xe2, + 0x1c, 0x04, 0x78, 0x00, 0x28, 0x00, 0xd0, 0x17, + 0x49, 0xe3, 0x5d, 0xe0, 0x5c, 0x08, 0x08, 0x40, + 0xd3, 0x06, 0x37, 0x01, 0x5d, 0xe0, 0x5c, 0x08, + 0x08, 0x40, 0xd2, 0xfa, 0xe0, 0x00, 0x37, 0x01, + 0x5d, 0xe0, 0x5c, 0x0a, 0x08, 0x52, 0xd2, 0x01, + 0x28, 0x00, 0xd1, 0xf8, 0x98, 0x04, 0x30, 0x01, + 0x90, 0x04, 0x5d, 0xe0, 0x28, 0x00, 0xd1, 0xe8, + 0x98, 0x04, 0x00, 0x80, 0xf0, 0x01, 0xfc, 0x16, + 0x4b, 0xd6, 0x93, 0x08, 0x60, 0x18, 0x1c, 0x78, + 0xf0, 0x01, 0xfc, 0x10, 0x9b, 0x08, 0x60, 0x58, + 0x48, 0xd3, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xff, + 0xff, 0xfe, 0x21, 0x00, 0x20, 0x00, 0x90, 0x04, + 0x48, 0xd0, 0x90, 0x07, 0x78, 0x27, 0x34, 0x01, + 0x2e, 0x00, 0xd1, 0x58, 0x2f, 0x22, 0xd0, 0x01, + 0x2f, 0x27, 0xd1, 0x02, 0x97, 0x05, 0x1c, 0x3e, + 0xe0, 0x93, 0x98, 0x06, 0x42, 0x81, 0xd1, 0x4e, + 0x98, 0x03, 0x28, 0x00, 0xd1, 0x4b, 0x25, 0x00, + 0x43, 0xed, 0x1c, 0x2a, 0x95, 0x01, 0x22, 0x00, + 0xab, 0x00, 0x70, 0x1a, 0x70, 0x5a, 0x1e, 0x60, + 0x78, 0x02, 0x2a, 0x30, 0xdb, 0x04, 0x2a, 0x39, + 0xdc, 0x02, 0x30, 0x01, 0x1f, 0xd5, 0x3d, 0x29, + 0x78, 0x02, 0x2a, 0x3e, 0xd0, 0x01, 0x2a, 0x3c, + 0xd1, 0x35, 0x2a, 0x3e, 0xd1, 0x0e, 0x22, 0x77, + 0xab, 0x00, 0x70, 0x1a, 0x2d, 0x00, 0xd0, 0x63, + 0x2d, 0x02, 0xdc, 0x62, 0x78, 0x42, 0x30, 0x01, + 0x2a, 0x3e, 0xd1, 0x13, 0x22, 0x61, 0x70, 0x1a, + 0x30, 0x01, 0xe0, 0x0f, 0x30, 0x01, 0x1c, 0x02, + 0xe0, 0x02, 0x2b, 0x3e, 0xd0, 0x56, 0x32, 0x01, + 0x78, 0x13, 0x2b, 0x00, 0xd0, 0x01, 0x2b, 0x20, + 0xd1, 0xf7, 0x2d, 0x00, 0xdc, 0x4d, 0x22, 0x72, + 0xab, 0x00, 0x70, 0x1a, 0x78, 0x02, 0x2a, 0x26, + 0xd1, 0x24, 0x23, 0x01, 0x42, 0xdd, 0xd0, 0x19, + 0x2d, 0x00, 0xdd, 0x5e, 0x78, 0x42, 0x30, 0x01, + 0x2a, 0x30, 0xdb, 0x5b, 0x2a, 0x32, 0xdc, 0x3c, + 0x30, 0x01, 0x1c, 0x2b, 0xd5, 0x04, 0x07, 0xdb, + 0x0f, 0xdb, 0x42, 0x5b, 0xe0, 0x02, 0xe0, 0x42, + 0x07, 0xdb, 0x0f, 0xdb, 0x33, 0x31, 0x42, 0x9a, + 0xd1, 0x63, 0x22, 0x00, 0xab, 0x00, 0x70, 0x1a, + 0x95, 0x01, 0xe0, 0x11, 0x22, 0x02, 0x92, 0x01, + 0xaa, 0x00, 0x78, 0x12, 0x30, 0x01, 0x2a, 0x72, + 0xd0, 0x09, 0xe0, 0x06, 0x23, 0x01, 0x42, 0xdd, + 0xd1, 0x06, 0xaa, 0x00, 0x78, 0x12, 0x2a, 0x72, + 0xd0, 0x01, 0x25, 0x01, 0xe0, 0x00, 0x25, 0x00, + 0xaa, 0x00, 0x78, 0x12, 0x2a, 0x00, 0xd0, 0x16, + 0x22, 0x01, 0x92, 0x03, 0x4a, 0x8c, 0x78, 0x03, + 0x5c, 0xd3, 0x08, 0x5b, 0xd3, 0x04, 0x78, 0x43, + 0x5c, 0xd3, 0x30, 0x01, 0x08, 0x5b, 0xd2, 0xfa, + 0x78, 0x02, 0x2a, 0x22, 0xd0, 0x01, 0x2a, 0x27, + 0xd1, 0x0c, 0x30, 0x01, 0x1c, 0x16, 0xe0, 0x09, + 0xe0, 0x6a, 0xe0, 0xfb, 0xe0, 0x23, 0x78, 0x02, + 0x2a, 0x00, 0xd0, 0x03, 0x4b, 0x80, 0x5c, 0x9a, + 0x08, 0x52, 0xd3, 0x61, 0x22, 0x01, 0x92, 0x02, + 0x1c, 0x04, 0x78, 0x27, 0x34, 0x01, 0x2e, 0x00, + 0xd0, 0x15, 0x2f, 0x5c, 0xd1, 0x0b, 0x78, 0x20, + 0x28, 0x22, 0xd0, 0x03, 0x28, 0x5c, 0xd0, 0x01, + 0x28, 0x27, 0xd1, 0x04, 0x34, 0x01, 0x1c, 0x07, + 0xe0, 0x09, 0xe0, 0xdf, 0xe0, 0xde, 0x1c, 0x30, + 0x42, 0xb7, 0xd1, 0x04, 0x40, 0x7e, 0x78, 0x27, + 0x34, 0x01, 0x42, 0x87, 0xd0, 0xfa, 0x2f, 0x00, + 0xd0, 0x0c, 0x2e, 0x00, 0xd1, 0x03, 0x48, 0x6e, + 0x5d, 0xc0, 0x08, 0x40, 0xd2, 0x06, 0x1c, 0x08, + 0x9b, 0x08, 0x68, 0x5a, 0x54, 0x17, 0x31, 0x01, + 0xe0, 0x97, 0xe0, 0xc7, 0x98, 0x06, 0x42, 0x81, + 0xd1, 0x08, 0x98, 0x05, 0x28, 0x00, 0xd1, 0x05, + 0x98, 0x02, 0x28, 0x00, 0xd0, 0x74, 0x98, 0x03, + 0x28, 0x00, 0xd1, 0x72, 0x22, 0x00, 0x1c, 0x08, + 0x9b, 0x08, 0x68, 0x5b, 0x54, 0x1a, 0x98, 0x02, + 0x31, 0x01, 0x28, 0x00, 0xd0, 0x6a, 0x98, 0x03, + 0x28, 0x00, 0xd0, 0x13, 0x01, 0xa8, 0x99, 0x07, + 0x18, 0x42, 0x9b, 0x08, 0x68, 0x58, 0x99, 0x06, + 0x18, 0x40, 0x46, 0x69, 0xf0, 0x01, 0xfc, 0x72, + 0x28, 0x00, 0xd1, 0x07, 0x9b, 0x08, 0x68, 0x58, + 0x99, 0x06, 0x18, 0x41, 0xa2, 0x58, 0xa0, 0x5e, + 0xf7, 0xff, 0xfe, 0xb6, 0x23, 0x01, 0x98, 0x01, + 0x42, 0xd8, 0xdd, 0x51, 0x98, 0x01, 0x28, 0x00, + 0xda, 0x03, 0x40, 0x18, 0x42, 0x40, 0xe0, 0x02, + 0xe0, 0x90, 0x07, 0xc0, 0x0f, 0xc0, 0x1c, 0x41, + 0x98, 0x01, 0xf0, 0x01, 0xfd, 0x61, 0x01, 0x80, + 0x99, 0x07, 0x18, 0x40, 0xf0, 0x01, 0xf9, 0xfc, + 0x28, 0x00, 0xd1, 0x3d, 0xb0, 0x82, 0x98, 0x03, + 0x01, 0x80, 0x99, 0x09, 0x18, 0x40, 0x90, 0x01, + 0x9a, 0x03, 0x2a, 0x00, 0xda, 0x03, 0x07, 0xd2, + 0x0f, 0xd2, 0x42, 0x52, 0xe0, 0x01, 0x07, 0xd2, + 0x0f, 0xd2, 0x01, 0x90, 0x99, 0x09, 0x18, 0x40, + 0x30, 0x40, 0x90, 0x00, 0x20, 0xff, 0x30, 0x01, + 0xf0, 0x01, 0xfa, 0xe0, 0x1c, 0x01, 0x23, 0xff, + 0x22, 0x01, 0x02, 0x52, 0x98, 0x01, 0x33, 0x01, + 0xf0, 0x01, 0xfd, 0x56, 0x98, 0x01, 0x68, 0xc0, + 0x23, 0x01, 0x02, 0xdb, 0x43, 0x18, 0x99, 0x01, + 0x60, 0xc8, 0x08, 0xd8, 0xf0, 0x01, 0xfa, 0xce, + 0x1c, 0x01, 0x23, 0xff, 0x22, 0x01, 0x02, 0x52, + 0x98, 0x00, 0x33, 0x01, 0xf0, 0x01, 0xfd, 0x44, + 0x98, 0x00, 0x68, 0xc0, 0x23, 0x01, 0x02, 0xdb, + 0x43, 0x18, 0x99, 0x00, 0x60, 0xc8, 0xe0, 0x02, + 0xe0, 0x13, 0xe0, 0x12, 0xe0, 0x05, 0xb0, 0x02, + 0x20, 0x00, 0x90, 0x02, 0x90, 0x03, 0x99, 0x06, + 0xe0, 0x0b, 0x9b, 0x08, 0x68, 0x58, 0x9a, 0x06, + 0x18, 0x82, 0x98, 0x04, 0x1c, 0x43, 0x93, 0x04, + 0x00, 0x80, 0x9b, 0x08, 0x68, 0x1b, 0x50, 0x1a, + 0x91, 0x06, 0x2f, 0x00, 0xd0, 0x01, 0x26, 0x00, + 0x96, 0x05, 0x2f, 0x00, 0xd0, 0x00, 0xe6, 0x9d, + 0x2e, 0x00, 0xd0, 0x0a, 0xb0, 0x81, 0xab, 0x00, + 0x70, 0x1e, 0x22, 0x00, 0x70, 0x5a, 0x46, 0x69, + 0xa2, 0x24, 0xa0, 0x25, 0xf7, 0xff, 0xfe, 0x3c, + 0xb0, 0x01, 0x22, 0x00, 0x98, 0x04, 0x00, 0x80, + 0x9b, 0x08, 0x68, 0x19, 0x50, 0x0a, 0x98, 0x04, + 0x28, 0x00, 0xdd, 0x0f, 0x9b, 0x08, 0x68, 0x18, + 0x68, 0x01, 0x68, 0x09, 0x4b, 0x21, 0x40, 0x19, + 0xa2, 0x21, 0x68, 0x12, 0x42, 0x91, 0xd1, 0x05, + 0x9b, 0x04, 0x3b, 0x01, 0x93, 0x04, 0x30, 0x04, + 0x9b, 0x08, 0x60, 0x18, 0x9a, 0x09, 0x9b, 0x08, + 0x68, 0x19, 0x98, 0x04, 0xf7, 0xff, 0xf8, 0x0f, + 0xf7, 0xff, 0xf8, 0x88, 0x1e, 0x61, 0xa2, 0x19, + 0xa0, 0x19, 0xf7, 0xff, 0xfe, 0x15, 0xb0, 0x09, + 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x21, 0xb4, 0x2e, 0x08, 0x21, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x95, 0xe4, + 0x27, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x49, 0x2f, + 0x4f, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x00, 0x00, + 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x6f, 0x70, + 0x65, 0x6e, 0x20, 0x27, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, + 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x20, + 0x00, 0x00, 0x00, 0x00, 0xdf, 0xdf, 0xdf, 0xdf, + 0x52, 0x55, 0x4e, 0x00, 0x27, 0x0a, 0x00, 0x00, + 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x69, + 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x20, 0x49, + 0x2f, 0x4f, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x27, + 0x00, 0x00, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, + 0xe1, 0xa0, 0x68, 0x80, 0xe0, 0x56, 0x88, 0x83, + 0xe0, 0x20, 0xe0, 0x03, 0xe2, 0x00, 0x01, 0x02, + 0xe1, 0xa0, 0x38, 0xa6, 0x8a, 0x00, 0x00, 0x1a, + 0x01, 0xa0, 0x90, 0x08, 0x0a, 0x00, 0x00, 0x2e, + 0xe2, 0x68, 0x60, 0x00, 0xe1, 0xa0, 0x68, 0xa6, + 0xe0, 0x83, 0x30, 0x06, 0xe1, 0xa0, 0x92, 0xa6, + 0xe1, 0xc6, 0x62, 0x89, 0xe3, 0x59, 0x00, 0x02, + 0x33, 0x39, 0x00, 0x00, 0xe2, 0x66, 0x90, 0x20, + 0xe1, 0xa0, 0x89, 0x12, 0xe1, 0xa0, 0x26, 0x32, + 0xe1, 0x82, 0x29, 0x11, 0xe1, 0xa0, 0x16, 0x31, + 0x0a, 0x00, 0x00, 0x03, 0x11, 0x88, 0x81, 0x08, + 0x11, 0x82, 0x81, 0x28, 0x11, 0xa0, 0x20, 0x01, + 0x13, 0xa0, 0x10, 0x00, 0x3a, 0x00, 0x00, 0x04, + 0x21, 0x88, 0x80, 0x02, 0x21, 0x88, 0x81, 0x08, + 0x21, 0x81, 0x81, 0x28, 0x23, 0xa0, 0x20, 0x00, + 0x23, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x90, 0x00, + 0xea, 0x00, 0x00, 0x15, 0xe1, 0xa0, 0x68, 0xa8, + 0xe1, 0xa0, 0x82, 0xa6, 0xe1, 0xc6, 0x62, 0x88, + 0xe3, 0x58, 0x00, 0x02, 0x33, 0x38, 0x00, 0x00, + 0xe2, 0x66, 0x80, 0x20, 0xe1, 0xa0, 0x98, 0x15, + 0xe1, 0xa0, 0x56, 0x35, 0xe1, 0x85, 0x58, 0x14, + 0xe1, 0xa0, 0x46, 0x34, 0x0a, 0x00, 0x00, 0x03, + 0x11, 0x89, 0x91, 0x09, 0x11, 0x85, 0x91, 0x29, + 0x11, 0xa0, 0x50, 0x04, 0x13, 0xa0, 0x40, 0x00, + 0x3a, 0x00, 0x00, 0x04, 0x21, 0x89, 0x90, 0x05, + 0x21, 0x89, 0x91, 0x09, 0x21, 0x84, 0x91, 0x29, + 0x23, 0xa0, 0x50, 0x00, 0x23, 0xa0, 0x40, 0x00, + 0xe3, 0xa0, 0x80, 0x00, 0xe3, 0x1e, 0x01, 0x02, + 0x1a, 0x00, 0x00, 0x09, 0xe0, 0x98, 0x60, 0x09, + 0xe0, 0xb2, 0x20, 0x05, 0xe0, 0xb1, 0x10, 0x04, + 0x38, 0xbd, 0x80, 0x00, 0xe2, 0x83, 0x30, 0x01, + 0xe1, 0xb0, 0x10, 0x61, 0xe1, 0xb0, 0x20, 0x62, + 0xe1, 0x86, 0x60, 0x86, 0xe1, 0xa0, 0x60, 0x66, + 0xe8, 0xbd, 0x80, 0x00, 0xe0, 0x58, 0x60, 0x09, + 0xe0, 0xd2, 0x20, 0x05, 0xe0, 0xd1, 0x10, 0x04, + 0x2a, 0x00, 0x00, 0x03, 0xe2, 0x20, 0x01, 0x02, + 0xe2, 0x76, 0x60, 0x00, 0xe2, 0xf2, 0x20, 0x00, + 0xe2, 0xe1, 0x10, 0x00, 0xe3, 0x11, 0x01, 0x02, + 0x18, 0xbd, 0x80, 0x00, 0xe0, 0x96, 0x60, 0x06, + 0xe0, 0xb2, 0x20, 0x02, 0xe0, 0xa1, 0x10, 0x01, + 0xe2, 0x43, 0x30, 0x01, 0xe3, 0x11, 0x01, 0x02, + 0x18, 0xbd, 0x80, 0x00, 0xe1, 0x91, 0xe0, 0x02, + 0x1b, 0x00, 0x06, 0x90, 0x18, 0xbd, 0x80, 0x00, + 0xe3, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x10, 0x00, + 0xe2, 0x8d, 0xd0, 0x04, 0xe8, 0xbd, 0x4b, 0xf0, + 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xa0, 0x98, 0x83, + 0xe3, 0x79, 0x08, 0x02, 0x30, 0x09, 0x90, 0x04, + 0xe0, 0x19, 0x90, 0x83, 0xe1, 0xa0, 0x88, 0x80, + 0xe3, 0x78, 0x08, 0x02, 0x30, 0x08, 0x80, 0x01, + 0xe0, 0x18, 0x80, 0x80, 0x4a, 0x00, 0x00, 0x14, + 0xe3, 0x19, 0x01, 0x02, 0x1a, 0x00, 0x00, 0x22, + 0xe9, 0x2d, 0x40, 0x00, 0xe0, 0x11, 0x60, 0x80, + 0x43, 0xc1, 0x11, 0x02, 0x42, 0x80, 0x00, 0x01, + 0xe0, 0x14, 0x60, 0x83, 0x43, 0xc4, 0x41, 0x02, + 0x42, 0x83, 0x30, 0x01, 0xe3, 0x10, 0x01, 0x01, + 0x11, 0xb0, 0x68, 0x80, 0x1b, 0x00, 0x05, 0xf8, + 0xe3, 0x13, 0x01, 0x01, 0x11, 0xb0, 0x68, 0x83, + 0x1b, 0x00, 0x06, 0x2f, 0xeb, 0xff, 0xff, 0x8a, + 0xe3, 0x11, 0x01, 0x02, 0x18, 0xbd, 0x80, 0x00, + 0xe1, 0x91, 0xe0, 0x02, 0x1b, 0x00, 0x06, 0x6d, + 0xe8, 0xbd, 0x80, 0x00, 0xe3, 0x19, 0x01, 0x02, + 0x0a, 0x00, 0x00, 0x09, 0xe1, 0x82, 0x80, 0x81, + 0xe1, 0x88, 0x80, 0x05, 0xe1, 0x98, 0x80, 0x84, + 0x1a, 0x00, 0x06, 0xb7, 0xe0, 0x23, 0x85, 0x0b, + 0xe0, 0x38, 0x80, 0x00, 0x52, 0x00, 0x81, 0x02, + 0x5a, 0x00, 0x00, 0x0a, 0xe3, 0x80, 0x04, 0x61, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0x92, 0x80, 0x81, + 0x1a, 0x00, 0x06, 0xc0, 0xe2, 0x00, 0x81, 0x02, + 0xea, 0x00, 0x00, 0x04, 0xe1, 0x95, 0x80, 0x84, + 0x1a, 0x00, 0x06, 0xb3, 0xe2, 0x03, 0x81, 0x02, + 0xe3, 0x1b, 0x06, 0x02, 0x12, 0x28, 0x81, 0x02, + 0xe3, 0x1b, 0x06, 0x01, 0x12, 0x28, 0x81, 0x02, + 0xe2, 0x8f, 0x00, 0x14, 0xe8, 0x90, 0x00, 0x07, + 0xe1, 0x80, 0x00, 0x08, 0xe1, 0xa0, 0xf0, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7f, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0xbd, 0x4b, 0xf0, 0xe5, 0x9f, 0x20, 0x6c, + 0xe5, 0x92, 0x10, 0x00, 0xe1, 0xa0, 0xc1, 0x83, + 0xe1, 0xa0, 0xcd, 0xac, 0xe1, 0x81, 0x10, 0x0c, + 0xe5, 0x82, 0x10, 0x00, 0xe3, 0x13, 0x03, 0x01, + 0x1a, 0x00, 0x00, 0x05, 0xe3, 0x13, 0x04, 0x02, + 0x1a, 0x00, 0x00, 0x07, 0xe3, 0x11, 0x08, 0x01, + 0x0a, 0x00, 0x00, 0x44, 0xe2, 0x8f, 0x00, 0x54, + 0xea, 0x00, 0x00, 0x06, 0xe3, 0x11, 0x07, 0x01, + 0x0a, 0x00, 0x00, 0x34, 0xe2, 0x8f, 0x00, 0x74, + 0xea, 0x00, 0x00, 0x02, 0xe3, 0x11, 0x08, 0x02, + 0x0a, 0x00, 0x00, 0x30, 0xe2, 0x8f, 0x00, 0x8c, + 0xe5, 0x9f, 0x10, 0x1c, 0xe2, 0x4e, 0xe0, 0x04, + 0xe5, 0x81, 0xe0, 0x3c, 0xe3, 0xa0, 0xec, 0xde, + 0xe3, 0x8e, 0xe0, 0xad, 0xe1, 0x8e, 0xe8, 0x0e, + 0xe8, 0x81, 0x7f, 0xff, 0xea, 0x00, 0x00, 0x01, + 0x2e, 0x08, 0x22, 0xb4, 0x2e, 0x08, 0x22, 0xb8, + 0xe5, 0x9f, 0xc1, 0x2c, 0xe3, 0x5c, 0x00, 0x00, + 0x11, 0x2f, 0xff, 0x1c, 0xe6, 0x00, 0x00, 0x10, + 0x80, 0x00, 0x02, 0x00, 0x46, 0x6c, 0x6f, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x20, 0x45, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, + 0x80, 0x00, 0x02, 0x01, 0x46, 0x6c, 0x6f, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x20, 0x45, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x4f, 0x76, + 0x65, 0x72, 0x66, 0x6c, 0x6f, 0x77, 0x00, 0x00, + 0x80, 0x00, 0x02, 0x02, 0x46, 0x6c, 0x6f, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x20, 0x45, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x44, 0x69, + 0x76, 0x69, 0x64, 0x65, 0x20, 0x42, 0x79, 0x20, + 0x5a, 0x65, 0x72, 0x6f, 0x00, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x21, 0x02, 0xe3, 0x13, 0x07, 0x0f, + 0x1a, 0x00, 0x00, 0x13, 0xe3, 0x13, 0x05, 0x02, + 0x12, 0x8f, 0x00, 0x0c, 0x18, 0x90, 0x00, 0x03, + 0x05, 0x9f, 0x00, 0x0c, 0xe1, 0x80, 0x00, 0x02, + 0xe1, 0x2f, 0xff, 0x1e, 0x7f, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0xe3, 0x13, 0x07, 0x0f, 0x12, 0x00, 0x21, 0x02, + 0x1a, 0x00, 0x00, 0x07, 0xe3, 0x13, 0x05, 0x02, + 0x12, 0x8f, 0x00, 0x08, 0x18, 0x90, 0x00, 0x03, + 0x05, 0x9f, 0x00, 0x08, 0xe1, 0x2f, 0xff, 0x1e, + 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xc0, 0x00, 0x00, 0xe3, 0x13, 0x07, 0x02, + 0x13, 0xa0, 0x00, 0x00, 0x13, 0xa0, 0x10, 0x00, + 0x11, 0x2f, 0xff, 0x1e, 0xe3, 0x13, 0x07, 0x01, + 0x13, 0xe0, 0x00, 0x00, 0x13, 0xe0, 0x10, 0x00, + 0x11, 0x2f, 0xff, 0x1e, 0xe3, 0x13, 0x06, 0x01, + 0x13, 0xa0, 0x00, 0x00, 0x13, 0xa0, 0x11, 0x02, + 0x03, 0xa0, 0x01, 0x02, 0xe3, 0x32, 0x01, 0x02, + 0x11, 0xe0, 0x00, 0x00, 0x11, 0xe0, 0x10, 0x01, + 0xe1, 0x2f, 0xff, 0x1e, 0x2e, 0x01, 0x8f, 0x31, + 0xe3, 0x10, 0x02, 0x06, 0x1a, 0x00, 0x00, 0x0d, + 0xe1, 0xb0, 0x80, 0x86, 0x0a, 0x00, 0x00, 0x0d, + 0x22, 0x92, 0x20, 0x01, 0x22, 0x91, 0x10, 0x01, + 0x23, 0xa0, 0x11, 0x02, 0xe2, 0xb3, 0x30, 0x00, + 0x4a, 0x00, 0x00, 0x0a, 0xe2, 0x83, 0xc0, 0x01, + 0xe3, 0xcc, 0xc1, 0x01, 0xe3, 0x5c, 0x09, 0x02, + 0xc3, 0xa0, 0x33, 0x19, 0xe2, 0x00, 0x01, 0x02, + 0xe1, 0x83, 0x00, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe1, 0xa0, 0x30, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, + 0x21, 0xb0, 0x80, 0xa2, 0xea, 0xff, 0xff, 0xef, + 0xe3, 0x11, 0x01, 0x02, 0x1a, 0x00, 0x00, 0x04, + 0xe3, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x20, 0x00, + 0xe2, 0x00, 0x01, 0x02, 0xe3, 0xa0, 0x30, 0x00, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0xb0, 0xc8, 0x21, + 0x01, 0xa0, 0xc8, 0x22, 0x01, 0x8c, 0x18, 0x01, + 0x02, 0x83, 0x30, 0x10, 0xe1, 0xb0, 0xcc, 0x21, + 0x01, 0xa0, 0xcc, 0x22, 0x01, 0x8c, 0x14, 0x01, + 0x02, 0x83, 0x30, 0x08, 0xe1, 0xb0, 0xce, 0x21, + 0x01, 0xa0, 0xce, 0x22, 0x01, 0x8c, 0x12, 0x01, + 0x02, 0x83, 0x30, 0x04, 0xe1, 0xb0, 0xcf, 0x21, + 0x01, 0xa0, 0xcf, 0x22, 0x01, 0x8c, 0x11, 0x01, + 0x02, 0x83, 0x30, 0x02, 0xe1, 0xb0, 0xcf, 0xa1, + 0x01, 0xa0, 0xcf, 0xa2, 0x01, 0x8c, 0x10, 0x81, + 0x02, 0x83, 0x30, 0x01, 0xe1, 0xb0, 0x30, 0x03, + 0x4a, 0xff, 0xff, 0xe4, 0x5a, 0xff, 0xff, 0xda, + 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, + 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, + 0xe0, 0x88, 0x30, 0x09, 0xe2, 0x43, 0x3c, 0x3f, + 0xe2, 0x43, 0x30, 0xfe, 0xe3, 0x32, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x5d, 0xe3, 0x35, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x3d, 0xe9, 0x2d, 0x48, 0x81, + 0xe1, 0xa0, 0x08, 0x21, 0xe1, 0xc1, 0x78, 0x00, + 0xe1, 0xa0, 0x68, 0x24, 0xe1, 0xc4, 0x88, 0x06, + 0xe0, 0x09, 0x06, 0x90, 0xe0, 0x06, 0x06, 0x97, + 0xe0, 0x07, 0x07, 0x98, 0xe0, 0x97, 0x78, 0x06, + 0xe0, 0xa9, 0x98, 0x26, 0xe0, 0x08, 0x08, 0x90, + 0xe0, 0x97, 0x78, 0x08, 0xe0, 0xa9, 0x08, 0x28, + 0xe1, 0xa0, 0xb8, 0x22, 0xe1, 0xc2, 0xe8, 0x0b, + 0xe1, 0xa0, 0x68, 0x25, 0xe1, 0xc5, 0x88, 0x06, + 0xe0, 0x09, 0x06, 0x9b, 0xe0, 0x06, 0x06, 0x9e, + 0xe0, 0x0e, 0x0e, 0x98, 0xe0, 0x9e, 0xe8, 0x06, + 0xe0, 0xa9, 0x98, 0x26, 0xe0, 0x08, 0x08, 0x9b, + 0xe0, 0x9e, 0xe8, 0x08, 0xe0, 0xa9, 0xb8, 0x28, + 0xe0, 0x97, 0x70, 0x0b, 0xe2, 0xa0, 0x00, 0x00, + 0xe0, 0x97, 0xb0, 0x0e, 0xe0, 0xb7, 0x70, 0x00, + 0xe2, 0xa0, 0x00, 0x00, 0xe0, 0x51, 0x80, 0x02, + 0xe3, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x60, 0x00, + 0x31, 0xe0, 0x10, 0x01, 0x30, 0x44, 0x60, 0x05, + 0x10, 0x55, 0x90, 0x04, 0x03, 0xa0, 0x10, 0x00, + 0x31, 0xe0, 0x10, 0x01, 0x30, 0x46, 0x60, 0x08, + 0xe1, 0xa0, 0x48, 0x28, 0xe1, 0xc8, 0x58, 0x04, + 0xe1, 0xa0, 0x88, 0x29, 0xe1, 0xc9, 0x98, 0x08, + 0xe0, 0x22, 0x68, 0x94, 0xe0, 0x08, 0x08, 0x95, + 0xe0, 0x06, 0x05, 0x99, 0xe0, 0x96, 0x68, 0x08, + 0xe0, 0xa2, 0x28, 0x28, 0xe0, 0x09, 0x09, 0x94, + 0xe0, 0x96, 0x68, 0x09, 0xe0, 0xa2, 0x28, 0x29, + 0xe0, 0x9b, 0x60, 0x06, 0xe0, 0xb7, 0x20, 0x02, + 0xe0, 0xb0, 0x10, 0x01, 0xe1, 0x8e, 0xe1, 0x0e, + 0xe1, 0x86, 0x61, 0x2e, 0x48, 0xbd, 0x88, 0x81, + 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xb2, 0x20, 0x02, + 0xe0, 0xa1, 0x10, 0x01, 0xe2, 0x43, 0x30, 0x01, + 0xe8, 0xbd, 0x88, 0x81, 0xe1, 0xa0, 0x58, 0x24, + 0xe1, 0xc4, 0x68, 0x05, 0xe1, 0xa0, 0x88, 0x21, + 0xe1, 0xc1, 0x98, 0x08, 0xe0, 0x04, 0x08, 0x95, + 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x01, 0x06, 0x99, + 0xe0, 0x91, 0x18, 0x08, 0xe0, 0xa4, 0x48, 0x28, + 0xe0, 0x09, 0x09, 0x95, 0xe0, 0x91, 0x18, 0x09, + 0xe0, 0xa4, 0x48, 0x29, 0xe1, 0xa0, 0x88, 0x22, + 0xe1, 0xc2, 0x98, 0x08, 0xe0, 0x02, 0x08, 0x95, + 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x06, 0x06, 0x99, + 0xe0, 0x96, 0x68, 0x08, 0xe0, 0xa2, 0x28, 0x28, + 0xe0, 0x09, 0x09, 0x95, 0xe0, 0x96, 0x68, 0x09, + 0xe0, 0xa2, 0x58, 0x29, 0xe0, 0x95, 0x20, 0x01, + 0xe2, 0xb4, 0x10, 0x00, 0x41, 0xa0, 0xf0, 0x0e, + 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xb2, 0x20, 0x02, + 0xe0, 0xa1, 0x10, 0x01, 0xe2, 0x43, 0x30, 0x01, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x35, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x24, 0xe1, 0xa0, 0x28, 0x21, + 0xe1, 0xc1, 0x68, 0x02, 0xe1, 0xa0, 0x88, 0x24, + 0xe1, 0xc4, 0x98, 0x08, 0xe0, 0x01, 0x08, 0x92, + 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x04, 0x06, 0x99, + 0xe0, 0x94, 0x48, 0x08, 0xe0, 0xa1, 0x18, 0x28, + 0xe0, 0x09, 0x09, 0x92, 0xe0, 0x94, 0x48, 0x09, + 0xe0, 0xa1, 0x18, 0x29, 0xe1, 0xa0, 0x88, 0x25, + 0xe1, 0xc5, 0x98, 0x08, 0xe0, 0x05, 0x08, 0x92, + 0xe0, 0x08, 0x08, 0x96, 0xe0, 0x06, 0x06, 0x99, + 0xe0, 0x96, 0x68, 0x08, 0xe0, 0xa5, 0x58, 0x28, + 0xe0, 0x09, 0x09, 0x92, 0xe0, 0x96, 0x68, 0x09, + 0xe0, 0xa5, 0x28, 0x29, 0xe0, 0x92, 0x20, 0x04, + 0xe2, 0xb1, 0x10, 0x00, 0x41, 0xa0, 0xf0, 0x0e, + 0xe0, 0x96, 0x60, 0x06, 0xe0, 0xb2, 0x20, 0x02, + 0xe0, 0xa1, 0x10, 0x01, 0xe2, 0x43, 0x30, 0x01, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0xc0, 0x81, 0x03, + 0xe3, 0xc3, 0x91, 0x03, 0xe0, 0x20, 0x00, 0x03, + 0xe2, 0x00, 0x01, 0x02, 0xe0, 0x88, 0x30, 0x09, + 0xe2, 0x43, 0x3c, 0x3f, 0xe2, 0x43, 0x30, 0xfe, + 0xe1, 0xa0, 0x58, 0x24, 0xe1, 0xc4, 0x68, 0x05, + 0xe1, 0xa0, 0x88, 0x21, 0xe1, 0xc1, 0x98, 0x08, + 0xe0, 0x01, 0x08, 0x95, 0xe0, 0x08, 0x08, 0x96, + 0xe0, 0x02, 0x06, 0x99, 0xe0, 0x92, 0x28, 0x08, + 0xe0, 0xa1, 0x18, 0x28, 0xe0, 0x09, 0x09, 0x95, + 0xe0, 0x92, 0x28, 0x09, 0xe0, 0xb1, 0x18, 0x29, + 0xe3, 0xa0, 0x60, 0x00, 0x41, 0xa0, 0xf0, 0x0e, + 0xe0, 0x92, 0x20, 0x02, 0xe0, 0xa1, 0x10, 0x01, + 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe1, 0xa0, 0x98, 0x83, 0xe3, 0x79, 0x08, 0x02, + 0x30, 0x09, 0x90, 0x04, 0xe0, 0x19, 0x90, 0x83, + 0xe1, 0xa0, 0x88, 0x80, 0xe3, 0x78, 0x08, 0x02, + 0x30, 0x08, 0x80, 0x01, 0xe0, 0x18, 0x80, 0x80, + 0x4a, 0x00, 0x00, 0x1f, 0xe3, 0x19, 0x01, 0x02, + 0x1a, 0x00, 0x00, 0x2f, 0xe1, 0x91, 0x80, 0x02, + 0x11, 0x94, 0x80, 0x05, 0x0a, 0x00, 0x00, 0x13, + 0xe0, 0x11, 0x60, 0x80, 0x43, 0xc1, 0x11, 0x02, + 0x42, 0x80, 0x00, 0x01, 0xe0, 0x14, 0x60, 0x83, + 0x43, 0xc4, 0x41, 0x02, 0x42, 0x83, 0x30, 0x01, + 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, + 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, + 0xe0, 0x88, 0x30, 0x09, 0xe2, 0x43, 0x3c, 0x3f, + 0xe2, 0x43, 0x30, 0xfe, 0xe9, 0x2d, 0x40, 0x00, + 0xe3, 0x11, 0x01, 0x02, 0x0b, 0x00, 0x04, 0xed, + 0xe3, 0x14, 0x01, 0x02, 0x0b, 0x00, 0x05, 0x04, + 0xe8, 0xbd, 0x40, 0x00, 0xea, 0xff, 0xff, 0x44, + 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, + 0xe3, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x20, 0x00, + 0xe3, 0xa0, 0x30, 0x00, 0xe3, 0xa0, 0x60, 0x00, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x19, 0x01, 0x02, + 0x0a, 0x00, 0x00, 0x09, 0xe1, 0x82, 0x80, 0x81, + 0xe1, 0x88, 0x80, 0x05, 0xe1, 0x98, 0x80, 0x84, + 0x1a, 0x00, 0x05, 0x2d, 0xe0, 0x20, 0x80, 0x03, + 0xe2, 0x08, 0x81, 0x02, 0xe2, 0x8f, 0x00, 0x44, + 0xe8, 0x90, 0x00, 0x07, 0xe1, 0x80, 0x00, 0x08, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0x92, 0x80, 0x81, + 0x1a, 0x00, 0x05, 0x36, 0xe1, 0x94, 0x80, 0x05, + 0x1a, 0xff, 0xff, 0xf5, 0xe3, 0x80, 0x04, 0x61, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0x95, 0x80, 0x84, + 0x1a, 0x00, 0x05, 0x27, 0xe1, 0x91, 0x80, 0x02, + 0x1a, 0xff, 0xff, 0xef, 0xe3, 0x80, 0x04, 0x61, + 0xe1, 0xa0, 0xf0, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe1, 0xa0, 0x80, 0x00, + 0xe1, 0xa0, 0x00, 0x03, 0xe1, 0xa0, 0x30, 0x08, + 0xe1, 0xa0, 0x80, 0x01, 0xe1, 0xa0, 0x10, 0x04, + 0xe1, 0xa0, 0x40, 0x08, 0xe1, 0xa0, 0x80, 0x02, + 0xe1, 0xa0, 0x20, 0x05, 0xe1, 0xa0, 0x50, 0x08, + 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, + 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, + 0xe0, 0x49, 0x30, 0x08, 0xe2, 0x83, 0x3c, 0x3f, + 0xe2, 0x83, 0x30, 0xff, 0xe9, 0x2d, 0x48, 0x89, + 0xe1, 0xa0, 0x08, 0x21, 0xe1, 0xc1, 0x78, 0x00, + 0xe1, 0xa0, 0xb8, 0x22, 0xe1, 0xc2, 0xe8, 0x0b, + 0xe2, 0x8f, 0x6e, 0x36, 0xe7, 0xd6, 0x64, 0x20, + 0xe0, 0x28, 0x66, 0x90, 0xe2, 0x68, 0x85, 0x02, + 0xe0, 0x06, 0x06, 0x98, 0xe1, 0xa0, 0x69, 0xa6, + 0xe2, 0x86, 0x60, 0x02, 0xe1, 0xa0, 0x86, 0xa1, + 0xe0, 0x29, 0x66, 0x98, 0xe2, 0x69, 0x92, 0x02, + 0xe1, 0xa0, 0x88, 0x29, 0xe1, 0xc9, 0x98, 0x08, + 0xe0, 0x02, 0x06, 0x99, 0xe0, 0x01, 0x06, 0x98, + 0xe0, 0x81, 0x68, 0x22, 0xe1, 0xa0, 0x63, 0x26, + 0xe1, 0xb0, 0x40, 0xa4, 0xe1, 0xb0, 0x50, 0x65, + 0x33, 0xa0, 0x30, 0x00, 0x23, 0xa0, 0x31, 0x02, + 0xe1, 0xa0, 0x87, 0xa4, 0xe0, 0x09, 0x08, 0x96, + 0xe1, 0xa0, 0x98, 0x29, 0xe0, 0x08, 0x0b, 0x99, + 0xe0, 0x55, 0x50, 0x08, 0xe0, 0x08, 0x09, 0x90, + 0xe0, 0xc4, 0x40, 0x08, 0xe0, 0x08, 0x0e, 0x99, + 0xe0, 0x53, 0x38, 0x08, 0xe0, 0xd5, 0x58, 0x28, + 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x58, 0x08, + 0x20, 0x55, 0x58, 0x08, 0xe0, 0xc4, 0x48, 0x28, + 0xe1, 0xa0, 0x18, 0x09, 0xe1, 0xa0, 0x81, 0x24, + 0xe0, 0x09, 0x08, 0x96, 0xe1, 0xa0, 0x98, 0x29, + 0xe0, 0x08, 0x0b, 0x99, 0xe0, 0x53, 0x39, 0x88, + 0xe0, 0xd5, 0x56, 0xa8, 0xe0, 0x08, 0x09, 0x90, + 0x30, 0x45, 0x59, 0x88, 0x20, 0x55, 0x59, 0x88, + 0xe0, 0xc4, 0x46, 0xa8, 0xe0, 0x08, 0x0e, 0x99, + 0xe0, 0x53, 0x31, 0x88, 0xe0, 0xd5, 0x5e, 0xa8, + 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x51, 0x88, + 0x20, 0x55, 0x51, 0x88, 0xe0, 0xc4, 0x4e, 0xa8, + 0xe1, 0xa0, 0x4d, 0x04, 0xe1, 0x84, 0x43, 0x25, + 0xe1, 0xa0, 0x5d, 0x05, 0xe1, 0x85, 0x53, 0x23, + 0xe1, 0xa0, 0x3d, 0x03, 0xe0, 0x81, 0x11, 0x89, + 0xe5, 0x9d, 0x80, 0x0c, 0xe3, 0x18, 0x00, 0x01, + 0x1a, 0x00, 0x00, 0x94, 0xe1, 0xa0, 0x87, 0xa4, + 0xe0, 0x09, 0x08, 0x96, 0xe1, 0xa0, 0x98, 0x29, + 0xe0, 0x08, 0x0b, 0x99, 0xe0, 0x55, 0x50, 0x08, + 0xe0, 0x08, 0x09, 0x90, 0xe0, 0xc4, 0x40, 0x08, + 0xe0, 0x08, 0x0e, 0x99, 0xe0, 0x53, 0x38, 0x08, + 0xe0, 0xd5, 0x58, 0x28, 0xe0, 0x08, 0x07, 0x99, + 0x30, 0x45, 0x58, 0x08, 0x20, 0x55, 0x58, 0x08, + 0xe0, 0xc4, 0x48, 0x28, 0xe1, 0xa0, 0x2b, 0x09, + 0xe0, 0x81, 0x15, 0x29, 0xe1, 0xa0, 0x81, 0x24, + 0xe0, 0x09, 0x08, 0x96, 0xe1, 0xa0, 0x98, 0x29, + 0xe0, 0x08, 0x0b, 0x99, 0xe0, 0x53, 0x39, 0x88, + 0xe0, 0xd5, 0x56, 0xa8, 0xe0, 0x08, 0x09, 0x90, + 0x30, 0x45, 0x59, 0x88, 0x20, 0x55, 0x59, 0x88, + 0xe0, 0xc4, 0x46, 0xa8, 0xe0, 0x08, 0x0e, 0x99, + 0xe0, 0x53, 0x31, 0x88, 0xe0, 0xd5, 0x5e, 0xa8, + 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x51, 0x88, + 0x20, 0x55, 0x51, 0x88, 0xe0, 0xc4, 0x4e, 0xa8, + 0xe1, 0xa0, 0x4d, 0x04, 0xe1, 0x84, 0x43, 0x25, + 0xe1, 0xa0, 0x5d, 0x05, 0xe1, 0x85, 0x53, 0x23, + 0xe1, 0xa0, 0x3d, 0x03, 0xe0, 0x92, 0x24, 0x89, + 0xe2, 0xa1, 0x10, 0x00, 0xe5, 0x9d, 0x80, 0x0c, + 0xe3, 0x18, 0x00, 0x02, 0x1a, 0x00, 0x00, 0x3f, + 0xe1, 0xa0, 0x87, 0xa4, 0xe0, 0x09, 0x08, 0x96, + 0xe1, 0xa0, 0x98, 0x29, 0xe0, 0x08, 0x0b, 0x99, + 0xe0, 0x55, 0x50, 0x08, 0xe0, 0x08, 0x09, 0x90, + 0xe0, 0xc4, 0x40, 0x08, 0xe0, 0x08, 0x0e, 0x99, + 0xe0, 0x53, 0x38, 0x08, 0xe0, 0xd5, 0x58, 0x28, + 0xe0, 0x08, 0x07, 0x99, 0x30, 0x45, 0x58, 0x08, + 0x20, 0x55, 0x58, 0x08, 0xe0, 0xc4, 0x48, 0x28, + 0xe1, 0xa0, 0x47, 0x04, 0xe1, 0x84, 0x49, 0x25, + 0xe1, 0xa0, 0x57, 0x05, 0xe1, 0x85, 0x59, 0x23, + 0xe1, 0xa0, 0x37, 0x03, 0xe1, 0xa0, 0x6e, 0x09, + 0xe0, 0x92, 0x22, 0x29, 0xe2, 0xa1, 0x10, 0x00, + 0xe1, 0x87, 0x08, 0x00, 0xe1, 0x8e, 0x78, 0x0b, + 0xe3, 0xa0, 0xe0, 0x00, 0xe0, 0x55, 0x90, 0x07, + 0xe0, 0xd4, 0x80, 0x00, 0x21, 0xa0, 0x50, 0x09, + 0x21, 0xa0, 0x40, 0x08, 0xe0, 0xae, 0xe0, 0x0e, + 0xe3, 0xa0, 0xb0, 0x00, 0xe0, 0x93, 0x30, 0x03, + 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xb4, 0x40, 0x04, + 0xe0, 0xab, 0xb0, 0x0b, 0xe0, 0x55, 0x90, 0x07, + 0xe0, 0xd4, 0x80, 0x00, 0xe2, 0xdb, 0xb0, 0x00, + 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, + 0xe0, 0xae, 0xe0, 0x0e, 0xe3, 0xa0, 0xb0, 0x00, + 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, + 0xe0, 0xb4, 0x40, 0x04, 0xe0, 0xab, 0xb0, 0x0b, + 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, + 0xe2, 0xdb, 0xb0, 0x00, 0x21, 0xa0, 0x50, 0x09, + 0x21, 0xa0, 0x40, 0x08, 0xe0, 0xae, 0xe0, 0x0e, + 0xe1, 0x94, 0x80, 0x05, 0x13, 0x86, 0x60, 0x01, + 0xe0, 0x96, 0x6e, 0x0e, 0xe2, 0xb2, 0x20, 0x00, + 0xe2, 0xb1, 0x10, 0x00, 0x48, 0xbd, 0x88, 0x89, + 0xe8, 0xbd, 0x48, 0x89, 0xe0, 0x96, 0x60, 0x06, + 0xe0, 0xb2, 0x20, 0x02, 0xe0, 0xa1, 0x10, 0x01, + 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe1, 0x87, 0x08, 0x00, 0xe1, 0x8e, 0x78, 0x0b, + 0xe3, 0xa0, 0xe0, 0x00, 0xe0, 0x93, 0x30, 0x03, + 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xa4, 0x40, 0x04, + 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, + 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, + 0xe0, 0xae, 0xe0, 0x0e, 0xe3, 0xa0, 0xb0, 0x00, + 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, + 0xe0, 0xb4, 0x40, 0x04, 0xe0, 0xab, 0xb0, 0x0b, + 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, + 0xe2, 0xdb, 0xb0, 0x00, 0x21, 0xa0, 0x50, 0x09, + 0x21, 0xa0, 0x40, 0x08, 0xe0, 0xae, 0xe0, 0x0e, + 0xe3, 0xa0, 0xb0, 0x00, 0xe0, 0x93, 0x30, 0x03, + 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xb4, 0x40, 0x04, + 0xe0, 0xab, 0xb0, 0x0b, 0xe0, 0x55, 0x90, 0x07, + 0xe0, 0xd4, 0x80, 0x00, 0xe2, 0xdb, 0xb0, 0x00, + 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, + 0xe0, 0xae, 0xe0, 0x0e, 0xe1, 0x84, 0x60, 0x05, + 0xe0, 0x92, 0x24, 0x8e, 0xe2, 0xb1, 0x10, 0x00, + 0x48, 0xbd, 0x88, 0x89, 0xe8, 0xbd, 0x48, 0x89, + 0xe0, 0x92, 0x20, 0x02, 0xe0, 0xa1, 0x10, 0x01, + 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe1, 0x87, 0x08, 0x00, 0xe1, 0x8e, 0x78, 0x0b, + 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, + 0xe0, 0xa4, 0x40, 0x04, 0xe0, 0x55, 0x90, 0x07, + 0xe0, 0xd4, 0x80, 0x00, 0x21, 0xa0, 0x50, 0x09, + 0x21, 0xa0, 0x40, 0x08, 0x22, 0x81, 0x10, 0x20, + 0xe3, 0xa0, 0xb0, 0x00, 0xe0, 0x93, 0x30, 0x03, + 0xe0, 0xb5, 0x50, 0x05, 0xe0, 0xb4, 0x40, 0x04, + 0xe0, 0xab, 0xb0, 0x0b, 0xe0, 0x55, 0x90, 0x07, + 0xe0, 0xd4, 0x80, 0x00, 0xe2, 0xdb, 0xb0, 0x00, + 0x21, 0xa0, 0x50, 0x09, 0x21, 0xa0, 0x40, 0x08, + 0x22, 0x81, 0x10, 0x10, 0xe3, 0xa0, 0xb0, 0x00, + 0xe0, 0x93, 0x30, 0x03, 0xe0, 0xb5, 0x50, 0x05, + 0xe0, 0xb4, 0x40, 0x04, 0xe0, 0xab, 0xb0, 0x0b, + 0xe0, 0x55, 0x90, 0x07, 0xe0, 0xd4, 0x80, 0x00, + 0xe2, 0xdb, 0xb0, 0x00, 0x21, 0xa0, 0x50, 0x09, + 0x21, 0xa0, 0x40, 0x08, 0x22, 0x81, 0x10, 0x08, + 0xe1, 0x84, 0x60, 0x05, 0xe3, 0xa0, 0x20, 0x00, + 0xe3, 0x31, 0x00, 0x00, 0x48, 0xbd, 0x88, 0x89, + 0xe8, 0xbd, 0x48, 0x89, 0xe1, 0xa0, 0x10, 0x81, + 0xe2, 0x43, 0x30, 0x01, 0xe1, 0xa0, 0xf0, 0x0e, + 0x80, 0x80, 0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, + 0x79, 0x78, 0x77, 0x76, 0x76, 0x75, 0x74, 0x73, + 0x72, 0x71, 0x71, 0x70, 0x6f, 0x6e, 0x6e, 0x6d, + 0x6c, 0x6c, 0x6b, 0x6a, 0x6a, 0x69, 0x68, 0x68, + 0x67, 0x66, 0x66, 0x65, 0x64, 0x64, 0x63, 0x63, + 0x62, 0x61, 0x61, 0x60, 0x60, 0x5f, 0x5f, 0x5e, + 0x5e, 0x5d, 0x5d, 0x5c, 0x5c, 0x5b, 0x5b, 0x5a, + 0x5a, 0x59, 0x59, 0x58, 0x58, 0x57, 0x57, 0x56, + 0x56, 0x55, 0x55, 0x55, 0x54, 0x54, 0x53, 0x53, + 0x52, 0x52, 0x52, 0x51, 0x51, 0x50, 0x50, 0x50, + 0x4f, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4d, 0x4d, + 0x4c, 0x4c, 0x4c, 0x4b, 0x4b, 0x4b, 0x4a, 0x4a, + 0x4a, 0x49, 0x49, 0x49, 0x48, 0x48, 0x48, 0x47, + 0x47, 0x47, 0x47, 0x46, 0x46, 0x46, 0x45, 0x45, + 0x45, 0x44, 0x44, 0x44, 0x44, 0x43, 0x43, 0x43, + 0x43, 0x42, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, + 0xe1, 0xa0, 0x98, 0x83, 0xe3, 0x79, 0x08, 0x02, + 0x30, 0x09, 0x90, 0x04, 0xe0, 0x19, 0x90, 0x83, + 0xe1, 0xa0, 0x88, 0x80, 0xe3, 0x78, 0x08, 0x02, + 0x30, 0x08, 0x80, 0x01, 0xe0, 0x18, 0x80, 0x80, + 0x4a, 0x00, 0x00, 0x20, 0xe3, 0x19, 0x01, 0x02, + 0x1a, 0x00, 0x00, 0x32, 0xe3, 0x1b, 0x00, 0x04, + 0x1a, 0x00, 0x00, 0x08, 0xe1, 0xa0, 0x80, 0x00, + 0xe1, 0xa0, 0x00, 0x03, 0xe1, 0xa0, 0x30, 0x08, + 0xe1, 0xa0, 0x80, 0x01, 0xe1, 0xa0, 0x10, 0x04, + 0xe1, 0xa0, 0x40, 0x08, 0xe1, 0xa0, 0x80, 0x02, + 0xe1, 0xa0, 0x20, 0x05, 0xe1, 0xa0, 0x50, 0x08, + 0xe0, 0x11, 0x60, 0x80, 0x43, 0xc1, 0x11, 0x02, + 0x42, 0x80, 0x00, 0x01, 0xe0, 0x14, 0x60, 0x83, + 0x43, 0xc4, 0x41, 0x02, 0x42, 0x83, 0x30, 0x01, + 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xc3, 0x91, 0x03, + 0xe0, 0x20, 0x00, 0x03, 0xe2, 0x00, 0x01, 0x02, + 0xe0, 0x49, 0x30, 0x08, 0xe2, 0x83, 0x3c, 0x3f, + 0xe2, 0x83, 0x30, 0xff, 0xe9, 0x2d, 0x40, 0x00, + 0xe3, 0x11, 0x01, 0x02, 0x0b, 0x00, 0x03, 0xa1, + 0xe3, 0x14, 0x01, 0x02, 0x0b, 0x00, 0x03, 0x86, + 0xe8, 0xbd, 0x40, 0x00, 0xea, 0xff, 0xfe, 0xb6, + 0xe3, 0x19, 0x01, 0x02, 0x0a, 0x00, 0x00, 0x05, + 0xe1, 0x82, 0x80, 0x81, 0xe1, 0x88, 0x80, 0x05, + 0xe1, 0x98, 0x80, 0x84, 0x1a, 0x00, 0x03, 0xb6, + 0xe3, 0x80, 0x04, 0x61, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe1, 0x92, 0x80, 0x81, 0x1a, 0x00, 0x03, 0xc3, + 0xe0, 0x20, 0x80, 0x03, 0xe2, 0x08, 0x81, 0x02, + 0xe3, 0x1b, 0x00, 0x04, 0x02, 0x8f, 0x00, 0x50, + 0x12, 0x8f, 0x00, 0x40, 0xe8, 0x90, 0x00, 0x07, + 0xe1, 0x80, 0x00, 0x08, 0xe3, 0xa0, 0x30, 0x00, + 0xe3, 0xa0, 0x60, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe1, 0x95, 0x80, 0x84, 0x1a, 0x00, 0x03, 0xae, + 0xe0, 0x20, 0x80, 0x03, 0xe2, 0x08, 0x81, 0x02, + 0xe3, 0x1b, 0x00, 0x04, 0x12, 0x8f, 0x00, 0x20, + 0x02, 0x8f, 0x00, 0x10, 0xe8, 0x90, 0x00, 0x07, + 0xe1, 0x80, 0x00, 0x08, 0xe3, 0xa0, 0x30, 0x00, + 0xe3, 0xa0, 0x60, 0x00, 0xe1, 0xa0, 0xf0, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x7f, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x49, 0x02, 0xf0, 0x00, 0xf9, 0x2a, + 0xbc, 0x08, 0x47, 0x18, 0xff, 0xff, 0xff, 0xfd, + 0xb5, 0x80, 0x1c, 0x07, 0x28, 0x0a, 0xd2, 0x14, + 0xa3, 0x01, 0x5c, 0x1b, 0x00, 0x5b, 0x44, 0x9f, + 0x10, 0x04, 0x10, 0x06, 0x08, 0x0a, 0x0c, 0x10, + 0x0e, 0x0e, 0xa0, 0x0f, 0xe0, 0x0c, 0xa0, 0x1a, + 0xe0, 0x0a, 0xa0, 0x33, 0xe0, 0x08, 0xa0, 0x3f, + 0xe0, 0x06, 0xa0, 0x4b, 0xe0, 0x04, 0xa0, 0x52, + 0xe0, 0x02, 0x1c, 0x38, 0xf0, 0x00, 0xff, 0x89, + 0x21, 0x03, 0xf0, 0x00, 0xf9, 0x27, 0x2f, 0x04, + 0xd1, 0x05, 0x20, 0x01, 0xf7, 0xfe, 0xf8, 0xd4, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0xf7, 0xfe, + 0xfd, 0xb3, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x41, 0x62, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x20, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x65, 0x2e, + 0x67, 0x2e, 0x20, 0x61, 0x62, 0x6f, 0x72, 0x74, + 0x28, 0x29, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x29, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x20, + 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x63, 0x61, 0x6c, + 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x6e, 0x6f, 0x6e, + 0x2d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x63, + 0x6f, 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, + 0x29, 0x0a, 0x5b, 0x69, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x20, 0x65, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x6f, + 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x65, 0x64, 0x3f, 0x5d, 0x00, 0x00, 0x00, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, + 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, + 0x64, 0x00, 0x00, 0x00, 0x49, 0x6c, 0x6c, 0x65, + 0x67, 0x61, 0x6c, 0x20, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x20, 0x28, 0x65, 0x2e, 0x67, + 0x2e, 0x20, 0x77, 0x69, 0x6c, 0x64, 0x6c, 0x79, + 0x20, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, + 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x29, 0x00, 0x00, + 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x20, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x55, 0x73, 0x65, 0x72, 0x2d, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x64, 0x20, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x00, 0xb5, 0x00, 0x20, 0x01, + 0x49, 0x05, 0x70, 0x08, 0xa0, 0x05, 0x21, 0x03, + 0xf0, 0x00, 0xf8, 0x78, 0x20, 0x64, 0xf7, 0xfe, + 0xf8, 0x27, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x21, 0x9c, 0x53, 0x74, 0x61, 0x63, + 0x6b, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x66, 0x6c, + 0x6f, 0x77, 0x0a, 0x00, 0xb5, 0x00, 0x28, 0x07, + 0xd1, 0x03, 0xf7, 0xff, 0xff, 0xe3, 0xbc, 0x08, + 0x47, 0x18, 0xf7, 0xff, 0xff, 0x19, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0x00, 0xf7, 0xff, 0xff, 0xf2, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x90, 0x28, 0x00, + 0xdd, 0x01, 0x28, 0x0b, 0xdb, 0x05, 0x20, 0x03, + 0x49, 0x0b, 0x60, 0x08, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x87, 0x4b, 0x09, 0x59, 0xd9, + 0x4a, 0x09, 0x42, 0x91, 0xd1, 0x02, 0xf7, 0xff, + 0xff, 0xdd, 0xe0, 0x05, 0x4c, 0x07, 0x42, 0xa1, + 0xd0, 0x02, 0x51, 0xda, 0xf7, 0xfd, 0xfb, 0x10, + 0x20, 0x00, 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x20, 0xb8, 0x2e, 0x08, 0x94, 0xb4, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, + 0x28, 0x00, 0xdd, 0x09, 0x28, 0x0b, 0xda, 0x07, + 0x00, 0x80, 0x49, 0x04, 0x58, 0x08, 0x49, 0x04, + 0x42, 0x88, 0xd0, 0x01, 0x20, 0x01, 0x47, 0x70, + 0x20, 0x00, 0x47, 0x70, 0x2e, 0x08, 0x94, 0xb4, + 0xff, 0xff, 0xff, 0xff, 0x28, 0x00, 0xdd, 0x01, + 0x28, 0x0b, 0xdb, 0x01, 0x48, 0x03, 0x47, 0x70, + 0x00, 0x83, 0x4a, 0x03, 0x58, 0xd0, 0x50, 0xd1, + 0x47, 0x70, 0x00, 0x00, 0xff, 0xff, 0xff, 0xfe, + 0x2e, 0x08, 0x94, 0xb4, 0xb5, 0x90, 0x27, 0x01, + 0x4c, 0x05, 0x1c, 0x38, 0x1c, 0x21, 0xf7, 0xff, + 0xff, 0xe9, 0x37, 0x01, 0x2f, 0x0b, 0xdb, 0xf8, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xb5, 0x90, 0x1c, 0x0c, + 0x1c, 0x07, 0x48, 0x12, 0x28, 0x00, 0xd0, 0x09, + 0x48, 0x11, 0x78, 0x00, 0x28, 0x00, 0xd1, 0x05, + 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x00, 0xfb, 0x44, + 0x28, 0x00, 0xd1, 0x13, 0x08, 0x60, 0xd3, 0x02, + 0x20, 0x0a, 0xf0, 0x00, 0xf8, 0xd3, 0x78, 0x38, + 0x28, 0x00, 0xd0, 0x06, 0x78, 0x38, 0x37, 0x01, + 0xf0, 0x00, 0xf8, 0xcc, 0x78, 0x38, 0x28, 0x00, + 0xd1, 0xf8, 0x08, 0xa0, 0xd3, 0x02, 0x20, 0x0a, + 0xf0, 0x00, 0xf8, 0xc4, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x01, 0xb5, 0xd5, + 0x2e, 0x08, 0x21, 0x9c, 0xb5, 0x80, 0xb0, 0x83, + 0x90, 0x00, 0x91, 0x01, 0xf7, 0xfd, 0xfb, 0x8a, + 0x90, 0x02, 0x46, 0x69, 0x20, 0x01, 0xf0, 0x01, + 0xf8, 0x61, 0x23, 0x01, 0x1c, 0x07, 0x42, 0xd8, + 0xd1, 0x05, 0x21, 0x00, 0x20, 0x13, 0xf0, 0x01, + 0xf8, 0x59, 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, + 0xb0, 0x03, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x20, 0xb8, 0xb5, 0x80, 0xb0, 0x81, + 0x90, 0x00, 0x46, 0x69, 0x20, 0x02, 0xf0, 0x01, + 0xf8, 0x49, 0x1c, 0x07, 0xd0, 0x05, 0x21, 0x00, + 0x20, 0x13, 0xf0, 0x01, 0xf8, 0x43, 0x49, 0x03, + 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x01, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x20, 0xb8, + 0xb5, 0x80, 0xb0, 0x84, 0x90, 0x00, 0x91, 0x01, + 0x92, 0x02, 0x46, 0x69, 0x20, 0x05, 0xf0, 0x01, + 0xf8, 0x31, 0x1c, 0x07, 0xd0, 0x05, 0x21, 0x00, + 0x20, 0x13, 0xf0, 0x01, 0xf8, 0x2b, 0x49, 0x03, + 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x04, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x20, 0xb8, + 0xb5, 0x80, 0xb0, 0x84, 0x90, 0x00, 0x91, 0x01, + 0x92, 0x02, 0x93, 0x03, 0x46, 0x69, 0x20, 0x06, + 0xf0, 0x01, 0xf8, 0x18, 0x1c, 0x07, 0xd0, 0x05, + 0x21, 0x00, 0x20, 0x13, 0xf0, 0x01, 0xf8, 0x12, + 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x04, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x20, 0xb8, 0xb5, 0x00, 0xb0, 0x81, + 0x90, 0x00, 0x46, 0x69, 0x20, 0x08, 0xf0, 0x01, + 0xf8, 0x01, 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, + 0xb5, 0x00, 0x69, 0x40, 0xb0, 0x81, 0x90, 0x00, + 0x46, 0x69, 0x20, 0x09, 0xf0, 0x00, 0xff, 0xf6, + 0xb0, 0x01, 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x80, + 0xb0, 0x82, 0x90, 0x00, 0x91, 0x01, 0x46, 0x69, + 0x20, 0x0a, 0xf0, 0x00, 0xff, 0xeb, 0x1c, 0x07, + 0xd5, 0x05, 0x21, 0x00, 0x20, 0x13, 0xf0, 0x00, + 0xff, 0xe5, 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, + 0xb0, 0x02, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x20, 0xb8, 0xb5, 0x80, 0xb0, 0x81, + 0x90, 0x00, 0x46, 0x69, 0x20, 0x0b, 0xf0, 0x00, + 0xff, 0xd5, 0x1c, 0x07, 0xd5, 0x05, 0x21, 0x00, + 0x20, 0x13, 0xf0, 0x00, 0xff, 0xcf, 0x49, 0x03, + 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x01, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x20, 0xb8, + 0xb5, 0x00, 0xb0, 0x81, 0x90, 0x00, 0x46, 0x69, + 0x20, 0x0c, 0xf0, 0x00, 0xff, 0xbf, 0xb0, 0x01, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x00, 0xb0, 0x83, + 0x90, 0x00, 0x91, 0x01, 0x92, 0x02, 0x46, 0x69, + 0x20, 0x0d, 0xf0, 0x00, 0xff, 0xb3, 0xb0, 0x03, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x01, 0x46, 0x69, + 0x20, 0x03, 0xf0, 0x00, 0xff, 0xab, 0xb0, 0x01, + 0xbc, 0x08, 0x47, 0x18, 0xb5, 0x80, 0xb0, 0x82, + 0x90, 0x00, 0xf7, 0xfd, 0xfa, 0xc7, 0x90, 0x01, + 0x46, 0x69, 0x20, 0x12, 0xf0, 0x00, 0xff, 0x9e, + 0x1c, 0x07, 0xd0, 0x05, 0x21, 0x00, 0x20, 0x13, + 0xf0, 0x00, 0xff, 0x98, 0x49, 0x03, 0x60, 0x08, + 0x1c, 0x38, 0xb0, 0x02, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x20, 0xb8, + 0xb5, 0x80, 0xb0, 0x82, 0x90, 0x00, 0xf7, 0xfd, + 0xfa, 0xad, 0x90, 0x01, 0x46, 0x69, 0x20, 0x0e, + 0xf0, 0x00, 0xff, 0x84, 0x1c, 0x07, 0xd0, 0x05, + 0x21, 0x00, 0x20, 0x13, 0xf0, 0x00, 0xff, 0x7e, + 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x02, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x20, 0xb8, 0xb5, 0x80, 0xb0, 0x84, + 0x90, 0x00, 0x1c, 0x0f, 0xf7, 0xfd, 0xfa, 0x92, + 0x90, 0x01, 0x97, 0x02, 0x1c, 0x38, 0xf7, 0xfd, + 0xfa, 0x8d, 0x90, 0x03, 0x46, 0x69, 0x20, 0x0f, + 0xf0, 0x00, 0xff, 0x64, 0x1c, 0x07, 0xd0, 0x05, + 0x21, 0x00, 0x20, 0x13, 0xf0, 0x00, 0xff, 0x5e, + 0x49, 0x03, 0x60, 0x08, 0x1c, 0x38, 0xb0, 0x04, + 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x20, 0xb8, 0xb5, 0x80, 0xb0, 0x82, + 0x4f, 0x08, 0x97, 0x00, 0x20, 0xff, 0x30, 0x01, + 0x90, 0x01, 0x46, 0x69, 0x20, 0x15, 0xf0, 0x00, + 0xff, 0x49, 0x28, 0x00, 0xd0, 0x01, 0x20, 0x00, + 0xe0, 0x00, 0x1c, 0x38, 0xb0, 0x02, 0xbc, 0x80, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x94, 0xe4, + 0xb5, 0x00, 0x21, 0x00, 0x20, 0x10, 0xf0, 0x00, + 0xff, 0x39, 0x49, 0x02, 0x68, 0x09, 0x1a, 0x40, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x21, 0xac, + 0xb5, 0x00, 0x21, 0x00, 0x20, 0x10, 0xf0, 0x00, + 0xff, 0x2d, 0x49, 0x02, 0x60, 0x08, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x21, 0xac, + 0xb5, 0x80, 0x21, 0x00, 0x1c, 0x07, 0x20, 0x11, + 0xf0, 0x00, 0xff, 0x20, 0x2f, 0x00, 0xd0, 0x00, + 0x60, 0x38, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0x47, 0x70, 0xb4, 0x80, 0x20, 0x03, + 0x43, 0xc0, 0x23, 0x00, 0x49, 0x07, 0x54, 0x0b, + 0x30, 0x01, 0xd4, 0xfc, 0x20, 0x00, 0x4a, 0x06, + 0x5c, 0x17, 0x54, 0x0f, 0x18, 0x0f, 0x37, 0x80, + 0x70, 0x3b, 0x30, 0x01, 0x28, 0x80, 0xd3, 0xf7, + 0xbc, 0x80, 0x47, 0x70, 0x2e, 0x08, 0x21, 0xb4, + 0x2e, 0x03, 0x33, 0xf8, 0xb5, 0x80, 0x49, 0x07, + 0x68, 0x09, 0xf7, 0xfd, 0xf9, 0x35, 0x1c, 0x07, + 0xd1, 0x03, 0xa1, 0x05, 0xa0, 0x05, 0xf0, 0x00, + 0xfc, 0xe7, 0x1c, 0x38, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x20, 0xb0, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x6f, 0x20, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x20, 0x6c, 0x65, 0x66, + 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x49, 0x2f, + 0x4f, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x20, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6c, 0x69, 0x6b, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x80, 0x68, 0xc1, 0x43, 0x19, 0x60, 0xc1, + 0x21, 0x00, 0x60, 0x01, 0x60, 0x81, 0x47, 0x70, + 0xb5, 0xf7, 0x68, 0xd5, 0x69, 0x56, 0x1c, 0x0c, + 0x1c, 0x17, 0x0d, 0x68, 0xd3, 0x05, 0x23, 0x10, + 0x43, 0x1d, 0x1c, 0x30, 0xf7, 0xff, 0xfe, 0xfc, + 0x61, 0xb8, 0x48, 0x12, 0x40, 0x28, 0xd0, 0x08, + 0x69, 0xb9, 0x1c, 0x30, 0xf7, 0xff, 0xfe, 0xc7, + 0x28, 0x00, 0xdb, 0x10, 0x4b, 0x0e, 0x40, 0x1d, + 0x60, 0xfd, 0x99, 0x00, 0x1c, 0x30, 0x1c, 0x22, + 0x1c, 0x2b, 0xf7, 0xff, 0xfe, 0x75, 0x00, 0x41, + 0x08, 0x49, 0x1a, 0x61, 0x69, 0xba, 0x18, 0x51, + 0x61, 0xb9, 0x28, 0x00, 0xd0, 0x08, 0x1c, 0x38, + 0xf7, 0xff, 0xff, 0xce, 0x20, 0x00, 0x43, 0xc0, + 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0xe7, 0xf9, 0x00, 0x02, 0x00, 0x10, + 0xff, 0xfd, 0xff, 0xef, 0xb5, 0xb0, 0x48, 0x15, + 0x68, 0xc1, 0x4b, 0x15, 0x40, 0x19, 0x1c, 0x1d, + 0x42, 0x99, 0xd1, 0x01, 0xf0, 0x00, 0xfc, 0xd6, + 0x48, 0x12, 0x68, 0xc1, 0x4b, 0x10, 0x40, 0x19, + 0x42, 0xa9, 0xd1, 0x01, 0xf0, 0x00, 0xfc, 0xce, + 0x48, 0x0f, 0x68, 0xc1, 0x4b, 0x0c, 0x40, 0x19, + 0x42, 0xa9, 0xd1, 0x01, 0xf0, 0x00, 0xfc, 0xc6, + 0x27, 0x00, 0x4c, 0x0c, 0x01, 0xb8, 0x19, 0x00, + 0x68, 0xc1, 0x4b, 0x07, 0x40, 0x19, 0x42, 0xa9, + 0xd1, 0x01, 0xf0, 0x00, 0xfc, 0xbb, 0x37, 0x01, + 0x2f, 0x0d, 0xdb, 0xf3, 0xbc, 0xb0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x95, 0xe4, + 0x00, 0x00, 0x02, 0x02, 0x2e, 0x08, 0x96, 0x24, + 0x2e, 0x08, 0x96, 0x64, 0x2e, 0x08, 0x96, 0xa4, + 0xb5, 0xf0, 0x1c, 0x07, 0x69, 0x04, 0x6a, 0xc0, + 0x68, 0x79, 0x42, 0x88, 0xd9, 0x00, 0x1c, 0x01, + 0x68, 0xf8, 0x4b, 0x13, 0x40, 0x18, 0x07, 0x82, + 0x0f, 0x92, 0x25, 0x00, 0x60, 0xf8, 0x2a, 0x01, + 0xd0, 0x1a, 0x22, 0x82, 0x40, 0x02, 0x15, 0x1e, + 0x2a, 0x02, 0xd1, 0x0a, 0x0c, 0x40, 0xd3, 0x13, + 0x42, 0xa1, 0xd0, 0x0a, 0x1b, 0x09, 0x1c, 0x20, + 0x1c, 0x3a, 0xf7, 0xff, 0xff, 0x75, 0x28, 0x00, + 0xd0, 0x03, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x62, 0xfc, 0x60, 0x7c, 0x60, 0xbd, + 0x68, 0xf8, 0x4b, 0x04, 0x40, 0x18, 0x60, 0xf8, + 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0xff, 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, + 0xb5, 0x80, 0x1c, 0x07, 0x68, 0xc0, 0x23, 0x20, + 0x43, 0xdb, 0x40, 0x18, 0x60, 0xf8, 0x69, 0xb8, + 0x6a, 0xb9, 0x42, 0x88, 0xd0, 0x0d, 0x1c, 0x38, + 0xf7, 0xff, 0xff, 0xbe, 0x68, 0xf8, 0x4b, 0x08, + 0x40, 0x18, 0x23, 0x10, 0x43, 0x18, 0x60, 0xf8, + 0x6a, 0xb8, 0x61, 0xb8, 0x69, 0x38, 0x62, 0xf8, + 0x60, 0x78, 0x68, 0xf8, 0x4b, 0x03, 0x40, 0x18, + 0x60, 0xf8, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0xff, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xbf, 0xbf, + 0xb5, 0xf0, 0x1c, 0x07, 0x69, 0x40, 0xb0, 0x83, + 0x90, 0x01, 0x69, 0x38, 0x90, 0x00, 0x25, 0x00, + 0x68, 0xfe, 0x07, 0xb0, 0xd1, 0x01, 0x43, 0xc0, + 0xe0, 0x48, 0x09, 0x30, 0xd2, 0x40, 0x24, 0x10, + 0x1c, 0x38, 0xf0, 0x00, 0xfc, 0x3f, 0x1c, 0x05, + 0x0d, 0x70, 0xd3, 0x1b, 0x24, 0x00, 0x49, 0x21, + 0x91, 0x02, 0x01, 0xa0, 0x99, 0x02, 0x18, 0x40, + 0x42, 0xb8, 0xd0, 0x10, 0x68, 0xc1, 0x07, 0x8a, + 0xd0, 0x0d, 0x69, 0x42, 0x9b, 0x01, 0x42, 0x9a, + 0xd1, 0x09, 0x0d, 0x49, 0xd3, 0x07, 0x68, 0xc1, + 0x4b, 0x19, 0x40, 0x19, 0x60, 0xc1, 0x68, 0xf8, + 0x40, 0x18, 0x60, 0xf8, 0xe0, 0x02, 0x34, 0x01, + 0x2c, 0x10, 0xdb, 0xe6, 0x2c, 0x10, 0xd1, 0x06, + 0x98, 0x01, 0xf7, 0xff, 0xfd, 0x83, 0x28, 0x00, + 0xda, 0x01, 0x25, 0x00, 0x43, 0xed, 0x0b, 0x30, + 0xd3, 0x04, 0x98, 0x00, 0x49, 0x0f, 0x68, 0x09, + 0xf7, 0xfd, 0xf8, 0x02, 0x0d, 0xf0, 0x05, 0xc0, + 0x23, 0xa5, 0x05, 0xdb, 0x42, 0xd8, 0xd1, 0x07, + 0x48, 0x0b, 0x28, 0x00, 0xd0, 0x04, 0x1c, 0x38, + 0x1c, 0x29, 0xf7, 0xff, 0xff, 0xfe, 0x1c, 0x05, + 0x22, 0x40, 0x21, 0x00, 0x1c, 0x38, 0xf7, 0xfd, + 0xf8, 0x4b, 0x1c, 0x28, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x95, 0xe4, + 0xff, 0xef, 0xff, 0xff, 0x2e, 0x08, 0x20, 0xb4, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0xf7, 0x1c, 0x10, + 0x1c, 0x0c, 0x1c, 0x17, 0xf7, 0xff, 0xff, 0x98, + 0x78, 0x20, 0x34, 0x01, 0x28, 0x61, 0xd0, 0x09, + 0x28, 0x72, 0xd0, 0x04, 0x28, 0x77, 0xd1, 0x25, + 0x26, 0x02, 0x25, 0x04, 0xe0, 0x04, 0x26, 0x01, + 0x25, 0x00, 0xe0, 0x01, 0x4e, 0x1a, 0x25, 0x08, + 0x78, 0x20, 0x34, 0x01, 0x28, 0x2b, 0xd0, 0x06, + 0x28, 0x62, 0xd1, 0x09, 0x23, 0x04, 0x43, 0x1e, + 0x23, 0x01, 0x43, 0x1d, 0xe7, 0xf4, 0x23, 0x03, + 0x43, 0x1e, 0x23, 0x02, 0x43, 0x1d, 0xe7, 0xef, + 0x1f, 0xe0, 0x38, 0x19, 0x7f, 0xc0, 0x28, 0x74, + 0xd1, 0x01, 0x23, 0x10, 0x43, 0x1d, 0x98, 0x00, + 0x1c, 0x29, 0xf7, 0xff, 0xfd, 0x0b, 0x23, 0x01, + 0x42, 0xd8, 0xd1, 0x04, 0x20, 0x00, 0xb0, 0x03, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x21, 0x00, + 0x60, 0x79, 0x61, 0x39, 0x21, 0x01, 0x03, 0x09, + 0x61, 0x78, 0x61, 0xf9, 0x60, 0xfe, 0x09, 0x28, + 0xd3, 0x04, 0x22, 0x02, 0x21, 0x00, 0x1c, 0x38, + 0xf0, 0x00, 0xfb, 0xc4, 0x1c, 0x38, 0xe7, 0xea, + 0x00, 0x00, 0x80, 0x02, 0xb5, 0x90, 0x23, 0x03, + 0x4f, 0x08, 0x01, 0x9a, 0x19, 0xd2, 0x68, 0xd4, + 0x07, 0xa4, 0xd1, 0x04, 0xf7, 0xff, 0xff, 0xaa, + 0xbc, 0x90, 0xbc, 0x08, 0x47, 0x18, 0x33, 0x01, + 0x2b, 0x10, 0xdb, 0xf2, 0x20, 0x00, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x95, 0xe4, + 0xb5, 0xf0, 0x1c, 0x04, 0x1c, 0x0f, 0x4d, 0x10, + 0x68, 0xe8, 0x08, 0x80, 0xd3, 0x18, 0x20, 0x01, + 0x4e, 0x0e, 0x70, 0x30, 0x40, 0x38, 0xd0, 0x03, + 0x20, 0x0a, 0x1c, 0x29, 0xf0, 0x00, 0xfc, 0x1e, + 0x1c, 0x20, 0x1c, 0x29, 0xf0, 0x00, 0xfc, 0x2c, + 0x08, 0xb8, 0xd3, 0x03, 0x20, 0x0a, 0x1c, 0x29, + 0xf0, 0x00, 0xfc, 0x14, 0x20, 0x00, 0x70, 0x30, + 0x20, 0x01, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x96, 0x64, 0x2e, 0x08, 0x21, 0x9c, + 0xb5, 0x80, 0x1c, 0x07, 0xa0, 0x06, 0x21, 0x01, + 0xf7, 0xff, 0xfc, 0x80, 0x21, 0x02, 0x1c, 0x38, + 0xf7, 0xff, 0xfc, 0x7c, 0x20, 0x01, 0xf7, 0xfd, + 0xfc, 0x25, 0xbc, 0x80, 0xbc, 0x08, 0x47, 0x18, + 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x6e, 0x27, 0x74, + 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x00, + 0xb5, 0xf0, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0x0f, + 0x48, 0x20, 0x22, 0x01, 0x02, 0x92, 0x21, 0x00, + 0x1c, 0x06, 0xf7, 0xfc, 0xff, 0x91, 0x4a, 0x1e, + 0x1c, 0x28, 0xa1, 0x1e, 0xf7, 0xff, 0xff, 0x4e, + 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x28, 0xf7, 0xff, + 0xff, 0xd3, 0x1c, 0x20, 0x1c, 0x32, 0xa1, 0x1a, + 0xf7, 0xff, 0xff, 0x44, 0x28, 0x00, 0xd1, 0x02, + 0x1c, 0x20, 0xf7, 0xff, 0xff, 0xc9, 0x4a, 0x17, + 0x1c, 0x38, 0x1c, 0x15, 0xa1, 0x13, 0xf7, 0xff, + 0xff, 0x39, 0x28, 0x00, 0xd1, 0x02, 0x1c, 0x38, + 0xf7, 0xff, 0xff, 0xbe, 0x1c, 0x30, 0x26, 0x01, + 0x03, 0x36, 0x08, 0xf2, 0x21, 0x00, 0x1c, 0x33, + 0xf0, 0x00, 0xf8, 0x52, 0x28, 0x00, 0xd0, 0x02, + 0x1c, 0x20, 0xf7, 0xff, 0xff, 0xb1, 0x22, 0x01, + 0x02, 0x52, 0x21, 0x00, 0x1c, 0x28, 0x1c, 0x33, + 0xf0, 0x00, 0xf8, 0x46, 0x28, 0x00, 0xd0, 0x02, + 0x1c, 0x38, 0xf7, 0xff, 0xff, 0xa5, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x95, 0xe4, + 0x2e, 0x08, 0x96, 0x64, 0x77, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x96, 0x24, + 0xb5, 0x90, 0x27, 0x03, 0x4c, 0x09, 0x01, 0xb8, + 0x19, 0x00, 0xf7, 0xff, 0xfe, 0xa5, 0x37, 0x01, + 0x2f, 0x10, 0xdb, 0xf8, 0x27, 0x00, 0x01, 0xb8, + 0x19, 0x00, 0xf7, 0xff, 0xfe, 0x9d, 0x37, 0x01, + 0x2f, 0x03, 0xdb, 0xf8, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x95, 0xe4, + 0xb5, 0xb0, 0x01, 0x80, 0x1c, 0x0f, 0x4c, 0x0a, + 0x19, 0x00, 0x1c, 0x05, 0xf7, 0xff, 0xfe, 0x8c, + 0x01, 0xb8, 0x19, 0x00, 0x23, 0x01, 0x05, 0x1b, + 0x68, 0xc1, 0x43, 0x19, 0x60, 0xc1, 0x4b, 0x05, + 0x40, 0x19, 0x60, 0xe9, 0x69, 0x40, 0x61, 0x68, + 0x1c, 0x38, 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, + 0x2e, 0x08, 0x95, 0xe4, 0x00, 0x10, 0x8f, 0x03, + 0xb4, 0xf0, 0x1c, 0x1f, 0x68, 0xc3, 0x07, 0x9e, + 0x0f, 0xb6, 0x25, 0x01, 0x1c, 0x1c, 0x2e, 0x00, + 0xd0, 0x13, 0x1c, 0x1e, 0x0d, 0xf3, 0xd2, 0x10, + 0x02, 0x2b, 0x42, 0x9a, 0xd0, 0x09, 0x00, 0x5b, + 0x42, 0x9a, 0xd0, 0x06, 0x00, 0x5b, 0x42, 0x9a, + 0xd1, 0x07, 0x27, 0x01, 0x1d, 0xc1, 0x31, 0x1d, + 0xe0, 0x06, 0x1e, 0x7e, 0x4b, 0x08, 0x42, 0x9e, + 0xd3, 0x02, 0x1c, 0x28, 0xbc, 0xf0, 0x47, 0x70, + 0x61, 0x01, 0x23, 0x0f, 0x02, 0x1b, 0x43, 0x9c, + 0x60, 0x41, 0x61, 0xc7, 0x1c, 0x21, 0x43, 0x11, + 0x60, 0xc1, 0x20, 0x00, 0xbc, 0xf0, 0x47, 0x70, + 0x00, 0xff, 0xff, 0xff, 0xe2, 0x00, 0x01, 0x02, + 0xe3, 0x31, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x17, + 0xe3, 0xa0, 0x80, 0x00, 0xe1, 0xb0, 0x98, 0x21, + 0x01, 0xa0, 0x18, 0x01, 0x02, 0x88, 0x80, 0x10, + 0xe1, 0xb0, 0x9c, 0x21, 0x01, 0xa0, 0x14, 0x01, + 0x02, 0x88, 0x80, 0x08, 0xe1, 0xb0, 0x9e, 0x21, + 0x01, 0xa0, 0x12, 0x01, 0x02, 0x88, 0x80, 0x04, + 0xe1, 0xb0, 0x9f, 0x21, 0x01, 0xa0, 0x11, 0x01, + 0x02, 0x88, 0x80, 0x02, 0xe1, 0xb0, 0x9f, 0xa1, + 0x01, 0xa0, 0x10, 0x81, 0x02, 0x88, 0x80, 0x01, + 0xe0, 0x58, 0x98, 0xa6, 0x81, 0xa0, 0x19, 0x31, + 0x81, 0xa0, 0x88, 0xa6, 0xe2, 0x68, 0x60, 0x20, + 0xe1, 0x81, 0x16, 0x32, 0xe1, 0xa0, 0x28, 0x12, + 0x30, 0x40, 0x00, 0x09, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe3, 0x56, 0x05, 0x01, 0x3a, 0x00, 0x00, 0x16, + 0xe1, 0xb0, 0x10, 0x02, 0x01, 0xa0, 0xf0, 0x0e, + 0xe3, 0xa0, 0x20, 0x00, 0xe3, 0xa0, 0x80, 0x20, + 0xe1, 0xb0, 0x98, 0x21, 0x01, 0xa0, 0x18, 0x01, + 0x02, 0x88, 0x80, 0x10, 0xe1, 0xb0, 0x9c, 0x21, + 0x01, 0xa0, 0x14, 0x01, 0x02, 0x88, 0x80, 0x08, + 0xe1, 0xb0, 0x9e, 0x21, 0x01, 0xa0, 0x12, 0x01, + 0x02, 0x88, 0x80, 0x04, 0xe1, 0xb0, 0x9f, 0x21, + 0x01, 0xa0, 0x11, 0x01, 0x02, 0x88, 0x80, 0x02, + 0xe1, 0xb0, 0x9f, 0xa1, 0x01, 0xa0, 0x10, 0x81, + 0x02, 0x88, 0x80, 0x01, 0xe0, 0x58, 0x98, 0xa6, + 0x81, 0xa0, 0x19, 0x31, 0x30, 0x40, 0x00, 0x09, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0xa0, 0x88, 0xa6, + 0xe2, 0x68, 0x90, 0x20, 0xe1, 0xa0, 0x18, 0x11, + 0xe1, 0x81, 0x19, 0x32, 0xe1, 0xa0, 0x28, 0x12, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe2, 0x03, 0x31, 0x02, + 0xe3, 0x34, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x17, + 0xe3, 0xa0, 0x80, 0x00, 0xe1, 0xb0, 0x98, 0x24, + 0x01, 0xa0, 0x48, 0x04, 0x02, 0x88, 0x80, 0x10, + 0xe1, 0xb0, 0x9c, 0x24, 0x01, 0xa0, 0x44, 0x04, + 0x02, 0x88, 0x80, 0x08, 0xe1, 0xb0, 0x9e, 0x24, + 0x01, 0xa0, 0x42, 0x04, 0x02, 0x88, 0x80, 0x04, + 0xe1, 0xb0, 0x9f, 0x24, 0x01, 0xa0, 0x41, 0x04, + 0x02, 0x88, 0x80, 0x02, 0xe1, 0xb0, 0x9f, 0xa4, + 0x01, 0xa0, 0x40, 0x84, 0x02, 0x88, 0x80, 0x01, + 0xe0, 0x58, 0x98, 0xa6, 0x81, 0xa0, 0x49, 0x34, + 0x81, 0xa0, 0x88, 0xa6, 0xe2, 0x68, 0x60, 0x20, + 0xe1, 0x84, 0x46, 0x35, 0xe1, 0xa0, 0x58, 0x15, + 0x30, 0x43, 0x30, 0x09, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe3, 0x56, 0x05, 0x01, 0x3a, 0x00, 0x00, 0x16, + 0xe1, 0xb0, 0x40, 0x05, 0x01, 0xa0, 0xf0, 0x0e, + 0xe3, 0xa0, 0x50, 0x00, 0xe3, 0xa0, 0x80, 0x20, + 0xe1, 0xb0, 0x98, 0x24, 0x01, 0xa0, 0x48, 0x04, + 0x02, 0x88, 0x80, 0x10, 0xe1, 0xb0, 0x9c, 0x24, + 0x01, 0xa0, 0x44, 0x04, 0x02, 0x88, 0x80, 0x08, + 0xe1, 0xb0, 0x9e, 0x24, 0x01, 0xa0, 0x42, 0x04, + 0x02, 0x88, 0x80, 0x04, 0xe1, 0xb0, 0x9f, 0x24, + 0x01, 0xa0, 0x41, 0x04, 0x02, 0x88, 0x80, 0x02, + 0xe1, 0xb0, 0x9f, 0xa4, 0x01, 0xa0, 0x40, 0x84, + 0x02, 0x88, 0x80, 0x01, 0xe0, 0x58, 0x98, 0xa6, + 0x81, 0xa0, 0x49, 0x34, 0x30, 0x43, 0x30, 0x09, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe1, 0xa0, 0x88, 0xa6, + 0xe2, 0x68, 0x90, 0x20, 0xe1, 0xa0, 0x48, 0x14, + 0xe1, 0x84, 0x49, 0x35, 0xe1, 0xa0, 0x58, 0x15, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0xa0, 0x20, 0x00, + 0xe2, 0x16, 0x01, 0x02, 0x12, 0x66, 0x10, 0x00, + 0x01, 0xb0, 0x10, 0x06, 0x03, 0xa0, 0x30, 0x00, + 0x01, 0xa0, 0xf0, 0x0e, 0xe3, 0xa0, 0x39, 0x01, + 0xe3, 0x83, 0x30, 0x1e, 0xe3, 0xa0, 0x60, 0x00, + 0xe3, 0x31, 0x00, 0x00, 0x01, 0xa0, 0x10, 0x02, + 0x03, 0xa0, 0x20, 0x00, 0x02, 0x43, 0x30, 0x20, + 0xe3, 0xa0, 0x80, 0x00, 0xe1, 0xb0, 0x98, 0x21, + 0x01, 0xa0, 0x18, 0x01, 0x02, 0x88, 0x80, 0x10, + 0xe1, 0xb0, 0x9c, 0x21, 0x01, 0xa0, 0x14, 0x01, + 0x02, 0x88, 0x80, 0x08, 0xe1, 0xb0, 0x9e, 0x21, + 0x01, 0xa0, 0x12, 0x01, 0x02, 0x88, 0x80, 0x04, + 0xe1, 0xb0, 0x9f, 0x21, 0x01, 0xa0, 0x11, 0x01, + 0x02, 0x88, 0x80, 0x02, 0xe1, 0xb0, 0x9f, 0xa1, + 0x01, 0xa0, 0x10, 0x81, 0x02, 0x88, 0x80, 0x01, + 0xe2, 0x78, 0x90, 0x20, 0xe1, 0x81, 0x19, 0x32, + 0xe1, 0xa0, 0x28, 0x12, 0xe0, 0x43, 0x30, 0x08, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe3, 0x34, 0x00, 0x00, + 0x01, 0xa0, 0x40, 0x05, 0x03, 0xa0, 0x50, 0x00, + 0x02, 0x43, 0x30, 0x20, 0xe3, 0xa0, 0x80, 0x00, + 0xe1, 0xb0, 0x98, 0x24, 0x01, 0xa0, 0x48, 0x04, + 0x02, 0x88, 0x80, 0x10, 0xe1, 0xb0, 0x9c, 0x24, + 0x01, 0xa0, 0x44, 0x04, 0x02, 0x88, 0x80, 0x08, + 0xe1, 0xb0, 0x9e, 0x24, 0x01, 0xa0, 0x42, 0x04, + 0x02, 0x88, 0x80, 0x04, 0xe1, 0xb0, 0x9f, 0x24, + 0x01, 0xa0, 0x41, 0x04, 0x02, 0x88, 0x80, 0x02, + 0xe1, 0xb0, 0x9f, 0xa4, 0x01, 0xa0, 0x40, 0x84, + 0x02, 0x88, 0x80, 0x01, 0xe2, 0x78, 0x90, 0x20, + 0xe1, 0x84, 0x49, 0x35, 0xe1, 0xa0, 0x58, 0x15, + 0xe0, 0x43, 0x30, 0x08, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe3, 0x31, 0x00, 0x00, 0x01, 0xa0, 0x10, 0x02, + 0x03, 0xa0, 0x20, 0x00, 0x02, 0x83, 0x30, 0x20, + 0xe3, 0xa0, 0x80, 0x00, 0xe1, 0xb0, 0x98, 0x21, + 0x01, 0xa0, 0x18, 0x01, 0x02, 0x88, 0x80, 0x10, + 0xe1, 0xb0, 0x9c, 0x21, 0x01, 0xa0, 0x14, 0x01, + 0x02, 0x88, 0x80, 0x08, 0xe1, 0xb0, 0x9e, 0x21, + 0x01, 0xa0, 0x12, 0x01, 0x02, 0x88, 0x80, 0x04, + 0xe1, 0xb0, 0x9f, 0x21, 0x01, 0xa0, 0x11, 0x01, + 0x02, 0x88, 0x80, 0x02, 0xe1, 0xb0, 0x9f, 0xa1, + 0x01, 0xa0, 0x10, 0x81, 0x02, 0x88, 0x80, 0x01, + 0xe2, 0x78, 0x90, 0x20, 0xe1, 0x81, 0x19, 0x32, + 0xe1, 0xa0, 0x28, 0x12, 0xe0, 0x83, 0x30, 0x08, + 0xe1, 0xa0, 0xf0, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe1, 0x92, 0x80, 0x81, + 0x0a, 0x00, 0x00, 0x05, 0xe3, 0x11, 0x01, 0x01, + 0x0a, 0x00, 0x00, 0x0c, 0xe1, 0x95, 0x80, 0x84, + 0x0a, 0x00, 0x00, 0x0a, 0xe3, 0x14, 0x01, 0x01, + 0x1a, 0x00, 0x00, 0x08, 0xe3, 0x14, 0x01, 0x01, + 0x0a, 0x00, 0x00, 0x28, 0xe1, 0xa0, 0x00, 0x03, + 0xe1, 0xa0, 0x10, 0x04, 0xe1, 0xa0, 0x20, 0x05, + 0xea, 0x00, 0x00, 0x04, 0xe3, 0x11, 0x01, 0x01, + 0x0a, 0x00, 0x00, 0x22, 0xea, 0x00, 0x00, 0x01, + 0xe3, 0x11, 0x01, 0x01, 0x0a, 0x00, 0x00, 0x1f, + 0xe3, 0x1b, 0x00, 0x01, 0x1a, 0x00, 0x00, 0x16, + 0xe3, 0x1b, 0x00, 0x02, 0x1a, 0x00, 0x00, 0x0c, + 0xe3, 0x1b, 0x0c, 0x02, 0x1a, 0x00, 0x00, 0x05, + 0xe3, 0xc0, 0x81, 0x03, 0xe3, 0xa0, 0x90, 0xff, + 0xe3, 0x89, 0x9c, 0x43, 0xe1, 0x58, 0x00, 0x09, + 0x33, 0xc2, 0x20, 0x01, 0x03, 0x82, 0x20, 0x01, + 0xe2, 0x00, 0x01, 0x03, 0xe3, 0x80, 0x00, 0xff, + 0xe3, 0x80, 0x0c, 0x7f, 0xe1, 0x30, 0x00, 0x00, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe2, 0x00, 0x01, 0x03, + 0xe3, 0x80, 0x00, 0xff, 0xe3, 0x80, 0x0c, 0x43, + 0xe1, 0xa0, 0x25, 0xa2, 0xe1, 0xa0, 0x25, 0x82, + 0xe3, 0x81, 0x11, 0x02, 0xe1, 0x30, 0x00, 0x00, + 0xe1, 0xa0, 0xf0, 0x0e, 0xe2, 0x00, 0x01, 0x03, + 0xe3, 0x80, 0x00, 0x7f, 0xe3, 0x80, 0x09, 0x01, + 0xe3, 0xa0, 0x20, 0x00, 0xe3, 0xc1, 0x10, 0xff, + 0xe3, 0x81, 0x11, 0x02, 0xe1, 0xa0, 0xf0, 0x0e, + 0xe3, 0x80, 0x04, 0x61, 0xe1, 0xa0, 0xf0, 0x0e, + 0xb5, 0x80, 0x1c, 0x0f, 0x29, 0x0f, 0xdd, 0x04, + 0x11, 0x39, 0xf7, 0xff, 0xff, 0xf9, 0x07, 0x3f, + 0x0f, 0x3f, 0x2f, 0x09, 0xdd, 0x02, 0x1d, 0xf9, + 0x31, 0x29, 0xe0, 0x01, 0x1d, 0xf9, 0x31, 0x50, + 0x70, 0x01, 0x30, 0x01, 0xbc, 0x80, 0xbc, 0x08, + 0x47, 0x18, 0xb5, 0x90, 0x1c, 0x07, 0x48, 0x0d, + 0x68, 0x01, 0x29, 0x00, 0xd1, 0x12, 0x4c, 0x0c, + 0x1c, 0x20, 0xa1, 0x0c, 0x22, 0x14, 0xf7, 0xfc, + 0xfd, 0x0d, 0x1d, 0xe0, 0x30, 0x0b, 0x1c, 0x39, + 0xf7, 0xff, 0xff, 0xda, 0x21, 0x29, 0x70, 0x01, + 0x21, 0x00, 0x70, 0x41, 0x1c, 0x20, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x30, 0x08, 0xbc, 0x90, + 0xbc, 0x08, 0x47, 0x18, 0x2e, 0x08, 0x20, 0xd4, + 0x2e, 0x08, 0x99, 0xe4, 0x55, 0x6e, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x20, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x20, 0x28, 0x30, 0x78, 0x00, 0x00, + 0xb5, 0x90, 0x1c, 0x04, 0x1c, 0x0f, 0xa0, 0x09, + 0x21, 0x01, 0xf7, 0xff, 0xf9, 0x6f, 0x21, 0x00, + 0x1c, 0x20, 0xf7, 0xff, 0xf9, 0x6b, 0x21, 0x02, + 0x1c, 0x38, 0xf7, 0xff, 0xf9, 0x67, 0x20, 0x01, + 0xf7, 0xfd, 0xf9, 0x10, 0xbc, 0x90, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x2a, 0x2a, 0x2a, 0x20, + 0x66, 0x61, 0x74, 0x61, 0x6c, 0x20, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x72, + 0x75, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x3a, 0x20, + 0x00, 0x00, 0x00, 0x00, 0xb5, 0xb0, 0x1c, 0x07, + 0x68, 0xc0, 0x07, 0x81, 0xd0, 0x1f, 0x23, 0x20, + 0x40, 0x18, 0xd0, 0x01, 0x6a, 0xbd, 0xe0, 0x04, + 0x68, 0x79, 0x69, 0xba, 0x18, 0x89, 0x69, 0x3a, + 0x1a, 0x8d, 0x28, 0x00, 0xd0, 0x02, 0x1c, 0x38, + 0xf7, 0xff, 0xfb, 0xa2, 0x68, 0xf8, 0x4b, 0x0a, + 0x40, 0x18, 0x60, 0xf8, 0x1c, 0x38, 0xf7, 0xff, + 0xfb, 0x67, 0x1c, 0x04, 0x22, 0x00, 0x1c, 0x38, + 0x1c, 0x29, 0xf0, 0x00, 0xf8, 0x27, 0x1c, 0x20, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x20, 0x00, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0xff, 0xff, 0xcf, 0xff, 0xb5, 0xb0, 0x24, 0x00, + 0x28, 0x00, 0xd0, 0x03, 0xf7, 0xff, 0xff, 0xce, + 0x1c, 0x04, 0xe0, 0x0c, 0x27, 0x00, 0x4d, 0x08, + 0x01, 0xb8, 0x19, 0x40, 0xf7, 0xff, 0xff, 0xc6, + 0x28, 0x00, 0xd0, 0x01, 0x24, 0x00, 0x43, 0xe4, + 0x37, 0x01, 0x2f, 0x10, 0xdb, 0xf4, 0x1c, 0x20, + 0xbc, 0xb0, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0x2e, 0x08, 0x95, 0xe4, 0xb5, 0xf7, 0x68, 0xc5, + 0x69, 0x46, 0x1c, 0x0c, 0x1c, 0x07, 0xb0, 0x81, + 0x48, 0x3c, 0x40, 0x28, 0xd0, 0x04, 0x1c, 0x38, + 0xf7, 0xff, 0xf9, 0x92, 0x28, 0x00, 0xd0, 0x01, + 0x20, 0x02, 0xe0, 0x6a, 0x9a, 0x03, 0x2a, 0x00, + 0xd0, 0x26, 0x2a, 0x01, 0xd0, 0x0b, 0x2a, 0x02, + 0xd1, 0x24, 0x1c, 0x30, 0xf7, 0xff, 0xf9, 0xbc, + 0x28, 0x00, 0xda, 0x09, 0x1c, 0x38, 0xf7, 0xff, + 0xfa, 0xa7, 0x20, 0x01, 0xe0, 0x59, 0x1c, 0x38, + 0xf0, 0x00, 0xf8, 0x8c, 0x19, 0x04, 0xe0, 0x13, + 0x68, 0x79, 0x6a, 0xfa, 0x42, 0x8a, 0xd9, 0x00, + 0x1c, 0x11, 0x69, 0xba, 0x18, 0x89, 0x69, 0x3a, + 0x1a, 0x89, 0x68, 0xfa, 0x09, 0x92, 0xd3, 0x03, + 0x6a, 0xba, 0x42, 0x8a, 0xdd, 0x00, 0x1c, 0x11, + 0x42, 0x81, 0xdd, 0x00, 0x1c, 0x08, 0x18, 0x24, + 0x2c, 0x00, 0xda, 0x03, 0x1c, 0x38, 0xf7, 0xff, + 0xfa, 0x87, 0xe7, 0xcd, 0x0b, 0xa8, 0xd3, 0x04, + 0x68, 0x78, 0x6a, 0xf9, 0x42, 0x81, 0xd2, 0x00, + 0x62, 0xf8, 0x69, 0xb8, 0x42, 0xa0, 0xdc, 0x10, + 0x68, 0x79, 0x6a, 0xfa, 0x42, 0x8a, 0xd9, 0x01, + 0x1c, 0x13, 0xe0, 0x00, 0x1c, 0x0b, 0x18, 0x1b, + 0x69, 0x3e, 0x1b, 0x9b, 0x42, 0xa3, 0xdb, 0x04, + 0x6b, 0x3b, 0x93, 0x00, 0x18, 0xc3, 0x42, 0xa3, + 0xdc, 0x06, 0x20, 0x20, 0x43, 0x28, 0x21, 0x00, + 0x60, 0x39, 0x60, 0xb9, 0x62, 0xbc, 0xe0, 0x14, + 0x1a, 0x24, 0x08, 0xa8, 0xd3, 0x03, 0x9b, 0x00, + 0x1b, 0x18, 0x42, 0x40, 0x60, 0xb8, 0x08, 0x68, + 0xd3, 0x06, 0x42, 0x8a, 0xd9, 0x00, 0x1c, 0x11, + 0x1b, 0x88, 0x1b, 0x00, 0x42, 0x40, 0x60, 0x38, + 0x19, 0x30, 0x23, 0x20, 0x43, 0x9d, 0x60, 0x78, + 0x1c, 0x28, 0x4b, 0x05, 0x40, 0x18, 0x60, 0xf8, + 0x20, 0x00, 0xb0, 0x01, 0xb0, 0x03, 0xbc, 0xf0, + 0xbc, 0x08, 0x47, 0x18, 0x00, 0x10, 0x00, 0x03, + 0xff, 0xf7, 0xcf, 0xbf, 0xb5, 0x00, 0x68, 0x8a, + 0x68, 0x4b, 0x3a, 0x01, 0xd5, 0x03, 0xf0, 0x00, + 0xf8, 0x3f, 0xbc, 0x08, 0x47, 0x18, 0x06, 0x00, + 0x0e, 0x00, 0x70, 0x18, 0x33, 0x01, 0x60, 0x8a, + 0x60, 0x4b, 0xbc, 0x08, 0x47, 0x18, 0x00, 0x00, + 0xb5, 0xb0, 0x1c, 0x07, 0x78, 0x00, 0x1c, 0x0c, + 0x37, 0x01, 0x28, 0x00, 0xd0, 0x0e, 0x25, 0x00, + 0x43, 0xed, 0x1c, 0x21, 0xf0, 0x00, 0xf8, 0xe8, + 0x42, 0xa8, 0xd1, 0x03, 0x1c, 0x28, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x78, 0x38, 0x37, 0x01, + 0x28, 0x00, 0xd1, 0xf2, 0x20, 0x00, 0xbc, 0xb0, + 0xbc, 0x08, 0x47, 0x18, 0x68, 0xc1, 0x07, 0x8a, + 0xd1, 0x04, 0x20, 0x01, 0x49, 0x09, 0x60, 0x08, + 0x42, 0x40, 0x47, 0x70, 0x09, 0x8a, 0xd3, 0x01, + 0x6a, 0x80, 0xe0, 0x04, 0x68, 0x42, 0x69, 0x83, + 0x18, 0xd2, 0x69, 0x00, 0x1a, 0x10, 0x0d, 0x09, + 0xd3, 0xf3, 0x28, 0x00, 0xdd, 0xf1, 0x38, 0x01, + 0x47, 0x70, 0x00, 0x00, 0x2e, 0x08, 0x20, 0xb8, + 0xb5, 0xf0, 0x1c, 0x04, 0x68, 0xc8, 0x1c, 0x0f, + 0x4b, 0x5a, 0x40, 0x18, 0x23, 0x01, 0x05, 0x9b, + 0x43, 0x18, 0x60, 0xc8, 0x09, 0x80, 0xd3, 0x02, + 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x95, 0x06, 0x26, + 0x0e, 0x36, 0x68, 0xb9, 0x29, 0x00, 0xda, 0x12, + 0x68, 0xf8, 0x0a, 0x82, 0xd2, 0x0f, 0x22, 0x00, + 0x43, 0xd2, 0x1a, 0x51, 0x23, 0x09, 0x03, 0x5b, + 0x43, 0x18, 0x60, 0xf8, 0x60, 0xb9, 0x68, 0x79, + 0x70, 0x0e, 0x31, 0x01, 0x60, 0x79, 0x1c, 0x30, + 0xbc, 0xf0, 0xbc, 0x08, 0x47, 0x18, 0x68, 0xf8, + 0x49, 0x49, 0x40, 0x01, 0x29, 0x02, 0xd0, 0x03, + 0x1c, 0x38, 0xf7, 0xff, 0xf9, 0xcd, 0xe0, 0x7f, + 0x49, 0x46, 0x40, 0x01, 0x23, 0x01, 0x03, 0xdb, + 0x42, 0x99, 0xd1, 0x0b, 0x22, 0x02, 0x21, 0x00, + 0x1c, 0x38, 0xf7, 0xff, 0xfe, 0xfb, 0x68, 0xf8, + 0x09, 0x80, 0xd3, 0x02, 0x1c, 0x38, 0xf7, 0xff, + 0xfa, 0x63, 0x68, 0xf8, 0x25, 0x09, 0x03, 0x6d, + 0x43, 0x05, 0x60, 0xfd, 0x69, 0x38, 0x28, 0x00, + 0xd1, 0x2f, 0x1c, 0x38, 0xf7, 0xff, 0xf8, 0x88, + 0x28, 0x00, 0xd0, 0x18, 0x68, 0xf8, 0x0a, 0x00, + 0x07, 0x80, 0xd0, 0x09, 0x69, 0xf8, 0xf7, 0xff, + 0xf9, 0x7d, 0x61, 0x38, 0x60, 0x78, 0x23, 0x01, + 0x02, 0xdb, 0x43, 0x1d, 0x68, 0xf8, 0xe0, 0x1a, + 0x1d, 0xf8, 0x30, 0x1d, 0x61, 0x38, 0x60, 0x78, + 0x20, 0x01, 0x23, 0x01, 0x02, 0x9b, 0x43, 0x1d, + 0x61, 0xf8, 0x60, 0xfd, 0xe0, 0x11, 0x69, 0xf8, + 0xf7, 0xff, 0xf9, 0x68, 0x61, 0x38, 0x60, 0x78, + 0x23, 0x01, 0x02, 0xdb, 0x43, 0x1d, 0x68, 0xf8, + 0x43, 0x28, 0x60, 0xf8, 0x0a, 0x29, 0x07, 0x89, + 0xd1, 0x03, 0x08, 0xdb, 0x43, 0x1d, 0x43, 0x28, + 0x60, 0xf8, 0x0a, 0x68, 0xd3, 0x19, 0x68, 0x78, + 0x6a, 0xf9, 0x69, 0x3c, 0x42, 0x81, 0xd9, 0x00, + 0x1c, 0x08, 0x1b, 0x01, 0xd0, 0x05, 0x1c, 0x20, + 0x1c, 0x3a, 0xf7, 0xff, 0xf9, 0x7d, 0x28, 0x00, + 0xd1, 0x26, 0x1c, 0x60, 0x62, 0xf8, 0x60, 0x78, + 0x69, 0xf8, 0x1e, 0x41, 0x63, 0x38, 0x60, 0xb9, + 0x70, 0x26, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x69, 0x38, 0x68, 0x7a, 0x70, 0x14, + 0x32, 0x01, 0x60, 0x7a, 0x6a, 0xf9, 0x42, 0x91, + 0xd8, 0x00, 0x1c, 0x11, 0x1a, 0x09, 0x69, 0xfa, + 0x63, 0x3a, 0x0a, 0xeb, 0xd2, 0x03, 0x2e, 0x0a, + 0xd0, 0x01, 0x42, 0x8a, 0xdc, 0x0d, 0x62, 0xf8, + 0x22, 0x00, 0x60, 0x78, 0x60, 0xba, 0x1c, 0x3a, + 0xf7, 0xff, 0xf9, 0x56, 0x28, 0x00, 0xd0, 0x04, + 0x20, 0x00, 0x43, 0xc0, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0xff, 0xf7, 0xff, 0xff, + 0x00, 0x00, 0x10, 0x8a, 0x00, 0x00, 0xa0, 0x10, + 0xb5, 0x00, 0x68, 0x8a, 0x68, 0x4b, 0x3a, 0x01, + 0xd5, 0x03, 0xf7, 0xff, 0xff, 0x39, 0xbc, 0x08, + 0x47, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x70, 0x18, + 0x33, 0x01, 0x60, 0x8a, 0x60, 0x4b, 0xbc, 0x08, + 0x47, 0x18, 0x00, 0x00, 0x47, 0x78, 0x46, 0xc0, + 0xe9, 0x2d, 0x40, 0x00, 0xe2, 0x8f, 0xe0, 0x00, + 0xef, 0x12, 0x34, 0x56, 0xe8, 0xbd, 0x40, 0x00, + 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xa0, 0x10, 0x00, + 0xe3, 0xa0, 0x00, 0x18, 0xe5, 0x9f, 0x10, 0x18, + 0xef, 0x12, 0x34, 0x56, 0xea, 0xff, 0xff, 0xfe, + 0xe1, 0xa0, 0x10, 0x00, 0xe3, 0xa0, 0x00, 0x18, + 0xe5, 0x9f, 0x10, 0x08, 0xef, 0x12, 0x34, 0x56, + 0xea, 0xff, 0xff, 0xfe, 0x00, 0x02, 0x00, 0x26, + 0x00, 0x02, 0x00, 0x23, 0xe8, 0xb0, 0x01, 0xf0, + 0xe8, 0xa1, 0x01, 0xf0, 0xe8, 0xb0, 0x01, 0xf8, + 0xe8, 0xa1, 0x01, 0xf8, 0xe8, 0xb0, 0x01, 0xf8, + 0xe8, 0xa1, 0x01, 0xf8, 0xe8, 0xb0, 0x01, 0xf8, + 0xe8, 0xa1, 0x01, 0xf8, 0xe8, 0xb0, 0x01, 0xf8, + 0xe8, 0xa1, 0x01, 0xf8, 0xe8, 0xb0, 0x01, 0xf8, + 0xe8, 0xa1, 0x01, 0xf8, 0xe8, 0xb0, 0x01, 0xf8, + 0xe8, 0xa1, 0x01, 0xf8, 0xe8, 0xb0, 0x01, 0xf8, + 0xe8, 0xa1, 0x01, 0xf8, 0xe2, 0x52, 0x20, 0xbc, + 0x1a, 0xff, 0xff, 0xed, 0xe8, 0xbd, 0x01, 0xf8, + 0xe1, 0x2f, 0xff, 0x1e, 0xe4, 0x90, 0x40, 0x04, + 0xe1, 0x85, 0x54, 0x24, 0xe4, 0x81, 0x50, 0x04, + 0xe1, 0xa0, 0x5c, 0x04, 0xe2, 0x53, 0x30, 0x04, + 0x1a, 0xff, 0xff, 0xf9, 0xe5, 0x9f, 0xf0, 0x88, + 0xe4, 0x90, 0x40, 0x04, 0xe1, 0x85, 0x5c, 0x24, + 0xe4, 0x81, 0x50, 0x04, 0xe1, 0xa0, 0x54, 0x04, + 0xe2, 0x53, 0x30, 0x04, 0x1a, 0xff, 0xff, 0xf9, + 0xe5, 0x9f, 0xf0, 0x70, 0xe4, 0x90, 0x40, 0x04, + 0xe1, 0xa0, 0x58, 0x24, 0xe0, 0xc1, 0x50, 0xb2, + 0xe0, 0xc1, 0x40, 0xb2, 0xe2, 0x53, 0x30, 0x04, + 0x1a, 0xff, 0xff, 0xf9, 0xe5, 0x9f, 0xf0, 0x4c, + 0xe2, 0x03, 0x40, 0x0f, 0xe0, 0x53, 0x40, 0x04, + 0x0a, 0x00, 0x00, 0x0a, 0xe9, 0x2d, 0x00, 0xc4, + 0xe1, 0xa0, 0x20, 0x03, 0xe1, 0xa0, 0x30, 0x04, + 0xe8, 0xb0, 0x00, 0xf0, 0xe8, 0xa1, 0x00, 0xf0, + 0xe2, 0x53, 0x30, 0x10, 0x1a, 0xff, 0xff, 0xfb, + 0xe1, 0xa0, 0x30, 0x02, 0xe8, 0xbd, 0x00, 0xc4, + 0xe2, 0x13, 0x30, 0x0f, 0x0a, 0x00, 0x00, 0x03, + 0xe4, 0x90, 0x40, 0x04, 0xe4, 0x81, 0x40, 0x04, + 0xe2, 0x53, 0x30, 0x04, 0x1a, 0xff, 0xff, 0xfb, + 0xe5, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x01, 0xc2, 0x84, 0x2e, 0x01, 0xc2, 0x28, + 0x2e, 0x01, 0xc2, 0x58, 0xe9, 0x2d, 0x00, 0x38, + 0xe3, 0x52, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x3f, + 0xe3, 0xe0, 0x30, 0x03, 0xe0, 0x12, 0x30, 0x03, + 0x0a, 0x00, 0x00, 0x30, 0xe2, 0x10, 0x30, 0x01, + 0x0a, 0x00, 0x00, 0x03, 0xe4, 0xd0, 0x30, 0x01, + 0xe4, 0xc1, 0x30, 0x01, 0xe2, 0x52, 0x20, 0x01, + 0x0a, 0x00, 0x00, 0x36, 0xe2, 0x10, 0x30, 0x02, + 0x0a, 0x00, 0x00, 0x05, 0xe0, 0xd0, 0x30, 0xb2, + 0xe1, 0xa0, 0x44, 0x23, 0xe4, 0xc1, 0x40, 0x01, + 0xe4, 0xc1, 0x30, 0x01, 0xe2, 0x52, 0x20, 0x02, + 0x0a, 0x00, 0x00, 0x2e, 0xe3, 0xe0, 0x30, 0x03, + 0xe0, 0x12, 0x30, 0x03, 0x0a, 0x00, 0x00, 0x1f, + 0xe2, 0x11, 0x40, 0x01, 0x0a, 0x00, 0x00, 0x19, + 0xe2, 0x11, 0x40, 0x02, 0x1a, 0x00, 0x00, 0x0b, + 0xe2, 0x41, 0x10, 0x01, 0xe5, 0x91, 0x50, 0x00, + 0xe1, 0xa0, 0x5c, 0x25, 0xe1, 0xa0, 0x5c, 0x05, + 0xe5, 0x9f, 0xf0, 0xa8, 0xe5, 0x91, 0x40, 0x00, + 0xe1, 0xa0, 0x44, 0x04, 0xe1, 0xa0, 0x44, 0x24, + 0xe1, 0x85, 0x50, 0x04, 0xe5, 0x81, 0x50, 0x00, + 0xe2, 0x81, 0x10, 0x01, 0xea, 0x00, 0x00, 0x0f, + 0xe2, 0x41, 0x10, 0x03, 0xe5, 0x91, 0x50, 0x00, + 0xe1, 0xa0, 0x54, 0x25, 0xe1, 0xa0, 0x54, 0x05, + 0xe5, 0x9f, 0xf0, 0x7c, 0xe5, 0x91, 0x40, 0x00, + 0xe1, 0xa0, 0x4c, 0x04, 0xe1, 0xa0, 0x4c, 0x24, + 0xe1, 0x85, 0x50, 0x04, 0xe5, 0x81, 0x50, 0x00, + 0xe2, 0x81, 0x10, 0x03, 0xea, 0x00, 0x00, 0x03, + 0xe2, 0x11, 0x40, 0x02, 0x0a, 0x00, 0x00, 0x00, + 0xe5, 0x9f, 0xf0, 0x5c, 0xe5, 0x9f, 0xf0, 0x48, + 0xe2, 0x12, 0x20, 0x03, 0x0a, 0x00, 0x00, 0x09, + 0xe4, 0xd0, 0x40, 0x01, 0xe4, 0xc1, 0x40, 0x01, + 0xe2, 0x52, 0x20, 0x01, 0x0a, 0x00, 0x00, 0x05, + 0xe4, 0xd0, 0x40, 0x01, 0xe4, 0xc1, 0x40, 0x01, + 0xe2, 0x52, 0x20, 0x01, 0x0a, 0x00, 0x00, 0x01, + 0xe4, 0xd0, 0x40, 0x01, 0xe4, 0xc1, 0x40, 0x01, + 0xe8, 0xbd, 0x00, 0x38, 0xe3, 0x8e, 0xe0, 0x01, + 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x01, 0xf8, + 0xe5, 0x9f, 0xf0, 0x18, 0x2e, 0x01, 0xc0, 0xf8, + 0x2e, 0x01, 0xc1, 0x30, 0x2e, 0x01, 0xc1, 0x4c, + 0x2e, 0x01, 0xc0, 0xf8, 0x2e, 0x01, 0xc1, 0x14, + 0x2e, 0x01, 0xc1, 0x4c, 0x2e, 0x01, 0xc1, 0x30, + 0x2e, 0x01, 0xc0, 0xa8, 0xe9, 0x2d, 0x5f, 0xff, + 0xe1, 0x4f, 0x00, 0x00, 0xe9, 0x2d, 0x00, 0x01, + 0xe2, 0x8f, 0x00, 0x01, 0xe1, 0x2f, 0xff, 0x10, + 0x21, 0xff, 0x48, 0x37, 0x68, 0x00, 0x40, 0x52, + 0x42, 0x08, 0xd1, 0x0b, 0x32, 0x20, 0x0a, 0x00, + 0x42, 0x08, 0xd1, 0x07, 0x32, 0x20, 0x0a, 0x00, + 0x42, 0x08, 0xd1, 0x03, 0x0a, 0x00, 0x42, 0x08, + 0xd0, 0x23, 0x32, 0x20, 0x21, 0x0f, 0x42, 0x08, + 0xd1, 0x01, 0x32, 0x10, 0x09, 0x00, 0x21, 0x01, + 0x42, 0x08, 0xd1, 0x08, 0x1d, 0x12, 0x21, 0x02, + 0x42, 0x08, 0xd1, 0x04, 0x1d, 0x12, 0x21, 0x04, + 0x42, 0x08, 0xd1, 0x00, 0x1d, 0x12, 0x48, 0x25, + 0x68, 0x00, 0xb4, 0x01, 0x08, 0x90, 0x21, 0x01, + 0x40, 0x81, 0x48, 0x21, 0x60, 0x01, 0x48, 0x1d, + 0x58, 0x82, 0x48, 0x01, 0x46, 0x86, 0x47, 0x10, + 0x2e, 0x01, 0xc3, 0x61, 0xbc, 0x02, 0x48, 0x1d, + 0x60, 0x01, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, + 0xe8, 0xbd, 0x00, 0x01, 0xe1, 0x69, 0xf0, 0x00, + 0xe8, 0xbd, 0x5f, 0xff, 0xe2, 0x5e, 0xf0, 0x04, + 0x48, 0x12, 0x21, 0x20, 0x4a, 0x12, 0x60, 0x02, + 0x1d, 0x00, 0x1e, 0x49, 0xd1, 0xfb, 0x20, 0x00, + 0x47, 0x70, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0x46, 0x73, 0x49, 0x0e, 0x60, 0x08, 0x20, 0x00, + 0x47, 0x18, 0x46, 0x73, 0x49, 0x0c, 0x60, 0x08, + 0x20, 0x00, 0x47, 0x18, 0x46, 0x73, 0x48, 0x0b, + 0x68, 0x00, 0x47, 0x18, 0x46, 0x73, 0x49, 0x09, + 0x60, 0x08, 0x47, 0x18, 0x46, 0x73, 0x4a, 0x03, + 0x00, 0x80, 0x18, 0x12, 0x68, 0x10, 0x60, 0x11, + 0x47, 0x18, 0x00, 0x00, 0x2e, 0x08, 0x3a, 0xfc, + 0x2e, 0x01, 0xc3, 0x90, 0x66, 0x00, 0x00, 0x10, + 0x66, 0x00, 0x00, 0x14, 0x66, 0x00, 0x00, 0x18, + 0x66, 0x00, 0x00, 0x1c, 0xe9, 0x2d, 0x5f, 0xf0, + 0xe1, 0x4f, 0x40, 0x00, 0xe3, 0x14, 0x00, 0x20, + 0x11, 0x5e, 0x40, 0xb2, 0x13, 0xc4, 0x4c, 0xff, + 0x05, 0x1e, 0x40, 0x04, 0x03, 0xc4, 0x44, 0xff, + 0xe5, 0x9f, 0x50, 0x14, 0xe7, 0x95, 0x51, 0x04, + 0xe5, 0x9f, 0xe0, 0x00, 0xe1, 0x2f, 0xff, 0x15, + 0x2e, 0x01, 0xc4, 0x10, 0xe8, 0xbd, 0x5f, 0xf0, + 0xe1, 0xb0, 0xf0, 0x0e, 0x2e, 0x08, 0x1f, 0xf0, + 0x00, 0x00, 0x00, 0xc0, 0x46, 0x73, 0x47, 0x78, + 0xe1, 0x0f, 0x10, 0x00, 0xe3, 0x81, 0x00, 0x80, + 0xe1, 0x29, 0xf0, 0x00, 0xe2, 0x01, 0x00, 0x80, + 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x00, 0x00, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0x4f, 0x10, 0x00, + 0xe3, 0x81, 0x00, 0x80, 0xe1, 0x69, 0xf0, 0x00, + 0xe2, 0x01, 0x00, 0x80, 0xe1, 0x2f, 0xff, 0x13, + 0x46, 0x73, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, + 0xe1, 0x0f, 0x10, 0x00, 0xe3, 0x81, 0x00, 0x40, + 0xe1, 0x29, 0xf0, 0x00, 0xe2, 0x01, 0x00, 0x40, + 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x00, 0x00, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0x4f, 0x10, 0x00, + 0xe3, 0x81, 0x00, 0x40, 0xe1, 0x69, 0xf0, 0x00, + 0xe2, 0x01, 0x00, 0x40, 0xe1, 0x2f, 0xff, 0x13, + 0x46, 0x73, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, + 0xe1, 0x0f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x80, + 0xe1, 0x29, 0xf0, 0x00, 0xe3, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x00, 0x00, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0x4f, 0x00, 0x00, + 0xe3, 0xc0, 0x00, 0x80, 0xe1, 0x69, 0xf0, 0x00, + 0xe3, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x13, + 0x46, 0x73, 0x00, 0x00, 0x47, 0x78, 0x00, 0x00, + 0xe1, 0x0f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x40, + 0xe1, 0x29, 0xf0, 0x00, 0xe3, 0xa0, 0x00, 0x00, + 0xe1, 0x2f, 0xff, 0x13, 0x46, 0x73, 0x00, 0x00, + 0x47, 0x78, 0x00, 0x00, 0xe1, 0x4f, 0x00, 0x00, + 0xe3, 0xc0, 0x00, 0x40, 0xe1, 0x69, 0xf0, 0x00, + 0xe3, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x13, + 0x46, 0x73, 0x49, 0x02, 0x60, 0x08, 0x20, 0x00, + 0x46, 0x9f, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x46, 0x73, 0x49, 0x02, 0x60, 0x08, 0x20, 0x00, + 0x46, 0x9f, 0x00, 0x00, 0x66, 0x00, 0x00, 0x04, + 0x46, 0x73, 0x48, 0x03, 0x68, 0x00, 0x47, 0x18, + 0x46, 0x73, 0x49, 0x01, 0x60, 0x08, 0x47, 0x18, + 0x66, 0x00, 0x00, 0x08, 0x00, 0x00, 0x46, 0x6c, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x02, 0xd0, + 0x00, 0x00, 0x02, 0xd0, 0x00, 0x00, 0x00, 0x15, + 0x00, 0x03, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x90, 0x85, 0x00, 0x00, 0xa6, 0xee, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xd0, + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x08, 0xa0, 0x00, 0x08, 0x08, 0x28, + 0x00, 0x08, 0x88, 0x68, 0x00, 0x08, 0xa0, 0x98, + 0x00, 0x08, 0x88, 0x68, 0x00, 0x08, 0x28, 0x98, + 0x00, 0x08, 0xac, 0xf4, 0x00, 0x08, 0xb8, 0x7c, + 0x00, 0x02, 0x02, 0x88, 0x00, 0x02, 0x08, 0x22, + 0x00, 0x02, 0x88, 0xaa, 0x00, 0x02, 0x22, 0xaa, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x04, 0x24, 0x00, 0x04, 0x04, 0x24, + 0x00, 0x04, 0x28, 0x6c, 0x00, 0x04, 0x28, 0x6c, + 0x00, 0x01, 0x10, 0x44, 0x00, 0x01, 0x20, 0x44, + 0x00, 0x01, 0x11, 0xaa, 0x00, 0x01, 0x88, 0x55, + 0x00, 0x01, 0x44, 0xaa, 0x00, 0x01, 0x44, 0x55, + 0x00, 0x20, 0x80, 0xa0, 0x00, 0x20, 0x80, 0xc0, + 0x00, 0x20, 0x20, 0xa0, 0x00, 0x20, 0x40, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x02, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x10, 0x13, 0x16, 0x1a, 0x1b, 0x1d, 0x22, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x10, 0x13, 0x16, 0x1a, 0x1b, 0x1d, 0x22, + 0x10, 0x10, 0x16, 0x18, 0x1b, 0x1d, 0x22, 0x25, + 0x13, 0x16, 0x1a, 0x1b, 0x1d, 0x22, 0x22, 0x26, + 0x16, 0x16, 0x1a, 0x1b, 0x1d, 0x22, 0x25, 0x28, + 0x16, 0x1a, 0x1b, 0x1d, 0x20, 0x23, 0x28, 0x30, + 0x1a, 0x1b, 0x1d, 0x20, 0x23, 0x28, 0x30, 0x3a, + 0x1a, 0x1b, 0x1d, 0x22, 0x26, 0x2e, 0x38, 0x45, + 0x1b, 0x1d, 0x23, 0x26, 0x2e, 0x38, 0x45, 0x53, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0xd6, 0x00, 0x00, 0x1b, 0x08, 0x00, + 0x00, 0x1f, 0xde, 0x00, 0x00, 0x00, 0x50, 0x00, + 0x00, 0x09, 0xce, 0x00, 0x00, 0x13, 0x4c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x05, 0x28, 0x20, 0x01, + 0x00, 0x00, 0x02, 0x40, 0x71, 0x01, 0x00, 0x68, + 0xe0, 0x7f, 0xb0, 0x7f, 0x60, 0x40, 0xe0, 0x1d, + 0x90, 0x10, 0xb4, 0x81, 0xe8, 0xc0, 0xe0, 0xc2, + 0x90, 0x18, 0x00, 0x8a, 0x70, 0xc0, 0x0f, 0x87, + 0xe3, 0xe8, 0xc0, 0x00, 0x70, 0x40, 0xe0, 0x01, + 0xe0, 0x86, 0x00, 0x26, 0xd0, 0x28, 0xe0, 0x0e, + 0xd0, 0x0e, 0x0f, 0x0b, 0x70, 0x1d, 0xe0, 0x67, + 0x0f, 0x87, 0x0f, 0x87, 0x0f, 0x87, 0x0f, 0x87, + 0x0f, 0x87, 0x02, 0x20, 0xd0, 0x01, 0xe0, 0x25, + 0x0f, 0x45, 0x6f, 0x81, 0xdf, 0xa6, 0xe0, 0x36, + 0xe1, 0x30, 0xa0, 0x37, 0xc0, 0x00, 0xe0, 0x26, + 0x00, 0x33, 0xdf, 0x00, 0xe0, 0x32, 0x0f, 0xc5, + 0x0f, 0x87, 0x00, 0x27, 0xd0, 0x4c, 0xe0, 0x21, + 0x00, 0x33, 0xdf, 0x60, 0x00, 0x27, 0xd0, 0x56, + 0x60, 0x01, 0xe0, 0x2d, 0x03, 0xa0, 0xd0, 0x41, + 0xa0, 0x78, 0x00, 0x60, 0xd0, 0x41, 0xa0, 0x77, + 0x00, 0x22, 0xd0, 0x58, 0xa0, 0x76, 0x00, 0x21, + 0xd0, 0x7c, 0x00, 0x4a, 0xd0, 0x72, 0x70, 0x40, + 0x00, 0x06, 0x0f, 0x87, 0x00, 0x22, 0xdc, 0xf8, + 0xf0, 0x4a, 0xe1, 0x70, 0x07, 0xef, 0xdd, 0xbf, + 0x4f, 0x36, 0x1d, 0x99, 0x4d, 0x80, 0x10, 0x18, + 0xdd, 0x50, 0x60, 0x35, 0xdd, 0x72, 0xdd, 0x10, + 0x3d, 0xb4, 0xec, 0x57, 0x2d, 0x36, 0x1d, 0x03, + 0xbd, 0x04, 0xe4, 0x2b, 0x01, 0x46, 0x00, 0x06, + 0xac, 0xf6, 0x80, 0x3f, 0x0d, 0x0a, 0x10, 0x02, + 0x7d, 0x40, 0x10, 0x1e, 0xb0, 0x20, 0xbc, 0xe0, + 0x00, 0x06, 0x00, 0xc6, 0xe0, 0x52, 0xb7, 0x60, + 0xb7, 0x60, 0xc0, 0x5d, 0x30, 0x5f, 0xe4, 0x72, + 0xc7, 0x5e, 0x00, 0xed, 0xd0, 0x28, 0x70, 0x40, + 0xb0, 0x7f, 0x60, 0x40, 0xc0, 0x1d, 0x30, 0x1c, + 0xf8, 0x7e, 0x00, 0x21, 0xd0, 0x01, 0x00, 0x26, + 0xd0, 0x78, 0xa0, 0x38, 0x80, 0x3f, 0x70, 0x01, + 0xb0, 0x3f, 0x60, 0x01, 0x0f, 0x87, 0x80, 0x34, + 0x03, 0xef, 0xd8, 0x3f, 0xa8, 0x38, 0x01, 0x35, + 0xdc, 0x33, 0xe0, 0x46, 0xc0, 0x1c, 0xe4, 0xa5, + 0x97, 0x2e, 0x30, 0x1c, 0xe8, 0x8e, 0x00, 0x21, + 0xd0, 0x00, 0xa0, 0x38, 0xc0, 0x5d, 0x00, 0x23, + 0xd0, 0x00, 0x30, 0x40, 0x30, 0x5e, 0xe4, 0x99, + 0x20, 0x5e, 0xc0, 0x01, 0x30, 0x1c, 0xec, 0xa4, + 0xe0, 0x9d, 0x20, 0x5f, 0xc0, 0x1c, 0x30, 0x01, + 0xf4, 0xa5, 0xc0, 0x1c, 0x30, 0x1d, 0xec, 0xa4, + 0xe4, 0xa5, 0x90, 0x38, 0x00, 0x1b, 0xe8, 0xa5, + 0xa0, 0x66, 0xb1, 0x3f, 0xe4, 0xb3, 0xe8, 0xb1, + 0xc0, 0x4b, 0x30, 0x44, 0xf8, 0xb3, 0x60, 0x45, + 0xb1, 0x7c, 0x01, 0x20, 0xd0, 0x00, 0xa0, 0x05, + 0x80, 0x40, 0x72, 0xc5, 0x00, 0x06, 0x90, 0x55, + 0xd0, 0x01, 0x00, 0x40, 0xa0, 0x55, 0x0f, 0x87, + 0x01, 0x46, 0x00, 0x06, 0x03, 0xef, 0xd0, 0x3f, + 0xa0, 0x38, 0xb0, 0x01, 0xa0, 0x37, 0x80, 0x3f, + 0x82, 0x34, 0x80, 0x3f, 0xf2, 0x1a, 0x80, 0x34, + 0x80, 0x3f, 0xf2, 0x1a, 0xd8, 0x00, 0xd8, 0x40, + 0xd8, 0x80, 0xd8, 0xc0, 0xd9, 0x00, 0xd9, 0x40, + 0xd9, 0x80, 0xd9, 0xc0, 0xda, 0x00, 0xda, 0x40, + 0xda, 0x80, 0xda, 0xc0, 0xdb, 0x00, 0xdb, 0x40, + 0xdb, 0x80, 0xdb, 0xc0, 0xdc, 0x00, 0xdc, 0x40, + 0xdc, 0x80, 0xdc, 0xc0, 0xdd, 0x00, 0xdd, 0x40, + 0xdd, 0x80, 0xdd, 0xc0, 0xde, 0x00, 0xde, 0x40, + 0xde, 0x80, 0xde, 0xc0, 0xdf, 0x00, 0xdf, 0x40, + 0xdf, 0x80, 0xdf, 0xc0, 0xde, 0x80, 0xde, 0xc1, + 0x00, 0x28, 0xd0, 0x60, 0x6e, 0x81, 0x80, 0x00, + 0x80, 0x05, 0x00, 0xe3, 0xd1, 0x88, 0x00, 0x73, + 0xd5, 0x80, 0x60, 0x06, 0xb1, 0xbc, 0x00, 0xfa, + 0xd0, 0x80, 0x60, 0x06, 0x00, 0x26, 0xd0, 0x6c, + 0x6e, 0x81, 0x04, 0xf4, 0xdc, 0x00, 0x00, 0xee, + 0xd1, 0x94, 0x60, 0x06, 0x00, 0xed, 0xd0, 0x50, + 0x6e, 0x81, 0x00, 0x22, 0xd0, 0x70, 0x6e, 0x81, + 0x00, 0xee, 0xd0, 0x74, 0x6e, 0x81, 0xd0, 0x4c, + 0x6e, 0x81, 0xd0, 0x02, 0x00, 0xef, 0xd0, 0x6c, + 0x60, 0x01, 0xd0, 0x03, 0x00, 0xef, 0xd0, 0x70, + 0x60, 0x01, 0x00, 0xe0, 0xd0, 0x48, 0xd0, 0x02, + 0x60, 0x01, 0x00, 0x32, 0xdf, 0x20, 0xa0, 0x1c, + 0x00, 0x21, 0xd0, 0x60, 0xa0, 0x76, 0x00, 0x34, + 0xd5, 0x70, 0x80, 0x3f, 0x00, 0x23, 0xd0, 0x5c, + 0x00, 0x4a, 0xd0, 0x72, 0x70, 0x40, 0x00, 0x06, + 0x00, 0x22, 0xd1, 0xa4, 0x6e, 0xc6, 0xd0, 0x58, + 0x6e, 0xc1, 0xd0, 0xc9, 0x00, 0xed, 0xd0, 0x54, + 0x60, 0xc1, 0x00, 0x22, 0xd0, 0x40, 0x60, 0xc1, + 0x00, 0x22, 0xd0, 0x60, 0x60, 0xc1, 0x82, 0x34, + 0x80, 0x3f, 0xd6, 0xd9, 0x01, 0x2d, 0xd6, 0x0c, + 0x16, 0x08, 0xd0, 0x55, 0xd0, 0x2c, 0x60, 0x40, + 0xd0, 0x70, 0x00, 0xfb, 0xd1, 0x00, 0x60, 0x01, + 0x00, 0x2b, 0xd4, 0x10, 0x00, 0x29, 0xd4, 0x40, + 0x00, 0x2b, 0xd0, 0x90, 0xc0, 0xc2, 0xd1, 0x18, + 0xd1, 0x44, 0xa1, 0x50, 0x00, 0x21, 0xd0, 0xb6, + 0xd0, 0xd7, 0x00, 0x29, 0xd0, 0x04, 0x64, 0x00, + 0xb0, 0x3c, 0x64, 0x40, 0x80, 0x34, 0x80, 0x3f, + 0xd0, 0x40, 0x00, 0x35, 0xd0, 0x00, 0x60, 0x01, + 0xd0, 0x48, 0x6e, 0x81, 0xd0, 0x44, 0x6e, 0x81, + 0x00, 0x64, 0xd1, 0x80, 0x6e, 0x86, 0x01, 0x3c, + 0xd2, 0x39, 0xe0, 0x46, 0xd0, 0x00, 0xd0, 0x40, + 0xd0, 0x80, 0xd0, 0xc0, 0xd1, 0x00, 0xd1, 0x40, + 0xd1, 0x80, 0xd1, 0xc0, 0xd2, 0x00, 0xd2, 0x40, + 0xd2, 0x80, 0xd2, 0xc0, 0xd3, 0x00, 0xd3, 0x40, + 0xd3, 0x80, 0xd3, 0xc0, 0xd4, 0x00, 0xd4, 0x40, + 0xd4, 0x80, 0xd4, 0xc0, 0xd5, 0x00, 0xd5, 0x40, + 0xd5, 0x80, 0xd5, 0xc0, 0xd6, 0x00, 0xd6, 0x40, + 0xd6, 0x80, 0xd6, 0xc0, 0xd7, 0x00, 0xd7, 0x40, + 0xd7, 0x80, 0xd7, 0xc0, 0x0f, 0xc5, 0x50, 0x00, + 0x01, 0x46, 0x00, 0x06, 0xde, 0x80, 0xde, 0xc1, + 0x03, 0x2f, 0xd0, 0x33, 0xa0, 0x38, 0xb0, 0x01, + 0xa0, 0x37, 0x80, 0x3f, 0x08, 0x20, 0xdf, 0x00, + 0x82, 0x34, 0x80, 0x3f, 0x00, 0xee, 0xd0, 0x08, + 0x77, 0xc0, 0xb0, 0x04, 0x77, 0x80, 0xb0, 0x04, + 0xc0, 0x5f, 0x30, 0x5e, 0x60, 0x40, 0xd7, 0x00, + 0xb7, 0x01, 0x80, 0x34, 0x80, 0x3f, 0x00, 0x60, + 0xd0, 0x80, 0x00, 0xec, 0xd0, 0x40, 0x60, 0x81, + 0xb0, 0x7c, 0x60, 0x81, 0x00, 0xa0, 0xd0, 0x80, + 0xb0, 0x74, 0x60, 0x81, 0xb0, 0x7c, 0x60, 0x81, + 0x00, 0x68, 0xd0, 0x80, 0x6e, 0x82, 0x00, 0xef, + 0xd0, 0x8c, 0x6e, 0x82, 0x00, 0x06, 0xd0, 0x11, + 0xa0, 0x38, 0x80, 0x3f, 0x08, 0x20, 0xd0, 0x40, + 0x10, 0x48, 0xa0, 0x4a, 0xa0, 0x5b, 0x0c, 0x20, + 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x27, 0xa0, 0x0a, + 0x90, 0x4d, 0x0f, 0xff, 0xd8, 0x1f, 0x40, 0x40, + 0xa0, 0x4d, 0x80, 0x0a, 0x80, 0x07, 0x80, 0x1b, + 0x80, 0x27, 0x00, 0x60, 0xd0, 0x00, 0xa0, 0x09, + 0x80, 0x28, 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, + 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, + 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, + 0xd0, 0x00, 0xa0, 0x29, 0x80, 0x2b, 0x02, 0x30, + 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, 0x01, 0xb0, + 0xd0, 0x10, 0xa0, 0x37, 0x80, 0x3f, 0x02, 0x30, + 0xd0, 0x01, 0xa0, 0x38, 0x00, 0xea, 0xd0, 0x00, + 0xd0, 0x4e, 0x0f, 0x0b, 0x70, 0x40, 0x00, 0x06, + 0x00, 0x21, 0xd0, 0x88, 0x00, 0xe1, 0xd0, 0x60, + 0x60, 0x81, 0x00, 0x2b, 0xd0, 0x80, 0x00, 0xe0, + 0xd0, 0x6c, 0x60, 0x81, 0xb0, 0x7c, 0x00, 0x29, + 0xd0, 0x80, 0x60, 0x81, 0xb0, 0x7c, 0xd0, 0x82, + 0x60, 0x81, 0xb0, 0x7c, 0xd0, 0x85, 0x60, 0x81, + 0xb0, 0x7c, 0x03, 0xaa, 0xd0, 0x98, 0x60, 0x81, + 0xb0, 0x7c, 0x6e, 0x81, 0x00, 0x27, 0xd0, 0x40, + 0x6e, 0x81, 0xb0, 0x7c, 0x6e, 0x81, 0xb0, 0x7c, + 0x6e, 0x81, 0x00, 0x27, 0xd1, 0x90, 0x6e, 0x86, + 0x00, 0x21, 0xd1, 0xb8, 0x6e, 0x86, 0x00, 0x66, + 0xd1, 0xa0, 0xd0, 0x00, 0x01, 0x64, 0xd0, 0x58, + 0x30, 0x01, 0x60, 0x06, 0x00, 0xed, 0xd1, 0xbc, + 0x6e, 0x86, 0x00, 0xec, 0xd1, 0xb8, 0x6e, 0x86, + 0xb1, 0x84, 0x6e, 0x86, 0x00, 0xee, 0xd1, 0x84, + 0x70, 0x46, 0x00, 0x65, 0xd1, 0x94, 0x60, 0x46, + 0x00, 0x64, 0xd1, 0xbc, 0x6e, 0x86, 0x00, 0x65, + 0xd1, 0x80, 0x6e, 0x86, 0xb1, 0xbc, 0x6e, 0x86, + 0xb1, 0xbc, 0x6e, 0x86, 0x00, 0xed, 0xd1, 0xa8, + 0x6e, 0x86, 0xd0, 0x0e, 0xb1, 0xbc, 0x60, 0x06, + 0xb1, 0xbc, 0x60, 0x06, 0x00, 0x65, 0xd1, 0xa4, + 0x60, 0x06, 0x00, 0x28, 0xd1, 0xa4, 0x6e, 0x86, + 0x00, 0x27, 0xd1, 0x98, 0x6e, 0x86, 0x00, 0x64, + 0xd1, 0xa4, 0x6e, 0x86, 0xd2, 0x01, 0x00, 0x64, + 0xd0, 0x60, 0x62, 0x01, 0x00, 0x64, 0xd1, 0x80, + 0x70, 0x46, 0x6e, 0x86, 0x00, 0xef, 0xd1, 0x98, + 0x70, 0x86, 0x08, 0x20, 0xd0, 0xcf, 0x30, 0xc1, + 0xea, 0x42, 0xd0, 0x81, 0x00, 0x21, 0xd1, 0xa8, + 0x60, 0x86, 0x00, 0xed, 0xd1, 0xa0, 0x6e, 0xc6, + 0x00, 0x65, 0xd1, 0x98, 0x6e, 0xc6, 0x00, 0x22, + 0xd0, 0x00, 0xa0, 0x05, 0x80, 0x40, 0x00, 0xc6, + 0x01, 0x73, 0xd4, 0x3d, 0xe0, 0x46, 0x50, 0x00, + 0x08, 0x20, 0xd0, 0x00, 0x5f, 0x00, 0x00, 0x64, + 0xd0, 0x60, 0x70, 0xc1, 0x00, 0xec, 0xd0, 0x40, + 0x71, 0x81, 0xb0, 0x7c, 0x71, 0xc1, 0xc0, 0x87, + 0x30, 0x86, 0xf9, 0x83, 0x10, 0xee, 0xe9, 0x76, + 0x10, 0xe1, 0xe9, 0x76, 0xe2, 0x57, 0x00, 0x63, + 0xd0, 0xbf, 0x72, 0x06, 0xb1, 0xbc, 0x41, 0x82, + 0x02, 0x1b, 0xe9, 0x8d, 0x72, 0x86, 0xb1, 0xbc, + 0x41, 0x82, 0xd0, 0x75, 0x30, 0x48, 0xe9, 0xfe, + 0xb0, 0x7f, 0xea, 0x00, 0x02, 0x1c, 0xe9, 0x96, + 0x15, 0xa3, 0xea, 0x57, 0x10, 0xf0, 0xe9, 0x9a, + 0x10, 0xfa, 0xf9, 0xa1, 0x15, 0xa3, 0xea, 0x57, + 0x00, 0x21, 0xd0, 0x4c, 0x70, 0x41, 0x10, 0x61, + 0xfa, 0x57, 0x00, 0xed, 0xd0, 0x08, 0x70, 0x40, + 0xd0, 0x85, 0x40, 0x42, 0x60, 0x40, 0x00, 0x64, + 0xd0, 0x64, 0x62, 0x01, 0x12, 0x2b, 0xe9, 0xeb, + 0x12, 0x3b, 0xe9, 0xd5, 0x00, 0xec, 0xd0, 0x40, + 0x61, 0x81, 0x12, 0x2d, 0xe9, 0xbf, 0x12, 0x30, + 0xe9, 0xd4, 0x12, 0x36, 0xe9, 0xd4, 0x12, 0x3a, + 0xe9, 0xd4, 0xd0, 0x62, 0x30, 0x48, 0xe9, 0xf2, + 0x12, 0x2e, 0xe9, 0xf9, 0xe1, 0x76, 0x00, 0xed, + 0xd0, 0x08, 0x70, 0x40, 0xd0, 0x85, 0x40, 0x42, + 0x60, 0x40, 0xb0, 0x08, 0x00, 0x21, 0xd0, 0x41, + 0x60, 0x40, 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, + 0xf2, 0x5a, 0x00, 0xed, 0xd0, 0x20, 0xd0, 0x41, + 0x60, 0x40, 0x10, 0xe1, 0xea, 0x3a, 0xe2, 0x57, + 0xe2, 0x53, 0x10, 0xee, 0xf9, 0xe9, 0x01, 0x46, + 0x82, 0x34, 0x80, 0x3f, 0x97, 0x2e, 0xc7, 0x5c, + 0xa7, 0x66, 0x81, 0x34, 0x80, 0x3f, 0x00, 0x21, + 0xd0, 0x01, 0xa0, 0x38, 0x00, 0xc6, 0x00, 0x21, + 0xd0, 0x15, 0x0b, 0x09, 0x00, 0x4d, 0xb0, 0x01, + 0xed, 0xe5, 0xd2, 0x1a, 0xe1, 0xec, 0xf1, 0x18, + 0x00, 0xec, 0xd0, 0x40, 0x71, 0x81, 0xd0, 0x4e, + 0x60, 0x46, 0xe2, 0x54, 0xc0, 0x0a, 0x10, 0x06, + 0x52, 0x80, 0x00, 0xed, 0xd0, 0x40, 0x62, 0x81, + 0xe2, 0x53, 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, + 0xf2, 0x5a, 0xe1, 0x70, 0x12, 0xa3, 0xf6, 0x57, + 0x15, 0xa1, 0xfa, 0x57, 0x12, 0xa0, 0xea, 0x23, + 0x00, 0x65, 0xd1, 0x1c, 0xd0, 0x75, 0x30, 0x48, + 0xea, 0x0a, 0xb1, 0x3c, 0x71, 0x04, 0x11, 0x20, + 0xfa, 0x11, 0x00, 0xec, 0xd0, 0x40, 0x61, 0x81, + 0xe2, 0x57, 0x12, 0xa1, 0xea, 0x33, 0x00, 0xe2, + 0xd0, 0x60, 0x70, 0x01, 0xb0, 0x7c, 0x70, 0x41, + 0x10, 0x0c, 0x50, 0x40, 0x0c, 0x30, 0xd0, 0x00, + 0x31, 0x01, 0xee, 0x21, 0x21, 0x00, 0xe6, 0x57, + 0xe2, 0x23, 0x31, 0x00, 0xfe, 0x57, 0xd0, 0x75, + 0x30, 0x48, 0xea, 0x28, 0xf2, 0x5a, 0xe2, 0x0d, + 0x00, 0xec, 0xd0, 0x40, 0x71, 0x81, 0x00, 0x63, + 0xd1, 0x3f, 0xb1, 0xbc, 0x41, 0x84, 0x61, 0x81, + 0xd0, 0x50, 0x60, 0x46, 0xe2, 0x57, 0x00, 0xed, + 0xd0, 0x7c, 0x70, 0x41, 0x08, 0x20, 0xd0, 0x00, + 0x10, 0x08, 0xe2, 0x1c, 0xd2, 0x84, 0x00, 0xed, + 0xd1, 0xa4, 0x62, 0x86, 0xd5, 0x00, 0xb5, 0x01, + 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0xc7, 0x5e, + 0x97, 0x2e, 0x81, 0x34, 0x80, 0x3f, 0x02, 0xe8, + 0xd0, 0x30, 0xa0, 0x37, 0xa0, 0x38, 0x08, 0x20, + 0xdf, 0x00, 0x80, 0x73, 0x80, 0x3f, 0x00, 0xc6, + 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0xf2, 0x5a, + 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, 0x02, 0x3c, + 0xdc, 0x89, 0xe0, 0x46, 0x00, 0x28, 0xd0, 0x64, + 0x70, 0x81, 0x00, 0x22, 0xd0, 0x00, 0x50, 0x80, + 0x60, 0x81, 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, + 0x00, 0xed, 0xd1, 0xa4, 0x72, 0x86, 0x00, 0xef, + 0xd1, 0x90, 0x70, 0x46, 0x10, 0x5c, 0x10, 0x65, + 0xed, 0x7d, 0xd0, 0x46, 0xc0, 0x0a, 0x10, 0x40, + 0x60, 0x46, 0x00, 0x22, 0xd0, 0x73, 0x30, 0x54, + 0xe9, 0x8e, 0x12, 0xa4, 0xe9, 0xb5, 0x15, 0x20, + 0xe9, 0xc0, 0xb0, 0x7b, 0xe9, 0xc3, 0xb0, 0x41, + 0xe9, 0xc9, 0xc0, 0x54, 0x10, 0x5c, 0x10, 0x6e, + 0xe9, 0xc6, 0xe1, 0xb5, 0x00, 0x28, 0xd1, 0xb0, + 0xd0, 0x00, 0x60, 0x06, 0x12, 0xa4, 0xf9, 0xb2, + 0x00, 0xed, 0xd1, 0x9c, 0x62, 0x86, 0xd2, 0x80, + 0x00, 0xed, 0xd1, 0xa4, 0x62, 0x86, 0xd0, 0x02, + 0x00, 0xec, 0xd1, 0xbc, 0x60, 0x06, 0x00, 0x64, + 0xd1, 0xa0, 0x72, 0x06, 0x12, 0x21, 0xf9, 0xa6, + 0xd2, 0x0d, 0x62, 0x06, 0x00, 0xed, 0xd1, 0xa0, + 0x61, 0x86, 0xd0, 0x0e, 0x00, 0xed, 0xd1, 0xac, + 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, 0x00, 0x65, + 0xd1, 0xa4, 0x60, 0x06, 0x01, 0x7e, 0xd2, 0x32, + 0xe1, 0xcb, 0x01, 0x46, 0x90, 0x49, 0x00, 0x60, + 0xd0, 0x00, 0x50, 0x40, 0xa0, 0x49, 0x80, 0x3f, + 0x00, 0xc6, 0x0c, 0x09, 0x05, 0x0d, 0xe1, 0x70, + 0x01, 0xbf, 0xd0, 0x41, 0xe1, 0xcb, 0x01, 0xbb, + 0xda, 0x10, 0xe1, 0xcb, 0x01, 0xbd, 0xda, 0x0b, + 0xe1, 0xcb, 0x03, 0xb9, 0xd8, 0x10, 0x01, 0x46, + 0x90, 0x49, 0x00, 0x60, 0xd1, 0x00, 0x50, 0x44, + 0x30, 0x44, 0xa0, 0x49, 0x80, 0x3f, 0x00, 0xc6, + 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x01, 0xfa, 0xd4, 0x3d, 0x00, 0x25, 0xdc, 0xd8, + 0xf0, 0x4a, 0x00, 0x26, 0xd0, 0x18, 0xd0, 0x40, + 0x60, 0x40, 0x00, 0x28, 0xd0, 0x24, 0x70, 0x40, + 0xd0, 0x82, 0x50, 0x42, 0x60, 0x40, 0x00, 0xec, + 0xd0, 0xa4, 0x70, 0xc2, 0x10, 0xe0, 0xf9, 0x81, + 0x00, 0xec, 0xd1, 0x98, 0xd0, 0x41, 0x60, 0x46, + 0x70, 0xc2, 0x10, 0xe0, 0xe9, 0x8e, 0xd0, 0x40, + 0x60, 0x46, 0xe1, 0x81, 0xd0, 0x40, 0x00, 0xe6, + 0xd0, 0x10, 0x60, 0x40, 0xb0, 0x3c, 0x60, 0x40, + 0xb0, 0x3c, 0x60, 0x40, 0xd0, 0xe0, 0x00, 0xea, + 0xd0, 0x40, 0x00, 0xe8, 0xd0, 0x82, 0x01, 0x46, + 0x70, 0x01, 0xb0, 0x7c, 0x60, 0x02, 0xb0, 0xbc, + 0x00, 0x06, 0x00, 0xc6, 0xb0, 0xc1, 0xed, 0x9b, + 0x80, 0x49, 0xd6, 0x44, 0xd5, 0x43, 0x00, 0xe0, + 0xd1, 0x80, 0x00, 0x06, 0x0b, 0x09, 0x01, 0x0d, + 0x0b, 0x09, 0x61, 0x06, 0xb1, 0xbc, 0x01, 0x4d, + 0x09, 0x09, 0x61, 0x46, 0xb1, 0xbc, 0x00, 0xcd, + 0x09, 0x09, 0x10, 0xe4, 0xed, 0xb8, 0x60, 0xc6, + 0xb1, 0xbc, 0x00, 0xcd, 0x60, 0xc6, 0x00, 0xed, + 0xd0, 0x04, 0x70, 0x00, 0x10, 0x20, 0xf9, 0xd8, + 0xd0, 0x0a, 0x40, 0x03, 0xe9, 0xc9, 0x10, 0xe2, + 0xe9, 0xc9, 0x10, 0xe7, 0xe9, 0xc9, 0x10, 0xe8, + 0xf9, 0xd8, 0x01, 0x46, 0x90, 0x10, 0x00, 0x20, + 0xd0, 0x44, 0x50, 0x40, 0x00, 0xc6, 0xa0, 0x50, + 0x00, 0xa0, 0xd0, 0x00, 0xa0, 0x05, 0x80, 0x40, + 0x00, 0xed, 0xd1, 0xa4, 0xd0, 0x04, 0x60, 0x06, + 0x00, 0xee, 0xd1, 0xac, 0x73, 0x86, 0x10, 0xe3, + 0xe5, 0xe3, 0xe9, 0xe8, 0x00, 0xe7, 0xd0, 0x40, + 0x00, 0xae, 0xd0, 0xbb, 0xe1, 0xec, 0x01, 0x24, + 0xd0, 0x6b, 0x00, 0xea, 0xd0, 0xa6, 0xe1, 0xec, + 0x01, 0x21, 0xd0, 0x7b, 0x00, 0xe8, 0xd0, 0x90, + 0x13, 0xa0, 0xf9, 0xef, 0xc0, 0x42, 0x00, 0xe0, + 0xd1, 0xa8, 0x60, 0x46, 0xb1, 0x98, 0x0b, 0xc9, + 0x00, 0x4d, 0x09, 0x09, 0x10, 0x44, 0x00, 0x8d, + 0x20, 0x42, 0x10, 0x5f, 0x60, 0x46, 0xb1, 0xb8, + 0x00, 0x90, 0xea, 0x1c, 0x0a, 0x89, 0x00, 0x8d, + 0x60, 0x86, 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, + 0x60, 0x46, 0x10, 0x60, 0xea, 0x10, 0x00, 0xe8, + 0xd1, 0x80, 0xf2, 0xb0, 0x10, 0x60, 0xfa, 0x1c, + 0x08, 0x49, 0x00, 0xe0, 0xd1, 0xa4, 0x00, 0x4d, + 0x60, 0x46, 0x10, 0x60, 0xea, 0x20, 0x00, 0xe9, + 0xd1, 0x80, 0xf2, 0xb0, 0x10, 0x60, 0xea, 0x20, + 0x00, 0xe0, 0xd1, 0x88, 0xd0, 0x40, 0x60, 0x46, + 0xd0, 0x00, 0x00, 0xe0, 0xd1, 0xa8, 0x70, 0x46, + 0x00, 0xef, 0xd1, 0x9c, 0x70, 0x86, 0xb0, 0xb0, + 0xee, 0x2a, 0xd0, 0x81, 0x00, 0x90, 0xea, 0x2d, + 0x20, 0x01, 0x10, 0x41, 0x10, 0x9f, 0x10, 0xa0, + 0xee, 0x2a, 0x10, 0x1c, 0x00, 0x65, 0xd1, 0xa8, + 0x60, 0x06, 0x01, 0xb4, 0xd6, 0x3a, 0xe0, 0x46, + 0x02, 0x31, 0xde, 0x13, 0x00, 0x27, 0xdc, 0xd8, + 0xf0, 0x4a, 0x0c, 0x09, 0x00, 0x06, 0x05, 0x0d, + 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, 0xe9, 0xea, + 0xb0, 0x7d, 0xfa, 0x05, 0x09, 0x09, 0x01, 0xcd, + 0x11, 0xe1, 0xf9, 0xc7, 0x80, 0x09, 0x80, 0x27, + 0x0a, 0x09, 0xd6, 0x45, 0x00, 0xe1, 0xd1, 0xa0, + 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, + 0x00, 0x4d, 0x60, 0x46, 0x00, 0x50, 0xe9, 0x91, + 0xd4, 0x01, 0xb1, 0xbc, 0x08, 0x89, 0x00, 0x4d, + 0x60, 0x46, 0x00, 0xe0, 0xd1, 0x80, 0x08, 0x89, + 0x00, 0x4d, 0x08, 0x89, 0x10, 0x4c, 0x71, 0x06, + 0x21, 0x01, 0x61, 0x06, 0xb1, 0xbc, 0x00, 0x4d, + 0x0b, 0x49, 0x10, 0x4c, 0x71, 0x46, 0x21, 0x41, + 0x61, 0x46, 0xb1, 0xb0, 0x00, 0x4d, 0x10, 0x5f, + 0x60, 0x46, 0xb1, 0xbc, 0x0a, 0x09, 0x00, 0x4d, + 0x10, 0x4a, 0x70, 0x86, 0x20, 0x81, 0x60, 0x86, + 0x00, 0xe1, 0xd1, 0xac, 0x08, 0x49, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x89, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x09, 0x49, 0x00, 0x8d, + 0x60, 0x86, 0xc0, 0x02, 0x00, 0xe0, 0xd1, 0xa8, + 0x70, 0xc6, 0x10, 0xc0, 0xd0, 0x20, 0x30, 0x01, + 0x10, 0xc0, 0x60, 0xc6, 0xe1, 0x75, 0x11, 0xe2, + 0xf9, 0x75, 0x00, 0xe2, 0xd1, 0x80, 0x08, 0xc9, + 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, + 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, 0x10, 0x60, + 0xf9, 0xd7, 0xb1, 0xb4, 0xe1, 0xde, 0xd2, 0x03, + 0x0a, 0x09, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0xb2, 0x01, 0xf9, 0xd8, 0x0b, 0xc9, 0x00, 0x4d, + 0x10, 0x49, 0x10, 0x56, 0x60, 0x46, 0xb1, 0xbc, + 0x0b, 0x89, 0x00, 0x4d, 0x10, 0x4a, 0x10, 0x56, + 0x60, 0x46, 0xe1, 0x75, 0x0b, 0x2c, 0xd4, 0x40, + 0xf3, 0xb0, 0xe1, 0x77, 0x00, 0xe0, 0xd0, 0x6c, + 0x00, 0xe0, 0xd1, 0x80, 0xd0, 0x0a, 0xf1, 0xfe, + 0x00, 0xe1, 0xd1, 0xb0, 0xd0, 0x02, 0xf1, 0xfe, + 0x00, 0xe0, 0xd1, 0x80, 0x76, 0x86, 0xb1, 0xbc, + 0x73, 0x46, 0xe2, 0x3c, 0x70, 0x81, 0x60, 0x86, + 0xb1, 0xbc, 0xb0, 0x7c, 0xb0, 0x01, 0xed, 0xfe, + 0x0f, 0xc5, 0x00, 0xe1, 0xd1, 0xa0, 0x70, 0x46, + 0xd0, 0x8f, 0x40, 0x42, 0x00, 0x25, 0xd0, 0xe0, + 0x00, 0x24, 0xd1, 0x20, 0x10, 0x6a, 0xea, 0x1e, + 0x00, 0x66, 0xd0, 0xe0, 0x00, 0x62, 0xd1, 0x00, + 0x10, 0x66, 0xea, 0x1e, 0x00, 0x6e, 0xd0, 0xc0, + 0x10, 0x64, 0xea, 0x1e, 0x00, 0x2b, 0xd0, 0xd0, + 0x00, 0x29, 0xd1, 0x00, 0x00, 0xe0, 0xd1, 0x80, + 0x76, 0x86, 0x16, 0xa0, 0xe9, 0xee, 0x30, 0xda, + 0xe5, 0xee, 0xb1, 0xbc, 0x73, 0x46, 0x13, 0x60, + 0xe9, 0xee, 0x31, 0x0d, 0xe5, 0xee, 0xd0, 0x82, + 0xb1, 0xbc, 0x70, 0x46, 0x10, 0x60, 0xe9, 0xee, + 0xb0, 0x81, 0xee, 0x2c, 0x00, 0xe0, 0xd0, 0x40, + 0x00, 0xe0, 0xd1, 0xac, 0xd0, 0x0a, 0xf1, 0xfe, + 0x00, 0xe1, 0xd0, 0x70, 0xd0, 0x02, 0xf1, 0xfe, + 0x00, 0xec, 0xd1, 0x98, 0xd0, 0x40, 0x60, 0x46, + 0x00, 0xe0, 0xd0, 0x8c, 0x70, 0x82, 0x00, 0x21, + 0xd0, 0x70, 0x60, 0x81, 0xd0, 0x40, 0x00, 0x25, + 0xd0, 0x20, 0x30, 0x1a, 0xfa, 0x50, 0x00, 0x24, + 0xd0, 0x20, 0x30, 0x0d, 0xfa, 0x50, 0xd0, 0x41, + 0x00, 0x21, 0xd1, 0x84, 0x60, 0x46, 0xb6, 0xb1, + 0x16, 0x9c, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, + 0x02, 0x31, 0xde, 0x13, 0x00, 0x27, 0xdc, 0xd8, + 0xf0, 0x4a, 0x00, 0xec, 0xd0, 0xa8, 0x70, 0xc2, + 0x10, 0xe0, 0xf9, 0x77, 0x00, 0xec, 0xd1, 0x9c, + 0xd0, 0x41, 0x60, 0x46, 0x70, 0xc2, 0x10, 0xe0, + 0xe9, 0x84, 0xd0, 0x40, 0x60, 0x46, 0xe1, 0x77, + 0x0b, 0x49, 0x00, 0xe2, 0xd1, 0xa0, 0x00, 0x4d, + 0x10, 0x5f, 0x00, 0x6f, 0xd0, 0xff, 0x40, 0x43, + 0x60, 0x46, 0xb1, 0xbc, 0x0b, 0x09, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x89, 0x00, 0x4d, + 0x60, 0x46, 0x10, 0x61, 0xf9, 0x9b, 0xd3, 0xc2, + 0x00, 0xec, 0xd1, 0xbc, 0x63, 0xc6, 0x0c, 0x09, + 0x90, 0x4d, 0x10, 0x60, 0xe5, 0x9c, 0x00, 0x06, + 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, + 0xf9, 0xa9, 0x0b, 0xa0, 0xd4, 0x40, 0xf3, 0xb0, + 0xe1, 0xa0, 0x00, 0xec, 0xd1, 0x9c, 0xd0, 0x40, + 0x60, 0x46, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, + 0x0b, 0x09, 0x00, 0x4d, 0x0b, 0x09, 0x00, 0x4d, + 0x0a, 0x09, 0x01, 0x4d, 0x0a, 0x09, 0x00, 0x4d, + 0x01, 0x59, 0xe9, 0x96, 0x09, 0x09, 0x00, 0x4d, + 0x10, 0x5f, 0x10, 0x61, 0xf9, 0x96, 0x09, 0x09, + 0x01, 0x4d, 0x11, 0x5f, 0x0b, 0xc9, 0x00, 0x4d, + 0xc0, 0x01, 0x10, 0x5f, 0x11, 0x4e, 0x51, 0x41, + 0x08, 0x49, 0x00, 0x4d, 0x0b, 0xc9, 0x10, 0x0f, + 0x00, 0x4d, 0x50, 0x01, 0x00, 0xed, 0xd1, 0xb6, + 0x01, 0x46, 0x00, 0x06, 0xa0, 0x3c, 0xa1, 0x7d, + 0x60, 0x06, 0x00, 0xc6, 0xd5, 0x00, 0xb5, 0x01, + 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, + 0x00, 0xec, 0xd0, 0xac, 0x70, 0xc2, 0x10, 0xe0, + 0xf9, 0x70, 0x00, 0xec, 0xd1, 0xa0, 0xd0, 0x41, + 0x60, 0x46, 0x70, 0xc2, 0x10, 0xe0, 0xe9, 0x7f, + 0xd0, 0x40, 0x60, 0x46, 0xe1, 0x70, 0x0a, 0x89, + 0x0b, 0xcd, 0x00, 0xe3, 0xd1, 0x80, 0x6b, 0xc6, + 0x08, 0xc9, 0x05, 0x8d, 0x15, 0xa3, 0xee, 0x6e, + 0x15, 0xa0, 0xea, 0x6e, 0x90, 0x4d, 0xd0, 0x9f, + 0xd0, 0xdf, 0x40, 0x81, 0x10, 0x55, 0x40, 0xc1, + 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0xc8, 0x1d, + 0x81, 0x34, 0x80, 0x3f, 0x00, 0xc6, 0xd1, 0x23, + 0x31, 0x03, 0x11, 0x02, 0x38, 0x04, 0xb0, 0x8d, + 0x10, 0x9d, 0x28, 0x02, 0xc0, 0x60, 0x00, 0x65, + 0xd1, 0x94, 0x71, 0x06, 0x68, 0x06, 0x30, 0x44, + 0x00, 0xed, 0xd1, 0xa8, 0x70, 0x06, 0x10, 0x20, + 0xe9, 0xb0, 0x00, 0xee, 0xd0, 0xc0, 0x70, 0xc3, + 0x20, 0x43, 0xb0, 0x01, 0xf9, 0xac, 0x60, 0x06, + 0x00, 0x64, 0xd1, 0xbc, 0x71, 0x06, 0xc0, 0x04, + 0x21, 0x01, 0x61, 0x06, 0x10, 0x20, 0xf5, 0xbb, + 0x11, 0x20, 0xe5, 0xbb, 0xb0, 0x41, 0x00, 0x65, + 0xd1, 0x80, 0x71, 0x06, 0x21, 0x01, 0x61, 0x06, + 0x00, 0xed, 0xd1, 0xac, 0x71, 0x06, 0x15, 0xa1, + 0xe9, 0xcb, 0xb1, 0x3f, 0x61, 0x06, 0x15, 0xa3, + 0xf9, 0xd6, 0xd0, 0xbf, 0xe1, 0xd3, 0xd0, 0x40, + 0x60, 0x46, 0xb1, 0xbc, 0x70, 0x86, 0x61, 0x06, + 0x31, 0x02, 0xe5, 0xd3, 0x20, 0x84, 0x00, 0x65, + 0xd1, 0xa4, 0x60, 0x86, 0xd9, 0x40, 0x00, 0xec, + 0xd1, 0x94, 0x79, 0x06, 0xb1, 0x84, 0x78, 0xc6, + 0xc0, 0x63, 0x30, 0x64, 0xe9, 0xf8, 0x00, 0xa7, + 0xd0, 0xff, 0x7a, 0x63, 0x00, 0x65, 0xd0, 0x00, + 0x71, 0x00, 0x31, 0x29, 0xe5, 0xf8, 0xc0, 0x63, + 0xc8, 0xc1, 0xb0, 0x78, 0x40, 0x43, 0xc0, 0xa4, + 0x30, 0x81, 0xe9, 0xf2, 0x7a, 0x41, 0x31, 0x29, + 0xf5, 0xe8, 0x21, 0x29, 0x61, 0x00, 0xb8, 0xfc, + 0x79, 0x63, 0xb8, 0xfc, 0x48, 0xc3, 0x68, 0xc6, + 0x00, 0xed, 0xd1, 0xb8, 0x69, 0x46, 0x80, 0x28, + 0x0b, 0xc9, 0x00, 0x4d, 0x08, 0x49, 0x10, 0x41, + 0x00, 0xe3, 0xd1, 0x84, 0x00, 0x8d, 0x20, 0x42, + 0x60, 0x46, 0x00, 0xee, 0xd1, 0xa4, 0x70, 0x86, + 0x10, 0xa1, 0xee, 0x18, 0xe6, 0x6b, 0x90, 0x86, + 0x00, 0x90, 0xea, 0x18, 0x00, 0xed, 0xd0, 0x1c, + 0x70, 0x80, 0xb0, 0x81, 0xe6, 0x6b, 0x60, 0x80, + 0xb1, 0xa8, 0x70, 0x86, 0x10, 0xa0, 0xfa, 0x6b, + 0x00, 0x21, 0xd0, 0x38, 0x70, 0x80, 0x10, 0xa0, + 0xfa, 0x6b, 0x0f, 0xef, 0xd0, 0xbf, 0x30, 0x81, + 0xfa, 0x22, 0x60, 0x00, 0x08, 0x20, 0xd0, 0x00, + 0x5f, 0x00, 0x15, 0xa3, 0xea, 0x6b, 0x00, 0xee, + 0xd1, 0x80, 0x79, 0x46, 0x00, 0xf8, 0xd0, 0x00, + 0xc4, 0x40, 0x00, 0xe3, 0xd1, 0x84, 0x78, 0x46, + 0x0f, 0xef, 0xd0, 0x3f, 0x30, 0x21, 0xea, 0x48, + 0x00, 0xe0, 0xd1, 0x90, 0x78, 0x06, 0xc0, 0xa1, + 0x18, 0x43, 0x28, 0x42, 0x18, 0x43, 0x28, 0x42, + 0x18, 0x1e, 0xd8, 0x80, 0x08, 0x11, 0xea, 0x41, + 0x28, 0xa1, 0x18, 0x01, 0x18, 0x5f, 0x18, 0x60, + 0xee, 0x3e, 0xc0, 0x51, 0x30, 0x62, 0xee, 0x4e, + 0xc8, 0x91, 0x18, 0x9f, 0x00, 0x21, 0xd1, 0xb8, + 0xd0, 0x01, 0x60, 0x06, 0x00, 0xef, 0xd0, 0x10, + 0xd0, 0x72, 0x60, 0x40, 0x01, 0x46, 0x82, 0x34, + 0x80, 0x3f, 0xc8, 0xdc, 0xc9, 0x1d, 0x81, 0x34, + 0x80, 0x3f, 0x00, 0xc6, 0x38, 0xe4, 0xee, 0x5e, + 0xea, 0x52, 0x28, 0xe5, 0x01, 0x46, 0x90, 0x6d, + 0x28, 0xc1, 0x00, 0xc6, 0x38, 0xe2, 0xf6, 0x6b, + 0xdb, 0x08, 0xf1, 0x16, 0xf1, 0x18, 0x00, 0x21, + 0xd1, 0xb4, 0x61, 0x86, 0xe2, 0x52, 0x01, 0xf7, + 0xd2, 0x19, 0xe0, 0x46, 0xd5, 0x00, 0xb5, 0x01, + 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, + 0x02, 0x31, 0xde, 0x13, 0x00, 0x27, 0xdc, 0xd8, + 0xf0, 0x4a, 0xdb, 0x09, 0x00, 0xe3, 0xd0, 0x1c, + 0x6b, 0x00, 0xda, 0xc1, 0x00, 0xe6, 0xd1, 0x98, + 0x70, 0x06, 0xb1, 0x84, 0x60, 0x06, 0xb1, 0x84, + 0x60, 0x06, 0x05, 0x9f, 0xe9, 0x9f, 0x08, 0x49, + 0xd1, 0x17, 0x46, 0x44, 0x00, 0x4d, 0x10, 0x43, + 0x26, 0x41, 0x08, 0xc9, 0x05, 0xcd, 0xb5, 0xc1, + 0xe5, 0xcc, 0xc0, 0x57, 0x15, 0xc6, 0x25, 0xc1, + 0x15, 0xa3, 0xf9, 0x9f, 0x08, 0x49, 0xd1, 0x0f, + 0x46, 0x44, 0x00, 0x4d, 0x10, 0x44, 0x26, 0x41, + 0x08, 0xc9, 0x06, 0x0d, 0xb6, 0x01, 0xe5, 0xcc, + 0xc0, 0x58, 0x16, 0x06, 0x26, 0x01, 0x08, 0x49, + 0x00, 0x4d, 0x10, 0x60, 0xe9, 0xa6, 0x0a, 0x09, + 0x00, 0x4d, 0xe1, 0x9f, 0x0c, 0x09, 0x90, 0x4d, + 0x10, 0x60, 0xe5, 0xa7, 0x00, 0x06, 0x05, 0x0d, + 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, 0xf9, 0xb3, + 0xd4, 0x40, 0xf3, 0xb0, 0xe1, 0xab, 0xb0, 0x7d, + 0xf9, 0xb8, 0x02, 0x34, 0xd4, 0x44, 0xe0, 0x46, + 0x00, 0xec, 0xd1, 0xa0, 0xd0, 0x40, 0x60, 0x46, + 0x02, 0x3c, 0xdc, 0x89, 0x00, 0xec, 0xd1, 0x80, + 0x70, 0x46, 0xb1, 0xbc, 0x70, 0x86, 0x30, 0x81, + 0xe8, 0x46, 0x15, 0x63, 0xe9, 0xc9, 0x05, 0x5e, + 0xe8, 0x46, 0x01, 0x73, 0xd4, 0x3d, 0xe0, 0x46, + 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, + 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0xcc, 0xc0, 0xcd, 0x01, 0xcd, 0x42, 0xcd, 0x83, + 0x00, 0xa0, 0xd0, 0x01, 0xa0, 0x38, 0xc8, 0x7f, + 0xc8, 0x06, 0xb1, 0xbe, 0xf3, 0x96, 0xc8, 0x80, + 0xf3, 0x92, 0x58, 0x80, 0xf3, 0x96, 0xc8, 0xc0, + 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x58, 0xc0, + 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, 0x59, 0x40, + 0xc0, 0x22, 0xc0, 0x65, 0xc0, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, 0x59, 0x00, + 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x96, 0xc9, 0x80, + 0xf3, 0x92, 0x59, 0x40, 0xf3, 0x96, 0xc9, 0xc0, + 0xf3, 0x92, 0x58, 0x80, 0xc0, 0x23, 0xc0, 0x62, + 0xd0, 0x88, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, + 0xc8, 0xc0, 0xf3, 0x92, 0x58, 0xc0, 0xf3, 0x96, + 0xc8, 0x80, 0xf3, 0x92, 0x59, 0xc0, 0xc0, 0x24, + 0xc0, 0x67, 0xd0, 0x90, 0x20, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x59, 0x80, + 0xf3, 0x96, 0xc9, 0xc0, 0xf3, 0x96, 0xca, 0x00, + 0xf3, 0x92, 0x59, 0xc0, 0xf3, 0x96, 0xca, 0x40, + 0xf3, 0x92, 0x59, 0x00, 0xc0, 0x25, 0xc0, 0x64, + 0xd0, 0x98, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, + 0xc9, 0x40, 0xf3, 0x92, 0x58, 0x80, 0xf3, 0x96, + 0xc9, 0x00, 0xf3, 0x92, 0x59, 0x00, 0xc0, 0x23, + 0xc0, 0x64, 0xd0, 0x84, 0x20, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x92, 0x59, 0x40, + 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x5a, 0x40, + 0xc0, 0x26, 0xc0, 0x69, 0xd0, 0xa0, 0x20, 0x86, + 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, + 0x5a, 0x00, 0xf3, 0x96, 0xca, 0x40, 0xf3, 0x92, + 0x5a, 0x40, 0xf3, 0x96, 0xca, 0x80, 0xf3, 0x92, + 0x59, 0x80, 0xc0, 0x27, 0xc0, 0x66, 0xd0, 0xa8, + 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0xc0, + 0xf3, 0x92, 0x59, 0x00, 0xf3, 0x96, 0xc9, 0x80, + 0xf3, 0x92, 0x58, 0xc0, 0xc0, 0x22, 0xc0, 0x63, + 0xd0, 0x8c, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x92, + 0x59, 0x80, 0xc0, 0x25, 0xc0, 0x66, 0xd0, 0x94, + 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0x80, + 0xf3, 0x92, 0x59, 0xc0, 0xf3, 0x96, 0xc8, 0xc0, + 0xf3, 0x92, 0x5a, 0x80, 0xc0, 0x28, 0xc0, 0x6a, + 0xd0, 0xb0, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, + 0xc9, 0x40, 0xf3, 0x92, 0x59, 0x40, 0xc0, 0x29, + 0xc0, 0x65, 0xd0, 0xb8, 0x20, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, 0x58, 0xc0, + 0xf3, 0x96, 0xca, 0x00, 0xf3, 0x92, 0x58, 0x80, + 0xc0, 0x24, 0xc0, 0x62, 0xd0, 0x9c, 0x20, 0x86, + 0xf3, 0x9a, 0xf3, 0x92, 0x5a, 0x00, 0xc0, 0x27, + 0xc0, 0x68, 0xd0, 0xa4, 0x20, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xca, 0x80, 0xf3, 0x92, 0x59, 0x80, + 0xf3, 0x96, 0xca, 0x40, 0xf3, 0x92, 0x5a, 0x40, + 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, 0x5a, 0x80, + 0xc0, 0x23, 0xc0, 0x6a, 0xd0, 0xac, 0x20, 0x86, + 0xf3, 0x9a, 0xf3, 0x92, 0x59, 0x40, 0xc0, 0x26, + 0xc0, 0x65, 0xd0, 0xb4, 0x20, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, 0x59, 0x00, + 0xc0, 0x29, 0xc0, 0x64, 0xd0, 0xbc, 0x20, 0x86, + 0xf3, 0x9a, 0xc0, 0x33, 0xc0, 0x74, 0xc0, 0xb5, + 0xc0, 0xf6, 0xd0, 0x40, 0x00, 0xa0, 0xd8, 0x00, + 0xa8, 0x38, 0x08, 0x45, 0x0a, 0x09, 0x00, 0x0d, + 0x0f, 0xc5, 0x50, 0x00, 0x0a, 0x09, 0x00, 0x0d, + 0x10, 0x08, 0x0f, 0xc5, 0x01, 0x46, 0x00, 0x06, + 0xa0, 0x7c, 0xa0, 0x3d, 0x60, 0x42, 0x00, 0xc6, + 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x14, 0x48, 0xd0, 0x81, 0x00, 0xef, 0xd1, 0x8c, + 0x71, 0x46, 0x11, 0x60, 0xfb, 0xb1, 0x60, 0x86, + 0x71, 0x46, 0x31, 0x42, 0xfb, 0xb1, 0x00, 0xec, + 0xd1, 0x0c, 0x74, 0x84, 0x00, 0x68, 0xd0, 0x80, + 0x70, 0x02, 0x10, 0x20, 0xfb, 0xc4, 0xc4, 0x82, + 0xc4, 0xd2, 0xb4, 0xfc, 0xda, 0x00, 0xda, 0x4f, + 0x0a, 0x09, 0x0f, 0xef, 0xd0, 0x3f, 0xb4, 0x7f, + 0xca, 0x29, 0x1a, 0x18, 0x4a, 0x00, 0x1a, 0x48, + 0x00, 0x8d, 0x2a, 0x42, 0xd0, 0x03, 0x40, 0x11, + 0xfb, 0xe3, 0xb4, 0x44, 0x00, 0xa0, 0xd0, 0xc0, + 0x30, 0xd3, 0xff, 0xe3, 0xb4, 0xfe, 0x01, 0x46, + 0x00, 0x06, 0xaa, 0x3d, 0xaa, 0x7c, 0x6a, 0x53, + 0x00, 0xc6, 0xb4, 0xfe, 0xb4, 0x7c, 0x1a, 0x61, + 0xfb, 0xc8, 0xb4, 0x43, 0x00, 0xef, 0xd0, 0x3f, + 0x40, 0x11, 0xeb, 0xf7, 0xb0, 0xc4, 0xe7, 0xf7, + 0xeb, 0xee, 0x61, 0x53, 0x64, 0x52, 0x64, 0xc4, + 0x00, 0x28, 0xd1, 0x24, 0x70, 0x04, 0x00, 0x21, + 0xd0, 0x80, 0x50, 0x02, 0x60, 0x04, 0x61, 0x46, + 0x0a, 0x09, 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, + 0x02, 0x31, 0xde, 0x13, 0x00, 0x27, 0xdc, 0xd8, + 0xf0, 0x4a, 0x01, 0xfa, 0xd4, 0x3d, 0x00, 0x25, + 0xdc, 0xd8, 0xf0, 0x4a, 0x09, 0x09, 0x01, 0xcd, + 0x11, 0xe8, 0xf9, 0xe2, 0x00, 0xe3, 0xd1, 0x9c, + 0x09, 0x09, 0x05, 0xcd, 0xb5, 0xc1, 0x09, 0x09, + 0x00, 0x4d, 0xb0, 0x41, 0x10, 0x46, 0x25, 0xc1, + 0x09, 0x09, 0x06, 0x0d, 0xb6, 0x01, 0x09, 0x09, + 0x00, 0x4d, 0x08, 0x89, 0xb0, 0x41, 0x10, 0x46, + 0x26, 0x01, 0x00, 0x8d, 0x08, 0x89, 0x10, 0x82, + 0xd0, 0x04, 0xc0, 0x55, 0x00, 0x40, 0x40, 0x40, + 0x05, 0x4d, 0x08, 0x49, 0x0b, 0x0d, 0xd1, 0x00, + 0x15, 0x63, 0xe9, 0xa2, 0xd1, 0x01, 0x55, 0x41, + 0xdb, 0x01, 0x4b, 0x15, 0xa1, 0x1b, 0x08, 0x89, + 0x00, 0x4d, 0x08, 0x49, 0x10, 0x41, 0xd1, 0x19, + 0x46, 0x44, 0x26, 0x41, 0x00, 0xcd, 0x08, 0x49, + 0x10, 0xc4, 0x00, 0x4d, 0x08, 0x49, 0x10, 0x41, + 0x20, 0x81, 0xa0, 0x89, 0x00, 0x4d, 0x10, 0x43, + 0x20, 0xc1, 0xa0, 0xe8, 0x08, 0x49, 0x00, 0x4d, + 0x1b, 0x03, 0x5b, 0x01, 0xbb, 0x3f, 0x6b, 0x06, + 0x08, 0x49, 0xb1, 0xbc, 0x00, 0x4d, 0x60, 0x46, + 0x08, 0x49, 0xb1, 0xbc, 0x0a, 0xcd, 0x1a, 0xc2, + 0x4a, 0xd9, 0x1a, 0xde, 0x6a, 0xc6, 0x08, 0x49, + 0xb1, 0xbc, 0x00, 0x4d, 0x60, 0x46, 0x10, 0x60, + 0xea, 0x3e, 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x08, 0xc9, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x09, 0xc9, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0x0a, 0x09, 0x00, 0x4d, + 0x60, 0x46, 0xe2, 0x3e, 0x11, 0xe3, 0xfa, 0x00, + 0x00, 0xe7, 0xd0, 0xc0, 0xd0, 0x84, 0xb0, 0x81, + 0xe6, 0x3e, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x43, + 0xb0, 0xfc, 0x10, 0x60, 0xe9, 0xe7, 0x10, 0xa3, + 0xf9, 0xf4, 0x00, 0xe8, 0xd1, 0x80, 0xe1, 0xf8, + 0x10, 0xa2, 0xf9, 0xfa, 0x00, 0xe9, 0xd1, 0x80, + 0xf2, 0xb0, 0xe1, 0xe7, 0xd2, 0x3f, 0x0a, 0x09, + 0x00, 0x4d, 0xb2, 0x01, 0xf5, 0xfb, 0xe1, 0xe7, + 0x11, 0xe7, 0xfa, 0x3e, 0xd4, 0x01, 0x00, 0xe1, + 0xd0, 0x24, 0x70, 0x00, 0x10, 0x21, 0xea, 0x0d, + 0x15, 0x63, 0xfa, 0x0d, 0xd4, 0x03, 0x44, 0x2c, + 0xb4, 0x3f, 0x00, 0xe6, 0xd1, 0x90, 0x0b, 0x09, + 0x00, 0x4d, 0x09, 0x49, 0x10, 0x45, 0x00, 0x8d, + 0x50, 0x81, 0xd0, 0x40, 0x10, 0x87, 0x10, 0x98, + 0x30, 0x42, 0xf2, 0x61, 0x60, 0x46, 0xb1, 0xbc, + 0x0b, 0x09, 0x00, 0x0d, 0x09, 0x49, 0x00, 0x0d, + 0xb4, 0x01, 0xfa, 0x0f, 0x00, 0xe6, 0xd0, 0x18, + 0x30, 0x06, 0xe6, 0x29, 0x60, 0x46, 0xb1, 0xbc, + 0xe2, 0x22, 0x00, 0xe0, 0xd1, 0x88, 0x70, 0x46, + 0x10, 0x63, 0xea, 0x39, 0x10, 0x64, 0xea, 0x39, + 0x00, 0xe6, 0xd1, 0x90, 0xd0, 0x00, 0x60, 0x06, + 0xb1, 0xbc, 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, + 0xe2, 0x3e, 0x00, 0xef, 0xd1, 0x84, 0x70, 0x46, + 0x10, 0x60, 0xfa, 0x30, 0x0c, 0x09, 0x90, 0x4d, + 0x10, 0x60, 0xe6, 0x3f, 0x00, 0x06, 0x05, 0x0d, + 0x00, 0x22, 0xd0, 0x72, 0x30, 0x54, 0xfa, 0x4b, + 0xd4, 0x40, 0xf3, 0xb0, 0xe2, 0x43, 0xb0, 0x7d, + 0xe9, 0x7a, 0x00, 0xec, 0xd1, 0xa0, 0xd0, 0x40, + 0x60, 0x46, 0x02, 0x3c, 0xdc, 0x89, 0x00, 0xec, + 0xd1, 0x80, 0x70, 0x46, 0xb1, 0xbc, 0x70, 0x86, + 0x30, 0x81, 0xe8, 0x46, 0x15, 0x63, 0xea, 0x5e, + 0x05, 0x5e, 0xe8, 0x46, 0x01, 0x73, 0xd4, 0x3d, + 0xe0, 0x46, 0x00, 0xe0, 0xd0, 0x00, 0x70, 0xc0, + 0x10, 0xc1, 0x00, 0xe0, 0xd0, 0x08, 0x70, 0x00, + 0x10, 0x23, 0xea, 0x75, 0xc0, 0x83, 0x10, 0x9d, + 0x30, 0xc2, 0x10, 0x9f, 0x30, 0xc2, 0x00, 0xef, + 0xd0, 0xac, 0x70, 0x82, 0x10, 0xa3, 0xea, 0x75, + 0x10, 0xc1, 0xc0, 0x83, 0x30, 0x81, 0xe6, 0x7e, + 0xc0, 0x83, 0x20, 0x81, 0xf6, 0x7f, 0xd0, 0x40, + 0x30, 0x43, 0x0f, 0xc5, 0xc0, 0x43, 0x0f, 0xc5, + 0x00, 0xed, 0xd1, 0xa4, 0x72, 0x86, 0x15, 0xa3, + 0xee, 0x23, 0x15, 0xa1, 0xe6, 0x23, 0x08, 0x20, + 0xd0, 0x00, 0x5f, 0x00, 0xd8, 0xc4, 0x15, 0x63, + 0xe9, 0x7e, 0x48, 0xd5, 0x18, 0xde, 0x18, 0xe0, + 0xe9, 0xc2, 0x00, 0xed, 0xd1, 0xb4, 0x79, 0xc6, + 0x19, 0xe0, 0xe9, 0x8c, 0x00, 0xed, 0xd0, 0x3a, + 0x79, 0xc6, 0x69, 0xc0, 0xd9, 0xc0, 0x69, 0xc6, + 0x00, 0xed, 0xd0, 0x38, 0x79, 0x40, 0x19, 0x60, + 0xe9, 0x98, 0x00, 0x28, 0xd0, 0x24, 0x70, 0x40, + 0x02, 0x20, 0xd0, 0x80, 0x50, 0x42, 0x60, 0x40, + 0x15, 0xa3, 0xe9, 0x9f, 0x00, 0xec, 0xd1, 0xb8, + 0x79, 0xc6, 0x69, 0x46, 0xc9, 0x67, 0x00, 0xec, + 0xd9, 0xb4, 0x70, 0x66, 0x00, 0xec, 0xd1, 0xbc, + 0x70, 0x06, 0x10, 0x20, 0xed, 0xbe, 0x10, 0x60, + 0xe9, 0xc1, 0x00, 0xe0, 0xda, 0xa8, 0x7a, 0xaa, + 0xc0, 0x2a, 0x10, 0x1f, 0x00, 0x22, 0xd0, 0xa0, + 0x70, 0x82, 0x20, 0x6a, 0x00, 0x9f, 0xe9, 0xb5, + 0x20, 0x40, 0x19, 0x60, 0xf9, 0xb8, 0xc9, 0x41, + 0xb0, 0x48, 0x30, 0x65, 0xf5, 0xbd, 0xb0, 0x70, + 0xed, 0xbe, 0xd9, 0x40, 0x00, 0xed, 0xd1, 0xbc, + 0x69, 0x46, 0x69, 0x66, 0x12, 0xa4, 0xea, 0x21, + 0x00, 0xec, 0xd1, 0xbc, 0x73, 0xc6, 0x15, 0xa3, + 0xe9, 0xdf, 0x33, 0xe3, 0xe5, 0xd3, 0xed, 0xd2, + 0x63, 0xc6, 0x00, 0x21, 0xd1, 0xa8, 0x63, 0xc6, + 0x00, 0xed, 0xd1, 0xa0, 0x63, 0xc6, 0x15, 0xa1, + 0xf9, 0xdc, 0x12, 0xa3, 0xe5, 0xe3, 0xd3, 0xc2, + 0x00, 0xec, 0xd1, 0xbc, 0x63, 0xc6, 0xe1, 0xe3, + 0x12, 0xa3, 0xea, 0x21, 0xe1, 0xe3, 0x12, 0xa2, + 0xf6, 0x21, 0x13, 0xe0, 0xfa, 0x21, 0x00, 0xee, + 0xd1, 0x8c, 0x78, 0x06, 0xb1, 0xbc, 0x78, 0x46, + 0xb1, 0xbc, 0x78, 0x86, 0xd1, 0x88, 0x72, 0x46, + 0xd1, 0x84, 0x73, 0x06, 0x13, 0x20, 0xf9, 0xe3, + 0x00, 0x64, 0xd1, 0xa0, 0x70, 0x46, 0xd0, 0xa2, + 0x30, 0x81, 0xe9, 0xff, 0x10, 0x70, 0xea, 0x11, + 0x10, 0x6d, 0xea, 0x14, 0x10, 0x76, 0xea, 0x19, + 0x10, 0x7a, 0xea, 0x28, 0xe2, 0x3b, 0x18, 0xe0, + 0xea, 0x3b, 0x00, 0xed, 0xd1, 0x80, 0x70, 0x86, + 0xb0, 0x81, 0xd0, 0x3f, 0x40, 0x02, 0x10, 0x20, + 0xea, 0x0c, 0x60, 0x86, 0xf3, 0x8a, 0xe1, 0xe3, + 0xc0, 0x02, 0x10, 0x1a, 0x50, 0x80, 0x60, 0x86, + 0xe2, 0x3b, 0x15, 0xa3, 0xea, 0x21, 0xe2, 0xe9, + 0xd2, 0x80, 0x00, 0xed, 0xd1, 0xa4, 0x62, 0x86, + 0xe3, 0x0c, 0x00, 0xed, 0xd1, 0x88, 0xd0, 0x60, + 0x70, 0x06, 0x50, 0x40, 0x60, 0x46, 0x15, 0xa3, + 0xfb, 0x0c, 0xd5, 0x84, 0xe3, 0x0c, 0xd5, 0x00, + 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, + 0x00, 0xed, 0xd1, 0x88, 0xd0, 0x60, 0x70, 0x06, + 0x50, 0x40, 0x60, 0x46, 0x15, 0xa2, 0xe7, 0x0c, + 0xee, 0x21, 0x00, 0x21, 0xd1, 0x8c, 0x18, 0xe0, + 0xfa, 0x39, 0x70, 0x46, 0x10, 0x61, 0xea, 0x70, + 0xe2, 0x21, 0x65, 0x86, 0xe2, 0x21, 0x18, 0xe0, + 0xea, 0x70, 0xd1, 0x80, 0x73, 0x06, 0x15, 0xa2, + 0xee, 0x68, 0x00, 0x22, 0xd1, 0x80, 0x70, 0x46, + 0x6b, 0x06, 0xcb, 0x01, 0xb1, 0xb4, 0x70, 0x46, + 0x6a, 0xc6, 0xca, 0xc1, 0x00, 0x65, 0xd1, 0x98, + 0x70, 0x46, 0x10, 0x61, 0xfa, 0x50, 0x02, 0x41, + 0xc3, 0x21, 0xc7, 0xe0, 0x02, 0x50, 0xea, 0x56, + 0xc3, 0x20, 0xc7, 0xe1, 0xd1, 0x88, 0xd0, 0x01, + 0x02, 0x40, 0x62, 0x46, 0x0f, 0xef, 0xd0, 0x7f, + 0x30, 0x6f, 0xfa, 0x5f, 0xc3, 0x20, 0xc7, 0x4c, + 0xd0, 0x00, 0x00, 0x65, 0xd1, 0x98, 0x70, 0x46, + 0x60, 0x06, 0xb0, 0x41, 0x43, 0x01, 0xe2, 0x70, + 0xc3, 0x22, 0xc7, 0xcc, 0xc7, 0x60, 0xc7, 0xa1, + 0x02, 0x50, 0xea, 0x70, 0xc7, 0x61, 0xc7, 0xa0, + 0xdb, 0x80, 0xd1, 0x00, 0x00, 0xef, 0xd1, 0xa8, + 0x70, 0x46, 0x10, 0x60, 0xfa, 0x7a, 0x00, 0xe0, + 0xd1, 0x88, 0x70, 0x46, 0x00, 0x22, 0xd1, 0xb0, + 0x70, 0x86, 0x30, 0x81, 0xea, 0x82, 0x60, 0x46, + 0xd0, 0x20, 0xf3, 0x06, 0x10, 0x63, 0xea, 0x87, + 0x10, 0x64, 0xea, 0x87, 0xe2, 0x95, 0x00, 0xef, + 0xd1, 0x6c, 0x71, 0x45, 0xc0, 0x05, 0x30, 0x01, + 0xf6, 0x95, 0xdb, 0x82, 0xd1, 0x01, 0x10, 0x63, + 0xea, 0x95, 0xd1, 0x02, 0x11, 0x62, 0xea, 0x95, + 0xd1, 0x03, 0xd1, 0x8c, 0x61, 0x06, 0xdb, 0x40, + 0x00, 0xe0, 0xd0, 0x00, 0x71, 0x00, 0xc0, 0x84, + 0x10, 0x9c, 0xb0, 0x96, 0xfa, 0xa0, 0xb1, 0x38, + 0xb0, 0x96, 0xfa, 0xa3, 0xb1, 0x30, 0x00, 0x29, + 0xd1, 0x84, 0x00, 0x22, 0xd0, 0x74, 0x70, 0x86, + 0x70, 0xc1, 0x61, 0x06, 0x30, 0xc2, 0xea, 0xae, + 0x60, 0x81, 0xdb, 0x41, 0xb0, 0x3c, 0xb1, 0xbc, + 0xb0, 0x7c, 0x71, 0x00, 0x70, 0x86, 0x70, 0xc1, + 0x61, 0x06, 0x30, 0xc2, 0xea, 0xb9, 0x60, 0x81, + 0xdb, 0x41, 0x00, 0xee, 0xd1, 0xb4, 0x70, 0x06, + 0xb1, 0xbc, 0x70, 0x46, 0x30, 0x40, 0xea, 0xc2, + 0x60, 0x06, 0xdb, 0x41, 0x00, 0x24, 0xd0, 0x60, + 0x30, 0x81, 0xea, 0xc7, 0x30, 0x81, 0x50, 0x02, + 0xea, 0xca, 0xd0, 0x01, 0x00, 0x22, 0xd1, 0xbc, + 0x70, 0x86, 0x30, 0x80, 0xea, 0xd2, 0x60, 0x06, + 0xd0, 0x10, 0xf3, 0x06, 0x00, 0x22, 0xd1, 0xa4, + 0x71, 0x06, 0xd0, 0x01, 0x41, 0x00, 0x5b, 0x44, + 0x5b, 0x6e, 0x6b, 0x46, 0x00, 0x28, 0xd0, 0x70, + 0x70, 0x41, 0x10, 0x62, 0xfa, 0xe6, 0xd1, 0x84, + 0x70, 0x06, 0x10, 0x20, 0xfa, 0xdf, 0x00, 0x22, + 0xd0, 0x00, 0xf3, 0x06, 0x02, 0x7d, 0xde, 0x68, + 0xe0, 0x46, 0x00, 0xed, 0xd1, 0x88, 0x71, 0x06, + 0x01, 0x1f, 0xfa, 0xfd, 0xd0, 0x41, 0x41, 0x01, + 0xd0, 0x62, 0x00, 0x65, 0xd0, 0x30, 0x70, 0x00, + 0x10, 0x21, 0xea, 0xfa, 0xee, 0xf9, 0x1a, 0xe1, + 0xfa, 0xfa, 0xd0, 0x52, 0x51, 0x01, 0x61, 0x06, + 0xe3, 0x0c, 0x18, 0xe0, 0xea, 0x70, 0xc7, 0x60, + 0xc7, 0xe1, 0x02, 0x50, 0xea, 0x70, 0xc7, 0x61, + 0xc7, 0xe0, 0xe2, 0x70, 0x00, 0x28, 0xdc, 0xa4, + 0x7c, 0x72, 0x5c, 0x40, 0x6c, 0x72, 0x0f, 0xc5, + 0x18, 0xe0, 0xeb, 0x82, 0xd9, 0x0d, 0x00, 0xee, + 0xd1, 0xa4, 0x70, 0x06, 0x10, 0x21, 0xfb, 0x7f, + 0xd9, 0x0c, 0x90, 0x06, 0x00, 0x10, 0xeb, 0x7f, + 0x00, 0x21, 0xd1, 0x88, 0x7a, 0x06, 0x1a, 0x20, + 0xeb, 0x7f, 0xd9, 0x00, 0x00, 0xed, 0xd1, 0xbc, + 0x79, 0x46, 0x19, 0x60, 0xeb, 0x7f, 0x39, 0x68, + 0xc0, 0xe5, 0xc0, 0x25, 0x10, 0x13, 0xb0, 0x0f, + 0xef, 0x7f, 0xb0, 0x22, 0xe7, 0x7f, 0x00, 0xe0, + 0xd1, 0xa8, 0x71, 0x46, 0x11, 0x5f, 0x29, 0x45, + 0x00, 0x22, 0xd0, 0x18, 0x00, 0x22, 0xd4, 0x54, + 0x00, 0x22, 0xd0, 0x9c, 0x70, 0x00, 0x74, 0x51, + 0x70, 0x42, 0x34, 0x40, 0xe7, 0x3c, 0xd0, 0x40, + 0x00, 0x22, 0xd4, 0x50, 0x74, 0x51, 0x34, 0x40, + 0xef, 0x42, 0x20, 0x45, 0x60, 0x42, 0x39, 0x41, + 0x19, 0x60, 0xf7, 0x5e, 0x00, 0x65, 0xd1, 0xa8, + 0x7a, 0x86, 0x29, 0x6a, 0x19, 0x59, 0xb9, 0x7e, + 0xf7, 0x75, 0x15, 0xa3, 0xf7, 0x57, 0x00, 0xed, + 0xd1, 0xac, 0x70, 0x06, 0x00, 0xed, 0xd1, 0xb0, + 0x70, 0x46, 0x30, 0x01, 0xfb, 0x7f, 0x00, 0x65, + 0xd1, 0x84, 0x70, 0x46, 0xb0, 0x7f, 0x60, 0x46, + 0xd5, 0x84, 0xe3, 0x7f, 0x11, 0x41, 0xd0, 0x4a, + 0x00, 0xed, 0xd1, 0xa0, 0x74, 0x46, 0xd0, 0x00, + 0x60, 0x06, 0x30, 0xc5, 0x39, 0x45, 0xe7, 0x6e, + 0x14, 0x60, 0xeb, 0x6b, 0xf3, 0x85, 0xb0, 0x41, + 0xef, 0x65, 0xe3, 0x71, 0x00, 0x66, 0xd1, 0xa0, + 0x60, 0xc6, 0x15, 0xa3, 0xeb, 0x7f, 0xf3, 0x85, + 0xe3, 0x7f, 0xd9, 0x01, 0x00, 0x66, 0xd1, 0xa0, + 0x70, 0x06, 0x30, 0x03, 0xe7, 0x7e, 0x10, 0x1d, + 0x10, 0x3b, 0xe7, 0x7f, 0x60, 0xc6, 0x00, 0x66, + 0xd1, 0xa4, 0x69, 0x06, 0x15, 0xa4, 0xea, 0x23, + 0xe2, 0x3b, 0x00, 0x65, 0xdd, 0x08, 0x7c, 0xf4, + 0xbc, 0xff, 0x6c, 0xf4, 0x00, 0xef, 0xdd, 0x10, + 0x7c, 0xf4, 0xbc, 0xfe, 0x6c, 0xf4, 0xc0, 0x3f, + 0xf1, 0x18, 0xf1, 0x16, 0xf1, 0x18, 0x00, 0x05, + 0x08, 0x20, 0xd0, 0x40, 0x5f, 0x01, 0x15, 0x63, + 0xe9, 0x77, 0x05, 0x5e, 0xeb, 0x08, 0x00, 0x22, + 0xd1, 0xa0, 0x6b, 0x06, 0x00, 0x22, 0xd1, 0xa8, + 0x6b, 0xc6, 0x00, 0x22, 0xd1, 0xac, 0x6a, 0xc6, + 0x00, 0xee, 0xd0, 0x0c, 0x00, 0xe6, 0xd1, 0x9c, + 0x70, 0x40, 0x30, 0x5f, 0xe9, 0x8d, 0xb0, 0x3c, + 0xb1, 0xb4, 0x70, 0x40, 0x30, 0x5f, 0xe9, 0x8d, + 0xb1, 0xb4, 0x00, 0xe6, 0xd0, 0x10, 0xd0, 0x83, + 0x70, 0x40, 0x60, 0x46, 0xb0, 0x3c, 0xb1, 0xbc, + 0xb0, 0x81, 0xed, 0x90, 0x00, 0xee, 0xd0, 0x0c, + 0x00, 0xe6, 0xd1, 0x9c, 0x70, 0x40, 0x30, 0x4c, + 0xe9, 0xa3, 0xb0, 0x3c, 0xb1, 0xb4, 0x70, 0x40, + 0x30, 0x4c, 0xe9, 0xa3, 0xb1, 0xb4, 0x00, 0xe6, + 0xd0, 0x00, 0x61, 0x80, 0x00, 0x21, 0xd1, 0xb4, + 0x70, 0x06, 0x10, 0x20, 0xe9, 0xae, 0xd0, 0x00, + 0x60, 0x06, 0xf1, 0x18, 0x00, 0x21, 0xd1, 0x8c, + 0x70, 0x46, 0x65, 0x86, 0xde, 0xc0, 0x00, 0xee, + 0xd0, 0x20, 0x70, 0x00, 0x10, 0x22, 0xfd, 0xb9, + 0xde, 0xc2, 0x00, 0x21, 0xd0, 0x04, 0x70, 0x00, + 0x10, 0x21, 0xe9, 0xc0, 0x15, 0xa3, 0xe9, 0xdc, + 0xd0, 0x02, 0x4c, 0x00, 0x10, 0x63, 0xe9, 0xc5, + 0xcc, 0x3b, 0xd0, 0x04, 0x63, 0x00, 0xd0, 0x00, + 0x70, 0x00, 0x30, 0x1f, 0xfb, 0x08, 0xd0, 0x18, + 0x70, 0x00, 0x10, 0x20, 0xed, 0xc7, 0xd0, 0x04, + 0x70, 0x80, 0x10, 0xa0, 0xeb, 0x08, 0xf1, 0x16, + 0x00, 0x21, 0xd0, 0x9a, 0xc0, 0x39, 0x30, 0x1f, + 0x10, 0x18, 0x30, 0x02, 0xfd, 0xcf, 0xe3, 0x08, + 0x00, 0xe0, 0xd9, 0x04, 0x79, 0x24, 0xb9, 0x38, + 0x19, 0x1c, 0xdc, 0x88, 0x4c, 0xac, 0xd0, 0x02, + 0x40, 0x2c, 0x10, 0x02, 0x0c, 0x80, 0x10, 0x63, + 0xea, 0x70, 0x15, 0x63, 0xf9, 0xec, 0xf1, 0x18, + 0x00, 0xef, 0xdc, 0x00, 0x7c, 0x30, 0x00, 0x24, + 0xd0, 0x30, 0x70, 0x00, 0x10, 0x21, 0xf9, 0xf6, + 0xbc, 0x3b, 0xe1, 0xfd, 0x10, 0x22, 0xf9, 0xfa, + 0xbc, 0x38, 0xe1, 0xfd, 0x10, 0x23, 0xf9, 0xfd, + 0xbc, 0x3c, 0x1e, 0xe0, 0xea, 0x03, 0x15, 0x63, + 0xfa, 0x02, 0xbe, 0xfc, 0xdc, 0x12, 0x0e, 0xde, + 0xfa, 0x09, 0xc0, 0x24, 0x30, 0x30, 0xf6, 0x09, + 0x2c, 0x00, 0xd0, 0x2c, 0x6c, 0x00, 0x1e, 0xe0, + 0xea, 0x0f, 0xcc, 0x24, 0x1c, 0x1f, 0xd9, 0x40, + 0x06, 0x50, 0xea, 0x22, 0xc0, 0x24, 0xb0, 0x12, + 0xfe, 0x22, 0xd9, 0x74, 0x79, 0x65, 0x19, 0x5f, + 0x30, 0x25, 0xee, 0x1b, 0x29, 0x40, 0x19, 0x5f, + 0x19, 0x41, 0xc0, 0x25, 0x20, 0x30, 0x30, 0x24, + 0xe6, 0x22, 0x3c, 0x00, 0xd0, 0x38, 0x69, 0x40, + 0x1c, 0x05, 0xbc, 0x38, 0x3c, 0x32, 0x5c, 0x3b, + 0xbc, 0x3f, 0xd8, 0xec, 0x78, 0xe3, 0xc0, 0xa3, + 0x10, 0xb2, 0xf6, 0x2f, 0xd0, 0x92, 0x02, 0xe4, + 0xd8, 0x00, 0xd0, 0xc0, 0x20, 0xe0, 0xb0, 0x81, + 0xee, 0x32, 0xd0, 0x30, 0x60, 0xc0, 0x00, 0xac, + 0xd0, 0x20, 0xc0, 0xc0, 0xd8, 0x40, 0xc1, 0x23, + 0xd4, 0x64, 0x34, 0x63, 0xdc, 0x40, 0x0c, 0x1f, + 0xfa, 0x5b, 0xc0, 0x65, 0xb0, 0x41, 0xe6, 0x47, + 0x68, 0x40, 0xb0, 0x3c, 0xe2, 0x42, 0xc0, 0xc0, + 0x34, 0x65, 0xdc, 0x48, 0x4c, 0x70, 0x1c, 0x5f, + 0x20, 0xf1, 0x15, 0x63, 0xfa, 0x5c, 0xf2, 0x54, + 0xc1, 0x11, 0xc0, 0x83, 0xf2, 0xa5, 0xe2, 0x6f, + 0xb1, 0x01, 0xe6, 0x5a, 0x68, 0x40, 0x28, 0x60, + 0xb0, 0x3c, 0xe2, 0x54, 0x0f, 0xc5, 0xd9, 0x40, + 0xb1, 0x12, 0x11, 0x01, 0x21, 0x25, 0xf2, 0x54, + 0xc1, 0x11, 0xb1, 0x01, 0xe6, 0x6f, 0x20, 0x31, + 0x68, 0x40, 0x30, 0x31, 0xb0, 0x3c, 0x28, 0x60, + 0x70, 0x43, 0x30, 0x31, 0x60, 0x40, 0x20, 0x31, + 0xb0, 0x3c, 0xb0, 0xf8, 0xe2, 0x61, 0xe2, 0xf7, + 0xd8, 0xec, 0x78, 0xe3, 0x00, 0xa8, 0xd0, 0x80, + 0x00, 0xa8, 0xd1, 0x44, 0x00, 0xac, 0xd0, 0x20, + 0xc0, 0xc0, 0x0c, 0x1f, 0xfa, 0xb3, 0xd9, 0x78, + 0x79, 0x65, 0x39, 0x25, 0x19, 0x5f, 0xc9, 0xa5, + 0x19, 0x83, 0x20, 0x26, 0x20, 0xe6, 0x20, 0xa6, + 0x21, 0x66, 0xc1, 0x23, 0xc0, 0x64, 0x10, 0x5f, + 0x10, 0x9d, 0x20, 0x81, 0x31, 0x01, 0x30, 0x44, + 0xf6, 0x8e, 0x21, 0x01, 0x30, 0x84, 0x10, 0x83, + 0xc4, 0x64, 0x34, 0x63, 0xdc, 0x48, 0x4c, 0x70, + 0x1c, 0x5f, 0x15, 0x63, 0xfa, 0xc3, 0x20, 0xb1, + 0xf2, 0xa5, 0xc1, 0x24, 0x11, 0x1f, 0xc0, 0x85, + 0x30, 0xb1, 0xf2, 0xa5, 0xc1, 0x11, 0xc0, 0x83, + 0x0c, 0x9d, 0xfa, 0xa3, 0xb0, 0xbc, 0xf2, 0xa5, + 0xe2, 0xec, 0xb1, 0x01, 0xe6, 0x5a, 0x70, 0x42, + 0xb0, 0xb8, 0x60, 0x40, 0xb0, 0x3c, 0xe2, 0xa5, + 0xb1, 0x01, 0xe6, 0x5a, 0x70, 0x42, 0xb0, 0xb8, + 0x60, 0x40, 0xb0, 0x38, 0xe2, 0xac, 0x00, 0xac, + 0xd0, 0x24, 0xc1, 0x23, 0xb1, 0x12, 0xf2, 0xac, + 0xd1, 0x24, 0x31, 0x23, 0x00, 0xa8, 0xd0, 0x84, + 0xf2, 0xac, 0xd1, 0x12, 0x00, 0xa8, 0xd0, 0x84, + 0xc0, 0x03, 0xf2, 0xac, 0xe2, 0xec, 0xd8, 0x82, + 0x48, 0x95, 0x18, 0x81, 0xb1, 0x01, 0xe6, 0xd9, + 0x20, 0xb1, 0x70, 0x42, 0x30, 0xb1, 0x20, 0x22, + 0x60, 0x40, 0x30, 0x22, 0xb0, 0xbc, 0xb0, 0x3c, + 0x30, 0xb1, 0x70, 0x42, 0x20, 0xb1, 0x30, 0x22, + 0x60, 0x40, 0x20, 0x22, 0xb0, 0xbc, 0xb0, 0x3c, + 0xe2, 0xc6, 0xc1, 0x11, 0xc0, 0x85, 0x30, 0xb1, + 0x20, 0xe2, 0xb1, 0x01, 0xe6, 0xec, 0x70, 0x42, + 0xb0, 0xb8, 0x20, 0x22, 0x60, 0x40, 0x30, 0x22, + 0xb0, 0x3c, 0x70, 0x43, 0xb0, 0xf8, 0x30, 0x22, + 0x60, 0x40, 0x20, 0x22, 0xb0, 0x3c, 0xe2, 0xdd, + 0xd0, 0x08, 0x5c, 0x00, 0x3c, 0x32, 0xd0, 0x04, + 0x40, 0x30, 0x3c, 0x00, 0x15, 0x63, 0xfa, 0xf7, + 0x1e, 0xe0, 0xea, 0xf7, 0xbc, 0x3c, 0x00, 0xac, + 0xd0, 0xa0, 0x00, 0xa8, 0xd0, 0x00, 0x00, 0x20, + 0xd1, 0x24, 0x70, 0x42, 0xb0, 0xbc, 0x60, 0x40, + 0xb0, 0x3c, 0xb1, 0x01, 0xee, 0xfd, 0xd0, 0x30, + 0x30, 0x30, 0xef, 0x03, 0xd0, 0x04, 0x63, 0x00, + 0x08, 0x20, 0xd0, 0x40, 0x3f, 0x01, 0x02, 0xba, + 0xde, 0x3c, 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, + 0x01, 0x46, 0xd0, 0x08, 0x94, 0x89, 0xd0, 0x8c, + 0x44, 0x82, 0x14, 0x9e, 0x30, 0x12, 0xd0, 0x88, + 0x10, 0x80, 0x00, 0xe8, 0xd1, 0x80, 0x70, 0xc6, + 0x00, 0x06, 0xa0, 0xbd, 0xa0, 0xfc, 0x80, 0x3f, + 0xb1, 0xbe, 0x60, 0xc6, 0x00, 0x06, 0x80, 0xa9, + 0x80, 0x3f, 0x80, 0x2a, 0x80, 0x3f, 0x00, 0x21, + 0xd0, 0x3c, 0x00, 0x0a, 0xb1, 0x82, 0xd0, 0x6b, + 0x70, 0x46, 0x00, 0x06, 0x80, 0x07, 0x01, 0x20, + 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, + 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, + 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x00, 0xa0, 0x29, + 0x80, 0x2b, 0x0c, 0x20, 0xd0, 0x00, 0x10, 0x08, + 0xa0, 0x27, 0x90, 0x09, 0xd0, 0x41, 0x40, 0x01, + 0xd0, 0x44, 0x40, 0x70, 0x20, 0x01, 0xa0, 0x27, + 0x80, 0x3f, 0x00, 0xc6, 0x15, 0x63, 0xe9, 0xae, + 0x05, 0x5e, 0xe9, 0xbe, 0x00, 0xe0, 0xd0, 0x40, + 0x70, 0x81, 0x10, 0x9c, 0xb0, 0x96, 0xf9, 0xb7, + 0x00, 0x21, 0xd0, 0x40, 0xe1, 0xbb, 0xb0, 0x96, + 0xf9, 0xbe, 0x00, 0x22, 0xd0, 0x40, 0x27, 0xc1, + 0x27, 0x41, 0x27, 0x81, 0x90, 0x83, 0x00, 0x64, + 0xd0, 0x10, 0x60, 0x80, 0x01, 0x46, 0x82, 0x34, + 0x80, 0x3f, 0x00, 0x64, 0xd0, 0x14, 0x67, 0x40, + 0x80, 0x34, 0x80, 0x3f, 0x00, 0xc6, 0x90, 0xae, + 0x00, 0x64, 0xd0, 0x18, 0x60, 0x80, 0x90, 0xa6, + 0x00, 0x64, 0xd0, 0x1c, 0x60, 0x80, 0x15, 0x63, + 0xe9, 0xe3, 0x0c, 0x1f, 0xe9, 0xe3, 0x05, 0x50, + 0xf9, 0xe3, 0x15, 0xa3, 0xf9, 0xe3, 0x90, 0x4d, + 0x10, 0x60, 0xe5, 0xdb, 0x00, 0x06, 0x05, 0x0d, + 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x15, 0xa3, + 0xf9, 0xfb, 0x00, 0x21, 0xd0, 0x04, 0x70, 0x00, + 0x10, 0x21, 0xe9, 0xfb, 0xd0, 0x38, 0x70, 0x00, + 0x15, 0x63, 0xe9, 0xef, 0x10, 0x1f, 0x15, 0x21, + 0xe5, 0xe0, 0xd0, 0x64, 0x30, 0x54, 0xe5, 0xe0, + 0xc0, 0x40, 0xb0, 0x7f, 0x30, 0x54, 0xe9, 0xfb, + 0x0c, 0x09, 0x05, 0x0d, 0xe1, 0xef, 0xc0, 0x5f, + 0x10, 0x58, 0x10, 0x48, 0x00, 0xee, 0xd0, 0x8c, + 0xd0, 0xc3, 0x70, 0x02, 0x30, 0x01, 0xea, 0x10, + 0xb0, 0xbc, 0xb0, 0xc1, 0xee, 0x01, 0x00, 0x26, + 0xd0, 0x20, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, + 0x15, 0xa3, 0xea, 0x0f, 0xb0, 0x88, 0x77, 0xc2, + 0x80, 0x07, 0x09, 0x49, 0xd4, 0x00, 0xd4, 0x40, + 0xd4, 0x80, 0xd4, 0xc0, 0x00, 0x4d, 0xa0, 0x6c, + 0xd3, 0x80, 0xd0, 0xa1, 0x00, 0x88, 0xd0, 0xa9, + 0x00, 0x4d, 0x00, 0x50, 0xfa, 0x1a, 0x0c, 0x49, + 0x00, 0x8d, 0xc0, 0x42, 0x10, 0x60, 0xea, 0x2a, + 0xb0, 0x5e, 0xb0, 0x43, 0xfe, 0x34, 0xd0, 0x61, + 0x23, 0x81, 0xe2, 0x1f, 0x0c, 0x09, 0x05, 0x0d, + 0x15, 0x20, 0xfe, 0x31, 0xd0, 0x65, 0x30, 0x54, + 0xee, 0x10, 0x03, 0xb4, 0xd6, 0x29, 0xe0, 0x46, + 0xc6, 0xd4, 0xb6, 0xc1, 0xe6, 0x31, 0xd0, 0x64, + 0x30, 0x5b, 0xfe, 0x31, 0xd7, 0x00, 0xb7, 0x01, + 0xd3, 0x81, 0x00, 0x27, 0xd0, 0x10, 0xd0, 0x81, + 0x60, 0x80, 0x15, 0x63, 0xfa, 0x54, 0x00, 0x22, + 0xdc, 0xd8, 0x03, 0xf8, 0xd0, 0x10, 0xf0, 0x4a, + 0x15, 0xa3, 0xfa, 0x51, 0x02, 0xf7, 0xdc, 0x26, + 0x0c, 0x10, 0xf8, 0x46, 0x02, 0xfc, 0xd8, 0x22, + 0xe0, 0x46, 0x02, 0xf2, 0xd6, 0x2b, 0xe0, 0x46, + 0x00, 0x22, 0xdc, 0xd8, 0x03, 0xfa, 0xd0, 0x10, + 0xf0, 0x4a, 0x03, 0x35, 0xda, 0x20, 0x15, 0xa3, + 0xe8, 0x46, 0x03, 0x30, 0xdc, 0x27, 0xe0, 0x46, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xe0, 0xe1, 0xec, 0xe2, 0x12, + 0xe2, 0x14, 0xe1, 0xc7, 0xe1, 0x30, 0x30, 0x5a, + 0xe5, 0x8d, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, + 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x64, 0x30, 0x5b, 0xfc, 0x11, + 0xc0, 0x39, 0x30, 0x31, 0x10, 0x12, 0x10, 0x20, + 0xe9, 0x88, 0x03, 0x10, 0xe9, 0x93, 0x0f, 0x19, + 0xf9, 0x8f, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xde, + 0xf9, 0xba, 0x03, 0xdf, 0xe9, 0x99, 0xd3, 0x40, + 0xca, 0x50, 0xd1, 0x42, 0xe2, 0xea, 0xc0, 0x50, + 0x10, 0x54, 0xc0, 0x90, 0x10, 0x8c, 0x10, 0x92, + 0x10, 0xe0, 0xe5, 0xa8, 0xc0, 0x01, 0x10, 0x01, + 0x20, 0x40, 0xc0, 0x02, 0x10, 0x01, 0x20, 0x80, + 0x10, 0x60, 0xfd, 0xab, 0xb0, 0x7f, 0x10, 0xa0, + 0xfd, 0xae, 0xb0, 0xbf, 0x10, 0x5f, 0x10, 0x9f, + 0x00, 0xef, 0xd0, 0x3e, 0x20, 0x52, 0x20, 0x83, + 0x20, 0x93, 0x10, 0x4c, 0x10, 0x82, 0x40, 0x80, + 0x50, 0x42, 0x0f, 0xc5, 0xcb, 0xaa, 0xcb, 0xeb, + 0xca, 0x50, 0xd0, 0xc0, 0xb0, 0xc1, 0xf1, 0x9b, + 0xcb, 0x01, 0xd0, 0xc1, 0xf1, 0x9b, 0xcb, 0x41, + 0xba, 0x7f, 0xbb, 0x3f, 0xe2, 0xea, 0xcc, 0x5b, + 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, + 0x2c, 0x40, 0x1c, 0x48, 0xcc, 0xb1, 0x1c, 0x9f, + 0x06, 0xd0, 0xe9, 0xd5, 0x01, 0x69, 0xd0, 0x20, + 0x3c, 0x80, 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, + 0x2c, 0x40, 0x2c, 0x80, 0x01, 0xb5, 0xd4, 0x00, + 0x2c, 0x80, 0xde, 0x84, 0xde, 0xc4, 0xe3, 0x1e, + 0xd3, 0xc2, 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xe5, + 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xec, 0x80, 0x07, + 0xd4, 0x00, 0xc4, 0x50, 0xd3, 0x08, 0xe2, 0x95, + 0xd0, 0x71, 0x20, 0x56, 0x00, 0x48, 0xd1, 0x8c, + 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xfa, 0x06, 0x5e, + 0xfa, 0x03, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, + 0xf9, 0xfa, 0xd3, 0xc4, 0x06, 0x5e, 0xfa, 0x03, + 0xd0, 0x43, 0x40, 0x4c, 0xea, 0x03, 0x08, 0x49, + 0x00, 0x8d, 0x10, 0x87, 0x53, 0x02, 0x01, 0x46, + 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xea, 0x0a, + 0x09, 0x49, 0x00, 0x0d, 0xd0, 0x9f, 0x40, 0x02, + 0xb0, 0x20, 0x03, 0x19, 0xea, 0x10, 0xb0, 0x20, + 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x80, + 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, + 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xd3, 0xe1, 0xdc, 0xe2, 0x00, + 0xe2, 0x02, 0xe1, 0xac, 0xe1, 0x30, 0x30, 0x5a, + 0xe5, 0x91, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, + 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x64, 0x30, 0x5b, 0xfc, 0x11, + 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x8e, + 0xbc, 0x10, 0xd0, 0x30, 0xc0, 0x40, 0x30, 0x70, + 0xed, 0x8e, 0x03, 0x10, 0xe9, 0x97, 0x0f, 0x19, + 0xf9, 0x93, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xdf, + 0xe9, 0xa1, 0xd3, 0x40, 0xca, 0x50, 0xcb, 0x52, + 0x03, 0x1d, 0xf9, 0xa8, 0xca, 0x12, 0xca, 0x52, + 0xe1, 0xa5, 0x03, 0x1d, 0xf9, 0xa8, 0xca, 0x12, + 0xca, 0x53, 0xca, 0xae, 0xca, 0xef, 0xb1, 0x7e, + 0x03, 0x1e, 0xfa, 0xea, 0xb1, 0x7e, 0xe2, 0xea, + 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, + 0x17, 0x20, 0xf9, 0xd2, 0x00, 0xa8, 0xd0, 0x00, + 0xcc, 0x5b, 0x1c, 0x5f, 0x1c, 0x43, 0x20, 0x31, + 0x7c, 0x40, 0xb0, 0x3c, 0x7e, 0x80, 0xcc, 0xb1, + 0xce, 0xfa, 0x1c, 0x9f, 0x1e, 0xdf, 0x01, 0x69, + 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xc4, 0x3c, 0x80, + 0x0e, 0xd9, 0xe9, 0xc7, 0x3e, 0xc0, 0x3e, 0xf2, + 0x3e, 0xb1, 0xd0, 0x01, 0x40, 0x1b, 0x10, 0x05, + 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0xd0, 0x30, + 0x70, 0x00, 0x2c, 0x80, 0xe3, 0x1e, 0xd3, 0xc2, + 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xd8, 0xf2, 0x32, + 0xb3, 0x81, 0xe9, 0xdc, 0x80, 0x07, 0xe2, 0x95, + 0x0d, 0x09, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, + 0xe9, 0xe8, 0x06, 0x5e, 0xf9, 0xf1, 0x08, 0x89, + 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xe8, 0xd3, 0xc4, + 0x06, 0x5e, 0xf9, 0xf1, 0xd0, 0x43, 0x40, 0x4c, + 0xe9, 0xf1, 0x08, 0x49, 0x00, 0x8d, 0x10, 0x87, + 0x53, 0x02, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, + 0x03, 0x1c, 0xe9, 0xf8, 0x09, 0x49, 0x00, 0x0d, + 0xd0, 0x9f, 0x40, 0x02, 0xb0, 0x20, 0x03, 0x19, + 0xe9, 0xfe, 0xb0, 0x20, 0xa0, 0x2c, 0xe2, 0x5b, + 0x06, 0x5f, 0xfa, 0x80, 0xd4, 0x00, 0xc4, 0x50, + 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xc1, 0xe1, 0xca, 0xe1, 0xee, + 0xe1, 0xf0, 0xe1, 0xa8, 0xe1, 0x30, 0x30, 0x5a, + 0xe5, 0x8d, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, + 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x64, 0x30, 0x5b, 0xfc, 0x11, + 0xc0, 0x39, 0x30, 0x31, 0x10, 0x12, 0x10, 0x20, + 0xe9, 0x88, 0x03, 0x10, 0xe9, 0x93, 0x0f, 0x19, + 0xf9, 0x8f, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xdf, + 0xe9, 0x9d, 0xd3, 0x40, 0xca, 0x50, 0xcb, 0x52, + 0x03, 0x1d, 0xf9, 0xa4, 0xca, 0x12, 0xca, 0x52, + 0xe1, 0xa1, 0x03, 0x1d, 0xf9, 0xa4, 0xca, 0x12, + 0xca, 0x53, 0xca, 0xae, 0xca, 0xef, 0xb1, 0x7e, + 0x03, 0x1e, 0xfa, 0xea, 0xb1, 0x7e, 0xe2, 0xea, + 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, + 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x48, 0xcc, 0xb1, + 0x1c, 0x9f, 0x06, 0xd0, 0xe9, 0xb6, 0x01, 0x69, + 0xd0, 0x20, 0x3c, 0x80, 0xc0, 0x1c, 0x10, 0x08, + 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0xd0, 0x30, + 0x70, 0x00, 0x2c, 0x80, 0xde, 0x84, 0xde, 0xc4, + 0xe3, 0x1e, 0xd3, 0xc2, 0xf2, 0xd3, 0x13, 0xa0, + 0xed, 0xc6, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xca, + 0x80, 0x07, 0xe2, 0x95, 0x0d, 0x09, 0xd1, 0x8c, + 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xd6, 0x06, 0x5e, + 0xf9, 0xdf, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, + 0xf9, 0xd6, 0xd3, 0xc4, 0x06, 0x5e, 0xf9, 0xdf, + 0xd0, 0x43, 0x40, 0x4c, 0xe9, 0xdf, 0x08, 0x49, + 0x00, 0x8d, 0x10, 0x87, 0x53, 0x02, 0x01, 0x46, + 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xe6, + 0x09, 0x49, 0x00, 0x0d, 0xd0, 0x9f, 0x40, 0x02, + 0xb0, 0x20, 0x03, 0x19, 0xe9, 0xec, 0xb0, 0x20, + 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x80, + 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, + 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xdb, 0xe1, 0xe9, 0xe2, 0x00, + 0xe2, 0x02, 0xe1, 0xc3, 0xe1, 0x65, 0x30, 0x5a, + 0xe5, 0x8d, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, + 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x52, 0x30, 0x5b, 0xfc, 0x11, + 0xc0, 0x39, 0x30, 0x31, 0x10, 0x11, 0x10, 0x20, + 0xe9, 0x88, 0x03, 0x10, 0xe9, 0x93, 0x0f, 0x19, + 0xf9, 0x8f, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xd0, + 0xf9, 0x98, 0xca, 0x50, 0x03, 0xde, 0xf9, 0x9a, + 0xd1, 0x42, 0xe2, 0xea, 0xcb, 0xaa, 0xcb, 0xeb, + 0xc0, 0x50, 0x10, 0x54, 0xc0, 0x90, 0x10, 0x8c, + 0x10, 0x92, 0xd0, 0xc1, 0x05, 0x50, 0xe9, 0xa5, + 0xb0, 0xc2, 0x10, 0x60, 0xfd, 0xa8, 0xb0, 0x7f, + 0x10, 0xa0, 0xfd, 0xab, 0xb0, 0xbf, 0x10, 0x5f, + 0x10, 0x9f, 0x00, 0xef, 0xd0, 0x3e, 0x20, 0x52, + 0x20, 0x83, 0x20, 0x93, 0x10, 0x4c, 0x10, 0x82, + 0x40, 0x80, 0x50, 0x42, 0xd0, 0x81, 0x14, 0x1f, + 0x14, 0x01, 0x05, 0x50, 0xe9, 0xbd, 0x50, 0x42, + 0xe1, 0xbe, 0x54, 0x02, 0xca, 0x10, 0xca, 0x50, + 0xcb, 0x01, 0xcb, 0x41, 0xe2, 0xea, 0xcc, 0x5b, + 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, + 0x2c, 0x40, 0x1c, 0x49, 0xcc, 0xb1, 0x1c, 0x9f, + 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, 0x05, 0x50, + 0xf9, 0xd2, 0xb0, 0x3c, 0x2c, 0x40, 0x2c, 0x80, + 0x01, 0xb5, 0xd4, 0x00, 0x2c, 0x80, 0x02, 0xe4, + 0xde, 0x80, 0xde, 0xc1, 0xe3, 0x1e, 0xd3, 0xc0, + 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xe0, 0xf2, 0x32, + 0xb3, 0x81, 0xe9, 0xe9, 0x80, 0x07, 0xd4, 0x02, + 0x44, 0x15, 0x14, 0x1f, 0xc4, 0x50, 0xd3, 0x08, + 0xe2, 0x95, 0xd0, 0x71, 0x20, 0x56, 0x00, 0x48, + 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xf7, + 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xf6, + 0xd3, 0xc4, 0xe1, 0xf7, 0xb3, 0xc1, 0x01, 0x46, + 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xfe, + 0x09, 0x49, 0x00, 0x0d, 0xa0, 0x2c, 0xe2, 0x5b, + 0x06, 0x5f, 0xfa, 0x7f, 0xd4, 0x02, 0x44, 0x15, + 0x14, 0x1f, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, + 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xc9, 0xe1, 0xd2, 0xe1, 0xe7, + 0xe1, 0xe9, 0xe1, 0xab, 0xe1, 0x30, 0x30, 0x5a, + 0xe5, 0x91, 0x06, 0x50, 0xe9, 0x83, 0xc0, 0x54, + 0x30, 0x5b, 0xb0, 0x42, 0xf8, 0x11, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x52, 0x30, 0x5b, 0xfc, 0x11, + 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x8e, + 0xbc, 0x10, 0xd0, 0x20, 0xc0, 0x40, 0x30, 0x70, + 0xed, 0x8e, 0x03, 0x10, 0xe9, 0x97, 0x0f, 0x19, + 0xf9, 0x93, 0xd1, 0x44, 0xe1, 0x79, 0x03, 0xd0, + 0xf9, 0xa0, 0xca, 0x50, 0xcb, 0x52, 0x03, 0x1d, + 0xf9, 0xa7, 0xca, 0x12, 0xca, 0x52, 0xe1, 0xa4, + 0x03, 0x1d, 0xf9, 0xa7, 0xca, 0x12, 0xca, 0x53, + 0xca, 0xae, 0xca, 0xef, 0xb1, 0x7e, 0x03, 0x1e, + 0xfa, 0xea, 0xb1, 0x7e, 0xe2, 0xea, 0x00, 0x24, + 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, + 0xf9, 0xc8, 0x00, 0x2a, 0xd0, 0x00, 0x20, 0x1b, + 0x20, 0x1b, 0x05, 0x50, 0xf9, 0xb8, 0xb0, 0x3f, + 0x10, 0x02, 0x7c, 0x40, 0xcc, 0xb1, 0x1c, 0x9f, + 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xc1, + 0x3c, 0x80, 0xde, 0xa0, 0x2c, 0x5f, 0x2c, 0x9f, + 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, 0xde, 0xc1, + 0xe3, 0x1e, 0xd3, 0xc0, 0xf2, 0xd3, 0x13, 0xa0, + 0xed, 0xce, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xd2, + 0x80, 0x07, 0xe2, 0x95, 0x0d, 0x09, 0xd1, 0x8c, + 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xde, 0x08, 0x89, + 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xdd, 0xd3, 0xc4, + 0xe1, 0xde, 0xb3, 0xc1, 0x01, 0x46, 0x90, 0x2c, + 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xe5, 0x09, 0x49, + 0x00, 0x0d, 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, + 0xfa, 0x7f, 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, + 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xa3, 0xc0, 0x00, 0xc0, 0x00, + 0xc0, 0x00, 0xe1, 0x8a, 0xe1, 0x30, 0x30, 0x5a, + 0xe5, 0x87, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x64, + 0x30, 0x5b, 0xfd, 0xb4, 0xc0, 0x39, 0x30, 0x31, + 0x10, 0x12, 0x10, 0x20, 0xe9, 0x82, 0xd1, 0x42, + 0xd3, 0x40, 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, + 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, + 0x1c, 0x48, 0xcc, 0xb1, 0x1c, 0x9f, 0x06, 0xd0, + 0xe9, 0x98, 0x01, 0x69, 0xd0, 0x20, 0x3c, 0x80, + 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, 0x2c, 0x40, + 0x2c, 0x80, 0x01, 0xb5, 0xd4, 0x00, 0x2c, 0x80, + 0xde, 0x84, 0xde, 0xc4, 0xe3, 0x1e, 0xf2, 0xd3, + 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xc8, + 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, + 0xe9, 0xbf, 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, + 0x10, 0x5c, 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xc8, + 0x0f, 0x17, 0xf9, 0xb4, 0x0f, 0x49, 0xf2, 0xd3, + 0x0f, 0x19, 0xf9, 0xb8, 0xdf, 0x00, 0x00, 0x06, + 0x03, 0xb4, 0xd6, 0x29, 0xe0, 0x46, 0xc0, 0x5b, + 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xc8, 0x0f, 0x17, + 0xf9, 0xc3, 0x02, 0xf2, 0xd6, 0x2b, 0xe0, 0x46, + 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xb5, 0xc0, 0x00, 0xc0, 0x00, + 0xc0, 0x00, 0xe1, 0x8e, 0xe1, 0x30, 0x30, 0x5a, + 0xe5, 0x8b, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x64, + 0x30, 0x5b, 0xfd, 0xc6, 0xbc, 0x10, 0xd0, 0x10, + 0x0c, 0x1e, 0xf9, 0x88, 0xbc, 0x10, 0xd0, 0x30, + 0xc0, 0x40, 0x30, 0x70, 0xed, 0x88, 0xd1, 0x42, + 0xd3, 0x40, 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, + 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xb4, + 0x00, 0xa8, 0xd0, 0x00, 0xcc, 0x5b, 0x1c, 0x5f, + 0x1c, 0x43, 0x20, 0x31, 0x7c, 0x40, 0xb0, 0x3c, + 0x7e, 0x80, 0xcc, 0xb1, 0xce, 0xfa, 0x1c, 0x9f, + 0x1e, 0xdf, 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, + 0xe9, 0xa6, 0x3c, 0x80, 0x0e, 0xd9, 0xe9, 0xa9, + 0x3e, 0xc0, 0x3e, 0xf2, 0x3e, 0xb1, 0xd0, 0x01, + 0x40, 0x1b, 0x10, 0x05, 0x20, 0x1f, 0x2c, 0x40, + 0x2c, 0x80, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, + 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, + 0x30, 0x5a, 0xe5, 0xda, 0x00, 0x26, 0xd0, 0x00, + 0x70, 0x00, 0x10, 0x20, 0xe9, 0xd1, 0x00, 0xe0, + 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5c, 0x30, 0x5b, + 0xb0, 0x41, 0xed, 0xda, 0x0f, 0x17, 0xf9, 0xc6, + 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xca, + 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb4, 0xd6, 0x29, + 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, + 0xe5, 0xda, 0x0f, 0x17, 0xf9, 0xd5, 0x02, 0xf7, + 0xdc, 0x26, 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, + 0xe2, 0x95, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xa2, 0xc0, 0x00, 0xc0, 0x00, + 0xc0, 0x00, 0xe1, 0x8a, 0xe1, 0x65, 0x30, 0x5a, + 0xe5, 0x87, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x52, + 0x30, 0x5b, 0xfd, 0xb3, 0xc0, 0x39, 0x30, 0x31, + 0x10, 0x11, 0x10, 0x20, 0xe9, 0x82, 0xd1, 0x42, + 0xd3, 0x41, 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, + 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, + 0x1c, 0x49, 0xcc, 0xb1, 0x1c, 0x9f, 0xc0, 0x1c, + 0x10, 0x08, 0x20, 0x1f, 0x05, 0x50, 0xf9, 0x99, + 0xb0, 0x3c, 0x2c, 0x40, 0x2c, 0x80, 0x01, 0xb5, + 0xd4, 0x00, 0x2c, 0x80, 0x02, 0xe4, 0xde, 0x80, + 0xde, 0xc1, 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, + 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xc7, 0x00, 0x26, + 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, 0xe9, 0xbe, + 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5b, + 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xc7, 0x0f, 0x17, + 0xf9, 0xb3, 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, + 0xf9, 0xb7, 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb4, + 0xd6, 0x29, 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, + 0xb0, 0x7e, 0xe5, 0xc7, 0x0f, 0x17, 0xf9, 0xc2, + 0x03, 0x30, 0xdc, 0x27, 0xe0, 0x46, 0xd3, 0x08, + 0xd3, 0xc0, 0xe2, 0x95, 0x50, 0x00, 0x50, 0x00, + 0x03, 0x76, 0xd0, 0x73, 0x00, 0x24, 0xdc, 0xd8, + 0xf0, 0x4a, 0xe1, 0xac, 0xc0, 0x00, 0xc0, 0x00, + 0xc0, 0x00, 0xe1, 0x8e, 0xe1, 0x30, 0x30, 0x5a, + 0xe5, 0x8b, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x52, + 0x30, 0x5b, 0xfd, 0xbd, 0xbc, 0x10, 0xd0, 0x10, + 0x0c, 0x1e, 0xf9, 0x88, 0xbc, 0x10, 0xd0, 0x20, + 0xc0, 0x40, 0x30, 0x70, 0xed, 0x88, 0xd1, 0x42, + 0xd3, 0x41, 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, + 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xab, + 0x00, 0x2a, 0xd0, 0x00, 0x20, 0x1b, 0x20, 0x1b, + 0x05, 0x50, 0xf9, 0x9b, 0xb0, 0x3f, 0x10, 0x02, + 0x7c, 0x40, 0xcc, 0xb1, 0x1c, 0x9f, 0x01, 0x69, + 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xa4, 0x3c, 0x80, + 0xde, 0xa0, 0x2c, 0x5f, 0x2c, 0x9f, 0xd0, 0x30, + 0x70, 0x00, 0x2c, 0x80, 0xde, 0xc1, 0xe3, 0x1e, + 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, + 0xe5, 0xd1, 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, + 0x10, 0x20, 0xe9, 0xc8, 0x00, 0xe0, 0xd0, 0x44, + 0x70, 0x41, 0x10, 0x5b, 0x30, 0x5b, 0xb0, 0x41, + 0xed, 0xd1, 0x0f, 0x17, 0xf9, 0xbd, 0x0f, 0x49, + 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xc1, 0xdf, 0x00, + 0x00, 0x06, 0x03, 0xb4, 0xd6, 0x29, 0xe0, 0x46, + 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xd1, + 0x0f, 0x17, 0xf9, 0xcc, 0x03, 0x35, 0xda, 0x20, + 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, + 0xd0, 0x61, 0x23, 0x81, 0x0c, 0x49, 0xd0, 0x61, + 0x00, 0x8d, 0x10, 0xa0, 0xea, 0x3b, 0x30, 0x42, + 0xe6, 0x30, 0x23, 0x82, 0x0f, 0xc5, 0x0c, 0x09, + 0x05, 0x0d, 0x15, 0x20, 0xfe, 0x45, 0xd0, 0x65, + 0x15, 0x63, 0xea, 0x43, 0xd0, 0x53, 0x30, 0x54, + 0xee, 0x4a, 0x0f, 0x17, 0xfa, 0x45, 0x03, 0xb4, + 0xd6, 0x29, 0xe0, 0x46, 0x80, 0x07, 0x09, 0x49, + 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, + 0x00, 0x4d, 0xa0, 0x6c, 0xd0, 0xa1, 0x00, 0x88, + 0xd0, 0xa9, 0x00, 0x4d, 0x00, 0x50, 0xfa, 0x53, + 0xf2, 0x32, 0xd3, 0x80, 0xe1, 0x76, 0xd1, 0xc2, + 0x41, 0xcf, 0x11, 0xdf, 0xd0, 0x41, 0x01, 0xc1, + 0x00, 0xef, 0xd0, 0xbe, 0x03, 0x10, 0xf9, 0x77, + 0x80, 0x07, 0x21, 0x96, 0x11, 0xa2, 0xe9, 0x78, + 0x03, 0x1d, 0xea, 0x73, 0xc0, 0xd7, 0xc2, 0x90, + 0xf2, 0xa4, 0xc4, 0x0a, 0x03, 0xd0, 0xea, 0x72, + 0xc2, 0x91, 0xf2, 0xa4, 0xc4, 0x4a, 0x03, 0x1e, + 0xea, 0x8d, 0xc0, 0xd8, 0xc2, 0x92, 0xf2, 0xa4, + 0xc4, 0x8a, 0x03, 0xd0, 0xea, 0x7d, 0xc2, 0x93, + 0xf2, 0xa4, 0xc4, 0xca, 0xe2, 0x8d, 0xd3, 0xc0, + 0xc0, 0xd7, 0xc2, 0x90, 0xf2, 0xa4, 0xc4, 0x0a, + 0x03, 0xd0, 0xea, 0x88, 0xc2, 0x91, 0xf2, 0xa4, + 0xc4, 0x4a, 0x08, 0x49, 0x00, 0x4d, 0x10, 0x61, + 0xf8, 0x11, 0x03, 0x1f, 0xea, 0x93, 0x0d, 0xc9, + 0x00, 0x4d, 0xd0, 0x1a, 0xe2, 0x98, 0x03, 0x10, + 0xfa, 0x97, 0xd0, 0x1d, 0xe2, 0x98, 0xd0, 0x18, + 0x0f, 0x16, 0xfa, 0x98, 0xd0, 0x4c, 0x40, 0x4c, + 0x10, 0x6c, 0xea, 0xa2, 0x03, 0xde, 0xfa, 0xa2, + 0x0f, 0x12, 0xfa, 0xa0, 0x00, 0x08, 0xe2, 0xd9, + 0xd2, 0x00, 0x13, 0xe1, 0xee, 0xa9, 0x08, 0x49, + 0x02, 0x0d, 0x00, 0xc8, 0xc2, 0xca, 0x12, 0x94, + 0xd0, 0x1f, 0x30, 0x07, 0x12, 0xc0, 0xc2, 0x43, + 0x12, 0x5a, 0x00, 0x0d, 0x03, 0xde, 0xea, 0xb6, + 0x0e, 0xc9, 0x04, 0x8d, 0x02, 0x48, 0x22, 0x80, + 0x12, 0x88, 0xd0, 0x0b, 0x30, 0x03, 0x12, 0x80, + 0xd0, 0x19, 0x20, 0x03, 0x12, 0x80, 0x00, 0x0d, + 0x22, 0xc0, 0x12, 0xc8, 0xd0, 0x0b, 0x30, 0x09, + 0x12, 0xc0, 0x12, 0xd8, 0xd0, 0x16, 0x20, 0x09, + 0x20, 0x07, 0x12, 0xc0, 0x42, 0xc2, 0x22, 0x8b, + 0x22, 0x88, 0x03, 0xde, 0xea, 0xd2, 0x0e, 0xc9, + 0xc4, 0x4a, 0x04, 0xcd, 0x0f, 0xc5, 0x01, 0x46, + 0x90, 0x4d, 0x00, 0xc6, 0x10, 0x60, 0xe6, 0xd3, + 0x0f, 0xc5, 0x01, 0xb5, 0xd4, 0x00, 0xca, 0x9d, + 0xcb, 0x9e, 0xca, 0xea, 0xcb, 0xee, 0x2a, 0xc0, + 0x2b, 0xc0, 0xca, 0x10, 0xca, 0x51, 0xcb, 0x12, + 0xcb, 0x53, 0xd1, 0x40, 0xd3, 0x41, 0xb7, 0x3f, + 0xc0, 0x5c, 0xe1, 0x7b, 0xd0, 0xc0, 0xc1, 0x28, + 0xc2, 0x2a, 0xc2, 0xab, 0xf1, 0x7a, 0x0f, 0x17, + 0xfa, 0xef, 0xcc, 0xe8, 0xcd, 0x29, 0xcd, 0x6c, + 0xcd, 0xad, 0xc8, 0x08, 0xc8, 0x49, 0xca, 0x0a, + 0xca, 0x4b, 0xf3, 0x31, 0xd0, 0xc1, 0xc1, 0x34, + 0xc2, 0x2a, 0xc2, 0xab, 0xf1, 0x7a, 0x00, 0x28, + 0xd9, 0xc0, 0xc8, 0x88, 0xc8, 0xc9, 0xa9, 0xf8, + 0xca, 0x8a, 0xca, 0xcb, 0x11, 0x62, 0xe9, 0x79, + 0xd0, 0xc0, 0xc1, 0x35, 0xc2, 0x2e, 0xc2, 0xaf, + 0xf1, 0x7a, 0xc9, 0x08, 0xc9, 0x49, 0xa9, 0xf8, + 0xcb, 0x0a, 0xcb, 0x4b, 0xd0, 0xc1, 0xc1, 0x36, + 0xc2, 0x2e, 0xc2, 0xaf, 0xf1, 0x7a, 0xc0, 0x27, + 0xc9, 0x88, 0xc9, 0xc9, 0xa0, 0x38, 0xcb, 0x8a, + 0xcb, 0xcb, 0xe1, 0x79, 0x5f, 0x0d, 0x07, 0x7d, + 0xde, 0x07, 0x11, 0x5e, 0x30, 0x05, 0xcd, 0xc0, + 0x00, 0x28, 0xd0, 0x00, 0xa0, 0x38, 0x11, 0x61, + 0xf9, 0x75, 0x00, 0xe2, 0xd0, 0x00, 0x0f, 0x1d, + 0xeb, 0x29, 0x00, 0x2d, 0xdf, 0x4b, 0xf3, 0x3f, + 0xe1, 0x75, 0x04, 0xeb, 0xd0, 0x00, 0x11, 0x62, + 0xeb, 0x36, 0xb0, 0x20, 0x0f, 0x19, 0xfb, 0x36, + 0xac, 0xe0, 0x01, 0xa4, 0xde, 0x00, 0x5e, 0x0d, + 0x00, 0x2d, 0xdf, 0x7a, 0xdd, 0xc0, 0xd8, 0x80, + 0xd9, 0x00, 0xd9, 0x80, 0x5f, 0x00, 0x01, 0x46, + 0x00, 0x28, 0xd0, 0x01, 0x00, 0x06, 0xa0, 0x37, + 0x80, 0x3f, 0x00, 0xc6, 0x0f, 0xc5, 0xad, 0xda, + 0xc6, 0xb1, 0xd0, 0x01, 0x01, 0xa3, 0xde, 0x1d, + 0x40, 0x30, 0x3e, 0x00, 0x80, 0x3f, 0x0e, 0x0a, + 0x66, 0xda, 0xc8, 0x28, 0xc8, 0x69, 0xc8, 0xaa, + 0xc8, 0xeb, 0x0c, 0x1e, 0xfb, 0x68, 0x26, 0xba, + 0x07, 0x7d, 0xdc, 0x00, 0x1d, 0xcf, 0x1d, 0xd1, + 0x5d, 0xc0, 0x00, 0x2d, 0xdf, 0x64, 0x0f, 0x87, + 0xad, 0xda, 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, + 0xc9, 0x2c, 0xc9, 0x6d, 0xc9, 0xae, 0xc9, 0xef, + 0x0f, 0x2f, 0xd0, 0x37, 0x4f, 0x00, 0x0f, 0x1a, + 0xeb, 0xbe, 0x01, 0xa4, 0xde, 0x20, 0xd0, 0x01, + 0x40, 0x3c, 0x2e, 0x00, 0x00, 0x2d, 0xdf, 0x7a, + 0xac, 0xe0, 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe0, + 0xbf, 0x79, 0xbe, 0x3c, 0x0f, 0x1b, 0xeb, 0x9e, + 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe1, 0xbf, 0x79, + 0xbe, 0x34, 0x18, 0xa0, 0xeb, 0xb9, 0x0f, 0x87, + 0xad, 0x20, 0x80, 0x3f, 0x0e, 0x0a, 0x76, 0xe2, + 0xbf, 0x79, 0xbe, 0x3c, 0x0f, 0x87, 0x0e, 0x0a, + 0x76, 0xe3, 0x0f, 0x1b, 0xeb, 0xb3, 0xbf, 0x77, + 0xbe, 0x0c, 0x19, 0x20, 0xeb, 0xb9, 0x0f, 0x87, + 0xad, 0x60, 0x80, 0x3f, 0x0e, 0x0a, 0x76, 0xe4, + 0xbe, 0x3c, 0xbf, 0x75, 0x0f, 0x15, 0xf8, 0x1c, + 0x1f, 0x0a, 0x1f, 0x16, 0x0f, 0x87, 0x0e, 0x0a, + 0x76, 0xe5, 0xbf, 0x79, 0xbe, 0x34, 0x19, 0xa0, + 0xeb, 0xb9, 0x0f, 0x87, 0xad, 0xa0, 0x80, 0x3f, + 0x0e, 0x0a, 0x76, 0xe6, 0xbe, 0x3c, 0xbf, 0x79, + 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe7, 0x0f, 0x15, + 0xeb, 0xbe, 0x00, 0x2f, 0xdf, 0x72, 0x1d, 0xe0, + 0xf8, 0x1c, 0x00, 0x28, 0xd0, 0x01, 0xa0, 0x38, + 0x80, 0x3f, 0x0f, 0x87, 0xd0, 0x01, 0x4d, 0xc0, + 0x1f, 0x0f, 0x1f, 0x11, 0x00, 0x2f, 0xdf, 0x76, + 0xc6, 0xb2, 0x03, 0x7d, 0xde, 0x0e, 0x01, 0xa3, + 0xde, 0x2d, 0x5d, 0xc0, 0x0f, 0x87, 0x1e, 0xe1, + 0xeb, 0xdb, 0xad, 0xda, 0x80, 0x3f, 0x0e, 0x0a, + 0x66, 0xda, 0x0c, 0x1e, 0xfb, 0xe4, 0x26, 0xbb, + 0x03, 0xff, 0xdd, 0xff, 0x4d, 0xc0, 0x00, 0xa3, + 0xde, 0x2d, 0xbf, 0x56, 0x0f, 0x87, 0x07, 0x7d, + 0xde, 0x0e, 0x5d, 0xc0, 0x00, 0xa3, 0xde, 0x1d, + 0xad, 0xda, 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, + 0xdf, 0x5c, 0xd0, 0x0e, 0x4f, 0x00, 0x0f, 0x87, + 0xd0, 0x06, 0x40, 0x3c, 0xeb, 0xf0, 0xbf, 0x3e, + 0xb0, 0x04, 0xe7, 0xf2, 0xeb, 0xf6, 0xbf, 0x0c, + 0xbf, 0x3a, 0x0f, 0x87, 0x0f, 0x1d, 0xfb, 0x4b, + 0xbf, 0x38, 0x0f, 0x87, 0x0f, 0x1c, 0xfb, 0xcb, + 0xbf, 0x30, 0x0f, 0x87, 0x50, 0x00, 0x50, 0x00, + 0x0f, 0x17, 0xf9, 0x70, 0x90, 0x4d, 0x10, 0x60, + 0xe5, 0x72, 0x0f, 0x49, 0x90, 0x4d, 0x10, 0x60, + 0xe5, 0x76, 0x0f, 0x19, 0xf9, 0x79, 0x01, 0x46, + 0xd0, 0x11, 0xa0, 0x38, 0x80, 0x3f, 0x00, 0xc6, + 0xdf, 0x00, 0x00, 0x06, 0x08, 0x20, 0xd0, 0x00, + 0x10, 0x08, 0xa0, 0x0a, 0xa0, 0x1b, 0x0c, 0x20, + 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x27, 0x90, 0x4d, + 0x0f, 0xff, 0xd8, 0x1f, 0x40, 0x40, 0xa0, 0x4d, + 0x80, 0x0a, 0xd0, 0x00, 0x06, 0x50, 0xf9, 0x95, + 0xd0, 0x01, 0xa0, 0x09, 0x80, 0x1b, 0xa0, 0x27, + 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, + 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, + 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x40, + 0xa0, 0x69, 0x80, 0x2b, 0x80, 0x07, 0x08, 0x20, + 0xdf, 0x00, 0x02, 0x30, 0xd0, 0x00, 0xa0, 0x38, + 0x80, 0x3f, 0x01, 0xb0, 0xd0, 0x10, 0xa0, 0x37, + 0x80, 0x3f, 0x02, 0x30, 0xd0, 0x01, 0xa0, 0x38, + 0xd0, 0x10, 0xa0, 0x38, 0x15, 0x63, 0xe9, 0xba, + 0x05, 0x5e, 0xf9, 0xfa, 0xc0, 0xdf, 0x00, 0xe0, + 0xd1, 0x80, 0x70, 0x06, 0x10, 0x1c, 0xc1, 0x40, + 0x11, 0x48, 0xd3, 0x10, 0x00, 0x21, 0xd0, 0x80, + 0xb0, 0x16, 0xe9, 0xca, 0xd3, 0x20, 0x10, 0x81, + 0xb0, 0x16, 0xf9, 0xfa, 0x30, 0xc2, 0xd2, 0x64, + 0xd0, 0x92, 0x00, 0xee, 0xd0, 0x54, 0x70, 0x41, + 0x30, 0x43, 0xed, 0xd7, 0xd2, 0x6c, 0x72, 0x49, + 0xc0, 0x89, 0xb0, 0xbf, 0x10, 0x9f, 0x22, 0x42, + 0x04, 0x31, 0xd0, 0x10, 0xc0, 0x42, 0x30, 0x49, + 0xe5, 0xde, 0x10, 0x03, 0xc1, 0x0c, 0xc1, 0x83, + 0xb1, 0xbe, 0x01, 0x46, 0x00, 0x06, 0xa0, 0x3d, + 0xa0, 0x3c, 0x60, 0x06, 0x00, 0xc6, 0xb1, 0xbc, + 0xb1, 0x01, 0xed, 0xe1, 0xc1, 0x0c, 0x21, 0x85, + 0x01, 0x46, 0x00, 0x06, 0xa0, 0x3d, 0xa0, 0x3c, + 0x60, 0x06, 0x00, 0xc6, 0xb1, 0xbc, 0xb1, 0x01, + 0xed, 0xec, 0x02, 0xe4, 0xd0, 0x00, 0x20, 0xc0, + 0xb2, 0x41, 0xed, 0xd8, 0x15, 0xa3, 0xfa, 0x00, + 0xbc, 0x10, 0x0c, 0x1e, 0xfa, 0x00, 0xbc, 0x10, + 0xd0, 0x04, 0x70, 0x00, 0x10, 0x20, 0xfa, 0x00, + 0x00, 0x27, 0xd0, 0x10, 0xd0, 0x40, 0x60, 0x40, + 0x00, 0x26, 0xd0, 0x14, 0x60, 0x40, 0xb0, 0x28, + 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x01, 0x7a, + 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, + 0x00, 0x28, 0xd1, 0xb0, 0x70, 0x06, 0xd0, 0x81, + 0x60, 0x86, 0x10, 0x20, 0xe9, 0xab, 0xb0, 0x3f, + 0x60, 0x06, 0x00, 0xec, 0xd1, 0x84, 0x70, 0x46, + 0xb1, 0x84, 0x70, 0x86, 0x30, 0x42, 0xe9, 0xab, + 0x70, 0x42, 0xd0, 0x35, 0x30, 0x40, 0xf9, 0xab, + 0x00, 0x63, 0xd0, 0x3f, 0xb0, 0xbc, 0x40, 0x80, + 0x70, 0xc2, 0x10, 0xe3, 0xe5, 0xab, 0xb0, 0xbc, + 0x40, 0x80, 0x60, 0x86, 0x00, 0x28, 0xd0, 0x24, + 0x70, 0x40, 0x00, 0x22, 0xd0, 0x80, 0x50, 0x42, + 0x60, 0x40, 0x00, 0x64, 0xd0, 0x60, 0xd0, 0x90, + 0x60, 0x81, 0x00, 0xed, 0xd1, 0x88, 0x70, 0x46, + 0x10, 0xe4, 0xe9, 0xa8, 0x00, 0x21, 0xd0, 0xe8, + 0xd0, 0x00, 0x60, 0x03, 0xd0, 0x81, 0x40, 0x42, + 0x60, 0x46, 0x02, 0x3c, 0xdc, 0x89, 0xe0, 0x46, + 0xd0, 0x82, 0x50, 0x42, 0x60, 0x46, 0x00, 0x23, + 0xd5, 0x3e, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, + 0x01, 0x46, 0xdf, 0x5c, 0x08, 0x20, 0xd1, 0x00, + 0xcf, 0x04, 0x11, 0x08, 0xa1, 0x0a, 0xa1, 0x1b, + 0x11, 0x1f, 0xa1, 0x27, 0xd2, 0x80, 0xb2, 0x81, + 0x90, 0x4d, 0xc0, 0x01, 0x10, 0x14, 0x00, 0x16, + 0xe9, 0x8d, 0x80, 0x33, 0x80, 0x3f, 0x92, 0x8b, + 0x00, 0x23, 0xd0, 0x3f, 0x42, 0x80, 0xe9, 0x8d, + 0x0f, 0xff, 0xdf, 0xff, 0x40, 0x01, 0xa0, 0x0d, + 0xe1, 0x94, 0xa1, 0x0a, 0x00, 0xea, 0xd0, 0x00, + 0xd0, 0x8e, 0x00, 0x06, 0x0f, 0x0b, 0x70, 0x80, + 0x80, 0x73, 0x80, 0x0a, 0xd0, 0x00, 0x06, 0x50, + 0xf9, 0x9a, 0xd0, 0x01, 0xd0, 0x44, 0x40, 0x70, + 0x20, 0x01, 0x15, 0x63, 0xf9, 0xa1, 0x80, 0x1b, + 0xe1, 0xa2, 0x80, 0x5b, 0xa0, 0x27, 0x01, 0x20, + 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, + 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, + 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x40, 0xa0, 0x69, + 0x80, 0x2b, 0x80, 0x07, 0x08, 0x20, 0xd0, 0x00, + 0xcf, 0x00, 0x02, 0x30, 0xd0, 0x00, 0xa0, 0x38, + 0x80, 0x3f, 0x01, 0xb2, 0xd2, 0x10, 0xa0, 0x37, + 0x80, 0x3f, 0x02, 0x30, 0xd0, 0x01, 0xa0, 0x38, + 0x00, 0x30, 0xd0, 0x10, 0xa0, 0x38, 0x80, 0x3f, + 0x00, 0xc6, 0x00, 0x28, 0xd1, 0x24, 0x70, 0x04, + 0xd0, 0x41, 0x50, 0x01, 0x60, 0x04, 0x00, 0x27, + 0xd0, 0x18, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, + 0x00, 0x26, 0xd0, 0x20, 0x70, 0x40, 0xb0, 0x7f, + 0x60, 0x40, 0x08, 0x20, 0xdf, 0x00, 0xd4, 0x00, + 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, 0xd3, 0x81, + 0x12, 0xa0, 0xed, 0xe3, 0xd0, 0x08, 0x0a, 0x09, + 0x00, 0x4d, 0xb0, 0x01, 0xed, 0xdf, 0x03, 0xbf, + 0xd4, 0x27, 0xe0, 0x46, 0x50, 0x00, 0x50, 0x00, + 0x02, 0x24, 0xd0, 0x00, 0xa0, 0x37, 0x00, 0x27, + 0xd3, 0xd0, 0x00, 0x26, 0xd0, 0x04, 0x73, 0xcf, + 0x13, 0xe1, 0xe9, 0x7b, 0xb0, 0x3c, 0xf2, 0x00, + 0x00, 0x26, 0xd0, 0x40, 0xd0, 0x00, 0x60, 0x01, + 0x00, 0x26, 0xd0, 0x14, 0xf2, 0x00, 0x00, 0x26, + 0xd0, 0x18, 0xf2, 0x00, 0x00, 0xee, 0xd0, 0x1c, + 0x71, 0x40, 0xd1, 0x24, 0x15, 0x63, 0xe9, 0x8d, + 0x11, 0x1f, 0xc7, 0x1a, 0xb7, 0x01, 0xd3, 0x81, + 0xc4, 0xd4, 0xf2, 0x04, 0x00, 0x26, 0xd0, 0x18, + 0x70, 0x40, 0xb0, 0x54, 0xfd, 0x9b, 0x00, 0xed, + 0xd0, 0x24, 0xd0, 0x44, 0x60, 0x40, 0x13, 0xe1, + 0xf9, 0xbc, 0x15, 0xa3, 0xf9, 0xa1, 0x0c, 0x10, + 0xe9, 0xb9, 0x11, 0x61, 0xe5, 0xb3, 0xed, 0xb9, + 0x15, 0xa3, 0xf9, 0xab, 0x00, 0x26, 0xd0, 0x14, + 0x70, 0x40, 0x10, 0x62, 0xf5, 0xb3, 0x15, 0x22, + 0xe5, 0xb3, 0xc0, 0x44, 0x30, 0x54, 0xe5, 0xb3, + 0x34, 0xd4, 0xf5, 0xb3, 0xe1, 0xbf, 0x03, 0xb4, + 0xd6, 0x29, 0x00, 0x26, 0xd0, 0x40, 0x60, 0x01, + 0xe1, 0xdb, 0x03, 0xb4, 0xd6, 0x29, 0xe0, 0x46, + 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x80, 0x07, + 0x09, 0x49, 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, + 0xd4, 0xc0, 0x00, 0x4d, 0xa0, 0x6c, 0xd3, 0x80, + 0xd0, 0xa1, 0x00, 0x88, 0xd0, 0xa9, 0x00, 0x4d, + 0x00, 0x50, 0xf9, 0xc9, 0x0c, 0x49, 0xd0, 0x61, + 0x00, 0x8d, 0x10, 0xa0, 0xe9, 0x90, 0x30, 0x42, + 0xf5, 0xd8, 0xd0, 0x61, 0x23, 0x81, 0xe1, 0xce, + 0x23, 0x82, 0x13, 0xa1, 0xf9, 0x90, 0xd0, 0x42, + 0x15, 0xa1, 0xf9, 0xdf, 0xb0, 0x7f, 0x00, 0x26, + 0xd0, 0x14, 0x70, 0x00, 0x30, 0x01, 0xf5, 0xe8, + 0x16, 0xe0, 0xe5, 0xe8, 0xb6, 0xc1, 0xbc, 0x20, + 0xc0, 0x44, 0x30, 0x5b, 0xfd, 0xb9, 0xc0, 0x44, + 0x30, 0x54, 0xe5, 0xb9, 0x15, 0x63, 0xf9, 0xf8, + 0x15, 0xa3, 0xf9, 0xf5, 0x03, 0x3c, 0xd8, 0x1c, + 0xe0, 0x46, 0x03, 0x39, 0xda, 0x17, 0xe0, 0x46, + 0x15, 0xa3, 0xf9, 0xfd, 0x03, 0x72, 0xde, 0x19, + 0xe0, 0x46, 0x03, 0x70, 0xd0, 0x17, 0xe0, 0x46, + 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x0f, 0xc5, + 0xdf, 0x00, 0x0c, 0x09, 0x05, 0x0d, 0x08, 0x20, + 0xdf, 0x00, 0x0f, 0xc5, 0x50, 0x00, 0x50, 0x00, + 0x00, 0xef, 0xd0, 0x14, 0x70, 0x40, 0x10, 0x60, + 0xe9, 0x45, 0xb0, 0x04, 0x70, 0x40, 0xb0, 0x41, + 0xed, 0x44, 0x00, 0xed, 0xd0, 0x24, 0xd0, 0x44, + 0x60, 0x40, 0x00, 0x64, 0xd0, 0x20, 0x70, 0x00, + 0x10, 0x30, 0xe9, 0x45, 0x00, 0x21, 0xd0, 0x28, + 0x60, 0x40, 0x00, 0x64, 0xd2, 0xc0, 0x70, 0x0b, + 0x00, 0x11, 0xe9, 0x6a, 0x08, 0x20, 0xd0, 0x4f, + 0x30, 0x40, 0xe9, 0x55, 0xb0, 0x4f, 0xf9, 0x6a, + 0x03, 0xef, 0xdf, 0xbf, 0xaf, 0xb8, 0xdf, 0x80, + 0x0f, 0x87, 0xd0, 0x18, 0x70, 0x00, 0x10, 0x20, + 0xed, 0x6c, 0xdf, 0x84, 0xd0, 0x40, 0x60, 0x7e, + 0x00, 0x27, 0xd0, 0x54, 0x70, 0x41, 0x10, 0x60, + 0x01, 0xa0, 0xd0, 0x40, 0xa0, 0x78, 0x80, 0x34, + 0x80, 0x3f, 0x01, 0x3c, 0xd2, 0x39, 0x00, 0x21, + 0xdf, 0x86, 0x0f, 0x87, 0xd0, 0x40, 0x60, 0x4b, + 0x03, 0xe6, 0xd0, 0x08, 0xe0, 0x36, 0x50, 0x00, + 0x00, 0x28, 0xd0, 0x24, 0x72, 0xc0, 0xd0, 0x40, + 0x60, 0x40, 0xd0, 0x0c, 0x52, 0xc0, 0xc0, 0x1c, + 0x30, 0x1d, 0xf5, 0x3c, 0x20, 0x1f, 0x30, 0x1e, + 0x90, 0x6d, 0x20, 0x01, 0x00, 0x22, 0xd0, 0x58, + 0x60, 0x01, 0x00, 0xe3, 0xd0, 0x48, 0x70, 0x41, + 0x30, 0x40, 0xf5, 0x47, 0xb2, 0xc8, 0x00, 0xe3, + 0xd0, 0x4c, 0x70, 0x41, 0x30, 0x40, 0xfd, 0x4d, + 0xb2, 0xc4, 0x00, 0x28, 0xd0, 0x20, 0x70, 0x00, + 0x42, 0xc0, 0xa2, 0xc5, 0x12, 0xe0, 0xe9, 0x55, + 0x80, 0x40, 0x80, 0x34, 0x80, 0x3f, 0xcf, 0x95, + 0x82, 0x34, 0x80, 0x3f, 0x03, 0xe8, 0xd0, 0x00, + 0x1f, 0xa3, 0xe9, 0x60, 0x03, 0xea, 0xd0, 0x00, + 0x00, 0x27, 0xd0, 0x4c, 0x7f, 0x81, 0x00, 0x27, + 0xd0, 0x54, 0x70, 0x41, 0x10, 0x60, 0x03, 0xa0, + 0xd0, 0x40, 0xa0, 0x78, 0xe0, 0x3c, 0x50, 0x00, + 0xc0, 0x84, 0x10, 0x8c, 0x10, 0x92, 0xd0, 0x41, + 0x30, 0x4d, 0x40, 0x43, 0x10, 0x43, 0x20, 0x81, + 0xd1, 0x8f, 0x41, 0x82, 0x10, 0x9c, 0x20, 0x9b, + 0xc1, 0xc2, 0x10, 0x82, 0x20, 0x87, 0xc0, 0x42, + 0x10, 0x43, 0x20, 0x81, 0x10, 0x88, 0x22, 0x02, + 0x10, 0x97, 0x01, 0xd0, 0xe9, 0x48, 0xb0, 0x96, + 0x10, 0x88, 0x22, 0x82, 0xc0, 0x5c, 0x10, 0x48, + 0xc0, 0x84, 0x10, 0x91, 0x10, 0x86, 0x20, 0x42, + 0x41, 0x0d, 0x11, 0x02, 0x20, 0x44, 0x22, 0x01, + 0x22, 0x81, 0x02, 0xe4, 0xd2, 0x40, 0xc2, 0xca, + 0xb2, 0xe0, 0x01, 0xd0, 0xe9, 0x5e, 0xc2, 0xca, + 0x22, 0xc9, 0xb2, 0xa0, 0x22, 0x48, 0xd0, 0x78, + 0x03, 0x50, 0xf9, 0x69, 0xd0, 0x7c, 0x01, 0x9d, + 0xf9, 0x69, 0xc2, 0x48, 0xb2, 0x60, 0xc2, 0xca, + 0xb2, 0xf0, 0x11, 0x82, 0x41, 0x81, 0x22, 0x06, + 0x11, 0x9f, 0x41, 0x81, 0x22, 0x86, 0x0f, 0xc5, + 0xc0, 0x84, 0x10, 0x8c, 0x10, 0x92, 0xd1, 0x8f, + 0x41, 0x82, 0x10, 0x9c, 0xc1, 0xdb, 0x11, 0xc1, + 0x21, 0xc3, 0x20, 0x87, 0xc1, 0xc2, 0x10, 0x82, + 0x20, 0x87, 0xc0, 0x42, 0x10, 0x43, 0x20, 0x81, + 0x10, 0x88, 0x22, 0x02, 0x10, 0x97, 0x01, 0xd0, + 0xe9, 0x46, 0xb0, 0x96, 0x10, 0x88, 0x22, 0x82, + 0xc0, 0x5c, 0x10, 0x48, 0xc0, 0x84, 0x10, 0x91, + 0x10, 0x86, 0x20, 0x42, 0xd0, 0x81, 0x41, 0x02, + 0x11, 0x02, 0x20, 0x44, 0x22, 0x01, 0x22, 0x81, + 0x02, 0xe4, 0xd2, 0x40, 0xc2, 0xca, 0xb2, 0xe0, + 0x01, 0xd0, 0xe9, 0x5d, 0xc2, 0xca, 0x22, 0xc9, + 0xb2, 0xa0, 0x22, 0x48, 0x11, 0x9f, 0x11, 0x83, + 0x22, 0x06, 0x11, 0x9c, 0x11, 0x83, 0x22, 0x86, + 0x0f, 0xc5, 0xd0, 0x41, 0x40, 0x44, 0x20, 0x55, + 0x10, 0x62, 0xf9, 0x6f, 0x01, 0xb5, 0xd4, 0x00, + 0xc2, 0x9f, 0xc2, 0x1f, 0x22, 0x80, 0xe1, 0x30, + 0x0f, 0x11, 0xf9, 0x51, 0x90, 0x38, 0x80, 0x3f, + 0x00, 0x1b, 0xf9, 0x51, 0x00, 0x27, 0xd0, 0x04, + 0x70, 0x40, 0x30, 0x71, 0xf9, 0x51, 0xb0, 0x3c, + 0x70, 0x40, 0x30, 0x5d, 0xf9, 0x51, 0xb0, 0x08, + 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x10, 0x63, + 0xe5, 0x5d, 0x02, 0x20, 0xd0, 0x01, 0xa0, 0x37, + 0x00, 0x26, 0xd0, 0x24, 0x70, 0x40, 0xb0, 0x7f, + 0x60, 0x40, 0xb0, 0x08, 0x70, 0x40, 0xb0, 0x41, + 0x60, 0x40, 0x00, 0x26, 0xd0, 0x30, 0x70, 0x40, + 0xb0, 0x7f, 0x60, 0x40, 0xb0, 0x30, 0xd0, 0x40, + 0x60, 0x40, 0xb0, 0x3c, 0x6c, 0x40, 0xb0, 0x3c, + 0x67, 0x40, 0x00, 0x33, 0xdf, 0xb0, 0xe0, 0x36, + 0x00, 0x26, 0xd0, 0x1c, 0x70, 0x40, 0xb0, 0x7f, + 0x60, 0x40, 0xb0, 0x3c, 0x70, 0x40, 0xb0, 0x41, + 0x60, 0x40, 0x08, 0x20, 0xdf, 0x00, 0x80, 0x35, + 0xc0, 0x3c, 0x10, 0x08, 0xa0, 0x0a, 0xa0, 0x27, + 0xa0, 0x1b, 0xdf, 0x5c, 0x01, 0xa0, 0xd0, 0x00, + 0xa0, 0x38, 0x80, 0x3f, 0x80, 0x34, 0x80, 0x3f, + 0x03, 0xbb, 0xd8, 0x1e, 0xcf, 0x95, 0x82, 0x34, + 0x80, 0x3f, 0x03, 0xe8, 0xd0, 0x00, 0x1f, 0xa3, + 0xe9, 0x55, 0x1f, 0xa0, 0xe9, 0x55, 0x03, 0xea, + 0xd0, 0x00, 0x00, 0x21, 0xdf, 0x86, 0xe0, 0x3c, + 0x89, 0x78, 0x89, 0x37, 0x00, 0xee, 0xd0, 0x14, + 0x76, 0x00, 0xd0, 0x30, 0x76, 0x40, 0x26, 0x58, + 0xd6, 0xd9, 0x00, 0xee, 0xd0, 0x20, 0x75, 0x40, + 0xd0, 0x1c, 0x71, 0x40, 0xd0, 0x20, 0x71, 0x00, + 0xd0, 0x24, 0x70, 0x80, 0xc4, 0x02, 0xd0, 0x28, + 0x70, 0xc0, 0x00, 0x21, 0xd0, 0x10, 0x72, 0x00, + 0x93, 0x90, 0xd4, 0x81, 0x13, 0x96, 0x43, 0x92, + 0x34, 0x8e, 0x00, 0x22, 0xd1, 0xa4, 0x71, 0x86, + 0xde, 0x40, 0x7e, 0x79, 0xd0, 0x18, 0x70, 0x40, + 0xb0, 0x41, 0xf5, 0x58, 0xd3, 0x42, 0x50, 0x4d, + 0x60, 0x40, 0x10, 0x60, 0xe5, 0x62, 0xd0, 0x54, + 0x70, 0x01, 0xb0, 0x3c, 0x60, 0x01, 0x04, 0x2d, + 0xd0, 0x30, 0xe0, 0x36, 0x00, 0x22, 0xd0, 0x60, + 0x71, 0xc1, 0xd0, 0x4f, 0x41, 0xc1, 0x04, 0x20, + 0xd0, 0x28, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, + 0x04, 0x22, 0xd0, 0x18, 0xd3, 0x44, 0x72, 0x8d, + 0x12, 0xa0, 0xe8, 0x36, 0xc0, 0x47, 0x10, 0x5d, + 0x30, 0x4e, 0xf8, 0x36, 0xb2, 0x3e, 0x60, 0x4d, + 0x00, 0xed, 0xd0, 0x48, 0x70, 0x01, 0xde, 0x45, + 0x50, 0x39, 0x00, 0x1b, 0xf9, 0x44, 0xb0, 0x01, + 0x00, 0x1c, 0xf9, 0x47, 0xb0, 0x04, 0x60, 0x01, + 0xd0, 0x40, 0x62, 0x81, 0xce, 0x4a, 0xd0, 0x43, + 0x41, 0xc1, 0xd0, 0x58, 0x61, 0xc1, 0x90, 0x43, + 0x00, 0xe0, 0xd0, 0x28, 0x70, 0x00, 0x10, 0x1f, + 0x20, 0x40, 0xb1, 0xc1, 0xf5, 0x54, 0x00, 0x21, + 0xd0, 0x08, 0x60, 0x40, 0x00, 0xe6, 0xd0, 0x40, + 0x70, 0x41, 0xd2, 0x94, 0x60, 0x4a, 0x04, 0x2c, + 0xd0, 0x08, 0x01, 0x90, 0xf8, 0x36, 0x04, 0x2d, + 0xd0, 0x30, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, + 0xc0, 0x47, 0x10, 0x5d, 0x30, 0x4e, 0xf9, 0x41, + 0x90, 0x43, 0x00, 0xe0, 0xd0, 0x28, 0x70, 0x00, + 0x20, 0x40, 0x00, 0x21, 0xd0, 0x08, 0x60, 0x40, + 0x00, 0x26, 0xd0, 0x74, 0x70, 0x01, 0xb0, 0x3f, + 0x60, 0x01, 0x00, 0xed, 0xd0, 0x48, 0x70, 0x41, + 0x00, 0x5e, 0xf9, 0x4b, 0x00, 0x21, 0xd0, 0x00, + 0x73, 0x80, 0xd4, 0x81, 0x34, 0x8e, 0x00, 0x34, + 0xd3, 0x70, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, + 0xd1, 0x88, 0xd1, 0xc8, 0x01, 0x1b, 0xe9, 0x39, + 0x11, 0x9f, 0x11, 0xdf, 0xd4, 0x80, 0xd3, 0x81, + 0xe1, 0x43, 0x00, 0xed, 0xd0, 0x08, 0x70, 0x00, + 0x00, 0x10, 0xf9, 0x37, 0x0c, 0x1f, 0xf9, 0x36, + 0x13, 0xa1, 0xe9, 0x43, 0xbe, 0x7c, 0x00, 0x69, + 0xd2, 0x54, 0x12, 0x48, 0xc0, 0x39, 0x30, 0x18, + 0xe5, 0x4b, 0xd2, 0x70, 0x72, 0x49, 0x22, 0x79, + 0x00, 0x21, 0xd0, 0x00, 0x63, 0x80, 0x04, 0x24, + 0xd0, 0x38, 0x02, 0x10, 0xe9, 0x56, 0xd0, 0x41, + 0x51, 0x41, 0xe0, 0x36, 0x15, 0x61, 0xe8, 0x36, + 0xd5, 0x80, 0xd3, 0x00, 0xd3, 0x40, 0x04, 0x28, + 0xd0, 0x18, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, + 0x00, 0x21, 0xd0, 0x18, 0x73, 0x00, 0xb0, 0x04, + 0x73, 0x80, 0xd2, 0x80, 0xb0, 0x38, 0x72, 0xc0, + 0x31, 0x0d, 0xc0, 0x0e, 0x10, 0x0b, 0x10, 0x20, + 0xe9, 0x42, 0xf5, 0x3f, 0x22, 0x8d, 0x10, 0x01, + 0x13, 0x5f, 0xe1, 0x3b, 0x33, 0x8b, 0x15, 0x61, + 0xf9, 0x49, 0x00, 0x21, 0xd0, 0x64, 0x70, 0x41, + 0x33, 0x81, 0x03, 0xd0, 0xe9, 0x4c, 0x20, 0x0b, + 0x13, 0xdf, 0x12, 0xc1, 0x13, 0xe0, 0xf9, 0x49, + 0x10, 0x03, 0xc0, 0x50, 0x10, 0x4b, 0x13, 0x0b, + 0x23, 0x00, 0x13, 0x20, 0xe9, 0x5c, 0xf5, 0x59, + 0x22, 0x81, 0x13, 0x01, 0x10, 0x5f, 0xe1, 0x55, + 0x12, 0x99, 0x12, 0x87, 0x21, 0x0a, 0x00, 0xa0, + 0xd2, 0x80, 0xc3, 0x0a, 0x03, 0x90, 0xe9, 0x66, + 0x22, 0x82, 0x23, 0x03, 0x10, 0x81, 0x10, 0xc1, + 0x13, 0x9f, 0x13, 0xa0, 0xed, 0x62, 0xc0, 0x8a, + 0xc0, 0xcc, 0x04, 0x26, 0xd0, 0x38, 0xe0, 0x36, + 0x15, 0x61, 0xf9, 0x3d, 0x07, 0x32, 0xd0, 0x00, + 0x30, 0x03, 0xed, 0x3d, 0xc0, 0x03, 0x10, 0x1d, + 0x30, 0xc0, 0xc0, 0x02, 0x10, 0x1d, 0x30, 0x80, + 0xe1, 0x32, 0x10, 0x94, 0x10, 0xd4, 0x00, 0x21, + 0xd0, 0x20, 0x73, 0x00, 0xc5, 0x8c, 0xd3, 0x4e, + 0x01, 0x1b, 0xe9, 0x48, 0x13, 0x1f, 0xd3, 0x4f, + 0x43, 0x4c, 0x13, 0x1c, 0xc0, 0x0c, 0x10, 0x03, + 0x20, 0x0c, 0xc0, 0x40, 0x10, 0x42, 0x20, 0x40, + 0x10, 0x46, 0x20, 0x4d, 0x10, 0x42, 0x2e, 0x41, + 0x10, 0x5c, 0x10, 0x43, 0x00, 0x59, 0xe9, 0x5b, + 0x01, 0x69, 0xd0, 0x20, 0x30, 0x40, 0x22, 0x41, + 0x04, 0x28, 0xd0, 0x18, 0xe0, 0x36, 0x50, 0x00, + 0x2c, 0x14, 0xd0, 0x34, 0x63, 0x00, 0xd0, 0x38, + 0x72, 0xc0, 0xc0, 0x51, 0x10, 0x5c, 0x30, 0x4b, + 0x10, 0x44, 0xd4, 0xc0, 0xd5, 0x00, 0xc0, 0x18, + 0x30, 0x39, 0xed, 0x5f, 0xd4, 0xd0, 0xc5, 0x01, + 0xd0, 0x18, 0x70, 0x00, 0x0c, 0x1f, 0xe9, 0x48, + 0x10, 0x20, 0xfd, 0x48, 0xd4, 0xc0, 0xd5, 0x00, + 0x10, 0x22, 0xe5, 0x4e, 0xd4, 0xc0, 0xbc, 0x30, + 0xd5, 0x00, 0xb5, 0x10, 0xb0, 0x3f, 0xf9, 0x52, + 0x3c, 0x01, 0x3c, 0x01, 0x02, 0x1f, 0xe9, 0x5f, + 0x00, 0xa8, 0xd3, 0xc0, 0xd3, 0xa4, 0x00, 0xaa, + 0xd0, 0x10, 0x70, 0x4f, 0xb3, 0xfc, 0x60, 0x40, + 0xb0, 0x3c, 0xb3, 0x81, 0xed, 0x59, 0x00, 0x21, + 0xd0, 0x28, 0x70, 0x00, 0x10, 0x20, 0xf9, 0x69, + 0x02, 0x1f, 0xf9, 0x6a, 0x90, 0x10, 0x00, 0x1e, + 0xe9, 0x6a, 0xb1, 0x7c, 0x04, 0x2a, 0xd0, 0x18, + 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, 0x50, 0x00, + 0x01, 0x5e, 0xf9, 0x35, 0x01, 0x50, 0xe9, 0x35, + 0xb1, 0x78, 0xd2, 0x00, 0x01, 0x5c, 0xf9, 0x5f, + 0xc0, 0x18, 0x30, 0x39, 0xed, 0x5f, 0x11, 0x9f, + 0xce, 0x58, 0xc2, 0x59, 0x00, 0xaa, 0xd2, 0x10, + 0x14, 0x82, 0x22, 0x12, 0xc0, 0x0c, 0x10, 0x1f, + 0x10, 0x03, 0x22, 0x00, 0x70, 0x48, 0x03, 0x10, + 0xe9, 0x4c, 0xb2, 0x38, 0xbe, 0x60, 0xb2, 0x60, + 0x2e, 0x41, 0x10, 0x5f, 0x00, 0x59, 0xe9, 0x53, + 0x01, 0x69, 0xd0, 0x3c, 0x30, 0x40, 0x22, 0x41, + 0x13, 0x41, 0x2e, 0x4d, 0x13, 0x5d, 0x13, 0x43, + 0x22, 0x4d, 0x14, 0xe0, 0xe9, 0x5f, 0x33, 0x0b, + 0x13, 0x04, 0x2c, 0x0c, 0x35, 0x0c, 0xc3, 0x46, + 0xc3, 0x87, 0x04, 0x62, 0xd0, 0x10, 0x15, 0x62, + 0xfc, 0x36, 0x04, 0x60, 0xd0, 0x10, 0xe0, 0x36, + 0x00, 0x22, 0xd0, 0x74, 0x74, 0x01, 0xb0, 0x7c, + 0x74, 0x41, 0xb0, 0x7c, 0x71, 0x41, 0xd1, 0x18, + 0xc0, 0x10, 0x10, 0x1c, 0xb0, 0x16, 0xf9, 0x45, + 0x00, 0x24, 0xd0, 0x20, 0x30, 0x11, 0xf9, 0x45, + 0xb1, 0x70, 0x01, 0x50, 0xf9, 0x45, 0xb1, 0x20, + 0x14, 0x41, 0xc0, 0x90, 0x00, 0x2b, 0xd0, 0xd0, + 0x01, 0x50, 0xe9, 0x4b, 0xc0, 0xd0, 0x00, 0x35, + 0xdc, 0x00, 0x20, 0x11, 0x10, 0x1f, 0xa0, 0x1c, + 0x00, 0x21, 0xd0, 0x2c, 0x70, 0x00, 0x10, 0x05, + 0x51, 0x40, 0xd0, 0x1c, 0x61, 0x40, 0xd0, 0x20, + 0x61, 0x00, 0xd0, 0x24, 0x60, 0x80, 0xd0, 0x28, + 0x60, 0xc0, 0x04, 0x2d, 0xd0, 0x30, 0x00, 0x22, + 0xd0, 0x64, 0xb1, 0x81, 0x61, 0x81, 0xe0, 0x36, + 0x90, 0x50, 0xd0, 0x3c, 0x10, 0x41, 0x60, 0x40, + 0x15, 0x62, 0xfd, 0x3d, 0xc0, 0x10, 0x10, 0x1e, + 0x10, 0x07, 0x21, 0x00, 0x10, 0x16, 0x34, 0x00, + 0xc0, 0x90, 0xd3, 0x40, 0x00, 0x24, 0xd3, 0xc0, + 0x04, 0x23, 0xd0, 0x18, 0x01, 0x9f, 0xe8, 0x36, + 0xd0, 0x54, 0x70, 0x41, 0x73, 0x41, 0x04, 0x2e, + 0xd0, 0x28, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, + 0x00, 0xef, 0xd3, 0x30, 0x73, 0x0c, 0xd0, 0x0c, + 0x70, 0x00, 0xc0, 0x40, 0x13, 0x24, 0xf5, 0x42, + 0x13, 0x22, 0xe9, 0x41, 0xe5, 0x43, 0xd3, 0x00, + 0x10, 0x22, 0xf9, 0x41, 0xd0, 0x01, 0xd0, 0x43, + 0xd3, 0x01, 0x21, 0x00, 0xd3, 0x40, 0x03, 0x10, + 0xf9, 0x47, 0xd3, 0x40, 0xe1, 0x61, 0x00, 0x23, + 0xd0, 0x00, 0x10, 0x61, 0xe9, 0x50, 0xb0, 0x33, + 0x10, 0x63, 0xe9, 0x50, 0x00, 0x22, 0xd0, 0x1a, + 0xc3, 0xc0, 0xd2, 0xc0, 0x00, 0x10, 0xe9, 0x55, + 0x22, 0xd0, 0x10, 0x1f, 0x14, 0x01, 0x10, 0x20, + 0xed, 0x52, 0x14, 0x18, 0x12, 0xd8, 0xc0, 0x8b, + 0x32, 0xd0, 0x12, 0xc3, 0x33, 0x4b, 0x13, 0x47, + 0x21, 0x0d, 0x04, 0x23, 0xd0, 0x18, 0xe0, 0x36, + 0x00, 0x24, 0xd0, 0x30, 0xd0, 0x40, 0x60, 0x40, + 0xd3, 0xc7, 0x43, 0xc4, 0x31, 0x0f, 0xd5, 0xd4, + 0x25, 0xcf, 0x15, 0xc4, 0x10, 0xdf, 0xc2, 0xc6, + 0xc3, 0x07, 0x11, 0x81, 0xb1, 0x3b, 0x15, 0x64, + 0xe9, 0x47, 0x10, 0xdf, 0x12, 0xc1, 0x11, 0x81, + 0x11, 0xc1, 0xb1, 0x3f, 0xb5, 0xf8, 0x90, 0x10, + 0x00, 0x16, 0xf9, 0x5e, 0xb5, 0xfc, 0xd0, 0x20, + 0x40, 0x39, 0x2e, 0x4b, 0x22, 0x4c, 0x12, 0x20, + 0xe9, 0x59, 0x20, 0x39, 0x00, 0x1b, 0xe9, 0x59, + 0x2c, 0x13, 0x35, 0x13, 0x0e, 0x5a, 0xf9, 0x59, + 0xb2, 0x38, 0x02, 0xe3, 0xd0, 0x00, 0x0e, 0x5a, + 0xe9, 0x5e, 0x2e, 0x40, 0x01, 0xee, 0xd2, 0x80, + 0x42, 0x84, 0xc0, 0x03, 0x30, 0x02, 0xf5, 0x6b, + 0x31, 0x0a, 0x12, 0x98, 0x20, 0x03, 0xf5, 0x69, + 0x12, 0x9f, 0x12, 0x87, 0x51, 0x0a, 0x00, 0x34, + 0xd4, 0xf0, 0xe0, 0x36, 0x50, 0x00, 0x50, 0x00, + 0xd3, 0xc7, 0x43, 0xc4, 0x15, 0x61, 0xf9, 0x48, + 0x10, 0xc1, 0xd5, 0xe0, 0xd1, 0x80, 0xd1, 0xc0, + 0x31, 0x0f, 0x13, 0xe1, 0xe9, 0x3c, 0xd3, 0xc0, + 0x00, 0x24, 0xd0, 0x30, 0x63, 0xc0, 0x25, 0xcf, + 0x15, 0xc2, 0xd0, 0x03, 0x40, 0x16, 0x25, 0xc0, + 0x15, 0xc2, 0x15, 0x81, 0x35, 0x91, 0xe1, 0x5c, + 0x00, 0x24, 0xd0, 0x30, 0x63, 0xc0, 0x01, 0x50, + 0xe9, 0x54, 0x15, 0xa0, 0xf9, 0x55, 0x00, 0x24, + 0xd0, 0x34, 0x70, 0x00, 0x10, 0x20, 0xe9, 0x55, + 0xd3, 0xc0, 0x31, 0x0f, 0xd5, 0xfc, 0x25, 0xcf, + 0x15, 0xc3, 0x14, 0xa0, 0xe9, 0x5c, 0xb5, 0xfc, + 0x00, 0x34, 0xd4, 0xf0, 0xe0, 0x36, 0x50, 0x00, + 0xc4, 0x91, 0x34, 0x96, 0xed, 0x34, 0xd4, 0x80, + 0x14, 0x84, 0xb3, 0xc1, 0xe5, 0x41, 0xc0, 0x52, + 0x10, 0x5e, 0x34, 0x81, 0xb3, 0xc1, 0xe5, 0x41, + 0xc0, 0x52, 0x10, 0x5c, 0x24, 0x81, 0xb3, 0xc1, + 0xe5, 0x37, 0x02, 0xe8, 0xd0, 0x00, 0xb4, 0xb0, + 0x14, 0x9b, 0x00, 0x24, 0xd0, 0x60, 0x30, 0x52, + 0xed, 0x4a, 0x24, 0x81, 0x20, 0x12, 0xa0, 0x1c, + 0x10, 0x8a, 0x50, 0x83, 0xa0, 0x96, 0xa1, 0x50, + 0xa1, 0x11, 0xc0, 0x52, 0xd4, 0x84, 0x10, 0x6c, + 0xed, 0x56, 0xd4, 0x81, 0xd1, 0x00, 0xb1, 0x17, + 0x00, 0x23, 0xd1, 0x40, 0xc2, 0xb9, 0x22, 0x86, + 0x12, 0x20, 0xf9, 0x66, 0x02, 0xe3, 0xd0, 0x40, + 0x02, 0x9a, 0xe9, 0x63, 0x22, 0x81, 0x02, 0x5a, + 0xe9, 0x66, 0x22, 0x41, 0x75, 0xd7, 0xc3, 0xd7, + 0xd0, 0xd7, 0x00, 0x21, 0xd0, 0xb6, 0x8b, 0x38, + 0x00, 0x33, 0xdd, 0x08, 0xe0, 0x36, 0x50, 0x00, + 0xd0, 0x7c, 0x60, 0x01, 0xae, 0x52, 0xd0, 0x60, + 0x40, 0x79, 0x00, 0x13, 0xe8, 0xc9, 0xa2, 0x94, + 0x22, 0x86, 0x13, 0xe0, 0xe4, 0xd0, 0x13, 0xc1, + 0x15, 0x62, 0xfc, 0xd1, 0x13, 0xc1, 0xe0, 0xd1, + 0xc3, 0xd7, 0x03, 0xd9, 0xe8, 0xd4, 0x22, 0x8d, + 0x15, 0x62, 0xfc, 0xda, 0x03, 0xda, 0xe8, 0xda, + 0x22, 0x8d, 0x22, 0x8d, 0xce, 0x4a, 0x22, 0x86, + 0x00, 0x14, 0xe8, 0xe0, 0xa2, 0x53, 0x22, 0x47, + 0x03, 0xd1, 0xe8, 0xe8, 0x22, 0x4e, 0x15, 0x62, + 0xfc, 0xe8, 0x03, 0xd2, 0xe8, 0xe8, 0x22, 0x4e, + 0x12, 0x20, 0xe9, 0x09, 0x20, 0x79, 0x00, 0x5b, + 0xe8, 0xf4, 0x15, 0x20, 0xfc, 0xf1, 0x2c, 0x13, + 0x35, 0x13, 0x0e, 0x5b, 0xe8, 0xf4, 0xb2, 0x38, + 0x02, 0x9a, 0xe8, 0xfb, 0x70, 0x08, 0xd0, 0x7c, + 0x42, 0x81, 0x22, 0x98, 0x22, 0x80, 0x02, 0x5a, + 0xe9, 0x11, 0x70, 0x08, 0xd0, 0x78, 0x42, 0x41, + 0x22, 0x59, 0x10, 0x1f, 0x22, 0x40, 0x00, 0x19, + 0xe9, 0x11, 0x01, 0x69, 0xd0, 0x7c, 0x32, 0x41, + 0xe1, 0x11, 0x02, 0xe3, 0xd0, 0x40, 0x02, 0x9a, + 0xe9, 0x0e, 0x22, 0x81, 0x02, 0x5a, 0xe9, 0x11, + 0x22, 0x41, 0x0e, 0x5a, 0xe9, 0x15, 0xce, 0x4a, + 0x3e, 0x46, 0x0f, 0x87, 0xdd, 0x48, 0xe1, 0x19, + 0xdd, 0x40, 0xdc, 0xc8, 0xdd, 0x3c, 0x7d, 0x34, + 0x1d, 0x19, 0x3d, 0x35, 0x4d, 0x33, 0x4c, 0xec, + 0x3d, 0x33, 0xf9, 0x17, 0x0f, 0xc5, 0x50, 0x00, + 0xd0, 0x39, 0xd0, 0x35, 0xd0, 0x1d, 0xd0, 0x2d, + 0xd0, 0x3f, 0xd0, 0x2e, 0xd0, 0x3c, 0xd0, 0x37, + 0xd0, 0x33, 0xd0, 0x19, 0xd0, 0x33, 0xd0, 0x2e, + 0xd0, 0x3d, 0xd0, 0x3e, 0xd0, 0x27, 0xd0, 0x3e, + 0xd0, 0x3a, 0xd0, 0x2f, 0xd0, 0x32, 0x00, 0x00, + 0x00, 0x00, 0x46, 0x44, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x50, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x02, 0xd0, 0x00, 0x00, 0x02, 0xd0, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x05, 0x46, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x90, 0x85, + 0x00, 0x00, 0xa6, 0xee, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0xd0, 0x00, 0x00, 0x01, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0xa0, + 0x00, 0x08, 0x08, 0x28, 0x00, 0x08, 0x88, 0x68, + 0x00, 0x08, 0xa0, 0x98, 0x00, 0x08, 0x88, 0x68, + 0x00, 0x08, 0x28, 0x98, 0x00, 0x08, 0xac, 0xf4, + 0x00, 0x08, 0xb8, 0x7c, 0x00, 0x02, 0x02, 0x88, + 0x00, 0x02, 0x08, 0x22, 0x00, 0x02, 0x88, 0xaa, + 0x00, 0x02, 0x22, 0xaa, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x24, + 0x00, 0x04, 0x04, 0x24, 0x00, 0x04, 0x28, 0x6c, + 0x00, 0x04, 0x28, 0x6c, 0x00, 0x01, 0x10, 0x44, + 0x00, 0x01, 0x20, 0x44, 0x00, 0x01, 0x11, 0xaa, + 0x00, 0x01, 0x88, 0x55, 0x00, 0x01, 0x44, 0xaa, + 0x00, 0x01, 0x44, 0x55, 0x00, 0x20, 0x80, 0xa0, + 0x00, 0x20, 0x80, 0xc0, 0x00, 0x20, 0x20, 0xa0, + 0x00, 0x20, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, + 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x13, 0x16, + 0x1a, 0x1b, 0x1d, 0x22, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x13, 0x16, + 0x1a, 0x1b, 0x1d, 0x22, 0x10, 0x10, 0x16, 0x18, + 0x1b, 0x1d, 0x22, 0x25, 0x13, 0x16, 0x1a, 0x1b, + 0x1d, 0x22, 0x22, 0x26, 0x16, 0x16, 0x1a, 0x1b, + 0x1d, 0x22, 0x25, 0x28, 0x16, 0x1a, 0x1b, 0x1d, + 0x20, 0x23, 0x28, 0x30, 0x1a, 0x1b, 0x1d, 0x20, + 0x23, 0x28, 0x30, 0x3a, 0x1a, 0x1b, 0x1d, 0x22, + 0x26, 0x2e, 0x38, 0x45, 0x1b, 0x1d, 0x23, 0x26, + 0x2e, 0x38, 0x45, 0x53, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xd6, 0x00, + 0x00, 0x1b, 0x08, 0x00, 0x00, 0x1f, 0xde, 0x00, + 0x00, 0x00, 0x50, 0x00, 0x00, 0x08, 0x39, 0x00, + 0x00, 0x10, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x05, 0x28, 0x20, 0x01, 0x00, 0x00, 0x01, 0xe0, + 0x71, 0x01, 0x00, 0x68, 0xe0, 0x7f, 0xb0, 0x7f, + 0x60, 0x40, 0xe0, 0x1d, 0x90, 0x10, 0xb4, 0x81, + 0xe8, 0xc0, 0xe0, 0xc2, 0x90, 0x18, 0x00, 0x8a, + 0x70, 0xc0, 0x0f, 0x87, 0xe3, 0xe8, 0xc0, 0x00, + 0x70, 0x40, 0xe0, 0x01, 0xe0, 0x86, 0x00, 0x26, + 0xd0, 0x28, 0xe0, 0x0e, 0xd0, 0x0e, 0x0f, 0x0b, + 0x70, 0x1d, 0xe0, 0x67, 0x0f, 0x87, 0x0f, 0x87, + 0x0f, 0x87, 0x0f, 0x87, 0x0f, 0x87, 0x02, 0x20, + 0xd0, 0x01, 0xe0, 0x25, 0x0f, 0x45, 0x6f, 0x81, + 0xdf, 0xa6, 0xe0, 0x36, 0xe1, 0x30, 0xa0, 0x37, + 0xc0, 0x00, 0xe0, 0x26, 0x00, 0x33, 0xde, 0xc8, + 0xe0, 0x32, 0x0f, 0xc5, 0x0f, 0x87, 0x00, 0x27, + 0xd0, 0x4c, 0xe0, 0x21, 0x00, 0x33, 0xdf, 0x28, + 0x00, 0x27, 0xd0, 0x56, 0x60, 0x01, 0xe0, 0x2d, + 0x03, 0xa0, 0xd0, 0x41, 0xa0, 0x78, 0x00, 0x60, + 0xd0, 0x41, 0xa0, 0x77, 0x00, 0x22, 0xd0, 0x58, + 0xa0, 0x76, 0x00, 0x21, 0xd0, 0x7c, 0x00, 0x4a, + 0xd0, 0x72, 0x70, 0x40, 0x00, 0x06, 0x0f, 0x87, + 0x00, 0x22, 0xdc, 0xf8, 0xf0, 0x4a, 0xe1, 0x70, + 0x07, 0xef, 0xdd, 0xbf, 0x4f, 0x36, 0x1d, 0x99, + 0x4d, 0x80, 0x10, 0x18, 0xdd, 0x50, 0x60, 0x35, + 0xdd, 0x72, 0xdd, 0x10, 0x3d, 0xb4, 0xec, 0x57, + 0x2d, 0x36, 0x1d, 0x03, 0xbd, 0x04, 0xe4, 0x2b, + 0x01, 0x46, 0x00, 0x06, 0xac, 0xf6, 0x80, 0x3f, + 0x0d, 0x0a, 0x10, 0x02, 0x7d, 0x40, 0x10, 0x1e, + 0xb0, 0x20, 0xbc, 0xe0, 0x00, 0x06, 0x00, 0xc6, + 0xe0, 0x52, 0xb7, 0x60, 0xb7, 0x60, 0xc0, 0x5d, + 0x30, 0x5f, 0xe4, 0x72, 0xc7, 0x5e, 0x00, 0xed, + 0xd0, 0x28, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, + 0xc0, 0x1d, 0x30, 0x1c, 0xf8, 0x7e, 0x00, 0x21, + 0xd0, 0x01, 0x00, 0x26, 0xd0, 0x78, 0xa0, 0x38, + 0x80, 0x3f, 0x70, 0x01, 0xb0, 0x3f, 0x60, 0x01, + 0x0f, 0x87, 0x80, 0x34, 0x03, 0xef, 0xd8, 0x3f, + 0xa8, 0x38, 0x01, 0x35, 0xdc, 0x33, 0xe0, 0x46, + 0xc0, 0x1c, 0xe4, 0xa5, 0x97, 0x2e, 0x30, 0x1c, + 0xe8, 0x8e, 0x00, 0x21, 0xd0, 0x00, 0xa0, 0x38, + 0xc0, 0x5d, 0x00, 0x23, 0xd0, 0x00, 0x30, 0x40, + 0x30, 0x5e, 0xe4, 0x99, 0x20, 0x5e, 0xc0, 0x01, + 0x30, 0x1c, 0xec, 0xa4, 0xe0, 0x9d, 0x20, 0x5f, + 0xc0, 0x1c, 0x30, 0x01, 0xf4, 0xa5, 0xc0, 0x1c, + 0x30, 0x1d, 0xec, 0xa4, 0xe4, 0xa5, 0x90, 0x38, + 0x00, 0x1b, 0xe8, 0xa5, 0xa0, 0x66, 0xb1, 0x3f, + 0xe4, 0xb3, 0xe8, 0xb1, 0xc0, 0x4b, 0x30, 0x44, + 0xf8, 0xb3, 0x60, 0x45, 0xb1, 0x7c, 0x01, 0x20, + 0xd0, 0x00, 0xa0, 0x05, 0x80, 0x40, 0x72, 0xc5, + 0x00, 0x06, 0x90, 0x55, 0xd0, 0x01, 0x00, 0x40, + 0xa0, 0x55, 0x0f, 0x87, 0x01, 0x46, 0x00, 0x06, + 0x03, 0xef, 0xd0, 0x3f, 0xa0, 0x38, 0xb0, 0x01, + 0xa0, 0x37, 0x80, 0x3f, 0x82, 0x34, 0x80, 0x3f, + 0xf2, 0x1a, 0x80, 0x34, 0x80, 0x3f, 0xf2, 0x1a, + 0xd8, 0x00, 0xd8, 0x40, 0xd8, 0x80, 0xd8, 0xc0, + 0xd9, 0x00, 0xd9, 0x40, 0xd9, 0x80, 0xd9, 0xc0, + 0xda, 0x00, 0xda, 0x40, 0xda, 0x80, 0xda, 0xc0, + 0xdb, 0x00, 0xdb, 0x40, 0xdb, 0x80, 0xdb, 0xc0, + 0xdc, 0x00, 0xdc, 0x40, 0xdc, 0x80, 0xdc, 0xc0, + 0xdd, 0x00, 0xdd, 0x40, 0xdd, 0x80, 0xdd, 0xc0, + 0xde, 0x00, 0xde, 0x40, 0xde, 0x80, 0xde, 0xc0, + 0xdf, 0x00, 0xdf, 0x40, 0xdf, 0x80, 0xdf, 0xc0, + 0xde, 0x80, 0xde, 0xc1, 0x00, 0x28, 0xd0, 0x60, + 0x6e, 0x81, 0x80, 0x00, 0x80, 0x05, 0x00, 0xe3, + 0xd1, 0x88, 0x00, 0x73, 0xd5, 0x80, 0x60, 0x06, + 0xb1, 0xbc, 0x00, 0xfa, 0xd0, 0x80, 0x60, 0x06, + 0x00, 0x26, 0xd0, 0x6c, 0x6e, 0x81, 0x04, 0x32, + 0xd2, 0x00, 0x00, 0xee, 0xd1, 0x94, 0x60, 0x06, + 0x00, 0xed, 0xd0, 0x50, 0x6e, 0x81, 0x00, 0x22, + 0xd0, 0x70, 0x6e, 0x81, 0x00, 0xee, 0xd0, 0x74, + 0x6e, 0x81, 0xd0, 0x4c, 0x6e, 0x81, 0xd0, 0x02, + 0x00, 0xef, 0xd0, 0x6c, 0x60, 0x01, 0xd0, 0x03, + 0x00, 0xef, 0xd0, 0x70, 0x60, 0x01, 0x00, 0xe0, + 0xd0, 0x48, 0xd0, 0x02, 0x60, 0x01, 0x00, 0x32, + 0xd6, 0xf0, 0xa0, 0x1c, 0x00, 0x21, 0xd0, 0x60, + 0xa0, 0x76, 0x00, 0x34, 0xd5, 0x48, 0x80, 0x3f, + 0x00, 0x23, 0xd0, 0x5c, 0x00, 0x4a, 0xd0, 0x72, + 0x70, 0x40, 0x00, 0x06, 0x00, 0x22, 0xd1, 0xa4, + 0x6e, 0xc6, 0xd0, 0x58, 0x6e, 0xc1, 0xd0, 0xc9, + 0x00, 0xed, 0xd0, 0x54, 0x60, 0xc1, 0x00, 0x22, + 0xd0, 0x40, 0x60, 0xc1, 0x00, 0x22, 0xd0, 0x60, + 0x60, 0xc1, 0x82, 0x34, 0x80, 0x3f, 0xd6, 0xd9, + 0x01, 0x20, 0xd6, 0x22, 0x16, 0x08, 0xd0, 0x5e, + 0xd0, 0x2c, 0x60, 0x40, 0xd0, 0x70, 0x01, 0x74, + 0xd6, 0x00, 0x60, 0x01, 0x00, 0x2b, 0xd4, 0x10, + 0x00, 0x27, 0xd4, 0x60, 0x00, 0x2b, 0xd0, 0x90, + 0xc0, 0xc2, 0xd1, 0x08, 0xd1, 0x44, 0xa1, 0x50, + 0x00, 0x21, 0xd0, 0xb6, 0xd0, 0xd7, 0x00, 0x29, + 0xd0, 0x04, 0x64, 0x00, 0xb0, 0x3c, 0x64, 0x40, + 0x80, 0x34, 0x80, 0x3f, 0xd0, 0x40, 0x00, 0x35, + 0xd0, 0x00, 0x60, 0x01, 0xd0, 0x48, 0x6e, 0x81, + 0xd0, 0x44, 0x6e, 0x81, 0x00, 0x64, 0xd1, 0x80, + 0x6e, 0x86, 0x01, 0x3c, 0xd2, 0x39, 0xe0, 0x46, + 0xd0, 0x00, 0xd0, 0x40, 0xd0, 0x80, 0xd0, 0xc0, + 0xd1, 0x00, 0xd1, 0x40, 0xd1, 0x80, 0xd1, 0xc0, + 0xd2, 0x00, 0xd2, 0x40, 0xd2, 0x80, 0xd2, 0xc0, + 0xd3, 0x00, 0xd3, 0x40, 0xd3, 0x80, 0xd3, 0xc0, + 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, + 0xd5, 0x00, 0xd5, 0x40, 0xd5, 0x80, 0xd5, 0xc0, + 0xd6, 0x00, 0xd6, 0x40, 0xd6, 0x80, 0xd6, 0xc0, + 0xd7, 0x00, 0xd7, 0x40, 0xd7, 0x80, 0xd7, 0xc0, + 0x0f, 0xc5, 0x50, 0x00, 0x01, 0x46, 0x00, 0x06, + 0xde, 0x80, 0xde, 0xc1, 0x03, 0x2f, 0xd0, 0x33, + 0xa0, 0x38, 0xb0, 0x01, 0xa0, 0x37, 0x80, 0x3f, + 0x08, 0x20, 0xdf, 0x00, 0x82, 0x34, 0x80, 0x3f, + 0x00, 0xee, 0xd0, 0x08, 0x77, 0xc0, 0xb0, 0x04, + 0x77, 0x80, 0xb0, 0x04, 0xc0, 0x5f, 0x30, 0x5e, + 0x60, 0x40, 0xd7, 0x00, 0xb7, 0x01, 0x80, 0x34, + 0x80, 0x3f, 0x00, 0x60, 0xd0, 0x80, 0x00, 0xec, + 0xd0, 0x40, 0x60, 0x81, 0xb0, 0x7c, 0x60, 0x81, + 0x00, 0xa0, 0xd0, 0x80, 0xb0, 0x74, 0x60, 0x81, + 0xb0, 0x7c, 0x60, 0x81, 0x00, 0x68, 0xd0, 0x80, + 0x6e, 0x82, 0x00, 0xef, 0xd0, 0x8c, 0x6e, 0x82, + 0x00, 0x06, 0xd0, 0x11, 0xa0, 0x38, 0x80, 0x3f, + 0x08, 0x20, 0xd0, 0x40, 0x10, 0x48, 0xa0, 0x4a, + 0xa0, 0x5b, 0x0c, 0x20, 0xd0, 0x00, 0x10, 0x08, + 0xa0, 0x27, 0xa0, 0x0a, 0x90, 0x4d, 0x0f, 0xff, + 0xd8, 0x1f, 0x40, 0x40, 0xa0, 0x4d, 0x80, 0x0a, + 0x80, 0x07, 0x80, 0x1b, 0x80, 0x27, 0x00, 0x60, + 0xd0, 0x00, 0xa0, 0x09, 0x80, 0x28, 0x01, 0x20, + 0xd0, 0x67, 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, + 0x80, 0x6a, 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, + 0xa0, 0x6a, 0x01, 0x20, 0xd0, 0x00, 0xa0, 0x29, + 0x80, 0x2b, 0x02, 0x30, 0xd0, 0x00, 0xa0, 0x38, + 0x80, 0x3f, 0x01, 0xb0, 0xd0, 0x10, 0xa0, 0x37, + 0x80, 0x3f, 0x02, 0x30, 0xd0, 0x01, 0xa0, 0x38, + 0x00, 0xea, 0xd0, 0x00, 0xd0, 0x4e, 0x0f, 0x0b, + 0x70, 0x40, 0x00, 0x06, 0x00, 0x21, 0xd0, 0x88, + 0x00, 0xe1, 0xd0, 0x60, 0x60, 0x81, 0x00, 0x2b, + 0xd0, 0x80, 0x00, 0xe0, 0xd0, 0x6c, 0x60, 0x81, + 0xb0, 0x7c, 0x00, 0x27, 0xd0, 0xa0, 0x60, 0x81, + 0xb0, 0x7c, 0xd0, 0x82, 0x60, 0x81, 0xb0, 0x7c, + 0xd0, 0x85, 0x60, 0x81, 0xb0, 0x7c, 0x03, 0xaa, + 0xd0, 0x98, 0x60, 0x81, 0xb0, 0x7c, 0x6e, 0x81, + 0x00, 0x27, 0xd0, 0x40, 0x6e, 0x81, 0xb0, 0x7c, + 0x6e, 0x81, 0xb0, 0x7c, 0x6e, 0x81, 0x00, 0x27, + 0xd1, 0x90, 0x6e, 0x86, 0x00, 0x21, 0xd1, 0xb8, + 0x6e, 0x86, 0x00, 0x66, 0xd1, 0xa0, 0xd0, 0x00, + 0x01, 0x26, 0xd0, 0x58, 0x30, 0x01, 0x60, 0x06, + 0x00, 0xed, 0xd1, 0xbc, 0x6e, 0x86, 0x00, 0xec, + 0xd1, 0xb8, 0x6e, 0x86, 0xb1, 0x84, 0x6e, 0x86, + 0x00, 0xee, 0xd1, 0x84, 0x70, 0x46, 0x00, 0x65, + 0xd1, 0x94, 0x60, 0x46, 0x00, 0x64, 0xd1, 0xbc, + 0x6e, 0x86, 0x00, 0x65, 0xd1, 0x80, 0x6e, 0x86, + 0xb1, 0xbc, 0x6e, 0x86, 0xb1, 0xbc, 0x6e, 0x86, + 0x00, 0xed, 0xd1, 0xa8, 0x6e, 0x86, 0xd0, 0x0e, + 0xb1, 0xbc, 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, + 0x00, 0x65, 0xd1, 0xa4, 0x60, 0x06, 0x00, 0x28, + 0xd1, 0xa4, 0x6e, 0x86, 0x00, 0x27, 0xd1, 0x98, + 0x6e, 0x86, 0x00, 0x64, 0xd1, 0xa4, 0x6e, 0x86, + 0xd2, 0x01, 0x00, 0x64, 0xd0, 0x60, 0x62, 0x01, + 0x00, 0x64, 0xd1, 0x80, 0x70, 0x46, 0x6e, 0x86, + 0x00, 0xef, 0xd1, 0x98, 0x70, 0x86, 0x08, 0x20, + 0xd0, 0xcf, 0x30, 0xc1, 0xea, 0x42, 0xd0, 0x81, + 0x00, 0x21, 0xd1, 0xa8, 0x60, 0x86, 0x00, 0xed, + 0xd1, 0xa0, 0x6e, 0xc6, 0x00, 0x65, 0xd1, 0x98, + 0x6e, 0xc6, 0x00, 0x22, 0xd0, 0x00, 0xa0, 0x05, + 0x80, 0x40, 0x00, 0xc6, 0x01, 0x73, 0xd4, 0x3d, + 0xe0, 0x46, 0x50, 0x00, 0x08, 0x20, 0xd0, 0x00, + 0x5f, 0x00, 0x00, 0x64, 0xd0, 0x60, 0x70, 0xc1, + 0x00, 0xec, 0xd0, 0x40, 0x71, 0x81, 0xb0, 0x7c, + 0x71, 0xc1, 0xc0, 0x87, 0x30, 0x86, 0xf9, 0x83, + 0x10, 0xee, 0xe9, 0x76, 0x10, 0xe1, 0xe9, 0x76, + 0xe2, 0x57, 0x00, 0x63, 0xd0, 0xbf, 0x72, 0x06, + 0xb1, 0xbc, 0x41, 0x82, 0x02, 0x1b, 0xe9, 0x8d, + 0x72, 0x86, 0xb1, 0xbc, 0x41, 0x82, 0xd0, 0x75, + 0x30, 0x48, 0xe9, 0xfe, 0xb0, 0x7f, 0xea, 0x00, + 0x02, 0x1c, 0xe9, 0x96, 0x15, 0xa3, 0xea, 0x57, + 0x10, 0xf0, 0xe9, 0x9a, 0x10, 0xfa, 0xf9, 0xa1, + 0x15, 0xa3, 0xea, 0x57, 0x00, 0x21, 0xd0, 0x4c, + 0x70, 0x41, 0x10, 0x61, 0xfa, 0x57, 0x00, 0xed, + 0xd0, 0x08, 0x70, 0x40, 0xd0, 0x85, 0x40, 0x42, + 0x60, 0x40, 0x00, 0x64, 0xd0, 0x64, 0x62, 0x01, + 0x12, 0x2b, 0xe9, 0xeb, 0x12, 0x3b, 0xe9, 0xd5, + 0x00, 0xec, 0xd0, 0x40, 0x61, 0x81, 0x12, 0x2d, + 0xe9, 0xbf, 0x12, 0x30, 0xe9, 0xd4, 0x12, 0x36, + 0xe9, 0xd4, 0x12, 0x3a, 0xe9, 0xd4, 0xd0, 0x62, + 0x30, 0x48, 0xe9, 0xf2, 0x12, 0x2e, 0xe9, 0xf9, + 0xe1, 0x76, 0x00, 0xed, 0xd0, 0x08, 0x70, 0x40, + 0xd0, 0x85, 0x40, 0x42, 0x60, 0x40, 0xb0, 0x08, + 0x00, 0x21, 0xd0, 0x41, 0x60, 0x40, 0x00, 0x64, + 0xd0, 0x60, 0x62, 0x01, 0xf2, 0x5a, 0x00, 0xed, + 0xd0, 0x20, 0xd0, 0x41, 0x60, 0x40, 0x10, 0xe1, + 0xea, 0x3a, 0xe2, 0x57, 0xe2, 0x53, 0x10, 0xee, + 0xf9, 0xe9, 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, + 0x97, 0x2e, 0xc7, 0x5c, 0xa7, 0x66, 0x81, 0x34, + 0x80, 0x3f, 0x00, 0x21, 0xd0, 0x01, 0xa0, 0x38, + 0x00, 0xc6, 0x00, 0x21, 0xd0, 0x15, 0x0b, 0x09, + 0x00, 0x4d, 0xb0, 0x01, 0xed, 0xe5, 0xd2, 0x1a, + 0xe1, 0xec, 0xf1, 0x18, 0x00, 0xec, 0xd0, 0x40, + 0x71, 0x81, 0xd0, 0x4e, 0x60, 0x46, 0xe2, 0x54, + 0xc0, 0x0a, 0x10, 0x06, 0x52, 0x80, 0x00, 0xed, + 0xd0, 0x40, 0x62, 0x81, 0xe2, 0x53, 0x00, 0x64, + 0xd0, 0x60, 0x62, 0x01, 0xf2, 0x5a, 0xe1, 0x70, + 0x12, 0xa3, 0xf6, 0x57, 0x15, 0xa1, 0xfa, 0x57, + 0x12, 0xa0, 0xea, 0x23, 0x00, 0x65, 0xd1, 0x1c, + 0xd0, 0x75, 0x30, 0x48, 0xea, 0x0a, 0xb1, 0x3c, + 0x71, 0x04, 0x11, 0x20, 0xfa, 0x11, 0x00, 0xec, + 0xd0, 0x40, 0x61, 0x81, 0xe2, 0x57, 0x12, 0xa1, + 0xea, 0x33, 0x00, 0xe2, 0xd0, 0x60, 0x70, 0x01, + 0xb0, 0x7c, 0x70, 0x41, 0x10, 0x0c, 0x50, 0x40, + 0x0c, 0x30, 0xd0, 0x00, 0x31, 0x01, 0xee, 0x21, + 0x21, 0x00, 0xe6, 0x57, 0xe2, 0x23, 0x31, 0x00, + 0xfe, 0x57, 0xd0, 0x75, 0x30, 0x48, 0xea, 0x28, + 0xf2, 0x5a, 0xe2, 0x0d, 0x00, 0xec, 0xd0, 0x40, + 0x71, 0x81, 0x00, 0x63, 0xd1, 0x3f, 0xb1, 0xbc, + 0x41, 0x84, 0x61, 0x81, 0xd0, 0x50, 0x60, 0x46, + 0xe2, 0x57, 0x00, 0xed, 0xd0, 0x7c, 0x70, 0x41, + 0x08, 0x20, 0xd0, 0x00, 0x10, 0x08, 0xe2, 0x1c, + 0xd2, 0x84, 0x00, 0xed, 0xd1, 0xa4, 0x62, 0x86, + 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x46, 0x82, 0x34, + 0x80, 0x3f, 0xc7, 0x5e, 0x97, 0x2e, 0x81, 0x34, + 0x80, 0x3f, 0x02, 0xe8, 0xd0, 0x30, 0xa0, 0x37, + 0xa0, 0x38, 0x08, 0x20, 0xdf, 0x00, 0x80, 0x73, + 0x80, 0x3f, 0x00, 0xc6, 0x01, 0x7a, 0xde, 0x1a, + 0xe0, 0x46, 0xf2, 0x5a, 0x00, 0x64, 0xd0, 0x60, + 0x62, 0x01, 0x02, 0x3c, 0xda, 0x89, 0xe0, 0x46, + 0x00, 0x28, 0xd0, 0x64, 0x70, 0x81, 0x00, 0x22, + 0xd0, 0x00, 0x50, 0x80, 0x60, 0x81, 0x0f, 0xc5, + 0x50, 0x00, 0x50, 0x00, 0x00, 0xed, 0xd1, 0xa4, + 0x72, 0x86, 0x00, 0xef, 0xd1, 0x90, 0x70, 0x46, + 0x10, 0x5c, 0x10, 0x65, 0xed, 0x7d, 0xd0, 0x46, + 0xc0, 0x0a, 0x10, 0x40, 0x60, 0x46, 0x00, 0x22, + 0xd0, 0x73, 0x30, 0x54, 0xe9, 0x8e, 0x12, 0xa4, + 0xe9, 0xb5, 0x15, 0x20, 0xe9, 0xc0, 0xb0, 0x7b, + 0xe9, 0xc3, 0xb0, 0x41, 0xe9, 0xc9, 0xc0, 0x54, + 0x10, 0x5c, 0x10, 0x6e, 0xe9, 0xc6, 0xe1, 0xb5, + 0x00, 0x28, 0xd1, 0xb0, 0xd0, 0x00, 0x60, 0x06, + 0x12, 0xa4, 0xf9, 0xb2, 0x00, 0xed, 0xd1, 0x9c, + 0x62, 0x86, 0xd2, 0x80, 0x00, 0xed, 0xd1, 0xa4, + 0x62, 0x86, 0xd0, 0x02, 0x00, 0xec, 0xd1, 0xbc, + 0x60, 0x06, 0x00, 0x64, 0xd1, 0xa0, 0x72, 0x06, + 0x12, 0x21, 0xf9, 0xa6, 0xd2, 0x0d, 0x62, 0x06, + 0x00, 0xed, 0xd1, 0xa0, 0x61, 0x86, 0xd0, 0x0e, + 0x00, 0xed, 0xd1, 0xac, 0x60, 0x06, 0xb1, 0xbc, + 0x60, 0x06, 0x00, 0x65, 0xd1, 0xa4, 0x60, 0x06, + 0x01, 0x7e, 0xd2, 0x31, 0xe1, 0xcb, 0x01, 0x46, + 0x90, 0x49, 0x00, 0x60, 0xd0, 0x00, 0x50, 0x40, + 0xa0, 0x49, 0x80, 0x3f, 0x00, 0xc6, 0x0c, 0x09, + 0x05, 0x0d, 0xe1, 0x70, 0x01, 0xbe, 0xde, 0x41, + 0xe1, 0xcb, 0x01, 0xbb, 0xd8, 0x10, 0xe1, 0xcb, + 0x01, 0xbd, 0xd8, 0x0b, 0xe1, 0xcb, 0x03, 0xb8, + 0xda, 0x10, 0x01, 0x46, 0x90, 0x49, 0x00, 0x60, + 0xd1, 0x00, 0x50, 0x44, 0x30, 0x44, 0xa0, 0x49, + 0x80, 0x3f, 0x00, 0xc6, 0xe0, 0x46, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x01, 0xfa, 0xd2, 0x3d, + 0x00, 0x25, 0xdc, 0xd8, 0xf0, 0x4a, 0x00, 0x26, + 0xd0, 0x18, 0xd0, 0x40, 0x60, 0x40, 0x00, 0x28, + 0xd0, 0x24, 0x70, 0x40, 0xd0, 0x82, 0x50, 0x42, + 0x60, 0x40, 0x00, 0xec, 0xd0, 0xa4, 0x70, 0xc2, + 0x10, 0xe0, 0xf9, 0x81, 0x00, 0xec, 0xd1, 0x98, + 0xd0, 0x41, 0x60, 0x46, 0x70, 0xc2, 0x10, 0xe0, + 0xe9, 0x8e, 0xd0, 0x40, 0x60, 0x46, 0xe1, 0x81, + 0xd0, 0x40, 0x00, 0xe6, 0xd0, 0x10, 0x60, 0x40, + 0xb0, 0x3c, 0x60, 0x40, 0xb0, 0x3c, 0x60, 0x40, + 0xd0, 0xe0, 0x00, 0xea, 0xd0, 0x40, 0x00, 0xe8, + 0xd0, 0x82, 0x01, 0x46, 0x70, 0x01, 0xb0, 0x7c, + 0x60, 0x02, 0xb0, 0xbc, 0x00, 0x06, 0x00, 0xc6, + 0xb0, 0xc1, 0xed, 0x9b, 0x80, 0x49, 0xd6, 0x44, + 0xd5, 0x43, 0x00, 0xe0, 0xd1, 0x80, 0x00, 0x06, + 0x0b, 0x09, 0x01, 0x0d, 0x0b, 0x09, 0x61, 0x06, + 0xb1, 0xbc, 0x01, 0x4d, 0x09, 0x09, 0x61, 0x46, + 0xb1, 0xbc, 0x00, 0xcd, 0x09, 0x09, 0x10, 0xe4, + 0xed, 0xb8, 0x60, 0xc6, 0xb1, 0xbc, 0x00, 0xcd, + 0x60, 0xc6, 0x00, 0xed, 0xd0, 0x04, 0x70, 0x00, + 0x10, 0x20, 0xf9, 0xd3, 0x10, 0xe3, 0xe9, 0xc4, + 0x10, 0xe6, 0xf9, 0xd3, 0x01, 0x46, 0x90, 0x10, + 0x00, 0x20, 0xd0, 0x44, 0x50, 0x40, 0x00, 0xc6, + 0xa0, 0x50, 0x00, 0xa0, 0xd0, 0x00, 0xa0, 0x05, + 0x80, 0x40, 0x00, 0xed, 0xd1, 0xa4, 0xd0, 0x04, + 0x60, 0x06, 0x00, 0xee, 0xd1, 0xac, 0x73, 0x86, + 0x10, 0xe3, 0xe5, 0xde, 0xe9, 0xe3, 0x00, 0xe7, + 0xd0, 0x40, 0x00, 0xae, 0xd0, 0xbb, 0xe1, 0xe7, + 0x01, 0x24, 0xd0, 0x6b, 0x00, 0xea, 0xd0, 0xa6, + 0xe1, 0xe7, 0x01, 0x21, 0xd0, 0x7b, 0x00, 0xe8, + 0xd0, 0x90, 0x13, 0xa0, 0xf9, 0xea, 0xc0, 0x42, + 0x00, 0xe0, 0xd1, 0xa8, 0x60, 0x46, 0xb1, 0x98, + 0x0b, 0xc9, 0x00, 0x4d, 0x09, 0x09, 0x10, 0x44, + 0x00, 0x8d, 0x20, 0x42, 0x10, 0x5f, 0x60, 0x46, + 0xb1, 0xb8, 0x00, 0x90, 0xea, 0x17, 0x0a, 0x89, + 0x00, 0x8d, 0x60, 0x86, 0xb1, 0xbc, 0x08, 0x49, + 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, 0x08, 0x49, + 0x00, 0x4d, 0x60, 0x46, 0x10, 0x60, 0xea, 0x0b, + 0x00, 0xe8, 0xd1, 0x80, 0xf2, 0xb0, 0x10, 0x60, + 0xfa, 0x17, 0x08, 0x49, 0x00, 0xe0, 0xd1, 0xa4, + 0x00, 0x4d, 0x60, 0x46, 0x10, 0x60, 0xea, 0x1b, + 0x00, 0xe9, 0xd1, 0x80, 0xf2, 0xb0, 0x10, 0x60, + 0xea, 0x1b, 0x00, 0xe0, 0xd1, 0x88, 0xd0, 0x40, + 0x60, 0x46, 0xd0, 0x00, 0x00, 0xe0, 0xd1, 0xa8, + 0x70, 0x46, 0x00, 0xef, 0xd1, 0x9c, 0x70, 0x86, + 0xb0, 0xb0, 0xee, 0x25, 0xd0, 0x81, 0x00, 0x90, + 0xea, 0x28, 0x20, 0x01, 0x10, 0x41, 0x10, 0x9f, + 0x10, 0xa0, 0xee, 0x25, 0x10, 0x1c, 0x00, 0x65, + 0xd1, 0xa8, 0x60, 0x06, 0x01, 0xb4, 0xd4, 0x3a, + 0xe0, 0x46, 0x50, 0x00, 0x02, 0x31, 0xdc, 0x13, + 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0x0c, 0x09, + 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, + 0x30, 0x54, 0xe9, 0xea, 0xb0, 0x7d, 0xfa, 0x05, + 0x09, 0x09, 0x01, 0xcd, 0x11, 0xe1, 0xf9, 0xc7, + 0x80, 0x09, 0x80, 0x27, 0x0a, 0x09, 0xd6, 0x45, + 0x00, 0xe1, 0xd1, 0xa0, 0x00, 0x4d, 0x60, 0x46, + 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, + 0x00, 0x50, 0xe9, 0x91, 0xd4, 0x01, 0xb1, 0xbc, + 0x08, 0x89, 0x00, 0x4d, 0x60, 0x46, 0x00, 0xe0, + 0xd1, 0x80, 0x08, 0x89, 0x00, 0x4d, 0x08, 0x89, + 0x10, 0x4c, 0x71, 0x06, 0x21, 0x01, 0x61, 0x06, + 0xb1, 0xbc, 0x00, 0x4d, 0x0b, 0x49, 0x10, 0x4c, + 0x71, 0x46, 0x21, 0x41, 0x61, 0x46, 0xb1, 0xb0, + 0x00, 0x4d, 0x10, 0x5f, 0x60, 0x46, 0xb1, 0xbc, + 0x0a, 0x09, 0x00, 0x4d, 0x10, 0x4a, 0x70, 0x86, + 0x20, 0x81, 0x60, 0x86, 0x00, 0xe1, 0xd1, 0xac, + 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0x08, 0x89, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0x09, 0x49, 0x00, 0x8d, 0x60, 0x86, 0xc0, 0x02, + 0x00, 0xe0, 0xd1, 0xa8, 0x70, 0xc6, 0x10, 0xc0, + 0xd0, 0x20, 0x30, 0x01, 0x10, 0xc0, 0x60, 0xc6, + 0xe1, 0x75, 0x11, 0xe2, 0xf9, 0x75, 0x00, 0xe2, + 0xd1, 0x80, 0x08, 0xc9, 0x00, 0x4d, 0x60, 0x46, + 0xb1, 0xbc, 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, + 0xb1, 0xbc, 0x10, 0x60, 0xf9, 0xd7, 0xb1, 0xb4, + 0xe1, 0xde, 0xd2, 0x03, 0x0a, 0x09, 0x00, 0x4d, + 0x60, 0x46, 0xb1, 0xbc, 0xb2, 0x01, 0xf9, 0xd8, + 0x0b, 0xc9, 0x00, 0x4d, 0x10, 0x49, 0x10, 0x56, + 0x60, 0x46, 0xb1, 0xbc, 0x0b, 0x89, 0x00, 0x4d, + 0x10, 0x4a, 0x10, 0x56, 0x60, 0x46, 0xe1, 0x75, + 0x0b, 0x2c, 0xd4, 0x40, 0xf3, 0xb0, 0xe1, 0x77, + 0x00, 0xe0, 0xd0, 0x6c, 0x00, 0xe0, 0xd1, 0x80, + 0xd0, 0x0a, 0xf1, 0xfe, 0x00, 0xe1, 0xd1, 0xb0, + 0xd0, 0x02, 0xf1, 0xfe, 0x00, 0xe0, 0xd1, 0x80, + 0x76, 0x86, 0xb1, 0xbc, 0x73, 0x46, 0xe2, 0x3c, + 0x70, 0x81, 0x60, 0x86, 0xb1, 0xbc, 0xb0, 0x7c, + 0xb0, 0x01, 0xed, 0xfe, 0x0f, 0xc5, 0x00, 0xe1, + 0xd1, 0xa0, 0x70, 0x46, 0xd0, 0x8f, 0x40, 0x42, + 0x00, 0x25, 0xd0, 0xe0, 0x00, 0x24, 0xd1, 0x20, + 0x10, 0x6a, 0xea, 0x1e, 0x00, 0x66, 0xd0, 0xe0, + 0x00, 0x62, 0xd1, 0x00, 0x10, 0x66, 0xea, 0x1e, + 0x00, 0x6e, 0xd0, 0xc0, 0x10, 0x64, 0xea, 0x1e, + 0x00, 0x2b, 0xd0, 0xd0, 0x00, 0x29, 0xd1, 0x00, + 0x00, 0xe0, 0xd1, 0x80, 0x76, 0x86, 0x16, 0xa0, + 0xe9, 0xee, 0x30, 0xda, 0xe5, 0xee, 0xb1, 0xbc, + 0x73, 0x46, 0x13, 0x60, 0xe9, 0xee, 0x31, 0x0d, + 0xe5, 0xee, 0xd0, 0x82, 0xb1, 0xbc, 0x70, 0x46, + 0x10, 0x60, 0xe9, 0xee, 0xb0, 0x81, 0xee, 0x2c, + 0x00, 0xe0, 0xd0, 0x40, 0x00, 0xe0, 0xd1, 0xac, + 0xd0, 0x0a, 0xf1, 0xfe, 0x00, 0xe1, 0xd0, 0x70, + 0xd0, 0x02, 0xf1, 0xfe, 0x00, 0xec, 0xd1, 0x98, + 0xd0, 0x40, 0x60, 0x46, 0x00, 0xe0, 0xd0, 0x8c, + 0x70, 0x82, 0x00, 0x21, 0xd0, 0x70, 0x60, 0x81, + 0xd0, 0x40, 0x00, 0x25, 0xd0, 0x20, 0x30, 0x1a, + 0xfa, 0x50, 0x00, 0x23, 0xd0, 0x30, 0x30, 0x0d, + 0xfa, 0x50, 0xd0, 0x41, 0x00, 0x21, 0xd1, 0x84, + 0x60, 0x46, 0xb6, 0xb1, 0x16, 0x9c, 0x01, 0x7a, + 0xde, 0x1a, 0xe0, 0x46, 0x02, 0x31, 0xdc, 0x13, + 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0x00, 0xec, + 0xd0, 0xa8, 0x70, 0xc2, 0x10, 0xe0, 0xf9, 0x77, + 0x00, 0xec, 0xd1, 0x9c, 0xd0, 0x41, 0x60, 0x46, + 0x70, 0xc2, 0x10, 0xe0, 0xe9, 0x84, 0xd0, 0x40, + 0x60, 0x46, 0xe1, 0x77, 0x0b, 0x49, 0x00, 0xe2, + 0xd1, 0xa0, 0x00, 0x4d, 0x10, 0x5f, 0x00, 0x6f, + 0xd0, 0xff, 0x40, 0x43, 0x60, 0x46, 0xb1, 0xbc, + 0x0b, 0x09, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0x08, 0x89, 0x00, 0x4d, 0x60, 0x46, 0x10, 0x61, + 0xf9, 0x9b, 0xd3, 0xc2, 0x00, 0xec, 0xd1, 0xbc, + 0x63, 0xc6, 0x0c, 0x09, 0x90, 0x4d, 0x10, 0x60, + 0xe5, 0x9c, 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, + 0xd0, 0x72, 0x30, 0x54, 0xf9, 0xa9, 0x0b, 0xa0, + 0xd4, 0x40, 0xf3, 0xb0, 0xe1, 0xa0, 0x00, 0xec, + 0xd1, 0x9c, 0xd0, 0x40, 0x60, 0x46, 0x01, 0x7a, + 0xde, 0x1a, 0xe0, 0x46, 0x0b, 0x09, 0x00, 0x4d, + 0x0b, 0x09, 0x00, 0x4d, 0x0a, 0x09, 0x01, 0x4d, + 0x0a, 0x09, 0x00, 0x4d, 0x01, 0x59, 0xe9, 0x96, + 0x09, 0x09, 0x00, 0x4d, 0x10, 0x5f, 0x10, 0x61, + 0xf9, 0x96, 0x09, 0x09, 0x01, 0x4d, 0x11, 0x5f, + 0x0b, 0xc9, 0x00, 0x4d, 0xc0, 0x01, 0x10, 0x5f, + 0x11, 0x4e, 0x51, 0x41, 0x08, 0x49, 0x00, 0x4d, + 0x0b, 0xc9, 0x10, 0x0f, 0x00, 0x4d, 0x50, 0x01, + 0x00, 0xed, 0xd1, 0xb6, 0x01, 0x46, 0x00, 0x06, + 0xa0, 0x3c, 0xa1, 0x7d, 0x60, 0x06, 0x00, 0xc6, + 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, + 0xe0, 0x46, 0x50, 0x00, 0x00, 0xec, 0xd0, 0xac, + 0x70, 0xc2, 0x10, 0xe0, 0xf9, 0x70, 0x00, 0xec, + 0xd1, 0xa0, 0xd0, 0x41, 0x60, 0x46, 0x70, 0xc2, + 0x10, 0xe0, 0xe9, 0x7f, 0xd0, 0x40, 0x60, 0x46, + 0xe1, 0x70, 0x0a, 0x89, 0x0b, 0xcd, 0x00, 0xe3, + 0xd1, 0x80, 0x6b, 0xc6, 0x08, 0xc9, 0x05, 0x8d, + 0x15, 0xa3, 0xee, 0x6e, 0x15, 0xa0, 0xea, 0x6e, + 0x90, 0x4d, 0xd0, 0x9f, 0xd0, 0xdf, 0x40, 0x81, + 0x10, 0x55, 0x40, 0xc1, 0x01, 0x46, 0x82, 0x34, + 0x80, 0x3f, 0xc8, 0x1d, 0x81, 0x34, 0x80, 0x3f, + 0x00, 0xc6, 0xd1, 0x23, 0x31, 0x03, 0x11, 0x02, + 0x38, 0x04, 0xb0, 0x8d, 0x10, 0x9d, 0x28, 0x02, + 0xc0, 0x60, 0x00, 0x65, 0xd1, 0x94, 0x71, 0x06, + 0x68, 0x06, 0x30, 0x44, 0x00, 0xed, 0xd1, 0xa8, + 0x70, 0x06, 0x10, 0x20, 0xe9, 0xb0, 0x00, 0xee, + 0xd0, 0xc0, 0x70, 0xc3, 0x20, 0x43, 0xb0, 0x01, + 0xf9, 0xac, 0x60, 0x06, 0x00, 0x64, 0xd1, 0xbc, + 0x71, 0x06, 0xc0, 0x04, 0x21, 0x01, 0x61, 0x06, + 0x10, 0x20, 0xf5, 0xbb, 0x11, 0x20, 0xe5, 0xbb, + 0xb0, 0x41, 0x00, 0x65, 0xd1, 0x80, 0x71, 0x06, + 0x21, 0x01, 0x61, 0x06, 0x00, 0xed, 0xd1, 0xac, + 0x71, 0x06, 0x15, 0xa1, 0xe9, 0xcb, 0xb1, 0x3f, + 0x61, 0x06, 0x15, 0xa3, 0xf9, 0xd6, 0xd0, 0xbf, + 0xe1, 0xd3, 0xd0, 0x40, 0x60, 0x46, 0xb1, 0xbc, + 0x70, 0x86, 0x61, 0x06, 0x31, 0x02, 0xe5, 0xd3, + 0x20, 0x84, 0x00, 0x65, 0xd1, 0xa4, 0x60, 0x86, + 0xd9, 0x40, 0x00, 0xec, 0xd1, 0x94, 0x79, 0x06, + 0xb1, 0x84, 0x78, 0xc6, 0xc0, 0x63, 0x30, 0x64, + 0xe9, 0xf8, 0x00, 0xa7, 0xd0, 0xff, 0x7a, 0x63, + 0x00, 0x65, 0xd0, 0x00, 0x71, 0x00, 0x31, 0x29, + 0xe5, 0xf8, 0xc0, 0x63, 0xc8, 0xc1, 0xb0, 0x78, + 0x40, 0x43, 0xc0, 0xa4, 0x30, 0x81, 0xe9, 0xf2, + 0x7a, 0x41, 0x31, 0x29, 0xf5, 0xe8, 0x21, 0x29, + 0x61, 0x00, 0xb8, 0xfc, 0x79, 0x63, 0xb8, 0xfc, + 0x48, 0xc3, 0x68, 0xc6, 0x00, 0xed, 0xd1, 0xb8, + 0x69, 0x46, 0x80, 0x28, 0x0b, 0xc9, 0x00, 0x4d, + 0x08, 0x49, 0x10, 0x41, 0x00, 0xe3, 0xd1, 0x84, + 0x00, 0x8d, 0x20, 0x42, 0x60, 0x46, 0x00, 0xee, + 0xd1, 0xa4, 0x70, 0x86, 0x10, 0xa1, 0xee, 0x18, + 0xe6, 0x6b, 0x90, 0x86, 0x00, 0x90, 0xea, 0x18, + 0x00, 0xed, 0xd0, 0x1c, 0x70, 0x80, 0xb0, 0x81, + 0xe6, 0x6b, 0x60, 0x80, 0xb1, 0xa8, 0x70, 0x86, + 0x10, 0xa0, 0xfa, 0x6b, 0x00, 0x21, 0xd0, 0x38, + 0x70, 0x80, 0x10, 0xa0, 0xfa, 0x6b, 0x0f, 0xef, + 0xd0, 0xbf, 0x30, 0x81, 0xfa, 0x22, 0x60, 0x00, + 0x08, 0x20, 0xd0, 0x00, 0x5f, 0x00, 0x15, 0xa3, + 0xea, 0x6b, 0x00, 0xee, 0xd1, 0x80, 0x79, 0x46, + 0x00, 0xf8, 0xd0, 0x00, 0xc4, 0x40, 0x00, 0xe3, + 0xd1, 0x84, 0x78, 0x46, 0x0f, 0xef, 0xd0, 0x3f, + 0x30, 0x21, 0xea, 0x48, 0x00, 0xe0, 0xd1, 0x90, + 0x78, 0x06, 0xc0, 0xa1, 0x18, 0x43, 0x28, 0x42, + 0x18, 0x43, 0x28, 0x42, 0x18, 0x1e, 0xd8, 0x80, + 0x08, 0x11, 0xea, 0x41, 0x28, 0xa1, 0x18, 0x01, + 0x18, 0x5f, 0x18, 0x60, 0xee, 0x3e, 0xc0, 0x51, + 0x30, 0x62, 0xee, 0x4e, 0xc8, 0x91, 0x18, 0x9f, + 0x00, 0x21, 0xd1, 0xb8, 0xd0, 0x01, 0x60, 0x06, + 0x00, 0xef, 0xd0, 0x10, 0xd0, 0x72, 0x60, 0x40, + 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0xc8, 0xdc, + 0xc9, 0x1d, 0x81, 0x34, 0x80, 0x3f, 0x00, 0xc6, + 0x38, 0xe4, 0xee, 0x5e, 0xea, 0x52, 0x28, 0xe5, + 0x01, 0x46, 0x90, 0x6d, 0x28, 0xc1, 0x00, 0xc6, + 0x38, 0xe2, 0xf6, 0x6b, 0xdb, 0x08, 0xf1, 0x16, + 0xf1, 0x18, 0x00, 0x21, 0xd1, 0xb4, 0x61, 0x86, + 0xe2, 0x52, 0x01, 0xf7, 0xd0, 0x19, 0xe0, 0x46, + 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, 0xde, 0x1a, + 0xe0, 0x46, 0x50, 0x00, 0x02, 0x31, 0xdc, 0x13, + 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0xdb, 0x09, + 0x00, 0xe3, 0xd0, 0x1c, 0x6b, 0x00, 0xda, 0xc1, + 0x00, 0xe6, 0xd1, 0x98, 0x70, 0x06, 0xb1, 0x84, + 0x60, 0x06, 0xb1, 0x84, 0x60, 0x06, 0x05, 0x9f, + 0xe9, 0x9f, 0x08, 0x49, 0xd1, 0x17, 0x46, 0x44, + 0x00, 0x4d, 0x10, 0x43, 0x26, 0x41, 0x08, 0xc9, + 0x05, 0xcd, 0xb5, 0xc1, 0xe5, 0xcc, 0xc0, 0x57, + 0x15, 0xc6, 0x25, 0xc1, 0x15, 0xa3, 0xf9, 0x9f, + 0x08, 0x49, 0xd1, 0x0f, 0x46, 0x44, 0x00, 0x4d, + 0x10, 0x44, 0x26, 0x41, 0x08, 0xc9, 0x06, 0x0d, + 0xb6, 0x01, 0xe5, 0xcc, 0xc0, 0x58, 0x16, 0x06, + 0x26, 0x01, 0x08, 0x49, 0x00, 0x4d, 0x10, 0x60, + 0xe9, 0xa6, 0x0a, 0x09, 0x00, 0x4d, 0xe1, 0x9f, + 0x0c, 0x09, 0x90, 0x4d, 0x10, 0x60, 0xe5, 0xa7, + 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, + 0x30, 0x54, 0xf9, 0xb3, 0xd4, 0x40, 0xf3, 0xb0, + 0xe1, 0xab, 0xb0, 0x7d, 0xf9, 0xb8, 0x02, 0x34, + 0xd2, 0x44, 0xe0, 0x46, 0x00, 0xec, 0xd1, 0xa0, + 0xd0, 0x40, 0x60, 0x46, 0x02, 0x3c, 0xda, 0x89, + 0x00, 0xec, 0xd1, 0x80, 0x70, 0x46, 0xb1, 0xbc, + 0x70, 0x86, 0x30, 0x81, 0xe8, 0x46, 0x15, 0x63, + 0xe9, 0xc9, 0x05, 0x5e, 0xe8, 0x46, 0x01, 0x73, + 0xd4, 0x3d, 0xe0, 0x46, 0xd5, 0x00, 0xb5, 0x01, + 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0xcc, 0xc0, 0xcd, 0x01, + 0xcd, 0x42, 0xcd, 0x83, 0x00, 0xa0, 0xd0, 0x01, + 0xa0, 0x38, 0xc8, 0x7f, 0xc8, 0x06, 0xb1, 0xbe, + 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, 0x58, 0x80, + 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x96, 0xc9, 0x00, + 0xf3, 0x92, 0x58, 0xc0, 0xf3, 0x96, 0xc9, 0x40, + 0xf3, 0x92, 0x59, 0x40, 0xc0, 0x22, 0xc0, 0x65, + 0xc0, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0x80, + 0xf3, 0x92, 0x59, 0x00, 0xf3, 0x96, 0xc9, 0x40, + 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, 0x59, 0x40, + 0xf3, 0x96, 0xc9, 0xc0, 0xf3, 0x92, 0x58, 0x80, + 0xc0, 0x23, 0xc0, 0x62, 0xd0, 0x88, 0x20, 0x86, + 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x92, + 0x58, 0xc0, 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, + 0x59, 0xc0, 0xc0, 0x24, 0xc0, 0x67, 0xd0, 0x90, + 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x00, + 0xf3, 0x92, 0x59, 0x80, 0xf3, 0x96, 0xc9, 0xc0, + 0xf3, 0x96, 0xca, 0x00, 0xf3, 0x92, 0x59, 0xc0, + 0xf3, 0x96, 0xca, 0x40, 0xf3, 0x92, 0x59, 0x00, + 0xc0, 0x25, 0xc0, 0x64, 0xd0, 0x98, 0x20, 0x86, + 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, + 0x58, 0x80, 0xf3, 0x96, 0xc9, 0x00, 0xf3, 0x92, + 0x59, 0x00, 0xc0, 0x23, 0xc0, 0x64, 0xd0, 0x84, + 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc8, 0xc0, + 0xf3, 0x92, 0x59, 0x40, 0xf3, 0x96, 0xc9, 0x00, + 0xf3, 0x92, 0x5a, 0x40, 0xc0, 0x26, 0xc0, 0x69, + 0xd0, 0xa0, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, + 0xc9, 0x80, 0xf3, 0x92, 0x5a, 0x00, 0xf3, 0x96, + 0xca, 0x40, 0xf3, 0x92, 0x5a, 0x40, 0xf3, 0x96, + 0xca, 0x80, 0xf3, 0x92, 0x59, 0x80, 0xc0, 0x27, + 0xc0, 0x66, 0xd0, 0xa8, 0x20, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xc9, 0xc0, 0xf3, 0x92, 0x59, 0x00, + 0xf3, 0x96, 0xc9, 0x80, 0xf3, 0x92, 0x58, 0xc0, + 0xc0, 0x22, 0xc0, 0x63, 0xd0, 0x8c, 0x20, 0x86, + 0xf3, 0x9a, 0xf3, 0x92, 0x59, 0x80, 0xc0, 0x25, + 0xc0, 0x66, 0xd0, 0x94, 0x20, 0x86, 0xf3, 0x9a, + 0xf3, 0x96, 0xc8, 0x80, 0xf3, 0x92, 0x59, 0xc0, + 0xf3, 0x96, 0xc8, 0xc0, 0xf3, 0x92, 0x5a, 0x80, + 0xc0, 0x28, 0xc0, 0x6a, 0xd0, 0xb0, 0x20, 0x86, + 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x40, 0xf3, 0x92, + 0x59, 0x40, 0xc0, 0x29, 0xc0, 0x65, 0xd0, 0xb8, + 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x80, + 0xf3, 0x92, 0x58, 0xc0, 0xf3, 0x96, 0xca, 0x00, + 0xf3, 0x92, 0x58, 0x80, 0xc0, 0x24, 0xc0, 0x62, + 0xd0, 0x9c, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x92, + 0x5a, 0x00, 0xc0, 0x27, 0xc0, 0x68, 0xd0, 0xa4, + 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xca, 0x80, + 0xf3, 0x92, 0x59, 0x80, 0xf3, 0x96, 0xca, 0x40, + 0xf3, 0x92, 0x5a, 0x40, 0xf3, 0x96, 0xc9, 0x40, + 0xf3, 0x92, 0x5a, 0x80, 0xc0, 0x23, 0xc0, 0x6a, + 0xd0, 0xac, 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x92, + 0x59, 0x40, 0xc0, 0x26, 0xc0, 0x65, 0xd0, 0xb4, + 0x20, 0x86, 0xf3, 0x9a, 0xf3, 0x96, 0xc9, 0x00, + 0xf3, 0x92, 0x59, 0x00, 0xc0, 0x29, 0xc0, 0x64, + 0xd0, 0xbc, 0x20, 0x86, 0xf3, 0x9a, 0xc0, 0x33, + 0xc0, 0x74, 0xc0, 0xb5, 0xc0, 0xf6, 0xd0, 0x40, + 0x00, 0xa0, 0xd8, 0x00, 0xa8, 0x38, 0x08, 0x45, + 0x0a, 0x09, 0x00, 0x0d, 0x0f, 0xc5, 0x50, 0x00, + 0x0a, 0x09, 0x00, 0x0d, 0x10, 0x08, 0x0f, 0xc5, + 0x01, 0x46, 0x00, 0x06, 0xa0, 0x7c, 0xa0, 0x3d, + 0x60, 0x42, 0x00, 0xc6, 0x0f, 0xc5, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x14, 0x48, 0xd0, 0x81, + 0x00, 0xef, 0xd1, 0x8c, 0x71, 0x46, 0x11, 0x60, + 0xfb, 0xb1, 0x60, 0x86, 0x71, 0x46, 0x31, 0x42, + 0xfb, 0xb1, 0x00, 0xec, 0xd1, 0x0c, 0x74, 0x84, + 0x00, 0x68, 0xd0, 0x80, 0x70, 0x02, 0x10, 0x20, + 0xfb, 0xc4, 0xc4, 0x82, 0xc4, 0xd2, 0xb4, 0xfc, + 0xda, 0x00, 0xda, 0x4f, 0x0a, 0x09, 0x0f, 0xef, + 0xd0, 0x3f, 0xb4, 0x7f, 0xca, 0x29, 0x1a, 0x18, + 0x4a, 0x00, 0x1a, 0x48, 0x00, 0x8d, 0x2a, 0x42, + 0xd0, 0x03, 0x40, 0x11, 0xfb, 0xe3, 0xb4, 0x44, + 0x00, 0xa0, 0xd0, 0xc0, 0x30, 0xd3, 0xff, 0xe3, + 0xb4, 0xfe, 0x01, 0x46, 0x00, 0x06, 0xaa, 0x3d, + 0xaa, 0x7c, 0x6a, 0x53, 0x00, 0xc6, 0xb4, 0xfe, + 0xb4, 0x7c, 0x1a, 0x61, 0xfb, 0xc8, 0xb4, 0x43, + 0x00, 0xef, 0xd0, 0x3f, 0x40, 0x11, 0xeb, 0xf7, + 0xb0, 0xc4, 0xe7, 0xf7, 0xeb, 0xee, 0x61, 0x53, + 0x64, 0x52, 0x64, 0xc4, 0x00, 0x28, 0xd1, 0x24, + 0x70, 0x04, 0x00, 0x21, 0xd0, 0x80, 0x50, 0x02, + 0x60, 0x04, 0x61, 0x46, 0x0a, 0x09, 0x0f, 0xc5, + 0x50, 0x00, 0x50, 0x00, 0x02, 0x31, 0xdc, 0x13, + 0x00, 0x27, 0xdc, 0xd8, 0xf0, 0x4a, 0x01, 0xfa, + 0xd2, 0x3d, 0x00, 0x25, 0xdc, 0xd8, 0xf0, 0x4a, + 0x09, 0x09, 0x01, 0xcd, 0x11, 0xe8, 0xf9, 0xe2, + 0x00, 0xe3, 0xd1, 0x9c, 0x09, 0x09, 0x05, 0xcd, + 0xb5, 0xc1, 0x09, 0x09, 0x00, 0x4d, 0xb0, 0x41, + 0x10, 0x46, 0x25, 0xc1, 0x09, 0x09, 0x06, 0x0d, + 0xb6, 0x01, 0x09, 0x09, 0x00, 0x4d, 0x08, 0x89, + 0xb0, 0x41, 0x10, 0x46, 0x26, 0x01, 0x00, 0x8d, + 0x08, 0x89, 0x10, 0x82, 0xd0, 0x04, 0xc0, 0x55, + 0x00, 0x40, 0x40, 0x40, 0x05, 0x4d, 0x08, 0x49, + 0x0b, 0x0d, 0xd1, 0x00, 0x15, 0x63, 0xe9, 0xa2, + 0xd1, 0x01, 0x55, 0x41, 0xdb, 0x01, 0x4b, 0x15, + 0xa1, 0x1b, 0x08, 0x89, 0x00, 0x4d, 0x08, 0x49, + 0x10, 0x41, 0xd1, 0x19, 0x46, 0x44, 0x26, 0x41, + 0x00, 0xcd, 0x08, 0x49, 0x10, 0xc4, 0x00, 0x4d, + 0x08, 0x49, 0x10, 0x41, 0x20, 0x81, 0xa0, 0x89, + 0x00, 0x4d, 0x10, 0x43, 0x20, 0xc1, 0xa0, 0xe8, + 0x08, 0x49, 0x00, 0x4d, 0x1b, 0x03, 0x5b, 0x01, + 0xbb, 0x3f, 0x6b, 0x06, 0x08, 0x49, 0xb1, 0xbc, + 0x00, 0x4d, 0x60, 0x46, 0x08, 0x49, 0xb1, 0xbc, + 0x0a, 0xcd, 0x1a, 0xc2, 0x4a, 0xd9, 0x1a, 0xde, + 0x6a, 0xc6, 0x08, 0x49, 0xb1, 0xbc, 0x00, 0x4d, + 0x60, 0x46, 0x10, 0x60, 0xea, 0x3e, 0xb1, 0xbc, + 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0x08, 0xc9, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0x08, 0x49, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0x09, 0xc9, 0x00, 0x4d, 0x60, 0x46, 0xb1, 0xbc, + 0x0a, 0x09, 0x00, 0x4d, 0x60, 0x46, 0xe2, 0x3e, + 0x11, 0xe3, 0xfa, 0x00, 0x00, 0xe7, 0xd0, 0xc0, + 0xd0, 0x84, 0xb0, 0x81, 0xe6, 0x3e, 0x08, 0x49, + 0x00, 0x4d, 0x60, 0x43, 0xb0, 0xfc, 0x10, 0x60, + 0xe9, 0xe7, 0x10, 0xa3, 0xf9, 0xf4, 0x00, 0xe8, + 0xd1, 0x80, 0xe1, 0xf8, 0x10, 0xa2, 0xf9, 0xfa, + 0x00, 0xe9, 0xd1, 0x80, 0xf2, 0xb0, 0xe1, 0xe7, + 0xd2, 0x3f, 0x0a, 0x09, 0x00, 0x4d, 0xb2, 0x01, + 0xf5, 0xfb, 0xe1, 0xe7, 0x11, 0xe7, 0xfa, 0x3e, + 0xd4, 0x01, 0x00, 0xe1, 0xd0, 0x24, 0x70, 0x00, + 0x10, 0x21, 0xea, 0x0d, 0x15, 0x63, 0xfa, 0x0d, + 0xd4, 0x03, 0x44, 0x2c, 0xb4, 0x3f, 0x00, 0xe6, + 0xd1, 0x90, 0x0b, 0x09, 0x00, 0x4d, 0x09, 0x49, + 0x10, 0x45, 0x00, 0x8d, 0x50, 0x81, 0xd0, 0x40, + 0x10, 0x87, 0x10, 0x98, 0x30, 0x42, 0xf2, 0x61, + 0x60, 0x46, 0xb1, 0xbc, 0x0b, 0x09, 0x00, 0x0d, + 0x09, 0x49, 0x00, 0x0d, 0xb4, 0x01, 0xfa, 0x0f, + 0x00, 0xe6, 0xd0, 0x18, 0x30, 0x06, 0xe6, 0x29, + 0x60, 0x46, 0xb1, 0xbc, 0xe2, 0x22, 0x00, 0xe0, + 0xd1, 0x88, 0x70, 0x46, 0x10, 0x63, 0xea, 0x39, + 0x10, 0x64, 0xea, 0x39, 0x00, 0xe6, 0xd1, 0x90, + 0xd0, 0x00, 0x60, 0x06, 0xb1, 0xbc, 0x60, 0x06, + 0xb1, 0xbc, 0x60, 0x06, 0xe2, 0x3e, 0x00, 0xef, + 0xd1, 0x84, 0x70, 0x46, 0x10, 0x60, 0xfa, 0x30, + 0x0c, 0x09, 0x90, 0x4d, 0x10, 0x60, 0xe6, 0x3f, + 0x00, 0x06, 0x05, 0x0d, 0x00, 0x22, 0xd0, 0x72, + 0x30, 0x54, 0xfa, 0x4b, 0xd4, 0x40, 0xf3, 0xb0, + 0xe2, 0x43, 0xb0, 0x7d, 0xe9, 0x7a, 0x00, 0xec, + 0xd1, 0xa0, 0xd0, 0x40, 0x60, 0x46, 0x02, 0x3c, + 0xda, 0x89, 0x00, 0xec, 0xd1, 0x80, 0x70, 0x46, + 0xb1, 0xbc, 0x70, 0x86, 0x30, 0x81, 0xe8, 0x46, + 0x15, 0x63, 0xea, 0x5e, 0x05, 0x5e, 0xe8, 0x46, + 0x01, 0x73, 0xd4, 0x3d, 0xe0, 0x46, 0x00, 0xe0, + 0xd0, 0x00, 0x70, 0xc0, 0x10, 0xc1, 0x00, 0xe0, + 0xd0, 0x08, 0x70, 0x00, 0x10, 0x23, 0xea, 0x75, + 0xc0, 0x83, 0x10, 0x9d, 0x30, 0xc2, 0x10, 0x9f, + 0x30, 0xc2, 0x00, 0xef, 0xd0, 0xac, 0x70, 0x82, + 0x10, 0xa3, 0xea, 0x75, 0x10, 0xc1, 0xc0, 0x83, + 0x30, 0x81, 0xe6, 0x7e, 0xc0, 0x83, 0x20, 0x81, + 0xf6, 0x7f, 0xd0, 0x40, 0x30, 0x43, 0x0f, 0xc5, + 0xc0, 0x43, 0x0f, 0xc5, 0x00, 0xed, 0xd1, 0xa4, + 0x72, 0x86, 0x15, 0xa3, 0xee, 0x23, 0x15, 0xa1, + 0xe6, 0x23, 0x08, 0x20, 0xd0, 0x00, 0x5f, 0x00, + 0xd8, 0xc4, 0x15, 0x63, 0xe9, 0x7e, 0x48, 0xd5, + 0x18, 0xde, 0x18, 0xe0, 0xe9, 0xc2, 0x00, 0xed, + 0xd1, 0xb4, 0x79, 0xc6, 0x19, 0xe0, 0xe9, 0x8c, + 0x00, 0xed, 0xd0, 0x3a, 0x79, 0xc6, 0x69, 0xc0, + 0xd9, 0xc0, 0x69, 0xc6, 0x00, 0xed, 0xd0, 0x38, + 0x79, 0x40, 0x19, 0x60, 0xe9, 0x98, 0x00, 0x28, + 0xd0, 0x24, 0x70, 0x40, 0x02, 0x20, 0xd0, 0x80, + 0x50, 0x42, 0x60, 0x40, 0x15, 0xa3, 0xe9, 0x9f, + 0x00, 0xec, 0xd1, 0xb8, 0x79, 0xc6, 0x69, 0x46, + 0xc9, 0x67, 0x00, 0xec, 0xd9, 0xb4, 0x70, 0x66, + 0x00, 0xec, 0xd1, 0xbc, 0x70, 0x06, 0x10, 0x20, + 0xed, 0xbe, 0x10, 0x60, 0xe9, 0xc1, 0x00, 0xe0, + 0xda, 0xa8, 0x7a, 0xaa, 0xc0, 0x2a, 0x10, 0x1f, + 0x00, 0x22, 0xd0, 0xa0, 0x70, 0x82, 0x20, 0x6a, + 0x00, 0x9f, 0xe9, 0xb5, 0x20, 0x40, 0x19, 0x60, + 0xf9, 0xb8, 0xc9, 0x41, 0xb0, 0x48, 0x30, 0x65, + 0xf5, 0xbd, 0xb0, 0x70, 0xed, 0xbe, 0xd9, 0x40, + 0x00, 0xed, 0xd1, 0xbc, 0x69, 0x46, 0x69, 0x66, + 0x12, 0xa4, 0xea, 0x21, 0x00, 0xec, 0xd1, 0xbc, + 0x73, 0xc6, 0x15, 0xa3, 0xe9, 0xdf, 0x33, 0xe3, + 0xe5, 0xd3, 0xed, 0xd2, 0x63, 0xc6, 0x00, 0x21, + 0xd1, 0xa8, 0x63, 0xc6, 0x00, 0xed, 0xd1, 0xa0, + 0x63, 0xc6, 0x15, 0xa1, 0xf9, 0xdc, 0x12, 0xa3, + 0xe5, 0xe3, 0xd3, 0xc2, 0x00, 0xec, 0xd1, 0xbc, + 0x63, 0xc6, 0xe1, 0xe3, 0x12, 0xa3, 0xea, 0x21, + 0xe1, 0xe3, 0x12, 0xa2, 0xf6, 0x21, 0x13, 0xe0, + 0xfa, 0x21, 0x00, 0xee, 0xd1, 0x8c, 0x78, 0x06, + 0xb1, 0xbc, 0x78, 0x46, 0xb1, 0xbc, 0x78, 0x86, + 0xd1, 0x88, 0x72, 0x46, 0xd1, 0x84, 0x73, 0x06, + 0x13, 0x20, 0xf9, 0xe3, 0x00, 0x64, 0xd1, 0xa0, + 0x70, 0x46, 0xd0, 0xa2, 0x30, 0x81, 0xe9, 0xff, + 0x10, 0x70, 0xea, 0x11, 0x10, 0x6d, 0xea, 0x14, + 0x10, 0x76, 0xea, 0x19, 0x10, 0x7a, 0xea, 0x28, + 0xe2, 0x3b, 0x18, 0xe0, 0xea, 0x3b, 0x00, 0xed, + 0xd1, 0x80, 0x70, 0x86, 0xb0, 0x81, 0xd0, 0x3f, + 0x40, 0x02, 0x10, 0x20, 0xea, 0x0c, 0x60, 0x86, + 0xf3, 0x8a, 0xe1, 0xe3, 0xc0, 0x02, 0x10, 0x1a, + 0x50, 0x80, 0x60, 0x86, 0xe2, 0x3b, 0x15, 0xa3, + 0xea, 0x21, 0xe2, 0xe9, 0xd2, 0x80, 0x00, 0xed, + 0xd1, 0xa4, 0x62, 0x86, 0xe3, 0x0c, 0x00, 0xed, + 0xd1, 0x88, 0xd0, 0x60, 0x70, 0x06, 0x50, 0x40, + 0x60, 0x46, 0x15, 0xa3, 0xfb, 0x0c, 0xd5, 0x84, + 0xe3, 0x0c, 0xd5, 0x00, 0xb5, 0x01, 0x01, 0x7a, + 0xde, 0x1a, 0xe0, 0x46, 0x00, 0xed, 0xd1, 0x88, + 0xd0, 0x60, 0x70, 0x06, 0x50, 0x40, 0x60, 0x46, + 0x15, 0xa2, 0xe7, 0x0c, 0xee, 0x21, 0x00, 0x21, + 0xd1, 0x8c, 0x18, 0xe0, 0xfa, 0x39, 0x70, 0x46, + 0x10, 0x61, 0xea, 0x70, 0xe2, 0x21, 0x65, 0x86, + 0xe2, 0x21, 0x18, 0xe0, 0xea, 0x70, 0xd1, 0x80, + 0x73, 0x06, 0x15, 0xa2, 0xee, 0x68, 0x00, 0x22, + 0xd1, 0x80, 0x70, 0x46, 0x6b, 0x06, 0xcb, 0x01, + 0xb1, 0xb4, 0x70, 0x46, 0x6a, 0xc6, 0xca, 0xc1, + 0x00, 0x65, 0xd1, 0x98, 0x70, 0x46, 0x10, 0x61, + 0xfa, 0x50, 0x02, 0x41, 0xc3, 0x21, 0xc7, 0xe0, + 0x02, 0x50, 0xea, 0x56, 0xc3, 0x20, 0xc7, 0xe1, + 0xd1, 0x88, 0xd0, 0x01, 0x02, 0x40, 0x62, 0x46, + 0x0f, 0xef, 0xd0, 0x7f, 0x30, 0x6f, 0xfa, 0x5f, + 0xc3, 0x20, 0xc7, 0x4c, 0xd0, 0x00, 0x00, 0x65, + 0xd1, 0x98, 0x70, 0x46, 0x60, 0x06, 0xb0, 0x41, + 0x43, 0x01, 0xe2, 0x70, 0xc3, 0x22, 0xc7, 0xcc, + 0xc7, 0x60, 0xc7, 0xa1, 0x02, 0x50, 0xea, 0x70, + 0xc7, 0x61, 0xc7, 0xa0, 0xdb, 0x80, 0xd1, 0x00, + 0x00, 0xef, 0xd1, 0xa8, 0x70, 0x46, 0x10, 0x60, + 0xfa, 0x7a, 0x00, 0xe0, 0xd1, 0x88, 0x70, 0x46, + 0x00, 0x22, 0xd1, 0xb0, 0x70, 0x86, 0x30, 0x81, + 0xea, 0x82, 0x60, 0x46, 0xd0, 0x20, 0xf3, 0x06, + 0x10, 0x63, 0xea, 0x87, 0x10, 0x64, 0xea, 0x87, + 0xe2, 0x95, 0x00, 0xef, 0xd1, 0x6c, 0x71, 0x45, + 0xc0, 0x05, 0x30, 0x01, 0xf6, 0x95, 0xdb, 0x82, + 0xd1, 0x01, 0x10, 0x63, 0xea, 0x95, 0xd1, 0x02, + 0x11, 0x62, 0xea, 0x95, 0xd1, 0x03, 0xd1, 0x8c, + 0x61, 0x06, 0xdb, 0x40, 0x00, 0xe0, 0xd0, 0x00, + 0x71, 0x00, 0xc0, 0x84, 0x10, 0x9c, 0xb0, 0x96, + 0xfa, 0xa0, 0xb1, 0x38, 0xb0, 0x96, 0xfa, 0xa3, + 0xb1, 0x30, 0x00, 0x29, 0xd1, 0x84, 0x00, 0x22, + 0xd0, 0x74, 0x70, 0x86, 0x70, 0xc1, 0x61, 0x06, + 0x30, 0xc2, 0xea, 0xae, 0x60, 0x81, 0xdb, 0x41, + 0xb0, 0x3c, 0xb1, 0xbc, 0xb0, 0x7c, 0x71, 0x00, + 0x70, 0x86, 0x70, 0xc1, 0x61, 0x06, 0x30, 0xc2, + 0xea, 0xb9, 0x60, 0x81, 0xdb, 0x41, 0x00, 0xee, + 0xd1, 0xb4, 0x70, 0x06, 0xb1, 0xbc, 0x70, 0x46, + 0x30, 0x40, 0xea, 0xc2, 0x60, 0x06, 0xdb, 0x41, + 0x00, 0x23, 0xd0, 0x70, 0x30, 0x81, 0xea, 0xc7, + 0x30, 0x81, 0x50, 0x02, 0xea, 0xca, 0xd0, 0x01, + 0x00, 0x22, 0xd1, 0xbc, 0x70, 0x86, 0x30, 0x80, + 0xea, 0xd2, 0x60, 0x06, 0xd0, 0x10, 0xf3, 0x06, + 0x00, 0x22, 0xd1, 0xa4, 0x71, 0x06, 0xd0, 0x01, + 0x41, 0x00, 0x5b, 0x44, 0x5b, 0x6e, 0x6b, 0x46, + 0x00, 0x28, 0xd0, 0x70, 0x70, 0x41, 0x10, 0x62, + 0xfa, 0xe6, 0xd1, 0x84, 0x70, 0x06, 0x10, 0x20, + 0xfa, 0xdf, 0x00, 0x22, 0xd0, 0x00, 0xf3, 0x06, + 0x02, 0x7d, 0xdc, 0x62, 0xe0, 0x46, 0x00, 0xed, + 0xd1, 0x88, 0x71, 0x06, 0x01, 0x1f, 0xfa, 0xfd, + 0xd0, 0x41, 0x41, 0x01, 0xd0, 0x62, 0x00, 0x65, + 0xd0, 0x30, 0x70, 0x00, 0x10, 0x21, 0xea, 0xfa, + 0xee, 0xf9, 0x1a, 0xe1, 0xfa, 0xfa, 0xd0, 0x52, + 0x51, 0x01, 0x61, 0x06, 0xe3, 0x0c, 0x18, 0xe0, + 0xea, 0x70, 0xc7, 0x60, 0xc7, 0xe1, 0x02, 0x50, + 0xea, 0x70, 0xc7, 0x61, 0xc7, 0xe0, 0xe2, 0x70, + 0x00, 0x28, 0xdc, 0xa4, 0x7c, 0x72, 0x5c, 0x40, + 0x6c, 0x72, 0x0f, 0xc5, 0x18, 0xe0, 0xeb, 0x82, + 0xd9, 0x0d, 0x00, 0xee, 0xd1, 0xa4, 0x70, 0x06, + 0x10, 0x21, 0xfb, 0x7f, 0xd9, 0x0c, 0x90, 0x06, + 0x00, 0x10, 0xeb, 0x7f, 0x00, 0x21, 0xd1, 0x88, + 0x7a, 0x06, 0x1a, 0x20, 0xeb, 0x7f, 0xd9, 0x00, + 0x00, 0xed, 0xd1, 0xbc, 0x79, 0x46, 0x19, 0x60, + 0xeb, 0x7f, 0x39, 0x68, 0xc0, 0xe5, 0xc0, 0x25, + 0x10, 0x13, 0xb0, 0x0f, 0xef, 0x7f, 0xb0, 0x22, + 0xe7, 0x7f, 0x00, 0xe0, 0xd1, 0xa8, 0x71, 0x46, + 0x11, 0x5f, 0x29, 0x45, 0x00, 0x22, 0xd0, 0x18, + 0x00, 0x22, 0xd4, 0x54, 0x00, 0x22, 0xd0, 0x9c, + 0x70, 0x00, 0x74, 0x51, 0x70, 0x42, 0x34, 0x40, + 0xe7, 0x3c, 0xd0, 0x40, 0x00, 0x22, 0xd4, 0x50, + 0x74, 0x51, 0x34, 0x40, 0xef, 0x42, 0x20, 0x45, + 0x60, 0x42, 0x39, 0x41, 0x19, 0x60, 0xf7, 0x5e, + 0x00, 0x65, 0xd1, 0xa8, 0x7a, 0x86, 0x29, 0x6a, + 0x19, 0x59, 0xb9, 0x7e, 0xf7, 0x75, 0x15, 0xa3, + 0xf7, 0x57, 0x00, 0xed, 0xd1, 0xac, 0x70, 0x06, + 0x00, 0xed, 0xd1, 0xb0, 0x70, 0x46, 0x30, 0x01, + 0xfb, 0x7f, 0x00, 0x65, 0xd1, 0x84, 0x70, 0x46, + 0xb0, 0x7f, 0x60, 0x46, 0xd5, 0x84, 0xe3, 0x7f, + 0x11, 0x41, 0xd0, 0x4a, 0x00, 0xed, 0xd1, 0xa0, + 0x74, 0x46, 0xd0, 0x00, 0x60, 0x06, 0x30, 0xc5, + 0x39, 0x45, 0xe7, 0x6e, 0x14, 0x60, 0xeb, 0x6b, + 0xf3, 0x85, 0xb0, 0x41, 0xef, 0x65, 0xe3, 0x71, + 0x00, 0x66, 0xd1, 0xa0, 0x60, 0xc6, 0x15, 0xa3, + 0xeb, 0x7f, 0xf3, 0x85, 0xe3, 0x7f, 0xd9, 0x01, + 0x00, 0x66, 0xd1, 0xa0, 0x70, 0x06, 0x30, 0x03, + 0xe7, 0x7e, 0x10, 0x1d, 0x10, 0x3b, 0xe7, 0x7f, + 0x60, 0xc6, 0x00, 0x66, 0xd1, 0xa4, 0x69, 0x06, + 0x15, 0xa4, 0xea, 0x23, 0xe2, 0x3b, 0x00, 0x65, + 0xdd, 0x08, 0x7c, 0xf4, 0xbc, 0xff, 0x6c, 0xf4, + 0x00, 0xef, 0xdd, 0x10, 0x7c, 0xf4, 0xbc, 0xfe, + 0x6c, 0xf4, 0xc0, 0x3f, 0xf1, 0x18, 0xf1, 0x16, + 0xf1, 0x18, 0x00, 0x05, 0x08, 0x20, 0xd0, 0x40, + 0x5f, 0x01, 0x15, 0x63, 0xe9, 0x77, 0x05, 0x5e, + 0xea, 0xf2, 0x00, 0x22, 0xd1, 0xa0, 0x6b, 0x06, + 0x00, 0x22, 0xd1, 0xa8, 0x6b, 0xc6, 0x00, 0x22, + 0xd1, 0xac, 0x6a, 0xc6, 0x00, 0xee, 0xd0, 0x0c, + 0x00, 0xe6, 0xd1, 0x9c, 0x70, 0x40, 0x30, 0x5f, + 0xe9, 0x8d, 0xb0, 0x3c, 0xb1, 0xb4, 0x70, 0x40, + 0x30, 0x5f, 0xe9, 0x8d, 0xb1, 0xb4, 0x00, 0xe6, + 0xd0, 0x10, 0xd0, 0x83, 0x70, 0x40, 0x60, 0x46, + 0xb0, 0x3c, 0xb1, 0xbc, 0xb0, 0x81, 0xed, 0x90, + 0x00, 0xee, 0xd0, 0x0c, 0x00, 0xe6, 0xd1, 0x9c, + 0x70, 0x40, 0x30, 0x4c, 0xe9, 0xa3, 0xb0, 0x3c, + 0xb1, 0xb4, 0x70, 0x40, 0x30, 0x4c, 0xe9, 0xa3, + 0xb1, 0xb4, 0x00, 0xe6, 0xd0, 0x00, 0x61, 0x80, + 0x00, 0x21, 0xd1, 0xb4, 0x70, 0x06, 0x10, 0x20, + 0xe9, 0xae, 0xd0, 0x00, 0x60, 0x06, 0xf1, 0x18, + 0x00, 0x21, 0xd1, 0x8c, 0x70, 0x46, 0x65, 0x86, + 0xde, 0xc0, 0x00, 0xee, 0xd0, 0x20, 0x70, 0x00, + 0x10, 0x22, 0xfd, 0xb9, 0xde, 0xc2, 0x00, 0x21, + 0xd0, 0x04, 0x70, 0x00, 0x10, 0x21, 0xe9, 0xc0, + 0x15, 0xa3, 0xe9, 0xdc, 0xd0, 0x02, 0x4c, 0x00, + 0x10, 0x63, 0xe9, 0xc5, 0xcc, 0x3b, 0xd0, 0x04, + 0x63, 0x00, 0xd0, 0x00, 0x70, 0x00, 0x30, 0x1f, + 0xfa, 0xf2, 0xd0, 0x18, 0x70, 0x00, 0x10, 0x20, + 0xed, 0xc7, 0xd0, 0x04, 0x70, 0x80, 0x10, 0xa0, + 0xea, 0xf2, 0xf1, 0x16, 0x00, 0x21, 0xd0, 0x9a, + 0xc0, 0x39, 0x30, 0x1f, 0x10, 0x18, 0x30, 0x02, + 0xfd, 0xcf, 0xe2, 0xf2, 0x00, 0xe0, 0xd9, 0x04, + 0x79, 0x24, 0xb9, 0x38, 0x19, 0x1c, 0xd0, 0x1e, + 0x30, 0x24, 0xf5, 0xe5, 0x29, 0x00, 0xdc, 0x88, + 0x4c, 0xac, 0xd0, 0x02, 0x40, 0x2c, 0x10, 0x02, + 0x0c, 0x80, 0x10, 0x63, 0xea, 0x5a, 0x15, 0x63, + 0xf9, 0xf0, 0xf1, 0x18, 0xdc, 0x1e, 0x1e, 0xe0, + 0xe9, 0xf6, 0x15, 0x63, 0xf9, 0xf6, 0xbe, 0xfc, + 0xd0, 0x2c, 0x6c, 0x00, 0xcc, 0x24, 0xd9, 0x40, + 0x06, 0x50, 0xea, 0x0c, 0xc0, 0x24, 0xb0, 0x0f, + 0xfe, 0x0c, 0xd9, 0x74, 0x79, 0x65, 0x19, 0x5f, + 0x30, 0x25, 0xee, 0x05, 0x29, 0x40, 0x19, 0x5f, + 0x19, 0x41, 0xc0, 0x25, 0x20, 0x30, 0x30, 0x24, + 0xe6, 0x0c, 0x3c, 0x00, 0xd0, 0x38, 0x69, 0x40, + 0x1c, 0x05, 0xbc, 0x38, 0x3c, 0x32, 0x5c, 0x3b, + 0xbc, 0x3f, 0xd8, 0xec, 0x78, 0xe3, 0xc0, 0xa3, + 0x10, 0xaf, 0xf6, 0x19, 0xd0, 0x8f, 0x02, 0xe4, + 0xd8, 0x00, 0xd0, 0xc0, 0x20, 0xe0, 0xb0, 0x81, + 0xee, 0x1c, 0xd0, 0x30, 0x60, 0xc0, 0x00, 0xab, + 0xd0, 0x30, 0xc0, 0xc0, 0xd8, 0x40, 0xc1, 0x23, + 0xd4, 0x5e, 0x34, 0x63, 0xdc, 0x40, 0x0c, 0x1f, + 0xfa, 0x45, 0xc0, 0x65, 0xb0, 0x41, 0xe6, 0x31, + 0x68, 0x40, 0xb0, 0x3c, 0xe2, 0x2c, 0xc0, 0xc0, + 0x34, 0x65, 0xdc, 0x48, 0x4c, 0x70, 0x1c, 0x5f, + 0x20, 0xf1, 0x15, 0x63, 0xfa, 0x46, 0xf2, 0x3e, + 0xc1, 0x11, 0xc0, 0x83, 0xf2, 0x8f, 0xe2, 0x59, + 0xb1, 0x01, 0xe6, 0x44, 0x68, 0x40, 0x28, 0x60, + 0xb0, 0x3c, 0xe2, 0x3e, 0x0f, 0xc5, 0xd9, 0x40, + 0xb1, 0x0f, 0x11, 0x01, 0x21, 0x25, 0xf2, 0x3e, + 0xc1, 0x11, 0xb1, 0x01, 0xe6, 0x59, 0x20, 0x31, + 0x68, 0x40, 0x30, 0x31, 0xb0, 0x3c, 0x28, 0x60, + 0x70, 0x43, 0x30, 0x31, 0x60, 0x40, 0x20, 0x31, + 0xb0, 0x3c, 0xb0, 0xf8, 0xe2, 0x4b, 0xe2, 0xe1, + 0xd8, 0xec, 0x78, 0xe3, 0x00, 0xa8, 0xd0, 0x80, + 0x00, 0xa8, 0xd1, 0x44, 0x00, 0xab, 0xd0, 0x30, + 0xc0, 0xc0, 0x0c, 0x1f, 0xfa, 0x9d, 0xd9, 0x78, + 0x79, 0x65, 0x39, 0x25, 0x19, 0x5f, 0xc9, 0xa5, + 0x19, 0x83, 0x20, 0x26, 0x20, 0xe6, 0x20, 0xa6, + 0x21, 0x66, 0xc1, 0x23, 0xc0, 0x64, 0x10, 0x5f, + 0x10, 0x9d, 0x20, 0x81, 0x31, 0x01, 0x30, 0x44, + 0xf6, 0x78, 0x21, 0x01, 0x30, 0x84, 0x10, 0x83, + 0xc4, 0x64, 0x34, 0x63, 0xdc, 0x48, 0x4c, 0x70, + 0x1c, 0x5f, 0x15, 0x63, 0xfa, 0xad, 0x20, 0xb1, + 0xf2, 0x8f, 0xc1, 0x24, 0x11, 0x1f, 0xc0, 0x85, + 0x30, 0xb1, 0xf2, 0x8f, 0xc1, 0x11, 0xc0, 0x83, + 0x0c, 0x9d, 0xfa, 0x8d, 0xb0, 0xbc, 0xf2, 0x8f, + 0xe2, 0xd6, 0xb1, 0x01, 0xe6, 0x44, 0x70, 0x42, + 0xb0, 0xb8, 0x60, 0x40, 0xb0, 0x3c, 0xe2, 0x8f, + 0xb1, 0x01, 0xe6, 0x44, 0x70, 0x42, 0xb0, 0xb8, + 0x60, 0x40, 0xb0, 0x38, 0xe2, 0x96, 0x00, 0xab, + 0xd0, 0x34, 0xc1, 0x23, 0xb1, 0x0f, 0xf2, 0x96, + 0xd1, 0x1e, 0x31, 0x23, 0x00, 0xa8, 0xd0, 0x84, + 0xf2, 0x96, 0xd1, 0x0f, 0x00, 0xa8, 0xd0, 0x84, + 0xc0, 0x03, 0xf2, 0x96, 0xe2, 0xd6, 0xd8, 0x82, + 0x48, 0x95, 0x18, 0x81, 0xb1, 0x01, 0xe6, 0xc3, + 0x20, 0xb1, 0x70, 0x42, 0x30, 0xb1, 0x20, 0x22, + 0x60, 0x40, 0x30, 0x22, 0xb0, 0xbc, 0xb0, 0x3c, + 0x30, 0xb1, 0x70, 0x42, 0x20, 0xb1, 0x30, 0x22, + 0x60, 0x40, 0x20, 0x22, 0xb0, 0xbc, 0xb0, 0x3c, + 0xe2, 0xb0, 0xc1, 0x11, 0xc0, 0x85, 0x30, 0xb1, + 0x20, 0xe2, 0xb1, 0x01, 0xe6, 0xd6, 0x70, 0x42, + 0xb0, 0xb8, 0x20, 0x22, 0x60, 0x40, 0x30, 0x22, + 0xb0, 0x3c, 0x70, 0x43, 0xb0, 0xf8, 0x30, 0x22, + 0x60, 0x40, 0x20, 0x22, 0xb0, 0x3c, 0xe2, 0xc7, + 0xd0, 0x08, 0x5c, 0x00, 0x3c, 0x32, 0xd0, 0x04, + 0x40, 0x30, 0x3c, 0x00, 0x15, 0x63, 0xfa, 0xe1, + 0x1e, 0xe0, 0xea, 0xe1, 0xbc, 0x3c, 0x00, 0xab, + 0xd0, 0xb0, 0x00, 0xa8, 0xd0, 0x00, 0x00, 0x20, + 0xd1, 0x1e, 0x70, 0x42, 0xb0, 0xbc, 0x60, 0x40, + 0xb0, 0x3c, 0xb1, 0x01, 0xee, 0xe7, 0xd0, 0x30, + 0x30, 0x30, 0xee, 0xed, 0xd0, 0x04, 0x63, 0x00, + 0x08, 0x20, 0xd0, 0x40, 0x3f, 0x01, 0x02, 0xba, + 0xd0, 0x3c, 0xe0, 0x46, 0x01, 0x46, 0xd0, 0x08, + 0x94, 0x89, 0xd0, 0x8c, 0x44, 0x82, 0x14, 0x9e, + 0x30, 0x12, 0xd0, 0x88, 0x10, 0x80, 0x00, 0xe8, + 0xd1, 0x80, 0x70, 0xc6, 0x00, 0x06, 0xa0, 0xbd, + 0xa0, 0xfc, 0x80, 0x3f, 0xb1, 0xbe, 0x60, 0xc6, + 0x00, 0x06, 0x80, 0xa9, 0x80, 0x3f, 0x80, 0x2a, + 0x80, 0x3f, 0x00, 0x21, 0xd0, 0x3c, 0x00, 0x0a, + 0xb1, 0x82, 0xd0, 0x6b, 0x70, 0x46, 0x00, 0x06, + 0x80, 0x07, 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, + 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, + 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, + 0xd0, 0x00, 0xa0, 0x29, 0x80, 0x2b, 0x0c, 0x20, + 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x27, 0x90, 0x09, + 0xd0, 0x41, 0x40, 0x01, 0xd0, 0x44, 0x40, 0x70, + 0x20, 0x01, 0xa0, 0x27, 0x80, 0x3f, 0x00, 0xc6, + 0x15, 0x63, 0xe9, 0xae, 0x05, 0x5e, 0xe9, 0xbe, + 0x00, 0xe0, 0xd0, 0x40, 0x70, 0x81, 0x10, 0x9c, + 0xb0, 0x96, 0xf9, 0xb7, 0x00, 0x21, 0xd0, 0x40, + 0xe1, 0xbb, 0xb0, 0x96, 0xf9, 0xbe, 0x00, 0x22, + 0xd0, 0x40, 0x27, 0xc1, 0x27, 0x41, 0x27, 0x81, + 0x90, 0x83, 0x00, 0x64, 0xd0, 0x10, 0x60, 0x80, + 0x01, 0x46, 0x82, 0x34, 0x80, 0x3f, 0x00, 0x64, + 0xd0, 0x14, 0x67, 0x40, 0x80, 0x34, 0x80, 0x3f, + 0x00, 0xc6, 0x90, 0xae, 0x00, 0x64, 0xd0, 0x18, + 0x60, 0x80, 0x90, 0xa6, 0x00, 0x64, 0xd0, 0x1c, + 0x60, 0x80, 0x15, 0x63, 0xe9, 0xe3, 0x0c, 0x1f, + 0xe9, 0xe3, 0x05, 0x50, 0xf9, 0xe3, 0x15, 0xa3, + 0xf9, 0xe3, 0x90, 0x4d, 0x10, 0x60, 0xe5, 0xdb, + 0x00, 0x06, 0x05, 0x0d, 0x01, 0x7a, 0xde, 0x1a, + 0xe0, 0x46, 0x15, 0xa3, 0xf9, 0xfb, 0x00, 0x21, + 0xd0, 0x04, 0x70, 0x00, 0x10, 0x21, 0xe9, 0xfb, + 0xd0, 0x38, 0x70, 0x00, 0x15, 0x63, 0xe9, 0xef, + 0x10, 0x1f, 0x15, 0x21, 0xe5, 0xe0, 0xd0, 0x5e, + 0x30, 0x54, 0xe5, 0xe0, 0xc0, 0x40, 0xb0, 0x7f, + 0x30, 0x54, 0xe9, 0xfb, 0x0c, 0x09, 0x05, 0x0d, + 0xe1, 0xef, 0xc0, 0x5f, 0x10, 0x58, 0x10, 0x48, + 0x00, 0xee, 0xd0, 0x8c, 0xd0, 0xc3, 0x70, 0x02, + 0x30, 0x01, 0xea, 0x10, 0xb0, 0xbc, 0xb0, 0xc1, + 0xee, 0x01, 0x00, 0x26, 0xd0, 0x20, 0x70, 0x40, + 0xb0, 0x7f, 0x60, 0x40, 0x15, 0xa3, 0xea, 0x0f, + 0xb0, 0x88, 0x77, 0xc2, 0x80, 0x07, 0x09, 0x49, + 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, + 0x00, 0x4d, 0xa0, 0x6c, 0xd3, 0x80, 0xd0, 0xa1, + 0x00, 0x88, 0xd0, 0xa9, 0x00, 0x4d, 0x00, 0x50, + 0xfa, 0x1a, 0x0c, 0x49, 0x00, 0x8d, 0xc0, 0x42, + 0x10, 0x60, 0xea, 0x2a, 0xb0, 0x5e, 0xb0, 0x43, + 0xfe, 0x34, 0xd0, 0x61, 0x23, 0x81, 0xe2, 0x1f, + 0x0c, 0x09, 0x05, 0x0d, 0x15, 0x20, 0xfe, 0x31, + 0xd0, 0x5f, 0x30, 0x54, 0xee, 0x10, 0x03, 0xb3, + 0xd8, 0x29, 0xe0, 0x46, 0xc6, 0xd4, 0xb6, 0xc1, + 0xe6, 0x31, 0xd0, 0x5e, 0x30, 0x5b, 0xfe, 0x31, + 0xd7, 0x00, 0xb7, 0x01, 0xd3, 0x81, 0x00, 0x27, + 0xd0, 0x10, 0xd0, 0x81, 0x60, 0x80, 0x15, 0x63, + 0xfa, 0x54, 0x00, 0x22, 0xdc, 0xd8, 0x03, 0xf7, + 0xd2, 0x10, 0xf0, 0x4a, 0x15, 0xa3, 0xfa, 0x51, + 0x02, 0xf6, 0xde, 0x26, 0x0c, 0x10, 0xf8, 0x46, + 0x02, 0xfb, 0xda, 0x22, 0xe0, 0x46, 0x02, 0xf1, + 0xd8, 0x2b, 0xe0, 0x46, 0x00, 0x22, 0xdc, 0xd8, + 0x03, 0xf9, 0xd2, 0x10, 0xf0, 0x4a, 0x03, 0x34, + 0xdc, 0x20, 0x15, 0xa3, 0xe8, 0x46, 0x02, 0xff, + 0xde, 0x27, 0xe0, 0x46, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xe0, + 0xe1, 0xec, 0xe2, 0x12, 0xe2, 0x14, 0xe1, 0xc7, + 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8d, 0x06, 0x50, + 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, + 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x5e, + 0x30, 0x5b, 0xfc, 0x11, 0xc0, 0x39, 0x30, 0x31, + 0x10, 0x12, 0x10, 0x20, 0xe9, 0x88, 0x03, 0x10, + 0xe9, 0x93, 0x0f, 0x19, 0xf9, 0x8f, 0xd1, 0x44, + 0xe1, 0x79, 0x03, 0xde, 0xf9, 0xba, 0x03, 0xdf, + 0xe9, 0x99, 0xd3, 0x40, 0xca, 0x50, 0xd1, 0x42, + 0xe2, 0xea, 0xc0, 0x50, 0x10, 0x54, 0xc0, 0x90, + 0x10, 0x8c, 0x10, 0x92, 0x10, 0xe0, 0xe5, 0xa8, + 0xc0, 0x01, 0x10, 0x01, 0x20, 0x40, 0xc0, 0x02, + 0x10, 0x01, 0x20, 0x80, 0x10, 0x60, 0xfd, 0xab, + 0xb0, 0x7f, 0x10, 0xa0, 0xfd, 0xae, 0xb0, 0xbf, + 0x10, 0x5f, 0x10, 0x9f, 0x00, 0xef, 0xd0, 0x3e, + 0x20, 0x52, 0x20, 0x83, 0x20, 0x93, 0x10, 0x4c, + 0x10, 0x82, 0x40, 0x80, 0x50, 0x42, 0x0f, 0xc5, + 0xcb, 0xaa, 0xcb, 0xeb, 0xca, 0x50, 0xd0, 0xc0, + 0xb0, 0xc1, 0xf1, 0x9b, 0xcb, 0x01, 0xd0, 0xc1, + 0xf1, 0x9b, 0xcb, 0x41, 0xba, 0x7f, 0xbb, 0x3f, + 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, + 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x48, + 0xcc, 0xb1, 0x1c, 0x9f, 0x06, 0xd0, 0xe9, 0xd5, + 0x01, 0x69, 0xd0, 0x20, 0x3c, 0x80, 0xc0, 0x1c, + 0x10, 0x08, 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, + 0x01, 0x74, 0xd6, 0x00, 0x2c, 0x80, 0xde, 0x84, + 0xde, 0xc4, 0xe3, 0x1e, 0xd3, 0xc2, 0xf2, 0xd3, + 0x13, 0xa0, 0xed, 0xe5, 0xf2, 0x32, 0xb3, 0x81, + 0xe9, 0xec, 0x80, 0x07, 0xd4, 0x00, 0xc4, 0x50, + 0xd3, 0x08, 0xe2, 0x95, 0xd0, 0x71, 0x20, 0x56, + 0x00, 0x48, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, + 0xe9, 0xfa, 0x06, 0x5e, 0xfa, 0x03, 0x08, 0x89, + 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xfa, 0xd3, 0xc4, + 0x06, 0x5e, 0xfa, 0x03, 0xd0, 0x43, 0x40, 0x4c, + 0xea, 0x03, 0x08, 0x49, 0x00, 0x8d, 0x10, 0x87, + 0x53, 0x02, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, + 0x03, 0x1c, 0xea, 0x0a, 0x09, 0x49, 0x00, 0x0d, + 0xd0, 0x9f, 0x40, 0x02, 0xb0, 0x20, 0x03, 0x19, + 0xea, 0x10, 0xb0, 0x20, 0xa0, 0x2c, 0xe2, 0x5b, + 0x06, 0x5f, 0xfa, 0x80, 0xd4, 0x00, 0xc4, 0x50, + 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xd3, + 0xe1, 0xdc, 0xe2, 0x00, 0xe2, 0x02, 0xe1, 0xac, + 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x91, 0x06, 0x50, + 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, + 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x5e, + 0x30, 0x5b, 0xfc, 0x11, 0xbc, 0x10, 0xd0, 0x10, + 0x0c, 0x1e, 0xf9, 0x8e, 0xbc, 0x10, 0xd0, 0x30, + 0xc0, 0x40, 0x30, 0x70, 0xed, 0x8e, 0x03, 0x10, + 0xe9, 0x97, 0x0f, 0x19, 0xf9, 0x93, 0xd1, 0x44, + 0xe1, 0x79, 0x03, 0xdf, 0xe9, 0xa1, 0xd3, 0x40, + 0xca, 0x50, 0xcb, 0x52, 0x03, 0x1d, 0xf9, 0xa8, + 0xca, 0x12, 0xca, 0x52, 0xe1, 0xa5, 0x03, 0x1d, + 0xf9, 0xa8, 0xca, 0x12, 0xca, 0x53, 0xca, 0xae, + 0xca, 0xef, 0xb1, 0x7e, 0x03, 0x1e, 0xfa, 0xea, + 0xb1, 0x7e, 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, + 0x2c, 0x40, 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xd2, + 0x00, 0xa8, 0xd0, 0x00, 0xcc, 0x5b, 0x1c, 0x5f, + 0x1c, 0x43, 0x20, 0x31, 0x7c, 0x40, 0xb0, 0x3c, + 0x7e, 0x80, 0xcc, 0xb1, 0xce, 0xfa, 0x1c, 0x9f, + 0x1e, 0xdf, 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, + 0xe9, 0xc4, 0x3c, 0x80, 0x0e, 0xd9, 0xe9, 0xc7, + 0x3e, 0xc0, 0x3e, 0xf2, 0x3e, 0xb1, 0xd0, 0x01, + 0x40, 0x1b, 0x10, 0x05, 0x20, 0x1f, 0x2c, 0x40, + 0x2c, 0x80, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, + 0xe3, 0x1e, 0xd3, 0xc2, 0xf2, 0xd3, 0x13, 0xa0, + 0xed, 0xd8, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xdc, + 0x80, 0x07, 0xe2, 0x95, 0x0d, 0x09, 0xd1, 0x8c, + 0x03, 0x0d, 0x41, 0x8c, 0xe9, 0xe8, 0x06, 0x5e, + 0xf9, 0xf1, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, + 0xf9, 0xe8, 0xd3, 0xc4, 0x06, 0x5e, 0xf9, 0xf1, + 0xd0, 0x43, 0x40, 0x4c, 0xe9, 0xf1, 0x08, 0x49, + 0x00, 0x8d, 0x10, 0x87, 0x53, 0x02, 0x01, 0x46, + 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, 0xe9, 0xf8, + 0x09, 0x49, 0x00, 0x0d, 0xd0, 0x9f, 0x40, 0x02, + 0xb0, 0x20, 0x03, 0x19, 0xe9, 0xfe, 0xb0, 0x20, + 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x80, + 0xd4, 0x00, 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, + 0xe2, 0x8d, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xc1, + 0xe1, 0xca, 0xe1, 0xee, 0xe1, 0xf0, 0xe1, 0xa8, + 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8d, 0x06, 0x50, + 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, + 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x5e, + 0x30, 0x5b, 0xfc, 0x11, 0xc0, 0x39, 0x30, 0x31, + 0x10, 0x12, 0x10, 0x20, 0xe9, 0x88, 0x03, 0x10, + 0xe9, 0x93, 0x0f, 0x19, 0xf9, 0x8f, 0xd1, 0x44, + 0xe1, 0x79, 0x03, 0xdf, 0xe9, 0x9d, 0xd3, 0x40, + 0xca, 0x50, 0xcb, 0x52, 0x03, 0x1d, 0xf9, 0xa4, + 0xca, 0x12, 0xca, 0x52, 0xe1, 0xa1, 0x03, 0x1d, + 0xf9, 0xa4, 0xca, 0x12, 0xca, 0x53, 0xca, 0xae, + 0xca, 0xef, 0xb1, 0x7e, 0x03, 0x1e, 0xfa, 0xea, + 0xb1, 0x7e, 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, + 0x2c, 0x5b, 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, + 0x1c, 0x48, 0xcc, 0xb1, 0x1c, 0x9f, 0x06, 0xd0, + 0xe9, 0xb6, 0x01, 0x69, 0xd0, 0x20, 0x3c, 0x80, + 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, 0x2c, 0x40, + 0x2c, 0x80, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, + 0xde, 0x84, 0xde, 0xc4, 0xe3, 0x1e, 0xd3, 0xc2, + 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xc6, 0xf2, 0x32, + 0xb3, 0x81, 0xe9, 0xca, 0x80, 0x07, 0xe2, 0x95, + 0x0d, 0x09, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, + 0xe9, 0xd6, 0x06, 0x5e, 0xf9, 0xdf, 0x08, 0x89, + 0x03, 0xcd, 0x13, 0xe3, 0xf9, 0xd6, 0xd3, 0xc4, + 0x06, 0x5e, 0xf9, 0xdf, 0xd0, 0x43, 0x40, 0x4c, + 0xe9, 0xdf, 0x08, 0x49, 0x00, 0x8d, 0x10, 0x87, + 0x53, 0x02, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, + 0x03, 0x1c, 0xe9, 0xe6, 0x09, 0x49, 0x00, 0x0d, + 0xd0, 0x9f, 0x40, 0x02, 0xb0, 0x20, 0x03, 0x19, + 0xe9, 0xec, 0xb0, 0x20, 0xa0, 0x2c, 0xe2, 0x5b, + 0x06, 0x5f, 0xfa, 0x80, 0xd4, 0x00, 0xc4, 0x50, + 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xdb, + 0xe1, 0xe9, 0xe2, 0x00, 0xe2, 0x02, 0xe1, 0xc3, + 0xe1, 0x65, 0x30, 0x5a, 0xe5, 0x8d, 0x06, 0x50, + 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, + 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x4f, + 0x30, 0x5b, 0xfc, 0x11, 0xc0, 0x39, 0x30, 0x31, + 0x10, 0x11, 0x10, 0x20, 0xe9, 0x88, 0x03, 0x10, + 0xe9, 0x93, 0x0f, 0x19, 0xf9, 0x8f, 0xd1, 0x44, + 0xe1, 0x79, 0x03, 0xd0, 0xf9, 0x98, 0xca, 0x50, + 0x03, 0xde, 0xf9, 0x9a, 0xd1, 0x42, 0xe2, 0xea, + 0xcb, 0xaa, 0xcb, 0xeb, 0xc0, 0x50, 0x10, 0x54, + 0xc0, 0x90, 0x10, 0x8c, 0x10, 0x92, 0xd0, 0xc1, + 0x05, 0x50, 0xe9, 0xa5, 0xb0, 0xc2, 0x10, 0x60, + 0xfd, 0xa8, 0xb0, 0x7f, 0x10, 0xa0, 0xfd, 0xab, + 0xb0, 0xbf, 0x10, 0x5f, 0x10, 0x9f, 0x00, 0xef, + 0xd0, 0x3e, 0x20, 0x52, 0x20, 0x83, 0x20, 0x93, + 0x10, 0x4c, 0x10, 0x82, 0x40, 0x80, 0x50, 0x42, + 0xd0, 0x81, 0x14, 0x1f, 0x14, 0x01, 0x05, 0x50, + 0xe9, 0xbd, 0x50, 0x42, 0xe1, 0xbe, 0x54, 0x02, + 0xca, 0x10, 0xca, 0x50, 0xcb, 0x01, 0xcb, 0x41, + 0xe2, 0xea, 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, + 0xc0, 0x31, 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x49, + 0xcc, 0xb1, 0x1c, 0x9f, 0xc0, 0x1c, 0x10, 0x08, + 0x20, 0x1f, 0x05, 0x50, 0xf9, 0xd2, 0xb0, 0x3c, + 0x2c, 0x40, 0x2c, 0x80, 0x01, 0x74, 0xd6, 0x00, + 0x2c, 0x80, 0x02, 0xe4, 0xde, 0x80, 0xde, 0xc1, + 0xe3, 0x1e, 0xd3, 0xc0, 0xf2, 0xd3, 0x13, 0xa0, + 0xed, 0xe0, 0xf2, 0x32, 0xb3, 0x81, 0xe9, 0xe9, + 0x80, 0x07, 0xd4, 0x02, 0x44, 0x15, 0x14, 0x1f, + 0xc4, 0x50, 0xd3, 0x08, 0xe2, 0x95, 0xd0, 0x71, + 0x20, 0x56, 0x00, 0x48, 0xd1, 0x8c, 0x03, 0x0d, + 0x41, 0x8c, 0xe9, 0xf7, 0x08, 0x89, 0x03, 0xcd, + 0x13, 0xe3, 0xf9, 0xf6, 0xd3, 0xc4, 0xe1, 0xf7, + 0xb3, 0xc1, 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, + 0x03, 0x1c, 0xe9, 0xfe, 0x09, 0x49, 0x00, 0x0d, + 0xa0, 0x2c, 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x7f, + 0xd4, 0x02, 0x44, 0x15, 0x14, 0x1f, 0xc4, 0x50, + 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xc9, + 0xe1, 0xd2, 0xe1, 0xe7, 0xe1, 0xe9, 0xe1, 0xab, + 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x91, 0x06, 0x50, + 0xe9, 0x83, 0xc0, 0x54, 0x30, 0x5b, 0xb0, 0x42, + 0xf8, 0x11, 0x37, 0x1a, 0xb6, 0xff, 0xd0, 0x4f, + 0x30, 0x5b, 0xfc, 0x11, 0xbc, 0x10, 0xd0, 0x10, + 0x0c, 0x1e, 0xf9, 0x8e, 0xbc, 0x10, 0xd0, 0x20, + 0xc0, 0x40, 0x30, 0x70, 0xed, 0x8e, 0x03, 0x10, + 0xe9, 0x97, 0x0f, 0x19, 0xf9, 0x93, 0xd1, 0x44, + 0xe1, 0x79, 0x03, 0xd0, 0xf9, 0xa0, 0xca, 0x50, + 0xcb, 0x52, 0x03, 0x1d, 0xf9, 0xa7, 0xca, 0x12, + 0xca, 0x52, 0xe1, 0xa4, 0x03, 0x1d, 0xf9, 0xa7, + 0xca, 0x12, 0xca, 0x53, 0xca, 0xae, 0xca, 0xef, + 0xb1, 0x7e, 0x03, 0x1e, 0xfa, 0xea, 0xb1, 0x7e, + 0xe2, 0xea, 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, + 0x2c, 0x80, 0x17, 0x20, 0xf9, 0xc8, 0x00, 0x2a, + 0xd0, 0x00, 0x20, 0x1b, 0x20, 0x1b, 0x05, 0x50, + 0xf9, 0xb8, 0xb0, 0x3f, 0x10, 0x02, 0x7c, 0x40, + 0xcc, 0xb1, 0x1c, 0x9f, 0x01, 0x69, 0xd0, 0x3c, + 0x0c, 0x99, 0xe9, 0xc1, 0x3c, 0x80, 0xde, 0xa0, + 0x2c, 0x5f, 0x2c, 0x9f, 0xd0, 0x30, 0x70, 0x00, + 0x2c, 0x80, 0xde, 0xc1, 0xe3, 0x1e, 0xd3, 0xc0, + 0xf2, 0xd3, 0x13, 0xa0, 0xed, 0xce, 0xf2, 0x32, + 0xb3, 0x81, 0xe9, 0xd2, 0x80, 0x07, 0xe2, 0x95, + 0x0d, 0x09, 0xd1, 0x8c, 0x03, 0x0d, 0x41, 0x8c, + 0xe9, 0xde, 0x08, 0x89, 0x03, 0xcd, 0x13, 0xe3, + 0xf9, 0xdd, 0xd3, 0xc4, 0xe1, 0xde, 0xb3, 0xc1, + 0x01, 0x46, 0x90, 0x2c, 0x00, 0xc6, 0x03, 0x1c, + 0xe9, 0xe5, 0x09, 0x49, 0x00, 0x0d, 0xa0, 0x2c, + 0xe2, 0x5b, 0x06, 0x5f, 0xfa, 0x7f, 0xd4, 0x00, + 0xc4, 0x50, 0xc4, 0x90, 0xc4, 0xd0, 0xe2, 0x8d, + 0x50, 0x00, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xa3, + 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8a, + 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x87, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x5e, 0x30, 0x5b, 0xfd, 0xb4, + 0xc0, 0x39, 0x30, 0x31, 0x10, 0x12, 0x10, 0x20, + 0xe9, 0x82, 0xd1, 0x42, 0xd3, 0x40, 0xe2, 0xea, + 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, + 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x48, 0xcc, 0xb1, + 0x1c, 0x9f, 0x06, 0xd0, 0xe9, 0x98, 0x01, 0x69, + 0xd0, 0x20, 0x3c, 0x80, 0xc0, 0x1c, 0x10, 0x08, + 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0x01, 0x74, + 0xd6, 0x00, 0x2c, 0x80, 0xde, 0x84, 0xde, 0xc4, + 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, + 0x30, 0x5a, 0xe5, 0xc8, 0x00, 0x26, 0xd0, 0x00, + 0x70, 0x00, 0x10, 0x20, 0xe9, 0xbf, 0x00, 0xe0, + 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5c, 0x30, 0x5b, + 0xb0, 0x41, 0xed, 0xc8, 0x0f, 0x17, 0xf9, 0xb4, + 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xb8, + 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb3, 0xd8, 0x29, + 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, + 0xe5, 0xc8, 0x0f, 0x17, 0xf9, 0xc3, 0x02, 0xf1, + 0xd8, 0x2b, 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, + 0xe2, 0x95, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xb5, + 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8e, + 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8b, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x5e, 0x30, 0x5b, 0xfd, 0xc6, + 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x88, + 0xbc, 0x10, 0xd0, 0x30, 0xc0, 0x40, 0x30, 0x70, + 0xed, 0x88, 0xd1, 0x42, 0xd3, 0x40, 0xe2, 0xea, + 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, + 0x17, 0x20, 0xf9, 0xb4, 0x00, 0xa8, 0xd0, 0x00, + 0xcc, 0x5b, 0x1c, 0x5f, 0x1c, 0x43, 0x20, 0x31, + 0x7c, 0x40, 0xb0, 0x3c, 0x7e, 0x80, 0xcc, 0xb1, + 0xce, 0xfa, 0x1c, 0x9f, 0x1e, 0xdf, 0x01, 0x69, + 0xd0, 0x3c, 0x0c, 0x99, 0xe9, 0xa6, 0x3c, 0x80, + 0x0e, 0xd9, 0xe9, 0xa9, 0x3e, 0xc0, 0x3e, 0xf2, + 0x3e, 0xb1, 0xd0, 0x01, 0x40, 0x1b, 0x10, 0x05, + 0x20, 0x1f, 0x2c, 0x40, 0x2c, 0x80, 0xd0, 0x30, + 0x70, 0x00, 0x2c, 0x80, 0xe3, 0x1e, 0xf2, 0xd3, + 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xda, + 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, + 0xe9, 0xd1, 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, + 0x10, 0x5c, 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xda, + 0x0f, 0x17, 0xf9, 0xc6, 0x0f, 0x49, 0xf2, 0xd3, + 0x0f, 0x19, 0xf9, 0xca, 0xdf, 0x00, 0x00, 0x06, + 0x03, 0xb3, 0xd8, 0x29, 0xe0, 0x46, 0xc0, 0x5b, + 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xda, 0x0f, 0x17, + 0xf9, 0xd5, 0x02, 0xf6, 0xde, 0x26, 0xe0, 0x46, + 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xa2, + 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8a, + 0xe1, 0x65, 0x30, 0x5a, 0xe5, 0x87, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x4f, 0x30, 0x5b, 0xfd, 0xb3, + 0xc0, 0x39, 0x30, 0x31, 0x10, 0x11, 0x10, 0x20, + 0xe9, 0x82, 0xd1, 0x42, 0xd3, 0x41, 0xe2, 0xea, + 0xcc, 0x5b, 0x1c, 0x42, 0x2c, 0x5b, 0xc0, 0x31, + 0x1c, 0x43, 0x2c, 0x40, 0x1c, 0x49, 0xcc, 0xb1, + 0x1c, 0x9f, 0xc0, 0x1c, 0x10, 0x08, 0x20, 0x1f, + 0x05, 0x50, 0xf9, 0x99, 0xb0, 0x3c, 0x2c, 0x40, + 0x2c, 0x80, 0x01, 0x74, 0xd6, 0x00, 0x2c, 0x80, + 0x02, 0xe4, 0xde, 0x80, 0xde, 0xc1, 0xe3, 0x1e, + 0xf2, 0xd3, 0xc0, 0x5c, 0xb0, 0x7f, 0x30, 0x5a, + 0xe5, 0xc7, 0x00, 0x26, 0xd0, 0x00, 0x70, 0x00, + 0x10, 0x20, 0xe9, 0xbe, 0x00, 0xe0, 0xd0, 0x44, + 0x70, 0x41, 0x10, 0x5b, 0x30, 0x5b, 0xb0, 0x41, + 0xed, 0xc7, 0x0f, 0x17, 0xf9, 0xb3, 0x0f, 0x49, + 0xf2, 0xd3, 0x0f, 0x19, 0xf9, 0xb7, 0xdf, 0x00, + 0x00, 0x06, 0x03, 0xb3, 0xd8, 0x29, 0xe0, 0x46, + 0xc0, 0x5b, 0x30, 0x54, 0xb0, 0x7e, 0xe5, 0xc7, + 0x0f, 0x17, 0xf9, 0xc2, 0x02, 0xff, 0xde, 0x27, + 0xe0, 0x46, 0xd3, 0x08, 0xd3, 0xc0, 0xe2, 0x95, + 0x50, 0x00, 0x50, 0x00, 0x03, 0x75, 0xd2, 0x73, + 0x00, 0x24, 0xdc, 0xd8, 0xf0, 0x4a, 0xe1, 0xac, + 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xe1, 0x8e, + 0xe1, 0x30, 0x30, 0x5a, 0xe5, 0x8b, 0x37, 0x1a, + 0xb6, 0xff, 0xd0, 0x4f, 0x30, 0x5b, 0xfd, 0xbd, + 0xbc, 0x10, 0xd0, 0x10, 0x0c, 0x1e, 0xf9, 0x88, + 0xbc, 0x10, 0xd0, 0x20, 0xc0, 0x40, 0x30, 0x70, + 0xed, 0x88, 0xd1, 0x42, 0xd3, 0x41, 0xe2, 0xea, + 0x00, 0x24, 0xd0, 0x00, 0x2c, 0x40, 0x2c, 0x80, + 0x17, 0x20, 0xf9, 0xab, 0x00, 0x2a, 0xd0, 0x00, + 0x20, 0x1b, 0x20, 0x1b, 0x05, 0x50, 0xf9, 0x9b, + 0xb0, 0x3f, 0x10, 0x02, 0x7c, 0x40, 0xcc, 0xb1, + 0x1c, 0x9f, 0x01, 0x69, 0xd0, 0x3c, 0x0c, 0x99, + 0xe9, 0xa4, 0x3c, 0x80, 0xde, 0xa0, 0x2c, 0x5f, + 0x2c, 0x9f, 0xd0, 0x30, 0x70, 0x00, 0x2c, 0x80, + 0xde, 0xc1, 0xe3, 0x1e, 0xf2, 0xd3, 0xc0, 0x5c, + 0xb0, 0x7f, 0x30, 0x5a, 0xe5, 0xd1, 0x00, 0x26, + 0xd0, 0x00, 0x70, 0x00, 0x10, 0x20, 0xe9, 0xc8, + 0x00, 0xe0, 0xd0, 0x44, 0x70, 0x41, 0x10, 0x5b, + 0x30, 0x5b, 0xb0, 0x41, 0xed, 0xd1, 0x0f, 0x17, + 0xf9, 0xbd, 0x0f, 0x49, 0xf2, 0xd3, 0x0f, 0x19, + 0xf9, 0xc1, 0xdf, 0x00, 0x00, 0x06, 0x03, 0xb3, + 0xd8, 0x29, 0xe0, 0x46, 0xc0, 0x5b, 0x30, 0x54, + 0xb0, 0x7e, 0xe5, 0xd1, 0x0f, 0x17, 0xf9, 0xcc, + 0x03, 0x34, 0xdc, 0x20, 0xe0, 0x46, 0xd3, 0x08, + 0xd3, 0xc0, 0xe2, 0x95, 0xd0, 0x61, 0x23, 0x81, + 0x0c, 0x49, 0xd0, 0x61, 0x00, 0x8d, 0x10, 0xa0, + 0xea, 0x3b, 0x30, 0x42, 0xe6, 0x30, 0x23, 0x82, + 0x0f, 0xc5, 0x0c, 0x09, 0x05, 0x0d, 0x15, 0x20, + 0xfe, 0x45, 0xd0, 0x5f, 0x15, 0x63, 0xea, 0x43, + 0xd0, 0x50, 0x30, 0x54, 0xee, 0x4a, 0x0f, 0x17, + 0xfa, 0x45, 0x03, 0xb3, 0xd8, 0x29, 0xe0, 0x46, + 0x80, 0x07, 0x09, 0x49, 0xd4, 0x00, 0xd4, 0x40, + 0xd4, 0x80, 0xd4, 0xc0, 0x00, 0x4d, 0xa0, 0x6c, + 0xd0, 0xa1, 0x00, 0x88, 0xd0, 0xa9, 0x00, 0x4d, + 0x00, 0x50, 0xfa, 0x53, 0xf2, 0x32, 0xd3, 0x80, + 0xe1, 0x76, 0xd1, 0xc2, 0x41, 0xcf, 0x11, 0xdf, + 0xd0, 0x41, 0x01, 0xc1, 0x00, 0xef, 0xd0, 0xbe, + 0x03, 0x10, 0xf9, 0x77, 0x80, 0x07, 0x21, 0x96, + 0x11, 0xa2, 0xe9, 0x78, 0x03, 0x1d, 0xea, 0x73, + 0xc0, 0xd7, 0xc2, 0x90, 0xf2, 0xa4, 0xc4, 0x0a, + 0x03, 0xd0, 0xea, 0x72, 0xc2, 0x91, 0xf2, 0xa4, + 0xc4, 0x4a, 0x03, 0x1e, 0xea, 0x8d, 0xc0, 0xd8, + 0xc2, 0x92, 0xf2, 0xa4, 0xc4, 0x8a, 0x03, 0xd0, + 0xea, 0x7d, 0xc2, 0x93, 0xf2, 0xa4, 0xc4, 0xca, + 0xe2, 0x8d, 0xd3, 0xc0, 0xc0, 0xd7, 0xc2, 0x90, + 0xf2, 0xa4, 0xc4, 0x0a, 0x03, 0xd0, 0xea, 0x88, + 0xc2, 0x91, 0xf2, 0xa4, 0xc4, 0x4a, 0x08, 0x49, + 0x00, 0x4d, 0x10, 0x61, 0xf8, 0x11, 0x03, 0x1f, + 0xea, 0x93, 0x0d, 0xc9, 0x00, 0x4d, 0xd0, 0x1a, + 0xe2, 0x98, 0x03, 0x10, 0xfa, 0x97, 0xd0, 0x1d, + 0xe2, 0x98, 0xd0, 0x18, 0x0f, 0x16, 0xfa, 0x98, + 0xd0, 0x4c, 0x40, 0x4c, 0x10, 0x6c, 0xea, 0xa2, + 0x03, 0xde, 0xfa, 0xa2, 0x0f, 0x12, 0xfa, 0xa0, + 0x00, 0x08, 0xe2, 0xd9, 0xd2, 0x00, 0x13, 0xe1, + 0xee, 0xa9, 0x08, 0x49, 0x02, 0x0d, 0x00, 0xc8, + 0xc2, 0xca, 0x12, 0x94, 0xd0, 0x1f, 0x30, 0x07, + 0x12, 0xc0, 0xc2, 0x43, 0x12, 0x5a, 0x00, 0x0d, + 0x03, 0xde, 0xea, 0xb6, 0x0e, 0xc9, 0x04, 0x8d, + 0x02, 0x48, 0x22, 0x80, 0x12, 0x88, 0xd0, 0x0b, + 0x30, 0x03, 0x12, 0x80, 0xd0, 0x19, 0x20, 0x03, + 0x12, 0x80, 0x00, 0x0d, 0x22, 0xc0, 0x12, 0xc8, + 0xd0, 0x0b, 0x30, 0x09, 0x12, 0xc0, 0x12, 0xd8, + 0xd0, 0x16, 0x20, 0x09, 0x20, 0x07, 0x12, 0xc0, + 0x42, 0xc2, 0x22, 0x8b, 0x22, 0x88, 0x03, 0xde, + 0xea, 0xd2, 0x0e, 0xc9, 0xc4, 0x4a, 0x04, 0xcd, + 0x0f, 0xc5, 0x01, 0x46, 0x90, 0x4d, 0x00, 0xc6, + 0x10, 0x60, 0xe6, 0xd3, 0x0f, 0xc5, 0x01, 0x74, + 0xd6, 0x00, 0xca, 0x9d, 0xcb, 0x9e, 0xca, 0xea, + 0xcb, 0xee, 0x2a, 0xc0, 0x2b, 0xc0, 0xca, 0x10, + 0xca, 0x51, 0xcb, 0x12, 0xcb, 0x53, 0xd1, 0x40, + 0xd3, 0x41, 0xb7, 0x3f, 0xc0, 0x5c, 0xe1, 0x7b, + 0xd0, 0xc0, 0xc1, 0x28, 0xc2, 0x2a, 0xc2, 0xab, + 0xf1, 0x7a, 0x0f, 0x17, 0xfa, 0xef, 0xcc, 0xe8, + 0xcd, 0x29, 0xcd, 0x6c, 0xcd, 0xad, 0xc8, 0x08, + 0xc8, 0x49, 0xca, 0x0a, 0xca, 0x4b, 0xf3, 0x31, + 0xd0, 0xc1, 0xc1, 0x34, 0xc2, 0x2a, 0xc2, 0xab, + 0xf1, 0x7a, 0x00, 0x28, 0xd9, 0xc0, 0xc8, 0x88, + 0xc8, 0xc9, 0xa9, 0xf8, 0xca, 0x8a, 0xca, 0xcb, + 0x11, 0x62, 0xe9, 0x79, 0xd0, 0xc0, 0xc1, 0x35, + 0xc2, 0x2e, 0xc2, 0xaf, 0xf1, 0x7a, 0xc9, 0x08, + 0xc9, 0x49, 0xa9, 0xf8, 0xcb, 0x0a, 0xcb, 0x4b, + 0xd0, 0xc1, 0xc1, 0x36, 0xc2, 0x2e, 0xc2, 0xaf, + 0xf1, 0x7a, 0xc0, 0x27, 0xc9, 0x88, 0xc9, 0xc9, + 0xa0, 0x38, 0xcb, 0x8a, 0xcb, 0xcb, 0xe1, 0x79, + 0x5f, 0x0d, 0x07, 0x7d, 0xde, 0x07, 0x11, 0x5e, + 0x30, 0x05, 0xcd, 0xc0, 0x00, 0x28, 0xd0, 0x00, + 0xa0, 0x38, 0x11, 0x61, 0xf9, 0x75, 0x00, 0xe2, + 0xd0, 0x00, 0x0f, 0x1d, 0xeb, 0x29, 0x00, 0x2d, + 0xdf, 0x4b, 0xf3, 0x3f, 0xe1, 0x75, 0x04, 0xeb, + 0xd0, 0x00, 0x11, 0x62, 0xeb, 0x36, 0xb0, 0x20, + 0x0f, 0x19, 0xfb, 0x36, 0xac, 0xe0, 0x01, 0xa4, + 0xde, 0x00, 0x5e, 0x0d, 0x00, 0x2d, 0xdf, 0x7a, + 0xdd, 0xc0, 0xd8, 0x80, 0xd9, 0x00, 0xd9, 0x80, + 0x5f, 0x00, 0x01, 0x46, 0x00, 0x28, 0xd0, 0x01, + 0x00, 0x06, 0xa0, 0x37, 0x80, 0x3f, 0x00, 0xc6, + 0x0f, 0xc5, 0xad, 0xda, 0xc6, 0xb1, 0xd0, 0x01, + 0x01, 0xa3, 0xde, 0x1d, 0x40, 0x30, 0x3e, 0x00, + 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, 0xc8, 0x28, + 0xc8, 0x69, 0xc8, 0xaa, 0xc8, 0xeb, 0x0c, 0x1e, + 0xfb, 0x68, 0x26, 0xba, 0x07, 0x7d, 0xdc, 0x00, + 0x1d, 0xcf, 0x1d, 0xd1, 0x5d, 0xc0, 0x00, 0x2d, + 0xdf, 0x64, 0x0f, 0x87, 0xad, 0xda, 0x80, 0x3f, + 0x0e, 0x0a, 0x66, 0xda, 0xc9, 0x2c, 0xc9, 0x6d, + 0xc9, 0xae, 0xc9, 0xef, 0x0f, 0x2f, 0xd0, 0x37, + 0x4f, 0x00, 0x0f, 0x1a, 0xeb, 0xbe, 0x01, 0xa4, + 0xde, 0x20, 0xd0, 0x01, 0x40, 0x3c, 0x2e, 0x00, + 0x00, 0x2d, 0xdf, 0x7a, 0xac, 0xe0, 0x0f, 0x87, + 0x0e, 0x0a, 0x76, 0xe0, 0xbf, 0x79, 0xbe, 0x3c, + 0x0f, 0x1b, 0xeb, 0x9e, 0x0f, 0x87, 0x0e, 0x0a, + 0x76, 0xe1, 0xbf, 0x79, 0xbe, 0x34, 0x18, 0xa0, + 0xeb, 0xb9, 0x0f, 0x87, 0xad, 0x20, 0x80, 0x3f, + 0x0e, 0x0a, 0x76, 0xe2, 0xbf, 0x79, 0xbe, 0x3c, + 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe3, 0x0f, 0x1b, + 0xeb, 0xb3, 0xbf, 0x77, 0xbe, 0x0c, 0x19, 0x20, + 0xeb, 0xb9, 0x0f, 0x87, 0xad, 0x60, 0x80, 0x3f, + 0x0e, 0x0a, 0x76, 0xe4, 0xbe, 0x3c, 0xbf, 0x75, + 0x0f, 0x15, 0xf8, 0x1c, 0x1f, 0x0a, 0x1f, 0x16, + 0x0f, 0x87, 0x0e, 0x0a, 0x76, 0xe5, 0xbf, 0x79, + 0xbe, 0x34, 0x19, 0xa0, 0xeb, 0xb9, 0x0f, 0x87, + 0xad, 0xa0, 0x80, 0x3f, 0x0e, 0x0a, 0x76, 0xe6, + 0xbe, 0x3c, 0xbf, 0x79, 0x0f, 0x87, 0x0e, 0x0a, + 0x76, 0xe7, 0x0f, 0x15, 0xeb, 0xbe, 0x00, 0x2f, + 0xdf, 0x72, 0x1d, 0xe0, 0xf8, 0x1c, 0x00, 0x28, + 0xd0, 0x01, 0xa0, 0x38, 0x80, 0x3f, 0x0f, 0x87, + 0xd0, 0x01, 0x4d, 0xc0, 0x1f, 0x0f, 0x1f, 0x11, + 0x00, 0x2f, 0xdf, 0x76, 0xc6, 0xb2, 0x03, 0x7d, + 0xde, 0x0e, 0x01, 0xa3, 0xde, 0x2d, 0x5d, 0xc0, + 0x0f, 0x87, 0x1e, 0xe1, 0xeb, 0xdb, 0xad, 0xda, + 0x80, 0x3f, 0x0e, 0x0a, 0x66, 0xda, 0x0c, 0x1e, + 0xfb, 0xe4, 0x26, 0xbb, 0x03, 0xff, 0xdd, 0xff, + 0x4d, 0xc0, 0x00, 0xa3, 0xde, 0x2d, 0xbf, 0x56, + 0x0f, 0x87, 0x07, 0x7d, 0xde, 0x0e, 0x5d, 0xc0, + 0x00, 0xa3, 0xde, 0x1d, 0xad, 0xda, 0x80, 0x3f, + 0x0e, 0x0a, 0x66, 0xda, 0xdf, 0x5c, 0xd0, 0x0e, + 0x4f, 0x00, 0x0f, 0x87, 0xd0, 0x06, 0x40, 0x3c, + 0xeb, 0xf0, 0xbf, 0x3e, 0xb0, 0x04, 0xe7, 0xf2, + 0xeb, 0xf6, 0xbf, 0x0c, 0xbf, 0x3a, 0x0f, 0x87, + 0x0f, 0x1d, 0xfb, 0x4b, 0xbf, 0x38, 0x0f, 0x87, + 0x0f, 0x1c, 0xfb, 0xcb, 0xbf, 0x30, 0x0f, 0x87, + 0x50, 0x00, 0x50, 0x00, 0x0f, 0x17, 0xf9, 0x70, + 0x90, 0x4d, 0x10, 0x60, 0xe5, 0x72, 0x0f, 0x49, + 0x90, 0x4d, 0x10, 0x60, 0xe5, 0x76, 0x0f, 0x19, + 0xf9, 0x79, 0x01, 0x46, 0xd0, 0x11, 0xa0, 0x38, + 0x80, 0x3f, 0x00, 0xc6, 0xdf, 0x00, 0x00, 0x06, + 0x08, 0x20, 0xd0, 0x00, 0x10, 0x08, 0xa0, 0x0a, + 0xa0, 0x1b, 0x0c, 0x20, 0xd0, 0x00, 0x10, 0x08, + 0xa0, 0x27, 0x90, 0x4d, 0x0f, 0xff, 0xd8, 0x1f, + 0x40, 0x40, 0xa0, 0x4d, 0x80, 0x0a, 0xd0, 0x00, + 0x06, 0x50, 0xf9, 0x95, 0xd0, 0x01, 0xa0, 0x09, + 0x80, 0x1b, 0xa0, 0x27, 0x01, 0x20, 0xd0, 0x67, + 0xa0, 0x69, 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, + 0x84, 0x29, 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, + 0x01, 0x20, 0xd0, 0x40, 0xa0, 0x69, 0x80, 0x2b, + 0x80, 0x07, 0x08, 0x20, 0xdf, 0x00, 0x02, 0x30, + 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, 0x01, 0xb0, + 0xd0, 0x10, 0xa0, 0x37, 0x80, 0x3f, 0x02, 0x30, + 0xd0, 0x01, 0xa0, 0x38, 0xd0, 0x10, 0xa0, 0x38, + 0x15, 0x63, 0xe9, 0xba, 0x05, 0x5e, 0xf9, 0xfa, + 0xc0, 0xdf, 0x00, 0xe0, 0xd1, 0x80, 0x70, 0x06, + 0x10, 0x1c, 0xc1, 0x40, 0x11, 0x48, 0xd3, 0x10, + 0x00, 0x21, 0xd0, 0x80, 0xb0, 0x16, 0xe9, 0xca, + 0xd3, 0x20, 0x10, 0x81, 0xb0, 0x16, 0xf9, 0xfa, + 0x30, 0xc2, 0xd2, 0x5e, 0xd0, 0x8f, 0x00, 0xee, + 0xd0, 0x54, 0x70, 0x41, 0x30, 0x43, 0xed, 0xd7, + 0xd2, 0x6c, 0x72, 0x49, 0xc0, 0x89, 0xb0, 0xbf, + 0x10, 0x9f, 0x22, 0x42, 0x04, 0x31, 0xd0, 0x10, + 0xc0, 0x42, 0x30, 0x49, 0xe5, 0xde, 0x10, 0x03, + 0xc1, 0x0c, 0xc1, 0x83, 0xb1, 0xbe, 0x01, 0x46, + 0x00, 0x06, 0xa0, 0x3d, 0xa0, 0x3c, 0x60, 0x06, + 0x00, 0xc6, 0xb1, 0xbc, 0xb1, 0x01, 0xed, 0xe1, + 0xc1, 0x0c, 0x21, 0x85, 0x01, 0x46, 0x00, 0x06, + 0xa0, 0x3d, 0xa0, 0x3c, 0x60, 0x06, 0x00, 0xc6, + 0xb1, 0xbc, 0xb1, 0x01, 0xed, 0xec, 0x02, 0xe4, + 0xd0, 0x00, 0x20, 0xc0, 0xb2, 0x41, 0xed, 0xd8, + 0x15, 0xa3, 0xfa, 0x00, 0xbc, 0x10, 0x0c, 0x1e, + 0xfa, 0x00, 0xbc, 0x10, 0xd0, 0x04, 0x70, 0x00, + 0x10, 0x20, 0xfa, 0x00, 0x00, 0x27, 0xd0, 0x10, + 0xd0, 0x40, 0x60, 0x40, 0x00, 0x26, 0xd0, 0x14, + 0x60, 0x40, 0xb0, 0x28, 0x70, 0x40, 0xb0, 0x7f, + 0x60, 0x40, 0x01, 0x7a, 0xde, 0x1a, 0xe0, 0x46, + 0x50, 0x00, 0x50, 0x00, 0x00, 0x28, 0xd1, 0xb0, + 0x70, 0x06, 0xd0, 0x81, 0x60, 0x86, 0x10, 0x20, + 0xe9, 0xab, 0xb0, 0x3f, 0x60, 0x06, 0x00, 0xec, + 0xd1, 0x84, 0x70, 0x46, 0xb1, 0x84, 0x70, 0x86, + 0x30, 0x42, 0xe9, 0xab, 0x70, 0x42, 0xd0, 0x35, + 0x30, 0x40, 0xf9, 0xab, 0x00, 0x63, 0xd0, 0x3f, + 0xb0, 0xbc, 0x40, 0x80, 0x70, 0xc2, 0x10, 0xe3, + 0xe5, 0xab, 0xb0, 0xbc, 0x40, 0x80, 0x60, 0x86, + 0x00, 0x28, 0xd0, 0x24, 0x70, 0x40, 0x00, 0x22, + 0xd0, 0x80, 0x50, 0x42, 0x60, 0x40, 0x00, 0x64, + 0xd0, 0x60, 0xd0, 0x90, 0x60, 0x81, 0x00, 0xed, + 0xd1, 0x88, 0x70, 0x46, 0x10, 0xe4, 0xe9, 0xa8, + 0x00, 0x21, 0xd0, 0xe8, 0xd0, 0x00, 0x60, 0x03, + 0xd0, 0x81, 0x40, 0x42, 0x60, 0x46, 0x02, 0x3c, + 0xda, 0x89, 0xe0, 0x46, 0xd0, 0x82, 0x50, 0x42, + 0x60, 0x46, 0x00, 0x23, 0xd5, 0x3e, 0x01, 0x7a, + 0xde, 0x1a, 0xe0, 0x46, 0x01, 0x46, 0xdf, 0x5c, + 0x08, 0x20, 0xd1, 0x00, 0xcf, 0x04, 0x11, 0x08, + 0xa1, 0x0a, 0xa1, 0x1b, 0x11, 0x1f, 0xa1, 0x27, + 0xd2, 0x80, 0xb2, 0x81, 0x90, 0x4d, 0xc0, 0x01, + 0x10, 0x14, 0x00, 0x16, 0xe9, 0x8d, 0x80, 0x33, + 0x80, 0x3f, 0x92, 0x8b, 0x00, 0x23, 0xd0, 0x3f, + 0x42, 0x80, 0xe9, 0x8d, 0x0f, 0xff, 0xdf, 0xff, + 0x40, 0x01, 0xa0, 0x0d, 0xe1, 0x94, 0xa1, 0x0a, + 0x00, 0xea, 0xd0, 0x00, 0xd0, 0x8e, 0x00, 0x06, + 0x0f, 0x0b, 0x70, 0x80, 0x80, 0x73, 0x80, 0x0a, + 0xd0, 0x00, 0x06, 0x50, 0xf9, 0x9a, 0xd0, 0x01, + 0xd0, 0x44, 0x40, 0x70, 0x20, 0x01, 0x15, 0x63, + 0xf9, 0xa1, 0x80, 0x1b, 0xe1, 0xa2, 0x80, 0x5b, + 0xa0, 0x27, 0x01, 0x20, 0xd0, 0x67, 0xa0, 0x69, + 0x80, 0x2a, 0x82, 0x29, 0x80, 0x6a, 0x84, 0x29, + 0xd0, 0x54, 0x10, 0x4f, 0xa0, 0x6a, 0x01, 0x20, + 0xd0, 0x40, 0xa0, 0x69, 0x80, 0x2b, 0x80, 0x07, + 0x08, 0x20, 0xd0, 0x00, 0xcf, 0x00, 0x02, 0x30, + 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, 0x01, 0xb2, + 0xd2, 0x10, 0xa0, 0x37, 0x80, 0x3f, 0x02, 0x30, + 0xd0, 0x01, 0xa0, 0x38, 0x00, 0x30, 0xd0, 0x10, + 0xa0, 0x38, 0x80, 0x3f, 0x00, 0xc6, 0x00, 0x28, + 0xd1, 0x24, 0x70, 0x04, 0xd0, 0x41, 0x50, 0x01, + 0x60, 0x04, 0x00, 0x27, 0xd0, 0x18, 0x70, 0x40, + 0xb0, 0x7f, 0x60, 0x40, 0x00, 0x26, 0xd0, 0x20, + 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0x08, 0x20, + 0xdf, 0x00, 0xd4, 0x00, 0xd4, 0x40, 0xd4, 0x80, + 0xd4, 0xc0, 0xd3, 0x81, 0x12, 0xa0, 0xed, 0xe3, + 0xd0, 0x08, 0x0a, 0x09, 0x00, 0x4d, 0xb0, 0x01, + 0xed, 0xdf, 0x03, 0xbe, 0xd6, 0x27, 0xe0, 0x46, + 0x50, 0x00, 0x50, 0x00, 0x02, 0x24, 0xd0, 0x00, + 0xa0, 0x37, 0x00, 0x27, 0xd3, 0xd0, 0x00, 0x26, + 0xd0, 0x04, 0x73, 0xcf, 0x13, 0xe1, 0xe9, 0x7b, + 0xb0, 0x3c, 0xf2, 0x00, 0x00, 0x26, 0xd0, 0x40, + 0xd0, 0x00, 0x60, 0x01, 0x00, 0x26, 0xd0, 0x14, + 0xf2, 0x00, 0x00, 0x26, 0xd0, 0x18, 0xf2, 0x00, + 0x00, 0xee, 0xd0, 0x1c, 0x71, 0x40, 0xd1, 0x1e, + 0x15, 0x63, 0xe9, 0x8d, 0x11, 0x1f, 0xc7, 0x1a, + 0xb7, 0x01, 0xd3, 0x81, 0xc4, 0xd4, 0xf2, 0x04, + 0x00, 0x26, 0xd0, 0x18, 0x70, 0x40, 0xb0, 0x54, + 0xfd, 0x9b, 0x00, 0xed, 0xd0, 0x24, 0xd0, 0x44, + 0x60, 0x40, 0x13, 0xe1, 0xf9, 0xbc, 0x15, 0xa3, + 0xf9, 0xa1, 0x0c, 0x10, 0xe9, 0xb9, 0x11, 0x61, + 0xe5, 0xb3, 0xed, 0xb9, 0x15, 0xa3, 0xf9, 0xab, + 0x00, 0x26, 0xd0, 0x14, 0x70, 0x40, 0x10, 0x62, + 0xf5, 0xb3, 0x15, 0x22, 0xe5, 0xb3, 0xc0, 0x44, + 0x30, 0x54, 0xe5, 0xb3, 0x34, 0xd4, 0xf5, 0xb3, + 0xe1, 0xbf, 0x03, 0xb3, 0xd8, 0x29, 0x00, 0x26, + 0xd0, 0x40, 0x60, 0x01, 0xe1, 0xdb, 0x03, 0xb3, + 0xd8, 0x29, 0xe0, 0x46, 0x01, 0x7a, 0xde, 0x1a, + 0xe0, 0x46, 0x80, 0x07, 0x09, 0x49, 0xd4, 0x00, + 0xd4, 0x40, 0xd4, 0x80, 0xd4, 0xc0, 0x00, 0x4d, + 0xa0, 0x6c, 0xd3, 0x80, 0xd0, 0xa1, 0x00, 0x88, + 0xd0, 0xa9, 0x00, 0x4d, 0x00, 0x50, 0xf9, 0xc9, + 0x0c, 0x49, 0xd0, 0x61, 0x00, 0x8d, 0x10, 0xa0, + 0xe9, 0x90, 0x30, 0x42, 0xf5, 0xd8, 0xd0, 0x61, + 0x23, 0x81, 0xe1, 0xce, 0x23, 0x82, 0x13, 0xa1, + 0xf9, 0x90, 0xd0, 0x42, 0x15, 0xa1, 0xf9, 0xdf, + 0xb0, 0x7f, 0x00, 0x26, 0xd0, 0x14, 0x70, 0x00, + 0x30, 0x01, 0xf5, 0xe8, 0x16, 0xe0, 0xe5, 0xe8, + 0xb6, 0xc1, 0xbc, 0x20, 0xc0, 0x44, 0x30, 0x5b, + 0xfd, 0xb9, 0xc0, 0x44, 0x30, 0x54, 0xe5, 0xb9, + 0x15, 0x63, 0xf9, 0xf8, 0x15, 0xa3, 0xf9, 0xf5, + 0x03, 0x3b, 0xda, 0x1c, 0xe0, 0x46, 0x03, 0x38, + 0xdc, 0x17, 0xe0, 0x46, 0x15, 0xa3, 0xf9, 0xfd, + 0x03, 0x72, 0xd0, 0x19, 0xe0, 0x46, 0x03, 0x3f, + 0xd2, 0x17, 0xe0, 0x46, 0x70, 0x40, 0xb0, 0x7f, + 0x60, 0x40, 0x0f, 0xc5, 0xdf, 0x00, 0x0c, 0x09, + 0x05, 0x0d, 0x08, 0x20, 0xdf, 0x00, 0x0f, 0xc5, + 0x50, 0x00, 0x50, 0x00, 0x00, 0xef, 0xd0, 0x14, + 0x70, 0x40, 0x10, 0x60, 0xe9, 0x45, 0xb0, 0x04, + 0x70, 0x40, 0xb0, 0x41, 0xed, 0x44, 0x00, 0xed, + 0xd0, 0x24, 0xd0, 0x44, 0x60, 0x40, 0x00, 0x64, + 0xd0, 0x20, 0x70, 0x00, 0x10, 0x30, 0xe9, 0x45, + 0x00, 0x21, 0xd0, 0x28, 0x60, 0x40, 0x00, 0x64, + 0xd2, 0xc0, 0x70, 0x0b, 0x00, 0x11, 0xe9, 0x6a, + 0x08, 0x20, 0xd0, 0x4f, 0x30, 0x40, 0xe9, 0x55, + 0xb0, 0x4f, 0xf9, 0x6a, 0x03, 0xef, 0xdf, 0xbf, + 0xaf, 0xb8, 0xdf, 0x80, 0x0f, 0x87, 0xd0, 0x18, + 0x70, 0x00, 0x10, 0x20, 0xed, 0x6c, 0xdf, 0x84, + 0xd0, 0x40, 0x60, 0x7e, 0x00, 0x27, 0xd0, 0x54, + 0x70, 0x41, 0x10, 0x60, 0x01, 0xa0, 0xd0, 0x40, + 0xa0, 0x78, 0x80, 0x34, 0x80, 0x3f, 0x01, 0x3c, + 0xd2, 0x39, 0x00, 0x21, 0xdf, 0x86, 0x0f, 0x87, + 0xd0, 0x40, 0x60, 0x4b, 0x03, 0xe5, 0xd0, 0x10, + 0xe0, 0x36, 0x50, 0x00, 0x00, 0x28, 0xd0, 0x24, + 0x72, 0xc0, 0xd0, 0x40, 0x60, 0x40, 0xd0, 0x0c, + 0x52, 0xc0, 0xc0, 0x1c, 0x30, 0x1d, 0xf5, 0x3c, + 0x20, 0x1f, 0x30, 0x1e, 0x90, 0x6d, 0x20, 0x01, + 0x00, 0x22, 0xd0, 0x58, 0x60, 0x01, 0x00, 0xe3, + 0xd0, 0x48, 0x70, 0x41, 0x30, 0x40, 0xf5, 0x47, + 0xb2, 0xc8, 0x00, 0xe3, 0xd0, 0x4c, 0x70, 0x41, + 0x30, 0x40, 0xfd, 0x4d, 0xb2, 0xc4, 0x00, 0x28, + 0xd0, 0x20, 0x70, 0x00, 0x42, 0xc0, 0xa2, 0xc5, + 0x12, 0xe0, 0xe9, 0x55, 0x80, 0x40, 0x80, 0x34, + 0x80, 0x3f, 0xcf, 0x95, 0x82, 0x34, 0x80, 0x3f, + 0x03, 0xe7, 0xd0, 0x08, 0x1f, 0xa3, 0xe9, 0x60, + 0x03, 0xe9, 0xd0, 0x08, 0x00, 0x27, 0xd0, 0x4c, + 0x7f, 0x81, 0x00, 0x27, 0xd0, 0x54, 0x70, 0x41, + 0x10, 0x60, 0x03, 0xa0, 0xd0, 0x40, 0xa0, 0x78, + 0xe0, 0x3c, 0x50, 0x00, 0xc0, 0x84, 0x10, 0x8c, + 0x10, 0x92, 0xd0, 0x41, 0x30, 0x4d, 0x40, 0x43, + 0x10, 0x43, 0x20, 0x81, 0xd1, 0x8f, 0x41, 0x82, + 0x10, 0x9c, 0x20, 0x9b, 0xc1, 0xc2, 0x10, 0x82, + 0x20, 0x87, 0xc0, 0x42, 0x10, 0x43, 0x20, 0x81, + 0x10, 0x88, 0x22, 0x02, 0x10, 0x97, 0x01, 0xd0, + 0xe9, 0x48, 0xb0, 0x96, 0x10, 0x88, 0x22, 0x82, + 0xc0, 0x5c, 0x10, 0x48, 0xc0, 0x84, 0x10, 0x91, + 0x10, 0x86, 0x20, 0x42, 0x41, 0x0d, 0x11, 0x02, + 0x20, 0x44, 0x22, 0x01, 0x22, 0x81, 0x02, 0xe4, + 0xd2, 0x40, 0xc2, 0xca, 0xb2, 0xe0, 0x01, 0xd0, + 0xe9, 0x5e, 0xc2, 0xca, 0x22, 0xc9, 0xb2, 0xa0, + 0x22, 0x48, 0xd0, 0x78, 0x03, 0x50, 0xf9, 0x69, + 0xd0, 0x7c, 0x01, 0x9d, 0xf9, 0x69, 0xc2, 0x48, + 0xb2, 0x60, 0xc2, 0xca, 0xb2, 0xf0, 0x11, 0x82, + 0x41, 0x81, 0x22, 0x06, 0x11, 0x9f, 0x41, 0x81, + 0x22, 0x86, 0x0f, 0xc5, 0xc0, 0x84, 0x10, 0x8c, + 0x10, 0x92, 0xd1, 0x8f, 0x41, 0x82, 0x10, 0x9c, + 0xc1, 0xdb, 0x11, 0xc1, 0x21, 0xc3, 0x20, 0x87, + 0xc1, 0xc2, 0x10, 0x82, 0x20, 0x87, 0xc0, 0x42, + 0x10, 0x43, 0x20, 0x81, 0x10, 0x88, 0x22, 0x02, + 0x10, 0x97, 0x01, 0xd0, 0xe9, 0x46, 0xb0, 0x96, + 0x10, 0x88, 0x22, 0x82, 0xc0, 0x5c, 0x10, 0x48, + 0xc0, 0x84, 0x10, 0x91, 0x10, 0x86, 0x20, 0x42, + 0xd0, 0x81, 0x41, 0x02, 0x11, 0x02, 0x20, 0x44, + 0x22, 0x01, 0x22, 0x81, 0x02, 0xe4, 0xd2, 0x40, + 0xc2, 0xca, 0xb2, 0xe0, 0x01, 0xd0, 0xe9, 0x5d, + 0xc2, 0xca, 0x22, 0xc9, 0xb2, 0xa0, 0x22, 0x48, + 0x11, 0x9f, 0x11, 0x83, 0x22, 0x06, 0x11, 0x9c, + 0x11, 0x83, 0x22, 0x86, 0x0f, 0xc5, 0xd0, 0x41, + 0x40, 0x44, 0x20, 0x55, 0x10, 0x62, 0xf9, 0x6f, + 0x01, 0x74, 0xd6, 0x00, 0xc2, 0x9f, 0xc2, 0x1f, + 0x22, 0x80, 0xe1, 0x30, 0x0f, 0x11, 0xf9, 0x51, + 0x90, 0x38, 0x80, 0x3f, 0x00, 0x1b, 0xf9, 0x51, + 0x00, 0x27, 0xd0, 0x04, 0x70, 0x40, 0x30, 0x71, + 0xf9, 0x51, 0xb0, 0x3c, 0x70, 0x40, 0x30, 0x5d, + 0xf9, 0x51, 0xb0, 0x08, 0x70, 0x40, 0xb0, 0x7f, + 0x60, 0x40, 0x10, 0x63, 0xe5, 0x5d, 0x02, 0x20, + 0xd0, 0x01, 0xa0, 0x37, 0x00, 0x26, 0xd0, 0x24, + 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0xb0, 0x08, + 0x70, 0x40, 0xb0, 0x41, 0x60, 0x40, 0x00, 0x26, + 0xd0, 0x30, 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, + 0xb0, 0x30, 0xd0, 0x40, 0x60, 0x40, 0xb0, 0x3c, + 0x6c, 0x40, 0xb0, 0x3c, 0x67, 0x40, 0x00, 0x33, + 0xdf, 0x78, 0xe0, 0x36, 0x00, 0x26, 0xd0, 0x1c, + 0x70, 0x40, 0xb0, 0x7f, 0x60, 0x40, 0xb0, 0x3c, + 0x70, 0x40, 0xb0, 0x41, 0x60, 0x40, 0x08, 0x20, + 0xdf, 0x00, 0x80, 0x35, 0xc0, 0x3c, 0x10, 0x08, + 0xa0, 0x0a, 0xa0, 0x27, 0xa0, 0x1b, 0xdf, 0x5c, + 0x01, 0xa0, 0xd0, 0x00, 0xa0, 0x38, 0x80, 0x3f, + 0x80, 0x34, 0x80, 0x3f, 0x03, 0xba, 0xda, 0x1e, + 0xcf, 0x95, 0x82, 0x34, 0x80, 0x3f, 0x03, 0xe7, + 0xd0, 0x08, 0x1f, 0xa3, 0xe9, 0x55, 0x1f, 0xa0, + 0xe9, 0x55, 0x03, 0xe9, 0xd0, 0x08, 0x00, 0x21, + 0xdf, 0x86, 0xe0, 0x3c, 0x89, 0x78, 0x89, 0x37, + 0x00, 0xee, 0xd0, 0x14, 0x76, 0x00, 0xd0, 0x30, + 0x76, 0x40, 0x26, 0x58, 0xd6, 0xd9, 0x00, 0xee, + 0xd0, 0x20, 0x75, 0x40, 0xd0, 0x1c, 0x71, 0x40, + 0xd0, 0x20, 0x71, 0x00, 0xd0, 0x24, 0x70, 0x80, + 0xc4, 0x02, 0xd0, 0x28, 0x70, 0xc0, 0x00, 0x21, + 0xd0, 0x10, 0x72, 0x00, 0x93, 0x90, 0xd4, 0x81, + 0x13, 0x96, 0x43, 0x92, 0x34, 0x8e, 0x00, 0x22, + 0xd1, 0xa4, 0x71, 0x86, 0xde, 0x40, 0x7e, 0x79, + 0xd0, 0x18, 0x70, 0x40, 0xb0, 0x41, 0xf5, 0x58, + 0xd3, 0x42, 0x50, 0x4d, 0x60, 0x40, 0x10, 0x60, + 0xe5, 0x62, 0xd0, 0x54, 0x70, 0x01, 0xb0, 0x3c, + 0x60, 0x01, 0x04, 0x2d, 0xd0, 0x08, 0xe0, 0x36, + 0x00, 0x22, 0xd0, 0x60, 0x71, 0xc1, 0xd0, 0x4f, + 0x41, 0xc1, 0x03, 0xef, 0xd0, 0x30, 0xe0, 0x36, + 0x50, 0x00, 0x50, 0x00, 0x04, 0x21, 0xd0, 0x20, + 0xd3, 0x44, 0x72, 0x8d, 0x12, 0xa0, 0xe8, 0x36, + 0xc0, 0x47, 0x10, 0x5d, 0x30, 0x4e, 0xf8, 0x36, + 0xb2, 0x3e, 0x60, 0x4d, 0x00, 0xed, 0xd0, 0x48, + 0x70, 0x01, 0xde, 0x45, 0x50, 0x39, 0x00, 0x1b, + 0xf9, 0x44, 0xb0, 0x01, 0x00, 0x1c, 0xf9, 0x47, + 0xb0, 0x04, 0x60, 0x01, 0xd0, 0x40, 0x62, 0x81, + 0xce, 0x4a, 0xd0, 0x43, 0x41, 0xc1, 0xd0, 0x58, + 0x61, 0xc1, 0x90, 0x43, 0x00, 0xe0, 0xd0, 0x28, + 0x70, 0x00, 0x10, 0x1f, 0x20, 0x40, 0xb1, 0xc1, + 0xf5, 0x54, 0x00, 0x21, 0xd0, 0x08, 0x60, 0x40, + 0x00, 0xe6, 0xd0, 0x40, 0x70, 0x41, 0xd2, 0x94, + 0x60, 0x4a, 0x04, 0x2b, 0xd0, 0x10, 0x01, 0x90, + 0xf8, 0x36, 0x04, 0x2d, 0xd0, 0x08, 0xe0, 0x36, + 0x50, 0x00, 0x50, 0x00, 0xc0, 0x47, 0x10, 0x5d, + 0x30, 0x4e, 0xf9, 0x41, 0x90, 0x43, 0x00, 0xe0, + 0xd0, 0x28, 0x70, 0x00, 0x20, 0x40, 0x00, 0x21, + 0xd0, 0x08, 0x60, 0x40, 0x00, 0x26, 0xd0, 0x74, + 0x70, 0x01, 0xb0, 0x3f, 0x60, 0x01, 0x00, 0xed, + 0xd0, 0x48, 0x70, 0x41, 0x00, 0x5e, 0xf9, 0x4b, + 0x00, 0x21, 0xd0, 0x00, 0x73, 0x80, 0xd4, 0x81, + 0x34, 0x8e, 0x00, 0x34, 0xd3, 0x48, 0xe0, 0x36, + 0x50, 0x00, 0x50, 0x00, 0xd1, 0x88, 0xd1, 0xc8, + 0x01, 0x1b, 0xe9, 0x39, 0x11, 0x9f, 0x11, 0xdf, + 0xd4, 0x80, 0xd3, 0x81, 0xe1, 0x43, 0x00, 0xed, + 0xd0, 0x08, 0x70, 0x00, 0x00, 0x10, 0xf9, 0x37, + 0x0c, 0x1f, 0xf9, 0x36, 0x13, 0xa1, 0xe9, 0x43, + 0xbe, 0x7c, 0x00, 0x65, 0xd2, 0x46, 0x12, 0x48, + 0xc0, 0x39, 0x30, 0x18, 0xe5, 0x4b, 0xd2, 0x70, + 0x72, 0x49, 0x22, 0x79, 0x00, 0x21, 0xd0, 0x00, + 0x63, 0x80, 0x04, 0x24, 0xd0, 0x00, 0x02, 0x10, + 0xe9, 0x56, 0xd0, 0x41, 0x51, 0x41, 0xe0, 0x36, + 0x15, 0x61, 0xe8, 0x36, 0xd5, 0x80, 0xd3, 0x00, + 0xd3, 0x40, 0x04, 0x27, 0xd0, 0x20, 0xe0, 0x36, + 0x50, 0x00, 0x50, 0x00, 0x00, 0x21, 0xd0, 0x18, + 0x73, 0x00, 0xb0, 0x04, 0x73, 0x80, 0xd2, 0x80, + 0xb0, 0x38, 0x72, 0xc0, 0x31, 0x0d, 0xc0, 0x0e, + 0x10, 0x0b, 0x10, 0x20, 0xe9, 0x42, 0xf5, 0x3f, + 0x22, 0x8d, 0x10, 0x01, 0x13, 0x5f, 0xe1, 0x3b, + 0x33, 0x8b, 0x15, 0x61, 0xf9, 0x49, 0x00, 0x21, + 0xd0, 0x64, 0x70, 0x41, 0x33, 0x81, 0x03, 0xd0, + 0xe9, 0x4c, 0x20, 0x0b, 0x13, 0xdf, 0x12, 0xc1, + 0x13, 0xe0, 0xf9, 0x49, 0x10, 0x03, 0xc0, 0x50, + 0x10, 0x4b, 0x13, 0x0b, 0x23, 0x00, 0x13, 0x20, + 0xe9, 0x5c, 0xf5, 0x59, 0x22, 0x81, 0x13, 0x01, + 0x10, 0x5f, 0xe1, 0x55, 0x12, 0x99, 0x12, 0x87, + 0x21, 0x0a, 0x00, 0xa0, 0xd2, 0x80, 0xc3, 0x0a, + 0x03, 0x90, 0xe9, 0x66, 0x22, 0x82, 0x23, 0x03, + 0x10, 0x81, 0x10, 0xc1, 0x13, 0x9f, 0x13, 0xa0, + 0xed, 0x62, 0xc0, 0x8a, 0xc0, 0xcc, 0x04, 0x26, + 0xd0, 0x00, 0xe0, 0x36, 0x15, 0x61, 0xf9, 0x3d, + 0x07, 0x32, 0xd0, 0x00, 0x30, 0x03, 0xed, 0x3d, + 0xc0, 0x03, 0x10, 0x1d, 0x30, 0xc0, 0xc0, 0x02, + 0x10, 0x1d, 0x30, 0x80, 0xe1, 0x32, 0x10, 0x94, + 0x10, 0xd4, 0x00, 0x21, 0xd0, 0x20, 0x73, 0x00, + 0xc5, 0x8c, 0xd3, 0x4e, 0x01, 0x1b, 0xe9, 0x48, + 0x13, 0x1f, 0xd3, 0x4f, 0x43, 0x4c, 0x13, 0x1c, + 0xc0, 0x0c, 0x10, 0x03, 0x20, 0x0c, 0xc0, 0x40, + 0x10, 0x42, 0x20, 0x40, 0x10, 0x46, 0x20, 0x4d, + 0x10, 0x42, 0x2e, 0x41, 0x10, 0x5c, 0x10, 0x43, + 0x00, 0x59, 0xe9, 0x5b, 0x01, 0x69, 0xd0, 0x20, + 0x30, 0x40, 0x22, 0x41, 0x04, 0x27, 0xd0, 0x20, + 0xe0, 0x36, 0x50, 0x00, 0x2c, 0x14, 0xd0, 0x34, + 0x63, 0x00, 0xd0, 0x38, 0x72, 0xc0, 0xc0, 0x51, + 0x10, 0x5c, 0x30, 0x4b, 0x10, 0x44, 0xd4, 0xc0, + 0xd5, 0x00, 0xc0, 0x18, 0x30, 0x39, 0xed, 0x5f, + 0xd4, 0xd0, 0xc5, 0x01, 0xd0, 0x18, 0x70, 0x00, + 0x0c, 0x1f, 0xe9, 0x48, 0x10, 0x20, 0xfd, 0x48, + 0xd4, 0xc0, 0xd5, 0x00, 0x10, 0x22, 0xe5, 0x4e, + 0xd4, 0xc0, 0xbc, 0x30, 0xd5, 0x00, 0xb5, 0x10, + 0xb0, 0x3f, 0xf9, 0x52, 0x3c, 0x01, 0x3c, 0x01, + 0x02, 0x1f, 0xe9, 0x5f, 0x00, 0xa8, 0xd3, 0xc0, + 0xd3, 0x9e, 0x00, 0xa9, 0xd0, 0x38, 0x70, 0x4f, + 0xb3, 0xfc, 0x60, 0x40, 0xb0, 0x3c, 0xb3, 0x81, + 0xed, 0x59, 0x00, 0x21, 0xd0, 0x28, 0x70, 0x00, + 0x10, 0x20, 0xf9, 0x69, 0x02, 0x1f, 0xf9, 0x6a, + 0x90, 0x10, 0x00, 0x1e, 0xe9, 0x6a, 0xb1, 0x7c, + 0x04, 0x29, 0xd0, 0x20, 0xe0, 0x36, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x01, 0x5e, 0xf9, 0x35, + 0x01, 0x50, 0xe9, 0x35, 0xb1, 0x78, 0xd2, 0x00, + 0x01, 0x5c, 0xf9, 0x5f, 0xc0, 0x18, 0x30, 0x39, + 0xed, 0x5f, 0x11, 0x9f, 0xce, 0x58, 0xc2, 0x59, + 0x00, 0xa9, 0xd2, 0x38, 0x14, 0x82, 0x22, 0x12, + 0xc0, 0x0c, 0x10, 0x1f, 0x10, 0x03, 0x22, 0x00, + 0x70, 0x48, 0x03, 0x10, 0xe9, 0x4c, 0xb2, 0x38, + 0xbe, 0x60, 0xb2, 0x60, 0x2e, 0x41, 0x10, 0x5f, + 0x00, 0x59, 0xe9, 0x53, 0x01, 0x69, 0xd0, 0x3c, + 0x30, 0x40, 0x22, 0x41, 0x13, 0x41, 0x2e, 0x4d, + 0x13, 0x5d, 0x13, 0x43, 0x22, 0x4d, 0x14, 0xe0, + 0xe9, 0x5f, 0x33, 0x0b, 0x13, 0x04, 0x2c, 0x0c, + 0x35, 0x0c, 0xc3, 0x46, 0xc3, 0x87, 0x04, 0x61, + 0xd0, 0x28, 0x15, 0x62, 0xfc, 0x36, 0x04, 0x2f, + 0xd0, 0x28, 0xe0, 0x36, 0x00, 0x22, 0xd0, 0x74, + 0x74, 0x01, 0xb0, 0x7c, 0x74, 0x41, 0xb0, 0x7c, + 0x00, 0x27, 0xd0, 0x20, 0x30, 0x11, 0xf5, 0x3b, + 0x24, 0x40, 0x71, 0x41, 0xd1, 0x08, 0xc0, 0x10, + 0x10, 0x1c, 0xb0, 0x16, 0xf9, 0x4a, 0x00, 0x23, + 0xd0, 0x30, 0x30, 0x11, 0xf9, 0x4a, 0xb1, 0x70, + 0x01, 0x50, 0xf9, 0x4a, 0xb1, 0x20, 0x14, 0x41, + 0xc0, 0x90, 0x00, 0x2b, 0xd0, 0xd0, 0x01, 0x50, + 0xe9, 0x50, 0xc0, 0xd0, 0x00, 0x34, 0xdc, 0x00, + 0x20, 0x11, 0x10, 0x1f, 0xa0, 0x1c, 0x00, 0x21, + 0xd0, 0x2c, 0x70, 0x00, 0x10, 0x05, 0x51, 0x40, + 0xd0, 0x1c, 0x61, 0x40, 0xd0, 0x20, 0x61, 0x00, + 0xd0, 0x24, 0x60, 0x80, 0xd0, 0x28, 0x60, 0xc0, + 0x04, 0x2d, 0xd0, 0x08, 0x00, 0x22, 0xd0, 0x64, + 0xb1, 0x81, 0x61, 0x81, 0xe0, 0x36, 0x50, 0x00, + 0x50, 0x00, 0x50, 0x00, 0x90, 0x50, 0xd0, 0x3c, + 0x10, 0x41, 0x60, 0x40, 0x15, 0x62, 0xfd, 0x3d, + 0xc0, 0x10, 0x10, 0x1e, 0x10, 0x07, 0x21, 0x00, + 0x10, 0x16, 0x34, 0x00, 0xc0, 0x90, 0xd3, 0x40, + 0x00, 0x24, 0xd3, 0xc0, 0x04, 0x22, 0xd0, 0x20, + 0x01, 0x9f, 0xe8, 0x36, 0xd0, 0x54, 0x70, 0x41, + 0x73, 0x41, 0x04, 0x2e, 0xd0, 0x00, 0xe0, 0x36, + 0x50, 0x00, 0x50, 0x00, 0x00, 0xef, 0xd3, 0x30, + 0x73, 0x0c, 0xd0, 0x0c, 0x70, 0x00, 0xc0, 0x40, + 0x13, 0x24, 0xf5, 0x42, 0x13, 0x22, 0xe9, 0x41, + 0xe5, 0x43, 0xd3, 0x00, 0x10, 0x22, 0xf9, 0x41, + 0xd0, 0x01, 0xd0, 0x43, 0xd3, 0x01, 0x21, 0x00, + 0xd3, 0x40, 0x03, 0x10, 0xf9, 0x47, 0xd3, 0x40, + 0xe1, 0x61, 0x00, 0x23, 0xd0, 0x00, 0x10, 0x61, + 0xe9, 0x50, 0xb0, 0x33, 0x10, 0x63, 0xe9, 0x50, + 0x00, 0x22, 0xd0, 0x1a, 0xc3, 0xc0, 0xd2, 0xc0, + 0x00, 0x10, 0xe9, 0x55, 0x22, 0xd0, 0x10, 0x1f, + 0x14, 0x01, 0x10, 0x20, 0xed, 0x52, 0x14, 0x18, + 0x12, 0xd8, 0xc0, 0x8b, 0x32, 0xd0, 0x12, 0xc3, + 0x33, 0x4b, 0x13, 0x47, 0x21, 0x0d, 0x04, 0x22, + 0xd0, 0x20, 0xe0, 0x36, 0x00, 0x24, 0xd0, 0x30, + 0xd0, 0x40, 0x60, 0x40, 0xd3, 0xc7, 0x43, 0xc4, + 0x31, 0x0f, 0xd5, 0xd4, 0x25, 0xcf, 0x15, 0xc4, + 0x10, 0xdf, 0xc2, 0xc6, 0xc3, 0x07, 0x11, 0x81, + 0xb1, 0x3b, 0x15, 0x64, 0xe9, 0x47, 0x10, 0xdf, + 0x12, 0xc1, 0x11, 0x81, 0x11, 0xc1, 0xb1, 0x3f, + 0xb5, 0xf8, 0x90, 0x10, 0x00, 0x16, 0xf9, 0x5e, + 0xb5, 0xfc, 0xd0, 0x20, 0x40, 0x39, 0x2e, 0x4b, + 0x22, 0x4c, 0x12, 0x20, 0xe9, 0x59, 0x20, 0x39, + 0x00, 0x1b, 0xe9, 0x59, 0x2c, 0x13, 0x35, 0x13, + 0x0e, 0x5a, 0xf9, 0x59, 0xb2, 0x38, 0x02, 0xe3, + 0xd0, 0x00, 0x0e, 0x5a, 0xe9, 0x5e, 0x2e, 0x40, + 0x01, 0xee, 0xd2, 0x80, 0x42, 0x84, 0xc0, 0x03, + 0x30, 0x02, 0xf5, 0x6b, 0x31, 0x0a, 0x12, 0x98, + 0x20, 0x03, 0xf5, 0x69, 0x12, 0x9f, 0x12, 0x87, + 0x51, 0x0a, 0x00, 0x34, 0xd4, 0xc8, 0xe0, 0x36, + 0x50, 0x00, 0x50, 0x00, 0xd3, 0xc7, 0x43, 0xc4, + 0x15, 0x61, 0xf9, 0x48, 0x10, 0xc1, 0xd5, 0xe0, + 0xd1, 0x80, 0xd1, 0xc0, 0x31, 0x0f, 0x13, 0xe1, + 0xe9, 0x3c, 0xd3, 0xc0, 0x00, 0x24, 0xd0, 0x30, + 0x63, 0xc0, 0x25, 0xcf, 0x15, 0xc2, 0xd0, 0x03, + 0x40, 0x16, 0x25, 0xc0, 0x15, 0xc2, 0x15, 0x81, + 0x35, 0x91, 0xe1, 0x5c, 0x00, 0x24, 0xd0, 0x30, + 0x63, 0xc0, 0x01, 0x50, 0xe9, 0x54, 0x15, 0xa0, + 0xf9, 0x55, 0x00, 0x24, 0xd0, 0x34, 0x70, 0x00, + 0x10, 0x20, 0xe9, 0x55, 0xd3, 0xc0, 0x31, 0x0f, + 0xd5, 0xfc, 0x25, 0xcf, 0x15, 0xc3, 0x14, 0xa0, + 0xe9, 0x5c, 0xb5, 0xfc, 0x00, 0x34, 0xd4, 0xc8, + 0xe0, 0x36, 0x50, 0x00, 0xc4, 0x91, 0x34, 0x96, + 0xed, 0x34, 0xd4, 0x80, 0x14, 0x84, 0xb3, 0xc1, + 0xe5, 0x41, 0xc0, 0x52, 0x10, 0x5e, 0x34, 0x81, + 0xb3, 0xc1, 0xe5, 0x41, 0xc0, 0x52, 0x10, 0x5c, + 0x24, 0x81, 0xb3, 0xc1, 0xe5, 0x37, 0x02, 0x68, + 0xd0, 0x00, 0xb4, 0xb0, 0x14, 0x9b, 0x00, 0x23, + 0xd0, 0x70, 0x30, 0x52, 0xed, 0x4a, 0x24, 0x81, + 0x20, 0x12, 0xa0, 0x1c, 0x10, 0x8a, 0x50, 0x83, + 0xa0, 0x96, 0xa1, 0x50, 0xa1, 0x11, 0xc0, 0x52, + 0xd4, 0x84, 0x10, 0x6c, 0xed, 0x56, 0xd4, 0x81, + 0xd1, 0x00, 0xb1, 0x13, 0x00, 0x23, 0xd1, 0x40, + 0xc2, 0xb9, 0x22, 0x86, 0x12, 0x20, 0xf9, 0x66, + 0x02, 0xe3, 0xd0, 0x40, 0x02, 0x9a, 0xe9, 0x63, + 0x22, 0x81, 0x02, 0x5a, 0xe9, 0x66, 0x22, 0x41, + 0x75, 0xd7, 0xc3, 0xd7, 0xd0, 0xd7, 0x00, 0x21, + 0xd0, 0xb6, 0x8b, 0x38, 0x00, 0x33, 0xdc, 0xd0, + 0xe0, 0x36, 0x50, 0x00, 0xd0, 0x7c, 0x60, 0x01, + 0xae, 0x52, 0xd0, 0x60, 0x40, 0x79, 0x00, 0x13, + 0xe8, 0xc9, 0xa2, 0x94, 0x22, 0x86, 0x13, 0xe0, + 0xe4, 0xd0, 0x13, 0xc1, 0x15, 0x62, 0xfc, 0xd1, + 0x13, 0xc1, 0xe0, 0xd1, 0xc3, 0xd7, 0x03, 0xd9, + 0xe8, 0xd4, 0x22, 0x8d, 0x15, 0x62, 0xfc, 0xda, + 0x03, 0xda, 0xe8, 0xda, 0x22, 0x8d, 0x22, 0x8d, + 0xce, 0x4a, 0x22, 0x86, 0x00, 0x14, 0xe8, 0xe0, + 0xa2, 0x53, 0x22, 0x47, 0x03, 0xd1, 0xe8, 0xe8, + 0x22, 0x4e, 0x15, 0x62, 0xfc, 0xe8, 0x03, 0xd2, + 0xe8, 0xe8, 0x22, 0x4e, 0x12, 0x20, 0xe9, 0x09, + 0x20, 0x79, 0x00, 0x5b, 0xe8, 0xf4, 0x15, 0x20, + 0xfc, 0xf1, 0x2c, 0x13, 0x35, 0x13, 0x0e, 0x5b, + 0xe8, 0xf4, 0xb2, 0x38, 0x02, 0x9a, 0xe8, 0xfb, + 0x70, 0x08, 0xd0, 0x7c, 0x42, 0x81, 0x22, 0x98, + 0x22, 0x80, 0x02, 0x5a, 0xe9, 0x11, 0x70, 0x08, + 0xd0, 0x78, 0x42, 0x41, 0x22, 0x59, 0x10, 0x1f, + 0x22, 0x40, 0x00, 0x19, 0xe9, 0x11, 0x01, 0x69, + 0xd0, 0x7c, 0x32, 0x41, 0xe1, 0x11, 0x02, 0xe3, + 0xd0, 0x40, 0x02, 0x9a, 0xe9, 0x0e, 0x22, 0x81, + 0x02, 0x5a, 0xe9, 0x11, 0x22, 0x41, 0x0e, 0x5a, + 0xe9, 0x15, 0xce, 0x4a, 0x3e, 0x46, 0x0f, 0x87, + 0xdd, 0x48, 0xe1, 0x19, 0xdd, 0x40, 0xdc, 0xc8, + 0xdd, 0x3c, 0x7d, 0x34, 0x1d, 0x19, 0x3d, 0x35, + 0x4d, 0x33, 0x4c, 0xec, 0x3d, 0x33, 0xf9, 0x17, + 0x0f, 0xc5, 0x50, 0x00, 0xd0, 0x39, 0xd0, 0x35, + 0xd0, 0x1d, 0xd0, 0x2d, 0xd0, 0x3f, 0xd0, 0x2e, + 0xd0, 0x3c, 0xd0, 0x37, 0xd0, 0x38, 0xd0, 0x19, + 0xd0, 0x33, 0xd0, 0x2e, 0xd0, 0x3d, 0xd0, 0x3e, + 0xd0, 0x27, 0xd0, 0x3e, 0xd0, 0x3a, 0xd0, 0x2f, + 0xd0, 0x32, 0x00, 0x00, 0x47, 0x78, 0x46, 0xc0, + 0xe1, 0x01, 0x00, 0x90, 0xe1, 0x2f, 0xff, 0x1e, + 0x47, 0x78, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x00, + 0xe5, 0x9f, 0x20, 0x6c, 0xe0, 0x21, 0x10, 0x01, + 0xe1, 0x02, 0x00, 0x91, 0xe3, 0x50, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x02, 0xe3, 0xa0, 0x00, 0x00, + 0xeb, 0x00, 0x38, 0x99, 0xea, 0xff, 0xff, 0xf7, + 0xe8, 0xbd, 0x40, 0x00, 0xe1, 0x2f, 0xff, 0x1e, + 0xb5, 0x00, 0x4a, 0x12, 0x68, 0x10, 0x28, 0x00, + 0xd1, 0x03, 0x20, 0x00, 0xf7, 0xf1, 0xff, 0xe8, + 0xe7, 0xf7, 0xbd, 0x00, 0x47, 0x78, 0x00, 0x00, + 0xe9, 0x2d, 0x40, 0x00, 0xe5, 0x9f, 0x20, 0x2c, + 0xe3, 0xa0, 0x10, 0x01, 0xe1, 0x02, 0x00, 0x91, + 0xe3, 0x50, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x02, + 0xe3, 0xa0, 0x00, 0x00, 0xeb, 0x00, 0x38, 0x88, + 0xea, 0xff, 0xff, 0xf7, 0xe8, 0xbd, 0x00, 0x01, + 0xe1, 0x2f, 0xff, 0x10, 0x48, 0x02, 0x40, 0x49, + 0x60, 0x01, 0x47, 0x70, 0x70, 0x00, 0x00, 0x34, + 0x2e, 0x08, 0x1f, 0xb0, 0x47, 0x78, 0x46, 0xc0, + 0xe1, 0xa0, 0x09, 0x00, 0xe1, 0xb0, 0x10, 0x01, + 0x03, 0xc0, 0x01, 0x02, 0x13, 0x80, 0x01, 0x02, + 0xe3, 0xa0, 0x13, 0x3f, 0xe3, 0xa0, 0x30, 0x0e, + 0xe1, 0xb0, 0x10, 0x81, 0x3a, 0x00, 0x00, 0x04, + 0xe1, 0xb0, 0x00, 0x80, 0x32, 0x21, 0x13, 0x03, + 0xe2, 0x53, 0x30, 0x01, 0x1a, 0xff, 0xff, 0xf9, + 0xea, 0x00, 0x00, 0x03, 0xe1, 0xb0, 0x00, 0x80, + 0x22, 0x21, 0x13, 0x03, 0xe2, 0x53, 0x30, 0x01, + 0x1a, 0xff, 0xff, 0xf4, 0xe1, 0xa0, 0x0d, 0x21, + 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x41, 0xf0, + 0xe2, 0x4d, 0xd0, 0x14, 0xe3, 0xa0, 0xc0, 0x44, + 0xe2, 0x8c, 0xc4, 0x66, 0xe5, 0x9c, 0xc0, 0x00, + 0xe5, 0x9f, 0x01, 0x94, 0xe5, 0x80, 0xc0, 0x00, + 0xe1, 0xa0, 0xc1, 0x4c, 0xe2, 0x0c, 0xc0, 0x03, + 0xe5, 0x9f, 0x01, 0x88, 0xe5, 0xc0, 0xc0, 0x00, + 0xe5, 0x9f, 0x01, 0x84, 0xe5, 0x90, 0x00, 0x00, + 0xe0, 0x80, 0x64, 0x0c, 0xe1, 0xa0, 0x70, 0x06, + 0xe8, 0xb7, 0x00, 0x01, 0xe2, 0x00, 0x40, 0x1f, + 0xe2, 0x8f, 0x2f, 0x69, 0xe7, 0x92, 0x21, 0x04, + 0xe3, 0x52, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x51, + 0xe5, 0x9f, 0x32, 0x1c, 0xe2, 0x83, 0x50, 0xbc, + 0xe5, 0x9f, 0x12, 0x1c, 0xe1, 0x55, 0x00, 0x01, + 0x03, 0xa0, 0x50, 0x00, 0xe5, 0x9f, 0x12, 0x04, + 0xe1, 0x51, 0x00, 0x05, 0x0a, 0x00, 0x00, 0x45, + 0xe5, 0x9f, 0x81, 0xf4, 0xe0, 0x88, 0x80, 0x03, + 0xe5, 0x9f, 0x11, 0x5c, 0xe1, 0xa0, 0x36, 0x20, + 0xe2, 0x03, 0x30, 0x0f, 0xe1, 0x81, 0x10, 0x03, + 0xe5, 0x9f, 0x21, 0x48, 0xe7, 0x92, 0x31, 0x04, + 0xe1, 0xa0, 0x39, 0x83, 0xe1, 0xa0, 0x35, 0xa3, + 0xe1, 0x81, 0x10, 0x03, 0xe1, 0xa0, 0x33, 0xa0, + 0xe2, 0x03, 0x30, 0x01, 0xe1, 0xa0, 0x3b, 0x03, + 0xe1, 0x81, 0x10, 0x03, 0xe1, 0xa0, 0x35, 0x20, + 0xe2, 0x03, 0x30, 0x03, 0xe1, 0xa0, 0x32, 0x03, + 0xe1, 0x81, 0x10, 0x03, 0xe1, 0xa0, 0x3a, 0xa0, + 0xe2, 0x03, 0x30, 0x01, 0xe1, 0xa0, 0x3b, 0x83, + 0xe1, 0x81, 0x10, 0x03, 0xe1, 0xa0, 0x34, 0xa0, + 0xe2, 0x03, 0x30, 0x01, 0xe1, 0xa0, 0x3a, 0x83, + 0xe1, 0x81, 0x10, 0x03, 0xe2, 0x00, 0x30, 0x60, + 0xe1, 0xa0, 0x30, 0x83, 0xe1, 0x81, 0x10, 0x03, + 0xe8, 0xa8, 0x00, 0x02, 0xe5, 0x9f, 0x00, 0xf0, + 0xe3, 0xa0, 0x10, 0x30, 0xe5, 0x80, 0x10, 0x00, + 0xe5, 0x9f, 0x00, 0x9c, 0xe5, 0xd0, 0x40, 0x00, + 0xe2, 0x84, 0x10, 0x01, 0xe5, 0xc0, 0x10, 0x00, + 0xe2, 0x04, 0x40, 0x00, 0xe5, 0x9f, 0x00, 0x98, + 0xe5, 0x90, 0x10, 0x00, 0xe3, 0x11, 0x00, 0x10, + 0x1a, 0x00, 0x00, 0x1a, 0xe5, 0x80, 0x10, 0x00, + 0xe5, 0x8f, 0x51, 0x4c, 0xe1, 0xa0, 0x22, 0x04, + 0xe1, 0x82, 0x10, 0x0c, 0xe5, 0x9f, 0x00, 0xac, + 0xe0, 0x80, 0x02, 0x01, 0xe5, 0x80, 0x70, 0x00, + 0xe5, 0x80, 0x80, 0x04, 0xe5, 0x9f, 0x10, 0x5c, + 0xe5, 0x80, 0x10, 0x08, 0xe5, 0x9f, 0x10, 0x58, + 0xe5, 0x80, 0x10, 0x0c, 0xe5, 0x9f, 0x00, 0x58, + 0xe5, 0x90, 0x10, 0x00, 0xe0, 0x84, 0x00, 0x01, + 0xe3, 0xa0, 0x20, 0x01, 0xe1, 0xa0, 0x00, 0x12, + 0xe3, 0xa0, 0x10, 0x40, 0xe2, 0x81, 0x14, 0x66, + 0xe5, 0x81, 0x00, 0x00, 0xe3, 0xa0, 0x10, 0x01, + 0xe1, 0xa0, 0x0c, 0x11, 0xe3, 0xa0, 0x10, 0xb8, + 0xe2, 0x81, 0x14, 0x66, 0xe5, 0x81, 0x00, 0x00, + 0xe2, 0x8d, 0xd0, 0x14, 0xe8, 0xbd, 0x81, 0xf0, + 0xe5, 0x9f, 0x10, 0xf0, 0xe2, 0x81, 0x10, 0x01, + 0xe5, 0x8f, 0x10, 0xe8, 0xea, 0xff, 0xff, 0xf4, + 0xe5, 0x9f, 0xf0, 0x08, 0xa0, 0x00, 0x05, 0xc4, + 0x80, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x06, 0xf4, 0xa0, 0x00, 0x04, 0x28, + 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x05, 0x50, + 0x2c, 0x00, 0x1f, 0xe8, 0x2c, 0x00, 0x1f, 0xea, + 0x2c, 0x00, 0x1f, 0xf4, 0x00, 0x00, 0x05, 0xe0, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x12, + 0x2c, 0x00, 0x02, 0x00, 0x64, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x80, 0x47, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0xc0, 0x66, 0x00, 0x00, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x07, + 0xe1, 0xb0, 0xf0, 0x0e, 0xe5, 0x9f, 0xf1, 0x00, + 0xe2, 0x5e, 0xf0, 0x04, 0xe2, 0x5e, 0xf0, 0x08, + 0xea, 0x00, 0x00, 0x02, 0xe5, 0x9f, 0xf0, 0xec, + 0xe2, 0x5e, 0xf0, 0x04, 0x2c, 0x00, 0x00, 0xe8, + 0xe1, 0x0f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x1f, + 0xe3, 0x80, 0x00, 0x1b, 0xe1, 0x29, 0xf0, 0x00, + 0xe5, 0x9f, 0xd0, 0xd8, 0xe5, 0x9f, 0x00, 0xd8, + 0xe0, 0x8d, 0xd0, 0x00, 0xe1, 0x0f, 0x00, 0x00, + 0xe3, 0xc0, 0x00, 0x1f, 0xe3, 0x80, 0x00, 0x13, + 0xe1, 0x29, 0xf0, 0x00, 0xe5, 0x9f, 0xd0, 0xc4, + 0xe5, 0x9f, 0x00, 0xc4, 0xe0, 0x8d, 0xd0, 0x00, + 0xe1, 0x0f, 0x00, 0x00, 0xe3, 0xc0, 0x00, 0x1f, + 0xe3, 0x80, 0x00, 0x12, 0xe1, 0x29, 0xf0, 0x00, + 0xe5, 0x9f, 0xd0, 0xb0, 0xe5, 0x9f, 0x00, 0xb0, + 0xe0, 0x8d, 0xd0, 0x00, 0xe1, 0x0f, 0x00, 0x00, + 0xe3, 0xc0, 0x00, 0x9f, 0xe3, 0x80, 0x00, 0x10, + 0xe1, 0x29, 0xf0, 0x00, 0xe5, 0x9f, 0xd0, 0x60, + 0xeb, 0x00, 0x00, 0x08, 0xe5, 0x9f, 0x00, 0x64, + 0xe5, 0x9f, 0x10, 0x5c, 0xeb, 0x00, 0x37, 0xa7, + 0xe5, 0x9f, 0x00, 0x60, 0xe5, 0x9f, 0x10, 0x58, + 0xeb, 0x00, 0x37, 0xa7, 0xe5, 0x9f, 0xe0, 0x58, + 0xe3, 0x8e, 0xe0, 0x01, 0xe1, 0x2f, 0xff, 0x1e, + 0xe5, 0x9f, 0x00, 0x8c, 0xe5, 0x9f, 0x10, 0x8c, + 0xe5, 0x9f, 0x30, 0x8c, 0xe1, 0x50, 0x00, 0x01, + 0x0a, 0x00, 0x00, 0x03, 0xe1, 0x51, 0x00, 0x03, + 0x34, 0x90, 0x20, 0x04, 0x34, 0x81, 0x20, 0x04, + 0x3a, 0xff, 0xff, 0xfb, 0xe5, 0x9f, 0x10, 0x74, + 0xe3, 0xa0, 0x20, 0x00, 0xe1, 0x53, 0x00, 0x01, + 0x34, 0x83, 0x20, 0x04, 0x3a, 0xff, 0xff, 0xfc, + 0xe1, 0x2f, 0xff, 0x1e, 0x2e, 0x1b, 0xff, 0xf0, + 0x2e, 0x1b, 0x7f, 0xf0, 0x2e, 0x1b, 0x7f, 0xef, + 0x2e, 0x08, 0x9a, 0x08, 0xcc, 0x1f, 0xff, 0xef, + 0xcc, 0x1f, 0x7f, 0xf0, 0x2e, 0x00, 0x1b, 0x8d, + 0x2e, 0x01, 0xc2, 0xe8, 0x2e, 0x01, 0xc3, 0xe0, + 0x2e, 0x08, 0x32, 0xfc, 0x00, 0x00, 0x08, 0x00, + 0x2e, 0x08, 0x22, 0xfc, 0x00, 0x00, 0x08, 0x00, + 0x2e, 0x08, 0x2a, 0xfc, 0x00, 0x00, 0x08, 0x00, + 0x2e, 0x08, 0x59, 0xb8, 0xe5, 0x9f, 0xf0, 0x04, + 0xe5, 0x9f, 0xf0, 0x04, 0xe5, 0x9f, 0xf0, 0x04, + 0x2e, 0x08, 0x59, 0xb8, 0x2e, 0x08, 0x59, 0xb9, + 0x2e, 0x08, 0x59, 0xba, 0x2e, 0x03, 0x34, 0x9c, + 0x2e, 0x08, 0x00, 0x00, 0x2e, 0x08, 0x3b, 0x78, + 0x2e, 0x08, 0x9a, 0x04, 0x1d, 0x77, 0x1e, 0x16, + 0x03, 0x00, 0x03, 0x03, 0x1d, 0x7f, 0x50, 0x50, + 0x4f, 0x5d, 0x49, 0x5d, 0x40, 0x4a, 0x44, 0x43, + 0x01, 0x49, 0x4d, 0x56, 0x48, 0x4b, 0x5d, 0x4f, + 0x5d, 0x4d, 0x4f, 0x0a, 0x78, 0x71, 0x73, 0x7f, + 0x70, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1b, + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, + 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, + 0x08, 0x0f, 0x0f, 0x0d, 0x13, 0x0d, 0x11, 0x0e, + 0x07, 0x08, 0x09, 0x0d, 0x0d, 0x15, 0x10, 0x05, + 0x08, 0x08, 0x09, 0x0e, 0x07, 0x08, 0x07, 0x07, + 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, + 0x0d, 0x0d, 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x0d, + 0x18, 0x0f, 0x10, 0x11, 0x11, 0x10, 0x0f, 0x13, + 0x11, 0x06, 0x0c, 0x10, 0x0d, 0x13, 0x11, 0x13, + 0x10, 0x13, 0x11, 0x10, 0x0e, 0x11, 0x0f, 0x17, + 0x0f, 0x10, 0x0f, 0x07, 0x07, 0x07, 0x0c, 0x0d, + 0x08, 0x0d, 0x0e, 0x0c, 0x0e, 0x0d, 0x07, 0x0e, + 0x0e, 0x05, 0x06, 0x0c, 0x06, 0x14, 0x0e, 0x0d, + 0x0e, 0x0e, 0x08, 0x0c, 0x07, 0x0e, 0x0b, 0x11, + 0x0b, 0x0c, 0x0c, 0x08, 0x06, 0x08, 0x0e, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, + 0x1e, 0x0f, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x0c, 0xc0, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, + 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, + 0x0e, 0xe0, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x30, 0x01, 0x80, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, + 0x0c, 0x60, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, + 0x0c, 0x60, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x60, 0x00, 0xc0, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x60, 0x00, 0xc0, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, + 0x18, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x60, 0x00, 0xc0, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0xf0, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, + 0x60, 0x00, 0xc0, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x30, 0x78, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x60, 0x00, 0xc0, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x3e, 0x60, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x0c, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x70, 0x60, 0x00, 0x00, + 0x30, 0x01, 0x80, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x32, 0x0c, 0x00, 0x00, + 0x60, 0x0c, 0x00, 0x00, 0x60, 0xe0, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x38, 0x0e, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x37, 0x1c, 0x00, 0x00, + 0x60, 0x0c, 0x00, 0x00, 0x71, 0xe0, 0x00, 0x00, + 0x1e, 0x0f, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x1c, 0x1c, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x10, 0x02, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x33, 0xf8, 0x00, 0x00, + 0xe0, 0x0e, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x0f, 0xf8, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x1f, 0xfe, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0xf0, 0x00, 0x00, + 0xc0, 0x06, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x07, 0xf0, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x06, 0x30, 0x00, 0x00, + 0x1f, 0xc0, 0x00, 0x00, 0x1e, 0x03, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x33, 0x07, 0x00, 0x00, + 0x0f, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x7a, 0xf0, 0x00, 0x00, 0x61, 0x86, 0x00, 0x00, + 0x1c, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x00, + 0x62, 0x30, 0x00, 0x00, 0x61, 0x8e, 0x00, 0x00, + 0x18, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x8c, 0x00, 0x00, + 0x18, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x61, 0x9c, 0x00, 0x00, + 0x0c, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x61, 0xb8, 0x00, 0x00, + 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x00, 0x00, + 0x3f, 0x80, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x00, 0x00, + 0x0f, 0xe0, 0x00, 0x00, 0x1e, 0x73, 0xc0, 0x00, + 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x00, 0x00, + 0x02, 0xe0, 0x00, 0x00, 0x00, 0x66, 0x60, 0x00, + 0x39, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x39, 0xc0, 0x00, 0x00, + 0x02, 0x70, 0x00, 0x00, 0x00, 0xec, 0x30, 0x00, + 0x70, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, + 0x02, 0x30, 0x00, 0x00, 0x00, 0xcc, 0x30, 0x00, + 0x60, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, + 0x62, 0x30, 0x00, 0x00, 0x01, 0xcc, 0x30, 0x00, + 0x60, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, + 0x72, 0x70, 0x00, 0x00, 0x01, 0x8c, 0x30, 0x00, + 0x70, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x3a, 0xf0, 0x00, 0x00, 0x03, 0x8c, 0x30, 0x00, + 0x38, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x03, 0x06, 0x60, 0x00, + 0x3f, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x07, 0x03, 0xc0, 0x00, + 0x0f, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x0f, 0xc0, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x0f, 0xc0, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x1f, 0xe0, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x1f, 0xc0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x38, 0xf0, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x70, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x70, 0x60, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x1d, 0x80, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x06, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x0e, 0xc0, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x70, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, + 0x0c, 0xc0, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, + 0x67, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x1c, 0xc0, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x7f, 0xe0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x1f, 0xc0, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x38, 0xc0, 0x00, 0x00, 0x60, 0x70, 0x00, 0x00, + 0x78, 0xe0, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x70, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x30, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x30, 0xe0, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xe0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x70, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x60, 0x70, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe0, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x7f, 0xf0, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x30, 0x70, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x38, 0x60, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x7f, 0xf0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x1f, 0xe0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1f, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x7f, 0xf0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x30, 0x0f, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x38, 0x06, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x03, 0xff, 0xc0, 0x00, 0x07, 0xc0, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x30, 0x1e, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, + 0x38, 0x06, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, + 0x07, 0xc1, 0xe0, 0x00, 0x07, 0xc0, 0x00, 0x00, + 0x30, 0x1c, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, + 0x30, 0x1c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x30, 0x3c, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, + 0x3c, 0x06, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, + 0x0e, 0x00, 0x70, 0x00, 0x06, 0xc0, 0x00, 0x00, + 0x30, 0x0c, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, + 0x3e, 0x06, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x1c, 0x79, 0xb8, 0x00, 0x0e, 0xe0, 0x00, 0x00, + 0x30, 0x0c, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, + 0x30, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x03, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x30, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x36, 0x0d, 0x80, 0x00, + 0x36, 0x06, 0x00, 0x00, 0x30, 0x01, 0x80, 0x00, + 0x39, 0xff, 0x9c, 0x00, 0x0c, 0x60, 0x00, 0x00, + 0x30, 0x0c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x30, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x31, 0xc0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x36, 0x0d, 0x80, 0x00, + 0x37, 0x06, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0x31, 0xcf, 0x9c, 0x00, 0x0c, 0x60, 0x00, 0x00, + 0x30, 0x1c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x37, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x36, 0x0d, 0x80, 0x00, + 0x33, 0x06, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x33, 0x87, 0x0c, 0x00, 0x1c, 0x70, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x03, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x37, 0x1d, 0x80, 0x00, + 0x31, 0x86, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x77, 0x03, 0x0c, 0x00, 0x18, 0x30, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x03, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x60, 0x3f, 0x80, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x33, 0x19, 0x80, 0x00, + 0x31, 0xc6, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x67, 0x03, 0x0c, 0x00, 0x38, 0x38, 0x00, 0x00, + 0x30, 0x1c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x3f, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x3d, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x33, 0x19, 0x80, 0x00, + 0x30, 0xc6, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x66, 0x03, 0x0c, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x03, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x01, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x33, 0x19, 0x80, 0x00, + 0x30, 0x66, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x66, 0x07, 0x1c, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x70, 0x03, 0x00, 0x00, + 0x30, 0x07, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0x01, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x31, 0xb1, 0x80, 0x00, + 0x30, 0x76, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0x66, 0x06, 0x18, 0x00, 0x70, 0x1c, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x01, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x60, 0xc0, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x31, 0xb1, 0x80, 0x00, + 0x30, 0x36, 0x00, 0x00, 0x30, 0x01, 0x80, 0x00, + 0x67, 0x0e, 0x38, 0x00, 0x60, 0x0c, 0x00, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x38, 0x06, 0x00, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x60, 0xc0, 0x00, 0x00, 0x30, 0x3c, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x31, 0xf1, 0x80, 0x00, + 0x30, 0x3e, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x77, 0x1e, 0x70, 0x00, 0x60, 0x0c, 0x00, 0x00, + 0x30, 0x1e, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, + 0x30, 0x1c, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1e, 0x0f, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x71, 0xc0, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x31, 0xf1, 0x80, 0x00, + 0x30, 0x1e, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, + 0x73, 0xff, 0xe0, 0x00, 0xe0, 0x0e, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x3f, 0x80, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x30, 0xe1, 0x80, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, + 0x39, 0xe7, 0xc0, 0x00, 0xc0, 0x06, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x30, 0xe1, 0x80, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x3c, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xc0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, + 0xff, 0xfc, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0xc0, 0x06, 0x00, 0x00, 0xc0, 0x38, 0x06, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, + 0x7f, 0xfc, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, + 0xff, 0xfc, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0xe0, 0x0e, 0x00, 0x00, 0xe0, 0x7c, 0x0e, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x7f, 0xfc, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x1e, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, + 0x30, 0x1e, 0x00, 0x00, 0x3c, 0x1c, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x60, 0x0c, 0x00, 0x00, 0xe0, 0x7c, 0x0e, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x30, 0x1c, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x60, 0x6c, 0x0c, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x01, 0x80, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x60, 0xec, 0x0c, 0x00, + 0x0e, 0xe0, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, + 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0x30, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x70, 0xee, 0x1c, 0x00, + 0x06, 0xc0, 0x00, 0x00, 0x0e, 0x70, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x39, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x30, 0x1e, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x70, 0xc6, 0x1c, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x30, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x1c, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x18, 0x30, 0x00, 0x00, 0x30, 0xc6, 0x18, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x70, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x18, 0x30, 0x00, 0x00, 0x31, 0xc7, 0x18, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x30, 0xe0, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x31, 0x83, 0x18, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, + 0x30, 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x0c, 0x60, 0x00, 0x00, 0x39, 0x83, 0x38, 0x00, + 0x0e, 0xe0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0x30, 0x38, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x0e, 0xe0, 0x00, 0x00, 0x1b, 0x83, 0xb0, 0x00, + 0x0e, 0xe0, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x31, 0x80, 0x00, + 0x30, 0x38, 0x00, 0x00, 0x70, 0x06, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x0e, 0xe0, 0x00, 0x00, 0x1b, 0x01, 0xb0, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0x3f, 0x80, 0x00, + 0x30, 0x1c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x1f, 0x01, 0xf0, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1e, 0x1f, 0x00, 0x00, + 0x30, 0x1e, 0x00, 0x00, 0x3c, 0x1c, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x1f, 0x01, 0xf0, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, + 0x30, 0x0e, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x1e, 0x00, 0xe0, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0xff, 0xfc, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, + 0x30, 0x07, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x0e, 0x00, 0xe0, 0x00, + 0xe0, 0x0e, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0xff, 0xfc, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x33, 0xc0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x0f, 0xb0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, + 0x33, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x37, 0xcf, 0x80, 0x00, + 0x33, 0xc0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3f, 0xdf, 0x80, 0x00, + 0x37, 0xe0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x3c, 0x70, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x38, 0xf0, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x3c, 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3c, 0xf9, 0xc0, 0x00, + 0x3c, 0x70, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x70, 0x60, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x38, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x70, 0xc0, 0x00, + 0x38, 0x30, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x7f, 0xf0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x60, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x33, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x60, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x33, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0xe0, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x70, 0x60, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x70, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x31, 0xc0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x71, 0xe0, 0x00, 0x00, + 0x3c, 0x70, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x38, 0xf0, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x1f, 0xf0, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x00, 0x00, + 0x33, 0xc0, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x0f, 0x30, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x60, 0xc0, 0x00, + 0x30, 0x30, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x37, 0xc0, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0xc0, 0x60, 0x00, 0x00, 0xc0, 0x81, 0x80, 0x00, + 0xe0, 0x60, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0xc0, 0x60, 0x00, 0x00, 0xc1, 0xc1, 0x80, 0x00, + 0x60, 0xc0, 0x00, 0x00, 0x60, 0xe0, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x3c, 0x70, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0xe0, 0xe0, 0x00, 0x00, 0xe1, 0xc1, 0x80, 0x00, + 0x31, 0xc0, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x01, 0xe0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x60, 0xc0, 0x00, 0x00, 0x63, 0xe3, 0x00, 0x00, + 0x3b, 0x80, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3e, 0x08, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x71, 0xc0, 0x00, 0x00, 0x63, 0x63, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x31, 0xc0, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x7f, 0x98, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x31, 0x80, 0x00, 0x00, 0x67, 0x63, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x39, 0xc0, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x67, 0xf8, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x31, 0x80, 0x00, 0x00, 0x37, 0x76, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x41, 0xf0, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x3b, 0x80, 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1d, 0x80, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x70, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x3c, 0x00, 0x00, + 0x3b, 0x80, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x3c, 0x70, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0xe0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0xf0, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, + 0x31, 0x80, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x37, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, + 0x60, 0xc0, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7f, 0xe0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, + 0x33, 0xc0, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x0f, 0x30, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x00, 0x00, + 0xe0, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x7f, 0xe0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x21, 0x16, 0x16, 0x16, 0x16, + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, + 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, + 0x16, 0x16, 0x16, 0x16, 0x0a, 0x12, 0x13, 0x10, + 0x17, 0x10, 0x15, 0x10, 0x08, 0x09, 0x0a, 0x10, + 0x10, 0x1a, 0x13, 0x06, 0x0a, 0x0a, 0x0b, 0x11, + 0x08, 0x0a, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, + 0x11, 0x11, 0x11, 0x10, 0x1d, 0x13, 0x13, 0x15, + 0x15, 0x13, 0x12, 0x17, 0x15, 0x07, 0x0f, 0x13, + 0x10, 0x17, 0x15, 0x17, 0x13, 0x17, 0x15, 0x13, + 0x13, 0x15, 0x13, 0x1e, 0x13, 0x13, 0x12, 0x08, + 0x08, 0x08, 0x0e, 0x10, 0x0a, 0x10, 0x10, 0x0f, + 0x10, 0x10, 0x08, 0x10, 0x10, 0x07, 0x07, 0x0e, + 0x07, 0x19, 0x10, 0x10, 0x10, 0x10, 0x0a, 0x0f, + 0x08, 0x10, 0x0d, 0x15, 0x0d, 0x0d, 0x0e, 0x0a, + 0x08, 0x0a, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x8e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x8e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x8e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xf0, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xf8, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, + 0x0e, 0x38, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x1c, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x0f, 0xff, 0xe0, 0x00, + 0x0e, 0x38, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x0c, 0x00, 0x00, 0x03, 0xb8, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x1f, 0x83, 0xf0, 0x00, + 0x0e, 0x38, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x07, 0xbc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, + 0x0f, 0xf0, 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x0f, 0x1e, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x70, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x70, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x70, 0x00, 0x00, 0x1e, 0x0f, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x78, 0x00, 0x00, 0x1c, 0x07, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x38, 0x3e, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x38, 0x1f, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x38, 0x07, 0x80, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x3f, 0x9c, 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x78, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x3c, 0x01, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x78, 0x03, 0xc0, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x1e, 0x00, 0xf8, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x3c, 0x01, 0xe0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0xc3, 0x80, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0x70, 0x3c, 0x00, 0x00, 0x1f, 0x83, 0xf0, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x1f, 0x07, 0xc0, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x39, 0xe7, 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0x78, 0x7c, 0x00, 0x00, 0x0f, 0xff, 0xe0, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xff, 0x00, 0x00, 0xe0, 0x01, 0xe0, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x0f, 0xff, 0xc0, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x7c, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0x1f, 0x8e, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, + 0x0f, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x07, 0x1c, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, + 0x0f, 0x80, 0x60, 0x00, 0x03, 0xe0, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x07, 0x1c, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x1f, 0xc0, 0xe0, 0x00, 0x07, 0xf0, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x0f, 0x3c, 0x00, 0x00, 0x3d, 0xb8, 0x00, 0x00, + 0x38, 0xe0, 0xc0, 0x00, 0x0f, 0x78, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x76, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x0e, 0x38, 0x00, 0x00, 0x79, 0xbc, 0x00, 0x00, + 0x30, 0x61, 0xc0, 0x00, 0x0e, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x0e, 0x38, 0x00, 0x00, 0x71, 0x9c, 0x00, 0x00, + 0x30, 0x61, 0x80, 0x00, 0x0e, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0xff, 0xfe, 0x00, 0x00, 0x71, 0x80, 0x00, 0x00, + 0x30, 0x63, 0x80, 0x00, 0x0e, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x73, 0x80, 0x00, 0x00, + 0xff, 0xfe, 0x00, 0x00, 0x79, 0x80, 0x00, 0x00, + 0x30, 0x63, 0x00, 0x00, 0x0f, 0x78, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xfe, 0x00, 0x00, 0x7d, 0x80, 0x00, 0x00, + 0x30, 0x67, 0x00, 0x00, 0x07, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x39, 0xc0, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x78, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, + 0x38, 0xe6, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x1f, 0xce, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, + 0x0f, 0x8c, 0x7c, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x70, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, + 0x00, 0x1c, 0xfe, 0x00, 0x3e, 0xe2, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0xf0, 0x00, 0x00, 0x01, 0xbe, 0x00, 0x00, + 0x00, 0x19, 0xc7, 0x00, 0x38, 0x73, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xfe, 0x00, 0x00, 0x01, 0x9e, 0x00, 0x00, + 0x00, 0x39, 0x83, 0x00, 0x78, 0x3f, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xfe, 0x00, 0x00, 0x01, 0x8e, 0x00, 0x00, + 0x00, 0x31, 0x83, 0x00, 0x70, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xfe, 0x00, 0x00, 0x71, 0x8e, 0x00, 0x00, + 0x00, 0x71, 0x83, 0x00, 0x70, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x71, 0x8e, 0x00, 0x00, + 0x00, 0x61, 0x83, 0x00, 0x70, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x79, 0x9e, 0x00, 0x00, + 0x00, 0xe1, 0x83, 0x00, 0x78, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x79, 0xe0, 0x00, 0x00, 0x3d, 0xbc, 0x00, 0x00, + 0x00, 0xc1, 0xc7, 0x00, 0x3c, 0x7f, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xc0, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x01, 0xc0, 0xfe, 0x00, 0x1f, 0xfb, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xc0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, + 0x01, 0x80, 0x7c, 0x00, 0x0f, 0xe1, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, + 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xf0, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x01, 0xe0, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, + 0x03, 0xe0, 0x00, 0x00, 0x7c, 0x7c, 0x00, 0x00, + 0x7c, 0x7c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x1e, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x0f, 0xe0, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, + 0x70, 0x3c, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x78, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x78, 0x0e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, + 0x1e, 0xe0, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x01, 0xf8, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x03, 0xb8, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x10, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x07, 0x38, 0x00, 0x00, + 0x7b, 0xe0, 0x00, 0x00, 0x73, 0xf0, 0x00, 0x00, + 0x00, 0x70, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x0f, 0x38, 0x00, 0x00, + 0x7f, 0xf8, 0x00, 0x00, 0x77, 0xf8, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x03, 0xf0, 0x00, 0x00, 0x0e, 0x38, 0x00, 0x00, + 0x7f, 0xfc, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x1c, 0x38, 0x00, 0x00, + 0x78, 0x3c, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, + 0x01, 0xe0, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x3c, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x01, 0xe0, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x78, 0x38, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, + 0x1f, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x0f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x78, 0x0e, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x70, 0x0e, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x78, 0x1e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, + 0x78, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x3f, 0xf8, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, + 0x1f, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x00, 0x00, + 0x0f, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, + 0x01, 0xf0, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x01, 0xfe, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x3f, 0xff, 0x80, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x01, 0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x3c, 0x00, 0xe0, 0x00, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x07, 0xff, 0x80, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x3f, 0xff, 0x80, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x07, 0xff, 0xc0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x03, 0xc0, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x7c, 0x00, 0x3c, 0x00, 0xe0, 0x00, + 0x07, 0xff, 0x80, 0x00, 0x01, 0xff, 0xff, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x3f, 0xff, 0xc0, 0x00, + 0x3f, 0xff, 0x80, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x0f, 0xff, 0xe0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x07, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0xfc, 0x00, 0x3e, 0x00, 0xe0, 0x00, + 0x0f, 0xff, 0xe0, 0x00, 0x03, 0xf8, 0x3f, 0x80, + 0x03, 0xb8, 0x00, 0x00, 0x38, 0x0f, 0x80, 0x00, + 0x1f, 0x83, 0xe0, 0x00, 0x38, 0x07, 0xc0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1f, 0x83, 0xf0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x0f, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0xfc, 0x00, 0x3f, 0x00, 0xe0, 0x00, + 0x1f, 0x83, 0xf0, 0x00, 0x07, 0xc0, 0x07, 0xc0, + 0x07, 0xbc, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x3e, 0x01, 0xe0, 0x00, 0x38, 0x01, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0xf0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x1e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x7f, 0x01, 0xfc, 0x00, 0x3f, 0x00, 0xe0, 0x00, + 0x3e, 0x00, 0xf8, 0x00, 0x07, 0x80, 0x03, 0xe0, + 0x07, 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x3c, 0x00, 0xf0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x78, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x77, 0x01, 0xdc, 0x00, 0x3b, 0x80, 0xe0, 0x00, + 0x3c, 0x00, 0x78, 0x00, 0x0f, 0x0f, 0x1d, 0xe0, + 0x07, 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x78, 0x00, 0x70, 0x00, 0x38, 0x00, 0xf0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x30, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x77, 0x01, 0xdc, 0x00, 0x3b, 0xc0, 0xe0, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x1e, 0x3f, 0xbc, 0xf0, + 0x0f, 0x1e, 0x00, 0x00, 0x38, 0x0f, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x38, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x77, 0x83, 0xdc, 0x00, 0x39, 0xc0, 0xe0, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x1e, 0x7f, 0xfc, 0xf0, + 0x0e, 0x0e, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x3f, 0xff, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x39, 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x73, 0x83, 0x9c, 0x00, 0x38, 0xe0, 0xe0, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x1c, 0xf9, 0xf8, 0x70, + 0x0e, 0x0e, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x3f, 0xff, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x3b, 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x73, 0x83, 0x9c, 0x00, 0x38, 0xe0, 0xe0, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x3c, 0xf0, 0xf8, 0x70, + 0x1e, 0x0f, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x3f, 0xff, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x0f, 0xf8, 0x00, 0x3f, 0xff, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x73, 0xc7, 0x9c, 0x00, 0x38, 0x70, 0xe0, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x39, 0xe0, 0x78, 0x70, + 0x1c, 0x07, 0x00, 0x00, 0x38, 0x07, 0x80, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x0f, 0xf8, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x71, 0xc7, 0x1c, 0x00, 0x38, 0x38, 0xe0, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x39, 0xe0, 0x78, 0x70, + 0x1f, 0xff, 0x00, 0x00, 0x38, 0x03, 0xc0, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x0f, 0xf8, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x3e, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x71, 0xc7, 0x1c, 0x00, 0x38, 0x38, 0xe0, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x39, 0xc0, 0x70, 0x70, + 0x3f, 0xff, 0x80, 0x00, 0x38, 0x01, 0xc0, 0x00, + 0x78, 0x00, 0x60, 0x00, 0x38, 0x00, 0xf0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x71, 0xef, 0x1c, 0x00, 0x38, 0x1c, 0xe0, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x39, 0xc0, 0xf0, 0xf0, + 0x3f, 0xff, 0x80, 0x00, 0x38, 0x01, 0xc0, 0x00, + 0x78, 0x00, 0xf0, 0x00, 0x38, 0x00, 0xf0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x00, + 0x38, 0x3e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0xee, 0x1c, 0x00, 0x38, 0x1e, 0xe0, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x39, 0xc0, 0xf0, 0xe0, + 0x38, 0x03, 0x80, 0x00, 0x38, 0x01, 0xc0, 0x00, + 0x3c, 0x00, 0xf0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x38, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x00, + 0x38, 0x1e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0xee, 0x1c, 0x00, 0x38, 0x0e, 0xe0, 0x00, + 0x3c, 0x00, 0x78, 0x00, 0x39, 0xe1, 0xe1, 0xc0, + 0x78, 0x03, 0xc0, 0x00, 0x38, 0x03, 0xc0, 0x00, + 0x3e, 0x01, 0xe0, 0x00, 0x38, 0x01, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x78, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, + 0x38, 0x0f, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0xfe, 0x1c, 0x00, 0x38, 0x07, 0xe0, 0x00, + 0x1e, 0x00, 0xf8, 0x00, 0x3d, 0xe3, 0xe3, 0xc0, + 0x70, 0x01, 0xc0, 0x00, 0x38, 0x07, 0xc0, 0x00, + 0x1f, 0x87, 0xe0, 0x00, 0x38, 0x07, 0xc0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1f, 0x81, 0xf8, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x7c, 0xf8, 0x00, 0x00, + 0x38, 0x07, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x7c, 0x1c, 0x00, 0x38, 0x07, 0xe0, 0x00, + 0x1f, 0x83, 0xf0, 0x00, 0x3c, 0xff, 0xe7, 0x80, + 0x70, 0x01, 0xc0, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x3f, 0xff, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xf0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, + 0x38, 0x07, 0x80, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x7c, 0x1c, 0x00, 0x38, 0x03, 0xe0, 0x00, + 0x0f, 0xff, 0xe0, 0x00, 0x1e, 0xfe, 0xff, 0x00, + 0xe0, 0x01, 0xe0, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x07, 0xff, 0x80, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x3f, 0xff, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xe0, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, + 0x38, 0x03, 0xc0, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x7c, 0x1c, 0x00, 0x38, 0x01, 0xe0, 0x00, + 0x03, 0xff, 0xc0, 0x00, 0x1e, 0x3c, 0x7c, 0x78, + 0xe0, 0x00, 0xe0, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x01, 0xfe, 0x00, 0x00, 0x3f, 0xfc, 0x00, 0x00, + 0x3f, 0xff, 0x80, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, + 0x38, 0x01, 0xe0, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x38, 0x1c, 0x00, 0x38, 0x01, 0xe0, 0x00, + 0x00, 0xfe, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x01, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x0f, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x01, 0xff, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, + 0xe0, 0x0f, 0x80, 0x38, 0x78, 0x03, 0xc0, 0x00, + 0xf0, 0x01, 0xe0, 0x00, 0x7f, 0xff, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x07, 0xff, 0xc0, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0xf0, 0x01, 0xe0, 0x00, + 0xf0, 0x0f, 0x80, 0x78, 0x3c, 0x07, 0x80, 0x00, + 0x70, 0x03, 0xc0, 0x00, 0x7f, 0xff, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x0f, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0xc0, 0x00, + 0x1f, 0xff, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0xf0, 0x1f, 0xc0, 0x78, 0x1c, 0x07, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x7f, 0xff, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0xc0, 0x00, + 0x1f, 0x83, 0xf0, 0x00, 0x38, 0x03, 0xe0, 0x00, + 0x3e, 0x0f, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x70, 0x01, 0xc0, 0x00, + 0x70, 0x1f, 0xc0, 0x70, 0x1e, 0x0f, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x0f, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0xc0, 0x00, + 0x1e, 0x00, 0xf8, 0x00, 0x38, 0x01, 0xe0, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x78, 0x03, 0xc0, 0x00, + 0x70, 0x1d, 0xc0, 0x70, 0x0f, 0x1e, 0x00, 0x00, + 0x1e, 0x0f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0xc0, 0x00, + 0x3c, 0x00, 0x78, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x78, 0x1d, 0xc0, 0xf0, 0x07, 0xbc, 0x00, 0x00, + 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0xc0, 0x00, + 0x38, 0x00, 0x3c, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x38, 0x07, 0x80, 0x00, + 0x78, 0x3d, 0xe0, 0xf0, 0x07, 0xbc, 0x00, 0x00, + 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0xc0, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x38, 0x01, 0xe0, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x3c, 0x07, 0x80, 0x00, + 0x38, 0x38, 0xe0, 0xe0, 0x03, 0xf8, 0x00, 0x00, + 0x07, 0x1c, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0xc0, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x38, 0x03, 0xe0, 0x00, + 0x1f, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x1c, 0x07, 0x00, 0x00, + 0x38, 0x38, 0xe0, 0xe0, 0x01, 0xf0, 0x00, 0x00, + 0x07, 0xbc, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x38, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0xc0, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x3f, 0xff, 0xc0, 0x00, + 0x0f, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x1e, 0x0f, 0x00, 0x00, + 0x3c, 0x38, 0xe1, 0xe0, 0x00, 0xe0, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x3f, 0xff, 0x80, 0x00, + 0x03, 0xfe, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x1e, 0x0f, 0x00, 0x00, + 0x3c, 0x78, 0xf1, 0xe0, 0x01, 0xf0, 0x00, 0x00, + 0x01, 0xf0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x70, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x3f, 0xff, 0x00, 0x00, + 0x00, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x0e, 0x0e, 0x00, 0x00, + 0x1c, 0x70, 0x71, 0xc0, 0x01, 0xf0, 0x00, 0x00, + 0x01, 0xf0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x70, 0x00, 0x1c, 0x00, 0x38, 0x3c, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x0f, 0x1e, 0x00, 0x00, + 0x1c, 0x70, 0x71, 0xc0, 0x03, 0xb8, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x38, 0x1e, 0x00, 0x00, + 0x00, 0x03, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x07, 0x1c, 0x00, 0x00, + 0x1e, 0x70, 0x73, 0xc0, 0x07, 0xbc, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x08, 0x38, 0x00, 0x38, 0x0f, 0x00, 0x00, + 0x70, 0x03, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x38, 0x00, 0xe0, 0x00, 0x07, 0x1c, 0x00, 0x00, + 0x1e, 0xf0, 0x7b, 0xc0, 0x0f, 0x1e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x0e, 0x78, 0x00, 0x38, 0x07, 0x80, 0x00, + 0x78, 0x03, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x3c, 0x01, 0xe0, 0x00, 0x07, 0xbc, 0x00, 0x00, + 0x0e, 0xe0, 0x3b, 0x80, 0x0f, 0x1e, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1e, 0x0f, 0xf0, 0x00, 0x38, 0x03, 0x80, 0x00, + 0x78, 0x07, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x3c, 0x01, 0xe0, 0x00, 0x03, 0xb8, 0x00, 0x00, + 0x0e, 0xe0, 0x3b, 0x80, 0x1e, 0x0f, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1f, 0x83, 0xe0, 0x00, 0x38, 0x03, 0xc0, 0x00, + 0x3e, 0x0f, 0x80, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x1f, 0x07, 0xc0, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x0f, 0xe0, 0x3f, 0x80, 0x3c, 0x07, 0x80, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xf0, 0x00, 0x38, 0x01, 0xe0, 0x00, + 0x1f, 0xff, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x0f, 0xff, 0x80, 0x00, 0x03, 0xf8, 0x00, 0x00, + 0x0f, 0xe0, 0x3f, 0x80, 0x38, 0x03, 0x80, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x03, 0xff, 0xf8, 0x00, 0x38, 0x00, 0xe0, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x07, 0xff, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, + 0x07, 0xc0, 0x1f, 0x00, 0x78, 0x03, 0xc0, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x01, 0xff, 0x3c, 0x00, 0x38, 0x00, 0xf0, 0x00, + 0x07, 0xf8, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, + 0x03, 0xfe, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, + 0x07, 0xc0, 0x1f, 0x00, 0xf0, 0x01, 0xe0, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xf0, 0x00, 0x00, 0x39, 0xf0, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x0f, 0x9c, 0x00, 0x00, 0x39, 0xf0, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x39, 0xf0, 0xf8, 0x00, 0x39, 0xf0, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x1f, 0xf0, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3f, 0xfb, 0xfc, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x3e, 0x3c, 0x00, 0x00, + 0x3c, 0x78, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x3e, 0x3c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3e, 0x3f, 0x1e, 0x00, 0x3e, 0x3c, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x3c, 0x1c, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x3c, 0x3c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x39, 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x1e, 0x0e, 0x00, 0x3c, 0x1c, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x1e, 0x00, 0x00, + 0x78, 0x1c, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3b, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3f, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3f, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, + 0x7f, 0xfe, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3f, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x9c, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3b, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x1c, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x39, 0xe0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x3c, 0x1e, 0x00, 0x00, + 0x78, 0x1c, 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, + 0x78, 0x0e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x3c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x3c, 0x00, 0x00, 0x3c, 0x1c, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x38, 0x3c, 0x00, 0x00, + 0x38, 0x1e, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x7c, 0x00, 0x00, 0x3e, 0x3c, 0x00, 0x00, + 0x3c, 0x78, 0x00, 0x00, 0x3c, 0x7c, 0x00, 0x00, + 0x3e, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xfc, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x1f, 0xf0, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x8e, 0x00, 0x00, 0x39, 0xf0, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x0f, 0x9c, 0x00, 0x00, + 0x07, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x0f, 0x9c, 0x00, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x0e, 0x00, 0x38, 0x1c, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x39, 0xf0, 0x00, 0x00, + 0x0f, 0x9c, 0x00, 0x00, 0x3b, 0xc0, 0x00, 0x00, + 0x1f, 0xe0, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0xe0, 0x38, 0x00, 0x01, + 0xe0, 0x70, 0x3c, 0x00, 0xe0, 0x38, 0x00, 0x00, + 0xe0, 0x38, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x3f, 0xf0, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0xf0, 0x78, 0x00, 0x00, + 0xe0, 0x70, 0x38, 0x00, 0x70, 0x70, 0x00, 0x00, + 0xf0, 0x78, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x3e, 0x3c, 0x00, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x78, 0x78, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0xe0, 0xf8, 0x38, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x3c, 0x1c, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x70, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0xe0, 0xf8, 0x38, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x70, 0x70, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x7f, 0xe3, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x38, 0x1e, 0x00, 0x00, + 0x78, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x70, 0xd8, 0x70, 0x00, 0x1d, 0xc0, 0x00, 0x00, + 0x78, 0xf0, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x71, 0xdc, 0x70, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x61, 0xff, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3f, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x71, 0x8c, 0x70, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x38, 0xe0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x40, 0x7c, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1f, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x31, 0x8c, 0x60, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x39, 0xe0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x1d, 0xc0, 0x00, 0x00, + 0x33, 0x8e, 0xe0, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x1d, 0xc0, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x38, 0x0e, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x1d, 0xc0, 0x00, 0x00, + 0x3b, 0x06, 0xe0, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x1d, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x3c, 0x1e, 0x00, 0x00, + 0x78, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x70, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x0d, 0x80, 0x00, 0x00, + 0x1b, 0x06, 0xe0, 0x00, 0x1d, 0xc0, 0x00, 0x00, + 0x1f, 0xc0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x3c, 0x1c, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x78, 0x1c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x3c, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x1f, 0x07, 0xc0, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x3e, 0x3c, 0x00, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3c, 0x7c, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, + 0x1e, 0x07, 0xc0, 0x00, 0x38, 0xe0, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x3f, 0xf8, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1f, 0xf8, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x1f, 0xfc, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x1e, 0x03, 0xc0, 0x00, 0x70, 0x70, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x40, 0x00, 0x39, 0xe0, 0x00, 0x00, + 0x07, 0x9c, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x0f, 0xe0, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x0f, 0x9c, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0e, 0x03, 0x80, 0x00, 0xe0, 0x38, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xc0, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x27, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x0b, 0x15, 0x17, 0x13, 0x1a, 0x13, 0x19, 0x13, + 0x09, 0x0b, 0x0c, 0x13, 0x13, 0x1e, 0x17, 0x06, + 0x0b, 0x0b, 0x0d, 0x14, 0x09, 0x0b, 0x09, 0x09, + 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, + 0x13, 0x13, 0x09, 0x09, 0x14, 0x14, 0x14, 0x13, + 0x23, 0x17, 0x17, 0x19, 0x19, 0x17, 0x15, 0x1a, + 0x19, 0x09, 0x11, 0x17, 0x13, 0x1d, 0x19, 0x1a, + 0x17, 0x1a, 0x19, 0x17, 0x15, 0x19, 0x17, 0x22, + 0x17, 0x15, 0x15, 0x09, 0x09, 0x09, 0x11, 0x13, + 0x0b, 0x12, 0x12, 0x11, 0x12, 0x12, 0x0a, 0x12, + 0x13, 0x07, 0x07, 0x11, 0x07, 0x1b, 0x13, 0x12, + 0x12, 0x12, 0x0b, 0x11, 0x09, 0x13, 0x11, 0x17, + 0x10, 0x11, 0x10, 0x0b, 0x09, 0x0b, 0x14, 0x1a, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, + 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, + 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, + 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, + 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, + 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, + 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, + 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, + 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, + 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, + 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, + 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, + 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x07, + 0x1c, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, + 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, + 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, + 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, + 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, + 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x07, + 0x1c, 0x00, 0x00, 0x00, 0x07, 0xe1, 0xf8, 0x00, + 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x07, 0x00, + 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x07, + 0x1c, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x7c, 0x00, + 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x07, 0x1c, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x07, 0x00, + 0x00, 0x00, 0x01, 0xef, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x07, 0x00, + 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x07, 0x00, + 0x00, 0x00, 0x03, 0xc7, 0x80, 0x00, 0x00, 0x0f, + 0xf8, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x00, + 0x00, 0x00, 0x03, 0xc7, 0x80, 0x00, 0x00, 0x1f, + 0xfe, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x0f, 0x00, + 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x00, + 0x00, 0x00, 0x03, 0x83, 0x80, 0x00, 0x00, 0x3f, + 0xff, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, + 0x00, 0x00, 0x07, 0x83, 0xc0, 0x00, 0x00, 0x78, + 0x1f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, + 0x00, 0x00, 0x07, 0x01, 0xc0, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, + 0x00, 0x00, 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1f, 0x00, + 0x00, 0x00, 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x80, + 0x00, 0x00, 0x0f, 0xff, 0xe0, 0x00, 0x00, 0x07, + 0xff, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x07, 0xc0, + 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1f, + 0xff, 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x01, 0xe0, + 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x3f, + 0xf7, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x0f, 0x00, + 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xf0, + 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x7c, + 0x07, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x70, + 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x1e, 0x00, + 0x3c, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x20, 0x70, + 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x70, + 0x0f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x1e, 0x00, + 0x3c, 0x00, 0x00, 0x38, 0x07, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf0, 0xf0, + 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x00, 0x70, + 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x7c, 0x00, + 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, + 0x78, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf9, 0xf0, + 0x00, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x00, 0x7c, + 0x3f, 0x00, 0x00, 0x00, 0x07, 0xe1, 0xf8, 0x00, + 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0xc1, + 0xf8, 0x00, 0x00, 0x3e, 0x1f, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x7f, 0xe0, + 0x00, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x00, 0x3f, + 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, + 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xff, + 0xf0, 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, + 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, + 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3f, 0xc0, + 0x00, 0x00, 0xf0, 0x00, 0x1e, 0x00, 0x00, 0x3f, + 0xf7, 0x80, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, + 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xff, + 0xe0, 0x00, 0x00, 0x1f, 0xfb, 0x80, 0x00, 0x00, + 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, + 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, + 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, + 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, 0x0f, 0xff, + 0xfc, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1f, 0x80, + 0x00, 0x00, 0xe0, 0x00, 0x0e, 0x00, 0x00, 0x0f, + 0xe3, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, + 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x80, 0x00, 0x00, 0x07, 0xe3, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x01, + 0xc3, 0x80, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, + 0x00, 0x07, 0xc0, 0x0e, 0x00, 0x00, 0x00, 0xf8, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x01, + 0xc7, 0x80, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, + 0x00, 0x1f, 0xe0, 0x1e, 0x00, 0x00, 0x01, 0xfe, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x03, + 0xc7, 0x80, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, + 0x00, 0x1c, 0x70, 0x1c, 0x00, 0x00, 0x03, 0xfe, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x03, + 0xc7, 0x00, 0x00, 0x00, 0x3e, 0xde, 0x00, 0x00, + 0x00, 0x3c, 0x78, 0x3c, 0x00, 0x00, 0x07, 0x8f, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x76, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x03, + 0x87, 0x00, 0x00, 0x00, 0x3c, 0xcf, 0x00, 0x00, + 0x00, 0x38, 0x38, 0x38, 0x00, 0x00, 0x07, 0x07, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x03, + 0x87, 0x00, 0x00, 0x00, 0x38, 0xc7, 0x00, 0x00, + 0x00, 0x38, 0x38, 0x78, 0x00, 0x00, 0x07, 0x07, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x03, + 0x8f, 0x00, 0x00, 0x00, 0x38, 0xc0, 0x00, 0x00, + 0x00, 0x38, 0x38, 0x70, 0x00, 0x00, 0x07, 0x07, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x71, 0xc0, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xc0, 0x00, 0x00, 0x38, 0xc0, 0x00, 0x00, + 0x00, 0x38, 0x38, 0xf0, 0x00, 0x00, 0x07, 0x8f, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xc0, 0x00, 0x00, 0x3c, 0xc0, 0x00, 0x00, + 0x00, 0x38, 0x38, 0xe0, 0x00, 0x00, 0x03, 0x9e, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x39, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xc0, 0x00, 0x00, 0x1e, 0xc0, 0x00, 0x00, + 0x00, 0x3c, 0x79, 0xe0, 0x00, 0x00, 0x03, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x0e, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, + 0x00, 0x1c, 0x71, 0xc0, 0x00, 0x00, 0x01, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0x1e, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, + 0x00, 0x1f, 0xe3, 0xc0, 0x00, 0x00, 0x03, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, + 0x00, 0x07, 0xc3, 0x8f, 0x80, 0x00, 0x07, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xbf, 0xc0, 0x00, 0x0f, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x38, 0xe0, 0x00, 0x1e, 0x3c, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xc0, 0x00, 0x00, 0x00, 0xc7, 0x80, 0x00, + 0x00, 0x00, 0x0f, 0x78, 0xf0, 0x00, 0x3c, 0x1e, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xc0, 0x00, 0x00, 0x00, 0xc3, 0x80, 0x00, + 0x00, 0x00, 0x0e, 0x70, 0x70, 0x00, 0x38, 0x1e, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0xff, 0xc0, 0x00, 0x00, 0x00, 0xc3, 0x80, 0x00, + 0x00, 0x00, 0x1e, 0x70, 0x70, 0x00, 0x38, 0x0f, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x38, 0x00, 0x00, 0x00, 0x70, 0xc3, 0x80, 0x00, + 0x00, 0x00, 0x1c, 0x70, 0x70, 0x00, 0x38, 0x07, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x38, 0x00, 0x00, 0x00, 0x78, 0xc7, 0x80, 0x00, + 0x00, 0x00, 0x3c, 0x70, 0x70, 0x00, 0x3c, 0x03, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x38, 0x00, 0x00, 0x00, 0x78, 0xc7, 0x80, 0x00, + 0x00, 0x00, 0x38, 0x70, 0x70, 0x00, 0x3c, 0x07, + 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x78, 0x00, 0x00, 0x00, 0x3e, 0xdf, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x78, 0xf0, 0x00, 0x1f, 0x1f, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0x78, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x38, 0xe0, 0x00, 0x0f, 0xff, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0x70, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x3f, 0xc0, 0x00, 0x07, 0xfe, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x70, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x0f, 0x80, 0x00, 0x03, 0xf8, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x07, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x01, 0xfc, + 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x0f, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, + 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, + 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x1f, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x0f, 0xff, + 0x80, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, + 0x1f, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, + 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, + 0x00, 0x00, 0x3e, 0x0f, 0x80, 0x00, 0x00, 0x3e, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, + 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, + 0x80, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x1e, 0x0f, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x03, 0xf0, 0x00, + 0x00, 0x00, 0x78, 0x03, 0xc0, 0x00, 0x00, 0x78, + 0x07, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x03, + 0xc0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x3c, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x0f, 0xf0, 0x00, + 0x00, 0x00, 0x70, 0x03, 0xc0, 0x00, 0x00, 0x70, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x01, + 0xc0, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x78, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x03, 0x80, 0x00, 0x00, + 0x78, 0x03, 0xc0, 0x00, 0x00, 0x1f, 0x70, 0x00, + 0x00, 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x01, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, + 0x78, 0x03, 0xc0, 0x00, 0x00, 0x1e, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x01, 0xee, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x01, 0xc0, + 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x18, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x03, 0xce, 0x00, 0x00, + 0x00, 0x3b, 0xf8, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x70, 0x01, 0xc0, + 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, + 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x07, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x03, 0xce, 0x00, 0x00, + 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x71, 0xfc, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1e, 0x0f, 0x00, 0x00, 0x00, 0x70, 0x01, 0xc0, + 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, + 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x01, + 0xfe, 0x00, 0x00, 0x00, 0x07, 0x8e, 0x00, 0x00, + 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x77, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x78, 0x03, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, + 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x3f, + 0x80, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, + 0xfe, 0x00, 0x00, 0x00, 0x0f, 0x0e, 0x00, 0x00, + 0x00, 0x7c, 0x0f, 0x80, 0x00, 0x00, 0x7f, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x07, 0xfc, 0x00, 0x00, 0x00, 0x78, 0x07, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0xc0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, + 0xff, 0x80, 0x00, 0x00, 0x1e, 0x0e, 0x00, 0x00, + 0x00, 0x78, 0x03, 0x80, 0x00, 0x00, 0x7e, 0x0f, + 0x80, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xc0, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1e, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x7c, 0x03, + 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x3e, 0x0f, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0xc0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x3c, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x78, 0x03, + 0xc0, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, + 0x78, 0x03, 0x80, 0x00, 0x00, 0x0f, 0xfd, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x80, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x78, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x70, 0x01, + 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x78, 0x03, 0xc0, 0x00, 0x00, 0x07, 0xf1, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, + 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xfe, + 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x70, 0x01, + 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x03, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, + 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x07, 0xf8, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x78, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x70, 0x01, + 0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x03, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, + 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xc0, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x78, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x70, + 0x01, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, + 0x00, 0x70, 0x01, 0xc0, 0x00, 0x00, 0x70, 0x01, + 0xc0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, + 0x70, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x78, + 0x03, 0xc0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x78, 0x03, 0xc0, 0x00, 0x00, 0x38, 0x03, + 0xc0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, + 0x78, 0x03, 0xc0, 0x00, 0x00, 0x70, 0x07, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x78, + 0x07, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x3c, 0x03, + 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, + 0x78, 0x03, 0xc0, 0x00, 0x00, 0x78, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x0f, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x3e, 0x0f, 0x00, 0x00, 0x00, 0x1e, 0x0f, + 0x80, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, + 0x3e, 0x0f, 0x80, 0x00, 0x00, 0x3c, 0x1f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x1f, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xff, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x0f, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xfe, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x03, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x03, 0xf8, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf8, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x7c, 0x00, + 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, + 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, + 0xe0, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x7c, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x00, 0x07, 0xc0, 0x00, 0x1e, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x7c, 0x00, + 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x01, + 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, + 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, + 0xe0, 0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0xf8, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x00, 0x1e, 0x00, + 0x1c, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, + 0x00, 0x7f, 0xff, 0xe0, 0x00, 0x00, 0xfe, 0x00, + 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x03, + 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, + 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, + 0xe0, 0x00, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x01, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x00, 0x1f, 0x00, + 0x1c, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, + 0x00, 0xfe, 0x07, 0xf0, 0x00, 0x00, 0xfe, 0x00, + 0x00, 0x00, 0x1c, 0x01, 0xf0, 0x00, 0x00, 0x07, + 0xc1, 0xf0, 0x00, 0x00, 0x1c, 0x01, 0xf8, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x07, 0xe0, 0xfc, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x03, 0xe0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0x80, 0x0f, 0xc0, 0x00, 0x1f, 0x80, + 0x1c, 0x00, 0x00, 0x07, 0xe1, 0xf8, 0x00, 0x00, + 0x01, 0xf0, 0x00, 0xf8, 0x00, 0x00, 0xee, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x00, 0x00, 0x0f, + 0x00, 0x78, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1e, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x07, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0xc0, 0x1f, 0xc0, 0x00, 0x1f, 0x80, + 0x1c, 0x00, 0x00, 0x0f, 0x80, 0x7c, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x7c, 0x00, 0x01, 0xef, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x1e, + 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x0f, 0x80, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0xc0, 0x1d, 0xc0, 0x00, 0x1f, 0xc0, + 0x1c, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x3c, 0x00, 0x01, 0xc7, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x1c, + 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x0f, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x1f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0xc0, 0x1d, 0xc0, 0x00, 0x1d, 0xc0, + 0x1c, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, + 0x0f, 0x03, 0xe3, 0x9e, 0x00, 0x03, 0xc7, 0x80, + 0x00, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x00, 0x1c, + 0x00, 0x18, 0x00, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1d, 0xe0, 0x1d, 0xc0, 0x00, 0x1c, 0xe0, + 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x00, + 0x0f, 0x0f, 0xf7, 0x8e, 0x00, 0x03, 0xc7, 0x80, + 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x00, 0x00, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x7c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0xe0, 0x39, 0xc0, 0x00, 0x1c, 0xf0, + 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x0f, 0x00, 0x00, + 0x1e, 0x1f, 0xff, 0x8f, 0x00, 0x03, 0x83, 0x80, + 0x00, 0x00, 0x1c, 0x01, 0xe0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0xf8, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0xe0, 0x39, 0xc0, 0x00, 0x1c, 0x70, + 0x1c, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x1c, 0x3e, 0x3f, 0x0f, 0x00, 0x07, 0x83, 0xc0, + 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, + 0xf0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0xf0, 0x39, 0xc0, 0x00, 0x1c, 0x78, + 0x1c, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x1c, 0x3c, 0x1f, 0x07, 0x00, 0x07, 0x01, 0xc0, + 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, + 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, + 0xf8, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0xf0, 0x79, 0xc0, 0x00, 0x1c, 0x3c, + 0x1c, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x3c, 0x78, 0x0f, 0x07, 0x00, 0x0f, 0x01, 0xe0, + 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, + 0x80, 0x00, 0x00, 0x38, 0x03, 0xff, 0x00, 0x00, + 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, + 0xfc, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x70, 0x71, 0xc0, 0x00, 0x1c, 0x1c, + 0x1c, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x38, 0x70, 0x0f, 0x07, 0x00, 0x0f, 0x01, 0xe0, + 0x00, 0x00, 0x1c, 0x01, 0xf0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, + 0x80, 0x00, 0x00, 0x38, 0x03, 0xff, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, + 0x9c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x70, 0x71, 0xc0, 0x00, 0x1c, 0x1e, + 0x1c, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x38, 0xf0, 0x0f, 0x07, 0x00, 0x0f, 0xff, 0xe0, + 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x03, 0xff, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1f, + 0x1e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x78, 0xf1, 0xc0, 0x00, 0x1c, 0x0f, + 0x1c, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x38, 0xe0, 0x0e, 0x07, 0x00, 0x1f, 0xff, 0xf0, + 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1e, + 0x0f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x38, 0xe1, 0xc0, 0x00, 0x1c, 0x07, + 0x1c, 0x00, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x38, 0xe0, 0x0e, 0x0f, 0x00, 0x1f, 0xff, 0xf0, + 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x00, 0x3c, + 0x00, 0x0c, 0x00, 0x00, 0x1c, 0x00, 0x1e, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x07, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x07, 0x80, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x38, 0xe1, 0xc0, 0x00, 0x1c, 0x07, + 0x9c, 0x00, 0x00, 0x3c, 0x00, 0x0f, 0x00, 0x00, + 0x38, 0xe0, 0x1e, 0x0e, 0x00, 0x1c, 0x00, 0x70, + 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x00, 0x1c, + 0x00, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x3d, 0xe1, 0xc0, 0x00, 0x1c, 0x03, + 0x9c, 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x00, + 0x38, 0xe0, 0x1e, 0x1e, 0x00, 0x3c, 0x00, 0x78, + 0x00, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x00, 0x1e, + 0x00, 0x1e, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x03, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x1d, 0xc1, 0xc0, 0x00, 0x1c, 0x01, + 0xdc, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, + 0x38, 0xe0, 0x3c, 0x1c, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, 0x1e, + 0x00, 0x3c, 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x1c, 0x00, 0x00, 0x00, 0x1c, + 0x01, 0xe0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x1d, 0xc1, 0xc0, 0x00, 0x1c, 0x01, + 0xfc, 0x00, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, + 0x3c, 0xf0, 0x7c, 0x3c, 0x00, 0x78, 0x00, 0x3c, + 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, 0x0f, + 0x00, 0x7c, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x3c, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0xf0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x1f, 0xc1, 0xc0, 0x00, 0x1c, 0x00, + 0xfc, 0x00, 0x00, 0x0f, 0x80, 0x7c, 0x00, 0x00, + 0x3c, 0x78, 0xfc, 0xf8, 0x00, 0x78, 0x00, 0x3c, + 0x00, 0x00, 0x1c, 0x01, 0xf0, 0x00, 0x00, 0x07, + 0xe1, 0xf8, 0x00, 0x00, 0x1c, 0x01, 0xf8, 0x00, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x07, 0xe0, 0x7f, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0x78, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x70, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x1f, 0x81, 0xc0, 0x00, 0x1c, 0x00, + 0xfc, 0x00, 0x00, 0x07, 0xe1, 0xf8, 0x00, 0x00, + 0x1c, 0x7f, 0xff, 0xf0, 0x00, 0x70, 0x00, 0x1c, + 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x03, + 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, + 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xff, 0xfc, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x78, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, + 0x00, 0x1c, 0x0f, 0x81, 0xc0, 0x00, 0x1c, 0x00, + 0x7c, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00, + 0x1e, 0x3f, 0xdf, 0xe0, 0x00, 0xf0, 0x00, 0x1e, + 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x01, + 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, + 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x3c, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, + 0x00, 0x1c, 0x0f, 0x81, 0xc0, 0x00, 0x1c, 0x00, + 0x3c, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00, + 0x0f, 0x1f, 0x0f, 0x87, 0x80, 0xe0, 0x00, 0x0e, + 0x00, 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, + 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x1c, + 0x00, 0x1e, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, + 0x00, 0x1c, 0x0f, 0x01, 0xc0, 0x00, 0x1c, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x0f, 0x80, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xc0, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf0, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xfe, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, + 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x01, + 0xfe, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0xe0, 0x00, + 0x0e, 0x00, 0x00, 0xe0, 0x03, 0xe0, 0x03, 0x80, + 0x3c, 0x00, 0x78, 0x00, 0x00, 0xf0, 0x00, 0x78, + 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x01, 0xff, 0xc0, + 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x03, + 0xff, 0x80, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0xf0, 0x00, + 0x1e, 0x00, 0x00, 0xf0, 0x03, 0xe0, 0x07, 0x80, + 0x1e, 0x00, 0xf0, 0x00, 0x00, 0x70, 0x00, 0x70, + 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x03, 0xff, 0xe0, + 0x00, 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x0f, + 0xff, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0xf0, 0x00, + 0x1e, 0x00, 0x00, 0xf0, 0x07, 0xe0, 0x07, 0x80, + 0x0e, 0x00, 0xe0, 0x00, 0x00, 0x78, 0x00, 0xf0, + 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0xf0, 0x00, 0x00, 0x07, 0xc1, 0xf0, + 0x00, 0x00, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0x0f, + 0x83, 0xe0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x78, 0x00, + 0x3c, 0x00, 0x00, 0x70, 0x07, 0xf0, 0x07, 0x00, + 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x3c, 0x01, 0xe0, + 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x78, 0x00, 0x00, 0x0f, 0x00, 0x78, + 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x1e, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x78, 0x00, + 0x3c, 0x00, 0x00, 0x70, 0x07, 0x70, 0x07, 0x00, + 0x07, 0x83, 0xc0, 0x00, 0x00, 0x1c, 0x01, 0xc0, + 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x07, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x3c, + 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, + 0x00, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x00, 0x78, 0x07, 0x70, 0x0f, 0x00, + 0x03, 0x83, 0x80, 0x00, 0x00, 0x1e, 0x03, 0xc0, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x38, 0x00, 0x00, 0x1c, 0x00, 0x3c, + 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, + 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x3c, 0x00, + 0x78, 0x00, 0x00, 0x78, 0x0f, 0x78, 0x0f, 0x00, + 0x03, 0xc7, 0x80, 0x00, 0x00, 0x0f, 0x07, 0x80, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x38, 0x00, 0x00, 0x1c, 0x00, 0x1c, + 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x3c, 0x00, + 0x78, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x00, + 0x01, 0xef, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x38, 0x00, 0x00, 0x3c, 0x00, 0x1e, + 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1c, 0x00, + 0x70, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x00, + 0x00, 0xfe, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0x0e, + 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x0f, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1e, 0x00, + 0xf0, 0x00, 0x00, 0x3c, 0x0e, 0x38, 0x1e, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x8e, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0x0e, + 0x00, 0x00, 0x1c, 0x00, 0xf8, 0x00, 0x00, 0x0f, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x1e, 0x00, + 0xf0, 0x00, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0xde, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x01, 0xf0, 0x00, 0x00, 0x38, 0x00, 0x0e, + 0x00, 0x00, 0x1f, 0xff, 0xf8, 0x00, 0x00, 0x07, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x0f, 0x01, + 0xe0, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x38, 0x00, 0x0e, + 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x01, + 0xff, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x0f, 0x01, + 0xe0, 0x00, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x0e, + 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x00, + 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x07, 0x01, + 0xc0, 0x00, 0x00, 0x1e, 0x3c, 0x1c, 0x3c, 0x00, + 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xff, 0x80, 0x00, 0x00, 0x38, 0x00, 0x0e, + 0x00, 0x00, 0x1c, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x07, 0x83, + 0xc0, 0x00, 0x00, 0x1e, 0x3c, 0x1e, 0x3c, 0x00, + 0x01, 0xef, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0e, + 0x00, 0x00, 0x1c, 0x07, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x07, 0x83, + 0xc0, 0x00, 0x00, 0x0e, 0x38, 0x0e, 0x38, 0x00, + 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x1e, + 0x00, 0x00, 0x1c, 0x07, 0xc0, 0x00, 0x00, 0x38, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x03, 0xc7, + 0x80, 0x00, 0x00, 0x0e, 0x38, 0x0e, 0x38, 0x00, + 0x03, 0xc7, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, + 0x00, 0x00, 0x1c, 0x03, 0xe0, 0x00, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x03, 0xc7, + 0x80, 0x00, 0x00, 0x0f, 0x78, 0x0f, 0x78, 0x00, + 0x07, 0x83, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x07, 0x3c, + 0x00, 0x00, 0x1c, 0x01, 0xf0, 0x00, 0x00, 0x3c, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x0f, 0x70, 0x07, 0x78, 0x00, + 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x07, 0xb8, + 0x00, 0x00, 0x1c, 0x00, 0xf0, 0x00, 0x00, 0x1c, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x01, 0xef, + 0x00, 0x00, 0x00, 0x07, 0x70, 0x07, 0x70, 0x00, + 0x0e, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0xf8, + 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, 0x1e, + 0x00, 0xf8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x0f, 0x00, 0x78, 0x00, 0x00, 0x01, 0xef, + 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, + 0x1e, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc1, 0xf0, + 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, 0x0f, + 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x0f, 0xc1, 0xf8, 0x00, 0x00, 0x00, 0xfe, + 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, + 0x3c, 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf8, + 0x00, 0x00, 0x1c, 0x00, 0x3c, 0x00, 0x00, 0x0f, + 0xff, 0xe0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x00, 0xfe, + 0x00, 0x00, 0x00, 0x07, 0xe0, 0x03, 0xf0, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, + 0x00, 0x00, 0x1c, 0x00, 0x3e, 0x00, 0x00, 0x03, + 0xff, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x03, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x7c, + 0x00, 0x00, 0x00, 0x03, 0xe0, 0x03, 0xe0, 0x00, + 0x78, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x9f, + 0x00, 0x00, 0x1c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7c, + 0x00, 0x00, 0x00, 0x03, 0xe0, 0x03, 0xe0, 0x00, + 0xf0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x7f, 0xff, 0xf0, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xff, 0xff, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xff, 0xff, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xff, 0xff, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x00, + 0x00, 0x00, 0x39, 0xf8, 0x00, 0x00, 0x00, 0x03, + 0xf0, 0x00, 0x00, 0x00, 0x07, 0xe7, 0x00, 0x00, + 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0xff, 0x80, + 0x00, 0x00, 0x00, 0x07, 0xe7, 0x00, 0x00, 0x00, + 0x38, 0xfc, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x0f, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x39, 0xf0, 0x7e, 0x00, 0x00, 0x39, 0xfc, + 0x00, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, + 0x00, 0x00, 0x3b, 0xfc, 0x00, 0x00, 0x00, 0x0f, + 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xf7, 0x00, 0x00, + 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0xff, 0x80, + 0x00, 0x00, 0x00, 0x0f, 0xf7, 0x00, 0x00, 0x00, + 0x3b, 0xfe, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x1f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x3b, 0xfc, 0xff, 0x00, 0x00, 0x3b, 0xff, + 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, + 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x1f, + 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, + 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0xff, 0x80, + 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, + 0x3f, 0xff, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x3e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0xfd, 0xff, 0x80, 0x00, 0x3f, 0xff, + 0x00, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1f, 0x00, + 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x3e, + 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x00, 0x00, + 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x00, 0x00, 0x00, + 0x3f, 0x0f, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x1f, 0x8f, 0x80, 0x00, 0x3f, 0x0f, + 0x80, 0x00, 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x3e, 0x07, 0x00, 0x00, 0x00, 0x3c, + 0x0f, 0x00, 0x00, 0x00, 0x38, 0x1f, 0x00, 0x00, + 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x1f, 0x00, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0xf0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x1f, 0x07, 0x80, 0x00, 0x3c, 0x07, + 0x80, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, 0x00, 0x78, + 0x07, 0x00, 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, + 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, + 0x3c, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x39, + 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x0f, 0x03, 0x80, 0x00, 0x3c, 0x03, + 0x80, 0x00, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, + 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3b, + 0xc0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, + 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, + 0x00, 0x7f, 0xff, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xc0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, + 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, + 0x00, 0x7f, 0xff, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf7, 0x00, + 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, + 0x00, 0x7f, 0xff, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x07, 0x00, + 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, + 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0xf0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, + 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0f, 0x00, + 0x00, 0x00, 0x3c, 0x07, 0x80, 0x00, 0x00, 0x78, + 0x0f, 0x00, 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x78, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x78, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1f, 0x00, + 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x38, + 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, + 0x00, 0x3c, 0x07, 0x80, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x0f, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3f, 0x00, + 0x00, 0x00, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x3e, + 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x00, 0x00, + 0x00, 0x3e, 0x0f, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x3e, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, + 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x1f, + 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, + 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x1e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf7, 0x80, + 0x00, 0x00, 0x3b, 0xfc, 0x00, 0x00, 0x00, 0x0f, + 0xf8, 0x00, 0x00, 0x00, 0x0f, 0xf7, 0x00, 0x00, + 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe3, 0x80, + 0x00, 0x00, 0x39, 0xf8, 0x00, 0x00, 0x00, 0x07, + 0xf0, 0x00, 0x00, 0x00, 0x07, 0xe7, 0x00, 0x00, + 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x07, 0xe7, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x07, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x0e, 0x03, 0x80, 0x00, 0x38, 0x03, + 0x80, 0x00, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7c, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x39, 0xf8, 0x00, 0x00, 0x00, 0x07, 0xe7, 0x00, + 0x00, 0x00, 0x39, 0xe0, 0x00, 0x00, 0x00, 0x0f, + 0xf0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0xf0, 0x07, + 0x80, 0x00, 0x01, 0xe0, 0x38, 0x0f, 0x00, 0x00, + 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3b, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xf7, 0x00, + 0x00, 0x00, 0x3b, 0xe0, 0x00, 0x00, 0x00, 0x1f, + 0xf8, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0xf0, 0x07, + 0x80, 0x00, 0x00, 0xe0, 0x3c, 0x0e, 0x00, 0x00, + 0x78, 0x0f, 0x00, 0x00, 0x00, 0x78, 0x0f, 0x00, + 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, + 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x3f, + 0xfc, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x07, + 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x1e, 0x00, 0x00, + 0x38, 0x1e, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x00, + 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x00, + 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x78, + 0x3e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x78, 0x0f, + 0x00, 0x00, 0x00, 0xf0, 0x7c, 0x1e, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, + 0x40, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3e, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x1f, 0x00, + 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, + 0x0e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x0e, + 0x00, 0x00, 0x00, 0x70, 0x7c, 0x1c, 0x00, 0x00, + 0x1e, 0x38, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, + 0xc0, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x78, 0x0f, 0x00, + 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x38, 0x0e, + 0x00, 0x00, 0x00, 0x70, 0xec, 0x1c, 0x00, 0x00, + 0x0e, 0x78, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf1, + 0xc0, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3c, 0x03, 0x80, 0x00, 0x00, 0x70, 0x0f, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x3c, 0x1e, + 0x00, 0x00, 0x00, 0x78, 0xee, 0x3c, 0x00, 0x00, + 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x00, + 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x71, 0xff, + 0xc0, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xe0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x1c, 0x1c, + 0x00, 0x00, 0x00, 0x38, 0xee, 0x38, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x00, 0x1e, 0x1c, 0x00, + 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x60, 0x7f, + 0x80, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xfc, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x1e, 0x3c, + 0x00, 0x00, 0x00, 0x38, 0xe6, 0x38, 0x00, 0x00, + 0x03, 0xe0, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00, + 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x40, 0x1f, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0xfe, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x0e, 0x38, + 0x00, 0x00, 0x00, 0x3d, 0xc6, 0x78, 0x00, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x38, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xff, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x0e, 0x38, + 0x00, 0x00, 0x00, 0x1d, 0xc7, 0x70, 0x00, 0x00, + 0x07, 0xe0, 0x00, 0x00, 0x00, 0x0f, 0x38, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x38, 0x03, 0x80, 0x00, 0x00, 0x70, 0x07, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x03, 0x80, 0x00, 0x00, 0x0f, 0x78, + 0x00, 0x00, 0x00, 0x1d, 0xc7, 0x70, 0x00, 0x00, + 0x07, 0xf0, 0x00, 0x00, 0x00, 0x07, 0x70, 0x00, + 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3c, 0x07, 0x80, 0x00, 0x00, 0x78, 0x0f, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x07, 0x80, 0x00, 0x00, 0x07, 0x70, + 0x00, 0x00, 0x00, 0x1d, 0xc3, 0x70, 0x00, 0x00, + 0x0f, 0x70, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, + 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x78, + 0x07, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x07, 0x80, 0x00, 0x00, 0x07, 0xf0, + 0x00, 0x00, 0x00, 0x0f, 0x83, 0xe0, 0x00, 0x00, + 0x1e, 0x78, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, + 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3c, + 0x1f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x1f, 0x80, 0x00, 0x00, 0x03, 0xe0, + 0x00, 0x00, 0x00, 0x0f, 0x83, 0xe0, 0x00, 0x00, + 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, + 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0xfe, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0xff, 0x80, 0x00, 0x00, 0x03, 0xe0, + 0x00, 0x00, 0x00, 0x0f, 0x83, 0xe0, 0x00, 0x00, + 0x38, 0x1c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, + 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x3b, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xf7, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0xfc, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x1f, 0xfb, 0x80, 0x00, 0x00, 0x03, 0xe0, + 0x00, 0x00, 0x00, 0x0f, 0x03, 0xc0, 0x00, 0x00, + 0x78, 0x1e, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, + 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, + 0x39, 0xf0, 0x00, 0x00, 0x00, 0x03, 0xe7, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xf0, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x07, 0xe3, 0x80, 0x00, 0x00, 0x01, 0xc0, + 0x00, 0x00, 0x00, 0x07, 0x01, 0xc0, 0x00, 0x00, + 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, + 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfc, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, + 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xc0, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0xf0, 0x24, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x0c, 0x94, + 0xea, 0xff, 0xfd, 0x70, 0xea, 0x00, 0x00, 0x01, + 0xe3, 0x5c, 0x00, 0xb7, 0xa5, 0x9f, 0xf0, 0x04, + 0xe0, 0x86, 0xc0, 0x0c, 0xe5, 0x9f, 0xf0, 0x00, + 0x00, 0x00, 0x0f, 0x74, 0x00, 0x00, 0x0c, 0x98, + 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x24, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x0e, 0x4c, 0xea, 0xff, 0xfd, 0x03, + 0xea, 0x00, 0x00, 0x07, 0xe5, 0x9f, 0xc0, 0x1c, + 0xe5, 0x9c, 0x30, 0x00, 0xe3, 0x83, 0x33, 0x33, + 0xe1, 0x52, 0x00, 0x03, 0x05, 0x9f, 0xc0, 0x10, + 0x05, 0x9c, 0xc0, 0x00, 0x03, 0x8c, 0x23, 0x33, + 0xe5, 0x9f, 0xc0, 0x08, 0xe5, 0x9f, 0xf0, 0x08, + 0x66, 0x00, 0x00, 0x60, 0x66, 0x00, 0x00, 0x5c, + 0x66, 0x00, 0x00, 0x58, 0x00, 0x00, 0x0e, 0x50, + 0x00, 0x00, 0x00, 0x01, 0xf0, 0x24, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x02, 0x6c, 0xa0, 0x00, 0x0b, 0x38, + 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x0f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, + 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1f, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0xfe, 0xb1, 0x72, 0x17, 0xf7, + 0xd1, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xcd, + 0xf3, 0x57, 0x93, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x3f, 0xfe, 0xca, 0x20, 0xad, 0x9a, + 0xb5, 0xe9, 0x46, 0xe9, 0x00, 0x00, 0x40, 0x03, + 0x83, 0x12, 0x51, 0x00, 0xb5, 0x7f, 0x65, 0x09, + 0x80, 0x00, 0x40, 0x05, 0x80, 0x3f, 0xf8, 0x95, + 0x9d, 0xac, 0xd2, 0x28, 0x80, 0x00, 0x40, 0x04, + 0x8e, 0xac, 0x02, 0x5b, 0x3e, 0x70, 0x76, 0xbb, + 0x00, 0x00, 0x40, 0x07, 0x9c, 0x04, 0x1f, 0xd0, + 0xa9, 0x33, 0xef, 0x60, 0x80, 0x00, 0x40, 0x08, + 0xc0, 0x5f, 0xf4, 0xe0, 0x6c, 0x83, 0xbb, 0x96, + 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, + 0xc9, 0x0f, 0xda, 0xa2, 0x21, 0x68, 0xc2, 0x35, + 0x00, 0x00, 0x3f, 0xfe, 0xb1, 0x73, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, + 0xff, 0xfe, 0x2f, 0xf1, 0x48, 0x3b, 0x9d, 0x27, + 0x00, 0x00, 0x3f, 0xee, 0xe8, 0x08, 0x97, 0x58, + 0x10, 0x16, 0xb3, 0x7d, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, + 0x41, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x05, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x90, 0x90, 0x90, + 0x90, 0x90, 0x90, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x02, + 0x02, 0x02, 0x02, 0x40, 0xe5, 0x9f, 0xc0, 0x00, + 0xe1, 0x2f, 0xff, 0x1c, 0x2e, 0x01, 0x71, 0xfd, + 0xe5, 0x9f, 0xc0, 0x00, 0xe1, 0x2f, 0xff, 0x1c, + 0x2e, 0x00, 0x5b, 0x9b, 0xe5, 0x9f, 0xc0, 0x00, + 0xe1, 0x2f, 0xff, 0x1c, 0x2e, 0x00, 0x5c, 0x25, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x01, 0xc1, 0xa8, 0x2e, 0x01, 0xc2, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xc1, 0xa8, + 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xcf, + 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x01, 0x00, + 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x46, 0x75, 0x6a, 0x69, 0x74, 0x73, + 0x75, 0x20, 0x53, 0x69, 0x65, 0x6d, 0x65, 0x6e, + 0x73, 0x20, 0x26, 0x20, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x67, 0x65, 0x6e, 0x63, 0x65, 0x20, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x57, 0x5e, 0x61, 0xa3, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x0c, + 0x6c, 0x00, 0x00, 0x24, 0x64, 0x00, 0x00, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4e, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xd0, 0x00, 0x00, 0x07, 0xd0, + 0x00, 0x00, 0x13, 0x88, 0x02, 0x02, 0x01, 0x00, + 0x00, 0x00, 0x4e, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xd0, 0x00, 0x00, 0x07, 0xd0, + 0x00, 0x00, 0x13, 0x88, 0x02, 0x02, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x05, 0xd4, + 0x2e, 0x08, 0x05, 0xd4, 0x2e, 0x08, 0x05, 0xdc, + 0x2e, 0x08, 0x05, 0xdc, 0x2e, 0x08, 0x05, 0xe4, + 0x2e, 0x08, 0x05, 0xe4, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, + 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, + 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, + 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe, + 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7, + 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, + 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, + 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, + 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, + 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, + 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, + 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, + 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30, + 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63, + 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, + 0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, + 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, + 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b, + 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, + 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe, + 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, + 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, + 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x6c, 0xfe, + 0x6c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, + 0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c, + 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, + 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, + 0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18, + 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, + 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, + 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18, + 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xd6, 0xd6, + 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30, + 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, + 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe, + 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, + 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18, + 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, + 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, + 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, + 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde, + 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, + 0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, + 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, + 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde, + 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, + 0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60, + 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c, + 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c, + 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x7e, 0x5a, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, + 0xd6, 0xfe, 0xee, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x7c, 0x38, 0x38, + 0x7c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xc6, 0x86, 0x0c, 0x18, 0x30, + 0x60, 0xc2, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, + 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66, + 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, + 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe, + 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x36, 0x32, 0x30, 0x78, 0x30, + 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, + 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00, + 0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66, + 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00, + 0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78, + 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0xfe, 0xd6, + 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc, + 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, + 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60, + 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30, + 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, + 0xd6, 0xd6, 0xfe, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, + 0x38, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18, + 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, + 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18, + 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, + 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc2, 0x66, 0x3c, 0x18, 0x70, 0x00, 0x00, + 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe, + 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, + 0xc0, 0xc0, 0xc6, 0x7c, 0x18, 0x70, 0x00, 0x00, + 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe, + 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe, + 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, + 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, + 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x6c, 0x38, 0x10, 0x38, 0x6c, 0xc6, 0xfe, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x18, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, + 0x68, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x36, 0x36, + 0x7e, 0xd8, 0xd8, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc, + 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00, + 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x18, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, + 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, + 0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, + 0x7e, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0xcc, 0xcc, 0xf8, 0xc4, 0xcc, 0xde, + 0xcc, 0xcc, 0xcc, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, + 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc, + 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, + 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, + 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, + 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, + 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, + 0x60, 0xdc, 0x86, 0x0c, 0x18, 0x3e, 0x00, 0x00, + 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, + 0x66, 0xce, 0x9a, 0x3f, 0x06, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, + 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, + 0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, + 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, + 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, + 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, + 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, + 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, + 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff, + 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8, + 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, + 0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x18, + 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8, + 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66, 0x66, + 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, + 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, + 0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66, + 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb, + 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, + 0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60, + 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, + 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18, + 0x18, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, + 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, + 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7e, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, + 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec, + 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6c, 0x36, 0x36, 0x36, 0x36, 0x36, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3c, 0x66, 0x0c, 0x18, 0x32, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7e, 0x7e, 0x7e, + 0x7e, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x2e, 0x00, 0x66, 0x3c, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, + 0x2e, 0x08, 0x07, 0xa8, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, + 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf7, + 0x11, 0x38, 0x06, 0x53, 0x2e, 0x08, 0x17, 0xe8, + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x21, + 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x39, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x21, + 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb9, + 0x0e, 0xa6, 0x06, 0x53, 0x2e, 0x08, 0x19, 0x18, + 0x2e, 0x08, 0x1a, 0x3c, 0x2e, 0x08, 0x19, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x64, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x80, 0x10, 0x80, 0x00, 0x80, 0xda, 0x80, + 0x00, 0x5a, 0x51, 0xf0, 0x00, 0x36, 0x91, 0x22, + 0x00, 0xf0, 0x29, 0x6e, 0x00, 0x10, 0xd2, 0x92, + 0x00, 0xca, 0x6a, 0xde, 0x00, 0xa6, 0xaa, 0x10, + 0x00, 0x80, 0x3b, 0x80, 0x00, 0x80, 0xbc, 0x80, + 0x00, 0x80, 0x7e, 0x80, 0x00, 0xcf, 0x22, 0x73, + 0x00, 0x93, 0x48, 0x5d, 0x00, 0xa2, 0x73, 0x93, + 0x00, 0x25, 0xae, 0xad, 0x00, 0xa7, 0x9f, 0x60, + 0x00, 0x10, 0x10, 0x10, 0x00, 0x59, 0x10, 0x10, + 0x00, 0xa2, 0x10, 0x10, 0x00, 0xeb, 0x10, 0x10, + 0x00, 0x10, 0x10, 0x59, 0x00, 0x59, 0x10, 0x59, + 0x00, 0xa2, 0x10, 0x59, 0x00, 0xeb, 0x10, 0x59, + 0x00, 0x10, 0x10, 0xa2, 0x00, 0x59, 0x10, 0xa2, + 0x00, 0xa2, 0x10, 0xa2, 0x00, 0xeb, 0x10, 0xa2, + 0x00, 0x10, 0x10, 0xeb, 0x00, 0x59, 0x10, 0xeb, + 0x00, 0xa2, 0x10, 0xeb, 0x00, 0xeb, 0x10, 0xeb, + 0x00, 0x10, 0x2f, 0x10, 0x00, 0x59, 0x2f, 0x10, + 0x00, 0xa2, 0x2f, 0x10, 0x00, 0xeb, 0x2f, 0x10, + 0x00, 0x10, 0x2f, 0x59, 0x00, 0x59, 0x2f, 0x59, + 0x00, 0xa2, 0x2f, 0x59, 0x00, 0xeb, 0x2f, 0x59, + 0x00, 0x10, 0x2f, 0xa2, 0x00, 0x59, 0x2f, 0xa2, + 0x00, 0xa2, 0x2f, 0xa2, 0x00, 0xeb, 0x2f, 0xa2, + 0x00, 0x10, 0x2f, 0xeb, 0x00, 0x59, 0x2f, 0xeb, + 0x00, 0xa2, 0x2f, 0xeb, 0x00, 0xeb, 0x2f, 0xeb, + 0x00, 0x10, 0x4e, 0x10, 0x00, 0x59, 0x4e, 0x10, + 0x00, 0xa2, 0x4e, 0x10, 0x00, 0xeb, 0x4e, 0x10, + 0x00, 0x10, 0x4e, 0x59, 0x00, 0x59, 0x4e, 0x59, + 0x00, 0xa2, 0x4e, 0x59, 0x00, 0xeb, 0x4e, 0x59, + 0x00, 0x10, 0x4e, 0xa2, 0x00, 0x59, 0x4e, 0xa2, + 0x00, 0xa2, 0x4e, 0xa2, 0x00, 0xeb, 0x4e, 0xa2, + 0x00, 0x10, 0x4e, 0xeb, 0x00, 0x59, 0x4e, 0xeb, + 0x00, 0xa2, 0x4e, 0xeb, 0x00, 0xeb, 0x4e, 0xeb, + 0x00, 0x10, 0x6d, 0x10, 0x00, 0x59, 0x6d, 0x10, + 0x00, 0xa2, 0x6d, 0x10, 0x00, 0xeb, 0x6d, 0x10, + 0x00, 0x10, 0x6d, 0x59, 0x00, 0x59, 0x6d, 0x59, + 0x00, 0xa2, 0x6d, 0x59, 0x00, 0xeb, 0x6d, 0x59, + 0x00, 0x10, 0x6d, 0xa2, 0x00, 0x59, 0x6d, 0xa2, + 0x00, 0xa2, 0x6d, 0xa2, 0x00, 0xeb, 0x6d, 0xa2, + 0x00, 0x10, 0x6d, 0xeb, 0x00, 0x59, 0x6d, 0xeb, + 0x00, 0xa2, 0x6d, 0xeb, 0x00, 0xeb, 0x6d, 0xeb, + 0x00, 0x10, 0x8c, 0x10, 0x00, 0x59, 0x8c, 0x10, + 0x00, 0xa2, 0x8c, 0x10, 0x00, 0xeb, 0x8c, 0x10, + 0x00, 0x10, 0x8c, 0x59, 0x00, 0x59, 0x8c, 0x59, + 0x00, 0xa2, 0x8c, 0x59, 0x00, 0xeb, 0x8c, 0x59, + 0x00, 0x10, 0x8c, 0xa2, 0x00, 0x59, 0x8c, 0xa2, + 0x00, 0xa2, 0x8c, 0xa2, 0x00, 0xeb, 0x8c, 0xa2, + 0x00, 0x10, 0x8c, 0xeb, 0x00, 0x59, 0x8c, 0xeb, + 0x00, 0xa2, 0x8c, 0xeb, 0x00, 0xeb, 0x8c, 0xeb, + 0x00, 0x10, 0xab, 0x10, 0x00, 0x59, 0xab, 0x10, + 0x00, 0xa2, 0xab, 0x10, 0x00, 0xeb, 0xab, 0x10, + 0x00, 0x10, 0xab, 0x59, 0x00, 0x59, 0xab, 0x59, + 0x00, 0xa2, 0xab, 0x59, 0x00, 0xeb, 0xab, 0x59, + 0x00, 0x10, 0xab, 0xa2, 0x00, 0x59, 0xab, 0xa2, + 0x00, 0xa2, 0xab, 0xa2, 0x00, 0xeb, 0xab, 0xa2, + 0x00, 0x10, 0xab, 0xeb, 0x00, 0x59, 0xab, 0xeb, + 0x00, 0xa2, 0xab, 0xeb, 0x00, 0xeb, 0xab, 0xeb, + 0x00, 0x10, 0xca, 0x10, 0x00, 0x59, 0xca, 0x10, + 0x00, 0xa2, 0xca, 0x10, 0x00, 0xeb, 0xca, 0x10, + 0x00, 0x10, 0xca, 0x59, 0x00, 0x59, 0xca, 0x59, + 0x00, 0xa2, 0xca, 0x59, 0x00, 0xeb, 0xca, 0x59, + 0x00, 0x10, 0xca, 0xa2, 0x00, 0x59, 0xca, 0xa2, + 0x00, 0xa2, 0xca, 0xa2, 0x00, 0xeb, 0xca, 0xa2, + 0x00, 0x10, 0xca, 0xeb, 0x00, 0x59, 0xca, 0xeb, + 0x00, 0xa2, 0xca, 0xeb, 0x00, 0xeb, 0xca, 0xeb, + 0x00, 0x10, 0xe9, 0x10, 0x00, 0x59, 0xe9, 0x10, + 0x00, 0xa2, 0xe9, 0x10, 0x00, 0xeb, 0xe9, 0x10, + 0x00, 0x10, 0xe9, 0x59, 0x00, 0x59, 0xe9, 0x59, + 0x00, 0xa2, 0xe9, 0x59, 0x00, 0xeb, 0xe9, 0x59, + 0x00, 0x10, 0xe9, 0xa2, 0x00, 0x59, 0xe9, 0xa2, + 0x00, 0xa2, 0xe9, 0xa2, 0x00, 0xeb, 0xe9, 0xa2, + 0x00, 0x10, 0xe9, 0xeb, 0x00, 0x59, 0xe9, 0xeb, + 0x00, 0xa2, 0xe9, 0xeb, 0x00, 0xeb, 0xe9, 0xeb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x24, 0xc0, 0xc1, 0x11, 0x11, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x6d, 0xbb, 0xeb, + 0x8e, 0x01, 0xea, 0x25, 0x04, 0xd0, 0x82, 0x49, + 0xed, 0x4c, 0x8f, 0xc2, 0x66, 0x0b, 0x65, 0xc5, + 0x0c, 0xc2, 0x41, 0x19, 0x07, 0xa8, 0x94, 0x13, + 0x42, 0x09, 0x27, 0xb5, 0x32, 0x3f, 0x09, 0x98, + 0x2d, 0x97, 0x14, 0x33, 0x09, 0x04, 0x64, 0x00, + 0xff, 0xff, 0x24, 0xc0, 0xe0, 0x11, 0x21, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x13, 0x8e, 0xf7, 0xe7, + 0x6e, 0x9c, 0x0c, 0xc3, 0xd2, 0xb4, 0x05, 0x16, + 0x3c, 0x8e, 0x82, 0xd4, 0x16, 0x5e, 0x9c, 0x0c, + 0xc3, 0xd2, 0xb4, 0x05, 0x16, 0x3c, 0x8e, 0x82, + 0xd4, 0x16, 0x5e, 0x9c, 0x0c, 0xc3, 0xd2, 0xb4, + 0x05, 0x16, 0x3c, 0x8e, 0x82, 0xd4, 0x16, 0x50, + 0xff, 0xff, 0x24, 0xc0, 0xd4, 0x11, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x4d, 0xf8, 0xd5, + 0x9e, 0x7f, 0x02, 0x22, 0x08, 0xa3, 0xbd, 0x94, + 0x53, 0x16, 0x79, 0xfc, 0x08, 0x88, 0x22, 0x8e, + 0xf6, 0x51, 0x4c, 0x59, 0xe7, 0xf0, 0x22, 0x20, + 0x8a, 0x3b, 0xd9, 0x45, 0x31, 0x67, 0x9f, 0xc0, + 0x88, 0x82, 0x28, 0xef, 0x65, 0x14, 0xc4, 0x00, + 0xff, 0xff, 0x24, 0xc0, 0xe8, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x6d, 0xfb, 0x1d, + 0x77, 0xc1, 0x38, 0x81, 0xfb, 0xb1, 0xd7, 0x7c, + 0x13, 0x88, 0x1f, 0xbb, 0x1d, 0x77, 0xc1, 0x38, + 0x81, 0xfb, 0xb1, 0xd7, 0x7c, 0x13, 0x88, 0x1f, + 0xbb, 0x1d, 0x77, 0xc1, 0x38, 0x81, 0xfb, 0xb1, + 0xd7, 0x7c, 0x13, 0x88, 0x1f, 0x80, 0x00, 0x00, + 0xff, 0xff, 0x24, 0xc0, 0x9b, 0x00, 0x20, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x3d, 0x75, 0xf7, + 0x14, 0x0a, 0xc3, 0x29, 0x9f, 0x51, 0xbc, 0xfb, + 0xdc, 0x7b, 0x8a, 0x05, 0x61, 0x94, 0xcf, 0xa8, + 0xde, 0x7d, 0xee, 0x3d, 0xc5, 0x02, 0xb0, 0xca, + 0x67, 0xd4, 0x6f, 0x3e, 0xf7, 0x1e, 0xe2, 0x81, + 0x58, 0x65, 0x33, 0xea, 0x37, 0x9f, 0x7b, 0x80, + 0xff, 0xff, 0x24, 0xc0, 0x12, 0xe0, 0x00, 0x00, + 0x00, 0x01, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xeb, 0x50, 0xfb, 0xe7, + 0x78, 0x1f, 0xde, 0xa1, 0x62, 0x99, 0x11, 0x36, + 0x02, 0x00, 0x97, 0xd6, 0x69, 0x98, 0x1f, 0xde, + 0xa1, 0x62, 0x99, 0x11, 0x36, 0x02, 0x00, 0x97, + 0xd6, 0x69, 0x98, 0x1f, 0xde, 0xa1, 0x62, 0x99, + 0x11, 0x36, 0x02, 0x00, 0x97, 0xd6, 0x69, 0x90, + 0xff, 0xff, 0x24, 0xc0, 0x11, 0xba, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xdf, 0x95, 0x03, 0xa1, + 0x49, 0xc5, 0x45, 0xe7, 0x96, 0xe6, 0x1d, 0xdc, + 0x0d, 0x50, 0xa4, 0xe2, 0xa2, 0xf3, 0xcb, 0x73, + 0x0e, 0xee, 0x06, 0xa8, 0x52, 0x71, 0x51, 0x79, + 0xe5, 0xb9, 0x87, 0x77, 0x03, 0x54, 0x29, 0x38, + 0xa8, 0xbc, 0xf2, 0xdc, 0xc3, 0xbb, 0x81, 0xa0, + 0xff, 0xff, 0x24, 0xc0, 0x11, 0x21, 0xc3, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe7, 0xae, 0x35, 0x0d, + 0x42, 0x14, 0xc2, 0xf9, 0x4a, 0x13, 0x55, 0xa6, + 0x6e, 0xf4, 0x88, 0x53, 0x0b, 0xe5, 0x28, 0x4d, + 0x56, 0x99, 0xbb, 0xd2, 0x21, 0x4c, 0x2f, 0x94, + 0xa1, 0x35, 0x5a, 0x66, 0xef, 0x48, 0x85, 0x30, + 0xbe, 0x52, 0x84, 0xd5, 0x69, 0x9b, 0xbd, 0x20, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x08, 0x1f, 0x50, + 0x2e, 0x08, 0x1f, 0x54, 0x2e, 0x08, 0x1f, 0x58, + 0x2e, 0x08, 0x1f, 0x60, 0x2e, 0x08, 0x1f, 0x64, + 0x2e, 0x08, 0x1f, 0x68, 0x6e, 0x00, 0x01, 0x00, + 0x6e, 0x00, 0x01, 0x00, 0x6e, 0x00, 0x01, 0x08, + 0x6e, 0x00, 0x01, 0x0c, 0x6e, 0x00, 0x01, 0x04, + 0x6e, 0x00, 0x01, 0x10, 0x6e, 0x00, 0x01, 0x14, + 0x2e, 0x08, 0x60, 0x60, 0x00, 0x00, 0x00, 0x0d, + 0x00, 0x00, 0x00, 0x00, 0xb0, 0x25, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x0d, 0x00, + 0x2e, 0x08, 0x1f, 0xb4, 0x2e, 0x08, 0x1f, 0xb8, + 0x2e, 0x08, 0x1f, 0xbc, 0x2e, 0x08, 0x1f, 0xc0, + 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x04, + 0x70, 0x00, 0x00, 0x08, 0x70, 0x00, 0x00, 0x0c, + 0x70, 0x00, 0x00, 0x10, 0x70, 0x00, 0x00, 0x30, + 0x2e, 0x01, 0xc4, 0xa9, 0x2e, 0x01, 0xc4, 0x39, + 0x2e, 0x01, 0xc3, 0xb1, 0x2e, 0x01, 0xc3, 0xa9, + 0x2e, 0x01, 0xc4, 0xe1, 0x2e, 0x01, 0xc4, 0x71, + 0x2e, 0x01, 0xc5, 0x25, 0x2e, 0x01, 0xc5, 0x1d, + 0x00, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x09, 0x80, + 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0xff, 0x80, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, + 0xff, 0xe0, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x00, + 0xff, 0xf8, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, + 0xff, 0xfe, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xff, 0x80, 0x00, 0xff, 0xff, 0xc0, 0x00, + 0xff, 0xff, 0xe0, 0x00, 0xff, 0xff, 0xf0, 0x00, + 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xfc, 0x00, + 0xff, 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x00, + 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xc0, + 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xf0, + 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xfc, + 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xef, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, + 0x2e, 0x01, 0xc3, 0x90, 0x2e, 0x01, 0xc3, 0x90, +}; + diff -Nru a/drivers/media/dvb/ttpci/av7110_ipack.c b/drivers/media/dvb/ttpci/av7110_ipack.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/av7110_ipack.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,404 @@ +#include "dvb_filter.h" +#include "av7110_ipack.h" +#include /* for memcpy() */ + + +void av7110_ipack_reset(ipack *p) +{ + p->found = 0; + p->cid = 0; + p->plength = 0; + p->flag1 = 0; + p->flag2 = 0; + p->hlength = 0; + p->mpeg = 0; + p->check = 0; + p->which = 0; + p->done = 0; + p->count = 0; +} + + +void av7110_ipack_init(ipack *p, int size, + void (*func)(u8 *buf, int size, void *priv)) +{ + if ( !(p->buf = vmalloc(size*sizeof(u8))) ){ + printk ("Couldn't allocate memory for ipack\n"); + } + p->size = size; + p->func = func; + p->repack_subids = 0; + av7110_ipack_reset(p); +} + + +void av7110_ipack_free(ipack * p) +{ + if (p->buf) vfree(p->buf); +} + + +static +void send_ipack(ipack *p) +{ + int off; + AudioInfo ai; + int ac3_off = 0; + int streamid=0; + int nframes= 0; + int f=0; + + switch ( p->mpeg ){ + case 2: + if (p->count < 10) return; + p->buf[3] = p->cid; + + p->buf[4] = (u8)(((p->count-6) & 0xFF00) >> 8); + p->buf[5] = (u8)((p->count-6) & 0x00FF); + if (p->repack_subids && p->cid == PRIVATE_STREAM1){ + + off = 9+p->buf[8]; + streamid = p->buf[off]; + if ((streamid & 0xF8) == 0x80){ + ai.off = 0; + ac3_off = ((p->buf[off+2] << 8)| + p->buf[off+3]); + if (ac3_off < p->count) + f=dvb_filter_get_ac3info(p->buf+off+3+ac3_off, + p->count-ac3_off, &ai,0); + if ( !f ){ + nframes = (p->count-off-3-ac3_off)/ + ai.framesize + 1; + p->buf[off+2] = (ac3_off >> 8)& 0xFF; + p->buf[off+3] = (ac3_off)& 0xFF; + p->buf[off+1] = nframes; + + ac3_off += nframes * ai.framesize - + p->count; + } + } + } + p->func(p->buf, p->count, p->data); + + p->buf[6] = 0x80; + p->buf[7] = 0x00; + p->buf[8] = 0x00; + p->count = 9; + if (p->repack_subids && p->cid == PRIVATE_STREAM1 + && (streamid & 0xF8)==0x80 ){ + p->count += 4; + p->buf[9] = streamid; + p->buf[10] = (ac3_off >> 8)& 0xFF; + p->buf[11] = (ac3_off)& 0xFF; + p->buf[12] = 0; + } + + break; + case 1: + if (p->count < 8) return; + p->buf[3] = p->cid; + + p->buf[4] = (u8)(((p->count-6) & 0xFF00) >> 8); + p->buf[5] = (u8)((p->count-6) & 0x00FF); + p->func(p->buf, p->count, p->data); + + p->buf[6] = 0x0F; + p->count = 7; + break; + } +} + + +void av7110_ipack_flush(ipack *p) +{ + if (p->plength != MMAX_PLENGTH-6 || p->found<=6) + return; + p->plength = p->found-6; + p->found = 0; + send_ipack(p); + av7110_ipack_reset(p); +} + + +static +void write_ipack(ipack *p, const u8 *data, int count) +{ + u8 headr[3] = { 0x00, 0x00, 0x01} ; + + if (p->count < 6){ + memcpy(p->buf, headr, 3); + p->count = 6; + } + + if (p->count + count < p->size){ + memcpy(p->buf+p->count, data, count); + p->count += count; + } else { + int rest = p->size - p->count; + memcpy(p->buf+p->count, data, rest); + p->count += rest; + send_ipack(p); + if (count - rest > 0) + write_ipack(p, data+rest, count-rest); + } +} + + +int av7110_ipack_instant_repack (const u8 *buf, int count, ipack *p) +{ + int l; + int c=0; + + while (c < count && (p->mpeg == 0 || + (p->mpeg == 1 && p->found < 7) || + (p->mpeg == 2 && p->found < 9)) + && (p->found < 5 || !p->done)){ + switch ( p->found ){ + case 0: + case 1: + if (buf[c] == 0x00) p->found++; + else p->found = 0; + c++; + break; + case 2: + if (buf[c] == 0x01) p->found++; + else if (buf[c] == 0) { + p->found = 2; + } else p->found = 0; + c++; + break; + case 3: + p->cid = 0; + switch (buf[c]){ + case PROG_STREAM_MAP: + case PRIVATE_STREAM2: + case PROG_STREAM_DIR: + case ECM_STREAM : + case EMM_STREAM : + case PADDING_STREAM : + case DSM_CC_STREAM : + case ISO13522_STREAM: + p->done = 1; + case PRIVATE_STREAM1: + case VIDEO_STREAM_S ... VIDEO_STREAM_E: + case AUDIO_STREAM_S ... AUDIO_STREAM_E: + p->found++; + p->cid = buf[c]; + c++; + break; + default: + p->found = 0; + break; + } + break; + + case 4: + if (count-c > 1){ + p->plen[0] = buf[c]; + c++; + p->plen[1] = buf[c]; + c++; + p->found+=2; + p->plength=(p->plen[0]<<8)|p->plen[1]; + } else { + p->plen[0] = buf[c]; + p->found++; + return count; + } + break; + case 5: + p->plen[1] = buf[c]; + c++; + p->found++; + p->plength=(p->plen[0]<<8)|p->plen[1]; + break; + case 6: + if (!p->done){ + p->flag1 = buf[c]; + c++; + p->found++; + if ( (p->flag1 & 0xC0) == 0x80 ) p->mpeg = 2; + else { + p->hlength = 0; + p->which = 0; + p->mpeg = 1; + p->flag2 = 0; + } + } + break; + + case 7: + if ( !p->done && p->mpeg == 2) { + p->flag2 = buf[c]; + c++; + p->found++; + } + break; + + case 8: + if ( !p->done && p->mpeg == 2) { + p->hlength = buf[c]; + c++; + p->found++; + } + break; + + default: + + break; + } + } + + if (c == count) return count; + + if (!p->plength) p->plength = MMAX_PLENGTH-6; + + if ( p->done || ((p->mpeg == 2 && p->found >= 9) || + (p->mpeg == 1 && p->found >= 7)) ){ + switch (p->cid){ + + case AUDIO_STREAM_S ... AUDIO_STREAM_E: + case VIDEO_STREAM_S ... VIDEO_STREAM_E: + case PRIVATE_STREAM1: + + if (p->mpeg == 2 && p->found == 9) { + write_ipack(p, &p->flag1, 1); + write_ipack(p, &p->flag2, 1); + write_ipack(p, &p->hlength, 1); + } + + if (p->mpeg == 1 && p->found == 7) + write_ipack(p, &p->flag1, 1); + + if (p->mpeg == 2 && (p->flag2 & PTS_ONLY) && + p->found < 14) { + while (c < count && p->found < 14) { + p->pts[p->found-9] = buf[c]; + write_ipack(p, buf+c, 1); + c++; + p->found++; + } + if (c == count) return count; + } + + if (p->mpeg == 1 && p->which < 2000) { + + if (p->found == 7) { + p->check = p->flag1; + p->hlength = 1; + } + + while (!p->which && c < count && + p->check == 0xFF){ + p->check = buf[c]; + write_ipack(p, buf+c, 1); + c++; + p->found++; + p->hlength++; + } + + if ( c == count) return count; + + if ( (p->check & 0xC0) == 0x40 && !p->which){ + p->check = buf[c]; + write_ipack(p, buf+c, 1); + c++; + p->found++; + p->hlength++; + + p->which = 1; + if ( c == count) return count; + p->check = buf[c]; + write_ipack(p, buf+c, 1); + c++; + p->found++; + p->hlength++; + p->which = 2; + if ( c == count) return count; + } + + if (p->which == 1){ + p->check = buf[c]; + write_ipack(p, buf+c, 1); + c++; + p->found++; + p->hlength++; + p->which = 2; + if ( c == count) return count; + } + + if ( (p->check & 0x30) && p->check != 0xFF){ + p->flag2 = (p->check & 0xF0) << 2; + p->pts[0] = p->check; + p->which = 3; + } + + if ( c == count) return count; + if (p->which > 2){ + if ((p->flag2 & PTS_DTS_FLAGS) + == PTS_ONLY){ + while (c < count && + p->which < 7){ + p->pts[p->which-2] = + buf[c]; + write_ipack(p,buf+c,1); + c++; + p->found++; + p->which++; + p->hlength++; + } + if ( c == count) return count; + } else if ((p->flag2 & PTS_DTS_FLAGS) + == PTS_DTS){ + while (c < count && + p->which< 12){ + if (p->which< 7) + p->pts[p->which + -2] = + buf[c]; + write_ipack(p,buf+c,1); + c++; + p->found++; + p->which++; + p->hlength++; + } + if ( c == count) return count; + } + p->which = 2000; + } + + } + + while (c < count && p->found < p->plength+6){ + l = count -c; + if (l+p->found > p->plength+6) + l = p->plength+6-p->found; + write_ipack(p, buf+c, l); + p->found += l; + c += l; + } + + break; + } + + + if ( p->done ){ + if( p->found + count - c < p->plength+6){ + p->found += count-c; + c = count; + } else { + c += p->plength+6 - p->found; + p->found = p->plength+6; + } + } + + if (p->plength && p->found == p->plength+6) { + send_ipack(p); + av7110_ipack_reset(p); + if (c < count) + av7110_ipack_instant_repack(buf+c, count-c, p); + } + } + return count; +} + diff -Nru a/drivers/media/dvb/ttpci/av7110_ipack.h b/drivers/media/dvb/ttpci/av7110_ipack.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/av7110_ipack.h Mon Apr 7 13:20:06 2003 @@ -0,0 +1,13 @@ +#ifndef _AV7110_IPACK_H_ +#define _AV7110_IPACK_H_ + +extern void av7110_ipack_init(ipack *p, int size, + void (*func)(u8 *buf, int size, void *priv)); + +extern void av7110_ipack_reset(ipack *p); +extern int av7110_ipack_instant_repack(const u8 *buf, int count, ipack *p); +extern void av7110_ipack_free(ipack * p); +extern void av7110_ipack_flush(ipack *p); + +#endif + diff -Nru a/drivers/media/dvb/ttpci/av7110_ir.c b/drivers/media/dvb/ttpci/av7110_ir.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/av7110_ir.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,175 @@ +#include +#include +#include +#include +#include +#include + +#include "av7110.h" + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +#include "input_fake.h" +#endif + + +#define UP_TIMEOUT (HZ/2) + +static int av7110_ir_debug = 0; + +#define dprintk(x...) do { if (av7110_ir_debug) printk (x); } while (0) + + +static struct input_dev input_dev; + + +static +u16 key_map [256] = { + KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, + KEY_8, KEY_9, KEY_MHP, 0, KEY_POWER, KEY_MUTE, 0, KEY_INFO, + KEY_VOLUMEUP, KEY_VOLUMEDOWN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + KEY_CHANNELUP, KEY_CHANNELDOWN, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, KEY_TEXT, 0, 0, KEY_TV, 0, 0, 0, 0, 0, KEY_SETUP, 0, 0, + 0, 0, 0, KEY_SUBTITLE, 0, 0, KEY_LANGUAGE, 0, + KEY_RADIO, 0, 0, 0, 0, KEY_EXIT, 0, 0, + KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_OK, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_RED, KEY_GREEN, KEY_YELLOW, + KEY_BLUE, 0, 0, 0, 0, 0, 0, 0, KEY_MENU, KEY_LIST, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, KEY_UP, KEY_UP, KEY_DOWN, KEY_DOWN, + 0, 0, 0, 0, KEY_EPG, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KEY_VCR +}; + + +static +void av7110_emit_keyup (unsigned long data) +{ + if (!data || !test_bit (data, input_dev.key)) + return; + + input_event (&input_dev, EV_KEY, data, !!0); +} + + +static +struct timer_list keyup_timer = { function: av7110_emit_keyup }; + + +static +void av7110_emit_key (u32 ircom) +{ + int down = ircom & (0x80000000); + u16 keycode = key_map[ircom & 0xff]; + + dprintk ("#########%08x######### key %02x %s (keycode %i)\n", + ircom, ircom & 0xff, down ? "pressed" : "released", keycode); + + if (!keycode) { + printk ("%s: unknown key 0x%02x!!\n", + __FUNCTION__, ircom & 0xff); + return; + } + + if (timer_pending (&keyup_timer)) { + del_timer (&keyup_timer); + if (keyup_timer.data != keycode) + input_event (&input_dev, EV_KEY, keyup_timer.data, !!0); + } + + clear_bit (keycode, input_dev.key); + + input_event (&input_dev, EV_KEY, keycode, !0); + + keyup_timer.expires = jiffies + UP_TIMEOUT; + keyup_timer.data = keycode; + + add_timer (&keyup_timer); +} + +static +void input_register_keys (void) +{ + int i; + + memset (input_dev.keybit, 0, sizeof(input_dev.keybit)); + + for (i=0; i KEY_MAX) + key_map[i] = 0; + else if (key_map[i] > KEY_RESERVED) + set_bit (key_map[i], input_dev.keybit); + } +} + + +static +int av7110_ir_write_proc (struct file *file, const char *buffer, + unsigned long count, void *data) +{ + u32 ir_config; + + if (count < 4 + 256 * sizeof(u16)) + return -EINVAL; + + memcpy (&ir_config, buffer, 4); + memcpy (&key_map, buffer + 4, 256 * sizeof(u16)); + + av7110_setup_irc_config (NULL, ir_config); + + input_register_keys (); + + return count; +} + + +int __init av7110_ir_init (void) +{ + static struct proc_dir_entry *e; + + init_timer (&keyup_timer); + keyup_timer.data = 0; + + input_dev.name = "DVB on-card IR receiver"; + + /** + * enable keys + */ + set_bit (EV_KEY, input_dev.evbit); + + input_register_keys (); + + input_register_device(&input_dev); + + av7110_setup_irc_config (NULL, 0x0001); + av7110_register_irc_handler (av7110_emit_key); + + e = create_proc_entry ("av7110_ir", S_IFREG | S_IRUGO | S_IWUSR, NULL); + + if (e) { + e->write_proc = av7110_ir_write_proc; + e->size = 4 + 256 * sizeof(u16); + } + + return 0; +} + + +void __exit av7110_ir_exit (void) +{ + remove_proc_entry ("av7110_ir", NULL); + av7110_unregister_irc_handler (av7110_emit_key); + input_unregister_device(&input_dev); +} + +//MODULE_AUTHOR("Holger Waechtler "); +//MODULE_LICENSE("GPL"); + +MODULE_PARM(av7110_ir_debug,"i"); +MODULE_PARM_DESC(av7110_ir_debug, "enable AV7110 IR receiver debug messages"); + diff -Nru a/drivers/media/dvb/ttpci/budget-av.c b/drivers/media/dvb/ttpci/budget-av.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/budget-av.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,395 @@ +/* + * budget-av.c: driver for the SAA7146 based Budget DVB cards + * with analog video in + * + * Compiled from various sources by Michael Hunold + * + * Copyright (C) 2002 Ralph Metzler + * + * Copyright (C) 1999-2002 Ralph Metzler + * & Marcus Metzler for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * + * + * the project's page is at http://www.linuxtv.org/dvb/ + */ + +#include "budget.h" +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME budget_av +#endif + + +struct budget_av { + struct budget budget; + struct video_device vd; + int cur_input; +}; + +/**************************************************************************** + * INITIALIZATION + ****************************************************************************/ + +static inline +void ddelay(int i) +{ + current->state=TASK_INTERRUPTIBLE; + schedule_timeout((HZ*i)/100); +} + + +static +u8 i2c_readreg (struct dvb_i2c_bus *i2c, u8 id, u8 reg) +{ + u8 mm1[] = {0x00}; + u8 mm2[] = {0x00}; + struct i2c_msg msgs[2]; + + msgs[0].flags = 0; + msgs[1].flags = I2C_M_RD; + msgs[0].addr = msgs[1].addr=id/2; + mm1[0] = reg; + msgs[0].len = 1; msgs[1].len = 1; + msgs[0].buf = mm1; msgs[1].buf = mm2; + + i2c->xfer(i2c, msgs, 2); + + return mm2[0]; +} + + +static +int i2c_writereg (struct dvb_i2c_bus *i2c, u8 id, u8 reg, u8 val) +{ + u8 msg[2]={ reg, val }; + struct i2c_msg msgs; + + msgs.flags=0; + msgs.addr=id/2; + msgs.len=2; + msgs.buf=msg; + return i2c->xfer (i2c, &msgs, 1); +} + + +static const +u8 saa7113_tab[] = { + 0x01, 0x08, + 0x02, 0xc0, + 0x03, 0x33, + 0x04, 0x00, + 0x05, 0x00, + 0x06, 0xeb, + 0x07, 0xe0, + 0x08, 0x28, + 0x09, 0x00, + 0x0a, 0x80, + 0x0b, 0x47, + 0x0c, 0x40, + 0x0d, 0x00, + 0x0e, 0x01, + 0x0f, 0x44, + + 0x10, 0x08, + 0x11, 0x0c, + 0x12, 0x7b, + 0x13, 0x00, + 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, + + 0x57, 0xff, + 0x40, 0x82, 0x58, 0x00, 0x59, 0x54, 0x5a, 0x07, + 0x5b, 0x83, 0x5e, 0x00, + 0xff +}; + + +static +int saa7113_init (struct budget_av *budget_av) +{ + struct budget *budget = &budget_av->budget; + const u8 *data = saa7113_tab; + + if (i2c_writereg (budget->i2c_bus, 0x4a, 0x01, 0x08) != 1) { + DEB_D(("saa7113: not found on KNC card\n")); + return -ENODEV; + } + + INFO(("saa7113: detected and initializing\n")); + + while (*data != 0xff) { + i2c_writereg(budget->i2c_bus, 0x4a, *data, *(data+1)); + data += 2; + } + + DEB_D(("saa7113: status=%02x\n", + i2c_readreg(budget->i2c_bus, 0x4a, 0x1f))); + + return 0; +} + + +static +int saa7113_setinput (struct budget_av *budget_av, int input) +{ + struct budget *budget = &budget_av->budget; + + if (input == 1) { + i2c_writereg(budget->i2c_bus, 0x4a, 0x02, 0xc7); + i2c_writereg(budget->i2c_bus, 0x4a, 0x09, 0x80); + } else if (input == 0) { + i2c_writereg(budget->i2c_bus, 0x4a, 0x02, 0xc0); + i2c_writereg(budget->i2c_bus, 0x4a, 0x09, 0x00); + } else + return -EINVAL; + + budget_av->cur_input = input; + return 0; +} + + +static +int budget_av_detach (struct saa7146_dev *dev) +{ + struct budget_av *budget_av = (struct budget_av*) dev->ext_priv; + int err; + + DEB_EE(("dev: %p\n",dev)); + + saa7146_setgpio(dev, 0, SAA7146_GPIO_OUTLO); + + ddelay(20); + + saa7146_unregister_device (&budget_av->vd, dev); + + err = ttpci_budget_deinit (&budget_av->budget); + + kfree (budget_av); + + return err; +} + + +static +int budget_av_attach (struct saa7146_dev* dev, + struct saa7146_pci_extension_data *info) +{ + struct budget_av *budget_av; + struct budget_info *bi = info->ext_priv; + int err; + + DEB_EE(("dev: %p\n",dev)); + + if (bi->type != BUDGET_KNC1) { + return -ENODEV; + } + + if (!(budget_av = kmalloc(sizeof(struct budget_av), GFP_KERNEL))) + return -ENOMEM; + + memset(budget_av, 0, sizeof(struct budget_av)); + + if ((err = ttpci_budget_init(&budget_av->budget, dev, info))) { + kfree(budget_av); + return err; + } + + dev->ext_priv = budget_av; + + /* knc1 initialization */ + saa7146_write(dev, DD1_STREAM_B, 0x04000000); + saa7146_write(dev, DD1_INIT, 0x07000600); + saa7146_write(dev, MC2, MASK_09 | MASK_25 | MASK_10 | MASK_26); + + //test_knc_ci(av7110); + + saa7146_setgpio(dev, 0, SAA7146_GPIO_OUTHI); + ddelay(50); + + if ((err = saa7113_init (budget_av))) { + budget_av_detach(dev); + return err; + } + + saa7146_vv_init(dev); + if ((err = saa7146_register_device(&budget_av->vd, dev, "knc1", + VFL_TYPE_GRABBER))) + { + ERR(("cannot register capture v4l2 device.\n")); + budget_av_detach(dev); + return err; + } + + /* beware: this modifies dev->vv ... */ + saa7146_set_hps_source_and_sync(dev, SAA7146_HPS_SOURCE_PORT_A, + SAA7146_HPS_SYNC_PORT_A); + + saa7113_setinput (budget_av, 0); + + /* what is this? since we don't support open()/close() + notifications, we simply put this into the release handler... */ +// saa7146_setgpio(dev, 0, SAA7146_GPIO_OUTLO); + ddelay(20); + + /* fixme: find some sane values here... */ + saa7146_write(dev, PCI_BT_V1, 0x1c00101f); + + return 0; +} + + + +#define KNC1_INPUTS 2 +static struct v4l2_input knc1_inputs[KNC1_INPUTS] = { + { 0, "Composite", V4L2_INPUT_TYPE_TUNER, 1, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, + { 1, "S-Video", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, +}; + + +static +struct saa7146_extension_ioctls ioctls[] = { + { VIDIOC_ENUMINPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_G_INPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_S_INPUT, SAA7146_EXCLUSIVE }, + { 0, 0 } +}; + + +static +int av_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) +{ + struct budget_av *budget_av = (struct budget_av*) dev->ext_priv; +/* + struct saa7146_vv *vv = dev->vv_data; +*/ + switch(cmd) { + case VIDIOC_ENUMINPUT: + { + struct v4l2_input *i = arg; + + DEB_EE(("VIDIOC_ENUMINPUT %d.\n",i->index)); + if( i->index < 0 || i->index >= KNC1_INPUTS) { + return -EINVAL; + } + memcpy(i, &knc1_inputs[i->index], sizeof(struct v4l2_input)); + return 0; + } + case VIDIOC_G_INPUT: + { + int *input = (int *)arg; + + *input = budget_av->cur_input; + + DEB_EE(("VIDIOC_G_INPUT %d.\n",*input)); + return 0; + } + case VIDIOC_S_INPUT: + { + int input = *(int *)arg; + DEB_EE(("VIDIOC_S_INPUT %d.\n", input)); + return saa7113_setinput (budget_av, input); + } + default: +/* + DEB2(printk("does not handle this ioctl.\n")); +*/ + return -ENOIOCTLCMD; + } + return 0; +} + +static +struct saa7146_standard standard[] = { + { "PAL", V4L2_STD_PAL, SAA7146_PAL_VALUES }, + { "NTSC", V4L2_STD_NTSC, SAA7146_NTSC_VALUES }, +}; + + +static +struct saa7146_ext_vv vv_data = { + .inputs = 2, + .capabilities = 0, // perhaps later: V4L2_CAP_VBI_CAPTURE, but that need tweaking with the saa7113 + .flags = 0, + .stds = &standard[0], + .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), + .ioctls = &ioctls[0], + .ioctl = av_ioctl, +}; + + + +static struct saa7146_extension budget_extension; + + +MAKE_BUDGET_INFO(knc1, "KNC1 DVB-S", BUDGET_KNC1); + +static +struct pci_device_id pci_tbl [] = { + MAKE_EXTENSION_PCI(knc1, 0x1131, 0x4f56), + { + .vendor = 0, + } +}; + + + +static +struct saa7146_extension budget_extension = { + .name = "budget dvb /w video in\0", + .pci_tbl = pci_tbl, + + .module = THIS_MODULE, + .attach = budget_av_attach, + .detach = budget_av_detach, + + .ext_vv_data = &vv_data, + + .irq_mask = MASK_10, + .irq_func = ttpci_budget_irq10_handler, +}; + + +static +int __init budget_av_init(void) +{ + DEB_EE((".\n")); + + if (saa7146_register_extension(&budget_extension)) + return -ENODEV; + + return 0; +} + + +static +void __exit budget_av_exit(void) +{ + DEB_EE((".\n")); + saa7146_unregister_extension(&budget_extension); +} + +module_init(budget_av_init); +module_exit(budget_av_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Ralph Metzler, Marcus Metzler, Michael Hunold, others"); +MODULE_DESCRIPTION("driver for the SAA7146 based so-called " + "budget PCI DVB w/ analog input (e.g. the KNC cards)"); + diff -Nru a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/budget-ci.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,434 @@ +/* + * budget-ci.c: driver for the SAA7146 based Budget DVB cards + * + * Compiled from various sources by Michael Hunold + * + * msp430 IR support contributed by Jack Thomasson + * partially based on the Siemens DVB driver by Ralph+Marcus Metzler + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * + * + * the project's page is at http://www.linuxtv.org/dvb/ + */ + +#include "budget.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME budget +#endif + + +#include +#include +#include +#include +#include + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +#include "input_fake.h" +#endif + + + +struct budget_ci { + struct budget budget; + struct input_dev input_dev; + struct tasklet_struct msp430_irq_tasklet; +}; + + + +#ifndef BORROWED_FROM_AV7110_H_BUT_REALLY_BELONGS_IN_SAA7146_DEFS_H + +#define DEBINOSWAP 0x000e0000 +#define GPIO_IRQHI 0x10 +#define GPIO_INPUT 0x00 + +void gpio_set(struct saa7146_dev* saa, u8 pin, u8 data) +{ + u32 value = 0; + + /* sanity check */ + if(pin > 3) + return; + + /* read old register contents */ + value = saa7146_read(saa, GPIO_CTRL ); + + value &= ~(0xff << (8*pin)); + value |= (data << (8*pin)); + + saa7146_write(saa, GPIO_CTRL, value); +} + + + +static +int wait_for_debi_done(struct saa7146_dev *saa) +{ + int start = jiffies; + + /* wait for registers to be programmed */ + while (1) { + if (saa7146_read(saa, MC2) & 2) + break; + if (jiffies - start > HZ / 20) { + printk ("DVB (%s): timed out while waiting" + " for registers getting programmed\n", + __FUNCTION__); + return -ETIMEDOUT; + } + } + + /* wait for transfer to complete */ + start = jiffies; + while (1) { + if (!(saa7146_read(saa, PSR) & SPCI_DEBI_S)) + break; + saa7146_read(saa, MC2); + if (jiffies - start > HZ / 4) { + printk ("DVB (%s): timed out while waiting" + " for transfer completion\n", + __FUNCTION__); + return -ETIMEDOUT; + } + } + + return 0; +} + + +static +u32 debiread (struct saa7146_dev *saa, u32 config, int addr, int count) +{ + u32 result = 0; + + if (count > 4 || count <= 0) + return 0; + + if (wait_for_debi_done(saa) < 0) + return 0; + + saa7146_write (saa, DEBI_COMMAND, + (count << 17) | 0x10000 | (addr & 0xffff)); + + saa7146_write(saa, DEBI_CONFIG, config); + saa7146_write(saa, MC2, (2 << 16) | 2); + + wait_for_debi_done(saa); + + result = saa7146_read(saa, DEBI_AD); + result &= (0xffffffffUL >> ((4 - count) * 8)); + + return result; +} + + + +/* DEBI during interrupt */ +static inline +u32 irdebi(struct saa7146_dev *saa, u32 config, int addr, u32 val, int count) +{ + u32 res; + res = debiread(saa, config, addr, count); + return res; +} +#endif + + + + +/* from reading the following remotes: + Zenith Universal 7 / TV Mode 807 / VCR Mode 837 + Hauppauge (from NOVA-CI-s box product) + i've taken a "middle of the road" approach and note the differences +*/ +static + u16 key_map[64] = { + /* 0x0X */ + KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, + KEY_9, + KEY_ENTER, + 0, + KEY_POWER, /* RADIO on Hauppauge */ + KEY_MUTE, + 0, + KEY_A, /* TV on Hauppauge */ + /* 0x1X */ + KEY_VOLUMEUP, KEY_VOLUMEDOWN, + 0, 0, + KEY_B, + 0, 0, 0, 0, 0, 0, 0, + KEY_UP, KEY_DOWN, + KEY_OPTION, /* RESERVED on Hauppauge */ + 0, + /* 0x2X */ + KEY_CHANNELUP, KEY_CHANNELDOWN, + KEY_PREVIOUS, /* Prev. Ch on Zenith, SOURCE on Hauppauge */ + 0, 0, 0, + KEY_CYCLEWINDOWS, /* MINIMIZE on Hauppauge */ + 0, + KEY_ENTER, /* VCR mode on Zenith */ + KEY_PAUSE, + 0, + KEY_RIGHT, KEY_LEFT, + 0, + KEY_MENU, /* FULL SCREEN on Hauppauge */ + 0, + /* 0x3X */ + 0, + KEY_PREVIOUS, /* VCR mode on Zenith */ + KEY_REWIND, + 0, + KEY_FASTFORWARD, + KEY_PLAY, KEY_STOP, + KEY_RECORD, + KEY_TUNER, /* TV/VCR on Zenith */ + 0, + KEY_C, + 0, + KEY_EXIT, + 0, + KEY_TUNER, /* VCR mode on Zenith */ + 0, +}; + + +static +void msp430_ir_debounce (unsigned long data) +{ + struct input_dev *dev = (struct input_dev *) data; + + if (dev->rep[0] == 0 || dev->rep[0] == ~0) { + input_event(dev, EV_KEY, key_map[dev->repeat_key], !!0); + return; + } + + dev->rep[0] = 0; + dev->timer.expires = jiffies + HZ * 350 / 1000; + add_timer(&dev->timer); + input_event(dev, EV_KEY, key_map[dev->repeat_key], 2); /* REPEAT */ +} + + + +static +void msp430_ir_interrupt (unsigned long data) +{ + struct budget_ci *budget_ci = (struct budget_ci*) data; + struct saa7146_dev *saa = budget_ci->budget.dev; + struct input_dev *dev = &budget_ci->input_dev; + unsigned int code = irdebi(saa, DEBINOSWAP, 0x1234, 0, 2) >> 8; + + if (code & 0x40) { + code &= 0x3f; + + if (timer_pending(&dev->timer)) { + if (code == dev->repeat_key) { + ++dev->rep[0]; + return; + } + del_timer(&dev->timer); + input_event(dev, EV_KEY, key_map[dev->repeat_key], !!0); + } + + if (!key_map[code]) { + printk ("DVB (%s): no key for %02x!\n", + __FUNCTION__, code); + return; + } + + /* initialize debounce and repeat */ + dev->repeat_key = code; + /* Zenith remote _always_ sends 2 sequences */ + dev->rep[0] = ~0; + /* 350 milliseconds */ + dev->timer.expires = jiffies + HZ * 350 / 1000; + /* MAKE */ + input_event(dev, EV_KEY, key_map[code], !0); + add_timer(&dev->timer); + } +} + + +static +int msp430_ir_init (struct budget_ci *budget_ci) +{ + struct saa7146_dev *saa = budget_ci->budget.dev; + int i; + + memset(&budget_ci->input_dev, 0, sizeof(struct input_dev)); + + budget_ci->input_dev.name = saa->name; + + set_bit(EV_KEY, budget_ci->input_dev.evbit); + + for (i=0; iinput_dev.keybit); + + input_register_device(&budget_ci->input_dev); + + budget_ci->input_dev.timer.function = msp430_ir_debounce; + + saa7146_write(saa, IER, saa7146_read(saa, IER) | MASK_06); + + gpio_set(saa, 3, GPIO_IRQHI); + + return 0; +} + + +static +void msp430_ir_deinit (struct budget_ci *budget_ci) +{ + struct saa7146_dev *saa = budget_ci->budget.dev; + struct input_dev *dev = &budget_ci->input_dev; + + saa7146_write(saa, IER, saa7146_read(saa, IER) & ~MASK_06); + gpio_set(saa, 3, GPIO_INPUT); + gpio_set(saa, 2, GPIO_INPUT); + + if (del_timer(&dev->timer)) + input_event(dev, EV_KEY, key_map[dev->repeat_key], !!0); + + input_unregister_device(dev); +} + + +static +void budget_ci_irq (struct saa7146_dev *dev, u32 *isr) +{ + struct budget_ci *budget_ci = (struct budget_ci*) dev->ext_priv; + + DEB_EE(("dev: %p, budget_ci: %p\n", dev, budget_ci)); + + if (*isr & MASK_06) + tasklet_schedule (&budget_ci->msp430_irq_tasklet); + + if (*isr & MASK_10) + ttpci_budget_irq10_handler (dev, isr); +} + + + +static +int budget_ci_attach (struct saa7146_dev* dev, + struct saa7146_pci_extension_data *info) +{ + struct budget_ci *budget_ci; + int err; + + if (!(budget_ci = kmalloc (sizeof(struct budget_ci), GFP_KERNEL))) + return -ENOMEM; + + DEB_EE(("budget_ci: %p\n", budget_ci)); + + if ((err = ttpci_budget_init (&budget_ci->budget, dev, info))) { + kfree (budget_ci); + return err; + } + + dev->ext_priv = budget_ci; + + tasklet_init (&budget_ci->msp430_irq_tasklet, msp430_ir_interrupt, + (unsigned long) budget_ci); + + msp430_ir_init (budget_ci); + + return 0; +} + + + +static +int budget_ci_detach (struct saa7146_dev* dev) +{ + struct budget_ci *budget_ci = (struct budget_ci*) dev->ext_priv; + int err; + + err = ttpci_budget_deinit (&budget_ci->budget); + + tasklet_kill (&budget_ci->msp430_irq_tasklet); + + msp430_ir_deinit (budget_ci); + + kfree (budget_ci); + + return err; +} + + + +static struct saa7146_extension budget_extension; + +MAKE_BUDGET_INFO(ttbci, "TT-Budget/WinTV-NOVA-CI PCI", BUDGET_TT_HW_DISEQC); + +static +struct pci_device_id pci_tbl[] = { + MAKE_EXTENSION_PCI(ttbci, 0x13c2, 0x100c), + MAKE_EXTENSION_PCI(ttbci, 0x13c2, 0x100f), + { + .vendor = 0, + } +}; + + + +static +struct saa7146_extension budget_extension = { + .name = "budget_ci dvb\0", + .flags = 0, + .ext_vv_data = NULL, + + .module = THIS_MODULE, + .pci_tbl = &pci_tbl[0], + .attach = budget_ci_attach, + .detach = budget_ci_detach, + + .irq_mask = MASK_06 | MASK_10, + .irq_func = budget_ci_irq, +}; + + +static +int __init budget_ci_init(void) +{ + if (saa7146_register_extension(&budget_extension)) + return -ENODEV; + + return 0; +} + + +static +void __exit budget_ci_exit(void) +{ + DEB_EE((".\n")); + saa7146_unregister_extension(&budget_extension); +} + +module_init(budget_ci_init); +module_exit(budget_ci_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Michael Hunold, Jack Thomasson, others"); +MODULE_DESCRIPTION("driver for the SAA7146 based so-called " + "budget PCI DVB cards w/ CI-module produced by " + "Siemens, Technotrend, Hauppauge"); + diff -Nru a/drivers/media/dvb/ttpci/budget-core.c b/drivers/media/dvb/ttpci/budget-core.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/budget-core.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,339 @@ +#include "budget.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME budget +#endif + +int budget_debug = 0; + +/**************************************************************************** + * General helper functions + ****************************************************************************/ + +static inline void ddelay(int i) +{ + current->state=TASK_INTERRUPTIBLE; + schedule_timeout((HZ*i)/100); +} + +/**************************************************************************** + * TT budget / WinTV Nova + ****************************************************************************/ + +static +int stop_ts_capture(struct budget *budget) +{ + DEB_EE(("budget: %p\n",budget)); + + if (--budget->feeding) + return budget->feeding; + + saa7146_write(budget->dev, MC1, MASK_20); // DMA3 off + IER_DISABLE(budget->dev, MASK_10); + return 0; +} + + +static +int start_ts_capture (struct budget *budget) +{ + struct saa7146_dev *dev=budget->dev; + + DEB_EE(("budget: %p\n",budget)); + + if (budget->feeding) + return ++budget->feeding; + + saa7146_write(dev, MC1, MASK_20); // DMA3 off + + memset(budget->grabbing, 0x00, TS_HEIGHT*TS_WIDTH); + + saa7146_write(dev, PCI_BT_V1, 0x001c0000 | + (saa7146_read(dev, PCI_BT_V1) & ~0x001f0000)); + + budget->tsf=0xff; + budget->ttbp=0; + saa7146_write(dev, DD1_INIT, 0x02000600); + saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); + + saa7146_write(dev, BRS_CTRL, 0x60000000); + saa7146_write(dev, MC2, (MASK_08 | MASK_24)); + mdelay(10); + + saa7146_write(dev, BASE_ODD3, 0); + saa7146_write(dev, BASE_EVEN3, TS_WIDTH*TS_HEIGHT/2); + saa7146_write(dev, PROT_ADDR3, TS_WIDTH*TS_HEIGHT); + saa7146_write(dev, BASE_PAGE3, budget->pt.dma |ME1|0x90); + saa7146_write(dev, PITCH3, TS_WIDTH); + + saa7146_write(dev, NUM_LINE_BYTE3, ((TS_HEIGHT/2)<<16)|TS_WIDTH); + saa7146_write(dev, MC2, (MASK_04 | MASK_20)); + saa7146_write(dev, MC1, (MASK_04 | MASK_20)); // DMA3 on + + IER_ENABLE(budget->dev, MASK_10); // VPE + + return ++budget->feeding; +} + + +static +void vpeirq (unsigned long data) +{ + struct budget *budget = (struct budget*) data; + u8 *mem = (u8 *)(budget->grabbing); + u32 olddma = budget->ttbp; + u32 newdma = saa7146_read(budget->dev, PCI_VDP3); + + /* nearest lower position divisible by 188 */ + newdma -= newdma % 188; + + if (newdma >= TS_BUFLEN) + return; + + budget->ttbp = newdma; + + if(budget->feeding == 0 || newdma == olddma) + return; + + if (newdma > olddma) { /* no wraparound, dump olddma..newdma */ + if(mem[olddma] == 0x47) + dvb_dmx_swfilter_packets(&budget->demux, + mem+olddma, (newdma-olddma) / 188); + } else { /* wraparound, dump olddma..buflen and 0..newdma */ + if(mem[olddma] == 0x47) + dvb_dmx_swfilter_packets(&budget->demux, + mem+olddma, (TS_BUFLEN-olddma) / 188); + if(mem[0] == 0x47) + dvb_dmx_swfilter_packets(&budget->demux, + mem, newdma / 188); + } +} + + +/**************************************************************************** + * DVB API SECTION + ****************************************************************************/ + +static +int budget_start_feed(struct dvb_demux_feed *feed) +{ + struct dvb_demux *demux = feed->demux; + struct budget *budget = (struct budget*) demux->priv; + + DEB_EE(("budget: %p\n",budget)); + + if (!demux->dmx.frontend) + return -EINVAL; + + return start_ts_capture (budget); +} + +static +int budget_stop_feed(struct dvb_demux_feed *feed) +{ + struct dvb_demux *demux = feed->demux; + struct budget *budget = (struct budget *) demux->priv; + + DEB_EE(("budget: %p\n",budget)); + + return stop_ts_capture (budget); +} + + +static +int budget_register(struct budget *budget) +{ + int ret; + dmx_frontend_t *dvbfront=&budget->hw_frontend; + struct dvb_demux *dvbdemux=&budget->demux; + + DEB_EE(("budget: %p\n",budget)); + + memcpy(budget->demux_id, "demux0_0", 9); + budget->demux_id[5] = budget->dvb_adapter->num + '0'; + dvbdemux->priv = (void *) budget; + + dvbdemux->filternum = 256; + dvbdemux->feednum = 256; + dvbdemux->start_feed = budget_start_feed; + dvbdemux->stop_feed = budget_stop_feed; + dvbdemux->write_to_decoder = NULL; + + dvbdemux->dmx.vendor = "CIM"; + dvbdemux->dmx.model = "sw"; + dvbdemux->dmx.id = budget->demux_id; + dvbdemux->dmx.capabilities = (DMX_TS_FILTERING | DMX_SECTION_FILTERING | + DMX_MEMORY_BASED_FILTERING); + + dvb_dmx_init(&budget->demux); + + dvbfront->id = "hw_frontend"; + dvbfront->vendor = "VLSI"; + dvbfront->model = "DVB Frontend"; + dvbfront->source = DMX_FRONTEND_0; + + budget->dmxdev.filternum = 256; + budget->dmxdev.demux = &dvbdemux->dmx; + budget->dmxdev.capabilities = 0; + + dvb_dmxdev_init(&budget->dmxdev, budget->dvb_adapter); + + ret=dvbdemux->dmx.add_frontend (&dvbdemux->dmx, + &budget->hw_frontend); + if (ret < 0) + return ret; + + budget->mem_frontend.id = "mem_frontend"; + budget->mem_frontend.vendor = "memory"; + budget->mem_frontend.model = "sw"; + budget->mem_frontend.source = DMX_MEMORY_FE; + ret=dvbdemux->dmx.add_frontend (&dvbdemux->dmx, + &budget->mem_frontend); + if (ret<0) + return ret; + + ret=dvbdemux->dmx.connect_frontend (&dvbdemux->dmx, + &budget->hw_frontend); + if (ret < 0) + return ret; + + budget->dvb_net.card_num = budget->dvb_adapter->num; + dvb_net_init(budget->dvb_adapter, &budget->dvb_net, &dvbdemux->dmx); + + return 0; +} + + +static +void budget_unregister(struct budget *budget) +{ + struct dvb_demux *dvbdemux=&budget->demux; + + DEB_EE(("budget: %p\n",budget)); + + dvb_net_release(&budget->dvb_net); + + dvbdemux->dmx.close(&dvbdemux->dmx); + dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &budget->hw_frontend); + dvbdemux->dmx.remove_frontend(&dvbdemux->dmx, &budget->mem_frontend); + + dvb_dmxdev_release(&budget->dmxdev); + dvb_dmx_release(&budget->demux); +} + + +static +int master_xfer (struct dvb_i2c_bus *i2c, const struct i2c_msg msgs[], int num) +{ + struct saa7146_dev *dev = i2c->data; + return saa7146_i2c_transfer(dev, msgs, num, 6); +} + + +int ttpci_budget_init (struct budget *budget, + struct saa7146_dev* dev, + struct saa7146_pci_extension_data *info) +{ + int length = TS_WIDTH*TS_HEIGHT; + int ret = 0; + struct budget_info *bi = info->ext_priv; + + memset(budget, 0, sizeof(struct budget)); + + DEB_EE(("dev: %p, budget: %p\n", dev, budget)); + + budget->card = bi; + budget->dev = (struct saa7146_dev *) dev; + + dvb_register_adapter(&budget->dvb_adapter, budget->card->name); + + /* set dd1 stream a & b */ + saa7146_write(dev, DD1_STREAM_B, 0x00000000); + saa7146_write(dev, DD1_INIT, 0x02000000); + saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); + + /* the Siemens DVB needs this if you want to have the i2c chips + get recognized before the main driver is loaded */ + saa7146_write(dev, GPIO_CTRL, 0x500000); + + saa7146_i2c_adapter_prepare(dev, NULL, SAA7146_I2C_BUS_BIT_RATE_3200); + + budget->i2c_bus = dvb_register_i2c_bus (master_xfer, dev, + budget->dvb_adapter, 0); + + if (!budget->i2c_bus) { + dvb_unregister_adapter (budget->dvb_adapter); + return -ENOMEM; + } + + if( NULL == (budget->grabbing = saa7146_vmalloc_build_pgtable(dev->pci,length,&budget->pt))) { + ret = -ENOMEM; + goto err; + } + + saa7146_write(dev, PCI_BT_V1, 0x001c0000); + /* upload all */ + saa7146_write(dev, GPIO_CTRL, 0x000000); + + tasklet_init (&budget->vpe_tasklet, vpeirq, (unsigned long) budget); + + saa7146_setgpio(dev, 2, SAA7146_GPIO_OUTHI); /* frontend power on */ + + if (budget_register(budget) == 0) + return 0; + +err: + if (budget->grabbing) + vfree(budget->grabbing); + + dvb_unregister_i2c_bus (master_xfer,budget->i2c_bus->adapter, + budget->i2c_bus->id); + + dvb_unregister_adapter (budget->dvb_adapter); + + return ret; +} + + +int ttpci_budget_deinit (struct budget *budget) +{ + struct saa7146_dev *dev = budget->dev; + + DEB_EE(("budget: %p\n", budget)); + + budget_unregister (budget); + + dvb_unregister_i2c_bus (master_xfer, budget->i2c_bus->adapter, + budget->i2c_bus->id); + + dvb_unregister_adapter (budget->dvb_adapter); + + tasklet_kill (&budget->vpe_tasklet); + + saa7146_pgtable_free (dev->pci, &budget->pt); + + vfree (budget->grabbing); + kfree (budget); + + return 0; +} + +void ttpci_budget_irq10_handler (struct saa7146_dev* dev, u32 *isr) +{ + struct budget *budget = (struct budget*)dev->ext_priv; + + DEB_EE(("dev: %p, budget: %p\n",dev,budget)); + + if (*isr & MASK_10) + tasklet_schedule (&budget->vpe_tasklet); +} + + +EXPORT_SYMBOL_GPL(ttpci_budget_init); +EXPORT_SYMBOL_GPL(ttpci_budget_deinit); +EXPORT_SYMBOL_GPL(ttpci_budget_irq10_handler); +EXPORT_SYMBOL_GPL(budget_debug); + +MODULE_PARM(budget_debug,"i"); +MODULE_LICENSE("GPL"); + + diff -Nru a/drivers/media/dvb/ttpci/budget-patch.c b/drivers/media/dvb/ttpci/budget-patch.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/budget-patch.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,335 @@ +/* + * budget-patch.c: driver for Budget Patch, + * hardware modification of DVB-S cards enabling full TS + * + * Written by Emard + * + * Original idea by Roberto Deza + * + * Special thanks to Holger Waechtler, Michael Hunold, Marian Durkovic + * and Metzlerbros + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * + * + * the project's page is at http://www.linuxtv.org/dvb/ + */ + +#include "budget.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME budget_patch +#endif + +#define budget_patch budget + +static struct saa7146_extension budget_extension; + +MAKE_BUDGET_INFO(fs_1_3,"Siemens/Technotrend/Hauppauge PCI rev1.3+Budget_Patch", BUDGET_PATCH); + +static +struct pci_device_id pci_tbl[] = { + MAKE_EXTENSION_PCI(fs_1_3,0x13c2, 0x0000), + { + .vendor = 0, + } +}; + + +#define COMMAND (DPRAM_BASE + 0x0FC) +#define DPRAM_BASE 0x4000 +#define DEBINOSWAP 0x000e0000 + + +typedef enum { + AudioDAC, + CabADAC, + ON22K, + OFF22K, + MainSwitch, + ADSwitch, + SendDiSEqC, + SetRegister +} AUDCOM; + + +typedef enum { + COMTYPE_NOCOM, + COMTYPE_PIDFILTER, + COMTYPE_MPEGDECODER, + COMTYPE_OSD, + COMTYPE_BMP, + COMTYPE_ENCODER, + COMTYPE_AUDIODAC, + COMTYPE_REQUEST, + COMTYPE_SYSTEM, + COMTYPE_REC_PLAY, + COMTYPE_COMMON_IF, + COMTYPE_PID_FILTER, + COMTYPE_PES, + COMTYPE_TS, + COMTYPE_VIDEO, + COMTYPE_AUDIO, + COMTYPE_CI_LL, +} COMTYPE; + + +static +int wdebi(struct budget_patch *budget, u32 config, int addr, u32 val, int count) +{ + struct saa7146_dev *dev=budget->dev; + + DEB_EE(("budget: %p\n", budget)); + + if (count <= 0 || count > 4) + return -1; + + saa7146_write(dev, DEBI_CONFIG, config); + + saa7146_write(dev, DEBI_AD, val ); + saa7146_write(dev, DEBI_COMMAND, (count << 17) | (addr & 0xffff)); + saa7146_write(dev, MC2, (2 << 16) | 2); + mdelay(5); + + return 0; +} + + +static +int SOutCommand(struct budget_patch *budget, u16* buf, int length) +{ + int i; + + DEB_EE(("budget: %p\n", budget)); + + for (i = 2; i < length; i++) + wdebi(budget, DEBINOSWAP, COMMAND + 2*i, (u32) buf[i], 2); + + if (length) + wdebi(budget, DEBINOSWAP, COMMAND + 2, (u32) buf[1], 2); + else + wdebi(budget, DEBINOSWAP, COMMAND + 2, 0, 2); + + wdebi(budget, DEBINOSWAP, COMMAND, (u32) buf[0], 2); + return 0; +} + + +static +void av7110_set22k(struct budget_patch *budget, int state) +{ + u16 buf[2] = {( COMTYPE_AUDIODAC << 8) | (state ? ON22K : OFF22K), 0}; + + DEB_EE(("budget: %p\n", budget)); + SOutCommand(budget, buf, 2); +} + + +static int +av7110_send_diseqc_msg(struct budget_patch *budget, int len, u8 *msg, int burst) +{ + int i; + u16 buf[18] = { ((COMTYPE_AUDIODAC << 8) | SendDiSEqC), + 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + + DEB_EE(("budget: %p\n", budget)); + + if (len>10) + len=10; + + buf[1] = len+2; + buf[2] = len; + + if (burst != -1) + buf[3]=burst ? 0x01 : 0x00; + else + buf[3]=0xffff; + + for (i=0; ibefore_after_data; + + DEB_EE(("budget: %p\n", budget)); + + switch (cmd) { + case FE_SET_TONE: + switch ((fe_sec_tone_mode_t) arg) { + case SEC_TONE_ON: + av7110_set22k (budget, 1); + break; + case SEC_TONE_OFF: + av7110_set22k (budget, 0); + break; + default: + return -EINVAL; + } + break; + + case FE_DISEQC_SEND_MASTER_CMD: + { + struct dvb_diseqc_master_cmd *cmd = arg; + + av7110_send_diseqc_msg (budget, cmd->msg_len, cmd->msg, 0); + break; + } + + case FE_DISEQC_SEND_BURST: + av7110_send_diseqc_msg (budget, 0, NULL, (int) arg); + break; + + default: + return -EOPNOTSUPP; + } + + return 0; +} + + +static +int budget_patch_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) +{ + struct budget_patch *budget; + int err; + int cnt; + + if (!(budget = kmalloc (sizeof(struct budget_patch), GFP_KERNEL))) + return -ENOMEM; + + DEB_EE(("budget: %p\n",budget)); + + if ((err = ttpci_budget_init (budget, dev, info))) { + kfree (budget); + return err; + } + +/* +** This code will setup the SAA7146_RPS1 to generate a square +** wave on GPIO3, changing when a field (TS_HEIGHT/2 "lines" of +** TS_WIDTH packets) has been acquired on SAA7146_D1B video port; +** then, this GPIO3 output which is connected to the D1B_VSYNC +** input, will trigger the acquisition of the alternate field +** and so on. +** Currently, the TT_budget / WinTV_Nova cards have two ICs +** (74HCT4040, LVC74) for the generation of this VSYNC signal, +** which seems that can be done perfectly without this :-)). +*/ + cnt = 0; // Setup RPS1 "program" (p35) + // Wait reset Source Line Counter Threshold (p36) + dev->rps1[cnt++]=cpu_to_le32(CMD_PAUSE | RPS_INV | EVT_HS); + // Wait Source Line Counter Threshold (p36) + dev->rps1[cnt++]=cpu_to_le32(CMD_PAUSE | EVT_HS); + // Set GPIO3=1 (p42) + dev->rps1[cnt++]=cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2)); + dev->rps1[cnt++]=cpu_to_le32(GPIO3_MSK); + dev->rps1[cnt++]=cpu_to_le32(SAA7146_GPIO_OUTHI<<24); + // Wait reset Source Line Counter Threshold (p36) + dev->rps1[cnt++]=cpu_to_le32(CMD_PAUSE | RPS_INV | EVT_HS); + // Wait Source Line Counter Threshold + dev->rps1[cnt++]=cpu_to_le32(CMD_PAUSE | EVT_HS); + // Set GPIO3=0 (p42) + dev->rps1[cnt++]=cpu_to_le32(CMD_WR_REG_MASK | (GPIO_CTRL>>2)); + dev->rps1[cnt++]=cpu_to_le32(GPIO3_MSK); + dev->rps1[cnt++]=cpu_to_le32(SAA7146_GPIO_OUTLO<<24); + // Jump to begin of RPS program (p37) + dev->rps1[cnt++]=cpu_to_le32(CMD_JUMP); + dev->rps1[cnt++]=cpu_to_le32(virt_to_bus(&dev->rps1[0])); + + // Fix VSYNC level + saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); + // Set RPS1 Address register to point to RPS code (r108 p42) + saa7146_write(dev, RPS_ADDR1, virt_to_bus(&dev->rps1[0])); + // Set Source Line Counter Threshold, using BRS (rCC p43) + saa7146_write(dev, RPS_THRESH1, ((TS_HEIGHT/2) | MASK_12)); + // Enable RPS1 (rFC p33) + saa7146_write(dev, MC1, (MASK_13 | MASK_29)); + + dvb_add_frontend_ioctls (budget->dvb_adapter, + budget_patch_diseqc_ioctl, NULL, budget); + + dev->ext_priv = budget; + + return 0; +} + + +static +int budget_patch_detach (struct saa7146_dev* dev) +{ + struct budget_patch *budget = (struct budget_patch*) dev->ext_priv; + int err; + + dvb_remove_frontend_ioctls (budget->dvb_adapter, + budget_patch_diseqc_ioctl, NULL); + + err = ttpci_budget_deinit (budget); + + kfree (budget); + + return err; +} + + +static +int __init budget_patch_init(void) +{ + if (saa7146_register_extension(&budget_extension)) + return -ENODEV; + + return 0; +} + + +static +void __exit budget_patch_exit(void) +{ + DEB_EE((".\n")); + saa7146_unregister_extension(&budget_extension); +} + + +static +struct saa7146_extension budget_extension = { + .name = "budget_patch dvb\0", + .flags = 0, + .ext_vv_data = NULL, + + .module = THIS_MODULE, + .pci_tbl = pci_tbl, + .attach = budget_patch_attach, + .detach = budget_patch_detach, + + .irq_mask = MASK_10, + .irq_func = ttpci_budget_irq10_handler, +}; + + +module_init(budget_patch_init); +module_exit(budget_patch_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Emard, Roberto Deza, Holger Waechtler, Michael Hunold, others"); +MODULE_DESCRIPTION("Driver for full TS modified DVB-S SAA7146+AV7110 " + "based so-called Budget Patch cards"); + diff -Nru a/drivers/media/dvb/ttpci/budget.c b/drivers/media/dvb/ttpci/budget.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/budget.c Mon Apr 7 13:20:06 2003 @@ -0,0 +1,267 @@ +/* + * budget.c: driver for the SAA7146 based Budget DVB cards + * + * Compiled from various sources by Michael Hunold + * + * Copyright (C) 2002 Ralph Metzler + * + * Copyright (C) 1999-2002 Ralph Metzler + * & Marcus Metzler for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * Or, point your browser to http://www.gnu.org/copyleft/gpl.html + * + * + * the project's page is at http://www.linuxtv.org/dvb/ + */ + +#include "budget.h" +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME budget +#endif + + + +static inline void ddelay(int i) +{ + current->state=TASK_INTERRUPTIBLE; + schedule_timeout((HZ*i)/100); +} + + +static +void Set22K (struct budget *budget, int state) +{ + struct saa7146_dev *dev=budget->dev; + DEB_EE(("budget: %p\n",budget)); + saa7146_setgpio(dev, 3, (state ? SAA7146_GPIO_OUTHI : SAA7146_GPIO_OUTLO)); +} + + +/* Diseqc functions only for TT Budget card */ +/* taken from the Skyvision DVB driver by + Ralph Metzler */ + +static +void DiseqcSendBit (struct budget *budget, int data) +{ + struct saa7146_dev *dev=budget->dev; + DEB_EE(("budget: %p\n",budget)); + + saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTHI); + udelay(data ? 500 : 1000); + saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); + udelay(data ? 1000 : 500); +} + + +static +void DiseqcSendByte (struct budget *budget, int data) +{ + int i, par=1, d; + + DEB_EE(("budget: %p\n",budget)); + + for (i=7; i>=0; i--) { + d = (data>>i)&1; + par ^= d; + DiseqcSendBit(budget, d); + } + + DiseqcSendBit(budget, par); +} + + +static +int SendDiSEqCMsg (struct budget *budget, int len, u8 *msg, int burst) +{ + struct saa7146_dev *dev=budget->dev; + int i; + + DEB_EE(("budget: %p\n",budget)); + + saa7146_setgpio(dev, 3, SAA7146_GPIO_OUTLO); + mdelay(16); + + for (i=0; ibefore_after_data; + + DEB_EE(("budget: %p\n",budget)); + + switch (cmd) { + case FE_SET_TONE: + switch ((fe_sec_tone_mode_t) arg) { + case SEC_TONE_ON: + Set22K (budget, 1); + break; + case SEC_TONE_OFF: + Set22K (budget, 0); + break; + default: + return -EINVAL; + }; + break; + + case FE_DISEQC_SEND_MASTER_CMD: + { + struct dvb_diseqc_master_cmd *cmd = arg; + + SendDiSEqCMsg (budget, cmd->msg_len, cmd->msg, 0); + break; + } + + case FE_DISEQC_SEND_BURST: + SendDiSEqCMsg (budget, 0, NULL, (int) arg); + break; + + default: + return -EOPNOTSUPP; + }; + + return 0; +} + + +static +int budget_attach (struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) +{ + struct budget *budget; + int err; + + if (!(budget = kmalloc (sizeof(struct budget), GFP_KERNEL))) + return -ENOMEM; + + DEB_EE(("budget: %p\n",budget)); + + if ((err = ttpci_budget_init (budget, dev, info))) { + kfree (budget); + return err; + } + + dvb_add_frontend_ioctls (budget->dvb_adapter, + budget_diseqc_ioctl, NULL, budget); + + dev->ext_priv = budget; + + return 0; +} + + +static +int budget_detach (struct saa7146_dev* dev) +{ + struct budget *budget = (struct budget*) dev->ext_priv; + int err; + + dvb_remove_frontend_ioctls (budget->dvb_adapter, + budget_diseqc_ioctl, NULL); + + err = ttpci_budget_deinit (budget); + + kfree (budget); + + return err; +} + + + +static struct saa7146_extension budget_extension; + +MAKE_BUDGET_INFO(ttbs, "TT-Budget/WinTV-NOVA-S PCI", BUDGET_TT); +MAKE_BUDGET_INFO(ttbc, "TT-Budget/WinTV-NOVA-C PCI", BUDGET_TT); +MAKE_BUDGET_INFO(ttbt, "TT-Budget/WinTV-NOVA-T PCI", BUDGET_TT); +MAKE_BUDGET_INFO(satel, "SATELCO Multimedia PCI", BUDGET_TT_HW_DISEQC); +/* Uncomment for Budget Patch */ +/*MAKE_BUDGET_INFO(fs_1_3,"Siemens/Technotrend/Hauppauge PCI rev1.3+Budget_Patch", BUDGET_PATCH);*/ + +static +struct pci_device_id pci_tbl[] = { + /* Uncomment for Budget Patch */ + /*MAKE_EXTENSION_PCI(fs_1_3,0x13c2, 0x0000),*/ + MAKE_EXTENSION_PCI(ttbs, 0x13c2, 0x1003), + MAKE_EXTENSION_PCI(ttbc, 0x13c2, 0x1004), + MAKE_EXTENSION_PCI(ttbt, 0x13c2, 0x1005), + MAKE_EXTENSION_PCI(satel, 0x13c2, 0x1013), + { + .vendor = 0, + } +}; + + + +static +struct saa7146_extension budget_extension = { + .name = "budget dvb\0", + .flags = 0, + .ext_vv_data = NULL, + + .module = THIS_MODULE, + .pci_tbl = pci_tbl, + .attach = budget_attach, + .detach = budget_detach, + + .irq_mask = MASK_10, + .irq_func = ttpci_budget_irq10_handler, +}; + + +static +int __init budget_init(void) +{ + if (saa7146_register_extension(&budget_extension)) + return -ENODEV; + + return 0; +} + + +static +void __exit budget_exit(void) +{ + DEB_EE((".\n")); + saa7146_unregister_extension(&budget_extension); +} + +module_init(budget_init); +module_exit(budget_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Ralph Metzler, Marcus Metzler, Michael Hunold, others"); +MODULE_DESCRIPTION("driver for the SAA7146 based so-called " + "budget PCI DVB cards by Siemens, Technotrend, Hauppauge"); + diff -Nru a/drivers/media/dvb/ttpci/budget.h b/drivers/media/dvb/ttpci/budget.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/dvb/ttpci/budget.h Mon Apr 7 13:20:06 2003 @@ -0,0 +1,86 @@ +#ifndef __BUDGET_DVB__ +#define __BUDGET_DVB__ + +#include "dvb_i2c.h" +#include "dvb_frontend.h" +#include "dvbdev.h" +#include "demux.h" +#include "dvb_demux.h" +#include "dmxdev.h" +#include "dvb_filter.h" +#include "dvb_net.h" + +#include + +extern int budget_debug; + +struct budget_info { + char *name; + int type; +}; + +/* place to store all the necessary device information */ +struct budget { + + /* devices */ + struct dvb_device dvb_dev; + dvb_net_t dvb_net; + + struct saa7146_dev *dev; + + struct dvb_i2c_bus *i2c_bus; + struct budget_info *card; + + unsigned char *grabbing; + struct saa7146_pgtable pt; + + struct tasklet_struct fidb_tasklet; + struct tasklet_struct vpe_tasklet; + + dmxdev_t dmxdev; + struct dvb_demux demux; + char demux_id[16]; + + dmx_frontend_t hw_frontend; + dmx_frontend_t mem_frontend; + + int fe_synced; + struct semaphore pid_mutex; + + u8 tsf; + u32 ttbp; + int feeding; + + struct dvb_adapter *dvb_adapter; + void *priv; +}; + + + +#define MAKE_BUDGET_INFO(x_var,x_name,x_type) \ +static struct budget_info x_var ## _info = { \ + .name=x_name, \ + .type=x_type }; \ +static struct saa7146_pci_extension_data x_var = { \ + .ext_priv = &x_var ## _info, \ + .ext = &budget_extension }; + +#define TS_WIDTH (4*188) +#define TS_HEIGHT (1024/4) +#define TS_BUFLEN (TS_WIDTH*TS_HEIGHT) +#define TS_MAX_PACKETS (TS_BUFLEN/TS_SIZE) + +#define BUDGET_TT 0 +#define BUDGET_TT_HW_DISEQC 1 +#define BUDGET_KNC1 2 +#define BUDGET_PATCH 3 + + +extern int ttpci_budget_init (struct budget *budget, + struct saa7146_dev* dev, + struct saa7146_pci_extension_data *info); +extern int ttpci_budget_deinit (struct budget *budget); +extern void ttpci_budget_irq10_handler (struct saa7146_dev* dev, u32 *isr); + +#endif + diff -Nru a/drivers/media/radio/radio-cadet.c b/drivers/media/radio/radio-cadet.c --- a/drivers/media/radio/radio-cadet.c Sun Mar 23 15:41:29 2003 +++ b/drivers/media/radio/radio-cadet.c Fri Apr 4 09:34:37 2003 @@ -516,7 +516,7 @@ {.id = ""} }; -MODULE_DEVICE_TABLE(pnp, id_table); +MODULE_DEVICE_TABLE(pnp, cadet_pnp_devices); static int cadet_pnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id) { diff -Nru a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig --- a/drivers/media/video/Kconfig Sun Feb 9 17:29:49 2003 +++ b/drivers/media/video/Kconfig Mon Apr 7 13:17:33 2003 @@ -230,5 +230,32 @@ whenever you want). If you want to compile it as a module, say M here and read . +config VIDEO_MXB + tristate "Siemens-Nixdorf 'Multimedia eXtension Board'" + depends on VIDEO_DEV && PCI && I2C + ---help--- + This is a video4linux driver for the 'Multimedia eXtension Board' + TV card by Siemens-Nixdorf. + + This driver is available as a module called mxb ( = code + which can be inserted in and removed from the running kernel + whenever you want). If you want to compile it as a module, say M + here and read . + +config VIDEO_DPC + tristate "Philips-Semiconductors 'dpc7146 demonstration board'" + depends on VIDEO_DEV && PCI && I2C + ---help--- + This is a video4linux driver for the 'dpc7146 demonstration + board' by Philips-Semiconductors. It's the reference design + for SAA7146 bases boards, so if you have some unsupported + saa7146 based, analog video card, chances are good that it + will work with this skeleton driver. + + This driver is available as a module called dpc7146 ( = code + which can be inserted in and removed from the running kernel + whenever you want). If you want to compile it as a module, say M + here and read . + endmenu diff -Nru a/drivers/media/video/Makefile b/drivers/media/video/Makefile --- a/drivers/media/video/Makefile Mon Feb 3 14:19:37 2003 +++ b/drivers/media/video/Makefile Mon Apr 7 13:40:16 2003 @@ -9,7 +9,7 @@ obj-$(CONFIG_VIDEO_DEV) += videodev.o v4l2-common.o v4l1-compat.o obj-$(CONFIG_VIDEO_BT848) += bttv.o msp3400.o tvaudio.o \ - tda7432.o tda9875.o tuner.o video-buf.o tda9887.o + tda7432.o tda9875.o obj-$(CONFIG_SOUND_TVMIXER) += tvmixer.o obj-$(CONFIG_VIDEO_ZR36120) += zoran.o @@ -29,5 +29,11 @@ obj-$(CONFIG_VIDEO_CPIA_PP) += cpia_pp.o obj-$(CONFIG_VIDEO_CPIA_USB) += cpia_usb.o obj-$(CONFIG_VIDEO_MEYE) += meye.o -obj-$(CONFIG_VIDEO_SAA7134) += saa7134/ tuner.o tda9887.o video-buf.o +obj-$(CONFIG_VIDEO_SAA7134) += saa7134/ +obj-$(CONFIG_VIDEO_MXB) += saa7111.o tuner.o tda9840.o tea6415c.o tea6420.o mxb.o +obj-$(CONFIG_VIDEO_DPC) += saa7111.o dpc7146.o obj-$(CONFIG_TUNER_3036) += tuner-3036.o + +obj-$(CONFIG_VIDEO_TUNER) += tuner.o tda9887.o +obj-$(CONFIG_VIDEO_BUF) += video-buf.o + diff -Nru a/drivers/media/video/dpc7146.c b/drivers/media/video/dpc7146.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/dpc7146.c Mon Apr 7 13:17:33 2003 @@ -0,0 +1,391 @@ +/* + dpc7146.c - v4l2 driver for the dpc7146 demonstration board + + Copyright (C) 2000-2003 Michael Hunold + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#define DEBUG_VARIABLE debug + +#include +#include /* for saa7111a */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME dpc7146 +#endif + +#define I2C_SAA7111A 0x24 + +/* All unused bytes are reserverd. */ +#define SAA711X_CHIP_VERSION 0x00 +#define SAA711X_ANALOG_INPUT_CONTROL_1 0x02 +#define SAA711X_ANALOG_INPUT_CONTROL_2 0x03 +#define SAA711X_ANALOG_INPUT_CONTROL_3 0x04 +#define SAA711X_ANALOG_INPUT_CONTROL_4 0x05 +#define SAA711X_HORIZONTAL_SYNC_START 0x06 +#define SAA711X_HORIZONTAL_SYNC_STOP 0x07 +#define SAA711X_SYNC_CONTROL 0x08 +#define SAA711X_LUMINANCE_CONTROL 0x09 +#define SAA711X_LUMINANCE_BRIGHTNESS 0x0A +#define SAA711X_LUMINANCE_CONTRAST 0x0B +#define SAA711X_CHROMA_SATURATION 0x0C +#define SAA711X_CHROMA_HUE_CONTROL 0x0D +#define SAA711X_CHROMA_CONTROL 0x0E +#define SAA711X_FORMAT_DELAY_CONTROL 0x10 +#define SAA711X_OUTPUT_CONTROL_1 0x11 +#define SAA711X_OUTPUT_CONTROL_2 0x12 +#define SAA711X_OUTPUT_CONTROL_3 0x13 +#define SAA711X_V_GATE_1_START 0x15 +#define SAA711X_V_GATE_1_STOP 0x16 +#define SAA711X_V_GATE_1_MSB 0x17 +#define SAA711X_TEXT_SLICER_STATUS 0x1A +#define SAA711X_DECODED_BYTES_OF_TS_1 0x1B +#define SAA711X_DECODED_BYTES_OF_TS_2 0x1C +#define SAA711X_STATUS_BYTE 0x1F + +#define DPC_BOARD_CAN_DO_VBI(dev) (dev->revision != 0) + +static int debug = 0; +MODULE_PARM(debug,"i"); +MODULE_PARM_DESC(debug, "debug verbosity"); + +/* global variables */ +int dpc_num = 0; + +#define DPC_INPUTS 2 +static struct v4l2_input dpc_inputs[DPC_INPUTS] = { + { 0, "Port A", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, + { 1, "Port B", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, +}; + +#define DPC_AUDIOS 0 + +static struct saa7146_extension_ioctls ioctls[] = { + { VIDIOC_G_INPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_S_INPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_ENUMINPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_S_STD, SAA7146_AFTER }, + { 0, 0 } +}; + +struct dpc +{ + struct video_device video_dev; + struct video_device vbi_dev; + + struct i2c_adapter i2c_adapter; + struct i2c_client *saa7111a; + + int cur_input; /* current input */ +}; + +/* fixme: add vbi stuff here */ +static int dpc_probe(struct saa7146_dev* dev) +{ + struct dpc* dpc = 0; + int i = 0; + + dpc = (struct dpc*)kmalloc(sizeof(struct dpc), GFP_KERNEL); + if( NULL == dpc ) { + printk("dpc_v4l2.o: dpc_probe: not enough kernel memory.\n"); + return -ENOMEM; + } + memset(dpc, 0x0, sizeof(struct dpc)); + + /* FIXME: enable i2c-port pins, video-port-pins + video port pins should be enabled here ?! */ + saa7146_write(dev, MC1, (MASK_08 | MASK_24 | MASK_10 | MASK_26)); + + saa7146_i2c_adapter_prepare(dev, &dpc->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480); + if(i2c_add_adapter(&dpc->i2c_adapter) < 0) { + DEB_S(("cannot register i2c-device. skipping.\n")); + kfree(dpc); + return -EFAULT; + } + + /* loop through all i2c-devices on the bus and look who is there */ + for(i = 0; i < I2C_CLIENT_MAX; i++) { + if( NULL == dpc->i2c_adapter.clients[i] ) { + continue; + } + if( I2C_SAA7111A == dpc->i2c_adapter.clients[i]->addr ) + dpc->saa7111a = dpc->i2c_adapter.clients[i]; + } + + /* check if all devices are present */ + if( 0 == dpc->saa7111a ) { + DEB_D(("dpc_v4l2.o: dpc_attach failed for this device.\n")); + kfree(dpc); + return -ENODEV; + } + + /* all devices are present, probe was successful */ + DEB_D(("dpc_v4l2.o: dpc_probe succeeded for this device.\n")); + + /* we store the pointer in our private data field */ + (struct dpc*)dev->ext_priv = dpc; + + return 0; +} + +/* bring hardware to a sane state. this has to be done, just in case someone + wants to capture from this device before it has been properly initialized. + the capture engine would badly fail, because no valid signal arrives on the + saa7146, thus leading to timeouts and stuff. */ +static int dpc_init_done(struct saa7146_dev* dev) +{ + struct dpc* dpc = (struct dpc*)dev->ext_priv; + + DEB_D(("dpc_v4l2.o: dpc_init_done called.\n")); + + /* initialize the helper ics to useful values */ + i2c_smbus_write_byte_data(dpc->saa7111a, 0x00, 0x11); + + i2c_smbus_write_byte_data(dpc->saa7111a, 0x02, 0xc0); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x03, 0x30); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x04, 0x00); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x05, 0x00); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x06, 0xde); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x07, 0xad); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x08, 0xa8); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x09, 0x00); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x0a, 0x80); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x0b, 0x47); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x0c, 0x40); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x0d, 0x00); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x0e, 0x03); + + i2c_smbus_write_byte_data(dpc->saa7111a, 0x10, 0xd0); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x11, 0x1c); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x12, 0xc1); + i2c_smbus_write_byte_data(dpc->saa7111a, 0x13, 0x30); + + i2c_smbus_write_byte_data(dpc->saa7111a, 0x1f, 0x81); + + return 0; +} + +/* this function only gets called when the probing was successful */ +static int dpc_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) +{ + struct dpc* dpc = (struct dpc*)dev->ext_priv; + + DEB_D(("dpc_v4l2.o: dpc_attach called.\n")); + + /* checking for i2c-devices can be omitted here, because we + already did this in "dpc_vl42_probe" */ + + saa7146_vv_init(dev); + if( 0 != saa7146_register_device(&dpc->video_dev, dev, "dpc", VFL_TYPE_GRABBER)) { + ERR(("cannot register capture v4l2 device. skipping.\n")); + return -1; + } + + /* initialization stuff (vbi) (only for revision > 0 and for extensions which want it)*/ + if( 0 != DPC_BOARD_CAN_DO_VBI(dev)) { + if( 0 != saa7146_register_device(&dpc->vbi_dev, dev, "dpc", VFL_TYPE_VBI)) { + ERR(("cannot register vbi v4l2 device. skipping.\n")); + } + } + + i2c_use_client(dpc->saa7111a); + + printk("dpc: found 'dpc7146 demonstration board'-%d.\n",dpc_num); + dpc_num++; + + /* the rest */ + dpc->cur_input = 0; + dpc_init_done(dev); + + return 0; +} + +static int dpc_detach(struct saa7146_dev* dev) +{ + struct dpc* dpc = (struct dpc*)dev->ext_priv; + + DEB_EE(("dev:%p\n",dev)); + + i2c_release_client(dpc->saa7111a); + + saa7146_unregister_device(&dpc->video_dev,dev); + if( 0 != DPC_BOARD_CAN_DO_VBI(dev)) { + saa7146_unregister_device(&dpc->vbi_dev,dev); + } + saa7146_vv_release(dev); + + dpc_num--; + + i2c_del_adapter(&dpc->i2c_adapter); + kfree(dpc); + return 0; +} + +#ifdef axa +int dpc_vbi_bypass(struct saa7146_dev* dev) +{ + struct dpc* dpc = (struct dpc*)dev->ext_priv; + + int i = 1; + + /* switch bypass in saa7111a */ + if ( 0 != dpc->saa7111a->driver->command(dpc->saa7111a,SAA711X_VBI_BYPASS, &i)) { + printk("dpc_v4l2.o: VBI_BYPASS: could not address saa7111a.\n"); + return -1; + } + + return 0; +} +#endif + +static int dpc_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) +{ + struct dpc* dpc = (struct dpc*)dev->ext_priv; +/* + struct saa7146_vv *vv = dev->vv_data; +*/ + switch(cmd) + { + case VIDIOC_ENUMINPUT: + { + struct v4l2_input *i = arg; + DEB_EE(("VIDIOC_ENUMINPUT %d.\n",i->index)); + + if( i->index < 0 || i->index >= DPC_INPUTS) { + return -EINVAL; + } + + memcpy(i, &dpc_inputs[i->index], sizeof(struct v4l2_input)); + + DEB_D(("dpc_v4l2.o: v4l2_ioctl: VIDIOC_ENUMINPUT %d.\n",i->index)); + return 0; + } + case VIDIOC_G_INPUT: + { + int *input = (int *)arg; + *input = dpc->cur_input; + + DEB_D(("dpc_v4l2.o: VIDIOC_G_INPUT: %d\n",*input)); + return 0; + } + case VIDIOC_S_INPUT: + { + int input = *(int *)arg; + + if (input < 0 || input >= DPC_INPUTS) { + return -EINVAL; + } + + dpc->cur_input = input; + + /* fixme: switch input here, switch audio, too! */ +// saa7146_set_hps_source_and_sync(dev, input_port_selection[input].hps_source, input_port_selection[input].hps_sync); + printk("dpc_v4l2.o: VIDIOC_S_INPUT: fixme switch input.\n"); + + return 0; + } + default: +/* + DEB_D(("dpc_v4l2.o: v4l2_ioctl does not handle this ioctl.\n")); +*/ + return -ENOIOCTLCMD; + } + return 0; +} + +static int std_callback(struct saa7146_dev* dev, struct saa7146_standard *std) +{ + return 0; +} + +static struct saa7146_standard standard[] = { + { "PAL-BG", V4L2_STD_PAL_BG, SAA7146_PAL_VALUES }, + { "PAL-I", V4L2_STD_PAL_I, SAA7146_PAL_VALUES }, + { "NTSC", V4L2_STD_NTSC, SAA7146_NTSC_VALUES }, + { "SECAM", V4L2_STD_SECAM, SAA7146_SECAM_VALUES }, +}; + +static +struct saa7146_extension extension; + +static +struct saa7146_pci_extension_data dpc = { + .ext_priv = "Multimedia eXtension Board", + .ext = &extension, +}; + +static +struct pci_device_id pci_tbl[] = { + { + .vendor = PCI_VENDOR_ID_PHILIPS, + .device = PCI_DEVICE_ID_PHILIPS_SAA7146, + .subvendor = 0x0000, + .subdevice = 0x0000, + .driver_data = (unsigned long)&dpc, + }, { + .vendor = 0, + } +}; + +static +struct saa7146_ext_vv vv_data = { + .inputs = DPC_INPUTS, + .capabilities = V4L2_CAP_VBI_CAPTURE, + .stds = &standard[0], + .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), + .std_callback = &std_callback, + .ioctls = &ioctls[0], + .ioctl = dpc_ioctl, +}; + +static +struct saa7146_extension extension = { + .name = "dpc7146 demonstration board", + .flags = SAA7146_USE_I2C_IRQ, + + .pci_tbl = &pci_tbl[0], + .module = THIS_MODULE, + .ext_vv_data = &vv_data, + + .probe = dpc_probe, + .attach = dpc_attach, + .detach = dpc_detach, + + .irq_mask = 0, + .irq_func = NULL, +}; + +int __init dpc_init_module(void) +{ + if( 0 != saa7146_register_extension(&extension)) { + DEB_S(("failed to register extension.\n")); + return -ENODEV; + } + + return 0; +} + +void __exit dpc_cleanup_module(void) +{ + saa7146_unregister_extension(&extension); +} + +module_init(dpc_init_module); +module_exit(dpc_cleanup_module); + +MODULE_DESCRIPTION("video4linux-2 driver for the 'dpc7146 demonstration board'"); +MODULE_AUTHOR("Michael Hunold "); +MODULE_LICENSE("GPL"); diff -Nru a/drivers/media/video/mxb.c b/drivers/media/video/mxb.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/mxb.c Mon Apr 7 13:17:33 2003 @@ -0,0 +1,1075 @@ +/* + mxb.c - v4l2 driver for the Multimedia eXtension Board + + Copyright (C) 1998-2003 Michael Hunold + + Visit http://www.mihu.de/linux/saa7146/mxb/ + for further details about this card. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#define DEBUG_VARIABLE debug + +#include +#include /* for saa7111a */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #define KBUILD_MODNAME mxb +#endif + +#include "mxb.h" +#include "tea6415c.h" +#include "tea6420.h" +#include "tda9840.h" +#include + +#define I2C_SAA7111A 0x24 + +/* All unused bytes are reserverd. */ +#define SAA711X_CHIP_VERSION 0x00 +#define SAA711X_ANALOG_INPUT_CONTROL_1 0x02 +#define SAA711X_ANALOG_INPUT_CONTROL_2 0x03 +#define SAA711X_ANALOG_INPUT_CONTROL_3 0x04 +#define SAA711X_ANALOG_INPUT_CONTROL_4 0x05 +#define SAA711X_HORIZONTAL_SYNC_START 0x06 +#define SAA711X_HORIZONTAL_SYNC_STOP 0x07 +#define SAA711X_SYNC_CONTROL 0x08 +#define SAA711X_LUMINANCE_CONTROL 0x09 +#define SAA711X_LUMINANCE_BRIGHTNESS 0x0A +#define SAA711X_LUMINANCE_CONTRAST 0x0B +#define SAA711X_CHROMA_SATURATION 0x0C +#define SAA711X_CHROMA_HUE_CONTROL 0x0D +#define SAA711X_CHROMA_CONTROL 0x0E +#define SAA711X_FORMAT_DELAY_CONTROL 0x10 +#define SAA711X_OUTPUT_CONTROL_1 0x11 +#define SAA711X_OUTPUT_CONTROL_2 0x12 +#define SAA711X_OUTPUT_CONTROL_3 0x13 +#define SAA711X_V_GATE_1_START 0x15 +#define SAA711X_V_GATE_1_STOP 0x16 +#define SAA711X_V_GATE_1_MSB 0x17 +#define SAA711X_TEXT_SLICER_STATUS 0x1A +#define SAA711X_DECODED_BYTES_OF_TS_1 0x1B +#define SAA711X_DECODED_BYTES_OF_TS_2 0x1C +#define SAA711X_STATUS_BYTE 0x1F + +#define MXB_BOARD_CAN_DO_VBI(dev) (dev->revision != 0) + +/* global variable */ +static int mxb_num = 0; + +/* initial frequence the tuner will be tuned to. + in verden (lower saxony, germany) 4148 is a + channel called "phoenix" */ +static int freq = 4148; +MODULE_PARM(freq,"i"); +MODULE_PARM_DESC(freq, "initial frequency the tuner will be tuned to while setup"); + +static int debug = 0; +MODULE_PARM(debug,"i"); +MODULE_PARM_DESC(debug, "debug verbosity"); + +#define MXB_INPUTS 4 +enum { TUNER, AUX1, AUX3, AUX3_YC }; + +static struct v4l2_input mxb_inputs[MXB_INPUTS] = { + { TUNER, "Tuner", V4L2_INPUT_TYPE_TUNER, 1, 1, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, + { AUX1, "AUX1", V4L2_INPUT_TYPE_CAMERA, 2, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, + { AUX3, "AUX3 Composite", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, + { AUX3_YC, "AUX3 S-Video", V4L2_INPUT_TYPE_CAMERA, 4, 0, V4L2_STD_PAL_BG|V4L2_STD_NTSC_M, 0 }, +}; + +/* this array holds the information, which port of the saa7146 each + input actually uses. the mxb uses port 0 for every input */ +static struct { + int hps_source; + int hps_sync; +} input_port_selection[MXB_INPUTS] = { + { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, + { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, + { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, + { SAA7146_HPS_SOURCE_PORT_A, SAA7146_HPS_SYNC_PORT_A }, +}; + +/* this array holds the information of the audio source (mxb_audios), + which has to be switched corresponding to the video source (mxb_channels) */ +static int video_audio_connect[MXB_AUDIOS] = + { 0, 1, 2, 3, 3 }; + +/* these are the necessary input-output-pins for bringing one audio source +(see above) to the CD-output */ +static struct tea6420_multiplex TEA6420_cd[MXB_AUDIOS+1][2] = + { + {{1,1,0},{1,1,0}}, /* Tuner */ + {{5,1,0},{6,1,0}}, /* AUX 1 */ + {{4,1,0},{6,1,0}}, /* AUX 2 */ + {{3,1,0},{6,1,0}}, /* AUX 3 */ + {{1,1,0},{3,1,0}}, /* Radio */ + {{1,1,0},{2,1,0}}, /* CD-Rom */ + {{6,1,0},{6,1,0}} /* Mute */ + }; + +/* these are the necessary input-output-pins for bringing one audio source +(see above) to the line-output */ +static struct tea6420_multiplex TEA6420_line[MXB_AUDIOS+1][2] = + { + {{2,3,0},{1,2,0}}, + {{5,3,0},{6,2,0}}, + {{4,3,0},{6,2,0}}, + {{3,3,0},{6,2,0}}, + {{2,3,0},{3,2,0}}, + {{2,3,0},{2,2,0}}, + {{6,3,0},{6,2,0}} /* Mute */ + }; + +#define MAXCONTROLS 1 +static struct v4l2_queryctrl mxb_controls[] = { + { V4L2_CID_AUDIO_MUTE, V4L2_CTRL_TYPE_BOOLEAN, "Mute", 0, 1, 1, 0, 0 }, +}; + +static struct saa7146_extension_ioctls ioctls[] = { + { VIDIOC_ENUMINPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_G_INPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_S_INPUT, SAA7146_EXCLUSIVE }, + { VIDIOC_QUERYCTRL, SAA7146_BEFORE }, + { VIDIOC_G_CTRL, SAA7146_BEFORE }, + { VIDIOC_S_CTRL, SAA7146_BEFORE }, + { VIDIOC_G_TUNER, SAA7146_EXCLUSIVE }, + { VIDIOC_S_TUNER, SAA7146_EXCLUSIVE }, + { VIDIOC_G_FREQUENCY, SAA7146_EXCLUSIVE }, + { VIDIOC_S_FREQUENCY, SAA7146_EXCLUSIVE }, + { VIDIOC_G_AUDIO, SAA7146_EXCLUSIVE }, + { VIDIOC_S_AUDIO, SAA7146_EXCLUSIVE }, + { MXB_S_AUDIO_CD, SAA7146_EXCLUSIVE }, /* custom control */ + { MXB_S_AUDIO_LINE, SAA7146_EXCLUSIVE }, /* custom control */ + { 0, 0 } +}; + +struct mxb +{ + struct video_device video_dev; + struct video_device vbi_dev; + + struct i2c_adapter i2c_adapter; + + struct i2c_client* saa7111a; + struct i2c_client* tda9840; + struct i2c_client* tea6415c; + struct i2c_client* tuner; + struct i2c_client* tea6420_1; + struct i2c_client* tea6420_2; + + int cur_mode; /* current audio mode (mono, stereo, ...) */ + int cur_input; /* current input */ + int cur_freq; /* current frequency the tuner is tuned to */ + int cur_mute; /* current mute status */ +}; + +static int mxb_vbi_bypass(struct saa7146_dev* dev) +{ + struct mxb* mxb = (struct mxb*)dev->ext_priv; + s32 byte = 0x0; + int result = 0; + + DEB_EE(("dev:%p\n",dev)); + + /* switch bypass in saa7111a, this should be done in the + saa7111a driver of course... */ + if ( -1 == (result = i2c_smbus_read_byte_data(mxb->saa7111a, SAA711X_OUTPUT_CONTROL_3))) { + DEB_D(("could not read from saa7111a.\n")); + return -EFAULT; + } + byte = result; + byte &= 0xf0; + byte |= 0x0a; + + if ( 0 != (result = i2c_smbus_write_byte_data(mxb->saa7111a, SAA711X_OUTPUT_CONTROL_3, byte))) { + DEB_D(("could not write to saa7111a.\n")); + return -EFAULT; + } + return 0; +} + +static int mxb_probe(struct saa7146_dev* dev) +{ + struct mxb* mxb = 0; + int i = 0; + + request_module("tuner"); + request_module("tea6420"); + request_module("tea6415c"); + request_module("tda9840"); + request_module("saa7111"); + + mxb = (struct mxb*)kmalloc(sizeof(struct mxb), GFP_KERNEL); + if( NULL == mxb ) { + DEB_D(("not enough kernel memory.\n")); + return -ENOMEM; + } + memset(mxb, 0x0, sizeof(struct mxb)); + + /* FIXME: enable i2c-port pins, video-port-pins + video port pins should be enabled here ?! */ + saa7146_write(dev, MC1, (MASK_08 | MASK_24 | MASK_10 | MASK_26)); + + saa7146_i2c_adapter_prepare(dev, &mxb->i2c_adapter, SAA7146_I2C_BUS_BIT_RATE_480); + if(i2c_add_adapter(&mxb->i2c_adapter) < 0) { + DEB_S(("cannot register i2c-device. skipping.\n")); + kfree(mxb); + return -EFAULT; + } + + /* loop through all i2c-devices on the bus and look who is there */ + for(i = 0; i < I2C_CLIENT_MAX; i++) { + if( NULL == mxb->i2c_adapter.clients[i] ) { + continue; + } + if( I2C_TEA6420_1 == mxb->i2c_adapter.clients[i]->addr ) + mxb->tea6420_1 = mxb->i2c_adapter.clients[i]; + if( I2C_TEA6420_2 == mxb->i2c_adapter.clients[i]->addr ) + mxb->tea6420_2 = mxb->i2c_adapter.clients[i]; + if( I2C_TEA6415C_2 == mxb->i2c_adapter.clients[i]->addr ) + mxb->tea6415c = mxb->i2c_adapter.clients[i]; + if( I2C_TDA9840 == mxb->i2c_adapter.clients[i]->addr ) + mxb->tda9840 = mxb->i2c_adapter.clients[i]; + if( I2C_SAA7111A == mxb->i2c_adapter.clients[i]->addr ) + mxb->saa7111a = mxb->i2c_adapter.clients[i]; + if( 0x60 == mxb->i2c_adapter.clients[i]->addr ) + mxb->tuner = mxb->i2c_adapter.clients[i]; + } + + /* check if all devices are present */ + if( 0 == mxb->tea6420_1 || 0 == mxb->tea6420_2 || 0 == mxb->tea6415c + || 0 == mxb->tda9840 || 0 == mxb->saa7111a || 0 == mxb->tuner ) { + + printk("mxb: did not find all i2c devices. are you sure you\n"); + printk("mxb: insmod'ed tea6420, tea6415c, saa7111, tea6415c and tuner?\n"); + i2c_del_adapter(&mxb->i2c_adapter); + kfree(mxb); + return -ENODEV; + } + + /* all devices are present, probe was successful */ + + /* we store the pointer in our private data field */ + (struct mxb*)dev->ext_priv = mxb; + + return 0; +} + +/* bring hardware to a sane state. this has to be done, just in case someone + wants to capture from this device before it has been properly initialized. + the capture engine would badly fail, because no valid signal arrives on the + saa7146, thus leading to timeouts and stuff. */ +static int mxb_init_done(struct saa7146_dev* dev) +{ + struct mxb* mxb = (struct mxb*)dev->ext_priv; + + struct { + int length; + char data[9]; + } saa7740_init[] = { + { 3, { 0x80, 0x00, 0x00 } },{ 3, { 0x80, 0x89, 0x00 } }, + { 3, { 0x80, 0xb0, 0x0a } },{ 3, { 0x00, 0x00, 0x00 } }, + { 3, { 0x49, 0x00, 0x00 } },{ 3, { 0x4a, 0x00, 0x00 } }, + { 3, { 0x4b, 0x00, 0x00 } },{ 3, { 0x4c, 0x00, 0x00 } }, + { 3, { 0x4d, 0x00, 0x00 } },{ 3, { 0x4e, 0x00, 0x00 } }, + { 3, { 0x4f, 0x00, 0x00 } },{ 3, { 0x50, 0x00, 0x00 } }, + { 3, { 0x51, 0x00, 0x00 } },{ 3, { 0x52, 0x00, 0x00 } }, + { 3, { 0x53, 0x00, 0x00 } },{ 3, { 0x54, 0x00, 0x00 } }, + { 3, { 0x55, 0x00, 0x00 } },{ 3, { 0x56, 0x00, 0x00 } }, + { 3, { 0x57, 0x00, 0x00 } },{ 3, { 0x58, 0x00, 0x00 } }, + { 3, { 0x59, 0x00, 0x00 } },{ 3, { 0x5a, 0x00, 0x00 } }, + { 3, { 0x5b, 0x00, 0x00 } },{ 3, { 0x5c, 0x00, 0x00 } }, + { 3, { 0x5d, 0x00, 0x00 } },{ 3, { 0x5e, 0x00, 0x00 } }, + { 3, { 0x5f, 0x00, 0x00 } },{ 3, { 0x60, 0x00, 0x00 } }, + { 3, { 0x61, 0x00, 0x00 } },{ 3, { 0x62, 0x00, 0x00 } }, + { 3, { 0x63, 0x00, 0x00 } },{ 3, { 0x64, 0x00, 0x00 } }, + { 3, { 0x65, 0x00, 0x00 } },{ 3, { 0x66, 0x00, 0x00 } }, + { 3, { 0x67, 0x00, 0x00 } },{ 3, { 0x68, 0x00, 0x00 } }, + { 3, { 0x69, 0x00, 0x00 } },{ 3, { 0x6a, 0x00, 0x00 } }, + { 3, { 0x6b, 0x00, 0x00 } },{ 3, { 0x6c, 0x00, 0x00 } }, + { 3, { 0x6d, 0x00, 0x00 } },{ 3, { 0x6e, 0x00, 0x00 } }, + { 3, { 0x6f, 0x00, 0x00 } },{ 3, { 0x70, 0x00, 0x00 } }, + { 3, { 0x71, 0x00, 0x00 } },{ 3, { 0x72, 0x00, 0x00 } }, + { 3, { 0x73, 0x00, 0x00 } },{ 3, { 0x74, 0x00, 0x00 } }, + { 3, { 0x75, 0x00, 0x00 } },{ 3, { 0x76, 0x00, 0x00 } }, + { 3, { 0x77, 0x00, 0x00 } },{ 3, { 0x41, 0x00, 0x42 } }, + { 3, { 0x42, 0x10, 0x42 } },{ 3, { 0x43, 0x20, 0x42 } }, + { 3, { 0x44, 0x30, 0x42 } },{ 3, { 0x45, 0x00, 0x01 } }, + { 3, { 0x46, 0x00, 0x01 } },{ 3, { 0x47, 0x00, 0x01 } }, + { 3, { 0x48, 0x00, 0x01 } }, + { 9, { 0x01, 0x03, 0xc5, 0x5c, 0x7a, 0x85, 0x01, 0x00, 0x54 } }, + { 9, { 0x21, 0x03, 0xc5, 0x5c, 0x7a, 0x85, 0x01, 0x00, 0x54 } }, + { 9, { 0x09, 0x0b, 0xb4, 0x6b, 0x74, 0x85, 0x95, 0x00, 0x34 } }, + { 9, { 0x29, 0x0b, 0xb4, 0x6b, 0x74, 0x85, 0x95, 0x00, 0x34 } }, + { 9, { 0x11, 0x17, 0x43, 0x62, 0x68, 0x89, 0xd1, 0xff, 0xb0 } }, + { 9, { 0x31, 0x17, 0x43, 0x62, 0x68, 0x89, 0xd1, 0xff, 0xb0 } }, + { 9, { 0x19, 0x20, 0x62, 0x51, 0x5a, 0x95, 0x19, 0x01, 0x50 } }, + { 9, { 0x39, 0x20, 0x62, 0x51, 0x5a, 0x95, 0x19, 0x01, 0x50 } }, + { 9, { 0x05, 0x3e, 0xd2, 0x69, 0x4e, 0x9a, 0x51, 0x00, 0xf0 } }, + { 9, { 0x25, 0x3e, 0xd2, 0x69, 0x4e, 0x9a, 0x51, 0x00, 0xf0 } }, + { 9, { 0x0d, 0x3d, 0xa1, 0x40, 0x7d, 0x9f, 0x29, 0xfe, 0x14 } }, + { 9, { 0x2d, 0x3d, 0xa1, 0x40, 0x7d, 0x9f, 0x29, 0xfe, 0x14 } }, + { 9, { 0x15, 0x73, 0xa1, 0x50, 0x5d, 0xa6, 0xf5, 0xfe, 0x38 } }, + { 9, { 0x35, 0x73, 0xa1, 0x50, 0x5d, 0xa6, 0xf5, 0xfe, 0x38 } }, + { 9, { 0x1d, 0xed, 0xd0, 0x68, 0x29, 0xb4, 0xe1, 0x00, 0xb8 } }, + { 9, { 0x3d, 0xed, 0xd0, 0x68, 0x29, 0xb4, 0xe1, 0x00, 0xb8 } }, + { 3, { 0x80, 0xb3, 0x0a } }, + {-1, { 0} } + }; + + unsigned char init[25] = { + 0x00, + + 0x00, /* 00 - ID byte */ + 0x00, /* 01 - reserved */ + + /*front end */ + 0xd8, /* 02 - FUSE=x, GUDL=x, MODE=x */ + 0x23, /* 03 - HLNRS=0, VBSL=1, WPOFF=0, HOLDG=0, GAFIX=0, GAI1=256, GAI2=256 */ + 0x00, /* 04 - GAI1=256 */ + 0x00, /* 05 - GAI2=256 */ + + /* decoder */ + 0xf0, /* 06 - HSB at xx(50Hz) / xx(60Hz) pixels after end of last line */ + 0x30, /* 07 - HSS at xx(50Hz) / xx(60Hz) pixels after end of last line */ + 0xa8, /* 08 - AUFD=x, FSEL=x, EXFIL=x, VTRC=x, HPLL=x, VNOI=x */ + 0x02, /* 09 - BYPS=x, PREF=x, BPSS=x, VBLB=x, UPTCV=x, APER=x */ + 0x80, /* 0a - BRIG=128 */ + 0x47, /* 0b - CONT=1.109 */ + 0x40, /* 0c - SATN=1.0 */ + 0x00, /* 0d - HUE=0 */ + 0x01, /* 0e - CDTO=0, CSTD=0, DCCF=0, FCTC=0, CHBW=1 */ + 0x00, /* 0f - reserved */ + 0xd0, /* 10 - OFTS=x, HDEL=x, VRLN=x, YDEL=x */ + 0x8c, /* 11 - GPSW=x, CM99=x, FECO=x, COMPO=x, OEYC=1, OEHV=1, VIPB=0, COLO=0 */ + 0x80, /* 12 - xx output control 2 */ + 0x30, /* 13 - xx output control 3 */ + 0x00, /* 14 - reserved */ + 0x15, /* 15 - VBI */ + 0x04, /* 16 - VBI */ + 0x00, /* 17 - VBI */ + }; + + struct i2c_msg msg; + + int i = 0, err = 0; + struct tea6415c_multiplex vm; + + /* write configuration to saa7111a */ + i = i2c_master_send(mxb->saa7111a, init, sizeof(init)); + if (i < 0) { + printk("failed to initialize saa7111a. this should never happen.\n"); + } + + /* select tuner-output on saa7111a */ + i = 0; + mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_INPUT, &i); +// i = VIDEO_MODE_PAL; +// mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_NORM, &i); + + mxb_vbi_bypass(dev); + + /* select a tuner type */ + i = 5; + mxb->tuner->driver->command(mxb->tuner,TUNER_SET_TYPE, &i); + + /* mute audio on tea6420s */ + mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_line[6][0]); + mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_line[6][1]); + mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_cd[6][0]); + mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_cd[6][1]); + + /* switch to tuner-channel on tea6415c*/ + vm.out = 17; + vm.in = 3; + mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm); + + /* select tuner-output on multicable on tea6415c*/ + vm.in = 3; + vm.out = 13; + mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm); + + /* tune in some frequency on tuner */ + mxb->tuner->driver->command(mxb->tuner, VIDIOCSFREQ, &freq); + + /* the rest for mxb */ + mxb->cur_input = 0; + mxb->cur_freq = freq; + mxb->cur_mute = 1; + + mxb->cur_mode = V4L2_TUNER_MODE_STEREO; + mxb->tda9840->driver->command(mxb->tda9840, TDA9840_SWITCH, &mxb->cur_mode); + + /* check if the saa7740 (aka 'sound arena module') is present + on the mxb. if so, we must initialize it. due to lack of + informations about the saa7740, the values were reverse + engineered. */ + msg.addr = 0x1b; + msg.flags = 0; + msg.len = saa7740_init[0].length; + msg.buf = &saa7740_init[0].data[0]; + + if( 1 == (err = i2c_transfer(&mxb->i2c_adapter, &msg, 1))) { + for(i = 1;;i++) { + msg.len = saa7740_init[i].length; + if( -1 == msg.len ) { + break; + } + msg.buf = &saa7740_init[i].data[0]; + if( 1 != (err = i2c_transfer(&mxb->i2c_adapter, &msg, 1))) { + DEB_D(("failed to initialize 'sound arena module'.\n")); + goto err; + } + } + INFO(("'sound arena module' detected.\n")); + } +err: + /* the rest for saa7146: you should definitely set some basic values + for the input-port handling of the saa7146. */ + + /* ext->saa has been filled by the core driver */ + + /* some stuff is done via variables */ + saa7146_set_hps_source_and_sync(dev, input_port_selection[mxb->cur_input].hps_source, input_port_selection[mxb->cur_input].hps_sync); + + /* some stuff is done via direct write to the registers */ + + /* this is ugly, but because of the fact that this is completely + hardware dependend, it should be done directly... */ + saa7146_write(dev, DD1_STREAM_B, 0x00000000); + saa7146_write(dev, DD1_INIT, 0x02000200); + saa7146_write(dev, MC2, (MASK_09 | MASK_25 | MASK_10 | MASK_26)); + + return 0; +} + +/* interrupt-handler. this gets called when irq_mask is != 0. + it must clear the interrupt-bits in irq_mask it has handled */ +/* +void mxb_irq_bh(struct saa7146_dev* dev, u32* irq_mask) +{ + struct mxb* mxb = (struct mxb*)dev->ext_priv; +} +*/ + +/* this function only gets called when the probing was successful */ +static int mxb_attach(struct saa7146_dev* dev, struct saa7146_pci_extension_data *info) +{ + struct mxb* mxb = (struct mxb*)dev->ext_priv; + + DEB_EE(("dev:%p\n",dev)); + + /* checking for i2c-devices can be omitted here, because we + already did this in "mxb_vl42_probe" */ + + saa7146_vv_init(dev); + if( 0 != saa7146_register_device(&mxb->video_dev, dev, "mxb", VFL_TYPE_GRABBER)) { + ERR(("cannot register capture v4l2 device. skipping.\n")); + return -1; + } + + /* initialization stuff (vbi) (only for revision > 0 and for extensions which want it)*/ + if( 0 != MXB_BOARD_CAN_DO_VBI(dev)) { + if( 0 != saa7146_register_device(&mxb->vbi_dev, dev, "mxb", VFL_TYPE_VBI)) { + ERR(("cannot register vbi v4l2 device. skipping.\n")); + } + } + + i2c_use_client(mxb->tea6420_1); + i2c_use_client(mxb->tea6420_2); + i2c_use_client(mxb->tea6415c); + i2c_use_client(mxb->tda9840); + i2c_use_client(mxb->saa7111a); + i2c_use_client(mxb->tuner); + + printk("mxb: found 'Multimedia eXtension Board'-%d.\n",mxb_num); + + mxb_num++; + mxb_init_done(dev); + return 0; +} + +static int mxb_detach(struct saa7146_dev* dev) +{ + struct mxb* mxb = (struct mxb*)dev->ext_priv; + + DEB_EE(("dev:%p\n",dev)); + + i2c_release_client(mxb->tea6420_1); + i2c_release_client(mxb->tea6420_2); + i2c_release_client(mxb->tea6415c); + i2c_release_client(mxb->tda9840); + i2c_release_client(mxb->saa7111a); + i2c_release_client(mxb->tuner); + + saa7146_unregister_device(&mxb->video_dev,dev); + if( 0 != MXB_BOARD_CAN_DO_VBI(dev)) { + saa7146_unregister_device(&mxb->vbi_dev,dev); + } + saa7146_vv_release(dev); + + mxb_num--; + + i2c_del_adapter(&mxb->i2c_adapter); + kfree(mxb); + + return 0; +} + +/* hack: this should go into saa711x */ +static int saa7111_set_gpio(struct saa7146_dev *dev, int bl) +{ + struct mxb* mxb = (struct mxb*)dev->ext_priv; + s32 byte = 0x0; + int result = 0; + + DEB_EE(("dev:%p\n",dev)); + + /* get the old register contents */ + if ( -1 == (byte = i2c_smbus_read_byte_data(mxb->saa7111a, SAA711X_OUTPUT_CONTROL_1))) { + DEB_D(("could not read from saa711x\n")); + return -EFAULT; + } + + if( 0 == bl ) { + byte &= 0x7f; + } else { + byte |= 0x80; + } + + /* write register contents back */ + if ( 0 != (result = i2c_smbus_write_byte_data(mxb->saa7111a, SAA711X_OUTPUT_CONTROL_1, byte))) { + DEB_D(("could not write to saa711x\n")); + return -EFAULT; + } + + return 0; +} + +static int mxb_ioctl(struct saa7146_dev *dev, unsigned int cmd, void *arg) +{ + struct mxb* mxb = (struct mxb*)dev->ext_priv; + struct saa7146_vv *vv = dev->vv_data; + + switch(cmd) { + case VIDIOC_ENUMINPUT: + { + struct v4l2_input *i = arg; + + DEB_EE(("VIDIOC_ENUMINPUT %d.\n",i->index)); + if( i->index < 0 || i->index >= MXB_INPUTS) { + return -EINVAL; + } + memcpy(i, &mxb_inputs[i->index], sizeof(struct v4l2_input)); + + return 0; + } + /* the saa7146 provides some controls (brightness, contrast, saturation) + which gets registered *after* this function. because of this we have + to return with a value != 0 even if the function succeded.. */ + case VIDIOC_QUERYCTRL: + { + struct v4l2_queryctrl *qc = arg; + int i; + + for (i = MAXCONTROLS - 1; i >= 0; i--) { + if (mxb_controls[i].id == qc->id) { + *qc = mxb_controls[i]; + DEB_D(("VIDIOC_QUERYCTRL %d.\n",qc->id)); + return 0; + } + } + return -EAGAIN; + } + case VIDIOC_G_CTRL: + { + struct v4l2_control *vc = arg; + int i; + + for (i = MAXCONTROLS - 1; i >= 0; i--) { + if (mxb_controls[i].id == vc->id) { + break; + } + } + + if( i < 0 ) { + return -EAGAIN; + } + + switch (vc->id ) { + case V4L2_CID_AUDIO_MUTE: { + vc->value = mxb->cur_mute; + DEB_D(("VIDIOC_G_CTRL V4L2_CID_AUDIO_MUTE:%d.\n",vc->value)); + return 0; + } + } + + DEB_EE(("VIDIOC_G_CTRL V4L2_CID_AUDIO_MUTE:%d.\n",vc->value)); + return 0; + } + + case VIDIOC_S_CTRL: + { + struct v4l2_control *vc = arg; + int i = 0; + + for (i = MAXCONTROLS - 1; i >= 0; i--) { + if (mxb_controls[i].id == vc->id) { + break; + } + } + + if( i < 0 ) { + return -EAGAIN; + } + + switch (vc->id ) { + case V4L2_CID_AUDIO_MUTE: { + mxb->cur_mute = vc->value; + if( 0 == vc->value ) { + /* switch the audio-source */ + mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_line[video_audio_connect[mxb->cur_input]][0]); + mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_line[video_audio_connect[mxb->cur_input]][1]); + } else { + mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_line[6][0]); + mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_line[6][1]); + } + DEB_EE(("VIDIOC_S_CTRL, V4L2_CID_AUDIO_MUTE: %d.\n",vc->value)); + break; + } + } + return 0; + } + case VIDIOC_G_INPUT: + { + int *input = (int *)arg; + *input = mxb->cur_input; + + DEB_EE(("VIDIOC_G_INPUT %d.\n",*input)); + return 0; + } + case VIDIOC_S_INPUT: + { + int input = *(int *)arg; + struct tea6415c_multiplex vm; + int i = 0; + + DEB_EE(("VIDIOC_S_INPUT %d.\n",input)); + + if (input < 0 || input >= MXB_INPUTS) { + return -EINVAL; + } + + /* fixme: locke das setzen des inputs mit hilfe des mutexes + down(&dev->lock); + video_mux(dev,*i); + up(&dev->lock); + */ + + /* fixme: check if streaming capture + if ( 0 != dev->streaming ) { + DEB_D(("VIDIOC_S_INPUT illegal while streaming.\n")); + return -EPERM; + } + */ + + mxb->cur_input = input; + + saa7146_set_hps_source_and_sync(dev, input_port_selection[input].hps_source, input_port_selection[input].hps_sync); + + /* prepare switching of tea6415c and saa7111a; + have a look at the 'background'-file for further informations */ + switch( input ) { + + case TUNER: + { + i = 0; + vm.in = 3; + vm.out = 17; + + if ( 0 != mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm)) { + printk("VIDIOC_S_INPUT: could not address tea6415c #1\n"); + return -EFAULT; + } + /* connect tuner-output always to multicable */ + vm.in = 3; + vm.out = 13; + break; + } + case AUX3_YC: + { + /* nothing to be done here. aux3_yc is + directly connected to the saa711a */ + i = 5; + break; + } + case AUX3: + { + /* nothing to be done here. aux3 is + directly connected to the saa711a */ + i = 1; + break; + } + case AUX1: + { + i = 0; + vm.in = 1; + vm.out = 17; + break; + } + } + + /* switch video in tea6415c only if necessary */ + switch( input ) { + case TUNER: + case AUX1: + { + if ( 0 != mxb->tea6415c->driver->command(mxb->tea6415c,TEA6415C_SWITCH, &vm)) { + printk("VIDIOC_S_INPUT: could not address tea6415c #3\n"); + return -EFAULT; + } + break; + } + default: + { + break; + } + } + + /* switch video in saa7111a */ + if ( 0 != mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_SET_INPUT, &i)) { + printk("VIDIOC_S_INPUT: could not address saa7111a #1.\n"); + } + + /* switch the audio-source only if necessary */ + if( 0 == mxb->cur_mute ) { + mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_line[video_audio_connect[input]][0]); + mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_line[video_audio_connect[input]][1]); + } + + return 0; + } + case VIDIOC_G_TUNER: + { + struct v4l2_tuner *t = arg; + int byte = 0; + + if( 0 != t->index ) { + DEB_D(("VIDIOC_G_TUNER: channel %d does not have a tuner attached.\n", t->index)); + return -EINVAL; + } + + DEB_EE(("VIDIOC_G_TUNER: %d\n", t->index)); + + memset(t,0,sizeof(*t)); + strcpy(t->name, "Television"); + + t->type = V4L2_TUNER_ANALOG_TV; + t->capability = V4L2_TUNER_CAP_NORM | V4L2_TUNER_CAP_STEREO | V4L2_TUNER_CAP_LANG1 | V4L2_TUNER_CAP_LANG2 | V4L2_TUNER_CAP_SAP; + t->rangelow = 772; /* 48.25 MHZ / 62.5 kHz = 772, see fi1216mk2-specs, page 2 */ + t->rangehigh = 13684; /* 855.25 MHz / 62.5 kHz = 13684 */ + /* FIXME: add the real signal strength here */ + t->signal = 0xffff; + t->afc = 0; + + byte = mxb->tda9840->driver->command(mxb->tda9840,TDA9840_DETECT, NULL); + t->audmode = mxb->cur_mode; + + if( byte < 0 ) { + t->rxsubchans = V4L2_TUNER_SUB_MONO; + } else { + switch(byte) { + case TDA9840_MONO_DETECT: { + t->rxsubchans = V4L2_TUNER_SUB_MONO; + DEB_D(("VIDIOC_G_TUNER: V4L2_TUNER_MODE_MONO.\n")); + break; + } + case TDA9840_DUAL_DETECT: { + t->rxsubchans = V4L2_TUNER_SUB_LANG1 | V4L2_TUNER_SUB_LANG2; + DEB_D(("VIDIOC_G_TUNER: V4L2_TUNER_MODE_LANG1.\n")); + break; + } + case TDA9840_STEREO_DETECT: { + t->rxsubchans = V4L2_TUNER_SUB_STEREO | V4L2_TUNER_SUB_MONO; + DEB_D(("VIDIOC_G_TUNER: V4L2_TUNER_MODE_STEREO.\n")); + break; + } + default: { /* TDA9840_INCORRECT_DETECT */ + t->rxsubchans = V4L2_TUNER_MODE_MONO; + DEB_D(("VIDIOC_G_TUNER: TDA9840_INCORRECT_DETECT => V4L2_TUNER_MODE_MONO\n")); + break; + } + } + } + + return 0; + } + case VIDIOC_S_TUNER: + { + struct v4l2_tuner *t = arg; + int result = 0; + int byte = 0; + + if( 0 != t->index ) { + DEB_D(("VIDIOC_S_TUNER: channel %d does not have a tuner attached.\n",t->index)); + return -EINVAL; + } + + switch(t->audmode) { + case V4L2_TUNER_MODE_STEREO: { + mxb->cur_mode = V4L2_TUNER_MODE_STEREO; + byte = TDA9840_SET_STEREO; + DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_STEREO\n")); + break; + } + case V4L2_TUNER_MODE_LANG1: { + mxb->cur_mode = V4L2_TUNER_MODE_LANG1; + byte = TDA9840_SET_LANG1; + DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG1\n")); + break; + } + case V4L2_TUNER_MODE_LANG2: { + mxb->cur_mode = V4L2_TUNER_MODE_LANG2; + byte = TDA9840_SET_LANG2; + DEB_D(("VIDIOC_S_TUNER: V4L2_TUNER_MODE_LANG2\n")); + break; + } + default: { /* case V4L2_TUNER_MODE_MONO: {*/ + mxb->cur_mode = V4L2_TUNER_MODE_MONO; + byte = TDA9840_SET_MONO; + DEB_D(("VIDIOC_S_TUNER: TDA9840_SET_MONO\n")); + break; + } + } + + if( 0 != (result = mxb->tda9840->driver->command(mxb->tda9840, TDA9840_SWITCH, &byte))) { + printk("VIDIOC_S_TUNER error. result:%d, byte:%d\n",result,byte); + } + + return 0; + } + case VIDIOC_G_FREQUENCY: + { + struct v4l2_frequency *f = arg; + + if(0 != mxb->cur_input) { + DEB_D(("VIDIOC_G_FREQ: channel %d does not have a tuner!\n",mxb->cur_input)); + return -EINVAL; + } + + memset(f,0,sizeof(*f)); + f->type = V4L2_TUNER_ANALOG_TV; + f->frequency = mxb->cur_freq; + + DEB_EE(("VIDIOC_G_FREQ: freq:0x%08x.\n", mxb->cur_freq)); + return 0; + } + case VIDIOC_S_FREQUENCY: + { + struct v4l2_frequency *f = arg; + int t_locked = 0; + int v_byte = 0; + + if (0 != f->tuner) + return -EINVAL; + + if (V4L2_TUNER_ANALOG_TV != f->type) + return -EINVAL; + + if(0 != mxb->cur_input) { + DEB_D(("VIDIOC_S_FREQ: channel %d does not have a tuner!\n",mxb->cur_input)); + return -EINVAL; + } + + DEB_EE(("VIDIOC_S_FREQUENCY: freq:0x%08x.\n",f->frequency)); + + mxb->cur_freq = f->frequency; + + /* tune in desired frequency */ + mxb->tuner->driver->command(mxb->tuner, VIDIOCSFREQ, &mxb->cur_freq); + + /* check if pll of tuner & saa7111a is locked */ +// mxb->tuner->driver->command(mxb->tuner,TUNER_IS_LOCKED, &t_locked); + mxb->saa7111a->driver->command(mxb->saa7111a,DECODER_GET_STATUS, &v_byte); + + /* not locked -- anything to do here ? */ + if( 0 == t_locked || 0 == (v_byte & DECODER_STATUS_GOOD)) { + } + + /* hack: changing the frequency should invalidate the vbi-counter (=> alevt) */ + spin_lock(&dev->slock); + vv->vbi_fieldcount = 0; + spin_unlock(&dev->slock); + + return 0; + } + case MXB_S_AUDIO_CD: + { + int i = *(int*)arg; + + if( i < 0 || i >= MXB_AUDIOS ) { + DEB_D(("illegal argument to MXB_S_AUDIO_CD: i:%d.\n",i)); + return -EINVAL; + } + + DEB_EE(("MXB_S_AUDIO_CD: i:%d.\n",i)); + + mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_cd[i][0]); + mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_cd[i][1]); + + return 0; + } + case MXB_S_AUDIO_LINE: + { + int i = *(int*)arg; + + if( i < 0 || i >= MXB_AUDIOS ) { + DEB_D(("illegal argument to MXB_S_AUDIO_LINE: i:%d.\n",i)); + return -EINVAL; + } + + DEB_EE(("MXB_S_AUDIO_LINE: i:%d.\n",i)); + mxb->tea6420_1->driver->command(mxb->tea6420_1,TEA6420_SWITCH, &TEA6420_line[i][0]); + mxb->tea6420_2->driver->command(mxb->tea6420_2,TEA6420_SWITCH, &TEA6420_line[i][1]); + + return 0; + } + case VIDIOC_G_AUDIO: + { + struct v4l2_audio *a = arg; + + if( a->index < 0 || a->index > MXB_INPUTS ) { + DEB_D(("VIDIOC_G_AUDIO %d out of range.\n",a->index)); + return -EINVAL; + } + + DEB_EE(("VIDIOC_G_AUDIO %d.\n",a->index)); + memcpy(a, &mxb_audios[video_audio_connect[mxb->cur_input]], sizeof(struct v4l2_audio)); + + return 0; + } + case VIDIOC_S_AUDIO: + { + struct v4l2_audio *a = arg; + DEB_D(("VIDIOC_S_AUDIO %d.\n",a->index)); + return 0; + } + default: +/* + DEB2(printk("does not handle this ioctl.\n")); +*/ + return -ENOIOCTLCMD; + } + return 0; +} + +static int std_callback(struct saa7146_dev* dev, struct saa7146_standard *std) +{ + if(V4L2_STD_PAL_I == std->id ) { + DEB_D(("VIDIOC_S_STD: setting mxb for PAL_I.\n")); + /* set the 7146 gpio register -- I don't know what this does exactly */ + saa7146_write(dev, GPIO_CTRL, 0x00404050); + /* unset the 7111 gpio register -- I don't know what this does exactly */ + saa7111_set_gpio(dev,0); + } else { + DEB_D(("VIDIOC_S_STD: setting mxb for PAL/NTSC/SECAM.\n")); + /* set the 7146 gpio register -- I don't know what this does exactly */ + saa7146_write(dev, GPIO_CTRL, 0x00404050); + /* set the 7111 gpio register -- I don't know what this does exactly */ + saa7111_set_gpio(dev,1); + } + return 0; +} + +static struct saa7146_standard standard[] = { + { "PAL-BG", V4L2_STD_PAL_BG, SAA7146_PAL_VALUES }, + { "PAL-I", V4L2_STD_PAL_I, SAA7146_PAL_VALUES }, + { "NTSC", V4L2_STD_NTSC, SAA7146_NTSC_VALUES }, + { "SECAM", V4L2_STD_SECAM, SAA7146_SECAM_VALUES }, +}; + +static +struct saa7146_extension extension; + +static +struct saa7146_pci_extension_data mxb = { + .ext_priv = "Multimedia eXtension Board", + .ext = &extension, +}; + +static +struct pci_device_id pci_tbl[] = { + { + .vendor = PCI_VENDOR_ID_PHILIPS, + .device = PCI_DEVICE_ID_PHILIPS_SAA7146, + .subvendor = 0x0000, + .subdevice = 0x0000, + .driver_data = (unsigned long)&mxb, + }, { + .vendor = 0, + } +}; + +static +struct saa7146_ext_vv vv_data = { + .inputs = MXB_INPUTS, + .capabilities = V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE, + .stds = &standard[0], + .num_stds = sizeof(standard)/sizeof(struct saa7146_standard), + .std_callback = &std_callback, + .ioctls = &ioctls[0], + .ioctl = mxb_ioctl, +}; + +static +struct saa7146_extension extension = { + .name = MXB_IDENTIFIER, + .flags = SAA7146_USE_I2C_IRQ, + + .pci_tbl = &pci_tbl[0], + .module = THIS_MODULE, + .ext_vv_data = &vv_data, + + .probe = mxb_probe, + .attach = mxb_attach, + .detach = mxb_detach, + + .irq_mask = 0, + .irq_func = NULL, +}; + +int __init mxb_init_module(void) +{ + if( 0 != saa7146_register_extension(&extension)) { + DEB_S(("failed to register extension.\n")); + return -ENODEV; + } + + return 0; +} + +void __exit mxb_cleanup_module(void) +{ + saa7146_unregister_extension(&extension); +} + +module_init(mxb_init_module); +module_exit(mxb_cleanup_module); + +MODULE_DESCRIPTION("video4linux-2 driver for the Siemens-Nixdorf 'Multimedia eXtension board'"); +MODULE_AUTHOR("Michael Hunold "); +MODULE_LICENSE("GPL"); diff -Nru a/drivers/media/video/mxb.h b/drivers/media/video/mxb.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/mxb.h Mon Apr 7 13:17:33 2003 @@ -0,0 +1,42 @@ +#ifndef __MXB__ +#define __MXB__ + +#define BASE_VIDIOC_MXB 10 + +#define MXB_S_AUDIO_CD _IOW ('V', BASE_VIDIOC_PRIVATE+BASE_VIDIOC_MXB+0, int) +#define MXB_S_AUDIO_LINE _IOW ('V', BASE_VIDIOC_PRIVATE+BASE_VIDIOC_MXB+1, int) + +#define MXB_IDENTIFIER "Multimedia eXtension Board" + +#define MXB_AUDIOS 6 + +/* these are the available audio sources, which can switched + to the line- and cd-output individually */ +struct v4l2_audio mxb_audios[MXB_AUDIOS] = { + { + .index = 0, + .name = "Tuner", + .capability = V4L2_AUDCAP_STEREO, + } , { + .index = 1, + .name = "AUX1", + .capability = V4L2_AUDCAP_STEREO, + } , { + .index = 2, + .name = "AUX2", + .capability = V4L2_AUDCAP_STEREO, + } , { + .index = 3, + .name = "AUX3", + .capability = V4L2_AUDCAP_STEREO, + } , { + .index = 4, + .name = "Radio (X9)", + .capability = V4L2_AUDCAP_STEREO, + } , { + .index = 5, + .name = "CD-ROM (X10)", + .capability = V4L2_AUDCAP_STEREO, + } +}; +#endif diff -Nru a/drivers/media/video/saa7111.c b/drivers/media/video/saa7111.c --- a/drivers/media/video/saa7111.c Mon Mar 31 15:55:30 2003 +++ b/drivers/media/video/saa7111.c Mon Apr 7 13:30:09 2003 @@ -57,15 +57,13 @@ int sat; }; -#define I2C_SAA7111 0x48 - -#define I2C_DELAY 10 - static unsigned short normal_i2c[] = { 34>>1, I2C_CLIENT_END }; static unsigned short normal_i2c_range[] = { I2C_CLIENT_END }; I2C_CLIENT_INSMOD; +static struct i2c_client client_template; + /* ----------------------------------------------------------------------- */ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short flags, int kind) @@ -73,40 +71,45 @@ int i; struct saa7111 *decoder; struct i2c_client *client; + + /* who wrote this? init[] is used for i2c_master_send() which expects an array that + will be used for the 'buf' part of an i2c message unchanged. so, the first byte + needs to be the subaddress to start with, then follow the data bytes... */ static const unsigned char init[] = { - 0x00, 0x00, /* 00 - ID byte */ - 0x01, 0x00, /* 01 - reserved */ + 0x00, /* start address */ + + 0x00, /* 00 - ID byte */ + 0x00, /* 01 - reserved */ /*front end */ - 0x02, 0xd0, /* 02 - FUSE=3, GUDL=2, MODE=0 */ - 0x03, 0x23, /* 03 - HLNRS=0, VBSL=1, WPOFF=0, HOLDG=0, GAFIX=0, GAI1=256, GAI2=256 */ - 0x04, 0x00, /* 04 - GAI1=256 */ - 0x05, 0x00, /* 05 - GAI2=256 */ + 0xd0, /* 02 - FUSE=3, GUDL=2, MODE=0 */ + 0x23, /* 03 - HLNRS=0, VBSL=1, WPOFF=0, HOLDG=0, GAFIX=0, GAI1=256, GAI2=256 */ + 0x00, /* 04 - GAI1=256 */ + 0x00, /* 05 - GAI2=256 */ /* decoder */ - 0x06, 0xf3, /* 06 - HSB at 13(50Hz) / 17(60Hz) pixels after end of last line */ - 0x07, 0x13, /* 07 - HSS at 113(50Hz) / 117(60Hz) pixels after end of last line */ - 0x08, 0xc8, /* 08 - AUFD=1, FSEL=1, EXFIL=0, VTRC=1, HPLL=0, VNOI=0 */ - 0x09, 0x01, /* 09 - BYPS=0, PREF=0, BPSS=0, VBLB=0, UPTCV=0, APER=1 */ - 0x0a, 0x80, /* 0a - BRIG=128 */ - 0x0b, 0x47, /* 0b - CONT=1.109 */ - 0x0c, 0x40, /* 0c - SATN=1.0 */ - 0x0d, 0x00, /* 0d - HUE=0 */ - 0x0e, 0x01, /* 0e - CDTO=0, CSTD=0, DCCF=0, FCTC=0, CHBW=1 */ - 0x0f, 0x00, /* 0f - reserved */ - 0x10, 0x48, /* 10 - OFTS=1, HDEL=0, VRLN=1, YDEL=0 */ - 0x11, 0x1c, /* 11 - GPSW=0, CM99=0, FECO=0, COMPO=1, OEYC=1, OEHV=1, VIPB=0, COLO=0 */ - 0x12, 0x00, /* 12 - output control 2 */ - 0x13, 0x00, /* 13 - output control 3 */ - 0x14, 0x00, /* 14 - reserved */ - 0x15, 0x00, /* 15 - VBI */ - 0x16, 0x00, /* 16 - VBI */ - 0x17, 0x00, /* 17 - VBI */ + 0xf3, /* 06 - HSB at 13(50Hz) / 17(60Hz) pixels after end of last line */ + 0x13, /* 07 - HSS at 113(50Hz) / 117(60Hz) pixels after end of last line */ + 0xc8, /* 08 - AUFD=1, FSEL=1, EXFIL=0, VTRC=1, HPLL=0, VNOI=0 */ + 0x01, /* 09 - BYPS=0, PREF=0, BPSS=0, VBLB=0, UPTCV=0, APER=1 */ + 0x80, /* 0a - BRIG=128 */ + 0x47, /* 0b - CONT=1.109 */ + 0x40, /* 0c - SATN=1.0 */ + 0x00, /* 0d - HUE=0 */ + 0x01, /* 0e - CDTO=0, CSTD=0, DCCF=0, FCTC=0, CHBW=1 */ + 0x00, /* 0f - reserved */ + 0x48, /* 10 - OFTS=1, HDEL=0, VRLN=1, YDEL=0 */ + 0x1c, /* 11 - GPSW=0, CM99=0, FECO=0, COMPO=1, OEYC=1, OEHV=1, VIPB=0, COLO=0 */ + 0x00, /* 12 - output control 2 */ + 0x00, /* 13 - output control 3 */ + 0x00, /* 14 - reserved */ + 0x00, /* 15 - VBI */ + 0x00, /* 16 - VBI */ + 0x00, /* 17 - VBI */ }; client = kmalloc(sizeof(*client), GFP_KERNEL); if(client == NULL) return -ENOMEM; - memset(client, 0, sizeof(*client)); client_template.adapter = adap; client_template.addr = addr; memcpy(client, &client_template, sizeof(*client)); @@ -136,9 +139,10 @@ printk(KERN_ERR "%s_attach: init status %d\n", client->dev.name, i); } else { - printk(KERN_INFO "%s_attach: chip version %x\n", - client->dev.name, i2c_smbus_read_byte_data(client, 0x00) >> 4); + printk(KERN_INFO "%s_attach: chip version %x @ 0x%08x\n", + client->dev.name, i2c_smbus_read_byte_data(client, 0x00) >> 4,addr); } + init_MUTEX(&decoder->lock); i2c_attach_client(client); MOD_INC_USE_COUNT; @@ -146,6 +150,16 @@ } static int saa7111_probe(struct i2c_adapter *adap) { + /* probing unknown devices on any Matrox i2c-bus takes ages due to the + slow bit banging algorithm used. because of the fact a saa7111(a) + is *never* present on a Matrox gfx card, we can skip such adapters + here */ + if( 0 != (adap->id & I2C_HW_B_G400)) { + return -ENODEV; + } + + printk("saa7111: probing %s i2c adapter [id=0x%x]\n", + adap->dev.name,adap->id); return i2c_probe(adap, &addr_data, saa7111_attach); } @@ -385,6 +399,9 @@ /* ----------------------------------------------------------------------- */ static struct i2c_driver i2c_driver_saa7111 = { +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,54) + .owner = THIS_MODULE, +#endif .name = "saa7111", /* name */ .id = I2C_DRIVERID_SAA7111A, /* ID */ .flags = I2C_DF_NOTIFY, diff -Nru a/drivers/media/video/tda9840.c b/drivers/media/video/tda9840.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/tda9840.c Mon Apr 7 13:31:46 2003 @@ -0,0 +1,289 @@ + /* + tda9840.h - i2c-driver for the tda9840 by SGS Thomson + + Copyright (C) 1998-2003 Michael Hunold + + The tda9840 is a stereo/dual sound processor with digital + identification. It can be found at address 0x84 on the i2c-bus. + + For detailed informations download the specifications directly + from SGS Thomson at http://www.st.com + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "tda9840.h" + +static int debug = 0; /* insmod parameter */ +MODULE_PARM(debug,"i"); +#define dprintk if (debug) printk + +#define SWITCH 0x00 +#define LEVEL_ADJUST 0x02 +#define STEREO_ADJUST 0x03 +#define TEST 0x04 + +/* addresses to scan, found only at 0x42 (7-Bit) */ +static unsigned short normal_i2c[] = {I2C_TDA9840, I2C_CLIENT_END}; +static unsigned short normal_i2c_range[] = {I2C_CLIENT_END}; + +/* magic definition of all other variables and things */ +I2C_CLIENT_INSMOD; + +/* unique ID allocation */ +static int tda9840_id = 0; + +static struct i2c_driver driver; + +static int tda9840_command(struct i2c_client *client, unsigned int cmd, void* arg) +{ + int result = 0; + + switch (cmd) { + case TDA9840_SWITCH: + { + int byte = *(int*)arg; + + dprintk("tda9840.o: TDA9840_SWITCH: 0x%02x\n",byte); + + if ( byte != TDA9840_SET_MONO + && byte != TDA9840_SET_MUTE + && byte != TDA9840_SET_STEREO + && byte != TDA9840_SET_LANG1 + && byte != TDA9840_SET_LANG2 + && byte != TDA9840_SET_BOTH + && byte != TDA9840_SET_BOTH_R + && byte != TDA9840_SET_EXTERNAL ) { + return -EINVAL; + } + + if ( 0 != (result = i2c_smbus_write_byte_data(client, SWITCH, byte))) { + printk("tda9840.o: TDA9840_SWITCH error.\n"); + return -EFAULT; + } + + return 0; + } + + case TDA9840_LEVEL_ADJUST: + { + int byte = *(int*)arg; + + dprintk("tda9840.o: TDA9840_LEVEL_ADJUST: %d\n",byte); + + /* check for correct range */ + if ( byte > 25 || byte < -20 ) + return -EINVAL; + + /* calculate actual value to set, see specs, page 18 */ + byte /= 5; + if ( 0 < byte ) + byte += 0x8; + else + byte = -byte; + + if ( 0 != (result = i2c_smbus_write_byte_data(client, LEVEL_ADJUST, byte))) { + printk("tda9840.o: TDA9840_LEVEL_ADJUST error.\n"); + return -EFAULT; + } + + return 0; + } + + case TDA9840_STEREO_ADJUST: + { + int byte = *(int*)arg; + + dprintk("tda9840.o: TDA9840_STEREO_ADJUST: %d\n",byte); + + /* check for correct range */ + if ( byte > 25 || byte < -24 ) + return -EINVAL; + + /* calculate actual value to set */ + byte /= 5; + if ( 0 < byte ) + byte += 0x20; + else + byte = -byte; + + if ( 0 != (result = i2c_smbus_write_byte_data(client, STEREO_ADJUST, byte))) { + printk("tda9840.o: TDA9840_STEREO_ADJUST error.\n"); + return -EFAULT; + } + + return 0; + } + + case TDA9840_DETECT: + { + int byte = 0x0; + + if ( -1 == (byte = i2c_smbus_read_byte_data(client, STEREO_ADJUST))) { + printk("tda9840.o: TDA9840_DETECT error while reading.\n"); + return -EFAULT; + } + + if( 0 != (byte & 0x80)) { + dprintk("tda9840.o: TDA9840_DETECT, register contents invalid.\n"); + return -EFAULT; + } + + dprintk("tda9840.o: TDA9840_DETECT, result: 0x%02x (original byte)\n",byte); + + return ((byte & 0x60) >> 5); + } + + case TDA9840_TEST: + { + int byte = *(int*)arg; + + dprintk("tda9840.o: TDA9840_TEST: 0x%02x\n",byte); + + /* mask out irrelevant bits */ + byte &= 0x3; + + if ( 0 != (result = i2c_smbus_write_byte_data(client, TEST, byte))) { + printk("tda9840.o: TDA9840_TEST error.\n"); + return -EFAULT; + } + + return 0; + } + + default: + return -ENOIOCTLCMD; + } + + return 0; +} + +static int tda9840_detect(struct i2c_adapter *adapter, int address, unsigned short flags, int kind) +{ + struct i2c_client *client; + int result = 0; + + int byte = 0x0; + + /* let's see whether this adapter can support what we need */ + if ( 0 == i2c_check_functionality(adapter, I2C_FUNC_SMBUS_READ_BYTE_DATA|I2C_FUNC_SMBUS_WRITE_BYTE_DATA)) { + return 0; + } + + /* allocate memory for client structure */ + client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); + if (0 == client) { + printk("tda9840.o: not enough kernel memory.\n"); + return -ENOMEM; + } + + /* fill client structure */ + sprintf(client->dev.name,"tda9840 (0x%02x)", address); + client->id = tda9840_id++; + client->flags = 0; + client->addr = address; + client->adapter = adapter; + client->driver = &driver; + i2c_set_clientdata(client, NULL); + + /* tell the i2c layer a new client has arrived */ + if (0 != (result = i2c_attach_client(client))) { + kfree(client); + return result; + } + + /* set initial values for level & stereo - adjustment, mode */ + byte = 0; + if ( 0 != (result = tda9840_command(client, TDA9840_LEVEL_ADJUST, &byte))) { + printk("tda9840.o: could not initialize ic #1. continuing anyway. (result:%d)\n",result); + } + + if ( 0 != (result = tda9840_command(client, TDA9840_STEREO_ADJUST, &byte))) { + printk("tda9840.o: could not initialize ic #2. continuing anyway. (result:%d)\n",result); + } + + byte = TDA9840_SET_MONO; + if ( 0 != (result = tda9840_command(client, TDA9840_SWITCH, &byte))) { + printk("tda9840.o: could not initialize ic #3. continuing anyway. (result:%d)\n",result); + } + + printk("tda9840.o: detected @ 0x%02x on adapter %s\n",2*address,&client->adapter->dev.name[0]); + + return 0; +} + +static int tda9840_attach(struct i2c_adapter *adapter) +{ + /* let's see whether this is a know adapter we can attach to */ + if( adapter->id != I2C_ALGO_SAA7146 ) { + dprintk("tda9840.o: refusing to probe on unknown adapter [name='%s',id=0x%x]\n",adapter->dev.name,adapter->id); + return -ENODEV; + } + + return i2c_probe(adapter,&addr_data,&tda9840_detect); +} + +static int tda9840_detach(struct i2c_client *client) +{ + int err = 0; + + if ( 0 != (err = i2c_detach_client(client))) { + printk("tda9840.o: Client deregistration failed, client not detached.\n"); + return err; + } + + kfree(client); + + return 0; +} + +static struct i2c_driver driver = { +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,54) + .owner = THIS_MODULE, +#endif + .name = "tda9840 driver", + .id = I2C_DRIVERID_TDA9840, + .flags = I2C_DF_NOTIFY, + .attach_adapter = tda9840_attach, + .detach_client = tda9840_detach, + .command = tda9840_command, +}; + +static int tda9840_init_module(void) +{ + i2c_add_driver(&driver); + return 0; +} + +static void tda9840_cleanup_module(void) +{ + i2c_del_driver(&driver); +} + +module_init(tda9840_init_module); +module_exit(tda9840_cleanup_module); + +MODULE_AUTHOR("Michael Hunold "); +MODULE_DESCRIPTION("tda9840 driver"); +MODULE_LICENSE("GPL"); + diff -Nru a/drivers/media/video/tda9840.h b/drivers/media/video/tda9840.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/tda9840.h Mon Apr 7 13:17:33 2003 @@ -0,0 +1,35 @@ +#ifndef __INCLUDED_TDA9840__ +#define __INCLUDED_TDA9840__ + +#define I2C_TDA9840 0x42 + +#define TDA9840_DETECT _IOR('v',1,int) +/* return values for TDA9840_DETCT */ +#define TDA9840_MONO_DETECT 0x0 +#define TDA9840_DUAL_DETECT 0x1 +#define TDA9840_STEREO_DETECT 0x2 +#define TDA9840_INCORRECT_DETECT 0x3 + +#define TDA9840_SWITCH _IOW('v',2,int) +/* modes than can be set with TDA9840_SWITCH */ +#define TDA9840_SET_MUTE 0x00 +#define TDA9840_SET_MONO 0x10 +#define TDA9840_SET_STEREO 0x2a +#define TDA9840_SET_LANG1 0x12 +#define TDA9840_SET_LANG2 0x1e +#define TDA9840_SET_BOTH 0x1a +#define TDA9840_SET_BOTH_R 0x16 +#define TDA9840_SET_EXTERNAL 0x7a + +/* values may range between +2.5 and -2.0; + the value has to be multiplied with 10 */ +#define TDA9840_LEVEL_ADJUST _IOW('v',3,int) + +/* values may range between +2.5 and -2.4; + the value has to be multiplied with 10 */ +#define TDA9840_STEREO_ADJUST _IOW('v',4,int) + +/* currently not implemented */ +#define TDA9840_TEST _IOW('v',5,int) + +#endif diff -Nru a/drivers/media/video/tea6415c.c b/drivers/media/video/tea6415c.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/tea6415c.c Mon Apr 7 13:32:33 2003 @@ -0,0 +1,238 @@ + /* + tea6415c.h - i2c-driver for the tea6415c by SGS Thomson + + Copyright (C) 1998-2003 Michael Hunold + + The tea6415c is a bus controlled video-matrix-switch + with 8 inputs and 6 outputs. + It is cascadable, i.e. it can be found at the addresses + 0x86 and 0x06 on the i2c-bus. + + For detailed informations download the specifications directly + from SGS Thomson at http://www.st.com + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License vs published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mvss Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include "tea6415c.h" + +static int debug = 0; /* insmod parameter */ +MODULE_PARM(debug,"i"); +#define dprintk if (debug) printk + +#define TEA6415C_NUM_INPUTS 8 +#define TEA6415C_NUM_OUTPUTS 6 + +/* addresses to scan, found only at 0x03 and/or 0x43 (7-bit) */ +static unsigned short normal_i2c[] = {I2C_TEA6415C_1, I2C_TEA6415C_2, I2C_CLIENT_END}; +static unsigned short normal_i2c_range[] = {I2C_CLIENT_END}; + +/* magic definition of all other variables and things */ +I2C_CLIENT_INSMOD; + +static struct i2c_driver driver; + +/* unique ID allocation */ +static int tea6415c_id = 0; + +/* this function is called by i2c_probe */ +static int tea6415c_detect(struct i2c_adapter *adapter, int address, unsigned short flags, int kind) +{ + struct i2c_client *client = 0; + int err = 0; + + /* let's see whether this adapter can support what we need */ + if ( 0 == i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WRITE_BYTE)) { + return 0; + } + + /* allocate memory for client structure */ + client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); + if (0 == client) { + return -ENOMEM; + } + + /* fill client structure */ + sprintf(client->dev.name,"tea6415c (0x%02x)", address); + client->id = tea6415c_id++; + client->flags = 0; + client->addr = address; + client->adapter = adapter; + client->driver = &driver; + + /* tell the i2c layer a new client has arrived */ + if (0 != (err = i2c_attach_client(client))) { + kfree(client); + return err; + } + + printk("tea6415c.o: detected @ 0x%02x on adapter %s\n",2*address,&client->adapter->dev.name[0]); + + return 0; +} + +static int tea6415c_attach(struct i2c_adapter *adapter) +{ + /* let's see whether this is a know adapter we can attach to */ + if( adapter->id != I2C_ALGO_SAA7146 ) { + dprintk("tea6415c.o: refusing to probe on unknown adapter [name='%s',id=0x%x]\n",adapter->dev.name,adapter->id); + return -ENODEV; + } + + return i2c_probe(adapter,&addr_data,&tea6415c_detect); +} + +static int tea6415c_detach(struct i2c_client *client) +{ + int err = 0; + + if ( 0 != (err = i2c_detach_client(client))) { + printk("tea6415c.o: Client deregistration failed, client not detached.\n"); + return err; + } + + kfree(client); + + return 0; +} + +/* makes a connection between the input-pin 'i' and the output-pin 'o' + for the tea6415c-client 'client' */ +static int tea6415c_switch(struct i2c_client *client, int i, int o) +{ + u8 byte = 0; + + dprintk("tea6415c.o: tea6415c_switch: adr:0x%02x, i:%d, o:%d\n", client->addr, i, o); + + /* check if the pins are valid */ + if ( 0 == (( 1 == i || 3 == i || 5 == i || 6 == i || 8 == i || 10 == i || 20 == i || 11 == i ) && + (18 == o || 17 == o || 16 == o || 15 == o || 14 == o || 13 == o ))) + return -1; + + /* to understand this, have a look at the tea6415c-specs (p.5) */ + switch(o) { + case 18: + byte = 0x00; + break; + case 14: + byte = 0x20; + break; + case 16: + byte = 0x10; + break; + case 17: + byte = 0x08; + break; + case 15: + byte = 0x18; + break; + case 13: + byte = 0x28; + break; + }; + + switch(i) { + case 5: + byte |= 0x00; + break; + case 8: + byte |= 0x04; + break; + case 3: + byte |= 0x02; + break; + case 20: + byte |= 0x06; + break; + case 6: + byte |= 0x01; + break; + case 10: + byte |= 0x05; + break; + case 1: + byte |= 0x03; + break; + case 11: + byte |= 0x07; + break; + }; + + if ( 0 != i2c_smbus_write_byte(client,byte)) { + dprintk("tea6415c.o: tea6415c_switch: could not write to tea6415c\n"); + return -1; + } + + return 0; +} + +static int tea6415c_command(struct i2c_client *client, unsigned int cmd, void* arg) +{ + struct tea6415c_multiplex *v = (struct tea6415c_multiplex*)arg; + int result = 0; + + switch (cmd) { + case TEA6415C_SWITCH: { + result = tea6415c_switch(client,v->in,v->out); + break; + } + default: { + return -ENOIOCTLCMD; + } + } + + if ( 0 != result ) + return result; + + return 0; +} + +static struct i2c_driver driver = { +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,54) + .owner = THIS_MODULE, +#endif + .name = "tea6415c driver", + .id = I2C_DRIVERID_TEA6415C, + .flags = I2C_DF_NOTIFY, + .attach_adapter = tea6415c_attach, + .detach_client = tea6415c_detach, + .command = tea6415c_command, +}; + +static int tea6415c_init_module(void) +{ + i2c_add_driver(&driver); + return 0; +} + +static void tea6415c_cleanup_module(void) +{ + i2c_del_driver(&driver); +} + +module_init(tea6415c_init_module); +module_exit(tea6415c_cleanup_module); + +MODULE_AUTHOR("Michael Hunold "); +MODULE_DESCRIPTION("tea6415c driver"); +MODULE_LICENSE("GPL"); + diff -Nru a/drivers/media/video/tea6415c.h b/drivers/media/video/tea6415c.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/tea6415c.h Mon Apr 7 13:17:33 2003 @@ -0,0 +1,39 @@ +#ifndef __INCLUDED_TEA6415C__ +#define __INCLUDED_TEA6415C__ + +/* possible i2c-addresses */ +#define I2C_TEA6415C_1 0x03 +#define I2C_TEA6415C_2 0x43 + +/* the tea6415c's design is quite brain-dead. although there are + 8 inputs and 6 outputs, these aren't enumerated in any way. because + I don't want to say "connect input pin 20 to output pin 17", I define + a "virtual" pin-order. */ + +/* input pins */ +#define TEA6415C_OUTPUT1 18 +#define TEA6415C_OUTPUT2 14 +#define TEA6415C_OUTPUT3 16 +#define TEA6415C_OUTPUT4 17 +#define TEA6415C_OUTPUT5 13 +#define TEA6415C_OUTPUT6 15 + +/* output pins */ +#define TEA6415C_INPUT1 5 +#define TEA6415C_INPUT2 8 +#define TEA6415C_INPUT3 3 +#define TEA6415C_INPUT4 20 +#define TEA6415C_INPUT5 6 +#define TEA6415C_INPUT6 10 +#define TEA6415C_INPUT7 1 +#define TEA6415C_INPUT8 11 + +struct tea6415c_multiplex +{ + int in; /* input-pin */ + int out; /* output-pin */ +}; + +#define TEA6415C_SWITCH _IOW('v',1,struct tea6415c_multiplex) + +#endif diff -Nru a/drivers/media/video/tea6420.c b/drivers/media/video/tea6420.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/tea6420.c Mon Apr 7 13:39:26 2003 @@ -0,0 +1,217 @@ + /* + tea6420.o - i2c-driver for the tea6420 by SGS Thomson + + Copyright (C) 1998-2003 Michael Hunold + + The tea6420 is a bus controlled audio-matrix with 5 stereo inputs, + 4 stereo outputs and gain control for each output. + It is cascadable, i.e. it can be found at the adresses 0x98 + and 0x9a on the i2c-bus. + + For detailed informations download the specifications directly + from SGS Thomson at http://www.st.com + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "tea6420.h" + +static int debug = 0; /* insmod parameter */ +MODULE_PARM(debug,"i"); +#define dprintk if (debug) printk + +/* addresses to scan, found only at 0x4c and/or 0x4d (7-Bit) */ +static unsigned short normal_i2c[] = {I2C_TEA6420_1, I2C_TEA6420_2, I2C_CLIENT_END}; +static unsigned short normal_i2c_range[] = {I2C_CLIENT_END}; + +/* magic definition of all other variables and things */ +I2C_CLIENT_INSMOD; + +static struct i2c_driver driver; + +/* unique ID allocation */ +static int tea6420_id = 0; + +/* make a connection between the input 'i' and the output 'o' + with gain 'g' for the tea6420-client 'client' (note: i = 6 means 'mute') */ +static int tea6420_switch(struct i2c_client *client, int i, int o, int g) +{ + u8 byte = 0; + + int result = 0; + + dprintk("tea6420.o: tea6420_switch: adr:0x%02x, i:%d, o:%d, g:%d\n",client->addr,i,o,g); + + /* check if the paramters are valid */ + if ( i < 1 || i > 6 || o < 1 || o > 4 || g < 0 || g > 6 || g%2 != 0 ) + return -1; + + byte = ((o-1)<<5); + byte |= (i-1); + + /* to understand this, have a look at the tea6420-specs (p.5) */ + switch(g) { + case 0: + byte |= (3<<3); + break; + case 2: + byte |= (2<<3); + break; + case 4: + byte |= (1<<3); + break; + case 6: + break; + } + + /* fixme?: 1 != ... => 0 != */ + if ( 0 != (result = i2c_smbus_write_byte(client,byte))) { + printk("tea6402:%d\n",result); + dprintk(KERN_ERR "tea6420.o: could not switch, result:%d\n",result); + return -EFAULT; + } + + return 0; +} + +/* this function is called by i2c_probe */ +static int tea6420_detect(struct i2c_adapter *adapter, int address, unsigned short flags, int kind) +{ + struct i2c_client *client; + int err = 0, i = 0; + + /* let's see whether this adapter can support what we need */ + if ( 0 == i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WRITE_BYTE)) { + return 0; + } + + /* allocate memory for client structure */ + client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); + if (0 == client) { + return -ENOMEM; + } + + /* fill client structure */ + sprintf(client->dev.name,"tea6420 (0x%02x)", address); + client->id = tea6420_id++; + client->flags = 0; + client->addr = address; + client->adapter = adapter; + client->driver = &driver; + i2c_set_clientdata(client, NULL); + + /* tell the i2c layer a new client has arrived */ + if (0 != (err = i2c_attach_client(client))) { + kfree(client); + return err; + } + + /* set initial values: set "mute"-input to all outputs at gain 0 */ + err = 0; + for(i = 1; i < 5; i++) { + err += tea6420_switch(client, 6, i, 0); + } + if( 0 != err) { + printk("tea6420.o: could not initialize chipset. continuing anyway.\n"); + } + + printk("tea6420.o: detected @ 0x%02x on adapter %s\n",2*address,&client->adapter->dev.name[0]); + + return 0; +} + +static int tea6420_attach(struct i2c_adapter *adapter) +{ + /* let's see whether this is a know adapter we can attach to */ + if( adapter->id != I2C_ALGO_SAA7146 ) { + dprintk("tea6420.o: refusing to probe on unknown adapter [name='%s',id=0x%x]\n",adapter->dev.name,adapter->id); + return -ENODEV; + } + + return i2c_probe(adapter,&addr_data,&tea6420_detect); +} + +static int tea6420_detach(struct i2c_client *client) +{ + int err = 0; + + if ( 0 != (err = i2c_detach_client(client))) { + printk("tea6420.o: Client deregistration failed, client not detached.\n"); + return err; + } + + kfree(client); + + return 0; +} + +static int tea6420_command(struct i2c_client *client, unsigned int cmd, void* arg) +{ + struct tea6420_multiplex *a = (struct tea6420_multiplex*)arg; + int result = 0; + + switch (cmd) { + case TEA6420_SWITCH: { + result = tea6420_switch(client,a->in,a->out,a->gain); + break; + } + default: { + return -ENOIOCTLCMD; + } + } + + if ( 0 != result ) + return result; + + return 0; +} + +static struct i2c_driver driver = { +#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,54) + .owner = THIS_MODULE, +#endif + .name = "tea6420 driver", + .id = I2C_DRIVERID_TEA6420, + .flags = I2C_DF_NOTIFY, + .attach_adapter = tea6420_attach, + .detach_client = tea6420_detach, + .command = tea6420_command, +}; + +static int tea6420_init_module(void) +{ + i2c_add_driver(&driver); + return 0; +} + +static void tea6420_cleanup_module(void) +{ + i2c_del_driver(&driver); +} + +module_init(tea6420_init_module); +module_exit(tea6420_cleanup_module); + +MODULE_AUTHOR("Michael Hunold "); +MODULE_DESCRIPTION("tea6420 driver"); +MODULE_LICENSE("GPL"); diff -Nru a/drivers/media/video/tea6420.h b/drivers/media/video/tea6420.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/drivers/media/video/tea6420.h Mon Apr 7 13:17:33 2003 @@ -0,0 +1,17 @@ +#ifndef __INCLUDED_TEA6420__ +#define __INCLUDED_TEA6420__ + +/* possible addresses */ +#define I2C_TEA6420_1 0x4c +#define I2C_TEA6420_2 0x4d + +struct tea6420_multiplex +{ + int in; /* input of audio switch */ + int out; /* output of audio switch */ + int gain; /* gain of connection */ +}; + +#define TEA6420_SWITCH _IOW('v',1,struct tea6420_multiplex) + +#endif diff -Nru a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c --- a/drivers/mtd/mtdblock.c Mon Apr 7 06:36:32 2003 +++ b/drivers/mtd/mtdblock.c Tue Apr 8 12:33:09 2003 @@ -388,7 +388,7 @@ struct mtdblk_dev *mtdblk; unsigned int res; - while ((req = elv_next_request(&mtd_queue) != NULL) { + while ((req = elv_next_request(&mtd_queue)) != NULL) { struct mtdblk_dev **p = req->rq_disk->private_data; spin_unlock_irq(mtd_queue.queue_lock); mtdblk = *p; diff -Nru a/drivers/net/3c59x.c b/drivers/net/3c59x.c --- a/drivers/net/3c59x.c Wed Apr 2 22:51:21 2003 +++ b/drivers/net/3c59x.c Tue Apr 8 04:25:37 2003 @@ -479,11 +479,12 @@ int drv_flags; int io_size; } vortex_info_tbl[] __devinitdata = { -#define EISA_TBL_OFFSET 0 /* Offset of this entry for vortex_eisa_init */ {"3c590 Vortex 10Mbps", PCI_USES_IO|PCI_USES_MASTER, IS_VORTEX, 32, }, +#define EISA_3C592_OFFSET 1 /* Offset of this entry for vortex_eisa_init */ {"3c592 EISA 10Mbps Demon/Vortex", /* AKPM: from Don's 3c59x_cb.c 0.49H */ PCI_USES_IO|PCI_USES_MASTER, IS_VORTEX, 32, }, +#define EISA_3C597_OFFSET 2 /* Offset of this entry for vortex_eisa_init */ {"3c597 EISA Fast Demon/Vortex", /* AKPM: from Don's 3c59x_cb.c 0.49H */ PCI_USES_IO|PCI_USES_MASTER, IS_VORTEX, 32, }, {"3c595 Vortex 100baseTx", @@ -947,8 +948,8 @@ #ifdef CONFIG_EISA static struct eisa_device_id vortex_eisa_ids[] = { - { "TCM5920" }, - { "TCM5970" }, + { "TCM5920", EISA_3C592_OFFSET }, + { "TCM5970", EISA_3C597_OFFSET }, { "" } }; @@ -976,7 +977,7 @@ return -EBUSY; if (vortex_probe1(device, ioaddr, inw(ioaddr + 0xC88) >> 12, - EISA_TBL_OFFSET, vortex_cards_found)) { + edev->id.driver_data, vortex_cards_found)) { release_region (ioaddr, VORTEX_TOTAL_SIZE); return -ENODEV; } @@ -1018,10 +1019,6 @@ { int eisa_found = 0; int orig_cards_found = vortex_cards_found; - - /* Now check all slots of the EISA bus. */ - if (!EISA_bus) - return 0; #ifdef CONFIG_EISA if (eisa_driver_register (&vortex_eisa_driver) >= 0) { diff -Nru a/drivers/net/8139cp.c b/drivers/net/8139cp.c --- a/drivers/net/8139cp.c Mon Oct 28 21:14:42 2002 +++ b/drivers/net/8139cp.c Mon Apr 7 00:03:41 2003 @@ -826,7 +826,7 @@ * Otherwise we could race with the device. */ first_eor = eor; - first_len = skb->len - skb->data_len; + first_len = skb_headlen(skb); first_mapping = pci_map_single(cp->pdev, skb->data, first_len, PCI_DMA_TODEVICE); cp->tx_skb[entry].skb = skb; diff -Nru a/drivers/net/acenic.c b/drivers/net/acenic.c --- a/drivers/net/acenic.c Tue Feb 25 09:56:33 2003 +++ b/drivers/net/acenic.c Mon Apr 7 00:03:41 2003 @@ -2829,7 +2829,7 @@ int i, len = 0; mapping = ace_map_tx_skb(ap, skb, NULL, idx); - flagsize = ((skb->len - skb->data_len) << 16); + flagsize = (skb_headlen(skb) << 16); if (skb->ip_summed == CHECKSUM_HW) flagsize |= BD_FLG_TCP_UDP_SUM; #if ACENIC_DO_VLAN diff -Nru a/drivers/net/appletalk/cops.c b/drivers/net/appletalk/cops.c --- a/drivers/net/appletalk/cops.c Thu Jan 16 11:15:45 2003 +++ b/drivers/net/appletalk/cops.c Fri Apr 4 09:35:34 2003 @@ -801,7 +801,7 @@ lp->stats.rx_dropped++; while(pkt_len--) /* Discard packet */ inb(ioaddr); - restore_flags(flags); + spin_unlock_irqrestore(&lp->lock, flags); return; } skb->dev = dev; diff -Nru a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c --- a/drivers/net/appletalk/ltpc.c Thu Nov 21 09:59:34 2002 +++ b/drivers/net/appletalk/ltpc.c Fri Apr 4 09:31:37 2003 @@ -213,6 +213,7 @@ #include #include #include +#include #include #include #include @@ -235,6 +236,9 @@ /* our stuff */ #include "ltpc.h" +static spinlock_t txqueue_lock = SPIN_LOCK_UNLOCKED; +static spinlock_t mbox_lock = SPIN_LOCK_UNLOCKED; + /* function prototypes */ static int do_read(struct net_device *dev, void *cbuf, int cbuflen, void *dbuf, int dbuflen); @@ -283,17 +287,17 @@ { unsigned long flags; qel->next = NULL; - save_flags(flags); - cli(); + + spin_lock_irqsave(&txqueue_lock, flags); if (xmQtl) { xmQtl->next = qel; } else { xmQhd = qel; } xmQtl = qel; - restore_flags(flags); + spin_unlock_irqrestore(&txqueue_lock, flags); - if (debug&DEBUG_LOWER) + if (debug & DEBUG_LOWER) printk("enqueued a 0x%02x command\n",qel->cbuf[0]); } @@ -302,18 +306,18 @@ unsigned long flags; int i; struct xmitQel *qel=NULL; - save_flags(flags); - cli(); + + spin_lock_irqsave(&txqueue_lock, flags); if (xmQhd) { qel = xmQhd; xmQhd = qel->next; if(!xmQhd) xmQtl = NULL; } - restore_flags(flags); + spin_unlock_irqrestore(&txqueue_lock, flags); - if ((debug&DEBUG_LOWER) && qel) { + if ((debug & DEBUG_LOWER) && qel) { int n; - printk("ltpc: dequeued command "); + printk(KERN_DEBUG "ltpc: dequeued command "); n = qel->cbuflen; if (n>100) n=100; for(i=0;icbuf[i]); @@ -352,14 +356,13 @@ unsigned long flags; int i; - save_flags(flags); - cli(); + spin_lock_irqsave(&mbox_lock, flags); for(i=1;i<16;i++) if(!mboxinuse[i]) { mboxinuse[i]=1; - restore_flags(flags); + spin_unlock_irqrestore(&mbox_lock, flags); return i; } - restore_flags(flags); + spin_unlock_irqrestore(&mbox_lock, flags); return 0; } @@ -503,16 +506,13 @@ int i; int base = dev->base_addr; - save_flags(flags); - cli(); + spin_lock_irqsave(&txqueue_lock, flags); if(QInIdle) { - restore_flags(flags); + spin_unlock_irqrestore(&txqueue_lock, flags); return; } QInIdle = 1; - - - restore_flags(flags); + spin_unlock_irqrestore(&txqueue_lock, flags); /* this tri-states the IRQ line */ (void) inb_p(base+6); @@ -531,17 +531,17 @@ switch(state) { case 0xfc: /* incoming command */ - if (debug&DEBUG_LOWER) printk("idle: fc\n"); + if (debug & DEBUG_LOWER) printk("idle: fc\n"); handlefc(dev); break; case 0xfd: /* incoming data */ - if(debug&DEBUG_LOWER) printk("idle: fd\n"); + if(debug & DEBUG_LOWER) printk("idle: fd\n"); handlefd(dev); break; case 0xf9: /* result ready */ - if (debug&DEBUG_LOWER) printk("idle: f9\n"); + if (debug & DEBUG_LOWER) printk("idle: f9\n"); if(!mboxinuse[0]) { mboxinuse[0] = 1; qels[0].cbuf = rescbuf; @@ -570,7 +570,7 @@ break; case 0xfa: /* waiting for command */ - if(debug&DEBUG_LOWER) printk("idle: fa\n"); + if(debug & DEBUG_LOWER) printk("idle: fa\n"); if (xmQhd) { q=deQ(); memcpy(ltdmacbuf,q->cbuf,q->cbuflen); @@ -608,7 +608,7 @@ break; case 0Xfb: /* data transfer ready */ - if(debug&DEBUG_LOWER) printk("idle: fb\n"); + if(debug & DEBUG_LOWER) printk("idle: fb\n"); if(q->QWrite) { memcpy(ltdmabuf,q->dbuf,q->dbuflen); handlewrite(dev); @@ -826,7 +826,7 @@ struct lt_init c; int ltflags; - if(debug&DEBUG_VERBOSE) printk("ltpc_ioctl called\n"); + if(debug & DEBUG_VERBOSE) printk("ltpc_ioctl called\n"); switch(cmd) { case SIOCSIFADDR: @@ -872,7 +872,7 @@ static int ltpc_hard_header (struct sk_buff *skb, struct net_device *dev, unsigned short type, void *daddr, void *saddr, unsigned len) { - if(debug&DEBUG_VERBOSE) + if(debug & DEBUG_VERBOSE) printk("ltpc_hard_header called for device %s\n", dev->name); return 0; @@ -914,7 +914,7 @@ del_timer(<pc_timer); - if(debug&DEBUG_VERBOSE) { + if(debug & DEBUG_VERBOSE) { if (!ltpc_poll_counter) { ltpc_poll_counter = 50; printk("ltpc poll is alive\n"); @@ -951,7 +951,7 @@ cbuf.length = skb->len; /* this is host order */ skb->h.raw=skb->data; - if(debug&DEBUG_UPPER) { + if(debug & DEBUG_UPPER) { printk("command "); for(i=0;i<6;i++) printk("%02x ",((unsigned char *)&cbuf)[i]); @@ -960,7 +960,7 @@ do_write(dev,&cbuf,sizeof(cbuf),skb->h.raw,skb->len); - if(debug&DEBUG_UPPER) { + if(debug & DEBUG_UPPER) { printk("sent %d ddp bytes\n",skb->len); for(i=0;ilen;i++) printk("%02x ",skb->h.raw[i]); printk("\n"); @@ -984,7 +984,7 @@ static int __init ltpc_probe_dma(int base) { int dma = 0; - int timeout; + unsigned long timeout; unsigned long f; if (!request_dma(1,"ltpc")) { @@ -1055,16 +1055,13 @@ { int err; int x=0,y=0; - int timeout; int autoirq; - unsigned long flags; unsigned long f; int portfound=0; + unsigned long timeout; SET_MODULE_OWNER(dev); - save_flags(flags); - /* probe for the I/O port address */ if (io != 0x240 && request_region(0x220,8,"ltpc")) { x = inb_p(0x220+6); @@ -1093,15 +1090,13 @@ } if(!portfound) { /* give up in despair */ - printk ("LocalTalk card not found; 220 = %02x, 240 = %02x.\n", - x,y); - restore_flags(flags); + printk(KERN_ERR "LocalTalk card not found; 220 = %02x, 240 = %02x.\n", x,y); return -1; } /* probe for the IRQ line */ if (irq < 2) { - unsigned long irq_mask, delay; + unsigned long irq_mask; irq_mask = probe_irq_on(); /* reset the interrupt line */ @@ -1109,14 +1104,11 @@ inb_p(io+7); /* trigger an interrupt (I hope) */ inb_p(io+6); - - delay = jiffies + HZ/50; - while (time_before(jiffies, delay)) ; + mdelay(2); autoirq = probe_irq_off(irq_mask); if (autoirq == 0) { - printk("ltpc: probe at %#x failed to detect IRQ line.\n", - io); + printk(KERN_ERR "ltpc: probe at %#x failed to detect IRQ line.\n", io); } else { irq = autoirq; @@ -1129,12 +1121,11 @@ if (ltdmabuf) ltdmacbuf = <dmabuf[800]; if (!ltdmabuf) { - printk("ltpc: mem alloc failed\n"); - restore_flags(flags); - return(-1); + printk(KERN_ERR "ltpc: mem alloc failed\n"); + return -1; } - if(debug&DEBUG_VERBOSE) { + if(debug & DEBUG_VERBOSE) { printk("ltdmabuf pointer %08lx\n",(unsigned long) ltdmabuf); } @@ -1142,8 +1133,10 @@ inb_p(io+1); inb_p(io+3); - timeout = jiffies+2*HZ/100; - while(time_before(jiffies, timeout)) ; /* hold it in reset for a coupla jiffies */ + + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(2*HZ/100); + inb_p(io+0); inb_p(io+2); inb_p(io+7); /* clear reset */ @@ -1152,12 +1145,9 @@ inb_p(io+5); /* enable dma */ inb_p(io+6); /* tri-state interrupt line */ - timeout = jiffies+100*HZ/100; + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(HZ); - while(time_before(jiffies, timeout)) { - /* wait for the card to complete initialization */ - } - /* now, figure out which dma channel we're using, unless it's already been specified */ /* well, 0 is a legal DMA channel, but the LTPC card doesn't @@ -1165,8 +1155,7 @@ if (dma == 0) { dma = ltpc_probe_dma(io); if (!dma) { /* no dma channel */ - printk("No DMA channel found on ltpc card.\n"); - restore_flags(flags); + printk(KERN_ERR "No DMA channel found on ltpc card.\n"); return -1; } } @@ -1174,9 +1163,9 @@ /* print out friendly message */ if(irq) - printk("Apple/Farallon LocalTalk-PC card at %03x, IR%d, DMA%d.\n",io,irq,dma); + printk(KERN_INFO "Apple/Farallon LocalTalk-PC card at %03x, IR%d, DMA%d.\n",io,irq,dma); else - printk("Apple/Farallon LocalTalk-PC card at %03x, DMA%d. Using polled mode.\n",io,dma); + printk(KERN_INFO "Apple/Farallon LocalTalk-PC card at %03x, DMA%d. Using polled mode.\n",io,dma); /* seems more logical to do this *after* probing the card... */ err = ltpc_init(dev); @@ -1202,20 +1191,25 @@ (void) inb_p(io+3); (void) inb_p(io+2); timeout = jiffies+100*HZ/100; + while(time_before(jiffies, timeout)) { - if( 0xf9 == inb_p(io+6)) break; + if( 0xf9 == inb_p(io+6)) + break; + schedule(); } - if(debug&DEBUG_VERBOSE) { + if(debug & DEBUG_VERBOSE) { printk("setting up timer and irq\n"); } - if (irq) { - /* grab it and don't let go :-) */ - (void) request_irq( irq, <pc_interrupt, 0, "ltpc", dev); + /* grab it and don't let go :-) */ + if (irq && request_irq( irq, <pc_interrupt, 0, "ltpc", dev) >= 0) + { (void) inb_p(io+7); /* enable interrupts from board */ (void) inb_p(io+7); /* and reset irq line */ } else { + if( irq ) + printk(KERN_ERR "ltpc: IRQ already in use, using polled mode.\n"); /* polled mode -- 20 times per second */ /* this is really, really slow... should it poll more often? */ init_timer(<pc_timer); @@ -1224,7 +1218,6 @@ ltpc_timer.expires = jiffies + 5; add_timer(<pc_timer); - restore_flags(flags); } return 0; @@ -1294,7 +1287,7 @@ printk(KERN_DEBUG "could not register Localtalk-PC device\n"); return result; } else { - if(debug&DEBUG_VERBOSE) printk("0 from register_netdev\n"); + if(debug & DEBUG_VERBOSE) printk("0 from register_netdev\n"); return 0; } } @@ -1306,7 +1299,7 @@ ltpc_timer.data = 0; /* signal the poll routine that we're done */ - if(debug&DEBUG_VERBOSE) printk("freeing irq\n"); + if(debug & DEBUG_VERBOSE) printk("freeing irq\n"); if(dev_ltpc.irq) { free_irq(dev_ltpc.irq,&dev_ltpc); @@ -1316,7 +1309,7 @@ if(del_timer(<pc_timer)) { /* either the poll was never started, or a poll is in process */ - if(debug&DEBUG_VERBOSE) printk("waiting\n"); + if(debug & DEBUG_VERBOSE) printk("waiting\n"); /* if it's in process, wait a bit for it to finish */ timeout = jiffies+HZ; add_timer(<pc_timer); @@ -1327,31 +1320,31 @@ } } - if(debug&DEBUG_VERBOSE) printk("freeing dma\n"); + if(debug & DEBUG_VERBOSE) printk("freeing dma\n"); if(dev_ltpc.dma) { free_dma(dev_ltpc.dma); dev_ltpc.dma = 0; } - if(debug&DEBUG_VERBOSE) printk("freeing ioaddr\n"); + if(debug & DEBUG_VERBOSE) printk("freeing ioaddr\n"); if(dev_ltpc.base_addr) { release_region(dev_ltpc.base_addr,8); dev_ltpc.base_addr = 0; } - if(debug&DEBUG_VERBOSE) printk("free_pages\n"); + if(debug & DEBUG_VERBOSE) printk("free_pages\n"); free_pages( (unsigned long) ltdmabuf, get_order(1000)); ltdmabuf=NULL; ltdmacbuf=NULL; - if(debug&DEBUG_VERBOSE) printk("unregister_netdev\n"); + if(debug & DEBUG_VERBOSE) printk("unregister_netdev\n"); unregister_netdev(&dev_ltpc); - if(debug&DEBUG_VERBOSE) printk("returning from cleanup_module\n"); + if(debug & DEBUG_VERBOSE) printk("returning from cleanup_module\n"); } module_exit(ltpc_cleanup); diff -Nru a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c --- a/drivers/net/arcnet/arcnet.c Sun Sep 29 15:26:12 2002 +++ b/drivers/net/arcnet/arcnet.c Fri Apr 4 09:43:08 2003 @@ -80,6 +80,7 @@ null_prepare_tx }; +static spinlock_t arcnet_lock = SPIN_LOCK_UNLOCKED; /* Exported function prototypes */ int arcnet_debug = ARCNET_DEBUG; @@ -186,10 +187,7 @@ void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc) { int i; - unsigned long flags; - save_flags(flags); - cli(); printk(KERN_DEBUG "%6s: skb dump (%s) follows:", dev->name, desc); for (i = 0; i < skb->len; i++) { if (i % 16 == 0) @@ -197,7 +195,6 @@ printk("%02X ", ((u_char *) skb->data)[i]); } printk("\n"); - restore_flags(flags); } EXPORT_SYMBOL(arcnet_dump_skb); @@ -215,10 +212,11 @@ unsigned long flags; static uint8_t buf[512]; - save_flags(flags); - cli(); - + /* hw.copy_from_card expects IRQ context so take the IRQ lock + to keep it single threaded */ + spin_lock_irqsave(&arcnet_lock, flags); lp->hw.copy_from_card(dev, bufnum, 0, buf, 512); + spin_unlock_irqrestore(&arcnet_lock, flags); /* if the offset[0] byte is nonzero, this is a 256-byte packet */ length = (buf[2] ? 256 : 512); @@ -231,7 +229,6 @@ } printk("\n"); - restore_flags(flags); } EXPORT_SYMBOL(arcnet_dump_packet); @@ -670,9 +667,7 @@ int status = ASTATUS(); char *msg; - save_flags(flags); - cli(); - + spin_lock_irqsave(&arcnet_lock, flags); if (status & TXFREEflag) { /* transmit _DID_ finish */ msg = " - missed IRQ?"; } else { @@ -687,8 +682,8 @@ AINTMASK(0); lp->intmask |= TXFREEflag; AINTMASK(lp->intmask); - - restore_flags(flags); + + spin_unlock_irqrestore(&arcnet_lock, flags); if (jiffies - lp->last_timeout > 10*HZ) { BUGMSG(D_EXTRA, "tx timed out%s (status=%Xh, intmask=%Xh, dest=%02Xh)\n", @@ -714,17 +709,14 @@ BUGMSG(D_DURING, "\n"); - if (dev == NULL) { - BUGMSG(D_DURING, "arcnet: irq %d for unknown device.\n", irq); - return; - } BUGMSG(D_DURING, "in arcnet_interrupt\n"); + spin_lock(&arcnet_lock); + lp = (struct arcnet_local *) dev->priv; - if (!lp) { - BUGMSG(D_DURING, "arcnet: irq ignored due to missing lp.\n"); - return; - } + if (!lp) + BUG(); + /* * RESET flag was enabled - if device is not running, we must clear it right * away (but nothing else). @@ -733,6 +725,7 @@ if (ASTATUS() & RESETflag) ACOMMAND(CFLAGScmd | RESETclear); AINTMASK(0); + spin_unlock(&arcnet_lock); return; } @@ -899,6 +892,8 @@ AINTMASK(0); udelay(1); AINTMASK(lp->intmask); + + spin_unlock(&arcnet_lock); } diff -Nru a/drivers/net/e100/e100_main.c b/drivers/net/e100/e100_main.c --- a/drivers/net/e100/e100_main.c Sun Mar 16 21:00:50 2003 +++ b/drivers/net/e100/e100_main.c Mon Apr 7 00:03:41 2003 @@ -2199,10 +2199,10 @@ (tcb->tbd_ptr)->tbd_buf_addr = cpu_to_le32(pci_map_single(bdp->pdev, skb->data, - (skb->len - skb->data_len), + skb_headlen(skb), PCI_DMA_TODEVICE)); (tcb->tbd_ptr)->tbd_buf_cnt = - cpu_to_le16(skb->len - skb->data_len); + cpu_to_le16(skb_headlen(skb)); for (i = 0; i < skb_shinfo(skb)->nr_frags; i++, tbd_arr_ptr++, frag++) { diff -Nru a/drivers/net/hamradio/scc.c b/drivers/net/hamradio/scc.c --- a/drivers/net/hamradio/scc.c Mon Jan 27 13:53:43 2003 +++ b/drivers/net/hamradio/scc.c Mon Apr 7 12:08:53 2003 @@ -235,13 +235,14 @@ /* These provide interrupt save 2-step access to the Z8530 registers */ +static spinlock_t iolock; /* Guards paired accesses */ + static inline unsigned char InReg(io_port port, unsigned char reg) { unsigned long flags; unsigned char r; - - save_flags(flags); - cli(); + + spin_lock_irqsave(&iolock, flags); #ifdef SCC_LDELAY Outb(port, reg); udelay(SCC_LDELAY); @@ -251,16 +252,15 @@ Outb(port, reg); r=Inb(port); #endif - restore_flags(flags); + spin_unlock_irqrestore(&iolock, flags); return r; } static inline void OutReg(io_port port, unsigned char reg, unsigned char val) { unsigned long flags; - - save_flags(flags); - cli(); + + spin_lock_irqsave(&iolock, flags); #ifdef SCC_LDELAY Outb(port, reg); udelay(SCC_LDELAY); Outb(port, val); udelay(SCC_LDELAY); @@ -268,7 +268,7 @@ Outb(port, reg); Outb(port, val); #endif - restore_flags(flags); + spin_unlock_irqrestore(&iolock, flags); } static inline void wr(struct scc_channel *scc, unsigned char reg, @@ -295,9 +295,7 @@ { unsigned long flags; - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); if (scc->tx_buff != NULL) { dev_kfree_skb(scc->tx_buff); @@ -307,7 +305,7 @@ while (skb_queue_len(&scc->tx_queue)) dev_kfree_skb(skb_dequeue(&scc->tx_queue)); - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); } @@ -609,6 +607,7 @@ static void scc_isr_dispatch(struct scc_channel *scc, int vector) { + spin_lock(&scc->lock); switch (vector & VECTOR_MASK) { case TXINT: scc_txint(scc); break; @@ -616,6 +615,7 @@ case RXINT: scc_rxint(scc); break; case SPINT: scc_spint(scc); break; } + spin_unlock(&scc->lock); } /* If the card has a latch for the interrupt vector (like the PA0HZP card) @@ -722,12 +722,13 @@ static inline void set_speed(struct scc_channel *scc) { - disable_irq(scc->irq); + unsigned long flags; + spin_lock_irqsave(&scc->lock, flags); if (scc->modem.speed > 0) /* paranoia... */ set_brg(scc, (unsigned) (scc->clock / (scc->modem.speed * 64)) - 2); - - enable_irq(scc->irq); + + spin_unlock_irqrestore(&scc->lock, flags); } @@ -988,14 +989,8 @@ /* ----> SCC timer interrupt handler and friends. <---- */ -static void scc_start_tx_timer(struct scc_channel *scc, void (*handler)(unsigned long), unsigned long when) +static void __scc_start_tx_timer(struct scc_channel *scc, void (*handler)(unsigned long), unsigned long when) { - unsigned long flags; - - - save_flags(flags); - cli(); - del_timer(&scc->tx_t); if (when == 0) @@ -1009,17 +1004,22 @@ scc->tx_t.expires = jiffies + (when*HZ)/100; add_timer(&scc->tx_t); } +} + +static void scc_start_tx_timer(struct scc_channel *scc, void (*handler)(unsigned long), unsigned long when) +{ + unsigned long flags; - restore_flags(flags); + spin_lock_irqsave(&scc->lock, flags); + __scc_start_tx_timer(scc, handler, when); + spin_unlock_irqrestore(&scc->lock, flags); } static void scc_start_defer(struct scc_channel *scc) { unsigned long flags; - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); del_timer(&scc->tx_wdog); if (scc->kiss.maxdefer != 0 && scc->kiss.maxdefer != TIMER_OFF) @@ -1029,16 +1029,14 @@ scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxdefer; add_timer(&scc->tx_wdog); } - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); } static void scc_start_maxkeyup(struct scc_channel *scc) { unsigned long flags; - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); del_timer(&scc->tx_wdog); if (scc->kiss.maxkeyup != 0 && scc->kiss.maxkeyup != TIMER_OFF) @@ -1048,8 +1046,7 @@ scc->tx_wdog.expires = jiffies + HZ*scc->kiss.maxkeyup; add_timer(&scc->tx_wdog); } - - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); } /* @@ -1189,13 +1186,10 @@ struct scc_channel *scc = (struct scc_channel *) channel; unsigned long flags; - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); del_timer(&scc->tx_wdog); scc_key_trx(scc, TX_OFF); - - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); if (scc->stat.tx_state == TXS_TIMEOUT) /* we had a timeout? */ { @@ -1242,9 +1236,7 @@ struct scc_channel *scc = (struct scc_channel *) channel; unsigned long flags; - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); /* * let things settle down before we start to * accept new data. @@ -1259,7 +1251,7 @@ cl(scc, R15, TxUIE); /* count it. */ OutReg(scc->ctrl, R0, RES_Tx_P); - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); scc->stat.txerrs++; scc->stat.tx_state = TXS_TIMEOUT; @@ -1289,13 +1281,10 @@ static void scc_init_timer(struct scc_channel *scc) { unsigned long flags; - - save_flags(flags); - cli(); - - scc->stat.tx_state = TXS_IDLE; - restore_flags(flags); + spin_lock_irqsave(&scc->lock, flags); + scc->stat.tx_state = TXS_IDLE; + spin_unlock_irqrestore(&scc->lock, flags); } @@ -1414,9 +1403,7 @@ struct scc_channel *scc = (struct scc_channel *) channel; unsigned long flags; - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); del_timer(&scc->tx_wdog); scc_key_trx(scc, TX_OFF); wr(scc, R6, 0); @@ -1425,7 +1412,7 @@ Outb(scc->ctrl,RES_EXT_INT); netif_wake_queue(scc->dev); - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); } @@ -1434,9 +1421,7 @@ { unsigned long flags; - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); netif_stop_queue(scc->dev); scc_discard_buffers(scc); @@ -1460,7 +1445,7 @@ Outb(scc->ctrl,RES_EXT_INT); scc_key_trx(scc, TX_ON); - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); } /* ******************************************************************* */ @@ -1508,16 +1493,14 @@ /* Reset and pre-init Z8530 */ - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); + Outb(scc->ctrl, 0); OutReg(scc->ctrl,R9,FHWRES); /* force hardware reset */ udelay(100); /* give it 'a bit' more time than required */ wr(scc, R2, chip*16); /* interrupt vector */ wr(scc, R9, VIS); /* vector includes status */ - - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); } @@ -1548,6 +1531,8 @@ dev->priv = (void *) scc; dev->init = scc_net_init; + spin_lock_init(&scc->lock); + if ((addev? register_netdevice(dev) : register_netdev(dev)) != 0) { kfree(dev); return -EIO; @@ -1625,17 +1610,14 @@ netif_stop_queue(dev); - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); Outb(scc->ctrl,0); /* Make sure pointer is written */ wr(scc,R1,0); /* disable interrupts */ wr(scc,R3,0); + spin_unlock_irqrestore(&scc->lock, flags); - del_timer(&scc->tx_t); - del_timer(&scc->tx_wdog); - - restore_flags(flags); + del_timer_sync(&scc->tx_t); + del_timer_sync(&scc->tx_wdog); scc_discard_buffers(scc); @@ -1689,9 +1671,8 @@ return 0; } - save_flags(flags); - cli(); - + spin_lock_irqsave(&scc->lock, flags); + if (skb_queue_len(&scc->tx_queue) > scc->dev->tx_queue_len) { struct sk_buff *skb_del; skb_del = skb_dequeue(&scc->tx_queue); @@ -1710,12 +1691,11 @@ if(scc->stat.tx_state == TXS_IDLE || scc->stat.tx_state == TXS_IDLE2) { scc->stat.tx_state = TXS_BUSY; if (scc->kiss.fulldup == KISS_DUPLEX_HALF) - scc_start_tx_timer(scc, t_dwait, scc->kiss.waittime); + __scc_start_tx_timer(scc, t_dwait, scc->kiss.waittime); else - scc_start_tx_timer(scc, t_dwait, 0); + __scc_start_tx_timer(scc, t_dwait, 0); } - - restore_flags(flags); + spin_unlock_irqrestore(&scc->lock, flags); return 0; } @@ -1785,19 +1765,23 @@ hwcfg.clock = SCC_DEFAULT_CLOCK; #ifndef SCC_DONT_CHECK - disable_irq(hwcfg.irq); - - check_region(scc->ctrl, 1); - Outb(hwcfg.ctrl_a, 0); - OutReg(hwcfg.ctrl_a, R9, FHWRES); - udelay(100); - OutReg(hwcfg.ctrl_a,R13,0x55); /* is this chip really there? */ - udelay(5); - if (InReg(hwcfg.ctrl_a,R13) != 0x55) + if(request_region(scc->ctrl, 1, "scc-probe")) + { + disable_irq(hwcfg.irq); + Outb(hwcfg.ctrl_a, 0); + OutReg(hwcfg.ctrl_a, R9, FHWRES); + udelay(100); + OutReg(hwcfg.ctrl_a,R13,0x55); /* is this chip really there? */ + udelay(5); + + if (InReg(hwcfg.ctrl_a,R13) != 0x55) + found = 0; + enable_irq(hwcfg.irq); + release_region(scc->ctrl, 1); + } + else found = 0; - - enable_irq(hwcfg.irq); #endif if (found) @@ -2111,6 +2095,8 @@ printk(banner); + spin_lock_init(&iolock); + sprintf(devname,"%s0", SCC_DriverName); result = scc_net_setup(SCC_Info, devname, 0); @@ -2127,20 +2113,19 @@ static void __exit scc_cleanup_driver(void) { - unsigned long flags; io_port ctrl; int k; struct scc_channel *scc; - save_flags(flags); - cli(); - if (Nchips == 0) { unregister_netdev(SCC_Info[0].dev); kfree(SCC_Info[0].dev); } + /* Guard against chip prattle */ + local_irq_disable(); + for (k = 0; k < Nchips; k++) if ( (ctrl = SCC_ctrl[k].chan_A) ) { @@ -2149,6 +2134,13 @@ udelay(50); } + /* To unload the port must be closed so no real IRQ pending */ + for (k=0; k < NR_IRQS ; k++) + if (Ivec[k].used) free_irq(k, NULL); + + local_irq_enable(); + + /* Now clean up */ for (k = 0; k < Nchips*2; k++) { scc = &SCC_Info[k]; @@ -2164,13 +2156,9 @@ } } - for (k=0; k < NR_IRQS ; k++) - if (Ivec[k].used) free_irq(k, NULL); if (Vector_Latch) release_region(Vector_Latch, 1); - - restore_flags(flags); proc_net_remove("z8530drv"); } diff -Nru a/drivers/net/hamradio/yam.c b/drivers/net/hamradio/yam.c --- a/drivers/net/hamradio/yam.c Tue Feb 11 05:51:13 2003 +++ b/drivers/net/hamradio/yam.c Fri Apr 4 09:12:23 2003 @@ -722,7 +722,6 @@ int counter = 100; int i; - sti(); for (i = 0; i < NR_PORTS; i++) { yp = &yam_ports[i]; @@ -768,7 +767,6 @@ off_t pos = 0; off_t begin = 0; - cli(); for (i = 0; i < NR_PORTS; i++) { if (yam_ports[i].iobase == 0 || yam_ports[i].irq == 0) @@ -802,8 +800,6 @@ if (pos > offset + length) break; } - - sti(); *start = buffer + (offset - begin); len -= (offset - begin); diff -Nru a/drivers/net/lp486e.c b/drivers/net/lp486e.c --- a/drivers/net/lp486e.c Fri Jan 10 12:05:11 2003 +++ b/drivers/net/lp486e.c Mon Apr 7 11:14:53 2003 @@ -56,7 +56,7 @@ All other communication is through memory! */ -#define SLOW_DOWN_IO udelay(5); +#define SLOW_DOWN_IO udelay(5) #include #include @@ -195,7 +195,7 @@ typedef u32 phys_addr; static inline phys_addr -va_to_pa(volatile void *x) { +va_to_pa(void *x) { return x ? virt_to_bus(x) : I596_NULL; } @@ -341,14 +341,15 @@ unsigned long tdr_stat; /* directly follows tdr */ int last_restart; - volatile struct i596_rbd *rbd_list; - volatile struct i596_rbd *rbd_tail; - volatile struct i596_rfd *rx_tail; - volatile struct i596_cmd *cmd_tail; - volatile struct i596_cmd *cmd_head; + struct i596_rbd *rbd_list; + struct i596_rbd *rbd_tail; + struct i596_rfd *rx_tail; + struct i596_cmd *cmd_tail; + struct i596_cmd *cmd_head; int cmd_backlog; unsigned long last_cmd; struct net_device_stats stats; + spinlock_t cmd_lock; }; static char init_setup[14] = { @@ -386,7 +387,7 @@ static int i596_timeout(struct net_device *dev, char *msg, int ct) { - volatile struct i596_private *lp; + struct i596_private *lp; int boguscnt = ct; lp = (struct i596_private *) dev->priv; @@ -398,13 +399,14 @@ return 1; } udelay(5); + barrier(); } return 0; } static inline int init_rx_bufs(struct net_device *dev, int num) { - volatile struct i596_private *lp; + struct i596_private *lp; struct i596_rfd *rfd; int i; // struct i596_rbd *rbd; @@ -517,8 +519,8 @@ /* selftest or dump */ static void i596_port_do(struct net_device *dev, int portcmd, char *cmdname) { - volatile struct i596_private *lp = dev->priv; - volatile u16 *outp; + struct i596_private *lp = dev->priv; + u16 *outp; int i, m; memset((void *)&(lp->dump), 0, sizeof(struct i596_dump)); @@ -541,7 +543,7 @@ static int i596_scp_setup(struct net_device *dev) { - volatile struct i596_private *lp = dev->priv; + struct i596_private *lp = dev->priv; int boguscnt; /* Setup SCP, ISCP, SCB */ @@ -608,6 +610,7 @@ return 1; } udelay(5); + barrier(); } /* I find here boguscnt==100, so no delay was required. */ @@ -616,7 +619,7 @@ static int init_i596(struct net_device *dev) { - volatile struct i596_private *lp; + struct i596_private *lp; if (i596_scp_setup(dev)) return 1; @@ -641,6 +644,8 @@ lp->scb.command = RX_START; CA(); + barrier(); + if (lp->scb.command && i596_timeout(dev, "Receive Unit start", 100)) return 1; @@ -649,7 +654,7 @@ /* Receive a single frame */ static inline int -i596_rx_one(struct net_device *dev, volatile struct i596_private *lp, +i596_rx_one(struct net_device *dev, struct i596_private *lp, struct i596_rfd *rfd, int *frames) { if (rfd->stat & RFD_STAT_OK) { @@ -703,14 +708,14 @@ static int i596_rx(struct net_device *dev) { - volatile struct i596_private *lp = (struct i596_private *) dev->priv; + struct i596_private *lp = (struct i596_private *) dev->priv; struct i596_rfd *rfd; int frames = 0; while (1) { rfd = pa_to_va(lp->scb.pa_rfd); if (!rfd) { - printk("i596_rx: NULL rfd?\n"); + printk(KERN_ERR "i596_rx: NULL rfd?\n"); return 0; } #if 1 @@ -725,6 +730,7 @@ lp->rx_tail->cmd = 0; lp->rx_tail = rfd; lp->scb.pa_rfd = rfd->pa_next; + barrier(); } return frames; @@ -732,7 +738,7 @@ static void i596_cleanup_cmd(struct net_device *dev) { - volatile struct i596_private *lp; + struct i596_private *lp; struct i596_cmd *cmd; lp = (struct i596_private *) dev->priv; @@ -770,6 +776,7 @@ break; } } + barrier(); } if (lp->scb.command && i596_timeout(dev, "i596_cleanup_cmd", 100)) @@ -778,9 +785,7 @@ lp->scb.pa_cmd = va_to_pa(lp->cmd_head); } -static inline void -i596_reset(struct net_device *dev, - volatile struct i596_private *lp, int ioaddr) { +static void i596_reset(struct net_device *dev, struct i596_private *lp, int ioaddr) { if (lp->scb.command && i596_timeout(dev, "i596_reset", 100)) ; @@ -789,7 +794,8 @@ lp->scb.command = CUC_ABORT | RX_ABORT; CA(); - + barrier(); + /* wait for shutdown */ if (lp->scb.command && i596_timeout(dev, "i596_reset(2)", 400)) ; @@ -803,7 +809,7 @@ } static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd) { - volatile struct i596_private *lp = dev->priv; + struct i596_private *lp = dev->priv; int ioaddr = dev->base_addr; unsigned long flags; @@ -811,8 +817,8 @@ cmd->command |= (CMD_EOL | CMD_INTR); cmd->pa_next = I596_NULL; - save_flags(flags); - cli(); + spin_lock_irqsave(&lp->cmd_lock, flags); + if (lp->cmd_head) { lp->cmd_tail->pa_next = va_to_pa(cmd); } else { @@ -827,64 +833,45 @@ lp->cmd_backlog++; lp->cmd_head = pa_to_va(lp->scb.pa_cmd); - restore_flags(flags); + spin_unlock_irqrestore(&lp->cmd_lock, flags); if (lp->cmd_backlog > 16) { int tickssofar = jiffies - lp->last_cmd; - if (tickssofar < 25) return; + if (tickssofar < HZ/4) + return; - printk("%s: command unit timed out, status resetting.\n", - dev->name); + printk(KERN_WARNING "%s: command unit timed out, status resetting.\n", dev->name); i596_reset(dev, lp, ioaddr); } } -static int -i596_open(struct net_device *dev) { +static int i596_open(struct net_device *dev) +{ int i; i = request_irq(dev->irq, &i596_interrupt, SA_SHIRQ, dev->name, dev); if (i) { - printk("%s: IRQ %d not free\n", dev->name, dev->irq); + printk(KERN_ERR "%s: IRQ %d not free\n", dev->name, dev->irq); return i; } if ((i = init_rx_bufs(dev, RX_RING_SIZE)) < RX_RING_SIZE) - printk("%s: only able to allocate %d receive buffers\n", - dev->name, i); + printk(KERN_ERR "%s: only able to allocate %d receive buffers\n", dev->name, i); if (i < 4) { -// release buffers free_irq(dev->irq, dev); return -EAGAIN; } - netif_start_queue(dev); - init_i596(dev); - return 0; /* Always succeed */ } -static int -i596_start_xmit (struct sk_buff *skb, struct net_device *dev) { - volatile struct i596_private *lp = dev->priv; +static int i596_start_xmit (struct sk_buff *skb, struct net_device *dev) { + struct i596_private *lp = dev->priv; struct tx_cmd *tx_cmd; short length; - /* If some higher level thinks we've missed a tx-done interrupt - we are passed NULL. n.b. dev_tint handles the cli()/sti() - itself. */ - if (skb == NULL) { - printk ("What about dev_tint\n"); - /* dev_tint(dev); */ - return 0; - } - - /* shouldn't happen */ - if (skb->len <= 0) - return 0; - length = skb->len; if (length < ETH_ZLEN) { @@ -896,14 +883,10 @@ dev->trans_start = jiffies; - tx_cmd = (struct tx_cmd *) - kmalloc ((sizeof (struct tx_cmd) - + sizeof (struct i596_tbd)), GFP_ATOMIC); + tx_cmd = (struct tx_cmd *) kmalloc ((sizeof (struct tx_cmd) + sizeof (struct i596_tbd)), GFP_ATOMIC); if (tx_cmd == NULL) { - printk ("%s: i596_xmit Memory squeeze, dropping packet.\n", - dev->name); + printk(KERN_WARNING "%s: i596_xmit Memory squeeze, dropping packet.\n", dev->name); lp->stats.tx_dropped++; - dev_kfree_skb (skb); } else { struct i596_tbd *tx_cmd_tbd; @@ -934,11 +917,11 @@ static void i596_tx_timeout (struct net_device *dev) { - volatile struct i596_private *lp = dev->priv; + struct i596_private *lp = dev->priv; int ioaddr = dev->base_addr; /* Transmitter timeout, serious problems. */ - printk ("%s: transmit timed out, status resetting.\n", dev->name); + printk(KERN_WARNING "%s: transmit timed out, status resetting.\n", dev->name); lp->stats.tx_errors++; /* Try to restart the adaptor */ @@ -957,8 +940,8 @@ netif_wake_queue(dev); } -static void -print_eth(char *add) { +static void print_eth(char *add) +{ int i; printk ("Dest "); @@ -975,9 +958,8 @@ (unsigned char) add[12], (unsigned char) add[13]); } -int __init -lp486e_probe(struct net_device *dev) { - volatile struct i596_private *lp; +int __init lp486e_probe(struct net_device *dev) { + struct i596_private *lp; unsigned char eth_addr[6] = { 0, 0xaa, 0, 0, 0, 0 }; unsigned char *bios; int i, j; @@ -996,14 +978,14 @@ /* * Allocate working memory, 16-byte aligned */ - dev->mem_start = (unsigned long) - kmalloc(sizeof(struct i596_private) + 0x0f, GFP_KERNEL); + dev->mem_start = (unsigned long) kmalloc(sizeof(struct i596_private) + 0x0f, GFP_KERNEL); if (!dev->mem_start) goto err_out; dev->priv = (void *)((dev->mem_start + 0xf) & 0xfffffff0); lp = (struct i596_private *) dev->priv; memset((void *)lp, 0, sizeof(struct i596_private)); - + spin_lock_init(&lp->cmd_lock); + /* * Do we really have this thing? */ @@ -1071,14 +1053,16 @@ static inline void i596_handle_CU_completion(struct net_device *dev, - volatile struct i596_private *lp, + struct i596_private *lp, unsigned short status, unsigned short *ack_cmdp) { - volatile struct i596_cmd *cmd; + struct i596_cmd *cmd; int frames_out = 0; int commands_done = 0; int cmd_val; + unsigned long flags; + spin_lock_irqsave(&lp->cmd_lock, flags); cmd = lp->cmd_head; while (lp->cmd_head && (lp->cmd_head->status & CMD_STAT_C)) { @@ -1160,31 +1144,29 @@ lp->last_cmd = jiffies; } + barrier(); } cmd = lp->cmd_head; while (cmd && (cmd != lp->cmd_tail)) { cmd->command &= 0x1fff; cmd = pa_to_va(cmd->pa_next); + barrier(); } if (lp->cmd_head) *ack_cmdp |= CUC_START; lp->scb.pa_cmd = va_to_pa(lp->cmd_head); + spin_unlock_irqrestore(&lp->cmd_lock, flags); } static void i596_interrupt (int irq, void *dev_instance, struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_instance; - volatile struct i596_private *lp; + struct i596_private *lp; unsigned short status, ack_cmd = 0; int frames_in = 0; - if (dev == NULL) { - printk ("i596_interrupt(): irq %d for unknown device.\n", irq); - return; - } - lp = (struct i596_private *) dev->priv; /* @@ -1251,7 +1233,7 @@ } static int i596_close(struct net_device *dev) { - volatile struct i596_private *lp = dev->priv; + struct i596_private *lp = dev->priv; netif_stop_queue(dev); @@ -1284,7 +1266,7 @@ */ static void set_multicast_list(struct net_device *dev) { - volatile struct i596_private *lp = dev->priv; + struct i596_private *lp = dev->priv; struct i596_cmd *cmd; if (i596_debug > 1) @@ -1294,12 +1276,9 @@ if (dev->mc_count > 0) { struct dev_mc_list *dmi; char *cp; - cmd = (struct i596_cmd *) - kmalloc(sizeof(struct i596_cmd)+2+dev->mc_count*6, - GFP_ATOMIC); + cmd = (struct i596_cmd *)kmalloc(sizeof(struct i596_cmd)+2+dev->mc_count*6, GFP_ATOMIC); if (cmd == NULL) { - printk ("%s: set_multicast Memory squeeze.\n", - dev->name); + printk (KERN_ERR "%s: set_multicast Memory squeeze.\n", dev->name); return; } cmd->command = CmdMulticastList; @@ -1316,8 +1295,7 @@ if (lp->set_conf.pa_next != I596_NULL) { return; } - if (dev->mc_count == 0 && - !(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) { + if (dev->mc_count == 0 && !(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) { if (dev->flags & IFF_ALLMULTI) dev->flags |= IFF_PROMISC; lp->i596_config[8] &= ~0x01; diff -Nru a/drivers/net/macmace.c b/drivers/net/macmace.c --- a/drivers/net/macmace.c Wed Feb 5 08:52:02 2003 +++ b/drivers/net/macmace.c Thu Apr 3 14:37:41 2003 @@ -319,8 +319,8 @@ /* Allocate the DMA ring buffers */ - mp->rx_ring = (void *) __get_free_pages(GFP_DMA, N_RX_PAGES); - mp->tx_ring = (void *) __get_free_pages(GFP_DMA, 0); + mp->rx_ring = (void *) __get_free_pages(GFP_KERNEL | GFP_DMA, N_RX_PAGES); + mp->tx_ring = (void *) __get_free_pages(GFP_KERNEL | GFP_DMA, 0); if (mp->tx_ring==NULL || mp->rx_ring==NULL) { if (mp->rx_ring) free_pages((u32) mp->rx_ring, N_RX_PAGES); diff -Nru a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c --- a/drivers/net/pcmcia/3c574_cs.c Sun Feb 2 13:40:35 2003 +++ b/drivers/net/pcmcia/3c574_cs.c Mon Apr 7 11:33:22 2003 @@ -3,6 +3,7 @@ Written 1993-1998 by Donald Becker, becker@scyld.com, (driver core) and David Hinds, dahinds@users.sourceforge.net (from his PC card code). + Locking fixes (C) Copyright 2003 Red Hat Inc This software may be used and distributed according to the terms of the GNU General Public License, incorporated herein by reference. @@ -11,6 +12,7 @@ following copyright: Copyright 1993 United States Government as represented by the Director, National Security Agency. + */ @@ -125,7 +127,7 @@ INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG); #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args) static char *version = -"3c574_cs.c 1.65 2001/10/13 00:08:50 Donald Becker/David Hinds, becker@scyld.com.\n"; +"3c574_cs.c 1.65ac1 2003/04/07 Donald Becker/David Hinds, becker@scyld.com.\n"; #else #define DEBUG(n, args...) #endif @@ -212,15 +214,15 @@ struct net_device dev; dev_node_t node; struct net_device_stats stats; - u16 advertising, partner; /* NWay media advertisement */ - unsigned char phys; /* MII device address */ - unsigned int - autoselect:1, default_media:3; /* Read from the EEPROM/Wn3_Config. */ + u16 advertising, partner; /* NWay media advertisement */ + unsigned char phys; /* MII device address */ + unsigned int autoselect:1, default_media:3; /* Read from the EEPROM/Wn3_Config. */ /* for transceiver monitoring */ struct timer_list media; - u_short media_status; - u_short fast_poll; - u_long last_irq; + unsigned short media_status; + unsigned short fast_poll; + unsigned long last_irq; + spinlock_t window_lock; /* Guards the Window selection */ }; /* Set iff a MII transceiver on any interface requires mdio preamble. @@ -231,18 +233,18 @@ /* Index of functions. */ static void tc574_config(dev_link_t *link); -static void tc574_release(u_long arg); +static void tc574_release(unsigned long arg); static int tc574_event(event_t event, int priority, event_callback_args_t *args); static void mdio_sync(ioaddr_t ioaddr, int bits); static int mdio_read(ioaddr_t ioaddr, int phy_id, int location); static void mdio_write(ioaddr_t ioaddr, int phy_id, int location, int value); -static u_short read_eeprom(ioaddr_t ioaddr, int index); +static unsigned short read_eeprom(ioaddr_t ioaddr, int index); static void tc574_wait_for_completion(struct net_device *dev, int cmd); static void tc574_reset(struct net_device *dev); -static void media_check(u_long arg); +static void media_check(unsigned long arg); static int el3_open(struct net_device *dev); static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev); static void el3_interrupt(int irq, void *dev_id, struct pt_regs *regs); @@ -266,15 +268,15 @@ dev_link_t *link, *next; for (link = dev_list; link; link = next) { next = link->next; - if (link->state & DEV_STALE_LINK) + if (link->state & DEV_STALE_LINK) tc574_detach(link); - } + } } static void cs_error(client_handle_t handle, int func, int ret) { #if CS_RELEASE_CODE < 0x2911 - CardServices(ReportError, dev_info, (void *)func, (void *)ret); + CardServices(ReportError, dev_info, (void *)func, (void *)ret); #else error_info_t err = { func, ret }; CardServices(ReportError, handle, &err); @@ -300,14 +302,16 @@ /* Create the PC card device object. */ lp = kmalloc(sizeof(*lp), GFP_KERNEL); - if (!lp) return NULL; + if (!lp) + return NULL; + memset(lp, 0, sizeof(*lp)); link = &lp->link; dev = &lp->dev; link->priv = dev->priv = link->irq.Instance = lp; init_timer(&link->release); link->release.function = &tc574_release; - link->release.data = (u_long)link; + link->release.data = (unsigned long)link; link->io.NumPorts1 = 32; link->io.Attributes1 = IO_DATA_PATH_WIDTH_16; link->irq.Attributes = IRQ_TYPE_EXCLUSIVE | IRQ_HANDLE_PRESENT; @@ -381,9 +385,9 @@ if (*linkp == NULL) return; - del_timer(&link->release); + del_timer_sync(&link->release); if (link->state & DEV_CONFIG) { - tc574_release((u_long)link); + tc574_release((unsigned long)link); if (link->state & DEV_STALE_CONFIG) { link->state |= DEV_STALE_LINK; return; @@ -417,7 +421,7 @@ struct net_device *dev = &lp->dev; tuple_t tuple; cisparse_t parse; - u_short buf[32]; + unsigned short buf[32]; int last_fn, last_ret, i, j; ioaddr_t ioaddr; u16 *phys_addr; @@ -562,7 +566,7 @@ cs_failed: cs_error(link->handle, last_fn, last_ret); failed: - tc574_release((u_long)link); + tc574_release((unsigned long)link); return; } /* tc574_config */ @@ -573,7 +577,7 @@ still open, this will be postponed until it is closed. */ -static void tc574_release(u_long arg) +static void tc574_release(unsigned long arg) { dev_link_t *link = (dev_link_t *)arg; @@ -652,12 +656,12 @@ { ioaddr_t ioaddr = dev->base_addr; EL3WINDOW(1); - printk(KERN_INFO " irq status %04x, rx status %04x, tx status " + printk(KERN_INFO " irq status %04x, rx status %04x, tx status " "%02x, tx free %04x\n", inw(ioaddr+EL3_STATUS), inw(ioaddr+RxStatus), inb(ioaddr+TxStatus), inw(ioaddr+TxFree)); EL3WINDOW(4); - printk(KERN_INFO " diagnostics: fifo %04x net %04x ethernet %04x" + printk(KERN_INFO " diagnostics: fifo %04x net %04x ethernet %04x" " media %04x\n", inw(ioaddr+0x04), inw(ioaddr+0x06), inw(ioaddr+0x08), inw(ioaddr+0x0a)); EL3WINDOW(1); @@ -668,19 +672,18 @@ */ static void tc574_wait_for_completion(struct net_device *dev, int cmd) { - int i = 1500; - outw(cmd, dev->base_addr + EL3_CMD); - while (--i > 0) + int i = 1500; + outw(cmd, dev->base_addr + EL3_CMD); + while (--i > 0) if (!(inw(dev->base_addr + EL3_STATUS) & 0x1000)) break; - if (i == 0) - printk(KERN_NOTICE "%s: command 0x%04x did not complete!\n", - dev->name, cmd); + if (i == 0) + printk(KERN_NOTICE "%s: command 0x%04x did not complete!\n", dev->name, cmd); } /* Read a word from the EEPROM using the regular EEPROM access register. Assume that we are in register window zero. */ -static u_short read_eeprom(ioaddr_t ioaddr, int index) +static unsigned short read_eeprom(ioaddr_t ioaddr, int index) { int timer; outw(EEPROM_Read + index, ioaddr + Wn0EepromCmd); @@ -773,9 +776,11 @@ { struct el3_private *lp = (struct el3_private *)dev->priv; int i, ioaddr = dev->base_addr; + unsigned long flags; tc574_wait_for_completion(dev, TotalReset|0x10); + spin_lock_irqsave(&lp->window_lock, flags); /* Clear any transactions in progress. */ outw(0, ioaddr + RunnerWrCtrl); outw(0, ioaddr + RunnerRdCtrl); @@ -792,14 +797,18 @@ outb((dev->mtu > 1500 ? 0x40 : 0), ioaddr + Wn3_MAC_Ctrl); outl((lp->autoselect ? 0x01000000 : 0) | 0x0062001b, ioaddr + Wn3_Config); - /* Roadrunner only: Turn on the MII transceiver. */ outw(0x8040, ioaddr + Wn3_Options); mdelay(1); outw(0xc040, ioaddr + Wn3_Options); + EL3WINDOW(1); + spin_unlock_irqrestore(&lp->window_lock, flags); + tc574_wait_for_completion(dev, TxReset); tc574_wait_for_completion(dev, RxReset); mdelay(1); + spin_lock_irqsave(&lp->window_lock, flags); + EL3WINDOW(3); outw(0x8040, ioaddr + Wn3_Options); /* Switch to the stats window, and clear all stats by reading. */ @@ -815,6 +824,10 @@ /* .. enable any extra statistics bits.. */ outw(0x0040, ioaddr + Wn4_NetDiag); + + EL3WINDOW(1); + spin_unlock_irqrestore(&lp->window_lock, flags); + /* .. re-sync MII and re-fill what NWay is advertising. */ mdio_sync(ioaddr, 32); mdio_write(ioaddr, lp->phys, 4, lp->advertising); @@ -824,10 +837,10 @@ mdio_write(ioaddr, lp->phys, 16, i); } + spin_lock_irqsave(&lp->window_lock, flags); /* Switch to register set 1 for normal use, just for TxFree. */ - EL3WINDOW(1); - set_rx_mode(dev); + spin_unlock_irqrestore(&lp->window_lock, flags); outw(StatsEnable, ioaddr + EL3_CMD); /* Turn on statistics. */ outw(RxEnable, ioaddr + EL3_CMD); /* Enable the receiver. */ outw(TxEnable, ioaddr + EL3_CMD); /* Enable transmitter. */ @@ -849,12 +862,11 @@ return -ENODEV; link->open++; - MOD_INC_USE_COUNT; netif_start_queue(dev); tc574_reset(dev); lp->media.function = &media_check; - lp->media.data = (u_long)lp; + lp->media.data = (unsigned long)lp; lp->media.expires = jiffies + HZ; add_timer(&lp->media); @@ -881,14 +893,15 @@ static void pop_tx_status(struct net_device *dev) { - struct el3_private *lp = (struct el3_private *)dev->priv; - ioaddr_t ioaddr = dev->base_addr; - int i; + struct el3_private *lp = (struct el3_private *)dev->priv; + ioaddr_t ioaddr = dev->base_addr; + int i; - /* Clear the Tx status stack. */ - for (i = 32; i > 0; i--) { + /* Clear the Tx status stack. */ + for (i = 32; i > 0; i--) { u_char tx_status = inb(ioaddr + TxStatus); - if (!(tx_status & 0x84)) break; + if (!(tx_status & 0x84)) + break; /* reset transmitter on jabber error or underrun */ if (tx_status & 0x30) tc574_wait_for_completion(dev, TxReset); @@ -899,17 +912,20 @@ lp->stats.tx_aborted_errors++; } outb(0x00, ioaddr + TxStatus); /* Pop the status stack. */ - } + } } static int el3_start_xmit(struct sk_buff *skb, struct net_device *dev) { ioaddr_t ioaddr = dev->base_addr; + struct el3_private *lp = (struct el3_private *)dev->priv; + unsigned long flags; DEBUG(3, "%s: el3_start_xmit(length = %ld) called, " "status %4.4x.\n", dev->name, (long)skb->len, inw(ioaddr + EL3_STATUS)); + spin_lock_irqsave(&lp->window_lock, flags); outw(skb->len, ioaddr + TX_FIFO); outw(0, ioaddr + TX_FIFO); outsl(ioaddr + TX_FIFO, skb->data, (skb->len+3)>>2); @@ -927,6 +943,8 @@ dev_kfree_skb (skb); pop_tx_status(dev); + spin_unlock(&lp->window_lock); + return 0; } @@ -945,6 +963,8 @@ DEBUG(3, "%s: interrupt, status %4.4x.\n", dev->name, inw(ioaddr + EL3_STATUS)); + spin_lock(&lp->window_lock); + while ((status = inw(ioaddr + EL3_STATUS)) & (IntLatch | RxComplete | RxEarly | StatsFull)) { if (!netif_device_present(dev) || @@ -1009,6 +1029,8 @@ DEBUG(3, "%s: exiting interrupt, status %4.4x.\n", dev->name, inw(ioaddr + EL3_STATUS)); + + spin_unlock(&lp->window_lock); return; } @@ -1017,41 +1039,38 @@ (and as a last resort, poll the NIC for events), and to monitor the MII, reporting changes in cable status. */ -static void media_check(u_long arg) +static void media_check(unsigned long arg) { - struct el3_private *lp = (struct el3_private *)arg; - struct net_device *dev = &lp->dev; - ioaddr_t ioaddr = dev->base_addr; - u_long flags; - u_short /* cable, */ media, partner; + struct el3_private *lp = (struct el3_private *)arg; + struct net_device *dev = &lp->dev; + ioaddr_t ioaddr = dev->base_addr; + unsigned long flags; + unsigned short /* cable, */ media, partner; if (!netif_device_present(dev)) goto reschedule; - /* Check for pending interrupt with expired latency timer: with - this, we can limp along even if the interrupt is blocked */ - if ((inw(ioaddr + EL3_STATUS) & IntLatch) && - (inb(ioaddr + Timer) == 0xff)) { + /* Check for pending interrupt with expired latency timer: with + this, we can limp along even if the interrupt is blocked */ + if ((inw(ioaddr + EL3_STATUS) & IntLatch) && (inb(ioaddr + Timer) == 0xff)) { if (!lp->fast_poll) printk(KERN_INFO "%s: interrupt(s) dropped!\n", dev->name); el3_interrupt(dev->irq, lp, NULL); lp->fast_poll = HZ; - } - if (lp->fast_poll) { + } + if (lp->fast_poll) { lp->fast_poll--; lp->media.expires = jiffies + 2; add_timer(&lp->media); return; - } + } - save_flags(flags); - cli(); + spin_lock_irqsave(&lp->window_lock, flags); EL3WINDOW(4); media = mdio_read(ioaddr, lp->phys, 1); partner = mdio_read(ioaddr, lp->phys, 5); EL3WINDOW(1); - restore_flags(flags); - + if (media != lp->media_status) { if ((media ^ lp->media_status) & 0x0004) printk(KERN_INFO "%s: %s link beat\n", dev->name, @@ -1086,10 +1105,11 @@ printk(KERN_INFO "%s: jabber detected\n", dev->name); lp->media_status = media; } + spin_unlock_irqrestore(&lp->window_lock, flags); reschedule: - lp->media.expires = jiffies + HZ; - add_timer(&lp->media); + lp->media.expires = jiffies + HZ; + add_timer(&lp->media); } static struct net_device_stats *el3_get_stats(struct net_device *dev) @@ -1109,37 +1129,41 @@ { struct el3_private *lp = (struct el3_private *)dev->priv; ioaddr_t ioaddr = dev->base_addr; + unsigned long flags; u8 rx, tx, up; DEBUG(2, "%s: updating the statistics.\n", dev->name); if (inw(ioaddr+EL3_STATUS) == 0xffff) /* No card. */ return; + + spin_lock_irqsave(&lp->window_lock, flags); /* Unlike the 3c509 we need not turn off stats updates while reading. */ /* Switch to the stats window, and read everything. */ EL3WINDOW(6); - lp->stats.tx_carrier_errors += inb(ioaddr + 0); - lp->stats.tx_heartbeat_errors += inb(ioaddr + 1); + lp->stats.tx_carrier_errors += inb(ioaddr + 0); + lp->stats.tx_heartbeat_errors += inb(ioaddr + 1); /* Multiple collisions. */ inb(ioaddr + 2); lp->stats.collisions += inb(ioaddr + 3); lp->stats.tx_window_errors += inb(ioaddr + 4); lp->stats.rx_fifo_errors += inb(ioaddr + 5); lp->stats.tx_packets += inb(ioaddr + 6); - up = inb(ioaddr + 9); + up = inb(ioaddr + 9); lp->stats.tx_packets += (up&0x30) << 4; - /* Rx packets */ inb(ioaddr + 7); - /* Tx deferrals */ inb(ioaddr + 8); - rx = inw(ioaddr + 10); - tx = inw(ioaddr + 12); + /* Rx packets */ inb(ioaddr + 7); + /* Tx deferrals */ inb(ioaddr + 8); + rx = inw(ioaddr + 10); + tx = inw(ioaddr + 12); EL3WINDOW(4); - /* BadSSD */ inb(ioaddr + 12); - up = inb(ioaddr + 13); + /* BadSSD */ inb(ioaddr + 12); + up = inb(ioaddr + 13); - lp->stats.tx_bytes += tx + ((up & 0xf0) << 12); + lp->stats.tx_bytes += tx + ((up & 0xf0) << 12); EL3WINDOW(1); + spin_unlock_irqrestore(&lp->window_lock, flags); } static int el3_rx(struct net_device *dev, int worklimit) @@ -1150,7 +1174,7 @@ DEBUG(3, "%s: in rx_packet(), status %4.4x, rx_status %4.4x.\n", dev->name, inw(ioaddr+EL3_STATUS), inw(ioaddr+RxStatus)); - while (!((rx_status = inw(ioaddr + RxStatus)) & 0x8000) && + while (!((rx_status = inw(ioaddr + RxStatus)) & 0x8000) && (--worklimit >= 0)) { if (rx_status & 0x4000) { /* Error, update stats. */ short error = rx_status & 0x3800; @@ -1225,7 +1249,7 @@ dev->name, rq->ifr_ifrn.ifrn_name, cmd, data[0], data[1], data[2], data[3]); - switch(cmd) { + switch(cmd) { case SIOCETHTOOL: return netdev_ethtool_ioctl(dev, (void *)rq->ifr_data); case SIOCDEVPRIVATE: /* Get the address of the PHY in use. */ @@ -1233,15 +1257,14 @@ case SIOCDEVPRIVATE+1: /* Read the specified MII register. */ { int saved_window; - unsigned long flags; + unsigned long flags; - save_flags(flags); - cli(); + spin_lock_irqsave(&lp->window_lock, flags); saved_window = inw(ioaddr + EL3_CMD) >> 13; EL3WINDOW(4); data[3] = mdio_read(ioaddr, data[0] & 0x1f, data[1] & 0x1f); EL3WINDOW(saved_window); - restore_flags(flags); + spin_unlock_irqrestore(&lp->window_lock, flags); return 0; } case SIOCDEVPRIVATE+2: /* Write the specified MII register */ @@ -1251,13 +1274,12 @@ if (!capable(CAP_NET_ADMIN)) return -EPERM; - save_flags(flags); - cli(); + spin_lock_irqsave(&lp->window_lock, flags); saved_window = inw(ioaddr + EL3_CMD) >> 13; EL3WINDOW(4); mdio_write(ioaddr, data[0] & 0x1f, data[1] & 0x1f, data[2]); EL3WINDOW(saved_window); - restore_flags(flags); + spin_unlock_irqrestore(&lp->window_lock, flags); return 0; } default: @@ -1310,12 +1332,9 @@ link->open--; netif_stop_queue(dev); - del_timer(&lp->media); + del_timer_sync(&lp->media); if (link->state & DEV_STALE_CONFIG) mod_timer(&link->release, jiffies + HZ/20); - - MOD_DEC_USE_COUNT; - return 0; } diff -Nru a/drivers/net/slip.c b/drivers/net/slip.c --- a/drivers/net/slip.c Tue Nov 5 05:52:33 2002 +++ b/drivers/net/slip.c Mon Apr 7 10:56:42 2003 @@ -836,8 +836,6 @@ if(!capable(CAP_NET_ADMIN)) return -EPERM; - MOD_INC_USE_COUNT; - /* RTnetlink lock is misused here to serialize concurrent opens of slip channels. There are better ways, but it is the simplest one. @@ -905,7 +903,6 @@ rtnl_unlock(); /* Count references from TTY module */ - MOD_DEC_USE_COUNT; return err; } @@ -953,7 +950,6 @@ #endif /* Count references from TTY module */ - MOD_DEC_USE_COUNT; } /************************************************************************ @@ -1122,8 +1118,7 @@ #endif /* CONFIG_SLIP_MODE_SLIP6 */ /* Perform I/O control on an active SLIP channel. */ -static int -slip_ioctl(struct tty_struct *tty, void *file, int cmd, void *arg) +static int slip_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd, unsigned long arg) { struct slip *sl = (struct slip *) tty->disc_data; unsigned int tmp; @@ -1135,11 +1130,8 @@ switch(cmd) { case SIOCGIFNAME: - /* Please, do not put this line under copy_to_user, - it breaks my old poor gcc on alpha --ANK - */ tmp = strlen(sl->dev->name) + 1; - if (copy_to_user(arg, sl->dev->name, tmp)) + if (copy_to_user((void *)arg, sl->dev->name, tmp)) return -EFAULT; return 0; @@ -1230,7 +1222,7 @@ /* Allow stty to read, but not set, the serial port */ case TCGETS: case TCGETA: - return n_tty_ioctl(tty, (struct file *) file, cmd, (unsigned long) arg); + return n_tty_ioctl(tty, file, cmd, arg); default: return -ENOIOCTLCMD; @@ -1349,34 +1341,28 @@ memset(slip_ctrls, 0, sizeof(void*)*slip_maxdev); /* Pointers */ /* Fill in our line protocol discipline, and register it */ - memset(&sl_ldisc, 0, sizeof(sl_ldisc)); - sl_ldisc.magic = TTY_LDISC_MAGIC; - sl_ldisc.name = "slip"; - sl_ldisc.flags = 0; - sl_ldisc.open = slip_open; - sl_ldisc.close = slip_close; - sl_ldisc.read = NULL; - sl_ldisc.write = NULL; - sl_ldisc.ioctl = (int (*)(struct tty_struct *, struct file *, - unsigned int, unsigned long)) slip_ioctl; - sl_ldisc.poll = NULL; - sl_ldisc.receive_buf = slip_receive_buf; - sl_ldisc.receive_room = slip_receive_room; - sl_ldisc.write_wakeup = slip_write_wakeup; if ((status = tty_register_ldisc(N_SLIP, &sl_ldisc)) != 0) { printk(KERN_ERR "SLIP: can't register line discipline (err = %d)\n", status); } - - return status; } - +static struct tty_ldisc sl_ldisc = +{ + .owner = THIS_MODULE, + .magic = TTY_LDISC_MAGIC, + .name = "slip", + .open = slip_open, + .close = slip_close, + .ioctl = slip_ioctl, + .receive_buf = slip_receive_buf, + .receive_room = slip_receive_room, + .write_wakeup = slip_write_wakeup, +}; #ifdef MODULE -int -init_module(void) +int init_module(void) { return slip_init_ctrl_dev(); } diff -Nru a/drivers/net/sungem.c b/drivers/net/sungem.c --- a/drivers/net/sungem.c Tue Feb 25 09:17:50 2003 +++ b/drivers/net/sungem.c Mon Apr 7 00:03:41 2003 @@ -894,7 +894,7 @@ /* We must give this initial chunk to the device last. * Otherwise we could race with the device. */ - first_len = skb->len - skb->data_len; + first_len = skb_headlen(skb); first_mapping = pci_map_page(gp->pdev, virt_to_page(skb->data), ((unsigned long) skb->data & ~PAGE_MASK), first_len, PCI_DMA_TODEVICE); diff -Nru a/drivers/net/sunhme.c b/drivers/net/sunhme.c --- a/drivers/net/sunhme.c Sun Mar 2 23:36:08 2003 +++ b/drivers/net/sunhme.c Mon Apr 7 00:03:41 2003 @@ -2319,7 +2319,7 @@ /* We must give this initial chunk to the device last. * Otherwise we could race with the device. */ - first_len = skb->len - skb->data_len; + first_len = skb_headlen(skb); first_mapping = hme_dma_map(hp, skb->data, first_len, DMA_TODEVICE); entry = NEXT_TX(entry); diff -Nru a/drivers/net/tg3.c b/drivers/net/tg3.c --- a/drivers/net/tg3.c Thu Mar 20 21:01:20 2003 +++ b/drivers/net/tg3.c Mon Apr 7 00:03:41 2003 @@ -1751,7 +1751,7 @@ pci_unmap_single(tp->pdev, pci_unmap_addr(ri, mapping), - (skb->len - skb->data_len), + skb_headlen(skb), PCI_DMA_TODEVICE); ri->skb = NULL; @@ -2316,7 +2316,7 @@ int len; if (i == 0) - len = skb->len - skb->data_len; + len = skb_headlen(skb); else len = skb_shinfo(skb)->frags[i-1].size; pci_unmap_single(tp->pdev, @@ -2401,7 +2401,7 @@ int would_hit_hwbug; unsigned long flags; - len = (skb->len - skb->data_len); + len = skb_headlen(skb); /* No BH disabling for tx_lock here. We are running in BH disabled * context and TX reclaim runs via tp->poll inside of a software @@ -2520,7 +2520,7 @@ i = 0; while (entry != last_plus_one) { if (i == 0) - len = skb->len - skb->data_len; + len = skb_headlen(skb); else len = skb_shinfo(skb)->frags[i-1].size; @@ -2593,7 +2593,7 @@ u32 len, entry, base_flags, mss; unsigned long flags; - len = (skb->len - skb->data_len); + len = skb_headlen(skb); /* No BH disabling for tx_lock here. We are running in BH disabled * context and TX reclaim runs via tp->poll inside of a software @@ -2829,7 +2829,7 @@ pci_unmap_single(tp->pdev, pci_unmap_addr(txp, mapping), - (skb->len - skb->data_len), + skb_headlen(skb), PCI_DMA_TODEVICE); txp->skb = NULL; diff -Nru a/drivers/net/typhoon.c b/drivers/net/typhoon.c --- a/drivers/net/typhoon.c Thu Feb 13 22:59:21 2003 +++ b/drivers/net/typhoon.c Mon Apr 7 00:03:41 2003 @@ -844,7 +844,7 @@ } else { int i, len; - len = skb->len - skb->data_len; + len = skb_headlen(skb); skb_dma = pci_map_single(tp->tx_pdev, skb->data, len, PCI_DMA_TODEVICE); txd->flags = TYPHOON_FRAG_DESC | TYPHOON_DESC_VALID; diff -Nru a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c --- a/drivers/net/wan/cosa.c Sat Mar 22 07:38:04 2003 +++ b/drivers/net/wan/cosa.c Wed Mar 26 12:06:13 2003 @@ -1057,7 +1057,8 @@ return -EPERM; } - if (get_user(addr, &(d->addr)) || + if (verify_area(VERIFY_READ, d, sizeof(*d)) || + __get_user(addr, &(d->addr)) || __get_user(len, &(d->len)) || __get_user(code, &(d->code))) return -EFAULT; @@ -1098,7 +1099,8 @@ return -EPERM; } - if (get_user(addr, &(d->addr)) || + if (verify_area(VERIFY_READ, d, sizeof(*d)) || + __get_user(addr, &(d->addr)) || __get_user(len, &(d->len)) || __get_user(code, &(d->code))) return -EFAULT; @@ -1106,7 +1108,7 @@ /* If something fails, force the user to reset the card */ cosa->firmware_status &= ~COSA_FW_RESET; - if ((i=readmem(cosa, d->code, len, addr)) < 0) { + if ((i=readmem(cosa, code, len, addr)) < 0) { printk(KERN_NOTICE "cosa%d: reading memory failed: %d\n", cosa->num, i); return -EIO; diff -Nru a/drivers/net/wireless/strip.c b/drivers/net/wireless/strip.c --- a/drivers/net/wireless/strip.c Tue Feb 18 17:22:50 2003 +++ b/drivers/net/wireless/strip.c Mon Apr 7 10:48:34 2003 @@ -69,9 +69,9 @@ */ #ifdef MODULE -static const char StripVersion[] = "1.3-STUART.CHESHIRE-MODULAR"; +static const char StripVersion[] = "1.3A-STUART.CHESHIRE-MODULAR"; #else -static const char StripVersion[] = "1.3-STUART.CHESHIRE"; +static const char StripVersion[] = "1.3A-STUART.CHESHIRE"; #endif #define TICKLE_TIMERS 0 @@ -89,18 +89,7 @@ #include #include -/* - * isdigit() and isspace() use the ctype[] array, which is not available - * to kernel modules. If compiling as a module, use a local definition - * of isdigit() and isspace() until _ctype is added to ksyms. - */ -#ifdef MODULE -# define isdigit(c) ('0' <= (c) && (c) <= '9') -# define isspace(c) ((c) == ' ' || (c) == '\t') -#else # include -#endif - #include #include #include @@ -131,10 +120,9 @@ * Starmode packet. */ -typedef union -{ - __u8 c[4]; - __u32 l; +typedef union { + __u8 c[4]; + __u32 l; } MetricomKey; /* @@ -142,10 +130,9 @@ * a single 32-bit long (which is convenient for assignment, equality testing etc.) */ -typedef union -{ - __u8 b[4]; - __u32 l; +typedef union { + __u8 b[4]; + __u32 l; } IPaddr; /* @@ -153,9 +140,8 @@ * a Metricom address. */ -typedef struct -{ - __u8 c[24]; +typedef struct { + __u8 c[24]; } MetricomAddressString; /* Encapsulation can expand packet of size x to 65/64x + 1 @@ -173,24 +159,21 @@ * already understands Ethernet headers. */ -typedef struct -{ - MetricomAddress dst_addr; /* Destination address, e.g. "0000-1234" */ - MetricomAddress src_addr; /* Source address, e.g. "0000-5678" */ - unsigned short protocol; /* The protocol type, using Ethernet codes */ +typedef struct { + MetricomAddress dst_addr; /* Destination address, e.g. "0000-1234" */ + MetricomAddress src_addr; /* Source address, e.g. "0000-5678" */ + unsigned short protocol; /* The protocol type, using Ethernet codes */ } STRIP_Header; -typedef struct -{ - char c[60]; +typedef struct { + char c[60]; } MetricomNode; #define NODE_TABLE_SIZE 32 -typedef struct -{ - struct timeval timestamp; - int num_nodes; - MetricomNode node[NODE_TABLE_SIZE]; +typedef struct { + struct timeval timestamp; + int num_nodes; + MetricomNode node[NODE_TABLE_SIZE]; } MetricomNodeTable; enum { FALSE = 0, TRUE = 1 }; @@ -198,123 +181,117 @@ /* * Holds the radio's firmware version. */ -typedef struct -{ - char c[50]; +typedef struct { + char c[50]; } FirmwareVersion; /* * Holds the radio's serial number. */ -typedef struct -{ - char c[18]; +typedef struct { + char c[18]; } SerialNumber; /* * Holds the radio's battery voltage. */ -typedef struct -{ - char c[11]; +typedef struct { + char c[11]; } BatteryVoltage; -typedef struct -{ - char c[8]; +typedef struct { + char c[8]; } char8; -enum -{ - NoStructure = 0, /* Really old firmware */ - StructuredMessages = 1, /* Parsable AT response msgs */ - ChecksummedMessages = 2 /* Parsable AT response msgs with checksums */ +enum { + NoStructure = 0, /* Really old firmware */ + StructuredMessages = 1, /* Parsable AT response msgs */ + ChecksummedMessages = 2 /* Parsable AT response msgs with checksums */ } FirmwareLevel; -struct strip -{ - int magic; - /* - * These are pointers to the malloc()ed frame buffers. - */ - - unsigned char *rx_buff; /* buffer for received IP packet*/ - unsigned char *sx_buff; /* buffer for received serial data*/ - int sx_count; /* received serial data counter */ - int sx_size; /* Serial buffer size */ - unsigned char *tx_buff; /* transmitter buffer */ - unsigned char *tx_head; /* pointer to next byte to XMIT */ - int tx_left; /* bytes left in XMIT queue */ - int tx_size; /* Serial buffer size */ - - /* - * STRIP interface statistics. - */ - - unsigned long rx_packets; /* inbound frames counter */ - unsigned long tx_packets; /* outbound frames counter */ - unsigned long rx_errors; /* Parity, etc. errors */ - unsigned long tx_errors; /* Planned stuff */ - unsigned long rx_dropped; /* No memory for skb */ - unsigned long tx_dropped; /* When MTU change */ - unsigned long rx_over_errors; /* Frame bigger then STRIP buf. */ - - unsigned long pps_timer; /* Timer to determine pps */ - unsigned long rx_pps_count; /* Counter to determine pps */ - unsigned long tx_pps_count; /* Counter to determine pps */ - unsigned long sx_pps_count; /* Counter to determine pps */ - unsigned long rx_average_pps; /* rx packets per second * 8 */ - unsigned long tx_average_pps; /* tx packets per second * 8 */ - unsigned long sx_average_pps; /* sent packets per second * 8 */ +struct strip { + int magic; + /* + * These are pointers to the malloc()ed frame buffers. + */ + + unsigned char *rx_buff; /* buffer for received IP packet */ + unsigned char *sx_buff; /* buffer for received serial data */ + int sx_count; /* received serial data counter */ + int sx_size; /* Serial buffer size */ + unsigned char *tx_buff; /* transmitter buffer */ + unsigned char *tx_head; /* pointer to next byte to XMIT */ + int tx_left; /* bytes left in XMIT queue */ + int tx_size; /* Serial buffer size */ + + /* + * STRIP interface statistics. + */ + + unsigned long rx_packets; /* inbound frames counter */ + unsigned long tx_packets; /* outbound frames counter */ + unsigned long rx_errors; /* Parity, etc. errors */ + unsigned long tx_errors; /* Planned stuff */ + unsigned long rx_dropped; /* No memory for skb */ + unsigned long tx_dropped; /* When MTU change */ + unsigned long rx_over_errors; /* Frame bigger then STRIP buf. */ + + unsigned long pps_timer; /* Timer to determine pps */ + unsigned long rx_pps_count; /* Counter to determine pps */ + unsigned long tx_pps_count; /* Counter to determine pps */ + unsigned long sx_pps_count; /* Counter to determine pps */ + unsigned long rx_average_pps; /* rx packets per second * 8 */ + unsigned long tx_average_pps; /* tx packets per second * 8 */ + unsigned long sx_average_pps; /* sent packets per second * 8 */ #ifdef EXT_COUNTERS - unsigned long rx_bytes; /* total received bytes */ - unsigned long tx_bytes; /* total received bytes */ - unsigned long rx_rbytes; /* bytes thru radio i/f */ - unsigned long tx_rbytes; /* bytes thru radio i/f */ - unsigned long rx_sbytes; /* tot bytes thru serial i/f */ - unsigned long tx_sbytes; /* tot bytes thru serial i/f */ - unsigned long rx_ebytes; /* tot stat/err bytes */ - unsigned long tx_ebytes; /* tot stat/err bytes */ + unsigned long rx_bytes; /* total received bytes */ + unsigned long tx_bytes; /* total received bytes */ + unsigned long rx_rbytes; /* bytes thru radio i/f */ + unsigned long tx_rbytes; /* bytes thru radio i/f */ + unsigned long rx_sbytes; /* tot bytes thru serial i/f */ + unsigned long tx_sbytes; /* tot bytes thru serial i/f */ + unsigned long rx_ebytes; /* tot stat/err bytes */ + unsigned long tx_ebytes; /* tot stat/err bytes */ #endif - /* - * Internal variables. - */ - - struct strip *next; /* The next struct in the list */ - struct strip **referrer; /* The pointer that points to us*/ - int discard; /* Set if serial error */ - int working; /* Is radio working correctly? */ - int firmware_level; /* Message structuring level */ - int next_command; /* Next periodic command */ - unsigned int user_baud; /* The user-selected baud rate */ - int mtu; /* Our mtu (to spot changes!) */ - long watchdog_doprobe; /* Next time to test the radio */ - long watchdog_doreset; /* Time to do next reset */ - long gratuitous_arp; /* Time to send next ARP refresh*/ - long arp_interval; /* Next ARP interval */ - struct timer_list idle_timer; /* For periodic wakeup calls */ - MetricomAddress true_dev_addr; /* True address of radio */ - int manual_dev_addr; /* Hack: See note below */ - - FirmwareVersion firmware_version; /* The radio's firmware version */ - SerialNumber serial_number; /* The radio's serial number */ - BatteryVoltage battery_voltage; /* The radio's battery voltage */ - - /* - * Other useful structures. - */ - - struct tty_struct *tty; /* ptr to TTY structure */ - struct net_device dev; /* Our device structure */ - - /* - * Neighbour radio records - */ + /* + * Internal variables. + */ + + struct strip *next; /* The next struct in the list */ + struct strip **referrer; /* The pointer that points to us */ + int discard; /* Set if serial error */ + int working; /* Is radio working correctly? */ + int firmware_level; /* Message structuring level */ + int next_command; /* Next periodic command */ + unsigned int user_baud; /* The user-selected baud rate */ + int mtu; /* Our mtu (to spot changes!) */ + long watchdog_doprobe; /* Next time to test the radio */ + long watchdog_doreset; /* Time to do next reset */ + long gratuitous_arp; /* Time to send next ARP refresh */ + long arp_interval; /* Next ARP interval */ + struct timer_list idle_timer; /* For periodic wakeup calls */ + MetricomAddress true_dev_addr; /* True address of radio */ + int manual_dev_addr; /* Hack: See note below */ + + FirmwareVersion firmware_version; /* The radio's firmware version */ + SerialNumber serial_number; /* The radio's serial number */ + BatteryVoltage battery_voltage; /* The radio's battery voltage */ + + /* + * Other useful structures. + */ + + struct tty_struct *tty; /* ptr to TTY structure */ + struct net_device dev; /* Our device structure */ - MetricomNodeTable portables; - MetricomNodeTable poletops; + /* + * Neighbour radio records + */ + + MetricomNodeTable portables; + MetricomNodeTable poletops; }; /* @@ -406,36 +383,39 @@ static const char CommandString3[] = "*&COMMAND*ATS300?"; /* Query version information */ static const char CommandString4[] = "*&COMMAND*ATS311?"; /* Query poletop list */ static const char CommandString5[] = "*&COMMAND*AT~LA"; /* Query portables list */ -typedef struct { const char *string; long length; } StringDescriptor; - -static const StringDescriptor CommandString[] = - { - { CommandString0, sizeof(CommandString0)-1 }, - { CommandString1, sizeof(CommandString1)-1 }, - { CommandString2, sizeof(CommandString2)-1 }, - { CommandString3, sizeof(CommandString3)-1 }, - { CommandString4, sizeof(CommandString4)-1 }, - { CommandString5, sizeof(CommandString5)-1 } - }; +typedef struct { + const char *string; + long length; +} StringDescriptor; + +static const StringDescriptor CommandString[] = { + {CommandString0, sizeof(CommandString0) - 1}, + {CommandString1, sizeof(CommandString1) - 1}, + {CommandString2, sizeof(CommandString2) - 1}, + {CommandString3, sizeof(CommandString3) - 1}, + {CommandString4, sizeof(CommandString4) - 1}, + {CommandString5, sizeof(CommandString5) - 1} +}; #define GOT_ALL_RADIO_INFO(S) \ ((S)->firmware_version.c[0] && \ (S)->battery_voltage.c[0] && \ memcmp(&(S)->true_dev_addr, zero_address.c, sizeof(zero_address))) -static const char hextable[16] = "0123456789ABCDEF"; +static const char hextable[16] = "0123456789ABCDEF"; static const MetricomAddress zero_address; -static const MetricomAddress broadcast_address = { { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF } }; +static const MetricomAddress broadcast_address = + { {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} }; -static const MetricomKey SIP0Key = { { "SIP0" } }; -static const MetricomKey ARP0Key = { { "ARP0" } }; -static const MetricomKey ATR_Key = { { "ATR " } }; -static const MetricomKey ACK_Key = { { "ACK_" } }; -static const MetricomKey INF_Key = { { "INF_" } }; -static const MetricomKey ERR_Key = { { "ERR_" } }; +static const MetricomKey SIP0Key = { {"SIP0"} }; +static const MetricomKey ARP0Key = { {"ARP0"} }; +static const MetricomKey ATR_Key = { {"ATR "} }; +static const MetricomKey ACK_Key = { {"ACK_"} }; +static const MetricomKey INF_Key = { {"INF_"} }; +static const MetricomKey ERR_Key = { {"ERR_"} }; -static const long MaxARPInterval = 60 * HZ; /* One minute */ +static const long MaxARPInterval = 60 * HZ; /* One minute */ /* * Maximum Starmode packet length is 1183 bytes. Allowing 4 bytes for @@ -445,18 +425,17 @@ * long, including IP header, UDP header, and NFS header. Setting the STRIP * MTU to 1152 allows us to send default sized NFS packets without fragmentation. */ -static const unsigned short MAX_SEND_MTU = 1152; -static const unsigned short MAX_RECV_MTU = 1500; /* Hoping for Ethernet sized packets in the future! */ -static const unsigned short DEFAULT_STRIP_MTU = 1152; -static const int STRIP_MAGIC = 0x5303; -static const long LongTime = 0x7FFFFFFF; - +static const unsigned short MAX_SEND_MTU = 1152; +static const unsigned short MAX_RECV_MTU = 1500; /* Hoping for Ethernet sized packets in the future! */ +static const unsigned short DEFAULT_STRIP_MTU = 1152; +static const int STRIP_MAGIC = 0x5303; +static const long LongTime = 0x7FFFFFFF; /************************************************************************/ /* Global variables */ static struct strip *struct_strip_list; - +static spinlock_t strip_lock; /************************************************************************/ /* Macros */ @@ -486,99 +465,52 @@ /************************************************************************/ /* Utility routines */ -typedef unsigned long InterruptStatus; - -static inline InterruptStatus DisableInterrupts(void) +static int arp_query(unsigned char *haddr, u32 paddr, + struct net_device *dev) { - InterruptStatus x; - save_flags(x); - cli(); - return(x); -} + struct neighbour *neighbor_entry; -static inline void RestoreInterrupts(InterruptStatus x) -{ - restore_flags(x); -} - -static int arp_query(unsigned char *haddr, u32 paddr, struct net_device * dev) -{ - struct neighbour *neighbor_entry; + neighbor_entry = neigh_lookup(&arp_tbl, &paddr, dev); - neighbor_entry = neigh_lookup(&arp_tbl, &paddr, dev); - - if (neighbor_entry != NULL) - { - neighbor_entry->used = jiffies; - if (neighbor_entry->nud_state & NUD_VALID) - { - memcpy(haddr, neighbor_entry->ha, dev->addr_len); - return 1; + if (neighbor_entry != NULL) { + neighbor_entry->used = jiffies; + if (neighbor_entry->nud_state & NUD_VALID) { + memcpy(haddr, neighbor_entry->ha, dev->addr_len); + return 1; + } } - } - return 0; + return 0; } -static void DumpData(char *msg, struct strip *strip_info, __u8 *ptr, __u8 *end) +static void DumpData(char *msg, struct strip *strip_info, __u8 * ptr, + __u8 * end) { - static const int MAX_DumpData = 80; - __u8 pkt_text[MAX_DumpData], *p = pkt_text; - - *p++ = '\"'; - - while (ptr= 32 && *ptr <= 126) - { - *p++ = *ptr; - } - else - { - sprintf(p, "\\%02X", *ptr); - p+= 3; - } - } - ptr++; - } - - if (ptr == end) - { - *p++ = '\"'; - } + static const int MAX_DumpData = 80; + __u8 pkt_text[MAX_DumpData], *p = pkt_text; - *p++ = 0; - - printk(KERN_INFO "%s: %-13s%s\n", strip_info->dev.name, msg, pkt_text); -} + *p++ = '\"'; + + while (ptr < end && p < &pkt_text[MAX_DumpData - 4]) { + if (*ptr == '\\') { + *p++ = '\\'; + *p++ = '\\'; + } else { + if (*ptr >= 32 && *ptr <= 126) { + *p++ = *ptr; + } else { + sprintf(p, "\\%02X", *ptr); + p += 3; + } + } + ptr++; + } -#if 0 -static void HexDump(char *msg, struct strip *strip_info, __u8 *start, __u8 *end) -{ - __u8 *ptr = start; - printk(KERN_INFO "%s: %s: %d bytes\n", strip_info->dev.name, msg, end-ptr); + if (ptr == end) + *p++ = '\"'; + *p++ = 0; - while (ptr < end) - { - long offset = ptr - start; - __u8 text[80], *p = text; - while (ptr < end && p < &text[16*3]) - { - *p++ = hextable[*ptr >> 4]; - *p++ = hextable[*ptr++ & 0xF]; - *p++ = ' '; - } - p[-1] = 0; - printk(KERN_INFO "%s: %4lX %s\n", strip_info->dev.name, offset, text); - } + printk(KERN_INFO "%s: %-13s%s\n", strip_info->dev.name, msg, pkt_text); } -#endif /************************************************************************/ @@ -592,18 +524,17 @@ * C0-FF Run of 1-64 zeroes (ASCII 0) */ -typedef enum -{ - Stuff_Diff = 0x00, - Stuff_DiffZero = 0x40, - Stuff_Same = 0x80, - Stuff_Zero = 0xC0, - Stuff_NoCode = 0xFF, /* Special code, meaning no code selected */ - - Stuff_CodeMask = 0xC0, - Stuff_CountMask = 0x3F, - Stuff_MaxCount = 0x3F, - Stuff_Magic = 0x0D /* The value we are eliminating */ +typedef enum { + Stuff_Diff = 0x00, + Stuff_DiffZero = 0x40, + Stuff_Same = 0x80, + Stuff_Zero = 0xC0, + Stuff_NoCode = 0xFF, /* Special code, meaning no code selected */ + + Stuff_CodeMask = 0xC0, + Stuff_CountMask = 0x3F, + Stuff_MaxCount = 0x3F, + Stuff_Magic = 0x0D /* The value we are eliminating */ } StuffingCode; /* StuffData encodes the data starting at "src" for "length" bytes. @@ -622,138 +553,122 @@ #define StuffData_FinishBlock(X) \ (*code_ptr = (X) ^ Stuff_Magic, code = Stuff_NoCode) -static __u8 *StuffData(__u8 *src, __u32 length, __u8 *dst, __u8 **code_ptr_ptr) +static __u8 *StuffData(__u8 * src, __u32 length, __u8 * dst, + __u8 ** code_ptr_ptr) { - __u8 *end = src + length; - __u8 *code_ptr = *code_ptr_ptr; - __u8 code = Stuff_NoCode, count = 0; - - if (!length) - return(dst); - - if (code_ptr) - { - /* - * Recover state from last call, if applicable - */ - code = (*code_ptr ^ Stuff_Magic) & Stuff_CodeMask; - count = (*code_ptr ^ Stuff_Magic) & Stuff_CountMask; - } - - while (src < end) - { - switch (code) - { - /* Stuff_NoCode: If no current code, select one */ - case Stuff_NoCode: - /* Record where we're going to put this code */ - code_ptr = dst++; - count = 0; /* Reset the count (zero means one instance) */ - /* Tentatively start a new block */ - if (*src == 0) - { - code = Stuff_Zero; - src++; - } - else - { - code = Stuff_Same; - *dst++ = *src++ ^ Stuff_Magic; - } - /* Note: We optimistically assume run of same -- */ - /* which will be fixed later in Stuff_Same */ - /* if it turns out not to be true. */ - break; - - /* Stuff_Zero: We already have at least one zero encoded */ - case Stuff_Zero: - /* If another zero, count it, else finish this code block */ - if (*src == 0) - { - count++; - src++; - } - else - { - StuffData_FinishBlock(Stuff_Zero + count); - } - break; - - /* Stuff_Same: We already have at least one byte encoded */ - case Stuff_Same: - /* If another one the same, count it */ - if ((*src ^ Stuff_Magic) == code_ptr[1]) - { - count++; - src++; - break; - } - /* else, this byte does not match this block. */ - /* If we already have two or more bytes encoded, finish this code block */ - if (count) - { - StuffData_FinishBlock(Stuff_Same + count); - break; - } - /* else, we only have one so far, so switch to Stuff_Diff code */ - code = Stuff_Diff; - /* and fall through to Stuff_Diff case below - * Note cunning cleverness here: case Stuff_Diff compares - * the current character with the previous two to see if it - * has a run of three the same. Won't this be an error if - * there aren't two previous characters stored to compare with? - * No. Because we know the current character is *not* the same - * as the previous one, the first test below will necessarily - * fail and the send half of the "if" won't be executed. - */ - - /* Stuff_Diff: We have at least two *different* bytes encoded */ - case Stuff_Diff: - /* If this is a zero, must encode a Stuff_DiffZero, and begin a new block */ - if (*src == 0) - { - StuffData_FinishBlock(Stuff_DiffZero + count); - } - /* else, if we have three in a row, it is worth starting a Stuff_Same block */ - else if ((*src ^ Stuff_Magic)==dst[-1] && dst[-1]==dst[-2]) - { - /* Back off the last two characters we encoded */ - code += count-2; - /* Note: "Stuff_Diff + 0" is an illegal code */ - if (code == Stuff_Diff + 0) - { - code = Stuff_Same + 0; - } - StuffData_FinishBlock(code); - code_ptr = dst-2; - /* dst[-1] already holds the correct value */ - count = 2; /* 2 means three bytes encoded */ - code = Stuff_Same; - } - /* else, another different byte, so add it to the block */ - else - { - *dst++ = *src ^ Stuff_Magic; - count++; - } - src++; /* Consume the byte */ - break; - } - if (count == Stuff_MaxCount) - { - StuffData_FinishBlock(code + count); - } - } - if (code == Stuff_NoCode) - { - *code_ptr_ptr = NULL; - } - else - { - *code_ptr_ptr = code_ptr; - StuffData_FinishBlock(code + count); - } - return(dst); + __u8 *end = src + length; + __u8 *code_ptr = *code_ptr_ptr; + __u8 code = Stuff_NoCode, count = 0; + + if (!length) + return (dst); + + if (code_ptr) { + /* + * Recover state from last call, if applicable + */ + code = (*code_ptr ^ Stuff_Magic) & Stuff_CodeMask; + count = (*code_ptr ^ Stuff_Magic) & Stuff_CountMask; + } + + while (src < end) { + switch (code) { + /* Stuff_NoCode: If no current code, select one */ + case Stuff_NoCode: + /* Record where we're going to put this code */ + code_ptr = dst++; + count = 0; /* Reset the count (zero means one instance) */ + /* Tentatively start a new block */ + if (*src == 0) { + code = Stuff_Zero; + src++; + } else { + code = Stuff_Same; + *dst++ = *src++ ^ Stuff_Magic; + } + /* Note: We optimistically assume run of same -- */ + /* which will be fixed later in Stuff_Same */ + /* if it turns out not to be true. */ + break; + + /* Stuff_Zero: We already have at least one zero encoded */ + case Stuff_Zero: + /* If another zero, count it, else finish this code block */ + if (*src == 0) { + count++; + src++; + } else { + StuffData_FinishBlock(Stuff_Zero + count); + } + break; + + /* Stuff_Same: We already have at least one byte encoded */ + case Stuff_Same: + /* If another one the same, count it */ + if ((*src ^ Stuff_Magic) == code_ptr[1]) { + count++; + src++; + break; + } + /* else, this byte does not match this block. */ + /* If we already have two or more bytes encoded, finish this code block */ + if (count) { + StuffData_FinishBlock(Stuff_Same + count); + break; + } + /* else, we only have one so far, so switch to Stuff_Diff code */ + code = Stuff_Diff; + /* and fall through to Stuff_Diff case below + * Note cunning cleverness here: case Stuff_Diff compares + * the current character with the previous two to see if it + * has a run of three the same. Won't this be an error if + * there aren't two previous characters stored to compare with? + * No. Because we know the current character is *not* the same + * as the previous one, the first test below will necessarily + * fail and the send half of the "if" won't be executed. + */ + + /* Stuff_Diff: We have at least two *different* bytes encoded */ + case Stuff_Diff: + /* If this is a zero, must encode a Stuff_DiffZero, and begin a new block */ + if (*src == 0) { + StuffData_FinishBlock(Stuff_DiffZero + + count); + } + /* else, if we have three in a row, it is worth starting a Stuff_Same block */ + else if ((*src ^ Stuff_Magic) == dst[-1] + && dst[-1] == dst[-2]) { + /* Back off the last two characters we encoded */ + code += count - 2; + /* Note: "Stuff_Diff + 0" is an illegal code */ + if (code == Stuff_Diff + 0) { + code = Stuff_Same + 0; + } + StuffData_FinishBlock(code); + code_ptr = dst - 2; + /* dst[-1] already holds the correct value */ + count = 2; /* 2 means three bytes encoded */ + code = Stuff_Same; + } + /* else, another different byte, so add it to the block */ + else { + *dst++ = *src ^ Stuff_Magic; + count++; + } + src++; /* Consume the byte */ + break; + } + if (count == Stuff_MaxCount) { + StuffData_FinishBlock(code + count); + } + } + if (code == Stuff_NoCode) { + *code_ptr_ptr = NULL; + } else { + *code_ptr_ptr = code_ptr; + StuffData_FinishBlock(code + count); + } + return (dst); } /* @@ -776,78 +691,75 @@ * call to resume correctly). */ -static __u8 *UnStuffData(__u8 *src, __u8 *end, __u8 *dst, __u32 dst_length) +static __u8 *UnStuffData(__u8 * src, __u8 * end, __u8 * dst, + __u32 dst_length) { - __u8 *dst_end = dst + dst_length; - /* Sanity check */ - if (!src || !end || !dst || !dst_length) - return(NULL); - while (src < end && dst < dst_end) - { - int count = (*src ^ Stuff_Magic) & Stuff_CountMask; - switch ((*src ^ Stuff_Magic) & Stuff_CodeMask) - { - case Stuff_Diff: - if (src+1+count >= end) - return(NULL); - do - { - *dst++ = *++src ^ Stuff_Magic; - } - while(--count >= 0 && dst < dst_end); - if (count < 0) - src += 1; - else - { - if (count == 0) - *src = Stuff_Same ^ Stuff_Magic; - else - *src = (Stuff_Diff + count) ^ Stuff_Magic; - } - break; - case Stuff_DiffZero: - if (src+1+count >= end) - return(NULL); - do - { - *dst++ = *++src ^ Stuff_Magic; - } - while(--count >= 0 && dst < dst_end); - if (count < 0) - *src = Stuff_Zero ^ Stuff_Magic; - else - *src = (Stuff_DiffZero + count) ^ Stuff_Magic; - break; - case Stuff_Same: - if (src+1 >= end) - return(NULL); - do - { - *dst++ = src[1] ^ Stuff_Magic; - } - while(--count >= 0 && dst < dst_end); - if (count < 0) - src += 2; - else - *src = (Stuff_Same + count) ^ Stuff_Magic; - break; - case Stuff_Zero: - do - { - *dst++ = 0; - } - while(--count >= 0 && dst < dst_end); - if (count < 0) - src += 1; - else - *src = (Stuff_Zero + count) ^ Stuff_Magic; - break; - } - } - if (dst < dst_end) - return(NULL); - else - return(src); + __u8 *dst_end = dst + dst_length; + /* Sanity check */ + if (!src || !end || !dst || !dst_length) + return (NULL); + while (src < end && dst < dst_end) { + int count = (*src ^ Stuff_Magic) & Stuff_CountMask; + switch ((*src ^ Stuff_Magic) & Stuff_CodeMask) { + case Stuff_Diff: + if (src + 1 + count >= end) + return (NULL); + do { + *dst++ = *++src ^ Stuff_Magic; + } + while (--count >= 0 && dst < dst_end); + if (count < 0) + src += 1; + else { + if (count == 0) + *src = Stuff_Same ^ Stuff_Magic; + else + *src = + (Stuff_Diff + + count) ^ Stuff_Magic; + } + break; + case Stuff_DiffZero: + if (src + 1 + count >= end) + return (NULL); + do { + *dst++ = *++src ^ Stuff_Magic; + } + while (--count >= 0 && dst < dst_end); + if (count < 0) + *src = Stuff_Zero ^ Stuff_Magic; + else + *src = + (Stuff_DiffZero + count) ^ Stuff_Magic; + break; + case Stuff_Same: + if (src + 1 >= end) + return (NULL); + do { + *dst++ = src[1] ^ Stuff_Magic; + } + while (--count >= 0 && dst < dst_end); + if (count < 0) + src += 2; + else + *src = (Stuff_Same + count) ^ Stuff_Magic; + break; + case Stuff_Zero: + do { + *dst++ = 0; + } + while (--count >= 0 && dst < dst_end); + if (count < 0) + src += 1; + else + *src = (Stuff_Zero + count) ^ Stuff_Magic; + break; + } + } + if (dst < dst_end) + return (NULL); + else + return (src); } @@ -862,16 +774,19 @@ * currently in effect (57.6 or 115.2) is returned. */ static unsigned int get_baud(struct tty_struct *tty) - { - if (!tty || !tty->termios) return(0); - if ((tty->termios->c_cflag & CBAUD) == B38400 && tty->driver_data) - { - struct async_struct *info = (struct async_struct *)tty->driver_data; - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI ) return(B57600); - if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) return(B115200); - } - return(tty->termios->c_cflag & CBAUD); - } +{ + if (!tty || !tty->termios) + return (0); + if ((tty->termios->c_cflag & CBAUD) == B38400 && tty->driver_data) { + struct async_struct *info = + (struct async_struct *) tty->driver_data; + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) + return (B57600); + if ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_VHI) + return (B115200); + } + return (tty->termios->c_cflag & CBAUD); +} /* * set_baud sets the baud rate to the rate defined by baudcode @@ -882,12 +797,12 @@ * user, so it is simplest to just avoid using 38400. */ static void set_baud(struct tty_struct *tty, unsigned int baudcode) - { - struct termios old_termios = *(tty->termios); - tty->termios->c_cflag &= ~CBAUD; /* Clear the old baud setting */ - tty->termios->c_cflag |= baudcode; /* Set the new baud setting */ - tty->driver.set_termios(tty, &old_termios); - } +{ + struct termios old_termios = *(tty->termios); + tty->termios->c_cflag &= ~CBAUD; /* Clear the old baud setting */ + tty->termios->c_cflag |= baudcode; /* Set the new baud setting */ + tty->driver.set_termios(tty, &old_termios); +} /* * Convert a string to a Metricom Address. @@ -898,26 +813,29 @@ (p)[4] == '-' && \ isdigit((p)[5]) && isdigit((p)[6]) && isdigit((p)[7]) && isdigit((p)[8]) ) -static int string_to_radio_address(MetricomAddress *addr, __u8 *p) +static int string_to_radio_address(MetricomAddress * addr, __u8 * p) { - if (!IS_RADIO_ADDRESS(p)) return(1); - addr->c[0] = 0; - addr->c[1] = 0; - addr->c[2] = READHEX(p[0]) << 4 | READHEX(p[1]); - addr->c[3] = READHEX(p[2]) << 4 | READHEX(p[3]); - addr->c[4] = READHEX(p[5]) << 4 | READHEX(p[6]); - addr->c[5] = READHEX(p[7]) << 4 | READHEX(p[8]); - return(0); + if (!IS_RADIO_ADDRESS(p)) + return (1); + addr->c[0] = 0; + addr->c[1] = 0; + addr->c[2] = READHEX(p[0]) << 4 | READHEX(p[1]); + addr->c[3] = READHEX(p[2]) << 4 | READHEX(p[3]); + addr->c[4] = READHEX(p[5]) << 4 | READHEX(p[6]); + addr->c[5] = READHEX(p[7]) << 4 | READHEX(p[8]); + return (0); } /* * Convert a Metricom Address to a string. */ -static __u8 *radio_address_to_string(const MetricomAddress *addr, MetricomAddressString *p) +static __u8 *radio_address_to_string(const MetricomAddress * addr, + MetricomAddressString * p) { - sprintf(p->c, "%02X%02X-%02X%02X", addr->c[2], addr->c[3], addr->c[4], addr->c[5]); - return(p->c); + sprintf(p->c, "%02X%02X-%02X%02X", addr->c[2], addr->c[3], + addr->c[4], addr->c[5]); + return (p->c); } /* @@ -928,110 +846,101 @@ static int allocate_buffers(struct strip *strip_info) { - struct net_device *dev = &strip_info->dev; - int sx_size = MAX(STRIP_ENCAP_SIZE(MAX_RECV_MTU), 4096); - int tx_size = STRIP_ENCAP_SIZE(dev->mtu) + MaxCommandStringLength; - __u8 *r = kmalloc(MAX_RECV_MTU, GFP_ATOMIC); - __u8 *s = kmalloc(sx_size, GFP_ATOMIC); - __u8 *t = kmalloc(tx_size, GFP_ATOMIC); - if (r && s && t) - { - strip_info->rx_buff = r; - strip_info->sx_buff = s; - strip_info->tx_buff = t; - strip_info->sx_size = sx_size; - strip_info->tx_size = tx_size; - strip_info->mtu = dev->mtu; - return(1); - } - if (r) kfree(r); - if (s) kfree(s); - if (t) kfree(t); - return(0); + struct net_device *dev = &strip_info->dev; + int sx_size = MAX(STRIP_ENCAP_SIZE(MAX_RECV_MTU), 4096); + int tx_size = STRIP_ENCAP_SIZE(dev->mtu) + MaxCommandStringLength; + __u8 *r = kmalloc(MAX_RECV_MTU, GFP_ATOMIC); + __u8 *s = kmalloc(sx_size, GFP_ATOMIC); + __u8 *t = kmalloc(tx_size, GFP_ATOMIC); + if (r && s && t) { + strip_info->rx_buff = r; + strip_info->sx_buff = s; + strip_info->tx_buff = t; + strip_info->sx_size = sx_size; + strip_info->tx_size = tx_size; + strip_info->mtu = dev->mtu; + return (1); + } + if (r) + kfree(r); + if (s) + kfree(s); + if (t) + kfree(t); + return (0); } /* * MTU has been changed by the IP layer. Unfortunately we are not told * about this, but we spot it ourselves and fix things up. We could be in * an upcall from the tty driver, or in an ip packet queue. + * + * Caller must hold the strip_lock */ static void strip_changedmtu(struct strip *strip_info) { - int old_mtu = strip_info->mtu; - struct net_device *dev = &strip_info->dev; - unsigned char *orbuff = strip_info->rx_buff; - unsigned char *osbuff = strip_info->sx_buff; - unsigned char *otbuff = strip_info->tx_buff; - InterruptStatus intstat; - - if (dev->mtu > MAX_SEND_MTU) - { - printk(KERN_ERR "%s: MTU exceeds maximum allowable (%d), MTU change cancelled.\n", - strip_info->dev.name, MAX_SEND_MTU); - dev->mtu = old_mtu; - return; - } - - /* - * Have to disable interrupts here because we're reallocating and resizing - * the serial buffers, and we can't have data arriving in them while we're - * moving them around in memory. This may cause data to be lost on the serial - * port, but hopefully people won't change MTU that often. - * Also note, this may not work on a symmetric multi-processor system. - */ - intstat = DisableInterrupts(); - - if (!allocate_buffers(strip_info)) - { - RestoreInterrupts(intstat); - printk(KERN_ERR "%s: unable to grow strip buffers, MTU change cancelled.\n", - strip_info->dev.name); - dev->mtu = old_mtu; - return; - } - - if (strip_info->sx_count) - { - if (strip_info->sx_count <= strip_info->sx_size) - memcpy(strip_info->sx_buff, osbuff, strip_info->sx_count); - else - { - strip_info->discard = strip_info->sx_count; - strip_info->rx_over_errors++; - } - } - - if (strip_info->tx_left) - { - if (strip_info->tx_left <= strip_info->tx_size) - memcpy(strip_info->tx_buff, strip_info->tx_head, strip_info->tx_left); - else - { - strip_info->tx_left = 0; - strip_info->tx_dropped++; - } - } - strip_info->tx_head = strip_info->tx_buff; - - RestoreInterrupts(intstat); - - printk(KERN_NOTICE "%s: strip MTU changed fom %d to %d.\n", - strip_info->dev.name, old_mtu, strip_info->mtu); - - if (orbuff) kfree(orbuff); - if (osbuff) kfree(osbuff); - if (otbuff) kfree(otbuff); + int old_mtu = strip_info->mtu; + struct net_device *dev = &strip_info->dev; + unsigned char *orbuff = strip_info->rx_buff; + unsigned char *osbuff = strip_info->sx_buff; + unsigned char *otbuff = strip_info->tx_buff; + + if (dev->mtu > MAX_SEND_MTU) { + printk(KERN_ERR + "%s: MTU exceeds maximum allowable (%d), MTU change cancelled.\n", + strip_info->dev.name, MAX_SEND_MTU); + dev->mtu = old_mtu; + return; + } + + if (!allocate_buffers(strip_info)) { + printk(KERN_ERR "%s: unable to grow strip buffers, MTU change cancelled.\n", + strip_info->dev.name); + dev->mtu = old_mtu; + return; + } + + if (strip_info->sx_count) { + if (strip_info->sx_count <= strip_info->sx_size) + memcpy(strip_info->sx_buff, osbuff, + strip_info->sx_count); + else { + strip_info->discard = strip_info->sx_count; + strip_info->rx_over_errors++; + } + } + + if (strip_info->tx_left) { + if (strip_info->tx_left <= strip_info->tx_size) + memcpy(strip_info->tx_buff, strip_info->tx_head, + strip_info->tx_left); + else { + strip_info->tx_left = 0; + strip_info->tx_dropped++; + } + } + strip_info->tx_head = strip_info->tx_buff; + + printk(KERN_NOTICE "%s: strip MTU changed fom %d to %d.\n", + strip_info->dev.name, old_mtu, strip_info->mtu); + + if (orbuff) + kfree(orbuff); + if (osbuff) + kfree(osbuff); + if (otbuff) + kfree(otbuff); } static void strip_unlock(struct strip *strip_info) { - /* - * Set the timer to go off in one second. - */ - strip_info->idle_timer.expires = jiffies + 1*HZ; - add_timer(&strip_info->idle_timer); - netif_wake_queue(&strip_info->dev); + /* + * Set the timer to go off in one second. + */ + strip_info->idle_timer.expires = jiffies + 1 * HZ; + add_timer(&strip_info->idle_timer); + netif_wake_queue(&strip_info->dev); } @@ -1046,32 +955,30 @@ * amount printed so far exceeds the total amount requested, then this * function returns 1, otherwise 0. */ -static int +static int shift_buffer(char *buffer, int requested_offset, int requested_len, - int *total, int *slop, char **buf) + int *total, int *slop, char **buf) { - int printed; + int printed; - /* printk(KERN_DEBUG "shift: buffer: %d o: %d l: %d t: %d buf: %d\n", - (int) buffer, requested_offset, requested_len, *total, - (int) *buf); */ - printed = *buf - buffer; - if (*total + printed <= requested_offset) { - *total += printed; - *buf = buffer; - } - else { - if (*total < requested_offset) { - *slop = requested_offset - *total; - } - *total = requested_offset + printed - *slop; - } - if (*total > requested_offset + requested_len) { - return 1; - } - else { - return 0; - } + /* printk(KERN_DEBUG "shift: buffer: %d o: %d l: %d t: %d buf: %d\n", + (int) buffer, requested_offset, requested_len, *total, + (int) *buf); */ + printed = *buf - buffer; + if (*total + printed <= requested_offset) { + *total += printed; + *buf = buffer; + } else { + if (*total < requested_offset) { + *slop = requested_offset - *total; + } + *total = requested_offset + printed - *slop; + } + if (*total > requested_offset + requested_len) { + return 1; + } else { + return 0; + } } /* @@ -1081,29 +988,29 @@ */ static int calc_start_len(char *buffer, char **start, int requested_offset, - int requested_len, int total, char *buf) + int requested_len, int total, char *buf) { - int return_len, buffer_len; + int return_len, buffer_len; - buffer_len = buf - buffer; - if (buffer_len >= 4095) { - printk(KERN_ERR "STRIP: exceeded /proc buffer size\n"); - } - - /* - * There may be bytes before and after the - * chunk that was actually requested. - */ - return_len = total - requested_offset; - if (return_len < 0) { - return_len = 0; - } - *start = buf - return_len; - if (return_len > requested_len) { - return_len = requested_len; - } - /* printk(KERN_DEBUG "return_len: %d\n", return_len); */ - return return_len; + buffer_len = buf - buffer; + if (buffer_len >= 4095) { + printk(KERN_ERR "STRIP: exceeded /proc buffer size\n"); + } + + /* + * There may be bytes before and after the + * chunk that was actually requested. + */ + return_len = total - requested_offset; + if (return_len < 0) { + return_len = 0; + } + *start = buf - return_len; + if (return_len > requested_len) { + return_len = requested_len; + } + /* printk(KERN_DEBUG "return_len: %d\n", return_len); */ + return return_len; } /* @@ -1116,34 +1023,39 @@ */ static char *time_delta(char buffer[], long time) { - time -= jiffies; - if (time > LongTime / 2) return("Not scheduled"); - if(time < 0) time = 0; /* Don't print negative times */ - sprintf(buffer, "%ld seconds", time / HZ); - return(buffer); -} - -static int sprintf_neighbours(char *buffer, MetricomNodeTable *table, char *title) -{ - /* We wrap this in a do/while loop, so if the table changes */ - /* while we're reading it, we just go around and try again. */ - struct timeval t; - char *ptr; - do - { - int i; - t = table->timestamp; - ptr = buffer; - if (table->num_nodes) ptr += sprintf(ptr, "\n %s\n", title); - for (i=0; inum_nodes; i++) - { - InterruptStatus intstat = DisableInterrupts(); - MetricomNode node = table->node[i]; - RestoreInterrupts(intstat); - ptr += sprintf(ptr, " %s\n", node.c); - } - } while (table->timestamp.tv_sec != t.tv_sec || table->timestamp.tv_usec != t.tv_usec); - return ptr - buffer; + time -= jiffies; + if (time > LongTime / 2) + return ("Not scheduled"); + if (time < 0) + time = 0; /* Don't print negative times */ + sprintf(buffer, "%ld seconds", time / HZ); + return (buffer); +} + +static int sprintf_neighbours(char *buffer, MetricomNodeTable * table, + char *title) +{ + /* We wrap this in a do/while loop, so if the table changes */ + /* while we're reading it, we just go around and try again. */ + struct timeval t; + char *ptr; + unsigned long flags; + + do { + int i; + t = table->timestamp; + ptr = buffer; + if (table->num_nodes) + ptr += sprintf(ptr, "\n %s\n", title); + for (i = 0; i < table->num_nodes; i++) { + spin_lock_irqsave(&strip_lock, flags); + MetricomNode node = table->node[i]; + spin_unlock_irqrestore(&strip_lock, flags); + ptr += sprintf(ptr, " %s\n", node.c); + } + } while (table->timestamp.tv_sec != t.tv_sec + || table->timestamp.tv_usec != t.tv_usec); + return ptr - buffer; } /* @@ -1152,91 +1064,105 @@ * than 4K of data into it. With the maximum of 32 portables and 32 poletops * reported, the routine outputs 3107 bytes into the buffer. */ -static int -sprintf_status_info(char *buffer, struct strip *strip_info) +static int sprintf_status_info(char *buffer, struct strip *strip_info) { - char temp[32]; - char *p = buffer; - MetricomAddressString addr_string; - - /* First, we must copy all of our data to a safe place, */ - /* in case a serial interrupt comes in and changes it. */ - InterruptStatus intstat = DisableInterrupts(); - int tx_left = strip_info->tx_left; - unsigned long rx_average_pps = strip_info->rx_average_pps; - unsigned long tx_average_pps = strip_info->tx_average_pps; - unsigned long sx_average_pps = strip_info->sx_average_pps; - int working = strip_info->working; - int firmware_level = strip_info->firmware_level; - long watchdog_doprobe = strip_info->watchdog_doprobe; - long watchdog_doreset = strip_info->watchdog_doreset; - long gratuitous_arp = strip_info->gratuitous_arp; - long arp_interval = strip_info->arp_interval; - FirmwareVersion firmware_version = strip_info->firmware_version; - SerialNumber serial_number = strip_info->serial_number; - BatteryVoltage battery_voltage = strip_info->battery_voltage; - char* if_name = strip_info->dev.name; - MetricomAddress true_dev_addr = strip_info->true_dev_addr; - MetricomAddress dev_dev_addr = *(MetricomAddress*)strip_info->dev.dev_addr; - int manual_dev_addr = strip_info->manual_dev_addr; + char temp[32]; + char *p = buffer; + MetricomAddressString addr_string; + + /* First, we must copy all of our data to a safe place, */ + /* in case a serial interrupt comes in and changes it. */ + int tx_left = strip_info->tx_left; + unsigned long rx_average_pps = strip_info->rx_average_pps; + unsigned long tx_average_pps = strip_info->tx_average_pps; + unsigned long sx_average_pps = strip_info->sx_average_pps; + int working = strip_info->working; + int firmware_level = strip_info->firmware_level; + long watchdog_doprobe = strip_info->watchdog_doprobe; + long watchdog_doreset = strip_info->watchdog_doreset; + long gratuitous_arp = strip_info->gratuitous_arp; + long arp_interval = strip_info->arp_interval; + FirmwareVersion firmware_version = strip_info->firmware_version; + SerialNumber serial_number = strip_info->serial_number; + BatteryVoltage battery_voltage = strip_info->battery_voltage; + char *if_name = strip_info->dev.name; + MetricomAddress true_dev_addr = strip_info->true_dev_addr; + MetricomAddress dev_dev_addr = + *(MetricomAddress *) strip_info->dev.dev_addr; + int manual_dev_addr = strip_info->manual_dev_addr; #ifdef EXT_COUNTERS - unsigned long rx_bytes = strip_info->rx_bytes; - unsigned long tx_bytes = strip_info->tx_bytes; - unsigned long rx_rbytes = strip_info->rx_rbytes; - unsigned long tx_rbytes = strip_info->tx_rbytes; - unsigned long rx_sbytes = strip_info->rx_sbytes; - unsigned long tx_sbytes = strip_info->tx_sbytes; - unsigned long rx_ebytes = strip_info->rx_ebytes; - unsigned long tx_ebytes = strip_info->tx_ebytes; + unsigned long rx_bytes = strip_info->rx_bytes; + unsigned long tx_bytes = strip_info->tx_bytes; + unsigned long rx_rbytes = strip_info->rx_rbytes; + unsigned long tx_rbytes = strip_info->tx_rbytes; + unsigned long rx_sbytes = strip_info->rx_sbytes; + unsigned long tx_sbytes = strip_info->tx_sbytes; + unsigned long rx_ebytes = strip_info->rx_ebytes; + unsigned long tx_ebytes = strip_info->tx_ebytes; #endif - RestoreInterrupts(intstat); - p += sprintf(p, "\nInterface name\t\t%s\n", if_name); - p += sprintf(p, " Radio working:\t\t%s\n", working ? "Yes" : "No"); - radio_address_to_string(&true_dev_addr, &addr_string); - p += sprintf(p, " Radio address:\t\t%s\n", addr_string.c); - if (manual_dev_addr) - { - radio_address_to_string(&dev_dev_addr, &addr_string); - p += sprintf(p, " Device address:\t%s\n", addr_string.c); - } - p += sprintf(p, " Firmware version:\t%s", !working ? "Unknown" : - !firmware_level ? "Should be upgraded" : - firmware_version.c); - if (firmware_level >= ChecksummedMessages) p += sprintf(p, " (Checksums Enabled)"); - p += sprintf(p, "\n"); - p += sprintf(p, " Serial number:\t\t%s\n", serial_number.c); - p += sprintf(p, " Battery voltage:\t%s\n", battery_voltage.c); - p += sprintf(p, " Transmit queue (bytes):%d\n", tx_left); - p += sprintf(p, " Receive packet rate: %ld packets per second\n", rx_average_pps / 8); - p += sprintf(p, " Transmit packet rate: %ld packets per second\n", tx_average_pps / 8); - p += sprintf(p, " Sent packet rate: %ld packets per second\n", sx_average_pps / 8); - p += sprintf(p, " Next watchdog probe:\t%s\n", time_delta(temp, watchdog_doprobe)); - p += sprintf(p, " Next watchdog reset:\t%s\n", time_delta(temp, watchdog_doreset)); - p += sprintf(p, " Next gratuitous ARP:\t"); - - if (!memcmp(strip_info->dev.dev_addr, zero_address.c, sizeof(zero_address))) - p += sprintf(p, "Disabled\n"); - else - { - p += sprintf(p, "%s\n", time_delta(temp, gratuitous_arp)); - p += sprintf(p, " Next ARP interval:\t%ld seconds\n", JIFFIE_TO_SEC(arp_interval)); - } + p += sprintf(p, "\nInterface name\t\t%s\n", if_name); + p += sprintf(p, " Radio working:\t\t%s\n", working ? "Yes" : "No"); + radio_address_to_string(&true_dev_addr, &addr_string); + p += sprintf(p, " Radio address:\t\t%s\n", addr_string.c); + if (manual_dev_addr) { + radio_address_to_string(&dev_dev_addr, &addr_string); + p += sprintf(p, " Device address:\t%s\n", addr_string.c); + } + p += sprintf(p, " Firmware version:\t%s", !working ? "Unknown" : + !firmware_level ? "Should be upgraded" : + firmware_version.c); + if (firmware_level >= ChecksummedMessages) + p += sprintf(p, " (Checksums Enabled)"); + p += sprintf(p, "\n"); + p += sprintf(p, " Serial number:\t\t%s\n", serial_number.c); + p += sprintf(p, " Battery voltage:\t%s\n", battery_voltage.c); + p += sprintf(p, " Transmit queue (bytes):%d\n", tx_left); + p += sprintf(p, " Receive packet rate: %ld packets per second\n", + rx_average_pps / 8); + p += sprintf(p, " Transmit packet rate: %ld packets per second\n", + tx_average_pps / 8); + p += sprintf(p, " Sent packet rate: %ld packets per second\n", + sx_average_pps / 8); + p += sprintf(p, " Next watchdog probe:\t%s\n", + time_delta(temp, watchdog_doprobe)); + p += sprintf(p, " Next watchdog reset:\t%s\n", + time_delta(temp, watchdog_doreset)); + p += sprintf(p, " Next gratuitous ARP:\t"); + + if (!memcmp + (strip_info->dev.dev_addr, zero_address.c, + sizeof(zero_address))) + p += sprintf(p, "Disabled\n"); + else { + p += sprintf(p, "%s\n", time_delta(temp, gratuitous_arp)); + p += sprintf(p, " Next ARP interval:\t%ld seconds\n", + JIFFIE_TO_SEC(arp_interval)); + } - if (working) - { + if (working) { #ifdef EXT_COUNTERS - p += sprintf(p, "\n"); - p += sprintf(p, " Total bytes: \trx:\t%lu\ttx:\t%lu\n", rx_bytes, tx_bytes); - p += sprintf(p, " thru radio: \trx:\t%lu\ttx:\t%lu\n", rx_rbytes, tx_rbytes); - p += sprintf(p, " thru serial port: \trx:\t%lu\ttx:\t%lu\n", rx_sbytes, tx_sbytes); - p += sprintf(p, " Total stat/err bytes:\trx:\t%lu\ttx:\t%lu\n", rx_ebytes, tx_ebytes); + p += sprintf(p, "\n"); + p += sprintf(p, + " Total bytes: \trx:\t%lu\ttx:\t%lu\n", + rx_bytes, tx_bytes); + p += sprintf(p, + " thru radio: \trx:\t%lu\ttx:\t%lu\n", + rx_rbytes, tx_rbytes); + p += sprintf(p, + " thru serial port: \trx:\t%lu\ttx:\t%lu\n", + rx_sbytes, tx_sbytes); + p += sprintf(p, + " Total stat/err bytes:\trx:\t%lu\ttx:\t%lu\n", + rx_ebytes, tx_ebytes); #endif - p += sprintf_neighbours(p, &strip_info->poletops, "Poletops:"); - p += sprintf_neighbours(p, &strip_info->portables, "Portables:"); - } + p += sprintf_neighbours(p, &strip_info->poletops, + "Poletops:"); + p += sprintf_neighbours(p, &strip_info->portables, + "Portables:"); + } - return p - buffer; + return p - buffer; } /* @@ -1244,23 +1170,27 @@ * the /proc file system. */ -static int get_status_info(char *buffer, char **start, off_t req_offset, int req_len) +static int get_status_info(char *buffer, char **start, off_t req_offset, + int req_len) { - int total = 0, slop = 0; - struct strip *strip_info = struct_strip_list; - char *buf = buffer; - - buf += sprintf(buf, "strip_version: %s\n", StripVersion); - if (shift_buffer(buffer, req_offset, req_len, &total, &slop, &buf)) goto exit; - - while (strip_info != NULL) - { - buf += sprintf_status_info(buf, strip_info); - if (shift_buffer(buffer, req_offset, req_len, &total, &slop, &buf)) break; - strip_info = strip_info->next; - } - exit: - return(calc_start_len(buffer, start, req_offset, req_len, total, buf)); + int total = 0, slop = 0; + struct strip *strip_info = struct_strip_list; + char *buf = buffer; + + buf += sprintf(buf, "strip_version: %s\n", StripVersion); + if (shift_buffer(buffer, req_offset, req_len, &total, &slop, &buf)) + goto exit; + + while (strip_info != NULL) { + buf += sprintf_status_info(buf, strip_info); + if (shift_buffer + (buffer, req_offset, req_len, &total, &slop, &buf)) + break; + strip_info = strip_info->next; + } + exit: + return (calc_start_len + (buffer, start, req_offset, req_len, total, buf)); } /************************************************************************/ @@ -1268,73 +1198,77 @@ static void ResetRadio(struct strip *strip_info) { - struct tty_struct *tty = strip_info->tty; - static const char init[] = "ate0q1dt**starmode\r**"; - StringDescriptor s = { init, sizeof(init)-1 }; - - /* - * If the radio isn't working anymore, - * we should clear the old status information. - */ - if (strip_info->working) - { - printk(KERN_INFO "%s: No response: Resetting radio.\n", strip_info->dev.name); - strip_info->firmware_version.c[0] = '\0'; - strip_info->serial_number.c[0] = '\0'; - strip_info->battery_voltage.c[0] = '\0'; - strip_info->portables.num_nodes = 0; - do_gettimeofday(&strip_info->portables.timestamp); - strip_info->poletops.num_nodes = 0; - do_gettimeofday(&strip_info->poletops.timestamp); - } - - strip_info->pps_timer = jiffies; - strip_info->rx_pps_count = 0; - strip_info->tx_pps_count = 0; - strip_info->sx_pps_count = 0; - strip_info->rx_average_pps = 0; - strip_info->tx_average_pps = 0; - strip_info->sx_average_pps = 0; - - /* Mark radio address as unknown */ - *(MetricomAddress*)&strip_info->true_dev_addr = zero_address; - if (!strip_info->manual_dev_addr) - *(MetricomAddress*)strip_info->dev.dev_addr = zero_address; - strip_info->working = FALSE; - strip_info->firmware_level = NoStructure; - strip_info->next_command = CompatibilityCommand; - strip_info->watchdog_doprobe = jiffies + 10 * HZ; - strip_info->watchdog_doreset = jiffies + 1 * HZ; - - /* If the user has selected a baud rate above 38.4 see what magic we have to do */ - if (strip_info->user_baud > B38400) - { - /* - * Subtle stuff: Pay attention :-) - * If the serial port is currently at the user's selected (>38.4) rate, - * then we temporarily switch to 19.2 and issue the ATS304 command - * to tell the radio to switch to the user's selected rate. - * If the serial port is not currently at that rate, that means we just - * issued the ATS304 command last time through, so this time we restore - * the user's selected rate and issue the normal starmode reset string. - */ - if (strip_info->user_baud == get_baud(tty)) - { - static const char b0[] = "ate0q1s304=57600\r"; - static const char b1[] = "ate0q1s304=115200\r"; - static const StringDescriptor baudstring[2] = - { { b0, sizeof(b0)-1 }, { b1, sizeof(b1)-1 } }; - set_baud(tty, B19200); - if (strip_info->user_baud == B57600 ) s = baudstring[0]; - else if (strip_info->user_baud == B115200) s = baudstring[1]; - else s = baudstring[1]; /* For now */ - } - else set_baud(tty, strip_info->user_baud); - } + struct tty_struct *tty = strip_info->tty; + static const char init[] = "ate0q1dt**starmode\r**"; + StringDescriptor s = { init, sizeof(init) - 1 }; + + /* + * If the radio isn't working anymore, + * we should clear the old status information. + */ + if (strip_info->working) { + printk(KERN_INFO "%s: No response: Resetting radio.\n", + strip_info->dev.name); + strip_info->firmware_version.c[0] = '\0'; + strip_info->serial_number.c[0] = '\0'; + strip_info->battery_voltage.c[0] = '\0'; + strip_info->portables.num_nodes = 0; + do_gettimeofday(&strip_info->portables.timestamp); + strip_info->poletops.num_nodes = 0; + do_gettimeofday(&strip_info->poletops.timestamp); + } - tty->driver.write(tty, 0, s.string, s.length); + strip_info->pps_timer = jiffies; + strip_info->rx_pps_count = 0; + strip_info->tx_pps_count = 0; + strip_info->sx_pps_count = 0; + strip_info->rx_average_pps = 0; + strip_info->tx_average_pps = 0; + strip_info->sx_average_pps = 0; + + /* Mark radio address as unknown */ + *(MetricomAddress *) & strip_info->true_dev_addr = zero_address; + if (!strip_info->manual_dev_addr) + *(MetricomAddress *) strip_info->dev.dev_addr = + zero_address; + strip_info->working = FALSE; + strip_info->firmware_level = NoStructure; + strip_info->next_command = CompatibilityCommand; + strip_info->watchdog_doprobe = jiffies + 10 * HZ; + strip_info->watchdog_doreset = jiffies + 1 * HZ; + + /* If the user has selected a baud rate above 38.4 see what magic we have to do */ + if (strip_info->user_baud > B38400) { + /* + * Subtle stuff: Pay attention :-) + * If the serial port is currently at the user's selected (>38.4) rate, + * then we temporarily switch to 19.2 and issue the ATS304 command + * to tell the radio to switch to the user's selected rate. + * If the serial port is not currently at that rate, that means we just + * issued the ATS304 command last time through, so this time we restore + * the user's selected rate and issue the normal starmode reset string. + */ + if (strip_info->user_baud == get_baud(tty)) { + static const char b0[] = "ate0q1s304=57600\r"; + static const char b1[] = "ate0q1s304=115200\r"; + static const StringDescriptor baudstring[2] = + { {b0, sizeof(b0) - 1} + , {b1, sizeof(b1) - 1} + }; + set_baud(tty, B19200); + if (strip_info->user_baud == B57600) + s = baudstring[0]; + else if (strip_info->user_baud == B115200) + s = baudstring[1]; + else + s = baudstring[1]; /* For now */ + } else + set_baud(tty, strip_info->user_baud); + } + + tty->driver.write(tty, 0, s.string, s.length); #ifdef EXT_COUNTERS - strip_info->tx_ebytes += s.length; + strip_info->tx_ebytes += s.length; #endif } @@ -1345,346 +1279,354 @@ static void strip_write_some_more(struct tty_struct *tty) { - struct strip *strip_info = (struct strip *) tty->disc_data; + struct strip *strip_info = (struct strip *) tty->disc_data; - /* First make sure we're connected. */ - if (!strip_info || strip_info->magic != STRIP_MAGIC || - !netif_running(&strip_info->dev)) - return; - - if (strip_info->tx_left > 0) - { - /* - * If some data left, send it - * Note: There's a kernel design bug here. The write_wakeup routine has to - * know how many bytes were written in the previous call, but the number of - * bytes written is returned as the result of the tty->driver.write call, - * and there's no guarantee that the tty->driver.write routine will have - * returned before the write_wakeup routine is invoked. If the PC has fast - * Serial DMA hardware, then it's quite possible that the write could complete - * almost instantaneously, meaning that my write_wakeup routine could be - * called immediately, before tty->driver.write has had a chance to return - * the number of bytes that it wrote. In an attempt to guard against this, - * I disable interrupts around the call to tty->driver.write, although even - * this might not work on a symmetric multi-processor system. - */ - InterruptStatus intstat = DisableInterrupts(); - int num_written = tty->driver.write(tty, 0, strip_info->tx_head, strip_info->tx_left); - strip_info->tx_left -= num_written; - strip_info->tx_head += num_written; + /* First make sure we're connected. */ + if (!strip_info || strip_info->magic != STRIP_MAGIC || + !netif_running(&strip_info->dev)) + return; + + if (strip_info->tx_left > 0) { + int num_written = + tty->driver.write(tty, 0, strip_info->tx_head, + strip_info->tx_left); + strip_info->tx_left -= num_written; + strip_info->tx_head += num_written; #ifdef EXT_COUNTERS - strip_info->tx_sbytes += num_written; + strip_info->tx_sbytes += num_written; #endif - RestoreInterrupts(intstat); - } - else /* Else start transmission of another packet */ - { - tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP); - strip_unlock(strip_info); - } -} - -static __u8 *add_checksum(__u8 *buffer, __u8 *end) -{ - __u16 sum = 0; - __u8 *p = buffer; - while (p < end) sum += *p++; - end[3] = hextable[sum & 0xF]; sum >>= 4; - end[2] = hextable[sum & 0xF]; sum >>= 4; - end[1] = hextable[sum & 0xF]; sum >>= 4; - end[0] = hextable[sum & 0xF]; - return(end+4); -} - -static unsigned char *strip_make_packet(unsigned char *buffer, struct strip *strip_info, struct sk_buff *skb) -{ - __u8 *ptr = buffer; - __u8 *stuffstate = NULL; - STRIP_Header *header = (STRIP_Header *)skb->data; - MetricomAddress haddr = header->dst_addr; - int len = skb->len - sizeof(STRIP_Header); - MetricomKey key; - - /*HexDump("strip_make_packet", strip_info, skb->data, skb->data + skb->len);*/ - - if (header->protocol == htons(ETH_P_IP)) key = SIP0Key; - else if (header->protocol == htons(ETH_P_ARP)) key = ARP0Key; - else - { - printk(KERN_ERR "%s: strip_make_packet: Unknown packet type 0x%04X\n", - strip_info->dev.name, ntohs(header->protocol)); - return(NULL); - } - - if (len > strip_info->mtu) - { - printk(KERN_ERR "%s: Dropping oversized transmit packet: %d bytes\n", - strip_info->dev.name, len); - return(NULL); - } - - /* - * If we're sending to ourselves, discard the packet. - * (Metricom radios choke if they try to send a packet to their own address.) - */ - if (!memcmp(haddr.c, strip_info->true_dev_addr.c, sizeof(haddr))) - { - printk(KERN_ERR "%s: Dropping packet addressed to self\n", strip_info->dev.name); - return(NULL); - } - - /* - * If this is a broadcast packet, send it to our designated Metricom - * 'broadcast hub' radio (First byte of address being 0xFF means broadcast) - */ - if (haddr.c[0] == 0xFF) - { - u32 brd = 0; - struct in_device *in_dev = in_dev_get(&strip_info->dev); - if (in_dev == NULL) - return NULL; - read_lock(&in_dev->lock); - if (in_dev->ifa_list) - brd = in_dev->ifa_list->ifa_broadcast; - read_unlock(&in_dev->lock); - in_dev_put(in_dev); - - /* arp_query returns 1 if it succeeds in looking up the address, 0 if it fails */ - if (!arp_query(haddr.c, brd, &strip_info->dev)) - { - printk(KERN_ERR "%s: Unable to send packet (no broadcast hub configured)\n", - strip_info->dev.name); - return(NULL); - } + } else { /* Else start transmission of another packet */ + + tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP); + strip_unlock(strip_info); + } +} + +static __u8 *add_checksum(__u8 * buffer, __u8 * end) +{ + __u16 sum = 0; + __u8 *p = buffer; + while (p < end) + sum += *p++; + end[3] = hextable[sum & 0xF]; + sum >>= 4; + end[2] = hextable[sum & 0xF]; + sum >>= 4; + end[1] = hextable[sum & 0xF]; + sum >>= 4; + end[0] = hextable[sum & 0xF]; + return (end + 4); +} + +static unsigned char *strip_make_packet(unsigned char *buffer, + struct strip *strip_info, + struct sk_buff *skb) +{ + __u8 *ptr = buffer; + __u8 *stuffstate = NULL; + STRIP_Header *header = (STRIP_Header *) skb->data; + MetricomAddress haddr = header->dst_addr; + int len = skb->len - sizeof(STRIP_Header); + MetricomKey key; + + /*HexDump("strip_make_packet", strip_info, skb->data, skb->data + skb->len); */ + + if (header->protocol == htons(ETH_P_IP)) + key = SIP0Key; + else if (header->protocol == htons(ETH_P_ARP)) + key = ARP0Key; + else { + printk(KERN_ERR + "%s: strip_make_packet: Unknown packet type 0x%04X\n", + strip_info->dev.name, ntohs(header->protocol)); + return (NULL); + } + + if (len > strip_info->mtu) { + printk(KERN_ERR + "%s: Dropping oversized transmit packet: %d bytes\n", + strip_info->dev.name, len); + return (NULL); + } + /* - * If we are the broadcast hub, don't bother sending to ourselves. + * If we're sending to ourselves, discard the packet. * (Metricom radios choke if they try to send a packet to their own address.) */ - if (!memcmp(haddr.c, strip_info->true_dev_addr.c, sizeof(haddr))) return(NULL); - } + if (!memcmp(haddr.c, strip_info->true_dev_addr.c, sizeof(haddr))) { + printk(KERN_ERR "%s: Dropping packet addressed to self\n", + strip_info->dev.name); + return (NULL); + } - *ptr++ = 0x0D; - *ptr++ = '*'; - *ptr++ = hextable[haddr.c[2] >> 4]; - *ptr++ = hextable[haddr.c[2] & 0xF]; - *ptr++ = hextable[haddr.c[3] >> 4]; - *ptr++ = hextable[haddr.c[3] & 0xF]; - *ptr++ = '-'; - *ptr++ = hextable[haddr.c[4] >> 4]; - *ptr++ = hextable[haddr.c[4] & 0xF]; - *ptr++ = hextable[haddr.c[5] >> 4]; - *ptr++ = hextable[haddr.c[5] & 0xF]; - *ptr++ = '*'; - *ptr++ = key.c[0]; - *ptr++ = key.c[1]; - *ptr++ = key.c[2]; - *ptr++ = key.c[3]; + /* + * If this is a broadcast packet, send it to our designated Metricom + * 'broadcast hub' radio (First byte of address being 0xFF means broadcast) + */ + if (haddr.c[0] == 0xFF) { + u32 brd = 0; + struct in_device *in_dev = in_dev_get(&strip_info->dev); + if (in_dev == NULL) + return NULL; + read_lock(&in_dev->lock); + if (in_dev->ifa_list) + brd = in_dev->ifa_list->ifa_broadcast; + read_unlock(&in_dev->lock); + in_dev_put(in_dev); + + /* arp_query returns 1 if it succeeds in looking up the address, 0 if it fails */ + if (!arp_query(haddr.c, brd, &strip_info->dev)) { + printk(KERN_ERR + "%s: Unable to send packet (no broadcast hub configured)\n", + strip_info->dev.name); + return (NULL); + } + /* + * If we are the broadcast hub, don't bother sending to ourselves. + * (Metricom radios choke if they try to send a packet to their own address.) + */ + if (!memcmp + (haddr.c, strip_info->true_dev_addr.c, sizeof(haddr))) + return (NULL); + } - ptr = StuffData(skb->data + sizeof(STRIP_Header), len, ptr, &stuffstate); + *ptr++ = 0x0D; + *ptr++ = '*'; + *ptr++ = hextable[haddr.c[2] >> 4]; + *ptr++ = hextable[haddr.c[2] & 0xF]; + *ptr++ = hextable[haddr.c[3] >> 4]; + *ptr++ = hextable[haddr.c[3] & 0xF]; + *ptr++ = '-'; + *ptr++ = hextable[haddr.c[4] >> 4]; + *ptr++ = hextable[haddr.c[4] & 0xF]; + *ptr++ = hextable[haddr.c[5] >> 4]; + *ptr++ = hextable[haddr.c[5] & 0xF]; + *ptr++ = '*'; + *ptr++ = key.c[0]; + *ptr++ = key.c[1]; + *ptr++ = key.c[2]; + *ptr++ = key.c[3]; + + ptr = + StuffData(skb->data + sizeof(STRIP_Header), len, ptr, + &stuffstate); - if (strip_info->firmware_level >= ChecksummedMessages) ptr = add_checksum(buffer+1, ptr); + if (strip_info->firmware_level >= ChecksummedMessages) + ptr = add_checksum(buffer + 1, ptr); - *ptr++ = 0x0D; - return(ptr); + *ptr++ = 0x0D; + return (ptr); } static void strip_send(struct strip *strip_info, struct sk_buff *skb) { - MetricomAddress haddr; - unsigned char *ptr = strip_info->tx_buff; - int doreset = (long)jiffies - strip_info->watchdog_doreset >= 0; - int doprobe = (long)jiffies - strip_info->watchdog_doprobe >= 0 && !doreset; - u32 addr, brd; - - /* - * 1. If we have a packet, encapsulate it and put it in the buffer - */ - if (skb) - { - char *newptr = strip_make_packet(ptr, strip_info, skb); - strip_info->tx_pps_count++; - if (!newptr) strip_info->tx_dropped++; - else - { - ptr = newptr; - strip_info->sx_pps_count++; - strip_info->tx_packets++; /* Count another successful packet */ + MetricomAddress haddr; + unsigned char *ptr = strip_info->tx_buff; + int doreset = (long) jiffies - strip_info->watchdog_doreset >= 0; + int doprobe = (long) jiffies - strip_info->watchdog_doprobe >= 0 + && !doreset; + u32 addr, brd; + + /* + * 1. If we have a packet, encapsulate it and put it in the buffer + */ + if (skb) { + char *newptr = strip_make_packet(ptr, strip_info, skb); + strip_info->tx_pps_count++; + if (!newptr) + strip_info->tx_dropped++; + else { + ptr = newptr; + strip_info->sx_pps_count++; + strip_info->tx_packets++; /* Count another successful packet */ #ifdef EXT_COUNTERS - strip_info->tx_bytes += skb->len; - strip_info->tx_rbytes += ptr - strip_info->tx_buff; + strip_info->tx_bytes += skb->len; + strip_info->tx_rbytes += ptr - strip_info->tx_buff; #endif - /*DumpData("Sending:", strip_info, strip_info->tx_buff, ptr);*/ - /*HexDump("Sending", strip_info, strip_info->tx_buff, ptr);*/ - } - } - - /* - * 2. If it is time for another tickle, tack it on, after the packet - */ - if (doprobe) - { - StringDescriptor ts = CommandString[strip_info->next_command]; + /*DumpData("Sending:", strip_info, strip_info->tx_buff, ptr); */ + /*HexDump("Sending", strip_info, strip_info->tx_buff, ptr); */ + } + } + + /* + * 2. If it is time for another tickle, tack it on, after the packet + */ + if (doprobe) { + StringDescriptor ts = CommandString[strip_info->next_command]; #if TICKLE_TIMERS - { - struct timeval tv; - do_gettimeofday(&tv); - printk(KERN_INFO "**** Sending tickle string %d at %02d.%06d\n", - strip_info->next_command, tv.tv_sec % 100, tv.tv_usec); - } + { + struct timeval tv; + do_gettimeofday(&tv); + printk(KERN_INFO "**** Sending tickle string %d at %02d.%06d\n", + strip_info->next_command, tv.tv_sec % 100, + tv.tv_usec); + } #endif - if (ptr == strip_info->tx_buff) *ptr++ = 0x0D; - - *ptr++ = '*'; /* First send "**" to provoke an error message */ - *ptr++ = '*'; + if (ptr == strip_info->tx_buff) + *ptr++ = 0x0D; - /* Then add the command */ - memcpy(ptr, ts.string, ts.length); + *ptr++ = '*'; /* First send "**" to provoke an error message */ + *ptr++ = '*'; - /* Add a checksum ? */ - if (strip_info->firmware_level < ChecksummedMessages) ptr += ts.length; - else ptr = add_checksum(ptr, ptr + ts.length); + /* Then add the command */ + memcpy(ptr, ts.string, ts.length); - *ptr++ = 0x0D; /* Terminate the command with a */ - - /* Cycle to next periodic command? */ - if (strip_info->firmware_level >= StructuredMessages) - if (++strip_info->next_command >= ELEMENTS_OF(CommandString)) - strip_info->next_command = 0; + /* Add a checksum ? */ + if (strip_info->firmware_level < ChecksummedMessages) + ptr += ts.length; + else + ptr = add_checksum(ptr, ptr + ts.length); + + *ptr++ = 0x0D; /* Terminate the command with a */ + + /* Cycle to next periodic command? */ + if (strip_info->firmware_level >= StructuredMessages) + if (++strip_info->next_command >= + ELEMENTS_OF(CommandString)) + strip_info->next_command = 0; #ifdef EXT_COUNTERS - strip_info->tx_ebytes += ts.length; + strip_info->tx_ebytes += ts.length; #endif - strip_info->watchdog_doprobe = jiffies + 10 * HZ; - strip_info->watchdog_doreset = jiffies + 1 * HZ; - /*printk(KERN_INFO "%s: Routine radio test.\n", strip_info->dev.name);*/ - } - - /* - * 3. Set up the strip_info ready to send the data (if any). - */ - strip_info->tx_head = strip_info->tx_buff; - strip_info->tx_left = ptr - strip_info->tx_buff; - strip_info->tty->flags |= (1 << TTY_DO_WRITE_WAKEUP); - - /* - * 4. Debugging check to make sure we're not overflowing the buffer. - */ - if (strip_info->tx_size - strip_info->tx_left < 20) - printk(KERN_ERR "%s: Sending%5d bytes;%5d bytes free.\n", strip_info->dev.name, - strip_info->tx_left, strip_info->tx_size - strip_info->tx_left); - - /* - * 5. If watchdog has expired, reset the radio. Note: if there's data waiting in - * the buffer, strip_write_some_more will send it after the reset has finished - */ - if (doreset) { ResetRadio(strip_info); return; } - - if (1) { - struct in_device *in_dev = in_dev_get(&strip_info->dev); - brd = addr = 0; - if (in_dev) { - read_lock(&in_dev->lock); - if (in_dev->ifa_list) { - brd = in_dev->ifa_list->ifa_broadcast; - addr = in_dev->ifa_list->ifa_local; - } - read_unlock(&in_dev->lock); - in_dev_put(in_dev); - } - } - - - /* - * 6. If it is time for a periodic ARP, queue one up to be sent. - * We only do this if: - * 1. The radio is working - * 2. It's time to send another periodic ARP - * 3. We really know what our address is (and it is not manually set to zero) - * 4. We have a designated broadcast address configured - * If we queue up an ARP packet when we don't have a designated broadcast - * address configured, then the packet will just have to be discarded in - * strip_make_packet. This is not fatal, but it causes misleading information - * to be displayed in tcpdump. tcpdump will report that periodic APRs are - * being sent, when in fact they are not, because they are all being dropped - * in the strip_make_packet routine. - */ - if (strip_info->working && (long)jiffies - strip_info->gratuitous_arp >= 0 && - memcmp(strip_info->dev.dev_addr, zero_address.c, sizeof(zero_address)) && - arp_query(haddr.c, brd, &strip_info->dev)) - { - /*printk(KERN_INFO "%s: Sending gratuitous ARP with interval %ld\n", - strip_info->dev.name, strip_info->arp_interval / HZ);*/ - strip_info->gratuitous_arp = jiffies + strip_info->arp_interval; - strip_info->arp_interval *= 2; - if (strip_info->arp_interval > MaxARPInterval) - strip_info->arp_interval = MaxARPInterval; - if (addr) - arp_send( - ARPOP_REPLY, ETH_P_ARP, - addr, /* Target address of ARP packet is our address */ - &strip_info->dev, /* Device to send packet on */ - addr, /* Source IP address this ARP packet comes from */ - NULL, /* Destination HW address is NULL (broadcast it) */ - strip_info->dev.dev_addr, /* Source HW address is our HW address */ - strip_info->dev.dev_addr); /* Target HW address is our HW address (redundant) */ - } - - /* - * 7. All ready. Start the transmission - */ - strip_write_some_more(strip_info->tty); + strip_info->watchdog_doprobe = jiffies + 10 * HZ; + strip_info->watchdog_doreset = jiffies + 1 * HZ; + /*printk(KERN_INFO "%s: Routine radio test.\n", strip_info->dev.name); */ + } + + /* + * 3. Set up the strip_info ready to send the data (if any). + */ + strip_info->tx_head = strip_info->tx_buff; + strip_info->tx_left = ptr - strip_info->tx_buff; + strip_info->tty->flags |= (1 << TTY_DO_WRITE_WAKEUP); + + /* + * 4. Debugging check to make sure we're not overflowing the buffer. + */ + if (strip_info->tx_size - strip_info->tx_left < 20) + printk(KERN_ERR "%s: Sending%5d bytes;%5d bytes free.\n", + strip_info->dev.name, strip_info->tx_left, + strip_info->tx_size - strip_info->tx_left); + + /* + * 5. If watchdog has expired, reset the radio. Note: if there's data waiting in + * the buffer, strip_write_some_more will send it after the reset has finished + */ + if (doreset) { + ResetRadio(strip_info); + return; + } + + if (1) { + struct in_device *in_dev = in_dev_get(&strip_info->dev); + brd = addr = 0; + if (in_dev) { + read_lock(&in_dev->lock); + if (in_dev->ifa_list) { + brd = in_dev->ifa_list->ifa_broadcast; + addr = in_dev->ifa_list->ifa_local; + } + read_unlock(&in_dev->lock); + in_dev_put(in_dev); + } + } + + + /* + * 6. If it is time for a periodic ARP, queue one up to be sent. + * We only do this if: + * 1. The radio is working + * 2. It's time to send another periodic ARP + * 3. We really know what our address is (and it is not manually set to zero) + * 4. We have a designated broadcast address configured + * If we queue up an ARP packet when we don't have a designated broadcast + * address configured, then the packet will just have to be discarded in + * strip_make_packet. This is not fatal, but it causes misleading information + * to be displayed in tcpdump. tcpdump will report that periodic APRs are + * being sent, when in fact they are not, because they are all being dropped + * in the strip_make_packet routine. + */ + if (strip_info->working + && (long) jiffies - strip_info->gratuitous_arp >= 0 + && memcmp(strip_info->dev.dev_addr, zero_address.c, + sizeof(zero_address)) + && arp_query(haddr.c, brd, &strip_info->dev)) { + /*printk(KERN_INFO "%s: Sending gratuitous ARP with interval %ld\n", + strip_info->dev.name, strip_info->arp_interval / HZ); */ + strip_info->gratuitous_arp = + jiffies + strip_info->arp_interval; + strip_info->arp_interval *= 2; + if (strip_info->arp_interval > MaxARPInterval) + strip_info->arp_interval = MaxARPInterval; + if (addr) + arp_send(ARPOP_REPLY, ETH_P_ARP, addr, /* Target address of ARP packet is our address */ + &strip_info->dev, /* Device to send packet on */ + addr, /* Source IP address this ARP packet comes from */ + NULL, /* Destination HW address is NULL (broadcast it) */ + strip_info->dev.dev_addr, /* Source HW address is our HW address */ + strip_info->dev.dev_addr); /* Target HW address is our HW address (redundant) */ + } + + /* + * 7. All ready. Start the transmission + */ + strip_write_some_more(strip_info->tty); } /* Encapsulate a datagram and kick it into a TTY queue. */ static int strip_xmit(struct sk_buff *skb, struct net_device *dev) { - struct strip *strip_info = (struct strip *)(dev->priv); + struct strip *strip_info = (struct strip *) (dev->priv); + unsigned long flags; + + if (!netif_running(dev)) { + printk(KERN_ERR "%s: xmit call when iface is down\n", + dev->name); + return (1); + } - if (!netif_running(dev)) - { - printk(KERN_ERR "%s: xmit call when iface is down\n", dev->name); - return(1); - } - - netif_stop_queue(dev); - - del_timer(&strip_info->idle_timer); - - /* See if someone has been ifconfigging */ - if (strip_info->mtu != strip_info->dev.mtu) - strip_changedmtu(strip_info); - - if (jiffies - strip_info->pps_timer > HZ) - { - unsigned long t = jiffies - strip_info->pps_timer; - unsigned long rx_pps_count = (strip_info->rx_pps_count * HZ * 8 + t/2) / t; - unsigned long tx_pps_count = (strip_info->tx_pps_count * HZ * 8 + t/2) / t; - unsigned long sx_pps_count = (strip_info->sx_pps_count * HZ * 8 + t/2) / t; - - strip_info->pps_timer = jiffies; - strip_info->rx_pps_count = 0; - strip_info->tx_pps_count = 0; - strip_info->sx_pps_count = 0; - - strip_info->rx_average_pps = (strip_info->rx_average_pps + rx_pps_count + 1) / 2; - strip_info->tx_average_pps = (strip_info->tx_average_pps + tx_pps_count + 1) / 2; - strip_info->sx_average_pps = (strip_info->sx_average_pps + sx_pps_count + 1) / 2; - - if (rx_pps_count / 8 >= 10) - printk(KERN_INFO "%s: WARNING: Receiving %ld packets per second.\n", - strip_info->dev.name, rx_pps_count / 8); - if (tx_pps_count / 8 >= 10) - printk(KERN_INFO "%s: WARNING: Tx %ld packets per second.\n", - strip_info->dev.name, tx_pps_count / 8); - if (sx_pps_count / 8 >= 10) - printk(KERN_INFO "%s: WARNING: Sending %ld packets per second.\n", - strip_info->dev.name, sx_pps_count / 8); - } - - strip_send(strip_info, skb); - - if (skb) - dev_kfree_skb(skb); - return(0); + netif_stop_queue(dev); + + del_timer(&strip_info->idle_timer); + + + if (jiffies - strip_info->pps_timer > HZ) { + unsigned long t = jiffies - strip_info->pps_timer; + unsigned long rx_pps_count = (strip_info->rx_pps_count * HZ * 8 + t / 2) / t; + unsigned long tx_pps_count = (strip_info->tx_pps_count * HZ * 8 + t / 2) / t; + unsigned long sx_pps_count = (strip_info->sx_pps_count * HZ * 8 + t / 2) / t; + + strip_info->pps_timer = jiffies; + strip_info->rx_pps_count = 0; + strip_info->tx_pps_count = 0; + strip_info->sx_pps_count = 0; + + strip_info->rx_average_pps = (strip_info->rx_average_pps + rx_pps_count + 1) / 2; + strip_info->tx_average_pps = (strip_info->tx_average_pps + tx_pps_count + 1) / 2; + strip_info->sx_average_pps = (strip_info->sx_average_pps + sx_pps_count + 1) / 2; + + if (rx_pps_count / 8 >= 10) + printk(KERN_INFO "%s: WARNING: Receiving %ld packets per second.\n", + strip_info->dev.name, rx_pps_count / 8); + if (tx_pps_count / 8 >= 10) + printk(KERN_INFO "%s: WARNING: Tx %ld packets per second.\n", + strip_info->dev.name, tx_pps_count / 8); + if (sx_pps_count / 8 >= 10) + printk(KERN_INFO "%s: WARNING: Sending %ld packets per second.\n", + strip_info->dev.name, sx_pps_count / 8); + } + + spin_lock_irqsave(&strip_lock, flags); + /* See if someone has been ifconfigging */ + if (strip_info->mtu != strip_info->dev.mtu) + strip_changedmtu(strip_info); + + strip_send(strip_info, skb); + + spin_unlock_irqrestore(&strip_lock, flags); + + if (skb) + dev_kfree_skb(skb); + return 0; } /* @@ -1695,7 +1637,7 @@ static void strip_IdleTask(unsigned long parameter) { - strip_xmit(NULL, (struct net_device *)parameter); + strip_xmit(NULL, (struct net_device *) parameter); } /* @@ -1710,23 +1652,25 @@ */ static int strip_header(struct sk_buff *skb, struct net_device *dev, - unsigned short type, void *daddr, void *saddr, unsigned len) + unsigned short type, void *daddr, void *saddr, + unsigned len) { - struct strip *strip_info = (struct strip *)(dev->priv); - STRIP_Header *header = (STRIP_Header *)skb_push(skb, sizeof(STRIP_Header)); + struct strip *strip_info = (struct strip *) (dev->priv); + STRIP_Header *header = (STRIP_Header *) skb_push(skb, sizeof(STRIP_Header)); - /*printk(KERN_INFO "%s: strip_header 0x%04X %s\n", dev->name, type, - type == ETH_P_IP ? "IP" : type == ETH_P_ARP ? "ARP" : "");*/ + /*printk(KERN_INFO "%s: strip_header 0x%04X %s\n", dev->name, type, + type == ETH_P_IP ? "IP" : type == ETH_P_ARP ? "ARP" : ""); */ - header->src_addr = strip_info->true_dev_addr; - header->protocol = htons(type); + header->src_addr = strip_info->true_dev_addr; + header->protocol = htons(type); - /*HexDump("strip_header", (struct strip *)(dev->priv), skb->data, skb->data + skb->len);*/ + /*HexDump("strip_header", (struct strip *)(dev->priv), skb->data, skb->data + skb->len); */ - if (!daddr) return(-dev->hard_header_len); + if (!daddr) + return (-dev->hard_header_len); - header->dst_addr = *(MetricomAddress*)daddr; - return(dev->hard_header_len); + header->dst_addr = *(MetricomAddress *) daddr; + return (dev->hard_header_len); } /* @@ -1740,13 +1684,13 @@ static int strip_rebuild_header(struct sk_buff *skb) { #ifdef CONFIG_INET - STRIP_Header *header = (STRIP_Header *) skb->data; + STRIP_Header *header = (STRIP_Header *) skb->data; - /* Arp find returns zero if if knows the address, */ - /* or if it doesn't know the address it sends an ARP packet and returns non-zero */ - return arp_find(header->dst_addr.c, skb)? 1 : 0; + /* Arp find returns zero if if knows the address, */ + /* or if it doesn't know the address it sends an ARP packet and returns non-zero */ + return arp_find(header->dst_addr.c, skb) ? 1 : 0; #else - return 0; + return 0; #endif } @@ -1756,422 +1700,446 @@ static int strip_receive_room(struct tty_struct *tty) { - return 0x10000; /* We can handle an infinite amount of data. :-) */ + return 0x10000; /* We can handle an infinite amount of data. :-) */ } /* * This function parses the response to the ATS300? command, * extracting the radio version and serial number. */ -static void get_radio_version(struct strip *strip_info, __u8 *ptr, __u8 *end) +static void get_radio_version(struct strip *strip_info, __u8 * ptr, __u8 * end) { - __u8 *p, *value_begin, *value_end; - int len; - - /* Determine the beginning of the second line of the payload */ - p = ptr; - while (p < end && *p != 10) p++; - if (p >= end) return; - p++; - value_begin = p; - - /* Determine the end of line */ - while (p < end && *p != 10) p++; - if (p >= end) return; - value_end = p; - p++; - - len = value_end - value_begin; - len = MIN(len, sizeof(FirmwareVersion) - 1); - if (strip_info->firmware_version.c[0] == 0) - printk(KERN_INFO "%s: Radio Firmware: %.*s\n", - strip_info->dev.name, len, value_begin); - sprintf(strip_info->firmware_version.c, "%.*s", len, value_begin); - - /* Look for the first colon */ - while (p < end && *p != ':') p++; - if (p >= end) return; - /* Skip over the space */ - p += 2; - len = sizeof(SerialNumber) - 1; - if (p + len <= end) { - sprintf(strip_info->serial_number.c, "%.*s", len, p); - } - else { - printk(KERN_DEBUG "STRIP: radio serial number shorter (%d) than expected (%d)\n", - end - p, len); - } + __u8 *p, *value_begin, *value_end; + int len; + + /* Determine the beginning of the second line of the payload */ + p = ptr; + while (p < end && *p != 10) + p++; + if (p >= end) + return; + p++; + value_begin = p; + + /* Determine the end of line */ + while (p < end && *p != 10) + p++; + if (p >= end) + return; + value_end = p; + p++; + + len = value_end - value_begin; + len = MIN(len, sizeof(FirmwareVersion) - 1); + if (strip_info->firmware_version.c[0] == 0) + printk(KERN_INFO "%s: Radio Firmware: %.*s\n", + strip_info->dev.name, len, value_begin); + sprintf(strip_info->firmware_version.c, "%.*s", len, value_begin); + + /* Look for the first colon */ + while (p < end && *p != ':') + p++; + if (p >= end) + return; + /* Skip over the space */ + p += 2; + len = sizeof(SerialNumber) - 1; + if (p + len <= end) { + sprintf(strip_info->serial_number.c, "%.*s", len, p); + } else { + printk(KERN_DEBUG + "STRIP: radio serial number shorter (%d) than expected (%d)\n", + end - p, len); + } } /* * This function parses the response to the ATS325? command, * extracting the radio battery voltage. */ -static void get_radio_voltage(struct strip *strip_info, __u8 *ptr, __u8 *end) +static void get_radio_voltage(struct strip *strip_info, __u8 * ptr, __u8 * end) { - int len; + int len; - len = sizeof(BatteryVoltage) - 1; - if (ptr + len <= end) { - sprintf(strip_info->battery_voltage.c, "%.*s", len, ptr); - } - else { - printk(KERN_DEBUG "STRIP: radio voltage string shorter (%d) than expected (%d)\n", - end - ptr, len); - } + len = sizeof(BatteryVoltage) - 1; + if (ptr + len <= end) { + sprintf(strip_info->battery_voltage.c, "%.*s", len, ptr); + } else { + printk(KERN_DEBUG + "STRIP: radio voltage string shorter (%d) than expected (%d)\n", + end - ptr, len); + } } /* * This function parses the responses to the AT~LA and ATS311 commands, * which list the radio's neighbours. */ -static void get_radio_neighbours(MetricomNodeTable *table, __u8 *ptr, __u8 *end) +static void get_radio_neighbours(MetricomNodeTable * table, __u8 * ptr, __u8 * end) { - table->num_nodes = 0; - while (ptr < end && table->num_nodes < NODE_TABLE_SIZE) - { - MetricomNode *node = &table->node[table->num_nodes++]; - char *dst = node->c, *limit = dst + sizeof(*node) - 1; - while (ptr < end && *ptr <= 32) ptr++; - while (ptr < end && dst < limit && *ptr != 10) *dst++ = *ptr++; - *dst++ = 0; - while (ptr < end && ptr[-1] != 10) ptr++; - } - do_gettimeofday(&table->timestamp); -} - -static int get_radio_address(struct strip *strip_info, __u8 *p) -{ - MetricomAddress addr; - - if (string_to_radio_address(&addr, p)) return(1); - - /* See if our radio address has changed */ - if (memcmp(strip_info->true_dev_addr.c, addr.c, sizeof(addr))) - { - MetricomAddressString addr_string; - radio_address_to_string(&addr, &addr_string); - printk(KERN_INFO "%s: Radio address = %s\n", strip_info->dev.name, addr_string.c); - strip_info->true_dev_addr = addr; - if (!strip_info->manual_dev_addr) *(MetricomAddress*)strip_info->dev.dev_addr = addr; - /* Give the radio a few seconds to get its head straight, then send an arp */ - strip_info->gratuitous_arp = jiffies + 15 * HZ; - strip_info->arp_interval = 1 * HZ; - } - return(0); + table->num_nodes = 0; + while (ptr < end && table->num_nodes < NODE_TABLE_SIZE) { + MetricomNode *node = &table->node[table->num_nodes++]; + char *dst = node->c, *limit = dst + sizeof(*node) - 1; + while (ptr < end && *ptr <= 32) + ptr++; + while (ptr < end && dst < limit && *ptr != 10) + *dst++ = *ptr++; + *dst++ = 0; + while (ptr < end && ptr[-1] != 10) + ptr++; + } + do_gettimeofday(&table->timestamp); +} + +static int get_radio_address(struct strip *strip_info, __u8 * p) +{ + MetricomAddress addr; + + if (string_to_radio_address(&addr, p)) + return (1); + + /* See if our radio address has changed */ + if (memcmp(strip_info->true_dev_addr.c, addr.c, sizeof(addr))) { + MetricomAddressString addr_string; + radio_address_to_string(&addr, &addr_string); + printk(KERN_INFO "%s: Radio address = %s\n", + strip_info->dev.name, addr_string.c); + strip_info->true_dev_addr = addr; + if (!strip_info->manual_dev_addr) + *(MetricomAddress *) strip_info->dev.dev_addr = + addr; + /* Give the radio a few seconds to get its head straight, then send an arp */ + strip_info->gratuitous_arp = jiffies + 15 * HZ; + strip_info->arp_interval = 1 * HZ; + } + return (0); } static int verify_checksum(struct strip *strip_info) { - __u8 *p = strip_info->sx_buff; - __u8 *end = strip_info->sx_buff + strip_info->sx_count - 4; - u_short sum = (READHEX16(end[0]) << 12) | (READHEX16(end[1]) << 8) | - (READHEX16(end[2]) << 4) | (READHEX16(end[3])); - while (p < end) sum -= *p++; - if (sum == 0 && strip_info->firmware_level == StructuredMessages) - { - strip_info->firmware_level = ChecksummedMessages; - printk(KERN_INFO "%s: Radio provides message checksums\n", strip_info->dev.name); - } - return(sum == 0); + __u8 *p = strip_info->sx_buff; + __u8 *end = strip_info->sx_buff + strip_info->sx_count - 4; + u_short sum = + (READHEX16(end[0]) << 12) | (READHEX16(end[1]) << 8) | + (READHEX16(end[2]) << 4) | (READHEX16(end[3])); + while (p < end) + sum -= *p++; + if (sum == 0 && strip_info->firmware_level == StructuredMessages) { + strip_info->firmware_level = ChecksummedMessages; + printk(KERN_INFO "%s: Radio provides message checksums\n", + strip_info->dev.name); + } + return (sum == 0); } static void RecvErr(char *msg, struct strip *strip_info) { - __u8 *ptr = strip_info->sx_buff; - __u8 *end = strip_info->sx_buff + strip_info->sx_count; - DumpData(msg, strip_info, ptr, end); - strip_info->rx_errors++; -} - -static void RecvErr_Message(struct strip *strip_info, __u8 *sendername, const __u8 *msg, u_long len) -{ - if (has_prefix(msg, len, "001")) /* Not in StarMode! */ - { - RecvErr("Error Msg:", strip_info); - printk(KERN_INFO "%s: Radio %s is not in StarMode\n", - strip_info->dev.name, sendername); - } - - else if (has_prefix(msg, len, "002")) /* Remap handle */ - { - /* We ignore "Remap handle" messages for now */ - } - - else if (has_prefix(msg, len, "003")) /* Can't resolve name */ - { - RecvErr("Error Msg:", strip_info); - printk(KERN_INFO "%s: Destination radio name is unknown\n", - strip_info->dev.name); - } - - else if (has_prefix(msg, len, "004")) /* Name too small or missing */ - { - strip_info->watchdog_doreset = jiffies + LongTime; -#if TICKLE_TIMERS - { - struct timeval tv; - do_gettimeofday(&tv); - printk(KERN_INFO "**** Got ERR_004 response at %02d.%06d\n", - tv.tv_sec % 100, tv.tv_usec); - } -#endif - if (!strip_info->working) - { - strip_info->working = TRUE; - printk(KERN_INFO "%s: Radio now in starmode\n", strip_info->dev.name); - /* - * If the radio has just entered a working state, we should do our first - * probe ASAP, so that we find out our radio address etc. without delay. - */ - strip_info->watchdog_doprobe = jiffies; - } - if (strip_info->firmware_level == NoStructure && sendername) - { - strip_info->firmware_level = StructuredMessages; - strip_info->next_command = 0; /* Try to enable checksums ASAP */ - printk(KERN_INFO "%s: Radio provides structured messages\n", strip_info->dev.name); - } - if (strip_info->firmware_level >= StructuredMessages) - { - /* - * If this message has a valid checksum on the end, then the call to verify_checksum - * will elevate the firmware_level to ChecksummedMessages for us. (The actual return - * code from verify_checksum is ignored here.) - */ - verify_checksum(strip_info); - /* - * If the radio has structured messages but we don't yet have all our information about it, - * we should do probes without delay, until we have gathered all the information - */ - if (!GOT_ALL_RADIO_INFO(strip_info)) strip_info->watchdog_doprobe = jiffies; - } - } - - else if (has_prefix(msg, len, "005")) /* Bad count specification */ - RecvErr("Error Msg:", strip_info); - - else if (has_prefix(msg, len, "006")) /* Header too big */ - RecvErr("Error Msg:", strip_info); - - else if (has_prefix(msg, len, "007")) /* Body too big */ - { - RecvErr("Error Msg:", strip_info); - printk(KERN_ERR "%s: Error! Packet size too big for radio.\n", - strip_info->dev.name); - } - - else if (has_prefix(msg, len, "008")) /* Bad character in name */ - { - RecvErr("Error Msg:", strip_info); - printk(KERN_ERR "%s: Radio name contains illegal character\n", - strip_info->dev.name); - } - - else if (has_prefix(msg, len, "009")) /* No count or line terminator */ - RecvErr("Error Msg:", strip_info); - - else if (has_prefix(msg, len, "010")) /* Invalid checksum */ - RecvErr("Error Msg:", strip_info); - - else if (has_prefix(msg, len, "011")) /* Checksum didn't match */ - RecvErr("Error Msg:", strip_info); - - else if (has_prefix(msg, len, "012")) /* Failed to transmit packet */ - RecvErr("Error Msg:", strip_info); - - else - RecvErr("Error Msg:", strip_info); -} - -static void process_AT_response(struct strip *strip_info, __u8 *ptr, __u8 *end) -{ - u_long len; - __u8 *p = ptr; - while (p < end && p[-1] != 10) p++; /* Skip past first newline character */ - /* Now ptr points to the AT command, and p points to the text of the response. */ - len = p-ptr; + __u8 *ptr = strip_info->sx_buff; + __u8 *end = strip_info->sx_buff + strip_info->sx_count; + DumpData(msg, strip_info, ptr, end); + strip_info->rx_errors++; +} + +static void RecvErr_Message(struct strip *strip_info, __u8 * sendername, + const __u8 * msg, u_long len) +{ + if (has_prefix(msg, len, "001")) { /* Not in StarMode! */ + RecvErr("Error Msg:", strip_info); + printk(KERN_INFO "%s: Radio %s is not in StarMode\n", + strip_info->dev.name, sendername); + } + + else if (has_prefix(msg, len, "002")) { /* Remap handle */ + /* We ignore "Remap handle" messages for now */ + } + + else if (has_prefix(msg, len, "003")) { /* Can't resolve name */ + RecvErr("Error Msg:", strip_info); + printk(KERN_INFO "%s: Destination radio name is unknown\n", + strip_info->dev.name); + } + else if (has_prefix(msg, len, "004")) { /* Name too small or missing */ + strip_info->watchdog_doreset = jiffies + LongTime; #if TICKLE_TIMERS - { - struct timeval tv; - do_gettimeofday(&tv); - printk(KERN_INFO "**** Got AT response %.7s at %02d.%06d\n", - ptr, tv.tv_sec % 100, tv.tv_usec); - } + { + struct timeval tv; + do_gettimeofday(&tv); + printk(KERN_INFO + "**** Got ERR_004 response at %02d.%06d\n", + tv.tv_sec % 100, tv.tv_usec); + } #endif + if (!strip_info->working) { + strip_info->working = TRUE; + printk(KERN_INFO "%s: Radio now in starmode\n", + strip_info->dev.name); + /* + * If the radio has just entered a working state, we should do our first + * probe ASAP, so that we find out our radio address etc. without delay. + */ + strip_info->watchdog_doprobe = jiffies; + } + if (strip_info->firmware_level == NoStructure && sendername) { + strip_info->firmware_level = StructuredMessages; + strip_info->next_command = 0; /* Try to enable checksums ASAP */ + printk(KERN_INFO + "%s: Radio provides structured messages\n", + strip_info->dev.name); + } + if (strip_info->firmware_level >= StructuredMessages) { + /* + * If this message has a valid checksum on the end, then the call to verify_checksum + * will elevate the firmware_level to ChecksummedMessages for us. (The actual return + * code from verify_checksum is ignored here.) + */ + verify_checksum(strip_info); + /* + * If the radio has structured messages but we don't yet have all our information about it, + * we should do probes without delay, until we have gathered all the information + */ + if (!GOT_ALL_RADIO_INFO(strip_info)) + strip_info->watchdog_doprobe = jiffies; + } + } + + else if (has_prefix(msg, len, "005")) /* Bad count specification */ + RecvErr("Error Msg:", strip_info); + + else if (has_prefix(msg, len, "006")) /* Header too big */ + RecvErr("Error Msg:", strip_info); + + else if (has_prefix(msg, len, "007")) { /* Body too big */ + RecvErr("Error Msg:", strip_info); + printk(KERN_ERR + "%s: Error! Packet size too big for radio.\n", + strip_info->dev.name); + } - if (has_prefix(ptr, len, "ATS300?" )) get_radio_version(strip_info, p, end); - else if (has_prefix(ptr, len, "ATS305?" )) get_radio_address(strip_info, p); - else if (has_prefix(ptr, len, "ATS311?" )) get_radio_neighbours(&strip_info->poletops, p, end); - else if (has_prefix(ptr, len, "ATS319=7")) verify_checksum(strip_info); - else if (has_prefix(ptr, len, "ATS325?" )) get_radio_voltage(strip_info, p, end); - else if (has_prefix(ptr, len, "AT~LA" )) get_radio_neighbours(&strip_info->portables, p, end); - else RecvErr("Unknown AT Response:", strip_info); + else if (has_prefix(msg, len, "008")) { /* Bad character in name */ + RecvErr("Error Msg:", strip_info); + printk(KERN_ERR + "%s: Radio name contains illegal character\n", + strip_info->dev.name); + } + + else if (has_prefix(msg, len, "009")) /* No count or line terminator */ + RecvErr("Error Msg:", strip_info); + + else if (has_prefix(msg, len, "010")) /* Invalid checksum */ + RecvErr("Error Msg:", strip_info); + + else if (has_prefix(msg, len, "011")) /* Checksum didn't match */ + RecvErr("Error Msg:", strip_info); + + else if (has_prefix(msg, len, "012")) /* Failed to transmit packet */ + RecvErr("Error Msg:", strip_info); + + else + RecvErr("Error Msg:", strip_info); } -static void process_ACK(struct strip *strip_info, __u8 *ptr, __u8 *end) +static void process_AT_response(struct strip *strip_info, __u8 * ptr, + __u8 * end) +{ + u_long len; + __u8 *p = ptr; + while (p < end && p[-1] != 10) + p++; /* Skip past first newline character */ + /* Now ptr points to the AT command, and p points to the text of the response. */ + len = p - ptr; + +#if TICKLE_TIMERS + { + struct timeval tv; + do_gettimeofday(&tv); + printk(KERN_INFO "**** Got AT response %.7s at %02d.%06d\n", + ptr, tv.tv_sec % 100, tv.tv_usec); + } +#endif + + if (has_prefix(ptr, len, "ATS300?")) + get_radio_version(strip_info, p, end); + else if (has_prefix(ptr, len, "ATS305?")) + get_radio_address(strip_info, p); + else if (has_prefix(ptr, len, "ATS311?")) + get_radio_neighbours(&strip_info->poletops, p, end); + else if (has_prefix(ptr, len, "ATS319=7")) + verify_checksum(strip_info); + else if (has_prefix(ptr, len, "ATS325?")) + get_radio_voltage(strip_info, p, end); + else if (has_prefix(ptr, len, "AT~LA")) + get_radio_neighbours(&strip_info->portables, p, end); + else + RecvErr("Unknown AT Response:", strip_info); +} + +static void process_ACK(struct strip *strip_info, __u8 * ptr, __u8 * end) { - /* Currently we don't do anything with ACKs from the radio */ + /* Currently we don't do anything with ACKs from the radio */ } -static void process_Info(struct strip *strip_info, __u8 *ptr, __u8 *end) +static void process_Info(struct strip *strip_info, __u8 * ptr, __u8 * end) { - if (ptr+16 > end) RecvErr("Bad Info Msg:", strip_info); + if (ptr + 16 > end) + RecvErr("Bad Info Msg:", strip_info); } static struct net_device *get_strip_dev(struct strip *strip_info) { - /* If our hardware address is *manually set* to zero, and we know our */ - /* real radio hardware address, try to find another strip device that has been */ - /* manually set to that address that we can 'transfer ownership' of this packet to */ - if (strip_info->manual_dev_addr && - !memcmp(strip_info->dev.dev_addr, zero_address.c, sizeof(zero_address)) && - memcmp(&strip_info->true_dev_addr, zero_address.c, sizeof(zero_address))) - { - struct net_device *dev; - read_lock_bh(&dev_base_lock); - dev = dev_base; - while (dev) - { - if (dev->type == strip_info->dev.type && - !memcmp(dev->dev_addr, &strip_info->true_dev_addr, sizeof(MetricomAddress))) - { - printk(KERN_INFO "%s: Transferred packet ownership to %s.\n", - strip_info->dev.name, dev->name); + /* If our hardware address is *manually set* to zero, and we know our */ + /* real radio hardware address, try to find another strip device that has been */ + /* manually set to that address that we can 'transfer ownership' of this packet to */ + if (strip_info->manual_dev_addr && + !memcmp(strip_info->dev.dev_addr, zero_address.c, + sizeof(zero_address)) + && memcmp(&strip_info->true_dev_addr, zero_address.c, + sizeof(zero_address))) { + struct net_device *dev; + read_lock_bh(&dev_base_lock); + dev = dev_base; + while (dev) { + if (dev->type == strip_info->dev.type && + !memcmp(dev->dev_addr, + &strip_info->true_dev_addr, + sizeof(MetricomAddress))) { + printk(KERN_INFO + "%s: Transferred packet ownership to %s.\n", + strip_info->dev.name, dev->name); + read_unlock_bh(&dev_base_lock); + return (dev); + } + dev = dev->next; + } read_unlock_bh(&dev_base_lock); - return(dev); - } - dev = dev->next; - } - read_unlock_bh(&dev_base_lock); - } - return(&strip_info->dev); + } + return (&strip_info->dev); } /* * Send one completely decapsulated datagram to the next layer. */ -static void deliver_packet(struct strip *strip_info, STRIP_Header *header, __u16 packetlen) +static void deliver_packet(struct strip *strip_info, STRIP_Header * header, + __u16 packetlen) { - struct sk_buff *skb = dev_alloc_skb(sizeof(STRIP_Header) + packetlen); - if (!skb) - { - printk(KERN_ERR "%s: memory squeeze, dropping packet.\n", strip_info->dev.name); - strip_info->rx_dropped++; - } - else - { - memcpy(skb_put(skb, sizeof(STRIP_Header)), header, sizeof(STRIP_Header)); - memcpy(skb_put(skb, packetlen), strip_info->rx_buff, packetlen); - skb->dev = get_strip_dev(strip_info); - skb->protocol = header->protocol; - skb->mac.raw = skb->data; - - /* Having put a fake header on the front of the sk_buff for the */ - /* benefit of tools like tcpdump, skb_pull now 'consumes' that */ - /* fake header before we hand the packet up to the next layer. */ - skb_pull(skb, sizeof(STRIP_Header)); - - /* Finally, hand the packet up to the next layer (e.g. IP or ARP, etc.) */ - strip_info->rx_packets++; - strip_info->rx_pps_count++; + struct sk_buff *skb = dev_alloc_skb(sizeof(STRIP_Header) + packetlen); + if (!skb) { + printk(KERN_ERR "%s: memory squeeze, dropping packet.\n", + strip_info->dev.name); + strip_info->rx_dropped++; + } else { + memcpy(skb_put(skb, sizeof(STRIP_Header)), header, + sizeof(STRIP_Header)); + memcpy(skb_put(skb, packetlen), strip_info->rx_buff, + packetlen); + skb->dev = get_strip_dev(strip_info); + skb->protocol = header->protocol; + skb->mac.raw = skb->data; + + /* Having put a fake header on the front of the sk_buff for the */ + /* benefit of tools like tcpdump, skb_pull now 'consumes' that */ + /* fake header before we hand the packet up to the next layer. */ + skb_pull(skb, sizeof(STRIP_Header)); + + /* Finally, hand the packet up to the next layer (e.g. IP or ARP, etc.) */ + strip_info->rx_packets++; + strip_info->rx_pps_count++; #ifdef EXT_COUNTERS - strip_info->rx_bytes += packetlen; + strip_info->rx_bytes += packetlen; #endif - skb->dev->last_rx = jiffies; - netif_rx(skb); - } -} - -static void process_IP_packet(struct strip *strip_info, STRIP_Header *header, __u8 *ptr, __u8 *end) -{ - __u16 packetlen; - - /* Decode start of the IP packet header */ - ptr = UnStuffData(ptr, end, strip_info->rx_buff, 4); - if (!ptr) - { - RecvErr("IP Packet too short", strip_info); - return; - } - - packetlen = ((__u16)strip_info->rx_buff[2] << 8) | strip_info->rx_buff[3]; - - if (packetlen > MAX_RECV_MTU) - { - printk(KERN_INFO "%s: Dropping oversized received IP packet: %d bytes\n", - strip_info->dev.name, packetlen); - strip_info->rx_dropped++; - return; - } - - /*printk(KERN_INFO "%s: Got %d byte IP packet\n", strip_info->dev.name, packetlen);*/ - - /* Decode remainder of the IP packet */ - ptr = UnStuffData(ptr, end, strip_info->rx_buff+4, packetlen-4); - if (!ptr) - { - RecvErr("IP Packet too short", strip_info); - return; - } - - if (ptr < end) - { - RecvErr("IP Packet too long", strip_info); - return; - } - - header->protocol = htons(ETH_P_IP); - - deliver_packet(strip_info, header, packetlen); -} - -static void process_ARP_packet(struct strip *strip_info, STRIP_Header *header, __u8 *ptr, __u8 *end) -{ - __u16 packetlen; - struct arphdr *arphdr = (struct arphdr *)strip_info->rx_buff; - - /* Decode start of the ARP packet */ - ptr = UnStuffData(ptr, end, strip_info->rx_buff, 8); - if (!ptr) - { - RecvErr("ARP Packet too short", strip_info); - return; - } - - packetlen = 8 + (arphdr->ar_hln + arphdr->ar_pln) * 2; - - if (packetlen > MAX_RECV_MTU) - { - printk(KERN_INFO "%s: Dropping oversized received ARP packet: %d bytes\n", - strip_info->dev.name, packetlen); - strip_info->rx_dropped++; - return; - } - - /*printk(KERN_INFO "%s: Got %d byte ARP %s\n", - strip_info->dev.name, packetlen, - ntohs(arphdr->ar_op) == ARPOP_REQUEST ? "request" : "reply");*/ - - /* Decode remainder of the ARP packet */ - ptr = UnStuffData(ptr, end, strip_info->rx_buff+8, packetlen-8); - if (!ptr) - { - RecvErr("ARP Packet too short", strip_info); - return; - } - - if (ptr < end) - { - RecvErr("ARP Packet too long", strip_info); - return; - } + skb->dev->last_rx = jiffies; + netif_rx(skb); + } +} + +static void process_IP_packet(struct strip *strip_info, + STRIP_Header * header, __u8 * ptr, + __u8 * end) +{ + __u16 packetlen; + + /* Decode start of the IP packet header */ + ptr = UnStuffData(ptr, end, strip_info->rx_buff, 4); + if (!ptr) { + RecvErr("IP Packet too short", strip_info); + return; + } + + packetlen = ((__u16) strip_info->rx_buff[2] << 8) | strip_info->rx_buff[3]; + + if (packetlen > MAX_RECV_MTU) { + printk(KERN_INFO "%s: Dropping oversized received IP packet: %d bytes\n", + strip_info->dev.name, packetlen); + strip_info->rx_dropped++; + return; + } + + /*printk(KERN_INFO "%s: Got %d byte IP packet\n", strip_info->dev.name, packetlen); */ + + /* Decode remainder of the IP packet */ + ptr = + UnStuffData(ptr, end, strip_info->rx_buff + 4, packetlen - 4); + if (!ptr) { + RecvErr("IP Packet too short", strip_info); + return; + } + + if (ptr < end) { + RecvErr("IP Packet too long", strip_info); + return; + } - header->protocol = htons(ETH_P_ARP); + header->protocol = htons(ETH_P_IP); - deliver_packet(strip_info, header, packetlen); + deliver_packet(strip_info, header, packetlen); +} + +static void process_ARP_packet(struct strip *strip_info, + STRIP_Header * header, __u8 * ptr, + __u8 * end) +{ + __u16 packetlen; + struct arphdr *arphdr = (struct arphdr *) strip_info->rx_buff; + + /* Decode start of the ARP packet */ + ptr = UnStuffData(ptr, end, strip_info->rx_buff, 8); + if (!ptr) { + RecvErr("ARP Packet too short", strip_info); + return; + } + + packetlen = 8 + (arphdr->ar_hln + arphdr->ar_pln) * 2; + + if (packetlen > MAX_RECV_MTU) { + printk(KERN_INFO + "%s: Dropping oversized received ARP packet: %d bytes\n", + strip_info->dev.name, packetlen); + strip_info->rx_dropped++; + return; + } + + /*printk(KERN_INFO "%s: Got %d byte ARP %s\n", + strip_info->dev.name, packetlen, + ntohs(arphdr->ar_op) == ARPOP_REQUEST ? "request" : "reply"); */ + + /* Decode remainder of the ARP packet */ + ptr = + UnStuffData(ptr, end, strip_info->rx_buff + 8, packetlen - 8); + if (!ptr) { + RecvErr("ARP Packet too short", strip_info); + return; + } + + if (ptr < end) { + RecvErr("ARP Packet too long", strip_info); + return; + } + + header->protocol = htons(ETH_P_ARP); + + deliver_packet(strip_info, header, packetlen); } /* @@ -2184,22 +2152,29 @@ */ static void process_text_message(struct strip *strip_info) { - __u8 *msg = strip_info->sx_buff; - int len = strip_info->sx_count; + __u8 *msg = strip_info->sx_buff; + int len = strip_info->sx_count; - /* Check for anything that looks like it might be our radio name */ - /* (This is here for backwards compatibility with old firmware) */ - if (len == 9 && get_radio_address(strip_info, msg) == 0) return; - - if (text_equal(msg, len, "OK" )) return; /* Ignore 'OK' responses from prior commands */ - if (text_equal(msg, len, "ERROR" )) return; /* Ignore 'ERROR' messages */ - if (has_prefix(msg, len, "ate0q1" )) return; /* Ignore character echo back from the radio */ - - /* Catch other error messages */ - /* (This is here for backwards compatibility with old firmware) */ - if (has_prefix(msg, len, "ERR_")) { RecvErr_Message(strip_info, NULL, &msg[4], len-4); return; } - - RecvErr("No initial *", strip_info); + /* Check for anything that looks like it might be our radio name */ + /* (This is here for backwards compatibility with old firmware) */ + if (len == 9 && get_radio_address(strip_info, msg) == 0) + return; + + if (text_equal(msg, len, "OK")) + return; /* Ignore 'OK' responses from prior commands */ + if (text_equal(msg, len, "ERROR")) + return; /* Ignore 'ERROR' messages */ + if (has_prefix(msg, len, "ate0q1")) + return; /* Ignore character echo back from the radio */ + + /* Catch other error messages */ + /* (This is here for backwards compatibility with old firmware) */ + if (has_prefix(msg, len, "ERR_")) { + RecvErr_Message(strip_info, NULL, &msg[4], len - 4); + return; + } + + RecvErr("No initial *", strip_info); } /* @@ -2213,105 +2188,113 @@ */ static void process_message(struct strip *strip_info) { - STRIP_Header header = { zero_address, zero_address, 0 }; - __u8 *ptr = strip_info->sx_buff; - __u8 *end = strip_info->sx_buff + strip_info->sx_count; - __u8 sendername[32], *sptr = sendername; - MetricomKey key; - - /*HexDump("Receiving", strip_info, ptr, end);*/ - - /* Check for start of address marker, and then skip over it */ - if (*ptr == '*') ptr++; - else { process_text_message(strip_info); return; } - - /* Copy out the return address */ - while (ptr < end && *ptr != '*' && sptr < ARRAY_END(sendername)-1) *sptr++ = *ptr++; - *sptr = 0; /* Null terminate the sender name */ - - /* Check for end of address marker, and skip over it */ - if (ptr >= end || *ptr != '*') - { - RecvErr("No second *", strip_info); - return; - } - ptr++; /* Skip the second '*' */ - - /* If the sender name is "&COMMAND", ignore this 'packet' */ - /* (This is here for backwards compatibility with old firmware) */ - if (!strcmp(sendername, "&COMMAND")) - { - strip_info->firmware_level = NoStructure; - strip_info->next_command = CompatibilityCommand; - return; - } - - if (ptr+4 > end) - { - RecvErr("No proto key", strip_info); - return; - } - - /* Get the protocol key out of the buffer */ - key.c[0] = *ptr++; - key.c[1] = *ptr++; - key.c[2] = *ptr++; - key.c[3] = *ptr++; - - /* If we're using checksums, verify the checksum at the end of the packet */ - if (strip_info->firmware_level >= ChecksummedMessages) - { - end -= 4; /* Chop the last four bytes off the packet (they're the checksum) */ - if (ptr > end) - { - RecvErr("Missing Checksum", strip_info); - return; - } - if (!verify_checksum(strip_info)) - { - RecvErr("Bad Checksum", strip_info); - return; - } - } - - /*printk(KERN_INFO "%s: Got packet from \"%s\".\n", strip_info->dev.name, sendername);*/ - - /* - * Fill in (pseudo) source and destination addresses in the packet. - * We assume that the destination address was our address (the radio does not - * tell us this). If the radio supplies a source address, then we use it. - */ - header.dst_addr = strip_info->true_dev_addr; - string_to_radio_address(&header.src_addr, sendername); + STRIP_Header header = { zero_address, zero_address, 0 }; + __u8 *ptr = strip_info->sx_buff; + __u8 *end = strip_info->sx_buff + strip_info->sx_count; + __u8 sendername[32], *sptr = sendername; + MetricomKey key; + + /*HexDump("Receiving", strip_info, ptr, end); */ + + /* Check for start of address marker, and then skip over it */ + if (*ptr == '*') + ptr++; + else { + process_text_message(strip_info); + return; + } + + /* Copy out the return address */ + while (ptr < end && *ptr != '*' + && sptr < ARRAY_END(sendername) - 1) + *sptr++ = *ptr++; + *sptr = 0; /* Null terminate the sender name */ + + /* Check for end of address marker, and skip over it */ + if (ptr >= end || *ptr != '*') { + RecvErr("No second *", strip_info); + return; + } + ptr++; /* Skip the second '*' */ + + /* If the sender name is "&COMMAND", ignore this 'packet' */ + /* (This is here for backwards compatibility with old firmware) */ + if (!strcmp(sendername, "&COMMAND")) { + strip_info->firmware_level = NoStructure; + strip_info->next_command = CompatibilityCommand; + return; + } + + if (ptr + 4 > end) { + RecvErr("No proto key", strip_info); + return; + } + + /* Get the protocol key out of the buffer */ + key.c[0] = *ptr++; + key.c[1] = *ptr++; + key.c[2] = *ptr++; + key.c[3] = *ptr++; + + /* If we're using checksums, verify the checksum at the end of the packet */ + if (strip_info->firmware_level >= ChecksummedMessages) { + end -= 4; /* Chop the last four bytes off the packet (they're the checksum) */ + if (ptr > end) { + RecvErr("Missing Checksum", strip_info); + return; + } + if (!verify_checksum(strip_info)) { + RecvErr("Bad Checksum", strip_info); + return; + } + } + + /*printk(KERN_INFO "%s: Got packet from \"%s\".\n", strip_info->dev.name, sendername); */ + + /* + * Fill in (pseudo) source and destination addresses in the packet. + * We assume that the destination address was our address (the radio does not + * tell us this). If the radio supplies a source address, then we use it. + */ + header.dst_addr = strip_info->true_dev_addr; + string_to_radio_address(&header.src_addr, sendername); #ifdef EXT_COUNTERS - if (key.l == SIP0Key.l) { - strip_info->rx_rbytes += (end - ptr); - process_IP_packet(strip_info, &header, ptr, end); - } else if (key.l == ARP0Key.l) { - strip_info->rx_rbytes += (end - ptr); - process_ARP_packet(strip_info, &header, ptr, end); - } else if (key.l == ATR_Key.l) { - strip_info->rx_ebytes += (end - ptr); - process_AT_response(strip_info, ptr, end); - } else if (key.l == ACK_Key.l) { - strip_info->rx_ebytes += (end - ptr); - process_ACK(strip_info, ptr, end); - } else if (key.l == INF_Key.l) { - strip_info->rx_ebytes += (end - ptr); - process_Info(strip_info, ptr, end); - } else if (key.l == ERR_Key.l) { - strip_info->rx_ebytes += (end - ptr); - RecvErr_Message(strip_info, sendername, ptr, end-ptr); - } else RecvErr("Unrecognized protocol key", strip_info); + if (key.l == SIP0Key.l) { + strip_info->rx_rbytes += (end - ptr); + process_IP_packet(strip_info, &header, ptr, end); + } else if (key.l == ARP0Key.l) { + strip_info->rx_rbytes += (end - ptr); + process_ARP_packet(strip_info, &header, ptr, end); + } else if (key.l == ATR_Key.l) { + strip_info->rx_ebytes += (end - ptr); + process_AT_response(strip_info, ptr, end); + } else if (key.l == ACK_Key.l) { + strip_info->rx_ebytes += (end - ptr); + process_ACK(strip_info, ptr, end); + } else if (key.l == INF_Key.l) { + strip_info->rx_ebytes += (end - ptr); + process_Info(strip_info, ptr, end); + } else if (key.l == ERR_Key.l) { + strip_info->rx_ebytes += (end - ptr); + RecvErr_Message(strip_info, sendername, ptr, end - ptr); + } else + RecvErr("Unrecognized protocol key", strip_info); #else - if (key.l == SIP0Key.l) process_IP_packet (strip_info, &header, ptr, end); - else if (key.l == ARP0Key.l) process_ARP_packet (strip_info, &header, ptr, end); - else if (key.l == ATR_Key.l) process_AT_response(strip_info, ptr, end); - else if (key.l == ACK_Key.l) process_ACK (strip_info, ptr, end); - else if (key.l == INF_Key.l) process_Info (strip_info, ptr, end); - else if (key.l == ERR_Key.l) RecvErr_Message (strip_info, sendername, ptr, end-ptr); - else RecvErr("Unrecognized protocol key", strip_info); + if (key.l == SIP0Key.l) + process_IP_packet(strip_info, &header, ptr, end); + else if (key.l == ARP0Key.l) + process_ARP_packet(strip_info, &header, ptr, end); + else if (key.l == ATR_Key.l) + process_AT_response(strip_info, ptr, end); + else if (key.l == ACK_Key.l) + process_ACK(strip_info, ptr, end); + else if (key.l == INF_Key.l) + process_Info(strip_info, ptr, end); + else if (key.l == ERR_Key.l) + RecvErr_Message(strip_info, sendername, ptr, end - ptr); + else + RecvErr("Unrecognized protocol key", strip_info); #endif } @@ -2327,121 +2310,140 @@ * and sent on to some IP layer for further processing. */ -static void -strip_receive_buf(struct tty_struct *tty, const unsigned char *cp, char *fp, int count) +static void strip_receive_buf(struct tty_struct *tty, const unsigned char *cp, + char *fp, int count) { - struct strip *strip_info = (struct strip *) tty->disc_data; - const unsigned char *end = cp + count; - - if (!strip_info || strip_info->magic != STRIP_MAGIC - || !netif_running(&strip_info->dev)) - return; - - /* Argh! mtu change time! - costs us the packet part received at the change */ - if (strip_info->mtu != strip_info->dev.mtu) - strip_changedmtu(strip_info); + struct strip *strip_info = (struct strip *) tty->disc_data; + const unsigned char *end = cp + count; + unsigned long flags; + + if (!strip_info || strip_info->magic != STRIP_MAGIC + || !netif_running(&strip_info->dev)) + return; + + spin_lock_irqsave(&strip_lock, flags); + + /* Argh! mtu change time! - costs us the packet part received at the change */ + if (strip_info->mtu != strip_info->dev.mtu) + strip_changedmtu(strip_info); #if 0 - { - struct timeval tv; - do_gettimeofday(&tv); - printk(KERN_INFO "**** strip_receive_buf: %3d bytes at %02d.%06d\n", - count, tv.tv_sec % 100, tv.tv_usec); - } + { + struct timeval tv; + do_gettimeofday(&tv); + printk(KERN_INFO + "**** strip_receive_buf: %3d bytes at %02d.%06d\n", + count, tv.tv_sec % 100, tv.tv_usec); + } #endif #ifdef EXT_COUNTERS - strip_info->rx_sbytes += count; + strip_info->rx_sbytes += count; #endif - /* Read the characters out of the buffer */ - while (cp < end) - { - if (fp && *fp) printk(KERN_INFO "%s: %s on serial port\n", strip_info->dev.name, TTYERROR(*fp)); - if (fp && *fp++ && !strip_info->discard) /* If there's a serial error, record it */ - { - /* If we have some characters in the buffer, discard them */ - strip_info->discard = strip_info->sx_count; - strip_info->rx_errors++; - } - - /* Leading control characters (CR, NL, Tab, etc.) are ignored */ - if (strip_info->sx_count > 0 || *cp >= ' ') - { - if (*cp == 0x0D) /* If end of packet, decide what to do with it */ - { - if (strip_info->sx_count > 3000) - printk(KERN_INFO "%s: Cut a %d byte packet (%d bytes remaining)%s\n", - strip_info->dev.name, strip_info->sx_count, end-cp-1, - strip_info->discard ? " (discarded)" : ""); - if (strip_info->sx_count > strip_info->sx_size) - { - strip_info->rx_over_errors++; - printk(KERN_INFO "%s: sx_buff overflow (%d bytes total)\n", - strip_info->dev.name, strip_info->sx_count); - } - else if (strip_info->discard) - printk(KERN_INFO "%s: Discarding bad packet (%d/%d)\n", - strip_info->dev.name, strip_info->discard, strip_info->sx_count); - else process_message(strip_info); - strip_info->discard = 0; - strip_info->sx_count = 0; - } - else - { - /* Make sure we have space in the buffer */ - if (strip_info->sx_count < strip_info->sx_size) - strip_info->sx_buff[strip_info->sx_count] = *cp; - strip_info->sx_count++; - } - } - cp++; - } + /* Read the characters out of the buffer */ + while (cp < end) { + if (fp && *fp) + printk(KERN_INFO "%s: %s on serial port\n", + strip_info->dev.name, TTYERROR(*fp)); + if (fp && *fp++ && !strip_info->discard) { /* If there's a serial error, record it */ + /* If we have some characters in the buffer, discard them */ + strip_info->discard = strip_info->sx_count; + strip_info->rx_errors++; + } + + /* Leading control characters (CR, NL, Tab, etc.) are ignored */ + if (strip_info->sx_count > 0 || *cp >= ' ') { + if (*cp == 0x0D) { /* If end of packet, decide what to do with it */ + if (strip_info->sx_count > 3000) + printk(KERN_INFO + "%s: Cut a %d byte packet (%d bytes remaining)%s\n", + strip_info->dev.name, + strip_info->sx_count, + end - cp - 1, + strip_info-> + discard ? " (discarded)" : + ""); + if (strip_info->sx_count > + strip_info->sx_size) { + strip_info->rx_over_errors++; + printk(KERN_INFO + "%s: sx_buff overflow (%d bytes total)\n", + strip_info->dev.name, + strip_info->sx_count); + } else if (strip_info->discard) + printk(KERN_INFO + "%s: Discarding bad packet (%d/%d)\n", + strip_info->dev.name, + strip_info->discard, + strip_info->sx_count); + else + process_message(strip_info); + strip_info->discard = 0; + strip_info->sx_count = 0; + } else { + /* Make sure we have space in the buffer */ + if (strip_info->sx_count < + strip_info->sx_size) + strip_info->sx_buff[strip_info-> + sx_count] = + *cp; + strip_info->sx_count++; + } + } + cp++; + } + spin_unlock_irqrestore(&strip_lock, flags); } /************************************************************************/ /* General control routines */ -static int set_mac_address(struct strip *strip_info, MetricomAddress *addr) +static int set_mac_address(struct strip *strip_info, + MetricomAddress * addr) { - /* - * We're using a manually specified address if the address is set - * to anything other than all ones. Setting the address to all ones - * disables manual mode and goes back to automatic address determination - * (tracking the true address that the radio has). - */ - strip_info->manual_dev_addr = memcmp(addr->c, broadcast_address.c, sizeof(broadcast_address)); - if (strip_info->manual_dev_addr) - *(MetricomAddress*)strip_info->dev.dev_addr = *addr; - else *(MetricomAddress*)strip_info->dev.dev_addr = strip_info->true_dev_addr; - return 0; + /* + * We're using a manually specified address if the address is set + * to anything other than all ones. Setting the address to all ones + * disables manual mode and goes back to automatic address determination + * (tracking the true address that the radio has). + */ + strip_info->manual_dev_addr = + memcmp(addr->c, broadcast_address.c, + sizeof(broadcast_address)); + if (strip_info->manual_dev_addr) + *(MetricomAddress *) strip_info->dev.dev_addr = *addr; + else + *(MetricomAddress *) strip_info->dev.dev_addr = + strip_info->true_dev_addr; + return 0; } static int dev_set_mac_address(struct net_device *dev, void *addr) { - struct strip *strip_info = (struct strip *)(dev->priv); - struct sockaddr *sa = addr; - printk(KERN_INFO "%s: strip_set_dev_mac_address called\n", dev->name); - set_mac_address(strip_info, (MetricomAddress *)sa->sa_data); - return 0; + struct strip *strip_info = (struct strip *) (dev->priv); + struct sockaddr *sa = addr; + printk(KERN_INFO "%s: strip_set_dev_mac_address called\n", dev->name); + set_mac_address(strip_info, (MetricomAddress *) sa->sa_data); + return 0; } static struct net_device_stats *strip_get_stats(struct net_device *dev) { - static struct net_device_stats stats; - struct strip *strip_info = (struct strip *)(dev->priv); + static struct net_device_stats stats; + struct strip *strip_info = (struct strip *) (dev->priv); - memset(&stats, 0, sizeof(struct net_device_stats)); + memset(&stats, 0, sizeof(struct net_device_stats)); - stats.rx_packets = strip_info->rx_packets; - stats.tx_packets = strip_info->tx_packets; - stats.rx_dropped = strip_info->rx_dropped; - stats.tx_dropped = strip_info->tx_dropped; - stats.tx_errors = strip_info->tx_errors; - stats.rx_errors = strip_info->rx_errors; - stats.rx_over_errors = strip_info->rx_over_errors; - return(&stats); + stats.rx_packets = strip_info->rx_packets; + stats.tx_packets = strip_info->tx_packets; + stats.rx_dropped = strip_info->rx_dropped; + stats.tx_dropped = strip_info->tx_dropped; + stats.tx_errors = strip_info->tx_errors; + stats.rx_errors = strip_info->rx_errors; + stats.rx_over_errors = strip_info->rx_over_errors; + return (&stats); } @@ -2474,43 +2476,30 @@ static int strip_open_low(struct net_device *dev) { - struct strip *strip_info = (struct strip *)(dev->priv); -#if 0 - struct in_device *in_dev = dev->ip_ptr; -#endif - - if (strip_info->tty == NULL) - return(-ENODEV); - - if (!allocate_buffers(strip_info)) - return(-ENOMEM); + struct strip *strip_info = (struct strip *) (dev->priv); - strip_info->sx_count = 0; - strip_info->tx_left = 0; + if (strip_info->tty == NULL) + return (-ENODEV); - strip_info->discard = 0; - strip_info->working = FALSE; - strip_info->firmware_level = NoStructure; - strip_info->next_command = CompatibilityCommand; - strip_info->user_baud = get_baud(strip_info->tty); + if (!allocate_buffers(strip_info)) + return (-ENOMEM); -#if 0 - /* - * Needed because address '0' is special - * - * --ANK Needed it or not needed, it does not matter at all. - * Make it at user level, guys. - */ - - if (in_dev->ifa_list->ifa_address == 0) - in_dev->ifa_list->ifa_address = ntohl(0xC0A80001); -#endif - printk(KERN_INFO "%s: Initializing Radio.\n", strip_info->dev.name); - ResetRadio(strip_info); - strip_info->idle_timer.expires = jiffies + 1*HZ; - add_timer(&strip_info->idle_timer); - netif_wake_queue(dev); - return(0); + strip_info->sx_count = 0; + strip_info->tx_left = 0; + + strip_info->discard = 0; + strip_info->working = FALSE; + strip_info->firmware_level = NoStructure; + strip_info->next_command = CompatibilityCommand; + strip_info->user_baud = get_baud(strip_info->tty); + + printk(KERN_INFO "%s: Initializing Radio.\n", + strip_info->dev.name); + ResetRadio(strip_info); + strip_info->idle_timer.expires = jiffies + 1 * HZ; + add_timer(&strip_info->idle_timer); + netif_wake_queue(dev); + return (0); } @@ -2520,34 +2509,31 @@ static int strip_close_low(struct net_device *dev) { - struct strip *strip_info = (struct strip *)(dev->priv); + struct strip *strip_info = (struct strip *) (dev->priv); + + if (strip_info->tty == NULL) + return -EBUSY; + strip_info->tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP); - if (strip_info->tty == NULL) - return -EBUSY; - strip_info->tty->flags &= ~(1 << TTY_DO_WRITE_WAKEUP); - - netif_stop_queue(dev); - - /* - * Free all STRIP frame buffers. - */ - if (strip_info->rx_buff) - { - kfree(strip_info->rx_buff); - strip_info->rx_buff = NULL; - } - if (strip_info->sx_buff) - { - kfree(strip_info->sx_buff); - strip_info->sx_buff = NULL; - } - if (strip_info->tx_buff) - { - kfree(strip_info->tx_buff); - strip_info->tx_buff = NULL; - } - del_timer(&strip_info->idle_timer); - return 0; + netif_stop_queue(dev); + + /* + * Free all STRIP frame buffers. + */ + if (strip_info->rx_buff) { + kfree(strip_info->rx_buff); + strip_info->rx_buff = NULL; + } + if (strip_info->sx_buff) { + kfree(strip_info->sx_buff); + strip_info->sx_buff = NULL; + } + if (strip_info->tx_buff) { + kfree(strip_info->tx_buff); + strip_info->tx_buff = NULL; + } + del_timer(&strip_info->idle_timer); + return 0; } /* @@ -2557,38 +2543,38 @@ static int strip_dev_init(struct net_device *dev) { - /* - * Finish setting up the DEVICE info. - */ - - dev->trans_start = 0; - dev->last_rx = 0; - dev->tx_queue_len = 30; /* Drop after 30 frames queued */ - - dev->flags = 0; - dev->mtu = DEFAULT_STRIP_MTU; - dev->type = ARPHRD_METRICOM; /* dtang */ - dev->hard_header_len = sizeof(STRIP_Header); - /* - * dev->priv Already holds a pointer to our struct strip - */ - - *(MetricomAddress*)&dev->broadcast = broadcast_address; - dev->dev_addr[0] = 0; - dev->addr_len = sizeof(MetricomAddress); - - /* - * Pointers to interface service routines. - */ - - dev->open = strip_open_low; - dev->stop = strip_close_low; - dev->hard_start_xmit = strip_xmit; - dev->hard_header = strip_header; - dev->rebuild_header = strip_rebuild_header; - dev->set_mac_address = dev_set_mac_address; - dev->get_stats = strip_get_stats; - return 0; + /* + * Finish setting up the DEVICE info. + */ + + dev->trans_start = 0; + dev->last_rx = 0; + dev->tx_queue_len = 30; /* Drop after 30 frames queued */ + + dev->flags = 0; + dev->mtu = DEFAULT_STRIP_MTU; + dev->type = ARPHRD_METRICOM; /* dtang */ + dev->hard_header_len = sizeof(STRIP_Header); + /* + * dev->priv Already holds a pointer to our struct strip + */ + + *(MetricomAddress *) & dev->broadcast = broadcast_address; + dev->dev_addr[0] = 0; + dev->addr_len = sizeof(MetricomAddress); + + /* + * Pointers to interface service routines. + */ + + dev->open = strip_open_low; + dev->stop = strip_close_low; + dev->hard_start_xmit = strip_xmit; + dev->hard_header = strip_header; + dev->rebuild_header = strip_rebuild_header; + dev->set_mac_address = dev_set_mac_address; + dev->get_stats = strip_get_stats; + return 0; } /* @@ -2597,11 +2583,11 @@ static void strip_free(struct strip *strip_info) { - *(strip_info->referrer) = strip_info->next; - if (strip_info->next) - strip_info->next->referrer = strip_info->referrer; - strip_info->magic = 0; - kfree(strip_info); + *(strip_info->referrer) = strip_info->next; + if (strip_info->next) + strip_info->next->referrer = strip_info->referrer; + strip_info->magic = 0; + kfree(strip_info); } /* @@ -2610,59 +2596,58 @@ static struct strip *strip_alloc(void) { - int channel_id = 0; - struct strip **s = &struct_strip_list; - struct strip *strip_info = (struct strip *) - kmalloc(sizeof(struct strip), GFP_KERNEL); - - if (!strip_info) - return(NULL); /* If no more memory, return */ - - /* - * Clear the allocated memory - */ - - memset(strip_info, 0, sizeof(struct strip)); - - /* - * Search the list to find where to put our new entry - * (and in the process decide what channel number it is - * going to be) - */ - - while (*s && (*s)->dev.base_addr == channel_id) - { - channel_id++; - s = &(*s)->next; - } - - /* - * Fill in the link pointers - */ - - strip_info->next = *s; - if (*s) - (*s)->referrer = &strip_info->next; - strip_info->referrer = s; - *s = strip_info; - - strip_info->magic = STRIP_MAGIC; - strip_info->tty = NULL; - - strip_info->gratuitous_arp = jiffies + LongTime; - strip_info->arp_interval = 0; - init_timer(&strip_info->idle_timer); - strip_info->idle_timer.data = (long)&strip_info->dev; - strip_info->idle_timer.function = strip_IdleTask; - - /* Note: strip_info->if_name is currently 8 characters long */ - sprintf(strip_info->dev.name, "st%d", channel_id); - strip_info->dev.base_addr = channel_id; - strip_info->dev.priv = (void*)strip_info; - strip_info->dev.next = NULL; - strip_info->dev.init = strip_dev_init; + int channel_id = 0; + struct strip **s = &struct_strip_list; + struct strip *strip_info = (struct strip *) + kmalloc(sizeof(struct strip), GFP_KERNEL); + + if (!strip_info) + return NULL; /* If no more memory, return */ + + /* + * Clear the allocated memory + */ - return(strip_info); + memset(strip_info, 0, sizeof(struct strip)); + + /* + * Search the list to find where to put our new entry + * (and in the process decide what channel number it is + * going to be) + */ + + while (*s && (*s)->dev.base_addr == channel_id) { + channel_id++; + s = &(*s)->next; + } + + /* + * Fill in the link pointers + */ + + strip_info->next = *s; + if (*s) + (*s)->referrer = &strip_info->next; + strip_info->referrer = s; + *s = strip_info; + + strip_info->magic = STRIP_MAGIC; + strip_info->tty = NULL; + + strip_info->gratuitous_arp = jiffies + LongTime; + strip_info->arp_interval = 0; + init_timer(&strip_info->idle_timer); + strip_info->idle_timer.data = (long) &strip_info->dev; + strip_info->idle_timer.function = strip_IdleTask; + + /* Note: strip_info->if_name is currently 8 characters long */ + sprintf(strip_info->dev.name, "st%d", channel_id); + strip_info->dev.base_addr = channel_id; + strip_info->dev.priv = (void *) strip_info; + strip_info->dev.next = NULL; + strip_info->dev.init = strip_dev_init; + + return strip_info; } /* @@ -2675,62 +2660,62 @@ static int strip_open(struct tty_struct *tty) { - struct strip *strip_info = (struct strip *) tty->disc_data; + struct strip *strip_info = (struct strip *) tty->disc_data; + + /* + * First make sure we're not already connected. + */ + + if (strip_info && strip_info->magic == STRIP_MAGIC) + return -EEXIST; + + /* + * OK. Find a free STRIP channel to use. + */ + if ((strip_info = strip_alloc()) == NULL) + return -ENFILE; + + /* + * Register our newly created device so it can be ifconfig'd + * strip_dev_init() will be called as a side-effect + */ + + if (register_netdev(&strip_info->dev) != 0) { + printk(KERN_ERR "strip: register_netdev() failed.\n"); + strip_free(strip_info); + return -ENFILE; + } + + strip_info->tty = tty; + tty->disc_data = strip_info; + if (tty->driver.flush_buffer) + tty->driver.flush_buffer(tty); + if (tty->ldisc.flush_buffer) + tty->ldisc.flush_buffer(tty); + + /* + * Restore default settings + */ + + strip_info->dev.type = ARPHRD_METRICOM; /* dtang */ + + /* + * Set tty options + */ + + tty->termios->c_iflag |= IGNBRK | IGNPAR; /* Ignore breaks and parity errors. */ + tty->termios->c_cflag |= CLOCAL; /* Ignore modem control signals. */ + tty->termios->c_cflag &= ~HUPCL; /* Don't close on hup */ + + MOD_INC_USE_COUNT; - /* - * First make sure we're not already connected. - */ - - if (strip_info && strip_info->magic == STRIP_MAGIC) - return -EEXIST; - - /* - * OK. Find a free STRIP channel to use. - */ - if ((strip_info = strip_alloc()) == NULL) - return -ENFILE; - - /* - * Register our newly created device so it can be ifconfig'd - * strip_dev_init() will be called as a side-effect - */ - - if (register_netdev(&strip_info->dev) != 0) - { - printk(KERN_ERR "strip: register_netdev() failed.\n"); - strip_free(strip_info); - return -ENFILE; - } - - strip_info->tty = tty; - tty->disc_data = strip_info; - if (tty->driver.flush_buffer) - tty->driver.flush_buffer(tty); - if (tty->ldisc.flush_buffer) - tty->ldisc.flush_buffer(tty); - - /* - * Restore default settings - */ - - strip_info->dev.type = ARPHRD_METRICOM; /* dtang */ - - /* - * Set tty options - */ - - tty->termios->c_iflag |= IGNBRK |IGNPAR;/* Ignore breaks and parity errors. */ - tty->termios->c_cflag |= CLOCAL; /* Ignore modem control signals. */ - tty->termios->c_cflag &= ~HUPCL; /* Don't close on hup */ - - MOD_INC_USE_COUNT; - - printk(KERN_INFO "STRIP: device \"%s\" activated\n", strip_info->dev.name); - - /* - * Done. We have linked the TTY line to a channel. - */ - return(strip_info->dev.base_addr); + printk(KERN_INFO "STRIP: device \"%s\" activated\n", + strip_info->dev.name); + + /* + * Done. We have linked the TTY line to a channel. + */ + return (strip_info->dev.base_addr); } /* @@ -2742,23 +2727,24 @@ static void strip_close(struct tty_struct *tty) { - struct strip *strip_info = (struct strip *) tty->disc_data; + struct strip *strip_info = (struct strip *) tty->disc_data; + + /* + * First make sure we're connected. + */ + + if (!strip_info || strip_info->magic != STRIP_MAGIC) + return; - /* - * First make sure we're connected. - */ - - if (!strip_info || strip_info->magic != STRIP_MAGIC) - return; - - unregister_netdev(&strip_info->dev); - - tty->disc_data = 0; - strip_info->tty = NULL; - printk(KERN_INFO "STRIP: device \"%s\" closed down\n", strip_info->dev.name); - strip_free(strip_info); - tty->disc_data = NULL; - MOD_DEC_USE_COUNT; + unregister_netdev(&strip_info->dev); + + tty->disc_data = 0; + strip_info->tty = NULL; + printk(KERN_INFO "STRIP: device \"%s\" closed down\n", + strip_info->dev.name); + strip_free(strip_info); + tty->disc_data = NULL; + MOD_DEC_USE_COUNT; } @@ -2766,45 +2752,43 @@ /* Perform I/O control calls on an active STRIP channel. */ static int strip_ioctl(struct tty_struct *tty, struct file *file, - unsigned int cmd, unsigned long arg) + unsigned int cmd, unsigned long arg) { - struct strip *strip_info = (struct strip *) tty->disc_data; + struct strip *strip_info = (struct strip *) tty->disc_data; + + /* + * First make sure we're connected. + */ + + if (!strip_info || strip_info->magic != STRIP_MAGIC) + return -EINVAL; + + switch (cmd) { + case SIOCGIFNAME: + if(copy_to_user((void *) arg, strip_info->dev.name, strlen(strip_info->dev.name) + 1)) + return -EFAULT; + break; + case SIOCSIFHWADDR: + { + MetricomAddress addr; + //printk(KERN_INFO "%s: SIOCSIFHWADDR\n", strip_info->dev.name); + if(copy_from_user(&addr, (void *) arg, sizeof(MetricomAddress))) + return -EFAULT; + return set_mac_address(strip_info, &addr); + } + /* + * Allow stty to read, but not set, the serial port + */ - /* - * First make sure we're connected. - */ - - if (!strip_info || strip_info->magic != STRIP_MAGIC) - return -EINVAL; - - switch(cmd) - { - case SIOCGIFNAME: - return copy_to_user((void*)arg, strip_info->dev.name, - strlen(strip_info->dev.name) + 1) ? - -EFAULT : 0; - break; - case SIOCSIFHWADDR: - { - MetricomAddress addr; - printk(KERN_INFO "%s: SIOCSIFHWADDR\n", strip_info->dev.name); - return copy_from_user(&addr, (void*)arg, sizeof(MetricomAddress)) ? - -EFAULT : set_mac_address(strip_info, &addr); - break; - } - /* - * Allow stty to read, but not set, the serial port - */ - - case TCGETS: - case TCGETA: - return n_tty_ioctl(tty, (struct file *) file, cmd, - (unsigned long) arg); - break; - default: - return -ENOIOCTLCMD; - break; - } + case TCGETS: + case TCGETA: + return n_tty_ioctl(tty, (struct file *) file, cmd, (unsigned long) arg); + break; + default: + return -ENOIOCTLCMD; + break; + } + return 0; } @@ -2812,14 +2796,14 @@ /* Initialization */ static struct tty_ldisc strip_ldisc = { - .magic = TTY_LDISC_MAGIC, - .name = "strip", - .open = strip_open, - .close = strip_close, - .ioctl = strip_ioctl, - .receive_buf = strip_receive_buf, - .receive_room = strip_receive_room, - .write_wakeup = strip_write_some_more, + .magic = TTY_LDISC_MAGIC, + .name = "strip", + .open = strip_open, + .close = strip_close, + .ioctl = strip_ioctl, + .receive_buf = strip_receive_buf, + .receive_room = strip_receive_room, + .write_wakeup = strip_write_some_more, }; /* @@ -2828,45 +2812,52 @@ * STRIP driver */ -static char signon[] __initdata = KERN_INFO "STRIP: Version %s (unlimited channels)\n"; +static char signon[] __initdata = + KERN_INFO "STRIP: Version %s (unlimited channels)\n"; static int __init strip_init_driver(void) { - int status; + int status; - printk(signon, StripVersion); + printk(signon, StripVersion); - /* - * Fill in our line protocol discipline, and register it - */ - if ((status = tty_register_ldisc(N_STRIP, &strip_ldisc))) - printk(KERN_ERR "STRIP: can't register line discipline (err = %d)\n", status); - - /* - * Register the status file with /proc - */ - proc_net_create("strip", S_IFREG | S_IRUGO, get_status_info); + spin_lock_init(&strip_lock); + + /* + * Fill in our line protocol discipline, and register it + */ + if ((status = tty_register_ldisc(N_STRIP, &strip_ldisc))) + printk(KERN_ERR "STRIP: can't register line discipline (err = %d)\n", + status); - return status; + /* + * Register the status file with /proc + */ + proc_net_create("strip", S_IFREG | S_IRUGO, get_status_info); + + return status; } + module_init(strip_init_driver); -static const char signoff[] __exitdata = KERN_INFO "STRIP: Module Unloaded\n"; +static const char signoff[] __exitdata = + KERN_INFO "STRIP: Module Unloaded\n"; static void __exit strip_exit_driver(void) { - int i; - while (struct_strip_list) - strip_free(struct_strip_list); + int i; + while (struct_strip_list) + strip_free(struct_strip_list); - /* Unregister with the /proc/net file here. */ - proc_net_remove("strip"); + /* Unregister with the /proc/net file here. */ + proc_net_remove("strip"); - if ((i = tty_register_ldisc(N_STRIP, NULL))) - printk(KERN_ERR "STRIP: can't unregister line discipline (err = %d)\n", i); + if ((i = tty_register_ldisc(N_STRIP, NULL))) + printk(KERN_ERR "STRIP: can't unregister line discipline (err = %d)\n", i); - printk(signoff); + printk(signoff); } + module_exit(strip_exit_driver); MODULE_AUTHOR("Stuart Cheshire "); @@ -2874,4 +2865,3 @@ MODULE_LICENSE("Dual BSD/GPL"); MODULE_SUPPORTED_DEVICE("Starmode Radio IP (STRIP) modem"); - diff -Nru a/drivers/scsi/NCR_D700.c b/drivers/scsi/NCR_D700.c --- a/drivers/scsi/NCR_D700.c Mon Dec 23 10:28:15 2002 +++ b/drivers/scsi/NCR_D700.c Thu Feb 20 08:41:07 2003 @@ -95,17 +95,8 @@ #include #include #include -#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include #include #include diff -Nru a/drivers/serial/68360serial.c b/drivers/serial/68360serial.c --- a/drivers/serial/68360serial.c Mon Mar 10 16:26:26 2003 +++ b/drivers/serial/68360serial.c Thu Apr 3 15:03:46 2003 @@ -39,7 +39,6 @@ #include #include #include -#include #include #include diff -Nru a/fs/afs/kafstimod.c b/fs/afs/kafstimod.c --- a/fs/afs/kafstimod.c Tue Feb 11 14:57:53 2003 +++ b/fs/afs/kafstimod.c Tue Mar 18 07:05:28 2003 @@ -99,18 +99,18 @@ spin_lock(&kafstimod_lock); if (list_empty(&kafstimod_list)) { timeout = MAX_SCHEDULE_TIMEOUT; - } - else { - timer = list_entry(kafstimod_list.next,afs_timer_t,link); - timeout = timer->timo_jif; + } else { + unsigned long tmo; + + timer = list_entry(kafstimod_list.next, + afs_timer_t, link); + tmo = timer->timo_jif; jif = jiffies; - if (time_before_eq(timeout,jif)) + if (time_before_eq(tmo,jif)) goto immediate; - else { - timeout = (long)timeout - (long)jiffies; - } + timeout = (long)tmo - (long)jiffies; } spin_unlock(&kafstimod_lock); diff -Nru a/fs/buffer.c b/fs/buffer.c --- a/fs/buffer.c Thu Mar 27 21:15:06 2003 +++ b/fs/buffer.c Wed Apr 9 00:28:16 2003 @@ -123,7 +123,8 @@ wait_queue_head_t *wqh = bh_waitq_head(bh); DEFINE_WAIT(wait); - if (atomic_read(&bh->b_count) == 0) + if (atomic_read(&bh->b_count) == 0 && + (!bh->b_page || !PageLocked(bh->b_page))) buffer_error(); do { diff -Nru a/fs/dcache.c b/fs/dcache.c --- a/fs/dcache.c Wed Apr 2 22:51:32 2003 +++ b/fs/dcache.c Wed Apr 9 11:44:15 2003 @@ -825,6 +825,7 @@ struct dentry * d_alloc_anon(struct inode *inode) { + static const struct qstr anonstring = { "", 0, 0}; struct dentry *tmp; struct dentry *res; @@ -833,7 +834,7 @@ return res; } - tmp = d_alloc(NULL, &(const struct qstr) {"",0,0}); + tmp = d_alloc(NULL, &anonstring); if (!tmp) return NULL; @@ -1365,7 +1366,7 @@ * return NULL; * } */ -asmlinkage long sys_getcwd(char *buf, unsigned long size) +asmlinkage long sys_getcwd(char __user *buf, unsigned long size) { int error; struct vfsmount *pwdmnt, *rootmnt; diff -Nru a/fs/eventpoll.c b/fs/eventpoll.c --- a/fs/eventpoll.c Wed Mar 12 01:26:51 2003 +++ b/fs/eventpoll.c Mon Apr 7 05:27:47 2003 @@ -1342,6 +1342,13 @@ ep_use_epitem(epi); /* + * We need to increase the usage count of the "struct file" because + * another thread might call close() on this target and make the file + * to vanish before we will be able to call f_op->poll(). + */ + get_file(epi->file); + + /* * This is initialized in this way so that the default * behaviour of the reinjecting code will be to push back * the item inside the ready list. @@ -1386,6 +1393,14 @@ revents = epi->file->f_op->poll(epi->file, NULL); /* + * Release the file usage before checking the event mask. + * In case this call will lead to the file removal, its + * ->event.events member has been already set to zero and + * this will make the event to be dropped. + */ + fput(epi->file); + + /* * Set the return event set for the current file descriptor. * Note that only the task task was successfully able to link * the item to its "txlist" will write this field. @@ -1398,8 +1413,17 @@ eventbuf++; if (eventbuf == EP_MAX_BUF_EVENTS) { if (__copy_to_user(&events[eventcnt], event, - eventbuf * sizeof(struct epoll_event))) + eventbuf * sizeof(struct epoll_event))) { + /* + * We need to complete the loop to decrement the file + * usage before returning from this function. + */ + for (lnk = lnk->next; lnk != txlist; lnk = lnk->next) { + epi = list_entry(lnk, struct epitem, txlink); + fput(epi->file); + } return -EFAULT; + } eventcnt += eventbuf; eventbuf = 0; } diff -Nru a/fs/exec.c b/fs/exec.c --- a/fs/exec.c Sat Mar 22 11:57:38 2003 +++ b/fs/exec.c Tue Apr 8 22:26:29 2003 @@ -164,13 +164,13 @@ /* * count() counts the number of strings in array ARGV. */ -static int count(char ** argv, int max) +static int count(char __user * __user * argv, int max) { int i = 0; if (argv != NULL) { for (;;) { - char * p; + char __user * p; if (get_user(p, argv)) return -EFAULT; @@ -189,14 +189,14 @@ * memory to free pages in kernel mem. These are in a format ready * to be put directly into the top of new user memory. */ -int copy_strings(int argc,char ** argv, struct linux_binprm *bprm) +int copy_strings(int argc,char __user * __user * argv, struct linux_binprm *bprm) { struct page *kmapped_page = NULL; char *kaddr = NULL; int ret; while (argc-- > 0) { - char *str; + char __user *str; int len; unsigned long pos; @@ -275,7 +275,7 @@ int r; mm_segment_t oldfs = get_fs(); set_fs(KERNEL_DS); - r = copy_strings(argc, argv, bprm); + r = copy_strings(argc, (char __user * __user *)argv, bprm); set_fs(oldfs); return r; } @@ -1050,7 +1050,10 @@ /* * sys_execve() executes a new program. */ -int do_execve(char * filename, char ** argv, char ** envp, struct pt_regs * regs) +int do_execve(char * filename, + char __user *__user *argv, + char __user *__user *envp, + struct pt_regs * regs) { struct linux_binprm bprm; struct file *file; diff -Nru a/fs/ext2/xattr.c b/fs/ext2/xattr.c --- a/fs/ext2/xattr.c Sat Mar 22 22:14:13 2003 +++ b/fs/ext2/xattr.c Mon Apr 7 05:49:40 2003 @@ -732,7 +732,8 @@ * The old block will be released after updating * the inode. */ - ea_bdebug(new_bh, "reusing block %ld", + ea_bdebug(new_bh, "%s block %ld", + (old_bh == new_bh) ? "keeping" : "reusing", new_bh->b_blocknr); error = -EDQUOT; @@ -746,6 +747,7 @@ } else if (old_bh && header == HDR(old_bh)) { /* Keep this block. */ new_bh = old_bh; + get_bh(new_bh); ext2_xattr_cache_insert(new_bh); } else { /* We need to allocate a new block */ @@ -816,8 +818,7 @@ } cleanup: - if (old_bh != new_bh) - brelse(new_bh); + brelse(new_bh); return error; } diff -Nru a/fs/ext3/xattr.c b/fs/ext3/xattr.c --- a/fs/ext3/xattr.c Sat Mar 22 22:14:52 2003 +++ b/fs/ext3/xattr.c Mon Apr 7 05:49:40 2003 @@ -733,7 +733,8 @@ * The old block will be released after updating * the inode. */ - ea_bdebug(new_bh, "reusing block %ld", + ea_bdebug(new_bh, "%s block %ld", + (old_bh == new_bh) ? "keeping" : "reusing", new_bh->b_blocknr); error = -EDQUOT; @@ -750,6 +751,7 @@ } else if (old_bh && header == HDR(old_bh)) { /* Keep this block. */ new_bh = old_bh; + get_bh(new_bh); ext3_xattr_cache_insert(new_bh); } else { /* We need to allocate a new block */ @@ -827,8 +829,7 @@ } cleanup: - if (old_bh != new_bh) - brelse(new_bh); + brelse(new_bh); return error; } diff -Nru a/fs/fs-writeback.c b/fs/fs-writeback.c --- a/fs/fs-writeback.c Tue Mar 4 05:44:50 2003 +++ b/fs/fs-writeback.c Tue Apr 8 03:16:30 2003 @@ -149,10 +149,10 @@ * read speculatively by this cpu before &= ~I_DIRTY -- mikulas */ - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); if (wait || !wbc->for_kupdate || list_empty(&mapping->io_pages)) list_splice_init(&mapping->dirty_pages, &mapping->io_pages); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); spin_unlock(&inode_lock); do_writepages(mapping, wbc); diff -Nru a/fs/inode.c b/fs/inode.c --- a/fs/inode.c Thu Mar 27 21:16:23 2003 +++ b/fs/inode.c Tue Apr 8 03:16:30 2003 @@ -181,7 +181,7 @@ INIT_LIST_HEAD(&inode->i_devices); sema_init(&inode->i_sem, 1); INIT_RADIX_TREE(&inode->i_data.page_tree, GFP_ATOMIC); - rwlock_init(&inode->i_data.page_lock); + spin_lock_init(&inode->i_data.page_lock); init_MUTEX(&inode->i_data.i_shared_sem); INIT_LIST_HEAD(&inode->i_data.private_list); spin_lock_init(&inode->i_data.private_lock); diff -Nru a/fs/mpage.c b/fs/mpage.c --- a/fs/mpage.c Tue Feb 25 09:18:02 2003 +++ b/fs/mpage.c Tue Apr 8 03:16:30 2003 @@ -627,7 +627,7 @@ writepage = mapping->a_ops->writepage; pagevec_init(&pvec, 0); - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); while (!list_empty(&mapping->io_pages) && !done) { struct page *page = list_entry(mapping->io_pages.prev, struct page, list); @@ -647,7 +647,7 @@ list_add(&page->list, &mapping->locked_pages); page_cache_get(page); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); /* * At this point we hold neither mapping->page_lock nor @@ -679,12 +679,12 @@ unlock_page(page); } page_cache_release(page); - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); } /* * Leave any remaining dirty pages on ->io_pages */ - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); if (bio) mpage_bio_submit(WRITE, bio); return ret; diff -Nru a/fs/namei.c b/fs/namei.c --- a/fs/namei.c Wed Apr 2 22:51:31 2003 +++ b/fs/namei.c Tue Apr 8 22:31:45 2003 @@ -108,7 +108,7 @@ * POSIX.1 2.4: an empty pathname is invalid (ENOENT). * PATH_MAX includes the nul terminator --RR. */ -static inline int do_getname(const char *filename, char *page) +static inline int do_getname(const char __user *filename, char *page) { int retval; unsigned long len = PATH_MAX; @@ -129,7 +129,7 @@ return retval; } -char * getname(const char * filename) +char * getname(const char __user * filename) { char *tmp, *result; @@ -941,7 +941,7 @@ * that namei follows links, while lnamei does not. * SMP-safe */ -int __user_walk(const char *name, unsigned flags, struct nameidata *nd) +int __user_walk(const char __user *name, unsigned flags, struct nameidata *nd) { char *tmp = getname(name); int err = PTR_ERR(tmp); @@ -1402,7 +1402,7 @@ return error; } -asmlinkage long sys_mknod(const char * filename, int mode, dev_t dev) +asmlinkage long sys_mknod(const char __user * filename, int mode, dev_t dev) { int error = 0; char * tmp; @@ -1471,7 +1471,7 @@ return error; } -asmlinkage long sys_mkdir(const char * pathname, int mode) +asmlinkage long sys_mkdir(const char __user * pathname, int mode) { int error = 0; char * tmp; @@ -1568,7 +1568,7 @@ return error; } -asmlinkage long sys_rmdir(const char * pathname) +asmlinkage long sys_rmdir(const char __user * pathname) { int error = 0; char * name; @@ -1643,7 +1643,7 @@ * writeout happening, and we don't want to prevent access to the directory * while waiting on the I/O. */ -asmlinkage long sys_unlink(const char * pathname) +asmlinkage long sys_unlink(const char __user * pathname) { int error = 0; char * name; @@ -1714,7 +1714,7 @@ return error; } -asmlinkage long sys_symlink(const char * oldname, const char * newname) +asmlinkage long sys_symlink(const char __user * oldname, const char __user * newname) { int error = 0; char * from; @@ -1796,7 +1796,7 @@ * with linux 2.0, and to avoid hard-linking to directories * and other special files. --ADM */ -asmlinkage long sys_link(const char * oldname, const char * newname) +asmlinkage long sys_link(const char __user * oldname, const char __user * newname) { struct dentry *new_dentry; struct nameidata nd, old_nd; @@ -2057,7 +2057,7 @@ return error; } -asmlinkage long sys_rename(const char * oldname, const char * newname) +asmlinkage long sys_rename(const char __user * oldname, const char __user * newname) { int error; char * from; @@ -2076,7 +2076,7 @@ return error; } -int vfs_readlink(struct dentry *dentry, char *buffer, int buflen, const char *link) +int vfs_readlink(struct dentry *dentry, char __user *buffer, int buflen, const char *link) { int len; @@ -2157,7 +2157,7 @@ return (char*)page; } -int page_readlink(struct dentry *dentry, char *buffer, int buflen) +int page_readlink(struct dentry *dentry, char __user *buffer, int buflen) { struct page *page = NULL; char *s = page_getlink(dentry, &page); diff -Nru a/fs/nfs/Makefile b/fs/nfs/Makefile --- a/fs/nfs/Makefile Sat Dec 14 04:38:56 2002 +++ b/fs/nfs/Makefile Mon Apr 7 15:46:22 2003 @@ -8,6 +8,7 @@ proc.o read.o symlink.o unlink.o write.o nfs-$(CONFIG_ROOT_NFS) += nfsroot.o mount_clnt.o nfs-$(CONFIG_NFS_V3) += nfs3proc.o nfs3xdr.o -nfs-$(CONFIG_NFS_V4) += nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o +nfs-$(CONFIG_NFS_V4) += nfs4proc.o nfs4xdr.o nfs4state.o nfs4renewd.o \ + idmap.o nfs-$(CONFIG_NFS_DIRECTIO) += direct.o nfs-objs := $(nfs-y) diff -Nru a/fs/nfs/dir.c b/fs/nfs/dir.c --- a/fs/nfs/dir.c Wed Apr 2 22:51:32 2003 +++ b/fs/nfs/dir.c Mon Apr 7 15:22:57 2003 @@ -35,6 +35,7 @@ #define NFS_PARANOIA 1 /* #define NFS_DEBUG_VERBOSE 1 */ +static int nfs_opendir(struct inode *, struct file *); static int nfs_readdir(struct file *, void *, filldir_t); static struct dentry *nfs_lookup(struct inode *, struct dentry *); static int nfs_cached_lookup(struct inode *, struct dentry *, @@ -52,7 +53,7 @@ struct file_operations nfs_dir_operations = { .read = generic_read_dir, .readdir = nfs_readdir, - .open = nfs_open, + .open = nfs_opendir, .release = nfs_release, }; @@ -70,6 +71,26 @@ .getattr = nfs_getattr, .setattr = nfs_setattr, }; + +/* + * Open file + */ +static int +nfs_opendir(struct inode *inode, struct file *filp) +{ + struct nfs_server *server = NFS_SERVER(inode); + int res = 0; + + lock_kernel(); + /* Do cto revalidation */ + if (server->flags & NFS_MOUNT_NOCTO) + res = __nfs_revalidate_inode(server, inode); + /* Call generic open code in order to cache credentials */ + if (!res) + res = nfs_open(inode, filp); + unlock_kernel(); + return res; +} typedef u32 * (*decode_dirent_t)(u32 *, struct nfs_entry *, int); typedef struct { diff -Nru a/fs/nfs/file.c b/fs/nfs/file.c --- a/fs/nfs/file.c Sat Mar 8 14:50:27 2003 +++ b/fs/nfs/file.c Mon Apr 7 15:22:57 2003 @@ -34,6 +34,7 @@ #define NFSDBG_FACILITY NFSDBG_FILE +static int nfs_file_open(struct inode *, struct file *); static int nfs_file_mmap(struct file *, struct vm_area_struct *); static ssize_t nfs_file_sendfile(struct file *, loff_t *, size_t, read_actor_t, void *); static ssize_t nfs_file_read(struct kiocb *, char *, size_t, loff_t); @@ -48,7 +49,7 @@ .aio_read = nfs_file_read, .aio_write = nfs_file_write, .mmap = nfs_file_mmap, - .open = nfs_open, + .open = nfs_file_open, .flush = nfs_file_flush, .release = nfs_release, .fsync = nfs_fsync, @@ -66,6 +67,30 @@ #ifndef IS_SWAPFILE # define IS_SWAPFILE(inode) (0) #endif + +/* + * Open file + */ +static int +nfs_file_open(struct inode *inode, struct file *filp) +{ + struct nfs_server *server = NFS_SERVER(inode); + int (*open)(struct inode *, struct file *); + int res = 0; + + lock_kernel(); + /* Do NFSv4 open() call */ + if ((open = server->rpc_ops->file_open) != NULL) + res = open(inode, filp); + /* Do cto revalidation */ + else if (server->flags & NFS_MOUNT_NOCTO) + res = __nfs_revalidate_inode(server, inode); + /* Call generic open code in order to cache credentials */ + if (!res) + res = nfs_open(inode, filp); + unlock_kernel(); + return res; +} /* * Flush all dirty pages, and check for write errors. diff -Nru a/fs/nfs/idmap.c b/fs/nfs/idmap.c --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/fs/nfs/idmap.c Mon Apr 7 15:46:22 2003 @@ -0,0 +1,474 @@ +/* + * fs/nfs/idmap.c + * + * UID and GID to name mapping for clients. + * + * Copyright (c) 2002 The Regents of the University of Michigan. + * All rights reserved. + * + * Marius Aamodt Eriksen + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#define IDMAP_HASH_SZ 128 +#define IDMAP_HASH_TYPE_NAME 0x01 +#define IDMAP_HASH_TYPE_ID 0x02 +#define IDMAP_HASH_TYPE_INSERT 0x04 + +struct idmap_hashent { + uid_t ih_id; + char ih_name[IDMAP_NAMESZ]; + u_int32_t ih_namelen; +}; + +struct idmap { + char idmap_path[48]; + struct dentry *idmap_dentry; + wait_queue_head_t idmap_wq; + struct idmap_msg idmap_im; + struct nfs_server *idmap_server; + struct semaphore idmap_lock; + struct semaphore idmap_im_lock; + struct semaphore idmap_hash_lock; + struct idmap_hashent idmap_id_hash[IDMAP_HASH_SZ]; + struct idmap_hashent idmap_name_hash[IDMAP_HASH_SZ]; +}; + +static ssize_t idmap_pipe_upcall(struct file *, struct rpc_pipe_msg *, char *, + size_t); +static ssize_t idmap_pipe_downcall(struct file *, const char *, size_t); +void idmap_pipe_destroy_msg(struct rpc_pipe_msg *); + +static int validate_ascii(char *, u_int32_t); + +static u_int32_t fnvhash32(void *, u_int32_t); +static int idmap_cache_lookup(struct idmap *, int, char *, u_int32_t *, uid_t *); + +static struct rpc_pipe_ops idmap_upcall_ops = { + .upcall = idmap_pipe_upcall, + .downcall = idmap_pipe_downcall, + .destroy_msg = idmap_pipe_destroy_msg, +}; + +void * +nfs_idmap_new(struct nfs_server *server) +{ + struct idmap *idmap; + + if ((idmap = kmalloc(sizeof(*idmap), GFP_KERNEL)) == NULL) + return (NULL); + + memset(idmap, 0, sizeof(*idmap)); + + idmap->idmap_server = server; + + snprintf(idmap->idmap_path, sizeof(idmap->idmap_path), + "%s/idmap", idmap->idmap_server->client->cl_pathname); + + idmap->idmap_dentry = rpc_mkpipe(idmap->idmap_path, + idmap->idmap_server, &idmap_upcall_ops); + if (IS_ERR(idmap->idmap_dentry)) + goto err_free; + + init_MUTEX(&idmap->idmap_lock); + init_MUTEX(&idmap->idmap_im_lock); + init_MUTEX(&idmap->idmap_hash_lock); + + return (idmap); + + err_free: + kfree(idmap); + return (NULL); +} + +void +nfs_idmap_delete(struct nfs_server *server) +{ + struct idmap *idmap = server->idmap; + + rpc_unlink(idmap->idmap_path); + kfree(idmap); +} + +/* + * Name -> ID + */ +int +nfs_idmap_id(struct nfs_server *server, u_int8_t type, char *name, + u_int namelen, uid_t *id) +{ + struct rpc_pipe_msg msg; + struct idmap *idmap = server->idmap; + struct idmap_msg *im; + DECLARE_WAITQUEUE(wq, current); + int ret = -1, hashtype = IDMAP_HASH_TYPE_NAME, xnamelen = namelen; + + if (idmap == NULL) + return (-1); + + im = &idmap->idmap_im; + + if (namelen > IDMAP_NAMESZ || namelen == 0) + return (-1); + + down(&idmap->idmap_lock); + down(&idmap->idmap_im_lock); + + if (name[xnamelen - 1] == '\0') + xnamelen--; + + if (idmap_cache_lookup(idmap, hashtype, name, &xnamelen, id) == 0) { + ret = 0; + goto out; + } + + memset(im, 0, sizeof(*im)); + memcpy(im->im_name, name, namelen); + /* Make sure the string is NULL terminated */ + if (namelen != xnamelen) { + /* We cannot fit a NULL character */ + if (namelen == IDMAP_NAMESZ) { + ret = -1; + goto out; + } + im->im_name[namelen] = '\0'; + } + + im->im_type = type; + im->im_conv = IDMAP_CONV_NAMETOID; + + memset(&msg, 0, sizeof(msg)); + msg.data = im; + msg.len = sizeof(*im); + + init_waitqueue_head(&idmap->idmap_wq); + add_wait_queue(&idmap->idmap_wq, &wq); + set_current_state(TASK_UNINTERRUPTIBLE); + + if (rpc_queue_upcall(idmap->idmap_dentry->d_inode, &msg) < 0) { + set_current_state(TASK_RUNNING); + goto out; + } + + up(&idmap->idmap_im_lock); + schedule(); + down(&idmap->idmap_im_lock); + + /* + * XXX Race condition here, with testing for status. Go ahead + * and and do the cace lookup anyway. + */ + if (im->im_status & IDMAP_STATUS_SUCCESS) { + ret = 0; + *id = im->im_id; + + hashtype |= IDMAP_HASH_TYPE_INSERT; + ret = idmap_cache_lookup(idmap, hashtype, name, &xnamelen, id); + } + + out: + memset(im, 0, sizeof(*im)); + up(&idmap->idmap_im_lock); + up(&idmap->idmap_lock); + return (ret); +} + +/* + * ID -> Name + */ +int +nfs_idmap_name(struct nfs_server *server, u_int8_t type, uid_t id, + char *name, u_int *namelen) +{ + struct rpc_pipe_msg msg; + struct idmap *idmap = server->idmap; + struct idmap_msg *im; + DECLARE_WAITQUEUE(wq, current); + int ret = -1, hashtype = IDMAP_HASH_TYPE_ID; + u_int len; + + if (idmap == NULL) + return (-1); + + im = &idmap->idmap_im; + + if (*namelen < IDMAP_NAMESZ || *namelen == 0) + return (-1); + + down(&idmap->idmap_lock); + down(&idmap->idmap_im_lock); + + if (idmap_cache_lookup(idmap, hashtype, name, namelen, &id) == 0) { + ret = 0; + goto out; + } + + memset(im, 0, sizeof(*im)); + im->im_type = type; + im->im_conv = IDMAP_CONV_IDTONAME; + im->im_id = id; + + memset(&msg, 0, sizeof(msg)); + msg.data = im; + msg.len = sizeof(*im); + + init_waitqueue_head(&idmap->idmap_wq); + add_wait_queue(&idmap->idmap_wq, &wq); + set_current_state(TASK_UNINTERRUPTIBLE); + + if (rpc_queue_upcall(idmap->idmap_dentry->d_inode, &msg) < 0) { + set_current_state(TASK_RUNNING); + goto out; + } + + /* + * XXX add timeouts here + */ + up(&idmap->idmap_im_lock); + schedule(); + down(&idmap->idmap_im_lock); + + if (im->im_status & IDMAP_STATUS_SUCCESS) { + if ((len = validate_ascii(im->im_name, IDMAP_NAMESZ)) == -1) + goto out; + ret = 0; + memcpy(name, im->im_name, len); + *namelen = len; + + hashtype |= IDMAP_HASH_TYPE_INSERT; + ret = idmap_cache_lookup(idmap, hashtype, name, namelen, &id); + } + + out: + memset(im, 0, sizeof(*im)); + up(&idmap->idmap_im_lock); + up(&idmap->idmap_lock); + return (ret); +} + +static ssize_t +idmap_pipe_upcall(struct file *filp, struct rpc_pipe_msg *msg, + char *dst, size_t buflen) +{ + char *data = (char *)msg->data + msg->copied; + ssize_t mlen = msg->len - msg->copied; + ssize_t left; + + if (mlen > buflen) + mlen = buflen; + + left = copy_to_user(dst, data, mlen); + + return (mlen - left); +} + +static ssize_t +idmap_pipe_downcall(struct file *filp, const char *src, size_t mlen) +{ + struct rpc_inode *rpci = RPC_I(filp->f_dentry->d_inode); + struct nfs_server *server = rpci->private; + struct idmap *idmap = server->idmap; + struct idmap_msg im_in, *im = &idmap->idmap_im; + int match = 0, hashtype, badmsg = 0, namelen_in, namelen; + + if (mlen != sizeof(im_in)) + return (-ENOSPC); + + if (copy_from_user(&im_in, src, mlen) != 0) + return (-EFAULT); + + down(&idmap->idmap_im_lock); + + namelen_in = validate_ascii(im_in.im_name, IDMAP_NAMESZ); + namelen = validate_ascii(im->im_name, IDMAP_NAMESZ); + + badmsg = !(im_in.im_status & IDMAP_STATUS_SUCCESS) || namelen_in <= 0; + + switch (im_in.im_conv) { + case IDMAP_CONV_IDTONAME: + match = im->im_id == im_in.im_id; + break; + case IDMAP_CONV_NAMETOID: + match = namelen == namelen_in && + memcmp(im->im_name, im_in.im_name, namelen) == 0; + break; + default: + badmsg = 1; + break; + } + + match = match && im->im_type == im_in.im_type; + + if (match) { + memcpy(im, &im_in, sizeof(*im)); + wake_up(&idmap->idmap_wq); + __rpc_purge_current_upcall(filp); + } else if (!badmsg) { + hashtype = im_in.im_conv == IDMAP_CONV_IDTONAME ? + IDMAP_HASH_TYPE_ID : IDMAP_HASH_TYPE_NAME; + hashtype |= IDMAP_HASH_TYPE_INSERT; + idmap_cache_lookup(idmap, hashtype, im_in.im_name, &namelen_in, + &im_in.im_id); + } + + up(&idmap->idmap_im_lock); + return (mlen); +} + +void +idmap_pipe_destroy_msg(struct rpc_pipe_msg *msg) +{ + struct idmap_msg *im = msg->data; + struct idmap *idmap = container_of(im, struct idmap, idmap_im); + + down(&idmap->idmap_im_lock); + im->im_status = IDMAP_STATUS_LOOKUPFAIL; + wake_up(&idmap->idmap_wq); + up(&idmap->idmap_im_lock); +} + +static int +validate_ascii(char *string, u_int32_t len) +{ + int i; + + for (i = 0; i < len; i++) { + if (string[i] == '\0') + break; + + if (string[i] & 0x80) + return (-1); + } + + if (string[i] != '\0') + return (-1); + + return (i); +} + +/* + * Fowler/Noll/Vo hash + * http://www.isthe.com/chongo/tech/comp/fnv/ + */ + +#define FNV_P_32 ((u_int32_t)0x01000193) /* 16777619 */ +#define FNV_1_32 ((u_int32_t)0x811c9dc5) /* 2166136261 */ + +static u_int32_t +fnvhash32(void *buf, u_int32_t buflen) +{ + u_char *p, *end = (u_char *)buf + buflen; + u_int32_t hash = FNV_1_32; + + for (p = buf; p < end; p++) { + hash *= FNV_P_32; + hash ^= (u_int32_t)*p; + } + + return (hash); +} + +/* + * ->ih_namelen == 0 indicates negative entry + */ +static int +idmap_cache_lookup(struct idmap *idmap, int type, char *name, u_int32_t *namelen, + uid_t *id) +{ + u_int32_t hash; + struct idmap_hashent *he = NULL; + int insert = type & IDMAP_HASH_TYPE_INSERT; + int ret = -1; + + /* + * XXX technically, this is not needed, since we will always + * hold idmap_im_lock when altering the hash tables. but + * semantically that just hurts. + * + * XXX cache negative responses + */ + down(&idmap->idmap_hash_lock); + + if (*namelen > IDMAP_NAMESZ || *namelen == 0) + goto out; + + if (type & IDMAP_HASH_TYPE_NAME) { + hash = fnvhash32(name, *namelen) % IDMAP_HASH_SZ; + he = &idmap->idmap_name_hash[hash]; + + /* + * Testing he->ih_namelen == *namelen implicitly tests + * namelen != 0, and thus a non-negative entry. + */ + if (!insert && he->ih_namelen == *namelen && + memcmp(he->ih_name, name, *namelen) == 0) { + *id = he->ih_id; + ret = 0; + goto out; + } + } + + if (type & IDMAP_HASH_TYPE_ID) { + hash = fnvhash32(id, sizeof(*id)) % IDMAP_HASH_SZ; + he = &idmap->idmap_id_hash[hash]; + + if (!insert && *id == he->ih_id && he->ih_namelen != 0 && + *namelen >= he->ih_namelen) { + memcpy(name, he->ih_name, he->ih_namelen); + *namelen = he->ih_namelen; + ret = 0; + goto out; + } + } + + if (insert && he != NULL) { + he->ih_id = *id; + memcpy(he->ih_name, name, *namelen); + he->ih_namelen = *namelen; + ret = 0; + } + + out: + up(&idmap->idmap_hash_lock); + return (ret); +} diff -Nru a/fs/nfs/inode.c b/fs/nfs/inode.c --- a/fs/nfs/inode.c Mon Mar 17 21:32:11 2003 +++ b/fs/nfs/inode.c Mon Apr 7 15:46:22 2003 @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -140,6 +141,10 @@ cred = nfsi->cache_access.cred; if (cred) put_rpccred(cred); + /* Clean up the V4 state */ + nfs4_put_shareowner(inode, nfsi->wo_owner); + nfs4_put_shareowner(inode, nfsi->ro_owner); + nfs4_put_shareowner(inode, nfsi->rw_owner); } void @@ -148,6 +153,11 @@ struct nfs_server *server = NFS_SB(sb); struct rpc_clnt *rpc; +#ifdef CONFIG_NFS_V4 + if (server->idmap != NULL) + nfs_idmap_delete(server); +#endif /* CONFIG_NFS_V4 */ + if ((rpc = server->client) != NULL) rpc_shutdown_client(rpc); @@ -156,6 +166,7 @@ rpciod_down(); /* release rpciod */ destroy_nfsv4_state(server); + kfree(server->hostname); } @@ -855,23 +866,13 @@ { struct rpc_auth *auth; struct rpc_cred *cred; - int err = 0; - lock_kernel(); - /* Ensure that we revalidate the data cache */ - if (NFS_SERVER(inode)->flags & NFS_MOUNT_NOCTO) { - err = __nfs_revalidate_inode(NFS_SERVER(inode),inode); - if (err) - goto out; - } auth = NFS_CLIENT(inode)->cl_auth; cred = rpcauth_lookupcred(auth, 0); filp->private_data = cred; if (filp->f_mode & FMODE_WRITE) nfs_set_mmcred(inode, cred); -out: - unlock_kernel(); - return err; + return 0; } int nfs_release(struct inode *inode, struct file *filp) @@ -1368,11 +1369,16 @@ if (create_nfsv4_state(server, data)) goto out_shutdown; + if ((server->idmap = nfs_idmap_new(server)) == NULL) + printk(KERN_WARNING "NFS: couldn't start IDmap\n"); + err = nfs_sb_init(sb); if (err == 0) return 0; rpciod_down(); destroy_nfsv4_state(server); + if (server->idmap != NULL) + nfs_idmap_delete(server); out_shutdown: rpc_shutdown_client(server->client); out_fail: @@ -1502,9 +1508,18 @@ .kill_sb = nfs_kill_super, .fs_flags = FS_ODD_RENAME, }; + +#define nfs4_zero_state(nfsi) \ + do { \ + (nfsi)->wo_owner = NULL; \ + (nfsi)->ro_owner = NULL; \ + (nfsi)->rw_owner = NULL; \ + } while(0) #define register_nfs4fs() register_filesystem(&nfs4_fs_type) #define unregister_nfs4fs() unregister_filesystem(&nfs4_fs_type) #else +#define nfs4_zero_state(nfsi) \ + do { } while (0) #define register_nfs4fs() (0) #define unregister_nfs4fs() #endif @@ -1526,6 +1541,7 @@ return NULL; nfsi->flags = 0; nfsi->mm_cred = NULL; + nfs4_zero_state(nfsi); return &nfsi->vfs_inode; } diff -Nru a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c --- a/fs/nfs/nfs4proc.c Thu Mar 27 10:02:55 2003 +++ b/fs/nfs/nfs4proc.c Mon Apr 7 15:47:19 2003 @@ -55,7 +55,8 @@ extern struct rpc_procinfo nfs4_procedures[]; static nfs4_stateid zero_stateid = - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + static spinlock_t renew_lock = SPIN_LOCK_UNLOCKED; static void @@ -81,19 +82,6 @@ } static void -nfs4_setup_close(struct nfs4_compound *cp, nfs4_stateid stateid, u32 seqid) -{ - struct nfs4_close *close = GET_OP(cp, close); - - close->cl_stateid = stateid; - close->cl_seqid = seqid; - - OPNUM(cp) = OP_CLOSE; - cp->req_nops++; - cp->renew_index = cp->req_nops; -} - -static void nfs4_setup_create_dir(struct nfs4_compound *cp, struct qstr *name, struct iattr *sattr, struct nfs4_change_info *info) { @@ -347,48 +335,6 @@ } static void -nfs4_setup_open(struct nfs4_compound *cp, int flags, struct qstr *name, - struct iattr *sattr, char *stateid, struct nfs4_change_info *cinfo, - u32 *rflags) -{ - struct nfs4_open *open = GET_OP(cp, open); - - BUG_ON(cp->flags); - - open->op_client_state = cp->server->nfs4_state; - open->op_share_access = flags & 3; - open->op_opentype = (flags & O_CREAT) ? NFS4_OPEN_CREATE : NFS4_OPEN_NOCREATE; - open->op_createmode = NFS4_CREATE_UNCHECKED; - open->op_attrs = sattr; - if (flags & O_EXCL) { - u32 *p = (u32 *) open->op_verifier; - p[0] = jiffies; - p[1] = current->pid; - open->op_createmode = NFS4_CREATE_EXCLUSIVE; - } - open->op_name = name; - open->op_stateid = stateid; - open->op_cinfo = cinfo; - open->op_rflags = rflags; - - OPNUM(cp) = OP_OPEN; - cp->req_nops++; - cp->renew_index = cp->req_nops; -} - -static void -nfs4_setup_open_confirm(struct nfs4_compound *cp, char *stateid) -{ - struct nfs4_open_confirm *open_confirm = GET_OP(cp, open_confirm); - - open_confirm->oc_stateid = stateid; - - OPNUM(cp) = OP_OPEN_CONFIRM; - cp->req_nops++; - cp->renew_index = cp->req_nops; -} - -static void nfs4_setup_readdir(struct nfs4_compound *cp, u64 cookie, u32 *verifier, struct page **pages, unsigned int bufsize, struct dentry *dentry) { @@ -517,18 +463,6 @@ } static void -nfs4_setup_setattr(struct nfs4_compound *cp, char *stateid, struct iattr *iap) -{ - struct nfs4_setattr *setattr = GET_OP(cp, setattr); - - setattr->st_stateid = stateid; - setattr->st_iap = iap; - - OPNUM(cp) = OP_SETATTR; - cp->req_nops++; -} - -static void nfs4_setup_setclientid(struct nfs4_compound *cp, u32 program, unsigned short port) { struct nfs4_setclientid *setclientid = GET_OP(cp, setclientid); @@ -626,72 +560,193 @@ } } -static int -do_open(struct inode *dir, struct qstr *name, int flags, struct iattr *sattr, - struct nfs_fattr *fattr, struct nfs_fh *fhandle, u32 *seqid, char *stateid) -{ - struct nfs4_compound compound; - struct nfs4_op ops[7]; - struct nfs4_change_info dir_cinfo; - struct nfs_fattr dir_attr; - u32 dir_bmres[2]; - u32 bmres[2]; - u32 rflags; - int status; - - dir_attr.valid = 0; - fattr->valid = 0; - nfs4_setup_compound(&compound, ops, NFS_SERVER(dir), "open"); - nfs4_setup_putfh(&compound, NFS_FH(dir)); - nfs4_setup_savefh(&compound); - nfs4_setup_open(&compound, flags, name, sattr, stateid, &dir_cinfo, &rflags); - nfs4_setup_getattr(&compound, fattr, bmres); - nfs4_setup_getfh(&compound, fhandle); - nfs4_setup_restorefh(&compound); - nfs4_setup_getattr(&compound, &dir_attr, dir_bmres); - if ((status = nfs4_call_compound(&compound, NULL, 0))) - return status; +int +nfs4_do_open(struct inode *dir, struct qstr *name, int flags, + struct iattr *sattr, struct nfs_fattr *fattr, + struct nfs_fh *fhandle, struct nfs4_shareowner **spp) +{ + struct nfs4_shareowner *sp; + struct nfs_server *server = NFS_SERVER(dir); + struct nfs4_change_info d_cinfo; + int status; + u32 f_bmres[2]; + u32 d_bmres[2]; + struct nfs_fattr d_attr = { + .valid 0, + }; + struct nfs_fattr f_attr = { + .valid 0, + }; + struct nfs4_getattr f_getattr = { + .gt_bmval = nfs4_fattr_bitmap, + .gt_attrs = (fattr == NULL ? &f_attr: fattr), + .gt_bmres = f_bmres, + }; + struct nfs4_getattr d_getattr = { + .gt_bmval = nfs4_fattr_bitmap, + .gt_attrs = &d_attr, + .gt_bmres = d_bmres, + }; + struct nfs_openargs o_arg = { + .fh = NFS_FH(dir), + .share_access = flags & O_ACCMODE, + .clientid = NFS_SERVER(dir)->nfs4_state->cl_clientid, + .opentype = (flags & O_CREAT) ? NFS4_OPEN_CREATE : NFS4_OPEN_NOCREATE, + .createmode = (flags & O_EXCL) ? NFS4_CREATE_EXCLUSIVE : NFS4_CREATE_UNCHECKED, + .name = name, + .f_getattr = &f_getattr, + .d_getattr = &d_getattr, + .server = server, + }; + struct nfs_openres o_res = { + .cinfo = &d_cinfo, + .f_getattr = &f_getattr, + .d_getattr = &d_getattr, + .server = server, + }; + struct rpc_message msg = { + .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_OPEN], + .rpc_argp = &o_arg, + .rpc_resp = &o_res, + }; - process_cinfo(&dir_cinfo, &dir_attr); - nfs_refresh_inode(dir, &dir_attr); - if (!(rflags & NFS4_OPEN_RESULT_CONFIRM)) { - *seqid = 1; - return 0; + status = -ENOMEM; + if (!(sp = nfs4_get_shareowner(dir))) { + dprintk("nfs4_do_open: nfs4_get_shareowner failed!\n"); + goto out; + } + if (o_arg.createmode & NFS4_CREATE_EXCLUSIVE){ + u32 *p = (u32 *) o_arg.u.verifier; + p[0] = jiffies; + p[1] = current->pid; + } else if (o_arg.createmode == NFS4_CREATE_UNCHECKED) { + o_arg.u.attrs = sattr; + } + /* Serialization for the sequence id */ + down(&sp->so_sema); + o_arg.seqid = sp->so_seqid; + o_arg.id = sp->so_id; + + status = rpc_call_sync(server->client, &msg, 0); + if (status) { + goto out_up; + } + nfs4_increment_seqid(status, sp); + process_cinfo(&d_cinfo, &d_attr); + nfs_refresh_inode(dir, &d_attr); + + if (fhandle) { + memset(fhandle, 0, sizeof(*fhandle)); + fhandle->size = (o_res.fh.size < NFS_MAXFHSIZE ? o_res.fh.size : NFS_MAXFHSIZE); + memcpy(fhandle->data, o_res.fh.data, fhandle->size); } - *seqid = 2; - nfs4_setup_compound(&compound, ops, NFS_SERVER(dir), "open_confirm"); - nfs4_setup_putfh(&compound, fhandle); - nfs4_setup_open_confirm(&compound, stateid); - return nfs4_call_compound(&compound, NULL, 0); -} + if(o_res.rflags & NFS4_OPEN_RESULT_CONFIRM) { + struct nfs_open_confirmargs oc_arg = { + .fh = &o_res.fh, + .seqid = sp->so_seqid, + }; + struct nfs_open_confirmres oc_res = { + .status = 0, + }; + struct rpc_message msg = { + .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_OPEN_CONFIRM], + .rpc_argp = &oc_arg, + .rpc_resp = &oc_res, + }; -static int -do_setattr(struct nfs_server *server, struct nfs_fattr *fattr, - struct nfs_fh *fhandle, struct iattr *sattr, char *stateid) -{ - struct nfs4_compound compound; - struct nfs4_op ops[3]; - u32 bmres[2]; + memcpy(oc_arg.stateid, o_res.stateid, sizeof(nfs4_stateid)); + status = rpc_call_sync(server->client, &msg, 0); + if (status) + goto out_up; + nfs4_increment_seqid(status, sp); + memcpy(sp->so_stateid, oc_res.stateid, sizeof(nfs4_stateid)); + } else + memcpy(sp->so_stateid, o_res.stateid, sizeof(nfs4_stateid)); + sp->so_flags = flags & O_ACCMODE; - fattr->valid = 0; - nfs4_setup_compound(&compound, ops, server, "setattr"); - nfs4_setup_putfh(&compound, fhandle); - nfs4_setup_setattr(&compound, stateid, sattr); - nfs4_setup_getattr(&compound, fattr, bmres); - return nfs4_call_compound(&compound, NULL, 0); +out_up: + up(&sp->so_sema); +out: + *spp = sp; + return status; } -static int -do_close(struct nfs_server *server, struct nfs_fh *fhandle, u32 seqid, char *stateid) +int +nfs4_do_setattr(struct nfs_server *server, struct nfs_fattr *fattr, + struct nfs_fh *fhandle, struct iattr *sattr, + struct nfs4_shareowner *sp) +{ + u32 g_bmres[2]; + struct nfs4_getattr getattr = { + .gt_bmval = nfs4_fattr_bitmap, + .gt_attrs = fattr, + .gt_bmres = g_bmres, + }; + struct nfs_setattrargs arg = { + .fh = fhandle, + .iap = sattr, + .attr = &getattr, + .server = server, + }; + struct nfs_setattrres res = { + .attr = &getattr, + .server = server, + }; + struct rpc_message msg = { + .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_SETATTR], + .rpc_argp = &arg, + .rpc_resp = &res, + }; + + fattr->valid = 0; + + if (sp) + memcpy(arg.stateid, sp->so_stateid, sizeof(nfs4_stateid)); + else + memcpy(arg.stateid, zero_stateid, sizeof(nfs4_stateid)); + + return(rpc_call_sync(server->client, &msg, 0)); +} + +/* + * It is possible for data to be read/written from a mem-mapped file + * after the sys_close call (which hits the vfs layer as a flush). + * This means that we can't safely call nfsv4 close on a file until + * the inode is cleared. This in turn means that we are not good + * NFSv4 citizens - we do not indicate to the server to update the file's + * share state even when we are done with one of the three share + * stateid's in the inode. + */ +int +nfs4_do_close(struct inode *inode, struct nfs4_shareowner *sp) { - struct nfs4_compound compound; - struct nfs4_op ops[2]; - - nfs4_setup_compound(&compound, ops, server, "close"); - nfs4_setup_putfh(&compound, fhandle); - nfs4_setup_close(&compound, stateid, seqid); - return nfs4_call_compound(&compound, NULL, 0); + int status = 0; + struct nfs_closeargs arg = { + .fh = NFS_FH(inode), + }; + struct nfs_closeres res = { + .status = 0, + }; + struct rpc_message msg = { + .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_CLOSE], + .rpc_argp = &arg, + .rpc_resp = &res, + }; + + memcpy(arg.stateid, sp->so_stateid, sizeof(nfs4_stateid)); + /* Serialization for the sequence id */ + down(&sp->so_sema); + arg.seqid = sp->so_seqid, + status = rpc_call_sync(NFS_SERVER(inode)->client, &msg, 0); + + /* hmm. we are done with the inode, and in the process of freeing + * the shareowner. we keep this around to process errors + */ + nfs4_increment_seqid(status, sp); + up(&sp->so_sema); + + return status; } static int @@ -792,47 +847,54 @@ return nfs4_call_compound(&compound, NULL, 0); } +/* + * The file is not closed if it is opened due to the a request to change + * the size of the file. The open call will not be needed once the + * VFS layer lookup-intents are implemented. + * + * Close is called when the inode is destroyed. + * If we haven't opened the file for O_WRONLY, we + * need to in the size_change case to obtain a stateid. + * + * Got race? + * Because OPEN is always done by name in nfsv4, it is + * possible that we opened a different file by the same + * name. We can recognize this race condition, but we + * can't do anything about it besides returning an error. + * + * This will be fixed with VFS changes (lookup-intent). + */ static int nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr, struct iattr *sattr) { struct inode * inode = dentry->d_inode; int size_change = sattr->ia_valid & ATTR_SIZE; - struct nfs_fh throwaway_fh; - u32 seqid; - nfs4_stateid stateid; + struct nfs4_shareowner *sp = NULL; int status; fattr->valid = 0; if (size_change) { - status = do_open(dentry->d_parent->d_inode, &dentry->d_name, - NFS4_SHARE_ACCESS_WRITE, NULL, fattr, - &throwaway_fh, &seqid, stateid); + if (NFS_I(inode)->wo_owner) { + /* file is already open for O_WRONLY */ + sp = NFS_I(inode)->wo_owner; + goto no_open; + } + status = nfs4_do_open(dentry->d_parent->d_inode, + &dentry->d_name, O_WRONLY, NULL, fattr, + NULL, &sp); if (status) return status; - /* - * Because OPEN is always done by name in nfsv4, it is - * possible that we opened a different file by the same - * name. We can recognize this race condition, but we - * can't do anything about it besides returning an error. - * - * XXX: Should we compare filehandles too, as in - * nfs_find_actor()? - */ if (fattr->fileid != NFS_FILEID(inode)) { printk(KERN_WARNING "nfs: raced in setattr, returning -EIO\n"); - do_close(NFS_SERVER(inode), NFS_FH(inode), seqid, stateid); return -EIO; } } - else - memcpy(stateid, zero_stateid, sizeof(nfs4_stateid)); - - status = do_setattr(NFS_SERVER(inode), fattr, NFS_FH(inode), sattr, stateid); - if (size_change) - do_close(NFS_SERVER(inode), NFS_FH(inode), seqid, stateid); +no_open: + status = nfs4_do_setattr(NFS_SERVER(inode), fattr, + NFS_FH(inode), sattr, sp); return status; } @@ -956,6 +1018,7 @@ struct page *page, int *eofp) { struct nfs_server *server = NFS_SERVER(inode); + struct nfs4_shareowner *sp; uint64_t offset = page_offset(page) + base; struct nfs_readargs arg = { .fh = NFS_FH(inode), @@ -978,6 +1041,17 @@ int status; dprintk("NFS call read %d @ %Ld\n", count, (long long)offset); + /* + * Try first to use O_RDONLY, then O_RDWR stateid. + */ + sp = nfs4_get_inode_share(inode, O_RDONLY); + if (!sp) + sp = nfs4_get_inode_share(inode, O_RDWR); + if (sp) + memcpy(arg.stateid,sp->so_stateid, sizeof(nfs4_stateid)); + else + memcpy(arg.stateid, zero_stateid, sizeof(nfs4_stateid)); + fattr->valid = 0; status = rpc_call_sync(server->client, &msg, flags); if (!status) { @@ -998,6 +1072,7 @@ struct page *page, struct nfs_writeverf *verf) { struct nfs_server *server = NFS_SERVER(inode); + struct nfs4_shareowner *sp; uint64_t offset = page_offset(page) + base; struct nfs_writeargs arg = { .fh = NFS_FH(inode), @@ -1021,25 +1096,54 @@ int rpcflags = (flags & NFS_RW_SWAP) ? NFS_RPC_SWAPFLAGS : 0; dprintk("NFS call write %d @ %Ld\n", count, (long long)offset); + + /* + * Try first to use O_WRONLY, then O_RDWR stateid. + */ + sp = nfs4_get_inode_share(inode, O_WRONLY); + if (!sp) + sp = nfs4_get_inode_share(inode, O_RDWR); + + if (sp) + memcpy(arg.stateid,sp->so_stateid, sizeof(nfs4_stateid)); + else + memcpy(arg.stateid, zero_stateid, sizeof(nfs4_stateid)); + fattr->valid = 0; return rpc_call_sync(server->client, &msg, rpcflags); } +/* + * Got race? + * We will need to arrange for the VFS layer to provide an atomic open. + * Until then, this create/open method is prone to inefficiency and race + * conditions due to the lookup, create, and open VFS calls from sys_open() + * placed on the wire. + * + * Given the above sorry state of affairs, I'm simply sending an OPEN. + * The file will be opened again in the subsequent VFS open call + * (nfs4_proc_file_open). + * + * The open for read will just hang around to be used by any process that + * opens the file O_RDONLY. This will all be resolved with the VFS changes. + */ + static int nfs4_proc_create(struct inode *dir, struct qstr *name, struct iattr *sattr, - int flags, struct nfs_fh *fhandle, struct nfs_fattr *fattr) + int flags, struct nfs_fh *fhandle, struct nfs_fattr *fattr) { - int oflags; - u32 seqid; - nfs4_stateid stateid; - int status; + int oflags; + struct nfs4_shareowner *sp = NULL; + int status; - oflags = NFS4_SHARE_ACCESS_READ | O_CREAT | (flags & O_EXCL); - status = do_open(dir, name, oflags, sattr, fattr, fhandle, &seqid, stateid); + oflags = O_RDONLY | O_CREAT | (flags & O_EXCL); + status = nfs4_do_open(dir, name, oflags, sattr, fattr, fhandle, &sp); if (!status) { - if (flags & O_EXCL) - status = do_setattr(NFS_SERVER(dir), fattr, fhandle, sattr, stateid); - do_close(NFS_SERVER(dir), fhandle, seqid, stateid); + if (flags & O_EXCL) { + status = nfs4_do_setattr(NFS_SERVER(dir), fattr, + fhandle, sattr, sp); + /* XXX should i bother closing the file? */ + } } return status; } @@ -1368,6 +1472,7 @@ }; struct inode *inode = data->inode; struct nfs_page *req = nfs_list_entry(data->pages.next); + struct nfs4_shareowner *sp; int flags; data->args.fh = NFS_FH(inode); @@ -1380,6 +1485,19 @@ data->res.eof = 0; data->timestamp = jiffies; + if(req->wb_file) { + unsigned int oflags = req->wb_file->f_flags; + sp = nfs4_get_inode_share(inode, oflags); + } else { + sp = nfs4_get_inode_share(inode, O_RDONLY); + if (!sp) + sp = nfs4_get_inode_share(inode, O_RDWR); + } + if (sp) + memcpy(data->args.stateid,sp->so_stateid, sizeof(nfs4_stateid)); + else + memcpy(data->args.stateid, zero_stateid, sizeof(nfs4_stateid)); + /* N.B. Do we need to test? Never called for swapfile inode */ flags = RPC_TASK_ASYNC | (IS_SWAPFILE(inode)? NFS_RPC_SWAPFLAGS : 0); @@ -1432,6 +1550,7 @@ }; struct inode *inode = data->inode; struct nfs_page *req = nfs_list_entry(data->pages.next); + struct nfs4_shareowner *sp; int stable; int flags; @@ -1454,6 +1573,20 @@ data->res.verf = &data->verf; data->timestamp = jiffies; + if(req->wb_file) { + unsigned int oflags = req->wb_file->f_flags; + sp = nfs4_get_inode_share(inode, oflags); + } else { + sp = nfs4_get_inode_share(inode, O_WRONLY); + if (!sp) + sp = nfs4_get_inode_share(inode, O_RDWR); + } + + if (sp) + memcpy(data->args.stateid,sp->so_stateid, sizeof(nfs4_stateid)); + else + memcpy(data->args.stateid, zero_stateid, sizeof(nfs4_stateid)); + /* Set the initial flags for the task. */ flags = (how & FLUSH_SYNC) ? 0 : RPC_TASK_ASYNC; @@ -1560,6 +1693,55 @@ return rpc_execute(task); } +/* + * We will need to arrange for the VFS layer to provide an atomic open. + * Until then, this open method is prone to inefficiency and race conditions + * due to the lookup, potential create, and open VFS calls from sys_open() + * placed on the wire. + */ +int +nfs4_proc_file_open(struct inode *inode, struct file *filp) +{ + struct dentry *dentry = filp->f_dentry; + struct inode *dir = dentry->d_parent->d_inode; + int flags, status = 0; + + dprintk("nfs4_proc_file_open: starting on (%.*s/%.*s)\n", + (int)dentry->d_parent->d_name.len, + dentry->d_parent->d_name.name, + (int)dentry->d_name.len, dentry->d_name.name); + + lock_kernel(); + + /* isn't this done in open_namei? */ + if (!S_ISREG(inode->i_mode)) { + status = -EISDIR; + goto out; + } + + flags = filp->f_flags & O_ACCMODE; + +/* +* Got race?? +* We have already opened the file "O_EXCL" in nfs4_proc_create!! +* This ugliness will go away with lookup-intent... +*/ + while (!nfs4_get_inode_share(inode, flags)) { + struct nfs4_shareowner *sp = NULL; + status = nfs4_do_open(dir, &dentry->d_name, flags, NULL, NULL, NULL, &sp); + if (status) { + nfs4_put_shareowner(inode,sp); + break; + } + if (nfs4_set_inode_share(inode, sp, flags)) + nfs4_put_shareowner(inode,sp); + } +out: + unlock_kernel(); + return status; +} + + struct nfs_rpc_ops nfs_v4_clientops = { .version = 4, /* protocol version */ .getroot = nfs4_proc_get_root, @@ -1589,6 +1771,7 @@ .read_setup = nfs4_proc_read_setup, .write_setup = nfs4_proc_write_setup, .commit_setup = nfs4_proc_commit_setup, + .file_open = nfs4_proc_file_open, }; /* diff -Nru a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c --- a/fs/nfs/nfs4state.c Mon Oct 14 07:03:48 2002 +++ b/fs/nfs/nfs4state.c Mon Apr 7 15:27:32 2003 @@ -42,6 +42,16 @@ #include #include +/* This protects most of the client-side state. */ +static spinlock_t state_spinlock = SPIN_LOCK_UNLOCKED; + +nfs4_stateid zero_stateid = + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +nfs4_stateid one_stateid = + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; + + /* * nfs4_get_client(): returns an empty client structure * nfs4_put_client(): drops reference to client structure @@ -52,26 +62,166 @@ struct nfs4_client * nfs4_get_client(void) { - struct nfs4_client *clp; + struct nfs4_client *clp; - if ((clp = kmalloc(sizeof(*clp), GFP_KERNEL))) { - atomic_set(&clp->cl_count, 1); - clp->cl_clientid = 0; - INIT_LIST_HEAD(&clp->cl_lockowners); - } - return clp; + if ((clp = kmalloc(sizeof(*clp), GFP_KERNEL))) + memset(clp, 0, sizeof(nfs4_verifier)); + return clp; } void nfs4_put_client(struct nfs4_client *clp) { - BUG_ON(!clp); - BUG_ON(!atomic_read(&clp->cl_count)); - - if (atomic_dec_and_test(&clp->cl_count)) { - BUG_ON(!list_empty(&clp->cl_lockowners)); - kfree(clp); + BUG_ON(!clp); + kfree(clp); +} + +static inline u32 +nfs4_alloc_lockowner_id(struct nfs4_client *clp) +{ + u32 res; + + spin_lock(&state_spinlock); + res = clp->cl_lockowner_id ++; + spin_unlock(&state_spinlock); + return res; +} + +/* + * nfs4_get_shareowner(): this is called on the OPEN or CREATE path to + * obtain a new shareowner. + * + * There are three shareowners (open_owner4 in rfc3010) per inode, + * one for each possible combination of share lock access. Since + * Linux does not support the deny access type, there are + * three (not 9) referenced by the nfs_inode: + * + * O_WRONLY: inode->wo_owner + * O_RDONLY: inode->ro_owner + * O_RDWR: inode->rw_owner + * + * We create a new shareowner the first time a file is OPENed with + * one of the above shares. All other OPENs with a similar + * share use the single stateid associated with the inode. + * + */ +struct nfs4_shareowner * +nfs4_get_shareowner(struct inode *dir) +{ + struct nfs4_client *clp; + struct nfs4_shareowner *sp; + + sp = kmalloc(sizeof(*sp),GFP_KERNEL); + if (!sp) + return NULL; + clp = (NFS_SB(dir->i_sb))->nfs4_state; + BUG_ON(!clp); + init_MUTEX(&sp->so_sema); + sp->so_seqid = 0; /* arbitrary */ + memset(sp->so_stateid, 0, sizeof(nfs4_stateid)); + sp->so_id = nfs4_alloc_lockowner_id(clp); + return sp; +} + +/* + * Called for each non-null inode shareowner in nfs_clear_inode, + * or if nfs4_do_open fails. + */ +void +nfs4_put_shareowner(struct inode *inode, struct nfs4_shareowner *sp) +{ + if (!sp) + return; + if (sp->so_flags & O_ACCMODE) + nfs4_do_close(inode, sp); + kfree(sp); +} + +/* +* Called with sp->so_sema held. +* +* Increment the seqid if the OPEN/OPEN_DOWNGRADE/CLOSE succeeded, or +* failed with a seqid incrementing error - +* see comments nfs_fs.h:seqid_mutating_error() +*/ +void +nfs4_increment_seqid(u32 status, struct nfs4_shareowner *sp) +{ + if (status == NFS_OK || seqid_mutating_err(status)) + sp->so_seqid++; +} + +/* +* Called by nfs4_proc_open to set the appropriate stateid +*/ +int +nfs4_set_inode_share(struct inode * inode, struct nfs4_shareowner *sp, unsigned int open_flags) +{ + struct nfs_inode *nfsi = NFS_I(inode); + + switch (open_flags & O_ACCMODE) { + case O_RDONLY: + if (!nfsi->ro_owner) { + nfsi->ro_owner = sp; + return 0; + } + break; + case O_WRONLY: + if (!nfsi->wo_owner) { + nfsi->wo_owner = sp; + return 0; + } + break; + case O_RDWR: + if (!nfsi->rw_owner) { + nfsi->rw_owner = sp; + return 0; + } + } + return -EBUSY; +} + +/* +* Boolean test to determine if an OPEN call goes on the wire. +* +* Called by nfs4_proc_open. +*/ +int +nfs4_test_shareowner(struct inode *inode, unsigned int open_flags) +{ + struct nfs_inode *nfsi = NFS_I(inode); + + switch (open_flags & O_ACCMODE) { + case O_RDONLY: + if(nfsi->ro_owner) + return 0; + break; + case O_WRONLY: + if(nfsi->wo_owner) + return 0; + break; + case O_RDWR: + if(nfsi->rw_owner) + return 0; } + return 1; +} + +struct nfs4_shareowner * +nfs4_get_inode_share(struct inode * inode, unsigned int open_flags) +{ + struct nfs_inode *nfsi = NFS_I(inode); + + switch (open_flags & O_ACCMODE) { + case O_RDONLY: + return nfsi->ro_owner; + case O_WRONLY: + return nfsi->wo_owner; + case O_RDWR: + return nfsi->rw_owner; + } + /* Duh gcc warning if we don't... */ + return NULL; } /* diff -Nru a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c --- a/fs/nfs/nfs4xdr.c Sat Feb 1 16:55:22 2003 +++ b/fs/nfs/nfs4xdr.c Mon Apr 7 15:47:19 2003 @@ -8,7 +8,7 @@ * * Kendrick Smith * Andy Adamson - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -50,12 +50,7 @@ #include #include #include - -/* Emperically, it seems that the NFS client gets confused if - * cookies larger than this are returned -- presumably a - * signedness issue? - */ -#define COOKIE_MAX 0x7fffffff +#include #define NFSDBG_FACILITY NFSDBG_XDR @@ -78,6 +73,17 @@ #define encode_putfh_maxsz op_encode_hdr_maxsz + 1 + \ (NFS4_FHSIZE >> 2) #define decode_putfh_maxsz op_decode_hdr_maxsz +#define encode_getfh_maxsz op_encode_hdr_maxsz +#define decode_getfh_maxsz op_decode_hdr_maxsz + 1 + \ + (NFS4_FHSIZE >> 2) +#define encode_getattr_maxsz op_encode_hdr_maxsz + 3 +#define nfs4_fattr_bitmap_maxsz 26 + 2 * ((NFS4_MAXNAMLEN +1) >> 2) +#define decode_getattr_maxsz op_decode_hdr_maxsz + 3 + \ + nfs4_fattr_bitmap_maxsz +#define encode_savefh_maxsz op_encode_hdr_maxsz +#define decode_savefh_maxsz op_decode_hdr_maxsz +#define encode_restorefh_maxsz op_encode_hdr_maxsz +#define decode_restorefh_maxsz op_decode_hdr_maxsz #define encode_read_getattr_maxsz op_encode_hdr_maxsz + 2 #define decode_read_getattr_maxsz op_decode_hdr_maxsz + 8 #define encode_pre_write_getattr_maxsz op_encode_hdr_maxsz + 2 @@ -115,6 +121,44 @@ decode_pre_write_getattr_maxsz + \ op_decode_hdr_maxsz + 2 + \ decode_post_write_getattr_maxsz +#define NFS4_enc_open_sz compound_encode_hdr_maxsz + \ + encode_putfh_maxsz + \ + encode_savefh_maxsz + \ + op_encode_hdr_maxsz + \ + 13 + 3 + 2 + 64 + \ + encode_getattr_maxsz + \ + encode_getfh_maxsz + \ + encode_restorefh_maxsz + \ + encode_getattr_maxsz +#define NFS4_dec_open_sz compound_decode_hdr_maxsz + \ + decode_putfh_maxsz + \ + decode_savefh_maxsz + \ + op_decode_hdr_maxsz + 4 + 5 + 2 + 3 + \ + decode_getattr_maxsz + \ + decode_getfh_maxsz + \ + decode_restorefh_maxsz + \ + decode_getattr_maxsz +#define NFS4_enc_open_confirm_sz \ + compound_encode_hdr_maxsz + \ + encode_putfh_maxsz + \ + op_encode_hdr_maxsz + 5 +#define NFS4_dec_open_confirm_sz compound_decode_hdr_maxsz + \ + decode_putfh_maxsz + \ + op_decode_hdr_maxsz + 4 +#define NFS4_enc_close_sz compound_encode_hdr_maxsz + \ + encode_putfh_maxsz + \ + op_encode_hdr_maxsz + 5 +#define NFS4_dec_close_sz compound_decode_hdr_maxsz + \ + decode_putfh_maxsz + \ + op_decode_hdr_maxsz + 4 +#define NFS4_enc_setattr_sz compound_encode_hdr_maxsz + \ + encode_putfh_maxsz + \ + op_encode_hdr_maxsz + 4 + \ + nfs4_fattr_bitmap_maxsz + \ + encode_getattr_maxsz +#define NFS4_dec_setattr_sz compound_decode_hdr_maxsz + \ + decode_putfh_maxsz + \ + op_decode_hdr_maxsz + 3 static struct { @@ -190,30 +234,9 @@ return 0; } -/* - * FIXME: The following dummy entries will be replaced once the userland - * upcall gets in... - */ -static int -encode_uid(char *p, uid_t uid) -{ - strcpy(p, "nobody"); - return 6; -} - -/* - * FIXME: The following dummy entries will be replaced once the userland - * upcall gets in... - */ -static int -encode_gid(char *p, gid_t gid) -{ - strcpy(p, "nobody"); - return 6; -} - static int -encode_attrs(struct xdr_stream *xdr, struct iattr *iap) +encode_attrs(struct xdr_stream *xdr, struct iattr *iap, + struct nfs_server *server) { char owner_name[256]; char owner_group[256]; @@ -241,20 +264,27 @@ if (iap->ia_valid & ATTR_MODE) len += 4; if (iap->ia_valid & ATTR_UID) { - status = owner_namelen = encode_uid(owner_name, iap->ia_uid); + status = nfs_idmap_name(server, IDMAP_TYPE_USER, + iap->ia_uid, owner_name, &owner_namelen); if (status < 0) { printk(KERN_WARNING "nfs: couldn't resolve uid %d to string\n", iap->ia_uid); - goto out; + /* XXX */ + strcpy(owner_name, "nobody"); + owner_namelen = sizeof("nobody") - 1; + /* goto out; */ } len += 4 + (XDR_QUADLEN(owner_namelen) << 2); } if (iap->ia_valid & ATTR_GID) { - status = owner_grouplen = encode_gid(owner_group, iap->ia_gid); + status = nfs_idmap_name(server, IDMAP_TYPE_GROUP, + iap->ia_gid, owner_group, &owner_grouplen); if (status < 0) { printk(KERN_WARNING "nfs4: couldn't resolve gid %d to string\n", iap->ia_gid); - goto out; + strcpy(owner_group, "nobody"); + owner_grouplen = sizeof("nobody") - 1; + /* goto out; */ } len += 4 + (XDR_QUADLEN(owner_grouplen) << 2); } @@ -348,14 +378,14 @@ } static int -encode_close(struct xdr_stream *xdr, struct nfs4_close *close) +encode_close(struct xdr_stream *xdr, struct nfs_closeargs *arg) { uint32_t *p; RESERVE_SPACE(8+sizeof(nfs4_stateid)); WRITE32(OP_CLOSE); - WRITE32(close->cl_seqid); - WRITEMEM(close->cl_stateid, sizeof(nfs4_stateid)); + WRITE32(arg->seqid); + WRITEMEM(arg->stateid, sizeof(nfs4_stateid)); return 0; } @@ -374,7 +404,8 @@ } static int -encode_create(struct xdr_stream *xdr, struct nfs4_create *create) +encode_create(struct xdr_stream *xdr, struct nfs4_create *create, + struct nfs_server *server) { uint32_t *p; @@ -403,7 +434,7 @@ WRITE32(create->cr_namelen); WRITEMEM(create->cr_name, create->cr_namelen); - return encode_attrs(xdr, create->cr_attrs); + return encode_attrs(xdr, create->cr_attrs, server); } static int @@ -509,69 +540,76 @@ } static int -encode_open(struct xdr_stream *xdr, struct nfs4_open *open) +encode_open(struct xdr_stream *xdr, struct nfs_openargs *arg) { - static int global_id = 0; - int id = global_id++; int status; uint32_t *p; - - /* seqid, share_access, share_deny, clientid, ownerlen, owner, opentype */ + + /* + * opcode 4, seqid 4, share_access 4, share_deny 4, clientid 8, ownerlen 4, + * owner 4, opentype 4 = 36 + */ RESERVE_SPACE(36); WRITE32(OP_OPEN); - WRITE32(0); /* seqid */ - WRITE32(open->op_share_access); - WRITE32(0); /* for us, share_deny== 0 always */ - WRITE64(open->op_client_state->cl_clientid); + WRITE32(arg->seqid); + switch (arg->share_access) { + case O_RDONLY: + WRITE32(NFS4_SHARE_ACCESS_READ); + break; + case O_WRONLY: + WRITE32(NFS4_SHARE_ACCESS_WRITE); + break; + case O_RDWR: + WRITE32(NFS4_SHARE_ACCESS_BOTH); + } + WRITE32(0); /* for linux, share_deny = 0 always */ + WRITE64(arg->clientid); WRITE32(4); - WRITE32(id); - WRITE32(open->op_opentype); - - if (open->op_opentype == NFS4_OPEN_CREATE) { - if (open->op_createmode == NFS4_CREATE_EXCLUSIVE) { - RESERVE_SPACE(4+sizeof(nfs4_verifier)); - WRITE32(open->op_createmode); - WRITEMEM(open->op_verifier, sizeof(nfs4_verifier)); + WRITE32(arg->id); + WRITE32(arg->opentype); + + if (arg->opentype == NFS4_OPEN_CREATE) { + if (arg->createmode == NFS4_CREATE_EXCLUSIVE) { + RESERVE_SPACE(12); + WRITE32(arg->createmode); + WRITEMEM(arg->u.verifier, sizeof(nfs4_verifier)); } - else if (open->op_attrs) { + else if (arg->u.attrs) { RESERVE_SPACE(4); - WRITE32(open->op_createmode); - if ((status = encode_attrs(xdr, open->op_attrs))) + WRITE32(arg->createmode); + if ((status = encode_attrs(xdr, arg->u.attrs, arg->server))) return status; } else { RESERVE_SPACE(12); - WRITE32(open->op_createmode); + WRITE32(arg->createmode); WRITE32(0); WRITE32(0); } } - RESERVE_SPACE(8 + open->op_name->len); + RESERVE_SPACE(8 + arg->name->len); WRITE32(NFS4_OPEN_CLAIM_NULL); - WRITE32(open->op_name->len); - WRITEMEM(open->op_name->name, open->op_name->len); - + WRITE32(arg->name->len); + WRITEMEM(arg->name->name, arg->name->len); + return 0; } static int -encode_open_confirm(struct xdr_stream *xdr, struct nfs4_open_confirm *open_confirm) +encode_open_confirm(struct xdr_stream *xdr, struct nfs_open_confirmargs *arg) { uint32_t *p; - /* - * Note: In this "stateless" implementation, the OPEN_CONFIRM - * seqid is always equal to 1. - */ RESERVE_SPACE(8+sizeof(nfs4_stateid)); WRITE32(OP_OPEN_CONFIRM); - WRITEMEM(open_confirm->oc_stateid, sizeof(nfs4_stateid)); - WRITE32(1); - + WRITEMEM(arg->stateid, sizeof(nfs4_stateid)); + WRITE32(arg->seqid); + return 0; } + static int encode_putfh(struct xdr_stream *xdr, struct nfs_fh *fh) { @@ -604,10 +642,7 @@ RESERVE_SPACE(32); WRITE32(OP_READ); - WRITE32(0); /* all-zero stateid! */ - WRITE32(0); - WRITE32(0); - WRITE32(0); + WRITEMEM(args->stateid, sizeof(nfs4_stateid)); WRITE64(args->offset); WRITE32(args->count); @@ -727,16 +762,17 @@ } static int -encode_setattr(struct xdr_stream *xdr, struct nfs4_setattr *setattr) +encode_setattr(struct xdr_stream *xdr, struct nfs_setattrargs *arg, + struct nfs_server *server) { int status; uint32_t *p; RESERVE_SPACE(4+sizeof(nfs4_stateid)); WRITE32(OP_SETATTR); - WRITEMEM(setattr->st_stateid, sizeof(nfs4_stateid)); + WRITEMEM(arg->stateid, sizeof(nfs4_stateid)); - if ((status = encode_attrs(xdr, setattr->st_iap))) + if ((status = encode_attrs(xdr, arg->iap, server))) return status; return 0; @@ -790,10 +826,7 @@ RESERVE_SPACE(36); WRITE32(OP_WRITE); - WRITE32(0xffffffff); /* magic stateid -1 */ - WRITE32(0xffffffff); - WRITE32(0xffffffff); - WRITE32(0xffffffff); + WRITEMEM(args->stateid, sizeof(nfs4_stateid)); WRITE64(args->offset); WRITE32(args->stable); WRITE32(args->count); @@ -821,11 +854,8 @@ case OP_ACCESS: status = encode_access(xdr, &cp->ops[i].u.access); break; - case OP_CLOSE: - status = encode_close(xdr, &cp->ops[i].u.close); - break; case OP_CREATE: - status = encode_create(xdr, &cp->ops[i].u.create); + status = encode_create(xdr, &cp->ops[i].u.create, cp->server); break; case OP_GETATTR: status = encode_getattr(xdr, &cp->ops[i].u.getattr); @@ -839,12 +869,6 @@ case OP_LOOKUP: status = encode_lookup(xdr, &cp->ops[i].u.lookup); break; - case OP_OPEN: - status = encode_open(xdr, &cp->ops[i].u.open); - break; - case OP_OPEN_CONFIRM: - status = encode_open_confirm(xdr, &cp->ops[i].u.open_confirm); - break; case OP_PUTFH: status = encode_putfh(xdr, cp->ops[i].u.putfh.pf_fhandle); break; @@ -872,9 +896,6 @@ case OP_SAVEFH: status = encode_savefh(xdr); break; - case OP_SETATTR: - status = encode_setattr(xdr, &cp->ops[i].u.setattr); - break; case OP_SETCLIENTID: status = encode_setclientid(xdr, &cp->ops[i].u.setclientid); break; @@ -909,6 +930,87 @@ cp->timestamp = jiffies; return status; } +/* + * Encode a CLOSE request + */ +static int +nfs4_xdr_enc_close(struct rpc_rqst *req, uint32_t *p, struct nfs_closeargs *args) +{ + struct xdr_stream xdr; + struct compound_hdr hdr = { + .nops = 2, + }; + int status; + + xdr_init_encode(&xdr, &req->rq_snd_buf, p); + encode_compound_hdr(&xdr, &hdr); + status = encode_putfh(&xdr, args->fh); + if(status) + goto out; + status = encode_close(&xdr, args); +out: + return status; +} + +/* + * Encode an OPEN request + */ +static int +nfs4_xdr_enc_open(struct rpc_rqst *req, uint32_t *p, struct nfs_openargs *args) +{ + struct xdr_stream xdr; + struct compound_hdr hdr = { + .nops = 7, + }; + int status; + + xdr_init_encode(&xdr, &req->rq_snd_buf, p); + encode_compound_hdr(&xdr, &hdr); + status = encode_putfh(&xdr, args->fh); + if (status) + goto out; + status = encode_savefh(&xdr); + if (status) + goto out; + status = encode_open(&xdr, args); + if (status) + goto out; + status = encode_getattr(&xdr, args->f_getattr); + if (status) + goto out; + status = encode_getfh(&xdr); + if (status) + goto out; + status = encode_restorefh(&xdr); + if (status) + goto out; + status = encode_getattr(&xdr, args->d_getattr); +out: + return status; +} + +/* + * Encode an OPEN_CONFIRM request + */ +static int +nfs4_xdr_enc_open_confirm(struct rpc_rqst *req, uint32_t *p, struct nfs_open_confirmargs *args) +{ + struct xdr_stream xdr; + struct compound_hdr hdr = { + .nops = 2, + }; + int status; + + xdr_init_encode(&xdr, &req->rq_snd_buf, p); + encode_compound_hdr(&xdr, &hdr); + status = encode_putfh(&xdr, args->fh); + if(status) + goto out; + status = encode_open_confirm(&xdr, args); +out: + return status; +} + /* * Encode a READ request @@ -946,6 +1048,32 @@ } /* + * Encode an SETATTR request + */ +static int +nfs4_xdr_enc_setattr(struct rpc_rqst *req, uint32_t *p, struct nfs_setattrargs *args) + +{ + struct xdr_stream xdr; + struct compound_hdr hdr = { + .nops = 3, + }; + int status; + + xdr_init_encode(&xdr, &req->rq_snd_buf, p); + encode_compound_hdr(&xdr, &hdr); + status = encode_putfh(&xdr, args->fh); + if(status) + goto out; + status = encode_setattr(&xdr, args, args->server); + if(status) + goto out; + status = encode_getattr(&xdr, args->attr); +out: + return status; +} + +/* * Encode a WRITE request */ static int @@ -974,7 +1102,7 @@ } /* - * Encode a COMMIT request + * a COMMIT request */ static int nfs4_xdr_enc_commit(struct rpc_rqst *req, uint32_t *p, struct nfs_writeargs *args) @@ -1044,28 +1172,6 @@ } \ } while (0) -/* - * FIXME: The following dummy entry will be replaced once the userland - * upcall gets in... - */ -static int -decode_uid(char *p, uint32_t len, uid_t *uid) -{ - *uid = -2; - return 0; -} - -/* - * FIXME: The following dummy entry will be replaced once the userland - * upcall gets in... - */ -static int -decode_gid(char *p, uint32_t len, gid_t *gid) -{ - *gid = -2; - return 0; -} - static int decode_compound_hdr(struct xdr_stream *xdr, struct compound_hdr *hdr) { @@ -1139,7 +1245,7 @@ } static int -decode_close(struct xdr_stream *xdr, struct nfs4_close *close) +decode_close(struct xdr_stream *xdr, struct nfs_closeres *res) { uint32_t *p; int status; @@ -1148,7 +1254,7 @@ if (status) return status; READ_BUF(sizeof(nfs4_stateid)); - COPYMEM(close->cl_stateid, sizeof(nfs4_stateid)); + COPYMEM(res->stateid, sizeof(nfs4_stateid)); return 0; } @@ -1190,7 +1296,8 @@ extern uint32_t nfs4_pathconf_bitmap[2]; static int -decode_getattr(struct xdr_stream *xdr, struct nfs4_getattr *getattr) +decode_getattr(struct xdr_stream *xdr, struct nfs4_getattr *getattr, + struct nfs_server *server) { struct nfs_fattr *nfp = getattr->gt_attrs; struct nfs_fsstat *fsstat = getattr->gt_fsstat; @@ -1354,35 +1461,39 @@ } if (bmval1 & FATTR4_WORD1_OWNER) { READ_BUF(4); - len += 4; - READ32(dummy32); /* name length */ - if (dummy32 > XDR_MAX_NETOBJ) { + len += 4; + READ32(dummy32); /* name length */ + if (dummy32 > XDR_MAX_NETOBJ) { dprintk("read_attrs: name too long!\n"); - goto xdr_error; - } - READ_BUF(dummy32); - len += (XDR_QUADLEN(dummy32) << 2); - if ((status = decode_uid((char *)p, dummy32, &nfp->uid))) { - dprintk("read_attrs: gss_get_num failed!\n"); - goto out; - } - dprintk("read_attrs: uid=%d\n", (int)nfp->uid); + goto xdr_error; + } + READ_BUF(dummy32); + len += (XDR_QUADLEN(dummy32) << 2); + if ((status = nfs_idmap_id(server, IDMAP_TYPE_USER, + (char *)p, len, &nfp->uid)) == -1) { + dprintk("read_attrs: gss_get_num failed!\n"); + /* goto out; */ + nfp->uid = -2; + } + dprintk("read_attrs: uid=%d\n", (int)nfp->uid); } if (bmval1 & FATTR4_WORD1_OWNER_GROUP) { READ_BUF(4); - len += 4; - READ32(dummy32); - if (dummy32 > XDR_MAX_NETOBJ) { - dprintk("read_attrs: name too long!\n"); - goto xdr_error; - } - READ_BUF(dummy32); - len += (XDR_QUADLEN(dummy32) << 2); - if ((status = decode_gid((char *)p, dummy32, &nfp->gid))) { - dprintk("read_attrs: gss_get_num failed!\n"); - goto out; - } - dprintk("read_attrs: gid=%d\n", (int)nfp->gid); + len += 4; + READ32(dummy32); + if (dummy32 > XDR_MAX_NETOBJ) { + dprintk("read_attrs: name too long!\n"); + goto xdr_error; + } + READ_BUF(dummy32); + len += (XDR_QUADLEN(dummy32) << 2); + if ((status = nfs_idmap_id(server, IDMAP_TYPE_GROUP, + (char *)p, len, &nfp->gid)) == -1) { + dprintk("read_attrs: gss_get_num failed!\n"); + nfp->gid = -2; + /* goto out; */ + } + dprintk("read_attrs: gid=%d\n", (int)nfp->gid); } if (bmval1 & FATTR4_WORD1_RAWDEV) { uint32_t major, minor; @@ -1617,49 +1728,49 @@ } static int -decode_open(struct xdr_stream *xdr, struct nfs4_open *open) +decode_open(struct xdr_stream *xdr, struct nfs_openres *res) { - uint32_t *p; - uint32_t bmlen, delegation_type; - int status; - - status = decode_op_hdr(xdr, OP_OPEN); - if (status) - return status; - READ_BUF(sizeof(nfs4_stateid)); - COPYMEM(open->op_stateid, sizeof(nfs4_stateid)); + uint32_t *p; + uint32_t bmlen, delegation_type; + int status; - decode_change_info(xdr, open->op_cinfo); + status = decode_op_hdr(xdr, OP_OPEN); + if (status) + return status; + READ_BUF(sizeof(nfs4_stateid)); + COPYMEM(res->stateid, sizeof(nfs4_stateid)); - READ_BUF(8); - READ32(*open->op_rflags); - READ32(bmlen); - if (bmlen > 10) - goto xdr_error; - - READ_BUF((bmlen << 2) + 4); - p += bmlen; - READ32(delegation_type); - if (delegation_type != NFS4_OPEN_DELEGATE_NONE) - goto xdr_error; - - DECODE_TAIL; + decode_change_info(xdr, res->cinfo); + + READ_BUF(8); + READ32(res->rflags); + READ32(bmlen); + if (bmlen > 10) + goto xdr_error; + + READ_BUF((bmlen << 2) + 4); + p += bmlen; + READ32(delegation_type); + if (delegation_type != NFS4_OPEN_DELEGATE_NONE) + goto xdr_error; + + DECODE_TAIL; } static int -decode_open_confirm(struct xdr_stream *xdr, struct nfs4_open_confirm *open_confirm) +decode_open_confirm(struct xdr_stream *xdr, struct nfs_open_confirmres *res) { - uint32_t *p; - int status; + uint32_t *p; - status = decode_op_hdr(xdr, OP_OPEN_CONFIRM); - if (status) - return status; - READ_BUF(sizeof(nfs4_stateid)); - COPYMEM(open_confirm->oc_stateid, sizeof(nfs4_stateid)); - return 0; + res->status = decode_op_hdr(xdr, OP_OPEN_CONFIRM); + if (res->status) + return res->status; + READ_BUF(sizeof(nfs4_stateid)); + COPYMEM(res->stateid, sizeof(nfs4_stateid)); + return 0; } + static int decode_putfh(struct xdr_stream *xdr) { @@ -1875,7 +1986,7 @@ } static int -decode_setattr(struct xdr_stream *xdr) +decode_setattr(struct xdr_stream *xdr, struct nfs_setattrres *res) { uint32_t *p; uint32_t bmlen; @@ -1986,14 +2097,11 @@ case OP_ACCESS: status = decode_access(xdr, &op->u.access); break; - case OP_CLOSE: - status = decode_close(xdr, &op->u.close); - break; case OP_CREATE: status = decode_create(xdr, &op->u.create); break; case OP_GETATTR: - status = decode_getattr(xdr, &op->u.getattr); + status = decode_getattr(xdr, &op->u.getattr, cp->server); break; case OP_GETFH: status = decode_getfh(xdr, &op->u.getfh); @@ -2004,12 +2112,6 @@ case OP_LOOKUP: status = decode_lookup(xdr); break; - case OP_OPEN: - status = decode_open(xdr, &op->u.open); - break; - case OP_OPEN_CONFIRM: - status = decode_open_confirm(xdr, &op->u.open_confirm); - break; case OP_PUTFH: status = decode_putfh(xdr); break; @@ -2037,9 +2139,6 @@ case OP_SAVEFH: status = decode_savefh(xdr); break; - case OP_SETATTR: - status = decode_setattr(xdr); - break; case OP_SETCLIENTID: status = decode_setclientid(xdr, &op->u.setclientid); break; @@ -2082,6 +2181,118 @@ } /* + * Decode CLOSE response + */ +static int +nfs4_xdr_dec_close(struct rpc_rqst *rqstp, uint32_t *p, struct nfs_closeres *res) +{ + struct xdr_stream xdr; + struct compound_hdr hdr; + int status; + + xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); + status = decode_compound_hdr(&xdr, &hdr); + if (status) + goto out; + status = decode_putfh(&xdr); + if (status) + goto out; + status = decode_close(&xdr, res); +out: + return status; +} + +/* + * Decode OPEN response + */ +static int +nfs4_xdr_dec_open(struct rpc_rqst *rqstp, uint32_t *p, struct nfs_openres *res) +{ + struct xdr_stream xdr; + struct compound_hdr hdr; + struct nfs4_getfh gfh = { + .gf_fhandle = &res->fh, + }; + int status; + + xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); + status = decode_compound_hdr(&xdr, &hdr); + if (status) + goto out; + status = decode_putfh(&xdr); + if (status) + goto out; + status = decode_savefh(&xdr); + if (status) + goto out; + status = decode_open(&xdr, res); + if (status) + goto out; + status = decode_getattr(&xdr, res->f_getattr, res->server); + if (status) + goto out; + status = decode_getfh(&xdr, &gfh); + if (status) + goto out; + status = decode_restorefh(&xdr); + if (status) + goto out; + status = decode_getattr(&xdr, res->d_getattr, res->server); + if (status) + goto out; +out: + return status; +} + +/* + * Decode OPEN_CONFIRM response + */ +static int +nfs4_xdr_dec_open_confirm(struct rpc_rqst *rqstp, uint32_t *p, struct nfs_open_confirmres *res) +{ + struct xdr_stream xdr; + struct compound_hdr hdr; + int status; + + xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); + status = decode_compound_hdr(&xdr, &hdr); + if (status) + goto out; + status = decode_putfh(&xdr); + if (status) + goto out; + status = decode_open_confirm(&xdr, res); +out: + return status; +} + +/* + * Decode SETATTR response + */ +static int +nfs4_xdr_dec_setattr(struct rpc_rqst *rqstp, uint32_t *p, struct nfs_setattrres *res) +{ + struct xdr_stream xdr; + struct compound_hdr hdr; + int status; + + xdr_init_decode(&xdr, &rqstp->rq_rcv_buf, p); + status = decode_compound_hdr(&xdr, &hdr); + if (status) + goto out; + status = decode_putfh(&xdr); + if (status) + goto out; + status = decode_setattr(&xdr, res); + if (status) + goto out; + status = decode_getattr(&xdr, res->attr, res->server); +out: + return status; +} + + +/* * Decode Read response */ static int @@ -2188,9 +2399,6 @@ entry->name = (const char *) p; p += XDR_QUADLEN(entry->len); - if (entry->cookie > COOKIE_MAX) - entry->cookie = COOKIE_MAX; - /* * In case the server doesn't return an inode number, * we fake one here. (We don't use inode number 0, @@ -2213,7 +2421,7 @@ #endif #define PROC(proc, argtype, restype) \ -[NFSPROC4_CLNT_##proc] = { \ +[NFSPROC4_CLNT_##proc] = { \ .p_proc = NFSPROC4_COMPOUND, \ .p_encode = (kxdrproc_t) nfs4_xdr_##argtype, \ .p_decode = (kxdrproc_t) nfs4_xdr_##restype, \ @@ -2225,6 +2433,10 @@ PROC(READ, enc_read, dec_read), PROC(WRITE, enc_write, dec_write), PROC(COMMIT, enc_commit, dec_commit), + PROC(OPEN, enc_open, dec_open), + PROC(OPEN_CONFIRM, enc_open_confirm, dec_open_confirm), + PROC(CLOSE, enc_close, dec_close), + PROC(SETATTR, enc_setattr, dec_setattr), }; struct rpc_version nfs_version4 = { diff -Nru a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c --- a/fs/nfsd/nfs4xdr.c Tue Mar 25 14:44:38 2003 +++ b/fs/nfsd/nfs4xdr.c Thu Apr 3 15:03:46 2003 @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include diff -Nru a/fs/open.c b/fs/open.c --- a/fs/open.c Fri Feb 21 11:46:34 2003 +++ b/fs/open.c Wed Apr 9 11:44:15 2003 @@ -41,7 +41,7 @@ } -asmlinkage long sys_statfs(const char * path, struct statfs * buf) +asmlinkage long sys_statfs(const char __user * path, struct statfs __user * buf) { struct nameidata nd; int error; @@ -57,7 +57,7 @@ return error; } -asmlinkage long sys_fstatfs(unsigned int fd, struct statfs * buf) +asmlinkage long sys_fstatfs(unsigned int fd, struct statfs __user * buf) { struct file * file; struct statfs tmp; @@ -92,7 +92,7 @@ return err; } -static inline long do_sys_truncate(const char * path, loff_t length) +static inline long do_sys_truncate(const char __user * path, loff_t length) { struct nameidata nd; struct inode * inode; @@ -152,7 +152,7 @@ return error; } -asmlinkage long sys_truncate(const char * path, unsigned long length) +asmlinkage long sys_truncate(const char __user * path, unsigned long length) { /* on 32-bit boxen it will cut the range 2^31--2^32-1 off */ return do_sys_truncate(path, (long)length); @@ -208,7 +208,7 @@ /* LFS versions of truncate are only needed on 32 bit machines */ #if BITS_PER_LONG == 32 -asmlinkage long sys_truncate64(const char * path, loff_t length) +asmlinkage long sys_truncate64(const char __user * path, loff_t length) { return do_sys_truncate(path, length); } @@ -232,7 +232,7 @@ * must be owner or have write permission. * Else, update from *times, must be owner or super user. */ -asmlinkage long sys_utime(char * filename, struct utimbuf * times) +asmlinkage long sys_utime(char __user * filename, struct utimbuf __user * times) { int error; struct nameidata nd; @@ -280,7 +280,7 @@ * must be owner or have write permission. * Else, update from *times, must be owner or super user. */ -long do_utimes(char * filename, struct timeval * times) +long do_utimes(char __user * filename, struct timeval __user * times) { int error; struct nameidata nd; @@ -319,7 +319,7 @@ return error; } -asmlinkage long sys_utimes(char * filename, struct timeval * utimes) +asmlinkage long sys_utimes(char __user * filename, struct timeval __user * utimes) { struct timeval times[2]; @@ -334,7 +334,7 @@ * We do this by temporarily clearing all FS-related capabilities and * switching the fsuid/fsgid around to the real ones. */ -asmlinkage long sys_access(const char * filename, int mode) +asmlinkage long sys_access(const char __user * filename, int mode) { struct nameidata nd; int old_fsuid, old_fsgid; @@ -381,7 +381,7 @@ return res; } -asmlinkage long sys_chdir(const char * filename) +asmlinkage long sys_chdir(const char __user * filename) { struct nameidata nd; int error; @@ -432,7 +432,7 @@ return error; } -asmlinkage long sys_chroot(const char * filename) +asmlinkage long sys_chroot(const char __user * filename) { struct nameidata nd; int error; @@ -493,7 +493,7 @@ return err; } -asmlinkage long sys_chmod(const char * filename, mode_t mode) +asmlinkage long sys_chmod(const char __user * filename, mode_t mode) { struct nameidata nd; struct inode * inode; @@ -562,7 +562,7 @@ return error; } -asmlinkage long sys_chown(const char * filename, uid_t user, gid_t group) +asmlinkage long sys_chown(const char __user * filename, uid_t user, gid_t group) { struct nameidata nd; int error; @@ -575,7 +575,7 @@ return error; } -asmlinkage long sys_lchown(const char * filename, uid_t user, gid_t group) +asmlinkage long sys_lchown(const char __user * filename, uid_t user, gid_t group) { struct nameidata nd; int error; @@ -793,7 +793,7 @@ write_unlock(&files->file_lock); } -asmlinkage long sys_open(const char * filename, int flags, int mode) +asmlinkage long sys_open(const char __user * filename, int flags, int mode) { char * tmp; int fd, error; @@ -829,7 +829,7 @@ * For backward compatibility? Maybe this should be moved * into arch/i386 instead? */ -asmlinkage long sys_creat(const char * pathname, int mode) +asmlinkage long sys_creat(const char __user * pathname, int mode) { return sys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode); } diff -Nru a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c --- a/fs/proc/proc_misc.c Sat Mar 22 22:14:49 2003 +++ b/fs/proc/proc_misc.c Wed Apr 9 01:01:28 2003 @@ -177,8 +177,7 @@ "Mapped: %8lu kB\n" "Slab: %8lu kB\n" "Committed_AS: %8u kB\n" - "PageTables: %8lu kB\n" - "ReverseMaps: %8lu\n", + "PageTables: %8lu kB\n", K(i.totalram), K(i.freeram), K(i.bufferram), @@ -197,8 +196,7 @@ K(ps.nr_mapped), K(ps.nr_slab), K(committed), - K(ps.nr_page_table_pages), - ps.nr_reverse_maps + K(ps.nr_page_table_pages) ); len += hugetlb_report_meminfo(page + len); diff -Nru a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c --- a/fs/proc/task_mmu.c Wed Jan 15 08:46:04 2003 +++ b/fs/proc/task_mmu.c Tue Apr 8 07:25:14 2003 @@ -45,13 +45,7 @@ unsigned long task_vsize(struct mm_struct *mm) { - struct vm_area_struct *vma; - unsigned long vsize = 0; - - for (vma = mm->mmap; vma; vma = vma->vm_next) - vsize += vma->vm_end - vma->vm_start; - - return vsize; + return PAGE_SIZE * mm->total_vm; } int task_statm(struct mm_struct *mm, int *shared, int *text, diff -Nru a/fs/read_write.c b/fs/read_write.c --- a/fs/read_write.c Thu Feb 6 09:47:26 2003 +++ b/fs/read_write.c Wed Apr 9 22:21:50 2003 @@ -135,7 +135,7 @@ #if !defined(__alpha__) asmlinkage long sys_llseek(unsigned int fd, unsigned long offset_high, - unsigned long offset_low, loff_t * result, + unsigned long offset_low, loff_t __user * result, unsigned int origin) { int retval; @@ -167,7 +167,7 @@ } #endif -ssize_t do_sync_read(struct file *filp, char *buf, size_t len, loff_t *ppos) +ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos) { struct kiocb kiocb; ssize_t ret; @@ -181,7 +181,7 @@ return ret; } -ssize_t vfs_read(struct file *file, char *buf, size_t count, loff_t *pos) +ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) { struct inode *inode = file->f_dentry->d_inode; ssize_t ret; @@ -207,7 +207,7 @@ return ret; } -ssize_t do_sync_write(struct file *filp, const char *buf, size_t len, loff_t *ppos) +ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) { struct kiocb kiocb; ssize_t ret; @@ -221,7 +221,7 @@ return ret; } -ssize_t vfs_write(struct file *file, const char *buf, size_t count, loff_t *pos) +ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos) { struct inode *inode = file->f_dentry->d_inode; ssize_t ret; @@ -247,7 +247,7 @@ return ret; } -asmlinkage ssize_t sys_read(unsigned int fd, char * buf, size_t count) +asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count) { struct file *file; ssize_t ret = -EBADF; @@ -261,7 +261,7 @@ return ret; } -asmlinkage ssize_t sys_write(unsigned int fd, const char * buf, size_t count) +asmlinkage ssize_t sys_write(unsigned int fd, const char __user * buf, size_t count) { struct file *file; ssize_t ret = -EBADF; @@ -275,7 +275,7 @@ return ret; } -asmlinkage ssize_t sys_pread64(unsigned int fd, char *buf, +asmlinkage ssize_t sys_pread64(unsigned int fd, char __user *buf, size_t count, loff_t pos) { struct file *file; @@ -293,7 +293,7 @@ return ret; } -asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char *buf, +asmlinkage ssize_t sys_pwrite64(unsigned int fd, const char __user *buf, size_t count, loff_t pos) { struct file *file; @@ -332,7 +332,7 @@ } static ssize_t do_readv_writev(int type, struct file *file, - const struct iovec * vector, + const struct iovec __user * uvector, unsigned long nr_segs, loff_t *pos) { typedef ssize_t (*io_fn_t)(struct file *, char *, size_t, loff_t *); @@ -340,7 +340,7 @@ size_t tot_len; struct iovec iovstack[UIO_FASTIOV]; - struct iovec *iov=iovstack; + struct iovec *iov=iovstack, *vector; ssize_t ret; int seg; io_fn_t fn; @@ -372,7 +372,7 @@ goto out; } ret = -EFAULT; - if (copy_from_user(iov, vector, nr_segs*sizeof(*vector))) + if (copy_from_user(iov, uvector, nr_segs*sizeof(*uvector))) goto out; /* @@ -451,7 +451,7 @@ return ret; } -ssize_t vfs_readv(struct file *file, const struct iovec *vec, +ssize_t vfs_readv(struct file *file, const struct iovec __user *vec, unsigned long vlen, loff_t *pos) { if (!(file->f_mode & FMODE_READ)) @@ -462,7 +462,7 @@ return do_readv_writev(READ, file, vec, vlen, pos); } -ssize_t vfs_writev(struct file *file, const struct iovec *vec, +ssize_t vfs_writev(struct file *file, const struct iovec __user *vec, unsigned long vlen, loff_t *pos) { if (!(file->f_mode & FMODE_WRITE)) @@ -475,7 +475,7 @@ asmlinkage ssize_t -sys_readv(unsigned long fd, const struct iovec *vec, unsigned long vlen) +sys_readv(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) { struct file *file; ssize_t ret = -EBADF; @@ -490,7 +490,7 @@ } asmlinkage ssize_t -sys_writev(unsigned long fd, const struct iovec *vec, unsigned long vlen) +sys_writev(unsigned long fd, const struct iovec __user *vec, unsigned long vlen) { struct file *file; ssize_t ret = -EBADF; @@ -586,7 +586,7 @@ return retval; } -asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t *offset, size_t count) +asmlinkage ssize_t sys_sendfile(int out_fd, int in_fd, off_t __user *offset, size_t count) { loff_t pos; off_t off; @@ -605,7 +605,7 @@ return do_sendfile(out_fd, in_fd, NULL, count, MAX_NON_LFS); } -asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t *offset, size_t count) +asmlinkage ssize_t sys_sendfile64(int out_fd, int in_fd, loff_t __user *offset, size_t count) { loff_t pos; ssize_t ret; diff -Nru a/fs/stat.c b/fs/stat.c --- a/fs/stat.c Sun Feb 2 13:40:28 2003 +++ b/fs/stat.c Wed Apr 9 22:13:11 2003 @@ -56,7 +56,7 @@ return 0; } -int vfs_stat(char *name, struct kstat *stat) +int vfs_stat(char __user *name, struct kstat *stat) { struct nameidata nd; int error; @@ -69,7 +69,7 @@ return error; } -int vfs_lstat(char *name, struct kstat *stat) +int vfs_lstat(char __user *name, struct kstat *stat) { struct nameidata nd; int error; @@ -102,7 +102,7 @@ * For backward compatibility? Maybe this should be moved * into arch/i386 instead? */ -static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat * statbuf) +static int cp_old_stat(struct kstat *stat, struct __old_kernel_stat __user * statbuf) { static int warncount = 5; struct __old_kernel_stat tmp; @@ -134,7 +134,7 @@ return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; } -asmlinkage long sys_stat(char * filename, struct __old_kernel_stat * statbuf) +asmlinkage long sys_stat(char __user * filename, struct __old_kernel_stat __user * statbuf) { struct kstat stat; int error = vfs_stat(filename, &stat); @@ -144,7 +144,7 @@ return error; } -asmlinkage long sys_lstat(char * filename, struct __old_kernel_stat * statbuf) +asmlinkage long sys_lstat(char __user * filename, struct __old_kernel_stat __user * statbuf) { struct kstat stat; int error = vfs_lstat(filename, &stat); @@ -154,7 +154,7 @@ return error; } -asmlinkage long sys_fstat(unsigned int fd, struct __old_kernel_stat * statbuf) +asmlinkage long sys_fstat(unsigned int fd, struct __old_kernel_stat __user * statbuf) { struct kstat stat; int error = vfs_fstat(fd, &stat); @@ -167,7 +167,7 @@ #endif -static int cp_new_stat(struct kstat *stat, struct stat *statbuf) +static int cp_new_stat(struct kstat *stat, struct stat __user *statbuf) { struct stat tmp; @@ -197,7 +197,7 @@ return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; } -asmlinkage long sys_newstat(char * filename, struct stat * statbuf) +asmlinkage long sys_newstat(char __user * filename, struct stat __user * statbuf) { struct kstat stat; int error = vfs_stat(filename, &stat); @@ -207,7 +207,7 @@ return error; } -asmlinkage long sys_newlstat(char * filename, struct stat * statbuf) +asmlinkage long sys_newlstat(char __user * filename, struct stat __user * statbuf) { struct kstat stat; int error = vfs_lstat(filename, &stat); @@ -217,7 +217,7 @@ return error; } -asmlinkage long sys_newfstat(unsigned int fd, struct stat * statbuf) +asmlinkage long sys_newfstat(unsigned int fd, struct stat __user * statbuf) { struct kstat stat; int error = vfs_fstat(fd, &stat); @@ -228,7 +228,7 @@ return error; } -asmlinkage long sys_readlink(const char * path, char * buf, int bufsiz) +asmlinkage long sys_readlink(const char __user * path, char __user * buf, int bufsiz) { struct nameidata nd; int error; @@ -257,7 +257,7 @@ /* ---------- LFS-64 ----------- */ #if !defined(__alpha__) && !defined(__ia64__) && !defined(__mips64) && !defined(__x86_64__) && !defined(CONFIG_ARCH_S390X) -static long cp_new_stat64(struct kstat *stat, struct stat64 *statbuf) +static long cp_new_stat64(struct kstat *stat, struct stat64 __user *statbuf) { struct stat64 tmp; @@ -284,7 +284,7 @@ return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; } -asmlinkage long sys_stat64(char * filename, struct stat64 * statbuf, long flags) +asmlinkage long sys_stat64(char __user * filename, struct stat64 __user * statbuf, long flags) { struct kstat stat; int error = vfs_stat(filename, &stat); @@ -294,7 +294,7 @@ return error; } -asmlinkage long sys_lstat64(char * filename, struct stat64 * statbuf, long flags) +asmlinkage long sys_lstat64(char __user * filename, struct stat64 __user * statbuf, long flags) { struct kstat stat; int error = vfs_lstat(filename, &stat); @@ -304,7 +304,7 @@ return error; } -asmlinkage long sys_fstat64(unsigned long fd, struct stat64 * statbuf, long flags) +asmlinkage long sys_fstat64(unsigned long fd, struct stat64 __user * statbuf, long flags) { struct kstat stat; int error = vfs_fstat(fd, &stat); diff -Nru a/fs/xfs/linux/xfs_aops.c b/fs/xfs/linux/xfs_aops.c --- a/fs/xfs/linux/xfs_aops.c Wed Mar 26 10:25:07 2003 +++ b/fs/xfs/linux/xfs_aops.c Mon Apr 7 12:05:42 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -48,8 +48,11 @@ clear_buffer_unwritten(bh); if (!uptodate) pagebuf_ioerror(pb, -EIO); - if (atomic_dec_and_test(&pb->pb_io_remaining) == 1) + if (atomic_dec_and_test(&pb->pb_io_remaining) == 1) { pagebuf_iodone(pb, 1, 1); + pb->pb_flags &= ~_PBF_LOCKABLE; + pagebuf_rele(pb); + } end_buffer_async_write(bh, uptodate); } @@ -160,7 +163,7 @@ delta -= mp->pbm_offset; delta >>= block_bits; - sector_shift = block_bits - 9; + sector_shift = block_bits - BBSHIFT; bn = mp->pbm_bn >> sector_shift; bn += delta; ASSERT((bn << sector_shift) >= mp->pbm_bn); @@ -282,7 +285,7 @@ total += bh->b_size; } while ((bh = bh->b_this_page) != head); - /* if we reached the end of the page, sum forwards in + /* If we reached the end of the page, sum forwards in * following pages. */ if (bh == head) { @@ -438,8 +441,11 @@ XFS_BUF_SET_FSPRIVATE(pb, LINVFS_GET_VP(inode)->v_fbhv); XFS_BUF_SET_IODONE_FUNC(pb, xfs_unwritten_conv); - if (atomic_dec_and_test(&pb->pb_io_remaining) == 1) + if (atomic_dec_and_test(&pb->pb_io_remaining) == 1) { pagebuf_iodone(pb, 1, 1); + pb->pb_flags &= ~_PBF_LOCKABLE; + pagebuf_rele(pb); + } return 0; } @@ -729,8 +735,8 @@ page_dirty = 0; } } else if (startio) { - if (buffer_uptodate(bh)) { - lock_buffer(bh); + if (buffer_uptodate(bh) && + !test_and_set_bit(BH_Lock, &bh->b_state)) { bh_arr[cnt++] = bh; page_dirty = 0; } @@ -753,8 +759,7 @@ } if (mp) { - cluster_write(inode, page->index + 1, mp, - startio, unmapped); + cluster_write(inode, page->index + 1, mp, startio, unmapped); } return page_dirty; @@ -763,7 +768,7 @@ for (i = 0; i < cnt; i++) { unlock_buffer(bh_arr[i]); } - + /* * If it's delalloc and we have nowhere to put it, * throw it away, unless the lower layers told @@ -806,8 +811,7 @@ size = 1 << inode->i_blkbits; VOP_BMAP(vp, offset, size, - create ? flags : PBF_READ, - (struct page_buf_bmap_s *)&pbmap, &retpbbm, error); + create ? flags : PBF_READ, &pbmap, &retpbbm, error); if (error) return -error; @@ -825,7 +829,7 @@ delta = offset - pbmap.pbm_offset; delta >>= inode->i_blkbits; - bn = pbmap.pbm_bn >> (inode->i_blkbits - 9); + bn = pbmap.pbm_bn >> (inode->i_blkbits - BBSHIFT); bn += delta; bh_result->b_blocknr = bn; diff -Nru a/fs/xfs/linux/xfs_file.c b/fs/xfs/linux/xfs_file.c --- a/fs/xfs/linux/xfs_file.c Wed Mar 26 10:04:08 2003 +++ b/fs/xfs/linux/xfs_file.c Mon Apr 7 12:05:42 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as @@ -136,6 +136,7 @@ return linvfs_writev(iocb->ki_filp, &iov, 1, &iocb->ki_pos); } + STATIC ssize_t linvfs_sendfile( struct file *filp, @@ -199,9 +200,7 @@ flags |= FSYNC_DATA; ASSERT(vp); - VOP_FSYNC(vp, flags, NULL, (xfs_off_t)0, (xfs_off_t)-1, error); - return -error; } @@ -287,6 +286,7 @@ kfree(read_buf); return -error; } + STATIC int linvfs_file_mmap( diff -Nru a/fs/xfs/linux/xfs_globals.c b/fs/xfs/linux/xfs_globals.c --- a/fs/xfs/linux/xfs_globals.c Wed Mar 26 10:11:41 2003 +++ b/fs/xfs/linux/xfs_globals.c Mon Apr 7 10:36:06 2003 @@ -49,11 +49,6 @@ xfs_param_t xfs_params = { 0, 1, 0, 0, 0, 3 }; /* - * Used to serialize atomicIncWithWrap. - */ -spinlock_t xfs_atomic_spin = SPIN_LOCK_UNLOCKED; - -/* * Global system credential structure. */ cred_t sys_cred_val, *sys_cred = &sys_cred_val; diff -Nru a/fs/xfs/linux/xfs_globals.h b/fs/xfs/linux/xfs_globals.h --- a/fs/xfs/linux/xfs_globals.h Wed Mar 26 10:11:41 2003 +++ b/fs/xfs/linux/xfs_globals.h Mon Apr 7 10:36:06 2003 @@ -38,11 +38,7 @@ */ extern uint64_t xfs_panic_mask; /* set to cause more panics */ - extern unsigned long xfs_physmem; - -extern spinlock_t xfs_atomic_spin; - extern struct cred *sys_cred; #endif /* __XFS_GLOBALS_H__ */ diff -Nru a/fs/xfs/linux/xfs_ioctl.c b/fs/xfs/linux/xfs_ioctl.c --- a/fs/xfs/linux/xfs_ioctl.c Tue Mar 25 13:39:31 2003 +++ b/fs/xfs/linux/xfs_ioctl.c Mon Apr 7 12:05:43 2003 @@ -39,11 +39,6 @@ #include -extern int xfs_change_file_space(bhv_desc_t *, int, - xfs_flock64_t *, xfs_off_t, cred_t *, int); -extern int xfs_set_dmattrs(bhv_desc_t *, u_int, u_int16_t, cred_t *); - - /* * xfs_find_handle maps from userspace xfs_fsop_handlereq structure to * a file or fs handle. diff -Nru a/fs/xfs/linux/xfs_lrw.c b/fs/xfs/linux/xfs_lrw.c --- a/fs/xfs/linux/xfs_lrw.c Wed Mar 26 10:04:08 2003 +++ b/fs/xfs/linux/xfs_lrw.c Mon Apr 7 12:05:43 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as diff -Nru a/fs/xfs/linux/xfs_lrw.h b/fs/xfs/linux/xfs_lrw.h --- a/fs/xfs/linux/xfs_lrw.h Mon Mar 17 14:05:46 2003 +++ b/fs/xfs/linux/xfs_lrw.h Mon Apr 7 12:05:43 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as diff -Nru a/fs/xfs/linux/xfs_super.c b/fs/xfs/linux/xfs_super.c --- a/fs/xfs/linux/xfs_super.c Wed Mar 26 10:04:08 2003 +++ b/fs/xfs/linux/xfs_super.c Mon Apr 7 12:05:43 2003 @@ -257,7 +257,7 @@ }; struct proc_xfs_info *xfs_infop; struct xfs_mount *mp = XFS_BHVTOM(bhv); - char b[BDEVNAME_SIZE]; + char b[BDEVNAME_SIZE]; for (xfs_infop = xfs_info; xfs_infop->flag; xfs_infop++) { if (mp->m_flags & xfs_infop->flag) diff -Nru a/fs/xfs/support/atomic.h b/fs/xfs/support/atomic.h --- a/fs/xfs/support/atomic.h Wed Mar 26 10:11:41 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Further, this software is distributed without any warranty that it is - * free of the rightful claim of any third person regarding infringement - * or the like. Any license provided herein, whether implied or - * otherwise, applies only to this software file. Patent licenses, if - * any, provided herein do not apply to combinations of this program with - * other software, or any other product whatsoever. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., 59 - * Temple Place - Suite 330, Boston MA 02111-1307, USA. - * - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, - * Mountain View, CA 94043, or: - * - * http://www.sgi.com - * - * For further information regarding this notice, see: - * - * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ - */ -#ifndef __XFS_SUPPORT_ATOMIC_H__ -#define __XFS_SUPPORT_ATOMIC_H__ - -#include -#include -#include -#include -#include -#include - -/* - * This is used for two variables in XFS, one of which is a debug trace - * buffer index. They are not accessed via any other atomic operations - * so this is safe. All other atomic increments and decrements in XFS - * now use the Linux built-in functions. - */ - -extern spinlock_t xfs_atomic_spin; - -static __inline__ int atomicIncWithWrap(int *ip, int val) -{ - unsigned long flags; - int ret; - spin_lock_irqsave(&xfs_atomic_spin, flags); - ret = *ip; - (*ip)++; - if (*ip == val) *ip = 0; - spin_unlock_irqrestore(&xfs_atomic_spin, flags); - return ret; -} - -#endif /* __XFS_SUPPORT_ATOMIC_H__ */ diff -Nru a/fs/xfs/support/ktrace.c b/fs/xfs/support/ktrace.c --- a/fs/xfs/support/ktrace.c Wed Sep 11 11:12:13 2002 +++ b/fs/xfs/support/ktrace.c Mon Apr 7 10:36:06 2003 @@ -37,7 +37,6 @@ #include "kmem.h" #include "spin.h" #include "debug.h" -#include "atomic.h" #include "ktrace.h" #if (defined(DEBUG) || defined(CONFIG_XFS_VNODE_TRACING)) @@ -181,6 +180,7 @@ void *val14, void *val15) { + static lock_t wrap_lock = SPIN_LOCK_UNLOCKED; int index; ktrace_entry_t *ktep; @@ -189,7 +189,11 @@ /* * Grab an entry by pushing the index up to the next one. */ - index = atomicIncWithWrap(&ktp->kt_index, ktp->kt_nentries); + spin_lock(&wrap_lock); + index = ktp->kt_index; + if (++ktp->kt_index == ktp->kt_nentries) + ktp->kt_index = 0; + spin_unlock(&wrap_lock); if (!ktp->kt_rollover && index == ktp->kt_nentries - 1) ktp->kt_rollover = 1; diff -Nru a/fs/xfs/xfs.h b/fs/xfs/xfs.h --- a/fs/xfs/xfs.h Wed Mar 26 10:04:08 2003 +++ b/fs/xfs/xfs.h Mon Apr 7 10:36:06 2003 @@ -46,7 +46,6 @@ #include #include #include -#include #include #include #include diff -Nru a/fs/xfs/xfs_bmap_btree.h b/fs/xfs/xfs_bmap_btree.h --- a/fs/xfs/xfs_bmap_btree.h Mon Mar 17 12:00:45 2003 +++ b/fs/xfs/xfs_bmap_btree.h Mon Apr 7 10:33:39 2003 @@ -459,6 +459,8 @@ #endif +#ifdef __KERNEL__ + /* * Prototypes for xfs_bmap.c to call. */ @@ -706,5 +708,6 @@ xfs_bmbt_irec_t *, xfs_bmbt_irec_t *); +#endif /* __KERNEL__ */ #endif /* __XFS_BMAP_BTREE_H__ */ diff -Nru a/fs/xfs/xfs_dmapi.h b/fs/xfs/xfs_dmapi.h --- a/fs/xfs/xfs_dmapi.h Wed Mar 26 10:23:03 2003 +++ b/fs/xfs/xfs_dmapi.h Mon Apr 7 12:05:43 2003 @@ -186,7 +186,7 @@ extern struct bhv_vfsops xfs_dmops; -extern void xfs_dm_init(void); -extern void xfs_dm_exit(void); +extern int dmapi_init(void); +extern void dmapi_uninit(void); #endif /* __XFS_DMAPI_H__ */ diff -Nru a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h --- a/fs/xfs/xfs_fs.h Tue Dec 3 13:14:52 2002 +++ b/fs/xfs/xfs_fs.h Mon Apr 7 10:33:39 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 1995-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2.1 of the GNU Lesser General Public License @@ -44,21 +44,25 @@ * d_miniosz is the min xfer size, xfer size multiple and file seek offset * alignment. */ +#ifndef HAVE_DIOATTR struct dioattr { __u32 d_mem; /* data buffer memory alignment */ __u32 d_miniosz; /* min xfer size */ __u32 d_maxiosz; /* max xfer size */ }; +#endif /* * Structure for XFS_IOC_FSGETXATTR[A] and XFS_IOC_FSSETXATTR. */ +#ifndef HAVE_FSXATTR struct fsxattr { __u32 fsx_xflags; /* xflags field value (get/set) */ __u32 fsx_extsize; /* extsize field value (get/set)*/ __u32 fsx_nextents; /* nextents field value (get) */ unsigned char fsx_pad[16]; }; +#endif /* * Flags for the bs_xflags/fsx_xflags field @@ -79,6 +83,7 @@ * number of array elements given. The first structure is updated on * return to give the offset and length for the next call. */ +#ifndef HAVE_GETBMAP struct getbmap { __s64 bmv_offset; /* file offset of segment in blocks */ __s64 bmv_block; /* starting block (64-bit daddr_t) */ @@ -86,6 +91,7 @@ __s32 bmv_count; /* # of entries in array incl. 1st */ __s32 bmv_entries; /* # of entries filled in (output) */ }; +#endif /* * Structure for XFS_IOC_GETBMAPX. Fields bmv_offset through bmv_entries @@ -96,6 +102,7 @@ * in by the XFS_IOC_GETBMAPX command for each returned structure after * the first. */ +#ifndef HAVE_GETBMAPX struct getbmapx { __s64 bmv_offset; /* file offset of segment in blocks */ __s64 bmv_block; /* starting block (64-bit daddr_t) */ @@ -107,6 +114,7 @@ __s32 bmv_unused1; /* future use */ __s32 bmv_unused2; /* future use */ }; +#endif /* bmv_iflags values - set by XFS_IOC_GETBMAPX caller. */ #define BMV_IF_ATTRFORK 0x1 /* return attr fork rather than data */ @@ -136,11 +144,13 @@ * only values previously obtained via xfs_bulkstat! (Specifically the * xfs_bstat_t fields bs_dmevmask and bs_dmstate.) */ +#ifndef HAVE_FSDMIDATA struct fsdmidata { __u32 fsd_dmevmask; /* corresponds to di_dmevmask */ __u16 fsd_padding; __u16 fsd_dmstate; /* corresponds to di_dmstate */ }; +#endif /* * File segment locking set data type for 64 bit access. @@ -391,7 +401,7 @@ * This is typically called by a stateless file server in order to generate * "file handles". */ -#ifndef MAXFIDSZ +#ifndef HAVE_FID #define MAXFIDSZ 46 typedef struct fid { __u16 fid_len; /* length of data in bytes */ @@ -472,7 +482,7 @@ #define XFS_IOC_FSGROWFSLOG _IOW ('X', 111, struct xfs_growfs_log) #define XFS_IOC_FSGROWFSRT _IOW ('X', 112, struct xfs_growfs_rt) #define XFS_IOC_FSCOUNTS _IOR ('X', 113, struct xfs_fsop_counts) -#define XFS_IOC_SET_RESBLKS _IOR ('X', 114, struct xfs_fsop_resblks) +#define XFS_IOC_SET_RESBLKS _IOWR('X', 114, struct xfs_fsop_resblks) #define XFS_IOC_GET_RESBLKS _IOR ('X', 115, struct xfs_fsop_resblks) #define XFS_IOC_ERROR_INJECTION _IOW ('X', 116, struct xfs_error_injection) #define XFS_IOC_ERROR_CLEARALL _IOW ('X', 117, struct xfs_error_injection) @@ -486,6 +496,7 @@ /* XFS_IOC_GETFSUUID ---------- deprecated 140 */ +#ifndef HAVE_BBMACROS /* * Block I/O parameterization. A basic block (BB) is the lowest size of * filesystem allocation, and must equal 512. Length units given to bio @@ -497,5 +508,6 @@ #define BTOBB(bytes) (((__u64)(bytes) + BBSIZE - 1) >> BBSHIFT) #define BTOBBT(bytes) ((__u64)(bytes) >> BBSHIFT) #define BBTOB(bbs) ((bbs) << BBSHIFT) +#endif #endif /* __XFS_FS_H__ */ diff -Nru a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c --- a/fs/xfs/xfs_ialloc.c Mon Mar 17 12:19:20 2003 +++ b/fs/xfs/xfs_ialloc.c Mon Apr 7 10:36:06 2003 @@ -336,6 +336,21 @@ return 0; } +STATIC __inline xfs_agnumber_t +xfs_ialloc_next_ag( + xfs_mount_t *mp) +{ + xfs_agnumber_t agno; + + spin_lock(&mp->m_agirotor_lock); + agno = mp->m_agirotor; + if (++mp->m_agirotor == mp->m_maxagi) + mp->m_agirotor = 0; + spin_unlock(&mp->m_agirotor_lock); + + return agno; +} + /* * Select an allocation group to look for a free inode in, based on the parent * inode and then mode. Return the allocation group buffer. @@ -366,7 +381,7 @@ mp = tp->t_mountp; agcount = mp->m_maxagi; if (S_ISDIR(mode)) - pagno = atomicIncWithWrap((int *)&mp->m_agirotor, agcount); + pagno = xfs_ialloc_next_ag(mp); else { pagno = XFS_INO_TO_AGNO(mp, parent); if (pagno >= agcount) @@ -394,7 +409,7 @@ agbp = NULL; if (!pag->pagi_inodeok) { - atomicIncWithWrap((int *)&mp->m_agirotor, agcount); + xfs_ialloc_next_ag(mp); goto unlock_nextag; } diff -Nru a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c --- a/fs/xfs/xfs_iget.c Wed Mar 26 10:11:41 2003 +++ b/fs/xfs/xfs_iget.c Mon Apr 7 12:05:43 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as diff -Nru a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c --- a/fs/xfs/xfs_inode.c Wed Mar 26 10:27:23 2003 +++ b/fs/xfs/xfs_inode.c Mon Apr 7 10:17:06 2003 @@ -3608,31 +3608,6 @@ ip->i_update_core = 1; } -/* - * xfs_ibusy_check -- Checks whether inode reference count allows unmount - * - * The value returned is one if the reference count would prevent an unmount. - */ -int -xfs_ibusy_check( - xfs_inode_t *ip, - int refs) -{ - xfs_mount_t *mp = ip->i_mount; - - if ((refs == 1) && (ip == mp->m_rootip)) - return (0); - if ((refs == 1) && (ip == mp->m_rbmip)) - return (0); - if ((refs == 1) && (ip == mp->m_rsumip)) - return (0); - if (mp->m_quotainfo && ip->i_ino == mp->m_sb.sb_uquotino) - return (0); - if (mp->m_quotainfo && ip->i_ino == mp->m_sb.sb_gquotino) - return (0); - return (1); -} - #ifdef XFS_ILOCK_TRACE void xfs_ilock_trace(xfs_inode_t *ip, int lock, unsigned int lockflags, inst_t *ra) diff -Nru a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h --- a/fs/xfs/xfs_inode.h Wed Mar 26 10:11:41 2003 +++ b/fs/xfs/xfs_inode.h Mon Apr 7 10:17:06 2003 @@ -516,7 +516,6 @@ int xfs_iextents_copy(xfs_inode_t *, xfs_bmbt_rec_t *, int); int xfs_iflush(xfs_inode_t *, uint); int xfs_iflush_all(struct xfs_mount *, int); -int xfs_ibusy_check(xfs_inode_t *, int); int xfs_iaccess(xfs_inode_t *, mode_t, cred_t *); uint xfs_iroundup(uint); void xfs_ichgtime(xfs_inode_t *, int); diff -Nru a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c --- a/fs/xfs/xfs_mount.c Wed Mar 26 10:04:09 2003 +++ b/fs/xfs/xfs_mount.c Mon Apr 7 10:36:06 2003 @@ -509,6 +509,7 @@ int i; mp->m_agfrotor = mp->m_agirotor = 0; + spinlock_init(&mp->m_agirotor_lock, "m_agirotor_lock"); mp->m_maxagi = mp->m_sb.sb_agcount; mp->m_blkbit_log = sbp->sb_blocklog + XFS_NBBYLOG; mp->m_blkbb_log = sbp->sb_blocklog - BBSHIFT; diff -Nru a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h --- a/fs/xfs/xfs_mount.h Wed Mar 26 10:04:09 2003 +++ b/fs/xfs/xfs_mount.h Mon Apr 7 10:36:06 2003 @@ -291,6 +291,7 @@ int m_bsize; /* fs logical block size */ xfs_agnumber_t m_agfrotor; /* last ag where space found */ xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */ + lock_t m_agirotor_lock;/* .. and lock protecting it */ xfs_agnumber_t m_maxagi; /* highest inode alloc group */ int m_ihsize; /* size of next field */ struct xfs_ihash *m_ihash; /* fs private inode hash table*/ diff -Nru a/fs/xfs/xfs_rw.h b/fs/xfs/xfs_rw.h --- a/fs/xfs/xfs_rw.h Wed Nov 6 11:26:10 2002 +++ b/fs/xfs/xfs_rw.h Mon Apr 7 12:05:43 2003 @@ -153,39 +153,55 @@ xfs_bioerror( struct xfs_buf *b); -/* - * XFS I/O core functions - */ -extern int xfs_bioerror_relse(struct xfs_buf *); +int +xfs_bioerror_relse( + struct xfs_buf *b); + +int +xfs_read_buf( + struct xfs_mount *mp, + xfs_buftarg_t *target, + xfs_daddr_t blkno, + int len, + uint flags, + struct xfs_buf **bpp); + +void +xfs_ioerror_alert( + char *func, + struct xfs_mount *mp, + xfs_buf_t *bp, + xfs_daddr_t blkno); /* - * Needed by xfs_rw.c + * Prototypes for functions in xfs_vnodeops.c. */ + int xfs_rwlock( - bhv_desc_t *bdp, - vrwlock_t write_lock); + bhv_desc_t *bdp, + vrwlock_t write_lock); void xfs_rwunlock( - bhv_desc_t *bdp, - vrwlock_t write_lock); + bhv_desc_t *bdp, + vrwlock_t write_lock); int -xfs_read_buf( - struct xfs_mount *mp, - xfs_buftarg_t *target, - xfs_daddr_t blkno, - int len, - uint flags, - struct xfs_buf **bpp); +xfs_change_file_space( + bhv_desc_t *bdp, + int cmd, + xfs_flock64_t *bf, + xfs_off_t offset, + cred_t *credp, + int flags); -void -xfs_ioerror_alert( - char *func, - struct xfs_mount *mp, - xfs_buf_t *bp, - xfs_daddr_t blkno); +int +xfs_set_dmattrs( + bhv_desc_t *bdp, + u_int evmask, + u_int16_t state, + cred_t *credp); #endif /* __XFS_RW_H__ */ diff -Nru a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c --- a/fs/xfs/xfs_vfsops.c Wed Mar 26 10:04:09 2003 +++ b/fs/xfs/xfs_vfsops.c Mon Apr 7 10:17:06 2003 @@ -34,9 +34,7 @@ #include -STATIC int xfs_ibusy(xfs_mount_t *); STATIC int xfs_sync(bhv_desc_t *, int, cred_t *); -STATIC int xfs_unmount(bhv_desc_t *, int, cred_t *); int xfs_init(void) @@ -485,59 +483,6 @@ return error; } -/* - * xfs_ibusy searches for a busy inode in the mounted file system. - * - * Return 0 if there are no active inodes otherwise return 1. - */ -STATIC int -xfs_ibusy( - xfs_mount_t *mp) -{ - xfs_inode_t *ip; - vnode_t *vp; - int busy; - - busy = 0; - - XFS_MOUNT_ILOCK(mp); - - ip = mp->m_inodes; - if (ip == NULL) { - XFS_MOUNT_IUNLOCK(mp); - return busy; - } - - do { - /* Skip markers inserted by xfs_sync */ - if (ip->i_mount == NULL) { - ip = ip->i_mnext; - continue; - } - - vp = XFS_ITOV_NULL(ip); - - if (vp && vn_count(vp) != 0) { - if (xfs_ibusy_check(ip, vn_count(vp)) == 0) { - ip = ip->i_mnext; - continue; - } -#ifdef DEBUG - cmn_err(CE_WARN, "%s: busy vp=0x%p ip=0x%p " - "inum %Ld count=%d", - __FUNCTION__, vp, ip, ip->i_ino, vn_count(vp)); -#endif - busy++; - } - ip = ip->i_mnext; - } while ((ip != mp->m_inodes) && !busy); - - XFS_MOUNT_IUNLOCK(mp); - - return busy; -} - - STATIC int xfs_unmount( bhv_desc_t *bdp, @@ -570,16 +515,6 @@ unmount_event_wanted = 1; unmount_event_flags = (mp->m_dmevmask & (1<m_ddev_targp); diff -Nru a/include/asm-alpha/mmzone.h b/include/asm-alpha/mmzone.h --- a/include/asm-alpha/mmzone.h Mon Dec 30 07:03:59 2002 +++ b/include/asm-alpha/mmzone.h Thu Apr 3 14:49:57 2003 @@ -51,7 +51,7 @@ #ifdef CONFIG_DISCONTIGMEM /* - * Following are macros that each numa implmentation must define. + * Following are macros that each numa implementation must define. */ /* diff -Nru a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h --- a/include/asm-alpha/pci.h Sun Mar 16 13:55:57 2003 +++ b/include/asm-alpha/pci.h Thu Apr 3 14:49:57 2003 @@ -78,7 +78,7 @@ /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must be values that were returned from pci_alloc_consistent. SIZE must be the same as what as passed into pci_alloc_consistent. - References to the memory and mappings assosciated with CPU_ADDR or + References to the memory and mappings associated with CPU_ADDR or DMA_ADDR past this call are illegal. */ extern void pci_free_consistent(struct pci_dev *, size_t, void *, dma_addr_t); @@ -118,7 +118,7 @@ (((PTR)->LEN_NAME) = (VAL)) /* Map a set of buffers described by scatterlist in streaming mode for - PCI DMA. This is the scather-gather version of the above + PCI DMA. This is the scatter-gather version of the above pci_map_single interface. Here the scatter gather list elements are each tagged with the appropriate PCI dma address and length. They are obtained via sg_dma_{address,length}(SG). diff -Nru a/include/asm-alpha/uaccess.h b/include/asm-alpha/uaccess.h --- a/include/asm-alpha/uaccess.h Mon Jan 6 10:11:27 2003 +++ b/include/asm-alpha/uaccess.h Thu Apr 3 14:49:57 2003 @@ -31,7 +31,7 @@ /* - * Is a address valid? This does a straighforward calculation rather + * Is a address valid? This does a straightforward calculation rather * than tests. * * Address valid if: diff -Nru a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h --- a/include/asm-generic/siginfo.h Tue Feb 18 13:54:44 2003 +++ b/include/asm-generic/siginfo.h Tue Apr 8 21:33:40 2003 @@ -106,7 +106,7 @@ #define si_fd _sifields._sigpoll._fd #ifdef __KERNEL__ -#define __SI_MASK 0xffff0000 +#define __SI_MASK 0xffff0000u #define __SI_KILL (0 << 16) #define __SI_TIMER (1 << 16) #define __SI_POLL (2 << 16) @@ -275,7 +275,7 @@ #endif -extern int copy_siginfo_to_user(struct siginfo *to, struct siginfo *from); +extern int copy_siginfo_to_user(struct siginfo __user *to, struct siginfo *from); #endif /* __KERNEL__ */ diff -Nru a/include/asm-i386/i387.h b/include/asm-i386/i387.h --- a/include/asm-i386/i387.h Mon Mar 10 10:20:30 2003 +++ b/include/asm-i386/i387.h Tue Apr 8 21:33:40 2003 @@ -81,8 +81,8 @@ /* * Signal frame handlers... */ -extern int save_i387( struct _fpstate *buf ); -extern int restore_i387( struct _fpstate *buf ); +extern int save_i387( struct _fpstate __user *buf ); +extern int restore_i387( struct _fpstate __user *buf ); /* * ptrace request handers... diff -Nru a/include/asm-i386/mach-default/apm.h b/include/asm-i386/mach-default/apm.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-default/apm.h Thu Mar 6 15:29:16 2003 @@ -0,0 +1,75 @@ +/* + * include/asm-i386/mach-default/apm.h + * + * Machine specific APM BIOS functions for generic. + * Split out from apm.c by Osamu Tomita + */ + +#ifndef _ASM_APM_H +#define _ASM_APM_H + +#ifdef APM_ZERO_SEGS +# define APM_DO_ZERO_SEGS \ + "pushl %%ds\n\t" \ + "pushl %%es\n\t" \ + "xorl %%edx, %%edx\n\t" \ + "mov %%dx, %%ds\n\t" \ + "mov %%dx, %%es\n\t" \ + "mov %%dx, %%fs\n\t" \ + "mov %%dx, %%gs\n\t" +# define APM_DO_POP_SEGS \ + "popl %%es\n\t" \ + "popl %%ds\n\t" +#else +# define APM_DO_ZERO_SEGS +# define APM_DO_POP_SEGS +#endif + +static inline void apm_bios_call_asm(u32 func, u32 ebx_in, u32 ecx_in, + u32 *eax, u32 *ebx, u32 *ecx, + u32 *edx, u32 *esi) +{ + /* + * N.B. We do NOT need a cld after the BIOS call + * because we always save and restore the flags. + */ + __asm__ __volatile__(APM_DO_ZERO_SEGS + "pushl %%edi\n\t" + "pushl %%ebp\n\t" + "lcall *%%cs:apm_bios_entry\n\t" + "setc %%al\n\t" + "popl %%ebp\n\t" + "popl %%edi\n\t" + APM_DO_POP_SEGS + : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx), + "=S" (*esi) + : "a" (func), "b" (ebx_in), "c" (ecx_in) + : "memory", "cc"); +} + +static inline u8 apm_bios_call_simple_asm(u32 func, u32 ebx_in, + u32 ecx_in, u32 *eax) +{ + int cx, dx, si; + u8 error; + + /* + * N.B. We do NOT need a cld after the BIOS call + * because we always save and restore the flags. + */ + __asm__ __volatile__(APM_DO_ZERO_SEGS + "pushl %%edi\n\t" + "pushl %%ebp\n\t" + "lcall *%%cs:apm_bios_entry\n\t" + "setc %%bl\n\t" + "popl %%ebp\n\t" + "popl %%edi\n\t" + APM_DO_POP_SEGS + : "=a" (*eax), "=b" (error), "=c" (cx), "=d" (dx), + "=S" (si) + : "a" (func), "b" (ebx_in), "c" (ecx_in) + : "memory", "cc"); + return error; +} + +#endif /* _ASM_APM_H */ diff -Nru a/include/asm-i386/mach-default/bios_ebda.h b/include/asm-i386/mach-default/bios_ebda.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-default/bios_ebda.h Thu Mar 13 17:10:39 2003 @@ -0,0 +1,15 @@ +#ifndef _MACH_BIOS_EBDA_H +#define _MACH_BIOS_EBDA_H + +/* + * there is a real-mode segmented pointer pointing to the + * 4K EBDA area at 0x40E. + */ +static inline unsigned int get_bios_ebda(void) +{ + unsigned int address = *(unsigned short *)phys_to_virt(0x40E); + address <<= 4; + return address; /* 0 means none */ +} + +#endif /* _MACH_BIOS_EBDA_H */ diff -Nru a/include/asm-i386/mach-default/io_ports.h b/include/asm-i386/mach-default/io_ports.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-default/io_ports.h Fri Feb 14 17:57:59 2003 @@ -0,0 +1,30 @@ +/* + * arch/i386/mach-generic/io_ports.h + * + * Machine specific IO port address definition for generic. + * Written by Osamu Tomita + */ +#ifndef _MACH_IO_PORTS_H +#define _MACH_IO_PORTS_H + +/* i8253A PIT registers */ +#define PIT_MODE 0x43 +#define PIT_CH0 0x40 +#define PIT_CH2 0x42 + +/* i8259A PIC registers */ +#define PIC_MASTER_CMD 0x20 +#define PIC_MASTER_IMR 0x21 +#define PIC_MASTER_ISR PIC_MASTER_CMD +#define PIC_MASTER_POLL PIC_MASTER_ISR +#define PIC_MASTER_OCW3 PIC_MASTER_ISR +#define PIC_SLAVE_CMD 0xa0 +#define PIC_SLAVE_IMR 0xa1 + +/* i8259A PIC related value */ +#define PIC_CASCADE_IR 2 +#define MASTER_ICW4_DEFAULT 0x01 +#define SLAVE_ICW4_DEFAULT 0x01 +#define PIC_ICW4_AEOI 2 + +#endif /* !_MACH_IO_PORTS_H */ diff -Nru a/include/asm-i386/mach-default/irq_vectors.h b/include/asm-i386/mach-default/irq_vectors.h --- a/include/asm-i386/mach-default/irq_vectors.h Sun Dec 22 04:08:42 2002 +++ b/include/asm-i386/mach-default/irq_vectors.h Fri Feb 14 14:59:12 2003 @@ -82,4 +82,11 @@ #define NR_IRQS 16 #endif +#define FPU_IRQ 13 + +#define FIRST_VM86_IRQ 3 +#define LAST_VM86_IRQ 15 +#define invalid_vm86_irq(irq) ((irq) < 3 || (irq) > 15) + + #endif /* _ASM_IRQ_VECTORS_H */ diff -Nru a/include/asm-i386/mach-default/mach_mpparse.h b/include/asm-i386/mach-default/mach_mpparse.h --- a/include/asm-i386/mach-default/mach_mpparse.h Mon Jan 13 16:41:17 2003 +++ b/include/asm-i386/mach-default/mach_mpparse.h Fri Feb 14 17:59:39 2003 @@ -4,7 +4,7 @@ static inline void mpc_oem_bus_info(struct mpc_config_bus *m, char *name, struct mpc_config_translation *translation) { - Dprintk("Bus #%d is %s\n", m->mpc_busid, name); +// Dprintk("Bus #%d is %s\n", m->mpc_busid, name); } static inline void mpc_oem_pci_bus(struct mpc_config_bus *m, diff -Nru a/include/asm-i386/mach-default/mach_resources.h b/include/asm-i386/mach-default/mach_resources.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-default/mach_resources.h Thu Mar 13 17:17:51 2003 @@ -0,0 +1,110 @@ +/* + * include/asm-i386/mach-default/mach_resources.h + * + * Machine specific resource allocation for generic. + * Split out from setup.c by Osamu Tomita + */ +#ifndef _MACH_RESOURCES_H +#define _MACH_RESOURCES_H + +struct resource standard_io_resources[] = { + { "dma1", 0x00, 0x1f, IORESOURCE_BUSY }, + { "pic1", 0x20, 0x3f, IORESOURCE_BUSY }, + { "timer", 0x40, 0x5f, IORESOURCE_BUSY }, + { "keyboard", 0x60, 0x6f, IORESOURCE_BUSY }, + { "dma page reg", 0x80, 0x8f, IORESOURCE_BUSY }, + { "pic2", 0xa0, 0xbf, IORESOURCE_BUSY }, + { "dma2", 0xc0, 0xdf, IORESOURCE_BUSY }, + { "fpu", 0xf0, 0xff, IORESOURCE_BUSY } +}; +#ifdef CONFIG_MELAN +standard_io_resources[1] = { "pic1", 0x20, 0x21, IORESOURCE_BUSY }; +standard_io_resources[5] = { "pic2", 0xa0, 0xa1, IORESOURCE_BUSY }; +#endif + +#define STANDARD_IO_RESOURCES (sizeof(standard_io_resources)/sizeof(struct resource)) + +static struct resource vram_resource = { "Video RAM area", 0xa0000, 0xbffff, IORESOURCE_BUSY }; + +/* System ROM resources */ +#define MAXROMS 6 +static struct resource rom_resources[MAXROMS] = { + { "System ROM", 0xF0000, 0xFFFFF, IORESOURCE_BUSY }, + { "Video ROM", 0xc0000, 0xc7fff, IORESOURCE_BUSY } +}; + +#define romsignature(x) (*(unsigned short *)(x) == 0xaa55) + +static inline void probe_video_rom(int roms) +{ + unsigned long base; + unsigned char *romstart; + + + /* Video ROM is standard at C000:0000 - C7FF:0000, check signature */ + for (base = 0xC0000; base < 0xE0000; base += 2048) { + romstart = isa_bus_to_virt(base); + if (!romsignature(romstart)) + continue; + request_resource(&iomem_resource, rom_resources + roms); + roms++; + break; + } +} + +static inline void probe_extension_roms(int roms) +{ + unsigned long base; + unsigned char *romstart; + + /* Extension roms at C800:0000 - DFFF:0000 */ + for (base = 0xC8000; base < 0xE0000; base += 2048) { + unsigned long length; + + romstart = isa_bus_to_virt(base); + if (!romsignature(romstart)) + continue; + length = romstart[2] * 512; + if (length) { + unsigned int i; + unsigned char chksum; + + chksum = 0; + for (i = 0; i < length; i++) + chksum += romstart[i]; + + /* Good checksum? */ + if (!chksum) { + rom_resources[roms].start = base; + rom_resources[roms].end = base + length - 1; + rom_resources[roms].name = "Extension ROM"; + rom_resources[roms].flags = IORESOURCE_BUSY; + + request_resource(&iomem_resource, rom_resources + roms); + roms++; + if (roms >= MAXROMS) + return; + } + } + } + + /* Final check for motherboard extension rom at E000:0000 */ + base = 0xE0000; + romstart = isa_bus_to_virt(base); + + if (romsignature(romstart)) { + rom_resources[roms].start = base; + rom_resources[roms].end = base + 65535; + rom_resources[roms].name = "Extension ROM"; + rom_resources[roms].flags = IORESOURCE_BUSY; + + request_resource(&iomem_resource, rom_resources + roms); + } +} + +static inline void request_graphics_resource(void) +{ + request_resource(&iomem_resource, &vram_resource); +} + +#endif /* !_MACH_RESOURCES_H */ diff -Nru a/include/asm-i386/mach-default/mach_time.h b/include/asm-i386/mach-default/mach_time.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-default/mach_time.h Thu Mar 13 17:06:58 2003 @@ -0,0 +1,122 @@ +/* + * include/asm-i386/mach-default/mach_time.h + * + * Machine specific set RTC function for generic. + * Split out from time.c by Osamu Tomita + */ +#ifndef _MACH_TIME_H +#define _MACH_TIME_H + +#include + +/* for check timing call set_rtc_mmss() 500ms */ +/* used in arch/i386/time.c::do_timer_interrupt() */ +#define USEC_AFTER 500000 +#define USEC_BEFORE 500000 + +/* + * In order to set the CMOS clock precisely, set_rtc_mmss has to be + * called 500 ms after the second nowtime has started, because when + * nowtime is written into the registers of the CMOS clock, it will + * jump to the next second precisely 500 ms later. Check the Motorola + * MC146818A or Dallas DS12887 data sheet for details. + * + * BUG: This routine does not handle hour overflow properly; it just + * sets the minutes. Usually you'll only notice that after reboot! + */ +static inline int mach_set_rtc_mmss(unsigned long nowtime) +{ + int retval = 0; + int real_seconds, real_minutes, cmos_minutes; + unsigned char save_control, save_freq_select; + + save_control = CMOS_READ(RTC_CONTROL); /* tell the clock it's being set */ + CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL); + + save_freq_select = CMOS_READ(RTC_FREQ_SELECT); /* stop and reset prescaler */ + CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT); + + cmos_minutes = CMOS_READ(RTC_MINUTES); + if (!(save_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) + BCD_TO_BIN(cmos_minutes); + + /* + * since we're only adjusting minutes and seconds, + * don't interfere with hour overflow. This avoids + * messing with unknown time zones but requires your + * RTC not to be off by more than 15 minutes + */ + real_seconds = nowtime % 60; + real_minutes = nowtime / 60; + if (((abs(real_minutes - cmos_minutes) + 15)/30) & 1) + real_minutes += 30; /* correct for half hour time zone */ + real_minutes %= 60; + + if (abs(real_minutes - cmos_minutes) < 30) { + if (!(save_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) { + BIN_TO_BCD(real_seconds); + BIN_TO_BCD(real_minutes); + } + CMOS_WRITE(real_seconds,RTC_SECONDS); + CMOS_WRITE(real_minutes,RTC_MINUTES); + } else { + printk(KERN_WARNING + "set_rtc_mmss: can't update from %d to %d\n", + cmos_minutes, real_minutes); + retval = -1; + } + + /* The following flags have to be released exactly in this order, + * otherwise the DS12887 (popular MC146818A clone with integrated + * battery and quartz) will not reset the oscillator and will not + * update precisely 500 ms later. You won't find this mentioned in + * the Dallas Semiconductor data sheets, but who believes data + * sheets anyway ... -- Markus Kuhn + */ + CMOS_WRITE(save_control, RTC_CONTROL); + CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT); + + return retval; +} + +static inline unsigned long mach_get_cmos_time(void) +{ + unsigned int year, mon, day, hour, min, sec; + int i; + + /* The Linux interpretation of the CMOS clock register contents: + * When the Update-In-Progress (UIP) flag goes from 1 to 0, the + * RTC registers show the second which has precisely just started. + * Let's hope other operating systems interpret the RTC the same way. + */ + /* read RTC exactly on falling edge of update flag */ + for (i = 0 ; i < 1000000 ; i++) /* may take up to 1 second... */ + if (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP) + break; + for (i = 0 ; i < 1000000 ; i++) /* must try at least 2.228 ms */ + if (!(CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP)) + break; + do { /* Isn't this overkill ? UIP above should guarantee consistency */ + sec = CMOS_READ(RTC_SECONDS); + min = CMOS_READ(RTC_MINUTES); + hour = CMOS_READ(RTC_HOURS); + day = CMOS_READ(RTC_DAY_OF_MONTH); + mon = CMOS_READ(RTC_MONTH); + year = CMOS_READ(RTC_YEAR); + } while (sec != CMOS_READ(RTC_SECONDS)); + if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD) + { + BCD_TO_BIN(sec); + BCD_TO_BIN(min); + BCD_TO_BIN(hour); + BCD_TO_BIN(day); + BCD_TO_BIN(mon); + BCD_TO_BIN(year); + } + if ((year += 1900) < 1970) + year += 100; + + return mktime(year, mon, day, hour, min, sec); +} + +#endif /* !_MACH_TIME_H */ diff -Nru a/include/asm-i386/mach-default/mach_timer.h b/include/asm-i386/mach-default/mach_timer.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-default/mach_timer.h Fri Apr 4 08:17:11 2003 @@ -0,0 +1,47 @@ +/* + * include/asm-i386/mach-default/mach_timer.h + * + * Machine specific calibrate_tsc() for generic. + * Split out from timer_tsc.c by Osamu Tomita + */ +/* ------ Calibrate the TSC ------- + * Return 2^32 * (1 / (TSC clocks per usec)) for do_fast_gettimeoffset(). + * Too much 64-bit arithmetic here to do this cleanly in C, and for + * accuracy's sake we want to keep the overhead on the CTC speaker (channel 2) + * output busy loop as low as possible. We avoid reading the CTC registers + * directly because of the awkward 8-bit access mechanism of the 82C54 + * device. + */ +#ifndef _MACH_TIMER_H +#define _MACH_TIMER_H + +#define CALIBRATE_LATCH (5 * LATCH) + +static inline void mach_prepare_counter(void) +{ + /* Set the Gate high, disable speaker */ + outb((inb(0x61) & ~0x02) | 0x01, 0x61); + + /* + * Now let's take care of CTC channel 2 + * + * Set the Gate high, program CTC channel 2 for mode 0, + * (interrupt on terminal count mode), binary count, + * load 5 * LATCH count, (LSB and MSB) to begin countdown. + * + * Some devices need a delay here. + */ + outb(0xb0, 0x43); /* binary, mode 0, LSB/MSB, Ch 2 */ + outb_p(CALIBRATE_LATCH & 0xff, 0x42); /* LSB of count */ + outb_p(CALIBRATE_LATCH >> 8, 0x42); /* MSB of count */ +} + +static inline void mach_countup(unsigned long *count) +{ + *count = 0L; + do { + *count++; + } while ((inb_p(0x61) & 0x20) == 0); +} + +#endif /* !_MACH_TIMER_H */ diff -Nru a/include/asm-i386/mach-default/mach_traps.h b/include/asm-i386/mach-default/mach_traps.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-default/mach_traps.h Thu Mar 6 15:33:53 2003 @@ -0,0 +1,29 @@ +/* + * include/asm-i386/mach-default/mach_traps.h + * + * Machine specific NMI handling for generic. + * Split out from traps.c by Osamu Tomita + */ +#ifndef _MACH_TRAPS_H +#define _MACH_TRAPS_H + +static inline void clear_mem_error(unsigned char reason) +{ + reason = (reason & 0xf) | 4; + outb(reason, 0x61); +} + +static inline unsigned char get_nmi_reason(void) +{ + return inb(0x61); +} + +static inline void reassert_nmi(void) +{ + outb(0x8f, 0x70); + inb(0x71); /* dummy */ + outb(0x0f, 0x70); + inb(0x71); /* dummy */ +} + +#endif /* !_MACH_TRAPS_H */ diff -Nru a/include/asm-i386/mach-default/smpboot_hooks.h b/include/asm-i386/mach-default/smpboot_hooks.h --- a/include/asm-i386/mach-default/smpboot_hooks.h Sun Dec 22 04:08:42 2002 +++ b/include/asm-i386/mach-default/smpboot_hooks.h Thu Mar 13 17:10:39 2003 @@ -6,7 +6,18 @@ io_apic_irqs = 0; } -static inline void smpboot_setup_warm_reset_vector(void) +static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip) +{ + CMOS_WRITE(0xa, 0xf); + local_flush_tlb(); + Dprintk("1.\n"); + *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4; + Dprintk("2.\n"); + *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf; + Dprintk("3.\n"); +} + +static inline void smpboot_restore_warm_reset_vector(void) { /* * Install writable page 0 entry to set BIOS data area. diff -Nru a/include/asm-i386/mach-pc9800/apm.h b/include/asm-i386/mach-pc9800/apm.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/apm.h Thu Mar 6 15:29:16 2003 @@ -0,0 +1,82 @@ +/* + * include/asm-i386/mach-pc9800/apm.h + * + * Machine specific APM BIOS functions for NEC PC9800. + * Split out from apm.c by Osamu Tomita + */ + +#ifndef _ASM_APM_H +#define _ASM_APM_H + +#include + +#ifdef APM_ZERO_SEGS +# define APM_DO_ZERO_SEGS \ + "pushl %%ds\n\t" \ + "pushl %%es\n\t" \ + "xorl %%edx, %%edx\n\t" \ + "mov %%dx, %%ds\n\t" \ + "mov %%dx, %%es\n\t" \ + "mov %%dx, %%fs\n\t" \ + "mov %%dx, %%gs\n\t" +# define APM_DO_POP_SEGS \ + "popl %%es\n\t" \ + "popl %%ds\n\t" +#else +# define APM_DO_ZERO_SEGS +# define APM_DO_POP_SEGS +#endif + +static inline void apm_bios_call_asm(u32 func, u32 ebx_in, u32 ecx_in, + u32 *eax, u32 *ebx, u32 *ecx, + u32 *edx, u32 *esi) +{ + /* + * N.B. We do NOT need a cld after the BIOS call + * because we always save and restore the flags. + */ + __asm__ __volatile__(APM_DO_ZERO_SEGS + "pushl %%edi\n\t" + "pushl %%ebp\n\t" + "pushfl\n\t" + "lcall *%%cs:apm_bios_entry\n\t" + "setc %%al\n\t" + "popl %%ebp\n\t" + "popl %%edi\n\t" + APM_DO_POP_SEGS + : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx), + "=S" (*esi) + : "a" (func), "b" (ebx_in), "c" (ecx_in) + : "memory", "cc"); +} + +static inline u8 apm_bios_call_simple_asm(u32 func, u32 ebx_in, + u32 ecx_in, u32 *eax) +{ + int cx, dx, si; + u8 error; + + /* + * N.B. We do NOT need a cld after the BIOS call + * because we always save and restore the flags. + */ + __asm__ __volatile__(APM_DO_ZERO_SEGS + "pushl %%edi\n\t" + "pushl %%ebp\n\t" + "pushfl\n\t" + "lcall *%%cs:apm_bios_entry\n\t" + "setc %%bl\n\t" + "popl %%ebp\n\t" + "popl %%edi\n\t" + APM_DO_POP_SEGS + : "=a" (*eax), "=b" (error), "=c" (cx), "=d" (dx), + "=S" (si) + : "a" (func), "b" (ebx_in), "c" (ecx_in) + : "memory", "cc"); + if (func == APM_FUNC_VERSION) + *eax = (*eax & 0xff00) | ((*eax & 0x00f0) >> 4); + + return error; +} + +#endif /* _ASM_APM_H */ diff -Nru a/include/asm-i386/mach-pc9800/bios_ebda.h b/include/asm-i386/mach-pc9800/bios_ebda.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/bios_ebda.h Thu Mar 13 17:10:39 2003 @@ -0,0 +1,14 @@ +#ifndef _MACH_BIOS_EBDA_H +#define _MACH_BIOS_EBDA_H + +/* + * PC-9800 has no EBDA. + * Its BIOS uses 0x40E for other purpose, + * Not pointer to 4K EBDA area. + */ +static inline unsigned int get_bios_ebda(void) +{ + return 0; /* 0 means none */ +} + +#endif /* _MACH_BIOS_EBDA_H */ diff -Nru a/include/asm-i386/mach-pc9800/do_timer.h b/include/asm-i386/mach-pc9800/do_timer.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/do_timer.h Thu Mar 13 17:17:16 2003 @@ -0,0 +1,82 @@ +/* defines for inline arch setup functions */ + +#include + +/** + * do_timer_interrupt_hook - hook into timer tick + * @regs: standard registers from interrupt + * + * Description: + * This hook is called immediately after the timer interrupt is ack'd. + * It's primary purpose is to allow architectures that don't possess + * individual per CPU clocks (like the CPU APICs supply) to broadcast the + * timer interrupt as a means of triggering reschedules etc. + **/ + +static inline void do_timer_interrupt_hook(struct pt_regs *regs) +{ + do_timer(regs); +/* + * In the SMP case we use the local APIC timer interrupt to do the + * profiling, except when we simulate SMP mode on a uniprocessor + * system, in that case we have to call the local interrupt handler. + */ +#ifndef CONFIG_X86_LOCAL_APIC + x86_do_profile(regs); +#else + if (!using_apic_timer) + smp_local_timer_interrupt(regs); +#endif +} + + +/* you can safely undefine this if you don't have the Neptune chipset */ + +#define BUGGY_NEPTUN_TIMER + +/** + * do_timer_overflow - process a detected timer overflow condition + * @count: hardware timer interrupt count on overflow + * + * Description: + * This call is invoked when the jiffies count has not incremented but + * the hardware timer interrupt has. It means that a timer tick interrupt + * came along while the previous one was pending, thus a tick was missed + **/ +static inline int do_timer_overflow(int count) +{ + int i; + + spin_lock(&i8259A_lock); + /* + * This is tricky when I/O APICs are used; + * see do_timer_interrupt(). + */ + i = inb(0x00); + spin_unlock(&i8259A_lock); + + /* assumption about timer being IRQ0 */ + if (i & 0x01) { + /* + * We cannot detect lost timer interrupts ... + * well, that's why we call them lost, don't we? :) + * [hmm, on the Pentium and Alpha we can ... sort of] + */ + count -= LATCH; + } else { +#ifdef BUGGY_NEPTUN_TIMER + /* + * for the Neptun bug we know that the 'latch' + * command doesn't latch the high and low value + * of the counter atomically. Thus we have to + * substract 256 from the counter + * ... funny, isnt it? :) + */ + + count -= 256; +#else + printk("do_slow_gettimeoffset(): hardware timer problem?\n"); +#endif + } + return count; +} diff -Nru a/include/asm-i386/mach-pc9800/io_ports.h b/include/asm-i386/mach-pc9800/io_ports.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/io_ports.h Fri Feb 14 14:59:47 2003 @@ -0,0 +1,30 @@ +/* + * arch/i386/mach-pc9800/io_ports.h + * + * Machine specific IO port address definition for PC-9800. + * Written by Osamu Tomita + */ +#ifndef _MACH_IO_PORTS_H +#define _MACH_IO_PORTS_H + +/* i8253A PIT registers */ +#define PIT_MODE 0x77 +#define PIT_CH0 0x71 +#define PIT_CH2 0x75 + +/* i8259A PIC registers */ +#define PIC_MASTER_CMD 0x00 +#define PIC_MASTER_IMR 0x02 +#define PIC_MASTER_ISR PIC_MASTER_CMD +#define PIC_MASTER_POLL PIC_MASTER_ISR +#define PIC_MASTER_OCW3 PIC_MASTER_ISR +#define PIC_SLAVE_CMD 0x08 +#define PIC_SLAVE_IMR 0x0a + +/* i8259A PIC related values */ +#define PIC_CASCADE_IR 7 +#define MASTER_ICW4_DEFAULT 0x1d +#define SLAVE_ICW4_DEFAULT 0x09 +#define PIC_ICW4_AEOI 0x02 + +#endif /* !_MACH_IO_PORTS_H */ diff -Nru a/include/asm-i386/mach-pc9800/irq_vectors.h b/include/asm-i386/mach-pc9800/irq_vectors.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/irq_vectors.h Fri Feb 14 14:59:47 2003 @@ -0,0 +1,93 @@ +/* + * This file should contain #defines for all of the interrupt vector + * numbers used by this architecture. + * + * In addition, there are some standard defines: + * + * FIRST_EXTERNAL_VECTOR: + * The first free place for external interrupts + * + * SYSCALL_VECTOR: + * The IRQ vector a syscall makes the user to kernel transition + * under. + * + * TIMER_IRQ: + * The IRQ number the timer interrupt comes in at. + * + * NR_IRQS: + * The total number of interrupt vectors (including all the + * architecture specific interrupts) needed. + * + */ +#ifndef _ASM_IRQ_VECTORS_H +#define _ASM_IRQ_VECTORS_H + +/* + * IDT vectors usable for external interrupt sources start + * at 0x20: + */ +#define FIRST_EXTERNAL_VECTOR 0x20 + +#define SYSCALL_VECTOR 0x80 + +/* + * Vectors 0x20-0x2f are used for ISA interrupts. + */ + +/* + * Special IRQ vectors used by the SMP architecture, 0xf0-0xff + * + * some of the following vectors are 'rare', they are merged + * into a single vector (CALL_FUNCTION_VECTOR) to save vector space. + * TLB, reschedule and local APIC vectors are performance-critical. + * + * Vectors 0xf0-0xfa are free (reserved for future Linux use). + */ +#define SPURIOUS_APIC_VECTOR 0xff +#define ERROR_APIC_VECTOR 0xfe +#define INVALIDATE_TLB_VECTOR 0xfd +#define RESCHEDULE_VECTOR 0xfc +#define CALL_FUNCTION_VECTOR 0xfb + +#define THERMAL_APIC_VECTOR 0xf0 +/* + * Local APIC timer IRQ vector is on a different priority level, + * to work around the 'lost local interrupt if more than 2 IRQ + * sources per level' errata. + */ +#define LOCAL_TIMER_VECTOR 0xef + +/* + * First APIC vector available to drivers: (vectors 0x30-0xee) + * we start at 0x31 to spread out vectors evenly between priority + * levels. (0x80 is the syscall vector) + */ +#define FIRST_DEVICE_VECTOR 0x31 +#define FIRST_SYSTEM_VECTOR 0xef + +#define TIMER_IRQ 0 + +/* + * 16 8259A IRQ's, 208 potential APIC interrupt sources. + * Right now the APIC is mostly only used for SMP. + * 256 vectors is an architectural limit. (we can have + * more than 256 devices theoretically, but they will + * have to use shared interrupts) + * Since vectors 0x00-0x1f are used/reserved for the CPU, + * the usable vector space is 0x20-0xff (224 vectors) + */ +#ifdef CONFIG_X86_IO_APIC +#define NR_IRQS 224 +#else +#define NR_IRQS 16 +#endif + +#define FPU_IRQ 8 + +#define FIRST_VM86_IRQ 2 +#define LAST_VM86_IRQ 15 +#define invalid_vm86_irq(irq) ((irq) < 2 || (irq) == 7 || (irq) > 15) + +#endif /* _ASM_IRQ_VECTORS_H */ + + diff -Nru a/include/asm-i386/mach-pc9800/mach_resources.h b/include/asm-i386/mach-pc9800/mach_resources.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/mach_resources.h Thu Mar 13 17:17:51 2003 @@ -0,0 +1,191 @@ +/* + * include/asm-i386/mach-pc9800/mach_resources.h + * + * Machine specific resource allocation for PC-9800. + * Written by Osamu Tomita + */ +#ifndef _MACH_RESOURCES_H +#define _MACH_RESOURCES_H + +static char str_pic1[] = "pic1"; +static char str_dma[] = "dma"; +static char str_pic2[] = "pic2"; +static char str_calender_clock[] = "calender clock"; +static char str_system[] = "system"; +static char str_nmi_control[] = "nmi control"; +static char str_kanji_rom[] = "kanji rom"; +static char str_keyboard[] = "keyboard"; +static char str_text_gdc[] = "text gdc"; +static char str_crtc[] = "crtc"; +static char str_timer[] = "timer"; +static char str_graphic_gdc[] = "graphic gdc"; +static char str_dma_ex_bank[] = "dma ex. bank"; +static char str_beep_freq[] = "beep freq."; +static char str_mouse_pio[] = "mouse pio"; +struct resource standard_io_resources[] = { + { str_pic1, 0x00, 0x00, IORESOURCE_BUSY }, + { str_dma, 0x01, 0x01, IORESOURCE_BUSY }, + { str_pic1, 0x02, 0x02, IORESOURCE_BUSY }, + { str_dma, 0x03, 0x03, IORESOURCE_BUSY }, + { str_dma, 0x05, 0x05, IORESOURCE_BUSY }, + { str_dma, 0x07, 0x07, IORESOURCE_BUSY }, + { str_pic2, 0x08, 0x08, IORESOURCE_BUSY }, + { str_dma, 0x09, 0x09, IORESOURCE_BUSY }, + { str_pic2, 0x0a, 0x0a, IORESOURCE_BUSY }, + { str_dma, 0x0b, 0x0b, IORESOURCE_BUSY }, + { str_dma, 0x0d, 0x0d, IORESOURCE_BUSY }, + { str_dma, 0x0f, 0x0f, IORESOURCE_BUSY }, + { str_dma, 0x11, 0x11, IORESOURCE_BUSY }, + { str_dma, 0x13, 0x13, IORESOURCE_BUSY }, + { str_dma, 0x15, 0x15, IORESOURCE_BUSY }, + { str_dma, 0x17, 0x17, IORESOURCE_BUSY }, + { str_dma, 0x19, 0x19, IORESOURCE_BUSY }, + { str_dma, 0x1b, 0x1b, IORESOURCE_BUSY }, + { str_dma, 0x1d, 0x1d, IORESOURCE_BUSY }, + { str_dma, 0x1f, 0x1f, IORESOURCE_BUSY }, + { str_calender_clock, 0x20, 0x20, 0 }, + { str_dma, 0x21, 0x21, IORESOURCE_BUSY }, + { str_calender_clock, 0x22, 0x22, 0 }, + { str_dma, 0x23, 0x23, IORESOURCE_BUSY }, + { str_dma, 0x25, 0x25, IORESOURCE_BUSY }, + { str_dma, 0x27, 0x27, IORESOURCE_BUSY }, + { str_dma, 0x29, 0x29, IORESOURCE_BUSY }, + { str_dma, 0x2b, 0x2b, IORESOURCE_BUSY }, + { str_dma, 0x2d, 0x2d, IORESOURCE_BUSY }, + { str_system, 0x31, 0x31, IORESOURCE_BUSY }, + { str_system, 0x33, 0x33, IORESOURCE_BUSY }, + { str_system, 0x35, 0x35, IORESOURCE_BUSY }, + { str_system, 0x37, 0x37, IORESOURCE_BUSY }, + { str_nmi_control, 0x50, 0x50, IORESOURCE_BUSY }, + { str_nmi_control, 0x52, 0x52, IORESOURCE_BUSY }, + { "time stamp", 0x5c, 0x5f, IORESOURCE_BUSY }, + { str_kanji_rom, 0xa1, 0xa1, IORESOURCE_BUSY }, + { str_kanji_rom, 0xa3, 0xa3, IORESOURCE_BUSY }, + { str_kanji_rom, 0xa5, 0xa5, IORESOURCE_BUSY }, + { str_kanji_rom, 0xa7, 0xa7, IORESOURCE_BUSY }, + { str_kanji_rom, 0xa9, 0xa9, IORESOURCE_BUSY }, + { str_keyboard, 0x41, 0x41, IORESOURCE_BUSY }, + { str_keyboard, 0x43, 0x43, IORESOURCE_BUSY }, + { str_text_gdc, 0x60, 0x60, IORESOURCE_BUSY }, + { str_text_gdc, 0x62, 0x62, IORESOURCE_BUSY }, + { str_text_gdc, 0x64, 0x64, IORESOURCE_BUSY }, + { str_text_gdc, 0x66, 0x66, IORESOURCE_BUSY }, + { str_text_gdc, 0x68, 0x68, IORESOURCE_BUSY }, + { str_text_gdc, 0x6a, 0x6a, IORESOURCE_BUSY }, + { str_text_gdc, 0x6c, 0x6c, IORESOURCE_BUSY }, + { str_text_gdc, 0x6e, 0x6e, IORESOURCE_BUSY }, + { str_crtc, 0x70, 0x70, IORESOURCE_BUSY }, + { str_crtc, 0x72, 0x72, IORESOURCE_BUSY }, + { str_crtc, 0x74, 0x74, IORESOURCE_BUSY }, + { str_crtc, 0x74, 0x74, IORESOURCE_BUSY }, + { str_crtc, 0x76, 0x76, IORESOURCE_BUSY }, + { str_crtc, 0x78, 0x78, IORESOURCE_BUSY }, + { str_crtc, 0x7a, 0x7a, IORESOURCE_BUSY }, + { str_timer, 0x71, 0x71, IORESOURCE_BUSY }, + { str_timer, 0x73, 0x73, IORESOURCE_BUSY }, + { str_timer, 0x75, 0x75, IORESOURCE_BUSY }, + { str_timer, 0x77, 0x77, IORESOURCE_BUSY }, + { str_graphic_gdc, 0xa0, 0xa0, IORESOURCE_BUSY }, + { str_graphic_gdc, 0xa2, 0xa2, IORESOURCE_BUSY }, + { str_graphic_gdc, 0xa4, 0xa4, IORESOURCE_BUSY }, + { str_graphic_gdc, 0xa6, 0xa6, IORESOURCE_BUSY }, + { "cpu", 0xf0, 0xf7, IORESOURCE_BUSY }, + { "fpu", 0xf8, 0xff, IORESOURCE_BUSY }, + { str_dma_ex_bank, 0x0e05, 0x0e05, 0 }, + { str_dma_ex_bank, 0x0e07, 0x0e07, 0 }, + { str_dma_ex_bank, 0x0e09, 0x0e09, 0 }, + { str_dma_ex_bank, 0x0e0b, 0x0e0b, 0 }, + { str_beep_freq, 0x3fd9, 0x3fd9, IORESOURCE_BUSY }, + { str_beep_freq, 0x3fdb, 0x3fdb, IORESOURCE_BUSY }, + { str_beep_freq, 0x3fdd, 0x3fdd, IORESOURCE_BUSY }, + { str_beep_freq, 0x3fdf, 0x3fdf, IORESOURCE_BUSY }, + /* All PC-9800 have (exactly) one mouse interface. */ + { str_mouse_pio, 0x7fd9, 0x7fd9, 0 }, + { str_mouse_pio, 0x7fdb, 0x7fdb, 0 }, + { str_mouse_pio, 0x7fdd, 0x7fdd, 0 }, + { str_mouse_pio, 0x7fdf, 0x7fdf, 0 }, + { "mouse timer", 0xbfdb, 0xbfdb, 0 }, + { "mouse irq", 0x98d7, 0x98d7, 0 }, +}; + +#define STANDARD_IO_RESOURCES (sizeof(standard_io_resources)/sizeof(struct resource)) + +static struct resource tvram_resource = { "Text VRAM/CG window", 0xa0000, 0xa4fff, IORESOURCE_BUSY }; +static struct resource gvram_brg_resource = { "Graphic VRAM (B/R/G)", 0xa8000, 0xbffff, IORESOURCE_BUSY }; +static struct resource gvram_e_resource = { "Graphic VRAM (E)", 0xe0000, 0xe7fff, IORESOURCE_BUSY }; + +/* System ROM resources */ +#define MAXROMS 6 +static struct resource rom_resources[MAXROMS] = { + { "System ROM", 0xe8000, 0xfffff, IORESOURCE_BUSY } +}; + +static inline void probe_video_rom(int roms) +{ + /* PC-9800 has no video ROM */ +} + +static inline void probe_extension_roms(int roms) +{ + int i; + __u8 *xrom_id; + + xrom_id = (__u8 *) isa_bus_to_virt(PC9800SCA_XROM_ID + 0x10); + + for (i = 0; i < 16; i++) { + if (xrom_id[i] & 0x80) { + int j; + + for (j = i + 1; j < 16 && (xrom_id[j] & 0x80); j++) + ; + rom_resources[roms].start = 0x0d0000 + i * 0x001000; + rom_resources[roms].end = 0x0d0000 + j * 0x001000 - 1; + rom_resources[roms].name = "Extension ROM"; + rom_resources[roms].flags = IORESOURCE_BUSY; + + request_resource(&iomem_resource, + rom_resources + roms); + if (++roms >= MAXROMS) + return; + } + } +} + +static inline void request_graphics_resource(void) +{ + int i; + + if (PC9800_HIGHRESO_P()) { + tvram_resource.start = 0xe0000; + tvram_resource.end = 0xe4fff; + gvram_brg_resource.name = "Graphic VRAM"; + gvram_brg_resource.start = 0xc0000; + gvram_brg_resource.end = 0xdffff; + } + + request_resource(&iomem_resource, &tvram_resource); + request_resource(&iomem_resource, &gvram_brg_resource); + if (!PC9800_HIGHRESO_P()) + request_resource(&iomem_resource, &gvram_e_resource); + + if (PC9800_HIGHRESO_P() || PC9800_9821_P()) { + static char graphics[] = "graphics"; + static struct resource graphics_resources[] = { + { graphics, 0x9a0, 0x9a0, 0 }, + { graphics, 0x9a2, 0x9a2, 0 }, + { graphics, 0x9a4, 0x9a4, 0 }, + { graphics, 0x9a6, 0x9a6, 0 }, + { graphics, 0x9a8, 0x9a8, 0 }, + { graphics, 0x9aa, 0x9aa, 0 }, + { graphics, 0x9ac, 0x9ac, 0 }, + { graphics, 0x9ae, 0x9ae, 0 }, + }; + +#define GRAPHICS_RESOURCES (sizeof(graphics_resources)/sizeof(struct resource)) + + for (i = 0; i < GRAPHICS_RESOURCES; i++) + request_resource(&ioport_resource, graphics_resources + i); + } +} + +#endif /* !_MACH_RESOURCES_H */ diff -Nru a/include/asm-i386/mach-pc9800/mach_time.h b/include/asm-i386/mach-pc9800/mach_time.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/mach_time.h Thu Mar 13 17:06:58 2003 @@ -0,0 +1,100 @@ +/* + * include/asm-i386/mach-pc9800/mach_time.h + * + * Machine specific set RTC function for PC-9800. + * Written by Osamu Tomita + */ +#ifndef _MACH_TIME_H +#define _MACH_TIME_H + +#include +#include + +/* for check timing call set_rtc_mmss() */ +/* used in arch/i386/time.c::do_timer_interrupt() */ +/* + * Because PC-9800's RTC (NEC uPD4990A) does not allow setting + * time partially, we always have to read-modify-write the + * entire time (including year) so that set_rtc_mmss() will + * take quite much time to execute. You may want to relax + * RTC resetting interval (currently ~11 minuts)... + */ +#define USEC_AFTER 1000000 +#define USEC_BEFORE 0 + +static inline int mach_set_rtc_mmss(unsigned long nowtime) +{ + int retval = 0; + int real_seconds, real_minutes, cmos_minutes; + struct upd4990a_raw_data data; + + upd4990a_get_time(&data, 1); + cmos_minutes = BCD2BIN(data.min); + + /* + * since we're only adjusting minutes and seconds, + * don't interfere with hour overflow. This avoids + * messing with unknown time zones but requires your + * RTC not to be off by more than 15 minutes + */ + real_seconds = nowtime % 60; + real_minutes = nowtime / 60; + if (((abs(real_minutes - cmos_minutes) + 15) / 30) & 1) + real_minutes += 30; /* correct for half hour time zone */ + real_minutes %= 60; + + if (abs(real_minutes - cmos_minutes) < 30) { + u8 temp_seconds = (real_seconds / 10) * 16 + real_seconds % 10; + u8 temp_minutes = (real_minutes / 10) * 16 + real_minutes % 10; + + if (data.sec != temp_seconds || data.min != temp_minutes) { + data.sec = temp_seconds; + data.min = temp_minutes; + upd4990a_set_time(&data, 1); + } + } else { + printk(KERN_WARNING + "set_rtc_mmss: can't update from %d to %d\n", + cmos_minutes, real_minutes); + retval = -1; + } + + /* uPD4990A users' manual says we should issue Register Hold + * command after reading time, or future Time Read command + * may not work. When we have set the time, this also starts + * the clock. + */ + upd4990a_serial_command(UPD4990A_REGISTER_HOLD); + + return retval; +} + +static inline unsigned long mach_get_cmos_time(void) +{ + int i; + u8 prev, cur; + unsigned int year; + struct upd4990a_raw_data data; + + /* Connect uPD4990A's DATA OUT pin to its 1Hz reference clock. */ + upd4990a_serial_command(UPD4990A_REGISTER_HOLD); + + /* Catch rising edge of reference clock. */ + prev = ~UPD4990A_READ_DATA(); + for (i = 0; i < 1800000; i++) { /* may take up to 1 second... */ + __asm__ ("outb %%al,%0" : : "N" (0x5f)); /* 0.6usec delay */ + cur = UPD4990A_READ_DATA(); + if (!(prev & cur & 1)) + break; + prev = ~cur; + } + + upd4990a_get_time(&data, 0); + + if ((year = BCD2BIN(data.year) + 1900) < 1995) + year += 100; + return mktime(year, data.mon, BCD2BIN(data.mday), BCD2BIN(data.hour), + BCD2BIN(data.min), BCD2BIN(data.sec)); +} + +#endif /* !_MACH_TIME_H */ diff -Nru a/include/asm-i386/mach-pc9800/mach_timer.h b/include/asm-i386/mach-pc9800/mach_timer.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/mach_timer.h Thu Mar 13 17:17:16 2003 @@ -0,0 +1,31 @@ +/* + * include/asm-i386/mach-pc9800/mach_timer.h + * + * Machine specific calibrate_tsc() for PC-9800. + * Written by Osamu Tomita + */ +/* ------ Calibrate the TSC ------- + * PC-9800: + * CTC cannot be used because some models (especially + * note-machines) may disable clock to speaker channel (#1) + * unless speaker is enabled. We use ARTIC instead. + */ +#ifndef _MACH_TIMER_H +#define _MACH_TIMER_H + +#define CALIBRATE_LATCH (5 * 307200/HZ) /* 0.050sec * 307200Hz = 15360 */ + +static inline void mach_prepare_counter(void) +{ + /* ARTIC can't be stopped nor reset. So we wait roundup. */ + while (inw(0x5c)); +} + +static inline void mach_countup(unsigned long *count) +{ + do { + *count = inw(0x5c); + } while (*count < CALIBRATE_LATCH); +} + +#endif /* !_MACH_TIMER_H */ diff -Nru a/include/asm-i386/mach-pc9800/mach_traps.h b/include/asm-i386/mach-pc9800/mach_traps.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/mach_traps.h Thu Mar 6 15:33:53 2003 @@ -0,0 +1,27 @@ +/* + * include/asm-i386/mach-pc9800/mach_traps.h + * + * Machine specific NMI handling for PC-9800. + * Written by Osamu Tomita + */ +#ifndef _MACH_TRAPS_H +#define _MACH_TRAPS_H + +static inline void clear_mem_error(unsigned char reason) +{ + outb(0x08, 0x37); + outb(0x09, 0x37); +} + +static inline unsigned char get_nmi_reason(void) +{ + return (inb(0x33) & 6) ? 0x80 : 0; +} + +static inline void reassert_nmi(void) +{ + outb(0x09, 0x50); /* disable NMI once */ + outb(0x09, 0x52); /* re-enable it */ +} + +#endif /* !_MACH_TRAPS_H */ diff -Nru a/include/asm-i386/mach-pc9800/mach_wakecpu.h b/include/asm-i386/mach-pc9800/mach_wakecpu.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/mach_wakecpu.h Thu Mar 13 17:10:39 2003 @@ -0,0 +1,45 @@ +#ifndef __ASM_MACH_WAKECPU_H +#define __ASM_MACH_WAKECPU_H + +/* + * This file copes with machines that wakeup secondary CPUs by the + * INIT, INIT, STARTUP sequence. + */ + +#define WAKE_SECONDARY_VIA_INIT + +/* + * On PC-9800, continuation on warm reset is done by loading + * %ss:%sp from 0x0000:0404 and executing 'lret', so: + */ +#define TRAMPOLINE_LOW phys_to_virt(0x4fa) +#define TRAMPOLINE_HIGH phys_to_virt(0x4fc) + +#define boot_cpu_apicid boot_cpu_physical_apicid + +static inline void wait_for_init_deassert(atomic_t *deassert) +{ + while (!atomic_read(deassert)); + return; +} + +/* Nothing to do for most platforms, since cleared by the INIT cycle */ +static inline void smp_callin_clear_local_apic(void) +{ +} + +static inline void store_NMI_vector(unsigned short *high, unsigned short *low) +{ +} + +static inline void restore_NMI_vector(unsigned short *high, unsigned short *low) +{ +} + +#if APIC_DEBUG + #define inquire_remote_apic(apicid) __inquire_remote_apic(apicid) +#else + #define inquire_remote_apic(apicid) {} +#endif + +#endif /* __ASM_MACH_WAKECPU_H */ diff -Nru a/include/asm-i386/mach-pc9800/smpboot_hooks.h b/include/asm-i386/mach-pc9800/smpboot_hooks.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/mach-pc9800/smpboot_hooks.h Thu Mar 13 17:10:39 2003 @@ -0,0 +1,52 @@ +/* two abstractions specific to kernel/smpboot.c, mainly to cater to visws + * which needs to alter them. */ + +static inline void smpboot_clear_io_apic_irqs(void) +{ + io_apic_irqs = 0; +} + +static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip) +{ + /* reset code is stored in 8255 on PC-9800. */ + outb(0x0e, 0x37); /* SHUT0 = 0 */ + local_flush_tlb(); + Dprintk("1.\n"); + *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4; + Dprintk("2.\n"); + *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf; + Dprintk("3.\n"); + /* + * On PC-9800, continuation on warm reset is done by loading + * %ss:%sp from 0x0000:0404 and executing 'lret', so: + */ + /* 0x3f0 is on unused interrupt vector and should be safe... */ + *((volatile unsigned long *) phys_to_virt(0x404)) = 0x000003f0; + Dprintk("4.\n"); +} + +static inline void smpboot_restore_warm_reset_vector(void) +{ + /* + * Install writable page 0 entry to set BIOS data area. + */ + local_flush_tlb(); + + /* + * Paranoid: Set warm reset code and vector here back + * to default values. + */ + outb(0x0f, 0x37); /* SHUT0 = 1 */ + + *((volatile long *) phys_to_virt(0x404)) = 0; +} + +static inline void smpboot_setup_io_apic(void) +{ + /* + * Here we can be sure that there is an IO-APIC in the system. Let's + * go and set it up: + */ + if (!skip_ioapic_setup && nr_ioapics) + setup_IO_APIC(); +} diff -Nru a/include/asm-i386/mach-visws/irq_vectors.h b/include/asm-i386/mach-visws/irq_vectors.h --- a/include/asm-i386/mach-visws/irq_vectors.h Tue Feb 18 18:58:56 2003 +++ b/include/asm-i386/mach-visws/irq_vectors.h Thu Mar 13 17:23:56 2003 @@ -51,4 +51,10 @@ */ #define NR_IRQS 224 +#define FPU_IRQ 13 + +#define FIRST_VM86_IRQ 3 +#define LAST_VM86_IRQ 15 +#define invalid_vm86_irq(irq) ((irq) < 3 || (irq) > 15) + #endif /* _ASM_IRQ_VECTORS_H */ diff -Nru a/include/asm-i386/mach-visws/smpboot_hooks.h b/include/asm-i386/mach-visws/smpboot_hooks.h --- a/include/asm-i386/mach-visws/smpboot_hooks.h Sun Dec 22 04:08:42 2002 +++ b/include/asm-i386/mach-visws/smpboot_hooks.h Thu Mar 13 17:10:39 2003 @@ -1,10 +1,21 @@ +static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip) +{ + CMOS_WRITE(0xa, 0xf); + local_flush_tlb(); + Dprintk("1.\n"); + *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4; + Dprintk("2.\n"); + *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf; + Dprintk("3.\n"); +} + /* for visws do nothing for any of these */ static inline void smpboot_clear_io_apic_irqs(void) { } -static inline void smpboot_setup_warm_reset_vector(void) +static inline void smpboot_restore_warm_reset_vector(void) { } diff -Nru a/include/asm-i386/mach-voyager/irq_vectors.h b/include/asm-i386/mach-voyager/irq_vectors.h --- a/include/asm-i386/mach-voyager/irq_vectors.h Sun Dec 22 04:08:42 2002 +++ b/include/asm-i386/mach-voyager/irq_vectors.h Fri Feb 14 15:02:30 2003 @@ -57,6 +57,12 @@ #define NR_IRQS 224 +#define FPU_IRQ 13 + +#define FIRST_VM86_IRQ 3 +#define LAST_VM86_IRQ 15 +#define invalid_vm86_irq(irq) ((irq) < 3 || (irq) > 15) + #ifndef __ASSEMBLY__ extern asmlinkage void vic_cpi_interrupt(void); extern asmlinkage void vic_sys_interrupt(void); diff -Nru a/include/asm-i386/math_emu.h b/include/asm-i386/math_emu.h --- a/include/asm-i386/math_emu.h Mon Feb 4 23:43:00 2002 +++ b/include/asm-i386/math_emu.h Tue Apr 8 22:45:37 2003 @@ -3,8 +3,8 @@ #include -int restore_i387_soft(void *s387, struct _fpstate *buf); -int save_i387_soft(void *s387, struct _fpstate * buf); +int restore_i387_soft(void *s387, struct _fpstate __user *buf); +int save_i387_soft(void *s387, struct _fpstate __user *buf); /* This structure matches the layout of the data saved to the stack following a device-not-present interrupt, part of it saved diff -Nru a/include/asm-i386/pc9800.h b/include/asm-i386/pc9800.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-i386/pc9800.h Sun Apr 6 15:35:15 2003 @@ -0,0 +1,27 @@ +/* + * PC-9800 machine types. + * + * Copyright (C) 1999 TAKAI Kosuke + * (Linux/98 Project) + */ + +#ifndef _ASM_PC9800_H_ +#define _ASM_PC9800_H_ + +#include +#include + +#define __PC9800SCA(type, pa) (*(type *) phys_to_virt(pa)) +#define __PC9800SCA_TEST_BIT(pa, n) \ + ((__PC9800SCA(u8, pa) & (1U << (n))) != 0) + +#define PC9800_HIGHRESO_P() __PC9800SCA_TEST_BIT(PC9800SCA_BIOS_FLAG, 3) +#define PC9800_8MHz_P() __PC9800SCA_TEST_BIT(PC9800SCA_BIOS_FLAG, 7) + + /* 0x2198 is 98 21 on memory... */ +#define PC9800_9821_P() (__PC9800SCA(u16, PC9821SCA_ROM_ID) == 0x2198) + +/* Note PC9821_...() are valid only when PC9800_9821_P() was true. */ +#define PC9821_IDEIF_DOUBLE_P() __PC9800SCA_TEST_BIT(PC9821SCA_ROM_FLAG4, 4) + +#endif diff -Nru a/include/asm-i386/sigcontext.h b/include/asm-i386/sigcontext.h --- a/include/asm-i386/sigcontext.h Tue Feb 25 09:45:28 2003 +++ b/include/asm-i386/sigcontext.h Tue Apr 8 21:33:40 2003 @@ -1,6 +1,8 @@ #ifndef _ASMi386_SIGCONTEXT_H #define _ASMi386_SIGCONTEXT_H +#include + /* * As documented in the iBCS2 standard.. * @@ -74,7 +76,7 @@ unsigned long eflags; unsigned long esp_at_signal; unsigned short ss, __ssh; - struct _fpstate * fpstate; + struct _fpstate __user * fpstate; unsigned long oldmask; unsigned long cr2; }; diff -Nru a/include/asm-i386/signal.h b/include/asm-i386/signal.h --- a/include/asm-i386/signal.h Tue Feb 18 13:54:44 2003 +++ b/include/asm-i386/signal.h Tue Apr 8 17:14:15 2003 @@ -86,13 +86,13 @@ * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single * Unix names RESETHAND and NODEFER respectively. */ -#define SA_NOCLDSTOP 0x00000001 -#define SA_NOCLDWAIT 0x00000002 -#define SA_SIGINFO 0x00000004 -#define SA_ONSTACK 0x08000000 -#define SA_RESTART 0x10000000 -#define SA_NODEFER 0x40000000 -#define SA_RESETHAND 0x80000000 +#define SA_NOCLDSTOP 0x00000001u +#define SA_NOCLDWAIT 0x00000002u +#define SA_SIGINFO 0x00000004u +#define SA_ONSTACK 0x08000000u +#define SA_RESTART 0x10000000u +#define SA_NODEFER 0x40000000u +#define SA_RESETHAND 0x80000000u #define SA_NOMASK SA_NODEFER #define SA_ONESHOT SA_RESETHAND diff -Nru a/include/asm-i386/uaccess.h b/include/asm-i386/uaccess.h --- a/include/asm-i386/uaccess.h Mon Mar 31 14:29:09 2003 +++ b/include/asm-i386/uaccess.h Tue Apr 8 17:11:39 2003 @@ -110,7 +110,7 @@ * * See access_ok() for more details. */ -static inline int verify_area(int type, const void * addr, unsigned long size) +static inline int verify_area(int type, const void __user * addr, unsigned long size) { return access_ok(type,addr,size) ? 0 : -EFAULT; } @@ -373,8 +373,8 @@ : "m"(__m(addr)), "i"(errret), "0"(err)) -unsigned long __copy_to_user_ll(void *to, const void *from, unsigned long n); -unsigned long __copy_from_user_ll(void *to, const void *from, unsigned long n); +unsigned long __copy_to_user_ll(void __user *to, const void *from, unsigned long n); +unsigned long __copy_from_user_ll(void *to, const void __user *from, unsigned long n); /* * Here we special-case 1, 2 and 4-byte copy_*_user invocations. On a fault @@ -398,7 +398,7 @@ * On success, this will be zero. */ static inline unsigned long -__copy_to_user(void *to, const void *from, unsigned long n) +__copy_to_user(void __user *to, const void *from, unsigned long n) { if (__builtin_constant_p(n)) { unsigned long ret; @@ -436,7 +436,7 @@ * data to the requested size using zero bytes. */ static inline unsigned long -__copy_from_user(void *to, const void *from, unsigned long n) +__copy_from_user(void *to, const void __user *from, unsigned long n) { if (__builtin_constant_p(n)) { unsigned long ret; @@ -470,7 +470,7 @@ * On success, this will be zero. */ static inline unsigned long -copy_to_user(void *to, const void *from, unsigned long n) +copy_to_user(void __user *to, const void *from, unsigned long n) { if (access_ok(VERIFY_WRITE, to, n)) n = __copy_to_user(to, from, n); @@ -494,15 +494,15 @@ * data to the requested size using zero bytes. */ static inline unsigned long -copy_from_user(void *to, const void *from, unsigned long n) +copy_from_user(void *to, const void __user *from, unsigned long n) { if (access_ok(VERIFY_READ, from, n)) n = __copy_from_user(to, from, n); return n; } -long strncpy_from_user(char *dst, const char *src, long count); -long __strncpy_from_user(char *dst, const char *src, long count); +long strncpy_from_user(char *dst, const char __user *src, long count); +long __strncpy_from_user(char *dst, const char __user *src, long count); /** * strlen_user: - Get the size of a string in user space. @@ -520,8 +520,8 @@ */ #define strlen_user(str) strnlen_user(str, ~0UL >> 1) -long strnlen_user(const char *str, long n); -unsigned long clear_user(void *mem, unsigned long len); -unsigned long __clear_user(void *mem, unsigned long len); +long strnlen_user(const char __user *str, long n); +unsigned long clear_user(void __user *mem, unsigned long len); +unsigned long __clear_user(void __user *mem, unsigned long len); #endif /* __i386_UACCESS_H */ diff -Nru a/include/asm-ia64/acpi-ext.h b/include/asm-ia64/acpi-ext.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-ia64/acpi-ext.h Thu Apr 3 12:32:33 2003 @@ -0,0 +1,32 @@ +/* + * ia64/platform/hp/common/hp_acpi.h + * + * Copyright (C) 2003 Hewlett-Packard + * Copyright (C) Alex Williamson + * + * Vendor specific extensions to ACPI. The HP-specific extensiosn are also used by NEC. + */ +#ifndef _ASM_IA64_ACPI_EXT_H +#define _ASM_IA64_ACPI_EXT_H + +#include + +#define HP_CCSR_LENGTH 0x21 +#define HP_CCSR_TYPE 0x2 +#define HP_CCSR_GUID EFI_GUID(0x69e9adf9, 0x924f, 0xab5f, \ + 0xf6, 0x4a, 0x24, 0xd2, 0x01, 0x37, 0x0e, 0xad) + +struct acpi_hp_vendor_long { + u8 guid_id; + u8 guid[16]; + u8 csr_base[8]; + u8 csr_length[8]; +}; + +extern acpi_status hp_acpi_csr_space (acpi_handle, u64 *base, u64 *length); +extern acpi_status acpi_get_crs (acpi_handle, struct acpi_buffer *); +extern struct acpi_resource *acpi_get_crs_next (struct acpi_buffer *, int *); +extern union acpi_resource_data *acpi_get_crs_type (struct acpi_buffer *, int *, int); +extern void acpi_dispose_crs (struct acpi_buffer *); + +#endif /* _ASM_IA64_ACPI_EXT_H */ diff -Nru a/include/asm-ia64/acpi.h b/include/asm-ia64/acpi.h --- a/include/asm-ia64/acpi.h Wed Nov 6 15:41:27 2002 +++ b/include/asm-ia64/acpi.h Wed Apr 2 05:20:35 2003 @@ -100,7 +100,9 @@ int acpi_request_vector (u32 int_type); int acpi_get_prt (struct pci_vector_struct **vectors, int *count); int acpi_get_interrupt_model (int *type); +int acpi_register_irq (u32 gsi, u32 polarity, u32 trigger); int acpi_irq_to_vector (u32 irq); +int acpi_get_addr_space (void *obj, u8 type, u64 *base, u64 *length,u64 *tra); #ifdef CONFIG_ACPI_NUMA #include diff -Nru a/include/asm-ia64/atomic.h b/include/asm-ia64/atomic.h --- a/include/asm-ia64/atomic.h Tue Dec 10 11:23:16 2002 +++ b/include/asm-ia64/atomic.h Mon Mar 31 16:44:53 2003 @@ -55,6 +55,13 @@ return new; } +#define atomic_add_return(i,v) \ + ((__builtin_constant_p(i) && \ + ( (i == 1) || (i == 4) || (i == 8) || (i == 16) \ + || (i == -1) || (i == -4) || (i == -8) || (i == -16))) \ + ? ia64_fetch_and_add(i, &(v)->counter) \ + : ia64_atomic_add(i, v)) + /* * Atomically add I to V and return TRUE if the resulting value is * negative. @@ -62,15 +69,9 @@ static __inline__ int atomic_add_negative (int i, atomic_t *v) { - return ia64_atomic_add(i, v) < 0; + return atomic_add_return(i, v) < 0; } -#define atomic_add_return(i,v) \ - ((__builtin_constant_p(i) && \ - ( (i == 1) || (i == 4) || (i == 8) || (i == 16) \ - || (i == -1) || (i == -4) || (i == -8) || (i == -16))) \ - ? ia64_fetch_and_add(i, &(v)->counter) \ - : ia64_atomic_add(i, v)) #define atomic_sub_return(i,v) \ ((__builtin_constant_p(i) && \ diff -Nru a/include/asm-ia64/bitops.h b/include/asm-ia64/bitops.h --- a/include/asm-ia64/bitops.h Fri Jan 17 11:51:55 2003 +++ b/include/asm-ia64/bitops.h Tue Mar 11 14:17:53 2003 @@ -275,7 +275,7 @@ } static __inline__ int -test_bit (int nr, volatile void *addr) +test_bit (int nr, const volatile void *addr) { return 1 & (((const volatile __u32 *) addr)[nr >> 5] >> (nr & 31)); } diff -Nru a/include/asm-ia64/compat.h b/include/asm-ia64/compat.h --- a/include/asm-ia64/compat.h Sun Jan 12 16:07:06 2003 +++ b/include/asm-ia64/compat.h Wed Apr 9 11:51:34 2003 @@ -27,6 +27,11 @@ typedef u32 compat_caddr_t; typedef __kernel_fsid_t compat_fsid_t; +typedef s32 compat_int_t; +typedef s32 compat_long_t; +typedef u32 compat_uint_t; +typedef u32 compat_ulong_t; + struct compat_timespec { compat_time_t tv_sec; s32 tv_nsec; @@ -68,6 +73,22 @@ compat_pid_t l_pid; }; +#define F_GETLK64 12 +#define F_SETLK64 13 +#define F_SETLKW64 14 + +/* + * IA32 uses 4 byte alignment for 64 bit quantities, + * so we need to pack this structure. + */ +struct compat_flock64 { + short l_type; + short l_whence; + compat_loff_t l_start; + compat_loff_t l_len; + compat_pid_t l_pid; +} __attribute__((packed)); + struct compat_statfs { int f_type; int f_bsize; @@ -87,5 +108,21 @@ #define _COMPAT_NSIG_BPW 32 typedef u32 compat_sigset_word; + +#define COMPAT_OFF_T_MAX 0x7fffffff +#define COMPAT_LOFF_T_MAX 0x7fffffffffffffffL + +/* + * A pointer passed in from user mode. This should not be used for syscall parameters, + * just declare them as pointers because the syscall entry code will have appropriately + * comverted them already. + */ +typedef u32 compat_uptr_t; + +static inline void * +compat_ptr (compat_uptr_t uptr) +{ + return (void *) (unsigned long) uptr; +} #endif /* _ASM_IA64_COMPAT_H */ diff -Nru a/include/asm-ia64/fcntl.h b/include/asm-ia64/fcntl.h --- a/include/asm-ia64/fcntl.h Tue Feb 5 09:39:54 2002 +++ b/include/asm-ia64/fcntl.h Sun Mar 9 01:34:45 2003 @@ -78,9 +78,6 @@ pid_t l_pid; }; -#ifdef __KERNEL__ -# define flock64 flock -#endif - #define F_LINUX_SPECIFIC_BASE 1024 + #endif /* _ASM_IA64_FCNTL_H */ diff -Nru a/include/asm-ia64/fpu.h b/include/asm-ia64/fpu.h --- a/include/asm-ia64/fpu.h Tue Aug 27 22:34:29 2002 +++ b/include/asm-ia64/fpu.h Thu Mar 27 17:01:19 2003 @@ -2,7 +2,7 @@ #define _ASM_IA64_FPU_H /* - * Copyright (C) 1998, 1999, 2002 Hewlett-Packard Co + * Copyright (C) 1998, 1999, 2002, 2003 Hewlett-Packard Co * David Mosberger-Tang */ @@ -57,8 +57,9 @@ struct ia64_fpreg { union { unsigned long bits[2]; + long double __dummy; /* force 16-byte alignment */ } u; -} __attribute__ ((aligned (16))); +}; # endif /* __ASSEMBLY__ */ diff -Nru a/include/asm-ia64/ia32.h b/include/asm-ia64/ia32.h --- a/include/asm-ia64/ia32.h Mon Mar 17 21:31:50 2003 +++ b/include/asm-ia64/ia32.h Sun Mar 9 01:34:45 2003 @@ -18,10 +18,6 @@ #define IA32_PAGE_ALIGN(addr) (((addr) + IA32_PAGE_SIZE - 1) & IA32_PAGE_MASK) #define IA32_CLOCKS_PER_SEC 100 /* Cast in stone for IA32 Linux */ -#define F_GETLK64 12 -#define F_SETLK64 13 -#define F_SETLKW64 14 - /* sigcontext.h */ /* * As documented in the iBCS2 standard.. @@ -214,8 +210,11 @@ /* POSIX.1b timers */ struct { - unsigned int _timer1; - unsigned int _timer2; + timer_t _tid; /* timer id */ + int _overrun; /* overrun count */ + char _pad[sizeof(unsigned int) - sizeof(int)]; + sigval_t32 _sigval; /* same as below */ + int _sys_private; /* not to be passed to user */ } _timer; /* POSIX.1b signals */ diff -Nru a/include/asm-ia64/intrinsics.h b/include/asm-ia64/intrinsics.h --- a/include/asm-ia64/intrinsics.h Thu Mar 6 11:22:21 2003 +++ b/include/asm-ia64/intrinsics.h Mon Mar 31 16:44:53 2003 @@ -46,14 +46,10 @@ IA64_FETCHADD(_tmp, _v, -8, sizeof(*(v))); \ else if ((i) == -4) \ IA64_FETCHADD(_tmp, _v, -4, sizeof(*(v))); \ - else if ((i) == -2) \ - IA64_FETCHADD(_tmp, _v, -2, sizeof(*(v))); \ else if ((i) == -1) \ IA64_FETCHADD(_tmp, _v, -1, sizeof(*(v))); \ else if ((i) == 1) \ IA64_FETCHADD(_tmp, _v, 1, sizeof(*(v))); \ - else if ((i) == 2) \ - IA64_FETCHADD(_tmp, _v, 2, sizeof(*(v))); \ else if ((i) == 4) \ IA64_FETCHADD(_tmp, _v, 4, sizeof(*(v))); \ else if ((i) == 8) \ diff -Nru a/include/asm-ia64/io.h b/include/asm-ia64/io.h --- a/include/asm-ia64/io.h Tue Aug 27 22:34:29 2002 +++ b/include/asm-ia64/io.h Thu Mar 27 08:56:31 2003 @@ -69,22 +69,6 @@ */ #define __ia64_mf_a() __asm__ __volatile__ ("mf.a" ::: "memory") -/** - * __ia64_mmiob - I/O space memory barrier - * - * Acts as a memory mapped I/O barrier for platforms that queue writes to - * I/O space. This ensures that subsequent writes to I/O space arrive after - * all previous writes. For most ia64 platforms, this is a simple - * 'mf.a' instruction, so the address is ignored. For other platforms, - * the address may be required to ensure proper ordering of writes to I/O space - * since a 'dummy' read might be necessary to barrier the write operation. - */ -static inline void -__ia64_mmiob (void) -{ - __ia64_mf_a(); -} - static inline const unsigned long __ia64_get_io_port_base (void) { @@ -287,7 +271,6 @@ #define __outb platform_outb #define __outw platform_outw #define __outl platform_outl -#define __mmiob platform_mmiob #define inb(p) __inb(p) #define inw(p) __inw(p) @@ -301,31 +284,35 @@ #define outsb(p,s,c) __outsb(p,s,c) #define outsw(p,s,c) __outsw(p,s,c) #define outsl(p,s,c) __outsl(p,s,c) -#define mmiob() __mmiob() /* * The address passed to these functions are ioremap()ped already. + * + * We need these to be machine vectors since some platforms don't provide + * DMA coherence via PIO reads (PCI drivers and the spec imply that this is + * a good idea). Writes are ok though for all existing ia64 platforms (and + * hopefully it'll stay that way). */ static inline unsigned char -__readb (void *addr) +__ia64_readb (void *addr) { return *(volatile unsigned char *)addr; } static inline unsigned short -__readw (void *addr) +__ia64_readw (void *addr) { return *(volatile unsigned short *)addr; } static inline unsigned int -__readl (void *addr) +__ia64_readl (void *addr) { return *(volatile unsigned int *) addr; } static inline unsigned long -__readq (void *addr) +__ia64_readq (void *addr) { return *(volatile unsigned long *) addr; } @@ -353,6 +340,11 @@ { *(volatile unsigned long *) addr = val; } + +#define __readb platform_readb +#define __readw platform_readw +#define __readl platform_readl +#define __readq platform_readq #define readb(a) __readb((void *)(a)) #define readw(a) __readw((void *)(a)) diff -Nru a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h --- a/include/asm-ia64/machvec.h Thu Feb 20 05:59:35 2003 +++ b/include/asm-ia64/machvec.h Tue Apr 1 01:19:53 2003 @@ -43,7 +43,6 @@ typedef void ia64_mv_pci_unmap_sg (struct pci_dev *, struct scatterlist *, int, int); typedef void ia64_mv_pci_dma_sync_single (struct pci_dev *, dma_addr_t, size_t, int); typedef void ia64_mv_pci_dma_sync_sg (struct pci_dev *, struct scatterlist *, int, int); -typedef unsigned long ia64_mv_pci_dma_address (struct scatterlist *); typedef int ia64_mv_pci_dma_supported (struct pci_dev *, u64); /* @@ -61,7 +60,10 @@ typedef void ia64_mv_outb_t (unsigned char, unsigned long); typedef void ia64_mv_outw_t (unsigned short, unsigned long); typedef void ia64_mv_outl_t (unsigned int, unsigned long); -typedef void ia64_mv_mmiob_t (void); +typedef unsigned char ia64_mv_readb_t (void *); +typedef unsigned short ia64_mv_readw_t (void *); +typedef unsigned int ia64_mv_readl_t (void *); +typedef unsigned long ia64_mv_readq_t (void *); extern void machvec_noop (void); @@ -99,7 +101,6 @@ # define platform_pci_unmap_sg ia64_mv.unmap_sg # define platform_pci_dma_sync_single ia64_mv.sync_single # define platform_pci_dma_sync_sg ia64_mv.sync_sg -# define platform_pci_dma_address ia64_mv.dma_address # define platform_pci_dma_supported ia64_mv.dma_supported # define platform_irq_desc ia64_mv.irq_desc # define platform_irq_to_vector ia64_mv.irq_to_vector @@ -110,7 +111,10 @@ # define platform_outb ia64_mv.outb # define platform_outw ia64_mv.outw # define platform_outl ia64_mv.outl -# define platofrm_mmiob ia64_mv.mmiob +# define platform_readb ia64_mv.readb +# define platform_readw ia64_mv.readw +# define platform_readl ia64_mv.readl +# define platform_readq ia64_mv.readq # endif /* __attribute__((__aligned__(16))) is required to make size of the @@ -138,7 +142,6 @@ ia64_mv_pci_unmap_sg *unmap_sg; ia64_mv_pci_dma_sync_single *sync_single; ia64_mv_pci_dma_sync_sg *sync_sg; - ia64_mv_pci_dma_address *dma_address; ia64_mv_pci_dma_supported *dma_supported; ia64_mv_irq_desc *irq_desc; ia64_mv_irq_to_vector *irq_to_vector; @@ -149,8 +152,11 @@ ia64_mv_outb_t *outb; ia64_mv_outw_t *outw; ia64_mv_outl_t *outl; - ia64_mv_mmiob_t *mmiob; -} __attribute__((__aligned__(16))); + ia64_mv_readb_t *readb; + ia64_mv_readw_t *readw; + ia64_mv_readl_t *readl; + ia64_mv_readq_t *readq; +}; #define MACHVEC_INIT(name) \ { \ @@ -173,7 +179,6 @@ platform_pci_unmap_sg, \ platform_pci_dma_sync_single, \ platform_pci_dma_sync_sg, \ - platform_pci_dma_address, \ platform_pci_dma_supported, \ platform_irq_desc, \ platform_irq_to_vector, \ @@ -184,7 +189,10 @@ platform_outb, \ platform_outw, \ platform_outl, \ - platform_mmiob \ + platform_readb, \ + platform_readw, \ + platform_readl, \ + platform_readq, \ } extern struct ia64_machine_vector ia64_mv; @@ -206,7 +214,6 @@ extern ia64_mv_pci_unmap_sg swiotlb_unmap_sg; extern ia64_mv_pci_dma_sync_single swiotlb_sync_single; extern ia64_mv_pci_dma_sync_sg swiotlb_sync_sg; -extern ia64_mv_pci_dma_address swiotlb_dma_address; extern ia64_mv_pci_dma_supported swiotlb_pci_dma_supported; /* @@ -267,9 +274,6 @@ #ifndef platform_pci_dma_sync_sg # define platform_pci_dma_sync_sg swiotlb_sync_sg #endif -#ifndef platform_pci_dma_address -# define platform_pci_dma_address swiotlb_dma_address -#endif #ifndef platform_pci_dma_supported # define platform_pci_dma_supported swiotlb_pci_dma_supported #endif @@ -300,8 +304,17 @@ #ifndef platform_outl # define platform_outl __ia64_outl #endif -#ifndef platform_mmiob -# define platform_mmiob __ia64_mmiob +#ifndef platform_readb +# define platform_readb __ia64_readb +#endif +#ifndef platform_readw +# define platform_readw __ia64_readw +#endif +#ifndef platform_readl +# define platform_readl __ia64_readl +#endif +#ifndef platform_readq +# define platform_readq __ia64_readq #endif #endif /* _ASM_IA64_MACHVEC_H */ diff -Nru a/include/asm-ia64/machvec_hpzx1.h b/include/asm-ia64/machvec_hpzx1.h --- a/include/asm-ia64/machvec_hpzx1.h Thu Feb 20 03:31:21 2003 +++ b/include/asm-ia64/machvec_hpzx1.h Tue Apr 1 01:19:53 2003 @@ -8,7 +8,6 @@ extern ia64_mv_pci_unmap_single sba_unmap_single; extern ia64_mv_pci_map_sg sba_map_sg; extern ia64_mv_pci_unmap_sg sba_unmap_sg; -extern ia64_mv_pci_dma_address sba_dma_address; extern ia64_mv_pci_dma_supported sba_dma_supported; /* @@ -29,7 +28,6 @@ #define platform_pci_unmap_sg sba_unmap_sg #define platform_pci_dma_sync_single ((ia64_mv_pci_dma_sync_single *) machvec_noop) #define platform_pci_dma_sync_sg ((ia64_mv_pci_dma_sync_sg *) machvec_noop) -#define platform_pci_dma_address sba_dma_address #define platform_pci_dma_supported sba_dma_supported #endif /* _ASM_IA64_MACHVEC_HPZX1_h */ diff -Nru a/include/asm-ia64/machvec_init.h b/include/asm-ia64/machvec_init.h --- a/include/asm-ia64/machvec_init.h Fri Jun 7 03:49:29 2002 +++ b/include/asm-ia64/machvec_init.h Tue Mar 18 01:37:11 2003 @@ -16,7 +16,6 @@ extern ia64_mv_outb_t __ia64_outb; extern ia64_mv_outw_t __ia64_outw; extern ia64_mv_outl_t __ia64_outl; -extern ia64_mv_mmiob_t __ia64_mmiob; #define MACHVEC_HELPER(name) \ struct ia64_machine_vector machvec_##name __attribute__ ((unused, __section__ (".machvec"))) \ diff -Nru a/include/asm-ia64/machvec_sn1.h b/include/asm-ia64/machvec_sn1.h --- a/include/asm-ia64/machvec_sn1.h Thu Feb 20 03:34:17 2003 +++ b/include/asm-ia64/machvec_sn1.h Tue Apr 1 01:19:53 2003 @@ -44,7 +44,6 @@ extern ia64_mv_outb_t sn1_outb; extern ia64_mv_outw_t sn1_outw; extern ia64_mv_outl_t sn1_outl; -extern ia64_mv_mmiob_t sn_mmiob; extern ia64_mv_pci_alloc_consistent sn1_pci_alloc_consistent; extern ia64_mv_pci_free_consistent sn1_pci_free_consistent; extern ia64_mv_pci_map_single sn1_pci_map_single; @@ -53,7 +52,6 @@ extern ia64_mv_pci_unmap_sg sn1_pci_unmap_sg; extern ia64_mv_pci_dma_sync_single sn1_pci_dma_sync_single; extern ia64_mv_pci_dma_sync_sg sn1_pci_dma_sync_sg; -extern ia64_mv_pci_dma_address sn1_dma_address; /* * This stuff has dual use! @@ -74,7 +72,6 @@ #define platform_outb sn1_outb #define platform_outw sn1_outw #define platform_outl sn1_outl -#define platform_mmiob sn_mmiob #define platform_pci_dma_init machvec_noop #define platform_pci_alloc_consistent sn1_pci_alloc_consistent #define platform_pci_free_consistent sn1_pci_free_consistent @@ -84,6 +81,5 @@ #define platform_pci_unmap_sg sn1_pci_unmap_sg #define platform_pci_dma_sync_single sn1_pci_dma_sync_single #define platform_pci_dma_sync_sg sn1_pci_dma_sync_sg -#define platform_pci_dma_address sn1_dma_address #endif /* _ASM_IA64_MACHVEC_SN1_h */ diff -Nru a/include/asm-ia64/machvec_sn2.h b/include/asm-ia64/machvec_sn2.h --- a/include/asm-ia64/machvec_sn2.h Thu Feb 20 03:59:23 2003 +++ b/include/asm-ia64/machvec_sn2.h Tue Apr 1 01:19:53 2003 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved. + * Copyright (c) 2002-2003 Silicon Graphics, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License @@ -41,13 +41,16 @@ extern ia64_mv_irq_desc sn_irq_desc; extern ia64_mv_irq_to_vector sn_irq_to_vector; extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq; -extern ia64_mv_inb_t sn_inb; -extern ia64_mv_inw_t sn_inw; -extern ia64_mv_inl_t sn_inl; -extern ia64_mv_outb_t sn_outb; -extern ia64_mv_outw_t sn_outw; -extern ia64_mv_outl_t sn_outl; -extern ia64_mv_mmiob_t sn2_mmiob; +extern ia64_mv_inb_t __sn_inb; +extern ia64_mv_inw_t __sn_inw; +extern ia64_mv_inl_t __sn_inl; +extern ia64_mv_outb_t __sn_outb; +extern ia64_mv_outw_t __sn_outw; +extern ia64_mv_outl_t __sn_outl; +extern ia64_mv_readb_t __sn_readb; +extern ia64_mv_readw_t __sn_readw; +extern ia64_mv_readl_t __sn_readl; +extern ia64_mv_readq_t __sn_readq; extern ia64_mv_pci_alloc_consistent sn_pci_alloc_consistent; extern ia64_mv_pci_free_consistent sn_pci_free_consistent; extern ia64_mv_pci_map_single sn_pci_map_single; @@ -56,7 +59,6 @@ extern ia64_mv_pci_unmap_sg sn_pci_unmap_sg; extern ia64_mv_pci_dma_sync_single sn_pci_dma_sync_single; extern ia64_mv_pci_dma_sync_sg sn_pci_dma_sync_sg; -extern ia64_mv_pci_dma_address sn_dma_address; extern ia64_mv_pci_dma_supported sn_pci_dma_supported; /* @@ -72,13 +74,17 @@ #define platform_irq_init sn_irq_init #define platform_send_ipi sn2_send_IPI #define platform_global_tlb_purge sn2_global_tlb_purge -#define platform_inb sn_inb -#define platform_inw sn_inw -#define platform_inl sn_inl -#define platform_outb sn_outb -#define platform_outw sn_outw -#define platform_outl sn_outl -#define platform_mmiob sn2_mmiob +#define platform_pci_fixup sn_pci_fixup +#define platform_inb __sn_inb +#define platform_inw __sn_inw +#define platform_inl __sn_inl +#define platform_outb __sn_outb +#define platform_outw __sn_outw +#define platform_outl __sn_outl +#define platform_readb __sn_readb +#define platform_readw __sn_readw +#define platform_readl __sn_readl +#define platform_readq __sn_readq #define platform_irq_desc sn_irq_desc #define platform_irq_to_vector sn_irq_to_vector #define platform_local_vector_to_irq sn_local_vector_to_irq @@ -91,7 +97,6 @@ #define platform_pci_unmap_sg sn_pci_unmap_sg #define platform_pci_dma_sync_single sn_pci_dma_sync_single #define platform_pci_dma_sync_sg sn_pci_dma_sync_sg -#define platform_pci_dma_address sn_dma_address #define platform_pci_dma_supported sn_pci_dma_supported #endif /* _ASM_IA64_MACHVEC_SN2_H */ diff -Nru a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h --- a/include/asm-ia64/mca.h Tue Nov 5 07:06:29 2002 +++ b/include/asm-ia64/mca.h Fri Mar 21 19:51:16 2003 @@ -24,7 +24,7 @@ IA64_MCA_FAILURE = 1 }; -#define IA64_MCA_RENDEZ_TIMEOUT (100 * HZ) /* 1000 milliseconds */ +#define IA64_MCA_RENDEZ_TIMEOUT (20 * 1000) /* value in milliseconds - 20 seconds */ #define IA64_CMC_INT_DISABLE 0 #define IA64_CMC_INT_ENABLE 1 diff -Nru a/include/asm-ia64/module.h b/include/asm-ia64/module.h --- a/include/asm-ia64/module.h Wed Dec 4 23:53:06 2002 +++ b/include/asm-ia64/module.h Wed Mar 26 01:08:03 2003 @@ -1,6 +1,34 @@ #ifndef _ASM_IA64_MODULE_H #define _ASM_IA64_MODULE_H -/* Module support currently broken (due to in-kernel module loader). */ +/* + * IA-64-specific support for kernel module loader. + * + * Copyright (C) 2003 Hewlett-Packard Co + * David Mosberger-Tang + */ + +struct elf64_shdr; /* forward declration */ + +struct mod_arch_specific { + struct elf64_shdr *core_plt; /* core PLT section */ + struct elf64_shdr *init_plt; /* init PLT section */ + struct elf64_shdr *got; /* global offset table */ + struct elf64_shdr *opd; /* official procedure descriptors */ + struct elf64_shdr *unwind; /* unwind-table section */ + unsigned long gp; /* global-pointer for module */ + + void *unw_table; /* unwind-table cookie returned by unwinder */ + unsigned int next_got_entry; /* index of next available got entry */ +}; + +#define Elf_Shdr Elf64_Shdr +#define Elf_Sym Elf64_Sym +#define Elf_Ehdr Elf64_Ehdr + +#define MODULE_PROC_FAMILY "ia64" +#define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY + +#define ARCH_SHF_SMALL SHF_IA_64_SHORT #endif /* _ASM_IA64_MODULE_H */ diff -Nru a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h --- a/include/asm-ia64/pci.h Sun Mar 16 13:55:58 2003 +++ b/include/asm-ia64/pci.h Tue Apr 8 12:08:16 2003 @@ -21,7 +21,7 @@ #define PCIBIOS_MIN_MEM 0x10000000 void pcibios_config_init(void); -struct pci_bus * pcibios_scan_root(int bus); +struct pci_bus * pcibios_scan_root(void *acpi_handle, int segment, int bus); struct pci_dev; @@ -58,7 +58,6 @@ #define pci_unmap_sg platform_pci_unmap_sg #define pci_dma_sync_single platform_pci_dma_sync_single #define pci_dma_sync_sg platform_pci_dma_sync_sg -#define sg_dma_address platform_pci_dma_address #define pci_dma_supported platform_pci_dma_supported /* pci_unmap_{single,page} is not a nop, thus... */ @@ -92,10 +91,22 @@ #define pci_controller_num(PDEV) (0) #define sg_dma_len(sg) ((sg)->dma_length) +#define sg_dma_address(sg) ((sg)->dma_address) #define HAVE_PCI_MMAP extern int pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine); + +struct pci_controller { + void *acpi_handle; + void *iommu; + int segment; + + u64 mem_offset; +}; + +#define PCI_CONTROLLER(busdev) ((struct pci_controller *) busdev->sysdata) +#define PCI_SEGMENT(busdev) (PCI_CONTROLLER(busdev)->segment) /* generic pci stuff */ #include diff -Nru a/include/asm-ia64/pgtable.h b/include/asm-ia64/pgtable.h --- a/include/asm-ia64/pgtable.h Thu Mar 6 08:19:09 2003 +++ b/include/asm-ia64/pgtable.h Wed Apr 9 11:51:34 2003 @@ -59,6 +59,9 @@ #define _PAGE_ED (__IA64_UL(1) << 52) /* exception deferral */ #define _PAGE_PROTNONE (__IA64_UL(1) << 63) +/* Valid only for a PTE with the present bit cleared: */ +#define _PAGE_FILE (1 << 1) /* see swap & file pte remarks below */ + #define _PFN_MASK _PAGE_PPN_MASK #define _PAGE_CHG_MASK (_PFN_MASK | _PAGE_A | _PAGE_D) @@ -253,6 +256,7 @@ #define pte_exec(pte) ((pte_val(pte) & _PAGE_AR_RX) != 0) #define pte_dirty(pte) ((pte_val(pte) & _PAGE_D) != 0) #define pte_young(pte) ((pte_val(pte) & _PAGE_A) != 0) +#define pte_file(pte) ((pte_val(pte) & _PAGE_FILE) != 0) /* * Note: we convert AR_RWX to AR_RX and AR_RW to AR_R by clearing the 2nd bit in the * access rights: @@ -402,11 +406,34 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; extern void paging_init (void); -#define __swp_type(entry) (((entry).val >> 1) & 0xff) +/* + * Note: The macros below rely on the fact that MAX_SWAPFILES_SHIFT <= number of + * bits in the swap-type field of the swap pte. It would be nice to + * enforce that, but we can't easily include here. + * (Of course, better still would be to define MAX_SWAPFILES_SHIFT here...). + * + * Format of swap pte: + * bit 0 : present bit (must be zero) + * bit 1 : _PAGE_FILE (must be zero) + * bits 2- 8: swap-type + * bits 9-62: swap offset + * bit 63 : _PAGE_PROTNONE bit + * + * Format of file pte: + * bit 0 : present bit (must be zero) + * bit 1 : _PAGE_FILE (must be one) + * bits 2-62: file_offset/PAGE_SIZE + * bit 63 : _PAGE_PROTNONE bit + */ +#define __swp_type(entry) (((entry).val >> 2) & 0x7f) #define __swp_offset(entry) (((entry).val << 1) >> 10) -#define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 1) | ((long) (offset) << 9) }) +#define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 2) | ((long) (offset) << 9) }) #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) + +#define PTE_FILE_MAX_BITS 61 +#define pte_to_pgoff(pte) ((pte_val(pte) << 1) >> 3) +#define pgoff_to_pte(off) ((pte_t) { ((off) << 2) | _PAGE_FILE }) #define io_remap_page_range remap_page_range /* XXX is this right? */ diff -Nru a/include/asm-ia64/processor.h b/include/asm-ia64/processor.h --- a/include/asm-ia64/processor.h Mon Mar 10 10:20:31 2003 +++ b/include/asm-ia64/processor.h Tue Apr 8 11:58:31 2003 @@ -379,7 +379,7 @@ static inline unsigned long ia64_get_kr (unsigned long regnum) { - unsigned long r; + unsigned long r = 0; switch (regnum) { case 0: asm volatile ("mov %0=ar.k0" : "=r"(r)); break; @@ -915,13 +915,13 @@ #define ARCH_HAS_SPINLOCK_PREFETCH #define PREFETCH_STRIDE 256 -extern inline void +static inline void prefetch (const void *x) { __asm__ __volatile__ ("lfetch [%0]" : : "r"(x)); } -extern inline void +static inline void prefetchw (const void *x) { __asm__ __volatile__ ("lfetch.excl [%0]" : : "r"(x)); diff -Nru a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h --- a/include/asm-ia64/sal.h Tue Mar 4 18:33:56 2003 +++ b/include/asm-ia64/sal.h Mon Mar 24 13:43:39 2003 @@ -36,14 +36,24 @@ #define __SAL_CALL(result,a0,a1,a2,a3,a4,a5,a6,a7) \ result = (*ia64_sal)(a0,a1,a2,a3,a4,a5,a6,a7) -# define SAL_CALL(result,args...) do { \ - unsigned long flags; \ - struct ia64_fpreg fr[6]; \ - ia64_save_scratch_fpregs(fr); \ - spin_lock_irqsave(&sal_lock, flags); \ - __SAL_CALL(result,args); \ - spin_unlock_irqrestore(&sal_lock, flags); \ - ia64_load_scratch_fpregs(fr); \ +# define SAL_CALL(result,args...) do { \ + unsigned long __ia64_sc_flags; \ + struct ia64_fpreg __ia64_sc_fr[6]; \ + ia64_save_scratch_fpregs(__ia64_sc_fr); \ + spin_lock_irqsave(&sal_lock, __ia64_sc_flags); \ + __SAL_CALL(result, args); \ + spin_unlock_irqrestore(&sal_lock, __ia64_sc_flags); \ + ia64_load_scratch_fpregs(__ia64_sc_fr); \ +} while (0) + +# define SAL_CALL_NOLOCK(result,args...) do { \ + unsigned long __ia64_scn_flags; \ + struct ia64_fpreg __ia64_scn_fr[6]; \ + ia64_save_scratch_fpregs(__ia64_scn_fr); \ + local_irq_save(__ia64_scn_flags); \ + __SAL_CALL(result, args); \ + local_irq_restore(__ia64_scn_flags); \ + ia64_load_scratch_fpregs(__ia64_scn_fr); \ } while (0) #define SAL_SET_VECTORS 0x01000000 @@ -686,13 +696,14 @@ /* * Causes the processor to go into a spin loop within SAL where SAL awaits a wakeup from - * the monarch processor. + * the monarch processor. Must not lock, because it will not return on any cpu until the + * monarch processor sends a wake up. */ static inline s64 ia64_sal_mc_rendez (void) { struct ia64_sal_retval isrv; - SAL_CALL(isrv, SAL_MC_RENDEZ, 0, 0, 0, 0, 0, 0, 0); + SAL_CALL_NOLOCK(isrv, SAL_MC_RENDEZ, 0, 0, 0, 0, 0, 0, 0); return isrv.status; } diff -Nru a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h --- a/include/asm-ia64/smp.h Mon Aug 12 04:06:34 2002 +++ b/include/asm-ia64/smp.h Wed Mar 26 10:21:04 2003 @@ -3,7 +3,7 @@ * * Copyright (C) 1999 VA Linux Systems * Copyright (C) 1999 Walt Drummond - * Copyright (C) 2001-2002 Hewlett-Packard Co + * Copyright (C) 2001-2003 Hewlett-Packard Co * David Mosberger-Tang */ #ifndef _ASM_IA64_SMP_H @@ -74,7 +74,7 @@ int i; for (i = 0; i < NR_CPUS; ++i) - if (cpu_physical_id(i) == (__u32) cpuid) + if (cpu_physical_id(i) == cpuid) break; return i; } diff -Nru a/include/asm-ia64/sn/io.h b/include/asm-ia64/sn/io.h --- a/include/asm-ia64/sn/io.h Fri Mar 8 18:11:39 2002 +++ b/include/asm-ia64/sn/io.h Thu Mar 27 07:51:07 2003 @@ -3,8 +3,8 @@ * License. See the file "COPYING" in the main directory of this archive * for more details. * + * Copyright (C) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. * Copyright (C) 2000 Ralf Baechle - * Copyright (C) 2000-2001 Silicon Graphics, Inc. */ #ifndef _ASM_IA64_SN_IO_H #define _ASM_IA64_SN_IO_H @@ -77,5 +77,10 @@ #include #include #endif + +/* + * Used to ensure write ordering (like mb(), but for I/O space) + */ +extern void sn_mmiob(void); #endif /* _ASM_IA64_SN_IO_H */ diff -Nru a/include/asm-ia64/sn/sn2/io.h b/include/asm-ia64/sn/sn2/io.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/asm-ia64/sn/sn2/io.h Thu Mar 27 07:51:35 2003 @@ -0,0 +1,206 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2000-2003 Silicon Graphics, Inc. All rights reserved. + */ + +#ifndef _ASM_SN_SN2_IO_H +#define _ASM_SN_SN2_IO_H + +extern void * sn_io_addr(unsigned long port); /* Forward definition */ +extern void sn_mmiob(void); /* Forward definition */ + +#define __sn_mf_a() __asm__ __volatile__ ("mf.a" ::: "memory") + +extern void sn_dma_flush(unsigned long); + +/* + * The following routines are SN Platform specific, called when + * a reference is made to inX/outX set macros. SN Platform + * inX set of macros ensures that Posted DMA writes on the + * Bridge is flushed. + * + * The routines should be self explainatory. + */ + +static inline unsigned int +__sn_inb (unsigned long port) +{ + volatile unsigned char *addr = sn_io_addr(port); + unsigned char ret; + + ret = *addr; + sn_dma_flush((unsigned long)addr); + __sn_mf_a(); + return ret; +} + +static inline unsigned int +__sn_inw (unsigned long port) +{ + volatile unsigned short *addr = sn_io_addr(port); + unsigned short ret; + + ret = *addr; + sn_dma_flush((unsigned long)addr); + __sn_mf_a(); + return ret; +} + +static inline unsigned int +__sn_inl (unsigned long port) +{ + volatile unsigned int *addr = sn_io_addr(port); + unsigned int ret; + + ret = *addr; + sn_dma_flush((unsigned long)addr); + __sn_mf_a(); + return ret; +} + +static inline void +__sn_outb (unsigned char val, unsigned long port) +{ + volatile unsigned char *addr = sn_io_addr(port); + + *addr = val; + sn_mmiob(); +} + +static inline void +__sn_outw (unsigned short val, unsigned long port) +{ + volatile unsigned short *addr = sn_io_addr(port); + + *addr = val; + sn_mmiob(); +} + +static inline void +__sn_outl (unsigned int val, unsigned long port) +{ + volatile unsigned int *addr = sn_io_addr(port); + + *addr = val; + sn_mmiob(); +} + +/* + * The following routines are SN Platform specific, called when + * a reference is made to readX/writeX set macros. SN Platform + * readX set of macros ensures that Posted DMA writes on the + * Bridge is flushed. + * + * The routines should be self explainatory. + */ + +static inline unsigned char +__sn_readb (void *addr) +{ + unsigned char val; + + val = *(volatile unsigned char *)addr; + sn_dma_flush((unsigned long)addr); + return val; +} + +static inline unsigned short +__sn_readw (void *addr) +{ + unsigned short val; + + val = *(volatile unsigned short *)addr; + sn_dma_flush((unsigned long)addr); + return val; +} + +static inline unsigned int +__sn_readl (void *addr) +{ + unsigned int val; + + val = *(volatile unsigned int *) addr; + sn_dma_flush((unsigned long)addr); + return val; +} + +static inline unsigned long +__sn_readq (void *addr) +{ + unsigned long val; + + val = *(volatile unsigned long *) addr; + sn_dma_flush((unsigned long)addr); + return val; +} + +/* + * For generic and SN2 kernels, we have a set of fast access + * PIO macros. These macros are provided on SN Platform + * because the normal inX and readX macros perform an + * additional task of flushing Post DMA request on the Bridge. + * + * These routines should be self explainatory. + */ + +static inline unsigned int +sn_inb_fast (unsigned long port) +{ + volatile unsigned char *addr = (unsigned char *)port; + unsigned char ret; + + ret = *addr; + __sn_mf_a(); + return ret; +} + +static inline unsigned int +sn_inw_fast (unsigned long port) +{ + volatile unsigned short *addr = (unsigned short *)port; + unsigned short ret; + + ret = *addr; + __sn_mf_a(); + return ret; +} + +static inline unsigned int +sn_inl_fast (unsigned long port) +{ + volatile unsigned int *addr = (unsigned int *)port; + unsigned int ret; + + ret = *addr; + __sn_mf_a(); + return ret; +} + +static inline unsigned char +sn_readb_fast (void *addr) +{ + return *(volatile unsigned char *)addr; +} + +static inline unsigned short +sn_readw_fast (void *addr) +{ + return *(volatile unsigned short *)addr; +} + +static inline unsigned int +sn_readl_fast (void *addr) +{ + return *(volatile unsigned int *) addr; +} + +static inline unsigned long +sn_readq_fast (void *addr) +{ + return *(volatile unsigned long *) addr; +} + +#endif diff -Nru a/include/asm-ia64/spinlock.h b/include/asm-ia64/spinlock.h --- a/include/asm-ia64/spinlock.h Tue Mar 4 18:38:46 2003 +++ b/include/asm-ia64/spinlock.h Tue Mar 18 14:59:25 2003 @@ -2,7 +2,7 @@ #define _ASM_IA64_SPINLOCK_H /* - * Copyright (C) 1998-2002 Hewlett-Packard Co + * Copyright (C) 1998-2003 Hewlett-Packard Co * David Mosberger-Tang * Copyright (C) 1999 Walt Drummond * @@ -15,58 +15,6 @@ #include #include -#undef NEW_LOCK - -#ifdef NEW_LOCK - -typedef struct { - volatile unsigned int lock; -} spinlock_t; - -#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 } -#define spin_lock_init(x) ((x)->lock = 0) - -/* - * Streamlined test_and_set_bit(0, (x)). We use test-and-test-and-set - * rather than a simple xchg to avoid writing the cache-line when - * there is contention. - */ -#define _raw_spin_lock(x) \ -{ \ - register char *addr __asm__ ("r31") = (char *) &(x)->lock; \ - \ - __asm__ __volatile__ ( \ - "mov r30=1\n" \ - "mov ar.ccv=r0\n" \ - ";;\n" \ - "cmpxchg4.acq r30=[%0],r30,ar.ccv\n" \ - ";;\n" \ - "cmp.ne p15,p0=r30,r0\n" \ - "(p15) br.call.spnt.few b7=ia64_spinlock_contention\n" \ - ";;\n" \ - "1:\n" /* force a new bundle */ \ - :: "r"(addr) \ - : "ar.ccv", "ar.pfs", "b7", "p15", "r28", "r29", "r30", "memory"); \ -} - -#define _raw_spin_trylock(x) \ -({ \ - register long result; \ - \ - __asm__ __volatile__ ( \ - "mov ar.ccv=r0\n" \ - ";;\n" \ - "cmpxchg4.acq %0=[%2],%1,ar.ccv\n" \ - : "=r"(result) : "r"(1), "r"(&(x)->lock) : "ar.ccv", "memory"); \ - (result == 0); \ -}) - -#define spin_is_locked(x) ((x)->lock != 0) -#define _raw_spin_unlock(x) do { barrier(); ((spinlock_t *) x)->lock = 0;} while (0) -#define spin_unlock_wait(x) do { barrier(); } while ((x)->lock) - -#else /* !NEW_LOCK */ - typedef struct { volatile unsigned int lock; } spinlock_t; @@ -123,8 +71,6 @@ #define _raw_spin_trylock(x) (cmpxchg_acq(&(x)->lock, 0, 1) == 0) #define spin_unlock_wait(x) do { barrier(); } while ((x)->lock) -#endif /* !NEW_LOCK */ - typedef struct { volatile int read_counter:31; volatile int write_lock:1; @@ -136,7 +82,7 @@ #define _raw_read_lock(rw) \ do { \ - int tmp = 0; \ + int __read_lock_tmp = 0; \ __asm__ __volatile__ ("1:\tfetchadd4.acq %0 = [%1], 1\n" \ ";;\n" \ "tbit.nz p6,p0 = %0, 31\n" \ @@ -151,15 +97,15 @@ "br.cond.sptk.few 1b\n" \ ";;\n" \ ".previous\n" \ - : "=&r" (tmp) \ + : "=&r" (__read_lock_tmp) \ : "r" (rw) : "p6", "memory"); \ } while(0) #define _raw_read_unlock(rw) \ do { \ - int tmp = 0; \ + int __read_unlock_tmp = 0; \ __asm__ __volatile__ ("fetchadd4.rel %0 = [%1], -1\n" \ - : "=r" (tmp) \ + : "=r" (__read_unlock_tmp) \ : "r" (rw) \ : "memory"); \ } while(0) diff -Nru a/include/asm-ia64/system.h b/include/asm-ia64/system.h --- a/include/asm-ia64/system.h Thu Jan 30 06:15:28 2003 +++ b/include/asm-ia64/system.h Tue Apr 1 01:19:53 2003 @@ -31,6 +31,7 @@ #include struct pci_vector_struct { + __u16 segment; /* PCI Segment number */ __u16 bus; /* PCI Bus number */ __u32 pci_id; /* ACPI split 16 bits device, 16 bits function (see section 6.1.1) */ __u8 pin; /* PCI PIN (0 = A, 1 = B, 2 = C, 3 = D) */ @@ -108,7 +109,7 @@ #define set_mb(var, value) do { (var) = (value); mb(); } while (0) #define set_wmb(var, value) do { (var) = (value); mb(); } while (0) -#define safe_halt() ia64_pal_halt(1) /* PAL_HALT */ +#define safe_halt() ia64_pal_halt_light() /* PAL_HALT_LIGHT */ /* * The group barrier in front of the rsm & ssm are necessary to ensure diff -Nru a/include/asm-ia64/unaligned.h b/include/asm-ia64/unaligned.h --- a/include/asm-ia64/unaligned.h Mon Feb 4 23:43:07 2002 +++ b/include/asm-ia64/unaligned.h Wed Mar 26 10:21:04 2003 @@ -7,8 +7,8 @@ * The main single-value unaligned transfer routines. Derived from * the Linux/Alpha version. * - * Copyright (C) 1998, 1999 Hewlett-Packard Co - * Copyright (C) 1998, 1999 David Mosberger-Tang + * Copyright (C) 1998, 1999, 2003 Hewlett-Packard Co + * David Mosberger-Tang */ #define get_unaligned(ptr) \ ((__typeof__(*(ptr)))ia64_get_unaligned((ptr), sizeof(*(ptr)))) @@ -16,110 +16,105 @@ #define put_unaligned(x,ptr) \ ia64_put_unaligned((unsigned long)(x), (ptr), sizeof(*(ptr))) -/* - * EGCS 1.1 knows about arbitrary unaligned loads. Define some - * packed structures to talk about such things with. - */ struct __una_u64 { __u64 x __attribute__((packed)); }; struct __una_u32 { __u32 x __attribute__((packed)); }; struct __una_u16 { __u16 x __attribute__((packed)); }; static inline unsigned long -__uldq (const unsigned long * r11) +__uld8 (const unsigned long * addr) { - const struct __una_u64 *ptr = (const struct __una_u64 *) r11; + const struct __una_u64 *ptr = (const struct __una_u64 *) addr; return ptr->x; } static inline unsigned long -__uldl (const unsigned int * r11) +__uld4 (const unsigned int * addr) { - const struct __una_u32 *ptr = (const struct __una_u32 *) r11; + const struct __una_u32 *ptr = (const struct __una_u32 *) addr; return ptr->x; } static inline unsigned long -__uldw (const unsigned short * r11) +__uld2 (const unsigned short * addr) { - const struct __una_u16 *ptr = (const struct __una_u16 *) r11; + const struct __una_u16 *ptr = (const struct __una_u16 *) addr; return ptr->x; } static inline void -__ustq (unsigned long r5, unsigned long * r11) +__ust8 (unsigned long val, unsigned long * addr) { - struct __una_u64 *ptr = (struct __una_u64 *) r11; - ptr->x = r5; + struct __una_u64 *ptr = (struct __una_u64 *) addr; + ptr->x = val; } static inline void -__ustl (unsigned long r5, unsigned int * r11) +__ust4 (unsigned long val, unsigned int * addr) { - struct __una_u32 *ptr = (struct __una_u32 *) r11; - ptr->x = r5; + struct __una_u32 *ptr = (struct __una_u32 *) addr; + ptr->x = val; } static inline void -__ustw (unsigned long r5, unsigned short * r11) +__ust2 (unsigned long val, unsigned short * addr) { - struct __una_u16 *ptr = (struct __una_u16 *) r11; - ptr->x = r5; + struct __una_u16 *ptr = (struct __una_u16 *) addr; + ptr->x = val; } /* - * This function doesn't actually exist. The idea is that when - * someone uses the macros below with an unsupported size (datatype), - * the linker will alert us to the problem via an unresolved reference - * error. + * This function doesn't actually exist. The idea is that when someone uses the macros + * below with an unsupported size (datatype), the linker will alert us to the problem via + * an unresolved reference error. */ extern unsigned long ia64_bad_unaligned_access_length (void); -#define ia64_get_unaligned(_ptr,size) \ -({ \ - const void *ptr = (_ptr); \ - unsigned long val; \ - \ - switch (size) { \ - case 1: \ - val = *(const unsigned char *) ptr; \ - break; \ - case 2: \ - val = __uldw((const unsigned short *)ptr); \ - break; \ - case 4: \ - val = __uldl((const unsigned int *)ptr); \ - break; \ - case 8: \ - val = __uldq((const unsigned long *)ptr); \ - break; \ - default: \ - val = ia64_bad_unaligned_access_length(); \ - } \ - val; \ +#define ia64_get_unaligned(_ptr,size) \ +({ \ + const void *__ia64_ptr = (_ptr); \ + unsigned long __ia64_val; \ + \ + switch (size) { \ + case 1: \ + __ia64_val = *(const unsigned char *) __ia64_ptr; \ + break; \ + case 2: \ + __ia64_val = __uld2((const unsigned short *)__ia64_ptr); \ + break; \ + case 4: \ + __ia64_val = __uld4((const unsigned int *)__ia64_ptr); \ + break; \ + case 8: \ + __ia64_val = __uld8((const unsigned long *)__ia64_ptr); \ + break; \ + default: \ + __ia64_val = ia64_bad_unaligned_access_length(); \ + } \ + __ia64_val; \ }) -#define ia64_put_unaligned(_val,_ptr,size) \ -do { \ - const void *ptr = (_ptr); \ - unsigned long val = (_val); \ - \ - switch (size) { \ - case 1: \ - *(unsigned char *)ptr = (val); \ - break; \ - case 2: \ - __ustw(val, (unsigned short *)ptr); \ - break; \ - case 4: \ - __ustl(val, (unsigned int *)ptr); \ - break; \ - case 8: \ - __ustq(val, (unsigned long *)ptr); \ - break; \ - default: \ - ia64_bad_unaligned_access_length(); \ - } \ +#define ia64_put_unaligned(_val,_ptr,size) \ +do { \ + const void *__ia64_ptr = (_ptr); \ + unsigned long __ia64_val = (_val); \ + \ + switch (size) { \ + case 1: \ + *(unsigned char *)__ia64_ptr = (__ia64_val); \ + break; \ + case 2: \ + __ust2(__ia64_val, (unsigned short *)__ia64_ptr); \ + break; \ + case 4: \ + __ust4(__ia64_val, (unsigned int *)__ia64_ptr); \ + break; \ + case 8: \ + __ust8(__ia64_val, (unsigned long *)__ia64_ptr); \ + break; \ + default: \ + ia64_bad_unaligned_access_length(); \ + } \ } while (0) #endif /* _ASM_IA64_UNALIGNED_H */ diff -Nru a/include/asm-sparc/pci.h b/include/asm-sparc/pci.h --- a/include/asm-sparc/pci.h Tue Feb 25 09:18:18 2003 +++ b/include/asm-sparc/pci.h Sat Apr 5 23:39:38 2003 @@ -137,4 +137,7 @@ #endif /* __KERNEL__ */ +/* generic pci stuff */ +#include + #endif /* __SPARC_PCI_H */ diff -Nru a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h --- a/include/asm-sparc/pgtable.h Mon Sep 9 14:01:14 2002 +++ b/include/asm-sparc/pgtable.h Sat Apr 5 23:38:52 2003 @@ -11,7 +11,7 @@ #include #include -/* #include */ /* doesn't seem like being used XXX */ +#include #ifdef CONFIG_SUN4 #include #else @@ -252,6 +252,17 @@ return pte_val(pte) & BTFIXUP_HALF(pte_youngi); } +/* + * The following only work if pte_present() is not true. + */ +BTFIXUPDEF_HALF(pte_filei) + +extern int pte_file(pte_t pte) __attribute__((const)); +extern __inline__ int pte_file(pte_t pte) +{ + return pte_val(pte) & BTFIXUP_HALF(pte_filei); +} + BTFIXUPDEF_HALF(pte_wrprotecti) BTFIXUPDEF_HALF(pte_mkcleani) BTFIXUPDEF_HALF(pte_mkoldi) @@ -373,6 +384,17 @@ #define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) #define __swp_entry_to_pte(x) ((pte_t) { (x).val }) +/* file-offset-in-pte helpers */ +BTFIXUPDEF_CALL(unsigned long, pte_to_pgoff, pte_t pte); +BTFIXUPDEF_CALL(pte_t, pgoff_to_pte, unsigned long pgoff); +BTFIXUPDEF_SIMM13(pte_file_max_bits); + +#define pte_to_pgoff(pte) BTFIXUP_CALL(pte_to_pgoff)(pte) +#define pgoff_to_pte(off) BTFIXUP_CALL(pgoff_to_pte)(off) +#define PTE_FILE_MAX_BITS BTFIXUP_SIMM13(pte_file_max_bits) + +/* + */ struct ctx_list { struct ctx_list *next; struct ctx_list *prev; diff -Nru a/include/asm-sparc/pgtsrmmu.h b/include/asm-sparc/pgtsrmmu.h --- a/include/asm-sparc/pgtsrmmu.h Sun Dec 8 12:32:14 2002 +++ b/include/asm-sparc/pgtsrmmu.h Sat Apr 5 23:38:52 2003 @@ -62,6 +62,11 @@ #define SRMMU_PRIV 0x1c #define SRMMU_PRIV_RDONLY 0x18 +#define SRMMU_FILE 0x40 /* Implemented in software */ + +#define SRMMU_PTE_FILE_MAX_BITS 24 +#define SRMMU_PTE_FILE_SHIFT 8 + #define SRMMU_CHG_MASK (0xffffff00 | SRMMU_REF | SRMMU_DIRTY) /* Some day I will implement true fine grained access bits for diff -Nru a/include/asm-sparc/pgtsun4c.h b/include/asm-sparc/pgtsun4c.h --- a/include/asm-sparc/pgtsun4c.h Tue Feb 5 09:39:47 2002 +++ b/include/asm-sparc/pgtsun4c.h Sat Apr 5 23:38:52 2003 @@ -53,6 +53,7 @@ #define _SUN4C_PAGE_NOCACHE 0x10000000 /* non-cacheable page */ #define _SUN4C_PAGE_PRESENT 0x08000000 /* implemented in software */ #define _SUN4C_PAGE_IO 0x04000000 /* I/O page */ +#define _SUN4C_PAGE_FILE 0x02000000 /* implemented in software */ #define _SUN4C_PAGE_READ 0x00800000 /* implemented in software */ #define _SUN4C_PAGE_WRITE 0x00400000 /* implemented in software */ #define _SUN4C_PAGE_ACCESSED 0x00200000 /* implemented in software */ @@ -72,6 +73,12 @@ #define SUN4C_PAGE_READONLY __pgprot(_SUN4C_PAGE_PRESENT|_SUN4C_READABLE) #define SUN4C_PAGE_KERNEL __pgprot(_SUN4C_READABLE|_SUN4C_WRITEABLE|\ _SUN4C_PAGE_DIRTY|_SUN4C_PAGE_PRIV) + +/* + * We have a couple of free bits left, but it's probably not a big + * deal, considering sizes of RAM and swap on sun4c. + */ +#define SUN4C_PTE_FILE_MAX_BITS 20 #ifndef __ASSEMBLY__ diff -Nru a/include/asm-sparc/system.h b/include/asm-sparc/system.h --- a/include/asm-sparc/system.h Wed Feb 12 01:41:01 2003 +++ b/include/asm-sparc/system.h Sat Apr 5 23:40:33 2003 @@ -11,7 +11,6 @@ #include #include -#include /* romvec. XXX will be dealt later. Promise. */ #include #include #include @@ -95,20 +94,12 @@ } while(0) #endif -// #define prepare_arch_schedule(prev) task_lock(prev) -// #define finish_arch_schedule(prev) task_unlock(prev) -#define prepare_arch_schedule(prev) do{ }while(0) -#define finish_arch_schedule(prev) do{ }while(0) - /* * Flush windows so that the VM switch which follows * would not pull the stack from under us. * * SWITCH_ENTER and SWITH_DO_LAZY_FPU do not work yet (e.g. SMP does not work) * XXX WTF is the above comment? Found in late teen 2.4.x. - * - * XXX prepare_arch_switch() is much smarter than this in sparc64, are we sure? - * XXX Cosider if doing it the flush_user_windows way is faster (by uwinmask). */ #define prepare_arch_switch(rq, next) do { \ __asm__ __volatile__( \ @@ -133,14 +124,13 @@ * - Anton & Pete */ #define switch_to(prev, next, last) do { \ - __label__ here; \ - register unsigned long task_pc asm("o7"); \ SWITCH_ENTER(prev); \ SWITCH_DO_LAZY_FPU(next); \ next->active_mm->cpu_vm_mask |= (1 << smp_processor_id()); \ - task_pc = ((unsigned long) &&here) - 0x8; \ __asm__ __volatile__( \ + "sethi %%hi(here - 0x8), %%o7\n\t" \ "mov %%g6, %%g3\n\t" \ + "or %%o7, %%lo(here - 0x8), %%o7\n\t" \ "rd %%psr, %%g4\n\t" \ "std %%sp, [%%g6 + %4]\n\t" \ "rd %%wim, %%g5\n\t" \ @@ -155,7 +145,7 @@ "wr %%g4, 0x20, %%psr\n\t" \ "nop\n\t" \ "nop\n\t" \ - "nop\n\t" /* LEON needs this: load to %sp depends on CWP. */ \ + "nop\n\t" /* LEON needs all 3 nops: load to %sp depends on CWP. */ \ "ldd [%%g6 + %4], %%sp\n\t" \ "wr %%g5, 0x0, %%wim\n\t" \ "ldd [%%sp + 0x00], %%l0\n\t" \ @@ -165,18 +155,18 @@ "nop\n\t" \ "jmpl %%o7 + 0x8, %%g0\n\t" \ " ld [%%g3 + %5], %0\n\t" \ + "here:\n" \ : "=&r" (last) \ : "r" (&(current_set[hard_smp_processor_id()])), \ "r" ((next)->thread_info), \ "i" (TI_KPSR), \ "i" (TI_KSP), \ - "i" (TI_TASK), \ - "r" (task_pc) \ + "i" (TI_TASK) \ : "g1", "g2", "g3", "g4", "g5", "g7", \ "l0", "l1", "l3", "l4", "l5", "l6", "l7", \ "i0", "i1", "i2", "i3", "i4", "i5", \ - "o0", "o1", "o2", "o3"); \ -here:; } while(0) + "o0", "o1", "o2", "o3", "o7"); \ + } while(0) /* * Changing the IRQ level on the Sparc. diff -Nru a/include/asm-sparc/uaccess.h b/include/asm-sparc/uaccess.h --- a/include/asm-sparc/uaccess.h Tue Feb 25 10:12:12 2003 +++ b/include/asm-sparc/uaccess.h Sat Apr 5 23:37:36 2003 @@ -104,7 +104,7 @@ * doing multiple accesses to the same area (the user has to do the * checks by hand with "access_ok()") */ -#define __put_user(x,ptr) __put_user_nocheck((x),(ptr),sizeof(*(ptr))) +#define __put_user(x,ptr) __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr))) #define __get_user(x,ptr) __get_user_nocheck((x),(ptr),sizeof(*(ptr)),__typeof__(*(ptr))) struct __large_struct { unsigned long buf[100]; }; diff -Nru a/include/asm-v850/nb85e_cache.h b/include/asm-v850/nb85e_cache.h --- a/include/asm-v850/nb85e_cache.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/nb85e_cache.h Thu Apr 3 15:01:04 2003 @@ -2,8 +2,8 @@ * include/asm-v850/nb85e_cache_cache.h -- Cache control for NB85E_CACHE212 and * NB85E_CACHE213 cache memories * - * Copyright (C) 2001 NEC Corporation - * Copyright (C) 2001 Miles Bader + * Copyright (C) 2001,03 NEC Electronics Corporation + * Copyright (C) 2001,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -15,92 +15,65 @@ #ifndef __V850_NB85E_CACHE_H__ #define __V850_NB85E_CACHE_H__ +#include + + /* Cache control registers. */ -#define NB85E_CACHE_ICC_ADDR 0xFFFFF070 -#define NB85E_CACHE_DCC_ADDR 0xFFFFF078 +#define NB85E_CACHE_BHC_ADDR 0xFFFFF06A +#define NB85E_CACHE_BHC (*(volatile u16 *)NB85E_CACHE_BHC_ADDR) +#define NB85E_CACHE_ICC_ADDR 0xFFFFF070 +#define NB85E_CACHE_ICC (*(volatile u16 *)NB85E_CACHE_ICC_ADDR) +#define NB85E_CACHE_ISI_ADDR 0xFFFFF072 +#define NB85E_CACHE_ISI (*(volatile u16 *)NB85E_CACHE_ISI_ADDR) +#define NB85E_CACHE_DCC_ADDR 0xFFFFF078 +#define NB85E_CACHE_DCC (*(volatile u16 *)NB85E_CACHE_DCC_ADDR) /* Size of a cache line in bytes. */ -#define NB85E_CACHE_LINE_SIZE 16 - +#define NB85E_CACHE_LINE_SIZE 16 -#ifndef __ASSEMBLY__ +/* For */ +#define L1_CACHE_BYTES NB85E_CACHE_LINE_SIZE -extern inline void nb85e_cache_flush_cache (unsigned long cache_control_addr) -{ - /* - From the NB85E Instruction/Data Cache manual, how to flush - the instruction cache (ICC is the `Instruction Cache Control - Register'): - - mov 0x3, r2 - LOP0: - ld.h ICC[r0], r1 - cmp r0, r1 - bnz LOP0 - st.h r2, ICC[r0] - LOP1: - First TAG clear - ld.h ICC[r0], r1 - cmp r0, r1 - bnz LOP1 - st.h r2, ICC[r0] - LOP2: - Second TAG clear - ld.h ICC[r0], r1 - cmp r0, r1 - bnz LOP2 - */ - int cache_flush_bits, ccr_contents; - __asm__ __volatile__ ( - " mov 0x3, %1;" - "1: ld.h 0[%2], %0;" - " cmp r0, %0;" - " bnz 1b;" - " st.h %1, 0[%2];" - "2: ld.h 0[%2], %0;" - " cmp r0, %0;" - " bnz 2b;" - " st.h %1, 0[%2];" - "3: ld.h 0[%2], %0;" - " cmp r0, %0;" - " bnz 3b" - : "=&r" (ccr_contents), "=&r" (cache_flush_bits) - : "r" (cache_control_addr) - : "memory"); -} - -extern inline void nb85e_cache_flush_icache (void) -{ - nb85e_cache_flush_cache (NB85E_CACHE_ICC_ADDR); -} - -extern inline void nb85e_cache_flush_dcache (void) -{ - nb85e_cache_flush_cache (NB85E_CACHE_DCC_ADDR); -} - -extern inline void nb85e_cache_flush (void) -{ - nb85e_cache_flush_icache (); - nb85e_cache_flush_dcache (); -} -#endif /* !__ASSEMBLY__ */ +#ifndef __ASSEMBLY__ - -/* Define standard definitions in terms of processor-specific ones. */ +/* Set caching params via the BHC and DCC registers. */ +void nb85e_cache_enable (u16 bhc, u16 dcc); -/* For */ -#define L1_CACHE_BYTES NB85E_CACHE_LINE_SIZE +struct page; +struct mm_struct; +struct vm_area_struct; + +extern void nb85e_cache_flush_all (void); +extern void nb85e_cache_flush_mm (struct mm_struct *mm); +extern void nb85e_cache_flush_range (struct mm_struct *mm, + unsigned long start, + unsigned long end); +extern void nb85e_cache_flush_page (struct vm_area_struct *vma, + unsigned long page_addr); +extern void nb85e_cache_flush_dcache_page (struct page *page); +extern void nb85e_cache_flush_icache (void); +extern void nb85e_cache_flush_icache_range (unsigned long start, + unsigned long end); +extern void nb85e_cache_flush_icache_page (struct vm_area_struct *vma, + struct page *page); +extern void nb85e_cache_flush_icache_user_range (struct vm_area_struct *vma, + struct page *page, + unsigned long adr, int len); +extern void nb85e_cache_flush_sigtramp (unsigned long addr); + +#define flush_page_to_ram(x) ((void)0) +#define flush_cache_all nb85e_cache_flush_all +#define flush_cache_mm nb85e_cache_flush_mm +#define flush_cache_range nb85e_cache_flush_range +#define flush_cache_page nb85e_cache_flush_page +#define flush_dcache_page nb85e_cache_flush_dcache_page +#define flush_icache nb85e_cache_flush_icache +#define flush_icache_range nb85e_cache_flush_icache_range +#define flush_icache_page nb85e_cache_flush_icache_page +#define flush_icache_user_range nb85e_cache_flush_icache_user_range +#define flush_cache_sigtramp nb85e_cache_flush_sigtramp -/* For */ -#define flush_cache_all() nb85e_cache_flush () -#define flush_cache_mm(mm) nb85e_cache_flush () -#define flush_cache_range(mm, start, end) nb85e_cache_flush () -#define flush_cache_page(vma, vmaddr) nb85e_cache_flush () -#define flush_page_to_ram(page) nb85e_cache_flush () -#define flush_dcache_page(page) nb85e_cache_flush_dcache () -#define flush_icache_range(start, end) nb85e_cache_flush_icache () -#define flush_icache_page(vma,pg) nb85e_cache_flush_icache () -#define flush_icache() nb85e_cache_flush_icache () -#define flush_cache_sigtramp(vaddr) nb85e_cache_flush_icache () +#endif /* !__ASSEMBLY__ */ #endif /* __V850_NB85E_CACHE_H__ */ diff -Nru a/include/asm-v850/nb85e_intc.h b/include/asm-v850/nb85e_intc.h --- a/include/asm-v850/nb85e_intc.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/nb85e_intc.h Mon Apr 7 22:03:02 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/nb85e_intc.h -- NB85E cpu core interrupt controller (INTC) * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -26,7 +26,7 @@ address. */ #define NB85E_INTC_IC_BASE_ADDR 0xFFFFF110 #define NB85E_INTC_IC_ADDR(irq) (NB85E_INTC_IC_BASE_ADDR + ((irq) << 1)) -#define NB85E_INTC_IC(irq) (*(char *)NB85E_INTC_IC_ADDR(irq)) +#define NB85E_INTC_IC(irq) (*(volatile u8 *)NB85E_INTC_IC_ADDR(irq)) /* Encode priority PR for storing in an interrupt control register. */ #define NB85E_INTC_IC_PR(pr) (pr) /* Interrupt disable bit in an interrupt control register. */ @@ -35,6 +35,13 @@ /* Interrupt pending flag in an interrupt control register. */ #define NB85E_INTC_IC_IF_BIT 7 #define NB85E_INTC_IC_IF (1 << NB85E_INTC_IC_IF_BIT) + +/* The ISPR (In-service priority register) contains one bit for each interrupt + priority level, which is set to one when that level is currently being + serviced (and thus blocking any interrupts of equal or lesser level). */ +#define NB85E_INTC_ISPR_ADDR 0xFFFFF1FA +#define NB85E_INTC_ISPR (*(volatile u8 *)NB85E_INTC_ISPR_ADDR) + #ifndef __ASSEMBLY__ diff -Nru a/include/asm-v850/nb85e_timer_d.h b/include/asm-v850/nb85e_timer_d.h --- a/include/asm-v850/nb85e_timer_d.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/nb85e_timer_d.h Thu Apr 3 15:01:04 2003 @@ -2,8 +2,8 @@ * include/asm-v850/nb85e_timer_d.h -- `Timer D' component often used * with the NB85E cpu core * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -27,7 +27,7 @@ /* Count compare registers for timer D. */ #define NB85E_TIMER_D_CMD_ADDR(n) (NB85E_TIMER_D_CMD_BASE_ADDR + 0x10 * (n)) -#define NB85E_TIMER_D_CMD(n) (*(u16 *)NB85E_TIMER_D_CMD_ADDR(n)) +#define NB85E_TIMER_D_CMD(n) (*(volatile u16 *)NB85E_TIMER_D_CMD_ADDR(n)) /* Control registers for timer D. */ #define NB85E_TIMER_D_TMCD_ADDR(n) (NB85E_TIMER_D_TMCD_BASE_ADDR + 0x10 * (n)) diff -Nru a/include/asm-v850/posix_types.h b/include/asm-v850/posix_types.h --- a/include/asm-v850/posix_types.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/posix_types.h Thu Apr 3 14:57:22 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/posix_types.h -- Kernel versions of standard types * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -31,6 +31,8 @@ typedef long __kernel_time_t; typedef long __kernel_suseconds_t; typedef long __kernel_clock_t; +typedef int __kernel_timer_t; +typedef int __kernel_clockid_t; typedef int __kernel_daddr_t; typedef char * __kernel_caddr_t; typedef unsigned short __kernel_uid16_t; diff -Nru a/include/asm-v850/processor.h b/include/asm-v850/processor.h --- a/include/asm-v850/processor.h Mon Mar 10 10:20:31 2003 +++ b/include/asm-v850/processor.h Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/processor.h * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -91,15 +91,17 @@ { } -/* Return saved (kernel) PC of a blocked thread. */ -extern inline unsigned long thread_saved_pc (struct thread_struct *t) -{ - struct pt_regs *r = (struct pt_regs *)(t->ksp + STATE_SAVE_PT_OFFSET); - /* Actually, we return the LP register, because the thread is - actually blocked in switch_thread, and we're interested in - the PC it will _return_ to. */ - return r->gpr[GPR_LP]; -} + +/* Return the registers saved during context-switch by the currently + not-running thread T. Note that this only includes some registers! + See entry.S for details. */ +#define thread_saved_regs(t) \ + ((struct pt_regs*)((t)->thread.ksp + STATE_SAVE_PT_OFFSET)) +/* Return saved (kernel) PC of a blocked thread. Actually, we return the + LP register, because the thread is actually blocked in switch_thread, + and we're interested in the PC it will _return_ to. */ +#define thread_saved_pc(t) (thread_saved_regs(t)->gpr[GPR_LP]) + unsigned long get_wchan (struct task_struct *p); diff -Nru a/include/asm-v850/ptrace.h b/include/asm-v850/ptrace.h --- a/include/asm-v850/ptrace.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/ptrace.h Thu Apr 3 14:56:33 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/ptrace.h -- Access to CPU registers * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -102,10 +102,19 @@ #define PT_CTBP ((NUM_GPRS + 4) * _PT_REG_SIZE) #define PT_KERNEL_MODE ((NUM_GPRS + 5) * _PT_REG_SIZE) -#define PT_SYSCALL PT_GPR(0) +/* Where the current syscall number is stashed; obviously only valid in + the kernel! */ +#define PT_CUR_SYSCALL PT_GPR(0) /* Size of struct pt_regs, including alignment. */ #define PT_SIZE ((NUM_GPRS + 6) * _PT_REG_SIZE) + + +/* These are `magic' values for PTRACE_PEEKUSR that return info about where + a process is located in memory. */ +#define PT_TEXT_ADDR (PT_SIZE + 1) +#define PT_TEXT_LEN (PT_SIZE + 2) +#define PT_DATA_ADDR (PT_SIZE + 3) #endif /* __V850_PTRACE_H__ */ diff -Nru a/include/asm-v850/rte_cb.h b/include/asm-v850/rte_cb.h --- a/include/asm-v850/rte_cb.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/rte_cb.h Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/rte_cb.h -- Midas labs RTE-CB series of evaluation boards * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -15,18 +15,6 @@ #define __V850_RTE_CB_H__ -/* CPU addresses of GBUS memory spaces. */ -#define GCS0_ADDR 0x05000000 /* GCS0 - Common SRAM (2MB) */ -#define GCS0_SIZE 0x00200000 /* 2MB */ -#define GCS1_ADDR 0x06000000 /* GCS1 - Flash ROM (8MB) */ -#define GCS1_SIZE 0x00800000 /* 8MB */ -#define GCS2_ADDR 0x07900000 /* GCS2 - I/O registers */ -#define GCS2_SIZE 0x00400000 /* 4MB */ -#define GCS5_ADDR 0x04000000 /* GCS5 - PCI bus space */ -#define GCS5_SIZE 0x01000000 /* 16MB */ -#define GCS6_ADDR 0x07980000 /* GCS6 - PCI control registers */ -#define GCS6_SIZE 0x00000200 /* 512B */ - /* The SRAM on the Mother-A motherboard. */ #define MB_A_SRAM_ADDR GCS0_ADDR #define MB_A_SRAM_SIZE 0x00200000 /* 2MB */ @@ -78,9 +66,8 @@ #ifndef __ASSEMBLY__ - +extern void rte_cb_early_init (void); extern void rte_cb_init_irqs (void); - #endif /* !__ASSEMBLY__ */ diff -Nru a/include/asm-v850/rte_ma1_cb.h b/include/asm-v850/rte_ma1_cb.h --- a/include/asm-v850/rte_ma1_cb.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/rte_ma1_cb.h Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/rte_ma1_cb.h -- Midas labs RTE-V850/MA1-CB board * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -15,6 +15,19 @@ #define __V850_RTE_MA1_CB_H__ #include /* Common defs for Midas RTE-CB boards. */ + + +/* CPU addresses of GBUS memory spaces. */ +#define GCS0_ADDR 0x05000000 /* GCS0 - Common SRAM (2MB) */ +#define GCS0_SIZE 0x00200000 /* 2MB */ +#define GCS1_ADDR 0x06000000 /* GCS1 - Flash ROM (8MB) */ +#define GCS1_SIZE 0x00800000 /* 8MB */ +#define GCS2_ADDR 0x07900000 /* GCS2 - I/O registers */ +#define GCS2_SIZE 0x00400000 /* 4MB */ +#define GCS5_ADDR 0x04000000 /* GCS5 - PCI bus space */ +#define GCS5_SIZE 0x01000000 /* 16MB */ +#define GCS6_ADDR 0x07980000 /* GCS6 - PCI control registers */ +#define GCS6_SIZE 0x00000200 /* 512B */ /* The GBUS GINT0 - GINT4 interrupts are connected to the INTP000 - INTP011 diff -Nru a/include/asm-v850/rte_nb85e_cb.h b/include/asm-v850/rte_nb85e_cb.h --- a/include/asm-v850/rte_nb85e_cb.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/rte_nb85e_cb.h Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/rte_nb85e_cb.h -- Midas labs RTE-V850/NB85E-CB board * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -16,6 +16,30 @@ #include /* Common defs for Midas RTE-CB boards. */ + +/* CPU addresses of GBUS memory spaces. */ +#define GCS0_ADDR 0x00400000 /* GCS0 - Common SRAM (2MB) */ +#define GCS0_SIZE 0x00400000 /* 4MB */ +#define GCS1_ADDR 0x02000000 /* GCS1 - Flash ROM (8MB) */ +#define GCS1_SIZE 0x00800000 /* 8MB */ +#define GCS2_ADDR 0x03900000 /* GCS2 - I/O registers */ +#define GCS2_SIZE 0x00080000 /* 512KB */ +#define GCS3_ADDR 0x02800000 /* GCS3 - EXT-bus: memory space */ +#define GCS3_SIZE 0x00800000 /* 8MB */ +#define GCS4_ADDR 0x03A00000 /* GCS4 - EXT-bus: I/O space */ +#define GCS4_SIZE 0x00200000 /* 2MB */ +#define GCS5_ADDR 0x00800000 /* GCS5 - PCI bus space */ +#define GCS5_SIZE 0x00800000 /* 8MB */ +#define GCS6_ADDR 0x03980000 /* GCS6 - PCI control registers */ +#define GCS6_SIZE 0x00010000 /* 64KB */ + + +/* The GBUS GINT0 - GINT3 interrupts are connected to CPU interrupts 10-12. + These are shared among the GBUS interrupts. */ +#define IRQ_GINT(n) (10 + (n)) +#define IRQ_GINT_NUM 3 + + #define PLATFORM "rte-v850e/nb85e-cb" #define PLATFORM_LONG "Midas lab RTE-V850E/NB85E-CB" @@ -41,13 +65,13 @@ /* The chip's real interrupt vectors are in ROM, but they jump to a secondary interrupt vector table in RAM. */ -#define INTV_BASE 0x004F8000 +#define INTV_BASE 0x03CF8000 /* Scratch memory used by the ROM monitor, which shouldn't be used by linux (except for the alternate interrupt vector area, defined above). */ #define MON_SCRATCH_ADDR 0x03CE8000 -#define MON_SCRATCH_SIZE 0x00008000 /* 32KB */ +#define MON_SCRATCH_SIZE 0x00018000 /* 96KB */ #endif /* CONFIG_ROM_KERNEL */ @@ -58,6 +82,27 @@ #define LED_ADDR(n) (0x03802000 + (n)) #define LED(n) (*(volatile unsigned char *)LED_ADDR(n)) #define LED_NUM_DIGITS 4 + + +/* Override the basic TEG UART pre-initialization so that we can + initialize extra stuff. */ +#undef NB85E_UART_PRE_CONFIGURE /* should be defined by */ +#define NB85E_UART_PRE_CONFIGURE rte_nb85e_cb_uart_pre_configure +#ifndef __ASSEMBLY__ +extern void rte_nb85e_cb_uart_pre_configure (unsigned chan, + unsigned cflags, unsigned baud); +#endif + +/* This board supports RTS/CTS for the on-chip UART. */ + +/* CTS is pin P00. */ +#define NB85E_UART_CTS(chan) (! (TEG_PORT0_IO & 0x1)) +/* RTS is pin P02. */ +#define NB85E_UART_SET_RTS(chan, val) \ + do { \ + unsigned old = TEG_PORT0_IO; \ + TEG_PORT0_IO = val ? (old & ~0x4) : (old | 0x4); \ + } while (0) #endif /* __V850_RTE_NB85E_CB_H__ */ diff -Nru a/include/asm-v850/system.h b/include/asm-v850/system.h --- a/include/asm-v850/system.h Mon Jan 13 19:20:49 2003 +++ b/include/asm-v850/system.h Thu Apr 3 14:57:06 2003 @@ -72,17 +72,10 @@ #define set_mb(var, value) set_rmb (var, value) #define set_wmb(var, value) do { var = value; wmb (); } while (0) -#ifdef CONFIG_SMP #define smp_mb() mb () #define smp_rmb() rmb () #define smp_wmb() wmb () #define smp_read_barrier_depends() read_barrier_depends() -#else -#define smp_mb() barrier () -#define smp_rmb() barrier () -#define smp_wmb() barrier () -#define smp_read_barrier_depends() ((void)0) -#endif #define xchg(ptr, with) \ ((__typeof__ (*(ptr)))__xchg ((unsigned long)(with), (ptr), sizeof (*(ptr)))) diff -Nru a/include/asm-v850/teg.h b/include/asm-v850/teg.h --- a/include/asm-v850/teg.h Fri Nov 1 08:38:12 2002 +++ b/include/asm-v850/teg.h Thu Apr 3 15:01:04 2003 @@ -1,8 +1,8 @@ /* - * include/asm-v850/nb85e_teg.h -- NB85E-TEG cpu chip + * include/asm-v850/teg.h -- NB85E-TEG cpu chip * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -11,33 +11,44 @@ * Written by Miles Bader */ -#ifndef __V850_NB85E_TEG_H__ -#define __V850_NB85E_TEG_H__ +#ifndef __V850_TEG_H__ +#define __V850_TEG_H__ -/* The NB85E_TEG uses the NB85E cpu core. */ + +/* The TEG uses the NB85E cpu core. */ #include +#include + + +#define CPU_MODEL "v850e/nb85e-teg" +#define CPU_MODEL_LONG "NEC V850E/NB85E TEG" -#define CHIP "v850e/nb85e-teg" -#define CHIP_LONG "NEC V850E/NB85E TEG" -/* Hardware-specific interrupt numbers (in the kernel IRQ namespace). */ -#define IRQ_INTOV(n) (n) /* 0-3 */ -#define IRQ_INTOV_NUM 4 -#define IRQ_INTCMD(n) (0x1c + (n)) /* interval timer interrupts 0-3 */ -#define IRQ_INTCMD_NUM 4 -#define IRQ_INTDMA(n) (0x20 + (n)) /* DMA interrupts 0-3 */ -#define IRQ_INTDMA_NUM 4 -#define IRQ_INTCSI(n) (0x24 + (n)) /* CSI 0-2 transmit/receive completion */ -#define IRQ_INTCSI_NUM 3 -#define IRQ_INTSER(n) (0x25 + (n)) /* UART 0-2 reception error */ -#define IRQ_INTSER_NUM 3 -#define IRQ_INTSR(n) (0x26 + (n)) /* UART 0-2 reception completion */ -#define IRQ_INTSR_NUM 3 -#define IRQ_INTST(n) (0x27 + (n)) /* UART 0-2 transmission completion */ -#define IRQ_INTST_NUM 3 +/* For */ +/* We use on-chip RAM, for a few miscellaneous variables that must be + accessible using a load instruction relative to R0. On the NB85E/TEG, + There's 60KB of iRAM starting at 0xFFFF0000, however we need the base + address to be addressable by a 16-bit signed offset, so we only use the + second half of it starting from 0xFFFF8000. */ +#define R0_RAM_ADDR 0xFFFF8000 + + +/* Hardware-specific interrupt numbers (in the kernel IRQ namespace). + Some of these are parameterized even though there's only a single + interrupt, for compatibility with some generic code that works on other + processor models. */ +#define IRQ_INTCMD(n) 6 /* interval timer interrupt */ +#define IRQ_INTCMD_NUM 1 +#define IRQ_INTSER(n) 16 /* UART reception error */ +#define IRQ_INTSER_NUM 1 +#define IRQ_INTSR(n) 17 /* UART reception completion */ +#define IRQ_INTSR_NUM 1 +#define IRQ_INTST(n) 18 /* UART transmission completion */ +#define IRQ_INTST_NUM 1 /* For */ -#define NUM_MACH_IRQS 0x30 +#define NUM_CPU_IRQS 64 + /* TEG UART details. */ #define NB85E_UART_BASE_ADDR(n) (0xFFFFF600 + 0x10 * (n)) @@ -50,9 +61,41 @@ #define NB85E_UART_RXB_ADDR(n) (NB85E_UART_BASE_ADDR(n) + 0xC) #define NB85E_UART_NUM_CHANNELS 1 #define NB85E_UART_BASE_FREQ CPU_CLOCK_FREQ +/* This is a function that gets called before configuring the UART. */ +#define NB85E_UART_PRE_CONFIGURE teg_uart_pre_configure +#ifndef __ASSEMBLY__ +extern void teg_uart_pre_configure (unsigned chan, + unsigned cflags, unsigned baud); +#endif + /* The TEG RTPU. */ #define NB85E_RTPU_BASE_ADDR 0xFFFFF210 -#endif /* __V850_NB85E_TEG_H__ */ +/* TEG series timer D details. */ +#define NB85E_TIMER_D_BASE_ADDR 0xFFFFF210 +#define NB85E_TIMER_D_TMCD_BASE_ADDR (NB85E_TIMER_D_BASE_ADDR + 0x0) +#define NB85E_TIMER_D_TMD_BASE_ADDR (NB85E_TIMER_D_BASE_ADDR + 0x4) +#define NB85E_TIMER_D_CMD_BASE_ADDR (NB85E_TIMER_D_BASE_ADDR + 0x8) +#define NB85E_TIMER_D_BASE_FREQ CPU_CLOCK_FREQ + + +/* `Interrupt Source Select' control register. */ +#define TEG_ISS_ADDR 0xFFFFF7FA +#define TEG_ISS (*(volatile u8 *)TEG_ISS_ADDR) + +/* Port 0 I/O register (bits 0-3 used). */ +#define TEG_PORT0_IO_ADDR 0xFFFFF7F2 +#define TEG_PORT0_IO (*(volatile u8 *)TEG_PORT0_IO_ADDR) +/* Port 0 control register (bits 0-3 control mode, 0 = output, 1 = input). */ +#define TEG_PORT0_PM_ADDR 0xFFFFF7F4 +#define TEG_PORT0_PM (*(volatile u8 *)TEG_PORT0_PM_ADDR) + + +#ifndef __ASSEMBLY__ +extern void teg_init_irqs (void); +#endif + + +#endif /* __V850_TEG_H__ */ diff -Nru a/include/asm-v850/unistd.h b/include/asm-v850/unistd.h --- a/include/asm-v850/unistd.h Tue Dec 17 00:23:49 2002 +++ b/include/asm-v850/unistd.h Thu Apr 3 14:58:04 2003 @@ -1,8 +1,8 @@ /* * include/asm-v850/unistd.h -- System call numbers and invocation mechanism * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -205,8 +205,6 @@ #define __NR_pivot_root 200 #define __NR_gettid 201 #define __NR_tkill 202 -/* #define __NR_mincore 203 */ -/* #define __NR_madvise 204 */ /* Syscall protocol: diff -Nru a/include/asm-x86_64/byteorder.h b/include/asm-x86_64/byteorder.h --- a/include/asm-x86_64/byteorder.h Thu Feb 7 02:55:27 2002 +++ b/include/asm-x86_64/byteorder.h Thu Apr 3 14:51:08 2003 @@ -17,7 +17,7 @@ return x; } -/* Do not define swab16. Gcc is smart enought to recognize "C" version and +/* Do not define swab16. Gcc is smart enough to recognize "C" version and convert it into rotation or exhange. */ #define __arch__swab32(x) ___arch__swab32(x) diff -Nru a/include/asm-x86_64/fixmap.h b/include/asm-x86_64/fixmap.h --- a/include/asm-x86_64/fixmap.h Sat Apr 20 11:09:46 2002 +++ b/include/asm-x86_64/fixmap.h Thu Apr 3 14:51:08 2003 @@ -66,7 +66,7 @@ /* * 'index to address' translation. If anyone tries to use the idx - * directly without tranlation, we catch the bug with a NULL-deference + * directly without translation, we catch the bug with a NULL-deference * kernel oops. Illegal ranges of incoming indices are caught too. */ extern inline unsigned long fix_to_virt(const unsigned int idx) diff -Nru a/include/asm-x86_64/mmzone.h b/include/asm-x86_64/mmzone.h --- a/include/asm-x86_64/mmzone.h Tue Jan 28 08:56:59 2003 +++ b/include/asm-x86_64/mmzone.h Thu Apr 3 14:51:08 2003 @@ -1,6 +1,6 @@ /* K8 NUMA support */ /* Copyright 2002,2003 by Andi Kleen, SuSE Labs */ -/* 2.5 Version losely based on the NUMAQ Code by Pat Gaughen. */ +/* 2.5 Version loosely based on the NUMAQ Code by Pat Gaughen. */ #ifndef _ASM_X86_64_MMZONE_H #define _ASM_X86_64_MMZONE_H 1 diff -Nru a/include/asm-x86_64/rwsem.h b/include/asm-x86_64/rwsem.h --- a/include/asm-x86_64/rwsem.h Tue Feb 25 02:49:20 2003 +++ b/include/asm-x86_64/rwsem.h Thu Apr 3 14:51:08 2003 @@ -26,7 +26,7 @@ * This should be totally fair - if anything is waiting, a process that wants a * lock will go to the back of the queue. When the currently active lock is * released, if there's a writer at the front of the queue, then that and only - * that will be woken up; if there's a bunch of consequtive readers at the + * that will be woken up; if there's a bunch of consecutive readers at the * front, then they'll all be woken up, but no other readers will be. */ diff -Nru a/include/asm-x86_64/system.h b/include/asm-x86_64/system.h --- a/include/asm-x86_64/system.h Sat Mar 22 13:46:17 2003 +++ b/include/asm-x86_64/system.h Thu Apr 3 14:51:08 2003 @@ -40,7 +40,7 @@ /* It would be more efficient to let the compiler clobber most of these registers. Clobbering all is not possible because that lets reload freak out. Even just clobbering six generates wrong code with gcc 3.1 for me so do it this way for now. - rbp needs to be always explicitely saved because gcc cannot clobber the + rbp needs to be always explicitly saved because gcc cannot clobber the frame pointer and the scheduler is compiled with frame pointers. -AK */ #define SAVE_CONTEXT \ __PUSH(rsi) __PUSH(rdi) \ diff -Nru a/include/linux/agp_backend.h b/include/linux/agp_backend.h --- a/include/linux/agp_backend.h Thu Feb 27 13:12:38 2003 +++ b/include/linux/agp_backend.h Wed Apr 9 15:56:26 2003 @@ -53,7 +53,7 @@ INTEL_I850, INTEL_I860, INTEL_460GX, - INTEL_I7505, + INTEL_E7505, VIA_GENERIC, SIS_GENERIC, AMD_GENERIC, diff -Nru a/include/linux/compatmac.h b/include/linux/compatmac.h --- a/include/linux/compatmac.h Tue Oct 1 09:42:47 2002 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,160 +0,0 @@ - /* - * This header tries to allow you to write 2.3-compatible drivers, - * but (using this header) still allows you to run them on 2.2 and - * 2.0 kernels. - * - * Sometimes, a #define replaces a "construct" that older kernels - * had. For example, - * - * DECLARE_MUTEX(name); - * - * replaces the older - * - * struct semaphore name = MUTEX; - * - * This file then declares the DECLARE_MUTEX macro to compile into the - * older version. - * - * In some cases, a macro or function changes the number of arguments. - * In that case, there is nothing we can do except define an access - * macro that provides the same functionality on both versions of Linux. - * - * This is the case for example with the "get_user" macro 2.0 kernels use: - * - * a = get_user (b); - * - * while newer kernels use - * - * get_user (a,b); - * - * This is unfortunate. We therefore define "Get_user (a,b)" which looks - * almost the same as the 2.2+ construct, and translates into the - * appropriate sequence for earlier constructs. - * - * Supported by this file are the 2.0 kernels, 2.2 kernels, and the - * most recent 2.3 kernel. 2.3 support will be dropped as soon when 2.4 - * comes out. 2.0 support may someday be dropped. But then again, maybe - * not. - * - * I'll try to maintain this, provided that Linus agrees with the setup. - * Feel free to mail updates or suggestions. - * - * -- R.E.Wolff@BitWizard.nl - * - */ - -#ifndef COMPATMAC_H -#define COMPATMAC_H - -#include - -#if LINUX_VERSION_CODE < 0x020100 /* Less than 2.1.0 */ -#define TWO_ZERO -#else -#if LINUX_VERSION_CODE < 0x020200 /* less than 2.2.x */ -#warning "Please use a 2.2.x kernel. " -#else -#if LINUX_VERSION_CODE < 0x020300 /* less than 2.3.x */ -#define TWO_TWO -#else -#define TWO_THREE -#endif -#endif -#endif - -#ifdef TWO_ZERO - -/* Here is the section that makes the 2.2 compatible driver source - work for 2.0 too! We mostly try to adopt the "new thingies" from 2.2, - and provide for compatibility stuff here if possible. */ - -/* Some 200 days (on intel) */ -#define MAX_SCHEDULE_TIMEOUT ((long)(~0UL>>1)) - -#include - -#define Get_user(a,b) a = get_user(b) -#define Put_user(a,b) 0,put_user(a,b) -#define copy_to_user(a,b,c) memcpy_tofs(a,b,c) - -static inline int copy_from_user(void *to,const void *from, int c) -{ - memcpy_fromfs(to, from, c); - return 0; -} - -#define pci_present pcibios_present -#define pci_read_config_word pcibios_read_config_word -#define pci_read_config_dword pcibios_read_config_dword - -static inline unsigned char get_irq (unsigned char bus, unsigned char fn) -{ - unsigned char t; - pcibios_read_config_byte (bus, fn, PCI_INTERRUPT_LINE, &t); - return t; -} - -static inline void *ioremap(unsigned long base, long length) -{ - if (base < 0x100000) return (void *)base; - return vremap (base, length); -} - -#define my_iounmap(x, b) (((long)x<0x100000)?0:vfree ((void*)x)) - -#define tty_flip_buffer_push(tty) schedule_delayed_work(&tty->flip.work, 1) -#define signal_pending(current) (current->signal & ~current->blocked) -#define schedule_timeout(to) do {current->timeout = jiffies + (to);schedule ();} while (0) -#define time_after(t1,t2) (((long)t1-t2) > 0) - - -#define test_and_set_bit(nr, addr) set_bit(nr, addr) -#define test_and_clear_bit(nr, addr) clear_bit(nr, addr) - -/* Not yet implemented on 2.0 */ -#define ASYNC_SPD_SHI -1 -#define ASYNC_SPD_WARP -1 - - -/* Ugly hack: the driver_name doesn't exist in 2.0.x . So we define it - to the "name" field that does exist. As long as the assignments are - done in the right order, there is nothing to worry about. */ -#define driver_name name - -/* Should be in a header somewhere. They are in tty.h on 2.2 */ -#define TTY_HW_COOK_OUT 14 /* Flag to tell ntty what we can handle */ -#define TTY_HW_COOK_IN 15 /* in hardware - output and input */ - -/* The return type of a "close" routine. */ -#define INT void -#define NO_ERROR /* Nothing */ - -#else - -/* The 2.2.x compatibility section. */ -#include - - -#define Get_user(a,b) get_user(a,b) -#define Put_user(a,b) put_user(a,b) -#define get_irq(pdev) pdev->irq - -#define INT int -#define NO_ERROR 0 - -#define my_iounmap(x,b) (iounmap((char *)(b))) - -#endif - -#ifndef TWO_THREE -/* These are new in 2.3. The source now uses 2.3 syntax, and here is - the compatibility define... */ -#define wait_queue_head_t struct wait_queue * -#define DECLARE_MUTEX(name) struct semaphore name = MUTEX -#define DECLARE_WAITQUEUE(wait, current) \ - struct wait_queue wait = { current, NULL } - -#endif - - -#endif diff -Nru a/include/linux/compiler.h b/include/linux/compiler.h --- a/include/linux/compiler.h Mon Mar 10 22:34:24 2003 +++ b/include/linux/compiler.h Wed Apr 9 11:15:46 2003 @@ -1,6 +1,14 @@ #ifndef __LINUX_COMPILER_H #define __LINUX_COMPILER_H +#ifdef __CHECKER__ + #define __user __attribute__((noderef, address_space(1))) + #define __kernel /* default address space */ +#else + #define __user + #define __kernel +#endif + #if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) #define inline __inline__ __attribute__((always_inline)) #define __inline__ __inline__ __attribute__((always_inline)) diff -Nru a/include/linux/dvb/audio.h b/include/linux/dvb/audio.h --- a/include/linux/dvb/audio.h Tue Oct 22 07:46:21 2002 +++ b/include/linux/dvb/audio.h Mon Apr 7 13:17:58 2003 @@ -47,10 +47,17 @@ typedef enum { AUDIO_STEREO, AUDIO_MONO_LEFT, - AUDIO_MONO_RIGHT, + AUDIO_MONO_RIGHT } audio_channel_select_t; +typedef struct audio_mixer { + unsigned int volume_left; + unsigned int volume_right; + // what else do we need? bass, pass-through, ... +} audio_mixer_t; + + typedef struct audio_status { int AV_sync_state; /* sync audio and video? */ int mute_state; /* audio is muted */ @@ -58,14 +65,8 @@ audio_stream_source_t stream_source; /* current stream source */ audio_channel_select_t channel_select; /* currently selected channel */ int bypass_mode; /* pass on audio data to */ + audio_mixer_t mixer_state; /* current mixer state */ } audio_status_t; /* separate decoder hardware */ - - -typedef struct audio_mixer { - unsigned int volume_left; - unsigned int volume_right; - // what else do we need? bass, pass-through, ... -} audio_mixer_t; typedef diff -Nru a/include/linux/dvb/ca.h b/include/linux/dvb/ca.h --- a/include/linux/dvb/ca.h Tue Nov 12 17:26:51 2002 +++ b/include/linux/dvb/ca.h Mon Apr 7 13:17:58 2003 @@ -21,8 +21,8 @@ * */ -#ifndef _CA_H_ -#define _CA_H_ +#ifndef _DVBCA_H_ +#define _DVBCA_H_ /* slot interface types and info */ @@ -33,6 +33,7 @@ #define CA_CI 1 /* CI high level interface */ #define CA_CI_LINK 2 /* CI link layer level interface */ #define CA_CI_PHYS 4 /* CI physical layer level interface */ +#define CA_DESCR 8 /* built-in descrambler */ #define CA_SC 128 /* simple smart card interface */ unsigned int flags; @@ -44,7 +45,7 @@ /* descrambler types and info */ typedef struct ca_descr_info { - unsigned int num; /* number of available descramblers (keys) */ + unsigned int num; /* number of available descramblers (keys) */ unsigned int type; /* type of supported scrambling system */ #define CA_ECD 1 #define CA_NDS 2 @@ -59,19 +60,24 @@ } ca_caps_t; /* a message to/from a CI-CAM */ -typedef struct ca_msg { - unsigned int index; +typedef struct ca_msg { + unsigned int index; unsigned int type; unsigned int length; unsigned char msg[256]; } ca_msg_t; typedef struct ca_descr { - unsigned int index; - unsigned int parity; + unsigned int index; + unsigned int parity; /* 0 == even, 1 == odd */ unsigned char cw[8]; } ca_descr_t; +typedef struct ca_pid { + unsigned int pid; + int index; /* -1 == disable*/ +} ca_pid_t; + #define CA_RESET _IO('o', 128) #define CA_GET_CAP _IOR('o', 129, ca_caps_t) #define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t) @@ -79,6 +85,7 @@ #define CA_GET_MSG _IOR('o', 132, ca_msg_t) #define CA_SEND_MSG _IOW('o', 133, ca_msg_t) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t) +#define CA_SET_PID _IOW('o', 135, ca_pid_t) #endif diff -Nru a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h --- a/include/linux/dvb/dmx.h Tue Oct 22 07:46:21 2002 +++ b/include/linux/dvb/dmx.h Mon Apr 7 13:17:58 2003 @@ -21,13 +21,14 @@ * */ -#ifndef _DMX_H_ -#define _DMX_H_ +#ifndef _DVBDMX_H_ +#define _DVBDMX_H_ #ifdef __KERNEL__ #include #else #include +#include #endif #define DMX_FILTER_SIZE 16 @@ -154,9 +155,15 @@ DMX_SOURCE_DVR0 = 16, DMX_SOURCE_DVR1, DMX_SOURCE_DVR2, - DMX_SOURCE_DVR3, + DMX_SOURCE_DVR3 } dmx_source_t; +struct dmx_stc { + unsigned int num; /* input : which STC? 0..N */ + unsigned int base; /* output: divisor for stc to get 90 kHz clock */ + uint64_t stc; /* output: stc in 'base'*90 kHz units */ +}; + #define DMX_START _IO('o',41) #define DMX_STOP _IO('o',42) @@ -164,9 +171,10 @@ #define DMX_SET_PES_FILTER _IOW('o',44,struct dmx_pes_filter_params) #define DMX_SET_BUFFER_SIZE _IO('o',45) #define DMX_GET_EVENT _IOR('o',46,struct dmx_event) -#define DMX_GET_PES_PIDS _IOR('o',47,uint16_t) +#define DMX_GET_PES_PIDS _IOR('o',47,uint16_t[5]) #define DMX_GET_CAPS _IOR('o',48,dmx_caps_t) #define DMX_SET_SOURCE _IOW('o',49,dmx_source_t) +#define DMX_GET_STC _IOWR('o',50,struct dmx_stc) -#endif /*_DMX_H_*/ +#endif /*_DVBDMX_H_*/ diff -Nru a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h --- a/include/linux/dvb/frontend.h Tue Oct 22 07:46:21 2002 +++ b/include/linux/dvb/frontend.h Mon Apr 7 13:17:58 2003 @@ -23,8 +23,8 @@ * */ -#ifndef _FRONTEND_H_ -#define _FRONTEND_H_ +#ifndef _DVBFRONTEND_H_ +#define _DVBFRONTEND_H_ #ifdef __KERNEL__ #include @@ -33,14 +33,14 @@ #endif -typedef enum { +typedef enum fe_type { FE_QPSK, FE_QAM, FE_OFDM } fe_type_t; -typedef enum { +typedef enum fe_caps { FE_IS_STUPID = 0, FE_CAN_INVERSION_AUTO = 0x1, FE_CAN_FEC_1_2 = 0x2, @@ -63,6 +63,8 @@ FE_CAN_BANDWIDTH_AUTO = 0x40000, FE_CAN_GUARD_INTERVAL_AUTO = 0x80000, FE_CAN_HIERARCHY_AUTO = 0x100000, + FE_CAN_RECOVER = 0x20000000, + FE_CAN_CLEAN_SETUP = 0x40000000, FE_CAN_MUTE_TS = 0x80000000 } fe_caps_t; @@ -99,25 +101,25 @@ }; /* errorcode when no message was received */ -typedef enum { +typedef enum fe_sec_voltage { SEC_VOLTAGE_13, SEC_VOLTAGE_18 } fe_sec_voltage_t; -typedef enum { +typedef enum fe_sec_tone_mode { SEC_TONE_ON, SEC_TONE_OFF } fe_sec_tone_mode_t; -typedef enum { +typedef enum fe_sec_mini_cmd { SEC_MINI_A, SEC_MINI_B } fe_sec_mini_cmd_t; -typedef enum { +typedef enum fe_status { FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ FE_HAS_CARRIER = 0x02, /* found a DVB signal */ FE_HAS_VITERBI = 0x04, /* FEC is stable */ @@ -125,17 +127,17 @@ FE_HAS_LOCK = 0x10, /* everything's working... */ FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ FE_REINIT = 0x40 /* frontend was reinitialized, */ -} fe_status_t; /* application is recommned to reset */ +} fe_status_t; /* application is recommended to reset */ /* DiSEqC, tone and parameters */ -typedef enum { +typedef enum fe_spectral_inversion { INVERSION_OFF, INVERSION_ON, INVERSION_AUTO } fe_spectral_inversion_t; -typedef enum { +typedef enum fe_code_rate { FEC_NONE = 0, FEC_1_2, FEC_2_3, @@ -149,7 +151,7 @@ } fe_code_rate_t; -typedef enum { +typedef enum fe_modulation { QPSK, QAM_16, QAM_32, @@ -160,13 +162,13 @@ } fe_modulation_t; -typedef enum { +typedef enum fe_transmit_mode { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO } fe_transmit_mode_t; -typedef enum { +typedef enum fe_bandwidth { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, @@ -174,7 +176,7 @@ } fe_bandwidth_t; -typedef enum { +typedef enum fe_guard_interval { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, @@ -183,7 +185,7 @@ } fe_guard_interval_t; -typedef enum { +typedef enum fe_hierarchy { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, @@ -257,5 +259,5 @@ #define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event) -#endif /*_FRONTEND_H_*/ +#endif /*_DVBFRONTEND_H_*/ diff -Nru a/include/linux/dvb/net.h b/include/linux/dvb/net.h --- a/include/linux/dvb/net.h Tue Oct 22 07:46:21 2002 +++ b/include/linux/dvb/net.h Mon Apr 7 13:17:58 2003 @@ -39,6 +39,7 @@ #define NET_ADD_IF _IOWR('o', 52, struct dvb_net_if) #define NET_REMOVE_IF _IO('o', 53) +#define NET_GET_IF _IOWR('o', 54, struct dvb_net_if) #endif /*_DVBNET_H_*/ diff -Nru a/include/linux/dvb/osd.h b/include/linux/dvb/osd.h --- a/include/linux/dvb/osd.h Tue Nov 12 17:26:51 2002 +++ b/include/linux/dvb/osd.h Mon Apr 7 13:17:58 2003 @@ -25,83 +25,83 @@ #define _DVBOSD_H_ typedef enum { - // All functions return -2 on "not open" + // All functions return -2 on "not open" OSD_Close=1, // () - // Disables OSD and releases the buffers - // returns 0 on success - OSD_Open, // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0)) - // Opens OSD with this size and bit depth - // returns 0 on success, -1 on DRAM allocation error, -2 on "already open" - OSD_Show, // () - // enables OSD mode - // returns 0 on success - OSD_Hide, // () - // disables OSD mode - // returns 0 on success - OSD_Clear, // () - // Sets all pixel to color 0 - // returns 0 on success - OSD_Fill, // (color) - // Sets all pixel to color - // returns 0 on success - OSD_SetColor, // (color,R{x0},G{y0},B{x1},opacity{y1}) - // set palette entry to , and apply - // R,G,B: 0..255 - // R=Red, G=Green, B=Blue - // opacity=0: pixel opacity 0% (only video pixel shows) - // opacity=1..254: pixel opacity as specified in header - // opacity=255: pixel opacity 100% (only OSD pixel shows) - // returns 0 on success, -1 on error - OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data) - // Set a number of entries in the palette - // sets the entries "firstcolor" through "lastcolor" from the array "data" - // data has 4 byte for each color: - // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel - OSD_SetTrans, // (transparency{color}) - // Sets transparency of mixed pixel (0..15) - // returns 0 on success - OSD_SetPixel, // (x0,y0,color) - // sets pixel , to color number - // returns 0 on success, -1 on error - OSD_GetPixel, // (x0,y0) - // returns color number of pixel ,, or -1 - OSD_SetRow, // (x0,y0,x1,data) - // fills pixels x0,y through x1,y with the content of data[] - // returns 0 on success, -1 on clipping all pixel (no pixel drawn) - OSD_SetBlock, // (x0,y0,x1,y1,increment{color},data) - // fills pixels x0,y0 through x1,y1 with the content of data[] - // inc contains the width of one line in the data block, - // inc<=0 uses blockwidth as linewidth - // returns 0 on success, -1 on clipping all pixel - OSD_FillRow, // (x0,y0,x1,color) - // fills pixels x0,y through x1,y with the color - // returns 0 on success, -1 on clipping all pixel - OSD_FillBlock, // (x0,y0,x1,y1,color) - // fills pixels x0,y0 through x1,y1 with the color - // returns 0 on success, -1 on clipping all pixel - OSD_Line, // (x0,y0,x1,y1,color) - // draw a line from x0,y0 to x1,y1 with the color - // returns 0 on success - OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11 - // fills parameters with the picture dimensions and the pixel aspect ratio - // returns 0 on success - OSD_Test, // () - // draws a test picture. for debugging purposes only - // returns 0 on success + // Disables OSD and releases the buffers + // returns 0 on success + OSD_Open, // (x0,y0,x1,y1,BitPerPixel[2/4/8](color&0x0F),mix[0..15](color&0xF0)) + // Opens OSD with this size and bit depth + // returns 0 on success, -1 on DRAM allocation error, -2 on "already open" + OSD_Show, // () + // enables OSD mode + // returns 0 on success + OSD_Hide, // () + // disables OSD mode + // returns 0 on success + OSD_Clear, // () + // Sets all pixel to color 0 + // returns 0 on success + OSD_Fill, // (color) + // Sets all pixel to color + // returns 0 on success + OSD_SetColor, // (color,R{x0},G{y0},B{x1},opacity{y1}) + // set palette entry to , and apply + // R,G,B: 0..255 + // R=Red, G=Green, B=Blue + // opacity=0: pixel opacity 0% (only video pixel shows) + // opacity=1..254: pixel opacity as specified in header + // opacity=255: pixel opacity 100% (only OSD pixel shows) + // returns 0 on success, -1 on error + OSD_SetPalette, // (firstcolor{color},lastcolor{x0},data) + // Set a number of entries in the palette + // sets the entries "firstcolor" through "lastcolor" from the array "data" + // data has 4 byte for each color: + // R,G,B, and a opacity value: 0->transparent, 1..254->mix, 255->pixel + OSD_SetTrans, // (transparency{color}) + // Sets transparency of mixed pixel (0..15) + // returns 0 on success + OSD_SetPixel, // (x0,y0,color) + // sets pixel , to color number + // returns 0 on success, -1 on error + OSD_GetPixel, // (x0,y0) + // returns color number of pixel ,, or -1 + OSD_SetRow, // (x0,y0,x1,data) + // fills pixels x0,y through x1,y with the content of data[] + // returns 0 on success, -1 on clipping all pixel (no pixel drawn) + OSD_SetBlock, // (x0,y0,x1,y1,increment{color},data) + // fills pixels x0,y0 through x1,y1 with the content of data[] + // inc contains the width of one line in the data block, + // inc<=0 uses blockwidth as linewidth + // returns 0 on success, -1 on clipping all pixel + OSD_FillRow, // (x0,y0,x1,color) + // fills pixels x0,y through x1,y with the color + // returns 0 on success, -1 on clipping all pixel + OSD_FillBlock, // (x0,y0,x1,y1,color) + // fills pixels x0,y0 through x1,y1 with the color + // returns 0 on success, -1 on clipping all pixel + OSD_Line, // (x0,y0,x1,y1,color) + // draw a line from x0,y0 to x1,y1 with the color + // returns 0 on success + OSD_Query, // (x0,y0,x1,y1,xasp{color}}), yasp=11 + // fills parameters with the picture dimensions and the pixel aspect ratio + // returns 0 on success + OSD_Test, // () + // draws a test picture. for debugging purposes only + // returns 0 on success // TODO: remove "test" in final version - OSD_Text, // (x0,y0,size,color,text) - OSD_SetWindow, // (x0) set window with number 0 #else #include +#include #endif diff -Nru a/include/linux/fdreg.h b/include/linux/fdreg.h --- a/include/linux/fdreg.h Tue Feb 5 09:39:39 2002 +++ b/include/linux/fdreg.h Fri Feb 14 15:32:43 2003 @@ -7,8 +7,12 @@ */ #ifdef FDPATCHES - #define FD_IOPORT fdc_state[fdc].address +#else +/* It would be a lot saner just to force fdc_state[fdc].address to always + be set ! FIXME */ +#define FD_IOPORT 0x3f0 +#endif /* Fd controller regs. S&C, about page 340 */ #define FD_STATUS (4 + FD_IOPORT ) @@ -22,16 +26,6 @@ /* Diskette Control Register (write)*/ #define FD_DCR (7 + FD_IOPORT ) - -#else - -#define FD_STATUS 0x3f4 -#define FD_DATA 0x3f5 -#define FD_DOR 0x3f2 /* Digital Output Register */ -#define FD_DIR 0x3f7 /* Digital Input Register (read) */ -#define FD_DCR 0x3f7 /* Diskette Control Register (write)*/ - -#endif /* Bits of main status register */ #define STATUS_BUSYMASK 0x0F /* drive busy mask */ diff -Nru a/include/linux/fs.h b/include/linux/fs.h --- a/include/linux/fs.h Wed Apr 2 22:51:32 2003 +++ b/include/linux/fs.h Wed Apr 9 22:21:50 2003 @@ -313,7 +313,7 @@ struct address_space { struct inode *host; /* owner: inode, block_device */ struct radix_tree_root page_tree; /* radix tree of all pages */ - rwlock_t page_lock; /* and rwlock protecting it */ + spinlock_t page_lock; /* and rwlock protecting it */ struct list_head clean_pages; /* list of clean pages */ struct list_head dirty_pages; /* list of dirty pages */ struct list_head locked_pages; /* list of locked pages */ @@ -321,8 +321,8 @@ unsigned long nrpages; /* number of total pages */ struct address_space_operations *a_ops; /* methods */ struct list_head i_mmap; /* list of private mappings */ - struct list_head i_mmap_shared; /* list of private mappings */ - struct semaphore i_shared_sem; /* and sem protecting it */ + struct list_head i_mmap_shared; /* list of shared mappings */ + struct semaphore i_shared_sem; /* protect both above lists */ unsigned long dirtied_when; /* jiffies of first page dirtying */ int gfp_mask; /* how to allocate the pages */ struct backing_dev_info *backing_dev_info; /* device readahead, etc */ @@ -705,10 +705,10 @@ struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); - ssize_t (*read) (struct file *, char *, size_t, loff_t *); - ssize_t (*aio_read) (struct kiocb *, char *, size_t, loff_t); - ssize_t (*write) (struct file *, const char *, size_t, loff_t *); - ssize_t (*aio_write) (struct kiocb *, const char *, size_t, loff_t); + ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); + ssize_t (*aio_read) (struct kiocb *, char __user *, size_t, loff_t); + ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); + ssize_t (*aio_write) (struct kiocb *, const char __user *, size_t, loff_t); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); @@ -738,7 +738,7 @@ int (*mknod) (struct inode *,struct dentry *,int,dev_t); int (*rename) (struct inode *, struct dentry *, struct inode *, struct dentry *); - int (*readlink) (struct dentry *, char *,int); + int (*readlink) (struct dentry *, char __user *,int); int (*follow_link) (struct dentry *, struct nameidata *); void (*truncate) (struct inode *); int (*permission) (struct inode *, int); @@ -1024,7 +1024,7 @@ extern struct file *filp_open(const char *, int, int); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int); extern int filp_close(struct file *, fl_owner_t id); -extern char * getname(const char *); +extern char * getname(const char __user *); /* fs/dcache.c */ extern void vfs_caches_init(unsigned long); diff -Nru a/include/linux/hdreg.h b/include/linux/hdreg.h --- a/include/linux/hdreg.h Tue Oct 22 07:24:07 2002 +++ b/include/linux/hdreg.h Sun Apr 6 10:37:04 2003 @@ -355,7 +355,7 @@ #define SETFEATURES_DIS_MSN 0x31 /* Disable Media Status Notification */ #define SETFEATURES_DIS_RETRY 0x33 /* Disable Retry */ #define SETFEATURES_EN_AAM 0x42 /* Enable Automatic Acoustic Management */ -#define SETFEATURES_RW_LONG 0x44 /* Set Lenght of VS bytes */ +#define SETFEATURES_RW_LONG 0x44 /* Set Length of VS bytes */ #define SETFEATURES_SET_CACHE 0x54 /* Set Cache segments to SC Reg. Val */ #define SETFEATURES_DIS_RLA 0x55 /* Disable read look-ahead feature */ #define SETFEATURES_EN_RI 0x5D /* Enable release interrupt */ diff -Nru a/include/linux/irda.h b/include/linux/irda.h --- a/include/linux/irda.h Fri Jun 14 15:43:30 2002 +++ b/include/linux/irda.h Sun Apr 6 06:03:54 2003 @@ -25,6 +25,8 @@ #ifndef KERNEL_IRDA_H #define KERNEL_IRDA_H +#include /* only for sa_family_t */ + /* Hint bit positions for first hint byte */ #define HINT_PNP 0x01 #define HINT_PDA 0x02 diff -Nru a/include/linux/jbd.h b/include/linux/jbd.h --- a/include/linux/jbd.h Wed Apr 2 22:51:44 2003 +++ b/include/linux/jbd.h Thu Apr 3 19:49:43 2003 @@ -274,8 +274,9 @@ #define __journal_expect(expr, why...) \ do { \ if (!(expr)) { \ - printk(KERN_ERR "EXT3-fs unexpected failure: %s;\n", # expr); \ - printk(KERN_ERR ## why); \ + printk(KERN_ERR \ + "EXT3-fs unexpected failure: %s;\n",# expr); \ + printk(KERN_ERR why); \ } \ } while (0) #define J_EXPECT(expr, why...) __journal_expect(expr, ## why) diff -Nru a/include/linux/kernel.h b/include/linux/kernel.h --- a/include/linux/kernel.h Wed Mar 5 21:21:32 2003 +++ b/include/linux/kernel.h Wed Apr 9 01:01:38 2003 @@ -104,6 +104,7 @@ extern void bust_spinlocks(int yes); extern int oops_in_progress; /* If set, an oops, panic(), BUG() or die() is in progress */ +extern int panic_on_oops; extern int tainted; extern const char *print_tainted(void); diff -Nru a/include/linux/mm.h b/include/linux/mm.h --- a/include/linux/mm.h Sun Mar 23 01:40:11 2003 +++ b/include/linux/mm.h Tue Apr 8 02:03:24 2003 @@ -231,8 +231,8 @@ static inline void put_page(struct page *page) { if (PageCompound(page)) { + page = (struct page *)page->lru.next; if (put_page_testzero(page)) { - page = (struct page *)page->lru.next; if (page->lru.prev) { /* destructor? */ (*(void (*)(struct page *))page->lru.prev)(page); } else { diff -Nru a/include/linux/mtd/compatmac.h b/include/linux/mtd/compatmac.h --- a/include/linux/mtd/compatmac.h Mon Mar 31 14:29:49 2003 +++ b/include/linux/mtd/compatmac.h Thu Apr 3 15:03:46 2003 @@ -17,7 +17,6 @@ #ifndef __LINUX_MTD_COMPATMAC_H__ #define __LINUX_MTD_COMPATMAC_H__ -#include #include /* used later in this header */ #include #ifndef LINUX_VERSION_CODE diff -Nru a/include/linux/namei.h b/include/linux/namei.h --- a/include/linux/namei.h Fri Feb 14 18:23:59 2003 +++ b/include/linux/namei.h Wed Apr 9 11:44:15 2003 @@ -33,7 +33,7 @@ #define LOOKUP_NOALT 32 -extern int FASTCALL(__user_walk(const char *, unsigned, struct nameidata *)); +extern int FASTCALL(__user_walk(const char __user *, unsigned, struct nameidata *)); #define user_path_walk(name,nd) \ __user_walk(name, LOOKUP_FOLLOW, nd) #define user_path_walk_link(name,nd) \ diff -Nru a/include/linux/net.h b/include/linux/net.h --- a/include/linux/net.h Thu Apr 3 06:08:19 2003 +++ b/include/linux/net.h Sun Apr 6 06:03:54 2003 @@ -19,7 +19,6 @@ #define _LINUX_NET_H #include -#include #include struct poll_table_struct; @@ -88,6 +87,8 @@ struct vm_area_struct; struct page; struct kiocb; +struct sockaddr; +struct msghdr; struct proto_ops { int family; @@ -135,6 +136,8 @@ short encryption; short encrypt_net; }; + +struct iovec; extern int sock_wake_async(struct socket *sk, int how, int band); extern int sock_register(struct net_proto_family *fam); diff -Nru a/include/linux/netlink.h b/include/linux/netlink.h --- a/include/linux/netlink.h Mon Nov 18 15:40:15 2002 +++ b/include/linux/netlink.h Sun Apr 6 06:03:54 2003 @@ -1,6 +1,8 @@ #ifndef __LINUX_NETLINK_H #define __LINUX_NETLINK_H +#include /* for sa_family_t */ + #define NETLINK_ROUTE 0 /* Routing/device hook */ #define NETLINK_SKIP 1 /* Reserved for ENskip */ #define NETLINK_USERSOCK 2 /* Reserved for user mode socket protocols */ diff -Nru a/include/linux/nfs4.h b/include/linux/nfs4.h --- a/include/linux/nfs4.h Tue Dec 17 06:27:47 2002 +++ b/include/linux/nfs4.h Mon Apr 7 15:30:14 2003 @@ -206,6 +206,10 @@ NFSPROC4_CLNT_READ, NFSPROC4_CLNT_WRITE, NFSPROC4_CLNT_COMMIT, + NFSPROC4_CLNT_OPEN, + NFSPROC4_CLNT_OPEN_CONFIRM, + NFSPROC4_CLNT_CLOSE, + NFSPROC4_CLNT_SETATTR, }; #endif diff -Nru a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h --- a/include/linux/nfs_fs.h Fri Dec 20 22:29:02 2002 +++ b/include/linux/nfs_fs.h Mon Apr 7 15:27:32 2003 @@ -155,6 +155,13 @@ wait_queue_head_t nfs_i_wait; +#ifdef CONFIG_NFS_V4 + /* NFSv4 state */ + struct nfs4_shareowner *ro_owner; + struct nfs4_shareowner *wo_owner; + struct nfs4_shareowner *rw_owner; +#endif /* CONFIG_NFS_V4*/ + struct inode vfs_inode; }; @@ -435,28 +442,75 @@ #define NFS_JUKEBOX_RETRY_TIME (5 * HZ) #ifdef CONFIG_NFS_V4 + +/* + * In a seqid-mutating op, this macro controls which error return + * values trigger incrementation of the seqid. + * + * from rfc 3010: + * The client MUST monotonically increment the sequence number for the + * CLOSE, LOCK, LOCKU, OPEN, OPEN_CONFIRM, and OPEN_DOWNGRADE + * operations. This is true even in the event that the previous + * operation that used the sequence number received an error. The only + * exception to this rule is if the previous operation received one of + * the following errors: NFSERR_STALE_CLIENTID, NFSERR_STALE_STATEID, + * NFSERR_BAD_STATEID, NFSERR_BAD_SEQID, NFSERR_BADXDR, + * NFSERR_RESOURCE, NFSERR_NOFILEHANDLE. + * + */ +#define seqid_mutating_err(err) \ +(((err) != NFSERR_STALE_CLIENTID) && \ + ((err) != NFSERR_STALE_STATEID) && \ + ((err) != NFSERR_BAD_STATEID) && \ + ((err) != NFSERR_BAD_SEQID) && \ + ((err) != NFSERR_BAD_XDR) && \ + ((err) != NFSERR_RESOURCE) && \ + ((err) != NFSERR_NOFILEHANDLE)) + struct nfs4_client { - atomic_t cl_count; /* refcount */ u64 cl_clientid; /* constant */ - nfs4_verifier cl_confirm; + nfs4_verifier cl_confirm; + + u32 cl_lockowner_id; +}; - /* - * Starts a list of lockowners, linked through lo_list. - */ - struct list_head cl_lockowners; /* protected by state_spinlock */ +/* +* The ->so_sema is held during all shareowner seqid-mutating operations: +* OPEN, OPEN_DOWNGRADE, and CLOSE. +* Its purpose is to properly serialize so_seqid, as mandated by +* the protocol. +*/ +struct nfs4_shareowner { + u32 so_id; /* 32-bit identifier, unique */ + struct semaphore so_sema; + u32 so_seqid; /* protected by so_sema */ + nfs4_stateid so_stateid; /* protected by so_sema */ + unsigned int so_flags; /* protected by so_sema */ }; + /* nfs4proc.c */ extern int nfs4_proc_renew(struct nfs_server *server); +extern int nfs4_do_close(struct inode *inode, struct nfs4_shareowner *sp); /* nfs4renewd.c */ extern int nfs4_init_renewd(struct nfs_server *server); -#endif /* CONFIG_NFS_V4 */ - -#ifdef CONFIG_NFS_V4 +/* nfs4state.c */ extern struct nfs4_client *nfs4_get_client(void); extern void nfs4_put_client(struct nfs4_client *clp); +extern struct nfs4_shareowner * nfs4_get_shareowner(struct inode *inode); +void nfs4_put_shareowner(struct inode *inode, struct nfs4_shareowner *sp); +extern int nfs4_set_inode_share(struct inode * inode, + struct nfs4_shareowner *sp, unsigned int flags); +extern void nfs4_increment_seqid(u32 status, struct nfs4_shareowner *sp); +extern int nfs4_test_shareowner(struct inode *inode, unsigned int open_flags); +struct nfs4_shareowner * nfs4_get_inode_share(struct inode * inode, unsigned int open_flags); + + + + + struct nfs4_mount_data; static inline int @@ -481,6 +535,7 @@ #else #define create_nfsv4_state(server, data) 0 #define destroy_nfsv4_state(server) do { } while (0) +#define nfs4_put_shareowner(inode, owner) do { } while (0) #endif #endif /* __KERNEL__ */ diff -Nru a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h --- a/include/linux/nfs_fs_sb.h Fri Nov 8 18:00:27 2002 +++ b/include/linux/nfs_fs_sb.h Mon Apr 7 15:46:22 2003 @@ -36,6 +36,7 @@ struct nfs4_client * nfs4_state; /* all NFSv4 state starts here */ unsigned long lease_time; /* in jiffies */ unsigned long last_renewal; /* in jiffies */ + void *idmap; #endif }; diff -Nru a/include/linux/nfs_idmap.h b/include/linux/nfs_idmap.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/linux/nfs_idmap.h Mon Apr 7 15:46:22 2003 @@ -0,0 +1,69 @@ +/* + * include/linux/nfs_idmap.h + * + * UID and GID to name mapping for clients. + * + * Copyright (c) 2002 The Regents of the University of Michigan. + * All rights reserved. + * + * Marius Aamodt Eriksen + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef NFS_IDMAP_H +#define NFS_IDMAP_H + +/* XXX from bits/utmp.h */ +#define IDMAP_NAMESZ 128 + +#define IDMAP_TYPE_USER 0 +#define IDMAP_TYPE_GROUP 1 + +#define IDMAP_CONV_IDTONAME 0 +#define IDMAP_CONV_NAMETOID 1 + +#define IDMAP_STATUS_INVALIDMSG 0x01 +#define IDMAP_STATUS_AGAIN 0x02 +#define IDMAP_STATUS_LOOKUPFAIL 0x04 +#define IDMAP_STATUS_SUCCESS 0x08 + +struct idmap_msg { + u_int8_t im_type; + u_int8_t im_conv; + char im_name[IDMAP_NAMESZ]; + u_int32_t im_id; + u_int8_t im_status; +}; + +#ifdef __KERNEL__ +void *nfs_idmap_new(struct nfs_server *); +void nfs_idmap_delete(struct nfs_server *); +int nfs_idmap_id(struct nfs_server *, u_int8_t, char *, u_int, uid_t *); +int nfs_idmap_name(struct nfs_server *, u_int8_t, uid_t, char *, u_int *); +#endif /* __KERNEL__ */ + +#endif /* NFS_IDMAP_H */ diff -Nru a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h --- a/include/linux/nfs_xdr.h Fri Dec 20 23:09:27 2002 +++ b/include/linux/nfs_xdr.h Mon Apr 7 15:47:19 2003 @@ -88,6 +88,67 @@ }; /* + * Arguments to the open call. + */ +struct nfs_openargs { + struct nfs_fh * fh; + __u32 seqid; + __u32 share_access; + __u64 clientid; + __u32 id; + __u32 opentype; + __u32 createmode; + union { + struct iattr * attrs; /* UNCHECKED, GUARDED */ + nfs4_verifier verifier; /* EXCLUSIVE */ + } u; + struct qstr * name; + struct nfs4_getattr * f_getattr; + struct nfs4_getattr * d_getattr; + struct nfs_server * server; /* Needed for ID mapping */ +}; + +struct nfs_openres { + __u32 status; + nfs4_stateid stateid; + struct nfs_fh fh; + struct nfs4_change_info * cinfo; + __u32 rflags; + struct nfs4_getattr * f_getattr; + struct nfs4_getattr * d_getattr; + struct nfs_server * server; +}; + +/* + * Arguments to the open_confirm call. + */ +struct nfs_open_confirmargs { + struct nfs_fh * fh; + nfs4_stateid stateid; + __u32 seqid; +}; + +struct nfs_open_confirmres { + __u32 status; + nfs4_stateid stateid; +}; + +/* + * Arguments to the close call. + */ +struct nfs_closeargs { + struct nfs_fh * fh; + nfs4_stateid stateid; + __u32 seqid; +}; + +struct nfs_closeres { + __u32 status; + nfs4_stateid stateid; +}; + + +/* * Arguments to the read call. */ @@ -98,6 +159,7 @@ struct nfs_readargs { struct nfs_fh * fh; + nfs4_stateid stateid; __u64 offset; __u32 count; unsigned int pgbase; @@ -120,6 +182,7 @@ struct nfs_writeargs { struct nfs_fh * fh; + nfs4_stateid stateid; __u64 offset; __u32 count; enum nfs3_stable_how stable; @@ -182,6 +245,19 @@ unsigned int tolen; }; +struct nfs_setattrargs { + struct nfs_fh * fh; + nfs4_stateid stateid; + struct iattr * iap; + struct nfs4_getattr * attr; + struct nfs_server * server; /* Needed for name mapping */ +}; + +struct nfs_setattrres { + struct nfs4_getattr * attr; + struct nfs_server * server; +}; + struct nfs_linkargs { struct nfs_fh * fromfh; struct nfs_fh * tofh; @@ -597,6 +673,7 @@ void (*read_setup) (struct nfs_read_data *, unsigned int count); void (*write_setup) (struct nfs_write_data *, unsigned int count, int how); void (*commit_setup) (struct nfs_write_data *, u64 start, u32 len, int how); + int (*file_open) (struct inode *, struct file *); }; /* diff -Nru a/include/linux/page-flags.h b/include/linux/page-flags.h --- a/include/linux/page-flags.h Sat Mar 22 22:14:49 2003 +++ b/include/linux/page-flags.h Wed Apr 9 01:01:28 2003 @@ -83,7 +83,6 @@ unsigned long nr_dirty; /* Dirty writeable pages */ unsigned long nr_writeback; /* Pages under writeback */ unsigned long nr_page_table_pages;/* Pages used for pagetables */ - unsigned long nr_reverse_maps; /* includes PageDirect */ unsigned long nr_mapped; /* mapped into pagetables */ unsigned long nr_slab; /* In slab */ #define GET_PAGE_STATE_LAST nr_slab diff -Nru a/include/linux/pci_ids.h b/include/linux/pci_ids.h --- a/include/linux/pci_ids.h Mon Mar 24 18:17:24 2003 +++ b/include/linux/pci_ids.h Sun Apr 6 17:33:45 2003 @@ -1074,6 +1074,7 @@ #define PCI_DEVICE_ID_TTI_HPT374 0x0008 #define PCI_VENDOR_ID_VIA 0x1106 +#define PCI_DEVICE_ID_VIA_P4X600 0x0198 #define PCI_DEVICE_ID_VIA_8363_0 0x0305 #define PCI_DEVICE_ID_VIA_8371_0 0x0391 #define PCI_DEVICE_ID_VIA_8501_0 0x0501 @@ -1113,11 +1114,19 @@ #define PCI_DEVICE_ID_VIA_8653_0 0x3101 #define PCI_DEVICE_ID_VIA_8622 0x3102 #define PCI_DEVICE_ID_VIA_8233C_0 0x3109 -#define PCI_DEVICE_ID_VIA_8361 0x3112 +#define PCI_DEVICE_ID_VIA_8361 0x3112 +#define PCI_DEVICE_ID_VIA_KM266 0x3116 +#define PCI_DEVICE_ID_VIA_CLE266 0x3123 +#define PCI_DEVICE_ID_VIA_8753_0 0x3128 #define PCI_DEVICE_ID_VIA_8233A 0x3147 +#define PCI_DEVICE_ID_VIA_8752 0x3148 +#define PCI_DEVICE_ID_VIA_KN266 0x3156 #define PCI_DEVICE_ID_VIA_8754 0x3168 #define PCI_DEVICE_ID_VIA_8235 0x3177 +#define PCI_DEVICE_ID_VIA_P4N333 0x3178 #define PCI_DEVICE_ID_VIA_8377_0 0x3189 +#define PCI_DEVICE_ID_VIA_KM400 0x3205 +#define PCI_DEVICE_ID_VIA_P4M400 0x3209 #define PCI_DEVICE_ID_VIA_86C100A 0x6100 #define PCI_DEVICE_ID_VIA_8231 0x8231 #define PCI_DEVICE_ID_VIA_8231_4 0x8235 diff -Nru a/include/linux/scc.h b/include/linux/scc.h --- a/include/linux/scc.h Mon Feb 4 23:39:17 2002 +++ b/include/linux/scc.h Mon Apr 7 12:05:18 2003 @@ -244,6 +244,9 @@ /* Timer */ struct timer_list tx_t; /* tx timer for this channel */ struct timer_list tx_wdog; /* tx watchdogs */ + + /* Channel lock */ + spinlock_t lock; /* Channel guard lock */ }; #endif /* defined(__KERNEL__) */ diff -Nru a/include/linux/sched.h b/include/linux/sched.h --- a/include/linux/sched.h Thu Apr 3 10:29:48 2003 +++ b/include/linux/sched.h Wed Apr 9 01:01:49 2003 @@ -686,7 +686,11 @@ extern void unhash_process(struct task_struct *p); -/* Protects ->fs, ->files, ->mm, and synchronises with wait4(). Nests inside tasklist_lock */ +/* Protects ->fs, ->files, ->mm, and synchronises with wait4(). + * Nests both inside and outside of read_lock(&tasklist_lock). + * It must not be nested with write_lock_irq(&tasklist_lock), + * neither inside nor outside. + */ static inline void task_lock(struct task_struct *p) { spin_lock(&p->alloc_lock); diff -Nru a/include/linux/sysctl.h b/include/linux/sysctl.h --- a/include/linux/sysctl.h Sun Feb 23 22:46:32 2003 +++ b/include/linux/sysctl.h Wed Apr 9 20:50:43 2003 @@ -129,6 +129,7 @@ KERN_CADPID=54, /* int: PID of the process to notify on CAD */ KERN_PIDMAX=55, /* int: PID # limit */ KERN_CORE_PATTERN=56, /* string: pattern for core-file names */ + KERN_PANIC_ON_OOPS=57, /* int: whether we will panic on an oops */ }; @@ -678,8 +679,8 @@ typedef struct ctl_table ctl_table; typedef int ctl_handler (ctl_table *table, int *name, int nlen, - void *oldval, size_t *oldlenp, - void *newval, size_t newlen, + void __user *oldval, size_t __user *oldlenp, + void __user *newval, size_t newlen, void **context); typedef int proc_handler (ctl_table *ctl, int write, struct file * filp, @@ -706,8 +707,8 @@ extern int do_sysctl_strategy (ctl_table *table, int *name, int nlen, - void *oldval, size_t *oldlenp, - void *newval, size_t newlen, void ** context); + void __user *oldval, size_t __user *oldlenp, + void __user *newval, size_t newlen, void ** context); extern ctl_handler sysctl_string; extern ctl_handler sysctl_intvec; diff -Nru a/include/linux/time.h b/include/linux/time.h --- a/include/linux/time.h Mon Feb 24 23:13:09 2003 +++ b/include/linux/time.h Tue Apr 8 09:16:49 2003 @@ -31,7 +31,7 @@ * Have the 32 bit jiffies value wrap 5 minutes after boot * so jiffies wrap bugs show up earlier. */ -#define INITIAL_JIFFIES ((unsigned int) (-300*HZ)) +#define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ)) /* * Change timeval to jiffies, trying to avoid the diff -Nru a/include/media/saa7146.h b/include/media/saa7146.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/media/saa7146.h Mon Apr 7 13:16:30 2003 @@ -0,0 +1,431 @@ +#ifndef __SAA7146__ +#define __SAA7146__ + +#include /* for version macros */ +#include /* for module-version */ +#include /* for delay-stuff */ +#include /* for kmalloc/kfree */ +#include /* for pci-config-stuff, vendor ids etc. */ +#include /* for mem_map_reserve */ +#include /* for "__init" */ +#include /* for IMMEDIATE_BH */ +#include /* for kernel module loader */ +#include /* for i2c subsystem */ +#include /* for accessing devices */ +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,51) + #include "compat.h" +#endif + +#define SAA7146_VERSION_CODE KERNEL_VERSION(0,5,0) + +#define saa7146_write(sxy,adr,dat) writel((dat),(sxy->mem+(adr))) +#define saa7146_read(sxy,adr) readl(sxy->mem+(adr)) + +extern unsigned int saa7146_debug; + +//#define DEBUG_PROLOG printk("(0x%08x)(0x%08x) %s: %s(): ",(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,RPS_ADDR0))),(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,IER))),__stringify(KBUILD_MODNAME),__FUNCTION__) + +#ifndef DEBUG_VARIABLE + #define DEBUG_VARIABLE saa7146_debug +#endif + +#define DEBUG_PROLOG printk("%s: %s(): ",__stringify(KBUILD_MODNAME),__FUNCTION__) +#define DEB_S(x) if (0!=(DEBUG_VARIABLE&0x01)) { DEBUG_PROLOG; printk x; } /* simple debug messages */ +#define DEB_D(x) if (0!=(DEBUG_VARIABLE&0x02)) { DEBUG_PROLOG; printk x; } /* more detailed debug messages */ +#define DEB_EE(x) if (0!=(DEBUG_VARIABLE&0x04)) { DEBUG_PROLOG; printk x; } /* print enter and exit of functions */ +#define DEB_I2C(x) if (0!=(DEBUG_VARIABLE&0x08)) { DEBUG_PROLOG; printk x; } /* i2c debug messages */ +#define DEB_VBI(x) if (0!=(DEBUG_VARIABLE&0x10)) { DEBUG_PROLOG; printk x; } /* vbi debug messages */ +#define DEB_INT(x) if (0!=(DEBUG_VARIABLE&0x20)) { DEBUG_PROLOG; printk x; } /* interrupt debug messages */ +#define DEB_CAP(x) if (0!=(DEBUG_VARIABLE&0x40)) { DEBUG_PROLOG; printk x; } /* capture debug messages */ + +#define ERR(x) { DEBUG_PROLOG; printk x; } +#define INFO(x) { printk("%s: ",__stringify(KBUILD_MODNAME)); printk x; } + +#define IER_DISABLE(x,y) \ + saa7146_write(x, IER, saa7146_read(x, IER) & ~(y)); +#define IER_ENABLE(x,y) \ + saa7146_write(x, IER, saa7146_read(x, IER) | (y)); + +struct saa7146_dev; +struct saa7146_extension; +struct saa7146_vv; + +/* saa7146 page table */ +struct saa7146_pgtable { + unsigned int size; + u32 *cpu; + dma_addr_t dma; + /* used for offsets for u,v planes for planar capture modes */ + unsigned long offset; +}; + +struct saa7146_pci_extension_data { + struct saa7146_extension *ext; + void *ext_priv; /* most likely a name string */ +}; + +#define MAKE_EXTENSION_PCI(x_var, x_vendor, x_device) \ + { \ + .vendor = PCI_VENDOR_ID_PHILIPS, \ + .device = PCI_DEVICE_ID_PHILIPS_SAA7146, \ + .subvendor = x_vendor, \ + .subdevice = x_device, \ + .driver_data = (unsigned long)& x_var, \ + } + +struct saa7146_extension +{ + char name[32]; /* name of the device */ +#define SAA7146_USE_I2C_IRQ 0x1 + int flags; + + struct saa7146_ext_vv *ext_vv_data; + + /* pairs of subvendor and subdevice ids for + supported devices, last entry 0xffff, 0xfff */ + struct module *module; + struct pci_driver driver; + struct pci_device_id *pci_tbl; + + /* extension functions */ + int (*probe)(struct saa7146_dev *); + int (*attach)(struct saa7146_dev *, struct saa7146_pci_extension_data *); + int (*detach)(struct saa7146_dev*); + + u32 irq_mask; /* mask to indicate, which irq-events are handled by the extension */ + void (*irq_func)(struct saa7146_dev*, u32* irq_mask); +}; + +struct saa7146_dev +{ + struct module *module; + + struct list_head item; + + /* different device locks */ + spinlock_t slock; + struct semaphore lock; + + unsigned char *mem; /* pointer to mapped IO memory */ + int revision; /* chip revision; needed for bug-workarounds*/ + + /* pci-device & irq stuff*/ + char name[32]; + struct pci_dev *pci; + u32 int_todo; + spinlock_t int_slock; + + /* extension handling */ + struct saa7146_extension *ext; /* indicates if handled by extension */ + void *ext_priv; /* pointer for extension private use (most likely some private data) */ + + /* per device video/vbi informations (if available) */ + struct saa7146_vv *vv_data; + void (*vv_callback)(struct saa7146_dev *dev, unsigned long status); + + /* i2c-stuff */ + struct semaphore i2c_lock; + u32 i2c_bitrate; + u32 *i2c_mem; /* pointer to i2c memory */ + wait_queue_head_t i2c_wq; + int i2c_op; + + /* memories */ + u32 *rps0; + u32 *rps1; +}; + +/* from saa7146_i2c.c */ +int saa7146_i2c_adapter_prepare(struct saa7146_dev *dev, struct i2c_adapter *i2c_adapter, u32 bitrate); +int saa7146_i2c_transfer(struct saa7146_dev *saa, const struct i2c_msg msgs[], int num, int retries); + +/* from saa7146_core.c */ +extern struct list_head saa7146_devices; +extern struct semaphore saa7146_devices_lock; +int saa7146_register_extension(struct saa7146_extension*); +int saa7146_unregister_extension(struct saa7146_extension*); +struct saa7146_format* format_by_fourcc(struct saa7146_dev *dev, int fourcc); +int saa7146_pgtable_alloc(struct pci_dev *pci, struct saa7146_pgtable *pt); +void saa7146_pgtable_free(struct pci_dev *pci, struct saa7146_pgtable *pt); +void saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt, struct scatterlist *list, int length ); +char *saa7146_vmalloc_build_pgtable(struct pci_dev *pci, long length, struct saa7146_pgtable *pt); +void saa7146_setgpio(struct saa7146_dev *dev, int port, u32 data); + +/* some memory sizes */ +#define SAA7146_I2C_MEM ( 1*PAGE_SIZE) +#define SAA7146_RPS_MEM ( 1*PAGE_SIZE) + +/* some i2c constants */ +#define SAA7146_I2C_TIMEOUT 100 /* i2c-timeout-value in ms */ +#define SAA7146_I2C_RETRIES 3 /* how many times shall we retry an i2c-operation? */ +#define SAA7146_I2C_DELAY 5 /* time we wait after certain i2c-operations */ + +/* unsorted defines */ +#define ME1 0x0000000800 +#define PV1 0x0000000008 + +/* gpio defines */ +#define SAA7146_GPIO_INPUT 0x00 +#define SAA7146_GPIO_IRQHI 0x10 +#define SAA7146_GPIO_IRQLO 0x20 +#define SAA7146_GPIO_IRQHL 0x30 +#define SAA7146_GPIO_OUTLO 0x40 +#define SAA7146_GPIO_OUTHI 0x50 + +/* define for the register programming sequencer (rps) */ +#define CMD_NOP 0x00000000 /* No operation */ +#define CMD_CLR_EVENT 0x00000000 /* Clear event */ +#define CMD_SET_EVENT 0x10000000 /* Set signal event */ +#define CMD_PAUSE 0x20000000 /* Pause */ +#define CMD_CHECK_LATE 0x30000000 /* Check late */ +#define CMD_UPLOAD 0x40000000 /* Upload */ +#define CMD_STOP 0x50000000 /* Stop */ +#define CMD_INTERRUPT 0x60000000 /* Interrupt */ +#define CMD_JUMP 0x80000000 /* Jump */ +#define CMD_WR_REG 0x90000000 /* Write (load) register */ +#define CMD_RD_REG 0xa0000000 /* Read (store) register */ +#define CMD_WR_REG_MASK 0xc0000000 /* Write register with mask */ + +#define CMD_OAN MASK_27 +#define CMD_INV MASK_26 +#define CMD_SIG4 MASK_25 +#define CMD_SIG3 MASK_24 +#define CMD_SIG2 MASK_23 +#define CMD_SIG1 MASK_22 +#define CMD_SIG0 MASK_21 +#define CMD_O_FID_B MASK_14 +#define CMD_E_FID_B MASK_13 +#define CMD_O_FID_A MASK_12 +#define CMD_E_FID_A MASK_11 + +/* some events and command modifiers for rps1 squarewave generator */ +#define EVT_HS (1<<15) // Source Line Threshold reached +#define EVT_VBI_B (1<<9) // VSYNC Event +#define RPS_OAN (1<<27) // 1: OR events, 0: AND events +#define RPS_INV (1<<26) // Invert (compound) event +#define GPIO3_MSK 0xFF000000 // GPIO #3 control bits + +/* Bit mask constants */ +#define MASK_00 0x00000001 /* Mask value for bit 0 */ +#define MASK_01 0x00000002 /* Mask value for bit 1 */ +#define MASK_02 0x00000004 /* Mask value for bit 2 */ +#define MASK_03 0x00000008 /* Mask value for bit 3 */ +#define MASK_04 0x00000010 /* Mask value for bit 4 */ +#define MASK_05 0x00000020 /* Mask value for bit 5 */ +#define MASK_06 0x00000040 /* Mask value for bit 6 */ +#define MASK_07 0x00000080 /* Mask value for bit 7 */ +#define MASK_08 0x00000100 /* Mask value for bit 8 */ +#define MASK_09 0x00000200 /* Mask value for bit 9 */ +#define MASK_10 0x00000400 /* Mask value for bit 10 */ +#define MASK_11 0x00000800 /* Mask value for bit 11 */ +#define MASK_12 0x00001000 /* Mask value for bit 12 */ +#define MASK_13 0x00002000 /* Mask value for bit 13 */ +#define MASK_14 0x00004000 /* Mask value for bit 14 */ +#define MASK_15 0x00008000 /* Mask value for bit 15 */ +#define MASK_16 0x00010000 /* Mask value for bit 16 */ +#define MASK_17 0x00020000 /* Mask value for bit 17 */ +#define MASK_18 0x00040000 /* Mask value for bit 18 */ +#define MASK_19 0x00080000 /* Mask value for bit 19 */ +#define MASK_20 0x00100000 /* Mask value for bit 20 */ +#define MASK_21 0x00200000 /* Mask value for bit 21 */ +#define MASK_22 0x00400000 /* Mask value for bit 22 */ +#define MASK_23 0x00800000 /* Mask value for bit 23 */ +#define MASK_24 0x01000000 /* Mask value for bit 24 */ +#define MASK_25 0x02000000 /* Mask value for bit 25 */ +#define MASK_26 0x04000000 /* Mask value for bit 26 */ +#define MASK_27 0x08000000 /* Mask value for bit 27 */ +#define MASK_28 0x10000000 /* Mask value for bit 28 */ +#define MASK_29 0x20000000 /* Mask value for bit 29 */ +#define MASK_30 0x40000000 /* Mask value for bit 30 */ +#define MASK_31 0x80000000 /* Mask value for bit 31 */ + +#define MASK_B0 0x000000ff /* Mask value for byte 0 */ +#define MASK_B1 0x0000ff00 /* Mask value for byte 1 */ +#define MASK_B2 0x00ff0000 /* Mask value for byte 2 */ +#define MASK_B3 0xff000000 /* Mask value for byte 3 */ + +#define MASK_W0 0x0000ffff /* Mask value for word 0 */ +#define MASK_W1 0xffff0000 /* Mask value for word 1 */ + +#define MASK_PA 0xfffffffc /* Mask value for physical address */ +#define MASK_PR 0xfffffffe /* Mask value for protection register */ +#define MASK_ER 0xffffffff /* Mask value for the entire register */ + +#define MASK_NONE 0x00000000 /* No mask */ + +/* register aliases */ +#define BASE_ODD1 0x00 /* Video DMA 1 registers */ +#define BASE_EVEN1 0x04 +#define PROT_ADDR1 0x08 +#define PITCH1 0x0C +#define BASE_PAGE1 0x10 /* Video DMA 1 base page */ +#define NUM_LINE_BYTE1 0x14 + +#define BASE_ODD2 0x18 /* Video DMA 2 registers */ +#define BASE_EVEN2 0x1C +#define PROT_ADDR2 0x20 +#define PITCH2 0x24 +#define BASE_PAGE2 0x28 /* Video DMA 2 base page */ +#define NUM_LINE_BYTE2 0x2C + +#define BASE_ODD3 0x30 /* Video DMA 3 registers */ +#define BASE_EVEN3 0x34 +#define PROT_ADDR3 0x38 +#define PITCH3 0x3C +#define BASE_PAGE3 0x40 /* Video DMA 3 base page */ +#define NUM_LINE_BYTE3 0x44 + +#define PCI_BT_V1 0x48 /* Video/FIFO 1 */ +#define PCI_BT_V2 0x49 /* Video/FIFO 2 */ +#define PCI_BT_V3 0x4A /* Video/FIFO 3 */ +#define PCI_BT_DEBI 0x4B /* DEBI */ +#define PCI_BT_A 0x4C /* Audio */ + +#define DD1_INIT 0x50 /* Init setting of DD1 interface */ + +#define DD1_STREAM_B 0x54 /* DD1 B video data stream handling */ +#define DD1_STREAM_A 0x56 /* DD1 A video data stream handling */ + +#define BRS_CTRL 0x58 /* BRS control register */ +#define HPS_CTRL 0x5C /* HPS control register */ +#define HPS_V_SCALE 0x60 /* HPS vertical scale */ +#define HPS_V_GAIN 0x64 /* HPS vertical ACL and gain */ +#define HPS_H_PRESCALE 0x68 /* HPS horizontal prescale */ +#define HPS_H_SCALE 0x6C /* HPS horizontal scale */ +#define BCS_CTRL 0x70 /* BCS control */ +#define CHROMA_KEY_RANGE 0x74 +#define CLIP_FORMAT_CTRL 0x78 /* HPS outputs formats & clipping */ + +#define DEBI_CONFIG 0x7C +#define DEBI_COMMAND 0x80 +#define DEBI_PAGE 0x84 +#define DEBI_AD 0x88 + +#define I2C_TRANSFER 0x8C +#define I2C_STATUS 0x90 + +#define BASE_A1_IN 0x94 /* Audio 1 input DMA */ +#define PROT_A1_IN 0x98 +#define PAGE_A1_IN 0x9C + +#define BASE_A1_OUT 0xA0 /* Audio 1 output DMA */ +#define PROT_A1_OUT 0xA4 +#define PAGE_A1_OUT 0xA8 + +#define BASE_A2_IN 0xAC /* Audio 2 input DMA */ +#define PROT_A2_IN 0xB0 +#define PAGE_A2_IN 0xB4 + +#define BASE_A2_OUT 0xB8 /* Audio 2 output DMA */ +#define PROT_A2_OUT 0xBC +#define PAGE_A2_OUT 0xC0 + +#define RPS_PAGE0 0xC4 /* RPS task 0 page register */ +#define RPS_PAGE1 0xC8 /* RPS task 1 page register */ + +#define RPS_THRESH0 0xCC /* HBI threshold for task 0 */ +#define RPS_THRESH1 0xD0 /* HBI threshold for task 1 */ + +#define RPS_TOV0 0xD4 /* RPS timeout for task 0 */ +#define RPS_TOV1 0xD8 /* RPS timeout for task 1 */ + +#define IER 0xDC /* Interrupt enable register */ + +#define GPIO_CTRL 0xE0 /* GPIO 0-3 register */ + +#define EC1SSR 0xE4 /* Event cnt set 1 source select */ +#define EC2SSR 0xE8 /* Event cnt set 2 source select */ +#define ECT1R 0xEC /* Event cnt set 1 thresholds */ +#define ECT2R 0xF0 /* Event cnt set 2 thresholds */ + +#define ACON1 0xF4 +#define ACON2 0xF8 + +#define MC1 0xFC /* Main control register 1 */ +#define MC2 0x100 /* Main control register 2 */ + +#define RPS_ADDR0 0x104 /* RPS task 0 address register */ +#define RPS_ADDR1 0x108 /* RPS task 1 address register */ + +#define ISR 0x10C /* Interrupt status register */ +#define PSR 0x110 /* Primary status register */ +#define SSR 0x114 /* Secondary status register */ + +#define EC1R 0x118 /* Event counter set 1 register */ +#define EC2R 0x11C /* Event counter set 2 register */ + +#define PCI_VDP1 0x120 /* Video DMA pointer of FIFO 1 */ +#define PCI_VDP2 0x124 /* Video DMA pointer of FIFO 2 */ +#define PCI_VDP3 0x128 /* Video DMA pointer of FIFO 3 */ +#define PCI_ADP1 0x12C /* Audio DMA pointer of audio out 1 */ +#define PCI_ADP2 0x130 /* Audio DMA pointer of audio in 1 */ +#define PCI_ADP3 0x134 /* Audio DMA pointer of audio out 2 */ +#define PCI_ADP4 0x138 /* Audio DMA pointer of audio in 2 */ +#define PCI_DMA_DDP 0x13C /* DEBI DMA pointer */ + +#define LEVEL_REP 0x140, +#define A_TIME_SLOT1 0x180, /* from 180 - 1BC */ +#define A_TIME_SLOT2 0x1C0, /* from 1C0 - 1FC */ + +/* isr masks */ +#define SPCI_PPEF 0x80000000 /* PCI parity error */ +#define SPCI_PABO 0x40000000 /* PCI access error (target or master abort) */ +#define SPCI_PPED 0x20000000 /* PCI parity error on 'real time data' */ +#define SPCI_RPS_I1 0x10000000 /* Interrupt issued by RPS1 */ +#define SPCI_RPS_I0 0x08000000 /* Interrupt issued by RPS0 */ +#define SPCI_RPS_LATE1 0x04000000 /* RPS task 1 is late */ +#define SPCI_RPS_LATE0 0x02000000 /* RPS task 0 is late */ +#define SPCI_RPS_E1 0x01000000 /* RPS error from task 1 */ +#define SPCI_RPS_E0 0x00800000 /* RPS error from task 0 */ +#define SPCI_RPS_TO1 0x00400000 /* RPS timeout task 1 */ +#define SPCI_RPS_TO0 0x00200000 /* RPS timeout task 0 */ +#define SPCI_UPLD 0x00100000 /* RPS in upload */ +#define SPCI_DEBI_S 0x00080000 /* DEBI status */ +#define SPCI_DEBI_E 0x00040000 /* DEBI error */ +#define SPCI_IIC_S 0x00020000 /* I2C status */ +#define SPCI_IIC_E 0x00010000 /* I2C error */ +#define SPCI_A2_IN 0x00008000 /* Audio 2 input DMA protection / limit */ +#define SPCI_A2_OUT 0x00004000 /* Audio 2 output DMA protection / limit */ +#define SPCI_A1_IN 0x00002000 /* Audio 1 input DMA protection / limit */ +#define SPCI_A1_OUT 0x00001000 /* Audio 1 output DMA protection / limit */ +#define SPCI_AFOU 0x00000800 /* Audio FIFO over- / underflow */ +#define SPCI_V_PE 0x00000400 /* Video protection address */ +#define SPCI_VFOU 0x00000200 /* Video FIFO over- / underflow */ +#define SPCI_FIDA 0x00000100 /* Field ID video port A */ +#define SPCI_FIDB 0x00000080 /* Field ID video port B */ +#define SPCI_PIN3 0x00000040 /* GPIO pin 3 */ +#define SPCI_PIN2 0x00000020 /* GPIO pin 2 */ +#define SPCI_PIN1 0x00000010 /* GPIO pin 1 */ +#define SPCI_PIN0 0x00000008 /* GPIO pin 0 */ +#define SPCI_ECS 0x00000004 /* Event counter 1, 2, 4, 5 */ +#define SPCI_EC3S 0x00000002 /* Event counter 3 */ +#define SPCI_EC0S 0x00000001 /* Event counter 0 */ + +/* i2c */ +#define SAA7146_I2C_ABORT (1<<7) +#define SAA7146_I2C_SPERR (1<<6) +#define SAA7146_I2C_APERR (1<<5) +#define SAA7146_I2C_DTERR (1<<4) +#define SAA7146_I2C_DRERR (1<<3) +#define SAA7146_I2C_AL (1<<2) +#define SAA7146_I2C_ERR (1<<1) +#define SAA7146_I2C_BUSY (1<<0) + +#define SAA7146_I2C_START (0x3) +#define SAA7146_I2C_CONT (0x2) +#define SAA7146_I2C_STOP (0x1) +#define SAA7146_I2C_NOP (0x0) + +#define SAA7146_I2C_BUS_BIT_RATE_6400 (0x500) +#define SAA7146_I2C_BUS_BIT_RATE_3200 (0x100) +#define SAA7146_I2C_BUS_BIT_RATE_480 (0x400) +#define SAA7146_I2C_BUS_BIT_RATE_320 (0x600) +#define SAA7146_I2C_BUS_BIT_RATE_240 (0x700) +#define SAA7146_I2C_BUS_BIT_RATE_120 (0x000) +#define SAA7146_I2C_BUS_BIT_RATE_80 (0x200) +#define SAA7146_I2C_BUS_BIT_RATE_60 (0x300) + +#endif + diff -Nru a/include/media/saa7146_vv.h b/include/media/saa7146_vv.h --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/include/media/saa7146_vv.h Mon Apr 7 13:16:30 2003 @@ -0,0 +1,269 @@ +#ifndef __SAA7146_VV__ +#define __SAA7146_VV__ + +#include + +#include +#include + +#define MAX_SAA7146_CAPTURE_BUFFERS 32 /* arbitrary */ +#define BUFFER_TIMEOUT (HZ/2) /* 0.5 seconds */ + +struct saa7146_video_dma { + u32 base_odd; + u32 base_even; + u32 prot_addr; + u32 pitch; + u32 base_page; + u32 num_line_byte; +}; + +struct saa7146_format { + char *name; + int pixelformat; + u32 trans; + u8 depth; + int swap; +}; + +struct saa7146_standard +{ + char *name; + v4l2_std_id id; + + int v_offset; + int v_field; + int v_calc; + + int h_offset; + int h_pixels; + int h_calc; + + int v_max_out; + int h_max_out; +}; + +/* buffer for one video/vbi frame */ +struct saa7146_buf { + /* common v4l buffer stuff -- must be first */ + struct videobuf_buffer vb; + + /* saa7146 specific */ + struct v4l2_pix_format *fmt; + int (*activate)(struct saa7146_dev *dev, + struct saa7146_buf *buf, + struct saa7146_buf *next); + + /* page tables */ + struct saa7146_pgtable pt[3]; +}; + +struct saa7146_dmaqueue { + struct saa7146_dev *dev; + struct saa7146_buf *curr; + struct list_head queue; + struct timer_list timeout; +}; + +struct saa7146_overlay { + struct saa7146_fh *fh; + struct v4l2_window win; + struct v4l2_clip clips[16]; + int nclips; +}; + +/* per open data */ +struct saa7146_fh { + struct saa7146_dev *dev; + /* if this is a vbi or capture open */ + enum v4l2_buf_type type; + + /* video overlay */ + struct saa7146_overlay ov; + + /* video capture */ + struct videobuf_queue video_q; + struct v4l2_pix_format video_fmt; + + /* vbi capture */ + struct videobuf_queue vbi_q; + struct v4l2_vbi_format vbi_fmt; + struct timer_list vbi_read_timeout; +}; + +struct saa7146_vv +{ + int vbi_minor; + + /* vbi capture */ + struct saa7146_dmaqueue vbi_q; + /* vbi workaround interrupt queue */ + wait_queue_head_t vbi_wq; + int vbi_fieldcount; + struct saa7146_fh *vbi_streaming; + + int video_minor; + + /* video overlay */ + struct v4l2_framebuffer ov_fb; + struct saa7146_format *ov_fmt; + struct saa7146_overlay *ov_data; + + /* video capture */ + struct saa7146_dmaqueue video_q; + struct saa7146_fh *streaming; + + /* common: fixme? shouldn't this be in saa7146_fh? + (this leads to a more complicated question: shall the driver + store the different settings (for example S_INPUT) for every open + and restore it appropriately, or should all settings be common for + all opens? currently, we do the latter, like all other + drivers do... */ + struct saa7146_standard *standard; + + int vflip; + int hflip; + int current_hps_source; + int current_hps_sync; + + u32 *clipping; /* pointer to clipping memory */ +}; + +#define SAA7146_EXCLUSIVE 0x1 +#define SAA7146_BEFORE 0x2 +#define SAA7146_AFTER 0x4 + +struct saa7146_extension_ioctls +{ + unsigned int cmd; + int flags; +}; + +/* flags */ +#define SAA7146_EXT_SWAP_ODD_EVEN 0x1 /* needs odd/even fields swapped */ + +struct saa7146_ext_vv +{ + /* informations about the video capabilities of the device */ + int inputs; + int audios; + u32 capabilities; + int flags; + + /* additionally supported transmission standards */ + struct saa7146_standard *stds; + int num_stds; + int (*std_callback)(struct saa7146_dev*, struct saa7146_standard *); + + struct saa7146_extension_ioctls *ioctls; + int (*ioctl)(struct saa7146_dev*, unsigned int cmd, void *arg); +}; + +struct saa7146_use_ops { + void (*init)(struct saa7146_dev *, struct saa7146_vv *); + void(*open)(struct saa7146_dev *, struct saa7146_fh *); + void (*release)(struct saa7146_dev *, struct saa7146_fh *,struct file *); + void (*irq_done)(struct saa7146_dev *, unsigned long status); + ssize_t (*read)(struct file *, char *, size_t, loff_t *); + int (*capture_begin)(struct saa7146_fh *); + int (*capture_end)(struct saa7146_fh *); +}; + +/* from saa7146_fops.c */ +int saa7146_register_device(struct video_device *vid, struct saa7146_dev* dev, char *name, int type); +int saa7146_unregister_device(struct video_device *vid, struct saa7146_dev* dev); +void saa7146_buffer_finish(struct saa7146_dev *dev, struct saa7146_dmaqueue *q, int state); +void saa7146_buffer_next(struct saa7146_dev *dev, struct saa7146_dmaqueue *q,int vbi); +int saa7146_buffer_queue(struct saa7146_dev *dev, struct saa7146_dmaqueue *q, struct saa7146_buf *buf); +void saa7146_buffer_timeout(unsigned long data); +void saa7146_dma_free(struct saa7146_dev *dev,struct saa7146_buf *buf); + +int saa7146_vv_init(struct saa7146_dev* dev); +int saa7146_vv_release(struct saa7146_dev* dev); + + +/* from saa7146_hlp.c */ +void saa7146_set_overlay(struct saa7146_dev *dev, struct saa7146_fh *fh, int v); +void saa7146_set_capture(struct saa7146_dev *dev, struct saa7146_buf *buf, struct saa7146_buf *next); +void saa7146_write_out_dma(struct saa7146_dev* dev, int which, struct saa7146_video_dma* vdma) ; +void saa7146_set_hps_source_and_sync(struct saa7146_dev *saa, int source, int sync); +void saa7146_set_gpio(struct saa7146_dev *saa, u8 pin, u8 data); + +/* from saa7146_video.c */ +extern struct saa7146_use_ops saa7146_video_uops; + +/* from saa7146_vbi.c */ +extern struct saa7146_use_ops saa7146_vbi_uops; + +/* saa7146 source inputs */ +#define SAA7146_HPS_SOURCE_PORT_A 0x00 +#define SAA7146_HPS_SOURCE_PORT_B 0x01 +#define SAA7146_HPS_SOURCE_YPB_CPA 0x02 +#define SAA7146_HPS_SOURCE_YPA_CPB 0x03 + +/* sync inputs */ +#define SAA7146_HPS_SYNC_PORT_A 0x00 +#define SAA7146_HPS_SYNC_PORT_B 0x01 + +/* number of vertical active lines */ +#define V_ACTIVE_LINES_PAL 576 +#define V_ACTIVE_LINES_NTSC 480 +#define V_ACTIVE_LINES_SECAM 576 + +/* number of lines in a field for HPS to process */ +#define V_FIELD_PAL 288 +#define V_FIELD_NTSC 240 +#define V_FIELD_SECAM 288 + +/* number of lines of vertical offset before processing */ +#define V_OFFSET_PAL 0x17 +#define V_OFFSET_NTSC 0x16 +#define V_OFFSET_SECAM 0x14 + +/* number of horizontal pixels to process */ +#define H_PIXELS_PAL 680 +#define H_PIXELS_NTSC 708 +#define H_PIXELS_SECAM 720 + +/* horizontal offset of processing window */ +#define H_OFFSET_PAL 0x14 +#define H_OFFSET_NTSC 0x06 +#define H_OFFSET_SECAM 0x14 + +#define SAA7146_PAL_VALUES V_OFFSET_PAL, V_FIELD_PAL, V_ACTIVE_LINES_PAL, H_OFFSET_PAL, H_PIXELS_PAL, H_PIXELS_PAL+1, V_ACTIVE_LINES_PAL, 768 +#define SAA7146_NTSC_VALUES V_OFFSET_NTSC, V_FIELD_NTSC, V_ACTIVE_LINES_NTSC, H_OFFSET_NTSC, H_PIXELS_NTSC, H_PIXELS_NTSC+1, V_ACTIVE_LINES_NTSC, 640 +#define SAA7146_SECAM_VALUES V_OFFSET_SECAM, V_FIELD_SECAM, V_ACTIVE_LINES_SECAM, H_OFFSET_SECAM, H_PIXELS_SECAM, H_PIXELS_SECAM+1, V_ACTIVE_LINES_SECAM, 768 + +/* some memory sizes */ +#define SAA7146_CLIPPING_MEM (14*PAGE_SIZE) + +/* some defines for the various clipping-modes */ +#define SAA7146_CLIPPING_RECT 0x4 +#define SAA7146_CLIPPING_RECT_INVERTED 0x5 +#define SAA7146_CLIPPING_MASK 0x6 +#define SAA7146_CLIPPING_MASK_INVERTED 0x7 + +/* output formats: each entry holds four informations */ +#define RGB08_COMPOSED 0x0217 /* composed is used in the sense of "not-planar" */ +/* this means: planar?=0, yuv2rgb-conversation-mode=2, dither=yes(=1), format-mode = 7 */ +#define RGB15_COMPOSED 0x0213 +#define RGB16_COMPOSED 0x0210 +#define RGB24_COMPOSED 0x0201 +#define RGB32_COMPOSED 0x0202 + +#define Y8 0x0006 +#define YUV411_COMPOSED 0x0003 +#define YUV422_COMPOSED 0x0000 +/* this means: planar?=1, yuv2rgb-conversion-mode=0, dither=no(=0), format-mode = b */ +#define YUV411_DECOMPOSED 0x100b +#define YUV422_DECOMPOSED 0x1009 +#define YUV420_DECOMPOSED 0x100a + +#define IS_PLANAR(x) (x & 0xf000) + +/* misc defines */ +#define SAA7146_NO_SWAP (0x0) +#define SAA7146_TWO_BYTE_SWAP (0x1) +#define SAA7146_FOUR_BYTE_SWAP (0x2) + +#endif diff -Nru a/include/net/tcp.h b/include/net/tcp.h --- a/include/net/tcp.h Wed Mar 19 19:52:56 2003 +++ b/include/net/tcp.h Mon Apr 7 22:07:26 2003 @@ -31,6 +31,7 @@ #include #include #include +#include #if defined(CONFIG_IPV6) || defined (CONFIG_IPV6_MODULE) #include #endif @@ -639,6 +640,8 @@ #define TCP_INC_STATS_BH(field) SNMP_INC_STATS_BH(tcp_statistics, field) #define TCP_INC_STATS_USER(field) SNMP_INC_STATS_USER(tcp_statistics, field) #define TCP_DEC_STATS(field) SNMP_DEC_STATS(tcp_statistics, field) +#define TCP_ADD_STATS_BH(field, val) SNMP_ADD_STATS_BH(tcp_statistics, field, val) +#define TCP_ADD_STATS_USER(field, val) SNMP_ADD_STATS_USER(tcp_statistics, field, val) extern __inline__ void tcp_put_port(struct sock *sk); extern void tcp_inherit_port(struct sock *sk, struct sock *child); @@ -1398,6 +1401,9 @@ break; case TCP_CLOSE: + if (oldstate == TCP_CLOSE_WAIT || oldstate == TCP_ESTABLISHED) + TCP_INC_STATS(TcpEstabResets); + sk->prot->unhash(sk); if (sk->prev && !(sk->userlocks&SOCK_BINDPORT_LOCK)) tcp_put_port(sk); @@ -1876,6 +1882,15 @@ return (sysctl_tcp_frto && tp->send_head && !after(TCP_SKB_CB(tp->send_head)->end_seq, tp->snd_una + tp->snd_wnd)); +} + +static inline void tcp_mib_init(void) +{ + /* See RFC 2012 */ + TCP_ADD_STATS_USER(TcpRtoAlgorithm, 1); + TCP_ADD_STATS_USER(TcpRtoMin, TCP_RTO_MIN*1000/HZ); + TCP_ADD_STATS_USER(TcpRtoMax, TCP_RTO_MAX*1000/HZ); + TCP_ADD_STATS_USER(TcpMaxConn, -1); } #endif /* _TCP_H */ diff -Nru a/include/net/xfrm.h b/include/net/xfrm.h --- a/include/net/xfrm.h Thu Apr 3 07:21:40 2003 +++ b/include/net/xfrm.h Sat Apr 5 10:35:15 2003 @@ -84,6 +84,7 @@ /* Full description of state of transformer. */ struct xfrm_state { + /* Note: bydst is re-used during gc */ struct list_head bydst; struct list_head byspi; diff -Nru a/include/sound/memalloc.h b/include/sound/memalloc.h --- a/include/sound/memalloc.h Thu Mar 20 08:41:15 2003 +++ b/include/sound/memalloc.h Fri Apr 4 07:49:19 2003 @@ -178,7 +178,7 @@ /* * wrappers */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) + #ifdef CONFIG_PCI #if defined(__i386__) || defined(__ppc__) || defined(__x86_64__) #define HACK_PCI_ALLOC_CONSISTENT @@ -187,7 +187,6 @@ dma_addr_t *dma_handle); #endif /* arch */ #endif /* CONFIG_PCI */ -#endif /* LINUX >= 2.4.0 */ #endif /* __SOUND_MEMALLOC_H */ diff -Nru a/init/main.c b/init/main.c --- a/init/main.c Thu Mar 27 21:13:34 2003 +++ b/init/main.c Fri Apr 4 09:01:32 2003 @@ -60,7 +60,7 @@ * To avoid associated bogus bug reports, we flatly refuse to compile * with a gcc that is known to be too old from the very beginning. */ -#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 91) +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 95) #error Sorry, your GCC is too old. It builds incorrect kernels. #endif diff -Nru a/kernel/futex.c b/kernel/futex.c --- a/kernel/futex.c Tue Feb 25 02:50:03 2003 +++ b/kernel/futex.c Wed Apr 9 22:13:34 2003 @@ -448,7 +448,7 @@ return ret; } -asmlinkage long sys_futex(u32 *uaddr, int op, int val, struct timespec *utime) +asmlinkage long sys_futex(u32 __user *uaddr, int op, int val, struct timespec __user *utime) { struct timespec t; unsigned long timeout = MAX_SCHEDULE_TIMEOUT; diff -Nru a/kernel/itimer.c b/kernel/itimer.c --- a/kernel/itimer.c Thu Apr 3 10:23:21 2003 +++ b/kernel/itimer.c Wed Apr 9 22:13:57 2003 @@ -48,7 +48,7 @@ } /* SMP: Only we modify our itimer values. */ -asmlinkage long sys_getitimer(int which, struct itimerval *value) +asmlinkage long sys_getitimer(int which, struct itimerval __user *value) { int error = -EFAULT; struct itimerval get_buffer; @@ -120,8 +120,9 @@ /* SMP: Again, only we play with our itimers, and signals are SMP safe * now so that is not an issue at all anymore. */ -asmlinkage long sys_setitimer(int which, struct itimerval *value, - struct itimerval *ovalue) +asmlinkage long sys_setitimer(int which, + struct itimerval __user *value, + struct itimerval __user *ovalue) { struct itimerval set_buffer, get_buffer; int error; diff -Nru a/kernel/module.c b/kernel/module.c --- a/kernel/module.c Fri Apr 4 15:59:24 2003 +++ b/kernel/module.c Tue Apr 8 22:17:53 2003 @@ -462,7 +462,7 @@ EXPORT_SYMBOL(cleanup_module); asmlinkage long -sys_delete_module(const char *name_user, unsigned int flags) +sys_delete_module(const char __user *name_user, unsigned int flags) { struct module *mod; char name[MODULE_NAME_LEN]; @@ -670,7 +670,7 @@ return 0; } -extern int set_obsolete(const char *val, struct kernel_param *kp) +int set_obsolete(const char *val, struct kernel_param *kp) { unsigned int min, max; unsigned int size, maxsize; @@ -1082,9 +1082,9 @@ /* Allocate and load the module: note that size of section 0 is always zero, and we rely on this for optional sections. */ -static struct module *load_module(void *umod, +static struct module *load_module(void __user *umod, unsigned long len, - const char *uargs) + const char __user *uargs) { Elf_Ehdr *hdr; Elf_Shdr *sechdrs; @@ -1360,9 +1360,9 @@ /* This is where the real work happens */ asmlinkage long -sys_init_module(void *umod, +sys_init_module(void __user *umod, unsigned long len, - const char *uargs) + const char __user *uargs) { struct module *mod; int ret; diff -Nru a/kernel/panic.c b/kernel/panic.c --- a/kernel/panic.c Fri Jan 3 08:32:55 2003 +++ b/kernel/panic.c Wed Apr 9 01:01:38 2003 @@ -20,6 +20,8 @@ asmlinkage void sys_sync(void); /* it's really int */ int panic_timeout; +int panic_on_oops; +int tainted; struct notifier_block *panic_notifier_list; @@ -28,7 +30,6 @@ panic_timeout = simple_strtoul(str, NULL, 0); return 1; } - __setup("panic=", panic_setup); /** @@ -51,7 +52,7 @@ bust_spinlocks(1); va_start(args, fmt); - vsprintf(buf, fmt, args); + vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); printk(KERN_EMERG "Kernel panic: %s\n",buf); if (in_interrupt()) @@ -123,5 +124,3 @@ snprintf(buf, sizeof(buf), "Not tainted"); return(buf); } - -int tainted = 0; diff -Nru a/kernel/posix-timers.c b/kernel/posix-timers.c --- a/kernel/posix-timers.c Thu Mar 27 21:13:49 2003 +++ b/kernel/posix-timers.c Wed Apr 9 21:17:56 2003 @@ -341,7 +341,7 @@ * Here we define a mask to get rid of the common bits. The * optimizer should make this costless to all but mips. */ -#if (ARCH == mips) || (ARCH == mips64) +#if defined(ARCH) && ((ARCH == mips) || (ARCH == mips64)) #define MIPS_SIGEV ~(SIGEV_NONE & \ SIGEV_SIGNAL & \ SIGEV_THREAD & \ @@ -402,7 +402,8 @@ asmlinkage long sys_timer_create(clockid_t which_clock, - struct sigevent *timer_event_spec, timer_t * created_timer_id) + struct sigevent __user *timer_event_spec, + timer_t __user * created_timer_id) { int error = 0; struct k_itimer *new_timer = NULL; @@ -623,7 +624,7 @@ /* Get the time remaining on a POSIX.1b interval timer. */ asmlinkage long -sys_timer_gettime(timer_t timer_id, struct itimerspec *setting) +sys_timer_gettime(timer_t timer_id, struct itimerspec __user *setting) { struct k_itimer *timr; struct itimerspec cur_setting; @@ -801,8 +802,8 @@ /* Set a POSIX.1b interval timer */ asmlinkage long sys_timer_settime(timer_t timer_id, int flags, - const struct itimerspec *new_setting, - struct itimerspec *old_setting) + const struct itimerspec __user *new_setting, + struct itimerspec __user *old_setting) { struct k_itimer *timr; struct itimerspec new_spec, old_spec; @@ -985,7 +986,7 @@ } asmlinkage long -sys_clock_settime(clockid_t which_clock, const struct timespec *tp) +sys_clock_settime(clockid_t which_clock, const struct timespec __user *tp) { struct timespec new_tp; @@ -1002,7 +1003,7 @@ } asmlinkage long -sys_clock_gettime(clockid_t which_clock, struct timespec *tp) +sys_clock_gettime(clockid_t which_clock, struct timespec __user *tp) { struct timespec rtn_tp; int error = 0; @@ -1021,7 +1022,7 @@ } asmlinkage long -sys_clock_getres(clockid_t which_clock, struct timespec *tp) +sys_clock_getres(clockid_t which_clock, struct timespec __user *tp) { struct timespec rtn_tp; @@ -1074,7 +1075,7 @@ #ifdef FOLD_NANO_SLEEP_INTO_CLOCK_NANO_SLEEP asmlinkage long -sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp) +sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp) { struct timespec t; long ret; @@ -1096,7 +1097,8 @@ asmlinkage long sys_clock_nanosleep(clockid_t which_clock, int flags, - const struct timespec *rqtp, struct timespec *rmtp) + const struct timespec __user *rqtp, + struct timespec __user *rmtp) { struct timespec t; int ret; @@ -1218,7 +1220,7 @@ int ret = do_clock_nanosleep(restart_block->arg0, 0, &t); if ((ret == -ERESTART_RESTARTBLOCK) && restart_block->arg1 && - copy_to_user((struct timespec *)(restart_block->arg1), &t, + copy_to_user((struct timespec __user *)(restart_block->arg1), &t, sizeof (t))) return -EFAULT; return ret; diff -Nru a/kernel/printk.c b/kernel/printk.c --- a/kernel/printk.c Tue Jan 21 08:56:27 2003 +++ b/kernel/printk.c Wed Apr 9 21:16:01 2003 @@ -155,7 +155,7 @@ * 8 -- Set level of messages printed to console * 9 -- Return number of unread characters in the log buffer */ -int do_syslog(int type, char * buf, int len) +int do_syslog(int type, char __user * buf, int len) { unsigned long i, j, limit, count; int do_clear = 0; @@ -276,7 +276,7 @@ return error; } -asmlinkage long sys_syslog(int type, char * buf, int len) +asmlinkage long sys_syslog(int type, char __user * buf, int len) { return do_syslog(type, buf, len); } diff -Nru a/kernel/ptrace.c b/kernel/ptrace.c --- a/kernel/ptrace.c Sat Mar 22 13:30:19 2003 +++ b/kernel/ptrace.c Wed Apr 9 20:55:43 2003 @@ -200,7 +200,7 @@ return buf - old_buf; } -int ptrace_readdata(struct task_struct *tsk, unsigned long src, char *dst, int len) +int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len) { int copied = 0; @@ -225,7 +225,7 @@ return copied; } -int ptrace_writedata(struct task_struct *tsk, char * src, unsigned long dst, int len) +int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len) { int copied = 0; @@ -278,19 +278,18 @@ return (data & ~PTRACE_O_MASK) ? -EINVAL : 0; } -static int ptrace_getsiginfo(struct task_struct *child, long data) +static int ptrace_getsiginfo(struct task_struct *child, siginfo_t __user * data) { if (child->last_siginfo == NULL) return -EINVAL; - return copy_siginfo_to_user ((siginfo_t *) data, child->last_siginfo); + return copy_siginfo_to_user(data, child->last_siginfo); } -static int ptrace_setsiginfo(struct task_struct *child, long data) +static int ptrace_setsiginfo(struct task_struct *child, siginfo_t __user * data) { if (child->last_siginfo == NULL) return -EINVAL; - if (copy_from_user (child->last_siginfo, (siginfo_t *) data, - sizeof (siginfo_t)) != 0) + if (copy_from_user(child->last_siginfo, data, sizeof (siginfo_t)) != 0) return -EFAULT; return 0; } @@ -308,13 +307,13 @@ ret = ptrace_setoptions(child, data); break; case PTRACE_GETEVENTMSG: - ret = put_user(child->ptrace_message, (unsigned long *) data); + ret = put_user(child->ptrace_message, (unsigned long __user *) data); break; case PTRACE_GETSIGINFO: - ret = ptrace_getsiginfo(child, data); + ret = ptrace_getsiginfo(child, (siginfo_t __user *) data); break; case PTRACE_SETSIGINFO: - ret = ptrace_setsiginfo(child, data); + ret = ptrace_setsiginfo(child, (siginfo_t __user *) data); break; default: break; diff -Nru a/kernel/sched.c b/kernel/sched.c --- a/kernel/sched.c Fri Mar 28 22:30:08 2003 +++ b/kernel/sched.c Tue Apr 8 17:22:39 2003 @@ -1711,7 +1711,7 @@ /* * setscheduler - change the scheduling policy and/or RT priority of a thread. */ -static int setscheduler(pid_t pid, int policy, struct sched_param *param) +static int setscheduler(pid_t pid, int policy, struct sched_param __user *param) { struct sched_param lp; int retval = -EINVAL; @@ -1804,7 +1804,7 @@ * @param: structure containing the new RT priority. */ asmlinkage long sys_sched_setscheduler(pid_t pid, int policy, - struct sched_param *param) + struct sched_param __user *param) { return setscheduler(pid, policy, param); } @@ -1814,7 +1814,7 @@ * @pid: the pid in question. * @param: structure containing the new RT priority. */ -asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param *param) +asmlinkage long sys_sched_setparam(pid_t pid, struct sched_param __user *param) { return setscheduler(pid, -1, param); } @@ -1850,7 +1850,7 @@ * @pid: the pid in question. * @param: structure containing the RT priority. */ -asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param *param) +asmlinkage long sys_sched_getparam(pid_t pid, struct sched_param __user *param) { struct sched_param lp; int retval = -EINVAL; @@ -1892,7 +1892,7 @@ * @user_mask_ptr: user-space pointer to the new cpu mask */ asmlinkage long sys_sched_setaffinity(pid_t pid, unsigned int len, - unsigned long *user_mask_ptr) + unsigned long __user *user_mask_ptr) { unsigned long new_mask; int retval; @@ -1944,7 +1944,7 @@ * @user_mask_ptr: user-space pointer to hold the current cpu mask */ asmlinkage long sys_sched_getaffinity(pid_t pid, unsigned int len, - unsigned long *user_mask_ptr) + unsigned long __user *user_mask_ptr) { unsigned int real_len; unsigned long mask; @@ -2110,7 +2110,7 @@ * this syscall writes the default timeslice value of a given process * into the user-space timespec buffer. A value of '0' means infinity. */ -asmlinkage long sys_sched_rr_get_interval(pid_t pid, struct timespec *interval) +asmlinkage long sys_sched_rr_get_interval(pid_t pid, struct timespec __user *interval) { int retval = -EINVAL; struct timespec t; @@ -2343,7 +2343,8 @@ */ static int migration_thread(void * data) { - struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 }; + /* Marking "param" __user is ok, since we do a set_fs(KERNEL_DS); */ + struct sched_param __user param = { .sched_priority = MAX_RT_PRIO-1 }; int cpu = (long) data; runqueue_t *rq; int ret; diff -Nru a/kernel/signal.c b/kernel/signal.c --- a/kernel/signal.c Thu Apr 3 11:13:58 2003 +++ b/kernel/signal.c Tue Apr 8 17:13:01 2003 @@ -1720,7 +1720,7 @@ } asmlinkage long -sys_rt_sigprocmask(int how, sigset_t *set, sigset_t *oset, size_t sigsetsize) +sys_rt_sigprocmask(int how, sigset_t __user *set, sigset_t __user *oset, size_t sigsetsize) { int error = -EINVAL; sigset_t old_set, new_set; @@ -1755,7 +1755,7 @@ return error; } -long do_sigpending(void *set, unsigned long sigsetsize) +long do_sigpending(void __user *set, unsigned long sigsetsize) { long error = -EINVAL; sigset_t pending; @@ -1780,14 +1780,14 @@ } asmlinkage long -sys_rt_sigpending(sigset_t *set, size_t sigsetsize) +sys_rt_sigpending(sigset_t __user *set, size_t sigsetsize) { return do_sigpending(set, sigsetsize); } #ifndef HAVE_ARCH_COPY_SIGINFO_TO_USER -int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) +int copy_siginfo_to_user(siginfo_t __user *to, siginfo_t *from) { int err; @@ -1850,8 +1850,10 @@ #endif asmlinkage long -sys_rt_sigtimedwait(const sigset_t *uthese, siginfo_t *uinfo, - const struct timespec *uts, size_t sigsetsize) +sys_rt_sigtimedwait(const sigset_t __user *uthese, + siginfo_t __user *uinfo, + const struct timespec __user *uts, + size_t sigsetsize) { int ret, sig; sigset_t these; @@ -1980,7 +1982,7 @@ } asmlinkage long -sys_rt_sigqueueinfo(int pid, int sig, siginfo_t *uinfo) +sys_rt_sigqueueinfo(int pid, int sig, siginfo_t __user *uinfo) { siginfo_t info; @@ -2069,7 +2071,7 @@ } int -do_sigaltstack (const stack_t *uss, stack_t *uoss, unsigned long sp) +do_sigaltstack (const stack_t __user *uss, stack_t __user *uoss, unsigned long sp) { stack_t oss; int error; @@ -2133,7 +2135,7 @@ } asmlinkage long -sys_sigpending(old_sigset_t *set) +sys_sigpending(old_sigset_t __user *set) { return do_sigpending(set, sizeof(*set)); } @@ -2142,7 +2144,7 @@ /* Alpha has its own versions with special arguments. */ asmlinkage long -sys_sigprocmask(int how, old_sigset_t *set, old_sigset_t *oset) +sys_sigprocmask(int how, old_sigset_t __user *set, old_sigset_t __user *oset) { int error; old_sigset_t old_set, new_set; @@ -2192,7 +2194,9 @@ #ifndef __sparc__ asmlinkage long -sys_rt_sigaction(int sig, const struct sigaction *act, struct sigaction *oact, +sys_rt_sigaction(int sig, + const struct sigaction __user *act, + struct sigaction __user *oact, size_t sigsetsize) { struct k_sigaction new_sa, old_sa; diff -Nru a/kernel/softirq.c b/kernel/softirq.c --- a/kernel/softirq.c Mon Mar 31 15:21:49 2003 +++ b/kernel/softirq.c Wed Apr 9 21:16:26 2003 @@ -51,7 +51,7 @@ wake_up_process(tsk); } -asmlinkage void do_softirq() +asmlinkage void do_softirq(void) { __u32 pending; unsigned long flags; @@ -296,7 +296,7 @@ .next = NULL, }; -void __init softirq_init() +void __init softirq_init(void) { open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL); open_softirq(HI_SOFTIRQ, tasklet_hi_action, NULL); diff -Nru a/kernel/sys.c b/kernel/sys.c --- a/kernel/sys.c Thu Mar 20 00:55:30 2003 +++ b/kernel/sys.c Wed Apr 9 11:16:13 2003 @@ -377,7 +377,7 @@ * * reboot doesn't sync: do that yourself before calling this. */ -asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void * arg) +asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void __user * arg) { char buffer[256]; @@ -430,7 +430,7 @@ break; case LINUX_REBOOT_CMD_RESTART2: - if (strncpy_from_user(&buffer[0], (char *)arg, sizeof(buffer) - 1) < 0) { + if (strncpy_from_user(&buffer[0], arg, sizeof(buffer) - 1) < 0) { unlock_kernel(); return -EFAULT; } @@ -877,7 +877,7 @@ return old_fsgid; } -asmlinkage long sys_times(struct tms * tbuf) +asmlinkage long sys_times(struct tms __user * tbuf) { /* * In the SMP world we might just be unlucky and have one of @@ -1058,7 +1058,7 @@ /* * Supplementary group IDs */ -asmlinkage long sys_getgroups(int gidsetsize, gid_t *grouplist) +asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist) { int i; @@ -1084,7 +1084,7 @@ * without another task interfering. */ -asmlinkage long sys_setgroups(int gidsetsize, gid_t *grouplist) +asmlinkage long sys_setgroups(int gidsetsize, gid_t __user *grouplist) { gid_t groups[NGROUPS]; int retval; @@ -1093,7 +1093,7 @@ return -EPERM; if ((unsigned) gidsetsize > NGROUPS) return -EINVAL; - if(copy_from_user(groups, grouplist, gidsetsize * sizeof(gid_t))) + if (copy_from_user(groups, grouplist, gidsetsize * sizeof(gid_t))) return -EFAULT; retval = security_task_setgroups(gidsetsize, groups); if (retval) @@ -1140,7 +1140,7 @@ DECLARE_RWSEM(uts_sem); -asmlinkage long sys_newuname(struct new_utsname * name) +asmlinkage long sys_newuname(struct new_utsname __user * name) { int errno = 0; @@ -1151,7 +1151,7 @@ return errno; } -asmlinkage long sys_sethostname(char *name, int len) +asmlinkage long sys_sethostname(char __user *name, int len) { int errno; @@ -1169,7 +1169,7 @@ return errno; } -asmlinkage long sys_gethostname(char *name, int len) +asmlinkage long sys_gethostname(char __user *name, int len) { int i, errno; @@ -1190,7 +1190,7 @@ * Only setdomainname; getdomainname can be implemented by calling * uname() */ -asmlinkage long sys_setdomainname(char *name, int len) +asmlinkage long sys_setdomainname(char __user *name, int len) { int errno; @@ -1209,7 +1209,7 @@ return errno; } -asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit *rlim) +asmlinkage long sys_getrlimit(unsigned int resource, struct rlimit __user *rlim) { if (resource >= RLIM_NLIMITS) return -EINVAL; @@ -1224,7 +1224,7 @@ * Back compatibility for getrlimit. Needed for some apps. */ -asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit *rlim) +asmlinkage long sys_old_getrlimit(unsigned int resource, struct rlimit __user *rlim) { struct rlimit x; if (resource >= RLIM_NLIMITS) @@ -1240,7 +1240,7 @@ #endif -asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit *rlim) +asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit __user *rlim) { struct rlimit new_rlim, *old_rlim; int retval; @@ -1286,7 +1286,7 @@ * * FIXME! Get the fault counts properly! */ -int getrusage(struct task_struct *p, int who, struct rusage *ru) +int getrusage(struct task_struct *p, int who, struct rusage __user *ru) { struct rusage r; @@ -1317,7 +1317,7 @@ return copy_to_user(ru, &r, sizeof(r)) ? -EFAULT : 0; } -asmlinkage long sys_getrusage(int who, struct rusage *ru) +asmlinkage long sys_getrusage(int who, struct rusage __user *ru) { if (who != RUSAGE_SELF && who != RUSAGE_CHILDREN) return -EINVAL; @@ -1350,7 +1350,7 @@ current->pdeath_signal = sig; break; case PR_GET_PDEATHSIG: - error = put_user(current->pdeath_signal, (int *)arg2); + error = put_user(current->pdeath_signal, (int __user *)arg2); break; case PR_GET_DUMPABLE: if (current->mm->dumpable) diff -Nru a/kernel/sysctl.c b/kernel/sysctl.c --- a/kernel/sysctl.c Sun Mar 23 01:40:12 2003 +++ b/kernel/sysctl.c Wed Apr 9 20:50:43 2003 @@ -263,6 +263,8 @@ #endif {KERN_PIDMAX, "pid_max", &pid_max, sizeof (int), 0600, NULL, &proc_dointvec}, + {KERN_PANIC_ON_OOPS,"panic_on_oops", + &panic_on_oops,sizeof(int),0644,NULL,&proc_dointvec}, {0} }; @@ -401,7 +403,7 @@ return -ENOTDIR; } -extern asmlinkage long sys_sysctl(struct __sysctl_args *args) +asmlinkage long sys_sysctl(struct __sysctl_args __user *args) { struct __sysctl_args tmp; int error; @@ -442,8 +444,8 @@ } static int parse_table(int *name, int nlen, - void *oldval, size_t *oldlenp, - void *newval, size_t newlen, + void __user *oldval, size_t __user *oldlenp, + void __user *newval, size_t newlen, ctl_table *table, void **context) { int n; @@ -483,8 +485,8 @@ /* Perform the actual read/write of a sysctl table entry. */ int do_sysctl_strategy (ctl_table *table, int *name, int nlen, - void *oldval, size_t *oldlenp, - void *newval, size_t newlen, void **context) + void __user *oldval, size_t __user *oldlenp, + void __user *newval, size_t newlen, void **context) { int op = 0, rc; size_t len; @@ -785,10 +787,11 @@ * Returns 0 on success. */ int proc_dostring(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { size_t len; - char *p, c; + char __user *p; + char c; if (!table->data || !table->maxlen || !*lenp || (filp->f_pos && !write)) { @@ -838,7 +841,7 @@ */ static int proc_doutsstring(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { int r; @@ -861,7 +864,7 @@ #define OP_MIN 4 static int do_proc_dointvec(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp, int conv, int op) + void __user *buffer, size_t *lenp, int conv, int op) { int *i, vleft, first=1, neg, val; size_t left, len; @@ -883,12 +886,12 @@ if (write) { while (left) { char c; - if(get_user(c,(char *) buffer)) + if (get_user(c,(char __user *) buffer)) return -EFAULT; if (!isspace(c)) break; left--; - ((char *) buffer)++; + buffer++; } if (!left) break; @@ -977,7 +980,7 @@ * Returns 0 on success. */ int proc_dointvec(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { return do_proc_dointvec(table,write,filp,buffer,lenp,1,OP_SET); } @@ -987,7 +990,7 @@ */ int proc_dointvec_bset(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { if (!capable(CAP_SYS_MODULE)) { return -EPERM; @@ -1013,7 +1016,7 @@ * Returns 0 on success. */ int proc_dointvec_minmax(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { int *i, *min, *max, vleft, first=1, neg, val; size_t len, left; @@ -1041,7 +1044,7 @@ if (!isspace(c)) break; left--; - ((char *) buffer)++; + buffer++; } if (!left) break; @@ -1111,7 +1114,7 @@ static int do_proc_doulongvec_minmax(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp, + void __user *buffer, size_t *lenp, unsigned long convmul, unsigned long convdiv) { @@ -1137,12 +1140,12 @@ if (write) { while (left) { char c; - if(get_user(c, (char *) buffer)) + if (get_user(c, (char __user *) buffer)) return -EFAULT; if (!isspace(c)) break; left--; - ((char *) buffer)++; + buffer++; } if (!left) break; @@ -1150,7 +1153,7 @@ len = left; if (len > TMPBUFLEN-1) len = TMPBUFLEN-1; - if(copy_from_user(buf, buffer, len)) + if (copy_from_user(buf, buffer, len)) return -EFAULT; buf[len] = 0; p = buf; @@ -1230,7 +1233,7 @@ * Returns 0 on success. */ int proc_doulongvec_minmax(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { return do_proc_doulongvec_minmax(table, write, filp, buffer, lenp, 1l, 1l); } @@ -1254,7 +1257,7 @@ */ int proc_doulongvec_ms_jiffies_minmax(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { return do_proc_doulongvec_minmax(table, write, filp, buffer, lenp, HZ, 1000l); @@ -1277,7 +1280,7 @@ * Returns 0 on success. */ int proc_dointvec_jiffies(ctl_table *table, int write, struct file *filp, - void *buffer, size_t *lenp) + void __user *buffer, size_t *lenp) { return do_proc_dointvec(table,write,filp,buffer,lenp,HZ,OP_SET); } @@ -1343,8 +1346,8 @@ /* The generic string strategy routine: */ int sysctl_string(ctl_table *table, int *name, int nlen, - void *oldval, size_t *oldlenp, - void *newval, size_t newlen, void **context) + void __user *oldval, size_t __user *oldlenp, + void __user *newval, size_t newlen, void **context) { size_t l, len; @@ -1451,7 +1454,7 @@ #else /* CONFIG_SYSCTL */ -extern asmlinkage long sys_sysctl(struct __sysctl_args *args) +extern asmlinkage long sys_sysctl(struct __sysctl_args __user *args) { return -ENOSYS; } diff -Nru a/kernel/time.c b/kernel/time.c --- a/kernel/time.c Mon Feb 10 19:19:42 2003 +++ b/kernel/time.c Wed Apr 9 20:51:04 2003 @@ -90,7 +90,7 @@ #endif -asmlinkage long sys_gettimeofday(struct timeval *tv, struct timezone *tz) +asmlinkage long sys_gettimeofday(struct timeval __user *tv, struct timezone __user *tz) { if (likely(tv != NULL)) { struct timeval ktv; @@ -166,7 +166,7 @@ return 0; } -asmlinkage long sys_settimeofday(struct timeval *tv, struct timezone *tz) +asmlinkage long sys_settimeofday(struct timeval __user *tv, struct timezone __user *tz) { struct timeval new_tv; struct timezone new_tz; @@ -387,7 +387,7 @@ return(result); } -asmlinkage long sys_adjtimex(struct timex *txc_p) +asmlinkage long sys_adjtimex(struct timex __user *txc_p) { struct timex txc; /* Local copy of parameter */ int ret; diff -Nru a/kernel/uid16.c b/kernel/uid16.c --- a/kernel/uid16.c Wed Nov 27 15:13:29 2002 +++ b/kernel/uid16.c Wed Apr 9 20:51:27 2003 @@ -107,7 +107,7 @@ return sys_setfsgid((gid_t)gid); } -asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t *grouplist) +asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist) { old_gid_t groups[NGROUPS]; int i,j; @@ -126,7 +126,7 @@ return i; } -asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t *grouplist) +asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist) { old_gid_t groups[NGROUPS]; gid_t new_groups[NGROUPS]; diff -Nru a/mm/fadvise.c b/mm/fadvise.c --- a/mm/fadvise.c Wed Apr 2 22:51:22 2003 +++ b/mm/fadvise.c Thu Apr 3 01:26:15 2003 @@ -33,8 +33,10 @@ inode = file->f_dentry->d_inode; mapping = inode->i_mapping; - if (!mapping) - return -EINVAL; + if (!mapping) { + ret = -EINVAL; + goto out; + } bdi = mapping->backing_dev_info; @@ -69,6 +71,7 @@ default: ret = -EINVAL; } +out: fput(file); return ret; } diff -Nru a/mm/filemap.c b/mm/filemap.c --- a/mm/filemap.c Wed Apr 2 22:51:22 2003 +++ b/mm/filemap.c Tue Apr 8 03:16:30 2003 @@ -99,9 +99,9 @@ if (unlikely(!PageLocked(page))) PAGE_BUG(page); - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); __remove_from_page_cache(page); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); } static inline int sync_page(struct page *page) @@ -133,9 +133,9 @@ if (mapping->backing_dev_info->memory_backed) return 0; - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); list_splice_init(&mapping->dirty_pages, &mapping->io_pages); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); ret = do_writepages(mapping, &wbc); return ret; } @@ -166,7 +166,7 @@ restart: progress = 0; - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); while (!list_empty(&mapping->locked_pages)) { struct page *page; @@ -180,7 +180,7 @@ if (!PageWriteback(page)) { if (++progress > 32) { if (need_resched()) { - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); __cond_resched(); goto restart; } @@ -190,16 +190,16 @@ progress = 0; page_cache_get(page); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); wait_on_page_writeback(page); if (PageError(page)) ret = -EIO; page_cache_release(page); - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); } - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); return ret; } @@ -227,7 +227,7 @@ if (error == 0) { page_cache_get(page); - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); error = radix_tree_insert(&mapping->page_tree, offset, page); if (!error) { SetPageLocked(page); @@ -235,7 +235,7 @@ } else { page_cache_release(page); } - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); radix_tree_preload_end(); } return error; @@ -364,11 +364,11 @@ * We scan the hash list read-only. Addition to and removal from * the hash-list needs a held write-lock. */ - read_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); page = radix_tree_lookup(&mapping->page_tree, offset); if (page) page_cache_get(page); - read_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); return page; } @@ -379,11 +379,11 @@ { struct page *page; - read_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); page = radix_tree_lookup(&mapping->page_tree, offset); if (page && TestSetPageLocked(page)) page = NULL; - read_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); return page; } @@ -403,15 +403,15 @@ { struct page *page; - read_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); repeat: page = radix_tree_lookup(&mapping->page_tree, offset); if (page) { page_cache_get(page); if (TestSetPageLocked(page)) { - read_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); lock_page(page); - read_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); /* Has the page been truncated while we slept? */ if (page->mapping != mapping || page->index != offset) { @@ -421,7 +421,7 @@ } } } - read_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); return page; } @@ -491,12 +491,12 @@ unsigned int i; unsigned int ret; - read_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); ret = radix_tree_gang_lookup(&mapping->page_tree, (void **)pages, start, nr_pages); for (i = 0; i < ret; i++) page_cache_get(pages[i]); - read_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); return ret; } diff -Nru a/mm/msync.c b/mm/msync.c --- a/mm/msync.c Thu Oct 31 07:28:17 2002 +++ b/mm/msync.c Mon Apr 7 06:17:13 2003 @@ -125,11 +125,13 @@ /* * MS_SYNC syncs the entire file - including mappings. * - * MS_ASYNC initiates writeout of just the dirty mapped data. - * This provides no guarantee of file integrity - things like indirect - * blocks may not have started writeout. MS_ASYNC is primarily useful - * where the application knows that it has finished with the data and - * wishes to intelligently schedule its own I/O traffic. + * MS_ASYNC does not start I/O (it used to, up to 2.5.67). Instead, it just + * marks the relevant pages dirty. The application may now run fsync() to + * write out the dirty pages and wait on the writeout and check the result. + * Or the application may run fadvise(FADV_DONTNEED) against the fd to start + * async writeout immediately. + * So my _not_ starting I/O in MS_ASYNC we provide complete flexibility to + * applications. */ static int msync_interval(struct vm_area_struct * vma, unsigned long start, unsigned long end, int flags) @@ -143,22 +145,20 @@ if (file && (vma->vm_flags & VM_SHARED)) { ret = filemap_sync(vma, start, end-start, flags); - if (!ret && (flags & (MS_SYNC|MS_ASYNC))) { - struct inode * inode = file->f_dentry->d_inode; + if (!ret && (flags & MS_SYNC)) { + struct inode *inode = file->f_dentry->d_inode; int err; down(&inode->i_sem); ret = filemap_fdatawrite(inode->i_mapping); - if (flags & MS_SYNC) { - if (file->f_op && file->f_op->fsync) { - err = file->f_op->fsync(file, file->f_dentry, 1); - if (err && !ret) - ret = err; - } - err = filemap_fdatawait(inode->i_mapping); - if (!ret) + if (file->f_op && file->f_op->fsync) { + err = file->f_op->fsync(file,file->f_dentry,1); + if (err && !ret) ret = err; } + err = filemap_fdatawait(inode->i_mapping); + if (!ret) + ret = err; up(&inode->i_sem); } } diff -Nru a/mm/page-writeback.c b/mm/page-writeback.c --- a/mm/page-writeback.c Sun Mar 23 01:40:12 2003 +++ b/mm/page-writeback.c Tue Apr 8 03:16:30 2003 @@ -425,12 +425,12 @@ if (wait && PageWriteback(page)) wait_on_page_writeback(page); - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); list_del(&page->list); if (test_clear_page_dirty(page)) { list_add(&page->list, &mapping->locked_pages); page_cache_get(page); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); ret = mapping->a_ops->writepage(page, &wbc); if (ret == 0 && wait) { wait_on_page_writeback(page); @@ -440,7 +440,7 @@ page_cache_release(page); } else { list_add(&page->list, &mapping->clean_pages); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); unlock_page(page); } return ret; @@ -513,14 +513,14 @@ spin_unlock(&mapping->private_lock); if (!TestSetPageDirty(page)) { - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); if (page->mapping) { /* Race with truncate? */ if (!mapping->backing_dev_info->memory_backed) inc_page_state(nr_dirty); list_del(&page->list); list_add(&page->list, &mapping->dirty_pages); } - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); } @@ -550,7 +550,7 @@ struct address_space *mapping = page->mapping; if (mapping) { - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); if (page->mapping) { /* Race with truncate? */ BUG_ON(page->mapping != mapping); if (!mapping->backing_dev_info->memory_backed) @@ -558,7 +558,7 @@ list_del(&page->list); list_add(&page->list, &mapping->dirty_pages); } - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); } } diff -Nru a/mm/page_alloc.c b/mm/page_alloc.c --- a/mm/page_alloc.c Thu Mar 27 21:16:31 2003 +++ b/mm/page_alloc.c Wed Apr 9 01:01:28 2003 @@ -1432,7 +1432,6 @@ "nr_dirty", "nr_writeback", "nr_page_table_pages", - "nr_reverse_maps", "nr_mapped", "nr_slab", diff -Nru a/mm/readahead.c b/mm/readahead.c --- a/mm/readahead.c Sat Mar 8 14:50:29 2003 +++ b/mm/readahead.c Tue Apr 8 03:16:30 2003 @@ -217,7 +217,7 @@ /* * Preallocate as many pages as we will need. */ - read_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); for (page_idx = 0; page_idx < nr_to_read; page_idx++) { unsigned long page_offset = offset + page_idx; @@ -228,16 +228,16 @@ if (page) continue; - read_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); page = page_cache_alloc_cold(mapping); - read_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); if (!page) break; page->index = page_offset; list_add(&page->list, &page_pool); ret++; } - read_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); /* * Now start the IO. We ignore I/O errors - if the page is not diff -Nru a/mm/rmap.c b/mm/rmap.c --- a/mm/rmap.c Thu Mar 27 21:13:50 2003 +++ b/mm/rmap.c Tue Apr 8 07:11:04 2003 @@ -14,8 +14,8 @@ /* * Locking: * - the page->pte.chain is protected by the PG_chainlock bit, - * which nests within the zone->lru_lock, then the - * mm->page_table_lock, and then the page lock. + * which nests within the the mm->page_table_lock, + * which nests within the page lock. * - because swapout locking is opposite to the locking order * in the page fault path, the swapout path uses trylocks * on the mm->page_table_lock @@ -46,15 +46,40 @@ * We use an array of pte pointers in this structure to minimise cache misses * while traversing reverse maps. */ -#define NRPTE ((L1_CACHE_BYTES - sizeof(void *))/sizeof(pte_addr_t)) +#define NRPTE ((L1_CACHE_BYTES - sizeof(unsigned long))/sizeof(pte_addr_t)) +/* + * next_and_idx encodes both the address of the next pte_chain and the + * offset of the highest-index used pte in ptes[]. + */ struct pte_chain { - struct pte_chain *next; + unsigned long next_and_idx; pte_addr_t ptes[NRPTE]; } ____cacheline_aligned; kmem_cache_t *pte_chain_cache; +static inline struct pte_chain *pte_chain_next(struct pte_chain *pte_chain) +{ + return (struct pte_chain *)(pte_chain->next_and_idx & ~NRPTE); +} + +static inline struct pte_chain *pte_chain_ptr(unsigned long pte_chain_addr) +{ + return (struct pte_chain *)(pte_chain_addr & ~NRPTE); +} + +static inline int pte_chain_idx(struct pte_chain *pte_chain) +{ + return pte_chain->next_and_idx & NRPTE; +} + +static inline unsigned long +pte_chain_encode(struct pte_chain *pte_chain, int idx) +{ + return (unsigned long)pte_chain | idx; +} + /* * pte_chain list management policy: * @@ -89,7 +114,7 @@ */ int page_referenced(struct page * page) { - struct pte_chain * pc; + struct pte_chain *pc; int referenced = 0; if (TestClearPageReferenced(page)) @@ -104,7 +129,7 @@ int nr_chains = 0; /* Check all the page tables mapping this page. */ - for (pc = page->pte.chain; pc; pc = pc->next) { + for (pc = page->pte.chain; pc; pc = pte_chain_next(pc)) { int i; for (i = NRPTE-1; i >= 0; i--) { @@ -144,43 +169,11 @@ { pte_addr_t pte_paddr = ptep_to_paddr(ptep); struct pte_chain *cur_pte_chain; - int i; - -#ifdef DEBUG_RMAP - if (!page || !ptep) - BUG(); - if (!pte_present(*ptep)) - BUG(); - if (!ptep_to_mm(ptep)) - BUG(); -#endif - - if (!pfn_valid(page_to_pfn(page)) || PageReserved(page)) - return pte_chain; pte_chain_lock(page); -#ifdef DEBUG_RMAP - /* - * This stuff needs help to get up to highmem speed. - */ - { - struct pte_chain * pc; - if (PageDirect(page)) { - if (page->pte.direct == pte_paddr) - BUG(); - } else { - for (pc = page->pte.chain; pc; pc = pc->next) { - for (i = 0; i < NRPTE; i++) { - pte_addr_t p = pc->ptes[i]; - - if (p && p == pte_paddr) - BUG(); - } - } - } - } -#endif + if (!pfn_valid(page_to_pfn(page)) || PageReserved(page)) + goto out; if (page->pte.direct == 0) { page->pte.direct = pte_paddr; @@ -194,6 +187,7 @@ ClearPageDirect(page); pte_chain->ptes[NRPTE-1] = page->pte.direct; pte_chain->ptes[NRPTE-2] = pte_paddr; + pte_chain->next_and_idx = pte_chain_encode(NULL, NRPTE-2); page->pte.direct = 0; page->pte.chain = pte_chain; pte_chain = NULL; /* We consumed it */ @@ -202,25 +196,17 @@ cur_pte_chain = page->pte.chain; if (cur_pte_chain->ptes[0]) { /* It's full */ - pte_chain->next = cur_pte_chain; + pte_chain->next_and_idx = pte_chain_encode(cur_pte_chain, + NRPTE - 1); page->pte.chain = pte_chain; pte_chain->ptes[NRPTE-1] = pte_paddr; pte_chain = NULL; /* We consumed it */ goto out; } - - BUG_ON(!cur_pte_chain->ptes[NRPTE-1]); - - for (i = NRPTE-2; i >= 0; i--) { - if (!cur_pte_chain->ptes[i]) { - cur_pte_chain->ptes[i] = pte_paddr; - goto out; - } - } - BUG(); + cur_pte_chain->ptes[pte_chain_idx(cur_pte_chain) - 1] = pte_paddr; + cur_pte_chain->next_and_idx--; out: pte_chain_unlock(page); - inc_page_state(nr_reverse_maps); return pte_chain; } @@ -234,80 +220,61 @@ * the page. * Caller needs to hold the mm->page_table_lock. */ -void page_remove_rmap(struct page * page, pte_t * ptep) +void page_remove_rmap(struct page *page, pte_t *ptep) { pte_addr_t pte_paddr = ptep_to_paddr(ptep); struct pte_chain *pc; - if (!page || !ptep) - BUG(); + pte_chain_lock(page); + if (!pfn_valid(page_to_pfn(page)) || PageReserved(page)) - return; - if (!page_mapped(page)) - return; /* remap_page_range() from a driver? */ + goto out_unlock; - pte_chain_lock(page); + if (!page_mapped(page)) + goto out_unlock; /* remap_page_range() from a driver? */ if (PageDirect(page)) { if (page->pte.direct == pte_paddr) { page->pte.direct = 0; - dec_page_state(nr_reverse_maps); ClearPageDirect(page); goto out; } } else { struct pte_chain *start = page->pte.chain; + struct pte_chain *next; int victim_i = -1; - for (pc = start; pc; pc = pc->next) { + for (pc = start; pc; pc = next) { int i; - if (pc->next) - prefetch(pc->next); - for (i = 0; i < NRPTE; i++) { + next = pte_chain_next(pc); + if (next) + prefetch(next); + for (i = pte_chain_idx(pc); i < NRPTE; i++) { pte_addr_t pa = pc->ptes[i]; - if (!pa) - continue; if (victim_i == -1) victim_i = i; if (pa != pte_paddr) continue; pc->ptes[i] = start->ptes[victim_i]; - dec_page_state(nr_reverse_maps); start->ptes[victim_i] = 0; if (victim_i == NRPTE-1) { /* Emptied a pte_chain */ - page->pte.chain = start->next; + page->pte.chain = pte_chain_next(start); __pte_chain_free(start); } else { - /* Do singleton->PageDirect here */ + start->next_and_idx++; } goto out; } } } -#ifdef DEBUG_RMAP - /* Not found. This should NEVER happen! */ - printk(KERN_ERR "page_remove_rmap: pte_chain %p not present.\n", ptep); - printk(KERN_ERR "page_remove_rmap: only found: "); - if (PageDirect(page)) { - printk("%llx", (u64)page->pte.direct); - } else { - for (pc = page->pte.chain; pc; pc = pc->next) { - int i; - for (i = 0; i < NRPTE; i++) - printk(" %d:%llx", i, (u64)pc->ptes[i]); - } - } - printk("\n"); - printk(KERN_ERR "page_remove_rmap: driver cleared PG_reserved ?\n"); -#endif - out: - pte_chain_unlock(page); if (!page_mapped(page)) dec_page_state(nr_mapped); +out_unlock: + pte_chain_unlock(page); return; } @@ -320,9 +287,8 @@ * table entry mapping a page. Because locking order here is opposite * to the locking order used by the page fault path, we use trylocks. * Locking: - * zone->lru_lock page_launder() - * page lock page_launder(), trylock - * pte_chain_lock page_launder() + * page lock shrink_list(), trylock + * pte_chain_lock shrink_list() * mm->page_table_lock try_to_unmap_one(), trylock */ static int FASTCALL(try_to_unmap_one(struct page *, pte_addr_t)); @@ -409,8 +375,8 @@ * @page: the page to get unmapped * * Tries to remove all the page table entries which are mapping this - * page, used in the pageout path. Caller must hold zone->lru_lock - * and the page lock. Return values are: + * page, used in the pageout path. Caller must hold the page lock + * and its pte chain lock. Return values are: * * SWAP_SUCCESS - we succeeded in removing all mappings * SWAP_AGAIN - we missed a trylock, try again later @@ -435,7 +401,6 @@ ret = try_to_unmap_one(page, page->pte.direct); if (ret == SWAP_SUCCESS) { page->pte.direct = 0; - dec_page_state(nr_reverse_maps); ClearPageDirect(page); } goto out; @@ -445,10 +410,10 @@ for (pc = start; pc; pc = next_pc) { int i; - next_pc = pc->next; + next_pc = pte_chain_next(pc); if (next_pc) prefetch(next_pc); - for (i = 0; i < NRPTE; i++) { + for (i = pte_chain_idx(pc); i < NRPTE; i++) { pte_addr_t pte_paddr = pc->ptes[i]; if (!pte_paddr) @@ -466,13 +431,14 @@ */ pc->ptes[i] = start->ptes[victim_i]; start->ptes[victim_i] = 0; - dec_page_state(nr_reverse_maps); victim_i++; if (victim_i == NRPTE) { - page->pte.chain = start->next; + page->pte.chain = pte_chain_next(start); __pte_chain_free(start); start = page->pte.chain; victim_i = 0; + } else { + start->next_and_idx++; } break; case SWAP_AGAIN: @@ -514,8 +480,8 @@ int cpu = get_cpu(); struct pte_chain **pte_chainp; - if (pte_chain->next) - pte_chain->next = NULL; + if (pte_chain->next_and_idx) + pte_chain->next_and_idx = 0; pte_chainp = &per_cpu(local_pte_chain, cpu); if (*pte_chainp) kmem_cache_free(pte_chain_cache, *pte_chainp); @@ -560,7 +526,7 @@ pte_chain_cache = kmem_cache_create( "pte_chain", sizeof(struct pte_chain), 0, - 0, + SLAB_MUST_HWCACHE_ALIGN, pte_chain_ctor, NULL); diff -Nru a/mm/slab.c b/mm/slab.c --- a/mm/slab.c Thu Mar 27 21:16:47 2003 +++ b/mm/slab.c Tue Apr 8 23:07:07 2003 @@ -387,14 +387,15 @@ }; /* Must match cache_sizes above. Out of line to keep cache footprint low. */ -static struct { - char *name; +static struct { + char *name; char *name_dma; -} cache_names[] = { +} cache_names[] = { #define CACHE(x) { .name = "size-" #x, .name_dma = "size-" #x "(DMA)" }, #include + { 0, } #undef CACHE -}; +}; struct arraycache_init initarray_cache __initdata = { { 0, BOOT_CPUCACHE_ENTRIES, 1, 0} }; struct arraycache_init initarray_generic __initdata = { { 0, BOOT_CPUCACHE_ENTRIES, 1, 0} }; diff -Nru a/mm/swap_state.c b/mm/swap_state.c --- a/mm/swap_state.c Thu Mar 27 21:14:03 2003 +++ b/mm/swap_state.c Tue Apr 8 03:16:30 2003 @@ -34,7 +34,7 @@ struct address_space swapper_space = { .page_tree = RADIX_TREE_INIT(GFP_ATOMIC), - .page_lock = RW_LOCK_UNLOCKED, + .page_lock = SPIN_LOCK_UNLOCKED, .clean_pages = LIST_HEAD_INIT(swapper_space.clean_pages), .dirty_pages = LIST_HEAD_INIT(swapper_space.dirty_pages), .io_pages = LIST_HEAD_INIT(swapper_space.io_pages), @@ -191,9 +191,9 @@ entry.val = page->index; - write_lock(&swapper_space.page_lock); + spin_lock(&swapper_space.page_lock); __delete_from_swap_cache(page); - write_unlock(&swapper_space.page_lock); + spin_unlock(&swapper_space.page_lock); swap_free(entry); page_cache_release(page); @@ -204,8 +204,8 @@ struct address_space *mapping = page->mapping; int err; - write_lock(&swapper_space.page_lock); - write_lock(&mapping->page_lock); + spin_lock(&swapper_space.page_lock); + spin_lock(&mapping->page_lock); err = radix_tree_insert(&swapper_space.page_tree, entry.val, page); if (!err) { @@ -213,8 +213,8 @@ ___add_to_page_cache(page, &swapper_space, entry.val); } - write_unlock(&mapping->page_lock); - write_unlock(&swapper_space.page_lock); + spin_unlock(&mapping->page_lock); + spin_unlock(&swapper_space.page_lock); if (!err) { if (!swap_duplicate(entry)) @@ -240,8 +240,8 @@ entry.val = page->index; - write_lock(&swapper_space.page_lock); - write_lock(&mapping->page_lock); + spin_lock(&swapper_space.page_lock); + spin_lock(&mapping->page_lock); err = radix_tree_insert(&mapping->page_tree, index, page); if (!err) { @@ -249,8 +249,8 @@ ___add_to_page_cache(page, mapping, index); } - write_unlock(&mapping->page_lock); - write_unlock(&swapper_space.page_lock); + spin_unlock(&mapping->page_lock); + spin_unlock(&swapper_space.page_lock); if (!err) { swap_free(entry); diff -Nru a/mm/swapfile.c b/mm/swapfile.c --- a/mm/swapfile.c Sat Mar 22 22:06:03 2003 +++ b/mm/swapfile.c Wed Apr 9 11:44:15 2003 @@ -248,10 +248,10 @@ /* Is the only swap cache user the cache itself? */ if (p->swap_map[swp_offset(entry)] == 1) { /* Recheck the page count with the pagecache lock held.. */ - read_lock(&swapper_space.page_lock); + spin_lock(&swapper_space.page_lock); if (page_count(page) - !!PagePrivate(page) == 2) retval = 1; - read_unlock(&swapper_space.page_lock); + spin_unlock(&swapper_space.page_lock); } swap_info_put(p); } @@ -319,13 +319,13 @@ retval = 0; if (p->swap_map[swp_offset(entry)] == 1) { /* Recheck the page count with the pagecache lock held.. */ - write_lock(&swapper_space.page_lock); + spin_lock(&swapper_space.page_lock); if ((page_count(page) == 2) && !PageWriteback(page)) { __delete_from_swap_cache(page); SetPageDirty(page); retval = 1; } - write_unlock(&swapper_space.page_lock); + spin_unlock(&swapper_space.page_lock); } swap_info_put(p); @@ -377,41 +377,33 @@ * share this swap entry, so be cautious and let do_wp_page work out * what to do if a write is requested later. */ -/* mmlist_lock and vma->vm_mm->page_table_lock are held */ +/* vma->vm_mm->page_table_lock is held */ static void unuse_pte(struct vm_area_struct *vma, unsigned long address, pte_t *dir, swp_entry_t entry, struct page *page, struct pte_chain **pte_chainp) { - pte_t pte = *dir; - - if (pte_file(pte)) - return; - if (likely(pte_to_swp_entry(pte).val != entry.val)) - return; - if (unlikely(pte_none(pte) || pte_present(pte))) - return; + vma->vm_mm->rss++; get_page(page); set_pte(dir, pte_mkold(mk_pte(page, vma->vm_page_prot))); *pte_chainp = page_add_rmap(page, dir, *pte_chainp); swap_free(entry); - ++vma->vm_mm->rss; } -/* mmlist_lock and vma->vm_mm->page_table_lock are held */ -static void unuse_pmd(struct vm_area_struct * vma, pmd_t *dir, +/* vma->vm_mm->page_table_lock is held */ +static int unuse_pmd(struct vm_area_struct * vma, pmd_t *dir, unsigned long address, unsigned long size, unsigned long offset, - swp_entry_t entry, struct page* page) + swp_entry_t entry, struct page *page, struct pte_chain **pte_chainp) { pte_t * pte; unsigned long end; - struct pte_chain *pte_chain = NULL; + pte_t swp_pte = swp_entry_to_pte(entry); if (pmd_none(*dir)) - return; + return 0; if (pmd_bad(*dir)) { pmd_ERROR(*dir); pmd_clear(dir); - return; + return 0; } pte = pte_offset_map(dir, address); offset += address & PMD_MASK; @@ -421,33 +413,36 @@ end = PMD_SIZE; do { /* - * FIXME: handle pte_chain_alloc() failures + * swapoff spends a _lot_ of time in this loop! + * Test inline before going to call unuse_pte. */ - if (pte_chain == NULL) - pte_chain = pte_chain_alloc(GFP_ATOMIC); - unuse_pte(vma, offset+address-vma->vm_start, - pte, entry, page, &pte_chain); + if (unlikely(pte_same(*pte, swp_pte))) { + unuse_pte(vma, offset + address, pte, + entry, page, pte_chainp); + pte_unmap(pte); + return 1; + } address += PAGE_SIZE; pte++; } while (address && (address < end)); pte_unmap(pte - 1); - pte_chain_free(pte_chain); + return 0; } -/* mmlist_lock and vma->vm_mm->page_table_lock are held */ -static void unuse_pgd(struct vm_area_struct * vma, pgd_t *dir, +/* vma->vm_mm->page_table_lock is held */ +static int unuse_pgd(struct vm_area_struct * vma, pgd_t *dir, unsigned long address, unsigned long size, - swp_entry_t entry, struct page* page) + swp_entry_t entry, struct page *page, struct pte_chain **pte_chainp) { pmd_t * pmd; unsigned long offset, end; if (pgd_none(*dir)) - return; + return 0; if (pgd_bad(*dir)) { pgd_ERROR(*dir); pgd_clear(dir); - return; + return 0; } pmd = pmd_offset(dir, address); offset = address & PGDIR_MASK; @@ -458,32 +453,42 @@ if (address >= end) BUG(); do { - unuse_pmd(vma, pmd, address, end - address, offset, entry, - page); + if (unuse_pmd(vma, pmd, address, end - address, + offset, entry, page, pte_chainp)) + return 1; address = (address + PMD_SIZE) & PMD_MASK; pmd++; } while (address && (address < end)); + return 0; } -/* mmlist_lock and vma->vm_mm->page_table_lock are held */ -static void unuse_vma(struct vm_area_struct * vma, pgd_t *pgdir, - swp_entry_t entry, struct page* page) +/* vma->vm_mm->page_table_lock is held */ +static int unuse_vma(struct vm_area_struct * vma, pgd_t *pgdir, + swp_entry_t entry, struct page *page, struct pte_chain **pte_chainp) { unsigned long start = vma->vm_start, end = vma->vm_end; if (start >= end) BUG(); do { - unuse_pgd(vma, pgdir, start, end - start, entry, page); + if (unuse_pgd(vma, pgdir, start, end - start, + entry, page, pte_chainp)) + return 1; start = (start + PGDIR_SIZE) & PGDIR_MASK; pgdir++; } while (start && (start < end)); + return 0; } -static void unuse_process(struct mm_struct * mm, +static int unuse_process(struct mm_struct * mm, swp_entry_t entry, struct page* page) { struct vm_area_struct* vma; + struct pte_chain *pte_chain; + + pte_chain = pte_chain_alloc(GFP_KERNEL); + if (!pte_chain) + return -ENOMEM; /* * Go through process' page directory. @@ -491,10 +496,12 @@ spin_lock(&mm->page_table_lock); for (vma = mm->mmap; vma; vma = vma->vm_next) { pgd_t * pgd = pgd_offset(mm, vma->vm_start); - unuse_vma(vma, pgd, entry, page); + if (unuse_vma(vma, pgd, entry, page, &pte_chain)) + break; } spin_unlock(&mm->page_table_lock); - return; + pte_chain_free(pte_chain); + return 0; } /* @@ -638,36 +645,54 @@ if (start_mm == &init_mm) shmem = shmem_unuse(entry, page); else - unuse_process(start_mm, entry, page); + retval = unuse_process(start_mm, entry, page); } if (*swap_map > 1) { int set_start_mm = (*swap_map >= swcount); struct list_head *p = &start_mm->mmlist; struct mm_struct *new_start_mm = start_mm; + struct mm_struct *prev_mm = start_mm; struct mm_struct *mm; + atomic_inc(&new_start_mm->mm_users); + atomic_inc(&prev_mm->mm_users); spin_lock(&mmlist_lock); - while (*swap_map > 1 && + while (*swap_map > 1 && !retval && (p = p->next) != &start_mm->mmlist) { mm = list_entry(p, struct mm_struct, mmlist); + atomic_inc(&mm->mm_users); + spin_unlock(&mmlist_lock); + mmput(prev_mm); + prev_mm = mm; + + cond_resched(); + swcount = *swap_map; - if (mm == &init_mm) { + if (swcount <= 1) + ; + else if (mm == &init_mm) { set_start_mm = 1; - spin_unlock(&mmlist_lock); shmem = shmem_unuse(entry, page); - spin_lock(&mmlist_lock); } else - unuse_process(mm, entry, page); + retval = unuse_process(mm, entry, page); if (set_start_mm && *swap_map < swcount) { + mmput(new_start_mm); + atomic_inc(&mm->mm_users); new_start_mm = mm; set_start_mm = 0; } + spin_lock(&mmlist_lock); } - atomic_inc(&new_start_mm->mm_users); spin_unlock(&mmlist_lock); + mmput(prev_mm); mmput(start_mm); start_mm = new_start_mm; } + if (retval) { + unlock_page(page); + page_cache_release(page); + break; + } /* * How could swap count reach 0x7fff when the maximum @@ -691,7 +716,7 @@ /* * If a reference remains (rare), we would like to leave - * the page in the swap cache; but try_to_swap_out could + * the page in the swap cache; but try_to_unmap could * then re-duplicate the entry once we drop page lock, * so we might loop indefinitely; also, that page could * not be swapped out to other storage meanwhile. So: @@ -727,7 +752,7 @@ /* * So we could skip searching mms once swap count went * to 1, we did not mark any present ptes as dirty: must - * mark page dirty so try_to_swap_out will preserve it. + * mark page dirty so shrink_list will preserve it. */ SetPageDirty(page); unlock_page(page); @@ -970,7 +995,7 @@ } #endif -asmlinkage long sys_swapoff(const char * specialfile) +asmlinkage long sys_swapoff(const char __user * specialfile) { struct swap_info_struct * p = NULL; unsigned short *swap_map; @@ -1174,7 +1199,7 @@ * * The swapon system call */ -asmlinkage long sys_swapon(const char * specialfile, int swap_flags) +asmlinkage long sys_swapon(const char __user * specialfile, int swap_flags) { struct swap_info_struct * p; char *name = NULL; diff -Nru a/mm/truncate.c b/mm/truncate.c --- a/mm/truncate.c Mon Feb 3 23:46:43 2003 +++ b/mm/truncate.c Tue Apr 8 03:16:30 2003 @@ -73,13 +73,13 @@ if (PagePrivate(page) && !try_to_release_page(page, 0)) return 0; - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); if (PageDirty(page)) { - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); return 0; } __remove_from_page_cache(page); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); ClearPageUptodate(page); page_cache_release(page); /* pagecache ref */ return 1; diff -Nru a/mm/vmscan.c b/mm/vmscan.c --- a/mm/vmscan.c Thu Mar 27 21:13:57 2003 +++ b/mm/vmscan.c Tue Apr 8 03:16:30 2003 @@ -325,7 +325,7 @@ goto keep_locked; if (!may_write_to_queue(mapping->backing_dev_info)) goto keep_locked; - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); if (test_clear_page_dirty(page)) { int res; struct writeback_control wbc = { @@ -336,7 +336,7 @@ }; list_move(&page->list, &mapping->locked_pages); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); SetPageReclaim(page); res = mapping->a_ops->writepage(page, &wbc); @@ -351,7 +351,7 @@ } goto keep; } - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); } /* @@ -385,7 +385,7 @@ if (!mapping) goto keep_locked; /* truncate got there first */ - write_lock(&mapping->page_lock); + spin_lock(&mapping->page_lock); /* * The non-racy check for busy page. It is critical to check @@ -393,7 +393,7 @@ * not in use by anybody. (pagecache + us == 2) */ if (page_count(page) != 2 || PageDirty(page)) { - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); goto keep_locked; } @@ -401,7 +401,7 @@ if (PageSwapCache(page)) { swp_entry_t swap = { .val = page->index }; __delete_from_swap_cache(page); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); swap_free(swap); __put_page(page); /* The pagecache ref */ goto free_it; @@ -409,7 +409,7 @@ #endif /* CONFIG_SWAP */ __remove_from_page_cache(page); - write_unlock(&mapping->page_lock); + spin_unlock(&mapping->page_lock); __put_page(page); free_it: diff -Nru a/net/8021q/vlan.c b/net/8021q/vlan.c --- a/net/8021q/vlan.c Wed Mar 19 21:17:02 2003 +++ b/net/8021q/vlan.c Tue Apr 8 17:09:33 2003 @@ -29,7 +29,6 @@ #include #include #include -#include #include #include @@ -68,7 +67,6 @@ .dev =NULL, .func = vlan_skb_recv, /* VLAN receive method */ .data = (void *)(-1), /* Set here '(void *)1' when this code can SHARE SKBs */ - .next = NULL }; /* End of global variables definitions. */ @@ -231,9 +229,8 @@ real_dev->vlan_rx_kill_vid(real_dev, vlan_id); } - br_write_lock(BR_NETPROTO_LOCK); grp->vlan_devices[vlan_id] = NULL; - br_write_unlock(BR_NETPROTO_LOCK); + synchronize_net(); /* Caller unregisters (and if necessary, puts) @@ -266,7 +263,7 @@ ret = 1; } - MOD_DEC_USE_COUNT; + module_put(THIS_MODULE); } } @@ -433,6 +430,7 @@ /* set up method calls */ new_dev->init = vlan_dev_init; new_dev->destructor = vlan_dev_destruct; + new_dev->owner = THIS_MODULE; /* new_dev->ifindex = 0; it will be set when added to * the global list. @@ -540,15 +538,21 @@ register_netdevice(new_dev); rtnl_unlock(); - + /* NOTE: We have a reference to the real device, * so hold on to the reference. */ - MOD_INC_USE_COUNT; /* Add was a success!! */ + if (!try_module_get(THIS_MODULE)) + goto out_module_dying; + #ifdef VLAN_DEBUG printk(VLAN_DBG "Allocated new device successfully, returning.\n"); #endif return new_dev; + +out_module_dying: + rtnl_lock(); + unregister_netdevice(new_dev); out_free_newdev_priv: kfree(new_dev->priv); diff -Nru a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c --- a/net/8021q/vlan_dev.c Wed Mar 19 21:17:02 2003 +++ b/net/8021q/vlan_dev.c Tue Apr 8 17:09:33 2003 @@ -31,7 +31,6 @@ #include #include #include -#include #include "vlan.h" #include "vlanproc.h" diff -Nru a/net/core/datagram.c b/net/core/datagram.c --- a/net/core/datagram.c Tue Mar 11 23:12:12 2003 +++ b/net/core/datagram.c Mon Apr 7 00:03:41 2003 @@ -220,7 +220,7 @@ int skb_copy_datagram_iovec(const struct sk_buff *skb, int offset, struct iovec *to, int len) { - int start = skb->len - skb->data_len; + int start = skb_headlen(skb); int i, copy = start - offset; /* Copy header. */ @@ -295,7 +295,7 @@ int skb_copy_and_csum_datagram(const struct sk_buff *skb, int offset, u8 *to, int len, unsigned int *csump) { - int start = skb->len - skb->data_len; + int start = skb_headlen(skb); int pos = 0; int i, copy = start - offset; diff -Nru a/net/core/skbuff.c b/net/core/skbuff.c --- a/net/core/skbuff.c Mon Mar 31 06:41:10 2003 +++ b/net/core/skbuff.c Mon Apr 7 00:03:41 2003 @@ -932,7 +932,7 @@ int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len) { int i, copy; - int start = skb->len - skb->data_len; + int start = skb_headlen(skb); if (offset > (int)skb->len - len) goto fault; @@ -1009,7 +1009,7 @@ unsigned int skb_checksum(const struct sk_buff *skb, int offset, int len, unsigned int csum) { - int start = skb->len - skb->data_len; + int start = skb_headlen(skb); int i, copy = start - offset; int pos = 0; @@ -1085,7 +1085,7 @@ unsigned int skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to, int len, unsigned int csum) { - int start = skb->len - skb->data_len; + int start = skb_headlen(skb); int i, copy = start - offset; int pos = 0; @@ -1170,9 +1170,9 @@ if (skb->ip_summed == CHECKSUM_HW) csstart = skb->h.raw - skb->data; else - csstart = skb->len - skb->data_len; + csstart = skb_headlen(skb); - if (csstart > skb->len - skb->data_len) + if (csstart > skb_headlen(skb)) BUG(); memcpy(to, skb->data, csstart); diff -Nru a/net/core/wireless.c b/net/core/wireless.c --- a/net/core/wireless.c Sun Nov 24 15:10:59 2002 +++ b/net/core/wireless.c Thu Apr 3 14:44:27 2003 @@ -54,6 +54,7 @@ #include /* rtnetlink stuff */ #include #include /* Pretty obvious */ +#include /* for __init */ #include /* New driver API */ diff -Nru a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c --- a/net/ipv4/af_inet.c Thu Apr 3 06:08:19 2003 +++ b/net/ipv4/af_inet.c Mon Apr 7 22:07:27 2003 @@ -1108,6 +1108,8 @@ } } + (void) tcp_mib_init(); + return 0; } diff -Nru a/net/ipv4/ah.c b/net/ipv4/ah.c --- a/net/ipv4/ah.c Thu Apr 3 05:19:44 2003 +++ b/net/ipv4/ah.c Tue Apr 8 17:18:33 2003 @@ -314,12 +314,14 @@ crypto_free_tfm(ahp->tfm); ahp->tfm = NULL; } + kfree(ahp); } static struct xfrm_type ah_type = { .description = "AH4", + .owner = THIS_MODULE, .proto = IPPROTO_AH, .init_state = ah_init_state, .destructor = ah_destroy, @@ -335,7 +337,6 @@ static int __init ah4_init(void) { - SET_MODULE_OWNER(&ah_type); if (xfrm_register_type(&ah_type, AF_INET) < 0) { printk(KERN_INFO "ip ah init: can't add xfrm type\n"); return -EAGAIN; diff -Nru a/net/ipv4/esp.c b/net/ipv4/esp.c --- a/net/ipv4/esp.c Thu Apr 3 07:21:40 2003 +++ b/net/ipv4/esp.c Tue Apr 8 17:18:33 2003 @@ -452,6 +452,7 @@ kfree(esp->auth.work_icv); esp->auth.work_icv = NULL; } + kfree(esp); } int esp_init_state(struct xfrm_state *x, void *args) @@ -552,6 +553,7 @@ static struct xfrm_type esp_type = { .description = "ESP4", + .owner = THIS_MODULE, .proto = IPPROTO_ESP, .init_state = esp_init_state, .destructor = esp_destroy, diff -Nru a/net/ipv4/proc.c b/net/ipv4/proc.c --- a/net/ipv4/proc.c Mon Feb 10 02:33:02 2003 +++ b/net/ipv4/proc.c Mon Apr 7 22:07:27 2003 @@ -143,9 +143,15 @@ "InSegs OutSegs RetransSegs InErrs OutRsts\nTcp:"); for (i = 0; - i < offsetof(struct tcp_mib, __pad) / sizeof(unsigned long); i++) - seq_printf(seq, " %lu", - fold_field((void **) tcp_statistics, i)); + i < offsetof(struct tcp_mib, __pad) / sizeof(unsigned long); i++) { + if (i == (offsetof(struct tcp_mib, TcpMaxConn) / sizeof(unsigned long))) + /* MaxConn field is negative, RFC 2012 */ + seq_printf(seq, " %ld", + fold_field((void **) tcp_statistics, i)); + else + seq_printf(seq, " %lu", + fold_field((void **) tcp_statistics, i)); + } seq_printf(seq, "\nUdp: InDatagrams NoPorts InErrors OutDatagrams\n" "Udp:"); diff -Nru a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c --- a/net/ipv4/tcp_output.c Wed Mar 19 19:52:56 2003 +++ b/net/ipv4/tcp_output.c Mon Apr 7 00:03:41 2003 @@ -354,7 +354,7 @@ static void skb_split(struct sk_buff *skb, struct sk_buff *skb1, u32 len) { int i; - int pos = skb->len - skb->data_len; + int pos = skb_headlen(skb); if (len < pos) { /* Split line is inside header. */ diff -Nru a/net/ipv6/ah6.c b/net/ipv6/ah6.c --- a/net/ipv6/ah6.c Thu Apr 3 05:19:44 2003 +++ b/net/ipv6/ah6.c Tue Apr 8 17:18:33 2003 @@ -313,11 +313,13 @@ crypto_free_tfm(ahp->tfm); ahp->tfm = NULL; } + kfree(ahp); } static struct xfrm_type ah6_type = { .description = "AH6", + .owner = THIS_MODULE, .proto = IPPROTO_AH, .init_state = ah6_init_state, .destructor = ah6_destroy, @@ -333,8 +335,6 @@ int __init ah6_init(void) { - SET_MODULE_OWNER(&ah6_type); - if (xfrm_register_type(&ah6_type, AF_INET6) < 0) { printk(KERN_INFO "ipv6 ah init: can't add xfrm type\n"); return -EAGAIN; diff -Nru a/net/ipv6/esp6.c b/net/ipv6/esp6.c --- a/net/ipv6/esp6.c Thu Apr 3 05:19:44 2003 +++ b/net/ipv6/esp6.c Tue Apr 8 17:18:33 2003 @@ -406,6 +406,7 @@ kfree(esp->auth.work_icv); esp->auth.work_icv = NULL; } + kfree(esp); } int esp6_init_state(struct xfrm_state *x, void *args) @@ -488,6 +489,7 @@ static struct xfrm_type esp6_type = { .description = "ESP6", + .owner = THIS_MODULE, .proto = IPPROTO_ESP, .init_state = esp6_init_state, .destructor = esp6_destroy, @@ -504,7 +506,6 @@ int __init esp6_init(void) { - SET_MODULE_OWNER(&esp6_type); if (xfrm_register_type(&esp6_type, AF_INET6) < 0) { printk(KERN_INFO "ipv6 esp init: can't add xfrm type\n"); return -EAGAIN; diff -Nru a/net/irda/irlap_event.c b/net/irda/irlap_event.c --- a/net/irda/irlap_event.c Mon Nov 4 06:54:45 2002 +++ b/net/irda/irlap_event.c Thu Apr 3 07:57:13 2003 @@ -1038,7 +1038,7 @@ * we send 2000B packets, we may wait another * 1000B until our turnaround expire. That's * why we need to be proactive in avoiding - * comming here. - Jean II + * coming here. - Jean II */ return -EPROTO; } diff -Nru a/net/irda/irlmp.c b/net/irda/irlmp.c --- a/net/irda/irlmp.c Wed Jan 8 09:00:47 2003 +++ b/net/irda/irlmp.c Thu Apr 3 07:57:13 2003 @@ -925,7 +925,7 @@ * Now, check all discovered devices (if any), and notify client * only about the services that the client is interested in * We also notify only about the new devices unless the caller - * explicity request a dump of the log. Jean II + * explicitly request a dump of the log. Jean II */ discoveries = irlmp_copy_discoveries(log, &number, client->hint_mask.word, diff -Nru a/net/rxrpc/krxtimod.c b/net/rxrpc/krxtimod.c --- a/net/rxrpc/krxtimod.c Tue Feb 11 14:57:54 2003 +++ b/net/rxrpc/krxtimod.c Mon Mar 24 22:19:06 2003 @@ -98,18 +98,18 @@ spin_lock(&krxtimod_lock); if (list_empty(&krxtimod_list)) { timeout = MAX_SCHEDULE_TIMEOUT; - } - else { - timer = list_entry(krxtimod_list.next,rxrpc_timer_t,link); - timeout = timer->timo_jif; + } else { + unsigned long tmo; + + timer = list_entry(krxtimod_list.next, + rxrpc_timer_t, link); + tmo = timer->timo_jif; jif = jiffies; - if (time_before_eq(timeout,jif)) + if (time_before_eq(tmo,jif)) goto immediate; - else { - timeout = (long)timeout - (long)jiffies; - } + timeout = (long)tmo - (long)jiffies; } spin_unlock(&krxtimod_lock); diff -Nru a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c --- a/net/sunrpc/xprt.c Thu Mar 27 09:34:08 2003 +++ b/net/sunrpc/xprt.c Mon Apr 7 15:18:12 2003 @@ -625,7 +625,8 @@ { if (len > desc->count) len = desc->count; - skb_copy_bits(desc->skb, desc->offset, to, len); + if (skb_copy_bits(desc->skb, desc->offset, to, len)) + return 0; desc->count -= len; desc->offset += len; return len; @@ -669,11 +670,15 @@ csum2 = skb_checksum(skb, desc.offset, skb->len - desc.offset, 0); desc.csum = csum_block_add(desc.csum, csum2, desc.offset); } + if (desc.count) + return -1; if ((unsigned short)csum_fold(desc.csum)) return -1; return 0; no_checksum: xdr_partial_copy_from_skb(xdr, 0, &desc, skb_read_bits); + if (desc.count) + return -1; return 0; } @@ -750,7 +755,8 @@ { if (len > desc->count) len = desc->count; - skb_copy_bits(desc->skb, desc->offset, p, len); + if (skb_copy_bits(desc->skb, desc->offset, p, len)) + return 0; desc->offset += len; desc->count -= len; return len; diff -Nru a/net/xfrm/xfrm_algo.c b/net/xfrm/xfrm_algo.c --- a/net/xfrm/xfrm_algo.c Tue Mar 25 03:11:15 2003 +++ b/net/xfrm/xfrm_algo.c Mon Apr 7 00:03:41 2003 @@ -445,7 +445,7 @@ void skb_icv_walk(const struct sk_buff *skb, struct crypto_tfm *tfm, int offset, int len, icv_update_fn_t icv_update) { - int start = skb->len - skb->data_len; + int start = skb_headlen(skb); int i, copy = start - offset; struct scatterlist sg; @@ -521,7 +521,7 @@ int skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len) { - int start = skb->len - skb->data_len; + int start = skb_headlen(skb); int i, copy = start - offset; int elt = 0; diff -Nru a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c --- a/net/xfrm/xfrm_policy.c Thu Apr 3 05:19:44 2003 +++ b/net/xfrm/xfrm_policy.c Tue Apr 8 16:16:05 2003 @@ -963,6 +963,8 @@ * are implied between each two transformations. */ for (i = pol->xfrm_nr-1, k = 0; i >= 0; i--) { + if (pol->xfrm_vec[i].optional) + continue; k = xfrm_policy_ok(pol->xfrm_vec+i, sp, k, family); if (k < 0) goto reject; diff -Nru a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c --- a/net/xfrm/xfrm_state.c Thu Apr 3 06:17:52 2003 +++ b/net/xfrm/xfrm_state.c Mon Apr 7 22:10:43 2003 @@ -13,6 +13,7 @@ * */ +#include #include #include #include @@ -41,8 +42,48 @@ static rwlock_t xfrm_state_afinfo_lock = RW_LOCK_UNLOCKED; static struct xfrm_state_afinfo *xfrm_state_afinfo[NPROTO]; +static struct work_struct xfrm_state_gc_work; +static struct list_head xfrm_state_gc_list = LIST_HEAD_INIT(xfrm_state_gc_list); +static spinlock_t xfrm_state_gc_lock = SPIN_LOCK_UNLOCKED; + static void __xfrm_state_delete(struct xfrm_state *x); +static void xfrm_state_gc_destroy(struct xfrm_state *x) +{ + if (del_timer(&x->timer)) + BUG(); + if (x->aalg) + kfree(x->aalg); + if (x->ealg) + kfree(x->ealg); + if (x->calg) + kfree(x->calg); + if (x->encap) + kfree(x->encap); + if (x->type) { + x->type->destructor(x); + xfrm_put_type(x->type); + } + kfree(x); + wake_up(&km_waitq); +} + +static void xfrm_state_gc_task(void *data) +{ + struct xfrm_state *x; + struct list_head *entry, *tmp; + struct list_head gc_list = LIST_HEAD_INIT(gc_list); + + spin_lock_bh(&xfrm_state_gc_lock); + list_splice_init(&xfrm_state_gc_list, &gc_list); + spin_unlock_bh(&xfrm_state_gc_lock); + + list_for_each_safe(entry, tmp, &gc_list) { + x = list_entry(entry, struct xfrm_state, bydst); + xfrm_state_gc_destroy(x); + } +} + static inline unsigned long make_jiffies(long secs) { if (secs >= (MAX_SCHEDULE_TIMEOUT-1)/HZ) @@ -149,28 +190,17 @@ void __xfrm_state_destroy(struct xfrm_state *x) { BUG_TRAP(x->km.state == XFRM_STATE_DEAD); - if (del_timer(&x->timer)) - BUG(); - if (x->aalg) - kfree(x->aalg); - if (x->ealg) - kfree(x->ealg); - if (x->calg) - kfree(x->calg); - if (x->encap) - kfree(x->encap); - if (x->type) - xfrm_put_type(x->type); - kfree(x); + + spin_lock_bh(&xfrm_state_gc_lock); + list_add(&x->bydst, &xfrm_state_gc_list); + spin_unlock_bh(&xfrm_state_gc_lock); + schedule_work(&xfrm_state_gc_work); } static void __xfrm_state_delete(struct xfrm_state *x) { - int kill = 0; - if (x->km.state != XFRM_STATE_DEAD) { x->km.state = XFRM_STATE_DEAD; - kill = 1; spin_lock(&xfrm_state_lock); list_del(&x->bydst); atomic_dec(&x->refcnt); @@ -189,22 +219,17 @@ */ if (atomic_read(&x->refcnt) > 2) xfrm_flush_bundles(x); - } - - /* All xfrm_state objects are created by one of two possible - * paths: - * - * 1) xfrm_state_alloc --> xfrm_state_insert - * 2) xfrm_state_lookup --> xfrm_state_insert - * - * The xfrm_state_lookup or xfrm_state_alloc call gives a - * reference, and that is what we are dropping here. - */ - atomic_dec(&x->refcnt); - if (kill && x->type) - x->type->destructor(x); - wake_up(&km_waitq); + /* All xfrm_state objects are created by one of two possible + * paths: + * + * 2) xfrm_state_lookup --> xfrm_state_insert + * + * The xfrm_state_lookup or xfrm_state_alloc call gives a + * reference, and that is what we are dropping here. + */ + atomic_dec(&x->refcnt); + } } void xfrm_state_delete(struct xfrm_state *x) @@ -773,5 +798,6 @@ INIT_LIST_HEAD(&xfrm_state_bydst[i]); INIT_LIST_HEAD(&xfrm_state_byspi[i]); } + INIT_WORK(&xfrm_state_gc_work, xfrm_state_gc_task, NULL); } diff -Nru a/scripts/per-cpu-check.awk b/scripts/per-cpu-check.awk --- a/scripts/per-cpu-check.awk Wed Mar 5 17:53:22 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,19 +0,0 @@ -/ __per_cpu_start$$/ { - IN_PER_CPU=1 -} - -/ __per_cpu_end$$/ { - IN_PER_CPU=0 -} - -/__per_cpu$$/ && ! ( / __ksymtab_/ || / __kstrtab_/ || / __kcrctab_/ || / __crc_/ ) { - if (!IN_PER_CPU) { - print $$3 " not in per-cpu section" > "/dev/stderr"; - FOUND=1; - } -} - -END { - exit FOUND; -} - diff -Nru a/sound/core/memory_wrapper.c b/sound/core/memory_wrapper.c --- a/sound/core/memory_wrapper.c Thu Mar 20 08:41:17 2003 +++ b/sound/core/memory_wrapper.c Thu Apr 3 14:52:57 2003 @@ -19,7 +19,6 @@ */ #include -#include #include #include diff -Nru a/sound/core/sgbuf.c b/sound/core/sgbuf.c --- a/sound/core/sgbuf.c Thu Mar 20 08:41:18 2003 +++ b/sound/core/sgbuf.c Thu Apr 3 14:52:57 2003 @@ -20,7 +20,6 @@ */ #include -#include #include #include #include diff -Nru a/sound/core/wrappers.c b/sound/core/wrappers.c --- a/sound/core/wrappers.c Thu Mar 20 08:41:13 2003 +++ b/sound/core/wrappers.c Thu Apr 3 14:52:57 2003 @@ -19,7 +19,6 @@ * */ -#include #include #include #include diff -Nru a/sound/isa/cs423x/pc98.c b/sound/isa/cs423x/pc98.c --- a/sound/isa/cs423x/pc98.c Thu Mar 20 10:43:51 2003 +++ b/sound/isa/cs423x/pc98.c Thu Apr 3 14:42:15 2003 @@ -3,6 +3,7 @@ * Copyright (c) by Jaroslav Kysela * Osamu Tomita * Takashi Iwai + * Hideaki Okubo * * * This program is free software; you can redistribute it and/or modify @@ -290,8 +291,13 @@ snd_printk(KERN_ERR IDENT ": Bad DMA %d\n", dma2[dev]); return -EINVAL; } - if (dma1[dev] != dma2[dev] && dma2[dev] >= 0) + + outb(dma1[dev], 0x29); /* dma1 boundary 64KB */ + if (dma1[dev] != dma2[dev] && dma2[dev] >= 0) { + outb(0, 0x5f); /* wait */ + outb(dma2[dev], 0x29); /* dma2 boundary 64KB */ intr_bits |= 0x04; + } if (PC9800_SOUND_ID() == PC9800_SOUND_ID_118) { /* Set up CanBe control registers. */ diff -Nru a/sound/oss/ac97_codec.c b/sound/oss/ac97_codec.c --- a/sound/oss/ac97_codec.c Fri Feb 7 00:20:35 2003 +++ b/sound/oss/ac97_codec.c Thu Apr 3 14:52:57 2003 @@ -43,7 +43,6 @@ * Isolated from trident.c to support multiple ac97 codec */ #include -#include #include #include #include diff -Nru a/sound/oss/ad1816.c b/sound/oss/ad1816.c --- a/sound/oss/ad1816.c Tue Feb 25 02:08:59 2003 +++ b/sound/oss/ad1816.c Thu Apr 3 14:35:48 2003 @@ -518,20 +518,20 @@ static struct audio_driver ad1816_audio_driver = { - owner: THIS_MODULE, - open: ad1816_open, - close: ad1816_close, - output_block: ad1816_output_block, - start_input: ad1816_start_input, - prepare_for_input: ad1816_prepare_for_input, - prepare_for_output: ad1816_prepare_for_output, - halt_io: ad1816_halt, - halt_input: ad1816_halt_input, - halt_output: ad1816_halt_output, - trigger: ad1816_trigger, - set_speed: ad1816_set_speed, - set_bits: ad1816_set_bits, - set_channels: ad1816_set_channels, + .owner = THIS_MODULE, + .open = ad1816_open, + .close = ad1816_close, + .output_block = ad1816_output_block, + .start_input = ad1816_start_input, + .prepare_for_input = ad1816_prepare_for_input, + .prepare_for_output = ad1816_prepare_for_output, + .halt_io = ad1816_halt, + .halt_input = ad1816_halt_input, + .halt_output = ad1816_halt_output, + .trigger = ad1816_trigger, + .set_speed = ad1816_set_speed, + .set_bits = ad1816_set_bits, + .set_channels = ad1816_set_channels, }; @@ -970,10 +970,10 @@ /* Mixer structure */ static struct mixer_operations ad1816_mixer_operations = { - owner: THIS_MODULE, - id: "AD1816", - name: "AD1816 Mixer", - ioctl: ad1816_mixer_ioctl + .owner = THIS_MODULE, + .id = "AD1816", + .name = "AD1816 Mixer", + .ioctl = ad1816_mixer_ioctl }; diff -Nru a/sound/oss/ad1848.c b/sound/oss/ad1848.c --- a/sound/oss/ad1848.c Thu Feb 27 02:32:05 2003 +++ b/sound/oss/ad1848.c Thu Apr 3 14:35:48 2003 @@ -943,28 +943,28 @@ static struct audio_driver ad1848_audio_driver = { - owner: THIS_MODULE, - open: ad1848_open, - close: ad1848_close, - output_block: ad1848_output_block, - start_input: ad1848_start_input, - prepare_for_input: ad1848_prepare_for_input, - prepare_for_output: ad1848_prepare_for_output, - halt_io: ad1848_halt, - halt_input: ad1848_halt_input, - halt_output: ad1848_halt_output, - trigger: ad1848_trigger, - set_speed: ad1848_set_speed, - set_bits: ad1848_set_bits, - set_channels: ad1848_set_channels + .owner = THIS_MODULE, + .open = ad1848_open, + .close = ad1848_close, + .output_block = ad1848_output_block, + .start_input = ad1848_start_input, + .prepare_for_input = ad1848_prepare_for_input, + .prepare_for_output = ad1848_prepare_for_output, + .halt_io = ad1848_halt, + .halt_input = ad1848_halt_input, + .halt_output = ad1848_halt_output, + .trigger = ad1848_trigger, + .set_speed = ad1848_set_speed, + .set_bits = ad1848_set_bits, + .set_channels = ad1848_set_channels }; static struct mixer_operations ad1848_mixer_operations = { - owner: THIS_MODULE, - id: "SOUNDPORT", - name: "AD1848/CS4248/CS4231", - ioctl: ad1848_mixer_ioctl + .owner = THIS_MODULE, + .id = "SOUNDPORT", + .name = "AD1848/CS4248/CS4231", + .ioctl = ad1848_mixer_ioctl }; static int ad1848_open(int dev, int mode) diff -Nru a/sound/oss/awe_wave.c b/sound/oss/awe_wave.c --- a/sound/oss/awe_wave.c Thu Mar 20 18:25:40 2003 +++ b/sound/oss/awe_wave.c Thu Apr 3 14:35:48 2003 @@ -493,28 +493,28 @@ static struct synth_operations awe_operations = { - owner: THIS_MODULE, - id: "EMU8K", - info: &awe_info, - midi_dev: 0, - synth_type: SYNTH_TYPE_SAMPLE, - synth_subtype: SAMPLE_TYPE_AWE32, - open: awe_open, - close: awe_close, - ioctl: awe_ioctl, - kill_note: awe_kill_note, - start_note: awe_start_note, - set_instr: awe_set_instr_2, - reset: awe_reset, - hw_control: awe_hw_control, - load_patch: awe_load_patch, - aftertouch: awe_aftertouch, - controller: awe_controller, - panning: awe_panning, - volume_method: awe_volume_method, - bender: awe_bender, - alloc_voice: awe_alloc, - setup_voice: awe_setup_voice + .owner = THIS_MODULE, + .id = "EMU8K", + .info = &awe_info, + .midi_dev = 0, + .synth_type = SYNTH_TYPE_SAMPLE, + .synth_subtype = SAMPLE_TYPE_AWE32, + .open = awe_open, + .close = awe_close, + .ioctl = awe_ioctl, + .kill_note = awe_kill_note, + .start_note = awe_start_note, + .set_instr = awe_set_instr_2, + .reset = awe_reset, + .hw_control = awe_hw_control, + .load_patch = awe_load_patch, + .aftertouch = awe_aftertouch, + .controller = awe_controller, + .panning = awe_panning, + .volume_method = awe_volume_method, + .bender = awe_bender, + .alloc_voice = awe_alloc, + .setup_voice = awe_setup_voice }; @@ -4287,10 +4287,10 @@ static int my_mixerdev = -1; static struct mixer_operations awe_mixer_operations = { - owner: THIS_MODULE, - id: "AWE", - name: "AWE32 Equalizer", - ioctl: awe_mixer_ioctl, + .owner = THIS_MODULE, + .id = "AWE", + .name = "AWE32 Equalizer", + .ioctl = awe_mixer_ioctl, }; static void __init attach_mixer(void) @@ -5232,13 +5232,13 @@ static struct midi_operations awe_midi_operations = { - owner: THIS_MODULE, - info: {"AWE Midi Emu", 0, 0, SNDCARD_SB}, - in_info: {0}, - open: awe_midi_open, /*open*/ - close: awe_midi_close, /*close*/ - ioctl: awe_midi_ioctl, /*ioctl*/ - outputc: awe_midi_outputc, /*outputc*/ + .owner = THIS_MODULE, + .info = {"AWE Midi Emu", 0, 0, SNDCARD_SB}, + .in_info = {0}, + .open = awe_midi_open, /*open*/ + .close = awe_midi_close, /*close*/ + .ioctl = awe_midi_ioctl, /*ioctl*/ + .outputc = awe_midi_outputc, /*outputc*/ }; static int my_mididev = -1; diff -Nru a/sound/oss/btaudio.c b/sound/oss/btaudio.c --- a/sound/oss/btaudio.c Wed Jul 10 06:33:14 2002 +++ b/sound/oss/btaudio.c Thu Apr 3 14:52:57 2003 @@ -19,7 +19,6 @@ */ -#include #include #include #include @@ -426,11 +425,11 @@ } static struct file_operations btaudio_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - open: btaudio_mixer_open, - release: btaudio_mixer_release, - ioctl: btaudio_mixer_ioctl, + .owner = THIS_MODULE, + .llseek = no_llseek, + .open = btaudio_mixer_open, + .release = btaudio_mixer_release, + .ioctl = btaudio_mixer_ioctl, }; /* -------------------------------------------------------------- */ @@ -791,25 +790,25 @@ } static struct file_operations btaudio_digital_dsp_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - open: btaudio_dsp_open_digital, - release: btaudio_dsp_release, - read: btaudio_dsp_read, - write: btaudio_dsp_write, - ioctl: btaudio_dsp_ioctl, - poll: btaudio_dsp_poll, + .owner = THIS_MODULE, + .llseek = no_llseek, + .open = btaudio_dsp_open_digital, + .release = btaudio_dsp_release, + .read = btaudio_dsp_read, + .write = btaudio_dsp_write, + .ioctl = btaudio_dsp_ioctl, + .poll = btaudio_dsp_poll, }; static struct file_operations btaudio_analog_dsp_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - open: btaudio_dsp_open_analog, - release: btaudio_dsp_release, - read: btaudio_dsp_read, - write: btaudio_dsp_write, - ioctl: btaudio_dsp_ioctl, - poll: btaudio_dsp_poll, + .owner = THIS_MODULE, + .llseek = no_llseek, + .open = btaudio_dsp_open_analog, + .release = btaudio_dsp_release, + .read = btaudio_dsp_read, + .write = btaudio_dsp_write, + .ioctl = btaudio_dsp_ioctl, + .poll = btaudio_dsp_poll, }; /* -------------------------------------------------------------- */ @@ -882,12 +881,12 @@ static struct cardinfo cards[] = { [0] = { - name: "default", - rate: 32000, + .name = "default", + .rate = 32000, }, [BTA_OSPREY200] = { - name: "Osprey 200", - rate: 44100, + .name = "Osprey 200", + .rate = 44100, }, }; @@ -1062,31 +1061,31 @@ static struct pci_device_id btaudio_pci_tbl[] __devinitdata = { { - vendor: PCI_VENDOR_ID_BROOKTREE, - device: 0x0878, - subvendor: 0x0070, - subdevice: 0xff01, - driver_data: BTA_OSPREY200, + .vendor = PCI_VENDOR_ID_BROOKTREE, + .device = 0x0878, + .subvendor = 0x0070, + .subdevice = 0xff01, + .driver_data = BTA_OSPREY200, },{ - vendor: PCI_VENDOR_ID_BROOKTREE, - device: 0x0878, - subvendor: PCI_ANY_ID, - subdevice: PCI_ANY_ID, + .vendor = PCI_VENDOR_ID_BROOKTREE, + .device = 0x0878, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, },{ - vendor: PCI_VENDOR_ID_BROOKTREE, - device: 0x0878, - subvendor: PCI_ANY_ID, - subdevice: PCI_ANY_ID, + .vendor = PCI_VENDOR_ID_BROOKTREE, + .device = 0x0878, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, },{ /* --- end of list --- */ } }; static struct pci_driver btaudio_pci_driver = { - name: "btaudio", - id_table: btaudio_pci_tbl, - probe: btaudio_probe, - remove: __devexit_p(btaudio_remove), + .name = "btaudio", + .id_table = btaudio_pci_tbl, + .probe = btaudio_probe, + .remove = __devexit_p(btaudio_remove), }; static int btaudio_init_module(void) diff -Nru a/sound/oss/cmpci.c b/sound/oss/cmpci.c --- a/sound/oss/cmpci.c Fri Jan 3 13:38:48 2003 +++ b/sound/oss/cmpci.c Thu Apr 3 14:52:57 2003 @@ -87,7 +87,6 @@ */ /*****************************************************************************/ -#include #include #include #include diff -Nru a/sound/oss/cs4232.c b/sound/oss/cs4232.c --- a/sound/oss/cs4232.c Wed Feb 26 02:52:04 2003 +++ b/sound/oss/cs4232.c Thu Apr 3 14:54:38 2003 @@ -313,7 +313,7 @@ } } -static void __exit unload_cs4232(struct address_info *hw_config) +static void __devexit unload_cs4232(struct address_info *hw_config) { int base = hw_config->io_base, irq = hw_config->irq; int dma1 = hw_config->dma, dma2 = hw_config->dma2; @@ -428,7 +428,7 @@ return 0; } -static void cs4232_pnp_remove(struct pnp_dev *dev) +static void __devexit cs4232_pnp_remove(struct pnp_dev *dev) { struct address_info *cfg = pnp_get_drvdata(dev); if (cfg) { @@ -441,7 +441,7 @@ .name = "cs4232", .id_table = cs4232_pnp_table, .probe = cs4232_pnp_probe, - .remove = cs4232_pnp_remove, + .remove = __devexit_p(cs4232_pnp_remove), }; static int __init init_cs4232(void) diff -Nru a/sound/oss/cs4281/cs4281m.c b/sound/oss/cs4281/cs4281m.c --- a/sound/oss/cs4281/cs4281m.c Mon Nov 18 04:40:55 2002 +++ b/sound/oss/cs4281/cs4281m.c Thu Apr 3 14:52:57 2003 @@ -58,7 +58,6 @@ //#define NOT_CS4281_PM 1 #include -#include #include #include #include diff -Nru a/sound/oss/cs46xx.c b/sound/oss/cs46xx.c --- a/sound/oss/cs46xx.c Thu Mar 6 14:01:50 2003 +++ b/sound/oss/cs46xx.c Thu Apr 3 14:52:57 2003 @@ -77,7 +77,6 @@ #include #include -#include #include #include #include diff -Nru a/sound/oss/dmasound/dmasound_atari.c b/sound/oss/dmasound/dmasound_atari.c --- a/sound/oss/dmasound/dmasound_atari.c Sat Sep 28 18:38:50 2002 +++ b/sound/oss/dmasound/dmasound_atari.c Thu Apr 3 14:34:57 2003 @@ -767,39 +767,39 @@ static TRANS transTTNormal = { - ct_ulaw: ata_ct_law, - ct_alaw: ata_ct_law, - ct_s8: ata_ct_s8, - ct_u8: ata_ct_u8, + .ct_ulaw = ata_ct_law, + .ct_alaw = ata_ct_law, + .ct_s8 = ata_ct_s8, + .ct_u8 = ata_ct_u8, }; static TRANS transTTExpanding = { - ct_ulaw: ata_ctx_law, - ct_alaw: ata_ctx_law, - ct_s8: ata_ctx_s8, - ct_u8: ata_ctx_u8, + .ct_ulaw = ata_ctx_law, + .ct_alaw = ata_ctx_law, + .ct_s8 = ata_ctx_s8, + .ct_u8 = ata_ctx_u8, }; static TRANS transFalconNormal = { - ct_ulaw: ata_ct_law, - ct_alaw: ata_ct_law, - ct_s8: ata_ct_s8, - ct_u8: ata_ct_u8, - ct_s16be: ata_ct_s16be, - ct_u16be: ata_ct_u16be, - ct_s16le: ata_ct_s16le, - ct_u16le: ata_ct_u16le + .ct_ulaw = ata_ct_law, + .ct_alaw = ata_ct_law, + .ct_s8 = ata_ct_s8, + .ct_u8 = ata_ct_u8, + .ct_s16be = ata_ct_s16be, + .ct_u16be = ata_ct_u16be, + .ct_s16le = ata_ct_s16le, + .ct_u16le = ata_ct_u16le }; static TRANS transFalconExpanding = { - ct_ulaw: ata_ctx_law, - ct_alaw: ata_ctx_law, - ct_s8: ata_ctx_s8, - ct_u8: ata_ctx_u8, - ct_s16be: ata_ctx_s16be, - ct_u16be: ata_ctx_u16be, - ct_s16le: ata_ctx_s16le, - ct_u16le: ata_ctx_u16le, + .ct_ulaw = ata_ctx_law, + .ct_alaw = ata_ctx_law, + .ct_s8 = ata_ctx_s8, + .ct_u8 = ata_ctx_u8, + .ct_s16be = ata_ctx_s16be, + .ct_u16be = ata_ctx_u16be, + .ct_s16le = ata_ctx_s16le, + .ct_u16le = ata_ctx_u16le, }; @@ -1495,81 +1495,81 @@ /*** Machine definitions *****************************************************/ static SETTINGS def_hard_falcon = { - format: AFMT_S8, - stereo: 0, - size: 8, - speed: 8195 + .format = AFMT_S8, + .stereo = 0, + .size = 8, + .speed = 8195 } ; static SETTINGS def_hard_tt = { - format: AFMT_S8, - stereo: 0, - size: 8, - speed: 12517 + .format = AFMT_S8, + .stereo = 0, + .size = 8, + .speed = 12517 } ; static SETTINGS def_soft = { - format: AFMT_U8, - stereo: 0, - size: 8, - speed: 8000 + .format = AFMT_U8, + .stereo = 0, + .size = 8, + .speed = 8000 } ; static MACHINE machTT = { - name: "Atari", - name2: "TT", - open: AtaOpen, - release: AtaRelease, - dma_alloc: AtaAlloc, - dma_free: AtaFree, - irqinit: AtaIrqInit, + .name = "Atari", + .name2 = "TT", + .open = AtaOpen, + .release = AtaRelease, + .dma_alloc = AtaAlloc, + .dma_free = AtaFree, + .irqinit = AtaIrqInit, #ifdef MODULE - irqcleanup: AtaIrqCleanUp, + .irqcleanup = AtaIrqCleanUp, #endif /* MODULE */ - init: TTInit, - silence: TTSilence, - setFormat: TTSetFormat, - setVolume: TTSetVolume, - setBass: AtaSetBass, - setTreble: AtaSetTreble, - setGain: TTSetGain, - play: AtaPlay, - mixer_init: TTMixerInit, - mixer_ioctl: TTMixerIoctl, - write_sq_setup: AtaWriteSqSetup, - sq_open: AtaSqOpen, - state_info: TTStateInfo, - min_dsp_speed: 6258, - version: ((DMASOUND_ATARI_REVISION<<8) | DMASOUND_ATARI_EDITION), - hardware_afmts: AFMT_S8, /* h'ware-supported formats *only* here */ - capabilities: DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ + .init = TTInit, + .silence = TTSilence, + .setFormat = TTSetFormat, + .setVolume = TTSetVolume, + .setBass = AtaSetBass, + .setTreble = AtaSetTreble, + .setGain = TTSetGain, + .play = AtaPlay, + .mixer_init = TTMixerInit, + .mixer_ioctl = TTMixerIoctl, + .write_sq_setup = AtaWriteSqSetup, + .sq_open = AtaSqOpen, + .state_info = TTStateInfo, + .min_dsp_speed = 6258, + .version = ((DMASOUND_ATARI_REVISION<<8) | DMASOUND_ATARI_EDITION), + .hardware_afmts = AFMT_S8, /* h'ware-supported formats *only* here */ + .capabilities = DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ }; static MACHINE machFalcon = { - name: "Atari", - name2: "FALCON", - dma_alloc: AtaAlloc, - dma_free: AtaFree, - irqinit: AtaIrqInit, + .name = "Atari", + .name2 = "FALCON", + .dma_alloc = AtaAlloc, + .dma_free = AtaFree, + .irqinit = AtaIrqInit, #ifdef MODULE - irqcleanup: AtaIrqCleanUp, + .irqcleanup = AtaIrqCleanUp, #endif /* MODULE */ - init: FalconInit, - silence: FalconSilence, - setFormat: FalconSetFormat, - setVolume: FalconSetVolume, - setBass: AtaSetBass, - setTreble: AtaSetTreble, - play: AtaPlay, - mixer_init: FalconMixerInit, - mixer_ioctl: FalconMixerIoctl, - write_sq_setup: AtaWriteSqSetup, - sq_open: AtaSqOpen, - state_info: FalconStateInfo, - min_dsp_speed: 8195, - version: ((DMASOUND_ATARI_REVISION<<8) | DMASOUND_ATARI_EDITION), - hardware_afmts: (AFMT_S8 | AFMT_S16_BE), /* h'ware-supported formats *only* here */ - capabilities: DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ + .init = FalconInit, + .silence = FalconSilence, + .setFormat = FalconSetFormat, + .setVolume = FalconSetVolume, + .setBass = AtaSetBass, + .setTreble = AtaSetTreble, + .play = AtaPlay, + .mixer_init = FalconMixerInit, + .mixer_ioctl = FalconMixerIoctl, + .write_sq_setup = AtaWriteSqSetup, + .sq_open = AtaSqOpen, + .state_info = FalconStateInfo, + .min_dsp_speed = 8195, + .version = ((DMASOUND_ATARI_REVISION<<8) | DMASOUND_ATARI_EDITION), + .hardware_afmts = (AFMT_S8 | AFMT_S16_BE), /* h'ware-supported formats *only* here */ + .capabilities = DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ }; diff -Nru a/sound/oss/dmasound/dmasound_awacs.c b/sound/oss/dmasound/dmasound_awacs.c --- a/sound/oss/dmasound/dmasound_awacs.c Tue Feb 25 02:51:20 2003 +++ b/sound/oss/dmasound/dmasound_awacs.c Thu Apr 3 14:34:57 2003 @@ -2405,45 +2405,45 @@ /*** Machine definitions *****************************************************/ static SETTINGS def_hard = { - format: AFMT_S16_BE, - stereo: 1, - size: 16, - speed: 44100 + .format = AFMT_S16_BE, + .stereo = 1, + .size = 16, + .speed = 44100 } ; static SETTINGS def_soft = { - format: AFMT_S16_BE, - stereo: 1, - size: 16, - speed: 44100 + .format = AFMT_S16_BE, + .stereo = 1, + .size = 16, + .speed = 44100 } ; static MACHINE machPMac = { - name: awacs_name, - name2: "PowerMac Built-in Sound", - open: PMacOpen, - release: PMacRelease, - dma_alloc: PMacAlloc, - dma_free: PMacFree, - irqinit: PMacIrqInit, + .name = awacs_name, + .name2 = "PowerMac Built-in Sound", + .open = PMacOpen, + .release = PMacRelease, + .dma_alloc = PMacAlloc, + .dma_free = PMacFree, + .irqinit = PMacIrqInit, #ifdef MODULE - irqcleanup: PMacIrqCleanup, + .irqcleanup = PMacIrqCleanup, #endif /* MODULE */ - init: PMacInit, - silence: PMacSilence, - setFormat: PMacSetFormat, - setVolume: PMacSetVolume, - play: PMacPlay, - record: NULL, /* default to no record */ - mixer_init: PMacMixerInit, - mixer_ioctl: PMacMixerIoctl, - write_sq_setup: PMacWriteSqSetup, - read_sq_setup: PMacReadSqSetup, - state_info: PMacStateInfo, - abort_read: PMacAbortRead, - min_dsp_speed: 7350, - max_dsp_speed: 44100, - version: ((DMASOUND_AWACS_REVISION<<8) + DMASOUND_AWACS_EDITION) + .init = PMacInit, + .silence = PMacSilence, + .setFormat = PMacSetFormat, + .setVolume = PMacSetVolume, + .play = PMacPlay, + .record = NULL, /* default to no record */ + .mixer_init = PMacMixerInit, + .mixer_ioctl = PMacMixerIoctl, + .write_sq_setup = PMacWriteSqSetup, + .read_sq_setup = PMacReadSqSetup, + .state_info = PMacStateInfo, + .abort_read = PMacAbortRead, + .min_dsp_speed = 7350, + .max_dsp_speed = 44100, + .version = ((DMASOUND_AWACS_REVISION<<8) + DMASOUND_AWACS_EDITION) }; diff -Nru a/sound/oss/dmasound/dmasound_core.c b/sound/oss/dmasound/dmasound_core.c --- a/sound/oss/dmasound/dmasound_core.c Tue Feb 25 10:44:37 2003 +++ b/sound/oss/dmasound/dmasound_core.c Thu Apr 3 14:34:57 2003 @@ -367,11 +367,11 @@ static struct file_operations mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: mixer_ioctl, - open: mixer_open, - release: mixer_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = mixer_ioctl, + .open = mixer_open, + .release = mixer_release, }; static void __init mixer_init(void) @@ -1325,15 +1325,15 @@ static struct file_operations sq_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - write: sq_write, - poll: sq_poll, - ioctl: sq_ioctl, - open: sq_open, - release: sq_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .write = sq_write, + .poll = sq_poll, + .ioctl = sq_ioctl, + .open = sq_open, + .release = sq_release, #ifdef HAS_RECORD - read: NULL /* default to no read for compat mode */ + .read = NULL /* default to no read for compat mode */ #endif }; @@ -1548,11 +1548,11 @@ } static struct file_operations state_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: state_read, - open: state_open, - release: state_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = state_read, + .open = state_open, + .release = state_release, }; static int __init state_init(void) diff -Nru a/sound/oss/dmasound/dmasound_paula.c b/sound/oss/dmasound/dmasound_paula.c --- a/sound/oss/dmasound/dmasound_paula.c Wed Mar 27 05:07:17 2002 +++ b/sound/oss/dmasound/dmasound_paula.c Thu Apr 3 14:34:57 2003 @@ -298,14 +298,14 @@ static TRANS transAmiga = { - ct_ulaw: ami_ct_ulaw, - ct_alaw: ami_ct_alaw, - ct_s8: ami_ct_s8, - ct_u8: ami_ct_u8, - ct_s16be: ami_ct_s16be, - ct_u16be: ami_ct_u16be, - ct_s16le: ami_ct_s16le, - ct_u16le: ami_ct_u16le, + .ct_ulaw = ami_ct_ulaw, + .ct_alaw = ami_ct_alaw, + .ct_s8 = ami_ct_s8, + .ct_u8 = ami_ct_u8, + .ct_s16be = ami_ct_s16be, + .ct_u16be = ami_ct_u16be, + .ct_s16le = ami_ct_s16le, + .ct_u16le = ami_ct_u16le, }; /*** Low level stuff *********************************************************/ @@ -681,44 +681,44 @@ /*** Machine definitions *****************************************************/ static SETTINGS def_hard = { - format: AFMT_S8, - stereo: 0, - size: 8, - speed: 8000 + .format = AFMT_S8, + .stereo = 0, + .size = 8, + .speed = 8000 } ; static SETTINGS def_soft = { - format: AFMT_U8, - stereo: 0, - size: 8, - speed: 8000 + .format = AFMT_U8, + .stereo = 0, + .size = 8, + .speed = 8000 } ; static MACHINE machAmiga = { - name: "Amiga", - name2: "AMIGA", - open: AmiOpen, - release: AmiRelease, - dma_alloc: AmiAlloc, - dma_free: AmiFree, - irqinit: AmiIrqInit, + .name = "Amiga", + .name2 = "AMIGA", + .open = AmiOpen, + .release = AmiRelease, + .dma_alloc = AmiAlloc, + .dma_free = AmiFree, + .irqinit = AmiIrqInit, #ifdef MODULE - irqcleanup: AmiIrqCleanUp, + .irqcleanup = AmiIrqCleanUp, #endif /* MODULE */ - init: AmiInit, - silence: AmiSilence, - setFormat: AmiSetFormat, - setVolume: AmiSetVolume, - setTreble: AmiSetTreble, - play: AmiPlay, - mixer_init: AmiMixerInit, - mixer_ioctl: AmiMixerIoctl, - write_sq_setup: AmiWriteSqSetup, - state_info: AmiStateInfo, - min_dsp_speed: 8000, - version: ((DMASOUND_PAULA_REVISION<<8) | DMASOUND_PAULA_EDITION), - hardware_afmts: (AFMT_S8 | AFMT_S16_BE), /* h'ware-supported formats *only* here */ - capabilities: DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ + .init = AmiInit, + .silence = AmiSilence, + .setFormat = AmiSetFormat, + .setVolume = AmiSetVolume, + .setTreble = AmiSetTreble, + .play = AmiPlay, + .mixer_init = AmiMixerInit, + .mixer_ioctl = AmiMixerIoctl, + .write_sq_setup = AmiWriteSqSetup, + .state_info = AmiStateInfo, + .min_dsp_speed = 8000, + .version = ((DMASOUND_PAULA_REVISION<<8) | DMASOUND_PAULA_EDITION), + .hardware_afmts = (AFMT_S8 | AFMT_S16_BE), /* h'ware-supported formats *only* here */ + .capabilities = DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ }; diff -Nru a/sound/oss/dmasound/dmasound_q40.c b/sound/oss/dmasound/dmasound_q40.c --- a/sound/oss/dmasound/dmasound_q40.c Sat Sep 28 18:38:50 2002 +++ b/sound/oss/dmasound/dmasound_q40.c Thu Apr 3 14:34:57 2003 @@ -584,39 +584,39 @@ /*** Machine definitions *****************************************************/ static SETTINGS def_hard = { - format: AFMT_U8, - stereo: 0, - size: 8, - speed: 10000 + .format = AFMT_U8, + .stereo = 0, + .size = 8, + .speed = 10000 } ; static SETTINGS def_soft = { - format: AFMT_U8, - stereo: 0, - size: 8, - speed: 8000 + .format = AFMT_U8, + .stereo = 0, + .size = 8, + .speed = 8000 } ; static MACHINE machQ40 = { - name: "Q40", - name2: "Q40", - open: Q40Open, - release: Q40Release, - dma_alloc: Q40Alloc, - dma_free: Q40Free, - irqinit: Q40IrqInit, + .name = "Q40", + .name2 = "Q40", + .open = Q40Open, + .release = Q40Release, + .dma_alloc = Q40Alloc, + .dma_free = Q40Free, + .irqinit = Q40IrqInit, #ifdef MODULE - irqcleanup: Q40IrqCleanUp, + .irqcleanup = Q40IrqCleanUp, #endif /* MODULE */ - init: Q40Init, - silence: Q40Silence, - setFormat: Q40SetFormat, - setVolume: Q40SetVolume, - play: Q40Play, - min_dsp_speed: 10000, - version: ((DMASOUND_Q40_REVISION<<8) | DMASOUND_Q40_EDITION), - hardware_afmts: AFMT_U8, /* h'ware-supported formats *only* here */ - capabilities: DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ + .init = Q40Init, + .silence = Q40Silence, + .setFormat = Q40SetFormat, + .setVolume = Q40SetVolume, + .play = Q40Play, + .min_dsp_speed = 10000, + .version = ((DMASOUND_Q40_REVISION<<8) | DMASOUND_Q40_EDITION), + .hardware_afmts = AFMT_U8, /* h'ware-supported formats *only* here */ + .capabilities = DSP_CAP_BATCH /* As per SNDCTL_DSP_GETCAPS */ }; diff -Nru a/sound/oss/emu10k1/audio.c b/sound/oss/emu10k1/audio.c --- a/sound/oss/emu10k1/audio.c Thu Mar 13 16:52:26 2003 +++ b/sound/oss/emu10k1/audio.c Thu Apr 3 14:52:57 2003 @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include @@ -1020,7 +1019,7 @@ } struct vm_operations_struct emu10k1_mm_ops = { - nopage: emu10k1_mm_nopage, + .nopage = emu10k1_mm_nopage, }; static int emu10k1_audio_mmap(struct file *file, struct vm_area_struct *vma) @@ -1558,13 +1557,13 @@ } struct file_operations emu10k1_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: emu10k1_audio_read, - write: emu10k1_audio_write, - poll: emu10k1_audio_poll, - ioctl: emu10k1_audio_ioctl, - mmap: emu10k1_audio_mmap, - open: emu10k1_audio_open, - release: emu10k1_audio_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = emu10k1_audio_read, + .write = emu10k1_audio_write, + .poll = emu10k1_audio_poll, + .ioctl = emu10k1_audio_ioctl, + .mmap = emu10k1_audio_mmap, + .open = emu10k1_audio_open, + .release = emu10k1_audio_release, }; diff -Nru a/sound/oss/emu10k1/main.c b/sound/oss/emu10k1/main.c --- a/sound/oss/emu10k1/main.c Sun Feb 16 16:30:06 2003 +++ b/sound/oss/emu10k1/main.c Thu Apr 3 14:52:57 2003 @@ -86,7 +86,6 @@ *********************************************************************/ /* These are only included once per module */ -#include #include #include #include @@ -1144,10 +1143,10 @@ MODULE_LICENSE("GPL"); static struct pci_driver emu10k1_pci_driver = { - name: "emu10k1", - id_table: emu10k1_pci_tbl, - probe: emu10k1_probe, - remove: __devexit_p(emu10k1_remove), + .name = "emu10k1", + .id_table = emu10k1_pci_tbl, + .probe = emu10k1_probe, + .remove = __devexit_p(emu10k1_remove), }; static int __init emu10k1_init_module(void) diff -Nru a/sound/oss/emu10k1/midi.c b/sound/oss/emu10k1/midi.c --- a/sound/oss/emu10k1/midi.c Thu Mar 13 16:52:26 2003 +++ b/sound/oss/emu10k1/midi.c Thu Apr 3 14:52:57 2003 @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -465,12 +464,12 @@ /* MIDI file operations */ struct file_operations emu10k1_midi_fops = { - owner: THIS_MODULE, - read: emu10k1_midi_read, - write: emu10k1_midi_write, - poll: emu10k1_midi_poll, - open: emu10k1_midi_open, - release: emu10k1_midi_release, + .owner = THIS_MODULE, + .read = emu10k1_midi_read, + .write = emu10k1_midi_write, + .poll = emu10k1_midi_poll, + .open = emu10k1_midi_open, + .release = emu10k1_midi_release, }; diff -Nru a/sound/oss/emu10k1/mixer.c b/sound/oss/emu10k1/mixer.c --- a/sound/oss/emu10k1/mixer.c Thu Mar 13 16:52:26 2003 +++ b/sound/oss/emu10k1/mixer.c Thu Apr 3 14:52:57 2003 @@ -31,7 +31,6 @@ */ #include -#include #include #include @@ -675,9 +674,9 @@ } struct file_operations emu10k1_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: emu10k1_mixer_ioctl, - open: emu10k1_mixer_open, - release: emu10k1_mixer_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = emu10k1_mixer_ioctl, + .open = emu10k1_mixer_open, + .release = emu10k1_mixer_release, }; diff -Nru a/sound/oss/emu10k1/passthrough.c b/sound/oss/emu10k1/passthrough.c --- a/sound/oss/emu10k1/passthrough.c Thu Mar 13 16:52:26 2003 +++ b/sound/oss/emu10k1/passthrough.c Thu Apr 3 14:52:57 2003 @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include diff -Nru a/sound/oss/es1370.c b/sound/oss/es1370.c --- a/sound/oss/es1370.c Thu Jan 16 17:59:37 2003 +++ b/sound/oss/es1370.c Thu Apr 3 14:52:57 2003 @@ -140,7 +140,6 @@ /*****************************************************************************/ -#include #include #include #include @@ -1054,11 +1053,11 @@ } static /*const*/ struct file_operations es1370_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: es1370_ioctl_mixdev, - open: es1370_open_mixdev, - release: es1370_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = es1370_ioctl_mixdev, + .open = es1370_open_mixdev, + .release = es1370_release_mixdev, }; /* --------------------------------------------------------------------- */ @@ -1816,15 +1815,15 @@ } static /*const*/ struct file_operations es1370_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: es1370_read, - write: es1370_write, - poll: es1370_poll, - ioctl: es1370_ioctl, - mmap: es1370_mmap, - open: es1370_open, - release: es1370_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = es1370_read, + .write = es1370_write, + .poll = es1370_poll, + .ioctl = es1370_ioctl, + .mmap = es1370_mmap, + .open = es1370_open, + .release = es1370_release, }; /* --------------------------------------------------------------------- */ @@ -2240,14 +2239,14 @@ } static /*const*/ struct file_operations es1370_dac_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - write: es1370_write_dac, - poll: es1370_poll_dac, - ioctl: es1370_ioctl_dac, - mmap: es1370_mmap_dac, - open: es1370_open_dac, - release: es1370_release_dac, + .owner = THIS_MODULE, + .llseek = no_llseek, + .write = es1370_write_dac, + .poll = es1370_poll_dac, + .ioctl = es1370_ioctl_dac, + .mmap = es1370_mmap_dac, + .open = es1370_open_dac, + .release = es1370_release_dac, }; /* --------------------------------------------------------------------- */ @@ -2513,13 +2512,13 @@ } static /*const*/ struct file_operations es1370_midi_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: es1370_midi_read, - write: es1370_midi_write, - poll: es1370_midi_poll, - open: es1370_midi_open, - release: es1370_midi_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = es1370_midi_read, + .write = es1370_midi_write, + .poll = es1370_midi_poll, + .open = es1370_midi_open, + .release = es1370_midi_release, }; /* --------------------------------------------------------------------- */ diff -Nru a/sound/oss/es1371.c b/sound/oss/es1371.c --- a/sound/oss/es1371.c Tue Feb 25 09:45:44 2003 +++ b/sound/oss/es1371.c Thu Apr 3 14:52:57 2003 @@ -109,7 +109,6 @@ /*****************************************************************************/ -#include #include #include #include @@ -1243,11 +1242,11 @@ } static /*const*/ struct file_operations es1371_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: es1371_ioctl_mixdev, - open: es1371_open_mixdev, - release: es1371_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = es1371_ioctl_mixdev, + .open = es1371_open_mixdev, + .release = es1371_release_mixdev, }; /* --------------------------------------------------------------------- */ @@ -2004,15 +2003,15 @@ } static /*const*/ struct file_operations es1371_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: es1371_read, - write: es1371_write, - poll: es1371_poll, - ioctl: es1371_ioctl, - mmap: es1371_mmap, - open: es1371_open, - release: es1371_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = es1371_read, + .write = es1371_write, + .poll = es1371_poll, + .ioctl = es1371_ioctl, + .mmap = es1371_mmap, + .open = es1371_open, + .release = es1371_release, }; /* --------------------------------------------------------------------- */ @@ -2418,14 +2417,14 @@ } static /*const*/ struct file_operations es1371_dac_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - write: es1371_write_dac, - poll: es1371_poll_dac, - ioctl: es1371_ioctl_dac, - mmap: es1371_mmap_dac, - open: es1371_open_dac, - release: es1371_release_dac, + .owner = THIS_MODULE, + .llseek = no_llseek, + .write = es1371_write_dac, + .poll = es1371_poll_dac, + .ioctl = es1371_ioctl_dac, + .mmap = es1371_mmap_dac, + .open = es1371_open_dac, + .release = es1371_release_dac, }; /* --------------------------------------------------------------------- */ @@ -2690,13 +2689,13 @@ } static /*const*/ struct file_operations es1371_midi_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: es1371_midi_read, - write: es1371_midi_write, - poll: es1371_midi_poll, - open: es1371_midi_open, - release: es1371_midi_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = es1371_midi_read, + .write = es1371_midi_write, + .poll = es1371_midi_poll, + .open = es1371_midi_open, + .release = es1371_midi_release, }; /* --------------------------------------------------------------------- */ diff -Nru a/sound/oss/esssolo1.c b/sound/oss/esssolo1.c --- a/sound/oss/esssolo1.c Fri Jan 3 13:40:43 2003 +++ b/sound/oss/esssolo1.c Thu Apr 3 14:52:57 2003 @@ -87,7 +87,6 @@ /*****************************************************************************/ -#include #include #include #include @@ -951,11 +950,11 @@ } static /*const*/ struct file_operations solo1_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: solo1_ioctl_mixdev, - open: solo1_open_mixdev, - release: solo1_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = solo1_ioctl_mixdev, + .open = solo1_open_mixdev, + .release = solo1_release_mixdev, }; /* --------------------------------------------------------------------- */ @@ -1650,15 +1649,15 @@ } static /*const*/ struct file_operations solo1_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: solo1_read, - write: solo1_write, - poll: solo1_poll, - ioctl: solo1_ioctl, - mmap: solo1_mmap, - open: solo1_open, - release: solo1_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = solo1_read, + .write = solo1_write, + .poll = solo1_poll, + .ioctl = solo1_ioctl, + .mmap = solo1_mmap, + .open = solo1_open, + .release = solo1_release, }; /* --------------------------------------------------------------------- */ @@ -2001,13 +2000,13 @@ } static /*const*/ struct file_operations solo1_midi_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: solo1_midi_read, - write: solo1_midi_write, - poll: solo1_midi_poll, - open: solo1_midi_open, - release: solo1_midi_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = solo1_midi_read, + .write = solo1_midi_write, + .poll = solo1_midi_poll, + .open = solo1_midi_open, + .release = solo1_midi_release, }; /* --------------------------------------------------------------------- */ @@ -2189,11 +2188,11 @@ } static /*const*/ struct file_operations solo1_dmfm_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: solo1_dmfm_ioctl, - open: solo1_dmfm_open, - release: solo1_dmfm_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = solo1_dmfm_ioctl, + .open = solo1_dmfm_open, + .release = solo1_dmfm_release, }; /* --------------------------------------------------------------------- */ diff -Nru a/sound/oss/gus_midi.c b/sound/oss/gus_midi.c --- a/sound/oss/gus_midi.c Sun Mar 2 03:03:33 2003 +++ b/sound/oss/gus_midi.c Thu Apr 3 14:45:12 2003 @@ -26,7 +26,6 @@ static int my_dev; static int output_used = 0; static volatile unsigned char gus_midi_control; -static spinlock_t lock=SPIN_LOCK_UNLOCKED; static void (*midi_input_intr) (int dev, unsigned char data); static unsigned char tmp_queue[256]; @@ -35,6 +34,7 @@ static volatile unsigned char qhead, qtail; extern int gus_base, gus_irq, gus_dma; extern int *gus_osp; +extern spinlock_t gus_lock; static int GUS_MIDI_STATUS(void) { @@ -76,7 +76,7 @@ output_used = 1; - spin_lock_irqsave(&lock, flags); + spin_lock_irqsave(&gus_lock, flags); if (GUS_MIDI_STATUS() & MIDI_XMIT_EMPTY) { @@ -92,7 +92,7 @@ outb((gus_midi_control), u_MidiControl); } - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return ok; } @@ -113,14 +113,14 @@ /* * Drain the local queue first */ - spin_lock_irqsave(&lock, flags); + spin_lock_irqsave(&gus_lock, flags); while (qlen && dump_to_midi(tmp_queue[qhead])) { qlen--; qhead++; } - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); /* * Output the byte if the local queue is empty. @@ -140,13 +140,13 @@ return 0; /* * Local queue full */ - spin_lock_irqsave(&lock, flags); + spin_lock_irqsave(&gus_lock, flags); tmp_queue[qtail] = midi_byte; qlen++; qtail++; - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return 1; } @@ -171,14 +171,14 @@ if (!output_used) return 0; - spin_lock_irqsave(&lock, flags); + spin_lock_irqsave(&gus_lock, flags); if (qlen && dump_to_midi(tmp_queue[qhead])) { qlen--; qhead++; } - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return (qlen > 0) || !(GUS_MIDI_STATUS() & MIDI_XMIT_EMPTY); } @@ -188,17 +188,17 @@ static struct midi_operations gus_midi_operations = { - owner: THIS_MODULE, - info: {"Gravis UltraSound Midi", 0, 0, SNDCARD_GUS}, - converter: &std_midi_synth, - in_info: {0}, - open: gus_midi_open, - close: gus_midi_close, - outputc: gus_midi_out, - start_read: gus_midi_start_read, - end_read: gus_midi_end_read, - kick: gus_midi_kick, - buffer_status: gus_midi_buffer_status, + .owner = THIS_MODULE, + .info = {"Gravis UltraSound Midi", 0, 0, SNDCARD_GUS}, + .converter = &std_midi_synth, + .in_info = {0}, + .open = gus_midi_open, + .close = gus_midi_close, + .outputc = gus_midi_out, + .start_read = gus_midi_start_read, + .end_read = gus_midi_end_read, + .kick = gus_midi_kick, + .buffer_status = gus_midi_buffer_status, }; void __init gus_midi_init(struct address_info *hw_config) @@ -224,7 +224,7 @@ volatile unsigned char stat, data; int timeout = 10; - spin_lock(&lock); + spin_lock(&gus_lock); while (timeout-- > 0 && (stat = GUS_MIDI_STATUS()) & (MIDI_RCV_FULL | MIDI_XMIT_EMPTY)) { @@ -252,5 +252,5 @@ } } } - spin_unlock(&lock); + spin_unlock(&gus_lock); } diff -Nru a/sound/oss/gus_wave.c b/sound/oss/gus_wave.c --- a/sound/oss/gus_wave.c Sat Dec 7 08:14:07 2002 +++ b/sound/oss/gus_wave.c Thu Apr 3 14:45:12 2003 @@ -139,7 +139,7 @@ static unsigned long pcm_current_buf; static int pcm_current_count; static int pcm_current_intrflag; -static spinlock_t lock=SPIN_LOCK_UNLOCKED; +spinlock_t gus_lock=SPIN_LOCK_UNLOCKED; extern int *gus_osp; @@ -469,7 +469,7 @@ { unsigned long flags; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_volume(0); gus_voice_off(); @@ -478,7 +478,7 @@ gus_write8(0x0d, 0x03); /* Ramping off */ voice_alloc->map[voice] = 0; voice_alloc->alloc_times[voice] = 0; - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } @@ -512,10 +512,10 @@ if (voices[voice].mode & WAVE_SUSTAIN_ON && voices[voice].env_phase == 2) { - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_rampoff(); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return; /* * Sustain phase begins. Continue envelope after receiving note off. @@ -533,7 +533,7 @@ vol = voices[voice].initial_volume * voices[voice].env_offset[phase] / 255; rate = voices[voice].env_rate[phase]; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_volume(prev_vol); @@ -545,7 +545,7 @@ if (((vol - prev_vol) / 64) == 0) /* No significant volume change */ { - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); step_envelope(voice); /* Continue the envelope on the next step */ return; } @@ -564,7 +564,7 @@ gus_rampon(0x60); /* Decreasing volume, with IRQ */ } voices[voice].current_volume = vol; - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } static void init_envelope(int voice) @@ -595,14 +595,14 @@ int instr_no = sample_map[voice], is16bits; long int flags; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); if (instr_no < 0 || instr_no > MAX_SAMPLE) { gus_write8(0x00, 0x03); /* Hard stop */ voice_alloc->map[voice] = 0; - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return; } is16bits = (samples[instr_no].mode & WAVE_16_BITS) ? 1 : 0; /* 8 or 16 bits */ @@ -610,7 +610,7 @@ if (voices[voice].mode & WAVE_ENVELOPES) { start_release(voice); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return; } /* @@ -621,14 +621,14 @@ gus_voice_off(); gus_rampoff(); gus_voice_init(voice); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return; } gus_ramp_range(65, 4030); gus_ramp_rate(2, 4); gus_rampon(0x40 | 0x20); /* Down, once, with IRQ */ voices[voice].volume_irq_mode = VMODE_HALT; - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } static void gus_reset(void) @@ -660,7 +660,7 @@ 0, 1, 0, 2, 0, 3, 4, 5 }; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_write8(0x4c, 0); /* Reset GF1 */ gus_delay(); gus_delay(); @@ -799,7 +799,7 @@ if (iw_mode) gus_write8(0x19, gus_read8(0x19) | 0x01); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } @@ -1108,16 +1108,16 @@ { unsigned long flags; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); /* voice_alloc->map[voice] = 0xffff; */ if (voices[voice].volume_irq_mode == VMODE_START_NOTE) { voices[voice].kill_pending = 1; - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } else { - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); gus_voice_fade(voice); } @@ -1175,7 +1175,7 @@ compute_volume(voice, volume); voices[voice].current_volume = voices[voice].initial_volume; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); /* * CAUTION! Interrupts disabled. Enable them before returning */ @@ -1189,7 +1189,7 @@ { gus_rampoff(); gus_voice_volume(target); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return; } if (ramp_time == FAST_RAMP) @@ -1202,7 +1202,7 @@ { gus_rampoff(); gus_voice_volume(target); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return; } if (target > curr) @@ -1220,7 +1220,7 @@ gus_ramp_range(target, curr); gus_rampon(0x40); /* Ramp down, once, no irq */ } - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } static void dynamic_volume_change(int voice) @@ -1228,10 +1228,10 @@ unsigned char status; unsigned long flags; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); status = gus_read8(0x00); /* Get voice status */ - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); if (status & 0x03) return; /* Voice was not running */ @@ -1246,10 +1246,10 @@ * Voice is running and has envelopes. */ - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); status = gus_read8(0x0d); /* Ramping status */ - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); if (status & 0x03) /* Sustain phase? */ { @@ -1281,10 +1281,10 @@ freq = compute_finetune(voices[voice].orig_freq, value, voices[voice].bender_range, 0); voices[voice].current_freq = freq; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_freq(freq); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } break; @@ -1441,12 +1441,12 @@ ((sample_ptrs[sample] + samples[sample].len) / GUS_BANK_SIZE)) printk(KERN_ERR "GUS: Sample address error\n"); } - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_off(); gus_rampoff(); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); if (voices[voice].mode & WAVE_ENVELOPES) { @@ -1458,7 +1458,7 @@ compute_and_set_volume(voice, volume, 0); } - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); if (samples[sample].mode & WAVE_LOOP_BACK) @@ -1498,7 +1498,7 @@ gus_voice_freq(freq); gus_voice_balance(pan); gus_voice_on(mode); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return 0; } @@ -1515,7 +1515,7 @@ int mode; int ret_val = 0; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); if (note_num == 255) { if (voices[voice].volume_irq_mode == VMODE_START_NOTE) @@ -1541,10 +1541,10 @@ if (voices[voice].sample_pending >= 0) { - spin_unlock_irqrestore(&lock,flags); /* Run temporarily with interrupts enabled */ + spin_unlock_irqrestore(&gus_lock,flags); /* Run temporarily with interrupts enabled */ guswave_set_instr(voices[voice].dev_pending, voice, voices[voice].sample_pending); voices[voice].sample_pending = -1; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); /* Reselect the voice (just to be sure) */ } if ((mode & 0x01) || (int) ((gus_read16(0x09) >> 4) < (unsigned) 2065)) @@ -1564,7 +1564,7 @@ gus_rampon(0x20 | 0x40); /* Ramp down, once, irq */ } } - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); return ret_val; } @@ -1807,7 +1807,7 @@ blk_sz)) return -EFAULT; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_write8(0x41, 0); /* Disable GF1 DMA */ DMAbuf_start_dma(gus_devnum, audio_devs[gus_devnum]->dmap_out->raw_buf_phys, blk_sz, DMA_MODE_WRITE); @@ -1864,7 +1864,7 @@ active_device = GUS_DEV_WAVE; gus_write8(0x41, dma_command); /* Lets go luteet (=bugs) */ - spin_unlock_irqrestore(&lock,flags); /* opens a race */ + spin_unlock_irqrestore(&gus_lock,flags); /* opens a race */ if (!interruptible_sleep_on_timeout(&dram_sleeper, HZ)) printk("GUS: DMA Transfer timed out\n"); } @@ -1905,10 +1905,10 @@ switch (cmd) { case _GUS_NUMVOICES: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_select_max_voices(p1); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOICESAMPLE: @@ -1916,18 +1916,18 @@ break; case _GUS_VOICEON: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); p1 &= ~0x20; /* Don't allow interrupts */ gus_voice_on(p1); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOICEOFF: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_off(); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOICEFADE: @@ -1935,32 +1935,32 @@ break; case _GUS_VOICEMODE: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); p1 &= ~0x20; /* Don't allow interrupts */ gus_voice_mode(p1); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOICEBALA: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_balance(p1); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOICEFREQ: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_freq(plong); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOICEVOL: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_volume(p1); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOICEVOL2: /* Just update the software voice level */ @@ -1970,48 +1970,48 @@ case _GUS_RAMPRANGE: if (voices[voice].mode & WAVE_ENVELOPES) break; /* NO-NO */ - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_ramp_range(p1, p2); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_RAMPRATE: if (voices[voice].mode & WAVE_ENVELOPES) break; /* NJET-NJET */ - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_ramp_rate(p1, p2); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_RAMPMODE: if (voices[voice].mode & WAVE_ENVELOPES) break; /* NO-NO */ - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); p1 &= ~0x20; /* Don't allow interrupts */ gus_ramp_mode(p1); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_RAMPON: if (voices[voice].mode & WAVE_ENVELOPES) break; /* EI-EI */ - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); p1 &= ~0x20; /* Don't allow interrupts */ gus_rampon(p1); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_RAMPOFF: if (voices[voice].mode & WAVE_ENVELOPES) break; /* NEJ-NEJ */ - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_rampoff(); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; case _GUS_VOLUME_SCALE: @@ -2020,10 +2020,10 @@ break; case _GUS_VOICE_POS: - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_set_voice_pos(voice, plong); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); break; default: @@ -2214,12 +2214,12 @@ if (pcm_active && pcm_opened) for (voice = 0; voice < gus_audio_channels; voice++) { - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_rampoff(); gus_voice_volume(1530 + (25 * gus_pcm_volume)); gus_ramp_range(65, 1530 + (25 * gus_pcm_volume)); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } } @@ -2267,7 +2267,7 @@ if (chn == 0) ramp_mode[chn] = 0x04; /* Enable rollover bit */ } - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(chn); gus_voice_freq(speed); @@ -2304,17 +2304,17 @@ 0, is16bits); /* Loop end location */ else mode[chn] |= 0x08; /* Enable looping */ - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } for (chn = 0; chn < gus_audio_channels; chn++) { - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(chn); gus_write8(0x0d, ramp_mode[chn]); if (iw_mode) gus_write8(0x15, 0x00); /* Reset voice deactivate bit of SMSI */ gus_voice_on(mode[chn]); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } pcm_active = 1; } @@ -2336,7 +2336,7 @@ unsigned char dma_command; unsigned long address, hold_address; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); count = total_count / gus_audio_channels; @@ -2401,7 +2401,7 @@ active_device = GUS_DEV_PCM_CONTINUE; } - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } static void gus_uninterleave8(char *buf, int l) @@ -2463,7 +2463,7 @@ unsigned long flags; unsigned char mode; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); DMAbuf_start_dma(dev, buf, count, DMA_MODE_READ); mode = 0xa0; /* DMA IRQ enabled, invert MSB */ @@ -2475,7 +2475,7 @@ mode |= 0x01; /* DMA enable */ gus_write8(0x49, mode); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } static int gus_audio_prepare_for_input(int dev, int bsize, int bcount) @@ -2535,16 +2535,16 @@ static struct audio_driver gus_audio_driver = { - owner: THIS_MODULE, - open: gus_audio_open, - close: gus_audio_close, - output_block: gus_audio_output_block, - start_input: gus_audio_start_input, - ioctl: gus_audio_ioctl, - prepare_for_input: gus_audio_prepare_for_input, - prepare_for_output: gus_audio_prepare_for_output, - halt_io: gus_audio_reset, - local_qlen: gus_local_qlen, + .owner = THIS_MODULE, + .open = gus_audio_open, + .close = gus_audio_close, + .output_block = gus_audio_output_block, + .start_input = gus_audio_start_input, + .ioctl = gus_audio_ioctl, + .prepare_for_input = gus_audio_prepare_for_input, + .prepare_for_output = gus_audio_prepare_for_output, + .halt_io = gus_audio_reset, + .local_qlen = gus_local_qlen, }; static void guswave_setup_voice(int dev, int voice, int chn) @@ -2571,10 +2571,10 @@ freq = compute_finetune(voices[voice].orig_freq, value - 8192, voices[voice].bender_range, 0); voices[voice].current_freq = freq; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); gus_voice_freq(freq); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } static int guswave_alloc(int dev, int chn, int note, struct voice_alloc_info *alloc) @@ -2623,28 +2623,28 @@ static struct synth_operations guswave_operations = { - owner: THIS_MODULE, - id: "GUS", - info: &gus_info, - midi_dev: 0, - synth_type: SYNTH_TYPE_SAMPLE, - synth_subtype: SAMPLE_TYPE_GUS, - open: guswave_open, - close: guswave_close, - ioctl: guswave_ioctl, - kill_note: guswave_kill_note, - start_note: guswave_start_note, - set_instr: guswave_set_instr, - reset: guswave_reset, - hw_control: guswave_hw_control, - load_patch: guswave_load_patch, - aftertouch: guswave_aftertouch, - controller: guswave_controller, - panning: guswave_panning, - volume_method: guswave_volume_method, - bender: guswave_bender, - alloc_voice: guswave_alloc, - setup_voice: guswave_setup_voice + .owner = THIS_MODULE, + .id = "GUS", + .info = &gus_info, + .midi_dev = 0, + .synth_type = SYNTH_TYPE_SAMPLE, + .synth_subtype = SAMPLE_TYPE_GUS, + .open = guswave_open, + .close = guswave_close, + .ioctl = guswave_ioctl, + .kill_note = guswave_kill_note, + .start_note = guswave_start_note, + .set_instr = guswave_set_instr, + .reset = guswave_reset, + .hw_control = guswave_hw_control, + .load_patch = guswave_load_patch, + .aftertouch = guswave_aftertouch, + .controller = guswave_controller, + .panning = guswave_panning, + .volume_method = guswave_volume_method, + .bender = guswave_bender, + .alloc_voice = guswave_alloc, + .setup_voice = guswave_setup_voice }; static void set_input_volumes(void) @@ -2655,7 +2655,7 @@ if (have_gus_max) /* Don't disturb GUS MAX */ return; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); /* * Enable channels having vol > 10% @@ -2681,7 +2681,7 @@ mix_image |= mask & 0x07; outb((mix_image), u_Mixer); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } #define MIX_DEVS (SOUND_MASK_MIC|SOUND_MASK_LINE| \ @@ -2815,10 +2815,10 @@ static struct mixer_operations gus_mixer_operations = { - owner: THIS_MODULE, - id: "GUS", - name: "Gravis Ultrasound", - ioctl: gus_default_mixer_ioctl + .owner = THIS_MODULE, + .id = "GUS", + .name = "Gravis Ultrasound", + .ioctl = gus_default_mixer_ioctl }; static int __init gus_default_mixer_init(void) @@ -2890,10 +2890,10 @@ * Versions < 3.6 don't have the digital ASIC. Try to probe it first. */ - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); outb((0x20), gus_base + 0x0f); val = inb(gus_base + 0x0f); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); if (gus_pnp_flag || (val != 0xff && (val & 0x06))) /* Should be 0x02?? */ { @@ -3124,7 +3124,7 @@ unsigned char tmp; int mode, parm; - spin_lock(&lock); + spin_lock(&gus_lock); gus_select_voice(voice); tmp = gus_read8(0x00); @@ -3200,7 +3200,7 @@ default: break; } - spin_unlock(&lock); + spin_unlock(&gus_lock); } static void do_volume_irq(int voice) @@ -3209,7 +3209,7 @@ int mode, parm; unsigned long flags; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&gus_lock,flags); gus_select_voice(voice); tmp = gus_read8(0x0d); @@ -3227,18 +3227,18 @@ case VMODE_HALT: /* Decay phase finished */ if (iw_mode) gus_write8(0x15, 0x02); /* Set voice deactivate bit of SMSI */ - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); gus_voice_init(voice); break; case VMODE_ENVELOPE: gus_rampoff(); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); step_envelope(voice); break; case VMODE_START_NOTE: - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); guswave_start_note2(voices[voice].dev_pending, voice, voices[voice].note_pending, voices[voice].volume_pending); if (voices[voice].kill_pending) @@ -3254,7 +3254,7 @@ break; default: - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } } /* called in irq context */ diff -Nru a/sound/oss/i810_audio.c b/sound/oss/i810_audio.c --- a/sound/oss/i810_audio.c Thu Mar 6 15:20:44 2003 +++ b/sound/oss/i810_audio.c Thu Apr 3 14:52:57 2003 @@ -79,7 +79,6 @@ */ #include -#include #include #include #include @@ -2554,15 +2553,15 @@ } static /*const*/ struct file_operations i810_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: i810_read, - write: i810_write, - poll: i810_poll, - ioctl: i810_ioctl, - mmap: i810_mmap, - open: i810_open, - release: i810_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = i810_read, + .write = i810_write, + .poll = i810_poll, + .ioctl = i810_ioctl, + .mmap = i810_mmap, + .open = i810_open, + .release = i810_release, }; /* Write AC97 codec registers */ @@ -2690,10 +2689,10 @@ } static /*const*/ struct file_operations i810_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: i810_ioctl_mixdev, - open: i810_open_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = i810_ioctl_mixdev, + .open = i810_open_mixdev, }; /* AC97 codec initialisation. These small functions exist so we don't @@ -3430,13 +3429,13 @@ #define I810_MODULE_NAME "intel810_audio" static struct pci_driver i810_pci_driver = { - name: I810_MODULE_NAME, - id_table: i810_pci_tbl, - probe: i810_probe, - remove: __devexit_p(i810_remove), + .name = I810_MODULE_NAME, + .id_table = i810_pci_tbl, + .probe = i810_probe, + .remove = __devexit_p(i810_remove), #ifdef CONFIG_PM - suspend: i810_pm_suspend, - resume: i810_pm_resume, + .suspend = i810_pm_suspend, + .resume = i810_pm_resume, #endif /* CONFIG_PM */ }; diff -Nru a/sound/oss/ics2101.c b/sound/oss/ics2101.c --- a/sound/oss/ics2101.c Sat Sep 28 18:38:50 2002 +++ b/sound/oss/ics2101.c Thu Apr 3 14:45:12 2003 @@ -29,7 +29,7 @@ extern int *gus_osp; extern int gus_base; -extern spinlock_t lock; +extern spinlock_t gus_lock; static int volumes[ICS_MIXDEVS]; static int left_fix[ICS_MIXDEVS] = {1, 1, 1, 2, 1, 2}; @@ -87,12 +87,12 @@ attn_addr |= 0x03; } - spin_lock_irqsave(&lock, flags); + spin_lock_irqsave(&gus_lock, flags); outb((ctrl_addr), u_MixSelect); outb((selector[dev]), u_MixData); outb((attn_addr), u_MixSelect); outb(((unsigned char) vol), u_MixData); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&gus_lock,flags); } static int set_volumes(int dev, int vol) @@ -209,10 +209,10 @@ static struct mixer_operations ics2101_mixer_operations = { - owner: THIS_MODULE, - id: "ICS2101", - name: "ICS2101 Multimedia Mixer", - ioctl: ics2101_mixer_ioctl + .owner = THIS_MODULE, + .id = "ICS2101", + .name = "ICS2101 Multimedia Mixer", + .ioctl = ics2101_mixer_ioctl }; int __init ics2101_mixer_init(void) diff -Nru a/sound/oss/ite8172.c b/sound/oss/ite8172.c --- a/sound/oss/ite8172.c Mon Feb 24 09:56:51 2003 +++ b/sound/oss/ite8172.c Thu Apr 3 14:52:57 2003 @@ -51,7 +51,6 @@ * Revision history * 02.08.2001 0.1 Initial release */ -#include #include #include #include @@ -863,11 +862,11 @@ } static /*const*/ struct file_operations it8172_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: it8172_ioctl_mixdev, - open: it8172_open_mixdev, - release: it8172_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = it8172_ioctl_mixdev, + .open = it8172_open_mixdev, + .release = it8172_release_mixdev, }; /* --------------------------------------------------------------------- */ @@ -1630,15 +1629,15 @@ } static /*const*/ struct file_operations it8172_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: it8172_read, - write: it8172_write, - poll: it8172_poll, - ioctl: it8172_ioctl, - mmap: it8172_mmap, - open: it8172_open, - release: it8172_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = it8172_read, + .write = it8172_write, + .poll = it8172_poll, + .ioctl = it8172_ioctl, + .mmap = it8172_mmap, + .open = it8172_open, + .release = it8172_release, }; diff -Nru a/sound/oss/mad16.c b/sound/oss/mad16.c --- a/sound/oss/mad16.c Mon Mar 24 09:39:14 2003 +++ b/sound/oss/mad16.c Thu Apr 3 14:45:12 2003 @@ -537,7 +537,7 @@ for (i = 0xf8d; i <= 0xf93; i++) { if (!c924pnp) - DDB(printk("port %03x = %02x\n", i, mad_read(i))) + DDB(printk("port %03x = %02x\n", i, mad_read(i))); else DDB(printk("port %03x = %02x\n", i-0x80, mad_read(i))); } @@ -600,7 +600,7 @@ for (i = 0xf8d; i <= 0xf93; i++) { if (!c924pnp) - DDB(printk("port %03x after init = %02x\n", i, mad_read(i))) + DDB(printk("port %03x after init = %02x\n", i, mad_read(i))); else DDB(printk("port %03x after init = %02x\n", i-0x80, mad_read(i))); } diff -Nru a/sound/oss/maestro.c b/sound/oss/maestro.c --- a/sound/oss/maestro.c Thu Mar 6 15:19:08 2003 +++ b/sound/oss/maestro.c Thu Apr 3 14:52:57 2003 @@ -205,7 +205,6 @@ /*****************************************************************************/ -#include #include #include #include @@ -2170,11 +2169,11 @@ } static /*const*/ struct file_operations ess_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: ess_ioctl_mixdev, - open: ess_open_mixdev, - release: ess_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = ess_ioctl_mixdev, + .open = ess_open_mixdev, + .release = ess_release_mixdev, }; /* --------------------------------------------------------------------- */ @@ -3106,15 +3105,15 @@ } static struct file_operations ess_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: ess_read, - write: ess_write, - poll: ess_poll, - ioctl: ess_ioctl, - mmap: ess_mmap, - open: ess_open, - release: ess_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = ess_read, + .write = ess_write, + .poll = ess_poll, + .ioctl = ess_ioctl, + .mmap = ess_mmap, + .open = ess_open, + .release = ess_release, }; static int diff -Nru a/sound/oss/midi_synth.h b/sound/oss/midi_synth.h --- a/sound/oss/midi_synth.h Sun Feb 10 18:50:11 2002 +++ b/sound/oss/midi_synth.h Thu Apr 3 14:35:48 2003 @@ -22,26 +22,26 @@ static struct synth_operations std_midi_synth = { - owner: THIS_MODULE, - id: "MIDI", - info: &std_synth_info, - midi_dev: 0, - synth_type: SYNTH_TYPE_MIDI, - synth_subtype: 0, - open: midi_synth_open, - close: midi_synth_close, - ioctl: midi_synth_ioctl, - kill_note: midi_synth_kill_note, - start_note: midi_synth_start_note, - set_instr: midi_synth_set_instr, - reset: midi_synth_reset, - hw_control: midi_synth_hw_control, - load_patch: midi_synth_load_patch, - aftertouch: midi_synth_aftertouch, - controller: midi_synth_controller, - panning: midi_synth_panning, - bender: midi_synth_bender, - setup_voice: midi_synth_setup_voice, - send_sysex: midi_synth_send_sysex + .owner = THIS_MODULE, + .id = "MIDI", + .info = &std_synth_info, + .midi_dev = 0, + .synth_type = SYNTH_TYPE_MIDI, + .synth_subtype = 0, + .open = midi_synth_open, + .close = midi_synth_close, + .ioctl = midi_synth_ioctl, + .kill_note = midi_synth_kill_note, + .start_note = midi_synth_start_note, + .set_instr = midi_synth_set_instr, + .reset = midi_synth_reset, + .hw_control = midi_synth_hw_control, + .load_patch = midi_synth_load_patch, + .aftertouch = midi_synth_aftertouch, + .controller = midi_synth_controller, + .panning = midi_synth_panning, + .bender = midi_synth_bender, + .setup_voice = midi_synth_setup_voice, + .send_sysex = midi_synth_send_sysex }; #endif diff -Nru a/sound/oss/mpu401.c b/sound/oss/mpu401.c --- a/sound/oss/mpu401.c Thu Mar 6 15:55:25 2003 +++ b/sound/oss/mpu401.c Thu Apr 3 14:35:48 2003 @@ -888,45 +888,45 @@ static struct synth_operations mpu401_synth_proto = { - owner: THIS_MODULE, - id: "MPU401", - info: NULL, - midi_dev: 0, - synth_type: SYNTH_TYPE_MIDI, - synth_subtype: 0, - open: mpu_synth_open, - close: mpu_synth_close, - ioctl: mpu_synth_ioctl, - kill_note: midi_synth_kill_note, - start_note: midi_synth_start_note, - set_instr: midi_synth_set_instr, - reset: midi_synth_reset, - hw_control: midi_synth_hw_control, - load_patch: midi_synth_load_patch, - aftertouch: midi_synth_aftertouch, - controller: midi_synth_controller, - panning: midi_synth_panning, - bender: midi_synth_bender, - setup_voice: midi_synth_setup_voice, - send_sysex: midi_synth_send_sysex + .owner = THIS_MODULE, + .id = "MPU401", + .info = NULL, + .midi_dev = 0, + .synth_type = SYNTH_TYPE_MIDI, + .synth_subtype = 0, + .open = mpu_synth_open, + .close = mpu_synth_close, + .ioctl = mpu_synth_ioctl, + .kill_note = midi_synth_kill_note, + .start_note = midi_synth_start_note, + .set_instr = midi_synth_set_instr, + .reset = midi_synth_reset, + .hw_control = midi_synth_hw_control, + .load_patch = midi_synth_load_patch, + .aftertouch = midi_synth_aftertouch, + .controller = midi_synth_controller, + .panning = midi_synth_panning, + .bender = midi_synth_bender, + .setup_voice = midi_synth_setup_voice, + .send_sysex = midi_synth_send_sysex }; static struct synth_operations *mpu401_synth_operations[MAX_MIDI_DEV]; static struct midi_operations mpu401_midi_proto = { - owner: THIS_MODULE, - info: {"MPU-401 Midi", 0, MIDI_CAP_MPU401, SNDCARD_MPU401}, - in_info: {0}, - open: mpu401_open, - close: mpu401_close, - ioctl: mpu401_ioctl, - outputc: mpu401_out, - start_read: mpu401_start_read, - end_read: mpu401_end_read, - kick: mpu401_kick, - buffer_status: mpu401_buffer_status, - prefix_cmd: mpu401_prefix_cmd + .owner = THIS_MODULE, + .info = {"MPU-401 Midi", 0, MIDI_CAP_MPU401, SNDCARD_MPU401}, + .in_info = {0}, + .open = mpu401_open, + .close = mpu401_close, + .ioctl = mpu401_ioctl, + .outputc = mpu401_out, + .start_read = mpu401_start_read, + .end_read = mpu401_end_read, + .kick = mpu401_kick, + .buffer_status = mpu401_buffer_status, + .prefix_cmd = mpu401_prefix_cmd }; static struct midi_operations mpu401_midi_operations[MAX_MIDI_DEV]; @@ -1619,16 +1619,16 @@ static struct sound_timer_operations mpu_timer = { - owner: THIS_MODULE, - info: {"MPU-401 Timer", 0}, - priority: 10, /* Priority */ - devlink: 0, /* Local device link */ - open: mpu_timer_open, - close: mpu_timer_close, - event: mpu_timer_event, - get_time: mpu_timer_get_time, - ioctl: mpu_timer_ioctl, - arm_timer: mpu_timer_arm + .owner = THIS_MODULE, + .info = {"MPU-401 Timer", 0}, + .priority = 10, /* Priority */ + .devlink = 0, /* Local device link */ + .open = mpu_timer_open, + .close = mpu_timer_close, + .event = mpu_timer_event, + .get_time = mpu_timer_get_time, + .ioctl = mpu_timer_ioctl, + .arm_timer = mpu_timer_arm }; static void mpu_timer_interrupt(void) diff -Nru a/sound/oss/msnd_pinnacle.c b/sound/oss/msnd_pinnacle.c --- a/sound/oss/msnd_pinnacle.c Sat Aug 10 12:51:16 2002 +++ b/sound/oss/msnd_pinnacle.c Thu Apr 3 14:52:57 2003 @@ -40,7 +40,6 @@ #include #include -#include #include #include #include @@ -1081,12 +1080,12 @@ } static struct file_operations dev_fileops = { - owner: THIS_MODULE, - read: dev_read, - write: dev_write, - ioctl: dev_ioctl, - open: dev_open, - release: dev_release, + .owner = THIS_MODULE, + .read = dev_read, + .write = dev_write, + .ioctl = dev_ioctl, + .open = dev_open, + .release = dev_release, }; static int reset_dsp(void) diff -Nru a/sound/oss/nec_vrc5477.c b/sound/oss/nec_vrc5477.c --- a/sound/oss/nec_vrc5477.c Mon Feb 24 09:56:53 2003 +++ b/sound/oss/nec_vrc5477.c Thu Apr 3 14:52:57 2003 @@ -61,7 +61,6 @@ * 02.08.2001 0.1 Initial release */ -#include #include #include #include @@ -896,11 +895,11 @@ } static /*const*/ struct file_operations vrc5477_ac97_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: vrc5477_ac97_ioctl_mixdev, - open: vrc5477_ac97_open_mixdev, - release: vrc5477_ac97_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = vrc5477_ac97_ioctl_mixdev, + .open = vrc5477_ac97_open_mixdev, + .release = vrc5477_ac97_release_mixdev, }; /* --------------------------------------------------------------------- */ @@ -1658,15 +1657,15 @@ } static /*const*/ struct file_operations vrc5477_ac97_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: vrc5477_ac97_read, - write: vrc5477_ac97_write, - poll: vrc5477_ac97_poll, - ioctl: vrc5477_ac97_ioctl, - // mmap: vrc5477_ac97_mmap, - open: vrc5477_ac97_open, - release: vrc5477_ac97_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = vrc5477_ac97_read, + .write = vrc5477_ac97_write, + .poll = vrc5477_ac97_poll, + .ioctl = vrc5477_ac97_ioctl, + // .mmap = vrc5477_ac97_mmap, + .open = vrc5477_ac97_open, + .release = vrc5477_ac97_release, }; diff -Nru a/sound/oss/nm256_audio.c b/sound/oss/nm256_audio.c --- a/sound/oss/nm256_audio.c Thu Mar 13 16:52:26 2003 +++ b/sound/oss/nm256_audio.c Thu Apr 3 14:35:48 2003 @@ -925,10 +925,10 @@ } static struct mixer_operations nm256_mixer_operations = { - owner: THIS_MODULE, - id: "NeoMagic", - name: "NM256AC97Mixer", - ioctl: nm256_default_mixer_ioctl + .owner = THIS_MODULE, + .id = "NeoMagic", + .name = "NM256AC97Mixer", + .ioctl = nm256_default_mixer_ioctl }; /* @@ -1632,16 +1632,16 @@ static struct audio_driver nm256_audio_driver = { - owner: THIS_MODULE, - open: nm256_audio_open, - close: nm256_audio_close, - output_block: nm256_audio_output_block, - start_input: nm256_audio_start_input, - ioctl: nm256_audio_ioctl, - prepare_for_input: nm256_audio_prepare_for_input, - prepare_for_output:nm256_audio_prepare_for_output, - halt_io: nm256_audio_reset, - local_qlen: nm256_audio_local_qlen, + .owner = THIS_MODULE, + .open = nm256_audio_open, + .close = nm256_audio_close, + .output_block = nm256_audio_output_block, + .start_input = nm256_audio_start_input, + .ioctl = nm256_audio_ioctl, + .prepare_for_input = nm256_audio_prepare_for_input, + .prepare_for_output = nm256_audio_prepare_for_output, + .halt_io = nm256_audio_reset, + .local_qlen = nm256_audio_local_qlen, }; static struct pci_device_id nm256_pci_tbl[] __devinitdata = { diff -Nru a/sound/oss/opl3.c b/sound/oss/opl3.c --- a/sound/oss/opl3.c Sun Feb 10 18:50:07 2002 +++ b/sound/oss/opl3.c Thu Apr 3 14:35:48 2003 @@ -1078,28 +1078,28 @@ static struct synth_operations opl3_operations = { - owner: THIS_MODULE, - id: "OPL", - info: NULL, - midi_dev: 0, - synth_type: SYNTH_TYPE_FM, - synth_subtype: FM_TYPE_ADLIB, - open: opl3_open, - close: opl3_close, - ioctl: opl3_ioctl, - kill_note: opl3_kill_note, - start_note: opl3_start_note, - set_instr: opl3_set_instr, - reset: opl3_reset, - hw_control: opl3_hw_control, - load_patch: opl3_load_patch, - aftertouch: opl3_aftertouch, - controller: opl3_controller, - panning: opl3_panning, - volume_method: opl3_volume_method, - bender: opl3_bender, - alloc_voice: opl3_alloc_voice, - setup_voice: opl3_setup_voice + .owner = THIS_MODULE, + .id = "OPL", + .info = NULL, + .midi_dev = 0, + .synth_type = SYNTH_TYPE_FM, + .synth_subtype = FM_TYPE_ADLIB, + .open = opl3_open, + .close = opl3_close, + .ioctl = opl3_ioctl, + .kill_note = opl3_kill_note, + .start_note = opl3_start_note, + .set_instr = opl3_set_instr, + .reset = opl3_reset, + .hw_control = opl3_hw_control, + .load_patch = opl3_load_patch, + .aftertouch = opl3_aftertouch, + .controller = opl3_controller, + .panning = opl3_panning, + .volume_method = opl3_volume_method, + .bender = opl3_bender, + .alloc_voice = opl3_alloc_voice, + .setup_voice = opl3_setup_voice }; int opl3_init(int ioaddr, int *osp, struct module *owner) diff -Nru a/sound/oss/opl3sa2.c b/sound/oss/opl3sa2.c --- a/sound/oss/opl3sa2.c Sat Mar 22 12:43:27 2003 +++ b/sound/oss/opl3sa2.c Sun Apr 6 15:38:31 2003 @@ -58,6 +58,10 @@ * Zwane Mwaikambo Added PM support. (Dec 4 2001) * * Adam Belay Converted driver to new PnP Layer (Oct 12, 2002) + * Zwane Mwaikambo Code, data structure cleanups. (Feb 15 2002) + * Zwane Mwaikambo Free resources during auxiliary device probe + * failures (Apr 29 2002) + * */ #include @@ -71,6 +75,9 @@ #include "ad1848.h" #include "mpu401.h" +#define OPL3SA2_MODULE_NAME "opl3sa2" +#define PFX OPL3SA2_MODULE_NAME ": " + /* Useful control port indexes: */ #define OPL3SA2_PM 0x01 #define OPL3SA2_SYS_CTRL 0x02 @@ -91,9 +98,11 @@ #define DEFAULT_TIMBRE 0 /* Power saving modes */ -#define OPL3SA2_PM_MODE1 0x05 -#define OPL3SA2_PM_MODE2 0x04 -#define OPL3SA2_PM_MODE3 0x03 +#define OPL3SA2_PM_MODE0 0x00 +#define OPL3SA2_PM_MODE1 0x04 /* PSV */ +#define OPL3SA2_PM_MODE2 0x05 /* PSV | PDX */ +#define OPL3SA2_PM_MODE3 0x27 /* ADOWN | PSV | PDN | PDX */ + /* For checking against what the card returns: */ #define VERSION_UNKNOWN 0 @@ -107,6 +116,7 @@ #define CHIPSET_UNKNOWN -1 #define CHIPSET_OPL3SA2 0 #define CHIPSET_OPL3SA3 1 +static const char *CHIPSET_TABLE[] = {"OPL3-SA2", "OPL3-SA3"}; #ifdef CONFIG_PNP #define OPL3SA2_CARDS_MAX 4 @@ -117,40 +127,41 @@ /* This should be pretty obvious */ static int opl3sa2_cards_num; /* = 0 */ -/* What's my version(s)? */ -static int chipset[OPL3SA2_CARDS_MAX] = { CHIPSET_UNKNOWN }; - -/* Oh well, let's just cache the name(s) */ -static char chipset_name[OPL3SA2_CARDS_MAX][12]; - -/* Where's my mixer(s)? */ -static int opl3sa2_mixer[OPL3SA2_CARDS_MAX] = { -1 }; - -/* Bag o' mixer data */ -typedef struct opl3sa2_mixerdata_tag { +typedef struct { + /* device resources */ unsigned short cfg_port; - unsigned short padding; - unsigned char reg; - unsigned int in_suspend; - struct pm_dev *pmdev; - unsigned int card; - unsigned int volume_l; - unsigned int volume_r; - unsigned int mic; - unsigned int bass_l; - unsigned int bass_r; - unsigned int treble_l; - unsigned int treble_r; - unsigned int wide_l; - unsigned int wide_r; -} opl3sa2_mixerdata; -static opl3sa2_mixerdata opl3sa2_data[OPL3SA2_CARDS_MAX]; - -static struct address_info cfg[OPL3SA2_CARDS_MAX]; -static struct address_info cfg_mss[OPL3SA2_CARDS_MAX]; -static struct address_info cfg_mpu[OPL3SA2_CARDS_MAX]; + struct address_info cfg; + struct address_info cfg_mss; + struct address_info cfg_mpu; +#ifdef CONFIG_PNP + /* PnP Stuff */ + struct pnp_dev* pdev; + int activated; /* Whether said devices have been activated */ +#endif +#ifdef CONFIG_PM + unsigned int in_suspend; + struct pm_dev *pmdev; +#endif + unsigned int card; + int chipset; /* What's my version(s)? */ + char *chipset_name; + + /* mixer data */ + int mixer; + unsigned int volume_l; + unsigned int volume_r; + unsigned int mic; + unsigned int bass_l; + unsigned int bass_r; + unsigned int treble_l; + unsigned int treble_r; + unsigned int wide_l; + unsigned int wide_r; +} opl3sa2_state_t; +static opl3sa2_state_t opl3sa2_state[OPL3SA2_CARDS_MAX]; -static spinlock_t lock=SPIN_LOCK_UNLOCKED; +static spinlock_t opl3sa2_lock = SPIN_LOCK_UNLOCKED; + /* Our parameters */ static int __initdata io = -1; @@ -241,7 +252,7 @@ * All of the mixer functions... */ -static void opl3sa2_set_volume(opl3sa2_mixerdata* devc, int left, int right) +static void opl3sa2_set_volume(opl3sa2_state_t* devc, int left, int right) { static unsigned char scale[101] = { 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, @@ -276,7 +287,7 @@ } -static void opl3sa2_set_mic(opl3sa2_mixerdata* devc, int level) +static void opl3sa2_set_mic(opl3sa2_state_t* devc, int level) { unsigned char vol = 0x1F; @@ -291,7 +302,7 @@ } -static void opl3sa3_set_bass(opl3sa2_mixerdata* devc, int left, int right) +static void opl3sa3_set_bass(opl3sa2_state_t* devc, int left, int right) { unsigned char bass; @@ -302,7 +313,7 @@ } -static void opl3sa3_set_treble(opl3sa2_mixerdata* devc, int left, int right) +static void opl3sa3_set_treble(opl3sa2_state_t* devc, int left, int right) { unsigned char treble; @@ -313,7 +324,7 @@ } -static void opl3sa3_set_wide(opl3sa2_mixerdata* devc, int left, int right) +static void opl3sa3_set_wide(opl3sa2_state_t* devc, int left, int right) { unsigned char wide; @@ -324,16 +335,16 @@ } -static void opl3sa2_mixer_reset(opl3sa2_mixerdata* devc, int card) +static void opl3sa2_mixer_reset(opl3sa2_state_t* devc) { - if(devc) { + if (devc) { opl3sa2_set_volume(devc, DEFAULT_VOLUME, DEFAULT_VOLUME); devc->volume_l = devc->volume_r = DEFAULT_VOLUME; opl3sa2_set_mic(devc, DEFAULT_MIC); devc->mic = DEFAULT_MIC; - if(chipset[card] == CHIPSET_OPL3SA3) { + if (devc->chipset == CHIPSET_OPL3SA3) { opl3sa3_set_bass(devc, DEFAULT_TIMBRE, DEFAULT_TIMBRE); devc->bass_l = devc->bass_r = DEFAULT_TIMBRE; opl3sa3_set_treble(devc, DEFAULT_TIMBRE, DEFAULT_TIMBRE); @@ -343,13 +354,13 @@ } -static void opl3sa2_mixer_restore(opl3sa2_mixerdata* devc, int card) +static void opl3sa2_mixer_restore(opl3sa2_state_t* devc) { if (devc) { opl3sa2_set_volume(devc, devc->volume_l, devc->volume_r); opl3sa2_set_mic(devc, devc->mic); - if (chipset[card] == CHIPSET_OPL3SA3) { + if (devc->chipset == CHIPSET_OPL3SA3) { opl3sa3_set_bass(devc, devc->bass_l, devc->bass_r); opl3sa3_set_treble(devc, devc->treble_l, devc->treble_r); } @@ -391,9 +402,9 @@ { int cmdf = cmd & 0xff; - opl3sa2_mixerdata* devc = (opl3sa2_mixerdata*) mixer_devs[dev]->devc; + opl3sa2_state_t* devc = &opl3sa2_state[dev]; - switch(cmdf) { + switch (cmdf) { case SOUND_MIXER_VOLUME: case SOUND_MIXER_MIC: case SOUND_MIXER_DEVMASK: @@ -407,10 +418,10 @@ return -EINVAL; } - if(((cmd >> 8) & 0xff) != 'M') + if (((cmd >> 8) & 0xff) != 'M') return -EINVAL; - if(_SIOC_DIR (cmd) & _SIOC_WRITE) { + if (_SIOC_DIR (cmd) & _SIOC_WRITE) { switch (cmdf) { case SOUND_MIXER_VOLUME: arg_to_vol_stereo(*(unsigned int*)arg, @@ -474,9 +485,9 @@ { int cmdf = cmd & 0xff; - opl3sa2_mixerdata* devc = (opl3sa2_mixerdata*) mixer_devs[dev]->devc; + opl3sa2_state_t* devc = &opl3sa2_state[dev]; - switch(cmdf) { + switch (cmdf) { case SOUND_MIXER_BASS: case SOUND_MIXER_TREBLE: case SOUND_MIXER_DIGITAL1: @@ -488,10 +499,10 @@ return opl3sa2_mixer_ioctl(dev, cmd, arg); } - if(((cmd >> 8) & 0xff) != 'M') + if (((cmd >> 8) & 0xff) != 'M') return -EINVAL; - if(_SIOC_DIR (cmd) & _SIOC_WRITE) { + if (_SIOC_DIR (cmd) & _SIOC_WRITE) { switch (cmdf) { case SOUND_MIXER_BASS: arg_to_vol_stereo(*(unsigned int*)arg, @@ -557,18 +568,18 @@ static struct mixer_operations opl3sa2_mixer_operations = { - owner: THIS_MODULE, - id: "OPL3-SA2", - name: "Yamaha OPL3-SA2", - ioctl: opl3sa2_mixer_ioctl + .owner = THIS_MODULE, + .id = "OPL3-SA2", + .name = "Yamaha OPL3-SA2", + .ioctl = opl3sa2_mixer_ioctl }; static struct mixer_operations opl3sa3_mixer_operations = { - owner: THIS_MODULE, - id: "OPL3-SA3", - name: "Yamaha OPL3-SA3", - ioctl: opl3sa3_mixer_ioctl + .owner = THIS_MODULE, + .id = "OPL3-SA3", + .name = "Yamaha OPL3-SA3", + .ioctl = opl3sa3_mixer_ioctl }; /* End of mixer-related stuff */ @@ -584,9 +595,9 @@ } -static inline void __init attach_opl3sa2_mpu(struct address_info* hw_config) +static inline int __init attach_opl3sa2_mpu(struct address_info* hw_config) { - attach_mpu401(hw_config, THIS_MODULE); + return attach_mpu401(hw_config, THIS_MODULE); } @@ -608,7 +619,7 @@ initial_mixers = num_mixers; attach_ms_sound(hw_config, THIS_MODULE); /* Slot 0 */ - if(hw_config->slots[0] != -1) { + if (hw_config->slots[0] != -1) { /* Did the MSS driver install? */ if(num_mixers == (initial_mixers + 1)) { /* The MSS mixer is installed, reroute mixers appropiately */ @@ -617,7 +628,7 @@ AD1848_REROUTE(SOUND_MIXER_LINE3, SOUND_MIXER_LINE); } else { - printk(KERN_ERR "opl3sa2: MSS mixer not installed?\n"); + printk(KERN_ERR PFX "MSS mixer not installed?\n"); } } } @@ -634,15 +645,14 @@ unsigned char misc; unsigned char tmp; unsigned char version; - char tag; /* - * Verify that the I/O port range is free. + * Try and allocate our I/O port range. */ - if(check_region(hw_config->io_base, 2)) { - printk(KERN_ERR "opl3sa2: Control I/O port %#x not free\n", + if (!request_region(hw_config->io_base, 2, OPL3SA2_MODULE_NAME)) { + printk(KERN_ERR PFX "Control I/O port %#x not free\n", hw_config->io_base); - return 0; + goto out_nodev; } /* @@ -653,9 +663,9 @@ opl3sa2_write(hw_config->io_base, OPL3SA2_MISC, misc ^ 0x07); opl3sa2_read(hw_config->io_base, OPL3SA2_MISC, &tmp); if(tmp != misc) { - printk(KERN_ERR "opl3sa2: Control I/O port %#x is not a YMF7xx chipset!\n", + printk(KERN_ERR PFX "Control I/O port %#x is not a YMF7xx chipset!\n", hw_config->io_base); - return 0; + goto out_region; } /* @@ -666,9 +676,9 @@ opl3sa2_read(hw_config->io_base, OPL3SA2_MIC, &tmp); if((tmp & 0x9f) != 0x8a) { printk(KERN_ERR - "opl3sa2: Control I/O port %#x is not a YMF7xx chipset!\n", + PFX "Control I/O port %#x is not a YMF7xx chipset!\n", hw_config->io_base); - return 0; + goto out_region; } opl3sa2_write(hw_config->io_base, OPL3SA2_MIC, tmp); @@ -679,57 +689,54 @@ * of the miscellaneous register. */ version = misc & 0x07; - printk(KERN_DEBUG "opl3sa2: chipset version = %#x\n", version); - switch(version) { + printk(KERN_DEBUG PFX "Chipset version = %#x\n", version); + switch (version) { case 0: - chipset[card] = CHIPSET_UNKNOWN; - tag = '?'; /* silence compiler warning */ + opl3sa2_state[card].chipset = CHIPSET_UNKNOWN; printk(KERN_ERR - "opl3sa2: Unknown Yamaha audio controller version\n"); + PFX "Unknown Yamaha audio controller version\n"); break; case VERSION_YMF711: - chipset[card] = CHIPSET_OPL3SA2; - tag = '2'; - printk(KERN_INFO "opl3sa2: Found OPL3-SA2 (YMF711)\n"); + opl3sa2_state[card].chipset = CHIPSET_OPL3SA2; + printk(KERN_INFO PFX "Found OPL3-SA2 (YMF711)\n"); break; case VERSION_YMF715: - chipset[card] = CHIPSET_OPL3SA3; - tag = '3'; + opl3sa2_state[card].chipset = CHIPSET_OPL3SA3; printk(KERN_INFO - "opl3sa2: Found OPL3-SA3 (YMF715 or YMF719)\n"); + PFX "Found OPL3-SA3 (YMF715 or YMF719)\n"); break; case VERSION_YMF715B: - chipset[card] = CHIPSET_OPL3SA3; - tag = '3'; + opl3sa2_state[card].chipset = CHIPSET_OPL3SA3; printk(KERN_INFO - "opl3sa2: Found OPL3-SA3 (YMF715B or YMF719B)\n"); + PFX "Found OPL3-SA3 (YMF715B or YMF719B)\n"); break; case VERSION_YMF715E: default: - chipset[card] = CHIPSET_OPL3SA3; - tag = '3'; + opl3sa2_state[card].chipset = CHIPSET_OPL3SA3; printk(KERN_INFO - "opl3sa2: Found OPL3-SA3 (YMF715E or YMF719E)\n"); + PFX "Found OPL3-SA3 (YMF715E or YMF719E)\n"); break; } - if(chipset[card] != CHIPSET_UNKNOWN) { + if (opl3sa2_state[card].chipset != CHIPSET_UNKNOWN) { /* Generate a pretty name */ - sprintf(chipset_name[card], "OPL3-SA%c", tag); - return 1; + opl3sa2_state[card].chipset_name = (char *)CHIPSET_TABLE[opl3sa2_state[card].chipset]; + return 0; } - return 0; + +out_region: + release_region(hw_config->io_base, 2); +out_nodev: + return -ENODEV; } static void __init attach_opl3sa2(struct address_info* hw_config, int card) { - request_region(hw_config->io_base, 2, chipset_name[card]); - /* Initialize IRQ configuration to IRQ-B: -, IRQ-A: WSS+MPU+OPL3 */ opl3sa2_write(hw_config->io_base, OPL3SA2_IRQ_CONFIG, 0x0d); @@ -748,30 +755,29 @@ static void __init attach_opl3sa2_mixer(struct address_info *hw_config, int card) { struct mixer_operations* mixer_operations; - opl3sa2_mixerdata* devc; + opl3sa2_state_t* devc = &opl3sa2_state[card]; /* Install master mixer */ - if(chipset[card] == CHIPSET_OPL3SA3) { + if (devc->chipset == CHIPSET_OPL3SA3) { mixer_operations = &opl3sa3_mixer_operations; } else { mixer_operations = &opl3sa2_mixer_operations; } - if((devc = &opl3sa2_data[card])) { - devc->cfg_port = hw_config->io_base; + devc->cfg_port = hw_config->io_base; + devc->mixer = sound_install_mixer(MIXER_DRIVER_VERSION, + mixer_operations->name, + mixer_operations, + sizeof(struct mixer_operations), + devc); + if(devc->mixer < 0) { + printk(KERN_ERR PFX "Could not install %s master mixer\n", + mixer_operations->name); + } + else { + opl3sa2_mixer_reset(devc); - opl3sa2_mixer[card] = sound_install_mixer(MIXER_DRIVER_VERSION, - mixer_operations->name, - mixer_operations, - sizeof(struct mixer_operations), - devc); - if(opl3sa2_mixer[card] < 0) { - printk(KERN_ERR "opl3sa2: Could not install %s master mixer\n", - mixer_operations->name); - } - else - opl3sa2_mixer_reset(devc, card); } } @@ -805,7 +811,7 @@ opl3sa2_write(hw_config->io_base, OPL3SA2_SYS_CTRL, sys_ctrl); } else { - printk(KERN_ERR "opl3sa2: not setting ymode, it must be one of 0,1,2,3\n"); + printk(KERN_ERR PFX "not setting ymode, it must be one of 0,1,2,3\n"); } } @@ -820,7 +826,7 @@ opl3sa2_write(hw_config->io_base, OPL3SA2_MISC, misc); } else { - printk(KERN_ERR "opl3sa2: not setting loopback, it must be either 0 or 1\n"); + printk(KERN_ERR PFX "not setting loopback, it must be either 0 or 1\n"); } } @@ -831,8 +837,9 @@ release_region(hw_config->io_base, 2); /* Unload mixer */ - if(opl3sa2_mixer[card] >= 0) - sound_unload_mixerdev(opl3sa2_mixer[card]); + if(opl3sa2_state[card].mixer >= 0) + sound_unload_mixerdev(opl3sa2_state[card].mixer); + } #ifdef CONFIG_PNP @@ -846,35 +853,40 @@ static int opl3sa2_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) { int card = opl3sa2_cards_num; + + /* we don't actually want to return an error as the user may have specified + * no multiple card search + */ + if (opl3sa2_cards_num == OPL3SA2_CARDS_MAX) return 0; opl3sa2_activated[card] = 1; /* Our own config: */ - cfg[card].io_base = pnp_port_start(dev, 4); - cfg[card].irq = pnp_irq(dev, 0); - cfg[card].dma = pnp_dma(dev, 0); - cfg[card].dma2 = pnp_dma(dev, 1); + opl3sa2_state[card].cfg.io_base = pnp_port_start(dev, 4); + opl3sa2_state[card].cfg.irq = pnp_irq(dev, 0); + opl3sa2_state[card].cfg.dma = pnp_dma(dev, 0); + opl3sa2_state[card].cfg.dma2 = pnp_dma(dev, 1); /* The MSS config: */ - cfg_mss[card].io_base = pnp_port_start(dev, 1); - cfg_mss[card].irq = pnp_irq(dev, 0); - cfg_mss[card].dma = pnp_dma(dev, 0); - cfg_mss[card].dma2 = pnp_dma(dev, 1); - cfg_mss[card].card_subtype = 1; /* No IRQ or DMA setup */ - - cfg_mpu[card].io_base = pnp_port_start(dev, 3); - cfg_mpu[card].irq = pnp_irq(dev, 0); - cfg_mpu[card].dma = -1; - cfg_mpu[card].dma2 = -1; - cfg_mpu[card].always_detect = 1; /* It's there, so use shared IRQs */ + opl3sa2_state[card].cfg_mss.io_base = pnp_port_start(dev, 1); + opl3sa2_state[card].cfg_mss.irq = pnp_irq(dev, 0); + opl3sa2_state[card].cfg_mss.dma = pnp_dma(dev, 0); + opl3sa2_state[card].cfg_mss.dma2 = pnp_dma(dev, 1); + opl3sa2_state[card].cfg_mss.card_subtype = 1; /* No IRQ or DMA setup */ + + opl3sa2_state[card].cfg_mpu.io_base = pnp_port_start(dev, 3); + opl3sa2_state[card].cfg_mpu.irq = pnp_irq(dev, 0); + opl3sa2_state[card].cfg_mpu.dma = -1; + opl3sa2_state[card].cfg_mpu.dma2 = -1; + opl3sa2_state[card].cfg_mpu.always_detect = 1; /* It's there, so use shared IRQs */ /* Call me paranoid: */ - opl3sa2_clear_slots(&cfg[card]); - opl3sa2_clear_slots(&cfg_mss[card]); - opl3sa2_clear_slots(&cfg_mpu[card]); + opl3sa2_clear_slots(&opl3sa2_state[card].cfg); + opl3sa2_clear_slots(&opl3sa2_state[card].cfg_mss); + opl3sa2_clear_slots(&opl3sa2_state[card].cfg_mpu); - opl3sa2_dev[card] = dev; + opl3sa2_state[card].pdev = dev; opl3sa2_cards_num++; return 0; @@ -890,19 +902,19 @@ /* End of component functions */ +#ifdef CONFIG_PM /* Power Management support functions */ -static int opl3sa2_suspend(struct pm_dev *pdev, unsigned char pm_mode) +static int opl3sa2_suspend(struct pm_dev *pdev, unsigned int pm_mode) { unsigned long flags; - opl3sa2_mixerdata *p; + opl3sa2_state_t *p; if (!pdev) return -EINVAL; - spin_lock_irqsave(&lock,flags); + spin_lock_irqsave(&opl3sa2_lock,flags); - p = (opl3sa2_mixerdata *) pdev->data; - p->in_suspend = 1; + p = (opl3sa2_state_t *) pdev->data; switch (pm_mode) { case 1: pm_mode = OPL3SA2_PM_MODE1; @@ -914,37 +926,42 @@ pm_mode = OPL3SA2_PM_MODE3; break; default: - pm_mode = OPL3SA2_PM_MODE3; - break; + /* we don't know howto handle this... */ + spin_unlock_irqrestore(&opl3sa2_lock, flags); + return -EBUSY; } + p->in_suspend = 1; + /* its supposed to automute before suspending, so we won't bother */ - opl3sa2_read(p->cfg_port, OPL3SA2_PM, &p->reg); - opl3sa2_write(p->cfg_port, OPL3SA2_PM, p->reg | pm_mode); + opl3sa2_write(p->cfg_port, OPL3SA2_PM, pm_mode); + /* wait a while for the clock oscillator to stabilise */ + mdelay(10); - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&opl3sa2_lock,flags); return 0; } static int opl3sa2_resume(struct pm_dev *pdev) { unsigned long flags; - opl3sa2_mixerdata *p; + opl3sa2_state_t *p; - if (!pdev) - return -EINVAL; + if (!pdev) + return -EINVAL; - p = (opl3sa2_mixerdata *) pdev->data; - spin_lock_irqsave(&lock,flags); + p = (opl3sa2_state_t *) pdev->data; + spin_lock_irqsave(&opl3sa2_lock,flags); - /* I don't think this is necessary */ - opl3sa2_write(p->cfg_port, OPL3SA2_PM, p->reg); - opl3sa2_mixer_restore(p, p->card); - p->in_suspend = 0; + /* I don't think this is necessary */ + opl3sa2_write(p->cfg_port, OPL3SA2_PM, OPL3SA2_PM_MODE0); + opl3sa2_mixer_restore(p); + p->in_suspend = 0; - spin_unlock_irqrestore(&lock,flags); + spin_unlock_irqrestore(&opl3sa2_lock,flags); return 0; } +#endif /* CONFIG_PM */ static int opl3sa2_pm_callback(struct pm_dev *pdev, pm_request_t rqst, void *data) { @@ -967,8 +984,7 @@ */ static int __init init_opl3sa2(void) { - int card; - int max; + int card, max; /* Sanitize isapnp and multiple settings */ isapnp = isapnp != 0 ? 1 : 0; @@ -980,64 +996,69 @@ if (isapnp){ pnp_register_driver(&opl3sa2_driver); if(!opl3sa2_cards_num){ - printk(KERN_INFO "opl3sa2: No PnP cards found\n"); + printk(KERN_INFO PFX "No PnP cards found\n"); isapnp = 0; } max = opl3sa2_cards_num; } #endif - for(card = 0; card < max; card++) { + for (card = 0; card < max; card++) { /* If a user wants an I/O then assume they meant it */ - if(!isapnp) { - if(io == -1 || irq == -1 || dma == -1 || - dma2 == -1 || mss_io == -1) { + if (!isapnp) { + if (io == -1 || irq == -1 || dma == -1 || + dma2 == -1 || mss_io == -1) { printk(KERN_ERR - "opl3sa2: io, mss_io, irq, dma, and dma2 must be set\n"); + PFX "io, mss_io, irq, dma, and dma2 must be set\n"); return -EINVAL; - opl3sa2_cards_num++; } + opl3sa2_cards_num++; /* * Our own config: * (NOTE: IRQ and DMA aren't used, so they're set to * give pretty output from conf_printf. :) */ - cfg[card].io_base = io; - cfg[card].irq = irq; - cfg[card].dma = dma; - cfg[card].dma2 = dma2; + opl3sa2_state[card].cfg.io_base = io; + opl3sa2_state[card].cfg.irq = irq; + opl3sa2_state[card].cfg.dma = dma; + opl3sa2_state[card].cfg.dma2 = dma2; /* The MSS config: */ - cfg_mss[card].io_base = mss_io; - cfg_mss[card].irq = irq; - cfg_mss[card].dma = dma; - cfg_mss[card].dma2 = dma2; - cfg_mss[card].card_subtype = 1; /* No IRQ or DMA setup */ - - cfg_mpu[card].io_base = mpu_io; - cfg_mpu[card].irq = irq; - cfg_mpu[card].dma = -1; - cfg_mpu[card].always_detect = 1; /* Use shared IRQs */ + opl3sa2_state[card].cfg_mss.io_base = mss_io; + opl3sa2_state[card].cfg_mss.irq = irq; + opl3sa2_state[card].cfg_mss.dma = dma; + opl3sa2_state[card].cfg_mss.dma2 = dma2; + opl3sa2_state[card].cfg_mss.card_subtype = 1; /* No IRQ or DMA setup */ + + opl3sa2_state[card].cfg_mpu.io_base = mpu_io; + opl3sa2_state[card].cfg_mpu.irq = irq; + opl3sa2_state[card].cfg_mpu.dma = -1; + opl3sa2_state[card].cfg_mpu.always_detect = 1; /* Use shared IRQs */ /* Call me paranoid: */ - opl3sa2_clear_slots(&cfg[card]); - opl3sa2_clear_slots(&cfg_mss[card]); - opl3sa2_clear_slots(&cfg_mpu[card]); + opl3sa2_clear_slots(&opl3sa2_state[card].cfg); + opl3sa2_clear_slots(&opl3sa2_state[card].cfg_mss); + opl3sa2_clear_slots(&opl3sa2_state[card].cfg_mpu); } - if(!probe_opl3sa2(&cfg[card], card) || - !probe_opl3sa2_mss(&cfg_mss[card])) { + if (probe_opl3sa2(&opl3sa2_state[card].cfg, card)) + return -ENODEV; + + + if (!probe_opl3sa2_mss(&opl3sa2_state[card].cfg_mss)) { /* * If one or more cards are already registered, don't * return an error but print a warning. Note, this * should never really happen unless the hardware or * ISA PnP screwed up. */ - if(opl3sa2_cards_num) { + release_region(opl3sa2_state[card].cfg.io_base, 2); + + if (opl3sa2_cards_num) { printk(KERN_WARNING - "opl3sa2: There was a problem probing one " + PFX "There was a problem probing one " " of the ISA PNP cards, continuing\n"); opl3sa2_cards_num--; continue; @@ -1045,47 +1066,53 @@ return -ENODEV; } - attach_opl3sa2(&cfg[card], card); - conf_printf(chipset_name[card], &cfg[card]); - attach_opl3sa2_mss(&cfg_mss[card]); - attach_opl3sa2_mixer(&cfg[card], card); - - opl3sa2_data[card].card = card; + attach_opl3sa2(&opl3sa2_state[card].cfg, card); + conf_printf(opl3sa2_state[card].chipset_name, &opl3sa2_state[card].cfg); + attach_opl3sa2_mixer(&opl3sa2_state[card].cfg, card); + attach_opl3sa2_mss(&opl3sa2_state[card].cfg_mss); + + /* ewww =) */ + opl3sa2_state[card].card = card; +#ifdef CONFIG_PM /* register our power management capabilities */ - opl3sa2_data[card].pmdev = pm_register(PM_ISA_DEV, card, opl3sa2_pm_callback); - if (opl3sa2_data[card].pmdev) - opl3sa2_data[card].pmdev->data = &opl3sa2_data[card]; + opl3sa2_state[card].pmdev = pm_register(PM_ISA_DEV, card, opl3sa2_pm_callback); + if (opl3sa2_state[card].pmdev) + opl3sa2_state[card].pmdev->data = &opl3sa2_state[card]; +#endif /* CONFIG_PM */ /* * Set the Yamaha 3D enhancement mode (aka Ymersion) if asked to and * it's supported. */ - if(ymode != -1) { - if(chipset[card] == CHIPSET_OPL3SA2) { + if (ymode != -1) { + if (opl3sa2_state[card].chipset == CHIPSET_OPL3SA2) { printk(KERN_ERR - "opl3sa2: ymode not supported on OPL3-SA2\n"); + PFX "ymode not supported on OPL3-SA2\n"); } else { - opl3sa2_set_ymode(&cfg[card], ymode); + opl3sa2_set_ymode(&opl3sa2_state[card].cfg, ymode); } } /* Set A/D input to Mono loopback if asked to. */ - if(loopback != -1) { - opl3sa2_set_loopback(&cfg[card], loopback); + if (loopback != -1) { + opl3sa2_set_loopback(&opl3sa2_state[card].cfg, loopback); } - /* Attach MPU if we've been asked to do so */ - if(cfg_mpu[card].io_base != -1) { - if(probe_opl3sa2_mpu(&cfg_mpu[card])) { - attach_opl3sa2_mpu(&cfg_mpu[card]); + /* Attach MPU if we've been asked to do so, failure isn't fatal */ + if (opl3sa2_state[card].cfg_mpu.io_base != -1) { + if (probe_opl3sa2_mpu(&opl3sa2_state[card].cfg_mpu)) { + if (attach_opl3sa2_mpu(&opl3sa2_state[card].cfg_mpu)) { + printk(KERN_ERR PFX "failed to attach MPU401\n"); + opl3sa2_state[card].cfg_mpu.slots[1] = -1; + } } } } - if(isapnp) { - printk(KERN_NOTICE "opl3sa2: %d PnP card(s) found.\n", opl3sa2_cards_num); + if (isapnp) { + printk(KERN_NOTICE PFX "%d PnP card(s) found.\n", opl3sa2_cards_num); } return 0; @@ -1100,15 +1127,14 @@ int card; for(card = 0; card < opl3sa2_cards_num; card++) { - if (opl3sa2_data[card].pmdev) - pm_unregister(opl3sa2_data[card].pmdev); - - if(cfg_mpu[card].slots[1] != -1) { - unload_opl3sa2_mpu(&cfg_mpu[card]); - } - unload_opl3sa2_mss(&cfg_mss[card]); - unload_opl3sa2(&cfg[card], card); + if (opl3sa2_state[card].pmdev) + pm_unregister(opl3sa2_state[card].pmdev); + if(opl3sa2_state[card].cfg_mpu.slots[1] != -1) { + unload_opl3sa2_mpu(&opl3sa2_state[card].cfg_mpu); + } + unload_opl3sa2_mss(&opl3sa2_state[card].cfg_mss); + unload_opl3sa2(&opl3sa2_state[card].cfg, card); #ifdef CONFIG_PNP pnp_unregister_driver(&opl3sa2_driver); #endif diff -Nru a/sound/oss/pas2_midi.c b/sound/oss/pas2_midi.c --- a/sound/oss/pas2_midi.c Mon Jan 13 17:11:59 2003 +++ b/sound/oss/pas2_midi.c Thu Apr 3 14:35:48 2003 @@ -194,17 +194,17 @@ static struct midi_operations pas_midi_operations = { - owner: THIS_MODULE, - info: {"Pro Audio Spectrum", 0, 0, SNDCARD_PAS}, - converter: &std_midi_synth, - in_info: {0}, - open: pas_midi_open, - close: pas_midi_close, - outputc: pas_midi_out, - start_read: pas_midi_start_read, - end_read: pas_midi_end_read, - kick: pas_midi_kick, - buffer_status: pas_buffer_status, + .owner = THIS_MODULE, + .info = {"Pro Audio Spectrum", 0, 0, SNDCARD_PAS}, + .converter = &std_midi_synth, + .in_info = {0}, + .open = pas_midi_open, + .close = pas_midi_close, + .outputc = pas_midi_out, + .start_read = pas_midi_start_read, + .end_read = pas_midi_end_read, + .kick = pas_midi_kick, + .buffer_status = pas_buffer_status, }; void __init pas_midi_init(void) diff -Nru a/sound/oss/pas2_mixer.c b/sound/oss/pas2_mixer.c --- a/sound/oss/pas2_mixer.c Mon Jan 13 17:11:59 2003 +++ b/sound/oss/pas2_mixer.c Thu Apr 3 14:35:48 2003 @@ -311,10 +311,10 @@ static struct mixer_operations pas_mixer_operations = { - owner: THIS_MODULE, - id: "PAS16", - name: "Pro Audio Spectrum 16", - ioctl: pas_mixer_ioctl + .owner = THIS_MODULE, + .id = "PAS16", + .name = "Pro Audio Spectrum 16", + .ioctl = pas_mixer_ioctl }; int __init diff -Nru a/sound/oss/pas2_pcm.c b/sound/oss/pas2_pcm.c --- a/sound/oss/pas2_pcm.c Mon Jan 13 17:11:59 2003 +++ b/sound/oss/pas2_pcm.c Thu Apr 3 14:35:48 2003 @@ -372,16 +372,16 @@ static struct audio_driver pas_audio_driver = { - owner: THIS_MODULE, - open: pas_audio_open, - close: pas_audio_close, - output_block: pas_audio_output_block, - start_input: pas_audio_start_input, - ioctl: pas_audio_ioctl, - prepare_for_input: pas_audio_prepare_for_input, - prepare_for_output: pas_audio_prepare_for_output, - halt_io: pas_audio_reset, - trigger: pas_audio_trigger + .owner = THIS_MODULE, + .open = pas_audio_open, + .close = pas_audio_close, + .output_block = pas_audio_output_block, + .start_input = pas_audio_start_input, + .ioctl = pas_audio_ioctl, + .prepare_for_input = pas_audio_prepare_for_input, + .prepare_for_output = pas_audio_prepare_for_output, + .halt_io = pas_audio_reset, + .trigger = pas_audio_trigger }; void __init pas_pcm_init(struct address_info *hw_config) diff -Nru a/sound/oss/pss.c b/sound/oss/pss.c --- a/sound/oss/pss.c Thu Nov 21 10:06:22 2002 +++ b/sound/oss/pss.c Thu Apr 3 14:35:48 2003 @@ -601,10 +601,10 @@ static struct mixer_operations pss_mixer_operations = { - owner: THIS_MODULE, - id: "SOUNDPORT", - name: "PSS-AD1848", - ioctl: pss_mixer_ioctl + .owner = THIS_MODULE, + .id = "SOUNDPORT", + .name = "PSS-AD1848", + .ioctl = pss_mixer_ioctl }; void disable_all_emulations(void) diff -Nru a/sound/oss/sb_audio.c b/sound/oss/sb_audio.c --- a/sound/oss/sb_audio.c Thu Nov 21 10:06:23 2002 +++ b/sound/oss/sb_audio.c Thu Apr 3 14:35:48 2003 @@ -927,100 +927,100 @@ static struct audio_driver sb1_audio_driver = /* SB1.x */ { - owner: THIS_MODULE, - open: sb_audio_open, - close: sb_audio_close, - output_block: sb_set_output_parms, - start_input: sb_set_input_parms, - prepare_for_input: sb1_audio_prepare_for_input, - prepare_for_output: sb1_audio_prepare_for_output, - halt_io: sb1_audio_halt_xfer, - trigger: sb1_audio_trigger, - set_speed: sb1_audio_set_speed, - set_bits: sb1_audio_set_bits, - set_channels: sb1_audio_set_channels + .owner = THIS_MODULE, + .open = sb_audio_open, + .close = sb_audio_close, + .output_block = sb_set_output_parms, + .start_input = sb_set_input_parms, + .prepare_for_input = sb1_audio_prepare_for_input, + .prepare_for_output = sb1_audio_prepare_for_output, + .halt_io = sb1_audio_halt_xfer, + .trigger = sb1_audio_trigger, + .set_speed = sb1_audio_set_speed, + .set_bits = sb1_audio_set_bits, + .set_channels = sb1_audio_set_channels }; static struct audio_driver sb20_audio_driver = /* SB2.0 */ { - owner: THIS_MODULE, - open: sb_audio_open, - close: sb_audio_close, - output_block: sb_set_output_parms, - start_input: sb_set_input_parms, - prepare_for_input: sb1_audio_prepare_for_input, - prepare_for_output: sb1_audio_prepare_for_output, - halt_io: sb1_audio_halt_xfer, - trigger: sb20_audio_trigger, - set_speed: sb1_audio_set_speed, - set_bits: sb1_audio_set_bits, - set_channels: sb1_audio_set_channels + .owner = THIS_MODULE, + .open = sb_audio_open, + .close = sb_audio_close, + .output_block = sb_set_output_parms, + .start_input = sb_set_input_parms, + .prepare_for_input = sb1_audio_prepare_for_input, + .prepare_for_output = sb1_audio_prepare_for_output, + .halt_io = sb1_audio_halt_xfer, + .trigger = sb20_audio_trigger, + .set_speed = sb1_audio_set_speed, + .set_bits = sb1_audio_set_bits, + .set_channels = sb1_audio_set_channels }; static struct audio_driver sb201_audio_driver = /* SB2.01 */ { - owner: THIS_MODULE, - open: sb_audio_open, - close: sb_audio_close, - output_block: sb_set_output_parms, - start_input: sb_set_input_parms, - prepare_for_input: sb1_audio_prepare_for_input, - prepare_for_output: sb1_audio_prepare_for_output, - halt_io: sb1_audio_halt_xfer, - trigger: sb20_audio_trigger, - set_speed: sb201_audio_set_speed, - set_bits: sb1_audio_set_bits, - set_channels: sb1_audio_set_channels + .owner = THIS_MODULE, + .open = sb_audio_open, + .close = sb_audio_close, + .output_block = sb_set_output_parms, + .start_input = sb_set_input_parms, + .prepare_for_input = sb1_audio_prepare_for_input, + .prepare_for_output = sb1_audio_prepare_for_output, + .halt_io = sb1_audio_halt_xfer, + .trigger = sb20_audio_trigger, + .set_speed = sb201_audio_set_speed, + .set_bits = sb1_audio_set_bits, + .set_channels = sb1_audio_set_channels }; static struct audio_driver sbpro_audio_driver = /* SB Pro */ { - owner: THIS_MODULE, - open: sb_audio_open, - close: sb_audio_close, - output_block: sb_set_output_parms, - start_input: sb_set_input_parms, - prepare_for_input: sbpro_audio_prepare_for_input, - prepare_for_output: sbpro_audio_prepare_for_output, - halt_io: sb1_audio_halt_xfer, - trigger: sb20_audio_trigger, - set_speed: sbpro_audio_set_speed, - set_bits: sb1_audio_set_bits, - set_channels: sbpro_audio_set_channels + .owner = THIS_MODULE, + .open = sb_audio_open, + .close = sb_audio_close, + .output_block = sb_set_output_parms, + .start_input = sb_set_input_parms, + .prepare_for_input = sbpro_audio_prepare_for_input, + .prepare_for_output = sbpro_audio_prepare_for_output, + .halt_io = sb1_audio_halt_xfer, + .trigger = sb20_audio_trigger, + .set_speed = sbpro_audio_set_speed, + .set_bits = sb1_audio_set_bits, + .set_channels = sbpro_audio_set_channels }; static struct audio_driver jazz16_audio_driver = /* Jazz16 and SM Wave */ { - owner: THIS_MODULE, - open: sb_audio_open, - close: sb_audio_close, - output_block: sb_set_output_parms, - start_input: sb_set_input_parms, - prepare_for_input: sbpro_audio_prepare_for_input, - prepare_for_output: sbpro_audio_prepare_for_output, - halt_io: sb1_audio_halt_xfer, - trigger: sb20_audio_trigger, - set_speed: jazz16_audio_set_speed, - set_bits: sb16_audio_set_bits, - set_channels: sbpro_audio_set_channels + .owner = THIS_MODULE, + .open = sb_audio_open, + .close = sb_audio_close, + .output_block = sb_set_output_parms, + .start_input = sb_set_input_parms, + .prepare_for_input = sbpro_audio_prepare_for_input, + .prepare_for_output = sbpro_audio_prepare_for_output, + .halt_io = sb1_audio_halt_xfer, + .trigger = sb20_audio_trigger, + .set_speed = jazz16_audio_set_speed, + .set_bits = sb16_audio_set_bits, + .set_channels = sbpro_audio_set_channels }; static struct audio_driver sb16_audio_driver = /* SB16 */ { - owner: THIS_MODULE, - open: sb_audio_open, - close: sb_audio_close, - output_block: sb_set_output_parms, - start_input: sb_set_input_parms, - prepare_for_input: sb16_audio_prepare_for_input, - prepare_for_output: sb16_audio_prepare_for_output, - halt_io: sb1_audio_halt_xfer, - copy_user: sb16_copy_from_user, - trigger: sb16_audio_trigger, - set_speed: sb16_audio_set_speed, - set_bits: sb16_audio_set_bits, - set_channels: sbpro_audio_set_channels, - mmap: sb16_audio_mmap + .owner = THIS_MODULE, + .open = sb_audio_open, + .close = sb_audio_close, + .output_block = sb_set_output_parms, + .start_input = sb_set_input_parms, + .prepare_for_input = sb16_audio_prepare_for_input, + .prepare_for_output = sb16_audio_prepare_for_output, + .halt_io = sb1_audio_halt_xfer, + .copy_user = sb16_copy_from_user, + .trigger = sb16_audio_trigger, + .set_speed = sb16_audio_set_speed, + .set_bits = sb16_audio_set_bits, + .set_channels = sbpro_audio_set_channels, + .mmap = sb16_audio_mmap }; void sb_audio_init(sb_devc * devc, char *name, struct module *owner) diff -Nru a/sound/oss/sb_ess.c b/sound/oss/sb_ess.c --- a/sound/oss/sb_ess.c Sat Nov 23 06:56:27 2002 +++ b/sound/oss/sb_ess.c Thu Apr 3 14:35:48 2003 @@ -718,18 +718,18 @@ static struct audio_driver ess_audio_driver = /* ESS ES688/1688 */ { - owner: THIS_MODULE, - open: sb_audio_open, - close: sb_audio_close, - output_block: ess_set_output_parms, - start_input: ess_set_input_parms, - prepare_for_input: ess_audio_prepare_for_input, - prepare_for_output: ess_audio_prepare_for_output, - halt_io: ess_audio_halt_xfer, - trigger: ess_audio_trigger, - set_speed: ess_audio_set_speed, - set_bits: ess_audio_set_bits, - set_channels: ess_audio_set_channels + .owner = THIS_MODULE, + .open = sb_audio_open, + .close = sb_audio_close, + .output_block = ess_set_output_parms, + .start_input = ess_set_input_parms, + .prepare_for_input = ess_audio_prepare_for_input, + .prepare_for_output = ess_audio_prepare_for_output, + .halt_io = ess_audio_halt_xfer, + .trigger = ess_audio_trigger, + .set_speed = ess_audio_set_speed, + .set_bits = ess_audio_set_bits, + .set_channels = ess_audio_set_channels }; /* diff -Nru a/sound/oss/sb_midi.c b/sound/oss/sb_midi.c --- a/sound/oss/sb_midi.c Sun Feb 10 18:50:07 2002 +++ b/sound/oss/sb_midi.c Thu Apr 3 14:35:48 2003 @@ -146,16 +146,16 @@ static struct midi_operations sb_midi_operations = { - owner: THIS_MODULE, - info: {"Sound Blaster", 0, 0, SNDCARD_SB}, - converter: &std_midi_synth, - in_info: {0}, - open: sb_midi_open, - close: sb_midi_close, - ioctl: sb_midi_ioctl, - outputc: sb_midi_out, - start_read: sb_midi_start_read, - end_read: sb_midi_end_read, + .owner = THIS_MODULE, + .info = {"Sound Blaster", 0, 0, SNDCARD_SB}, + .converter = &std_midi_synth, + .in_info = {0}, + .open = sb_midi_open, + .close = sb_midi_close, + .ioctl = sb_midi_ioctl, + .outputc = sb_midi_out, + .start_read = sb_midi_start_read, + .end_read = sb_midi_end_read, }; void sb_dsp_midi_init(sb_devc * devc, struct module *owner) diff -Nru a/sound/oss/sb_mixer.c b/sound/oss/sb_mixer.c --- a/sound/oss/sb_mixer.c Sun Feb 10 18:50:11 2002 +++ b/sound/oss/sb_mixer.c Thu Apr 3 14:35:48 2003 @@ -626,18 +626,18 @@ static struct mixer_operations sb_mixer_operations = { - owner: THIS_MODULE, - id: "SB", - name: "Sound Blaster", - ioctl: sb_mixer_ioctl + .owner = THIS_MODULE, + .id = "SB", + .name = "Sound Blaster", + .ioctl = sb_mixer_ioctl }; static struct mixer_operations als007_mixer_operations = { - owner: THIS_MODULE, - id: "ALS007", - name: "Avance ALS-007", - ioctl: sb_mixer_ioctl + .owner = THIS_MODULE, + .id = "ALS007", + .name = "Avance ALS-007", + .ioctl = sb_mixer_ioctl }; static void sb_mixer_reset(sb_devc * devc) diff -Nru a/sound/oss/sonicvibes.c b/sound/oss/sonicvibes.c --- a/sound/oss/sonicvibes.c Fri Jan 3 13:44:52 2003 +++ b/sound/oss/sonicvibes.c Thu Apr 3 14:52:57 2003 @@ -100,7 +100,6 @@ /*****************************************************************************/ -#include #include #include #include @@ -1267,11 +1266,11 @@ } static /*const*/ struct file_operations sv_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: sv_ioctl_mixdev, - open: sv_open_mixdev, - release: sv_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = sv_ioctl_mixdev, + .open = sv_open_mixdev, + .release = sv_release_mixdev, }; /* --------------------------------------------------------------------- */ @@ -1978,15 +1977,15 @@ } static /*const*/ struct file_operations sv_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: sv_read, - write: sv_write, - poll: sv_poll, - ioctl: sv_ioctl, - mmap: sv_mmap, - open: sv_open, - release: sv_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = sv_read, + .write = sv_write, + .poll = sv_poll, + .ioctl = sv_ioctl, + .mmap = sv_mmap, + .open = sv_open, + .release = sv_release, }; /* --------------------------------------------------------------------- */ @@ -2260,13 +2259,13 @@ } static /*const*/ struct file_operations sv_midi_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: sv_midi_read, - write: sv_midi_write, - poll: sv_midi_poll, - open: sv_midi_open, - release: sv_midi_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = sv_midi_read, + .write = sv_midi_write, + .poll = sv_midi_poll, + .open = sv_midi_open, + .release = sv_midi_release, }; /* --------------------------------------------------------------------- */ @@ -2435,11 +2434,11 @@ } static /*const*/ struct file_operations sv_dmfm_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: sv_dmfm_ioctl, - open: sv_dmfm_open, - release: sv_dmfm_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = sv_dmfm_ioctl, + .open = sv_dmfm_open, + .release = sv_dmfm_release, }; /* --------------------------------------------------------------------- */ diff -Nru a/sound/oss/soundcard.c b/sound/oss/soundcard.c --- a/sound/oss/soundcard.c Thu Jan 16 11:15:45 2003 +++ b/sound/oss/soundcard.c Thu Apr 3 14:35:48 2003 @@ -491,15 +491,15 @@ } struct file_operations oss_sound_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: sound_read, - write: sound_write, - poll: sound_poll, - ioctl: sound_ioctl, - mmap: sound_mmap, - open: sound_open, - release: sound_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = sound_read, + .write = sound_write, + .poll = sound_poll, + .ioctl = sound_ioctl, + .mmap = sound_mmap, + .open = sound_open, + .release = sound_release, }; /* diff -Nru a/sound/oss/sys_timer.c b/sound/oss/sys_timer.c --- a/sound/oss/sys_timer.c Tue Nov 5 06:06:33 2002 +++ b/sound/oss/sys_timer.c Thu Apr 3 14:35:48 2003 @@ -275,14 +275,14 @@ struct sound_timer_operations default_sound_timer = { - owner: THIS_MODULE, - info: {"System clock", 0}, - priority: 0, /* Priority */ - devlink: 0, /* Local device link */ - open: def_tmr_open, - close: def_tmr_close, - event: def_tmr_event, - get_time: def_tmr_get_time, - ioctl: def_tmr_ioctl, - arm_timer: def_tmr_arm + .owner = THIS_MODULE, + .info = {"System clock", 0}, + .priority = 0, /* Priority */ + .devlink = 0, /* Local device link */ + .open = def_tmr_open, + .close = def_tmr_close, + .event = def_tmr_event, + .get_time = def_tmr_get_time, + .ioctl = def_tmr_ioctl, + .arm_timer = def_tmr_arm }; diff -Nru a/sound/oss/trident.c b/sound/oss/trident.c --- a/sound/oss/trident.c Thu Mar 6 09:38:03 2003 +++ b/sound/oss/trident.c Thu Apr 3 14:52:57 2003 @@ -181,7 +181,6 @@ #include #include -#include #include #include #include @@ -2772,15 +2771,15 @@ } static /*const*/ struct file_operations trident_audio_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: trident_read, - write: trident_write, - poll: trident_poll, - ioctl: trident_ioctl, - mmap: trident_mmap, - open: trident_open, - release: trident_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = trident_read, + .write = trident_write, + .poll = trident_poll, + .ioctl = trident_ioctl, + .mmap = trident_mmap, + .open = trident_open, + .release = trident_release, }; /* trident specific AC97 functions */ @@ -3894,10 +3893,10 @@ } static /*const*/ struct file_operations trident_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: trident_ioctl_mixdev, - open: trident_open_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = trident_ioctl_mixdev, + .open = trident_open_mixdev, }; static int ali_reset_5451(struct trident_card *card) @@ -4376,12 +4375,12 @@ #define TRIDENT_MODULE_NAME "trident" static struct pci_driver trident_pci_driver = { - name: TRIDENT_MODULE_NAME, - id_table: trident_pci_tbl, - probe: trident_probe, - remove: __devexit_p(trident_remove), - suspend: trident_suspend, - resume: trident_resume + .name = TRIDENT_MODULE_NAME, + .id_table = trident_pci_tbl, + .probe = trident_probe, + .remove = __devexit_p(trident_remove), + .suspend = trident_suspend, + .resume = trident_resume }; static int __init trident_init_module (void) diff -Nru a/sound/oss/uart401.c b/sound/oss/uart401.c --- a/sound/oss/uart401.c Sun Nov 17 19:33:01 2002 +++ b/sound/oss/uart401.c Thu Apr 3 14:35:48 2003 @@ -204,17 +204,17 @@ static const struct midi_operations uart401_operations = { - owner: THIS_MODULE, - info: {"MPU-401 (UART) MIDI", 0, 0, SNDCARD_MPU401}, - converter: &std_midi_synth, - in_info: {0}, - open: uart401_open, - close: uart401_close, - outputc: uart401_out, - start_read: uart401_start_read, - end_read: uart401_end_read, - kick: uart401_kick, - buffer_status: uart401_buffer_status, + .owner = THIS_MODULE, + .info = {"MPU-401 (UART) MIDI", 0, 0, SNDCARD_MPU401}, + .converter = &std_midi_synth, + .in_info = {0}, + .open = uart401_open, + .close = uart401_close, + .outputc = uart401_out, + .start_read = uart401_start_read, + .end_read = uart401_end_read, + .kick = uart401_kick, + .buffer_status = uart401_buffer_status, }; static void enter_uart_mode(uart401_devc * devc) diff -Nru a/sound/oss/uart6850.c b/sound/oss/uart6850.c --- a/sound/oss/uart6850.c Sun Nov 17 19:33:01 2002 +++ b/sound/oss/uart6850.c Thu Apr 3 14:35:48 2003 @@ -231,18 +231,18 @@ static struct midi_operations uart6850_operations = { - owner: THIS_MODULE, - info: {"6850 UART", 0, 0, SNDCARD_UART6850}, - converter: &std_midi_synth, - in_info: {0}, - open: uart6850_open, - close: uart6850_close, - outputc: uart6850_out, - start_read: uart6850_start_read, - end_read: uart6850_end_read, - kick: uart6850_kick, - command: uart6850_command, - buffer_status: uart6850_buffer_status + .owner = THIS_MODULE, + .info = {"6850 UART", 0, 0, SNDCARD_UART6850}, + .converter = &std_midi_synth, + .in_info = {0}, + .open = uart6850_open, + .close = uart6850_close, + .outputc = uart6850_out, + .start_read = uart6850_start_read, + .end_read = uart6850_end_read, + .kick = uart6850_kick, + .command = uart6850_command, + .buffer_status = uart6850_buffer_status }; diff -Nru a/sound/oss/v_midi.c b/sound/oss/v_midi.c --- a/sound/oss/v_midi.c Tue Aug 13 09:00:57 2002 +++ b/sound/oss/v_midi.c Thu Apr 3 14:35:48 2003 @@ -133,30 +133,30 @@ static struct midi_operations v_midi_operations = { - owner: THIS_MODULE, - info: {"Loopback MIDI Port 1", 0, 0, SNDCARD_VMIDI}, - converter: &std_midi_synth, - in_info: {0}, - open: v_midi_open, - close: v_midi_close, - ioctl: v_midi_ioctl, - outputc: v_midi_out, - start_read: v_midi_start_read, - end_read: v_midi_end_read, + .owner = THIS_MODULE, + .info = {"Loopback MIDI Port 1", 0, 0, SNDCARD_VMIDI}, + .converter = &std_midi_synth, + .in_info = {0}, + .open = v_midi_open, + .close = v_midi_close, + .ioctl = v_midi_ioctl, + .outputc = v_midi_out, + .start_read = v_midi_start_read, + .end_read = v_midi_end_read, }; static struct midi_operations v_midi_operations2 = { - owner: THIS_MODULE, - info: {"Loopback MIDI Port 2", 0, 0, SNDCARD_VMIDI}, - converter: &std_midi_synth, - in_info: {0}, - open: v_midi_open, - close: v_midi_close, - ioctl: v_midi_ioctl, - outputc: v_midi_out, - start_read: v_midi_start_read, - end_read: v_midi_end_read, + .owner = THIS_MODULE, + .info = {"Loopback MIDI Port 2", 0, 0, SNDCARD_VMIDI}, + .converter = &std_midi_synth, + .in_info = {0}, + .open = v_midi_open, + .close = v_midi_close, + .ioctl = v_midi_ioctl, + .outputc = v_midi_out, + .start_read = v_midi_start_read, + .end_read = v_midi_end_read, }; /* diff -Nru a/sound/oss/via82cxxx_audio.c b/sound/oss/via82cxxx_audio.c --- a/sound/oss/via82cxxx_audio.c Sun Nov 17 19:33:01 2002 +++ b/sound/oss/via82cxxx_audio.c Thu Apr 3 15:55:38 2003 @@ -360,10 +360,10 @@ static struct pci_driver via_driver = { - name: VIA_MODULE_NAME, - id_table: via_pci_tbl, - probe: via_init_one, - remove: __devexit_p(via_remove_one), + .name = VIA_MODULE_NAME, + .id_table = via_pci_tbl, + .probe = via_init_one, + .remove = __devexit_p(via_remove_one), }; @@ -1412,10 +1412,10 @@ static struct file_operations via_mixer_fops = { - owner: THIS_MODULE, - open: via_mixer_open, - llseek: no_llseek, - ioctl: via_mixer_ioctl, + .owner = THIS_MODULE, + .open = via_mixer_open, + .llseek = no_llseek, + .ioctl = via_mixer_ioctl, }; @@ -1783,15 +1783,15 @@ */ static struct file_operations via_dsp_fops = { - owner: THIS_MODULE, - open: via_dsp_open, - release: via_dsp_release, - read: via_dsp_read, - write: via_dsp_write, - poll: via_dsp_poll, - llseek: no_llseek, - ioctl: via_dsp_ioctl, - mmap: via_dsp_mmap, + .owner = THIS_MODULE, + .open = via_dsp_open, + .release = via_dsp_release, + .read = via_dsp_read, + .write = via_dsp_write, + .poll = via_dsp_poll, + .llseek = no_llseek, + .ioctl = via_dsp_ioctl, + .mmap = via_dsp_mmap, }; @@ -1902,10 +1902,10 @@ struct vm_operations_struct via_mm_ops = { - nopage: via_mm_nopage, + .nopage = via_mm_nopage, #ifndef VM_RESERVED - swapout: via_mm_swapout, + .swapout = via_mm_swapout, #endif }; diff -Nru a/sound/oss/vidc.c b/sound/oss/vidc.c --- a/sound/oss/vidc.c Tue Nov 19 07:28:03 2002 +++ b/sound/oss/vidc.c Thu Apr 3 14:35:48 2003 @@ -366,26 +366,26 @@ static struct audio_driver vidc_audio_driver = { - owner: THIS_MODULE, - open: vidc_audio_open, - close: vidc_audio_close, - output_block: vidc_audio_output_block, - start_input: vidc_audio_start_input, - prepare_for_input: vidc_audio_prepare_for_input, - prepare_for_output: vidc_audio_prepare_for_output, - halt_io: vidc_audio_reset, - local_qlen: vidc_audio_local_qlen, - trigger: vidc_audio_trigger, - set_speed: vidc_audio_set_speed, - set_bits: vidc_audio_set_format, - set_channels: vidc_audio_set_channels + .owner = THIS_MODULE, + .open = vidc_audio_open, + .close = vidc_audio_close, + .output_block = vidc_audio_output_block, + .start_input = vidc_audio_start_input, + .prepare_for_input = vidc_audio_prepare_for_input, + .prepare_for_output = vidc_audio_prepare_for_output, + .halt_io = vidc_audio_reset, + .local_qlen = vidc_audio_local_qlen, + .trigger = vidc_audio_trigger, + .set_speed = vidc_audio_set_speed, + .set_bits = vidc_audio_set_format, + .set_channels = vidc_audio_set_channels }; static struct mixer_operations vidc_mixer_operations = { - owner: THIS_MODULE, - id: "VIDC", - name: "VIDCsound", - ioctl: vidc_mixer_ioctl + .owner = THIS_MODULE, + .id = "VIDC", + .name = "VIDCsound", + .ioctl = vidc_mixer_ioctl }; void vidc_update_filler(int format, int channels) diff -Nru a/sound/oss/waveartist.c b/sound/oss/waveartist.c --- a/sound/oss/waveartist.c Thu Aug 15 07:29:48 2002 +++ b/sound/oss/waveartist.c Thu Apr 3 14:35:48 2003 @@ -815,21 +815,21 @@ } static struct audio_driver waveartist_audio_driver = { - owner: THIS_MODULE, - open: waveartist_open, - close: waveartist_close, - output_block: waveartist_output_block, - start_input: waveartist_start_input, - ioctl: waveartist_ioctl, - prepare_for_input: waveartist_prepare_for_input, - prepare_for_output: waveartist_prepare_for_output, - halt_io: waveartist_halt, - halt_input: waveartist_halt_input, - halt_output: waveartist_halt_output, - trigger: waveartist_trigger, - set_speed: waveartist_set_speed, - set_bits: waveartist_set_bits, - set_channels: waveartist_set_channels + .owner = THIS_MODULE, + .open = waveartist_open, + .close = waveartist_close, + .output_block = waveartist_output_block, + .start_input = waveartist_start_input, + .ioctl = waveartist_ioctl, + .prepare_for_input = waveartist_prepare_for_input, + .prepare_for_output = waveartist_prepare_for_output, + .halt_io = waveartist_halt, + .halt_input = waveartist_halt_input, + .halt_output = waveartist_halt_output, + .trigger = waveartist_trigger, + .set_speed = waveartist_set_speed, + .set_bits = waveartist_set_bits, + .set_channels = waveartist_set_channels }; @@ -1062,15 +1062,15 @@ } static const struct waveartist_mixer_info waveartist_mixer = { - supported_devs: SUPPORTED_MIXER_DEVICES | SOUND_MASK_IGAIN, - recording_devs: SOUND_MASK_LINE | SOUND_MASK_MIC | + .supported_devs = SUPPORTED_MIXER_DEVICES | SOUND_MASK_IGAIN, + .recording_devs = SOUND_MASK_LINE | SOUND_MASK_MIC | SOUND_MASK_LINE1 | SOUND_MASK_LINE2 | SOUND_MASK_IMIX, - stereo_devs: (SUPPORTED_MIXER_DEVICES | SOUND_MASK_IGAIN) & ~ + .stereo_devs = (SUPPORTED_MIXER_DEVICES | SOUND_MASK_IGAIN) & ~ (SOUND_MASK_SPEAKER | SOUND_MASK_IMIX), - select_input: waveartist_select_input, - decode_mixer: waveartist_decode_mixer, - get_mixer: waveartist_get_mixer, + .select_input = waveartist_select_input, + .decode_mixer = waveartist_decode_mixer, + .get_mixer = waveartist_get_mixer, }; static void @@ -1203,10 +1203,10 @@ static struct mixer_operations waveartist_mixer_operations = { - owner: THIS_MODULE, - id: "WaveArtist", - name: "WaveArtist", - ioctl: waveartist_mixer_ioctl + .owner = THIS_MODULE, + .id = "WaveArtist", + .name = "WaveArtist", + .ioctl = waveartist_mixer_ioctl }; static void @@ -1692,24 +1692,24 @@ * Waveartist specific mixer information. */ static const struct waveartist_mixer_info netwinder_mixer = { - supported_devs: SOUND_MASK_VOLUME | SOUND_MASK_SYNTH | + .supported_devs = SOUND_MASK_VOLUME | SOUND_MASK_SYNTH | SOUND_MASK_PCM | SOUND_MASK_SPEAKER | SOUND_MASK_LINE | SOUND_MASK_MIC | SOUND_MASK_IMIX | SOUND_MASK_LINE1 | SOUND_MASK_PHONEIN | SOUND_MASK_PHONEOUT| SOUND_MASK_IGAIN, - recording_devs: SOUND_MASK_LINE | SOUND_MASK_MIC | + .recording_devs = SOUND_MASK_LINE | SOUND_MASK_MIC | SOUND_MASK_IMIX | SOUND_MASK_LINE1 | SOUND_MASK_PHONEIN, - stereo_devs: SOUND_MASK_VOLUME | SOUND_MASK_SYNTH | + .stereo_devs = SOUND_MASK_VOLUME | SOUND_MASK_SYNTH | SOUND_MASK_PCM | SOUND_MASK_LINE | SOUND_MASK_IMIX | SOUND_MASK_IGAIN, - select_input: netwinder_select_input, - decode_mixer: netwinder_decode_mixer, - get_mixer: netwinder_get_mixer, + .select_input = netwinder_select_input, + .decode_mixer = netwinder_decode_mixer, + .get_mixer = netwinder_get_mixer, }; static void diff -Nru a/sound/oss/wavfront.c b/sound/oss/wavfront.c --- a/sound/oss/wavfront.c Tue Feb 25 11:05:27 2003 +++ b/sound/oss/wavfront.c Thu Apr 3 14:35:48 2003 @@ -1961,11 +1961,11 @@ } static /*const*/ struct file_operations wavefront_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: wavefront_ioctl, - open: wavefront_open, - release: wavefront_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = wavefront_ioctl, + .open = wavefront_open, + .release = wavefront_release, }; @@ -2078,25 +2078,25 @@ static struct synth_operations wavefront_operations = { - owner: THIS_MODULE, - id: "WaveFront", - info: &wavefront_info, - midi_dev: 0, - synth_type: SYNTH_TYPE_SAMPLE, - synth_subtype: SAMPLE_TYPE_WAVEFRONT, - open: wavefront_oss_open, - close: wavefront_oss_close, - ioctl: wavefront_oss_ioctl, - kill_note: midi_synth_kill_note, - start_note: midi_synth_start_note, - set_instr: midi_synth_set_instr, - reset: midi_synth_reset, - load_patch: midi_synth_load_patch, - aftertouch: midi_synth_aftertouch, - controller: midi_synth_controller, - panning: midi_synth_panning, - bender: midi_synth_bender, - setup_voice: midi_synth_setup_voice + .owner = THIS_MODULE, + .id = "WaveFront", + .info = &wavefront_info, + .midi_dev = 0, + .synth_type = SYNTH_TYPE_SAMPLE, + .synth_subtype = SAMPLE_TYPE_WAVEFRONT, + .open = wavefront_oss_open, + .close = wavefront_oss_close, + .ioctl = wavefront_oss_ioctl, + .kill_note = midi_synth_kill_note, + .start_note = midi_synth_start_note, + .set_instr = midi_synth_set_instr, + .reset = midi_synth_reset, + .load_patch = midi_synth_load_patch, + .aftertouch = midi_synth_aftertouch, + .controller = midi_synth_controller, + .panning = midi_synth_panning, + .bender = midi_synth_bender, + .setup_voice = midi_synth_setup_voice }; #endif /* OSS_SUPPORT_SEQ */ diff -Nru a/sound/oss/wf_midi.c b/sound/oss/wf_midi.c --- a/sound/oss/wf_midi.c Sun Dec 8 04:51:33 2002 +++ b/sound/oss/wf_midi.c Thu Apr 3 14:35:48 2003 @@ -552,16 +552,16 @@ static struct midi_operations wf_mpu_midi_proto = { - owner: THIS_MODULE, - info: {"WF-MPU MIDI", 0, MIDI_CAP_MPU401, SNDCARD_MPU401}, - in_info: {0}, /* in_info */ - open: wf_mpu_open, - close: wf_mpu_close, - ioctl: wf_mpu_ioctl, - outputc: wf_mpu_out, - start_read: wf_mpu_start_read, - end_read: wf_mpu_end_read, - buffer_status: wf_mpu_buffer_status, + .owner = THIS_MODULE, + .info = {"WF-MPU MIDI", 0, MIDI_CAP_MPU401, SNDCARD_MPU401}, + .in_info = {0}, /* in_info */ + .open = wf_mpu_open, + .close = wf_mpu_close, + .ioctl = wf_mpu_ioctl, + .outputc = wf_mpu_out, + .start_read = wf_mpu_start_read, + .end_read = wf_mpu_end_read, + .buffer_status = wf_mpu_buffer_status, }; static struct synth_info wf_mpu_synth_info_proto = @@ -668,27 +668,27 @@ static struct synth_operations wf_mpu_synth_proto = { - owner: THIS_MODULE, - id: "WaveFront (ICS2115)", - info: NULL, /* info field, filled in during configuration */ - midi_dev: 0, /* MIDI dev XXX should this be -1 ? */ - synth_type: SYNTH_TYPE_MIDI, - synth_subtype: SAMPLE_TYPE_WAVEFRONT, - open: wf_mpu_synth_open, - close: wf_mpu_synth_close, - ioctl: wf_mpu_synth_ioctl, - kill_note: midi_synth_kill_note, - start_note: midi_synth_start_note, - set_instr: midi_synth_set_instr, - reset: midi_synth_reset, - hw_control: midi_synth_hw_control, - load_patch: midi_synth_load_patch, - aftertouch: midi_synth_aftertouch, - controller: midi_synth_controller, - panning: midi_synth_panning, - bender: midi_synth_bender, - setup_voice: midi_synth_setup_voice, - send_sysex: midi_synth_send_sysex + .owner = THIS_MODULE, + .id = "WaveFront (ICS2115)", + .info = NULL, /* info field, filled in during configuration */ + .midi_dev = 0, /* MIDI dev XXX should this be -1 ? */ + .synth_type = SYNTH_TYPE_MIDI, + .synth_subtype = SAMPLE_TYPE_WAVEFRONT, + .open = wf_mpu_synth_open, + .close = wf_mpu_synth_close, + .ioctl = wf_mpu_synth_ioctl, + .kill_note = midi_synth_kill_note, + .start_note = midi_synth_start_note, + .set_instr = midi_synth_set_instr, + .reset = midi_synth_reset, + .hw_control = midi_synth_hw_control, + .load_patch = midi_synth_load_patch, + .aftertouch = midi_synth_aftertouch, + .controller = midi_synth_controller, + .panning = midi_synth_panning, + .bender = midi_synth_bender, + .setup_voice = midi_synth_setup_voice, + .send_sysex = midi_synth_send_sysex }; static int diff -Nru a/sound/oss/ymfpci.c b/sound/oss/ymfpci.c --- a/sound/oss/ymfpci.c Thu Nov 21 10:06:26 2002 +++ b/sound/oss/ymfpci.c Thu Apr 3 14:35:48 2003 @@ -2038,23 +2038,23 @@ } static /*const*/ struct file_operations ymf_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - read: ymf_read, - write: ymf_write, - poll: ymf_poll, - ioctl: ymf_ioctl, - mmap: ymf_mmap, - open: ymf_open, - release: ymf_release, + .owner = THIS_MODULE, + .llseek = no_llseek, + .read = ymf_read, + .write = ymf_write, + .poll = ymf_poll, + .ioctl = ymf_ioctl, + .mmap = ymf_mmap, + .open = ymf_open, + .release = ymf_release, }; static /*const*/ struct file_operations ymf_mixer_fops = { - owner: THIS_MODULE, - llseek: no_llseek, - ioctl: ymf_ioctl_mixdev, - open: ymf_open_mixdev, - release: ymf_release_mixdev, + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = ymf_ioctl_mixdev, + .open = ymf_open_mixdev, + .release = ymf_release_mixdev, }; /* @@ -2650,12 +2650,12 @@ MODULE_LICENSE("GPL"); static struct pci_driver ymfpci_driver = { - name: "ymfpci", - id_table: ymf_id_tbl, - probe: ymf_probe_one, - remove: __devexit_p(ymf_remove_one), - suspend: ymf_suspend, - resume: ymf_resume + .name = "ymfpci", + .id_table = ymf_id_tbl, + .probe = ymf_probe_one, + .remove = __devexit_p(ymf_remove_one), + .suspend = ymf_suspend, + .resume = ymf_resume }; static int __init ymf_init_module(void)