- beginner and advanced Cargo features

- more work on advanced text
- update hex files
This commit is contained in:
Jorge Aparicio 2020-06-10 12:09:21 +02:00
parent 31c331c1a3
commit 3983ee5310
9 changed files with 1851 additions and 819 deletions

View file

@ -4,7 +4,21 @@
In this workshop we'll build a toy USB device application that gets enumerated by the host.
The embedded application will run in a fully event driven fashion: only doing work when the host asks it to.
The embedded application will run in a fully event driven fashion: only doing work when the host asks for it.
## The nRF52840
Some details about the nRF52840 microcontroller that are relevant to this workshop.
- single core ARM Cortex-M4 processor clocked at 64 MHz
- 1 MB of Flash (at address `0x0000_0000`)
- 256 KB of RAM (at address `0x2000_0000`)
- IEEE 802.15.4 and BLE (Bluetooth Low Energy) compatible radio
- USB controller (device function)
## The nRF52840 Development Kit
The development board we'll use has two USB ports: J2 and J3 -- you can find a description of the board in the top-level README of this repository -- and an on-board J-Link programmer / debugger. USB port J2 is the J-Link's USB port. USB port J3 is the nRF52840's USB port.
## Code organization
@ -21,7 +35,7 @@ $ tree -L 1 .
└── README.md
```
In addition to these two workspaces there's a third folder called "common". This folder contains `no_std` code that be depended on by either "host" code or "firmware" code.
In addition to these two workspaces there's a third folder called "common". This folder contains `no_std` code that can be depended on by either "host" code or "firmware" code.
## Listing USB devices
@ -44,62 +58,75 @@ Bus 002 Device 001: ID 1d6b:0003
Bus 001 Device 002: ID 0cf3:e300
Bus 001 Device 003: ID 0c45:6713
Bus 001 Device 001: ID 1d6b:0002
Bus 001 Device 059: ID 0000:0000 <- !
Bus 001 Device 059: ID 0000:0000 <- nRF52840 on the nRF52840 Development Kit
```
## Hello, world!
0. Open the `tools/dk-run` folder and run `cargo install --path . -f` to install the `dk-run` tool.
1. Open the `advanced/firmware` folder in VS Code.
1. Open the `advanced/firmware` folder in VS Code then open the `src/bin/hello.rs` file.
``` console
$ # or use "File > Open Folder" in VS Code
$ code advanced/firmware
```
2. In VS code, click the "Run" button that's displayed over the `main` function. If you are not using VS code run the `cargo run --bin hello` command from the `advanced/firmware` folder.
2. Open the `src/bin/hello.rs` file.
3. Click the "Run" button
> NOTE if you run into an error along the lines of "Debug power request failed" retry the operation and the error should disappear
The `firmware` workspace has been configured to cross-compile applications to the ARM Cortex-M architecture and then run them through the `dk-run` custom Cargo runner. The `dk-run` tool will load and run the embedded application on the microcontroller and collect logs from the microcontroller.
The `dk-run` process will terminate when the microcontrollers enters the "halted" state. From the embedded application, one can enter the "halted" state using the `asm::bkpt` function.
The `dk-run` process will terminate when the microcontroller enters the "halted" state. From the embedded application, one can enter the "halted" state using the `asm::bkpt` function. For convenience, an `exit` function is provided in the `dk` Hardware Abstraction Layer (HAL). This function is divergent like `std::process::exit` (`fn() -> !`) and can be used to halt the device and terminate the `dk-run` process.
Note that when the `dk-run` tool sees the device enter the halted state it will proceed to reset-halt the device. This is particularly important when writing USB applications because simply leaving the device in a halted state will make it appear as an unresponsive USB device to the host; some OSes (e.g. Linux) will try to make an unresponsive device respond by power cycling the entire USB bus -- this will cause all other USB devices on the bus to be re-enumerated. Reset-halting the device will cause it to be electrically disconnected from the host USB bus and avoid the "power cycle the USB bus" scenario.
## RTIC hello
RTIC, Real Time on Integrated Circuits, is a framework for building evented, time sensitive applications.
1. Open the `advanced/apps` folder in VS Code.
Open the `advanced/apps` folder in VS Code then open the `src/bin/rtic-hello.rs` file.
``` console
$ # or use "File > Open Folder" in VS Code
$ code beginner/apps
RTIC applications are written in RTIC's Domain Specific Language (DSL). The DSL extends Rust syntax with custom attributes like `#[init]` and `#[idle]`.
RTIC makes a clearer distinction between the application's initialization phase, the `#[init]` function, and the application's main loop or main logic, the `#[idle]` function. The initialization phase runs with interrupts disabled and interrupts are re-enabled before the `idle` function is executed.
`rtic::app` is a procedural macro that generates extra Rust code, in addition to the user's functions. The fully expanded version of the macro can be found in the file `target/rtic-expansion.rs`. This file will contain the expansion of the procedural macro for the last compiled RTIC application.
If you look at the `rtic-expansion.rs` file generated for the build of the `rtic-hello` example you can confirm that interrupts are disabled during the execution of the `init` function.
``` rust
fn main() -> ! {
rtfm::export::interrupt::disable();
let late = init(init::Context::new(/* .. */));
rtfm::export::interrupt::enable();
idle(idle::Context::new(/* .. */))
}
```
2. Open the `src/bin/rtic-hello.rs` file.
3. Click the "Run" button
> TODO explain differences between `hello` and `rtic-hello`
## Dealing with registers
Open the `advanced/firmware` folder in VS Code; then open the `src/bin/rtic-events.rs` file.
> TODO explain the basics of the svd2rust API
In this and the next section we'll look into the RTIC's event handling features. To explore these features we'll use the action of connecting a USB cable to the DK's port J2 as the event we'd like to handle.
> TODO explain what the code in `init` is doing
The example application enables the signaling of this "USB power" event in the `init` function. This is done using the low level register API generated by the [`svd2rust`] tool. The register API was generated from a SVD (System View Description) file, a file that describes all the peripherals and registers, and their memory layout, on a Cortex-M microcontroller.
[`svd2rust`]: https://crates.io/crates/svd2rust
In the `svd2rust` API, peripherals are represented as structs. The fields of each peripheral struct are the registers associated to that peripheral. Each register field exposes methods to `read` and `write` to the register in a single memory operation.
The `read` and `write` methods take closure arguments. These closures in turn grant access to a "constructor" value, usually named `r` or `w`, which provides methods to modify the bitfields of a register. At the same time the API of these "constructors" prevent you from modifying the reserved parts of the register: you cannot write arbitrary values into registers; you can only write valid values into registers.
In Cortex-M devices interrupt handling needs to be enabled on two sides: on the peripheral side and on the core side. The register operations done in `init` take care of the peripheral side. The core side of the operation involves writing to the registers of the Nested Vector Interrupt Controller (NVIC) peripheral. This second part doesn't need to be in RTIC application because the framework takes care of it.
## Event handling
"Run" the `rtic-events` application.
Below the `idle` function you'll see a `#[task]` handler (function). This *task* is bound to the POWER_CLOCK interrupt signal and will be executed, function call style, every time the interrupt signal is raised by the hardware.
Connect a micro-USB cable to your PC/laptop then connect the other end to the DK (TODO specify port).
"Run" the `rtic-events` application. Then connect a micro-USB cable to your PC/laptop then connect the other end to the DK (port J2). You'll see the "POWER event occurred" message after the cable is connected.
> TODO explain the event handler
Note that all tasks will be prioritized over the `idle` function so the execution of `idle` will be interrupted (paused) by the `on_power_event` task. When the `on_power_event` task finishes (returns) the execution of the `idle` will be resumed. This will become more obvious in the next section.
## Adding state
## Task state
Open the `advanced/firmware` folder in VS Code; then open the `src/bin/rtic-resources.rs` file.
@ -107,7 +134,7 @@ Open the `advanced/firmware` folder in VS Code; then open the `src/bin/rtic-reso
You should always disconnect the device from the host before halting the device. Otherwise, the host will observe an unresponsive USB device and try power cycling the whole USB hub / bus.
## USB primer
## USB basics
Some basics about the USB protocol. The protocol is complex so we'll leave out many details and focus on the concepts required to get enumeration working.
@ -121,19 +148,29 @@ Each OS may perform the enumeration process slightly differently but the process
- GET_DESCRIPTOR request to get the device descriptor.
- SET_ADDRESS request to assign an address to the device.
The device descriptor is a binary encoded data structure sent by the device to the host that contains information about the device, like its product and vendor identifiers and how many *configurations* it has.
The device descriptor is a binary encoded data structure sent by the device to the host. It contains information about the device, like its product and vendor identifiers and how many *configurations* it has.
A *configuration* is basically an operation mode or profile. The USB device may act as a HID device in one configuration but as a CDC ACM device (serial terminal emulation over USB) in another configuration. The number of configurations the device supports is part of the device descriptor.
A *configuration* is akin to an operation mode. USB devices usually have a single configuration that will be the only mode in which they'll operate, for example a USB mouse will always act as a USB mouse. Some devices, though, may provide a second configuration for the purpose of firmware upgrades. For example a printer may enter DFU (Device Firmware Upgrade) mode, a second *configuration*, so that a user can update its firmware; while in DFU mode the printer will not provide printing functionality.
> TODO add/info: drivers are bound to interfaces, not devices
Like the device descriptor, the configuration descriptor is also a binary encoded data structure sent by the device to the host. This descriptor contains information about the *interfaces* and *endpoints* the configuration exposes.
> FIXME configuration descriptor requires at least one interface
An interface is closest to a USB device's function. For example, a USB mouse may expose a single HID (Human Interface Device) interface to report user input to the host. USB devices can expose multiple interfaces. For example, the nRF52840 Dongle could expose both a CDC ACM interface (AKA virtual serial port) *and* a HID interface; the first interface could be used for (`log::info!`-style) logs; and the second one could provide a RPC (Remote Procedure Call) interface to the host for controlling the nRF52840's radio.
Like the device descriptor, the configuration descriptor is also a binary encoded data structure sent by the device to the host. This descriptor contains information about the *interfaces* and *endpoints* the configuration uses. An *endpoint* is similar to a UDP or TCP port on a single PC: it allows logical multiplexing on a single physical USB bus. An *interface* is a logical grouping of endpoints.
An interface is made up of one or more *endpoints*. An *endpoint* is similar to a UDP or TCP port on a PC in that they allow logical multiplexing of data over a single physical USB bus. Endpoints have directions: a endpoint can either be an IN endpoint or an OUT endpoint. The direction is always from the perspective of the host so in an IN endpoint data travels from the device to the host and in an OUT endpoint data travels from the host to the device. To give an example, a HID interface can use two (interrupt) endpoints, one IN and one OUT, for bidirectional communication with the host. A single endpoint cannot be used by more than one interface (with the exception of the special "endpoint 0").
In this workshop we'll only deal with the control endpoint 0, which is mandatory on all USB devices. Endpoints have directions: in an OUT endpoint data flows from the host to the device; in an IN endpoint data flows from the device to the host. The control endpoint 0 actually refers to two endpoints: endpoint 0 IN (EP0IN) and endpoint 0 OUT (EP0OUT). Although both should be implemented, it's usually sufficient to implement EP0IN to get enumeration working.
Endpoints are identified by their address, a zero-based index, and direction. There are three types of non-zero endpoints ("endpoint 0" is special): bulk endpoints, interrupt endpoints and isochronous endpoints. Each endpoint type has different reliability and latency data transfer properties but it's not important to discuss them for this workshop.
A USB device must report at least one configuration. The control endpoint, EP0IN and EP0OUT, however does not need to described in the configuration descriptor so we can report 0 endpoints and 0 interfaces in the configuration descriptor.
"Endpoint 0", also known as the *control pipe*, actually refers to two endpoints: endpoint 0 IN and endpoint 0 OUT so the control pipe supports data transfers in both directions. The control pipe is mandatory: it must always be present and must always be active.
In this workshop we'll implement the minimal amount of functionality to make enumeration work. To that end you need to consider the following requirements:
- a USB device must support at least one configuration
- each configuration must expose at least one interface
- the control pipe (endpoint 0) must be implemented
- endpoint 0 is implicitly associated to all interfaces
- the number of endpoints bound to an interface can be zero -- endpoint 0 is never included in the endpoint count of an interface
Although the control pipe should be bidirectional, in practice to complete the enumeration data only needs to be transferred from the device to the host (IN direction).
## Dealing with USB events

View file

@ -15,7 +15,7 @@ cortex-m = "0.6.2"
cortex-m-rt = "0.6.12"
# TODO switch to RTIC before public release
cortex-m-rtfm = "0.5.1"
dk = { path = "../../boards/dk" }
dk = { path = "../../boards/dk", features = ["advanced"] }
heapless = "0.5.5"
log = "0.4.8"
panic-log = { path = "../../common/panic-log" }

View file

@ -7,6 +7,7 @@ use panic_log as _; // panic handler
#[entry]
fn main() -> ! {
// board initialization
dk::init().unwrap();
log::info!("Hello, world!");

View file

@ -38,6 +38,6 @@ const APP: () = {
#[task(binds = POWER_CLOCK)]
fn on_power_event(_cx: on_power_event::Context) {
log::info!("POWER event occurred");
asm::bkpt();
dk::exit()
}
};

View file

@ -7,7 +7,7 @@ version = "0.1.0"
[dependencies]
cortex-m = "0.6.2"
cortex-m-rt = "0.6.12"
dk = { path = "../../boards/dk" }
dk = { path = "../../boards/dk", features = ["beginner"] }
log = "0.4.8"
panic-log = { path = "../../common/panic-log" }

View file

@ -11,3 +11,7 @@ embedded-hal = "0.2.3"
hal = { package = "nrf52840-hal", git = "https://github.com/japaric/nrf-hal", branch = "radio" }
log = "0.4.8"
rtt-target = { version = "0.2.0", features = ["cortex-m"] }
[features]
beginner = []
advanced = []

View file

@ -11,42 +11,48 @@ use core::{
use cortex_m::asm;
use embedded_hal::digital::v2::{OutputPin as _, StatefulOutputPin};
#[cfg(feature = "beginner")]
pub use hal::ieee802154;
pub use hal::target::{interrupt, Interrupt, NVIC_PRIO_BITS, RTC0};
use hal::{
clocks::{Clocks, ExternalOscillator, LfOscConfiguration, LfOscStarted},
clocks::{self, Clocks},
gpio::{p0, Level, Output, Pin, PushPull},
ieee802154::Radio,
rtc::{Rtc, RtcInterrupt},
timer::OneShot,
};
use log::{LevelFilter, Log};
use rtt_target::{rprintln, rtt_init_print};
#[cfg(feature = "advanced")]
use crate::{
peripheral::{POWER, USBD},
usbd::Ep0In,
};
#[cfg(feature = "advanced")]
mod errata;
pub mod peripheral;
#[cfg(feature = "advanced")]
pub mod usbd;
/// Components on the board
pub struct Board {
/// LEDs
pub leds: Leds,
/// Radio interface
// TODO put behind feature flag (off in advanced workshop)
pub radio: Radio<'static>,
/// Timer
pub timer: Timer,
/// Radio interface
#[cfg(feature = "beginner")]
pub radio: ieee802154::Radio<'static>,
/// USBD (Universal Serial Bus Device) peripheral
// TODO put behind feature flag (off in beginner workshop)
#[cfg(feature = "advanced")]
pub usbd: USBD,
/// POWER (Power Supply) peripheral
#[cfg(feature = "advanced")]
pub power: POWER,
/// USB control endpoint 0
#[cfg(feature = "advanced")]
pub ep0in: Ep0In,
}
@ -162,9 +168,12 @@ pub fn init() -> Result<Board, ()> {
hal::target::Peripherals::take(),
) {
// NOTE(static mut) this branch runs at most once
#[cfg(feature = "advanced")]
static mut EP0IN_BUF: [u8; 64] = [0; 64];
static mut CLOCKS: Option<Clocks<ExternalOscillator, ExternalOscillator, LfOscStarted>> =
None;
#[cfg(feature = "beginner")]
static mut CLOCKS: Option<
Clocks<clocks::ExternalOscillator, clocks::ExternalOscillator, clocks::LfOscStarted>,
> = None;
// NOTE this must be executed as early as possible or the tool will timeout
// NOTE the unsafety of this macro is incorrect; it must be run at most once
@ -181,10 +190,12 @@ pub fn init() -> Result<Board, ()> {
let clocks = Clocks::new(periph.CLOCK);
let clocks = clocks.enable_ext_hfosc();
let clocks = clocks.set_lfclk_src_external(LfOscConfiguration::NoExternalNoBypass);
let clocks = clocks.set_lfclk_src_external(clocks::LfOscConfiguration::NoExternalNoBypass);
let clocks = clocks.start_lfclk();
let _clocks = clocks.enable_ext_hfosc();
// extend lifetime to `'static`
let clocks = unsafe { CLOCKS.get_or_insert(clocks.enable_ext_hfosc()) };
#[cfg(feature = "beginner")]
let clocks = unsafe { CLOCKS.get_or_insert(_clocks) };
log::debug!("Clocks configured");
@ -206,11 +217,15 @@ pub fn init() -> Result<Board, ()> {
let timer = hal::Timer::new(periph.TIMER0);
let mut radio = Radio::init(periph.RADIO, clocks);
#[cfg(feature = "beginner")]
let radio = {
let mut radio = ieee802154::Radio::init(periph.RADIO, clocks);
// set TX power to its maximum value
radio.set_txpower(ieee802154::TxPower::Pos8dBm);
log::debug!("Radio initialized and configured with TX power set to the maximum value");
// set TX power to its maximum value
radio.set_txpower(ieee802154::TxPower::Pos8dBm);
log::debug!("Radio initialized and configured with TX power set to the maximum value");
radio
};
Ok(Board {
leds: Leds {
@ -219,10 +234,14 @@ pub fn init() -> Result<Board, ()> {
_3: Led { inner: _3 },
_4: Led { inner: _4 },
},
#[cfg(feature = "beginner")]
radio,
timer: Timer { inner: timer },
#[cfg(feature = "advanced")]
usbd: periph.USBD,
#[cfg(feature = "advanced")]
power: periph.POWER,
#[cfg(feature = "advanced")]
ep0in: unsafe { Ep0In::new(&mut EP0IN_BUF) },
})
} else {

File diff suppressed because it is too large Load diff

954
boards/dongle/puzzle.hex Executable file
View file

@ -0,0 +1,954 @@
:10100000F0BE03206D270000534800005348000045
:1010100053480000534800005348000000000000FF
:101020000000000000000000000000005348000025
:1010300053480000000000005348000053480000DF
:10104000152800002528000053480000492A000008
:101050005348000053480000534800005348000024
:10106000534800005348000053480000792A00000C
:101070005348000053480000534800005348000004
:1010800053480000534800005348000053480000F4
:1010900053480000534800005348000053480000E4
:1010A00053480000534800005348000053480000D4
:1010B00053480000534800000000000000000000FA
:1010C00053480000534800005348000053480000B4
:1010D000534800005348000053480000552B0000BF
:1010E000534800005348000053480000000000002F
:1010F00000000000534800000000000053480000BA
:10110000011900000400000004000000C7190000DD
:1011100003190000A1190000525B5D4D446657772A
:101120007E636A21313A3B6473622E347156424ABF
:101130005C3C7B2225292A4C494758362327375EB9
:101140004041515F6972793E7C28657D596F356EEB
:101150007024763F336C383D264E5A482B672F4516
:1011600030207561687432537A2C552D50784B5469
:101170004F4643606B6D39475C75783322576E5329
:10118000516C2C7348204F6A49313F723D2F2154D6
:1011900068715D246F746B7B5B2D3B25645E6163BE
:1011A0002A2339267D36504252585A692755655FA1
:1011B000402E4A663556416D293C767037774D385A
:1011C0004460624B434C3A287C32453E2B464E7A73
:1011D0003059347E677900004E4B62657E6A442246
:1011E000277D445F627D432651265F624326653733
:1011F00044266544434B58447A2B264F26285844AE
:101200005B3527496235446E277D7E6A4B275F2C0C
:1012100064657669636569643D00000060130000E1
:10122000000000006013000000000000000000004B
:101230002000000008000000020000000000000084
:101240000000000008000000030000000100000092
:101250002000000008000000020000000000000064
:101260000000000008000000030000002063686127
:101270006E6E656C3D205478506F7765723D2B38EB
:1012800064426D0A6C120000090000007512000033
:101290000F000000636F7272656374696E636F7232
:1012A000726563747265636569766564202062792E
:1012B00074650000A412000009000000AD120000D7
:1012C00005000000734572724F6B20284352433D66
:1012D00028290000CA12000006000000D0120000F9
:1012E00001000000D1120000010000000000000019
:1012F00020000000000000000200000000000000CC
:1013000002000000000000000300000001000000D7
:10131000200000000C00000002000000000000009F
:101320000000000006000000030000002C204C51CB
:10133000493D00002C13000006000000290A6469E2
:10134000646E2774207265706C79202D2D2063687F
:10135000616E6E656C2077617320627573790A0027
:101360003030303130323033303430353036303761
:101370003038303931303131313231333134313547
:10138000313631373138313932303231323232332D
:101390003234323532363237323832393330333113
:1013A00033323333333433353336333733383339F9
:1013B00034303431343234333434343534363437F1
:1013C00034383439353035313532353335343535D7
:1013D00035363537353835393630363136323633BD
:1013E00036343635363636373638363937303731A3
:1013F0003732373337343735373637373738373989
:101400003830383138323833383438353836383780
:101410003838383939303931393239333934393566
:10142000393639373938393930780B0100323532AD
:10143000343233323232313230313931383137317E
:10144000363135313431333132313132360000000A
:10145000F0B503AF2DE9E00F8B688A460969D0E942
:101460000069012B02D1012903D077E0012940F066
:10147000D480B9F1000F53D0DAF8141006EB090E3E
:10148000019300224B1C3146344602960D4615F955
:10149000010BB0F1FF3FC6B229DC754505D0487895
:1014A0008D1C00F03F0C294602E04FF0000C714605
:1014B00006F01F0BDF2E07D9714508D011F8010B7C
:1014C00000F03F080D4605E04CEA8B160FE04FF0A8
:1014D0000008714648EA8C1CF02E06D371450FD0E7
:1014E00011F8010B00F03F060CE04CEA0B362946E0
:1014F000013B17D0121B8E450A440C46C6D10BE0A7
:10150000002629464FF4E01000EA8B4040EA8C1098
:101510000644B6F5881FEBD14A46DDE901361AE0EC
:10152000002218E0019BB6F5881F02D14A46029EB0
:1015300011E0029E3AB14A4505D04A4505D2B0565F
:1015400010F1400F01DB304601E0002000220028AE
:101550000CBF4A460646012B0CD19146B9F1000F4B
:101560000BD0A9F1010009F0030C032807D20020D9
:10157000324625E0DAE9060154E000203BE0ACEB1E
:1015800009030020B64632461478557804F0C004AA
:101590009678D178802C05F0C00408BF0130802CEB
:1015A00006F0C00408BF0130802C01F0C00108BF64
:1015B0000130802908BF013004320433E4D176467B
:1015C000BCF1000F17D0117801F0C001802908BFCD
:1015D0000130BCF1010F0ED0517801F0C00180291B
:1015E00008BF0130BCF1020F05D0917801F0C001B5
:1015F000802908BF0130DAF80CE0A9EB0001714541
:101600000BD2B9F1000F15D0A9F1010109F0030CBB
:10161000032911D2002133462FE0DAF81C104A4684
:10162000DAF81800CB68314603B0BDE8000FBDE81A
:10163000F040184700213BE0ACEB09040021B04624
:1016400033461D785E789A7805F0C005D878802DED
:1016500006F0C00508BF0131802D02F0C00208BFAE
:101660000131802A00F0C00008BF0131802808BF86
:10167000013104330434E4D14646BCF1000F17D0E5
:10168000187800F0C000802808BF0131BCF1010FBC
:101690000ED0587800F0C000802808BF0131BCF19E
:1016A000020F05D0987800F0C000802808BF0131F3
:1016B0009AF82000C21E18BF0246A1EB090000EBF9
:1016C0000E0100200C46DFE802F0080205020024AB
:1016D000084602E0480801314C08451C013D08D08D
:1016E000DAE90602DAF80410126990470028F5D00A
:1016F00013E0DAE906014A46CB683146DAF804B06D
:10170000984750B9DAE906650134013C09D02A69E5
:101710003046594690470028F7D00120BDE80E0F0B
:10172000F0BD0020FAE7D4D4F0B503AF2DE9000FE7
:101730008DB0D1E9023BD1E900A6D1E9045C0321D7
:101740008DF830102021059100216B4A04910B92F5
:1017500003AA0A920891039006910293C3B1B3457C
:1017600088BFB346BBF1000F2DD0DAF80410026831
:101770005318802B00F2B280DAF80030A1B3024493
:1017800013F8014B01391471026801320260F5E768
:10179000B44588BFB446BCF1000F14D0DAF8041089
:1017A00002685318802B00F29980DAF80030E34683
:1017B000002978D0024413F8014B013914710268F2
:1017C00001320260F4E74FF0000846450AD90AEBFF
:1017D000C8005AF838104268DDE90A03DB68984708
:1017E00000287BD100207AE00298544601964FF001
:1017F000010800F110094FF0000A6646029800EB5C
:101800008A0148680590087F8DF830008868049048
:10181000D1E9052062B1022A0CD0B04268D205EBB2
:10182000C002364B52689A4204D155F83000006825
:10183000012200E00022CDE90620C968D9F80000A5
:1018400061B102290CD0B04252D205EBC0012B4A43
:101850004968914204D155F830000068012100E048
:101860000021CDE9081059F8100CB04240D255F8CB
:10187000301005EBC0004268084604A9904768BBD9
:10188000D84530D204EB0A00D0E90212DDE90A03A0
:10189000DB6898470AF1080A09F1200908F10108F4
:1018A0000028ABD01AE00DF110093446002605EBF4
:1018B000C60155F836004A684946904770B906F1A6
:1018C0000108D84512D20AEBC600D0E90212DDE9C0
:1018D0000A03DB68984700284646E8D001200DB08F
:1018E000BDE8000FF0BDA246019E6EE726466CE7FC
:1018F000314600F0DAFCFEDE001100009D220000FF
:101900007047E0B502AF0068802909D202687F2ADB
:1019100018D80244117101680131016000203DE0D6
:101920000022B1F5006F01924FF002020CD28B0938
:1019300062F39F118DF80510062161F35F138DF896
:10194000043028E0012029E00B46B1F5803F62F326
:101950009F130ED28DF806308B0962F39F13090B8B
:101960000E228DF8053062F31F118DF8041003224A
:1019700011E08DF80730F02343EA91438DF80430ED
:101980008B09090B62F39F1362F39F1104228DF8F8
:1019900006308DF8051001A900F02AF802B080BDCC
:1019A000F0B503AF4DF8048D86B00068EC4691E8C1
:1019B00074416346614683E87441FFF7B5FE06B0A3
:1019C0005DF8048BF0BD006800F012B804C8C9B21D
:1019D00052003AB110F8023B023A8B42F9D1411E53
:1019E000023801E00020002100B9002108467047BC
:1019F000D0B502AF03689C18802C01D90120D0BD5E
:101A000042B1034411F8014B013A1C7103680133E0
:101A10000360F5E70020D0BD80B56F46017839B18D
:101A2000032902D14178012904D100F039FCFEDEFE
:101A300000214170064901220978C9B2002908BF76
:101A4000032202704270B1FA81F0400980BD00BFEC
:101A500094F1032080B56F46ADF50A7DD248402150
:101A6000DFF89CA701600AF105000121D0E84F2FA3
:101A7000002A40F0A683C0E8421F002AF6D10AF1EE
:101A800004000121D0E84F2F002A40F0A783C0E8CE
:101A9000421F002AF6D1C5493220DFF874C7DFF8AB
:101AA00074E7C1F8FC002AA901F10408002009909C
:101AB0002A905F2820D02A9D41461CF800401EF83D
:101AC000006001306A003AB111F8023B023AB342B9
:101AD000F9D14A1E023901E00021002209B1147037
:101AE000E7E77F2DE5D808EB450108F815604C7055
:101AF0002A9901312A91DCE70DF12408DFF8181743
:101B000009224046FFF774FFA9487FAE0DF504791E
:101B1000022541687C9100687F90DFF80407DFF8B8
:101B2000FC168791CDE985167CA984916BA97095E7
:101B3000CDE96E59CDE96C50DFF8E8066B90404670
:101B4000FFF7F2FD994C4FF0010BDFF8DC16D4F8EB
:101B5000FC000024CDE96F9B6E9400F07F00CDE97E
:101B60006C546BADCDE98461DFF8C0166B912946EA
:101B70008DF8FC014046FFF7D7FD2AA88DF8C84133
:101B8000CDF8BC916E9005F12E00029005F12D006C
:101B9000019005F12800039005F13800059005F14A
:101BA0003000CDE96C89B0460026069005F114009E
:101BB000079005F12000CDF8AC9104909DF8C80184
:101BC000DFE810F00600D502D50222003B00090034
:101BD0008DF8CC611DE09DF8E001DFE810F07801A0
:101BE000C902C8027E01070051004B009DF8E801C0
:101BF000810700F07B81032840F0BA829DF8E9015B
:101C0000012840F07581B3E29DF8CC01012800F075
:101C1000AF82DAF8100060B101685AE8042F8242FE
:101C200004D14AE80412002AF3D117E0BFF32F8F42
:101C3000EFE703208DF8CC0194E29DF8D801DFE8AE
:101C400010F03900970296023D00060013009DF83F
:101C5000E40181071FD0032844D089E20221C1702A
:101C600070908DF8CCB11AE09DF8EC0180B103289A
:101C700073D07DE29DF8E401012840F0C68177E24F
:101C80009DF8EC0148B1032840F072827A9D43E14F
:101C9000DDE977015FE0779823E0799D3BE16C987F
:101CA00050F8041B02F004FD07988DF8D861749079
:101CB0006D987390ADF8DC61749875900698FFF795
:101CC000ABFE18B103208DF8D80193E04FF480707B
:101CD000ADF8D9010120000650D003988DF8E461D9
:101CE000779078909AF80600C0B218B1022800F0F8
:101CF00079804FE202F070FC5FFA80F8B8F1000FD3
:101D000061D0B8F1010F6DD0B8F1020F40F033820D
:101D100078982649006800680330C1F8F800254823
:101D20008AF807B0C0F800B002F00CFDCDE98401DC
:101D30004846022102F018F8DFF8F814484602F08D
:101D40002DF801990DF5FE7802988DF8E4B18DF823
:101D5000EC6178917790CDE979019AF8070000F06D
:101D60000300DFE810F0170204001400290005202A
:101D70008DF8D80103208DF8EC013BE00B48016899
:101D80008DF8D8B19DF8D90180F0010034E08AF8CF
:101D90000760799806700748D0F8F8037A9900F040
:101DA000010008700AE000BF0C0500500C14004050
:101DB00060000010081000408AF807608DF8ECB150
:101DC0009DF8DA0187E702F001FC02F0BBFCCDE9E7
:101DD00084014846022101F0C7FFDFF85C14484641
:101DE00001F0DCFF04200DF5FE788DF8D80103200A
:101DF0008DF8E4010021022082B2022A01D10420E0
:101E0000B0E1ADF8C401ADF8C611709BDA78023AC2
:101E10008DF8CC21D2B2032A08D3DA78023A53FAE9
:101E200082F212798DF8CE21012200E00022000416
:101E30008DF8CD2101D00020FDE0D878032807D00F
:101E4000DFF8FC13022813D13A203822D87034E08E
:101E500019796E988DF81012FFF7B8FD002808BFA9
:101E60004846709903220078CA707099087128E07A
:101E700002381C1DC5B25DB126466E9816F8011BCE
:101E8000FFF7A4FD08B100782070013D3446F2E769
:101E9000709D0026E8783A2808D1DFF8A413281DA1
:101EA000884206D0382202F044FD10B1E6490922EA
:101EB00001E00722E349901CE8707098043002F0BA
:101EC0006FFD07988DF8E06175906F987490DDE96B
:101ED00074017690ADF8E46177910598FFF79CFD69
:101EE00008B103203BE17A96769879908DF8E96104
:101EF0009AF808000121C0B2022808BF0321022875
:101F00008DF8E8118DF8E91101D1042027E1069D33
:101F10008DF8EC6179957A95002100208DF810B24A
:101F2000012906D019F8012001310BFA02F2104301
:101F3000F6E708B1C54908609AF8060000F003000A
:101F4000012800F00381B0BB02208AF8060002F0ED
:101F5000F9FBCDE984014846022101F005FFBC49A7
:101F6000484601F01BFF2868A84900680330C1F803
:101F7000F800AF4801464FF48040C1F80003D1F8A3
:101F8000F80140F48010C1F8F8019AF80700C0B2D7
:101F9000012810D103208AF80700A548C0F804B032
:101FA00002F0D0FBCDE984014846022101F0DCFEBD
:101FB0004846A849C8E002F00FFBC5B2002D00F06A
:101FC000B780012D00F0C280022D40F0E6809848D5
:101FD0004FF000618AF808B0C0F8FC12C0F824B0D5
:101FE00002F0B0FBCDE984014846022101F0BCFEBD
:101FF0009949484601F0D2FE48468DF810B202F0E9
:10200000CDF98DF8ECB18DF8E4619AF80800012261
:10201000C1B2012908BF032201298DF8E42101D1B1
:1020200006209CE06FF0030151FA80F0B0FA80F0D6
:102030008DF8E0B1400908906C98016801394A1C9C
:1020400001D00160FAE70224002189944546CDE9D8
:1020500087187CAECDE9854180498491DFF8008204
:102060008049CDF808828196809104997F919DF8EE
:10207000CC116C984A1E18BF012201297B497D9220
:10208000794A08BF11467C914946FFF74DFBBDF8E0
:10209000C401774A01284FF0020008BF03207D9059
:1020A000BDF8C611734808BF104627F82E1C7249A8
:1020B0008994CDE987458691032185916F49849163
:1020C0006F497C908291A7F12E016C98CDE98081B7
:1020D00049467F96A846634C0026FFF725FB9DF8EE
:1020E000CD0190B19DF8CE0187A981E8400907F89C
:1020F000190C6C986349CDE985B68491A7F1190153
:1021000080947F914946FFF70FFB6C9802225E494D
:10211000FFF76EFC089800283FF4C1AD6C982122AF
:102120005A49FFF765FC6C9802C802F0C1FAB6E59F
:1021300002F04CFA02F006FBCDE984014846022188
:1021400001F012FE5249484601F028FE48468DF83B
:1021500010B202F023F903208DF8EC0105208DF870
:10216000E00105208DF8C80102F07BFB26E5FEDECC
:1021700000F096F8FEDE02F0E5FA84ACCDE98401C9
:102180000021204601F0F0FD2C49204601F006FE1A
:10219000404610E001F0CEFFFEDE02F0D3FA84AC40
:1021A000CDE984010021204601F0DEFD39492046B9
:1021B00001F0F4FD2846214602F02AFA02F064FA02
:1021C000FEDEBFF32F8F02F0BDFA2AACCDE92A0163
:1021D0000021204601F0C8FD0A490BE0BFF32F8F14
:1021E00002F0B0FA2AACCDE92A010021204601F024
:1021F000BBFD0549204601F0D1FD02F02BFBFEDEC0
:1022000098F1032061000000560000000C1400400B
:102210007711000018110000101200009B2600002A
:102220002C1200001C120000014500008412000066
:10223000081000405800000057000000590000003E
:10224000D8110000941200009B12000080E100E011
:102250005A0000005B0000005D000000B4120000A6
:10226000511400001F26000060130000C41200007B
:10227000C5120000C8120000EC120000D4120000C9
:1022800071250000341300003C1300003E130000D1
:102290005C0000005E00000002F0DDBA0068FEE7AE
:1022A00080B56F4600F006F8FEDE80B56F4600F0A0
:1022B00001F8FEDE80B56F4602F03EFAFEDED4D4B1
:1022C000F0B503AF2DE9000F83B0D0F800E09246DF
:1022D000BD680A461EF001014FF02B0B01EB05060D
:1022E00008BF4FF4881B1C4680465FEA4E7103D43A
:1022F0004FF0000A002254E0BAF1000F0BD0AAF10F
:1023000001010AF0030C032907D200211346BCF196
:10231000000F2BD142E0002140E08DE87000ACEBD3
:102320000A060021914613461A785D78987802F0E3
:10233000C002DC78802A05F0C00208BF0131802A83
:1023400000F0C00008BF0131802804F0C00008BFC1
:102350000131802808BF013104330436E4D1DDE9BE
:1023600000454A46029EBCF1000F17D0187800F0D5
:10237000C000802808BF0131BCF1010F0ED0587891
:1023800000F0C000802808BF0131BCF1020F05D069
:10239000987800F0C000802808BF013106EB0A00E1
:1023A000461AD8F80800012818D1D8F80C90B14581
:1023B00014D95FEA0E702AD40292A9EB060198F8AC
:1023C000202000208946032A08BF0122DFE802F00E
:1023D000490245024FF00009084642E0404659468E
:1023E000534600F09EF828B10126304603B0BDE800
:1023F000000FF0BDD8F81C102A46D8F81800CB689A
:10240000214603B0BDE8000FBDE8F0401847D8F8FA
:10241000040059460296012601903020C8F80400B5
:10242000534698F820000090404688F8206000F05D
:1024300078F80028D9D198F82020AA460298032AD3
:1024400008BF0122A9EB000100200D46DFE802F0E1
:102450003A0237020025084634E0480801314FEAC5
:102460005109461C013E08D0D8E90602D8F80410EC
:10247000126990470028F5D0B6E7029A40465946BF
:102480005346D8F8046000F04CF80028ACD1D8E9E5
:1024900006012A46CB68214698470028A4D109F1B5
:1024A0000105D8E9069834460126013D2FD0D8F819
:1024B00010204846214690470028F6D095E7480866
:1024C00001314D08461C013E08D0D8E90602D8F873
:1024D0000410126990470028F5D085E7D8E9060274
:1024E0002146D3685246D8F80440984700287FF424
:1024F0007BAFD8E9069A01350126013D09D0DAF80B
:1025000010204846214690470028F6D06DE7002667
:102510006BE70098002688F820000198C8F80400AE
:1025200063E7F0B503AF4DF804BD1C4615460646FB
:10253000B1F5881F08D0D6E906021269904718B194
:1025400001205DF804BBF0BD4DB1D6E9060122467D
:10255000CB6829465DF804BBBDE8F0401847002071
:102560005DF804BBF0BD80B56F46FFF7A3FEFEDE4D
:10257000F0B503AF4DF804BDA2B0068802AD0C461D
:10258000802106F00F0000F157020A2838BF00F141
:102590003002284602F057FA0020B0EB161F28D070
:1025A000310901F00F0101F157020A2938BF01F189
:1025B0003002B0EB162F8DF886201DD0300A00F0C7
:1025C0000F0000F157010A2838BF00F13001002048
:1025D000B0EB163F8DF8851011D0300B00F157018C
:1025E0000A2838BF00F130018DF884107C200421C6
:1025F00007E07F20012104E07E20022101E07D2010
:102600000321009141F228412B18C0F2000120461D
:102610000222FFF755FE22B05DF804BBF0BD80B585
:102620006F468CB00A460178642915D348F21F50D2
:10263000C5F2EB10A1FB00036FF063005B0903FB25
:10264000001041F26031C0F20001C0B231F8100058
:10265000ADF82D00242003E00A2906D226200B46DF
:1026600003F1300102AB195408E041F26030C0F2CE
:10267000000030F81100ADF82D002520C0F1270131
:10268000009102A90B1841F260311046C0F200011E
:102690000022FFF715FE0CB080BDB0B502AFA2B0AE
:1026A00000680DF1080E8C468123002200F00F0116
:1026B00001F157040A2938BF01F130040EEB030180
:1026C000B2EB101F01F8024C30D0040904F00F04E3
:1026D00004F157050A2C38BF04F13005B2EB102F76
:1026E00001F8035C27D0040A04F00F0404F1570535
:1026F0000A2C38BF04F13005B2EB103F01F8045C3E
:102700001ED0040B043B04F00F0404F157050A2CFF
:1027100038BF04F1300501F8055C010CB2EB104F35
:102720000846C3D1581E81280ED31CE0981E013BD9
:10273000812809D317E0D81E023B812804D312E078
:10274000181F033B81280ED2C3F18101009141F291
:1027500028410EEB0003C0F2000160460222FFF7A1
:10276000AFFD22B0B0BDFFF7FEFEFEDE80B56F46C6
:102770001B481D4A016841F0807101601948002121
:102780004160016811400131016018480121C0F821
:102790001015016016488160016016481649091A33
:1027A00021F0030102F09EF914481549091A21F09D
:1027B0000302144902F0F6F802F04FF812484FF401
:1027C0008A51124C124D01600161AC4202D201CC1F
:1027D0008047FAE7FFF760FDFFF73CF9FEDE00BF38
:1027E000FCED00E0001000E0FEFFFF0008000040EC
:1027F00000B0004000F00320ACF10320ACF1032056
:102800002CF20320FC4A000008050050EC4A0000AE
:10281000FC4A000080B56F4601F0A0FCBDE8804096
:1028200001F0CABCF0B503AF2DE9C00B01F08AFF7F
:102830006C46CDE900012046042101F095FA794962
:10284000204601F0ABFA784A906B000605D00020D4
:102850009063D2F80402400406D41068000607D042
:102860004FF0040810461BE091464FF002081AE0B2
:10287000104650F8481F090602D04FF000080FE03C
:10288000104650F80C1F090602D04FF0010807E06F
:10289000104650F86C1F090600F0C0804FF0030886
:1028A00091460021016001F04DFF6E460446CDE9DE
:1028B00000010D463046032101F056FA5B493046CF
:1028C00001F06CFA28880C22411C6FF31F3022544F
:1028D00030462980564901F061FADFE808F00372BA
:1028E0002B482100DDE9000100250A88531C6FF305
:1028F0001F3285540B8001F025FF6C46CDE90001A5
:102900002046022101F030FA4E49204601F046FAF5
:102910004FF000600421C9F808024648857161E063
:10292000DDE9000104240A88531C6FF31F3284542C
:102930000B8070E0DDE9000102240A883D4D531C44
:102940006FF31F3284540B80A879000666D101F022
:10295000F9FE6C46CDE900012046022101F004FA9F
:102960003649204601F01AFA0120A87153E0DDE94A
:102970000012032013885C1C6FF31F33C8542D49C9
:1029800014808A79D2B2022A48D14FF48042C9F821
:102990000422D9F8002122F48012C9F800214FF056
:1029A0000062C9F8082200228A71087201F0CAFE8A
:1029B0006C46CDE900012046022101F0D5F91E49FF
:1029C00026E0DDE9000101240A88531C6FF31F3261
:1029D000845418480B808179C9B2012904D0022996
:1029E0001CD10221017216E0C179C9B2012915D1A9
:1029F0000021C9F86C1081710221C17101F0A2FEA1
:102A00006C46CDE900012046022101F0ADF90C49E8
:102A1000204601F0C3F9BDE80C0BF0BD01F08AFBC4
:102A2000FEDE00BF48000000001100404900000029
:102A30004E00000098F103204D0000004B00000004
:102A40004C0000004A000000DCB504AF01F07AFE43
:102A50006C46CDE900012046042101F085F90449C6
:102A6000204601F09BF9034800210160DCBD00BF56
:102A70004700000018310040DCB504AF2F48016862
:102A8000C90741D1C16BC90722D000212F4CC163B6
:102A90002D490A88931C013204EA03332C4C23602D
:102AA0000A8091B20C22B1FBF2F202EB4202A1EBDE
:102AB000820103290CD8DFE801F00207020721494F
:102AC0004FF480724A6003E01E494FF480720A603E
:102AD000016CC9071FBF002101644FF40031C0F829
:102AE0000412416CC9071FBF002141644FF48021CB
:102AF000C0F80412816CC9071FBF002181644FF424
:102B00000021C0F80412DCBD01F01CFE6C46CDE9CA
:102B100000012046002101F027F90949204601F073
:102B20003DF908484FF480510160402101604FF4A5
:102B30008071416001F08EFEFEDE00BF04B10040F6
:102B4000460000000805005000F0032000F0FF00E0
:102B500040B50040F0B503AF2DE9000F93B001F090
:102B6000F1FD0AACCDE90A010421204601F0FCF890
:102B7000DFF82C1E204601F011F9D84AD2F8540192
:102B8000000604D002F5AA704FF007093DE0104698
:102B900050F8FC1F090602D04FF0080935E0D2F8C2
:102BA0002401000604D002F592704FF003092CE0D6
:102BB000D2F85801000604D002F5AC704FF00409B9
:102BC00023E0D2F85C01000604D002F5AE704FF0AD
:102BD00005091AE0D2F82C01000604D002F596701F
:102BE0004FF0000911E0D2F83801000604D002F5D8
:102BF0009C704FF0010908E0D2F81001000600F0C7
:102C00006B8402F588704FF0020900219246016042
:102C100001F098FD0AAE0446CDE90A010D463046A2
:102C2000032101F0A1F8DFF87C1D304601F0B6F871
:102C300028880C22411C6FF31F3022543046298013
:102C4000DFF8641D01F0AAF80820DFE809F00509A3
:102C50000B070F110D13140000200CE003200AE0F5
:102C6000012008E0022006E0062004E0042002E043
:102C7000052000E00720DDE90A121388DFF82C8D1B
:102C80005C1C6FF31F33C854148098F80200811E37
:102C9000CAB2032A28BF0121C9B2012911D00229D1
:102CA00014D1DFE819F009000E01AE00BA004700A8
:102CB0001F01A401F500AB01DFF8F40C00214181F4
:102CC000E0E1B9F1070F08BF002802D001F084F855
:102CD000FEDE01F097F80005F8D5012088F8020023
:102CE00001F030FD0AACCDE90A010221204601F0D5
:102CF0003BF8DFF8C01C204601F050F898F80000BF
:102D0000002800F0BF8198F80100002800F0BA8187
:102D100098F80200002800F0B581042088F802002D
:102D20000020A8F8000013B0BDE8000FBDE8F04097
:102D300001F0B8B8DFF8780C40890028C6D1684E99
:102D400001220025D6F800905FFA89F0C109B2EBA4
:102D5000D01F0C4618BF0224B5EBD01F08BF0C468D
:102D6000D6F804A0B368022CF068D9B241EA002179
:102D70000991D6F810E07169B269F6695FFA8EFCC4
:102D80004CEA012BD2B242EA06220892CDF81C90FE
:102D900040F04B818DF83050CDE90A555546DDE9BC
:102DA000089601F0CFFC0DACCDE90D0100212046C5
:102DB00000F0DAFFDFF8001C204600F0EFFF079874
:102DC000214601F001F92846214601F0FDF8DFF81F
:102DD000EC5B30462146A84758462146A84748465E
:102DE0002146A8473D490120086501F0ABFC0AAC2B
:102DF000CDE90A010221204600F0B6FFDFF8701E7F
:102E00003DE101F09FFC0AACCDE90A010221204618
:102E100000F0AAFFDFF85C1E31E1DFF86C6E70890C
:102E2000012800F0218102287FF450AFD14601F043
:102E300089FC0AACCDE90A010221204600F094FF8A
:102E4000DFF8341E204600F0A9FFB089002800F00A
:102E50001D81234DD5F880014030C5F88001B4892B
:102E6000412CC0F0168101F06DFC0AACCDE90A01DD
:102E70000221204600F078FFDFF8001E204600F017
:102E80008DFF4020214601F09FF8B08940381AE1BB
:102E900000F0B8FFC10500F1D480800540F1E5865F
:102EA00001F050FC0AACCDE90A010221204600F0F5
:102EB0005BFFDFF8E81D204600F070FF08480021A6
:102EC000CFE001F03FFC0AACCDE90A010221204627
:102ED00000F04AFFDFF8A81DD1E000BF04700240F7
:102EE00080740240DAF86854CAF8685415F0040691
:102EF00008D0DFF8940D0078C0B202287FF4E6AE67
:102F000000F0E8FFA8072AD501F01CFC0AACCDE9C7
:102F10000A010221204600F027FFDFF8841D204629
:102F200000F03CFF01F00EFC0AACCDE90A010221E1
:102F3000204600F019FFDFF86C1D204600F02EFF40
:102F4000DFF8440D01210170DFF8400D8188C08851
:102F500089B280B288421EBFD348802101606EB121
:102F600001F0F0FB0AACCDE90A010221204600F095
:102F7000FBFEDFF8341D204600F010FF680318D573
:102F8000CA48866A804601F0DDFB0AACCDE90A0139
:102F90000221204600F0E8FEDFF8101D204600F078
:102FA000FDFE06F07F00214601F00EF80020C8F873
:102FB000280028030DD501F0C5FB0AACCDE90A01B4
:102FC0000221204600F0D0FEDFF8E41C204600F08D
:102FD000E5FE280756D501F0B5FB0AACCDE90A019C
:102FE0000221204600F0C0FEDFF8C81C47E013B005
:102FF000BDE8000FBDE8F04000F06CBF01F0A2FB9F
:103000000AACCDE90A010221204600F0ADFEDFF84E
:10301000801C204600F0C2FEDFF86C0C41780229CB
:1030200080F02386002141702CE0C9F34112002A70
:1030300051D0022A4CD0012A7FF4ACAE4FF48072FA
:103040004AE001F07FFB0AACCDE90A0102212046EB
:1030500000F08AFEDFF83C1C204600F09FFE9348FB
:103060000121C0F8AC100DE001F06CFB0AACCDE919
:103070000A010221204600F077FEDFF8E81C204616
:1030800000F08CFE13B0BDE8000FF0BD0020708191
:10309000F8E701F057FB0DF12808CDE90A010221FC
:1030A000404600F061FEDFF8B81C404600F076FEB6
:1030B0002046414600F088FF00F0EAFF04F07F0060
:1030C000C5F884010020B0810120C9F80000D9E7CB
:1030D0004FF4007200E0002209F00F06032E3FF6C5
:1030E00059AE04F00104049306940023DFE806F0CF
:1030F0000A0205084FF4803304E04FF4003301E086
:103100004FF4403342EA0304C4F30122260A1C0CA4
:10311000012A059337D00396002A069E7FF43AAE23
:103120005FFA8AF255460C2ACDF808B000F25382B5
:10313000DFE812F00D0035015102190151020601BC
:10314000BE00E70052016401AB019801A100002E0E
:1031500000F041820998000402BF089880B202285A
:1031600040F03982022C00F01182012C00F01B8209
:10317000002C40F030820298000440F02C824FF086
:10318000000E04204EE106995FFA8AF0049A554633
:1031900022283AD0DDF82090212821D0202808BF0D
:1031A000002948D0059A002406F00300ADF84040FD
:1031B0000F94CDE900B940EA1220099E2A4641EA5F
:1031C000002111A8334601F0D7FA9DF844000228E7
:1031D00040F022828DF830400320CDE90A4429E2F4
:1031E0000029DFD0012CDDD10998000404BF1FFAAB
:1031F00089F00728D6D11FFA8BF0B0F5807F28BF61
:103200004FF0000CCED2022027E0DDF820900029FC
:10321000C8D1012C08BF5FEA0940C3D1099880B228
:1032200003289CBF1FFA8BF0FF28BBD862F3082C41
:10323000C2F3400011E0012CB4D10998000404BF8E
:103240001FFA89F00728ADD11FFA8BF0B0F5807F07
:1032500028BF4FF0000CA5D203208DF82A000F984C
:10326000ADF828C0CDF82B00BDF84000ADF82F0018
:103270000120099EDEE1002E00F0AD81022C40F01D
:10328000AA810998000402BF089880B2022840F081
:10329000A281029801F0A7FAC2B2022A00F09B8133
:1032A00000F0010E0A20BDE004E200E0807402405C
:1032B000002E00F09081002C40F08D8101F0A8FAE2
:1032C000C1B20C2900F087814FF0FF3151FA80F232
:1032D000062A00F2808104210220DFE812F00700B4
:1032E0005201A3007C017C016E0178010498000664
:1032F00004BF02985FEA004040F06D81012100F0B8
:10330000A4BC56EA040140F0668101F081FAC0B223
:103310000C2800F06081032800F02981022800F0C9
:103320002881069E0128554640F0558104980006E4
:1033300004BF02985FEA004040F04D8101211EE188
:10334000002E40F04881099880B27F2800F2438126
:10335000002C40F04081089802990843000440F096
:103360003A8105205CE0002E40F035810898000489
:1033700040F03181099880B2002800F0DD800228F9
:1033800000F0BF80012808BF002C40F02481029883
:10339000000440F020814FF0000E082042E0002E93
:1033A00040F01981032C00F016810898000440F0C9
:1033B0001281099880B2002800F0CD80012808BF52
:1033C000002C40F008810298000440F004814FF086
:1033D000020E0020002125E0002E00F0FC8008985D
:1033E00080B2012808BF002C40F0F58009980299AE
:1033F0000843000440F0EF80012013E0002E40F06D
:10340000EA80099880B2FF2800F2E580002C40F0A5
:10341000E280089802990843000440F0DC8006200E
:10342000DDF810E0049AC9B2120642EA01415FFADF
:103430008EF241EA02210844CDF8290000200299C9
:103440008DF828000898C1EA0040CDF82D009DF8BD
:103450002A00BDF82810BDF82F80DDF82B4041EA86
:10346000004632E1002E40F0B680012C40F0B380DF
:10347000089A120401BF0002090208435FEA0040F3
:1034800040F0A98009200499CCE7002E00F0A38029
:10349000029884F00103002180B2B0F5807F4FF0E4
:1034A000000038BF0120099A92B21A43089B9BB2D0
:1034B00083F001031A43B2FA82F25209104008BFA6
:1034C0008646002800F08780002203200492002214
:1034D000029200220892A5E7DFF8AC070078C0B29C
:1034E00001287FF4CFADDFF8A4078188C08889B2B6
:1034F00080B288423FF4C6AD92464FF00609FFF70E
:1035000087BB44EA0E00000665D16FF0020050FA56
:1035100081F24FF0020E0820032AFFF483AF069ECB
:10352000CAB2012A3FF47EAF5546022A53D14FF06A
:10353000020E0820022175E7022C4CD1029801F0FE
:1035400052F90491C1B2022945D000F001014FF0B7
:10355000010E082066E7022C3DD1029801F043F9E4
:10356000C2B2022A37D000F0010E00205AE7022131
:1035700005E0069E5FEA0B4055462CD1002107204E
:1035800064E30298000426D100215EE3029801F072
:103590002AF90491C1B202291DD000F001014FF0B7
:1035A000010E04203EE7029880B2B0F5807F12D26F
:1035B000714604204FF0020E34E70498000604BF61
:1035C00002985FEA004006D1022002212AE7029811
:1035D000000400F0398303982A460599DDF808B005
:1035E00000F00300CDF800B040EA1120DDF8209093
:1035F000CDF8049046EA0021099E11A8334601F057
:10360000BBF89DF84400022806D100208DF8300058
:10361000CDE90A0003200DE01198CDF83500BDF882
:103620004800ADF839000D980A90DDF83700CDF864
:103630002B00022003283FF4B4AB9DF82A10BDF8FC
:103640002820DDF82B4042EA0146E0B3DFF8385687
:10365000012827D06878022858D104F47F00C6F3E7
:103660000745B0F5003F69D106F47F40B0F5807F93
:1036700040F0A68101F066F80AAECDE90A01022108
:10368000304600F071FBDFF83C16304600F086FB58
:103690002846314600F098FC2046314600F097FC61
:1036A000FFF7A0BB687802283CD1300652D001F069
:1036B00049F80AACCDE90A010021204600F054FB8C
:1036C000DFF80816ADE2BDF82F8026F07F404FEA04
:1036D000142A4FEA1049C0F30720DFE810F00B006E
:1036E000E2008B00CA007300F8001E01D6004B01F7
:1036F0007F00560101F026F80AACCDE90A0100214D
:10370000204600F031FBDFF854168AE201F01AF887
:103710000AACCDE90A010021204600F025FBDFF8C4
:1037200098157EE201F00EF80AACCDE90A010021FD
:10373000204600F019FBDFF8901572E201F002F864
:103740000AACCDE90A010021204600F00DFBDFF8AC
:103750006C1566E26FF0010050FAA6F0C1B20229C2
:1037600028BF0220C6F30744C0B2002800F07781CA
:10377000012800F0418100F0E5FF0AADCDE90A0122
:103780000221284600F0F0FADFF84415284600F040
:1037900005FB04F00100294600F016FCC6F30020EA
:1037A000294600F011FC00F0CDFF0AACCDE90A017A
:1037B0000221204600F0D8FADFF81815204600F064
:1037C000EDFA12E100F0BEFF0AACCDE90A010021DA
:1037D000204600F0C9FADFF8501522E200F0B2FFEF
:1037E0000AACCDE90A010021204600F0BDFADFF85D
:1037F000F81416E200F0A6FF0AADCDE90A01022195
:10380000284600F0B1FADFF82815284600F0C6FA7D
:103810004046294600F0D8FBE0B2042800F21882A6
:10382000DFE810F00500B501C9011602AA0100F099
:1038300089FF0AACCDE90A010221204600F094FA82
:10384000DFF80015204600F0A9FA5046214600F0A6
:10385000BBFB5FEA0A6000F0E98100F073FF0AAC8D
:10386000CDE90A010021204600F07EFADFF8D814E5
:10387000D7E100F067FF0AACCDE90A01002120463C
:1038800000F072FADFF8A414CBE100F05BFF0AACA1
:10389000CDE90A010021204600F066FADFF8501455
:1038A000BFE100F04FFF0AACCDE90A01022120463A
:1038B00000F05AFADFF89C14204600F06FFA01205D
:1038C000214600F081FBDFF890040121B5E100F012
:1038D00039FF0AACCDE90A010221204600F044FA82
:1038E000DFF83014204600F059FA4846214600F02F
:1038F0006BFBE5494878002800F01F81012800F0A3
:10390000BF8000F01FFF0AACCDE90A01002120466C
:1039100000F02AFADFF8001483E100F013FF0AAC8C
:10392000CDE90A010221204600F01EFADFF8C41397
:10393000204600F033FA4846214600F045FBD248C5
:103940004078002800F00D81012800F0B180CE48B9
:10395000B9F1000F00F03A81C078484545D000F039
:10396000F1FE0AACCDE90A010021204600F0FCF985
:10397000E14956E100F0E6FE0AACCDE90A0100217A
:10398000204600F0F1F9D9494BE100F0DBFE0AAC2A
:10399000CDE90A010021204600F0E6F9D14940E1D5
:1039A00000000000010000004500000022F203209A
:1039B00098F103200300000007000000CF3F000043
:1039C00000F0C0FE0AAECDE90A010221304600F047
:1039D000CBF9BB49304600F0E1F92846314600F00A
:1039E000F3FA2046314600F0EFFA13B0BDE8000FBD
:1039F000BDE8F04000F046BB00F0A4FE0AACCDE903
:103A00000A010221204600F0AFF9B349204600F038
:103A1000C5F9688900287FF459A901266E8100F054
:103A200091FE0AACCDE90A010221204600F09CF982
:103A3000AA49204600F0B2F9974908F10300C1F8FD
:103A400080020720C1F884028E480146D0F8FC01AC
:103A500040F00200C1F8FC018E64FFF713BB00F0D8
:103A600071FE0AACCDE90A010221204600F07CF982
:103A70009B49204600F092F908F103000721DCE0A1
:103A8000B9F1000F00F0B580887848453FF4FAAAF4
:103A9000012081F80290487000F054FE0AACCDE994
:103AA0000A010221204600F05FF99C49FFF7E7BABE
:103AB000B9F1000F99D0B9F1010F40F0A880724818
:103AC0000546867800F03EFE0AACCDE90A010221E7
:103AD0004FF00209204600F047F98949204600F0DE
:103AE0005DF96D494FF001080F2085F80380AE7035
:103AF00085F801900E46C1F890000920C1F89400A5
:103B00000020C86200F01EFE0AACCDE90A010221C5
:103B1000204600F029F97B49204600F03FF90A20B1
:103B200021460A2500F050FA7748C6F89401554816
:103B3000C6F89851C0F8048057E7B9F1000F3FF478
:103B4000A1AA012081F80290487000F0FBFD0AACA8
:103B5000CDE90A010221204600F006F97149FFF77C
:103B60008EBA00F0EFFD0AACCDE90A010021204633
:103B700000F0FAF8664954E000F0E4FD0AACCDE943
:103B80000A010021204600F0EFF86A4949E000F000
:103B9000D9FD0AACCDE90A010221204600F0E4F883
:103BA0006649204600F0FAF8B8F1120F28BF4FF02E
:103BB0001208634840E000F0C5FD0AACCDE90A01F7
:103BC0000121204600F0D0F85B492AE006468578BE
:103BD00000F0B8FD0AACCDE90A010221204600F050
:103BE000C3F84649204600F0D9F80120B57070703E
:103BF000FBE60020487000F0A5FD0AACCDE90A0103
:103C00000221204600F0B0F84549FFF738BA00F02D
:103C100099FD0AACCDE90A010021204600F0A4F884
:103C20003A49204600F0BAF8FFF7DCB84748B8F147
:103C30004B0F28BF4FF04B08414613B0BDE8000FB3
:103C4000BDE8F04000F0C6B903210220FFF7EABB4F
:103C500000F078FD0AACCDE90A010021204600F011
:103C600083F83B49204600F099F800F097F9FEDE12
:103C70002E000000390000002F000000300000007E
:103C80003A0000000470024098F10320ACF10320D8
:103C900006000000040000008074024005000000DF
:103CA0003300000034000000350000003600000042
:103CB00037000000380000002A0000002B00000040
:103CC0002D0000002C00000023000000290000004F
:103CD000240000002500000027000000280000004C
:103CE0002600000008000000220000002100000063
:103CF0002000000015000000180000001B0000005C
:103D0000190000001A00000014F203201700000040
:103D10001600000010000000110000001400000058
:103D200013000000120000001F0000001E00000031
:103D3000090000000F0000000C0000000B00000054
:103D4000B4F103200D0000000E000000C6F10320B6
:103D50000A0000001D00000020F203201C000000EB
:103D60003100000032000000F0B503AF4DF804BD93
:103D7000094A1268D0E90034258892096E1C6FF355
:103D80001F3559552680D0E9003118465DF804BB2F
:103D9000BDE8F04000F09AB9041000E0F0B503AFC0
:103DA0004DF804BD8AB27F2A0AD3D0E9003441F02D
:103DB000800125886E1C6FF31F355955D109268067
:103DC000D0E9002003885C1C6FF31F33D1540480BA
:103DD0005DF804BBF0BDD4D4E0B502AF00F092F9B9
:103DE00000F0B0FC6C46CDE9000120460021FFF751
:103DF000BBFF03492046FFF7D1FF00F02BFDFEDE9D
:103E000043000000F0B503AF2DE9F00B2248D0F8D5
:103E10000080C0F8008000F095FC01AC0546CDE9BB
:103E200001010E4620460321FFF79EFF1B49204655
:103E3000FFF7B4FF30880A22411C6FF31F302A5469
:103E4000204631801649FFF7A9FF029E40F6FF7118
:103E500027F81A8C358828466FF31F3088420DD119
:103E6000019CA7F11A09012204F6FF71484600F0EF
:103E70007BFC09F101002146012204E001990222A4
:103E80000144A7F11A0000F06FFCA81C30804046E6
:103E900004B0BDE8000BF0BD007402404200000019
:103EA00062000000DCB504AF08480121016000F0A9
:103EB00049FC6C46CDE9000120460221FFF754FF82
:103EC00003492046FFF76AFFDCBD00BF04750240CE
:103ED00041000000F0B503AF2DE9C007DFF8A4A052
:103EE000BAF80450BAF80600401B01041CD084B292
:103EF0003F2C28BF3F2454FA85F081B2E8B2B1F5D7
:103F0000807F13D9DAF80090C0F58076DFF87880EA
:103F100009EB00013246404600F042FDA11B08EBD0
:103F200006008AB2494606E0012625E0DAF80010CC
:103F300022460144144800F033FD2819AAF8040071
:103F400020064FF0010617D000F0FCFB6D46CDE9CE
:103F5000000128460221FFF707FF0C492846FFF71A
:103F60001DFF2046294600F02FF809480649016048
:103F7000446008480660022607480670BDE80C0742
:103F8000F0BD00BFACF1032000C0032040000000E2
:103F9000287602400C70024098F10320E0B502AF91
:103FA00000F0B0F800F0CEFB6C46CDE900012046F1
:103FB0000021FFF7D9FE03492046FFF7EFFE00F08E
:103FC00049FCFEDE3D000000C0B200F069B880B2DE
:103FD00000F066B8F0B503AF4DF8048D82B0234E03
:103FE0008046708990BB234C88B20D4640280AD980
:103FF000206820F004002060A5F14000B08102207C
:104000004025708104E000F043F80220C6F80A0061
:1040100000F098FB6E46CDE9000130460221FFF723
:10402000A3FE15493046FFF7B9FE28463146FFF793
:10403000CBFF124905F07F0048601148C1F80080AD
:104040000121215002B05DF8048BF0BD00F07AFB35
:104050006C46CDE9000120460021FFF785FE0449AA
:104060002046FFF79BFE00F0F5FBFEDE98F10320F3
:104070003B000000007202403C000000007602405D
:1040800004FEFFFF014801210160704750700240AB
:104090000248016841F0040101607047007202406B
:1040A000F0B503AF4DF804BD0246D1E900031C880A
:1040B0000626651C6FF31F3406551D80D1E90001EB
:1040C0005DF804BBBDE8F04000F000B8F0B503AF08
:1040D0004DF804BD0C880023661C42F080056FF388
:1040E0001F34B3EBD21F08BF02F07F05B3EBD21F22
:1040F00005554FEAD21534462A460E80ECD15DF8BC
:1041000004BBF0BDDCB504AF08480021016000F03D
:1041100019FB6C46CDE9000120460221FFF724FE81
:1041200003492046FFF73AFEDCBD00BF047502409C
:104130003F000000E0B502AF00F004FB6C46CDE9A3
:10414000000120460021FFF70FFE03492046FFF73C
:1041500025FE00F07FFBFEDE44000000DCB504AF6E
:1041600000F0F0FA6C46CDE9000120460421FFF78B
:10417000FBFD0D492046FFF711FE0C4801680906BA
:1041800011D00021016000F0DDFA6C46CDE900019C
:1041900020460221FFF7E8FD05492046FFF7FEFD16
:1041A000044801210170DCBD530000000001004003
:1041B0005400000094F10320F0B503AF2DE9C00BCB
:1041C00000F0C0FA6C46CDE9000120460421FFF75B
:1041D000CBFD5D492046FFF7E1FD5C484FF000084C
:1041E0000168090602D04FF000090FE0014651F8BE
:1041F000042F120603D04FF00109084606E050F8DC
:10420000081F090600F095804FF00209C0F80080F1
:1042100000F098FA6E460446CDE900010D4630469E
:104220000321FFF7A1FD4A493046FFF7B7FD288873
:104230000C22411C6FF31F3022543046298045491F
:10424000FFF7ACFDDDE900010A88531C6FF31F3254
:1042500000F802900B80404DA878811ECAB2032A54
:1042600028BF0121C9B271B1012967D12A78002A7A
:10427000114618BF01217ABB98F001022CD101210F
:104280002970002144E0B8F1000F4FD1B9F1000FBF
:1042900057D1334849F2753103220160C0F8142127
:1042A000016001212F48016000F04CFA6C46CDE915
:1042B000000120460221FFF757FD2B492046FFF75A
:1042C0006DFD2A4800210078A5F80110C0B2002831
:1042D00018BF0120287029E0687890BB18EA010017
:1042E00024D1B9F1020F2CD10120687000F02AFA14
:1042F0006C46CDE9000120460221FFF735FD174944
:104300002046FFF74BFD2978A878B1FA81F14909D9
:1043100060B159B9687848B10420A870002028809D
:10432000BDE80C0BBDE8F040FFF7BCBDBDE80C0BD1
:10433000F0BD4FF003094FF001088CE7FFF72EFEA8
:10434000FEDEFFF749FDFEDE4F0000001C010040CD
:10435000020000005200000022F203205100000081
:1043600000EC0640007502405000000094F103206C
:1043700007484FF4803101604FF48051C0F83C127F
:104380004FF4807103480160034800F007B800BF94
:1043900004B300400C0500502A140000D0B502AF51
:1043A000002201230021012A05D0845C013203FA96
:1043B00004F42143F7E709B101480160D0BD00BF13
:1043C00000E100E0B0B502AF154D0024B4F5C67FA2
:1043D00004D0281900F036F88434F7E711480F218B
:1043E00001234160082101600F4981608121C16082
:1043F0000E490A6863F302020A6040F202214FF498
:10440000822281620A49C162002101630949425046
:1044100009490A4A42500A48BDE8B040FFF7BEBF0A
:1044200040C103200C150040080000066C16004037
:1044300021100100F4FCFFFFF8FDFFFF0940040814
:104440002B14000009490A69026051E8043F9342B5
:1044500007D141E80402002A1A4608BF00F0FFB95C
:10446000F2E7BFF32F8F1A46EEE700BF98F1032063
:10447000BCB504AF4FF080400125056000F062F943
:104480006C46CDE9000120460221FFF76DFC05498D
:104490002046FFF783FC044805600448BDE8BC40A3
:1044A000FFF77CBF55000000040300402C140000FF
:1044B000B0B502AF0C4D0024B4F5C67F04D0281966
:1044C000FFF7C0FF8434F7E70848012101604FF48B
:1044D000607101600648074901600748FFF75EFF09
:1044E000064880210160B0BD04F0032004030040B1
:1044F000047302402194C0012C14000004E100E088
:10450000007800F07F02052A1ED00A281ED00F284E
:104510001ED014281ED019281ED01E281ED02328D5
:104520001ED028281ED02D281ED032281ED0372875
:104530001ED03C281ED041281ED046281ED04B2815
:104540000CBF134A114A1AE01F4A18E01D4A16E030
:104550001B4A14E0194A12E0174A10E0154A0EE00F
:10456000134A0CE0114A0AE00F4A08E00D4A06E03F
:104570000B4A04E0094A02E0074A00E0054AD1E993
:104580000601CB6811460222184700BF4B140000F9
:104590002D1400002F14000031140000331400000B
:1045A0003514000037140000391400003B140000DB
:1045B0003D1400003F1400004114000043140000AB
:1045C000451400004714000049140000014801216F
:1045D0000160704704100040BCB504AF0A4804688D
:1045E00000F0B0F86D46CDE9000128460321FFF741
:1045F000BBFB06492846FFF7D1FB2046294600F0C1
:1046000007F8204602B0B0BD501500406000000021
:10461000F0B503AF4DF804BD0C460546D1E90001E5
:104620000C260A88531C6FF31F32865420460B80D9
:104630001449FFF7B3FB05F00F010820DFE801F094
:10464000070D0F091521212121110B131600002040
:104650000CE003200AE0062008E0012006E002202A
:1046600004E0052002E0072000E00420D4E9001265
:1046700013885C1C6FF31F33C85414805DF804BBAF
:10468000F0BDFEDE5F000000E0B502AF00F05AF8BA
:104690006C46CDE9000120460021FFF765FB034988
:1046A0002046FFF77BFB00F0D5F8FEDE3E00000061
:1046B000E1B3F0B503AF2DE90007DFF8749082464F
:1046C0000C46B9F80650B9F80400401B00F580709C
:1046D000010424D080B2A04238BF044654FA85F0C9
:1046E000E9B280B2B0F5807F0FD9D9F80080C1F56A
:1046F000807608EB01005146324600F051F9A01BCC
:104700000AEB060182B2404604E0D9F800002246D6
:104710000844514600F044F92819A9F80600054854
:1047200080210160BDE80007BDE8F040704700BF90
:10473000ACF1032004E200E080B56F4600F08AF897
:10474000FEDED4D4064905480968C9B200290549E6
:1047500018BF00F5805018BF0231704700D0032009
:1047600004ED00E090F103202AB110F8013B013A7A
:1047700001F8013BF8E77047F0B503AF4DF804BD11
:10478000D6B201F00104C1F30745D7E90212062EA3
:1047900011D00A2E20D1012D08BF002C1CD11204EB
:1047A0001AD18AB2FF2A17D80171002183700170D3
:1047B000190A417014E0012D0ED16CB18CB2FF2C9E
:1047C0000AD803F47F44B4F5085F05D101710121D3
:1047D00042804370017003E000218180022101606A
:1047E0005DF804BBF0BD024680B2FF2801D900216C
:1047F00007E0C2F30310002128B1082801D10120ED
:1048000002E002207047002002F00F017047D4D46C
:104810004FF0FF3151FA80F10C200A2918D8DFE857
:1048200001F006080A0C0E101214171716000120CA
:10483000704702207047032070470420704705200E
:1048400070470620704707207047082070470B20EC
:104850007047FFBEAABE62B6704772B6704740BFCF
:10486000704720BF7047F0B503AF4DF8048DA2B379
:10487000531E02F0030C032B14D20022BCF1000FD4
:104880002BD08B5CBCF1010F835426D0531CBCF1A0
:10489000020FCE5CC65420D00232895C81545DF890
:1048A000048BF0BDACEB020E01F10108441C6FF06B
:1048B000030208EB0206A5180432F378EB70337993
:1048C0002B7173796B71B379AB710EEB0203043307
:1048D000EFD10432BCF1000FD3D15DF8048BF0BDF1
:1048E000D0B502AF12B3531E02F0030C032B01D25A
:1048F00000220FE0ACEB020E421C6FF00303D41851
:104900000433A17161712171E1700EEB0304043471
:10491000F5D11A1DBCF1000F1ABF8154BCF1010F73
:10492000D0BD0244BCF1020F517000D1D0BD9170D6
:10493000D0BDF0B503AF2DE9000B4AB3A2F1010ED3
:10494000C2F1000C0023CC5CC55CA54224D19E457D
:104950001ED001EB030800EB030998F8014099F819
:104960000150A54218D10CEB0306B41C10D098F8E6
:10497000024099F80250A5420ED1F41C08D098F8D4
:10498000034099F80350A54206D104339A42DAD184
:104990000020BDE8000BF0BD281BBDE8000BF0BDFA
:1049A000FFF761BF042A38BFFFF7FABFB0B502AF07
:1049B000A2F1040C012303EB9C0313F003030ED0BC
:1049C0008E4604465EF8045B012B44F8045B1FD15D
:1049D000634620467146BCF10C0F04D212E0134628
:1049E000BCF10C0F0ED30D68103B0560032B4D6816
:1049F00045608D688560CD6801F11001C56000F1EA
:104A00001000F0D802F00302BDE8B040FFF7C8BFC5
:104A10004D68022B456007D1A2F108030831083028
:104A2000BCF10C0FDFD2EDE78B680C318360A2F193
:104A30000C030C30BCF10C0FD5D2E3E70B4611464A
:104A40001A46FFF74DBF1346D2B2042938BFFFF70D
:104A5000F5BFD0B502AFA1F1040E42EA0363012411
:104A600043EA024304EB9E0443EA022314F00304E6
:104A700010D08446012C4CF8043B10D1744660469B
:104A8000BEF10C0F1ED201F00301BDE8D04060461C
:104A9000FFF7D4BF0C46BEF10C0F13D2F3E7022C84
:104AA000436007D10830A1F108048446BEF10C0F21
:104AB00008D2E8E783600C30A1F10C048446BEF113
:104AC0000C0FE0D3C0E90033103CC0E902331030D2
:104AD000032CF7D8844601F00301BDE8D0406046BE
:0A4AE000FFF7ACBF0022FFF7AEBFE6
:104AEC00B144000071440000C54300007143000054
:104AFC0040C003200000000012010002EF02014040
:104B0C002020100300010000000109024B000201EB
:104B1C000080FA080B0002020201000904000001E7
:104B2C0002020100052400100105240103010424E4
:104B3C000202052406000107058103400020090438
:104B4C000100020A000000070502024000000705F0
:104B5C008202400000000000A120000000000200C2
:104B6C000300000001000000028025000000000886
:040000030000276D65
:00000001FF