summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2003-04-09 20:26:23 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2003-04-09 20:26:23 -0700
commit9c2cfa15e3aae1dd9d74ea42dc35c109937dc971 (patch)
treed9562c2cf3a14ca3d8e79322f883ebe2cf8961ac
parent5ca4f809c163ac6bb6bcf666f054cc5df0a8844e (diff)
parent29d1acb7e146c9e262f211516d5205809c8c90b6 (diff)
Merge http://linux-sound.bkbits.net/linux-sound
into home.transmeta.com:/home/torvalds/v2.5/linux
-rw-r--r--Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl733
-rw-r--r--drivers/pnp/isapnp/core.c2
-rw-r--r--drivers/pnp/pnpbios/core.c2
-rw-r--r--include/linux/pnp.h19
-rw-r--r--include/sound/ac97_codec.h13
-rw-r--r--include/sound/asound.h11
-rw-r--r--include/sound/control.h43
-rw-r--r--include/sound/cs46xx.h3
-rw-r--r--include/sound/cs46xx_dsp_scb_types.h812
-rw-r--r--include/sound/cs46xx_dsp_spos.h24
-rw-r--r--include/sound/cs46xx_dsp_task_types.h124
-rw-r--r--include/sound/driver.h1
-rw-r--r--include/sound/emu10k1.h10
-rw-r--r--include/sound/hdsp.h92
-rw-r--r--include/sound/initval.h2
-rw-r--r--include/sound/memalloc.h15
-rw-r--r--include/sound/opl3.h3
-rw-r--r--include/sound/snd_wavefront.h12
-rw-r--r--include/sound/trident.h8
-rw-r--r--include/sound/ymfpci.h24
-rw-r--r--sound/core/Makefile2
-rw-r--r--sound/core/control.c156
-rw-r--r--sound/core/info.c5
-rw-r--r--sound/core/ioctl32/pcm32.c14
-rw-r--r--sound/core/ioctl32/rawmidi32.c10
-rw-r--r--sound/core/ioctl32/timer32.c13
-rw-r--r--sound/core/memalloc.c181
-rw-r--r--sound/core/memory_wrapper.c69
-rw-r--r--sound/core/oss/mixer_oss.c19
-rw-r--r--sound/core/oss/pcm_oss.c5
-rw-r--r--sound/core/pcm_lib.c6
-rw-r--r--sound/core/pcm_native.c1
-rw-r--r--sound/core/rtctimer.c4
-rw-r--r--sound/core/seq/instr/ainstr_iw.c2
-rw-r--r--sound/core/seq/oss/seq_oss_midi.c1
-rw-r--r--sound/core/seq/seq_memory.c4
-rw-r--r--sound/core/seq/seq_midi.c2
-rw-r--r--sound/core/seq/seq_midi_emul.c2
-rw-r--r--sound/core/sgbuf.c1
-rw-r--r--sound/core/sound.c3
-rw-r--r--sound/drivers/dummy.c1
-rw-r--r--sound/drivers/opl3/opl3_lib.c2
-rw-r--r--sound/drivers/opl3/opl3_seq.c4
-rw-r--r--sound/drivers/opl3/opl3_synth.c12
-rw-r--r--sound/i2c/cs8427.c2
-rw-r--r--sound/i2c/l3/uda1341.c2
-rw-r--r--sound/isa/Kconfig5
-rw-r--r--sound/isa/ad1816a/ad1816a.c216
-rw-r--r--sound/isa/als100.c41
-rw-r--r--sound/isa/azt2320.c48
-rw-r--r--sound/isa/cmi8330.c232
-rw-r--r--sound/isa/cs423x/cs4236.c320
-rw-r--r--sound/isa/dt019x.c43
-rw-r--r--sound/isa/es18xx.c277
-rw-r--r--sound/isa/gus/interwave.c255
-rw-r--r--sound/isa/opl3sa2.c158
-rw-r--r--sound/isa/opti9xx/opti92x-ad1848.c322
-rw-r--r--sound/isa/sb/es968.c15
-rw-r--r--sound/isa/sb/sb16.c46
-rw-r--r--sound/isa/sb/sb8.c6
-rw-r--r--sound/isa/sgalaxy.c2
-rw-r--r--sound/isa/wavefront/wavefront.c263
-rw-r--r--sound/pci/ac97/ac97_codec.c199
-rw-r--r--sound/pci/ac97/ac97_id.h2
-rw-r--r--sound/pci/ac97/ac97_patch.c34
-rw-r--r--sound/pci/ac97/ac97_patch.h1
-rw-r--r--sound/pci/ali5451/ali5451.c15
-rw-r--r--sound/pci/cmipci.c4
-rw-r--r--sound/pci/cs4281.c4
-rw-r--r--sound/pci/cs46xx/cs46xx.c8
-rw-r--r--sound/pci/cs46xx/cs46xx_lib.c174
-rw-r--r--sound/pci/cs46xx/cs46xx_lib.h2
-rw-r--r--sound/pci/cs46xx/dsp_spos.c126
-rw-r--r--sound/pci/cs46xx/dsp_spos.h11
-rw-r--r--sound/pci/cs46xx/dsp_spos_scb_lib.c93
-rw-r--r--sound/pci/emu10k1/emu10k1_main.c9
-rw-r--r--sound/pci/emu10k1/emufx.c10
-rw-r--r--sound/pci/emu10k1/emumixer.c77
-rw-r--r--sound/pci/emu10k1/emupcm.c25
-rw-r--r--sound/pci/ens1370.c4
-rw-r--r--sound/pci/es1938.c13
-rw-r--r--sound/pci/fm801.c11
-rw-r--r--sound/pci/ice1712/ak4524.c18
-rw-r--r--sound/pci/ice1712/ice1712.c16
-rw-r--r--sound/pci/intel8x0.c4
-rw-r--r--sound/pci/korg1212/korg1212.c212
-rw-r--r--sound/pci/maestro3.c7
-rw-r--r--sound/pci/rme32.c4
-rw-r--r--sound/pci/rme96.c4
-rw-r--r--sound/pci/rme9652/digiface_firmware.dat4072
-rw-r--r--sound/pci/rme9652/hdsp.c2109
-rw-r--r--sound/pci/rme9652/multiface_firmware.dat4072
-rw-r--r--sound/pci/rme9652/rme9652.c4
-rw-r--r--sound/pci/trident/trident_main.c100
-rw-r--r--sound/pci/via82xx.c164
-rw-r--r--sound/pci/ymfpci/ymfpci.c76
-rw-r--r--sound/pci/ymfpci/ymfpci_main.c12
-rw-r--r--sound/ppc/awacs.c33
-rw-r--r--sound/ppc/pmac.c257
-rw-r--r--sound/ppc/pmac.h25
-rw-r--r--sound/ppc/powermac.c12
-rw-r--r--sound/usb/usbquirks.h2
102 files changed, 5560 insertions, 11190 deletions
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
index 04e0311d2c15..7b167f81a08f 100644
--- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl
@@ -18,8 +18,8 @@
</affiliation>
</author>
- <date>Dec. 27, 2002</date>
- <edition>0.2 (reborn at Christmas)</edition>
+ <date>Mar. 26, 2003</date>
+ <edition>0.3</edition>
<abstract>
<para>
@@ -30,7 +30,7 @@
<legalnotice>
<para>
- Copyright (c) 2002 Takashi Iwai <email>tiwai@suse.de</email>
+ Copyright (c) 2002, 2003 Takashi Iwai <email>tiwai@suse.de</email>
</para>
<para>
@@ -1425,11 +1425,11 @@
<section id="pci-resource-resource-allocation">
<title>Resource Allocation</title>
<para>
- The allocation of ports and irqs are done via standard kernel
+ The allocation of I/O ports and irqs are done via standard kernel
functions. Unlike ALSA ver.0.5.x., there are no helpers for
that. And these resources must be released in the destructor
- function (see below). Also, on ALSA 0.9.x, you don't need
- allocate (pseudo-)DMA for PCI like 0.5.x.
+ function (see below). Also, on ALSA 0.9.x, you don't need to
+ allocate (pseudo-)DMA for PCI like ALSA 0.5.x.
</para>
<para>
@@ -1461,7 +1461,7 @@
since irq 0 is valid. The port address and its resource pointer
can be initialized as null by
<function>snd_magic_kcalloc()</function> automatically, so you
- don't have to take care of it.
+ don't have to take care of resetting them.
</para>
<para>
@@ -2227,79 +2227,157 @@
</para>
</section>
- <section id="pcm-interface-operators">
- <title>Operators</title>
- <para>
- OK, now let me explain the detail of each pcm callback
- (<parameter>ops</parameter>). In general, every callback must
- return 0 if successful, or a negative number with the error
- number such as <constant>-EINVAL</constant> at any
- error.
- </para>
-
- <para>
- The callback function takes at least the argument with
- <type>snd_pcm_substream_t</type> pointer. For retrieving the
- chip record from the given substream instance, you can use the
- following macro.
-
- <informalexample>
- <programlisting>
-<![CDATA[
- #define chip_t mychip_t
-
- int xxx() {
- mychip_t *chip = snd_pcm_substream_chip(substream);
- ....
- }
-]]>
- </programlisting>
- </informalexample>
- </para>
-
- <para>
- It's expanded with a magic-cast, so the cast-error is
- automatically checked. You should define <type>chip_t</type> at
- the beginning of the code, since this will be referred in many
- places of pcm and control interfaces.
- </para>
+ <section id="pcm-interface-runtime">
+ <title>Runtime Pointer - The Chest of PCM Information</title>
+ <para>
+ When the PCM substream is opened, a PCM runtime instance is
+ allocated and assigned to the substream. This pointer is
+ accessible via <constant>substream-&gt;runtime</constant>.
+ This runtime pointer holds the various information; it holds
+ the copy of hw_params and sw_params configurations, the buffer
+ pointers, mmap records, spinlocks, etc. Almost everyhing you
+ need for controlling the PCM can be found there.
+ </para>
- <section id="pcm-interface-operators-open-callback">
- <title>open callback</title>
- <para>
+ <para>
+ The definition of runtime instance is found in
+ <filename>&lt;sound/pcm.h&gt;</filename>. Here is the
+ copy from the file.
<informalexample>
<programlisting>
<![CDATA[
- static int snd_xxx_open(snd_pcm_substream_t *subs);
+struct _snd_pcm_runtime {
+ /* -- Status -- */
+ snd_pcm_substream_t *trigger_master;
+ snd_timestamp_t trigger_tstamp; /* trigger timestamp */
+ int overrange;
+ snd_pcm_uframes_t avail_max;
+ snd_pcm_uframes_t hw_ptr_base; /* Position at buffer restart */
+ snd_pcm_uframes_t hw_ptr_interrupt; /* Position at interrupt time*/
+
+ /* -- HW params -- */
+ snd_pcm_access_t access; /* access mode */
+ snd_pcm_format_t format; /* SNDRV_PCM_FORMAT_* */
+ snd_pcm_subformat_t subformat; /* subformat */
+ unsigned int rate; /* rate in Hz */
+ unsigned int channels; /* channels */
+ snd_pcm_uframes_t period_size; /* period size */
+ unsigned int periods; /* periods */
+ snd_pcm_uframes_t buffer_size; /* buffer size */
+ unsigned int tick_time; /* tick time */
+ snd_pcm_uframes_t min_align; /* Min alignment for the format */
+ size_t byte_align;
+ unsigned int frame_bits;
+ unsigned int sample_bits;
+ unsigned int info;
+ unsigned int rate_num;
+ unsigned int rate_den;
+
+ /* -- SW params -- */
+ int tstamp_timespec; /* use timeval (0) or timespec (1) */
+ snd_pcm_tstamp_t tstamp_mode; /* mmap timestamp is updated */
+ unsigned int period_step;
+ unsigned int sleep_min; /* min ticks to sleep */
+ snd_pcm_uframes_t xfer_align; /* xfer size need to be a multiple */
+ snd_pcm_uframes_t start_threshold;
+ snd_pcm_uframes_t stop_threshold;
+ snd_pcm_uframes_t silence_threshold; /* Silence filling happens when
+ noise is nearest than this */
+ snd_pcm_uframes_t silence_size; /* Silence filling size */
+ snd_pcm_uframes_t boundary; /* pointers wrap point */
+
+ snd_pcm_uframes_t silenced_start;
+ snd_pcm_uframes_t silenced_size;
+
+ snd_pcm_sync_id_t sync; /* hardware synchronization ID */
+
+ /* -- mmap -- */
+ volatile snd_pcm_mmap_status_t *status;
+ volatile snd_pcm_mmap_control_t *control;
+ atomic_t mmap_count;
+
+ /* -- locking / scheduling -- */
+ spinlock_t lock;
+ wait_queue_head_t sleep;
+ struct timer_list tick_timer;
+ struct fasync_struct *fasync;
+
+ /* -- private section -- */
+ void *private_data;
+ void (*private_free)(snd_pcm_runtime_t *runtime);
+
+ /* -- hardware description -- */
+ snd_pcm_hardware_t hw;
+ snd_pcm_hw_constraints_t hw_constraints;
+
+ /* -- interrupt callbacks -- */
+ void (*transfer_ack_begin)(snd_pcm_substream_t *substream);
+ void (*transfer_ack_end)(snd_pcm_substream_t *substream);
+
+ /* -- timer -- */
+ unsigned int timer_resolution; /* timer resolution */
+
+ /* -- DMA -- */
+ unsigned char *dma_area; /* DMA area */
+ dma_addr_t dma_addr; /* physical bus address (not accessible from main CPU) */
+ size_t dma_bytes; /* size of DMA area */
+ void *dma_private; /* private DMA data for the memory allocator */
+
+#if defined(CONFIG_SND_PCM_OSS) || defined(CONFIG_SND_PCM_OSS_MODULE)
+ /* -- OSS things -- */
+ snd_pcm_oss_runtime_t oss;
+#endif
+};
]]>
</programlisting>
</informalexample>
+ </para>
- This is called when a pcm substream is opened.
- </para>
+ <para>
+ For the operators (callbacks) of each sound driver, most of
+ these records are supposed to be read-only. Only the PCM
+ middle-layer changes / updates these info. The excpetions are
+ the hardware description (hw), interrupt callbacks
+ (transfer_ack_xxx), DMA buffer information, and the private
+ data. Besides, if you use the standard buffer allocation
+ method via <function>snd_pcm_lib_malloc_pages()</function>,
+ you don't need to set the DMA buffer information by yourself.
+ </para>
- <para>
- At least, here you have to initialize the runtime hardware
- record. Typically, this is done by like this:
+ <para>
+ In the sections below, important records are explained.
+ </para>
+ <section id="pcm-interface-runtime-hw">
+ <title>Hardware Description</title>
+ <para>
+ The hardware descriptor (<type>snd_pcm_hardware_t</type>)
+ contains the definitions of the fundamental hardware
+ configuration. Above all, you'll need to define this in
+ <link linkend="pcm-interface-operators-open-callback"><citetitle>
+ the open callback</citetitle></link>.
+ Note that the runtime instance holds the copy of the
+ descriptor, not the pointer to the existing descriptor. That
+ is, in the open callback, you can modify the copied descriptor
+ (<constant>runtime-&gt;hw</constant>) as you need. For example, if the maximum
+ number of channels is 1 only on some chip models, you can
+ still use the same hardware descriptor and change the
+ channels_max later:
<informalexample>
<programlisting>
<![CDATA[
- static int snd_xxx_open(snd_pcm_substream_t *substream)
- {
- mychip_t *chip = snd_pcm_substream_chip(substream);
snd_pcm_runtime_t *runtime = substream->runtime;
-
- runtime->hw = snd_mychip_playback_hw;
- return 0;
- }
+ ...
+ runtime->hw = snd_mychip_playback_hw; // common definition
+ if (chip->model == VERY_OLD_ONE)
+ runtime->hw.channels_max = 1;
]]>
</programlisting>
</informalexample>
+ </para>
- where <parameter>snd_mychip_playback_hw</parameter> is the
- pre-defined hardware record.
-
+ <para>
+ Typically, you'll have a hardware descriptor like below:
<informalexample>
<programlisting>
<![CDATA[
@@ -2326,11 +2404,8 @@
</para>
<para>
- The similar struct exists on ALSA 0.5.x driver, so you can
- guess the values if you already wrote a driver.
- </para>
-
- <para>
+ <itemizedlist>
+ <listitem><para>
The <structfield>info</structfield> field contains the type and
capabilities of this pcm. The bit flags are defined in
<filename>&lt;sound/asound.h&gt;</filename> as
@@ -2366,6 +2441,17 @@
must handle the corresponding commands.
</para>
+ <para>
+ When the PCM substreams can be synchronized (typically,
+ synchorinized start/stop of a playback and a capture streams),
+ you can give <constant>SNDRV_PCM_INFO_SYNC_START</constant>,
+ too. In this case, you'll need to check the linked-list of
+ PCM substreams in the trigger callback. This will be
+ described in the later section.
+ </para>
+ </listitem>
+
+ <listitem>
<para>
<structfield>formats</structfield> field contains the bit-flags
of supported formats (<constant>SNDRV_PCM_FMTBIT_XXX</constant>).
@@ -2373,38 +2459,181 @@
bits. In the example above, the signed 16bit little-endian
format is specified.
</para>
+ </listitem>
+ <listitem>
<para>
<structfield>rates</structfield> field contains the bit-flags of
supported rates (<constant>SNDRV_PCM_RATE_XXX</constant>).
When the chip supports continuous rates, pass
<constant>CONTINUOUS</constant> bit additionally.
- The pre-defined rate bits are only for typical rates. If your
- chip supports unconventional rates, you need to add
- <constant>KNOT</constant> bit and set up the
+ The pre-defined rate bits are provided only for typical
+ rates. If your chip supports unconventional rates, you need to add
+ <constant>KNOT</constant> bit and set up the hardware
constraint manually (explained later).
</para>
+ </listitem>
- <para>
- There have been many changes of terminology between
- ALSA 0.5.x and 0.9.x.
- On the ALSA 0.9.x world, <quote>period</quote> means what is
- known as <quote>fragment</quote> in the OSS. It's the least
- size of (a part of) the buffer to generate an interrupt.
+ <listitem>
+ <para>
+ <structfield>rate_min</structfield> and
+ <structfield>rate_max</structfield> define the minimal and
+ maximal sample rate. This should correspond somehow to
+ <structfield>rates</structfield> bits.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <structfield>channel_min</structfield> and
+ <structfield>channel_max</structfield>
+ define, as you might already expected, the minimal and maximal
+ number of channels.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ <structfield>buffer_bytes_max</structfield> defines the
+ maximal buffer size in bytes. There is no
+ <structfield>buffer_bytes_min</structfield> field, since
+ it can be calculated from the minimal period size and the
+ minimal number of periods.
+ Meanwhile, <structfield>period_bytes_min</structfield> and
+ define the minimal and maximal size of the period in bytes.
+ <structfield>periods_max</structfield> and
+ <structfield>periods_min</structfield> define the maximal and
+ minimal number of periods in the buffer.
</para>
- <para>
- Now, taking the new terminology into account, the other fields
- are self-explanatory (I hope). Please note that here, both
- min/max buffer and period sizes are specified in bytes.
+ <para>
+ The <quote>period</quote> is a term, that corresponds to
+ fragment in the OSS world. The period defines the size at
+ which the PCM interrupt is generated. This size strongly
+ depends on the hardware.
+ Generally, the smaller period size will give you more
+ interrupts, that is, more controls.
+ In the case of capture, this size defines the input latency.
+ On the other hand, the whole buffer size defines the
+ output latency for the playback direction.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ There is also a field <structfield>fifo_size</structfield>.
+ This specifies the size of the hardware FIFO, but it's not
+ used currently in the driver nor in the alsa-lib. So, you
+ can ignore this field.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </section>
+
+ <section id="pcm-interface-runtime-config">
+ <title>PCM Configurations</title>
+ <para>
+ Ok, let's go back again to the PCM runtime records.
+ The most frequently referred records in the runtime instance are
+ the PCM configurations.
+ The PCM configurations are stored on runtime instance
+ after the application sends <type>hw_params</type> data via
+ alsa-lib. There are many fields copied from hw_params and
+ sw_params structs. For example,
+ <structfield>format</structfield> holds the format type
+ chosen by the application. This field contains the enum value
+ <constant>SNDRV_PCM_FORMAT_XXX</constant>.
+ </para>
+
+ <para>
+ One thing to be noted is that the configured buffer and period
+ sizes are stored in <quote>frames</quote> in the runtime
+ In the ALSA world, 1 frame = channels * samples-size.
+ For conversion between frames and bytes, you can use the
+ helper functions, <function>frames_to_bytes()</function> and
+ <function>bytes_to_frames()</function>.
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ period_bytes = frames_to_bytes(runtime, runtime->period_size);
+]]>
+ </programlisting>
+ </informalexample>
</para>
- <para>
- Some drivers allocate the private instance for each pcm
- substream. It can be stored in
- <constant>substream->runtime-&gt;private_data</constant>.
- Since it's a void pointer, you
- should use magic-kmalloc and magic-cast for such an object.
+ <para>
+ Also, many software parameters (sw_params) are
+ stored in frames, too. Please check the type of the field.
+ <type>snd_pcm_uframes_t</type> is for the frames as unsigned
+ integer while <type>snd_pcm_sframes_t</type> is for the frames
+ as signed integer.
+ </para>
+ </section>
+
+ <section id="pcm-interface-runtime-dma">
+ <title>DMA Buffer Information</title>
+ <para>
+ The DMA buffer is defined by the following four fields,
+ <structfield>dma_area</structfield>,
+ <structfield>dma_addr</structfield>,
+ <structfield>dma_bytes</structfield> and
+ <structfield>dma_private</structfield>.
+ The <structfield>dma_area</structfield> holds the buffer
+ pointer (the logical address). You can call
+ <function>memcpy</function> from/to
+ this pointer. Meanwhile, <structfield>dma_addr</structfield>
+ holds the physical address of the buffer. This field is
+ specified only when the buffer is a linear buffer.
+ <structfield>dma_bytes</structfield> holds the size of buffer
+ in bytes. <structfield>dma_private</structfield> is used for
+ the ALSA DMA allocator.
+ </para>
+
+ <para>
+ If you use a standard ALSA function,
+ <function>snd_pcm_lib_malloc_pages()</function>, for
+ allocating the buffer, these fields are set by the ALSA middle
+ layer, and you should <emphasis>not</emphasis> change them by
+ yourself. You can read them but not write them.
+ On the other hand, if you want to allocate the buffer by
+ yourself, you'll need to manage it in hw_params callback.
+ At least, <structfield>dma_bytes</structfield> is mandatory.
+ <structfield>dma_area</structfield> is necessary when the
+ buffer is mmapped. If your driver doesn't support mmap, this
+ field is not necessary. <structfield>dma_addr</structfield>
+ is also not mandatory. You can use
+ <structfield>dma_private</structfield> as you like, too.
+ </para>
+ </section>
+
+ <section id="pcm-interface-runtime-status">
+ <title>Running Status</title>
+ <para>
+ The running status can be referred via <constant>runtime-&gt;status</constant>.
+ This is the pointer to <type>snd_pcm_mmap_status_t</type>
+ record. For example, you can get the current DMA hardware
+ pointer via <constant>runtime-&gt;status-&gt;hw_ptr</constant>.
+ </para>
+
+ <para>
+ The DMA application pointer can be referred via
+ <constant>runtime-&gt;control</constant>, which points
+ <type>snd_pcm_mmap_control_t</type> record.
+ However, accessing directly to this value is not recommended.
+ </para>
+ </section>
+
+ <section id="pcm-interface-runtime-private">
+ <title>Private Data</title>
+ <para>
+ You can allocate a record for the substream and store it in
+ <constant>runtime-&gt;private_data</constant>. Usually, this
+ done in
+ <link linkend="pcm-interface-operators-open-callback"><citetitle>
+ the open callback</citetitle></link>.
+ Since it's a void pointer, you should use magic-kmalloc and
+ magic-cast for such an object.
<informalexample>
<programlisting>
@@ -2423,8 +2652,110 @@
</para>
<para>
- The allocated object must be released in the close callback below.
+ The allocated object must be released in
+ <link linkend="pcm-interface-operators-open-callback"><citetitle>
+ the close callback</citetitle></link>.
</para>
+ </section>
+
+ <section id="pcm-interface-runtime-intr">
+ <title>Interrupt Callbacks</title>
+ <para>
+ The field <structfield>transfer_ack_begin</structfield> and
+ <structfield>transfer_ack_end</structfield> are called at
+ the beginning and the end of
+ <function>snd_pcm_period_elapsed()</function>, respectively.
+ </para>
+ </section>
+
+ </section>
+
+ <section id="pcm-interface-operators">
+ <title>Operators</title>
+ <para>
+ OK, now let me explain the detail of each pcm callback
+ (<parameter>ops</parameter>). In general, every callback must
+ return 0 if successful, or a negative number with the error
+ number such as <constant>-EINVAL</constant> at any
+ error.
+ </para>
+
+ <para>
+ The callback function takes at least the argument with
+ <type>snd_pcm_substream_t</type> pointer. For retrieving the
+ chip record from the given substream instance, you can use the
+ following macro.
+
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ #define chip_t mychip_t
+
+ int xxx() {
+ mychip_t *chip = snd_pcm_substream_chip(substream);
+ ....
+ }
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+
+ <para>
+ It's expanded with a magic-cast, so the cast-error is
+ automatically checked. You should define <type>chip_t</type> at
+ the beginning of the code, since this will be referred in many
+ places of pcm and control interfaces.
+ </para>
+
+ <section id="pcm-interface-operators-open-callback">
+ <title>open callback</title>
+ <para>
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ static int snd_xxx_open(snd_pcm_substream_t *subs);
+]]>
+ </programlisting>
+ </informalexample>
+
+ This is called when a pcm substream is opened.
+ </para>
+
+ <para>
+ At least, here you have to initialize the runtime-&gt;hw
+ record. Typically, this is done by like this:
+
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ static int snd_xxx_open(snd_pcm_substream_t *substream)
+ {
+ mychip_t *chip = snd_pcm_substream_chip(substream);
+ snd_pcm_runtime_t *runtime = substream->runtime;
+
+ runtime->hw = snd_mychip_playback_hw;
+ return 0;
+ }
+]]>
+ </programlisting>
+ </informalexample>
+
+ where <parameter>snd_mychip_playback_hw</parameter> is the
+ pre-defined hardware description.
+ </para>
+
+ <para>
+ You can allocate a private data in this callback, as described
+ in <link linkend="pcm-interface-runtime-private"><citetitle>
+ Private Data</citetitle></link> section.
+ </para>
+
+ <para>
+ If the hardware configuration needs more constraints, set the
+ hardware constraints here, too.
+ See <link linkend="pcm-interface-constraints"><citetitle>
+ Constraints</citetitle></link> for more details.
+ </para>
</section>
<section id="pcm-interface-operators-close-callback">
@@ -2622,23 +2953,6 @@
</para>
<para>
- Note that the period and the buffer sizes are stored in
- <quote>frames</quote>. In the ALSA world, 1 frame = channels
- * samples-size. For conversion between frames and bytes, you
- can use the helper functions,
- <function>frames_to_bytes()</function> and
- <function>bytes_to_frames()</function>.
-
- <informalexample>
- <programlisting>
-<![CDATA[
- period_bytes = frames_to_bytes(runtime, runtime->period_size);
-]]>
- </programlisting>
- </informalexample>
- </para>
-
- <para>
Be careful that this callback will be called many times at
each set up, too.
</para>
@@ -5117,6 +5431,217 @@
<!-- ****************************************************** -->
+<!-- How To Put Your Driver -->
+<!-- ****************************************************** -->
+ <chapter id="how-to-put-your-driver">
+ <title>How To Put Your Driver Into ALSA Tree</title>
+ <section>
+ <title>General</title>
+ <para>
+ So far, you've learned how to write the driver codes.
+ And you might have a question now: how to put my own
+ driver into the ALSA driver tree?
+ Here (finally :) the standard procedure is described briefly.
+ </para>
+
+ <para>
+ Suppose that you'll create a new PCI driver for the card
+ <quote>xyz</quote>. The card module name would be
+ snd-xyz. The new driver is usually put into alsa-driver
+ tree. Then the driver is evaluated, audited and tested
+ by developers and users. After a certain time, the driver
+ will go to alsa-kernel tree and eventually integrated into
+ Linux 2.5 tree.
+ </para>
+
+ <para>
+ In the following sections, the driver code is supposed
+ to be put into alsa-driver tree. The two cases are assumed:
+ a driver consisting of a single source file and one consisting
+ of several source files.
+ </para>
+ </section>
+
+ <section>
+ <title>Driver with A Single Source File</title>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ Modify alsa-driver/pci/Makefile
+ </para>
+
+ <para>
+ Suppose you have a file xyz.c. Add the following
+ two lines
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ snd-xyz-objs := xyz.o
+ extra-obj-$(CONFIG_SND_XYZ) += snd-xyz.o
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify alsa-driver/acore/Makefile
+ </para>
+
+ <para>
+ Here define the dependent modules.
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ obj-$(CONFIG_SND_XYZ) += snd.o ...
+]]>
+ </programlisting>
+ </informalexample>
+
+ If the driver supports PCM, snd-pcm.o,
+ snd-timer.o and snd-page-alloc.o
+ will be needed.
+ </para>
+ <para>
+ For rawmidi, snd-rawmidi.o is needed in addition.
+ The MIDI stuff is also related to the sequencer.
+ You'll need to modify alsa-driver/acore/seq/Makefile.
+ </para>
+
+ <para>
+ For OPL3, snd-hwdep.o is needed, too.
+ It's involved with the sequencer, and as well as rawmidi,
+ you'll need to modify alsa-driver/acore/seq/Makefile
+ and acore/seq/instr/Makefile in addition.
+ Also, a new entry is necessary in
+ alsa-driver/drivers/opl3/Makefile.
+ </para>
+
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify alsa-driver/utils/Modules.dep
+ </para>
+
+ <para>
+ Add the module definition for configure, here.
+ The beginning of the line must be a vertical bar, following
+ the card module name (snd-xyz) and the list of its all
+ dependent modules.
+
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ %dir linux/sound/pci
+ |snd-azt3328 snd-pcm snd-mpu401-uart snd-opl3-lib snd-opl3-synth
+ |snd-xyz snd-pcm ...
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Run cvscompile script to re-generate the configure script and
+ build the whole stuff again.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ <section>
+ <title>Drivers with Several Source Files</title>
+ <para>
+ Suppose that the driver snd-xyz have several source files.
+ They are located in the new subdirectory,
+ pci/xyz.
+
+ <orderedlist>
+ <listitem>
+ <para>
+ Add a new directory (xyz) to extra-subdir-y list in alsa-driver/pci/Makefile
+
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ extra-subdir-y := pdplus vx222 xyz
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Under the directory xyz, create a Makefile
+
+ <example>
+ <title>Sample Makefile for a driver xyz</title>
+ <programlisting>
+<![CDATA[
+ TOPDIR = ../..
+
+ include $(TOPDIR)/toplevel.config
+ include $(TOPDIR)/Makefile.conf
+
+ TOPDIR = $(MAINSRCDIR)
+
+ snd-xyz-objs := xyz.o abc.o def.o
+
+ obj-$(CONFIG_SND_XYZ) += snd-xyz.o
+
+ include $(TOPDIR)/Rules.make
+]]>
+ </programlisting>
+ </example>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify alsa-driver/acore/Makefile
+ </para>
+
+ <para>
+ This procedure is as same as in the last section.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Modify alsa-driver/utils/Modules.dep
+ </para>
+
+ <para>
+ <informalexample>
+ <programlisting>
+<![CDATA[
+ %dir linux/sound/pci/xyz
+ |snd-xyz snd-pcm ...
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Run cvscompile script to re-generate the configure script and
+ build the whole stuff again.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ </section>
+
+ </chapter>
+
+<!-- ****************************************************** -->
<!-- Useful Functions -->
<!-- ****************************************************** -->
<chapter id="useful-functions">
diff --git a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c
index 018385275a61..867b31dc3d00 100644
--- a/drivers/pnp/isapnp/core.c
+++ b/drivers/pnp/isapnp/core.c
@@ -106,8 +106,6 @@ static int isapnp_detected;
/* some prototypes */
-extern struct pnp_protocol isapnp_protocol;
-
static inline void write_data(unsigned char x)
{
outb(x, _PNPWRP);
diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
index a530fe61c773..3e4de85188f6 100644
--- a/drivers/pnp/pnpbios/core.c
+++ b/drivers/pnp/pnpbios/core.c
@@ -869,7 +869,7 @@ static int pnpbios_disable_resources(struct pnp_dev *dev)
/* PnP Layer support */
-static struct pnp_protocol pnpbios_protocol = {
+struct pnp_protocol pnpbios_protocol = {
.name = "Plug and Play BIOS",
.get = pnpbios_get_resources,
.set = pnpbios_set_resources,
diff --git a/include/linux/pnp.h b/include/linux/pnp.h
index 73d74d0e52a7..d0249ab40676 100644
--- a/include/linux/pnp.h
+++ b/include/linux/pnp.h
@@ -274,12 +274,31 @@ struct pnp_fixup {
#define pnp_can_configure(dev) ((!(dev)->active) && ((dev)->config_mode & PNP_CONFIG_AUTO) && \
((dev)->capabilities & PNP_CONFIGURABLE))
+#ifdef CONFIG_ISAPNP
+extern struct pnp_protocol isapnp_protocol;
+#define pnp_device_is_isapnp(dev) ((dev)->protocol == (&isapnp_protocol))
+#else
+#define pnp_device_is_isapnp(dev) 0
+#endif
+
+#ifdef CONFIG_PNPBIOS
+extern struct pnp_protocol pnpbios_protocol;
+#define pnp_device_is_pnpbios(dev) ((dev)->protocol == (&pnpbios_protocol))
+#else
+#define pnp_device_is_pnpbios(dev) 0
+#endif
+
+
/* status */
#define PNP_READY 0x0000
#define PNP_ATTACHED 0x0001
#define PNP_BUSY 0x0002
#define PNP_FAULTY 0x0004
+/* isapnp specific macros */
+
+#define isapnp_card_number(dev) ((dev)->card ? (dev)->card->number : -1)
+#define isapnp_csn_number(dev) ((dev)->number)
/*
* Driver Management
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h
index 57415914c610..0e7ffef06cc8 100644
--- a/include/sound/ac97_codec.h
+++ b/include/sound/ac97_codec.h
@@ -223,6 +223,13 @@
#define AC97_YMF753_DIT_CTRL2 0x66 /* DIT Control 2 */
#define AC97_YMF753_3D_MODE_SEL 0x68 /* 3D Mode Select */
+/* specific - C-Media */
+#define AC97_CM9738_VENDOR_CTRL 0x5a
+#define AC97_CM9739_MULTI_CHAN 0x64
+#define AC97_CM9739_SPDIF_IN_STATUS 0x68 /* 32bit */
+#define AC97_CM9739_SPDIF_CTRL 0x6c
+
+
/* ac97->scaps */
#define AC97_SCAP_AUDIO (1<<0) /* audio AC'97 codec */
#define AC97_SCAP_MODEM (1<<1) /* modem AC'97 codec */
@@ -259,6 +266,9 @@ struct _snd_ac97 {
void (*private_free) (ac97_t *ac97);
/* --- */
snd_card_t *card;
+ struct pci_dev *pci; /* assigned PCI device - used for quirks */
+ unsigned short subsystem_vendor;
+ unsigned short subsystem_device;
spinlock_t reg_lock;
unsigned short num; /* number of codec: 0 = primary, 1 = secondary */
unsigned short addr; /* physical address of codec [0-3] */
@@ -280,6 +290,7 @@ struct _snd_ac97 {
unsigned short chained[3]; // 0 = C34, 1 = C79, 2 = C69
unsigned short id[3]; // codec IDs (lower 16-bit word)
unsigned short pcmreg[3]; // PCM registers
+ unsigned short codec_cfg[3]; // CODEC_CFG bits
struct semaphore mutex;
} ad18xx;
} spec;
@@ -327,6 +338,6 @@ struct ac97_quirk {
int type;
};
-int snd_ac97_tune_hardware(ac97_t *ac97, struct pci_dev *pci, struct ac97_quirk *quirk);
+int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk);
#endif /* __SOUND_AC97_CODEC_H */
diff --git a/include/sound/asound.h b/include/sound/asound.h
index 53836234e31b..7fdf1c4ce346 100644
--- a/include/sound/asound.h
+++ b/include/sound/asound.h
@@ -681,7 +681,7 @@ struct sndrv_timer_tread {
* *
****************************************************************************/
-#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 1)
+#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2)
struct sndrv_ctl_card_info {
int card; /* card number */
@@ -726,7 +726,8 @@ enum sndrv_ctl_elem_iface {
#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8) /* control does actually nothing, but may be updated */
#define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9) /* write lock */
#define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10) /* write lock owner */
-#define SNDRV_CTL_ELEM_ACCESS_INDIRECT (1<<31) /* indirect access */
+#define SNDRV_CTL_ELEM_ACCESS_DINDIRECT (1<<30) /* indirect access for matrix dimensions in the info structure */
+#define SNDRV_CTL_ELEM_ACCESS_INDIRECT (1<<31) /* indirect access for element value in the value structure */
/* for further details see the ACPI and PCI power management specification */
#define SNDRV_CTL_POWER_D0 0x0000 /* full On */
@@ -778,7 +779,11 @@ struct sndrv_ctl_elem_info {
} enumerated;
unsigned char reserved[128];
} value;
- unsigned char reserved[64];
+ union {
+ unsigned short d[4]; /* dimensions */
+ unsigned short *d_ptr; /* indirect */
+ } dimen;
+ unsigned char reserved[64-4*sizeof(unsigned short)];
};
struct sndrv_ctl_elem_value {
diff --git a/include/sound/control.h b/include/sound/control.h
index 139028a72a65..9224ffe0aa21 100644
--- a/include/sound/control.h
+++ b/include/sound/control.h
@@ -49,24 +49,30 @@ typedef struct _snd_kcontrol_new {
unsigned char *name; /* ASCII name of item */
unsigned int index; /* index of item */
unsigned int access; /* access rights */
+ unsigned int count; /* count of same elements */
snd_kcontrol_info_t *info;
snd_kcontrol_get_t *get;
snd_kcontrol_put_t *put;
unsigned long private_value;
} snd_kcontrol_new_t;
+typedef struct _snd_kcontrol_volatile {
+ snd_ctl_file_t *owner; /* locked */
+ pid_t owner_pid;
+ unsigned int access; /* access rights */
+} snd_kcontrol_volatile_t;
+
struct _snd_kcontrol {
struct list_head list; /* list of controls */
snd_ctl_elem_id_t id;
- snd_ctl_file_t *owner; /* locked */
- pid_t owner_pid;
- unsigned int access; /* access rights */
+ unsigned int count; /* count of same elements */
snd_kcontrol_info_t *info;
snd_kcontrol_get_t *get;
snd_kcontrol_put_t *put;
unsigned long private_value;
void *private_data;
void (*private_free)(snd_kcontrol_t *kcontrol);
+ snd_kcontrol_volatile_t vd[0]; /* volatile data */
};
#define snd_kcontrol(n) list_entry(n, snd_kcontrol_t, list)
@@ -100,7 +106,7 @@ typedef int (*snd_kctl_ioctl_func_t) (snd_card_t * card,
void snd_ctl_notify(snd_card_t * card, unsigned int mask, snd_ctl_elem_id_t * id);
-snd_kcontrol_t *snd_ctl_new(snd_kcontrol_t * kcontrol);
+snd_kcontrol_t *snd_ctl_new(snd_kcontrol_t * kcontrol, unsigned int access);
snd_kcontrol_t *snd_ctl_new1(snd_kcontrol_new_t * kcontrolnew, void * private_data);
void snd_ctl_free_one(snd_kcontrol_t * kcontrol);
int snd_ctl_add(snd_card_t * card, snd_kcontrol_t * kcontrol);
@@ -117,4 +123,33 @@ int snd_ctl_unregister(snd_card_t *card);
int snd_ctl_register_ioctl(snd_kctl_ioctl_func_t fcn);
int snd_ctl_unregister_ioctl(snd_kctl_ioctl_func_t fcn);
+static inline unsigned int snd_ctl_get_ioffnum(snd_kcontrol_t *kctl, snd_ctl_elem_id_t *id)
+{
+ return id->numid - kctl->id.numid;
+}
+
+static inline unsigned int snd_ctl_get_ioffidx(snd_kcontrol_t *kctl, snd_ctl_elem_id_t *id)
+{
+ return id->index - kctl->id.index;
+}
+
+static inline unsigned int snd_ctl_get_ioff(snd_kcontrol_t *kctl, snd_ctl_elem_id_t *id)
+{
+ if (id->numid) {
+ return snd_ctl_get_ioffnum(kctl, id);
+ } else {
+ return snd_ctl_get_ioffidx(kctl, id);
+ }
+}
+
+static inline snd_ctl_elem_id_t *snd_ctl_build_ioff(snd_ctl_elem_id_t *dst_id,
+ snd_kcontrol_t *src_kctl,
+ unsigned int offset)
+{
+ *dst_id = src_kctl->id;
+ dst_id->index += offset;
+ dst_id->numid += offset;
+ return dst_id;
+}
+
#endif /* __SOUND_CONTROL_H */
diff --git a/include/sound/cs46xx.h b/include/sound/cs46xx.h
index f60ea070bacd..3404438145d5 100644
--- a/include/sound/cs46xx.h
+++ b/include/sound/cs46xx.h
@@ -1730,6 +1730,7 @@ struct _snd_cs46xx {
void (*amplifier_ctrl)(cs46xx_t *, int);
void (*active_ctrl)(cs46xx_t *, int);
void (*mixer_init)(cs46xx_t *);
+
struct pci_dev *acpi_dev;
int acpi_port;
snd_kcontrol_t *eapd_switch; /* for amplifier hack */
@@ -1749,6 +1750,7 @@ struct _snd_cs46xx {
dsp_spos_instance_t * dsp_spos_instance;
snd_pcm_t *pcm_rear;
+ snd_pcm_t *pcm_center_lfe;
snd_pcm_t *pcm_iec958;
#else /* for compatibility */
cs46xx_pcm_t *playback_pcm;
@@ -1764,6 +1766,7 @@ int snd_cs46xx_create(snd_card_t *card,
int snd_cs46xx_pcm(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
int snd_cs46xx_pcm_rear(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
int snd_cs46xx_pcm_iec958(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
+int snd_cs46xx_pcm_center_lfe(cs46xx_t *chip, int device, snd_pcm_t **rpcm);
int snd_cs46xx_mixer(cs46xx_t *chip);
int snd_cs46xx_midi(cs46xx_t *chip, int device, snd_rawmidi_t **rmidi);
int snd_cs46xx_start_dsp(cs46xx_t *chip);
diff --git a/include/sound/cs46xx_dsp_scb_types.h b/include/sound/cs46xx_dsp_scb_types.h
index f5543e774bd1..3f990a3a6903 100644
--- a/include/sound/cs46xx_dsp_scb_types.h
+++ b/include/sound/cs46xx_dsp_scb_types.h
@@ -27,6 +27,18 @@
#ifndef __CS46XX_DSP_SCB_TYPES_H__
#define __CS46XX_DSP_SCB_TYPES_H__
+#include <asm/byteorder.h>
+
+#ifndef ___DSP_DUAL_16BIT_ALLOC
+#if defined(__LITTLE_ENDIAN)
+#define ___DSP_DUAL_16BIT_ALLOC(a,b) u16 a; u16 b;
+#elif defined(__BIG_ENDIAN)
+#define ___DSP_DUAL_16BIT_ALLOC(a,b) u16 b; u16 a;
+#else
+#error Not __LITTLE_ENDIAN and not __BIG_ENDIAN, then what ???
+#endif
+#endif
+
/* This structs are used internally by the SP */
typedef struct _basic_dma_req_t {
@@ -60,11 +72,14 @@ typedef struct _scatter_gather_ext_t {
} scatter_gather_ext_t;
typedef struct _volume_control_t {
- u16 rightTarg; /* Target volume for left & right channels */
- u16 leftTarg;
-
- u16 rightVol; /* Current left & right channel volumes */
- u16 leftVol;
+ ___DSP_DUAL_16BIT_ALLOC(
+ rightTarg, /* Target volume for left & right channels */
+ leftTarg
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ rightVol, /* Current left & right channel volumes */
+ leftVol
+ )
} volume_control_t;
/* Generic stream control block (SCB) structure definition */
@@ -95,15 +110,17 @@ typedef struct _generic_scb_t {
/* Sublist pointer & next stream control block (SCB) link.
Initialized & modified by the host R/O for the DSP task
*/
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
/* Pointer to this tasks parameter block & stream function pointer
Initialized by the host R/O for the DSP task */
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
/* rsConfig register for stream buffer (rsDMA reg.
is loaded from basicReq.daw for incoming streams, or
@@ -176,59 +193,78 @@ typedef struct _spos_control_block_t {
This rule does not apply to one off boot time initialisation prior to starting the SP
*/
-
+
+ ___DSP_DUAL_16BIT_ALLOC(
/* First element on the Hyper forground task tree */
- u16 hfg_tree_root_ptr; /* HOST */
+ hfg_tree_root_ptr, /* HOST */
/* First 3 dwords are written by the host and read-only on the DSP */
- u16 hfg_stack_base; /* HOST */
+ hfg_stack_base /* HOST */
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
/* Point to this data structure to enable easy access */
- u16 spos_cb_ptr; /* SP */
- u16 prev_task_tree_ptr; /* SP && HOST */
-
+ spos_cb_ptr, /* SP */
+ prev_task_tree_ptr /* SP && HOST */
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
/* Currently Unused */
- u16 xxinterval_timer_period;
+ xxinterval_timer_period,
/* Enable extension of SPOS data structure */
- u16 HFGSPB_ptr;
+ HFGSPB_ptr
+ )
- u16 xxnum_HFG_ticks_thisInterval;
+ ___DSP_DUAL_16BIT_ALLOC(
+ xxnum_HFG_ticks_thisInterval,
/* Modified by the DSP */
- u16 xxnum_tntervals;
+ xxnum_tntervals
+ )
/* Set by DSP upon encountering a trap (breakpoint) or a spurious
interrupt. The host must clear this dword after reading it
upon receiving spInt1. */
- u16 spurious_int_flag; /* (Host & SP) Nature of the spurious interrupt */
- u16 trap_flag; /* (Host & SP) Nature of detected Trap */
-
-
- u16 unused2;
- u16 invalid_IP_flag; /* (Host & SP ) Indicate detection of invalid instruction pointer */
+ ___DSP_DUAL_16BIT_ALLOC(
+ spurious_int_flag, /* (Host & SP) Nature of the spurious interrupt */
+ trap_flag /* (Host & SP) Nature of detected Trap */
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused2,
+ invalid_IP_flag /* (Host & SP ) Indicate detection of invalid instruction pointer */
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
/* pointer to forground task tree header for use in next task search */
- u16 fg_task_tree_hdr_ptr; /* HOST */
+ fg_task_tree_hdr_ptr, /* HOST */
/* Data structure for controlling synchronous link update */
- u16 hfg_sync_update_ptr; /* HOST */
+ hfg_sync_update_ptr /* HOST */
+ )
- u16 begin_foreground_FCNT; /* SP */
+ ___DSP_DUAL_16BIT_ALLOC(
+ begin_foreground_FCNT, /* SP */
/* Place holder for holding sleep timing */
- u16 last_FCNT_before_sleep; /* SP */
+ last_FCNT_before_sleep /* SP */
+ )
- u16 unused7; /* SP */
- u16 next_task_treePtr; /* SP */
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused7, /* SP */
+ next_task_treePtr /* SP */
+ )
- u32 nused5;
+ u32 unused5;
- u16 active_flags; /* SP */
+ ___DSP_DUAL_16BIT_ALLOC(
+ active_flags, /* SP */
/* State flags, used to assist control of execution of Hyper Forground */
- u16 HFG_flags; /* SP */
+ HFG_flags /* SP */
+ )
- u16 unused9;
- u16 unused8;
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused9,
+ unused8
+ )
/* Space for saving enough context so that we can set up enough
to save some more context.
@@ -261,16 +297,21 @@ typedef struct _timing_master_scb_t {
/* First 12 dwords from generic_scb_t */
basic_dma_req_t basic_req; /* Optional */
scatter_gather_ext_t sg_ext; /* Optional */
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
-
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
/* Initial values are 0000:xxxx */
- u16 reserved;
- u16 extra_sample_accum;
+ reserved,
+ extra_sample_accum
+ )
/* Initial values are xxxx:0000
@@ -281,9 +322,10 @@ typedef struct _timing_master_scb_t {
resynchronize the FIFO pointer
upon start/restart)
*/
- u16 codec_FIFO_syncd;
- u16 codec_FIFO_ptr;
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ codec_FIFO_syncd,
+ codec_FIFO_ptr
+ )
/* Init. 8000:0005 for 44.1k
8000:0001 for 48k
@@ -292,8 +334,10 @@ typedef struct _timing_master_scb_t {
processed in the current group of
frames
*/
- u16 frac_samp_accum_qm1;
- u16 TM_frms_left_in_group;
+ ___DSP_DUAL_16BIT_ALLOC(
+ frac_samp_accum_qm1,
+ TM_frms_left_in_group
+ )
/* Init. 0001:0005 for 44.1k
0000:0001 for 48k
@@ -303,8 +347,10 @@ typedef struct _timing_master_scb_t {
nsamp_per_frm_q15
lo: Number of frames in the group
*/
- u16 frac_samp_correction_qm1;
- u16 TM_frm_group_length;
+ ___DSP_DUAL_16BIT_ALLOC(
+ frac_samp_correction_qm1,
+ TM_frm_group_length
+ )
/* Init. 44.1k*65536/8k = 0x00058333 for 44.1k
48k*65536/8k = 0x00060000 for 48k
@@ -319,13 +365,18 @@ typedef struct _codec_output_scb_t {
/* First 13 dwords from generic_scb_t */
basic_dma_req_t basic_req; /* Optional */
scatter_gather_ext_t sg_ext; /* Optional */
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
u32 strm_rs_config; /* REQUIRED */
+
u32 strm_buf_ptr; /* REQUIRED */
/* NOTE: The CODEC output task reads samples from the first task on its
@@ -347,8 +398,10 @@ typedef struct _codec_output_scb_t {
to which the right-channel samples
are to be written.
*/
- u16 left_chan_base_IO_addr;
- u16 right_chan_IO_disp;
+ ___DSP_DUAL_16BIT_ALLOC(
+ left_chan_base_IO_addr,
+ right_chan_IO_disp
+ )
/* Init: 0x0080:0004 for non-AC-97
@@ -359,12 +412,16 @@ typedef struct _codec_output_scb_t {
16-bit input sample to obtain the
32-bit output word
*/
- u16 CO_scale_shift_count;
- u16 CO_exp_vol_change_rate;
+ ___DSP_DUAL_16BIT_ALLOC(
+ CO_scale_shift_count,
+ CO_exp_vol_change_rate
+ )
/* Pointer to SCB at end of input chain */
- u16 reserved;
- u16 last_sub_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ reserved,
+ last_sub_ptr
+ )
} codec_output_scb_t;
/* SCB for CODEC input algorithm */
@@ -372,11 +429,15 @@ typedef struct _codec_input_scb_t {
/* First 13 dwords from generic_scb_t */
basic_dma_req_t basic_req; /* Optional */
scatter_gather_ext_t sg_ext; /* Optional */
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
u32 strm_rs_config; /* REQUIRED */
u32 strm_buf_ptr; /* REQUIRED */
@@ -402,17 +463,20 @@ typedef struct _codec_input_scb_t {
to which the right-channel samples
are to be written.
*/
- u16 rightChanINdisp;
- u16 left_chan_base_IN_addr;
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ rightChanINdisp,
+ left_chan_base_IN_addr
+ )
/* Init. ?:fffc
lo: Negative shift count to shift the
32-bit input dword to obtain the
16-bit sample msb-aligned (count
is negative to shift left)
*/
- u16 scaleShiftCount;
- u16 reserver1;
+ ___DSP_DUAL_16BIT_ALLOC(
+ scaleShiftCount,
+ reserver1
+ )
u32 reserved2;
} codec_input_scb_t;
@@ -422,11 +486,15 @@ typedef struct _pcm_serial_input_scb_t {
/* First 13 dwords from generic_scb_t */
basic_dma_req_t basic_req; /* Optional */
scatter_gather_ext_t sg_ext; /* Optional */
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
u32 strm_buf_ptr; /* REQUIRED */
u32 strm_rs_config; /* REQUIRED */
@@ -438,8 +506,10 @@ typedef struct _pcm_serial_input_scb_t {
lo: Flag indicating the link to the CODEC
input task is to be initialized
*/
- u16 init_codec_input_link;
- u16 codec_input_buf_scb;
+ ___DSP_DUAL_16BIT_ALLOC(
+ init_codec_input_link,
+ codec_input_buf_scb
+ )
/* Initialized by the host (host updates target volumes) */
volume_control_t psi_vol_ctrl;
@@ -447,36 +517,54 @@ typedef struct _pcm_serial_input_scb_t {
} pcm_serial_input_scb_t;
typedef struct _src_task_scb_t {
- u16 frames_left_in_gof;
- u16 gofs_left_in_sec;
+ ___DSP_DUAL_16BIT_ALLOC(
+ frames_left_in_gof,
+ gofs_left_in_sec
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ const2_thirds,
+ num_extra_tnput_samples
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ cor_per_gof,
+ correction_per_sec
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ output_buf_producer_ptr,
+ junk_DMA_MID
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ gof_length,
+ gofs_per_sec
+ )
- u16 const2_thirds;
- u16 num_extra_tnput_samples;
-
- u16 cor_per_gof;
- u16 correction_per_sec;
-
- u16 output_buf_producer_ptr;
- u16 junk_DMA_MID;
-
- u16 gof_length;
- u16 gofs_per_sec;
-
u32 input_buf_strm_config;
- u16 reserved_for_SRC_use;
- u16 input_buf_consumer_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ reserved_for_SRC_use,
+ input_buf_consumer_ptr
+ )
u32 accum_phi;
- u16 exp_src_vol_change_rate;
- u16 input_buf_producer_ptr;
-
- u16 src_next_scb;
- u16 src_sub_list_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ exp_src_vol_change_rate,
+ input_buf_producer_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ src_next_scb,
+ src_sub_list_ptr
+ )
- u16 src_entry_point;
- u16 src_this_sbp;
+ ___DSP_DUAL_16BIT_ALLOC(
+ src_entry_point,
+ src_this_sbp
+ )
u32 src_strm_rs_config;
u32 src_strm_buf_ptr;
@@ -490,26 +578,34 @@ typedef struct _decimate_by_pow2_scb_t {
/* decimationFactor = 2, 4, or 8 (larger factors waste too much memory
when compared to cascading decimators)
*/
- u16 dec2_coef_base_ptr;
- u16 dec2_coef_increment;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_coef_base_ptr,
+ dec2_coef_increment
+ )
+
/* coefIncrement = 128 / decimationFactor (for our ROM filter)
coefBasePtr = 0x8000 (for our ROM filter)
*/
-
- u16 dec2_in_samples_per_out_triplet;
- u16 dec2_extra_in_samples;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_in_samples_per_out_triplet,
+ dec2_extra_in_samples
+ )
/* extraInSamples: # of accumulated, unused input samples (init. to 0)
inSamplesPerOutTriplet = 3 * decimationFactor
*/
- u16 dec2_const2_thirds;
- u16 dec2_half_num_taps_mp5;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_const2_thirds,
+ dec2_half_num_taps_mp5
+ )
/* halfNumTapsM5: (1/2 number of taps in decimation filter) minus 5
const2thirds: constant 2/3 in 16Q0 format (sign.15)
*/
- u16 dec2_output_buf_producer_ptr;
- u16 dec2_junkdma_mid;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_output_buf_producer_ptr,
+ dec2_junkdma_mid
+ )
u32 dec2_reserved2;
@@ -518,26 +614,34 @@ typedef struct _decimate_by_pow2_scb_t {
(buffer size = decimationFactor * 32 dwords)
*/
- u16 dec2_phi_incr;
- u16 dec2_input_buf_consumer_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_phi_incr,
+ dec2_input_buf_consumer_ptr
+ )
/* inputBufConsumerPtr: Input buffer read pointer (into SRC filter)
phiIncr = decimationFactor * 4
*/
u32 dec2_reserved3;
- u16 dec2_exp_vol_change_rate;
- u16 dec2_input_buf_producer_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_exp_vol_change_rate,
+ dec2_input_buf_producer_ptr
+ )
/* inputBufProducerPtr: Input buffer write pointer
expVolChangeRate: Exponential volume change rate for possible
future mixer on input streams
*/
- u16 dec2_next_scb;
- u16 dec2_sub_list_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_next_scb,
+ dec2_sub_list_ptr
+ )
- u16 dec2_entry_point;
- u16 dec2_this_spb;
+ ___DSP_DUAL_16BIT_ALLOC(
+ dec2_entry_point,
+ dec2_this_spb
+ )
u32 dec2_strm_rs_config;
u32 dec2_strm_buf_ptr;
@@ -548,23 +652,32 @@ typedef struct _decimate_by_pow2_scb_t {
} decimate_by_pow2_scb_t;
typedef struct _vari_decimate_scb_t {
- u16 vdec_frames_left_in_gof;
- u16 vdec_gofs_left_in_sec;
-
- u16 vdec_const2_thirds;
- u16 vdec_extra_in_samples;
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_frames_left_in_gof,
+ vdec_gofs_left_in_sec
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_const2_thirds,
+ vdec_extra_in_samples
+ )
/* extraInSamples: # of accumulated, unused input samples (init. to 0)
const2thirds: constant 2/3 in 16Q0 format (sign.15) */
- u16 vdec_cor_per_gof;
- u16 vdec_correction_per_sec;
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_cor_per_gof,
+ vdec_correction_per_sec
+ )
- u16 vdec_output_buf_producer_ptr;
- u16 vdec_input_buf_consumer_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_output_buf_producer_ptr,
+ vdec_input_buf_consumer_ptr
+ )
/* inputBufConsumerPtr: Input buffer read pointer (into SRC filter) */
-
- u16 vdec_gof_length;
- u16 vdec_gofs_per_sec;
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_gof_length,
+ vdec_gofs_per_sec
+ )
u32 vdec_input_buf_strm_config;
/* inputBufStrmConfig: rsConfig for the input buffer to the decimator
@@ -575,17 +688,23 @@ typedef struct _vari_decimate_scb_t {
u32 vdec_accumphi;
/* accumPhi: accumulated fractional phase increment (6.26) */
- u16 vdec_exp_vol_change_rate;
- u16 vdec_input_buf_producer_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_exp_vol_change_rate,
+ vdec_input_buf_producer_ptr
+ )
/* inputBufProducerPtr: Input buffer write pointer
expVolChangeRate: Exponential volume change rate for possible
future mixer on input streams */
- u16 vdec_next_scb;
- u16 vdec_sub_list_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_next_scb,
+ vdec_sub_list_ptr
+ )
- u16 vdec_entry_point;
- u16 vdec_this_spb;
+ ___DSP_DUAL_16BIT_ALLOC(
+ vdec_entry_point,
+ vdec_this_spb
+ )
u32 vdec_strm_rs_config;
u32 vdec_strm_buf_ptr;
@@ -601,11 +720,15 @@ typedef struct _mix2_ostream_scb_t {
/* First 13 dwords from generic_scb_t */
basic_dma_req_t basic_req; /* Optional */
scatter_gather_ext_t sg_ext; /* Optional */
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
u32 strm_rs_config; /* REQUIRED */
u32 strm_buf_ptr; /* REQUIRED */
@@ -617,18 +740,24 @@ typedef struct _mix2_ostream_scb_t {
processed in the current group of
frames
*/
- u16 frames_left_in_group;
- u16 accum_input_triplets;
+ ___DSP_DUAL_16BIT_ALLOC(
+ frames_left_in_group,
+ accum_input_triplets
+ )
/* hi: Exponential volume change rate
for mixer on input streams
lo: Number of frames in the group
*/
- u16 frame_group_length;
- u16 exp_vol_change_rate;
+ ___DSP_DUAL_16BIT_ALLOC(
+ frame_group_length,
+ exp_vol_change_rate
+ )
- u16 const_FFFF;
- u16 const_zero;
+ ___DSP_DUAL_16BIT_ALLOC(
+ const_FFFF,
+ const_zero
+ )
} mix2_ostream_scb_t;
@@ -637,11 +766,15 @@ typedef struct _mix_only_scb_t {
/* First 13 dwords from generic_scb_t */
basic_dma_req_t basic_req; /* Optional */
scatter_gather_ext_t sg_ext; /* Optional */
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
u32 strm_rs_config; /* REQUIRED */
u32 strm_buf_ptr; /* REQUIRED */
@@ -668,30 +801,40 @@ typedef struct _async_codec_input_scb_t {
u32 ostrm_rs_config;
u32 ostrm_buf_ptr;
- u16 io_sclks_per_lr_clk;
- u16 io_io_enable;
+ ___DSP_DUAL_16BIT_ALLOC(
+ io_sclks_per_lr_clk,
+ io_io_enable
+ )
u32 io_free4;
-
- u16 io_next_scb;
- u16 io_sub_list_ptr;
- u16 io_entry_point;
- u16 io_this_spb;
+ ___DSP_DUAL_16BIT_ALLOC(
+ io_next_scb,
+ io_sub_list_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ io_entry_point,
+ io_this_spb
+ )
u32 istrm_rs_config;
u32 istrm_buf_ptr;
/* Init. 0000:8042: for ASER1
0000:8044: for ASER2 */
- u16 io_stat_reg_addr;
- u16 iofifo_pointer;
+ ___DSP_DUAL_16BIT_ALLOC(
+ io_stat_reg_addr,
+ iofifo_pointer
+ )
/* Init 1 stero:100 ASER1
Init 0 mono:110 ASER2
*/
- u16 ififo_base_addr;
- u16 ist_mo_format;
+ ___DSP_DUAL_16BIT_ALLOC(
+ ififo_base_addr,
+ ist_mo_format
+ )
u32 i_free;
} async_codec_input_scb_t;
@@ -699,43 +842,59 @@ typedef struct _async_codec_input_scb_t {
/* SCB for the SP/DIF CODEC input and output */
typedef struct _spdifiscb_t {
- u16 status_ptr;
- u16 status_start_ptr;
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ status_ptr,
+ status_start_ptr
+ )
+
u32 current_total;
u32 previous_total;
- u16 count;
- u16 count_limit;
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ count,
+ count_limit
+ )
+
u32 status_data;
-
- u16 status;
- u16 free4;
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ status,
+ free4
+ )
u32 free3;
-
- u16 free2;
- u16 bit_count;
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ free2,
+ bit_count
+ )
u32 temp_status;
- u16 next_SCB;
- u16 sub_list_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_SCB,
+ sub_list_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point,
+ this_spb
+ )
- u16 entry_point;
- u16 this_spb;
-
u32 strm_rs_config;
u32 strm_buf_ptr;
- u16 stat_reg_addr;
- u16 fifo_pointer;
-
- u16 fifo_base_addr;
- u16 st_mo_format;
-
- u32 Free1;
+ ___DSP_DUAL_16BIT_ALLOC(
+ stat_reg_addr,
+ fifo_pointer
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ fifo_base_addr,
+ st_mo_format
+ )
+
+ u32 free1;
} spdifiscb_t;
@@ -751,93 +910,132 @@ typedef struct _spdifoscb_t {
u32 strm_rs_config;
u32 strm_buf_ptr;
-
- u16 status;
- u16 free5;
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ status,
+ free5
+ )
u32 free4;
-
- u16 next_scb;
- u16 sub_list_ptr;
- u16 entry_point;
- u16 this_spb;
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb,
+ sub_list_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point,
+ this_spb
+ )
+
u32 free6[2];
- u16 stat_reg_addr;
- u16 fifo_pointer;
-
- u16 fifo_base_addr;
- u16 st_mo_format;
-
+ ___DSP_DUAL_16BIT_ALLOC(
+ stat_reg_addr,
+ fifo_pointer
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ fifo_base_addr,
+ st_mo_format
+ )
+
u32 free1;
} spdifoscb_t;
typedef struct _asynch_fg_rx_scb_t {
+ ___DSP_DUAL_16BIT_ALLOC(
+ bot_buf_mask,
+ buf_Mask
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ max,
+ min
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ old_producer_pointer,
+ hfg_scb_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ delta,
+ adjust_count
+ )
- u16 bot_buf_mask;
- u16 buf_Mask;
-
- u16 max;
- u16 min;
-
- u16 old_producer_pointer;
- u16 hfg_scb_ptr;
-
- u16 delta;
- u16 adjust_count;
-
u32 unused2[5];
-
- u16 sibling_ptr;
- u16 child_ptr;
-
- u16 code_ptr;
- u16 this_ptr;
-
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ sibling_ptr,
+ child_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ code_ptr,
+ this_ptr
+ )
+
u32 strm_rs_config;
u32 strm_buf_ptr;
u32 unused_phi_incr;
- u16 righttarg;
- u16 left_targ;
-
- u16 rightVol;
- u16 leftVol;
+ ___DSP_DUAL_16BIT_ALLOC(
+ right_targ,
+ left_targ
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ right_vol,
+ left_vol
+ )
} asynch_fg_rx_scb_t;
typedef struct _asynch_fg_tx_scb_t {
- u16 not_buf_mask;
- u16 buf_mask;
-
- u16 Max;
- u16 min;
-
- u16 unused1;
- u16 hfg_scb_ptr;
-
- u16 delta;
- u16 adjust_count;
+ ___DSP_DUAL_16BIT_ALLOC(
+ not_buf_mask,
+ buf_mask
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ max,
+ min
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused1,
+ hfg_scb_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ delta,
+ adjust_count
+ )
u32 accum_phi;
- u16 unused2;
- u16 const_one_third;
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused2,
+ const_one_third
+ )
u32 unused3[3];
- u16 sibling_ptr;
- u16 child_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ sibling_ptr,
+ child_ptr
+ )
- u16 codePtr;
- u16 this_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ codePtr,
+ this_ptr
+ )
u32 strm_rs_config;
@@ -845,11 +1043,15 @@ typedef struct _asynch_fg_tx_scb_t {
u32 phi_incr;
- u16 unused_right_targ;
- u16 unused_left_targ;
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused_right_targ,
+ unused_left_targ
+ )
- u16 unused_right_vol;
- u16 unused_left_vol;
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused_right_vol,
+ unused_left_vol
+ )
} asynch_fg_tx_scb_t;
@@ -857,49 +1059,67 @@ typedef struct _output_snoop_scb_t {
/* First 13 dwords from generic_scb_t */
basic_dma_req_t basic_req; /* Optional */
scatter_gather_ext_t sg_ext; /* Optional */
- u16 next_scb; /* REQUIRED */
- u16 sub_list_ptr; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb, /* REQUIRED */
+ sub_list_ptr /* REQUIRED */
+ )
- u16 entry_point; /* REQUIRED */
- u16 this_spb; /* REQUIRED */
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* REQUIRED */
+ this_spb /* REQUIRED */
+ )
u32 strm_rs_config; /* REQUIRED */
u32 strm_buf_ptr; /* REQUIRED */
- u16 init_snoop_input_link;
- u16 snoop_child_input_scb;
+ ___DSP_DUAL_16BIT_ALLOC(
+ init_snoop_input_link,
+ snoop_child_input_scb
+ )
u32 snoop_input_buf_ptr;
- u16 reserved;
- u16 input_scb;
+ ___DSP_DUAL_16BIT_ALLOC(
+ reserved,
+ input_scb
+ )
} output_snoop_scb_t;
typedef struct _spio_write_scb_t {
- u16 address1;
- u16 address2;
+ ___DSP_DUAL_16BIT_ALLOC(
+ address1,
+ address2
+ )
u32 data1;
u32 data2;
- u16 address3;
- u16 address4;
+ ___DSP_DUAL_16BIT_ALLOC(
+ address3,
+ address4
+ )
u32 data3;
u32 data4;
- u16 unused1;
- u16 data_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ unused1,
+ data_ptr
+ )
u32 unused2[2];
- u16 sibling_ptr;
- u16 child_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ sibling_ptr,
+ child_ptr
+ )
- u16 entry_point;
- u16 this_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point,
+ this_ptr
+ )
u32 unused3[5];
} spio_write_scb_t;
@@ -920,11 +1140,15 @@ typedef struct _magic_snoop_task_t {
u32 i7;
- u16 next_scb;
- u16 sub_list_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb,
+ sub_list_ptr
+ )
- u16 entry_point;
- u16 this_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point,
+ this_ptr
+ )
u32 strm_buf_config;
u32 strm_buf_ptr2;
@@ -933,4 +1157,60 @@ typedef struct _magic_snoop_task_t {
volume_control_t vdec_vol_ctrl;
} magic_snoop_task_t;
+
+
+typedef struct _filter_scb_t {
+ ___DSP_DUAL_16BIT_ALLOC(
+ a0_right, /* 0x00 */
+ a0_left
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ a1_right, /* 0x01 */
+ a1_left
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ a2_right, /* 0x02 */
+ a2_left
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ output_buf_ptr, /* 0x03 */
+ init
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ filter_unused3, /* 0x04 */
+ filter_unused2
+ )
+
+ u32 prev_sample_output1; /* 0x05 */
+ u32 prev_sample_output2; /* 0x06 */
+ u32 prev_sample_input1; /* 0x07 */
+ u32 prev_sample_input2; /* 0x08 */
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ next_scb_ptr, /* 0x09 */
+ sub_list_ptr
+ )
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ entry_point, /* 0x0A */
+ spb_ptr
+ )
+
+ u32 strm_rs_config; /* 0x0B */
+ u32 strm_buf_ptr; /* 0x0C */
+
+ ___DSP_DUAL_16BIT_ALLOC(
+ b0_right, /* 0x0D */
+ b0_left
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ b1_right, /* 0x0E */
+ b1_left
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ b2_right, /* 0x0F */
+ b2_left
+ )
+} filter_scb_t;
#endif /* __DSP_SCB_TYPES_H__ */
diff --git a/include/sound/cs46xx_dsp_spos.h b/include/sound/cs46xx_dsp_spos.h
index a6006b75c0e2..10014cb62423 100644
--- a/include/sound/cs46xx_dsp_spos.h
+++ b/include/sound/cs46xx_dsp_spos.h
@@ -52,17 +52,18 @@
#define DSP_MAX_TASK_DESC 50
#define DSP_MAX_PCM_CHANNELS 32
-#define DSP_MAX_SRC_NR 6
+#define DSP_MAX_SRC_NR 14
-#define DSP_PCM_MAIN_CHANNEL 1
-#define DSP_PCM_REAR_CHANNEL 2
-#define DSP_PCM_CENTER_CHANNEL 3
-#define DSP_PCM_LFE_CHANNEL 4
-#define DSP_IEC958_CHANNEL 5
+#define DSP_PCM_MAIN_CHANNEL 1
+#define DSP_PCM_REAR_CHANNEL 2
+#define DSP_PCM_CENTER_LFE_CHANNEL 3
+#define DSP_PCM_S71_CHANNEL 4 /* surround 7.1 */
+#define DSP_IEC958_CHANNEL 5
-#define DSP_SPDIF_STATUS_OUTPUT_ENABLED 1
-#define DSP_SPDIF_STATUS_PLAYBACK_OPEN 2
-#define DSP_SPDIF_STATUS_HW_ENABLED 4
+#define DSP_SPDIF_STATUS_OUTPUT_ENABLED 1
+#define DSP_SPDIF_STATUS_PLAYBACK_OPEN 2
+#define DSP_SPDIF_STATUS_HW_ENABLED 4
+#define DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED 8
struct _dsp_module_desc_t;
@@ -157,9 +158,12 @@ typedef struct _dsp_spos_instance_t {
u16 dac_volume_right;
u16 dac_volume_left;
- /* Rear PCM playback mixer */
+ /* Rear/surround PCM playback mixer */
dsp_scb_descriptor_t * rear_mix_scb;
+ /* Center/LFE mixer */
+ dsp_scb_descriptor_t * center_lfe_mix_scb;
+
int npcm_channels;
int nsrc_scb;
pcm_channel_descriptor_t pcm_channels[DSP_MAX_PCM_CHANNELS];
diff --git a/include/sound/cs46xx_dsp_task_types.h b/include/sound/cs46xx_dsp_task_types.h
index b97a65ac01e6..5dd3bf69cb03 100644
--- a/include/sound/cs46xx_dsp_task_types.h
+++ b/include/sound/cs46xx_dsp_task_types.h
@@ -27,6 +27,8 @@
#ifndef __CS46XX_DSP_TASK_TYPES_H__
#define __CS46XX_DSP_TASK_TYPES_H__
+#include "cs46xx_dsp_scb_types.h"
+
/*********************************************************************************************
Example hierarchy of stream control blocks in the SP
@@ -54,7 +56,7 @@ Ptr____Call (c)
#define HFG_CONTEXT_SWITCH_MODE 0x0002
#define HFG_CONTEXT_SWITCH_MODE_BIT 1
-#define MAX_FG_STACK_SIZE 32 // THESE NEED TO BE COMPUTED PROPERLY
+#define MAX_FG_STACK_SIZE 32 /* THESE NEED TO BE COMPUTED PROPERLY */
#define MAX_MG_STACK_SIZE 16
#define MAX_BG_STACK_SIZE 9
#define MAX_HFG_STACK_SIZE 4
@@ -74,64 +76,84 @@ typedef struct _hf_save_area_t {
u32 r54_save;
u32 r98_save;
- u16 status_save;
- u16 ind_save;
+ ___DSP_DUAL_16BIT_ALLOC(
+ status_save,
+ ind_save
+ )
- u16 rci1_save;
- u16 rci0_save;
+ ___DSP_DUAL_16BIT_ALLOC(
+ rci1_save,
+ rci0_save
+ )
u32 r32_save;
u32 r76_save;
u32 rsd2_save;
- u16 rsi2_save; /* See TaskTreeParameterBlock for
+ ___DSP_DUAL_16BIT_ALLOC(
+ rsi2_save, /* See TaskTreeParameterBlock for
remainder of registers */
- u16 rsa2Save;
+ rsa2Save
+ )
/* saved as part of HFG context */
} hf_save_area_t;
/* Task link data structure */
typedef struct _tree_link_t {
+ ___DSP_DUAL_16BIT_ALLOC(
/* Pointer to sibling task control block */
- u16 next_scb;
+ next_scb,
/* Pointer to child task control block */
- u16 sub_ptr;
+ sub_ptr
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
/* Pointer to code entry point */
- u16 entry_point;
+ entry_point,
/* Pointer to local data */
- u16 this_spb;
+ this_spb
+ )
} tree_link_t;
typedef struct _task_tree_data_t {
+ ___DSP_DUAL_16BIT_ALLOC(
/* Initial tock count; controls task tree execution rate */
- u16 tock_count_limit;
+ tock_count_limit,
/* Tock down counter */
- u16 tock_count;
-
+ tock_count
+ )
+
/* Add to ActiveCount when TockCountLimit reached:
Subtract on task tree termination */
- u16 active_tncrement;
+ ___DSP_DUAL_16BIT_ALLOC(
+ active_tncrement,
/* Number of pending activations for task tree */
- u16 active_count;
+ active_count
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
/* BitNumber to enable modification of correct bit in ActiveTaskFlags */
- u16 active_bit;
+ active_bit,
/* Pointer to OS location for indicating current activity on task level */
- u16 active_task_flags_ptr;
+ active_task_flags_ptr
+ )
/* Data structure for controlling movement of memory blocks:-
currently unused */
- u16 mem_upd_ptr;
+ ___DSP_DUAL_16BIT_ALLOC(
+ mem_upd_ptr,
/* Data structure for controlling synchronous link update */
- u16 link_upd_ptr;
+ link_upd_ptr
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
/* Save area for remainder of full context. */
- u16 save_area;
+ save_area,
/* Address of start of local stack for data storage */
- u16 data_stack_base_ptr;
+ data_stack_base_ptr
+ )
} task_tree_data_t;
@@ -140,12 +162,16 @@ typedef struct _task_tree_data_t {
typedef struct _interval_timer_data_t
{
/* These data items have the same relative locations to those */
- u16 interval_timer_period;
- u16 itd_unused;
+ ___DSP_DUAL_16BIT_ALLOC(
+ interval_timer_period,
+ itd_unused
+ )
/* used for this data in the SPOS control block for SPOS 1.0 */
- u16 num_FG_ticks_this_interval;
- u16 num_intervals;
+ ___DSP_DUAL_16BIT_ALLOC(
+ num_FG_ticks_this_interval,
+ num_intervals
+ )
} interval_timer_data_t;
@@ -155,24 +181,36 @@ typedef struct _task_tree_context_block_t {
/* Up to 10 values are saved onto the stack. 8 for the task tree, 1 for
The access to the context switch (call or interrupt), and 1 spare that
users should never use. This last may be required by the system */
- u16 stack1;
- u16 stack0;
- u16 stack3;
- u16 stack2;
- u16 stack5;
- u16 stack4;
- u16 stack7;
- u16 stack6;
- u16 stack9;
- u16 stack8;
-
- u32 saverfe;
+ ___DSP_DUAL_16BIT_ALLOC(
+ stack1,
+ stack0
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ stack3,
+ stack2
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ stack5,
+ stack4
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ stack7,
+ stack6
+ )
+ ___DSP_DUAL_16BIT_ALLOC(
+ stack9,
+ stack8
+ )
+
+ u32 saverfe;
/* Value may be overwriten by stack save algorithm.
Retain the size of the stack data saved here if used */
- u16 reserved1;
- u16 stack_size;
- u32 saverba; /* (HFG) */
+ ___DSP_DUAL_16BIT_ALLOC(
+ reserved1,
+ stack_size
+ )
+ u32 saverba; /* (HFG) */
u32 saverdc;
u32 savers_config_23; /* (HFG) */
u32 savers_DMA23; /* (HFG) */
@@ -205,8 +243,8 @@ typedef struct _task_tree_context_block_t {
typedef struct _task_tree_control_block_t {
hf_save_area_t context;
- tree_link_t links;
- task_tree_data_t data;
+ tree_link_t links;
+ task_tree_data_t data;
task_tree_context_block_t context_blk;
interval_timer_data_t int_timer;
} task_tree_control_block_t;
diff --git a/include/sound/driver.h b/include/sound/driver.h
index 84416da19845..adef8f96f0c6 100644
--- a/include/sound/driver.h
+++ b/include/sound/driver.h
@@ -27,7 +27,6 @@
#endif
#include <linux/config.h>
-#include <linux/version.h>
#define SNDRV_CARDS 8 /* number of supported soundcards - don't change - minor numbers */
diff --git a/include/sound/emu10k1.h b/include/sound/emu10k1.h
index e412b1751aea..4161dfd1f2b3 100644
--- a/include/sound/emu10k1.h
+++ b/include/sound/emu10k1.h
@@ -49,8 +49,8 @@
#define NUM_G 64 /* use all channels */
#define NUM_FXSENDS 4
-#define EMU10K1_DMA_MASK 0x1fffffffUL
-#define AUDIGY_DMA_MASK 0xffffffffUL
+#define EMU10K1_DMA_MASK 0x7fffffffUL /* 31bit */
+#define AUDIGY_DMA_MASK 0xffffffffUL /* 32bit */
#define TMEMSIZE 256*1024
#define TMEMSIZEREG 4
@@ -818,9 +818,6 @@ typedef struct {
unsigned char send_routing[3][8];
unsigned char send_volume[3][8];
unsigned short attn[3];
- snd_kcontrol_t *ctl_send_routing;
- snd_kcontrol_t *ctl_send_volume;
- snd_kcontrol_t *ctl_attn;
emu10k1_pcm_t *epcm;
} emu10k1_pcm_mixer_t;
@@ -980,6 +977,9 @@ struct _snd_emu10k1 {
emu10k1_voice_t voices[64];
emu10k1_pcm_mixer_t pcm_mixer[32];
+ snd_kcontrol_t *ctl_send_routing;
+ snd_kcontrol_t *ctl_send_volume;
+ snd_kcontrol_t *ctl_attn;
void (*hwvol_interrupt)(emu10k1_t *emu, unsigned int status);
void (*capture_interrupt)(emu10k1_t *emu, unsigned int status);
diff --git a/include/sound/hdsp.h b/include/sound/hdsp.h
new file mode 100644
index 000000000000..004eeb41df92
--- /dev/null
+++ b/include/sound/hdsp.h
@@ -0,0 +1,92 @@
+#ifndef __SOUND_HDSP_H
+#define __SOUND_HDSP_H
+
+/*
+ * Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
+ *
+ * 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 HDSP_MATRIX_MIXER_SIZE 2048
+
+typedef enum {
+ Digiface,
+ Multiface,
+ Undefined,
+} HDSP_IO_Type;
+
+typedef struct _snd_hdsp_peak_rms hdsp_peak_rms_t;
+
+struct _snd_hdsp_peak_rms {
+ unsigned int playback_peaks[26];
+ unsigned int input_peaks[26];
+ unsigned int output_peaks[28];
+ unsigned long long playback_rms[26];
+ unsigned long long input_rms[26];
+};
+
+#define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, hdsp_peak_rms_t)
+
+typedef struct _snd_hdsp_config_info hdsp_config_info_t;
+
+struct _snd_hdsp_config_info {
+ unsigned char pref_sync_ref;
+ unsigned char wordclock_sync_check;
+ unsigned char spdif_sync_check;
+ unsigned char adatsync_sync_check;
+ unsigned char adat_sync_check[3];
+ unsigned char spdif_in;
+ unsigned char spdif_out;
+ unsigned char spdif_professional;
+ unsigned char spdif_emphasis;
+ unsigned char spdif_nonaudio;
+ unsigned int spdif_sample_rate;
+ unsigned int system_sample_rate;
+ unsigned int autosync_sample_rate;
+ unsigned char system_clock_mode;
+ unsigned char clock_source;
+ unsigned char autosync_ref;
+ unsigned char line_out;
+ unsigned char passthru;
+};
+
+#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, hdsp_config_info_t)
+
+typedef struct _snd_hdsp_firmware hdsp_firmware_t;
+
+struct _snd_hdsp_firmware {
+ unsigned long firmware_data[24413];
+};
+
+#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, hdsp_firmware_t)
+
+typedef struct _snd_hdsp_version hdsp_version_t;
+
+struct _snd_hdsp_version {
+ HDSP_IO_Type io_type;
+ unsigned short firmware_rev;
+};
+
+#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, hdsp_version_t)
+
+typedef struct _snd_hdsp_mixer hdsp_mixer_t;
+
+struct _snd_hdsp_mixer {
+ unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
+};
+
+#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, hdsp_mixer_t)
+
+#endif /* __SOUND_HDSP_H */
diff --git a/include/sound/initval.h b/include/sound/initval.h
index 7ccacd52b015..016151a49a9b 100644
--- a/include/sound/initval.h
+++ b/include/sound/initval.h
@@ -25,7 +25,7 @@
#ifdef MODULE
#define MODULE_GENERIC_STRING(name, string) \
static const char __module_generic_string_##name [] \
- __attribute__ ((section(".modstring"))) = #name "=" string;
+ __attribute__ ((unused, __section__(".modstring"))) = #name "=" string;
#else
#define MODULE_GENERIC_STRING(name, string)
#endif
diff --git a/include/sound/memalloc.h b/include/sound/memalloc.h
index 02d57069a6f9..744fc22fdf38 100644
--- a/include/sound/memalloc.h
+++ b/include/sound/memalloc.h
@@ -174,19 +174,4 @@ static inline dma_addr_t snd_sgbuf_get_addr(struct snd_sg_buf *sgbuf, size_t off
}
#endif /* CONFIG_PCI */
-
-/*
- * wrappers
- */
-
-#ifdef CONFIG_PCI
-#if defined(__i386__) || defined(__ppc__) || defined(__x86_64__)
-#define HACK_PCI_ALLOC_CONSISTENT
-/* a hack for 2.4/5 kernels for better allocation of large buffers */
-void *snd_pci_hack_alloc_consistent(struct pci_dev *hwdev, size_t size,
- dma_addr_t *dma_handle);
-#endif /* arch */
-#endif /* CONFIG_PCI */
-
-
#endif /* __SOUND_MEMALLOC_H */
diff --git a/include/sound/opl3.h b/include/sound/opl3.h
index f516550dc9a1..48fcf7cb0113 100644
--- a/include/sound/opl3.h
+++ b/include/sound/opl3.h
@@ -230,7 +230,8 @@
#define OPL3_HW_OPL3_FM801 0x0303 /* FM801 */
#define OPL3_HW_OPL3_CS4281 0x0304 /* CS4281 */
#define OPL3_HW_OPL3_PC98 0x0305 /* PC9800 */
-#define OPL3_HW_OPL4 0x0400
+#define OPL3_HW_OPL4 0x0400 /* YMF278B/YMF295 */
+#define OPL3_HW_OPL4_ML 0x0401 /* YMF704/YMF721 */
#define OPL3_HW_MASK 0xff00
#define MAX_OPL2_VOICES 9
diff --git a/include/sound/snd_wavefront.h b/include/sound/snd_wavefront.h
index 234c81b6db98..414ddb410b28 100644
--- a/include/sound/snd_wavefront.h
+++ b/include/sound/snd_wavefront.h
@@ -98,12 +98,12 @@ struct _snd_wavefront {
struct _snd_wavefront_card {
snd_wavefront_t wavefront;
-#ifdef __ISAPNP__
- struct isapnp_dev *wss;
- struct isapnp_dev *ctrl;
- struct isapnp_dev *mpu;
- struct isapnp_dev *synth;
-#endif /* CONFIG_ISAPNP */
+#ifdef CONFIG_PNP
+ struct pnp_dev *wss;
+ struct pnp_dev *ctrl;
+ struct pnp_dev *mpu;
+ struct pnp_dev *synth;
+#endif /* CONFIG_PNP */
};
extern void snd_wavefront_internal_interrupt (snd_wavefront_card_t *card);
diff --git a/include/sound/trident.h b/include/sound/trident.h
index a2263766ed41..7098bfdc2b48 100644
--- a/include/sound/trident.h
+++ b/include/sound/trident.h
@@ -403,10 +403,6 @@ struct _snd_trident_pcm_mixer {
unsigned char rvol; /* rear volume */
unsigned char cvol; /* center volume */
unsigned char pad;
- snd_kcontrol_t *ctl_vol; /* front volume */
- snd_kcontrol_t *ctl_pan; /* pan */
- snd_kcontrol_t *ctl_rvol; /* rear volume */
- snd_kcontrol_t *ctl_cvol; /* center volume */
};
struct _snd_trident {
@@ -458,6 +454,10 @@ struct _snd_trident {
unsigned int musicvol_wavevol;
snd_trident_pcm_mixer_t pcm_mixer[32];
+ snd_kcontrol_t *ctl_vol; /* front volume */
+ snd_kcontrol_t *ctl_pan; /* pan */
+ snd_kcontrol_t *ctl_rvol; /* rear volume */
+ snd_kcontrol_t *ctl_cvol; /* center volume */
spinlock_t reg_lock;
diff --git a/include/sound/ymfpci.h b/include/sound/ymfpci.h
index 0c24824adbfd..4c2a3da41082 100644
--- a/include/sound/ymfpci.h
+++ b/include/sound/ymfpci.h
@@ -174,6 +174,28 @@
#define YDSXG_CAPTURE_VOICES 2
#define YDSXG_EFFECT_VOICES 5
+#define YMFPCI_LEGACY_SBEN (1 << 0) /* soundblaster enable */
+#define YMFPCI_LEGACY_FMEN (1 << 1) /* OPL3 enable */
+#define YMFPCI_LEGACY_JPEN (1 << 2) /* joystick enable */
+#define YMFPCI_LEGACY_MEN (1 << 3) /* MPU401 enable */
+#define YMFPCI_LEGACY_MIEN (1 << 4) /* MPU RX irq enable */
+#define YMFPCI_LEGACY_IOBITS (1 << 5) /* i/o bits range, 0 = 16bit, 1 =10bit */
+#define YMFPCI_LEGACY_SDMA (3 << 6) /* SB DMA select */
+#define YMFPCI_LEGACY_SBIRQ (7 << 8) /* SB IRQ select */
+#define YMFPCI_LEGACY_MPUIRQ (7 << 11) /* MPU IRQ select */
+#define YMFPCI_LEGACY_SIEN (1 << 14) /* serialized IRQ */
+#define YMFPCI_LEGACY_LAD (1 << 15) /* legacy audio disable */
+
+#define YMFPCI_LEGACY2_FMIO (3 << 0) /* OPL3 i/o address (724/740) */
+#define YMFPCI_LEGACY2_SBIO (3 << 2) /* SB i/o address (724/740) */
+#define YMFPCI_LEGACY2_MPUIO (3 << 4) /* MPU401 i/o address (724/740) */
+#define YMFPCI_LEGACY2_JSIO (3 << 6) /* joystick i/o address (724/740) */
+#define YMFPCI_LEGACY2_MAIM (1 << 8) /* MPU401 ack intr mask */
+#define YMFPCI_LEGACY2_SMOD (3 << 11) /* SB DMA mode */
+#define YMFPCI_LEGACY2_SBVER (3 << 13) /* SB version select */
+#define YMFPCI_LEGACY2_IMOD (1 << 15) /* legacy IRQ mode */
+/* SIEN:IMOD 0:0 = legacy irq, 0:1 = INTA, 1:0 = serialized IRQ */
+
/*
*
*/
@@ -283,6 +305,8 @@ struct _snd_ymfpci {
unsigned long reg_area_phys;
unsigned long reg_area_virt;
struct resource *res_reg_area;
+ struct resource *fm_res;
+ struct resource *mpu_res;
unsigned short old_legacy_ctrl;
unsigned int joystick_port;
diff --git a/sound/core/Makefile b/sound/core/Makefile
index 1b8088426d45..c243ce7e5602 100644
--- a/sound/core/Makefile
+++ b/sound/core/Makefile
@@ -17,7 +17,7 @@ snd-pcm-objs := pcm.o pcm_native.o pcm_lib.o pcm_timer.o pcm_misc.o \
snd-page-alloc-objs := memalloc.o
ifeq ($(CONFIG_PCI),y)
-snd-page-alloc-objs += sgbuf.o memory_wrapper.o
+snd-page-alloc-objs += sgbuf.o
endif
snd-rawmidi-objs := rawmidi.o
diff --git a/sound/core/control.c b/sound/core/control.c
index f44c7e283405..c01a2ce81cd3 100644
--- a/sound/core/control.c
+++ b/sound/core/control.c
@@ -106,6 +106,7 @@ static int snd_ctl_release(struct inode *inode, struct file *file)
snd_card_t *card;
snd_ctl_file_t *ctl;
snd_kcontrol_t *control;
+ unsigned int idx;
ctl = snd_magic_cast(snd_ctl_file_t, file->private_data, return -ENXIO);
fasync_helper(-1, file, 0, &ctl->fasync);
@@ -117,8 +118,9 @@ static int snd_ctl_release(struct inode *inode, struct file *file)
down_write(&card->controls_rwsem);
list_for_each(list, &card->controls) {
control = snd_kcontrol(list);
- if (control->owner == ctl)
- control->owner = NULL;
+ for (idx = 0; idx < control->count; idx++)
+ if (control->vd[idx].owner == ctl)
+ control->vd[idx].owner = NULL;
}
up_write(&card->controls_rwsem);
snd_ctl_empty_read_queue(ctl);
@@ -163,8 +165,8 @@ void snd_ctl_notify(snd_card_t *card, unsigned int mask, snd_ctl_elem_id_t *id)
}
_found:
wake_up(&ctl->change_sleep);
- kill_fasync(&ctl->fasync, SIGIO, POLL_IN);
spin_unlock_irqrestore(&ctl->read_lock, flags);
+ kill_fasync(&ctl->fasync, SIGIO, POLL_IN);
}
read_unlock(&card->ctl_files_rwlock);
}
@@ -172,21 +174,28 @@ void snd_ctl_notify(snd_card_t *card, unsigned int mask, snd_ctl_elem_id_t *id)
/**
* snd_ctl_new - create a control instance from the template
* @control: the control template
+ * @access: the default control access
*
* Allocates a new snd_kcontrol_t instance and copies the given template
- * to the new instance.
+ * to the new instance. It does not copy volatile data (access).
*
* Returns the pointer of the new instance, or NULL on failure.
*/
-snd_kcontrol_t *snd_ctl_new(snd_kcontrol_t * control)
+snd_kcontrol_t *snd_ctl_new(snd_kcontrol_t * control, unsigned int access)
{
snd_kcontrol_t *kctl;
+ unsigned int idx;
snd_runtime_check(control != NULL, return NULL);
- kctl = (snd_kcontrol_t *)snd_magic_kmalloc(snd_kcontrol_t, 0, GFP_KERNEL);
+ snd_runtime_check(control->count > 0, return NULL);
+ kctl = (snd_kcontrol_t *)snd_magic_kcalloc(snd_kcontrol_t,
+ sizeof(snd_kcontrol_volatile_t) * control->count,
+ GFP_KERNEL);
if (kctl == NULL)
return NULL;
*kctl = *control;
+ for (idx = 0; idx < kctl->count; idx++)
+ kctl->vd[idx].access = access;
return kctl;
}
@@ -197,13 +206,14 @@ snd_kcontrol_t *snd_ctl_new(snd_kcontrol_t * control)
*
* Allocates a new snd_kcontrol_t instance and initialize from the given
* template. When the access field of ncontrol is 0, it's assumed as
- * READWRITE access.
+ * READWRITE access. When the count field is 0, it's assumes as one.
*
* Returns the pointer of the newly generated instance, or NULL on failure.
*/
snd_kcontrol_t *snd_ctl_new1(snd_kcontrol_new_t * ncontrol, void *private_data)
{
snd_kcontrol_t kctl;
+ unsigned int access;
snd_runtime_check(ncontrol != NULL, return NULL);
snd_assert(ncontrol->info != NULL, return NULL);
@@ -214,14 +224,16 @@ snd_kcontrol_t *snd_ctl_new1(snd_kcontrol_new_t * ncontrol, void *private_data)
if (ncontrol->name)
strncpy(kctl.id.name, ncontrol->name, sizeof(kctl.id.name)-1);
kctl.id.index = ncontrol->index;
- kctl.access = ncontrol->access == 0 ? SNDRV_CTL_ELEM_ACCESS_READWRITE :
- (ncontrol->access & (SNDRV_CTL_ELEM_ACCESS_READWRITE|SNDRV_CTL_ELEM_ACCESS_INACTIVE|SNDRV_CTL_ELEM_ACCESS_INDIRECT));
+ kctl.count = ncontrol->count ? ncontrol->count : 1;
+ access = ncontrol->access == 0 ? SNDRV_CTL_ELEM_ACCESS_READWRITE :
+ (ncontrol->access & (SNDRV_CTL_ELEM_ACCESS_READWRITE|SNDRV_CTL_ELEM_ACCESS_INACTIVE|
+ SNDRV_CTL_ELEM_ACCESS_DINDIRECT|SNDRV_CTL_ELEM_ACCESS_INDIRECT));
kctl.info = ncontrol->info;
kctl.get = ncontrol->get;
kctl.put = ncontrol->put;
kctl.private_value = ncontrol->private_value;
kctl.private_data = private_data;
- return snd_ctl_new(&kctl);
+ return snd_ctl_new(&kctl, access);
}
/**
@@ -253,16 +265,20 @@ void snd_ctl_free_one(snd_kcontrol_t * kcontrol)
*/
int snd_ctl_add(snd_card_t * card, snd_kcontrol_t * kcontrol)
{
+ snd_ctl_elem_id_t id;
+ unsigned int idx;
+
snd_runtime_check(card != NULL && kcontrol != NULL, return -EINVAL);
snd_assert(kcontrol->info != NULL, return -EINVAL);
- snd_assert(!(kcontrol->access & SNDRV_CTL_ELEM_ACCESS_READ) || kcontrol->get != NULL, return -EINVAL);
- snd_assert(!(kcontrol->access & SNDRV_CTL_ELEM_ACCESS_WRITE) || kcontrol->put != NULL, return -EINVAL);
down_write(&card->controls_rwsem);
list_add_tail(&kcontrol->list, &card->controls);
- card->controls_count++;
- kcontrol->id.numid = ++card->last_numid;
+ card->controls_count += kcontrol->count;
+ kcontrol->id.numid = card->last_numid + 1;
+ card->last_numid += kcontrol->count;
up_write(&card->controls_rwsem);
- snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_ADD, &kcontrol->id);
+ id = kcontrol->id;
+ for (idx = 0; idx < kcontrol->count; idx++, id.index++, id.numid++)
+ snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_ADD, &id);
return 0;
}
@@ -278,12 +294,17 @@ int snd_ctl_add(snd_card_t * card, snd_kcontrol_t * kcontrol)
*/
int snd_ctl_remove(snd_card_t * card, snd_kcontrol_t * kcontrol)
{
+ snd_ctl_elem_id_t id;
+ unsigned int idx;
+
snd_runtime_check(card != NULL && kcontrol != NULL, return -EINVAL);
down_write(&card->controls_rwsem);
list_del(&kcontrol->list);
- card->controls_count--;
+ card->controls_count -= kcontrol->count;
up_write(&card->controls_rwsem);
- snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_REMOVE, &kcontrol->id);
+ id = kcontrol->id;
+ for (idx = 0; idx < kcontrol->count; idx++, id.index++, id.numid++)
+ snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_REMOVE, &id);
snd_ctl_free_one(kcontrol);
return 0;
}
@@ -308,7 +329,8 @@ int snd_ctl_remove_id(snd_card_t * card, snd_ctl_elem_id_t *id)
return snd_ctl_remove(card, kctl);
}
-static snd_kcontrol_t *_ctl_find_id(snd_card_t * card, snd_ctl_elem_id_t *id); /* w/o lock */
+static snd_kcontrol_t *_ctl_find_id
+(snd_card_t * card, snd_ctl_elem_id_t *id); /* w/o lock */
/**
* snd_ctl_rename_id - replace the id of a control on the card
@@ -332,7 +354,8 @@ int snd_ctl_rename_id(snd_card_t * card, snd_ctl_elem_id_t *src_id, snd_ctl_elem
return -ENOENT;
}
kctl->id = *dst_id;
- kctl->id.numid = ++card->last_numid;
+ kctl->id.numid = card->last_numid + 1;
+ card->last_numid += kctl->count;
up_write(&card->controls_rwsem);
return 0;
}
@@ -345,7 +368,7 @@ static snd_kcontrol_t *_ctl_find_numid(snd_card_t * card, unsigned int numid)
snd_runtime_check(card != NULL && numid != 0, return NULL);
list_for_each(list, &card->controls) {
kctl = snd_kcontrol(list);
- if (kctl->id.numid == numid)
+ if (kctl->id.numid <= numid && kctl->id.numid + kctl->count > numid)
return kctl;
}
return NULL;
@@ -369,8 +392,14 @@ static snd_kcontrol_t *_ctl_find_id(snd_card_t * card, snd_ctl_elem_id_t *id)
continue;
if (strncmp(kctl->id.name, id->name, sizeof(kctl->id.name)))
continue;
- if (kctl->id.index != id->index)
+ if (kctl->id.index > id->index)
+ continue;
+ if (kctl->id.index + kctl->count <= id->index)
+ continue;
+ if (kctl->id.index != id->index) {
+ printk("BOOOR: %i, %i, %i\n", kctl->id.index, kctl->count, id->index);
continue;
+ }
return kctl;
}
return NULL;
@@ -438,12 +467,13 @@ static int snd_ctl_elem_list(snd_card_t *card, snd_ctl_elem_list_t *_list)
snd_ctl_elem_list_t list;
snd_kcontrol_t *kctl;
snd_ctl_elem_id_t *dst, *id;
- int offset, space;
+ unsigned int offset, space, first, jidx;
if (copy_from_user(&list, _list, sizeof(list)))
return -EFAULT;
offset = list.offset;
space = list.space;
+ first = 0;
/* try limit maximum space */
if (space > 16384)
return -ENOMEM;
@@ -455,17 +485,27 @@ static int snd_ctl_elem_list(snd_card_t *card, snd_ctl_elem_list_t *_list)
down_read(&card->controls_rwsem);
list.count = card->controls_count;
plist = card->controls.next;
- while (offset-- > 0 && plist != &card->controls)
+ while (plist != &card->controls) {
+ if (offset == 0)
+ break;
+ kctl = snd_kcontrol(plist);
+ if (offset < kctl->count)
+ break;
+ offset -= kctl->count;
plist = plist->next;
+ }
list.used = 0;
id = dst;
while (space > 0 && plist != &card->controls) {
kctl = snd_kcontrol(plist);
- memcpy(id, &kctl->id, sizeof(snd_ctl_elem_id_t));
- id++;
+ for (jidx = offset; space > 0 && jidx < kctl->count; jidx++) {
+ snd_ctl_build_ioff(id, kctl, jidx);
+ id++;
+ space--;
+ list.used++;
+ }
plist = plist->next;
- space--;
- list.used++;
+ offset = 0;
}
up_read(&card->controls_rwsem);
if (list.used > 0 && copy_to_user(list.pids, dst, list.used * sizeof(snd_ctl_elem_id_t)))
@@ -486,6 +526,8 @@ static int snd_ctl_elem_info(snd_ctl_file_t *ctl, snd_ctl_elem_info_t *_info)
snd_card_t *card = ctl->card;
snd_ctl_elem_info_t info;
snd_kcontrol_t *kctl;
+ snd_kcontrol_volatile_t *vd;
+ unsigned int index_offset;
int result;
if (copy_from_user(&info, _info, sizeof(info)))
@@ -502,13 +544,15 @@ static int snd_ctl_elem_info(snd_ctl_file_t *ctl, snd_ctl_elem_info_t *_info)
result = kctl->info(kctl, &info);
if (result >= 0) {
snd_assert(info.access == 0, );
- info.id = kctl->id;
- info.access = kctl->access;
- if (kctl->owner) {
+ index_offset = snd_ctl_get_ioff(kctl, &info.id);
+ vd = &kctl->vd[index_offset];
+ snd_ctl_build_ioff(&info.id, kctl, index_offset);
+ info.access = vd->access;
+ if (vd->owner) {
info.access |= SNDRV_CTL_ELEM_ACCESS_LOCK;
- if (kctl->owner == ctl)
+ if (vd->owner == ctl)
info.access |= SNDRV_CTL_ELEM_ACCESS_OWNER;
- info.owner = kctl->owner_pid;
+ info.owner = vd->owner_pid;
} else {
info.owner = -1;
}
@@ -522,8 +566,11 @@ static int snd_ctl_elem_info(snd_ctl_file_t *ctl, snd_ctl_elem_info_t *_info)
static int snd_ctl_elem_read(snd_card_t *card, snd_ctl_elem_value_t *_control)
{
+
snd_ctl_elem_value_t *control;
snd_kcontrol_t *kctl;
+ snd_kcontrol_volatile_t *vd;
+ unsigned int index_offset;
int result, indirect;
control = kmalloc(sizeof(*control), GFP_KERNEL);
@@ -536,16 +583,18 @@ static int snd_ctl_elem_read(snd_card_t *card, snd_ctl_elem_value_t *_control)
if (kctl == NULL) {
result = -ENOENT;
} else {
- indirect = kctl->access & SNDRV_CTL_ELEM_ACCESS_INDIRECT ? 1 : 0;
+ index_offset = snd_ctl_get_ioff(kctl, &control->id);
+ vd = &kctl->vd[index_offset];
+ indirect = vd->access & SNDRV_CTL_ELEM_ACCESS_INDIRECT ? 1 : 0;
if (control->indirect != indirect) {
result = -EACCES;
} else {
- if ((kctl->access & SNDRV_CTL_ELEM_ACCESS_READ) && kctl->get != NULL) {
+ if ((vd->access & SNDRV_CTL_ELEM_ACCESS_READ) && kctl->get != NULL) {
+ snd_ctl_build_ioff(&control->id, kctl, index_offset);
result = kctl->get(kctl, control);
- if (result >= 0)
- control->id = kctl->id;
- } else
+ } else {
result = -EPERM;
+ }
}
}
up_read(&card->controls_rwsem);
@@ -561,6 +610,8 @@ static int snd_ctl_elem_write(snd_ctl_file_t *file, snd_ctl_elem_value_t *_contr
snd_card_t *card = file->card;
snd_ctl_elem_value_t *control;
snd_kcontrol_t *kctl;
+ snd_kcontrol_volatile_t *vd;
+ unsigned int index_offset;
int result, indirect;
control = kmalloc(sizeof(*control), GFP_KERNEL);
@@ -573,22 +624,23 @@ static int snd_ctl_elem_write(snd_ctl_file_t *file, snd_ctl_elem_value_t *_contr
if (kctl == NULL) {
result = -ENOENT;
} else {
- indirect = kctl->access & SNDRV_CTL_ELEM_ACCESS_INDIRECT ? 1 : 0;
+ index_offset = snd_ctl_get_ioff(kctl, &control->id);
+ vd = &kctl->vd[index_offset];
+ indirect = vd->access & SNDRV_CTL_ELEM_ACCESS_INDIRECT ? 1 : 0;
if (control->indirect != indirect) {
result = -EACCES;
} else {
- if (!(kctl->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
+ if (!(vd->access & SNDRV_CTL_ELEM_ACCESS_WRITE) ||
kctl->put == NULL ||
- (kctl->owner != NULL && kctl->owner != file)) {
+ (vd->owner != NULL && vd->owner != file)) {
result = -EPERM;
} else {
+ snd_ctl_build_ioff(&control->id, kctl, index_offset);
result = kctl->put(kctl, control);
- if (result >= 0)
- control->id = kctl->id;
}
if (result > 0) {
up_read(&card->controls_rwsem);
- snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE, &kctl->id);
+ snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE, &control->id);
result = 0;
goto __unlocked;
}
@@ -608,6 +660,7 @@ static int snd_ctl_elem_lock(snd_ctl_file_t *file, snd_ctl_elem_id_t *_id)
snd_card_t *card = file->card;
snd_ctl_elem_id_t id;
snd_kcontrol_t *kctl;
+ snd_kcontrol_volatile_t *vd;
int result;
if (copy_from_user(&id, _id, sizeof(id)))
@@ -617,11 +670,12 @@ static int snd_ctl_elem_lock(snd_ctl_file_t *file, snd_ctl_elem_id_t *_id)
if (kctl == NULL) {
result = -ENOENT;
} else {
- if (kctl->owner != NULL)
+ vd = &kctl->vd[snd_ctl_get_ioff(kctl, &id)];
+ if (vd->owner != NULL)
result = -EBUSY;
else {
- kctl->owner = file;
- kctl->owner_pid = current->pid;
+ vd->owner = file;
+ vd->owner_pid = current->pid;
result = 0;
}
}
@@ -634,6 +688,7 @@ static int snd_ctl_elem_unlock(snd_ctl_file_t *file, snd_ctl_elem_id_t *_id)
snd_card_t *card = file->card;
snd_ctl_elem_id_t id;
snd_kcontrol_t *kctl;
+ snd_kcontrol_volatile_t *vd;
int result;
if (copy_from_user(&id, _id, sizeof(id)))
@@ -643,13 +698,14 @@ static int snd_ctl_elem_unlock(snd_ctl_file_t *file, snd_ctl_elem_id_t *_id)
if (kctl == NULL) {
result = -ENOENT;
} else {
- if (kctl->owner == NULL)
+ vd = &kctl->vd[snd_ctl_get_ioff(kctl, &id)];
+ if (vd->owner == NULL)
result = -EINVAL;
- else if (kctl->owner != file)
+ else if (vd->owner != file)
result = -EPERM;
else {
- kctl->owner = NULL;
- kctl->owner_pid = 0;
+ vd->owner = NULL;
+ vd->owner_pid = 0;
result = 0;
}
}
diff --git a/sound/core/info.c b/sound/core/info.c
index f85d3ab024d2..0ea9e88a6673 100644
--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -20,6 +20,7 @@
*/
#include <sound/driver.h>
+#include <linux/version.h>
#include <linux/init.h>
#include <linux/vmalloc.h>
#include <linux/time.h>
@@ -1032,6 +1033,7 @@ static void snd_info_device_fill_inode(struct inode *inode, int fill)
static inline void snd_info_device_entry_prepare(struct proc_dir_entry *de, snd_info_entry_t *entry)
{
de->fill_inode = snd_info_device_fill_inode;
+ de->ops = &snd_info_device_inode_operations;
}
#else
static inline void snd_info_device_entry_prepare(struct proc_dir_entry *de, snd_info_entry_t *entry)
@@ -1067,9 +1069,6 @@ snd_info_entry_t *snd_info_create_device(const char *name, unsigned int number,
p = create_proc_entry(entry->name, entry->mode, snd_proc_dev);
if (p) {
snd_info_device_entry_prepare(p, entry);
-#ifdef LINUX_2_2
- p->ops = &snd_info_device_inode_operations;
-#endif
} else {
up(&info_mutex);
snd_info_free_entry(entry);
diff --git a/sound/core/ioctl32/pcm32.c b/sound/core/ioctl32/pcm32.c
index 0701b8229bf0..b08e10759de7 100644
--- a/sound/core/ioctl32/pcm32.c
+++ b/sound/core/ioctl32/pcm32.c
@@ -21,7 +21,6 @@
#include <sound/driver.h>
#include <linux/time.h>
#include <linux/slab.h>
-#include <linux/compat.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include "ioctl32.h"
@@ -137,10 +136,15 @@ struct sndrv_pcm_channel_info32 {
COPY(step);\
}
+struct timeval32 {
+ s32 tv_sec;
+ s32 tv_usec;
+} __attribute__((packed));
+
struct sndrv_pcm_status32 {
s32 state;
- struct compat_timespec trigger_tstamp;
- struct compat_timespec tstamp;
+ struct timeval32 trigger_tstamp;
+ struct timeval32 tstamp;
u32 appl_ptr;
u32 hw_ptr;
s32 delay;
@@ -155,9 +159,9 @@ struct sndrv_pcm_status32 {
{\
COPY(state);\
COPY(trigger_tstamp.tv_sec);\
- COPY(trigger_tstamp.tv_nsec);\
+ COPY(trigger_tstamp.tv_usec);\
COPY(tstamp.tv_sec);\
- COPY(tstamp.tv_nsec);\
+ COPY(tstamp.tv_usec);\
COPY(appl_ptr);\
COPY(hw_ptr);\
COPY(delay);\
diff --git a/sound/core/ioctl32/rawmidi32.c b/sound/core/ioctl32/rawmidi32.c
index 5ff21249e556..0c8d70081a5e 100644
--- a/sound/core/ioctl32/rawmidi32.c
+++ b/sound/core/ioctl32/rawmidi32.c
@@ -21,7 +21,6 @@
#include <sound/driver.h>
#include <linux/time.h>
#include <linux/fs.h>
-#include <linux/compat.h>
#include <sound/core.h>
#include <sound/rawmidi.h>
#include <asm/uaccess.h>
@@ -43,9 +42,14 @@ struct sndrv_rawmidi_params32 {
COPY(no_active_sensing);\
}
+struct timeval32 {
+ s32 tv_sec;
+ s32 tv_usec;
+} __attribute__((packed));
+
struct sndrv_rawmidi_status32 {
s32 stream;
- struct compat_timespec tstamp;
+ struct timeval32 tstamp;
u32 avail;
u32 xruns;
unsigned char reserved[16];
@@ -55,7 +59,7 @@ struct sndrv_rawmidi_status32 {
{\
COPY(stream);\
COPY(tstamp.tv_sec);\
- COPY(tstamp.tv_nsec);\
+ COPY(tstamp.tv_usec);\
COPY(avail);\
COPY(xruns);\
}
diff --git a/sound/core/ioctl32/timer32.c b/sound/core/ioctl32/timer32.c
index 24030026c988..b1ac122b361c 100644
--- a/sound/core/ioctl32/timer32.c
+++ b/sound/core/ioctl32/timer32.c
@@ -21,7 +21,6 @@
#include <sound/driver.h>
#include <linux/time.h>
#include <linux/fs.h>
-#include <linux/compat.h>
#include <sound/core.h>
#include <sound/timer.h>
#include <asm/uaccess.h>
@@ -32,7 +31,7 @@ struct sndrv_timer_info32 {
s32 card;
unsigned char id[64];
unsigned char name[80];
- u32 reserved0;
+ u32 ticks;
u32 resolution;
unsigned char reserved[64];
};
@@ -43,11 +42,17 @@ struct sndrv_timer_info32 {
COPY(card);\
memcpy(dst->id, src->id, sizeof(src->id));\
memcpy(dst->name, src->name, sizeof(src->name));\
+ COPY(ticks);\
COPY(resolution);\
}
+struct timeval32 {
+ s32 tv_sec;
+ s32 tv_usec;
+};
+
struct sndrv_timer_status32 {
- struct compat_timespec tstamp;
+ struct timeval32 tstamp;
u32 resolution;
u32 lost;
u32 overrun;
@@ -58,7 +63,7 @@ struct sndrv_timer_status32 {
#define CVT_sndrv_timer_status()\
{\
COPY(tstamp.tv_sec);\
- COPY(tstamp.tv_nsec);\
+ COPY(tstamp.tv_usec);\
COPY(resolution);\
COPY(lost);\
COPY(overrun);\
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
index fd0a275572ff..41934f5983a7 100644
--- a/sound/core/memalloc.c
+++ b/sound/core/memalloc.c
@@ -36,6 +36,20 @@ MODULE_DESCRIPTION("Memory allocator for ALSA system.");
MODULE_LICENSE("GPL");
+/* so far, pre-defined allocation is only for hammerfall cards... */
+/* #define ENABLE_PREALLOC */
+
+
+#ifdef ENABLE_PREALLOC
+#ifndef SNDRV_CARDS
+#define SNDRV_CARDS 8
+#endif
+static int enable[8] = {[0 ... (SNDRV_CARDS-1)] = 1};
+MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+MODULE_PARM_DESC(enable, "Enable cards to allocate buffers.");
+#endif
+
+
/*
*/
@@ -50,6 +64,8 @@ struct snd_mem_list {
struct list_head list;
};
+/* id for pre-allocated buffers */
+#define SNDRV_DMA_DEVICE_UNUSED (unsigned int)-1
#ifdef CONFIG_SND_DEBUG
#define __ASTRING__(x) #x
@@ -63,23 +79,74 @@ struct snd_mem_list {
#define snd_assert(expr, args...) /**/
#endif
+#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
+
+/*
+ * A hack to allocate large buffers via pci_alloc_consistent()
+ *
+ * since pci_alloc_consistent always tries GFP_DMA when the requested
+ * pci memory region is below 32bit, it happens quite often that even
+ * 2 order of pages cannot be allocated.
+ *
+ * so in the following, we allocate at first without dma_mask, so that
+ * allocation will be done without GFP_DMA. if the area doesn't match
+ * with the requested region, then realloate with the original dma_mask
+ * again.
+ */
+
+void *snd_pci_hack_alloc_consistent(struct pci_dev *hwdev, size_t size,
+ dma_addr_t *dma_handle)
+{
+ void *ret;
+ u64 dma_mask;
+ unsigned long rmask;
+
+ if (hwdev == NULL)
+ return pci_alloc_consistent(hwdev, size, dma_handle);
+ dma_mask = hwdev->dma_mask;
+ rmask = ~((unsigned long)dma_mask);
+ hwdev->dma_mask = 0xffffffff; /* do without masking */
+ ret = pci_alloc_consistent(hwdev, size, dma_handle);
+ hwdev->dma_mask = dma_mask; /* restore */
+ if (ret) {
+ /* obtained address is out of range? */
+ if (((unsigned long)*dma_handle + size - 1) & rmask) {
+ /* reallocate with the proper mask */
+ pci_free_consistent(hwdev, size, ret, *dma_handle);
+ ret = pci_alloc_consistent(hwdev, size, dma_handle);
+ }
+ } else {
+ /* wish to success now with the proper mask... */
+ if (dma_mask != 0xffffffff)
+ ret = pci_alloc_consistent(hwdev, size, dma_handle);
+ }
+ return ret;
+}
+
/* redefine pci_alloc_consistent for some architectures */
-#ifdef HACK_PCI_ALLOC_CONSISTENT
#undef pci_alloc_consistent
#define pci_alloc_consistent snd_pci_hack_alloc_consistent
-#endif
+
+#endif /* arch */
+#endif /* CONFIG_PCI */
+#endif /* LINUX >= 2.4.0 */
/*
* compare the two devices
* returns non-zero if matched.
*/
-static int compare_device(const struct snd_dma_device *a, const struct snd_dma_device *b)
+static int compare_device(const struct snd_dma_device *a, const struct snd_dma_device *b, int allow_unused)
{
if (a->type != b->type)
return 0;
- if (a->id != b->id)
- return 0;
+ if (a->id != b->id) {
+ if (! allow_unused || (a->id != SNDRV_DMA_DEVICE_UNUSED && b->id != SNDRV_DMA_DEVICE_UNUSED))
+ return 0;
+ }
switch (a->type) {
case SNDRV_DMA_TYPE_CONTINUOUS:
#ifdef CONFIG_ISA
@@ -138,7 +205,7 @@ int snd_dma_alloc_pages(const struct snd_dma_device *dev, size_t size,
#endif
#ifdef CONFIG_SBUS
case SNDRV_DMA_TYPE_SBUS:
- dmab->area = snd_malloc_sbus_pages(dev->dev.sbus, size, &dmab->addr);
+ dmab->area = snd_malloc_pci_pages(dev->dev.sbus, size, &dmab->addr);
break;
#endif
default:
@@ -181,7 +248,7 @@ void snd_dma_free_pages(const struct snd_dma_device *dev, struct snd_dma_buffer
#endif
#ifdef CONFIG_SBUS
case SNDRV_DMA_TYPE_SBUS:
- snd_free_sbus_pages(dev->dev.sbus, dmab->bytes, dmab->area, dmab->addr);
+ snd_free_sbus_pages(dev->dev.sbus, dmab->size, dmab->are, dmab->addr);
break;
#endif
default:
@@ -193,14 +260,14 @@ void snd_dma_free_pages(const struct snd_dma_device *dev, struct snd_dma_buffer
/*
* search for the device
*/
-static struct snd_mem_list *mem_list_find(const struct snd_dma_device *dev)
+static struct snd_mem_list *mem_list_find(const struct snd_dma_device *dev, int allow_unused)
{
struct list_head *p;
struct snd_mem_list *mem;
list_for_each(p, &mem_list_head) {
mem = list_entry(p, struct snd_mem_list, list);
- if (compare_device(&mem->dev, dev))
+ if (compare_device(&mem->dev, dev, allow_unused))
return mem;
}
return NULL;
@@ -224,9 +291,10 @@ size_t snd_dma_get_reserved(const struct snd_dma_device *dev, struct snd_dma_buf
snd_assert(dev && dmab, return 0);
down(&list_mutex);
- mem = mem_list_find(dev);
+ mem = mem_list_find(dev, 1);
if (mem) {
mem->used = 1;
+ mem->dev = *dev;
*dmab = mem->buffer;
up(&list_mutex);
return dmab->bytes;
@@ -250,7 +318,7 @@ int snd_dma_free_reserved(const struct snd_dma_device *dev)
snd_assert(dev, return -EINVAL);
down(&list_mutex);
- mem = mem_list_find(dev);
+ mem = mem_list_find(dev, 0);
if (mem)
mem->used = 0;
up(&list_mutex);
@@ -277,7 +345,7 @@ int snd_dma_set_reserved(const struct snd_dma_device *dev, struct snd_dma_buffer
snd_assert(dev, return -EINVAL);
down(&list_mutex);
- mem = mem_list_find(dev);
+ mem = mem_list_find(dev, 0);
if (mem) {
snd_dma_free_pages(dev, &mem->buffer);
if (! dmab || ! dmab->bytes) {
@@ -293,6 +361,10 @@ int snd_dma_set_reserved(const struct snd_dma_device *dev, struct snd_dma_buffer
return 0;
}
mem = kmalloc(sizeof(*mem), GFP_KERNEL);
+ if (! mem) {
+ up(&list_mutex);
+ return -ENOMEM;
+ }
mem->dev = *dev;
list_add(&mem->list, &mem_list_head);
}
@@ -712,6 +784,85 @@ void snd_free_sbus_pages(struct sbus_dev *sdev,
#endif /* CONFIG_SBUS */
+#ifdef ENABLE_PREALLOC
+/*
+ * allocation of buffers for pre-defined devices
+ */
+
+/* FIXME: for pci only - other bus? */
+struct prealloc_dev {
+ unsigned short vendor;
+ unsigned short device;
+ unsigned long dma_mask;
+ unsigned int size;
+ unsigned int buffers;
+};
+
+#define HAMMERFALL_BUFFER_SIZE (16*1024*4*(26+1))
+
+static struct prealloc_dev prealloc_devices[] __initdata = {
+ {
+ /* hammerfall */
+ .vendor = 0x10ee,
+ .device = 0x3fc4,
+ .dma_mask = 0xffffffff,
+ .size = HAMMERFALL_BUFFER_SIZE,
+ .buffers = 2
+ },
+ {
+ /* HDSP */
+ .vendor = 0x10ee,
+ .device = 0x3fc5,
+ .dma_mask = 0xffffffff,
+ .size = HAMMERFALL_BUFFER_SIZE,
+ .buffers = 2
+ },
+ { }, /* terminator */
+};
+
+static void __init preallocate_cards(void)
+{
+ struct pci_dev *pci;
+ int card;
+
+ card = 0;
+
+ pci_for_each_dev(pci) {
+ struct prealloc_dev *dev;
+ if (card >= SNDRV_CARDS)
+ break;
+ for (dev = prealloc_devices; dev->vendor; dev++) {
+ unsigned int i;
+ if (dev->vendor != pci->vendor || dev->device != pci->device)
+ continue;
+ if (! enable[card++])
+ continue;
+
+ if (pci_set_dma_mask(pci, dev->dma_mask) < 0) {
+ printk(KERN_ERR "snd-page-alloc: cannot set DMA mask %lx for pci %04x:%04x\n", dev->dma_mask, dev->vendor, dev->device);
+ continue;
+ }
+
+ for (i = 0; i < dev->buffers; i++) {
+ struct snd_dma_device dma;
+ struct snd_dma_buffer buf;
+ snd_dma_device_pci(&dma, pci, SNDRV_DMA_DEVICE_UNUSED);
+ memset(&buf, 0, sizeof(buf));
+ snd_dma_alloc_pages(&dma, dev->size, &buf);
+ if (buf.bytes) {
+ if (snd_dma_set_reserved(&dma, &buf) < 0) {
+ printk(KERN_WARNING "snd-page-alloc: cannot reserve buffer\n");
+ snd_dma_free_pages(&dma, &buf);
+ }
+ } else
+ printk(KERN_WARNING "snd-page-alloc: cannot allocate buffer pages (size = %d)\n", dev->size);
+ }
+ }
+ }
+}
+#endif
+
+
#ifdef CONFIG_PROC_FS
/*
* proc file interface
@@ -735,6 +886,9 @@ static int snd_mem_proc_read(char *page, char **start, off_t off,
static int __init snd_mem_init(void)
{
create_proc_read_entry("driver/snd-page-alloc", 0, 0, snd_mem_proc_read, NULL);
+#ifdef ENABLE_PREALLOC
+ preallocate_cards();
+#endif
return 0;
}
@@ -774,9 +928,6 @@ EXPORT_SYMBOL(snd_malloc_pci_page);
EXPORT_SYMBOL(snd_free_pci_pages);
EXPORT_SYMBOL(snd_malloc_sgbuf_pages);
EXPORT_SYMBOL(snd_free_sgbuf_pages);
-#ifdef HACK_PCI_ALLOC_CONSISTENT
-EXPORT_SYMBOL(snd_pci_hack_alloc_consistent);
-#endif
#endif
#ifdef CONFIG_SBUS
EXPORT_SYMBOL(snd_malloc_sbus_pages);
diff --git a/sound/core/memory_wrapper.c b/sound/core/memory_wrapper.c
deleted file mode 100644
index f761ac99006a..000000000000
--- a/sound/core/memory_wrapper.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) by Jaroslav Kysela <perex@suse.cz>
- * Takashi Iwai <tiwai@suse.de>
- *
- * 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
- *
- */
-
-#include <linux/config.h>
-#include <linux/pci.h>
-#include <sound/memalloc.h>
-
-
-#ifdef HACK_PCI_ALLOC_CONSISTENT
-/*
- * A dirty hack... when the kernel code is fixed this should be removed.
- *
- * since pci_alloc_consistent always tries GFP_DMA when the requested
- * pci memory region is below 32bit, it happens quite often that even
- * 2 order of pages cannot be allocated.
- *
- * so in the following, we allocate at first without dma_mask, so that
- * allocation will be done without GFP_DMA. if the area doesn't match
- * with the requested region, then realloate with the original dma_mask
- * again.
- */
-
-void *snd_pci_hack_alloc_consistent(struct pci_dev *hwdev, size_t size,
- dma_addr_t *dma_handle)
-{
- void *ret;
- u64 dma_mask;
- unsigned long rmask;
-
- if (hwdev == NULL)
- return pci_alloc_consistent(hwdev, size, dma_handle);
- dma_mask = hwdev->dma_mask;
- rmask = ~((unsigned long)dma_mask);
- hwdev->dma_mask = 0xffffffff; /* do without masking */
- ret = pci_alloc_consistent(hwdev, size, dma_handle);
- hwdev->dma_mask = dma_mask; /* restore */
- if (ret) {
- /* obtained address is out of range? */
- if (((unsigned long)*dma_handle + size - 1) & rmask) {
- /* reallocate with the proper mask */
- pci_free_consistent(hwdev, size, ret, *dma_handle);
- ret = pci_alloc_consistent(hwdev, size, dma_handle);
- }
- } else {
- /* wish to success now with the proper mask... */
- if (dma_mask != 0xffffffff)
- ret = pci_alloc_consistent(hwdev, size, dma_handle);
- }
- return ret;
-}
-
-#endif /* HACK_PCI_ALLOC_CONSISTENT */
diff --git a/sound/core/oss/mixer_oss.c b/sound/core/oss/mixer_oss.c
index c4cc66429179..c01b1fffad65 100644
--- a/sound/core/oss/mixer_oss.c
+++ b/sound/core/oss/mixer_oss.c
@@ -204,6 +204,8 @@ static int snd_mixer_oss_get_recsrc(snd_mixer_oss_file_t *fmixer)
static int snd_mixer_oss_set_recsrc(snd_mixer_oss_file_t *fmixer, int recsrc)
{
snd_mixer_oss_t *mixer = fmixer->mixer;
+ snd_mixer_oss_slot_t *pslot;
+ int chn, active;
int result = 0;
if (mixer == NULL)
@@ -214,16 +216,15 @@ static int snd_mixer_oss_set_recsrc(snd_mixer_oss_file_t *fmixer, int recsrc)
mixer->put_recsrc(fmixer, ffz(~recsrc));
mixer->get_recsrc(fmixer, &result);
result = 1 << result;
- } else {
- snd_mixer_oss_slot_t *pslot;
- int chn, active;
- for (chn = 0; chn < 31; chn++) {
- pslot = &mixer->slots[chn];
- if (pslot->put_recsrc) {
- active = (recsrc & (1 << chn)) ? 1 : 0;
- pslot->put_recsrc(fmixer, pslot, active);
- }
+ }
+ for (chn = 0; chn < 31; chn++) {
+ pslot = &mixer->slots[chn];
+ if (pslot->put_recsrc) {
+ active = (recsrc & (1 << chn)) ? 1 : 0;
+ pslot->put_recsrc(fmixer, pslot, active);
}
+ }
+ if (! result) {
for (chn = 0; chn < 31; chn++) {
pslot = &mixer->slots[chn];
if (pslot->get_recsrc) {
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 31cbcc68701c..051e0e0b6316 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -24,6 +24,7 @@
#endif
#include <sound/driver.h>
+#include <linux/version.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/time.h>
@@ -930,8 +931,8 @@ static int snd_pcm_oss_set_rate(snd_pcm_oss_file_t *pcm_oss_file, int rate)
runtime = substream->runtime;
if (rate < 1000)
rate = 1000;
- else if (rate > 48000)
- rate = 48000;
+ else if (rate > 192000)
+ rate = 192000;
if (runtime->oss.rate != rate) {
runtime->oss.params = 1;
runtime->oss.rate = rate;
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index db79cb18f32e..f23204d03e7f 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -1711,7 +1711,7 @@ int snd_pcm_hw_param_near(snd_pcm_t *pcm, snd_pcm_hw_params_t *params,
* snd_pcm_hw_param_choose
*
* Choose one configuration from configuration space defined by PARAMS
- * The configuration choosen is that obtained fixing in this order:
+ * The configuration chosen is that obtained fixing in this order:
* first access, first format, first subformat, min channels,
* min rate, min period time, max buffer size, min tick time
*/
@@ -2119,6 +2119,7 @@ static snd_pcm_sframes_t snd_pcm_lib_write1(snd_pcm_substream_t *substream,
spin_lock_irq(&runtime->lock);
switch (runtime->status->state) {
case SNDRV_PCM_STATE_XRUN:
+ case SNDRV_PCM_STATE_DRAINING:
state = ERROR;
goto _end_loop;
case SNDRV_PCM_STATE_SUSPENDED:
@@ -2377,6 +2378,7 @@ static snd_pcm_sframes_t snd_pcm_lib_read1(snd_pcm_substream_t *substream, void
snd_pcm_uframes_t cont;
if (runtime->sleep_min == 0 && runtime->status->state == SNDRV_PCM_STATE_RUNNING)
snd_pcm_update_hw_ptr(substream);
+ __draining:
avail = snd_pcm_capture_avail(runtime);
if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) {
if (avail < runtime->xfer_align) {
@@ -2418,6 +2420,8 @@ static snd_pcm_sframes_t snd_pcm_lib_read1(snd_pcm_substream_t *substream, void
case SNDRV_PCM_STATE_SUSPENDED:
state = SUSPENDED;
goto _end_loop;
+ case SNDRV_PCM_STATE_DRAINING:
+ goto __draining;
default:
break;
}
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 357718bd0232..4b3fab10f1e5 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -20,6 +20,7 @@
*/
#include <sound/driver.h>
+#include <linux/version.h>
#include <linux/mm.h>
#include <linux/file.h>
#include <linux/slab.h>
diff --git a/sound/core/rtctimer.c b/sound/core/rtctimer.c
index 24a03e45d234..0c08b14ce17e 100644
--- a/sound/core/rtctimer.c
+++ b/sound/core/rtctimer.c
@@ -31,11 +31,7 @@
#if defined(CONFIG_RTC) || defined(CONFIG_RTC_MODULE)
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 2, 12) /* FIXME: which 2.2.x kernel? */
-#include <linux/rtc.h>
-#else
#include <linux/mc146818rtc.h>
-#endif
#define RTC_FREQ 1024 /* default frequency */
#define NANO_SEC 1000000000L /* 10^9 in sec */
diff --git a/sound/core/seq/instr/ainstr_iw.c b/sound/core/seq/instr/ainstr_iw.c
index fd654683c409..121e09cde3bc 100644
--- a/sound/core/seq/instr/ainstr_iw.c
+++ b/sound/core/seq/instr/ainstr_iw.c
@@ -78,7 +78,7 @@ static int snd_seq_iwffff_copy_env_from_stream(__u32 req_stype,
while (1) {
if (*len < (long)sizeof(__u32))
return -EINVAL;
- if (copy_from_user(&stype, data, sizeof(stype)))
+ if (copy_from_user(&stype, *data, sizeof(stype)))
return -EFAULT;
if (stype == IWFFFF_STRU_WAVE)
return 0;
diff --git a/sound/core/seq/oss/seq_oss_midi.c b/sound/core/seq/oss/seq_oss_midi.c
index 221808f1de05..599d0c71d3b4 100644
--- a/sound/core/seq/oss/seq_oss_midi.c
+++ b/sound/core/seq/oss/seq_oss_midi.c
@@ -593,6 +593,7 @@ send_synth_event(seq_oss_devinfo_t *dp, snd_seq_event_t *ev, int dev)
break;
}
+ snd_seq_oss_readq_put_timestamp(dp->readq, ev->time.tick, dp->seq_mode);
snd_seq_oss_readq_put_event(dp->readq, &ossev);
return 0;
diff --git a/sound/core/seq/seq_memory.c b/sound/core/seq/seq_memory.c
index 87aa5a6cc706..974b0aa210d2 100644
--- a/sound/core/seq/seq_memory.c
+++ b/sound/core/seq/seq_memory.c
@@ -235,14 +235,14 @@ int snd_seq_cell_alloc(pool_t *pool, snd_seq_event_cell_t **cellp, int nonblock,
while (pool->free == NULL && ! nonblock && ! pool->closing) {
spin_unlock(&pool->lock);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
+#ifdef LINUX_2_2
/* change semaphore to allow other clients
to access device file */
if (file)
up(&semaphore_of(file));
#endif
interruptible_sleep_on(&pool->output_sleep);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
+#ifdef LINUX_2_2
/* restore semaphore again */
if (file)
down(&semaphore_of(file));
diff --git a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c
index 4d389d06c211..3ccf189a8d38 100644
--- a/sound/core/seq/seq_midi.c
+++ b/sound/core/seq/seq_midi.c
@@ -200,6 +200,7 @@ static int midisynth_subscribe(void *private_data, snd_seq_port_subscribe_t *inf
snd_rawmidi_kernel_release(&msynth->input_rfile);
return err;
}
+ snd_midi_event_reset_encode(msynth->parser);
runtime->event = snd_midi_input_event;
runtime->private_data = msynth;
snd_rawmidi_kernel_read(msynth->input_rfile.input, NULL, 0);
@@ -236,6 +237,7 @@ static int midisynth_use(void *private_data, snd_seq_port_subscribe_t *info)
snd_rawmidi_kernel_release(&msynth->output_rfile);
return err;
}
+ snd_midi_event_reset_decode(msynth->parser);
return 0;
}
diff --git a/sound/core/seq/seq_midi_emul.c b/sound/core/seq/seq_midi_emul.c
index 921cdab10035..4c200a11197d 100644
--- a/sound/core/seq/seq_midi_emul.c
+++ b/sound/core/seq/seq_midi_emul.c
@@ -561,7 +561,7 @@ sysex(snd_midi_op_t *ops, void *private, unsigned char *buf, int len, snd_midi_c
} else if (buf[5] == 0x00 && buf[6] == 0x04) {
/* master volume */
- parsed = SNDRV_MIDI_SYSEX_GS_REVERB_MODE;
+ parsed = SNDRV_MIDI_SYSEX_GS_MASTER_VOLUME;
chset->gs_master_volume = buf[7];
}
diff --git a/sound/core/sgbuf.c b/sound/core/sgbuf.c
index aa8ec299a695..84e79ebc5c80 100644
--- a/sound/core/sgbuf.c
+++ b/sound/core/sgbuf.c
@@ -20,6 +20,7 @@
*/
#include <linux/config.h>
+#include <linux/version.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/vmalloc.h>
diff --git a/sound/core/sound.c b/sound/core/sound.c
index 32ec45f9a27b..ef258b390bf3 100644
--- a/sound/core/sound.c
+++ b/sound/core/sound.c
@@ -20,6 +20,7 @@
*/
#include <sound/driver.h>
+#include <linux/version.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/time.h>
@@ -345,6 +346,8 @@ static int __init alsa_sound_init(void)
#ifdef CONFIG_DEVFS_FS
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
devfs_handle = devfs_mk_dir(NULL, "snd", 3, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,5,67)
+ devfs_handle = devfs_mk_dir(NULL, "snd", NULL);
#else
devfs_handle = devfs_mk_dir("snd");
#endif
diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c
index c0bd191af460..c6f61fd22efb 100644
--- a/sound/drivers/dummy.c
+++ b/sound/drivers/dummy.c
@@ -19,6 +19,7 @@
*/
#include <sound/driver.h>
+#include <linux/version.h>
#include <linux/init.h>
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 0)
#include <linux/jiffies.h>
diff --git a/sound/drivers/opl3/opl3_lib.c b/sound/drivers/opl3/opl3_lib.c
index ad2fc43a6835..ca70674a55ca 100644
--- a/sound/drivers/opl3/opl3_lib.c
+++ b/sound/drivers/opl3/opl3_lib.c
@@ -470,7 +470,7 @@ int snd_opl3_create(snd_card_t * card,
case OPL3_HW_OPL4:
opl3->max_voices = MAX_OPL3_VOICES;
snd_assert(opl3->r_port != 0, snd_opl3_free(opl3); return -ENODEV);
- opl3->command(opl3, OPL3_RIGHT | OPL3_REG_MODE, 0x00); /* Enter OPL2 mode */
+ opl3->command(opl3, OPL3_RIGHT | OPL3_REG_MODE, OPL3_OPL3_ENABLE); /* Enter OPL3 mode */
}
if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, opl3, &ops)) < 0) {
snd_opl3_free(opl3);
diff --git a/sound/drivers/opl3/opl3_seq.c b/sound/drivers/opl3/opl3_seq.c
index 51c0bc311ed8..3f774813480e 100644
--- a/sound/drivers/opl3/opl3_seq.c
+++ b/sound/drivers/opl3/opl3_seq.c
@@ -70,8 +70,6 @@ int snd_opl3_synth_setup(opl3_t * opl3)
opl3->use_time = 0;
opl3->connection_reg = 0x00;
if (opl3->hardware >= OPL3_HW_OPL3) {
- /* Enter OPL3 mode */
- opl3->command(opl3, OPL3_RIGHT | OPL3_REG_MODE, OPL3_OPL3_ENABLE);
/* Clear 4-op connections */
opl3->command(opl3, OPL3_RIGHT | OPL3_REG_CONNECTION_SELECT,
opl3->connection_reg);
@@ -197,7 +195,7 @@ static int snd_opl3_synth_create_port(opl3_t * opl3)
callbacks.private_data = opl3;
opl_ver = (opl3->hardware & OPL3_HW_MASK) >> 8;
- sprintf(name, "OPL%i Port", opl_ver);
+ sprintf(name, "OPL%i FM Port", opl_ver);
opl3->chset->client = opl3->seq_client;
opl3->chset->port = snd_seq_event_port_attach(opl3->seq_client, &callbacks,
diff --git a/sound/drivers/opl3/opl3_synth.c b/sound/drivers/opl3/opl3_synth.c
index 76ee4dc56179..dc6d9e02610c 100644
--- a/sound/drivers/opl3/opl3_synth.c
+++ b/sound/drivers/opl3/opl3_synth.c
@@ -220,9 +220,6 @@ void snd_opl3_reset(opl3_t * opl3)
opl3->command(opl3, opl3_reg, 0x00); /* Note off */
}
- if (opl3->hardware >= OPL3_HW_OPL3)
- opl3->command(opl3, OPL3_RIGHT | OPL3_REG_MODE, 0x00); /* Enter OPL2 mode */
-
opl3->max_voices = MAX_OPL2_VOICES;
opl3->fm_mode = SNDRV_DM_FM_MODE_OPL2;
@@ -426,14 +423,9 @@ static int snd_opl3_set_mode(opl3_t * opl3, int mode)
if ((mode == SNDRV_DM_FM_MODE_OPL3) && (opl3->hardware < OPL3_HW_OPL3))
return -EINVAL;
- if (mode == SNDRV_DM_FM_MODE_OPL3) {
- opl3->command(opl3, OPL3_RIGHT | OPL3_REG_MODE, OPL3_OPL3_ENABLE); /* Enter OPL3 mode */
- opl3->fm_mode = SNDRV_DM_FM_MODE_OPL3;
+ opl3->fm_mode = mode;
+ if (opl3->hardware >= OPL3_HW_OPL3)
opl3->command(opl3, OPL3_RIGHT | OPL3_REG_CONNECTION_SELECT, 0x00); /* Clear 4-op connections */
- } else {
- opl3->command(opl3, OPL3_RIGHT | OPL3_REG_MODE, 0x00); /* Enter OPL2 mode */
- opl3->fm_mode = SNDRV_DM_FM_MODE_OPL2;
- }
return 0;
}
diff --git a/sound/i2c/cs8427.c b/sound/i2c/cs8427.c
index 9be22bad31d0..2dfbcede36dc 100644
--- a/sound/i2c/cs8427.c
+++ b/sound/i2c/cs8427.c
@@ -425,7 +425,7 @@ int snd_cs8427_iec958_active(snd_i2c_device_t *cs8427, int active)
chip = snd_magic_cast(cs8427_t, cs8427->private_data, return -ENXIO);
if (active)
memcpy(chip->playback.pcm_status, chip->playback.def_status, 24);
- chip->playback.pcm_ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ chip->playback.pcm_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(cs8427->bus->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &chip->playback.pcm_ctl->id);
return 0;
diff --git a/sound/i2c/l3/uda1341.c b/sound/i2c/l3/uda1341.c
index 218c2c1d365e..f578b12718b2 100644
--- a/sound/i2c/l3/uda1341.c
+++ b/sound/i2c/l3/uda1341.c
@@ -17,7 +17,7 @@
* 2002-05-12 Tomas Kasparek another code cleanup
*/
-/* $Id: uda1341.c,v 1.7 2003/02/13 19:19:19 perex Exp $ */
+/* $Id: uda1341.c,v 1.8 2003/03/20 16:45:59 perex Exp $ */
#include <sound/driver.h>
#include <linux/module.h>
diff --git a/sound/isa/Kconfig b/sound/isa/Kconfig
index 5eda556d759d..f4966f97d1ef 100644
--- a/sound/isa/Kconfig
+++ b/sound/isa/Kconfig
@@ -41,9 +41,10 @@ config SND_CS4236
config SND_PC98_CS4232
tristate "NEC PC9800 CS4232 driver"
- depends on SND
+ depends on SND && PC9800
help
- Say 'Y' or 'M' to include support for NEC PC-9801/PC-9821 sound cards
+ Say 'Y' or 'M' to include support for NEC PC-9801/PC-9821 on-board
+ soundchip based on CS4232.
config SND_ES968
tristate "Generic ESS ES968 driver"
diff --git a/sound/isa/ad1816a/ad1816a.c b/sound/isa/ad1816a/ad1816a.c
index 6749f4474d22..507796564790 100644
--- a/sound/isa/ad1816a/ad1816a.c
+++ b/sound/isa/ad1816a/ad1816a.c
@@ -22,11 +22,7 @@
#include <linux/init.h>
#include <linux/time.h>
#include <linux/wait.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
#include <sound/core.h>
#define SNDRV_GET_ID
#include <sound/initval.h>
@@ -93,152 +89,111 @@ MODULE_PARM_DESC(dma2, "2nd DMA # for ad1816a driver.");
MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
struct snd_card_ad1816a {
-#ifdef __ISAPNP__
- struct isapnp_dev *dev;
- struct isapnp_dev *devmpu;
-#endif /* __ISAPNP__ */
+ struct pnp_dev *dev;
+ struct pnp_dev *devmpu;
};
-static snd_card_t *snd_ad1816a_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
-
-static struct isapnp_card *snd_ad1816a_isapnp_cards[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_ad1816a_isapnp_id[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-
-#define ISAPNP_AD1816A(_va, _vb, _vc, _device, _fa, _fb, _fc, _audio, _mpu401) \
- { \
- ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
- .devs = { ISAPNP_DEVICE_ID(_fa, _fb, _fc, _audio), \
- ISAPNP_DEVICE_ID(_fa, _fb, _fc, _mpu401), } \
- }
-
-static struct isapnp_card_id snd_ad1816a_pnpids[] __devinitdata = {
- /* Highscreen Sound-Boostar 16 3D */
- ISAPNP_AD1816A('M','D','K',0x1605,'A','D','S',0x7180,0x7181),
- /* Highscreen Sound-Boostar 16 3D - added by Stefan Behnel */
- ISAPNP_AD1816A('L','W','C',0x1061,'A','D','S',0x7180,0x7181),
+static struct pnp_card_device_id snd_ad1816a_pnpids[] __devinitdata = {
/* Analog Devices AD1815 */
- ISAPNP_AD1816A('A','D','S',0x7150,'A','D','S',0x7150,0x7151),
+ { .id = "ADS7150", .devs = { { .id = "ADS7150" }, { .id = "ADS7151" } } },
/* Analog Devices AD1816A - added by Kenneth Platz <kxp@atl.hp.com> */
- ISAPNP_AD1816A('A','D','S',0x7181,'A','D','S',0x7180,0x7181),
- /* Analog Devices AD1816A - Terratec Base 64 */
- ISAPNP_AD1816A('T','E','R',0x1411,'A','D','S',0x7180,0x7181),
- /* Analog Devices AD1816A - Terratec AudioSystem EWS64S */
- ISAPNP_AD1816A('T','E','R',0x1112,'A','D','S',0x7180,0x7181),
+ { .id = "ADS7181", .devs = { { .id = "ADS7180" }, { .id = "ADS7181" } } },
/* Analog Devices AD1816A - Aztech/Newcom SC-16 3D */
- ISAPNP_AD1816A('A','Z','T',0x1022,'A','Z','T',0x1018,0x2002),
+ { .id = "AZT1022", .devs = { { .id = "AZT1018" }, { .id = "AZT2002" } } },
+ /* Highscreen Sound-Boostar 16 3D - added by Stefan Behnel */
+ { .id = "LWC1061", .devs = { { .id = "ADS7180" }, { .id = "ADS7181" } } },
+ /* Highscreen Sound-Boostar 16 3D */
+ { .id = "MDK1605", .devs = { { .id = "ADS7180" }, { .id = "ADS7181" } } },
/* Shark Predator ISA - added by Ken Arromdee */
- ISAPNP_AD1816A('S','M','M',0x7180,'A','D','S',0x7180,0x7181),
- { ISAPNP_CARD_END, }
+ { .id = "SMM7180", .devs = { { .id = "ADS7180" }, { .id = "ADS7181" } } },
+ /* Analog Devices AD1816A - Terratec AudioSystem EWS64S */
+ { .id = "TER1112", .devs = { { .id = "ADS7180" }, { .id = "ADS7181" } } },
+ /* Analog Devices AD1816A - Terratec Base 64 */
+ { .id = "TER1411", .devs = { { .id = "ADS7180" }, { .id = "ADS7181" } } },
+ /* end */
+ { .id = "" }
};
-ISAPNP_CARD_TABLE(snd_ad1816a_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_ad1816a_pnpids);
-#endif /* __ISAPNP__ */
#define DRIVER_NAME "snd-card-ad1816a"
-#ifdef __ISAPNP__
-static int __init snd_card_ad1816a_isapnp(int dev,
- struct snd_card_ad1816a *acard)
+static int __devinit snd_card_ad1816a_pnp(int dev, struct snd_card_ad1816a *acard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
- const struct isapnp_card_id *id = snd_ad1816a_isapnp_id[dev];
- struct isapnp_card *card = snd_ad1816a_isapnp_cards[dev];
- struct isapnp_dev *pdev;
+ struct pnp_dev *pdev;
+ struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
+ int err;
- acard->dev = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
- if (acard->dev->active) {
- acard->dev = NULL;
+ acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
+ if (acard->dev == NULL) {
+ kfree(cfg);
return -EBUSY;
}
- acard->devmpu = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
- if (acard->devmpu->active) {
- acard->dev = acard->devmpu = NULL;
+ acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL);
+ if (acard->devmpu == NULL) {
+ kfree(cfg);
return -EBUSY;
}
pdev = acard->dev;
- if (pdev->prepare(pdev) < 0)
- return -EAGAIN;
+ pnp_init_resource_table(cfg);
if (port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[2], port[dev], 16);
+ pnp_resource_change(&cfg->port_resource[2], port[dev], 16);
if (fm_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[1], fm_port[dev], 4);
+ pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
if (dma1[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], dma1[dev],
- 1);
+ pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
if (dma2[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[1], dma2[dev],
- 1);
+ pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
if (irq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], irq[dev], 1);
-
- if (pdev->activate(pdev) < 0) {
- printk(KERN_ERR PFX "AUDIO isapnp configure failure\n");
+ pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
+
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ printk(KERN_ERR PFX "AUDIO PnP configure failure\n");
+ kfree(cfg);
return -EBUSY;
}
- port[dev] = pdev->resource[2].start;
- fm_port[dev] = pdev->resource[1].start;
- dma1[dev] = pdev->dma_resource[0].start;
- dma2[dev] = pdev->dma_resource[1].start;
- irq[dev] = pdev->irq_resource[0].start;
+ port[dev] = pnp_port_start(pdev, 2);
+ fm_port[dev] = pnp_port_start(pdev, 1);
+ dma1[dev] = pnp_dma(pdev, 0);
+ dma2[dev] = pnp_dma(pdev, 1);
+ irq[dev] = pnp_irq(pdev, 0);
pdev = acard->devmpu;
- if (pdev == NULL || pdev->prepare(pdev) < 0) {
- mpu_port[dev] = -1;
- acard->devmpu = NULL;
- return 0;
- }
+ pnp_init_resource_table(cfg);
if (mpu_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], mpu_port[dev],
- 2);
+ pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], mpu_irq[dev],
- 1);
+ pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
- if (pdev->activate(pdev) < 0) {
- /* not fatal error */
- printk(KERN_ERR PFX "MPU-401 isapnp configure failure\n");
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ printk(KERN_ERR PFX "MPU401 PnP configure failure\n");
mpu_port[dev] = -1;
acard->devmpu = NULL;
} else {
- mpu_port[dev] = pdev->resource[0].start;
- mpu_irq[dev] = pdev->irq_resource[0].start;
+ mpu_port[dev] = pnp_port_start(pdev, 0);
+ mpu_irq[dev] = pnp_irq(pdev, 0);
}
+ kfree(cfg);
return 0;
}
-static void snd_card_ad1816a_deactivate(struct snd_card_ad1816a *acard)
-{
- if (acard->dev) {
- acard->dev->deactivate(acard->dev);
- acard->dev = NULL;
- }
- if (acard->devmpu) {
- acard->devmpu->deactivate(acard->devmpu);
- acard->devmpu = NULL;
- }
-}
-#endif /* __ISAPNP__ */
-
-static void snd_card_ad1816a_free(snd_card_t *card)
-{
- struct snd_card_ad1816a *acard = (struct snd_card_ad1816a *)card->private_data;
-
- if (acard) {
-#ifdef __ISAPNP__
- snd_card_ad1816a_deactivate(acard);
-#endif /* __ISAPNP__ */
- }
-}
-
-static int __init snd_card_ad1816a_probe(int dev)
+static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
int error;
snd_card_t *card;
@@ -250,17 +205,11 @@ static int __init snd_card_ad1816a_probe(int dev)
sizeof(struct snd_card_ad1816a))) == NULL)
return -ENOMEM;
acard = (struct snd_card_ad1816a *)card->private_data;
- card->private_free = snd_card_ad1816a_free;
-#ifdef __ISAPNP__
- if ((error = snd_card_ad1816a_isapnp(dev, acard))) {
+ if ((error = snd_card_ad1816a_pnp(dev, acard, pcard, pid))) {
snd_card_free(card);
return error;
}
-#else
- printk(KERN_ERR PFX "you have to enable ISA PnP support.\n");
- return -ENOSYS;
-#endif /* __ISAPNP__ */
if ((error = snd_ad1816a_create(card, port[dev],
irq[dev],
@@ -314,13 +263,12 @@ static int __init snd_card_ad1816a_probe(int dev)
snd_card_free(card);
return error;
}
- snd_ad1816a_cards[dev] = card;
+ pnp_set_card_drvdata(pcard, card);
return 0;
}
-#ifdef __ISAPNP__
-static int __init snd_ad1816a_isapnp_detect(struct isapnp_card *card,
- const struct isapnp_card_id *id)
+static int __devinit snd_ad1816a_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
@@ -328,9 +276,7 @@ static int __init snd_ad1816a_isapnp_detect(struct isapnp_card *card,
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev])
continue;
- snd_ad1816a_isapnp_cards[dev] = card;
- snd_ad1816a_isapnp_id[dev] = id;
- res = snd_card_ad1816a_probe(dev);
+ res = snd_card_ad1816a_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -338,17 +284,28 @@ static int __init snd_ad1816a_isapnp_detect(struct isapnp_card *card,
}
return -ENODEV;
}
-#endif
+
+static void __devexit snd_ad1816a_pnp_remove(struct pnp_card_link * pcard)
+{
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver ad1816a_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "ad1816a",
+ .id_table = snd_ad1816a_pnpids,
+ .probe = snd_ad1816a_pnp_detect,
+ .remove = __devexit_p(snd_ad1816a_pnp_remove),
+};
static int __init alsa_card_ad1816a_init(void)
{
int cards = 0;
-#ifdef __ISAPNP__
- cards += isapnp_probe_cards(snd_ad1816a_pnpids, snd_ad1816a_isapnp_detect);
-#else
- printk(KERN_ERR PFX "you have to enable ISA PnP support.\n");
-#endif
+ cards += pnp_register_card_driver(&ad1816a_pnpc_driver);
#ifdef MODULE
if (!cards)
printk(KERN_ERR "no AD1816A based soundcards found.\n");
@@ -358,10 +315,7 @@ static int __init alsa_card_ad1816a_init(void)
static void __exit alsa_card_ad1816a_exit(void)
{
- int dev;
-
- for (dev = 0; dev < SNDRV_CARDS; dev++)
- snd_card_free(snd_ad1816a_cards[dev]);
+ pnp_unregister_card_driver(&ad1816a_pnpc_driver);
}
module_init(alsa_card_ad1816a_init)
diff --git a/sound/isa/als100.c b/sound/isa/als100.c
index c17661774af3..b8a3ef24bfdb 100644
--- a/sound/isa/als100.c
+++ b/sound/isa/als100.c
@@ -100,15 +100,15 @@ struct snd_card_als100 {
static struct pnp_card_device_id snd_als100_pnpids[] __devinitdata = {
/* ALS100 - PRO16PNP */
- { .id = "ALS0001", .devs = { { "@@@0001" }, { "@X@0001" }, { "@H@0001" }, } },
+ { .id = "ALS0001", .devs = { { "@@@0001" }, { "@X@0001" }, { "@H@0001" } } },
/* ALS110 - MF1000 - Digimate 3D Sound */
- { .id = "ALS0110", .devs = { { "@@@1001" }, { "@X@1001" }, { "@H@1001" }, } },
+ { .id = "ALS0110", .devs = { { "@@@1001" }, { "@X@1001" }, { "@H@1001" } } },
/* ALS120 */
- { .id = "ALS0120", .devs = { { "@@@2001" }, { "@X@2001" }, { "@H@2001" }, } },
+ { .id = "ALS0120", .devs = { { "@@@2001" }, { "@X@2001" }, { "@H@2001" } } },
/* ALS200 */
- { .id = "ALS0200", .devs = { { "@@@0020" }, { "@X@0020" }, { "@H@0001" }, } },
+ { .id = "ALS0200", .devs = { { "@@@0020" }, { "@X@0020" }, { "@H@0001" } } },
/* RTL3000 */
- { .id = "RTL3000", .devs = { { "@@@2001" }, { "@X@2001" }, { "@H@2001" }, } },
+ { .id = "RTL3000", .devs = { { "@@@2001" }, { "@X@2001" }, { "@H@2001" } } },
{ .id = "", } /* end */
};
@@ -116,13 +116,14 @@ MODULE_DEVICE_TABLE(pnp_card, snd_als100_pnpids);
#define DRIVER_NAME "snd-card-als100"
-static int __devinit snd_card_als100_isapnp(int dev, struct snd_card_als100 *acard,
- struct pnp_card_link *card,
- const struct pnp_card_device_id *id)
+static int __devinit snd_card_als100_pnp(int dev, struct snd_card_als100 *acard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
int err;
+
if (!cfg)
return -ENOMEM;
acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
@@ -146,11 +147,11 @@ static int __devinit snd_card_als100_isapnp(int dev, struct snd_card_als100 *aca
pnp_resource_change(&cfg->dma_resource[1], dma16[dev], 1);
if (irq[dev] != SNDRV_AUTO_IRQ)
pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
- printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
+ snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
kfree(cfg);
return err;
}
@@ -167,7 +168,7 @@ static int __devinit snd_card_als100_isapnp(int dev, struct snd_card_als100 *aca
if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0)
goto __mpu_error;
@@ -177,7 +178,7 @@ static int __devinit snd_card_als100_isapnp(int dev, struct snd_card_als100 *aca
__mpu_error:
if (pdev) {
pnp_release_card_device(pdev);
- printk(KERN_ERR PFX "MPU401 pnp configure failure, skipping\n");
+ snd_printk(KERN_ERR PFX "MPU401 pnp configure failure, skipping\n");
}
acard->devmpu = NULL;
mpu_port[dev] = -1;
@@ -189,7 +190,7 @@ static int __devinit snd_card_als100_isapnp(int dev, struct snd_card_als100 *aca
if (fm_port[dev] != SNDRV_AUTO_PORT)
pnp_resource_change(&cfg->port_resource[0], fm_port[dev], 4);
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "OPL3 the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "OPL3 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0)
goto __fm_error;
@@ -198,7 +199,7 @@ static int __devinit snd_card_als100_isapnp(int dev, struct snd_card_als100 *aca
__fm_error:
if (pdev) {
pnp_release_card_device(pdev);
- printk(KERN_ERR PFX "OPL3 pnp configure failure, skipping\n");
+ snd_printk(KERN_ERR PFX "OPL3 pnp configure failure, skipping\n");
}
acard->devopl = NULL;
fm_port[dev] = -1;
@@ -223,7 +224,7 @@ static int __init snd_card_als100_probe(int dev,
return -ENOMEM;
acard = (struct snd_card_als100 *)card->private_data;
- if ((error = snd_card_als100_isapnp(dev, acard, pcard, pid))) {
+ if ((error = snd_card_als100_pnp(dev, acard, pcard, pid))) {
snd_card_free(card);
return error;
}
@@ -253,15 +254,15 @@ static int __init snd_card_als100_probe(int dev,
mpu_port[dev], 0,
mpu_irq[dev], SA_INTERRUPT,
NULL) < 0)
- printk(KERN_ERR PFX "no MPU-401 device at 0x%lx\n", mpu_port[dev]);
+ snd_printk(KERN_ERR PFX "no MPU-401 device at 0x%lx\n", mpu_port[dev]);
}
if (fm_port[dev] > 0) {
if (snd_opl3_create(card,
fm_port[dev], fm_port[dev] + 2,
OPL3_HW_AUTO, 0, &opl3) < 0) {
- printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx\n",
- fm_port[dev], fm_port[dev] + 2);
+ snd_printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx\n",
+ fm_port[dev], fm_port[dev] + 2);
} else {
if ((error = snd_opl3_timer_new(opl3, 0, 1)) < 0) {
snd_card_free(card);
@@ -328,7 +329,7 @@ static int __init alsa_card_als100_init(void)
cards += pnp_register_card_driver(&als100_pnpc_driver);
#ifdef MODULE
if (!cards)
- printk(KERN_ERR "no ALS100 based soundcards found\n");
+ snd_printk(KERN_ERR "no ALS100 based soundcards found\n");
#endif
return cards ? 0 : -ENODEV;
}
diff --git a/sound/isa/azt2320.c b/sound/isa/azt2320.c
index 37c68dd94cbb..16073b5795cc 100644
--- a/sound/isa/azt2320.c
+++ b/sound/isa/azt2320.c
@@ -132,9 +132,9 @@ MODULE_DEVICE_TABLE(pnp_card, snd_azt2320_pnpids);
#define DRIVER_NAME "snd-card-azt2320"
-static int __init snd_card_azt2320_isapnp(int dev, struct snd_card_azt2320 *acard,
- struct pnp_card_link *card,
- const struct pnp_card_device_id *id)
+static int __devinit snd_card_azt2320_pnp(int dev, struct snd_card_azt2320 *acard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
@@ -168,11 +168,11 @@ static int __init snd_card_azt2320_isapnp(int dev, struct snd_card_azt2320 *acar
if (irq[dev] != SNDRV_AUTO_IRQ)
pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
- printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
+ snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
kfree(cfg);
return err;
}
@@ -191,7 +191,7 @@ static int __init snd_card_azt2320_isapnp(int dev, struct snd_card_azt2320 *acar
if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0)
goto __mpu_error;
@@ -201,7 +201,7 @@ static int __init snd_card_azt2320_isapnp(int dev, struct snd_card_azt2320 *acar
__mpu_error:
if (pdev) {
pnp_release_card_device(pdev);
- printk(KERN_ERR PFX "MPU401 pnp configure failure, skipping\n");
+ snd_printk(KERN_ERR PFX "MPU401 pnp configure failure, skipping\n");
}
acard->devmpu = NULL;
mpu_port[dev] = -1;
@@ -212,13 +212,13 @@ static int __init snd_card_azt2320_isapnp(int dev, struct snd_card_azt2320 *acar
}
/* same of snd_sbdsp_command by Jaroslav Kysela */
-static int __init snd_card_azt2320_command(unsigned long port, unsigned char val)
+static int __devinit snd_card_azt2320_command(unsigned long port, unsigned char val)
{
int i;
unsigned long limit;
limit = jiffies + HZ / 10;
- for (i = 50000; i && (limit - jiffies) > 0; i--)
+ for (i = 50000; i && time_after(limit, jiffies); i--)
if (!(inb(port + 0x0c) & 0x80)) {
outb(val, port + 0x0c);
return 0;
@@ -226,7 +226,7 @@ static int __init snd_card_azt2320_command(unsigned long port, unsigned char val
return -EBUSY;
}
-static int __init snd_card_azt2320_enable_wss(unsigned long port)
+static int __devinit snd_card_azt2320_enable_wss(unsigned long port)
{
int error;
@@ -239,9 +239,9 @@ static int __init snd_card_azt2320_enable_wss(unsigned long port)
return 0;
}
-static int __init snd_card_azt2320_probe(int dev,
- struct pnp_card_link *pcard,
- const struct pnp_card_device_id *pid)
+static int __devinit snd_card_azt2320_probe(int dev,
+ struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
int error;
snd_card_t *card;
@@ -254,7 +254,7 @@ static int __init snd_card_azt2320_probe(int dev,
return -ENOMEM;
acard = (struct snd_card_azt2320 *)card->private_data;
- if ((error = snd_card_azt2320_isapnp(dev, acard, pcard, pid))) {
+ if ((error = snd_card_azt2320_pnp(dev, acard, pcard, pid))) {
snd_card_free(card);
return error;
}
@@ -291,16 +291,15 @@ static int __init snd_card_azt2320_probe(int dev,
mpu_port[dev], 0,
mpu_irq[dev], SA_INTERRUPT,
NULL) < 0)
- printk(KERN_ERR PFX "no MPU-401 device at 0x%lx\n",
- mpu_port[dev]);
+ snd_printk(KERN_ERR PFX "no MPU-401 device at 0x%lx\n", mpu_port[dev]);
}
if (fm_port[dev] > 0) {
if (snd_opl3_create(card,
fm_port[dev], fm_port[dev] + 2,
OPL3_HW_AUTO, 0, &opl3) < 0) {
- printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx\n",
- fm_port[dev], fm_port[dev] + 2);
+ snd_printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx\n",
+ fm_port[dev], fm_port[dev] + 2);
} else {
if ((error = snd_opl3_timer_new(opl3, 1, 2)) < 0) {
snd_card_free(card);
@@ -326,8 +325,8 @@ static int __init snd_card_azt2320_probe(int dev,
return 0;
}
-static int __init snd_azt2320_pnp_detect(struct pnp_card_link *card,
- const struct pnp_card_device_id *id)
+static int __devinit snd_azt2320_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
@@ -335,7 +334,7 @@ static int __init snd_azt2320_pnp_detect(struct pnp_card_link *card,
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev])
continue;
- res = snd_card_azt2320_probe(dev,card,id);
+ res = snd_card_azt2320_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -364,15 +363,10 @@ static int __init alsa_card_azt2320_init(void)
{
int cards = 0;
-#ifdef __ISAPNP__
- cards += isapnp_probe_cards(snd_azt2320_pnpids, snd_azt2320_isapnp_detect);
-#else
- printk(KERN_ERR PFX "you have to enable ISA PnP support.\n");
-#endif
cards += pnp_register_card_driver(&azt2320_pnpc_driver);
#ifdef MODULE
if (!cards)
- printk(KERN_ERR "no AZT2320 based soundcards found\n");
+ snd_printk(KERN_ERR "no AZT2320 based soundcards found\n");
#endif
return cards ? 0 : -ENODEV;
}
diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
index 3f198595dbde..df6396337a85 100644
--- a/sound/isa/cmi8330.c
+++ b/sound/isa/cmi8330.c
@@ -46,11 +46,7 @@
#include <sound/driver.h>
#include <linux/init.h>
#include <linux/slab.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
#include <sound/core.h>
#include <sound/ad1848.h>
#include <sound/sb.h>
@@ -73,7 +69,7 @@ MODULE_DEVICES("{{C-Media,CMI8330,isapnp:{CMI0001,@@@0001,@X@0001}}}");
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_ISAPNP;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
static int isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
#endif
static long sbport[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;
@@ -93,9 +89,9 @@ MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(enable, "Enable CMI8330 soundcard.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
-MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
+MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
#endif
@@ -156,9 +152,9 @@ static unsigned char snd_cmi8330_image[((CMI8330_CDINGAIN)-16) + 1] =
typedef int (*snd_pcm_open_callback_t)(snd_pcm_substream_t *);
struct snd_cmi8330 {
-#ifdef __ISAPNP__
- struct isapnp_dev *cap;
- struct isapnp_dev *play;
+#ifdef CONFIG_PNP
+ struct pnp_dev *cap;
+ struct pnp_dev *play;
#endif
snd_card_t *card;
ad1848_t *wss;
@@ -172,27 +168,16 @@ struct snd_cmi8330 {
} streams[2];
};
-static snd_card_t *snd_cmi8330_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
-
-static struct isapnp_card *snd_cmi8330_isapnp_cards[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_cmi8330_isapnp_id[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
+static snd_card_t *snd_cmi8330_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-#define ISAPNP_CMI8330(_va, _vb, _vc, _device, _audio1, _audio2) \
- { \
- ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
- .devs = { ISAPNP_DEVICE_ID('@', '@', '@', _audio1), \
- ISAPNP_DEVICE_ID('@', 'X', '@', _audio2), } \
- }
+#ifdef CONFIG_PNP
-static struct isapnp_card_id snd_cmi8330_pnpids[] __devinitdata =
-{
- ISAPNP_CMI8330('C','M','I',0x0001,0x0001,0x0001),
- { ISAPNP_CARD_END, }
+static struct pnp_card_device_id snd_cmi8330_pnpids[] __devinitdata = {
+ { .id = "CMI0001", .devs = { { "@@@0001" }, { "@X@0001" } } },
+ { .id = "" }
};
-ISAPNP_CARD_TABLE(snd_cmi8330_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_cmi8330_pnpids);
#endif
@@ -258,7 +243,7 @@ static unsigned char cmi8330_sb_init_values[][2] __initdata = {
};
-static int __init cmi8330_add_sb_mixers(sb_t *chip)
+static int __devinit cmi8330_add_sb_mixers(sb_t *chip)
{
int idx, err;
unsigned long flags;
@@ -283,7 +268,7 @@ static int __init cmi8330_add_sb_mixers(sb_t *chip)
}
#endif
-static int __init snd_cmi8330_mixer(snd_card_t *card, struct snd_cmi8330 *acard)
+static int __devinit snd_cmi8330_mixer(snd_card_t *card, struct snd_cmi8330 *acard)
{
unsigned int idx;
int err;
@@ -302,82 +287,78 @@ static int __init snd_cmi8330_mixer(snd_card_t *card, struct snd_cmi8330 *acard)
return 0;
}
-#ifdef __ISAPNP__
-static int __init snd_cmi8330_isapnp(int dev, struct snd_cmi8330 *acard)
+#ifdef CONFIG_PNP
+static int __devinit snd_cmi8330_pnp(int dev, struct snd_cmi8330 *acard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
- const struct isapnp_card_id *id = snd_cmi8330_isapnp_id[dev];
- struct isapnp_card *card = snd_cmi8330_isapnp_cards[dev];
- struct isapnp_dev *pdev;
+ struct pnp_dev *pdev;
+ struct pnp_resource_table * cfg = kmalloc(GFP_ATOMIC, sizeof(struct pnp_resource_table));
+ int err;
- acard->cap = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
- if (acard->cap->active) {
- acard->cap = NULL;
+ acard->cap = pnp_request_card_device(card, id->devs[0].id, NULL);
+ if (acard->cap == NULL) {
+ kfree(cfg);
return -EBUSY;
}
- acard->play = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
- if (acard->play->active) {
- acard->cap = acard->play = NULL;
+ acard->play = pnp_request_card_device(card, id->devs[1].id, NULL);
+ if (acard->play == NULL) {
+ kfree(cfg);
return -EBUSY;
}
pdev = acard->cap;
- if (pdev->prepare(pdev)<0)
- return -EAGAIN;
+ pnp_init_resource_table(cfg);
/* allocate AD1848 resources */
if (wssport[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], wssport[dev], 8);
+ pnp_resource_change(&cfg->port_resource[0], wssport[dev], 8);
if (wssdma[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], wssdma[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[0], wssdma[dev], 1);
if (wssirq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], wssirq[dev], 1);
-
- if (pdev->activate(pdev)<0) {
- snd_printk("(AD1848) PnP configure failure\n");
+ pnp_resource_change(&cfg->irq_resource[0], wssirq[dev], 1);
+
+ err = pnp_manual_config_dev(pdev, cfg, 0);
+ if (err < 0)
+ snd_printk(KERN_ERR "CMI8330/C3D (AD1848) PnP manual resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR "CMI8330/C3D (AD1848) PnP configure failure\n");
+ kfree(cfg);
return -EBUSY;
}
- wssport[dev] = pdev->resource[0].start;
- wssdma[dev] = pdev->dma_resource[0].start;
- wssirq[dev] = pdev->irq_resource[0].start;
+ wssport[dev] = pnp_port_start(pdev, 0);
+ wssdma[dev] = pnp_dma(pdev, 0);
+ wssirq[dev] = pnp_irq(pdev, 0);
/* allocate SB16 resources */
pdev = acard->play;
- if (pdev->prepare(pdev)<0) {
- acard->cap->deactivate(acard->cap);
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
if (sbport[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], sbport[dev], 16);
+ pnp_resource_change(&cfg->port_resource[0], sbport[dev], 16);
if (sbdma8[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], sbdma8[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[0], sbdma8[dev], 1);
if (sbdma16[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[1], sbdma16[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[1], sbdma16[dev], 1);
if (sbirq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], sbirq[dev], 1);
-
- if (pdev->activate(pdev)<0) {
- snd_printk("CMI8330/C3D (SB16) PnP configure failure\n");
- acard->cap->deactivate(acard->cap);
+ pnp_resource_change(&cfg->irq_resource[0], sbirq[dev], 1);
+
+ err = pnp_manual_config_dev(pdev, cfg, 0);
+ if (err < 0)
+ snd_printk(KERN_ERR "CMI8330/C3D (SB16) PnP manual resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR "CMI8330/C3D (SB16) PnP configure failure\n");
+ kfree(cfg);
return -EBUSY;
}
- sbport[dev] = pdev->resource[0].start;
- sbdma8[dev] = pdev->dma_resource[0].start;
- sbdma16[dev] = pdev->dma_resource[1].start;
- sbirq[dev] = pdev->irq_resource[0].start;
+ sbport[dev] = pnp_port_start(pdev, 0);
+ sbdma8[dev] = pnp_dma(pdev, 0);
+ sbdma16[dev] = pnp_dma(pdev, 1);
+ sbirq[dev] = pnp_irq(pdev, 0);
+ kfree(cfg);
return 0;
}
-
-static void snd_cmi8330_deactivate(struct snd_cmi8330 *acard)
-{
- if (acard->cap) {
- acard->cap->deactivate(acard->cap);
- acard->cap = NULL;
- }
- if (acard->play) {
- acard->play->deactivate(acard->play);
- acard->play = NULL;
- }
-}
#endif
/*
@@ -424,7 +405,7 @@ static void snd_cmi8330_pcm_free(snd_pcm_t *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm);
}
-static int __init snd_cmi8330_pcm(snd_card_t *card, struct snd_cmi8330 *chip)
+static int __devinit snd_cmi8330_pcm(snd_card_t *card, struct snd_cmi8330 *chip)
{
snd_pcm_t *pcm;
const snd_pcm_ops_t *ops;
@@ -467,25 +448,16 @@ static int __init snd_cmi8330_pcm(snd_card_t *card, struct snd_cmi8330 *chip)
/*
*/
-static void snd_cmi8330_free(snd_card_t *card)
-{
- struct snd_cmi8330 *acard = (struct snd_cmi8330 *)card->private_data;
-
- if (acard) {
-#ifdef __ISAPNP__
- snd_cmi8330_deactivate(acard);
-#endif
- }
-}
-
-static int __init snd_cmi8330_probe(int dev)
+static int __devinit snd_cmi8330_probe(int dev,
+ struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
snd_card_t *card;
struct snd_cmi8330 *acard;
unsigned long flags;
int i, err;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (!isapnp[dev]) {
#endif
if (wssport[dev] == SNDRV_AUTO_PORT) {
@@ -496,7 +468,7 @@ static int __init snd_cmi8330_probe(int dev)
snd_printk("specify sbport\n");
return -EINVAL;
}
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
}
#endif
card = snd_card_new(index[dev], id[dev], THIS_MODULE,
@@ -507,10 +479,9 @@ static int __init snd_cmi8330_probe(int dev)
}
acard = (struct snd_cmi8330 *)card->private_data;
acard->card = card;
- card->private_free = snd_cmi8330_free;
-#ifdef __ISAPNP__
- if (isapnp[dev] && (err = snd_cmi8330_isapnp(dev, acard)) < 0) {
+#ifdef CONFIG_PNP
+ if (isapnp[dev] && (err = snd_cmi8330_pnp(dev, acard, pcard, pid)) < 0) {
snd_printk("PnP detection failed\n");
snd_card_free(card);
return err;
@@ -580,21 +551,16 @@ static int __init snd_cmi8330_probe(int dev)
return err;
}
- snd_cmi8330_cards[dev] = card;
+ if (pcard)
+ pnp_set_card_drvdata(pcard, card);
+ else
+ snd_cmi8330_legacy[dev] = card;
return 0;
}
-static void __exit alsa_card_cmi8330_exit(void)
-{
- int i;
-
- for (i = 0; i < SNDRV_CARDS; i++)
- snd_card_free(snd_cmi8330_cards[i]);
-}
-
-#ifdef __ISAPNP__
-static int __init snd_cmi8330_isapnp_detect(struct isapnp_card *card,
- const struct isapnp_card_id *id)
+#ifdef CONFIG_PNP
+static int __devinit snd_cmi8330_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
@@ -602,9 +568,7 @@ static int __init snd_cmi8330_isapnp_detect(struct isapnp_card *card,
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || !isapnp[dev])
continue;
- snd_cmi8330_isapnp_cards[dev] = card;
- snd_cmi8330_isapnp_id[dev] = id;
- res = snd_cmi8330_probe(dev);
+ res = snd_cmi8330_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -612,7 +576,23 @@ static int __init snd_cmi8330_isapnp_detect(struct isapnp_card *card,
}
return -ENODEV;
}
-#endif /* __ISAPNP__ */
+
+static void __devexit snd_cmi8330_pnp_remove(struct pnp_card_link * pcard)
+{
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver cmi8330_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "cmi8330",
+ .id_table = snd_cmi8330_pnpids,
+ .probe = snd_cmi8330_pnp_detect,
+ .remove = __devexit_p(snd_cmi8330_pnp_remove),
+};
+#endif /* CONFIG_PNP */
static int __init alsa_card_cmi8330_init(void)
{
@@ -621,26 +601,38 @@ static int __init alsa_card_cmi8330_init(void)
for (dev = 0; dev < SNDRV_CARDS; dev++) {
if (!enable[dev])
continue;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (isapnp[dev])
continue;
#endif
- if (snd_cmi8330_probe(dev) >= 0)
+ if (snd_cmi8330_probe(dev, NULL, NULL) >= 0)
cards++;
}
-#ifdef __ISAPNP__
- cards += isapnp_probe_cards(snd_cmi8330_pnpids, snd_cmi8330_isapnp_detect);
+#ifdef CONFIG_PNP
+ cards += pnp_register_card_driver(&cmi8330_pnpc_driver);
#endif
if (!cards) {
#ifdef MODULE
- printk(KERN_ERR "CMI8330 not found or device busy\n");
+ snd_printk(KERN_ERR "CMI8330 not found or device busy\n");
#endif
return -ENODEV;
}
return 0;
}
+static void __exit alsa_card_cmi8330_exit(void)
+{
+ int i;
+
+#ifdef CONFIG_PNP
+ /* PnP cards first */
+ pnp_unregister_card_driver(&cmi8330_pnpc_driver);
+#endif
+ for (i = 0; i < SNDRV_CARDS; i++)
+ snd_card_free(snd_cmi8330_legacy[i]);
+}
+
module_init(alsa_card_cmi8330_init)
module_exit(alsa_card_cmi8330_exit)
@@ -670,7 +662,7 @@ static int __init alsa_card_cmi8330_setup(char *str)
get_option(&str,(int *)&wssport[nr_dev]) == 2 &&
get_option(&str,&wssirq[nr_dev]) == 2 &&
get_option(&str,&wssdma[nr_dev]) == 2);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (pnp != INT_MAX)
isapnp[nr_dev] = pnp;
#endif
diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
index e65934c09668..abbffcd76333 100644
--- a/sound/isa/cs423x/cs4236.c
+++ b/sound/isa/cs423x/cs4236.c
@@ -22,11 +22,7 @@
#include <sound/driver.h>
#include <linux/init.h>
#include <linux/slab.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
#include <sound/core.h>
#include <sound/cs4231.h>
#include <sound/mpu401.h>
@@ -87,7 +83,7 @@ MODULE_DEVICES("{{Crystal Semiconductors,CS4235},"
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_ISAPNP; /* Enable this card */
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
static int isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
#endif
static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* PnP setup */
@@ -109,7 +105,7 @@ MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(enable, "Enable " IDENT " soundcard.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
@@ -144,19 +140,16 @@ MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);
struct snd_card_cs4236 {
struct resource *res_sb_port;
-#ifdef __ISAPNP__
- struct isapnp_dev *wss;
- struct isapnp_dev *ctrl;
- struct isapnp_dev *mpu;
+#ifdef CONFIG_PNP
+ struct pnp_dev *wss;
+ struct pnp_dev *ctrl;
+ struct pnp_dev *mpu;
#endif
};
-static snd_card_t *snd_cs4236_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
+static snd_card_t *snd_cs4236_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-static struct isapnp_card *snd_cs4236_isapnp_cards[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_cs4236_isapnp_id[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
+#ifdef CONFIG_PNP
#define ISAPNP_CS4232(_va, _vb, _vc, _device, _wss, _ctrl, _mpu401) \
{ \
@@ -181,156 +174,162 @@ static const struct isapnp_card_id *snd_cs4236_isapnp_id[SNDRV_CARDS] __devinitd
#ifdef CS4232
-static struct isapnp_card_id snd_card_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_cs423x_pnpids[] __devinitdata = {
/* Philips PCA70PS */
- ISAPNP_CS4232_1('C','S','C',0x0d32,0x0000,0x0010,0xb006),
+ { .id = "CSC0d32", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPb006" } } },
/* TerraTec Maestro 32/96 (CS4232) */
- ISAPNP_CS4232('C','S','C',0x1a32,0x0000,0x0010,0x0003),
+ { .id = "CSC1a32", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* HP Omnibook 5500 onboard */
- ISAPNP_CS4232('C','S','C',0x4232,0x0000,0x0002,0x0003),
+ { .id = "CSC4232", .devs = { { "CSC0000" }, { "CSC0002" }, { "CSC0003" } } },
/* Unnamed CS4236 card (Made in Taiwan) */
- ISAPNP_CS4232('C','S','C',0x4236,0x0000,0x0010,0x0003),
+ { .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Turtle Beach TBS-2000 (CS4232) */
- ISAPNP_CS4232('C','S','C',0x7532,0x0000,0x0010,0xb006),
+ { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSCb006" } } },
/* Turtle Beach Tropez Plus (CS4232) */
- ISAPNP_CS4232_1('C','S','C',0x7632,0x0000,0x0010,0xb006),
+ { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PNPb006" } } },
/* SIC CrystalWave 32 (CS4232) */
- ISAPNP_CS4232('C','S','C',0xf032,0x0000,0x0010,0x0003),
+ { .id = "CSCf032", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* --- */
- { ISAPNP_CARD_END, } /* end */
+ { .id = "" } /* end */
};
#else /* CS4236 */
-static struct isapnp_card_id snd_card_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_cs423x_pnpids[] __devinitdata = {
/* Intel Marlin Spike Motherboard - CS4235 */
- ISAPNP_CS4232('C','S','C',0x0225,0x0000,0x0010,0x0003),
+ { .id = "CSC0225", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Intel Marlin Spike Motherboard (#2) - CS4235 */
- ISAPNP_CS4232('C','S','C',0x0225,0x0100,0x0110,0x0103),
+ { .id = "CSC0225", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC0103" } } },
/* Genius Sound Maker 3DJ - CS4237B */
- ISAPNP_CS4232('C','S','C',0x0437,0x0000,0x0010,0x0003),
+ { .id = "CSC0437", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Digital PC 5000 Onboard - CS4236B */
- ISAPNP_CS4232_WOMPU('C','S','C',0x0735,0x0000,0x0010),
+ { .id = "CSC0735", .devs = { { "CSC0000" }, { "CSC0010" } } },
/* some uknown CS4236B */
- ISAPNP_CS4232('C','S','C',0x0b35,0x0000,0x0010,0x0003),
+ { .id = "CSC0b35", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Intel PR440FX Onboard sound */
- ISAPNP_CS4232('C','S','C',0x0b36,0x0000,0x0010,0x0003),
+ { .id = "CSC0b36", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4235 on mainboard without MPU */
- ISAPNP_CS4232_WOMPU('C','S','C',0x1425,0x0100,0x0110),
+ { .id = "CSC1425", .devs = { { "CSC0100" }, { "CSC0110" } } },
/* Gateway E1000 Onboard CS4236B */
- ISAPNP_CS4232('C','S','C',0x1335,0x0000,0x0010,0x0003),
+ { .id = "CSC1335", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* HP 6330 Onboard sound */
- ISAPNP_CS4232('C','S','C',0x1525,0x0100,0x0110,0x0103),
+ { .id = "CSC1525", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC0103" } } },
/* Crystal Computer TidalWave128 */
- ISAPNP_CS4232('C','S','C',0x1e37,0x0000,0x0010,0x0003),
+ { .id = "CSC1e37", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* ACER AW37 - CS4235 */
- ISAPNP_CS4232('C','S','C',0x4236,0x0000,0x0010,0x0003),
+ { .id = "CSC4236", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* build-in soundcard in EliteGroup P5TX-LA motherboard - CS4237B */
- ISAPNP_CS4232('C','S','C',0x4237,0x0000,0x0010,0x0003),
+ { .id = "CSC4237", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Crystal 3D - CS4237B */
- ISAPNP_CS4232('C','S','C',0x4336,0x0000,0x0010,0x0003),
+ { .id = "CSC4336", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Typhoon Soundsystem PnP - CS4236B */
- ISAPNP_CS4232('C','S','C',0x4536,0x0000,0x0010,0x0003),
+ { .id = "CSC4536", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Crystal CX4235-XQ3 EP - CS4235 */
- ISAPNP_CS4232('C','S','C',0x4625,0x0100,0x0110,0x0103),
- /* TerraTec AudioSystem EWS64XL - CS4236B */
- ISAPNP_CS4232('C','S','C',0xa836,0xa800,0xa810,0xa803),
- /* TerraTec AudioSystem EWS64XL - CS4236B */
- ISAPNP_CS4232_WOMPU('C','S','C',0xa836,0xa800,0xa810),
+ { .id = "CSC4625", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC0103" } } },
/* Crystal Semiconductors CS4237B */
- ISAPNP_CS4232('C','S','C',0x4637,0x0000,0x0010,0x0003),
+ { .id = "CSC4637", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* NewClear 3D - CX4237B-XQ3 */
- ISAPNP_CS4232('C','S','C',0x4837,0x0000,0x0010,0x0003),
+ { .id = "CSC4837", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Dell Optiplex GX1 - CS4236B */
- ISAPNP_CS4232('C','S','C',0x6835,0x0000,0x0010,0x0003),
+ { .id = "CSC6835", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Dell P410 motherboard - CS4236B */
- ISAPNP_CS4232_WOMPU('C','S','C',0x6835,0x0000,0x0010),
+ { .id = "CSC6835", .devs = { { "CSC0000" }, { "CSC0010" } } },
/* Dell Workstation 400 Onboard - CS4236B */
- ISAPNP_CS4232('C','S','C',0x6836,0x0000,0x0010,0x0003),
+ { .id = "CSC6836", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Turtle Beach Malibu - CS4237B */
- ISAPNP_CS4232('C','S','C',0x7537,0x0000,0x0010,0x0003),
+ { .id = "CSC7537", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4235 - onboard */
- ISAPNP_CS4232('C','S','C',0x8025,0x0100,0x0110,0x0103),
- /* IBM PC 300PL Onboard - CS4236B */
- ISAPNP_CS4232_WOMPU('C','S','C',0xe836,0x0000,0x0010),
+ { .id = "CSC8025", .devs = { { "CSC0100" }, { "CSC0110" }, { "CSC0103" } } },
/* IBM Aptiva 2137 E24 Onboard - CS4237B */
- ISAPNP_CS4232('C','S','C',0x8037,0x0000,0x0010,0x0003),
+ { .id = "CSC8037", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* IBM IntelliStation M Pro motherboard */
- ISAPNP_CS4232_WOMPU('C','S','C',0xc835,0x0000,0x0010),
+ { .id = "CSCc835", .devs = { { "CSC0000" }, { "CSC0010" } } },
/* Guillemot MaxiSound 16 PnP - CS4236B */
- ISAPNP_CS4232('C','S','C',0x9836,0x0000,0x0010,0x0003),
+ { .id = "CSC9836", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* Gallant SC-70P */
- ISAPNP_CS4232('C','S','C',0x9837,0x0000,0x0010,0x0003),
+ { .id = "CSC9837", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
+ /* TerraTec AudioSystem EWS64XL - CS4236B */
+ { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" }, { "CSCa803" } } },
+ /* TerraTec AudioSystem EWS64XL - CS4236B */
+ { .id = "CSCa836", .devs = { { "CSCa800" }, { "CSCa810" } } },
/* ACER AW37/Pro - CS4235 */
- ISAPNP_CS4232('C','S','C',0xd925,0x0000,0x0010,0x0003),
+ { .id = "CSCd925", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* ACER AW35/Pro - CS4237B */
- ISAPNP_CS4232('C','S','C',0xd937,0x0000,0x0010,0x0003),
+ { .id = "CSCd937", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4235 without MPU401 */
- ISAPNP_CS4232_WOMPU('C','S','C',0xe825,0x0100,0x0110),
+ { .id = "CSCe825", .devs = { { "CSC0100" }, { "CSC0110" } } },
/* IBM IntelliStation M Pro 6898 11U - CS4236B */
- ISAPNP_CS4232_WOMPU('C','S','C',0xe835,0x0000,0x0010),
+ { .id = "CSCe835", .devs = { { "CSC0000" }, { "CSC0010" } } },
+ /* IBM PC 300PL Onboard - CS4236B */
+ { .id = "CSCe836", .devs = { { "CSC0000" }, { "CSC0010" } } },
/* Some noname CS4236 based card */
- ISAPNP_CS4232('C','S','C',0xe936,0x0000,0x0010,0x0003),
+ { .id = "CSCe936", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4236B */
- ISAPNP_CS4232('C','S','C',0xf235,0x0000,0x0010,0x0003),
+ { .id = "CSCf235", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* CS4236B */
- ISAPNP_CS4232('C','S','C',0xf238,0x0000,0x0010,0x0003),
+ { .id = "CSCf238", .devs = { { "CSC0000" }, { "CSC0010" }, { "CSC0003" } } },
/* --- */
- { ISAPNP_CARD_END, } /* end */
+ { .id = "" } /* end */
};
#endif
-ISAPNP_CARD_TABLE(snd_card_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_cs423x_pnpids);
-static int __init snd_card_cs4236_isapnp(int dev, struct snd_card_cs4236 *acard)
+static int __devinit snd_card_cs4236_pnp(int dev, struct snd_card_cs4236 *acard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
- const struct isapnp_card_id *id = snd_cs4236_isapnp_id[dev];
- struct isapnp_card *card = snd_cs4236_isapnp_cards[dev];
- struct isapnp_dev *pdev;
-
- acard->wss = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
- if (acard->wss->active) {
- acard->wss = NULL;
+ struct pnp_dev *pdev;
+ struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
+ int err;
+
+ acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL);
+ if (acard->wss == NULL) {
+ kfree(cfg);
return -EBUSY;
}
- acard->ctrl = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
- if (acard->ctrl->active) {
- acard->wss = acard->ctrl = NULL;
+ acard->ctrl = pnp_request_card_device(card, id->devs[1].id, NULL);
+ if (acard->ctrl == NULL) {
+ kfree(cfg);
return -EBUSY;
}
- if (id->devs[2].vendor && id->devs[2].function) {
- acard->mpu = isapnp_find_dev(card, id->devs[2].vendor, id->devs[2].function, NULL);
- if (acard->mpu->active) {
- acard->wss = acard->ctrl = acard->mpu = NULL;
+ if (id->devs[2].id[0]) {
+ acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
+ if (acard->mpu == NULL) {
+ kfree(cfg);
return -EBUSY;
}
}
/* WSS initialization */
pdev = acard->wss;
- if (pdev->prepare(pdev) < 0)
- return -EAGAIN;
+ pnp_init_resource_table(cfg);
if (port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], port[dev], 4);
+ pnp_resource_change(&cfg->port_resource[0], port[dev], 4);
if (fm_port[dev] != SNDRV_AUTO_PORT && fm_port[dev] >= 0)
- isapnp_resource_change(&pdev->resource[1], fm_port[dev], 4);
+ pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
if (sb_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[2], sb_port[dev], 16);
+ pnp_resource_change(&cfg->port_resource[2], sb_port[dev], 16);
if (irq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], irq[dev], 1);
+ pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
if (dma1[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], dma1[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
if (dma2[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[1], dma2[dev] < 0 ? 4 : dma2[dev], 1);
- if (pdev->activate(pdev)<0) {
- printk(KERN_ERR IDENT " isapnp configure failed for WSS (out of resources?)\n");
+ pnp_resource_change(&cfg->dma_resource[1], dma2[dev] < 0 ? 4 : dma2[dev], 1);
+ err = pnp_manual_config_dev(pdev, cfg, 0);
+ if (err < 0)
+ snd_printk(KERN_ERR IDENT " WSS PnP manual resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ kfree(cfg);
+ printk(KERN_ERR IDENT " WSS PnP configure failed for WSS (out of resources?)\n");
return -EBUSY;
}
- port[dev] = pdev->resource[0].start;
+ port[dev] = pnp_port_start(pdev, 0);
if (fm_port[dev] >= 0)
- fm_port[dev] = pdev->resource[1].start;
- sb_port[dev] = pdev->resource[2].start;
- irq[dev] = pdev->irq_resource[0].start;
- dma1[dev] = pdev->dma_resource[0].start;
- dma2[dev] = pdev->dma_resource[1].start == 4 ? -1 : (int)pdev->dma_resource[1].start;
+ fm_port[dev] = pnp_port_start(pdev, 1);
+ sb_port[dev] = pnp_port_start(pdev, 2);
+ irq[dev] = pnp_irq(pdev, 0);
+ dma1[dev] = pnp_dma(pdev, 0);
+ dma2[dev] = pnp_dma(pdev, 1) == 4 ? -1 : (int)pnp_dma(pdev, 1);
snd_printdd("isapnp WSS: wss port=0x%lx, fm port=0x%lx, sb port=0x%lx\n",
port[dev], fm_port[dev], sb_port[dev]);
snd_printdd("isapnp WSS: irq=%i, dma1=%i, dma2=%i\n",
@@ -338,65 +337,51 @@ static int __init snd_card_cs4236_isapnp(int dev, struct snd_card_cs4236 *acard)
/* CTRL initialization */
if (acard->ctrl && cport[dev] >= 0) {
pdev = acard->ctrl;
- if (pdev->prepare(pdev) < 0) {
- acard->wss->deactivate(acard->wss);
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
if (cport[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], cport[dev], 8);
- if (pdev->activate(pdev)<0) {
- printk(KERN_ERR IDENT " isapnp configure failed for control (out of resources?)\n");
- acard->wss->deactivate(acard->wss);
+ pnp_resource_change(&cfg->port_resource[0], cport[dev], 8);
+ err = pnp_manual_config_dev(pdev, cfg, 0);
+ if (err < 0)
+ snd_printk(KERN_ERR IDENT " CTRL PnP manual resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ kfree(cfg);
+ printk(KERN_ERR IDENT " CTRL PnP configure failed for WSS (out of resources?)\n");
return -EBUSY;
}
- cport[dev] = pdev->resource[0].start;
+ cport[dev] = pnp_port_start(pdev, 0);
snd_printdd("isapnp CTRL: control port=0x%lx\n", cport[dev]);
}
/* MPU initialization */
if (acard->mpu && mpu_port[dev] >= 0) {
pdev = acard->mpu;
- if (pdev->prepare(pdev) < 0) {
- acard->wss->deactivate(acard->wss);
- acard->ctrl->deactivate(acard->ctrl);
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
if (mpu_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], mpu_port[dev], 2);
+ pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
if (mpu_irq[dev] != SNDRV_AUTO_IRQ && mpu_irq[dev] >= 0)
- isapnp_resource_change(&pdev->irq_resource[0], mpu_irq[dev], 1);
- if (pdev->activate(pdev)<0) {
+ pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
+ err = pnp_manual_config_dev(pdev, cfg, 0);
+ if (err < 0)
+ snd_printk(KERN_ERR IDENT " MPU401 PnP manual resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ kfree(cfg);
+ printk(KERN_ERR IDENT " MPU401 PnP configure failed for WSS (out of resources?)\n");
mpu_port[dev] = SNDRV_AUTO_PORT;
mpu_irq[dev] = SNDRV_AUTO_IRQ;
- printk(KERN_ERR IDENT " isapnp configure failed for MPU (out of resources?)\n");
} else {
- mpu_port[dev] = pdev->resource[0].start;
- if ((pdev->irq_resource[0].flags & IORESOURCE_IRQ) &&
- mpu_irq[dev] >= 0) {
- mpu_irq[dev] = pdev->irq_resource[0].start;
+ mpu_port[dev] = pnp_port_start(pdev, 0);
+ if (pnp_irq_valid(pdev, 0) && pnp_irq(pdev, 0) >= 0) {
+ mpu_irq[dev] = pnp_irq(pdev, 0);
} else {
mpu_irq[dev] = -1; /* disable interrupt */
}
}
snd_printdd("isapnp MPU: port=0x%lx, irq=%i\n", mpu_port[dev], mpu_irq[dev]);
}
+ kfree(cfg);
return 0;
}
-
-static void snd_card_cs4236_deactivate(struct snd_card_cs4236 *acard)
-{
- if (acard->wss) {
- acard->wss->deactivate(acard->wss);
- acard->wss = NULL;
- }
- if (acard->ctrl) {
- acard->ctrl->deactivate(acard->ctrl);
- acard->ctrl = NULL;
- }
- if (acard->mpu) {
- acard->mpu->deactivate(acard->mpu);
- acard->mpu = NULL;
- }
-}
#endif
static void snd_card_cs4236_free(snd_card_t *card)
@@ -404,9 +389,6 @@ static void snd_card_cs4236_free(snd_card_t *card)
struct snd_card_cs4236 *acard = (struct snd_card_cs4236 *)card->private_data;
if (acard) {
-#ifdef __ISAPNP__
- snd_card_cs4236_deactivate(acard);
-#endif
if (acard->res_sb_port) {
release_resource(acard->res_sb_port);
kfree_nocheck(acard->res_sb_port);
@@ -414,7 +396,8 @@ static void snd_card_cs4236_free(snd_card_t *card)
}
}
-static int __init snd_card_cs4236_probe(int dev)
+static int __devinit snd_card_cs423x_probe(int dev, struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
snd_card_t *card;
struct snd_card_cs4236 *acard;
@@ -423,7 +406,7 @@ static int __init snd_card_cs4236_probe(int dev)
opl3_t *opl3;
int err;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (!isapnp[dev]) {
#endif
if (port[dev] == SNDRV_AUTO_PORT) {
@@ -434,7 +417,7 @@ static int __init snd_card_cs4236_probe(int dev)
snd_printk("specify cport\n");
return -EINVAL;
}
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
}
#endif
card = snd_card_new(index[dev], id[dev], THIS_MODULE,
@@ -443,8 +426,8 @@ static int __init snd_card_cs4236_probe(int dev)
return -ENOMEM;
acard = (struct snd_card_cs4236 *)card->private_data;
card->private_free = snd_card_cs4236_free;
-#ifdef __ISAPNP__
- if (isapnp[dev] && (err = snd_card_cs4236_isapnp(dev, acard))<0) {
+#ifdef CONFIG_PNP
+ if (isapnp[dev] && (err = snd_card_cs4236_pnp(dev, acard, pcard, pid))<0) {
printk(KERN_ERR "isapnp detection failed and probing for " IDENT " is not supported\n");
snd_card_free(card);
return -ENXIO;
@@ -546,13 +529,16 @@ static int __init snd_card_cs4236_probe(int dev)
snd_card_free(card);
return err;
}
- snd_cs4236_cards[dev] = card;
+ if (pcard)
+ pnp_set_card_drvdata(pcard, card);
+ else
+ snd_cs4236_legacy[dev] = card;
return 0;
}
-#ifdef __ISAPNP__
-static int __init snd_cs4236_isapnp_detect(struct isapnp_card *card,
- const struct isapnp_card_id *id)
+#ifdef CONFIG_PNP
+static int __devinit snd_cs423x_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
@@ -560,9 +546,7 @@ static int __init snd_cs4236_isapnp_detect(struct isapnp_card *card,
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev])
continue;
- snd_cs4236_isapnp_cards[dev] = card;
- snd_cs4236_isapnp_id[dev] = id;
- res = snd_card_cs4236_probe(dev);
+ res = snd_card_cs423x_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -570,7 +554,23 @@ static int __init snd_cs4236_isapnp_detect(struct isapnp_card *card,
}
return -ENODEV;
}
-#endif /* __ISAPNP__ */
+
+static void __devexit snd_cs423x_pnp_remove(struct pnp_card_link * pcard)
+{
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver cs423x_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "cs423x",
+ .id_table = snd_cs423x_pnpids,
+ .probe = snd_cs423x_pnp_detect,
+ .remove = __devexit_p(snd_cs423x_pnp_remove),
+};
+#endif /* CONFIG_PNP */
static int __init alsa_card_cs423x_init(void)
{
@@ -579,15 +579,15 @@ static int __init alsa_card_cs423x_init(void)
for (dev = 0; dev < SNDRV_CARDS; dev++) {
if (!enable[dev])
continue;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (isapnp[dev])
continue;
#endif
- if (snd_card_cs4236_probe(dev) >= 0)
+ if (snd_card_cs423x_probe(dev, NULL, NULL) >= 0)
cards++;
}
-#ifdef __ISAPNP__
- cards += isapnp_probe_cards(snd_card_pnpids, snd_cs4236_isapnp_detect);
+#ifdef CONFIG_PNP
+ cards += pnp_register_card_driver(&cs423x_pnpc_driver);
#endif
if (!cards) {
#ifdef MODULE
@@ -602,8 +602,12 @@ static void __exit alsa_card_cs423x_exit(void)
{
int idx;
+#ifdef CONFIG_PNP
+ /* PnP cards first */
+ pnp_unregister_card_driver(&cs423x_pnpc_driver);
+#endif
for (idx = 0; idx < SNDRV_CARDS; idx++)
- snd_card_free(snd_cs4236_cards[idx]);
+ snd_card_free(snd_cs4236_legacy[idx]);
}
module_init(alsa_card_cs423x_init)
@@ -638,7 +642,7 @@ static int __init alsa_card_cs423x_setup(char *str)
get_option(&str,&mpu_irq[nr_dev]) == 2 &&
get_option(&str,&dma1[nr_dev]) == 2 &&
get_option(&str,&dma2[nr_dev]) == 2);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (pnp != INT_MAX)
isapnp[nr_dev] = pnp;
#endif
diff --git a/sound/isa/dt019x.c b/sound/isa/dt019x.c
index 4b490e87cc99..bdb243d855c1 100644
--- a/sound/isa/dt019x.c
+++ b/sound/isa/dt019x.c
@@ -102,9 +102,9 @@ MODULE_DEVICE_TABLE(pnp_card, snd_dt019x_pnpids);
#define DRIVER_NAME "snd-card-dt019x"
-static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
- struct pnp_card_link *card,
- const struct pnp_card_device_id *pid)
+static int __devinit snd_card_dt019x_pnp(int dev, struct snd_card_dt019x *acard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *pid)
{
struct pnp_dev *pdev;
struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
@@ -133,10 +133,10 @@ static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "DT-019X AUDIO the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "DT-019X AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
- printk(KERN_ERR PFX "DT-019X AUDIO pnp configure failure\n");
+ snd_printk(KERN_ERR PFX "DT-019X AUDIO pnp configure failure\n");
kfree(cfg);
return err;
}
@@ -155,11 +155,11 @@ static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "DT-019X MPU401 the requested resources are invalid, using auto config\n");
- err = pnp_activate_dev(pdev);
- if (err < 0)
- goto __mpu_error;
+ if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
+ snd_printk(KERN_ERR PFX "DT-019X MPU401 the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0)
+ goto __mpu_error;
mpu_port[dev] = pnp_port_start(pdev, 0);
mpu_irq[dev] = pnp_irq(pdev, 0);
snd_printdd("dt019x: found MPU-401: port=0x%lx, irq=0x%lx\n",
@@ -168,7 +168,7 @@ static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
__mpu_error:
if (pdev) {
pnp_release_card_device(pdev);
- printk(KERN_ERR PFX "DT-019X MPU401 pnp configure failure, skipping\n");
+ snd_printk(KERN_ERR PFX "DT-019X MPU401 pnp configure failure, skipping\n");
}
acard->devmpu = NULL;
mpu_port[dev] = -1;
@@ -180,7 +180,7 @@ static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
if (fm_port[dev] != SNDRV_AUTO_PORT)
pnp_resource_change(&cfg->port_resource[0], fm_port[dev], 4);
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "DT-019X OPL3 the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "DT-019X OPL3 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0)
goto __fm_error;
@@ -190,7 +190,7 @@ static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
__fm_error:
if (pdev) {
pnp_release_card_device(pdev);
- printk(KERN_ERR PFX "DT-019X OPL3 pnp configure failure, skipping\n");
+ snd_printk(KERN_ERR PFX "DT-019X OPL3 pnp configure failure, skipping\n");
}
acard->devopl = NULL;
fm_port[dev] = -1;
@@ -200,7 +200,7 @@ static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
return 0;
}
-static int __init snd_card_dt019x_probe(int dev, struct pnp_card_link *pcard, const struct pnp_card_device_id *pid)
+static int __devinit snd_card_dt019x_probe(int dev, struct pnp_card_link *pcard, const struct pnp_card_device_id *pid)
{
int error;
sb_t *chip;
@@ -213,7 +213,7 @@ static int __init snd_card_dt019x_probe(int dev, struct pnp_card_link *pcard, co
return -ENOMEM;
acard = (struct snd_card_dt019x *)card->private_data;
- if ((error = snd_card_dt019x_isapnp(dev, acard, pcard, pid))) {
+ if ((error = snd_card_dt019x_pnp(dev, acard, pcard, pid))) {
snd_card_free(card);
return error;
}
@@ -246,8 +246,7 @@ static int __init snd_card_dt019x_probe(int dev, struct pnp_card_link *pcard, co
mpu_irq[dev],
SA_INTERRUPT,
NULL) < 0)
- printk(KERN_ERR PFX "no MPU-401 device at 0x%lx ?\n",
- mpu_port[dev]);
+ snd_printk(KERN_ERR PFX "no MPU-401 device at 0x%lx ?\n", mpu_port[dev]);
}
if (fm_port[dev] > 0) {
@@ -255,8 +254,8 @@ static int __init snd_card_dt019x_probe(int dev, struct pnp_card_link *pcard, co
fm_port[dev],
fm_port[dev] + 2,
OPL3_HW_AUTO, 0, &opl3) < 0) {
- printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx ?\n",
- fm_port[dev], fm_port[dev] + 2);
+ snd_printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx ?\n",
+ fm_port[dev], fm_port[dev] + 2);
} else {
if ((error = snd_opl3_timer_new(opl3, 0, 1)) < 0) {
snd_card_free(card);
@@ -282,8 +281,8 @@ static int __init snd_card_dt019x_probe(int dev, struct pnp_card_link *pcard, co
return 0;
}
-static int __init snd_dt019x_pnp_probe(struct pnp_card_link *card,
- const struct pnp_card_device_id *pid)
+static int __devinit snd_dt019x_pnp_probe(struct pnp_card_link *card,
+ const struct pnp_card_device_id *pid)
{
static int dev;
int res;
@@ -323,7 +322,7 @@ static int __init alsa_card_dt019x_init(void)
#ifdef MODULE
if (!cards)
- printk(KERN_ERR "no DT-019X / ALS-007 based soundcards found\n");
+ snd_printk(KERN_ERR "no DT-019X / ALS-007 based soundcards found\n");
#endif
return cards ? 0 : -ENODEV;
}
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index 8bdce0f7ce7b..04f2c1834bfc 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -70,11 +70,8 @@
#include <linux/init.h>
#include <linux/pm.h>
#include <linux/slab.h>
-#ifndef LINUX_ISAPNP_H
+#include <linux/pnp.h>
#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
#include <sound/core.h>
#include <sound/control.h>
#include <sound/pcm.h>
@@ -1263,7 +1260,7 @@ ES18XX_SINGLE("Hardware Master Volume Split", 0, 0x64, 7, 1, 0),
};
#if 0
-static int __init snd_es18xx_config_read(es18xx_t *chip, unsigned char reg)
+static int __devinit snd_es18xx_config_read(es18xx_t *chip, unsigned char reg)
{
int data;
unsigned long flags;
@@ -1275,8 +1272,8 @@ static int __init snd_es18xx_config_read(es18xx_t *chip, unsigned char reg)
}
#endif
-static void __init snd_es18xx_config_write(es18xx_t *chip,
- unsigned char reg, unsigned char data)
+static void __devinit snd_es18xx_config_write(es18xx_t *chip,
+ unsigned char reg, unsigned char data)
{
/* No need for spinlocks, this function is used only in
otherwise protected init code */
@@ -1287,7 +1284,7 @@ static void __init snd_es18xx_config_write(es18xx_t *chip,
#endif
}
-static int __init snd_es18xx_initialize(es18xx_t *chip)
+static int __devinit snd_es18xx_initialize(es18xx_t *chip)
{
int mask = 0;
@@ -1436,7 +1433,7 @@ static int __init snd_es18xx_initialize(es18xx_t *chip)
return 0;
}
-static int __init snd_es18xx_identify(es18xx_t *chip)
+static int __devinit snd_es18xx_identify(es18xx_t *chip)
{
int hi,lo;
@@ -1500,10 +1497,10 @@ static int __init snd_es18xx_identify(es18xx_t *chip)
return 0;
}
-static int __init snd_es18xx_probe(es18xx_t *chip)
+static int __devinit snd_es18xx_probe(es18xx_t *chip)
{
if (snd_es18xx_identify(chip) < 0) {
- printk(KERN_ERR PFX "[0x%lx] ESS chip not found\n", chip->port);
+ snd_printk(KERN_ERR PFX "[0x%lx] ESS chip not found\n", chip->port);
return -ENODEV;
}
@@ -1569,7 +1566,7 @@ static void snd_es18xx_pcm_free(snd_pcm_t *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm);
}
-int __init snd_es18xx_pcm(es18xx_t *chip, int device, snd_pcm_t ** rpcm)
+int __devinit snd_es18xx_pcm(es18xx_t *chip, int device, snd_pcm_t ** rpcm)
{
snd_pcm_t *pcm;
char str[16];
@@ -1714,12 +1711,12 @@ static int snd_es18xx_dev_free(snd_device_t *device)
return snd_es18xx_free(chip);
}
-static int __init snd_es18xx_new_device(snd_card_t * card,
- unsigned long port,
- unsigned long mpu_port,
- unsigned long fm_port,
- int irq, int dma1, int dma2,
- es18xx_t ** rchip)
+static int __devinit snd_es18xx_new_device(snd_card_t * card,
+ unsigned long port,
+ unsigned long mpu_port,
+ unsigned long fm_port,
+ int irq, int dma1, int dma2,
+ es18xx_t ** rchip)
{
es18xx_t *chip;
static snd_device_ops_t ops = {
@@ -1746,27 +1743,27 @@ static int __init snd_es18xx_new_device(snd_card_t * card,
if ((chip->res_port = request_region(port, 16, "ES18xx")) == NULL) {
snd_es18xx_free(chip);
- printk(KERN_ERR PFX "unable to grap ports 0x%lx-0x%lx\n", port, port + 16 - 1);
+ snd_printk(KERN_ERR PFX "unable to grap ports 0x%lx-0x%lx\n", port, port + 16 - 1);
return -EBUSY;
}
if (request_irq(irq, snd_es18xx_interrupt, SA_INTERRUPT, "ES18xx", (void *) chip)) {
snd_es18xx_free(chip);
- printk(KERN_ERR PFX "unable to grap IRQ %d\n", irq);
+ snd_printk(KERN_ERR PFX "unable to grap IRQ %d\n", irq);
return -EBUSY;
}
chip->irq = irq;
if (request_dma(dma1, "ES18xx DMA 1")) {
snd_es18xx_free(chip);
- printk(KERN_ERR PFX "unable to grap DMA1 %d\n", dma1);
+ snd_printk(KERN_ERR PFX "unable to grap DMA1 %d\n", dma1);
return -EBUSY;
}
chip->dma1 = dma1;
if (dma2 != dma1 && request_dma(dma2, "ES18xx DMA 2")) {
snd_es18xx_free(chip);
- printk(KERN_ERR PFX "unable to grap DMA2 %d\n", dma2);
+ snd_printk(KERN_ERR PFX "unable to grap DMA2 %d\n", dma2);
return -EBUSY;
}
chip->dma2 = dma2;
@@ -1783,7 +1780,7 @@ static int __init snd_es18xx_new_device(snd_card_t * card,
return 0;
}
-static int __init snd_es18xx_mixer(es18xx_t *chip)
+static int __devinit snd_es18xx_mixer(es18xx_t *chip)
{
snd_card_t *card;
int err;
@@ -1886,11 +1883,11 @@ MODULE_DEVICES("{{ESS,ES1868 PnP AudioDrive},"
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_ISAPNP; /* Enable this card */
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
static int isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
#endif
static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* 0x220,0x240,0x260,0x280 */
-#ifndef __ISAPNP__
+#ifndef CONFIG_PNP_
static long mpu_port[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = -1};
#else
static long mpu_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;
@@ -1909,9 +1906,9 @@ MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(enable, "Enable ES18xx soundcard.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
-MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
+MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
#endif
MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
@@ -1934,138 +1931,115 @@ MODULE_PARM_DESC(dma2, "DMA 2 # for ES18xx driver.");
MODULE_PARM_SYNTAX(dma2, SNDRV_ENABLED ",allows:{{0},{1},{3},{5}},dialog:list,prefers:{0}");
struct snd_audiodrive {
-#ifdef __ISAPNP__
- struct isapnp_dev *dev;
- struct isapnp_dev *devc;
+#ifdef CONFIG_PNP
+ struct pnp_dev *dev;
+ struct pnp_dev *devc;
#endif
};
-static snd_card_t *snd_audiodrive_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
+static snd_card_t *snd_audiodrive_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-static struct isapnp_card *snd_audiodrive_isapnp_cards[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_audiodrive_isapnp_id[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-
-#define ISAPNP_ES18XX(_va, _vb, _vc, _device, _audio, _control) \
- { \
- ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
- .devs = { ISAPNP_DEVICE_ID(_va, _vb, _vc, _audio), \
- ISAPNP_DEVICE_ID(_va, _vb, _vc, _control) } \
- }
+#ifdef CONFIG_PNP
-static struct isapnp_card_id snd_audiodrive_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_audiodrive_pnpids[] __devinitdata = {
/* ESS 1868 (integrated on Compaq dual P-Pro motherboard and Genius 18PnP 3D) */
- ISAPNP_ES18XX('E','S','S',0x1868,0x1868,0x0000),
+ { .id = "ESS1868", .devs = { { "ESS1868" }, { "ESS0000" } } },
/* ESS 1868 (integrated on Maxisound Cards) */
- ISAPNP_ES18XX('E','S','S',0x1868,0x8601,0x8600),
+ { .id = "ESS1868", .devs = { { "ESS8601" }, { "ESS8600" } } },
/* ESS 1868 (integrated on Maxisound Cards) */
- ISAPNP_ES18XX('E','S','S',0x1868,0x8611,0x8610),
+ { .id = "ESS1868", .devs = { { "ESS8611" }, { "ESS8610" } } },
/* ESS ES1869 Plug and Play AudioDrive */
- ISAPNP_ES18XX('E','S','S',0x0003,0x1869,0x0006),
+ { .id = "ESS0003", .devs = { { "ESS1869" }, { "ESS0006" } } },
/* ESS 1869 */
- ISAPNP_ES18XX('E','S','S',0x1869,0x1869,0x0006),
+ { .id = "ESS1869", .devs = { { "ESS1869" }, { "ESS0006" } } },
/* ESS 1878 */
- ISAPNP_ES18XX('E','S','S',0x1878,0x1878,0x0004),
+ { .id = "ESS1878", .devs = { { "ESS1878" }, { "ESS0004" } } },
/* ESS 1879 */
- ISAPNP_ES18XX('E','S','S',0x1879,0x1879,0x0009),
+ { .id = "ESS1879", .devs = { { "ESS1879" }, { "ESS0009" } } },
/* --- */
- { ISAPNP_CARD_END, } /* end */
+ { .id = "" } /* end */
};
-ISAPNP_CARD_TABLE(snd_audiodrive_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_audiodrive_pnpids);
-static int __init snd_audiodrive_isapnp(int dev, struct snd_audiodrive *acard)
+static int __devinit snd_audiodrive_pnp(int dev, struct snd_audiodrive *acard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
- const struct isapnp_card_id *id = snd_audiodrive_isapnp_id[dev];
- struct isapnp_card *card = snd_audiodrive_isapnp_cards[dev];
- struct isapnp_dev *pdev;
+ struct pnp_dev *pdev;
+ struct pnp_resource_table * cfg = kmalloc(GFP_ATOMIC, sizeof(struct pnp_resource_table));
+ int err;
- acard->dev = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
- if (acard->dev->active) {
- acard->dev = NULL;
+ if (!cfg)
+ return -ENOMEM;
+ acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
+ if (acard->dev == NULL) {
+ kfree(cfg);
return -EBUSY;
}
- acard->devc = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
- if (acard->devc->active) {
- acard->dev = acard->devc = NULL;
+ acard->devc = pnp_request_card_device(card, id->devs[1].id, NULL);
+ if (acard->devc == NULL) {
+ kfree(cfg);
return -EBUSY;
}
/* Control port initialization */
- if (acard->devc->prepare(acard->devc)<0)
- return -EAGAIN;
- if (acard->devc->activate(acard->devc)<0) {
- printk(KERN_ERR PFX "isapnp control configure failure (out of resources?)\n");
+ err = pnp_activate_dev(acard->devc);
+ if (err < 0) {
+ snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n");
return -EAGAIN;
}
- snd_printdd("isapnp: port=0x%lx\n", acard->devc->resource[0].start);
+ snd_printdd("pnp: port=0x%lx\n", pnp_port_start(acard->devc, 0));
/* PnP initialization */
pdev = acard->dev;
- if (pdev->prepare(pdev)<0) {
- acard->devc->deactivate(acard->devc);
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
if (port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], port[dev], 16);
+ pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
if (fm_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[1], fm_port[dev], 4);
+ pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
if (mpu_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[2], mpu_port[dev], 2);
+ pnp_resource_change(&cfg->port_resource[2], mpu_port[dev], 2);
if (dma1[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], dma1[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
if (dma2[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[1], dma2[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
if (irq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], irq[dev], 1);
- if (pdev->activate(pdev)<0) {
- printk(KERN_ERR PFX "isapnp configure failure (out of resources?)\n");
- acard->devc->deactivate(acard->devc);
+ pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
+ err = pnp_manual_config_dev(pdev, cfg, 0);
+ if (err < 0)
+ snd_printk(KERN_ERR PFX "PnP manual resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR PFX "PnP configure failure (out of resources?)\n");
+ kfree(cfg);
return -EBUSY;
}
/* ok. hack using Vendor-Defined Card-Level registers */
/* skip csn and logdev initialization - already done in isapnp_configure */
- isapnp_cfg_begin(pdev->bus->number, pdev->devfn);
- isapnp_write_byte(0x27, pdev->irq_resource[0].start); /* Hardware Volume IRQ Number */
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- isapnp_write_byte(0x28, pdev->irq); /* MPU-401 IRQ Number */
- isapnp_write_byte(0x72, pdev->irq_resource[0].start); /* second IRQ */
- isapnp_cfg_end();
- port[dev] = pdev->resource[0].start;
- fm_port[dev] = pdev->resource[1].start;
- mpu_port[dev] = pdev->resource[2].start;
- dma1[dev] = pdev->dma_resource[0].start;
- dma2[dev] = pdev->dma_resource[1].start;
- irq[dev] = pdev->irq_resource[0].start;
- snd_printdd("isapnp ES18xx: port=0x%lx, fm port=0x%lx, mpu port=0x%lx\n", port[dev], fm_port[dev], mpu_port[dev]);
- snd_printdd("isapnp ES18xx: dma1=%i, dma2=%i, irq=%i\n", dma1[dev], dma2[dev], irq[dev]);
+ if (pnp_device_is_isapnp(pdev)) {
+ isapnp_cfg_begin(isapnp_card_number(pdev), isapnp_csn_number(pdev));
+ isapnp_write_byte(0x27, pnp_irq(pdev, 0)); /* Hardware Volume IRQ Number */
+ if (mpu_port[dev] != SNDRV_AUTO_PORT)
+ isapnp_write_byte(0x28, pnp_irq(pdev, 0)); /* MPU-401 IRQ Number */
+ isapnp_write_byte(0x72, pnp_irq(pdev, 0)); /* second IRQ */
+ isapnp_cfg_end();
+ } else {
+ snd_printk(KERN_ERR PFX "unable to install ISA PnP hack, expect malfunction\n");
+ }
+ port[dev] = pnp_port_start(pdev, 0);
+ fm_port[dev] = pnp_port_start(pdev, 1);
+ mpu_port[dev] = pnp_port_start(pdev, 2);
+ dma1[dev] = pnp_dma(pdev, 0);
+ dma2[dev] = pnp_dma(pdev, 1);
+ irq[dev] = pnp_irq(pdev, 0);
+ snd_printdd("PnP ES18xx: port=0x%lx, fm port=0x%lx, mpu port=0x%lx\n", port[dev], fm_port[dev], mpu_port[dev]);
+ snd_printdd("PnP ES18xx: dma1=%i, dma2=%i, irq=%i\n", dma1[dev], dma2[dev], irq[dev]);
+ kfree(cfg);
return 0;
}
+#endif /* CONFIG_PNP_ */
-static void snd_audiodrive_deactivate(struct snd_audiodrive *acard)
-{
- if (acard->devc) {
- acard->devc->deactivate(acard->devc);
- acard->devc = NULL;
- }
- if (acard->dev) {
- acard->dev->deactivate(acard->dev);
- acard->dev = NULL;
- }
-}
-#endif /* __ISAPNP__ */
-
-static void snd_audiodrive_free(snd_card_t *card)
-{
- struct snd_audiodrive *acard = (struct snd_audiodrive *)card->private_data;
-
- if (acard) {
-#ifdef __ISAPNP__
- snd_audiodrive_deactivate(acard);
-#endif
- }
-}
-
-static int __init snd_audiodrive_probe(int dev)
+static int __devinit snd_audiodrive_probe(int dev, struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
static int possible_irqs[] = {5, 9, 10, 7, 11, 12, -1};
static int possible_dmas[] = {1, 0, 3, 5, -1};
@@ -2082,9 +2056,8 @@ static int __init snd_audiodrive_probe(int dev)
if (card == NULL)
return -ENOMEM;
acard = (struct snd_audiodrive *)card->private_data;
- card->private_free = snd_audiodrive_free;
-#ifdef __ISAPNP__
- if (isapnp[dev] && (err = snd_audiodrive_isapnp(dev, acard)) < 0) {
+#ifdef CONFIG_PNP
+ if (isapnp[dev] && (err = snd_audiodrive_pnp(dev, acard, pcard, pid)) < 0) {
snd_card_free(card);
return err;
}
@@ -2135,7 +2108,7 @@ static int __init snd_audiodrive_probe(int dev)
if (fm_port[dev] > 0 && fm_port[dev] != SNDRV_AUTO_PORT) {
if (snd_opl3_create(card, chip->fm_port, chip->fm_port + 2, OPL3_HW_OPL3, 0, &opl3) < 0) {
- printk(KERN_ERR PFX "opl3 not detected at 0x%lx\n", chip->fm_port);
+ snd_printk(KERN_ERR PFX "opl3 not detected at 0x%lx\n", chip->fm_port);
} else {
if ((err = snd_opl3_hwdep_new(opl3, 0, 1, NULL)) < 0) {
snd_card_free(card);
@@ -2181,11 +2154,14 @@ static int __init snd_audiodrive_probe(int dev)
snd_card_free(card);
return err;
}
- snd_audiodrive_cards[dev] = card;
+ if (pcard)
+ pnp_set_card_drvdata(pcard, card);
+ else
+ snd_audiodrive_legacy[dev] = card;
return 0;
}
-static int __init snd_audiodrive_probe_legacy_port(unsigned long xport)
+static int __devinit snd_audiodrive_probe_legacy_port(unsigned long xport)
{
static int dev;
int res;
@@ -2193,12 +2169,12 @@ static int __init snd_audiodrive_probe_legacy_port(unsigned long xport)
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || port[dev] != SNDRV_AUTO_PORT)
continue;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (isapnp[dev])
continue;
#endif
port[dev] = xport;
- res = snd_audiodrive_probe(dev);
+ res = snd_audiodrive_probe(dev, NULL, NULL);
if (res < 0)
port[dev] = SNDRV_AUTO_PORT;
return res;
@@ -2207,9 +2183,9 @@ static int __init snd_audiodrive_probe_legacy_port(unsigned long xport)
}
-#ifdef __ISAPNP__
-static int __init snd_audiodrive_isapnp_detect(struct isapnp_card *card,
- const struct isapnp_card_id *id)
+#ifdef CONFIG_PNP
+static int __devinit snd_audiodrive_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
@@ -2217,9 +2193,7 @@ static int __init snd_audiodrive_isapnp_detect(struct isapnp_card *card,
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || !isapnp[dev])
continue;
- snd_audiodrive_isapnp_cards[dev] = card;
- snd_audiodrive_isapnp_id[dev] = id;
- res = snd_audiodrive_probe(dev);
+ res = snd_audiodrive_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -2228,7 +2202,23 @@ static int __init snd_audiodrive_isapnp_detect(struct isapnp_card *card,
return -ENODEV;
}
-#endif /* __ISAPNP__ */
+
+static void __devexit snd_audiodrive_pnp_remove(struct pnp_card_link * pcard)
+{
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver es18xx_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "es18xx",
+ .id_table = snd_audiodrive_pnpids,
+ .probe = snd_audiodrive_pnp_detect,
+ .remove = __devexit_p(snd_audiodrive_pnp_remove),
+};
+#endif /* CONFIG_PNP */
static int __init alsa_card_es18xx_init(void)
{
@@ -2239,22 +2229,22 @@ static int __init alsa_card_es18xx_init(void)
for (dev = 0; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || port[dev] == SNDRV_AUTO_PORT)
continue;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (isapnp[dev])
continue;
#endif
- if (snd_audiodrive_probe(dev) >= 0)
+ if (snd_audiodrive_probe(dev, NULL, NULL) >= 0)
cards++;
}
/* legacy auto configured cards */
cards += snd_legacy_auto_probe(possible_ports, snd_audiodrive_probe_legacy_port);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
/* ISA PnP cards at last */
- cards += isapnp_probe_cards(snd_audiodrive_pnpids, snd_audiodrive_isapnp_detect);
+ cards += pnp_register_card_driver(&es18xx_pnpc_driver);
#endif
if(!cards) {
#ifdef MODULE
- printk(KERN_ERR "ESS AudioDrive ES18xx soundcard not found or device busy\n");
+ snd_printk(KERN_ERR "ESS AudioDrive ES18xx soundcard not found or device busy\n");
#endif
return -ENODEV;
}
@@ -2265,13 +2255,18 @@ static void __exit alsa_card_es18xx_exit(void)
{
int idx;
+#ifdef CONFIG_PNP
+ /* PnP cards first */
+ pnp_unregister_card_driver(&es18xx_pnpc_driver);
+#endif
for(idx = 0; idx < SNDRV_CARDS; idx++)
- snd_card_free(snd_audiodrive_cards[idx]);
+ snd_card_free(snd_audiodrive_legacy[idx]);
}
module_init(alsa_card_es18xx_init)
module_exit(alsa_card_es18xx_exit)
+
#ifndef MODULE
/* format is: snd-es18xx=enable,index,id,isapnp,
@@ -2295,7 +2290,7 @@ static int __init alsa_card_es18xx_setup(char *str)
get_option(&str,&irq[nr_dev]) == 2 &&
get_option(&str,&dma1[nr_dev]) == 2 &&
get_option(&str,&dma2[nr_dev]) == 2);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (pnp != INT_MAX)
isapnp[nr_dev] = pnp;
#endif
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
index 156a2f9e2b8e..d5e6c7fdc70b 100644
--- a/sound/isa/gus/interwave.c
+++ b/sound/isa/gus/interwave.c
@@ -27,11 +27,7 @@
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/slab.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
#include <sound/core.h>
#include <sound/gus.h>
#include <sound/cs4231.h>
@@ -62,7 +58,7 @@ MODULE_DEVICES("{{AMD,InterWave STB with TEA6330T}}");
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_ISAPNP; /* Enable this card */
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
static int isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
#endif
static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* 0x210,0x220,0x230,0x240,0x250,0x260 */
@@ -130,56 +126,41 @@ struct snd_interwave {
#endif
unsigned short gus_status_reg;
unsigned short pcm_status_reg;
-#ifdef __ISAPNP__
- struct isapnp_dev *dev;
+#ifdef CONFIG_PNP
+ struct pnp_dev *dev;
#ifdef SNDRV_STB
- struct isapnp_dev *devtc;
+ struct pnp_dev *devtc;
#endif
#endif
};
-static snd_card_t *snd_interwave_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
+static snd_card_t *snd_interwave_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-static struct isapnp_card *snd_interwave_isapnp_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_interwave_isapnp_id[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
+#ifdef CONFIG_PNP
-#define ISAPNP_INTERWAVE(_va, _vb, _vc, _device, _audio) \
- { \
- ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
- .devs = { ISAPNP_DEVICE_ID(_va, _vb, _vc, _audio), } \
- }
-#define ISAPNP_INTERWAVE_STB(_va, _vb, _vc, _device, _audio, _tone) \
- { \
- ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
- .devs = { ISAPNP_DEVICE_ID(_va, _vb, _vc, _audio), \
- ISAPNP_DEVICE_ID(_va, _vb, _vc, _tone), } \
- }
-
-static struct isapnp_card_id snd_interwave_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_interwave_pnpids[] __devinitdata = {
#ifndef SNDRV_STB
/* Gravis UltraSound Plug & Play */
- ISAPNP_INTERWAVE('G','R','V',0x0001,0x0000),
+ { .id = "GRV0001", .devs = { { .id = "GRV0000" } } },
/* STB SoundRage32 */
- ISAPNP_INTERWAVE('S','T','B',0x011a,0x0010),
+ { .id = "STB011a", .devs = { { .id = "STB0010" } } },
/* MED3210 */
- ISAPNP_INTERWAVE('D','X','P',0x3201,0x0010),
+ { .id = "DXP3201", .devs = { { .id = "DXP0010" } } },
/* Dynasonic Pro */
/* This device also have CDC1117:DynaSonix Pro Audio Effects Processor */
- ISAPNP_INTERWAVE('C','D','C',0x1111,0x1112),
+ { .id = "CDC1111", .devs = { { .id = "CDC1112" } } },
/* Panasonic PCA761AW Audio Card */
- ISAPNP_INTERWAVE('A','D','V',0x55ff,0x0010),
+ { .id = "ADV55ff", .devs = { { .id = "ADV0010" } } },
#else
/* InterWave STB with TEA6330T */
- ISAPNP_INTERWAVE_STB('A','D','V',0x550a,0x0010,0x0015),
+ { .id = "ADV550a", .devs = { { .id = "ADV0010" }, { .id = "ADV0015" } } },
#endif
- { ISAPNP_CARD_END, }
+ { .id = "" }
};
-ISAPNP_CARD_TABLE(snd_interwave_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_interwave_pnpids);
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
#ifdef SNDRV_STB
@@ -226,9 +207,9 @@ static snd_i2c_bit_ops_t snd_interwave_i2c_bit_ops = {
.getdata = snd_interwave_i2c_getdataline,
};
-static int __init snd_interwave_detect_stb(struct snd_interwave *iwcard,
- snd_gus_card_t * gus, int dev,
- snd_i2c_bus_t **rbus)
+static int __devinit snd_interwave_detect_stb(struct snd_interwave *iwcard,
+ snd_gus_card_t * gus, int dev,
+ snd_i2c_bus_t **rbus)
{
unsigned long port;
snd_i2c_bus_t *bus;
@@ -266,13 +247,13 @@ static int __init snd_interwave_detect_stb(struct snd_interwave *iwcard,
}
#endif
-static int __init snd_interwave_detect(struct snd_interwave *iwcard,
- snd_gus_card_t * gus,
- int dev
+static int __devinit snd_interwave_detect(struct snd_interwave *iwcard,
+ snd_gus_card_t * gus,
+ int dev
#ifdef SNDRV_STB
- , snd_i2c_bus_t **rbus
+ , snd_i2c_bus_t **rbus
#endif
- )
+ )
{
unsigned long flags;
unsigned char rev1, rev2;
@@ -349,7 +330,7 @@ static void snd_interwave_interrupt(int irq, void *dev_id, struct pt_regs *regs)
} while (loop && --max > 0);
}
-static void __init snd_interwave_reset(snd_gus_card_t * gus)
+static void __devinit snd_interwave_reset(snd_gus_card_t * gus)
{
snd_gf1_write8(gus, SNDRV_GF1_GB_RESET, 0x00);
udelay(160);
@@ -357,7 +338,7 @@ static void __init snd_interwave_reset(snd_gus_card_t * gus)
udelay(160);
}
-static void __init snd_interwave_bank_sizes(snd_gus_card_t * gus, int *sizes)
+static void __devinit snd_interwave_bank_sizes(snd_gus_card_t * gus, int *sizes)
{
unsigned int idx;
unsigned int local;
@@ -406,7 +387,7 @@ struct rom_hdr {
/* 511 */ unsigned char csum;
};
-static void __init snd_interwave_detect_memory(snd_gus_card_t * gus)
+static void __devinit snd_interwave_detect_memory(snd_gus_card_t * gus)
{
static unsigned int lmc[13] =
{
@@ -509,7 +490,7 @@ static void __init snd_interwave_detect_memory(snd_gus_card_t * gus)
snd_interwave_reset(gus);
}
-static void __init snd_interwave_init(int dev, snd_gus_card_t * gus)
+static void __devinit snd_interwave_init(int dev, snd_gus_card_t * gus)
{
unsigned long flags;
@@ -540,7 +521,7 @@ CS4231_DOUBLE("Mic Playback Switch", 0, CS4231_LEFT_MIC_INPUT, CS4231_RIGHT_MIC_
CS4231_DOUBLE("Mic Playback Volume", 0, CS4231_LEFT_MIC_INPUT, CS4231_RIGHT_MIC_INPUT, 0, 0, 31, 1)
};
-static int __init snd_interwave_mixer(cs4231_t *chip)
+static int __devinit snd_interwave_mixer(cs4231_t *chip)
{
snd_card_t *card = chip->card;
snd_ctl_elem_id_t id1, id2;
@@ -588,98 +569,89 @@ static int __init snd_interwave_mixer(cs4231_t *chip)
return 0;
}
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
-static int __init snd_interwave_isapnp(int dev, struct snd_interwave *iwcard)
+static int __devinit snd_interwave_pnp(int dev, struct snd_interwave *iwcard,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
- const struct isapnp_card_id *id = snd_interwave_isapnp_id[dev];
- struct isapnp_card *card = snd_interwave_isapnp_cards[dev];
- struct isapnp_dev *pdev;
+ struct pnp_dev *pdev;
+ struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
+ int err;
- iwcard->dev = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
- if (iwcard->dev->active) {
- iwcard->dev = NULL;
+ iwcard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
+ if (iwcard->dev == NULL) {
+ kfree(cfg);
return -EBUSY;
}
#ifdef SNDRV_STB
- iwcard->devtc = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
- if (iwcard->devtc->active) {
- iwcard->dev = iwcard->devtc = NULL;
+ iwcard->devtc = pnp_request_card_device(card, id->devs[1].id, NULL);
+ if (iwcard->devtc == NULL) {
+ kfree(cfg);
return -EBUSY;
}
#endif
/* Synth & Codec initialization */
pdev = iwcard->dev;
- if (pdev->prepare(pdev)<0)
- return -EAGAIN;
+ pnp_init_resource_table(cfg);
if (port[dev] != SNDRV_AUTO_PORT) {
- isapnp_resource_change(&pdev->resource[0], port[dev], 16);
- isapnp_resource_change(&pdev->resource[1], port[dev] + 0x100, 12);
- isapnp_resource_change(&pdev->resource[2], port[dev] + 0x10c, 4);
+ pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
+ pnp_resource_change(&cfg->port_resource[1], port[dev] + 0x100, 12);
+ pnp_resource_change(&cfg->port_resource[2], port[dev] + 0x10c, 4);
}
if (dma1[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], dma1[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
if (dma2[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[1], dma2[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
if (dma2[dev] < 0)
- isapnp_resource_change(&pdev->dma_resource[1], 4, 1);
+ pnp_resource_change(&cfg->dma_resource[1], 4, 1);
if (irq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], irq[dev], 1);
- if (pdev->activate(pdev)<0) {
- snd_printk("isapnp configure failure (out of resources?)\n");
- return -EBUSY;
+ pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR "InterWave - Synth - the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ kfree(cfg);
+ snd_printk(KERN_ERR "InterWave PnP configure failure (out of resources?)\n");
+ return err;
}
- if (pdev->resource[0].start + 0x100 != pdev->resource[1].start ||
- pdev->resource[0].start + 0x10c != pdev->resource[2].start) {
- snd_printk("isapnp configure failure (wrong ports)\n");
- pdev->deactivate(pdev);
+ if (pnp_port_start(pdev, 0) + 0x100 != pnp_port_start(pdev, 1) ||
+ pnp_port_start(pdev, 0) + 0x10c != pnp_port_start(pdev, 2)) {
+ kfree(cfg);
+ snd_printk(KERN_ERR "PnP configure failure (wrong ports)\n");
return -ENOENT;
}
- port[dev] = pdev->resource[0].start;
- dma1[dev] = pdev->dma_resource[0].start;
+ port[dev] = pnp_port_start(pdev, 0);
+ dma1[dev] = pnp_dma(pdev, 1);
if (dma2[dev] >= 0)
- dma2[dev] = pdev->dma_resource[1].start;
- irq[dev] = pdev->irq_resource[0].start;
+ dma2[dev] = pnp_dma(pdev, 1);
+ irq[dev] = pnp_irq(pdev, 0);
snd_printdd("isapnp IW: sb port=0x%lx, gf1 port=0x%lx, codec port=0x%lx\n",
- pdev->resource[0].start,
- pdev->resource[1].start,
- pdev->resource[2].start);
+ pnp_port_start(pdev, 0),
+ pnp_port_start(pdev, 1),
+ pnp_port_start(pdev, 2));
snd_printdd("isapnp IW: dma1=%i, dma2=%i, irq=%i\n", dma1[dev], dma2[dev], irq[dev]);
#ifdef SNDRV_STB
/* Tone Control initialization */
pdev = iwcard->devtc;
- if (pdev->prepare(pdev)<0) {
- iwcard->dev->deactivate(iwcard->dev);
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
if (port_tc[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], port_tc[dev], 1);
- if (pdev->activate(pdev)<0) {
- snd_printk("Tone Control isapnp configure failure (out of resources?)\n");
- iwcard->dev->deactivate(iwcard->dev);
- return -EBUSY;
+ pnp_resource_change(&cfg->port_resource[0], port_tc[dev], 1);
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR "InterWave - ToneControl - the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ kfree(cfg);
+ snd_printk(KERN_ERR "InterWave ToneControl PnP configure failure (out of resources?)\n");
+ return err;
}
- port_tc[dev] = pdev->resource[0].start;
+ port_tc[dev] = pnp_port_start(pdev, 0);
snd_printdd("isapnp IW: tone control port=0x%lx\n", port_tc[dev]);
#endif
+ kfree(cfg);
return 0;
}
-
-static void snd_interwave_deactivate(struct snd_interwave *iwcard)
-{
- if (iwcard->dev) {
- iwcard->dev->deactivate(iwcard->dev);
- iwcard->dev = NULL;
- }
-#ifdef SNDRV_STB
- if (iwcard->devtc) {
- iwcard->devtc->deactivate(iwcard->devtc);
- iwcard->devtc = NULL;
- }
-#endif
-}
-
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
static void snd_interwave_free(snd_card_t *card)
{
@@ -687,9 +659,6 @@ static void snd_interwave_free(snd_card_t *card)
if (iwcard == NULL)
return;
-#ifdef __ISAPNP__
- snd_interwave_deactivate(iwcard);
-#endif
#ifdef SNDRV_STB
if (iwcard->i2c_res) {
release_resource(iwcard->i2c_res);
@@ -700,7 +669,8 @@ static void snd_interwave_free(snd_card_t *card)
free_irq(iwcard->irq, (void *)iwcard);
}
-static int __init snd_interwave_probe(int dev)
+static int __devinit snd_interwave_probe(int dev, struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
static int possible_irqs[] = {5, 11, 12, 9, 7, 15, 3, -1};
static int possible_dmas[] = {0, 1, 3, 5, 6, 7, -1};
@@ -724,8 +694,8 @@ static int __init snd_interwave_probe(int dev)
iwcard->card = card;
iwcard->irq = -1;
card->private_free = snd_interwave_free;
-#ifdef __ISAPNP__
- if (isapnp[dev] && snd_interwave_isapnp(dev, iwcard)) {
+#ifdef CONFIG_PNP
+ if (isapnp[dev] && snd_interwave_pnp(dev, iwcard, pcard, pid)) {
snd_card_free(card);
return -ENODEV;
}
@@ -879,11 +849,14 @@ static int __init snd_interwave_probe(int dev)
iwcard->cs4231 = cs4231;
iwcard->gus = gus;
- snd_interwave_cards[dev++] = card;
+ if (pcard)
+ pnp_set_card_drvdata(pcard, card);
+ else
+ snd_interwave_legacy[dev++] = card;
return 0;
}
-static int __init snd_interwave_probe_legacy_port(unsigned long xport)
+static int __devinit snd_interwave_probe_legacy_port(unsigned long xport)
{
static int dev;
int res;
@@ -891,12 +864,12 @@ static int __init snd_interwave_probe_legacy_port(unsigned long xport)
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || port[dev] != SNDRV_AUTO_PORT)
continue;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (isapnp[dev])
continue;
#endif
port[dev] = xport;
- res = snd_interwave_probe(dev);
+ res = snd_interwave_probe(dev, NULL, NULL);
if (res < 0)
port[dev] = SNDRV_AUTO_PORT;
return res;
@@ -904,10 +877,10 @@ static int __init snd_interwave_probe_legacy_port(unsigned long xport)
return -ENODEV;
}
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
-static int __init snd_interwave_isapnp_detect(struct isapnp_card *card,
- const struct isapnp_card_id *id)
+static int __devinit snd_interwave_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
@@ -915,9 +888,7 @@ static int __init snd_interwave_isapnp_detect(struct isapnp_card *card,
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || !isapnp[dev])
continue;
- snd_interwave_isapnp_cards[dev] = card;
- snd_interwave_isapnp_id[dev] = id;
- res = snd_interwave_probe(dev);
+ res = snd_interwave_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -927,7 +898,23 @@ static int __init snd_interwave_isapnp_detect(struct isapnp_card *card,
return -ENODEV;
}
-#endif /* __ISAPNP__ */
+static void __devexit snd_interwave_pnp_remove(struct pnp_card_link * pcard)
+{
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver interwave_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "interwave",
+ .id_table = snd_interwave_pnpids,
+ .probe = snd_interwave_pnp_detect,
+ .remove = __devexit_p(snd_interwave_pnp_remove),
+};
+
+#endif /* CONFIG_PNP */
static int __init alsa_card_interwave_init(void)
{
@@ -938,11 +925,11 @@ static int __init alsa_card_interwave_init(void)
for (dev = 0; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || port[dev] == SNDRV_AUTO_PORT)
continue;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (isapnp[dev])
continue;
#endif
- if (!snd_interwave_probe(dev)) {
+ if (!snd_interwave_probe(dev, NULL, NULL)) {
cards++;
continue;
}
@@ -952,9 +939,9 @@ static int __init alsa_card_interwave_init(void)
}
/* legacy auto configured cards */
cards += snd_legacy_auto_probe(possible_ports, snd_interwave_probe_legacy_port);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
/* ISA PnP cards */
- cards += isapnp_probe_cards(snd_interwave_pnpids, snd_interwave_isapnp_detect);
+ cards += pnp_register_card_driver(&interwave_pnpc_driver);
#endif
if (!cards) {
@@ -970,8 +957,12 @@ static void __exit alsa_card_interwave_exit(void)
{
int dev;
+#ifdef CONFIG_PNP
+ /* PnP cards first */
+ pnp_unregister_card_driver(&interwave_pnpc_driver);
+#endif
for (dev = 0; dev < SNDRV_CARDS; dev++)
- snd_card_free(snd_interwave_cards[dev]);
+ snd_card_free(snd_interwave_legacy[dev]);
}
module_init(alsa_card_interwave_init)
@@ -1007,7 +998,7 @@ static int __init alsa_card_interwave_setup(char *str)
get_option(&str,&midi[nr_dev]) == 2 &&
get_option(&str,&pcm_channels[nr_dev]) == 2 &&
get_option(&str,&effect[nr_dev]) == 2);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (pnp != INT_MAX)
isapnp[nr_dev] = pnp;
#endif
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
index d2a3b8927279..feb12392be8e 100644
--- a/sound/isa/opl3sa2.c
+++ b/sound/isa/opl3sa2.c
@@ -71,7 +71,7 @@ MODULE_PARM_DESC(enable, "Enable OPL3-SA soundcard.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
#ifdef CONFIG_PNP
MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
-MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
+MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
#endif
MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
@@ -157,27 +157,24 @@ struct snd_opl3sa2 {
#endif
};
-static snd_card_t *snd_opl3sa2_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
+static snd_card_t *snd_opl3sa2_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
#ifdef CONFIG_PNP
-static struct pnp_card *snd_opl3sa2_isapnp_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-static const struct pnp_card_id *snd_opl3sa2_isapnp_id[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-static struct pnp_card_id snd_opl3sa2_pnpids[] = {
+static struct pnp_card_device_id snd_opl3sa2_pnpids[] __devinitdata = {
/* Yamaha YMF719E-S (Genius Sound Maker 3DX) */
- {.id = "YMH0020", .driver_data = 0, devs : { {.id="YMH0021"}, } },
+ { .id = "YMH0020", .devs = { { "YMH0021" } } },
/* Yamaha OPL3-SA3 (integrated on Intel's Pentium II AL440LX motherboard) */
- {.id = "YMH0030", .driver_data = 0, devs : { {.id="YMH0021"}, } },
+ { .id = "YMH0030", .devs = { { "YMH0021" } } },
/* Yamaha OPL3-SA2 */
- {.id = "YMH0800", .driver_data = 0, devs : { {.id="YMH0021"}, } },
+ { .id = "YMH0800", .devs = { { "YMH0021" } } },
/* NeoMagic MagicWave 3DX */
- {.id = "NMX2200", .driver_data = 0, devs : { {.id="NMX2210"}, } },
+ { .id = "NMX2200", .devs = { { "YMH2210" } } },
/* --- */
- {.id = "", } /* end */
+ { .id = "" } /* end */
};
-/*PNP_CARD_TABLE(snd_opl3sa2_pnpids);*/
+MODULE_DEVICE_TABLE(pnp_card, snd_opl3sa2_pnpids);
#endif /* CONFIG_PNP */
@@ -268,7 +265,7 @@ static int __init snd_opl3sa2_detect(opl3sa2_t *chip)
snd_printd("OPL3-SA [0x%lx] detect (1) = 0x%x (0x%x)\n", port, tmp, tmp1);
return -ENODEV;
}
- /* try if the MIC register is accessible */
+ /* try if the MIC register is accesible */
tmp = snd_opl3sa2_read(chip, OPL3SA2_MIC);
snd_opl3sa2_write(chip, OPL3SA2_MIC, 0x8a);
if (((tmp1 = snd_opl3sa2_read(chip, OPL3SA2_MIC)) & 0x9f) != 0x8a) {
@@ -496,7 +493,8 @@ static int __init snd_opl3sa2_mixer(opl3sa2_t *chip)
snd_card_t *card = chip->card;
snd_ctl_elem_id_t id1, id2;
snd_kcontrol_t *kctl;
- int idx, err;
+ unsigned int idx;
+ int err;
memset(&id1, 0, sizeof(id1));
memset(&id2, 0, sizeof(id2));
@@ -542,9 +540,8 @@ static void snd_opl3sa2_suspend(opl3sa2_t *chip)
{
snd_card_t *card = chip->card;
- snd_power_lock(card);
if (card->power_state == SNDRV_CTL_POWER_D3hot)
- goto __skip;
+ return;
/* FIXME: is this order ok? */
chip->cs4231_suspend(chip->cs4231);
@@ -554,8 +551,6 @@ static void snd_opl3sa2_suspend(opl3sa2_t *chip)
snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D3);
snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
- __skip:
- snd_power_unlock(card);
}
static void snd_opl3sa2_resume(opl3sa2_t *chip)
@@ -563,9 +558,8 @@ static void snd_opl3sa2_resume(opl3sa2_t *chip)
snd_card_t *card = chip->card;
int i;
- snd_power_lock(card);
if (card->power_state == SNDRV_CTL_POWER_D0)
- goto __skip;
+ return;
/* power up */
snd_opl3sa2_write(chip, OPL3SA2_PM_CTRL, OPL3SA2_PM_D0);
@@ -583,8 +577,6 @@ static void snd_opl3sa2_resume(opl3sa2_t *chip)
chip->cs4231_resume(chip->cs4231);
snd_power_change_state(card, SNDRV_CTL_POWER_D0);
- __skip:
- snd_power_unlock(card);
}
/* callback for control API */
@@ -625,40 +617,66 @@ static int snd_opl3sa2_pm_callback(struct pm_dev *dev, pm_request_t rqst, void *
#endif /* CONFIG_PM */
#ifdef CONFIG_PNP
-static int __init snd_opl3sa2_isapnp(int dev, opl3sa2_t *chip)
+static int __init snd_opl3sa2_pnp(int dev, opl3sa2_t *chip,
+ struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
- const struct pnp_card_id *id = snd_opl3sa2_isapnp_id[dev];
- struct pnp_card *card = snd_opl3sa2_isapnp_cards[dev];
struct pnp_dev *pdev;
+ struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
+ int err;
- chip->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- pdev = chip->dev;
- if (!pdev){
- snd_printdd("isapnp OPL3-SA: a card was found but it did not contain the needed devices\n");
- return -ENODEV;
+ if (!cfg)
+ return -ENOMEM;
+ pdev = chip->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
+ if (chip->dev == NULL) {
+ kfree(cfg);
+ return -EBUSY;
}
- sb_port[dev] = pdev->resource[0].start;
- wss_port[dev] = pdev->resource[1].start;
- fm_port[dev] = pdev->resource[2].start;
- midi_port[dev] = pdev->resource[3].start;
- port[dev] = pdev->resource[4].start;
- dma1[dev] = pdev->dma_resource[0].start;
- dma2[dev] = pdev->dma_resource[1].start;
- irq[dev] = pdev->irq_resource[0].start;
- snd_printdd("isapnp OPL3-SA: sb port=0x%lx, wss port=0x%lx, fm port=0x%lx, midi port=0x%lx\n",
+ /* PnP initialization */
+ pnp_init_resource_table(cfg);
+ if (sb_port[dev] != SNDRV_AUTO_PORT)
+ pnp_resource_change(&cfg->port_resource[0], sb_port[dev], 16);
+ pnp_resource_change(&cfg->port_resource[1], wss_port[dev], 8);
+ if (fm_port[dev] != SNDRV_AUTO_PORT)
+ pnp_resource_change(&cfg->port_resource[2], fm_port[dev], 4);
+ if (midi_port[dev] != SNDRV_AUTO_PORT)
+ pnp_resource_change(&cfg->port_resource[3], midi_port[dev], 2);
+ if (port[dev] != SNDRV_AUTO_PORT)
+ pnp_resource_change(&cfg->port_resource[4], port[dev], 2);
+ if (dma1[dev] != SNDRV_AUTO_DMA)
+ pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
+ if (dma2[dev] != SNDRV_AUTO_DMA)
+ pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
+ if (irq[dev] != SNDRV_AUTO_IRQ)
+ pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
+ err = pnp_manual_config_dev(pdev, cfg, 0);
+ if (err < 0)
+ snd_printk(KERN_ERR "PnP manual resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ kfree(cfg);
+ snd_printk(KERN_ERR "PnP configure failure (out of resources?)\n");
+ return -EBUSY;
+ }
+ sb_port[dev] = pnp_port_start(pdev, 0);
+ wss_port[dev] = pnp_port_start(pdev, 1);
+ fm_port[dev] = pnp_port_start(pdev, 2);
+ midi_port[dev] = pnp_port_start(pdev, 3);
+ port[dev] = pnp_port_start(pdev, 4);
+ dma1[dev] = pnp_dma(pdev, 0);
+ dma2[dev] = pnp_dma(pdev, 1);
+ irq[dev] = pnp_irq(pdev, 0);
+ snd_printdd("PnP OPL3-SA: sb port=0x%lx, wss port=0x%lx, fm port=0x%lx, midi port=0x%lx\n",
sb_port[dev], wss_port[dev], fm_port[dev], midi_port[dev]);
- snd_printdd("isapnp OPL3-SA: control port=0x%lx, dma1=%i, dma2=%i, irq=%i\n",
+ snd_printdd("PnP OPL3-SA: control port=0x%lx, dma1=%i, dma2=%i, irq=%i\n",
port[dev], dma1[dev], dma2[dev], irq[dev]);
+ kfree(cfg);
return 0;
}
-
#endif /* CONFIG_PNP */
static int snd_opl3sa2_free(opl3sa2_t *chip)
{
-#ifdef CONFIG_PNP
- chip->dev = NULL;
-#endif
#ifdef CONFIG_PM
if (chip->pm_dev)
pm_unregister(chip->pm_dev);
@@ -679,7 +697,9 @@ static int snd_opl3sa2_dev_free(snd_device_t *device)
return snd_opl3sa2_free(chip);
}
-static int __init snd_opl3sa2_probe(int dev)
+static int __devinit snd_opl3sa2_probe(int dev,
+ struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
int xirq, xdma1, xdma2;
snd_card_t *card;
@@ -727,7 +747,7 @@ static int __init snd_opl3sa2_probe(int dev)
if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0)
goto __error;
#ifdef CONFIG_PNP
- if (isapnp[dev] && (err = snd_opl3sa2_isapnp(dev, chip)) < 0)
+ if (isapnp[dev] && (err = snd_opl3sa2_pnp(dev, chip, pcard, pid)) < 0)
goto __error;
#endif
chip->ymode = opl3sa3_ymode[dev] & 0x03 ; /* initialise this card from supplied (or default) parameter*/
@@ -806,7 +826,10 @@ static int __init snd_opl3sa2_probe(int dev)
if ((err = snd_card_register(card)) < 0)
goto __error;
- snd_opl3sa2_cards[dev] = card;
+ if (pcard)
+ pnp_set_card_drvdata(pcard, card);
+ else
+ snd_opl3sa2_legacy[dev] = card;
return 0;
__error:
@@ -815,18 +838,16 @@ static int __init snd_opl3sa2_probe(int dev)
}
#ifdef CONFIG_PNP
-static int __init snd_opl3sa2_isapnp_detect(struct pnp_card *card,
- const struct pnp_card_id *id)
+static int __devinit snd_opl3sa2_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
for ( ; dev < SNDRV_CARDS; dev++) {
- if (!enable[dev])
+ if (!enable[dev] && !isapnp[dev])
continue;
- snd_opl3sa2_isapnp_cards[dev] = card;
- snd_opl3sa2_isapnp_id[dev] = id;
- res = snd_opl3sa2_probe(dev);
+ res = snd_opl3sa2_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -835,18 +856,21 @@ static int __init snd_opl3sa2_isapnp_detect(struct pnp_card *card,
return -ENODEV;
}
-static void snd_opl3sa2_isapnp_remove(struct pnp_card * card)
+static void __devexit snd_opl3sa2_pnp_remove(struct pnp_card_link * pcard)
{
-/* FIXME */
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
}
-static struct pnpc_driver opl3sa2_pnpc_driver = {
- .name = "opl3sa2",
- .id_table = snd_opl3sa2_pnpids,
- .probe = snd_opl3sa2_isapnp_detect,
- .remove = snd_opl3sa2_isapnp_remove,
+static struct pnp_card_driver opl3sa2_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "opl3sa2",
+ .id_table = snd_opl3sa2_pnpids,
+ .probe = snd_opl3sa2_pnp_detect,
+ .remove = __devexit_p(snd_opl3sa2_pnp_remove),
};
-
#endif /* CONFIG_PNP */
static int __init alsa_card_opl3sa2_init(void)
@@ -860,15 +884,15 @@ static int __init alsa_card_opl3sa2_init(void)
if (isapnp[dev])
continue;
#endif
- if (snd_opl3sa2_probe(dev) >= 0)
+ if (snd_opl3sa2_probe(dev, NULL, NULL) >= 0)
cards++;
}
#ifdef CONFIG_PNP
- cards += pnpc_register_driver(&opl3sa2_pnpc_driver);
+ cards += pnp_register_card_driver(&opl3sa2_pnpc_driver);
#endif
if (!cards) {
#ifdef MODULE
- printk(KERN_ERR "Yamaha OPL3-SA soundcard not found or device busy\n");
+ snd_printk(KERN_ERR "Yamaha OPL3-SA soundcard not found or device busy\n");
#endif
return -ENODEV;
}
@@ -879,8 +903,12 @@ static void __exit alsa_card_opl3sa2_exit(void)
{
int idx;
+#ifdef CONFIG_PNP
+ /* PnP cards first */
+ pnp_unregister_card_driver(&opl3sa2_pnpc_driver);
+#endif
for (idx = 0; idx < SNDRV_CARDS; idx++)
- snd_card_free(snd_opl3sa2_cards[idx]);
+ snd_card_free(snd_opl3sa2_legacy[idx]);
}
module_init(alsa_card_opl3sa2_init)
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
index d292c1dcbbc3..f768fdfcaeb6 100644
--- a/sound/isa/opti9xx/opti92x-ad1848.c
+++ b/sound/isa/opti9xx/opti92x-ad1848.c
@@ -29,11 +29,7 @@
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/slab.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
#include <sound/core.h>
#ifdef CS4231
#include <sound/cs4231.h>
@@ -47,6 +43,11 @@
#endif /* CS4231 */
#include <sound/mpu401.h>
#include <sound/opl3.h>
+#ifdef USE_OPL4
+#ifndef OPTi93X
+#include "opl4.h" /* <sound/opl4.h> */
+#endif
+#endif
#define SNDRV_LEGACY_FIND_FREE_IRQ
#define SNDRV_LEGACY_FIND_FREE_DMA
#define SNDRV_GET_ID
@@ -267,23 +268,16 @@ struct _snd_opti9xx {
long mpu_port;
int mpu_irq;
-#if defined(OPTi93X)
- opti93x_t *opti93x;
-#elif defined(CS4231)
- cs4231_t *cs4231;
-#else
- ad1848_t *ad1848;
-#endif /* AD1848 */
- snd_rawmidi_t *rmidi;
-#ifdef __ISAPNP__
- struct isapnp_dev *dev;
- struct isapnp_dev *devmpu;
-#endif /* __ISAPNP__ */
+#ifdef CONFIG_PNP
+ struct pnp_dev *dev;
+ struct pnp_dev *devmpu;
+#endif /* CONFIG_PNP */
};
-static snd_card_t *snd_opti9xx_card = SNDRV_DEFAULT_PTR1;
+static int snd_opti9xx_first_hit = 1;
+static snd_card_t *snd_opti9xx_legacy = SNDRV_DEFAULT_PTR1;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
#define ISAPNP_OPTI9XX(_va, _vb, _vc, _device, _fa, _fb, _fc, _audio, _mpu401) \
{ \
@@ -292,22 +286,22 @@ static snd_card_t *snd_opti9xx_card = SNDRV_DEFAULT_PTR1;
ISAPNP_DEVICE_ID(_fa, _fb, _fc, _mpu401), } \
}
-static struct isapnp_card_id snd_card_opti9xx_pnpids[] = {
+static struct pnp_card_device_id snd_opti9xx_pnpids[] = {
#ifndef OPTi93X
/* OPTi 82C924 */
- ISAPNP_OPTI9XX('O','P','T',0x0924,'O','P','T',0x0000,0x0002),
+ { .id = "OPT0924", .devs = { { "OPT0000" }, { "OPT0002" } }, .driver_data = 0x0924 },
/* OPTi 82C925 */
- ISAPNP_OPTI9XX('O','P','T',0x0925,'O','P','T',0x9250,0x0002),
+ { .id = "OPT0925", .devs = { { "OPT9250" }, { "OPT0002" } }, .driver_data = 0x0925 },
#else
/* OPTi 82C931/3 */
- ISAPNP_OPTI9XX('O','P','T',0x0931,'O','P','T',0x9310,0x0002),
+ { .id = "OPT0931", .devs = { { "OPT9310" }, { "OPT0002" } }, .driver_data = 0x0931 },
#endif /* OPTi93X */
- { ISAPNP_CARD_END, }
+ { .id = "" }
};
-ISAPNP_CARD_TABLE(snd_card_opti9xx_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_opti9xx_pnpids);
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
#ifdef OPTi93X
#define DRIVER_NAME "snd-card-opti93x"
@@ -326,14 +320,14 @@ static char * snd_opti9xx_names[] = {
static long snd_legacy_find_free_ioport(long *port_table, long size)
{
while (*port_table != -1) {
- if (request_region(*port_table, size, "opti92x-ad1848"))
+ if (!check_region(*port_table, size))
return *port_table;
port_table++;
}
- return SNDRV_AUTO_PORT;
+ return -1;
}
-static int __init snd_opti9xx_init(opti9xx_t *chip, unsigned short hardware)
+static int __devinit snd_opti9xx_init(opti9xx_t *chip, unsigned short hardware)
{
static int opti9xx_mc_size[] = {7, 7, 10, 10, 2, 2, 2};
@@ -478,7 +472,7 @@ static void snd_opti9xx_write(opti9xx_t *chip, unsigned char reg,
(snd_opti9xx_read(chip, reg) & ~(mask)) | ((value) & (mask)))
-static int __init snd_opti9xx_configure(opti9xx_t *chip)
+static int __devinit snd_opti9xx_configure(opti9xx_t *chip)
{
unsigned char wss_base_bits;
unsigned char irq_bits;
@@ -1669,7 +1663,7 @@ int snd_opti93x_mixer(opti93x_t *chip)
#endif /* OPTi93X */
-static int __init snd_card_opti9xx_detect(snd_card_t *card, opti9xx_t *chip)
+static int __devinit snd_card_opti9xx_detect(snd_card_t *card, opti9xx_t *chip)
{
int i, err;
@@ -1715,112 +1709,100 @@ static int __init snd_card_opti9xx_detect(snd_card_t *card, opti9xx_t *chip)
return -ENODEV;
}
-#ifdef __ISAPNP__
-static int __init snd_card_opti9xx_isapnp(opti9xx_t *chip)
+#ifdef CONFIG_PNP
+static int __devinit snd_card_opti9xx_pnp(opti9xx_t *chip, struct pnp_card_link *card,
+ const struct pnp_card_device_id *pid)
{
- struct isapnp_dev *pdev = NULL;
- const struct isapnp_card_id *pid = snd_card_opti9xx_pnpids-1;
- static struct isapnp_card *card = NULL;
+ struct pnp_dev *pdev;
+ struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
+ int err;
- __again:
- while (1) {
- pid++;
- if (pid->card_vendor == 0)
- return -ENODEV;
- if ((card = isapnp_find_card(pid->card_vendor, pid->card_device, card)))
- break;
+ chip->dev = pnp_request_card_device(card, pid->devs[0].id, NULL);
+ if (chip->dev == NULL) {
+ kfree(cfg);
+ return -EBUSY;
}
- if (card == NULL)
- return -ENODEV;
-
- chip->dev = isapnp_find_dev(card, pid->devs[0].vendor, pid->devs[0].function, NULL);
- if (chip->dev == NULL)
- goto __again;
-
- chip->devmpu = isapnp_find_dev(card, pid->devs[1].vendor, pid->devs[1].function, NULL);
+ chip->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL);
pdev = chip->dev;
- if (pdev->prepare(pdev) < 0)
- return -EAGAIN;
+ pnp_init_resource_table(cfg);
#ifdef OPTi93X
if (port != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], port + 4, 4);
+ pnp_resource_change(&cfg->port_resource[0], port + 4, 4);
#else
- if ((pid->card_device != ISAPNP_DEVICE(0x0924)) && (port != SNDRV_AUTO_PORT))
- isapnp_resource_change(&pdev->resource[1], port, 4);
+ if (pid->driver_data != 0x0924 && port != SNDRV_AUTO_PORT)
+ pnp_resource_change(&cfg->port_resource[1], port, 4);
#endif /* OPTi93X */
if (irq != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], irq, 1);
+ pnp_resource_change(&cfg->irq_resource[0], irq, 1);
if (dma1 != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], dma1, 1);
+ pnp_resource_change(&cfg->dma_resource[0], dma1, 1);
#if defined(CS4231) || defined(OPTi93X)
if (dma2 != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[1], dma2, 1);
+ pnp_resource_change(&cfg->dma_resource[1], dma2, 1);
#endif /* CS4231 || OPTi93X */
if (fm_port != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[1], fm_port, 4);
+ pnp_resource_change(&cfg->port_resource[1], fm_port, 4);
- if (pdev->activate(pdev) < 0) {
- snd_printk("AUDIO isapnp configure failure\n");
- return -EBUSY;
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR "AUDIO the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR "AUDIO pnp configure failure\n");
+ kfree(cfg);
+ return err;
}
#ifdef OPTi93X
- port = pdev->resource[0].start - 4;
- fm_port = pdev->resource[1].start;
+ port = pnp_port_start(pdev, 0) - 4;
+ fm_port = pnp_port_start(pdev, 1);
#else
- if (pid->card_device != ISAPNP_DEVICE(0x0924))
- port = pdev->resource[1].start;
- fm_port = pdev->resource[2].start;
+ if (pid->driver_data != 0x0924)
+ port = pnp_port_start(pdev, 1);
+ fm_port = pnp_port_start(pdev, 2);
#endif /* OPTi93X */
- irq = pdev->irq_resource[0].start;
- dma1 = pdev->dma_resource[0].start;
+ irq = pnp_irq(pdev, 0);
+ dma1 = pnp_dma(pdev, 0);
#if defined(CS4231) || defined(OPTi93X)
- dma2 = pdev->dma_resource[1].start;
+ dma2 = pnp_dma(pdev, 1);
#endif /* CS4231 || OPTi93X */
pdev = chip->devmpu;
- if (pdev == NULL || pdev->prepare(pdev) < 0) {
- mpu_port = -1;
- chip->devmpu = NULL;
- return pid->card_device;
- }
-
- if (mpu_port != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], mpu_port, 2);
- if (mpu_irq != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], mpu_irq, 1);
-
- if (pdev->activate(pdev) < 0) {
- snd_printk("MPU-401 isapnp configure failure\n");
- mpu_port = -1;
- chip->devmpu = NULL;
- } else {
- mpu_port = pdev->resource[0].start;
- mpu_irq = pdev->irq_resource[0].start;
+ if (pdev) {
+ pnp_init_resource_table(cfg);
+
+ if (mpu_port != SNDRV_AUTO_PORT)
+ pnp_resource_change(&cfg->port_resource[0], mpu_port, 2);
+ if (mpu_irq != SNDRV_AUTO_IRQ)
+ pnp_resource_change(&cfg->irq_resource[0], mpu_irq, 1);
+
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR "AUDIO the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR "AUDIO pnp configure failure\n");
+ mpu_port = -1;
+ chip->devmpu = NULL;
+ } else {
+ mpu_port = pnp_port_start(pdev, 0);
+ mpu_irq = pnp_irq(pdev, 0);
+ }
}
- return pid->card_device;
+ kfree(cfg);
+ return pid->driver_data;
}
-
-static void snd_card_opti9xx_deactivate(opti9xx_t *chip)
-{
- if (chip->dev)
- chip->dev->deactivate(chip->dev);
- if (chip->devmpu)
- chip->devmpu->deactivate(chip->devmpu);
-}
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
#if 0
-static int __init snd_card_opti9xx_resources(struct snd_card_opti9xx *chip,
- snd_card_t *card)
+static int __devinit snd_card_opti9xx_resources(struct snd_card_opti9xx *chip,
+ snd_card_t *card)
{
int error, i, pnp = 0;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
pnp = chip->dev != NULL;
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
#ifndef OPTi93X
if (chip->chip->hardware == OPTi9XX_HW_82C928)
@@ -1914,13 +1896,6 @@ static void snd_card_opti9xx_free(snd_card_t *card)
opti9xx_t *chip = (opti9xx_t *)card->private_data;
if (chip) {
-#ifdef __ISAPNP__
- snd_card_opti9xx_deactivate(chip);
-#endif /* __ISAPNP__ */
- if (chip->wss_base != SNDRV_AUTO_PORT)
- release_region(chip->wss_base, 4);
- if (chip->mpu_port != SNDRV_AUTO_PORT)
- release_region(chip->mpu_port, 2);
if (chip->res_mc_base) {
release_resource(chip->res_mc_base);
kfree_nocheck(chip->res_mc_base);
@@ -1928,7 +1903,8 @@ static void snd_card_opti9xx_free(snd_card_t *card)
}
}
-static int __init snd_card_opti9xx_probe(void)
+static int __devinit snd_card_opti9xx_probe(struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
static long possible_ports[] = {0x530, 0xe80, 0xf40, 0x604, -1};
static long possible_mpu_ports[] = {0x300, 0x310, 0x320, 0x330, -1};
@@ -1956,36 +1932,28 @@ static int __init snd_card_opti9xx_probe(void)
snd_pcm_t *pcm;
snd_rawmidi_t *rmidi;
snd_hwdep_t *synth;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
int hw;
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
+ if (pcard && !snd_opti9xx_first_hit)
+ return -EBUSY;
if (!(card = snd_card_new(index, id, THIS_MODULE,
sizeof(opti9xx_t))))
return -ENOMEM;
card->private_free = snd_card_opti9xx_free;
chip = (opti9xx_t *)card->private_data;
- chip->wss_base = port;
- chip->fm_port = fm_port;
- chip->mpu_port = mpu_port;
- chip->irq = irq;
- chip->mpu_irq = mpu_irq;
- chip->dma1 = dma1;
-#if defined(CS4231) || defined(OPTi93X)
- chip->dma2 = dma2;
-#endif
-
-#ifdef __ISAPNP__
- if (isapnp && (hw = snd_card_opti9xx_isapnp(chip)) > 0) {
+#ifdef CONFIG_PNP
+ if (isapnp && (hw = snd_card_opti9xx_pnp(chip, pcard, pid)) > 0) {
switch (hw) {
- case ISAPNP_DEVICE(0x0924):
+ case 0x0924:
hw = OPTi9XX_HW_82C924;
break;
- case ISAPNP_DEVICE(0x0925):
+ case 0x0925:
hw = OPTi9XX_HW_82C925;
break;
- case ISAPNP_DEVICE(0x0931):
+ case 0x0931:
hw = OPTi9XX_HW_82C931;
break;
default:
@@ -2000,32 +1968,42 @@ static int __init snd_card_opti9xx_probe(void)
if (hw <= OPTi9XX_HW_82C930)
chip->mc_base -= 0x80;
} else {
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
if ((error = snd_card_opti9xx_detect(card, chip)) < 0) {
snd_card_free(card);
return error;
}
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
}
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
if ((chip->res_mc_base = request_region(chip->mc_base, chip->mc_base_size, "OPTi9xx MC")) == NULL) {
snd_card_free(card);
return -ENOMEM;
}
-#ifdef __ISAPNP__
+ chip->wss_base = port;
+ chip->fm_port = fm_port;
+ chip->mpu_port = mpu_port;
+ chip->irq = irq;
+ chip->mpu_irq = mpu_irq;
+ chip->dma1 = dma1;
+#if defined(CS4231) || defined(OPTi93X)
+ chip->dma2 = dma2;
+#endif
+
+#ifdef CONFIG_PNP
if (!isapnp) {
#endif
if (chip->wss_base == SNDRV_AUTO_PORT) {
- if ((chip->wss_base = snd_legacy_find_free_ioport(possible_ports, 4)) == SNDRV_AUTO_PORT) {
+ if ((chip->wss_base = snd_legacy_find_free_ioport(possible_ports, 4)) < 0) {
snd_card_free(card);
snd_printk("unable to find a free WSS port\n");
return -EBUSY;
}
}
if (chip->mpu_port == SNDRV_AUTO_PORT) {
- if ((chip->mpu_port = snd_legacy_find_free_ioport(possible_mpu_ports, 2)) == SNDRV_AUTO_PORT) {
+ if ((chip->mpu_port = snd_legacy_find_free_ioport(possible_mpu_ports, 2)) < 0) {
snd_card_free(card);
snd_printk("unable to find a free MPU401 port\n");
return -EBUSY;
@@ -2062,7 +2040,7 @@ static int __init snd_card_opti9xx_probe(void)
}
#endif
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
}
#endif
@@ -2131,14 +2109,35 @@ static int __init snd_card_opti9xx_probe(void)
snd_printk("no MPU-401 device at 0x%lx?\n", chip->mpu_port);
if (chip->fm_port > 0) {
- opl3_t *opl3;
- if (snd_opl3_create(card,
- chip->fm_port,
- chip->fm_port + 2,
- OPL3_HW_AUTO, 0, &opl3) < 0) {
+ opl3_t *opl3 = NULL;
+#ifdef USE_OPL4
+#ifndef OPTi93X
+ if (chip->hardware == OPTi9XX_HW_82C928 ||
+ chip->hardware == OPTi9XX_HW_82C929 ||
+ chip->hardware == OPTi9XX_HW_82C924) {
+ opl4_t *opl4;
+ /* assume we have an OPL4 */
+ snd_opti9xx_write_mask(chip, OPTi9XX_MC_REG(2),
+ 0x20, 0x20);
+ if (snd_opl4_create(card,
+ chip->fm_port,
+ chip->fm_port - 8,
+ 2, &opl3, &opl4) < 0) {
+ /* no luck, use OPL3 instead */
+ snd_opti9xx_write_mask(chip, OPTi9XX_MC_REG(2),
+ 0x00, 0x20);
+ }
+ }
+#endif /* !OPTi93X */
+#endif
+ if (!opl3 && snd_opl3_create(card,
+ chip->fm_port,
+ chip->fm_port + 2,
+ OPL3_HW_AUTO, 0, &opl3) < 0) {
snd_printk("no OPL device at 0x%lx-0x%lx\n",
- chip->fm_port, chip->fm_port + 4 - 1);
- } else {
+ chip->fm_port, chip->fm_port + 4 - 1);
+ }
+ if (opl3) {
if ((error = snd_opl3_timer_new(opl3,
#ifdef CS4231
1, 2)) < 0) {
@@ -2170,15 +2169,39 @@ static int __init snd_card_opti9xx_probe(void)
snd_card_free(card);
return error;
}
- snd_opti9xx_card = card;
+ snd_opti9xx_first_hit = 0;
+ if (pcard)
+ pnp_set_card_drvdata(pcard, card);
+ else
+ snd_opti9xx_legacy = card;
return 0;
}
+#ifdef CONFIG_PNP
+static void __devexit snd_opti9xx_pnp_remove(struct pnp_card_link * pcard)
+{
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
+ snd_opti9xx_first_hit = 0;
+}
+
+static struct pnp_card_driver opti9xx_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "opti9xx",
+ .id_table = snd_opti9xx_pnpids,
+ .probe = snd_card_opti9xx_probe,
+ .remove = __devexit_p(snd_opti9xx_pnp_remove),
+};
+#endif
+
static int __init alsa_card_opti9xx_init(void)
{
- int error;
+ int cards, error;
- if ((error = snd_card_opti9xx_probe())) {
+ cards = pnp_register_card_driver(&opti9xx_pnpc_driver);
+ if (cards == 0 && (error = snd_card_opti9xx_probe(NULL, NULL)) < 0) {
#ifdef MODULE
#ifdef OPTi93X
printk(KERN_ERR "no OPTi 82C93x soundcard found\n");
@@ -2193,8 +2216,11 @@ static int __init alsa_card_opti9xx_init(void)
static void __exit alsa_card_opti9xx_exit(void)
{
- if (snd_opti9xx_card)
- snd_card_free(snd_opti9xx_card);
+#ifdef CONFIG_PNP
+ pnp_unregister_card_driver(&opti9xx_pnpc_driver);
+#endif
+ if (snd_opti9xx_legacy)
+ snd_card_free(snd_opti9xx_legacy);
}
module_init(alsa_card_opti9xx_init)
@@ -2227,7 +2253,7 @@ static int __init alsa_card_opti9xx_setup(char *str)
get_option(&str,&dma2) == 2
#endif
);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (pnp != INT_MAX)
isapnp = pnp;
#endif
diff --git a/sound/isa/sb/es968.c b/sound/isa/sb/es968.c
index 7e508b8b3e6c..950e6c73d149 100644
--- a/sound/isa/sb/es968.c
+++ b/sound/isa/sb/es968.c
@@ -90,7 +90,7 @@ static void snd_card_es968_interrupt(int irq, void *dev_id,
}
}
-static int __devinit snd_card_es968_isapnp(int dev, struct snd_card_es968 *acard,
+static int __devinit snd_card_es968_pnp(int dev, struct snd_card_es968 *acard,
struct pnp_card_link *card,
const struct pnp_card_device_id *id)
{
@@ -117,10 +117,10 @@ static int __devinit snd_card_es968_isapnp(int dev, struct snd_card_es968 *acard
if (irq[dev] != SNDRV_AUTO_IRQ)
pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
- printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
+ snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
return err;
}
port[dev] = pnp_port_start(pdev, 0);
@@ -144,7 +144,7 @@ static int __init snd_card_es968_probe(int dev,
sizeof(struct snd_card_es968))) == NULL)
return -ENOMEM;
acard = (struct snd_card_es968 *)card->private_data;
- if ((error = snd_card_es968_isapnp(dev, acard, pcard, pid))) {
+ if ((error = snd_card_es968_pnp(dev, acard, pcard, pid))) {
snd_card_free(card);
return error;
}
@@ -223,7 +223,12 @@ static struct pnp_card_driver es968_pnpc_driver = {
static int __init alsa_card_es968_init(void)
{
- return (pnp_register_card_driver(&es968_pnpc_driver) ? 0 : -ENODEV);
+ int res = pnp_register_card_driver(&es968_pnpc_driver);
+#ifdef MODULE
+ if (res == 0)
+ snd_printk(KERN_ERR "no ES968 based soundcards found\n");
+#endif
+ return res < 0 ? res : 0;
}
static void __exit alsa_card_es968_exit(void)
diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
index 7576acec3203..0e38c597389c 100644
--- a/sound/isa/sb/sb16.c
+++ b/sound/isa/sb/sb16.c
@@ -103,9 +103,9 @@ MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(enable, "Enable SoundBlaster 16 soundcard.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
#ifdef CONFIG_PNP
-MODULE_PARM(pnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
-MODULE_PARM_DESC(pnp, "PnP detection for specified soundcard.");
-MODULE_PARM_SYNTAX(pnp, SNDRV_ISAPNP_DESC);
+MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
+MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
#endif
MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
MODULE_PARM_DESC(port, "Port # for SB16 driver.");
@@ -261,7 +261,7 @@ static int __devinit snd_card_sb16_pnp(int dev, struct snd_card_sb16 *acard,
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table * cfg = kmalloc(GFP_ATOMIC, sizeof(struct pnp_resource_table));
+ struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
int err;
if (!cfg)
@@ -293,11 +293,11 @@ static int __devinit snd_card_sb16_pnp(int dev, struct snd_card_sb16 *acard,
pnp_resource_change(&cfg->dma_resource[1], dma16[dev], 1);
if (irq[dev] != SNDRV_AUTO_IRQ)
pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
- printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
+ snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
kfree(cfg);
return err;
}
@@ -325,18 +325,18 @@ static int __devinit snd_card_sb16_pnp(int dev, struct snd_card_sb16 *acard,
pnp_resource_change(&cfg->port_resource[2], awe_port[dev] + 0x800, 4);
}
if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- printk(KERN_ERR PFX "WaveTable the requested resources are invalid, using auto config\n");
+ snd_printk(KERN_ERR PFX "WaveTable the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
goto __wt_error;
}
awe_port[dev] = pnp_port_start(pdev, 0);
- snd_printdd("pnp SB16: wavetable port=0x%lx\n", pdev->resource[0].start);
+ snd_printdd("pnp SB16: wavetable port=0x%lx\n", pnp_port_start(pdev, 0));
} else {
__wt_error:
if (pdev) {
pnp_release_card_device(pdev);
- printk(KERN_ERR PFX "WaveTable pnp configure failure\n");
+ snd_printk(KERN_ERR PFX "WaveTable pnp configure failure\n");
}
acard->devwt = NULL;
awe_port[dev] = -1;
@@ -386,21 +386,21 @@ static int __init snd_sb16_probe(int dev,
if (xirq == SNDRV_AUTO_IRQ) {
if ((xirq = snd_legacy_find_free_irq(possible_irqs)) < 0) {
snd_card_free(card);
- printk(KERN_ERR PFX "unable to find a free IRQ\n");
+ snd_printk(KERN_ERR PFX "unable to find a free IRQ\n");
return -EBUSY;
}
}
if (xdma8 == SNDRV_AUTO_DMA) {
if ((xdma8 = snd_legacy_find_free_dma(possible_dmas8)) < 0) {
snd_card_free(card);
- printk(KERN_ERR PFX "unable to find a free 8-bit DMA\n");
+ snd_printk(KERN_ERR PFX "unable to find a free 8-bit DMA\n");
return -EBUSY;
}
}
if (xdma16 == SNDRV_AUTO_DMA) {
if ((xdma16 = snd_legacy_find_free_dma(possible_dmas16)) < 0) {
snd_card_free(card);
- printk(KERN_ERR PFX "unable to find a free 16-bit DMA\n");
+ snd_printk(KERN_ERR PFX "unable to find a free 16-bit DMA\n");
return -EBUSY;
}
}
@@ -460,7 +460,7 @@ static int __init snd_sb16_probe(int dev,
if (snd_opl3_create(card, fm_port[dev], fm_port[dev] + 2,
OPL3_HW_OPL3, fm_port[dev] == port[dev],
&opl3) < 0) {
- printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx\n",
+ snd_printk(KERN_ERR PFX "no OPL device at 0x%lx-0x%lx\n",
fm_port[dev], fm_port[dev] + 2);
} else {
#ifdef SNDRV_SBAWE_EMU8000
@@ -488,7 +488,7 @@ static int __init snd_sb16_probe(int dev,
chip->csp = xcsp->private_data;
chip->hardware = SB_HW_16CSP;
} else {
- printk(KERN_INFO PFX "warning - CSP chip not detected on soundcard #%i\n", dev + 1);
+ snd_printk(KERN_INFO PFX "warning - CSP chip not detected on soundcard #%i\n", dev + 1);
}
}
#endif
@@ -496,7 +496,7 @@ static int __init snd_sb16_probe(int dev,
if (awe_port[dev] > 0) {
if (snd_emu8000_new(card, 1, awe_port[dev],
seq_ports[dev], NULL) < 0) {
- printk(KERN_ERR PFX "fatal error - EMU-8000 synthesizer not detected at 0x%lx\n", awe_port[dev]);
+ snd_printk(KERN_ERR PFX "fatal error - EMU-8000 synthesizer not detected at 0x%lx\n", awe_port[dev]);
snd_card_free(card);
return -ENXIO;
}
@@ -578,8 +578,6 @@ static int __devinit snd_sb16_pnp_detect(struct pnp_card_link *card,
return -ENODEV;
}
-#endif
-
static void __devexit snd_sb16_pnp_remove(struct pnp_card_link * pcard)
{
snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
@@ -596,6 +594,8 @@ static struct pnp_card_driver sb16_pnpc_driver = {
.remove = __devexit_p(snd_sb16_pnp_remove),
};
+#endif /* CONFIG_PNP */
+
static int __init alsa_card_sb16_init(void)
{
int dev, cards = 0;
@@ -614,7 +614,7 @@ static int __init alsa_card_sb16_init(void)
continue;
}
#ifdef MODULE
- printk(KERN_ERR "Sound Blaster 16+ soundcard #%i not found at 0x%lx or device busy\n", dev, port[dev]);
+ snd_printk(KERN_ERR "Sound Blaster 16+ soundcard #%i not found at 0x%lx or device busy\n", dev, port[dev]);
#endif
}
/* legacy auto configured cards */
@@ -626,11 +626,11 @@ static int __init alsa_card_sb16_init(void)
if (!cards) {
#ifdef MODULE
- printk(KERN_ERR "Sound Blaster 16 soundcard not found or device busy\n");
+ snd_printk(KERN_ERR "Sound Blaster 16 soundcard not found or device busy\n");
#ifdef SNDRV_SBAWE_EMU8000
- printk(KERN_ERR "In case, if you have non-AWE card, try snd-sb16 module\n");
+ snd_printk(KERN_ERR "In case, if you have non-AWE card, try snd-sb16 module\n");
#else
- printk(KERN_ERR "In case, if you have AWE card, try snd-sbawe module\n");
+ snd_printk(KERN_ERR "In case, if you have AWE card, try snd-sbawe module\n");
#endif
#endif
return -ENODEV;
@@ -655,7 +655,7 @@ module_exit(alsa_card_sb16_exit)
#ifndef MODULE
-/* format is: snd-sb16=enable,index,id,pnp,
+/* format is: snd-sb16=enable,index,id,isapnp,
port,mpu_port,fm_port,
irq,dma8,dma16,
mic_agc,csp,
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
index 99b1285f46df..b9510381eb25 100644
--- a/sound/isa/sb/sb8.c
+++ b/sound/isa/sb/sb8.c
@@ -143,13 +143,13 @@ static int __init snd_sb8_probe(int dev)
if ((err = snd_opl3_create(card, chip->port + 8, 0,
OPL3_HW_AUTO, 1,
&opl3)) < 0) {
- printk(KERN_ERR "sb8: no OPL device at 0x%lx\n", chip->port + 8);
+ snd_printk(KERN_ERR "sb8: no OPL device at 0x%lx\n", chip->port + 8);
}
} else {
if ((err = snd_opl3_create(card, chip->port, chip->port + 2,
OPL3_HW_AUTO, 1,
&opl3)) < 0) {
- printk(KERN_ERR "sb8: no OPL device at 0x%lx-0x%lx\n",
+ snd_printk(KERN_ERR "sb8: no OPL device at 0x%lx-0x%lx\n",
chip->port, chip->port + 2);
}
}
@@ -210,7 +210,7 @@ static int __init alsa_card_sb8_init(void)
cards += snd_legacy_auto_probe(possible_ports, snd_card_sb8_legacy_auto_probe);
if (!cards) {
#ifdef MODULE
- printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n");
+ snd_printk(KERN_ERR "Sound Blaster soundcard not found or device busy\n");
#endif
return -ENODEV;
}
diff --git a/sound/isa/sgalaxy.c b/sound/isa/sgalaxy.c
index 21e5d6f4b3e4..a67fc04dccd3 100644
--- a/sound/isa/sgalaxy.c
+++ b/sound/isa/sgalaxy.c
@@ -306,7 +306,7 @@ static int __init alsa_card_sgalaxy_init(void)
}
if (!cards) {
#ifdef MODULE
- printk(KERN_ERR "Sound Galaxy soundcard not found or device busy\n");
+ snd_printk(KERN_ERR "Sound Galaxy soundcard not found or device busy\n");
#endif
return -ENODEV;
}
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
index 34e0dc7bdd6d..30037dad49bb 100644
--- a/sound/isa/wavefront/wavefront.c
+++ b/sound/isa/wavefront/wavefront.c
@@ -23,11 +23,7 @@
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/slab.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
#include <sound/core.h>
#define SNDRV_GET_ID
#include <sound/initval.h>
@@ -66,7 +62,7 @@ MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(enable, "Enable WaveFront soundcard.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(isapnp, "ISA PnP detection for WaveFront soundcards.");
MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
@@ -102,48 +98,38 @@ MODULE_PARM(use_cs4232_midi, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(use_cs4232_midi, "Use CS4232 MPU-401 interface (inaccessibly located inside your computer)");
MODULE_PARM_SYNTAX(use_cs4232_midi, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-static snd_card_t *snd_wavefront_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
-
-static struct isapnp_card *snd_wavefront_isapnp_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_wavefront_isapnp_id[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-static struct isapnp_card_id snd_wavefront_pnpids[] __devinitdata = {
- {
- ISAPNP_CARD_ID('C','S','C',0x7532), /* Tropez */
- .devs = { ISAPNP_DEVICE_ID('C','S','C',0x0000), /* WSS */
- ISAPNP_DEVICE_ID('C','S','C',0x0010), /* CTRL */
- ISAPNP_DEVICE_ID('P','n','P',0xb006), /* MPU */
- ISAPNP_DEVICE_ID('C','S','C',000004), }, /* SYNTH */
- },
- {
- ISAPNP_CARD_ID('C','S','C',0x7632), /* Tropez+ */
- .devs = { ISAPNP_DEVICE_ID('C','S','C',0x0000), /* WSS */
- ISAPNP_DEVICE_ID('C','S','C',0x0010), /* CTRL */
- ISAPNP_DEVICE_ID('P','n','P',0xb006), /* MPU */
- ISAPNP_DEVICE_ID('C','S','C',000004), }, /* SYNTH */
- },
- { ISAPNP_CARD_END, }
+static snd_card_t *snd_wavefront_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
+
+#ifdef CONFIG_PNP
+
+static struct pnp_card_device_id snd_wavefront_pnpids[] __devinitdata = {
+ /* Tropez */
+ { .id = "CSC7532", .devs = { { "CSC0000" }, { "CSC0010" }, { "PnPb006" }, { "CSC0004" } } },
+ /* Tropez+ */
+ { .id = "CSC7632", .devs = { { "CSC0000" }, { "CSC0010" }, { "PnPb006" }, { "CSC0004" } } },
+ { .id = "" }
};
-ISAPNP_CARD_TABLE(snd_wavefront_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_wavefront_pnpids);
-static int __init
-snd_wavefront_isapnp (int dev, snd_wavefront_card_t *acard)
+static int __devinit
+snd_wavefront_pnp (int dev, snd_wavefront_card_t *acard, struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
- const struct isapnp_card_id *id = snd_wavefront_isapnp_id[dev];
- struct isapnp_card *card = snd_wavefront_isapnp_cards[dev];
- struct isapnp_dev *pdev;
- int tmp;
+ struct pnp_dev *pdev;
+ struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
+ int err;
+
+ if (!cfg)
+ return -ENOMEM;
/* Check for each logical device. */
/* CS4232 chip (aka "windows sound system") is logical device 0 */
- acard->wss = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
- if (acard->wss->active) {
- acard->wss = NULL;
+ acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL);
+ if (acard->wss == NULL) {
+ kfree(cfg);
return -EBUSY;
}
@@ -159,18 +145,18 @@ snd_wavefront_isapnp (int dev, snd_wavefront_card_t *acard)
*/
if (use_cs4232_midi[dev]) {
- acard->mpu = isapnp_find_dev(card, id->devs[2].vendor, id->devs[2].function, NULL);
- if (acard->mpu->active) {
- acard->wss = acard->synth = acard->mpu = NULL;
+ acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
+ if (acard->mpu == NULL) {
+ kfree(cfg);
return -EBUSY;
}
}
/* The ICS2115 synth is logical device 4 */
- acard->synth = isapnp_find_dev(card, id->devs[3].vendor, id->devs[3].function, NULL);
- if (acard->synth->active) {
- acard->wss = acard->synth = NULL;
+ acard->synth = pnp_request_card_device(card, id->devs[3].id, NULL);
+ if (acard->synth == NULL) {
+ kfree(cfg);
return -EBUSY;
}
@@ -178,15 +164,7 @@ snd_wavefront_isapnp (int dev, snd_wavefront_card_t *acard)
pdev = acard->wss;
- if ((tmp = pdev->prepare (pdev)) < 0) {
- if (tmp == -EBUSY) {
- snd_printk ("ISA PnP configuration appears to have "
- "been done. Restart the isapnp module.\n");
- return 0;
- }
- snd_printk ("isapnp WSS preparation failed\n");
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
/* An interesting note from the Tropez+ FAQ:
@@ -201,56 +179,55 @@ snd_wavefront_isapnp (int dev, snd_wavefront_card_t *acard)
*/
if (cs4232_pcm_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], cs4232_pcm_port[dev], 4);
if (fm_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[1], fm_port[dev], 4);
+ pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
if (dma1[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[0], dma1[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
if (dma2[dev] != SNDRV_AUTO_DMA)
- isapnp_resource_change(&pdev->dma_resource[1], dma2[dev], 1);
+ pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
if (cs4232_pcm_irq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->irq_resource[0], cs4232_pcm_irq[dev], 1);
-
- if (pdev->activate(pdev)<0) {
- snd_printk ("isapnp WSS activation failed\n");
- return -EBUSY;
+ pnp_resource_change(&cfg->irq_resource[0], cs4232_pcm_irq[dev], 1);
+
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR "PnP WSS the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR "PnP WSS pnp configure failure\n");
+ kfree(cfg);
+ return err;
}
- cs4232_pcm_port[dev] = pdev->resource[0].start;
- fm_port[dev] = pdev->resource[1].start;
- dma1[dev] = pdev->dma_resource[0].start;
- dma2[dev] = pdev->dma_resource[1].start;
- cs4232_pcm_irq[dev] = pdev->irq_resource[0].start;
+ cs4232_pcm_port[dev] = pnp_port_start(pdev, 0);
+ fm_port[dev] = pnp_port_start(pdev, 1);
+ dma1[dev] = pnp_dma(pdev, 0);
+ dma2[dev] = pnp_dma(pdev, 1);
+ cs4232_pcm_irq[dev] = pnp_irq(pdev, 0);
/* Synth initialization */
pdev = acard->synth;
- if ((tmp = pdev->prepare(pdev))<0) {
- if (tmp == -EBUSY) {
- snd_printk ("ISA PnP configuration appears to have "
- "been done. Restart the isapnp module.\n");
- }
- acard->wss->deactivate(acard->wss);
- snd_printk ("ICS2115 synth preparation failed\n");
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
+
if (ics2115_port[dev] != SNDRV_AUTO_PORT) {
- isapnp_resource_change(&pdev->resource[0], ics2115_port[dev], 16);
+ pnp_resource_change(&cfg->port_resource[0], ics2115_port[dev], 16);
}
if (ics2115_port[dev] != SNDRV_AUTO_IRQ) {
- isapnp_resource_change(&pdev->irq_resource[0], ics2115_irq[dev], 1);
+ pnp_resource_change(&cfg->irq_resource[0], ics2115_irq[dev], 1);
}
- if (pdev->activate(pdev)<0) {
- snd_printk("isapnp activation for ICS2115 failed\n");
- acard->wss->deactivate(acard->wss);
- return -EBUSY;
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR "PnP ICS2115 the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR "PnP ICS2115 pnp configure failure\n");
+ kfree(cfg);
+ return err;
}
- ics2115_port[dev] = pdev->resource[0].start;
- ics2115_irq[dev] = pdev->irq_resource[0].start;
+ ics2115_port[dev] = pnp_port_start(pdev, 0);
+ ics2115_irq[dev] = pnp_irq(pdev, 0);
/* CS4232 MPU initialization. Configure this only if
explicitly requested, since its physically inaccessible and
@@ -261,25 +238,22 @@ snd_wavefront_isapnp (int dev, snd_wavefront_card_t *acard)
pdev = acard->mpu;
- if (pdev->prepare(pdev)<0) {
- acard->wss->deactivate(acard->wss);
- if (acard->synth)
- acard->synth->deactivate(acard->synth);
- snd_printk ("CS4232 MPU preparation failed\n");
- return -EAGAIN;
- }
+ pnp_init_resource_table(cfg);
if (cs4232_mpu_port[dev] != SNDRV_AUTO_PORT)
- isapnp_resource_change(&pdev->resource[0], cs4232_mpu_port[dev], 2);
+ pnp_resource_change(&cfg->port_resource[0], cs4232_mpu_port[dev], 2);
if (cs4232_mpu_irq[dev] != SNDRV_AUTO_IRQ)
- isapnp_resource_change(&pdev->resource[0], cs4232_mpu_irq[dev], 1);
+ pnp_resource_change(&cfg->port_resource[0], cs4232_mpu_irq[dev], 1);
- if (pdev->activate(pdev)<0) {
- snd_printk("isapnp CS4232 MPU activation failed\n");
+ if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
+ snd_printk(KERN_ERR "PnP MPU401 the requested resources are invalid, using auto config\n");
+ err = pnp_activate_dev(pdev);
+ if (err < 0) {
+ snd_printk(KERN_ERR "PnP MPU401 pnp configure failure\n");
cs4232_mpu_port[dev] = SNDRV_AUTO_PORT;
} else {
- cs4232_mpu_port[dev] = pdev->resource[0].start;
- cs4232_mpu_irq[dev] = pdev->irq_resource[0].start;
+ cs4232_mpu_port[dev] = pnp_port_start(pdev, 0);
+ cs4232_mpu_irq[dev] = pnp_irq(pdev, 0);
}
snd_printk ("CS4232 MPU: port=0x%lx, irq=%i\n",
@@ -296,32 +270,11 @@ snd_wavefront_isapnp (int dev, snd_wavefront_card_t *acard)
ics2115_port[dev],
ics2115_irq[dev]);
+ kfree(cfg);
return 0;
}
-static void
-snd_wavefront_deactivate (snd_wavefront_card_t *acard)
-{
- snd_printk ("deactivating PnP devices\n");
- if (acard->wss) {
- acard->wss->deactivate(acard->wss);
- acard->wss = NULL;
- }
- if (acard->ctrl) {
- acard->ctrl->deactivate(acard->ctrl);
- acard->ctrl = NULL;
- }
- if (acard->mpu) {
- acard->mpu->deactivate(acard->mpu);
- acard->mpu = NULL;
- }
- if (acard->synth) {
- acard->synth->deactivate(acard->synth);
- acard->synth = NULL;
- }
-}
-
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
static void snd_wavefront_ics2115_interrupt(int irq,
void *dev_id,
@@ -341,7 +294,7 @@ static void snd_wavefront_ics2115_interrupt(int irq,
}
}
-snd_hwdep_t * __init
+snd_hwdep_t * __devinit
snd_wavefront_new_synth (snd_card_t *card,
int hw_dev,
snd_wavefront_card_t *acard)
@@ -367,7 +320,7 @@ snd_wavefront_new_synth (snd_card_t *card,
return wavefront_synth;
}
-snd_hwdep_t * __init
+snd_hwdep_t * __devinit
snd_wavefront_new_fx (snd_card_t *card,
int hw_dev,
snd_wavefront_card_t *acard,
@@ -394,7 +347,7 @@ snd_wavefront_new_fx (snd_card_t *card,
static snd_wavefront_mpu_id internal_id = internal_mpu;
static snd_wavefront_mpu_id external_id = external_mpu;
-snd_rawmidi_t * __init
+snd_rawmidi_t * __devinit
snd_wavefront_new_midi (snd_card_t *card,
int midi_dev,
snd_wavefront_card_t *acard,
@@ -441,9 +394,6 @@ snd_wavefront_free(snd_card_t *card)
snd_wavefront_card_t *acard = (snd_wavefront_card_t *)card->private_data;
if (acard) {
-#ifdef __ISAPNP__
- snd_wavefront_deactivate(acard);
-#endif
if (acard->wavefront.res_base != NULL) {
release_resource(acard->wavefront.res_base);
kfree_nocheck(acard->wavefront.res_base);
@@ -453,8 +403,9 @@ snd_wavefront_free(snd_card_t *card)
}
}
-static int __init
-snd_wavefront_probe (int dev)
+static int __devinit
+snd_wavefront_probe (int dev, struct pnp_card_link *pcard,
+ const struct pnp_card_device_id *pid)
{
snd_card_t *card;
snd_wavefront_card_t *acard;
@@ -472,7 +423,7 @@ snd_wavefront_probe (int dev)
if (ics2115_port[dev] < 0)
ics2115_port[dev] = SNDRV_AUTO_PORT;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (!isapnp[dev]) {
#endif
if (cs4232_pcm_port[dev] == SNDRV_AUTO_PORT) {
@@ -483,7 +434,7 @@ snd_wavefront_probe (int dev)
snd_printk("specify ICS2115 port\n");
return -ENODEV;
}
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
}
#endif
card = snd_card_new (index[dev],
@@ -502,15 +453,15 @@ snd_wavefront_probe (int dev)
spin_lock_init(&acard->wavefront.midi.virtual);
card->private_free = snd_wavefront_free;
-#ifdef __ISAPNP__
- if (isapnp[dev] && snd_wavefront_isapnp (dev, acard) < 0) {
+#ifdef CONFIG_PNP
+ if (isapnp[dev] && snd_wavefront_pnp (dev, acard, pcard, pid) < 0) {
if (cs4232_pcm_port[dev] == SNDRV_AUTO_PORT) {
snd_printk ("isapnp detection failed\n");
snd_card_free (card);
return -ENODEV;
}
}
-#endif /* __ISAPNP__ */
+#endif /* CONFIG_PNP */
/* --------- PCM --------------- */
@@ -694,14 +645,17 @@ snd_wavefront_probe (int dev)
snd_card_free(card);
return err;
}
- snd_wavefront_cards[dev] = card;
+ if (pcard)
+ pnp_set_card_drvdata(pcard, card);
+ else
+ snd_wavefront_legacy[dev] = card;
return 0;
}
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
-static int __init snd_wavefront_isapnp_detect(struct isapnp_card *card,
- const struct isapnp_card_id *id)
+static int __devinit snd_wavefront_pnp_detect(struct pnp_card_link *card,
+ const struct pnp_card_device_id *id)
{
static int dev;
int res;
@@ -709,9 +663,7 @@ static int __init snd_wavefront_isapnp_detect(struct isapnp_card *card,
for ( ; dev < SNDRV_CARDS; dev++) {
if (!enable[dev] || !isapnp[dev])
continue;
- snd_wavefront_isapnp_cards[dev] = card;
- snd_wavefront_isapnp_id[dev] = id;
- res = snd_wavefront_probe(dev);
+ res = snd_wavefront_probe(dev, card, id);
if (res < 0)
return res;
dev++;
@@ -721,7 +673,23 @@ static int __init snd_wavefront_isapnp_detect(struct isapnp_card *card,
return -ENODEV;
}
-#endif /* __ISAPNP__ */
+static void __devexit snd_wavefront_pnp_remove(struct pnp_card_link * pcard)
+{
+ snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+ snd_card_disconnect(card);
+ snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver wavefront_pnpc_driver = {
+ .flags = PNP_DRIVER_RES_DISABLE,
+ .name = "wavefront",
+ .id_table = snd_wavefront_pnpids,
+ .probe = snd_wavefront_pnp_detect,
+ .remove = __devexit_p(snd_wavefront_pnp_remove),
+};
+
+#endif /* CONFIG_PNP */
static int __init alsa_card_wavefront_init(void)
{
@@ -730,15 +698,15 @@ static int __init alsa_card_wavefront_init(void)
for (dev = 0; dev < SNDRV_CARDS; dev++) {
if (!enable[dev])
continue;
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
if (isapnp[dev])
continue;
#endif
- if (snd_wavefront_probe(dev) >= 0)
+ if (snd_wavefront_probe(dev, NULL, NULL) >= 0)
cards++;
}
-#ifdef __ISAPNP__
- cards += isapnp_probe_cards(snd_wavefront_pnpids, snd_wavefront_isapnp_detect);
+#ifdef CONFIG_PNP
+ cards += pnp_register_card_driver(&wavefront_pnpc_driver);
#endif
if (!cards) {
#ifdef MODULE
@@ -753,8 +721,9 @@ static void __exit alsa_card_wavefront_exit(void)
{
int idx;
+ pnp_unregister_card_driver(&wavefront_pnpc_driver);
for (idx = 0; idx < SNDRV_CARDS; idx++)
- snd_card_free(snd_wavefront_cards[idx]);
+ snd_card_free(snd_wavefront_legacy[idx]);
}
module_init(alsa_card_wavefront_init)
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
index 0b8cdefe9523..1271f24bf67a 100644
--- a/sound/pci/ac97/ac97_codec.c
+++ b/sound/pci/ac97/ac97_codec.c
@@ -113,7 +113,7 @@ static const ac97_codec_id_t snd_ac97_codec_ids[] = {
{ 0x414c4740, 0xfffffff0, "ALC202", NULL, NULL },
{ 0x414c4750, 0xfffffff0, "ALC250", NULL, NULL },
{ 0x434d4941, 0xffffffff, "CMI9738", NULL, NULL },
-{ 0x434d4961, 0xffffffff, "CMI9739", NULL, NULL },
+{ 0x434d4961, 0xffffffff, "CMI9739", patch_cm9739, NULL },
{ 0x43525900, 0xfffffff8, "CS4297", NULL, NULL },
{ 0x43525910, 0xfffffff8, "CS4297A", patch_cirrus_spdif, NULL },
{ 0x43525920, 0xfffffff8, "CS4294/4298", NULL, NULL },
@@ -1056,15 +1056,13 @@ static int snd_ac97_ad1980_spdif_source_put(snd_kcontrol_t * kcontrol, snd_ctl_e
return snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 0x0004, val);
}
-static const snd_kcontrol_new_t snd_ac97_ad1980_spdif_source =
- {
- iface: SNDRV_CTL_ELEM_IFACE_MIXER,
- name: SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Source",
- info: snd_ac97_ad1980_spdif_source_info,
- get: snd_ac97_ad1980_spdif_source_get,
- put: snd_ac97_ad1980_spdif_source_put,
- };
-
+static const snd_kcontrol_new_t snd_ac97_ad1980_spdif_source = {
+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+ .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Source",
+ .info = snd_ac97_ad1980_spdif_source_info,
+ .get = snd_ac97_ad1980_spdif_source_get,
+ .put = snd_ac97_ad1980_spdif_source_put,
+};
/*
* ALC650
@@ -1243,6 +1241,70 @@ static const snd_kcontrol_new_t snd_ac97_ymf753_controls_spdif[3] = {
AC97_SINGLE(SNDRV_CTL_NAME_IEC958("",NONE,NONE) "Mute", AC97_YMF753_DIT_CTRL2, 2, 1, 1)
};
+
+/*
+ * C-Media codecs
+ */
+
+static int snd_ac97_cmedia_spdif_playback_source_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+ static char *texts[] = { "Analog", "Digital" };
+
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+ uinfo->count = 1;
+ uinfo->value.enumerated.items = 2;
+ if (uinfo->value.enumerated.item > 1)
+ uinfo->value.enumerated.item = 1;
+ strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+ return 0;
+}
+
+static int snd_ac97_cmedia_spdif_playback_source_get(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+ unsigned short val;
+
+ val = ac97->regs[AC97_CM9739_SPDIF_CTRL];
+ ucontrol->value.enumerated.item[0] = (val >> 1) & 0x01;
+ return 0;
+}
+
+static int snd_ac97_cmedia_spdif_playback_source_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+
+ return snd_ac97_update_bits(ac97, AC97_CM9739_SPDIF_CTRL,
+ 0x01 << 1,
+ (ucontrol->value.enumerated.item[0] & 0x01) << 1);
+}
+
+static const snd_kcontrol_new_t snd_ac97_cm9739_controls_spdif[] = {
+ /* BIT 0: SPDI_EN - always true */
+ { /* BIT 1: SPDIFS */
+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+ .name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,NONE) "Source",
+ .info = snd_ac97_cmedia_spdif_playback_source_info,
+ .get = snd_ac97_cmedia_spdif_playback_source_get,
+ .put = snd_ac97_cmedia_spdif_playback_source_put,
+ },
+ /* BIT 2: IG_SPIV */
+ AC97_SINGLE(SNDRV_CTL_NAME_IEC958("",CAPTURE,NONE) "Valid Switch", AC97_CM9739_SPDIF_CTRL, 2, 1, 0),
+ /* BIT 3: SPI2F */
+ AC97_SINGLE(SNDRV_CTL_NAME_IEC958("",CAPTURE,NONE) "Monitor", AC97_CM9739_SPDIF_CTRL, 3, 1, 0),
+ /* BIT 4: SPI2SDI */
+ AC97_SINGLE(SNDRV_CTL_NAME_IEC958("",CAPTURE,SWITCH), AC97_CM9739_SPDIF_CTRL, 4, 1, 0),
+ /* BIT 8: SPD32 - 32bit SPDIF - not supported yet */
+};
+
+static const snd_kcontrol_new_t snd_ac97_cm9739_controls[] = {
+ AC97_SINGLE("Line-In As Surround", AC97_CM9739_MULTI_CHAN, 10, 1, 0),
+};
+
+static const snd_kcontrol_new_t snd_ac97_cm9738_controls[] = {
+ AC97_SINGLE("Line-In As Surround", AC97_CM9738_VENDOR_CTRL, 10, 1, 0),
+ AC97_SINGLE("Duplicate Front", AC97_CM9738_VENDOR_CTRL, 13, 1, 0),
+};
+
/*
*
*/
@@ -1572,12 +1634,18 @@ static int snd_ac97_mixer_build(snd_card_t * card, ac97_t * ac97)
ac97->spec.ad18xx.pcmreg[2] = 0x9f1f;
}
} else {
+ /* FIXME: C-Media chips have no PCM volume!! */
+ if (/*ac97->id == 0x434d4941 ||*/
+ ac97->id == 0x434d4942 ||
+ ac97->id == 0x434d4961)
+ goto no_pcm;
for (idx = 0; idx < 2; idx++)
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_pcm[idx], ac97))) < 0)
return err;
}
snd_ac97_write_cache(ac97, AC97_PCM, 0x9f1f);
+ no_pcm:
/* build Capture controls */
for (idx = 0; idx < 3; idx++)
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_capture[idx], ac97))) < 0)
@@ -1721,13 +1789,21 @@ static int snd_ac97_mixer_build(snd_card_t * card, ac97_t * ac97)
for (idx = 0; idx < 5; idx++)
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_spdif[idx], ac97))) < 0)
return err;
- if (ac97->id == AC97_ID_YMF753) {
+ switch (ac97->id) {
+ case AC97_ID_YMF753:
for (idx = 0; idx < 3; idx++)
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_ymf753_controls_spdif[idx], ac97))) < 0)
return err;
- } else if (ac97->id == AC97_ID_AD1980) {
+ break;
+ case AC97_ID_AD1980:
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_ad1980_spdif_source, ac97))) < 0)
return err;
+ break;
+ case AC97_ID_CM9739:
+ for (idx = 0; idx < ARRAY_SIZE(snd_ac97_cm9739_controls_spdif); idx++)
+ if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_cm9739_controls_spdif[idx], ac97))) < 0)
+ return err;
+ break;
}
/* set default PCM S/PDIF params */
/* consumer,PCM audio,no copyright,no preemphasis,PCM coder,original,48000Hz */
@@ -1770,6 +1846,16 @@ static int snd_ac97_mixer_build(snd_card_t * card, ac97_t * ac97)
if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_vt1616[idx], ac97))) < 0)
return err;
break;
+ case AC97_ID_CM9739:
+ for (idx = 1; idx < ARRAY_SIZE(snd_ac97_cm9739_controls); idx++)
+ if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_cm9739_controls[idx], ac97))) < 0)
+ return err;
+ break;
+ case AC97_ID_CM9738:
+ for (idx = 1; idx < ARRAY_SIZE(snd_ac97_cm9738_controls); idx++)
+ if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_cm9738_controls[idx], ac97))) < 0)
+ return err;
+ break;
default:
/* nothing */
break;
@@ -2029,7 +2115,12 @@ int snd_ac97_mixer(snd_card_t * card, ac97_t * _ac97, ac97_t ** rac97)
}
if (ac97->ext_id & AC97_EI_SPDIF) {
/* codec specific code (patch) should override these values */
- ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_48000 |
+ if (ac97->flags & AC97_CS_SPDIF)
+ ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_44100;
+ else if (ac97->id == AC97_ID_CM9739)
+ ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_48000;
+ else
+ ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_48000 |
SNDRV_PCM_RATE_44100 |
SNDRV_PCM_RATE_32000;
}
@@ -2149,6 +2240,12 @@ int snd_ac97_modem(snd_card_t * card, ac97_t * _ac97, ac97_t ** rac97)
ac97->card = card;
spin_lock_init(&ac97->reg_lock);
+ ac97->pci = _ac97->pci;
+ if (ac97->pci) {
+ pci_read_config_word(ac97->pci, PCI_SUBSYSTEM_VENDOR_ID, &ac97->subsystem_vendor);
+ pci_read_config_word(ac97->pci, PCI_SUBSYSTEM_ID, &ac97->subsystem_device);
+ }
+
if (ac97->reset) {
ac97->reset(ac97);
goto __access_ok;
@@ -2537,7 +2634,7 @@ static void snd_ac97_proc_init(snd_card_t * card, ac97_t * ac97, const char *pre
static int set_spdif_rate(ac97_t *ac97, unsigned short rate)
{
- unsigned short old, bits, reg;
+ unsigned short old, bits, reg, mask;
if (! (ac97->ext_id & AC97_EI_SPDIF))
return -ENODEV;
@@ -2551,7 +2648,12 @@ static int set_spdif_rate(ac97_t *ac97, unsigned short rate)
return -EINVAL;
}
reg = AC97_CSR_SPDIF;
+ mask = 1 << AC97_SC_SPSR_SHIFT;
} else {
+ if (ac97->id == AC97_ID_CM9739 && rate != 48000) {
+ snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
+ return -EINVAL;
+ }
switch (rate) {
case 44100: bits = AC97_SC_SPSR_44K; break;
case 48000: bits = AC97_SC_SPSR_48K; break;
@@ -2561,14 +2663,15 @@ static int set_spdif_rate(ac97_t *ac97, unsigned short rate)
return -EINVAL;
}
reg = AC97_SPDIF;
+ mask = AC97_SC_SPSR_MASK;
}
spin_lock(&ac97->reg_lock);
- old = ac97->regs[reg] & ~AC97_SC_SPSR_MASK;
+ old = ac97->regs[reg] & ~mask;
spin_unlock(&ac97->reg_lock);
if (old != bits) {
snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
- snd_ac97_update_bits(ac97, reg, AC97_SC_SPSR_MASK, bits);
+ snd_ac97_update_bits(ac97, reg, mask, bits);
}
snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF);
return 0;
@@ -2660,7 +2763,7 @@ void snd_ac97_suspend(ac97_t *ac97)
*/
void snd_ac97_resume(ac97_t *ac97)
{
- int i;
+ int i, is_ad18xx, codec;
if (ac97->reset) {
ac97->reset(ac97);
@@ -2685,6 +2788,20 @@ __reset_ready:
if (ac97->init)
ac97->init(ac97);
+ is_ad18xx = (ac97->id & 0xffffff40) == AC97_ID_AD1881;
+ if (is_ad18xx) {
+ /* restore the AD18xx codec configurations */
+ for (codec = 0; codec < 3; codec++) {
+ if (! ac97->spec.ad18xx.id[codec])
+ continue;
+ /* select single codec */
+ ac97->write(ac97, AC97_AD_SERIAL_CFG, ac97->spec.ad18xx.unchained[codec] | ac97->spec.ad18xx.chained[codec]);
+ ac97->write(ac97, AC97_AD_CODEC_CFG, ac97->spec.ad18xx.codec_cfg[codec]);
+ }
+ /* select all codecs */
+ ac97->write(ac97, AC97_AD_SERIAL_CFG, 0x7000);
+ }
+
/* restore ac97 status */
for (i = 2; i < 0x7c ; i += 2) {
if (i == AC97_POWERDOWN || i == AC97_EXTENDED_ID)
@@ -2693,8 +2810,42 @@ __reset_ready:
* some chip (e.g. nm256) may hang up when unsupported registers
* are accessed..!
*/
- if (test_bit(i, ac97->reg_accessed))
+ if (test_bit(i, ac97->reg_accessed)) {
+ if (is_ad18xx) {
+ /* handle multi codecs for AD18xx */
+ if (i == AC97_PCM) {
+ for (codec = 0; codec < 3; codec++) {
+ if (! ac97->spec.ad18xx.id[codec])
+ continue;
+ /* select single codec */
+ ac97->write(ac97, AC97_AD_SERIAL_CFG, ac97->spec.ad18xx.unchained[codec] | ac97->spec.ad18xx.chained[codec]);
+ /* update PCM bits */
+ ac97->write(ac97, AC97_PCM, ac97->spec.ad18xx.pcmreg[codec]);
+ }
+ /* select all codecs */
+ ac97->write(ac97, AC97_AD_SERIAL_CFG, 0x7000);
+ continue;
+ } else if (i == AC97_AD_TEST ||
+ i == AC97_AD_CODEC_CFG ||
+ i == AC97_AD_SERIAL_CFG)
+ continue; /* ignore */
+ }
snd_ac97_write(ac97, i, ac97->regs[i]);
+ snd_ac97_read(ac97, i);
+ }
+ }
+
+ if (ac97->ext_id & AC97_EI_SPDIF) {
+ if (ac97->regs[AC97_EXTENDED_STATUS] & AC97_EA_SPDIF) {
+ /* reset spdif status */
+ snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, 0);
+ snd_ac97_write(ac97, AC97_EXTENDED_STATUS, ac97->regs[AC97_EXTENDED_STATUS]);
+ if (ac97->flags & AC97_CS_SPDIF)
+ snd_ac97_write(ac97, AC97_CSR_SPDIF, ac97->regs[AC97_CSR_SPDIF]);
+ else
+ snd_ac97_write(ac97, AC97_SPDIF, ac97->regs[AC97_SPDIF]);
+ snd_ac97_update_bits(ac97, AC97_EXTENDED_STATUS, AC97_EA_SPDIF, AC97_EA_SPDIF); /* turn on again */
+ }
}
}
#endif
@@ -2742,7 +2893,6 @@ static int swap_headphone(ac97_t *ac97, int remove_master)
/**
* snd_ac97_tune_hardware - tune up the hardware
* @ac97: the ac97 instance
- * @pci: pci device
* @quirk: quirk list
*
* Do some workaround for each pci device, such as renaming of the
@@ -2752,18 +2902,13 @@ static int swap_headphone(ac97_t *ac97, int remove_master)
* Returns zero if successful, or a negative error code on failure.
*/
-int snd_ac97_tune_hardware(ac97_t *ac97, struct pci_dev *pci, struct ac97_quirk *quirk)
+int snd_ac97_tune_hardware(ac97_t *ac97, struct ac97_quirk *quirk)
{
- unsigned short vendor, device;
-
snd_assert(quirk, return -EINVAL);
- pci_read_config_word(pci, PCI_SUBSYSTEM_VENDOR_ID, &vendor);
- pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &device);
-
for (; quirk->vendor; quirk++) {
- if (quirk->vendor == vendor && quirk->device == device) {
- snd_printdd("ac97 quirk for %s (%04x:%04x)\n", quirk->name, vendor, device);
+ if (quirk->vendor == ac97->subsystem_vendor && quirk->device == ac97->subsystem_device) {
+ snd_printdd("ac97 quirk for %s (%04x:%04x)\n", quirk->name, ac97->subsystem_vendor, ac97->subsystem_device);
switch (quirk->type) {
case AC97_TUNE_HP_ONLY:
return swap_headphone(ac97, 1);
diff --git a/sound/pci/ac97/ac97_id.h b/sound/pci/ac97/ac97_id.h
index dee6e346e535..fa75c06fde9a 100644
--- a/sound/pci/ac97/ac97_id.h
+++ b/sound/pci/ac97/ac97_id.h
@@ -48,3 +48,5 @@
#define AC97_ID_ALC650 0x414c4720
#define AC97_ID_YMF753 0x594d4803
#define AC97_ID_VT1616 0x49434551
+#define AC97_ID_CM9738 0x434d4941
+#define AC97_ID_CM9739 0x434d4961
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c
index e49fb4ca34fe..8ebf2efd8526 100644
--- a/sound/pci/ac97/ac97_patch.c
+++ b/sound/pci/ac97/ac97_patch.c
@@ -221,6 +221,7 @@ static unsigned short patch_ad1881_unchained(ac97_t * ac97, int idx, unsigned sh
return 0;
ac97->spec.ad18xx.unchained[idx] = mask;
ac97->spec.ad18xx.id[idx] = val;
+ ac97->spec.ad18xx.codec_cfg[idx] = 0x0000;
return mask;
}
@@ -238,6 +239,7 @@ static int patch_ad1881_chained1(ac97_t * ac97, int idx, unsigned short codec_bi
snd_ac97_write_cache(ac97, AC97_AD_CODEC_CFG, codec_bits);
ac97->spec.ad18xx.chained[idx] = cfg_bits[idx];
ac97->spec.ad18xx.id[idx] = val;
+ ac97->spec.ad18xx.codec_cfg[idx] = codec_bits ? codec_bits : 0x0004;
return 1;
}
@@ -253,6 +255,7 @@ static void patch_ad1881_chained(ac97_t * ac97, int unchained_idx, int cidx1, in
// test for chained codecs
snd_ac97_write_cache(ac97, AC97_AD_SERIAL_CFG, ac97->spec.ad18xx.unchained[unchained_idx]);
snd_ac97_write_cache(ac97, AC97_AD_CODEC_CFG, 0x0002); // ID1C
+ ac97->spec.ad18xx.codec_cfg[unchained_idx] = 0x0002;
if (cidx1 >= 0) {
if (patch_ad1881_chained1(ac97, cidx1, 0x0006)) // SDIE | ID1C
patch_ad1881_chained1(ac97, cidx2, 0);
@@ -306,6 +309,9 @@ int patch_ad1881(ac97_t * ac97)
if (num == 1) {
/* ok, deselect all ID bits */
snd_ac97_write_cache(ac97, AC97_AD_CODEC_CFG, 0x0000);
+ ac97->spec.ad18xx.codec_cfg[0] =
+ ac97->spec.ad18xx.codec_cfg[1] =
+ ac97->spec.ad18xx.codec_cfg[2] = 0x0000;
}
/* required for AD1886/AD1885 combination */
ac97->ext_id = snd_ac97_read(ac97, AC97_EXTENDED_ID);
@@ -373,3 +379,31 @@ int patch_alc650(ac97_t * ac97)
snd_ac97_write_cache(ac97, AC97_ALC650_LFE_DAC_VOL, 0x0808);
return 0;
}
+
+int patch_cm9739(ac97_t * ac97)
+{
+ unsigned short val;
+
+ /* check spdif */
+ val = snd_ac97_read(ac97, AC97_EXTENDED_STATUS);
+ if (val & AC97_EA_SPCV) {
+ /* enable spdif in */
+ snd_ac97_write_cache(ac97, AC97_CM9739_SPDIF_CTRL,
+ snd_ac97_read(ac97, AC97_CM9739_SPDIF_CTRL) | 0x01);
+ } else {
+ ac97->ext_id &= ~AC97_EI_SPDIF; /* disable extended-id */
+ }
+
+ /* set-up multi channel */
+ /* bit 13: enable internal vref output for mic */
+ /* bit 12: enable center/lfe */
+ /* bit 14: 0 = SPDIF, 1 = EAPD */
+ snd_ac97_write_cache(ac97, AC97_CM9739_MULTI_CHAN, 0x3000);
+
+ /* FIXME: set up GPIO */
+ snd_ac97_write_cache(ac97, 0x70, 0x0100);
+ snd_ac97_write_cache(ac97, 0x72, 0x0020);
+
+ return 0;
+}
+
diff --git a/sound/pci/ac97/ac97_patch.h b/sound/pci/ac97/ac97_patch.h
index b0504e607d34..6a9ac8f7a740 100644
--- a/sound/pci/ac97/ac97_patch.h
+++ b/sound/pci/ac97/ac97_patch.h
@@ -40,3 +40,4 @@ int patch_ad1885(ac97_t * ac97);
int patch_ad1886(ac97_t * ac97);
int patch_ad1980(ac97_t * ac97);
int patch_alc650(ac97_t * ac97);
+int patch_cm9739(ac97_t * ac97);
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c
index 3a2ad9bdb9f7..b9c340b45c29 100644
--- a/sound/pci/ali5451/ali5451.c
+++ b/sound/pci/ali5451/ali5451.c
@@ -375,24 +375,27 @@ static int snd_ali_codec_ready( ali_t *codec,
unsigned int port,
int sched )
{
- signed long end_time;
+ unsigned long end_time;
+ unsigned int res;
end_time = jiffies + 10 * (HZ >> 2);
do {
- if (!(snd_ali_5451_peek(codec,port) & 0x8000))
+ res = snd_ali_5451_peek(codec,port);
+ if (! (res & 0x8000))
return 0;
if (sched) {
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1);
}
- } while (end_time - (signed long)jiffies >= 0);
- snd_printk("ali_codec_ready: codec is not ready.\n ");
+ } while (time_after_eq(end_time, jiffies));
+ snd_ali_5451_poke(codec, port, res & ~0x8000);
+ snd_printdd("ali_codec_ready: codec is not ready.\n ");
return -EIO;
}
static int snd_ali_stimer_ready(ali_t *codec, int sched)
{
- signed long end_time;
+ unsigned long end_time;
unsigned long dwChk1,dwChk2;
dwChk1 = snd_ali_5451_peek(codec, ALI_STIMER);
@@ -407,7 +410,7 @@ static int snd_ali_stimer_ready(ali_t *codec, int sched)
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1);
}
- } while (end_time - (signed long)jiffies >= 0);
+ } while (time_after_eq(end_time, jiffies));
snd_printk("ali_stimer_read: stimer is not ready.\n");
return -EIO;
}
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index 97c1cf5cdf73..bbf17e0a3f71 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -1443,7 +1443,7 @@ static void save_mixer_state(cmipci_t *cm)
ctl->put(ctl, &val); /* toggle */
event |= SNDRV_CTL_EVENT_MASK_VALUE;
}
- ctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(cm->card, event, &ctl->id);
}
}
@@ -1466,7 +1466,7 @@ static void restore_mixer_state(cmipci_t *cm)
int event;
memset(&val, 0, sizeof(val));
- ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
ctl->get(ctl, &val);
event = SNDRV_CTL_EVENT_MASK_INFO;
if (val.value.integer.value[0] != cm->mixer_res_status[i]) {
diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c
index 52551ab1ede9..6b3be4891d57 100644
--- a/sound/pci/cs4281.c
+++ b/sound/pci/cs4281.c
@@ -534,7 +534,7 @@ static void snd_cs4281_delay(unsigned int delay, int can_schedule)
{
if (delay > 999) {
if (can_schedule) {
- signed long end_time;
+ unsigned long end_time;
delay = (delay * HZ) / 1000000;
if (delay < 1)
delay = 1;
@@ -542,7 +542,7 @@ static void snd_cs4281_delay(unsigned int delay, int can_schedule)
do {
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1);
- } while (end_time - (signed long)jiffies >= 0);
+ } while (time_after_eq(end_time, jiffies));
} else {
delay += 999;
delay /= 1000;
diff --git a/sound/pci/cs46xx/cs46xx.c b/sound/pci/cs46xx/cs46xx.c
index a2c05f2bf15f..dddf58b5520c 100644
--- a/sound/pci/cs46xx/cs46xx.c
+++ b/sound/pci/cs46xx/cs46xx.c
@@ -124,6 +124,14 @@ static int __devinit snd_card_cs46xx_probe(struct pci_dev *pci,
snd_card_free(card);
return err;
}
+#ifdef CONFIG_SND_CS46XX_NEW_DSP
+ if (chip->nr_ac97_codecs ==2) {
+ if ((err = snd_cs46xx_pcm_center_lfe(chip,3,NULL)) < 0) {
+ snd_card_free(card);
+ return err;
+ }
+ }
+#endif
if ((err = snd_cs46xx_midi(chip, 0, NULL)) < 0) {
snd_card_free(card);
return err;
diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c
index 61b2496ece32..6f1a5618bc9b 100644
--- a/sound/pci/cs46xx/cs46xx_lib.c
+++ b/sound/pci/cs46xx/cs46xx_lib.c
@@ -1014,6 +1014,8 @@ static int snd_cs46xx_playback_hw_params(snd_pcm_substream_t * substream,
substream->ops = &snd_cs46xx_playback_ops;
} else if (cpcm->pcm_channel_id == DSP_PCM_REAR_CHANNEL) {
substream->ops = &snd_cs46xx_playback_rear_ops;
+ } else if (cpcm->pcm_channel_id == DSP_PCM_CENTER_LFE_CHANNEL) {
+ substream->ops = &snd_cs46xx_playback_clfe_ops;
} else if (cpcm->pcm_channel_id == DSP_IEC958_CHANNEL) {
substream->ops = &snd_cs46xx_playback_iec958_ops;
} else {
@@ -1041,6 +1043,8 @@ static int snd_cs46xx_playback_hw_params(snd_pcm_substream_t * substream,
substream->ops = &snd_cs46xx_playback_indirect_ops;
} else if (cpcm->pcm_channel_id == DSP_PCM_REAR_CHANNEL) {
substream->ops = &snd_cs46xx_playback_indirect_rear_ops;
+ } else if (cpcm->pcm_channel_id == DSP_PCM_CENTER_LFE_CHANNEL) {
+ substream->ops = &snd_cs46xx_playback_indirect_clfe_ops;
} else if (cpcm->pcm_channel_id == DSP_IEC958_CHANNEL) {
substream->ops = &snd_cs46xx_playback_indirect_iec958_ops;
} else {
@@ -1423,6 +1427,13 @@ static int snd_cs46xx_playback_open_rear(snd_pcm_substream_t * substream)
return _cs46xx_playback_open_channel(substream,DSP_PCM_REAR_CHANNEL);
}
+static int snd_cs46xx_playback_open_clfe(snd_pcm_substream_t * substream)
+{
+ snd_printdd("open center - LFE channel\n");
+
+ return _cs46xx_playback_open_channel(substream,DSP_PCM_CENTER_LFE_CHANNEL);
+}
+
static int snd_cs46xx_playback_open_iec958(snd_pcm_substream_t * substream)
{
cs46xx_t *chip = snd_pcm_substream_chip(substream);
@@ -1541,6 +1552,29 @@ snd_pcm_ops_t snd_cs46xx_playback_indirect_rear_ops = {
.ack = snd_cs46xx_playback_transfer,
};
+snd_pcm_ops_t snd_cs46xx_playback_clfe_ops = {
+ .open = snd_cs46xx_playback_open_clfe,
+ .close = snd_cs46xx_playback_close,
+ .ioctl = snd_pcm_lib_ioctl,
+ .hw_params = snd_cs46xx_playback_hw_params,
+ .hw_free = snd_cs46xx_playback_hw_free,
+ .prepare = snd_cs46xx_playback_prepare,
+ .trigger = snd_cs46xx_playback_trigger,
+ .pointer = snd_cs46xx_playback_direct_pointer,
+};
+
+snd_pcm_ops_t snd_cs46xx_playback_indirect_clfe_ops = {
+ .open = snd_cs46xx_playback_open_clfe,
+ .close = snd_cs46xx_playback_close,
+ .ioctl = snd_pcm_lib_ioctl,
+ .hw_params = snd_cs46xx_playback_hw_params,
+ .hw_free = snd_cs46xx_playback_hw_free,
+ .prepare = snd_cs46xx_playback_prepare,
+ .trigger = snd_cs46xx_playback_trigger,
+ .pointer = snd_cs46xx_playback_indirect_pointer,
+ .ack = snd_cs46xx_playback_transfer,
+};
+
snd_pcm_ops_t snd_cs46xx_playback_iec958_ops = {
.open = snd_cs46xx_playback_open_iec958,
.close = snd_cs46xx_playback_close_iec958,
@@ -1627,6 +1661,13 @@ static void snd_cs46xx_pcm_rear_free(snd_pcm_t *pcm)
snd_pcm_lib_preallocate_free_for_all(pcm);
}
+static void snd_cs46xx_pcm_center_lfe_free(snd_pcm_t *pcm)
+{
+ cs46xx_t *chip = snd_magic_cast(cs46xx_t, pcm->private_data, return);
+ chip->pcm_center_lfe = NULL;
+ snd_pcm_lib_preallocate_free_for_all(pcm);
+}
+
static void snd_cs46xx_pcm_iec958_free(snd_pcm_t *pcm)
{
cs46xx_t *chip = snd_magic_cast(cs46xx_t, pcm->private_data, return);
@@ -1699,6 +1740,35 @@ int __devinit snd_cs46xx_pcm_rear(cs46xx_t *chip, int device, snd_pcm_t ** rpcm)
return 0;
}
+int __devinit snd_cs46xx_pcm_center_lfe(cs46xx_t *chip, int device, snd_pcm_t ** rpcm)
+{
+ snd_pcm_t *pcm;
+ int err;
+
+ if (rpcm)
+ *rpcm = NULL;
+
+ if ((err = snd_pcm_new(chip->card, "CS46xx - Center LFE", device, MAX_PLAYBACK_CHANNELS, 0, &pcm)) < 0)
+ return err;
+
+ pcm->private_data = chip;
+ pcm->private_free = snd_cs46xx_pcm_center_lfe_free;
+
+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cs46xx_playback_clfe_ops);
+
+ /* global setup */
+ pcm->info_flags = 0;
+ strcpy(pcm->name, "CS46xx - Center LFE");
+ chip->pcm_center_lfe = pcm;
+
+ snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, 64*1024, 256*1024);
+
+ if (rpcm)
+ *rpcm = pcm;
+
+ return 0;
+}
+
int __devinit snd_cs46xx_pcm_iec958(cs46xx_t *chip, int device, snd_pcm_t ** rpcm)
{
snd_pcm_t *pcm;
@@ -1812,6 +1882,7 @@ static int snd_cs46xx_vol_dac_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_
return change;
}
+#if 0
static int snd_cs46xx_vol_iec958_get(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
cs46xx_t *chip = snd_kcontrol_chip(kcontrol);
@@ -1836,6 +1907,7 @@ static int snd_cs46xx_vol_iec958_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_val
return change;
}
+#endif
static int snd_mixer_boolean_info(snd_kcontrol_t *kcontrol,
snd_ctl_elem_info_t *uinfo)
@@ -2234,6 +2306,8 @@ static snd_kcontrol_new_t snd_cs46xx_controls[] __devinitdata = {
.put = snd_cs46xx_iec958_put,
.private_value = CS46XX_MIXER_SPDIF_INPUT_ELEMENT,
},
+#if 0
+/* Input IEC958 volume does not work for the moment. (Benny) */
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "IEC958 Input Volume",
@@ -2242,6 +2316,7 @@ static snd_kcontrol_new_t snd_cs46xx_controls[] __devinitdata = {
.put = snd_cs46xx_vol_iec958_put,
.private_value = (ASYNCRX_SCB_ADDR + 0xE) << 2,
},
+#endif
{
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT),
@@ -2314,16 +2389,25 @@ static snd_kcontrol_new_t snd_hercules_controls[] __devinitdata = {
};
-static void snd_cs46xx_sec_codec_reset (ac97_t * ac97)
+static void snd_cs46xx_codec_reset (ac97_t * ac97)
{
unsigned long end_time;
int err;
+ cs46xx_t * chip = snd_magic_cast(cs46xx_t,ac97->private_data,return /* -ENXIO */);
/* reset to defaults */
snd_ac97_write(ac97, AC97_RESET, 0);
- /* set codec in extended mode */
- snd_cs46xx_ac97_write(ac97,AC97_CSR_ACMODE,0x3);
+ /* set the desired CODEC mode */
+ if (chip->nr_ac97_codecs == 0) {
+ snd_printdd("cs46xx: CODOEC1 mode %04x\n",0x0);
+ snd_cs46xx_ac97_write(ac97,AC97_CSR_ACMODE,0x0);
+ } else if (chip->nr_ac97_codecs == 1) {
+ snd_printdd("cs46xx: CODOEC2 mode %04x\n",0x3);
+ snd_cs46xx_ac97_write(ac97,AC97_CSR_ACMODE,0x3);
+ } else {
+ snd_assert(0); /* should never happen ... */
+ }
udelay(50);
@@ -2372,7 +2456,9 @@ int __devinit snd_cs46xx_mixer(cs46xx_t *chip)
ac97.read = snd_cs46xx_ac97_read;
ac97.private_data = chip;
ac97.private_free = snd_cs46xx_mixer_free_ac97;
-
+#ifdef CONFIG_SND_CS46XX_NEW_DSP
+ ac97.reset = snd_cs46xx_codec_reset;
+#endif
chip->ac97[CS46XX_PRIMARY_CODEC_INDEX] = &ac97;
snd_cs46xx_ac97_write(&ac97, AC97_MASTER, 0x8000);
@@ -2432,7 +2518,7 @@ int __devinit snd_cs46xx_mixer(cs46xx_t *chip)
/* use custom reset to set secondary codec in
extended mode */
- ac97.reset = snd_cs46xx_sec_codec_reset;
+ ac97.reset = snd_cs46xx_codec_reset;
if ((err = snd_ac97_mixer(card, &ac97, &chip->ac97[CS46XX_SECONDARY_CODEC_INDEX])) < 0)
return err;
@@ -2870,6 +2956,7 @@ static int snd_cs46xx_free(cs46xx_t *chip)
kfree(chip->gameport);
}
#endif
+
if (chip->amplifier_ctrl)
chip->amplifier_ctrl(chip, -chip->amplifier); /* force to off */
@@ -2892,10 +2979,14 @@ static int snd_cs46xx_free(cs46xx_t *chip)
if (chip->active_ctrl)
chip->active_ctrl(chip, -chip->amplifier);
-
+
#ifdef CONFIG_SND_CS46XX_NEW_DSP
- cs46xx_dsp_spos_destroy(chip);
+ if (chip->dsp_spos_instance) {
+ cs46xx_dsp_spos_destroy(chip);
+ chip->dsp_spos_instance = NULL;
+ }
#endif
+
snd_magic_kfree(chip);
return 0;
}
@@ -3104,8 +3195,21 @@ static int snd_cs46xx_chip_init(cs46xx_t *chip, int busywait)
}
}
+#ifndef CONFIG_SND_CS46XX_NEW_DSP
snd_printk("create - never read ISV3 & ISV4 from AC'97\n");
return -EIO;
+#else
+ /* This may happen on a cold boot with a Terratec SiXPack 5.1.
+ Reloading the driver may help, if there's other soundcards
+ with the same problem I would like to know. (Benny) */
+
+ snd_printk("ERROR: snd-cs46xx: never read ISV3 & ISV4 from AC'97\n");
+ snd_printk(" Try reloading the ALSA driver, if you find something\n");
+ snd_printk(" broken or not working on your soundcard upon\n");
+ snd_printk(" this message please report to alsa-devel@lists.sourceforge.net\n");
+
+ return -EIO;
+#endif
ok2:
/*
@@ -3113,8 +3217,7 @@ static int snd_cs46xx_chip_init(cs46xx_t *chip, int busywait)
* commense the transfer of digital audio data to the AC97 codec.
*/
- snd_cs46xx_pokeBA0(chip, BA0_ACOSV, ACOSV_SLV3 | ACOSV_SLV4 |
- ACOSV_SLV7 | ACOSV_SLV8);
+ snd_cs46xx_pokeBA0(chip, BA0_ACOSV, ACOSV_SLV3 | ACOSV_SLV4);
/*
@@ -3224,21 +3327,7 @@ int __devinit snd_cs46xx_start_dsp(cs46xx_t *chip)
tmp |= 0x00000001;
snd_cs46xx_poke(chip, BA1_CIE, tmp); /* capture interrupt enable */
-#ifdef CONFIG_SND_CS46XX_NEW_DSP
- /* set the attenuation to 0dB */
- /* snd_cs46xx_poke(chip, (MASTERMIX_SCB_ADDR + 0xE) << 2, 0x80008000);
- snd_cs46xx_poke(chip, (VARIDECIMATE_SCB_ADDR + 0xE) << 2, 0x80008000); */
-
- /*
- * Initialize cs46xx SPDIF controller
- */
-
- /* time countdown enable */
- cs46xx_poke_via_dsp (chip,SP_ASER_COUNTDOWN, 0x80000000);
-
- /* SPDIF input MASTER ENABLE */
- cs46xx_poke_via_dsp (chip,SP_SPDIN_CONTROL, 0x800003ff);
-#else
+#ifndef CONFIG_SND_CS46XX_NEW_DSP
/* set the attenuation to 0dB */
snd_cs46xx_poke(chip, BA1_PVOL, 0x80008000);
snd_cs46xx_poke(chip, BA1_CVOL, 0x80008000);
@@ -3312,7 +3401,8 @@ static int voyetra_setup_eapd_slot(cs46xx_t *chip)
logic_type = snd_cs46xx_codec_read(chip, AC97_GPIO_POLARITY,
CS46XX_SECONDARY_CODEC_INDEX);
- logic_type &=0x27F;
+ logic_type &=0x27F;
+
snd_cs46xx_codec_write (chip, AC97_GPIO_POLARITY, logic_type,
CS46XX_SECONDARY_CODEC_INDEX);
@@ -3592,55 +3682,62 @@ static struct cs_card_type __devinitdata cards[] = {
.id = 0x3357,
.name = "Voyetra",
.amp = amp_voyetra,
- .mixer_init = voyetra_mixer_init
+ .mixer_init = voyetra_mixer_init,
},
{
.vendor = 0x1071,
.id = 0x6003,
.name = "Mitac MI6020/21",
- .amp = amp_voyetra
+ .amp = amp_voyetra,
},
{
.vendor = 0x14AF,
.id = 0x0050,
.name = "Hercules Game Theatre XP",
.amp = amp_hercules,
- .mixer_init = hercules_mixer_init
+ .mixer_init = hercules_mixer_init,
},
{
.vendor = 0x1681,
.id = 0x0050,
.name = "Hercules Game Theatre XP",
.amp = amp_hercules,
- .mixer_init = hercules_mixer_init
+ .mixer_init = hercules_mixer_init,
},
{
.vendor = 0x1681,
.id = 0x0051,
.name = "Hercules Game Theatre XP",
.amp = amp_hercules,
- .mixer_init = hercules_mixer_init
+ .mixer_init = hercules_mixer_init,
+
},
{
.vendor = 0x1681,
.id = 0x0052,
.name = "Hercules Game Theatre XP",
.amp = amp_hercules,
- .mixer_init = hercules_mixer_init
+ .mixer_init = hercules_mixer_init,
},
{
.vendor = 0x1681,
.id = 0x0053,
.name = "Hercules Game Theatre XP",
.amp = amp_hercules,
- .mixer_init = hercules_mixer_init
+ .mixer_init = hercules_mixer_init,
},
{
.vendor = 0x1681,
.id = 0x0054,
.name = "Hercules Game Theatre XP",
.amp = amp_hercules,
- .mixer_init = hercules_mixer_init
+ .mixer_init = hercules_mixer_init,
+ },
+ /* Teratec */
+ {
+ .vendor = 0x153b,
+ .id = 0x1136,
+ .name = "Terratec SiXPack 5.1",
},
/* Not sure if the 570 needs the clkrun hack */
{
@@ -3648,19 +3745,19 @@ static struct cs_card_type __devinitdata cards[] = {
.id = 0x0132,
.name = "Thinkpad 570",
.init = clkrun_init,
- .active = clkrun_hack
+ .active = clkrun_hack,
},
{
.vendor = PCI_VENDOR_ID_IBM,
.id = 0x0153,
.name = "Thinkpad 600X/A20/T20",
.init = clkrun_init,
- .active = clkrun_hack
+ .active = clkrun_hack,
},
{
.vendor = PCI_VENDOR_ID_IBM,
.id = 0x1010,
- .name = "Thinkpad 600E (unsupported)"
+ .name = "Thinkpad 600E (unsupported)",
},
{} /* terminator */
};
@@ -3823,10 +3920,12 @@ int __devinit snd_cs46xx_create(snd_card_t * card,
for (cp = &cards[0]; cp->name; cp++) {
if (cp->vendor == ss_vendor && cp->id == ss_card) {
- snd_printd ("hack for %s enabled\n", cp->name);
+ snd_printdd ("hack for %s enabled\n", cp->name);
+
chip->amplifier_ctrl = cp->amp;
chip->active_ctrl = cp->active;
chip->mixer_init = cp->mixer_init;
+
if (cp->init)
cp->init(chip);
break;
@@ -3867,6 +3966,7 @@ int __devinit snd_cs46xx_create(snd_card_t * card,
return -ENOMEM;
}
}
+
if (request_irq(pci->irq, snd_cs46xx_interrupt, SA_INTERRUPT|SA_SHIRQ, "CS46XX", (void *) chip)) {
snd_printk("unable to grab IRQ %d\n", pci->irq);
snd_cs46xx_free(chip);
diff --git a/sound/pci/cs46xx/cs46xx_lib.h b/sound/pci/cs46xx/cs46xx_lib.h
index b3b6abd621ad..3eae4f2336fe 100644
--- a/sound/pci/cs46xx/cs46xx_lib.h
+++ b/sound/pci/cs46xx/cs46xx_lib.h
@@ -63,6 +63,8 @@ extern snd_pcm_ops_t snd_cs46xx_playback_rear_ops;
extern snd_pcm_ops_t snd_cs46xx_playback_indirect_rear_ops;
extern snd_pcm_ops_t snd_cs46xx_playback_iec958_ops;
extern snd_pcm_ops_t snd_cs46xx_playback_indirect_iec958_ops;
+extern snd_pcm_ops_t snd_cs46xx_playback_clfe_ops;
+extern snd_pcm_ops_t snd_cs46xx_playback_indirect_clfe_ops;
/*
diff --git a/sound/pci/cs46xx/dsp_spos.c b/sound/pci/cs46xx/dsp_spos.c
index e32027a71deb..571e9623e2cf 100644
--- a/sound/pci/cs46xx/dsp_spos.c
+++ b/sound/pci/cs46xx/dsp_spos.c
@@ -291,11 +291,14 @@ void cs46xx_dsp_spos_destroy (cs46xx_t * chip)
if (ins->code.data)
kfree(ins->code.data);
+
if (ins->symbol_table.symbols)
vfree(ins->symbol_table.symbols);
+
if (ins->modules)
kfree(ins->modules);
- kfree(ins);
+
+ kfree(ins);
up(&chip->spos_mutex);
}
@@ -630,7 +633,7 @@ static void cs46xx_dsp_proc_sample_dump_read (snd_info_entry_t *entry, snd_info_
snd_iprintf(buffer,"\nSRC_TASK_SCB1:\n");
col = 0;
- for (i = 0x2580 ; i < 0x2580 + 0x40 ; i += sizeof(u32),col ++) {
+ for (i = 0x2480 ; i < 0x2480 + 0x40 ; i += sizeof(u32),col ++) {
if (col == 4) {
snd_iprintf(buffer,"\n");
col = 0;
@@ -1030,7 +1033,6 @@ dsp_task_descriptor_t * cs46xx_dsp_create_task_tree (cs46xx_t *chip,char * name
return desc;
}
-
int cs46xx_dsp_scb_and_task_init (cs46xx_t *chip)
{
dsp_spos_instance_t * ins = chip->dsp_spos_instance;
@@ -1049,8 +1051,11 @@ int cs46xx_dsp_scb_and_task_init (cs46xx_t *chip)
dsp_scb_descriptor_t * record_mix_scb;
dsp_scb_descriptor_t * write_back_scb;
dsp_scb_descriptor_t * vari_decimate_scb;
- dsp_scb_descriptor_t * sec_codec_out_scb;
+ dsp_scb_descriptor_t * rear_codec_out_scb;
+ dsp_scb_descriptor_t * clfe_codec_out_scb;
dsp_scb_descriptor_t * magic_snoop_scb;
+
+ int fifo_addr,fifo_span,valid_slots;
spos_control_block_t sposcb = {
/* 0 */ HFG_TREE_SCB,HFG_STACK,
@@ -1335,28 +1340,78 @@ int cs46xx_dsp_scb_and_task_init (cs46xx_t *chip)
if (!record_mix_scb) goto _fail_end;
- /* create secondary CODEC output */
- sec_codec_out_scb = cs46xx_dsp_create_codec_out_scb(chip,"CodecOutSCB_II",0x0010,0x0040,
- REAR_MIXER_SCB_ADDR,
- SEC_CODECOUT_SCB_ADDR,codec_in_scb,
- SCB_ON_PARENT_NEXT_SCB);
- if (!sec_codec_out_scb) goto _fail_end;
+ valid_slots = snd_cs46xx_peekBA0(chip, BA0_ACOSV);
+
+ snd_assert (chip->nr_ac97_codecs == 1 || chip->nr_ac97_codecs == 2);
+ if (chip->nr_ac97_codecs == 1) {
+ /* output on slot 5 and 11
+ on primary CODEC */
+ fifo_addr = 0x20;
+ fifo_span = 0x60;
+ /* enable slot 5 and 11 */
+ valid_slots |= ACOSV_SLV5 | ACOSV_SLV11;
+ } else {
+ /* output on slot 7 and 8
+ on secondary CODEC */
+ fifo_addr = 0x40;
+ fifo_span = 0x10;
+
+ /* enable slot 7 and 8 */
+ valid_slots |= ACOSV_SLV7 | ACOSV_SLV8;
+ }
+ /* create CODEC tasklet for rear speakers output*/
+ rear_codec_out_scb = cs46xx_dsp_create_codec_out_scb(chip,"CodecOutSCB_Rear",fifo_span,fifo_addr,
+ REAR_MIXER_SCB_ADDR,
+ REAR_CODECOUT_SCB_ADDR,codec_in_scb,
+ SCB_ON_PARENT_NEXT_SCB);
+ if (!rear_codec_out_scb) goto _fail_end;
+
+
/* create the rear PCM channel mixer SCB */
rear_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"RearMixerSCB",
MIX_SAMPLE_BUF3,
REAR_MIXER_SCB_ADDR,
- sec_codec_out_scb,
+ rear_codec_out_scb,
SCB_ON_PARENT_SUBLIST_SCB);
ins->rear_mix_scb = rear_mix_scb;
if (!rear_mix_scb) goto _fail_end;
+
+ if (chip->nr_ac97_codecs == 2) {
+ /* create CODEC tasklet for rear Center/LFE output
+ slot 6 and 9 on seconadry CODEC */
+ clfe_codec_out_scb = cs46xx_dsp_create_codec_out_scb(chip,"CodecOutSCB_CLFE",0x0030,0x0030,
+ CLFE_MIXER_SCB_ADDR,
+ CLFE_CODEC_SCB_ADDR,
+ rear_codec_out_scb,
+ SCB_ON_PARENT_NEXT_SCB);
+ if (!clfe_codec_out_scb) goto _fail_end;
+
+
+ /* create the rear PCM channel mixer SCB */
+ ins->center_lfe_mix_scb = cs46xx_dsp_create_mix_only_scb(chip,"CLFEMixerSCB",
+ MIX_SAMPLE_BUF4,
+ CLFE_MIXER_SCB_ADDR,
+ clfe_codec_out_scb,
+ SCB_ON_PARENT_SUBLIST_SCB);
+ if (!ins->center_lfe_mix_scb) goto _fail_end;
+
+ /* enable slot 6 and 9 */
+ valid_slots |= ACOSV_SLV6 | ACOSV_SLV9;
+ } else {
+ clfe_codec_out_scb = rear_codec_out_scb;
+ ins->center_lfe_mix_scb = rear_mix_scb;
+ }
+
+ /* enable slots depending on CODEC configuration */
+ snd_cs46xx_pokeBA0(chip, BA0_ACOSV, valid_slots);
/* the magic snooper */
magic_snoop_scb = cs46xx_dsp_create_magic_snoop_scb (chip,"MagicSnoopSCB_I",OUTPUTSNOOP_SCB_ADDR,
OUTPUT_SNOOP_BUFFER,
codec_out_scb,
- sec_codec_out_scb,
+ clfe_codec_out_scb,
SCB_ON_PARENT_NEXT_SCB);
@@ -1375,10 +1430,9 @@ int cs46xx_dsp_scb_and_task_init (cs46xx_t *chip)
SRC_OUTPUT_BUF1,
SRC_DELAY_BUF1,SRCTASK_SCB_ADDR,
master_mix_scb,
- SCB_ON_PARENT_SUBLIST_SCB,0);
+ SCB_ON_PARENT_SUBLIST_SCB,1);
if (!src_task_scb) goto _fail_end;
-
cs46xx_src_unlink(chip,src_task_scb);
/* NOTE: when we now how to detect the SPDIF input
@@ -1453,12 +1507,12 @@ int cs46xx_dsp_async_init (cs46xx_t *chip, dsp_scb_descriptor_t * fg_entry)
/* 0 */ DSP_SPOS_UULO,DSP_SPOS_UUHI,
/* 1 */ 0,
/* 2 */ 0,
- /* 3 */ 1,4000,
- /* 4 */ DSP_SPOS_UUUU,
- /* 5 */ DSP_SPOS_UULO,DSP_SPOS_UUHI,
- /* 6 */ DSP_SPOS_UUUU,
- /* 7 */ DSP_SPOS_UU,DSP_SPOS_DC,
- /* 8 */ DSP_SPOS_UUUU,
+ /* 3 */ 1,4000, /* SPDIFICountLimit SPDIFICount */
+ /* 4 */ DSP_SPOS_UUUU, /* SPDIFIStatusData */
+ /* 5 */ 0,DSP_SPOS_UUHI, /* StatusData, Free4 */
+ /* 6 */ DSP_SPOS_UUUU, /* Free3 */
+ /* 7 */ DSP_SPOS_UU,DSP_SPOS_DC, /* Free2 BitCount*/
+ /* 8 */ DSP_SPOS_UUUU, /* TempStatus */
/* 9 */ SPDIFO_SCB_INST, NULL_SCB_ADDR,
/* A */ spdifi_task->address,
SPDIFI_SCB_INST + SPDIFIFIFOPointer,
@@ -1470,7 +1524,7 @@ int cs46xx_dsp_async_init (cs46xx_t *chip, dsp_scb_descriptor_t * fg_entry)
/* C */ (SPDIFI_IP_OUTPUT_BUFFER1 << 0x10) | 0xFFFC,
/* D */ 0x8048,0,
/* E */ 0x01f0,0x0001,
- /* F */ DSP_SPOS_UUUU
+ /* F */ DSP_SPOS_UUUU /* SPDIN_STATUS monitor */
};
/* 0xBA0 */
@@ -1579,6 +1633,9 @@ static void cs46xx_dsp_disable_spdif_hw (cs46xx_t *chip)
/*cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, ins->spdif_csuv_default);*/
cs46xx_poke_via_dsp (chip,SP_SPDOUT_CSUV, 0x0);
+ /* clear fifo pointer */
+ cs46xx_poke_via_dsp (chip,SP_SPDIN_FIFOPTR, 0x0);
+
/* monitor state */
ins->spdif_status_out &= ~DSP_SPDIF_STATUS_HW_ENABLED;
}
@@ -1618,6 +1675,20 @@ int cs46xx_dsp_enable_spdif_in (cs46xx_t *chip)
snd_assert (ins->spdif_in_src != NULL,return -EINVAL);
down(&chip->spos_mutex);
+
+ if ( ! (ins->spdif_status_out & DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED) ) {
+ /* time countdown enable */
+ cs46xx_poke_via_dsp (chip,SP_ASER_COUNTDOWN, 0x80000005);
+ /* NOTE: 80000005 value is just magic. With all values
+ that I've tested this one seem to give the best result.
+ Got no explication why. (Benny) */
+
+ /* SPDIF input MASTER ENABLE */
+ cs46xx_poke_via_dsp (chip,SP_SPDIN_CONTROL, 0x800003ff);
+
+ ins->spdif_status_out |= DSP_SPDIF_STATUS_INPUT_CTRL_ENABLED;
+ }
+
/* create and start the asynchronous receiver SCB */
ins->asynch_rx_scb = cs46xx_dsp_create_asynch_fg_rx_scb(chip,"AsynchFGRxSCB",
ASYNCRX_SCB_ADDR,
@@ -1629,11 +1700,11 @@ int cs46xx_dsp_enable_spdif_in (cs46xx_t *chip)
spin_lock_irq(&chip->reg_lock);
/* reset SPDIF input sample buffer pointer */
- snd_cs46xx_poke (chip, (SPDIFI_SCB_INST + 0x0c) << 2,
- (SPDIFI_IP_OUTPUT_BUFFER1 << 0x10) | 0xFFFC);
+ /*snd_cs46xx_poke (chip, (SPDIFI_SCB_INST + 0x0c) << 2,
+ (SPDIFI_IP_OUTPUT_BUFFER1 << 0x10) | 0xFFFC);*/
/* reset FIFO ptr */
- cs46xx_poke_via_dsp (chip,SP_SPDIN_FIFOPTR, 0x0);
+ /*cs46xx_poke_via_dsp (chip,SP_SPDIN_FIFOPTR, 0x0);*/
cs46xx_src_link(chip,ins->spdif_in_src);
/* unmute SRC volume */
@@ -1657,9 +1728,10 @@ int cs46xx_dsp_disable_spdif_in (cs46xx_t *chip)
dsp_spos_instance_t * ins = chip->dsp_spos_instance;
snd_assert (ins->asynch_rx_scb != NULL, return -EINVAL);
- snd_assert (ins->spdif_in_src != NULL,return -EINVAL);
+ snd_assert (ins->spdif_in_src != NULL,return -EINVAL);
down(&chip->spos_mutex);
+
/* Remove the asynchronous receiver SCB */
cs46xx_dsp_remove_scb (chip,ins->asynch_rx_scb);
ins->asynch_rx_scb = NULL;
@@ -1727,10 +1799,10 @@ int cs46xx_dsp_disable_adc_capture (cs46xx_t *chip)
snd_assert (ins->adc_input != NULL,return -EINVAL);
- down(&chip->spos_mutex);
+ down(&chip->spos_mutex);
cs46xx_dsp_remove_scb (chip,ins->adc_input);
ins->adc_input = NULL;
- up(&chip->spos_mutex);
+ up(&chip->spos_mutex);
return 0;
}
diff --git a/sound/pci/cs46xx/dsp_spos.h b/sound/pci/cs46xx/dsp_spos.h
index 3831e236c3e8..90871bf9762f 100644
--- a/sound/pci/cs46xx/dsp_spos.h
+++ b/sound/pci/cs46xx/dsp_spos.h
@@ -73,9 +73,9 @@ typedef enum {
#define SPDIFI_IP_OUTPUT_BUFFER1 0x0E00
#define SPDIFO_IP_OUTPUT_BUFFER1 0x1000
#define MIX_SAMPLE_BUF1 0x1400
-#define MIX_SAMPLE_BUF2 0x2D00
-#define MIX_SAMPLE_BUF3 0x2E00
-#define MIX_SAMPLE_BUF4 0x2F00
+#define MIX_SAMPLE_BUF2 0x2E80
+#define MIX_SAMPLE_BUF3 0x2F00
+#define MIX_SAMPLE_BUF4 0x2F80
#define MIX_SAMPLE_BUF5 0x3000
/* Task stack address */
@@ -103,12 +103,13 @@ typedef enum {
#define OUTPUTSNOOP_SCB_ADDR 0x110
#define PCMSERIALINII_SCB_ADDR 0x120
#define SPIOWRITE_SCB_ADDR 0x130
-#define SEC_CODECOUT_SCB_ADDR 0x140
+#define REAR_CODECOUT_SCB_ADDR 0x140
#define OUTPUTSNOOPII_SCB_ADDR 0x150
#define PCMSERIALIN_PCM_SCB_ADDR 0x160
#define RECORD_MIXER_SCB_ADDR 0x170
#define REAR_MIXER_SCB_ADDR 0x180
-#define SPDIF_MIXER_SCB_ADDR 0x190
+#define CLFE_MIXER_SCB_ADDR 0x190
+#define CLFE_CODEC_SCB_ADDR 0x1A0
/* hyperforground SCB's*/
#define HFG_TREE_SCB 0xBA0
diff --git a/sound/pci/cs46xx/dsp_spos_scb_lib.c b/sound/pci/cs46xx/dsp_spos_scb_lib.c
index 67661ca81c37..39d4cd6c25fc 100644
--- a/sound/pci/cs46xx/dsp_spos_scb_lib.c
+++ b/sound/pci/cs46xx/dsp_spos_scb_lib.c
@@ -681,6 +681,54 @@ cs46xx_dsp_create_src_task_scb(cs46xx_t * chip,char * scb_name,
return scb;
}
+dsp_scb_descriptor_t *
+cs46xx_dsp_create_filter_scb(cs46xx_t * chip,char * scb_name,
+ u16 buffer_addr,u32 dest,
+ dsp_scb_descriptor_t * parent_scb,
+ int scb_child_type) {
+ dsp_scb_descriptor_t * scb;
+
+ filter_scb_t filter_scb = {
+ .a0_right = 0x41a9,
+ .a0_left = 0x41a9,
+ .a1_right = 0xb8e4,
+ .a1_left = 0xb8e4,
+ .a2_right = 0x3e55,
+ .a2_left = 0x3e55,
+
+ .filter_unused3 = 0x0000,
+ .filter_unused2 = 0x0000,
+
+ .output_buf_ptr = buffer_addr,
+ .init = 0x000,
+
+ .prev_sample_output1 = 0x00000000,
+ .prev_sample_output2 = 0x00000000,
+
+ .prev_sample_input1 = 0x00000000,
+ .prev_sample_input2 = 0x00000000,
+
+ .next_scb_ptr = 0x0000,
+ .sub_list_ptr = 0x0000,
+
+ .entry_point = 0x0000,
+ .spb_ptr = 0x0000,
+
+ .b0_right = 0x0e38,
+ .b0_left = 0x0e38,
+ .b1_right = 0x1c71,
+ .b1_left = 0x1c71,
+ .b2_right = 0x0e38,
+ .b2_left = 0x0e38,
+ };
+
+
+ scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&filter_scb,
+ dest,"FILTERTASK",parent_scb,
+ scb_child_type);
+
+ return scb;
+}
dsp_scb_descriptor_t *
cs46xx_dsp_create_mix_only_scb(cs46xx_t * chip,char * scb_name,
@@ -705,8 +753,8 @@ cs46xx_dsp_create_mix_only_scb(cs46xx_t * chip,char * scb_name,
},
/* 9 */ 0,0,
/* A */ 0,0,
- /* B */ RSCONFIG_SAMPLE_16STEREO + RSCONFIG_MODULO_64,
- /* C */ (mix_buffer_addr + (32 * 4)) << 0x10,
+ /* B */ RSCONFIG_SAMPLE_16STEREO + RSCONFIG_MODULO_32,
+ /* C */ (mix_buffer_addr + (16 * 4)) << 0x10,
/* D */ 0,
{
/* E */ 0x8000,0x8000,
@@ -768,7 +816,8 @@ cs46xx_dsp_create_mix_to_ostream_scb(cs46xx_t * chip,char * scb_name,
scb = cs46xx_dsp_create_generic_scb(chip,scb_name,(u32 *)&mix2_ostream_scb,
- dest,"S16_MIX_TO_OSTREAM",parent_scb,
+
+ dest,"S16_MIX_TO_OSTREAM",parent_scb,
scb_child_type);
return scb;
@@ -1120,24 +1169,39 @@ static u32 pcm_reader_buffer_addr[DSP_MAX_PCM_CHANNELS] = {
};
static u32 src_output_buffer_addr[DSP_MAX_SRC_NR] = {
- 0x2580,
- 0x2680,
- 0x2780,
- 0x2980,
- 0x2A80,
- 0x2B80,
+ 0x2B80,
+ 0x2BA0,
+ 0x2BC0,
+ 0x2BE0,
+ 0x2D00,
+ 0x2D20,
+ 0x2D40,
+ 0x2D60,
+ 0x2D80,
+ 0x2DA0,
+ 0x2DC0,
+ 0x2DE0,
+ 0x2E00,
+ 0x2E20
};
static u32 src_delay_buffer_addr[DSP_MAX_SRC_NR] = {
+ 0x2480,
+ 0x2500,
+ 0x2580,
0x2600,
+ 0x2680,
0x2700,
+ 0x2780,
0x2800,
+ 0x2880,
0x2900,
+ 0x2980,
0x2A00,
- 0x2B00,
+ 0x2A80,
+ 0x2B00
};
-
pcm_channel_descriptor_t * cs46xx_dsp_create_pcm_channel (cs46xx_t * chip,
u32 sample_rate, void * private_data,
u32 hw_dma_addr,
@@ -1159,11 +1223,10 @@ pcm_channel_descriptor_t * cs46xx_dsp_create_pcm_channel (cs46xx_t * chip,
case DSP_PCM_REAR_CHANNEL:
mixer_scb = ins->rear_mix_scb;
break;
- case DSP_PCM_CENTER_CHANNEL:
- /* TODO */
- snd_assert(0);
+ case DSP_PCM_CENTER_LFE_CHANNEL:
+ mixer_scb = ins->center_lfe_mix_scb;
break;
- case DSP_PCM_LFE_CHANNEL:
+ case DSP_PCM_S71_CHANNEL:
/* TODO */
snd_assert(0);
break;
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
index bf4f85b0dae3..939ad83cb783 100644
--- a/sound/pci/emu10k1/emu10k1_main.c
+++ b/sound/pci/emu10k1/emu10k1_main.c
@@ -240,8 +240,13 @@ static int __devinit snd_emu10k1_init(emu10k1_t * emu, int enable_ir)
}
if (!emu->APS) { /* enable analog output */
- unsigned int reg = inl(emu->port + HCFG);
- outl(reg | HCFG_GPOUT0, emu->port + HCFG);
+ if (!emu->audigy) {
+ unsigned int reg = inl(emu->port + HCFG);
+ outl(reg | HCFG_GPOUT0, emu->port + HCFG);
+ } else {
+ unsigned int reg = inl(emu->port + A_IOCFG);
+ outl(reg | A_IOCFG_GPOUT0, emu->port + A_IOCFG);
+ }
}
/*
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index f8fbcca5ef86..6d7a655cf7f5 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -1271,7 +1271,8 @@ static int __devinit _snd_emu10k1_audigy_init_efx(emu10k1_t *emu)
/* Wave Playback */
A_OP(icode, &ptr, iMAC0, A_GPR(playback), A_C_00000000, A_GPR(gpr), A_FXBUS(FXBUS_PCM_LEFT));
A_OP(icode, &ptr, iMAC0, A_GPR(playback+1), A_C_00000000, A_GPR(gpr+1), A_FXBUS(FXBUS_PCM_RIGHT));
- snd_emu10k1_init_stereo_control(&controls[nctl++], "Wave Playback Volume", gpr, 100);
+ snd_emu10k1_init_stereo_control(&controls[nctl++], "Wave Playback Volume", gpr,
+ emu->revision == 4 ? 50 : 100);
gpr += 2;
/* Wave Surround Playback */
@@ -1502,8 +1503,11 @@ A_OP(icode, &ptr, iMAC0, A_GPR(var), A_GPR(var), A_GPR(vol), A_EXTIN(input))
A_PUT_OUTPUT(A_EXTOUT_LFE, playback+5 + SND_EMU10K1_PLAYBACK_CHANNELS);
/* analog speakers */
- //A_PUT_STEREO_OUTPUT(A_EXTOUT_AFRONT_L, A_EXTOUT_AFRONT_R, playback + SND_EMU10K1_PLAYBACK_CHANNELS);
- A_PUT_STEREO_OUTPUT(A_EXTOUT_AC97_L, A_EXTOUT_AC97_R, playback + SND_EMU10K1_PLAYBACK_CHANNELS);
+ if (emu->audigy && emu->revision == 4) { /* audigy2 */
+ A_PUT_STEREO_OUTPUT(A_EXTOUT_AFRONT_L, A_EXTOUT_AFRONT_R, playback + SND_EMU10K1_PLAYBACK_CHANNELS);
+ } else {
+ A_PUT_STEREO_OUTPUT(A_EXTOUT_AC97_L, A_EXTOUT_AC97_R, playback + SND_EMU10K1_PLAYBACK_CHANNELS);
+ }
A_PUT_STEREO_OUTPUT(A_EXTOUT_AREAR_L, A_EXTOUT_AREAR_R, playback+2 + SND_EMU10K1_PLAYBACK_CHANNELS);
A_PUT_OUTPUT(A_EXTOUT_ACENTER, playback+4 + SND_EMU10K1_PLAYBACK_CHANNELS);
A_PUT_OUTPUT(A_EXTOUT_ALFE, playback+5 + SND_EMU10K1_PLAYBACK_CHANNELS);
diff --git a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c
index 6881384c0c23..e5c041561da3 100644
--- a/sound/pci/emu10k1/emumixer.c
+++ b/sound/pci/emu10k1/emumixer.c
@@ -45,7 +45,7 @@ static int snd_emu10k1_spdif_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
- int idx = kcontrol->private_value;
+ unsigned int idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id);
unsigned long flags;
spin_lock_irqsave(&emu->reg_lock, flags);
@@ -71,7 +71,8 @@ static int snd_emu10k1_spdif_put(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
- int idx = kcontrol->private_value, change;
+ unsigned int idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id);
+ int change;
unsigned int val;
unsigned long flags;
@@ -94,6 +95,7 @@ static snd_kcontrol_new_t snd_emu10k1_spdif_mask_control =
.access = SNDRV_CTL_ELEM_ACCESS_READ,
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,MASK),
+ .count = 4,
.info = snd_emu10k1_spdif_info,
.get = snd_emu10k1_spdif_get_mask
};
@@ -102,6 +104,7 @@ static snd_kcontrol_new_t snd_emu10k1_spdif_control =
{
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT),
+ .count = 4,
.info = snd_emu10k1_spdif_info,
.get = snd_emu10k1_spdif_get,
.put = snd_emu10k1_spdif_put
@@ -150,8 +153,8 @@ static int snd_emu10k1_send_routing_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
unsigned long flags;
- emu10k1_pcm_mixer_t *mix = (emu10k1_pcm_mixer_t *)kcontrol->private_value;
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
+ emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)];
int voice, idx;
int num_efx = emu->audigy ? 8 : 4;
int mask = emu->audigy ? 0x3f : 0x0f;
@@ -169,8 +172,8 @@ static int snd_emu10k1_send_routing_put(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
unsigned long flags;
- emu10k1_pcm_mixer_t *mix = (emu10k1_pcm_mixer_t *)kcontrol->private_value;
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
+ emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)];
int change = 0, voice, idx, val;
int num_efx = emu->audigy ? 8 : 4;
int mask = emu->audigy ? 0x3f : 0x0f;
@@ -204,6 +207,7 @@ static snd_kcontrol_new_t snd_emu10k1_send_routing_control =
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "EMU10K1 PCM Send Routing",
+ .count = 32,
.info = snd_emu10k1_send_routing_info,
.get = snd_emu10k1_send_routing_get,
.put = snd_emu10k1_send_routing_put
@@ -223,8 +227,8 @@ static int snd_emu10k1_send_volume_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
unsigned long flags;
- emu10k1_pcm_mixer_t *mix = (emu10k1_pcm_mixer_t *)kcontrol->private_value;
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
+ emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)];
int idx;
int num_efx = emu->audigy ? 8 : 4;
@@ -239,8 +243,8 @@ static int snd_emu10k1_send_volume_put(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
unsigned long flags;
- emu10k1_pcm_mixer_t *mix = (emu10k1_pcm_mixer_t *)kcontrol->private_value;
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
+ emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)];
int change = 0, idx, val;
int num_efx = emu->audigy ? 8 : 4;
@@ -272,6 +276,7 @@ static snd_kcontrol_new_t snd_emu10k1_send_volume_control =
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "EMU10K1 PCM Send Volume",
+ .count = 32,
.info = snd_emu10k1_send_volume_info,
.get = snd_emu10k1_send_volume_get,
.put = snd_emu10k1_send_volume_put
@@ -289,8 +294,8 @@ static int snd_emu10k1_attn_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *
static int snd_emu10k1_attn_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
- emu10k1_pcm_mixer_t *mix = (emu10k1_pcm_mixer_t *)kcontrol->private_value;
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
+ emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)];
unsigned long flags;
int idx;
@@ -305,8 +310,8 @@ static int snd_emu10k1_attn_put(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
unsigned long flags;
- emu10k1_pcm_mixer_t *mix = (emu10k1_pcm_mixer_t *)kcontrol->private_value;
emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
+ emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[snd_ctl_get_ioffidx(kcontrol, &ucontrol->id)];
int change = 0, idx, val;
spin_lock_irqsave(&emu->reg_lock, flags);
@@ -334,6 +339,7 @@ static snd_kcontrol_new_t snd_emu10k1_attn_control =
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "EMU10K1 PCM Volume",
+ .count = 32,
.info = snd_emu10k1_attn_info,
.get = snd_emu10k1_attn_get,
.put = snd_emu10k1_attn_put
@@ -420,7 +426,7 @@ static void snd_emu10k1_mixer_free_ac97(ac97_t *ac97)
int __devinit snd_emu10k1_mixer(emu10k1_t *emu)
{
ac97_t ac97;
- int err, pcm, idx;
+ int err, pcm;
snd_kcontrol_t *kctl;
snd_card_t *card = emu->card;
@@ -436,6 +442,19 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu)
strcpy(emu->card->mixername, "EMU APS");
}
+ if ((kctl = emu->ctl_send_routing = snd_ctl_new1(&snd_emu10k1_send_routing_control, emu)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, kctl)))
+ return err;
+ if ((kctl = emu->ctl_send_volume = snd_ctl_new1(&snd_emu10k1_send_volume_control, emu)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, kctl)))
+ return err;
+ if ((kctl = emu->ctl_attn = snd_ctl_new1(&snd_emu10k1_attn_control, emu)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, kctl)))
+ return err;
+
for (pcm = 0; pcm < 32; pcm++) {
emu10k1_pcm_mixer_t *mix;
int v;
@@ -443,50 +462,26 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu)
mix = &emu->pcm_mixer[pcm];
mix->epcm = NULL;
- if ((kctl = mix->ctl_send_routing = snd_ctl_new1(&snd_emu10k1_send_routing_control, emu)) == NULL)
- return -ENOMEM;
- kctl->private_value = (long)mix;
- kctl->id.index = pcm;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
for (v = 0; v < 4; v++)
mix->send_routing[0][v] =
mix->send_routing[1][v] =
mix->send_routing[2][v] = v;
- if ((kctl = mix->ctl_send_volume = snd_ctl_new1(&snd_emu10k1_send_volume_control, emu)) == NULL)
- return -ENOMEM;
- kctl->private_value = (long)mix;
- kctl->id.index = pcm;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
memset(&mix->send_volume, 0, sizeof(mix->send_volume));
mix->send_volume[0][0] = mix->send_volume[0][1] =
mix->send_volume[1][0] = mix->send_volume[2][1] = 255;
- if ((kctl = mix->ctl_attn = snd_ctl_new1(&snd_emu10k1_attn_control, emu)) == NULL)
- return -ENOMEM;
- kctl->private_value = (long)mix;
- kctl->id.index = pcm;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
mix->attn[0] = mix->attn[1] = mix->attn[2] = 0xffff;
}
- for (idx = 0; idx < 3; idx++) {
- if ((kctl = snd_ctl_new1(&snd_emu10k1_spdif_mask_control, emu)) == NULL)
- return -ENOMEM;
- kctl->private_value = idx;
- kctl->id.index = idx;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
- if ((kctl = snd_ctl_new1(&snd_emu10k1_spdif_control, emu)) == NULL)
- return -ENOMEM;
- kctl->private_value = idx;
- kctl->id.index = idx;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
- }
+ if ((kctl = snd_ctl_new1(&snd_emu10k1_spdif_mask_control, emu)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, kctl)))
+ return err;
+ if ((kctl = snd_ctl_new1(&snd_emu10k1_spdif_control, emu)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, kctl)))
+ return err;
if (emu->audigy) {
if ((kctl = snd_ctl_new1(&snd_audigy_shared_spdif, emu)) == NULL)
diff --git a/sound/pci/emu10k1/emupcm.c b/sound/pci/emu10k1/emupcm.c
index 05d59bf25436..3e309c3dcd8a 100644
--- a/sound/pci/emu10k1/emupcm.c
+++ b/sound/pci/emu10k1/emupcm.c
@@ -740,22 +740,25 @@ static snd_pcm_hardware_t snd_emu10k1_capture =
*
*/
-static void snd_emu10k1_pcm_mixer_notify1(snd_card_t *card, snd_kcontrol_t *kctl, int activate)
+static void snd_emu10k1_pcm_mixer_notify1(emu10k1_t *emu, snd_kcontrol_t *kctl, int idx, int activate)
{
+ snd_ctl_elem_id_t id;
+
snd_runtime_check(kctl != NULL, return);
if (activate)
- kctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ kctl->vd[idx].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
else
- kctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
- snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE |
- SNDRV_CTL_EVENT_MASK_INFO, &kctl->id);
+ kctl->vd[idx].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ snd_ctl_notify(emu->card, SNDRV_CTL_EVENT_MASK_VALUE |
+ SNDRV_CTL_EVENT_MASK_INFO,
+ snd_ctl_build_ioff(&id, kctl, idx));
}
-static void snd_emu10k1_pcm_mixer_notify(snd_card_t *card, emu10k1_pcm_mixer_t *mix, int activate)
+static void snd_emu10k1_pcm_mixer_notify(emu10k1_t *emu, int idx, int activate)
{
- snd_emu10k1_pcm_mixer_notify1(card, mix->ctl_send_routing, activate);
- snd_emu10k1_pcm_mixer_notify1(card, mix->ctl_send_volume, activate);
- snd_emu10k1_pcm_mixer_notify1(card, mix->ctl_attn, activate);
+ snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_routing, idx, activate);
+ snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_volume, idx, activate);
+ snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_attn, idx, activate);
}
static void snd_emu10k1_pcm_free_substream(snd_pcm_runtime_t *runtime)
@@ -799,7 +802,7 @@ static int snd_emu10k1_playback_open(snd_pcm_substream_t * substream)
mix->send_volume[1][0] = mix->send_volume[2][1] = 255;
mix->attn[0] = mix->attn[1] = mix->attn[2] = 0xffff;
mix->epcm = epcm;
- snd_emu10k1_pcm_mixer_notify(emu->card, mix, 1);
+ snd_emu10k1_pcm_mixer_notify(emu, substream->number, 1);
return 0;
}
@@ -809,7 +812,7 @@ static int snd_emu10k1_playback_close(snd_pcm_substream_t * substream)
emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[substream->number];
mix->epcm = NULL;
- snd_emu10k1_pcm_mixer_notify(emu->card, mix, 0);
+ snd_emu10k1_pcm_mixer_notify(emu, substream->number, 0);
return 0;
}
diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c
index 45ea0d7649ae..67abecd565d2 100644
--- a/sound/pci/ens1370.c
+++ b/sound/pci/ens1370.c
@@ -551,7 +551,7 @@ static void snd_es1370_codec_write(ak4531_t *ak4531,
{
ensoniq_t *ensoniq = snd_magic_cast(ensoniq_t, ak4531->private_data, return);
unsigned long flags;
- signed long end_time = jiffies + HZ / 10;
+ unsigned long end_time = jiffies + HZ / 10;
#if 0
printk("CODEC WRITE: reg = 0x%x, val = 0x%x (0x%x), creg = 0x%x\n", reg, val, ES_1370_CODEC_WRITE(reg, val), ES_REG(ensoniq, 1370_CODEC));
@@ -568,7 +568,7 @@ static void snd_es1370_codec_write(ak4531_t *ak4531,
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1);
#endif
- } while ((signed long)(end_time - jiffies) > 0);
+ } while (time_after(end_time, jiffies));
snd_printk("codec write timeout, status = 0x%x\n", inl(ES_REG(ensoniq, STATUS)));
}
diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c
index b1bf302f27af..5cf49ce8db43 100644
--- a/sound/pci/es1938.c
+++ b/sound/pci/es1938.c
@@ -829,11 +829,14 @@ static int snd_es1938_capture_copy(snd_pcm_substream_t *substream,
pos <<= chip->dma1_shift;
count <<= chip->dma1_shift;
snd_assert(pos + count <= chip->dma1_size, return -EINVAL);
- if (pos + count < chip->dma1_size)
- memcpy(dst, runtime->dma_area + pos + 1, count);
- else {
- memcpy(dst, runtime->dma_area + pos + 1, count - 1);
- ((unsigned char *)dst)[count - 1] = runtime->dma_area[0];
+ if (pos + count < chip->dma1_size) {
+ if (copy_to_user(dst, runtime->dma_area + pos + 1, count))
+ return -EFAULT;
+ } else {
+ if (copy_to_user(dst, runtime->dma_area + pos + 1, count - 1))
+ return -EFAULT;
+ if (put_user(runtime->dma_area[0], ((unsigned char *)dst) + count - 1))
+ return -EFAULT;
}
return 0;
}
diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c
index 1d6e115315ff..948aa8793be8 100644
--- a/sound/pci/fm801.c
+++ b/sound/pci/fm801.c
@@ -921,7 +921,7 @@ static int __devinit snd_fm801_create(snd_card_t * card,
fm801_t *chip;
unsigned char rev, id;
unsigned short cmdw;
- signed long timeout;
+ unsigned long timeout;
int err;
static snd_device_ops_t ops = {
.dev_free = snd_fm801_dev_free,
@@ -969,7 +969,7 @@ static int __devinit snd_fm801_create(snd_card_t * card,
goto __ac97_secondary;
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1);
- } while ((timeout - (signed long)jiffies) > 0);
+ } while (time_after(timeout, jiffies));
snd_printk("Primary AC'97 codec not found\n");
snd_fm801_free(chip);
return -EIO;
@@ -980,8 +980,7 @@ static int __devinit snd_fm801_create(snd_card_t * card,
for (id = 3; id > 0; id--) { /* my card has the secondary codec */
/* at address #3, so the loop is inverted */
- if ((timeout - (signed long)jiffies) < HZ / 20)
- timeout = jiffies + HZ / 20;
+ timeout = jiffies + HZ / 20;
outw((1<<7) | (id << FM801_AC97_ADDR_SHIFT) | AC97_VENDOR_ID1, FM801_REG(chip, AC97_CMD));
udelay(5);
@@ -996,7 +995,7 @@ static int __devinit snd_fm801_create(snd_card_t * card,
}
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1);
- } while ((timeout - (signed long)jiffies) > 0);
+ } while (time_after(timeout, jiffies));
}
/* the recovery phase, it seems that probing for non-existing codec might */
@@ -1010,7 +1009,7 @@ static int __devinit snd_fm801_create(snd_card_t * card,
goto __ac97_ok;
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1);
- } while ((timeout - (signed long)jiffies) > 0);
+ } while (time_after(timeout, jiffies));
snd_printk("Primary AC'97 codec not responding\n");
snd_fm801_free(chip);
return -EIO;
diff --git a/sound/pci/ice1712/ak4524.c b/sound/pci/ice1712/ak4524.c
index a7a75899e907..857de496d4bc 100644
--- a/sound/pci/ice1712/ak4524.c
+++ b/sound/pci/ice1712/ak4524.c
@@ -433,8 +433,8 @@ int __devinit snd_ice1712_akm4xxx_build_controls(ice1712_t *ice)
strcpy(ctl.id.name, "DAC Volume");
ctl.id.index = idx + ak->idx_offset * 2;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_akm4xxx_volume_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_akm4xxx_volume_get;
ctl.put = snd_ice1712_akm4xxx_volume_put;
switch (ak->type) {
@@ -459,7 +459,7 @@ int __devinit snd_ice1712_akm4xxx_build_controls(ice1712_t *ice)
return -EINVAL;
}
ctl.private_data = ak;
- if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
}
for (idx = 0; idx < ak->num_adcs && ak->type == SND_AK4524; ++idx) {
@@ -468,25 +468,25 @@ int __devinit snd_ice1712_akm4xxx_build_controls(ice1712_t *ice)
strcpy(ctl.id.name, "ADC Volume");
ctl.id.index = idx;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_akm4xxx_volume_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_akm4xxx_volume_get;
ctl.put = snd_ice1712_akm4xxx_volume_put;
ctl.private_value = AK_COMPOSE(idx/2, (idx%2) + 4, 0, 127); /* register 4 & 5 */
ctl.private_data = ak;
- if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
memset(&ctl, 0, sizeof(ctl));
strcpy(ctl.id.name, "IPGA Analog Capture Volume");
ctl.id.index = idx;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_akm4xxx_ipga_gain_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_akm4xxx_ipga_gain_get;
ctl.put = snd_ice1712_akm4xxx_ipga_gain_put;
ctl.private_value = AK_COMPOSE(idx/2, (idx%2) + 4, 0, 0); /* register 4 & 5 */
ctl.private_data = ak;
- if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
}
for (idx = 0; idx < ak->num_dacs/2; idx++) {
@@ -495,8 +495,8 @@ int __devinit snd_ice1712_akm4xxx_build_controls(ice1712_t *ice)
strcpy(ctl.id.name, "Deemphasis");
ctl.id.index = idx + ak->idx_offset;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_akm4xxx_deemphasis_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_akm4xxx_deemphasis_get;
ctl.put = snd_ice1712_akm4xxx_deemphasis_put;
switch (ak->type) {
@@ -517,11 +517,9 @@ int __devinit snd_ice1712_akm4xxx_build_controls(ice1712_t *ice)
break;
}
ctl.private_data = ak;
- if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(ice->card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
}
}
return 0;
}
-
-
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
index a625f12e237a..2f1a5951eb15 100644
--- a/sound/pci/ice1712/ice1712.c
+++ b/sound/pci/ice1712/ice1712.c
@@ -1373,25 +1373,25 @@ static int __devinit snd_ice1712_build_pro_mixer(ice1712_t *ice)
strcpy(ctl.id.name, "Multi Playback Switch");
ctl.id.index = idx;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_pro_mixer_switch_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_pro_mixer_switch_get;
ctl.put = snd_ice1712_pro_mixer_switch_put;
ctl.private_value = idx;
ctl.private_data = ice;
- if ((err = snd_ctl_add(card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
memset(&ctl, 0, sizeof(ctl));
strcpy(ctl.id.name, "Multi Playback Volume");
ctl.id.index = idx;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_pro_mixer_volume_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_pro_mixer_volume_get;
ctl.put = snd_ice1712_pro_mixer_volume_put;
ctl.private_value = idx;
ctl.private_data = ice;
- if ((err = snd_ctl_add(card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
}
@@ -1401,25 +1401,25 @@ static int __devinit snd_ice1712_build_pro_mixer(ice1712_t *ice)
strcpy(ctl.id.name, "Multi Capture Switch");
ctl.id.index = idx;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_pro_mixer_switch_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_pro_mixer_switch_get;
ctl.put = snd_ice1712_pro_mixer_switch_put;
ctl.private_value = idx + 10;
ctl.private_data = ice;
- if ((err = snd_ctl_add(card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
memset(&ctl, 0, sizeof(ctl));
strcpy(ctl.id.name, "Multi Capture Volume");
ctl.id.index = idx;
ctl.id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+ ctl.count = 1;
ctl.info = snd_ice1712_pro_mixer_volume_info;
- ctl.access = SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE;
ctl.get = snd_ice1712_pro_mixer_volume_get;
ctl.put = snd_ice1712_pro_mixer_volume_put;
ctl.private_value = idx + 10;
ctl.private_data = ice;
- if ((err = snd_ctl_add(card, snd_ctl_new(&ctl))) < 0)
+ if ((err = snd_ctl_add(card, snd_ctl_new(&ctl, SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE))) < 0)
return err;
}
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index 39798368764e..7cfb6a06b1a2 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -199,6 +199,7 @@ DEFINE_REGSET(SP, 0x60); /* SPDIF out */
#define ICH_SIS_PCM_6 0x00000080 /* 6 channels (SIS7012) */
#define ICH_SIS_PCM_4 0x00000040 /* 4 channels (SIS7012) */
#define ICH_SIS_PCM_2 0x00000000 /* 2 channels (SIS7012) */
+#define ICH_TRIE 0x00000040 /* tertiary resume interrupt enable */
#define ICH_SRIE 0x00000020 /* secondary resume interrupt enable */
#define ICH_PRIE 0x00000010 /* primary resume interrupt enable */
#define ICH_ACLINK 0x00000008 /* AClink shut off */
@@ -1609,10 +1610,11 @@ static int __devinit snd_intel8x0_mixer(intel8x0_t *chip, int ac97_clock)
udelay(1);
}
}
+ ac97.pci = chip->pci;
if ((err = snd_ac97_mixer(chip->card, &ac97, &x97)) < 0)
return err;
chip->ac97[0] = x97;
- snd_ac97_tune_hardware(chip->ac97[0], chip->pci, ac97_quirks);
+ snd_ac97_tune_hardware(chip->ac97[0], ac97_quirks);
chip->ichd[ICHD_PCMOUT].ac97 = x97;
chip->ichd[ICHD_PCMIN].ac97 = x97;
if (x97->ext_id & AC97_EI_VRM)
diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c
index 1c1a14492375..c00f21644969 100644
--- a/sound/pci/korg1212/korg1212.c
+++ b/sound/pci/korg1212/korg1212.c
@@ -149,9 +149,9 @@ typedef enum {
#define MAILBOX1_OFFSET 0x44 // location of mailbox 1 relative to base address
#define MAILBOX2_OFFSET 0x48 // location of mailbox 2 relative to base address
#define MAILBOX3_OFFSET 0x4c // location of mailbox 3 relative to base address
-#define OUT_DOORBELL_OFFSET 0x60 // location of PCI to local doorbell "
-#define IN_DOORBELL_OFFSET 0x64 // location of local to PCI doorbell "
-#define STATUS_REG_OFFSET 0x68 // location of interrupt control/status register "
+#define OUT_DOORBELL_OFFSET 0x60 // location of PCI to local doorbell
+#define IN_DOORBELL_OFFSET 0x64 // location of local to PCI doorbell
+#define STATUS_REG_OFFSET 0x68 // location of interrupt control/status register
#define PCI_CONTROL_OFFSET 0x6c // location of the EEPROM, PCI, User I/O, init control
// register
#define SENS_CONTROL_OFFSET 0x6e // location of the input sensitivity setting register.
@@ -329,6 +329,10 @@ struct _snd_korg1212 {
int irq;
spinlock_t lock;
+ struct semaphore open_mutex;
+
+ struct timer_list timer; /* timer callback for checking ack of stop request */
+ int stop_pending_cnt; /* counter for stop pending check */
wait_queue_head_t wait;
@@ -602,66 +606,79 @@ static snd_korg1212rc snd_korg1212_Send1212Command(korg1212_t *korg1212, korg121
return rc;
}
-static void snd_korg1212_WaitForCardStopAck(korg1212_t *korg1212)
+/* spinlock already held */
+static void snd_korg1212_SendStop(korg1212_t *korg1212)
{
- u32 endtime = jiffies + 2 * HZ;
-
-#if K1212_DEBUG_LEVEL > 0
- K1212_DEBUG_PRINTK("K1212_DEBUG: WaitForCardStopAck.in [%s] %lu %lu\n", stateName[korg1212->cardState], jiffies, korg1212->inIRQ);
-#endif
+ if (! korg1212->stop_pending_cnt) {
+ writel(0xffffffff, &korg1212->sharedBufferPtr->cardCommand);
+ /* program the timer */
+ korg1212->stop_pending_cnt = HZ;
+ korg1212->timer.expires = jiffies + 1;
+ add_timer(&korg1212->timer);
+ }
+}
- if (korg1212->inIRQ)
- return;
+static void snd_korg1212_SendStopAndWait(korg1212_t *korg1212)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&korg1212->lock, flags);
+ snd_korg1212_SendStop(korg1212);
+ spin_unlock_irqrestore(&korg1212->lock, flags);
+ sleep_on_timeout(&korg1212->wait, (HZ * 3) / 2);
+}
- do {
- if (readl(&korg1212->sharedBufferPtr->cardCommand) == 0) {
+/* timer callback for checking the ack of stop request */
+static void snd_korg1212_timer_func(unsigned long data)
+{
+ korg1212_t *korg1212 = snd_magic_cast(korg1212_t, (void*)data, return);
+
+ spin_lock(&korg1212->lock);
+ if (readl(&korg1212->sharedBufferPtr->cardCommand) == 0) {
+ /* ack'ed */
+ korg1212->stop_pending_cnt = 0;
+ wake_up(&korg1212->wait);
+#if K1212_DEBUG_LEVEL > 1
+ K1212_DEBUG_PRINTK("K1212_DEBUG: Stop ack'ed [%s]\n", stateName[korg1212->cardState]);
+#endif
+ } else {
+ if (--korg1212->stop_pending_cnt > 0) {
+ /* reprogram timer */
+ korg1212->timer.expires = jiffies + 1;
+ add_timer(&korg1212->timer);
+ } else {
+ snd_printd("korg1212_timer_func timeout\n");
+ writel(0, &korg1212->sharedBufferPtr->cardCommand);
+ wake_up(&korg1212->wait);
#if K1212_DEBUG_LEVEL > 0
- K1212_DEBUG_PRINTK("K1212_DEBUG: WaitForCardStopAck.out [%s] %lu %lu\n", stateName[korg1212->cardState], jiffies, korg1212->inIRQ);
+ K1212_DEBUG_PRINTK("K1212_DEBUG: Stop timeout [%s]\n", stateName[korg1212->cardState]);
#endif
- return;
}
- if (!korg1212->inIRQ)
- schedule();
- } while (time_before(jiffies, endtime));
-
-#if K1212_DEBUG_LEVEL > 0
- K1212_DEBUG_PRINTK("K1212_DEBUG: WaitForCardStopAck.out TO [%s] %lu %lu\n", stateName[korg1212->cardState], jiffies, korg1212->inIRQ);
-#endif
- writel(0, &korg1212->sharedBufferPtr->cardCommand);
+ }
+ spin_unlock(&korg1212->lock);
}
static void snd_korg1212_TurnOnIdleMonitor(korg1212_t *korg1212)
{
+ unsigned long flags;
+
udelay(INTERCOMMAND_DELAY);
+ spin_lock_irqsave(&korg1212->lock, flags);
korg1212->idleMonitorOn = 1;
rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
- K1212_MODE_MonitorOn, 0, 0, 0);
+ K1212_MODE_MonitorOn, 0, 0, 0);
+ spin_unlock_irqrestore(&korg1212->lock, flags);
}
static void snd_korg1212_TurnOffIdleMonitor(korg1212_t *korg1212)
{
if (korg1212->idleMonitorOn) {
- writel(0xffffffff, &korg1212->sharedBufferPtr->cardCommand);
- snd_korg1212_WaitForCardStopAck(korg1212);
+ snd_korg1212_SendStopAndWait(korg1212);
korg1212->idleMonitorOn = 0;
}
}
-static void snd_korg1212_setCardState(korg1212_t * korg1212, CardState csState)
+static inline void snd_korg1212_setCardState(korg1212_t * korg1212, CardState csState)
{
- switch (csState) {
- case K1212_STATE_READY:
- snd_korg1212_TurnOnIdleMonitor(korg1212);
- break;
-
- case K1212_STATE_OPEN:
- snd_korg1212_TurnOffIdleMonitor(korg1212);
- break;
-
- default:
- break;
- }
-
korg1212->cardState = csState;
}
@@ -670,8 +687,13 @@ static int snd_korg1212_OpenCard(korg1212_t * korg1212)
#if K1212_DEBUG_LEVEL > 0
K1212_DEBUG_PRINTK("K1212_DEBUG: OpenCard [%s] %d\n", stateName[korg1212->cardState], korg1212->opencnt);
#endif
- if (korg1212->opencnt++ == 0)
+ down(&korg1212->open_mutex);
+ if (korg1212->opencnt++ == 0) {
+ snd_korg1212_TurnOffIdleMonitor(korg1212);
snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
+ }
+
+ up(&korg1212->open_mutex);
return 1;
}
@@ -681,8 +703,11 @@ static int snd_korg1212_CloseCard(korg1212_t * korg1212)
K1212_DEBUG_PRINTK("K1212_DEBUG: CloseCard [%s] %d\n", stateName[korg1212->cardState], korg1212->opencnt);
#endif
- if (--(korg1212->opencnt))
+ down(&korg1212->open_mutex);
+ if (--(korg1212->opencnt)) {
+ up(&korg1212->open_mutex);
return 0;
+ }
if (korg1212->cardState == K1212_STATE_SETUP) {
rc = snd_korg1212_Send1212Command(korg1212, K1212_DB_SelectPlayMode,
@@ -691,19 +716,24 @@ static int snd_korg1212_CloseCard(korg1212_t * korg1212)
if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: CloseCard - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);
#endif
- if (rc != K1212_CMDRET_Success)
+ if (rc != K1212_CMDRET_Success) {
+ up(&korg1212->open_mutex);
return 0;
+ }
} else if (korg1212->cardState > K1212_STATE_SETUP) {
- writel(0xffffffff, &korg1212->sharedBufferPtr->cardCommand);
- snd_korg1212_WaitForCardStopAck(korg1212);
+ snd_korg1212_SendStopAndWait(korg1212);
}
- if (korg1212->cardState > K1212_STATE_READY)
+ if (korg1212->cardState > K1212_STATE_READY) {
+ snd_korg1212_TurnOnIdleMonitor(korg1212);
snd_korg1212_setCardState(korg1212, K1212_STATE_READY);
+ }
+ up(&korg1212->open_mutex);
return 0;
}
+/* spinlock already held */
static int snd_korg1212_SetupForPlay(korg1212_t * korg1212)
{
#if K1212_DEBUG_LEVEL > 0
@@ -726,6 +756,7 @@ static int snd_korg1212_SetupForPlay(korg1212_t * korg1212)
return 0;
}
+/* spinlock already held */
static int snd_korg1212_TriggerPlay(korg1212_t * korg1212)
{
#if K1212_DEBUG_LEVEL > 0
@@ -748,6 +779,7 @@ static int snd_korg1212_TriggerPlay(korg1212_t * korg1212)
return 0;
}
+/* spinlock already held */
static int snd_korg1212_StopPlay(korg1212_t * korg1212)
{
#if K1212_DEBUG_LEVEL > 0
@@ -759,11 +791,10 @@ static int snd_korg1212_StopPlay(korg1212_t * korg1212)
korg1212->setcnt = 0;
- if (korg1212->cardState != K1212_STATE_ERRORSTOP) {
- writel(0xffffffff, &korg1212->sharedBufferPtr->cardCommand);
- snd_korg1212_WaitForCardStopAck(korg1212);
- }
- snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
+ if (korg1212->cardState != K1212_STATE_ERRORSTOP)
+ snd_korg1212_SendStop(korg1212);
+
+ snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
return 0;
}
@@ -789,8 +820,7 @@ static int snd_korg1212_SetMonitorMode(korg1212_t *korg1212, MonitorModeSelector
if (korg1212->cardState != K1212_STATE_MONITOR) {
return 0;
} else {
- writel(0xffffffff, &korg1212->sharedBufferPtr->cardCommand);
- snd_korg1212_WaitForCardStopAck(korg1212);
+ snd_korg1212_SendStopAndWait(korg1212);
snd_korg1212_setCardState(korg1212, K1212_STATE_OPEN);
}
break;
@@ -884,6 +914,7 @@ static int snd_korg1212_WriteADCSensitivity(korg1212_t *korg1212)
u16 controlValue; // this keeps the current value to be written to
// the card's eeprom control register.
u16 count;
+ unsigned long flags;
#if K1212_DEBUG_LEVEL > 0
K1212_DEBUG_PRINTK("K1212_DEBUG: WriteADCSensivity [%s]\n", stateName[korg1212->cardState]);
@@ -900,12 +931,13 @@ static int snd_korg1212_WriteADCSensitivity(korg1212_t *korg1212)
// make sure the card is not in monitor mode when we do this update.
// ----------------------------------------------------------------------------
if (korg1212->cardState == K1212_STATE_MONITOR || korg1212->idleMonitorOn) {
- writel(0xffffffff, &korg1212->sharedBufferPtr->cardCommand);
monModeSet = 1;
- snd_korg1212_WaitForCardStopAck(korg1212);
+ snd_korg1212_SendStopAndWait(korg1212);
} else
monModeSet = 0;
+ spin_lock_irqsave(&korg1212->lock, flags);
+
// ----------------------------------------------------------------------------
// we are about to send new values to the card, so clear the new values queued
// flag. Also, clear out mailbox 3, so we don't lockup.
@@ -1016,6 +1048,8 @@ static int snd_korg1212_WriteADCSensitivity(korg1212_t *korg1212)
}
+ spin_unlock_irqrestore(&korg1212->lock, flags);
+
return 1;
}
@@ -1089,13 +1123,14 @@ static void snd_korg1212_OnDSPDownloadComplete(korg1212_t *korg1212)
if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Set Clock Source Selector - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);
#endif
+ snd_korg1212_TurnOnIdleMonitor(korg1212);
snd_korg1212_setCardState(korg1212, K1212_STATE_READY);
#if K1212_DEBUG_LEVEL > 0
if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Set Monitor On - RC = %d [%s]\n", rc, stateName[korg1212->cardState]);
#endif
- wake_up_interruptible(&korg1212->wait);
+ snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE);
}
static void snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs)
@@ -1111,6 +1146,8 @@ static void snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs)
if (!doorbellValue)
return;
+ spin_lock(&korg1212->lock);
+
writel(doorbellValue, korg1212->inDoorbellPtr);
korg1212->irqcount++;
@@ -1123,10 +1160,8 @@ static void snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs)
#if K1212_DEBUG_LEVEL > 0
K1212_DEBUG_PRINTK("K1212_DEBUG: IRQ DNLD count - %ld, %x, [%s].\n", korg1212->irqcount, doorbellValue, stateName[korg1212->cardState]);
#endif
- if (korg1212->cardState == K1212_STATE_DSP_IN_PROCESS) {
- snd_korg1212_setCardState(korg1212, K1212_STATE_DSP_COMPLETE);
- snd_korg1212_OnDSPDownloadComplete(korg1212);
- }
+ if (korg1212->cardState == K1212_STATE_DSP_IN_PROCESS)
+ wake_up(&korg1212->wait);
break;
// ------------------------------------------------------------------------
@@ -1166,17 +1201,23 @@ static void snd_korg1212_interrupt(int irq, void *dev_id, struct pt_regs *regs)
break;
if (korg1212->capture_substream) {
+ spin_unlock(&korg1212->lock);
snd_pcm_period_elapsed(korg1212->capture_substream);
+ spin_lock(&korg1212->lock);
}
if (korg1212->playback_substream) {
+ spin_unlock(&korg1212->lock);
snd_pcm_period_elapsed(korg1212->playback_substream);
+ spin_lock(&korg1212->lock);
}
}
break;
}
korg1212->inIRQ--;
+
+ spin_unlock(&korg1212->lock);
}
static int snd_korg1212_downloadDSPCode(korg1212_t *korg1212)
@@ -1205,7 +1246,10 @@ static int snd_korg1212_downloadDSPCode(korg1212_t *korg1212)
if (rc) K1212_DEBUG_PRINTK("K1212_DEBUG: Start DSP Download RC = %d [%s]\n", rc, stateName[korg1212->cardState]);
#endif
- interruptible_sleep_on_timeout(&korg1212->wait, HZ * 4);
+ if (! sleep_on_timeout(&korg1212->wait, HZ * 4))
+ return -EBUSY; /* timeout */
+
+ snd_korg1212_OnDSPDownloadComplete(korg1212);
return 0;
}
@@ -1363,14 +1407,14 @@ static int snd_korg1212_playback_open(snd_pcm_substream_t *substream)
snd_pcm_set_sync(substream); // ???
- spin_lock_irqsave(&korg1212->lock, flags);
-
snd_korg1212_OpenCard(korg1212);
runtime->hw = snd_korg1212_playback_info;
runtime->dma_area = (char *) korg1212->playDataBufsPtr;
runtime->dma_bytes = K1212_BUF_SIZE;
+ spin_lock_irqsave(&korg1212->lock, flags);
+
korg1212->playback_substream = substream;
korg1212->periodsize = K1212_PERIODS;
korg1212->channels = K1212_CHANNELS;
@@ -1394,14 +1438,14 @@ static int snd_korg1212_capture_open(snd_pcm_substream_t *substream)
snd_pcm_set_sync(substream); // ???
- spin_lock_irqsave(&korg1212->lock, flags);
-
snd_korg1212_OpenCard(korg1212);
runtime->hw = snd_korg1212_capture_info;
runtime->dma_area = (char *) korg1212->recordDataBufsPtr;
runtime->dma_bytes = K1212_BUF_SIZE;
+ spin_lock_irqsave(&korg1212->lock, flags);
+
korg1212->capture_substream = substream;
korg1212->periodsize = K1212_PERIODS;
korg1212->channels = K1212_CHANNELS;
@@ -1428,9 +1472,9 @@ static int snd_korg1212_playback_close(snd_pcm_substream_t *substream)
korg1212->playback_substream = NULL;
korg1212->periodsize = 0;
- snd_korg1212_CloseCard(korg1212);
-
spin_unlock_irqrestore(&korg1212->lock, flags);
+
+ snd_korg1212_CloseCard(korg1212);
return 0;
}
@@ -1448,9 +1492,9 @@ static int snd_korg1212_capture_close(snd_pcm_substream_t *substream)
korg1212->capture_substream = NULL;
korg1212->periodsize = 0;
- snd_korg1212_CloseCard(korg1212);
-
spin_unlock_irqrestore(&korg1212->lock, flags);
+
+ snd_korg1212_CloseCard(korg1212);
return 0;
}
@@ -1508,19 +1552,33 @@ static int snd_korg1212_hw_params(snd_pcm_substream_t *substream,
static int snd_korg1212_prepare(snd_pcm_substream_t *substream)
{
korg1212_t *korg1212 = _snd_pcm_substream_chip(substream);
- unsigned long flags;
int rc;
#if K1212_DEBUG_LEVEL > 0
K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_prepare [%s]\n", stateName[korg1212->cardState]);
#endif
- spin_lock_irqsave(&korg1212->lock, flags);
+ spin_lock(&korg1212->lock);
+
+ /* FIXME: we should wait for ack! */
+ if (korg1212->stop_pending_cnt > 0) {
+#if K1212_DEBUG_LEVEL > 0
+ K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_prepare - Stop is pending... [%s]\n", stateName[korg1212->cardState]);
+#endif
+ spin_unlock(&korg1212->lock);
+ return -EAGAIN;
+ /*
+ writel(0, &korg1212->sharedBufferPtr->cardCommand);
+ del_timer(&korg1212->timer);
+ korg1212->stop_pending_cnt = 0;
+ */
+ }
rc = snd_korg1212_SetupForPlay(korg1212);
+
korg1212->currentBuffer = 0;
- spin_unlock_irqrestore(&korg1212->lock, flags);
+ spin_unlock(&korg1212->lock);
return rc ? -EINVAL : 0;
}
@@ -1535,6 +1593,7 @@ static int snd_korg1212_trigger(snd_pcm_substream_t *substream,
K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_trigger [%s] cmd=%d\n", stateName[korg1212->cardState], cmd);
#endif
+ spin_lock(&korg1212->lock);
switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
/*
@@ -1566,6 +1625,7 @@ static int snd_korg1212_trigger(snd_pcm_substream_t *substream,
rc = 1;
break;
}
+ spin_unlock(&korg1212->lock);
return rc ? -EINVAL : 0;
}
@@ -1894,11 +1954,11 @@ static int snd_korg1212_control_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value
change = 1;
}
+ spin_unlock_irqrestore(&korg1212->lock, flags);
+
if (change)
snd_korg1212_WriteADCSensitivity(korg1212);
- spin_unlock_irqrestore(&korg1212->lock, flags);
-
return change;
}
@@ -2151,6 +2211,10 @@ static int __devinit snd_korg1212_create(snd_card_t * card, struct pci_dev *pci,
init_waitqueue_head(&korg1212->wait);
spin_lock_init(&korg1212->lock);
+ init_MUTEX(&korg1212->open_mutex);
+ init_timer(&korg1212->timer);
+ korg1212->timer.function = snd_korg1212_timer_func;
+ korg1212->timer.data = (unsigned long)korg1212;
korg1212->irq = -1;
korg1212->clkSource = K1212_CLKIDX_Local;
diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c
index 6bf3a9940c27..670151d213f2 100644
--- a/sound/pci/maestro3.c
+++ b/sound/pci/maestro3.c
@@ -949,6 +949,13 @@ static struct m3_quirk m3_quirk_list[] = {
},
/* FIXME: Inspiron 8100 id should probably be here, too
* (8200 irrelevant: has intel8x0 with CS4205) */
+ /* NEC LM800J/7 */
+ {
+ .name = "NEC LM800J/7",
+ .vendor = 0x1033,
+ .device = 0x80f1,
+ .amp_gpio = 0x03,
+ },
/* END */
{ 0 }
};
diff --git a/sound/pci/rme32.c b/sound/pci/rme32.c
index 52ef21cdd02e..b4074034acee 100644
--- a/sound/pci/rme32.c
+++ b/sound/pci/rme32.c
@@ -904,7 +904,7 @@ static int snd_rme32_playback_spdif_open(snd_pcm_substream_t * substream)
&hw_constraints_period_bytes);
rme32->wcreg_spdif_stream = rme32->wcreg_spdif;
- rme32->spdif_ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ rme32->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(rme32->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &rme32->spdif_ctl->id);
return 0;
@@ -1037,7 +1037,7 @@ static int snd_rme32_playback_close(snd_pcm_substream_t * substream)
spdif = (rme32->wcreg & RME32_WCR_ADAT) == 0;
spin_unlock_irqrestore(&rme32->lock, flags);
if (spdif) {
- rme32->spdif_ctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ rme32->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(rme32->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO,
&rme32->spdif_ctl->id);
diff --git a/sound/pci/rme96.c b/sound/pci/rme96.c
index 7dac42ec1396..dcac1270adf2 100644
--- a/sound/pci/rme96.c
+++ b/sound/pci/rme96.c
@@ -1226,7 +1226,7 @@ snd_rme96_playback_spdif_open(snd_pcm_substream_t *substream)
snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, &hw_constraints_period_bytes);
rme96->wcreg_spdif_stream = rme96->wcreg_spdif;
- rme96->spdif_ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ rme96->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(rme96->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &rme96->spdif_ctl->id);
return 0;
@@ -1361,7 +1361,7 @@ snd_rme96_playback_close(snd_pcm_substream_t *substream)
spdif = (rme96->wcreg & RME96_WCR_ADAT) == 0;
spin_unlock_irqrestore(&rme96->lock, flags);
if (spdif) {
- rme96->spdif_ctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ rme96->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(rme96->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &rme96->spdif_ctl->id);
}
diff --git a/sound/pci/rme9652/digiface_firmware.dat b/sound/pci/rme9652/digiface_firmware.dat
deleted file mode 100644
index 29f02e1c113f..000000000000
--- a/sound/pci/rme9652/digiface_firmware.dat
+++ /dev/null
@@ -1,4072 +0,0 @@
-/* stored in little-endian */
-static u32 digiface_firmware[24413] __devinitdata = {
-0xffffffff, 0x66aa9955, 0x8001000c, 0xe0000000, 0x8006800c, 0xb0000000,
-0x8004800c, 0xb4fc0100, 0x8003000c, 0x00000000, 0x8001000c, 0x90000000,
-0x8004000c, 0x00000000, 0x8001000c, 0x80000000, 0x0002000c, 0x581a000a,
-0x00044800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800000,
-0x00000120, 0x00000000, 0x00044800, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x40800000, 0x00000120, 0x00000000, 0x00024001, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000,
-0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000100, 0x00000000, 0x00004008, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000900, 0x00000000, 0x0000c008, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000320, 0x00000000,
-0x00004801, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000120, 0x00000000, 0x438048f6, 0x78011e00, 0x8005e001, 0x015c001f,
-0x11e000f8, 0x9e004f80, 0xe005f801, 0x002f8019, 0x057801be, 0x778005e0,
-0xd800fe00, 0xbc0f6002, 0x00000123, 0x00000000, 0x040fb003, 0x03cd803f,
-0x3cc40fb2, 0xfc20ff00, 0xc00ff083, 0x20ff083f, 0x0f3003ec, 0xff0837ca,
-0xf003fc00, 0x113e820f, 0x0bcc40fb, 0x0fc0c311, 0x00000e00, 0x00000000,
-0x00870001, 0x0844a03f, 0x044001f1, 0x74000e08, 0x4201f000, 0x001d0007,
-0x01500074, 0x1d100740, 0xd0007400, 0x01854143, 0x0bc40051, 0x0440c1b0,
-0x00000c20, 0x00000000, 0x0043a011, 0x0a24000d, 0x304808d0, 0x1420cd20,
-0x400cd003, 0x00c10013, 0x0c158314, 0xc5001340, 0xd0033440, 0x04915004,
-0x1b060049, 0x44404019, 0x00000e80, 0x00000000, 0x09058803, 0x81643155,
-0x04410550, 0x76201d00, 0x4001d900, 0x001d9827, 0x01590034, 0x1c002700,
-0xd8007600, 0x00275009, 0x030608c1, 0x0c402414, 0x00000620, 0x00000000,
-0x0037a802, 0x0166011d, 0x54d00d90, 0x7c001f02, 0xc201f080, 0x33df0027,
-0x0110006c, 0x5f0277c2, 0xf0807428, 0x0026c209, 0x034c52db, 0x02d01910,
-0x00000e20, 0x00000000, 0x003d8007, 0x02d4202f, 0x6f8803f2, 0xfc00f720,
-0xc00f7003, 0x083f101f, 0x0fb003f8, 0xbf100fc0, 0xf003fc01, 0x0818c006,
-0x83fd80ff, 0x1ec093f0, 0x00000602, 0x00000000, 0x00150802, 0x904e8397,
-0x17c089b0, 0x7c001f01, 0xc0417020, 0x00db0107, 0x01f0007c, 0x5f0117c8,
-0x30007c18, 0x0804c001, 0x034c00d3, 0x08c06bb0, 0x00000420, 0x00000000,
-0x0c14a013, 0x0b4c21dd, 0x2740a514, 0x6001d601, 0x803d1003, 0x09152077,
-0xbdd10774, 0x9d006748, 0x402b7c42, 0x04fe400f, 0x03c400d1, 0x4c913910,
-0x00000200, 0x00000000, 0x00428007, 0x07048085, 0x63403510, 0x0405cd00,
-0x421c901b, 0x220120b3, 0x0cd04f34, 0x8920e340, 0x90073443, 0x0972580c,
-0x032400c1, 0x1c403410, 0x00000a00, 0x00000000, 0x00488004, 0x24a409ad,
-0x5b408a10, 0x94312508, 0x411290a4, 0x91e10249, 0x92d0a4b4, 0x6d0c5b40,
-0xd0140425, 0x000a0010, 0x07a400c1, 0x1a409e14, 0x00000200, 0x00000000,
-0x00300012, 0x62460097, 0x23c00034, 0x7d00cf00, 0x400cf403, 0x04034417,
-0x0cf0433c, 0x8f2043c1, 0xb0673400, 0x0314c004, 0x036c48c3, 0x48c08130,
-0x00000040, 0x00000000, 0x003da802, 0x21dc20ff, 0x17c0cf70, 0xec883f00,
-0x80037200, 0x00f7a82f, 0x03f2007c, 0x7f203fc2, 0x70807c84, 0x016dc88b,
-0x0bdc0cbf, 0x09c08771, 0x00000660, 0x00000000, 0x0027aa15, 0x014c049f,
-0x05401530, 0x5c001300, 0xc0113004, 0x00170024, 0x01300044, 0x1f0024d0,
-0xf0005c00, 0x0027c0e9, 0x236c00df, 0x54c01f10, 0x00000e00, 0x00000000,
-0x10298812, 0x02ec08fd, 0x38600a10, 0x3c00eb28, 0xc40eb303, 0x00eb0012,
-0x0fb00384, 0xf90018c0, 0xd103bc00, 0x005b4146, 0x038440ad, 0x48400c12,
-0x00000620, 0x00000000, 0x00790003, 0x048400ad, 0x40401283, 0xb4012508,
-0x40109004, 0x01210048, 0x12900404, 0x2d004a40, 0xd0048441, 0x024b4052,
-0x173401ed, 0x0d411e13, 0x00000402, 0x00000000, 0x04b32012, 0x030449cd,
-0x31400c90, 0x3448cd10, 0x452c984b, 0x00c98232, 0x2c900f04, 0xc9203061,
-0xd8cb0512, 0x8033601d, 0x031403cd, 0x49403c10, 0x00000c20, 0x00000000,
-0x01dda017, 0x09c4827f, 0x14d005b4, 0x5c035702, 0x4865b019, 0x40510054,
-0x65903545, 0x5d1016c2, 0xf0195402, 0x0113e055, 0x017c117f, 0x5dd03730,
-0x00000620, 0x00000000, 0x20030012, 0x407c301f, 0x8ac80373, 0xdc063b10,
-0xc023f208, 0x023e008f, 0x03f008bc, 0x3b000fc0, 0xf000fe02, 0x000fea23,
-0x0024001f, 0x4a0061f4, 0x00000c00, 0x00000000, 0x00270010, 0x020c0883,
-0x67c04930, 0x7c419300, 0xc0599016, 0x05830161, 0x4830066c, 0x8720a0c0,
-0x308a2e41, 0x3824cc59, 0x026d5097, 0x43c01930, 0x00000c20, 0x00000000,
-0x38662801, 0x16540091, 0x27644950, 0x5c009500, 0x40499012, 0x839500e7,
-0x7952165c, 0x9510e540, 0x520e5403, 0x00244009, 0x02640091, 0x07407950,
-0x00000800, 0x00000000, 0x0224a018, 0x12440091, 0x2f400912, 0xe488b902,
-0x400bd082, 0x00bd002f, 0x0b1822c4, 0xb1102c40, 0x1002c408, 0x902e002b,
-0x0245008d, 0x63444910, 0x00000200, 0x00000000, 0x48202010, 0x0a140281,
-0xab402a50, 0x8402ad00, 0x442a910a, 0xc2a528ab, 0x2a528a94, 0xa538b944,
-0x520b9402, 0x022a528a, 0x12040089, 0x43408850, 0x00000080, 0x00000000,
-0x0506b01d, 0x504e0013, 0x17400030, 0x7c205b20, 0xc001f000, 0x004b2017,
-0x0130004e, 0x570004c0, 0x30006c00, 0x0d8ec161, 0x2c6c1e0f, 0x77c16130,
-0x00000ac0, 0x00000000, 0x002f9019, 0x02fc42ff, 0xa7c029f1, 0x70029720,
-0xc029f00a, 0x029f10b7, 0x29f00a5c, 0x9f00a7c2, 0xf00a7c82, 0x0125c049,
-0x267c81b7, 0x67c24bb4, 0x00000e60, 0x00000000, 0x012fa818, 0x0a4c14bf,
-0x24c129b0, 0x4c089e05, 0x89693222, 0x149325a4, 0x29321246, 0x93022480,
-0xb04a6802, 0x002fc94b, 0x026c009d, 0x67c10bf0, 0x00000e00, 0x00000000,
-0x8087081c, 0x006c461d, 0x86c02110, 0x6c421d30, 0xc461b008, 0x42111186,
-0x01113844, 0x1b938440, 0x1100ec80, 0x01074060, 0x28440e17, 0x734021e0,
-0x00000c22, 0x00000000, 0x00a3a010, 0x1284108d, 0x2b604a50, 0x8606ad84,
-0x600ad81a, 0x10a58028, 0x6a584296, 0xad802942, 0x98129446, 0x04a24908,
-0x5224108d, 0x434148d0, 0x00000e80, 0x00000000, 0x01a5a018, 0x0224009d,
-0x2f440b10, 0xa400bd00, 0x420bd002, 0x60b5182a, 0x0a5103c4, 0xb91c2d40,
-0x1002f420, 0x00276409, 0x82640095, 0x63414950, 0x00000620, 0x00000000,
-0x00a7a005, 0x064c029d, 0x25c009b4, 0x4c009f00, 0xc009f402, 0x00974024,
-0x09540255, 0x9d00a5d0, 0xb0025420, 0x0126c909, 0x026c049f, 0x17c039d0,
-0x00000e20, 0x00000000, 0x00258014, 0x0e7c029f, 0x26c099f0, 0x7c008f00,
-0xc4093082, 0x009b3827, 0x09b3026c, 0x9b0026c0, 0xf0026c00, 0x0427e809,
-0x025c0587, 0x53c019f0, 0x00000600, 0x00000000, 0x00050014, 0x00cc0217,
-0x0cc30238, 0xcc103340, 0xc4023000, 0x8037048f, 0x03f280cc, 0x2b0088c0,
-0xf000f800, 0x2084c001, 0x80480213, 0x53c021d2, 0x00000420, 0x00000000,
-0x0014a814, 0x0145015d, 0x95431558, 0x54025100, 0x44355021, 0x1b570017,
-0x85d18970, 0x5d201540, 0xd001f40a, 0x009c4007, 0x01440055, 0x530067d0,
-0x00000200, 0x00000000, 0x0032a014, 0x038401dd, 0xba601e12, 0xb628e904,
-0x43ae90a3, 0x23fd20bb, 0x0e904fe4, 0xed0c7860, 0xd087d48a, 0x08b3420c,
-0x830400c9, 0x53413cd0, 0x00000a00, 0x00000000, 0x10388005, 0x038402ed,
-0xfb400c50, 0x3400e900, 0x400ed203, 0x00e5003a, 0x2ed00bb4, 0xed843940,
-0xd00ba440, 0x0043421e, 0x138404ed, 0x17400ed0, 0x00000200, 0x00000000,
-0x00681015, 0x070c81ff, 0x7ec01e18, 0xbc01cb18, 0xc01eb007, 0x21c7007b,
-0x1cf187ac, 0xeb0078c0, 0xf0079c01, 0x007bc01e, 0x178e01fb, 0x57c01af0,
-0x00000040, 0x00000000, 0x0035b010, 0x007c00df, 0x05c001f0, 0x5c001710,
-0xc0016000, 0x001f0017, 0x01f0005c, 0x1f1007c8, 0xf0007c00, 0x0804c00d,
-0x1b7d0ad7, 0x43c003f0, 0x00000660, 0x00000000, 0x007ba000, 0x07c804f3,
-0x7c801f30, 0xc801f300, 0xc01fb007, 0x09da0274, 0x1fe007dc, 0xf2027f80,
-0xf087f809, 0x005cc09d, 0x4f5403df, 0x0bc097f0, 0x00000e00, 0x00000000,
-0x00398815, 0x138410ab, 0x3ac04e10, 0x8444f100, 0x440ef113, 0x27ef0078,
-0x0ef023b4, 0xeb10b9c0, 0xd0033408, 0x0408441e, 0x079421fd, 0x57c00ad0,
-0x00000620, 0x00000000, 0x00290000, 0x83040081, 0x38400e12, 0xa400e102,
-0x400e9843, 0x08ed0138, 0x0ed003b4, 0xe9003b40, 0xd047b400, 0x001a408c,
-0x038700ed, 0x236006d0, 0x00000400, 0x00000000, 0x30332804, 0x8c240099,
-0xc260a010, 0x340a0120, 0x40315a08, 0x420d1210, 0xe0402834, 0x01428540,
-0xd004344e, 0x0040489c, 0x030413dd, 0x194020d0, 0x00000c20, 0x00000000,
-0x0035a815, 0x634c01d1, 0xf4c83d10, 0x6d03d349, 0x507d900b, 0x92d90064,
-0x3dd00f5e, 0xd900f7c0, 0xd0077c03, 0x00c4c00d, 0x03dd12ff, 0x57400dd0,
-0x00000620, 0x00000000, 0x28260001, 0x015c00df, 0xb7c02df0, 0x4c00df00,
-0xc02df10b, 0xc2d700a7, 0x2df0037c, 0xdf08b7c4, 0xf2037c42, 0x0497d00c,
-0x037400df, 0x27007ff2, 0x00000c00, 0x00000000, 0x006b0880, 0x02a400f3,
-0x7ec10c30, 0xfc11ff04, 0xc19ff057, 0x15f7046c, 0x9ff0c3c4, 0xf3043e00,
-0x7063cc42, 0x000cc103, 0x03cd00f3, 0x04c01af1, 0x00000c20, 0x00000000,
-0x00262081, 0x034400d1, 0x85404110, 0x74041d10, 0x4031d10c, 0x401e2404,
-0x51d00874, 0x1110c740, 0x10045401, 0x43514031, 0x034080d5, 0x254059d0,
-0x00000802, 0x00000000, 0x02342001, 0x1b5400d1, 0x04404110, 0x74081d06,
-0x41015840, 0x201c2204, 0x01d0a044, 0x01020640, 0x500224b0, 0x0024538d,
-0x834000d1, 0x044085d0, 0x00000200, 0x00000000, 0x00202010, 0x01140081,
-0x01400010, 0x34000c00, 0x5000d800, 0x24090100, 0x00d10036, 0x01400340,
-0x10023400, 0x0010410c, 0x030404c1, 0x404004d2, 0x00000080, 0x00000000,
-0x00269000, 0x025c0093, 0x00c00110, 0x7c801f08, 0xc8007080, 0x011f0844,
-0x01f2004e, 0x120202c2, 0x70826c80, 0x0024c011, 0x17cc01f3, 0x04c001f0,
-0x00000ac0, 0x00000000, 0x802fb005, 0x03cc00bf, 0x3fc40fd0, 0xfc00ff10,
-0xc00ff103, 0x08f7022f, 0x0ff003fc, 0xff097fc0, 0xf045dc00, 0x001fc403,
-0xa3fc08ff, 0x17c003f0, 0x00000e40, 0x00000000, 0x000fa003, 0x23fc00ff,
-0x3cc00f31, 0xcc00fd30, 0xc00ff003, 0x40ff002d, 0x0f7803cc, 0xfa003fc4,
-0xf081cc80, 0x083fc00f, 0x03cc04f3, 0x0cc06f74, 0x00000e00, 0x00000000,
-0x04870801, 0x0274121d, 0x054001b8, 0x6c801f00, 0x4001d200, 0xc0170807,
-0x01520044, 0x05280740, 0xd0026c80, 0x00b7400d, 0x03948ae1, 0x04404e10,
-0x00000c20, 0x00000000, 0x0303a011, 0x01160ccd, 0x02460090, 0x04800d00,
-0x44005800, 0x000d0001, 0x00900005, 0x05200140, 0x50022420, 0x60b14008,
-0x033400c9, 0x44406c10, 0x00000e80, 0x00000000, 0x0005a803, 0x0336289d,
-0x07428110, 0x6400152c, 0x4241d080, 0x20151207, 0x81504054, 0x15000646,
-0xd1826420, 0x0037420d, 0x033400d9, 0x0c400d12, 0x00000620, 0x00000000,
-0x0637a802, 0x077c00df, 0x06c82190, 0x4c0b1d08, 0xc131f01c, 0x041f0145,
-0x21b3084c, 0x1704c7c4, 0xf0046c49, 0x0237c00d, 0x037c00db, 0x08c00d10,
-0x00000e20, 0x00000000, 0x003d8007, 0x0efca07e, 0x3dc80ff2, 0xfc21ff0a,
-0xc01ff013, 0x04ff1027, 0x0df023ec, 0xf500bb80, 0xf027fc00, 0x0077400f,
-0x03dc60f7, 0x1fc00f80, 0x00000600, 0x00000000, 0x10350802, 0x017c08df,
-0x37c02cf0, 0x7c02c300, 0xc00df083, 0x20d70027, 0x2df00b3c, 0xc34236c0,
-0xb1034c80, 0x0437c04d, 0x035c00c3, 0x08c00db4, 0x00000420, 0x00000000,
-0x0ef4a213, 0x03460bd9, 0x37400dd0, 0x6403d5a0, 0xc10dd007, 0x18d50c24,
-0x5de0c364, 0xd0087542, 0x500f4401, 0x00b7043d, 0x03c407f1, 0x4c400f50,
-0x00000200, 0x00000000, 0x0022a007, 0x2014230d, 0x034000d0, 0x342501a0,
-0x6330d06c, 0x011104d2, 0x00904824, 0x05048141, 0x116c0413, 0x40b7402c,
-0x030513c9, 0x1c400d10, 0x00000a00, 0x00000000, 0x00688004, 0x07844129,
-0x73401ed1, 0xb499e520, 0x645ed007, 0x01e50178, 0xded007a4, 0xe5027940,
-0x53170411, 0x147b415e, 0x27a481e9, 0x10401e50, 0x00000200, 0x00000000,
-0x00301012, 0x0b140a1f, 0x33c28cf1, 0x3c02c100, 0xc00cf023, 0x00c70033,
-0x6cf0333c, 0xc72035c0, 0x30030d0c, 0x00238008, 0x031c80cb, 0x48c00c32,
-0x00000040, 0x00000000, 0x003db802, 0x23dc00bb, 0x3fc20ff0, 0xec20ff00,
-0xc24ff0a3, 0x00de0136, 0x4f70a3ec, 0xfb003dc0, 0x73177c28, 0x002fc24f,
-0x83dc40f7, 0x0bc00f71, 0x00000660, 0x00000000, 0x0027a015, 0x007c001f,
-0x05c201f0, 0x4d001f00, 0xc2013100, 0x001b0054, 0x11f2007c, 0x1b0804c8,
-0x30047c00, 0x0834c01d, 0x434485d1, 0x54c13d34, 0x00000e00, 0x00000000,
-0x00298812, 0x03b4006c, 0x39c00ed0, 0x8400e320, 0x400e9803, 0x80e12038,
-0x0ec803b4, 0xeb083040, 0xb003b400, 0x2038440f, 0x138414fb, 0x49404e50,
-0x00000620, 0x00000000, 0x00f90003, 0x07b4012d, 0x79401e50, 0x8401ed00,
-0x401e1007, 0x01e10078, 0x1ed007b4, 0xe408f848, 0x50473401, 0x2061401e,
-0x27850ce1, 0x0c549c50, 0x00000400, 0x00000000, 0x01b30812, 0x03b600cd,
-0xbd407ed0, 0x8407f500, 0x401e904f, 0x8ae100b8, 0x1ed02fb4, 0xed08f844,
-0xd003b440, 0x0021501c, 0x030400c9, 0x49400c58, 0x00000c20, 0x00000000,
-0x005da817, 0x0174117f, 0xd5c11470, 0x4c115f04, 0xd1953049, 0x015b4094,
-0x65f00d7c, 0x570014d0, 0x7001f405, 0x0015c115, 0x014c0053, 0x5cc00550,
-0x00000620, 0x00000000, 0x10830012, 0x08fe001f, 0x0dc403f2, 0xfc423304,
-0xc022b188, 0x063f210f, 0x63f148f4, 0x3ba08fc4, 0x9008fc02, 0x1006c001,
-0x007c821b, 0x4ac001a2, 0x00000c00, 0x00000000, 0x00270810, 0x061c0293,
-0x26c00970, 0x4c019300, 0xc019b0a6, 0x059f0024, 0x5930163c, 0x9304a7c0,
-0xf0227c99, 0x0223c009, 0x020c0583, 0x43c009b4, 0x00000c20, 0x00000000,
-0x00260001, 0x1a4c0091, 0x25c08950, 0x44129520, 0x01b9140e, 0x279d0025,
-0x49529e74, 0x9101a748, 0xd00a7403, 0x00e74009, 0x02440495, 0x0740091c,
-0x00000800, 0x00000000, 0x8024a018, 0x22540089, 0x2c400f10, 0x8404b120,
-0x000b1242, 0x00bd022c, 0x0b1002f4, 0xf0002b46, 0xd082f490, 0x04270089,
-0x02444091, 0x63400914, 0x00000200, 0x00000000, 0x42302010, 0x22a40281,
-0xa9480a50, 0x8502a500, 0x422a100a, 0x02ad00a9, 0x2a500ab4, 0xa140aa40,
-0xd10bb402, 0x05a34028, 0x12040685, 0x43404812, 0x00000080, 0x00000000,
-0x0586b01d, 0x085e8013, 0x04c00170, 0x4c000300, 0xc8003000, 0x801f0810,
-0x0030807c, 0x120007c0, 0xf000fc00, 0x0107c005, 0x2c0c0113, 0x77c0b134,
-0x00000ac0, 0x00000000, 0x012fb819, 0x1a4c02bf, 0xa5c029f0, 0x7c429f00,
-0xc429f10a, 0x029f00a7, 0x29f10a7c, 0x9f00a7c0, 0xf20a7c02, 0x002fc00b,
-0x267c289d, 0x67c099f0, 0x00000e60, 0x00000000, 0x01afa818, 0x1a6c06b7,
-0xa4c04b70, 0x4c869e01, 0x4009b032, 0x109f0027, 0x6930124c, 0x9f2327c0,
-0xb0027000, 0x09254489, 0x1a7c8093, 0x63c00932, 0x00000e00, 0x00000000,
-0x0183081c, 0x184c8617, 0x84c021d0, 0x5c021b21, 0xc0417008, 0x44170014,
-0x05a20144, 0x1f001740, 0x10a8742a, 0x03874000, 0x90740a31, 0x7341e110,
-0x00000c20, 0x00000000, 0x00a30010, 0x1a260285, 0xa2502850, 0x8602ad10,
-0x412a911a, 0x10ad04ab, 0x2a825a85, 0xad01ab48, 0x1442b494, 0x442b444a,
-0x1a3414a1, 0x43400854, 0x00000e80, 0x00000000, 0x01258018, 0x43440295,
-0x254109d0, 0xd4009590, 0x630b5022, 0xa0a50a2c, 0x8b102284, 0xb52a2f48,
-0x1142f4d0, 0x283b600b, 0x027400b1, 0x63400950, 0x00000620, 0x00000000,
-0x0027a005, 0x0e6c0097, 0x64c03970, 0x4c189d01, 0xc039b046, 0x079f2027,
-0x0994024c, 0x9d00e7c0, 0xb2027420, 0x1065c209, 0x027c4091, 0x17420970,
-0x00000e20, 0x00000000, 0x00258014, 0x135c009f, 0x24c088f0, 0x5c019b32,
-0xc08970c2, 0x84970026, 0x09f2426c, 0x9c8027c1, 0xf0267c19, 0x0926c029,
-0x027c009b, 0x53c00920, 0x00000600, 0x00000000, 0x00050014, 0x007c000b,
-0x87c001f0, 0xcc003b80, 0xc0033000, 0x5033000c, 0x03b000cc, 0x3c000cc0,
-0xf108cc02, 0x020ed003, 0x003c003b, 0x50c00130, 0x00000420, 0x00000000,
-0x001ca814, 0x6d440071, 0x174005d0, 0x54005f20, 0x4015b019, 0x035b00d5,
-0x05f0096c, 0x5d0017c0, 0xd2215413, 0x20144225, 0x01740175, 0x50400500,
-0x00000200, 0x00000000, 0x0072a014, 0x031410c1, 0x33400cd0, 0xa400f100,
-0x61ae500b, 0x2be103fa, 0x0e102bb4, 0xe9333840, 0xd007e402, 0x8cf842fe,
-0x033481e1, 0x50500c00, 0x00000a00, 0x00000000, 0x20f88005, 0x038400c1,
-0x72400ed8, 0x3400cd08, 0x6c1cd107, 0x00e9007b, 0x3ed203a4, 0xed203a40,
-0xd0439401, 0x0030481e, 0x13b442e5, 0x14405e10, 0x00000200, 0x00000000,
-0x40781015, 0x279c01a1, 0xfb401ad0, 0xa401e104, 0xc01e7007, 0x61c30072,
-0x1c3407d8, 0xfa1078cc, 0xf1078c81, 0x08788a1e, 0x073c01e3, 0x54c05c36,
-0x00000040, 0x00000000, 0x0015b010, 0x134c0097, 0xb7c009d0, 0x5c001901,
-0xcc01b000, 0x001f0005, 0x0530006c, 0x1d0807c6, 0xf1007c20, 0x0805c001,
-0x2b7c0017, 0x43c0edf1, 0x00000660, 0x00000000, 0x906fa200, 0x07fc0573,
-0x7ec01f70, 0xcc01f700, 0x001f3407, 0x41f7427f, 0x1bfa377c, 0xff027cd0,
-0x7427fc81, 0x027fc09f, 0x0fcc41f3, 0x03c03f32, 0x00000e00, 0x00000000,
-0x003c8815, 0x02bc006b, 0x3de00eb0, 0xd410f12a, 0xc00e7083, 0x20e1033d,
-0x6bd817b4, 0xed02b941, 0x100bb400, 0x0b3b44ce, 0x23d440ef, 0x57404eb0,
-0x00000620, 0x00000000, 0x00290000, 0x01340621, 0x3a408a90, 0x8400e500,
-0x410e1063, 0x08e1003b, 0x0a5203a4, 0xed0a3840, 0x1203b400, 0x803b480e,
-0x038401e5, 0x03600e90, 0x00000400, 0x00000000, 0x08132804, 0x08140001,
-0x71481811, 0x14010100, 0x4001104c, 0x60010241, 0x00d00034, 0x0d090040,
-0x1028340b, 0x00034200, 0x0354600d, 0x13400c80, 0x00000c20, 0x00000000,
-0x3015a815, 0x65744091, 0xbec1b914, 0x4c43d522, 0xc2bd1107, 0x53d720b7,
-0x2d784b74, 0xdd04f4c0, 0x708f7c8a, 0x0037804d, 0x03cc00d3, 0x57c00f9c,
-0x00000620, 0x00000000, 0x08270201, 0x097c015f, 0x37c209f0, 0x3c905f22,
-0xc80d7083, 0xd0df21b7, 0x0df0137c, 0xdd00b7c1, 0xf10b7c02, 0x00b7c02d,
-0x037c00da, 0x07c00df0, 0x00000c00, 0x00000000, 0x009b0880, 0x0cfc00b3,
-0x3fc80bf0, 0xec00bb10, 0xc21fb20f, 0x03ef017c, 0x0ff023cc, 0xee013f48,
-0xf047cc00, 0x0074c08f, 0x03f801df, 0x03c00ff8, 0x00000c22, 0x00000000,
-0x84c62081, 0x00740051, 0x374019d2, 0x4c40d518, 0x40117094, 0x021d00c5,
-0x25d04854, 0x1d204740, 0xd0005426, 0x00454310, 0x03742017, 0x07400d50,
-0x00000802, 0x00000000, 0x0804a001, 0x01748191, 0x33484990, 0x7486d900,
-0x40615200, 0x501d0885, 0x01d08054, 0x14000640, 0xd0204604, 0x09064001,
-0x0374649d, 0x07400dd8, 0x00000200, 0x00000000, 0x00202010, 0x00240141,
-0x32400898, 0x04004100, 0x4000d100, 0x40082000, 0x00824014, 0x0d000248,
-0xd0001400, 0x00014001, 0x03340085, 0x43400c18, 0x00000080, 0x00000000,
-0x4006b000, 0x007c0091, 0x3fc009f0, 0x7c209b00, 0xd0017200, 0x801e0005,
-0x01d0945c, 0x1e9007c0, 0xe2000c00, 0x00048401, 0x03fc009f, 0x03c00ff0,
-0x00000ac0, 0x00000000, 0x000f9005, 0x00fc407f, 0x3fc40be1, 0xdc20ff00,
-0xc40f7083, 0x80fe083f, 0x0bf003fc, 0xff003fc8, 0xf003fc00, 0x003fc20f,
-0x03fc0077, 0x17c00ff0, 0x00000e60, 0x00000000, 0x010fa803, 0x03ec04ff,
-0x3fc00ff0, 0xfc00ff00, 0xc20ff003, 0x00df0037, 0x0fb003ec, 0xf70037c0,
-0xf003fc60, 0x006fc015, 0x236c079f, 0x0cd08fb0, 0x00000e00, 0x00000000,
-0x05a70801, 0x0044321d, 0x05c001d2, 0x74000700, 0x4201d000, 0x001d0007,
-0x01140044, 0x1d200740, 0xd1007420, 0x0292c085, 0x9b84825d, 0x04486f10,
-0x00000c20, 0x00000000, 0x0213a011, 0x82248c0d, 0x134008d1, 0x3400cd00,
-0x400cd003, 0x20cd2012, 0x0c100114, 0xcd083344, 0xd0013400, 0x20034004,
-0xa304868d, 0x44446c10, 0x00000e80, 0x00000000, 0x3225a003, 0x417400cd,
-0x274005d8, 0x74001d00, 0x4001d800, 0x000d0027, 0x01030254, 0x1d040740,
-0xd0027422, 0x00354005, 0x0364005d, 0x0c400c14, 0x00000620, 0x00000000,
-0x2147a002, 0x036c00df, 0x37c805f0, 0x7412df00, 0xc53df04b, 0x005f2237,
-0x0130075d, 0x970277c0, 0xf0077c82, 0x000f400f, 0x036d00bf, 0x00c00db2,
-0x00000e20, 0x00000000, 0x006d8007, 0x00c8803d, 0x0d800bd0, 0xfc183702,
-0xc083f0a0, 0x08bf044f, 0x0ff010ec, 0x7f204fc0, 0xf220fc00, 0x003ec00f,
-0x83dc006e, 0x1fc80ff0, 0x00000602, 0x00000000, 0x40150002, 0x465c2413,
-0x17c10170, 0x6c02df08, 0xc12d700b, 0x205f2214, 0x01b0310c, 0x9d0037c0,
-0xf3014c10, 0x4406c8cd, 0x034c0093, 0x09c00d70, 0x00000420, 0x00000000,
-0x2024a013, 0x014400d1, 0x67425d18, 0x44011d09, 0x4821d088, 0x0b9d00a5,
-0x5dd08244, 0x59008746, 0xd0064c01, 0x0034402d, 0x03c40051, 0x4c40af10,
-0x00000200, 0x00000000, 0x0202a807, 0x811422c1, 0xa3400c50, 0x04210d04,
-0x40a0d030, 0x238c0822, 0x2c900e06, 0x4d048341, 0xd0622400, 0x08404014,
-0x03440080, 0x1c409c10, 0x00000a00, 0x00000000, 0x11508004, 0x26840121,
-0x5a401290, 0x8611ed01, 0x401ed007, 0x956d015a, 0x92d00586, 0xa9047b40,
-0x920584e1, 0x01784c56, 0x07840541, 0x18401c10, 0x00000200, 0x00000000,
-0x00101012, 0x201c0013, 0x43c04878, 0x0d000f21, 0x50417200, 0x019f2042,
-0x8cb2b00d, 0x5f2343c0, 0xf2002914, 0x8480d055, 0x070d0583, 0x49c28c70,
-0x00000040, 0x00000000, 0x011db802, 0x23be00ff, 0x3fc00770, 0xdc00ff00,
-0xc00ff223, 0x407f003d, 0x81f0a37c, 0xbb0037c0, 0xf027fcc0, 0x013dc007,
-0x23fc097f, 0x0bc00ff4, 0x00000660, 0x00000000, 0x0067a815, 0x814c81d3,
-0x65c00570, 0x7c001300, 0xc001f800, 0x001f0027, 0x11f0027c, 0x1f0004c2,
-0xf0827c20, 0x2007c00d, 0x0b4b0193, 0x57c0adf0, 0x00000e00, 0x00000000,
-0x10398812, 0x02ac0001, 0x18400a10, 0x9c00e100, 0xc20ed803, 0x00ed001b,
-0x0ed001b4, 0xe7003840, 0xd001b400, 0x1033480e, 0xcbac006b, 0x4b410ed0,
-0x00000620, 0x00000000, 0x00790003, 0x04840121, 0x49401250, 0xb4a12900,
-0x4812d884, 0x012d204b, 0x32d084b4, 0x2d20484a, 0xd284b4a1, 0x004b601e,
-0x87840081, 0x0f405ed1, 0x00000402, 0x00000000, 0x00332012, 0x032440c1,
-0x30402c10, 0x5400c900, 0x400cd003, 0x00cd0037, 0x3cd20336, 0xc5083041,
-0xd0033421, 0x2433486c, 0x03040049, 0x4b400cd8, 0x00000c20, 0x00000000,
-0x401d8017, 0x01440071, 0x15c02450, 0x7c005b40, 0xc005f001, 0x405f0017,
-0x05f0017c, 0x5f0014d0, 0xf081fc04, 0x0017c025, 0x01440073, 0x5fc005f0,
-0x00000620, 0x00000000, 0x00c70012, 0x00fc001f, 0x8ec103f8, 0xfc003700,
-0xc403f000, 0x063f000d, 0x23f000fe, 0x3f108fc4, 0xf000bc00, 0x000fc420,
-0x007c003f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x02670010, 0x021c019f,
-0x66c059b1, 0x7c009f00, 0xc0093102, 0xc2930027, 0x19300a7e, 0x9f00e7c0,
-0x31027c04, 0x0060c019, 0x020c0083, 0x40c00830, 0x00000c20, 0x00000000,
-0x10262001, 0x0274419d, 0xe4401931, 0x74189d20, 0x4009120e, 0x03912027,
-0x39110e74, 0x9d002742, 0x142a7403, 0x00e4c039, 0x02442095, 0x04500950,
-0x00000800, 0x00000000, 0x0424a818, 0x0674049d, 0x2e400b10, 0xf400bd01,
-0x406b501a, 0x00b111af, 0x8b9002b4, 0xbd902f40, 0x108af490, 0x062c40a9,
-0x024400b1, 0x60408910, 0x00000200, 0x00000000, 0x02202010, 0x06b4038d,
-0xa8400a90, 0xb602ad00, 0x402a500a, 0x02a110ab, 0x2a900bb4, 0xad80bb40,
-0x100ab402, 0x00a84028, 0x920400a5, 0x4048d850, 0x00000080, 0x00000000,
-0x8d82b01d, 0x007c941f, 0x12c001b4, 0x7c801f00, 0xc8017400, 0x80524007,
-0x04b40070, 0x1f0007c2, 0x3000fc00, 0x0004d001, 0x2c4e2033, 0x74c03130,
-0x00000ac0, 0x00000000, 0x012fb819, 0x0a3c00bf, 0xb7c82878, 0x7c229f08,
-0xc229b20a, 0x029f00a7, 0x29720a7c, 0x9f10a7c0, 0xf08a7c42, 0x00a5c429,
-0x267c169f, 0x67c0c9f0, 0x00000e60, 0x00000000, 0x002fa018, 0x02cc20bf,
-0x27c24b30, 0x4c089f05, 0xc149f0b2, 0x089f2b24, 0xc9f0c25e, 0x932824c1,
-0x00227004, 0x0167c059, 0x124c0591, 0x67c14b30, 0x00000e00, 0x00000000,
-0x2487081c, 0x206c901d, 0x07400114, 0x14881f01, 0x4841d000, 0x82172300,
-0x21d2585c, 0x01078140, 0x30187484, 0x248dc921, 0x58440211, 0x736141b0,
-0x00000c22, 0x00000000, 0x0b23a010, 0x0224008c, 0x2b408810, 0x8480ad05,
-0x494ad232, 0x0cad1129, 0x0ad102b4, 0xa1112944, 0x961aa436, 0x00ab426a,
-0x32241689, 0x43400810, 0x00000e80, 0x00000000, 0x80258818, 0x0264409d,
-0x27600910, 0xd400bd00, 0x400ed002, 0x00b5002d, 0x0bd242f4, 0xb1002d40,
-0x1042f400, 0x202d400b, 0x02640099, 0x63600990, 0x00000620, 0x00000000,
-0x0a67a805, 0x064c339f, 0x27c00930, 0x4c009f08, 0xd009fa02, 0x009f04a5,
-0x09f00a7c, 0x93c025c8, 0xb8026c00, 0x4127c809, 0x026c009a, 0x17400930,
-0x00000e20, 0x00000000, 0x14258014, 0x223c058f, 0x27c039f0, 0x7c009700,
-0xc009b002, 0x009f0026, 0x09f0025c, 0x9f0827c0, 0xf0023c40, 0x0025c809,
-0x025c0097, 0x53c009f0, 0x00000600, 0x00000000, 0x00050814, 0x004c0217,
-0x8fc80134, 0xfc803340, 0xc8033400, 0x6c33448f, 0x03f000dc, 0x33240fc2,
-0x7088cd04, 0x000dc2c3, 0x003c0003, 0x53c101f0, 0x00000420, 0x00000000,
-0x049ca014, 0x85c43177, 0x17408711, 0x74055320, 0x49251201, 0x20541c97,
-0x25d03d5c, 0x51105743, 0x100d4401, 0x001f4025, 0x01740051, 0x534037d0,
-0x00000200, 0x00000000, 0x00f2a014, 0x030400c5, 0x3b420c12, 0xb407f100,
-0x407e9837, 0x03e1003b, 0x7fd08f96, 0xe100ff00, 0x11138441, 0x407d600e,
-0x033400c1, 0x53408cd0, 0x00000a00, 0x00000000, 0x08288005, 0x0b040065,
-0x7b400a10, 0xb400e120, 0x400e9007, 0x00e9007b, 0x0ed003a4, 0xe9143a44,
-0x10438403, 0x043b420e, 0x23b405e5, 0x17480ad0, 0x00000200, 0x00000000,
-0x00781015, 0x878c0107, 0x7f4c1e32, 0xbc01e310, 0xc01e3007, 0x81e3007b,
-0x1ef1079c, 0xe3407bc8, 0x7407cc81, 0x0871c41e, 0x07bc02e3, 0x57c016f0,
-0x00000040, 0x00000000, 0x00359810, 0x017d001f, 0x07c20dd1, 0x7c001700,
-0xc4017000, 0x00150007, 0x01f0015c, 0x170807c0, 0xf1007c00, 0x0007c001,
-0xcb7c01db, 0x43c003f0, 0x00000660, 0x00000000, 0x005f8800, 0x07cc01b3,
-0x7ec09732, 0x4881f300, 0xc09f9007, 0x01f30174, 0x1f3006dc, 0xfb127cc0,
-0xf0074c05, 0x093ec09f, 0x07cd01f3, 0x0bc01f30, 0x00000e00, 0x00000000,
-0x00899815, 0x03844a21, 0x30400ab0, 0x840aeb02, 0x408eb007, 0x02e90078,
-0x0e115694, 0xe30a7840, 0xf0578404, 0x003ac0ae, 0x038400fb, 0x57400a10,
-0x00000620, 0x00000000, 0x02290000, 0x23040021, 0x30610410, 0x0410c100,
-0x450c1803, 0x18cd0633, 0x0c103284, 0xc1893041, 0xd023a45c, 0x0070440e,
-0x039400e9, 0x23400610, 0x00000400, 0x00000000, 0x24e72004, 0x15041801,
-0xc0401c18, 0x04200109, 0x4120901c, 0x25098083, 0x60110854, 0x0112c040,
-0x51402400, 0x00c04000, 0x031002c1, 0x1b000110, 0x00000c20, 0x00000000,
-0x44b5a015, 0x154c01d0, 0xb4c01d11, 0x4c00d104, 0xc02d304b, 0x81d30a77,
-0x2d310b4c, 0xd302f4c0, 0xd0036c02, 0x04f4540d, 0x03dd0ff9, 0x77400d34,
-0x00000620, 0x00000000, 0x80270001, 0x037d025f, 0x15c021f0, 0x7c04df00,
-0xc00d7203, 0x20d210b4, 0x2df2436c, 0xdf0037c8, 0xf00b5c02, 0x0137c00c,
-0x036c00cf, 0x87c007f8, 0x00000c00, 0x00000000, 0x80170080, 0x058c2183,
-0x28c70a30, 0x8e01eb00, 0xc20e3023, 0x20e30038, 0x2e32035c, 0xeb0078c8,
-0x3217cc19, 0x00b8c05f, 0x034c00fb, 0x04c01bf0, 0x00000c20, 0x00000000,
-0x00962081, 0x0d440097, 0xf442b110, 0x44031100, 0x4411100c, 0x42150444,
-0x11f04968, 0x1108c6c0, 0x10005423, 0x0046c021, 0x034480db, 0x04c021d2,
-0x00000802, 0x00000000, 0x0014a001, 0x194508d9, 0xb4402510, 0x44041101,
-0x40411040, 0x08112204, 0x01100044, 0x11018441, 0x10401410, 0x10244001,
-0x834420d1, 0x0440add0, 0x00000200, 0x00000000, 0x00002010, 0x0304804d,
-0x10600010, 0x04400102, 0x40001040, 0x00011100, 0x00140004, 0x01210244,
-0x10001440, 0x80224000, 0x230408c9, 0x424008d0, 0x00000080, 0x00000000,
-0x0006b000, 0x014c00db, 0x24400132, 0x44001900, 0xc0013014, 0x08130b44,
-0x01101454, 0x1320c4c0, 0x34144480, 0x4024c280, 0x03cd00d3, 0x04e005f2,
-0x00000ac0, 0x00000000, 0x800fb805, 0x00fc00f7, 0x7fc003f0, 0xec00f701,
-0xc00fd203, 0x85ff037f, 0x0ff00a7c, 0xff05f5c0, 0xf00bec00, 0x001fc05f,
-0x17fc45ff, 0x15c003f1, 0x00000e60, 0x00000000, 0x040f9003, 0x10fc0433,
-0x0fc00ff0, 0xc400f300, 0xc00f3003, 0x00f30036, 0x0b3003cc, 0xfb003cc0,
-0xb003cc00, 0x003fc00f, 0x23cc0873, 0x0cc14371, 0x00000e00, 0x00000000,
-0x00870001, 0x08740811, 0xb0484fd8, 0x4d009f02, 0x4001b400, 0x00110004,
-0x01140044, 0x11400440, 0x10004500, 0x24074001, 0x83c44491, 0x04492110,
-0x00000c20, 0x00000000, 0x0523a011, 0x20340001, 0x15410cd0, 0x26004120,
-0x40009000, 0x00014000, 0x00d00006, 0x01800258, 0x10002400, 0x01034000,
-0x13240089, 0x45404c10, 0x00000e80, 0x00000000, 0x0025a803, 0x01740051,
-0x34400dd2, 0x2410c502, 0x40811060, 0x08110000, 0x01d0a806, 0x09000141,
-0x10086408, 0x22074001, 0x03640099, 0x0c400d14, 0x00000620, 0x00000000,
-0x0047a802, 0x007c4113, 0x81c00dd0, 0x4c83d100, 0xd0319108, 0x13130206,
-0x31f1084d, 0x1b0086c0, 0xb4286c04, 0x4107c0f1, 0x036d0019, 0x09c3b130,
-0x00000e20, 0x00000000, 0x08cd8007, 0x0efc04ff, 0x1f880ef2, 0xdc09bf00,
-0x800ed207, 0x61ee007f, 0x8b3007f8, 0xf7023ec0, 0xf0039c01, 0x007bc01f,
-0x035c84e7, 0x1fc012b2, 0x00000600, 0x00000000, 0x00310802, 0x077c8097,
-0x97208d32, 0x6c025700, 0xc00d302b, 0x60d302b7, 0x69301b7c, 0xd900b5c0,
-0x70035c08, 0x2234c0ad, 0x037c00de, 0x08c02f30, 0x00000420, 0x00000000,
-0x02b4a013, 0x03740add, 0x1f601f14, 0x6d02d100, 0x405d1487, 0x05d12077,
-0x0915177e, 0xd1017440, 0x14174501, 0x0076d01d, 0x03f480dd, 0x4c41ad14,
-0x00000200, 0x00000000, 0x0012a007, 0x00240009, 0xd3410c10, 0x04470111,
-0x4070581c, 0x070101c3, 0x35820c34, 0x0181c044, 0x101c0407, 0x01c24070,
-0x0374000d, 0x1c403090, 0x00000a00, 0x00000000, 0x20788004, 0x05b4012d,
-0x7b405e10, 0xb411e144, 0x401e5007, 0x01e1007b, 0x1c900794, 0xe1287041,
-0x10078401, 0x007a401e, 0x37b401ed, 0x10401290, 0x00000200, 0x00000000,
-0x00100012, 0x206c0047, 0x13400c39, 0x4c0cd710, 0xc0ac7023, 0x00c30377,
-0x0cb12370, 0xd34231d0, 0x70335c08, 0x0232c0cd, 0x133c00cf, 0x48d001b0,
-0x00000040, 0x00000000, 0x003da802, 0x01fc007f, 0x3fe04ff0, 0xcc08ff00,
-0xc00fb023, 0x00dfc037, 0x8f7003fc, 0xf7003fc0, 0xf023fc00, 0x023dc08f,
-0x13fc01fd, 0x0bc00370, 0x00000660, 0x00000000, 0x0007a015, 0x917c045f,
-0x30c1adf0, 0x7c801342, 0xc001e000, 0x401f0007, 0x0572007c, 0x170007c2,
-0xf0007c00, 0x0007c001, 0x1b4c001f, 0x57c00f30, 0x00000e00, 0x00000000,
-0x00298812, 0xa3b408ed, 0x78680ed0, 0xb400e100, 0x480e7203, 0x00ed103b,
-0x0ed003bc, 0xed203b40, 0xd203b400, 0x203bc00e, 0x4bac00ed, 0x4b400e10,
-0x00000620, 0x00000000, 0x00d90003, 0x07b681ed, 0x7c401ed3, 0xb401e900,
-0x411ed007, 0x21ed207b, 0x1ed007b4, 0xe5047b40, 0xd007b401, 0x007b403e,
-0x170411ed, 0x0f411e94, 0x00000400, 0x00000000, 0x00772812, 0x1b3400dd,
-0xb0440cd0, 0xb400e900, 0x400e500b, 0x12fd013b, 0x0ed10794, 0xed01bb44,
-0xd00fb400, 0x08b9404e, 0x032421fd, 0x4b422c90, 0x00000c20, 0x00000000,
-0x201da817, 0x117c265d, 0x9cd805d0, 0x7c005b00, 0xc015f041, 0x045f1417,
-0x25700170, 0x570857c0, 0xf0617418, 0x01d76625, 0x014cc17f, 0x5fc417b2,
-0x00000620, 0x00000000, 0x00070012, 0x807c121f, 0x87c020f2, 0xbc003700,
-0xc843f210, 0x003f000f, 0x43f030fc, 0x3f200fc6, 0xf000fc00, 0x098fe003,
-0x007c003f, 0x4bc12172, 0x00000c00, 0x00000000, 0x00270810, 0x036c05d3,
-0x60f049f0, 0x4c808b44, 0xc0093002, 0x00930060, 0x08b0020c, 0x830020c4,
-0xf3024c00, 0x1026c808, 0x825c009f, 0x43c00931, 0x00000c20, 0x00000000,
-0x42a62001, 0x02450791, 0x246829d0, 0x44009106, 0x44091002, 0x40911024,
-0x0910025d, 0x91102440, 0xd0024400, 0x10a54009, 0x0254009d, 0x07412910,
-0x00000800, 0x00000000, 0x0434a018, 0x02440091, 0x340709d0, 0xc4009980,
-0x500a1802, 0x00b0023c, 0x0b1002e4, 0xb1803c40, 0xd002c400, 0x102c400b,
-0x021400bd, 0x63420918, 0x00000200, 0x00000000, 0x12202010, 0x23040881,
-0xa04088d0, 0x8402a101, 0x402a140a, 0x02a150a8, 0x2a140aa4, 0xa100a858,
-0xd00a8502, 0x08a8502a, 0x120400ad, 0x43408818, 0x00000080, 0x00000000,
-0xa586b01d, 0x584c1613, 0x444020f0, 0x4d001b00, 0xc8013100, 0x40132004,
-0x0132006e, 0x534004c0, 0xf0004c80, 0x0016c401, 0x2c5c8a2f, 0x77c16132,
-0x00000ac0, 0x00000000, 0x012fb819, 0x127c049f, 0x2fc069f0, 0x7c029f22,
-0xc029f00a, 0x029f00a7, 0x2d700a5e, 0x9f80a7c0, 0xf08a7c02, 0x00a7e429,
-0x267c039f, 0x67c04bf4, 0x00000e60, 0x00000000, 0x012fa018, 0x32fc06bf,
-0xa4c429c0, 0x7c049f04, 0xc0093022, 0x009b0027, 0x29f00a6c, 0x9f0227c0,
-0x30027c02, 0x05a4c029, 0x5a7c009f, 0x63c00bb5, 0x00000e00, 0x00000000,
-0x0503081c, 0x08344657, 0x84aa61d0, 0x74001d00, 0x404112a8, 0x041d2107,
-0x00d0804e, 0x17128740, 0x10107400, 0x11ccc001, 0x8864141d, 0x73404110,
-0x00000c20, 0x00000000, 0x0323a010, 0x1a34028d, 0x284888d0, 0xb016ad20,
-0x452a9412, 0x12ad04ab, 0x2ad00ab4, 0xad012b40, 0x544ab402, 0x002a402a,
-0x1234028d, 0x43413890, 0x00000e80, 0x00000000, 0x0025a818, 0x42740895,
-0x264809d1, 0xe486bd08, 0x40af910a, 0x30bd0c2f, 0x0bd002f4, 0xb50c2e00,
-0x5002b400, 0x002e522a, 0x0274069d, 0x63400910, 0x00000620, 0x00000000,
-0x04a78805, 0x0a7c029f, 0x245009f2, 0x7c419f28, 0xc2099026, 0x039b00e7,
-0x19d04676, 0x9f00e784, 0x706e7c0e, 0x26e6c099, 0x027c009f, 0x174219b0,
-0x00000e20, 0x00000000, 0x01658014, 0x927c0097, 0x25cc0cf0, 0x3c019f01,
-0xc0197206, 0x089e3227, 0x89f01248, 0x9f2227c8, 0xb0067800, 0x2065c019,
-0x026c009f, 0x53c159f0, 0x00000600, 0x00000000, 0x01850814, 0x0c7c1013,
-0x0fc20134, 0xcc023f20, 0xc423f108, 0x4037000d, 0x033000ec, 0x37000dc0,
-0x3008cc00, 0x008cc023, 0x000c0013, 0x52c00131, 0x00000420, 0x00000000,
-0x00dca014, 0x91f40371, 0x17e01510, 0x44805d00, 0x4005d001, 0x00510014,
-0x0510095c, 0x5d101550, 0x10015400, 0x08154405, 0x01440055, 0x50501714,
-0x00000200, 0x00000000, 0x80f2a014, 0x073403c1, 0x33440c90, 0x0620cd00,
-0x480c9803, 0x24c90030, 0x0c101b04, 0xcd003062, 0x10030400, 0x0030600c,
-0x030400c0, 0x50401c10, 0x00000a00, 0x00000000, 0x80d88005, 0x06b41061,
-0x09410e10, 0x86012d00, 0x4012d000, 0x01210048, 0x121284a4, 0x2d100860,
-0x10009401, 0x01480002, 0x23040de1, 0x14411e10, 0x00000200, 0x00000000,
-0x40681015, 0x85bc81e3, 0x4b401e30, 0x8d01cf00, 0xd01cb187, 0x01c74061,
-0x1e34070d, 0x470078c0, 0x34070d01, 0x40d0d01c, 0x878d0dc3, 0x54c01c32,
-0x00000040, 0x00000000, 0x1005b810, 0x007c00df, 0x37c501e1, 0x7c201f00,
-0xc401d800, 0x001f1017, 0x01f0005c, 0x9f0007c0, 0xb0006c00, 0x0067c001,
-0x0b7c04df, 0x41c007f0, 0x00000660, 0x00000000, 0x007fa000, 0xa7cc29ff,
-0x7fc49ff8, 0xfc81f362, 0xc21ff087, 0x697f827e, 0x1ff005dc, 0xf3007ec0,
-0xf007fc01, 0x013fc01f, 0x0fcc01f3, 0x00c01330, 0x00000e00, 0x00000000,
-0x00398815, 0x32ac006d, 0x0f428e70, 0xb4002b00, 0x4803d080, 0x0cad1308,
-0x02d02286, 0x21048f40, 0xf000b400, 0x040fc102, 0x039400f1, 0x54400610,
-0x00000620, 0x00000000, 0x00190000, 0x01a4800d, 0x0b400ed0, 0xb400e108,
-0x400ed063, 0x606d2429, 0x0ed00184, 0x61003b41, 0xd003b418, 0x005b400e,
-0x238400e1, 0x00400a10, 0x00000400, 0x00000000, 0x00932804, 0xb804040d,
-0xb7420050, 0x300b094a, 0x52a0d00c, 0x088d01d0, 0x30d08a04, 0x8140c244,
-0x506c3401, 0x00e54030, 0x031426c1, 0x10400411, 0x00000c20, 0x00000000,
-0x0035a815, 0x0f65049e, 0x77c205f0, 0x70401320, 0xc231d004, 0x0b9f2096,
-0x21f00244, 0x93008780, 0xd2047c83, 0x40ef40a1, 0x03cc06f3, 0x54d00d34,
-0x00000620, 0x00000000, 0x0c170001, 0x033c001f, 0x07c20570, 0x7c42d708,
-0xc00df04b, 0x405f00a7, 0x6df0e169, 0x5f0137c0, 0xf0037010, 0x0417c02d,
-0x033c00df, 0x07c00bf3, 0x00000c00, 0x00000000, 0x006b0880, 0x13dc05f3,
-0x0fc00731, 0xec303304, 0xc323f208, 0x02bf000f, 0x23f006fc, 0x3f004fc0,
-0xf088fc02, 0x004fc023, 0x035c00f3, 0x03c00f70, 0x00000c22, 0x00000000,
-0x10062081, 0x134401d1, 0x3744b151, 0x7400d740, 0x401dd007, 0x01590037,
-0x3dd02574, 0xdd02f6e0, 0x920f7401, 0x027f421d, 0x037c00d5, 0x07420150,
-0x00000802, 0x00000000, 0x02248001, 0x00548081, 0x37482190, 0x74181900,
-0x4001d040, 0x001d0417, 0x21d00064, 0x9d000740, 0xd0887400, 0x28274101,
-0x034400c9, 0x07421150, 0x00000200, 0x00000000, 0x40202010, 0x00040001,
-0x03440011, 0x2600c100, 0x440c9103, 0x00c92823, 0x0cd20334, 0x4d183144,
-0x90033400, 0x0013400c, 0x032000cd, 0x43400010, 0x00000080, 0x00000000,
-0x0006b000, 0x005c2013, 0x07c00134, 0x74001b40, 0xc001f000, 0x000f0287,
-0x01f1007c, 0x1f000740, 0xf0007800, 0x0007c001, 0x03dc00fb, 0x03c00870,
-0x00000ac0, 0x00000000, 0x000fb805, 0x00fc403f, 0x3fc003f0, 0xfc00ff00,
-0xc00ff203, 0x00fb007f, 0x0ff003fc, 0xff003ec0, 0xf203fc00, 0x003fc00f,
-0x03fc00f7, 0x17c003f0, 0x00000e60, 0x00000000, 0x203fa003, 0x03fc00f1,
-0x3ec80fb2, 0xdc00dd00, 0x880ff203, 0x80dd0035, 0x0ff203f8, 0xff203f40,
-0x9001fc80, 0x001cc04b, 0x00cc003f, 0x0cc007b4, 0x00000e00, 0x00000000,
-0x00050801, 0x00740017, 0x07400170, 0x76801d00, 0x00019000, 0x001c0007,
-0x01d10074, 0x0d200740, 0x10017454, 0x801442e9, 0x137d00dd, 0x04510510,
-0x00000c20, 0x00000000, 0x00332011, 0x0714008d, 0x73481c50, 0x2601cd20,
-0x481c9007, 0x41cd1071, 0x1cd00134, 0xcd207148, 0x50003601, 0x00115908,
-0x4014800d, 0x445684d0, 0x00000e80, 0x00000000, 0x0805a807, 0x8074005d,
-0x07420152, 0x70001d00, 0x4001d000, 0x201d0807, 0x01d00674, 0x1d200740,
-0x10817400, 0x00154019, 0x835440dd, 0x0c4005d0, 0x00000620, 0x00000000,
-0x00a7a802, 0x027c005b, 0x26c009f0, 0x7e009f00, 0xc009d002, 0x009f0025,
-0x09f0037c, 0x9f0025c2, 0x308d7c20, 0x183dc119, 0x00d4003d, 0x08c425f0,
-0x00000e20, 0x00000000, 0x201d8003, 0x01fc80b3, 0x1fc007f0, 0xfc007f04,
-0xc807b001, 0x007f841f, 0x07f000fc, 0x7f001fc0, 0xf4156000, 0x003ec008,
-0x03bc00ef, 0x1fc00630, 0x00000600, 0x00000000, 0x80250802, 0x425c101f,
-0x27c28970, 0x7c049f00, 0xc009b002, 0x009f0025, 0x09f0017c, 0x9b8427c0,
-0xf0014d00, 0x0134c04d, 0x005c001f, 0x08c10374, 0x00000420, 0x00000000,
-0x00948013, 0x197412dd, 0x1640a570, 0x74045d01, 0x4005f105, 0x015d1097,
-0xa5d02e74, 0x5d04d740, 0xb003442a, 0x00f4553d, 0x836c40dd, 0x4c413530,
-0x00000200, 0x00000000, 0x0412a007, 0x093403c9, 0x13402450, 0x34004d80,
-0x4044d035, 0x0d4d0013, 0x24988224, 0x4d009340, 0x10016400, 0x1291480c,
-0x0014200d, 0x1c500450, 0x00000a00, 0x00000000, 0x02688004, 0x06b4012d,
-0x6a401a50, 0xb401ad00, 0x411ad006, 0x01ad006b, 0x9ad065b4, 0xad106b01,
-0x9005a401, 0x025a601e, 0x072409cd, 0x10409411, 0x00000200, 0x00000000,
-0x04101012, 0x011c008d, 0x13c00470, 0x3c014f10, 0xc004b011, 0x094d0751,
-0x04b0143c, 0x49001340, 0x30192c20, 0x0210c484, 0x001c080f, 0x48c02470,
-0x00000040, 0x00000000, 0x282cb802, 0x02fc007f, 0x2e400bf8, 0x7c08bf00,
-0xc00b7002, 0x089f0027, 0x0be103fc, 0xbf1027c2, 0xf001dc09, 0x8a1dc08d,
-0x037c08df, 0x0bc00770, 0x00000660, 0x00000000, 0x4007a815, 0x007c8053,
-0x44d00124, 0x4d001340, 0x9001f200, 0x801f0004, 0x0124066c, 0x1f0004d0,
-0xb0017c00, 0x0037c001, 0x044d0011, 0x54c00570, 0x00000e00, 0x00000000,
-0x003d9812, 0x03de00a3, 0x3c400f38, 0x8400fb00, 0xc00fd003, 0x80ed0038,
-0x0f1001f6, 0xed203840, 0x1003b400, 0x503b4802, 0x038400c1, 0x484806d0,
-0x00000620, 0x00000000, 0x00490003, 0x04b4412d, 0x4b4012d0, 0xb4012900,
-0x44121004, 0x012d0049, 0x129004b4, 0x25804848, 0x9805f481, 0x807b401e,
-0x00840121, 0x0d401850, 0x00000400, 0x00000000, 0x0a730012, 0x031402c1,
-0x30600c50, 0x1400c100, 0x400cd003, 0x00cd0031, 0x0c900334, 0xcd203040,
-0x10233400, 0x89b3400c, 0x034400c1, 0x495014d0, 0x00000c20, 0x00000000,
-0x0055a017, 0x01760253, 0x14c00570, 0x5c205900, 0xc0057001, 0x205f2815,
-0x05b00164, 0x7f0014c0, 0xb009bc20, 0x0097ec17, 0x014c0053, 0x5dc07770,
-0x00000620, 0x00000000, 0x008b0012, 0x00dc1037, 0x8fc02332, 0xe0003f00,
-0xc002f008, 0x022e200c, 0x037200fc, 0x3f900fc8, 0xf0047c00, 0x0003e081,
-0x00fc003f, 0x4ac101f2, 0x00000c00, 0x00000000, 0x00270010, 0x022c0083,
-0x64c00830, 0x0c018f00, 0xc0197082, 0x009f0026, 0x08f02648, 0x9b0024c0,
-0x70827c85, 0x2025c928, 0x024c0493, 0x40c018f0, 0x00000c20, 0x00000000,
-0x50a60005, 0x025d0091, 0x66d52914, 0x45009d02, 0x5009144a, 0x029d0024,
-0x29d00245, 0x9c10a450, 0x10827401, 0x01678109, 0x02540081, 0x04101914,
-0x00000800, 0x00000000, 0x0034a01c, 0x02c400b1, 0x2d400b10, 0xc408bd00,
-0x408b9002, 0x10bd002c, 0x0bda02c4, 0xbd00ac42, 0x50027420, 0x02264409,
-0x02c410b0, 0x60408910, 0x00000200, 0x00000000, 0x00b80010, 0x0aa402a1,
-0xab402a18, 0x8482ad28, 0x422a500a, 0x02ad20a8, 0x2ad80a94, 0xad90a840,
-0x125a7408, 0x112341c8, 0x329404a1, 0x40509810, 0x00000080, 0x00000000,
-0x00063019, 0x004c2013, 0x15c00130, 0x4c001f00, 0xc0017000, 0x401f0006,
-0x05f00042, 0x3b0004c0, 0x70107c02, 0x4045c061, 0x0ccc0113, 0x74d16170,
-0x00000ac0, 0x00000000, 0x00a7b819, 0x0a5c029f, 0xa4c029f0, 0x7c029f00,
-0xc029300a, 0x029f00a7, 0x29f08a6c, 0x9f00a7c0, 0xf202bc06, 0x2221c04f,
-0x327c089f, 0x67c04b70, 0x00000e60, 0x00000000, 0x04a7a818, 0x034c049b,
-0xb5c14df0, 0x5404d324, 0x408df213, 0x20d32434, 0x0d30426c, 0xf32437c0,
-0x301a4412, 0x016cc00b, 0x260c01b9, 0x63c06b30, 0x00000e00, 0x00000000,
-0x41871818, 0x384c0615, 0x076061d0, 0x74021140, 0x50a11008, 0x0a114084,
-0xa1b41845, 0x15008f44, 0x50284526, 0x02844861, 0x086c4211, 0x71ca6010,
-0x00000c20, 0x00000000, 0x802ba010, 0x428512a5, 0x29490ad0, 0x8412a110,
-0x644a144a, 0x54a12d28, 0x4a924294, 0x8d052b61, 0x10120404, 0x08214928,
-0x1a040289, 0x4340c858, 0x00000e80, 0x00000000, 0x0025a018, 0x02c600fd,
-0x2f600bd2, 0xf680f100, 0x600f1a02, 0x00b1802c, 0x0b1003d4, 0xdd002f48,
-0x54024400, 0x00254019, 0x02640091, 0x61402950, 0x00000620, 0x00000000,
-0x00278005, 0x024e0893, 0x25c009f0, 0x5c409100, 0x40095002, 0x00931024,
-0x09901a4c, 0x9f1027c0, 0x34424c00, 0x00255038, 0x024c009b, 0x17c8197c,
-0x00000e20, 0x00000000, 0x00218010, 0x027c8093, 0x23e209f0, 0x7c409f00,
-0xe4087002, 0x008f0823, 0x09f0020c, 0x836027ca, 0xf4227c00, 0x0026c009,
-0x027c009f, 0x53c059bc, 0x00000600, 0x00000000, 0x100d0014, 0x00dc0837,
-0x0fcc03f0, 0xfe003f08, 0x8003e000, 0x8037080f, 0x03f200cc, 0x132a0fc8,
-0x30007c00, 0x0241c021, 0x001c101f, 0x50c18130, 0x00000420, 0x00000000,
-0x0014a014, 0x017c005d, 0x15c115d1, 0x74005d00, 0x4005d101, 0x80511017,
-0x05d00144, 0x71405dc0, 0xb0817420, 0x009c4027, 0x01d4836d, 0x50503715,
-0x00000200, 0x00000000, 0x80328014, 0x4b3401dd, 0x32400cd0, 0x7480cd88,
-0x400c9103, 0x00c9d4b1, 0x0cd80311, 0xc5003720, 0x90037400, 0x087060fc,
-0x031508cd, 0x50401cd0, 0x00000a00, 0x00000000, 0x08088005, 0x08b4002d,
-0x0b400290, 0xb4002d00, 0x40029200, 0x8029200a, 0x02d00094, 0xec200100,
-0x9033b400, 0x0838104c, 0x139400cd, 0x14481e98, 0x00000200, 0x00000000,
-0x00581015, 0x879c81ef, 0x4bc416f0, 0xb401af00, 0xc01af085, 0x0179007f,
-0x16f3068c, 0xe7005bc0, 0xb017fc21, 0x0079c43a, 0x0f9c012f, 0x44c612b0,
-0x00000040, 0x00000000, 0x9024b810, 0x005c401f, 0x35c009f0, 0x7c005f20,
-0xc005f102, 0x80930807, 0x09f20164, 0xd3002780, 0x74837c00, 0x0035c01d,
-0x036c001f, 0x43c00373, 0x00000660, 0x00000000, 0x013fa000, 0x24ce49bf,
-0x7cc01b30, 0xfc89f300, 0x409f2027, 0x01fb225f, 0x1d3027f8, 0xff206dc0,
-0x3007c801, 0x0a7cca9f, 0x0fcc817f, 0x00c09f20, 0x00000e00, 0x00000000,
-0x02098815, 0x238c0867, 0x08040670, 0x84082100, 0xc28270b4, 0x102b146b,
-0x5230a00c, 0xe1061840, 0xb043ec00, 0x021ac0ce, 0x2384906d, 0x5440ce10,
-0x00000600, 0x00000000, 0x02190000, 0x0004808d, 0x03400051, 0x04488100,
-0x400adb21, 0x08611113, 0x44922234, 0xc1004260, 0x91838408, 0x8038460a,
-0x038400cd, 0x01402210, 0x00000420, 0x00000000, 0x00a30804, 0x0b050a4d,
-0xb2502c54, 0x05624148, 0x0024142a, 0x238140e1, 0x28140904, 0xd550b350,
-0x10034511, 0x0032512d, 0x070405cd, 0x00420114, 0x00000c20, 0x00000000,
-0x03e58815, 0x3f4e0a5f, 0xf6c0fd00, 0x4c0f5303, 0x44f5902a, 0x819122e7,
-0xf9823d7c, 0xdf02f7c0, 0x8c03c404, 0x0034c00f, 0x1bc403dd, 0x45400d34,
-0x00000620, 0x00000000, 0x10170001, 0x005c0297, 0x05c00130, 0x7c029f08,
-0xc029e081, 0x105f0017, 0x05700a70, 0x530004c0, 0xf0037c00, 0x00b5c00d,
-0x137c82df, 0x07c817f0, 0x00000c00, 0x00000000, 0x008f0880, 0x03cc4073,
-0x0fc00730, 0xce003300, 0xc003f200, 0x833b00ec, 0x033000cc, 0xb3801cca,
-0x2443cc02, 0x007d0219, 0x03fc00bf, 0x00c00d30, 0x00000c22, 0x00000000,
-0x00362081, 0x007c0291, 0x35400970, 0x4602d100, 0x422d3003, 0x01d10055,
-0x0d100b44, 0x119025c2, 0x10035c00, 0x00a440cd, 0x0334129d, 0x15400110,
-0x00000802, 0x00000000, 0x0020a001, 0x80040009, 0x30400810, 0x04004100,
-0x40041222, 0x00858000, 0x88100134, 0xd5082240, 0x50034420, 0x06354009,
-0x037400d9, 0x04401d10, 0x00000200, 0x00000000, 0x00102010, 0x032480c9,
-0x00400490, 0x04408100, 0x44085081, 0x00450330, 0x44110215, 0x40201008,
-0x58030480, 0x00316804, 0x033000c9, 0x51401c10, 0x00000080, 0x00000000,
-0x4006b000, 0x004d0019, 0x05d00134, 0x450a1340, 0x50017404, 0x02174044,
-0x1134004c, 0x924004d0, 0x70034d00, 0x0035c00d, 0x03be40db, 0x00c00130,
-0x00000a80, 0x00000000, 0x203fb805, 0x03dc00f7, 0x3fc00f70, 0x7c81ff00,
-0xc20f3023, 0x95fb2277, 0x8ff957ec, 0x37003dc8, 0xb803dc80, 0x003ec00f,
-0x03fc00ff, 0x17c003f0, 0x00000e20, 0x00000000, 0x823fa003, 0x20ec002f,
-0x3bc08fd2, 0xf000ff00, 0xc20ff203, 0x80f9003f, 0x0fc0038c, 0xf7003fc0,
-0xf023fc00, 0x003fc00f, 0x13cc00e3, 0x0cc54b90, 0x00000e00, 0x00000000,
-0x90b30801, 0x10440017, 0x074041d0, 0x74001308, 0x4001d000, 0x80113007,
-0x01d10074, 0x17200740, 0xd0107440, 0x40374001, 0x2bd444f1, 0x054069b0,
-0x00000c20, 0x00000000, 0x0233a011, 0x1026214d, 0x314040d0, 0x3600cd00,
-0x400cd003, 0x00c91031, 0x0cd00316, 0x4d803340, 0xd0033600, 0x0032400c,
-0x030410c1, 0x44410890, 0x00000e80, 0x00000000, 0x0035a803, 0x0044011d,
-0x07400dd0, 0x64001500, 0x4001d000, 0x00110007, 0x01d90874, 0x9d800640,
-0xd0006600, 0x00374001, 0x035400d1, 0x0d400990, 0x00000620, 0x00000000,
-0x0837a802, 0x446c808d, 0x27c00df0, 0x7c001f01, 0xc009f001, 0xa09b0021,
-0x49f00a5c, 0x9f0007c0, 0xd0127c00, 0x0037c049, 0x034c40d3, 0x08c089a1,
-0x00000e20, 0x00000000, 0x043d8007, 0x25fc00b5, 0x1fc003e0, 0xfc00f300,
-0xc207f00a, 0x407f141f, 0x07f001fc, 0x76003fc0, 0xf001f800, 0x003fc007,
-0x03fc20ff, 0x1ec00bf1, 0x00000600, 0x00000000, 0x00350802, 0x0a4c805b,
-0x27c011f0, 0x7c101700, 0xc009f001, 0x00971026, 0x0930425c, 0x1b0307c0,
-0xf0025c00, 0x0837c609, 0x034c40df, 0x0bc019f1, 0x00000420, 0x00000000,
-0x003ca013, 0x07441011, 0x17400dd0, 0x7012d100, 0x4205d006, 0x035d1897,
-0x05b01974, 0xd810f740, 0xd0017400, 0x007f4405, 0x03c420fd, 0x4f400992,
-0x00000200, 0x00000000, 0x0032a007, 0x03050101, 0x13400c90, 0x3403c504,
-0x4004d006, 0x0c450213, 0x04900934, 0xc800f360, 0xd0011400, 0x84344004,
-0x034481dd, 0x1f400958, 0x00000a00, 0x00000000, 0x24788004, 0x56840131,
-0x6b4012d1, 0xb4012188, 0x401ad045, 0x01ad016b, 0x9a9006b4, 0x29104b44,
-0xd006b421, 0x047b401a, 0x030401ed, 0x13403a18, 0x00000200, 0x00000000,
-0x00301012, 0x030cc003, 0x13c080b8, 0x3c00c500, 0xc044f002, 0x84470013,
-0x04b1213e, 0x4b1033e8, 0xf0011c00, 0x1033a804, 0x230c10cf, 0x4bc008f1,
-0x00000040, 0x00000000, 0x043db802, 0x92d00877, 0x2fc20ff0, 0xfc003f00,
-0xe80bf201, 0x00bf012f, 0x0974027c, 0xbf000fc2, 0xf002fc00, 0x203ec01b,
-0x13fc80ff, 0x0bc00bf0, 0x00000660, 0x00000000, 0x3077a015, 0x054e001b,
-0x05c00db0, 0x7c011f00, 0xc0017000, 0x00130047, 0x00f0005c, 0x931004c4,
-0x31007c00, 0x3274c001, 0x1b7e44d3, 0x54c01bf0, 0x00000e00, 0x00000000,
-0x21798812, 0x01840020, 0x39c00210, 0xb420ed00, 0xc00eb003, 0x00eb0033,
-0x0ed0038c, 0x6b003940, 0xb0033600, 0x103ec00c, 0x33b4aaeb, 0x4ac00af0,
-0x00000620, 0x00000000, 0x08710003, 0x878601b8, 0xc9401210, 0x34002500,
-0x40321004, 0xc12510cb, 0x32d904b4, 0x2580c840, 0x100cb403, 0x017a4032,
-0x279485ed, 0x0c401cd1, 0x00000400, 0x00000000, 0x00332812, 0x0b0404c1,
-0x31000c10, 0x3401cd00, 0x400cd01b, 0x01cd0033, 0x0cd00704, 0xd981b140,
-0x90037400, 0x0032420c, 0x033600cd, 0x4a5008d0, 0x00000c20, 0x00000000,
-0x0015a817, 0x15cd007b, 0x55c005b4, 0x34035f10, 0xc0153009, 0x05570057,
-0x14f0415c, 0x5700d0c0, 0x30057c01, 0x0014c017, 0x017c005f, 0x5cc005f0,
-0x00000620, 0x00000000, 0x00870012, 0x187c021f, 0x8fc003f0, 0xf8183f00,
-0xc0039208, 0x0039000d, 0x03f000dc, 0x3e200fc0, 0xf000fc00, 0x0087c003,
-0x007c021a, 0x49c00170, 0x00000c00, 0x00000000, 0x00270810, 0x166c039f,
-0x67c059f0, 0x4c009f80, 0xc809b006, 0x208f0067, 0x99f0064c, 0x9f0064c0,
-0x30027c00, 0x00e4c009, 0x027c009f, 0x43c00934, 0x00000c20, 0x00000000,
-0x01262001, 0x0e443299, 0xe74a09d0, 0x44809d06, 0x40a9300e, 0x419d2027,
-0x19700e54, 0x95102548, 0x51025400, 0x20654009, 0x0274009d, 0x07400951,
-0x00000800, 0x00000000, 0x1024a018, 0x0a64008d, 0x2e4009d0, 0xc400a900,
-0x430f9022, 0x04fd023f, 0x0bd052c4, 0xb1292c40, 0x1012c400, 0x0024400a,
-0x0234009d, 0x63400990, 0x00000200, 0x00000000, 0x07202210, 0x2204088d,
-0x2a408ad0, 0x8428ad00, 0x620a1083, 0x00ad082b, 0x0a500294, 0xa5002940,
-0x50029402, 0x0021402a, 0x1234088d, 0x434088d0, 0x00000080, 0x00000000,
-0x1186b01d, 0x582c021d, 0x07c021f1, 0x4c021d00, 0xc001b000, 0x001f0007,
-0x01f2004c, 0x1f0004c0, 0x30005c00, 0x0514c803, 0x2c7c025f, 0x77c161b0,
-0x00000ac0, 0x00000000, 0x2127b819, 0x12fc04ab, 0xa7c069f0, 0x7c069f00,
-0xc029f00a, 0x028d00a7, 0x29700a74, 0x9f00a3c0, 0xf05a7c02, 0x0527c029,
-0x267e269f, 0x67c04b70, 0x00000e60, 0x00000000, 0x01ada018, 0x326c02a3,
-0x2cc44bf0, 0xc410b300, 0xc14b3002, 0x34bf052c, 0x0b3002cc, 0x93002bc0,
-0x3062fcc2, 0x04afe049, 0x224c02bf, 0x63c14f30, 0x00000e00, 0x00000000,
-0x0007081c, 0x30440411, 0x06c301d0, 0x6c061b00, 0xc021b028, 0x021d1086,
-0x01b2806c, 0x1b0a8740, 0xb0907c24, 0x0085c0e1, 0x1844041d, 0x73406114,
-0x00000c20, 0x00000000, 0x02332010, 0x12040481, 0xa34868d0, 0x04508020,
-0x40081002, 0x808d0020, 0x28590a04, 0x8d202340, 0x18122646, 0x00234108,
-0x0a240685, 0x43410810, 0x00000e80, 0x00000000, 0x8025a818, 0x02440091,
-0x264009d2, 0x64809920, 0x48098003, 0x009d0826, 0x09900264, 0x9d002740,
-0x90825402, 0x00254009, 0x022620dd, 0x63420910, 0x00000620, 0x00000000,
-0x40278805, 0x124c1193, 0x2744e9e0, 0x4c009300, 0xc4092202, 0xa09f1024,
-0x09700244, 0x970027c0, 0x30026420, 0x20274009, 0x026d009f, 0x17c01930,
-0x00000e20, 0x00000000, 0x04218014, 0x035c089f, 0x274009f0, 0x7c009f10,
-0xc009d002, 0x409d0027, 0x09e0027c, 0x9b0027c0, 0xf0023c20, 0x0027c009,
-0x025c008f, 0x53c039f0, 0x00000600, 0x00000000, 0x00040814, 0x284c001f,
-0x01c80030, 0x3c000281, 0xc000f080, 0x100f2044, 0x01f02030, 0x170041c0,
-0x30007c00, 0x0007c001, 0x004c041f, 0x53c01130, 0x00000420, 0x00000000,
-0x089ca014, 0x2d55007d, 0xdce41511, 0xf4107594, 0x42a7d009, 0x607d909d,
-0x157001f4, 0x51109d45, 0xb0015480, 0x0a1dc205, 0x01540079, 0x53400750,
-0x00000200, 0x00000000, 0x80b2a014, 0x0304125d, 0xf3441c58, 0x3440c110,
-0x603cd04b, 0x02cd0000, 0x1cd09334, 0xc8002040, 0x90030400, 0x00f3420c,
-0x032408cd, 0x53400c90, 0x00000a00, 0x00000000, 0x00388005, 0x0714033d,
-0x32402ed0, 0xb6002500, 0x610cd003, 0x00ed0019, 0x1e5003a0, 0xe9003940,
-0x90039401, 0x00ab400e, 0x33b400e9, 0x17402ed0, 0x00000200, 0x00000000,
-0x00781015, 0x058d08af, 0x7bc01f74, 0xbc01e100, 0xc016f007, 0x01ed0058,
-0x1cf007b4, 0xcf0039c0, 0xb006dc15, 0x006bc83e, 0x172c03ef, 0x57c01eb0,
-0x00000040, 0x00000000, 0x0015b810, 0x097c009f, 0x35c00d30, 0x7c001f10,
-0x4205f102, 0x009f1017, 0x0df0017c, 0xd70037c0, 0xf0025c06, 0x2024c14d,
-0x0b5c40cf, 0x43c00f70, 0x00000660, 0x00000000, 0x024fa000, 0x8fc901a3,
-0x7bc01fb0, 0xcc09bb80, 0xc69a7007, 0x09e30068, 0x1f3007bc, 0xff006fc0,
-0x3027d411, 0x027c429f, 0x2ffc05f3, 0x03c01730, 0x00000e00, 0x00000000,
-0x023d8815, 0x128412a1, 0x1b408a10, 0xac08318a, 0xc0cab023, 0x086b2a1a,
-0x0eb023ac, 0xef209b42, 0x1033ec00, 0x008ac80f, 0x33dc00ab, 0x5749aa10,
-0x00000620, 0x00000000, 0x88090000, 0x010408b1, 0x0b400e18, 0x8400a900,
-0x600ed001, 0x08e10038, 0x8e100296, 0xed023b40, 0x53028408, 0x083a440e,
-0x03b404e1, 0x03400618, 0x00000400, 0x00000000, 0x00132804, 0x00042081,
-0x43401810, 0x24010100, 0x401c1000, 0x01090052, 0x1c900c14, 0xc5005340,
-0x58062401, 0x002641ac, 0x03140089, 0x13080810, 0x00000c20, 0x00000000,
-0x4035a815, 0x134c0183, 0xb7483d30, 0x44435b04, 0xc031d048, 0x031300c4,
-0x3d300754, 0xfd00f7c0, 0x740e4c03, 0x0006c03f, 0x03fc00f3, 0x57801914,
-0x00000620, 0x00000000, 0x00270001, 0x0b7c029f, 0x37c0cd70, 0x7c0c1f09,
-0xc0e1f011, 0x0cdf0307, 0xcdf02a64, 0xdf03b700, 0xa0327c0c, 0x0027c00d,
-0x035c02cf, 0x07c807f0, 0x00000c00, 0x00000000, 0x013f0880, 0x04cc00bf,
-0x7cc00af1, 0xcc006f01, 0xc0037002, 0x00330108, 0x1e3147bc, 0xe310f8c0,
-0xf006cc80, 0x0024c00e, 0x038c00f1, 0x00c08b30, 0x00000c22, 0x00000000,
-0x00462081, 0x0c54009d, 0x354089d0, 0x5c001d00, 0x4130d006, 0x10950005,
-0x8d500064, 0xd500b540, 0xd02654a0, 0x08ed500d, 0x035402d5, 0x044025b0,
-0x00000802, 0x00000000, 0x1004a001, 0x51440895, 0x26400dd8, 0x44101d00,
-0x4041d990, 0x041100a4, 0x0d102974, 0xd5003440, 0xd0024400, 0x0054480d,
-0x034400d5, 0x04400010, 0x00000200, 0x00000000, 0x00202210, 0x8014009d,
-0x01400890, 0x34000908, 0x4000d801, 0x00450021, 0x0c508026, 0xc5003140,
-0x90021440, 0x4000400c, 0x03040081, 0x40500090, 0x00000080, 0x00000000,
-0x0006b000, 0x004c00b7, 0x06c009f0, 0x4c001f00, 0xc401fb80, 0x00130024,
-0x0930007c, 0xe50034c0, 0xf1024c00, 0x2034c00f, 0x03cd0057, 0x00c60130,
-0x00000ac0, 0x00000000, 0x080f9805, 0x00fc00bf, 0x0fc00bf0, 0x9c003f00,
-0xc003d000, 0x003f002f, 0x0bf003fc, 0xf7003fc0, 0xf002fc00, 0x002fc00f,
-0x03fc003f, 0x17c003f0, 0x00000e60, 0x00000000, 0x003fa003, 0x03cc00f3,
-0x37c00ff0, 0xfc00f700, 0xc02df003, 0x00fb20bf, 0x2df023ec, 0xff003fc0,
-0xe003b842, 0x023fc94f, 0x00ec10f3, 0x0cd08ff0, 0x00000e00, 0x00000000,
-0x04050801, 0x4044101b, 0x07400150, 0x74001120, 0x4000d000, 0x14150004,
-0x01d00044, 0x1d810744, 0x91004444, 0x213f4021, 0x0a4422d3, 0x0c4029d0,
-0x00000c20, 0x00000000, 0x01012011, 0x133404c1, 0x21400052, 0x1400c500,
-0x40485001, 0x00c10131, 0x4c120114, 0xcd051144, 0x50031404, 0x0131400c,
-0x0b2481c9, 0x4c40ccd1, 0x00000e80, 0x00000000, 0x0837a803, 0x00250009,
-0x17420d10, 0x74001100, 0x4005d002, 0x00058004, 0x01d08245, 0x1d002740,
-0xd0004060, 0x10374001, 0x036400d1, 0x0c4009d0, 0x00000620, 0x00000000,
-0x1836a882, 0x017c0051, 0x37c00df0, 0x78001401, 0xc005f003, 0x201b0123,
-0x01f0027c, 0x9d0827c0, 0xf0927c04, 0x4037e429, 0x016c01db, 0x08c808d2,
-0x00000e22, 0x00000000, 0x00018007, 0x0ecc83bf, 0x0fc001f0, 0x7c00ff00,
-0xc40af010, 0x00df081f, 0x0ff001ec, 0x6f101fc0, 0xb281fc00, 0x003fc805,
-0x03dc04ef, 0x1fc80db0, 0x00000600, 0x00000000, 0x00050802, 0x017c0053,
-0x24c041f0, 0x7c081700, 0xc0c1b001, 0x00130025, 0x0130004c, 0x9d4007c0,
-0x70027c00, 0x8033c029, 0x034c31db, 0x29c119d0, 0x00000420, 0x00000000,
-0x0234a013, 0x82640095, 0x15413d50, 0x7400d900, 0xc00d5006, 0x00db0416,
-0x0db40b54, 0x5702f660, 0x1001443a, 0x007c4077, 0x136c03db, 0x4d422dd1,
-0x00000200, 0x00000000, 0x0032a007, 0x42340089, 0x14603c10, 0x2400c904,
-0x402c1006, 0x00c90050, 0x0c501324, 0x41803340, 0x10010500, 0x06314044,
-0x94040005, 0x5f420cd0, 0x00000a00, 0x00000000, 0x02488004, 0x05240165,
-0x29401258, 0xb4012d11, 0x40125045, 0x4529022b, 0xd202a494, 0xa9254a40,
-0x10069401, 0x0278401a, 0x06a449ad, 0x37401ad1, 0x00000200, 0x00000000,
-0x00001012, 0x0234408b, 0x44c00052, 0x3c00c40b, 0xc0181000, 0x0dc30351,
-0x5c40014c, 0x578a5740, 0x70011c08, 0x02358224, 0x230c00d7, 0x4bc20cf0,
-0x00000040, 0x00000000, 0x083db802, 0x01fc0077, 0x3fc00f70, 0x7c001303,
-0xc4077003, 0x201f0122, 0x83f002dc, 0xb7002ec0, 0xf4024c00, 0x02bd401b,
-0x03fc00fb, 0x08c00bf0, 0x00000660, 0x00000000, 0x00752014, 0x005c0013,
-0x10c40c62, 0x74001100, 0xe005f006, 0x001d0007, 0x01908274, 0x1d002642,
-0x14004400, 0x2137c001, 0x016c4093, 0x54c009e0, 0x00000e00, 0x00000000,
-0x0009091a, 0x038400fb, 0x2ac002d0, 0xb420e100, 0x420a2081, 0x00ed003b,
-0x0e5001f4, 0xe9201840, 0x1003b400, 0x20bb601e, 0x038400bf, 0x4c500e91,
-0x00000624, 0x00000000, 0x00410000, 0x04b50121, 0x484002d0, 0xb4012900,
-0x40125084, 0x012d004b, 0x129004b4, 0x2d004840, 0x10048401, 0x817b4092,
-0x87a6a1e1, 0x064018d0, 0x00000400, 0x00000000, 0x08312812, 0x034480c9,
-0x30480cd0, 0x340dc180, 0x602c9883, 0x02dd8a73, 0xdc180334, 0xcd003050,
-0x10033480, 0xa033400c, 0x030680d5, 0x4a400cd1, 0x00000c20, 0x00000000,
-0x0015a837, 0x017c0052, 0x144005f0, 0x7c005b00, 0x40055001, 0x045d0017,
-0x05b01174, 0x5d0116c0, 0x00114804, 0x001b2045, 0x45ec0271, 0x5e4107d0,
-0x00000620, 0x00000000, 0x108f0012, 0x00fc022f, 0x0fc002f0, 0xfc003f48,
-0xc1037000, 0x903f208f, 0x037208fc, 0x3b000fc0, 0xf000fc00, 0x00074003,
-0x807c011f, 0x49c801b1, 0x00000400, 0x00000000, 0x02670830, 0x424c129f,
-0x61e089b0, 0x4c008911, 0xc029f002, 0x00970261, 0x08300e0c, 0x970024c0,
-0x30027c00, 0x4126c009, 0x025c0193, 0x41c008f0, 0x00000c20, 0x00000000,
-0x04262001, 0x0254119d, 0x25400910, 0x54009d00, 0x44399042, 0x099d0027,
-0x29d0166c, 0x95402540, 0x10020580, 0x01244808, 0x0244a999, 0x054029d0,
-0x00000080, 0x00000000, 0x0024a018, 0x02c400bd, 0x2c400b94, 0xc404b500,
-0x400bd002, 0x00b1042f, 0x0b1202f4, 0xad002845, 0x1002d400, 0x0024608b,
-0x0654009d, 0x614029d8, 0x00000200, 0x00000000, 0x02282010, 0x229408ad,
-0xa9480a10, 0x9600a500, 0x488ed002, 0x08a5022b, 0x0ad222a4, 0xa1802940,
-0x100a8400, 0x8020408a, 0x26040489, 0x414088d8, 0x00000080, 0x00000000,
-0x0086b01d, 0x084c021f, 0x054401b0, 0x4c801f10, 0xc021f100, 0x02172087,
-0xa030087e, 0x1e0284c0, 0x32003c0a, 0x8502d167, 0x585c0b15, 0x75c161f0,
-0x00000ac0, 0x00000000, 0x01a7b911, 0x1a7c269f, 0xa7c429f4, 0x3c029f00,
-0xc069b10a, 0x069f01a7, 0x39701a4f, 0x9f00e7c0, 0xf40a6c03, 0x05278849,
-0x12fc09b7, 0x66e04bf8, 0x00000e64, 0x00000000, 0x012fa018, 0x02cc00b7,
-0x2f400a20, 0xf810b300, 0x4309e042, 0x80bf042c, 0x2930d2e8, 0x9320a680,
-0x70527014, 0x012ec14b, 0x1afc0cb3, 0x60c06bf0, 0x00000e00, 0x00000000,
-0x0097081c, 0xa86c2a01, 0x05c001b0, 0x74001b01, 0xc041d001, 0x0a100186,
-0xf010895c, 0x3a02d740, 0xb0186c17, 0x46854031, 0x04740e11, 0x71484190,
-0x00000c20, 0x00000000, 0x00a3a012, 0x02040085, 0xa3402858, 0x34008104,
-0x4108d002, 0x00852420, 0x08500200, 0xa5012b44, 0x10422400, 0x10204148,
-0x2234008d, 0x484868d2, 0x00000e80, 0x00000000, 0x0021a818, 0x02640091,
-0x25610dd0, 0x76009900, 0x6089d002, 0x00810036, 0x09548214, 0xb9802f40,
-0xd0024600, 0x00256001, 0x44740094, 0x61400990, 0x00000620, 0x00000000,
-0x02e7a805, 0x824c6097, 0x67462971, 0x74009100, 0x4019d00a, 0x009f0024,
-0x09500a44, 0x9500a7c4, 0x48026400, 0x00240a01, 0x0c7c079f, 0x14c009f1,
-0x00000e20, 0x00000000, 0x00658016, 0x023c108f, 0x65c049b0, 0x7c209f06,
-0xc01df102, 0x009f1027, 0x09b0027c, 0x9f0023c0, 0xb0022c00, 0x0021a100,
-0x007c099b, 0x5bc809f2, 0x00000600, 0x00000000, 0x00050814, 0x2064001b,
-0x02ca2170, 0x6c001f00, 0xc000f008, 0x001f0c07, 0x01f0087c, 0x3f008dc0,
-0x31007c00, 0x0005c401, 0x08481013, 0x50d01130, 0x00000420, 0x00000000,
-0x001ca014, 0x25d40071, 0x9c4027d0, 0xc6005d00, 0x41b51019, 0x3b7d009f,
-0x05d005f4, 0x510014e0, 0x3001c400, 0x001f4003, 0x6cec0178, 0x50482710,
-0x00000200, 0x00000000, 0x00322014, 0x0b2402c9, 0x72411c50, 0x0601cd80,
-0x480c1143, 0x00c90007, 0x0c100704, 0xc5103344, 0x54031400, 0x0831403c,
-0x033480c4, 0x51400d90, 0x00000a00, 0x00000000, 0x201a0005, 0x01a400e1,
-0xb8411ed0, 0x8411ed01, 0x400e1006, 0x80ed010b, 0x1ed041a4, 0x21280840,
-0x50238601, 0x411f410e, 0x273411e5, 0x14000390, 0x00000200, 0x00000000,
-0x00421015, 0x07ac012b, 0xeac01e70, 0x8481ef01, 0xc8166207, 0x01ad804b,
-0x167004bc, 0xf7007f42, 0x7047dc01, 0x00f9c09e, 0x07bc01f7, 0x55c016b0,
-0x00000040, 0x00000000, 0x0025b810, 0x015c001f, 0x24c00df0, 0x1c008f08,
-0xc1255002, 0x209f8247, 0x05d0027c, 0x37100ec0, 0x321b5c00, 0x0853c0cd,
-0x436d40d9, 0x43c00870, 0x00000660, 0x00000000, 0x007fa000, 0x24dc017f,
-0x7f009f72, 0xfc09bf12, 0xc41ff025, 0x013b024f, 0x1d30064c, 0xff0a7fc0,
-0xf007d809, 0x0276409e, 0x275c0dd3, 0x02c01f30, 0x00000e00, 0x00000000,
-0x061d8815, 0x02848061, 0x1a40c610, 0xbc01e116, 0xc382f00d, 0x101d0d43,
-0x9eb06494, 0x2f030342, 0xd003841c, 0x015c408e, 0x07848dbf, 0x54408210,
-0x00000620, 0x00000000, 0x00090000, 0x009400a5, 0x39600e52, 0xb400a500,
-0x4006d003, 0x0869020b, 0x06110184, 0xcc003b48, 0xd003b600, 0x2138638e,
-0x0b0400e5, 0x02500610, 0x00000400, 0x00000000, 0x00a72804, 0x4e041381,
-0x92493410, 0x14938124, 0x4020504f, 0x024d0c81, 0x34104b14, 0x05068341,
-0xd00b2412, 0x0010002c, 0x03040094, 0x10401852, 0x00000c20, 0x00000000,
-0x1a67a815, 0x4a5c1297, 0xddc12570, 0x7412df00, 0x409dd14b, 0x095900ff,
-0x2d120f44, 0xdd20f7c5, 0xf01ff403, 0x483e5aad, 0x0b4402d1, 0x56c01034,
-0x00000620, 0x00000000, 0x30058001, 0x007c0097, 0xb6c025f4, 0x3c00cf08,
-0xc00de00a, 0x004f0023, 0x0ef1813c, 0x3f000bc2, 0xf0131c00, 0x0011c00d,
-0x0b6d0458, 0x07c0a1b2, 0x00000c00, 0x00000000, 0x025d0880, 0x02fc0273,
-0x4fc007f0, 0xc400fd02, 0x80037009, 0x403300bf, 0x07b080cc, 0xf3003c80,
-0x3003fc00, 0x011fc00f, 0x03dc20fb, 0x01d001f0, 0x00000c22, 0x00000000,
-0x00760081, 0x24748051, 0xa5c8b5d0, 0x54009d04, 0x40115084, 0x001500f7,
-0x07508254, 0x35000d40, 0x50037400, 0x0027440d, 0x1b440351, 0x054041f1,
-0x00000800, 0x00000000, 0x0024a001, 0x01740011, 0x07000dd0, 0x54409d00,
-0x448d1100, 0x02910017, 0x0d100264, 0xd1003540, 0x90037400, 0x00b7401d,
-0x13541155, 0x054019d0, 0x00000200, 0x00000000, 0x80002010, 0x03248001,
-0x01440490, 0x1404c900, 0x40004010, 0x00850002, 0x4c501014, 0x05900142,
-0xd0833600, 0x0113621c, 0x13040481, 0x414000d1, 0x00000080, 0x00000000,
-0x0016b000, 0x013c00c3, 0x87c00df0, 0x5c019f02, 0xc0a16014, 0x8ad323f7,
-0x1531052c, 0xd10235c0, 0xb003fc00, 0x8557e00d, 0x075c1517, 0x01c001f2,
-0x00000ac0, 0x00000000, 0x003fb825, 0x03fc00fd, 0x49c003f0, 0x7c089f01,
-0xc013e320, 0x45ff8277, 0x977023fc, 0x3f014fc1, 0x7183fe00, 0x802fc00f,
-0x0bfc00b7, 0x16c00b70, 0x00000e60, 0x00000000, 0x030fa003, 0x02ec00fb,
-0x0cc043b0, 0xfc202300, 0xc00fb013, 0x00ff303f, 0x0ff103cc, 0xff002fc0,
-0xf003ed80, 0x400ec80f, 0x238c0021, 0x0cc00731, 0x00000e00, 0x00000000,
-0x01970801, 0x80c500f5, 0x26502510, 0xc4009140, 0x40057003, 0x401d3037,
-0x0dd10344, 0xfd002f40, 0xd0034400, 0x0007400f, 0x03ec8a93, 0x04490512,
-0x00000c20, 0x00000000, 0x2083a011, 0x023540c1, 0x32408499, 0x2400d100,
-0x400cd18b, 0x001d0033, 0x0cd00334, 0xcd002140, 0xd0030400, 0x0023400c,
-0x131555d1, 0x56408410, 0x00000e80, 0x00000000, 0x0031a803, 0x446400d5,
-0x36402d10, 0x6400d000, 0x400d5003, 0x045d0037, 0x0dd00364, 0xdd002744,
-0xd0134400, 0x0427400d, 0x037500d1, 0x1e418500, 0x00000620, 0x00000000,
-0x4087a802, 0x077c40d3, 0x14c001b0, 0x7c011300, 0xc009b003, 0x331f0037,
-0x0df0076c, 0xdf0027c2, 0xf0064c00, 0x4087c00d, 0x035c80d3, 0x02d03d34,
-0x00000e20, 0x00000000, 0x20dd8007, 0x038c20f3, 0x3dc00f70, 0xdc98bf00,
-0xc007f003, 0x00bf04ff, 0x9ff08bcd, 0xef082fc8, 0xd186fc00, 0x008f420f,
-0x43e800f3, 0x0dc01de0, 0x00000602, 0x00000000, 0x00050802, 0x0f6c00d3,
-0x34c025f0, 0x5c08df28, 0xc06d3023, 0x32df2034, 0x0d30037c, 0xd30026c0,
-0x30026c00, 0x0230d00d, 0x23cc80df, 0x09d02f34, 0x00000420, 0x00000000,
-0x84f4a013, 0x056407f1, 0xb4408fd0, 0xc402c104, 0x402db003, 0x01cd00f4,
-0x0d102370, 0xff00ac40, 0x100e4450, 0x026c440f, 0x0b8400cb, 0x4c400d30,
-0x00000200, 0x00000000, 0x2162a007, 0x020450d1, 0x044011d0, 0x14014511,
-0x448c914b, 0x890d1032, 0xc890ab34, 0xc511a044, 0x916f0447, 0x40c0444c,
-0x8f04a68d, 0x1d4005d0, 0x00000a00, 0x00000000, 0x20208004, 0x848400e1,
-0x6c50d6d0, 0x8401f900, 0x505e1417, 0x09ed006a, 0x1a9407b4, 0xe4426810,
-0x94878501, 0x600a001e, 0x078409b9, 0x18601e50, 0x00000200, 0x00000000,
-0x02001012, 0x222c08d1, 0x30c14df0, 0x5c00c708, 0xc00d9003, 0x088f0432,
-0x8d90137c, 0xd40424c0, 0xb0034c00, 0x0004810d, 0x030c08cf, 0x49c000f8,
-0x00000040, 0x00000000, 0x012cb802, 0x00fc14ff, 0x3bc24ff0, 0xfc00f702,
-0xc44ff013, 0x28ff003d, 0x8f70037c, 0xfb082dc0, 0x79237408, 0x00adc00f,
-0x23fc28ff, 0x0bc087b0, 0x00000660, 0x00000000, 0x3037a015, 0x926c16df,
-0x14c159f0, 0x4d005f00, 0xd0193477, 0x01534034, 0x09500749, 0xd30927c0,
-0x38075c17, 0x000700cd, 0x33cc40cb, 0x44c01d30, 0x00000e00, 0x00000000,
-0x00398812, 0xc08c04ed, 0x38402ed0, 0x8620ff00, 0x400e1013, 0x00e10038,
-0x0a100bac, 0xe5832340, 0x10038486, 0x400b408e, 0x438400e1, 0x48400e10,
-0x00000620, 0x00000000, 0x00590003, 0x07b401e5, 0x7a0c1e50, 0x8401ed04,
-0x403e5017, 0x01f18078, 0x1e1057a4, 0xe1036b4a, 0x10078441, 0x025b401e,
-0x078491f1, 0x0c400818, 0x00000402, 0x00000000, 0x22332812, 0x095400cd,
-0x72700cd0, 0x0400c500, 0x400c1003, 0x01c10234, 0x0c140704, 0xc5002340,
-0x14230500, 0x0233400c, 0x030440c1, 0x48400c10, 0x00000c20, 0x00000000,
-0x005da817, 0x65fc0057, 0x5ec22570, 0x4c007d00, 0xc0071001, 0x03730014,
-0x05300064, 0x538017c0, 0x10054400, 0x0057c005, 0x014c0273, 0x5cd02734,
-0x00000620, 0x00000000, 0x00070012, 0x004c001f, 0x05c301d0, 0x7c001f00,
-0xc021f008, 0x1a1f0087, 0x01f0886c, 0x1fc807c6, 0xf0087c02, 0x0007c001,
-0x003d0317, 0x4bc100f0, 0x00000c00, 0x00000000, 0x00270810, 0x166c0097,
-0x27c00d70, 0x4c009f11, 0xc439f186, 0x429300e7, 0x39f0147c, 0x930024c0,
-0xf0867481, 0x0130d009, 0x024c8181, 0x40c00934, 0x00000c20, 0x00000000,
-0x00a62001, 0x0274009d, 0x27404910, 0x45009d19, 0x40099002, 0x03914027,
-0x39d21274, 0x90402458, 0xd0027400, 0x08a40039, 0x0a540895, 0x04401930,
-0x00000800, 0x00000000, 0x00b4a018, 0x0244108d, 0x27408950, 0x44068d10,
-0x400d5022, 0x00910027, 0x08d00274, 0x990a2041, 0xd0225408, 0x00244088,
-0x0a44029d, 0x60401910, 0x00000200, 0x00000000, 0x02202010, 0x2214088d,
-0xa3402810, 0x04028d00, 0x402cd21b, 0x028100b3, 0x28d20a34, 0x8900b040,
-0xd00a3416, 0x80b06428, 0x0214048d, 0x40408810, 0x00000080, 0x00000000,
-0x3586b01d, 0x586c160f, 0x07c14070, 0x0c001f00, 0xc000f004, 0x20530003,
-0x01f0503c, 0x480004c0, 0xf0011c04, 0x0004c405, 0xa84c0b1f, 0x74c36130,
-0x00000ac0, 0x00000000, 0x012fb819, 0x13fc049f, 0x2fc809f2, 0x7c00bf00,
-0xc00b9822, 0x80af002f, 0x0bf200fc, 0x9700afc0, 0xf802fc00, 0x00b3c029,
-0x0e3c09b7, 0x67c04b70, 0x00000e60, 0x00000000, 0x00afa018, 0x1acc02bb,
-0x27c189f0, 0x7c829b00, 0xc2090032, 0x029f2022, 0x29308674, 0x9701a3c0,
-0xf00a7c00, 0x012cc089, 0x62cc06a1, 0x67440b30, 0x00000e00, 0x00000000,
-0x4007081c, 0x10450411, 0x070821d0, 0x74801321, 0xc9457208, 0x800d2105,
-0x01305064, 0x11208748, 0xd2107484, 0x0582c043, 0x08548015, 0x73404154,
-0x00000c22, 0x00000000, 0x00a3a010, 0x1a140681, 0x2f004ad0, 0xb400a904,
-0x400a5032, 0x00ad042b, 0x0a9082f4, 0xa5022b40, 0xd002a410, 0x4220402a,
-0x12042681, 0x43612c90, 0x00000e80, 0x00000000, 0x00a5a818, 0x12748091,
-0x2f4909d0, 0xf480b104, 0x488b5082, 0x42bd002d, 0x4b1202e4, 0xb5002f40,
-0xd002f400, 0x8036400b, 0x02540295, 0x634009d8, 0x00000620, 0x00000000,
-0x00a7a805, 0x865d0093, 0xe3c039f0, 0x7c1b9b00, 0xc0393802, 0x029f8027,
-0x09b0023c, 0x95002744, 0xf0027c00, 0x02a4c009, 0x024c0292, 0x17c059b2,
-0x00000e20, 0x00000000, 0x00258014, 0x024c1097, 0x27c089f0, 0x7c019b05,
-0xc009f002, 0x049f00e5, 0x0970266c, 0x9b0023c0, 0xf0027c00, 0x10630009,
-0x0238049f, 0x53c03930, 0x00000600, 0x00000000, 0x01850814, 0x006c0007,
-0x8cc20331, 0xfc023d00, 0x60032000, 0x0033410f, 0x03f080cc, 0x3a040fc8,
-0xf000fc08, 0x0004c002, 0x904c0913, 0x53c00130, 0x00000420, 0x00000000,
-0x015ca014, 0x0545227d, 0xd4500550, 0x74065d00, 0xc015502d, 0x00510817,
-0x75f08140, 0x51001740, 0xd0094c0b, 0x001d4007, 0x0dc4027f, 0x53400510,
-0x00000200, 0x00000000, 0x0076a014, 0x03040245, 0x78480e10, 0xb404ed80,
-0x404e9003, 0x52e1027b, 0x3ed13794, 0xe000bb4b, 0xd06bb402, 0x0132400e,
-0x0704001d, 0x53400c90, 0x00000a00, 0x00000000, 0x10388005, 0x0f840a6d,
-0x38401ed0, 0x3400e904, 0x410e500f, 0x01e1007c, 0x0e500795, 0xe1043f40,
-0xd0038400, 0x002b610c, 0x6384002d, 0x17400e90, 0x00000200, 0x00000000,
-0x00581015, 0x06c601c7, 0x78c01f30, 0xbc41ed00, 0x401eb007, 0x01e3007b,
-0x1ed0039c, 0xea407bc8, 0xf007bc41, 0xa07ac01e, 0x17cc816f, 0x57c81eb0,
-0x00000040, 0x00000000, 0xa015b810, 0x825400df, 0x07c00172, 0x7c001f08,
-0xc001c000, 0x005f0007, 0x01f0006c, 0x170007c0, 0xe0006c00, 0x882d4201,
-0x017d005f, 0x43c00f74, 0x00000660, 0x00000000, 0x027fa000, 0x26c8417f,
-0x7ec0df30, 0xdc01f302, 0xc09eb007, 0x29fe027c, 0x1ff007cc, 0xf3007fc0,
-0xf027dc81, 0x03dda49f, 0x07cc01f3, 0x08d01b30, 0x00000e00, 0x00000000,
-0x00098815, 0xb384046d, 0x38418eb2, 0xb488e102, 0xc28e7123, 0x0cff0b3a,
-0x0ef20384, 0xe1823b40, 0x7023ac08, 0x022b40ce, 0x119d00fb, 0x56c00a10,
-0x00000620, 0x00000000, 0x10390200, 0x828480ed, 0x38484e50, 0x9400e100,
-0x480fd003, 0x00ed203a, 0x8ed043a6, 0xc1003f40, 0xd203b400, 0x0139481e,
-0x832408e9, 0x60410f50, 0x00000400, 0x00000000, 0x00c32804, 0x020400cd,
-0x824010d0, 0x34000170, 0x40b05000, 0x83450202, 0x00500024, 0x01800340,
-0x50000480, 0x00274200, 0x831400c9, 0x18413c5c, 0x00000c20, 0x00000000,
-0x0425a815, 0x8b4c00ef, 0x34c0bc50, 0x5c00d200, 0xc03d9003, 0x069d0034,
-0x0dd20768, 0xd34037c0, 0xf0037400, 0x0275c00d, 0x02ec0a0b, 0x54481d74,
-0x00000620, 0x00000000, 0x04370001, 0x133c005f, 0xb5c825a0, 0x3c90df00,
-0xc84d700b, 0x909f2037, 0x2df20b5d, 0xdf20b7c8, 0xf20b7c80, 0x80e7c80d,
-0x037c001f, 0x27c00d90, 0x00000c00, 0x00000000, 0x000b0880, 0x024c22d3,
-0x3cc01930, 0xfc05ff0d, 0xc00fb007, 0x00bf013e, 0x1ff007fc, 0xf3007cc8,
-0xb003fc00, 0x402fc00f, 0x229c0075, 0x07c21a30, 0x00000c20, 0x00000000,
-0x00162081, 0x02540251, 0x05400d50, 0x74041d00, 0x40405000, 0x031d0105,
-0xc0d0605c, 0x11060140, 0x50283401, 0x40e74081, 0x016c0055, 0x04401934,
-0x00000802, 0x00000000, 0x0064a001, 0x02441099, 0x04406d90, 0x74001504,
-0x40411160, 0x141d0006, 0x01500070, 0x11000448, 0x90085438, 0x00764409,
-0x035480d5, 0x05404990, 0x00000200, 0x00000000, 0x40002010, 0x031400c1,
-0x01600550, 0x34000d30, 0x40015800, 0x000d0003, 0x01900016, 0x00600540,
-0x10006400, 0x80034008, 0x002401c5, 0x40400813, 0x00000080, 0x00000000,
-0x0026b000, 0x024c0093, 0x00400930, 0x7c001700, 0xc0013000, 0x001f0006,
-0x01f1007c, 0x10400448, 0xb0007c00, 0x002bc009, 0x035c00d7, 0x05c009b0,
-0x00000ac0, 0x00000000, 0x200fb805, 0x02fc00ff, 0x3fc00ff0, 0xfc00ff00,
-0xc00f7003, 0x20bf003c, 0x0ff003dc, 0xff003bc0, 0xd003fc00, 0x502fc007,
-0x02fc007f, 0x15c00af0, 0x00000e60, 0x00000000, 0x001fb003, 0x01dc20f7,
-0xbe408f70, 0xdc083301, 0xc08ff003, 0x4cfb0d3e, 0x0d30904c, 0xf60837c0,
-0xf202ec48, 0x1104e04f, 0x011c0c4f, 0x0cd08f70, 0x00000e00, 0x00000000,
-0x20a70001, 0x00c40201, 0x3c404f30, 0x6c041b40, 0x400dd1b3, 0x06510081,
-0xcf112850, 0xfd013dc1, 0x54124c04, 0x2985c08f, 0x0154025d, 0x04406810,
-0x00000c20, 0x00000000, 0x0217a211, 0x01140245, 0xb1400c14, 0x34004101,
-0x404c9041, 0x88414000, 0x0c185004, 0xcd043340, 0x10432404, 0x0710400c,
-0x0104228d, 0x45406810, 0x00000e80, 0x00000000, 0x0005a803, 0x09540095,
-0x35480d10, 0x44021100, 0x400dd041, 0x04c10035, 0x0d118010, 0xdd003540,
-0x50036400, 0x0c15400d, 0xc15000dd, 0x0d400910, 0x00000620, 0x00000000,
-0x0256a802, 0x055c0097, 0x35d00d30, 0x74029100, 0xc00dd002, 0x019a0036,
-0x0d340f4c, 0xcf0037c0, 0x30026c00, 0x0804c00d, 0x0c08124f, 0x09c00d34,
-0x00000e20, 0x00000000, 0x102d8007, 0x086c007a, 0x3ec00fb1, 0xfc207f20,
-0xc50ef026, 0x213f500b, 0x0ff00ffc, 0xff003fc2, 0xf0039c40, 0x0087c40f,
-0xc8fc147f, 0x9ec08ab0, 0x00000600, 0x00000000, 0x00350802, 0x091c081f,
-0x32c08cb0, 0x7c00df01, 0xe20d7408, 0x001f0107, 0x0df04f5c, 0xd30435c0,
-0xf0035c10, 0x2014c20c, 0x214c0097, 0x08c08930, 0x00000420, 0x00000000,
-0x03a0a013, 0x45440bd1, 0x7f402f90, 0x74105d01, 0x412f112c, 0x0a9111b7,
-0x1fd00b6c, 0xf1003ec0, 0xd0077d03, 0x0094402f, 0x09ec02f1, 0x4c40a910,
-0x00000200, 0x00000000, 0x0042a007, 0x113400d5, 0xb3490c90, 0x34d01900,
-0x401c4000, 0x088d0032, 0x8cd00004, 0xc1023261, 0x90060520, 0x118042dc,
-0x0d3000cd, 0x0c501890, 0x00000a00, 0x00000000, 0x00788004, 0x21a40921,
-0x7b401e94, 0x2401ad11, 0x401e1054, 0x8521024b, 0x5ed804a4, 0xc1003a40,
-0xd046b419, 0x11584c1f, 0x05f40df9, 0x00401e9c, 0x00000200, 0x00000000,
-0x00000012, 0x213c0047, 0x33400cb1, 0x34084e02, 0x440c7096, 0x001f0143,
-0x1df1271c, 0xc30b7664, 0xb0171d00, 0x0140c80c, 0x853c0dcf, 0x58d04cb0,
-0x00000040, 0x00000000, 0x2019a802, 0x11cc00bf, 0x37c00f70, 0xfc08be03,
-0xc00df022, 0x04bb203f, 0x0df0036c, 0xff3f3ec0, 0xf1137c00, 0x2025c00e,
-0xb1ec20f7, 0x0bc00f70, 0x00000660, 0x00000000, 0x0007a015, 0x434c009b,
-0x35c00df0, 0x5c00930c, 0xc00d3001, 0x00db0037, 0x4df0004c, 0xd32d37c8,
-0x72024c9d, 0x1006c12d, 0xa50d00df, 0x57c00938, 0x00000e08, 0x00000000,
-0x08398812, 0x03852041, 0x38412ed0, 0xb400e101, 0x400e1201, 0x004b000f,
-0xaed000ac, 0xf3313b40, 0x51038444, 0x1019424e, 0x03ac43fd, 0x4b400eb0,
-0x00000620, 0x00000000, 0x006d0003, 0x05844129, 0x7b405ed0, 0xb403e902,
-0x429e1407, 0x0161904b, 0x5ed007a0, 0xe9107b48, 0xd0873484, 0x0048449c,
-0x15c401ed, 0x0f441e14, 0x00000400, 0x00000000, 0x00332812, 0x030600c1,
-0x34400cd0, 0x3601c940, 0x680c1103, 0x01c92037, 0x0cd00744, 0xc1103344,
-0xd0073500, 0x0231440c, 0x0f0400dd, 0x5b400c90, 0x00000c20, 0x00000000,
-0x189da817, 0x01cc017b, 0x17c005f0, 0xfc037b00, 0xc4051041, 0x1073001f,
-0x05f01de1, 0x4b0013c0, 0xf0117c00, 0x005e0207, 0x21c0807f, 0x5fc40530,
-0x00000620, 0x00000000, 0x20070012, 0x007c0a1f, 0x07c601f0, 0x7c041700,
-0xc001f008, 0x001f0007, 0x01f1487c, 0x1f0007e0, 0x32084400, 0x0005e001,
-0x207c001f, 0x4bc02130, 0x00000c00, 0x00000000, 0x04230810, 0x460c008b,
-0x25c00834, 0x3c229310, 0xc0091022, 0x008f0024, 0x0932024c, 0x9b0127c4,
-0x30064c00, 0x3026c009, 0x82688197, 0x40c409f2, 0x00000c20, 0x00000000,
-0x40262001, 0x26458091, 0x24400910, 0x74409100, 0x4089144e, 0x00951025,
-0x09100a45, 0x91106740, 0x514e0440, 0x10254028, 0x02540197, 0x055129d0,
-0x00000800, 0x00000000, 0x0064a018, 0x02440091, 0x25400990, 0x54409100,
-0x4008d002, 0x10990024, 0x09100364, 0x91802540, 0x98226402, 0x20e44009,
-0x02740495, 0x604008d8, 0x00000200, 0x00000000, 0x00202010, 0x02240281,
-0x20400890, 0x34088902, 0x40085022, 0x088500a1, 0x08107300, 0x8d422360,
-0xd8226400, 0x1221448c, 0x42040885, 0x414088d9, 0x00000080, 0x00000000,
-0x0502b01d, 0x504c1453, 0x81c000b0, 0x1c001305, 0xc08172d8, 0x161f0504,
-0xe114186e, 0x1b0587c1, 0xb2586c9c, 0x0586e161, 0x047c9017, 0x74c161f2,
-0x00000ac0, 0x00000000, 0x002fb819, 0x02dc00b7, 0x27c92970, 0xfc04b769,
-0xc069b013, 0x04bb002f, 0x19f012fc, 0x93012380, 0x7012dc04, 0x012ff049,
-0x02fc00bf, 0x66c04bf0, 0x00000e60, 0x00000000, 0x002fa018, 0x025c009f,
-0x27c00970, 0x5c009f05, 0xcb69b00a, 0x009d0227, 0x69f04274, 0xbb132d44,
-0x3042dc06, 0x142cc04b, 0x12ec12bb, 0x63c009f0, 0x00000e00, 0x00000000,
-0x0007081c, 0x00440017, 0x87c06110, 0x44041d01, 0x40019000, 0xa0110107,
-0x43700874, 0x11000440, 0x50582c84, 0x4187c001, 0x006c065f, 0x734040d1,
-0x00000c20, 0x00000000, 0x002ba010, 0x0e9410ad, 0x2b418a50, 0x9410b904,
-0x400ad002, 0x00a9912a, 0x6ad052b0, 0x8101a140, 0x58023586, 0x24604568,
-0x0a040481, 0x414528d1, 0x00000e80, 0x00000000, 0x0425a818, 0x06c602b5,
-0x2f440f10, 0xc400bd10, 0x400bd002, 0x80b10c2f, 0x0b5002f6, 0x91002400,
-0x50926420, 0x40676809, 0x2264089d, 0x634019d0, 0x00000620, 0x00000000,
-0x00a78805, 0x025c029d, 0x27400970, 0x5c098f00, 0xc009f002, 0x109f40a7,
-0x09f19274, 0x914025c0, 0x70027c00, 0x20e44008, 0x064c0093, 0x15c209f0,
-0x00000e20, 0x00000000, 0x00248014, 0x027c0097, 0x25c009f0, 0x3c019f00,
-0xc2093002, 0x009f10e7, 0x0970267c, 0x970027c4, 0xf2067c00, 0x0027c009,
-0x027e008f, 0x53c00df8, 0x00000600, 0x00000000, 0x008d0814, 0x008c0223,
-0x0ce00330, 0xcc103f08, 0xc0033000, 0x403f000a, 0x027008f4, 0x072c0340,
-0x10005c88, 0x00464801, 0xe04c881b, 0x50c01130, 0x00000420, 0x00000000,
-0x0854a014, 0x01440051, 0x57e00550, 0x44005d00, 0x40051001, 0x01592017,
-0x0510014c, 0x7d201c40, 0x10a9fc00, 0x08984007, 0x05c40175, 0x50400510,
-0x00000200, 0x00000000, 0x4252a014, 0x00340901, 0x004a0012, 0x14000d08,
-0x40001800, 0x00055803, 0x10180014, 0x4d003240, 0xd0834430, 0x0030400c,
-0x070431cd, 0x50500c90, 0x00000a00, 0x00000000, 0x20708205, 0x033404c1,
-0x39401e50, 0x9408fd0c, 0x408e1203, 0x07c1013b, 0x4c405704, 0x4d213841,
-0xd003a100, 0x03185006, 0x068420f1, 0x14411290, 0x00000200, 0x00000000,
-0x00581015, 0x05bd01a3, 0x48405330, 0xdc056f0d, 0x48963047, 0x33ae144e,
-0x3234169c, 0x67217a80, 0xf1079c27, 0x014cc41f, 0x078800af, 0x54d016b4,
-0x00000040, 0x00000000, 0x0035b810, 0x024c2a5f, 0xb7c02df0, 0x6d468f22,
-0xc869f430, 0x065b0337, 0x1db0417c, 0x5e0827c8, 0x30827400, 0x0045c145,
-0x823c498f, 0x43c02970, 0x00000660, 0x00000000, 0x005fa000, 0x049c037f,
-0x5dc13330, 0x5c03bf00, 0xc213f104, 0x855a1046, 0x17d245fc, 0xfba67ec0,
-0xb227cd8d, 0x1078c81d, 0x244c01d3, 0x00c03b30, 0x00000e20, 0x00000000,
-0x01398815, 0x93ac20ad, 0xa9c04e10, 0x04046f00, 0x002fd017, 0x09ab0070,
-0x7bd0028c, 0xa3001842, 0xf0073c0c, 0x0fdbc076, 0x1eac0d6d, 0x54408610,
-0x00000660, 0x00000000, 0x00190200, 0x09d400ed, 0x1b40021a, 0xb410ed02,
-0x50065093, 0x00c90008, 0x56d003a6, 0x61003144, 0xd041844c, 0x010e404e,
-0x10e400a9, 0x00400210, 0x00000400, 0x00000000, 0x02b32804, 0x0204120d,
-0x23600d1c, 0x24000500, 0x4009d800, 0x120904f0, 0x08d00004, 0x01000040,
-0x42003440, 0x00c14005, 0x0224010d, 0x10420c10, 0x00000c00, 0x00000000,
-0x00b5a815, 0x0254113f, 0x2fc00f10, 0xfc003d00, 0xc00b7000, 0x823a217e,
-0x0bf080ec, 0xf3000dd4, 0xd0834c00, 0x002e4205, 0x016c81e3, 0x54f00d30,
-0x00000600, 0x00000000, 0x21170001, 0x0d7c00cf, 0x95c001f0, 0x5c00df00,
-0xc005f003, 0x80d70887, 0x05f2032c, 0x971035c4, 0xf1037d00, 0x0027c021,
-0x007d08d7, 0x07c011f5, 0x00000c00, 0x00000000, 0x023b08a0, 0x038c0093,
-0x28d29fb0, 0xfc307300, 0xc00ff003, 0x80b5007e, 0x0b3102ec, 0x43000bc0,
-0xa003ac00, 0x54dcd04f, 0x419000d3, 0x00c00530, 0x00000c02, 0x00000000,
-0x00162081, 0x10444051, 0x94403150, 0x74009500, 0x4421d100, 0x00550185,
-0x05108174, 0x1b006740, 0x50024438, 0x00d04021, 0x2c5410d5, 0x045009f0,
-0x00000802, 0x00000000, 0x00b4a001, 0x02440051, 0x34400d94, 0x74009500,
-0x4009d000, 0x80510231, 0x0d900174, 0xd122876c, 0x54836400, 0x00045205,
-0x015688d1, 0x06400892, 0x00000200, 0x00000000, 0x40102010, 0x01042081,
-0x00480011, 0x24004100, 0x4004d013, 0x04850001, 0x40950234, 0x01001240,
-0x50430500, 0x11004040, 0x600618c1, 0x42401c92, 0x00000080, 0x00000000,
-0x0036b000, 0x034d00f3, 0x3cc00fb4, 0xfc40e700, 0xc40fd037, 0x05f701f8,
-0xfdb023fc, 0x510207c5, 0x703d6c00, 0x2754c15e, 0x15582593, 0x02c401b0,
-0x00000ac0, 0x00000000, 0x100fb805, 0x00fc003f, 0x0fc003f0, 0xfc003f00,
-0xc003f0a4, 0x0837074d, 0x113004fc, 0x3f894fc0, 0xf0947840, 0x0057c003,
-0x14bc05bf, 0x15c00ff0, 0x00000e60, 0x00000000, 0x003f8003, 0x02f4003f,
-0x3cc00f50, 0xfc00ff00, 0xc80f3803, 0x00b1403f, 0x0f3003fc, 0xfd103fc0,
-0xb123fc00, 0x018acc27, 0x51fc90a2, 0x0cc02f34, 0x00000e00, 0x00000000,
-0x103f0801, 0x02748011, 0x05400911, 0x3c001d00, 0x48011200, 0x00110007,
-0x01520074, 0x1d000740, 0x10147400, 0x2364c858, 0x49740095, 0x04500f10,
-0x00000c20, 0x00000000, 0x0033a011, 0x02140001, 0x00600451, 0x36000d20,
-0x40001400, 0x40090003, 0x00940024, 0x0d000340, 0xd0101480, 0x80324008,
-0x11140009, 0x44404c90, 0x00000e80, 0x00000000, 0x0035a803, 0x02740211,
-0x05400d18, 0x74101d00, 0x40811020, 0x90190007, 0x01902034, 0x1d820740,
-0xd0083424, 0x10244049, 0x4174009d, 0x0c400d10, 0x00000620, 0x00000000,
-0x4037a802, 0x027c2313, 0x04cc2850, 0x78021f10, 0xc001100c, 0xa05b0047,
-0x21b0146c, 0x1f04c7c0, 0xf0245c41, 0x0806c011, 0x213c249b, 0x08c20d32,
-0x00000e20, 0x00000000, 0x08398007, 0x02bc4573, 0xffc00ff2, 0xdc09ff08,
-0xc01ff107, 0x80f700bf, 0x3f7007fc, 0xff007fc0, 0x3003fc00, 0x120dc00f,
-0x057c00f7, 0x1fc00fc0, 0x00000600, 0x00000000, 0x00350806, 0x437c021f,
-0xb5d505f0, 0x7c02db00, 0xc22d3083, 0x00d340b4, 0x2df21b7c, 0xdf00b7e8,
-0xf00b7c02, 0x0035828d, 0x094c00d3, 0x0bc08d30, 0x00000420, 0x00000000,
-0x013ca013, 0x8374005d, 0x35490d10, 0x4c0add01, 0x41ad100f, 0x0fd122f5,
-0x0dd00b74, 0xd1103740, 0xd0037400, 0x012c44ad, 0x0d6c00fb, 0x4f420f10,
-0x00000200, 0x00000000, 0x0072a003, 0x8e24010d, 0x835c3410, 0x74000d09,
-0x50001440, 0x00010004, 0x00d82034, 0x05000340, 0xd0002480, 0x04954011,
-0x41040089, 0x1f410d14, 0x00000a00, 0x00000000, 0x20788000, 0xb6b411ad,
-0x7b409a14, 0x8401ed00, 0x421e1107, 0x05a00c7a, 0x1ed087b4, 0xe9007b40,
-0x9027b421, 0x213c401e, 0x04a400b9, 0x13401e10, 0x00000200, 0x00000000,
-0x18301016, 0x527c000f, 0xb3ca8c74, 0x3c00cf20, 0xc82d3043, 0x008320b4,
-0x0cd3933e, 0xcf023744, 0xf0032c22, 0x1a31c00c, 0x510c088b, 0x4bc20c3a,
-0x00000040, 0x00000000, 0x04bdb802, 0x92fc00bd, 0x3dc08e70, 0xdc08ff00,
-0xc08f7003, 0x049f0035, 0x0ff803fc, 0xf7383fc0, 0xf003fc00, 0x003fc01f,
-0x00fc08bf, 0x0bc10ff8, 0x00000660, 0x00000000, 0x00b7a015, 0x827c2113,
-0x04c81130, 0x7c001700, 0xc001b000, 0x40532007, 0x01300440, 0x1f0007c0,
-0x30047c00, 0x2a57c001, 0x074c088b, 0x57c16d30, 0x00000e00, 0x00000000,
-0x00318812, 0x02bc402b, 0x38400eb0, 0xb400ed00, 0x400e1403, 0x00f1403f,
-0x0e9003c4, 0xed103b40, 0x1003b400, 0x011b400e, 0x02ec01e1, 0x4b484e11,
-0x00000620, 0x00000000, 0x80790003, 0x0f340061, 0x78411e10, 0xb411ed04,
-0x401e1007, 0x21e1007b, 0x1e908786, 0xed007b41, 0x1107b6d1, 0x003b401e,
-0x079407f9, 0x0f401e90, 0x00000400, 0x00000000, 0xa0332812, 0x035481c9,
-0x78401e98, 0xf403ed00, 0x442e1007, 0x12e1007b, 0x0e900386, 0xed80bb40,
-0x1407b402, 0x04b3600e, 0x023413d1, 0x4b400c90, 0x00000c20, 0x00000000,
-0x0015a817, 0x05740473, 0x94d00530, 0x74005700, 0xc9051045, 0x115316d7,
-0x8534094d, 0x5d22d7c8, 0x30417c81, 0x001fc057, 0x21dc017b, 0x5fc005b4,
-0x00000620, 0x00000000, 0x00030012, 0x087c101f, 0x0fc403f0, 0xfc003f00,
-0xc1037280, 0x003f000f, 0x037260ec, 0x3f020fc0, 0xf010fc02, 0x0007e003,
-0x806c801f, 0x4bc02172, 0x00000c00, 0x00000000, 0x01270810, 0x224c0083,
-0x23e00932, 0x6c109b04, 0xc4093042, 0x00930024, 0x09f0026c, 0x9f0067c0,
-0xf0024c12, 0x1022c009, 0x024d809b, 0x43c009f0, 0x00000c20, 0x00000000,
-0x20262001, 0x42442091, 0x27680910, 0x45009340, 0x50091102, 0x00914024,
-0x09d0024d, 0x8d226740, 0xd00a4c01, 0x10245009, 0x02440091, 0x074129d0,
-0x00000800, 0x00000000, 0x00248018, 0x82442191, 0x2f4e0d10, 0xc400a100,
-0x400a1c03, 0x20a10028, 0x0fd802c4, 0xb5802f42, 0xd042c400, 0x0024602a,
-0x02640091, 0x634009d8, 0x00000200, 0x00000000, 0x02202010, 0x22040081,
-0x2b400a10, 0x8408a100, 0x508a1022, 0x08a10228, 0x0ad82284, 0xed0a2b40,
-0xd00a8400, 0x10a0402a, 0x0a240081, 0x434008d8, 0x00000080, 0x00000000,
-0x0586b01d, 0x584e1413, 0x17400134, 0x0c021300, 0x48213008, 0x02130084,
-0x01f0084c, 0x170087c0, 0xf0000d00, 0x0500c003, 0x006c1e13, 0x77c3e1f0,
-0x00000ac0, 0x00000000, 0x4127b819, 0x12fe00ff, 0xa7c228f0, 0x5c069f20,
-0xc069b21a, 0x269f11a7, 0x29f01b5c, 0xdf01b7c0, 0xf00b5c02, 0x002fc029,
-0x0adc01b7, 0x67c019f0, 0x00000e60, 0x00000000, 0x022fa018, 0x1acc049f,
-0x24404a32, 0x4c309300, 0xc0693002, 0x009309a6, 0x4b30124c, 0xa3022c80,
-0x30124c04, 0x1927c089, 0x12cc0291, 0x60c16bf8, 0x00000e00, 0x00000000,
-0x0087081c, 0x90440a1d, 0x04500112, 0x05050140, 0x5071143c, 0x030140c0,
-0x01101cc5, 0x11428450, 0x14c44502, 0x054f40b1, 0x50440445, 0x72c001d0,
-0x00000c20, 0x00000000, 0x01a3a010, 0x9a24008d, 0xa0488810, 0x84108108,
-0x40ca5042, 0x16a50229, 0x28146284, 0x81012040, 0x110a0408, 0x01ab400a,
-0x32240681, 0x406008d8, 0x00000e80, 0x00000000, 0x0025a818, 0x8264809d,
-0x24410914, 0xc4109104, 0x406b5002, 0x82b501ad, 0x291022c6, 0x91002440,
-0x10224400, 0x042f426b, 0x02640095, 0x624009d2, 0x00000620, 0x00000000,
-0x0027a805, 0x266c029f, 0xe4cc3930, 0x4c029300, 0xc029706e, 0x619780e5,
-0x0930864c, 0x930024c0, 0x30024c00, 0x40e7c239, 0x026d0293, 0x14d009d0,
-0x00000e20, 0x00000000, 0x00258014, 0x025c49df, 0x77c049f0, 0x7c099f02,
-0xc019b006, 0x059b2066, 0x29f0067c, 0x9f00a7c0, 0xe0067c02, 0x00a7c009,
-0x425c089b, 0x53c109f2, 0x00000600, 0x00000000, 0x2a050814, 0x207c800f,
-0x80c03080, 0x8c020f02, 0xc0223008, 0x4023008b, 0x00f0008c, 0x0f0000c0,
-0xf0080c00, 0x000cc443, 0x005c8013, 0x50c000b4, 0x00000420, 0x00000000,
-0x0014a014, 0x2df4205d, 0xd4412750, 0x44005d90, 0x00053001, 0x20550017,
-0x05700155, 0x7d001540, 0xd0014400, 0x001c5005, 0x09c48051, 0x52c01711,
-0x00000200, 0x00000000, 0x0072a014, 0x0374004d, 0x324c1890, 0x0500cd04,
-0x400c8403, 0x40c02033, 0x1cd00324, 0x4d027040, 0xd0030400, 0x0014422c,
-0x2e1400d1, 0x52403c10, 0x00000a00, 0x00000000, 0x20288005, 0x0334032d,
-0x3a400e10, 0x84006d10, 0x44021000, 0x0025100b, 0x2e5000a4, 0x6d003942,
-0xd0038400, 0x302a4010, 0x050404e1, 0x1641ce10, 0x00000200, 0x00000000,
-0x00681015, 0x26bc002d, 0x7ad21ab0, 0x8c41ed10, 0xc01eb107, 0x81e3407b,
-0x1ef007ac, 0x6f0078c0, 0xf0058501, 0x405cc81e, 0x069c05e3, 0x56c01630,
-0x00000040, 0x00000000, 0x0025b810, 0x037c061f, 0x95c00df0, 0x7c405f00,
-0xc401f000, 0x001b1007, 0x0cf0005c, 0x5f0037c0, 0xf2017020, 0x0025c001,
-0x017c42df, 0x43c00470, 0x00000660, 0x00000000, 0x007fa000, 0x07fc2372,
-0xfcc0df34, 0xc801f322, 0xc09f3007, 0x41f3207c, 0x1b3007d8, 0x73027cc0,
-0x3027cc01, 0x0058c01f, 0x85cc93f3, 0x00c01f34, 0x00000e00, 0x00000000,
-0x02398815, 0x23f4002b, 0x284186b0, 0x94846b00, 0x41821010, 0x04210108,
-0x8a100084, 0x61003840, 0xb0238490, 0x202ac042, 0x11c410fb, 0x56c00210,
-0x00000620, 0x00000000, 0x00210000, 0x00b40221, 0x3a0a4e50, 0xb410e124,
-0x480e9803, 0x40e1243a, 0x0a900386, 0x610c2840, 0x11018400, 0x005c610c,
-0x819402e1, 0x00400650, 0x00000400, 0x00000000, 0x00272804, 0x82340909,
-0x02561490, 0x37034900, 0x58119604, 0x03114002, 0x88940447, 0x41642050,
-0x14450513, 0x01a05001, 0x210401c9, 0x12400050, 0x00000c20, 0x00000000,
-0x0035a815, 0x027c0250, 0xb6c01d70, 0x6401d100, 0xc03db06b, 0x84d102b6,
-0x29a06b5c, 0x4300e4c0, 0x101f4c80, 0x04d4401d, 0x061d01f3, 0x54c00b70,
-0x00000620, 0x00000000, 0x00270001, 0x0278001f, 0x35c00df2, 0x4c045f04,
-0xc0417080, 0x001f0005, 0x4970006c, 0x5f0827c0, 0xf0037c20, 0x0027c101,
-0x017c00df, 0x07c009a0, 0x00000c00, 0x00000000, 0x806f0880, 0x02fc0833,
-0x3ce15db0, 0x4500df10, 0xc00df003, 0x10df0036, 0x5930034d, 0x9f0037c0,
-0xf0014c00, 0x001cc00f, 0x02cc00e3, 0x00c00230, 0x00000c22, 0x00000000,
-0x80662081, 0x46740015, 0x146a0c10, 0xc4007d01, 0x40037100, 0x003d000c,
-0x19f000c8, 0x9d027744, 0xd001c403, 0x502d5043, 0x015400d1, 0x05409114,
-0x00000802, 0x00000000, 0x2124a001, 0x06340011, 0x14480d90, 0x5680cd00,
-0x600dd103, 0x00dd0034, 0x09900340, 0x5d002740, 0x90034006, 0x0010400d,
-0x014400d1, 0x04400910, 0x00000200, 0x00000000, 0x08202010, 0x82348005,
-0x00600410, 0x14004d30, 0x50005900, 0x40090000, 0x08980004, 0x4d002340,
-0xd0030520, 0x40204000, 0x015440c1, 0x41400010, 0x00000080, 0x00000000,
-0x0026b000, 0x02fc0011, 0x14500db2, 0x5e00dd20, 0xc00df203, 0x00df0034,
-0x09b0034c, 0x9f0027c0, 0xb0014c00, 0x0014c005, 0x014c20f3, 0x00c40130,
-0x00000ac0, 0x00000000, 0x002fb805, 0x02fc003f, 0x0bc007f0, 0xec007f80,
-0xc0034200, 0x003f000f, 0x0bf000dc, 0xbf102fc0, 0xf001fc00, 0x002fc40b,
-0x01fc40ff, 0x17c002f2, 0x00000e60, 0x00000000, 0x010f8003, 0x70ec08ff,
-0x3dc18330, 0x5c043f00, 0xc0cfb04b, 0x84d7a006, 0x0f3011dc, 0x270236c0,
-0xb000dc00, 0x003fc009, 0x034c301f, 0x0cc00ff0, 0x00000e00, 0x00000000,
-0x1aa30801, 0x080c06fd, 0xbf426190, 0xc40e5f02, 0x04eea003, 0x10f12597,
-0x4fd02155, 0x15103440, 0x1201140a, 0x0034400b, 0x8bd4021d, 0x04402fb0,
-0x00000c20, 0x00000000, 0x8503a011, 0x902608cd, 0x31484094, 0x16108d05,
-0x120c9893, 0x02c50080, 0x0c500104, 0x01013261, 0x90221400, 0x00334004,
-0x232420cd, 0x444028d8, 0x00000e80, 0x00000000, 0x28258803, 0x126400cd,
-0x37418198, 0x4400d500, 0x440d9003, 0x00d10014, 0x0d500154, 0x01487440,
-0x10025002, 0x0034511d, 0x037400dc, 0x0c4009c0, 0x00000620, 0x00000000,
-0x02478802, 0x006c00df, 0x35c23110, 0x541b1d00, 0xd00db103, 0x00d526c6,
-0x0d74444c, 0x57007280, 0xb2085421, 0x8877c83d, 0x036c009f, 0x08c41de0,
-0x00000e20, 0x00000000, 0x042d8007, 0x85dc00df, 0x3fc01772, 0x7c005f00,
-0xc00e3043, 0x00f7005b, 0x0fe017bc, 0x3f003fc0, 0xf001bc85, 0x027dc00c,
-0x03dc09af, 0x1fc09e30, 0x00000600, 0x00000000, 0x00950802, 0x106c00d7,
-0x34d02930, 0x4c088301, 0xd00db003, 0x84d70885, 0x0d72007c, 0x534077c0,
-0x70034c02, 0x4036c0ad, 0x037c00d3, 0x08c00920, 0x00000420, 0x00000000,
-0x01f4a013, 0x0b443bf1, 0xbcc00d92, 0xdc00df01, 0x800fb103, 0x03e1001e,
-0x5f3203fc, 0x1b0036c4, 0x1003ec03, 0x12f440bd, 0x1bdc0ed1, 0x4c41a9b0,
-0x00000200, 0x00000000, 0x1092a007, 0x034403cd, 0x70400c18, 0x64840100,
-0x400c180b, 0x01c51020, 0x1d500326, 0x0581b141, 0x10001453, 0x0032400c,
-0x1324004d, 0x1c4218c8, 0x00000a00, 0x00000000, 0x80588204, 0x048701e9,
-0x7e401e91, 0x86012502, 0x409e1037, 0x1de5007c, 0x1e5007f6, 0x69407800,
-0x1037b631, 0x057940ce, 0x0794096d, 0x104018d1, 0x00000200, 0x00000000,
-0x00b01012, 0x830408cd, 0x70404d38, 0x05080101, 0x429c1027, 0x45c7a160,
-0x4c70073c, 0x01037148, 0x300c1800, 0x0176c0dc, 0x077c85cf, 0xc8c04cb4,
-0x00000040, 0x00000000, 0x003db002, 0x02de30f7, 0xb9c00f72, 0xfe003c25,
-0xc02fb023, 0x20eb222b, 0x0cb823bc, 0x7f4032c0, 0xf482ec80, 0x0236d08f,
-0x037c80d3, 0x0bc01f30, 0x00000660, 0x00000000, 0x0007a015, 0x837c04df,
-0xb6c00134, 0x7c00d340, 0xc02db813, 0x34db0046, 0x7db0067c, 0x5b0836c0,
-0x30004c00, 0x2034c16d, 0x974c00d3, 0x54c04970, 0x00000e00, 0x00000000,
-0x18098012, 0x01b408ed, 0x3c400610, 0x3400e909, 0x404c524b, 0x02c1101c,
-0x4c100fc4, 0x2d813941, 0x10138480, 0x0038500f, 0x231400c1, 0x48410a50,
-0x00000620, 0x00000000, 0x04790003, 0x479405ed, 0x79441a10, 0xb481e900,
-0x429e1017, 0x85e10208, 0x9e925394, 0xc9027800, 0x10358481, 0x0479411e,
-0xa79401e5, 0x0d401c18, 0x00000400, 0x00000000, 0x00332812, 0x073400cd,
-0x31013c14, 0x3402c900, 0x500d5803, 0x00c90490, 0x0c100304, 0xdd003140,
-0x14070401, 0x0061413c, 0x031400c5, 0x49400c5a, 0x00000c20, 0x00000000,
-0x001da817, 0x01dc005f, 0x1f503730, 0xbc117100, 0xe0053681, 0x005b001c,
-0x05b025dc, 0x79804c80, 0x1045cc03, 0x4815d027, 0x015c0075, 0x5dd00530,
-0x00000620, 0x00000000, 0x00070012, 0x007c020f, 0x00c081f0, 0x7c101700,
-0xc001b000, 0x00170205, 0x2178004c, 0x1f0205c2, 0xf0007d8c, 0x0006c001,
-0x0074101b, 0x4ac001f0, 0x00000c00, 0x00000000, 0x00270810, 0x026c009f,
-0x26c00870, 0x4c029308, 0xc009b202, 0x01870025, 0x5930024d, 0x9f0007c0,
-0xb0020d00, 0x0025c009, 0x024c0093, 0x41c009b0, 0x00000c20, 0x00000000,
-0x00a60001, 0x0a54029d, 0x26c00914, 0x74009500, 0x50091406, 0x09910020,
-0x29120204, 0x99208740, 0x720a4400, 0x40245009, 0x02450091, 0x045009d0,
-0x00000800, 0x00000000, 0x80a4a018, 0x43050095, 0x64400950, 0x54009900,
-0x40090012, 0x00910026, 0x09180254, 0x99006742, 0x10424500, 0x00234808,
-0x02640081, 0x614008d0, 0x00000200, 0x00000000, 0x02202810, 0x7204028d,
-0x2251c890, 0x7414c100, 0x40681023, 0x80810224, 0x8c101a54, 0x8d026348,
-0x50220408, 0x02224c88, 0x32240881, 0x404088d0, 0x00000080, 0x00000000,
-0x3586a01d, 0x180c1457, 0x04cc6070, 0x5c041b05, 0xe041b0d8, 0x7e110187,
-0x2130105c, 0x5f0507c0, 0x30d80c16, 0x00838161, 0x0c6c9613, 0x75c161b1,
-0x00000ac0, 0x00000000, 0x012fa819, 0x12fc009f, 0x24c04b70, 0x7c14bf45,
-0xc069f012, 0x219f032f, 0x69f00aec, 0xfb012fc0, 0xf012fd04, 0x012dc24b,
-0x325c04bf, 0x67c24bf0, 0x00000e60, 0x00000000, 0x812fa818, 0x0aec00b3,
-0x2fc229b0, 0xfc30bf00, 0xc029f00a, 0x06af0126, 0x2af0824c, 0xa301eec2,
-0xf05a1c02, 0x00a6c489, 0x1a44829f, 0x60c029b2, 0x00000e00, 0x00000000,
-0x4507081c, 0xb9442413, 0x07420152, 0x74000f09, 0x44217010, 0x401d1581,
-0xa1f0083c, 0x1b418442, 0xd01c4400, 0x01455075, 0x0444051d, 0x7040f310,
-0x00000c20, 0x00000000, 0x0323a010, 0x1206168d, 0xa3402850, 0x34108d14,
-0x4268d28a, 0x068d0220, 0x08d04a16, 0x8921a240, 0x50022402, 0x012b502a,
-0x1aa406ad, 0x40404a10, 0x00000e80, 0x00000000, 0x0025a018, 0x02460095,
-0x27422954, 0x74029508, 0x54085002, 0x009d1025, 0x09510274, 0x94023440,
-0xd0026400, 0x012d420b, 0x02e400bd, 0x60408b10, 0x00000620, 0x00000000,
-0x01652005, 0x0a440095, 0x27440930, 0x74009d00, 0x4009d102, 0x009d2224,
-0x09d0864d, 0x890826c0, 0xf04a7c03, 0x0027c039, 0x026d1b9e, 0x14d01934,
-0x00000e20, 0x00000000, 0x01258014, 0x025c009b, 0x27c00930, 0x7c009f00,
-0xc0097802, 0x509f0024, 0x09f1267c, 0x9b0067c1, 0xf00e5d03, 0x0067c039,
-0x025c009f, 0x53c019f0, 0x00000600, 0x00000000, 0x00850014, 0x083c0013,
-0x07c00134, 0x4c101101, 0xe801f000, 0x00130004, 0x80b0006d, 0x13004580,
-0x30086c06, 0x200ec002, 0x00cd023f, 0x50d00230, 0x00000420, 0x00000000,
-0x201ca814, 0x05f40771, 0x5f480500, 0xc4007404, 0x64079085, 0x0265201c,
-0x3750017c, 0x71109c48, 0x12017c23, 0x00144205, 0x0144005d, 0x50400554,
-0x00000200, 0x00000000, 0x0236a014, 0x063404d9, 0x73440c10, 0x0402c100,
-0x480cd887, 0x42c12030, 0x2c500334, 0xcc103540, 0x10032402, 0xa832640c,
-0x036420dd, 0x52400c50, 0x00000a00, 0x00000000, 0x00308005, 0xc03401e1,
-0x62440e10, 0x8401e140, 0x408e9043, 0x02250078, 0x4e1027b4, 0x65a90844,
-0x1007f442, 0x00095002, 0x00240029, 0x16400258, 0x00000200, 0x00000000,
-0x40581015, 0x06bc006b, 0x7b407e32, 0x8d01e300, 0x501cf005, 0x01e32578,
-0x1e7017ad, 0xeb416dc6, 0x3005ad01, 0x007ac01c, 0x07ac01ff, 0x56c01c30,
-0x00000040, 0x00000000, 0x9015b010, 0x027c0057, 0x27e56df0, 0x7c201f08,
-0xc02db101, 0x895b01b7, 0x9d77137c, 0xd90277c8, 0xf1817c06, 0x0004c201,
-0x005c001f, 0x41c201f0, 0x00000660, 0x00000000, 0x007f8000, 0x37e4293f,
-0x7d801f70, 0x4d295f00, 0xc03fb007, 0x01db0674, 0x9fb02fec, 0x73087ac0,
-0x30a73503, 0x007ed01f, 0x07fc09f3, 0x00c21f32, 0x00000e00, 0x00000000,
-0x01298835, 0x21fc00e7, 0x13c00eb1, 0x84017d01, 0xc04cf017, 0x8531047a,
-0xca1a9710, 0x29034948, 0x11472c08, 0x02054042, 0x34b40121, 0x545003b0,
-0x00000620, 0x00000000, 0x20190000, 0x13b4402d, 0x29410c11, 0xa414ed80,
-0x420ed010, 0x08a10038, 0x069053a4, 0x61090e40, 0x1201f400, 0x0438400c,
-0x033404e1, 0x00400e90, 0x00000400, 0x00000000, 0x01832804, 0x435680c5,
-0x01401c10, 0x24010c00, 0x440dd100, 0x00011070, 0x00900345, 0x05001300,
-0x10052401, 0x00010060, 0x00340001, 0x10400190, 0x00000c20, 0x00000000,
-0x00a58815, 0x0f74009d, 0x15401f14, 0x6c009f00, 0x440f9202, 0x00e3807c,
-0x0fb003ee, 0xc3005ed2, 0x310f7c31, 0x4034e22d, 0x037c00d1, 0x54c20d92,
-0x00000620, 0x00000000, 0x98810001, 0x217c009f, 0x26c00df8, 0x5c009f00,
-0xc80d7088, 0x009f0037, 0x0470035c, 0x5b0204c4, 0xfc037d00, 0x0005c001,
-0x007c001f, 0x07c001f1, 0x00000c00, 0x00000000, 0x002f0880, 0x03fc293b,
-0x1fc80ff0, 0xfc89f320, 0xd20ff023, 0x00ff003c, 0x19b0c3ec, 0xf3000fc0,
-0xf041cc00, 0x003ec00e, 0x03cc00f0, 0x01c00f35, 0x00000c22, 0x00000000,
-0x12442081, 0x07740113, 0xa7400df0, 0x74801100, 0xc40d1199, 0x22dd0036,
-0x31100344, 0xd1001041, 0xd001ec80, 0x08084803, 0x80c42031, 0x044003b0,
-0x00000802, 0x00000000, 0x8434a001, 0x13740011, 0x91680d50, 0x34001500,
-0x400d1002, 0xd0550034, 0x4d150356, 0x55081440, 0xd0034400, 0x0035400d,
-0x030400c5, 0x05480d10, 0x00000200, 0x00000000, 0x00002010, 0x012400c9,
-0x12400c90, 0x34000142, 0x462c5600, 0xa4090430, 0x00101304, 0x11100448,
-0xd0432720, 0x40057020, 0x40051005, 0x40400098, 0x00000080, 0x00000000,
-0x4036b000, 0x0374201b, 0x05c00f70, 0x7c01d700, 0x482f301e, 0x091e21fc,
-0x01300fbd, 0x616345d0, 0xf02d4c00, 0x22b5c22d, 0x0f4c0bd7, 0x01800d39,
-0x00000ac0, 0x00000000, 0x800fb005, 0x03fc00f7, 0x4fc00f70, 0xfc083f01,
-0xc05e9074, 0x8d3e257b, 0x0ff0774c, 0x3d00d5c0, 0xf015dc00, 0x014ec013,
-0x547c851b, 0x97c003f0, 0x00000e60, 0x00000000, 0x050f8003, 0x02dc0033,
-0x1b800bf0, 0xac007300, 0xc0029100, 0x0073400c, 0x0e3023fc, 0xe3030fc0,
-0x3002ec08, 0x000cc007, 0x02fc006b, 0x0ed00a37, 0x00000680, 0x00000000,
-0x20070801, 0x036c6013, 0x17420b34, 0x54004101, 0x400d1003, 0x00d50084,
-0x0db083e4, 0xd9030740, 0x5002ec00, 0x04346105, 0x43741091, 0x04400d30,
-0x00000c20, 0x00000000, 0x0003a011, 0x021600c9, 0x13440855, 0x04004104,
-0x40009000, 0x00412203, 0x0c511334, 0xc9010342, 0x18020484, 0x11054044,
-0x12140401, 0x44400950, 0x00000c80, 0x00000000, 0x0031a803, 0x0b6448d9,
-0x164019d1, 0x50004410, 0x200d1003, 0x24d10405, 0x0d920374, 0xd9006740,
-0x520e6403, 0x08354004, 0x027430d1, 0x0c408d51, 0x00000620, 0x00000000,
-0x0a07a802, 0x015d031b, 0x07c01975, 0xcc047240, 0xc003b000, 0x001102b1,
-0x0d70837c, 0xd34067c0, 0x300f4c00, 0x00054005, 0x061c005b, 0x0ac13170,
-0x00000e20, 0x00000000, 0x002d8007, 0x83bd0067, 0x5fc40b30, 0xfc407b02,
-0xf00f7203, 0x01bf045e, 0x2ff003ac, 0xe3102bc4, 0xf003bc00, 0x483ef807,
-0x267c00bf, 0x1fc81730, 0x00000600, 0x00000000, 0x00550802, 0x196c009f,
-0x17040934, 0x5c305301, 0xc1007014, 0x001b40a4, 0x8d30235c, 0xdf2224c9,
-0xf00a6c00, 0x4004d005, 0x024c0213, 0x08c02130, 0x00000420, 0x00000000,
-0x0034a013, 0x0b4413dd, 0xd7442900, 0x6c025100, 0x405d1083, 0x139b04ce,
-0x0d5107f4, 0xfc02a440, 0xd0024400, 0x02704005, 0x224512d1, 0x4c401450,
-0x00000200, 0x00000000, 0x0002a007, 0x0a24138d, 0x97430000, 0x5400c508,
-0x40301008, 0x07c52001, 0x08100714, 0x0d004040, 0xd04a3400, 0x8083000c,
-0x020411c5, 0x1c409cd0, 0x00000a00, 0x00000000, 0x18588004, 0x27a4098d,
-0x5b401a19, 0xa401e501, 0x401e1087, 0x81ec0069, 0x1e502734, 0xfd024840,
-0xd0068401, 0x0479401f, 0x2784ad31, 0x10400fd2, 0x00000200, 0x00000000,
-0x00001012, 0x226c08cf, 0x13c08816, 0x1c00c70c, 0xc0007000, 0x00c74015,
-0x4c31031c, 0x0f0210c0, 0xd0033c04, 0x0307e04c, 0x230c0c83, 0x48c084a0,
-0x00000040, 0x00000000, 0x00bdb802, 0x23dc88fe, 0x1fc00bb0, 0xec08fb41,
-0xc08ff003, 0x40dba636, 0x0ff003fc, 0xff023fd4, 0xf003fc00, 0x023ec00e,
-0x23fc2d7f, 0x0bc04730, 0x00000660, 0x00000000, 0x0097a815, 0x034c009f,
-0x17481970, 0x6c00d605, 0xc811f004, 0x00d71034, 0x6d701b48, 0xd70025c0,
-0xb0130c01, 0x0004d00d, 0x034c00df, 0x57c40530, 0x00000e00, 0x00000000,
-0x00399812, 0x032c00ad, 0x1f488e10, 0x8400e100, 0x840fd003, 0x00bb417e,
-0x8eb04b2c, 0xf6002b40, 0x1143ac04, 0x0038400e, 0x0385002d, 0x4b480612,
-0x00000620, 0x00000000, 0x00d90003, 0x078401ed, 0xda400ed8, 0x8601e510,
-0x4012d000, 0x41e5107a, 0x1e121784, 0xec00e949, 0x9007d408, 0x0048401e,
-0x070641ad, 0x0f401610, 0x00000400, 0x00000000, 0x00f32012, 0x032400dd,
-0x5344cc14, 0x0400c500, 0x480cd003, 0x81890336, 0x0c900364, 0xc1007340,
-0x10452400, 0x0030400c, 0x0705004d, 0x4b400410, 0x00000c20, 0x00000000,
-0x0015a017, 0x61cc007d, 0x52c027f4, 0x6d005700, 0xc005f001, 0x0177005e,
-0x15720144, 0x6f009dc8, 0xb041dc00, 0x0014c005, 0x014d005f, 0x5fc02734,
-0x00000620, 0x00000000, 0x20070012, 0x087c0a1f, 0x07c001f4, 0xfc001a00,
-0xc023f800, 0x081f0007, 0x01f0007c, 0x140407c0, 0x70087801, 0x000fc001,
-0x287c003f, 0x4bc011b0, 0x00000c00, 0x00000000, 0x04370010, 0x260c4197,
-0x74c00830, 0x14049361, 0xc8096002, 0x059b00e7, 0x4d30026c, 0x93202348,
-0x30020000, 0x5024d409, 0x020c0093, 0x43c00930, 0x00000c20, 0x00000000,
-0x00a62001, 0x4644029d, 0xe4400915, 0x54809180, 0x412910a6, 0x008141e7,
-0x79b00244, 0x95002760, 0x100a4400, 0x20204009, 0x0a6c0081, 0x07408910,
-0x00000800, 0x00000000, 0x00a4a018, 0x02450add, 0x24410d14, 0xd400810c,
-0x480b1002, 0x40d91027, 0x09120264, 0x91822760, 0x10024400, 0x002d400c,
-0xa24400b1, 0x63400910, 0x00000200, 0x00000000, 0x02202010, 0x2204088d,
-0x24400810, 0x94088102, 0x402a1022, 0x02901523, 0x08902204, 0x95192340,
-0x10821400, 0x00ad4028, 0x0a2402b1, 0x43480810, 0x00000080, 0x00000000,
-0x0586b01d, 0x584c160f, 0x84c94130, 0x5c164100, 0xc1433258, 0x001a0107,
-0x0130086c, 0x130ac340, 0x34514c0a, 0x0005c000, 0x014c8023, 0x77c00134,
-0x00000ac0, 0x00000000, 0x2137b819, 0x12fc44bf, 0x27c80bf4, 0x7c049f21,
-0xc009b012, 0x00bf052f, 0x09d01a58, 0xbf027fc2, 0xf102ec23, 0x20268809,
-0x0add209f, 0x67c00bf0, 0x00000e60, 0x00000000, 0x012fa818, 0x32cc0cb3,
-0x2f404930, 0xcc03bf00, 0xc019300e, 0x00bb222f, 0x0b30dac4, 0xdf01a4c0,
-0x7012c806, 0x4026c029, 0x52cd0093, 0x60c00b70, 0x00000e00, 0x00000000,
-0x4507081c, 0x38040e1b, 0x0742a114, 0x440a0d05, 0x48015038, 0x14110287,
-0x01b0086c, 0x13008444, 0x11086806, 0x01474011, 0x18440121, 0x71000170,
-0x00000c20, 0x00000000, 0x0323a010, 0x02240081, 0x23480811, 0x20048d00,
-0x01289002, 0x00890123, 0x08109204, 0x8d01a144, 0x500e1082, 0x042f4048,
-0xc20494a1, 0x404009d0, 0x00000e80, 0x00000000, 0x0225a818, 0x02655091,
-0x67600914, 0x64009d00, 0x40091202, 0x00910027, 0x09900264, 0x91012450,
-0x10026400, 0x802f4009, 0x024400b1, 0x61400950, 0x00000620, 0x00000000,
-0x00e78005, 0x02640191, 0x674b0930, 0x6d009f08, 0xc0093002, 0x009b4067,
-0x0830024c, 0x9f0065c0, 0x720a1c00, 0x0023c009, 0x264c4193, 0x14c04878,
-0x00000e20, 0x00000000, 0x04258014, 0x025c149f, 0x27c14df0, 0x1c409f00,
-0xc50df602, 0x109f0163, 0x89f0022c, 0x852077c2, 0xf00e7c00, 0x0027c009,
-0x067c049f, 0x53c00970, 0x00000600, 0x00000000, 0x00010014, 0x404c2217,
-0x07c021f4, 0x4c0c0f02, 0xc401f040, 0x001f0004, 0x4171004c, 0x1b0084c0,
-0x70807c00, 0x480fc001, 0x804c8033, 0x53c02130, 0x00000420, 0x00000000,
-0x089ca014, 0x01c4037d, 0x5dc00510, 0xd4007d10, 0x4005d019, 0xa171041d,
-0x1711056c, 0x51005400, 0x1005f400, 0x10174205, 0x05d40051, 0x53400510,
-0x00000200, 0x00000000, 0x02f2a014, 0x0744099d, 0x63022cd4, 0x0400cd00,
-0x502cd003, 0x83d51060, 0x38508204, 0xc8007000, 0x50253440, 0x0031400c,
-0x4f1400d9, 0x53400c54, 0x00000a00, 0x00000000, 0x18388005, 0x0984006d,
-0x39400e10, 0x94816d02, 0x409cd801, 0x0a711039, 0x2b100ba4, 0xe100d060,
-0x1001b40c, 0x100b480e, 0x47940029, 0x17400a10, 0x00000200, 0x00000000,
-0x00781015, 0x878c018f, 0x7b4016f0, 0x8c206f10, 0xc71ef007, 0x05ef007c,
-0x1a7006cc, 0xeb0078c0, 0x70053c15, 0x007dc01e, 0x04dd01eb, 0x57c01a70,
-0x00000040, 0x00000000, 0x0035b010, 0x1b7d127f, 0x574145f5, 0x7c105f00,
-0xc045d001, 0x004f0016, 0x0cd0837c, 0xdf0197d4, 0xf0036c06, 0x100fc00d,
-0x006c0037, 0x43c009f0, 0x00000660, 0x00000000, 0x004fa800, 0x2fde01b3,
-0x7ec4cfb1, 0xdc017f00, 0xc01f3007, 0x0163006d, 0x1af006e8, 0xff00fcc0,
-0x3005dc01, 0x427f401f, 0x07cc8df3, 0x00c01f30, 0x00000e00, 0x00000000,
-0x028d8015, 0x3384006b, 0x38400eb0, 0x94826900, 0xd10eb043, 0x006b0028,
-0x8af00394, 0xeb191844, 0xb0018400, 0x470b600e, 0x03c55c31, 0x56c00a30,
-0x00000620, 0x00000000, 0x00090000, 0x43340021, 0x38400412, 0x34082d00,
-0x408e9023, 0x0821002e, 0x0ad00284, 0xe50c3b41, 0x10019400, 0x2039400e,
-0x41840ce9, 0x00400b90, 0x00000400, 0x00000000, 0x00c30804, 0x0f240001,
-0x10404494, 0x34001980, 0x4234980b, 0x05090080, 0x1c428314, 0xc000d240,
-0x900b0403, 0x2483400c, 0x05041219, 0x12401818, 0x00000c20, 0x00000000,
-0x44358015, 0x0f580091, 0x38803110, 0x7c001f04, 0xc4bfb007, 0x45f302a3,
-0x09d00344, 0xf502f7c8, 0x34091c06, 0x00f5c005, 0x034c03db, 0x54c04cb4,
-0x00000620, 0x00000000, 0x04270001, 0x035c280f, 0x15c019f0, 0x1c021b00,
-0xc828f0c2, 0x001f0037, 0x09f0031c, 0xdf1005d0, 0xf0037c10, 0x080fc007,
-0x037c0037, 0x07c009f0, 0x00000c00, 0x00000000, 0x001f0080, 0x42ec00bf,
-0x7ed01330, 0xcc003300, 0xc81d3103, 0x03f2103c, 0x1b318bec, 0xe3006fc0,
-0x344d4e80, 0x003fc207, 0x058c00f3, 0x00c00b30, 0x00000c22, 0x00000000,
-0x00c62081, 0x460c111d, 0x1444003b, 0x6c031b04, 0x4001b00f, 0x010f0014,
-0x45b00744, 0xdb400700, 0xb40b5480, 0x000e4027, 0x85440031, 0x07c009b0,
-0x00000802, 0x00000000, 0x12348001, 0x0744219d, 0x34404910, 0x44411521,
-0x40651047, 0x00550024, 0x49500364, 0xd1023300, 0x50086480, 0x08314425,
-0x1b4400d5, 0x04400d10, 0x00000200, 0x00000000, 0x00202010, 0x0306000d,
-0x12401892, 0x24000d00, 0x40001c03, 0x00051024, 0x08910204, 0xc1000340,
-0xd0023400, 0x60024004, 0x01050001, 0x43400890, 0x00000080, 0x00000000,
-0x0016a000, 0x03cc00ad, 0x34c00114, 0x4c002540, 0xd0051003, 0x00151024,
-0x0970036c, 0xe10033c0, 0x74006400, 0x0033c205, 0x014c00d7, 0x00c00930,
-0x00000ac0, 0x00000000, 0x000f9805, 0x03e0003f, 0x1dd20350, 0xfc003b00,
-0xc003e103, 0x003f000b, 0x0bf802fc, 0xff101fc0, 0xb102dc00, 0x000fc007,
-0x81fc803f, 0x15c00af0, 0x00000e60, 0x00000000, 0x048fa803, 0x30ec00b2,
-0x3dc08370, 0x7c601300, 0xc00ef053, 0x04df083c, 0x43600bfc, 0x2c301fc0,
-0x74135e44, 0x013cc02f, 0x00cc14f3, 0x0e820f30, 0x00000e00, 0x00000000,
-0x00971005, 0x084c029b, 0x36484118, 0xf4001100, 0x400dd00b, 0x02f12c34,
-0x6d110bc5, 0x1d141749, 0x1023dc02, 0x20bd406f, 0x200102f3, 0x0c410ff0,
-0x00000c20, 0x00000000, 0x9103a011, 0x08240215, 0x22480510, 0x14544500,
-0x481d9003, 0x08c52075, 0x20501b04, 0x01311340, 0x10032002, 0x0232402c,
-0x503400c5, 0x4f400c50, 0x00000e80, 0x00000000, 0x81958007, 0x04540015,
-0x36400554, 0x74001500, 0x401dd003, 0x00d12075, 0x0d110344, 0x99005740,
-0x50835404, 0x0035400d, 0x107040d1, 0x0c400d50, 0x00000620, 0x00000000,
-0x4027a800, 0x406cc095, 0xb4d00911, 0x58a41444, 0xc00d8003, 0x00df0035,
-0x09710368, 0x9a0917c4, 0x71034c40, 0x4034800d, 0x187d00d7, 0x0ac00d50,
-0x00000e22, 0x00000000, 0x103d8087, 0x01cc09bb, 0x3dc40bb0, 0xf8141b01,
-0xd00fd803, 0x10ff003e, 0x4ff0037c, 0xef003f84, 0xb003bc21, 0x0037c80f,
-0x808c00f7, 0x3fc00ff0, 0x00000600, 0x00000000, 0x00210802, 0x085c401b,
-0x37c089f1, 0x7c021300, 0xc90d3043, 0x00db4036, 0x09f1033c, 0x1f0097c0,
-0x32137c40, 0x0036c80c, 0x495c20d3, 0x0bc80d34, 0x00000420, 0x00000000,
-0x0134a013, 0x03c411a1, 0x64400ed0, 0xc4027320, 0x420c1017, 0x03ef2030,
-0x0d1003d4, 0xfd003740, 0x104bc40a, 0x00ba420f, 0x014400f1, 0x6f408f90,
-0x00000200, 0x00000000, 0x0002a007, 0x01562088, 0x77405090, 0x14030502,
-0x40bcd50f, 0x20c10032, 0x04900314, 0x4921b340, 0x92072700, 0x24f3420c,
-0x2d0000d1, 0x1f600d90, 0x00000a00, 0x00000000, 0x02488804, 0x058441a1,
-0x7a4012d1, 0x940d2d42, 0x401e1087, 0x19e9287a, 0x1e900794, 0x6d005b40,
-0x9017c541, 0x057b429e, 0x058429e9, 0x37441e91, 0x00000200, 0x00000000,
-0x00240012, 0x011c000b, 0x27c005d0, 0x1c1d4700, 0xc00cf017, 0x2dd32036,
-0x14f0233c, 0x4f0373e0, 0xb4172c00, 0x0073c00c, 0x050d05d2, 0x4bc00c20,
-0x00000040, 0x00000000, 0x002da802, 0x01fc0027, 0xadd007f0, 0x0c307308,
-0xc90f3863, 0xc8f7023d, 0x0f300bcc, 0xfe0017c0, 0x70638c08, 0x063cc00c,
-0x016c28d7, 0x0bc10f70, 0x00000660, 0x00000000, 0x1017a011, 0x017c009b,
-0xb64081f0, 0x5c920f00, 0xec5c0103, 0x93df01b5, 0x1df00b60, 0xbf2035c0,
-0x34cb1000, 0x2136c0ad, 0x006c04d9, 0x57402df2, 0x00000e00, 0x00000000,
-0x801d8812, 0x05bc02a0, 0x30404a10, 0xa8a42b00, 0x0cce3033, 0x42ec9538,
-0x0e701384, 0xed813942, 0x50139601, 0x0238408f, 0x00840ec1, 0xcf414ed0,
-0x00000624, 0x00000000, 0x00790083, 0x25240121, 0x6b501250, 0x04256120,
-0x421e1017, 0xa5c90379, 0x1c90a784, 0x3d077a40, 0x1407c403, 0x4979405e,
-0x069481e1, 0x07481ed0, 0x00000400, 0x00000000, 0xd2372812, 0x055440c1,
-0x85413c10, 0x0406c90c, 0x41ac9203, 0x00c904f0, 0x2c500314, 0xdd04b340,
-0x50031410, 0x0031400c, 0x173400c1, 0x4b400cd0, 0x00000c20, 0x00000000,
-0x00dda817, 0x0de05373, 0xd7c07770, 0xc5075101, 0x44231001, 0x005900cd,
-0x0790014c, 0x7f00ce42, 0x31019403, 0x2015c806, 0x11dc005b, 0x5fc004f0,
-0x00000620, 0x00000000, 0x01070012, 0x247c0117, 0x04d00174, 0x3e001f00,
-0xe0213080, 0x001f0207, 0x01f1804c, 0x1f8005c1, 0xb0007c80, 0x20845021,
-0x00488017, 0x4bc001f0, 0x00000c00, 0x00000000, 0x00270810, 0x027c059b,
-0x34c00930, 0x5000d100, 0x4011b002, 0x209d0007, 0x09f0027e, 0x9d300744,
-0x90225405, 0x1025c099, 0x224c0091, 0x40c009f0, 0x00000c20, 0x00000000,
-0x00260005, 0x82740091, 0x24c0a910, 0x7c009100, 0x44015102, 0x00910002,
-0x09d20274, 0x9d080744, 0x100a4f00, 0x01a6c009, 0x46440091, 0x07c02970,
-0x00000800, 0x00000000, 0x4024a01c, 0x02540091, 0x24400c14, 0x44008540,
-0x4061901a, 0x00990007, 0x09d00274, 0x99002740, 0x50025440, 0x00224009,
-0x02448085, 0x604009d1, 0x00000200, 0x00000000, 0x00202010, 0x1a240081,
-0x20600810, 0x34148502, 0x428810a2, 0x02c110a7, 0x88d12234, 0x8d022340,
-0x54227408, 0x02224008, 0x22060285, 0x43508c50, 0x00000080, 0x00000000,
-0x0706b019, 0x105e1413, 0x04c0a430, 0x4c041724, 0x4961b058, 0x541f1507,
-0x61f05874, 0x1d0d87e1, 0xf0595456, 0x0503c1c5, 0x584d1417, 0x74d161f0,
-0x00000ac0, 0x00000000, 0x013f9019, 0x1afc20bf, 0x66106bf0, 0x5c909b00,
-0xc84b7012, 0x209b112e, 0x4bf0127c, 0xaf012fc0, 0xb0124c04, 0x4927c049,
-0x12fc449b, 0x67c049f0, 0x00000e64, 0x00000000, 0x29afa818, 0x627654b3,
-0x2cc14af0, 0xbc02b300, 0xc01bf012, 0x06bf0067, 0x29f01a4c, 0xa7116fc0,
-0x30128c07, 0x052cc02a, 0x12ec0c93, 0x60c04af0, 0x00000e00, 0x00000000,
-0x01870898, 0x10740011, 0x00c32110, 0x74045144, 0x4051d014, 0x041d0503,
-0x81d0103c, 0x110d8740, 0x10744482, 0x04844071, 0x5054020b, 0x72c001f0,
-0x00000c20, 0x00000000, 0x0323a010, 0x123400c1, 0x20644851, 0x34048102,
-0x4328d04a, 0x068d00a3, 0x48d21a14, 0x95232500, 0x10020446, 0x68234029,
-0x1a052881, 0x486028d0, 0x00000e80, 0x00000000, 0x0025a018, 0x02748091,
-0xa0420d10, 0x70019100, 0x4001d000, 0x009d1027, 0x09d00274, 0x91002740,
-0x12004402, 0x00234009, 0x02540091, 0x62400950, 0x00000620, 0x00000000,
-0x40a70005, 0x4a741193, 0x645019f0, 0x74039320, 0x45b1d000, 0x009f06a7,
-0x09f0024c, 0x850063c0, 0x34004500, 0x0025b009, 0x326c0091, 0x14f009d0,
-0x00000e20, 0x00000000, 0x00250010, 0x027c039f, 0xa5c049f0, 0x7c009f00,
-0xc411f000, 0x009f0027, 0x09f0026c, 0x9f026740, 0xf0407810, 0x0024e009,
-0x066c008f, 0x59e009f0, 0x00000600, 0x00000000, 0x00850014, 0x085c0213,
-0x06e04170, 0x4c001300, 0x40613010, 0x20130085, 0x01f0004c, 0x130004c0,
-0x30002408, 0x0006c401, 0x084d0017, 0x50c01070, 0x00000420, 0x00000000,
-0x40540814, 0x01748051, 0x16e037b0, 0xc4027108, 0x40333100, 0x82610017,
-0x0510014c, 0x7d405c40, 0x1004d480, 0x001c45b6, 0x01c40055, 0x50403750,
-0x00000200, 0x00000000, 0x0236a014, 0x03540081, 0x30461910, 0x1606c1a0,
-0x603c1403, 0x04c90031, 0x0c980304, 0xc1027040, 0x112f2602, 0x0031600c,
-0x030600c1, 0x52401c18, 0x00000a00, 0x00000000, 0x80288004, 0x03f400a1,
-0x28410791, 0x94013900, 0x40ae988f, 0x00a9007b, 0xde100784, 0x6d083c40,
-0x90139540, 0x2229400e, 0x07c404e1, 0x16414658, 0x00000200, 0x00000000,
-0x007c1034, 0x179c01a1, 0x78501670, 0x9e41e342, 0xc89e3017, 0x254b4079,
-0x1ff0178c, 0xe30078c0, 0x340fac81, 0x0173c00e, 0x878c8be7, 0x56d01670,
-0x00000040, 0x00000000, 0x0025b010, 0x073c209f, 0xa7c009f1, 0x6f000701,
-0xc26d706b, 0x081700b7, 0x2df0437c, 0x570033e0, 0x70c35e86, 0x0006c01f,
-0x803c04df, 0x41c085f0, 0x00000660, 0x00000000, 0x007fa002, 0x47f801bf,
-0x77d01f38, 0xfc01ff00, 0xc29df007, 0x0df784ff, 0xbdf0477c, 0xf7017dc0,
-0x71076c03, 0x1276c01f, 0x07cc01f6, 0x00c21b30, 0x00000e00, 0x00000000,
-0x00298815, 0x039c00af, 0x68444f18, 0x9c14a900, 0x001e7023, 0x01a1023f,
-0x1cd007b4, 0x6100f040, 0x1017ac82, 0x0067489e, 0x474405c3, 0x56c00210,
-0x00000620, 0x00000000, 0x02390000, 0x23b400ad, 0x38400e10, 0xa440ed20,
-0x41ce9003, 0x2069043b, 0x0e9083a4, 0xa10b3841, 0x12132408, 0x0038400e,
-0x338404ed, 0x00400210, 0x00000400, 0x00000000, 0x00632806, 0x07541285,
-0xe0458c10, 0x14038900, 0x400c5103, 0x00090032, 0x0cd00364, 0x01007440,
-0x14033400, 0x8003400c, 0x000400c1, 0x12000010, 0x00000c20, 0x00000000,
-0x0075a815, 0x1bfc009d, 0xa4501930, 0x2c001f82, 0xc02d9a83, 0x803840bf,
-0x3f9203ec, 0x4126b448, 0x32032c98, 0x002ec00e, 0x074d00ff, 0xd4500b30,
-0x00000620, 0x00000000, 0x02270001, 0x135c019f, 0x34c00df4, 0x5c021b22,
-0xc44df083, 0x02172137, 0x0cf0037c, 0x5f0097d0, 0xf0034c00, 0x00b5c02d,
-0x037c00df, 0x04e020f0, 0x00000c00, 0x00000000, 0x007b0880, 0x036c40ab,
-0x2cc00eb0, 0xfe103302, 0xc00f7007, 0x013d003e, 0x0f3103d4, 0x72207c41,
-0x1113f420, 0x00cc4215, 0x03d400f7, 0x000089f0, 0x00000c22, 0x00000000,
-0x00262081, 0x83440095, 0x35402910, 0x74721110, 0x400cb0a7, 0x120d0035,
-0x0d10036c, 0x5b08d6c0, 0x100f5400, 0x21b44185, 0x004440d7, 0x044201d1,
-0x00000800, 0x00000000, 0x0224a001, 0x03640191, 0x20400d90, 0x76081140,
-0x401d1043, 0x28192034, 0x0d108364, 0xdd022540, 0x508b6600, 0x00214c05,
-0x8344e0c1, 0x054025d0, 0x00000200, 0x00000000, 0x00300010, 0x03040085,
-0x31400410, 0x76000141, 0x405d16a3, 0x000d2031, 0x4c141324, 0x5d130340,
-0x500b1620, 0x11316105, 0x0b1410c1, 0x415004d0, 0x00000080, 0x00000000,
-0x00263000, 0x036c0091, 0x6c4805b0, 0x740a1301, 0xc41d180b, 0x471f003e,
-0x1e1087ec, 0xaf0861e2, 0x741f6c80, 0x0345d051, 0x0f5c0fe7, 0x01e005f2,
-0x00000ac0, 0x00000000, 0x203fb805, 0x03f000f7, 0x3fc00ff0, 0xfc05380a,
-0xc08ff007, 0x9d9f003f, 0x9fc1a3ec, 0x3b01c6c1, 0xb10ffc00, 0x4b7ec001,
-0x346c05d6, 0x16c407f0, 0x00000e60, 0x00000000, 0x020fa003, 0x03bc003b,
-0x2cc083f0, 0xfc003700, 0xc647f803, 0x00fb003f, 0xcf300bcd, 0xb7000ed2,
-0xf0008e00, 0x000fc00b, 0x00ccc033, 0x0fc06f30, 0x00000e00, 0x00000000,
-0x80071801, 0x53740811, 0x90404570, 0x74801300, 0x0025d083, 0x62d103b3,
-0xed900b44, 0x81002c40, 0xd0285400, 0x30344009, 0x81c420d1, 0x0f402d30,
-0x00000c20, 0x00000000, 0x2023a011, 0x83140001, 0x224800d0, 0x34000902,
-0x40245082, 0x22090433, 0x4c921804, 0x85202660, 0x50810600, 0x20354008,
-0x02248005, 0x4f40cc90, 0x00000e80, 0x00000000, 0x08b5a003, 0x03740211,
-0x16402450, 0x74061900, 0x4025d003, 0x00191437, 0x8d900144, 0xd1082460,
-0xd0015481, 0x0034400d, 0x476500d5, 0x1f421d10, 0x00000620, 0x00000000,
-0x40c7a886, 0x037c0011, 0xe6d029f0, 0x7c021b02, 0xc021f001, 0x10db8887,
-0x0d300b4d, 0x970246c8, 0xf0094401, 0x0435801d, 0x056c00d7, 0x23e009a4,
-0x00000e22, 0x00000000, 0x81498007, 0x03fc0077, 0x1dc00bf0, 0xfc003340,
-0x8007f003, 0x00e7400f, 0x0f6003bc, 0xef002fc0, 0xf001fc00, 0x083dc02f,
-0x01d800eb, 0x0fc20bf0, 0x00000602, 0x00000000, 0x01250802, 0x027c0a5f,
-0x23c08d30, 0x7c001700, 0xc025f003, 0x42570091, 0x0c34085c, 0x9f0425c0,
-0x308b6c02, 0x0136c009, 0x0b7c80df, 0x2bc00934, 0x00000420, 0x00000000,
-0x0034a013, 0x02764057, 0x17400d12, 0x74001502, 0xc727d007, 0x00510456,
-0x0d104144, 0xdf0020d0, 0x1483cc0b, 0x0130405c, 0x2f7402dd, 0x4f000914,
-0x00000200, 0x00000000, 0x00922003, 0x2724000d, 0xa3420092, 0x34100408,
-0x4054d003, 0xa0c1c031, 0x00101717, 0x8d028241, 0x10002408, 0x08c34018,
-0x27740e0c, 0x1f420858, 0x00000a00, 0x00000000, 0x004a0800, 0x07f40125,
-0x6b401690, 0xb4012504, 0x4016d007, 0x21c18178, 0x94100704, 0xad006842,
-0x1000e481, 0x1059441a, 0x27b4a9e9, 0x3f403a50, 0x00000200, 0x00000000,
-0x02121016, 0x0334080f, 0xa3c00834, 0x34880700, 0x6404d0c2, 0x00871031,
-0x20300a1c, 0xcf0021d0, 0x34292c02, 0x0013c00c, 0x017c080f, 0x4bc00870,
-0x00000040, 0x00000000, 0x101d8802, 0x23fc2837, 0x3fc80f70, 0xfc203f00,
-0xc006f003, 0x00bf013f, 0x35f0237c, 0xf7022fc0, 0xf011dc40, 0x001ec00e,
-0x01fc08ff, 0x1bc00bb0, 0x00000660, 0x00000000, 0x0037a010, 0x075c021f,
-0x27c00130, 0x7c809720, 0xc001b885, 0x00d30027, 0x2935036c, 0xd70110c0,
-0x3405cc00, 0x0017c01d, 0xcb4c00df, 0x47c40d34, 0x00000e00, 0x00000000,
-0x00299912, 0x039c10ed, 0x0f480210, 0xf400a100, 0x40461003, 0x00e11023,
-0x0c100384, 0xf1043850, 0x1019ec00, 0x001b400e, 0x038400ed, 0x4f400ef0,
-0x00000624, 0x00000000, 0x00790004, 0x06b483ed, 0x6b403e58, 0xb401ad00,
-0x40969007, 0x01c1007b, 0x1a900624, 0x64007c50, 0x12078601, 0x005b400e,
-0x070400ed, 0x07401e90, 0x00000402, 0x00000000, 0x00330012, 0x021450cd,
-0x33400c50, 0x3400c901, 0x448c1007, 0x08d100f3, 0x2c820304, 0x41003040,
-0x10812407, 0x0053400c, 0x03041acd, 0x4b400cd4, 0x00000c20, 0x00000000,
-0x009f8817, 0x155c015f, 0x1fc03756, 0xfc077f00, 0xc036b16d, 0x01514617,
-0x04b0016c, 0x77011cc0, 0x3049cc05, 0x00dfc115, 0xc98c037f, 0x5fc005b8,
-0x00000620, 0x00000000, 0x24058012, 0x005c020f, 0x87c901b0, 0x7c831700,
-0xc011f000, 0x001f2007, 0x0170003d, 0x1f0007c9, 0xf2847c00, 0x0247c001,
-0x407c000f, 0x4bc021f0, 0x00000c00, 0x00000000, 0x00e50810, 0x065c89d3,
-0x20c018f0, 0x7c019300, 0xe049f002, 0x00930260, 0x5935024c, 0x8b0021d0,
-0xf0024c04, 0x00e44008, 0x0a4c429f, 0x40c018b8, 0x00000c20, 0x00000000,
-0x00262001, 0x266c1391, 0x24400970, 0x74329501, 0xc009d006, 0x00910026,
-0x19500a54, 0x91002540, 0xd0027c72, 0x00246009, 0x0244009d, 0x06c42912,
-0x00000800, 0x00000000, 0x0020a01c, 0x02440099, 0x244089c0, 0x74089180,
-0x4009d006, 0x00b10025, 0x0b1006c4, 0x99002748, 0xd0024400, 0x20274009,
-0x0244029d, 0x60446990, 0x00000200, 0x00000000, 0x42302814, 0x22254089,
-0x205088d0, 0x342085c2, 0x4149d022, 0x16a1472b, 0xce105394, 0x89002341,
-0xd00a1408, 0x20a04008, 0x0a45028d, 0x42408804, 0x00000080, 0x00000000,
-0x0586b01d, 0x0814141b, 0x84c161f0, 0x7c001305, 0x4041f108, 0x04130185,
-0x6322104c, 0x1b2817c0, 0xf0d04416, 0x2805c001, 0x004c800f, 0x74c161b5,
-0x00000ac0, 0x00000000, 0x112fa919, 0x12dc0097, 0x2fc04b70, 0xfc00bf09,
-0xc00bf012, 0x809f0126, 0x49f0527c, 0xb700adc4, 0xf002fc24, 0x002ec02b,
-0x0afc22bf, 0x67c04bf4, 0x00000e64, 0x00000000, 0x062fa818, 0x227c00b7,
-0xa7c809f0, 0xfc00b305, 0xc00af00a, 0x18970227, 0x4b3052cc, 0xbb002ce1,
-0x7012e810, 0x0820c34b, 0x12cc00af, 0x64c06f30, 0x00000e00, 0x00000000,
-0x8087081c, 0x00740a11, 0x8741e1d0, 0x74001b01, 0x40a5d010, 0x82050387,
-0x21301854, 0x1b028464, 0x10086c00, 0x10044021, 0x08044017, 0x72c00110,
-0x00000c22, 0x00000000, 0x01210012, 0x1236018d, 0x234008d0, 0x34008981,
-0x4008d002, 0x848d0023, 0x0814c214, 0x81002061, 0x508a0410, 0x0d214008,
-0x0a24148d, 0x48422810, 0x00000e80, 0x00000000, 0x00e52818, 0x02760199,
-0x270229d0, 0x74019901, 0x4009d022, 0x008d4127, 0x09110254, 0xd8002442,
-0x10426402, 0x0d255a09, 0x02240095, 0x62400d10, 0x00000620, 0x00000000,
-0x0027a005, 0x2274039d, 0xa7c019f0, 0x74019b01, 0xc029f01a, 0x1b9d0027,
-0x08326e5c, 0x9304a010, 0x700a4c23, 0x0065c009, 0x1269009f, 0x14c00934,
-0x00000e20, 0x00000000, 0x00258012, 0x037c0097, 0x37c05df1, 0x7c009f00,
-0xc099f002, 0x00970037, 0x0970027c, 0x8f0027c0, 0xf0963c04, 0x0076c039,
-0x025c109f, 0x5bc208f8, 0x00000600, 0x00000000, 0x0e010010, 0x207c0417,
-0x01c001f0, 0x7c001308, 0xc441f008, 0x20130000, 0x1130004c, 0x130006c8,
-0x30a04c00, 0x2004c001, 0x084c0003, 0x50c01130, 0x00000420, 0x00000000,
-0x001ca014, 0x0174127d, 0x154815d0, 0x74117502, 0x60079015, 0x00510414,
-0x271001d4, 0x77001d40, 0x10016c22, 0x04140314, 0x15ec0275, 0x51402710,
-0x00000200, 0x00000000, 0x0032a014, 0x0724018d, 0xb14004d0, 0x3411c900,
-0x482cd203, 0x00c14050, 0x18140746, 0x85207150, 0x10070485, 0x2030401c,
-0x07150241, 0x50480c10, 0x00000a00, 0x00000000, 0x00388001, 0x03b480ad,
-0x184436d0, 0xb440ed04, 0x401e9203, 0x0ce10010, 0x68110994, 0x65041940,
-0x1a03a402, 0x004c140e, 0x83b51065, 0x15400410, 0x00000200, 0x00000000,
-0x00781011, 0x07bc81af, 0x5dc114f2, 0xbc01eb42, 0x401ed207, 0x21e30058,
-0x7e34040c, 0xb7007140, 0x3807cc49, 0x2268801e, 0x079d11e3, 0x54c01234,
-0x00000040, 0x00000000, 0x0035b810, 0x4a7c409f, 0x17c065f0, 0x7800d711,
-0xd009b003, 0x14df0187, 0x0df0007c, 0x9f0035c0, 0xf4037c84, 0x0007c00c,
-0x036d04df, 0x43c001f0, 0x00000660, 0x00000000, 0x027da800, 0x27cc09b3,
-0x6fc01730, 0x8c09e324, 0xc61f3027, 0x01f300dd, 0x1f3007cc, 0xf7007ec0,
-0x30078c01, 0x007dc0de, 0x12cc04ff, 0x08c41f30, 0x00000e00, 0x00000000,
-0x041d1815, 0x03ac08a3, 0x0f4006b0, 0x84406704, 0x41063003, 0x28f1001a,
-0x0f1800ac, 0xfb081941, 0x10139400, 0x001840ce, 0x828404bd, 0x554007b0,
-0x00000620, 0x00000000, 0x10290000, 0x03843029, 0x0b400218, 0xc480f100,
-0x402e1103, 0x00e9421b, 0x0e1400a4, 0xe5003340, 0x1203e410, 0x002960ce,
-0x021442ed, 0x21408a90, 0x00000400, 0x00000000, 0x00412004, 0x03240109,
-0xc3448091, 0x0600c504, 0x4010103b, 0x00c91002, 0x1c022424, 0x89003140,
-0x90032420, 0x2491400c, 0x0214008d, 0x19400010, 0x00000c20, 0x00000000,
-0x00752015, 0x024c0191, 0xbfc0053a, 0x4d01d300, 0xc41d300f, 0x00f90015,
-0x17120364, 0x550032c0, 0x34a36c01, 0x0035c00d, 0x025c035f, 0x75c00190,
-0x00000620, 0x00000000, 0x00b70001, 0x027c0697, 0x87c001f0, 0x7c01d700,
-0xc00d7083, 0x00c70011, 0x05f0837c, 0x5f0107c0, 0x70035c02, 0x10564219,
-0x856c81dd, 0x074029f0, 0x00000c00, 0x00000000, 0x801d0084, 0x23fc03bf,
-0xdfc05730, 0xfc00ff08, 0xc00df803, 0x20f34017, 0x5e40000c, 0x63009dd0,
-0xe00bcc00, 0x082dc01f, 0x078c00a3, 0x04d00380, 0x00000c20, 0x00000000,
-0x04960085, 0x8264859d, 0x85c01140, 0x5e08dd00, 0x44097002, 0x00d90006,
-0x0df00444, 0x1b0447c0, 0xd0074401, 0x1a164419, 0x0444419b, 0x24402054,
-0x00000800, 0x00000000, 0x0034a001, 0x0224009d, 0x87400500, 0x6400dd28,
-0x400dd007, 0x00d90107, 0x05500e45, 0xd1002741, 0xd0024401, 0x0033484d,
-0x1a6403d1, 0x04408158, 0x00000200, 0x00000000, 0x88102810, 0x0224408d,
-0x00420014, 0x14804900, 0x40045003, 0x00c90003, 0x04140204, 0xc9000250,
-0xd0020400, 0x2002400c, 0x01258089, 0x40400854, 0x00000080, 0x00000000,
-0x0006b000, 0x032c00dd, 0x07c00131, 0x74009d00, 0xc00dd003, 0x00f31007,
-0x0552004c, 0xf38005c8, 0xf0024c00, 0x2025c00d, 0x036c80f3, 0x04c00174,
-0x00000ac0, 0x00000000, 0x000f8805, 0x03ec00af, 0x0dc403f0, 0xfc00bf10,
-0xc0037003, 0x00f3100e, 0x0ff880fe, 0xbf000dc0, 0xf002fc00, 0x000fc00f,
-0x00dc00bf, 0x17c80b70, 0x00000e60, 0x00000000, 0x023f8003, 0x03ac00ff,
-0x34c40fb0, 0xfc08f300, 0xc00c300b, 0x42eb003c, 0x0f700b7c, 0xf3003ed0,
-0xf0237000, 0x00bfc02f, 0x73cc00fb, 0x0cd003b0, 0x00000e00, 0x00000000,
-0x00071801, 0x004c201d, 0x06c80112, 0x34001b01, 0x44415000, 0x00150105,
-0x01700074, 0x1520044c, 0xd0007484, 0x01074201, 0x0bc40011, 0x04420110,
-0x00000c60, 0x00000000, 0x1133a011, 0x030414cd, 0x30420410, 0x3404c504,
-0x430c1013, 0x04410411, 0x04509334, 0x41083040, 0xd0012410, 0x00334044,
-0x13241441, 0x444005d0, 0x00000e80, 0x00000000, 0x00858007, 0x8064201d,
-0x04428910, 0x74241541, 0x42215000, 0x00958025, 0x09d01874, 0x95080442,
-0xd0027400, 0x00034049, 0x03250498, 0x0c428154, 0x00000600, 0x00000000,
-0x00afa882, 0x21cc287f, 0x5c501f34, 0xfcd1f500, 0xc02b3021, 0x88f3402d,
-0x0a720ffc, 0xb30a1cc0, 0xf002ec00, 0x24bf401f, 0x834c01fb, 0x08e001f0,
-0x00000e22, 0x00000000, 0x001d8007, 0x869d01ae, 0x27c802f0, 0xb8003b00,
-0xc006c006, 0x0137081f, 0x077284fc, 0x7f106fc0, 0xf001fc00, 0x420f4803,
-0x03dc2037, 0x1fc001a0, 0x00000600, 0x00000000, 0x00a50802, 0x314c0053,
-0x154005f0, 0x4c0ad300, 0xc0093001, 0x00530004, 0x41f0034c, 0x1f0016c0,
-0x30805c00, 0x01b6c005, 0x035c185f, 0x09c481f1, 0x00000420, 0x00000000,
-0x0014a013, 0x0e440191, 0x20600911, 0x6c001b00, 0x40051582, 0x609b0175,
-0x2dc0806d, 0xdd202440, 0xf00b7405, 0x00044209, 0x07c5018d, 0x4c42b620,
-0x00000200, 0x00000000, 0x40122003, 0x8e140085, 0x21440851, 0x24810900,
-0x40045802, 0x80890036, 0x1cd00024, 0xcd002640, 0x104b1401, 0x00006208,
-0x67040389, 0x0d403050, 0x00000800, 0x00000000, 0x0a620804, 0x05840141,
-0x58445412, 0xa609c902, 0x405a1105, 0x2169104a, 0x12d007a4, 0x2d825841,
-0x9014b401, 0x00784016, 0x0784896d, 0x10401214, 0x00000820, 0x00000000,
-0x00121012, 0x021c1087, 0x61500050, 0x2c080301, 0xc4143006, 0x08094016,
-0x45f2140c, 0x4d0062c0, 0x32955c00, 0x0700d051, 0x175c091f, 0x49c00470,
-0x00000840, 0x00000000, 0x002da002, 0x01fc007f, 0x1fc04f70, 0x7428df20,
-0xc00bf011, 0x00df122d, 0x0bf023cc, 0xbf021dc0, 0xf0027c00, 0x023de08f,
-0x23fc01ff, 0x0bc007f0, 0x00000620, 0x00000000, 0x0047a014, 0x004d8117,
-0x06c01934, 0x4c001340, 0xd001b000, 0x209f0024, 0x0932007c, 0x9f0007c0,
-0xd2026d80, 0x00044a19, 0x4b49019f, 0x43404130, 0x00000e00, 0x00000000,
-0x20399932, 0x030400f1, 0x30400610, 0x8400f108, 0x400c1003, 0xc061001c,
-0x061003f0, 0x41003f40, 0xd0018400, 0x00384606, 0x1b84006f, 0x4b40e218,
-0x00000664, 0x00000000, 0x40090000, 0x04a40125, 0x48401010, 0xa4812900,
-0x40121c04, 0x0125004a, 0x12d00496, 0x25104b40, 0xd2848401, 0x20484012,
-0x1704410d, 0x13481650, 0x00000400, 0x00000000, 0x08732036, 0x0b2490c1,
-0xb0420c12, 0x2400d924, 0x401d9203, 0x40c50072, 0x1cd88334, 0xd1003340,
-0xd0070401, 0x0030400c, 0x030420c5, 0x5b400c50, 0x00000c00, 0x00000000,
-0x0017a817, 0x01648057, 0x14d00530, 0x65005b00, 0x4005b009, 0x00570016,
-0x05f0017c, 0x550217c0, 0xf1014ca0, 0x0014c005, 0x0146007d, 0x5fc10570,
-0x00000e20, 0x00000000, 0x220d8012, 0x40dc823f, 0x8dc003f2, 0xdc403700,
-0xc0837a10, 0x0033120d, 0xa31200fc, 0x37000fc4, 0xf020dc08, 0x200ee003,
-0x087c803f, 0x4bc021a0, 0x00000600, 0x00000000, 0x00210810, 0x023c0093,
-0x27e00930, 0x6c019300, 0xc0093202, 0x00830a24, 0x0830020c, 0x930022c0,
-0x30025c00, 0x0867c009, 0x827c009f, 0xc3c10d31, 0x00000420, 0x00000000,
-0x00262001, 0x82748291, 0xe7000910, 0x140f9303, 0xc4091702, 0x009b9025,
-0x2950025c, 0x9d082540, 0xa0024400, 0x00674009, 0x0a740097, 0x05c08900,
-0x00000800, 0x00000000, 0x4024801c, 0x02f402b1, 0x2b400b10, 0xe600b100,
-0x400b1882, 0x20b10028, 0xab1002c4, 0xb9102d40, 0x11029400, 0x022f400b,
-0x421400bd, 0x73440d14, 0x00000200, 0x00000000, 0x00282814, 0x02b408a9,
-0x2b402a10, 0x9408a100, 0x400a1802, 0x88a92229, 0x2a522294, 0xad002940,
-0x80228480, 0x023b408a, 0x0a3409a1, 0x51414c14, 0x000000a0, 0x00000000,
-0x0802b01d, 0x00740213, 0x07400114, 0x2c001342, 0xc2813080, 0x82114004,
-0x0110084e, 0x131007c0, 0x3008540a, 0x0087c020, 0xd07c803f, 0x77c0e120,
-0x00000ac0, 0x00000000, 0x04a7a119, 0x0a7c0697, 0xa7c069f0, 0x7c069f11,
-0xc469f04a, 0x069f00a7, 0x29f01a5c, 0x9784e7c0, 0xf01a7c06, 0x11a7c069,
-0x127c069f, 0x67c049f0, 0x00000e24, 0x00000000, 0x41efa018, 0x16ec05b3,
-0x6dc63930, 0x4c01b301, 0xc0d9301e, 0x0393056c, 0x5900064c, 0xb30167c0,
-0x3016cc05, 0x036cc079, 0x5aec03b3, 0x63c029f1, 0x00000e00, 0x00000000,
-0x0087101c, 0x80440401, 0x05c0e1b0, 0x54821f00, 0x40005008, 0x001b0584,
-0xa110503e, 0x15078740, 0x10004c14, 0x00044001, 0x184c0011, 0x734041f8,
-0x00000c60, 0x00000000, 0x02210812, 0x0a051681, 0xa0400814, 0x05168105,
-0x40681022, 0x86850020, 0x081e0a05, 0x81102340, 0x144a1702, 0x01a07068,
-0x02050681, 0x4b4008d0, 0x00000400, 0x00000000, 0x2025a018, 0x02440091,
-0x264a0990, 0x54009500, 0x40091002, 0x20990024, 0x09100254, 0x95002740,
-0x10025400, 0x00244009, 0x02660091, 0x63401950, 0x00000400, 0x00000000,
-0x00278805, 0x02440093, 0x24c30930, 0x4c009100, 0xc0093002, 0x129504a4,
-0x29300244, 0x930027c1, 0x104a5c12, 0x00244129, 0x024c1293, 0x17c449d2,
-0x00000e20, 0x00000000, 0x40258032, 0x021c008f, 0x25d00970, 0x3c108f00,
-0xd008f402, 0x209f4023, 0x0df2023c, 0x8f0027c1, 0xf0020c00, 0x4023c008,
-0x425c409b, 0x4bc00db0, 0x00000600, 0x00000000, 0x02010810, 0x004c2013,
-0x00c00030, 0x4c001324, 0xc0017000, 0x02030084, 0xa138004e, 0x130000c4,
-0x30084d02, 0x0007c421, 0x007c0603, 0x43c06134, 0x00000420, 0x00000000,
-0x00548014, 0x05c50271, 0xdcc00530, 0xc40071a0, 0x60075001, 0x007f0014,
-0x353801ec, 0x51301c40, 0xb16dec01, 0x201dc005, 0x05f41073, 0x53410530,
-0x00000200, 0x00000000, 0x4032a014, 0x1d0486c9, 0x32500c90, 0x0409414a,
-0x500cde03, 0xc0c14030, 0x3c900304, 0xc1c03050, 0x50032600, 0x0033680c,
-0x0a3400c9, 0x53403090, 0x00000a00, 0x00000000, 0x40308001, 0x408420e9,
-0x30400c12, 0x84006100, 0x408ed033, 0x04e51028, 0x54102380, 0xe1093048,
-0xd2032630, 0x0039408e, 0x47b404e1, 0x07400a12, 0x00000620, 0x00000000,
-0x00780011, 0x058c01eb, 0x4a405e94, 0x0d017100, 0x405ef117, 0x07f10060,
-0x56901784, 0xf10178c4, 0x7207ac81, 0x007fc0de, 0x04fc03eb, 0x47c09e32,
-0x00000040, 0x00000000, 0x08b5a810, 0x003800d3, 0x06c12d60, 0x78005f00,
-0xc02d30db, 0x50df00b7, 0xc1f4137c, 0xdf0237c1, 0xb0037480, 0x0007402d,
-0x036c005f, 0x43c42df5, 0x00000620, 0x00000000, 0x00eda000, 0x04fc01f3,
-0x6cc11f30, 0xcc017f00, 0xc03f3007, 0x09f300fe, 0x11b00fec, 0xbb0275c4,
-0x3113cc25, 0x0374c09f, 0x11cc01bf, 0x03c09b31, 0x00000600, 0x00000000,
-0x06291815, 0x009c00e1, 0x28418f30, 0x144b6004, 0x490f1143, 0x01e50629,
-0x52111394, 0xab067141, 0xb0159404, 0x0479420c, 0x2304000d, 0x57400e10,
-0x00000460, 0x00000000, 0x40690000, 0x00340861, 0x28400e10, 0xa4806502,
-0x408e5803, 0x60e50068, 0x405083a4, 0x81013a40, 0x1213264c, 0x103a480e,
-0x230400ad, 0x03420e90, 0x00000408, 0x00000000, 0x00652004, 0x28148a40,
-0x60401c90, 0x640a4119, 0x404c140b, 0x09c500b0, 0x30102b04, 0x8180f348,
-0x1029300c, 0x008340ac, 0x0346008d, 0x93400c94, 0x00000400, 0x00000000,
-0x40e5a815, 0x007c4a53, 0xd4c03f14, 0xed405500, 0xd03f100f, 0x20f340f4,
-0xb77003ec, 0xd1107ec2, 0x10036c02, 0x0076400f, 0x034d45bd, 0x57c029b1,
-0x00000620, 0x00000000, 0x21270001, 0x403c000f, 0x15c24d70, 0x5c104720,
-0xc00cf013, 0x10db2125, 0x0410433c, 0x9f0431c0, 0xf8431c00, 0x0c31c10c,
-0x826c109f, 0x07c13d70, 0x00000c00, 0x00000000, 0x402f0884, 0x00cc02fb,
-0x6ec00fb0, 0xcc007300, 0x400f3003, 0x00eb402c, 0x133003cc, 0xeb003cc0,
-0x3217ec01, 0x003cc00d, 0x03cc01b3, 0x10c00f30, 0x00000c22, 0x00000000,
-0x02662085, 0x08440391, 0x66420d10, 0x54025b00, 0xc00d9403, 0x00db0037,
-0x85b00344, 0x91003440, 0x90076c01, 0x0006c00d, 0x00450013, 0x15404d10,
-0x00000802, 0x00000000, 0x40348001, 0x18640259, 0x30440c10, 0x46085102,
-0x400d9003, 0x00d90031, 0x21900344, 0x91803440, 0xd0024408, 0x0034600d,
-0x07442481, 0x04481894, 0x00000200, 0x00000000, 0x00302810, 0x02340001,
-0x71500c14, 0x05444102, 0x400c9203, 0x04c91021, 0x40950b05, 0xc1413164,
-0x97402620, 0xd132500c, 0x05042249, 0x41400898, 0x000000a0, 0x00000000,
-0x403ab000, 0x0065005b, 0xa2c00f10, 0xcc01d100, 0x42af300b, 0x01eb0028,
-0x11900bc4, 0x9312f4d0, 0x723e4c00, 0x9174c22f, 0x234c0083, 0x00c00db0,
-0x00000ac0, 0x00000000, 0x003fa025, 0x02cc003f, 0x6ec00f38, 0xbc028f80,
-0xc05f70d7, 0x02df003f, 0x23f087ac, 0xff00fac0, 0x60147c00, 0x020de15f,
-0x07fc05f7, 0x17c20f70, 0x00000e20, 0x00000000, 0x020fb003, 0x59cc08af,
-0x0ec04bf0, 0xec00b343, 0xc402b003, 0x00a7023e, 0x0b300acc, 0xff000ec1,
-0x3002fc04, 0x4008c2cf, 0x33cc0cf3, 0x0cc00b30, 0x00000e00, 0x00000000,
-0x00070003, 0x1344009c, 0x84494930, 0x95025302, 0x420df200, 0x2491203d,
-0x25120344, 0x9d010448, 0x10024440, 0x000440cd, 0x331406c3, 0x0c400950,
-0x00000c20, 0x00000000, 0x0033a013, 0x135444cd, 0x00546c5c, 0x4482dd10,
-0x40005803, 0x30950132, 0x08101304, 0xcd040050, 0x50032482, 0x0003400c,
-0x020408c1, 0x4c501110, 0x00000e80, 0x00000000, 0x0805a803, 0x075400dd,
-0x05500c54, 0x4400d912, 0x420c5240, 0x00d10030, 0x04140344, 0x9d021740,
-0x11037440, 0x0637401d, 0x025400d1, 0x0c401959, 0x00000620, 0x00000000,
-0x0107a880, 0x045d019f, 0x04d09d70, 0x48c2cb00, 0x80055003, 0x00971036,
-0x2d31074c, 0x5f0046c9, 0x54036c06, 0x00a6c00c, 0x23480093, 0x00c00830,
-0x00000e22, 0x00000000, 0x001d8087, 0x02ec05bf, 0x5ec00fb0, 0xdc407300,
-0xc00ff04b, 0x50bf0037, 0x0ff013fc, 0xef804c00, 0xe00bcc05, 0x006cc00f,
-0x07fc40e7, 0x1fc009f0, 0x00000602, 0x00000000, 0x2035080a, 0x035d00df,
-0x15c44ff0, 0x5c02d3c0, 0xc025340b, 0xa0930035, 0x0d20035c, 0x570836c0,
-0xb4037c00, 0x0095c409, 0x034c0093, 0x28c80170, 0x00000420, 0x00000000,
-0x0014a013, 0x030440dd, 0x94402d90, 0x0700f182, 0xc8bdb04b, 0x01c5003e,
-0xafb00d04, 0xf10246c2, 0x10814480, 0x0074404d, 0x034400d5, 0x4ec00b10,
-0x00000200, 0x00000000, 0x0002a007, 0x03240099, 0x456008d0, 0x04008102,
-0x4808d403, 0x02810830, 0x08902714, 0xc5004340, 0x10924700, 0x4017410c,
-0x037400c1, 0x1c4008d0, 0x00000a00, 0x00000000, 0x0468801d, 0x07b441bd,
-0x58419e90, 0x8409f10a, 0x419ed027, 0x01a4007a, 0x1f920f80, 0xe1004a4a,
-0x00278401, 0x005a421e, 0x27b400e5, 0x7e401a93, 0x00000200, 0x00000000,
-0x00300012, 0x0b34088d, 0x15c089f0, 0x0402c102, 0xc008f203, 0x90830130,
-0x0834035c, 0xd70406c0, 0x20435408, 0x2d23c00d, 0x023c88c3, 0x48c048f1,
-0x00000040, 0x00000000, 0x302da802, 0x03cc00bf, 0x1e408fb0, 0xec90ef02,
-0xc20fb28b, 0x00ff003e, 0x0ef0037c, 0xfa001ec0, 0x58035c52, 0x003d400f,
-0x02cc04ff, 0x0bc00b70, 0x00000660, 0x00000000, 0x0007a015, 0x025c00df,
-0x04c14904, 0x5d80c300, 0xc00c709f, 0x21832330, 0x0db0034c, 0xdf0484c4,
-0x32067c00, 0x2034c00d, 0x03cc009b, 0x54c08830, 0x00000e00, 0x00000000,
-0x00398913, 0x02b400e7, 0x1c440c30, 0xc405e102, 0x400e1003, 0x20a10538,
-0x2e1003ec, 0xec000840, 0x1003dc04, 0x003ec00f, 0x03d400e5, 0x4c400e50,
-0x00000624, 0x00000000, 0x00790081, 0x069661ed, 0x5a4d1a90, 0xa605e900,
-0x523f5803, 0x01a1007a, 0x6f900785, 0xec207840, 0x9007b405, 0x1078400e,
-0x06841189, 0x04405b10, 0x00000402, 0x00000000, 0x00332812, 0x033688cd,
-0x12401c10, 0x0540c100, 0x400d183b, 0x00c12034, 0x1d508104, 0xcd005047,
-0x9415340c, 0x00b0401c, 0x061401c5, 0x48408c53, 0x00000c20, 0x00000000,
-0x001da817, 0x41dc015f, 0x16c005b0, 0xdc846b41, 0xc007700d, 0x00730014,
-0x27b005c4, 0x4f00d4c0, 0x9001f400, 0x04580105, 0x4544405b, 0x5cd41610,
-0x00000620, 0x00000000, 0x20070012, 0x007c8017, 0x05d00072, 0x1c001740,
-0xe401f000, 0x401f5807, 0x01b0307c, 0x1f2607c0, 0x70205c00, 0x0107c401,
-0x007d001f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x01270810, 0x027c0093,
-0x34c80d70, 0x4c009700, 0xc0193026, 0x00931024, 0x19b0027a, 0xdf0034e0,
-0xf0024c00, 0x1124c009, 0x023c0083, 0x40d00930, 0x00000c20, 0x00000000,
-0x01e62001, 0x02740091, 0x24400918, 0x4d009b40, 0x5019300e, 0x089b0024,
-0x19100236, 0x9d002454, 0xd1064400, 0x40a5c068, 0x027c0091, 0x04400911,
-0x00000800, 0x00000000, 0x00208018, 0x02140091, 0x20600950, 0x64c095c0,
-0x40ad1002, 0xc0952024, 0x49100274, 0x9d862450, 0xd0064400, 0x44244019,
-0x02440091, 0x60440910, 0x00000200, 0x00000000, 0x62202010, 0x22360081,
-0x20608850, 0x04148982, 0x40881023, 0x088d0120, 0x88100664, 0x9d022040,
-0xd0230434, 0x40a34089, 0x02348081, 0x40408910, 0x00000080, 0x00000000,
-0x0587b01d, 0x581c0011, 0x84d16150, 0x4c841705, 0xc0213058, 0x221702c4,
-0x61342874, 0x1f208441, 0xf2584c8e, 0x0004e961, 0xf85c1e13, 0x74c02130,
-0x00000ac0, 0x00000000, 0x012f9919, 0x12fc14bf, 0x27c049b1, 0xfc00bf41,
-0x644b7012, 0x04bb0267, 0x4a7006fc, 0x9f0127d0, 0xd012f901, 0x00ade04b,
-0x06fc01bf, 0x67c06bfe, 0x00000e64, 0x00000000, 0x2037a018, 0x0a7c8893,
-0xa6816950, 0xd490b701, 0xe08b7092, 0x02a3132c, 0x0a300aec, 0x93002cc1,
-0x7042cc00, 0x04ace06b, 0x524c1293, 0x64c06930, 0x00000e00, 0x00000000,
-0x0287089c, 0x3d344010, 0xccc03110, 0x04025500, 0x40017000, 0x44114904,
-0x2130805c, 0x01080540, 0x10814420, 0x00856461, 0x58542411, 0x72900458,
-0x00000c22, 0x00000000, 0x0523a012, 0x02340481, 0x2a400a11, 0x5400850a,
-0x6048905a, 0x00c100a0, 0x49901334, 0x88252041, 0x50422516, 0x00704028,
-0x02340489, 0x48402810, 0x00000e80, 0x00000000, 0x21258818, 0x02340891,
-0x2c400a10, 0x44089500, 0x02095202, 0x84912024, 0x09101270, 0x88042540,
-0x10822400, 0x00654009, 0x82740099, 0x62480850, 0x00000620, 0x00000000,
-0x44a52805, 0x2a7c0093, 0x66c08934, 0x5c039502, 0x5009b202, 0x81924024,
-0x09b41e74, 0x9b00e0c4, 0x702a6420, 0x08e44009, 0x027c409b, 0x14e42911,
-0x00000e20, 0x00000000, 0x20310016, 0x067e619f, 0x25c019f0, 0x7c008f00,
-0xc0097042, 0x019f2023, 0x09f2065c, 0x970667c0, 0xf0065c00, 0x0027c039,
-0x165c0087, 0x59c009f0, 0x00000600, 0x00000000, 0x88850814, 0x087c001f,
-0x0cd00334, 0x5c001320, 0xc88170a0, 0x011f0007, 0x41f20c52, 0x1f208448,
-0xf0406c00, 0x0004c001, 0x005c001f, 0x50c001b0, 0x00000420, 0x00000000,
-0x81942014, 0x017c005d, 0x15400510, 0x84005300, 0xc217b201, 0x027d0015,
-0x06d009cc, 0x5d005d40, 0xd209c400, 0x001fc116, 0x0144005d, 0x50400510,
-0x00000200, 0x00000000, 0x14328014, 0x032440cd, 0x34600c11, 0x1488c180,
-0x401d580f, 0x00c90823, 0x0cd00354, 0xcd008044, 0xd0072400, 0x0836420c,
-0x035020cd, 0x50400c1a, 0x00000a00, 0x00000000, 0x00388004, 0x039604ed,
-0x09600210, 0x8480c9c0, 0x44029080, 0x09ec212b, 0x06d010a4, 0xed80d848,
-0xd0438400, 0x107b040e, 0x031408ed, 0x14404e10, 0x00000200, 0x00000000,
-0x04581014, 0x07a443ed, 0x7c501f32, 0x9c81e300, 0xc0167405, 0x81ea056b,
-0x1ef01594, 0xef0028c1, 0xf026ac01, 0x083a901e, 0x2f9c35ff, 0x54d15e34,
-0x00000040, 0x00000000, 0x0095b810, 0x037c01df, 0x07d401f1, 0x6c00d740,
-0xc921f001, 0x20df0225, 0x45f1205c, 0xde0037da, 0xd0137c0a, 0x0027c00c,
-0x036c06db, 0x43c0ad70, 0x00000660, 0x00000000, 0x007fa002, 0x07cc21ff,
-0x7fc01f30, 0xfc81bb00, 0xc01f300e, 0x01f7226c, 0x167006ec, 0xfb024cc0,
-0x7004cc03, 0x013ec01e, 0x07cc01f3, 0x08c01ff0, 0x00000e00, 0x00000000,
-0x04298815, 0x038840fc, 0x0b484210, 0x9c04a001, 0x4402f020, 0x00710029,
-0x465000fc, 0xfd040940, 0xb002a408, 0x043ad00e, 0x839408f1, 0x54400fd0,
-0x00000620, 0x00000000, 0x00190000, 0x038408ed, 0x33000e10, 0xb410a924,
-0x40061001, 0x00ed9022, 0x27500084, 0xed001a42, 0x90222510, 0x0030400e,
-0x038400e1, 0x60400ed0, 0x00000400, 0x00000000, 0x00c32806, 0x9f0440cd,
-0x43409010, 0x14008100, 0x48a0d429, 0x01490823, 0x04500014, 0xcd00d340,
-0x824a2427, 0x04a0040c, 0x031408c1, 0x1840bcd0, 0x00000c20, 0x00000000,
-0x0075a815, 0x4d4d00ff, 0x77c00d34, 0x34839b10, 0xc03d3407, 0x10fe002e,
-0x05740ac4, 0xff1012c0, 0x30024d01, 0x0024501d, 0x83cc01f2, 0x74c21fd8,
-0x00000620, 0x00000000, 0x00330001, 0x017c00df, 0x07c000f0, 0x7c009f00,
-0xc041f410, 0xc0d70021, 0x15f00c7c, 0xdf0415e0, 0xb0055c40, 0x0027ca3d,
-0x037c00df, 0x07c90df1, 0x00000c00, 0x00000000, 0x044f0880, 0x01bc00fb,
-0x3cc00f30, 0x7c14a300, 0xd097b000, 0x80fb002c, 0x023040dc, 0xfb100cc4,
-0xf002fc00, 0x0008000e, 0x039c00f3, 0x04c00f30, 0x00000c20, 0x00000000,
-0x03062001, 0x09f400d5, 0x0c500351, 0x54019700, 0x40005004, 0x40cb0024,
-0xb1b22415, 0xd1463441, 0xd00f7400, 0x00c6c015, 0x035480db, 0x04440d50,
-0x00000800, 0x00000000, 0x00168001, 0x097400d1, 0x30400d10, 0x64009140,
-0x400d100e, 0x21d9a024, 0x05104044, 0xd1000750, 0xd20c7400, 0x00f5403d,
-0x035400c9, 0x04420c11, 0x00000200, 0x00000000, 0x00000010, 0x013400c5,
-0x00520050, 0x44008140, 0x40015002, 0x00590020, 0x04100104, 0xc1800748,
-0xd0003400, 0x00334008, 0x031440c8, 0x40400c40, 0x00000080, 0x00000000,
-0x00061000, 0x013c00d3, 0x34c80d14, 0xfc009140, 0xc403b000, 0x00db002c,
-0x03100054, 0xfb0017c0, 0xe002fc00, 0x0015c00d, 0x03dc00fb, 0x04c00f38,
-0x00000ac0, 0x00000000, 0x000fb805, 0x81fc40ff, 0x0fc003f0, 0xfc40be08,
-0xc002f000, 0x003e202f, 0x03f001fc, 0xff001cd2, 0xf202fc00, 0x000ec007,
-0x03fc00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x402f8003, 0x43fc00bb,
-0x3cd08f30, 0xec80f200, 0xc02b9003, 0x20e7213f, 0x0d30038c, 0xff003bc4,
-0xf003dc20, 0x013dc08f, 0x004c081b, 0x0dc80fb0, 0x00000e00, 0x00000000,
-0x04a70001, 0x0bc400db, 0xb4440db0, 0x7420d141, 0x400d0203, 0x00d1023f,
-0x0d900344, 0xfd0d3640, 0xd073ed20, 0x06b4446f, 0x00440411, 0x04410f10,
-0x00000c20, 0x00000000, 0x01b7a011, 0x031400c5, 0xb2505cdc, 0x4400c10c,
-0x4044da07, 0x20d10032, 0x0c508754, 0xcd007140, 0xd0031402, 0x0831482c,
-0x00140089, 0x46404851, 0x00000e80, 0x00000000, 0x0405a803, 0x834401d1,
-0x76401d14, 0x7020d100, 0x491d5007, 0x06d04037, 0xadc00744, 0xd9007742,
-0xd18364a0, 0x0224400d, 0x00550891, 0x0e400910, 0x00000620, 0x00000000,
-0x00a3a802, 0x033c1151, 0x76c001d0, 0x2c02d308, 0xc01db883, 0x82c72033,
-0x1d74031c, 0xdf0037c0, 0xf1035c00, 0x0075ca0d, 0x1154011a, 0x02c009e4,
-0x00000e20, 0x00000000, 0x002d8007, 0x03dc00ef, 0x3dd001f0, 0xfc05ff00,
-0xc00f3003, 0x01ff003f, 0x1f3003cd, 0xff083ec0, 0xf003fc00, 0x0063c00f,
-0x81ac019f, 0x1dd00bf0, 0x00000602, 0x00000000, 0x00f50802, 0x137c04df,
-0x14c008b0, 0x5c12d310, 0xc02df4c3, 0x06d34337, 0x0db0435c, 0xd34037c9,
-0x30035ca8, 0x4034c00d, 0x214d0093, 0x08c00df0, 0x00000420, 0x00000000,
-0x0014a013, 0x43f683d1, 0x75441b14, 0x4c23d100, 0xc20d000f, 0x83d100fe,
-0x0d10034c, 0xe30837c0, 0xb283c400, 0x0826c00f, 0x015c0091, 0x4c420c30,
-0x00000200, 0x00000000, 0x1022a007, 0x0f3400c9, 0x34500098, 0x040bcd10,
-0x420c18af, 0x03cd00b3, 0x8c54a326, 0xc9003360, 0x10033410, 0x0030420d,
-0x16240055, 0x1c404c11, 0x00000a00, 0x00000000, 0x02c88004, 0xa73401e1,
-0xe840b210, 0xc705fd00, 0x401f1117, 0x05e90072, 0x5e502795, 0xe1007900,
-0x8027a429, 0x006a401c, 0x26940965, 0x18409c51, 0x00000200, 0x00000000,
-0x02340012, 0x033410cf, 0x244108b0, 0x0487cf06, 0xc04c5017, 0x11cd0133,
-0x1c70a314, 0xd8013340, 0x30037c00, 0x0030c00c, 0x164c05c7, 0x48c00870,
-0x00000040, 0x00000000, 0x0a2db802, 0x03fc00ff, 0x37c20b70, 0xae10e308,
-0xc00c500b, 0x00f3003d, 0x0d306b6c, 0xff24bfc1, 0xf0435c00, 0x0037c00f,
-0x02fd28fa, 0x0bc02bb0, 0x00000660, 0x00000000, 0x0027a815, 0x137c00d3,
-0x24448d30, 0x3c12dc10, 0xc40db027, 0x03cb41f2, 0x2d301b0c, 0xdb0037c5,
-0x70534c46, 0x2035a41d, 0x4f4c4053, 0x54c069b0, 0x00000e00, 0x00000000,
-0x10018812, 0x53f400e1, 0x38400c90, 0x9e04ef00, 0x400f0213, 0x10e112b8,
-0x4e100384, 0xe5013f40, 0x10138412, 0x1838414e, 0x03c420e1, 0x4ac00a10,
-0x00000620, 0x00000000, 0x00790003, 0x37b401e1, 0x48505e95, 0xb485ed00,
-0x401e5507, 0x79e1017d, 0x7ed40fa5, 0xc508fb62, 0x58070585, 0x0879409e,
-0x07a401e9, 0x0c521cdc, 0x00000402, 0x00000000, 0x20372012, 0x03740fc1,
-0x34400d90, 0x3400c511, 0x40bc5003, 0x00c10031, 0x3cd10f16, 0xc5007340,
-0x10030400, 0x0030400c, 0x232410c9, 0x4a401c50, 0x00000c20, 0x00000000,
-0x445da017, 0x01740271, 0x1cc00711, 0xfc1b3d20, 0x5017706c, 0x0333201d,
-0x03f200ac, 0x5b008fc0, 0x70014c00, 0x0455c005, 0x056c005b, 0x5cc055f0,
-0x00000620, 0x00000000, 0x40070012, 0x087c001f, 0x07c01170, 0x5c001f00,
-0x4441b200, 0x00171004, 0x41209060, 0x1f000740, 0xf0007c00, 0x4007c001,
-0x005c2007, 0x49e020a0, 0x00000c00, 0x00000000, 0x00270010, 0x227c029f,
-0x25c00934, 0x5c021b00, 0xd009b208, 0x14170926, 0x8132206c, 0x960404c0,
-0x30026c00, 0x0022c009, 0x024c0097, 0x41c019d0, 0x00000c20, 0x00000000,
-0x40262801, 0x8e740391, 0xa4400910, 0x5c031102, 0x4009d00c, 0x071701e4,
-0x20100874, 0x89000040, 0x10024401, 0x00274e09, 0x4a540091, 0x144189d0,
-0x00000800, 0x00000000, 0x0064a018, 0x02740091, 0xa4508910, 0x54001900,
-0x4008d008, 0x80150824, 0x01184074, 0x99200441, 0x10022488, 0x00264009,
-0x22e40095, 0x70400992, 0x00000200, 0x00000000, 0x02602010, 0x122410c1,
-0x2040d811, 0x1408c144, 0x6048d022, 0x08850a20, 0x88102274, 0xcd022050,
-0x14220406, 0x85224088, 0x32a50ca1, 0xc05068d2, 0x00000080, 0x00000000,
-0x0c06b01d, 0x317c0017, 0x05d14111, 0x5c161b00, 0xc041b058, 0x96170584,
-0x6134586c, 0x174584c1, 0x10586c04, 0x0102c340, 0x50ec4607, 0x65d051f0,
-0x000008c0, 0x00000000, 0x002f9019, 0x327c00b7, 0x2fc24bf4, 0xfc04bf04,
-0xc12bf012, 0x04bf0127, 0x4ff012fc, 0x93012fc0, 0xf0127c02, 0x042fc009,
-0x125c2c9f, 0x67c46bf0, 0x00000ce0, 0x00000000, 0x00afa818, 0x229c00bb,
-0xbc450fb0, 0xdc0da704, 0xc509d036, 0x13bd00af, 0x1bd046ec, 0xb32c60c1,
-0xf0325c04, 0x00a6c409, 0x129c009f, 0x64e06b30, 0x00000e00, 0x00000000,
-0x4087081c, 0x00440211, 0x94404010, 0x440f5840, 0xc821d13d, 0x871d03c5,
-0x11900444, 0x150d1400, 0xd0004402, 0x02845040, 0x086c0e19, 0x604061b0,
-0x00000c22, 0x00000000, 0x40e3a030, 0x1a340395, 0x23450811, 0x14008d01,
-0x41485a02, 0x409d0022, 0x49c24224, 0x85082045, 0xd01a161c, 0x00204128,
-0x5a04108d, 0x41406894, 0x00000e80, 0x00000000, 0x1025a018, 0x02640099,
-0x264a0910, 0x44a81909, 0x0009d980, 0x461d8005, 0x01900044, 0xd5222070,
-0xd0024440, 0x02244009, 0x02450298, 0x60400990, 0x00000620, 0x00000000,
-0x00278005, 0x0274029b, 0x24c10934, 0x5c030700, 0xc139f004, 0x231e0007,
-0x00c21c6c, 0x9600e4c2, 0xf0025c80, 0x0066c009, 0x0244009f, 0x055099b4,
-0x00000e20, 0x00000000, 0x12658014, 0x021c0397, 0x21d80970, 0x7c011740,
-0xc849f020, 0x411f0005, 0x31b0506c, 0x9b4067c0, 0xf0027c40, 0x0027c009,
-0x027c008f, 0x43c018f0, 0x00000600, 0x00000000, 0x00050014, 0x407e801f,
-0x84c02174, 0x4c421301, 0x4021f898, 0x221f0205, 0x21f0007c, 0x170887c4,
-0x30804c08, 0x0005c001, 0x902c0013, 0x53c10130, 0x00000420, 0x00000000,
-0x029ca814, 0x1df4016d, 0x1cc00651, 0xc6423104, 0xc0056214, 0x1b2d200c,
-0x73700cf4, 0x60201fc0, 0x10014401, 0x00144005, 0x09cc0071, 0x53400710,
-0x00000200, 0x00000000, 0x0016a014, 0x013405c9, 0xe0601c50, 0x0412c900,
-0x440c1003, 0xc0cd04f3, 0x7cd00320, 0xc9203340, 0x90032541, 0x0830480d,
-0x050440c5, 0xd3440c10, 0x00000a00, 0x00000000, 0x04188005, 0x03b402ed,
-0x28414a10, 0x8410f900, 0x009c1213, 0x00ed0239, 0x0ed043b4, 0xed013d40,
-0x9407a484, 0x4178408e, 0x098400e5, 0x17400615, 0x00000200, 0x00000000,
-0x00581011, 0x05b401ed, 0x7cd05e71, 0x8427e940, 0xc81e7107, 0x05ef037b,
-0xfef007bc, 0x4f417b40, 0xb0272c05, 0x41fdc15e, 0x058d8dc7, 0x57801a30,
-0x00000040, 0x00000000, 0x0015b010, 0x017c60df, 0x36d489f4, 0x7d34d300,
-0x410d512b, 0x60db00b6, 0x2d703b74, 0x9322b7c0, 0x700b5c48, 0x05b7f20d,
-0x007c06da, 0x43c009f0, 0x00000660, 0x00000000, 0x005fa800, 0x05f041ff,
-0x6ec0cb41, 0x7c21fb20, 0xc05fb0af, 0x1bf3027c, 0x1ef10ffc, 0xa300f1c0,
-0xf067df01, 0x407cc01f, 0x13cc11f3, 0x08c89734, 0x00000e00, 0x00000000,
-0x10198811, 0x19b400ef, 0x68c24a10, 0x3400c917, 0xc1dfd097, 0x08c1003a,
-0x5e6087b8, 0xeb017840, 0xd0078c04, 0x0079400e, 0x018404e3, 0x56c00614,
-0x00000620, 0x00000000, 0x00990000, 0x01b400ed, 0x99440b50, 0xb408e181,
-0x6c0ed003, 0x58e9303a, 0x4fd003a4, 0x25023d40, 0xd013b600, 0x2038400e,
-0x018420ed, 0x00420290, 0x00000400, 0x00000000, 0x00332800, 0x017613c5,
-0x30400c10, 0x3444c920, 0x503cd1c3, 0x00c90030, 0x3c500714, 0x8d80f102,
-0xd2030420, 0x0031400c, 0x010420c0, 0x1a460090, 0x00000c20, 0x00000000,
-0x0055a031, 0x017401dd, 0xf0c40f50, 0x7c84c308, 0x002f9003, 0x03d96032,
-0x1cd01b74, 0xf74e3dc1, 0xd103f400, 0x003c400f, 0x014c08ff, 0x74a009b1,
-0x00000620, 0x00000000, 0x00530001, 0x087c0a9f, 0x27c001f0, 0x7c02d700,
-0xc04df02b, 0x20d70037, 0x0de08374, 0x51003681, 0xf0037c80, 0x0237c00d,
-0x897c00cf, 0x07e00170, 0x00000c00, 0x00000000, 0x001f0080, 0x254c00f3,
-0x3dc006b4, 0xec00fb40, 0xc80ff003, 0x10f34034, 0x0ff3c3fc, 0x7f003cd0,
-0xe003ec00, 0x003de00d, 0x258c00ff, 0x04d82a32, 0x00000c20, 0x00000000,
-0x00162085, 0x014410c1, 0x76402990, 0x0403d108, 0xc80d904b, 0x00d10034,
-0x0dd10374, 0x0d003448, 0xd0035c20, 0x0037440d, 0x055420dd, 0x84400954,
-0x00000802, 0x00000000, 0x0054a001, 0x014404d9, 0x66522910, 0x74b4d900,
-0x480c9223, 0x21d18874, 0x1d580754, 0x99003640, 0xd1036580, 0x0035400d,
-0x094500dd, 0x04480194, 0x00000200, 0x00000000, 0x00102014, 0x810400c1,
-0x26400010, 0x1408c189, 0x430cd0c3, 0x41c10070, 0x5cd89734, 0x4d013244,
-0xd0031400, 0x0033000c, 0x011402cd, 0x400000d0, 0x00000080, 0x00000000,
-0x0016b000, 0x014500d3, 0x55c001b0, 0x7c02db04, 0x501ff21f, 0x02d31034,
-0xddf0175c, 0x1e207ec0, 0xf117ee00, 0x1179c00f, 0x214c02ff, 0x04c000b0,
-0x00000ac0, 0x00000000, 0x002fb805, 0x01fc007f, 0x31c00ef4, 0xec41ff40,
-0xc00d3057, 0x15ff803d, 0x3df0a37c, 0x3f123dc0, 0xf0235c00, 0x00b7c00f,
-0x85bc45ef, 0x17c00373, 0x00000e60, 0x00000000, 0x000fa003, 0x00fc103b,
-0x1f440330, 0xcd043300, 0xc0c33220, 0x00fb4438, 0x8f3703dc, 0xfb003fc0,
-0x35a3cd00, 0x001cc083, 0x22c804f7, 0x0cc16f30, 0x00000e00, 0x00000000,
-0x00070801, 0x02740013, 0x97400d10, 0x4408d102, 0x40c1541b, 0x00d100bd,
-0x41100144, 0xd5002744, 0x30004400, 0x2b946009, 0x125408d1, 0x04402d52,
-0x00000c20, 0x00000000, 0x4203a011, 0x00301001, 0x11400410, 0x14800108,
-0x40405120, 0x00558000, 0x4c100214, 0x05101340, 0x12030400, 0x44125800,
-0x822400c9, 0x44604c52, 0x00000e80, 0x00000000, 0x28158803, 0x1a7400d9,
-0x17404d10, 0x5400d104, 0x66155003, 0x00558405, 0x05100244, 0x10041640,
-0x10020400, 0x08026000, 0x027600d9, 0x0c410550, 0x00000620, 0x00000000,
-0x0c478802, 0x017c0013, 0x9fc01d34, 0xdc003340, 0xc0017000, 0x454f0264,
-0x2130425c, 0x9b1087c1, 0x301f4c00, 0x00164801, 0x026c40f9, 0x08d0a971,
-0x00000e20, 0x00000000, 0x017d8007, 0x03bc03b7, 0x1fc01ff0, 0xac00ff08,
-0x8003f003, 0x095b006b, 0x03f0203c, 0xa7000bc0, 0x70117c88, 0x101dc003,
-0x0a9c00c3, 0x1fc01bf0, 0x00000600, 0x00000000, 0x01810802, 0x017c005f,
-0x90c00df0, 0x4d000720, 0xc4041020, 0x015f4007, 0xa5302244, 0x970094c4,
-0x70434c02, 0x4114c081, 0x025c00db, 0x0bc020f1, 0x00000420, 0x00000000,
-0x20b48013, 0x037405dd, 0x16c02d70, 0x4000db04, 0x4a05502b, 0x40710027,
-0x05b02a6c, 0x91005442, 0x100344a5, 0x00ec5001, 0x126c40f3, 0x4f4011d0,
-0x00000200, 0x00000000, 0x0002a007, 0x1836120d, 0x70506cd0, 0x340f0500,
-0x4090c500, 0x00800033, 0x1c100904, 0x41007040, 0x10080400, 0x00134130,
-0x023412c0, 0x1f441098, 0x00000a00, 0x00000000, 0x02488004, 0x05b4016d,
-0x78401f50, 0xa409c100, 0x40169027, 0x09e1207b, 0x181005a4, 0x41066850,
-0x10248409, 0x04594052, 0x87a401e1, 0x134012d2, 0x00000200, 0x00000000,
-0x00101012, 0x003c000f, 0x34482cf0, 0x3c000500, 0xc080f020, 0x08830023,
-0x0c13030c, 0x43023040, 0x34220d08, 0x0017c201, 0x023c00c3, 0x4bc108e9,
-0x00000040, 0x00000000, 0x009db802, 0x01fc00ff, 0x3e800ef0, 0x9c00ff02,
-0xc08771a3, 0x08d70047, 0x0ff623fc, 0x7b023bc0, 0xf0a2fc28, 0x040cc063,
-0x03dc10ff, 0x0bc08bf0, 0x00000660, 0x00000000, 0x40f7a015, 0x027c0453,
-0x37c00d30, 0x4d001300, 0xc0453480, 0x099f0137, 0x09f0014c, 0xd30024c8,
-0x30194c01, 0x00169021, 0x02ee01d3, 0x54c05530, 0x00000e00, 0x00000000,
-0x803d8812, 0x03b408e1, 0x33400e10, 0x2c00c180, 0x40861003, 0x00cd043b,
-0x08d00184, 0xe5002050, 0x1021c480, 0x015a4203, 0x02c605e1, 0x48410412,
-0x00000620, 0x00000000, 0x00f90003, 0x06f40169, 0x79411e14, 0x94012100,
-0x44169004, 0x05ad007b, 0x1ed007a6, 0xe900f860, 0x98879411, 0x00104012,
-0x868401e1, 0x0c401e94, 0x00000400, 0x00000000, 0x00732812, 0x07340dc9,
-0x37401c12, 0x2400c100, 0x40849003, 0x04cd00b3, 0x3cd02726, 0xcd007040,
-0x9c275402, 0x01244020, 0x224500c1, 0x4840ac12, 0x00000c20, 0x00000000,
-0x0055a817, 0x4dfc035b, 0x17c02630, 0x5c005348, 0xc405b001, 0x005f045f,
-0x45f00165, 0x5b409442, 0xb0015d00, 0x209ec424, 0x056c0053, 0x5cd01530,
-0x00000620, 0x00000000, 0x20070012, 0x403cc217, 0x87c011f3, 0xf4002f00,
-0xc0017008, 0x001f0183, 0x01f0001e, 0x136007c1, 0x70006490, 0x0007c101,
-0x007c001f, 0x4bc101f0, 0x00000c00, 0x00000000, 0x04370810, 0x027c01df,
-0x25c09934, 0x4c019302, 0xc21db202, 0x00930227, 0x0830927c, 0x9b0420c0,
-0x32867c05, 0x0264c22d, 0x027c0093, 0x43c00d30, 0x00000c20, 0x00000000,
-0x00260001, 0x02740c9d, 0xa7e02910, 0x04099504, 0x4019104a, 0x009110e7,
-0x09120e4c, 0x91002440, 0x10227401, 0x00244009, 0x02740291, 0x07400951,
-0x00000800, 0x00000000, 0x8124a018, 0x0274409d, 0x24510912, 0xc400b120,
-0x40899006, 0x019140a7, 0x0b1442d4, 0xf1022e40, 0x1c0af400, 0x4024400d,
-0x02740391, 0x63400914, 0x00000200, 0x00000000, 0x82202010, 0x0234088d,
-0x20400910, 0x8500e502, 0x40881922, 0x08810523, 0x0a1402a4, 0xa1c02850,
-0x1422b400, 0x02204489, 0x22344081, 0x43408810, 0x00000080, 0x00000000,
-0x0586b01d, 0x503c161f, 0x85440130, 0xcc141335, 0xc161b058, 0x16130107,
-0x4130505c, 0x1b0506e1, 0x3058fc14, 0x0584d021, 0x587c0013, 0x77c16130,
-0x00000ac0, 0x00000000, 0x0127b819, 0x02fc049f, 0x27c00bd0, 0x7c809f01,
-0xc049f012, 0x04bf052f, 0x49f0024e, 0x8f2027c1, 0xf2127c00, 0x012fc049,
-0x12fc028f, 0x67c049f0, 0x00000e60, 0x00000000, 0x022fa018, 0x027c1c9f,
-0x2dc809f0, 0xcc009302, 0xc029315a, 0x0033052f, 0xcb70c2bc, 0x9c202cd0,
-0x11527c14, 0x0124d029, 0x52cc01bb, 0x60c06b30, 0x00000e00, 0x00000000,
-0x0287081c, 0x2874800d, 0x04c003d0, 0x44003101, 0x40605018, 0x01110187,
-0xe110086c, 0x5d028440, 0x11197e82, 0x019cc040, 0x18040211, 0x70400110,
-0x00000c20, 0x00000000, 0x0123a010, 0x02b6448d, 0xa9400bd0, 0x2402a100,
-0x40281012, 0x02c50423, 0x08100214, 0x8d102048, 0x5442b400, 0x462a401a,
-0x420402c1, 0x40422810, 0x00000e80, 0x00000000, 0x2025a818, 0x0374809d,
-0x36400bd0, 0x6400b100, 0x40494802, 0x40950427, 0x49500a44, 0x9c012440,
-0x50021400, 0x2028400a, 0x02040091, 0x60400910, 0x00000620, 0x00000000,
-0x00678805, 0x027c1a9f, 0x25c088d0, 0x6d009320, 0xc4190402, 0x06974067,
-0x09340255, 0x9d0124c0, 0x700a7402, 0x0066c809, 0x024d009b, 0x14d0693c,
-0x00000e20, 0x00000000, 0x22658014, 0x027c00df, 0x25c019f0, 0x5c208f40,
-0xc00df002, 0xe01b0167, 0x08b0123c, 0xdf0027c0, 0xb0027c04, 0x0265c109,
-0x027c008f, 0x53c009f8, 0x00000600, 0x00000000, 0x00050814, 0x004c0a1f,
-0x03c101f1, 0x3c041302, 0xc001b000, 0x02030980, 0x0110007c, 0x170004c0,
-0x34087c02, 0x0484d001, 0x00480113, 0x50840130, 0x00000420, 0x00000000,
-0x11dca014, 0x0146015d, 0x54c125c0, 0xf4115500, 0xc005b009, 0x001b00de,
-0x551035f4, 0x5d015440, 0x10017401, 0x00145025, 0x01440071, 0x50400510,
-0x00000200, 0x00000000, 0x01f2a014, 0x012481cd, 0x536010d0, 0x36000100,
-0x4004543f, 0x00c90230, 0x1c100634, 0xcd007044, 0x10473409, 0x0230600c,
-0x03040041, 0x50401d90, 0x00000a00, 0x00000000, 0x00388005, 0x03a401ed,
-0x08400ad0, 0x3400e500, 0x4036d021, 0x00e9003e, 0x081001a4, 0xed003840,
-0x1041a400, 0x000c600e, 0x0284a061, 0x14402e94, 0x00000200, 0x00000000,
-0x00781015, 0x05a501ed, 0x73c81ed0, 0xbc81e344, 0xc0967417, 0x05eb0058,
-0x1e3106bc, 0xaf0078c0, 0x30073c01, 0x4078c81a, 0x078c0123, 0x54d01fb4,
-0x00000040, 0x00000000, 0x0035b810, 0x035c021f, 0x26440df1, 0x7c009f40,
-0x0821b005, 0x00df1013, 0x09f4837c, 0xdf0837d0, 0xf0037c02, 0x0093c40d,
-0x5a7d000f, 0x43c00d70, 0x00000660, 0x00000000, 0x027fa000, 0xa5fc0bff,
-0x5dc09ef0, 0xdc81f301, 0xc0173107, 0x99e3006f, 0x1b1206cc, 0xff006cc0,
-0x3206cc03, 0x02fcc417, 0x07fc0133, 0x00c01b30, 0x00000e00, 0x00000000,
-0x02198815, 0x63b40ced, 0x18800ed0, 0xac006141, 0x4006b041, 0x30e1412b,
-0x4e1403bc, 0xef003850, 0x10128400, 0x0338404f, 0x22b408a1, 0x54400ab0,
-0x00000620, 0x00000000, 0x22290000, 0x01b600ed, 0x270807d3, 0x0400e103,
-0x40061003, 0x00e1201b, 0x08100224, 0xed003844, 0x91030408, 0x003e6402,
-0x07b400a1, 0x00400810, 0x00000400, 0x00000000, 0x10c22804, 0x0b34060d,
-0x20413cd0, 0x640dc110, 0x40101015, 0x00c10417, 0x2d100b12, 0xc5023040,
-0x906f0400, 0x01f2404d, 0x06740081, 0x10502890, 0x00000c20, 0x00000000,
-0x0345a815, 0x077c025f, 0x37482df0, 0xdc82d320, 0xc455160f, 0x00c30037,
-0x6d300324, 0xdd003440, 0xb4074d00, 0x41f2c02d, 0x167c0053, 0x54c0ad30,
-0x00000620, 0x00000000, 0x00070001, 0x017c084f, 0xa5c085f0, 0x7c00df00,
-0xc005f009, 0x40df00b7, 0x0df0037c, 0xcf0037c0, 0x70017c00, 0x00a5c42d,
-0x037c005f, 0x07c00874, 0x00000c00, 0x00000000, 0x30cf0880, 0x43cc0873,
-0x5fc04ff0, 0xcc804300, 0xc097a003, 0x00f70067, 0x8f3043ec, 0xdf007cc1,
-0x30038d01, 0x003cc05f, 0x22fc0033, 0x00c00f30, 0x00000c22, 0x00000000,
-0x00c62081, 0x01442311, 0xc7411dd0, 0x440fd500, 0x4011b029, 0x01d10027,
-0x1d100e55, 0xdd007452, 0x50034401, 0x41b5424d, 0x03740115, 0x05400910,
-0x00000802, 0x00000000, 0x00b0a001, 0x03441011, 0x334009d0, 0x44009122,
-0x4001d00b, 0x84d52627, 0x0d106344, 0xd5293640, 0x18234428, 0x0034420d,
-0x02740851, 0x04404910, 0x00000200, 0x00000000, 0x00102010, 0x01050001,
-0x33400890, 0x0500c500, 0x4000d001, 0x00c50023, 0x0c100304, 0xcd803000,
-0x19030400, 0x0034400c, 0x032400c1, 0x41400c14, 0x00000080, 0x00000000,
-0x0026b000, 0x034c0011, 0x1fc00df0, 0x4d00d300, 0xc001f001, 0x40d70007,
-0x0d30034c, 0xdf003680, 0x34034c00, 0x0034c00d, 0x02bc0093, 0x00c00930,
-0x00000ac0, 0x00000000, 0x000fb805, 0x01fc003f, 0x1fc007f0, 0xfc003f00,
-0xc203a000, 0x00fb000f, 0x0ff003fc, 0xff003fc0, 0xf003fc00, 0x003bc00f,
-0x03fc00bf, 0x17c00ff0, 0x00000e60, 0x00000000, 0x113ba003, 0xa3ac0023,
-0x3ec08fb0, 0x7c003f00, 0xc04ff080, 0x44f9203e, 0x0f9013ec, 0xbf011fc0,
-0xf012ec00, 0x013ec04f, 0x03cc00ff, 0x0cc00fb0, 0x00000e00, 0x00000000,
-0x03370801, 0x1bf40411, 0x30c0ef10, 0x44004d00, 0x402e1080, 0x0af1203c,
-0x2f500bcc, 0x41021040, 0x10090402, 0x25bc40af, 0x035400dd, 0x04400c10,
-0x00000c20, 0x00000000, 0x0433a031, 0x0b341001, 0x32400cd0, 0x24400500,
-0x408c9001, 0x00c92032, 0x2cd10b24, 0x09103240, 0x920a2488, 0x08b2480c,
-0x034401cd, 0x44414d90, 0x00000e80, 0x00000000, 0x0075a803, 0x03760011,
-0x74400d10, 0x44905d10, 0x400d12c1, 0x00d18835, 0x0d500344, 0xd1003442,
-0x10014400, 0x8036400d, 0x035401dd, 0x0c401d11, 0x00000620, 0x00000000,
-0x0147a802, 0x037c0111, 0x36c00df0, 0x68021700, 0xc40db008, 0x80db0036,
-0x0db1036c, 0x3b101ec8, 0xb002ec02, 0x1036c20d, 0x070c00dd, 0x08d01db0,
-0x00000e20, 0x00000000, 0x00098007, 0x03fc05bf, 0x2fc00db0, 0x4c00ff00,
-0xe00fb080, 0x40ff043e, 0x0fb043fc, 0xfb001ec4, 0xb001fc00, 0x083dc00f,
-0x4bfc70ff, 0x1fc00ff0, 0x00000600, 0x00000000, 0x00250802, 0x137d001f,
-0x24c00d70, 0x5c821703, 0xc90d3049, 0x00d30235, 0x0d30036c, 0x1d0036c0,
-0x70127c00, 0x1334c00d, 0x035c00db, 0x09c20d72, 0x00000420, 0x00000000,
-0xc0b4a013, 0x83d409d1, 0xe5400e12, 0x4401d120, 0x682fb009, 0x85f120bc,
-0x1f101be4, 0xd500b442, 0x10494c03, 0x00fc50bf, 0x1f4403c8, 0x4c400c92,
-0x00000200, 0x00000000, 0x2232a007, 0xa7742305, 0xb0400c50, 0x54109580,
-0x443d110a, 0x93d10035, 0x2d100b44, 0x15015445, 0x400a5410, 0x00b0400d,
-0x031403c1, 0x1d400cd0, 0x00000a00, 0x00000000, 0x2af88004, 0x07a40131,
-0x79401e12, 0x942de111, 0x405e91c6, 0x01f1007c, 0x5f1027c4, 0xe1105862,
-0x10058421, 0x0038421c, 0x27c43df1, 0x10401e90, 0x00000200, 0x00000000,
-0x02301012, 0x033d1005, 0x30c20c70, 0x1c1c8700, 0x435c3017, 0x00c32831,
-0x1c30a72e, 0x070630c1, 0x70021c10, 0x0374c1cc, 0x0b1c0ccb, 0x49c00c70,
-0x00000040, 0x00000000, 0x4a3db802, 0x03dc0037, 0x3fc10ff0, 0xec0cfd21,
-0xc00ff013, 0x18e7063b, 0x0ef203bc, 0xf70035c0, 0xe025fc80, 0x13b7c18f,
-0x033c2ecf, 0x0bc80f70, 0x00000660, 0x00000000, 0x10272015, 0x135c0013,
-0x31426d70, 0x4c009300, 0x80cd1212, 0xc4db0132, 0xed70436c, 0x1b2016c0,
-0x33024d01, 0x00f7c44d, 0x2f0c08d3, 0x57040d32, 0x00000e00, 0x00000000,
-0x00290812, 0x4bb400a0, 0x2ac14c10, 0x1420c100, 0x410ce042, 0x14c51438,
-0x0e100b8d, 0xc9001849, 0xb0010c20, 0x1933414e, 0x538504eb, 0x4a402e50,
-0x00000620, 0x00000000, 0x28610003, 0x07343120, 0x7f401ed0, 0xa441a908,
-0x445e9087, 0x85e1217e, 0x5ed10704, 0x2d007b44, 0xd806a401, 0x0279405e,
-0x578491e9, 0x0f401e12, 0x00000400, 0x00000000, 0x10632812, 0x03340181,
-0x20400c90, 0x3412c900, 0x400c1003, 0x00c50030, 0x0c910304, 0xcd003240,
-0xd0010400, 0x0033400c, 0x030400c9, 0x4a401d50, 0x00000c20, 0x00000000,
-0x415d8817, 0x017c0361, 0x5f4005f0, 0x6d025b84, 0xc0058401, 0x4073001e,
-0x06f201c8, 0x5f0017c0, 0xf001ec02, 0x801dc007, 0x00cc0039, 0x5fc50330,
-0x00000620, 0x00000000, 0x00470012, 0x083c011f, 0x87c80170, 0x5c000740,
-0xc820f000, 0x40170885, 0x2172085c, 0x3b0085c8, 0xb100fe24, 0x1087c800,
-0x887c4217, 0x4ac801f0, 0x00000c00, 0x00000000, 0x00230810, 0x066c0193,
-0x65c01930, 0x0c009351, 0xc2395002, 0x248710e2, 0x0936020c, 0x9f0064c2,
-0x12023c00, 0x20249809, 0x405c101f, 0x40c001f0, 0x00000c20, 0x00000000,
-0x08262001, 0x46440a91, 0x2040a834, 0x6c1b9300, 0x4019706e, 0x07914024,
-0x0930424c, 0x9d1626d0, 0x30027600, 0x14244809, 0x6c4c1307, 0x06c00170,
-0x00000800, 0x00000000, 0x00648018, 0x12642291, 0x25400919, 0xd4009984,
-0x40099002, 0x00958026, 0x49101254, 0xfd202440, 0xd01af406, 0x01244269,
-0x0054041d, 0x604409d2, 0x00000200, 0x00000000, 0x08202010, 0x42040891,
-0xa444c818, 0xb606a100, 0x406c150a, 0x228000b0, 0x6d100a05, 0xa900a040,
-0x540ab442, 0x02204228, 0x2204089d, 0x42408843, 0x00000080, 0x00000000,
-0x4386b01d, 0x286c0211, 0x05404530, 0xd4241900, 0xc1413010, 0x10150006,
-0x4010404c, 0x1d000440, 0xf000f480, 0x0504c841, 0x585c161e, 0x74c161e0,
-0x00000ac0, 0x00000000, 0x432f9819, 0x127c04bf, 0x2f8889d0, 0x64029f08,
-0xc409f222, 0x009f20a7, 0x89700270, 0x9f00a7c0, 0xb00a7c02, 0x11278289,
-0x12dc04a6, 0x67c04bf0, 0x00000e60, 0x00000000, 0x01afa018, 0x42ec02b3,
-0x27c14b30, 0x4c009f00, 0xc0c97132, 0x169b0424, 0x49709a4c, 0x9c2165c8,
-0x301e5c07, 0x08a4c089, 0x1ebc01b3, 0x62c199e0, 0x00000e00, 0x00000000,
-0x0117081c, 0x08450411, 0x04406111, 0x140c1709, 0x44215000, 0x46010100,
-0xe1301804, 0x19039450, 0xb0287e0a, 0x014c4000, 0x14741515, 0x704021d0,
-0x00000c20, 0x00000000, 0x01a3a010, 0x52040085, 0x29030850, 0x8490ad04,
-0x40ca1832, 0x04a96428, 0x0a503284, 0xad042851, 0x12028400, 0x81af486a,
-0x1a34028d, 0x424049d0, 0x00000e80, 0x00000000, 0x0025a818, 0x03440091,
-0x24400952, 0xd420fd00, 0x400b5012, 0x40b1002c, 0x0b9103d4, 0xb9102c40,
-0x9002f450, 0xc02f400b, 0x0074801d, 0x604009d0, 0x00000620, 0x00000000,
-0x42a7a805, 0x02440093, 0x65400944, 0x4c809d02, 0x50097002, 0x009b0024,
-0x09700245, 0x9d00a4c0, 0x10024402, 0x2027d009, 0x6c7c041b, 0x16c018f0,
-0x00000e20, 0x00000000, 0x00618014, 0x021c059f, 0x25c009b0, 0x7c208700,
-0xc008f002, 0x408f8027, 0x0930826c, 0x9b0826ce, 0xf4022c80, 0x2824c008,
-0x007c4413, 0x53c089f0, 0x00000600, 0x00000000, 0x40840814, 0x04741013,
-0x0ce441b1, 0xbc003300, 0xc0037010, 0x0037290b, 0x427a00b8, 0x23418cc0,
-0x3000fc18, 0x000dc083, 0xc87c0013, 0x52c00130, 0x00000420, 0x00000000,
-0x221ca014, 0x09f41171, 0x16512713, 0x74095110, 0x45855041, 0x095100d7,
-0x0510094c, 0x5100d551, 0x12057402, 0x005008a5, 0x44f40a33, 0x50420510,
-0x00000200, 0x00000000, 0x0072a014, 0x013402d1, 0x3b401dd0, 0xb422e100,
-0x403ed00f, 0x43e500fb, 0x3e504b94, 0xe1007a48, 0x144bb621, 0x0039401e,
-0x0334c1cd, 0x50400c90, 0x00000a00, 0x00000000, 0x00988005, 0x13b400e1,
-0x7f4c8c50, 0xb422e140, 0x400ed203, 0x70e1043b, 0x0c1003b4, 0xe1047a40,
-0x1243b600, 0x00b0400e, 0x17b406e5, 0x14488f90, 0x00000200, 0x00000000,
-0x407c1015, 0x0d3c0163, 0x78405ef0, 0xbe41e300, 0xc01ef107, 0x01e7007b,
-0x1e52079c, 0xe20072c0, 0x34073c01, 0x3079c01e, 0x5fbc13ee, 0x54905eb0,
-0x00000040, 0x00000000, 0x0805b810, 0x057c009f, 0x00000d20, 0x7c001f10,
-0xc0012000, 0x001f0007, 0x01f00140, 0x1f0805c0, 0xf0007c00, 0x004fc001,
-0x837cc6db, 0x41c46c77, 0x00000660, 0x00000000, 0x026ba000, 0x05fc01b3,
-0x7fc01730, 0xcc09fb00, 0xc21f3207, 0x05db007f, 0x1eb007bc, 0xf3007cc0,
-0x3027d401, 0x0278c0de, 0x27fc81f3, 0x00c03ef0, 0x00000e00, 0x00000000,
-0x37298835, 0x01f40020, 0x3f408610, 0x9408e102, 0x400c5023, 0xa5ed013b,
-0x1c109334, 0xeb0938c8, 0xb073ac82, 0x2870408e, 0x0fb405e1, 0x54404ed0,
-0x00000620, 0x00000000, 0x082d0000, 0x01b41060, 0x3a400e10, 0x0600e900,
-0x408e9003, 0x24e9203b, 0x0f1303e4, 0xe1103240, 0x13030400, 0x007c444f,
-0x53b414ed, 0x00680fd3, 0x00000400, 0x00000000, 0x10372804, 0x01340301,
-0x03400c10, 0x14010102, 0x4000d000, 0x800d0003, 0x00100134, 0x09000040,
-0x90082405, 0xa8004000, 0x0f3423cd, 0x10420cd0, 0x00000c20, 0x00000000,
-0x0075a815, 0x01fc22d3, 0x76c00f34, 0x4419db00, 0x420d9203, 0x00db0037,
-0x0d10027c, 0xd10036c0, 0x320f4c13, 0x0038c40d, 0x037c80dd, 0x54d31ff0,
-0x00000620, 0x00000000, 0x10b70001, 0x887c00df, 0x17c02cf0, 0x7c42df00,
-0xc02d700b, 0x00cf08b7, 0x0d720274, 0xdf0037c8, 0xf2137c00, 0x0037c00d,
-0x0b7c00d3, 0x07c00df1, 0x00000c00, 0x00000000, 0x803f0880, 0x04cc1073,
-0x2dc03ff0, 0x8e01c300, 0xc09e7023, 0x09ff203e, 0x0ef202c8, 0xcc08bc18,
-0x3007ac01, 0x093cc00e, 0x57fc31f1, 0x03c00ff0, 0x00000c22, 0x00000000,
-0x04f62081, 0x24440091, 0x30405dd0, 0x44021106, 0x4061b1c0, 0x061d0245,
-0x01d02444, 0x1d000442, 0xb0404401, 0x004450e1, 0x0b7442d1, 0x07400dd0,
-0x00000802, 0x00000000, 0x4074a001, 0x01448089, 0x376409d0, 0x64081108,
-0x40011080, 0x001d0406, 0x61d28054, 0x1d088540, 0x12104404, 0x68264801,
-0x037406d5, 0x07440dd0, 0x00000200, 0x00000000, 0x00302010, 0x80040009,
-0x166008d0, 0x04000140, 0x4000da08, 0x000d0001, 0x00d32015, 0x0d000141,
-0x90000420, 0x80264000, 0x033400c5, 0xc3480cd0, 0x00000080, 0x00000000,
-0x0036b000, 0x004c0059, 0x25c00df0, 0x6d001300, 0xc8817008, 0x011d0006,
-0xf1f80858, 0x1f0005c0, 0x30006d00, 0x02668001, 0x877c01d7, 0x03c00ff0,
-0x00000ac0, 0x00000000, 0x003fb805, 0x00fc0037, 0x3dc00fd0, 0xfc00ff00,
-0xe81fb817, 0x08ff083e, 0x1df006ec, 0xff803ec2, 0xf003fc00, 0x0255c80f,
-0x237c08db, 0x17c20ff0, 0x00000e60, 0x00000000, 0x000f8003, 0x03ec20f3,
-0x3cc00eb0, 0xfc043300, 0xc002f002, 0x0433023e, 0x0f3203cc, 0xff0038c0,
-0xf000ec08, 0x007cc01f, 0x17cc01e3, 0x0cc00f30, 0x00000e00, 0x00000000,
-0x00070001, 0x03c400e1, 0x34400d90, 0x748a1100, 0x4061d003, 0x0011023c,
-0x0f10eb45, 0xfd003441, 0xd0084506, 0x009440a9, 0x21440211, 0x04482f10,
-0x00000c20, 0x00000000, 0x0003a011, 0x031400c9, 0x32400016, 0x34000d00,
-0x4120d103, 0x08052021, 0x4c910314, 0xcd002160, 0xd0080408, 0x02304208,
-0x060408c1, 0x44502c10, 0x00000e80, 0x00000000, 0x0005a803, 0x475500c9,
-0x36400590, 0x74015d00, 0x4009d007, 0x00150025, 0x0d900254, 0xdd00a540,
-0xd0084600, 0x44045105, 0x04440251, 0x0c400d90, 0x00000620, 0x00000000,
-0x04c7a802, 0x0f7c20db, 0x36c12db0, 0x7c201f40, 0xc101f003, 0x0517007d,
-0x0db4035c, 0xdf0255d0, 0xf0006c40, 0x0024d005, 0x034c09d3, 0x08c40d30,
-0x00000e20, 0x00000000, 0x10c58007, 0x024c10f7, 0x7dc85f70, 0xf4007301,
-0xd20bf383, 0x054b9278, 0x0e7027ec, 0xef003ed0, 0xf011fc00, 0x027bc249,
-0x02bd21ef, 0x1f000d76, 0x00000600, 0x00000000, 0x00b10802, 0x0b6d00d3,
-0x24c089b0, 0x4d001f00, 0xc125f003, 0x08d30024, 0x0df0024c, 0xd301e4c0,
-0x300a6c08, 0x0084c040, 0x014c0053, 0x08c00df0, 0x00000420, 0x00000000,
-0x0034a013, 0x2f4402f1, 0xb440ad10, 0x6c2b5d0b, 0x002cd013, 0x01d00424,
-0x1fd02a40, 0xfb006444, 0x1003450a, 0x02844055, 0x28441111, 0x4c400fd0,
-0x00000200, 0x00000000, 0x0032a007, 0x034488c9, 0x34401d91, 0x04000d00,
-0x4800d013, 0x01090060, 0xbcd00744, 0xc100a241, 0x90040401, 0x08b04008,
-0x030401c1, 0x1c400dd2, 0x00000a00, 0x00000000, 0x00788804, 0x078401e9,
-0x78405f18, 0xa4112d00, 0x5012d027, 0x01691060, 0x1cd10784, 0xc9086a40,
-0x92008409, 0x0070501a, 0x068401a1, 0x10400ed1, 0x00000200, 0x00000000,
-0x40000012, 0x410c04cb, 0x30c00cb0, 0x0d005f20, 0xc048d003, 0x00cb0830,
-0x0cf2720d, 0xc30032c0, 0xb0624e20, 0x0000c000, 0x010c0003, 0x48c08cf0,
-0x00000040, 0x00000000, 0x000da802, 0x2bde00f7, 0x3fc04ff0, 0xfe027f00,
-0xc00bf00b, 0x00d70277, 0x8ff022fc, 0xff001dc1, 0x7012dc02, 0x401fc08b,
-0x00fc003f, 0x0bc04ff0, 0x00000660, 0x00000000, 0x0077a015, 0x137c04d7,
-0x34c00c30, 0x3c005f00, 0xc0083003, 0x01130124, 0x0df0034c, 0xdf0024c0,
-0x30004d0a, 0x0034c009, 0x437c0092, 0x57c04df0, 0x00000e00, 0x00000000,
-0x20398812, 0x038412f1, 0x38400e90, 0xb4006720, 0x400ab003, 0x00214428,
-0xced003ac, 0xcd002844, 0xb001ec24, 0x40084002, 0x01b44021, 0x4b410ed0,
-0x00000620, 0x00000000, 0x00790003, 0x059405e5, 0x78401f90, 0xb4016d00,
-0x481e1807, 0x01818070, 0x5cd00684, 0xed007940, 0x900f8461, 0x00684012,
-0x06b401e1, 0x0f409ed0, 0x00000400, 0x00000000, 0x02b32812, 0x071400c1,
-0x30400c90, 0x3401450a, 0x409c9003, 0x0b810030, 0x0dd02766, 0xcd019540,
-0x90072500, 0x01c84002, 0x00b40321, 0x4b400cd0, 0x00000c20, 0x00000000,
-0x001da817, 0x41fd0057, 0x54d02734, 0x7c005f00, 0xd0373001, 0x00734014,
-0x05f0014c, 0x5f009dd0, 0xb00dcc00, 0x0154d025, 0x017e1253, 0x5fc005f0,
-0x00000620, 0x00000000, 0x24070012, 0x006c001f, 0x07c00170, 0x7c081f08,
-0xc011f008, 0x041f0003, 0x21f0087c, 0x1f008680, 0xf2047c00, 0x0007c101,
-0x047c101f, 0x4bc801f0, 0x00000c00, 0x00000000, 0x00270810, 0x024c009f,
-0x244109f0, 0x4c00d100, 0xc0083413, 0x00934024, 0x8932027c, 0x834026c0,
-0x70060c00, 0x0020d009, 0x023c0093, 0x43c00930, 0x00000c20, 0x00000000,
-0x08262001, 0x0244009d, 0x24500915, 0x05009140, 0xc0b91002, 0x08910025,
-0x29120a74, 0x9100e445, 0x10064508, 0x00a44108, 0x0a740091, 0x07400914,
-0x00000800, 0x00000000, 0x0024a018, 0x0204008d, 0x21400812, 0x44208500,
-0x40091002, 0x00910026, 0x09900274, 0x91006640, 0xd0124400, 0x00ac4009,
-0x0af408b1, 0x63400910, 0x00000200, 0x00000000, 0x02202010, 0x2204088d,
-0x21408898, 0x06088502, 0x40881003, 0x00816221, 0x88957234, 0x8100a040,
-0x9022040c, 0x0028400a, 0x02b400a1, 0x43404810, 0x00000080, 0x00000000,
-0x0582301d, 0x5804021f, 0x85c22170, 0x4c161700, 0xc1653000, 0x14130586,
-0x61b0197c, 0x130016c1, 0xf2584c03, 0x4004c401, 0x80fc0013, 0x77c0b130,
-0x00000ac0, 0x00000000, 0x012db819, 0x92fd069f, 0x2ec04b70, 0x7c049b01,
-0xc04bf202, 0x80bf012f, 0x497012fc, 0x9f002fc0, 0x7212fc0c, 0x00a3c028,
-0x0a7c029f, 0x67c099f0, 0x00000e60, 0x00000000, 0x0027a018, 0x527c109f,
-0x20c209b0, 0xfc049b0a, 0xc10bb003, 0x04b300ef, 0x6b7042cc, 0xbf002cc0,
-0xf002fc04, 0x0024c00b, 0x034c0093, 0x60c0c930, 0x00000e00, 0x00000000,
-0x22c7081c, 0x0d64431d, 0x44411012, 0x741f3100, 0x40211000, 0x001100c7,
-0x01100844, 0x070006c0, 0xd0007440, 0x40044001, 0x00448011, 0x70400114,
-0x00000c20, 0x00000000, 0x0423a010, 0x42d650ad, 0x2b420a10, 0x3404a100,
-0x41489002, 0x038101a3, 0x28d05224, 0x8d056048, 0xd04a3402, 0x00204008,
-0x82058081, 0x42406810, 0x00000e80, 0x00000000, 0x08258818, 0x02f600bd,
-0x2f426a14, 0x7600b101, 0x40099202, 0x40910127, 0x09960264, 0x95006640,
-0xd0027400, 0x04244009, 0x02441091, 0x62400810, 0x00000620, 0x00000000,
-0x01e7a805, 0x0e5c209f, 0x27c00930, 0x3c099340, 0xc1a9b006, 0x83934027,
-0x08f4262c, 0x9f0024c0, 0xd0127c00, 0x02e4d139, 0x464c0a93, 0x16500930,
-0x00000e20, 0x00000000, 0x3d650014, 0x0a4c009f, 0x64d00971, 0x7c019f00,
-0xc0097026, 0x059f0027, 0x0970025c, 0x9f0027c0, 0xf00e7c00, 0x0477c088,
-0x137c00cf, 0x51c009f0, 0x00000600, 0x00000000, 0x30850814, 0x08fc002f,
-0x0cc82334, 0x4c003340, 0xc0813000, 0x00030003, 0x1130004d, 0x1f0a44d0,
-0xb0284c10, 0x4000c021, 0x100c0013, 0x50c00130, 0x00000420, 0x00000000,
-0x00942014, 0x0134005d, 0x14100518, 0xc4005300, 0x40075001, 0x01730017,
-0x271001c4, 0x7d009c50, 0x30054600, 0x08944427, 0x09440051, 0x50c00510,
-0x00000200, 0x00000000, 0x00b2a014, 0x031480cd, 0x34400c12, 0x2400c500,
-0x401c1005, 0x00890073, 0x0c104e04, 0xcd003248, 0x90061401, 0x00304938,
-0x00060081, 0x50400c14, 0x00000a00, 0x00000000, 0x00388005, 0x00b4402d,
-0x0c400210, 0xa4012108, 0x40065009, 0x11e100bb, 0x4e100e84, 0xad023a40,
-0x9006c403, 0x00304028, 0x028402e0, 0x16404e10, 0x00000200, 0x00000000,
-0x00781015, 0x07dc41ef, 0x78c01e10, 0xad01c720, 0xc0163006, 0x00c94073,
-0x3c3402cc, 0xef007ad0, 0xb1069501, 0x0078c012, 0x060c01c3, 0x54d05f30,
-0x00000040, 0x00000000, 0x0035b810, 0x807c001f, 0x07c001f0, 0x1ca01700,
-0xc005f000, 0x20df0036, 0x1df0027c, 0xdb1035c0, 0x70023c00, 0x01b7d009,
-0x1a7d06df, 0x41c16df0, 0x00000660, 0x00000000, 0x005fa000, 0x87dc01f3,
-0x7cc01f70, 0x8c81f300, 0xc09f7004, 0x01f3007c, 0x1f3007cc, 0x3f007cc0,
-0xf007cc01, 0x21bcc01b, 0x0ccc03f7, 0x00c11ff0, 0x00000e00, 0x00000000,
-0x02198815, 0x40840021, 0x08400334, 0x84002100, 0x40273011, 0x10a34128,
-0x2fb141c4, 0xed000840, 0xd022ac04, 0x02b8420a, 0x628408ed, 0x56c00ed0,
-0x00000620, 0x00000000, 0x00190000, 0x231400c1, 0x38418e50, 0xb400e906,
-0x48025002, 0x00a18038, 0x06d00184, 0x2d003940, 0xd002a400, 0x04384008,
-0x028400e5, 0x00400cd0, 0x00000400, 0x00000000, 0x88132804, 0x1c140001,
-0x00480110, 0x34410900, 0x41001020, 0x00892024, 0x04d20504, 0x8d008140,
-0xd8262480, 0x00f04208, 0x0a040acd, 0x12400cd0, 0x00000c20, 0x00000000,
-0x4035a815, 0x0b5c80d3, 0x74d00d70, 0x3d10db40, 0xe2247005, 0x00938824,
-0x0ff2024c, 0xcf003dd0, 0xf0070c00, 0x0074c1b0, 0x0c4d00d7, 0x54c00ff0,
-0x00000620, 0x00000000, 0x00370001, 0x006c001f, 0x07c40170, 0x4c001720,
-0xe0057001, 0x20d78027, 0x2ca0037c, 0x1f00b640, 0xf0037c00, 0x24b3d025,
-0x107c30cf, 0x07c00df0, 0x00000c00, 0x00000000, 0x003f0880, 0x038c00e3,
-0x3cc00fb0, 0xf400ff00, 0xc8333306, 0x00f34224, 0x5f30028c, 0xbf040ec0,
-0x300fec00, 0x003cc083, 0x00cc00db, 0x00c00e30, 0x00000c22, 0x00000000,
-0x003e2081, 0x00d40031, 0x0c500310, 0x74003900, 0x500110a0, 0x80c1002c,
-0x29500744, 0x1d000440, 0x50075c00, 0x00b54135, 0x080009d0, 0x06c00d10,
-0x00000802, 0x00000000, 0x4010a001, 0x036400d1, 0x34400d90, 0x7400dd90,
-0x40051001, 0x00d90024, 0x0d120754, 0x1d00f440, 0x10034406, 0x00344005,
-0x084400d1, 0x04400d10, 0x00000200, 0x00000000, 0x00102010, 0x00340001,
-0x00480010, 0x74000980, 0x40051101, 0x00894030, 0x04500104, 0x4d000050,
-0x5a035400, 0x40314004, 0x020500c1, 0x42400c14, 0x00000080, 0x00000000,
-0x0012b000, 0x034c00d3, 0x30c00db0, 0x7c00cf00, 0x40013002, 0x009b0024,
-0x0532015c, 0x5f0004d0, 0x30034400, 0x2034c005, 0x024c00d3, 0x00c00f30,
-0x00000ac0, 0x00000000, 0x001fb805, 0x00dc203f, 0x0fc203f0, 0xfc003f00,
-0xc203f100, 0x00a7203f, 0x0bf001fc, 0x6f000fc0, 0xf003fc00, 0x001fc007,
-0x02fc00f7, 0x17c00ff0, 0x00000e60, 0x00000000, 0x003f8003, 0x5bcc1033,
-0x2cc04f70, 0xdc003701, 0xc203f013, 0x40eb023e, 0x0e7183c4, 0x331038c0,
-0x9023ec08, 0x083ce40f, 0x03dc00ef, 0x0fc00ff1, 0x00000e00, 0x00000000,
-0x00330001, 0x0bc40601, 0xb4416e10, 0xe8001b02, 0x4001d00b, 0x0a510134,
-0x0d100344, 0x1109bd48, 0xd09b9404, 0x2034500d, 0x034422fd, 0x07414c10,
-0x00000c20, 0x00000000, 0x0537a011, 0x120410c5, 0x10408c51, 0x04000500,
-0x4000d223, 0x80490133, 0x1cd20704, 0x8904b042, 0xd00b0400, 0x0871401c,
-0x036408dd, 0x47401c90, 0x00000e80, 0x00000000, 0x0065a803, 0x02041815,
-0x34400d10, 0x45801500, 0x4081d003, 0x08512034, 0x1d980744, 0x99203542,
-0xd0035408, 0x0075401d, 0x036100dd, 0x0f401d12, 0x00000620, 0x00000000,
-0x0033a802, 0x074d0317, 0x44d00d50, 0x44039502, 0xc731f003, 0x115b2037,
-0x0cf0034d, 0x5b403444, 0xf0034442, 0x0035400c, 0x6f2e00df, 0x03c00db2,
-0x00000e20, 0x00000000, 0x402d8027, 0x27fc013b, 0x5bc00ef0, 0xec09bb00,
-0xc406f083, 0x11bf003f, 0x0f7003fc, 0x77203bc8, 0xf003dc01, 0x003ec00f,
-0x03cca0ff, 0x1fc00fb0, 0x00000602, 0x00000000, 0x02350802, 0x024d02c7,
-0xb4d00d34, 0x5c085f00, 0xc1013023, 0x0a5f0034, 0x8d71235c, 0xd3103644,
-0x32035c02, 0x0037c8cd, 0xc34c00d3, 0x08c40d70, 0x00000420, 0x00000000,
-0x0064a013, 0x02440a11, 0x3c400f10, 0xfc0a7108, 0xc05b102b, 0x021d013e,
-0xad102b04, 0xb1003c40, 0x1003ec00, 0x00f7463d, 0x0f4507e1, 0x4ec20d10,
-0x00000200, 0x00000000, 0x0072a007, 0x82240005, 0x22400c90, 0x04015500,
-0x401c1007, 0x039d21f4, 0x1cd00714, 0x11003248, 0x10031460, 0x4433442c,
-0x231404c9, 0x1c400c50, 0x00000a00, 0x00000000, 0x00788004, 0x262401e1,
-0x7e481e12, 0xe6057188, 0x54181027, 0x013d0078, 0x1fd007c4, 0x31027842,
-0x14079401, 0x127f401e, 0x078409e9, 0x1a401e10, 0x00000200, 0x00000000,
-0x02300012, 0x232400c7, 0x92c04cb0, 0x0c028700, 0x400c3203, 0x008e0030,
-0xcce0031c, 0x034032c0, 0x30031002, 0x0573c00c, 0x231c00ca, 0x48c00c71,
-0x00000040, 0x00000000, 0x002db802, 0x27cc08ff, 0xb9c02ff0, 0x3c24a700,
-0xc187f4c3, 0x00bf003e, 0xaf2023bc, 0xaf38b7c0, 0xf003ec08, 0x003bc02d,
-0x433c00d7, 0x0bc0aff0, 0x00000660, 0x00000000, 0x0037a015, 0x126c001f,
-0x75c03d70, 0x481cd300, 0x450db113, 0x00572034, 0x6d70137c, 0x1328b7c4,
-0x32136c00, 0x0977c88d, 0x134c10c3, 0x54c0adf0, 0x00000e00, 0x00000000,
-0x00398812, 0x220400ed, 0x78404f10, 0x0404f101, 0x404e1233, 0x00a100bd,
-0x4e1133bc, 0x23013f40, 0x505ba440, 0x04bb404e, 0x238502e3, 0x48400fd0,
-0x00000600, 0x00000000, 0x00790003, 0x078401cd, 0x79409e50, 0xa505e903,
-0x021e9007, 0x03e51178, 0xbe5077a4, 0xb9427b40, 0x50179418, 0x407e411e,
-0x17a401f1, 0x0e405ed0, 0x00000402, 0x00000000, 0x00632812, 0x030400dd,
-0x31400c10, 0x2482c970, 0x409d9003, 0x01810030, 0x0c900314, 0x81003340,
-0x50031401, 0x0033403c, 0x032440c1, 0x4a401cd0, 0x00000c20, 0x00000000,
-0x0015a817, 0x014dc07f, 0x55c40575, 0xec015b03, 0xd885b001, 0x0275101c,
-0x037000f4, 0x790817c0, 0x70017c03, 0x060fc033, 0x60e00073, 0x5ed183d2,
-0x00000620, 0x00000000, 0x12070012, 0x005c001f, 0x06c001f4, 0x5c0c1780,
-0xc0017200, 0x411f0087, 0x4173007c, 0x170007c8, 0xf2006c01, 0x0087c021,
-0x005c0017, 0x49d001f0, 0x00000400, 0x00000000, 0x40a70810, 0x020c0093,
-0x35c40930, 0x4c00df00, 0xc00db002, 0x05970164, 0x8172607c, 0x93402742,
-0x70020c00, 0x0007c111, 0x084d008e, 0x40d00150, 0x00000c20, 0x00000000,
-0x00a20001, 0x02450091, 0xa5c00914, 0x45009d00, 0xc0090402, 0x029511e0,
-0x31100c34, 0x95002744, 0x30026c00, 0x00c5c231, 0x0004039d, 0x04480011,
-0x00000080, 0x00000000, 0x00a42018, 0x02440191, 0x25400914, 0x14008d04,
-0x40095002, 0x82950026, 0x01504076, 0x8d002341, 0xd0025400, 0x010760a1,
-0x0065069d, 0x62400150, 0x00000200, 0x00000000, 0x0a242010, 0x32040881,
-0x21406894, 0x16048d00, 0x406850a2, 0x088120a0, 0x88102274, 0x81012342,
-0x10a2340c, 0x02214088, 0x2304088c, 0x42480952, 0x00000080, 0x00000000,
-0x0086901d, 0x10441613, 0x01c44130, 0x5c481f04, 0x40407050, 0x30148946,
-0x61705876, 0x1f8307c5, 0x70501c15, 0x0597c161, 0x586c121d, 0x76c3c170,
-0x00000a80, 0x00000000, 0x012fb819, 0x0afc04bf, 0x27c26972, 0x6c2c9d04,
-0xd069b092, 0x80bf0327, 0x4b5112be, 0xafb32740, 0xf0126c04, 0x012bc24b,
-0x92fc049f, 0x65c04bb0, 0x00000e60, 0x00000000, 0x802fa018, 0x227c10bf,
-0x25c08938, 0x7c109702, 0xc8893012, 0x00bf152c, 0x5bf216dc, 0x9301a4c1,
-0xf0a25c86, 0x256cc11b, 0x46cc00bf, 0x64c099b0, 0x00000e00, 0x00000000,
-0x0007081c, 0xa874021d, 0x8440a110, 0x74221108, 0x48a39400, 0x041d0d84,
-0x51d05445, 0x19010140, 0x90285604, 0x01c46031, 0x1d448b1d, 0x70400110,
-0x00000c22, 0x00000000, 0x0423a010, 0x1234148d, 0xa1404810, 0xf034a501,
-0x404a104a, 0x12cc2021, 0x48d03204, 0x8901a241, 0xd1122406, 0x0c225149,
-0x4244149d, 0xc04068d0, 0x00000e80, 0x00000000, 0x0025a818, 0x1234009d,
-0x20600910, 0xf400b124, 0x400b9002, 0x009d0824, 0x25d00044, 0x89082742,
-0x90027400, 0x28064001, 0x0047001c, 0x60418850, 0x00000620, 0x00000000,
-0x0227a805, 0x027c129d, 0xe5420930, 0x7c1b9720, 0x90592002, 0x869f8025,
-0x01d1105c, 0x934026c8, 0xf202740c, 0x11066241, 0x0444001d, 0x14d029f1,
-0x00000e20, 0x00000000, 0x00258014, 0x027c099f, 0x27c00974, 0x7c019f02,
-0xc0997002, 0xc08f2427, 0x41f0107c, 0x970021c8, 0xb1025c01, 0x0145c541,
-0x247c001f, 0x53c019b0, 0x00000600, 0x00000000, 0x01050814, 0x007c0413,
-0x06ca00b0, 0xcc023f08, 0xc002f000, 0x00170205, 0x01f0107c, 0x130007c1,
-0x30005220, 0x2387c801, 0x006c841b, 0x50c001f0, 0x00000420, 0x00000000,
-0x001ca014, 0x01740271, 0x14400510, 0x04005d00, 0x4005d001, 0x0071001c,
-0x52d100f4, 0x51001f42, 0x10014c00, 0x00cf4922, 0x64840121, 0x52c007d0,
-0x00000200, 0x00000000, 0x00b2a014, 0x033401c1, 0x32400c90, 0x0400cd00,
-0x420cd003, 0x00cd2070, 0x1cd80f14, 0xc5003340, 0x10033400, 0x0033403c,
-0x0b0503cd, 0x40600cd0, 0x00000a00, 0x00000000, 0x00688005, 0x23b41061,
-0x38400c10, 0x84000d00, 0x5000d000, 0x40690270, 0x8ed00bb4, 0xc5233a40,
-0x10078404, 0x007b408e, 0x038410e5, 0x06404fd0, 0x00000200, 0x00000000,
-0x407c1035, 0x07fc01a3, 0x5ac85eb4, 0x8c00ef10, 0x401ef087, 0x21ef0178,
-0x5ef00fbc, 0xe7007bc3, 0x30171007, 0x157b815e, 0x1f8c01cf, 0x44c4fef0,
-0x00000040, 0x00000000, 0x0025b810, 0x5b7cc01f, 0x15c0ad70, 0x7c001f00,
-0xc401f000, 0x00d70076, 0x4de0537c, 0xdb4437c0, 0xf02b7c62, 0x11b3c06d,
-0x035d06db, 0x43c00cf0, 0x00000660, 0x00000000, 0x005fa000, 0x17fca1f3,
-0x7cc03f30, 0xfc01f700, 0xc09fb007, 0x01f3007a, 0x9ff207cc, 0xf3007ec0,
-0x322f4c03, 0x2474c21f, 0x2fcc1bef, 0x08c01ff2, 0x00000e20, 0x00000000,
-0x10898815, 0x13bc88e1, 0x3ac00f10, 0xb4002b00, 0x40c21020, 0x086b0198,
-0x8ed00384, 0xf1003f4a, 0xb007c400, 0x0570400e, 0x03840ce1, 0x54400ed0,
-0x00000660, 0x00000000, 0x001d0000, 0x333400a9, 0x18400e50, 0xb400e500,
-0x440c9003, 0x10e1082e, 0x0ed00384, 0xe9003b42, 0x98038408, 0x0138500f,
-0x03a480f5, 0x00400ed0, 0x00000400, 0x00000000, 0x00432804, 0x03141389,
-0xd0400c10, 0x74801102, 0x4280d000, 0x91c10000, 0xacd16b05, 0xc9403340,
-0x10034400, 0x20f0423c, 0x6f2400c1, 0x48400cd0, 0x00000c00, 0x00000000,
-0x0435a815, 0x03f400db, 0x34500f60, 0x7840d510, 0xc00db003, 0x0180003a,
-0x3cf00744, 0xf9003fc0, 0x9603c502, 0x00f4401c, 0x0b6600c7, 0x44c1bfe1,
-0x00000600, 0x00000000, 0x50b70001, 0x037c0857, 0x37c80df4, 0x7c001f01,
-0xc1003000, 0x00df80a7, 0x2df2037c, 0xd70033c0, 0xf0837c0c, 0x1137c0cd,
-0x035d20d7, 0x27c00df0, 0x00000c00, 0x00000000, 0x004f0880, 0x03bc01ff,
-0x1ec00fb0, 0x4c00ff00, 0x800f3003, 0x40bf005c, 0x1fb003e0, 0xe3403ec1,
-0x9003cc00, 0x203ec80f, 0x07cc00ff, 0x94400ff0, 0x00000c00, 0x00000000,
-0x20060081, 0x0374205d, 0x14c00d10, 0x45001d00, 0x40011400, 0x01910245,
-0x9dd00354, 0xd1003540, 0x10036c00, 0x0034400d, 0x4b5500dd, 0x14400cd0,
-0x00000802, 0x00000000, 0x8234a001, 0x0374181d, 0x36400c90, 0x5400dd08,
-0x400d1003, 0x03950035, 0x0dd00754, 0xd1003640, 0xd0036400, 0x0074401d,
-0x134621dd, 0x05400dd0, 0x00000200, 0x00000000, 0x80302010, 0x0334000d,
-0x32400c10, 0x04000908, 0x40001000, 0x00910001, 0x0dd80714, 0xc1003040,
-0x10132420, 0x2570501c, 0x0304a1c9, 0x51400cda, 0x00000080, 0x00000000,
-0x0006b000, 0x03fc001f, 0x12c40fb1, 0x5c00df10, 0x400d3003, 0x40970005,
-0x0db0037e, 0xf3403ec8, 0xf007ec00, 0x0976c80d, 0x034c00df, 0x05c00ff0,
-0x00000ac0, 0x00000000, 0x000bb805, 0x03fc003f, 0x1de00ff0, 0xfc003f00,
-0xc003f000, 0x20a7003f, 0x0ff003dc, 0xff003fc0, 0xf20bfc00, 0x057be00e,
-0x03fc00ff, 0x06c80ef0, 0x00000e40, 0x00000000, 0x000fa003, 0x10fc243f,
-0x1fc00330, 0xcc003301, 0xc46f2070, 0x0033023c, 0x033000cc, 0xb3583cc4,
-0xb010cc40, 0x052fc00b, 0x03cc067f, 0x0cc08f30, 0x00000e00, 0x00000000,
-0x00070803, 0x28742a1d, 0x174005b0, 0x445ad102, 0x4089b01b, 0x40114231,
-0x0c100244, 0x91003040, 0x10281400, 0x04a74029, 0x13d4065d, 0x05404e10,
-0x00000c20, 0x00000000, 0x0003a013, 0x0210000d, 0x11600810, 0x05040148,
-0x404c1100, 0x00c12030, 0x0c100314, 0x85001140, 0x18001400, 0x09314028,
-0x4324024d, 0x44404c50, 0x00000e80, 0x00000000, 0x0115a803, 0x0574301d,
-0x17608d90, 0x4500d100, 0x640d9803, 0x00d100b5, 0x00100154, 0x85003550,
-0x10034404, 0x0037401d, 0x0374635d, 0x0d400c50, 0x00000620, 0x00000000,
-0x28a78882, 0x043c031f, 0x1dc12130, 0xcc003301, 0xe20d3400, 0x00932094,
-0x0534235c, 0x9704b5c0, 0xb04d5e00, 0x0227c009, 0x032c015f, 0x08c00d74,
-0x00000e20, 0x00000000, 0x0025800f, 0x01fc02ff, 0x1fc407d0, 0xbc00ff00,
-0xe00af043, 0x05af003f, 0x0ff0076c, 0xbb38bec0, 0xf421fd01, 0x042fc00b,
-0x03dc00ff, 0x1fc00fb1, 0x00000600, 0x00000000, 0x40850802, 0x005c00d3,
-0x13c009f0, 0x7c000700, 0xc40d7000, 0x02d34030, 0xad34023c, 0x970634c1,
-0xb4017c98, 0x4077c109, 0x035c43d3, 0x09c00d30, 0x00000420, 0x00000000,
-0x2014a01b, 0x097600d0, 0x95c05dd0, 0x7404d112, 0x405db003, 0x00f12036,
-0x05106274, 0x91c02440, 0x30817400, 0x00b74049, 0x6bc401d1, 0x4c400fb0,
-0x00000200, 0x00000000, 0x8212a007, 0x40241001, 0x730010d2, 0x34200980,
-0x401cd220, 0x06c10131, 0x18170d34, 0x81207700, 0x10126402, 0x0022442c,
-0x07140051, 0x1d480c16, 0x00000a00, 0x00000000, 0x0048800d, 0x04b409e1,
-0x714012d0, 0xb409e910, 0x401a9227, 0x21e1087b, 0x1e1007b4, 0xa1127a40,
-0x9006b401, 0x006b401e, 0x878409e1, 0x10401e95, 0x00000200, 0x00000000,
-0x01b01012, 0x011c00c1, 0x33c044f0, 0x3c000f44, 0xc08cf020, 0x02810031,
-0x4c31833c, 0x850233c2, 0x30123c00, 0x0027c00c, 0x031c00d3, 0x49c00c30,
-0x00000040, 0x00000000, 0x203db802, 0x01fc20ff, 0x3fc807f0, 0xbc00f702,
-0xc00ff023, 0x00bf023e, 0x09f0017c, 0xbf123dd0, 0x3002fe00, 0x002ec00f,
-0x03be20ff, 0x0bc10ff4, 0x00000660, 0x00000000, 0x1077a015, 0x016e0013,
-0x37c40970, 0x4c001f00, 0xc00d3000, 0x01532137, 0x6d300358, 0x9b8034c0,
-0x32034c01, 0x0030180d, 0x136c001b, 0x57c10d34, 0x00000e00, 0x00000000,
-0x08218913, 0x01ad00e1, 0x33000a10, 0x2c20c110, 0x400ab003, 0x0261023b,
-0x0e100384, 0xa3403c41, 0x1003c500, 0x5039400e, 0x330420a1, 0x4b424e10,
-0x00000620, 0x00000000, 0x00790001, 0x058481e1, 0x7b401e50, 0xa4012580,
-0x401e1004, 0x0589007b, 0x1c104784, 0xe1007a50, 0x18078401, 0x08fa4a1e,
-0x37b60181, 0x0f401e10, 0x00000400, 0x00000000, 0x00b32812, 0x81260ac1,
-0x37446c50, 0x6400c500, 0x400c9003, 0x028101b3, 0x0c1c0706, 0xc900f240,
-0x101b0501, 0x0077401c, 0x03540589, 0x4b400c14, 0x00000c20, 0x00000000,
-0x401da817, 0x11cc0b73, 0x17c82770, 0x6c005f00, 0xc0053001, 0x0a5b4097,
-0x05300d4c, 0x53005ec8, 0x3419cc21, 0x0016c005, 0x017c077b, 0x5fc00530,
-0x00000620, 0x00000000, 0x00870012, 0x487c021f, 0x07c40180, 0xfc002a00,
-0xc001f008, 0x001f0003, 0xa1f0406d, 0x170205c0, 0xf0087c08, 0x0005c081,
-0x006c0017, 0x4bc001f4, 0x00000c00, 0x00000000, 0x04270810, 0x024c008f,
-0x24c00830, 0x44009311, 0x80093002, 0x00930037, 0x0930027c, 0x924424d8,
-0x30263c00, 0x0024c008, 0x025c0083, 0x40d00830, 0x00000c20, 0x00000000,
-0x89262001, 0x0a04029d, 0xe4441950, 0x44009141, 0x4499b002, 0x109b2427,
-0x29120a76, 0x91a02440, 0xb0027403, 0x40a6c209, 0x02448091, 0x044009b4,
-0x00000800, 0x00000000, 0x2064a018, 0x4344109d, 0x24404910, 0xd608b100,
-0x40091002, 0x00912027, 0x0e1442b4, 0x95202040, 0x10025418, 0x00644009,
-0x02540091, 0x60400910, 0x00000200, 0x00000000, 0x02202010, 0x8204008d,
-0x20408850, 0x9408a102, 0x40889022, 0x08800223, 0x8e1022b4, 0x85223040,
-0x90223408, 0x82224088, 0x0a040281, 0x40404890, 0x00000080, 0x00000000,
-0x0586b01d, 0x504d141d, 0x84d16110, 0xdd161325, 0xc1613059, 0x16114583,
-0x63315834, 0x050084c1, 0x30d95c02, 0x0594c160, 0x005c8013, 0x74c0b134,
-0x00000ac0, 0x00000000, 0x012fb119, 0x03bc20af, 0x27c84bf0, 0x6c849f01,
-0xc44be012, 0x04bf0127, 0x49f2137c, 0xb9012fc0, 0xf012fc86, 0x012fc04b,
-0x0a7c02bf, 0x67c099f0, 0x00000e60, 0x00000000, 0x062fa018, 0x127c049b,
-0x6cc12b30, 0x8c059301, 0xc1493006, 0x209b01a7, 0x893212c8, 0x92002040,
-0x111a4c02, 0x01acc029, 0x02fc10bf, 0x60c00930, 0x00000e00, 0x00000000,
-0x4087081c, 0x08740211, 0x85006111, 0x44161141, 0x41411058, 0x14510183,
-0x01105044, 0x11050440, 0x1030440a, 0x01044063, 0x0074021d, 0x7041e172,
-0x00000c20, 0x00000000, 0x0123a012, 0x22340881, 0xa0604c12, 0x14028104,
-0x4008541a, 0x02950363, 0x3a920a14, 0xa1012c44, 0x90128400, 0x01a040ca,
-0xc234348d, 0x40500810, 0x00000e80, 0x00000000, 0x0860a818, 0x027434d1,
-0x24400910, 0x54809100, 0x44095002, 0xc4950023, 0x1b901245, 0xb1042c48,
-0x900a8404, 0x2064400b, 0x0274e29d, 0x60400950, 0x00000620, 0x00000000,
-0x01a7a805, 0x027c8293, 0x24d12934, 0x5d009340, 0xc0097002, 0x03874027,
-0x09b20e5c, 0x9302a4d0, 0xb4024d00, 0x9064f019, 0x027c829f, 0x14c00932,
-0x00000e20, 0x00000000, 0x04258016, 0x0f3c20d7, 0x27c099f0, 0x6d00df00,
-0xc09db002, 0x21d30037, 0x0870026c, 0x9f4066c1, 0x700e7c00, 0x0027c049,
-0x0274009f, 0x53c00970, 0x00000600, 0x00000000, 0x08850814, 0x007c041f,
-0x03c20034, 0x0c000f04, 0xc0017084, 0x02134407, 0x01b0084d, 0x134184c0,
-0x34484c40, 0x0045c101, 0x041c021f, 0x50c00034, 0x00000420, 0x00000000,
-0x01dca014, 0x0170825d, 0x9e400555, 0xc5005d00, 0x41155049, 0x08500097,
-0x3510615c, 0x5100d040, 0x100d4400, 0x149f4135, 0x0dc4415d, 0x50400530,
-0x00000200, 0x00000000, 0x00f2a014, 0x133402cd, 0xb3400c50, 0x05804d02,
-0x40140006, 0x00c10003, 0x3c900e44, 0xd100f040, 0x100b2401, 0x0031603d,
-0x8314018d, 0x50400c90, 0x00000a00, 0x00000000, 0x00288005, 0x03f400ed,
-0x0b400e50, 0x90104d00, 0x40065013, 0x00e1200b, 0x0a102794, 0xe100ac41,
-0x1041a402, 0x002b400a, 0x600411ad, 0x14404e10, 0x00000200, 0x00000000,
-0x00781015, 0x07bc91ef, 0x7b401e74, 0x8d016f20, 0xc116300e, 0x01c3022b,
-0x14b2108c, 0x710058d0, 0x3007ed01, 0x0059c01e, 0x179c01bf, 0x54d03cb0,
-0x00000040, 0x00000000, 0x0025b810, 0x133c06dc, 0x36c00df0, 0x6c021f00,
-0xc041f003, 0x02de0127, 0x09f1032c, 0xdf0027d0, 0xf0015c40, 0x20374009,
-0x847c009f, 0x43c16df0, 0x00000660, 0x00000000, 0x005fa000, 0x8ffc01f3,
-0x7fc01ff1, 0xcc037302, 0x80173007, 0x03f3004f, 0x1f3006cc, 0xbb037cc0,
-0x3006cc01, 0x007fc03f, 0x04ec01f3, 0x00c01f30, 0x00000e00, 0x00000000,
-0x201d8815, 0x0bb408e3, 0x08400fd0, 0xac106b00, 0x4006100b, 0x00ef000b,
-0x4bd002c4, 0xf1422840, 0x70528400, 0x000bc00e, 0x818444b5, 0x54400e54,
-0x00000600, 0x00000000, 0x00290000, 0x03940061, 0x01400ed0, 0x34086980,
-0x41061023, 0x00c900ab, 0x26900094, 0x21051958, 0x18030400, 0x001b400e,
-0x203422e1, 0x00400e10, 0x00000400, 0x00000000, 0x20232804, 0x0b3446c1,
-0x00441cd0, 0x34010900, 0x40001007, 0x00c91023, 0x01d04814, 0x81000540,
-0x50450400, 0x0013400d, 0x01340085, 0x10400d50, 0x00000c20, 0x00000000,
-0x4075a815, 0x0b5c03d3, 0x35c00df0, 0xfc035b00, 0xc0153047, 0x00dbc817,
-0x0d3102dd, 0xd30075c8, 0x300f4d00, 0x0017c915, 0x03fc00d3, 0x54d00f34,
-0x00000620, 0x00000000, 0x02270001, 0x2b7c03c7, 0x05c08df0, 0x6c045f00,
-0xc405f043, 0x00d70013, 0x1d70036c, 0xd70136e0, 0xf0017c00, 0x0095c401,
-0x004c80df, 0x07c00df0, 0x00000c00, 0x00000000, 0x001f0880, 0x43cc00f3,
-0x3fc00fb0, 0xac405300, 0xe4173203, 0x00f3023c, 0x573000ec, 0x63015dc0,
-0x7003cc00, 0x0154c007, 0x039c01e3, 0x01c00d30, 0x00000c22, 0x00000000,
-0x01862001, 0x030400d5, 0x37400d10, 0x44001100, 0xc091b023, 0x06d500b6,
-0x0d160344, 0x51403454, 0x10016c50, 0x54114021, 0x806c09d1, 0x04400db0,
-0x00000802, 0x00000000, 0x0010a001, 0x034400d1, 0x33401d90, 0x46880180,
-0x40005103, 0x00c10094, 0x0d100224, 0x91003540, 0x90220480, 0x201440ad,
-0x005460d1, 0x05400d10, 0x00000200, 0x00000000, 0x00102010, 0x030520c5,
-0x03600810, 0x04000100, 0x4000d001, 0x00c54032, 0x08508204, 0xc1002040,
-0x15022400, 0x00016000, 0x012400c1, 0x40400c90, 0x00000080, 0x00000000,
-0x0006b000, 0x014400d1, 0x07c00db0, 0x4d001340, 0x40017403, 0x00d34030,
-0x0530006c, 0x11001148, 0x71024c00, 0x0814c80d, 0x005c20d3, 0x01c00f30,
-0x00000a80, 0x00000000, 0x000fb805, 0x03fc00ff, 0x0fc00ff0, 0xf4203f00,
-0x8003b003, 0x007f003f, 0x03b200fc, 0x3f000fc4, 0xf000fc80, 0x181f8203,
-0x01fc40ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x003ba003, 0x02cc08fb,
-0x0ec04fb4, 0xfc003f00, 0xc00eb000, 0x08392039, 0x0fb2539c, 0xe3083fc0,
-0x700bcc00, 0x013cc04f, 0x01e81cf3, 0x0cc08f30, 0x00000e00, 0x00000000,
-0x00370801, 0x6a4502d1, 0x07448d11, 0x44044f10, 0x400d1b00, 0x0e110034,
-0x0d120bd4, 0xf702bf41, 0x1020c500, 0x25bd406f, 0xab4c02f5, 0x04404d52,
-0x00000c20, 0x00000000, 0x0037a011, 0x126486c1, 0x02440810, 0x15100d00,
-0x440c5000, 0x24090073, 0x4800d325, 0xc100324a, 0x50134580, 0x0230418c,
-0x036424c9, 0xc4401c50, 0x00000e80, 0x00000000, 0x4135a803, 0x006401d5,
-0x07400910, 0x4402d500, 0x440d5400, 0x80510076, 0x0d100344, 0xd9003741,
-0x00114400, 0x0035400d, 0x234400dd, 0x0c401c50, 0x00000620, 0x00000000,
-0x0033a802, 0x032407d3, 0x46ca19b0, 0x5c021d20, 0xc53dd422, 0x125b3037,
-0x3d34037c, 0xd30037c0, 0x60044d80, 0x0034c20d, 0x0f2c00db, 0x08d00d50,
-0x00000e20, 0x00000000, 0x003d8007, 0x82dd00d3, 0x4fc19b70, 0x7d107f01,
-0xc08f30c6, 0x00a7043d, 0x3ff083fc, 0xf74037c2, 0xf001dc00, 0x003fc00f,
-0x07fc00e7, 0x1fc00ff0, 0x00000600, 0x00000000, 0x00350802, 0x076c02d3,
-0x07c08930, 0x3d001340, 0xc42d2082, 0x025b0036, 0x8930033c, 0xc74033c0,
-0xf0014c04, 0x0034c00d, 0x0b4c00d3, 0x09c00df0, 0x00000420, 0x00000000,
-0x0034a013, 0x014400d1, 0x84402912, 0x5403d101, 0x441c500e, 0x06f100b4,
-0x391003c4, 0xf5203f40, 0xd0010482, 0x003c400f, 0x07c440f1, 0x4c420d10,
-0x00000200, 0x00000000, 0x0032a007, 0x020405d1, 0xc2603892, 0x14009101,
-0x419c5401, 0x138d1076, 0x0c100314, 0xc1003361, 0xd0030401, 0x0034400d,
-0x030400c1, 0x1d400c50, 0x00000a00, 0x00000000, 0x406c8004, 0x0c0519a9,
-0x4840da10, 0x8401e100, 0x409e50c5, 0x0135207c, 0x9e102784, 0xe1907b00,
-0xd1058511, 0x907c041f, 0xc7d401f1, 0x10401f10, 0x00000200, 0x00000000,
-0x00301032, 0x220d0803, 0x02e04d30, 0x1c908300, 0xc00c7401, 0x008f0432,
-0x0c32033c, 0xc74033c0, 0xf2090c00, 0x0130c00c, 0x1a0c00c3, 0x49c00c70,
-0x00000040, 0x00000000, 0x203db802, 0x82dc08b7, 0x0ac44f74, 0x5c88ff02,
-0xc00fa021, 0x006b143f, 0x0bb043fc, 0xff043fc2, 0xf0215c08, 0x003bc08e,
-0x43ac02ef, 0x0bc02e72, 0x00000660, 0x00000000, 0x0027a015, 0x034c009f,
-0x24c00df0, 0x5d009f00, 0xc99db04b, 0x04db00b7, 0x7c32176c, 0xd78936c8,
-0xf0114c13, 0x0934844d, 0x030808d3, 0x54c0ddb0, 0x00000e00, 0x00000000,
-0x00298812, 0x008400ed, 0x38400ed0, 0x0400ed00, 0x044e1003, 0x11a1053f,
-0x8e1033c4, 0xff023040, 0x10413402, 0x0531414c, 0x179c04f5, 0x48400f50,
-0x00000620, 0x00000000, 0x00690003, 0x47a6016d, 0x69401cd0, 0xb4018d0c,
-0x401f0007, 0x09e90179, 0x3a1407a4, 0xe8497a40, 0xd005b425, 0x037840de,
-0xc78401e1, 0x0f705ed2, 0x00000400, 0x00000000, 0x00632812, 0x076409dd,
-0x61401cd1, 0x2400cd00, 0x410c9003, 0x83c10032, 0x30180304, 0xc9003048,
-0x10397480, 0x4031480c, 0x031400c5, 0x4b400c50, 0x00000c20, 0x00000000,
-0x0115a817, 0x01ed007f, 0x99d905f0, 0x7c805f00, 0xc433b409, 0x124b06c9,
-0x8530016c, 0x570016c0, 0xe005dc00, 0x001c8007, 0x01cc0073, 0x5fc003f0,
-0x00000620, 0x00000000, 0x00070012, 0x805c001f, 0x46c001f0, 0x5c021f00,
-0xc8813048, 0x00170085, 0x21f0005c, 0x17a007c2, 0xf0005400, 0x2007c001,
-0x005c001f, 0x488011f0, 0x00000c00, 0x00000000, 0x00270810, 0x024c019f,
-0x24d05830, 0x6c858300, 0xc021b002, 0x11d90046, 0x1db0025c, 0x930026c0,
-0x30027c20, 0x08248408, 0x42480093, 0x43c00171, 0x00000c20, 0x00000000,
-0x00262001, 0x0254119d, 0xa4401912, 0x04079314, 0x4031150e, 0x05930307,
-0x09d00254, 0x91182740, 0x10027408, 0x0026c009, 0x86040093, 0x07400110,
-0x00000800, 0x00000000, 0x00248018, 0x0745089d, 0x34440914, 0xe6009161,
-0x40015012, 0x44950007, 0x89d28254, 0x95502342, 0x10027400, 0x00234009,
-0x12540081, 0x63400150, 0x00000200, 0x00000000, 0x00a02010, 0x3604048d,
-0x26406814, 0x8508a100, 0x408c1062, 0x00858227, 0x88d00204, 0x81842340,
-0x10323004, 0x202340c8, 0x02140881, 0x43408810, 0x00000080, 0x00000000,
-0x0006b01d, 0x504c8c1f, 0x04c04514, 0xec101300, 0xc9617009, 0x0e171507,
-0x05d1b854, 0x131007c1, 0x34507c2c, 0x4387c061, 0x505d1413, 0x77c16170,
-0x00000ac0, 0x00000000, 0x002fb819, 0x12fc0caf, 0x2dcc6bf0, 0x7c209e00,
-0xc04af012, 0x0c8b412f, 0x09b0327d, 0x9d0467c0, 0xf212fc8c, 0x03260469,
-0x02eca09f, 0x67c04bf0, 0x00000e60, 0x00000000, 0x0027a818, 0x72cc08bf,
-0x2fd14bf0, 0xcc12b700, 0xc07bb882, 0x54aa236d, 0x0bf91a4c, 0xb7032ec2,
-0xb00a6c04, 0x00a5c029, 0x42ec0093, 0x63c05c30, 0x00000e00, 0x00000000,
-0x0407081c, 0x09440a1d, 0x04406110, 0x6c000da0, 0x4015187c, 0x26150017,
-0x61d80046, 0x11800141, 0x103c4404, 0x0886c821, 0x084c0201, 0x734001b1,
-0x00000c20, 0x00000000, 0x0923a210, 0x1224848d, 0x25510840, 0x04049d00,
-0x40681402, 0x508121a1, 0x28d29a14, 0x8141a042, 0x10022412, 0x01a24068,
-0x02261681, 0x43417898, 0x00000e80, 0x00000000, 0x0025a018, 0x0264009d,
-0x34400910, 0x6000dd40, 0x60815100, 0x209d1227, 0x18d00255, 0x85002540,
-0x11224400, 0x00264009, 0x43440091, 0x63401998, 0x00000620, 0x00000000,
-0x0067a005, 0x0e6d119d, 0x23c00870, 0x4c069500, 0xe0311000, 0x01832021,
-0x59d00254, 0x910024c0, 0x34126c00, 0x4026d009, 0x0e6c0093, 0x17c009bc,
-0x00000e20, 0x00000000, 0x00a58034, 0x265c048f, 0x64c03970, 0x7c009702,
-0xc3113000, 0x24970067, 0x09f2026c, 0x9b9027e4, 0xf0023c00, 0x0020c008,
-0x263c009f, 0x53c00978, 0x00000600, 0x00000000, 0x00050014, 0x084c501f,
-0x07c08134, 0x6c8e1f00, 0xc0213410, 0x00130887, 0x01320054, 0x174007c1,
-0x30087400, 0x0007c801, 0x8c7c8004, 0x51c20130, 0x00000420, 0x00000000,
-0x0014a814, 0x11c5137f, 0x1f408710, 0x84007d00, 0x41131048, 0x007b205f,
-0x273081c4, 0x71101744, 0xb2017400, 0x10174005, 0x09c40051, 0x50400750,
-0x00000200, 0x00000000, 0x0032a014, 0x0544028d, 0xf3401c12, 0x34019d01,
-0x401cd10b, 0x00c10453, 0x2c100335, 0xcc0a7540, 0x18033400, 0x0033600c,
-0x221400c5, 0x51400c90, 0x00000a00, 0x00000000, 0x09388005, 0x01a500ad,
-0x3b400e10, 0x96006d04, 0x604e1003, 0x04e9041b, 0x02801714, 0x61003b4c,
-0x9a033420, 0x003340ce, 0x020408e1, 0x14405f90, 0x00000200, 0x00000000,
-0x00f81015, 0x050c81ff, 0x7bc01e10, 0x2c81ed00, 0xc29e7457, 0x4321085f,
-0x1a240798, 0xef247bc0, 0x3007be11, 0x28fbc15e, 0x029c21e7, 0x55c03eb0,
-0x00000040, 0x00000000, 0x01b59010, 0x01504057, 0x27c00df0, 0x6c00df10,
-0xc06d3103, 0x011f0017, 0x0173736c, 0x1f0037c4, 0xf007fc00, 0x2437c86d,
-0x025c02df, 0x43c12d70, 0x00000660, 0x00000000, 0x00ffa200, 0x05fc41b3,
-0x7dc09f30, 0xfc017b00, 0xc19e7047, 0x01fb007d, 0x97b087ec, 0xfb406ec8,
-0xf087d401, 0x037cc01f, 0x05c40bf3, 0x00c01fc0, 0x00000e00, 0x00000000,
-0x02398815, 0x19b600ab, 0x38400e10, 0x8404ed00, 0x488e3003, 0x02fd001c,
-0x021013ed, 0x61012948, 0xd053ac08, 0x023dc00e, 0x50840cf3, 0x54404ef0,
-0x00000620, 0x00000000, 0x00390000, 0x013412e9, 0x3a640e10, 0x10008502,
-0x008f1023, 0x0821021b, 0x081903a4, 0xe5802840, 0xd0838400, 0xa13a408c,
-0x00a400e9, 0x00410ed0, 0x00000400, 0x00000000, 0x20772804, 0x093080c1,
-0x72000c10, 0x0402cc00, 0x644c1183, 0x07042112, 0x30100324, 0x05002545,
-0xd2071440, 0xc031400c, 0x082400c1, 0x90403c50, 0x00000c20, 0x00000000,
-0x417ca815, 0x057003c9, 0x76500d14, 0x5d879701, 0x484d1c03, 0x07eb0117,
-0x5db083ed, 0x5f0024c0, 0xf82bc500, 0x003ec00f, 0x086d00fb, 0x54c03fd0,
-0x00000620, 0x00000000, 0x00370001, 0x4d3c809f, 0xb4c80df0, 0x5c00cf20,
-0xc00db003, 0x021f1085, 0x01f4035c, 0x930025c2, 0xf9036c00, 0x0035c00d,
-0x005c00df, 0x07c00df0, 0x00000c00, 0x00000000, 0x003f0880, 0x15cc00f3,
-0x7cc00c30, 0xad10f300, 0xc80f3a0f, 0x01fa021f, 0x0b7083dd, 0x67206ec0,
-0xf003cc08, 0x083cca0f, 0x44bc00f6, 0x00c30f30, 0x00000c22, 0x00000000,
-0x40360081, 0x0b450151, 0x70d01d10, 0x44025100, 0x400d300f, 0x03110112,
-0x01300364, 0xd3006740, 0xd0034412, 0x0036c40d, 0x047400d1, 0x04420cb0,
-0x00000802, 0x00000000, 0x8034a001, 0x81550191, 0x36483d91, 0x6780d102,
-0x481d5443, 0x28dd0017, 0x05d28335, 0x550a3762, 0x50036500, 0x0030400c,
-0x107600d5, 0x04400d10, 0x00000200, 0x00000000, 0x20302010, 0x01140091,
-0x32400412, 0x0400c040, 0x601c9403, 0x00058012, 0x00500324, 0x89003340,
-0xd0030100, 0x0032400c, 0x003480c5, 0x40400c90, 0x00000080, 0x00000000,
-0x883ab000, 0x015c00d1, 0x36c00db4, 0x6d001100, 0xc00d1003, 0x00df0017,
-0x097003d4, 0x65403ac0, 0xf0036d00, 0x083cc00f, 0x007c00f7, 0x00c00f30,
-0x00000ac0, 0x00000000, 0x803fb805, 0x02ed00ff, 0x1de00b70, 0xf800ff00,
-0xc20f7403, 0x003b001f, 0x033003dd, 0xf5003fc4, 0xf083fc00, 0x003fc00f,
-0x00fc00fb, 0x17c00ef0, 0x00000e60, 0x00000000, 0x023fa003, 0x53cfc0ff,
-0x3b400ff3, 0xecc03300, 0xc483d200, 0x483b233c, 0x8370a0c5, 0x37020cc0,
-0x31008d48, 0x003cc003, 0x00cd8423, 0x0cd40b35, 0x00000e00, 0x00000000,
-0x01370801, 0x934410fd, 0x374005d0, 0x44009100, 0x400d9003, 0x061302bc,
-0x01100044, 0x11002444, 0x10004400, 0x003ec541, 0x01444855, 0x04400910,
-0x00000c20, 0x00000000, 0x2033a011, 0x532404c4, 0x67460cd0, 0x14004500,
-0x4008d202, 0x08c50130, 0x44500344, 0x85613048, 0x50000444, 0x00324008,
-0x01140001, 0x44400c50, 0x00000e80, 0x00000000, 0x8035a803, 0x036400dd,
-0x17400dd0, 0x7520c500, 0x502d9003, 0x00d40034, 0x45100244, 0x11083041,
-0x50504404, 0x88364009, 0x03140045, 0x0c400c10, 0x00000620, 0x00000000,
-0x0037a802, 0x036400cf, 0x77c81df0, 0x6c62d700, 0xc094f069, 0x0217006c,
-0x3d70480c, 0xd70014d0, 0x740f4d01, 0x0034d105, 0x015c0553, 0x08c01d70,
-0x00000e20, 0x00000000, 0x043d8007, 0x83dc00ff, 0x3fc027f0, 0x4500fb42,
-0xc40fb006, 0x2333026b, 0x14f000fc, 0xef080fc0, 0xb007fc21, 0x0031c046,
-0xa3ec027d, 0x1fc09f92, 0x00000600, 0x00000000, 0x00350802, 0x037c00df,
-0x37c00df1, 0x4d029b00, 0xc12d3003, 0x00db4164, 0x2db01f6c, 0xd74134c0,
-0x30293c10, 0x0036d029, 0x014c10d3, 0x08c10d34, 0x00000420, 0x00000000,
-0x0074a013, 0x43f400fd, 0xba404fd0, 0x4400b100, 0xc02d1002, 0x00e100a6,
-0xa5100244, 0xd100f6c0, 0x10857411, 0x003c4019, 0x2f7c00f1, 0x4c404d10,
-0x00000200, 0x00000000, 0x00b2a007, 0x073408cd, 0x13400cd0, 0x04008909,
-0x400c161b, 0x00050020, 0x08900a24, 0x4d000050, 0x14073400, 0x0031400c,
-0x01040249, 0x1c402c10, 0x00000a00, 0x00000000, 0x00788004, 0x07b409ed,
-0x5a4032d0, 0x85012100, 0x60121105, 0x01f50062, 0x1a100404, 0x292c6840,
-0x1806b605, 0x0079411e, 0x45b41979, 0x10401e10, 0x00000200, 0x00000000,
-0x06301012, 0x033488cf, 0x13c088f8, 0x0502db00, 0xc00c3003, 0x02c74120,
-0x48b1032c, 0xcf003440, 0x30033c00, 0x4131c80d, 0x014c004a, 0x48d00d30,
-0x00000040, 0x00000000, 0x003db802, 0x43fc3aff, 0x3ec80bf0, 0xfe007f00,
-0xc00afa03, 0x00e3106f, 0x0bf0027c, 0x37203fc0, 0xf0227484, 0x003c808f,
-0x03fc0077, 0x0bc08ff0, 0x00000660, 0x00000000, 0x0037a015, 0x034c02df,
-0x77c08d30, 0x6c00d700, 0xc92d3403, 0x00130137, 0x0df0024c, 0xdb0014c0,
-0x38036c40, 0x23b4c005, 0x014c01d3, 0x54c01d30, 0x00000e00, 0x00000000,
-0x00398812, 0x138404ef, 0x3b400618, 0x2400f101, 0x40061001, 0x07e1023b,
-0x0cd000ac, 0xe1200840, 0x1a030400, 0x24384104, 0x038402e1, 0x48400e10,
-0x00000620, 0x00000000, 0x00790003, 0x170401cd, 0x7b405e10, 0x8409a503,
-0x481e9007, 0x05f11873, 0x1ed20786, 0xe9007870, 0x1007a441, 0x0078441e,
-0x058605e1, 0x0c401e10, 0x00000400, 0x00000000, 0x10332812, 0x034440c5,
-0x33408c14, 0x24098100, 0x409c9007, 0x00d10273, 0xacd00226, 0xd9007441,
-0x11172408, 0x4830401c, 0x070704c1, 0x48409c14, 0x00000c20, 0x00000000,
-0x0015a817, 0x0145004d, 0x9fc01732, 0x6c025701, 0xc015b215, 0x00734017,
-0x15f0014c, 0x5b0614d0, 0x35156d43, 0x0014d025, 0x1dcc1173, 0x5cd00530,
-0x00000620, 0x00000000, 0x20070012, 0x007c001f, 0xc7c001f0, 0x1d001f00,
-0xc0007000, 0x001f0003, 0x01f0003c, 0x170087c0, 0xf0005c00, 0x0003e0e1,
-0x047d001f, 0x4bc801f0, 0x00000c00, 0x00000000, 0x00670810, 0x024c009f,
-0x24e09930, 0x4c109f00, 0x80493002, 0x05934024, 0x0938026d, 0x970024c0,
-0x30060c10, 0x5024c019, 0x027c0093, 0x43c00930, 0x00000c20, 0x00000000,
-0x0a260001, 0x0244029d, 0xa6e03810, 0x44008d00, 0x4009100a, 0x809b0124,
-0x0910024c, 0x9100a450, 0x11064100, 0x00a55098, 0x0274009b, 0x07400914,
-0x00000800, 0x00000000, 0x8024a018, 0x0245029d, 0xa4440910, 0xc7009d08,
-0x400b180a, 0x00910065, 0x0a100244, 0xb520ac40, 0x1012c400, 0x0424400b,
-0x02340091, 0x63400910, 0x00000200, 0x00000000, 0x82302010, 0x2204088d,
-0x20401810, 0x84089d00, 0x508a1c22, 0x00890221, 0x2a142204, 0xa190a840,
-0x10028722, 0x00a1408a, 0x0a340289, 0x43402810, 0x00000080, 0x00000000,
-0x0086b01d, 0x584c961f, 0x04414114, 0x4c561f05, 0xc1633058, 0x14130585,
-0x4112584c, 0x070500c1, 0x34504c14, 0x4500c967, 0x003c0003, 0x77c00030,
-0x00000ac0, 0x00000000, 0x0127b819, 0x127e049f, 0x2bd00bf0, 0x7c24bf00,
-0xc049f092, 0x14a7012e, 0x09f012dc, 0x9f0827c0, 0xf0027c00, 0x0026c049,
-0x02fc02ff, 0x67c00bf0, 0x00000e60, 0x00000000, 0x022fa818, 0x52cc10bf,
-0x25c14bf0, 0x4c1c9345, 0xd00b3022, 0x04bb4368, 0x295022dc, 0x9314a6c0,
-0xb0426c30, 0x0024c02b, 0x0a4c0697, 0x60c02930, 0x00000e00, 0x00000000,
-0x0107081c, 0x186d021f, 0x05c021d0, 0x44061100, 0x40211428, 0x06110004,
-0x50100044, 0x3100c440, 0xd0014437, 0x05c040a5, 0x04440911, 0x70401211,
-0x00000c20, 0x00000000, 0x0023a010, 0x4204148d, 0x214008d0, 0x04048100,
-0x41689212, 0x199101a0, 0x28501a14, 0xa9012a40, 0xd0022400, 0x00a04048,
-0x12a404b5, 0x40424a14, 0x00000e80, 0x00000000, 0x1825a018, 0x82440095,
-0x254289d8, 0x45009106, 0x402d920a, 0x01911024, 0x88100a44, 0xb8812c42,
-0xd0026400, 0x80204009, 0x52e000b1, 0x60000b11, 0x00000620, 0x00000000,
-0x0027a005, 0x0245009d, 0xa1c049f0, 0x4c019300, 0xc009b002, 0x008b0024,
-0x0970065c, 0x9b0126c0, 0xb1026830, 0x0024d0b9, 0x026c0297, 0x14d01938,
-0x00000e20, 0x00000000, 0x00258014, 0x027c109f, 0x75c219f0, 0x3c049f00,
-0xc1087003, 0x309e0027, 0x19d0227c, 0x975467c2, 0xf0035c00, 0x0027c018,
-0x065c009f, 0x53c059f8, 0x00000600, 0x00000000, 0x03050014, 0x004c000f,
-0x87c031f0, 0x4c001304, 0xc001f040, 0x00130040, 0x0130000c, 0x332889c0,
-0xf0086c00, 0x0004d021, 0x08cc0233, 0x50d003f0, 0x00000420, 0x00000000,
-0x005ca014, 0x0144027d, 0x974027d2, 0x45005100, 0x41177009, 0x0271009c,
-0x05b001c4, 0x71001540, 0xd0114500, 0x00144197, 0x01440043, 0x504005d0,
-0x00000200, 0x00000000, 0x0072a814, 0x030403cd, 0xb3400cd0, 0x0400d100,
-0x400cd00b, 0x00c10030, 0x0c100624, 0x5540b140, 0xd0071400, 0x00304228,
-0x035400c9, 0x51400dd0, 0x00000a00, 0x00000000, 0x00388005, 0x038402ad,
-0x33420ad0, 0x8404e100, 0x60065003, 0x04e10028, 0x061009a4, 0xa9000940,
-0xd0039400, 0x0038400e, 0x00940121, 0x154002d0, 0x00000200, 0x00000000,
-0x00781015, 0x078d014d, 0x7bc01ef0, 0x8c23c124, 0xd01cf007, 0x05b34068,
-0x1e1406ed, 0x474071c2, 0xf0079c01, 0x4058c01c, 0x079d00fb, 0x55c01ef8,
-0x00000040, 0x00000000, 0x0015b810, 0x037c801f, 0x37c80df0, 0x7d86df40,
-0xc005f01b, 0x099f0027, 0x05f001dc, 0x970006c0, 0xb00b4d00, 0x0017c009,
-0x006d001f, 0x42c001f0, 0x00000660, 0x00000000, 0x407fb000, 0x27cc0133,
-0x7cc09ef0, 0xdc03f700, 0xc017f02f, 0x0177007c, 0x1f3207dc, 0x73007c80,
-0x300fec01, 0x407cc017, 0x07cd01f3, 0x03c01f30, 0x00000e00, 0x00000000,
-0x00ad8015, 0x0380006b, 0x3840aaf0, 0x8408e101, 0x4087d043, 0x0061022d,
-0x06a040fc, 0xab208850, 0x10038400, 0x00384003, 0x00c40025, 0x57400210,
-0x00000620, 0x00000000, 0x00390000, 0x038400a1, 0x38700fd2, 0x9400e500,
-0x4102d103, 0x0025000a, 0x8c1003a4, 0x61423840, 0x1003a401, 0x0010400e,
-0x0b8418e1, 0x03400e10, 0x00000400, 0x00000000, 0x00032804, 0x030420d1,
-0xb0403c52, 0x0402c104, 0x4030d00f, 0x00050003, 0x24904c34, 0x8900c043,
-0x10072403, 0x50104408, 0x2004000d, 0x13400010, 0x00000c20, 0x00000000,
-0x0035a815, 0x02450051, 0xf4c12dd0, 0x5c00f704, 0xc015f20b, 0x0c370036,
-0x2d300e6c, 0x536274c0, 0x34466d2b, 0x0834c009, 0x070d00d3, 0x57c00d34,
-0x00000620, 0x00000000, 0x00b70001, 0x037c801f, 0xb7c00df0, 0x7c10df00,
-0xc045f203, 0x001b0005, 0x05f00a5c, 0x970287c0, 0xf1035c08, 0x0037c409,
-0x007c0017, 0x07c001f0, 0x00000c00, 0x00000000, 0x006f0880, 0x0acc0053,
-0x3ec13ef0, 0xcd20db00, 0x8032b043, 0x00234028, 0x0e3c02cc, 0x714030c0,
-0xf0076c00, 0x001bc00b, 0x03cc40c3, 0x00c00f30, 0x00000c22, 0x00000000,
-0x20062081, 0x03541011, 0x90401dd0, 0x4400d100, 0x4031100b, 0x0e110404,
-0x07540614, 0xb1208c40, 0xd0074400, 0x001f4419, 0x00c5003b, 0x04400214,
-0x00000802, 0x00000000, 0x0210a001, 0x02440011, 0xb6400dd0, 0x0500c900,
-0x6005900b, 0x00150035, 0x0d104644, 0x45103550, 0xd0136400, 0x00374811,
-0x034400d1, 0x04400d50, 0x00000200, 0x00000000, 0x00002010, 0x03140041,
-0x31400cd0, 0x0500c100, 0x40041203, 0x00050001, 0x04500214, 0x81000140,
-0xd0030600, 0x40334400, 0x00440009, 0x40400110, 0x00000080, 0x00000000,
-0x0006a000, 0x024c8013, 0x36c005f8, 0x4c20fb00, 0xd001b003, 0x00170005,
-0x0d10024c, 0x470015c0, 0xf0036c80, 0x4017c009, 0x034c00d3, 0x00d00d30,
-0x00000ac0, 0x00000000, 0x800fa805, 0x03fe207f, 0x3ac00ff0, 0xfc00ff00,
-0xc003f001, 0x002b000e, 0x07f002fc, 0xbf002ec0, 0xf003f820, 0x001fc00b,
-0x00fc003f, 0x17c003f0, 0x00000e60, 0x00000000, 0x003fa003, 0x03dc4073,
-0x0dc8c370, 0xcc183d03, 0xc982b040, 0x0033030c, 0x0f3003ec, 0xfd002ec9,
-0x3083ec98, 0x023cd003, 0x23cc00f3, 0x0cc00ff9, 0x00000e00, 0x00000000,
-0x803f0801, 0x03c400d1, 0x2440c910, 0x64069d03, 0x4061101b, 0x46911384,
-0x2f0103c4, 0xf1002440, 0x100bf406, 0x01b44041, 0x030410f1, 0x04404dd0,
-0x00000c20, 0x00000000, 0x4033a011, 0x032480c5, 0x10404050, 0x24000d01,
-0x40409040, 0x12492101, 0x0c105326, 0xc9002240, 0x548a3404, 0x30b24100,
-0x130404c1, 0x44415cd2, 0x00000e80, 0x00000000, 0x7035a807, 0x036400c1,
-0x345a0910, 0x64009d04, 0x41040000, 0x10910000, 0x0d008306, 0xd1042440,
-0x50227400, 0x02164108, 0x934480d5, 0x0c401dd2, 0x00000620, 0x00000000,
-0x0037a800, 0x036106d5, 0xc4803570, 0x4d0a5e00, 0xd029b000, 0x801340b5,
-0x0c30036c, 0xdb00a6c8, 0x70033400, 0x40768835, 0x034d00d1, 0x00c00cd0,
-0x00000e20, 0x00000000, 0x083c8083, 0x039c00ff, 0x8fc092f0, 0x9c00ef20,
-0xc24bf013, 0x00ff10bf, 0x0ff703fc, 0xff012bc4, 0xb003fe00, 0x4055e83f,
-0x07fc20fb, 0x1fc00ff2, 0x00000602, 0x00000000, 0x40310802, 0x036c02d3,
-0x94d025f0, 0x5c421f20, 0xc0217000, 0x024f80a6, 0x0d70035c, 0xd70025c0,
-0x70227c20, 0x4130c801, 0x074c04c7, 0x08c40d39, 0x00000420, 0x00000000,
-0x03bca013, 0x3bc404d1, 0x9440b110, 0x44009d03, 0x42051000, 0x00dd0024,
-0x4f1003dc, 0xf1402440, 0xb0027400, 0x01b44009, 0x074411f1, 0x4ec00db1,
-0x00000200, 0x00000000, 0x0032a007, 0x0b3400c1, 0xc34010d0, 0x14400d00,
-0x4004d080, 0x000d0000, 0x7c500316, 0xc5811140, 0x40023400, 0x00b14000,
-0x030402c5, 0x1c400c90, 0x00000a00, 0x00000000, 0x02788004, 0x071401c1,
-0x7b421e10, 0x94010d01, 0x00165807, 0x012d0048, 0x1c100714, 0xe1215044,
-0x92063401, 0x0269501b, 0x878509f5, 0x1a081f90, 0x00000200, 0x00000000,
-0x00341012, 0x033c00c3, 0x034161f2, 0x5c004f00, 0xe0087013, 0xa0cd0832,
-0x0c71031c, 0xc50011c0, 0x72033400, 0x2231c000, 0x030c08c7, 0x48c00cb0,
-0x00000040, 0x00000000, 0x003db002, 0x43ce80ff, 0x34e80ff8, 0xec007f01,
-0xc08db003, 0x00bf003f, 0x8fb82bfc, 0xff011fc0, 0xf007fc00, 0x020ec00a,
-0x43fd08eb, 0x0bc18ef0, 0x00000660, 0x00000000, 0x0137a015, 0x1b7c12db,
-0x24c01d34, 0x7c00d300, 0xc00da800, 0x00130016, 0xccf0037c, 0xd40024c3,
-0x301a4d05, 0x20340805, 0x1b6c06db, 0x54c12df0, 0x00000e00, 0x00000000,
-0x02398812, 0x23b400e1, 0x3c600c10, 0xb420eb08, 0x400e1003, 0x00601010,
-0x0ed003b0, 0xe1402840, 0x5022840e, 0x0001400e, 0x338412f1, 0x48404ed0,
-0x00000620, 0x00000000, 0x02710083, 0x17b401e1, 0x68401e12, 0xb401e900,
-0x40181007, 0x81e81078, 0x1fd227b6, 0xed807a42, 0x9007a481, 0x287a4014,
-0x07a425e9, 0x0c405ed0, 0x00000402, 0x00000000, 0x40332832, 0x0370e0d9,
-0xb0406c11, 0x3001d100, 0x080c1003, 0x01d10074, 0x0cd00336, 0xc1003650,
-0x50030600, 0x802340bd, 0x0f0400c1, 0x48400dd0, 0x00000c20, 0x00000000,
-0x0015a817, 0x0170025b, 0x1cd04730, 0xf4877940, 0x90271401, 0x057b01de,
-0x06d0017c, 0x5f019ec0, 0x30016c00, 0x009ee6a7, 0x04ec606b, 0x5cd403f0,
-0x00000620, 0x00000000, 0x40070012, 0x087c1217, 0x07c401f3, 0x7c101f01,
-0xc9007000, 0x001f4407, 0x01f0007c, 0x132485c0, 0xf0007c00, 0x0405e001,
-0x287c021f, 0x4bc011f0, 0x00000c00, 0x00000000, 0x00270810, 0x164c05db,
-0x23e03930, 0x4c009301, 0xc0093402, 0x00930024, 0x59f2026c, 0x9f0024c8,
-0x70023c00, 0x30e25009, 0x404c4193, 0x40d001f0, 0x00000c20, 0x00000000,
-0x40a60001, 0x1e440791, 0x27e03910, 0x04009100, 0x40091002, 0x00918024,
-0x39d0024c, 0x9b202440, 0xb0127400, 0x00e44009, 0x00440091, 0x044001d0,
-0x00000800, 0x00000000, 0xc420a018, 0x02640091, 0xa74a0990, 0x4400d1c0,
-0x50091003, 0x00910834, 0x09d00244, 0x91802441, 0x50127400, 0x00a46009,
-0x41450891, 0x604001d8, 0x00000200, 0x00000000, 0x02202010, 0x22050881,
-0x21488c15, 0x061c8182, 0x41c81822, 0x1c810720, 0x89d02207, 0x89852040,
-0x90523488, 0x052143c8, 0x22040891, 0x404888d8, 0x00000080, 0x00000000,
-0x0586b01d, 0x082c9613, 0x87436130, 0x0d061305, 0xc0611058, 0x06114184,
-0x61f0084c, 0x030114d1, 0x70107c16, 0x4106c861, 0x584c1653, 0x74d161f0,
-0x00000ac0, 0x00000000, 0x0127b819, 0x1a7e0497, 0x2fc04bf0, 0xfe84bf01,
-0xc04bf812, 0x04bf012f, 0x49f01a58, 0x9c052bc4, 0xf002bc04, 0x052ec44f,
-0x13fd049f, 0x67c04af0, 0x00000e60, 0x00000000, 0x022fa018, 0x324c0293,
-0x2f8d0bb0, 0x7c189f21, 0xc049721a, 0x0c9f2324, 0x2bf05a7e, 0x93022f88,
-0x3012ac00, 0x012cc069, 0x36ac04b3, 0x67c65df8, 0x00000e00, 0x00000000,
-0x0285089c, 0x08c40211, 0x07654110, 0x74001d05, 0x40e59018, 0x025d0394,
-0x71d00874, 0x190a8740, 0x51204404, 0x438442e1, 0x08444401, 0x736040d0,
-0x00000c22, 0x00000000, 0x21232010, 0x328486a5, 0xa3480818, 0x14008d08,
-0x4148101a, 0x2c8c1020, 0x6cd01236, 0x89012040, 0x14022416, 0x04204048,
-0x32241281, 0x434138d0, 0x00000e80, 0x00000000, 0x0025a818, 0x02c402b5,
-0x27480912, 0x74009d02, 0x40099082, 0x049d0224, 0x01d80274, 0x99202740,
-0x50026440, 0x00344009, 0x12644091, 0x634019d0, 0x00000620, 0x00000000,
-0x40252805, 0x024d0097, 0x674009b4, 0x5c409f20, 0xd0193412, 0x029f00a4,
-0x01f00274, 0x930026c8, 0x20226c20, 0x0124f009, 0x0a6c0091, 0x174009d0,
-0x00000e20, 0x00000000, 0x00210014, 0x027c009b, 0x27c809f0, 0x7c489f00,
-0xcc393016, 0x209f0027, 0x01f1027c, 0x970527c0, 0xf0065c00, 0x0027c038,
-0x025c009f, 0x53c009f2, 0x00000600, 0x00000000, 0x00050814, 0x007c0413,
-0x07c801f0, 0x3c001f01, 0xc001f008, 0x0213c087, 0x1172004d, 0x038205c2,
-0xb4047800, 0x0885c021, 0x005c0007, 0x50c00172, 0x00000420, 0x00000000,
-0x00142014, 0x01740251, 0xdf402710, 0xf4005d00, 0x4007d001, 0x005b8017,
-0x0310014c, 0x51c09d40, 0xb44d8400, 0x029c4005, 0x01c40071, 0x50500730,
-0x00000200, 0x00000000, 0x0022a014, 0x037400d1, 0x73412c58, 0x3600cd00,
-0x4c0dc803, 0x40c11033, 0x0cd40304, 0xc1803560, 0xd0001400, 0x0035400c,
-0x031600c5, 0xd0440c50, 0x00000a00, 0x00000000, 0x01188004, 0x02b400a1,
-0x1b400e10, 0xb440ed14, 0x400ed213, 0x01c10173, 0x1e900704, 0xc1005140,
-0xd0018404, 0x00304c4f, 0x07c400e1, 0x14405e10, 0x00000200, 0x00000000,
-0x00e81014, 0x073c01e3, 0x7b401e50, 0xbc89ef00, 0xc81ef037, 0x17e1017b,
-0x5ef0478c, 0xe10839c0, 0xf0079c53, 0x4049c75e, 0x079c41e7, 0x54d05e70,
-0x00000040, 0x00000000, 0x4031b010, 0x1b7c00df, 0x07c00170, 0x7c04df00,
-0xc02df003, 0x00df05b7, 0xac70137c, 0xdf001641, 0xb0035c04, 0x1017c02c,
-0x037c001f, 0x43c18d70, 0x00000660, 0x00000000, 0x006fa002, 0x0fce8173,
-0x6fc01730, 0xec91f300, 0x813fb047, 0x01f7147c, 0x1f3047fc, 0xff206cc8,
-0x3005cda1, 0x911ec11f, 0x07cc01e3, 0x08c01f30, 0x00000e00, 0x00000000,
-0x00198011, 0x92860021, 0x39c20600, 0xb400e102, 0x500ed003, 0x00ec0838,
-0x0e1007f4, 0xfd000852, 0x50018400, 0x003c400e, 0xcbc404e3, 0x54400e51,
-0x00000620, 0x00000000, 0x00210000, 0x83a400e1, 0x0b410e90, 0xa400e100,
-0x400e9063, 0x08ed0038, 0x0e1033b4, 0xed022a40, 0x10019400, 0x042e408e,
-0x23a400f9, 0x40410f10, 0x00000400, 0x00000000, 0x00332806, 0x032500c1,
-0xc1403010, 0x3402c002, 0x401cd203, 0x0bc90030, 0x0d100334, 0xc9200240,
-0x54010400, 0x1034400c, 0x0f240005, 0x18403c50, 0x00000c20, 0x00000000,
-0x103da815, 0x016402d1, 0xb7c019b4, 0xe40af242, 0xc00f9023, 0x01ff003c,
-0x0d3003fc, 0xff0036c0, 0x38815400, 0x0836c00f, 0x0f6c00d9, 0x74500f30,
-0x00000620, 0x00000000, 0x40230201, 0x035c00df, 0x11c00d70, 0x7c00df00,
-0xc08df103, 0x10df0037, 0x0df0033e, 0xdf1095c0, 0xf0017c00, 0x00a7e00d,
-0x1a5d00db, 0x07c00df0, 0x00000c00, 0x00000000, 0x023f0a80, 0x23fc15f3,
-0x3cc10b70, 0xcc00f300, 0xc80fb103, 0x00fb003f, 0x0d3203ec, 0xff201cc8,
-0xb021dc00, 0x142fc70d, 0x05dc00ec, 0x04c10ff0, 0x00000c20, 0x00000000,
-0x0c862081, 0x08741291, 0x044491d0, 0x6c80d308, 0x400dd083, 0x80dd0037,
-0x0d100344, 0xdd0456c0, 0x101d3440, 0x2067480d, 0x2c442011, 0x04480cd0,
-0x00000802, 0x00000000, 0x40368001, 0x097480d1, 0x264000d0, 0x4440c900,
-0x400dd003, 0x00c50037, 0x1d100344, 0xdd207440, 0x10017400, 0x0077480d,
-0x035400d5, 0x04400dd0, 0x00000200, 0x00000000, 0x40200030, 0x033600c1,
-0x304004d0, 0x0600c160, 0x400cd003, 0x00cd0033, 0x1d121315, 0xcd001240,
-0x10013440, 0x4023400c, 0x020600c5, 0x40500cd0, 0x00000080, 0x00000000,
-0x40360000, 0x033c0043, 0x00d00979, 0xc500fb00, 0xc00ff803, 0x00fb003f,
-0x0d3417ec, 0xff203480, 0xb4017e00, 0x2027c00f, 0x015c00d7, 0x04c00ff1,
-0x00000ac0, 0x00000000, 0xc00f9825, 0x00fe003f, 0x0fc203f0, 0xf480ff00,
-0xc40ef003, 0x00ff003f, 0x0ff0a36c, 0xff001f80, 0xf001b400, 0x002fc00f,
-0x00fc0033, 0x17c00ef0, 0x00000e60, 0x00000000, 0x003f8003, 0x13de003f,
-0x3ec20f30, 0xcc00fb40, 0xc08bf002, 0x08f3033c, 0x0bf102cc, 0x7f202fc0,
-0x7000ec08, 0x401cc003, 0x038c2073, 0x0cd00330, 0x00000e00, 0x00000000,
-0x88371801, 0x03442a9f, 0x344c0510, 0x040e9122, 0x408ad003, 0x84d50230,
-0x0dd82244, 0x5d003740, 0x10034c44, 0x1214400d, 0x83440041, 0x04502110,
-0x00000c20, 0x00000000, 0x0033a211, 0xa234408d, 0x30548880, 0x0450c140,
-0x4008d003, 0x04c90136, 0x0cd00304, 0x4d003140, 0x510004c0, 0x08044400,
-0x83040909, 0x44402010, 0x00000e80, 0x00000000, 0x2035a003, 0x03660195,
-0x34480d94, 0x44c1d902, 0x4408d100, 0x00dd0036, 0x4dd00344, 0x5d003740,
-0x10036620, 0x0a145a0d, 0x03200049, 0x0c400110, 0x00000620, 0x00000000,
-0x0037a882, 0x0174118d, 0xf4c00db0, 0x4c05da00, 0xc01df002, 0x00db02b6,
-0x09d0024d, 0xdf0137c0, 0x70004d00, 0x0054c201, 0x074c805b, 0x08c0b531,
-0x00000e20, 0x00000000, 0x043d8007, 0x01d410ff, 0x31c00671, 0xfc802510,
-0xc23ff00a, 0x00f7107d, 0x0ff0027c, 0xff003e84, 0xf203dc00, 0x007fc80e,
-0x17dd0077, 0x1fc017f0, 0x00000600, 0x00000000, 0x00350802, 0x82ad229f,
-0x3cf04b30, 0x4c10d341, 0xc60d3003, 0x00d740b4, 0x0d30024c, 0xcf04b7c0,
-0xb0004c04, 0x0004c101, 0x234c1013, 0x08c00530, 0x00000420, 0x00000000,
-0x04f4a013, 0x434400dd, 0xb4403d10, 0x6c12d100, 0x440d1001, 0x00f140b4,
-0x2d10026c, 0xdda83740, 0x100b0403, 0x02b0431d, 0x07440055, 0x4ec1a732,
-0x00000200, 0x00000000, 0x00f22003, 0x4b0400cd, 0x00400c94, 0x0403c502,
-0x42081003, 0x00d144a4, 0x4c100204, 0x4d20e240, 0x90c82449, 0x00004020,
-0x83140241, 0x1c422990, 0x00000a00, 0x00000000, 0x007a0a04, 0x070401fd,
-0x58419490, 0xa409a500, 0x401e1437, 0x41f12248, 0x1e1006a4, 0x6d017b40,
-0x1027a509, 0x0448489c, 0x07d60165, 0x12401b10, 0x00000200, 0x00000000,
-0x08321012, 0x820e18cf, 0xa04408b0, 0x0c08c701, 0xc08c3013, 0x00d38280,
-0x8c34030c, 0x4d0c33c0, 0xb8806400, 0x0004c080, 0x031c0003, 0x48c028b0,
-0x00000040, 0x00000000, 0x003da802, 0x03dc60ef, 0x3fc00f70, 0xfc08eb10,
-0xc08bf011, 0x00df0207, 0x0ff023fc, 0x6f011fc2, 0xf003dc00, 0x401fc08f,
-0x03ed08fb, 0x0bc00af0, 0x00000660, 0x00000000, 0x0077a010, 0x81fe00db,
-0x0dc00d70, 0x4c01d340, 0xc04d3003, 0x00d34407, 0x0d7082fc, 0xd30037c0,
-0x30004c00, 0x0014d001, 0x034c20d7, 0x54c001f0, 0x00000e00, 0x00000000,
-0x00399912, 0x01b400e1, 0x104004b2, 0x8400e140, 0x410a1003, 0x06eb0003,
-0x0e1002f4, 0xf1003b40, 0x14038000, 0x0038500e, 0x028400e1, 0x494032d0,
-0x00000620, 0x00000000, 0x00790004, 0x063401e9, 0x69401a50, 0xc401e100,
-0x401a1007, 0x05e1004b, 0x1e5006b4, 0xe1047b40, 0x54040400, 0x04484010,
-0x0784010d, 0x0c4018d0, 0x00000400, 0x00000000, 0x20332016, 0x0b3409c1,
-0x30400c51, 0x4412c100, 0x480c1005, 0x00c90083, 0x0c102674, 0xc1007346,
-0x50030400, 0x0c70400d, 0x074400c9, 0x494088d0, 0x00000c20, 0x00000000,
-0x0017a817, 0x09f4037b, 0x1dc00750, 0xcd847348, 0xc2053401, 0x00530017,
-0x0571017c, 0x53409fc0, 0x70014c02, 0x005cc605, 0x054d227f, 0x5cc037f0,
-0x00000620, 0x00000000, 0x00058012, 0x407c001f, 0x03c001b0, 0x7ca01f00,
-0xc401f220, 0x001f2003, 0x01f0007c, 0x0f0047c0, 0xb000bc10, 0x0007d003,
-0x287c0317, 0x4bc101f0, 0x00000c00, 0x00000000, 0x00250810, 0x023c109f,
-0x24c00830, 0x70029340, 0xc8090402, 0x05830434, 0x5930824c, 0x930027c0,
-0x34067c05, 0x0026c229, 0x064c0093, 0x40800934, 0x00000c20, 0x00000000,
-0x38262001, 0x0270209d, 0x24440911, 0x74009100, 0x42091002, 0xa1911024,
-0x29500254, 0x910a2340, 0x10064400, 0x50245009, 0x6a440391, 0x04408910,
-0x00000800, 0x00000000, 0x0464a01c, 0x0274009d, 0x24540910, 0x74009160,
-0x40085202, 0x00910024, 0x09100244, 0x91002740, 0x1022e400, 0x8022400b,
-0x02441881, 0x61400818, 0x00000200, 0x00000000, 0x00202814, 0x5234008d,
-0x20414810, 0x34148105, 0x51485002, 0x28814230, 0x18500a14, 0x81203740,
-0x10228408, 0x0220408e, 0x22050881, 0x41508810, 0x00000080, 0x00000000,
-0x0006b01d, 0x107e141f, 0x04c24130, 0x7c040301, 0xc0417028, 0x02130584,
-0x0130504c, 0x134007c0, 0x30586c16, 0x0d82c163, 0x084c1613, 0x75c16130,
-0x00000ac0, 0x00000000, 0x0023a919, 0x82fc00ff, 0x2fd40bf4, 0xbc14ff30,
-0xc54bb007, 0x869f0127, 0x0bf002fc, 0x9f002bc0, 0xf1126c04, 0x012fc249,
-0x12fc04bb, 0x66c04bf0, 0x00000e60, 0x00000000, 0x802fa018, 0x027c049f,
-0x25c14930, 0x4c00b300, 0xcb2d3022, 0x00b31024, 0x0af0027c, 0xa3002cc2,
-0x3002cc00, 0x0526c089, 0x024c409f, 0x60c00970, 0x00000e00, 0x00000000,
-0x0007181c, 0x087c021f, 0x0c482110, 0x5d161108, 0x44411000, 0x1f130280,
-0x01d00074, 0x111016d0, 0x10000404, 0x01844000, 0x0045001d, 0x7140a2d0,
-0x00000c20, 0x00000000, 0x00210012, 0x0eb402ad, 0xeb401a94, 0x04428900,
-0x40089212, 0x04890462, 0x08d05a34, 0x81002442, 0x10420430, 0x0428404a,
-0x52a416ad, 0x40414a50, 0x00000e80, 0x00000000, 0x00252018, 0x02d40095,
-0x2e408b90, 0x14048948, 0x44499082, 0x80910026, 0x49d01274, 0x91002440,
-0x18034400, 0x083c400b, 0x12e400bd, 0x61400bd0, 0x00000620, 0x00000000,
-0x0027a805, 0x0a74029d, 0xa7c029b0, 0x4c029b00, 0xd009a002, 0x009b4026,
-0x18f0067c, 0x9340a440, 0x30024c20, 0x0064c009, 0x066c0d9f, 0x14c12970,
-0x00000e20, 0x00000000, 0x00258012, 0x0e78009f, 0x25c01872, 0x5c209748,
-0xc0087412, 0x009f0035, 0x09f1067c, 0x9f1227c0, 0xf4023d00, 0x00a5d009,
-0x065c108f, 0x53c008f0, 0x00000600, 0x00000000, 0x00450810, 0x00bc423f,
-0x08c00338, 0x4c001300, 0xc0013000, 0x00134040, 0x11f0004c, 0x034044c0,
-0xb0004c00, 0x0306c000, 0x804c8013, 0x50c061f2, 0x00000420, 0x00000000,
-0x009ca014, 0x0174005d, 0x15500510, 0x44847100, 0x40051001, 0x005b0014,
-0x67d10144, 0x71109846, 0x142d4604, 0x00944205, 0x2d449051, 0x52c005d2,
-0x00000200, 0x00000000, 0x0032a014, 0x033400cd, 0x30500c10, 0x0484c950,
-0x400c5403, 0x21c10830, 0x1cd00304, 0xc1083042, 0x942f0580, 0x40f2420c,
-0x070403c1, 0x52402cd8, 0x00000a00, 0x00000000, 0x04388801, 0x00b4002d,
-0x41500210, 0x84002940, 0x404ed003, 0x03e91038, 0x0ed10384, 0xe1103840,
-0x90038408, 0x0058480a, 0xc38600f1, 0x16400ed0, 0x00000200, 0x00000000,
-0x00781011, 0x073c01ef, 0x38c01c10, 0xcd01eb00, 0xd03f741f, 0x01f30878,
-0x1ef0178d, 0xa30078d0, 0xb00f8405, 0x007ec01e, 0x078d01e3, 0x56d01af0,
-0x00000040, 0x00000000, 0x0015a810, 0x007c001f, 0x07d001c4, 0x7c000700,
-0xc16d305b, 0x00df00b7, 0x05f0237c, 0xdf0033c0, 0x70037c20, 0x0017c20d,
-0x037c00cd, 0x43c029f0, 0x00000660, 0x00000000, 0x005d2000, 0x87cc01ef,
-0x7cc21f30, 0x8d21f328, 0xc01fb007, 0x01b300fc, 0x1f3007cc, 0xff005fc0,
-0x7507fc01, 0x007ec01f, 0x86cc8177, 0x00c03730, 0x00000e00, 0x00000000,
-0x00191815, 0x0084082f, 0x08408208, 0x8400a100, 0x400e9003, 0x00af0238,
-0x06b103ac, 0xef003b44, 0x1063840a, 0x021e508a, 0x02d510e1, 0x544006b0,
-0x00000620, 0x00000000, 0x00090000, 0x030510ed, 0x3a400c10, 0xc400a102,
-0x410c1063, 0x00a10030, 0x0a1003a4, 0xcd043b40, 0x50031400, 0x0038500c,
-0x63a4087d, 0x00400310, 0x00000400, 0x00000000, 0x00112004, 0x00040205,
-0x02422014, 0x04018100, 0x401c140f, 0x009d0130, 0x10100324, 0xc501f340,
-0x10030400, 0x0112400c, 0x06340259, 0x10400090, 0x00000c20, 0x00000000,
-0x0025a815, 0x074402dd, 0x76c09d30, 0xcd32c330, 0xd01fb083, 0x00d340b4,
-0x551003ec, 0x7d0077c0, 0x700ddc00, 0x00a4c075, 0x856c099f, 0x54d00d34,
-0x00000620, 0x00000000, 0x00370001, 0x047c101f, 0x45c011f0, 0x7c101f00,
-0xc80df043, 0x00df0037, 0x25f1037c, 0xcf2037c4, 0xf0415c82, 0x02b5d041,
-0x015c0097, 0x07c02d70, 0x00000c00, 0x00000000, 0x022f0884, 0x038c00eb,
-0x32c00e30, 0xcc00f300, 0xc00fb403, 0x0193003f, 0x4338030c, 0x7f003fc0,
-0xb0008e01, 0x00a8c02f, 0x01c908b2, 0x00801e30, 0x00000c22, 0x00000000,
-0x20122085, 0x00440011, 0x05480154, 0x41001500, 0x420d1003, 0x01b10037,
-0x31500344, 0xdd08e640, 0x10004401, 0x00b44131, 0x0144009b, 0x06c01910,
-0x00000802, 0x00000000, 0x0014a201, 0x034000d9, 0x36580d11, 0x04a0d110,
-0x400d1883, 0x04910833, 0x25100344, 0x550d3748, 0x90934444, 0x00244204,
-0x42170055, 0x05406d10, 0x00000200, 0x00000000, 0x00102810, 0x00044001,
-0x01400050, 0x04208500, 0x400c1803, 0x00810053, 0x04500305, 0xcd003340,
-0x10010400, 0x00004000, 0x021500cd, 0x43400416, 0x00000080, 0x00000000,
-0x0006b000, 0x034d00db, 0x36c00d30, 0xcd008320, 0xc00fb003, 0x00d30037,
-0x0110034c, 0x5f8037c8, 0xb0034400, 0x0824d00d, 0x015c0017, 0x01c00d30,
-0x00000ac0, 0x00000000, 0x001fa805, 0x00fc003f, 0x0fc003f4, 0xfc00bf60,
-0xc00ff003, 0x00ff003f, 0x03f003fc, 0xff002ec0, 0xf401fd00, 0x000fc203,
-0x00ec002b, 0x16c002f0, 0x00000e60, 0x00000000, 0x003fa003, 0x33dc0cf7,
-0x0ce80330, 0xf450f301, 0xc02ff040, 0xb4ef010f, 0x4f3010dc, 0xf3060cc0,
-0x3000fc10, 0x013ac003, 0x03844cfb, 0x0cc00f30, 0x00000e00, 0x00000000,
-0x203f0801, 0x3a4c0e41, 0x8440a110, 0x7416e180, 0x4a2fd149, 0x82fd2182,
-0xef100844, 0xf1098441, 0x10387412, 0x02bc40e1, 0x03440ee1, 0x04402f50,
-0x00000c20, 0x00000000, 0x0033a011, 0x030500c5, 0x20414014, 0x3400c107,
-0x406cd010, 0x00cd0603, 0x0d100814, 0xc1002040, 0x10c03404, 0x00304104,
-0x036400c9, 0x44402d10, 0x00000e80, 0x00000000, 0x08358803, 0x4244a051,
-0x25410010, 0x7600d105, 0x400dd000, 0x00dd0017, 0x0d130044, 0xd0000542,
-0x10013400, 0x18344904, 0xa36400d1, 0x0c400d50, 0x00000620, 0x00000000,
-0x0037a802, 0x2c44a017, 0x14500d30, 0x7c00d040, 0xc00df20a, 0x00df1137,
-0x0d10015c, 0xd34094e2, 0x340b7c00, 0x0034d009, 0x036d00db, 0x08d00d30,
-0x00000e20, 0x00000000, 0x00358007, 0x42fe082f, 0x5ac09ff1, 0x7c00ff00,
-0xc80ff017, 0x00ff303e, 0x0ff4657c, 0xff0096c0, 0xf1007c00, 0x143fe00f,
-0x03d800ff, 0x1fc00df2, 0x00000600, 0x00000000, 0x00350802, 0x080c1097,
-0xa4c02df1, 0x5c04db10, 0x840d3408, 0x08d30007, 0x4d30036c, 0xd740a4c0,
-0x340b7c00, 0x0037c029, 0x035c20c7, 0x08c00df1, 0x00000420, 0x00000000,
-0x003ca013, 0x0a4c0091, 0x24400dd2, 0x4423f300, 0x400f1014, 0x02e10817,
-0x2e108304, 0xf1000441, 0x1281740a, 0x04bb480d, 0x630400f1, 0x4c507e30,
-0x00000200, 0x00000000, 0x00368007, 0x01060285, 0x014000d1, 0x1400c500,
-0x440c501c, 0x10c10003, 0x1c100224, 0xc1000440, 0x10003400, 0x00724000,
-0x0f1400c5, 0x9c404c50, 0x00000a00, 0x00000000, 0x00788004, 0x45a51161,
-0x49541cd0, 0xa409e500, 0x461e1105, 0x21e1004b, 0x1f100684, 0xe1106840,
-0x1006b401, 0x017b4012, 0x07842de1, 0x10405e12, 0x00000200, 0x00000000,
-0x00301012, 0x010e0487, 0x15c000f0, 0x1c10c740, 0xc00c300b, 0x00c34023,
-0x0c34612c, 0xc100b0c0, 0x30083c00, 0x0032c08c, 0x031c04c7, 0x48c00c70,
-0x00000040, 0x00000000, 0x043db802, 0x21dc007d, 0x1ec00ff0, 0xdc00fa02,
-0xc48ff003, 0x00fd103f, 0x0ef001fc, 0xfb003fc1, 0xf003fc00, 0x013fc40f,
-0x23fe24df, 0x0bc14f70, 0x00000660, 0x00000000, 0x0d37a015, 0x004c0117,
-0x37c00134, 0x4d13df08, 0xc18d7002, 0x10de0036, 0x4df0024c, 0xd10814c8,
-0xf0037c14, 0x0d33c001, 0x434c12d3, 0x54c10d72, 0x00000e00, 0x00000000,
-0x01398812, 0x03c40071, 0x3b400e10, 0x8406fd00, 0x400ed003, 0x80e9003b,
-0x4fd00284, 0xe1003041, 0xd002b482, 0x003b4006, 0x939402f1, 0x48404ed0,
-0x00000620, 0x00000000, 0x00710003, 0x048401a5, 0x7b401210, 0x8401ed00,
-0x405ed007, 0x09cd206b, 0x5ed00786, 0xe1007840, 0xd007b445, 0xc27f403a,
-0x278405e1, 0x0e401ed0, 0x00000400, 0x00000000, 0x10332812, 0x070521c1,
-0x73401d10, 0x0420cd02, 0x400dd00b, 0x00c900f7, 0x0cd00f04, 0xd1023050,
-0xd0077400, 0x0033401d, 0x171400c0, 0x4a420cd0, 0x00000c20, 0x00000000,
-0x0015a837, 0x1dcc0777, 0x9fc07730, 0xcc005f00, 0xc4057001, 0x005f015f,
-0x07f015cc, 0x53005cc0, 0xf01dfc00, 0x001fc037, 0x488c0061, 0x5ed006f8,
-0x00000620, 0x00000000, 0x00070012, 0x407c101f, 0x07c101f0, 0x7c801f04,
-0xc001f000, 0x000b0407, 0x01f0405d, 0x1f4007c0, 0xf0407c00, 0x0007c101,
-0x007c001f, 0x49c001f0, 0x00000c00, 0x00000000, 0x00270810, 0x8e3c409b,
-0x24c00930, 0x7e009f10, 0xc2093042, 0x00930024, 0x39d0024c, 0x9b0024c0,
-0x70024c05, 0x2020c009, 0x004c0093, 0x40c009f2, 0x00000c20, 0x00000000,
-0x00262001, 0x0e740091, 0x24480910, 0x74829d00, 0x4009100a, 0x00910024,
-0x39d28264, 0x910026c0, 0x10024503, 0x10a44009, 0x046c8091, 0x04400910,
-0x00000800, 0x00000000, 0x0020a018, 0x42740099, 0x24440910, 0x34029d00,
-0x4009100a, 0x00910024, 0x08d00365, 0x91002051, 0x108244c2, 0x41244009,
-0x19450099, 0x60601950, 0x00000200, 0x00000000, 0x00a02010, 0x0a340281,
-0x2141c810, 0x34808d17, 0x50881052, 0x00818720, 0x08d05224, 0x81672040,
-0x18720400, 0x022051c8, 0x22240891, 0x40489810, 0x00000080, 0x00000000,
-0x0006b01d, 0x007cc01b, 0x84d06130, 0x74141f11, 0xc1613410, 0x14134184,
-0x41f0104c, 0x13018441, 0x34184c14, 0x9594c061, 0x584c5613, 0x74d16172,
-0x00000ac0, 0x00000000, 0x00a7b819, 0x8afc62bf, 0x2ec84bf4, 0xf4149f01,
-0xc0497152, 0x009f012f, 0x49f002dc, 0x9f092fc3, 0xf012fc14, 0x2127c84b,
-0x12dd849f, 0x67c04870, 0x00000e60, 0x00000000, 0x01a7a018, 0x4afc06b3,
-0x27c029f0, 0xdc10bf85, 0xc1293042, 0x04932127, 0x2bf0123c, 0xbf08270e,
-0x30424c86, 0x01afc009, 0x168c109b, 0x60c12bf0, 0x00000e00, 0x00000000,
-0x0107081c, 0x10342659, 0x8344a1d8, 0x55001d11, 0x40605408, 0x42110597,
-0x019100e6, 0x19038640, 0x12004504, 0x004740a5, 0x544c0217, 0x704071d0,
-0x00000c20, 0x00000000, 0x0322a010, 0x02340889, 0x230048d0, 0x04108d04,
-0x40485052, 0x08a90223, 0x28c00ab4, 0x8d042340, 0x90420402, 0x91b74108,
-0x0a243481, 0x40404cd0, 0x00000e80, 0x00000000, 0x0025a818, 0x02748099,
-0x274009d0, 0x44209900, 0x4409102a, 0xa0990227, 0x09d046f4, 0x9d01a740,
-0x94064400, 0x20074049, 0x50440095, 0x604801d0, 0x00000620, 0x00000000,
-0x40278805, 0x027c0293, 0x274809d2, 0x5c209d01, 0xc0097002, 0x00994027,
-0x09f88274, 0x9f0827e0, 0xb0024400, 0x0007c029, 0x00640093, 0x14d001d0,
-0x00000e20, 0x00000000, 0x00258014, 0x027c0097, 0x67c209f0, 0x7c009f02,
-0xc009f042, 0x00971023, 0x09b0026c, 0x9b1066c0, 0x70027c00, 0x8007c009,
-0x007d009f, 0x53c001f0, 0x00000600, 0x00000000, 0x20010814, 0x907c0212,
-0x87a00130, 0x7c400300, 0xc001f288, 0x00330004, 0x813108fc, 0x0f1007c0,
-0xf0003c00, 0x0044d021, 0x88440013, 0x50c01072, 0x00000420, 0x00000000,
-0x0014a014, 0x89f43071, 0x17e2051d, 0xf6007100, 0x4005d00d, 0x40530014,
-0x1710015c, 0x7d0017c0, 0xd0817401, 0x000c4005, 0x08ec0051, 0x50400330,
-0x00000208, 0x00000000, 0x8032a014, 0x833412c1, 0x33420c50, 0x7409c908,
-0x400cc80f, 0x00c50030, 0x0c140334, 0xcd003340, 0xd8033401, 0x0034620c,
-0x170400d9, 0x50400c51, 0x00000a00, 0x00000000, 0x00308005, 0x04b40021,
-0x79444e52, 0xb480e111, 0x481ed043, 0x802d2338, 0x0e9004b4, 0x6d003908,
-0xd003b410, 0x013040dc, 0x77e580c9, 0x14404e90, 0x00000200, 0x00000000,
-0x01781015, 0x07bc01e3, 0x7b409e50, 0xb441eb45, 0xd11ef005, 0x81e74570,
-0x163007bc, 0xad127b40, 0xf027bc01, 0x4378c05e, 0x278d01eb, 0x54d03c70,
-0x00000040, 0x00000000, 0x1135b810, 0x0274001f, 0x37808da1, 0x7c005f00,
-0xc0adf001, 0x00130837, 0x0d70005c, 0x1f02b7c0, 0xf0837c00, 0x13b7c10d,
-0x1b5c5ed7, 0x43c16d70, 0x00000660, 0x00000000, 0x04bfa000, 0x85fe09bf,
-0x7fc2cff0, 0xe981ff24, 0xc81ff007, 0x01ff107d, 0x1f7007fc, 0xfb087cc8,
-0xe067cc21, 0x007cc01f, 0x07c409f9, 0x00c01ff0, 0x00000e00, 0x00000000,
-0x02398815, 0x109c00ad, 0x3b440ec0, 0x8400ad10, 0x400ec000, 0x00292038,
-0x0e1000b4, 0x65003c10, 0xd0238482, 0x0038424e, 0x5b868ce1, 0x54408ed2,
-0x00000620, 0x00000000, 0x02390000, 0x01b600ad, 0x3b608ed1, 0x8400e900,
-0x400ed043, 0x00ed0438, 0x06500324, 0xa1003c40, 0xda0b8400, 0x4232450c,
-0x038400e1, 0x02400ed0, 0x00000400, 0x00000000, 0x00332804, 0x1a10018d,
-0x33402cc0, 0x00000d80, 0x480cd000, 0x400d9830, 0x08100034, 0x05043042,
-0xd1030400, 0x0032401c, 0x0f4500c1, 0x12440cd0, 0x00000c20, 0x00000000,
-0x003da815, 0x0a74005f, 0x3fc0afd0, 0x4c001b00, 0xd00ff006, 0x00df007c,
-0x0d70036c, 0xd1003c80, 0xc003cd00, 0x4032e01f, 0x8f4c00f3, 0x56900cf0,
-0x00000620, 0x00000000, 0x20370001, 0x205c180f, 0x33c41df0, 0x1c00df00,
-0xc00cf002, 0x001b0037, 0x04f0007c, 0xd70836c0, 0xf2077c00, 0x0035c00d,
-0x1b6c00cf, 0x05c00df0, 0x00000c00, 0x00000000, 0x803f0880, 0x03ec097f,
-0x3ec00ef0, 0xfc251330, 0xc00d3020, 0x40ff003c, 0x45f003fc, 0x5f003cc0,
-0xf003cc02, 0x203fc00f, 0x07cc00f3, 0x00c00d30, 0x00000c22, 0x00000000,
-0x00362081, 0x2744531d, 0x34600dd0, 0x74025108, 0x440db000, 0x20170034,
-0x15d00074, 0x5f003440, 0xd0034403, 0x0035c00d, 0x034400d1, 0x04400db0,
-0x00000802, 0x00000000, 0x0034a001, 0x0064005d, 0x34400dd2, 0x74021150,
-0x400d5803, 0x00dd0035, 0x0dd00374, 0x8d003441, 0xd0035480, 0x0077400d,
-0x234500d9, 0x04601d10, 0x00000200, 0x00000000, 0x00302010, 0x800480cd,
-0x32400cd1, 0x36008180, 0x500c1400, 0x00050031, 0x04c00034, 0x85003050,
-0xd0031000, 0x0075000c, 0x034400c0, 0x40501d90, 0x00000080, 0x00000000,
-0x003eb000, 0x016e005d, 0x3cd00fd0, 0x7c601300, 0xc00f1003, 0x40df203d,
-0x05f00374, 0x1d003cc4, 0xf003dc00, 0x0037c00f, 0x034c00eb, 0x00d00d30,
-0x00000ac0, 0x00000000, 0x003fb805, 0x03fc00ff, 0x3dc00ff8, 0xfc403f00,
-0xc00ff000, 0x0036003e, 0x07f000fc, 0x3f803fc4, 0xf003ec00, 0x503fc00f,
-0x03fc00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x102fa203, 0x83bc0873,
-0x1fc14f30, 0xce003328, 0xc06b3088, 0x02f70a3f, 0x0ff003cc, 0xf7080fc6,
-0x7080ee04, 0x081fc02f, 0x03cc003f, 0x0cc043f0, 0x00000e00, 0x00000000,
-0x06b70801, 0x03f42081, 0xaf482d14, 0x44520100, 0x406bb000, 0x24f1003f,
-0x01d003c5, 0xd9422300, 0xb2007000, 0x0837424d, 0xc344401d, 0x0440a5d0,
-0x00000c20, 0x00000000, 0x2123a011, 0x03344481, 0x93400c10, 0x040c0100,
-0x4028d013, 0x04c51133, 0x1cd00304, 0xcd604340, 0x18d20402, 0x2013404c,
-0x8334005d, 0x455014d0, 0x00000e80, 0x00000000, 0x0135a803, 0x03761091,
-0x67601d11, 0x44205508, 0x4009d083, 0x00d10037, 0x11d18344, 0xdd206744,
-0x90023400, 0x0017624d, 0x0160625c, 0x0c4005d0, 0x00000620, 0x00000000,
-0x0027a802, 0x037c40d3, 0x53c01d30, 0xc5011301, 0xc089f0c3, 0x00d72037,
-0x05f0034c, 0xd70847c0, 0x7006ec00, 0x2017812d, 0x0f7c005f, 0x09c48cf0,
-0x00000e20, 0x00000000, 0x40398007, 0x83f403ff, 0x2fc805f0, 0x3c453b00,
-0xc009b00f, 0x00ff0037, 0x0bf003f4, 0xf1002fc2, 0xf00f7800, 0x801e821f,
-0x8bdd007f, 0x1fc20fe0, 0x00000600, 0x00000000, 0x00250802, 0x034c81df,
-0x14d00d34, 0x4c014b00, 0xd0093083, 0x00d3c030, 0x0db0037c, 0xdb4007c0,
-0xb0834c00, 0x0094c01d, 0x0f4c0a53, 0x08c10df0, 0x00000420, 0x00000000,
-0x0034a013, 0x1b80019d, 0x24400d10, 0xc4005000, 0x01094003, 0x00f1003c,
-0x1b5003fc, 0xf1002704, 0xb10fe88a, 0x0044881d, 0x876c6041, 0x4e803fd0,
-0x00000200, 0x00000000, 0x0022a007, 0x932500cd, 0x72498810, 0x04200900,
-0x033c1003, 0x00d10031, 0x1c180334, 0xc8101702, 0x9044048a, 0x01d3612c,
-0x02140185, 0x1c4294d2, 0x00000a00, 0x00000000, 0x00788004, 0x27a409ad,
-0x62401e10, 0x84016120, 0x401e5807, 0x21e10279, 0x1a402794, 0xe1c05b41,
-0x91458401, 0x4459401f, 0x0fb50925, 0x124016d1, 0x00000200, 0x00000000,
-0x00301012, 0x032c00cf, 0x12402832, 0x0c000b04, 0x42083083, 0x00c12031,
-0x8cb00374, 0xcb400340, 0xb0010424, 0x0093c00c, 0x0b1c4057, 0x48c08cf0,
-0x00000040, 0x00000000, 0x003db802, 0x0bdc00bf, 0x2dc08ff0, 0xfd407f80,
-0xc80bf003, 0x00df0c36, 0x0bf04bfc, 0xee023fc0, 0xe003fd00, 0x221ad80e,
-0x03ec007b, 0x0bc20ef0, 0x00000660, 0x00000000, 0x0827a015, 0x072d80cf,
-0xb4c20b32, 0x4c035384, 0xc0593203, 0x38d32134, 0x05300b4d, 0xd7000fc0,
-0xb0007c00, 0x2014c05d, 0x066c005f, 0x57c00d30, 0x00000e00, 0x00000000,
-0x00398812, 0x1b8400ed, 0x39080e15, 0xc6306110, 0x408b1003, 0x04f10338,
-0x4e1013fc, 0xe9003f08, 0xb503dc04, 0x801ac54f, 0x03ac007d, 0x4b406e32,
-0x00000620, 0x00000000, 0x00790003, 0x97e401fd, 0x78001812, 0xa4416188,
-0x401e14c3, 0x05e14870, 0xbe100384, 0xed084b0a, 0x10059409, 0x805840de,
-0x0796016d, 0x0f401e94, 0x00000400, 0x00000000, 0x08332812, 0x030608cd,
-0x30400c12, 0x24414148, 0x581c110f, 0x00d18030, 0x2c100374, 0xc9003744,
-0x94071400, 0x2882433c, 0x0324014d, 0x4b401c10, 0x00000c20, 0x00000000,
-0x0015a817, 0x01ec007f, 0xdcc02630, 0xac455324, 0xc055300d, 0x00530014,
-0x3730014c, 0x57411fc0, 0x300ddc80, 0x805ce635, 0x09dc097f, 0x5fc437b0,
-0x00000620, 0x00000000, 0x10070012, 0x007c921f, 0x87d001f1, 0x5d001f04,
-0xc201f000, 0x801f1007, 0x01f0007c, 0x170047c4, 0xf02c7c00, 0x1207e081,
-0x407d081f, 0x4bc091f1, 0x00000c00, 0x00000000, 0x00270810, 0x024d009f,
-0x64c109f8, 0x7c01d300, 0xc0093042, 0x00930027, 0x49b0026c, 0x930027c1,
-0x34227c00, 0x14274005, 0x024c019f, 0x43c059f0, 0x00000c20, 0x00000000,
-0x00262001, 0x0264228d, 0xe05009d9, 0x74219111, 0x40291082, 0x809b0027,
-0x29100255, 0x91502740, 0x100e7402, 0x00274001, 0x064c018d, 0x074019d0,
-0x00000800, 0x00000000, 0x0024a018, 0x0264809d, 0x244009d0, 0x76049112,
-0x41891002, 0x00912023, 0x09900264, 0x91c02740, 0x18033490, 0x022540a1,
-0x06402895, 0x634009d8, 0x00000200, 0x00000000, 0x02202010, 0x0224089d,
-0x205149d0, 0x76158105, 0x41481782, 0x08890123, 0x18102215, 0x81c22340,
-0x10233400, 0x00234088, 0x2624288d, 0x436008d9, 0x00000080, 0x00000000,
-0x0586b01d, 0x004e025f, 0x04d441d0, 0x7c040301, 0xc0413278, 0x021302c7,
-0x41b0586c, 0x13058741, 0x30587e34, 0x2017c169, 0x084d165f, 0x77c141f2,
-0x00000ac0, 0x00000000, 0x012fb819, 0x0a5e04be, 0x2bd00bf2, 0xfc149f40,
-0xc34be006, 0x269f0267, 0x0bf0127c, 0x9f512fc4, 0xd012fc00, 0x003ec449,
-0x129c04bf, 0x67c20ff0, 0x00000e60, 0x00000000, 0x0127a018, 0x424d22bf,
-0x2cc109b0, 0x0c909304, 0xc90b3036, 0x149301a7, 0x4b300adc, 0xb30326c0,
-0x3056ce04, 0x002ec01a, 0x02cc00bf, 0x63c04b30, 0x00000e00, 0x00000000,
-0x0107081c, 0x0044841d, 0x04520310, 0x44001b20, 0xc0011100, 0x02111107,
-0x21109078, 0x11008440, 0x10014c42, 0x2007c001, 0x8054951d, 0x734021b2,
-0x00000c20, 0x00000000, 0x04a3a010, 0x0284048d, 0x20400a12, 0x3510c100,
-0x4908d032, 0x208120a3, 0x28101a11, 0x8901a040, 0x10422442, 0x00204418,
-0x0614018d, 0x43408810, 0x00000e80, 0x00000000, 0x0825a818, 0x0244409d,
-0x24450b10, 0x24848900, 0x4819d002, 0x20910027, 0x29120274, 0xd940a450,
-0x14020580, 0x00274019, 0x0654019d, 0x63404990, 0x00000620, 0x00000000,
-0x0227a805, 0x824c059f, 0x24c00930, 0x6c009301, 0xc809f016, 0x00930027,
-0x0834025c, 0x8b02e4c2, 0x32026400, 0x00a4c009, 0x025c239f, 0x17c20930,
-0x00000e20, 0x00000000, 0x00658014, 0x027c049f, 0x27c40870, 0x5c00df34,
-0xc0093526, 0x009f4025, 0x09f00265, 0x970065c0, 0xf0527c40, 0x0227c009,
-0x0274009f, 0x53c009f0, 0x00000600, 0x00000000, 0x00050814, 0x00bc0813,
-0x00d023f2, 0x7c001300, 0xc0113400, 0x00131003, 0x31f0000c, 0x134004d0,
-0x30007c00, 0x0484c011, 0x244c0113, 0x50c021f0, 0x00000420, 0x00000000,
-0x0014a014, 0x01744071, 0x9c4405d0, 0x74005100, 0xc0171201, 0x00513815,
-0x27d0056c, 0x75001440, 0x5001dc02, 0x081ec427, 0x8dc5037b, 0x504007d0,
-0x00000200, 0x00000000, 0x0032a014, 0x033410d1, 0x10480cd0, 0x3400c120,
-0x400c0003, 0x00d54833, 0x0cd00704, 0x45003440, 0x100c3484, 0x02304281,
-0x034000d1, 0x50400cd0, 0x00000a00, 0x00000000, 0x01788005, 0x04b400e1,
-0x104002d0, 0xf400a100, 0x402a1023, 0x08e50031, 0x2fd84394, 0xa5033104,
-0x5043f400, 0x004e04c2, 0x938442c9, 0x144014d0, 0x00000200, 0x00000000,
-0x417c1015, 0x03b401e3, 0x78401ef0, 0xbc016300, 0x40123037, 0x01f7007b,
-0x16d00785, 0x670338c0, 0x3007bc81, 0x0048c056, 0x8d8c4123, 0x54c41af0,
-0x00000040, 0x00000000, 0x0275b810, 0x007c00df, 0x37c000f0, 0x7c661f40,
-0xc005d20b, 0x01db10b5, 0x04f0036c, 0x9f0136c0, 0xb5011e00, 0x2003c411,
-0x877c001f, 0x43c005f2, 0x00000660, 0x00000000, 0x007fa000, 0x87fc01ff,
-0x7cc01f70, 0xcc03f700, 0xc897f027, 0x0df70cfc, 0x13b006cc, 0xf7607fc0,
-0x3004dc29, 0x024cc8d3, 0x07cc0d73, 0x00c48e30, 0x00000e00, 0x00000000,
-0x02398815, 0x00b600ad, 0x380c4212, 0xac00a146, 0x500ad033, 0x08e1023d,
-0x021002bc, 0xa1103b40, 0x1002d400, 0x0b09c4c3, 0x0ac48c71, 0x5440c6b0,
-0x00000620, 0x00000000, 0x00390000, 0x03b4086d, 0x38050e50, 0x84006500,
-0x000cd003, 0x04cd0038, 0x86100280, 0xed443b40, 0x5043b020, 0x008e40e2,
-0x21960ca1, 0x01448b10, 0x00000400, 0x00000000, 0x00772804, 0x0036800d,
-0xf0407010, 0x24200100, 0x4000d003, 0x00c92030, 0x40100224, 0x8940b340,
-0x5a0d0480, 0x00014001, 0x06544281, 0x10401490, 0x00000c20, 0x00000000,
-0x013da815, 0x037c11df, 0xb0d01d70, 0xcc015700, 0xc001f003, 0x00ff003c,
-0x3134024c, 0x9f00bfe1, 0x70045e40, 0x01c6c003, 0x8bdc28a3, 0x55d04534,
-0x00000620, 0x00000000, 0x20370001, 0x007c44df, 0xa7c001f2, 0x7c885f40,
-0xc00df203, 0x00d70033, 0x2170023c, 0xd7083740, 0xa4017e00, 0x4087c011,
-0x6b6900df, 0x078205f2, 0x00000c00, 0x00000000, 0x003f0880, 0x037c01f3,
-0x3cc00ef2, 0xce003306, 0xc00f3003, 0x00e3003d, 0x5630024c, 0x83143cc0,
-0x32c18c02, 0x080c4803, 0x00cc003f, 0x03c00330, 0x00000c22, 0x00000000,
-0x08362081, 0x007403d1, 0x344001d0, 0x44181100, 0x40015083, 0x00d50034,
-0x31102650, 0xd1603781, 0x50015483, 0x0007c029, 0x8a402939, 0x074125b0,
-0x00000802, 0x00000000, 0x0034a001, 0x83740a11, 0x34500dd0, 0x10000104,
-0x411c1203, 0x20d10036, 0x01138344, 0x91503142, 0x10084480, 0x21854031,
-0x0544005d, 0x07400510, 0x00000200, 0x00000000, 0x00302010, 0x00340001,
-0x204000d2, 0x04200100, 0x40085003, 0x00c50032, 0x001a0314, 0x41803340,
-0x50021420, 0x08034000, 0x80054049, 0x43400492, 0x00000088, 0x00000000,
-0x0036b000, 0x037c0013, 0x34c00df0, 0xd4800340, 0xc0053083, 0x00d3003c,
-0x05340344, 0x910039c0, 0x30034e80, 0x0005c401, 0x004c009f, 0x03c00132,
-0x00000ac0, 0x00000000, 0x003fb805, 0x00fc003f, 0x3bd002f0, 0xfd203b00,
-0xc403c003, 0x00ff003d, 0x03e203fc, 0xff003dc0, 0xf001fc00, 0x000bc003,
-0x00fc00bf, 0x17c007f0, 0x00000e60, 0x00000000, 0x003fa003, 0x23fc4cff,
-0x3ec043b8, 0xf884f301, 0xc44ff003, 0x2c730b0f, 0x0f3011fc, 0xf3260fc9,
-0x3102fc00, 0x023cc48b, 0x038c0c33, 0x0cc08fb0, 0x00000e00, 0x00000000,
-0x003b0801, 0x20740ed1, 0xbc41c9b0, 0x84bcf124, 0x49cf1203, 0x06450183,
-0x6f104930, 0xf1088741, 0x10387408, 0x423d48ad, 0x0bc40201, 0x1c406f10,
-0x00000c20, 0x00000000, 0x0032a011, 0x13140005, 0x30440414, 0x0400c983,
-0x420c5203, 0x0c410303, 0x0c901934, 0xc1000140, 0x10c23414, 0x41344848,
-0x23040801, 0x4c402d90, 0x00000e80, 0x00000000, 0x08358803, 0x2074b811,
-0x3040ad10, 0x0400c900, 0x420d1003, 0x02552087, 0x0d908174, 0xd1201340,
-0x10067480, 0x0035404c, 0x03460011, 0x1c4a0d90, 0x00000620, 0x00000000,
-0x0037a800, 0x855c2095, 0x34c00110, 0x4d00db40, 0xc40d7203, 0x01d30237,
-0x0db0097c, 0xd340b5c2, 0x30077440, 0x0834c009, 0x034d0253, 0x00c00db1,
-0x00000e22, 0x00000000, 0x083d8087, 0x84fc0097, 0x3dd80bf0, 0xfc20f720,
-0xc10f7003, 0x08ff007f, 0x0d7089fc, 0xff1007c0, 0xf101bc20, 0x0c3fc70b,
-0x03fc093f, 0x1fc00f70, 0x00000602, 0x00000000, 0x00310802, 0x030c0017,
-0x34c821f8, 0x7c40d322, 0xd00d3103, 0x22d380b0, 0x0d340b0c, 0xd340b4d0,
-0xb4037c40, 0x0037c019, 0x034d02d3, 0x28c00d70, 0x00000420, 0x00000000,
-0x003ca013, 0x22444011, 0x7c4409d2, 0xf441f340, 0x403f1003, 0x00db8034,
-0x1f108344, 0xf3081440, 0xf2037412, 0x00fb4029, 0x33840091, 0x4c400e10,
-0x00000200, 0x00000000, 0x0032a003, 0x0a042f45, 0x724001d0, 0x3648c900,
-0x481c5003, 0x00052800, 0x0c100204, 0xc9080064, 0x94023411, 0x00f34828,
-0x0b260091, 0x1c400c50, 0x00000a00, 0x00000000, 0x08788000, 0x048481e1,
-0x7f4010d2, 0xb601e100, 0x411c1303, 0x21650058, 0x1e100784, 0xe1306861,
-0xd407f401, 0x047f421e, 0x07a629e1, 0x74401f10, 0x00000200, 0x00000000,
-0x00301016, 0x030c0007, 0x32c08cd0, 0x3800cb02, 0xc00c1023, 0x00c54020,
-0x0c302b0d, 0xcb008080, 0xb4223c80, 0x0133c008, 0x032c0a83, 0x48c00c70,
-0x00000040, 0x00000000, 0x0435b800, 0x017d009f, 0x30c08df0, 0x7810d704,
-0xc18df073, 0x00db0037, 0x0df0836c, 0xdf0037c0, 0xf4033c18, 0x00b3c00d,
-0x035c28df, 0x0bc0acf0, 0x00000660, 0x00000000, 0x0037a015, 0x00644057,
-0xb6c4053a, 0x4d13cf04, 0xc95d304b, 0x005f0006, 0xedf0017c, 0xd71037c0,
-0xf0024c91, 0x2034d21c, 0x734c0053, 0x44c00d30, 0x00000e00, 0x00000000,
-0x133d8810, 0x80ac00c1, 0x3b400630, 0xc400ed01, 0x4a4e3093, 0x006d0018,
-0x4ed001b4, 0xcd002bc3, 0x70038404, 0x00b0400e, 0x83840061, 0x4c404c10,
-0x00000624, 0x00000000, 0x017900a3, 0x07040165, 0x7b401e91, 0x8401fd00,
-0x445e9303, 0x01ed0068, 0x1e1007b4, 0xed007b40, 0xd006a401, 0x4178401f,
-0x070401e1, 0x0440de14, 0x00000402, 0x00000000, 0x20332812, 0x436028c1,
-0x33400c94, 0x0400cd08, 0x420c9003, 0x0bcd00f4, 0x0cd00734, 0xcd207740,
-0x50072480, 0x0032401c, 0x03040ac1, 0xc84c0d10, 0x00000c20, 0x00000000,
-0x0015a816, 0x01cc4177, 0x1fc44730, 0x44207d00, 0xd0053001, 0x017f095c,
-0x063045fc, 0x7701dfc0, 0xf015ec80, 0x001cc017, 0x01cc0973, 0x5c500730,
-0x00000620, 0x00000000, 0x00070012, 0x007c001f, 0x87c00170, 0x7c821f00,
-0xc8217000, 0x101f0407, 0x21f0407c, 0x1f0405c0, 0xf0005d00, 0xa005c081,
-0x083d001f, 0x4bd001f0, 0x00000c00, 0x00000000, 0x00270810, 0x024c089f,
-0x66c20830, 0x7c009f02, 0xc049a102, 0x00830027, 0x0930020c, 0x930024c0,
-0xf0026c20, 0x1027c009, 0x264c0093, 0x41c00934, 0x00000c20, 0x00000000,
-0x18262000, 0x0e440091, 0xe4400915, 0x74129d00, 0x42399082, 0x00910827,
-0x29120244, 0x911826d1, 0xd0027400, 0x10a74209, 0x1a4c0081, 0x04400931,
-0x00000800, 0x00000000, 0x0020a018, 0x2244008d, 0x24400910, 0x34009d04,
-0x4109d802, 0x00910027, 0x09900244, 0x94002440, 0xd0036401, 0x00234089,
-0x02440099, 0x614009d0, 0x00000200, 0x00000000, 0x10a02010, 0x8a040281,
-0x215bc818, 0x34408d00, 0x4208d00a, 0x3c812723, 0x09147205, 0x81072040,
-0xd0723400, 0x00234148, 0x22041c89, 0x40408810, 0x00000080, 0x00000000,
-0x0004301c, 0x014d001f, 0x04c26130, 0x74141f95, 0xc140b000, 0x06134187,
-0x4130184c, 0x11418441, 0xf0186c14, 0x4517c041, 0x584c061b, 0x75c161b0,
-0x00000ac0, 0x00000000, 0x08a7b039, 0x0bfc22bf, 0x26c04bf0, 0x7c949f05,
-0xc149320a, 0x04bf012f, 0x497092fc, 0x9f112fc1, 0xf012fc34, 0x2527c54b,
-0x125d04a7, 0x67c049f0, 0x00000e64, 0x00000000, 0x01a7a218, 0x42cc06bf,
-0xafc029f2, 0x7412bf01, 0xc06bf01a, 0x049f0127, 0x2bf0127c, 0xbf0424c1,
-0xf01a4c02, 0x04afc04b, 0x5acc269f, 0x63c02914, 0x00000e00, 0x00000000,
-0x0186089c, 0x00440651, 0x874421d0, 0x1c461d21, 0x44411098, 0x021d0517,
-0x00700074, 0x1d018444, 0xd0014504, 0x01874161, 0x1c44005d, 0x73400010,
-0x00000c22, 0x00000000, 0x00a1a010, 0xc205228d, 0xa34068d0, 0x36008920,
-0x4468d00a, 0x188d00a3, 0x09905a34, 0x99042054, 0xd01a0406, 0x01214088,
-0x1244028d, 0x4b402810, 0x00000e80, 0x00000000, 0x00252818, 0x226468d1,
-0x274429d0, 0x74209d00, 0x40091102, 0x429d0027, 0x09500a74, 0xdd082540,
-0xd0024440, 0x00276409, 0x0045009d, 0x63400918, 0x00000620, 0x00000000,
-0x0027a801, 0x0a4c009f, 0x27c019f0, 0x7c009f00, 0x4009f002, 0x019f10a7,
-0x09f0067c, 0x9f2024c0, 0xf0024800, 0x8825e409, 0x0044028f, 0x17c00912,
-0x00000c20, 0x00000000, 0x00218014, 0x065c4197, 0x27c049f0, 0x5c109f14,
-0xc0097802, 0x099f0027, 0x09f2227c, 0x9f0266c9, 0xf0027c10, 0x1027c109,
-0x407c409f, 0x5bc009f4, 0x00000400, 0x00000000, 0x00050814, 0x207c0a17,
-0x04c001e0, 0x4c801308, 0xc4015100, 0x00134084, 0x0170006d, 0x1b0804c0,
-0x30884d00, 0x0006d001, 0x006d0213, 0x50d201b0, 0x00000420, 0x00000000,
-0x1014a014, 0x05f48075, 0x9f4405d0, 0x44027100, 0x40071801, 0x00510014,
-0x36d20144, 0x6b0016e0, 0x10014412, 0x081c4027, 0x048c0071, 0x50400510,
-0x00000000, 0x00000000, 0x1032a014, 0x033413dd, 0xf0420cd0, 0x6403c100,
-0x401c5003, 0x00c19031, 0xbcd00304, 0xc5103040, 0x50033400, 0x0070402c,
-0x0f0400c1, 0x50400c10, 0x00000a00, 0x00000000, 0x02788205, 0x01b64025,
-0xe3404ed2, 0xa4038000, 0x443c1803, 0x05e10071, 0x0ec01394, 0xe9027e42,
-0x5417b400, 0x00f14818, 0x430404c1, 0x10405e10, 0x00000200, 0x00000000,
-0x033c1015, 0x84bc41a7, 0x78c37ef0, 0xa501e340, 0xd01a502f, 0x87c30179,
-0x1e709fac, 0xb3007c40, 0x710ffc01, 0x4078c01e, 0x178897e3, 0x50c43e30,
-0x00000040, 0x00000000, 0x0035b010, 0x007c001f, 0x37c40df2, 0x5c009f00,
-0xc005f11b, 0x02df20b6, 0x0df00b6c, 0x9f05b7c0, 0xb0034c00, 0x0014c40d,
-0x337c86df, 0x43c06d74, 0x00000660, 0x00000000, 0x007fa002, 0x06fc01f7,
-0x7fc09f36, 0xec01f703, 0x021ff007, 0x87ff24ff, 0xdbf23bfe, 0x7f007cc2,
-0xf08fcc81, 0x013cc017, 0x3f8c81ff, 0x08c03f30, 0x00000e00, 0x00000000,
-0x00388815, 0x209c006b, 0x29e08e30, 0xa448a122, 0x404a9003, 0x40ed013b,
-0x8a7103be, 0x2d013848, 0xd0038400, 0x0328400b, 0x238480ed, 0x44400e10,
-0x00000620, 0x00000000, 0x00390008, 0x40b400a5, 0x03448e90, 0x04004111,
-0x440a5023, 0x04ed083b, 0x409223b4, 0x6d0c3848, 0xd0238408, 0x823a4006,
-0x13c400cd, 0x00400e15, 0x00000400, 0x00000000, 0x80332816, 0x0c141241,
-0x05402c10, 0x04201100, 0x40011003, 0x09dd1073, 0x01502754, 0x0d203060,
-0xd0070600, 0x8006401c, 0x034400dd, 0x18400c18, 0x00000c20, 0x00000000,
-0x003da815, 0x0f7c0255, 0x1740afb0, 0xed805740, 0x4005f083, 0x20ffa17f,
-0x05d103f4, 0xdd003cd2, 0xf01fc400, 0x0006d11d, 0x034d01fd, 0x54500f34,
-0x00000620, 0x00000000, 0x28370009, 0x097c001f, 0x07c80df0, 0x7c005f00,
-0xc005f083, 0x00df0037, 0x0171037c, 0x5f0033c0, 0xf0937d02, 0x0035cc21,
-0x0b7c08df, 0x07c00df0, 0x00000c00, 0x00000000, 0x10370801, 0x47fc0037,
-0x3cc00f70, 0x8c08f300, 0x880b3803, 0x80ff003c, 0x8f3003cc, 0x930c3cc0,
-0x3003ccc0, 0x004fc00b, 0x0fcc00f3, 0x00c00e30, 0x00000c22, 0x00000000,
-0x08362081, 0x0374021d, 0xb4600dd0, 0x7c73d30c, 0x41255003, 0x80dd2034,
-0x3990036c, 0x1b0836c1, 0x10834400, 0x0cd5c241, 0x076c20d9, 0x04400db2,
-0x00000802, 0x00000000, 0x00348000, 0x9a7400dd, 0x14440cd0, 0x44801900,
-0x40055103, 0x00dd0035, 0x05900354, 0xcd003442, 0x14031400, 0x22074445,
-0x0b4400d9, 0x04400d10, 0x00000a00, 0x00000000, 0x00302010, 0x003480cd,
-0x01400cd0, 0x14000110, 0x44005003, 0xa0cd0031, 0x00960315, 0x01003040,
-0x10031400, 0x00214000, 0x036400d9, 0x40400c90, 0x00000080, 0x00000000,
-0x003eb000, 0x033c009f, 0x04500f70, 0xc5001b40, 0xd0091083, 0x80ff003d,
-0x053803d4, 0xd1403c50, 0x3203dd00, 0x4007c001, 0x034c00f2, 0x00d00e30,
-0x00000044, 0x00000000, 0x083f9004, 0x83fc00ff, 0x0ec00ff0, 0xec003f00,
-0xc003f103, 0x00ff103e, 0x037803ec, 0x3f003fc4, 0xf083ec00, 0x000dc203,
-0x03fc00f7, 0x17e80ff0, 0x00000e60, 0x00000000, 0x003fa003, 0x00fc1433,
-0x1ac00f30, 0xfc08ff00, 0xc84f7123, 0x04f100bd, 0x4b70d0ec, 0x3b053d80,
-0xf241dc80, 0x040ad40b, 0x03cc00f3, 0x0fc5c734, 0x00000e00, 0x00000000,
-0x20330801, 0x10748651, 0x25480f11, 0x7400dd00, 0x44edd013, 0x1af103bc,
-0xc8100855, 0x1100b450, 0xd0594424, 0x0094c00b, 0x030402eb, 0x07402511,
-0x00000c20, 0x00000000, 0xa033a011, 0x60341001, 0x20040c12, 0x3604cd00,
-0x410cd003, 0x00c19031, 0x04500004, 0x81003441, 0xd0010410, 0x05306888,
-0x830402c1, 0x47404414, 0x00000e80, 0x00000000, 0x20358803, 0x80740851,
-0x34580d10, 0x7400dd10, 0x400dd003, 0x00d18034, 0x09108514, 0x9540b440,
-0xd1074400, 0x00364009, 0x034400d9, 0x0f408512, 0x00000620, 0x00000000,
-0x4077a800, 0x03340093, 0x34c80c34, 0x7cb0df00, 0xc009f047, 0x00d34035,
-0x19700c4c, 0x1b2030c0, 0xf0075d09, 0x9034c808, 0x034d00d3, 0x0bc23530,
-0x00000e20, 0x00000000, 0x027d8087, 0x007c80ff, 0xadc80ff0, 0xf8a0fd20,
-0xc00ed08b, 0x40ee003b, 0x2bf082dc, 0x3b027fc4, 0xd0037c01, 0x003dc00b,
-0x83f800ff, 0x1fc015e0, 0x00000600, 0x00000000, 0x00350802, 0x236d0893,
-0x27c00d34, 0x7e01d320, 0xc0093003, 0x00d31034, 0x45b0024c, 0x930cb4c0,
-0x30127c01, 0x0033c009, 0x034d00d3, 0x08c06130, 0x00000420, 0x00000000,
-0x21f4a013, 0x8dc401d1, 0xa6480f10, 0x7401db03, 0x420d1082, 0x00fb003c,
-0x29108355, 0x910836c0, 0xb087742b, 0x0037424b, 0x03ee00f1, 0x4c502151,
-0x00000200, 0x00000000, 0x01e6a007, 0x84040109, 0x13400c10, 0x3400c100,
-0x500c1049, 0x00c90030, 0x09d00004, 0x11001060, 0x500d3482, 0x42234008,
-0x036400d5, 0x1c422c10, 0x00000a00, 0x00000000, 0x02688006, 0x1c844149,
-0x7b409e10, 0xf6016912, 0x491f1005, 0x4dc92278, 0x1a520694, 0x61427040,
-0xd055b401, 0x027b409a, 0x07a001e5, 0x10009e40, 0x00000200, 0x00000000,
-0x42201012, 0x800c060b, 0x23e80c10, 0x3400c320, 0xc88c3403, 0x04c98034,
-0x2cf0034c, 0xc3023040, 0x70013c00, 0x0233c008, 0x030c04c6, 0x48c00430,
-0x00000040, 0x00000000, 0x0a2db802, 0x90dc00b6, 0x3ec10ff0, 0xbc407f20,
-0xc00eb003, 0x05ff003f, 0x89b0237c, 0xff023fd8, 0xb013fc08, 0x023fc20b,
-0x63dc00fb, 0x0bc00ff4, 0x00000660, 0x00000000, 0x0037a015, 0x077c0093,
-0x34ed2d30, 0x7c84d300, 0xc009f001, 0x18db00b7, 0x0d30804c, 0x532005c4,
-0x30037c12, 0x2034c019, 0x034c04d3, 0x54c0093c, 0x00000e00, 0x00000000,
-0x00398812, 0x14b400e1, 0x38400f12, 0xb490e100, 0x400ed003, 0x01c1053b,
-0x0c1002ec, 0x61003bc4, 0x1003b400, 0x2038512a, 0x83d48af1, 0x48400e14,
-0x00000620, 0x00000000, 0x00790083, 0x27f40361, 0x68404e10, 0xb401e120,
-0x401ad007, 0x00e1427b, 0x1e100784, 0xe58c6d40, 0x90473401, 0x00f8404a,
-0x178405e1, 0x0c451210, 0x00000400, 0x00000000, 0x0a372812, 0x893440c1,
-0x74400c00, 0x34424140, 0x421cd187, 0x00c10033, 0x9c114324, 0xc5007240,
-0x90073401, 0x00704008, 0x031400c9, 0x48506010, 0x00000c20, 0x00000000,
-0x4055a817, 0x4dfc8173, 0x9cc00536, 0xfc485321, 0xc047f00d, 0x00530017,
-0x073409cc, 0x570859f0, 0xa52dfc05, 0x40dcc805, 0x014c0053, 0x5cc03734,
-0x00000620, 0x00000000, 0x00070012, 0x407c901f, 0x47c801f2, 0x7c001f08,
-0xc001f22c, 0x00170807, 0x01f0807d, 0x1a4007c0, 0x70007c02, 0x0007c000,
-0x007c0017, 0x4bc001f2, 0x00000c00, 0x00000000, 0x02270810, 0x067c4993,
-0x24c009f0, 0x7c01db00, 0xc059f012, 0x80830023, 0x0938024d, 0xd30064c8,
-0x20023c80, 0x0520d009, 0x020c8093, 0x40c00930, 0x00000c20, 0x00000000,
-0x00a62001, 0x22742091, 0xa50009d8, 0x76019140, 0x4809d012, 0x009b0027,
-0x2850026d, 0x93002474, 0x10027400, 0x00644019, 0x026c009b, 0x04402950,
-0x00000800, 0x00000000, 0x00a4a018, 0x02748091, 0x244008d0, 0x56089904,
-0x4009d802, 0x80910027, 0xa9120304, 0x91412440, 0x5482540a, 0x00344049,
-0x02440081, 0x6040ac10, 0x00000200, 0x00000000, 0x4a202010, 0x22340881,
-0x214828d0, 0x34008102, 0x61ccd002, 0x00890123, 0x89500224, 0x81003042,
-0x50233408, 0x022040c8, 0xa2240489, 0x40508850, 0x00000080, 0x00000000,
-0x0082b01d, 0x597c1613, 0x804001d0, 0x5c801b00, 0xc061d100, 0x1e1312c7,
-0x6110784d, 0x13450441, 0x70585c02, 0x0580c031, 0x084c0b13, 0x74d16030,
-0x00000ac0, 0x00000000, 0x212fb819, 0x92bc04ff, 0x2fc029f0, 0xfc149f01,
-0xc04bf052, 0x019d0263, 0x4bf006fc, 0x97003bc0, 0xb012fc04, 0x112fc0ca,
-0x1a7c099f, 0x67c04bf0, 0x00000e60, 0x00000000, 0x002fa019, 0x22bc6cb3,
-0xacc10870, 0x7c029700, 0xc14bf002, 0x029301a4, 0x8bb00a4d, 0xb3012cc0,
-0xf032fc00, 0x002cc183, 0x324c0c93, 0x60c14b30, 0x00000e00, 0x00000000,
-0x4107089c, 0x18740e11, 0x06400130, 0x74001511, 0x40217250, 0x80111180,
-0x8550006c, 0x13000450, 0xd0301c04, 0x14045071, 0x08144a11, 0x70506514,
-0x00000c20, 0x00000000, 0x0423a010, 0x0a340081, 0x62610850, 0x34208501,
-0x4149d012, 0x008180a0, 0x08100a44, 0x89022440, 0xd0123414, 0x02224008,
-0x1a240089, 0x40410814, 0x00000e80, 0x00000000, 0x0021a818, 0x82760091,
-0x22480991, 0x74009100, 0x08095062, 0x00810024, 0x89501264, 0x91002540,
-0xd00b5614, 0x04264009, 0x02342099, 0x60404814, 0x00000620, 0x00000000,
-0x0027a805, 0x227c0393, 0x64c00872, 0x7c049740, 0xc009f002, 0x80934024,
-0x0930164c, 0x9b40a0c8, 0xe0a27c01, 0x0062d008, 0x026c809b, 0x14c02934,
-0x00000e20, 0x00000000, 0x00258014, 0x823c029f, 0x65d00970, 0x7c00df11,
-0xd0097003, 0x009f1027, 0x09f0027c, 0x970026c0, 0xf0065c80, 0xc165c001,
-0x025c0097, 0x53c009f0, 0x00000600, 0x00000000, 0x00050814, 0x104c001f,
-0x04c20132, 0x7c001308, 0xc8113000, 0x00131003, 0x01b0086c, 0x1b0244c0,
-0x30004c10, 0x1006c401, 0x004c4003, 0x50d06130, 0x00000420, 0x00000000,
-0x801ca014, 0x05c4805d, 0x1c400712, 0x74055100, 0x6076b00d, 0x0051401f,
-0x375001fc, 0x7100dcc2, 0xb001dc83, 0x115c4013, 0x017c0051, 0x51501714,
-0x00000200, 0x00000000, 0x0062a014, 0x072501cd, 0x12520c10, 0x34004100,
-0x401c1048, 0x00c90033, 0xad900364, 0xc9807269, 0x50072601, 0x0870601c,
-0x030400c1, 0x50403012, 0x00000a00, 0x00000000, 0x0c288005, 0x43e403ed,
-0x2e404e12, 0xb4006100, 0x400a900e, 0x00e9023b, 0x0e542334, 0xa1001840,
-0xdb0e9603, 0x5020554c, 0x13b001c1, 0x15490210, 0x00000200, 0x00000000,
-0x00481015, 0x06ac81bd, 0x7a413e34, 0xf4016300, 0x48163017, 0x01c8417b,
-0x1cb417ac, 0xfb207250, 0x7407ad01, 0x007ac00e, 0x178c04e3, 0x54d01f34,
-0x00000040, 0x00000000, 0x202db810, 0x005800df, 0x21c00df0, 0x7c065f44,
-0xc007f0af, 0x00d70137, 0x0df00b6c, 0x9f0017d0, 0xa0026c00, 0x00a7c81d,
-0x2b6c02df, 0x42c00df4, 0x00000660, 0x00000000, 0x027fa002, 0x06fc41f3,
-0x5dc01fb0, 0xcc037300, 0xc097300d, 0x13f320fd, 0x1fb00fec, 0xf3206dc0,
-0xf006fc01, 0x03fec11f, 0x0fcc13f3, 0x00c01f30, 0x00000e00, 0x00000000,
-0x02398815, 0x01f404e1, 0x28c48e11, 0xc4806110, 0x41873089, 0x00f1013c,
-0x4e1013ed, 0xab002ac0, 0xd002b480, 0x022a400e, 0x03c440f1, 0x54400f52,
-0x00000620, 0x00000000, 0x200d0208, 0x42b400e1, 0x79400c90, 0xa4006900,
-0x4a86902b, 0x08e10839, 0x06128384, 0xa1003d44, 0xd002a400, 0x8120400f,
-0x038400e1, 0x004006d0, 0x00000400, 0x00000000, 0x00372806, 0x0c3421c1,
-0x24400c10, 0x04124940, 0x40041003, 0x00c10030, 0x7c102324, 0x8900f242,
-0xd00e3408, 0x0224420c, 0x030400c1, 0x1040a4d4, 0x00000c20, 0x00000000,
-0x0005a81d, 0x8f7c0fd3, 0x05c00fb0, 0xec005b00, 0xc009b01d, 0x00f3403d,
-0x4d3403cc, 0xd304f5c0, 0xf00a3c01, 0x6076f00c, 0x03cd40f3, 0x54d010f8,
-0x00000620, 0x00000000, 0x60070001, 0x037c809f, 0x35c00df2, 0x5c401702,
-0xc00df409, 0x00df0033, 0x0c70137c, 0x9f0417cc, 0xf22a7c00, 0x2027c80d,
-0x037c00df, 0x07c02364, 0x00000c00, 0x00000000, 0x002f0801, 0x428c03a3,
-0x2ec20e30, 0xcc007306, 0xc857f003, 0x00e3003c, 0x2f3c03ec, 0xf3001cc0,
-0x304efc00, 0x017ec00f, 0x03cc00e3, 0x00c10330, 0x00000c22, 0x00000000,
-0x18262089, 0x1e446091, 0x34400d50, 0x44005110, 0xd004d02f, 0x00da0036,
-0x1d100315, 0x9b025144, 0x50005c43, 0x0065401d, 0x035440df, 0x04509914,
-0x00000802, 0x00000000, 0x0414a001, 0x07450091, 0x06400d10, 0x44040180,
-0x4005d081, 0x00d10034, 0x0d580366, 0x1920b440, 0x50027423, 0x0034401d,
-0x030400d5, 0x0440251b, 0x00000200, 0x00000000, 0x40102010, 0x03048081,
-0x30400c50, 0x06000140, 0x4004d101, 0x00c90030, 0x0c520315, 0x89003140,
-0x52021400, 0x28214a0c, 0x031420cd, 0x40480d1a, 0x00000080, 0x00000000,
-0x0026b001, 0x02440093, 0x2ac20f12, 0x4c804300, 0x4005d002, 0x00f3003c,
-0x005003ec, 0x930014c0, 0x71027c00, 0x003ec00d, 0x03cc00f7, 0x00c00534,
-0x00000ac0, 0x00000000, 0x003bb805, 0x80fc80bf, 0x3fc00ff8, 0xfc607f08,
-0xc007f002, 0x00ff083f, 0x0bb003fc, 0xb7001bc0, 0xf080dc00, 0x082f800e,
-0x03fc40ff, 0x17c007f0, 0x00000e60, 0x00000000, 0xc080a300, 0x0833020e,
-0x839820e8, 0x3b038ec0, 0xb020ec08, 0x820ec083, 0x20ec0838, 0x0ec083b0,
-0xa8083b02, 0xc083b228, 0x083b020e, 0x03b020ec, 0x0000008c, 0x00000000,
-0xa022a200, 0x0232808e, 0x23a808ea, 0x3a808ea0, 0xa808ea02, 0x008ea023,
-0x08ea023a, 0x8ea023a8, 0xea023a80, 0xa023a808, 0x023a808e, 0x03a808ea,
-0x00000a88, 0x00000000, 0x80420100, 0x04120104, 0x41201048, 0x12010480,
-0x20104804, 0x01048041, 0x10480412, 0x04804120, 0x48051201, 0x80412018,
-0x04120104, 0x01201048, 0x00000004, 0x00000000, 0x80002100, 0x401a0006,
-0x01a2006a, 0x18108600, 0xa0006800, 0x80068001, 0x0068001a, 0x068001a0,
-0x6a401a00, 0x8001a110, 0x001a0006, 0x01a00068, 0x00000004, 0x00000000,
-0xa0128200, 0x013a884e, 0x138004e2, 0x3a884e20, 0xa804ea01, 0x004ea013,
-0x04ea013a, 0x4e2013a8, 0xea203a80, 0xa013a804, 0x0138804e, 0x03a804ea,
-0x00000a8c, 0x00000000, 0x0000a300, 0x00180006, 0x01800060, 0x18080602,
-0x80006080, 0x00060001, 0x00600018, 0x06000180, 0x60001800, 0x00018080,
-0x00180806, 0x01800060, 0x0000008c, 0x00000000, 0x2012a300, 0x00108044,
-0x11000442, 0x10804420, 0x08044201, 0x00442011, 0x04420110, 0x44201108,
-0x42001080, 0x20110804, 0x01108044, 0x01080442, 0x0000008c, 0x00000000,
-0xa052a200, 0x04088142, 0x50881420, 0x0a8342a0, 0x88142a05, 0x0142a050,
-0x1422050a, 0x42a050a8, 0x28070a81, 0xa050a814, 0x050a8142, 0x00a8142a,
-0x00000a8c, 0x00000000, 0x80300100, 0x032800ca, 0x3aa00ca8, 0x2200ea80,
-0xa00ca803, 0x00ca8032, 0x0ca8032a, 0xca8032a0, 0xa8032a00, 0x8032a00e,
-0x030200ea, 0x02a00ca8, 0x00000004, 0x00000000, 0x00000100, 0x01080002,
-0x00800020, 0x20000200, 0x80002080, 0x00020000, 0x00200008, 0x02080080,
-0x20070800, 0x00008000, 0x00080002, 0x80800020, 0x00000004, 0x00000000,
-0x4006a200, 0x40410010, 0x04100104, 0x61101040, 0x10010400, 0x00104004,
-0x01040040, 0x10400410, 0x04404100, 0x40041101, 0x00410010, 0x80100104,
-0x00000a8c, 0x00000000, 0xa002a300, 0x001a8006, 0x09a00066, 0x1a8026a0,
-0xa8006a00, 0x8006a001, 0x006a001b, 0x06a001a8, 0x6e801a80, 0xa001a802,
-0x001a8026, 0x01a8006a, 0x0000008c, 0x00000000, 0xc002a300, 0x01190006,
-0x01b80060, 0x1b0006c0, 0xb0006000, 0x0006c001, 0x006c001b, 0x06c00190,
-0x60001b00, 0xc001b000, 0x001b0006, 0x01b0006c, 0x0000008c, 0x00000000,
-0x2842a300, 0x0430910c, 0x431810c2, 0x30910c20, 0x0810c004, 0xa10c2043,
-0x10c20430, 0x0c004308, 0xc2443081, 0x20430a10, 0x0430810c, 0x030810c2,
-0x00000a88, 0x00000000, 0x00000100, 0x0030000c, 0x030000c0, 0x30080c02,
-0x00008000, 0x000c0003, 0x00c00030, 0x0c000300, 0xc0003000, 0x00030080,
-0x0030080c, 0x030000c0, 0x00000208, 0x00000000, 0x80400100, 0x0c32010c,
-0x432010ca, 0x32010c80, 0x2010c804, 0x010c8043, 0x10c80432, 0x0c804320,
-0xca0c3201, 0x80432010, 0x0432010c, 0x032010c8, 0x00000004, 0x00000000,
-0x2042a300, 0x0c1a8106, 0x4180106a, 0x1a810620, 0x88106204, 0x8106a041,
-0x106a041a, 0x06a041a8, 0x6a0c1a81, 0xa041a810, 0x041a8106, 0x01a8106a,
-0x00000a8c, 0x00000000, 0x0042a300, 0x04100104, 0x410010c0, 0x10010400,
-0x00104084, 0x01040041, 0x10400410, 0x04004100, 0xc0041001, 0x00410210,
-0x04100104, 0x01001040, 0x0000008c, 0x00000000, 0x2042a200, 0x04188126,
-0x418010c2, 0x18812620, 0x88106204, 0x81062041, 0x10620418, 0x06204188,
-0xc2049881, 0x20418810, 0x04188106, 0x01881062, 0x00000088, 0x00000000,
-0xa006a200, 0x006a801a, 0x06800180, 0x6a801aa0, 0xa801a200, 0x801aa006,
-0x01aa006a, 0x1a2006a8, 0x88006a80, 0xa006a801, 0x0068801a, 0x02a801aa,
-0x00000a8c, 0x00000000, 0x80600000, 0x060a0182, 0x60a01828, 0x0a018280,
-0xa0182806, 0x01828060, 0x18280608, 0x820060a0, 0x28060a01, 0x0060a018,
-0x060a0182, 0x00a01828, 0x00000004, 0x00000000, 0x80400000, 0x04020120,
-0x40201008, 0x02012080, 0x20100804, 0x01008040, 0x10080402, 0x00804020,
-0x08048201, 0x80402010, 0x04020100, 0x00201008, 0x00000004, 0x00000000,
-0xc062a300, 0x262b018a, 0x62b018ac, 0x2b098ac0, 0xb018a806, 0x018ac062,
-0x18ac062b, 0x888062b0, 0xac262b01, 0xc062b098, 0x062b018a, 0x02b018ac,
-0x00000a88, 0x00000000, 0xa062a300, 0x063a918e, 0x638818ee, 0x3a918ea0,
-0xa818e706, 0x818ea063, 0x18ea0638, 0x8ca063a8, 0xe6463881, 0x2063a818,
-0x063a818e, 0x03a818ea, 0x0000008c, 0x00000000, 0xc062a200, 0x063b018a,
-0x63b018e8, 0x33818e40, 0xb018ec06, 0x018ec063, 0x18e40632, 0x8ee063b8,
-0xe2863901, 0xc063b018, 0x063b018e, 0x03b018ec, 0x00000088, 0x00000000,
-0xa062a200, 0x063a818e, 0x63a818e2, 0x32898ea2, 0xa818ea06, 0x018ea863,
-0x18e20632, 0x8ea863a8, 0xca063a81, 0x2063a098, 0x863a898e, 0x03a818ea,
-0x00000a88, 0x00000000, 0x80400000, 0x04120104, 0x412010c8, 0x12010480,
-0x20104804, 0x01048041, 0x10480412, 0x04804120, 0x68041201, 0x80412010,
-0x04120104, 0x01201048, 0x00000800, 0x00000000, 0x80622000, 0x061a0186,
-0x61a0186a, 0x1a818680, 0xa0186886, 0x01868861, 0x1848061a, 0x86a061a8,
-0x6a061a01, 0x8061a018, 0x061a0184, 0x01a01868, 0x00000008, 0x00000000,
-0xa002a200, 0x003a800e, 0x038800ea, 0x38800ea0, 0xa800ea00, 0x800ea003,
-0x00ea003a, 0x0e8003a0, 0xe8001280, 0xa0038800, 0x0038800e, 0x03a800e2,
-0x00000a80, 0x00000000, 0x0042a200, 0x04180106, 0x41801060, 0x18010600,
-0x80102004, 0x01060041, 0x10600418, 0x06004180, 0x60041801, 0x00418010,
-0x04180106, 0x01801060, 0x00000280, 0x00000000, 0x2040a000, 0x04108104,
-0x41081042, 0x10810420, 0x08100204, 0x81042041, 0x10420410, 0x04004100,
-0x40041081, 0x20410810, 0x04108104, 0x01081042, 0x00000088, 0x00000000,
-0xa042a200, 0x040a8102, 0x40a81020, 0x0a0102a0, 0xa8102a04, 0x8102a040,
-0x102a040a, 0x02804080, 0x28040a81, 0xa040aa10, 0x040a8102, 0x00a8102a,
-0x00000a88, 0x00000000, 0x80c28000, 0x0c2a030a, 0xc2a030a8, 0x2a010a80,
-0xa030a80c, 0x030a80c2, 0x30a80c2a, 0x0a80c2a0, 0xa80c2a03, 0x00c2a030,
-0x0c28030a, 0x02a030a8, 0x00000000, 0x00000000, 0x0012a200, 0x01080042,
-0x10800420, 0x08004200, 0x80042001, 0x00420010, 0x04200108, 0x42081080,
-0x20010800, 0x00108004, 0x01080042, 0x00800420, 0x00000000, 0x00000000,
-0x4042a200, 0x04010100, 0x40101004, 0x01010040, 0x10100404, 0x01004040,
-0x10040400, 0x00404010, 0x04040101, 0x40400010, 0x04010100, 0x00101004,
-0x00000a88, 0x00000000, 0xa0022200, 0x001a8006, 0x01a8006e, 0x180006a0,
-0xa8006800, 0xc0068001, 0x0062001b, 0x06a001a8, 0x6e001a80, 0xa001ac00,
-0x001aa006, 0x01a8006a, 0x00000088, 0x00000000, 0x4002a300, 0x00190006,
-0x019000e2, 0x0b000680, 0xb0002c00, 0xa006c001, 0x00640019, 0x068001b0,
-0xe8001b00, 0xc001b000, 0x001b0006, 0x01b0006c, 0x00000000, 0x00000000,
-0x20000000, 0x0030800c, 0x03080062, 0x30800c00, 0x0800c280, 0x800c2003,
-0x00c20030, 0x0c000308, 0x62003080, 0x20030a00, 0x0010800c, 0x030800c2,
-0x00000000, 0x00000000, 0x00000000, 0x00b0000c, 0x23000040, 0x30002c00,
-0x0000c000, 0x000c0003, 0x00c00030, 0x0c000300, 0x4000b000, 0x0003001a,
-0x0030000c, 0x030000c0, 0x00000000, 0x00000000, 0x80a00000, 0x0a30028c,
-0xa32028c8, 0x32008c80, 0x2028c80a, 0x828c80a3, 0x28c80a32, 0x8c80a320,
-0xca0a3202, 0x80a32028, 0x8a12028c, 0x032028c8, 0x00000000, 0x00000000,
-0xa0c40000, 0x0c588316, 0xe5883168, 0x5a8316a0, 0xa8316a0c, 0x0316a0c5,
-0x316a0c5a, 0x16a0c5a8, 0x6a0c5a83, 0x20c5a839, 0x0c5a8316, 0x01a8316a,
-0x00000000, 0x00000000, 0x00000000, 0x00900004, 0x81000040, 0x10002400,
-0x00004000, 0x00040001, 0x00400010, 0x04000100, 0x40009000, 0x00010002,
-0x00100004, 0x01000040, 0x00000000, 0x00000000, 0x22100000, 0x21188846,
-0x11888460, 0x18804626, 0x88846221, 0x08462211, 0x84622118, 0x46221188,
-0x62211888, 0x22118804, 0x21188046, 0x01888462, 0x00000000, 0x00000000,
-0x22000000, 0xa028800a, 0x02a880a8, 0x2a880aa2, 0xa880a220, 0x080aa202,
-0x80a22028, 0x0a220288, 0xa8002888, 0x22028880, 0x202a880a, 0x02a880a2,
-0x00000000, 0x00000000, 0x84100000, 0x41081042, 0x1081042a, 0x0a104204,
-0xa1042841, 0x10420410, 0x0428410a, 0x428410a1, 0x20410a10, 0x8410a004,
-0x410a1042, 0x00a10428, 0x00000000, 0x00000000, 0x80500000, 0x05020140,
-0x50201408, 0x021940a0, 0x20140885, 0x01408050, 0x14080502, 0x40805020,
-0x08050201, 0x80502014, 0x05020140, 0x00201408, 0x00000000, 0x00000000,
-0xc0300000, 0x032b00ca, 0x32b00cac, 0x2b08ca80, 0xb00cac03, 0x00cac032,
-0x0cac032b, 0xca8032b0, 0xac032b00, 0xc032b00c, 0x032b00ca, 0x02b00cac,
-0x00000000, 0x00000000, 0xa0100000, 0x013a804e, 0x13a004ee, 0x3a804ea8,
-0xaa04ea01, 0x804ea013, 0x04ea013a, 0x4e601388, 0xe6013880, 0xa013a804,
-0x013a804e, 0x03a804e8, 0x00000000, 0x00000000, 0x18c40000, 0x8c484312,
-0xc0863120, 0x48030218, 0x8631218c, 0x631218c4, 0x31218c48, 0x1218c486,
-0x200c4863, 0x18c48230, 0x8c486302, 0x00863121, 0x00000000, 0x00000000,
-0xfffc0000, 0xffcbfff2, 0xfcbfff2f, 0xcbfff2ff, 0xbfff2fff, 0xfff2fffc,
-0xff2fffcb, 0xf2fffcbf, 0x2fffcbff, 0xfffcbfff, 0xffcbfff2, 0x00bfff2f,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xdb340000, 0xb3437ed0,
-0x7c36cd0d, 0x4bedf0db, 0x36cd0db3, 0x6cd0db34, 0xcd0db343, 0xd0db3436,
-0x0dfb436c, 0xdb34bedf, 0xb3436df0, 0x0036cd0d, 0x00000000, 0x00000000,
-0x3ccc0000, 0xccc8ff32, 0xfc8f3323, 0xcbf3f23c, 0x8f3323cc, 0xf3323ccc,
-0x3323ccc8, 0x323ccc8f, 0x23fcc8f3, 0x3cccbf3f, 0xccc8f3f2, 0x008f3323,
-0x00000000, 0x00000000, 0x7edc0000, 0xedc9fb72, 0xdc9fb721, 0xc9e3727e,
-0x9fb727ed, 0xfb727edc, 0xb727edc9, 0x727edc9f, 0x21edc9fb, 0x7edc9fb7,
-0xedc9fb72, 0x009fb727, 0x00000000, 0x00000000, 0x40800000, 0x0839020e,
-0x839020e4, 0x39020e40, 0x9020e608, 0x020e4083, 0x20e40839, 0x0e608390,
-0xe0083902, 0x40839028, 0x0839020e, 0x038020e6, 0x00000000, 0x00000000,
-0xa0200000, 0x023a808e, 0x23a808ea, 0x3a808ea0, 0xa808ea02, 0x808ea023,
-0x08ea023a, 0x8ea023a8, 0xee023a80, 0xa023a808, 0x023a808e, 0x03a808ee,
-0x00000000, 0x00000000, 0x80400000, 0x04120104, 0x41201048, 0x12010480,
-0x20104804, 0x01048041, 0x00480412, 0x04804120, 0x48051201, 0x80412018,
-0x04120104, 0x01201048, 0x00000000, 0x00000000, 0x08000000, 0x00180006,
-0x01800060, 0x18118600, 0x80006000, 0x00060001, 0x10600018, 0x06000181,
-0x60401800, 0x00018100, 0x00180006, 0x01890060, 0x00000000, 0x00000000,
-0x22100000, 0x0138884e, 0x138804e2, 0x38884e20, 0x8804e001, 0x804e2013,
-0x04e20138, 0x4e001388, 0xe2203880, 0x20138814, 0x2138804e, 0x038884e0,
-0x00000000, 0x00000000, 0x00000000, 0x00180006, 0x01800060, 0x18080602,
-0x80006000, 0x00060201, 0x80608018, 0x06000180, 0x60281800, 0x00018000,
-0x00180006, 0x01800060, 0x00000000, 0x00000000, 0x20100000, 0x01108044,
-0x11080442, 0x10806420, 0x08044001, 0x80442011, 0x06420110, 0x44001108,
-0x42009080, 0x20110806, 0x03108044, 0x01080240, 0x00000000, 0x00000000,
-0x20140000, 0x05488152, 0x54881522, 0x48815220, 0x88152205, 0x81522054,
-0x15220548, 0x52205488, 0x20054881, 0x20548815, 0x05488152, 0x00801920,
-0x00000000, 0x00000000, 0x00700310, 0x032800ca, 0x32800ca0, 0x0200ca00,
-0x800ca003, 0x00ca0032, 0x0ca00328, 0xca003280, 0x80032800, 0x0032800c,
-0x072800ca, 0x02801ca0, 0x00000000, 0x00000000, 0x00200310, 0x00000002,
-0x00800020, 0x08002200, 0x80002000, 0x00020000, 0x02200008, 0x02000080,
-0x82008800, 0x00008002, 0x02080002, 0x00800620, 0x0000000c, 0x00000000,
-0x40020310, 0x00010000, 0x00100004, 0x01100040, 0x10000400, 0x00004000,
-0x00040001, 0x00400011, 0x84400100, 0x40001100, 0x00010000, 0x00110004,
-0x0000000c, 0x00000000, 0x00020310, 0x00128006, 0x01880062, 0x18800620,
-0x88006000, 0x80062001, 0x00620018, 0x06000188, 0x62801880, 0x20018800,
-0x00188006, 0x01980062, 0x0000000c, 0x00000000, 0x40028008, 0x00180006,
-0x019a0064, 0x19000640, 0x90006400, 0x80064001, 0x00640019, 0x06400190,
-0x60001900, 0x40019800, 0x00190006, 0x41800464, 0x00000000, 0x00000000,
-0x2442a202, 0x0430110c, 0x430810c2, 0x30910c20, 0x0810c204, 0x810c2043,
-0x10c20430, 0x0c204308, 0xc6443081, 0x20431810, 0x4430810c, 0x030910c2,
-0x00000a88, 0x00000000, 0x00008002, 0x0030000c, 0x030000c0, 0x30080c02,
-0x0000c000, 0x000c0203, 0x80c00030, 0x0c000300, 0xc0203000, 0x00030000,
-0x0030000c, 0x030000c0, 0x00000000, 0x00000000, 0x00402002, 0x0430010c,
-0x430010c0, 0x30010c00, 0x0010c004, 0x010c0043, 0x10c00430, 0x0c004300,
-0xc00d3001, 0x00430010, 0x0430010c, 0x030830c0, 0x00000000, 0x00000000,
-0x2042a202, 0x04188106, 0x41801062, 0x18810620, 0x88106204, 0x01062041,
-0x10620418, 0x06204188, 0xe20c1881, 0x20418010, 0x04188106, 0x01883062,
-0x00000a88, 0x00000000, 0x00408002, 0x04100104, 0x41001040, 0x10010400,
-0x00104004, 0x01040041, 0x10400410, 0x04004100, 0x60041001, 0x00410010,
-0x04100104, 0x03001040, 0x00000000, 0x00000000, 0x2042800a, 0x04188106,
-0x41801062, 0x18810620, 0x88106204, 0x01062041, 0x10620418, 0x06204188,
-0x42041881, 0x20418010, 0x04188106, 0x03081062, 0x00000000, 0x00000000,
-0x2002a202, 0x8028800a, 0x028800a2, 0x28800a20, 0x8800a200, 0x800a2002,
-0x00a20028, 0x0a200288, 0x80002880, 0x20028000, 0x0028800a, 0x420000a2,
-0x00000a88, 0x00000000, 0x00600012, 0x06080182, 0x60801820, 0x08018200,
-0x80182006, 0x01820060, 0x18200608, 0x82006080, 0x20060801, 0x00608018,
-0x06080182, 0x00801820, 0x00000000, 0x00000000, 0x80408212, 0x04028100,
-0x40201008, 0x02010088, 0x20100804, 0x01008040, 0x10080402, 0x00804020,
-0x0a040201, 0x80402010, 0x04020100, 0x00201008, 0x00000000, 0x00000000,
-0xc062a202, 0x062a018a, 0x62b018ac, 0x2b098ac0, 0xb018ac06, 0x018ac062,
-0x98ac062b, 0x8ac062b0, 0xac262b01, 0xc062b098, 0x062b018a, 0x02b098ac,
-0x00000a88, 0x00000000, 0x24628200, 0x0638918e, 0x638018e2, 0x38918e20,
-0x8818e206, 0x018e2063, 0x18e20638, 0x8e206388, 0xe2463881, 0x20638818,
-0x4638818e, 0x039918e2, 0x00000000, 0x00000000, 0x40628002, 0x0639018e,
-0x639018e4, 0x39018e60, 0x9018e406, 0x018e4063, 0x18e40639, 0x8e406390,
-0xe8063901, 0x40639018, 0x0638018e, 0x03a018e4, 0x00000000, 0x00000000,
-0xa062a20a, 0x063a818e, 0x63a818ea, 0x3a898ee2, 0xa818ea06, 0x818ea263,
-0x98ea063a, 0x8ea063a8, 0xe6263a81, 0xa063a818, 0x063a018e, 0x438818ea,
-0x00000a88, 0x00000000, 0x80480002, 0x04120124, 0x41201048, 0x12012480,
-0x20104804, 0x01048041, 0x10480412, 0x04804120, 0x48049201, 0x80412010,
-0x04920104, 0x03201248, 0x00000000, 0x00000000, 0x00608002, 0x06180186,
-0x61801860, 0x18018600, 0x80186006, 0x01860061, 0x18600618, 0x86006180,
-0x40061801, 0x00618018, 0x06180186, 0x01881860, 0x00000000, 0x00000000,
-0x2006a000, 0x0078801e, 0x078801e2, 0x78801e00, 0x8801e200, 0x801e2007,
-0x01e20078, 0x1e200788, 0xe2007880, 0x20078801, 0x0078801e, 0x038801e2,
-0x00000a88, 0x00000000, 0x004a8002, 0x04180126, 0x41801060, 0x18012600,
-0x80106004, 0x21060841, 0x10600418, 0x06004180, 0x60049801, 0x00418010,
-0x04980106, 0x01801260, 0x00000000, 0x00000000, 0x20428002, 0x04108104,
-0x41081042, 0x10810400, 0x08104204, 0x81042041, 0x10420410, 0x04204108,
-0x42041081, 0x20410810, 0x04108104, 0x01081042, 0x00000000, 0x00000000,
-0x2042a202, 0x04088102, 0x40881022, 0x08810200, 0x88102204, 0x81022040,
-0x10220408, 0x02204088, 0x20040881, 0x20408810, 0x04088102, 0x00801022,
-0x00000a88, 0x00000000, 0x00c00002, 0x0c28030a, 0xc28030a0, 0x28030a00,
-0x8030a00c, 0x030a00c2, 0x30a00c28, 0x0a00c280, 0xa0040203, 0x00c28030,
-0x0c28030a, 0x028030a0, 0x00000000, 0x00000000, 0x00100002, 0x01082042,
-0x10800420, 0x08004200, 0x80042001, 0x00420010, 0x04200108, 0x42001080,
-0x22010800, 0x00108004, 0x01088042, 0x00800420, 0x00000000, 0x00000000,
-0x4042a202, 0x04010100, 0x40101004, 0x01010040, 0x10100404, 0x01004040,
-0x10040401, 0x00404010, 0x04040101, 0x40401010, 0x04000100, 0x00101004,
-0x00000a88, 0x00000000, 0x20028002, 0x00188006, 0x01880062, 0x18800620,
-0x88006200, 0x80062001, 0x00620018, 0x06200188, 0x62001880, 0x20018800,
-0x0018c006, 0x01980062, 0x00000000, 0x00000000, 0x40008002, 0x80198006,
-0x09900066, 0x19002640, 0x90006400, 0x00064009, 0x02640019, 0x06400190,
-0x40009900, 0x40019000, 0x00190006, 0x03800064, 0x00000000, 0x00000000,
-0x2006a202, 0x0070801c, 0x070801c2, 0x70801c20, 0x0801c200, 0x801c2007,
-0x01c20070, 0x1c200708, 0x46007080, 0x20070801, 0x0070801c, 0x018801c2,
-0x00000a88, 0x00000000, 0x0080200a, 0x0830020c, 0x830020c0, 0x30028c00,
-0x0020c008, 0x020c00e3, 0x28c00830, 0x0c008300, 0x400a3002, 0x00830020,
-0x0830020c, 0x010020c0, 0x00000000, 0x00000000, 0x00a00002, 0x0a30828c,
-0xab0028c2, 0x3003ac00, 0x0028c00a, 0x028c00ab, 0x2ac00a30, 0x8c00a300,
-0x4006b002, 0x00a30028, 0x0a30028c, 0x430828c0, 0x00000200, 0x00000000,
-0x20c2a002, 0x0c120306, 0xc1883060, 0x18838620, 0x8830620c, 0x830620c1,
-0x38620c18, 0x0620c188, 0x620e1883, 0x20c18830, 0x0c188306, 0x01883062,
-0x00000a88, 0x00000000, 0x00020002, 0x00100004, 0x01000040, 0x10000400,
-0x00004000, 0x00040021, 0x00400010, 0x04000100, 0x40001000, 0x00010000,
-0x00100004, 0x01000040, 0x00000000, 0x00000000, 0x22128002, 0x21100846,
-0x11888460, 0x18804620, 0x88846221, 0x88462011, 0x04622118, 0x46221188,
-0x62011888, 0x22118884, 0x21188846, 0x01888462, 0x00000000, 0x00000000,
-0x2002a202, 0x2028200a, 0x028880a0, 0x28800a22, 0x8880a220, 0x880a2202,
-0xa0a22028, 0x0a220288, 0xa0202888, 0x22028880, 0x0028880a, 0x028000a2,
-0x00000a88, 0x00000000, 0x04100002, 0x41081042, 0x10810420, 0x08004204,
-0x81042041, 0x10420410, 0x04204108, 0x42041080, 0x20410810, 0x04108004,
-0x41081042, 0x00810420, 0x00000008, 0x00000000, 0x80508000, 0x05020140,
-0x50201408, 0x02014080, 0x20140805, 0x01408050, 0x14080502, 0x40805020,
-0x0a050201, 0x80502014, 0x05020140, 0x00201408, 0x00000000, 0x00000000,
-0xc0b2a002, 0x0b2b02ca, 0xb2b02cac, 0x2b02cac0, 0xb02cac0b, 0x02cac0b2,
-0x2cac0b2b, 0xcac0b2b0, 0xac0b2b02, 0xc0b2b02c, 0x0b2b02ca, 0x02b02cac,
-0x00000a88, 0x00000000, 0x20120002, 0x0138804e, 0x138804e2, 0x38804e20,
-0x8804e201, 0x804e2013, 0x04e20038, 0x4e20138a, 0xe2003880, 0x20138804,
-0x0138804e, 0x039804e2, 0x00000000, 0x00000000, 0x10c40000, 0x8c484312,
-0xc0863121, 0x48030218, 0x8631218c, 0x631218c0, 0x30218c48, 0x1218c482,
-0x200c0863, 0x18c48231, 0x0c486312, 0x00803121, 0x00000000, 0x00000000,
-0xfffc0000, 0xffcbfff2, 0xfcbfff2f, 0xcbfff2ff, 0xbfff2fff, 0xfff2fffc,
-0xff2fffcb, 0xf2fffcbf, 0x2fffcbff, 0xfffcbfff, 0xffcbfff2, 0x00bfff2f,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xdfb40000, 0xb3437ed0,
-0x7c36cd0d, 0x4bfff0db, 0x36cd0db3, 0x6cd0db7c, 0xdf0db343, 0xd0db34be,
-0x0db7c36c, 0xdb34becd, 0xfb436cd0, 0x0037ed0d, 0x00000000, 0x00000000,
-0x3fcc0000, 0xccc8ff32, 0xfc8f3323, 0xcbfff23c, 0x8f3323cc, 0xf3323cfc,
-0x3f23ccc8, 0x323cccbf, 0x23cfc8f3, 0x3cccbf33, 0xfcc8f332, 0x008ff323,
-0x00000000, 0x00000000, 0x7edc0000, 0xedc9fb72, 0xdc9fb727, 0xc9fb727e,
-0x9fb727ed, 0xfb727edc, 0xb727edc9, 0x727edc9f, 0x218dc9fb, 0x7edc9fb7,
-0xedc9fb72, 0x0087b727, 0x00000000, 0x00000000, 0x21c00000, 0x24d18020,
-0x42100002, 0x02850061, 0x0a004034, 0x85002140, 0x51060433, 0x08c34208,
-0x82143395, 0xc14008d0, 0x14218508, 0x00085002, 0x00000000, 0x00000000,
-0xa0004000, 0x00528820, 0x0828900a, 0x410060a0, 0x08004804, 0x802c2001,
-0x000a0040, 0x20208118, 0x44005080, 0x20000002, 0x00128020, 0x00080202,
-0x00000120, 0x00000000, 0x61000000, 0x40109504, 0x1138940e, 0x128c5061,
-0x08c6ce31, 0x845c2312, 0xc4061180, 0x54231828, 0x46118084, 0x23180044,
-0x10b08454, 0x00284002, 0x00000000, 0x00000000, 0x20900800, 0x01308144,
-0x1038340e, 0xd0006060, 0x08960e01, 0x8068201e, 0x04060133, 0x64201828,
-0x0201b380, 0x20100006, 0x01318064, 0x00280602, 0x00000000, 0x00000000,
-0x01124000, 0x25131454, 0x13004048, 0x10044401, 0x00e44031, 0x04400110,
-0x84003133, 0x40031000, 0x00110004, 0x410020c4, 0x10800400, 0x00004000,
-0x00000900, 0x00000000, 0x04400010, 0x20300100, 0x4020000c, 0x20010c00,
-0x00108400, 0x01000042, 0x10000400, 0x00004000, 0x80040201, 0x80402010,
-0x04000108, 0x00001000, 0x00000000, 0x00000000, 0x81110010, 0x11900474,
-0x1832044c, 0x102c7c01, 0x00c44831, 0x04600319, 0xc4001100, 0x50031002,
-0x40118104, 0x43103044, 0x11800454, 0x40004540, 0x00000800, 0x00000000,
-0x80100000, 0x05130244, 0x1030844c, 0x80004000, 0x00a60801, 0x00400018,
-0x040001b3, 0x40001000, 0x00018000, 0x00103004, 0x01800054, 0x40000540,
-0x00000000, 0x00000000, 0x2a102010, 0x11e2844c, 0x53088486, 0x00855821,
-0x08048281, 0x85702b53, 0xd7ceb533, 0x4823580a, 0x02153185, 0x615a08d7,
-0x15008540, 0x40085402, 0x00000080, 0x00000000, 0xa2100010, 0x01028064,
-0x5538844a, 0x90806c20, 0x18064201, 0x80602053, 0x04020190, 0x6420d818,
-0x42019280, 0xa05b0804, 0x01808064, 0x00080642, 0x00000000, 0x00000000,
-0xc1000010, 0x2411841c, 0x0620804c, 0xa08c0c21, 0x28d28a20, 0x84002305,
-0xc04210a0, 0x28230828, 0x0210708c, 0x630b0840, 0x10408408, 0x40084002,
-0x00000000, 0x00000000, 0xa0080800, 0x20a3801c, 0x021883c2, 0x13801c22,
-0x08018a04, 0x80102803, 0x01ce0033, 0x14e00b38, 0x82002380, 0xa0020800,
-0x0033801c, 0x43380082, 0x00000020, 0x00000000, 0x61000010, 0x14d08000,
-0x0028408e, 0x63840ca1, 0x08c00610, 0x8400234b, 0xc00e3053, 0x0c234108,
-0x8e1063a4, 0x210028c2, 0x10608400, 0x40084282, 0x00000000, 0x00000000,
-0x80480000, 0x00200908, 0x0030118a, 0xb2831ca0, 0x00808800, 0x81040003,
-0x10460410, 0x0c000100, 0x02040081, 0x00011010, 0x04120100, 0x00001040,
-0x00000000, 0x00000000, 0x41480000, 0x14122004, 0x0d304042, 0x838c0421,
-0x20c24410, 0x8408030b, 0x02c40040, 0x0c000f00, 0x4210508c, 0x030c2042,
-0x10410400, 0x00004280, 0x00000000, 0x00000000, 0x40070800, 0x00120824,
-0x093000cc, 0x13800806, 0x20110004, 0x00280809, 0x01402020, 0x28000500,
-0x8c002300, 0x000a2001, 0x00200020, 0x00000100, 0x00000420, 0x00000000,
-0x0808000c, 0x00000001, 0x0b000000, 0x02000008, 0x00000004, 0x0000080b,
-0x00000000, 0x000c0b00, 0x00000000, 0x080b0000, 0x00000000, 0x33000000,
-0x00000000, 0x00000000, 0x0308040c, 0x00000501, 0x09090c0a, 0x00010107,
-0x08000800, 0x01010709, 0x00080402, 0x010b0908, 0x08040201, 0x03090800,
-0x04020103, 0x31080008, 0x00000010, 0x00000000, 0x385be000, 0xc4030910,
-0xffe52fe7, 0x01019a03, 0x980c0264, 0x00020001, 0x90019003, 0x01000001,
-0x00000300, 0x00000004, 0x0c030001, 0x00019c00, 0x00000f80, 0x00000000,
-0x70c80000, 0x6401322e, 0x00774532, 0x00000000, 0x00000208, 0x00000000,
-0x00000001, 0x01000002, 0x00080000, 0x00000008, 0x00010000, 0x00000800,
-0x00000000, 0x00000000, 0x42280000, 0x29138111, 0x02802a14, 0x44000000,
-0x01000000, 0x00000000, 0x00010044, 0x00000000, 0x01004400, 0x00000100,
-0x00440000, 0x00010001, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0xfc000000, 0x03ff7eff, 0x00000000, 0xf76cff7c, 0x00000002, 0xeefffc00,
-0x000003fd, 0x7cfc0000, 0x00037ff6, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0x7c000000, 0x03e77beb, 0x00000000, 0xfef7fffc,
-0x00000003, 0xf7fef400, 0x000003ff, 0x7efc0000, 0x0003fffe, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xf8000000, 0x03f3fbf3,
-0x00000000, 0xedf2fdf8, 0x00000003, 0xf6f9f400, 0x000002ff, 0xfcfc0000,
-0x0002fef7, 0x00000000, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0x3c000000, 0x03df7fcf, 0x00000000, 0xfffddefc, 0x00000003, 0xfffefc00,
-0x000003ff, 0xfffc0000, 0x0003ffff, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0xfc000000, 0x03dfdeff, 0x00000000, 0xffff7ffc,
-0x00000003, 0xfe7f3c00, 0x000003ff, 0xfffc0000, 0x0003ffff, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xdc000000, 0x03ffffff,
-0x00000000, 0xffffffbc, 0x00000003, 0x7ffebc00, 0x000003ff, 0xbf7c0000,
-0x0003feff, 0x00000000, 0x00000000, 0x00000000, 0xa3400000, 0x14528804,
-0x41085006, 0xc0840421, 0x08514214, 0x85002140, 0x514234a2, 0x00210108,
-0x06148085, 0xe14328d0, 0x14e08528, 0x00085002, 0x00000000, 0x00000000,
-0xe2400000, 0x84028000, 0x4228000e, 0x40800820, 0x00004201, 0x80402011,
-0x00828102, 0x60200208, 0x8a004080, 0x20091804, 0x00708060, 0x00080402,
-0x00000000, 0x00000000, 0xa0000000, 0x5953a824, 0x1918440e, 0x00854423,
-0x00444211, 0x8440211a, 0x44420191, 0x00234908, 0x42101084, 0x23032840,
-0x10108404, 0x00084002, 0x00000000, 0x00000000, 0x62100000, 0x41838164,
-0x1808040a, 0x80807420, 0x0004c201, 0x80702018, 0x040221a2, 0x40205908,
-0x06015080, 0xe01b0807, 0x01208048, 0x00080702, 0x00000000, 0x00000000,
-0x42400000, 0x55102060, 0x41004400, 0x10042801, 0x00408810, 0x04640102,
-0x44083180, 0x68c11000, 0x00100004, 0x011020c4, 0x11100450, 0x01004440,
-0x00000000, 0x00000000, 0x80000010, 0x00132108, 0x02301088, 0x20010400,
-0x10100804, 0x01080041, 0x10000410, 0x00004000, 0x00040001, 0x80401010,
-0x04200100, 0x40001080, 0x00000000, 0x00000000, 0xc0100010, 0x19d20164,
-0x11306440, 0x90046c03, 0x20464411, 0x04640112, 0x864811b0, 0x64031100,
-0x40115004, 0x43192046, 0x11100464, 0x41004540, 0x00000000, 0x00000000,
-0x80100010, 0x01130060, 0x18000444, 0x00005c00, 0x00048801, 0x0050001a,
-0x84480190, 0x68c01900, 0x40011000, 0x001d2004, 0x01800044, 0x41000400,
-0x00000000, 0x00000000, 0xe0100010, 0x55418944, 0x50284442, 0x10856021,
-0x08548615, 0x85606153, 0x54821500, 0x5c215108, 0x42152385, 0x615008d4,
-0x15208560, 0x40085442, 0x00000000, 0x00000000, 0xe0100010, 0x01a28248,
-0x111804ca, 0x50804420, 0x08054a01, 0x8040a013, 0x05422100, 0x6c201308,
-0xca019080, 0x60100805, 0x01b08064, 0x400806c2, 0x00000000, 0x00000000,
-0xa3000010, 0x08108014, 0x0628e0ce, 0x508c0021, 0x08428610, 0x84046107,
-0x41821040, 0x0c230b28, 0x46107084, 0x83000841, 0x18708424, 0x400842c2,
-0x00000000, 0x00000000, 0xe0480810, 0x0001a008, 0x0b1810ca, 0xa0801820,
-0x38024e00, 0x8014600a, 0x020280b3, 0x04e00d28, 0x86000380, 0xa00b3800,
-0x00138038, 0x4338000e, 0x00000020, 0x00000000, 0x20000010, 0x08928814,
-0x0528414a, 0xb0840c21, 0x28400210, 0x84002108, 0x420e1081, 0x24210108,
-0x02100084, 0x410128c0, 0x10b08404, 0x40084042, 0x00000000, 0x00000000,
-0x08400000, 0x04030928, 0x4a303004, 0x70011400, 0x3010c004, 0x01000044,
-0x104a2443, 0x0c004600, 0x8004a001, 0xa04d1013, 0x04100114, 0x00001000,
-0x00000000, 0x00000000, 0x02040000, 0x10930404, 0x0130d348, 0x100c2c01,
-0x30434010, 0x04200100, 0x42c62002, 0x04000100, 0x40109004, 0x43092040,
-0x10300404, 0x01004140, 0x00000000, 0x00000000, 0x02090800, 0x00402000,
-0x01002048, 0x30000000, 0x00028000, 0x00100000, 0x01002001, 0x28000100,
-0x40004000, 0x20032000, 0x00b0000c, 0x01000140, 0x00000420, 0x00000000,
-0x08080000, 0x04000401, 0x0b000801, 0x00040008, 0x00000004, 0x0802000b,
-0x00010801, 0x02000b00, 0x01080108, 0x000b0000, 0x08010802, 0x03000001,
-0x00000000, 0x00000000, 0x03083c3c, 0x00000901, 0x09090809, 0x00010107,
-0x08000800, 0x01010309, 0x00080000, 0x01030908, 0x08000001, 0x03090800,
-0x00000101, 0xf1080008, 0x000000f0, 0x00000000, 0xa1240000, 0x1402b696,
-0x02482655, 0x02019a98, 0x00000000, 0x00030000, 0x08019c03, 0x02000000,
-0x00000200, 0x00000190, 0x0c000000, 0x00000c00, 0x00000000, 0x00000000,
-0x1a980000, 0x00017333, 0x0229620b, 0x00000100, 0x00880008, 0x00000000,
-0x08000001, 0x00000002, 0x00080000, 0x00000000, 0x08010001, 0x00000800,
-0x00000000, 0x00000000, 0x84100000, 0x41132183, 0x00218040, 0x44000000,
-0x00000100, 0x00000000, 0x00020044, 0x00000000, 0x01004400, 0x00000100,
-0x00440000, 0x00010003, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0xfc000000, 0x03ffffff, 0x00000000, 0x7fff7ffc, 0x00000003, 0xf7fefc00,
-0x000003ff, 0xdefc0000, 0x0001fff7, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0xfc000000, 0x03ffffff, 0x00000000, 0x7fff7ffc,
-0x00000001, 0xfffffc00, 0x0000007f, 0xfffc0000, 0x0002fffe, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xfc000000, 0x03ffffff,
-0x00000000, 0xfffdfefc, 0x00000003, 0xfdfffc00, 0x000003ff, 0xfffc0000,
-0x0003ffff, 0x00000000, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0xfc000000, 0x03ef7f7f, 0x00000000, 0x9ffffffc, 0x00000003, 0xfffffc00,
-0x000003fc, 0xfffc0000, 0x0003ffff, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0xfc000000, 0x03ffffff, 0x00000000, 0xfdddfdfc,
-0x00000003, 0xffff7c00, 0x000003fd, 0xfffc0000, 0x0003ffff, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xfc000000, 0x03ffbfff,
-0x00000000, 0xfffefffc, 0x00000003, 0x7ffffc00, 0x000003ff, 0xff7c0000,
-0x0003feff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x8004000c, 0x00000040, 0x71c2000c, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x8004000c, 0x00004040, 0x01c2000c, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x8000000c, 0xefcf0000, 0x8001000c, 0xc0000000, 0x7002000c, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x8001000c, 0xa0000000, 0x8005000c, 0x00000000, 0x8000000c,
-0xe9d60000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-};
diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c
index 40b9f1b80f44..2847b415506d 100644
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -3,6 +3,7 @@
*
* Copyright (c) 2002 Paul Davis
* Marcus Andersson
+ * Thomas Charbonnel
*
* 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
@@ -23,7 +24,6 @@
#include <sound/driver.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
-#include <linux/init.h>
#include <linux/slab.h>
#include <linux/pci.h>
@@ -33,22 +33,20 @@
#include <sound/info.h>
#include <sound/asoundef.h>
#include <sound/rawmidi.h>
+#include <sound/hwdep.h>
#define SNDRV_GET_ID
#include <sound/initval.h>
+#include <sound/hdsp.h>
#include <asm/byteorder.h>
#include <asm/current.h>
#include <asm/io.h>
-#include "multiface_firmware.dat"
-#include "digiface_firmware.dat"
-
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
static int precise_ptr[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0 }; /* Enable precise pointer */
static int line_outs_monitor[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0}; /* Send all inputs/playback to line outs */
-static int force_firmware[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 0}; /* Force firmware reload */
MODULE_PARM(index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(index, "Index value for RME Hammerfall DSP interface.");
@@ -65,19 +63,12 @@ MODULE_PARM_SYNTAX(precise_ptr, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
MODULE_PARM(line_outs_monitor,"1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(line_outs_monitor, "Send all input and playback streams to line outs by default.");
MODULE_PARM_SYNTAX(line_outs_monitor, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_PARM(force_firmware,"1-" __MODULE_STRING(SNDRV_CARDS) "i");
-MODULE_PARM_DESC(force_firmware, "Force a reload of the I/O box firmware");
-MODULE_PARM_SYNTAX(force_firmware, SNDRV_ENABLED "," SNDRV_BOOLEAN_FALSE_DESC);
-MODULE_AUTHOR("Paul Davis <pbd@op.net>");
+MODULE_AUTHOR("Paul Davis <paul@linuxaudiosystems.com>, Marcus Andersson, Thomas Charbonnel <thomas@undata.org>");
MODULE_DESCRIPTION("RME Hammerfall DSP");
MODULE_LICENSE("GPL");
MODULE_CLASSES("{sound}");
-MODULE_DEVICES("{{RME,Hammerfall-DSP}}");
-
-typedef enum {
- Digiface,
- Multiface
-} HDSP_Type;
+MODULE_DEVICES("{{RME Hammerfall-DSP},"
+ "{RME HDSP-9652}}");
#define HDSP_MAX_CHANNELS 26
#define DIGIFACE_SS_CHANNELS 26
@@ -123,9 +114,9 @@ typedef enum {
#define HDSP_playbackPeakLevel 4096 /* 26 * 32 bit values */
#define HDSP_inputPeakLevel 4224 /* 26 * 32 bit values */
-#define HDSP_outputPeakLevel 4100 /* 26 * 32 bit values */
+#define HDSP_outputPeakLevel 4352 /* (26+2) * 32 bit values */
#define HDSP_playbackRmsLevel 4612 /* 26 * 64 bit values */
-#define HDSP_inputRmsLevel 4884 /* 26 * 64 bit values */
+#define HDSP_inputRmsLevel 4868 /* 26 * 64 bit values */
#define HDSP_IO_EXTENT 5192
@@ -148,19 +139,19 @@ typedef enum {
/* Control Register bits */
-#define HDSP_Start (1<<0) // start engine
-#define HDSP_Latency0 (1<<1) // buffer size = 2^n where n is defined by Latency{2,1,0}
-#define HDSP_Latency1 (1<<2) // [ see above ]
-#define HDSP_Latency2 (1<<3) // ] see above ]
-#define HDSP_ClockModeMaster (1<<4) // 1=Master, 0=Slave/Autosync
-#define HDSP_AudioInterruptEnable (1<<5) // what do you think ?
-#define HDSP_Frequency0 (1<<6) // 0=44.1kHz/88.2kHz 1=48kHz/96kHz
-#define HDSP_Frequency1 (1<<7) // 0=32kHz/64kHz
-#define HDSP_DoubleSpeed (1<<8) // 0=normal speed, 1=double speed
-#define HDSP_SPDIFProfessional (1<<9) // 0=consumer, 1=professional
-#define HDSP_SPDIFEmphasis (1<<10) // 0=none, 1=on
-#define HDSP_SPDIFNonAudio (1<<11) // 0=off, 1=on
-#define HDSP_SPDIFOpticalOut (1<<12) // 1=use 1st ADAT connector for SPDIF, 0=do not
+#define HDSP_Start (1<<0) /* start engine */
+#define HDSP_Latency0 (1<<1) /* buffer size = 2^n where n is defined by Latency{2,1,0} */
+#define HDSP_Latency1 (1<<2) /* [ see above ] */
+#define HDSP_Latency2 (1<<3) /* ] see above ] */
+#define HDSP_ClockModeMaster (1<<4) /* 1=Master, 0=Slave/Autosync */
+#define HDSP_AudioInterruptEnable (1<<5) /* what do you think ? */
+#define HDSP_Frequency0 (1<<6) /* 0=44.1kHz/88.2kHz 1=48kHz/96kHz */
+#define HDSP_Frequency1 (1<<7) /* 0=32kHz/64kHz */
+#define HDSP_DoubleSpeed (1<<8) /* 0=normal speed, 1=double speed */
+#define HDSP_SPDIFProfessional (1<<9) /* 0=consumer, 1=professional */
+#define HDSP_SPDIFEmphasis (1<<10) /* 0=none, 1=on */
+#define HDSP_SPDIFNonAudio (1<<11) /* 0=off, 1=on */
+#define HDSP_SPDIFOpticalOut (1<<12) /* 1=use 1st ADAT connector for SPDIF, 0=do not */
#define HDSP_SyncRef2 (1<<13)
#define HDSP_SPDIFInputSelect0 (1<<14)
#define HDSP_SPDIFInputSelect1 (1<<15)
@@ -186,15 +177,40 @@ typedef enum {
#define HDSP_SyncRef_WORD (HDSP_SyncRef2)
#define HDSP_SyncRef_ADAT_SYNC (HDSP_SyncRef0|HDSP_SyncRef2)
-/* Preferred sync source choices - used by "sync_pref" control switch */
+/* Sample Clock Sources */
+
+#define HDSP_CLOCK_SOURCE_AUTOSYNC 0
+#define HDSP_CLOCK_SOURCE_INTERNAL_32KHZ 1
+#define HDSP_CLOCK_SOURCE_INTERNAL_44_1KHZ 2
+#define HDSP_CLOCK_SOURCE_INTERNAL_48KHZ 3
+#define HDSP_CLOCK_SOURCE_INTERNAL_64KHZ 4
+#define HDSP_CLOCK_SOURCE_INTERNAL_88_2KHZ 5
+#define HDSP_CLOCK_SOURCE_INTERNAL_96KHZ 6
+
+/* Preferred sync reference choices - used by "pref_sync_ref" control switch */
+
+#define HDSP_SYNC_FROM_WORD 0
+#define HDSP_SYNC_FROM_ADAT_SYNC 1
+#define HDSP_SYNC_FROM_SPDIF 2
+#define HDSP_SYNC_FROM_ADAT1 3
+#define HDSP_SYNC_FROM_ADAT2 4
+#define HDSP_SYNC_FROM_ADAT3 5
+
+/* SyncCheck status */
+
+#define HDSP_SYNC_CHECK_NO_LOCK 0
+#define HDSP_SYNC_CHECK_LOCK 1
+#define HDSP_SYNC_CHECK_SYNC 2
-#define HDSP_SYNC_FROM_SELF 0
-#define HDSP_SYNC_FROM_WORD 1
-#define HDSP_SYNC_FROM_ADAT_SYNC 2
-#define HDSP_SYNC_FROM_SPDIF 3
-#define HDSP_SYNC_FROM_ADAT1 4
-#define HDSP_SYNC_FROM_ADAT2 5
-#define HDSP_SYNC_FROM_ADAT3 6
+/* AutoSync references - used by "autosync_ref" control switch */
+
+#define HDSP_AUTOSYNC_FROM_WORD 0
+#define HDSP_AUTOSYNC_FROM_ADAT_SYNC 1
+#define HDSP_AUTOSYNC_FROM_SPDIF 2
+#define HDSP_AUTOSYNC_FROM_NONE 3
+#define HDSP_AUTOSYNC_FROM_ADAT1 4
+#define HDSP_AUTOSYNC_FROM_ADAT2 5
+#define HDSP_AUTOSYNC_FROM_ADAT3 6
/* Possible sources of S/PDIF input */
@@ -242,13 +258,13 @@ typedef enum {
#define HDSP_spdifFrequencyMask (HDSP_spdifFrequency0|HDSP_spdifFrequency1|HDSP_spdifFrequency2)
-#define HDSP_spdifFrequency32KHz (HDSP_spdifFrequency0|HDSP_spdifFrequency1|HDSP_spdifFrequency2)
-#define HDSP_spdifFrequency44_1KHz (HDSP_spdifFrequency2|HDSP_spdifFrequency1)
-#define HDSP_spdifFrequency48KHz (HDSP_spdifFrequency0|HDSP_spdifFrequency2)
+#define HDSP_spdifFrequency32KHz (HDSP_spdifFrequency0)
+#define HDSP_spdifFrequency44_1KHz (HDSP_spdifFrequency1)
+#define HDSP_spdifFrequency48KHz (HDSP_spdifFrequency0|HDSP_spdifFrequency1)
-#define HDSP_spdifFrequency64KHz 0
-#define HDSP_spdifFrequency88_2KHz (HDSP_spdifFrequency2)
-#define HDSP_spdifFrequency96KHz (HDSP_spdifFrequency0|HDSP_spdifFrequency1)
+#define HDSP_spdifFrequency64KHz (HDSP_spdifFrequency2)
+#define HDSP_spdifFrequency88_2KHz (HDSP_spdifFrequency0|HDSP_spdifFrequency2)
+#define HDSP_spdifFrequency96KHz (HDSP_spdifFrequency2|HDSP_spdifFrequency1)
/* Status2 Register bits */
@@ -282,15 +298,17 @@ typedef enum {
#define HDSP_SelSyncRef_WORD (HDSP_SelSyncRef2)
#define HDSP_SelSyncRef_ADAT_SYNC (HDSP_SelSyncRef0|HDSP_SelSyncRef2)
-/* FIFO wait times, defined in terms of loops on readl() */
+/* Card state flags */
+
+#define HDSP_InitializationComplete (1<<0)
+#define HDSP_FirmwareLoaded (1<<1)
+#define HDSP_FirmwareCached (1<<2)
-#define HDSP_LONG_WAIT 40000
-#define HDSP_SHORT_WAIT 100
+/* FIFO wait times, defined in terms of 1/10ths of msecs */
-/* Computing addresses for adjusting gains */
+#define HDSP_LONG_WAIT 5000
+#define HDSP_SHORT_WAIT 30
-#define INPUT_TO_OUTPUT_KEY(in,out) ((64 * (out)) + (in))
-#define PLAYBACK_TO_OUTPUT_KEY(chn,out) ((64 * (out)) + 32 + (chn))
#define UNITY_GAIN 32768
#define MINUS_INFINITY_GAIN 0
@@ -318,10 +336,8 @@ typedef enum {
#define HDSP_DMA_AREA_BYTES ((HDSP_MAX_CHANNELS+1) * HDSP_CHANNEL_BUFFER_BYTES)
#define HDSP_DMA_AREA_KILOBYTES (HDSP_DMA_AREA_BYTES/1024)
-#define HDSP_MATRIX_MIXER_SIZE 2048
-
-typedef struct _hdsp hdsp_t;
-typedef struct _hdsp_midi hdsp_midi_t;
+typedef struct _hdsp hdsp_t;
+typedef struct _hdsp_midi hdsp_midi_t;
struct _hdsp_midi {
hdsp_t *hdsp;
@@ -332,45 +348,54 @@ struct _hdsp_midi {
char istimer; /* timer in use */
struct timer_list timer;
spinlock_t lock;
+ int pending;
};
struct _hdsp {
- spinlock_t lock;
- snd_pcm_substream_t *capture_substream;
- snd_pcm_substream_t *playback_substream;
- hdsp_midi_t midi[2];
- int precise_ptr;
- u32 control_register; /* cached value */
- u32 creg_spdif;
- u32 creg_spdif_stream;
- char *card_name; /* digiface/multiface */
- HDSP_Type type; /* ditto, but for code use */
- size_t period_bytes; /* guess what this is */
- unsigned char ds_channels;
- unsigned char ss_channels; /* different for multiface/digiface */
- void *capture_buffer_unaligned; /* original buffer addresses */
- void *playback_buffer_unaligned; /* original buffer addresses */
- unsigned char *capture_buffer; /* suitably aligned address */
- unsigned char *playback_buffer; /* suitably aligned address */
- dma_addr_t capture_buffer_addr;
- dma_addr_t playback_buffer_addr;
- pid_t capture_pid;
- pid_t playback_pid;
- int running;
- int passthru; /* non-zero if doing pass-thru */
- int last_spdif_sample_rate; /* so that we can catch externally ... */
- int last_adat_sample_rate; /* ... induced rate changes */
- char *channel_map;
- int dev;
- int irq;
- unsigned long port;
- struct resource *res_port;
- unsigned long iobase;
- snd_card_t *card;
- snd_pcm_t *pcm;
- struct pci_dev *pci;
- snd_kcontrol_t *spdif_ctl;
- unsigned short mixer_matrix[HDSP_MATRIX_MIXER_SIZE];
+ spinlock_t lock;
+ snd_pcm_substream_t *capture_substream;
+ snd_pcm_substream_t *playback_substream;
+ hdsp_midi_t midi[2];
+ struct tasklet_struct midi_tasklet;
+ int precise_ptr;
+ u32 control_register; /* cached value */
+ u32 creg_spdif;
+ u32 creg_spdif_stream;
+ char *card_name; /* digiface/multiface */
+ HDSP_IO_Type io_type; /* ditto, but for code use */
+ unsigned short firmware_rev;
+ unsigned short state; /* stores state bits */
+ u32 firmware_cache[24413]; /* this helps recover from accidental iobox power failure */
+ size_t period_bytes; /* guess what this is */
+ unsigned char ds_channels;
+ unsigned char ss_channels; /* different for multiface/digiface */
+ void *capture_buffer_unaligned; /* original buffer addresses */
+ void *playback_buffer_unaligned; /* original buffer addresses */
+ unsigned char *capture_buffer; /* suitably aligned address */
+ unsigned char *playback_buffer; /* suitably aligned address */
+ dma_addr_t capture_buffer_addr;
+ dma_addr_t playback_buffer_addr;
+ pid_t capture_pid;
+ pid_t playback_pid;
+ int running;
+ int passthru; /* non-zero if doing pass-thru */
+ int last_spdif_sample_rate;/* for information reporting */
+ int last_external_sample_rate;
+ int last_internal_sample_rate;
+ int system_sample_rate;
+ char *channel_map;
+ int dev;
+ int irq;
+ unsigned long port;
+ struct resource *res_port;
+ unsigned long iobase;
+ snd_card_t *card;
+ snd_pcm_t *pcm;
+ snd_hwdep_t *hwdep;
+ struct pci_dev *pci;
+ snd_kcontrol_t *spdif_ctl;
+ snd_kcontrol_t *playback_mixer_ctls[HDSP_MAX_CHANNELS];
+ unsigned short mixer_matrix[HDSP_MATRIX_MIXER_SIZE];
};
/* These tables map the ALSA channels 1..N to the channels that we
@@ -387,7 +412,7 @@ static char channel_map_df_ss[HDSP_MAX_CHANNELS] = {
};
static char channel_map_mf_ss[HDSP_MAX_CHANNELS] = { /* Multiface */
- /* ADAT 0 */
+ /* Analog */
0, 1, 2, 3, 4, 5, 6, 7,
/* ADAT 2 */
16, 17, 18, 19, 20, 21, 22, 23,
@@ -414,8 +439,8 @@ extern void snd_hammerfall_free_buffer(struct pci_dev *, void *ptr);
static struct pci_device_id snd_hdsp_ids[] __devinitdata = {
{
- .vendor = PCI_VENDOR_ID_XILINX,
- .device = PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP,
+ .vendor = PCI_VENDOR_ID_XILINX,
+ .device = PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP,
.subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID,
}, /* RME Hammerfall-DSP */
@@ -424,6 +449,49 @@ static struct pci_device_id snd_hdsp_ids[] __devinitdata = {
MODULE_DEVICE_TABLE(pci, snd_hdsp_ids);
+/* prototypes */
+static int __devinit snd_hdsp_create_alsa_devices(snd_card_t *card, hdsp_t *hdsp);
+static int __devinit snd_hdsp_create_pcm(snd_card_t *card, hdsp_t *hdsp);
+static inline int snd_hdsp_initialize_input_enable (hdsp_t *hdsp);
+static inline void snd_hdsp_initialize_midi_flush (hdsp_t *hdsp);
+static inline void snd_hdsp_initialize_channels (hdsp_t *hdsp);
+static inline int hdsp_fifo_wait(hdsp_t *hdsp, int count, int timeout);
+static int hdsp_update_simple_mixer_controls(hdsp_t *hdsp);
+static int hdsp_autosync_ref(hdsp_t *hdsp);
+static int snd_hdsp_set_defaults(hdsp_t *hdsp);
+
+static inline int hdsp_is_9652 (hdsp_t *hdsp)
+{
+ switch (hdsp->firmware_rev) {
+ case 0x64:
+ case 0x65:
+ case 0x68:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+static inline int hdsp_playback_to_output_key (hdsp_t *hdsp, int in, int out)
+{
+ switch (hdsp->firmware_rev) {
+ case 0xa:
+ return (64 * out) + (32 + (in));
+ default:
+ return (52 * out) + (26 + (in));
+ }
+}
+
+static inline int hdsp_input_to_output_key (hdsp_t *hdsp, int in, int out)
+{
+ switch (hdsp->firmware_rev) {
+ case 0xa:
+ return (64 * out) + in;
+ default:
+ return (52 * out) + in;
+ }
+}
+
static inline void hdsp_write(hdsp_t *hdsp, int reg, int val)
{
writel(val, hdsp->iobase + reg);
@@ -434,24 +502,124 @@ static inline unsigned int hdsp_read(hdsp_t *hdsp, int reg)
return readl (hdsp->iobase + reg);
}
-static inline unsigned long long hdsp_read64 (hdsp_t *hdsp, int reg)
+static inline int hdsp_check_for_iobox (hdsp_t *hdsp)
{
- unsigned long long val;
- val = hdsp_read(hdsp, reg);
- val = (val<<32)|hdsp_read(hdsp, reg + 4);
+ if (hdsp_read (hdsp, HDSP_statusRegister) & HDSP_ConfigError) {
+ snd_printk ("Hammerfall-DSP: no Digiface or Multiface connected!\n");
+ hdsp->state &= ~HDSP_FirmwareLoaded;
+ return -EIO;
+ }
+ return 0;
+}
- return val;
+static int snd_hdsp_load_firmware_from_cache(hdsp_t *hdsp) {
+
+ int i;
+ unsigned long flags;
+
+ if ((hdsp_read (hdsp, HDSP_statusRegister) & HDSP_DllError) != 0) {
+
+ snd_printk ("loading firmware\n");
+
+ hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_PROGRAM);
+ hdsp_write (hdsp, HDSP_fifoData, 0);
+
+ if (hdsp_fifo_wait (hdsp, 0, HDSP_LONG_WAIT)) {
+ snd_printk ("timeout waiting for download preparation\n");
+ return -EIO;
+ }
+
+ hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_LOAD);
+
+ for (i = 0; i < 24413; ++i) {
+ hdsp_write(hdsp, HDSP_fifoData, hdsp->firmware_cache[i]);
+ if (hdsp_fifo_wait (hdsp, 127, HDSP_LONG_WAIT)) {
+ snd_printk ("timeout during firmware loading\n");
+ return -EIO;
+ }
+ }
+
+ if (hdsp_fifo_wait (hdsp, 0, HDSP_LONG_WAIT)) {
+ snd_printk ("timeout at end of firmware loading\n");
+ return -EIO;
+ }
+
+ hdsp_write (hdsp, HDSP_jtagReg, 0);
+ snd_printk ("finished firmware loading\n");
+
+ if ((1000 / HZ) < 3000) {
+ set_current_state(TASK_UNINTERRUPTIBLE);
+ schedule_timeout((3000 * HZ + 999) / 1000);
+ } else {
+ mdelay(3000);
+ }
+ }
+ if (hdsp->state & HDSP_InitializationComplete) {
+ snd_printk("firmware loaded from cache, restoring defaults\n");
+ spin_lock_irqsave(&hdsp->lock, flags);
+ snd_hdsp_set_defaults(hdsp);
+ spin_unlock_irqrestore(&hdsp->lock, flags);
+ }
+
+ hdsp->state |= HDSP_FirmwareLoaded;
+
+ return 0;
}
-static inline int hdsp_check_for_iobox (hdsp_t *hdsp)
+static inline int hdsp_get_iobox_version (hdsp_t *hdsp)
{
- if (hdsp_read (hdsp, HDSP_statusRegister) & HDSP_ConfigError) {
- snd_printk ("Hammerfall-DSP: no Digiface or Multiface connected!\n");
+ int err;
+
+ if (hdsp_check_for_iobox (hdsp)) {
return -EIO;
}
+
+ if ((err = snd_hdsp_initialize_input_enable(hdsp)) < 0) {
+ return err;
+ }
+
+ if ((hdsp_read (hdsp, HDSP_statusRegister) & HDSP_DllError) != 0) {
+
+ hdsp_write (hdsp, HDSP_jtagReg, HDSP_PROGRAM);
+ hdsp_write (hdsp, HDSP_fifoData, 0);
+ if (hdsp_fifo_wait (hdsp, 0, HDSP_SHORT_WAIT) < 0) {
+ return -EIO;
+ }
+
+ hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_LOAD);
+ hdsp_write (hdsp, HDSP_fifoData, 0);
+
+ if (hdsp_fifo_wait (hdsp, 0, HDSP_SHORT_WAIT)) {
+ hdsp->io_type = Multiface;
+ hdsp_write (hdsp, HDSP_jtagReg, HDSP_VERSION_BIT);
+ hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_LOAD);
+ hdsp_fifo_wait (hdsp, 0, HDSP_SHORT_WAIT);
+ } else {
+ hdsp->io_type = Digiface;
+ }
+ } else {
+ /* firmware was already loaded, get iobox type */
+ if (hdsp_read(hdsp, HDSP_status2Register) & HDSP_version1) {
+ hdsp->io_type = Multiface;
+ } else {
+ hdsp->io_type = Digiface;
+ }
+ }
return 0;
}
+
+static inline int hdsp_check_for_firmware (hdsp_t *hdsp)
+{
+ if ((hdsp_read (hdsp, HDSP_statusRegister) & HDSP_DllError) != 0) {
+ snd_printk("firmware not present.\n");
+ hdsp->state &= ~HDSP_FirmwareLoaded;
+ return -EIO;
+ }
+ return 0;
+}
+
+
static inline int hdsp_fifo_wait(hdsp_t *hdsp, int count, int timeout)
{
int i;
@@ -460,10 +628,18 @@ static inline int hdsp_fifo_wait(hdsp_t *hdsp, int count, int timeout)
are available in the command FIFO.
*/
- for (i = 0; i < timeout; i++)
+ for (i = 0; i < timeout; i++) {
+
if ((int)(hdsp_read (hdsp, HDSP_fifoStatus) & 0xff) <= count)
return 0;
+ /* not very friendly, but we only do this during a firmware
+ load and changing the mixer, so we just put up with it.
+ */
+
+ udelay (100);
+ }
+
snd_printk ("wait for FIFO status <= %d failed after %d iterations\n",
count, timeout);
return -1;
@@ -481,16 +657,46 @@ static inline int hdsp_write_gain(hdsp_t *hdsp, unsigned int addr, unsigned shor
{
unsigned int ad;
- if (addr >= HDSP_MATRIX_MIXER_SIZE)
- return -1;
+ if (hdsp_is_9652 (hdsp)) {
- ad = data + addr * 65536;
+ if ((ad = addr/2) < 676) {
+
+ /* from martin björnsen:
+
+ "You can only write dwords to the
+ mixer memory which contain two
+ mixer values in the low and high
+ word. So if you want to change
+ value 0 you have to read value 1
+ from the cache and write both to
+ the first dword in the mixer
+ memory."
+ */
+
+ hdsp->mixer_matrix[addr] = data;
+ hdsp_write (hdsp, 1024 + ad,
+ (hdsp->mixer_matrix[(addr&0x7fe)+1] << 16) +
+ hdsp->mixer_matrix[addr&0x7fe]);
+ return 0;
+ } else {
+ return -1;
+ }
+
+
+ } else {
+ if (addr >= HDSP_MATRIX_MIXER_SIZE)
+ return -1;
+
+ ad = (addr << 16) + data;
+
+ if (hdsp_fifo_wait(hdsp, 127, HDSP_LONG_WAIT)) {
+ return -1;
+ }
+
+ hdsp_write (hdsp, HDSP_fifoData, ad);
+ hdsp->mixer_matrix[addr] = data;
- if (hdsp_fifo_wait(hdsp, 127, HDSP_LONG_WAIT)) {
- return -1;
}
- hdsp_write (hdsp, HDSP_fifoData, ad);
- hdsp->mixer_matrix[addr] = data;
return 0;
}
@@ -509,7 +715,7 @@ static inline int snd_hdsp_use_is_exclusive(hdsp_t *hdsp)
return ret;
}
-static inline int hdsp_system_sample_rate (hdsp_t *hdsp)
+static inline int hdsp_external_sample_rate (hdsp_t *hdsp)
{
unsigned int status2 = hdsp_read(hdsp, HDSP_status2Register);
unsigned int rate_bits = status2 & HDSP_systemFrequencyMask;
@@ -521,7 +727,8 @@ static inline int hdsp_system_sample_rate (hdsp_t *hdsp)
case HDSP_systemFrequency64: return 64000;
case HDSP_systemFrequency88_2: return 88200;
case HDSP_systemFrequency96: return 96000;
- default: return 0;
+ default:
+ return 0;
}
}
@@ -533,7 +740,7 @@ static inline int hdsp_spdif_sample_rate(hdsp_t *hdsp)
if (status & HDSP_SPDIFErrorFlag) {
return 0;
}
-
+
switch (rate_bits) {
case HDSP_spdifFrequency32KHz: return 32000;
case HDSP_spdifFrequency44_1KHz: return 44100;
@@ -542,7 +749,7 @@ static inline int hdsp_spdif_sample_rate(hdsp_t *hdsp)
case HDSP_spdifFrequency88_2KHz: return 88200;
case HDSP_spdifFrequency96KHz: return 96000;
default:
- snd_printk ("unknown frequency status; bits = 0x%x, status = 0x%x", rate_bits, status);
+ snd_printk ("unknown spdif frequency status; bits = 0x%x, status = 0x%x\n", rate_bits, status);
return 0;
}
}
@@ -571,17 +778,7 @@ static snd_pcm_uframes_t hdsp_hw_pointer(hdsp_t *hdsp)
static inline void hdsp_reset_hw_pointer(hdsp_t *hdsp)
{
-#if 0
- /* reset the hw pointer to zero. We do this by writing to 8
- registers, each of which is a 32bit wide register, and set
- them all to zero.
- */
-
- for (i = 0; i < 8; ++i) {
- hdsp_write(hdsp, i, 0);
- udelay(10);
- }
-#endif
+ hdsp_write (hdsp, HDSP_resetPointer, 0);
}
static inline void hdsp_start_audio(hdsp_t *s)
@@ -626,16 +823,33 @@ static int hdsp_set_interrupt_interval(hdsp_t *s, unsigned int frames)
return 0;
}
-static int hdsp_set_rate(hdsp_t *hdsp, int rate)
+static int hdsp_set_rate(hdsp_t *hdsp, int rate, int called_internally)
{
int reject_if_open = 0;
int current_rate;
-
- if (!(hdsp->control_register & HDSP_ClockModeMaster)) {
- snd_printk ("device is not running as a clock master: cannot set sample rate.\n");
- return -1;
+ int rate_bits;
+
+ if (!(hdsp->control_register & HDSP_ClockModeMaster)) {
+ if (called_internally) {
+ /* request from ctl or card initialization */
+ snd_printk("device is not running as a clock master: cannot set sample rate.\n");
+ return -1;
+ } else {
+ /* hw_param request while in AutoSync mode */
+ int external_freq = hdsp_external_sample_rate(hdsp);
+ int spdif_freq = hdsp_spdif_sample_rate(hdsp);
+
+ if ((spdif_freq == external_freq*2) && (hdsp_autosync_ref(hdsp) >= HDSP_AUTOSYNC_FROM_ADAT1)) {
+ snd_printk("Detected ADAT in double speed mode\n");
+ } else if (rate != external_freq) {
+ snd_printk("No AutoSync source for requested rate\n");
+ return -1;
+ }
+ }
}
+ current_rate = hdsp->system_sample_rate;
+
/* Changing from a "single speed" to a "double speed" rate is
not allowed if any substreams are open. This is because
such a change causes a shift in the location of
@@ -644,48 +858,46 @@ static int hdsp_set_rate(hdsp_t *hdsp, int rate)
Note that a similar but essentially insoluble problem
exists for externally-driven rate changes. All we can do
- is to flag rate changes in the read/write routines.
- */
+ is to flag rate changes in the read/write routines. */
spin_lock_irq(&hdsp->lock);
- current_rate = hdsp_system_sample_rate(hdsp);
switch (rate) {
case 32000:
if (current_rate > 48000) {
reject_if_open = 1;
}
- rate = HDSP_Frequency32KHz;
+ rate_bits = HDSP_Frequency32KHz;
break;
case 44100:
if (current_rate > 48000) {
reject_if_open = 1;
}
- rate = HDSP_Frequency44_1KHz;
+ rate_bits = HDSP_Frequency44_1KHz;
break;
case 48000:
if (current_rate > 48000) {
reject_if_open = 1;
}
- rate = HDSP_Frequency48KHz;
+ rate_bits = HDSP_Frequency48KHz;
break;
case 64000:
- if (current_rate < 48000) {
+ if (current_rate <= 48000) {
reject_if_open = 1;
}
- rate = HDSP_Frequency64KHz;
+ rate_bits = HDSP_Frequency64KHz;
break;
case 88200:
- if (current_rate < 48000) {
+ if (current_rate <= 48000) {
reject_if_open = 1;
}
- rate = HDSP_Frequency88_2KHz;
+ rate_bits = HDSP_Frequency88_2KHz;
break;
case 96000:
- if (current_rate < 48000) {
+ if (current_rate <= 48000) {
reject_if_open = 1;
}
- rate = HDSP_Frequency96KHz;
+ rate_bits = HDSP_Frequency96KHz;
break;
default:
spin_unlock_irq(&hdsp->lock);
@@ -701,21 +913,30 @@ static int hdsp_set_rate(hdsp_t *hdsp, int rate)
}
hdsp->control_register &= ~HDSP_FrequencyMask;
- hdsp->control_register |= rate;
+ hdsp->control_register |= rate_bits;
hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
if (rate > 48000) {
hdsp->channel_map = channel_map_ds;
} else {
- switch (hdsp->type) {
+ switch (hdsp->io_type) {
case Multiface:
hdsp->channel_map = channel_map_mf_ss;
break;
case Digiface:
hdsp->channel_map = channel_map_df_ss;
break;
+ default:
+ /* should never happen */
+ break;
}
}
+
+ hdsp->system_sample_rate = rate;
+
+ if (reject_if_open) {
+ hdsp_update_simple_mixer_controls (hdsp);
+ }
spin_unlock_irq(&hdsp->lock);
return 0;
@@ -734,11 +955,11 @@ static void hdsp_set_thru(hdsp_t *hdsp, int channel, int enable)
if (enable) {
for (i = 0; i < 26; i++) {
- hdsp_write_gain (hdsp, INPUT_TO_OUTPUT_KEY(i,i), UNITY_GAIN);
+ hdsp_write_gain (hdsp, hdsp_input_to_output_key(hdsp,i,i), UNITY_GAIN);
}
} else {
for (i = 0; i < 26; i++) {
- hdsp_write_gain (hdsp, INPUT_TO_OUTPUT_KEY(i,i), MINUS_INFINITY_GAIN);
+ hdsp_write_gain (hdsp, hdsp_input_to_output_key(hdsp,i,i), MINUS_INFINITY_GAIN);
}
}
@@ -752,9 +973,9 @@ static void hdsp_set_thru(hdsp_t *hdsp, int channel, int enable)
snd_assert(mapped_channel > -1, return);
if (enable) {
- hdsp_write_gain (hdsp, INPUT_TO_OUTPUT_KEY(mapped_channel,mapped_channel), UNITY_GAIN);
+ hdsp_write_gain (hdsp, hdsp_input_to_output_key(hdsp,mapped_channel,mapped_channel), UNITY_GAIN);
} else {
- hdsp_write_gain (hdsp, INPUT_TO_OUTPUT_KEY(mapped_channel,mapped_channel), MINUS_INFINITY_GAIN);
+ hdsp_write_gain (hdsp, hdsp_input_to_output_key(hdsp,mapped_channel,mapped_channel), MINUS_INFINITY_GAIN);
}
}
}
@@ -851,7 +1072,6 @@ static int snd_hdsp_midi_output_write (hdsp_midi_t *hmidi)
/* Output is not interrupt driven */
spin_lock_irqsave (&hmidi->lock, flags);
-
if (hmidi->output) {
if (!snd_rawmidi_transmit_empty (hmidi->output)) {
if ((n_pending = snd_hdsp_midi_output_possible (hmidi->hdsp, hmidi->id)) > 0) {
@@ -865,7 +1085,6 @@ static int snd_hdsp_midi_output_write (hdsp_midi_t *hmidi)
}
}
}
-
spin_unlock_irqrestore (&hmidi->lock, flags);
return 0;
}
@@ -878,7 +1097,6 @@ static int snd_hdsp_midi_input_read (hdsp_midi_t *hmidi)
int i;
spin_lock_irqsave (&hmidi->lock, flags);
-
if ((n_pending = snd_hdsp_midi_input_available (hmidi->hdsp, hmidi->id)) > 0) {
if (hmidi->input) {
if (n_pending > (int)sizeof (buf)) {
@@ -896,7 +1114,14 @@ static int snd_hdsp_midi_input_read (hdsp_midi_t *hmidi)
snd_hdsp_midi_read_byte (hmidi->hdsp, hmidi->id);
}
}
- }
+ }
+ hmidi->pending = 0;
+ if (hmidi->id) {
+ hmidi->hdsp->control_register |= HDSP_Midi1InterruptEnable;
+ } else {
+ hmidi->hdsp->control_register |= HDSP_Midi0InterruptEnable;
+ }
+ hdsp_write(hmidi->hdsp, HDSP_controlRegister, hmidi->hdsp->control_register);
spin_unlock_irqrestore (&hmidi->lock, flags);
return snd_hdsp_midi_output_write (hmidi);
}
@@ -1056,6 +1281,7 @@ static int __devinit snd_hdsp_create_midi (snd_card_t *card, hdsp_t *hdsp, int i
hdsp->midi[id].output = NULL;
hdsp->midi[id].hdsp = hdsp;
hdsp->midi[id].istimer = 0;
+ hdsp->midi[id].pending = 0;
spin_lock_init (&hdsp->midi[id].lock);
sprintf (buf, "%s MIDI %d", card->shortname, id+1);
@@ -1178,9 +1404,12 @@ static int snd_hdsp_control_spdif_mask_get(snd_kcontrol_t * kcontrol, snd_ctl_el
}
#define HDSP_SPDIF_IN(xname, xindex) \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = xname, .index = xindex, \
+{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
+ .name = xname, \
+ .index = xindex, \
.info = snd_hdsp_info_spdif_in, \
- .get = snd_hdsp_get_spdif_in, .put = snd_hdsp_put_spdif_in }
+ .get = snd_hdsp_get_spdif_in, \
+ .put = snd_hdsp_put_spdif_in }
static unsigned int hdsp_spdif_in(hdsp_t *hdsp)
{
@@ -1211,11 +1440,8 @@ static int snd_hdsp_info_spdif_in(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t
static int snd_hdsp_get_spdif_in(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- unsigned long flags;
- spin_lock_irqsave(&hdsp->lock, flags);
ucontrol->value.enumerated.item[0] = hdsp_spdif_in(hdsp);
- spin_unlock_irqrestore(&hdsp->lock, flags);
return 0;
}
@@ -1238,8 +1464,8 @@ static int snd_hdsp_put_spdif_in(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t
}
#define HDSP_SPDIF_OUT(xname, xindex) \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = xname, .index = xindex, \
- .info = snd_hdsp_info_spdif_out, \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, .name = xname, .index = xindex, \
+ .info = snd_hdsp_info_spdif_bits, \
.get = snd_hdsp_get_spdif_out, .put = snd_hdsp_put_spdif_out }
static int hdsp_spdif_out(hdsp_t *hdsp)
@@ -1258,7 +1484,7 @@ static int hdsp_set_spdif_output(hdsp_t *hdsp, int out)
return 0;
}
-static int snd_hdsp_info_spdif_out(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+static int snd_hdsp_info_spdif_bits(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
{
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
uinfo->count = 1;
@@ -1270,11 +1496,8 @@ static int snd_hdsp_info_spdif_out(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t
static int snd_hdsp_get_spdif_out(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- unsigned long flags;
- spin_lock_irqsave(&hdsp->lock, flags);
ucontrol->value.integer.value[0] = hdsp_spdif_out(hdsp);
- spin_unlock_irqrestore(&hdsp->lock, flags);
return 0;
}
@@ -1295,20 +1518,436 @@ static int snd_hdsp_put_spdif_out(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_
return change;
}
-#define HDSP_SYNC_PREF(xname, xindex) \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = xname, .index = xindex, \
- .info = snd_hdsp_info_sync_pref, \
- .get = snd_hdsp_get_sync_pref, .put = snd_hdsp_put_sync_pref }
+#define HDSP_SPDIF_PROFESSIONAL(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, .name = xname, .index = xindex, \
+ .info = snd_hdsp_info_spdif_bits, \
+ .get = snd_hdsp_get_spdif_professional, .put = snd_hdsp_put_spdif_professional }
-static int hdsp_sync_pref(hdsp_t *hdsp)
+static int hdsp_spdif_professional(hdsp_t *hdsp)
{
- /* Notice that this looks at the requested sync source,
- not the one actually in use.
- */
+ return (hdsp->control_register & HDSP_SPDIFProfessional) ? 1 : 0;
+}
+
+static int hdsp_set_spdif_professional(hdsp_t *hdsp, int val)
+{
+ if (val) {
+ hdsp->control_register |= HDSP_SPDIFProfessional;
+ } else {
+ hdsp->control_register &= ~HDSP_SPDIFProfessional;
+ }
+ hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
+ return 0;
+}
+
+static int snd_hdsp_get_spdif_professional(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+ ucontrol->value.integer.value[0] = hdsp_spdif_professional(hdsp);
+ return 0;
+}
+
+static int snd_hdsp_put_spdif_professional(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+ unsigned long flags;
+ int change;
+ unsigned int val;
+
+ if (!snd_hdsp_use_is_exclusive(hdsp))
+ return -EBUSY;
+ val = ucontrol->value.integer.value[0] & 1;
+ spin_lock_irqsave(&hdsp->lock, flags);
+ change = (int)val != hdsp_spdif_professional(hdsp);
+ hdsp_set_spdif_professional(hdsp, val);
+ spin_unlock_irqrestore(&hdsp->lock, flags);
+ return change;
+}
+
+#define HDSP_SPDIF_EMPHASIS(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, .name = xname, .index = xindex, \
+ .info = snd_hdsp_info_spdif_bits, \
+ .get = snd_hdsp_get_spdif_emphasis, .put = snd_hdsp_put_spdif_emphasis }
+
+static int hdsp_spdif_emphasis(hdsp_t *hdsp)
+{
+ return (hdsp->control_register & HDSP_SPDIFEmphasis) ? 1 : 0;
+}
+
+static int hdsp_set_spdif_emphasis(hdsp_t *hdsp, int val)
+{
+ if (val) {
+ hdsp->control_register |= HDSP_SPDIFEmphasis;
+ } else {
+ hdsp->control_register &= ~HDSP_SPDIFEmphasis;
+ }
+ hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
+ return 0;
+}
+
+static int snd_hdsp_get_spdif_emphasis(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ ucontrol->value.integer.value[0] = hdsp_spdif_emphasis(hdsp);
+ return 0;
+}
+
+static int snd_hdsp_put_spdif_emphasis(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+ unsigned long flags;
+ int change;
+ unsigned int val;
+
+ if (!snd_hdsp_use_is_exclusive(hdsp))
+ return -EBUSY;
+ val = ucontrol->value.integer.value[0] & 1;
+ spin_lock_irqsave(&hdsp->lock, flags);
+ change = (int)val != hdsp_spdif_emphasis(hdsp);
+ hdsp_set_spdif_emphasis(hdsp, val);
+ spin_unlock_irqrestore(&hdsp->lock, flags);
+ return change;
+}
+
+#define HDSP_SPDIF_NON_AUDIO(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, .name = xname, .index = xindex, \
+ .info = snd_hdsp_info_spdif_bits, \
+ .get = snd_hdsp_get_spdif_nonaudio, .put = snd_hdsp_put_spdif_nonaudio }
+
+static int hdsp_spdif_nonaudio(hdsp_t *hdsp)
+{
+ return (hdsp->control_register & HDSP_SPDIFNonAudio) ? 1 : 0;
+}
+
+static int hdsp_set_spdif_nonaudio(hdsp_t *hdsp, int val)
+{
+ if (val) {
+ hdsp->control_register |= HDSP_SPDIFNonAudio;
+ } else {
+ hdsp->control_register &= ~HDSP_SPDIFNonAudio;
+ }
+ hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
+ return 0;
+}
+
+static int snd_hdsp_get_spdif_nonaudio(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ ucontrol->value.integer.value[0] = hdsp_spdif_nonaudio(hdsp);
+ return 0;
+}
+
+static int snd_hdsp_put_spdif_nonaudio(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+ unsigned long flags;
+ int change;
+ unsigned int val;
+
+ if (!snd_hdsp_use_is_exclusive(hdsp))
+ return -EBUSY;
+ val = ucontrol->value.integer.value[0] & 1;
+ spin_lock_irqsave(&hdsp->lock, flags);
+ change = (int)val != hdsp_spdif_nonaudio(hdsp);
+ hdsp_set_spdif_nonaudio(hdsp, val);
+ spin_unlock_irqrestore(&hdsp->lock, flags);
+ return change;
+}
+
+#define HDSP_SPDIF_SAMPLE_RATE(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
+ .access = SNDRV_CTL_ELEM_ACCESS_READ, \
+ .info = snd_hdsp_info_spdif_sample_rate, \
+ .get = snd_hdsp_get_spdif_sample_rate \
+}
+
+static int snd_hdsp_info_spdif_sample_rate(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+ static char *texts[] = {"32000", "44100", "48000", "64000", "88200", "96000", "None"};
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+ uinfo->count = 1;
+ uinfo->value.enumerated.items = 7 ;
+ if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+ uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+ strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+ return 0;
+}
+
+static int snd_hdsp_get_spdif_sample_rate(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ switch (hdsp_spdif_sample_rate(hdsp)) {
+ case 32000:
+ ucontrol->value.enumerated.item[0] = 0;
+ break;
+ case 44100:
+ ucontrol->value.enumerated.item[0] = 1;
+ break;
+ case 48000:
+ ucontrol->value.enumerated.item[0] = 2;
+ break;
+ case 64000:
+ ucontrol->value.enumerated.item[0] = 3;
+ break;
+ case 88200:
+ ucontrol->value.enumerated.item[0] = 4;
+ break;
+ case 96000:
+ ucontrol->value.enumerated.item[0] = 5;
+ break;
+ default:
+ ucontrol->value.enumerated.item[0] = 6;
+ }
+ return 0;
+}
+
+#define HDSP_SYSTEM_SAMPLE_RATE(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
+ .access = SNDRV_CTL_ELEM_ACCESS_READ, \
+ .info = snd_hdsp_info_system_sample_rate, \
+ .get = snd_hdsp_get_system_sample_rate \
+}
+
+static int snd_hdsp_info_system_sample_rate(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
+ uinfo->count = 1;
+ return 0;
+}
+
+static int snd_hdsp_get_system_sample_rate(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ ucontrol->value.enumerated.item[0] = hdsp->system_sample_rate;
+ return 0;
+}
+
+#define HDSP_AUTOSYNC_SAMPLE_RATE(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
+ .name = xname, \
+ .index = xindex, \
+ .access = SNDRV_CTL_ELEM_ACCESS_READ, \
+ .info = snd_hdsp_info_autosync_sample_rate, \
+ .get = snd_hdsp_get_autosync_sample_rate \
+}
+
+static int snd_hdsp_info_autosync_sample_rate(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+ static char *texts[] = {"32000", "44100", "48000", "64000", "88200", "96000", "None"};
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+ uinfo->count = 1;
+ uinfo->value.enumerated.items = 7 ;
+ if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+ uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+ strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+ return 0;
+}
+
+static int snd_hdsp_get_autosync_sample_rate(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ switch (hdsp_external_sample_rate(hdsp)) {
+ case 32000:
+ ucontrol->value.enumerated.item[0] = 0;
+ break;
+ case 44100:
+ ucontrol->value.enumerated.item[0] = 1;
+ break;
+ case 48000:
+ ucontrol->value.enumerated.item[0] = 2;
+ break;
+ case 64000:
+ ucontrol->value.enumerated.item[0] = 3;
+ break;
+ case 88200:
+ ucontrol->value.enumerated.item[0] = 4;
+ break;
+ case 96000:
+ ucontrol->value.enumerated.item[0] = 5;
+ break;
+ default:
+ ucontrol->value.enumerated.item[0] = 6;
+ }
+ return 0;
+}
+
+#define HDSP_SYSTEM_CLOCK_MODE(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
+ .access = SNDRV_CTL_ELEM_ACCESS_READ, \
+ .info = snd_hdsp_info_system_clock_mode, \
+ .get = snd_hdsp_get_system_clock_mode \
+}
+
+static int hdsp_system_clock_mode(hdsp_t *hdsp)
+{
+ if (hdsp->control_register & HDSP_ClockModeMaster) {
+ return 0;
+ } else if (hdsp_external_sample_rate(hdsp) != hdsp->system_sample_rate) {
+ return 0;
+ }
+ return 1;
+}
+
+static int snd_hdsp_info_system_clock_mode(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+ static char *texts[] = {"Master", "Slave" };
+
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+ uinfo->count = 1;
+ uinfo->value.enumerated.items = 2;
+ if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+ uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+ strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+ return 0;
+}
+
+static int snd_hdsp_get_system_clock_mode(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ ucontrol->value.enumerated.item[0] = hdsp_system_clock_mode(hdsp);
+ return 0;
+}
+
+#define HDSP_CLOCK_SOURCE(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
+ .name = xname, \
+ .index = xindex, \
+ .info = snd_hdsp_info_clock_source, \
+ .get = snd_hdsp_get_clock_source, \
+ .put = snd_hdsp_put_clock_source \
+}
+
+static int hdsp_clock_source(hdsp_t *hdsp)
+{
if (hdsp->control_register & HDSP_ClockModeMaster) {
- return HDSP_SYNC_FROM_SELF;
+ switch (hdsp->system_sample_rate) {
+ case 32000:
+ return 1;
+ case 44100:
+ return 2;
+ case 48000:
+ return 3;
+ case 64000:
+ return 4;
+ case 88200:
+ return 5;
+ case 96000:
+ return 6;
+ default:
+ return 3;
+ }
+ } else {
+ return 0;
+ }
+}
+
+static int hdsp_set_clock_source(hdsp_t *hdsp, int mode)
+{
+ int rate;
+ switch (mode) {
+ case HDSP_CLOCK_SOURCE_AUTOSYNC:
+ if (hdsp_external_sample_rate(hdsp) != 0) {
+ hdsp->control_register &= ~HDSP_ClockModeMaster;
+ hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
+ return 0;
+ }
+ return -1;
+ case HDSP_CLOCK_SOURCE_INTERNAL_32KHZ:
+ rate = 32000;
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_44_1KHZ:
+ rate = 44100;
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_48KHZ:
+ rate = 48000;
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_64KHZ:
+ rate = 64000;
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_88_2KHZ:
+ rate = 88200;
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_96KHZ:
+ rate = 96000;
+ break;
+ default:
+ rate = 48000;
}
+ hdsp->control_register |= HDSP_ClockModeMaster;
+ hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
+ hdsp_set_rate(hdsp, rate, 1);
+ return 0;
+}
+
+static int snd_hdsp_info_clock_source(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+ static char *texts[] = {"AutoSync", "Internal 32.0 kHz", "Internal 44.1 kHz", "Internal 48.0 kHz", "Internal 64.0 kHz", "Internal 88.2 kHz", "Internal 96.0 kHz" };
+
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+ uinfo->count = 1;
+ uinfo->value.enumerated.items = 7;
+ if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+ uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+ strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+ return 0;
+}
+
+static int snd_hdsp_get_clock_source(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ ucontrol->value.enumerated.item[0] = hdsp_clock_source(hdsp);
+ return 0;
+}
+
+static int snd_hdsp_put_clock_source(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+ unsigned long flags;
+ int change;
+ int val;
+
+ if (!snd_hdsp_use_is_exclusive(hdsp))
+ return -EBUSY;
+ val = ucontrol->value.enumerated.item[0];
+ if (val < 0) val = 0;
+ if (val > 6) val = 6;
+ spin_lock_irqsave(&hdsp->lock, flags);
+ if (val != hdsp_clock_source(hdsp)) {
+ change = (hdsp_set_clock_source(hdsp, val) == 0) ? 1 : 0;
+ } else {
+ change = 0;
+ }
+ spin_unlock_irqrestore(&hdsp->lock, flags);
+ return change;
+}
+
+#define HDSP_PREF_SYNC_REF(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
+ .info = snd_hdsp_info_pref_sync_ref, \
+ .get = snd_hdsp_get_pref_sync_ref, \
+ .put = snd_hdsp_put_pref_sync_ref \
+}
+
+static int hdsp_pref_sync_ref(hdsp_t *hdsp)
+{
+ /* Notice that this looks at the requested sync source,
+ not the one actually in use.
+ */
switch (hdsp->control_register & HDSP_SyncRefMask) {
case HDSP_SyncRef_ADAT1:
@@ -1324,42 +1963,33 @@ static int hdsp_sync_pref(hdsp_t *hdsp)
case HDSP_SyncRef_ADAT_SYNC:
return HDSP_SYNC_FROM_ADAT_SYNC;
default:
- return HDSP_SYNC_FROM_SELF;
+ return HDSP_SYNC_FROM_WORD;
}
return 0;
}
-static int hdsp_set_sync_pref(hdsp_t *hdsp, int pref)
+static int hdsp_set_pref_sync_ref(hdsp_t *hdsp, int pref)
{
hdsp->control_register &= ~HDSP_SyncRefMask;
switch (pref) {
case HDSP_SYNC_FROM_ADAT1:
- hdsp->control_register &= ~HDSP_ClockModeMaster;
hdsp->control_register &= ~HDSP_SyncRefMask; /* clear SyncRef bits */
break;
case HDSP_SYNC_FROM_ADAT2:
- hdsp->control_register &= ~HDSP_ClockModeMaster;
hdsp->control_register |= HDSP_SyncRef_ADAT2;
break;
case HDSP_SYNC_FROM_ADAT3:
- hdsp->control_register &= ~HDSP_ClockModeMaster;
hdsp->control_register |= HDSP_SyncRef_ADAT3;
break;
case HDSP_SYNC_FROM_SPDIF:
- hdsp->control_register &= ~HDSP_ClockModeMaster;
hdsp->control_register |= HDSP_SyncRef_SPDIF;
break;
case HDSP_SYNC_FROM_WORD:
- hdsp->control_register &= ~HDSP_ClockModeMaster;
hdsp->control_register |= HDSP_SyncRef_WORD;
break;
case HDSP_SYNC_FROM_ADAT_SYNC:
- hdsp->control_register &= ~HDSP_ClockModeMaster;
hdsp->control_register |= HDSP_SyncRef_ADAT_SYNC;
break;
- case HDSP_SYNC_FROM_SELF:
- hdsp->control_register |= HDSP_ClockModeMaster;
- break;
default:
return -1;
}
@@ -1367,32 +1997,29 @@ static int hdsp_set_sync_pref(hdsp_t *hdsp, int pref)
return 0;
}
-static int snd_hdsp_info_sync_pref(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+static int snd_hdsp_info_pref_sync_ref(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
{
- static char *texts[] = {"Internal", "Word", "ADAT Sync", "IEC958", "ADAT1", "ADAT2", "ADAT3" };
+ static char *texts[] = {"Word", "ADAT Sync", "IEC958", "ADAT1", "ADAT2", "ADAT3" };
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
uinfo->count = 1;
- uinfo->value.enumerated.items = (hdsp->type == Digiface) ? 7 : 6;
+ uinfo->value.enumerated.items = (hdsp->io_type == Digiface) ? 6 : 4;
if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
return 0;
}
-static int snd_hdsp_get_sync_pref(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+static int snd_hdsp_get_pref_sync_ref(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- unsigned long flags;
- spin_lock_irqsave(&hdsp->lock, flags);
- ucontrol->value.enumerated.item[0] = hdsp_sync_pref(hdsp);
- spin_unlock_irqrestore(&hdsp->lock, flags);
+ ucontrol->value.enumerated.item[0] = hdsp_pref_sync_ref(hdsp);
return 0;
}
-static int snd_hdsp_put_sync_pref(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+static int snd_hdsp_put_pref_sync_ref(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
unsigned long flags;
@@ -1401,20 +2028,79 @@ static int snd_hdsp_put_sync_pref(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_
if (!snd_hdsp_use_is_exclusive(hdsp))
return -EBUSY;
- max = hdsp->ss_channels == (hdsp->type == Digiface) ? 7 : 6;
+ max = (hdsp->io_type == Digiface) ? 6 : 4;
val = ucontrol->value.enumerated.item[0] % max;
spin_lock_irqsave(&hdsp->lock, flags);
- change = (int)val != hdsp_sync_pref(hdsp);
- hdsp_set_sync_pref(hdsp, val);
+ change = (int)val != hdsp_pref_sync_ref(hdsp);
+ hdsp_set_pref_sync_ref(hdsp, val);
spin_unlock_irqrestore(&hdsp->lock, flags);
return change;
}
+#define HDSP_AUTOSYNC_REF(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
+ .access = SNDRV_CTL_ELEM_ACCESS_READ, \
+ .info = snd_hdsp_info_autosync_ref, \
+ .get = snd_hdsp_get_autosync_ref, \
+}
+
+static int hdsp_autosync_ref(hdsp_t *hdsp)
+{
+ /* This looks at the autosync selected sync reference */
+ unsigned int status2 = hdsp_read(hdsp, HDSP_status2Register);
+
+ switch (status2 & HDSP_SelSyncRefMask) {
+ case HDSP_SelSyncRef_WORD:
+ return HDSP_AUTOSYNC_FROM_WORD;
+ case HDSP_SelSyncRef_ADAT_SYNC:
+ return HDSP_AUTOSYNC_FROM_ADAT_SYNC;
+ case HDSP_SelSyncRef_SPDIF:
+ return HDSP_AUTOSYNC_FROM_SPDIF;
+ case HDSP_SelSyncRefMask:
+ return HDSP_AUTOSYNC_FROM_NONE;
+ case HDSP_SelSyncRef_ADAT1:
+ return HDSP_AUTOSYNC_FROM_ADAT1;
+ case HDSP_SelSyncRef_ADAT2:
+ return HDSP_AUTOSYNC_FROM_ADAT2;
+ case HDSP_SelSyncRef_ADAT3:
+ return HDSP_AUTOSYNC_FROM_ADAT3;
+ default:
+ return HDSP_AUTOSYNC_FROM_WORD;
+ }
+ return 0;
+}
+
+static int snd_hdsp_info_autosync_ref(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+{
+ static char *texts[] = {"Word", "ADAT Sync", "IEC958", "None", "ADAT1", "ADAT2", "ADAT3" };
+
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+ uinfo->count = 1;
+ uinfo->value.enumerated.items = 7;
+ if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+ uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+ strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
+ return 0;
+}
+
+static int snd_hdsp_get_autosync_ref(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+{
+ hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
+
+ ucontrol->value.enumerated.item[0] = hdsp_pref_sync_ref(hdsp);
+ return 0;
+}
+
#define HDSP_PASSTHRU(xname, xindex) \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = xname, .index = xindex, \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
.info = snd_hdsp_info_passthru, \
.put = snd_hdsp_put_passthru, \
- .get = snd_hdsp_get_passthru }
+ .get = snd_hdsp_get_passthru \
+}
static int snd_hdsp_info_passthru(snd_kcontrol_t * kcontrol, snd_ctl_elem_info_t * uinfo)
{
@@ -1457,9 +2143,13 @@ static int snd_hdsp_put_passthru(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t
}
#define HDSP_LINE_OUT(xname, xindex) \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = xname, .index = xindex, \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
.info = snd_hdsp_info_line_out, \
- .get = snd_hdsp_get_line_out, .put = snd_hdsp_put_line_out }
+ .get = snd_hdsp_get_line_out, \
+ .put = snd_hdsp_put_line_out \
+}
static int hdsp_line_out(hdsp_t *hdsp)
{
@@ -1515,9 +2205,15 @@ static int snd_hdsp_put_line_out(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t
}
#define HDSP_MIXER(xname, xindex) \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, .name = xname, .index = xindex, \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
+ .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | \
+ SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
.info = snd_hdsp_info_mixer, \
- .get = snd_hdsp_get_mixer, .put = snd_hdsp_put_mixer }
+ .get = snd_hdsp_get_mixer, \
+ .put = snd_hdsp_put_mixer \
+}
static int snd_hdsp_info_mixer(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
{
@@ -1541,13 +2237,13 @@ static int snd_hdsp_get_mixer(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *
destination = ucontrol->value.integer.value[1];
if (source > 25) {
- addr = PLAYBACK_TO_OUTPUT_KEY(source-26,destination);
+ addr = hdsp_playback_to_output_key(hdsp,source-26,destination);
} else {
- addr = INPUT_TO_OUTPUT_KEY(source, destination);
+ addr = hdsp_input_to_output_key(hdsp,source, destination);
}
spin_lock_irqsave(&hdsp->lock, flags);
- ucontrol->value.integer.value[0] = hdsp_read_gain (hdsp, addr);
+ ucontrol->value.integer.value[2] = hdsp_read_gain (hdsp, addr);
spin_unlock_irqrestore(&hdsp->lock, flags);
return 0;
}
@@ -1569,9 +2265,9 @@ static int snd_hdsp_put_mixer(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *
destination = ucontrol->value.integer.value[1];
if (source > 25) {
- addr = PLAYBACK_TO_OUTPUT_KEY(source-26, destination);
+ addr = hdsp_playback_to_output_key(hdsp,source-26, destination);
} else {
- addr = INPUT_TO_OUTPUT_KEY(source, destination);
+ addr = hdsp_input_to_output_key(hdsp,source, destination);
}
gain = ucontrol->value.integer.value[2];
@@ -1594,7 +2290,9 @@ static int snd_hdsp_put_mixer(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *
.access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE | \
SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
.info = snd_hdsp_info_playback_mixer, \
- .get = snd_hdsp_get_playback_mixer, .put = snd_hdsp_put_playback_mixer }
+ .get = snd_hdsp_get_playback_mixer, \
+ .put = snd_hdsp_put_playback_mixer \
+}
static int snd_hdsp_info_playback_mixer(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
{
@@ -1622,7 +2320,7 @@ static int snd_hdsp_get_playback_mixer(snd_kcontrol_t * kcontrol, snd_ctl_elem_v
return -EINVAL;
}
- addr = PLAYBACK_TO_OUTPUT_KEY(mapped_channel, mapped_channel);
+ addr = hdsp_playback_to_output_key(hdsp,mapped_channel, mapped_channel);
spin_lock_irqsave(&hdsp->lock, flags);
ucontrol->value.integer.value[0] = hdsp_read_gain (hdsp, addr);
@@ -1651,7 +2349,7 @@ static int snd_hdsp_put_playback_mixer(snd_kcontrol_t * kcontrol, snd_ctl_elem_v
return -EINVAL;
}
- addr = PLAYBACK_TO_OUTPUT_KEY(mapped_channel, mapped_channel);
+ addr = hdsp_playback_to_output_key(hdsp,mapped_channel, mapped_channel);
gain = ucontrol->value.integer.value[0];
@@ -1663,114 +2361,143 @@ static int snd_hdsp_put_playback_mixer(snd_kcontrol_t * kcontrol, snd_ctl_elem_v
return change;
}
-#define HDSP_PEAK_PLAYBACK \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
+#define HDSP_WC_SYNC_CHECK(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
.access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
- .info = snd_hdsp_info_peak_playback, \
- .get = snd_hdsp_get_peak_playback \
-}
-
-static int snd_hdsp_info_peak_playback(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
-{
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
- uinfo->count = 2;
- return 0;
+ .info = snd_hdsp_info_sync_check, \
+ .get = snd_hdsp_get_wc_sync_check \
}
-static int snd_hdsp_get_peak_playback(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+static int snd_hdsp_info_sync_check(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
{
- hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- unsigned int peakval = hdsp_read (hdsp, HDSP_playbackPeakLevel + (4 * (ucontrol->id.index-1)));
- ucontrol->value.integer.value[0] = peakval & 0xffffff00; /* peak */
- ucontrol->value.integer.value[1] = peakval & 0xf; /* overs */
+ static char *texts[] = {"No Lock", "Lock", "Sync" };
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
+ uinfo->count = 1;
+ uinfo->value.enumerated.items = 3;
+ if (uinfo->value.enumerated.item >= uinfo->value.enumerated.items)
+ uinfo->value.enumerated.item = uinfo->value.enumerated.items - 1;
+ strcpy(uinfo->value.enumerated.name, texts[uinfo->value.enumerated.item]);
return 0;
}
-#define HDSP_PEAK_INPUT \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
- .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
- .info = snd_hdsp_info_peak_input, \
- .get = snd_hdsp_get_peak_input \
-}
-
-static int snd_hdsp_info_peak_input(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+static int hdsp_wc_sync_check(hdsp_t *hdsp)
{
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
- uinfo->count = 2;
+ int status2 = hdsp_read(hdsp, HDSP_status2Register);
+ if (status2 & HDSP_wc_lock) {
+ if (status2 & HDSP_wc_sync) {
+ return 2;
+ } else {
+ return 1;
+ }
+ } else {
+ return 0;
+ }
return 0;
}
-static int snd_hdsp_get_peak_input(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+static int snd_hdsp_get_wc_sync_check(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- unsigned int peakval = hdsp_read (hdsp, HDSP_inputPeakLevel + (4 * (ucontrol->id.index-1)));
- ucontrol->value.integer.value[0] = peakval & 0xffffff00; /* peak */
- ucontrol->value.integer.value[1] = peakval & 0xf; /* overs */
+
+ ucontrol->value.enumerated.item[0] = hdsp_wc_sync_check(hdsp);
return 0;
}
-#define HDSP_PEAK_OUTPUT \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
+#define HDSP_SPDIF_SYNC_CHECK(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
.access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
- .info = snd_hdsp_info_peak_output, \
- .get = snd_hdsp_get_peak_output \
+ .info = snd_hdsp_info_sync_check, \
+ .get = snd_hdsp_get_spdif_sync_check \
}
-static int snd_hdsp_info_peak_output(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+static int hdsp_spdif_sync_check(hdsp_t *hdsp)
{
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
- uinfo->count = 2;
+ int status = hdsp_read(hdsp, HDSP_statusRegister);
+ if (status & HDSP_SPDIFErrorFlag) {
+ return 0;
+ } else {
+ if (status & HDSP_SPDIFSync) {
+ return 2;
+ } else {
+ return 1;
+ }
+ }
return 0;
}
-static int snd_hdsp_get_peak_output(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+static int snd_hdsp_get_spdif_sync_check(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- unsigned int peakval = hdsp_read (hdsp, HDSP_outputPeakLevel + (4 * (ucontrol->id.index-1)));
- ucontrol->value.integer.value[0] = peakval & 0xffffff00; /* peak */
- ucontrol->value.integer.value[1] = peakval & 0xf; /* overs */
+
+ ucontrol->value.enumerated.item[0] = hdsp_spdif_sync_check(hdsp);
return 0;
}
-#define HDSP_RMS_INPUT \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
+#define HDSP_ADATSYNC_SYNC_CHECK(xname, xindex) \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
+ .name = xname, \
+ .index = xindex, \
.access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
- .info = snd_hdsp_info_rms_input, \
- .get = snd_hdsp_get_rms_input \
+ .info = snd_hdsp_info_sync_check, \
+ .get = snd_hdsp_get_adatsync_sync_check \
}
-static int snd_hdsp_info_rms_input(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
+static int hdsp_adatsync_sync_check(hdsp_t *hdsp)
{
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER64;
- uinfo->count = 1;
- return 0;
-}
+ int status = hdsp_read(hdsp, HDSP_statusRegister);
+ if (status & HDSP_TimecodeLock) {
+ if (status & HDSP_TimecodeSync) {
+ return 2;
+ } else {
+ return 1;
+ }
+ } else {
+ return 0;
+ }
+}
-static int snd_hdsp_get_rms_input(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+static int snd_hdsp_get_adatsync_sync_check(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- ucontrol->value.integer64.value[0] = hdsp_read64 (hdsp, HDSP_inputRmsLevel + (8 * (ucontrol->id.index-1)));
+
+ ucontrol->value.enumerated.item[0] = hdsp_adatsync_sync_check(hdsp);
return 0;
}
-#define HDSP_RMS_PLAYBACK \
-{ .iface = SNDRV_CTL_ELEM_IFACE_PCM, \
+#define HDSP_ADAT_SYNC_CHECK \
+{ .iface = SNDRV_CTL_ELEM_IFACE_HWDEP, \
.access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, \
- .info = snd_hdsp_info_rms_playback, \
- .get = snd_hdsp_get_rms_playback \
+ .info = snd_hdsp_info_sync_check, \
+ .get = snd_hdsp_get_adat_sync_check \
}
-static int snd_hdsp_info_rms_playback(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
-{
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER64;
- uinfo->count = 1;
- return 0;
-}
+static int hdsp_adat_sync_check(hdsp_t *hdsp, int idx)
+{
+ int status = hdsp_read(hdsp, HDSP_statusRegister);
+
+ if (status & (HDSP_Lock0>>idx)) {
+ if (status & (HDSP_Sync0>>idx)) {
+ return 2;
+ } else {
+ return 1;
+ }
+ } else {
+ return 0;
+ }
+}
-static int snd_hdsp_get_rms_playback(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
+static int snd_hdsp_get_adat_sync_check(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
{
+ int offset;
hdsp_t *hdsp = _snd_kcontrol_chip(kcontrol);
- ucontrol->value.integer64.value[0] = hdsp_read64 (hdsp, HDSP_playbackRmsLevel + (8 * (ucontrol->id.index-1)));
+
+ offset = ucontrol->id.index - 1;
+ snd_assert(offset >= 0 || offset < ((hdsp->io_type == Digiface) ? 3 : 1), return -EINVAL);
+ ucontrol->value.enumerated.item[0] = hdsp_adat_sync_check(hdsp, offset);
return 0;
}
@@ -1797,8 +2524,8 @@ static snd_kcontrol_new_t snd_hdsp_controls[] = {
.info = snd_hdsp_control_spdif_mask_info,
.get = snd_hdsp_control_spdif_mask_get,
.private_value = IEC958_AES0_NONAUDIO |
- IEC958_AES0_PROFESSIONAL |
- IEC958_AES0_CON_EMPHASIS,
+ IEC958_AES0_PROFESSIONAL |
+ IEC958_AES0_CON_EMPHASIS,
},
{
.access = SNDRV_CTL_ELEM_ACCESS_READ,
@@ -1807,13 +2534,27 @@ static snd_kcontrol_new_t snd_hdsp_controls[] = {
.info = snd_hdsp_control_spdif_mask_info,
.get = snd_hdsp_control_spdif_mask_get,
.private_value = IEC958_AES0_NONAUDIO |
- IEC958_AES0_PROFESSIONAL |
- IEC958_AES0_PRO_EMPHASIS,
+ IEC958_AES0_PROFESSIONAL |
+ IEC958_AES0_PRO_EMPHASIS,
},
HDSP_MIXER("Mixer", 0),
HDSP_SPDIF_IN("IEC958 Input Connector", 0),
HDSP_SPDIF_OUT("IEC958 Output also on ADAT1", 0),
-HDSP_SYNC_PREF("Preferred Sync Source", 0),
+HDSP_SPDIF_PROFESSIONAL("IEC958 Professional Bit", 0),
+HDSP_SPDIF_EMPHASIS("IEC958 Emphasis Bit", 0),
+HDSP_SPDIF_NON_AUDIO("IEC958 Non-audio Bit", 0),
+/* 'Sample Clock Source' complies with the alsa control naming scheme */
+HDSP_CLOCK_SOURCE("Sample Clock Source", 0),
+HDSP_SYSTEM_CLOCK_MODE("System Clock Mode", 0),
+HDSP_PREF_SYNC_REF("Preferred Sync Reference", 0),
+HDSP_AUTOSYNC_REF("AutoSync Reference", 0),
+HDSP_SPDIF_SAMPLE_RATE("SPDIF Sample Rate", 0),
+HDSP_SYSTEM_SAMPLE_RATE("System Sample Rate", 0),
+/* 'External Rate' complies with the alsa control naming scheme */
+HDSP_AUTOSYNC_SAMPLE_RATE("External Rate", 0),
+HDSP_WC_SYNC_CHECK("Word Clock Lock Status", 0),
+HDSP_SPDIF_SYNC_CHECK("SPDIF Lock Status", 0),
+HDSP_ADATSYNC_SYNC_CHECK("ADAT Sync Lock Status", 0),
HDSP_PASSTHRU("Passthru", 0),
HDSP_LINE_OUT("Line Out", 0),
};
@@ -1821,11 +2562,29 @@ HDSP_LINE_OUT("Line Out", 0),
#define HDSP_CONTROLS (sizeof(snd_hdsp_controls)/sizeof(snd_kcontrol_new_t))
static snd_kcontrol_new_t snd_hdsp_playback_mixer = HDSP_PLAYBACK_MIXER;
-static snd_kcontrol_new_t snd_hdsp_input_peak = HDSP_PEAK_INPUT;
-static snd_kcontrol_new_t snd_hdsp_output_peak = HDSP_PEAK_OUTPUT;
-static snd_kcontrol_new_t snd_hdsp_playback_peak = HDSP_PEAK_PLAYBACK;
-static snd_kcontrol_new_t snd_hdsp_input_rms = HDSP_RMS_INPUT;
-static snd_kcontrol_new_t snd_hdsp_playback_rms = HDSP_RMS_PLAYBACK;
+static snd_kcontrol_new_t snd_hdsp_adat_sync_check = HDSP_ADAT_SYNC_CHECK;
+
+
+static int hdsp_update_simple_mixer_controls(hdsp_t *hdsp)
+{
+ int i;
+
+ for (i = hdsp->ds_channels; i < hdsp->ss_channels; ++i) {
+ if (hdsp->system_sample_rate > 48000) {
+ hdsp->playback_mixer_ctls[i]->vd[0].access = SNDRV_CTL_ELEM_ACCESS_INACTIVE |
+ SNDRV_CTL_ELEM_ACCESS_READ |
+ SNDRV_CTL_ELEM_ACCESS_VOLATILE;
+ } else {
+ hdsp->playback_mixer_ctls[i]->vd[0].access = SNDRV_CTL_ELEM_ACCESS_READWRITE |
+ SNDRV_CTL_ELEM_ACCESS_VOLATILE;
+ }
+ snd_ctl_notify(hdsp->card, SNDRV_CTL_EVENT_MASK_VALUE |
+ SNDRV_CTL_EVENT_MASK_INFO, &hdsp->playback_mixer_ctls[i]->id);
+ }
+
+ return 0;
+}
+
int snd_hdsp_create_controls(snd_card_t *card, hdsp_t *hdsp)
{
@@ -1840,49 +2599,40 @@ int snd_hdsp_create_controls(snd_card_t *card, hdsp_t *hdsp)
hdsp->spdif_ctl = kctl;
}
- if (hdsp->type == Digiface) {
+ snd_hdsp_playback_mixer.name = "Chn";
+ snd_hdsp_adat_sync_check.name = "ADAT Lock Status";
+
+ if (hdsp->io_type == Digiface) {
limit = DIGIFACE_SS_CHANNELS;
} else {
limit = MULTIFACE_SS_CHANNELS;
}
-
+
/* The index values are one greater than the channel ID so that alsamixer
will display them correctly. We want to use the index for fast lookup
of the relevant channel, but if we use it at all, most ALSA software
does the wrong thing with it ...
*/
- snd_hdsp_playback_mixer.name = "Chn";
- snd_hdsp_input_peak.name = "Input Peak";
- snd_hdsp_output_peak.name = "Output Peak";
- snd_hdsp_playback_peak.name = "Playback Peak";
- snd_hdsp_playback_rms.name = "Playback RMS";
- snd_hdsp_input_rms.name = "Input RMS";
-
for (idx = 0; idx < limit; ++idx) {
snd_hdsp_playback_mixer.index = idx+1;
if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_playback_mixer, hdsp)))) {
return err;
}
- snd_hdsp_input_peak.index = idx+1;
- if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_input_peak, hdsp)))) {
- return err;
- }
- snd_hdsp_output_peak.index = idx+1;
- if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_output_peak, hdsp)))) {
- return err;
- }
- snd_hdsp_playback_peak.index = idx+1;
- if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_playback_peak, hdsp)))) {
- return err;
- }
- snd_hdsp_playback_rms.index = idx+1;
- if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_playback_rms, hdsp)))) {
- return err;
- }
- snd_hdsp_input_rms.index = idx+1;
- if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_input_rms, hdsp)))) {
- return err;
+ hdsp->playback_mixer_ctls[idx] = kctl;
+ }
+
+ /* ADAT SyncCheck status */
+ snd_hdsp_adat_sync_check.index = 1;
+ if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_adat_sync_check, hdsp)))) {
+ return err;
+ }
+ if (hdsp->io_type == Digiface) {
+ for (idx = 1; idx < 3; ++idx) {
+ snd_hdsp_adat_sync_check.index = idx+1;
+ if ((err = snd_ctl_add (card, kctl = snd_ctl_new1(&snd_hdsp_adat_sync_check, hdsp)))) {
+ return err;
+ }
}
}
@@ -1899,13 +2649,29 @@ snd_hdsp_proc_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer)
hdsp_t *hdsp = (hdsp_t *) entry->private_data;
unsigned int status;
unsigned int status2;
- char *requested_sync_ref;
+ char *pref_sync_ref;
+ char *autosync_ref;
+ char *system_clock_mode;
+ char *clock_source;
int x;
if (hdsp_check_for_iobox (hdsp)) {
+ snd_iprintf(buffer, "No I/O box connected.\nPlease connect one and upload firmware.\n");
return;
}
+ if (hdsp_check_for_firmware(hdsp)) {
+ if (hdsp->state & HDSP_FirmwareCached) {
+ if (snd_hdsp_load_firmware_from_cache(hdsp) != 0) {
+ snd_iprintf(buffer, "Firmware loading from cache failed, please upload manually.\n");
+ return;
+ }
+ } else {
+ snd_iprintf(buffer, "No firmware loaded nor cached, please upload firmware.\n");
+ return;
+ }
+ }
+
status = hdsp_read(hdsp, HDSP_statusRegister);
status2 = hdsp_read(hdsp, HDSP_status2Register);
@@ -1928,69 +2694,108 @@ snd_hdsp_proc_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer)
x = 1 << (6 + hdsp_decode_latency(hdsp->control_register & HDSP_LatencyMask));
- snd_iprintf(buffer, "Latency: %d samples (2 periods of %lu bytes)\n", x, (unsigned long) hdsp->period_bytes);
+ snd_iprintf(buffer, "Buffer Size (Latency): %d samples (2 periods of %lu bytes)\n", x, (unsigned long) hdsp->period_bytes);
snd_iprintf(buffer, "Hardware pointer (frames): %ld\n", hdsp_hw_pointer(hdsp));
snd_iprintf(buffer, "Passthru: %s\n", hdsp->passthru ? "yes" : "no");
snd_iprintf(buffer, "Line out: %s\n", (hdsp->control_register & HDSP_LineOut) ? "on" : "off");
snd_iprintf(buffer, "Firmware version: %d\n", (status2&HDSP_version0)|(status2&HDSP_version1)<<1|(status2&HDSP_version2)<<2);
- switch (hdsp_sync_pref (hdsp)) {
+ snd_iprintf(buffer, "\n");
+
+
+ switch (hdsp_clock_source(hdsp)) {
+ case HDSP_CLOCK_SOURCE_AUTOSYNC:
+ clock_source = "AutoSync";
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_32KHZ:
+ clock_source = "Internal 32 kHz";
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_44_1KHZ:
+ clock_source = "Internal 44.1 kHz";
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_48KHZ:
+ clock_source = "Internal 48 kHz";
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_64KHZ:
+ clock_source = "Internal 64 kHz";
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_88_2KHZ:
+ clock_source = "Internal 88.2 kHz";
+ break;
+ case HDSP_CLOCK_SOURCE_INTERNAL_96KHZ:
+ clock_source = "Internal 96 kHz";
+ break;
+ default:
+ clock_source = "Error";
+ }
+ snd_iprintf (buffer, "Sample Clock Source: %s\n", clock_source);
+
+ if (hdsp_system_clock_mode(hdsp)) {
+ system_clock_mode = "Slave";
+ } else {
+ system_clock_mode = "Master";
+ }
+
+ switch (hdsp_pref_sync_ref (hdsp)) {
case HDSP_SYNC_FROM_WORD:
- requested_sync_ref = "Word";
+ pref_sync_ref = "Word Clock";
break;
case HDSP_SYNC_FROM_ADAT_SYNC:
- requested_sync_ref = "ADAT Sync";
+ pref_sync_ref = "ADAT Sync";
break;
case HDSP_SYNC_FROM_SPDIF:
- requested_sync_ref = "SPDIF";
+ pref_sync_ref = "SPDIF";
break;
case HDSP_SYNC_FROM_ADAT1:
- requested_sync_ref = "ADAT1";
+ pref_sync_ref = "ADAT1";
break;
case HDSP_SYNC_FROM_ADAT2:
- requested_sync_ref = "ADAT2";
+ pref_sync_ref = "ADAT2";
break;
case HDSP_SYNC_FROM_ADAT3:
- requested_sync_ref = "ADAT3";
+ pref_sync_ref = "ADAT3";
break;
- case HDSP_SYNC_FROM_SELF:
default:
- requested_sync_ref = "Master";
+ pref_sync_ref = "Word Clock";
break;
}
-
- if ((hdsp->control_register & HDSP_ClockModeMaster)) {
- snd_iprintf (buffer, "Sync reference: %s/Master (chosen)\n", requested_sync_ref);
- } else if (hdsp_system_sample_rate(hdsp) == 0) {
- snd_iprintf (buffer, "Sync reference: %s/Master (forced)\n", requested_sync_ref);
- } else {
- switch (status2 & HDSP_SelSyncRefMask) {
- case HDSP_SelSyncRef_ADAT1:
- snd_iprintf (buffer, "Sync reference: %s/ADAT1\n", requested_sync_ref);
- break;
- case HDSP_SelSyncRef_ADAT2:
- snd_iprintf (buffer, "Sync reference: %s/ADAT2\n", requested_sync_ref);
- break;
- case HDSP_SelSyncRef_ADAT3:
- snd_iprintf (buffer, "Sync reference: %s/ADAT3\n", requested_sync_ref);
- break;
- case HDSP_SelSyncRef_SPDIF:
- snd_iprintf (buffer, "Sync reference: %s/SPDIF\n", requested_sync_ref);
- break;
- case HDSP_SelSyncRef_WORD:
- snd_iprintf (buffer, "Sync reference: %s/WORD\n", requested_sync_ref);
- break;
- case HDSP_SelSyncRef_ADAT_SYNC:
- snd_iprintf (buffer, "Sync reference: %s/ADAT Sync\n", requested_sync_ref);
- break;
- default:
- snd_iprintf (buffer, "Sync reference: %s/Master (fallback)\n", requested_sync_ref);
- break;
- }
+ snd_iprintf (buffer, "Preferred Sync Reference: %s\n", pref_sync_ref);
+
+ switch (hdsp_autosync_ref (hdsp)) {
+ case HDSP_AUTOSYNC_FROM_WORD:
+ autosync_ref = "Word Clock";
+ break;
+ case HDSP_AUTOSYNC_FROM_ADAT_SYNC:
+ autosync_ref = "ADAT Sync";
+ break;
+ case HDSP_AUTOSYNC_FROM_SPDIF:
+ autosync_ref = "SPDIF";
+ break;
+ case HDSP_AUTOSYNC_FROM_NONE:
+ autosync_ref = "None";
+ break;
+ case HDSP_AUTOSYNC_FROM_ADAT1:
+ autosync_ref = "ADAT1";
+ break;
+ case HDSP_AUTOSYNC_FROM_ADAT2:
+ autosync_ref = "ADAT2";
+ break;
+ case HDSP_AUTOSYNC_FROM_ADAT3:
+ autosync_ref = "ADAT3";
+ break;
+ default:
+ autosync_ref = "---";
+ break;
}
- snd_iprintf (buffer, "Sample rate: %d\n", hdsp_system_sample_rate(hdsp));
+ snd_iprintf (buffer, "AutoSync Reference: %s\n", autosync_ref);
+
+ snd_iprintf (buffer, "AutoSync Frequency: %d\n", hdsp_external_sample_rate(hdsp));
+
+ snd_iprintf (buffer, "System Clock Mode: %s\n", system_clock_mode);
+ snd_iprintf (buffer, "System Clock Frequency: %d\n", hdsp->system_sample_rate);
+
snd_iprintf(buffer, "\n");
switch ((hdsp->control_register & HDSP_SPDIFInputMask) >> 14) {
@@ -2031,9 +2836,6 @@ snd_hdsp_proc_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer)
} else {
snd_iprintf(buffer, "IEC958 NonAudio: off\n");
}
-
- snd_iprintf(buffer, "\n");
-
if ((x = hdsp_spdif_sample_rate (hdsp)) != 0) {
snd_iprintf (buffer, "IEC958 sample rate: %d\n", x);
} else {
@@ -2050,20 +2852,44 @@ snd_hdsp_proc_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer)
snd_iprintf(buffer, "ADAT1: No Lock\n");
}
- x = status & HDSP_Sync1;
- if (status & HDSP_Lock1) {
- snd_iprintf(buffer, "ADAT2: %s\n", x ? "Sync" : "Lock");
- } else {
- snd_iprintf(buffer, "ADAT2: No Lock\n");
- }
-
- if (hdsp->type == Digiface) {
+ switch (hdsp->io_type) {
+ case Digiface:
+ x = status & HDSP_Sync1;
+ if (status & HDSP_Lock1) {
+ snd_iprintf(buffer, "ADAT2: %s\n", x ? "Sync" : "Lock");
+ } else {
+ snd_iprintf(buffer, "ADAT2: No Lock\n");
+ }
x = status & HDSP_Sync2;
if (status & HDSP_Lock2) {
snd_iprintf(buffer, "ADAT3: %s\n", x ? "Sync" : "Lock");
} else {
snd_iprintf(buffer, "ADAT3: No Lock\n");
}
+ default:
+ /* relax */
+ break;
+ }
+
+ x = status & HDSP_SPDIFSync;
+ if (status & HDSP_SPDIFErrorFlag) {
+ snd_iprintf (buffer, "SPDIF: No Lock\n");
+ } else {
+ snd_iprintf (buffer, "SPDIF: %s\n", x ? "Sync" : "Lock");
+ }
+
+ x = status2 & HDSP_wc_sync;
+ if (status2 & HDSP_wc_lock) {
+ snd_iprintf (buffer, "Word Clock: %s\n", x ? "Sync" : "Lock");
+ } else {
+ snd_iprintf (buffer, "Word Clock: No Lock\n");
+ }
+
+ x = status & HDSP_TimecodeSync;
+ if (status & HDSP_TimecodeLock) {
+ snd_iprintf(buffer, "ADAT Sync: %s\n", x ? "Sync" : "Lock");
+ } else {
+ snd_iprintf(buffer, "ADAT Sync: No Lock\n");
}
snd_iprintf(buffer, "\n");
@@ -2166,7 +2992,7 @@ static int __devinit snd_hdsp_initialize_memory(hdsp_t *hdsp)
return 0;
}
-static void snd_hdsp_set_defaults(hdsp_t *hdsp)
+static int snd_hdsp_set_defaults(hdsp_t *hdsp)
{
unsigned int i;
@@ -2199,10 +3025,13 @@ static void snd_hdsp_set_defaults(hdsp_t *hdsp)
hdsp->mixer_matrix[i] = MINUS_INFINITY_GAIN;
}
- for (i = 0; i < 2048; i++)
- hdsp_write_gain (hdsp, i, MINUS_INFINITY_GAIN);
-
- if (line_outs_monitor[hdsp->dev]) {
+ for (i = 0; i < (hdsp_is_9652(hdsp) ? 1352 : HDSP_MATRIX_MIXER_SIZE); i++) {
+ if (hdsp_write_gain (hdsp, i, MINUS_INFINITY_GAIN)) {
+ return -EIO;
+ }
+ }
+
+ if (!hdsp_is_9652(hdsp) && line_outs_monitor[hdsp->dev]) {
snd_printk ("sending all inputs and playback streams to line outs.\n");
@@ -2212,11 +3041,15 @@ static void snd_hdsp_set_defaults(hdsp_t *hdsp)
for (i = 0; i < HDSP_MAX_CHANNELS; i++) {
if (i & 1) {
- hdsp_write_gain (hdsp, INPUT_TO_OUTPUT_KEY (i, 26), UNITY_GAIN);
- hdsp_write_gain (hdsp, PLAYBACK_TO_OUTPUT_KEY (i, 26), UNITY_GAIN);
+ if (hdsp_write_gain (hdsp, hdsp_input_to_output_key (hdsp, i, 26), UNITY_GAIN) ||
+ hdsp_write_gain (hdsp, hdsp_playback_to_output_key (hdsp, i, 26), UNITY_GAIN)) {
+ return -EIO;
+ }
} else {
- hdsp_write_gain (hdsp, INPUT_TO_OUTPUT_KEY (i, 27), UNITY_GAIN);
- hdsp_write_gain (hdsp, PLAYBACK_TO_OUTPUT_KEY (i, 27), UNITY_GAIN);
+ if (hdsp_write_gain (hdsp, hdsp_input_to_output_key (hdsp, i, 27), UNITY_GAIN) ||
+ hdsp_write_gain (hdsp, hdsp_playback_to_output_key (hdsp, i, 27), UNITY_GAIN)) {
+ return -EIO;
+ }
}
}
}
@@ -2226,9 +3059,23 @@ static void snd_hdsp_set_defaults(hdsp_t *hdsp)
/* set a default rate so that the channel map is set up.
*/
- hdsp_set_rate(hdsp, 48000);
+ hdsp_set_rate(hdsp, 48000, 1);
+
+ return 0;
}
+void hdsp_midi_tasklet(unsigned long arg)
+{
+ hdsp_t *hdsp = (hdsp_t *)arg;
+
+ if (hdsp->midi[0].pending) {
+ snd_hdsp_midi_input_read (&hdsp->midi[0]);
+ }
+ if (hdsp->midi[1].pending) {
+ snd_hdsp_midi_input_read (&hdsp->midi[1]);
+ }
+}
+
void snd_hdsp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
hdsp_t *hdsp = (hdsp_t *) dev_id;
@@ -2238,7 +3085,8 @@ void snd_hdsp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
int midi1;
unsigned int midi0status;
unsigned int midi1status;
-
+ int schedule = 0;
+
status = hdsp_read(hdsp, HDSP_statusRegister);
audio = status & HDSP_audioIRQPending;
@@ -2253,7 +3101,7 @@ void snd_hdsp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
midi0status = hdsp_read (hdsp, HDSP_midiStatusIn0) & 0xff;
midi1status = hdsp_read (hdsp, HDSP_midiStatusIn1) & 0xff;
-
+
if (audio) {
if (hdsp->capture_substream) {
snd_pcm_period_elapsed(hdsp->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);
@@ -2263,15 +3111,23 @@ void snd_hdsp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
snd_pcm_period_elapsed(hdsp->pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream);
}
}
-
- /* note: snd_hdsp_midi_input_read() calls output_write() because
- output is not interrupt-driven ...
- */
-
- if (midi0status)
- snd_hdsp_midi_input_read (&hdsp->midi[0]);
- if (midi1status)
- snd_hdsp_midi_input_read (&hdsp->midi[1]);
+
+ if (midi0 && midi0status) {
+ /* we disable interrupts for this input until processing is done */
+ hdsp->control_register &= ~HDSP_Midi0InterruptEnable;
+ hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
+ hdsp->midi[0].pending = 1;
+ schedule = 1;
+ }
+ if (midi1 && midi1status) {
+ /* we disable interrupts for this input until processing is done */
+ hdsp->control_register &= ~HDSP_Midi1InterruptEnable;
+ hdsp_write(hdsp, HDSP_controlRegister, hdsp->control_register);
+ hdsp->midi[1].pending = 1;
+ schedule = 1;
+ }
+ if (schedule)
+ tasklet_hi_schedule(&hdsp->midi_tasklet);
}
static snd_pcm_uframes_t snd_hdsp_hw_pointer(snd_pcm_substream_t *substream)
@@ -2310,8 +3166,7 @@ static int snd_hdsp_playback_copy(snd_pcm_substream_t *substream, int channel,
channel_buf = hdsp_channel_buffer_location (hdsp, substream->pstr->stream, channel);
snd_assert(channel_buf != NULL, return -EIO);
- if (copy_from_user(channel_buf + pos * 4, src, count * 4))
- return -EFAULT;
+ copy_from_user(channel_buf + pos * 4, src, count * 4);
return count;
}
@@ -2325,8 +3180,7 @@ static int snd_hdsp_capture_copy(snd_pcm_substream_t *substream, int channel,
channel_buf = hdsp_channel_buffer_location (hdsp, substream->pstr->stream, channel);
snd_assert(channel_buf != NULL, return -EIO);
- if (copy_to_user(dst, channel_buf + pos * 4, count * 4))
- return -EFAULT;
+ copy_to_user(dst, channel_buf + pos * 4, count * 4);
return count;
}
@@ -2381,6 +3235,17 @@ static int snd_hdsp_hw_params(snd_pcm_substream_t *substream,
return -EIO;
}
+ if (hdsp_check_for_firmware(hdsp)) {
+ if (hdsp->state & HDSP_FirmwareCached) {
+ if (snd_hdsp_load_firmware_from_cache(hdsp) != 0) {
+ snd_printk("Firmware loading from cache failed, please upload manually.\n");
+ }
+ } else {
+ snd_printk("No firmware loaded nor cached, please upload firmware.\n");
+ }
+ return -EIO;
+ }
+
spin_lock_irq(&hdsp->lock);
if (substream->pstr->stream == SNDRV_PCM_STREAM_PLAYBACK) {
@@ -2400,7 +3265,7 @@ static int snd_hdsp_hw_params(snd_pcm_substream_t *substream,
that matter are the same.
*/
- if ((int)params_rate(params) != hdsp_system_sample_rate(hdsp)) {
+ if (params_rate(params) != hdsp->system_sample_rate) {
spin_unlock_irq(&hdsp->lock);
_snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_RATE);
return -EBUSY;
@@ -2424,7 +3289,7 @@ static int snd_hdsp_hw_params(snd_pcm_substream_t *substream,
/* how to make sure that the rate matches an externally-set one ?
*/
- if ((err = hdsp_set_rate(hdsp, params_rate(params))) < 0) {
+ if ((err = hdsp_set_rate(hdsp, params_rate(params), 0)) < 0) {
_snd_pcm_hw_param_setempty(params, SNDRV_PCM_HW_PARAM_RATE);
return err;
}
@@ -2485,6 +3350,17 @@ static int snd_hdsp_trigger(snd_pcm_substream_t *substream, int cmd)
return -EIO;
}
+ if (hdsp_check_for_firmware(hdsp)) {
+ if (hdsp->state & HDSP_FirmwareCached) {
+ if (snd_hdsp_load_firmware_from_cache(hdsp) != 0) {
+ snd_printk("Firmware loading from cache failed, please upload manually.\n");
+ }
+ } else {
+ snd_printk("No firmware loaded nor cached, please upload firmware.\n");
+ }
+ return -EIO;
+ }
+
spin_lock(&hdsp->lock);
running = hdsp->running;
switch (cmd) {
@@ -2551,6 +3427,17 @@ static int snd_hdsp_prepare(snd_pcm_substream_t *substream)
return -EIO;
}
+ if (hdsp_check_for_firmware(hdsp)) {
+ if (hdsp->state & HDSP_FirmwareCached) {
+ if (snd_hdsp_load_firmware_from_cache(hdsp) != 0) {
+ snd_printk("Firmware loading from cache failed, please upload manually.\n");
+ }
+ } else {
+ snd_printk("No firmware loaded nor cached, please upload firmware.\n");
+ }
+ return -EIO;
+ }
+
spin_lock_irq(&hdsp->lock);
if (!hdsp->running)
hdsp_reset_hw_pointer(hdsp);
@@ -2577,11 +3464,11 @@ static snd_pcm_hardware_t snd_hdsp_playback_subinfo =
.channels_min = 14,
.channels_max = HDSP_MAX_CHANNELS,
.buffer_bytes_max = HDSP_CHANNEL_BUFFER_BYTES * HDSP_MAX_CHANNELS,
- .period_bytes_min = (64 * 4) *10,
+ .period_bytes_min = (64 * 4) * 10,
.period_bytes_max = (8192 * 4) * HDSP_MAX_CHANNELS,
.periods_min = 2,
.periods_max = 2,
- .fifo_size = 0,
+ .fifo_size = 0
};
static snd_pcm_hardware_t snd_hdsp_capture_subinfo =
@@ -2606,7 +3493,7 @@ static snd_pcm_hardware_t snd_hdsp_capture_subinfo =
.period_bytes_max = (8192 * 4) * HDSP_MAX_CHANNELS,
.periods_min = 2,
.periods_max = 2,
- .fifo_size = 0,
+ .fifo_size = 0
};
static unsigned int period_sizes[] = { 64, 128, 256, 512, 1024, 2048, 4096, 8192 };
@@ -2638,7 +3525,7 @@ static int snd_hdsp_hw_rule_channels_rate(snd_pcm_hw_params_t *params,
snd_interval_t t = {
.min = hdsp->ds_channels,
.max = hdsp->ds_channels,
- .integer = 1,
+ integer: 1,
};
return snd_interval_refine(c, &t);
} else if (r->max < 64000) {
@@ -2662,7 +3549,7 @@ static int snd_hdsp_hw_rule_rate_channels(snd_pcm_hw_params_t *params,
snd_interval_t t = {
.min = 32000,
.max = 48000,
- .integer = 1,
+ integer: 1,
};
return snd_interval_refine(r, &t);
} else if (c->max <= hdsp->ds_channels) {
@@ -2686,6 +3573,17 @@ static int snd_hdsp_playback_open(snd_pcm_substream_t *substream)
return -EIO;
}
+ if (hdsp_check_for_firmware(hdsp)) {
+ if (hdsp->state & HDSP_FirmwareCached) {
+ if (snd_hdsp_load_firmware_from_cache(hdsp) != 0) {
+ snd_printk("Firmware loading from cache failed, please upload manually.\n");
+ }
+ } else {
+ snd_printk("No firmware loaded nor cached, please upload firmware.\n");
+ }
+ return -EIO;
+ }
+
spin_lock_irqsave(&hdsp->lock, flags);
snd_pcm_set_sync(substream);
@@ -2717,7 +3615,7 @@ static int snd_hdsp_playback_open(snd_pcm_substream_t *substream)
SNDRV_PCM_HW_PARAM_CHANNELS, -1);
hdsp->creg_spdif_stream = hdsp->creg_spdif;
- hdsp->spdif_ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ hdsp->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(hdsp->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &hdsp->spdif_ctl->id);
return 0;
@@ -2735,7 +3633,7 @@ static int snd_hdsp_playback_release(snd_pcm_substream_t *substream)
spin_unlock_irqrestore(&hdsp->lock, flags);
- hdsp->spdif_ctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ hdsp->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(hdsp->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &hdsp->spdif_ctl->id);
return 0;
@@ -2752,6 +3650,17 @@ static int snd_hdsp_capture_open(snd_pcm_substream_t *substream)
return -EIO;
}
+ if (hdsp_check_for_firmware(hdsp)) {
+ if (hdsp->state & HDSP_FirmwareCached) {
+ if (snd_hdsp_load_firmware_from_cache(hdsp) != 0) {
+ snd_printk("Firmware loading from cache failed, please upload manually.\n");
+ }
+ } else {
+ snd_printk("No firmware loaded nor cached, please upload firmware.\n");
+ }
+ return -EIO;
+ }
+
spin_lock_irqsave(&hdsp->lock, flags);
snd_pcm_set_sync(substream);
@@ -2798,6 +3707,136 @@ static int snd_hdsp_capture_release(snd_pcm_substream_t *substream)
return 0;
}
+static int snd_hdsp_hwdep_dummy_op(snd_hwdep_t *hw, struct file *file)
+{
+ /* we have nothing to initialize but the call is required */
+ return 0;
+}
+
+
+static int snd_hdsp_hwdep_ioctl(snd_hwdep_t *hw, struct file *file, unsigned int cmd, unsigned long arg)
+{
+ hdsp_t *hdsp = (hdsp_t *)hw->private_data;
+ hdsp_peak_rms_t *peak_rms;
+ hdsp_firmware_t *firmware;
+ hdsp_mixer_t *mixer;
+ hdsp_config_info_t info;
+ hdsp_version_t hdsp_version;
+ int i;
+ int err;
+ unsigned long flags;
+
+ switch (cmd) {
+ case SNDRV_HDSP_IOCTL_GET_PEAK_RMS:
+ if (!(hdsp->state & HDSP_FirmwareLoaded)) {
+ snd_printk("firmware needs to be uploaded to the card.\n");
+ return -EINVAL;
+ }
+ peak_rms = (hdsp_peak_rms_t *)arg;
+ if (copy_to_user_fromio((void *)peak_rms->playback_peaks, hdsp->iobase+HDSP_playbackPeakLevel, 26*4) != 0) {
+ return -EFAULT;
+ }
+ if (copy_to_user_fromio((void *)peak_rms->input_peaks, hdsp->iobase+HDSP_inputPeakLevel, 26*4) != 0) {
+ return -EFAULT;
+ }
+ if (copy_to_user_fromio((void *)peak_rms->output_peaks, hdsp->iobase+HDSP_outputPeakLevel, 28*4) != 0) {
+ return -EFAULT;
+ }
+ if (copy_to_user_fromio((void *)peak_rms->playback_rms, hdsp->iobase+HDSP_playbackRmsLevel, 26*8) != 0) {
+ return -EFAULT;
+ }
+ if (copy_to_user_fromio((void *)peak_rms->input_rms, hdsp->iobase+HDSP_inputRmsLevel, 26*8) != 0) {
+ return -EFAULT;
+ }
+ break;
+ case SNDRV_HDSP_IOCTL_GET_CONFIG_INFO:
+ if (!(hdsp->state & HDSP_FirmwareLoaded)) {
+ snd_printk("Firmware needs to be uploaded to the card.\n");
+ return -EINVAL;
+ }
+ spin_lock_irqsave(&hdsp->lock, flags);
+ info.pref_sync_ref = (unsigned char)hdsp_pref_sync_ref(hdsp);
+ info.wordclock_sync_check = (unsigned char)hdsp_wc_sync_check(hdsp);
+ info.adatsync_sync_check = (unsigned char)hdsp_adatsync_sync_check(hdsp);
+ info.spdif_sync_check = (unsigned char)hdsp_spdif_sync_check(hdsp);
+ for (i = 0; i < ((hdsp->io_type != Multiface) ? 3 : 1); ++i) {
+ info.adat_sync_check[i] = (unsigned char)hdsp_adat_sync_check(hdsp, i);
+ }
+ info.spdif_in = (unsigned char)hdsp_spdif_in(hdsp);
+ info.spdif_out = (unsigned char)hdsp_spdif_out(hdsp);
+ info.spdif_professional = (unsigned char)hdsp_spdif_professional(hdsp);
+ info.spdif_emphasis = (unsigned char)hdsp_spdif_emphasis(hdsp);
+ info.spdif_nonaudio = (unsigned char)hdsp_spdif_nonaudio(hdsp);
+ info.spdif_sample_rate = hdsp_spdif_sample_rate(hdsp);
+ info.system_sample_rate = hdsp->system_sample_rate;
+ info.autosync_sample_rate = hdsp_external_sample_rate(hdsp);
+ info.system_clock_mode = (unsigned char)hdsp_system_clock_mode(hdsp);
+ info.clock_source = (unsigned char)hdsp_clock_source(hdsp);
+ info.autosync_ref = (unsigned char)hdsp_autosync_ref(hdsp);
+ info.line_out = (unsigned char)hdsp_line_out(hdsp);
+ info.passthru = (unsigned char)hdsp->passthru;
+ spin_unlock_irqrestore(&hdsp->lock, flags);
+ if (copy_to_user((void *)arg, &info, sizeof(info)))
+ return -EFAULT;
+ break;
+ case SNDRV_HDSP_IOCTL_GET_VERSION:
+ if (hdsp_is_9652(hdsp)) return -EINVAL;
+ if (hdsp->io_type == Undefined) {
+ if ((err = hdsp_get_iobox_version(hdsp)) < 0) {
+ return err;
+ }
+ }
+ hdsp_version.io_type = hdsp->io_type;
+ hdsp_version.firmware_rev = hdsp->firmware_rev;
+ if ((err = copy_to_user((void *)arg, &hdsp_version, sizeof(hdsp_version)))) {
+ return -EFAULT;
+ }
+ break;
+ case SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE:
+ if (hdsp_is_9652(hdsp)) return -EINVAL;
+ /* SNDRV_HDSP_IOCTL_GET_VERSION must have been called */
+ if (hdsp->io_type == Undefined) return -EINVAL;
+
+ snd_printk("initializing firmware upload\n");
+ firmware = (hdsp_firmware_t *)arg;
+
+ if (hdsp_check_for_iobox (hdsp)) {
+ return -EIO;
+ }
+
+ if (copy_from_user(hdsp->firmware_cache, firmware->firmware_data, sizeof(unsigned long)*24413) != 0) {
+ return -EFAULT;
+ }
+
+ hdsp->state |= HDSP_FirmwareCached;
+
+ if ((err = snd_hdsp_load_firmware_from_cache(hdsp)) < 0) {
+ return err;
+ }
+
+
+ if (!(hdsp->state & HDSP_InitializationComplete)) {
+ snd_hdsp_initialize_channels(hdsp);
+
+ snd_hdsp_initialize_midi_flush(hdsp);
+
+ if ((err = snd_hdsp_create_alsa_devices(hdsp->card, hdsp)) < 0) {
+ snd_printk("error creating alsa devices\n");
+ return err;
+ }
+ }
+ break;
+ case SNDRV_HDSP_IOCTL_GET_MIXER:
+ mixer = (hdsp_mixer_t *)arg;
+ if (copy_to_user(mixer->matrix, hdsp->mixer_matrix, sizeof(unsigned short)*HDSP_MATRIX_MIXER_SIZE))
+ return -EFAULT;
+ break;
+ default:
+ return -EINVAL;
+ }
+ return 0;
+}
+
static snd_pcm_ops_t snd_hdsp_playback_ops = {
.open = snd_hdsp_playback_open,
.close = snd_hdsp_playback_release,
@@ -2821,6 +3860,26 @@ static snd_pcm_ops_t snd_hdsp_capture_ops = {
.copy = snd_hdsp_capture_copy,
};
+static int __devinit snd_hdsp_create_hwdep(snd_card_t *card,
+ hdsp_t *hdsp)
+{
+ snd_hwdep_t *hw;
+ int err;
+
+ if ((err = snd_hwdep_new(card, "HDSP hwdep", 0, &hw)) < 0)
+ return err;
+
+ hdsp->hwdep = hw;
+ hw->private_data = hdsp;
+ strcpy(hw->name, "HDSP hwdep interface");
+
+ hw->ops.open = snd_hdsp_hwdep_dummy_op;
+ hw->ops.ioctl = snd_hdsp_hwdep_ioctl;
+ hw->ops.release = snd_hdsp_hwdep_dummy_op;
+
+ return 0;
+}
+
static int __devinit snd_hdsp_create_pcm(snd_card_t *card,
hdsp_t *hdsp)
{
@@ -2842,114 +3901,93 @@ static int __devinit snd_hdsp_create_pcm(snd_card_t *card,
return 0;
}
-static int __devinit snd_hdsp_initialize_firmware (hdsp_t *hdsp)
+static inline int snd_hdsp_initialize_input_enable (hdsp_t *hdsp)
{
int i;
- u32 *firmware_ptr;
-
- if (hdsp_check_for_iobox (hdsp)) {
- return -EIO;
- }
-
+
if (hdsp_fifo_wait (hdsp, 0, 100)) {
return -EIO;
}
- /* enable all channels */
-
for (i = 0; i < HDSP_MAX_CHANNELS; ++i) {
hdsp_write (hdsp, HDSP_inputEnable + (4 * i), 1);
hdsp_write (hdsp, HDSP_outputEnable + (4 * i), 1);
}
+
+ return 0;
+}
- if (force_firmware[hdsp->dev] || (hdsp_read (hdsp, HDSP_statusRegister) & HDSP_DllError) != 0) {
-
- snd_printk ("loading firmware\n");
-
- hdsp_write (hdsp, HDSP_jtagReg, HDSP_PROGRAM);
- hdsp_write (hdsp, HDSP_fifoData, 0);
- if (hdsp_fifo_wait (hdsp, 0, HDSP_SHORT_WAIT) < 0) {
- snd_printk ("timeout waiting for firmware setup\n");
- return -EIO;
- }
-
- hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_LOAD);
- hdsp_write (hdsp, HDSP_fifoData, 0);
-
- if (hdsp_fifo_wait (hdsp, 0, HDSP_SHORT_WAIT)) {
- hdsp->type = Multiface;
- hdsp_write (hdsp, HDSP_jtagReg, HDSP_VERSION_BIT);
- hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_LOAD);
- hdsp_fifo_wait (hdsp, 0, HDSP_SHORT_WAIT);
- } else {
- hdsp->type = Digiface;
- }
-
- hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_PROGRAM);
- hdsp_write (hdsp, HDSP_fifoData, 0);
-
- if (hdsp_fifo_wait (hdsp, 0, HDSP_LONG_WAIT)) {
- snd_printk ("timeout waiting for download preparation\n");
- return -EIO;
- }
-
- hdsp_write (hdsp, HDSP_jtagReg, HDSP_S_LOAD);
-
- if (hdsp->type == Digiface) {
- firmware_ptr = (u32 *) digiface_firmware;
- } else {
- firmware_ptr = (u32 *) multiface_firmware;
- }
-
- for (i = 0; i < 24413; ++i) {
- hdsp_write(hdsp, HDSP_fifoData, firmware_ptr[i]);
- if (hdsp_fifo_wait (hdsp, 127, HDSP_LONG_WAIT)) {
- snd_printk ("timeout during firmware loading\n");
- return -EIO;
- }
- }
-
- if (hdsp_fifo_wait (hdsp, 0, HDSP_LONG_WAIT)) {
- snd_printk ("timeout at end of firmware loading\n");
- return -EIO;
- }
-
- hdsp_write (hdsp, HDSP_jtagReg, 0);
- snd_printk ("finished firmware loading\n");
- mdelay(3000);
-
- } else {
-
- /* firmware already loaded, but we need to know what type
- of I/O box is connected.
- */
-
- if (hdsp_read(hdsp, HDSP_status2Register) & HDSP_version1) {
- hdsp->type = Multiface;
- } else {
- hdsp->type = Digiface;
- }
- }
-
- if (hdsp->type == Digiface) {
- snd_printk ("I/O Box is a Digiface\n");
- hdsp->card_name = "RME Hammerfall DSP (Digiface)";
+static inline void snd_hdsp_initialize_channels(hdsp_t *hdsp)
+{
+ if (hdsp->io_type == Digiface) {
+ hdsp->card_name = "RME Hammerfall DSP + Digiface";
hdsp->ss_channels = DIGIFACE_SS_CHANNELS;
hdsp->ds_channels = DIGIFACE_DS_CHANNELS;
} else {
- snd_printk ("I/O Box is a Multiface\n");
- hdsp->card_name = "RME Hammerfall DSP (Multiface)";
+ hdsp->card_name = "RME Hammerfall DSP + Multiface";
hdsp->ss_channels = MULTIFACE_SS_CHANNELS;
hdsp->ds_channels = MULTIFACE_DS_CHANNELS;
}
-
+}
+
+static inline void snd_hdsp_initialize_midi_flush (hdsp_t *hdsp)
+{
snd_hdsp_flush_midi_input (hdsp, 0);
snd_hdsp_flush_midi_input (hdsp, 1);
#ifdef SNDRV_BIG_ENDIAN
hdsp_write(hdsp, HDSP_jtagReg, HDSP_BIGENDIAN_MODE);
#endif
+}
+
+static int __devinit snd_hdsp_create_alsa_devices(snd_card_t *card, hdsp_t *hdsp)
+{
+ int err;
+
+ if ((err = snd_hdsp_create_pcm(card, hdsp)) < 0) {
+ return err;
+ }
+
+ if ((err = snd_hdsp_create_midi(card, hdsp, 0)) < 0) {
+ return err;
+ }
+
+ if ((err = snd_hdsp_create_midi(card, hdsp, 1)) < 0) {
+ return err;
+ }
+
+ if ((err = snd_hdsp_create_controls(card, hdsp)) < 0) {
+ return err;
+ }
+
+ snd_hdsp_proc_init(hdsp);
+
+ hdsp->last_spdif_sample_rate = -1;
+ hdsp->system_sample_rate = -1;
+ hdsp->last_external_sample_rate = -1;
+ hdsp->last_internal_sample_rate = -1;
+ hdsp->playback_pid = -1;
+ hdsp->capture_pid = -1;
+ hdsp->capture_substream = NULL;
+ hdsp->playback_substream = NULL;
+ if ((err = snd_hdsp_set_defaults(hdsp)) < 0) {
+ return err;
+ }
+
+ hdsp_update_simple_mixer_controls(hdsp);
+
+ if (!(hdsp->state & HDSP_InitializationComplete)) {
+ sprintf(card->longname, "%s at 0x%lx, irq %d", hdsp->card_name,
+ hdsp->port, hdsp->irq);
+
+ if ((err = snd_card_register(card)) < 0) {
+ snd_printk("error registering card\n");
+ return err;
+ }
+ hdsp->state |= HDSP_InitializationComplete;
+ }
+
return 0;
}
@@ -2959,9 +3997,10 @@ static int __devinit snd_hdsp_create(snd_card_t *card,
{
struct pci_dev *pci = hdsp->pci;
int err;
- unsigned short rev;
+ int i;
hdsp->irq = -1;
+ hdsp->state = 0;
hdsp->midi[0].rmidi = 0;
hdsp->midi[1].rmidi = 0;
hdsp->midi[0].input = 0;
@@ -2972,23 +4011,30 @@ static int __devinit snd_hdsp_create(snd_card_t *card,
spin_lock_init(&hdsp->midi[1].lock);
hdsp->iobase = 0;
hdsp->res_port = 0;
+ hdsp->io_type = Undefined;
+ for (i = 0; i < HDSP_MAX_CHANNELS; ++i)
+ hdsp->playback_mixer_ctls[i] = 0;
hdsp->card = card;
spin_lock_init(&hdsp->lock);
- pci_read_config_word(hdsp->pci, PCI_CLASS_REVISION, &rev);
+ tasklet_init(&hdsp->midi_tasklet, hdsp_midi_tasklet, (unsigned long)hdsp);
+
+ pci_read_config_word(hdsp->pci, PCI_CLASS_REVISION, &hdsp->firmware_rev);
strcpy(card->driver, "H-DSP");
strcpy(card->mixername, "Xilinx FPGA");
- switch (rev & 0xff) {
+ switch (hdsp->firmware_rev & 0xff) {
case 0xa:
case 0xb:
- case 0x64:
- /* hdsp_initialize_firmware() will reset this */
hdsp->card_name = "RME Hammerfall DSP";
break;
-
+ case 0x64:
+ case 0x65:
+ case 0x68:
+ hdsp->card_name = "RME HDSP 9652";
+ break;
default:
return -ENODEV;
}
@@ -3021,39 +4067,72 @@ static int __devinit snd_hdsp_create(snd_card_t *card,
if ((err = snd_hdsp_initialize_memory(hdsp)) < 0) {
return err;
}
+
+ if (hdsp_is_9652(hdsp)) {
+
+ if ((err = snd_hdsp_initialize_input_enable(hdsp)) != 0) {
+ return err;
+ }
- if ((err = snd_hdsp_initialize_firmware(hdsp)) < 0) {
- return err;
- }
+ hdsp->io_type = Digiface;
+
+ hdsp->ss_channels = DIGIFACE_SS_CHANNELS;
+ hdsp->ds_channels = DIGIFACE_DS_CHANNELS;
+
+ snd_hdsp_initialize_midi_flush(hdsp);
+
+ if ((err = snd_hdsp_create_hwdep(card, hdsp)) < 0) {
+ return err;
+ }
- if ((err = snd_hdsp_create_pcm(card, hdsp)) < 0) {
- return err;
- }
+ } else {
+
+ if (hdsp_check_for_iobox (hdsp)) {
+ /* no iobox connected, we defer initialization */
+ snd_printk("card initialization pending : waiting for firmware\n");
+ if ((err = snd_hdsp_create_hwdep(card, hdsp)) < 0) {
+ return err;
+ }
+ return 0;
+ }
- if ((err = snd_hdsp_create_midi(card, hdsp, 0)) < 0) {
- return err;
- }
+ if ((err = snd_hdsp_initialize_input_enable(hdsp)) != 0) {
+ return err;
+ }
+
+ if ((hdsp_read (hdsp, HDSP_statusRegister) & HDSP_DllError) != 0) {
+ snd_printk("card initialization pending : waiting for firmware\n");
+ if ((err = snd_hdsp_create_hwdep(card, hdsp)) < 0) {
+ return err;
+ }
+ return 0;
+ }
+
+ snd_printk("Firmware already loaded, initializing card.\n");
- if ((err = snd_hdsp_create_midi(card, hdsp, 1)) < 0) {
- return err;
+ if (hdsp_read(hdsp, HDSP_status2Register) & HDSP_version1) {
+ hdsp->io_type = Multiface;
+ } else {
+ hdsp->io_type = Digiface;
+ }
+
+ if ((err = snd_hdsp_create_hwdep(card, hdsp)) < 0) {
+ return err;
+ }
+
+ snd_hdsp_initialize_channels(hdsp);
+
+ snd_hdsp_initialize_midi_flush(hdsp);
+
}
-
- if ((err = snd_hdsp_create_controls(card, hdsp)) < 0) {
+
+ hdsp->state |= HDSP_FirmwareLoaded;
+
+ if ((err = snd_hdsp_create_alsa_devices(card, hdsp)) < 0) {
return err;
}
-
- snd_hdsp_proc_init(hdsp);
-
- hdsp->last_spdif_sample_rate = -1;
- hdsp->last_adat_sample_rate = -1;
- hdsp->playback_pid = -1;
- hdsp->capture_pid = -1;
- hdsp->capture_substream = NULL;
- hdsp->playback_substream = NULL;
-
- snd_hdsp_set_defaults(hdsp);
-
- return 0;
+
+ return 0;
}
static int snd_hdsp_free(hdsp_t *hdsp)
@@ -3136,10 +4215,10 @@ static void __devexit snd_hdsp_remove(struct pci_dev *pci)
}
static struct pci_driver driver = {
- .name = "RME Hammerfall DSP",
+ .name = "RME Hammerfall DSP",
.id_table = snd_hdsp_ids,
- .probe = snd_hdsp_probe,
- .remove = __devexit_p(snd_hdsp_remove),
+ .probe = snd_hdsp_probe,
+ .remove = __devexit_p(snd_hdsp_remove),
};
static int __init alsa_card_hdsp_init(void)
diff --git a/sound/pci/rme9652/multiface_firmware.dat b/sound/pci/rme9652/multiface_firmware.dat
deleted file mode 100644
index e5ad82f6e6f3..000000000000
--- a/sound/pci/rme9652/multiface_firmware.dat
+++ /dev/null
@@ -1,4072 +0,0 @@
-/* stored in little-endian */
-static u32 multiface_firmware[24413] __devinitdata = {
-0xffffffff, 0x66aa9955, 0x8001000c, 0xe0000000, 0x8006800c, 0xb0000000,
-0x8004800c, 0xb4fc0100, 0x8003000c, 0x00000000, 0x8001000c, 0x90000000,
-0x8004000c, 0x00000000, 0x8001000c, 0x80000000, 0x0002000c, 0x581a000a,
-0x00044800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800000,
-0x00000120, 0x00000000, 0x00044800, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x04800000, 0x00000120, 0x00000000, 0x00024001, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000,
-0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000100, 0x00000000, 0x00004004, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000900, 0x00000000, 0x0000c004, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000320, 0x00000000,
-0x00004801, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000120, 0x00000000, 0x038048fa, 0x38000e00, 0x8014e001, 0x012e0053,
-0x15c00538, 0x9e006f80, 0xe0027800, 0x00078001, 0x0070009e, 0x6f0001c0,
-0x70009e00, 0xf811c000, 0x00000123, 0x00000000, 0x023fa003, 0x0bfe08ff,
-0x0fe003b0, 0xfc403723, 0xc00f3008, 0x00ff0034, 0x0f3003fc, 0xbf003e80,
-0xf003cc00, 0x003ec00f, 0x03fc20ff, 0x0fc407b0, 0x00000e00, 0x00000000,
-0x00370801, 0x9b74021d, 0x87440510, 0x2c4099a1, 0x40091400, 0x801d0804,
-0x01108074, 0x1d000448, 0xd0004400, 0x20064001, 0x0074001d, 0x07400910,
-0x00000c20, 0x00000000, 0x0033a011, 0x0834260d, 0x83440091, 0x34004d29,
-0x40041011, 0x000d2000, 0x00108034, 0x05080042, 0xd1002400, 0x00034000,
-0x0014000d, 0x47400800, 0x00000e80, 0x00000000, 0x0035a803, 0x0174001d,
-0x37400591, 0x0420d900, 0x440d1001, 0xc81d0004, 0x80170074, 0x1d310450,
-0xd0006400, 0x08074001, 0x1874001d, 0x0f400900, 0x00000620, 0x00000000,
-0x0037a802, 0x127400df, 0x474011b0, 0x748b1f02, 0xc0013062, 0x011f0484,
-0x1132307c, 0x5f00c6c0, 0xf00c6c22, 0x00c7c031, 0x0c7c031f, 0x0b4011a0,
-0x00000e20, 0x00000000, 0x003d8007, 0x02f8043f, 0x2fc09370, 0xfc80bf00,
-0xc00ff006, 0x11fe013f, 0x0fe003f4, 0xff003fc0, 0xf00f5500, 0x20fec83f,
-0x87fc03ff, 0x1fc02df4, 0x00000600, 0x00000000, 0x00750802, 0x805c021f,
-0x170029f0, 0x4c005f08, 0xc00d300b, 0x00df2037, 0x6df0034c, 0xdf0837c0,
-0x008b7c02, 0x00b7c0ad, 0x0b7c04df, 0x0ac00df1, 0x00000420, 0x00000000,
-0x02b4a013, 0x1144001d, 0x7740a9d0, 0x4500dd00, 0x447db083, 0x13dd0077,
-0x4dd02f44, 0xd9113740, 0x50477405, 0x0137400d, 0x037403dd, 0x4d404d90,
-0x00000200, 0x00000000, 0x0032a007, 0x115490cd, 0x43000890, 0x0400c900,
-0x431d1080, 0x210d1143, 0x20d08c45, 0x1d0c8242, 0x10903413, 0x0cc34320,
-0xc8742b0d, 0x1c4320d0, 0x00000a00, 0x00000000, 0x00788004, 0x2584010d,
-0x5a605ed0, 0x8401ed08, 0x409a9007, 0x09ed057b, 0x9ed01794, 0xa9027a40,
-0x5007b401, 0x007b401e, 0x57b401ed, 0x11401e90, 0x00000200, 0x00000000,
-0x02301012, 0x001c10cd, 0x03e208f0, 0x0c0ecf04, 0xc0043800, 0xe0df8173,
-0x2cf0670c, 0x8f00b3c0, 0x33233c00, 0x0033c00c, 0x033c00cf, 0x48cc0cf0,
-0x00000040, 0x00000000, 0x003db802, 0x01f600ff, 0x3fe84fe0, 0xfc08ef00,
-0xc00ff183, 0x80ff023f, 0x0ff113ec, 0xb80037c2, 0xf083fc00, 0x003fc80f,
-0x93fc00ff, 0x09c01ff0, 0x00000660, 0x00000000, 0x0037a015, 0x827c01df,
-0x14c005b0, 0x5c20df01, 0xc401b000, 0x00130004, 0x0132044c, 0x53280448,
-0xb0807c00, 0x0004c001, 0x004c0013, 0x57c00130, 0x00000e00, 0x00000000,
-0x08398012, 0x02b4002d, 0x38400600, 0xb400ed04, 0xce0e1903, 0x40eb503e,
-0x0eb103ac, 0xeb003ac4, 0xb103b440, 0x103ac40e, 0x03ac40eb, 0x4b000eb1,
-0x00000620, 0x00000000, 0x00790003, 0x02b4a0ed, 0x5a403e11, 0x9601ed00,
-0x401c9004, 0x01c50478, 0x1c910704, 0xe1087040, 0xd0479601, 0x1070401c,
-0x470461c5, 0x0f021e18, 0x00000400, 0x00000000, 0x00372812, 0x833600cd,
-0xb2403d10, 0x7440cd00, 0x484f1003, 0x80e0007a, 0x6f902ba4, 0xe980ba08,
-0x5013b64d, 0x013a400e, 0x13a400ed, 0x4b401e99, 0x00000c20, 0x00000000,
-0x0015a817, 0x15fce07f, 0x96d807b3, 0xdc007f03, 0xc045b029, 0x98542a14,
-0x45b02d4c, 0x5301d480, 0xd20d7c00, 0x0094c455, 0x014c4b57, 0x5fc11730,
-0x00000620, 0x00000000, 0x10070012, 0x407c201f, 0x85c061f0, 0x7c001f00,
-0xc803f280, 0x403f008f, 0x23f008fc, 0x3f248fc0, 0xb008fc02, 0x128fcc03,
-0x08fc8a3b, 0x4bc003f0, 0x00000c00, 0x00000000, 0x00a70810, 0x020c0083,
-0x74c05978, 0x4c819f01, 0xd0093082, 0x01934164, 0x19f08e4d, 0x934065c0,
-0x34164d09, 0x4064d129, 0x26510593, 0x43c01935, 0x00000c20, 0x00000000,
-0x50262001, 0x06440090, 0xa4504918, 0x45028d00, 0xe229b002, 0xa2970926,
-0x09d00e44, 0x91002446, 0x101e6c40, 0x00e44039, 0x1244e091, 0x06403910,
-0x00000800, 0x00000000, 0x0024a018, 0x524480d0, 0xa4600d50, 0x44089d00,
-0x00891002, 0x18e11028, 0x8bd082c4, 0xe10a2844, 0x10838410, 0x0238400e,
-0x028420e1, 0x63418b10, 0x00000200, 0x00000000, 0x02302810, 0x0a040281,
-0x20408810, 0x04008d82, 0x402e9422, 0x42a920a8, 0x2ad00b84, 0xa100a840,
-0x100aa402, 0x00a8402e, 0x0a8402a1, 0x43400a10, 0x00000080, 0x00000000,
-0x0886a01d, 0x00042011, 0x84c16050, 0x0c005f05, 0x40013008, 0x00130004,
-0x05f0004c, 0x130015c0, 0x30004c00, 0x0014c001, 0x005c0053, 0x77c00330,
-0x00000ac0, 0x00000000, 0x0127a819, 0x0afc02ff, 0x27c04bf0, 0xfe00bf01,
-0xc029f092, 0x829700a7, 0x29f00a7c, 0xdf00a790, 0xf08b5c02, 0x00a7c02d,
-0x0a7c829f, 0x66c029f0, 0x00000e60, 0x00000000, 0x00afa018, 0x32fc0cbf,
-0x27c00bb0, 0xfc00bf02, 0xc009b002, 0x049f0024, 0x49341a7c, 0x9f01a7e4,
-0x059a7c0c, 0x41a4d069, 0x0a7c8493, 0x63c009d0, 0x00000e00, 0x00000000,
-0x2007081c, 0x3874ae0d, 0x07490130, 0x74001d02, 0x44011000, 0xa01d2204,
-0x45120074, 0x1d2297e4, 0x10987404, 0x00844821, 0x08748e51, 0x734027d2,
-0x00000c20, 0x00000000, 0x0023a010, 0x0236808d, 0x23408810, 0x34008d00,
-0x41ca9002, 0x1cad0d28, 0x2a180a94, 0xad002b41, 0x111ab682, 0x11a8406a,
-0x0ab430a5, 0x43402ad1, 0x00000e80, 0x00000000, 0x8025a818, 0x0274009d,
-0x27400998, 0x74209d00, 0x4aa81292, 0x90fd242c, 0x0f101bb4, 0xfd0a2d42,
-0x1002f620, 0x01ac400b, 0x82f400b5, 0x63408bd9, 0x00000620, 0x00000000,
-0x0027a805, 0x127c009f, 0x27c24938, 0x74009f11, 0xc029b802, 0x009f2024,
-0x1932067c, 0x9f002740, 0x31027c00, 0x00244409, 0x627c0897, 0x17c039f0,
-0x00000e20, 0x00000000, 0x00258014, 0x0e7c039f, 0x77c00970, 0x7c099f21,
-0xd809f002, 0x089b0267, 0x49f0466c, 0x9f0827c0, 0xf00a7802, 0x0427c039,
-0x027c019b, 0x53c019f2, 0x00000600, 0x00000000, 0x00050814, 0x48140617,
-0x84c02170, 0x7c001f02, 0xc8233000, 0x0432238f, 0x03e028fc, 0x33100fc0,
-0xf000fc10, 0x000fc723, 0x00cc123f, 0x53c023f0, 0x00000420, 0x00000000,
-0x005c8014, 0x09c4077d, 0x14401770, 0xf6207d08, 0xc0051061, 0x025500d5,
-0x15d0015c, 0x530095c5, 0xd0817420, 0x00974005, 0x8144805d, 0x534005d0,
-0x00000200, 0x00000000, 0x0072a014, 0x033401cd, 0xb0689c50, 0x7600cd21,
-0x410e100f, 0x03e1003b, 0x4ed003b4, 0xe94c7a40, 0x9033f400, 0x08ff401f,
-0x638500ed, 0x53421ed0, 0x00000a00, 0x00000000, 0x04088005, 0x04a4012d,
-0x38401450, 0xf400ed80, 0x400e1803, 0x02e51079, 0x0ed003b4, 0xe100f940,
-0x9003b440, 0x00bb402e, 0x838411ed, 0x17402ed0, 0x00000200, 0x00000000,
-0x00781015, 0x01b421e7, 0x78501e70, 0xb401ef02, 0xc81e1007, 0x01e38073,
-0x1ef007bc, 0xeb187fe4, 0xf007bc01, 0x187bc61e, 0x878c01ff, 0x57ce1ef0,
-0x00000040, 0x00000000, 0x0035b810, 0x015c201f, 0xa7c80df1, 0x3400df01,
-0xc201e503, 0x001f0807, 0x01f0805c, 0x5f0807c0, 0xf0007c20, 0x0007c201,
-0x807c001f, 0x43c001f1, 0x00000660, 0x00000000, 0x807fb000, 0x27fc09f3,
-0x5cc05ff1, 0xcc01f308, 0xc41f3804, 0x29f3007c, 0x1f3007cc, 0xf5007cc0,
-0x30a7cc01, 0x027c089f, 0x27c08df3, 0x00c09f30, 0x00000e00, 0x00000000,
-0x02098015, 0x02b40ea1, 0xd840f6d1, 0xac00e120, 0xc0d61004, 0x01eb02ba,
-0x8eb2232c, 0xeb223ac5, 0xb003ac2d, 0x223ac48e, 0x63ac8ceb, 0x56c08eb1,
-0x00000620, 0x00000000, 0x00290000, 0x41b480e1, 0x106008d1, 0xc400f900,
-0x404c1010, 0x0cc9003a, 0x0c104304, 0xc1003240, 0x124304ac, 0x1030408c,
-0x83061cc1, 0x00411c13, 0x00000400, 0x00000000, 0x00232804, 0x07345b91,
-0xc05808d0, 0x2402c903, 0x40d8120c, 0x020d2802, 0x10904c24, 0x49004242,
-0x98082413, 0x12022010, 0x00264209, 0x12400098, 0x00000c20, 0x00000000,
-0x00358815, 0x067c0113, 0x74c019f0, 0x4c00cb40, 0xc83d10a0, 0x01d90876,
-0x1d310f4c, 0x9308b682, 0x300b4c10, 0x00f4c02d, 0x0f4c03d3, 0x54c02d30,
-0x00000620, 0x00000000, 0x00870001, 0x007c001f, 0x37c0a1f0, 0x7c06d700,
-0xc00df228, 0x0cdb03b7, 0x2df0037c, 0x9f1337c1, 0xf0037c02, 0x0137c4ed,
-0x437c80df, 0x07c04df0, 0x00000c00, 0x00000000, 0x081f0880, 0x00dc003f,
-0x5fc057f0, 0xec253300, 0xc05bf004, 0x05ff0135, 0x9ff00bfc, 0xaf017fc0,
-0xf0c7cc01, 0x013f009f, 0x23fc14ff, 0x03c08ff0, 0x00000c22, 0x00000000,
-0x24962081, 0x05440b1d, 0x474025b0, 0x55841100, 0x4405d148, 0x001d0047,
-0x31f10074, 0x1d110748, 0xd1005401, 0x04874821, 0x1874521d, 0x074001d2,
-0x00000802, 0x00000000, 0x0034a001, 0x1274005d, 0x034009d0, 0x4400d182,
-0x400dd023, 0x20150007, 0x01d80074, 0x1d000740, 0xd0184428, 0x20074821,
-0x0074001d, 0x074009d1, 0x00000200, 0x00000000, 0x00002010, 0x820400cd,
-0x034040d0, 0x0420d190, 0x4444d013, 0x240d1003, 0x00d80834, 0x0d000340,
-0xd0001400, 0x00024000, 0x0034000d, 0x434408c0, 0x00000080, 0x00000000,
-0x0002a000, 0x005c005f, 0x47c051f0, 0x4c001140, 0xc359f857, 0x55170805,
-0x01f0007c, 0x1f1007c2, 0xf0004c25, 0x2007c201, 0x807c001f, 0x03c409e0,
-0x00000ac0, 0x00000000, 0x000fa805, 0x03fc00ff, 0x07c08130, 0x3c002f02,
-0xc00df003, 0x40df057f, 0x0f7007fc, 0x9f003fc0, 0xf003fc02, 0x003fc80f,
-0x03fc80ff, 0x17c007f0, 0x00000e60, 0x00000000, 0x820f8003, 0x20fc00ff,
-0x04e00dd0, 0x5c04ff00, 0xc00d3000, 0x00df0034, 0x0f3003cc, 0xd30034c0,
-0x3003dc00, 0x003cc00f, 0x03cc00f3, 0x0cc00f30, 0x00000e00, 0x00000000,
-0x02070801, 0x187400dd, 0x8444add0, 0x4508dd00, 0x40017010, 0x401d0004,
-0x01100044, 0x11000440, 0x10007440, 0x20044001, 0x00440011, 0x04400111,
-0x00000c20, 0x00000000, 0x0023a011, 0x183400cd, 0x834000d0, 0x2400cd00,
-0x50001842, 0x00cd0030, 0x08940315, 0x81401050, 0x57031400, 0x4032500c,
-0x020500c1, 0x44500c14, 0x00000e80, 0x00000000, 0x8525a803, 0x237440dd,
-0x875001d0, 0x2408dd00, 0x600d5202, 0x040d0004, 0x04920034, 0x51002040,
-0x58003400, 0x00024000, 0x01440001, 0x0c400090, 0x00000620, 0x00000000,
-0x10878802, 0x0c7480dd, 0xc74201f0, 0x64611f00, 0xc00d3061, 0x205f3924,
-0x05b1015c, 0x530234c0, 0x70005c00, 0x08064801, 0x01440013, 0x08c00130,
-0x00000e20, 0x00000000, 0x040d8007, 0x45fc80fd, 0x1c4000f0, 0xcc113f31,
-0xc901f205, 0x41bf201f, 0x0b7026cc, 0xbf000fc0, 0xb003fc00, 0x003dc00f,
-0x02fc00fe, 0x1fc00f60, 0x00000600, 0x00000000, 0x00950802, 0x087c20d7,
-0x96c00df0, 0x7c420f20, 0xc481b00b, 0x185f0024, 0x01f0214c, 0x1f0017c3,
-0x70407c00, 0x0205c081, 0x207c081f, 0x0bc081f0, 0x00000420, 0x00000000,
-0x00d4a013, 0x0f7404dc, 0x56c01dd1, 0x5c831d04, 0x402d1403, 0x439d01d4,
-0x1dd00645, 0xdd04a744, 0xd04b7407, 0x0274509d, 0x277409dd, 0x4f409dd0,
-0x00000200, 0x00000000, 0x00d2a007, 0x003446cc, 0x42490cda, 0x30010d20,
-0x422d1000, 0x008d0c12, 0xacd04204, 0xcd046340, 0x40873410, 0x00b0402c,
-0x0b7402cd, 0x1f402cd0, 0x00000a00, 0x00000000, 0x8c588004, 0x44b441ed,
-0x5a609ed1, 0xb4092d00, 0x44121824, 0x414d116a, 0x12d11584, 0x2d115b42,
-0xd114b441, 0x10484410, 0x04b6412d, 0x124012d1, 0x00000200, 0x00000000,
-0x90301012, 0x3b3c08cf, 0x72c150f0, 0x3c170f01, 0xd0103905, 0xa98f2952,
-0xd8f0160c, 0x8f0243c0, 0x70033c01, 0x0031c08c, 0x223c60cf, 0x4bc00cf0,
-0x00000040, 0x00000000, 0x023db802, 0x23fc80ff, 0x3f8083f0, 0x9c003f02,
-0xc00f7021, 0x007f022d, 0x05f121fc, 0x5f2037c0, 0xf1107c40, 0x000fc003,
-0x01fc403f, 0x0bc013f0, 0x00000660, 0x00000000, 0x2027a015, 0x097c80db,
-0x60c011f0, 0x2c20d101, 0xc00d2006, 0x001f0004, 0x05f0007c, 0x5f002700,
-0x30047c00, 0x0007c001, 0x017c001f, 0x57c001f0, 0x00000e00, 0x00000000,
-0x98298812, 0x41bc00e1, 0x38c00270, 0x8500e104, 0x44021202, 0x00ed1038,
-0x0ad003b4, 0xad001b40, 0x10032400, 0x003b400e, 0x02b400ed, 0x4b400ed0,
-0x00000620, 0x00000000, 0x04700003, 0x87b401e5, 0x7b601ed8, 0x8431c900,
-0x40109007, 0x012d004a, 0x12d084b4, 0x2d104b64, 0x1204b601, 0x004b6012,
-0x84b4012d, 0x0f4012d0, 0x00000400, 0x00000000, 0xa0f30812, 0x2714a0c5,
-0xb1407c5a, 0x2440c902, 0x700c9547, 0x92cd0874, 0x6cd04b34, 0xcd003340,
-0x146b3412, 0x0cf3413c, 0x4b3413cd, 0x4b41acd0, 0x00000c20, 0x00000000,
-0x40dda817, 0x0174c057, 0x554017d1, 0xcc007b20, 0xc0059805, 0xc25d0054,
-0x25f1897c, 0x5f0017c0, 0x300d7402, 0x01d7c075, 0x097c075f, 0x5fc035f0,
-0x00000620, 0x00000000, 0x10070012, 0x087e001b, 0x04c08170, 0x5c000701,
-0xc0037020, 0x023f228f, 0x22f008fc, 0x3f100f40, 0xf000ec02, 0x008fc023,
-0x08fc023f, 0x4bc023f0, 0x00000c00, 0x00000000, 0x04e70810, 0x077c009b,
-0x37c08960, 0x4d109f00, 0xc008f002, 0x00930024, 0x0970027c, 0x9f0824c0,
-0xf0027c80, 0x0027c009, 0x027c009f, 0x43c009f0, 0x00000c20, 0x00000000,
-0x00662001, 0x0e5c0891, 0x274439d0, 0x44489d00, 0x5409d002, 0x029140a4,
-0x29d10a74, 0x9d0024d0, 0xd1027402, 0x10a5c429, 0x0a74a29d, 0x074029d0,
-0x00000800, 0x00000000, 0x0020a018, 0x1a548090, 0x256009d0, 0x46009d80,
-0x4019d802, 0x00b8802c, 0x0bd002f4, 0xbd802c60, 0xd002f600, 0x002f400b,
-0x02f400bd, 0x63400bd0, 0x00000200, 0x00000000, 0x42202010, 0x22344881,
-0x23420cd0, 0x06008d80, 0x403ad022, 0x02e180b8, 0x2ed00bb4, 0xed80a860,
-0xd00ab402, 0x00b9402e, 0x0bb402ed, 0x43402ed0, 0x00000080, 0x00000000,
-0x0586b01d, 0x585c8213, 0x05c141f8, 0x44141f05, 0xc001f008, 0x80132004,
-0x01700074, 0x1f0014c0, 0xf0007c00, 0x0007c001, 0x007c001f, 0x77c003f0,
-0x00000ac0, 0x00000000, 0x012fb819, 0x125c849f, 0x37c00af0, 0xfc00bf00,
-0xc029f112, 0x029f10a7, 0x29d00a7c, 0x9f00b5c0, 0xf00a7c82, 0x00a5c029,
-0x0a7c029f, 0x67c009f0, 0x00000e60, 0x00000000, 0x01afa818, 0x826c08bf,
-0x2fc00bf8, 0x8c20af00, 0xc149700a, 0x28930024, 0xc9320a4c, 0x9300a705,
-0x30326c06, 0x00254089, 0x0a4c0093, 0x60c02930, 0x00000e00, 0x00000000,
-0x1187081c, 0x2836800d, 0x044001d0, 0x6c001d00, 0x4461b000, 0x04154104,
-0x61140045, 0x11008640, 0x1028444e, 0x00874021, 0x00451611, 0x70400310,
-0x00000c20, 0x00000000, 0x0323a010, 0x5224048d, 0xa16008d2, 0x66008d20,
-0x411ad202, 0x02ad04a8, 0x0a109a84, 0xa9c1a940, 0x14128500, 0x45a9406a,
-0x0a8422a1, 0x40504a14, 0x00000e80, 0x00000000, 0x0525a818, 0x4274009d,
-0x244109d0, 0x44009c00, 0x42191302, 0x20b1082c, 0x0b1002c4, 0xb1002e04,
-0x5802e480, 0x002f400b, 0x02c400b1, 0x60400b10, 0x00000620, 0x00000000,
-0x00278005, 0x0e64009f, 0xa54009d0, 0x44009e10, 0xd409c012, 0x00938024,
-0x1930024c, 0x9300a780, 0x30824c00, 0x0025c209, 0x024c0093, 0x14c00930,
-0x00000e20, 0x00000000, 0x00258014, 0x277c009f, 0xe5c099f0, 0x7d308f00,
-0xc009f00e, 0x408f1023, 0x39f1027c, 0x8f1026c0, 0xb0c21c04, 0x0027c009,
-0x123c408f, 0x53c009f0, 0x00000600, 0x00000000, 0x00850014, 0x884c101f,
-0x86c46070, 0x6c00131a, 0xc0023000, 0x0033000c, 0x033000cc, 0x33108fc0,
-0x3000cc00, 0x080cc003, 0x00fc003f, 0x53c003f0, 0x00000420, 0x00000000,
-0x021ca014, 0x0140807d, 0x14c01750, 0x04827140, 0x50051001, 0x00514814,
-0x05140145, 0x51e01744, 0x16094500, 0x00145005, 0x0174005d, 0x534007d0,
-0x00000200, 0x00000000, 0x80b2a014, 0x470402cd, 0x30403c90, 0x260ac500,
-0x400cd002, 0x00c10230, 0x0c900354, 0xc1123740, 0x10230420, 0x0034400c,
-0x033608cd, 0x53400dd0, 0x00000a00, 0x00000000, 0x00388005, 0x478401ed,
-0x78410e10, 0xc4006500, 0x40005012, 0x20218008, 0x02108094, 0x21000340,
-0x91008400, 0x00084210, 0x80b4a02d, 0x174002d0, 0x00000200, 0x00000000,
-0x90781015, 0x478c21af, 0x70d01474, 0xac81e700, 0xc012f136, 0x41733050,
-0x1630051e, 0x42005bc0, 0x3007cc01, 0x0058c016, 0x05bc016f, 0x57c016f0,
-0x00000040, 0x00000000, 0x2025b810, 0x007da0df, 0x37e20d70, 0x4c805b20,
-0xc80db01a, 0x009d0027, 0x09f0026c, 0x970027c8, 0x72007c80, 0x2027c009,
-0x027c009f, 0x43c009f0, 0x00000660, 0x00000000, 0x007fa000, 0x05cd0d73,
-0x64c01f71, 0xce01df00, 0xd01f7066, 0x01d24b64, 0x1f3427fc, 0xf3426ed0,
-0xf104dd89, 0x407c909f, 0x07cd09b3, 0x03c01f34, 0x00000e00, 0x00000000,
-0x02198815, 0x11840871, 0x6a805610, 0xc60d4d05, 0x40821006, 0x892b0358,
-0x91102424, 0x31005841, 0x90178409, 0x020840c3, 0x20840861, 0x57408210,
-0x00000620, 0x00000000, 0x00310000, 0x01060421, 0x28404410, 0x8404ed03,
-0x40025582, 0x40610008, 0x061011b4, 0x61010060, 0xd0108404, 0x00104406,
-0x01841001, 0x03401610, 0x00000400, 0x00000000, 0x00072804, 0x00040041,
-0x60400010, 0x04004d80, 0x401c1002, 0x13810070, 0x28100e24, 0x8104f040,
-0x9a4f0402, 0x04e04138, 0x4e0413d1, 0x13413810, 0x00000c20, 0x00000000,
-0x00058815, 0x6344c0d1, 0x34520c1d, 0xc500cf10, 0xc03d7002, 0xb29110f4,
-0x99324a7c, 0x9104b6c2, 0xf04b4411, 0x04a4c129, 0x4a4c43d3, 0x57c12930,
-0x00000620, 0x00000000, 0x00370001, 0x037c001f, 0x27c00d30, 0x7c02df00,
-0xc0c1f102, 0x005f0307, 0x05f2016c, 0x5f0007c0, 0xb0006c80, 0x0017c005,
-0x013c001f, 0x07c005f0, 0x00000c00, 0x00000000, 0x00cf0880, 0x23fc01b3,
-0xfcc007f0, 0xcc03df00, 0xc002f002, 0x403f001c, 0x12f04474, 0x3f001cc0,
-0xf003cc11, 0x004bc013, 0x04cc0073, 0x03c01330, 0x00000c22, 0x00000000,
-0x04e62081, 0x00740315, 0x65400d71, 0x7c13dd00, 0x400dd002, 0x89dd2024,
-0x1dd00774, 0xdd002450, 0xd0004580, 0x1077400d, 0x07440091, 0x07401d14,
-0x00000802, 0x00000000, 0x0804a001, 0x00740ad0, 0x34400dd1, 0x44005d00,
-0x400dd002, 0x009c0024, 0x49d01274, 0x8d002440, 0xd1004404, 0x41274049,
-0x12440091, 0x07404910, 0x00000200, 0x00000000, 0x00102210, 0x00240001,
-0x214044d0, 0x24064900, 0x5220d002, 0x004d0110, 0x04d00134, 0x4d111040,
-0xd0030400, 0x00134004, 0x01040041, 0x43400410, 0x00000080, 0x00000000,
-0x4006b000, 0x007c8093, 0x74c235f8, 0xcc375f21, 0xc020f03e, 0x0b1f0340,
-0xf1f23c7c, 0x1f02c4c0, 0xf0144c07, 0x0007c001, 0x000d0013, 0x03c00130,
-0x00000ac0, 0x00000000, 0x000f9805, 0x00fc003f, 0xefc1d178, 0x7e053f04,
-0xc01ff00e, 0x09ff0b7f, 0x9df0377c, 0xdf027740, 0xf0237c17, 0x003fc00f,
-0x03fc20ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x000fa003, 0x20e804ff,
-0x0fc083f0, 0xec263c08, 0xc20fb053, 0x00f3003e, 0x0f3003cc, 0xb3003fc0,
-0x3003ec80, 0x083ec00f, 0x83ec20ff, 0x0cc007f0, 0x00000e00, 0x00000000,
-0x02070801, 0x2844369d, 0x274a81d0, 0x44c61d00, 0x4009100b, 0x00110004,
-0x01140045, 0x11000740, 0x10004400, 0x00044601, 0x0045001d, 0x07c809d1,
-0x00000c20, 0x00000000, 0x0013a011, 0x122408cd, 0x01604451, 0x04020d00,
-0x50049003, 0x00014800, 0x00808014, 0x01480340, 0x16000500, 0x20005800,
-0x0004800d, 0x446408d1, 0x00000e80, 0x00000000, 0x0055a803, 0x0466408d,
-0x07400dd0, 0x44201d21, 0x440c1013, 0x08110004, 0x41902014, 0x01000340,
-0x10004410, 0x00044081, 0x0064101d, 0x0f4009d1, 0x00000620, 0x00000000,
-0x0007a802, 0x0c6c095f, 0x07c041f0, 0x6d001f00, 0xc04db007, 0x231304c6,
-0x01b0145c, 0x530307c0, 0x30186c00, 0x0006c051, 0x086c001f, 0x00c401f3,
-0x00000e20, 0x00000000, 0x000d8007, 0x005c003f, 0x67c007f0, 0xbc057f08,
-0xc05bf107, 0x01ff027f, 0x1f6007e4, 0xff103fc0, 0xf227fc00, 0x017fc00f,
-0x27dc05fb, 0x1e403ef0, 0x00000602, 0x00000000, 0x00a50802, 0x0a7c00df,
-0x35c00170, 0x7c104300, 0xc125f063, 0x40df2834, 0x2df08b7c, 0xdf00b7c0,
-0xf00b7c02, 0x00b7c02d, 0x0b7c1ac3, 0x0bc20df0, 0x00000420, 0x00000000,
-0x1464a013, 0x1044009d, 0xf7400d10, 0x74025101, 0x445db007, 0x26dd01f4,
-0x2dd00b74, 0xdd02b741, 0xd20b7487, 0x60b7492d, 0x4b7481d1, 0x4f41add0,
-0x00000200, 0x00000000, 0x0022a007, 0x0214060d, 0xd2680810, 0x24030104,
-0x4030100b, 0x111d1404, 0x10d06434, 0x0d22c245, 0x90646410, 0x06434111,
-0x44240209, 0x1f4810d0, 0x00000a00, 0x00000000, 0x00688004, 0x0684212d,
-0x7b409214, 0xb4116100, 0x501c9807, 0x81ed0878, 0x9ed087b4, 0xad007b42,
-0x9007b421, 0x0073401e, 0x07b421e9, 0x1b401ed0, 0x00000200, 0x00000000,
-0x82301012, 0x221c0a5d, 0x43e08c70, 0x7c8c4340, 0xe88c7403, 0x02cf3230,
-0x0cf0033c, 0x8f0133c0, 0xf0233c00, 0x0233c00c, 0x233c00cb, 0x4bc08cf0,
-0x00000040, 0x00000000, 0x083db802, 0x23dc007f, 0x0fce8ff0, 0xfc0a7f00,
-0xc60ff003, 0x00ff023f, 0x0ff803fe, 0xbf803fc2, 0xf283fc00, 0x003fc40f,
-0x83fc00f5, 0x0bc01ff0, 0x00000660, 0x00000000, 0x0017a015, 0x027c811f,
-0x56c209f2, 0x7c001300, 0xe0013423, 0x801f0007, 0x01f2007c, 0x531044c0,
-0xf2807e80, 0x0007c801, 0x805c001f, 0x57c001f0, 0x00000e00, 0x00000000,
-0x00198812, 0x03b4002d, 0x384004d0, 0xf4006b00, 0x600e5013, 0x00ed003b,
-0x0ed003b4, 0xe1183042, 0xd003b400, 0x003b400e, 0x839c00ed, 0x4b4a0ed1,
-0x00000600, 0x00000000, 0x00f90003, 0x46b400e5, 0x7a411ad0, 0xb6236100,
-0x4a1e100f, 0x11ed2079, 0x1ed107b4, 0xe5007a40, 0xd18fb401, 0x087b4a1e,
-0x0f9403ed, 0x0f401ed0, 0x00000402, 0x00000000, 0x10f32812, 0x033402cd,
-0xb0400dd2, 0x34015912, 0x420e5403, 0x40ed03fb, 0x3ed10bb4, 0xe5043a50,
-0xd04bb412, 0x00bb402e, 0x4b9401ed, 0x4b000ed0, 0x00000c20, 0x00000000,
-0x00dda817, 0x05fc007f, 0x5ec007f0, 0xbc015300, 0xc0051004, 0x035f0017,
-0x55f0117c, 0x570496c0, 0xf1017c01, 0x0417c525, 0x015c005f, 0x5fc107f8,
-0x00000620, 0x00000000, 0x01070012, 0x007c101f, 0x07c801d0, 0x7c021f04,
-0xc003f000, 0x403b200f, 0x03f148fc, 0x3a408dc1, 0xf000bc08, 0x118fc003,
-0x00fc043f, 0x4bc823f0, 0x00000c00, 0x00000000, 0x02270810, 0x064c088f,
-0x24c209f1, 0x4c41df20, 0xc0093404, 0x109f0027, 0x08f0024c, 0x9f0064c0,
-0xf0027c00, 0x0027c109, 0x027c009f, 0x43c009f0, 0x00000c20, 0x00000000,
-0x00262001, 0x2a44019d, 0xa44009d0, 0x44209d00, 0x40091082, 0x809d0027,
-0x09d00245, 0x9c03e458, 0x10827420, 0x00274009, 0x0274809d, 0x074129f0,
-0x00000800, 0x00000000, 0x0034a018, 0x4344009d, 0xa44009d0, 0x44089d00,
-0x40091022, 0x00a5082f, 0x0fd082c4, 0xbd002c48, 0x1402f000, 0x003e640b,
-0x03f600b9, 0x63400bd0, 0x00000200, 0x00000000, 0x00202010, 0x2204028d,
-0x2051c8d0, 0x4508cd02, 0x422a100a, 0x02ad00ab, 0x2ad00a84, 0xad00a84c,
-0x100ab442, 0x00ab482a, 0x02b602ad, 0x43400ad0, 0x00000080, 0x00000000,
-0x0506b01d, 0x584c001f, 0x80c061f0, 0x4c161f05, 0xc0013850, 0x00170007,
-0x00f0014c, 0x1d0004c4, 0xf0007c40, 0x0017c001, 0x007c801f, 0x77c203f0,
-0x00000a80, 0x00000000, 0x002fb819, 0x13fc02ff, 0x2f804bf0, 0xf8249f01,
-0xca29f000, 0x029f00a7, 0x29f00a7c, 0x9f00a7cc, 0xf00a7c22, 0x00a7c029,
-0x0a7c029f, 0x67c02970, 0x00000e60, 0x00000000, 0x002fa018, 0xc2cc04bb,
-0xacc06930, 0x4c06b301, 0xc1093016, 0x04930227, 0x09300a4c, 0x930427c0,
-0x301a4c04, 0x00a4c069, 0x024c009b, 0x67c00930, 0x00000e00, 0x00000000,
-0x0297081c, 0x0044341d, 0x84424510, 0x6e861141, 0x40611018, 0x16110287,
-0xe1140145, 0x51408748, 0x10104114, 0x03944045, 0x00440411, 0x72400714,
-0x00000c22, 0x00000000, 0x0023a010, 0x4224428d, 0xa0486810, 0x84028100,
-0x410a5c4a, 0x48a1492b, 0x0a100a84, 0xa1052b41, 0x141a8402, 0x4128506a,
-0x0aa532a1, 0x43402a10, 0x00000e80, 0x00000000, 0x0125a818, 0x0264089d,
-0x25444814, 0x2400c100, 0x430b5082, 0x10b1042b, 0x6b1002c4, 0xb108af4a,
-0x101a8400, 0x0028404e, 0x42e426a1, 0x63408b12, 0x00000620, 0x00000000,
-0x08e7a805, 0x0a6c0299, 0x24902930, 0x44009301, 0xc0297002, 0x00930027,
-0x3930064c, 0x930027c0, 0x300e4c01, 0x00e4c019, 0x026c009b, 0x17c03930,
-0x00000e20, 0x00000000, 0x00258014, 0x0e5c409c, 0x26c209f1, 0x7c189f01,
-0x8129b00e, 0x088f0167, 0x19f00e7c, 0x9f0127c4, 0xf2027803, 0x0127c019,
-0x221c009f, 0x52c009f0, 0x00000600, 0x00000000, 0x40850814, 0x187c0003,
-0x04d021f0, 0xfc001f20, 0xc4237100, 0x1033000c, 0x23f000fc, 0x33000cc1,
-0x3048cc00, 0x000cc003, 0x80cca23f, 0x530003f2, 0x00000420, 0x00000000,
-0x1154a014, 0x49f44271, 0x1d4005d0, 0x76927d21, 0x5405d001, 0x00514014,
-0x05d00174, 0x514016d2, 0x16014580, 0x00145005, 0x014d005d, 0x534005d2,
-0x00000200, 0x00000000, 0x0072a014, 0x07740cc1, 0x35400cd0, 0x3441cd01,
-0x420c4283, 0x00c10230, 0x0cd00374, 0xd1003440, 0x10030408, 0x0230400c,
-0x032400cd, 0x53440cd0, 0x00000a00, 0x00000000, 0x00608005, 0x03b481e1,
-0x38400cd0, 0xb400ed00, 0x4010d000, 0x20210800, 0x12d000b6, 0x01000042,
-0x10000420, 0x18084000, 0x0084200d, 0x174402d0, 0x00000200, 0x00000000,
-0x00781015, 0x85bc20a3, 0x59c33ef0, 0xb481ef20, 0xc01e7206, 0x01e30078,
-0x1cf085bc, 0xe3004846, 0x31078c01, 0x0058c01e, 0x07ac01ef, 0x57c016f0,
-0x00000040, 0x00000000, 0x0825b810, 0x007c0098, 0x17c40df0, 0x7c009f00,
-0xc801f001, 0x001f2007, 0x01f2027c, 0x1f2037c0, 0xf0007c80, 0x0027c801,
-0x007c001e, 0x43c209f8, 0x00000660, 0x00000000, 0x007bb000, 0x06fc8973,
-0x7f041ff1, 0xfc01ff02, 0xc0973027, 0x097f026c, 0x973007cc, 0xbf107cc0,
-0xf125cd09, 0x026cd01f, 0x07c801f3, 0x0bc01f30, 0x00000e00, 0x00000000,
-0x02398015, 0x82b408eb, 0x03400ed0, 0xf4006d00, 0x42cb1008, 0x08ad0318,
-0xcb102084, 0x6d020840, 0xd0b2840c, 0x021c4182, 0x60844831, 0x57480210,
-0x00000620, 0x00000000, 0x00290000, 0x60b63821, 0x3b408ed0, 0xb418ed10,
-0x44065082, 0x084d0028, 0x06100104, 0x8d000840, 0xd0018400, 0x0208400c,
-0x030400e1, 0x63401610, 0x00000400, 0x00000000, 0x10232804, 0x08360089,
-0x83400cd1, 0x34010c00, 0x54984081, 0x108d0010, 0x98102204, 0x4d02b050,
-0xd00e0483, 0x42f04030, 0x08050a01, 0x1b403810, 0x00000c20, 0x00000000,
-0x0035a815, 0x067c2113, 0xa7c82ff0, 0x3c21df00, 0xc0996401, 0x019f1414,
-0x19102a4c, 0x5f0074c0, 0xf04a4c10, 0x00744201, 0x0c4c0313, 0x77c10910,
-0x00000620, 0x00000000, 0x10230001, 0x4a70021f, 0x23011df0, 0x7c22df00,
-0xc005b006, 0x085f0023, 0x05f4017d, 0x9f1407c1, 0xf0117c12, 0x0407c90d,
-0x1b7c02df, 0x07c104f4, 0x00000c00, 0x00000000, 0x003f0880, 0x82fc0833,
-0x0fc20ff8, 0xfc857304, 0xc21a3000, 0x01b3041c, 0x5b3084bc, 0x7f000fc0,
-0xf006fc00, 0x001bc013, 0x04fc1033, 0x04c013f0, 0x00000c20, 0x00000000,
-0x00262081, 0x06740111, 0x47400dd0, 0x74231102, 0x40951003, 0x015b4024,
-0x05140774, 0x9d083740, 0xd0017424, 0x0827420d, 0x177404d1, 0x05460dd0,
-0x00000802, 0x00000000, 0x0034a001, 0x0e749051, 0x37400dd0, 0x74809100,
-0x04011001, 0x04110084, 0x01101274, 0x1d183740, 0x90107000, 0x08274241,
-0x10744811, 0x044249d0, 0x00000200, 0x00000000, 0x00302010, 0x023400c1,
-0x02400cd0, 0x74000108, 0x400c1002, 0x00c90030, 0x0c128134, 0xcd080340,
-0xd0033420, 0x0813400c, 0x032420c1, 0x41400490, 0x00000080, 0x00000000,
-0x0026a000, 0x007c0053, 0xb7c00fd0, 0x7c001340, 0xc0013000, 0x60130004,
-0x0131007c, 0x1f0007c4, 0xf0007c00, 0x0007c001, 0x007c0013, 0x04c401f0,
-0x00000ac0, 0x00000000, 0x002fa805, 0x00fc80ff, 0x4fc80ff0, 0xfc003f15,
-0xc00ff103, 0x40f7003f, 0x0ff003fc, 0xff003fc0, 0xf003fc00, 0x583fc00f,
-0x03fc00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x030f8003, 0x03cc0833,
-0x3fc08114, 0x4c00f308, 0xc00f381b, 0x00ff003f, 0x0df0837c, 0x9f0034c0,
-0xf0037c00, 0x003f400f, 0x03fc00ff, 0x0cc007f0, 0x00000e80, 0x00000000,
-0x00970801, 0x2a442e01, 0xb8400110, 0xc402f194, 0x40091023, 0x401d2807,
-0x01900074, 0x1d000450, 0xd0007400, 0x00074201, 0x0074a019, 0x06c009d1,
-0x00000420, 0x00000000, 0x21a3a011, 0x03142081, 0x30604852, 0x3402c163,
-0x48045213, 0x800d1002, 0x00d00014, 0x0d000140, 0xd0003620, 0x00034000,
-0x0034a00d, 0x444008d0, 0x00000c80, 0x00000000, 0x0025a803, 0x02442011,
-0x34748950, 0x5540d010, 0x690d5083, 0x201d2007, 0x01d00074, 0x1d080540,
-0xd2007400, 0x06074a81, 0x8074b01d, 0x0e4089d2, 0x00000620, 0x00000000,
-0x4007a802, 0x215c8153, 0x36c03570, 0x5c20d110, 0xc00d5403, 0x041f2887,
-0x81e0087c, 0x5f0605c1, 0xf00c7c10, 0x00c7c011, 0x007c011f, 0x08c211f0,
-0x00000e20, 0x00000000, 0x001d8007, 0x00ad09af, 0x3ac307b0, 0xac40ff00,
-0xc08bb203, 0x08ff30bf, 0x1fb013ec, 0xff007ec0, 0xf117fc20, 0x047fc11f,
-0x0ffc09fb, 0x1fc11ef0, 0x00000600, 0x00000000, 0x00b10802, 0x094c04d3,
-0x35e02530, 0x6c80d700, 0xc045f203, 0x18d304b4, 0xec714b4c, 0xd301b7c0,
-0x30237c08, 0x12b4c68d, 0x034c0cd3, 0x0bc40d30, 0x00000420, 0x00000000,
-0x0834a013, 0x14540091, 0x3f420510, 0xec0ae100, 0x420d1003, 0x03d51c74,
-0x2d104b44, 0xd104f7c8, 0x10877002, 0x00b4402d, 0x2f4400d1, 0x4f402d10,
-0x00000200, 0x00000000, 0x0222a007, 0x8024a001, 0x30480192, 0x0482c108,
-0x40301003, 0x43011082, 0x20110c04, 0x0100c344, 0x00103446, 0x10424410,
-0x08244301, 0x1f441011, 0x00000a00, 0x00000000, 0x20788004, 0x05340961,
-0x7b419290, 0x248dc501, 0x511c1007, 0x01c14072, 0x1e141705, 0xa1507342,
-0x14073401, 0x4872501c, 0xc72701c1, 0x13401e14, 0x00000200, 0x00000000,
-0x01a41012, 0x102c1883, 0x71ca5cb0, 0x0409c342, 0xc01c3817, 0x09c333f2,
-0x9c300f0c, 0x830373c0, 0x10273c01, 0x8132c02c, 0x032c00c3, 0x4bc10c30,
-0x00000040, 0x00000000, 0x402db802, 0x01dc087f, 0x3fc00f70, 0xdc48db00,
-0xc00f742b, 0x28ff003d, 0x0db2037c, 0xbf003dc2, 0xf083f808, 0x003dc08f,
-0x03dc08ff, 0x0bc01ff0, 0x00000660, 0x00000000, 0x0067a015, 0x024c0053,
-0x36900936, 0x5c04df00, 0xc201302b, 0x001f1807, 0x0130007c, 0x5fa007e0,
-0xf0004c01, 0x0007c001, 0x004c011f, 0x57c001f0, 0x00000e00, 0x00000000,
-0x30398812, 0x030400c1, 0x38400a10, 0xc490ed0b, 0x400e1203, 0x80e7003b,
-0x0e1203b4, 0xcd203b40, 0xd00384a0, 0x203b480e, 0x038480fd, 0x4b480ed2,
-0x00000620, 0x00000000, 0x00790003, 0x068403e1, 0x78401e10, 0xb409ed02,
-0x621e1097, 0x03ed007b, 0x1e1047b4, 0xed007b48, 0xd2078441, 0x00fb421e,
-0x078621ed, 0x0f401ed0, 0x00000400, 0x00000000, 0x02332812, 0x0b0413d1,
-0x30401c10, 0x4440cd00, 0x640e1003, 0x00f5023b, 0x2e148ff4, 0xed0c3f40,
-0xd003c421, 0x00bf483f, 0x23c742ed, 0x4b409fd2, 0x00000c20, 0x00000000,
-0x405da817, 0x09c50373, 0x16c07730, 0x7c805f08, 0xc2053001, 0x095f02d7,
-0x9530097c, 0x5f0897c6, 0xf0494d12, 0x0057c0a5, 0x8d4c045f, 0x5fc007f0,
-0x00000620, 0x00000000, 0x00870012, 0x487c821f, 0x07c841f2, 0x5c001f00,
-0xc023f000, 0x8037808f, 0xa3f048fc, 0x3f028fc8, 0xd290fc86, 0x008fc8a3,
-0x08fc063f, 0x4bc023f0, 0x00000c00, 0x00000000, 0x00270810, 0x024c019f,
-0x24c009b1, 0x4c818300, 0xc0493202, 0x809f0167, 0x9932064c, 0x931264c0,
-0x31027c41, 0x2c24c219, 0x427c0493, 0x40c01930, 0x00000c20, 0x00000000,
-0x00a62001, 0x0204069d, 0x24400910, 0x440a9130, 0x40091482, 0x039d21e7,
-0x09146e45, 0x9140a458, 0x140e74a0, 0x406451b9, 0x02700391, 0x0451a914,
-0x00000800, 0x00000000, 0x0024a018, 0x4344049d, 0x20500c90, 0x44109140,
-0x47091002, 0x18bd002f, 0x0a1182c4, 0xb1002c49, 0x1123f408, 0x062c400b,
-0x13f400b1, 0x60400b10, 0x00000200, 0x00000000, 0x02202010, 0x0204088d,
-0x20488812, 0x05808102, 0x422a1122, 0x02ad00ab, 0x2a100a84, 0xa100b848,
-0x100ab402, 0x20a8402a, 0x0ab442e1, 0x40402a10, 0x00000080, 0x00000000,
-0x0592b01d, 0x504d161f, 0x84d020b0, 0x4c941325, 0xc0013058, 0x801f0807,
-0x0130000c, 0x53200482, 0x30817c00, 0x0004c001, 0x017c0013, 0x74c00330,
-0x00000ac0, 0x00000000, 0x012fb819, 0x02fc04ff, 0x27c04bf0, 0x7c008f11,
-0xc229f012, 0x229f00a7, 0x29f08a7c, 0x9f00a7c8, 0xf00a7c02, 0x00a7c829,
-0x0a7c029f, 0x67c229f0, 0x00000e60, 0x00000000, 0x00afa018, 0x02fc02bf,
-0x24c00a70, 0x4c00b310, 0x4049321a, 0x82930524, 0x29300a4c, 0x930024c1,
-0x30a24c12, 0x9024c889, 0x024c049f, 0x63c06930, 0x00000e00, 0x00000000,
-0x1087081c, 0x0074021d, 0x04400510, 0x04001101, 0x50615008, 0x00114184,
-0x01142845, 0x11010450, 0x102944c0, 0xa78450a1, 0x584d141d, 0x73686314,
-0x00000c20, 0x00000000, 0x01a3a010, 0x0234068d, 0xa0400850, 0x0402c154,
-0x418a140a, 0x02a10428, 0x0a100284, 0xa144a842, 0x14128500, 0x0028404a,
-0x0aa402ad, 0x4340ca10, 0x00000e80, 0x00000000, 0xa425a818, 0x8274009d,
-0x24500910, 0x04009100, 0x41885002, 0x82b91028, 0x0b1002c4, 0xa1002c41,
-0x1103c490, 0x043c410b, 0x42c410fd, 0x63400b10, 0x00000620, 0x00000000,
-0x0027a805, 0x027c029f, 0x24c00970, 0x4d009300, 0xc0293002, 0x83930464,
-0x3930e244, 0x9306e4c0, 0x10064c0a, 0x00a4c039, 0x0e6c029d, 0x17404930,
-0x00000e20, 0x00000000, 0x02658014, 0x027c009f, 0x27c289f0, 0x7c008f00,
-0xc009b202, 0x85872967, 0x89f0023c, 0x9f0c63c0, 0xf0a63c20, 0x0567c298,
-0x263c058f, 0x53c059f0, 0x00000600, 0x00000000, 0x04850814, 0xa07c801f,
-0x02c021f0, 0x4c001300, 0xc1033000, 0x003f010c, 0x03f0c0fc, 0x3f008cc0,
-0xd100cc02, 0x008fc823, 0x88fcb23b, 0x50c023f0, 0x00000420, 0x00000000,
-0x00dca014, 0x2db4007d, 0x144007d1, 0x44207100, 0x50351001, 0x4b5d0414,
-0xa5d00574, 0x5d001450, 0xd0094502, 0x44d74075, 0x2d740351, 0x514017d0,
-0x00000200, 0x00000000, 0x02f2a014, 0x073410cd, 0x32400dd0, 0x3400c100,
-0x42be1003, 0x02ed1838, 0x0fd00394, 0xeda07840, 0xd0478490, 0x003b404e,
-0x07b401e1, 0x50421ed2, 0x00000a00, 0x00000000, 0x00288005, 0x03b400ed,
-0x384203d0, 0xb400e10b, 0x400c1413, 0x10ed0038, 0x0cd00bb4, 0xcd10b841,
-0xd00b84a0, 0x0073400e, 0x43b410e1, 0x15411ed0, 0x00000200, 0x00000000,
-0x00781015, 0x05bc012f, 0x7ec01ef3, 0xbc010341, 0xc01e303f, 0x41ee2078,
-0x1ef007be, 0xef0078c0, 0xf0878c41, 0x207bc41e, 0x07bc01e3, 0x54c01cf0,
-0x00000040, 0x00000000, 0x0025b810, 0x017c00df, 0xb74001f0, 0x4d201f05,
-0xc801f803, 0x001f2007, 0x01f0007c, 0x5f0007c0, 0xf0007c80, 0x0007c001,
-0x807c0017, 0x43c001f0, 0x00000660, 0x00000000, 0x007fa000, 0x06fc01ff,
-0x75c89cf0, 0x7c49f32a, 0xc01d3007, 0x81d30074, 0x1ff207fc, 0xd31877c4,
-0x30277c45, 0x007c409f, 0x27cc09f3, 0x00c21f30, 0x00000e00, 0x00000000,
-0x00398815, 0x02b4006d, 0x704092d0, 0xb481c102, 0x40555007, 0x0fc10074,
-0x5ed03784, 0xe106fb42, 0x1227b415, 0x203849ae, 0x2b8480e1, 0x54488e12,
-0x00000620, 0x00000000, 0x00190000, 0x02b4002d, 0x31404fd0, 0xb4042140,
-0x404a1013, 0x2ce1043a, 0x4e922384, 0xe9123b44, 0x5233b484, 0x203a608e,
-0x238400e1, 0x00401e18, 0x00000400, 0x00000000, 0x00132804, 0x0234034d,
-0x304201d2, 0x34000100, 0x561c9003, 0x06015482, 0x30d06c05, 0x59640344,
-0x16043491, 0x46427100, 0x04050901, 0x1051101c, 0x00000c20, 0x00000000,
-0x0155a815, 0x03708edf, 0x3dc001f0, 0xfc40d330, 0xc00d3003, 0x80d300b6,
-0x2db00b5e, 0x9b8077c0, 0x504b7c41, 0x0836c01d, 0x4f4c01d3, 0x54c10d30,
-0x00000620, 0x00000000, 0x00070001, 0x227c009f, 0x37c02df0, 0x3c025f00,
-0xc08d7203, 0x08df0035, 0xadfb0b5e, 0x930037c0, 0xb04b7c02, 0x0835e00d,
-0x1b7c00df, 0x07c00df0, 0x00000c00, 0x00000000, 0x001b0880, 0x15bc0933,
-0x38d01334, 0x7c01fb00, 0xc90e7003, 0x00f30038, 0x9ff117fc, 0xbd217fc9,
-0xf107c881, 0x003fc80f, 0x03f093ff, 0x03c00ff2, 0x00000c22, 0x00000000,
-0x04c62081, 0x88740191, 0x35009d12, 0x74185500, 0x40010003, 0x09115684,
-0x01d00074, 0x1d10074c, 0xd00c449a, 0x0ac74681, 0x2864621d, 0x074091d1,
-0x00000802, 0x00000000, 0x0224a001, 0x097400d1, 0x36002110, 0x74009900,
-0x420dc003, 0x00110004, 0x01d08854, 0x15000741, 0xd0105500, 0x08074001,
-0x0074201d, 0x074209d0, 0x00000200, 0x00000000, 0x08202010, 0x00240001,
-0x30444c10, 0x34000101, 0x40441ac3, 0x10010880, 0x80d01836, 0x0d950342,
-0xd0201440, 0x00034000, 0x0024000d, 0x434008d0, 0x00000080, 0x00000000,
-0x4006b000, 0x017e2013, 0xfcc0b130, 0xfc059b02, 0xc0f97007, 0x21030844,
-0x71f0147c, 0x1f0043c1, 0xf01c1c1b, 0x0003c000, 0x003c000f, 0x03c008f0,
-0x00000ac0, 0x00000000, 0x080fb805, 0x00fe003f, 0x7f40dff0, 0xfc131f02,
-0xc89fb147, 0x15ff00ff, 0x5df01f74, 0xbf047fc0, 0xf237ec05, 0x003fc00f,
-0x03fc40ff, 0x17c007f0, 0x00000e60, 0x00000000, 0x0b0f8003, 0x33cc8c3f,
-0x2bc003f0, 0xfc063342, 0xc00fb033, 0x00ff003f, 0x0ff003cc, 0xbf003cc0,
-0x3003fc00, 0x003dc00f, 0x03cc00f3, 0x0cc007f0, 0x00000e00, 0x00000000,
-0x03070801, 0x324c0e5d, 0xaf40e1d0, 0x74061100, 0x4809100b, 0x800d0007,
-0x01d28064, 0x1d000450, 0x14007420, 0x00045001, 0x00440011, 0x044009d0,
-0x00000c20, 0x00000000, 0x0123a011, 0x1124000d, 0xa1490050, 0x34820521,
-0x4004908b, 0x800d2001, 0x00d20025, 0x0d000160, 0x92003480, 0x60004200,
-0x00270009, 0x445008d0, 0x00000e80, 0x00000000, 0x0005a807, 0x0044041d,
-0x276001d0, 0x74005100, 0x000d1003, 0x021d0507, 0x61d80064, 0x1d000440,
-0x90007620, 0x00844001, 0x00640819, 0x0c0009d0, 0x00000620, 0x00000000,
-0x00c7a802, 0x326d031d, 0x27c0d5f0, 0x7c801700, 0x847db003, 0x081f00c7,
-0x01f0144c, 0x1f0105c0, 0x90687c02, 0x0084c051, 0x386c011b, 0x08c281f2,
-0x00000e20, 0x00000000, 0x02158003, 0x02fc016f, 0x2ec01ff0, 0xa0083f00,
-0xc049f00b, 0x01ff0077, 0x1df00f5c, 0x9f0277c0, 0x70077c08, 0x0936c09d,
-0x075c00d3, 0x1fc01dd0, 0x00000600, 0x00000000, 0x44a50802, 0x004c089f,
-0x23c40530, 0x7c005304, 0xd005b807, 0x0ec340b4, 0x2d34035c, 0x934034d0,
-0x740b4d00, 0x4034d00d, 0x034d02d3, 0x08d00d34, 0x00000420, 0x00000000,
-0x00d48017, 0x10450890, 0x2c400db0, 0x5c055108, 0x42bd1807, 0x02d10af4,
-0xbd102f45, 0x9b0af400, 0x10af442b, 0x02f442bd, 0xaf440bd0, 0x4c40bd10,
-0x00000200, 0x00000000, 0x0212a007, 0x11040381, 0xa0400811, 0x24000100,
-0x40001083, 0x81010001, 0x01920004, 0x41000200, 0x10006400, 0x08044001,
-0x00240010, 0x1d400110, 0x00000a00, 0x00000000, 0x00688004, 0x058401e1,
-0x6c481898, 0xd4016100, 0x410e1007, 0x81e11479, 0x1e904786, 0xe9047a41,
-0x1047a411, 0x0478411e, 0xc7a431e1, 0x11419e10, 0x00000200, 0x00000000,
-0x80b01012, 0x214c4c53, 0x21c24c30, 0x3c080300, 0xe80c1003, 0x88c32031,
-0x4cb0031c, 0xc30132c0, 0x70132c02, 0x0230c00c, 0x132c02c3, 0x49c00c30,
-0x00000040, 0x00000000, 0x002db802, 0x01fc0874, 0xadc00fe0, 0xbc205f44,
-0xe00f7043, 0x08fe023e, 0x0d70037c, 0xf7003de0, 0xf003dc08, 0x203fc08f,
-0x03dc00ff, 0x0ac21ff8, 0x00000660, 0x00000000, 0x4017b011, 0x027c009b,
-0xa7ca01f0, 0x3c945b00, 0xd0013407, 0x00130804, 0x0134007c, 0x534007c0,
-0xf2804d80, 0x0007c001, 0x007c001f, 0x54d001f0, 0x00000e00, 0x00000000,
-0x803d8012, 0x03b420e3, 0x2f440ad0, 0x9c006101, 0x400f1013, 0x20e1003c,
-0x0e1003b4, 0xf1803b40, 0x70038400, 0x003b420e, 0x03a400ed, 0x48400ed0,
-0x00000620, 0x00000000, 0x00790003, 0x0eb401e5, 0x6b4016d0, 0xf4016100,
-0x401e1007, 0x01e5007a, 0x1e5887b4, 0xe9887b40, 0xd0078621, 0x007b401e,
-0x07b401ed, 0x0c401ed0, 0x00000400, 0x00000000, 0x80332812, 0x1f3640c5,
-0x23401dd8, 0x14004940, 0x400e1003, 0x1be544b8, 0x1e103bb4, 0xe900bb40,
-0x500b8012, 0x243b404e, 0x0ba40bed, 0x48400ed0, 0x00000c20, 0x00000000,
-0x081da817, 0x0df40277, 0x1740d7d0, 0xf4855b00, 0xe0053000, 0x025701d4,
-0xc570017c, 0x5b041740, 0xf0154400, 0x24174125, 0x1d7c005f, 0x5cc107f0,
-0x00000620, 0x00000000, 0x00070012, 0x007c9010, 0x07c001b0, 0x5c001700,
-0xe002f200, 0x003b008b, 0x22d008bc, 0x27210bca, 0x7010bc80, 0x000bc002,
-0xc0b0102f, 0x4bc022f2, 0x00000c00, 0x00000000, 0x02270810, 0x021c2593,
-0x25c20970, 0x7c00d300, 0xc009f000, 0x20932026, 0x0930027c, 0x932165ca,
-0x31026c00, 0x0024c009, 0x824c0093, 0x40c00938, 0x00000c20, 0x00000000,
-0x00662001, 0x0a744195, 0xe0480910, 0x5c499100, 0x5009d802, 0x209140a4,
-0x29144a74, 0x9b406459, 0x14024580, 0x4024d809, 0x02450491, 0x045d2904,
-0x00000800, 0x00000000, 0x0820a018, 0x427400d9, 0x24600958, 0x74009145,
-0x4219d0a2, 0x00b1002c, 0x0b1002f6, 0xb1882c40, 0x1002c400, 0x802e400b,
-0x02c400b1, 0x62400b90, 0x00000200, 0x00000000, 0x02202210, 0x0a3408c5,
-0x2441c810, 0x34088100, 0x403ad022, 0x02a100b8, 0x2a100ab4, 0xa980a840,
-0x100a8402, 0x00aa402a, 0x0a8482a1, 0x42402a18, 0x00000080, 0x00000000,
-0xa586a01d, 0x005c161b, 0x05d06170, 0x7c561305, 0xc001d0d8, 0x00130004,
-0x01300034, 0x130001c0, 0x32004c00, 0x0006e001, 0x814c0013, 0x76c20230,
-0x00000ac0, 0x00000000, 0x212f8819, 0x0afc04bf, 0x2fc04bf1, 0xdc049f0d,
-0x4029f010, 0x029f00a5, 0x29f20a7c, 0xd720a7c0, 0xe20a7c02, 0x00b5c02d,
-0x0a7c029f, 0x65c029f0, 0x00000e60, 0x00000000, 0x133faa18, 0x0afc10bf,
-0xa8c06978, 0xdc029301, 0xc049301d, 0x629f0224, 0x69f0027c, 0x9f8627c1,
-0xf0327c0c, 0x2827ca49, 0x0a7c209f, 0x63c009f0, 0x00000e00, 0x00000000,
-0x0307001c, 0x0874001d, 0x046441d0, 0x64001140, 0x5061101c, 0x421d0294,
-0x21d29874, 0x1d218748, 0xd0917484, 0x00074141, 0x0834021d, 0x734143d0,
-0x00000c20, 0x00000000, 0xa123a010, 0x1a34908d, 0xa2406850, 0x14068100,
-0x418a108a, 0x06ad0128, 0x4ad04ab4, 0xa5002b60, 0xd00ab402, 0x05ab402a,
-0x0ab416ad, 0x43402ad0, 0x00000e80, 0x00000000, 0xa425a818, 0x8274009d,
-0x264208d0, 0x64409110, 0x42491102, 0x00bd002c, 0x0bd802f4, 0xbd212f6b,
-0xd012f600, 0x002f440b, 0x8af410bd, 0x63404bd0, 0x00000620, 0x00000000,
-0x0027a005, 0x127cb09f, 0x26500970, 0x5c009300, 0xc1293402, 0x1b9f02e4,
-0x39f06e7c, 0x9f0127c4, 0xd08e7c03, 0x0267c899, 0x027c039d, 0x17c049f0,
-0x00000e20, 0x00000000, 0x00258014, 0x027c459f, 0x21c099f0, 0x6c08df00,
-0xc009f020, 0x009f0067, 0x99f0027c, 0x9f0067c8, 0xf0027c02, 0x0827c309,
-0x167c229f, 0x53c009f0, 0x00000600, 0x00000000, 0x00850014, 0x007c801f,
-0x07c80172, 0x6d001300, 0xd003f200, 0x0037000c, 0x233000cc, 0x33048fc0,
-0xf000fc00, 0x200fc003, 0x08fc023f, 0x53c02330, 0x00000420, 0x00000000,
-0x001ca014, 0x41dc007d, 0x1f400510, 0x44405106, 0x4005d084, 0x005c0814,
-0x05148145, 0x55401748, 0xd1817400, 0x08170605, 0x0174605d, 0x53400714,
-0x00000200, 0x00000000, 0x01328014, 0x032408cd, 0xf3400c50, 0x44894100,
-0x400dd007, 0x08c50230, 0x0c900324, 0xc1003364, 0xd023341a, 0x0233408c,
-0x233400cd, 0x53400c10, 0x00000a00, 0x00000000, 0x00388805, 0x049440ad,
-0x3f404e10, 0x84016140, 0x4002d073, 0x212d0008, 0x029004a4, 0x21004b62,
-0x9000b400, 0x000b4002, 0x84b4002d, 0x17400210, 0x00000200, 0x00000000,
-0x00780015, 0x073c016f, 0x5bc01e7a, 0x8c894300, 0xc013f207, 0x01f70058,
-0x16b005ec, 0xe3006fc0, 0xf007bc01, 0x007bc01e, 0x05bc016f, 0x57c01632,
-0x00000040, 0x00000000, 0x2025a810, 0x025c001f, 0x17e16de0, 0x5c005f00,
-0xc80df003, 0x801f2027, 0x0970025c, 0x1f2017c8, 0xf2007c80, 0x0007c801,
-0x027c809f, 0x43c009f0, 0x00000660, 0x00000000, 0x027fa000, 0x06ca49ff,
-0x7fc11ff0, 0xbc017f00, 0xc01f3007, 0x09bb426c, 0x9ff017fc, 0x3f025fc0,
-0xf026fc09, 0x026fc093, 0x36cd09ff, 0x03c01f34, 0x00000e00, 0x00000000,
-0x00198015, 0x188620ed, 0x1bc00ed8, 0xb4802d02, 0x40031003, 0x0c610018,
-0x829000b4, 0xed232a40, 0xd101b408, 0x001b440e, 0x31ec002d, 0x574802b0,
-0x00000620, 0x00000000, 0x08390200, 0xc284002d, 0x2b400ed0, 0xf4086d00,
-0x41021003, 0x00a10008, 0x86d811b4, 0x2d000960, 0x5002b408, 0x042b4102,
-0x3096006d, 0x034016d0, 0x00000400, 0x00000000, 0x24032804, 0x0604210d,
-0x01402cd0, 0x34000c00, 0x402c1003, 0x004500f0, 0xb8902234, 0xcd023260,
-0xd00d3403, 0x00d3403c, 0x0f160d8d, 0x13403850, 0x00000c20, 0x00000000,
-0x2805a815, 0x054405dd, 0x27400fd0, 0x7c055c00, 0xd09d3d17, 0x81530274,
-0x19f02a7c, 0xdf02f5c0, 0xf0497410, 0x0057401d, 0x4f54009f, 0x57c0a9d0,
-0x00000620, 0x00000000, 0x22330001, 0x017c020d, 0x27c10df2, 0x7c005f10,
-0xc801f003, 0x08930207, 0x05c0017c, 0x1f200748, 0xf01a7404, 0x28a7c001,
-0x0064805f, 0x07808580, 0x00000c00, 0x00000000, 0x020f0880, 0x05ec20fb,
-0x0cc40e72, 0xcc003300, 0xc003f003, 0x106f101c, 0x03f004cc, 0xff002c43,
-0x3281fc00, 0x041cc30f, 0x41fc0033, 0x03c213f0, 0x00000c22, 0x00000000,
-0x00a62081, 0x0f450411, 0x04400d10, 0x4d091110, 0x500dd003, 0x129d2024,
-0x9dd20745, 0x1d0014d0, 0x16124580, 0x4124d001, 0x025c48d5, 0x07401dd1,
-0x00000802, 0x00000000, 0x0084a001, 0x100400d1, 0x30400d50, 0x44804102,
-0x400cd293, 0x001d0024, 0x08d01244, 0x0d801540, 0x10000400, 0x00024000,
-0x02740091, 0x074049d0, 0x00000200, 0x00000000, 0x40102010, 0x01040041,
-0x10500c10, 0x04000100, 0x4000d003, 0x20cd8810, 0x04d00104, 0xcd902140,
-0x18030420, 0x0032420c, 0x81042041, 0x43400498, 0x00000080, 0x00000000,
-0x0006a000, 0x004c2083, 0x24c00f70, 0x44001340, 0xc001f003, 0x001f0000,
-0x01f00044, 0x1f000540, 0x32005c00, 0x0006e001, 0x007c0003, 0x03c001f0,
-0x00000ac0, 0x00000000, 0x800f9805, 0x03dc803f, 0x0fc00ff8, 0xdc003f00,
-0x400ff103, 0x00fc003f, 0x0ff003fc, 0xff003cc2, 0xf003de00, 0x003dc00f,
-0x03dc00ff, 0x17c00ff1, 0x00000e40, 0x00000000, 0x000fa003, 0x00fc083f,
-0x8fe003f0, 0xed801300, 0xc003f000, 0x003f000c, 0x01f0007c, 0xff203f80,
-0xf100f400, 0x006cc057, 0x03cc01bb, 0x0cc403f3, 0x00000e00, 0x00000000,
-0x00370801, 0x037400dd, 0x37410df0, 0x4400d500, 0x080dd003, 0x20cd0030,
-0x0dd00374, 0xdd003640, 0xd0002400, 0x20154005, 0x03540a55, 0x054005d0,
-0x00000c20, 0x00000000, 0x0013a011, 0x0234000d, 0x134048d0, 0x24000501,
-0x5200d003, 0x004d0012, 0x04d20034, 0xcd303360, 0x92003420, 0x02004284,
-0x0304808d, 0x446001d8, 0x00000e80, 0x00000000, 0x0035a803, 0x017400dd,
-0x27400550, 0x4402d518, 0x422cd000, 0x009d0826, 0x09908b64, 0xdd803641,
-0xd2a06480, 0x00354005, 0x83500055, 0x0d4101da, 0x00000620, 0x00000000,
-0x0077a802, 0x017c00df, 0x274605d0, 0x6c005718, 0xc401f800, 0x041f0026,
-0x01f0017c, 0xdf003740, 0xb3407c89, 0x008cc047, 0x024c00bf, 0x08802cf0,
-0x00000e20, 0x00000000, 0x00dd8007, 0x02fc003f, 0x1fc80bf0, 0xfc20bf00,
-0xc02ff803, 0x00ff101d, 0x0ff082fc, 0xff143fc4, 0xf000ec31, 0x003bc907,
-0x02fc204f, 0x1f810ff0, 0x00000600, 0x00000000, 0x00350802, 0x037c00db,
-0x36c04df0, 0x7c025b20, 0xc0e1f003, 0x12530437, 0xe5f0694c, 0xdf1036c0,
-0x31097c00, 0x0307c084, 0x034d0c97, 0x0bc00df0, 0x00000420, 0x00000000,
-0x0014a013, 0x80742d11, 0x874021d0, 0x74009c08, 0x401dd000, 0x82914047,
-0x29d00a45, 0xdd00fd52, 0x14057660, 0x00b74025, 0x43440251, 0x4dc23d71,
-0x00000200, 0x00000000, 0x0212a007, 0x1c240009, 0x076000d0, 0x34009d01,
-0x402cd000, 0x4a812083, 0x28d00604, 0xcd023140, 0x111434c0, 0x8043441c,
-0x1f340181, 0x1f4018d0, 0x00000a00, 0x00000000, 0x20788004, 0x47b401e1,
-0x7b405ed0, 0xb4016d04, 0x4212d01f, 0x0d61007b, 0x56d02584, 0xed107940,
-0x1034b409, 0x0833481e, 0x87a44161, 0x114c1e50, 0x00000200, 0x00000000,
-0x01141012, 0x023c000b, 0x53c058f0, 0x3c018f03, 0xc0dcf017, 0x0dc30653,
-0xddf0160c, 0xcd0371c0, 0x30573419, 0x0203c00c, 0x033c0083, 0x4bc300f8,
-0x00000040, 0x00000000, 0x403db802, 0x01f400ff, 0x27c087f0, 0xfc005f10,
-0xc003f000, 0x001e1027, 0x93f801fc, 0xff053cc8, 0xf123fc40, 0x013fc08f,
-0x23dc017f, 0x0be403f0, 0x00000660, 0x00000000, 0x1037a015, 0x017c80d3,
-0x27c005f0, 0x5c00d700, 0xc00df000, 0x019c0027, 0x0934034d, 0xd3407784,
-0x32064f21, 0x6044d21d, 0x86490093, 0x54901d3c, 0x00000e08, 0x00000000,
-0x00118812, 0x02b40021, 0x1b420ad0, 0xac003d08, 0x0402d283, 0x207d201b,
-0x061000c4, 0xe10139c0, 0x10828600, 0x003c400f, 0x02c40071, 0x48600f38,
-0x00000620, 0x00000000, 0x047d0003, 0x07b401e1, 0x7b403ed0, 0xb611ed00,
-0x401ed007, 0x01e9007b, 0x1e910784, 0xe1007b48, 0x1207c411, 0x0048401e,
-0x079401ad, 0x0c4c1e10, 0x00000400, 0x00000000, 0x04d72812, 0x24341201,
-0x874001d0, 0x24001d01, 0x4001d800, 0x200d0003, 0x00902004, 0x81003140,
-0x102f0601, 0x09b0420c, 0x27040049, 0x48408c12, 0x00000c20, 0x00000000,
-0x4095a817, 0x057c1053, 0x97c015f0, 0x7c005700, 0xc005fa01, 0x605b1017,
-0x05b0854c, 0x530017c4, 0x0001cc00, 0x00944005, 0x015c207b, 0x5c403730,
-0x00000620, 0x00000000, 0x000f0012, 0x00fc403f, 0x0fc403f1, 0xfc003f00,
-0xc023f808, 0x003f000f, 0x237108fc, 0x1f108740, 0xf5486c80, 0x100fcc21,
-0x08604227, 0x4bc10170, 0x00000c00, 0x00000000, 0x02670810, 0x027c009b,
-0x24c019f0, 0x6c209b00, 0xc219f00e, 0x039f04e4, 0x1930267c, 0x9f00e70a,
-0xf0027c22, 0x0027c259, 0x164c059f, 0x42c009f0, 0x00000c20, 0x00000000,
-0x00262001, 0x02741091, 0xa44aa9d8, 0x44009300, 0x5479d04a, 0x039f00e4,
-0x09140274, 0x9d10e64a, 0x70367c00, 0x00e74049, 0x1244849d, 0x05c039d0,
-0x00000800, 0x00000000, 0x00248018, 0x12f400b9, 0xac402bd3, 0xe640b100,
-0x404bd002, 0x22bd042c, 0x8b1042b4, 0x9d102762, 0xd0827480, 0xb1bf4809,
-0x024400bd, 0x624069d0, 0x00000200, 0x00000000, 0x02282010, 0x02b408a1,
-0x28608ad0, 0x8428a102, 0x422ad002, 0x02a588a8, 0x2a120ab4, 0xcd00b248,
-0x500a1422, 0x00ab4028, 0x8a0402ad, 0x434028d0, 0x00000080, 0x00000000,
-0x0086b01d, 0x017c221b, 0x84d021d0, 0x6c021300, 0x4201f000, 0x001d0804,
-0x0730007c, 0x0f000380, 0xe0807480, 0x2007c001, 0x004d003f, 0x76e001f2,
-0x00000ac0, 0x00000000, 0x012fb819, 0x027c049f, 0x27c049f0, 0x7c049f41,
-0xc409f002, 0x009f2027, 0x09e0027c, 0xbf00a7c0, 0x6082bc20, 0x00a7c029,
-0x82fc829f, 0x65c00bf0, 0x00000e60, 0x00000000, 0x002fa018, 0x02bc02b3,
-0x2cc00b70, 0xec089310, 0xc0093002, 0x809608a7, 0x29c0027c, 0x8f11a748,
-0xf0823c00, 0x00e4c499, 0x024c0793, 0x638029f0, 0x00000e00, 0x00000000,
-0x0107081c, 0x00740011, 0x00400170, 0x44001500, 0xc1411001, 0x40100105,
-0x41920074, 0x17000740, 0x92117640, 0x03044001, 0x50440411, 0x720047d2,
-0x00000c20, 0x00000000, 0x0423a010, 0x03348081, 0x205008d1, 0x25048100,
-0x440a1102, 0x14a1692b, 0x4ad052b4, 0xad222b64, 0x9042b490, 0x0128406a,
-0x02a4ccad, 0x43404ad0, 0x00000e80, 0x00000000, 0x4025a818, 0x82740091,
-0x244008d0, 0x46009500, 0x48091c02, 0x04f1002f, 0x0b9102f4, 0xb5003f02,
-0x9003f408, 0x082c400b, 0x12f440f9, 0x62448bd0, 0x00000620, 0x00000000,
-0x0027a805, 0x427c0093, 0x64c109f0, 0x2c809328, 0xc0093006, 0x00930067,
-0x19f0827c, 0x9f0827c0, 0xb0067400, 0x0424d009, 0x026c009b, 0x178009f0,
-0x00000e20, 0x00000000, 0x00e58014, 0x027c009f, 0x27c00970, 0x7c009f02,
-0xc009f212, 0x409f1125, 0x89b0027c, 0x970027c0, 0xb0ca7c40, 0x0027c009,
-0x424c0097, 0x52c009f0, 0x00000600, 0x00000000, 0x00050814, 0x005c5013,
-0x04c001b0, 0x6c001300, 0xc003f008, 0x843f100f, 0x43f000fc, 0x33000fc4,
-0xa180cc00, 0x248bc0c2, 0x00c00823, 0x53c003f2, 0x00000420, 0x00000000,
-0x0014a014, 0x21c41071, 0x1c4c0711, 0xc4005100, 0x4005d04d, 0xc25d0057,
-0x05d00974, 0x51509740, 0x50095413, 0x00d5c005, 0x09440b51, 0x534217d0,
-0x00000200, 0x00000000, 0x0036a014, 0x8b1483c1, 0x74500c90, 0x0480d100,
-0x420ed04f, 0x0be5013f, 0x3ed063b4, 0xe1863b22, 0x90878410, 0x403b402e,
-0x079501e1, 0x53400ed0, 0x00000a00, 0x00000000, 0x40288005, 0x078401a1,
-0x08440610, 0x8400e144, 0x420ed003, 0x00ed043b, 0x2ed003b4, 0xf1207b44,
-0x000fd481, 0x0479400e, 0x0b9401e1, 0x17410ed0, 0x00000200, 0x00000000,
-0x006c1015, 0x079c0173, 0x58d013b0, 0x8d05f300, 0xc01ef004, 0xe1ef007b,
-0x1ef907b4, 0xe3007fc0, 0xb1078e81, 0x1033c81e, 0x879c00c3, 0x57c01ef2,
-0x00000040, 0x00000000, 0x0025b810, 0x0174001f, 0x27c009f0, 0x5c60df08,
-0x4401f000, 0x001f0007, 0x01f8007c, 0x5f000780, 0xe0007c00, 0x0807c001,
-0x806c201d, 0x43c001b8, 0x00000660, 0x00000000, 0x407fa000, 0x05fc01f3,
-0x6fc01df0, 0x4c59ff00, 0xc09ff027, 0x29f3227f, 0x1df1a77c, 0x97107704,
-0xb6277c09, 0x407cd21f, 0x07cd01f3, 0x00d01f34, 0x00000e00, 0x00000000,
-0x022d8015, 0x21bc0021, 0x538054d0, 0x2c81fd01, 0x40dcd105, 0x0dc727f2,
-0x1ed02fa6, 0x81017341, 0xb0177c19, 0x003ac00e, 0x23ac00e3, 0x54400eb0,
-0x00000620, 0x00000000, 0x00290800, 0x03b400e1, 0x0b40c2d0, 0x8404ed02,
-0x424ed853, 0x24e5823b, 0x0ed933b4, 0xa5013b44, 0x1023b404, 0x0038400e,
-0x038400e9, 0x00401e10, 0x00000400, 0x00000000, 0x00632804, 0x19101101,
-0x3140a8d0, 0x2504dd10, 0x4020d001, 0x03050083, 0x10d22c24, 0x11000340,
-0x10001401, 0x02c00000, 0x00000b01, 0x10401010, 0x00000c20, 0x00000000,
-0x01f5a815, 0x033001d3, 0xb74a29f0, 0x0c83ff00, 0xc02df103, 0x53d70277,
-0xbdf0a37c, 0xd71837c0, 0x10033401, 0x00b4020d, 0x034002da, 0x54c04c10,
-0x00000620, 0x00000000, 0x01270001, 0x077c08df, 0x07c441f0, 0x7d08df06,
-0xc1a5f213, 0x22df00b6, 0x2df0836c, 0xdf8037e0, 0xf00b7c42, 0x01b7c02d,
-0x0b7c44df, 0x07c00df0, 0x00000c00, 0x00000000, 0x802f0880, 0x03cd0273,
-0x1cc04730, 0xfc80f320, 0xc05bb200, 0x11ff00bf, 0x0ff017fc, 0xf310b242,
-0x300fcd40, 0x083bc05f, 0x07cc01e3, 0x00c00f30, 0x00000c22, 0x00000000,
-0x20222081, 0x01440155, 0x24400d50, 0x4400db00, 0x487d3000, 0x0a1d2047,
-0x11d00874, 0x55200450, 0x50004410, 0x03c74471, 0x40144211, 0x06c29151,
-0x00000802, 0x00000000, 0x00348001, 0x05464081, 0x20400810, 0x7400d108,
-0x400d9012, 0x001d8007, 0xa0d00074, 0x11000542, 0x18004400, 0x00074001,
-0x10440411, 0x04400911, 0x00000200, 0x00000000, 0x00242010, 0x01060005,
-0x10506050, 0x0480c901, 0x49041110, 0x040d1803, 0x00d02034, 0x05030140,
-0x50584464, 0x40024000, 0x00450001, 0x42400950, 0x00000080, 0x00000000,
-0x0026a000, 0x034e0091, 0xc4c07530, 0x7c07d300, 0xc0f9b0ae, 0x091f03c7,
-0x31f00c7c, 0x130047c0, 0x301c440b, 0x1003c000, 0x800c0003, 0x00c00830,
-0x00000ac0, 0x00000000, 0x002fa805, 0x00fc003f, 0xf7c89ff0, 0xfc97dd05,
-0xc01d721c, 0x0ddf2277, 0x9ff137fc, 0xbf08fec1, 0xf987fc07, 0x003fe40f,
-0x03fe00ff, 0x17c007f8, 0x00000e60, 0x00000000, 0x003fa003, 0x03cc08f3,
-0x3f440f70, 0xcc00ff00, 0xc00ff183, 0xc0ff303f, 0x0fb103c4, 0xf6183c80,
-0x3003fc40, 0x003cc00f, 0x03bcc0f3, 0x0ed40f81, 0x00000e00, 0x00000000,
-0x10070801, 0x00450411, 0x070001b0, 0x54001d00, 0xc001d000, 0x001d0005,
-0x00500054, 0x15080548, 0x12007400, 0x00044801, 0x03f40011, 0x04410f50,
-0x00000c20, 0x00000000, 0x40210015, 0x001080c1, 0x32480810, 0x0480cd20,
-0x0008d203, 0x80cd2023, 0x0c520314, 0xc1202148, 0x10033080, 0x0030400c,
-0x033400c9, 0x45404c50, 0x00000e80, 0x00000000, 0x2017a807, 0x83540011,
-0x07600510, 0x54041d00, 0x40059000, 0x001d0014, 0x41500054, 0x15101540,
-0x14106400, 0x40045001, 0x83742019, 0x0c400d50, 0x00000620, 0x00000000,
-0x001fa882, 0x03dc82b3, 0x1ec00714, 0xcc007f08, 0xc007e000, 0x003f001f,
-0x077000dc, 0x37001dc0, 0x3001fc40, 0x025cc097, 0x037c897b, 0x0bc00cb4,
-0x00000e20, 0x00000000, 0x00298007, 0x006c006f, 0xafc00bb3, 0xfc41bf00,
-0xc00bf003, 0x00ff102f, 0x1af003fc, 0xff002fc4, 0xf006fc00, 0x002fc009,
-0x03fc00b7, 0x1fc00fb1, 0x00000600, 0x00000000, 0x00050802, 0x101c4593,
-0x17c04130, 0x4c044301, 0xc041f010, 0x04030104, 0x45b0100c, 0x131100c0,
-0x30114c04, 0x0214c045, 0x233c0c5f, 0x0bc40db0, 0x00000420, 0x00000000,
-0x0174a013, 0x07440051, 0x67401d90, 0x44039100, 0xc01dd007, 0x01d10076,
-0x19100744, 0xd0007440, 0x10064401, 0x08e44019, 0x03f4209d, 0x4f400fa0,
-0x00000200, 0x00000000, 0x0072a007, 0x0b240041, 0xa2402c90, 0x34028500,
-0x402cd08b, 0x02c900b0, 0x28100b04, 0xc800b240, 0x100a4402, 0x01e44029,
-0x4334038d, 0x1e424c10, 0x00000a00, 0x00000000, 0x00408004, 0x24a401a1,
-0x5b401294, 0xa4016140, 0x4210d004, 0x0929004a, 0x161c0484, 0x29024a40,
-0x10010501, 0x00584006, 0x07a4016d, 0x13401e90, 0x00000200, 0x00000000,
-0x40201012, 0x40348453, 0x26c14834, 0x3c109704, 0xc108f043, 0x18db0424,
-0x0830434c, 0xd90626c1, 0x30720c10, 0x0020c188, 0x033c008f, 0x4bc04c30,
-0x00000040, 0x00000000, 0x001db802, 0x83dd00bf, 0x1fc00750, 0xdd807f00,
-0xc807f000, 0x2837421f, 0x057000fd, 0x174215d0, 0xf0117c08, 0x001fc047,
-0x03fc417e, 0x0bc12ff0, 0x00000660, 0x00000000, 0x40512810, 0x034d0013,
-0x44c00530, 0x4c001300, 0xc0053800, 0x00100014, 0x0130004c, 0x130015d0,
-0x32006c00, 0x2844c811, 0x0b740013, 0x56801df0, 0x00000e00, 0x00000000,
-0x0029091a, 0x008400c1, 0x38480a11, 0x8440e100, 0x480a0003, 0x00e3002a,
-0x0e120384, 0xe1202842, 0x10038480, 0x0038400e, 0x33b400e1, 0x48404fd0,
-0x00000600, 0x00000000, 0x00490000, 0x04a4112d, 0x4a401290, 0xa4612900,
-0x4012d204, 0xa1298049, 0x109084a4, 0x2d004a40, 0x10049401, 0x00484012,
-0xb7b4a121, 0x0e405ed0, 0x00000400, 0x00000000, 0x00b12812, 0x030401cd,
-0xb2406d90, 0x6406c901, 0x406dd01f, 0x07c101b1, 0x6d901f24, 0xc104b240,
-0x101b1407, 0x01b0406c, 0x033406c1, 0x48400cd0, 0x00000c20, 0x00000000,
-0x00158017, 0x016d005f, 0x96e025b8, 0x64425b00, 0xc025f00d, 0x035b0095,
-0x25b00d6c, 0x5f009640, 0x30095c43, 0x0094c025, 0x017c0273, 0x5ec005d0,
-0x00000620, 0x00000000, 0x200f0812, 0x80dc0233, 0x8dd42376, 0xdd023750,
-0x50232420, 0x083f600e, 0x037420dd, 0x3c608cc0, 0xf400e10a, 0x400fd003,
-0x087c003f, 0x4bc001d0, 0x00000c00, 0x00000000, 0x06270810, 0x020c058f,
-0x64c29930, 0x4e008f00, 0xc0093002, 0x40870860, 0x0930020c, 0x832020c0,
-0x31060c00, 0x0027c019, 0x063c009f, 0x43c00930, 0x00000c20, 0x00000000,
-0x00260001, 0x0244049d, 0x64e0293c, 0x6e009f02, 0xc129b002, 0x009b0266,
-0x09b0026c, 0x9b04a4c0, 0xb0266c12, 0x00274099, 0x2274009d, 0x07400910,
-0x00000800, 0x00000000, 0x00248018, 0x82c600fd, 0x2e500b90, 0xc450bd20,
-0x400b1002, 0x00b5002c, 0x0b1002c4, 0xb1002c40, 0x9002c400, 0x002f400b,
-0x027480b9, 0x63400910, 0x00000200, 0x00000000, 0x00282010, 0x0a8508ad,
-0xa8402e18, 0xa422a500, 0x402a100a, 0x02a100a8, 0x2a900aa4, 0xa920aa44,
-0x900aa402, 0x00ab482a, 0x023480ad, 0x43482814, 0x000000a0, 0x00000000,
-0x0006b01d, 0x0004021d, 0x12400090, 0x04000d00, 0x40001000, 0x00050000,
-0x0130000c, 0x030000c0, 0xb0000c00, 0x0003c000, 0x017c003f, 0x77c20130,
-0x00000a80, 0x00000000, 0x00a79911, 0x0a7c269f, 0xa7c029f0, 0x7c029f00,
-0xd029f40a, 0x029f10a7, 0x29f00a78, 0x9f10a5d4, 0xf00a7e02, 0x00a7c029,
-0x0a7c029f, 0x67c029f8, 0x00000e20, 0x00000000, 0x016fa018, 0x1e4c0db7,
-0x64c05930, 0x7c079301, 0xc059301e, 0x05930167, 0x79f0164c, 0x9f8167c0,
-0xf0164c05, 0x0167c059, 0x02cc0593, 0x60d06b78, 0x00000e00, 0x00000000,
-0x1287081c, 0x28400e1d, 0x8540a100, 0x5c0a1502, 0x40a15028, 0x0a152287,
-0xa1d02844, 0x1d028448, 0xd0005e0a, 0x00074001, 0x08440031, 0x704041d8,
-0x00000c20, 0x00000000, 0x0023a012, 0x12a5048d, 0x28410a14, 0xb404a144,
-0x410a1012, 0x10a5042b, 0x4a504295, 0xad042a40, 0x904a9410, 0x04ab412a,
-0x0a0502a1, 0x40406850, 0x00000e80, 0x00000000, 0x0025a818, 0x0a44009d,
-0x2d440b18, 0xf400b500, 0x404b5002, 0x00b5012e, 0x0bd202d4, 0xbd012c40,
-0xd002d400, 0x002f400b, 0x824000b1, 0x604009d8, 0x00000620, 0x00000000,
-0x00278805, 0x026c809f, 0x24c40914, 0x7c009300, 0x40093002, 0x00970027,
-0x0970025c, 0x9d0026c0, 0xb0025c00, 0x0027c009, 0x024c0093, 0x14c00970,
-0x00000e20, 0x00000000, 0x02658016, 0x167c808f, 0x23c058f2, 0x58009f00,
-0xc009f002, 0x009f0027, 0x09f0026c, 0x9f0026c1, 0xf0027c00, 0x6027c009,
-0x427c008f, 0x53c008f0, 0x00000600, 0x00000000, 0x00050814, 0x088c0013,
-0x0cc00338, 0x8c083340, 0xc0033000, 0x00230008, 0x023010fc, 0x23200fc8,
-0x2380ec00, 0x0008c203, 0x007c003f, 0x50c601f0, 0x00000420, 0x00000000,
-0x01148014, 0x11440071, 0x16c00530, 0x44015100, 0x40051001, 0x00510014,
-0x05100174, 0x51001740, 0x10015400, 0x00144005, 0x11e4005d, 0x504027d0,
-0x00000200, 0x00000000, 0xc0622014, 0x4f0400c1, 0x30500c90, 0x0500c120,
-0x500c144b, 0x80c954b0, 0x0c1e0334, 0xc1403340, 0x174b0580, 0x04b0512c,
-0x073412c9, 0x504138d0, 0x00000a00, 0x00000000, 0x08620005, 0x00848021,
-0x0a400010, 0x86012100, 0x40121240, 0x02291008, 0x02180434, 0x21104b40,
-0x11048400, 0x00084012, 0x03a4002d, 0x144022d0, 0x00000200, 0x00000000,
-0x006a1015, 0x07cd01c3, 0x40c012b6, 0x0c014320, 0xc2143007, 0x01eb0060,
-0x1e3007bc, 0x430053c0, 0x30860e81, 0x0078ca18, 0x87bc01ef, 0x54d01bf1,
-0x00000040, 0x00000000, 0x0025b810, 0x007400dd, 0x37400df1, 0x7c609f08,
-0xc009f080, 0x20171015, 0x01f0807c, 0x9f0827c0, 0xf0015c00, 0x0007c805,
-0x807c001f, 0x43c001f0, 0x00000660, 0x00000000, 0x006fa000, 0x04fc01f3,
-0x7cc09f30, 0xfe09bf00, 0xc01f3004, 0x49bf005c, 0x17f005fc, 0xff007fc0,
-0xf005f801, 0x025f0417, 0x07fc017f, 0x00c017f0, 0x00000e00, 0x00000000,
-0x06298815, 0x03fc0020, 0x0905c210, 0xb40c6d02, 0xc0825213, 0x486d222b,
-0x8ad062b0, 0x2d220b40, 0xd022b408, 0x0a2a448a, 0x23b480af, 0x56d006d2,
-0x00000620, 0x00000000, 0x00290000, 0x00b400e9, 0x08000010, 0xa6402d00,
-0x40065000, 0x00ad0008, 0x06d00190, 0x6d001b40, 0xd000b400, 0x181b4002,
-0x03b4016d, 0x004004d0, 0x00000400, 0x00000000, 0x50e32804, 0x03540cc9,
-0xb1443c10, 0x3403cd82, 0x4038510f, 0x014d02f3, 0x28d00e24, 0x8d02e340,
-0xc0af340b, 0x026208bc, 0x00308a85, 0x124204d0, 0x00000c20, 0x00000000,
-0x02e7a815, 0x177422db, 0x34401d34, 0x6413df00, 0xc139704f, 0x115d00b4,
-0xf9f0067c, 0x9f00a7c0, 0xd00b7402, 0x00a7002d, 0x0330009d, 0x54c00dd0,
-0x00000620, 0x00000000, 0x00218001, 0x407c0217, 0x03c100f0, 0x7c041f14,
-0xc045e010, 0x129f0105, 0x04f0413c, 0x5f0117c0, 0xf0107c04, 0x0116c041,
-0x037c104f, 0x05c005f0, 0x00000c00, 0x00000000, 0x00e50880, 0x03ec0133,
-0x0cc00330, 0x0c006300, 0xc0003003, 0x00630028, 0x0b300ecc, 0x2380c8c0,
-0x30028c03, 0x0028c00a, 0x03cc00b3, 0x03c00f30, 0x00000c22, 0x00000000,
-0x00260081, 0x00440b14, 0x36c20d40, 0x44009100, 0x420d0000, 0x12990014,
-0x05100564, 0xd1007442, 0x10814421, 0x08144205, 0x60448051, 0x074015f2,
-0x00000802, 0x00000000, 0x0024a001, 0x006482c0, 0x34400d10, 0x44209100,
-0x40891000, 0x001d0014, 0x81100064, 0x91002440, 0x10016400, 0x02044005,
-0x00640811, 0x07404510, 0x00000200, 0x00000000, 0x80202010, 0x03146001,
-0x02500014, 0x04604140, 0x40041003, 0x00c94020, 0x0c140324, 0x41401040,
-0x14020500, 0x40305008, 0x000500c1, 0x43400490, 0x00000080, 0x00000000,
-0x4026b000, 0x006c8013, 0x04c00134, 0x4d001300, 0xd0013400, 0x00170004,
-0x0130004d, 0x110004d0, 0x38806c00, 0x0004e201, 0x004e8013, 0x03c40530,
-0x00000ac0, 0x00000000, 0x003fb805, 0x03ee003e, 0x3fc00ff0, 0xfc00ff00,
-0xc00fc003, 0x00f7003f, 0x0ff003dc, 0xfc003fc0, 0xf803fe00, 0x003fe00f,
-0x03fe00ff, 0x17c007f8, 0x00000e60, 0x00000000, 0x050da003, 0x60bc20ff,
-0x36c103b0, 0xfc881307, 0xc801f273, 0x18d30337, 0x0f700bcc, 0xf3023fc0,
-0x3003c400, 0x003dc00f, 0x02cc00f3, 0x0c400bf0, 0x00000e00, 0x00000000,
-0x00870801, 0x1b7400c7, 0xbf402110, 0x74041108, 0x4005d11b, 0x02f52307,
-0x4f100bc4, 0x11003f40, 0xf0034000, 0x02bc420f, 0x83450055, 0x054009d0,
-0x00000c20, 0x00000000, 0x00032011, 0x003414cd, 0x31614012, 0x34040500,
-0x40005013, 0x00c10103, 0x0c949b14, 0x11413349, 0x91030500, 0x0030400c,
-0x03260041, 0x465608d0, 0x00000e80, 0x00000000, 0x8085a803, 0x537400d5,
-0x33606190, 0x760a9100, 0x4805d807, 0x00c11037, 0x0d908347, 0x91003744,
-0xd1034674, 0x0034600d, 0x136400d5, 0x0f4009d9, 0x00000620, 0x00000000,
-0x00e78802, 0x007c40df, 0x36c23db4, 0x7c031510, 0x81b97103, 0x00d14037,
-0x0df20346, 0x030037c0, 0xb0034801, 0x0030d40c, 0x076c1a93, 0x02c009f0,
-0x00000e20, 0x00000000, 0x013d8007, 0x06bc00ff, 0x36401f72, 0x6c013f40,
-0xc80ff083, 0x00ff000f, 0x0f7003bc, 0x7f0037c0, 0xb003ae81, 0x003ec20f,
-0x03dc003f, 0x1dc008f0, 0x00000602, 0x00000000, 0x00250802, 0x104c00d7,
-0x35c12db0, 0x5d005300, 0xc089b103, 0x00da0007, 0x0db0037c, 0xd74032c0,
-0x34037c02, 0x0234c00d, 0x034c008f, 0x08d019f0, 0x00000420, 0x00000000,
-0x0034a013, 0x0a440add, 0x3dc03d10, 0x4400d100, 0x401d1903, 0x00fd0037,
-0x0f1203f4, 0xdb003c42, 0x1003f400, 0x007c19af, 0x3f4481dd, 0x4c400bd0,
-0x00000200, 0x00000000, 0x8012a007, 0x000409c1, 0x33608098, 0x2600c100,
-0x42701603, 0x80cd1035, 0x0cd08324, 0x05003240, 0x18033625, 0x0832180c,
-0x0f2401cd, 0x0c4008d0, 0x00000a00, 0x00000000, 0x80488004, 0x05a501ed,
-0x79405a10, 0xa401e100, 0x401a5807, 0x41ed034b, 0xdc002734, 0xed527840,
-0x1137b415, 0x007a009c, 0x07a401cd, 0x08409ad0, 0x00000200, 0x00000000,
-0x01301012, 0x000c00c3, 0x71c614b0, 0x2c251340, 0xc0501007, 0x45cf0843,
-0x5ce1173c, 0x470372c0, 0x32177c0d, 0x0032d00c, 0x232c104f, 0x58d008f0,
-0x00000040, 0x00000000, 0x002db802, 0x01dc80fe, 0x37e00db2, 0x5c08bf02,
-0xc0893023, 0x08df0037, 0x0fd023fc, 0xdb0a37c0, 0xf0037c00, 0x00bdc02f,
-0x03dc02fd, 0x0bc00bf0, 0x00000660, 0x00000000, 0x8017a015, 0x037c20df,
-0xb7c001f0, 0x4c01cb01, 0xe0057003, 0x40d22034, 0x2d00234c, 0x9305b4c3,
-0x74037800, 0x0334c04d, 0x4b4c00db, 0x54c099f0, 0x00000e00, 0x00000000,
-0x00198812, 0x039c80ed, 0x39c00a70, 0xce80ed04, 0x040e100b, 0x0ce00808,
-0x2e102384, 0xe1003fc0, 0x500bcc00, 0x0132c04c, 0x038500f1, 0x59400ad0,
-0x00000620, 0x00000000, 0x00790003, 0x479441ed, 0x796016d8, 0x84017502,
-0x60165007, 0x09c91040, 0x5c101724, 0xe10a7844, 0x1017b041, 0x007a409e,
-0x0f8541a9, 0x0c4048d0, 0x00000402, 0x00000000, 0x00b32812, 0x075400dd,
-0x3148fc5a, 0x4408cd00, 0x603c1003, 0x40c9c034, 0x0c100324, 0xc1203740,
-0x51030413, 0x0032420c, 0x030400d9, 0x494008d1, 0x00000c20, 0x00000000,
-0x009da817, 0x09dc005f, 0x15c007d0, 0xcc017e08, 0xc0467000, 0x005b001c,
-0x053001ec, 0x62001462, 0x10017c07, 0x0016c005, 0x054c0c5b, 0x5ce204f0,
-0x00000620, 0x00000000, 0x10070012, 0x405c001f, 0x05c00170, 0x5c021f00,
-0xc001f800, 0x00170007, 0x01f0801c, 0x1f0006e8, 0xf0006c00, 0x0007c001,
-0x087d0217, 0x4bc001f0, 0x00000c00, 0x00000000, 0x14230810, 0x024c009f,
-0x25c04970, 0x6c219f00, 0x0109b004, 0x009300a5, 0x08700244, 0x9b1024c0,
-0x30026c08, 0x0220c008, 0x074800d3, 0x40c009f0, 0x00000c20, 0x00000000,
-0x00262201, 0x0a450091, 0x24482910, 0x74039d00, 0xc0495026, 0x80915066,
-0x09100244, 0x91482540, 0x14025403, 0x20645009, 0x1a441a9b, 0x044019d0,
-0x00000800, 0x00000000, 0x0024a018, 0x0a448191, 0x24402810, 0x54049d10,
-0x40091002, 0x00810424, 0x09500254, 0x91002440, 0x10020402, 0x40244089,
-0x12550091, 0x604419d2, 0x00000200, 0x00000000, 0x40202010, 0x22040881,
-0x20508814, 0x34088982, 0x40095022, 0x28810222, 0x88122215, 0x81022140,
-0x100a1400, 0x2320600c, 0x02140889, 0x404088d0, 0x00000080, 0x00000000,
-0x2506b01d, 0x58442217, 0x85c16170, 0x5c025f05, 0xc0013058, 0x16130584,
-0x2142585c, 0x1b0584e0, 0x32004c80, 0x00c4d001, 0x005d1613, 0x74c021f0,
-0x00000ac0, 0x00000000, 0x002fb819, 0x92fc049f, 0x27c04bf8, 0xfc04bf11,
-0xc20af110, 0x049f012e, 0x69e0126c, 0xbf012780, 0xfc0a7c00, 0x4327c029,
-0x026c0496, 0x67c06bf0, 0x00000e60, 0x00000000, 0x80379018, 0x02fc02bf,
-0x24418b30, 0xcc00bf00, 0xc80b10c7, 0x0293002d, 0x8990326c, 0xbb0124c1,
-0x30e27400, 0x40a0c04b, 0x028d06b3, 0x64c143f0, 0x00000e00, 0x00000000,
-0x1007001c, 0x0874001d, 0x04d02114, 0x04000d11, 0x08015008, 0x0a114000,
-0x01140804, 0x55008540, 0xb4006440, 0x03854021, 0x00440653, 0x704031d0,
-0x00000c22, 0x00000000, 0x00a3a010, 0x0a34008d, 0xa24048d0, 0x46009d24,
-0x40090202, 0x80918021, 0x48101a64, 0x89872040, 0x91123620, 0x10204888,
-0x02240289, 0x405008d0, 0x00000e80, 0x00000000, 0x20a5a818, 0x0274009d,
-0x244049d2, 0x44009d00, 0x46091802, 0x80910020, 0x08100264, 0x95002564,
-0x94826400, 0x20254009, 0x12640491, 0x604209d0, 0x00000620, 0x00000000,
-0x0027a805, 0x027c809d, 0x26c009f4, 0x45188d00, 0xe0081206, 0x00919125,
-0x0920026e, 0x9b2024e0, 0xb2027c03, 0x0024d009, 0x026c029b, 0x14c009f0,
-0x00000e20, 0x00000000, 0x00258014, 0x027c009f, 0x27c00930, 0x5c019f00,
-0xc009f512, 0x009f0127, 0x0970025e, 0x9f5023c0, 0xf0022c44, 0x0033c109,
-0x425c009f, 0x53c000f0, 0x00000600, 0x00000000, 0x00050814, 0x005c041f,
-0x04c04170, 0x6c821220, 0xc001b000, 0x001b1007, 0x0132005c, 0x1f000480,
-0x32004c86, 0x0004d000, 0x004c0213, 0x50c00130, 0x00000420, 0x00000000,
-0x0014a014, 0x05f4117d, 0x144067d0, 0x8c807110, 0x40171209, 0x0051011f,
-0x05100104, 0x75001546, 0xf0014540, 0x04555007, 0x09c48871, 0x52c00110,
-0x00000200, 0x00000000, 0x0032a014, 0x077401cd, 0x30502d10, 0x2409c180,
-0x420cd81b, 0x00d10133, 0x0c510306, 0xc5103260, 0x10032402, 0x806242bc,
-0x0b040a91, 0x50400c10, 0x00000a00, 0x00000000, 0x00388005, 0x41b4006d,
-0x7a400cd8, 0xa400e101, 0x402e1103, 0x04e1003b, 0x8e508384, 0xf1013340,
-0x9013a411, 0x002b400c, 0x838400a1, 0x1640ac10, 0x00000200, 0x00000000,
-0x00780015, 0x079c21af, 0x7ce41672, 0xac812340, 0xc416f106, 0x09f1404b,
-0x5c72078c, 0xe723fac1, 0x3017e401, 0x407ac81e, 0x038d01f3, 0x54c05e30,
-0x00000040, 0x00000000, 0x0035a810, 0x817c405f, 0xb56209f8, 0x5c801f07,
-0xc0057202, 0x0ed50007, 0x6d900b78, 0xc50035c0, 0xf45b5c00, 0x24b5c00d,
-0x037d009f, 0x43c00df0, 0x00000660, 0x00000000, 0x007fa000, 0x26fa81f3,
-0x7cc09b32, 0xdc019202, 0xc09e3015, 0xc9f3004d, 0x1d306f4c, 0xf3007dc8,
-0xb067cc01, 0x007cd01f, 0x078c01ff, 0x0bc81f30, 0x00000e20, 0x00000000,
-0x00398815, 0x209c022b, 0x7ac054b0, 0x0441bb02, 0x40da116d, 0x41f00048,
-0x1d502744, 0x81027040, 0x50172c01, 0x003ac006, 0x2bac04fd, 0x57408eb0,
-0x00000620, 0x00000000, 0x00310000, 0x423408a1, 0x3a400010, 0x94006c20,
-0x49c61000, 0x00e1043b, 0x0e9003a5, 0x61813948, 0x10138430, 0x0038400a,
-0x43c4006d, 0x23400e10, 0x00000400, 0x00000000, 0xa0732804, 0x00144009,
-0x32402091, 0x04024000, 0x40001100, 0x00c10072, 0x0cc20324, 0x01403060,
-0xd2032600, 0x20325200, 0x0724100d, 0x1b400c90, 0x00000c00, 0x00000000,
-0x0435a815, 0x0a7c00d1, 0x3cc02d30, 0x54885c40, 0x40193104, 0x40f34077,
-0x0fbd03ec, 0xd1103d40, 0xb003cc00, 0x0024c00c, 0x870401df, 0x57800d30,
-0x00000600, 0x00000000, 0x00370001, 0x1a5c00df, 0x33c24df0, 0x7cc05f10,
-0xc041f808, 0x00cf2031, 0x0d70035c, 0x5f0033c2, 0x72037c86, 0x0037c029,
-0x037c01df, 0x27c00df0, 0x00000c00, 0x00000000, 0x003f0880, 0x20fc00b7,
-0x3fc007f0, 0xcd00b300, 0x821bf801, 0x00f70406, 0x0ef003cc, 0xb7003ec0,
-0x2003fc03, 0x003cc055, 0x07cd00f3, 0x04c03e30, 0x00000c00, 0x00000000,
-0x08362081, 0x0c7400dd, 0x374009d0, 0x44469500, 0x4031d889, 0x80d14007,
-0x0dd20354, 0x1b403448, 0x50037006, 0x00354021, 0x0e540185, 0x84501d50,
-0x00000802, 0x00000000, 0x0034a001, 0x4354005d, 0x37420990, 0x44200980,
-0x414dd012, 0x00d10004, 0x0dd00346, 0xd5003648, 0x50032400, 0x0230402d,
-0x1345c1d1, 0x04400d10, 0x00000220, 0x00000000, 0x00302010, 0x0334000d,
-0x3340c4d0, 0x04040143, 0x4880d012, 0x2cc56803, 0x0cd81b16, 0x0908b002,
-0x59133010, 0x00314000, 0x011400c5, 0x40400c50, 0x00000080, 0x00000000,
-0x0036b000, 0x015c0017, 0x7bc051f0, 0x0c07db00, 0xc11dd02f, 0x01f302f6,
-0xdff217cc, 0x1781fac9, 0x703fbc2f, 0x0034c001, 0x034c0053, 0x04c00d30,
-0x00000ac0, 0x00000000, 0x003fb805, 0x01fc403f, 0x77c0d1f0, 0x7c1dff8b,
-0xc051f19f, 0x0ddb08f7, 0x1ff01ffc, 0xcf09f7c0, 0xf0277c05, 0x003fc00f,
-0x02fc803f, 0x17c00ff0, 0x00000e60, 0x00000000, 0x002f8003, 0x18ec00ff,
-0x0fc14330, 0xfc08ff00, 0xc00fb003, 0x00f3203c, 0x0f3003ec, 0xf3003fc0,
-0x7003cc00, 0x183cc00f, 0x03dc00fb, 0x0cc00f30, 0x00000e00, 0x00000000,
-0x08270801, 0x314450dd, 0x34402110, 0x74041d00, 0x40011100, 0x00114004,
-0x01140045, 0x11400744, 0x11804500, 0x00045001, 0x00450011, 0x04400f10,
-0x00000c20, 0x00000000, 0x0023a011, 0x002004cd, 0x02400050, 0x34044d00,
-0x400cd000, 0x00890021, 0x08500214, 0xc1002340, 0x14021400, 0x40304a08,
-0x012400c5, 0x45640c14, 0x00000e80, 0x00000000, 0x2425a803, 0x084400dd,
-0x14400154, 0x74009d00, 0x60015303, 0x22490010, 0x05504114, 0x01341340,
-0x52011420, 0x00004804, 0x8224a005, 0x0d400c12, 0x00000620, 0x00000000,
-0x0067a802, 0x006c00df, 0x46c8dd70, 0x7c01df11, 0xd015f003, 0x22db0cb5,
-0x05700b7c, 0x5310b7c8, 0x30015c01, 0x0004c005, 0x276c129f, 0x09500d30,
-0x00000e20, 0x00000000, 0x016d8007, 0x237c20cf, 0x7ec00bb0, 0x7c081f12,
-0xc489b000, 0x00172007, 0x09b00064, 0x9f1007c9, 0xb0426c08, 0x0437c509,
-0x044c005b, 0x1ec10ff0, 0x00000600, 0x00000000, 0x00650802, 0x000c40df,
-0x07c00530, 0x4c005304, 0xc0453000, 0x129304a4, 0x0130127c, 0x530124c2,
-0x30004c00, 0x0804c481, 0x014c0293, 0x0ac08d30, 0x00000420, 0x00000000,
-0x10a4a013, 0x464404fd, 0x17400110, 0x6c119140, 0xc109b003, 0x025b0456,
-0x3db0156c, 0x9b0496c1, 0xb0136c09, 0x04f6c02d, 0x066c045b, 0x4c422fb0,
-0x00000200, 0x00000000, 0x0102a007, 0x020407cd, 0x02400191, 0x64008102,
-0x04391003, 0x0a490092, 0x0c900904, 0x8900d040, 0x10032401, 0x0072400c,
-0x4a341141, 0x1c400c10, 0x00000a00, 0x00000000, 0x00488004, 0x058501ed,
-0x6b621698, 0xa6016180, 0x60169824, 0x21a9806a, 0x1298a6a6, 0x69826a60,
-0x9804a609, 0x024a6092, 0xc5a409a9, 0x10401c90, 0x00000200, 0x00000000,
-0x00001012, 0x230420cd, 0x27400894, 0x24000102, 0x40081020, 0x04091002,
-0x08900014, 0x89000040, 0x30022c10, 0x0032c008, 0x103c0043, 0x48d08c30,
-0x00000040, 0x00000000, 0x000db802, 0x01fd00ff, 0x2fc00f70, 0xfc00ff02,
-0xc087f023, 0x00ff023f, 0x07f003fc, 0x7f0037c0, 0xf001fc00, 0x000fc007,
-0x07fc00bf, 0x09c08ff0, 0x00000660, 0x00000000, 0x0007a015, 0x824d00df,
-0x16c01df1, 0x6c019f20, 0xc0013007, 0x015b0014, 0x1530054c, 0x1b0856c0,
-0x30054c41, 0x0044c015, 0x064c0113, 0x57c04d30, 0x00000e00, 0x00000000,
-0x20098812, 0x038402ed, 0x38500fd0, 0x14004d00, 0x400c5000, 0x008d0029,
-0x08500214, 0xc5002140, 0x50021400, 0x00314008, 0x011400c5, 0x4b092e50,
-0x00000620, 0x00000000, 0x00690003, 0x078405ed, 0x79401ed0, 0x84012d80,
-0x60125004, 0x012d0048, 0x12500484, 0x25004840, 0x10049401, 0x00494012,
-0x04840125, 0x0f025e10, 0x00000400, 0x00000000, 0x00332812, 0x0b4400dd,
-0x31402cd0, 0x1400cd00, 0x640c5003, 0x00cd0031, 0x0c500314, 0xc5083140,
-0x50031400, 0x1071400c, 0x031601c5, 0x4b400c50, 0x00000c20, 0x00000000,
-0x009da817, 0x81cc005f, 0x1fc137f0, 0x6c005f01, 0xc8857001, 0x005d0014,
-0x8570014c, 0x5f0816c0, 0x30215c08, 0x0615c085, 0x01cc1057, 0x5fc60530,
-0x00000620, 0x00000000, 0x20c70012, 0x407c021f, 0x064101f0, 0xdc003f00,
-0xc003d000, 0x003f000b, 0x03e000fc, 0x3f008fc0, 0xf008fc80, 0x000fc003,
-0x00fc023f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x00270810, 0x064c009f,
-0x27c00970, 0x7c019f00, 0xc049f102, 0x00932024, 0x19f0027c, 0x9f0067c0,
-0xf0267c00, 0x00a7c029, 0x1674089f, 0x43c409f2, 0x00000c20, 0x00000000,
-0x04a62001, 0x0644079d, 0x27400910, 0x74089d00, 0x5129d002, 0x1b9b06e4,
-0x19d06e74, 0x9d00a641, 0xd0027402, 0x00274009, 0x0a74249d, 0x0740a9d0,
-0x00000800, 0x00000000, 0x0024a018, 0x9244889d, 0x27400950, 0xf6009d00,
-0x400ad002, 0x00b1002c, 0x4bd002f4, 0xb901af40, 0xd042f418, 0x002f400b,
-0x42e400bd, 0x634029d0, 0x00000200, 0x00000000, 0x00202010, 0x2204488d,
-0x33408812, 0xb488ad02, 0x402ad0a2, 0x42a900a8, 0x2ad00ab4, 0xad30aa40,
-0xd00ab402, 0x00bb402e, 0x0ab402ad, 0x434028d0, 0x00000080, 0x00000000,
-0x0006b01d, 0x584d020f, 0x87c56150, 0x7c021f05, 0xc001f008, 0x00130004,
-0x01f0007c, 0x1f0007c0, 0xf0007c00, 0x0007c001, 0x00fc001f, 0x77c001f0,
-0x00000ac0, 0x00000000, 0x002fb819, 0x12fc069f, 0x2f404bd0, 0x7c869d01,
-0x4429d01a, 0x029d00a7, 0x29d00a74, 0x9d00a740, 0xd00a7402, 0x00a74029,
-0x0a7c829f, 0x67c029f0, 0x00000e60, 0x00000000, 0x003fa018, 0x52cc04ba,
-0x2c0589f2, 0xfc049302, 0xc069f012, 0x849f1024, 0x29f0125c, 0x9f01a4c0,
-0xf01a7c06, 0x0427c029, 0x027c549f, 0x60c049f0, 0x00000e00, 0x00000000,
-0x0007081c, 0x0844061d, 0x844001d0, 0x74001102, 0x4061d118, 0x161d2584,
-0x61d05074, 0x1d018440, 0xd0187406, 0x00074061, 0x5874161d, 0x704143d0,
-0x00000c20, 0x00000000, 0x0063a010, 0xc2041289, 0x204048d1, 0x36568101,
-0x402a5062, 0x08ad00a9, 0x6ad00ab4, 0xad032850, 0xd00ab408, 0x042b402a,
-0x0ab400ad, 0x40402ad0, 0x00000e80, 0x00000000, 0x0025a818, 0x0245009d,
-0x240609d0, 0x74009100, 0x4009d002, 0xa0bd002d, 0x0ed002f4, 0xbd002c40,
-0xd002f480, 0x002f400b, 0x03f400fd, 0x60400bd0, 0x00000620, 0x00000000,
-0x02e7a805, 0x024c009b, 0x249049f0, 0x7c109341, 0xd009706a, 0x289f2025,
-0x19f0225c, 0x9f1224c0, 0xf0067ca0, 0x0027c019, 0x4274009f, 0x14d009f0,
-0x00000e20, 0x00000000, 0x00658014, 0x127c008f, 0x23c208f0, 0x7c00df00,
-0xc009f002, 0x009f10e6, 0x49f0027c, 0x9f0427c2, 0xf0127c00, 0x0027c049,
-0x027c809f, 0x53c009f0, 0x00000600, 0x00000000, 0x03050814, 0x104c201f,
-0x06c001f0, 0x7c201f00, 0xc0037008, 0x003f000f, 0x83f000fc, 0x3f020fc2,
-0xf000fc00, 0x010fc003, 0x00fc183f, 0x505003f0, 0x00000420, 0x00000000,
-0x005ca014, 0x09c5007d, 0x5c4005d0, 0x74015d04, 0x00151001, 0x035d0117,
-0x05d00574, 0x5d001740, 0xd0097403, 0x001740a5, 0x1d74035d, 0x504007d0,
-0x00000200, 0x00000000, 0x0012a014, 0x030510cd, 0x33400cd0, 0x34004d00,
-0x401f5002, 0x0ded04bb, 0x2ed013b4, 0xed007b41, 0xd063b413, 0x02bb408e,
-0x1bb401ed, 0x50409fd0, 0x00000a00, 0x00000000, 0x00088005, 0x038400cd,
-0x39404ed1, 0xb4426d00, 0x442e1206, 0x00ed003b, 0x0ed043b4, 0xed203b40,
-0xd003b430, 0x003b400e, 0x03b400ed, 0x14400cd0, 0x00000200, 0x00000000,
-0x00581015, 0x078c012f, 0x5bc01ff1, 0xfc016f00, 0xc01e601e, 0x01ef007b,
-0x1ef007bc, 0xef007bc0, 0xf007bc01, 0x207bc01e, 0x07bc81ef, 0x54c01ef0,
-0x00000040, 0x00000000, 0x0005b810, 0x027c00df, 0x36c08df0, 0x7c121f00,
-0xc001f002, 0x001f0007, 0x01f0007c, 0x5f0007c0, 0xf0007c00, 0x0007c801,
-0x007c001f, 0x43c601f0, 0x00000660, 0x00000000, 0x004ba000, 0x07ec01f3,
-0x7cc21f30, 0x8c097340, 0xc01f3206, 0x01ff207f, 0x1ff007fc, 0xbf007fc0,
-0xf227fc01, 0x027fc09f, 0x07fc01ff, 0x03401ff0, 0x00000e00, 0x00000000,
-0x22098815, 0x83844061, 0x28420eb0, 0x84006100, 0x400e1402, 0x00ed023b,
-0x8ed003b4, 0xad003b41, 0xd003b408, 0x083b402e, 0x23a400ed, 0x57400ed0,
-0x00000620, 0x00000000, 0x040d0000, 0x03a40021, 0x18400c10, 0x80406100,
-0x400a1002, 0x00ed003b, 0x0ed003b4, 0xad003b40, 0xd103b400, 0x103b480e,
-0x43b400ed, 0x03401ed0, 0x00000400, 0x00000000, 0x00232804, 0x32042041,
-0x60421d90, 0x44070110, 0x40f51066, 0x111d03c7, 0x01d04474, 0x1d01c641,
-0xd0087411, 0x01874071, 0x18641b1d, 0x134000d0, 0x00000c20, 0x00000000,
-0x0005a815, 0x036800d3, 0xe4c05f30, 0xcd005200, 0xc01d300e, 0x40df2077,
-0x0df10b7c, 0xdf0037c4, 0xf1037c02, 0x0137c00d, 0x0b7801df, 0x57c00df0,
-0x00000620, 0x00000000, 0x00070001, 0x037c009f, 0x13c00df0, 0x7c085f02,
-0xc005f002, 0x0adf00b7, 0x2df02b7c, 0xdf0237c0, 0xf0bb7c0a, 0x00b7c08d,
-0x0b6cc0df, 0x07c00df0, 0x00000c00, 0x00000000, 0x00cf0880, 0x03dd0903,
-0x0dc00ff0, 0xfc007304, 0xc00f7002, 0x05f3013c, 0x4f3027cc, 0xf3003cc0,
-0x3007cc00, 0x003cc00f, 0x23cc03f3, 0x03c00f30, 0x00000c22, 0x00000000,
-0x00422081, 0x02440191, 0x55400dd0, 0x74081102, 0x40691002, 0x031100c4,
-0x21101c44, 0x5100c440, 0x10044446, 0x02044011, 0x88442211, 0x07409111,
-0x00000802, 0x00000000, 0x0004a001, 0x895400d1, 0x25420dd0, 0x74001100,
-0x400d5002, 0x02110c04, 0x01100044, 0x11028440, 0x12504400, 0x04044881,
-0x00440011, 0x07400910, 0x00000200, 0x00000000, 0x20002010, 0x01040001,
-0x40500cd0, 0x34000100, 0x42041002, 0x00010000, 0x00100004, 0x01000048,
-0x10000400, 0x00004000, 0x00040001, 0x43400810, 0x00000080, 0x00000000,
-0x0006b000, 0x011c0013, 0x01c00df0, 0x7c000340, 0xc0097002, 0x00130004,
-0x0131004c, 0x130004c0, 0x32004c00, 0x0004c401, 0x004c0013, 0x03c00930,
-0x00000ac0, 0x00000000, 0x002fb805, 0x00fc003f, 0x0fc00ff0, 0xfc003f00,
-0xc00ff002, 0x00ff003f, 0x0ff003fc, 0xbf203fc0, 0xf003fc00, 0x003fc00f,
-0x03fc00ff, 0x17c007f0, 0x00000e60, 0x00000000, 0x000fa003, 0x10fcc433,
-0x35c001b0, 0x7c5cff07, 0xc04d7272, 0x00d32337, 0xc33070cc, 0xdb40b4c1,
-0xf0137c08, 0x003dc003, 0x01c8003f, 0x0cc00bf0, 0x00000e00, 0x00000000,
-0x43170801, 0x5b741201, 0x3c448510, 0xf406fd10, 0x41ec041a, 0x06f103b7,
-0x21500a44, 0xd5103d40, 0xd0237462, 0x00334809, 0x0144005d, 0x045009d0,
-0x00000c20, 0x00000000, 0x0423a011, 0x20140c81, 0x30400810, 0x5444cc20,
-0x400c0082, 0x12c10137, 0x4c100004, 0xc1113144, 0xd0833406, 0x08334000,
-0x0324000d, 0x444209d0, 0x00000e80, 0x00000000, 0x0035a803, 0x0b341891,
-0x34480512, 0x7400dd18, 0x400d1402, 0x00d10077, 0x8d500244, 0xd5003548,
-0xd0037400, 0x00374009, 0x2b64039d, 0x0c4009d0, 0x00000620, 0x00000000,
-0x0287a802, 0x047c0353, 0x34d011b4, 0x3c80df00, 0xc09d3002, 0x00d30037,
-0x1930074d, 0xd35034c0, 0xf0037c20, 0x0035c015, 0x0c6d035f, 0x08c008f0,
-0x00000e20, 0x00000000, 0x0c458007, 0x17fc117f, 0x3ec08af2, 0x7c00ff00,
-0xc00fb102, 0x00cf083f, 0x0bf027bc, 0xff003bc0, 0xf003fc50, 0x003fe05f,
-0x44dc006f, 0x1fc00bf0, 0x00000600, 0x00000000, 0x40850802, 0x405d0313,
-0x35f00970, 0x5d00df18, 0xc00d7c02, 0x00d30035, 0x0cf0034c, 0xd34037c0,
-0x30037c00, 0x0234c005, 0x025d0213, 0x08c009f0, 0x00000420, 0x00000000,
-0x0044a013, 0x1b440011, 0xbc400950, 0xe480fd02, 0x400db802, 0x0af10030,
-0x0dd00344, 0xfb103f4a, 0x5003f400, 0x02fd400d, 0x4644651b, 0x4ec00bd0,
-0x00000200, 0x00000000, 0x0006a007, 0x0c040201, 0x30400010, 0x24c0cd00,
-0x400c9082, 0x80c10031, 0x04d10104, 0xc1003348, 0x50033480, 0x80704000,
-0x05042081, 0x1c4008d1, 0x00000a00, 0x00000000, 0x00588004, 0x24040921,
-0x7a60d650, 0xa409ed00, 0x405e1036, 0x15e10278, 0x16d007a6, 0xe90a7340,
-0x5087b429, 0x0079401a, 0x05810069, 0x12401ad0, 0x00000200, 0x00000000,
-0x06a01012, 0x021c08c1, 0x71e09970, 0x1c45df03, 0xc01cd006, 0x01c30371,
-0x5cd0150c, 0xc34373c0, 0x70077405, 0x0030e041, 0x021e08d3, 0x48c009f0,
-0x00000040, 0x00000000, 0x103db802, 0x02fc28ff, 0x3dcc05f0, 0x5c00ff00,
-0xc50ff8a2, 0x8afe0c3b, 0xcdf02358, 0xdf0237c0, 0xf0037c28, 0x003fc00f,
-0x02fd60ff, 0x0bc00bf0, 0x00000660, 0x00000000, 0x0037a015, 0x014c00df,
-0x34ca0530, 0x4c04df05, 0xc00d3012, 0x02d33037, 0x0d30076d, 0xd30534c2,
-0x31034c41, 0x2037c005, 0x004c41df, 0x57c009f0, 0x00000e00, 0x00000000,
-0x00398812, 0x01c480ed, 0xb8600f10, 0xc516ed00, 0x400eb02a, 0x06c1213b,
-0x0f108314, 0xe1013848, 0x101bc424, 0x103b410e, 0x0084006d, 0x4b402ad0,
-0x00000620, 0x00000000, 0x00f90003, 0x078601c5, 0x78411e10, 0x8405cd01,
-0x405e1096, 0x81e1187b, 0x1e904784, 0xe1027840, 0x9007840d, 0x027b4012,
-0x0c8400cd, 0x0f401ad0, 0x00000400, 0x00000000, 0x00f32812, 0x230402dd,
-0x34400d15, 0x0400cd20, 0x400c9002, 0x00c10033, 0x0c104304, 0xc1003040,
-0x91030400, 0x2033420c, 0x1004014d, 0x4b4008d0, 0x00000c20, 0x00000000,
-0x00dda817, 0x05cd057f, 0x14d42732, 0xcc005f00, 0xc0013001, 0x4053400f,
-0x87b301cc, 0x534014c2, 0xb0014c00, 0x1017c805, 0x05cc027f, 0x5fc005f0,
-0x00000620, 0x00000000, 0x01070012, 0x807c001f, 0x07c101f0, 0x3c201f00,
-0xc001f000, 0x001f0007, 0x01f0005c, 0x1f0003c0, 0x75007c02, 0x0006c081,
-0x087c8c1f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x00270810, 0x0a0c109f,
-0x64d00930, 0x4c009302, 0xc000b002, 0x00934000, 0x09f0024c, 0x930026ca,
-0x71023c02, 0x0267c00d, 0x024c088f, 0x40c008f0, 0x00000c20, 0x00000000,
-0x04262001, 0x0a44019d, 0xa5400912, 0x44409150, 0x40091002, 0x00912024,
-0x09d00244, 0x91002448, 0x10027403, 0x20274009, 0x1a44419d, 0x054009d0,
-0x00000800, 0x00000000, 0x0024a018, 0x42440a9d, 0xa5400910, 0x64408120,
-0x40099202, 0x00812024, 0x08d00244, 0x91002640, 0x10027400, 0x20a74209,
-0x2264009c, 0x604009d0, 0x00000200, 0x00000000, 0x02202010, 0x2205288d,
-0x2151c814, 0x25888100, 0x50881022, 0x08810820, 0x88d02207, 0x81022040,
-0x18a23408, 0x15234028, 0x0225088d, 0x414008d0, 0x00000080, 0x00000000,
-0x2586b01d, 0x584c361f, 0x05d06131, 0x6c361305, 0xc361b0d8, 0x16130500,
-0x61f0584c, 0x434582c1, 0x74587c16, 0x0107c941, 0x006c161f, 0x74c001f0,
-0x00000ac0, 0x00000000, 0x012fb819, 0x12fc04bf, 0x27c04bf2, 0xdc049f05,
-0xc843f012, 0x849f050f, 0x4bf012fc, 0x9f0127c0, 0xf3127c04, 0x0527c009,
-0x02dc04bf, 0x67c16bf0, 0x00000e60, 0x00000000, 0x00af2018, 0x02fc02b3,
-0xaec049f0, 0x4c849301, 0x403f3202, 0x02b3007c, 0x69f0024c, 0xb31627c9,
-0xf012cc0c, 0x40a6c129, 0x024c12b3, 0x60c14930, 0x00000e00, 0x00000000,
-0x0007081c, 0x1874001b, 0x044000d2, 0x6c061141, 0x50201050, 0x04110084,
-0x60d2a854, 0x15008740, 0xd008540e, 0x00044061, 0x00440211, 0x70502114,
-0x00000c20, 0x00000000, 0x00a32010, 0x4a340281, 0xa24968d0, 0x04988121,
-0x4428000a, 0x468124a0, 0x48d04204, 0x81412340, 0xd8720400, 0x80224048,
-0x026500c1, 0x40400910, 0x00000e80, 0x00000000, 0x0025a818, 0x8a740299,
-0x244029d0, 0x64409100, 0x40191482, 0x00d18064, 0x09d00254, 0x9500274b,
-0xd0025400, 0x00244009, 0x02640491, 0x60400910, 0x00000620, 0x00000000,
-0x04a7a805, 0x027c0093, 0x26c029f0, 0x4d009300, 0xc0191002, 0x00934064,
-0x39f0024c, 0x93002742, 0xd0024c00, 0x0026c009, 0x162c0593, 0x14c00830,
-0x00000e20, 0x00000000, 0x00258014, 0x027c199f, 0x27c009f0, 0x5c008f00,
-0xc009f002, 0x009f0027, 0x99f0027c, 0x8f4023c0, 0xf0027c80, 0x0033c099,
-0x0f5c018f, 0x53c009f0, 0x00000600, 0x00000000, 0x00810814, 0x007c021f,
-0x01c220f0, 0x0c001f04, 0xc0013100, 0x001f0004, 0x2130005c, 0x130004c0,
-0xb2804400, 0x2407c800, 0x084c021d, 0x50c001f0, 0x00000420, 0x00000000,
-0x015ca014, 0x41f4017d, 0x5d4805d0, 0x44005d00, 0xc0051001, 0x057d2017,
-0x0510014c, 0x71001440, 0x10014411, 0x04174605, 0x4544005d, 0x514005d0,
-0x00000200, 0x00000000, 0x0032a014, 0x1b340bcd, 0x71500cd0, 0x0400cd90,
-0x40095803, 0x00dd0024, 0x0c100324, 0xc1003042, 0x10a20400, 0x00b3400c,
-0x040400cd, 0x52400cd0, 0x00000a00, 0x00000000, 0x10388005, 0x02b400ad,
-0x19404ed0, 0xc400ed04, 0x444a1033, 0x20ed002b, 0x5e100784, 0xc1093848,
-0x10060400, 0x001b400e, 0x008480cd, 0x17400cd1, 0x00000200, 0x00000000,
-0x00581015, 0x85b421ef, 0x6942bef0, 0x8c81cf20, 0xc05a7207, 0x01cf00e8,
-0x7e3407ed, 0xe340fcc0, 0x30068c21, 0x926bc01e, 0x048cc1ef, 0x56c01ef0,
-0x00000040, 0x00000000, 0x2035b810, 0x007c001f, 0x07c06df0, 0x3c02df00,
-0xc029d483, 0x00df0526, 0x2de07b78, 0x5f05b7c0, 0x73827c20, 0x0137c08d,
-0x187d00df, 0x41c08df0, 0x00000660, 0x00000000, 0x006fb000, 0x07f80977,
-0x74081ff0, 0xcc1bd302, 0xc1b93007, 0x01df1065, 0xbf4027fc, 0xf3427cc4,
-0xa027cc49, 0x405cc09f, 0x0c8c01f3, 0x00c21f30, 0x00000e00, 0x00000000,
-0x00298015, 0x01b4086d, 0x78545fd0, 0x8401d102, 0x401b1007, 0x0dad0b68,
-0x1d380734, 0xf5007840, 0xd0279449, 0x009ac00f, 0x018400e1, 0x54400e30,
-0x00000620, 0x00000000, 0x00090000, 0x22a600a5, 0x0850ced0, 0xc4c0e103,
-0x404a9003, 0x04ed0028, 0x0e5023b4, 0xa1023040, 0xd8038400, 0x003a400e,
-0x00c40aa1, 0x00400f90, 0x00000400, 0x00000000, 0x00632804, 0x0034400d,
-0x00400cd0, 0x0400c100, 0x4088d003, 0x008d1060, 0x0c128334, 0x05503040,
-0xd0031400, 0x1032419d, 0x00040091, 0x10400c10, 0x00000c20, 0x00000000,
-0x0035a815, 0x0b6c00d7, 0x34c02ff0, 0x8d40f340, 0xd01b8003, 0x00df3469,
-0x0f500bfc, 0xd3003cd0, 0xb1034420, 0x1036c80f, 0x014d0092, 0x54c00fb4,
-0x00000620, 0x00000000, 0x02070001, 0x327c408f, 0x17c18df0, 0x7c00cf00,
-0xc0093003, 0x825f0027, 0x0d70437c, 0xdf0033c0, 0xf0037c20, 0x0097c00d,
-0x0a7c01df, 0x07c00df0, 0x00000c00, 0x00000000, 0x005f0880, 0x01cc00f3,
-0x74d40ff0, 0xcf00f300, 0xc00b3003, 0x00f3002f, 0x0e1403f4, 0xfb003cc0,
-0xf007f420, 0x0076c00f, 0x04c4019f, 0x03c00f30, 0x00000c22, 0x00000000,
-0x06060081, 0x00444011, 0x57d00dd1, 0x4480d500, 0x42095003, 0x02510027,
-0x0d100374, 0x550036c0, 0xd0037400, 0x00bd400d, 0x101401dd, 0x07400d50,
-0x00000802, 0x00000000, 0x8030a001, 0x03440051, 0x22400cd2, 0x4400d501,
-0x40095003, 0x40d13027, 0x0d500334, 0xd9403640, 0xc1237400, 0x0236440d,
-0x215508dd, 0x07400d10, 0x00000200, 0x00000000, 0x00002010, 0x01040041,
-0xa2506cd0, 0x4408c511, 0x00481813, 0x120100a7, 0xcc101334, 0xc5033240,
-0xd0033090, 0x0011400c, 0x031500cd, 0x43400c50, 0x00000080, 0x00000000,
-0x0016a000, 0x024c0093, 0xc4d07ff2, 0x4401f700, 0x85fb7877, 0x87d340ef,
-0x3f7097bc, 0x9b057ec1, 0xf00f784f, 0x2036c00d, 0x005d009f, 0x03c00d30,
-0x00000ac0, 0x00000000, 0x200fa805, 0x00fc003f, 0xcfc29df0, 0x3c0dff00,
-0xc05bf097, 0x053f026f, 0x1de0e774, 0x1f2177c8, 0xf05f7c25, 0x003fc00f,
-0x00fc00bf, 0x17c00ef0, 0x00000e60, 0x00000000, 0x802fa803, 0x23fc08f3,
-0x8fc143f0, 0xdc003f00, 0xc00ff053, 0x00f7003c, 0x0fb003cc, 0xf7003ec0,
-0x30c5fc00, 0x046cc01b, 0x11ec00f3, 0x0fc00f30, 0x00000e00, 0x00000000,
-0x00270801, 0x0a748251, 0x324825d0, 0xa4021700, 0x400fd00b, 0x22e10038,
-0x0f108394, 0xc1003042, 0x10894400, 0x009040a5, 0x094400c1, 0x07480f10,
-0x00000c20, 0x00000000, 0x0023a011, 0x193486c1, 0x314540d0, 0x14020d01,
-0x400cd003, 0x48c50030, 0x0c900314, 0xc5103248, 0x50013400, 0x00224400,
-0x212400c1, 0x47400c50, 0x00000e80, 0x00000000, 0x4065a003, 0x01760051,
-0x376011d0, 0x64845d00, 0x480dd003, 0x00d12034, 0x0d110354, 0xd1203400,
-0x50016420, 0x2016480c, 0x414400d1, 0x0f400d50, 0x00000620, 0x00000000,
-0x0037a002, 0x077c0213, 0x05c029f2, 0x5c001f10, 0xd00dd006, 0x00d70034,
-0x0db2035c, 0xd71036c8, 0x7403fc00, 0x402ed003, 0x0d6c00d3, 0x0bc00d70,
-0x00000e20, 0x00000000, 0x003d8007, 0x22fc0237, 0x3ec005f0, 0xfc007700,
-0xc00ff04e, 0x00ff003b, 0x0ef003bc, 0xef203bc0, 0xb003dcc0, 0x0019c00f,
-0x253c00ef, 0x1fc00fb6, 0x00000600, 0x00000000, 0x00750002, 0x214c2017,
-0x36d02930, 0x4c001300, 0xe10c3402, 0x00c34035, 0x0d30034d, 0xd30037c0,
-0xf0030d00, 0x4025c001, 0x094d00d3, 0x0bc00d70, 0x00000420, 0x00000000,
-0x00b4a013, 0x09540011, 0x74400150, 0x450f5100, 0x400f1002, 0x11f1047f,
-0x1f1047c4, 0xf1117c41, 0xd0474401, 0x0454411d, 0x054411f1, 0x4f420f10,
-0x00000200, 0x00000000, 0x0426a807, 0x1024808d, 0x41400090, 0x00000120,
-0x400c1006, 0x12c104b1, 0x2c104b04, 0xc104b141, 0xd0490412, 0x04a04120,
-0x490412c1, 0x1f400cd1, 0x00000a00, 0x00000000, 0x40788004, 0x043403c1,
-0x78401ed0, 0x84012100, 0x411e1026, 0x01e1107b, 0x9c182784, 0xe1027940,
-0xd0858401, 0x0259401e, 0x058401e5, 0x12401e90, 0x00000200, 0x00000000,
-0x00241012, 0x202c828f, 0x31c6a4b1, 0x0c085304, 0xc00c3042, 0x08c30031,
-0x8c34030c, 0xc34031c0, 0xf0010c10, 0x0221d0a1, 0x520c08c3, 0x4bc00cf0,
-0x00000040, 0x00000000, 0x003db802, 0x81dc00f5, 0x3dc00f58, 0xfc007f02,
-0xc08fb006, 0x00ff003f, 0x8ff8c3fc, 0xff003cc1, 0xf001fc80, 0x0a5ec80f,
-0x02fc80fb, 0x0bc02f71, 0x00000660, 0x00000000, 0x0037a015, 0x027c0017,
-0x07c009f0, 0x7c125f00, 0xc10d3083, 0x06d701b7, 0x4cb0537c, 0xdb0a74d0,
-0xf0036c01, 0x4027c801, 0x017c00d3, 0x57c08df8, 0x00000e00, 0x00000000,
-0x00398812, 0x02b480ed, 0x3b400ed0, 0x34006d08, 0x402e7023, 0x16e105b3,
-0xce1013b4, 0xe1213840, 0xd0038482, 0x0013400e, 0x01b422e1, 0x4b404ed0,
-0x00000620, 0x00000000, 0x00790003, 0x06b40121, 0x7b401ed0, 0xb4016d00,
-0x405e900f, 0x01ed007b, 0x1f900734, 0xc9007140, 0xd807a401, 0x106b4012,
-0x06b401e1, 0x0f441ed8, 0x00000400, 0x00000000, 0x80732812, 0x0b3400cd,
-0x33400cd8, 0x34094d00, 0x400c5007, 0x80c90033, 0x0c100334, 0xc1003148,
-0xd2032400, 0x0013402c, 0x023400c1, 0x4b400cd0, 0x00000c20, 0x00000000,
-0x0115a817, 0x29f48073, 0x1b4027d0, 0x7c015f00, 0xc005b005, 0x005f0017,
-0x07b1017c, 0x5b001dc0, 0xf0096c00, 0x401fc085, 0x01fc0053, 0x5fc005f0,
-0x00000620, 0x00000000, 0x00070012, 0x087c011f, 0x07e101f0, 0x7c800f00,
-0xc001f080, 0x00170003, 0x01f0803c, 0x1f0006c0, 0xf0485c20, 0x008bc002,
-0x087c001f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x00230810, 0x020c0097,
-0x67800930, 0x2c00d301, 0xc4093002, 0x00870024, 0x0970024c, 0x9f002480,
-0x30027c00, 0x0024c009, 0x025c0083, 0x43c009f0, 0x00000c20, 0x00000000,
-0x10660005, 0x0a540291, 0x26c00952, 0x45809100, 0x40095102, 0x00910024,
-0x0910027c, 0x9c002440, 0x104a7400, 0x04a54009, 0x4a448095, 0x074009d0,
-0x00000800, 0x00000000, 0xc224a01c, 0x03448185, 0x27400910, 0x44009140,
-0x40181002, 0x01950064, 0x18d00640, 0x9d006540, 0x10063401, 0x006c401b,
-0x06540191, 0x634009d0, 0x00000200, 0x00000000, 0x80e02010, 0x0b140281,
-0x26440850, 0x0408c102, 0x5028505a, 0x868180a0, 0x28100a34, 0x8d00a150,
-0x140a3602, 0x00a9402a, 0x0a040285, 0x434028d0, 0x00000080, 0x00000000,
-0x0006b019, 0x004c0057, 0x87614130, 0x4c161310, 0xc0013110, 0x01170004,
-0x0170004c, 0x1f0005c0, 0x30007c00, 0x000cc001, 0x005c0013, 0x77c001f0,
-0x00000ac0, 0x00000000, 0x40afb019, 0x0afc02bf, 0x2cc54bf0, 0xfc049f01,
-0xc029f002, 0x089f00a7, 0x29f30a6c, 0x9f00a6c0, 0xf00a7c02, 0x08a7c02d,
-0x0afc829f, 0x67c029f0, 0x00000e60, 0x00000000, 0x052fa018, 0x32fc02fb,
-0xa5c149f0, 0x7c40bf00, 0xc029f05a, 0x069b01a4, 0xc9b0327c, 0x9701a6c0,
-0x301e6c14, 0x0164c079, 0x0a4c1293, 0x60d489f2, 0x00000e00, 0x00000000,
-0x01870818, 0x385c0011, 0x164021d0, 0x760a1d00, 0x4001d818, 0x04110385,
-0xe1103874, 0x11038440, 0xb0184402, 0x15054041, 0x80840411, 0x704821d0,
-0x00000c20, 0x00000000, 0x0423a010, 0x02300289, 0x236008d2, 0xb4148d00,
-0x406ad012, 0x02a92028, 0x0a900294, 0xa5092a40, 0x1022a410, 0x40aa502a,
-0x1e8400a1, 0x404068d0, 0x00000e80, 0x00000000, 0x0025a818, 0x82542099,
-0x266009d8, 0x74809d02, 0x400bd003, 0x00b1002d, 0x0b1802f6, 0xb1002c40,
-0x9002e400, 0x002f400b, 0x02c400b1, 0x604009d2, 0x00000620, 0x00000000,
-0x1027a805, 0x467c009b, 0xe7c689f0, 0x74099f10, 0xc009d002, 0x009b0024,
-0x09b0025c, 0x970026c0, 0x30026c00, 0x0026c029, 0x064c2093, 0x14c409f0,
-0x00000e20, 0x00000000, 0x00218210, 0x567c1097, 0x35c009f0, 0x7c019f00,
-0xe009f002, 0x009f0023, 0x0970023c, 0x8f0023c0, 0xf0025c00, 0x0021c008,
-0x927d209f, 0x53c009f0, 0x00000600, 0x00000000, 0x02050814, 0x004c0813,
-0x07c001f0, 0xfc201f00, 0xc0023100, 0x0437010f, 0x02b010fc, 0x33010cc0,
-0x30008c04, 0x000cc043, 0x00fc0433, 0x50c40130, 0x00000420, 0x00000000,
-0x201ca014, 0x01d48171, 0x174805d2, 0x74117d04, 0x48051001, 0x00512017,
-0x05108164, 0x57001444, 0x10014400, 0x00144005, 0x01f40051, 0x50400510,
-0x00000200, 0x00000000, 0x0072a014, 0x2b0402c9, 0x53600d90, 0x3400cd20,
-0x400c5003, 0x00c54033, 0x2c100334, 0xc9403041, 0x10030400, 0x0030500c,
-0x033400d1, 0x50440d90, 0x00000a00, 0x00000000, 0x40308005, 0x00b401c1,
-0x1b608e90, 0xb400ed00, 0x4802520c, 0x0021000b, 0x021000b4, 0x25000840,
-0x10008400, 0x00094002, 0x04b48021, 0x14400e90, 0x00000200, 0x00000000,
-0x00681015, 0x078e4163, 0x5bc41ef2, 0xfc016f10, 0xc01a5407, 0x01a70063,
-0x1b3406fe, 0xbb806cd0, 0x3404cd01, 0x404cc018, 0x04bc01a3, 0x54d01cb4,
-0x00000040, 0x00000000, 0x4025b010, 0x005c805f, 0x87c00df0, 0x7c005f00,
-0xc005b000, 0x005f8817, 0x0570016c, 0x5b0017c0, 0xf0037c00, 0x0036c205,
-0x037c005f, 0x43c1ed70, 0x00000660, 0x00000000, 0x007fa000, 0x25cc81bb,
-0xdcc01fb0, 0xfc01f310, 0xc41f7006, 0x0173105c, 0x17b005cc, 0x73005ac0,
-0x3007fc01, 0x007cc217, 0x07ec8173, 0x00c01f31, 0x00000e20, 0x00000000,
-0x00298815, 0x00ec9431, 0x1ac20eb0, 0xb000a100, 0x40031001, 0x00bf002c,
-0x0a100294, 0xab002940, 0x5000b640, 0x0009c00a, 0x80c420ab, 0x54488e10,
-0x00000620, 0x00000000, 0x00290000, 0x038640a1, 0x1e408c10, 0x14006100,
-0x400a5022, 0x0029020a, 0x02900024, 0x21000e40, 0x90003400, 0x00084000,
-0x04a40821, 0x00400e10, 0x00000400, 0x00000000, 0x00272804, 0x22200301,
-0x80601c90, 0x30810000, 0x40041001, 0x80c11032, 0x0c920324, 0xc9203044,
-0xd0033480, 0x033148ac, 0x030480c9, 0x10500c10, 0x00000c00, 0x00000000,
-0x0075a815, 0x06480093, 0x96423f30, 0x7c049341, 0xd0057001, 0x00d94036,
-0x0db1036d, 0xd30036c0, 0xb0037c00, 0x00b4c02d, 0x032c00d3, 0x54c00f34,
-0x00000600, 0x00000000, 0x40570001, 0x007c409f, 0x17c0cdf2, 0x7c805f00,
-0xc029f00a, 0x401f0001, 0x0170005c, 0x170007c0, 0x70003e00, 0x0005c441,
-0x006c001f, 0x07c00df0, 0x00000c00, 0x00000000, 0x00070880, 0x02fc107f,
-0x5fc00fb0, 0x8e05bf05, 0xc002b001, 0x00b7002e, 0x087002bc, 0xaf002dc0,
-0x3100dc00, 0x0000c00a, 0x00dc0083, 0x00c00d34, 0x00000c02, 0x00000000,
-0x04462081, 0xa4740955, 0x06420d53, 0x44005d00, 0x412d100a, 0x00510014,
-0x05b20174, 0x5d2016c0, 0x50034400, 0x00354005, 0x034c805b, 0x04400d10,
-0x00000822, 0x00000000, 0x0064a001, 0x01340095, 0x07600d11, 0x44028d00,
-0x40059000, 0x80550016, 0x05500170, 0x5c001540, 0x10035400, 0x00344805,
-0x03540051, 0x05400c51, 0x00000200, 0x00000000, 0x08002010, 0x01340001,
-0x03440c50, 0x06000d08, 0x40081003, 0x00810020, 0x08100234, 0x8d102040,
-0x50000400, 0x00014008, 0x00440089, 0x40400c10, 0x00000080, 0x00000000,
-0x0006b000, 0x037c80d7, 0x07c40d30, 0x44009d00, 0xc001b000, 0x00170006,
-0x0150007c, 0x1f200548, 0x30005c20, 0x0004c001, 0x005c0013, 0x00d00f32,
-0x00000ac0, 0x00000000, 0x000fb005, 0x03fc007f, 0x0ac00ff0, 0xec003f00,
-0xc80ff203, 0x00ff203f, 0x0ff003fc, 0xff003fc0, 0xf003fc00, 0x083fc00f,
-0x03dc80ff, 0x17c00ff0, 0x00000e40, 0x00000000, 0x840fa003, 0x10cd943f,
-0xbfe44190, 0x7c3c3301, 0xe34ff28b, 0x14ff092c, 0x2df0234c, 0xd300b6c6,
-0x30034c04, 0x003cc04f, 0x02cc00e7, 0x0ce00f30, 0x00000e00, 0x00000000,
-0x00b70801, 0x5a6c021d, 0x3de16110, 0xde061102, 0x416fd10b, 0x16f11624,
-0x0fd01bd4, 0xe140bc40, 0x542bc502, 0x403d502c, 0x02440051, 0x06c00c14,
-0x00000c20, 0x00000000, 0x0003a011, 0x2114144d, 0x33048010, 0x14044501,
-0x400cd01b, 0x00cd0920, 0x4cd08b04, 0xc101b170, 0x10830508, 0x0030408c,
-0x030480d5, 0x44400c10, 0x00000e80, 0x00000000, 0x0235a803, 0x8314048d,
-0x35400590, 0x74015560, 0x500cd003, 0x00d10024, 0x0dd00345, 0xd1083540,
-0x50034400, 0x4035400d, 0x034408d5, 0x0e000d10, 0x00000620, 0x00000000,
-0x0047a802, 0x2854019d, 0x37402db4, 0x5c121700, 0x480df003, 0x80df4024,
-0x0dd0834c, 0xd30035c0, 0x34034c00, 0x4034c80d, 0x134c02d5, 0x08000d30,
-0x00000e20, 0x00000000, 0x104d8007, 0x806c813f, 0x3dc40572, 0xdc001b00,
-0xc00df103, 0x00d70023, 0x0df2037c, 0xef003ec0, 0xf0033c80, 0x003bc00e,
-0x0bfd11fb, 0x1fc00ef4, 0x00000600, 0x00000000, 0x40250802, 0x1d7c40d3,
-0x32d029fc, 0x6c809f10, 0xd00d7083, 0x80c7a064, 0x0c32034c, 0xd70032c0,
-0x74234c00, 0x1034c00d, 0x034c00db, 0x08c80d30, 0x00000420, 0x00000000,
-0x00248013, 0x01740091, 0x3c40a5b8, 0xc4019d00, 0x400f1083, 0x20fb806c,
-0x0f1103c4, 0xf1003d40, 0xf007d500, 0x403c412f, 0x2f4413c3, 0x4c40ef10,
-0x00000200, 0x00000000, 0x0002a007, 0x08248f09, 0x31440010, 0x04288d00,
-0x480c1003, 0x00c50020, 0x0c108305, 0xc1003148, 0x521f0480, 0x5030413c,
-0x0f4583c9, 0x1d600c10, 0x00000a00, 0x00000000, 0x00708004, 0x06b40161,
-0x79605a92, 0x8605ad00, 0x401e10b7, 0x09e10368, 0xde101784, 0xe1017940,
-0xd4079609, 0x5270501e, 0x478449f9, 0x11601e11, 0x00000200, 0x00000000,
-0x00001012, 0x083c084b, 0x71c0f050, 0x4d014f00, 0xc05c3027, 0x05c50960,
-0x5c10070c, 0xc30075c4, 0x60070c05, 0x4230c80c, 0x034e80cb, 0x49d08c30,
-0x00000040, 0x00000000, 0x003db802, 0x02fc00ff, 0x3cc00f70, 0xdc005f06,
-0xc08fe023, 0x08ff122f, 0x8df0237c, 0xff023d03, 0xb00ffc08, 0x023fc00f,
-0x01fe20f7, 0x0ac20ff0, 0x00000660, 0x00000000, 0x2017b015, 0x037c409f,
-0x37c00d70, 0x7c80d325, 0xc44d30b3, 0x16df8224, 0x4df0634c, 0xd30334d0,
-0xf60b4c08, 0x4334da8d, 0x034c01d3, 0x57800df2, 0x00000e00, 0x00000000,
-0x08198012, 0x03b4606d, 0x3b420ed0, 0xb420e148, 0x44cc11c3, 0x06f64168,
-0xced08384, 0xc10c3840, 0xf4170408, 0x0338401e, 0x038400a1, 0x4b404ed0,
-0x00000620, 0x00000000, 0x00790003, 0x07b401ed, 0x7b401ad0, 0xb403e101,
-0x40de1017, 0x01ed0160, 0x5ed197a4, 0xe9017240, 0x90278405, 0x0170405e,
-0x078501e1, 0x0f029ed0, 0x00000400, 0x00000000, 0x00732812, 0x237412cd,
-0x33403d90, 0x3402c100, 0x400c1003, 0x00c90020, 0x0cd00324, 0xc9003240,
-0xd0030400, 0x0030400c, 0x030453c1, 0x4b400cd2, 0x00000c20, 0x00000000,
-0x009da817, 0x05fc007f, 0x17c1a7f0, 0x7c007300, 0x10073001, 0x005f001c,
-0x05f0016c, 0x5b0016c0, 0xf0014c00, 0x4014c005, 0x49cc8373, 0x5fc005f0,
-0x00000620, 0x00000000, 0x02070012, 0x487c001f, 0x07c001f0, 0x3c100f00,
-0xc001f400, 0x00170007, 0x01f0004c, 0x175005c2, 0xf0007c00, 0x0007c201,
-0x0c7c881f, 0x4bc021f0, 0x00000c00, 0x00000000, 0x04270810, 0x067c029f,
-0x20c03970, 0x4c809300, 0xc009b202, 0x00974020, 0x0934020e, 0x930024c0,
-0x30020c00, 0x4024c008, 0x02680093, 0x40c009f0, 0x00000c20, 0x00000000,
-0x00262001, 0x3e74009d, 0x24501911, 0x44009110, 0x40091002, 0x00950064,
-0x09100244, 0x91002440, 0x30025400, 0x0a24dc09, 0x2a60c291, 0x045129d0,
-0x00000800, 0x00000000, 0x0024a018, 0x0274009d, 0x24400910, 0x44019100,
-0x40089202, 0x00850064, 0x08100244, 0x81002050, 0x14824480, 0x48204a29,
-0x026400d1, 0x604008d0, 0x00000200, 0x00000000, 0x00202010, 0x2234088d,
-0x20008810, 0x045c8102, 0x50881022, 0x28850220, 0x88102206, 0x814a2060,
-0x04221402, 0x02304088, 0x22240881, 0x414088d0, 0x00000080, 0x00000000,
-0x0506a01d, 0x587c161f, 0x80c16174, 0x0d061305, 0xc561b058, 0x16152584,
-0x20305845, 0x130584c0, 0x20584c54, 0x0584c160, 0x096c0243, 0x74c021f2,
-0x00000ac0, 0x00000000, 0x002fa819, 0x92fc04bf, 0x27c04bf8, 0x7804bf41,
-0xc049e012, 0x049f012f, 0x69f0127c, 0x9f012700, 0x70927c40, 0x0125c049,
-0x12fc04bf, 0x66c069f0, 0x00000e60, 0x00000000, 0x0127a018, 0x02fc06b3,
-0x2cc00bf0, 0x4c043313, 0xc0693052, 0x0093008d, 0x0970224c, 0x931524e0,
-0x710acc90, 0x01a6c209, 0x0a4c0093, 0x60c16936, 0x00000e00, 0x00000000,
-0x0007001c, 0x18748011, 0x045141d2, 0x0c151140, 0x40411050, 0x10111044,
-0xc1142014, 0x112102c1, 0x12105506, 0x0007c041, 0x00054451, 0x70400310,
-0x00000c20, 0x00000000, 0x00a3a010, 0x4a348681, 0xa04028d8, 0x06028120,
-0x40681002, 0x48810131, 0x48500204, 0x81052040, 0x50122414, 0x00aa510a,
-0x82c490a1, 0x40400a10, 0x00000e80, 0x00000000, 0x0425a818, 0x82740091,
-0x244008d0, 0x44349100, 0x40091002, 0x00910024, 0x09100244, 0x91002646,
-0x10027080, 0x402f400b, 0x42c408a1, 0x60400b10, 0x00000620, 0x00000000,
-0x0027a805, 0x267c0493, 0x244409f2, 0x4c009300, 0xc0093402, 0x00934025,
-0x0970024d, 0x93402440, 0x71026c00, 0x0026c009, 0x06480393, 0x14d00930,
-0x00000e20, 0x00000000, 0x48218014, 0x067c049f, 0x27c089f0, 0x1d201f00,
-0xc008f402, 0x009f2007, 0x09f0027c, 0x9f0023c0, 0xd1025c00, 0x0027c008,
-0x127d209f, 0x53d009f0, 0x00000600, 0x00000000, 0x00850814, 0x005c061f,
-0x07c001f0, 0x5c021300, 0xc0013000, 0x00038004, 0x0030000c, 0x130004c0,
-0x34404c80, 0x0106c001, 0x084d0213, 0x50408130, 0x00000420, 0x00000000,
-0x2014a014, 0x01d4807d, 0x174017d0, 0x74013100, 0x40051401, 0x005f0004,
-0x05100144, 0x51001542, 0xf0092c40, 0x00d6c045, 0x01040151, 0x51403514,
-0x00000200, 0x00000000, 0x0032a014, 0x4b0000cd, 0x27451cd2, 0x1401d100,
-0x400c1083, 0x20c10034, 0x0c500304, 0xd1003060, 0x100a3400, 0x00f6401c,
-0x031401c1, 0x50413d10, 0x00000a00, 0x00000000, 0x00388805, 0x0284818d,
-0x2b4106d2, 0xb498e100, 0x480e1003, 0x04c58230, 0x8e191384, 0xe1013960,
-0xd0023404, 0x04324008, 0x039410e1, 0x15400011, 0x00000200, 0x00000000,
-0x00780015, 0x859d01ef, 0xefc81ed2, 0x9c05e315, 0x503f3007, 0x01e10178,
-0x5c701784, 0xc301f8c0, 0x3406b891, 0x407ac81e, 0x049c0173, 0x54c11e34,
-0x00000040, 0x00000000, 0x0035a810, 0x027c009f, 0x27c005f0, 0x7c00df00,
-0xc96de10b, 0x4adf0037, 0x0db18b7c, 0xde00b7c5, 0xf0026c08, 0x4037c009,
-0x016c00df, 0x43c009f0, 0x00000660, 0x00000000, 0x007fb000, 0x07c881ff,
-0x64c099f0, 0x4c01f303, 0xc01d304f, 0x0bdb1874, 0x1f306fcc, 0xd302f448,
-0xb1064c01, 0x004dc01f, 0x07cc81b3, 0x03801f30, 0x00000e00, 0x00000000,
-0x02398015, 0x0084302d, 0x604052d0, 0xc409c100, 0x401d3037, 0x01d21071,
-0x1f5007c4, 0xf1027c40, 0x54368401, 0x000c500b, 0x038400b1, 0x57408210,
-0x00000620, 0x00000000, 0x00390000, 0x218408cd, 0x2840a8d0, 0x9408e022,
-0x400e9003, 0x00e1003c, 0x4e108384, 0xe1003a44, 0x94120440, 0x0029400e,
-0x00a41821, 0x03400e10, 0x00000400, 0x00000000, 0x04b32804, 0x0804021d,
-0x204090d0, 0x1400c100, 0x400c1003, 0x00c90031, 0x0c500304, 0xc1203250,
-0x54020500, 0x00204008, 0x09241291, 0x13400010, 0x00000c20, 0x00000000,
-0x04f5a815, 0x234c005f, 0x28500df0, 0xd500d348, 0xc00eb503, 0x00f10030,
-0x0f3403cd, 0xf3403ec0, 0xb0014c00, 0x4035c005, 0x0b6d83d1, 0x57c00d34,
-0x00000620, 0x00000000, 0x10370001, 0x033c105f, 0x27c00df0, 0x2c00df00,
-0xc00df003, 0x00d70037, 0x0df0837c, 0xdf0031c0, 0xf0007c00, 0x2033c005,
-0x0b5c02df, 0x07c805f0, 0x00000c00, 0x00000000, 0x003f0880, 0x20dc003f,
-0x2dc00b31, 0xdc05f300, 0xc00f3003, 0x00fb003c, 0x0ef003cc, 0xf3003cc4,
-0xb00dfc00, 0x003cc03e, 0x46cc0873, 0x00c08f20, 0x00000c22, 0x00000000,
-0x00360081, 0x0644e01d, 0x25c00910, 0x7420d100, 0x400d1503, 0x00d10034,
-0x0dd08354, 0xd1083540, 0x10007440, 0x02f54025, 0x14058251, 0x04401d10,
-0x00000802, 0x00000000, 0x8034a001, 0x03440add, 0x27401510, 0x7400d158,
-0x400d1003, 0x00c10074, 0x0dd00344, 0xd1003448, 0x90433400, 0x40944025,
-0x134602d1, 0x04400c50, 0x00000200, 0x00000000, 0x80302010, 0x0104004d,
-0xa3489410, 0x2404c100, 0x400d1043, 0x04c18234, 0x0cd03314, 0xc1403141,
-0x14303480, 0x40114000, 0x03460081, 0x40400050, 0x00000080, 0x00000000,
-0x0036a000, 0x005d009f, 0xebcc5130, 0xfc4bd301, 0xc0df30b7, 0x49f32174,
-0x1ff01fcc, 0xf3237cc0, 0xb0877c2f, 0x4004c80d, 0x020c0053, 0x00d00d74,
-0x00000ac0, 0x00000000, 0x083fa805, 0x00fc803f, 0x6de2d3f4, 0xfc0dce02,
-0xc2dff017, 0x07ff037b, 0x5df2277c, 0xff037fc1, 0xf01cfc09, 0x400fc003,
-0x00fc003f, 0x17c003b0, 0x00000e40, 0x00000000, 0x003fa003, 0x70fc0437,
-0x0fc1c3f0, 0xde023f02, 0xc00f70a0, 0x0cfb083e, 0x0fb003fc, 0xf7003ac0,
-0x3000cc04, 0x000cc00b, 0x00e440f3, 0x0cc40fb0, 0x00000e20, 0x00000000,
-0x00370801, 0x096c0a01, 0x874469d1, 0x44441d02, 0x400fd008, 0x88e5033c,
-0x0d009234, 0xfd003440, 0x50015408, 0x0034400d, 0x034402f5, 0x0d400d50,
-0x00000c20, 0x00000000, 0x0033a011, 0x82340015, 0x21404450, 0x04c04d09,
-0x614cd030, 0x20c92432, 0x0c904330, 0xcd007240, 0x11000400, 0x0031420c,
-0x002402c1, 0x4d440c94, 0x00000e80, 0x00000000, 0x0035a803, 0x03751111,
-0x270009d8, 0x44600c00, 0x400dd091, 0x00d90034, 0x0d109274, 0xdd007441,
-0x500454a0, 0x0035440d, 0x074440d5, 0x0d400d40, 0x00000620, 0x00000000,
-0x0133a802, 0x087c03d7, 0x15c021f0, 0x45049e06, 0xc00d7818, 0x00db0036,
-0x3cb0037c, 0xdf0036c0, 0x30874c00, 0x0005d008, 0x076c00d3, 0x89c00da0,
-0x00000e02, 0x00000000, 0x003d8007, 0xa16d007f, 0x57c021f0, 0xec007d08,
-0xc00ef006, 0x00f7103b, 0x8fe007fc, 0xff003fc0, 0xf003bc00, 0x003ac00f,
-0x81bc00ef, 0x1fd80ef2, 0x00000600, 0x00000000, 0x00b50802, 0x485c025b,
-0xb45035b4, 0x7e30d700, 0xc00df001, 0x80d70037, 0x0d710354, 0xd78837c0,
-0x11225e00, 0x2237c00d, 0x036d0cd3, 0x09400d92, 0x00000400, 0x00000000,
-0x02b4a013, 0x09440441, 0x3540a190, 0x72035102, 0x420fd203, 0x00f1203f,
-0xbd180344, 0xfa06f4c0, 0x10064480, 0x02b740ad, 0x034400fb, 0x6ec00fb2,
-0x00000200, 0x00000000, 0x0032a007, 0x00140449, 0x01400050, 0x348b0100,
-0x420cd000, 0x20c50833, 0x8c500354, 0xd1003140, 0x10061400, 0x30434008,
-0x010403c1, 0x1e420c10, 0x00000a00, 0x00000000, 0x007c8004, 0x04840161,
-0x48401e50, 0xb401a500, 0x001ed105, 0x09e10073, 0x1e108786, 0xc9007c40,
-0x10038401, 0x0073401e, 0x278441e9, 0x36409e94, 0x00000200, 0x00000000,
-0x00301012, 0x1b1c044b, 0x11c024f2, 0x34084740, 0x804cd000, 0x28c70033,
-0x0c50031c, 0xc10031c0, 0x30225400, 0x0033c08c, 0x014c08c3, 0x4bc00d30,
-0x00000040, 0x00000000, 0x1039b802, 0x03fc007f, 0x1fc20fb0, 0xfc009b00,
-0xc02ff209, 0x28ff003f, 0x0cd1237c, 0xfc103fcc, 0xf013fc00, 0x003f800f,
-0x03de38ee, 0x0bc00ff1, 0x00000660, 0x00000000, 0x0497a015, 0x067c005f,
-0x24c009b0, 0x7c009f00, 0xc8ed7013, 0x42df0037, 0x4df8035c, 0xdb2033c8,
-0xf0034c08, 0x0007c009, 0x037c12df, 0x54c00d38, 0x00000e00, 0x00000000,
-0x00398812, 0x02b4006d, 0x28680cb0, 0xb400ed00, 0x424ed003, 0x14cf043b,
-0x2ed003ac, 0xe42539c1, 0xf0039088, 0x003b400e, 0x019c00ed, 0x4d404e50,
-0x00000624, 0x00000000, 0x00790003, 0x07b6016d, 0x78401e90, 0xb4a1ed00,
-0x601e5007, 0x09ed037b, 0x5ed00784, 0xe1267b41, 0xd0078605, 0x007b401e,
-0x07b405ed, 0x04409c10, 0x00000400, 0x00000000, 0x08b32812, 0x0334424d,
-0xf1402d92, 0x3400dd00, 0x400cd033, 0x40c51033, 0x0cd02734, 0xc5083140,
-0xd02b1640, 0x0033400c, 0x071400cd, 0x49000d50, 0x00000c20, 0x00000000,
-0x22918817, 0x21fc1a7f, 0x5cd087b2, 0x7c027f01, 0x40057001, 0x405d0017,
-0x03d001c4, 0x51100b40, 0xd005cc00, 0x001f4405, 0x05f4005d, 0x5cc00510,
-0x00000620, 0x00000000, 0x10070012, 0x0870c01d, 0x06c02170, 0x7c101f04,
-0xc000f100, 0x001f0807, 0x01f00068, 0x170007c0, 0x70005c00, 0x8007c001,
-0xa07c020f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x00370810, 0x067c0097,
-0x64c019f8, 0x4c089300, 0xc409b003, 0x408f8025, 0x41b1024e, 0x930505c1,
-0x30426c00, 0x0020c008, 0x425c4393, 0x40c00970, 0x00000c20, 0x00000000,
-0x04262001, 0x62740291, 0xa4585978, 0x44419112, 0x4009d002, 0x809fa024,
-0x7012022c, 0x9101c448, 0x36060c40, 0x6026d809, 0x02448091, 0x04400910,
-0x00000800, 0x00000000, 0x0024a018, 0x02748295, 0xa04089d1, 0x44009100,
-0x4809d002, 0x009d3025, 0x01900244, 0x85400540, 0x94077400, 0x00244009,
-0x02160091, 0x60400950, 0x00000200, 0x00000000, 0x00242010, 0x22342881,
-0x20408850, 0x07088142, 0x4008d002, 0x0c8d0220, 0x89182264, 0x81022464,
-0x900a4640, 0x90224008, 0x0a0604c1, 0x40542812, 0x00000080, 0x00000000,
-0x0006b01d, 0x583c1617, 0x844161d0, 0x4c961305, 0x4801b350, 0x031d8585,
-0x61b80846, 0x078585e1, 0xb8007c9e, 0x8004e001, 0x001e0113, 0x74c00178,
-0x00000ac0, 0x00000000, 0x0037b819, 0x12fc04fe, 0x2fc04bf0, 0x7c04bf01,
-0xe169e252, 0x8c970127, 0x4be012f8, 0x9f012fc0, 0x780adc01, 0x00afc02b,
-0x0afc089d, 0x67c029f0, 0x00000e64, 0x00000000, 0x0027a018, 0x42cc88b7,
-0x2dc10bb8, 0x4c08f305, 0xc049f00a, 0x149b0126, 0x1b30222c, 0x93206fc1,
-0x3132dc80, 0x0023c009, 0x0a482093, 0x60c329b0, 0x00000e00, 0x00000000,
-0x1007081c, 0x48450a11, 0x84482110, 0x440a1141, 0x40a1d000, 0x14130504,
-0x31109044, 0x1502c740, 0x10384404, 0x00074401, 0x08440a31, 0x70402150,
-0x00000c20, 0x00000000, 0x0027a010, 0x12240485, 0x21414810, 0x16248504,
-0x4008d022, 0x008d0322, 0x48101264, 0x810d2341, 0x54021412, 0x006b4008,
-0x1e05c0a5, 0x48404890, 0x00000e80, 0x00000000, 0x0825a818, 0x0b648091,
-0x24480812, 0x56049501, 0x4809d8a2, 0x00990020, 0x01140244, 0x95040701,
-0x10024480, 0x002f4009, 0x024400b5, 0x60400950, 0x00000620, 0x00000000,
-0x00a7a805, 0x066c0297, 0x25801918, 0x5d009704, 0xc009e102, 0x009f0026,
-0x0130026c, 0x93000340, 0x70065c00, 0xc0a7c019, 0x024c0096, 0x14c009b0,
-0x00000e20, 0x00000000, 0x28358014, 0x0a5c009f, 0x27804974, 0x6c008b08,
-0xc009f086, 0x00970027, 0x81f0027c, 0x9f0107c0, 0xf00e1c40, 0x8927c459,
-0x023c009b, 0x5bd008f0, 0x00000600, 0x00000000, 0x01050814, 0x084c0013,
-0x87c881f2, 0x5c001f02, 0xc0007000, 0x40060006, 0x01b0005c, 0x1f0005cc,
-0x60007c20, 0x000fc001, 0x807c0033, 0x50c00132, 0x00000420, 0x00000000,
-0x80908014, 0x11c40075, 0x1f400770, 0x74107c20, 0x4005b001, 0x00510014,
-0xa3100104, 0x5d028c44, 0x14154000, 0x40134005, 0x01740041, 0x50400514,
-0x00000200, 0x00000000, 0x20b2a014, 0x034401d1, 0x37401cd0, 0x1401cd00,
-0x400c9003, 0x00c50032, 0x8c900314, 0xdd223140, 0x50071040, 0x0033400c,
-0x03340045, 0x50500c10, 0x00000a00, 0x00000000, 0x003c8005, 0x038442c5,
-0x3b4c02d0, 0xb400ed00, 0x400c8117, 0x08e10038, 0x5f1823c4, 0xcd013944,
-0x1003c400, 0x000b4006, 0x133400a5, 0x14400c10, 0x00000200, 0x00000000,
-0x00781015, 0x078d0161, 0x4bc41ef3, 0x1c01ef00, 0xc41eaa07, 0x8df705fe,
-0x9eb1379c, 0xef0079c0, 0x70079c01, 0x087bc01e, 0x37bc01a7, 0x54c01e30,
-0x00000040, 0x00000000, 0x0131b810, 0x017c00df, 0x27c00d70, 0x7ea09f00,
-0xc00db023, 0x22df10b7, 0xecc08b74, 0xdf31b64e, 0xf0031c0a, 0x00070005,
-0x237c005b, 0x43c00df1, 0x00000660, 0x00000000, 0x00ffa000, 0x27f401f9,
-0x7fc01fe0, 0xfc01ff00, 0xc11fb01f, 0x01fe007c, 0x1ff007cc, 0xff06ffc0,
-0xf007cc03, 0x007fc01f, 0x07fc017f, 0x00c19f30, 0x00000e00, 0x00000000,
-0x00398015, 0x23b604a1, 0x3b4082d0, 0xb480ed00, 0xc04f1053, 0x04ed003a,
-0x4ed003ac, 0xf9103b44, 0xd0038404, 0x000b4006, 0x13b400ad, 0x5550cf54,
-0x00000620, 0x00000000, 0x00390000, 0x82b4406d, 0x1b400ad0, 0xb408e500,
-0x640ed133, 0x00ed0038, 0x0ed00386, 0xed203b4c, 0xd0028600, 0x023b400e,
-0x4bb401ad, 0x00700e12, 0x00000400, 0x00000000, 0x00132804, 0x04361085,
-0x334038c0, 0x70108d00, 0x400c5003, 0x00cd0032, 0x0cd00726, 0xc9003340,
-0xd0020400, 0x00030004, 0x0734404d, 0x11400d50, 0x00000c20, 0x00000000,
-0x2235a815, 0x407c809f, 0x37c13df0, 0xf443df00, 0x400ff80f, 0x00fd003c,
-0x8dd01384, 0xfd063741, 0xd2074500, 0x0077041d, 0x07b4005d, 0x54400f14,
-0x00000620, 0x00000000, 0x00b70001, 0x083c005b, 0x93c061e0, 0x7c484f20,
-0xc00cb813, 0x00df0037, 0x2df0037c, 0xdf0037c0, 0xf0227c00, 0x0443c815,
-0x037c209f, 0x07c00df0, 0x00000c00, 0x00000000, 0x003f0880, 0x03fc003b,
-0x8fc00730, 0xcc01f300, 0xd00f3603, 0x00df003c, 0x1f3003fc, 0xff003fc0,
-0xf007fc00, 0x003fc00f, 0x035e80b3, 0x00d00f30, 0x00000c22, 0x00000000,
-0x01322081, 0x2d740051, 0x87402552, 0x44111100, 0x420d1083, 0x80dd2034,
-0x4d120374, 0xdd203748, 0xd2037480, 0x60074805, 0x03748051, 0x04400df2,
-0x00000800, 0x00000000, 0x0034a001, 0x00740399, 0xa7410d10, 0x44089100,
-0x400d5103, 0x00dd0034, 0x4d140374, 0xdd007740, 0xd0237400, 0x0037440d,
-0x03740051, 0x04400d12, 0x00000200, 0x00000000, 0x00302810, 0x00340001,
-0x03400010, 0x04000108, 0x400c1003, 0x00cd0030, 0x0c100374, 0xcd007340,
-0xd0023420, 0x00026004, 0x03740081, 0x40500cd0, 0x00000080, 0x00000000,
-0x0036a000, 0x027c001b, 0x07c00134, 0x8c009300, 0xe20d3003, 0x00ff883c,
-0x0d3803fe, 0xfd8037e0, 0xf8027e00, 0x8037e00d, 0x03de0093, 0x00e00d38,
-0x00000ac0, 0x00000000, 0x003ba825, 0x00fc803f, 0x0fc003f0, 0xfc003f00,
-0xc00ff003, 0x00ff003f, 0x0ff003f8, 0xff003fc0, 0xf002fc00, 0x100f8007,
-0x03fc007d, 0x17c00ff0, 0x00000e60, 0x00000000, 0x003fa003, 0x40fc002b,
-0x3fc423b8, 0xcec09522, 0xc24fb033, 0x0c33133f, 0xc1704b7c, 0xf300bcc1,
-0x2093fca0, 0x411cc08f, 0x00fc08b3, 0x0ce06f30, 0x00000e00, 0x00000000,
-0x08331801, 0x091c8013, 0xbdc26514, 0xcc16b100, 0x40cf1033, 0x02c101bf,
-0x6c100bc4, 0xf100bc40, 0x100b7410, 0x0494c04d, 0x005c44d1, 0x0c40ad10,
-0x00000c20, 0x00000000, 0x0023a011, 0x52340045, 0x33606012, 0x14888102,
-0x410c5113, 0x06d58333, 0x40100326, 0xc521b048, 0x10237444, 0x0306440c,
-0x007400c1, 0x4c404c10, 0x00000e80, 0x00000000, 0x0225a007, 0x23541015,
-0x31628510, 0x54009180, 0x400dda83, 0x00d50037, 0x1d140306, 0xd5003440,
-0x10037400, 0x0014408d, 0x095408d1, 0x0c440d10, 0x00000620, 0x00000000,
-0x0077a882, 0x147c0917, 0x37c00910, 0x5c409300, 0xc00d7403, 0x00154037,
-0x0878036c, 0xd74034c0, 0x30037860, 0x0056c030, 0x097c0093, 0x00400d30,
-0x00000e22, 0x00000000, 0x607d8007, 0x04fc813b, 0x3fc40f73, 0x2d00af20,
-0xc00f3003, 0x20fb383b, 0x0ff3036c, 0xfb003bd0, 0xf4037c00, 0x015fc01b,
-0x01dc01ff, 0x1fc80df4, 0x00000602, 0x00000000, 0x40250802, 0x0a6c0253,
-0x37c809b4, 0x4c009700, 0xc80db083, 0x08db2037, 0x0934036d, 0xd30034c0,
-0xb0134c00, 0x0025c021, 0x097c00df, 0x08c04d30, 0x00000420, 0x00000000,
-0x2024a013, 0x02441110, 0xff413d10, 0xc50bbd02, 0x41af1003, 0x00d302bf,
-0x0d1083e8, 0xf0003c40, 0x10039400, 0x0112c009, 0x133400dd, 0x0d402f10,
-0x00000200, 0x00000000, 0x00262003, 0x00641189, 0x33613012, 0x04088502,
-0x401c1003, 0x801110b3, 0x04000304, 0xc1003040, 0x90031400, 0x00114808,
-0x483400cd, 0x1c400d10, 0x00000a00, 0x00000000, 0x006a0804, 0x058509b1,
-0x7b401210, 0x8601bd00, 0x405e1017, 0x05e92173, 0x9e000784, 0xc1017040,
-0x10079401, 0x105a4496, 0x04f401ed, 0x7d409e14, 0x00000200, 0x00000000,
-0x00321012, 0x802c2003, 0x33423813, 0x0e018721, 0xc01c3827, 0x01c30173,
-0x54201704, 0xc30070c0, 0xb0071c05, 0x0011c629, 0x023c68cf, 0x48c08c30,
-0x00000040, 0x00000000, 0x003da802, 0x01fc207f, 0x37c08b72, 0xfc148f00,
-0x880d70ab, 0x00d740b7, 0x8ff263fc, 0xff02bfd2, 0xf143fc04, 0x003fc007,
-0x23bc40ff, 0x0bc18ff0, 0x00000660, 0x00000000, 0x00278014, 0x074c000f,
-0x37e00530, 0x4c029f04, 0xd04df02b, 0x401f12b4, 0x0d70937c, 0xdf12b4c4,
-0xf0034e06, 0x00149003, 0x017c80df, 0x54c00df0, 0x00000e00, 0x00000000,
-0x00299912, 0x03ac002d, 0x39c80630, 0x84148d21, 0x432c7003, 0x00ef0038,
-0x0f103334, 0xed003844, 0xd3079c08, 0x00184208, 0x01b400ed, 0x4c504ed0,
-0x00000624, 0x00000000, 0x00790000, 0x072401ad, 0x7b601e55, 0xb401ad12,
-0x405ed017, 0x01ed017a, 0x1e1017b4, 0xcd017844, 0xd107a409, 0x08ea4832,
-0x87b401ed, 0x06501ed0, 0x00000402, 0x00000000, 0x10332016, 0x432640cd,
-0x35400c50, 0x35409d00, 0x400d5003, 0x00cd0032, 0x0c100334, 0xcd003040,
-0xd0031400, 0x00724008, 0x233400dd, 0x4a4c0cd0, 0x00000c20, 0x00000000,
-0x80178817, 0x11c4027d, 0x17400750, 0x7c807f00, 0x4805f001, 0x007f0016,
-0x0712017c, 0x5f8014c8, 0xf001ec00, 0x009ec037, 0x0df4005f, 0x5ed005d0,
-0x00000620, 0x00000000, 0x00058012, 0x007c101f, 0x05c04138, 0x0c001f80,
-0xc0217000, 0x02170005, 0x11a0007c, 0x1f8007c0, 0xf0005c00, 0x0045c001,
-0x047c001f, 0x49c001f0, 0x00000c00, 0x00000000, 0x00210810, 0x024d009b,
-0x27ca0970, 0x4c029308, 0xc009b002, 0x00930260, 0x0830023c, 0x8f2024c0,
-0x30820c20, 0x0024d108, 0x224c009f, 0x40c018f2, 0x00000c20, 0x00000000,
-0x00260001, 0x42448083, 0xa7c02971, 0x45039b40, 0x51291202, 0x02950164,
-0x09b10274, 0x9d002440, 0x500e5400, 0x00644009, 0x0644009d, 0x06c019d0,
-0x00000800, 0x00000000, 0x0024801c, 0x02440099, 0xa74029d0, 0x46109100,
-0x48091402, 0x00910024, 0x09920276, 0x95002440, 0x10224400, 0x00746009,
-0x02440095, 0x604089d0, 0x00000200, 0x00000000, 0x82202814, 0x22040089,
-0x234088d0, 0x04808108, 0x40081022, 0x08c50220, 0x88902234, 0x8d022050,
-0x50021408, 0x82206428, 0x0205088d, 0x424088d0, 0x00000080, 0x00000000,
-0x1586b01d, 0x584c001b, 0x07c161f9, 0x4c141105, 0xe141b058, 0x56130584,
-0x61b0587c, 0x1f0584c5, 0x32514402, 0x2584c941, 0x814e021f, 0x74c161f8,
-0x00000ac0, 0x00000000, 0x012fa919, 0x12fc00b7, 0x25c04b70, 0x7c34bf05,
-0xc149f412, 0x04bf0127, 0x4bb0127c, 0x9f0127c8, 0xf0027c06, 0x013fc00b,
-0x03fca4bf, 0x67c048f2, 0x00000e64, 0x00000000, 0x00a7a018, 0x0adc00bf,
-0x2cc02ff0, 0x7c4cb701, 0xc90b320a, 0x00bf00af, 0x69f0127c, 0x9314a4c9,
-0x3012cc10, 0x01acc049, 0x02cc0093, 0x64c02bf0, 0x00000e00, 0x00000000,
-0x2003181c, 0x086d001d, 0x84d00078, 0x5c0e1147, 0x4021b008, 0x001d0187,
-0x20d01064, 0x11008442, 0x18287406, 0x01044271, 0x00445411, 0x704821d0,
-0x00000c22, 0x00000000, 0x00a10012, 0x1a34009d, 0x200828d0, 0x36008100,
-0x4548509a, 0x168d81a3, 0x08d04a34, 0x85812040, 0x10026410, 0x01a24188,
-0x02040091, 0x484068d0, 0x00000e80, 0x00000000, 0x00252018, 0x0364009d,
-0x344029d0, 0x1420d008, 0x40095d02, 0x109d1027, 0x09d00264, 0x85102042,
-0x10027480, 0x00664209, 0x12450891, 0x604009d0, 0x00000620, 0x00000000,
-0x0067a805, 0x127c1b9f, 0x24c009d0, 0x7c809300, 0x40095902, 0x219f3027,
-0x08f80274, 0x974024c0, 0x10024c00, 0x00a6c009, 0x0e4c0083, 0x14d009f0,
-0x00000e20, 0x00000000, 0x01258012, 0x027d009f, 0x27c00970, 0x5c009f28,
-0xc009b002, 0x049f0027, 0x09f0027c, 0x9b4027d0, 0xf4025c00, 0x4025c009,
-0x027c009f, 0x5bc009f0, 0x00000600, 0x00000000, 0x00050810, 0x084c0213,
-0x00e0a170, 0x7c001300, 0xc001b000, 0x12130007, 0x01f0006c, 0x131004c0,
-0x31004c00, 0x4084c000, 0x044c0013, 0x50c001f0, 0x00000420, 0x00000000,
-0x0014a014, 0x01c43361, 0x5d4007d0, 0x74007d30, 0x40174081, 0x0371001f,
-0x07920168, 0x51001448, 0x10019400, 0x00545007, 0x09c40051, 0x505007d0,
-0x00000200, 0x00000000, 0x0032a014, 0x630406c9, 0x70451d93, 0x3400c108,
-0x601c1003, 0x0bc90033, 0x0c500304, 0xc8083040, 0x10030600, 0x4034440c,
-0x030400c1, 0x504189d0, 0x00000a00, 0x00000000, 0x01788801, 0x03858029,
-0x19600e90, 0xb4426d04, 0x41025013, 0x41e9005b, 0x8e9203a4, 0xe9083040,
-0x14019404, 0x0420405e, 0x838404e1, 0x144002d0, 0x00000200, 0x00000000,
-0x43781011, 0x858c81e3, 0x786216f0, 0xfc41a300, 0xc01e341f, 0x01cb0073,
-0x5ee0078c, 0xcb0278c0, 0x32048c07, 0x0078e02c, 0x078d05f3, 0x54c01ff0,
-0x00000040, 0x00000000, 0x0235a810, 0x017d0007, 0x17c00df0, 0x7c005f00,
-0xc009305b, 0x80d70037, 0x2db02b7c, 0xd713b7c4, 0xf0003c50, 0x0027c01d,
-0x037c09df, 0x43c007f2, 0x00000660, 0x00000000, 0x007d2000, 0x27fe0137,
-0x7cc05df2, 0x4c09f902, 0xc01f7027, 0x01f3027c, 0xfd320f4c, 0xd30374c0,
-0x30170c01, 0x007dc01f, 0x05bc01f3, 0x08c89f30, 0x00000e00, 0x00000000,
-0x02391815, 0x238c0863, 0x4ac01030, 0x0c0d2102, 0x40105207, 0x018f0054,
-0x9f1007c4, 0xcb007441, 0x50250c61, 0x423c408f, 0x23b400e1, 0x5440ce10,
-0x00000620, 0x00000000, 0x00390000, 0xa114003d, 0x38438610, 0xa448a101,
-0x600ed003, 0x0c601039, 0x0e121384, 0xe5c23860, 0x9000b424, 0x0028400e,
-0x03b410e1, 0x20400a10, 0x00000400, 0x00000000, 0x80312004, 0x01040041,
-0x00400091, 0x04000100, 0x40089003, 0x01150031, 0x3c100304, 0xd9003040,
-0xd4801440, 0x00a0402c, 0x0b3400c1, 0x18500810, 0x00000c20, 0x00000000,
-0x003d8815, 0x435c1117, 0x24500938, 0xec00d340, 0xd00df003, 0x06d10025,
-0x0f3403cc, 0xf7203cd0, 0xb0037c80, 0x00b4d05f, 0x0f7c01f3, 0x54c00934,
-0x00000620, 0x00000000, 0x00370001, 0x035c8297, 0xb7c00c30, 0x7c02d708,
-0x40057003, 0x04df2006, 0x4cf0037c, 0xdc1033c0, 0x70014c40, 0x0167c10d,
-0x077c00df, 0x27c001f0, 0x00000c00, 0x00000000, 0x80330884, 0x23cd0933,
-0x04c001f0, 0xcc003e00, 0xc055f103, 0x00d3187c, 0x0f3003c4, 0xf3203ce0,
-0x3401cc00, 0x003cc00e, 0x43fc00f3, 0x07c009e0, 0x00000c20, 0x00000000,
-0x00360085, 0x0f558485, 0x96c09d70, 0x44024900, 0xc225f003, 0x40db0036,
-0x0d15036c, 0xd1103440, 0x10010500, 0x0020400f, 0x065c00db, 0x874011d0,
-0x00000800, 0x00000000, 0x0034a001, 0x80440011, 0x254009d0, 0x4440dd82,
-0x4028d003, 0x00d10120, 0x0d100314, 0xd1003440, 0x10074600, 0x0034400d,
-0x237400d1, 0x074019d0, 0x00000200, 0x00000000, 0x88302810, 0x00140005,
-0x236060d0, 0x04109901, 0x4100d883, 0x10890202, 0x6c10c334, 0xc1043040,
-0x10410410, 0x0034500c, 0x071400c9, 0x434008d0, 0x00000080, 0x00000000,
-0x003eb000, 0x00440011, 0x455031d9, 0x8c0b0f00, 0xc091f137, 0x41532174,
-0x3f10a7dc, 0xe301fc50, 0x303d4c8f, 0x0024c00d, 0x037c00d3, 0x07c009f0,
-0x00000ac0, 0x00000000, 0x003fa805, 0x00fd002f, 0x84023370, 0xec011f00,
-0xc0517037, 0x111f0377, 0x3ff017ec, 0xff457fc8, 0xf015fd05, 0x002fc00f,
-0x02dc00ff, 0x17c00bf0, 0x00000e60, 0x00000000, 0x002fa003, 0x00fc003b,
-0x0fc00fb0, 0xfcc43302, 0xc08ff030, 0x003b001e, 0x0fb010ec, 0xfb003bc0,
-0x3002fc04, 0x003ec003, 0x00ec00f3, 0x0cc00f30, 0x00000e00, 0x00000000,
-0x20270801, 0x00748081, 0x84480f10, 0x74c81102, 0x404fd020, 0x12d11194,
-0x0d502354, 0xf10435c0, 0x34023408, 0x02bd4601, 0x024400d5, 0x05400f10,
-0x00000c60, 0x00000000, 0x0023a011, 0x82348889, 0x32500c90, 0x14a04109,
-0x404cd010, 0x060d0492, 0x0c100024, 0xc9013340, 0x10001400, 0x00304208,
-0x022400c1, 0x44440c10, 0x00000e80, 0x00000000, 0x0025a803, 0x43740391,
-0x34440d10, 0x7406d102, 0x400dd013, 0x00c10010, 0x0d510344, 0xd1083740,
-0x900664a0, 0x0035430d, 0x036400d5, 0x0d400d10, 0x00000600, 0x00000000,
-0x00278802, 0x087c839b, 0xc6c00db2, 0x7c201300, 0xc80df084, 0x803b011e,
-0xad3400ec, 0xdb02b7c0, 0x300e7c40, 0x0036c025, 0x256c00d3, 0x08400d30,
-0x00000e22, 0x00000000, 0x01298007, 0x15fc00bf, 0x4e400ef0, 0xf401bf44,
-0xc00ef083, 0x00fd001f, 0x1ff003fc, 0xdf107cc8, 0x7003bc00, 0x0037c03e,
-0x079c00ef, 0x1fc00ef2, 0x00000600, 0x00000000, 0x00250802, 0x0a0c00df,
-0xb4c00d70, 0x4c025f08, 0xc00df100, 0x003f001e, 0x0db020bc, 0xd340b6c0,
-0x700a5c40, 0x2030c101, 0x025d00d7, 0x08d00d30, 0x00000420, 0x00000000,
-0x0024a013, 0x034400dd, 0xf6c02f10, 0x4507dd00, 0x400fd003, 0x00dd0017,
-0x7d100340, 0xf1003740, 0x10136c00, 0x083c481d, 0x034400f1, 0x4c400f1a,
-0x00000200, 0x00000000, 0x0022a007, 0x000405cd, 0x05411c50, 0x14074d10,
-0x420c9000, 0x000d2033, 0x7cd04010, 0xc5403640, 0x10060400, 0x003044a0,
-0x011400cd, 0x0d400c10, 0x00000a80, 0x00000000, 0x00788004, 0x048401ed,
-0x4b509c10, 0x84096d04, 0x401ed004, 0x41ed007b, 0x1e103784, 0xe5007b40,
-0x1003a601, 0x00780000, 0x270481e9, 0x10401c10, 0x00000820, 0x00000000,
-0x02201012, 0x004c10cf, 0x81c18c70, 0x1c00df00, 0x480cf00b, 0x041f8033,
-0x0cf0101c, 0xc700b2c0, 0x702a1c20, 0x0030c08c, 0x221c00df, 0x48c08c10,
-0x00000040, 0x00000000, 0x002db802, 0x20fc08ff, 0x0ec08ff0, 0xfc00ff00,
-0x410ff003, 0xc0ff003f, 0xadf0139c, 0xdb0037c0, 0xf0136c02, 0x023fc04f,
-0xa3fc00f7, 0x0bc00ff2, 0x00000620, 0x00000000, 0x0027a015, 0x044d00d3,
-0x35c08d30, 0x4d00df00, 0xc07df013, 0x00330036, 0x4c3400cd, 0xd30230c0,
-0xf002fc02, 0x01b4c00d, 0x847c00d3, 0x43c04d32, 0x00000e00, 0x00000000,
-0x00398812, 0x000400f7, 0x38c08c10, 0x8400cd08, 0x40ccd043, 0x00c10830,
-0x4e100304, 0xf5023840, 0xd0038404, 0x033c500e, 0x02b440e5, 0x4b414e50,
-0x00000664, 0x00000000, 0x00f90003, 0x048401e5, 0x7b405e10, 0x8481ed00,
-0x405ed08f, 0x0121007a, 0x9f100484, 0xe5017c40, 0xd004b409, 0x0278401e,
-0x06340de1, 0x13429e10, 0x00000400, 0x00000000, 0x20772812, 0x00042ac5,
-0xb1400c10, 0x0404cd01, 0x400cd003, 0x00c14034, 0x2c100305, 0xd5203040,
-0xd0070400, 0x0030406d, 0x033400c5, 0x5b400c50, 0x00000c00, 0x00000000,
-0x005d8817, 0x45cc0173, 0x9fc00534, 0x4c007d10, 0xc005f005, 0x00530016,
-0x0231014c, 0x57160cd1, 0xf045fc00, 0x0014c077, 0x41f40053, 0x5fc00534,
-0x00000e20, 0x00000000, 0x00070012, 0x007c921d, 0x868420f0, 0x7ca01f00,
-0xc001f240, 0x203f0007, 0x21f008fc, 0x1f0007c0, 0xf0407c00, 0x0007c021,
-0x007c001f, 0x4bc801f0, 0x00000600, 0x00000000, 0x00270810, 0x024c008b,
-0x20e409f0, 0x4c009300, 0xc009b003, 0x40870027, 0x01360e4c, 0x970004c1,
-0x74021c00, 0x0825c059, 0x024c0097, 0x43c009f0, 0x00000420, 0x00000000,
-0x00260001, 0x06540091, 0xa4e0c970, 0x54009100, 0x4409d002, 0x00910027,
-0x91100a2c, 0x91000440, 0x52064400, 0x00244019, 0x82440091, 0x174009d0,
-0x00000800, 0x00000000, 0x0024a018, 0x06440098, 0x265409d0, 0x44018100,
-0x40099202, 0x00b50027, 0x055202c4, 0x95080040, 0xd0225400, 0x10234809,
-0x02440085, 0x734009d0, 0x00000200, 0x00000000, 0x12202010, 0x721408c1,
-0x21400850, 0x1408c102, 0x4008d202, 0x2ca10323, 0x8c1032a4, 0x81022050,
-0xd00a0402, 0x0122402c, 0x0a040085, 0x534028d0, 0x000000a0, 0x00000000,
-0x0586b01d, 0x184c161b, 0x964141f0, 0x4c161345, 0xc001a050, 0x031700c7,
-0x61700dcc, 0x170584c1, 0xf0005c14, 0x02c7c001, 0x004d1e17, 0x67c001f0,
-0x00000ac0, 0x00000000, 0x092fb819, 0x12fc04bf, 0x3ec009f2, 0x7c04bf01,
-0xc169f052, 0x0c9f0327, 0x4bf03278, 0x9f012fc0, 0x740afc00, 0x0265442a,
-0x0afc819b, 0x67c029f0, 0x00000e24, 0x00000000, 0x0227a018, 0x42fc08bf,
-0x3cc14930, 0x7c10bf00, 0xc109f042, 0x01930067, 0x5a3016cc, 0x930663c1,
-0xf0324c20, 0x0424c34a, 0x027c049b, 0x60c049b0, 0x00000e00, 0x00000000,
-0x0387081c, 0x00740a1d, 0x805021b0, 0x5c021d0a, 0x4021d000, 0x1e114087,
-0x7150146c, 0x15008740, 0xd039453e, 0x00854061, 0x00740211, 0x60414110,
-0x00000c60, 0x00000000, 0x0023a010, 0x5234048d, 0x20400810, 0x34148d14,
-0x4008d002, 0x008105a3, 0x08904a04, 0x81012741, 0xd0020400, 0x05204518,
-0x52341c89, 0x48402890, 0x00000400, 0x00000000, 0x0825a818, 0x0274009d,
-0x24400990, 0x54109d01, 0x4009d282, 0x00910027, 0x01d00064, 0x95042740,
-0xd2824440, 0x00254009, 0x2a742095, 0x60400910, 0x00000600, 0x00000000,
-0x3067a805, 0x1e7c139f, 0xa4c00930, 0x74289f00, 0xc409f24e, 0x00934027,
-0x41b0004c, 0x830023c0, 0xf08a4c00, 0x0024c009, 0x0a7c009b, 0x149009b0,
-0x00000e20, 0x00000000, 0x00a58014, 0x127c049c, 0x27c00df0, 0x5c019f00,
-0xc009f026, 0x009f0027, 0x9170007c, 0x9f1227c8, 0xf2437c00, 0x0827c139,
-0x067c009b, 0x4bc009f0, 0x00000600, 0x00000000, 0x00050814, 0x807c021f,
-0x860240f0, 0x7c201301, 0xc001f008, 0x40030801, 0x2132100c, 0x131004d0,
-0x30085c00, 0x0006c801, 0x887c2013, 0x43c001f0, 0x00000420, 0x00000000,
-0x0014a014, 0x4574007d, 0x5d4815d0, 0x74007101, 0x4005d001, 0x005b0014,
-0xa3100cc5, 0x75001c41, 0x160d4400, 0x00144017, 0x01748051, 0x534005d0,
-0x00000200, 0x00000000, 0x0032a014, 0x037401c9, 0x32400cd0, 0x3480c110,
-0x400cd883, 0x00c10031, 0x1c100305, 0xc1003040, 0x10071400, 0x08365425,
-0x037400c1, 0x53400dd8, 0x00000a00, 0x00000000, 0x08388005, 0x03b442ad,
-0x79502ed0, 0xb400e100, 0x405cd013, 0x04c90138, 0x1f122b14, 0xe5023848,
-0x1446c488, 0x1038502e, 0x23b400e1, 0x07404ed8, 0x00000220, 0x00000000,
-0x00781015, 0x06bc01ef, 0x7ac01cd0, 0xbc012300, 0xc01ef01f, 0x01e32071,
-0x1e34478d, 0xf34378c1, 0x30a79c05, 0x417ed016, 0x07bc01e3, 0x47c0bef0,
-0x00000040, 0x00000000, 0x0235b810, 0x827c001f, 0x17c269f0, 0x7c80df40,
-0x408df003, 0x84df0137, 0xcdf29364, 0xdb00b7c0, 0xf2033c00, 0x07b7c00d,
-0x037c22df, 0x43c02df0, 0x00000620, 0x00000000, 0x007ba800, 0x26cc01f3,
-0x5fc03ff2, 0xfc81ff00, 0xc01f7027, 0x13f304fd, 0x1f3007cc, 0xf3007fc0,
-0x3004cc01, 0x087fc09f, 0x87cc93f3, 0x00c01f30, 0x00000400, 0x00000000,
-0x08399015, 0x828408ab, 0x2840aed0, 0xf400ed02, 0x400f10c3, 0x10e10038,
-0x4e501384, 0xe1213b40, 0x10008404, 0x013b40ce, 0x038c00fb, 0x54680e14,
-0x00000460, 0x00000000, 0x063d0000, 0x428400e1, 0x184006d8, 0xb4002d00,
-0x400e5003, 0x00e10031, 0x0e110384, 0xe1203b40, 0x9020a420, 0x083b440a,
-0x03a400e1, 0x00400e10, 0x00000400, 0x00000000, 0x10332004, 0x02040201,
-0x004000d0, 0x3406cd00, 0x440c1007, 0x45c14030, 0x3c521704, 0xc100f340,
-0x92012540, 0x00334208, 0x0b0000c9, 0x10400c11, 0x00000400, 0x00000000,
-0x0079a035, 0x074d0041, 0x24d00df0, 0xfc00df00, 0xc00f7003, 0x03f3003d,
-0x8d344f4d, 0xf3063fc1, 0xb0036c00, 0x003fc235, 0x1fed00f3, 0x54d00f20,
-0x00000620, 0x00000000, 0x00370001, 0x037c00df, 0x31c024f0, 0x3c001f00,
-0xc40cf003, 0x20cf0037, 0x0df0037c, 0xcf0037c0, 0x72475c00, 0x0037c059,
-0x031c00df, 0x07c00df0, 0x00000c00, 0x00000000, 0x803f0080, 0x02cc1173,
-0x2cc03ff0, 0xcc002300, 0xc00f0043, 0x00df003d, 0x0f38030c, 0xff003cc0,
-0xf2131c00, 0x0037c00f, 0x434c00f3, 0x13c00f30, 0x00000c22, 0x00000000,
-0x00362081, 0x02540351, 0x554011d0, 0x440b1102, 0x400db003, 0x00dd0834,
-0x0c100344, 0xdd083440, 0x10024400, 0x0037411d, 0x036c80db, 0x17400d10,
-0x00000802, 0x00000000, 0x0034a001, 0x07440611, 0x044009d0, 0x4402d110,
-0x400d5003, 0x00dd2035, 0x1d520774, 0xdd083440, 0x90005600, 0x0033401d,
-0x034400c1, 0x07400d10, 0x00000200, 0x00000000, 0x00342810, 0x03140091,
-0x204000d0, 0x04200500, 0x400cd003, 0x00cd0030, 0x1c100735, 0xcd003052,
-0x10010400, 0x00334008, 0x032600c9, 0x43400c10, 0x000000a0, 0x00000000,
-0x0036a000, 0x024c0001, 0x04c001f0, 0x4d001340, 0xc00d7003, 0x00ff003d,
-0x0d54037c, 0xdf083c40, 0xf0005c00, 0x003fc009, 0x034c40f3, 0x03c00e34,
-0x00000ac0, 0x00000000, 0x003fa805, 0x02fc003f, 0x0fd002f0, 0xfc003b00,
-0x800fb003, 0x40ff103f, 0x0ff003cc, 0xef003bc0, 0xf100fc00, 0x003fc00b,
-0x03fc00ff, 0x17c00ff0, 0x00000e20, 0x00000000, 0x023fa003, 0x50ed003f,
-0x37c083f0, 0xfc04d300, 0xc2cdb002, 0x06df01bf, 0x0f3019fc, 0xf3003cc0,
-0xf023dc04, 0x023cd08e, 0x12fc04ff, 0x0cc04b31, 0x00000e00, 0x00000000,
-0x01370801, 0x1845021d, 0xbb4081d2, 0x7402fb22, 0x40cf7032, 0x8edd00bf,
-0x0d100874, 0xf106b440, 0xd003441e, 0x0130404d, 0x227402dd, 0x0c402d10,
-0x00000c20, 0x00000000, 0x0033a011, 0x4134020d, 0x334000d0, 0x3416c10d,
-0x400cd140, 0x00cd0333, 0x1c101914, 0xc1813444, 0xd0131404, 0x0030600c,
-0x023408cd, 0x4c428c12, 0x00000e80, 0x00000000, 0x0035a803, 0x0154081d,
-0x374401d0, 0x7440d910, 0x400dd006, 0x40dd0037, 0x1d100174, 0xd1003442,
-0xd0034400, 0x0035410d, 0x027400dd, 0x0c404d11, 0x00000620, 0x00000000,
-0x0037a802, 0x0b7d101f, 0x37c03df0, 0x7c00d300, 0xc00db047, 0x00dd0037,
-0x0c310938, 0xd30034d0, 0xf0035c00, 0x0034d08c, 0x027c00df, 0x08c00934,
-0x00000e22, 0x00000000, 0x203d8007, 0x036c817f, 0x3fc09df2, 0xfc00ff00,
-0xc20d5203, 0x80ff003f, 0x0ff000fc, 0xdf003fc0, 0xf00bfc00, 0x003ec01f,
-0x163c00df, 0x1fc21ef8, 0x00000600, 0x00000000, 0x02350802, 0x096c009f,
-0x31d02134, 0x7c80d308, 0xd00d3401, 0x00d70034, 0x4db0095c, 0xd70037c0,
-0xf0435c00, 0x4034c80d, 0x024c00d3, 0x08d00d30, 0x00000420, 0x00000000,
-0x087ca013, 0x294500dd, 0x3c40a110, 0x7400f100, 0x000f1003, 0x00f5003c,
-0x0d100144, 0xfd103b40, 0xd1034491, 0x003c500d, 0x025400f1, 0x6c40ad10,
-0x00000200, 0x00000000, 0x0072a007, 0x000440dd, 0x30400090, 0x3400c100,
-0x409c1002, 0x20c50030, 0x2c908104, 0xd5003340, 0xd00b1401, 0x0032500c,
-0x830080c5, 0x1c402c10, 0x00000a00, 0x00000000, 0x00788004, 0x048409cd,
-0xf8409290, 0xf409e102, 0x409e1037, 0x8de51070, 0x5e1024c4, 0xec007b41,
-0xd2878405, 0x007a429e, 0x279421e5, 0x74001e14, 0x00000200, 0x00000000,
-0x00301012, 0x2b0c00cf, 0x71c0fcb0, 0x3c85c301, 0xc05c3406, 0x01d70030,
-0x9cb0290c, 0xc70173c0, 0xf21f1c01, 0x2832c88c, 0x030c00c7, 0x48c00830,
-0x00000040, 0x00000000, 0x003db802, 0x03dc00ff, 0x37e00d70, 0x3c0aff42,
-0xc08df083, 0x38df00b7, 0x0ff0a3ae, 0xde0237c0, 0xf0237c10, 0x023dc08f,
-0x03fc10fb, 0x0bc00af0, 0x00000660, 0x00000000, 0x0037a015, 0x034c001f,
-0x36c00df0, 0x6c08d301, 0xc04d3082, 0x00df033c, 0x2db0034c, 0xd30237c0,
-0x311b4c06, 0x0034c04c, 0x02fc01d3, 0x57c00d30, 0x00000e00, 0x00000000,
-0x00b98812, 0x03ac006d, 0xb8000ed0, 0x8404c105, 0x42cc1003, 0x04ed1138,
-0x0e100094, 0xc1013f41, 0x1053c40c, 0x00bd40ce, 0x02b405e1, 0x4f400e10,
-0x00000624, 0x00000000, 0x00790003, 0x0f8503ad, 0x71401ed0, 0x0401e100,
-0x40de1046, 0x05ed007a, 0x9e1007c4, 0xe1007b40, 0x5037a401, 0x007a40ff,
-0x063400e1, 0x07401a10, 0x00000400, 0x00000000, 0x00332812, 0x436400cd,
-0x31400dd0, 0x0400c100, 0x400c1403, 0x00cd0036, 0x4c100314, 0xc1003340,
-0x50132440, 0x1037445d, 0x223400c1, 0x4b400810, 0x00000c20, 0x00000000,
-0x0015a817, 0x01cc007f, 0x17d0f7f0, 0xac005300, 0xc0053005, 0x005f0016,
-0x333409cc, 0x63001fc1, 0x704ced00, 0x40168033, 0x053c0053, 0x5fc00538,
-0x00000620, 0x00000000, 0x00070012, 0x007c041f, 0x02c001f0, 0x7c801f00,
-0xc001f000, 0x401f0005, 0x2170047c, 0x1f0007c4, 0x90005e00, 0x0005c001,
-0x007c001f, 0x4bc021f4, 0x00000c00, 0x00000000, 0x00230810, 0x0a4c0083,
-0x24c00930, 0x4c008300, 0xc0283402, 0x00930026, 0x31b0020c, 0x9b2023c0,
-0x30804c05, 0x0024c401, 0x024c0083, 0x40d00870, 0x00000c20, 0x00000000,
-0x40a62001, 0x0a440091, 0x24540914, 0x44009110, 0x40091002, 0x80910024,
-0x01300244, 0x91002744, 0x10004400, 0x00244001, 0x0a440091, 0x04407910,
-0x00000800, 0x00000000, 0x00a4a018, 0x0a440091, 0x64401910, 0x44489100,
-0x68091002, 0x00810026, 0x01900244, 0x99002740, 0x10040500, 0x00244001,
-0x22440091, 0x60404950, 0x00000200, 0x00000000, 0x02202010, 0x22058881,
-0x20408810, 0x44048100, 0x40881072, 0x88816320, 0x0c102204, 0x91022340,
-0x14220608, 0x02204088, 0x02040081, 0x40400810, 0x00000080, 0x00000000,
-0x2586b01d, 0x584c5603, 0x04cb6030, 0x4d011105, 0xc1613018, 0x160320c6,
-0x41b0584d, 0x1b0587c1, 0x32584c16, 0x4084d161, 0x514c1413, 0x74c14170,
-0x00000ac0, 0x00000000, 0x0927b819, 0x12fc04bf, 0x27c04ff0, 0xfc1c9f45,
-0xc249f012, 0xa49f0327, 0x0b7012bc, 0x9e0127c8, 0xf012fc04, 0x01a7c04b,
-0x02fc009f, 0x67c00bf0, 0x00000e64, 0x00000000, 0x00afa018, 0x8acdc29f,
-0x2fc04bf0, 0x6c3cb308, 0xc86b321a, 0x849f00a7, 0x1bf2224c, 0xa320afc1,
-0x301ec014, 0x00a4c879, 0x02fc00b0, 0x63c00b30, 0x00000e00, 0x00000000,
-0x0807081c, 0x0844020d, 0x874161d0, 0x04461115, 0x40211000, 0x841d0283,
-0x01d0102c, 0x11010340, 0xb0184402, 0x11845000, 0x08740a1b, 0x71c02114,
-0x00000c20, 0x00000000, 0x01a3a010, 0x9a04028d, 0xb34088d0, 0x64008100,
-0x40685c1a, 0x128d0123, 0x18d00a14, 0x8100a760, 0x5a364414, 0x01a04078,
-0x0a340081, 0x4b402c10, 0x00000e80, 0x00000000, 0x0025a818, 0x4245028d,
-0x274009d0, 0x44209100, 0x4009500a, 0x009d0027, 0x19d00a74, 0x91202760,
-0x99064420, 0x00244019, 0x02740099, 0x61401910, 0x00000620, 0x00000000,
-0x0027a805, 0x064d009f, 0x27c039f0, 0x6c809340, 0xc0097402, 0x009f0027,
-0x09f0065c, 0x930027c0, 0x70020f00, 0x0024c808, 0x023c0093, 0x17c00930,
-0x00000e20, 0x00000000, 0x00258014, 0x167d009f, 0x23c039f0, 0x7c009f10,
-0xc009b002, 0x008f0027, 0x09f0266c, 0x9f4027c0, 0xf0427c00, 0x0023c009,
-0x427c009f, 0x59c009f0, 0x00000600, 0x00000000, 0x01050814, 0x006c001f,
-0x07c06130, 0x7c000704, 0xc0013008, 0x00130006, 0x4130007c, 0x030005c0,
-0xf0006c04, 0x0004d001, 0x006c801b, 0x53c01130, 0x00000420, 0x00000000,
-0x005ca014, 0x01c4005d, 0x1f403711, 0x34015100, 0x40050401, 0x00510015,
-0x071081f0, 0x71019840, 0x7009c402, 0x00144007, 0x09f41151, 0x53400714,
-0x00000200, 0x00000000, 0x0072a014, 0x072500cd, 0xb3000c12, 0x3409c580,
-0x400c9003, 0x00c10030, 0x28100334, 0xc1013340, 0xd0032408, 0x8032400c,
-0x212401c9, 0x53400410, 0x00000a00, 0x00000000, 0x0c388005, 0x0d8404ed,
-0x3f402610, 0xb440e100, 0x401a9003, 0x04e10079, 0x161837b4, 0xa1003a60,
-0x10038400, 0x0132404e, 0x013400e1, 0x17400610, 0x00000200, 0x00000000,
-0x00581015, 0x072c05ef, 0x7fc01a34, 0xbc01a710, 0xc41cb017, 0x07e1007a,
-0x1a3007bc, 0xe3007bc0, 0xf007ac01, 0x04fac03e, 0x04ac01eb, 0x57c01e30,
-0x00000040, 0x00000000, 0x2015b810, 0x017d38df, 0x37c001f0, 0x7c009f00,
-0xc00d714b, 0x02df42b7, 0x00f00b7c, 0xdf0035c0, 0xf0037c00, 0x01b5c04d,
-0x007c00df, 0x43c005f0, 0x00000660, 0x00000000, 0x006fa000, 0x86ec4df3,
-0x4fc01f30, 0xac81d340, 0xc01f2c47, 0x03f302fc, 0x91202f4c, 0x7f237cc0,
-0xf007c801, 0x007cc03f, 0x04fc09b1, 0x03c01ff0, 0x00000e00, 0x00000000,
-0x20b98015, 0x80ad08f1, 0x0f400c11, 0x0409e101, 0x484b5003, 0x00f1007d,
-0x144007c4, 0x0d007043, 0xf0150404, 0x1038410e, 0x10b400a1, 0x574006d0,
-0x00000620, 0x00000000, 0x02090000, 0x02a454e9, 0x0b408e90, 0xe408a020,
-0x440e5003, 0x08e10038, 0x4b1803a4, 0x6d203a40, 0xd0638600, 0x0038400e,
-0x02b480a1, 0x03400ad0, 0x00000400, 0x00000000, 0x80172804, 0x002500c9,
-0x03400c90, 0x44009100, 0x400c582f, 0x00c10031, 0x20582b24, 0x4d003240,
-0xd0850400, 0x0030402c, 0x02340081, 0x134000d0, 0x00000c20, 0x00000000,
-0x4035a815, 0x036d21fb, 0x37c00db4, 0xec00d300, 0xc00d700b, 0x00f3403c,
-0x28342fed, 0x5d0036c0, 0xf0070d00, 0x403cd02f, 0x017c0083, 0x57c005f0,
-0x00000620, 0x00000000, 0x28a70001, 0x037c00d7, 0x17e00470, 0x7c00df00,
-0xc009e403, 0x00df0837, 0x05f0035c, 0x1f0035c0, 0x70137c00, 0x0037c00d,
-0x017c009b, 0x07c085f0, 0x00000c00, 0x00000000, 0x003f0880, 0x08cd00f3,
-0xecc01bf0, 0xcc43df30, 0xc00f3043, 0x00fb003b, 0x0b3003bc, 0x132038c1,
-0x3012fc01, 0x0038c10f, 0x088d00b3, 0x00d05b30, 0x00000c22, 0x00000000,
-0x00e60081, 0x005400d1, 0x86c421d0, 0x6c00d909, 0x400d1083, 0x00d10037,
-0x01120374, 0x1b013440, 0x50027403, 0x0036c00c, 0x88440095, 0x04402010,
-0x00000800, 0x00000000, 0x4204a001, 0x0b4400c1, 0x344141d0, 0x44009d00,
-0x400d1003, 0x40d91037, 0x01100374, 0x51820440, 0x10037434, 0x0034400d,
-0x0b440491, 0x04402d14, 0x00000200, 0x00000000, 0x00002010, 0x031580c1,
-0x124000d0, 0x24508900, 0x40081003, 0x00c10433, 0x45504334, 0x09030040,
-0x50117400, 0x0032400d, 0x03040085, 0x40400410, 0x00000080, 0x00000000,
-0x0002a000, 0x000c00f3, 0xa4c001f0, 0xcc0b9f02, 0xc40d1403, 0x00fb007f,
-0xd93407f4, 0x538544c9, 0x30367c08, 0x0038c00e, 0x024c0093, 0x00c00130,
-0x00000ac0, 0x00000000, 0x000f9805, 0x00fc00ff, 0x4cc113f0, 0xdd41bb01,
-0xc11ff047, 0x11ff0037, 0x52b003fc, 0x7f0147c4, 0xf0347c05, 0x003fc00f,
-0x02fc00bf, 0x17c003f0, 0x00000e60, 0x00000000, 0x000fa803, 0x02bc00ff,
-0x2fc00bb0, 0xfc006300, 0xc04f32a0, 0x20bf022d, 0x02f003cc, 0xef003ec0,
-0x7011fc00, 0x010cc003, 0x03cd0473, 0x0fc00fb0, 0x00000e00, 0x00000000,
-0x00270801, 0x004400fd, 0x36400810, 0x7400d108, 0x408d1403, 0x009d2033,
-0x491013c5, 0xdd003440, 0xd2097400, 0x00b5422d, 0x03540251, 0x07400d10,
-0x00000c20, 0x00000000, 0x0803a211, 0x021400c5, 0x314208d2, 0x34800100,
-0x400c1013, 0x008d0023, 0x04504304, 0xcd007363, 0x50093401, 0x02015080,
-0x03240841, 0x47400c90, 0x00000e80, 0x00000000, 0x0045a803, 0x104400dd,
-0x364049d0, 0x74009142, 0x420d1011, 0x00dd0037, 0x45500344, 0xdd887540,
-0xd0017021, 0x0035400d, 0x03740811, 0x0f400d90, 0x00000620, 0x00000000,
-0x00c78002, 0x1a5400d7, 0x33c409f0, 0x7c21d200, 0xc00d3003, 0x408f0015,
-0x0d74034c, 0xdf0037c0, 0x7003fc00, 0x400dc203, 0x036c0253, 0x0bc00db0,
-0x00000e20, 0x00000000, 0x000d8007, 0x069800df, 0x7fc00b20, 0xf8037f00,
-0xc00df007, 0x02bf101f, 0x1f3083fc, 0xff203cc2, 0xf003fc20, 0x003bc00e,
-0x038c015f, 0x1fc00f72, 0x00000600, 0x00000000, 0x00450002, 0x2a6c84d3,
-0x75c049b1, 0x5c00df00, 0xd00d300a, 0x00930054, 0x2530039c, 0xdf1136c0,
-0x7047cc00, 0x000fc103, 0x034c225f, 0x08c00d70, 0x00000420, 0x00000000,
-0x4014a013, 0x064440f1, 0x76c06d50, 0x450e5d00, 0x400fb003, 0x20d14854,
-0x050003c4, 0xdd003400, 0x100b441b, 0x0037405d, 0x03ec001d, 0x4c410fb0,
-0x00000200, 0x00000000, 0x0012a007, 0x072402d1, 0xb0602800, 0x44400d01,
-0x409c1003, 0x52810000, 0x0d100314, 0xcd00f050, 0x90091700, 0x04034020,
-0x0304095d, 0x1c401c10, 0x00000a00, 0x00000000, 0x0a788004, 0x068401e1,
-0x7a401a51, 0x8401ed10, 0x401e9006, 0x81e10258, 0x1e9007e4, 0xed807840,
-0x18059481, 0x007b421e, 0x07a609ed, 0x10400e90, 0x00000200, 0x00000000,
-0x00801012, 0x212c10c1, 0x31c0c830, 0x5c080f00, 0xc00c301b, 0x00830080,
-0x0430031c, 0xcd043040, 0xb0011c00, 0x0003c000, 0x034c02cf, 0x48c08d70,
-0x00000040, 0x00000000, 0x0029b802, 0x20fc00fe, 0x3fe08f70, 0xfc00ff00,
-0xc00ff003, 0x00ef401f, 0x0772039c, 0xfd0035c0, 0xf001ac42, 0x003fc00f,
-0x43fc00ff, 0x0bc04ff0, 0x00000660, 0x00000000, 0x0053a015, 0x035c88d3,
-0xb38009f1, 0x7c009300, 0xc00df801, 0x00934053, 0x1db013fc, 0xc70037c0,
-0x30034c0a, 0x600fc003, 0x834c00d3, 0x57c00df2, 0x00000e00, 0x00000000,
-0x00398012, 0x03840cfb, 0x3b400ad0, 0xb4406102, 0x405ed003, 0x00e1081b,
-0x0e814bf4, 0xed03bb40, 0x50030400, 0x003b400e, 0x138480e5, 0x4b402ed0,
-0x00000620, 0x00000000, 0x04490003, 0x059625e1, 0x7b403a50, 0xb401a100,
-0x449ed007, 0x01a1005f, 0x061013b4, 0xed007b60, 0x10079507, 0x00434012,
-0x078401c1, 0x0f401e50, 0x00000400, 0x00000000, 0x00332812, 0x091420d9,
-0x73441cd0, 0x74124942, 0x4a0cd010, 0x00c10413, 0x14100374, 0xcd003340,
-0x501b1400, 0x0037400c, 0x030402d5, 0x4b400cd0, 0x00000c20, 0x00000000,
-0x001da817, 0x0ddc0051, 0x13c01572, 0x74135300, 0xc005f80d, 0x005330df,
-0x27b001fc, 0x2f040bc0, 0x10095c00, 0x0017c005, 0x014c0273, 0x5fc00570,
-0x00000620, 0x00000000, 0x01070012, 0x3024001f, 0x87c021d0, 0x7c401700,
-0xc001f020, 0x001f1207, 0x91f0007c, 0x1f0007c0, 0xf0002804, 0x000fc002,
-0x007d101f, 0x4bc801f0, 0x00000c00, 0x00000000, 0x00270810, 0x024c0097,
-0x75c08870, 0x4c008300, 0xc0293102, 0x019f0227, 0x0930026c, 0x134405c0,
-0x30064c00, 0x0064d019, 0x024d0093, 0x43c00970, 0x00000c20, 0x00000000,
-0x00262001, 0x2254029d, 0xe4405910, 0x6c0191c0, 0xc0191002, 0x818d0025,
-0x09b00245, 0x1106c444, 0x10066c20, 0x02644019, 0x02440195, 0x074009b0,
-0x00000800, 0x00000000, 0x0064a018, 0x0245109d, 0x256809d0, 0xc6049502,
-0x40091002, 0x089d0027, 0x0c180244, 0x11800440, 0x10224406, 0x002c408b,
-0x02040491, 0x63404950, 0x00000200, 0x00000000, 0x02202010, 0x0314088d,
-0x30408810, 0xa400a100, 0x41481422, 0x008d0021, 0x88902204, 0x91022040,
-0x10062488, 0x00a8402a, 0x0a040285, 0x43408890, 0x00000080, 0x00000000,
-0x0586a01d, 0x5044021f, 0x05c161f1, 0xcc141510, 0x40413008, 0x005f0287,
-0x2130084c, 0x110585c0, 0x34004c16, 0x000cc001, 0x804c0013, 0x77c02170,
-0x00000ac0, 0x00000000, 0x092f9819, 0x02fc869f, 0x27c04bf2, 0x7c00bf00,
-0xc009f012, 0x00bf006f, 0x4bf01a7c, 0xbf012f40, 0xf00a7c04, 0x00a7c029,
-0x0a7c02bf, 0x67c069f0, 0x00000e60, 0x00000000, 0x050ba018, 0x02ec18ab,
-0x2cc14b30, 0x4c14bf00, 0xc9083022, 0x00a30027, 0x2830025c, 0xa200ecc0,
-0xf016fc15, 0x04e8c059, 0x1a4c44b3, 0x63c0cbb0, 0x00000e00, 0x00000000,
-0x00c7081c, 0x00444211, 0x06c06110, 0x44021d00, 0x40211000, 0x00112103,
-0x01101044, 0x11004440, 0xd1087407, 0x01854160, 0x00440015, 0x73400110,
-0x00000c20, 0x00000000, 0x4023a010, 0x0f240481, 0x20410850, 0x24009d00,
-0x40081416, 0x20814c23, 0x48024a14, 0x8900a540, 0xd10a3410, 0x01205028,
-0x1a241689, 0x43406890, 0x00000e80, 0x00000000, 0x2125a818, 0x02440091,
-0x26621954, 0x64009d10, 0x40091a02, 0x01910023, 0x09920244, 0x51040553,
-0xd0827604, 0x10254009, 0x0264009d, 0x63400998, 0x00000620, 0x00000000,
-0x0467a805, 0x0a6c0093, 0x24c01976, 0x6c819f08, 0xe2093102, 0x00930027,
-0xa834025c, 0x1b4001c0, 0xf8027c12, 0x0024c209, 0x026c049b, 0x17c009b2,
-0x00000e20, 0x00000000, 0x00458014, 0x025c0097, 0x27c00830, 0x5d438f02,
-0xcc0df092, 0x109f0037, 0x1970025c, 0x1f0206ca, 0xf0027c01, 0x4027d00d,
-0x025c0597, 0x53c00970, 0x00000600, 0x00000000, 0x40850814, 0x047c0003,
-0x47c081f0, 0x4d011f00, 0xc001f000, 0x001b0004, 0x21b0006c, 0x194106c4,
-0x30004c32, 0x4400c180, 0x004c0013, 0x53c001f0, 0x00000420, 0x00000000,
-0x0048a014, 0x09840571, 0x1f4027d0, 0x44067d00, 0x4105d001, 0x05615054,
-0x07100144, 0x31080c00, 0x5001ec80, 0x041c5015, 0x01441151, 0x534005d0,
-0x00000200, 0x00000000, 0x0032a014, 0x013440c1, 0x33412cd0, 0x4401cd00,
-0x401cd003, 0x03c90070, 0x0c980344, 0xc500f240, 0x9403240b, 0x0030400c,
-0x034400d1, 0x534008d0, 0x00000a00, 0x00000000, 0x15388005, 0x018400e1,
-0x3b420ed0, 0x8400ed24, 0x401ed203, 0x00f95438, 0x0f121304, 0xf501bc40,
-0x9806a601, 0x00380006, 0x23840181, 0x17400ad0, 0x00000200, 0x00000000,
-0x01f81011, 0x05bd01e3, 0x7bc01ef0, 0x8d01ef00, 0x409ef017, 0x01eb0078,
-0x3eb10f8d, 0xe7157ac1, 0xb0072c41, 0x1068c01a, 0x078d00e3, 0x57e01ef2,
-0x00000040, 0x00000000, 0x0035b010, 0x815c00df, 0x37c005f1, 0x7c00cf20,
-0xd26df003, 0x00d701b7, 0x2d70075c, 0xd21133c0, 0x72017808, 0x0027d921,
-0x037c009f, 0x43c00bf0, 0x00000660, 0x00000000, 0x007ba000, 0x07fd01fc,
-0x7fc097b0, 0xcc09ff20, 0xc01f7047, 0x217300ff, 0x1f3007fc, 0xff0c7cc0,
-0xb007fc0b, 0x226dc0db, 0x0fcc01ff, 0x03c01bf0, 0x00000e00, 0x00000000,
-0x04398815, 0x03ac06fb, 0x3b4086b0, 0xc41ced10, 0x400e4003, 0x00e1022b,
-0x4e1003f4, 0xe9243840, 0x1002b44c, 0x0308408e, 0x039400bd, 0x57400a7a,
-0x00000620, 0x00000000, 0x00390000, 0x019400e1, 0x3b600610, 0x8600ed00,
-0x400e100b, 0x00e1003b, 0x0e5003b4, 0xed003800, 0x1003b400, 0x0028414a,
-0x038400ed, 0x03400ed0, 0x00000400, 0x00000000, 0x10732820, 0x092400d9,
-0x53420090, 0x0402cd00, 0x42085007, 0x40c10263, 0x2c500334, 0xcd8c7040,
-0x90013402, 0x00006008, 0x031442cd, 0x13400840, 0x00000c20, 0x00000000,
-0x00f5a811, 0x2f5c00d3, 0x17400531, 0xcd01df00, 0xc00d7003, 0x00534057,
-0x2e7403fc, 0xdf00f4c0, 0xb0037c18, 0x01f4c011, 0x03c41bcf, 0x57c009d0,
-0x00000620, 0x00000000, 0x04370001, 0x0f3d025f, 0x17c035f0, 0x7c02df02,
-0xc00de023, 0x085f2007, 0x0d92033c, 0xdb0037d0, 0x740b7c22, 0x0137d101,
-0x037c809f, 0x07c00970, 0x00000c00, 0x00000000, 0x003b0880, 0x074d01f3,
-0x1c800f30, 0xcc50fd00, 0xc00ef003, 0x0073001c, 0x0fb003c4, 0xf3407ec3,
-0x3015fc20, 0x002fc053, 0x03cd01f3, 0x00d00af0, 0x00000c22, 0x00000000,
-0x00362085, 0x036501d5, 0x95481550, 0x4402cd14, 0x400dd003, 0x02411091,
-0x0d100344, 0xd104b040, 0x10023402, 0x00234121, 0x03440195, 0x04401990,
-0x00000802, 0x00000000, 0x0074a001, 0x62650491, 0x5540a410, 0x4403dd80,
-0x408dd003, 0x065100d4, 0x0d900354, 0xd1013640, 0x1c0b6408, 0x00274801,
-0x034404d1, 0x044089d0, 0x00000200, 0x00000000, 0x00302014, 0x03240045,
-0x11400450, 0x04204d20, 0x400cc003, 0x00510005, 0x0d100314, 0xc1083040,
-0x10033640, 0x40034000, 0x03040091, 0x40400890, 0x00000088, 0x00000000,
-0x0036b000, 0x036c0093, 0x15c00531, 0x4d00df00, 0xc00df003, 0x00130010,
-0x0fb0035d, 0xd30036c0, 0x30017c00, 0x2027c000, 0x03cc0093, 0x00c009f9,
-0x00000ac0, 0x00000000, 0x003fb805, 0x03dc00ff, 0x0f8007f0, 0xfc002f00,
-0xc00ff003, 0x003f001f, 0x0ef003ec, 0xff003fc0, 0xf002bc00, 0x000fc603,
-0x83fe00bf, 0x97c00bf0, 0x00000e60, 0x00000000, 0x003da003, 0x20cc002b,
-0x3ec08330, 0xfc08f310, 0xc40f7053, 0x00f7023c, 0x8e3053cc, 0xf3023cc0,
-0xf0034c08, 0x333cc00f, 0x73fc08fb, 0x0cd003b0, 0x00000e00, 0x00000000,
-0x20330801, 0x18040011, 0xbcc88530, 0xf424f105, 0x48cd10cb, 0x56f1013c,
-0x0d100bc4, 0xf10037c0, 0x92535424, 0x11bc480d, 0x0b7484d5, 0x04410110,
-0x00000c20, 0x00000000, 0x40332011, 0x091414c1, 0x33620050, 0x1600c122,
-0x410c1413, 0x08c42032, 0x5d110305, 0xc5113048, 0xd0072404, 0xd1b0401d,
-0x033404c1, 0x44404190, 0x00000e80, 0x00000000, 0xa035a803, 0x00550011,
-0x364465d0, 0x7600d120, 0x430d1003, 0x00d51036, 0x1d180344, 0xd508b740,
-0x90077400, 0x0034401d, 0x037400dd, 0x0c400910, 0x00000620, 0x00000000,
-0x00378802, 0x4e5c8013, 0x36403170, 0x5e40d340, 0xd03d3003, 0x60d70036,
-0x0c34034c, 0xd74074c0, 0xf0036c00, 0x0034d00c, 0x037c00db, 0x08c011b0,
-0x00000e20, 0x00000000, 0x003d8007, 0x24ac103f, 0x3dc01730, 0x7c00ff04,
-0xc886b303, 0x00fb0035, 0x0ff003fc, 0xfb0a3ec0, 0xf003dd00, 0x0037c00f,
-0x03bc00f2, 0x1fc033f0, 0x00000600, 0x00000000, 0x00350802, 0x035c0017,
-0x37c00930, 0x2c01df20, 0xc02d3413, 0x00c34030, 0x0d30435c, 0xd300b5c0,
-0xb0237c00, 0x4037c80d, 0x037c00db, 0x0bc001f0, 0x00000420, 0x00000000,
-0x00348013, 0x004406d9, 0xfe80bd71, 0xc500fd00, 0x4005000f, 0x08f3403c,
-0x0d108b84, 0xfb083440, 0xd0877420, 0x003f40dd, 0x03f400f1, 0x4f4008d0,
-0x00000200, 0x00000000, 0x0036a007, 0x40250019, 0xf404a890, 0x1400c900,
-0x400c1003, 0x00c90033, 0x0c900716, 0xd1003640, 0xd0873400, 0x0037400c,
-0x033400c1, 0x1f4000d0, 0x00000a00, 0x00000000, 0x02788004, 0x07a50139,
-0x7a441b50, 0x8409cd24, 0x401c5247, 0x05c1027a, 0x1e9067c4, 0xe9027f50,
-0xc087b401, 0x027b421e, 0x07b401e1, 0x134012d0, 0x00000200, 0x00000000,
-0x00301012, 0x013d00c3, 0x31c28990, 0x1e00cf00, 0xd00c1023, 0x40cb0033,
-0x0cb0031c, 0xc30232c0, 0xb0073c00, 0x0033c20c, 0x033c00c3, 0x4bc004f0,
-0x00000040, 0x00000000, 0x483db802, 0x23dc8837, 0x3fc889f0, 0x5c00ff06,
-0xc08fb043, 0x24ff003d, 0x0d70033c, 0xdf0230c8, 0xf00b7808, 0x003fc00f,
-0x23fc10f7, 0x0bc08ff0, 0x00000660, 0x00000000, 0x0037a015, 0x064c0003,
-0x77c20530, 0x4d04db04, 0xc001f01b, 0x12db0134, 0x4d30730c, 0xd20134c0,
-0x320f4c04, 0x0034807d, 0x034c00d3, 0x54c001f0, 0x00000e00, 0x00000000,
-0x003d8812, 0x03050021, 0x3b020610, 0x8412f100, 0x500ad053, 0x04e103bc,
-0x2e100394, 0xe144b841, 0xb01b8510, 0x0332c0ce, 0x039400e1, 0x4bc003d0,
-0x00000620, 0x00000000, 0x00790003, 0x87840131, 0x7b421e58, 0xa405e101,
-0x6400d007, 0x09e98878, 0x5e9407e4, 0xc1297b40, 0x9887c4ad, 0x0378409e,
-0x27b405c1, 0x0c4016d0, 0x00000400, 0x00000000, 0x10332812, 0x030433c1,
-0x33412c58, 0x2400c110, 0x4109d203, 0x00cd8030, 0x0d900334, 0xc101b340,
-0x98030400, 0x0032400c, 0x033400c1, 0x4b400dd0, 0x00000c20, 0x00000000,
-0x0015a817, 0xa9cd0763, 0x17407774, 0x6c005b40, 0xd237d001, 0x007b0014,
-0x03b001ec, 0x6301cfc0, 0xb000cd00, 0x0014c003, 0x017c4053, 0x5cc007f0,
-0x00000620, 0x00000000, 0x60070012, 0x007c001f, 0x87c001b3, 0x5c000f00,
-0xc881f000, 0x00111003, 0x1170001c, 0x1f000450, 0xf0847e00, 0x4003c011,
-0x0050001f, 0x4ac001f0, 0x00000c00, 0x00000000, 0x00270810, 0x064d0193,
-0x27c809f0, 0x6c009f00, 0xc009f006, 0x43830026, 0x0134024c, 0x931007c0,
-0xf0004c20, 0x0027c001, 0x824c0083, 0x40c409f3, 0x00000c20, 0x00000000,
-0x00262001, 0x06444191, 0xa74009d0, 0x44029d00, 0x4009d026, 0x01918024,
-0x01102e54, 0x9b000040, 0x30004400, 0x00274001, 0x02540091, 0x050009d0,
-0x00000800, 0x00000000, 0x0020a018, 0x12454499, 0xa7420950, 0x66109d00,
-0x4009d002, 0x00916026, 0x01100244, 0x99080660, 0x50005400, 0x00274011,
-0x02460091, 0x604009d0, 0x00000200, 0x00000000, 0x02202010, 0x22040899,
-0x234088d0, 0x040c8d02, 0x41c8d002, 0x0c818120, 0x88102216, 0x99022440,
-0x18220404, 0x02234098, 0x32140881, 0x414088d0, 0x00000080, 0x00000000,
-0x0086b01d, 0xd84c021b, 0x83c36172, 0x6c031f05, 0xc061d050, 0x030102c6,
-0x6130594c, 0x1b0586c5, 0x60585c0b, 0x4587c161, 0x0c4c0213, 0x74c021f0,
-0x00000ac0, 0x00000000, 0x6127b819, 0x12fc04b7, 0x27c04bf0, 0x7c0c9f01,
-0xc04bf052, 0x2c9f0a67, 0x4af0127c, 0x9f012ad0, 0x3012bd09, 0x0127c04a,
-0x327c069f, 0x67c04bf0, 0x00000e60, 0x00000000, 0x00a7a018, 0x0acc02a3,
-0x2cc04bf0, 0xcc5cbf03, 0xc0c9f00a, 0x0cb70326, 0x9d3012e8, 0x9101e4c1,
-0x3117cc14, 0x01a4c07f, 0x524c0893, 0x634008f0, 0x00000680, 0x00000000,
-0x4003001c, 0x08448011, 0x0451e1d0, 0x04420d01, 0x4060d088, 0x46110184,
-0x20100c44, 0x11010440, 0x50004c06, 0x01004051, 0x10440811, 0x734041d0,
-0x00000c20, 0x00000000, 0x0123a010, 0x1a1444c1, 0xa04008d0, 0x04048d00,
-0x5088d01a, 0x028500a0, 0x48105b24, 0x8100e040, 0x105a2410, 0x41a0407d,
-0x42040481, 0x434118d0, 0x00000c80, 0x00000000, 0x4021a818, 0x02540181,
-0x246008d0, 0x44009d00, 0x4009d002, 0x20910024, 0x28100044, 0x91006040,
-0x501a0400, 0x00244011, 0x02440091, 0x634009d0, 0x00000620, 0x00000000,
-0x0027a805, 0x065d0693, 0x24c049f0, 0x4d009f00, 0xd009f002, 0x00970024,
-0x0934002c, 0x93402490, 0x30026d00, 0x0024d001, 0x02450093, 0x17c019f0,
-0x00000e20, 0x00000000, 0x00258014, 0x226c009f, 0x27c009f0, 0x7c008f08,
-0xc009f042, 0x008f0021, 0x99f0007c, 0x8f0027c4, 0xf0027c20, 0x0023c001,
-0x827c009f, 0x53c039f1, 0x00000600, 0x00000000, 0x00050814, 0x104c0313,
-0x04c121f0, 0x4c041f02, 0xc0003000, 0x081f0004, 0x2132044c, 0x1f0004c0,
-0xf1104c00, 0x4005c011, 0x004c0013, 0x50c001f0, 0x00000420, 0x00000000,
-0x4014a014, 0x19c40071, 0x5c4007d0, 0xc4007d00, 0x4005100d, 0x03790015,
-0x071000c4, 0x5d001c40, 0xd201c500, 0x00174002, 0x01540051, 0x504005d0,
-0x00000200, 0x00000000, 0x0032a014, 0x070500c1, 0x32402cd0, 0x0400cd00,
-0x400c100f, 0x10cd0030, 0x0c100304, 0xcd003340, 0xd00b0500, 0x0031400c,
-0x030400d1, 0x50400cd0, 0x00000a00, 0x00000000, 0x21388805, 0x038480b1,
-0x3a400cd0, 0x8402ad00, 0x401e100f, 0x00fd0139, 0x4e101304, 0xed013b40,
-0x90038400, 0x013b404e, 0x039404c1, 0x14409fd0, 0x00000200, 0x00000000,
-0x45780015, 0x078c01e3, 0x5ad01ef0, 0x8d01ef10, 0xc04e3007, 0x01ef08f8,
-0x5e34178c, 0xcf02fbd0, 0xd0078c05, 0x00f9c01e, 0x178c05e3, 0x54d05ef0,
-0x00000040, 0x00000000, 0x03b5a810, 0x837d009f, 0x35c00df0, 0x7c009f00,
-0xc02df483, 0x00cb0037, 0xedf42b7d, 0xdf0034c0, 0xf0037c68, 0x0037c14d,
-0x277c08df, 0x43c01df0, 0x00000660, 0x00000000, 0x407fa000, 0x04cc01e3,
-0x6cd01730, 0xdc01f300, 0xc5bd3005, 0x01e3007c, 0x3f300fcc, 0xf3007cc0,
-0x3027dc01, 0x00ffc11f, 0x13fc01f3, 0x03c01f30, 0x00000e00, 0x00000000,
-0x003d8815, 0x00ecca61, 0x38c18710, 0xc400e100, 0x401f1001, 0x00610238,
-0x0e100384, 0xf1063850, 0xf023ec00, 0x023bc10e, 0x03fc00e1, 0x57400eb0,
-0x00000620, 0x00000000, 0x00390000, 0x009410b1, 0x02400610, 0x94086100,
-0x400e9001, 0x00b10030, 0x0e100304, 0xe1003a40, 0x1803b400, 0x003b400e,
-0x03b400e1, 0x03400e10, 0x00000400, 0x00000000, 0x40372804, 0x0c340301,
-0x30400414, 0x24004120, 0x400c9001, 0x00110034, 0x8c100304, 0xc100b240,
-0x500f2480, 0x8035403c, 0x031400d1, 0x13412d10, 0x00000c20, 0x00000000,
-0x003da815, 0x475c0153, 0x36400d30, 0x5c005300, 0xd00fb403, 0x00d3403c,
-0x0e34030c, 0xf3407ed0, 0x10273c00, 0x403f402c, 0x03f400f3, 0x57c02f10,
-0x00000620, 0x00000000, 0x00370001, 0x096c121f, 0x07c020f0, 0x5c001f20,
-0xc10d7081, 0x00df0037, 0x0df0037d, 0xcf0435c3, 0xf0227c00, 0x0037c00d,
-0x037c00df, 0x07c80df0, 0x00000c00, 0x00000000, 0x003f0880, 0x46cc0073,
-0x58c00ff0, 0xcc004300, 0xc00ef007, 0x00f6003c, 0x0f3407cc, 0xf3003cc0,
-0x300fcd00, 0x003cc10f, 0x03cc00f3, 0x00c00ff0, 0x00000c22, 0x00000000,
-0x00362081, 0x60556001, 0xc44191d2, 0x450a1102, 0x420d7024, 0x00db8834,
-0x0d104f6c, 0xd1083140, 0x311e4420, 0x0035400d, 0x035400db, 0x05400dd0,
-0x00000802, 0x00000000, 0x0034a001, 0x034440d1, 0x24400dd0, 0x40029104,
-0x400dd003, 0x00d12034, 0x0d161344, 0xd1003444, 0x10014620, 0x0034401d,
-0x034400d5, 0x04400dd0, 0x00000200, 0x00000000, 0x00302010, 0x01140051,
-0x004000d0, 0x04408120, 0x510c5085, 0x00490030, 0x0d100364, 0xc1003160,
-0x10804400, 0x0030401c, 0x030400c9, 0x41000cd0, 0x00000080, 0x00000000,
-0x003eb000, 0x024c0091, 0x04400dd0, 0x4c001300, 0xc05ff003, 0x00910034,
-0x0f10034c, 0xd34038c0, 0x31294c00, 0x2038d00d, 0x034d00d7, 0x00c40df0,
-0x00000ac0, 0x00000000, 0x403fb805, 0x00fc003f, 0x0fc003f0, 0xfc003f00,
-0xc20ff081, 0x003b003f, 0x0ef003fc, 0xff003f80, 0x7004fc00, 0x003fc00f,
-0x03fc00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x030b8003, 0x10cc0433,
-0x1fc00a38, 0xfc043301, 0xc00f3030, 0x0473000b, 0x0f3000cc, 0x33400ec0,
-0x3003bc80, 0x001fc28f, 0x02ec007f, 0x0ec00fb0, 0x00000e00, 0x00000000,
-0x02870801, 0xab6c0ad1, 0x97400d18, 0x34b8d104, 0x400d501b, 0x02d10087,
-0xad100144, 0x91243440, 0x1003f400, 0x0017404f, 0x024428dd, 0x04400c10,
-0x00000c20, 0x00000000, 0x8103a011, 0x00040001, 0x12400810, 0x34040103,
-0x400c1020, 0x08c10203, 0x0c500204, 0x45001640, 0x50033400, 0x0013404c,
-0x0224c01d, 0x47400c90, 0x00000e80, 0x00000000, 0x0005a803, 0x036400d1,
-0x17420d10, 0x7400d500, 0x000d5003, 0x00d14047, 0x0d514304, 0x95003440,
-0x50037428, 0x0117400d, 0x0644301d, 0x0d400d90, 0x00000620, 0x00000000,
-0x402fa802, 0x008c0033, 0x1ec09510, 0xfc003301, 0x400d3400, 0x0b530147,
-0x0d740e4c, 0x170086c0, 0x74037c03, 0x0407c00d, 0x4e6c014f, 0x0bc00db0,
-0x00000e20, 0x00000000, 0x002d8007, 0x03fc10ff, 0x1fc10ff0, 0xfc00fb28,
-0xc00ff003, 0x004f000b, 0x0cb017fc, 0xbb083fc0, 0xb043fc00, 0x043fc00f,
-0x02bc087f, 0x1ec00e70, 0x00000600, 0x00000000, 0x01610802, 0x005c0013,
-0x10c61d32, 0x1c001300, 0xc00d3020, 0x00530024, 0x0d340a4c, 0x570014d0,
-0x30030c08, 0x0007c00d, 0x0865005f, 0x09c00d34, 0x00000420, 0x00000000,
-0x00a4a013, 0x474420d1, 0x14403d12, 0x6c0ad100, 0x400f100b, 0x005104a4,
-0x2f112f44, 0x91017041, 0xb003c001, 0x0037400f, 0x2c540bdd, 0x4c40af10,
-0x00000200, 0x00000000, 0x0002a007, 0x48340019, 0x30402c99, 0x06000000,
-0x409c5044, 0x20c10121, 0x1c100305, 0x0449c041, 0x000b0406, 0x0213400c,
-0x0204004d, 0x0d408c10, 0x00000a00, 0x00000000, 0x024c8004, 0x87a401e9,
-0x70481e14, 0xa611c100, 0x401e1007, 0x21a10269, 0x1e107784, 0x61005c40,
-0x90878405, 0x025b401e, 0x468419ed, 0x00401e10, 0x00000200, 0x00000000,
-0x00001012, 0x003c041b, 0x30c00cb1, 0x1c000300, 0xc00c7000, 0x00c10021,
-0x4c30334c, 0x471810c0, 0x30030c00, 0x1213e80c, 0x024c001f, 0x59c00c30,
-0x00000040, 0x00000000, 0x080db802, 0x239c00f7, 0x3f800f72, 0xfc80ff00,
-0xd10ef003, 0x00bf082e, 0x0ff033fc, 0x6f021bc0, 0xf003fd04, 0x021fc10f,
-0x02dc20bf, 0x0bc18ff0, 0x00000660, 0x00000000, 0x1027aa15, 0x006d0013,
-0x37c405b4, 0x4c001300, 0xc00db000, 0x005f4037, 0x0d32034c, 0x930004c0,
-0xf0136c01, 0x0024c07d, 0x024d2013, 0x54c00d34, 0x00000e00, 0x00000000,
-0x002d8812, 0x038400e1, 0x3b420e14, 0x9500e100, 0x400e5403, 0x80210038,
-0x5e1003c4, 0xe1003850, 0xd04b8540, 0x002ec14f, 0x038400a1, 0x48404f10,
-0x00000620, 0x00000000, 0x40690003, 0x04250101, 0x7b601e14, 0x84012100,
-0x405c9104, 0x01650061, 0xde900784, 0xf1005862, 0xd017a401, 0x00f8401e,
-0x05040101, 0x8e401e10, 0x00000400, 0x00000000, 0x00232812, 0x030600c1,
-0x33681c14, 0x1400c140, 0x400c5403, 0x200104b0, 0x0d900305, 0xc1003460,
-0xd0032400, 0x0072400c, 0x07040081, 0x4a420c10, 0x00000c20, 0x00000000,
-0x0095a017, 0x816c8053, 0x17c02734, 0x4c405300, 0xc005b001, 0x0275009d,
-0x05b409cc, 0x73001cd0, 0xf0016e28, 0x40d8c005, 0x49cc0373, 0x5ed00530,
-0x00000620, 0x00000000, 0x04030012, 0x00bc002f, 0x03c18174, 0xfc003f00,
-0xc001f000, 0x01170087, 0x0170407c, 0x1f4107c0, 0xe0005c00, 0x0047c001,
-0x407c091f, 0x49c801f0, 0x00000400, 0x00000000, 0x00270010, 0x0e5c8997,
-0x27c00930, 0x2d009340, 0xc0083002, 0x00930062, 0x0930025d, 0x932824c0,
-0xf0027c41, 0x0027c009, 0x024c0097, 0x40c00930, 0x00000c20, 0x00000000,
-0x50662001, 0x06440791, 0xa740a910, 0x45009120, 0x4019b002, 0x828142e4,
-0x09140244, 0x9100a440, 0xd00274c1, 0x00274009, 0x02450091, 0x04500914,
-0x00000080, 0x00000000, 0x0224a018, 0x42d400b5, 0x27600910, 0xc420a144,
-0x40891002, 0x10d18426, 0x09500214, 0xd101b540, 0xd0027448, 0x00274009,
-0x02040085, 0x60400810, 0x00000200, 0x00000000, 0x12202010, 0x028408a1,
-0x23601810, 0x8408a102, 0x40089022, 0x04910120, 0x08d00204, 0xc1022150,
-0xc0023008, 0x00274028, 0x42040881, 0x40404810, 0x00000080, 0x00000000,
-0x0584301d, 0x50dc9615, 0x83c40130, 0xac960305, 0xc1413058, 0x0b030046,
-0xe070285c, 0x134585c1, 0xf0517c02, 0x0287c541, 0x004c5015, 0x74c0d130,
-0x00000ac0, 0x00000000, 0x212fb019, 0x027c849f, 0x27400be4, 0x7c049f41,
-0xc009f012, 0x09bf822f, 0x193106fc, 0xaf212ac0, 0xf0027e04, 0x012fc009,
-0x42fc00bf, 0x67c0c9f0, 0x00000e60, 0x00000000, 0x056f8018, 0x06cc09af,
-0x27c00b30, 0x4e029306, 0xc04bb41a, 0x0093053f, 0x69300a4c, 0xb3052fc0,
-0xf052fc02, 0x0224c129, 0x0a7c069f, 0x63c02930, 0x00000e00, 0x00000000,
-0x0487001c, 0x8044201d, 0x43400130, 0xfd0b1100, 0x4081100c, 0x15010084,
-0x52140444, 0x11410740, 0xd0087401, 0x01004071, 0x08740e1d, 0x7340a3b1,
-0x00000c20, 0x00000000, 0x0023a010, 0x0a0502cd, 0x23400810, 0x8500a101,
-0x400814a2, 0x08810061, 0xca1002c4, 0x85452340, 0xd0023600, 0x00284048,
-0x1ab404ad, 0x43404a10, 0x00000e80, 0x00000000, 0x1025a818, 0x024480dd,
-0x27402910, 0xf580b100, 0x40091002, 0x20818824, 0x0b1042c5, 0x95002748,
-0xd2827480, 0x02244009, 0x0af408bd, 0x63400b90, 0x00000620, 0x00000000,
-0x0827a805, 0x024d009f, 0x27c80934, 0x44009340, 0xc009b002, 0xa49340e5,
-0x0930820c, 0x170027c0, 0xf1027640, 0x0024d009, 0x2e7c139f, 0x17c00930,
-0x00000e20, 0x00000000, 0x00258214, 0x027c009f, 0x27c20970, 0x1d008f00,
-0xc008f402, 0x809f0121, 0x09f0027c, 0x1b08a3c8, 0xf0027c02, 0x0027c009,
-0x063c009f, 0x53c409f0, 0x00000600, 0x00000000, 0x01050814, 0x002c8003,
-0x03c01134, 0xfc003700, 0xc001b000, 0x02130306, 0x033408cc, 0x132004c0,
-0x74047c98, 0x000cc000, 0x00fc0237, 0x53c003f0, 0x00000420, 0x00000000,
-0x0c1ca014, 0x01c50871, 0x17002710, 0x4d005100, 0x40271001, 0x0053205c,
-0x05100144, 0x30201c40, 0x100dd501, 0x00144005, 0x01740051, 0x534005d0,
-0x00000200, 0x00000000, 0x00f2a034, 0x212400c1, 0x33001c1a, 0x1580c500,
-0x41081483, 0x00c100a2, 0x0c500304, 0xc1027040, 0x50071420, 0x0030400c,
-0x033400c5, 0x53400cd0, 0x00000a00, 0x00000000, 0x00788005, 0x03840061,
-0x3b402218, 0xa4002180, 0x400c1000, 0x00e10020, 0x125000c4, 0xf1000c40,
-0x10c58005, 0x0048404e, 0x00b42021, 0x174002d0, 0x00000200, 0x00000000,
-0x40600015, 0x072c81e3, 0x5bc01614, 0x1d01f720, 0xc01a3007, 0x0163086a,
-0x1e72078d, 0xe32058d0, 0x74079c81, 0x0078d05f, 0x07bc01e7, 0x57c01ef2,
-0x00000040, 0x00000000, 0x0035b810, 0x027c005f, 0x17c001e1, 0x5d001f00,
-0xc2097000, 0x005f4827, 0x01b0003c, 0x4f6013c0, 0xf0011c40, 0x4007c09d,
-0x007c001f, 0x43c001f0, 0x00000660, 0x00000000, 0x406fa000, 0x05cc01b3,
-0x7fc49772, 0xec01f300, 0xc01b3007, 0x21ff006c, 0x1f3007cc, 0x73406cc0,
-0x3026ec91, 0x087c881f, 0x07fc01ff, 0x03c01fe0, 0x00000e00, 0x00000000,
-0x003d8815, 0x1b848821, 0x3b402210, 0x84082141, 0x400e1220, 0x00ed0029,
-0x031000c4, 0xe1000850, 0x10308404, 0x0008400e, 0x40b4082d, 0x574002d0,
-0x00000620, 0x00000000, 0x00290000, 0x028400a1, 0x1b480612, 0xa400e180,
-0x400a1003, 0x106d0228, 0x0e904384, 0x61001a40, 0x1080a500, 0x0038400c,
-0x03b400ed, 0x03400ed0, 0x00000400, 0x00000000, 0x10332804, 0x0a040001,
-0x1348201a, 0x450a0160, 0x40081028, 0x474d0021, 0x01900424, 0x41205248,
-0x10000405, 0x03c4400c, 0x4c34100d, 0x134000c0, 0x00000c20, 0x00000000,
-0x0035a815, 0x17452553, 0x37c04130, 0x6c00d300, 0x400d308b, 0x03cf0064,
-0x0db0074d, 0xc30152c0, 0x34006c07, 0x0034c00f, 0x0b7c80cd, 0x57400de0,
-0x00000620, 0x00000000, 0x00370001, 0x433c324f, 0x37c021f0, 0x7c100f00,
-0xc00df010, 0x00df00e7, 0x0170005c, 0xdf0415c0, 0xf0083c80, 0x0007c00d,
-0x007c801f, 0x07c001f0, 0x00000c00, 0x00000000, 0x403f0880, 0x03cc0097,
-0x1fc10370, 0x4400f310, 0xc09f7003, 0x005b003b, 0x0f3003cd, 0xf70144c0,
-0xb0024c00, 0x003cc00e, 0x038c00fb, 0x83c00f30, 0x00000c22, 0x00000000,
-0x41f22081, 0x0a442311, 0x1f40b112, 0xc4003160, 0x411d1480, 0x007100b7,
-0x031000c4, 0x5b21c448, 0x112c4c01, 0x0004440f, 0x00548011, 0x07400110,
-0x00000802, 0x00000000, 0x4064a001, 0x03440195, 0x33400550, 0x5500d900,
-0x40055103, 0x20d10627, 0x0d180304, 0x55000440, 0x10094408, 0x4834400d,
-0x034400d1, 0x07400d10, 0x00000200, 0x00000000, 0x00102010, 0x03040001,
-0x33400014, 0x15000900, 0x40041000, 0x00d00003, 0x00100004, 0xc9000440,
-0x10012500, 0x0000400c, 0x00160011, 0x43400010, 0x00000080, 0x00000000,
-0x0026b000, 0x024c0097, 0x13c00170, 0x5c80cb00, 0x40055403, 0x00530037,
-0x0d30034c, 0x574004d0, 0xb4014e20, 0x8034c80d, 0x034c00d3, 0x03e00d32,
-0x00000ac0, 0x00000000, 0x101fb805, 0x82bc003f, 0x1fc003f0, 0xed003608,
-0xc006f000, 0x007f602f, 0x03f000fc, 0x6f000fc0, 0xf001dc00, 0x000fc00f,
-0x00fc0037, 0x17c003f0, 0x00000e60, 0x00000000, 0x023fa003, 0x20ec023b,
-0x3bc023f0, 0x8c0c3700, 0xc00f3022, 0x0073012f, 0x4fd000cd, 0xf3401fc0,
-0xb003ec0c, 0x083cc88f, 0x02cc0073, 0x0cc00ff0, 0x00000e00, 0x00000000,
-0x21370801, 0x1844025d, 0x3748a5d0, 0x444edb00, 0x480d5009, 0x121b04a7,
-0x8fd0024c, 0xd100b440, 0x50abc488, 0x2475405e, 0x564515d1, 0x04400cd0,
-0x00000c20, 0x00000000, 0x1033a011, 0x1804460c, 0x17404850, 0x24000500,
-0x414c1009, 0x26458323, 0x0cd02330, 0xc1021344, 0x90032484, 0x0131504c,
-0x022400c9, 0x44400cd0, 0x00000e80, 0x00000000, 0x0835a803, 0x0044104d,
-0x174005d0, 0x6400c901, 0x402d5081, 0x00190063, 0x0dd10344, 0xc0011448,
-0xd0034400, 0x0131400d, 0x426480c9, 0x0c400dd2, 0x00000620, 0x00000000,
-0x0037a802, 0x164c029b, 0x478025f0, 0x6d071700, 0x80a93001, 0x88c30047,
-0x0df1016c, 0xd30153c2, 0xb0036c00, 0x4035c40d, 0x086404db, 0x08d00df0,
-0x00000e20, 0x00000000, 0x003d8007, 0x09dd40bf, 0x4fc005f0, 0xdc04df00,
-0xc01fd003, 0x411f400f, 0x0eb103d0, 0xdf080fc0, 0x7003fc00, 0x007fc10f,
-0x02dc00f7, 0x1fc00ef0, 0x00000600, 0x00000000, 0x00350802, 0x025c025f,
-0x24d0adb0, 0x5c0c1300, 0xc00d3003, 0x06ff0027, 0x0df0a34c, 0xd300d4c9,
-0x70030c20, 0x0034c00c, 0x084c00df, 0x08800d32, 0x00000420, 0x00000000,
-0x0134a013, 0x0174025d, 0x2040a511, 0x4401d500, 0x444d1083, 0x059903a7,
-0x5fd08f4c, 0xfb2806c0, 0x1003ec00, 0x0134405f, 0x3a4400dd, 0x4c400f10,
-0x00000200, 0x00000000, 0x0072a007, 0x0134500d, 0x21401012, 0x64010180,
-0x400c9102, 0x02cd2822, 0x2cd04c34, 0xc5040140, 0x50030400, 0x04f0401c,
-0x060407cd, 0x1e400c10, 0x00000a00, 0x00000000, 0x00788004, 0x07b4056d,
-0x6d401e10, 0xe4012500, 0x401e9005, 0x496d007b, 0x9cc00684, 0xed206f40,
-0x1107a401, 0x0078101e, 0x06c411ed, 0x12401e11, 0x00000200, 0x00000000,
-0x02301012, 0x015c008f, 0x0140a832, 0x35000310, 0x40048401, 0x22cf0022,
-0x0cf0233c, 0xc70001c0, 0x70034c0c, 0x0030c00c, 0x100d00df, 0x4ac04c30,
-0x00000040, 0x00000000, 0x003db802, 0x23fc24ff, 0x0ee20f70, 0xdc003f00,
-0xc00f7301, 0x00fb003f, 0x0ff003fc, 0xfa000ac0, 0xf003fc38, 0x003fd00f,
-0x00bc00ff, 0x09c00ff0, 0x00000660, 0x00000000, 0x0037a015, 0x064c219f,
-0x15c00530, 0x4c00df00, 0xc00df201, 0x00530005, 0x0de0014d, 0xdf2014c0,
-0xb0337c40, 0x64b7c14d, 0x487c12db, 0x54c00d30, 0x00000e00, 0x00000000,
-0x00398812, 0x030640ad, 0x1b400e30, 0xb400ed00, 0x400ed003, 0x0001001f,
-0x6ed00384, 0xed003ac1, 0xb043b404, 0x803f400e, 0x02b400e1, 0x48403e10,
-0x00000620, 0x00000000, 0x80790003, 0x068401cd, 0x7b681e98, 0xb401e510,
-0x601ed007, 0x0161407b, 0x1ed00785, 0xed005840, 0x90073405, 0x007b409e,
-0x04b641e1, 0x0c405e90, 0x00000400, 0x00000000, 0x00332812, 0x130610cd,
-0x33609c10, 0x348acd00, 0x401dd00b, 0x07011023, 0x0cd02704, 0xcd008240,
-0x90037400, 0x0227400d, 0x083412c9, 0x48400c90, 0x00000c20, 0x00000000,
-0x0015a817, 0x05cd057f, 0x1bc007b4, 0xec017f00, 0xc067f005, 0x1373001f,
-0x07d005cc, 0x5f0098c0, 0xb0017c00, 0x2057c007, 0x017c0253, 0x5cd005b4,
-0x00000620, 0x00000000, 0x00070012, 0x207c001f, 0x47c00170, 0x7c901f00,
-0xc011f020, 0x000f0287, 0x00f0007c, 0x1f0407c8, 0xf0007c00, 0x0087c001,
-0x187c0217, 0x4bc00170, 0x00000c00, 0x00000000, 0x01270810, 0x067c029f,
-0x27c009f0, 0x7c009300, 0xc0893442, 0x019304e4, 0x09b0020c, 0x9300e5c0,
-0x34027c00, 0x0036c009, 0x074c08d3, 0x40c00930, 0x00000c20, 0x00000000,
-0x00a62001, 0x3274039d, 0x274029d2, 0x3c029500, 0x40191002, 0x01914024,
-0x0910026c, 0x95006440, 0x10827400, 0x01654029, 0x26440091, 0x06c00914,
-0x00000800, 0x00000000, 0x0424a018, 0x02540299, 0x26402990, 0x74029180,
-0x40091002, 0x08910020, 0x19901a44, 0x91002540, 0x10027400, 0x91265009,
-0x02050081, 0x60400818, 0x00000200, 0x00000000, 0x02202010, 0x2234088d,
-0x274088d8, 0x74088580, 0x50081052, 0x08c50230, 0xd8102224, 0x85006440,
-0x10123604, 0x80a1502c, 0x0a040281, 0x42416810, 0x00000080, 0x00000000,
-0x0086b01d, 0x585c161f, 0x074161f0, 0x7c161300, 0xc0013010, 0x16130584,
-0x31b0584d, 0x130505c0, 0x302c740b, 0x0006c141, 0x010c0053, 0x74d00032,
-0x00000ac0, 0x00000000, 0x01279819, 0x12fc04bf, 0x2fc04ff0, 0xdc24bf00,
-0xc14bf053, 0x04bb012f, 0xc8f012dc, 0x9f282fc0, 0xf0267c09, 0x4026c009,
-0x027c009f, 0x67c009f0, 0x00000e60, 0x00000000, 0x822fa018, 0x8afc02b3,
-0x30c00b30, 0x4c22b300, 0xc00bf01a, 0x00b300ac, 0x0bd032dc, 0x9f0834c0,
-0x300a6c02, 0x0024c049, 0x024c0093, 0x60d049f0, 0x00000e00, 0x00000000,
-0x0107081c, 0x08740e1b, 0x06514110, 0x490e1b00, 0x4141f008, 0x0e1b2084,
-0xb1d02c44, 0x1d108540, 0x12084402, 0x40004001, 0x01c40011, 0x714000d0,
-0x00000c20, 0x00000000, 0x0023a010, 0x1a340481, 0x266028d2, 0x24008528,
-0x601cd932, 0x108121a0, 0x48d01216, 0x8d00a241, 0x901a2406, 0x0828502a,
-0x02a400a1, 0x424028d0, 0x00000e80, 0x00000000, 0x0021a818, 0x02740299,
-0x264009d1, 0x44009d00, 0x4049d012, 0x00990034, 0x01d00444, 0x9d002740,
-0x90020400, 0x002c4008, 0x02e402b1, 0x634009d0, 0x00000620, 0x00000000,
-0x0027a805, 0x027c0393, 0xa6c029f4, 0x64009701, 0xd009f90e, 0x109344e4,
-0x01f0445c, 0x9f0466c0, 0xb4026c20, 0x0024c009, 0x0a6d0093, 0x16d009f2,
-0x00000e20, 0x00000000, 0x00258014, 0x023c449f, 0x25c00930, 0x7c009b00,
-0xc0097006, 0x009f0127, 0x00f0007c, 0x9f00b5c0, 0x70027c40, 0x0267c109,
-0x025c109f, 0x51c009f0, 0x00000600, 0x00000000, 0x01050814, 0x844c8217,
-0x07c121f0, 0x7c001300, 0xc0013008, 0x12130004, 0x01f0c04e, 0x130884c9,
-0x30007c00, 0x1004c001, 0x084c0013, 0x50c00134, 0x00000420, 0x00000000,
-0x085ca014, 0x01c4047d, 0x134037d1, 0x74407400, 0x40051001, 0x107106dc,
-0x13d00ccd, 0x5f011540, 0xf081f400, 0x0296c005, 0x01449251, 0x50400510,
-0x00000200, 0x00000000, 0x0232a014, 0x230401cd, 0x33600d90, 0x3400d010,
-0x400d9003, 0x021140c6, 0x3cd02726, 0xd5001040, 0x91033480, 0x000c4012,
-0x3c840331, 0x50400d10, 0x00000a00, 0x00000000, 0x08288005, 0x038441ed,
-0x3f430ad0, 0xb400e500, 0x400b9817, 0x0061083a, 0x4ed01384, 0xedc05d49,
-0x9007b408, 0x042a4900, 0x06840031, 0x14404e10, 0x00000200, 0x00000000,
-0x00781015, 0x078d01c7, 0x7b4016f1, 0xfc016300, 0xd01e9417, 0x0141004e,
-0xdef05fa4, 0xe70268c0, 0xb403fc0d, 0x0058c012, 0x24cc2163, 0x54d0be32,
-0x00000040, 0x00000000, 0x0025b810, 0x037c005f, 0x37c009f0, 0x7c00df00,
-0xc00c7027, 0x005f0035, 0x0cf1037c, 0xdb0003c0, 0x705b7c02, 0x4017c001,
-0x1b7d008c, 0x43c00df0, 0x00000660, 0x00000000, 0x007fa000, 0x25fc01bf,
-0x78c01ff2, 0xce01f720, 0xc01f7007, 0x01b7205c, 0x1ec007c9, 0xf30048c1,
-0xb047cc01, 0x0848c016, 0x85cc01b3, 0x00c01f34, 0x00000e00, 0x00000000,
-0x02398815, 0x01b440a7, 0x384086d0, 0x8c0aeb00, 0xc00b0013, 0x04ed0218,
-0x4ed00384, 0xff001ac0, 0x12239400, 0x0098400a, 0x00cc0861, 0x54400e10,
-0x00000620, 0x00000000, 0x00090000, 0x40b400ad, 0x3c4006d8, 0x24004d00,
-0x400e5143, 0x202d000a, 0x0fd00b84, 0xe1002c40, 0x50038400, 0x400c400f,
-0x038400e1, 0x00400e10, 0x00000400, 0x00000000, 0x00072804, 0x10360815,
-0x304004d8, 0x0408c940, 0x402d1043, 0x2b4d0070, 0x0cd00304, 0xcd04c040,
-0x10031420, 0x00304000, 0x0b0400d1, 0x10400c10, 0x00000c20, 0x00000000,
-0x0015a815, 0x0e7c015f, 0x34d07df0, 0xcc01df00, 0xd02d7007, 0x009f2466,
-0x0cf08b4c, 0xf3449450, 0x7203cc80, 0x0144c008, 0x08450213, 0x54d00f30,
-0x00000620, 0x00000000, 0x00070001, 0x027c0057, 0x37c108f0, 0x5c461f00,
-0xc019f003, 0x045f0017, 0x0df0033c, 0xdb4007c0, 0xf2037c00, 0x0037c021,
-0x005c101f, 0x07c00df0, 0x00000c00, 0x00000000, 0x003f0880, 0x01cc00b3,
-0x3cc037f0, 0xfc017300, 0x010ff003, 0x05430029, 0x0f3003cd, 0xf31088c0,
-0x3003dc00, 0x006cc053, 0x53c804b3, 0x00c00ef0, 0x00000c22, 0x00000000,
-0x00262081, 0x25442111, 0x30501910, 0x74001500, 0xc60dd003, 0x03510016,
-0x0db00345, 0xd1408440, 0x10032c00, 0x40354039, 0x1e440751, 0x05400dd0,
-0x00000802, 0x00000000, 0x0414a001, 0x0a041851, 0x34400910, 0x7404d100,
-0x4019d003, 0x02910014, 0x1d100754, 0xc0041440, 0x50034400, 0x02204109,
-0x00540051, 0x04400dd0, 0x00000200, 0x00000000, 0x40102010, 0x02050041,
-0x34400010, 0x36000580, 0x520cd003, 0x00c10010, 0x1d900715, 0xc1200050,
-0x11032400, 0x0021400d, 0x03140081, 0x41400cd0, 0x00000080, 0x00000000,
-0x00043000, 0x00440093, 0x34c00074, 0x7c005100, 0x400df003, 0x00534024,
-0x0d30035c, 0xf30004d0, 0x3003dc40, 0x0014c009, 0x015d00c3, 0x00c00ef0,
-0x00000ac0, 0x00000000, 0x000fb005, 0x00fc003f, 0x3fc003f0, 0xfc003f00,
-0xc00ff003, 0x007f001e, 0x0fb003ec, 0xff000fc0, 0xf003bc00, 0x003ec00f,
-0x03ec00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x133fa003, 0x02cc00bf,
-0x0cc00ff0, 0xcc607f00, 0xc0cff081, 0x00f3023c, 0x0ff003ec, 0x63003fc0,
-0x30028c04, 0x223cc00b, 0x53cc08fb, 0x0fc0cf30, 0x00000e00, 0x00000000,
-0x03270801, 0x004400dd, 0x054004d0, 0x44205d08, 0x406dd103, 0x00d100b4,
-0x0dd00944, 0x5b053f41, 0x10094412, 0x03b6c024, 0x0b6c04c1, 0x0740c914,
-0x00000c20, 0x00000000, 0x0033a011, 0x060400cd, 0x01400cd0, 0x1400dd00,
-0x408cd007, 0x00cd01a0, 0x0cd00f24, 0x41013364, 0x5e201402, 0x20304088,
-0x830484c9, 0x47440c10, 0x00000e80, 0x00000000, 0x0035a803, 0x024400dd,
-0x054005d0, 0x5400dd00, 0x4005d103, 0x00dd0024, 0x0dd00344, 0x59003760,
-0x50035480, 0x30364005, 0x036420d1, 0x0f408d10, 0x00000620, 0x00000000,
-0x0067a802, 0x034c12cf, 0x64d04df1, 0x5c00df01, 0xd069f002, 0x00ff006c,
-0x0df0026c, 0xf30037c0, 0x7208dd00, 0x0034e20b, 0x034c00db, 0x03c00d30,
-0x00000e20, 0x00000000, 0x026d8007, 0x03fc80ff, 0x6ec08ff0, 0xed00ff01,
-0xc003f001, 0x00e34267, 0x0ff002fc, 0xff0037c0, 0xb003ac00, 0x0033c407,
-0x033c00ff, 0x1fc01bf1, 0x00000602, 0x00000000, 0x02250802, 0x037c03df,
-0x07c0acf0, 0x7c084f00, 0xd028f003, 0x04d34034, 0x0df0077c, 0xc34034d0,
-0x30084c00, 0xc034c018, 0x134800db, 0x0bc00d34, 0x00000420, 0x00000000,
-0x0024a013, 0x037409dd, 0x44400fd0, 0x74005d02, 0x4401d022, 0x06f10134,
-0x0fd00344, 0xd1603c40, 0x10036c0a, 0x003c4005, 0x1bec00f1, 0x4f400d10,
-0x00000200, 0x00000000, 0x0032a007, 0x0234200d, 0x01400cd0, 0x34014d00,
-0x406cd00b, 0x03c90024, 0x0cd00334, 0x41003640, 0x90002402, 0x00324008,
-0x0b0400d1, 0x1f400c10, 0x00000a00, 0x00000000, 0x00688004, 0x06b401ed,
-0x48441ed0, 0xb4016d10, 0x4014d007, 0x01e90068, 0x1ed02785, 0x61827a40,
-0x9007a401, 0x087a4026, 0x07a400e1, 0x1b409a10, 0x00000200, 0x00000000,
-0x01301012, 0xa23c084f, 0x01c20cf0, 0x3c00cf14, 0x504cf021, 0x00db4120,
-0x8df0233c, 0x43003240, 0xb4082c00, 0x0232c088, 0x030c08c3, 0x4bc00c30,
-0x00000040, 0x00000000, 0x00bdb802, 0x0afc08ff, 0x0fc08ff0, 0xfc48df02,
-0xc007f003, 0x00f7202f, 0x0df0a37c, 0x7f003dc0, 0x7003fc80, 0x083dc0d7,
-0x03fc80ff, 0x0bc00bf0, 0x00000660, 0x00000000, 0x0037a015, 0x0b7c00d3,
-0x60c009f0, 0x5800d300, 0xc049f002, 0x00d30034, 0x0d30020c, 0xdb0135c0,
-0x26004c00, 0x2034c009, 0x034ca0df, 0x54c01ff2, 0x00000e00, 0x00000000,
-0x10318812, 0x03b400e1, 0x285028d0, 0xbc00e100, 0x4502d003, 0x00f10038,
-0x4e100285, 0xc302b9c0, 0xb0032c00, 0x017ac006, 0x17ac04fd, 0x48400bd0,
-0x00000620, 0x00000000, 0x00790003, 0x47b401e5, 0x6e415ad0, 0xb4016100,
-0x401ad007, 0x01e10078, 0x9e100785, 0xe9017b40, 0xd204a401, 0x027a6018,
-0xa7840ded, 0x0d521ed2, 0x00000402, 0x00000000, 0x00332812, 0x033400c5,
-0x706008da, 0x34004100, 0x4090d120, 0x00c10274, 0x0c100704, 0xc1003740,
-0xd00b2480, 0x00324004, 0x032420cd, 0x494008d0, 0x00000c20, 0x00000000,
-0x4015a817, 0x0d7c1077, 0xded027f0, 0x1c024341, 0xd435f005, 0x00534014,
-0x05349dcc, 0x5b0017c0, 0xf0016c02, 0x8816c007, 0x014c005f, 0x5dc005f0,
-0x000004a0, 0x00000000, 0x00030012, 0x107c0119, 0x47c041f0, 0x5c521f00,
-0xc101f004, 0x001f0007, 0x01f0047c, 0x1f0005c8, 0x9000bc10, 0x0007c002,
-0x007c001f, 0x4a4001f0, 0x00000c00, 0x00000000, 0x00370810, 0x037c0097,
-0x27c008f0, 0x6c259f00, 0xc00d3022, 0x00830024, 0x09b0020c, 0x970025c0,
-0x30424c01, 0x0024c009, 0x025c008f, 0x43c009f0, 0x00000420, 0x00000000,
-0x20262001, 0x1a740191, 0x264019d1, 0x4c009d00, 0x44291116, 0x04912024,
-0x09100244, 0x81202740, 0xb002540a, 0x0026c009, 0x2244009d, 0x07400970,
-0x00000800, 0x00000000, 0x0064a018, 0x02740195, 0x25408950, 0xc4029d01,
-0x40281002, 0x04910024, 0x09900645, 0x95002540, 0x1202c410, 0x0026601b,
-0x0274009d, 0x634009d0, 0x00000200, 0x00000000, 0x02202010, 0x023400c1,
-0x224088d0, 0x8700ad00, 0x40881902, 0x00814a20, 0x08101204, 0x81012340,
-0x90229400, 0x0322509a, 0x2624208d, 0x43408850, 0x00000080, 0x00000000,
-0x0d86b01d, 0x007c4017, 0x15c16170, 0xcc801f20, 0xd1603400, 0x9e110580,
-0xe1b00444, 0x1522c1c1, 0x30084c0a, 0x0186c023, 0xc0740e1f, 0x77c161f0,
-0x00000ac0, 0x00000000, 0x21279819, 0x027c00bf, 0x3dc04bf0, 0x7c00df00,
-0xc049f103, 0x019f012f, 0x19f022fc, 0x9f0267c0, 0xf01a7c03, 0x01a7c069,
-0x025c099f, 0x67c04b70, 0x00000e60, 0x00000000, 0x40b7a018, 0x82fca0b3,
-0x2cc029f0, 0xbc80bf00, 0xd069f002, 0x01bb00ec, 0x89f042dc, 0xb30024c1,
-0x30164c07, 0x01a4c05b, 0x1afc049f, 0x67c0c930, 0x00000e00, 0x00000000,
-0x0083081c, 0x00740011, 0x044040d0, 0x74001d00, 0x5060d000, 0x02130044,
-0x01d0094c, 0x1b150440, 0x1038440a, 0x01844000, 0x1074240d, 0x73400110,
-0x00000c22, 0x00000000, 0x20a3a010, 0x86348085, 0x205029d0, 0x36008d00,
-0x4028d002, 0x168120a0, 0x48d00216, 0x8100a150, 0x14420400, 0x03204168,
-0x1a34128d, 0x43406810, 0x00000e80, 0x00000000, 0x0021a818, 0x027404d5,
-0x646009d0, 0x74409d00, 0x4108d102, 0x80992020, 0x09d00264, 0x99002040,
-0x128a4400, 0x00244009, 0x0276009d, 0x63400910, 0x00000620, 0x00000000,
-0x0227a805, 0x8a7c0197, 0xe4c008f0, 0x7c009f00, 0xc809f006, 0x00934064,
-0x09f0065c, 0x830025c0, 0x30024d00, 0x9024c009, 0x827c009f, 0x17c01930,
-0x00000e20, 0x00000000, 0x00358034, 0x027c009b, 0x27c00df0, 0x7c009f10,
-0xd00df066, 0x00870127, 0x08f0265c, 0x9f0027c0, 0xf0023c00, 0x0027d109,
-0x027c009f, 0x53c099f4, 0x00000600, 0x00000000, 0x80050814, 0x107c0113,
-0x04c001f0, 0x7c021f00, 0xd0213208, 0x00130004, 0x01b0084c, 0x130007c0,
-0x30804c01, 0x0004c000, 0x004c0017, 0x50c001f0, 0x00000420, 0x00000000,
-0x4414a014, 0x19f40370, 0x1d6805d0, 0xf4007d14, 0x4885b011, 0x0c712014,
-0x0510014c, 0x71001740, 0x1001c402, 0x00154017, 0x45d40051, 0x505005d0,
-0x00000200, 0x00000000, 0x0072a014, 0x063409c1, 0x724084d0, 0x3408cd00,
-0x400c100b, 0x03c10070, 0x0c900325, 0xc5003340, 0x54030400, 0x0030401c,
-0x076400c5, 0x50500cd0, 0x00000a00, 0x00000000, 0x00388005, 0x02b40021,
-0x3b4006d0, 0xb420ed10, 0x480e9007, 0x00e100a8, 0x4e100704, 0xe5013b40,
-0x50038400, 0x0179002a, 0x03b009e1, 0x14401cd0, 0x00000200, 0x00000000,
-0x04781015, 0x06bc01a1, 0x7a4016f0, 0xbc016f00, 0xc01e3007, 0x01f3407c,
-0x3eb086ac, 0xf740f3c0, 0x701fcc01, 0x00fcc01a, 0x05ac0de7, 0x54c07ef0,
-0x00000040, 0x00000000, 0x01b5b810, 0x027c801f, 0x35c045f0, 0x7c801f00,
-0xc22df001, 0x001f2427, 0x1df0037c, 0xdb05b7c0, 0xb0037d00, 0x0077c80d,
-0x035c02df, 0x43c00ff0, 0x00000660, 0x00000000, 0x007fa000, 0x27bc0133,
-0x7c003730, 0xcc09fd02, 0xc03ff007, 0x01f3006c, 0x1ff017dc, 0xf3007cc0,
-0x3207cc01, 0x007dc01f, 0x07fc01ff, 0x0bc01ff0, 0x00000e00, 0x00000000,
-0x28398815, 0x03b41021, 0x38504210, 0x8408ed00, 0x402e7011, 0x04710038,
-0x0fd00390, 0xe1023ac2, 0xb0039400, 0x0139400f, 0x23b404ed, 0xd7414ed0,
-0x00000620, 0x00000000, 0x04310000, 0x01f40021, 0x38400412, 0x84086d00,
-0x408cd002, 0x80e90068, 0x0ed01294, 0xc9003840, 0x50038400, 0x1038408e,
-0x01b640ed, 0x43600ed0, 0x00000400, 0x00000000, 0x00632804, 0x41341001,
-0x20400010, 0x04000d00, 0x400c5020, 0x00894030, 0x0cd00b04, 0x49003240,
-0xd0331400, 0x0031409c, 0x033400cd, 0x1b401cd0, 0x00000c20, 0x00000000,
-0x0065a815, 0x0b7c0293, 0x74d02510, 0x4c005f00, 0xd02df02f, 0x00db4034,
-0x0ff0231c, 0xdb403cd0, 0x700bcc00, 0x003dc02d, 0x027c00ff, 0x77c01ff0,
-0x00000620, 0x00000000, 0x002f0001, 0x837c029f, 0xf7c105f4, 0x7d025f00,
-0xc06df003, 0x00d70027, 0x0df0037c, 0xd70031c0, 0xb0033c82, 0x0037c04d,
-0x027c80df, 0x07c00df0, 0x00000c00, 0x00000000, 0x023f0880, 0x03fc0033,
-0x1fc00330, 0xfc017f00, 0xc00ff202, 0x00f30038, 0x0f3002fc, 0xb30037c0,
-0x30034c05, 0x003cc01e, 0x02cc00ef, 0x07c00f10, 0x00000c20, 0x00000000,
-0x08362081, 0x07340011, 0x37409110, 0x74411d08, 0x402dd004, 0x0111002c,
-0x0d10037c, 0x850035c0, 0x50035401, 0x0037c07d, 0x060400dd, 0x07440d14,
-0x00000802, 0x00000000, 0x0020a001, 0x23740411, 0xb7480510, 0x74941d00,
-0x400cd0a3, 0x01d11024, 0x0d900374, 0xd5003740, 0x10034410, 0x0034404d,
-0x476400dd, 0x07400d50, 0x00000200, 0x00000000, 0x40202010, 0x03340001,
-0x33400010, 0x34000d00, 0x4004d001, 0x00012031, 0x0c940354, 0xc5003140,
-0x50031400, 0x00335004, 0x022400cd, 0x43400c10, 0x00000080, 0x00000000,
-0x0036b000, 0x017c0013, 0x17400134, 0x74001f00, 0xc00df002, 0x00d34028,
-0x0db00274, 0x97003fc0, 0x30034c00, 0x0034c005, 0x026c00ff, 0x07c00d70,
-0x00000ac0, 0x00000000, 0x002fb805, 0x01fc003f, 0x2fc003f2, 0xfc402f00,
-0xc00fd000, 0x00bf003e, 0x0f7003fc, 0xbf003fc0, 0xf003fc00, 0x003fc40f,
-0x02dd00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x003f8003, 0x33fc1c33,
-0x3fc08ff0, 0xad00f300, 0xc00f3001, 0x0033200f, 0x0fb083c4, 0x7f053cc1,
-0x3212fc00, 0x133cc84b, 0x33c40c73, 0x0cc00ff0, 0x00000e00, 0x00000000,
-0x12b70801, 0x33740251, 0x3740edd0, 0x4400d140, 0x400d1201, 0x00510007,
-0x2f900344, 0x5d00b440, 0x5021744a, 0x00b54085, 0x0b440291, 0x04400dd0,
-0x00000c00, 0x00000000, 0x0833a011, 0x03140481, 0x33420c50, 0x4400c100,
-0x480c1501, 0x0045c007, 0x0c108305, 0x4d103048, 0x10003440, 0x0b344008,
-0x0a240c11, 0x44400cd0, 0x00000e80, 0x00000000, 0x2835a803, 0x03760091,
-0x37400dd0, 0x4401d100, 0x400d1001, 0x00450c07, 0x0d901304, 0x5d003440,
-0x50037410, 0x00354005, 0x03640ad1, 0x0c400dd0, 0x00000620, 0x00000000,
-0x4037a802, 0x037c2213, 0x37c00df0, 0x2c019300, 0xc01d3001, 0x03d700e7,
-0x0d34134c, 0x7f0034d0, 0x3018fc02, 0x0034c00b, 0x036c0043, 0x08d00cf0,
-0x00000e20, 0x00000000, 0x00318007, 0x03fc247f, 0x3fc00ff2, 0xfc108f00,
-0xc49ff063, 0x42fb015f, 0x0d7007fc, 0x7f003fc0, 0xf003bc00, 0x003fc004,
-0x03dd01ff, 0x1fc00ff0, 0x00000600, 0x00000000, 0x00350802, 0x037c409b,
-0x37c00df0, 0x5c029300, 0xc00d7401, 0x46d340b4, 0x0c30034c, 0x534035c0,
-0xb0085c02, 0x0035d009, 0x124d8213, 0x0bc00d72, 0x00000420, 0x00000000,
-0x203ca013, 0x13f40091, 0x3f400fd0, 0x6c009140, 0x400d1001, 0x02d10070,
-0x0f164344, 0x5b007c48, 0xb0176c00, 0x20384205, 0x8a440091, 0x4f400f10,
-0x00000200, 0x00000000, 0x0032a007, 0x07240009, 0x36600c90, 0x04094100,
-0x480c1101, 0x004c0020, 0x6c100614, 0xc1a1b140, 0x90001100, 0x00314008,
-0x0b040041, 0x1f400c54, 0x00000a00, 0x00000000, 0x00788004, 0x87b405e1,
-0x7b401ed8, 0xa401e108, 0x401e1005, 0x01e90458, 0x1e1027a7, 0xc906784c,
-0x90072429, 0x007c4016, 0x0784c131, 0x13401e10, 0x00000200, 0x00000000,
-0x00301012, 0x033c884b, 0x37c08cfa, 0x1c04c302, 0x404c5021, 0x025d0034,
-0x0c30005c, 0xc30035c0, 0xb0001c08, 0x0031c008, 0x024c8083, 0x4bc00c74,
-0x00000000, 0x00000000, 0x003db802, 0x43fc0cff, 0x37c20ffa, 0xfc00df00,
-0xd00cf001, 0x08f70237, 0x8ff203dc, 0xff0c3fc0, 0xf003fc08, 0x003bc017,
-0x23fc08ef, 0x0bc00ff0, 0x00000660, 0x00000000, 0x0037a015, 0x036c011f,
-0x36c08df0, 0x4c20df22, 0xc01df001, 0x01c30064, 0x2dbc036c, 0xd30034c0,
-0xa4004c00, 0x3074d009, 0x034c0013, 0x54c00db2, 0x00000e00, 0x00000000,
-0x00f98812, 0x038400fd, 0x3b404ed0, 0x8400ed00, 0x400ad083, 0x00e10018,
-0xae500384, 0xc1013840, 0x10030400, 0x11fc4006, 0x03c40031, 0x48504f14,
-0x00000620, 0x00000000, 0x01790003, 0x17840165, 0x7b4c1ed0, 0x8401cd21,
-0x401ed005, 0x01f90078, 0x5e100f84, 0xe1007850, 0x90048501, 0x01784018,
-0x068400e1, 0x0c409ed4, 0x00000400, 0x00000000, 0x20332812, 0x030480cd,
-0x33400dd2, 0x0400cd00, 0x501cd104, 0x01c14070, 0x0cd00704, 0xd1403040,
-0x10030400, 0x20304004, 0x020401c1, 0x48400c50, 0x00000c20, 0x00000000,
-0x0015a817, 0x014d007f, 0x16c005f0, 0x8d046f00, 0xd005f049, 0x127b00dc,
-0x07b10d8d, 0x530014c0, 0xb0090d00, 0x001cc007, 0x054c0173, 0x5cc005f0,
-0x00000620, 0x00000000, 0x08070012, 0x087c401f, 0x07c201f0, 0x7c101f08,
-0xc081f00c, 0x811f0247, 0x0070485c, 0x1f0007c0, 0xf040fc00, 0x4007c802,
-0x287c080f, 0x4bc021a0, 0x00000c00, 0x00000000, 0x00270810, 0x063c009f,
-0x24c00970, 0x4d009f00, 0xc0893816, 0x019f2027, 0x0930027c, 0x930024c6,
-0x70064c00, 0x0025c009, 0x020ca09f, 0x40c00871, 0x00000c20, 0x00000000,
-0x10262001, 0x9674409d, 0x24400910, 0x44429d00, 0x40291002, 0x809d00a7,
-0x29101274, 0x9b08a458, 0x04266c40, 0x00244009, 0x0a44009d, 0x04512910,
-0x00000800, 0x00000000, 0x0024a018, 0x927400dd, 0x26500950, 0x4402dd20,
-0x43091002, 0x869d0427, 0x49100274, 0x91052040, 0x1002c400, 0x0025400b,
-0x0244009d, 0x60400950, 0x00000200, 0x00000000, 0x07202010, 0x7234008d,
-0x20400810, 0x05149d02, 0x40885802, 0x288d0223, 0x881c2274, 0x89222040,
-0x1002a408, 0x0220508a, 0x0a05088d, 0x40402810, 0x00000080, 0x00000000,
-0x0186b01d, 0x987c941f, 0x84c14170, 0x4c041f05, 0x40201081, 0x021f0083,
-0x6430083c, 0x131580c1, 0x74004c02, 0x0585c023, 0x014c561f, 0x74c00170,
-0x00000ac0, 0x00000000, 0x2127b819, 0x127c14bf, 0x27c149f0, 0xfc00bf21,
-0x404bb402, 0x04bf012f, 0x49f012fc, 0x9f0927c0, 0xf00a7c06, 0x0127c069,
-0x8afc24bf, 0x67c029f0, 0x00000e60, 0x00000000, 0x0527a018, 0x0acc0093,
-0xa7c049f0, 0x8c048f01, 0xc00b3002, 0x08930024, 0xc9308a7c, 0x9f0324c1,
-0x3006cc0d, 0x042ec119, 0x12f40093, 0x60d02ab0, 0x00000e00, 0x00000000,
-0x2187081c, 0x08440411, 0x834941d0, 0x45021d01, 0x0340b000, 0x00110d04,
-0x21000074, 0x0d0008c0, 0xb1285402, 0x08844141, 0x90749515, 0x71404110,
-0x00000c20, 0x00000000, 0x4423a010, 0x0a041281, 0x234028d0, 0x44088d03,
-0x40091002, 0x04a10028, 0x4a0102b4, 0x8d01a950, 0x1402040c, 0x05224008,
-0x4a344081, 0x40484890, 0x00000e80, 0x00000000, 0x0025a818, 0x02640291,
-0x274009d0, 0x44209d00, 0x58099042, 0x00b1402c, 0x0b108af4, 0x8d082d40,
-0x92025400, 0x00244009, 0x02744495, 0x61500910, 0x00000620, 0x00000000,
-0x0027a805, 0x024d0193, 0x27c009f0, 0x0c129f00, 0xc008302e, 0x40932124,
-0x0934027c, 0x9f1825c0, 0x30424c00, 0x4026c809, 0x267c8493, 0x14d009b4,
-0x00000e20, 0x00000000, 0x00258014, 0x025c099f, 0x27c009f0, 0x7d00cf00,
-0xc099f042, 0xe89f0667, 0x08f0027c, 0x9f0024c0, 0xf0027c00, 0x0027c009,
-0x463c009f, 0x53d009f4, 0x00000600, 0x00000000, 0x00050814, 0x104c0003,
-0x07c00134, 0x4c001300, 0xc1013c00, 0x001f0084, 0x01f0084c, 0x130004c0,
-0x30084c00, 0x0004c800, 0x007c0213, 0x50c011f0, 0x00000420, 0x00000000,
-0x0014a014, 0x05c40051, 0x17400510, 0xc4085100, 0x40051041, 0x535d0094,
-0x05d04144, 0x5b081400, 0xb0010400, 0x10544005, 0x4df40055, 0x504076d1,
-0x00000200, 0x00000000, 0x0036a014, 0x0f0500c1, 0x33400c10, 0x25000100,
-0x403c1007, 0x13cd0234, 0x1cd04744, 0xc1003060, 0x10030400, 0x2074540c,
-0x023000c1, 0x50400cd0, 0x00000a00, 0x00000000, 0x01308005, 0x478404e1,
-0x7b408e10, 0xa4006101, 0x442e1003, 0x016d1028, 0x2ed00284, 0xe9206860,
-0x94028404, 0x0438404e, 0x02b440e5, 0x14400ed1, 0x00000200, 0x00000000,
-0x41781015, 0x07cc03f3, 0x7bc25e31, 0xac11a341, 0xd0161006, 0x01fd0058,
-0x17f2078c, 0xe32458d0, 0x30078d05, 0x007ce47c, 0x06bc41e3, 0x54d016f0,
-0x00000040, 0x00000000, 0x0235b810, 0x027c00df, 0xb7c00df0, 0x5c06df02,
-0xc005f002, 0x00df0007, 0x0dd0027d, 0xdf0037c0, 0xf002241c, 0x0037c00d,
-0x007c01fe, 0x43c005f0, 0x00000660, 0x00000000, 0x007fb000, 0x06cc0dff,
-0xffc01f30, 0x9c012300, 0xc81f2007, 0x21fa027f, 0x1b3007cd, 0xf2007cc0,
-0x34078c01, 0x006fc21f, 0x07fc01f3, 0x03801332, 0x00000e00, 0x00000000,
-0x00398015, 0x028418ed, 0x3b400e10, 0x950a6100, 0x044eb0a3, 0x0061002b,
-0x2a3402c4, 0xf100a840, 0x5002bc00, 0x002b400e, 0x23b400e1, 0x56408210,
-0x00000620, 0x00000000, 0x02390000, 0x018604ed, 0x3b408e90, 0xd400b100,
-0x09021003, 0x12e1043b, 0x06904384, 0xe1001a40, 0x1003a400, 0x002b400e,
-0x03b418e1, 0x03400214, 0x00000400, 0x00000000, 0x00332804, 0x000606cd,
-0x33400c90, 0x1406c100, 0x44109023, 0x015100e3, 0x0c100204, 0xc1003040,
-0x54363400, 0x0027402d, 0x017406c1, 0x12400010, 0x00000c20, 0x00000000,
-0x003da815, 0x014d03ff, 0x3fc00fb4, 0x1d021340, 0xc00d300f, 0x41934077,
-0x0cb00d4c, 0xf30034f0, 0x300b6d00, 0x4037c07f, 0x077c01f3, 0x57c00930,
-0x00000620, 0x00000000, 0x00370001, 0x017c00df, 0x37c20d70, 0x7c005f00,
-0xc00df41b, 0x80170037, 0x2df0417c, 0xdf20a7c0, 0xf0037c00, 0x1037c04d,
-0x077c00df, 0x06c009f0, 0x00000c00, 0x00000000, 0x003f0880, 0x01fc00df,
-0x34c00ef0, 0xcd00a300, 0xe01f3002, 0x08b6061f, 0x173201cc, 0xf32050c0,
-0x70028c00, 0x0134c00f, 0x037c00f3, 0x03c00371, 0x00000c22, 0x00000000,
-0x00362081, 0x007400dd, 0x35400dd0, 0x6c02d100, 0x601d5108, 0x00910017,
-0x35100904, 0xd108c440, 0x10027c00, 0x0034400d, 0x057400df, 0x07400110,
-0x00000802, 0x00000000, 0x0034a001, 0x027400dd, 0x30400dd8, 0x64009120,
-0x498d1043, 0x00d100b3, 0x89192b44, 0xc1223440, 0x50234400, 0x0034400d,
-0x057420d1, 0x07401550, 0x00000200, 0x00000000, 0x00302010, 0x063400cd,
-0x31400cd0, 0x65004100, 0x400c5003, 0x00410823, 0x09180245, 0xc1002040,
-0x14033700, 0x0030400c, 0x053400cd, 0x43400410, 0x00000080, 0x00000000,
-0x0036a000, 0x013c00df, 0x3cc00df0, 0x4c009300, 0x40053003, 0x80834013,
-0x0014014c, 0xf30014c0, 0x72024c00, 0x0034d00d, 0x017c00d3, 0x03c00570,
-0x00000ac0, 0x00000000, 0x003f8805, 0x00fc00ff, 0x3fc00fd0, 0xfc00ff20,
-0xc007f003, 0x003b000f, 0x039000fc, 0xff000f80, 0xf002fc00, 0x083fc00f,
-0x01fc20fc, 0x17c007f0, 0x00000e60, 0x00000000, 0x002f8003, 0x008c4033,
-0x0fc003d2, 0xfc20ff02, 0xc00f3410, 0x80f3043d, 0x8fb013ec, 0x3b053ec0,
-0x7000dc28, 0x403fc007, 0x83cc0073, 0x0fc08ff2, 0x00000e00, 0x00000000,
-0x24170801, 0x80440051, 0x174105d0, 0x7418df00, 0x400d1148, 0x10f500b4,
-0x6e103bc4, 0x11013c40, 0x10004404, 0x0437400d, 0x13c40051, 0x07404dd0,
-0x00000c20, 0x00000000, 0x0103a011, 0x00340009, 0x13400050, 0x7404cd00,
-0x400c9030, 0x48c50031, 0x2c104324, 0x8d053240, 0x50003400, 0x4137480c,
-0x43140051, 0x47404cd0, 0x00000e80, 0x00000000, 0x0875a803, 0x04750019,
-0x974005d0, 0x7400d510, 0x400d9042, 0x00c50034, 0x0d900364, 0x95003040,
-0x14006400, 0x0117400d, 0x03561050, 0x0f400dd0, 0x00000620, 0x00000000,
-0x44b7a802, 0x447c058b, 0x07c8c1f0, 0x7c009d10, 0xc08db000, 0x00d70035,
-0x0da4036c, 0x1f0036c0, 0x700c7c01, 0x0037c09d, 0x03590052, 0x0bc20df2,
-0x00000e20, 0x00000000, 0x201d8007, 0x00cc0277, 0x3fc007f2, 0x7c00bf10,
-0xc00f7000, 0x80ff103f, 0x0f70031c, 0x9b0037c0, 0xf0249c09, 0x087fc80b,
-0x03ec023f, 0x1fc00ff2, 0x00000600, 0x00000000, 0x00b50802, 0x007c009f,
-0xb5c08970, 0x4d00df00, 0xc01db04b, 0x00df1037, 0x0d70434c, 0x8b4035c0,
-0x34284c00, 0x0035c00d, 0x034c025f, 0x0b400d30, 0x00000420, 0x00000000,
-0x02b4a013, 0x28740a1d, 0x34400d50, 0x0800dd00, 0x400c500b, 0x00fd043f,
-0x0f100fc4, 0x90003ec0, 0x10804400, 0x03b0400d, 0x03ec00cd, 0x4f440f10,
-0x00000200, 0x00000000, 0x0026a007, 0x0834000d, 0x03413840, 0x2400cd08,
-0x48089000, 0x00cc0077, 0x0d502704, 0x41003140, 0x10070400, 0x00a1400c,
-0x0334094d, 0x1f400c10, 0x00000a00, 0x00000000, 0x00788004, 0x04a481ed,
-0x7a481812, 0x8421ed00, 0x40be1006, 0x49cd007b, 0x9e502784, 0x61027844,
-0x10070401, 0x0068601e, 0x2734017d, 0x13401e10, 0x00000200, 0x00000000,
-0x00101032, 0x003c084f, 0x33c00c70, 0x2400df02, 0xc00cb000, 0x00cf0033,
-0x0c70030c, 0xcb003140, 0x301b0c00, 0x0091c00d, 0x033c004f, 0x4bc08c34,
-0x00000040, 0x00000000, 0x003db002, 0x03fc20ff, 0x3dc00ffa, 0xf400ff02,
-0xc00ff002, 0x10ff003f, 0x0db04bfd, 0xff0437c3, 0xf0037d08, 0x021fc08f,
-0x03ec006f, 0x0bc30ff0, 0x00000660, 0x00000000, 0x0037a015, 0x0074409f,
-0x07c001f0, 0x7c009e05, 0xc00cf002, 0x04d3403c, 0x0d700f6c, 0x530936c1,
-0x32135c00, 0x4037c00d, 0x334c0041, 0x57c00db0, 0x00000e20, 0x00000000,
-0x84398812, 0x00b420ed, 0x3b4402d0, 0xb400ad00, 0x480ef002, 0x10f1007c,
-0x4e011304, 0xe5033040, 0x10438400, 0x003b440e, 0x43c40065, 0x4b404e10,
-0x00000620, 0x00000000, 0x94790003, 0x469401ed, 0x7b401ed0, 0xb401ed00,
-0x401ed007, 0x05e10078, 0x1c4103a4, 0xc1017b40, 0x90071401, 0x005b401e,
-0x13a58169, 0x0f401e51, 0x00000400, 0x00000000, 0x80732812, 0x963404cd,
-0xb3402cd0, 0x3401cd04, 0x528c40a7, 0x00c10034, 0x0c100304, 0xc5003140,
-0x90030412, 0x1057407c, 0x0324424d, 0x4b400c50, 0x00000c20, 0x00000000,
-0x00d5a817, 0x05bc027f, 0x97c007f0, 0xfc105f00, 0xc014d00d, 0x40533014,
-0x0570016c, 0x530017c0, 0xb6015d00, 0x51dfc037, 0x016c106b, 0x5fc005f0,
-0x00000600, 0x00000000, 0x04870012, 0x007c400f, 0x07c041f0, 0x7c001f00,
-0xc001f20c, 0x000f0007, 0x01f0007c, 0x1f0000c8, 0x74003c00, 0x00c7c081,
-0x005c3017, 0x4bc001a0, 0x00000c00, 0x00000000, 0x00770810, 0x025c0893,
-0x34c01870, 0x7c009f08, 0xc009f006, 0x00930024, 0x08300a5c, 0x870024f0,
-0x30026c00, 0x0024c809, 0x020c0591, 0x43c00930, 0x00000c00, 0x00000000,
-0x43262001, 0x22540391, 0x24405950, 0x74209d00, 0x4009d00a, 0x00935024,
-0x09101a04, 0x91002444, 0x10024400, 0x01654008, 0x026c4095, 0x07400910,
-0x00000800, 0x00000000, 0x0020a018, 0x02541091, 0x24408950, 0x74009d00,
-0x5019d062, 0x00910024, 0x09100254, 0x95002440, 0x1002e500, 0x0064500d,
-0x02440095, 0x63400910, 0x00000200, 0x00000000, 0x02202010, 0x02040081,
-0x20508810, 0x34088d02, 0x4018d022, 0x08810020, 0x48104204, 0xa1032040,
-0x10029406, 0x90204089, 0x32260491, 0x43400814, 0x00000080, 0x00000000,
-0x0086b01d, 0x505c1413, 0x84c16153, 0x7c561f00, 0xc141f058, 0x10130384,
-0xc130005c, 0x17050440, 0x1010ec04, 0x4004c001, 0x0c4c0417, 0x77c1e130,
-0x000008c0, 0x00000000, 0x0137b819, 0x02fc00bf, 0x27c24bf0, 0xfc04bf01,
-0xc00bf012, 0x009f0327, 0xc9f04274, 0x9f0127c0, 0xf4226426, 0x042bc01b,
-0x327c08bf, 0x67c019f0, 0x00000ce0, 0x00000000, 0x18afa018, 0x02cc009f,
-0xa6c92bf0, 0xcc029f10, 0xd60bf01a, 0x009b0368, 0x49b052cc, 0x9b00a4c1,
-0x3042ec00, 0x082bc809, 0x027c14b3, 0x60c2c9b0, 0x00000e00, 0x00000000,
-0x0007081c, 0x00442a1d, 0x044021d0, 0x44021d01, 0x4021d001, 0x04050184,
-0x61501844, 0x51208040, 0x10084406, 0x01174441, 0x00740251, 0x70406150,
-0x00000c20, 0x00000000, 0x0123a010, 0x0a24008d, 0x204008d0, 0x24228d00,
-0x4028501a, 0x128140b0, 0x08904234, 0x8820a041, 0x50022532, 0x04234108,
-0x0a340081, 0x40402810, 0x00000e80, 0x00000000, 0x0125a818, 0x5264209d,
-0x264028d2, 0x64009d14, 0x4009d002, 0x00950024, 0x08100244, 0x81002440,
-0x50024400, 0x00274069, 0x02742895, 0x60400950, 0x00000620, 0x00000000,
-0x00a7a805, 0x8265009f, 0xe6d019f1, 0x6d089f20, 0xc088f00e, 0x00930024,
-0x09b1025d, 0x9b0024d0, 0x54026c02, 0x40e7c009, 0x027c0193, 0x14d009b4,
-0x00000e20, 0x00000000, 0x00658014, 0x025c08cf, 0x25c029f0, 0x5c008f22,
-0xc019f012, 0x008f2027, 0x09f0027c, 0x9f0023c0, 0xb0025c00, 0x0167c009,
-0x023c009b, 0x53c009f1, 0x00000600, 0x00000000, 0x44850814, 0x047c1013,
-0x04c10150, 0x4d001f00, 0xc0013020, 0x00130044, 0x01f0404c, 0x170005e0,
-0x31006d02, 0x0087cc01, 0x004c0013, 0x50c00130, 0x00000420, 0x00000000,
-0x105ca014, 0x09f40051, 0x14423750, 0xc4005d10, 0x40071029, 0x0051001c,
-0x05900dd4, 0x51c01442, 0x00110400, 0x24df4005, 0x016c1051, 0x504005b0,
-0x00000200, 0x00000000, 0x0032a014, 0x243400c1, 0x32402c50, 0x2400cd00,
-0x50041007, 0x80c10034, 0x0cd00144, 0xc1003148, 0x90072400, 0x0487480c,
-0x030401c1, 0xd2400d10, 0x00000a00, 0x00000000, 0x04588005, 0x04240061,
-0x38402e50, 0x8400ed22, 0x490c1005, 0x08e10038, 0x4ed00984, 0xe1013840,
-0x14028404, 0x801f40ce, 0x13a401f1, 0x16404e90, 0x00000200, 0x00000000,
-0x005c1015, 0x05bc1123, 0x78d01c72, 0x8c85ff00, 0xc0163405, 0x05e30078,
-0x7cf0058c, 0xc1017940, 0xb0072c07, 0x505bc01e, 0x0fcc01a3, 0x56d05f30,
-0x00000040, 0x00000000, 0x0815b810, 0x817c061f, 0x35e20df0, 0x3408df00,
-0xe005f001, 0x10df4036, 0x2db1097d, 0xdf0637d0, 0xf0027d02, 0x0817c00d,
-0x077c00cf, 0x41c29df0, 0x00000660, 0x00000000, 0x006fa000, 0x07fc09fb,
-0x7bc01fb0, 0xcc01f300, 0xc0133005, 0x01f3005f, 0x3f320dcc, 0xf3207ec0,
-0xf206ec03, 0x006fc01f, 0x07fc01f3, 0x00c01f30, 0x00000e00, 0x00000000,
-0x01298811, 0x09bc00e1, 0x3b4006f0, 0xa400f100, 0x408e1001, 0x00f1480b,
-0x4f1001c4, 0xf1003c40, 0x10028400, 0x001f400e, 0x03f400eb, 0x55400e10,
-0x00000620, 0x00000000, 0x90b90000, 0x03b60021, 0xbf400ad0, 0x8400e100,
-0x40061001, 0x00e9001b, 0x0e900184, 0xe1023842, 0x50021400, 0x008b400e,
-0x03b410a1, 0x00400e10, 0x00000400, 0x00000000, 0x00332804, 0x49140301,
-0x37409150, 0x6400c100, 0x40041011, 0x00c90003, 0x0c900005, 0xd1403448,
-0x10021502, 0x0017408c, 0x033403c1, 0x11400c10, 0x00000c20, 0x00000000,
-0x4021a815, 0x11740613, 0x3f400dd0, 0x4d00f340, 0xc0003403, 0x00f90017,
-0x0fb4014c, 0xf1003cd2, 0x70037d02, 0x0087403e, 0x03fc03d1, 0x54c00f34,
-0x00000620, 0x00000000, 0x00670001, 0x097c021f, 0x77c009f0, 0x5c00df00,
-0xc019f001, 0x00d70007, 0x0d70097c, 0xdf0035c0, 0x70026c90, 0x0017c10d,
-0x033c30df, 0x07c40df0, 0x00000c00, 0x00000000, 0x00cf0880, 0x01fc1933,
-0x3cc84770, 0xfa00f300, 0xe02370a4, 0x00e70014, 0x0f7001dc, 0xf7003fc0,
-0xb0038c00, 0x000cc00f, 0x03c000e3, 0x03c00d30, 0x00000c22, 0x00000000,
-0x00062081, 0x0d740311, 0x354131d1, 0x7400d100, 0x50011000, 0x00dd8004,
-0x0d100144, 0xd10037c0, 0x50026c00, 0x0054400d, 0x036c00d1, 0x07480d10,
-0x00000802, 0x00000000, 0x0c24a001, 0x11741011, 0x34400dd0, 0x7440d100,
-0x40015000, 0x00dd2074, 0x0d545114, 0xd5003740, 0x90024400, 0x00c4400d,
-0x03540891, 0x07400d10, 0x00000200, 0x00000000, 0x00242010, 0x01340001,
-0x30500090, 0x2400c100, 0x40081000, 0x00cd8070, 0x0c100304, 0xd1003140,
-0x90022400, 0x0010400d, 0x033600c1, 0x43400c14, 0x00000080, 0x00000000,
-0x0022b000, 0x017c0013, 0x34c00170, 0x7400d340, 0x48017200, 0x20ff2034,
-0x0f7002dc, 0xf7003f40, 0xb0024c00, 0x0004c00d, 0x035c0093, 0x03c00d30,
-0x00000ac0, 0x00000000, 0x002fb805, 0x01fc003f, 0x3fc003f0, 0xbc00ff10,
-0xc003f000, 0x00ff003f, 0x0ff003fc, 0xff003fc0, 0x7002fc00, 0x001fc00f,
-0x03ec00fd, 0x17c00ff0, 0x00000e48, 0x00000000, 0x001fa003, 0x23fc00f3,
-0x3cc40f70, 0xbc08ff02, 0xc007b003, 0x003f000d, 0x033000fc, 0xf3400cc0,
-0x3013fc00, 0x003cc402, 0x02ed0033, 0x0cc04f30, 0x00000e00, 0x00000000,
-0x00170801, 0x035c0adb, 0x36c00fd8, 0x7684dd00, 0xc40dd203, 0x001d2806,
-0x01300074, 0xd1083442, 0x100b7410, 0x00344001, 0x0304005b, 0x06c20c10,
-0x00000c00, 0x00000000, 0x4033a011, 0x103400c5, 0x31480cd3, 0x14444d01,
-0x4000d003, 0x00451011, 0x08100234, 0xc1100142, 0x540b3408, 0x00304005,
-0x03448041, 0x44502c10, 0x00000e80, 0x00000000, 0x0035a803, 0x427400d5,
-0xa5600dd1, 0x7400dd00, 0x410dc082, 0x085d0415, 0x09900270, 0xd1063540,
-0x50077400, 0x40704105, 0x03440051, 0x0c400d10, 0x00000620, 0x00000000,
-0x20b38802, 0x0a7c20d5, 0xf4500d78, 0x7c01df10, 0x402db007, 0x059f00f5,
-0xad340b38, 0xd31045d0, 0x70037c40, 0x0074d095, 0x260c0151, 0x084c0d34,
-0x00000e20, 0x00000000, 0x003d8007, 0x8edc00db, 0x3e880ff1, 0xfc04ff09,
-0xc10fe122, 0x819d023e, 0x0d7057fc, 0xfe0046c0, 0xb003bc00, 0x003fc007,
-0x03fc09ff, 0x1fc00ef2, 0x00000608, 0x00000000, 0x00750802, 0x025d00db,
-0x36c80cf0, 0x7c01df08, 0xc0093403, 0x08970094, 0xac300b4d, 0xd74100c0,
-0x70027c00, 0x0034c00d, 0x036c005b, 0x08c00d30, 0x00000420, 0x00000000,
-0x20748013, 0x8a4400f1, 0xb4c00ff0, 0x7402dd00, 0x400c1082, 0x01910054,
-0x0d100b44, 0xf1000440, 0xe2037400, 0x02b6c20c, 0x2b440ad1, 0x4c40af10,
-0x00000200, 0x00000000, 0xc192a007, 0x120400c1, 0x20404c90, 0x3406cd02,
-0x40345023, 0x27c50060, 0x14500914, 0xc100b062, 0xd0033400, 0x0030400c,
-0x23260951, 0x1c408c90, 0x00000a00, 0x00000000, 0x00788004, 0x268401e1,
-0xea489cd0, 0xf481ed20, 0x511c5005, 0x81e1066c, 0x16502511, 0xe102786c,
-0xd00fb401, 0x007a401f, 0x0784a1f1, 0x10401e90, 0x00000200, 0x00000000,
-0x00b01012, 0x621c00c3, 0x20d00cf0, 0x3c084f20, 0xc2007003, 0x6445aa34,
-0x00700014, 0xc70030d0, 0x70033800, 0x4030c00c, 0x032c0243, 0x48d00cb4,
-0x00000000, 0x00000000, 0x00b9b802, 0x22fc08f7, 0x1dc00d71, 0x7e28ff02,
-0xc80db221, 0x007f8a37, 0x03b480ec, 0xdf203fe0, 0x72037c00, 0x043bc00f,
-0x23fc08e7, 0x0bc08f70, 0x00000660, 0x00000000, 0x00f7b015, 0x027c00d3,
-0x71c32d38, 0x3c809b00, 0xc005a003, 0x00d30824, 0x0d30035c, 0xd34037c0,
-0xf0037c81, 0x0034c00d, 0x034c005f, 0x54c00d31, 0x00000e00, 0x00000000,
-0x00398012, 0x02f405e1, 0x38402f1a, 0xb400a100, 0xc00e1003, 0x00c10822,
-0x0e108380, 0xe1043f40, 0xd803b402, 0x0079400f, 0x03c400ed, 0x48485f10,
-0x00000620, 0x00000000, 0x00790003, 0x079409e1, 0x7d425e14, 0xb481e900,
-0x48129847, 0x03e18078, 0x1e100705, 0xe900fb40, 0x5007b480, 0x0178401e,
-0x0784116d, 0x0c40de10, 0x00000400, 0x00000000, 0x00322812, 0x073420d1,
-0x10600c10, 0x340fd100, 0x410c114f, 0x10c10432, 0x9c140704, 0xc900f740,
-0xd0033420, 0x0a71404d, 0x830441cd, 0x48400c11, 0x00000c20, 0x00000000,
-0x0095a817, 0x09dc0051, 0x1dc00532, 0xfc827b04, 0xc025b005, 0x415350d0,
-0x25301d5d, 0x5b30d7c0, 0xf0117c40, 0x000cc107, 0x014d027f, 0x5cd00534,
-0x00000620, 0x00000000, 0x41070012, 0x247c001f, 0x07c001f0, 0x7c001f00,
-0xc021f200, 0x020f0207, 0x01f0007c, 0x170187c9, 0xf0087c00, 0x2007c401,
-0x007c011f, 0x4bc001f2, 0x00000c00, 0x00000000, 0x00370810, 0x8e4c809f,
-0x24c08850, 0x5cc09f00, 0xc009300e, 0x01930064, 0x0930420c, 0x800027c0,
-0x30024c00, 0x0004c019, 0x024c0093, 0x40c00930, 0x00000c20, 0x00000000,
-0x02662001, 0x0604409d, 0x64400910, 0x04019d20, 0x42281002, 0x05930065,
-0x09120a44, 0x91412700, 0x111a0480, 0x4027c889, 0x02450091, 0x04540914,
-0x00000800, 0x00000000, 0x0024a018, 0x0245009d, 0xe4400910, 0x56019d00,
-0x40095003, 0x04b0022c, 0x8f1043c4, 0x95002f00, 0x10024400, 0x00204009,
-0x02040081, 0x60400810, 0x00000200, 0x00000000, 0x00202010, 0x03441c8d,
-0x20508c54, 0x04018d08, 0x400c5402, 0x00a10029, 0x0a100284, 0x81822b40,
-0x10024408, 0x40a34088, 0x0a040281, 0x40402810, 0x00000080, 0x00000000,
-0x0006a01d, 0x804c261f, 0x04c16152, 0x5c001f00, 0xc1417001, 0x14130d04,
-0x41345044, 0x17058fc5, 0x30504c16, 0x0504c021, 0x004c0003, 0x74c00130,
-0x00000ac0, 0x00000000, 0x0823a819, 0x52fc049f, 0x2fc849b0, 0xfc14bf0d,
-0xc00ab002, 0x00d74027, 0x09f0027d, 0x9a0127c0, 0xfc02fc04, 0x000fc04b,
-0x02fc00bf, 0x67c029f0, 0x00000e60, 0x00000000, 0x002fa018, 0x0abc149f,
-0x2cc02bf0, 0xfc40bb02, 0xc04bd002, 0x04a3012c, 0x083212fc, 0x9300afc0,
-0x30520c00, 0x006cc02b, 0x224c009f, 0x63c40932, 0x00000e00, 0x00000000,
-0x8017081c, 0x0074861d, 0x06e021d0, 0x74941101, 0x40a1d200, 0x02110005,
-0xa1102870, 0x110187c0, 0x10085400, 0x00454001, 0x0445011d, 0x73487312,
-0x00000c20, 0x00000000, 0x0023a010, 0x1234108d, 0x244028d0, 0x34008900,
-0x4208d002, 0x088900a0, 0x08100234, 0x8101a340, 0x10024400, 0x05a04408,
-0x128614ad, 0x43412a10, 0x00000e80, 0x00000000, 0x2025a818, 0x4274009d,
-0x244009d0, 0x74049100, 0x4049d002, 0x00990524, 0x09100274, 0x91002540,
-0x10025400, 0x10654029, 0x02c400bd, 0x63400b11, 0x00000620, 0x00000000,
-0x0027a805, 0x0a7c009d, 0xa45009d0, 0x7c059b01, 0xc009f002, 0x439b4024,
-0xd934167c, 0x93402740, 0x30060c00, 0x0024c009, 0x024c009f, 0x17c00934,
-0x00000e20, 0x00000000, 0x00258014, 0x4e7c809f, 0xe7c109f0, 0x7c809f08,
-0xd019f012, 0x45970063, 0x0df0527c, 0x9f0027c0, 0xfc277c00, 0x0027c059,
-0x267c059f, 0x53c009f0, 0x00000600, 0x00000000, 0x00850814, 0x007c801f,
-0x04c00034, 0x7c021700, 0xc040f020, 0x03130005, 0x0130004c, 0x1f0200c0,
-0x30007c00, 0x2004c081, 0x00cc003f, 0x50d00330, 0x00000420, 0x00000000,
-0x001ca014, 0x45e4005d, 0xd8400710, 0xf4387100, 0x4037d10d, 0x02714114,
-0x05140585, 0x59001c43, 0x10297400, 0x2016c005, 0x0144005d, 0x51400510,
-0x00000200, 0x00000000, 0x01b2a014, 0x0b2400cd, 0xf0403c10, 0x3442c526,
-0x4038d04f, 0x01c90071, 0x0c100d24, 0xdd807040, 0x10003400, 0x0020401d,
-0x036400dd, 0x50400c10, 0x00000a00, 0x00000000, 0x00288005, 0x06f40ced,
-0x384a2410, 0xb480e100, 0x4027d003, 0x11e10020, 0x1e1041b4, 0xe9881840,
-0x1600f400, 0x200a400e, 0x00a4402d, 0x15401010, 0x00000200, 0x00000000,
-0x00781015, 0x07bc85ef, 0x7cd01234, 0xbc01e720, 0xc013f007, 0x01e30079,
-0x1a320724, 0xef0058d0, 0x3044bc15, 0x0068e01f, 0x07ed01ff, 0x54d01e34,
-0x00000040, 0x00000000, 0x0035b810, 0x036c00df, 0x37c001f0, 0x7c00df20,
-0xc005f003, 0x009f0037, 0x2df0034c, 0xdb0017c0, 0xf0187c8e, 0x0007e00d,
-0x005c001f, 0x42c001f0, 0x00000660, 0x00000000, 0x007fb000, 0x068c01f3,
-0x78c213f0, 0xfc49f320, 0xc0dbc004, 0x01f3007c, 0x3f3006cc, 0xf3007cc0,
-0xf024dc81, 0x006cc01e, 0x07fc01f3, 0x00c21ff2, 0x00000e20, 0x00000000,
-0x00a98015, 0x228408e1, 0x1ac28a10, 0x9c88e106, 0x418ad041, 0x00630038,
-0x0e100284, 0xe1021c40, 0xd0308400, 0x0008400e, 0x00b4102b, 0x544083d0,
-0x00000620, 0x00000000, 0x02390000, 0x03d500e1, 0x0c400650, 0xb600e940,
-0x4040d020, 0x00e10238, 0x0e900284, 0xe1001a40, 0xd000b400, 0x002c400a,
-0x63b400e1, 0x00400ed0, 0x00000400, 0x00000000, 0x40332804, 0x410400c1,
-0x90700410, 0x16848900, 0x4000d004, 0x00010030, 0x0c900204, 0xc1421242,
-0xd2002400, 0x00004009, 0x80344409, 0x104000d1, 0x00000c20, 0x00000000,
-0x00a5a815, 0x824480f1, 0x64400c70, 0x3c008b02, 0xd029f00c, 0x80535034,
-0x0db4024d, 0xf30016d0, 0xf0447c00, 0x0024c00d, 0x077c00d3, 0x54d00df0,
-0x00000600, 0x00000000, 0x00070001, 0x027c00df, 0xa7c005f2, 0x7c009700,
-0xc045f040, 0x00572033, 0x0c70027c, 0xdf0415c0, 0xf1085c00, 0x2047d00d,
-0x007c001f, 0x07c001f0, 0x00000c00, 0x00000000, 0x04ff0880, 0x0ffc20d3,
-0x2cc003b0, 0xcc00bb00, 0xc0033003, 0x04d30074, 0x4df0164c, 0xd3005cc0,
-0x7000cc00, 0x002cc00b, 0x03cc00f3, 0x00c00f30, 0x00000c02, 0x00000000,
-0x00d22081, 0x073400d1, 0x64500110, 0x44059d04, 0xc004100b, 0x03811876,
-0x1dd00244, 0xd142d050, 0x10082c00, 0x00084009, 0x00c5003b, 0x04400310,
-0x00000802, 0x00000000, 0x0024a001, 0x027440d1, 0x64400190, 0x54819900,
-0x5009102a, 0x90194234, 0x0dd04344, 0xc1008460, 0x50084400, 0x0024404d,
-0x030400c5, 0x04400c10, 0x00000200, 0x00000000, 0x00202010, 0x033400c1,
-0x20400810, 0x44009d00, 0x40091402, 0x00010030, 0x0cd00304, 0xc1000040,
-0x10022400, 0x0004500c, 0x0004000d, 0x40400014, 0x00000080, 0x00000000,
-0x0036a000, 0x037400d3, 0x04c005b0, 0x5d009b00, 0x40013001, 0x00930034,
-0x0dd0014d, 0xf30004c0, 0x70804c00, 0x1024c009, 0x034c00d7, 0x00d00d30,
-0x00000ac0, 0x00000000, 0xc03ba805, 0x81fe00ff, 0x0fc006f0, 0xfc003f08,
-0xc003f081, 0x003f403f, 0x0ff003fc, 0xff000fc0, 0xf000fc00, 0x000bc00b,
-0x00fc003b, 0x17c003f1, 0x00000e60, 0x00000000, 0x401fa003, 0x008c003b,
-0x2cd00bb0, 0xfc00f300, 0xc00f1103, 0x80f7003c, 0x0f3093fc, 0x33309cc0,
-0x3000cc48, 0x1038d02b, 0x03e4c8f3, 0x0cc40ff2, 0x00000e00, 0x00000000,
-0x08170801, 0x034640d1, 0x2c440911, 0x7402c140, 0x440d1000, 0x00d0103c,
-0x8f512bf0, 0xc1001050, 0x50432c04, 0x40b44024, 0x03440a81, 0x04420fd0,
-0x00000c20, 0x00000000, 0x0013a011, 0x00240009, 0x20420cd2, 0x7402c140,
-0x480c1203, 0x40c12030, 0x0c100330, 0x01011040, 0x10002400, 0x60b540c4,
-0x03040481, 0x44400cd0, 0x00000e80, 0x00000000, 0x0415a803, 0x036420d1,
-0x64500d90, 0x7000d100, 0x40181042, 0x00d12834, 0x0d500374, 0xd1001440,
-0x50036400, 0x44754005, 0x03440081, 0x0c400dd0, 0x00000620, 0x00000000,
-0x009aa802, 0x80e1003b, 0x64c809f0, 0x3800d340, 0xd03d300f, 0x21d72034,
-0x0d30037c, 0x13403484, 0x30006c00, 0x20f5c01d, 0x036d0093, 0x00d00de0,
-0x00000e20, 0x00000000, 0x401d8007, 0x03df00ef, 0x3bc08b70, 0xfc80ff00,
-0xc00ff411, 0x89ff103b, 0x0ef2037c, 0xff003fc4, 0xf003fc00, 0x003ec857,
-0x03fd00ff, 0x1fc00ff0, 0x0000060a, 0x00000000, 0x00950802, 0x006c0013,
-0xa4404d21, 0x4c00d704, 0xc005300b, 0x48d30034, 0x0d72234c, 0x074033c8,
-0x70001c00, 0x2234c015, 0x034d00d3, 0x09c00c10, 0x00000420, 0x00000000,
-0x0114a013, 0x0b4c00d1, 0xf4402d10, 0x4400f104, 0x40a5106b, 0x0ad106bc,
-0x0f102bc4, 0xd1003740, 0x10834420, 0x00704014, 0x03c400db, 0x4c400f10,
-0x00000200, 0x00000000, 0x00728007, 0x48540001, 0x60408d14, 0x1440c540,
-0x480c1007, 0x01c14870, 0x0c500744, 0x05001348, 0x50001400, 0x08724804,
-0x030400c1, 0x1d400c54, 0x00000a00, 0x00000000, 0x00708004, 0x87b401e1,
-0x78409e11, 0xd401e100, 0x431f1007, 0x05e01070, 0x1e102784, 0xe1025b40,
-0x1007860d, 0x00ca4016, 0x278401a9, 0x18401e50, 0x00000200, 0x00000000,
-0x00301012, 0x001c0003, 0xa4c88d30, 0x1c00c740, 0xc00c3603, 0x00d20030,
-0x0c50030d, 0x070013c0, 0x70001c04, 0x4022c064, 0x034c0083, 0x49c00d70,
-0x00000040, 0x00000000, 0x023db802, 0x03cd80ef, 0x3fd08ff0, 0xad00ff02,
-0x000ef023, 0x24ff003f, 0x0ff083fc, 0xfe281f40, 0xf023fc04, 0x001dd007,
-0xc3fc00bf, 0x0bc00fb0, 0x00000648, 0x00000000, 0x0037a015, 0x044c0013,
-0x22c00d30, 0x4c00d304, 0xc20d3003, 0x409323b4, 0x0db0134c, 0x130037e1,
-0x34004c00, 0x0024c005, 0x834c009f, 0x57c12db6, 0x00000e00, 0x00000000,
-0x00318832, 0x03c500c1, 0x38500e12, 0x8401e100, 0x520e1083, 0x00e1253c,
-0x2e135304, 0xe10033c0, 0x10030400, 0x00285006, 0x03c400ed, 0x4b402e10,
-0x00000620, 0x00000000, 0x08790203, 0x04840121, 0x4e401c11, 0xa409e100,
-0x501c9007, 0x01e14178, 0x1e9027a4, 0x29087b40, 0x90048421, 0x00784116,
-0x178401cd, 0x0f405e10, 0x00000402, 0x00000000, 0x00372812, 0x032400c1,
-0xb2500c16, 0x2520c100, 0x409c9007, 0x09c10030, 0x0c100324, 0xc9403540,
-0x90834400, 0x00304414, 0x030500dd, 0x4b480c90, 0x00000c20, 0x00000000,
-0x4015a817, 0x014c0043, 0x5ec00510, 0xec805353, 0xc027b585, 0x00510014,
-0x05b00165, 0x5b009740, 0x98014d00, 0x221cc017, 0x0144415f, 0x5fc005b0,
-0x00000620, 0x00000000, 0x00870012, 0x80dc203f, 0x05c021f0, 0x5c001f00,
-0xc5017020, 0x001f0007, 0x0070005c, 0x270407c0, 0x7a00fc40, 0x0007c021,
-0x007c081f, 0x4bc00170, 0x00000c00, 0x00000000, 0x00270810, 0x024c0093,
-0x24d888f0, 0x4c009340, 0xc0093002, 0x00930024, 0x0930024c, 0x930024c0,
-0x73024c00, 0x0164d009, 0x020c009f, 0x43c00930, 0x00000c20, 0x00000000,
-0x40262001, 0x8a448091, 0x244239d0, 0x44029b00, 0x5809b402, 0x00934024,
-0x0915024d, 0x9b002440, 0x10026c40, 0x10244429, 0x0244009d, 0x07400910,
-0x00000800, 0x00000000, 0x00648018, 0x1ac600b1, 0x205009d2, 0x04308140,
-0x400c1202, 0x00890820, 0x09100204, 0xb1102660, 0x5902c400, 0x20244018,
-0x0244009d, 0x63400914, 0x00000080, 0x00000000, 0x02202010, 0x228400a1,
-0x205888d0, 0x06188902, 0x40881022, 0x08890320, 0xc8182204, 0xa9002460,
-0x180aa408, 0x1220400c, 0x2205108d, 0x43402810, 0x00000080, 0x00000000,
-0x0596b01d, 0x58cd1411, 0x945165d2, 0x0c020305, 0x41611008, 0x020b4184,
-0x3132484c, 0x030706e8, 0x7850cc14, 0x241448e0, 0x084e001f, 0x77c00130,
-0x00000a40, 0x00000000, 0x0127b819, 0x127c009f, 0x2fc84bf8, 0xfd049f41,
-0xc04bf012, 0x04b781a7, 0xc9f0927e, 0x9f0127f0, 0xf0127c24, 0x002fc0cf,
-0x1a7e30bf, 0x67c029f0, 0x00000e60, 0x00000000, 0x016f8018, 0x16cc01b3,
-0x2cc14bb0, 0x6c069302, 0xc0c9f00a, 0x088b8324, 0x29300a7c, 0x9300a4c0,
-0x30226800, 0x003cc00b, 0x0a4c00b3, 0x67c029f0, 0x00000e00, 0x00000000,
-0x0307081c, 0x00448013, 0x14444190, 0x440f1103, 0x40351014, 0x011392c4,
-0xa01104f4, 0x11000440, 0x50004404, 0x01044041, 0x1c440411, 0x734060d0,
-0x00000c22, 0x00000000, 0x0523a010, 0x4b050281, 0x20414810, 0x84008101,
-0x40ca5102, 0x04a10128, 0x48101ab4, 0x81002050, 0x10122410, 0x44a04128,
-0x0a051281, 0x434068d0, 0x00000e80, 0x00000000, 0x00258818, 0x02448099,
-0x24504910, 0xc5009100, 0x404b1042, 0x00b9202c, 0x081082f0, 0x91002442,
-0x50024460, 0x0924520c, 0x02442091, 0x634009d0, 0x00000620, 0x00000000,
-0x0023a805, 0x024c8093, 0x24c019b4, 0x6c009340, 0xc829f002, 0x21914024,
-0x0934027c, 0x934024c8, 0x30026c00, 0x2024c089, 0x024d0193, 0x17c009f0,
-0x00000e20, 0x00000000, 0x44258014, 0x027c0087, 0x23c009f6, 0x7c008f40,
-0xd008f002, 0x05970027, 0x09f0023c, 0x9f0027c0, 0xf4023c00, 0x0463c019,
-0x027c049f, 0x53c009f0, 0x00000600, 0x00000000, 0x08050814, 0x040c001e,
-0x05d1813a, 0xfc001300, 0xd023f008, 0x0033000c, 0x013000cc, 0x170000c0,
-0x30004c00, 0x2004cd01, 0x004d0013, 0x50c00130, 0x00000420, 0x00000000,
-0x049c8014, 0x01ec005d, 0xdc402738, 0x5c005b04, 0x4005d001, 0x00530814,
-0x05100144, 0x51001440, 0xb0016c00, 0x005c4137, 0x01440051, 0x50400510,
-0x00000200, 0x00000000, 0x00f28014, 0x8004c8cd, 0x3140319a, 0x7600c141,
-0x400cd003, 0x00c14034, 0x0c1c8314, 0xd5003060, 0x10030500, 0x4270403c,
-0x030409d1, 0x50400c94, 0x00000a00, 0x00000000, 0x00388005, 0x022600ed,
-0x38440810, 0x9600e900, 0x4002d000, 0x01390000, 0x4e180094, 0xe1003840,
-0x90132404, 0x0030400c, 0x078400c1, 0x14405e90, 0x00000200, 0x00000000,
-0x00581015, 0x078c81ef, 0x71d01a94, 0xbc016300, 0x401ff007, 0x01e12078,
-0x5e30071d, 0xc70bfcd1, 0x30478c05, 0x0078c812, 0x07cc01e3, 0x54d05eb0,
-0x00000040, 0x00000000, 0x2015b810, 0x037c40cf, 0x37c00bf0, 0x7c005f00,
-0xd001f000, 0x00170007, 0xedf0006c, 0xdf01b740, 0xf0337c02, 0x0037d001,
-0x037c10df, 0x43c8ad70, 0x00000660, 0x00000000, 0x004fa000, 0x26fc09b3,
-0x7cc01bb0, 0xcc01fb00, 0xc01f3007, 0x01fb007c, 0x1f3007fc, 0xf3007cd0,
-0x3007cc13, 0x087cc01b, 0x07cd01b3, 0x08c03ff0, 0x00000e00, 0x00000000,
-0x020d8815, 0x32b40ca1, 0x28402a12, 0xc400e102, 0x40821400, 0x4020400c,
-0x0f1000b4, 0xf1003c40, 0x50438400, 0x0038400e, 0x039400a1, 0x54400ed0,
-0x00000620, 0x00000000, 0x00090000, 0x829400a5, 0x30400a90, 0x84006940,
-0x400e1003, 0x10e10038, 0x0e9003b4, 0xe1423a40, 0x90230400, 0x0438508a,
-0x038401a1, 0x00400ed0, 0x00000400, 0x00000000, 0x08072804, 0x06340a81,
-0xa4500812, 0x05204102, 0x40001004, 0x00110000, 0x0c900074, 0xc1003240,
-0xd213040b, 0x00f44018, 0x03550891, 0x18400cd0, 0x00000c20, 0x00000000,
-0x4035a815, 0x4e7c0097, 0xf4c00db0, 0x4c20db40, 0x500d3047, 0x01d30034,
-0x0fb40374, 0xf3003ec0, 0xb00fcd02, 0x40749055, 0x03cc0093, 0x54d00ff0,
-0x00000620, 0x00000000, 0x00370001, 0x127c108f, 0x37c02df0, 0x7c00df00,
-0xc081f010, 0x001f0007, 0x0d72807c, 0xdf0031c0, 0x70037c04, 0x01b7c265,
-0x037c009f, 0xa7c00df1, 0x00000c00, 0x00000000, 0x011f0880, 0x038c05b3,
-0x1c800930, 0xcc004346, 0xd00c3003, 0x00f3803c, 0x0f3003cc, 0xe3003cc0,
-0x32038c00, 0x0034c008, 0x03cc08b3, 0x07c00d30, 0x00000c20, 0x00000000,
-0x10462081, 0x03440091, 0xf4403810, 0xc4007100, 0x40031000, 0x0031000c,
-0x0d1500c5, 0xdb003440, 0xb2036c00, 0x00f44029, 0x83ec0091, 0x07400d14,
-0x00000802, 0x00000000, 0x4004a001, 0x02440091, 0xb7401d10, 0x0400d100,
-0x420d1203, 0x00d10030, 0x0c100344, 0xd1003444, 0x10034400, 0x04765009,
-0x034400d1, 0x07400d10, 0x00000200, 0x00000000, 0x00002010, 0x06050081,
-0x33500810, 0x0400c110, 0x40000200, 0x00012000, 0x0c180006, 0xc9003040,
-0x98032500, 0x4012400c, 0x032500c1, 0x43400c10, 0x00000080, 0x00000000,
-0x0006b000, 0x024c2093, 0x37c00934, 0x4c005340, 0x480d1403, 0x40d14034,
-0x0f30030e, 0xf3403c48, 0x3003cc00, 0x1036d009, 0x034d00e3, 0x07c00f30,
-0x00000ac0, 0x00000000, 0x000fb805, 0x02bc00bf, 0x3cc00bf0, 0xfce07f00,
-0xe203f200, 0x003f000f, 0x0ff000fc, 0xff003fc0, 0xd003fc80, 0x002dc00b,
-0x03fc00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x000f8003, 0x0bcc20b3,
-0x3cc40fb4, 0xec00f300, 0xc00f7081, 0x04b3412d, 0x0331538c, 0x37100fc0,
-0x30218c00, 0x010fc14e, 0x00fc00a3, 0x0cc00bf0, 0x00000e00, 0x00000000,
-0x00071801, 0x2b441019, 0xb4496d30, 0x4402d020, 0x440d1203, 0x0a9b00a4,
-0x09500bc4, 0x91251740, 0x100b6430, 0x0007402d, 0x00740091, 0x06c009d0,
-0x00000c20, 0x00000000, 0x0013a011, 0x13240409, 0xb2488c10, 0x2442c100,
-0x440cd001, 0x01810221, 0x08910374, 0x41016346, 0x54226420, 0x0203400c,
-0x02340981, 0x444008d0, 0x00000e80, 0x00000000, 0x0115a007, 0x01640019,
-0x36400914, 0x54005104, 0x401d9007, 0x01590225, 0x29d00374, 0xd1407740,
-0x50076480, 0x0087400d, 0x037401d1, 0x0c4009d0, 0x00000620, 0x00000000,
-0x01538882, 0x476c0193, 0xb6d03d32, 0x2c01d340, 0xc02cf01d, 0x01934025,
-0x25b0037c, 0xd72037c0, 0x70070d02, 0x80c7800d, 0x247c2193, 0x084009f0,
-0x00000e20, 0x00000000, 0x245d8007, 0x0f5c0237, 0x59c09ff1, 0x4c09ff01,
-0xc00f7003, 0x000f006e, 0x8f7003cc, 0xef003fc4, 0xb003dd04, 0x214b880f,
-0x00fc00bf, 0x1fd00bf0, 0x00000600, 0x00000000, 0x00950802, 0x033c881f,
-0xb4d024b2, 0x4c018b00, 0xc01d3029, 0x059f8024, 0x2db0034c, 0xd32437c0,
-0x34034d00, 0x0284c10d, 0x034c081f, 0x08c009f0, 0x00000420, 0x00000000,
-0x0834a013, 0x0174421d, 0x56d11110, 0x68009104, 0x40ad1003, 0x02dd0024,
-0x2d502bc0, 0xd1403740, 0xb43f4402, 0x0056c04f, 0x174480dd, 0x4ec00dd0,
-0x00000200, 0x00000000, 0x80122003, 0x0334139d, 0x70401c18, 0x0400c920,
-0x04041000, 0x42cd24a4, 0x2c500750, 0xc10a3745, 0x80852410, 0x8001423c,
-0x8024908d, 0x1c4009d0, 0x00000a00, 0x00000000, 0x085a0804, 0x06b4016d,
-0x6a42dc18, 0xa42bc100, 0x40971024, 0x01ad0268, 0x16506794, 0x410a7b62,
-0x9437e009, 0x006b401e, 0x04a441ad, 0x12401ad0, 0x00000200, 0x00000000,
-0x00121012, 0x033c000f, 0x34d06c34, 0x0c08cb00, 0xc08c3020, 0x00cd1230,
-0x8cf00315, 0xc3023780, 0xb0332502, 0x0011c04c, 0x932c208f, 0x48c009f0,
-0x00000040, 0x00000000, 0x001da802, 0x02fc007f, 0x2fc04f72, 0x7c887f02,
-0xc08ef822, 0x00ff223f, 0x0ff04b6c, 0x7f023fc0, 0xf033dc20, 0x003ec10f,
-0x03dc00ff, 0x0bc08bf0, 0x00000660, 0x00000000, 0x0013a014, 0x037c8493,
-0x34c01df1, 0x0c04d300, 0xc00d7101, 0x00d30024, 0x0934030d, 0x934007c0,
-0x33034c12, 0x2024c81c, 0x484c009f, 0x54c019f2, 0x00000e00, 0x00000000,
-0x00399912, 0x839c4863, 0x30c20ef1, 0x9410e520, 0xc40a1403, 0x0021102e,
-0x02309384, 0xa1001b40, 0x12038500, 0x0028404e, 0x00ad00ad, 0x49400b70,
-0x00000620, 0x00000000, 0x40d90000, 0x07b40125, 0x79441cd0, 0xc621c100,
-0x601f5105, 0x01c50078, 0x1a1017c4, 0xe1006340, 0x1007c403, 0x0078401e,
-0x078403cd, 0x0c401ad0, 0x00000400, 0x00000000, 0x00332016, 0xa7140105,
-0xb0404c51, 0x1686c502, 0x78081013, 0x04c50032, 0x88100304, 0xd1003340,
-0x123b0422, 0x1230400c, 0x030400cd, 0x49400c50, 0x00000c20, 0x00000000,
-0x009ba817, 0x017c0057, 0x55d025d0, 0xcd075340, 0xd0267009, 0x00776014,
-0x0530018c, 0x532017c2, 0x348dcc01, 0x009cd005, 0x8144036f, 0x5cd055f0,
-0x00000620, 0x00000000, 0x00c58012, 0x001c0813, 0x05c001f1, 0x7c000f21,
-0xc011f100, 0x001b0007, 0x0170007c, 0x1f00c380, 0xf4007c10, 0x0047c001,
-0x007c101f, 0x4bc00170, 0x00000c00, 0x00000000, 0x40650810, 0x024d00d3,
-0x63c00930, 0x4c089300, 0xc0093602, 0x08830060, 0x09300244, 0x930024c0,
-0x30024c09, 0x00a7c089, 0x034c009f, 0x43c00932, 0x00000c20, 0x00000000,
-0x01262001, 0x02440081, 0x67400914, 0x04019108, 0x40291002, 0x40910ae4,
-0x08500244, 0x9100e440, 0x140a4512, 0x00e74209, 0x0a040e9d, 0x07400910,
-0x00000800, 0x00000000, 0x0124a01c, 0x02440091, 0x2f480b10, 0x4400b102,
-0x581d1002, 0x009100a4, 0x29100654, 0xb1012c50, 0x10020400, 0x0c274809,
-0x0a45809d, 0x63400910, 0x00000200, 0x00000000, 0x20202814, 0x52840080,
-0x2b414a10, 0x0415a145, 0x40191053, 0x15814520, 0x89502615, 0xa1422840,
-0x10220408, 0x00234018, 0x0204008d, 0x43408814, 0x00000080, 0x00000000,
-0x0006b01d, 0x104c0012, 0x07c04130, 0x4d043301, 0xc0013010, 0x04130104,
-0x6130585c, 0x230594c5, 0x34594c16, 0x0507c541, 0x004c141f, 0x77c02130,
-0x00000ac0, 0x00000000, 0x002fa919, 0x5374149d, 0x27c149d0, 0xfc409f05,
-0xc00ef003, 0x00bf052f, 0x4bf0126c, 0x9f0127c8, 0xf012bd84, 0x002fc009,
-0x027c80bd, 0x67c06bf2, 0x00000e60, 0x00000000, 0x002f8018, 0x8a4c22a3,
-0x2dc06b70, 0xcc04b303, 0xc00f3013, 0x00b700ac, 0x29300acc, 0x930137c0,
-0x50124c84, 0x012cc04a, 0x03fc04bf, 0x60c669f0, 0x00000e00, 0x00000000,
-0x1007181c, 0x18460411, 0x044021b1, 0x54221121, 0xc0013108, 0x02114186,
-0x25100c6c, 0x014d8340, 0xb100c400, 0x00044001, 0x0074001d, 0x704041d0,
-0x00000c20, 0x00000000, 0x00250012, 0x1a240499, 0xa340c8d0, 0x24028100,
-0x40099022, 0x028108a0, 0x68140a44, 0xa1022b40, 0x515aa416, 0x08a24228,
-0x0634228d, 0x404028d0, 0x00000e80, 0x00000000, 0x00e50018, 0x02640499,
-0x26482951, 0x74029100, 0x50091402, 0x03910026, 0x09100064, 0xa100b740,
-0x1613e500, 0x00665c09, 0x067000dd, 0x604019d2, 0x00000620, 0x00000000,
-0x00e78805, 0x0a65129b, 0x274839d0, 0x6c429340, 0xc829a10a, 0x01974024,
-0x2930004c, 0x930027c0, 0x50126c01, 0x0066c009, 0x0e78069f, 0x14c009f0,
-0x00000e20, 0x00000000, 0x40258012, 0x025c2097, 0x21c059a0, 0x1c189f00,
-0xc2097002, 0x008f0127, 0x0df0007c, 0x9f0827c0, 0xf0021c04, 0x0025c008,
-0x027c499f, 0x53d009f0, 0x00000600, 0x00000000, 0x02450810, 0x084c021f,
-0x04d021b2, 0x4c020310, 0xc2113000, 0x00130004, 0x2130107c, 0x130004d0,
-0x31284c80, 0x0204c801, 0x204c0b13, 0x50d001f0, 0x00000420, 0x00000000,
-0x0898a014, 0x0144056d, 0x16d01550, 0xec907b00, 0x40261045, 0x0a71011c,
-0x855404b4, 0x51601440, 0x10854523, 0x005c4087, 0x05c40371, 0x505005d0,
-0x00000200, 0x00000000, 0x0072a014, 0x0346514d, 0x32421d98, 0x3401c100,
-0x400c5005, 0x0ac12134, 0x0c100734, 0xc1003540, 0x10032491, 0x00304228,
-0x971500c1, 0x50400dd0, 0x00000a00, 0x00000000, 0x80388801, 0x138600ad,
-0x2a41085c, 0x3600e910, 0x50075001, 0x00e10010, 0x1e5053b4, 0x61403940,
-0x1101a402, 0x107c4006, 0x029401c1, 0x14404ed0, 0x00000200, 0x00000000,
-0x00781011, 0x0fcd016e, 0x72d01eb2, 0xbc014300, 0xc8167005, 0x01a34068,
-0x1c30373c, 0xe30049c0, 0x2407ec01, 0x0878d016, 0x079c01a3, 0x54c03ff0,
-0x00000040, 0x00000000, 0x0035a810, 0x077c009f, 0x37c009d0, 0x6c00df20,
-0xc004b401, 0x009f2007, 0x2df0037c, 0xdf0036c0, 0xf0135c00, 0x4023c005,
-0x026c005f, 0x43c00df0, 0x00000660, 0x00000000, 0x005d2000, 0x07fc01bf,
-0x7cc01b30, 0x8c21e300, 0xc0167005, 0x0973004c, 0x3f30478c, 0xf3007cc0,
-0x302fbc01, 0x007bc013, 0x07fc01f3, 0x00c01ff0, 0x00000e00, 0x00000000,
-0x02391815, 0x03b400ed, 0x28c00b10, 0x8406e502, 0x08061000, 0x00230008,
-0x2e100394, 0xe1023840, 0x1131a400, 0x02bb4006, 0x4bb418e1, 0x54408ed0,
-0x00000620, 0x00000000, 0x00b90000, 0x233400ad, 0x38400a54, 0xc440e100,
-0x41075001, 0x10290008, 0x8c1003c4, 0xe1000840, 0x58c3f400, 0x003f4006,
-0x03b400e9, 0x00400ed0, 0x00000400, 0x00000000, 0x20312004, 0x2f3407dd,
-0xb0400850, 0x0410c500, 0x40141118, 0x03410000, 0x0c100314, 0xd1003042,
-0x500f6402, 0x46334004, 0x07340149, 0x10400dd0, 0x00000c20, 0x00000000,
-0x00b5a815, 0x0ffc03df, 0xf4d01d74, 0x0c02d300, 0xc01c700a, 0x08db4034,
-0x2d34034c, 0x935174d0, 0x70867c02, 0x00b7c009, 0x033c005b, 0x54d05ff0,
-0x00000620, 0x00000000, 0x00370001, 0x437c0adf, 0x27c08ca0, 0x7c02df06,
-0xd005f20a, 0x00df0017, 0x6df0037c, 0x1f00b3c0, 0xb00b7c00, 0x0037c005,
-0x027c0257, 0x07c40df0, 0x00000c00, 0x00000000, 0x003f0884, 0x038c00ff,
-0x20c05f30, 0xcc05b302, 0xc81f3004, 0x01d34014, 0x0f302788, 0xf30034c0,
-0x3042cc10, 0x001cc006, 0x07fc1033, 0x00c00d30, 0x00000c22, 0x00000000,
-0x01360085, 0x034507dd, 0x26c00d10, 0x4400cb08, 0x4071b040, 0x0b410250,
-0x2d508f54, 0xd102b6c0, 0x122f4409, 0x00804e05, 0x0a740251, 0x06c00d12,
-0x00000802, 0x00000000, 0x82348001, 0x034601dd, 0x34480914, 0x4400d100,
-0x404d1113, 0x42510404, 0x0c100b54, 0xd1003440, 0x11034400, 0xe0344001,
-0x217420d1, 0x04400d10, 0x00000200, 0x00000000, 0x00302810, 0x030620cd,
-0x22400c12, 0x0400c908, 0x40049002, 0x80410000, 0x0c500314, 0xc1403242,
-0x10030400, 0x00304004, 0x007420c1, 0x42400c10, 0x00000080, 0x00000000,
-0x0026b000, 0x034c00dd, 0x24c00930, 0x4400d300, 0xc00d3001, 0x00530004,
-0x0d30035c, 0xd30034c0, 0x34034500, 0x0014c405, 0x037c00d3, 0x00d00d34,
-0x00000ac0, 0x00000000, 0x002fa805, 0x03f000ff, 0x2fc00ff4, 0xfc00ff00,
-0xd003e100, 0x007f000f, 0x07d003fc, 0xff003fc0, 0xf003fd00, 0x001fd007,
-0x02fc007f, 0x17c00ff0, 0x00000e60, 0x00000000, 0x492fa003, 0x02cd0033,
-0x3cc00730, 0xcc203301, 0xc00ff000, 0x003f023c, 0x07f001fc, 0x3f000cc0,
-0xf020ec00, 0x000ec083, 0x0bcc02f3, 0x0fc04730, 0x00000e08, 0x00000000,
-0x02270801, 0x02840a91, 0xb4480512, 0x44281500, 0x400fd000, 0x001140b0,
-0x05d20174, 0xdd203549, 0xd0034480, 0x1034444d, 0x03d400f5, 0x07402550,
-0x00000c20, 0x00000000, 0x0023a011, 0x022494c1, 0xb0400011, 0x24000100,
-0x4008c100, 0x80cd01b0, 0x44d08134, 0x0d000000, 0xd0102400, 0x00024000,
-0x932484c1, 0x47408410, 0x00000e80, 0x00000000, 0x0025a803, 0x226440d1,
-0x34400114, 0x44041500, 0x5249d010, 0x40516434, 0x05d00174, 0xd9003502,
-0xd0034400, 0x0034600d, 0x037400d5, 0x1f408550, 0x00000620, 0x00000000,
-0x0067a802, 0x036c0053, 0x34d12534, 0x6d009300, 0xc80cf001, 0x121f40b4,
-0x27f0017c, 0x3f000c40, 0xd000ec00, 0x200ec003, 0x036c00d3, 0x0bc01538,
-0x00000e20, 0x00000000, 0x00a58007, 0x039c80ef, 0x37c00ef0, 0xfc813f20,
-0xc01df005, 0x053f013f, 0x07f021fc, 0xef003fc8, 0xf203fc00, 0x8037c80e,
-0x035c00ff, 0x0fc017f0, 0x00000600, 0x00000000, 0x00350802, 0x027c00d3,
-0x35800132, 0x4c009309, 0xd009b200, 0x025742b4, 0x35b0a14c, 0x130004d0,
-0x70005404, 0x4007c001, 0x034c00d3, 0x08d00534, 0x00000420, 0x00000000,
-0x4034a013, 0x1b7400d1, 0x78451d10, 0x45018104, 0x4029d80d, 0x2b5142f4,
-0x05110144, 0xdb003440, 0x10834483, 0x0073400d, 0x03cd00f1, 0x4c400110,
-0x00000200, 0x00000000, 0x0036a007, 0x1e340001, 0xf1432410, 0x14090108,
-0x4138d21c, 0x00454014, 0x0d900305, 0x01000140, 0x5800140a, 0x20034000,
-0x036480d1, 0x1c400410, 0x00000a00, 0x00000000, 0x02788004, 0x26b401a1,
-0x78405614, 0x84090160, 0x411ad044, 0x11712058, 0x9c1005c4, 0xc9007840,
-0x1007040d, 0x047b401e, 0x078429e1, 0x90401610, 0x00000200, 0x00000000,
-0x00301012, 0x023c08c3, 0x31c00030, 0x1c000308, 0xc80cd228, 0x08474020,
-0x2cb0010c, 0x03100540, 0x70101c04, 0x1003c800, 0x032c00d3, 0x48c00531,
-0x00000040, 0x00000000, 0x003db802, 0x02f400ff, 0x3fc24af0, 0xfc003f10,
-0xc08ff000, 0x006d403f, 0x0ff000b4, 0xff003ec4, 0xd003f804, 0x003f400f,
-0x03fc10ff, 0x0bc003f2, 0x00000660, 0x00000000, 0x0037a015, 0x127c0057,
-0x34ca04b0, 0x4c00d300, 0xc069f018, 0x80530034, 0x0df0817c, 0x134846c0,
-0x30004401, 0x4046c001, 0x374c14d3, 0x47c00fb2, 0x00000e00, 0x00000000,
-0x003d8812, 0x433400e1, 0x78440e14, 0x84006501, 0x0508d021, 0x80610038,
-0x0fd001b4, 0xf1003940, 0x10039400, 0x0030420f, 0x239400f1, 0x4b400e10,
-0x00000620, 0x00000000, 0x00790003, 0x0eb401e5, 0x78401390, 0x8601f102,
-0x081ed005, 0x01690062, 0x1ed005b4, 0x21804040, 0x11842401, 0x004a4012,
-0x178405e9, 0x0f421e90, 0x00000400, 0x00000000, 0x00372812, 0x833000d1,
-0x30448c10, 0x0400c500, 0x400cd007, 0x02490136, 0x0cd00834, 0xc1003060,
-0x18037640, 0x0030400c, 0x031600c9, 0x4b400c90, 0x00000c20, 0x00000000,
-0x0055a817, 0x017c1175, 0x145027b0, 0x4c407300, 0xd005f01d, 0x007b401e,
-0x05f029fc, 0x532014c2, 0x35816c00, 0x0016c005, 0x014c005b, 0x5fc077b0,
-0x00000620, 0x00000000, 0x02070012, 0x087c001f, 0x07c101f6, 0x7d011f20,
-0xc001f240, 0x00175805, 0x00f0007c, 0x3f000dd0, 0xf000dd40, 0x200fc802,
-0x007c0007, 0x4be01170, 0x00000c00, 0x00000000, 0x00270830, 0x024c0197,
-0x20800834, 0x4f009300, 0xe008f017, 0x12930024, 0x0930024c, 0x9f0024c0,
-0x70027c40, 0x0026c009, 0x024c009f, 0x41c008f0, 0x00000c20, 0x00000000,
-0x00262001, 0x0a440291, 0x24400912, 0x44028100, 0x4009d006, 0x02814224,
-0x09340604, 0x9d0024c0, 0x30025c02, 0x00244009, 0x0244009d, 0x044009d0,
-0x00000800, 0x00000000, 0x00242018, 0x0a040a95, 0x25400910, 0x44819100,
-0x4829d042, 0x00910024, 0x19100745, 0xbd002c50, 0x5202d410, 0x002c400b,
-0x0245009d, 0x61400dd0, 0x00000200, 0x00000000, 0x02202010, 0x22040881,
-0x21500810, 0x04008108, 0x4048d002, 0x0081c230, 0x88110204, 0xad202860,
-0x10229408, 0x0028502a, 0x9204048d, 0x404008d8, 0x00000080, 0x00000000,
-0x0586901d, 0x584d5617, 0x05c14130, 0x44105101, 0x5051f000, 0x94514504,
-0x6131004c, 0x1f3504c1, 0x70505c56, 0x050cc141, 0x2c0c0b1f, 0x75c1e1f0,
-0x00000ac0, 0x00000000, 0x812fb819, 0x12f404bf, 0x22c00bf2, 0x7c00af42,
-0xc08bf042, 0x00be012f, 0x49f002fc, 0x9f0425c0, 0x70125c04, 0x0027c249,
-0x267c099f, 0x67c40bf0, 0x00000e60, 0x00000000, 0x01a7a018, 0x1acc02b7,
-0x26c10830, 0x7c10f301, 0xc04bf002, 0x00b7042c, 0x5bf002cc, 0xb304e4c1,
-0x30264c19, 0x016c0419, 0x42441493, 0x63c04930, 0x00000e00, 0x00000000,
-0x0187081c, 0x18440611, 0x0c400118, 0x74021100, 0x4021d050, 0x00110584,
-0x01d10044, 0x11018440, 0x10004402, 0x080442c1, 0x08440611, 0x73414110,
-0x00000c20, 0x00000000, 0x00a3a010, 0x0b240285, 0xaa400b10, 0x34008100,
-0x4088d002, 0x0185c060, 0x48d00604, 0x81092049, 0x141a0404, 0x42204108,
-0x52051081, 0x43402814, 0x00000e80, 0x00000000, 0x0125a818, 0x86640091,
-0x2c484910, 0x74009148, 0x408dd00a, 0x60912064, 0x09d00345, 0x91402400,
-0x10824400, 0x08244209, 0x0264a081, 0x63401910, 0x00000620, 0x00000000,
-0x00678805, 0x026c0797, 0x26806914, 0x74109300, 0xd019f006, 0x02974024,
-0x09f10a44, 0x930024d0, 0x30024c00, 0x2024c009, 0x024c2093, 0x17c00930,
-0x00000e20, 0x00000000, 0x00658014, 0x025d049f, 0x22c009f6, 0x7c009f00,
-0xc118f00b, 0x098f0023, 0x09f00a7c, 0x8f0023c0, 0xf1023d00, 0x1023d008,
-0x025c009f, 0x53c009f0, 0x00000600, 0x00000000, 0x00050814, 0x047c0407,
-0x0c400330, 0x7c2a1310, 0xd0013000, 0x00132004, 0x01f0a47c, 0x112004c2,
-0xf0006d00, 0x1007c001, 0x004c001f, 0x53c00130, 0x00000420, 0x00000000,
-0x0014a014, 0x01f40371, 0x16c00410, 0x74097100, 0x4507102d, 0x0971001c,
-0x05d109dc, 0x71001452, 0xd0016d11, 0x00574005, 0x0144005d, 0x53400510,
-0x00000200, 0x00000000, 0x8036a014, 0x037400c5, 0x31400c10, 0x3442c120,
-0x400c1824, 0x41c904a0, 0x0dd80334, 0xc1403140, 0xd0032406, 0x0073600c,
-0x034400cd, 0x53400c10, 0x00000a00, 0x00000000, 0x02388005, 0x03b482e1,
-0x03480214, 0xf480a100, 0x400a1006, 0x1029401c, 0x0ad00394, 0xe9103940,
-0xd003a440, 0x043b40ce, 0x13044ced, 0x17408e10, 0x00000200, 0x00000000,
-0x007c1015, 0x073c81e7, 0x79421e30, 0xbc016308, 0x40143407, 0x012b1858,
-0x1bf006bc, 0xf301f1c4, 0xf007ac01, 0x007bc05e, 0x178d05cf, 0x57c05e34,
-0x00000040, 0x00000000, 0x0035b810, 0x037c00dd, 0x06c201f0, 0x3c405f40,
-0xd001f003, 0x00170033, 0x0df1037c, 0xd70036d0, 0xf1277d00, 0x0037c00d,
-0x2b7c16df, 0x43c00df0, 0x00000660, 0x00000000, 0x007fa000, 0x07cd01f3,
-0x7cc2df32, 0xfc013300, 0xc012f00e, 0x01330869, 0x1ff005fc, 0xfd107cc0,
-0x1007e809, 0x007f849f, 0x0fcc01f3, 0x02c01f20, 0x00000e00, 0x00000000,
-0xa03d8815, 0x03c40aeb, 0x08418214, 0xb4002100, 0x4002d013, 0x02212038,
-0x4bd001a0, 0xfd013848, 0x1003c41c, 0x002a418e, 0x038400e1, 0x44400e10,
-0x00000620, 0x00000000, 0x40390000, 0x23840021, 0x38044e10, 0xb4002102,
-0x4002d843, 0x0029023c, 0x0ad061b4, 0xe9303a60, 0x90038400, 0x0033408e,
-0x032500e1, 0x02400e10, 0x00000400, 0x00000000, 0x00332804, 0x05000401,
-0x01403010, 0x34020100, 0x4000d003, 0x00094030, 0x0dd00134, 0xcd00b242,
-0x942b0402, 0x0322402c, 0x032400c1, 0x10400c10, 0x00000c20, 0x00000000,
-0x003da815, 0x474802d1, 0x34900d30, 0x7c02d300, 0xd00cf006, 0x0a1b0034,
-0x0de00c3c, 0xdb21fec2, 0xb003cc4b, 0x40b7c0bf, 0x03e400f1, 0x56c00e34,
-0x00000620, 0x00000000, 0x00370001, 0x837c20df, 0x06c801f0, 0x7c429f40,
-0xc029f002, 0x42170227, 0x09f0106c, 0xcf0131c0, 0x70431d02, 0x0036c00c,
-0x035d00df, 0x07c01df0, 0x00000c00, 0x00000000, 0x003f0880, 0x07bc40ff,
-0x34c10c30, 0xfe30ff20, 0xc0073057, 0x44338038, 0x0b1084fc, 0xfb003ce2,
-0xb003cc00, 0x017c800f, 0x03cc00df, 0x00d00df0, 0x00000c22, 0x00000000,
-0x00362081, 0x077422dd, 0x04400114, 0x7402dd08, 0x4001104f, 0x031b0634,
-0x0d100874, 0xd10036c0, 0x30034441, 0x0034420d, 0x036c80d7, 0x04400dd0,
-0x00000802, 0x00000000, 0x0034a001, 0x2374211d, 0x34400d14, 0x34021d00,
-0x40011003, 0x00111034, 0x0d501274, 0xd9103450, 0x50034403, 0x0035400d,
-0x034400cd, 0x04400dd0, 0x00000200, 0x00000000, 0x00302010, 0x0234000d,
-0x00400010, 0x36000d00, 0x40001402, 0x80012000, 0x08560234, 0x01003040,
-0x1c030600, 0x0031640c, 0x032600cd, 0x40400dd0, 0x00000080, 0x00000000,
-0x1036b000, 0x037c000f, 0x34c00d14, 0x74801f00, 0xd0013003, 0x00110014,
-0x0954027c, 0xdb003440, 0x30034d00, 0x0035d00d, 0x03cc00ff, 0x00c00df0,
-0x00000ac0, 0x00000000, 0x203fb205, 0x00fc003c, 0x0fc403f1, 0xfc003f00,
-0xc20bf003, 0x003f203f, 0x0fb102fc, 0xbf003fd0, 0x7003fc00, 0x003ec00f,
-0x03fc00f7, 0x17c00ff0, 0x00000e60, 0x00000000, 0x000ba003, 0x03cc82e3,
-0x3fc00f34, 0x8c04f308, 0xc0033000, 0x34b320bf, 0x4f3203cc, 0x33003fc0,
-0x3073ec04, 0x030cc023, 0x73cc083f, 0x0fc28f30, 0x00000e00, 0x00000000,
-0x20070801, 0x0b442051, 0x97400d10, 0x452ad11a, 0x420d1103, 0x029b003f,
-0x4d143b44, 0x11203349, 0x100bf428, 0x03a54c01, 0x1b54449d, 0x07484d14,
-0x00000c20, 0x00000000, 0x4203a011, 0x23148491, 0x33480c58, 0x0400c100,
-0x40001000, 0x808d0133, 0xcc104351, 0x01403340, 0x10132400, 0x00214049,
-0x0304004d, 0x47400c55, 0x00000e80, 0x00000000, 0x1045a803, 0x03560611,
-0x37423d5c, 0x5600d100, 0x400d5003, 0x03dc0037, 0x0d100344, 0x51003344,
-0x10037424, 0x10254029, 0x0354081d, 0x0f400d50, 0x00000620, 0x00000000,
-0x0047a802, 0x071d0113, 0x27c62d70, 0x4d005300, 0xc4013000, 0x019f0037,
-0x0d30035c, 0x130037c0, 0x32036c05, 0x2025d020, 0x014c201f, 0x0bc00d74,
-0x00000e20, 0x00000000, 0x082d8007, 0x936c01bf, 0x17880fb2, 0xec894f08,
-0xc30fb003, 0x008a203f, 0x0ff083fc, 0x3f083fc0, 0xf003fc00, 0x212fcb33,
-0x0bfe01bf, 0x1fc00fb2, 0x00000600, 0x00000000, 0x00050802, 0x234d0013,
-0x28c05d30, 0x4c00f302, 0xc01131a0, 0x069b0037, 0x0d30035c, 0xd34036c0,
-0x32034c02, 0x0024d02d, 0x034d0153, 0x0bc00d30, 0x00000420, 0x00000000,
-0x20308013, 0xaf400081, 0xb4002d24, 0x050ad102, 0x403d1007, 0x0250403f,
-0x0f340390, 0xd1003c42, 0x1003c5a0, 0x0064001d, 0x03542391, 0x4f400d00,
-0x00000200, 0x00000000, 0x0022a007, 0x0e240001, 0x70422c10, 0x22088100,
-0x48200080, 0x00c50037, 0x0c900304, 0x01003200, 0x10034448, 0x03804004,
-0x13448415, 0x1f400c00, 0x00000a00, 0x00000000, 0x60488004, 0x27a441b1,
-0x58401614, 0xa485e100, 0x601e120f, 0x0165427b, 0x9e108794, 0x40407840,
-0x10070405, 0x02604016, 0x261481a5, 0x13001e10, 0x00000200, 0x00000000,
-0x02a01012, 0x022c20c3, 0x30c00c30, 0x2c008100, 0xc0003020, 0x208f4037,
-0x0db0234c, 0x830032c0, 0x32030c00, 0x0220d14d, 0x230c8257, 0x4bc04c34,
-0x00000040, 0x00000000, 0x200db802, 0x03dc00ff, 0x3fc80af0, 0xdc04ff40,
-0xc80fd083, 0x407b00bf, 0x0ff003fc, 0xbf203fc1, 0xd003fc84, 0x223fc00f,
-0xa3fc80bb, 0x0bc00ff4, 0x00000660, 0x00000000, 0x0027a015, 0x025c01df,
-0x2dc20d70, 0x4c201340, 0xd011f000, 0x21d30af5, 0x1df0034c, 0x530037c0,
-0xf3134c01, 0x0024c80c, 0x014c0013, 0x57c20d30, 0x00000e00, 0x00000000,
-0x00298812, 0x038400fd, 0x18600e14, 0x86004108, 0x400e9103, 0x00e1003c,
-0x0ed00384, 0x4101bc40, 0xd0c38400, 0x102c400e, 0x02c480b1, 0x4b400e50,
-0x00000620, 0x00000000, 0x00790003, 0x0694816d, 0x61401f51, 0x8401a120,
-0x4012d004, 0x8181813a, 0x5cd83784, 0xa1007940, 0xd8278451, 0x006b401f,
-0x07848321, 0x0f401e58, 0x00000400, 0x00000000, 0x88332812, 0x030682cd,
-0x30400850, 0x0424c100, 0x420c9003, 0x10c18032, 0x0cd10305, 0x81403040,
-0xd0030423, 0x0037413c, 0x13450191, 0x4b400c50, 0x00000c20, 0x00000000,
-0x015da817, 0x015c047f, 0x1dc02670, 0x4dc07301, 0xc005f081, 0x02730017,
-0x05f001cc, 0x730015c0, 0xf0014d00, 0x001fd106, 0x01cc0273, 0x5fc00570,
-0x00000620, 0x00000000, 0x00470012, 0x007c041f, 0x07c011a0, 0xfc001f10,
-0xc203f000, 0x021f5005, 0x01f0007c, 0x1f0005c0, 0xf0007c00, 0x44044421,
-0x007c011f, 0x4bc001d0, 0x00000c00, 0x00000000, 0x00670810, 0x023c009f,
-0x20c00934, 0x44008300, 0xc009e002, 0x00930223, 0x8900023c, 0x930027e0,
-0x20023c10, 0x08a4c009, 0x024c029b, 0x43c20931, 0x00000c20, 0x00000000,
-0x22662001, 0x0274009d, 0x24400910, 0x45009140, 0x4029d002, 0x06918827,
-0x09340274, 0x91002740, 0xf0027400, 0x08e55849, 0x0a6c0391, 0x074009b0,
-0x00000800, 0x00000000, 0x0024a018, 0x2a74009d, 0x24400914, 0x54009548,
-0x600bd002, 0x00910027, 0x09500274, 0x91002340, 0x50027440, 0x04246009,
-0x06448099, 0x63600910, 0x00000200, 0x00000000, 0x25202010, 0x5234208d,
-0x20400910, 0x95148505, 0x621ad002, 0x14810023, 0x48502234, 0x81022341,
-0x90123400, 0x02216089, 0x26244981, 0x43402890, 0x00000080, 0x00000000,
-0x0106b01d, 0x107c401f, 0x04c00131, 0x5c041501, 0xc002f000, 0x04110007,
-0x4170587c, 0x11058740, 0x70047c14, 0x0584c021, 0xd84c821b, 0x77c20130,
-0x00000ac0, 0x00000000, 0x082fb819, 0x02bc14bf, 0x2f500af4, 0x6c00bb20,
-0xc149f002, 0x00bf05a7, 0x4930127c, 0xbf4127c1, 0xf1727c20, 0x492f404b,
-0x12fc84bf, 0x67c009f2, 0x00000e60, 0x00000000, 0x012da018, 0x02fc029f,
-0x25c00870, 0x4c049301, 0xc02bf082, 0x04bf01af, 0x6b304a7c, 0xb30127c0,
-0xf0124c04, 0x00a8c00b, 0x4acc00b3, 0x63c62930, 0x00000e00, 0x00000000,
-0x0087081c, 0x0874045d, 0x84420112, 0xc4021118, 0x4001d000, 0x001d0107,
-0x41100874, 0x11158744, 0xd2104402, 0x21044041, 0x8854b411, 0x73400110,
-0x00000c20, 0x00000000, 0x02332010, 0x0a36008d, 0x69400b50, 0x8409a112,
-0x4048d002, 0x038d00a3, 0x28141234, 0x81422340, 0xd04a0509, 0x21e07108,
-0x12248081, 0x4340081c, 0x00000e80, 0x00000000, 0x2225a818, 0x0274019d,
-0x2c586910, 0xc000b120, 0x4009d002, 0x049d0027, 0x09100274, 0x91002740,
-0xd0824420, 0x00644209, 0x0a741891, 0x63400918, 0x00000620, 0x00000000,
-0x0027a805, 0x023c029f, 0xa5c02870, 0x4d029340, 0xc009e002, 0x009f0027,
-0x0930027c, 0x934027c0, 0xf1024c2a, 0x4024c109, 0x066c0093, 0x17c20930,
-0x00000e20, 0x00000000, 0x00258014, 0x027c009f, 0x27c009f0, 0x7c409e00,
-0xc009f002, 0x009f0027, 0x09f0027c, 0x8f0027c0, 0xf0027c01, 0x0427c039,
-0x0a5c819f, 0x53c009f0, 0x00000600, 0x00000000, 0x00050814, 0x404c821b,
-0x08c00331, 0xcd002340, 0xc001f000, 0x00130004, 0x01f2004c, 0x130007c2,
-0xf0007c00, 0x0000d001, 0x404cba13, 0x53c00130, 0x00000420, 0x00000000,
-0x229ca014, 0x01c42051, 0x14420510, 0x45005100, 0x4007d001, 0x00714014,
-0x05d0016c, 0x51001740, 0xd2017401, 0x301cc017, 0x05d4c271, 0x53400510,
-0x00000200, 0x00000000, 0x00b2a014, 0x032400c9, 0x30600c14, 0x1400c100,
-0x500cd003, 0x01c10020, 0x0cd00344, 0x81003740, 0xd0033401, 0x00724129,
-0x0f4402d1, 0x53400c90, 0x00000a00, 0x00000000, 0x00788005, 0x032405e1,
-0x08420318, 0x94002100, 0x411ad800, 0x03410068, 0x0ed01384, 0xe1803340,
-0xd013b410, 0x443c410a, 0x43940021, 0x17408e91, 0x00000200, 0x00000000,
-0x00781015, 0x07ad05fb, 0x70501e30, 0x9c01c300, 0xc017f007, 0x0163007c,
-0x1ef10f85, 0xa3407bc0, 0xf00fbc01, 0x087ac01b, 0x06cc81f3, 0x57c01eb4,
-0x00000040, 0x00000000, 0x0031b810, 0x005c89df, 0x07c001f0, 0x6e001f00,
-0xc009f000, 0x00df2037, 0x0df0037c, 0xdf07b7c0, 0x90077c00, 0x0017c001,
-0x027c003f, 0x43c00d70, 0x00000660, 0x00000000, 0x007fb000, 0x17fc01ff,
-0x7cc01f70, 0x8c01f340, 0xc01b3007, 0x01f7006c, 0x1f3007cc, 0xf3007fc0,
-0x3007cc01, 0x087cc01f, 0x07cd01ff, 0x03c21f34, 0x00000e00, 0x00000000,
-0x00398015, 0x11b480ed, 0x08418210, 0x86082102, 0x480b1000, 0x84610028,
-0x0e100390, 0xa3003b48, 0x1003c400, 0x00395006, 0x4bc4002d, 0x57400e10,
-0x00000620, 0x00000000, 0x00290000, 0x73b400ed, 0x30400e50, 0xc500c100,
-0x40021003, 0x20650030, 0x0e100380, 0xe9003b40, 0xd0238400, 0x0618400f,
-0x008408fd, 0x03400e50, 0x00000400, 0x00000000, 0x04e32804, 0x003400cd,
-0x00400012, 0x04000100, 0x40281000, 0x40c10034, 0x0c100314, 0x81403742,
-0xd0030421, 0x00914404, 0x0c04025d, 0x13400d50, 0x00000c20, 0x00000000,
-0x00b5a815, 0x073c00ff, 0xf4d0ac70, 0x4c01d300, 0xc07d310b, 0x09870034,
-0x0934038c, 0xdb003fc0, 0xf403cd24, 0x00b4c009, 0x0b4f909f, 0x57c00f70,
-0x00000620, 0x00000000, 0x02370001, 0x027c10df, 0x43c001f0, 0x7c011f04,
-0xc04df404, 0x039f0037, 0x09f0037c, 0x9f0037c4, 0x10037c00, 0x2027c00d,
-0x017c001f, 0x07c00d80, 0x00000c00, 0x00000000, 0x003b0880, 0x037c80f3,
-0x3cc00f31, 0xc500e300, 0xc8073043, 0x0593107c, 0x0f30034e, 0xc3003fc0,
-0xf003cd03, 0x043cc00b, 0x42cc903f, 0x00c20f30, 0x00000c22, 0x00000000,
-0x04b60081, 0x047440d1, 0x06c00110, 0x04001170, 0x400d1000, 0x90950234,
-0x1d120344, 0x91003744, 0xd1034400, 0x0057d414, 0x0c04411d, 0x05400d10,
-0x00000802, 0x00000000, 0x8014a001, 0x237400d1, 0x34420d11, 0x5500d100,
-0x40181003, 0x40d14034, 0x89100344, 0xd1803540, 0xd2034400, 0x0074401d,
-0x0644019d, 0x04400d10, 0x00000200, 0x00000000, 0x00102010, 0x003400c1,
-0x02400110, 0x54000100, 0x40081000, 0x00c50030, 0x08100344, 0x81103340,
-0xd0030400, 0x08335004, 0x0044410d, 0x41400c10, 0x00000080, 0x00000000,
-0x4006a000, 0x037c00d3, 0x34c00d34, 0x5c00d300, 0xc8013003, 0x00d31034,
-0x0d320344, 0xd34039c4, 0xf0034c00, 0x2014d00d, 0x004d009f, 0x00c00d34,
-0x00000ac0, 0x00000000, 0x200fa805, 0x00fc00ff, 0x0fc002f0, 0xec003f00,
-0xc00bb080, 0x00ff003f, 0x0ff083fc, 0xb9003fc0, 0xf203fc00, 0x001fc006,
-0x00fc002f, 0x17c00ff2, 0x00000e60, 0x00000000, 0x002ba003, 0x0084807b,
-0x2ec00f21, 0xec00f348, 0xc00f1501, 0x003300bf, 0x0b3410cc, 0x33040cd0,
-0x3023cc00, 0x00bcc02f, 0x03cc06f3, 0x0cc10f30, 0x00000e00, 0x00000000,
-0x04a70821, 0x034490dd, 0x24420b10, 0x5400d104, 0x400d1008, 0x140102a3,
-0x29100844, 0x1105b4c0, 0x50134416, 0x203d480f, 0x43c402f1, 0x04402d50,
-0x00000c20, 0x00000000, 0x0323a011, 0x0025048d, 0x26400c90, 0x6400c101,
-0x400c1023, 0x80010923, 0x61902020, 0x41400041, 0x90030408, 0x4930404c,
-0x03250cc9, 0x44400c90, 0x00000e80, 0x00000000, 0x0125a803, 0x236400dd,
-0x27401d91, 0x7400d180, 0x480d1000, 0x14011033, 0x05900064, 0x41063640,
-0xd0034400, 0x0035400c, 0x036400d9, 0x0c400cd0, 0x00000220, 0x00000000,
-0x0037a800, 0x4c6c019f, 0x22900db1, 0x6c40d300, 0xc00d3000, 0x00930027,
-0x21b83c2d, 0x1300c0c1, 0xb003cd02, 0x0030c00d, 0x034c00db, 0x08c00db0,
-0x00000e20, 0x00000000, 0x003d8087, 0x07dc15ff, 0x6cc40a70, 0xdc00ff02,
-0xc00fe001, 0x003f002f, 0x0b7000dc, 0x7f080dc8, 0x70033c09, 0x003fc00d,
-0x03d800f7, 0x1fc10f72, 0x00000600, 0x00000000, 0x00350802, 0x405cc093,
-0x25c08d70, 0x5c00d300, 0xd00d3000, 0x001b2034, 0x3130a04c, 0xbb008ec0,
-0xb0034d02, 0x0034d00d, 0x031c00cf, 0x08d00d70, 0x00000420, 0x00000000,
-0x0874a013, 0x03444791, 0x24481d10, 0x0400f100, 0x400f1003, 0x301100b4,
-0x04100044, 0x5d003440, 0x1083c402, 0x003eca0f, 0x03c400fd, 0x4c402f10,
-0x00000200, 0x00000000, 0x11e2a003, 0x045403d1, 0x21400cd1, 0x1400d140,
-0x400c1101, 0x000d04b0, 0x00904005, 0x8d800240, 0x90030418, 0x2030400c,
-0x031400cd, 0x1c400c50, 0x00000a00, 0x00000000, 0x46688000, 0x548401f1,
-0x6940bc90, 0x8401e900, 0x401e1004, 0x01212368, 0xb29404c4, 0xad0a7864,
-0x12078401, 0x007a401e, 0x078429ed, 0x10501e10, 0x00000200, 0x00000000,
-0x00201016, 0x001c0a83, 0x25c48cf2, 0x5c08d300, 0xc00d3403, 0x080f0120,
-0x09b00005, 0xdf0202c0, 0xb0130c0e, 0x0030c04c, 0x035c00df, 0x48c00d70,
-0x00000040, 0x00000000, 0x4835b200, 0x117c60cd, 0x26c2ad60, 0x7c30d700,
-0xc08df200, 0x001f4137, 0x0d70223c, 0xdf023780, 0xf0037c28, 0x0037c00d,
-0x237c60df, 0x0bc18dd0, 0x00000660, 0x00000000, 0x0077a015, 0x007400d3,
-0x34d02c21, 0x7c00df00, 0xc00db000, 0x80134023, 0x013000fc, 0x33007ec2,
-0xf0037c00, 0x033484cd, 0x334d1cd1, 0x54c00df2, 0x00000e00, 0x00000000,
-0x00298810, 0x00f480e1, 0x38400e10, 0xb424ed00, 0x4c4e1001, 0x0061002b,
-0x025000b4, 0xa1003d00, 0xd083b400, 0x043c42cf, 0x539400e5, 0x48405ed0,
-0x00000620, 0x00000000, 0x00710083, 0x04b401a1, 0x78401f10, 0xf041ed00,
-0x449e9904, 0x0121047f, 0x131005b4, 0xe1004840, 0xd007b401, 0x0138401e,
-0x078485c1, 0x0c501ed0, 0x00000400, 0x00000000, 0x40732812, 0x813400c1,
-0x34420c10, 0x7400cd02, 0x400c103f, 0x21010073, 0x0c100634, 0xc101f040,
-0xd0033407, 0x0030420c, 0x031400c5, 0x48400cd0, 0x00000c20, 0x00000000,
-0x045da816, 0x01fc1171, 0x54c00634, 0xfc007f00, 0xc005b009, 0x9373201f,
-0x273485fc, 0x7341dcc0, 0xf0817c07, 0x0014d005, 0x014c0053, 0x5cc005f0,
-0x00000620, 0x00000000, 0x00070012, 0x007c921f, 0x07c021f2, 0x7c001f00,
-0xc001f000, 0x011f0007, 0x11f0287c, 0x0f0005d0, 0xf1007c02, 0x0007c000,
-0x003e001f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x02260810, 0x067c009f,
-0x24c40920, 0x7c009340, 0xc8093002, 0x009b0027, 0x1830027c, 0x9f0026c0,
-0xf2024c01, 0x0020c009, 0x024c0093, 0x40d09872, 0x00000c20, 0x00000000,
-0x01a62000, 0x2634009d, 0x24420910, 0x74009b08, 0x40091002, 0x80910027,
-0xb9b06e34, 0x9d082442, 0xd0024451, 0x08244009, 0x82440091, 0x04403910,
-0x00000800, 0x00000000, 0x00248018, 0x0274189d, 0x24401951, 0x74009100,
-0x40091002, 0x80990063, 0x09100274, 0x9d002760, 0xd0024404, 0x40245409,
-0x02440081, 0x60400950, 0x00000200, 0x00000000, 0x02202010, 0x2676088d,
-0x20400850, 0x34088102, 0x44881022, 0x08812263, 0x98902234, 0x8d002048,
-0xd0020548, 0x01204048, 0x32040481, 0x40408812, 0x00000080, 0x00000000,
-0x0586b01c, 0x087c821f, 0x84d14574, 0x7c161100, 0xc1613458, 0x221b0587,
-0x6134587c, 0x1f3787c1, 0xf2784c36, 0x22c4c8b1, 0x0c4d0b13, 0x74c16470,
-0x00000ac0, 0x00000000, 0x012fb839, 0x12fc04bf, 0x2fc00bb0, 0xbc049f01,
-0x8849f113, 0x84bf412f, 0x4a7012bc, 0xbf106fc0, 0xf0867c24, 0x0267c099,
-0x327c099f, 0x67c049f0, 0x00000e60, 0x00000000, 0x01afa018, 0x02c402b3,
-0xa4c04b20, 0x0c269348, 0x40693012, 0x02b30227, 0x2be0123c, 0xb111a7c0,
-0xf1367c04, 0x0023c009, 0x4a4c1493, 0x60c06a30, 0x00000e00, 0x00000000,
-0x0987089c, 0x00440451, 0x0460a112, 0x44261109, 0x40611058, 0x00114283,
-0x24710e64, 0x11018700, 0xd0207414, 0x038748a1, 0x18540601, 0x70404110,
-0x00000c20, 0x00000000, 0x40a7a010, 0x42240099, 0x22520990, 0x25029100,
-0x4028100a, 0x80811127, 0x68d02234, 0x81032340, 0xd0123402, 0x04234148,
-0x12241081, 0x40406890, 0x00000e80, 0x00000000, 0x0935a818, 0x02648899,
-0x26400994, 0x64009100, 0x40091002, 0x20910827, 0x09512864, 0x91562240,
-0xd2027494, 0x08274009, 0x0274a091, 0x62400990, 0x00000620, 0x00000000,
-0x0027a801, 0x866d039b, 0x264019b1, 0x6c009300, 0xc0093402, 0x18930067,
-0x09f0007c, 0x9300a7c2, 0xf0027c00, 0x4027c809, 0x026c0093, 0x14d009b4,
-0x00000e20, 0x00000000, 0x10658014, 0x0a5d0097, 0x25c44970, 0x1c009f10,
-0xc009f102, 0x009f0237, 0x39f0056c, 0x9f0067c0, 0xf2027c20, 0x2023c009,
-0x021c009f, 0x51d00870, 0x00000600, 0x00000000, 0x04050814, 0x107c821f,
-0x06c40131, 0x7c001f00, 0xd0013008, 0x02130404, 0x6130406c, 0x134084c0,
-0x60007c2a, 0x0004c001, 0x004c0003, 0x50c00130, 0x00000420, 0x00000000,
-0x0498a014, 0x01f4236d, 0x14500610, 0xf6004d00, 0x44051401, 0x00512090,
-0x07101d44, 0x71001ec0, 0x10017400, 0x401c4005, 0x816c2051, 0x504207b0,
-0x00000200, 0x00000000, 0x00b2a014, 0x03749bcd, 0x34400c11, 0x3400cd20,
-0x400c9003, 0x00c100f2, 0x1c140324, 0xc1003040, 0x50033407, 0x0030400c,
-0x030400c1, 0x50440492, 0x00000a00, 0x00000000, 0x00288005, 0x02f400ed,
-0x38410f10, 0xb404ed11, 0x401c9203, 0x01b100ba, 0x3e102784, 0xe1013040,
-0x10073400, 0x0138601e, 0x032501e1, 0x14400e90, 0x00000200, 0x00000000,
-0x00781015, 0x07bc81ef, 0x78c41634, 0xb403ef00, 0xc01eb017, 0x01e3404a,
-0x1e3027ac, 0x21027850, 0x7017bc01, 0x00f8c15c, 0x1f8c02e3, 0x54c09ab0,
-0x00000040, 0x00000000, 0x1005b810, 0x003c001f, 0x35c000f1, 0x7c00df02,
-0xc88d5023, 0x028e0885, 0x0ff01b7c, 0x3f0b37c8, 0xf0237c00, 0x01b7d0ed,
-0x075c14df, 0x43d069f0, 0x00000660, 0x00000000, 0x406fa202, 0x37cc0973,
-0x7f401f21, 0xc801f302, 0xc01ff007, 0x03f300ec, 0x1b7027cc, 0xf3207cc0,
-0x100fcc21, 0x40fcc0df, 0x07cc01f3, 0x00c017f0, 0x00000e00, 0x00000000,
-0x000d8815, 0xb0848aa1, 0x3f444e10, 0x9400e000, 0x400ed003, 0x84a10128,
-0x07507384, 0xe1013941, 0x10038400, 0x0138488e, 0x039400f5, 0x54408ed0,
-0x00000620, 0x00000000, 0x00390018, 0x33c60861, 0x3a41061a, 0x8400e150,
-0x400ed003, 0xc1e0441a, 0x0b400384, 0x61003840, 0x10038410, 0x9038444e,
-0x038400e1, 0x00501ad0, 0x00000400, 0x00000000, 0x00032806, 0x04050101,
-0x33401410, 0x0400c100, 0x000cd007, 0x12910012, 0x38100b44, 0x01427140,
-0xd0034413, 0x0830400c, 0x031500c4, 0x104008c0, 0x00000c20, 0x00000000,
-0x1875a81d, 0x4a448591, 0x3ec01d05, 0xcd00f300, 0xd20ff01f, 0x93934016,
-0x15700f4d, 0xd300bcc2, 0x3403cd03, 0x003cd00f, 0x03cc00f3, 0x54c001d0,
-0x00000620, 0x00000000, 0x00670001, 0x027c229f, 0x37c42df1, 0x7ca0df00,
-0xc00df003, 0x00df0015, 0x2ff0837c, 0xff0033c1, 0x30037c02, 0x2033c20c,
-0x032c00df, 0x07c009f0, 0x00000c00, 0x00000000, 0x103f0801, 0x43cc187f,
-0x3cd40330, 0xbc00df00, 0xc00c3043, 0x08b30024, 0x2730434c, 0x93043fc0,
-0x3003f801, 0x003cc80d, 0x03cc00f3, 0x00c08f30, 0x00000c22, 0x00000000,
-0x00e62081, 0x0404030d, 0x34409812, 0x7420dda0, 0x400d1003, 0x00d104a4,
-0x65b0e344, 0x11003742, 0x10837405, 0x0034400d, 0x036c00d1, 0x04400d10,
-0x00000802, 0x00000000, 0x0074a000, 0x064420dd, 0x34422d10, 0x7480dd00,
-0x400d5203, 0x00910800, 0x01100344, 0x11003740, 0x10036408, 0x1034400d,
-0x8344a0c1, 0x04400010, 0x00000200, 0x00000000, 0x00202010, 0x0044009d,
-0x30400c10, 0x3480cd00, 0x400c5103, 0x00c10820, 0x00900341, 0xc1483340,
-0x12033480, 0x0030400c, 0x032480c1, 0x40500810, 0x00000080, 0x00000000,
-0x0836b000, 0x034d004f, 0x34c00534, 0x7c80dd00, 0xd00d7403, 0x00a34034,
-0x0130034d, 0x13003f40, 0x3403ac00, 0x4038d00f, 0x034c00f3, 0x00c00e34,
-0x00000ac0, 0x00000000, 0x000fb804, 0x80bc003f, 0x3fc20fd8, 0xfc20ff00,
-0xc20fb003, 0x00ff083f, 0x03f083fc, 0x3f003bc2, 0xe003fc00, 0x403fc00f,
-0x03fc00ff, 0x17c00ff0, 0x00000e60, 0x00000000, 0x000ba003, 0x98cc02bf,
-0x3cc20ff0, 0xcc88bf20, 0xc00f3032, 0x00f7103c, 0x033003fc, 0xfb203dc0,
-0xf002ccc0, 0x012fc00f, 0x03cc04b3, 0x0cc4cbf0, 0x00000e00, 0x00000000,
-0x08350801, 0x004482ed, 0x36c825c0, 0x54469d10, 0x400d5033, 0x40c10039,
-0x01110274, 0xe9003048, 0xd0024480, 0x02974a0d, 0x01444a91, 0x0440cbd0,
-0x00000c20, 0x00000000, 0x00332011, 0x1811068d, 0x21482c58, 0x16868d20,
-0x400c1002, 0x80c58832, 0x01100374, 0xc9003140, 0xd0023400, 0x0033400c,
-0x03070081, 0x444008d0, 0x00000e88, 0x00000000, 0x00b5a803, 0x085440dd,
-0x36401dd0, 0x16018d00, 0x400d5046, 0x00d11037, 0x0d160274, 0xd9003400,
-0xd2036440, 0x0037440d, 0x014620d0, 0x0c4089d0, 0x00000620, 0x00000000,
-0x0057a800, 0x045c009f, 0x74c01c70, 0x4c879f00, 0xc00f310f, 0xa0d70036,
-0xb130007c, 0xdb0035c0, 0xe0227d00, 0x1033c00f, 0x014c0853, 0x08d01df1,
-0x00000e20, 0x00000000, 0x00fd8087, 0x15e404ee, 0x7fc40ff0, 0xf8009e21,
-0x800ee003, 0x02ff003d, 0x0ff203f8, 0xff10bf44, 0xf002dc40, 0x401fc00f,
-0x17fc00ff, 0x1fc01bf0, 0x00000600, 0x00000000, 0x00350802, 0x014c00db,
-0x14c10df1, 0x4c021f01, 0xc04d700a, 0x40d34037, 0x61f0024c, 0xd32034c8,
-0xf0824c04, 0x20b7c00d, 0x034d00c3, 0x08d00cf0, 0x00000420, 0x00000000,
-0x23b4a013, 0x2dc00091, 0x34501dc0, 0x44019d00, 0x423f1082, 0x4491007b,
-0x3cd00304, 0xf00aa440, 0xd0034400, 0x0037400f, 0x034401d1, 0x4c420dd0,
-0x00000200, 0x00000000, 0x0032a007, 0x22048089, 0xb24008d0, 0x04418d08,
-0x443c1041, 0x13cd0033, 0x00d04b04, 0xd0003148, 0xd0830402, 0x0023400c,
-0x0224488d, 0x1e4008d0, 0x00000a00, 0x00000000, 0x407c8006, 0x058409e9,
-0x7a4097d1, 0xe501ad00, 0x411e1127, 0x09ed067b, 0x12d00680, 0xe1027900,
-0xd0068419, 0x6273401e, 0x06a4098d, 0x12409ad0, 0x00000208, 0x00000000,
-0x02301012, 0x010c00ca, 0x32c188f0, 0x0c3c8f00, 0xc0cc3420, 0x00cf2233,
-0x0df0030c, 0xc34231d1, 0xf0030d00, 0x02b3c48c, 0x222c088f, 0x4ac289ea,
-0x00000040, 0x00000000, 0xa03db802, 0x43fd00b7, 0x35408ec0, 0x9e089f12,
-0xc28db1a2, 0x20f30237, 0x0ff120f1, 0xff023ec0, 0xf103fc00, 0x023fc00f,
-0xa2dc68f3, 0x09c08bf0, 0x00000660, 0x00000000, 0x0037a015, 0x024c009f,
-0xb4c81bf0, 0x5c009301, 0xc00d3403, 0x20d36437, 0x0d30024c, 0xd30130d0,
-0xf0034c03, 0x0037c00f, 0x044c0013, 0x54c04df2, 0x00000e00, 0x00000000,
-0x00398812, 0x118488ed, 0x3ac40ed1, 0xb480e584, 0x486eb003, 0x00e1003b,
-0x0e1083c4, 0xe1043840, 0xd002840c, 0x0033405e, 0x03840085, 0x48450ed0,
-0x00000620, 0x00000000, 0x00790083, 0x05a421ad, 0xda4018d0, 0xb401a100,
-0x405e1806, 0x11f1027b, 0x1e100684, 0xe1007e44, 0xd0078408, 0x007b429e,
-0x02a403a1, 0x0c401cd1, 0x00000400, 0x00000000, 0x00730812, 0x074421cd,
-0x32406cd2, 0x74028524, 0x480c900a, 0x00c90033, 0x1c144504, 0xc1027240,
-0xd8030520, 0x0073400c, 0x472503c5, 0x48408cd0, 0x00000c20, 0x00000000,
-0x015da817, 0x05cc015f, 0x96d007e2, 0xfc067300, 0xc0073411, 0x0172001f,
-0x77340dcc, 0x534016c0, 0xf0014c00, 0x015fc005, 0x1de58373, 0x5cd015f0,
-0x00000620, 0x00000000, 0x00870012, 0x287d081f, 0x07c001e0, 0x78041f00,
-0xc021f810, 0x00170087, 0x31f0207d, 0x1f0005c0, 0xf0007c00, 0x5003c001,
-0x005c040f, 0x4bc001f0, 0x00000c00, 0x00000000, 0x00a70810, 0x164c009f,
-0x37c01930, 0x4c499b08, 0xc8493002, 0x009b0827, 0x3930064c, 0x8300b4c0,
-0xf0024c01, 0x2024d009, 0x024c0193, 0x40c02930, 0x00000c20, 0x00000000,
-0x01262001, 0x164c009d, 0x23403914, 0x6c839100, 0x40495002, 0x009108a7,
-0x09100644, 0x914026c8, 0x70024083, 0x40244008, 0x024c0a91, 0x04502910,
-0x00000800, 0x00000000, 0x0024a018, 0x02440085, 0x27498910, 0x44828100,
-0x60091002, 0x00814023, 0x0c102305, 0x91002050, 0x50024414, 0x40244009,
-0x03060091, 0x60410810, 0x00000200, 0x00000000, 0x00202010, 0xd204148d,
-0x23414818, 0x24148140, 0x60085552, 0x08810223, 0x8c142204, 0x81022060,
-0x500a0408, 0x02204028, 0x0a270181, 0x40408810, 0x00000080, 0x00000000,
-0x2006b01d, 0x104c4407, 0x17c84130, 0x06041340, 0xc1413110, 0x02110093,
-0x2032084c, 0x03108440, 0x71004c02, 0x1584c141, 0x004c9413, 0x74c16130,
-0x00000ac0, 0x00000000, 0x082f9819, 0x52d914bf, 0x33c60bf0, 0xfc14bf20,
-0xc009f452, 0x04a701a7, 0x4ff012fc, 0x9f0127c0, 0x7002f806, 0x012fc409,
-0x03dc40bf, 0x67c04bf0, 0x00000e60, 0x00000000, 0x002f8019, 0x1acc0c93,
-0x25c04b31, 0xcc069300, 0xd059300a, 0x029301ac, 0x29300a6c, 0x9300a4c0,
-0xf0020c80, 0x0324c018, 0x0a4c00b3, 0x60c0cb30, 0x00000e00, 0x00000000,
-0x0007089c, 0xa8400e11, 0x0452a110, 0x044a0120, 0x40011008, 0x04110384,
-0x01100044, 0x31000440, 0xd1104416, 0x43844061, 0x106d0a15, 0x7040e110,
-0x00000c20, 0x00000000, 0x0067a010, 0x12144085, 0x25401910, 0x24219580,
-0x4029101a, 0x04a50127, 0x4a101285, 0xa1012840, 0xd0422422, 0x20204128,
-0x12644089, 0x40400810, 0x00000e80, 0x00000000, 0x6065a818, 0x0a540481,
-0x24400918, 0x44209551, 0x40090002, 0x00a10026, 0x0b100a84, 0xb1002c40,
-0xd0066400, 0x04245409, 0x0264009d, 0x60404810, 0x00000620, 0x00000000,
-0x00e7a805, 0x0a5d0197, 0xe5802934, 0x6d009720, 0xc0092402, 0x01970027,
-0x2934026c, 0x93402490, 0xf0026c00, 0x4024c809, 0x0a2c069b, 0x14d01934,
-0x00000e20, 0x00000000, 0x00258214, 0x666c209f, 0x37c009f1, 0x3c09db00,
-0xc10df026, 0x429f4025, 0x59f0027c, 0x9f0e67c0, 0xf0825c00, 0x0227c008,
-0x027c0997, 0x53c009f0, 0x00000600, 0x00000000, 0x24050814, 0x080c001f,
-0xc4c00118, 0x4c881f00, 0xc0013404, 0x10130004, 0x0130004c, 0x0f0004d0,
-0x30007c04, 0x4000c001, 0x007c0303, 0x50c101f0, 0x00000420, 0x00000000,
-0x09d88214, 0x81c4005d, 0x14505630, 0xec415c00, 0x4004f015, 0x055b00d0,
-0x15140545, 0x5d209440, 0x50017402, 0x401c4007, 0x01740671, 0x505077d0,
-0x00000200, 0x00000000, 0x00b2a014, 0x0f0000cd, 0x37604c98, 0x0441dd00,
-0x50205007, 0x03c106f0, 0x0d103704, 0xcd02f740, 0x10033400, 0x0030500c,
-0x033401c1, 0x50400cd0, 0x00000a00, 0x00000000, 0x08388005, 0x080404ed,
-0x3b400c10, 0xa400ed00, 0x4103d003, 0x00e9003c, 0x0e100384, 0xed001b41,
-0x4007f401, 0x0038424e, 0x13b480e1, 0x14400cd0, 0x00000200, 0x00000000,
-0x00781015, 0x048d03fd, 0x7bc01e94, 0x8c116f10, 0xc0127007, 0x01f3007c,
-0x1f3106cc, 0x2f007bc0, 0x3047bc90, 0x007cc13e, 0x1fbc0123, 0x54c01ef0,
-0x00000040, 0x00000000, 0x0015b010, 0x837c16df, 0xb4d80970, 0xfc205f01,
-0xc068f403, 0x00df0037, 0x0df0027c, 0x1f0014c0, 0xb0137404, 0x0237c00d,
-0x0b7c205f, 0x43c00df0, 0x00000660, 0x00000000, 0x1a7fa002, 0x04cc41ff,
-0xfcc01730, 0xfc01f302, 0xc0333005, 0x01e7006f, 0x1b3007cc, 0xf3426fc0,
-0x7243fc01, 0x207cc41f, 0x0fcc817b, 0x03c01f30, 0x00000e00, 0x00000000,
-0x12398815, 0x1b8404ed, 0x3ac00e10, 0xf482a102, 0x48221003, 0x50e1003b,
-0x0a104384, 0xe1000f48, 0xb023f400, 0x403ac00f, 0x03cc0061, 0x57400eb0,
-0x00000620, 0x00000000, 0x2a190008, 0x038490cd, 0xba400e18, 0xb4002510,
-0x40021001, 0x00f50223, 0x0a1402c5, 0x21142b40, 0x5023b400, 0x0038408e,
-0x03a40001, 0x03400e10, 0x00000400, 0x00000000, 0x04032816, 0x0c0400cd,
-0x32490c10, 0x74010500, 0x4000100b, 0x00d10033, 0x2c120204, 0x91200342,
-0xc0033400, 0x0032400c, 0x0b042001, 0x13409d90, 0x00000c20, 0x00000000,
-0x0075a805, 0x034d01ff, 0x32c00c34, 0x7c611740, 0xc601300a, 0x00170017,
-0x1430014c, 0xd31037c9, 0x7003f800, 0x003cc20f, 0x1fad0513, 0x57c01d30,
-0x00000620, 0x00000000, 0x02b70001, 0xb97c80df, 0x77c01df0, 0xfc081a00,
-0xc001f022, 0x021f0017, 0x45f0017c, 0xdf0097c0, 0x22077c00, 0x0477c00d,
-0x437c105f, 0x07c00df0, 0x00000c00, 0x00000000, 0x003f0801, 0x07cc00f3,
-0x3cc80db0, 0xfc143300, 0xc0833042, 0x283b0018, 0x073040cc, 0x3f027cc0,
-0xb003cc02, 0x2038c00f, 0x03cd0033, 0x00c09f30, 0x00000c22, 0x00000000,
-0x00122081, 0x0d0400d1, 0x34500d10, 0x74031100, 0x4028f002, 0x02110094,
-0x2d104844, 0x5d001440, 0x10034481, 0x4035400d, 0x03440641, 0x04402d10,
-0x00000802, 0x00000000, 0x0c34a001, 0x224500c1, 0x34608593, 0x76005110,
-0x40011005, 0x10190084, 0x21101104, 0xdd142540, 0x90030400, 0x0034400c,
-0x03542119, 0x04610d10, 0x00000200, 0x00000000, 0x20102210, 0x004400c1,
-0x54620d90, 0x34000100, 0x4800d203, 0x00c12010, 0x01120305, 0xcd002140,
-0x91030440, 0x0031480c, 0x03440001, 0x40400c10, 0x00000080, 0x00000000,
-0x0016b001, 0x020c80f1, 0x34c80db1, 0x7c001340, 0xd0013201, 0x001b0024,
-0x0134014d, 0x1f0035c4, 0xb103cd00, 0x0034c00f, 0x03dc0013, 0x00d00132,
-0x00000ac0, 0x00000000, 0x002fb805, 0x00fc00ff, 0x3bd00f70, 0xfc003f00,
-0xc00ff483, 0x20ff103f, 0x0ff083bc, 0xff003ed4, 0x7183fc00, 0x403bc40f,
-0x03fc803f, 0x17c003f0, 0x00000e60, 0x00000000, 0x8080a300, 0x0839020e,
-0x83b820ec, 0x3b038ec0, 0xb020ec08, 0x820e80e3, 0x20ec083a, 0x0ec083a0,
-0xec0a3b02, 0xc083a828, 0x083b020e, 0x03b020ec, 0x0000008c, 0x00000000,
-0x8022a200, 0x023a808e, 0x23b808ea, 0x2a808ea0, 0xa808ea82, 0x808e8023,
-0x08ea023a, 0x8ea023a8, 0xea023a80, 0xa0232808, 0x023a808e, 0x03a808ea,
-0x00000a88, 0x00000000, 0x80402100, 0x04120104, 0x41201048, 0x12018480,
-0x20104804, 0x01048061, 0x10480412, 0x04804120, 0x48041201, 0x80410018,
-0x04120104, 0x01201048, 0x0000020c, 0x00000000, 0x80008100, 0x001a0006,
-0x01a00068, 0x1a100680, 0xa0006800, 0x10068401, 0x0068001a, 0x060001a9,
-0x68461a00, 0x80018900, 0x00180006, 0x01a00068, 0x00000004, 0x00000000,
-0xa012a300, 0x013a804e, 0x13a004e2, 0x3a884e20, 0xa804ea01, 0x004ea013,
-0x04e2013a, 0x4ea013a8, 0xea293a80, 0xa013a014, 0x013a804e, 0x03a804ea,
-0x00000a88, 0x00000000, 0x0002a100, 0x00180006, 0x01800060, 0x18080600,
-0x80006000, 0x00060201, 0x80602018, 0x06020180, 0x60a01800, 0x00018080,
-0x00180006, 0x01800060, 0x0000008c, 0x00000000, 0x2012a300, 0x01108044,
-0x11000442, 0x10804420, 0x08044201, 0x00042011, 0x00420110, 0x44201108,
-0x42011080, 0x20110004, 0x01108044, 0x01080442, 0x0000008c, 0x00000000,
-0xa052a300, 0x050a8142, 0x50a0142a, 0x0a8342a0, 0xa8142a05, 0x8102a050,
-0x102a050a, 0x42a050a0, 0x2a070881, 0xa050a014, 0x05088142, 0x00a8142a,
-0x00000a8c, 0x00000000, 0x80300100, 0x032a00ca, 0x32a00ca8, 0x2200ea80,
-0xa00ca803, 0x00ca803a, 0x0ea80baa, 0xca802aa0, 0xa803aa00, 0x8032a00e,
-0x032a00ca, 0x02a00ca8, 0x00000804, 0x00000000, 0x28000100, 0x00080002,
-0x00820020, 0x20000200, 0x80002000, 0x00422000, 0x04200008, 0x02000082,
-0x20020800, 0x00008800, 0x00080002, 0x80800020, 0x00000004, 0x00000000,
-0x0006a200, 0x00410010, 0x04100104, 0x61101040, 0x10010400, 0x10100404,
-0x01040841, 0x10401411, 0x04404100, 0x40041101, 0x00410010, 0x80100104,
-0x00000a8c, 0x00000000, 0xa002a300, 0x001a8006, 0x01a0006a, 0x1a8026a0,
-0xa8006a00, 0x4006a009, 0x026a009b, 0x06a8099a, 0x6a009a80, 0xa001a802,
-0x001a8006, 0x01a8006a, 0x0000008c, 0x00000000, 0x8002a300, 0x001b0006,
-0x01b0006c, 0x1b0006c0, 0xb0006c00, 0x0046c001, 0x046c001a, 0x06c001a0,
-0x6c001b00, 0xc001b000, 0x001b0006, 0x01b0006e, 0x0000008c, 0x00000000,
-0x0042a300, 0x0430810c, 0x430810c2, 0x30910c20, 0x0810c204, 0x810c2043,
-0x10c20430, 0x0c204308, 0xc2443081, 0x20430810, 0x0430810c, 0x030810c2,
-0x00000a8c, 0x00000000, 0x20000100, 0x0030000c, 0x030000c0, 0x30080c00,
-0x0000c000, 0x000c0203, 0x80c02030, 0x0c020300, 0xc0203000, 0x00030080,
-0x0030000c, 0x030000c0, 0x00000004, 0x00000000, 0x80400100, 0x0432010c,
-0x432010c8, 0x32010c80, 0x2010c804, 0x830c8043, 0x30c80432, 0x0c804328,
-0xc8043201, 0x80432010, 0x0432010c, 0x032010ca, 0x00000204, 0x00000000,
-0xa042a200, 0x041a8106, 0x41a8106a, 0x1a8106a0, 0xa8106a04, 0x8306a041,
-0x306a041a, 0x06a04188, 0x6a041a81, 0xa041a810, 0x041a8106, 0x01a81060,
-0x00000a88, 0x00000000, 0x0042a300, 0x04100104, 0x41001040, 0x10210400,
-0x00104004, 0x01040041, 0x10400430, 0x04004300, 0x40041001, 0x00410010,
-0x04100104, 0x01001040, 0x00000084, 0x00000000, 0x2042a200, 0x04188106,
-0x41881062, 0x18812620, 0x88106204, 0x81062041, 0x10620430, 0x06204308,
-0x62049881, 0x20418810, 0x04188106, 0x01881060, 0x00000088, 0x00000000,
-0x2006a300, 0x0068801a, 0x06a801aa, 0x6a801aa0, 0xa801a200, 0x001aa006,
-0x01aa0062, 0x1aa00620, 0xaa006a80, 0xa006a801, 0x006a801a, 0x02a801a0,
-0x00000a88, 0x00000000, 0x80600100, 0x060a0182, 0x60a01828, 0x08018280,
-0xa0182806, 0x01828060, 0x1828060a, 0x82006080, 0x20060801, 0x80608018,
-0x06080182, 0x00a01828, 0x00000004, 0x00000000, 0x80400000, 0x04020100,
-0x40221008, 0x02012080, 0x20100804, 0x01008040, 0x10080402, 0x00804020,
-0x08048201, 0x80402210, 0x04020100, 0x00201008, 0x00000004, 0x00000000,
-0x8062a300, 0x062b018a, 0x62b018ac, 0x2b098ac0, 0xb018ac06, 0x098ac262,
-0x98ac062b, 0x8ac062b0, 0xac262b01, 0xc062b098, 0x062b018a, 0x02b018ac,
-0x00000a8c, 0x00000000, 0xa062a200, 0x063a818e, 0x63a818ea, 0x3a918ea0,
-0xa818ea06, 0x818ea063, 0x18ea063b, 0x8e8063b8, 0xea463a81, 0xa0638818,
-0x063a818e, 0x03a818ea, 0x00000088, 0x00000000, 0xc062a200, 0x063b018e,
-0x63b018e4, 0x39018ec0, 0xb0186c06, 0x018ec063, 0x18ec063a, 0x8ec063a8,
-0xec063b81, 0xc063b018, 0x063b018e, 0x03b018e4, 0x00000088, 0x00000000,
-0xa062a200, 0x063a818e, 0x63a818ea, 0x3a898ea0, 0xa818ca06, 0x818ea263,
-0x98eaa630, 0x8ea26308, 0xea263b81, 0xa063a898, 0x063a818e, 0x03a818ea,
-0x00000a88, 0x00000000, 0x80400000, 0x04120104, 0x41201048, 0x12010480,
-0x20104804, 0x01048041, 0x1048043a, 0x048043a0, 0x48041201, 0x80412010,
-0x04120104, 0x01201048, 0x00000000, 0x00000000, 0x80600000, 0x061a0186,
-0x61a01868, 0x1a018680, 0xa0186806, 0x81860061, 0x18680618, 0x860061a0,
-0x68061a01, 0x8061a018, 0x061a0186, 0x01a01868, 0x00000000, 0x00000000,
-0xa002a200, 0x003a800e, 0x038800ea, 0x3a800ea0, 0x8800e200, 0x800ca003,
-0x00ca003a, 0x0ea003a8, 0xea003a00, 0xa0032800, 0x003a800e, 0x03a800e2,
-0x00000a88, 0x00000000, 0x0042a200, 0x04180106, 0x41801060, 0x18010600,
-0x80106004, 0x010400c1, 0x10400418, 0x06004180, 0x60041801, 0x00410010,
-0x04180106, 0x01801060, 0x00000088, 0x00000000, 0x2042a200, 0x04108104,
-0x41081042, 0x10810420, 0x08104204, 0x81062041, 0x10620410, 0x04204108,
-0x42041001, 0x20418810, 0x04108104, 0x01081042, 0x00000088, 0x00000000,
-0x2042a200, 0x040a8102, 0x4088102a, 0x088102a0, 0xa8102204, 0x010a2040,
-0x10aa0c0a, 0x02a040a8, 0x2a040a01, 0xa042a830, 0x040a8102, 0x00a8102a,
-0x00000a88, 0x00000000, 0x80c00000, 0x0c2a030a, 0xc2a030a8, 0x2a010a80,
-0xa030a80c, 0x030a80c2, 0x30a80c2a, 0x0a80c2a0, 0xa80c2a03, 0x80c2a030,
-0x0c2a030a, 0x02a030a8, 0x00000000, 0x00000000, 0x00120000, 0x01080042,
-0x10800420, 0x08004200, 0x80042001, 0x00420000, 0x04208008, 0x42001080,
-0x20010800, 0x00108000, 0x01080042, 0x00800420, 0x00000000, 0x00000000,
-0x4042a200, 0x04010100, 0x40101004, 0x01010040, 0x10100404, 0x01004050,
-0x10040501, 0x00404010, 0x04040101, 0x40401014, 0x04010100, 0x00101004,
-0x00000a88, 0x00000000, 0xa000a200, 0x001a8006, 0x01a8006a, 0x1a0006a0,
-0xa0006a00, 0x8006a001, 0x0062001b, 0x06a001b8, 0x6a001a80, 0xa001a800,
-0x001a8006, 0x01a8006a, 0x00000088, 0x00000000, 0xc002a300, 0x001b0006,
-0x01b0006c, 0x1b8006c0, 0xb0006c00, 0x8006c001, 0x006c003a, 0x06c003a0,
-0x6c001b00, 0xc001b000, 0x00130006, 0x01b0006c, 0x00000000, 0x00000000,
-0x20000000, 0x0030800c, 0x030800c2, 0x30800c20, 0x0800c200, 0x800c2003,
-0x00c20018, 0x0c200188, 0xc2003080, 0x20030800, 0x0030800c, 0x030800c2,
-0x00000000, 0x00000000, 0x00000000, 0x0030000c, 0x030000c0, 0x30002c00,
-0x0000c000, 0x002c000b, 0x0ac00010, 0x0c002100, 0xc002b000, 0x00030002,
-0x0010000c, 0x030000c0, 0x00000000, 0x00000000, 0x00a00000, 0x0a32028c,
-0xa32028c8, 0x32808c80, 0x2028c80a, 0x028c80a3, 0x38c80a32, 0x8c80a328,
-0xc80a3202, 0x80a32028, 0x0a32028c, 0x032028c8, 0x00000000, 0x00000000,
-0xa0c40000, 0x0c588316, 0xc5a8316a, 0x5a8316a0, 0xa8316a0c, 0x8316a0c5,
-0x316a0c5a, 0x16a0c5a8, 0x6a0c5a83, 0xa0c5a831, 0x0c5a8316, 0x01a8316a,
-0x00000000, 0x00000000, 0x00000000, 0x00100004, 0x01000040, 0x10002400,
-0x00004000, 0x00240019, 0x0a400110, 0x04002100, 0x40029000, 0x00010006,
-0x00100004, 0x01000040, 0x00000000, 0x00000000, 0x22100000, 0x21188846,
-0x11888462, 0x18804622, 0x88846221, 0x88462201, 0x04622018, 0x46201188,
-0x62011888, 0x22118880, 0x21188846, 0x01888462, 0x00000000, 0x00000000,
-0xa2000000, 0x2028880a, 0x028880a2, 0x28080aa2, 0xa880aa20, 0x880aa202,
-0x80aa202a, 0x0aa222a0, 0xaa022888, 0x2202a880, 0x202a880a, 0x02a880aa,
-0x00000000, 0x00000000, 0x84100000, 0x410a1042, 0x10a10428, 0x0a184284,
-0xa1042041, 0x104a8010, 0x04a8410a, 0x42841081, 0x20010a10, 0x8412a004,
-0x410a1042, 0x00a10428, 0x00000000, 0x00000000, 0x80500000, 0x05020140,
-0x50201408, 0x02014080, 0x20140805, 0x01400050, 0x14000502, 0x40805020,
-0x08050201, 0x80500014, 0x05020140, 0x00201408, 0x00000000, 0x00000000,
-0xc0300000, 0x032b00ca, 0x32b00cac, 0x2b00cac0, 0xb00cac03, 0x00c84032,
-0x0c84032b, 0xcac032b0, 0xac032b00, 0xc032100c, 0x032b00ca, 0x02b00cac,
-0x00000000, 0x00000000, 0xa0100000, 0x013a804e, 0x13a004ea, 0x3a804ea0,
-0xa804ea01, 0x804ea013, 0x04ea013b, 0x4ea013b8, 0xea013a80, 0xa013a804,
-0x013a804e, 0x03a804ea, 0x00000000, 0x00000000, 0x18c40000, 0x8c486312,
-0xc4863121, 0x48030218, 0x8631218c, 0x231208c0, 0x30218c08, 0x1218c082,
-0x200c0863, 0x18c48230, 0x8c486312, 0x00863121, 0x00000000, 0x00000000,
-0xfffc0000, 0xffcbfff2, 0xfcbfff2f, 0xcbfff2ff, 0xbfff2fff, 0xfff2fffc,
-0xff2fffcb, 0xf2fffcbf, 0x2fffcbff, 0xfffcbfff, 0xffcbfff2, 0x00bfff2f,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xdb340000, 0xb3436cd0,
-0x3436cd0d, 0x4bedf0db, 0x36cd0db3, 0x6cd2fb34, 0xdf0db343, 0xd0db7c36,
-0x2fffc36c, 0xdb34becd, 0xb3436cd0, 0x0036cd0d, 0x00000000, 0x00000000,
-0x3ccc0000, 0xccc8f332, 0xcc8f3323, 0xcbf3f23c, 0x8f3323cc, 0xf332fccc,
-0x3f23ccc8, 0x323cfc8f, 0x2fffc8f3, 0x3cccbf33, 0xccc8f332, 0x008f3323,
-0x00000000, 0x00000000, 0x7edc0000, 0xedc9fb72, 0xdc9fb727, 0xc9e3727e,
-0x9fb727ed, 0x7b727ec4, 0xb727ec48, 0x727edc87, 0x27edc9fb, 0x7edc9fb1,
-0xedc9fb72, 0x009fb727, 0x00000000, 0x00000000, 0x40800000, 0x0839020e,
-0xa39020e4, 0x39020e60, 0x9028e408, 0x020e40a3, 0x20e60839, 0x0e408380,
-0xe4083902, 0x60839028, 0x0833020e, 0x038020e4, 0x00000000, 0x00000000,
-0xa0200000, 0x023aa08e, 0x63a808ea, 0x3a808ea0, 0xa808ea02, 0x808ea063,
-0x08ea023a, 0x8ea023a0, 0xea823a80, 0xa023a808, 0x0232808e, 0x03a808ea,
-0x00000000, 0x00000000, 0x80400000, 0x00120104, 0x61201048, 0x12010480,
-0x20104804, 0x01048041, 0x10480412, 0x44804120, 0x48041201, 0x80412018,
-0x04120104, 0x01201048, 0x00000000, 0x00000000, 0x00000000, 0x44180006,
-0x01800060, 0x18100604, 0x81086000, 0x10060421, 0x00620018, 0x06000180,
-0x60001800, 0x20018110, 0x80180006, 0x01890060, 0x00000000, 0x00000000,
-0x22100000, 0x0138884e, 0x138804e2, 0x38804e00, 0x8814e201, 0x804e2013,
-0x04e00138, 0x0e201388, 0xe2213880, 0x00138804, 0x2938804e, 0x038884e2,
-0x00000000, 0x00000000, 0x00000000, 0x00180086, 0x01800060, 0x18080600,
-0x80006080, 0x00060201, 0x80600018, 0x06020180, 0x60001800, 0x00018080,
-0x00180806, 0x01800060, 0x00000000, 0x00000000, 0x20300000, 0x01908044,
-0x19080442, 0x10806400, 0x08064201, 0x80642019, 0x04400110, 0x44201108,
-0x42011080, 0x00110806, 0x03108044, 0x01080242, 0x00000000, 0x00000000,
-0x20540000, 0x054881d2, 0x54881522, 0x48815220, 0x88152205, 0x81522054,
-0x15200548, 0x52205488, 0x220d4881, 0x00548815, 0x05488152, 0x00801922,
-0x00000000, 0x00000000, 0x00300310, 0x032800ca, 0x32800ca0, 0x2800ca00,
-0x800ca003, 0x00ca00b2, 0x0ca00328, 0xca003280, 0x80032800, 0x0032800c,
-0x032800ca, 0x02800ca0, 0x00000000, 0x00000000, 0x00600310, 0x00880082,
-0x08800020, 0x08002200, 0x80022000, 0x00220008, 0x00200008, 0x02000080,
-0x80000800, 0x00008002, 0x02080002, 0x01801620, 0x0000000c, 0x00000000,
-0x40020310, 0x40010000, 0x00100004, 0x01100044, 0x11000400, 0x10004480,
-0x00040001, 0x00400000, 0x84000100, 0x40001100, 0x00010000, 0x00110004,
-0x0000000c, 0x00000000, 0x20020310, 0x00188006, 0x018a0062, 0x18800600,
-0x88006200, 0x80062001, 0x00610018, 0x06200198, 0x628018a0, 0x20018800,
-0x00188006, 0x01980060, 0x0000000c, 0x00000000, 0x40028008, 0x00190006,
-0x01900064, 0x19800600, 0x98006400, 0x00064001, 0x00640019, 0x06400190,
-0x60001900, 0x40019000, 0x00130006, 0x41800464, 0x00000000, 0x00000000,
-0x2442a202, 0x0430910c, 0x430810c2, 0x30810c00, 0x0810c204, 0x810c2043,
-0x10c20430, 0x0c204308, 0xc0443081, 0x20430810, 0x4430810c, 0x030910c2,
-0x00000a88, 0x00000000, 0x00000002, 0x0030000c, 0x030000c0, 0x30080c00,
-0x0000c000, 0x000c0203, 0x80c00030, 0x0c020300, 0xc0003000, 0x00030080,
-0x0010080c, 0x030000c0, 0x00000000, 0x00000000, 0x00400002, 0x0430210c,
-0x430010c0, 0x30810c00, 0x0010c004, 0x010c0043, 0x10c00430, 0x0c004300,
-0xc0043001, 0x00430010, 0x0430010c, 0x030830c0, 0x00000000, 0x00000000,
-0x2042a202, 0x04188106, 0x41881062, 0x18010620, 0x80106204, 0x81062041,
-0x10620418, 0x06204188, 0x62041881, 0x20418810, 0x04188106, 0x01883062,
-0x00000a88, 0x00000000, 0x00428002, 0x04100104, 0x41001040, 0x10010400,
-0x00104004, 0x01040041, 0x10400410, 0x04004100, 0x40041001, 0x00410010,
-0x04100104, 0x03001040, 0x00000000, 0x00000000, 0x2040800a, 0x04188106,
-0x41881062, 0x18010620, 0x80106204, 0x81062041, 0x10620418, 0x06204188,
-0x62041881, 0x20418810, 0x04188106, 0x03081062, 0x00000200, 0x00000000,
-0x2002a202, 0x0028800a, 0x028800a2, 0x28000a20, 0x8000a200, 0x800a2002,
-0x00a20028, 0x0a200288, 0xa2002880, 0x20028800, 0x0028800a, 0x420000a2,
-0x00000a88, 0x00000000, 0x00602012, 0x06080182, 0x60801820, 0x08018200,
-0x88182006, 0x01820060, 0x18200608, 0x82006080, 0x20060801, 0x00608018,
-0x06080182, 0x00801820, 0x00000008, 0x00000000, 0x80400012, 0x84020100,
-0x40201008, 0x02010080, 0x20100804, 0x01008040, 0x10080402, 0x00804020,
-0x08040201, 0x80402010, 0x04022100, 0x00201008, 0x00000000, 0x00000000,
-0xc062a202, 0x262b018a, 0x62b018ac, 0x2b098a82, 0xb098ac06, 0x098ac262,
-0x188c062b, 0x8ac062b0, 0xa8062b01, 0xc062b098, 0x062b018a, 0x02b098ac,
-0x00000a88, 0x00000000, 0x24628000, 0x0638118e, 0x638818e2, 0x38818e70,
-0x8818e286, 0x818e2063, 0x18ca0638, 0x8e206388, 0xe6463881, 0x20638818,
-0x4638818e, 0x039918e2, 0x00000000, 0x00000000, 0x40628002, 0x0639018e,
-0x639018e4, 0x3b818e40, 0x9018e406, 0x018e6063, 0x18e40639, 0x8e406398,
-0xe4063901, 0x40639018, 0x0639818e, 0x038018e4, 0x00000000, 0x00000000,
-0xa062a20a, 0x063a818e, 0x63a818ea, 0x13898ea0, 0xa818ea06, 0x818ea263,
-0x98ea063a, 0x8ea263a8, 0xea063a81, 0xa063a898, 0x063a898e, 0x430818ea,
-0x00000a88, 0x00000000, 0x80480002, 0x04120124, 0x41201048, 0x12010480,
-0x20104804, 0x01048041, 0x10480412, 0x04804120, 0x48049201, 0x80412010,
-0x04920104, 0x03a01248, 0x00000200, 0x00000000, 0x00608002, 0x06180186,
-0x61801860, 0x18018600, 0x80186006, 0x01862061, 0x18600618, 0x86006180,
-0x60061801, 0x00618018, 0x06188186, 0x01881860, 0x00000080, 0x00000000,
-0x20068200, 0x0078801e, 0x0788014a, 0x78001e20, 0x8801e200, 0x801c0007,
-0x01e20078, 0x1e200700, 0xe2007880, 0x20078801, 0x0078001e, 0x038801e2,
-0x00000a08, 0x00000000, 0x00488002, 0x04180126, 0x41801060, 0x18010600,
-0x80106004, 0x01040041, 0x10600418, 0x06004100, 0x60049801, 0x00418010,
-0x04980106, 0x01801260, 0x00000000, 0x00000000, 0x20428002, 0x04108104,
-0x41081042, 0x10010420, 0x08104204, 0x81060041, 0x10420410, 0x04204180,
-0x42041081, 0x20410810, 0x04100104, 0x01081042, 0x00000000, 0x00000000,
-0x2042a202, 0x04088102, 0x40881022, 0x08010220, 0x88102204, 0x810a00c0,
-0x30220408, 0x02204288, 0x22040881, 0x20408810, 0x04080102, 0x00801022,
-0x00000a88, 0x00000000, 0x00c00002, 0x0c28030a, 0xc28030a0, 0x28030a00,
-0x8030a00c, 0x030a00c2, 0x30a00c28, 0x0a00c280, 0xa0042803, 0x00c28030,
-0x0c28030a, 0x028030a0, 0x00000000, 0x00000000, 0x00100202, 0x01080042,
-0x10800420, 0x08204200, 0x80042001, 0x00420000, 0x00200108, 0x42001080,
-0x60010800, 0x00108004, 0x01080042, 0x00800420, 0x00000000, 0x00000000,
-0x4042a202, 0x04010100, 0x40101004, 0x01010040, 0x10100404, 0x01004050,
-0x14040401, 0x00404010, 0x04040101, 0x40401010, 0x04010100, 0x00101004,
-0x00000a88, 0x00000000, 0x20028202, 0x00188006, 0x01880060, 0x18000620,
-0x88006200, 0x80062001, 0x00620018, 0x06200180, 0x62001880, 0x20018800,
-0x00188006, 0x01980062, 0x00000000, 0x00000000, 0x48028002, 0x00190006,
-0x01900066, 0x19002640, 0x90006400, 0x00060009, 0x02640019, 0x06400998,
-0x64001900, 0x40019002, 0x00198026, 0x03800064, 0x00000000, 0x00000000,
-0x2006a202, 0x0070801c, 0x070801c2, 0x70801c20, 0x0801c200, 0x801c0807,
-0x01c20070, 0x1c200708, 0xc2007080, 0x20070801, 0x0070801c, 0x018801c2,
-0x00000a88, 0x00000000, 0x0080000a, 0x0830020c, 0x830020c0, 0x30020c00,
-0x0020c008, 0x020c0083, 0x20c00830, 0x0c00a300, 0xc0083002, 0x00830038,
-0x0830028c, 0x010020c0, 0x00000000, 0x00000000, 0x00a0a002, 0x0a30028c,
-0xa30028c2, 0x3002ac00, 0x0028c00a, 0x028c00ab, 0x2ac00a30, 0x8c00ab00,
-0xc0023002, 0x00a3002a, 0x0a3082ac, 0x430828c0, 0x00000000, 0x00000000,
-0x20c2a202, 0x0c188306, 0xc1883060, 0x18830620, 0x8830620c, 0x830620c1,
-0x30620c18, 0x0620e180, 0x620c1883, 0x20c18830, 0x0c180386, 0x01883062,
-0x00000a88, 0x00000000, 0x00028002, 0x00100004, 0x01000040, 0x10008400,
-0x02004000, 0x00040011, 0x04400010, 0x04000100, 0x40001000, 0x00010008,
-0x00100004, 0x01000040, 0x00000000, 0x00000000, 0x2210a002, 0x21188846,
-0x11888460, 0x1880c622, 0x88846221, 0x88462201, 0x80622118, 0x46201180,
-0x62211888, 0x22118804, 0x211800c6, 0x01888462, 0x00000000, 0x00000000,
-0x2002a202, 0xa028800a, 0x028880a0, 0x28880a2a, 0x8880a220, 0x880a2202,
-0x80a22028, 0x0a228288, 0xa2a02888, 0x22028880, 0x0028080a, 0x028000a2,
-0x00000a88, 0x00000000, 0x04120002, 0x01081042, 0x10810420, 0x08004200,
-0x80042040, 0x004a0010, 0x04204108, 0x42041281, 0x20410810, 0x04108004,
-0x41081042, 0x00810420, 0x00000000, 0x00000000, 0x80508200, 0x05020140,
-0x50201408, 0x02014080, 0x20140805, 0x01400050, 0x14080502, 0x40805020,
-0x08050201, 0x80502014, 0x05020140, 0x00201408, 0x00000000, 0x00000000,
-0xc0b2a202, 0x0b2b02ca, 0xb2b02cac, 0x2b02cac0, 0xb02cac0b, 0x02c800b2,
-0x2cac0b2b, 0xcac0b290, 0xac0b2b02, 0xc0b2b02c, 0x0b2302ca, 0x02b02cac,
-0x00000a88, 0x00000000, 0x20120002, 0x0138804e, 0x138800e2, 0x38404e20,
-0x8804e200, 0x804e6013, 0x04e20138, 0x0e2013a0, 0xe2003880, 0x20138804,
-0x0132804e, 0x039804e2, 0x00000000, 0x00000000, 0x10c40000, 0x8c484312,
-0xc4863120, 0x48230208, 0x8231218c, 0x231208c0, 0x30218c48, 0x1218c086,
-0x210c4863, 0x18c48230, 0x0c486302, 0x00803121, 0x00000000, 0x00000000,
-0xfffc0000, 0xffcbfff2, 0xfcbfff2f, 0xcbfff2ff, 0xbfff2fff, 0xfff2fffc,
-0xff2fffcb, 0xf2fffcbf, 0x2fffcbff, 0xfffcbfff, 0xffcbfff2, 0x00bfff2f,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xdfb40000, 0xb3437ed0,
-0x3436cd2f, 0x4bedf2fb, 0xbecd0db3, 0xecd2fb34, 0xcd0db34b, 0xd0db7c36,
-0x0db3436c, 0xdb34bedf, 0xfb436df0, 0x0037ed0d, 0x00000000, 0x00000000,
-0x3fcc0000, 0xccc8ff32, 0xcc8f332f, 0xcbf3f2fc, 0xbf3323cc, 0xf332fccc,
-0x3323cccb, 0x323cfc8f, 0x23ccc8f3, 0x3cccbf3f, 0xfcc8f3f2, 0x008ff323,
-0x00000000, 0x00000000, 0x7edc0000, 0xedc9fb72, 0xdc9fb727, 0xc9fb727e,
-0x9fb727ed, 0xfb727ec4, 0xb127edc9, 0x727edc9f, 0x278dc9fb, 0x7edc9fb7,
-0xedc9fb72, 0x0087b727, 0x00000000, 0x00000000, 0x65000000, 0x10508c20,
-0x422ac04a, 0x00843021, 0x08504a14, 0x84202140, 0x50821010, 0x00214018,
-0x02100185, 0x61423850, 0x14508120, 0x00085002, 0x00000000, 0x00000000,
-0xa0024000, 0x00618818, 0x0108208e, 0x00800820, 0x08008220, 0x80482011,
-0x04420162, 0x58201228, 0x02012280, 0xa0100804, 0x05308848, 0x00080682,
-0x00000920, 0x00000000, 0xe3000000, 0x20128c24, 0x032ac04a, 0x908d1423,
-0x08c64a10, 0x8d342302, 0x42422011, 0x24230118, 0x4234518c, 0x21010842,
-0x30708c34, 0x00084042, 0x00000000, 0x00000000, 0xe0100800, 0x21128060,
-0x1f28040e, 0x90814420, 0x08040a01, 0x8140201c, 0x06c22150, 0x64201d18,
-0x4205c180, 0x601e3806, 0x01b08004, 0x00080642, 0x00000000, 0x00000000,
-0x01004000, 0x14202c40, 0x00200008, 0x40080401, 0x0040c400, 0x04080100,
-0x40001100, 0x40010100, 0x40110004, 0x01113044, 0x15000444, 0x01004400,
-0x00000900, 0x00000000, 0x40400010, 0x40032900, 0x423010c4, 0x02010000,
-0x00104804, 0x01048040, 0x10800400, 0x00804000, 0x80040001, 0x00430010,
-0x00000108, 0x00001000, 0x00000000, 0x00000000, 0x83100010, 0x19920d44,
-0x112014c8, 0x010c6403, 0x0005c421, 0x0c784318, 0x44401580, 0x40031100,
-0x4031800c, 0x01130046, 0x21d00c64, 0x41004640, 0x00000000, 0x00000000,
-0x80100000, 0x41830044, 0x18300480, 0x41004400, 0x0005c021, 0x00480014,
-0x06000140, 0x60401800, 0x40010000, 0x00183004, 0x21100060, 0x41000440,
-0x00000000, 0x00000000, 0x21102010, 0x1501854c, 0x50085442, 0xa0854021,
-0x08540615, 0x85402151, 0x54021511, 0x40615008, 0x4215d085, 0x61510854,
-0x25238540, 0x40085482, 0x00000080, 0x00000000, 0xa0100010, 0x2183a05c,
-0x1b2a048a, 0x92807420, 0x0806ca01, 0x80402015, 0x040201f2, 0x60a01008,
-0x82010080, 0xa0130805, 0x0130804c, 0x020805c2, 0x00000000, 0x00000000,
-0x62400010, 0x5043881c, 0x09184042, 0x118c2021, 0x2840c210, 0x84242103,
-0x41421011, 0x20610908, 0x42101084, 0x61090842, 0x00708424, 0x410842c2,
-0x00000000, 0x00000000, 0xe2040800, 0x00b28004, 0x0a180246, 0xb1800820,
-0x28034e00, 0x80042001, 0x03420030, 0x2ca00908, 0x8e003388, 0x200b0802,
-0x00938008, 0x433800ce, 0x00000020, 0x00000000, 0xa1000010, 0x5802a000,
-0x0918408e, 0x63841821, 0x08400e10, 0x84206108, 0x40821010, 0x00210e08,
-0x04108084, 0x210f0840, 0x10608418, 0x4008408e, 0x00000000, 0x00000000,
-0x80440000, 0x24e02100, 0x4430108e, 0x90810c00, 0x00104204, 0x01188042,
-0x10400490, 0x00004300, 0x0a042201, 0x00410010, 0x0410012c, 0x0000128a,
-0x00000000, 0x00000000, 0xc1400000, 0x10120410, 0x0132834a, 0x30801401,
-0x0040c210, 0x04044101, 0x40801010, 0x10010300, 0x46101008, 0x81030043,
-0x30700404, 0x00004246, 0x00000000, 0x00000000, 0x80030800, 0x00122010,
-0x0130018c, 0x10000800, 0x00024000, 0x00044009, 0x02000070, 0x20000300,
-0x42009100, 0x80030002, 0x00300008, 0x000002c8, 0x00000420, 0x00000000,
-0x0808000c, 0x04020002, 0x0b000800, 0x02080200, 0x00000104, 0x0801000b,
-0x00010000, 0x00040b00, 0x01000008, 0x000b0000, 0x00000800, 0x33000001,
-0x00000000, 0x00000000, 0x0308040c, 0x00000101, 0x09080808, 0x0001010b,
-0x08000800, 0x05010b09, 0x000a0000, 0x01030908, 0x0a000005, 0x03090800,
-0x00000503, 0x3108000a, 0x00000010, 0x00000000, 0xced7e000, 0xf8014f19,
-0x9a481a7f, 0x02000201, 0x00080194, 0x00030000, 0x0c000c03, 0x03000000,
-0x000c0300, 0x9800000c, 0x0c020000, 0x00000c00, 0x00000f80, 0x00000000,
-0x0da00000, 0x280303b1, 0x01402208, 0x00000100, 0x02000000, 0x00000000,
-0x08000800, 0x00000000, 0x00000100, 0x00000088, 0x00010000, 0x00000000,
-0x00000000, 0x00000000, 0x82280000, 0x11118713, 0x01414081, 0x44000000,
-0x00000100, 0x00000000, 0x00030044, 0x00000002, 0x01004400, 0x00000000,
-0x00440000, 0x00020002, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0xf4000000, 0x03ffffff, 0x00000000, 0xfffffffc, 0x00000001, 0xfbfffc00,
-0x000000ff, 0xfffc0000, 0x0000fffe, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0xf4000000, 0x03efffff, 0x00000000, 0xfef7fbfc,
-0x00000003, 0xfffffc00, 0x000001fe, 0xfffc0000, 0x0003fdff, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xf8000000, 0x03fbfffb,
-0x00000000, 0xfbfffffc, 0x00000003, 0xfffffc00, 0x000003f3, 0xf7fc0000,
-0x0003f3ff, 0x00000000, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0xfc000000, 0x03bfdfef, 0x00000000, 0xefe7fffc, 0x00000003, 0xf7fffc00,
-0x000003df, 0xfffc0000, 0x0003fcf7, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0xfc000000, 0x03ffffbf, 0x00000000, 0xfffdfffc,
-0x00000003, 0xfffffc00, 0x000003ff, 0xfffc0000, 0x00037fff, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xfc000000, 0x03ffffff,
-0x00000000, 0xfffffffc, 0x00000003, 0xfffffc00, 0x000003ff, 0xfffc0000,
-0x00037fff, 0x00000000, 0x00000000, 0x00000000, 0x62000000, 0x14308420,
-0x4138800e, 0x238c3021, 0x08104234, 0x8534e341, 0xd182b410, 0x10214408,
-0x0614808d, 0x20440850, 0x14530518, 0x00089002, 0x00000000, 0x00000000,
-0xe2000000, 0x00a28000, 0x0038000a, 0xb3805020, 0x18028200, 0x80542012,
-0x04420020, 0x40200208, 0x0a01a080, 0x22000802, 0x01708004, 0x00080202,
-0x00000000, 0x00000000, 0xa1100000, 0x11538464, 0x1928544e, 0x308d4421,
-0x28c44211, 0x84402319, 0x44823010, 0x00210108, 0x4631508c, 0x230008c0,
-0x10108400, 0x00080002, 0x00000000, 0x00000000, 0x60100000, 0x01a08164,
-0x1928144a, 0x33884422, 0x08044201, 0x8844e019, 0x06820140, 0x40201908,
-0x460110a0, 0x20180806, 0x01808040, 0x00080602, 0x00000000, 0x00000000,
-0x02000000, 0x10100428, 0x01008040, 0x500c0401, 0x00c04030, 0x04000310,
-0x80003041, 0x50010100, 0x0811010c, 0x41112044, 0x11100454, 0x00004400,
-0x00000000, 0x00000000, 0x82400010, 0x04230104, 0x4210904c, 0x01010840,
-0x00108004, 0x01048040, 0x90000402, 0x00004200, 0x00040201, 0x80421010,
-0x04000108, 0x40001000, 0x00000000, 0x00000000, 0x41500010, 0x2112014c,
-0x11209444, 0x920d7481, 0x20c74011, 0x06704318, 0x47003181, 0x70011900,
-0x4821800c, 0x431122c7, 0x11900474, 0x4100c700, 0x00000000, 0x00000000,
-0x00100010, 0x21830044, 0x1020844c, 0x12085002, 0x20040001, 0x08580010,
-0x04000180, 0x50001000, 0x40210000, 0x00102004, 0x01000054, 0x41000400,
-0x00000000, 0x00000000, 0x20100010, 0x11028448, 0x5608440a, 0x028c4c21,
-0x08d44631, 0x8444e153, 0x55023520, 0x44235238, 0x0e55d084, 0x21580855,
-0x15e38d48, 0x41085502, 0x00000000, 0x00000000, 0x62100010, 0x05018174,
-0x1d28144e, 0x72816c00, 0x0804ca21, 0x80642017, 0x04420112, 0x6c201708,
-0x4201a081, 0x20180884, 0x01a08064, 0x42080602, 0x00000000, 0x00000000,
-0xa1000010, 0x24828510, 0x0118508a, 0x500d0c23, 0x0ac24230, 0x8d082307,
-0xc0021071, 0x0c230b08, 0xc030108d, 0x21080a40, 0x10100000, 0x41084002,
-0x00000000, 0x00000000, 0xe0480810, 0x20b3812c, 0x0b08128e, 0xa08808c0,
-0x38008600, 0x8104e00a, 0x00820010, 0x10e00038, 0xc2003380, 0xe0033800,
-0x0000a014, 0x423800ce, 0x00000020, 0x00000000, 0x22000010, 0x14028024,
-0x04380006, 0x118d1c21, 0x08c00630, 0x84002102, 0x42023072, 0x00230508,
-0x02108185, 0x61040842, 0x10008c10, 0x40084242, 0x00000000, 0x00000000,
-0xc2400000, 0x00210000, 0x4a20008c, 0x73802c00, 0x12120820, 0x81300041,
-0x10000402, 0x1000c900, 0x000c0200, 0x80481080, 0x04020104, 0x00001180,
-0x00000000, 0x00000000, 0x81440000, 0x14520424, 0x0920434c, 0x508c0c03,
-0x20c04430, 0x8c040305, 0xc24010c0, 0x00030300, 0x4030000c, 0x01012042,
-0x10410c00, 0x00004240, 0x00000000, 0x00000000, 0x40050800, 0x04900114,
-0x01200244, 0x13890800, 0x00014004, 0x00040007, 0x01400032, 0x00000300,
-0x40008000, 0x40010011, 0x00810008, 0x00000000, 0x00000420, 0x00000000,
-0x08080000, 0x00000802, 0x0b000401, 0x00000000, 0x00000000, 0x0800000b,
-0x00010000, 0x00000b00, 0x01000008, 0x000b0000, 0x00000800, 0x03000001,
-0x00000000, 0x00000000, 0x03083c3c, 0x00000501, 0x0908080a, 0x00050303,
-0x08000a00, 0x05030309, 0x000a0000, 0x010f0908, 0x0a000005, 0x0b090800,
-0x00000503, 0xf108000a, 0x000000f0, 0x00000000, 0x7b1c0000, 0xdc00fb8d,
-0x01f35c9c, 0x03980300, 0x01900000, 0x00030000, 0x0c000403, 0x03000000,
-0x00000300, 0x00000000, 0x0c030001, 0x00000c00, 0x00000000, 0x00000000,
-0x82e80000, 0x5002a165, 0x0030cc35, 0x01000000, 0x00800008, 0x00010000,
-0x08000001, 0x01000000, 0x02080100, 0x00000008, 0x08010001, 0x00008800,
-0x00000000, 0x00000000, 0x24180000, 0x15101b22, 0x01142921, 0x44000000,
-0x00000100, 0x00000000, 0x00010044, 0x00000001, 0x00004400, 0x00000200,
-0x00440000, 0x00000001, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0x78000000, 0x03ef7be7, 0x00000000, 0x7ffffff8, 0x00000003, 0x677e7c00,
-0x0000026f, 0x6bfc0000, 0x0002fff5, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0x78000000, 0x03eb7fef, 0x00000000, 0xe7e66e7c,
-0x00000003, 0x777ffc00, 0x000003fd, 0x5cfc0000, 0x0003fefe, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xf8000000, 0x03fbfbf7,
-0x00000000, 0xf3f1f9f4, 0x00000003, 0xfdf3f800, 0x000003f2, 0xfdf80000,
-0x0003fefd, 0x00000000, 0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff,
-0xfc000000, 0x035fffff, 0x00000000, 0xfffffffc, 0x00000003, 0xfffffc00,
-0x000003ff, 0xfffc0000, 0x0000fff7, 0x00000000, 0x00000000, 0x00000000,
-0xfffc0000, 0x0003ffff, 0x9c000000, 0x03bfffdf, 0x00000000, 0xfffffffc,
-0x00000001, 0xffbffc00, 0x000003ff, 0xfffc0000, 0x0003ffff, 0x00000000,
-0x00000000, 0x00000000, 0xfffc0000, 0x0003ffff, 0xfc000000, 0x03bfffff,
-0x00000000, 0xffffbffc, 0x00000003, 0xfffffc00, 0x000003ff, 0xfffc0000,
-0x0003ffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x8004000c, 0x00000040, 0x71c2000c, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x8004000c, 0x00004040, 0x01c2000c, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x8000000c, 0x18c80000, 0x8001000c, 0xc0000000, 0x7002000c, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-0x00000000, 0x8001000c, 0xa0000000, 0x8005000c, 0x00000000, 0x8000000c,
-0xe9d60000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-};
diff --git a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c
index b99a12f836eb..0d4099ff6a7d 100644
--- a/sound/pci/rme9652/rme9652.c
+++ b/sound/pci/rme9652/rme9652.c
@@ -2403,7 +2403,7 @@ static int snd_rme9652_playback_open(snd_pcm_substream_t *substream)
SNDRV_PCM_HW_PARAM_CHANNELS, -1);
rme9652->creg_spdif_stream = rme9652->creg_spdif;
- rme9652->spdif_ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ rme9652->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id);
return 0;
@@ -2421,7 +2421,7 @@ static int snd_rme9652_playback_release(snd_pcm_substream_t *substream)
spin_unlock_irqrestore(&rme9652->lock, flags);
- rme9652->spdif_ctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ rme9652->spdif_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(rme9652->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &rme9652->spdif_ctl->id);
return 0;
diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c
index a845ffe36288..e2aff9e722a7 100644
--- a/sound/pci/trident/trident_main.c
+++ b/sound/pci/trident/trident_main.c
@@ -1881,7 +1881,7 @@ static int snd_trident_spdif_open(snd_pcm_substream_t * substream)
runtime->hw = snd_trident_spdif_7018;
}
- trident->spdif_pcm_ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ trident->spdif_pcm_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(trident->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &trident->spdif_pcm_ctl->id);
@@ -1920,7 +1920,7 @@ static int snd_trident_spdif_close(snd_pcm_substream_t * substream)
outl(temp, TRID_REG(trident, SI_SERIAL_INTF_CTRL));
}
spin_unlock_irq(&trident->reg_lock);
- trident->spdif_pcm_ctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ trident->spdif_pcm_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(trident->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &trident->spdif_pcm_ctl->id);
return 0;
@@ -2677,7 +2677,7 @@ static int snd_trident_pcm_vol_control_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
trident_t *trident = snd_kcontrol_chip(kcontrol);
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
if (trident->device == TRIDENT_DEVICE_ID_SI7018) {
ucontrol->value.integer.value[0] = 1023 - mix->vol;
@@ -2692,7 +2692,7 @@ static int snd_trident_pcm_vol_control_put(snd_kcontrol_t * kcontrol,
{
unsigned long flags;
trident_t *trident = snd_kcontrol_chip(kcontrol);
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
unsigned int val;
int change = 0;
@@ -2715,6 +2715,7 @@ static snd_kcontrol_new_t snd_trident_pcm_vol_control __devinitdata =
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "PCM Front Playback Volume",
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
+ .count = 32,
.info = snd_trident_pcm_vol_control_info,
.get = snd_trident_pcm_vol_control_get,
.put = snd_trident_pcm_vol_control_put,
@@ -2738,7 +2739,8 @@ static int snd_trident_pcm_pan_control_info(snd_kcontrol_t *kcontrol, snd_ctl_el
static int snd_trident_pcm_pan_control_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ trident_t *trident = snd_kcontrol_chip(kcontrol);
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
ucontrol->value.integer.value[0] = mix->pan;
if (ucontrol->value.integer.value[0] & 0x40) {
@@ -2754,7 +2756,7 @@ static int snd_trident_pcm_pan_control_put(snd_kcontrol_t * kcontrol,
{
unsigned long flags;
trident_t *trident = snd_kcontrol_chip(kcontrol);
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
unsigned char val;
int change = 0;
@@ -2776,6 +2778,7 @@ static snd_kcontrol_new_t snd_trident_pcm_pan_control __devinitdata =
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "PCM Pan Playback Control",
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
+ .count = 32,
.info = snd_trident_pcm_pan_control_info,
.get = snd_trident_pcm_pan_control_get,
.put = snd_trident_pcm_pan_control_put,
@@ -2799,7 +2802,8 @@ static int snd_trident_pcm_rvol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_e
static int snd_trident_pcm_rvol_control_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ trident_t *trident = snd_kcontrol_chip(kcontrol);
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
ucontrol->value.integer.value[0] = 127 - mix->rvol;
return 0;
@@ -2810,7 +2814,7 @@ static int snd_trident_pcm_rvol_control_put(snd_kcontrol_t * kcontrol,
{
unsigned long flags;
trident_t *trident = snd_kcontrol_chip(kcontrol);
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
unsigned short val;
int change = 0;
@@ -2829,6 +2833,7 @@ static snd_kcontrol_new_t snd_trident_pcm_rvol_control __devinitdata =
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "PCM Reverb Playback Volume",
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
+ .count = 32,
.info = snd_trident_pcm_rvol_control_info,
.get = snd_trident_pcm_rvol_control_get,
.put = snd_trident_pcm_rvol_control_put,
@@ -2852,7 +2857,8 @@ static int snd_trident_pcm_cvol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_e
static int snd_trident_pcm_cvol_control_get(snd_kcontrol_t * kcontrol,
snd_ctl_elem_value_t * ucontrol)
{
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ trident_t *trident = snd_kcontrol_chip(kcontrol);
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
ucontrol->value.integer.value[0] = 127 - mix->cvol;
return 0;
@@ -2863,7 +2869,7 @@ static int snd_trident_pcm_cvol_control_put(snd_kcontrol_t * kcontrol,
{
unsigned long flags;
trident_t *trident = snd_kcontrol_chip(kcontrol);
- snd_trident_pcm_mixer_t *mix = (snd_trident_pcm_mixer_t *)kcontrol->private_value;
+ snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
unsigned short val;
int change = 0;
@@ -2882,28 +2888,32 @@ static snd_kcontrol_new_t snd_trident_pcm_cvol_control __devinitdata =
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "PCM Chorus Playback Volume",
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
+ .count = 32,
.info = snd_trident_pcm_cvol_control_info,
.get = snd_trident_pcm_cvol_control_get,
.put = snd_trident_pcm_cvol_control_put,
};
-static void snd_trident_notify_pcm_change1(snd_card_t * card, snd_kcontrol_t *kctl, int activate)
+static void snd_trident_notify_pcm_change1(snd_card_t * card, snd_kcontrol_t *kctl, int num, int activate)
{
+ snd_ctl_elem_id_t id;
+
snd_runtime_check(kctl != NULL, return);
if (activate)
- kctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ kctl->vd[num].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
else
- kctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ kctl->vd[num].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE |
- SNDRV_CTL_EVENT_MASK_INFO, &kctl->id);
+ SNDRV_CTL_EVENT_MASK_INFO,
+ snd_ctl_build_ioff(&id, kctl, num));
}
-static void snd_trident_notify_pcm_change(snd_card_t * card, snd_trident_pcm_mixer_t * tmix, int activate)
+static void snd_trident_notify_pcm_change(trident_t *trident, snd_trident_pcm_mixer_t *tmix, int num, int activate)
{
- snd_trident_notify_pcm_change1(card, tmix->ctl_vol, activate);
- snd_trident_notify_pcm_change1(card, tmix->ctl_pan, activate);
- snd_trident_notify_pcm_change1(card, tmix->ctl_rvol, activate);
- snd_trident_notify_pcm_change1(card, tmix->ctl_cvol, activate);
+ snd_trident_notify_pcm_change1(trident->card, trident->ctl_vol, num, activate);
+ snd_trident_notify_pcm_change1(trident->card, trident->ctl_pan, num, activate);
+ snd_trident_notify_pcm_change1(trident->card, trident->ctl_rvol, num, activate);
+ snd_trident_notify_pcm_change1(trident->card, trident->ctl_cvol, num, activate);
}
static int snd_trident_pcm_mixer_build(trident_t *trident, snd_trident_voice_t *voice, snd_pcm_substream_t *substream)
@@ -2917,7 +2927,7 @@ static int snd_trident_pcm_mixer_build(trident_t *trident, snd_trident_voice_t *
tmix->pan = T4D_DEFAULT_PCM_PAN;
tmix->rvol = T4D_DEFAULT_PCM_RVOL;
tmix->cvol = T4D_DEFAULT_PCM_CVOL;
- snd_trident_notify_pcm_change(trident->card, tmix, 1);
+ snd_trident_notify_pcm_change(trident, tmix, substream->number, 1);
return 0;
}
@@ -2928,7 +2938,7 @@ static int snd_trident_pcm_mixer_free(trident_t *trident, snd_trident_voice_t *v
snd_assert(trident != NULL && substream != NULL, return -EINVAL);
tmix = &trident->pcm_mixer[substream->number];
tmix->voice = NULL;
- snd_trident_notify_pcm_change(trident->card, tmix, 0);
+ snd_trident_notify_pcm_change(trident, tmix, substream->number, 0);
return 0;
}
@@ -3007,34 +3017,26 @@ static int __devinit snd_trident_mixer(trident_t * trident, int pcm_spdif_device
tmix = &trident->pcm_mixer[idx];
tmix->voice = NULL;
- if ((kctl = tmix->ctl_vol = snd_ctl_new1(&snd_trident_pcm_vol_control, trident)) == NULL)
- return -ENOMEM;
- kctl->private_value = (long)tmix;
- kctl->id.index = idx;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
+ }
+ if ((trident->ctl_vol = snd_ctl_new1(&snd_trident_pcm_vol_control, trident)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, trident->ctl_vol)))
+ return err;
- if ((kctl = tmix->ctl_pan = snd_ctl_new1(&snd_trident_pcm_pan_control, trident)) == NULL)
- return -ENOMEM;
- kctl->private_value = (long)tmix;
- kctl->id.index = idx;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
+ if ((trident->ctl_pan = snd_ctl_new1(&snd_trident_pcm_pan_control, trident)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, trident->ctl_pan)))
+ return err;
- if ((kctl = tmix->ctl_rvol = snd_ctl_new1(&snd_trident_pcm_rvol_control, trident)) == NULL)
- return -ENOMEM;
- kctl->private_value = (long)tmix;
- kctl->id.index = idx;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
+ if ((trident->ctl_rvol = snd_ctl_new1(&snd_trident_pcm_rvol_control, trident)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, trident->ctl_rvol)))
+ return err;
- if ((kctl = tmix->ctl_cvol = snd_ctl_new1(&snd_trident_pcm_cvol_control, trident)) == NULL)
- return -ENOMEM;
- kctl->private_value = (long)tmix;
- kctl->id.index = idx;
- if ((err = snd_ctl_add(card, kctl)))
- return err;
- }
+ if ((trident->ctl_cvol = snd_ctl_new1(&snd_trident_pcm_cvol_control, trident)) == NULL)
+ return -ENOMEM;
+ if ((err = snd_ctl_add(card, trident->ctl_cvol)))
+ return err;
if (trident->device == TRIDENT_DEVICE_ID_NX) {
if ((err = snd_ctl_add(card, kctl = snd_ctl_new1(&snd_trident_ac97_rear_control, trident))) < 0)
@@ -3187,7 +3189,7 @@ inline static void do_delay(trident_t *chip)
static int snd_trident_sis_reset(trident_t *trident)
{
- signed long end_time;
+ unsigned long end_time;
unsigned int i;
int r;
@@ -3364,7 +3366,7 @@ static void snd_trident_stop_all_voices(trident_t *trident)
static int snd_trident_4d_dx_init(trident_t *trident)
{
struct pci_dev *pci = trident->pci;
- signed long end_time;
+ unsigned long end_time;
/* reset the legacy configuration and whole audio/wavetable block */
pci_write_config_dword(pci, 0x40, 0); /* DDMA */
@@ -3404,7 +3406,7 @@ static int snd_trident_4d_dx_init(trident_t *trident)
static int snd_trident_4d_nx_init(trident_t *trident)
{
struct pci_dev *pci = trident->pci;
- signed long end_time;
+ unsigned long end_time;
/* reset the legacy configuration and whole audio/wavetable block */
pci_write_config_dword(pci, 0x40, 0); /* DDMA */
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index 6a077be2fac2..f0ec3188f401 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -208,13 +208,11 @@ DEFINE_VIA_REGSET(FM, 0x20);
#define VIA8233_REG_SGD_STAT_EOL (1<<1)
#define VIA8233_REG_SGD_STAT_STOP (1<<2)
#define VIA8233_REG_SGD_STAT_ACTIVE (1<<3)
-#define VIA8233_REG_SGD_SDX0_SHIFT 0
-#define VIA8233_REG_SGD_SDX1_SHIFT 4
-#define VIA8233_REG_SGD_SDX2_SHIFT 8
-#define VIA8233_REG_SGD_SDX3_SHIFT 12
-#define VIA8233_REG_SGD_MCHAN_SHIFT 16
-#define VIA8233_REG_SGD_REC0_SHIFT 24
-#define VIA8233_REG_SGD_REC1_SHIFT 28
+#define VIA8233_INTR_MASK(chan) ((VIA8233_REG_SGD_STAT_FLAG|VIA8233_REG_SGD_STAT_EOL) << ((chan) * 4))
+#define VIA8233_REG_SGD_CHAN_SDX 0
+#define VIA8233_REG_SGD_CHAN_MULTI 4
+#define VIA8233_REG_SGD_CHAN_REC 6
+#define VIA8233_REG_SGD_CHAN_REC1 7
#define VIA_REG_GPI_STATUS 0x88
#define VIA_REG_GPI_INTR 0x8c
@@ -230,7 +228,7 @@ DEFINE_VIA_REGSET(CAPTURE_8233, 0x60);
#define VIA_REG_MULTPLAY_FMT_8BIT 0x00
#define VIA_REG_MULTPLAY_FMT_16BIT 0x80
#define VIA_REG_MULTPLAY_FMT_CH_MASK 0x70 /* # channels << 4 (valid = 1,2,4,6) */
-#define VIA_REG_OFS_CAPTURE_FIFO 0x62 /* byte - bit 6 = fifo enable */
+#define VIA_REG_OFS_CAPTURE_FIFO 0x02 /* byte - bit 6 = fifo enable */
#define VIA_REG_CAPTURE_FIFO_ENABLE 0x40
#define VIA_REG_CAPTURE_CHANNEL 0x63 /* byte - input select */
@@ -419,13 +417,14 @@ struct _snd_via82xx {
unsigned long port;
struct resource *res_port;
+ struct resource *mpu_res;
int chip_type;
unsigned char revision;
unsigned char old_legacy;
unsigned char old_legacy_cfg;
- unsigned char playback_volume[2]; /* for VIA8233/C/8235; default = 0 */
+ unsigned char playback_volume[4][2]; /* for VIA8233/C/8235; default = 0 */
unsigned int intr_mask; /* SGD_SHADOW mask to check interrupts */
@@ -582,6 +581,11 @@ static void snd_via82xx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
unsigned int i;
spin_lock(&chip->reg_lock);
+#if 0
+ /* FIXME: does it work on via823x? */
+ if (chip->chip_type != TYPE_VIA686)
+ goto _skip_sgd;
+#endif
status = inl(VIAREG(chip, SGD_SHADOW));
if (! (status & chip->intr_mask)) {
spin_unlock(&chip->reg_lock);
@@ -590,20 +594,21 @@ static void snd_via82xx_interrupt(int irq, void *dev_id, struct pt_regs *regs)
snd_mpu401_uart_interrupt(irq, chip->rmidi->private_data, regs);
return;
}
+// _skip_sgd:
/* check status for each stream */
for (i = 0; i < chip->num_devs; i++) {
viadev_t *viadev = &chip->devs[i];
- unsigned char status = inb(VIADEV_REG(viadev, OFFSET_STATUS));
- status &= (VIA_REG_STAT_EOL|VIA_REG_STAT_FLAG);
- if (! status)
+ unsigned char c_status = inb(VIADEV_REG(viadev, OFFSET_STATUS));
+ c_status &= (VIA_REG_STAT_EOL|VIA_REG_STAT_FLAG|VIA_REG_STAT_STOPPED);
+ if (! c_status)
continue;
if (viadev->substream && viadev->running) {
spin_unlock(&chip->reg_lock);
snd_pcm_period_elapsed(viadev->substream);
spin_lock(&chip->reg_lock);
}
- outb(status, VIADEV_REG(viadev, OFFSET_STATUS)); /* ack */
+ outb(c_status, VIADEV_REG(viadev, OFFSET_STATUS)); /* ack */
}
spin_unlock(&chip->reg_lock);
}
@@ -843,12 +848,11 @@ static int via_lock_rate(struct via_rate_lock *rec, int rate)
int changed = 0;
spin_lock(&rec->lock);
- if (rec->rate) {
- if (rec->rate != rate && rec->used > 1) {
+ if (rec->rate != rate) {
+ if (rec->rate && rec->used > 1) { /* already set */
spin_unlock(&rec->lock);
return -EINVAL;
}
- } else {
rec->rate = rate;
changed = 1;
}
@@ -873,12 +877,15 @@ static int snd_via8233_playback_prepare(snd_pcm_substream_t *substream)
snd_ac97_set_rate(chip->ac97, AC97_PCM_FRONT_DAC_RATE, runtime->rate);
snd_ac97_set_rate(chip->ac97, AC97_SPDIF, runtime->rate);
}
- rbits = (0xfffff / 48000) * runtime->rate + ((0xfffff % 48000) * runtime->rate) / 48000;
+ if (chip->chip_type == TYPE_VIA8233A)
+ rbits = 0;
+ else
+ rbits = (0xfffff / 48000) * runtime->rate + ((0xfffff % 48000) * runtime->rate) / 48000;
snd_assert((rbits & ~0xfffff) == 0, return -EINVAL);
snd_via82xx_channel_reset(chip, viadev);
snd_via82xx_set_table_ptr(chip, viadev);
- outb(chip->playback_volume[0], VIADEV_REG(viadev, OFS_PLAYBACK_VOLUME_L));
- outb(chip->playback_volume[1], VIADEV_REG(viadev, OFS_PLAYBACK_VOLUME_R));
+ outb(chip->playback_volume[viadev->reg_offset / 0x10][0], VIADEV_REG(viadev, OFS_PLAYBACK_VOLUME_L));
+ outb(chip->playback_volume[viadev->reg_offset / 0x10][1], VIADEV_REG(viadev, OFS_PLAYBACK_VOLUME_R));
outl((runtime->format == SNDRV_PCM_FORMAT_S16_LE ? VIA8233_REG_TYPE_16BIT : 0) | /* format */
(runtime->channels > 1 ? VIA8233_REG_TYPE_STEREO : 0) | /* stereo */
rbits | /* rate */
@@ -912,16 +919,20 @@ static int snd_via8233_multi_prepare(snd_pcm_substream_t *substream)
fmt = (runtime->format == SNDRV_PCM_FORMAT_S16_LE) ? VIA_REG_MULTPLAY_FMT_16BIT : VIA_REG_MULTPLAY_FMT_8BIT;
fmt |= runtime->channels << 4;
outb(fmt, VIADEV_REG(viadev, OFS_MULTPLAY_FORMAT));
- /* set sample number to slot 3, 4, 7, 8, 6, 9 (for VIA8233/C,8235) */
- /* corresponding to FL, FR, RL, RR, C, LFE ?? */
- switch (runtime->channels) {
- case 1: slots = (1<<0) | (1<<4); break;
- case 2: slots = (1<<0) | (2<<4); break;
- case 3: slots = (1<<0) | (2<<4) | (5<<8); break;
- case 4: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12); break;
- case 5: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12) | (5<<16); break;
- case 6: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12) | (5<<16) | (6<<20); break;
- default: slots = 0; break;
+ if (chip->chip_type == TYPE_VIA8233A)
+ slots = 0;
+ else {
+ /* set sample number to slot 3, 4, 7, 8, 6, 9 (for VIA8233/C,8235) */
+ /* corresponding to FL, FR, RL, RR, C, LFE ?? */
+ switch (runtime->channels) {
+ case 1: slots = (1<<0) | (1<<4); break;
+ case 2: slots = (1<<0) | (2<<4); break;
+ case 3: slots = (1<<0) | (2<<4) | (5<<8); break;
+ case 4: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12); break;
+ case 5: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12) | (5<<16); break;
+ case 6: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12) | (5<<16) | (6<<20); break;
+ default: slots = 0; break;
+ }
}
/* STOP index is never reached */
outl(0xff000000 | slots, VIADEV_REG(viadev, OFFSET_STOP_IDX));
@@ -1398,31 +1409,39 @@ static int snd_via8233_dxs_volume_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_in
static int snd_via8233_dxs_volume_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
via82xx_t *chip = snd_kcontrol_chip(kcontrol);
- ucontrol->value.integer.value[0] = 0xff - chip->playback_volume[0];
- ucontrol->value.integer.value[1] = 0xff - chip->playback_volume[1];
+ unsigned int idx = snd_ctl_get_ioff(kcontrol, &ucontrol->id);
+ ucontrol->value.integer.value[0] = 0xff - chip->playback_volume[idx][0];
+ ucontrol->value.integer.value[1] = 0xff - chip->playback_volume[idx][1];
return 0;
}
static int snd_via8233_dxs_volume_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
{
via82xx_t *chip = snd_kcontrol_chip(kcontrol);
+ unsigned int idx = snd_ctl_get_ioff(kcontrol, &ucontrol->id);
+ unsigned long port = chip->port + 0x10 * idx;
unsigned char val;
int change;
val = 0xff - ucontrol->value.integer.value[0];
- change = val != chip->playback_volume[0];
- if (val)
- chip->playback_volume[0] = val;
+ change = val != chip->playback_volume[idx][0];
+ if (change) {
+ chip->playback_volume[idx][0] = val;
+ outb(val, port + VIA_REG_OFS_PLAYBACK_VOLUME_L);
+ }
val = 0xff - ucontrol->value.integer.value[1];
- change |= val != chip->playback_volume[1];
- if (val)
- chip->playback_volume[1] = val;
+ change |= val != chip->playback_volume[idx][1];
+ if (change) {
+ chip->playback_volume[idx][1] = val;
+ outb(val, port + VIA_REG_OFS_PLAYBACK_VOLUME_R);
+ }
return change;
}
static snd_kcontrol_new_t snd_via8233_dxs_volume_control __devinitdata = {
.name = "VIA DXS Playback Volume",
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+ .count = 4,
.info = snd_via8233_dxs_volume_info,
.get = snd_via8233_dxs_volume_get,
.put = snd_via8233_dxs_volume_put,
@@ -1454,10 +1473,11 @@ static int __devinit snd_via82xx_mixer_new(via82xx_t *chip)
ac97.private_data = chip;
ac97.private_free = snd_via82xx_mixer_free_ac97;
ac97.clock = chip->ac97_clock;
+ ac97.pci = chip->pci;
if ((err = snd_ac97_mixer(chip->card, &ac97, &chip->ac97)) < 0)
return err;
- snd_ac97_tune_hardware(chip->ac97, chip->pci, ac97_quirks);
+ snd_ac97_tune_hardware(chip->ac97, ac97_quirks);
if (chip->chip_type != TYPE_VIA686) {
/* use slot 10/11 */
@@ -1533,9 +1553,11 @@ static int snd_via8233_init_misc(via82xx_t *chip, int dev)
err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_via8233_dxs3_spdif_control, chip));
if (err < 0)
return err;
- err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_via8233_dxs_volume_control, chip));
- if (err < 0)
- return err;
+ if (chip->chip_type != TYPE_VIA8233A) {
+ err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_via8233_dxs_volume_control, chip));
+ if (err < 0)
+ return err;
+ }
/* select spdif data slot 10/11 */
pci_read_config_byte(chip->pci, VIA8233_SPDIF_CTRL, &val);
@@ -1556,25 +1578,20 @@ static int snd_via686_init_misc(via82xx_t *chip, int dev)
legacy &= ~VIA_FUNC_ENABLE_GAME; /* disable joystick */
if (chip->revision >= VIA_REV_686_H) {
rev_h = 1;
- if (check_region(pci_resource_start(chip->pci, 2), 4))
- legacy &= ~VIA_FUNC_MIDI_PNP; /* disable PCI I/O 2 */
- else
- legacy |= VIA_FUNC_MIDI_PNP; /* enable PCI I/O 2 */
- }
- pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, legacy);
- pci_write_config_byte(chip->pci, VIA_PNP_CONTROL, legacy_cfg);
- if (rev_h) {
if (mpu_port[dev] >= 0x200) { /* force MIDI */
- pci_write_config_dword(chip->pci, 0x18, (mpu_port[dev] & 0xfffc) | 0x01);
- } else if (legacy & VIA_FUNC_MIDI_PNP) {
+ mpu_port[dev] &= 0xfffc;
+ pci_write_config_dword(chip->pci, 0x18, mpu_port[dev] | 0x01);
+ } else {
mpu_port[dev] = pci_resource_start(chip->pci, 2);
- if (mpu_port[dev] < 0x200) /* bad value */
- legacy &= ~VIA_FUNC_ENABLE_MIDI; /* disable MIDI */
}
- if (mpu_port[dev] >= 0x200)
+ if (mpu_port[dev] >= 0x200 &&
+ (chip->mpu_res = request_region(pci_resource_start(chip->pci, 2), 2,
+ "VIA82xx MPU401")) != NULL) {
legacy |= VIA_FUNC_ENABLE_MIDI;
- else
+ } else {
+ mpu_port[dev] = -1;
legacy &= ~VIA_FUNC_ENABLE_MIDI;
+ }
} else {
switch (mpu_port[dev]) { /* force MIDI */
case 0x300:
@@ -1583,7 +1600,6 @@ static int snd_via686_init_misc(via82xx_t *chip, int dev)
case 0x330:
legacy_cfg &= ~(3 << 2);
legacy_cfg |= (mpu_port[dev] & 0x0030) >> 2;
- legacy |= VIA_FUNC_ENABLE_MIDI;
break;
default: /* no, use BIOS settings */
if (legacy & VIA_FUNC_ENABLE_MIDI)
@@ -1591,22 +1607,28 @@ static int snd_via686_init_misc(via82xx_t *chip, int dev)
break;
}
}
- if (legacy & VIA_FUNC_ENABLE_MIDI) {
- if (check_region(mpu_port[dev], 2)) {
- printk(KERN_WARNING "unable to get MPU-401 port at 0x%lx, skipping\n", mpu_port[dev]);
- legacy &= ~VIA_FUNC_ENABLE_MIDI;
- } else if (snd_mpu401_uart_new(chip->card, 0, MPU401_HW_VIA686A,
- mpu_port[dev], 0,
- chip->irq, 0,
- &chip->rmidi) < 0) {
- printk(KERN_WARNING "unable to initialize MPU-401 at 0x%lx, skipping\n", mpu_port[dev]);
- legacy &= ~VIA_FUNC_ENABLE_MIDI;
- }
+ if (mpu_port[dev] >= 0x200 &&
+ (chip->mpu_res = request_region(mpu_port[dev], 2, "VIA82xx MPU401")) != NULL) {
+ if (rev_h)
+ legacy |= VIA_FUNC_MIDI_PNP; /* enable PCI I/O 2 */
+ legacy |= VIA_FUNC_ENABLE_MIDI;
+ } else {
+ if (rev_h)
+ legacy &= ~VIA_FUNC_MIDI_PNP; /* disable PCI I/O 2 */
+ legacy &= ~VIA_FUNC_ENABLE_MIDI;
+ mpu_port[dev] = -1;
}
pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, legacy);
pci_write_config_byte(chip->pci, VIA_PNP_CONTROL, legacy_cfg);
- if (legacy & VIA_FUNC_ENABLE_MIDI) {
- legacy &= ~VIA_FUNC_MIDI_IRQMASK; /* enable MIDI interrupt */
+ if (chip->mpu_res) {
+ if (snd_mpu401_uart_new(chip->card, 0, MPU401_HW_VIA686A,
+ mpu_port[dev], 1,
+ chip->irq, 0, &chip->rmidi) < 0) {
+ printk(KERN_WARNING "unable to initialize MPU-401 at 0x%lx, skipping\n", mpu_port[dev]);
+ legacy &= ~VIA_FUNC_ENABLE_MIDI;
+ } else {
+ legacy &= ~VIA_FUNC_MIDI_IRQMASK; /* enable MIDI interrupt */
+ }
pci_write_config_byte(chip->pci, VIA_FUNC_ENABLE, legacy);
}
@@ -1727,6 +1749,10 @@ static int snd_via82xx_free(via82xx_t *chip)
snd_via82xx_channel_reset(chip, &chip->devs[i]);
synchronize_irq(chip->irq);
__end_hw:
+ if (chip->mpu_res) {
+ release_resource(chip->mpu_res);
+ kfree_nocheck(chip->mpu_res);
+ }
if (chip->res_port) {
release_resource(chip->res_port);
kfree_nocheck(chip->res_port);
diff --git a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c
index 2ba1a735470c..0d87f9f29e44 100644
--- a/sound/pci/ymfpci/ymfpci.c
+++ b/sound/pci/ymfpci/ymfpci.c
@@ -112,25 +112,30 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci,
}
legacy_ctrl = 0;
- legacy_ctrl2 = 0x0800; /* SMOD = 01 */
+ legacy_ctrl2 = 0x0800; /* SBEN = 0, SMOD = 01, LAD = 0 */
if (pci_id->device >= 0x0010) { /* YMF 744/754 */
- if (fm_port[dev] < 0)
- fm_port[dev] = pci_resource_start(pci, 1);
- else if (check_region(fm_port[dev], 4))
- fm_port[dev] = -1;
- if (fm_port[dev] >= 0) {
- legacy_ctrl |= 2;
+ if (fm_port[dev] < 0) {
+ // fm_port[dev] = pci_resource_start(pci, 1);
+ u16 addr;
+ pci_read_config_word(pci, PCIR_DSXG_FMBASE, &addr);
+ fm_port[dev] = addr;
+ }
+ if (fm_port[dev] >= 0 &&
+ (chip->fm_res = request_region(fm_port[dev], 4, "YMFPCI OPL3")) != NULL) {
+ legacy_ctrl |= YMFPCI_LEGACY_FMEN;
pci_write_config_word(pci, PCIR_DSXG_FMBASE, fm_port[dev]);
}
- if (mpu_port[dev] < 0)
- mpu_port[dev] = pci_resource_start(pci, 1) + 0x20;
- else if (check_region(mpu_port[dev], 2))
- mpu_port[dev] = -1;
- if (mpu_port[dev] >= 0) {
- legacy_ctrl |= 8;
+ if (mpu_port[dev] < 0) {
+ // mpu_port[dev] = pci_resource_start(pci, 1) + 0x20;
+ u16 addr;
+ pci_read_config_word(pci, PCIR_DSXG_MPU401BASE, &addr);
+ mpu_port[dev] = addr;
+ }
+ if (mpu_port[dev] >= 0 &&
+ (chip->mpu_res = request_region(mpu_port[dev], 2, "YMFPCI MPU401")) != NULL) {
+ legacy_ctrl |= YMFPCI_LEGACY_MEN;
pci_write_config_word(pci, PCIR_DSXG_MPU401BASE, mpu_port[dev]);
- //snd_printd("MPU401 supported on 0x%lx\n", mpu_port[dev]);
}
} else {
switch (fm_port[dev]) {
@@ -140,10 +145,11 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci,
case 0x3a8: legacy_ctrl2 |= 3; break;
default: fm_port[dev] = -1; break;
}
- if (fm_port[dev] > 0 && check_region(fm_port[dev], 4) == 0)
- legacy_ctrl |= 2;
- else {
- legacy_ctrl2 &= ~3;
+ if (fm_port[dev] > 0 &&
+ (chip->fm_res = request_region(fm_port[dev], 4, "YMFPCI OPL3")) != NULL) {
+ legacy_ctrl |= YMFPCI_LEGACY_FMEN;
+ } else {
+ legacy_ctrl2 &= ~YMFPCI_LEGACY2_FMIO;
fm_port[dev] = -1;
}
switch (mpu_port[dev]) {
@@ -153,23 +159,20 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci,
case 0x334: legacy_ctrl2 |= 3 << 4; break;
default: mpu_port[dev] = -1; break;
}
- if (mpu_port[dev] > 0 && check_region(mpu_port[dev], 2) == 0) {
- //snd_printd("MPU401 supported on 0x%lx\n", mpu_port[dev]);
- legacy_ctrl |= 8;
+ if (mpu_port[dev] > 0 &&
+ (chip->mpu_res = request_region(mpu_port[dev], 2, "YMFPCI MPU401")) != NULL) {
+ legacy_ctrl |= YMFPCI_LEGACY_MEN;
} else {
- legacy_ctrl2 &= ~(3 << 4);
+ legacy_ctrl2 &= ~YMFPCI_LEGACY2_MPUIO;
mpu_port[dev] = -1;
}
}
- if (mpu_port[dev] > 0) {
- // this bit is for legacy mpu irqs
- // legacy_ctrl |= 0x10; /* MPU401 irq enable */
- legacy_ctrl2 |= 1 << 15; /* IMOD */
+ if (chip->mpu_res) {
+ legacy_ctrl |= YMFPCI_LEGACY_MIEN; /* FIXME: do we need this? */
+ legacy_ctrl2 |= YMFPCI_LEGACY2_IMOD;
}
pci_read_config_word(pci, PCIR_DSXG_LEGACY, &old_legacy_ctrl);
- //snd_printdd("legacy_ctrl = 0x%x\n", legacy_ctrl);
pci_write_config_word(pci, PCIR_DSXG_LEGACY, legacy_ctrl);
- //snd_printdd("legacy_ctrl2 = 0x%x\n", legacy_ctrl2);
pci_write_config_word(pci, PCIR_DSXG_ELEGACY, legacy_ctrl2);
if ((err = snd_ymfpci_create(card, pci,
old_legacy_ctrl,
@@ -197,25 +200,22 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci,
snd_card_free(card);
return err;
}
- if (mpu_port[dev] > 0) {
+ if (chip->mpu_res) {
if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_YMFPCI,
- mpu_port[dev], 0,
+ mpu_port[dev], 1,
pci->irq, 0, &chip->rawmidi)) < 0) {
printk(KERN_WARNING "ymfpci: cannot initialize MPU401 at 0x%lx, skipping...\n", mpu_port[dev]);
- mpu_port[dev] = 0;
- // only for legacy mpu irqs
- // legacy_ctrl &= ~0x10; /* disable MPU401 irq */
- // pci_write_config_word(pci, PCIR_DSXG_LEGACY, legacy_ctrl);
+ legacy_ctrl &= ~YMFPCI_LEGACY_MIEN; /* disable MPU401 irq */
+ pci_write_config_word(pci, PCIR_DSXG_LEGACY, legacy_ctrl);
}
}
- if (fm_port[dev] > 0) {
+ if (chip->fm_res) {
if ((err = snd_opl3_create(card,
fm_port[dev],
fm_port[dev] + 2,
- OPL3_HW_OPL3, 0, &opl3)) < 0) {
+ OPL3_HW_OPL3, 1, &opl3)) < 0) {
printk(KERN_WARNING "ymfpci: cannot initialize FM OPL3 at 0x%lx, skipping...\n", fm_port[dev]);
- fm_port[dev] = 0;
- legacy_ctrl &= ~2;
+ legacy_ctrl &= ~YMFPCI_LEGACY_FMEN;
pci_write_config_word(pci, PCIR_DSXG_LEGACY, legacy_ctrl);
} else if ((err = snd_opl3_hwdep_new(opl3, 0, 1, NULL)) < 0) {
snd_card_free(card);
diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c
index 8941690af041..42dd52b2f081 100644
--- a/sound/pci/ymfpci/ymfpci_main.c
+++ b/sound/pci/ymfpci/ymfpci_main.c
@@ -930,7 +930,7 @@ static int snd_ymfpci_playback_spdif_open(snd_pcm_substream_t * substream)
chip->spdif_opened++;
spin_unlock_irqrestore(&chip->reg_lock, flags);
- chip->spdif_pcm_ctl->access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ chip->spdif_pcm_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &chip->spdif_pcm_ctl->id);
return 0;
@@ -1022,7 +1022,7 @@ static int snd_ymfpci_playback_spdif_close(snd_pcm_substream_t * substream)
snd_ymfpci_readw(chip, YDSXGR_SPDIFOUTCTRL) & ~2);
snd_ymfpci_writew(chip, YDSXGR_SPDIFOUTSTATUS, chip->spdif_bits);
spin_unlock_irqrestore(&chip->reg_lock, flags);
- chip->spdif_pcm_ctl->access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
+ chip->spdif_pcm_ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE |
SNDRV_CTL_EVENT_MASK_INFO, &chip->spdif_pcm_ctl->id);
return snd_ymfpci_playback_close_1(substream);
@@ -2058,6 +2058,14 @@ static int snd_ymfpci_free(ymfpci_t *chip)
if (chip->saved_regs)
vfree(chip->saved_regs);
#endif
+ if (chip->mpu_res) {
+ release_resource(chip->mpu_res);
+ kfree_nocheck(chip->mpu_res);
+ }
+ if (chip->fm_res) {
+ release_resource(chip->fm_res);
+ kfree_nocheck(chip->fm_res);
+ }
if (chip->reg_area_virt)
iounmap((void *)chip->reg_area_virt);
if (chip->work_ptr)
diff --git a/sound/ppc/awacs.c b/sound/ppc/awacs.c
index 2604df8897a8..c6008c6458ed 100644
--- a/sound/ppc/awacs.c
+++ b/sound/ppc/awacs.c
@@ -52,6 +52,18 @@ typedef struct awacs_amp {
#endif /* PMAC_AMP_AVAIL */
+static void snd_pmac_screamer_wait(pmac_t *chip)
+{
+ long timeout = 2000;
+ while (!(in_le32(&chip->awacs->codec_stat) & MASK_VALID)) {
+ mdelay(1);
+ if (! --timeout) {
+ snd_printd("snd_pmac_screamer_wait timeout\n");
+ break;
+ }
+ }
+}
+
/*
* write AWACS register
*/
@@ -60,13 +72,15 @@ snd_pmac_awacs_write(pmac_t *chip, int val)
{
long timeout = 5000000;
+ if (chip->model == PMAC_SCREAMER)
+ snd_pmac_screamer_wait(chip);
+ out_le32(&chip->awacs->codec_ctrl, val | (chip->subframe << 22));
while (in_le32(&chip->awacs->codec_ctrl) & MASK_NEWECMD) {
if (! --timeout) {
snd_printd("snd_pmac_awacs_write timeout\n");
break;
}
}
- out_le32(&chip->awacs->codec_ctrl, val | (chip->subframe << 22));
}
static void
@@ -101,11 +115,14 @@ static void screamer_recalibrate(pmac_t *chip, int can_schedule)
/* Sorry for the horrible delays... I hope to get that improved
* by making the whole PM process asynchronous in a future version
*/
- do_mdelay(750, can_schedule);
+ snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);
+ if (chip->manufacturer == 0x1)
+ /* delay for broken crystal part */
+ do_mdelay(750, can_schedule);
snd_pmac_awacs_write_noreg(chip, 1,
chip->awacs_reg[1] | MASK_RECALIBRATE | MASK_CMUTE | MASK_AMUTE);
- do_mdelay(1000, can_schedule);
snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);
+ snd_pmac_awacs_write_noreg(chip, 6, chip->awacs_reg[6]);
}
#else
@@ -626,12 +643,8 @@ static void awacs_restore_all_regs(pmac_t *chip, int can_schedule)
snd_pmac_awacs_write_noreg(chip, 4, chip->awacs_reg[4]);
if (chip->model == PMAC_SCREAMER) {
snd_pmac_awacs_write_noreg(chip, 5, chip->awacs_reg[5]);
- do_mdelay(100, can_schedule);
snd_pmac_awacs_write_noreg(chip, 6, chip->awacs_reg[6]);
- mdelay(2);
- snd_pmac_awacs_write_noreg(chip, 1, chip->awacs_reg[1]);
snd_pmac_awacs_write_noreg(chip, 7, chip->awacs_reg[7]);
- snd_pmac_awacs_write_noreg(chip, 0, chip->awacs_reg[0]);
}
}
@@ -639,6 +652,11 @@ static void awacs_restore_all_regs(pmac_t *chip, int can_schedule)
static void snd_pmac_awacs_resume(pmac_t *chip)
{
awacs_restore_all_regs(chip, 0);
+ if (chip->model == PMAC_SCREAMER) {
+ /* reset power bits in reg 6 */
+ mdelay(5);
+ snd_pmac_awacs_write_noreg(chip, 6, chip->awacs_reg[6]);
+ }
screamer_recalibrate(chip, 0);
#ifdef PMAC_AMP_AVAIL
if (chip->mixer_data) {
@@ -748,6 +766,7 @@ snd_pmac_awacs_init(pmac_t *chip)
}
awacs_restore_all_regs(chip, 1);
+ chip->manufacturer = (in_le32(&chip->awacs->codec_stat) >> 8) & 0xf;
screamer_recalibrate(chip, 1);
chip->revision = (in_le32(&chip->awacs->codec_stat) >> 12) & 0xf;
diff --git a/sound/ppc/pmac.c b/sound/ppc/pmac.c
index d2f613332a80..74931580c8a7 100644
--- a/sound/ppc/pmac.c
+++ b/sound/ppc/pmac.c
@@ -269,21 +269,6 @@ static int snd_pmac_pcm_prepare(pmac_t *chip, pmac_stream_t *rec, snd_pcm_substr
/*
- * stop beep if running (no spinlock!)
- */
-static void snd_pmac_beep_stop(pmac_t *chip)
-{
- pmac_beep_t *beep = chip->beep;
-
- if (beep && beep->running) {
- beep->running = 0;
- del_timer(&beep->timer);
- snd_pmac_dma_stop(&chip->playback);
- st_le16(&chip->extra_dma.cmds->command, DBDMA_STOP);
- }
-}
-
-/*
* PCM trigger/stop
*/
static int snd_pmac_pcm_trigger(pmac_t *chip, pmac_stream_t *rec,
@@ -696,245 +681,6 @@ int __init snd_pmac_pcm_new(pmac_t *chip)
}
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-
-/*
- * beep stuff
- */
-
-/*
- * Stuff for outputting a beep. The values range from -327 to +327
- * so we can multiply by an amplitude in the range 0..100 to get a
- * signed short value to put in the output buffer.
- */
-static short beep_wform[256] = {
- 0, 40, 79, 117, 153, 187, 218, 245,
- 269, 288, 304, 316, 323, 327, 327, 324,
- 318, 310, 299, 288, 275, 262, 249, 236,
- 224, 213, 204, 196, 190, 186, 183, 182,
- 182, 183, 186, 189, 192, 196, 200, 203,
- 206, 208, 209, 209, 209, 207, 204, 201,
- 197, 193, 188, 183, 179, 174, 170, 166,
- 163, 161, 160, 159, 159, 160, 161, 162,
- 164, 166, 168, 169, 171, 171, 171, 170,
- 169, 167, 163, 159, 155, 150, 144, 139,
- 133, 128, 122, 117, 113, 110, 107, 105,
- 103, 103, 103, 103, 104, 104, 105, 105,
- 105, 103, 101, 97, 92, 86, 78, 68,
- 58, 45, 32, 18, 3, -11, -26, -41,
- -55, -68, -79, -88, -95, -100, -102, -102,
- -99, -93, -85, -75, -62, -48, -33, -16,
- 0, 16, 33, 48, 62, 75, 85, 93,
- 99, 102, 102, 100, 95, 88, 79, 68,
- 55, 41, 26, 11, -3, -18, -32, -45,
- -58, -68, -78, -86, -92, -97, -101, -103,
- -105, -105, -105, -104, -104, -103, -103, -103,
- -103, -105, -107, -110, -113, -117, -122, -128,
- -133, -139, -144, -150, -155, -159, -163, -167,
- -169, -170, -171, -171, -171, -169, -168, -166,
- -164, -162, -161, -160, -159, -159, -160, -161,
- -163, -166, -170, -174, -179, -183, -188, -193,
- -197, -201, -204, -207, -209, -209, -209, -208,
- -206, -203, -200, -196, -192, -189, -186, -183,
- -182, -182, -183, -186, -190, -196, -204, -213,
- -224, -236, -249, -262, -275, -288, -299, -310,
- -318, -324, -327, -327, -323, -316, -304, -288,
- -269, -245, -218, -187, -153, -117, -79, -40,
-};
-
-#define BEEP_SRATE 22050 /* 22050 Hz sample rate */
-#define BEEP_BUFLEN 512
-#define BEEP_VOLUME 15 /* 0 - 100 */
-
-static void snd_pmac_beep_stop_callback(unsigned long data)
-{
- pmac_t *chip = snd_magic_cast(pmac_t, (void*)data,);
-
- spin_lock(&chip->reg_lock);
- snd_pmac_beep_stop(chip);
- snd_pmac_pcm_set_format(chip);
- spin_unlock(&chip->reg_lock);
-}
-
-/* because mksound callback takes no private argument, we must keep
- the chip pointer here as static variable.
- This means that only one chip can beep. Well, it's ok -
- anyway we don't like hearing loud beeps from every chip
- at the same time :)
-*/
-
-static pmac_t *beeping_chip = NULL;
-
-static void snd_pmac_mksound(unsigned int hz, unsigned int ticks)
-{
- pmac_t *chip;
- pmac_stream_t *rec;
- pmac_beep_t *beep;
- unsigned long flags;
- int beep_speed = 0;
- int srate;
- int period, ncycles, nsamples;
- int i, j, f;
- short *p;
-
- if ((chip = beeping_chip) == NULL || (beep = chip->beep) == NULL)
- return;
- rec = &chip->playback;
-
- beep_speed = snd_pmac_rate_index(chip, rec, BEEP_SRATE);
- srate = chip->freq_table[beep_speed];
-
- if (hz <= srate / BEEP_BUFLEN || hz > srate / 2) {
- /* this is a hack for broken X server code */
- hz = 750;
- ticks = 12;
- }
-
- spin_lock_irqsave(&chip->reg_lock, flags);
- if (chip->playback.running || chip->capture.running || beep->running) {
- spin_unlock_irqrestore(&chip->reg_lock, flags);
- return;
- }
- beep->running = 1;
- spin_unlock_irqrestore(&chip->reg_lock, flags);
-
- if (hz == beep->hz && beep->volume == beep->volume_play) {
- nsamples = beep->nsamples;
- } else {
- period = srate * 256 / hz; /* fixed point */
- ncycles = BEEP_BUFLEN * 256 / period;
- nsamples = (period * ncycles) >> 8;
- f = ncycles * 65536 / nsamples;
- j = 0;
- p = beep->buf;
- for (i = 0; i < nsamples; ++i, p += 2) {
- p[0] = p[1] = beep_wform[j >> 8] * beep->volume;
- j = (j + f) & 0xffff;
- }
- beep->hz = hz;
- beep->volume_play = beep->volume;
- beep->nsamples = nsamples;
- }
-
- spin_lock_irqsave(&chip->reg_lock, flags);
- if (beep->running) {
- if (ticks <= 0)
- ticks = 1;
- del_timer(&beep->timer);
- beep->timer.expires = jiffies + ticks;
- beep->timer.function = snd_pmac_beep_stop_callback;
- beep->timer.data = (unsigned long)chip;
- add_timer(&beep->timer);
- snd_pmac_dma_stop(rec);
- st_le16(&chip->extra_dma.cmds->req_count, nsamples * 4);
- st_le16(&chip->extra_dma.cmds->xfer_status, 0);
- st_le32(&chip->extra_dma.cmds->cmd_dep, chip->extra_dma.addr);
- st_le32(&chip->extra_dma.cmds->phy_addr, beep->addr);
- st_le16(&chip->extra_dma.cmds->command, OUTPUT_MORE + BR_ALWAYS);
- out_le32(&chip->awacs->control,
- (in_le32(&chip->awacs->control) & ~0x1f00)
- | (beep_speed << 8));
- out_le32(&chip->awacs->byteswap, 0);
- snd_pmac_dma_set_command(rec, &chip->extra_dma);
- snd_pmac_dma_run(rec, RUN);
- }
- spin_unlock_irqrestore(&chip->reg_lock, flags);
-}
-
-/*
- * beep volume mixer
- */
-static int snd_pmac_info_beep(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *uinfo)
-{
- uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
- uinfo->count = 1;
- uinfo->value.integer.min = 0;
- uinfo->value.integer.max = 100;
- return 0;
-}
-
-static int snd_pmac_get_beep(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
- pmac_t *chip = snd_kcontrol_chip(kcontrol);
- snd_runtime_check(chip->beep, return -ENXIO);
- ucontrol->value.integer.value[0] = chip->beep->volume;
- return 0;
-}
-
-static int snd_pmac_put_beep(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
-{
- pmac_t *chip = snd_kcontrol_chip(kcontrol);
- int oval;
- snd_runtime_check(chip->beep, return -ENXIO);
- oval = chip->beep->volume;
- chip->beep->volume = ucontrol->value.integer.value[0];
- return oval != chip->beep->volume;
-}
-
-static snd_kcontrol_new_t snd_pmac_beep_mixer = {
- .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
- .name = "Beep Playback Volume",
- .index = 0,
- .info = snd_pmac_info_beep,
- .get = snd_pmac_get_beep,
- .put = snd_pmac_put_beep,
-};
-
-static void snd_pmac_beep_free(snd_kcontrol_t *control)
-{
- pmac_t *chip = snd_magic_cast(pmac_t, _snd_kcontrol_chip(control),);
- if (chip->beep) {
- /* restore */
- kd_mksound = chip->beep->orig_mksound;
- kfree(chip->beep->buf);
- kfree(chip->beep);
- chip->beep = NULL;
- }
-}
-
-/* Initialize beep stuff */
-int __init snd_pmac_attach_beep(pmac_t *chip)
-{
- pmac_beep_t *beep;
- int err;
-
- beep = kmalloc(sizeof(*beep), GFP_KERNEL);
- if (! beep)
- return -ENOMEM;
-
- beep->buf = (short *) kmalloc(BEEP_BUFLEN * 4, GFP_KERNEL);
- if (! beep->buf) {
- kfree(beep);
- return -ENOMEM;
- }
- beep->addr = virt_to_bus(beep->buf);
- init_timer(&beep->timer);
- beep->timer.function = snd_pmac_beep_stop_callback;
- beep->timer.data = (unsigned long) chip;
- beep->orig_mksound = kd_mksound;
- beep->volume = BEEP_VOLUME;
- beep->running = 0;
- beep->control = snd_ctl_new1(&snd_pmac_beep_mixer, chip);
- if (beep->control == NULL) {
- kfree(beep);
- return -ENOMEM;
- }
- beep->control->private_free = snd_pmac_beep_free;
- if ((err = snd_ctl_add(chip->card, beep->control)) < 0) {
- kfree(beep);
- return err;
- }
-
- /* hook */
- beeping_chip = chip;
- chip->beep = beep;
- kd_mksound = snd_pmac_mksound;
-
- return 0;
-}
-
-#endif /* beep stuff */
-
static void snd_pmac_dbdma_reset(pmac_t *chip)
{
out_le32(&chip->playback.dma->control, (RUN|PAUSE|FLUSH|WAKE|DEAD) << 16);
@@ -1471,8 +1217,7 @@ static void snd_pmac_suspend(pmac_t *chip)
chip->suspend(chip);
snd_pcm_suspend_all(chip->pcm);
spin_lock_irqsave(&chip->reg_lock, flags);
- if (chip->beep && chip->beep->running)
- snd_pmac_beep_stop(chip);
+ snd_pmac_beep_stop(chip);
spin_unlock_irqrestore(&chip->reg_lock, flags);
disable_irq(chip->irq);
disable_irq(chip->tx_irq);
diff --git a/sound/ppc/pmac.h b/sound/ppc/pmac.h
index bb812a979804..9a9887afae6f 100644
--- a/sound/ppc/pmac.h
+++ b/sound/ppc/pmac.h
@@ -22,6 +22,7 @@
#ifndef __PMAC_H
#define __PMAC_H
+#include <linux/version.h>
#include <sound/control.h>
#include <sound/pcm.h>
#include "awacs.h"
@@ -95,24 +96,6 @@ struct snd_pmac_stream {
/*
- * beep using pcm
- */
-struct snd_pmac_beep {
- int running; /* boolean */
- int volume; /* mixer volume: 0-100 */
- int volume_play; /* currently playing volume */
- int hz;
- int nsamples;
- short *buf; /* allocated wave buffer */
- unsigned long addr; /* physical address of buffer */
- struct timer_list timer; /* timer list for stopping beep */
- void (*orig_mksound)(unsigned int, unsigned int);
- /* pointer to restore */
- snd_kcontrol_t *control; /* mixer element */
-};
-
-
-/*
*/
enum snd_pmac_model {
@@ -125,6 +108,7 @@ struct snd_pmac {
/* h/w info */
struct device_node *node;
unsigned int revision;
+ unsigned int manufacturer;
unsigned int subframe;
unsigned int device_id;
enum snd_pmac_model model;
@@ -223,4 +207,9 @@ int snd_pmac_boolean_mono_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *ui
int snd_pmac_add_automute(pmac_t *chip);
+#ifndef PMAC_SUPPORT_PCM_BEEP
+#define snd_pmac_attach_beep(chip) 0
+#define snd_pmac_beep_stop(chip) /**/
+#endif
+
#endif /* __PMAC_H */
diff --git a/sound/ppc/powermac.c b/sound/ppc/powermac.c
index e657cfc63c83..aac82c0644a7 100644
--- a/sound/ppc/powermac.c
+++ b/sound/ppc/powermac.c
@@ -37,7 +37,9 @@ MODULE_LICENSE("GPL");
static int index = SNDRV_DEFAULT_IDX1; /* Index 0-MAX */
static char *id = SNDRV_DEFAULT_STR1; /* ID for this card */
static int enable = 1;
+#ifdef PMAC_SUPPORT_PCM_BEEP
static int enable_beep = 1;
+#endif
MODULE_PARM(index, "i");
MODULE_PARM_DESC(index, "Index value for " CHIP_NAME " soundchip.");
@@ -48,9 +50,11 @@ MODULE_PARM_SYNTAX(id, SNDRV_ID_DESC);
MODULE_PARM(enable, "i");
MODULE_PARM_DESC(enable, "Enable this soundchip.");
MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
+#ifdef PMAC_SUPPORT_PCM_BEEP
MODULE_PARM(enable_beep, "i");
MODULE_PARM_DESC(enable_beep, "Enable beep using PCM.");
MODULE_PARM_SYNTAX(enable_beep, SNDRV_ENABLED "," SNDRV_BOOLEAN_TRUE_DESC);
+#endif
/*
@@ -129,7 +133,7 @@ static int __init snd_pmac_probe(void)
goto __error;
chip->initialized = 1;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+#ifdef PMAC_SUPPORT_PCM_BEEP
if (enable_beep)
snd_pmac_attach_beep(chip);
#endif
@@ -181,8 +185,10 @@ static int __init alsa_card_pmac_setup(char *str)
{
(void)(get_option(&str,&enable) == 2 &&
get_option(&str,&index) == 2 &&
- get_id(&str,&id) == 2 &&
- get_option(&str,&enable_beep) == 2
+ get_id(&str,&id) == 2
+#ifdef PMAC_SUPPORT_PCM_BEEP
+ && get_option(&str,&enable_beep) == 2
+#endif
);
return 1;
}
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h
index 5fea09151917..c1f6b320a1dd 100644
--- a/sound/usb/usbquirks.h
+++ b/sound/usb/usbquirks.h
@@ -717,7 +717,7 @@
.driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) {
.vendor_name = "M-Audio",
.product_name = "AudioPhile",
- .ifnum = 9,
+ .ifnum = 6,
.type = QUIRK_MIDI_MIDIMAN,
.data = & (const snd_usb_midi_endpoint_info_t) {
.out_cables = 0x0001,