// This file is autogenerated by _xtask.rs
//! # Examples
use crate::*;
/// Basic [d3d9::Device] setup with [winit](https://docs.rs/winit/)
///
/// <center>
/// <h4 id="screenshots" class="section-header"><a href="#screenshots">Screenshots</h4>
/// <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAMIUlEQVR4nO3XwQAAIBRAsVKJJZb8DfoW77RZbJ/7/gIAAAgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBpWNNl08tbbNAAAAAElFTkSuQmCC">
/// </center>
///
/// ### Source
/// ```no_run
/// #![windows_subsystem = "windows"]
///
/// use thindx::d3d9::*;
///
/// use raw_window_handle::*;
///
/// use winapi::shared::d3d9types::*;
///
/// use winit::dpi::*;
/// use winit::event::{Event::*, WindowEvent::*};
/// use winit::event_loop::*;
/// use winit::window::*;
///
/// use std::ptr::*;
///
///
///
/// fn main() {
/// dev::win32::optional_dev_init();
/// let event_loop = EventLoop::new();
/// let window = WindowBuilder::new()
/// .with_title("00-clear-winit - thindx example")
/// .with_inner_size(Size::Physical(PhysicalSize { width: 800, height: 600 }))
/// .with_visible(!dev::d3d9::hide_for_docs_gen())
/// .build(&event_loop).unwrap();
///
/// let hwnd = match window.raw_window_handle() {
/// RawWindowHandle::Win32(Win32Handle { hwnd, .. }) => hwnd.cast(),
/// other => panic!("Expected RawWindowHandle::Windows(...), got {:?} instead", other),
/// };
///
/// let mut pp = D3DPRESENT_PARAMETERS {
/// Windowed: true.into(),
/// hDeviceWindow: hwnd,
/// SwapEffect: SwapEffect::Discard.into(),
/// PresentationInterval: Present::IntervalOne.into(),
/// .. unsafe { std::mem::zeroed() }
/// };
///
/// let behavior =
/// // Create::DisablePrintScreen | // d3d9ex
/// Create::FpuPreserve |
/// Create::HardwareVertexProcessing |
/// Create::NoWindowChanges;
///
/// let d3d = unsafe { Direct3D::create(SdkVersion::default()) }.unwrap();
/// let device = unsafe { d3d.create_device(0, DevType::HAL, null_mut(), behavior, &mut pp) }.unwrap();
///
/// event_loop.run(move |event, _, control_flow|{
/// *control_flow = ControlFlow::Poll;
///
/// match event {
/// WindowEvent { event: CloseRequested, window_id } if window_id == window.id() => {
/// std::process::exit(0); // Ensure Device outlasts closing HWND!
/// },
/// MainEventsCleared => {
/// device.clear(None, Some(Color::argb(0xFF224466)), None, None).unwrap();
/// device.present(.., .., (), None).unwrap(); // TODO: Handle D3DERR::DEVICELOST
/// dev::d3d9::screenshot_rt0_for_docs_gen(&device);
/// },
/// _ => {},
/// }
/// });
/// }
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3d9-00-clear-winit
/// ```
pub const d3d9_00_clear_winit : () = ();
/// Basic [d3d9::Device] setup with [winapi](https://docs.rs/winapi/)
///
/// <center>
/// <h4 id="screenshots" class="section-header"><a href="#screenshots">Screenshots</h4>
/// <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAMIUlEQVR4nO3XwQAAIBRAsVKJJZb8DfoW77RZbL97/gIAAAgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBAQAAMgICAAAkBEQAAAgIyAAAEBGQAAAgIyAAAAAGQEBAAAyAgIAAGQEBAAAyAgIAACQERAAACAjIAAAQEZAAACAjIAAAAAZAQEAADICAgAAZAQEAADICAgAAJAREAAAICMgAABARkAAAICMgAAAABkBAQAAMgICAABkBtRcNl3bGEDFAAAAAElFTkSuQmCC">
/// </center>
///
/// ### Source
/// ```no_run
/// #![windows_subsystem = "windows"]
///
/// use thindx::d3d9::*;
///
/// use abistr::cstr16 as wcstr;
///
/// use winapi::shared::d3d9types::*;
/// use winapi::shared::minwindef::*;
/// use winapi::shared::windef::*;
///
/// use winapi::um::libloaderapi::*;
/// use winapi::um::winuser::*;
///
/// use std::cell::RefCell;
/// use std::ptr::*;
///
///
///
/// thread_local! {
/// static D3D : Direct3D = unsafe { Direct3D::create(SdkVersion::default()) }.unwrap();
/// static DEVICE : RefCell<Option<Device>> = RefCell::new(None);
/// }
///
/// unsafe extern "system" fn window_proc(hwnd: HWND, umsg: u32, wparam: WPARAM, lparam: LPARAM) -> LRESULT {
/// match umsg {
/// WM_DESTROY => {
/// DEVICE.with(|d| *d.borrow_mut() = None);
/// PostQuitMessage(0);
/// 0
/// },
/// _ => DefWindowProcW(hwnd, umsg, wparam, lparam),
/// }
/// }
///
/// fn main() {
/// dev::win32::optional_dev_init();
///
/// let hinstance = unsafe { GetModuleHandleW(null()) };
/// assert!(!hinstance.is_null());
///
/// let hcursor = unsafe { LoadCursorW(null_mut(), IDC_ARROW) };
/// assert!(!hcursor.is_null());
///
/// let wc = WNDCLASSW {
/// lpfnWndProc: Some(window_proc),
/// hInstance: hinstance,
/// hCursor: hcursor,
/// lpszClassName: wcstr!("SampleWndClass").as_ptr(),
/// .. unsafe { std::mem::zeroed() }
/// };
/// assert_ne!(0, unsafe { RegisterClassW(&wc) });
///
/// let ex_style = 0;
/// let style = WS_OVERLAPPEDWINDOW;
/// let mut size = RECT { left: 0, right: 800, top: 0, bottom: 600 };
/// assert_ne!(0, unsafe { AdjustWindowRectEx(&mut size, style, false.into(), ex_style) });
///
/// let hwnd = unsafe { CreateWindowExW(
/// ex_style,
/// wcstr!("SampleWndClass").as_ptr(),
/// wcstr!("01-clear-winapi - thindx example").as_ptr(),
/// style,
/// CW_USEDEFAULT,
/// CW_USEDEFAULT,
/// size.right - size.left,
/// size.bottom - size.top,
/// null_mut(),
/// null_mut(),
/// hinstance,
/// null_mut(),
/// )};
/// assert!(!hwnd.is_null());
///
/// if !dev::d3d9::hide_for_docs_gen() {
/// assert_eq!(0, unsafe { ShowWindow(hwnd, SW_SHOW) });
/// }
///
/// let mut pp = D3DPRESENT_PARAMETERS {
/// Windowed: true.into(),
/// hDeviceWindow: hwnd,
/// SwapEffect: SwapEffect::Discard.into(),
/// PresentationInterval: Present::IntervalOne.into(),
/// .. unsafe { std::mem::zeroed() }
/// };
///
/// let behavior =
/// // Create::DisablePrintScreen | // d3d9ex
/// Create::FpuPreserve |
/// Create::HardwareVertexProcessing |
/// Create::NoWindowChanges;
///
/// let device = D3D.with(|d3d| unsafe { d3d.create_device(0, DevType::HAL, null_mut(), behavior, &mut pp) }).unwrap();
/// DEVICE.with(|d| *d.borrow_mut() = Some(device));
///
/// loop {
/// let mut msg = MSG { message: 0, hwnd: null_mut(), time: 0, pt: POINT { x: 0, y: 0 }, lParam: 0, wParam: 0 };
/// while unsafe { PeekMessageW(&mut msg, null_mut(), 0, 0, PM_REMOVE) } != 0 {
/// if msg.message == WM_QUIT { return; }
/// unsafe { TranslateMessage(&msg) };
/// unsafe { DispatchMessageW(&msg) };
/// }
///
/// DEVICE.with(|d| {
/// let device = d.borrow();
/// if let Some(device) = device.as_ref() {
/// device.clear(None, Some(Color::argb(0xFF664422)), None, None).unwrap();
/// device.present(.., .., (), None).unwrap(); // TODO: Handle D3DERR::DEVICELOST
/// dev::d3d9::screenshot_rt0_for_docs_gen(&device);
/// }
/// });
/// }
/// }
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3d9-01-clear-winapi
/// ```
pub const d3d9_01_clear_winapi : () = ();
/// [d3d9] + [xinput] sample
///
/// <center>
/// <h4 id="screenshots" class="section-header"><a href="#screenshots">Screenshots</h4>
/// <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAEIM0lEQVR4nOyd6ZMkyZnWPTPrPvu+Znqmekb3iJV2EbALSCwjQBwLhhmYgWH8X3zjG4dxG4hDgITQwu4CYlcS0qxWx0zP9EzfZ91XZvL8PMu7vaMjszKr8qru59f9lscdkeEeHu8Tr3tEJYTQlBljjDHGGGPMwLEAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMcYYY4wxxgwNCxBjjDHGGGPM0LAAMUNhamoq7O7uasgYY4wx44zv2WbQWICYvlGtVsPc3FysuGZmZmJahAptc3MzbG9vRzPGGGPMaOGejaV7eBHu3dyzSbmHNxoNTTXm6FiAmL6wsLAQTp06FSYmJjTWPVRouRljjDFmsCA2cuuF/f398Pjx47C+vq4xY46GBYg5FjwpOXfuXEz7AU9XMJ6wUMkxbIwxxpijwf2Zh4MpuoH1A+7P9+/fj6kxvWIBYo4MT00uXLgQm14NCkQIRnSESo5hUmOMMcY8D+ICsUHKPZphbFDQFOvu3bvxHm1ML1iAmCNB5Xbp0qWBio92IEIwKjxSDFFCRWiMMca87HDv5T6MuMCGITbawb339u3b8T5sTLdYgJieoeJ7/fXXY1rG2bNn43wEyuTkpKaEsLe3Fyuo1dXVmG5tbWlqf6ESpALEGM4FijHGGHPSQFBgCAzuuYgOjOF+Mzs7G+/bS0tLMS3evz/++OPw4MEDTXkR7rnMJzWmGyxATM/Q54NO50WovN55551YcR1GqtAGKUhyECUIkZRigEgxxhhjRgXiAhAaGAIjpYOEezb366Lg6AT365/85Cel92w6pdMnxJhusAAxPcFTF6IbpDlUXF/96ldjJ7ejwpOVJ0+ehDt37sRO6GUV3CDgiU07YZJSY4wx5igkgZFSxAWGwCjeSwcFYoP788WLF8Py8nJsqXBUuD//9m//dnyQmMO91FEQ0y0WIKYneNUuVgTxQaXWTxAjiBCiJBiVHukoQJhggFhJFWw+bLFijDGvBklMICAQEpAPIzCwUUBEA7FBiiE+BnF/RoQU4fW8mDGHYQFiuobKlOhHEUK3X/nKVzT0PNPT07ESBJz3nZ2dUK/Xox0VRAiihGhJPjxuIEYQJqQYQsUYY8zJATGB0MAQF6TjBpEMBAb32nz4qNRqtWjcv7nnA/da7t9Fvv/978cmWUWIgnDPN6YTFiCma4h8YEV+4zd+I1Z8OVRgp0+f1tCLUDFhOOWkOOrHhVAw0RGeyrBNRAmVJgJlHOCYOD7ayPbj9xpjjOk/CA36OBI5SA74qEmigvssx0Q0g+Oj6fNx4feyTcQWKVbGo0ePXnh4yH32d3/3dzX0PERAMGM6YQFiuoJKiugHaQ4VIgIkh2UQKqTdgHOO9VOQ5LQTJQgChMsw4TgePnwYj8MYY8z4gJN/5syZtk74oEBIICigTGz0E+7LbPcwwVGE+zKigjQHAcK9NYdliIKQGtMOCxDTFTwR4u1XRRAfVJQ5VJhUqEcFJ50nLRhhX9JBQuWJEEGQAGkaJx0EvCmEaIgxxpjR0+4e1w+4HyIwUgqkjBfvn/2G1gg0pyLFuhUcZXA/5IFeDvdPREgR3+PMYViAmK7gi+c8lcmhAv3a176moWdQ0S0uLmroGekpSKVSiXYUclGSDw8LKlmgAkaYAFGMFE3Jh7uFr8eynjHGmNHBvY17XC+kSAXkw9wXERYwaHGRg7jAEBikGMNHodlsRgMiJjlra2vxwWDO9773vaf3xQT3Nu5xxrQDb7BVyoxpAxXQG2+8oaHn+dKXvhSuXr2qoWfQ74OKL0ElhmDIQYSwTVLsqCBAEDeIgnx41FDxUhkjWuig106YcLwOUxtjzOjgXlTWvDiBuOBFK4gJxEUSGqMEgcPxcq/Nh48K92mMexFpDiImv09zr6U/SM6NGzfCD3/4Qw09z0cffRS3aUwZlKrnS5sxBdqFpr/xjW/Eyi9RFv1AfBQrtCJUblSgpNhxoYKk0ktiJI13cyz9hmP44IMPws9+9jONvQhtajFjjDHDh/6KWBmf+cxnwrVr1567zw0D7oM4/twXk7DgGPLx48B9EOO+SNqJdCw5xSgI97lvfetbGnoeN8MyncDb61z6zCsP4gMRksMToeKrd6nE84qKig2nv1eo8DAqW9J+QoWLIAGOjWOk8gSmM38QEAnhlYVFOAaiIMYYY4YP0Y/8vpXg/sZ9bhBwb0tCAmHBfS4dA9OZ30+4z3FvI8V6hWPjGBPct4oPzri/cZ/LQXwgQowpgxLVe2k0rxRlFfQXvvCF8NZbb2moBRUmbw/J6adDT+VXtEFB5UolzbHzG4CUcUjze4UoCFbk5s2b8Q1gxhhjhgdvgrpy5YqGnofIB9Yr3JfSvZJ7ImICSBnP5w8C7ktF6wccO78hh7c5pnsivP/+++G9997T0DO4V/oBm2kHXlx/Sqh5KaHiKev/UXz7FRU57WMTVHxUPoOEyjwZcKyjgN+J0fcjr5CLEGn5zne+E9McniRhxhhjhgdReyyHiMS7774b03Zwr6EvCGICGwXpXsO9Ntkg4Xemey3QzzF/cEafx7K3YbkfiGkHpWmwpdacaPjya1kY+rd+67f09xk00WLZRB4xGDZUkliC4WSDhN/LKwr57e34wQ9+8MITISpyniYZY4wZHkTt8wdnQMT/y1/+sobKIRLAq+YRIYMEQZEswTA2Cvi9/PbE9vZ2bGKV881vflN/n4dmWSxrTBE8stGUZnMioHKmks5hWvH1u8W3XxWf8o8LuQhhGANS7LggPopvCMmhCRaWQ+VMJW2MMWZ48HAtf3AGNL3C2lG81x0VhAQGpFgiHx4n8qhQ2b2u7HW8PFwrTjMG8LjGs6SbsYDwNJZD0yuaYCWojKmUE1SeNEk6qSQhklJIw6RYJ6iUqZzLKAtTW4AYY8zwKRMg3Nu4x5VRvNeVwf0Pg5RCGk7pSaTYDKt4r+Pexj0uh+bFmDFFKEkn92owA4foBxGPHJ4OYYli/w8qJJojvSoUK2WaYbWLAFE5U0nnWIAYY8zw6VWAEAGg+VUCMXGSH7b1SrEZFpGNvB8I0X0sh2WIghhTBK/JAsS0payCRnxgCTrjYYl+CpA7d+5Em5+fj28r4aNQ4wYVMhVzopMAKXtTCJ3X/cVYY4wZLnz9PL93QfENjzlFAcJ9jvvduIAYwDgmHmwB9+/8mI8D9znudwnuXVgC8YHlcBx+wGbKsAAxHelGgCAOcmHAEyGeDPUDxAcG3BTo7F4Gy1A5chxYXkkOml4iIFTOWA7hacwYY8zwoHkxlsO9DSujKEC4z3G/GzU/+tGP9Lc93Bu/+MUvauh4cJ/jfpfY2toKGxsbGmrBvQ3LsQAx7cBr6o+naF5KuhEgVMhUzAkqZCrmfoCwwKCTACmrgBFGNA2jGdkgBUn+24FwM0/Gyih7CxbiAzPGGDM8EB9YTqe3YOHIcz/Jafew6Tikex7RDAySo889jX4o3HcTZfe/Ivyu4rH3SlGA8Nt54JZAfGA5FiCmHRYgpiMnWYAkuGnQfOu4lW878t8Onb78Sv8P+oHk0PwqD2MbY4wZPDS/ohlWDv0/6AfSjnPnzunvM3DC+02n+1ni05/+dIz2Q1qeexH3Oe55zOMjtwgAuHjxYrTjYAFi+okFiOnISRQgRD4gPTECKmSOmQ7z/Sb/7dCrAKFyppI2xhgzPLi3cY/LGUcBwv0LQUGTpxRd577z+c9/XkPPlufe9/bbb2uoBeLgww8/1JAFiBk/KrL+eIrmpYTKtuj048hjiXETIL/yK7+iv63wNU+AeAsHXL58OZw/f15D/SX/7WABYowx489JECDpfgYIkJ///OcaapHmpeWLAuTGjRvxVbmQR0yOylEECB8r7HRPNK8uFiCmI7SPxXJoS5q3kUUUUJEneANHekpzXBAfGPQqQIDKjzdPAW1nV1ZWQr+xADHGmJMH962TJECgbF6axu+huTH3YIRHevjGPZumWceFSEzen5L7FvfYhPs4ml6oyE6MAKH5DBfASYFIAHaSQXxgOcUKmna0WILKb1wECB3CU4VYfDrULyxAjDHm5IHDfpIEyL1798KtW7c01Dr21BIhX74I9z2OmZYKxwX/Kxcg9F3EEmX3N8QHdpIh6oOdFPC/aAEy7oy9AKHA8+Qax/MkFYAcRAiFAcPRxE4KVHLFCpow7te//nUNtZieng6Li4saakHhR4T0A8QHBt0KkHa8+eabfamEi1iAGGPMyaPs/jZuAoR+G/gORBryfeX3s3z5drAd7DggPvDJEmtra2FnZ0dDLb797W/HZmI5J+3+RpnAeOCNnVS/Ez+MCBjG8Dgy1gIEZ5OwYV7gXwYoDDw1oEIZ9wuTC7FYQcNv/dZv6W8LHPBUEQL9PxBd/QDxgcFRBQjHR1g6P8Z+wvZzLECMMWb8Kbu/jZsAKYNj4J6WSMtzL8JnAiIfiIFbBxETyKMpRwFnnH4gCfp/5L//m9/8pv4+z0m4v1EO8C1oyfEy+ptEoBAi4wYlaSwFCBcYBeJlB0edwoEYGVdWVlZCESpoKuoE+ZWTV0rHAfGBQbcChIoXqHy5+IBpK/odPMHpJ1TGVMqJlJ/teBmeEBljzMsAjmdRgBQj/EVoklys83no1k/y+1kRohhYTlqe+1yxmTGdwtP9pdM9tBsQODn5wzYerPGArcj169fDuMK5KObnywo+Zp5f40BF1t8rpw+g4Gl29SpBiJXCQTpu0IGteIF+4QtfiJVZongR0wQrOf/HAfGBAfujwigjVcCQnvJwDJzTtH5Z5XxcigIE4cVToXaUPSG6PsYVtDHGvMysrKyEInmEvwiR9NwRH7QA4b5Hh3IM2Hd6/W4iLV92j/vxj3/89F58nDdhERnIH+Dxu/OHbbzs5b333tPQM1gm9cEcJ2haxUNT0leJcRMhFVl/r5xjUvZEIoeL76SIE54I9AoXNDZO8KEmQpM55NFXvvIVDbWg4ssrNio8BMBxQTxgQNlgH1QaaX+pQkwVMCQBkshfRUhl3k7EHAULEGOMObmsrKyEIuMkQLifcS/9yU9+orEWPBTkQW0iLc89MjXNItLOfS9FP5iXOq0fBe61iJAE28+/tfX9738/RvNzaGrOh3bHCR6WYr2St/gYZ2hqhR/SDl7MwzLjQEXW3yvnmHBh5Q5dgguep+5Xr17V2MmBgkBmI0aSHca4qVQcdp4W5JAf3/jGNzTUAlFQFIb89uOC+MDaQSgaSxUwUGHnWIAYY4wpY2VlJRQZNwECfNMq+QUIAaIgiALIly+juPxRyH8z4NfkLTa+9a1vxftfDseLPzMu4Md0c/9HbCTDryn+9nEHn4emd4jEIjwcJipFOmoqsv5eOceAgkEBKcKTbvocFJ/Cj7JQFC+0bmE9CscHH3xQWjgSXLRcvOMA4iI9Vcn56le/GivjBE9kqOgSPLU5biFHrXMe0lOcIogPLK+AiY4kOIZ8XQsQY4wxiZWVlVBkHAUI97I8CsJ9D4N8+SKnT5+Oy3EfPyrc13Pxwn2de3OCe95v//Zva+h5EE25SBkl+Jad7v34mdeuXYsPufP87YXieRom+B45jNMnB6FYhFY22KipyPp75RyDsqY+kDu6ZC4FhXDiqKHiwbnlNXRHqYBoM8lXTSkoZVBAsHGgLDJ17dq18M4772ioBXmHJTgnnKN+gWDDOOekGF82p3LtVAEnqFR4CtRPLECMMebksrKyEoqMowABHHoeyAHOLvczfCKWZxzfCKGB4SNxrP2Aexz3ugRNq7AEwoiHqjmcF560jwM0ucLKIC/pG8PDyaPAZwg432yHPBglyTdCrAJ5hDDEL8lBFFKWRg0lqikbOWTcG2+8oaHnwfFNX91GvXJRjRs8DaAtJEKkVyggtJ0sU6lAm0oK1agpe3pAZZe/LYQKiqct5GWCC4HzM2hopsW+0sVXPGccE53zOOZ+wm+mck5woVuAGGPMyWBlZSUUGVcBwr0tCRCgeVC/72lFEDjcPxPcz2nSnP/msrc7jksrDnxG+qyWwfmjL2v+4LRbEB34RPm5GRfwfzj/QFMsrAjikLI7SiqyZ6VohLQrJO+++24sHMwns8cZRATKsldwWtuFytjeOChV8oAIVZE8OgUshyWopDCg4krDLwsWIMYYc3JZWVkJRUYtQHigxj6SkztsuK8lxzqlCR6aYgnudzxlL0Ln83y5UUHzcc5jEcQHTfs5z73C9lh/nEGAIETwSeifU2Qc8qci6++Vc0QIj2E5KHuesHMxFJ+sJ3Bqh03ZcQAZzcV4FFi3nQjhKQKFadQQoSr+9jxCBZ3yKkFlTb6RYicZfq8FiDHGnExWVlZCkVELkGHDfQzjvk3aDu7bxejHD37wg/g0PYflPvroIw2NFsQbrTeKIB6OKj6gWAZy+O3DhnwrwnGkvMK3LL4Aieb92CihpD0rSSME8YHlEBEhPFYW/RiHi55MJzyZQyYf9bhwXr/zne/ENIffWrzARwEXcjEfoBgF4ZxwgZN2A+eLiwVSelKgsrYAMcaYk8nKykoo8rILEHwXIOUe1g00/+IBKWmCe11Z9IMHpjw4HTU8IM3vz0DevfvuuzE9Cpwv3o6VwzkZte/CcRV/K/lAFIQmWFgO80adR5S8sbhyypxb3lmNLS4uxo4+CTKaDB8HcLK5iBNcoDSbOiq8IeuHP/yhhp5nHMJlFG4u6CKIjeLTBC4G8jPPt14gj6nUk40r/E7OS8ICxBhjTg4rKyuhyMskQLhHJct9lV6gfysOa/47udfxZB2fpwgPTDkvo4Sm4GXNxr/0pS/FN10dlWLzK3yVcfVHybe1tbUoPrAchAl9jEdJRfasRI0Qoh1EOnIQHxiObD6PzCbTxwEym0xPIBKw4zDOHbrKhCIgTPKmWAnODQ46F20aPgpUfEUbB6jU899EpWwBYowxJ4OVlZVQ5KQKEO5HRTsK/Cb8LB6mpuEiZU2vYJx9ldSs/zggbLAE52Zc/VFEBvlByxzEYg7zLEAO6CRAmJ4XJDKbTB8HihmO+MCOA6/nfe+99zT0DH7zOLSp5PfSqSt3uhOIEF7Lm1fORVif/CRFlJAeFSr9ZECKDRMq+PxcWIAYY8zJYWVlJRQZdwHCfQcD0mRHBf8CsUGKY0raDu5xvHa3THxwLnhpTqf1h0VZn1U+Zn3U1+0mEB9YAl90HH4v8HvL/FELkEMgVJZnKiA+MC52LvoEmU2mt4MP5HCRAB+ly8VLDm+a6BaOgQ/tFWmX4ceB9ekLUoQLm0pi1CAgEIxlEJqk304xL9vB+UOIcA5Tely4GSRLMIz1Gyp9CxBjjDmZrKyshCLjIEC4t2AJhpMdF/wnfImU4lN1A77JSfhsAL4ED0qLvPtu662qx4H1sQTnsN35y33RHPxSICKT+zzH9UnZFj5Vgnwif8seapNP5NcooST3/8o5AnRAx3J4ok6zHk4qb1ZKcLFz0bfjl7/8ZfwuB/CROqyM/F3bh0GB4TsSRchsji/BBYodl+9973ux8ORQmIvTRgWijhBnGVwY165di8Zwr1B54NRzXjGG+0leWVCWMEhpL1R0M8iPj8rGAsQYY04GKysrocgwBAj3DiDFEvgU/YTjw0nGGMYh7RXua3xoEGO4DJpd0dxnHOBBaNE5Z9rXvvY1DR0PxAeW4LzmPkVO7ouWQV5TnhBL+DrH9UnZBttM4IuQX2XN5XgDFjZKKPW9XzkDoMyh5U0DdG6G4jxOajvyTEd8YGUcN7OhmOGID+y4EOLkYs+hsGDjQlmelUG0hIsfY7hXOL+cZyr9fHhQcDPBoJhCPsyNwwLEGGNOJisrK6HIcQQI94REGs5TbFBw/0kOcT7cKzwZ52EnxvBhjJP4AB5mYznXrl2LTcSPCy1A8H0SnF/Ocxm5L9oJtol/id/XLWU+Kb5IXr7wRSgHNL+iGVbOOOQZR/rsyhkhZEDROeUi/8Y3vqGhENUszmeCk9qOPNMRH1gZxXAXEYa0XTI3L2QcC8dQBGc4P66U4cdlXENmRThH3YiQHIQI0S0qcoY5t73CRcbFxvnH0nCeF6OAvKcMtMMCxBhjxoeVlZVQpBcBMgqS04v4IcUYzoVQt3DPQmhw3+IpOcO9MA6ObBF8SXzKnH70/wDynjKQSHlRRu6L0ooHA6JQnGcswbGlZRO9+qRMy0F0UCb4EGHaTgJfEp9ylFRkvZfYAbGyshKKIEA4qWQ4aaLTxZZnOuID64ajrFd0ermIixl9FCg4qNYcCguFZtygyRQihPQoIEIIaZJiVB7HgXJCnpA3UBwfJOm1d+2wADHGmPFhpcTv6CRAip8FGBQ4tTi3yZ8ojh8VfAgcX4zWGqRHASca8UE6buBDFAUIrWloVXNc8CfwRxPkCXlTxmE+5Y9//OO4PjAPyzls/SIcWw75A2V+By81SvseFRVZuRc/AngqzpPsnFRoihc9Gd7u5PWaaYmjrIdTi3ObeBUFSALxQNgzPx9Hhc5ZVCKkXOykiJTjkvIrj6Dk48cF8YEIKaMsTynDVATGGGOGz8rKSijybofOyvgh+CPHJT1E5R6AP1McPy6IC17nj09Ciu9Aelw4PpqCH1W4DAN8h5MgQP7wD//wqb/IPCznsPVzij4Mx8SX0Mv8Drh+/XoYNRXZ2AiQskLDG5WYTmWAJTi5ZHwZvWRazlHWSw5sgos9FajjUFZoxl2AAOeCfEKI5BdDv6AsIHSSIOlHhZLD8ZOnQEUDxQs7Tc+hLJI/VPrtOCnN6owx5lWBe0o7v6Md3HsQIulekZPf/5OogDS9k+9yVPAXuPcgMBAGg7in8FsQHuyn38ffb8i7Yp72S4AALT5yUt4WyX1Kml9hQNSI6QiExJtvvvmcsIF8ffxRrB1FP4Vjwh+lbIyrLzlWAoRMzdu4Aa/hxbjgsUSni7iXTMs5ynpUQDitCTKcjD8u41xoeoE8o2kWxvAgQBAgSjCGqWS4EIsX86gpe7MZ47TzNMYYM3zK/I5r1/rTYbmf4FsgAvAN8DG4d2AMDwKEBo4yxvBJYhwFSCfwIT//+c9HfzInXx9/FGsH28jXx1+kb844P/gcKwHCU3Ms59q1VkWAA4uDmUB8IELK6CXTco6yHhlOxieoJNoVxl6gknkZBEgR8pHKnhSRgA2SPFLCvhAladowKctPuHv37omr3I0x5mWB+1HRoeRB1rvvvhvTYcK9gCgGfkQSG2naIGFfGGIDp5X0JHOSBAjHefXq1eiXFMnXxx/F2oEfij+aoNxgP/vZz6LlEMnCRs1YCZCyioACQ8GhIsB5TIyLAMGpJfSVoOJoVxh7gYqn6LC+DAKkSBIipNiwhQHli7KVxC2VAMfAONP7AeWBvORpVQ5lmLeOkBpjjBk+3H/of1oEJ5amWP2C+wD3AJzCJCgYZzr3+2HCMSAysCQ8XibIOxz7HPxI7vf9oOinkodl5D5leosVPiK+HDCt+CrdnHx9/FGsHYgPREgi9Ucd12+AAJ7z2AgQCgwFJ4cCQ8Hh5Kb2c0C7Si6cMnrJtJyjrFd0UtNbB44LFRJOaw6F9mUTIGVwQ0AEcDFRJhjHRgVlEMhrhAkkoQJMY14ZPHm4cePG0xtODhUAZowxZnTgUOIcFqFuR5zwitQycDwREYBTn+p5pjEPuJePCnwkDN+BB10cI+MvO/iR+A45+JHpXn5cKC85nFN80iJlPiURJppFJcr6fiTK1m8HPjI+UwKhQxnEjyyWwXFpeTH2AgRH7+tf/7qGXsx0Tm4ZvWRazlHWKzqeFiCDg/KBIUYwIib5BXeS4GbAUwlSY4wxo4P7CULjpMJ9hCgGjjCGr4C9quBH4ivk9FOA8P2N3PfgnHcrQCCfjg9JP2cERJF8OdbF2sF2cuhbSrnAj8SfzMGPHIfyMVYCBFZWVkKR9E7uowgQMgVHtQjRFApRTr4eGY11gqZXVFwJCmG/nmhTYCg4ORQYCo55BpUA+Us+YGmYdJwhH8lPY4wxo4cISNHHGDeSyEgpxjCOpnnGoAUIEQt8ywT50IsAKUZBmI4Vabd+GfnxQHoY/u1vf/tpZC4xLv5HRfbiWRshKysroUgSIHRQx7lMdJPp7SAjsZx8PeZhnSgKEAQRYa9+YAFyfMgbDDGCUKFCImV8VFBmqRjIS2OMMeMDIoQHk9wnRkUSFNwjSBnnvoGZ7hi2AKE/MnlVpJNPmc+Dz33ucy/4JvkyrIuVUfRFOZ70it+yjxBev349jAMV2Yse/AhZWVkJRXr9Gnqeae0gI7GcfD3mYZ2gksrDZqjMtP5xsQAZPFzs5GGqqBhmGhcy1m946pHCosYYY8YP7gMXLlx4el/oJ/gsGKIi3Qe4rzPMNNMfBi1A6DxO94AEDj95WKSTT4k/kEdB2GaxQ3qn9XOKAiR/GG4B0gOdCk63AgQhQIHoBI4mlpOvxzysE4gPKqsEnXqwfmABMh5QBlIep3LJONOBix5rB3mGUdlQXo0xxow/1Ot0QqeuT3V/GdTrGCAikiNKvQ+MM90Mj05+ZD/gBTRYgjxOvmPOYT4lfkEOEbicw9ZPWID0iU4FZ3FxMX59NEHGkPGjoihA0mvP+kGZAOHNGjxBN8YYY4wxL0IzOsRjDh29sX7Ag3AeiCfwQ/FHR0VRgOCH4o8iRL71rW9pyvNcv349jAMnSoCgOLEEGU7GjwoKYQ6KkwzvB7y69Yc//KGGnkEHd8wYY4wxxrwI/YWxHMQH1g94+MyLjBK0xElRsFHAg3COKUFLHKzsQTaRuXFpSWMBcgyKAoROPxxTP+D7EVgO4gMzxhhjjDEvgvjAchAfWL8ovjGtXw+fj4IFSJ84KQKkGPIC3m7ULxAfWA7iAzPGGGOMMS+C+MByEB9Yv2D7uQ9IBIRIyCiwAOkTJ0WAFDOcwtdPcYD4wHLYPmaMMcYYY14EcYDl8KHJL3/5yxrqD/QByVvB4ANagPTG2AkQwlrFNwF86UtfClevXo3iA0uMkwAhU4tvNDgO3//+918oJHRApyO6McYYY4x5ETqg0xE9h4fYPMzuF/iiWGKc/FHEB2YB0iOoViyHsBlGZmOJUWY4mU2mJxAfZGy/oNBQeHIoNP3chzHGGGPMywStaGhNUyR91LofsI/8YTnRD6IgowBfFJ80gfjA8CHxJXPwIfElxwELkCOSh96gn2/AAl6dVtwehYbCY4wxxhhjXgRxUCZA0ket+wEOf/4mLCj6bMOi2Cc5vYbXAqRHCJsRPsv5whe+EN56660oPrDEqARIMbOBjEYB9wMKMQKkyPXr14MxxhhjjGnPyspKKEITLJpi9Qu6DOQQAemXH9gLRZ8UH5KH4vilFiA9gGpFveakQoP4wBKjEiDFcBfHwSt4+0VZoaFgf/zxxxoyxhhjjDHtoNN57pRDepjdL4od0fEFR+GTWoD0iZMgQBAfiJAEGUofkH7B26+wHPYxLoXGGGOMMWZcKfMlESX9fBMW/iiWwB/FLx02FiB9oqzQjJsAIaPJ8ARt7Whz1y/K3oDF63cxY4wxxhjTHvoSY0X62RF9amrquS4DNL+itcqwwR/FL01YgByRkyBA8pAb8Hrcfh0Hby74zne+o6HnuXv3bpxnjDHGGGPagx+JP1nkK1/5Sun0o4Djj2+ag/M/bDgOC5A+QMGg4OQkAVJsb4fSRHEOk2JGcwz9jEyURT/go48+6pvIMcYYY4x5mbly5UqMUuT0uxkWUZbcJxzFg/GiXwr379+PQmScX2hkAdIj9P2gD0hia2srbGxsaOj4IDwQIEWIfBABMcYYY4wxh8N3OopvqoJ+RkHwV9lPAp8U33SYtBMg8M1vflN/n+e6BUg5b7zxRnTyc959993Y9GocBAiZTGYnCHOhMo8LoTLER9m2ECaEzYwxxhhjTHcQ8cBvy8GP/PVf//XoUx4X/EEekOeU+XGDht+UYwFyBFZWVkKR1GmoGOoahQDJM5kwG/0/jsv7778f3nvvPQ29yOrqal/2YYwxxhjzKkGEoizagS/XLxGyuLgYpqenNdRiFM2w+D05PNTGP7YA6YGVlZVQJAmQYiht2CoTpZsLIKISx3n9Lsf/wx/+MEY4ykBg3bx5c+gF2RhjjDHmZYA3VfGR6yI47Z/+9KeP/W0QxAciJIHjj/82TPgtOal1Dn1ASHPwK3d3dzU0WiqysREgOPeEy4qMiwCh70fePIzoxFEzke98fPDBB21/A6IDYXLU7RtjjDHGmJb/mPfVyEGgECX5zGc+o7He4eH0qJthFf3TJEB4CxbRkBx8Sx6gj5qxEiBloTIylU7o45DBucJEIBylaRSFgqgH4qUdiA7a75EaY4wxxpjj0UmEAELkS1/60pGaZREBIRKSIAJCJGRYFAUIPiY+pAVIl3QSIDj/eaEgY8ngYUHGksEJMq/X5lc3btyIfT06CScKDIUDgWOMMcYYY/oDAoTmWPh0ZeBrfuELXwhXr17VWPfwul8ETAIfjr4gw4Lfk/uovD0V4+VG+JQ5PDxHoIyasRIgdDLHcmiSxTubKRS5ABl25tI8jChMgkhGJyFRBPFB5KMTfE8EM8YYY4wx/QexQDSEtB1EQnoVIUVhw0NyHpYPA/ZbJkBo7o/l4GdiowaPejhnpwsQH1gObfIwoiMo18QwBQjCAwGSYL+PHj3SUHccJj6IpqBIiX4YY4wxxpjBgcOOCOETD+3oVYTgo+KrJobpp/J7cgGys7MT1tbWovjAcoh+4HOOmrESIBcuXHihMCA+MKZjCTKVzB0GiA9ESIJMJXO7oZP44PgpBL025TLGGGOMMccD0VCMXOT0IkLYBtvKGVYUBB8VXzVBCx1a6pT5oDz0LjbLGgV41YM/M11C/49cPQL9P+gHMj8/H2ZnZzWlxbAESDFT2SfRj24KFJn/e7/3e7EgFKFQUgBIjTHGGGPM8MHHw/8kLULz/16+F8JyrJPAVxyGn1f0VdknzazogE5H9Bxa2/Aq3lEzVgJkZWUlFPnqV78aMxTLM5WTS8YOGjKUjE1sbW2FjY0NDXUG0fG9730vLl+EzEd8IGaMMcYYY8zoIHqBCCnrF8LD76997WvP+aDtYP28MzoMy18tHh9vU6UfyHe+8x2NPc/169fDqMGzHvxZ6QIy/4033tDQ86RvgIxCgHBMeZs6oMlUN8Kh7M0DYPFhjDHGGDNe4PO1EyFM/8pXvqKhwzl9+vRzviO+Kj7roMl9ZCD6wb7Lvob+0UcfjdwPHRsBQtMrMjiHk/mNb3xDQ633N+cQYRg0xegHShI7jLI2d0BmIz4QIcYYY4wxZnxAfOCLIkaKdNsfBN+Vh+Y5CBDEwCBhvzl0A8BX/va3v/1Caxx8UfqCjBK868GekS6hI1BRZND3gz4gUJzHSR0kqNe8ACIeuun7wXER7iItMg4Zbowxxhhjyil7IA44+O+++25MDwMBki+H74gIGSRFvzUJEPqAEA3JoTUPb8MaJWMjQHj9LpZz7dq18M4778STSkgrMeiMJOpB9COn2zdf8bozrAgZTYYbY4wxxpjxhbdZFftyAG9lxQ4DIcA2cgb98iR8ZfaboMUO9pOf/CR88MEHmvKMcfBJx0aAlL2Cl69RvvXWW1FFoiYTZCAZOSgQH4iQBGKHtwkcBhlN9KMI6/PGAY7bGGOMMcaMLzjyV65cif5gkXcVBSn6q2UU394KRCQGRTsBwkNxLIfWOLTKGSV42WMhQAh3EfbKofkVzbCmp6fD4uKiprTAkR+UAClmIND0qpv9/eAHPwgff/yxhp7n7t27sRAYY4wxxpjxB5HBw/Eir7/+evjyl7+soc7wIJuWPfiViUG24MF3zfeF34nR/IpmWDkWIBmdBAiFAEsgBhAh/YbCUlS7fCSQjOqGsjcNkPkIEGOMMcYYc3JAgOT+ZyK9ofUw6NRebMo1KB/WAuSIlAmQ9MYBMh9LDCrzEB+IkAShMjrxdMP7778f3nvvPQ09DxGRQaldY4wxxhgzGPALiXgUSV0EuoEWPLTkSQwqCtJOgCA0+DREjgVIBmEqLIeOPhjChLdkJRAfiJB+QiHLxQf7oN8H6WEgVOj7QZpD9IQPwRhjjDHGmJMHb2HNfVCgb/K7774b08PAt+RFSgiExCBECNsvEyD0/8ByLEAyCFEV3xhA8yuaYZHBeSf0fmdcMdOANwR0+72OdtGPcfjQizHGGGOMORr4iGUfyu4lClJ8kA48SO+nj1h8kJ78WKIfRbHBA3ZslHCkYyFAaCfHGweK8CFCBAjihEKQ6FfGkVlkWg6v2+W1u91S9pEXMhYzxhhjjDEnF1roYDm84errX/+6hrqj2BQLeJjOQ/XjUubL8ppd/ORvfetbL7TQoW8y0ZFRMjYCBFCYuciA1A8E5YiCTJBhZNxxIcPIuATCBuHA9ruBsBZWxH0/jDHGGGNOPviKZX1B6CaAdQO+JiImb3GDr9kPX5HjY/sJBAd9mIl8EAEpMg4tdDja7jztIVDWzi4pTIQJUZCc42ZcMcPIDDIMEdINLPt7v/d7MaNz3PfDGGOMMeblocxHpYXOr//6rz/XTaATiA+WxadN9NuXBfxTfFPefsVbsHKIfBABGTUc8dgIkHbNsFIUpOyjLoBwwMjEbiCjKASkOTS7ovlVN6SMpY1dEUc/jDHGGGNeHnD0y6Ig9GFO/ZW7gWZYNMfKwX/Fj8W6Af8VEYMVwY/Fn0V44KcW4QE5D8pHDR54d177kCh7HS+i42tf+1rMXDKNzCuDDMSKGUhG5VYGbwToJUMIaRHaKsI2yFxjjDHGGPPyUBYFAXzXr3zlKxrqDrZR9HUT+LD4slgRBAd+LFYGD7+JfrDu9773vRcekjOfh+TjAL/gxV84QsgQMrLItWvXwjvvvKOhzhl3FJJa7JZ2Xzyn0DCd1BhjjDHGvDwgAIiCkBZhejdfSE/wfTusX+DL8hAc8UHfZKwID8hZZhwYOwEC7b48mWcuURCWoSnVceDtVbSHI8O6oZ34ACIiRFKMMcYYY8zLBw/Ayx6UQ+6ndgNdD3ioXiZouoV+y/ixCBBo56fySt6bN29qaDwYSwFCOzv6gpRlCJlOnxCaYwHLIEQoEN1ChIKMQHyQcd1Anw+aXdGmrgxed1YMdRljjDHGmJcL+n0UX4yU4Bt2NMdKfuph0JyKrgYsz0N1/Npu4IE3wgOfFvBTf/jDH8aH4WUgPvB9x4WxFCDQKXPJpE9/+tMvfACGqAiZhxUzkIyh7RuWMqtbEB2ID7ZRBuEswlrGGGOMMeblp11/EMBPRYQgRnoBMcK6GA/ji+CH8uA8RTsSfBD75z//eZxfBp+XwMaJsRUggABBiLSDDLp27Vo0hvsNKvKDDz6IAqQdFh/GGGOMMa8enUQIIEDwUWm9028QG/ioGMPtoHUOrXTGjbEWIIAA4cMtxYhGETIXwUJm847lo0AGJtFBhh2GxYcxxhhjzKvLYSIkgT977VpLjBz1oTlvuOKhOIICf7UTtPYh6tGNPzsKxl6AAJ106JheFo5qB+3p6BuCIDkMMpN2dPQJ6QYyFeHBOsYYY4wx5tUFfxMhctjD8gQCBEHSyUfFx0x+KQ/IexESdDfgY4Pj1OejyIkQIECmEgkhw0YJnX4QH2SuMcYYY4wxPCRHhPTyUqRBgFAh8sHD8nHmxAiQBBmMCCHchSgZFqhIMpVmV8YYY4wxxhTBP8VPpfXOMME/RXiclAfkJ06AJBAfZDI2qExGdBACI+qBGWOMMcYYcxhEQjCaZw3KT0VsIDwwhk8SJ1aA5BAVIYPJaAxxclQQHEl4kBpjjDHGGHNUECD4qSk9Dvim+KgYwyeVl0KAlIEQSZDhnUQJqpFMxIwxxhhjjBkU+KUYD9A7kbe+wUcd934dvfDSChBjjDHGGGPM+GEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMcaYoWEBYowxxhhjjBkaFiDGGGOMMealAye39acEeb/6b0YE2eLzb4wxxhhjTiQ4s/zR//hH/yMTtRCqjGA58nzrWF3DQoPxj/6HJn/MwCFLfKqNMcYYY8yJBKExOVEJ05MhzE5VwtRE0HAlVPByO4DY2Nlrht39ELZ2mxoOYW+/GfYPhIkZHGSNTr8xxhhjjDEng1o1SGhUwvysRIfEBgIEIULEA+HRMokQLVsGzm9TCkT/ozVkCI9dCZBtiZH17abEiKIkDS1o+g75olNujDHGGGPM+CI9EQUGQmNxrhqW5xAerWlVzaxKlMThg3RCf5hfBuJiX6pD/0NDIuNZqmlK9yRGHq83wpqECE21mK9Zpk8oeyxAjDHGGGPMeIOYWJLoODVfVfRDTqxEB0hnhIWZSlicrYQ5pXPTlTAzqenM6EBDqmJ7L4TNnWbYlNBY22pFPjQ5QoSEZlmPNxphddNNs/oJOXNwmo0xxhhjjBkv0Bn07Ti/TD+PSmx+VZO4QJCcmq+Ec0vVMD3Rml6RaVZ0cOOKnZDAwAlGcDQV9aC51c5+M9xfbUh0pCZYioBoOn1EHqw2Y6rVzDEhZ3wajTHGGGPMWIF+QFTEqMdCK+pBsyo6mxPtOKNpC0ppkpWiIRCHNF5BjUTilIyW69tEdUhNtMZaEPUg0rGuaMhDmmApJQpCc63dPYmQtWbYUJQEUaJFzREhR3z6jDHGGGPM2ICDirA4s1gNpxfo39GKcMxOhfD6uVpYnJHwUNQDnv6NokNJdSLUJqZk06FWk1phYo6UQ72+F+r7O7JdRT/2mRSn64/+tdhXNIQ+IB/fryvy0YqGIE4eHERIECHmaJAj6TwbY4wxxhgzUnBOaxIf55eqYXke8RHCZE0Rj8VKuHKmFiMh0iNakD8MV0NtcjpMTs+H6dllDc9oHa0Ut9SJZmg0GqG+tx12tp6EvZ0NDe+EBpERkCCR5gi8pvfmw3qMfuzXW8Lj4Vojjmt1cwTIGZ1aY4wxxhhjRguaQlpDYqMaTinywet1ERyXTlXDWU2bigENRTpYtloLk1NzYXr+VJiYnFXEYzJOa80FXFysDJbBWEL/GnVFQ/bC/t5W2Nl4HPZ2N+M01qZZ1u6eIh8SHbcfN6Ig4fshRELonI4gMb3BmefcGmOMMcYYM1JodkXH8rOKftDfg47ml89UwwXGNQ/xIZWhCMmEhMfpMDN/piU8mC6hgCkuEUJjNzTrUg1NqYUX0LLVCW1GakamGIsmaZoMsYEQ2d54KCHyKNTrWl8REabT/OquRMeth4iQ1vidR4345iyLkN7Q2VY+GWOMMcYYM0Lk/8cO5xcV7UBs0Ozq/HI1XD1XDbFFldxWhMbUzEKYW7oQpqYXNEkrQWNPgmNbemNLwxIfEg3dEDuqV6dDZWImVGqzGpbiAQmO3Z31sLl6N+xur2sUd1nSRpu9cb8R7j2RCKm33pSFCKGzuukecs1nzBhjjDHGjBRetXv5TCXMKOU1u5dPV8MlGVEQXNaqxMHswhnZ2VCtKXIh8dFs1kNzby0EiQ8pEBkRkN5cW8ka/cFqEiISNROzGq1pUxIciqJsrT+QPZT4kNrQthEdtyU6bsl4OxbfEGGct2WZ7tDZ1pk0xhhjjDFmBOD7TygQQVMrPiRI5INmWLztam6qtUC1WgvTc6fC/NLF2OQK97VZ31HEY13iQ2mXEY/DiBGRmqIhk4utJlpylXlj1saTO2Fn87FESEvkbO6G+HYs3oa1t98Mq4qA3H3ciE2xNNscgrJcOWiMMcYYY8wI4PW6vO2KDwpOTRABCeFTl2sxIsLrd/k3PbcU5pcvhYmpWXmuEh8SHkQ+eIXuIKhUp0JlaklBEe1PAmh/d0si5LZEyKocZ0VGFPngo4S/uFUP2xIj9AlBgCBEaKZlOmMBYowxxhhjRgYfFiTawduuEB0Mn11EfMhRVUSCN1wtnr2qVJEJLd/c35T4eDIw8ZFoiZBliZCZ6Czz3ZDV+x/FN2URcUFo8CpeIiGIkW3ZJw8aEiNa2HQk5qPMGGOMMcaYoUL0g9ftXliuarj1rY83z7fECH08qhNTYeH0lTA9sxjHm3U5/7uKQkTxMVgXlshLqB2IkOq0REcz7G6vhbVHn4QGHzBkXIfx4b16eCghQn8QOqT71byHozM74NwzxhhjjDGmBL5sfuVsTVGQiiyElQs1iRCpEkG/j5n50xIgr4XosDZ2QnPnsdJdjT2DKIn+ygooSkFzqU5EkRHXL3Cwbpxfm5YIOaXFJjUlhPXHN8N27JRe11jro4TX79ZjJ/St3UZ8TS/Nskx7dFbjuTTGGGOMMWaonF9uffOjqugGb7x6/SxvvcI9DWFKUY/FM6+Hiclpeav10Nh5FJtfPYfEQ3X6rBKFTDJoItXcfRJiB3X9a0dlYj5Up5Y09DwN1t1XtEX/gE7pVUVCtKOwv7cT1h9+HHYUDQE6oX/8oBHfhEXfkPurDVlrPVMOOewzZIwxxhhjhgYOaK0W4qt2F+dar9393Ou1sDirmIPECFGNhVOX4yt3K9WqxMRqaO7JJCyKVGcvhNrca9qghEpCgqW5/SDUN24omLGnCS9S0fK1+TdCZeasxg5gvb31UF97X4M7mtCC1/LGpliTC/EYttcfhfVHn8ThRrMZvwPy04/roS4BQhMsxAgfKjTlkP8WIMYYY4wxZmhIYwQ6nBP14NW7CzLefEVTLP7xtiuiH5NKpQRCY/teByExJSHxZhQiUiuaIiQKaLJVf/IzCYo1jT4vXNhHde5SqM5f1fpJuGid+m5orF/X/h5onWcKQocrpTMVqjPnlNbC3u5WWHvwcXw7ltYKO3utN2LxVfT0XRA6puswTAmcT58aY4wxxhgzNBTwiJ3PefUuHx68dKoavwMyUZM0kIiYWzwXv3ZeJfqhiES76EeiOnU61JbekpiQYEHdHNDYvB3q6x9KjDzrlKE9hDAxEyaWPxebYD1dXoKjsX0/1Fd/qX09Ex8JjqsySRRkPjQajfiV9M21+1qWaEcz9v24/VjREQkPmmE9Xm8qOqIVzQtwxn1qBgQhxDLaTe8W3rpQRrvpxhhjjDHjhHTF0+ZXRELofM7HB/nuB53Pl8+vhMnp+VCRc9/YeXh4X47KRIyA1Bbe1Maf9QdBeDTWrof61h2NtaAzeXXutVBTBCRoOEG/j9j0SoKnjChcFC2hz0mzUgl7Oxvhyb3rEiMSLlIafJSQzuhbO834PRCiINIppgSdyQ65aY5EEhio9jRMWrSjgMgoGpCixoFhY4wxxphxhdfvvinRwZuv5qbp/zERh+mMXpuYDqcvfUp+1IQExF5obt+Vb9Pycdohz0obnQq1xWsSCGc0oaapQuvReb2+9kEI9W1N15KTS6G2/CkJkZk4roUU/JBQWf9IEZB72teL0Y9EjILMXNC6k/K79sOj27+I3wehHwhvwfrpx/thUwJkW8MfSYz4dbzltM66OTIIiTIDUiyRhkmxo4C4wCClwDAGpGVmjDHGGDMOTEgfvH25JiFSCfPSAX/szQn5RvhItTA1sxCWz72p4Wpo7m9IQCgC0gX4VlFcLL6ldJ4pMvlFip40Nj4ODaIgEjVESaqzFzXnAAmO2PRKAqSJSDmE6szZUKnNybdqhNUHN8LOFs3D6rIQ/t+H+2FDm6Az+i9v1YM7opdDzuh0mV6ggAMpRqQDS8OkowSxQTQkpRjDGKTUGGOMMWbY4CbNTIXwxvlamKxVYtOrzyoCAjS/4s1X88uXtJz8mN0nbZtElSLRUpu/KntNw1I5IL+H1/fuP/lpq6/IwhvaUWt/cV59K+w//mkIWkZjmtgZ3oTFK3mbzUrYeHI7bK0/kK/VUhp/pAgITbH26s3w0b164Hsg2oUpoCLQxZk2EYQFVqvVYpqLjZRCPjwKcoGRhkmTEKnXUem6xGTGGGOMMcNEQY8wP1sJr51pffPjwqlqoA8IVGsTYX7pYhQhlaCHqDuPokDohUptRlGQa4pUnNPYAYpWEOWoTMzJFB058NVa0ZEbio7clV/UEhGHQUf36vRpOdDVKD42Vu+ERn1fc0LsA3L3cSN+G+STh42wsSX/y+7WC3D2fVo6gJjAkthIaTJI6biShAZpsiRGUooZY4wxxgwauVLxex90Qp+arMRX8V491xIgtdpk/PL59NxSqwM6fTIae5rTPTTd4psdtcW3JRZmmKCpIgoMDWt+ROOIEt6SFeq7coi784Xo/1GdOR+a2s7O5mr8Hki93jrGG/frsfP57l4z3FLK90HkapkCFVl3Z/sVA1GRDNExMUHbxNb4UTnOumUcRzSwLra/v68L45kIwYwxxhhjBoXcqucECOnrmQBZPPNamJo9ugABvoxenb0SavNXtMNJTXkRmmXVV98Pjd1HGuueXIDsbq2GtYfPBMjHEiAIDwuQzuAR2+MsgODA8qZWCca7hWWLBqTYUUAgYEBatG7Jl00ChKZZDGPGGGOMMYMAt2rgAkT/eGXuxPJnY58NqQZNzVD0o776gbbffdOrhAXI8VHuWIAAggBDbCRjPNlhsExukKdYgmHsKCAUsATDGORpbofBMskQH8kYx4wxxhhj+kVVLhDf/0B4IED4COHV80mATISF069nTbDuS4Dsak7vyNsKlekzoba4Euj78RQJDvqWxG9+1Hc0oTcqB19ER4C0mmB9LAHS6gNy4149fozwqQDZlG9lV+oFVAQsQBADCA6MqAcp0w4jLUOa1sEYBoaHSRILuXhIw5DSTrAM6+TREKYZY4wxxvQDBMjcTCW8frbVCf3sYiW8fbn1Vio6oc8tXpCdk5Mqn2T3UWwqdVQQC7z1qjp3WWMt+OZHfe2XoSkR0mv0AxAzvE2rqSPkS+iba3efdkL/5a398GCtGTuhf3y/Eb8JYgHyIioCOn+vMIgE+ncgPBjGIKVlMA9DaGAMYznF8WFRFAuMYwgJjGGsHWkeKYYQoZ8Iw8YYY4wxxwUXKX8N7/J860OE8PxrePVQNb6Gd01zjgZfSI8ChNfyHkDUo/7k59qutq0oS69UJhclQJa1bnjhNbx8iPDJwWt4P7xbjx8nZDnzPMraV1OAIBAQDxjig5Rp7WBebml5DFI6biThQIrlIiRZO5jH8ogQUoxpxhhjjDHH4dmHCEOYVzSk7YcI65uhsf1AaxyNQQiQ/EOET+5/GHa31zVcl/lDhN2irH61BAhCIRmRj6KQKIN5LJeMcewkgoDAEBPJGG8H8zCWS5GQZMYYY4wxRwHh8ebFapieqIS56VYEZHpSzr38q9rEdDh96VPyuSYCHdCbsaN470IB+i1AEEWVmQuBjuiNxn54dPsXob6/Exryi4h2EAGh2RXDREDqvW3+lQEv+pXyJIl2JMtFRD6cYBqCIxnjkNKTShIPpAiLZIwXyacxTDQkmTHGGGPMUZBbFTuh8zasWQmQaxdrYXkOvwvT8PmVMDk93+qIvvNQIYUdOazPfJJu6acA0eNnOZLToTp9JnZA39vZCE/uXZcPRUuRZniy2Qwf3KmHLQkQ3n5FJ3S5V6YEnckj5OYJpCLRgOjAkpjAymB6WoYUA8b7AdtJ2+yVdkLhKKTtsE2M8ZSWwXSMZRAgGOPGGGOMMb0gnRFOL1TC2aVqmJlqvRGLDxJO1PDPqrET+tzShegvNffWZavyOXr35vsqQHRclckl2UL0hTZX7wY6obON/XozfoAQ0bG92wz3Vxvh8bp8JrtJpSj7X34Bkhz+ycnJmDLeDuaxTC5UjkJajzRZgm1jRwGnH0sgAJJBSnuF9biY2DYp4+1gHsvs7e3FlHFjjDHGmG7BLaLpFaKDCMiSIiFvXaqF6Un5TPo3MTUbFs++Lt9tVo6HfJOjfg+knwKkKj9y5rwGavKBtsLag4/D/u6WHGmaXDXD+7frYVWRj83tlhjZkhCxi1SOsl9n7SUGxx9nP/X3AKYVYRrGsizHMKS0F1iH7bDPZIxjzEt2FHD2kyEWMPpmJGOceb2S1iFFVKTtYEXSNJY7zj6NMcYY82qCF0RH9EtnaIalyIdctM9frcUO6fQDqSjasHD6tTCzcDoON3cVATlCFKRfAoRjiNGPqaW4zvb6o7D+6JM4TP+PDYmOP7whn0whD779QSRE7tHL7WQfA/L/pT03OPk4/cmAaUUQHMmYn6xbWI/tF43pWBpmm1g/wOHHEAEIAFKM4aIxvVvYZjLWS1aE+cD2k6VpxhhjjDHdcGG5Gs4utfwjoiHp2yAwPbsUFiVCapPTin7Iz9h9HJr7G5rTPX0TIBPzEh+nFAWphfreTliT+NjZWtWc0Prmx4NGjHogRh6sNsK9J/aJOkEOv5RniIKM40/0ITn/ZTCP5UixbmF7LE9K0y6MfU1NTcV0lBCV2N3djSnNpDDEAUKCtFtYHkNckJbB9pjHvliOcWOMMcaYbiDicVlRkCmJjpnJEJthLc+3/DE6o88ungsLy5c0Jp+jsdv6eKDSbiFyUZ29HHh1boKmXI0NRS/21uQEH+638DHDyrQiMUphnW9/rN2X/6MQh3iy0YjNr7b3QmyKdfNBPWx1f4ivJHjlh5/5EwgiAEMkAEKhCMID67RMGSyP0EiWtsH6yUYJIiAZ4gBhgCBJxrRuYH1gebaBFcmXQYRgxhhjjDHdQDOss4vVcEZRkIlqJZxTevUcHyhs+WW1iamweOZq641Ycq+a9W1FQp7I8diXA9vyQTohr0yOmx4MV7TBBL5LU+s3X/RrctK6lallrT6j5RXt2NkIaw9vhPq+xJAm7GkTN+7Xw/3VZuyIfvdJq/O5X7/bGZ3ZLnLvBBELqwRBMmBaDuMIBqzdMmUgaIh0YGmY9dnOUaDg9kI3x1gG4gDxQCQEgUCKMXwY6RhZn+1gaVoijbNMsjTNGGOMMaYduDZ8/wPRgRihYzpfSD81j68mCaAIxuT0XFiSCEGMQLO+JRGyKgdnT07sYPwN7VniY1LiY0niY1ZT5OdIdKxKfOztbMrPwSdqhscbzfDRvXr89seu3KqPJUb4BojpjM7ugHJuBOCgIwYQBqSMF2Ea85JwYLwTzMdYfnp6OszMzHTcfhllzjjTsF5gf1iRsmllsD8EBOJje3s77OzsPBULWCeYz7osT8p4EaYxj+2TMm6MMcYY0wk+SnhmsSKTD1erxGZZn7osv0vCBB8Hm5k/E+aXLsT+IHIwQrOxIxHyRGJkR1voP5XatMSHIh9V7U/7p9/HxurdsL3xULvX/mUIjV/cqscO6Lv7rVfvPpEgcfTjcPBcXxovkagEhjgACmwO4wgJjGFIaTsQG4gOxAfbztc9DApnO4OUdkvaL2k76wb2i5AgAoIIQYwgGjrBOkDKuhjDOWkc8cG2MWOMMcaYTuC+0OSKviBEQPgWCE2xXjsjETKlmYKvok/PLYe5xfNRhDCVviB8IyQQEVFEoh8QcQmKePCtD/p84NkgPjbX7oWdzSfycVq+zc5uM3zysNX0aq/eevXuzYd6UKvDOHCHTAdi/slONDjeCINkwLQcxpmHOMGAae1gGfp3IDwwxAfTOoEDXmZAikFKj0o6blIMSMusE0koIEKww/qHpONmGayTCGFesjTNGGOMMaYdRD4QIXRIpzkWb8Q6v1zVcMufoVP61MxiWDh1OVRrkwd+TkMiZCPEt2M1k8+B9cKBz1TRQ2bedjU5r2nVuK16fS9sPL4VdrfX5PvUNT3Evh73njTim68Y5sODtx42A9/9MN2hs91zLo0VFBgMsYBAYLgI05iHiGAYawfzWJbIx/z8fNwuwqUTFFDAKU/GNGyYcOwYx58MmNYJRALiY2NjI0ZC0vG3g3kY4qXdskxjHttlGDPGGGOMaQfuCl9H59W8uDB8lDB9IT35MqRTMwvxK+lT0wtM0FRBf5D9TZmiIRqWJyLrBvlO9PWYUNRjYk66Y1LThPwWRMfGkzutPh/6B/gzvG6X73zwxqt9aRLG17a0RGsR0wXk2ok+XYiDZBRKrAjzsMMccqYjOGZnZ2OzK5bHOoGTnYxCiUFKhw2/AUgxjj9ZJzh+jOZYW1tbT4VDGWk6yyNesCIsgzEvmTHGGGNMJ4h88FYshEhNkQ+aZp1bqoYriowwjG8jxaB5k2F28WyYnjulaIgeMOufvA/9xx/b19NV+TGNHTkr+B+a/hxaVtGU2L+jNqVt8pYs/KSKltQD1Pp+2Fp/EHY2Hsl/kbCRP6M/gTde0cyKvh4ME/24r0gIHdFpemW6RzmgM31CwalGWHSKbDA/LQdlywDzER8Ij9Tkqh0URAwHHGM42TjBb03GOcAYxtpBVIPmWAgRREg74ZB+K/M5B6RFWAZjm8xnOWOMMcaYduCi8FX0c4qCLM5KgNAcS+NEQRAirY7psiCfRiJiamY+TM+eChPTs9IUk6EahQTIT5EPoj+yMtiITClL0Ieksb8b9na3Yl+PvZ11CZi65umfFqDDOcKDaAdRDzqdIzwermk9zWcZ0z2c+RN5ynCiEQkIB6wMHG6WIWX5djAf0ZFHPtqBQ40jnRxqxo9LOraUJtK2U3oc2Da/i3NFyng7+F0IECIhiBHG28GxMR+RQVoG5wpjGZY3xhhjjGkHHgqREETI8hz+C+OVGBWJHdMlQqosdODL0EF9YmpWQmQpTM0uRiGix62ar5mdkEuCX1JXtGR3a1W2Fvb3tuTPSGGA5iEuEB90OH+0roeqinoQ7Xi41hIfDJveIWt0ak8eONFELEjLnGkcbYz5ULYMMH9ubi4Kj7S9MiigONg40gwnOy4cF5aOlWFg28X9HRe2nay4vyLsmwgIQmRzczOOl5GOi/kcK1aEZZjP9kiNMcYYYzqBdxJFiKIeyxIeVfkrvK53diqE18/VwuIMD6JZqrWsHBr+KNFyE9NhcmouipKK/B3m5MgtkT+yF+q7O4p4bIb6/o6maSIusVL9jewryrG23Yzf9uDL5ogNvv1BJAQxwrg5GuRJOs8nBpxnjOgGBa0IjjXzMShbBpiP6KCzOZ3OGS8Dpzm3ViHtD/mxFo+T/eDQY+y3X7Af9ptbGeyXTul0Tkc8MF4GxwnMx8qOlWWIgDAfM8YYY4zphNyVKEKWZqvh9GIl9gGpKfRBBGRJkRG+G7IwLcGh6fg2CYbj63RJ9a+MKDOaLZ8OSzCMm7K+04pwrG62vvexL+HBhwYfaRodzhEfWtQcEXLlRJ0+ChXCA2MYy2GceTjVWDtYjqjHYc2ucKYxnGcKZb/hWBEfnfaPw87++w3ngP2zb6wM9k8UhOZYpJ3OActiHGtxOcYx5mEMG2OMMcYchjRHWJhtCQ7EBy7LhCZOToRwZoG+IRquSYhoulybuHwc6Ab5I9IWJFFU8E0Pvu3xcL0R9uR60eSK+bxq996T1qt2WdYcD3LnxJzG5DDnDjvTEgwznWUYxspgOpEPml4hQFinDJxpnH9sUA4zx0r0pRNEIXDaBwHngvOJdToPCBCaYhEJaXcumI5xrKzDcCINM53zyTJpmjHGGGPMYSA+lucr4dS8fD1FPeTFyEKYkhBZmKnETuuLiozMTeHbtOYdRl0CY1OiYk2RDiIb69utSAfIq5G/oqjHhiIhG8+mm+ND7pwYLxAHGWcdZxnHuQjTMZYrmw/Mw+mn2RUdzxkugmOcHOU0PCj4PWXHkIOzjggZFJwTzlenc8cx0CGd5lgMtzsn6Xxx7rAizGc6v4fljDHGGGO6AfeE6AYfKjy1UIkfLqRZFv1D5L4olS9IKuMbIjMyxjX7OeSKxGjH9h7Nq/BbWuNEOhhuaAFes7suQfJY4oNICPM02fQJsuREnE6cYhxkHHac5CJMY/5hzjyRD5pcIUBYvgwcZJxsnGVskHC8/KZO4KxzPIOE84txPJ3OCwKEplhEQjrB8bJ8mchgGr+J+YM+v8YYY4x5uZC7EoUFIgMRMjMl/06ihGmIEOZHUaI0erplyP1AVCA29F+p/By5LLxed1suzoYiIYgTpjHf9Bey5UScVhxjDKGBo5zDeJqHtQPHmmZXSXywXhGcYgwneRjOMceRjr0MjiM584OG88FxcExYEc4Hx4EIoTkWw+3guDGOnfVyGE/zMGOMMcaYo0ITLMQIQmR2mk7q8mfk4ul/R/BOEB4Ija2dlvBg2E2tBg95o1M/3uAYEyXAUQfGEwzjNDOPYawMHGr6e2BEQYrL4RRjOMQ4xwwPA44d4/g4JgzYP4aTz/Fgw4D9czztzifHRPSDPiEYx1cGy2Fl5zMNM49ISBo3xhhjjOmV5KqQMIzRQZ2O6QyXgetBh3OaVzEcTdOBYTNYyJaxPs04wDjnGE5xEZxl5mEsWwbLIDoWFxdjWrYcTjLONDZsh5jj4fg5Tgw4HmyUx4Ol48nheBAha2trMeU4y2A5jh8rWwYBwjyMZY0xxhhj+oFcmejkRp4OHHDgcpDY/RgNZMlYn3qcYUQDjjBWBFGCAcuWQZ8Pml6Rlm0D5xgnGBuVI5yOPaXpOFI6bDgOBAjW7pzRF4SmWKRlpGNHaGBF2AaGiEnLGmOMMWZQtHyM9vhefJLplLvjlrMc67gd01NwgnF+aX5FyngO0xAfOMntYB59PhAgDBe3gQOM8CDFzDM4vxjnjTQHwcB5Q4DQJ4ThdjAPAVI8v2yDaTTDImXcGGOMMcdFvo7+H/wRSvU/VPTAlg/0ldHUfTyahlt/hFLfm8cSshPyFG8YP5fhHHKQzvZ4YQxDMR02HOOo9n0oOL04vwgQTmgO44gPlsHKYDqv2kV80PejCA5vco4ZNi+SzjP5wHAR+oEgQnhFLyKiDKZjZeeZcQQI+cAyxhhjjDkmVQmNmnyn2nSoTMr/qU2FMDGtGS/ex59H9+j9HT053A3NvS3pEYb3dCN/sRWDGR3K3TAhn0y5Gqbl65JOarzMT8uJPpdsV8M78rlIGZfsHDocqUrbeILjiyEkiieVaUmYYGWw7tLSUhQhONBFcHqTU4yZF+HcYpzLducQ8bG6uhrPZRmcWwyhURQZTGca62LGGGOMOQJV3aOrU6EyNd8SHdVJmVxVIh66j+uPklbK/+eILlDrXk2qAZnu1xIeTYmRsL8dmrvrGkeMjMJdNcrdKDJmZdMyhplGnpKduZWhHH3elMfkJAJkR7Yp25cxbRhwnBzH2MEJxelFZADjCcQHzjCWT89hHn0+FhYW4naKy+H04jxjZIJpD+eO84lx7nM4dwiH9fX12BeE81kGyzEP49wnmA6IE7aTxo0xxhhzGPJtEBgSGpXpxVCZWdaw/CbdqytMjyY3NaYyLRfn677+HNx7o7jQg0CERzTdz5U2uWcrZX5z+3Fo7qxpuDVPf2RmUJBLGNGOedmi8pVh5WScThq/d6KU8ZqGlbulKHdDXflMjpFzeZMsUsTHqvI6CRGmY4OC4x3k9o8Mji7iA/FQBEeY6TjGWBmID5pekbKtHJxcnF0cYcwcDucQS+c9h3OI+KApFmkZnHOM844IKcJ0RAjbMsYYY0wXSExUppdCZfaUnCNFP57en+X3IEimsAU9Op8LlYkZTZYY6YSERVPRjrC3GSMezV2JDQRHdFFb93KaaLWEyKomS7CYgYEHvCDfa0lGxCPlLumcpiFKiIjMapioiHK9I+Qi0Y4t+VpbSjdkmxpWrkZImb+maeuyF721/sFvYH9jBRcQji5CAyvCPIzlymA6Hc957S5OM+MJLh6cXBxeUtM9nEvOO2nZOeW1vHRIZ7wMpnPesSKIEox5LGdeHShLlCkMGMcoa72Qyk5ulEtSY04qXAtcG6S5Hef6AK4NLI2bE4bKQJiYDdX580qnNV5TgEP+Ek2wZk6FyvwFCY7WdM2QaXlcvph2IJYHGSkRDkVBmgiOjbtRdITGribLLWU6fUQ2H0isbLXWMX2DXJpRXp2WDzylVLkYxQUihCjIaVmaTn3A8sk6QS49NeWxcjLsKn2kugDRQXMs5Xqcvq3xxzIECcv3G451ENs9FpxMoh+IDyreHMapeJlXRloXAUIEhPEcKlwcXYyTb7qHc8l5x8iHHM4lERAECJEMxsvgvHMjJB9yGGdep3XNywPlh3LEtZosXdeUs0Q+3Im8zKSyRDmjPCVjOmbMuMP1gXFdJEvXB9MTR7k+GC67Ppjm6+MEQJ5LVDwX9aBZFZ3Np5c17YzSRRUiTUN4HKC19EdiNg5oUP9ykovJV8FVSA7GDkCIKNJB06vm1kOlT3QzlyjRtLAvQbL1QJGSDS2D2/rcmqZHyBW823ld5ynqwThig0jIsmxOwzS1epa7LagPMP3RWAnk64HlKHdj0yyaXj1RHUDkA1FCbiJIHqtuYB7LPb/m8eAo+7m9vkAFm779EU/mAQxTAWPMK4PpiA/eesU2ilDpuqI9Opxfzj83wyJ8z4O3YiFC2p1fpnP+sfwiYJh5bIPUvJxwDVOGaBpJ/yyuUcpTGSzbC5ShIkzjmqdcIZBpIkj5Yrox4wZlPl0fPEDj+qCuZXqRsmmdaFfmqYu5PlI/Pl8f44zyXMKiMieRMXNaw/hIqj8nFQlZekPCY0ne67MeAFpa83FKWbQSpif0NH1S9+8a62lmBlm+X9c9eK8edvbxkXBUma5U859S10PCndXQWP1I3qkiIIgOCZEoQmKEROPmyOBZITKWdF9UzkaRQSTkkuoBmlvR/yNB3gIp9caEHlRMarl4T9W051A+cq3v6X64rwcO+XWeUqDvB82ybmu5baV4Y0wjEkKEpJ+5yxE+2/MYkE4kFS/DWIJhngQxn+EymL+8vBzXZ7kcTjgZgENijg43RAp42fnlRvbkyZP4RK0MCjrLMZ/hBMMY6zOfYfNywTXLdUnTSJwrxrEyKFuUsXbzi1BeuLYpO2UwH0Mg42iRGjNu8OAMYU5K2cfKGNT1gUinKS31MONmnFBeV5Xnc+clPpY1Kj9IYqMyezZUll7XsB64apoKhZaVDpHgmJLgmJuZDItzk2F6kubTrXmtvy+SchzxsbO3H9Y298Lm9l7YlSCpa1qEcqGICG/Gaq5+3BIeEiX6o2FFR2iSpfmmdyQbwhld10Q6lJNRjJzS+AUZERDyDQPqAAQHb3mdU30xqXtrRdPS/HYo95Q98sF0jW/qPshbTJMggThfRgTkruoMoh94zMxlmAgJw/2AY2VfY0M8qXJwsWLlyjwEBtOxIlTIODgIENbPoTKlAsbSiR42HD+FheNkuAjHxfFRIBgeVzh2fgNWzAfEHQKEGxi/pQj5gCFAir+R6ayPFeeZkw1lhsgkxjXKOHA9Y7wuG8eLJ7/MwyhfvUB5o9xQthAYOFJE4xhnHjCf8sV0hEiabswooaxT/rk+uHdR/oHpXB9MR7gjTBhnPvN6gbJO+ceIdFD+eX061wcGzKPu5vrAGDfjgO6ziA+aV9G/Q8IjNrlauBQq8xIkB+JDS6lsVMLs9ERYnp8O01MTeiKusqL7dLpXH+bwtZbScrof0yxnb78RdnZ1X9/YCVs73Jt1D9d8ebHSHBIhG/dCc/22CthOq68IgmR7VfNdt3YL55wrPkY+ZDS7ws7pGj+l8SQ+lInKX/mRuofOqU7gXko9wLSUv8q4lpXBMpggf7m+qRe45jd1ve8oZZpmxjxGhBD5uM8yGsYQIERCtNSx4UjYz9jAyUwV7NMTKhhmHpUzw2WQGTgwVNYsm8PJppLl5DI8Cjh2biKIEIaL4BghPnCcGB5XOP/kD/nEcA6FmRsXNzgKdRmcf34fyzKcYJj8IZ+YZ14OKCuU+bNnz8brknHSNO3KlSvxmuX6ZTplCjsKqQxRvih/9+/fD7dv347XFOWKecmYx/XGsDGjguuBa+HcuXNxOBn1K/eLS5cuxXlcH9w3mHec6wOjfuX6oK6+efNmePDgQbwWmM71QJqmMW5GDM2uEB5zZ1vDEhyVxSuhOn8xjqtABF7FStOq5fmpcGpxJkxquCIxgoen/8p33Z+VlYgKslSjz6ElVbbkg2k7WpVNxmn8aUp07Gnlx2vbEiK7sakWr3CNG21IlGzcCc21m9IcfLRwX6JE4zvrmu/7eDfgrSI8iHYwjPg4r+GzmkZ+KAuUlxrWNO6VPKxgONYD5AGmTG3qvtfUfU4XsNYowLKqPyqspzRmNtNkqU7goQR1AsNESbTVWF4eaPieptEfhOZYCJLUJ+Q4aO9xH2MDFSwVLycWS1DpMo80n57D0yGadlCZs1yCk0slilNCOio4fm4oiCRuJkW4IeC44yxxrOMM55ffQ5rnB+eXmxahfJ5Cl9EuP5iO4Sgyz7wcUGGeOnUqXtdAeubMmfD222/HaCUVKeWI8sQw5SlZL1B2klGBUoYoX1xX9+7dC9evX4/ROaYB5ezx48exwjVmVBSvD64FrouVlZVw/vz5eK9g2qCuD4a5Ln75y1+Ghw8fxusCSH19jAPK65klRTouqnDgQMo/0nD11Jua1fJzKArzM1Ph3LIewCplvKnpyt6wF8WDHEkNK+u7gvUVOJGIIZW40bAmxfU3tvVg58l2TBmPKBrSePxhS3jU9eCxoYc9a3fk1KxppukE55UmV0lsSBqEs7rOL+t612mPcK3jNy6pXiDVBJ1znXxdw03d35ryuWLKtC5AzFRU31SmFUWTqWLRxNY28UFXVR+Qpu2p6IRb2tcD1RV4ZkmE0FfkOGiPsZyODVTCGHDSE1S8VMBMw8pAFWIsmy+TKlksndBRwPEjQBBK6TfmUOHjtJ8EAcL55Txj3BwTnF/OM0oaK4NlMH4jyyaYBpwHzJxsKCM4T4gNUsYp90Q8EB9UpIynNJUjljsOqRxx3VOOuKZIEcW/+MUvwt27d+M4yyFOcLpIGTdmWFDOuS6K18eFCxfCpz71qfgwjfF0vxjU9YGjkVJECBERxlmO68LXx4jhVbuLl5XOyHGUb0PkQ8bbr4Cox6mF6XA6RT1UPqQ5wk69JTzINv0/+NMDKmb6r8hKCFPyT6dq+F7ajDZINOSRoiGP13diNCRS35XoUBQEU1SE74g01m5r+o5mmnbQwZxoB82sEB8M0/SKKAjgY83Lr8V3ZJj8leMUGrqfITx0IZMp+t9bBsftYKpXKqprqgdChO3gl+GHbsiHYxiIfhAFwZjCN0QYZvpR0d57LpYDgxNCRYsVwXnHgOWKUDmTQVgRTiDOLicWGxUcP8eXbihFqPRxlsh4jnecIQ8wfhMXRRF+A8ZNrkjKA34jVoTzgKXlzMmEcoFzRXlnGLt8+XJ46623Yp8PIpUYZYiylDhuvhe3RRkjKofR5v39998Pt27divUCxjWHk8WwMcOC68HXh2mP8omIh8RHZWpO4kNPrGdOh8ryG3p6PafZeggodbA0Px3OL8unmJDzqLX2dcvd3Ve+KlX2Hh8dhv5L3IQwLRFSa+ngsLcvZ/TJVljd2FF0RTvSzpoSHc0nH4Xm9iNFQnQP31lVVOSunGTKjpYxT+Gc8kYrBAciBO+W/h4Xdb3zQUHm49fS14OIKPVAPMc8DEB8kGq8H8SICA9BtK/YPEv7p14gMkrfEPw49sRbsXg7Fl9L5xHxhlKiIipqcX6v8BuPsl7foVLkZHOSsRzmMY0KmuEiTMOhJ/rBU6MinEisX5l1VPgNL4sAAc47vwkrwtNmIiD8prLzzjRuaPxOhnOYhsVCX5hnTgZcy5Rz+ngwzLWLs/XOO+/E65SoB9cq84B8TgYp7RXKJJAmA8oSZZKnvJTLn/zkJ0+dKubR3p1rj2FjBg3l3teH6UhF/s7MspzCc3IQFe2YnAnVs589EB9yGLXI4txUuHB6LsxMTahMKOoh4bEjX39Q2YT4mJmUv6WUorO9ux/uPtoMa5tyhjVfoY8oQhoP/kgOzbZEiKZLgCBEmGeeIT33tN8HHhRfNX9TvhSREJ3aeIKpA542z1QGN7kGJQiaui4HAc2yqogQ1T/snzdl0QyTuoH9k4N8nPBD+Wd8nJDoBwKEpljM6xV+Zyw3o4aKkEoYZ5Y0h0qYacwrg/mpwibNoaLGmcVGDcf/MgkQ4Ddh5F8ONzIKLWm7mxa/Md3gcpiW5pF/5uRB+cah4nqkbHBt/sqv/Eo4ffp0HKbdO9ct+YtRBkh7hXVYl22xnxzG03SM5WjPTrl89OhR+NGPfhSH2QblFIeLa9CYQdOP64NxprMc2+gV1knrYmzL18cYUZsO1eXXlerJNM2wiHzMnZPDUwt0OJ9WSOLKuYUwPSWhon+7deXT/uDER0TFTEGQMCsRQh8RlcKwu9cIH99fCzu7uperrBDtaG7eDw0iIftbMgmR1U90Y9/V8gZ0CqPQuIRfq5QIyGvyo/jCOaeV65HX6vKAguaZEMWHHg4MSnwkiIBU5afGviGCa54XtiBGqAvY+xMdwy0ZERHejHVHw4iRXuE89L7WAOCE48giNLAcxpOVQSWanhqlzErgxCYbNfy+l02AkCfJcmgzzE2Lp2nc2MogT5LlMI5xDijw5uSBE4WDRZmnrNO0hKe7XJ9cq0wjbykbWC+wHuWD8sW1wj7YV7EMJqgfMOoYrjHKJOWTp7y3bt2K0yhrOFg4XMYMmn5cH1wDlFnKLvcV7n9cA5TzXuDawFiPa8HXxxggkRHfejV/QcEODc+eC9VTK7rhSowon3i17sUz82FhtjW+r1votqIf0iARnFiiFZr1HCpSQXpBA7I2qChEkVFcl1ZWdPdQIqe5FQnRYWh6M2xs74XbDzZisyzKLWKj8fh6FCLNpu7ja3cOoiA6UBOjH7xy97SuV4bpdI4YoRO6Tm2sF06rfsBXZJy+HogPXYjx/OeQ/6owWmkb4jrkC0Z9Iov5VELcjvYfRYi2y1Lcax8qCrqvOof16IT+iY6FV/SSo3RI5+vp2nJPaE9x+yOHH02lSwVKZZhDZpRNTzCPNnK0l2U4wYmiksbaVeLDhN/BjYJCxW8tQkV/0gQIecI5x8jDBOecNsW0IWS4DPKEecXfmqZzPshDc7KgHNCGnae5gLPF011eJYpzxXXKMuQz1k0eswzLpnJBWBhHiWH2hQNXdk0B+6KcYmyHcsm6PNVJT3mBp760gWcZYwYF5ZEye9zrg7KPQKDMUvZZNzXXoD6mvLOdw2AZlsXYl6+PMYCIx9IVPY3WU2giIaffVvTjrGZotFoJfOPj0tl5OXASH3Jttvbk65AtmLJ8Vgrh4qJ8KrlDLJPYl4r4ZLURdnXLLc1GLbo41VqXKEuCV7GubTfD/U3qYU3QLMQHkRDEirYW7jxU5Gx9WyKltWE+SNh49EutLOeZL6av3dIBbGuOmdW5pe8HURD6e1zFN9T1B1yHdDpHgHBq6evRkE8YX69bgPkV/Mm33lLBUGa3g0zTvTO+pldiIm5Pvibb5HW7RdiunoaEmuopOa4aaV3/61ov1kka53sgiBAiIERC6JBOs6xeYD+9rTEgqAR5+sPJxxJMx3FnGlYG86nMWZ/lE1SUOLc4LQyPGo7zZRMgnG9udvw2hhOcb56iUWjb/RYKMsZ8lk8wDWP9fLo5GXCdcj1S1uHixYvhi1/8YmxWwoMCygv52st1ybXBdYEDRDMRykdaF6erkwAByib7JWW/CGO28+Mf/zjcuXNHS7RenEB5ZdvGDIp+XR9cEwgQxDhQttk220HgsP1O10QO67JfUvbr62O0xI8LSnBU6OuxcCVUl6/KwWy17liYVcTsrISq1AW+PuIDQZGjbAyvLVfDhQX5T5nbxFux7qw3w9113Xc1/BxaBzHx9tlqWJpRWdIwUAQ35fu+/0BRZ+2H8cS0fFMiISy7o43ferAe1re0MBAFeXIjNNd5K5bqa6IhMtP62jkdzskaIh+IEZpiwYz8Q5pe8ZVzXYyhoXteQ6KhDK5XOo5Pf/nLEqvKjC5BiLDd/Y8+iin5U0ZVD0eIhKhiiV9LJwqCjwo0ubqt4yP6wdqPlD5qs5128Iuz4jQ6qDgREKSc1ATDOLepciyDSpZwNmkOlTeVNBUmw6OG38FN4WUTIOQZv4fhHH4PYXvSMsgTbnb8VoYTDJNnCBBSc7KgnFOBUs5hZWUlfPazn41Pein/lBfylbzvBPMpOzhY6ZpgGuUDS3QjQIA6JO2b7fFk94/+6I/C9evXA3Dt0dmW/RgzKPp1fXBt3MoECFAHY5R19sP2uD64NpjWCeanffv6GBUVOUPKh8XLIUwvKi81fP6dUNFwkBghKnHxzFw4vTCj0Yqcfj19VnZk1eFTpuSPvi4RcnaOMqEJAsGyo+Xff9CQqKAe1cQDavKGT83qafwp3c9VVA5WieKGqMn9jeeXB7YrPaR9VeTENsPjjZ3YFItmWZoQmjt6Yn7vJ1pP9fa2HF2+mM4rel9hlC1RcMzrWmP4bfm9RER0KpWnrYcTRDO5jpt6CBA7neuaLINljiJAlCFxm0RB9n75y9BQHZLfUxMcT5VjUd3EfB5K4NOxLke0qfSXqocYpgkWUZDOtdbz8Jtf3OsIoOJLoWcswTDChBQrwjTmk2lUuDmcsHFyYjk+bgjceLghFOGGQiVP5X+SKnnyjjwgL3L4DTwxIw/IiyJMw4rzGcZoCjAueWe6h3KeO1if/vSnn37XgKezlBecq3Z5y3SuA5qBEPGgfDCNMlEGDlY3AoT94mSxLSpSHCy+C/Lzn/9cc+1gmeFw3Osjwf3iVkGA5FAfsy3qZiIiODXsk2llMN3Xx4hRnsXmV4uXQnzb1dRiqJ39jKZJcGj2jEIORD9mpS7k74eNXT3Ea1NM2NTidCW8IUGBSGAcqEYREzclKhAjwDxtOqyclmM8LTGicS2mshDCPS17S8sqwPEiWo5l56dU1pTyVqybioJsa8OsT5Or+oOfScWshebuZmggQPb1BJ2DeAXRKYodzvnOB6KDt2DR+ZymWFyvz3U8Vx1Ql/9EtKIdrFMmQGhaxfpPz7OW08Ud+Ap6HMZAGbx/+3bY++CD1jol0A+kpnss63MvJgpCyv2YJlcf6fh4HW/eDOtgr4fCUXS77ECh8kOAkOZwgsmM4vQE01mP0DUVew4VaTpR4wDH9zIKkHZ5xG8glN9JSDC9LI+Y3mk9M75QzqlEKefQq4PFPNqfU3byspHSIhYg5iRx3Osjwf3i1iECBEipn7lH0s+Ea6AM9ss89uvrY0QoyhE7n8+dC5XJ2VBZuCwxckXO36Qc/Eo4szQTzi1LoCiv+NZHu+hHYkJZfXZOTu6yomK6PbdKhPSAfNObT/TEWuKC9Zl3fr4aXj8lh1YL6X8UOLSm+vBRI6zvaKQNLD8j12taUZC6ys79J1vh4eq21tc6dT0d58OE67fk4G7FJljNbZVXRUdeRXSaY1+P07IZ2QVdb3RA1+nTeayERT0o4Dolr/nWR6foB7BOmQCpK0pRl7BI4gXhQRSjpnqH1+zqQtfUFjTB2v3pT+OHDcuIURCtw/rkKfflNa3D/ZjO6IiOezrGHRlNsNZk7Y/4eVR0TrYAoTJnPZ7wUHkmODlUpFTSDI8DHOvLKkD4PeQRwwluojzBRki0+z3kUe5kJpjOeqTmZEE5zx0svnqOk4WDxVNYygn5SvloB/MpF5QfKjyG2y3frQChfkj7JrqCg4VzxdefgWvPDpYZNP24PoD7xa0OAoTyzr0Th4b7I8Nsux0sz3z27etjRCBAFvnw4GIUILHzuQQJzbLofH71wlKYw9uX60b0gw7oHT043Y7pA0IUhOZVDAO321WJio8kLhAxS0RKTrciJaDZMeLB/Mfb+FKa0I6DfRAFYc1NbfDG3VWJEW2FV/JKcNAZPQqQHTmuREFeYQGSml/R+fwN1QULGmY61975CxeiP1tRBtV1XceohIbbgb9VJkD2VS/sX7/eWj/BsjMzYerzn4+CgnGgGdYOAkT32TLiPqg7VI80NYxfdu/uXZWJltBAcNxQnUDkg2ZYqU9IN3AE7X/dkOAHcvLLKkjGcSxIy2AeFTlPjqhAEzi0nCAqaYbHAW48r5oA4Ukav4nfVkbKI9IcxnE6Sccl/0x3cB3SJBJnChAHvGKUaxRHiPnk6WFlnGUoQ5QDyhBOESnrMQ+DbgUI1x/lk20ibCib6VWjwPZpMsh8YwYF5b8f1wf1JmU3CRDKNkY55x7D9km5r7JN5nWC9ViG8u/rY0TQ5+PUm8oMOaGTc6F64YuapGHly9RkLaxcWlZUQxGypvJDAkLF5FC0aliQOHhdImRhqjUOCAwiIPc3GuHSYquviDYdYd6DzVYzrUNFjmCbCxIxNaX79Ua4flsPjbQRynGTt2Dd/bGcYT1h398OjccfaXvawStIVZaaXNEU623dsxgmf7n+Ll26FK9VhENDUQzOXydYr1SA3LwZ9q5fD7xBK4flp77whRgJkcOmKfK19KBh9w//UJGqNY2Vw3pxHe2D6/+Ooit7qp84Pt6CRT8QmmAxzJuxKDLdoOJyWNEaPPw4nFcqStJEmk7GkJbBOlSyVN75MpwYThSVOMNF2HayIiyP49tv+B3jLkA4H8lyOCfJirAsv40Lh+EE55CbGL8JJ7IMluG3kubbZpx1SPPpZvzhOsSRQhgAZf5Xf/VX4zSMsk854fokf7uB5SgnlCccLp7CpPV5wosTx3bbwTFRPilLXGc4WNgf/MEfxOsN2C7T2KYxg4KyyHVw3OuDcow4IELINinfPD1lu9wPqZOZ3g0sx/q+PkZMVXl25m0FQvQwdXIh1C59mRtsbJIzr/DE6+cX4zAfHdwsv6WWolXC+flKuLIsP0ubBmV1FBe31xrh/EI1NqMCAhdrEjcfPW6G7UJH9U7MSdxMSYHQTOeT+2thfVNOtIbZQP32D1Rg1xX4UJl++EvtZDT+zajh1BP14Hsf9AH5rPxXZY3yR4JEfuG58+ejSOFVuXVd14fBel0JEJaT6SIP03rYUVU9o4s+xLyR0NlTpLPdm7YS9AMhgkIdQRPpLQkXhpXD4Y+0ny0N87pm+oTUNa0bdERx/ZHCiaECREyQJtL0ThUpFS4OPeHrfBkqSSpwjJNUhGWpcEmLsA5Wtt5x4Hdws+F4uckUoeLHWafCx9kaNpxvjHOCMZzgfCYrnheW41xirJdgWcL4/CYcxjJYht9Kmm+XcQuQkwsOEM1MKA9c19euXYvNTBhmHmWFfD3KdUaZQIjgDOF88aS3kwBJ5ZOU/bEuZevnqnQ/+OCDOMw2aV7CPGMGDdfAca8P7he3JECITCDCES+syzZ7geuC/ZGyP64BrglfH8NG99uJGUVA3pAAUV02ezrUzn9B0+X8VSvh9OJMuHBqTotVojDY6dFFmJJ/SqTj0qL2k6FARWxCpc1G2O7HT5Tfio70Ap3YeSWvCmy4+3gzPFqTE91obaN+770Qth5JgOy1IiCKhGhB2auDzkxsdnVZfqBOVeyA/tbBPYtrdkG+IQ8PaH7FRweJTBwG12ypAFG9wCt2iaREtH3Ew4QETk1RFjqWk0/0L9n/4IMoWBjuRHwlr+61NMPiYUT6Jgi8r/2salhFJ9ySP0dzrG5yl3PSzXIDhZNIBlD5kibSdBx30jKOIkDYbtomVoR10vrFdY8D+xxXAcI54SbE+cAYz+E8cE44RoZzWJZ1MdZNsLwFyKsJ1yWvxuaaplwgEn7t134tOkgY1wDlhrzFes1nlscoO1jx+ge2zzRSjO1TFnGisN///d+PzhvXOWWN1wu2K6fG9JN+XB9Mo37lvoJR1rFuYfssT4qxfV8fI4T+H5PzobL0WqjU9GR84WKonn5LM+Q71Krh/PJsFCHKLEU/FKmScOgFraYoRyWsnKmGeUUrpGkilCoGSVUEwq3VZrhT9p2QQ5jU4/25KW1JG0F83HuypW20HNTGo/dDc/1OaNZ3Q3P1EznGErKvWD+QqoyoxwVdq3h/p3Tdv6lhoA7gIQIiBAFC9IOvnx8G122ZAInCQ/fFp6KC5WSqKFrLaTrLIDx4C9bTSEkHKqqzajpGBAjig4d/1A3wsfb1QMPaa7irYaIhB3vuiI4olruRwomhIqQyJk2k6alyLYOKnMq66IBQOXNyMCrWBNvEEAD58jksz/plzvZx4HeMswDhmDgnDJeRnxMswfJcQBjrJ1ieGyS/qd2Ni2X4raT5NhnnpkeaTzcnA8oBT2Qxhrm2r169Gt56661Y/rlemUbZwVI+Y72S1mE7CYYx9s18jPKUyuP7778fbty4Eaexb6IpGMPGDBrKJdcGxjDXQq/XRxpmfq+wDsa+2Q7GteDrY4QgQKblgC5clpOovOcDhPQHEZM1RS7OzofF2Sk5bK0O6Ae+fU9MSCScoynWkvyqZ7fqiIpA2JE/+Yv7jcDHDRnvBR2ihI3KlY5wbWs3fg9k7+AgG48/lAC5GZr7EiC8EWtnTTtszXtV0OmJnc/phI73R0o0BPCdzigiyrVf0TV22Ot3E1zDZQKkI8pYoiv1+/dDXZESxMdTodIBtl87fTo09RuoI3gdL/41EPXgbVgIEFJey3v4FrVNWY/FrP9wEqkIqXBJE2k6jjtpGUcRICyHs81wO1gnVb79gt8xrgKEc8L5P+yccIycE4YTrMMFhLGdBMulG5oFyKtFKhPnFfKlXFEuKP90tuXLz0zjOuD6ZR7LQ7/yOt8eZYjyRzmkTPFlZzrXpnLHtHv37r1QVxgzKCifvj7Mc0iABAmQahQg0/FtWNXlNzUjEyBzU8qD4wkQmmEVv5AOZG1d9sHDRnhy2JuvStAhtgRIRQJksyBAnkiArMnZ3d8JDQmQYAES06cCRCkRUa75vggQMrMMLU/GIjro89GQCNnXta2LXKu0WecAtv+cAFFEtH5wjBYgFiDHgnPC+T/snHCMnBOGE6zDzRRjOwmWswB5daFccF3SrpXyzjjXK988uHLlSixv2MzMzNP5/YRyQ3ndVkVLWcJuKuTMtw0oj2k+7Vkpp4wbMywo774+zFMGLEAoPryp6q0zutdLiDBepClb2w7hxpNG2NhhrHt0iBYgHdDpGZoAietqOyosGhNaTs5Z4HsgT9E8Ih91CRD6izTkp3WC7VuAFKDCJtOoyPNlcFwRH1hecbJNjAo9Xz6H5VmfypfhfsHvGFcBkp8ThsvIzwmWYHnEB8b6CZbnxsVv4oZWBsvwW0nzbTLODZE0n25OFpQJyjzGMOUDh+rChQthZWUlXgtc91wbGPOx40CZwShXGOWIMnj9+vVw9+7d6HAxn7qBaw1j2JhhwzXBtYExTNn39fGK8pwA0cPArAkWfUAuI0CO0QSL/hmvL1fDcqsbie6rIb4Fi48N0idEu4gwLb6CVyJkT8PaYVewfhQgWoEmWLckQJ72AcmaYL3SAkQn/ryuY7y/5wSIhqMAkR/bDwFSp3mUruWn22A51Rt0RK9pP5WFhafLEw2JfUE+VB5RKNrA8k8FiPy6KEAO6oXnBIiGN7SdbnJXxVClZcRwEqlUqWhJE2l6qnjL6FWAANvt5Gx3Wvc48Du40XC87L8Izj03Aip8bgzDhPPARYBxXopwHjgvHCPDOe3WZXkLEEO5p607nWspHxhlhU53165di/NYBmMe5ek4UF4oN5QrjLbrvM0ndZpjHkZHW+axjDGjgnLPNeDr4xUHAcK3P5Ze15NqRbzmzoXq2c9ohsqIvPuzS7OylnroqRO6iktNdnnp+aZXSWg82WqG1yRMFFxh0ci2svwTCZBHmqei0BV5J/QHq9uyrBP6g5+F+BV0voy++rGcnU0t15r3qqAzEzuhX9R1jPdX7ITOdc6X0OmEztfJaSJ1GNQFZQIEQfHca3gPiCJEvvKUoqxVRV4j7E9+2s6PftSxKVZV4oXX99IJnS+hUzdQX8CHqiMeaxgBckfDdEIv38rzcE66WW6gcBKpWPstQDAqz+IJZbsYmY4xnGAdTipWXO+48DvGVYAA54HzwXkkTXAe0nkhZTyH9fhtrIclWNYCxADlgrKPUVYSXAc4WrySlLR4HR8FygzlDoeKV4eScm0lKG9cYxjLGjNqKPNcG5ivj1cV+SH5a3hnToXahXc0XQ5q9eiv4dXi8SvoRD9mtdnEmm7JHz5qaDvN+H2QixIn2k2EWy6RkV8+bMR9MX4YHV/De/cnUjWPpTkkQBQNCfva+ehdz6FSkXX9Gl6Jf+ww8L16ESBAM6zJN98ME2+8obEWfHdkl6+hS1TQLKsMvp6OIUBolsmbsFL9wIcI+SI6RZJoyEvxGl5gnEqYtAzm4dDz9KjoNOMwU5kyXIR9Ymm7DLNcsnRi+wk3Fm4wHC/HXYSbAM46FT/HPQo4H5yLZJwLIOWckBZhOX4b55/hBOefp2j8Jn5bGWyTeaQ5jFuAvDxQLjAeGFDJcq0zjlHmKDsYw0w7DpQXyg3lD2OYaRhlisoTQcw4Zsyoocxjvj5ecQ4+RBiqupd2+BDhXr0ZNl70LV9Ai8bIxLUzcnCn9YBR40D05NaahMKaHtRqfF7C4Y3TEsHTGhHkuopFeKgICE2xuhE7NOOa1A74+ODH99bChhQMwypE/hDhAcqK8IZ8P1KiIaUfItQwgqCu6/AwWK9nAaI6ZnJlJUxcvqyxFuzvMAGSPkRInt6/dy9sy6+jflAOn+wPEQIVK5UvaQ7jOOukZeD4sh7hKyroBCeGihXnluFxgGMddwFyFLgI+D3kEcMJbm6E6biZtfs9KY9IcxhnPVLz8kAZoazw3QOcLIYpM9gg4NrHKGM4V3zXgGGXKzOO+Pp4xalIZJ5+U97etASIol3n35FjORPzf0pKYuXScmyOJf0R1nfIO63TAa0SLi4eRDfkQlGKWOWxhMXHj5uKcjCm3WkeUZI3TlVjEy3tLm6bPiAIEJpqHbSmKoXlk8Ch2dX120/CrlQOZau5vx0a934SmjS7UuQjRkCa3bqoLxc6teE1+YFTOmEzsrd1fTNM/uIfXrp0Kfqx9N1oKDrJ+esE65UJkPqdO2Hvww/jdp7CslqGPiATV66EivzQiPbRlN+58957oakHxmX7ZD9VRWFZH7/u9u3b0adj2V0ZEZBtpQx/oukdispzVGQv7m0EUPEiJEhz+OFUxMXpCTKL9QhPM5zgxFCJUpkyPA5QwF41AUJ4HyHBcBnkETe+Yh4xnfVIzcsHZYXrmg63NCvh2oC8/ByHVJ64jmhuQsdaypnLkzkJ+Pp4RanoHkon9OlFCZBZRUM+peFlFQhFwKqVcPXCUpiboSy0OqLTj6OdB0dROTUjUaHIRnrrFdmOqPjgQSOsFgQMX0pHgCxrHQRJYn0nhBuPG2FN+yvdl7aLaKEDOgtsbu+HG3dXJVi0sCIezZ0ninr8QgJET8x31gLfAdFjdi376qHTFDuf8zYsBMgbuq4ZZjrX/PkLF6I/SzMsIiB8LPC5TCpAfVAmQBryIWMTrtzv0n7px8HycVmtG9E1z752f/IT6cJs+YSW48vpREBofoVfdu/uXa3Wip7R9OqG6hGaXfH2KzqjM70bOIL2v26IcPI58aQ5nGAqYlKsCMuzHgIkVdIJThBOPek4wPG9jAKEPOD3kObwG5IAKcsDboIYNz7SHJZvt555OeB6Tsa1wXWeP0Q4DgheyhVlkLKVzJiTAtdFMl8frwgIkJnTchJ52jwbKotX4luxQk33V5WDM0sz4dyyhInutbv7zdhZvF22zU5WwuunKlGEaNUIguWhohl0MFeA4jmkb6KI4EvpM3JPNBpRQCN+F+T6o0Zcv+gxVrQgmmhqohLv1/efbIWHq4p6cGB0OpfgaK7dlDMtAUJH9O3H2gYbevXAQ6LvxynZjOyiruczMp0+ZX32cVKdVDqGx4iEzmk7qBsQFEUBoozQH0Ee5Gj5p3YAQoU3YO1LVJTBcbGPqh6EkKe0asE4rn2N31ddck/D27LHslXZwd4PhaMoHOFo4IKigiXlpCYYTs4tw0WYxnqnT5+OlXQOFSqVLBfFOMDxvawChDwgL3L4DY8ePYp5QF4UYRp5w+9mOMEw01mP1Lz8UHYwSOlRofwAKWbMSYdrAoOUHpV0TZBiZowgbyfmQnXxkp46z4UwvRRqZz6taXoqrtkz0xPhytmFMKNwBQEGoiAIhOfQgoiJ15aq8avnNMMCshrBwocGeYsW6z+H1mE9vpJ+Pl9Phli5s9YM99bldBb2R7QE4cK627v74eaD9bC9I2GreTS5qj/8eQg7clj3NvRk/rambWmjce4rh05RjHwQBSFdlO/0uvzC1AwLP4ovopPqKcGhr+NlHcTBCwLkMHT+iXbQ92P/44/jV9Hb7Yft8vpdPf2IPhlfQCel7qDJFX0+iHzQBIvoB2m3ucv56HbZgcKJ5KTzhIfhBMM47ji5WBk487xDmTSHE4RzixPL8Kjhd3QrQHhCdRSG/TvJH/KF38NwDr+Hd0WTlkG+YAiV/LgZ5venQm6MMca8/OgeWpO/syABIvER+4Rc+GKoTM1rWD6Q7rF8kPDUggSJhnf2XoyCaHIUBE+bXmkaIDjubzTDzVX8IU1ow7Rck6vLdEhPa2r7MvZz/aEcTKVxgmBfRD+mFW3hXv14fSd+gJAn5XpEHpq7Gr77Yw3rHr+zJgFySweCb6P5ryg6XVGA0PSK4bfl99IhXacy+lKn5cvyUiXyl+hEpygIy/Ba3ekvflHlRpl9GDFfJBDkX9HhvH77dmsf8sHKeBr9kJG/vFTokXw6/DZtKXY8/4X8NHIUEYIAKd9SOfxmtjNyOJE4sQgQMiHBdBx3pmFlMD+9OSRfhhOGc8vJwkYNx9lJgOB0c7w0PeLYe4Hfx7q05WV4WHC+MX4beZXgGBAQvFGF4yqDZTDm57+XaZwLhEs+3RhjjHnZqcxfkGN5Nt5T4wcJl6/KwdRTccHX0C+d0VNvhSh0qwxb+3oSnd1idTsOSxIPCpZofU04gEgJTanyZctgnQUJmPlpjRTgzVt8IR0xAwrEhNkJHkIqyKEwye2HG/Er6JH6bmg8uRHiBwgRI5sP5Ezf0wxzVn7usk6aTlsUI5dkE5x4QZ8vRMgEPqL8oNifQw+m21GR31s7dy6KhU5EX0rba8q/ZHtEPw6jKl+1Kp9VjnnYlz+G+KDPGND86q62d0emohWeqDA+0HAv8It1VKOHCw0nFsOhzWFaUZjkMA/Hng57LJvghOPIYji1o4Zj4zjbCZAcjr0X+I0Il04O/yAgTzj/GHmY4BgQQ52iOeQJ81g2h+lMw3o9D2b08DDg/PnzsW9WgnwkX+/duxefohDpK4PKlzeBcC3fuXMnNuFjvTK4nriWPvvZz8a3BlH+aD9L1O0Xv/hF/MYBZYjjuHjxYtw2+2a7lE3goQXHy3cWKMtcQzdv3ozHxzEb008oo5S3N954IzYbpozRT463ylBuKY+UVcp1O6gzqVf5ajkPeYBrhu3y0Oajjz6KaQ73G/ZHOaeuTrBPlmU7XBvMOydnhmU7wfXDdcRxmAEwqafOi5cDX0SP3wY58+lQmTmlGfJ3qpXYF+TCqXmNqTyoetxUJIQ3Y0VvTrdhLULyHMxScYt2GCqmcRtFEB76H+GNV3OKfNAEC+4+3oh9P2Lnc0FfjwbNr/a39YRdTu/qTQ2X1/uvGkQ8Luham1RK8ys6o9McC6qazn2Mfs1AR3SiFaRlUKfo5sWAxg6BzD8w6p5O0PGcDw+SAvUUfT8aqn8g73xOUyyiH0REeoEj7m2NAcFJpPLDqSDNYTxZGTgOOCA4LVTgOVTWyUYNv61bAdIrOFo4T8MWIORJshxuaNykeK1jOweSPEmWwzi/gfSwi8SMH5/+9KfDu+++G8PIOeQl5eGP/uiPwk9+8pMXxAXX8bVr18Jf+At/IYoFlvmf//N/RseoSBIVf+JP/InozHE9pToEh4rK8v/9v/8XfvSjH8Xr7etf/3p00hAX3/rWt2JFyjqvv/56+OpXvxqbcPJkh2P7vd/7vVh+OV5j+gX3p7fffjv8sT/2x8Lly5fjvYoyRl1Hef3f//t/R4H+1/7aX3vqfJTB8tevXw/f/va3o1DmWvit3/qtcOXKlVhu/+2//bdRHLBcgn1zrXz5y1+O5T5BHcs6CJFf/vKX4ZNPPglf+cpX4jXcCa6f//Sf/lP4+OOPNWb6TnWiFQGZPaMn2xpWRKS6/GZruuq5yYlauHJuPsxNt+q9Pd1CtxUJeSpCBom8RsTHjCIfCsLEMry5sxdu3t8Ie/sH9+zGvqIfHyricTc0NRxTCRJ5r9qA0WkLp3W/W9b9Kg4rvSKrKS/Jz0n5ivQF4drWqW5FLXTv1AXbOr8DhP3rRhqq8qn5Zgh7w7ek78ee6hT2z/c+butYiHiQo3wFnQ7oDPeC9hS3P3L40TggOOlYDtNxLIrTE8zHycBpIcNyOFlUxNio4fhfNgHCb8LIvxyOBYeOG2TuZOZwnNwAi/OZjjGd/DMniy9+8YvhL/2lvxTLOvlIHpOPXKeUe8oFwuC73/1udH4SXLt/9s/+2WiUp/v370dniie6OcxDOCBU3nzzzaf7oLwA+2GYp8qsz3b/yl/5K+G1116L2/rmN78ZrxNEx1/8i38xOluIlt///d+P4gNn0Jh+QplEMP+9v/f34n2K64EyB5Rnronvfe97scznAgSRQv0K1KmUc8r7Bx98EP7Lf/kvcRoC/G/8jb8R1+F6+r//9/+G//E//sdzwp19/sZv/Eb4U3/qT8V7adoO+2Yco67+P//n/8QICEIJ2DfXLMtxvKzDsXON/Mf/+B/j9WQGge6nE9MSHVdVeHR/nZwL1VMrioKc1ricQ+XH7PSERMhCmJIYAV6vy1fLBypCdFhRfCjyMVnVuNiV6Lh5fz1s7eierbKByGhu6+HS4+t6ar8pp5mmWB8r3dHSBnQKY+QjNb2iQzrfByEKwmmlORUPDbhHcQ0CTaYQIe36a/QLOp1H8aH9A9c8Dyh4oExfFBWzsK6U730Q8aApFmKEKIhyvyc4D72uMzCopDnZVHg5VH5Mp5JkuAjTqKh54kpFW4QTiFFxjhJ+A07ZyyJAOO/8JqwIN1RugNwQy84709JNkOGcdKPDiTQnjyRAKOc4QzzZJa9xav78n//zsWIlEvFP/sk/iZVagggFjhRPcoGy84d/+Ifh3/ybf/O0jFDmuM7/8l/+y+Fzn/tcrBM+/PDDKB6uX78e9/POO+/EJmA4U1ScNDv5q3/1rz4VIDhObI9pCBm2iSAi2sL143Jn+g0imOgD5Za67b333osiAaefskqTCyJ+lEXugxggnH/lV35FQyH8w3/4D2OEBNgGZZ373bvvvhvLPPtgGk0P//2///fxukiwXBIg1M3/6l/9q7gt1uF6/fVf//V4vdJ08T//5/8cl4HPfOYz8Zi5Zn/3d383CnTqZ66RdAxmQFTl7xABwWryFyYXQvXsZ+QgyjFUOdH/cHphJpxdno39QVSlxTdUIUJIB8GEiiXig5T90+/jwZOt8Ghdzqn2z5/44cEHP9ONXM5yXff/jftynp9onstKDrKRfiBEQZS7sVP6m/KlECQ6tTq/lbCoegGfMfYH4dzqfhk7jesaHARRfKiuiB8p1P65xmlmuaaIJ/dMsnhPaXrzFUfxRHUA/T+Okrv8TrY5FnDCccyxIji5GLBcESpsMgorQiXJiYwnUDYqOH6Oj4q+7DceB37fMAUIeYDxm3ACi8RCK+NGVSTlAceJFeEGh6XlzMkChwYBgtPy/e9//6nTgpP1d//u340C4rrEwr/8l/8yllmgLH3ta18Lf/JP/sn4MIEnwTz9oQz9i3/xL+I4ZYWyhpDgKTHCAieKJlVEO9K2cKq4vnCiKH8XLlyIYoP1ED7//b//9/Brv/ZrURAxH6cLZ5AmYRynMf2Ga4Gy/a7EAmWMawKBzEMa7l3A9CIIcsoq/IN/8A9i06oE1wJl++/8nb8Tyzxihv0wnTLOtYeIh1yAcE3983/+z+M1w7JXr16NTbi43ois/Lt/9+/ifQQ+//nPh7/+1/96vGcRoUGkp22aAaM6MVQnY1+QoAhIbIo1dz5UFBWJIkRMqOwszk+Fs0szUYRopVDXLXdHYRBpA91DNakPcChsfrqmiFksrs2W+FjdDmsbuxI82qlAfDTpeL55T0/LdQ/f3YzfACEqorkyk9ApjWKDTuhEQPAI6ZzOONER4Pqc1bXLvZN7GhlKBKSpexvNsohI9AMiLnRm541asc+H9k99RFPLLe0LH5rcI8pBx/OHMjw3XrlL3w+iIMzvFX7lUdYbGJxkDHBKEmQEzi7TsDLoB4KxbL4MTgYnEBulU8vxI0C4SaTf2C/4bThg3Dhw1AYN55fzjKUbKHB+ORba+mNlsAzGcbJsgmlAwcfMySQJEJwenPuf/exnMT9pgsJTYPL8d37nd2LUgumUH0TJ3//7fz82I6EdOuvhMHHNJGcNB4vr5gtf+EJsfsUw28ApwpFrB/tNAoSICM1Hrl27FuuF999/P3znO9+JT405LmMGAaKaKMU3vvGNWGciAoh4/PSnP431JHU3lurARCcBgiigv8a7EjWU6R/+8IdRVNO/BCFBFARRDVyLXE8IEPaT5nHtcT2xHY6RiCN9OzgmsAAZA6bmQ/wY4YQcxOpkqCxdDdX5C3KKWj5Eraqo8OxUuHh6TiJBjqTuzZQiPlS4oyqNIqX/B396QC6U/mt7CA8dxkQljlNG96Ry7jzaDBtbuxI8Bxvmo4P09Vj9SMEO+SASI/G1u+543hE6pJ9TnTCtlE7pfJyQPiGtx+0hXqMzuv54MQR1B/mrm1frQ4WKiOjGFfPkKMRtaftEPHjjlXYQt7WvbT5W/bCtey73SUBk8NFBBIiKVex8jvhAhBwV7b3nYjlQcDhwLDgxWIJM4ORj+fQcKkkqWp4GsXyCE8pJxNlheFRw7DhaVPT8zn7C7+PGwI1tGI4UeUA+cZ4ZTnAc3OB4+ozDWAZ5wDFiLJ9gOkY+IU7MySQJEJ7aFKHJFZ3DcWZwcshvrlfeZEV/DPjt3/7t2HyEbdDHg+jHP/tn/yyKB66d3/zN3wy/+qu/GsvPd7/73fDjH/84brcduQDJrztEB44YIsSYQUIdibgmyofDz0Moyj51Ns0CEekIEupMpic6CRCaDxK5oOki4uN3JOrZNkKD7f63//bfYhNI4L7IdAQI11AR9km9Tcf2P/iDP3ha/1qAjAEqO/T9oCO6FEiMflQUFakuvqbx1r2XZH5mKpxbnokp45Qibq+7dd1T5RIoaU3sBq2vYIcETQhTGqhW4ySVkxDWJTruPd4KWzvypzQtohmNtU8U7bilJ/Sqi+l4vn5bT+l5S9rTpUwJnFf6fhD90GmOQoQoCMY8oP6gzlhSHUKqCTqtOq+6Thu69xENYZjruBvYnhzS2Mmcvh4p6qENxDqIBxrUB4wDfxEbGMKDvj73VbjoC8K8o6I9Hmv9voOTXubYMsw8HAiGy6BiJXNw8lk2B0cXx5YMwkYBx51+F9ZP+E0Yv5N0kHDsWMqnHJxCnkbjELa7UXF83OBYluEEwxw/+cQ8czJJAoRoJGWBiox8pbzgyFAufvCDH0SHiXlEBWln/qlPfSpG8HCceDqLw8S2KBf/+l//6/Dzn/88lju2jaPFNmlqQv8Nyls7cgGCQGf/NF2hnCFevvvd70YxxPaMGRTckxACNHkiEkjfD8aBBzaIBQwHINFOgFDv/pk/82eiIeBpNkWTKq6lv/W3/lacTyTxH//jfxzLOfdFricECNcQ9S/XFeuSsl36ahF55FiYBhYgY0JsfnVWzqKESFW+TU0iY+58qC5JhFRbziMd0ycnquH0ohzVOR5yytfQP3KS7CRQQbRiX9WcklIUTAlaLUZV9J/NagtaX//2tSJ9PZ6s7+oJuZ7As1GsocjHqsTH5j3tYDfEt15t3tfT+cea5/t4NyhHw5Ku2VOqI3hERtMs3pLFq3oZJg9oJjWh8QVd49Qb1Cdcy608kN8nnyn2DZExHKfnaNmK1tGNOAqOOKxtMp3rHZ+L+yD37PpB/cAWiHwQ9XikfdD/Q1sOjzTOa3gZPg46+riPsYGKE5GBxZObwQlnOsuUwXxECE+aWC6Hk0mli5OBmaPD+cc4x8U84hyjnrlJUaDL4PyzXHF+yiOMZczJBNGASKCS5MksThXlgeuSph4rKysxjxEV9MlADNCOHScHIUGkA6eJ5fm2AWWN1+PS1wMBwTZwvBA0iA9ECBVnguUhlaFcgOCk/a//9b/iK0l5cowAonkXTblw/Ipl0ph+Qn3JPYqyTh8mIn84+QgErgWuCUR4okyAUL65NuigjmgHyjXXGPdAyjvXBu23/8N/+A+xORZ1dRIgLIfIZ59MI2UZooFcX/k1wLFZgIwBKjcKfSgKck5PrRfljEp0IEoWLmvaBc2a1nwEB35QNcxNT4Sl+ekwMzURRQniBJKzp1ttKQeLxe1oqZZgkdjgDVd8YHBjW2JD0+LqTTm9+zshvmJ3/ZZGFTVDgEh4NLceUgGzkMwcBuebu9YZXb/zygREh+RBjIIwjaZZzKf+4Pqf1jXL/ZW6hGueaREyNlkZWv+pCe6RXO/cB+nrsa2Uaayvv1Fw0N+DyAe1AuMIDzqdM7/NXrqGozjuNvoKJ5gTSgX69KQewDxOOClWBuvhtJAW1+fE4vhwws3RIX+4oZWdXxxHbqCkZSAyMG5ipDlpffKnOM+cHJIAwbGhIyx9OHDu4Y//8T8ev7tB+cGZodkJzal49S75juV5TxnjWsYx+s53vhMjFrwli4gJT5BxsnijDx9lo/wAdQTOHc4a1zvLJQFCcxeEDNEZpuHIUfnyhh+iMjz9Tdsxpp9Qb+LIU8dRxriHca+iLNPUkAc3/+gf/aPYNDBRJkC4HngDHN+2oZkjZTy/Ztgu+2I6fTpoVsX+eNMVAoRriRc7EGXkpRA05eKYECs0BeN6SFiAjBPyeRAdUYQsa1SCo6Yn2bOKiixd1XBLhKgAaFk9RVcIY0ZChC+nz89M6um5lte8ODf+KXBQhEgoT3v7jdjcan1rL2zv7kcxEtE8qQ09ZZf4WL0hsfFIw7rfN1V3S3hgjnz0DlmC6KD/x4Lue8rJGA3hLVn0C6FjOstgwAcLudfN6dqkjwjXPPnbDeQv9QN9PLg3c01TR4ByNxodzvnKOW+5krSMgoNhxEe/cpejZV9jBU4HoWHSHE4ujgvTsTLIBJwLnB8q6iKcdIwMML2T8gArwk2MJ9g8jcaRLINCjpXlAdO5+ZGak0sSIDSFpNkUHW2p4CgzOEE8oSX/U2dXHDAEA09xiZhQIQJljW8SsA7QdwTxQPnA+aIZC9tE8BLFuHXrVrzmeXXoW2+9FcUN0ReeFLGPJED4DgjOHs7Vn/tzfy7um33+zu/8Tmz/jggxpp9QlhEL7777brx3cU1Q5ojCEY3jntVtBAQxwHQ6nHNdIfBpNpHqU+6diHoii1xf//Sf/tMo1BEfGAKEt2CxLYQMfa8Q4uwfEXJL11GCa8QCZJyQy4YImZMImZEIUVmqVOS2Ts6G6tIbEiZLcoJafo+WjH9wW1X8wtSkBLAiIogSmliVsV9vhh2JjS3Z7p4EhYqUHhnG9CkSG82d1dBY/Ug3ffos6V6vOrnV7OqRhjVujgS5otyMTbGWlLdVDWO8JeuS7nUpOpKgXtEf/dd0zZ+WIEGUIE7KwC/b0/W7I+MeHOsMWUwPoMnVhuy25tPBHG+MHOVjg6vKZ4b7hY5epWvMoILGkUBMcGJzmJasDJanAsb5odIsQgZgODH5STeHw7klbzj3WBFuqNwIERHtzi3nPlkOyzMNEUPemJNLEiC0R6csUNGRp5Qfrk3yGCHwX//rf40iAgeM6Xx/gAhH7uDwhPhv/s2/GaMYdEbnGx60bWecZliIDWA/CAcqYa594EkyHyJkvzRXSQKE9vI8/UWYcKx/+k//6XisiBKaZyFC0jEb0w+4nyEkiP5Rh1LGMcoqZZa6k1dBU/55iJNAaLAeIEBonkg5/tt/+29HR+PGjRsxAkjdSR0K1M3sh2gj20Y4IMb5nkguQBD8CJ/f/M3WSx24Ln9HIhwxz/GABcgYovos0BxLYoPoB4KjUtX9WBGQyswpTTsbKlMLcqQ0jYjIAaxGUyzqQw2WQgmiHNG/Q/+foYgHwqK5u64IxwMJDYlkIiANPRuv72qaoiB0ONcyWlhmjgp5wxfRF2R8JwTBQS4SAaGzOtPmNMwyLJuI+XpgkZQmDjKU/E2WYIivm2/KiHDQzIoICLlJsyum8d0PlYK4bL/gCPu5vb7ACaTipCLFcvJ5DJdBBU/FilNRXIaTjmNhB6N3OK+ce9Ky88qNjSdu7c4ry3Cj5NwznMN0rGyeOVnwZJbIAg5+EfKXt07RdwOxynI0P8H54bsgCIO8/OD44DTRVp51iYLQXwO4vmm6xfo4Y6lMUo5woGhSxfJs4zd/8zdj5IWnuwgfyipQT9AOnrb0rM+T4u9+97txObZjTD+gfBLt+PrXvx7LLfUo5Q0oq0T+aK7IdZCX/3fffTe+cAHoUM41w/dEmEY9iWBm3SJcg+mjnwjx76pMX7t2LYoQhDpRQMQMdXlalmNE5BOZTFEYIokcAw8IOD4iilyHZgxAXPBxwrkzga+mM863QmIHdUTI/HmNKxpSlQ+lefqj/7JuUNnSH/1XWZSoiN/02LgnofFAFawER0NlgHn726Gh6fFVu3Ed0y/IKYQGTbJSHxDlZBQkp3TdMl25HUUl81ge6wZyClMORrGp3Iwdyx+r7iECwp2PebzxiulEQli+33C8g9jusaBiruoEU0ljRRAfTGc5rAycH54uUakWl6HiThU9w+ZwOIfkCU/yGM7hHPJUjJsjN7cyWAbj5lXm2DEdc56cfCgjOP2UlyI83SVaQR5zDaflKBOUHfI/h7LG9nCkGGY5yhnrA+vy3QM+oka9AIhgHKnkRDGd/ZCyfnE/TEeIsH22S93AcebLGHNcKF+UQ5oVUt64N1EeEbuIBMpeEe5jLAdJNLMNyizlk7LMNopwXXD/S8txzbF/hATj+Xr5dcgxIIi4BoBrL83jmmA7LGPGiBj5WJYp+oEASbdnCZEwpYewREqwyTkVDM3vBgmM5t6mohqr0cKuyp6EB8T8Z36MemjewXQzGIh8EA2hSVYe9UCUIFD4gjpNs2aVtu6Ah8OVv6V6gKZWRDaIfBDpAP4iQmhuta40TR8E/JbBbf0YUFlS+VE5AuMJKkMqViyfnsO6OC1UwmkbOVS+yczhcK6TFUE44BRyg0o3riJUWpxrjBtggunANlg3jZuTC9ckVgb5iwHLYIm8XOSwDJYoLsf1TZ2QlmF+Xs6YjkHad0qBeViCeZgx/YZyRh2ayivljLKKlcEyGLAspHFgGlYkLZPStEw+jgHTsATTMWA6BkzDzJhB/hDhqOph66xEyNS8hnlQqGnJYhREpkhJZWK2NazVnoOsbSraQTRjfycOE/2IkQ5ZUxb7f9AMiyZYioowXTO0ohkUZJNyMEY+ECGIDoQI06Jlw4gVviOi3C1FuRmjGjSvUs61LBumGRaihCZYiBCmDTJ3+W2D3P6xwLFASFABYgmGqcCZzzBWhGmsS8c/niCxfA4VKZU+ji/Dpj2cS841N06Gc3DyiH7QdKWdgGAaxrlmeYYTDGOsy3xjjDHG9IruzQgNRMbkvITGjJ4cKgrCNESI7t3ynJRiWrz1J0P3Zf1HVETXU/dlhqMIUZSDDww2dzc0LHHCNC1lhge5pZyLAoNox7SGiYIgQNK8lHZCORpz7mmqfCbKoVwNm/LPkjhh3qDheIexnyOBw4vh/BYdX8YRGAgLhstgHiFsQsiEnovgDGM4vjjB5kU4t5x/ziVWhJA8IXtC+pzLMji3zENkMJzDOOcfMYgZY4wx5phIfMRX807OSIwo6iFhEsVHdPs6oXs0wkNRkBgN2ZPwQHRIhJjxYVKWIh68JYth/LUucjf6XQgN+nakiIjiWUOHY+V4xhJOJgIEocEwlsO8ZGWwPM4zIgQrWw7HGMcXI1PMMzh/nDOsTHxwzhAeGCKi3fljuWQ5LI8hTJjHsDHGGGOOi/wl/W/9kel+TtMs3poVh8vgHlyXKxqbV2k4uocy/T/4Y8aElIMpxUOjmRYdDvDdysDHop1Jal4FKVdTOkw4ylHst2twfBEgpFgOJxmBgYMMjJeR+oIQBSluA3B+McQIGTQK2h37KI+Hc8W5xYpwroh+pL4fZaRj59yWCRS2gSFASI0xxhgzIHRf1x9ZJ3SfLtyrzcmAnMU6Qc5i4wDHOi7HUgqOMA5wLjRymIbhLLNsGcyjHwgfW2I7ZcvlTjI2TDgefgMpBhwDxnGRDhOOAeNccVxFOB7OFd9NoP9HO/HAcszjN2BFmMZ2SFnWGGOMMWYgtNwrOScyM3LIjrHPCgQEzjAGOMcJhtN8hrEycKSJghANQYwUwQHGEcZhxhgfBhwvx8/xkeZwDDjoozgejGNivAiig6gH0Q/OWRkcL1Z2/GmYeRjzjTHGGGOOhVwW/X/GwUildjBwQLPe8kNyDzgOxj9mGJAjJ+J0IzBoioVDjOUwzjycZobLYDoONSIEY9kiOMY41DjEGOODhuPguDCOsQjHk2zQsH+OB2t3PJwXhAfGMbU7R0xnWZpXMZzDOMY8BIgxxhhjzFHBXUFk8NKv6oT8PZlcmTjcicY+/ohSCZL9XfktcrUQJ0wzg4WcORGnOTnFCI0yx5j5iBSWaQfr0Q+Et2JhrFMExxjHGevkYPcLjjdZGewfJx0bJJwbjoFzgjFehHPCG68w+n9wbO3g3HHMrFOE9RAfLFM23xhjjDGmE7zUq1KthIkpiQ0JjSg+JELwbPU//om+TOv/cyTvpdk4GFIi10QCRD6gREhjT76XBAnzmW76D3lyIk4thQjHGAFCyngO4zjQGMNYGcxnG3yJlpTxIjjIWHKQsUGBaMLaHS/grOPMDwrOJ8a54DiwIpwLjoOvTJMyXgbnDWM+xnAO45xPtkHKuDHGGGNMN+CiEO1AeEzOyh88ECL6rxSTHxNT+TdajmhI9HYLyAUJdUSG/BDePBzFhlwbJXEYMbK3pYfRu61xLWb6CFlyYk4pjjHOOo4yDjMwLcE0jPlMx8pgGV7Lm/qDMF4GDjJONEYBHQT8HoRQJ3DWByVAOEecL6zTeUj9PnjlLuNlcI4wzhfLYAmmA9OYz+9J04wxxhhjDgNRMTFdDVNz8vf0/BgfJqJker4abVLzpiRMECgIlY7IDakfRDu21+ph+0k97Ep0IEgAP4X5e9uNsL8jH+dgujk+5IxO/8mBwobTjjGM5TCOQ48zzXA7mI8AoSkWzbIYLwOHGRuUw8zvwNodK/tk31i/YZ/sm9+OlcFvp7kVza4QIIy3g2NlPoKJ4RzGMX4HxrAxxhhjzKHIRSKSgcCguRVCpKpIR3WyEmaXamHuTE2CQ/OiKGF5LRNT2WHIHcElIcpB86v93UbYfFgPW6t6AC3xwXSEB8M7G/IJ97WwOTZkzYk7kzytx3EmxYkuwnQsOdVlywDbIAKCAMEYLwNnmaf2ONcY4/0iHSdp8TjZT9ovab9gP+wTK9tvAqGA+MCIgDBeBscJ6TixIizDdLZBaowxxhhzGIiNielKjGogPhAeNUU3phckPE7VwhSiRJEOlktoTL6NUiYqLUWui6RF9E+wBGKD5lc76xIhjxUVWZdvI/FB5/S6xMfu5sG4ljNHh2x5dtZPCDjMOM5EOhjGijAfQZHmpbQI0xEhNMkiGoJTXgaFEwc7GePYcWH/7JPjZRgDto3hrKf9HRe2jbG/ZIyXwT6JetDkCvHRbv9pOmk7ccE8jMgI8xk2xhhjjOkE+oF+HrHJlYRHHJ+phuXLk61oiCIgEP/Kn4n/lFZrWmdyKvp3+IKaKXueer3ls9C6A/9Fnkr0T7CIEoQGTbPW7u7HZlhEQ4iSEAnZ32Fcy5kjQY7oFJ88cJ4pVDjuDBeJBVDTWYZhrB3Mo5AiQBAirNcOCibOOYUW6wfsP1kO+0rWDzhXGL+vuK8cfh/CAwHSSXwA8zAuXtZjuAjTOVdpGWOMMcaYTiA2EBkIDrxVmmDNnZ4IixcnYnOr6MZgolZVJOTAj1uYX4itWqqaFjlY5gUO3BX8FvyT1bUn8UU7+D2NpCy0DIM0y3pyey9sPdFDYUVBtEqMhOzJGDa9Q7acyFOHA40jjcDAqQam5TDOPJbDgGllMJ+ICgKEQsx22y1LYcWRLqbHpbg/tntc+F1st5iWwf64CLn4ECBELNr9LpYF5mMIjDQtkcaZx3ZZLk0zxhhjjCkD8UHUA/FBs6uaIh2L5yeiAKH5FW6M/sZIx+zMbFhcXIqiAz8OMcJ8kFSI/8pg/fQX16Sh0MburkTG9lZYW1uNzc+ZpllPRQh9Q9buyTfa1/ISIlGEEBlhIdMT8bzLTiwIBQzHGorONeOIEIxhSGkRpiM+KMQYBTlttx041zjWWHKuUzoq+B1AyvFj/P5OcPwIDi44DBHS7nek6aT8fozhnDTOdhEfmDHGGGNMJxAfebOrKD4U9Vg4K1+vJv9G//FrJmoTYWlpKSwvnwqT8gPxeRAb8Z8UQ725F01eiMa14QxtQsvLN6pMybTdgI+oB7T619DCexIiDx89CBubG6G+Lz9P29NmNdwM6/f3w/q9/dg8K/UV4S1aLGK6hzzQKT25UOAoiEksMF6EaczDCSdlvB3MYxm2xxfTESSs1wmcbQxnOxnjoyAdfzLGsU4gIBAcfN0cEXLY8TOPZViPlPEiTGNeN9szxhhjjMErnZxudTCXHojNrubPTYRTV6biOODTzM/NhzNnziqdY4pMvozExn5zJ+w1tpTyELU7RcD2JGfCZHU2TFXnJEhan0bAb1nfWAsPHjwI2zvbcRyPmc0+viWfSUIEQcI4/UR4Ta/pHnLtxJ8xCg8iIRkwLYdxHHKs3TI5LIf4IBJCiiBhWiconMnZzg1IsX7C8WNAmhvHStoJjhWBgPhIUQ+mtSMdfxIeWJqWSOMskyxNM8YYY4xpB53KZxfly0kDEO1YvDAZFs5PaLzlzxD1WF5eDqdOnY6tX/BzmqEedurrEh7binbIL5Hpj4h/ukPb4Z88RIkQPXyuzcUxOp3v7u1KhNxvRUPk07BZhAcd09fu6iGroiBEQ7ZXtXcNm+4gR1+Ks0UhRFhQIHG+gWlFWAbrtEwOwgMRwjdD2DbrHrYO4HRjyUlPBik9Kmn/pMn4PaTYYbB/LiKaRfH2B8QHQqQTrAP8HtbFiuTLsG2WSdOMMcYYY0qR60KEY0aRD165i/iYO10Ly5cmNa4Zmk/fjsXFxXDu7LkwId9MXkfYb+yEncaGIh47B/4Gdhzwo6phsjITpmsLioZMaJOV+ID2wcP7sZN6vSH/R7uh78fjm3sSHnooK0GypwgIzbGIiJjDUZZyGl8OcL4RCAiF5JCXwbzDlkkwH2O7CBHesEBEhGnd0LognsF4br3APnPLKY63g31yIfGGK4RHEglYJ5ifhAVpGfkyabvGGGOMMZ2Qzx87nPNNj5rEB31Azr01FWoHb7uS1xPm5xfChfPn5YvNyHGVLyPhsa3IR6PZ+QHqUZmo6uFzbUliZFpjFflM2+GeIiHr62vRv0Fo7G01woPreogr8YEIQYDQFEuzzSEoW5WLLxE44oiFZMC0IsxDgJBC2TJFEC2ID1IiIxjrd7NuDgUXUtotaT8p7Rb2gyAgyoEhEBAhpIfBusD6iAvSIvkyydI0Y4wxxphO8KYrvmheVcABIXLqtakwuyz/SsIEn2dqajpcuXwlTCvVqMTHZtiqrwZ5JTgh2sIA0I7oDzJbW44ihN3s7e2Gm7duSozwhqxGFCGbj/djJITvgrgpVvcoG18uAQIUVoQBQgGRAUwrwjyWI2U+1g0sjxChWRYp22DdZOMAAiAZggDBQXMrUi6abmBdjOXZBmkR5gPzEDQsl6YZY4wxxnQCkYHomF6oxqZX82cmwvIVPeCVKMGlornVhfMX4/c9WJZmV1v1J5Ieeojahb9Bk6qZ6mKYmzitsRZ0WF/bu3voNlg3iRDemEWfkM3NjXDn7h2JkT2tKh9LouPRJ7th85H8H82PHdK38Z+0AdMWZe3LJ0AAIYBQIEpByngZTE9CBesW1mN5xAciBGNfbIt5o4QLAjHAxYHgwBAGiATmdQvLY2yr3XpMZxn2Rcq4McYYY0w3IDRmFO0g5RsfZ64q+nGq1Tol9fu4dPGyHC+Egxz9+mOlezggWuJwEBBnpt8MixPnNdaCt2Td33lfQmZVm1EUpRPy6SYUAZmLImRSy4dw7/7d8PiJjkO+VdA4Hyh8eEO+1i6CpBGjIHRUN+1RdnLqXk4QAgiEZMC0IgiJZMxP1g0sx7YxxAdpbmyTdJBwAeD8k+aGcCDFuhUGLJeMbSYrwnxg28nSNGOMMcaYbuB7H3zxvFKtxDdeLV9W9OPgrVdzc/Ph0oVLgT648nIkGB6H3fqm5nTP7MSpcG7qWuAVuwm2tbZ3LzzauxHqjV1NORw6pRMJ0ePn+GasO3duh/WNdc2RL6QoyJNbe/H7IERBdjYbYXfjRd/JPIMcfum9RoQBhlhIVkYSC6RpmZR2C8uzDSIi7DMZ2wTmQ0p7JTn5KUUcIDSSpWhHmt8taXlStsk2SMtgmWTsEzPGGGOM6YWKXKOZxVpsgsXwxc/MxA7oDFf15/z5C+HUqVNxeLuxFrbrdABX1KFb5Gudn34rLCj6IQ9PE1rIg1EUZDvc3vpp2G1uaULLB+pEtVILMxIg09V5LS7BoQjInXt3JDh4UBskOOrh7i92NB7iG7JoisWwKQcv+PCzfsLB2UcAJCGAtYNlERAsgzF+FPJ1SRlP203pUUAUJHGQUi4EIGX8KKR1MbbLeDtYBkN4kHZa1hhjjDHmBeQi0exqZlH+2VQ1vgHr7Mp04DW8+E10OL908VJ8+2hDomN9/0Gr6VWXbiv9N/i44KWZzwZeq6spspxmeLD7YVjdu6Ptd/EgVcckqSQxczaKke3tnXD7zq2nHynk7Ve8EYvIx/4uAkT+FM2w9N+8CLnxSpwaCjNOP84/xjhWBtNZFkvDwPBRYV2MbaX0KCSHP6XYUUnrpm2RYgyXwXQMgYJ1WtYYY4wxph1yhcLEjITGfE0ChOZXk2Hpoh4US5QQ8eCDg+fOnpdIqcZvffQa/ahWJsLS5MVwavK12HejjB1FVe7tvB8/ZNgNFQmPmdpijII06o3w4OHD8Ojxw+gP8Rre1Tv7Yf3engRIqxnW/hZ+klY0L6DsfzUESALxgSEAsASioAjTWIblGcYgpSeVJBpIsU5iIp/GMhjLY8YYY4wxRwFXalrRj8lpRUBkp+l8viR/qyZfrVqLr92dn58PzUozbO4/DHvNHZwSrdkdE9WZcHH607Hvhrw5TZEfE/Y1pB1oChD5eLh7IzzZu6WxLratg+aVvHMTZ0KlWQ1bW5vh408+DnycEG1Es6uHH+0qGtKI3wbZ0XgPh/xKQQ68UqcmiQdSmmQVxUUZzEOIYCwPTDuJJEGBgEBMYGlaGczDWJ4mVwxDSo0xxhhjegU3ava0Hgor4kEfkPNvTysiIl9LMyYmJ8LKGyuaNyGRsBfW9u8d+B3Y4RCpmKudChdmPn0gOFizEXj1Lp3SW02yoBk2JG7u734QeDOWdqJpnWj5i7xRi6jKvnyjDz+6Ht8ESudzIh93f74d+4DQ/GqLV/MetslXFGW/zv4rCmIiiQpSClU7mIel5TCGgeFxpnXRSukfiA0sH24H81gO8ZFSY4wxxpjjUpELNX92Qr6UBMhsJVz63Kz8qaDxapibmwuvXXldy1TiRweJgPQCXzE/M/Xs1bvydsJeYyvc2/lFODX1epiv8U0Q7UwwHQHCt0WaXfYan584G6aqs/KNmuHW7ZvxbVj4SdpNuPWHEiBbPOCVuHmgB7eabF6Es6/T9eqCeCiLhKS0DOZxgSQDpiXy4VGAcEikYS6MZGlaGWkeKYboyCMfxhhjjDHHpTohR/70RKjUKmFmqRYufGpaU/VwuFoLp5ZPhXPnzkuABAmD1bBTX9Oc7lmYOBfOTl8LE5UpjckHCvsx+vFw96OwOHlR4uSqIiM6AKHHq4qCPIjfBaGzezfQrItX8iIu7j+4Hx4/eRT9Jbj3y534XZBmXQLksR7gKhLyanva5eApv/KnBcGAkMAQIqRMOwyWyY31MIZHCWIBoYExnNthsAzrcSGRYkwzxhhjjOkLcpMmJithdlk+10QlzJ2uxTdgwURtIpw5czacPq0oRYX+H48Vpej22x/yxSra1pSiH5MXGNO0EKMo93ffjx3Zp6rz4cL02zFtoYetzb1wa/unWm5DPo9UxSHwdi2+rF5pVsKjx4/DA4mQ/XrrTVqPbuyGdUU+GnvNsLWqh7i78qH03zyPioBPCyAaMAREMsaTdYL5RQNSDEixfoIwwIAUA9KidYL5yRAcyRjHjDHGGGP6Be4Qr9vlGyBVCZHFC5Ph1JVJzdH0iYlw8cKlsLiwGJqVg9fvNnY153B49S4fHDw3/VaYqS5qCjTjNh7sfhD2JTRqinwsT10Jpydf17wW8n7C471PwpO9213tq1adUpTlrARILaytr4U7d2/H1iLw5OZeWLu7Fz9OSKd0Xs9rV+pFVAR03s1zID6wsmhIPtyOtExaN7d+gjjIDdEADB9GvgzDrJtHPYwxxhhjBgHuUBIgfPUcAbJ8IEAmJyajAFlYWDgQIPclCvj+x+HQ+fzU5OWwPHkldhIHeTfh0e7HEhc3NQaVMF1dCJdnP6f4SKsZlryoGP2gGRZRksOoVfkeyLkoQNbX16MA2dtvHaMFSHeoCOismxdALGCICAwxwjjWK/k6aTilvYJYgJRCPtwtrIPlooNxzBhjjDFmUOAC9V+AVMKEhMHFmc9FgSGPTdOCoh67EiA3wk7j2bc+apWpcGbqdUVLni2HUHmwcz2s7d+VL9TQlPZYgBwfzrpPSwcQCgiQshQ7Kkdd9zgCgXWxJDaKqTHGGGPMoMEFSgKkX02w+PDg/MSZcG762tPIBtABfV/ry9vRWAt5cBIh0zJe0auDOYB9xaZajR2NtadTE6zHBwKEPiAWIO3hrPu0dAmigUgIAgRjHFIK+fAoyQVFGiZFbGBEPhg3xhhjjBkqcpX63QmdjuFnp98Mc7XT2nyr83mv7Dd3JEA+DOt79zTWnsnqXJibOCXHqhIePXoUHj588LQT+oPrO2HzUT2+/Yq3Ye1LiAT9N8+jIuDT0gtJYJBiCJFkjGPjAOICQ2wkYxyDlBpjjDHGDBW5SgiP+VO1F1/Dqwe9p5ZPh3Nnz/X0Gt5W9OOtMKHIxlGR1xQ264/Cne2fy09qvVa3jOnaYpitLZW+hvfuL3bC9qoe8vIa3kf7EiKaaF5ARUDn2xwJxEY7A9JkkNJ+kUQEaTIgbWfGGGOMMaMGcfHsQ4TVcPnzM5ooYaIZ8/Pz4crl1+K83cZW/E5HJ2h+dXrqauyAHjciEBP1Jt6/HsDqbxl6jKx1FYUJNMVqsdfcDne3fxF2Gmvym6QwSsg/RHjz1idhY2MjNFhWO/KHCLuDXNLpMv0CkZEsj4ok6ycIitzyKAdmjDHGGDOO4BLNnZYAmQhhcqYaIyC1aQRBJUxOTYY331gJE4qG8I2Otf178mvae/JEJM4r+kHn8wSdzx/ufhjo/yGPSfYivLZ3afJSmK+d0VgL+oys7t0Jj3c/ifsuwjp8YZ23bO0r6vHhR9fD3u6eBEgz1HcaMQKyty0Bst+MTbE02ZSg7G+TK+ZYFMVGGk/pcUkCI6WJ4rgxxhhjzLiBOzS9WAuT05UwIeFx5o2p2CldAYnA19Bff+31MDs7F5qVhiIgDyUodnBytGYBbejM1BthWUKietD5XI9kw1b9cbi9/TOtgnApWU+0xMSFcHZ6Retqx0KPcMOeoi63t38aoyHagKYeoH3RxIvmXpVmNWxtbYaPP/k41BsSGvUQO50//Gg37EuI7O00w47G89XNM5T9OtNmaPRbgBhjjDHGnDRwh2h6NTUv2TDZehPW4gUiIq0WJKdPnQlnz5wJ1Vo17DQ24vc5XuiXoY0gCC7N8OrdOSbIgiIXRD8+ViTjlsY6M1Nbin1H8vXlZYV7Ox+E9f27imw82yffGZlRtGW6Oh8a9UZ48PBhePT4YWyBQsRj7e6+bC9+/XxnU7GULVqmaEXzApxpnxpjjDHGGDM85IHyDRCiHhNTlTC9QBRkWtGQVpP1memZcOni5TAzMy1BUVcU5IFSmkQ9c1vpv0F/DCIgE5UpTWmxVX8S7ktA7Hbx9ixeqXtq8kpsilXVv8SL26jEZlfsj9f3bm/vhNt3boXtnW2JjKaiHk1FP3bCzrqEhyIg22uNUJcoyQ7XZCj7fWqMMcYYY8xwqdZSM6xq7JR+8TMzMSqiAIjGq+HihYtheelUFCREQLZjx/BnEQk6ny9PSqTU+KCgNnYAYoV+I43YCb0zNMOi78jpqde1De34AMQOHyXc3H+kMZZT9KO6qH0t6hia4cnq43Dn7p3QJPrRCLHj+Z2fSYwwvI0AqcdhU44FiDHGGGOMGQlEPqbmJEAkMhbOS1BcnoyREViYXwwXL14MU5NTQfGEsLX/RBGJDc3JaS37PEdxbcu2A61tTVXnw+zEsiRKLezu7YY7d+6E9Y3W64H56vmTW3th/d5+FCe7G42wIzPt4Wy3zqwxxhhjjDFDpDZVCbOKgtD3g+ZXsTP6UiuawTdBTp86Hc6fO6+x1putNuuPY3RCnr6mDAEJI5pezdVOPW3mde/+vfDo8bNvf/Ddj1bn82ZsdsU4osS0xwLEGGOMMcaMhEpV0QVFQLBqrRLmzygKckVREAkSoiKTk5Ph0qXLYXZ2VuMh7DW2Y3OsehiCCNEOa2EyNruarM7E3W1tbYXbt2+Fvb09jbcEx5Obe2Hj4X5o1JuxDwhNsNz8qjPKSgsQY4wxxhgzGoh+zPFVdIkRvgly6rWpMLvcGufDhIgPRAhiBMcVEbLVWB1sJATxocjHbHWpJT40CdGB+ECE8OFB/Q9bT+rh8Se7UXQ0FBBhnDdimc6Qjz5LxhhjjDFmJEhjhKnZaphUFKSmKAjRkLPXpkJtir4hmq8/p5ZPhTNnzsb+ILiue80dRUJWw35jR+P9Z6I6rciHxEdlWmOV2O/j4cMH4fGTx9I8TVkI9d1GePDBbtjdbIS6oh+7KfqheaYzylblojHGGGOMMaNA3mhVIoRX8tInhKZYc2dqYfnSVOwXAhO1ibCwsBjOnD4TpqYkQjSZ733s1DckRrbl9CsccWyXlmZfEkKVmTBdm1cERPvRJnd3JT4ePQzr62thv956sxb9PZ7c3g2bDxXxkPjg2x/0/YiHYQ5F2cepNcYYY4wxZnTE74EgQiYQISEsXZ4MC2dbHycEOqXPz82H8+cvhIkJTVdkpKF/uxIhfK9DcQg5tXJrew1BaDv8U/wlTFXnwpTER1X/GtrO/t5+uHf/btjY3FCUo66FQ2xitf5gP6ze2ovigw7n26vau6ab7iBHfbaMMcYYY8xokVdKU6zpeYVDNDwxXY1fR1+6MBnHgeZYiBCaY83PPft6Of1B9hpbYbe5FYe7FiHaHn09piqzYbI6G4dbNMPGxka4/+B+2Nre0uYOtqdk9e5e4KvnfHCQiMfOej3sbWuG6RpyzWfMGGOMMcaMnIq0B31AECKVmsSBoh80x1q62HozFp5rtVqNERBe0bu4sBSHpSPk0PJPMZFmPfYN4bW9iktoq0VXtxXt4LW69PXgi+pMIQqCztjf34t9PVZXVzW8r+1JZWg6EY7VO3ux2RXDRD/45kfs96FFTPcouzilxhhjjDHGjBh5pogJoiBEQOgPQnOsRUVBeEUvfUQQKURCapoxpygIfUNmZ2ZaQkTiRKvLuW39Y6gcbefgH6IDkUFzq21FO9bW18LW1mao1yUs+CdxUd9VROThviIfNLvS8hIffP18V8Z80xutPDLGGGOMMWZMUFAiTCsSwmt58VaJfvBq3qVLk1GYSH/E6UAH9RkJkIX5hTA3P98SIvyL8+OfEiQs5AHTtGpPEY+NjfWwvrERdra3Qx2FAXG+IiI7jbB6ey++YpfIB9Oi+Ni0+Dgq5IpOozHGGGOMMeNDS4TUJEIkJqpY6zshy5cnY4SkOokbq+X0L/6X4sB4Ve/MzGyYmZ6OHdc1R/YMSQhFN/bDzs6OIh7b8RW7CBFMfzS3RWOvGXY2GuHJrb2nzayaDU2T8ECAMG6OBjmSzrMxxhhjjDHjgbzUKDoU8ZicleCQlqhKiNAMi1f2zp6qSaAoGqLoiHTHUxAhfMAwihb9KxIlBv8lNmh6RZpgsKkoByJj63E9bK8p6rGr5SQ8GvshNrkiIqLVzDEgV3SqjTHGGGOMGUPkrfKKXjqn80pe6QuJEQkRRUD4gvocfUOYLrESRYfms05XyAuOokMCA1FBE6vNh/thU+KD1+vS14P5KRrCfNYxx4Ps8Wk0xhhjjDFjDaKD5lhEQ6LYiEojSIiEMDWvaMh8NUwv1DRfERAt2w0IjL0tiYv1ehQYuxsID80QREYQJTHqsd3Qsppo+gK5YwFijDHGGGPGG3mtaA7EBSJjYuqZEImpjCZa9B0hYhI7q2tZrfIcOL5NCQ+aUvEF86aEBU2sEBvREB6atrdLXw8NMy+uJDN9gTzx6TTGGGOMMSeGKDYmJDIkNGh+hShhGp4tgiSmGldSCs4vYoMBBEdMNU5EhGZWCBO+eM4003/IF51yY4wxxhhjTh6xc7pECEKEfiEMo0G6Ae2B0KC/B8KDYTe1Gjxkj069McYYY4wxJxR5tPrfQgMpItJOiCA8iG4Q8UiecEziHzNoyBafamOMMcYY8/IgD1f/OxId4PjHDBvyxqfeGGOMMcYYMxQsQIwxxhhjjDFDwwLEGGOMMcYYMzQsQIw5gcRXDGYUxxPtprcjvoqwQJqWUmOM6ZZ2dVC76d3Srj5qN90YM15QA/hqNeYEwY27Wq1GYxhLwzll0w6j0Wg8dwNnvF6vx5TpyYwxphOp7snrIdKiHQXqoKIBKXUVMGyMGV+4+n2VGjNmcGPG0s27nQFpspw0ntLD4IaN5XAzZ1rRECUYw8aYVxvqmDIDUiyRhkmxo0C9g0FKgWEMSMvMGDMecPX7ijRmxKQbMWkyxEetVospxrRko4IbOLa/vx/29vZeECjGmFeDVA+RYtRRWBomHSXUR6l+IsUYxiClxpjRQA3hq9CYEcKNmhs2YiMZ0zBIKeTDo4IbdzJu6kRCkjENM8a8nFAHYameou4ihZRCPjwK8nooDZNSZ5G6vjJmtFBD+OozZshwc+bG3c6AZcYZbtzJuKmXGfOMMScb6iKMuilPk0FKx5VUF5EmS3VUSjFjzHCgxvAVZ8wQSDdoUp4e5sYNvVfYTpkdh3QDJi1aN/BUMTff2P9/e3e23cpxZWvYF9WXrda2JPv9H82WZUvakuxqr44/7DNLS6EECIJgkgTmP8Yc0WZEZAJrrQwkQJbyduFPIj7qH/7hHw55upSnHLvFU3yLY8lXSqevolLK88IT1NJK2QEbDQGcBHOBmJD0XPT/x3/8x4OM90//9E//p0sQcG0YBGJ5kv/f//3fg7SR+lOkXSqgk3FIvpTyNuCjiN/ib+SD8rnouwpSugT+hSBddS6zL/+kzM/JUynl+WD9P1pgKeWqCLBkkyCQk0Cujs7FRuOf//mfD+M4now1pU16KQIuCcIQiG0cpOr/4z/+46BzMQ45fkodlVJeF3wS8S+RcvQQ+kxhphTk6RL4DwryhJlOPYQ+EX8XKVMp5bqw/lpWKc+A4E02BTYQ0ksD7i9/+ctffPDBBz/ZhOzNN998c9AlwVggpzxNMUZUSnl5+CZ+hfgqqbqHSB9pjiF5yO9JfAp/I0/JI+kp9HEMXyUldaWU68Ez1KpKuTKCr69DZbOQIJz0sXzyySe/+PTTTw/H00vw7t27X3z77beHoPzYYJz+UsfT/DO+pZSXg0/hq2w85AlJt9BG/BvJ02Qt78XqU5SJvyF5OkbapMRfeRosX0q5DrxDLaqUKyEQC+KCOSk/FIS164cEx4k2mw+bkGMYI7oEc0bH+OGHH37x3Xff/eK///u/f9bPvNa5tf4VfUhAF9hJuZSyL7Fb4rek6o6hbSr9CUlfG/FJUuJvpFPH0KZ//BSpK6U8Dd6illTKExF4yabD162kUHcMbZTAL6gJchS0G+/jjz/+xUcfffT3mp+inTIGXYK5BVZzS5VX/va3vx02IX4Hok8wv3mtwXHGkNIxtJFNiCch5xxTSrkObDbiq9ivPB1Dm36RMr1F+BnixyLlY2gj/fgs+aiUchm8Ry2olCciiNsoSAVnnArO+qRv+rkJF9wEuaDtX/7lXw6bD78BWXHT76te+hhP/0sx7//8z/8c5LcaK5582IR4CmKtwZzOw/nLC8rGWs9lRT/SxyZE/zluKeV54DciNhtmPqhj35Eykr5V+B5I+aBIeWXWyfNTUSnlMniQHy2rlPIoBGQ3/gK5VPlYYFafdv2TJ4EvN+DyQZ9///d/P2w+/BB9xcbjX//1Xw+bEH2fQgLrf/7nf/7iv/7rvw5lCjYJnn74Ibq1TsztB/JSx5DzmFK3hXrzknFJXSnluvA1fA+xVWXaQn36SAnK18A4GfOxnPInjyXjGJOUk26hnvThs0i5lPI4eJJaTikXIHgK5G7+pcrHEGz1If2UKQhmnjpIZzDT3+bjV7/61WGjMXG8zYmNify1sPmw0Vg3AgKttj//+c+HzcjE/NmAyAfHOy5SPoZz18cTGOmpvqWUx8Eu2acnlVLlY2jTh/+RKl9CjpNGwdh0CfwDBb4iQtLH4rj4IanyMbTpwxdKlUsp58Mb1GpKeSQCqUBOgqgybSGAezqSfkgaBDA33tKJ4/wA/d/+7d8OG53geOPZgGi7JtZhoyFd16Puj3/842GzNLEe63OuFBKUpcZKsN5CHxL89SPlUsrTYJ/8BX8S+1S3oo701U8eSR+DY4xjzkiZtEWXwC9E/AX5wCRS1vZYcoyUn8o4tJI6/Z4yZyn3CuuvxZRyJgIm2XgkoCrTigBO+kj1mRKsIkHMzb38xDy//e1vD08/jBOMp83mw9ewVtZxjmEdK278/d7DJkRQndh4fPXVV4d2aw7GcT3I2qAO1hI5xphSWtGH9LEOgX2rXynlPNgh3xFB3Qq7jbRH5+I4469ST8kbk64BX0F8BJ8hJflV6s/FmJHjohXtMH6UulLKaXiBWkspZyKAusne+rrRRJuAG4XUC1ICGskLXG7u5SeeKnzxxReH+eZcxrHxIG0TY2TcUxiPjDWxFpshPziXn9gU+A2I34nIB+M4L9dGqkzGNsZci3JknVvor906pMf6lVKOwwbZI7tki8pbaNNPSudiPP2lPhAhc/Fb0pfEhxd8qpSvIn6FL5Gei/50yg8ZT5u59FMupZyGN6qllHIGgqzASoIu1K0I5JH2SDkSpAREQYtSnoHLMTYYn3/++WHOiTE8FdEu6E8SBOkUxjeO4+WD9ViLP7lrrImyv4Jlc2JzMDGWmw6CceWN57isxzmScrSiHY41jxuJUsrjYH90jr861WcL/fmlKGM4PnpJ+JCIH+Fn+JFI3Tk4Hvobg1ZmH76OSimn4SHeW04p5SiCqRtqEtChbqIsAAvElHKkTqreDT4JXAIaCVrKwTw2Gb/5zW8O806M5cfnnn7IB8cbh4x5CutwrDHkQ8b4/vvvD6lyMKbNh82JpyAT52ad1g15guNIgCZjkjpK3SRla3DDIE1dKeU47JltR1A3UWazdKzPFuybXVPyjjfOJTzWps9Z4xZ8DF/D7/IlUpJ/iKzR8cah1IWU9YlSV0r5OSy5FlLKCQQ8AdaNunQr0OqjXkDWR5nUKatXJkHJDbXgB4FKEKSJTxX9yNx/QHf8RNlfxxL8zRGMbVxjCZKnsBbHOi/pxJpsQKzTmMGYfhuSpyAT41kPwRrlM7Zjsy7jw9jyqVdeUa+PJyHSrT6llPewQzYX21NeUaeNb5Iqn0I76c9f5MnrOceGLbtVR4/BfLSyVbeF+fgUftJv2aZfoVNod6z+UuUVddqML1UupfwcFlvrKOUEAq3NgOAryNFEWZsbbgEZUmX1BP0EIxKcCG6+5QWriacfnnJ8+OGH/zcGjGNs/5xQOjH2DKgPYZ1uJqQTx9tgZKxgTJuSd+/eHTYoK7lWsGbro+B445HzVoZzV1afuqBM2sztWpVStmFvFJvmLybKbJPkkfQY7JqfsPkw9jz2IdjuMSHpuWRe6TGdg3n5FH6Hn7MZeci3OAZSx5L8JOX4NCql/ByW+t5aSik/QSATbAVfqTJNlLUJyAK+slRZvby6IDgJWoISQdAjbZNsPvylK+MEeTf5noCYZyLoCabSdbwtMpZx5jod7ytWW0HZ+v0Q3SZkxTm7XsYy5iwHY5Pzl5K1So2tXnmiTNqsR6pcSnkPG2NzEdRNlLWxe4K6Y+jDP9h4EHtWdwp2uSVICUkvJeuWEqRbOgW/w5/wm+RDDnXHyLr1IT4rdSFlbVHqSinvYZm1ilIWBC2BWtCVbgVdfdS7wZYqk7JALU8TQUiwowQlN9S0YvPx8ccfH24A5jjGVmeDYm0TYwqiAuM5WLf1Gkc+ON44vm4lXbEBIeufGMd4xpKnlCeOM4frQMqkzrWQKq+ozzlKt/qUcm/wD8QvsDX5FXXa+A95OoY2fdmur4Ealy2fIrbIRiN1tCfWTtYfQd0p+BObD/+E9ZQPCtqI/zrWV50248pTKeU9LLIWUcqCIC34ksBFKwKyflLtAl3K8upWBCMBiwQ8CHa04itW+f3HHMvNgK9D+IqWeYLgZkzBzjznYFznaM0UjGVNnoLYhKz4DYgnIProG4xB1mxt8tYrv+I467TmjEPK8/pMtJP+pF8p9w47i9g0rWij2OJWH6hns/wLP6M/nYIdR+yTkHRvnAOkZP3RKayfPPnl9/jSY+eQev35KlrRh7RFpZT3sNL3VlRK+b9g5aac5NVNlNW7yRbQ17K8ui0EK0FNIJIXnI7dSPsP6DYgxpu4KXBz4OnMnMd4xjW+cc/B8dbsXKUTY/k0kFb8PsRvQGxQzBus1TiuhTxZp9RcK9bpeHO5BvLq1vJEWb3rRvLqSrlH2FZsjo3Rivb0w1YfaLf54GPYrTGPweaI/ZF89JpwrpFrQPJ0DL7HU1YbEf6UP9oi56rdNZCu6EPG1K5fKeXvtvl3vbegUsohOLkZp2PBV5DWJhXEKP3l6RiCj8AmEAlKym6ilSfWkQ3Iis2H34WYc85lDEGOjH0Ojic3HdY/MYaNhg2I/MSng3/9618Pf47XvMFYrou1OQdlNzLq5LcwNlm3ayFPxlXnGimvaCM3CPqUcm+wKXbLvmgLdqiPVP9jaGer/IsNiPIx2CObY6NS5aeStSUNGTvpUzC283KtpMrHcF42IHwdn618DGvTzh9Jt3CtSB/9S7l3WF8toZS/IxgJTIKvVHlFvWAu1U5utpUfCmgQnAQ1qSAkGAlKFIxhTJsPvwNZ8Z1sMufEWGQsY5+L+WxAzLli82ETYjwKArI2X8My58S6jJfrIa9O+RjGdk2sfWsTIl1Ju+spVS7lnmBT7EvK1lbYHWnHVh9o96EG35fxtmBjsVP56KlYF2Wt8jD2Ot9TMXa0zrdibh9w8DHr095J1qXdWmlFH+3Gk5Zy77C695ZTyp1jYyH4SgWlFXXaCIIXKWs7FsSCACQwuXmXF4Rycy0fjOVmwObDD80n5rD5UC8/MZbgZmx6DM6bVgRdMvYcU1n9119/fdgwTKzfWFKysXGd6BTGdx2M7ZoQlEnbijpt1kCl3Avsifif1ReA7WknbPWBdvbKr8RWt2BrU+z1Wsy1rus0D19A5r0W5jHv1Bbm5Vt84MK/Km9hndBOW2vVh7/STqXcMyz9vdWUcscIPoIwCUw0UU5w1ldZ4FcnTw8hIAk6gphApCywqVMO5vAndn/1q18dvg4RzEE2H24WVoyVsR+L88i5T/LJn7GtN8hr++qrrw5zTozhqxyuEzkf14oewtqNbT6BGsqukbL8RH9Yg43d2l7KLcLG2BPJ00RZG/ujY+jnqQc/Iz3Wl10RG4zNXRNr5SdOzR8fcG1cA/Obm7YwP3/n61jSU9dAX7LWtZ8yaSP5Uu4VXqsWUO4aAcgNOAlEyhNlwVG7vCClnzpSdw4JoCTwCFJunNVPjO3P79pkuJEP5tHm6QitGIsuwbjOz/lMjJega70TN/xffvnlIZ1Yp82M60TGNLY5zsG1cU1cJ1ImefXrOrSps2mxXvlSbhX2xZbYFfuCuiCvXh952kI9O+VLbEAcswV7YnfE1p4Da+UjTsG++YDnwLVwPenUdeALfSDDzxy7FurJWh0jH5JX73rqk7pS7g2eqe/+crcIPAKOG31BUH5FPWmLBEvByvHnIthEgo4gJJBJJ8b+9a9/fbgxMG8wrxsGNws+rZwYz1iC9CWYh9ZzslabD0FXwJyYyxMQQXmeg+MzFilbt/M6F+OZz/xS56dOmVa062czpF25lFuEH2BLsa0V9aTfVju0sdF8yCG/wobYHLtK/rlwPltrmLBrPue5cE1cr1PXzhr4GF/Hkj92TXK9XDta0a7e+ehXyj3Cwhqpy90i0Ah+grD8ijrtCY6CkzxtBahTCDYk4AhAUsFMfuJm/bPPPjtsMswf5LP50GcimAmIxr+EY+dlXBsbf/FKfmKub7/99hCM5SfGIePCel3HOfZDuD7OieQhb66UJ+qsVR8q5dZgP2yKLfEHK+q0s71TsEd+xAZE/y3YOzvin+g5sV7ndAp2bz3PietL1nPquvB5Ppjhb05hvfrzTSvqnJP2576+pbxG3A30nV/uFoGYBBuBZ6IsKGoT2JUFJnXy9BgEGwFLsBF8KOWJzdAXX3xxSCfW4YZBvXUExwtixpdegvMzvmsxz8vYxvU/PwTTibnU25wIxhPjuU5Zp7yxMcc/hbldI/NnbmXzqtM+UdbumtrYlXJrsCdiX6sdKaeNjsHOPV3lS+Qdt8LGiD2xq+fGOrL2LayDD7Cm58b1sA5rohXXwzpsQraeDE+sm6zdcRPltFEp9wbP81OrKOVOEGTczG/dGMsLPgmKyvKkXvkYAgtBGglUCTQz8GgL5vKUwxMQN+0Tc/thuvXqFxzvhtz4dAnOx3m5HvITa7TRMIe5grkEYG2C8cQY1k8wNmXd2qeOYT7zk/mUc+1SDsnbgJB+qSvlrcNO2BM/AOUgz7a0ydMWbJB/IX5k7cdeiH3taT/WTtZnTQTzE1u3HtoD81vPsetpTXyMr5+S9W2hH21dz+S1rb61lHuAVfVdX+4OAUUwj1YEQsFHqq9gJGBLlSdr4EigidYyBCyBR5o6WItPJ/0TQvmJsj/Na11zDY4XDI1lrktxrjYgznFiXE85MkcwlycN33333eEfEq5YL2WtxpWPUpZO1E3MY94EaVLO9VtRr6/16lvKW4dNsE9i/ytsSBvpu4U+fFg+xNjqF1ujvW3HeqzfOgnWQy+5Hsp6JtbDx8Q3WucW+lk/bfXhr7SRvqXcCzxQ3/Hl7hBQfAdaMJdfceNM0C4IzaAtkAgW0VqerGUIOiToTGwA/Jndjz766LC2YF7ryQZkYm4bAenWXOfiPM0vNV+wRk84zGHNE23ffPPN4R8Srlina4Y53sxDeVXWIIVzs6kwnzysRd16ztr187UwaSlvHbbAltgDrbA1gr5b8Hc+3JBujRG7odWm9iJrT5p1JN0b6+D76dg142c8CZZukbXzV7RiDLKJSd9S7gFW3nd8uSsEFcE6gVh5IthoJ2jXTz0EiQjSaEUdYaaCPMlP3CD4HyA2IZkP8m5AfHopPxG8BD/pU3CONjnO2zkH4/qagTkEyYn1+yG6TYj8xHgZiyCNVtQRpFNwvawl8ygL6DTRrl82TPKlvFW8/9kS25QqT9Sxs9UvTLT5zQf/Ir+OwUbYk5TKj7i+5LpJJ3yN62YD4kMa+WNo2/JHxlDnwxSpcin3AC/Ud3u5KwQSwdwN/RpQBGZt+sw29dgKDmvdLMuvSpChFRsPTz98R3vO7wbD0wk3EdYWjGE8N9vSp+Acnbu55tzmMH42ISueftiECLD6Toxj3FXqJ+omx8pzfOdLNkWzHuoFe23SUt4qbIXNs83YQVCOvdIW6vkOmw9+ZYXtsF12Il9+Tq6z10F+hW+0CeEn+Z4t1NPWdVa2AfE66FPKPcCSfmoJpdw4Nh60FUwEa23StW0LgWNK8JBOTdbyiq9Y+SeE1jDnV/bExg2EtQXjCWiCl7mfgvkEWXJtgjmML8AKtCt+/+F3IDYn+h7D+CF5KTkn6apTmItsMpy7fJAnNwRUyluFPVJsZKIuGxPawrGeqtqETLsObnr5EPZC5ee4tuRaHruG/Axf6Fpu4doSX8pfTdSrcyyVcg/wWPU45W4QRARiN/TyFOQFGBLYg+AQQUqQRpASkp6LOW0+aA1y2XxYu3WGBC1B7bHzrRjXvM6fJub529/+dviawYqNicCrXSB+DOaENIKUIJ1CUufs/M1LQT1sTtwYWH8pbw3vc7ZokwHlwF+wV5r1E218hyerxln7sQt2Q7GZso1r53qSaz9x7fghPtAHMa7nFvppI9c+qAc/bpyUS7lleKO+08tdIIAIHDYfbuRXBBZBWp+JQCEgHNM1MLc1eQLi08oVX58g63MeQSATsOipazEuuT7mWRFcaZ3HTb5NiKcg8mv7pVjLlNdFGk0SuFfUR9daVyl74T1v87Flj3yGerZAW9h88BtSY03YA5vh36g8jGtIue4T19Dmgy+UbuGak+vOd6+o56uMVcqtw4IalctdIGAI5tGKgE4CxKow89dCQHOD4MmHVHBb8dsPn2LqOxGwctNPT8U1sgHZuj4Cqw2I4Djnkhc0PQXxhORY8H0K1jVRnrKmrYCuzjXqU5Dy1vC+5gv4JFrRRvptoZ7f8Icr+A3lwGbZA9uQlvNxLV136dY19Wd5+UHlLdS77rTCX5E2/Uq5ZVhP3+XlLhAwPGUQPLYCumBC4PzpWpg7MnekbD3kk0rpxHr000bKEzf+2YBci2xA1rncxPsNiFSgnZhfPVmTIKrPmgqs18Qayfy0os7c1i0t5a3gfc0O2T8/MVHmK7RtkWNtQLb8BltkD8RGyvm4lq47eR0mrqUPamxA+EHlLVx3vtDrMFHWdurYUm4FXqnv8nIXCBh+RyEVRK6NMSNISZDKzQLJ5yZfXrt+W+hv0+TJiHQiQNl8CFbXxJqszdwTAdN8gqsgaf4t1OsbWZ+U5AVZfSKoQ8rXxFo9lTH/c4xfynPAL/AT0ukf5NkmadtCvc0Hf2eMFbbALmJ35XG4vq4/X7nCR/rAg588dn3Vu/40fZK8NmNIS7lleLUf3/2l3CiCtmDhRl7wUL4mxjS+G3dppEyZT7rqGNoc66tXUnNMBC839G4mrkkCK1nDxFy+YmBe8x9DII0gjRxHxiJjRer1uSYCuScz5jJ+Ka8ddsfebR7kKcjHH8hvod3vyRyv34Q9sAP2UC6Hf+Qrt66vDcT3339/8Glb8HH6aZcP8uR47fKl3Cq8V9/h5eYRKATlrYB8LgKOY40ljdb6mZL8Y3FjYa2eetg0GWciMLmBIDcT18R6zWd+65iY1828JwqXBkn9HUfWPpW6NY0c+1iM4TpZr7SU1w4b5FdotUFtfJl6Wont2oA4fsJ+2BGxi72wZk9jrO0SrJtg3VHOI2174pycD62vAz9jA8LnWOOK9ZINiPVP1Due1rZSbglWs7/llrIzAjJtBYuQeukqwUbQF9BJ3lhkXH2ugXHIHDYeZI4VgSnBTcC6JuZ3vjY/0hXz2YT4mkECqLpr4ZwE38h5mkfeXARzrtpCvTGNQ6W8dtg8H8P+2GOQ18Y/yG/BH/EbvoKl74QtsCU2JL8XzuWTTz45pJdgrWTdxJ75A+ciVVavz164/l4f5yQ/sR5fwcoHNVtYa9YuH+Sdi3PTVsqtwmp+fOeXcqO4mSaBglbUCdaCieC+JX0iSKNrkTX4tFCqvCJACUwCm0D1HAiszpnkV6xB8LQJsQ7B8poYf0vO17mTOck6pOpoxXFk00SlvHbYHfvnWyiwRW3SWT/hO/zwnL/TL7AB9sNepHviXGxAbI7mms7F2kPyUuJ/3OgT+9/z3JzL1uthDXyNH6TzkVtYu37r66Ge+DRtpdwqLOa9NZdyowgMgjFBOfikUMB2oy+IHEvpmliDMZNG5hPQTgVqQYkEW4HqOci6rIWUV8ydIEmCqDpppEzXwlgZ1/lH6pKuQV9fuCGglEt5rbhhJ0zbi39QR1v4zRjpO/uwDTZCe9uAc3nKBuQUzocfYttkQ+Jc9zhH19d1pnle5rYuf7acttCH+E59gzo4JyrlVuGd3r/bS7lRBAabD5oIHv73hsAogFwb4xPW1JrMmZTcWEjTZwuBVVAStBKonhNrcvNgncfWZR1kTdYnmM68NkgJa3otzPntt98etI7t5oT0KeW1ws7YHK2wR4J+K+zU//2gFbbILtkF7Ylz4WefYwMC5+P8fPDgq0985B527jUgrwnfveIPdtDWWqwZXhNacQ6UfqXcGjxY393lZklwEPgEwaBewBAUbUKuTcaPBF0pyWsnSKNjCEKCmEAl0MrvgTVZr2tn7crHsEZICVJrjaxf6hxIXp9r8u7du8MGxPhzbMHcp6PWMOtLeS2wL/bGZ9FEm7pjdqiOnXr64StYK9739BLvfevia/lh5/ccOC82bhPipp/974Hr7nWhFU9jPQGxLutbUWedW6+LOnoOH1nKa4AX6zu73CyCg+An8M0Aod7Xrz766KNffPDBB3+veRyOJ8E0Uo6Uo1lO/jEIPoJUpEx7Yc1ueiJlOhdrjQTTaJZnnlKWPhb/kf277747fCd8Hi+Y24Acuxko5aVhV2yMr5JO+A112rbQzqfZfEgn3u/e//QS8MGnNiD8Gm3hmsBxzv8UfAYb5wOkx8a8Nl4TyloDH2QTIrW2Lbwm1rm2q0ub16+UW4O19J1dbhZBS9ATAGfwUi9Q+1OVPjHcIsFkpgSp8Ywj8CQ/9VQEHRKYBCHBSPmlcI6R83MNnorzIec35Zwj7YRj6cQnjv4EpsDv+GBcmw83JrO+lNcCm4o/oYlytAWb5MtsPvi8ifd+9BLwv6c2IL4aSVv27JqQ60KOJ3VbOEdPQDwJYet74DWJJua3+eCTjvkc640myvTSfr+U54IF951dbhaBSkBO4AoChWDt6YeNyIrgpr9+JJ8xIn0gpTDzlyLgCD6RMr0kzityTWheh6eQc5NSkHf+kSC+pis2Hj4BFfT1CfoK5m4I5Et5bbAlN+uxrQn/s1UftPlAxW/d5MO0oZd63zunUxsQmwV2axOytUbXhVwDfzSETzfmFo43nt+CSPfAObnmZJ3BNXdOPhCR38J6tfFNk9T70MRrWMqtwVL6zi43i8Bgg7EGBoHM169sQgTsoI8gqZ2UjREpR9dAYJmCVPCZKb0WnDu5HiS/pWvh3F0HmnmB2SeMgrT6IODbfPga1gzq+ujrRsfxpbw22A3/w64oqOeP1NEW2v2ezfH6B+97duC9L/8S2Cw8tAFhs6c+HHBOZAz/44Rf3xrLOcYH2ITsgXWJMV4D+WAtfJTfpXkNtnC+pF3/oI4cP+tLuRVYSt/Z5WYRFAQq6URA/PWvf31oEzQgcOgnuAlyqb8GM4AkL40EGumq145rRm4EZjo1WctPQWB24+Jmw81VEMhtMr7++uvDJmWinzZpKa8N9sP3SKetyPNH/JP8Fnyam3zphB9hB/ExL4E1WVvObYUd2zCc2oBMfHDk6bVrsl4P5+h8fQ3LmHtgDc7LecpPrMUfxZBuYb38Eb8lH+RdC35OWsqtwVJ+fMeXckMIBAK2R/bSiUDx2WefHR7lpy0BxJ+wlD4VAWRKECF5CjMftupeK67zJGXplOsrnXoKrpGg7kZDqgzB3I3MV199daifaHOzI03/Ul4LbMQTWbZBQd7Nu5RW1Gn3BMRN+cT7/KVvYvnTa25AfEhkE5JrNXG+bub5BdoL5+X81vVYiycgXgNrW1FHa7s8+YDlnGtSyluDpfz4ji/lhhAIbC62NiACxeeff37YgOgHgVu9wLb2P4YAEUEaQToFKd06ua4znYJ0FZI+hI2EmwzBWx6urRuZP/3pT4f6iT5udqT6lfKacBPrplo6YQ9801of1DvOb0D4sYmbV3bwku/359iA+KDIeK7NxHn64IFfMOZeWIf1rOdnA+I3IKc2Euq3XiP1p44r5S3Dcn/6ji/lRhAIbCRsMqQTgeL3v//9IQ2CpCAuuDl2ZQYH+SkBQrqqHEfAjlxvKSWPpJj54Lr7nrcg7aYjCOZ/+MMfDunExsNNjtSxpbwmvPf5IOnEe5+vWuuDTYfjfC1p+jo+yPucbci/FHzrNTYgrgP5kIict/LEefIHxuMb9sI6nKfzkw98jT+KYU02I1s4Z77K2ifqHSct5dZgJT99x5dyIwgEApQNiPxE3RdffHEIiEFevScms7+gIABEylGYeazlss0M1JhlefJaJCX54PVw8+LGRQAP8l9++eWhfqK/OjcC8qW8Fryvvb/5IelEOTe3W2jjt3x4cssbEMfmPPlq12zF8cYxnnH3wlqcpzXKBxsQGyFr8TpsYc3apBNlvkz6kq9fKc8BK+m7utwkArENiE8GBYUgL4j5DYiAEQRH9QKbPoHzF0TctAoCUXl+BHLyeng9ST54bdxsCO4CdRDM/QZEvT5B3ieKXkuvaSmvhbzP+SFpSD1fJt3CMXyXG/PZh5/yPvd+l18xdrSiP3u5BvzsqQ1IbPjUOh3H/vlz47keWzhfN/z+2ARbvwTzRRNri1b0tSZrlA+uofU4v+mjJvo4d+kcW9kx0llfyi3ASvquLjeJYEBr0FPnr1/5K1gCWdBPEF83IAKa4EANAi+DgO51IwE+CMy5eRGogw2Iv4LlJsTrFvTXTx2V8lrwHud3+CFpSL33vnQLN+V8F782+3i/81+05bv0ZU/SFcfQ1nGPhZ89tQFhk2x2C+dP1hmdwji+8sQvXGLj5iLrJPngekbrddHP2shxQV9+iI86tiHSx1qlc1xl10Y660u5BVhW39XlJhGwaQ166gTqbkDeDoK7140E+CAwu9EQ3AXq4CakG5DylvAe53f4IWlIvfe+dItLNiDGzZi04pgcvx77WPjZUxsQ49MprJdOYa1u8v3omw94aMwV4/Mv1kjKE+O5Jltj6+tYcmzQnx/io6xtC334I+kcV5m/ks76Um4B1tV3dblJBFdag546gXrdgNh4COKCuWASBDXBgRoEXgavh9eNBPjg9RDUBXcbkeAGoRuQ8pbwHuenVn+Veu996RZ8Ft/Fr80+3u/8F7GVYEzi/2b/if6OZ0vyT8E8pzYg18Aa+QA2zx8458cyr4n8FvOaUNCfbyLHB/2zJr5qC334I+kcU5m/ks76Um4BFtZ3dblJBGxag546gXrdgCSAqxNMgsBAAlqDwMvg9RDYvXYUvB5uBhLgg7puQMpbwnucn1r9Veq976VbXLIB0W/1dSuOYS/GeQrmea4NiDUSe2bvJK/usVibNT50TfgX10Q+OIaPIuME/ayJf+oGpJQfYWV9V5ebRMAmAWUGBHUC9dYGxI84tQsmQWDYCjhlP7weXkOvl9cneD28PvmRZ/B6dQNS3hJ5j6/+KvXe99It7nkDwo7d2Hv6IVW27kuwNmt86JrwL66JfHCMzQcZJ+jHD/FP1reFPtYtnWMq5/rP+lJuAVbWd3W5SQRsElBmQFAnUK8bEF/BUq+/YBIEbwFH2iDwMng9BHavlzR4PQRoAd4NSPB6dQNS3hLe4/wU/yMNqee3pFtcsgEh9jT7T/R3PFuSfwrmeWgDss5hfcdgu5H1RdZLl2JOa7VG+S2Mby7rpaA/30SOD/rzQ92AlPJTWFjf1eUmEbBpDXrqBOp1A5IgLp39BW/BgRoEXgbB3etGAnwQmAX1Nbi7QegGpLwlvMf5ndVfpd57X7oFn8V38Wuzj/c7/0Wr7zIu/6e//MqpYx+LeU5tQDKXFNbDzvWVX2HDbJ7Yeo57KuYyL5l7xXUwlznlJ8eO1Z8fstbpoyb68EfSOa6yc5XO+lJuAZbdd3W5SQRsWoOeOoF6awPiKQjN/gKj4EANAi+D4O51IwE+CMyefNAM7m4QugEpbwnvcX5n9Vep996XbsF3HduAkPf66ruMS+yJ5INj+D1aj7sEfvbUBoT9slW2aW59nA85ZsWa9PXXrqTWeS1cB9fDGqTBnNZmLqnyxHF5jSjo69y6ASnlp/A4fVeXm0QwIAFsBgR1AttvfvObQ2AM+qlfNyCcv+BAggCV/RDYyetG62vj5kVwF6iDDchf/vKXQ73XLeivnzoq5bXgPe69zQ9JJ8p8lXQLbXyX37CtN81umL3X5VfMSRlXXr+IvVwD6zu1AWGn/nM5WzanPvr+8pe/PGyqrGvFeTnGscdu7C/F/OaMXAtIrU+6oh//5PrLB+vMb9T4pS2MqU06UeavpFtzlvKWYSV9V5ebRCAQ+AQyASXIC9aP+U/oJJBIEwiShrVczmcGbMyyvNfD6yml4PVw0yK4C9RBMD/2n9D10+71LOU14b3taYZ0osxXSbdw4+u4Dz744GAngU/ynvd+l38prP0xGxA2TzYgv/rVrw7npDxxPmzZcZ4wOO4lsT7n6fzkAz/jHyPaJNkIbmHtXiPpRNlx0lJuDVbycl6plGdEIBCY1w0FBOvf/e53h4AY5NX7xG3tL9ghqYAgv6ZUHodgTa65dEod5JE0uO5uPgRpNyNB/o9//OOhfqK/mxw3AvKlvCa83/kg6cT7nn9a64MbdMd9+OGHh3zgj7zP3dzKvxRuzB+zAYFz5rs91fHB0NZxzsnTBcc6xxz7Eliv87RO+WAD4qtifJH8FtbNZzmfiXrHSUu5NVjJT9/xpdwIAoFgLIhJJwLh73//+0MabFYEcQFv7b8iUExBGiFBQ5mQ9N4QkCNIV0FKkNIpBHQ3IIK0TUUQzP/whz8c0on+bnKkeX1KeS3wWXyQdMIO+CoprejvOBsQfmziff7SN+duzB+7AYFz4b892ZHfOnc27kMIx7Prl8J5OU/phF/KBmSeWxATyHlIJ/ofO66Utw5r/uk7vpQbQbAStASwdUMhEH7xxReHoK0fBA4BJMHuUgQRAWOmU0ga1vJbJNcRMw/XVl20li/FjdVf//rXQ+paw7UUtL/88stDUJ+4QXGT46ZAv1JeE+yCb5JOu5Dnm9b6oM5xH3/88c98l/c5O4h9vATWfskGxHk5n48++ujgq1c/Dv2d33ffffcTP7A3zsv5WfOEr3n37t1hjV6LFXXWbO3yQV6946Sl3Bos5cd3fCk3hoDlK1XSiYDoR+ge7QtwEDj0851jgURAeQoCyESZBBMpzTy9VVw7cs1IftVkLV+CwC44ewJiY5Hrp94NjR+hC+oT/XxaKi3ltcEu+B5+SD7I81Nsi7bg09zkSyfsgh3E17wE1mRtzm1r/ex1awMC18JTaX7cJmQLNs8PGMeHD3vj9XFezlN+4tp/++23h3QL50vOYb4+8vwUHydfyq3BUvrOLjeL4CVwCQ4zMAjmn3766SGwCRpBP0GS9FEmx0qvgWByTJAKSFJ6bbgW5HpIV0EaXYtcEykJ6IIzqQ/q3Yx88803h6Ae9HFcNyDltcJe+CN+i30F9dMfbaHdkwK+a/bxvmcH3vv0EjinSzcgzt3xfpDOX28d7xzZvTHYvjLthTWR18B6g3Phnzyd8RpsoQ9pn2tWx085r1lfyq3AUvrOLjeLoGADIqDPwCBQ+LqCgLb1qZqAR453LMkTjEVI+lQEGUEnaaSMpC+F84zm9aBrkXNcU9eBBGSSF5hpxSegbkJ87UFQD8ZyrA2I40t5bbAtvolWu1IXu9tCm6e3vnKqb8j7nl7qfc+XXroBCc6NnJvrtIUxyE2/894L5+T601wb/+OcfE3U9d/C+WrTd6JeHe15LqXsBUvpO7vcLAJDArJ8ECj81kNA8zWsFUEkQlLHkfGkxkyaPk8lwUaaICSll8K5OUfn6tyVkfQaOL+cq4BMroGUoAxptOJmRsD3py9zHIxrfDcE8qW8NthTbEw6UY62YJ+eEvB3bvQn7CB6Ca6xAXFePkzyodHWGPDhQ8ba81y9JtHERsg5Wc+x87LOaKLMX0m3/Fwpbx13D31nl5tFoBL0BMAZHNQLZv5qjKB9Lo6bcsOwlUYpSy9B4BG4BKGk6vbE2l27yPlcinOInMdMo1mWJ/lzEez91Zn1SYdr54mJm4JZX8prga2xLxsQmqhnf2t90O7DFH5tfarLhtzM0kvA/z51A+LcnRefbTzXaoWNs28fQEiV98BrQuuabIj4Ied37Ly8Jta5tqsn9V6/Um4N1tJ3drlZBATBKgqp9zUs35t+KsYjQXJKsE2qHVJC0ocQgAQpN9B7BiTrs3bXynkonyLr2krJOUw5l6Tar4HvW/v6lWs1x1SOZn0prwn25maWzU3YnvpjdqjODb4nBDYhK25m6SXe+87lqRsQOH/+2kZEfgv+xFhu/G1CnhvX3VpoxRp8HdQ6tq67Ouvdel34KfWnrkcpbxle7Kfv+lJuCMFBwBb4aKLND9HpGhgPWylZx5a00UMIUAISCVp7YH0CKz20RoEysr5IOXIOOJZeAz8+p3VMNwFkTWtbKa8FduaGnVbYIUG/FTf3vlZKK973fIf3Pu2Jc7nGBoQ/8pTHJstXsrZwbuzcUxA3/8+J14C8Jta2Yg20dU7WCa8JrdiAUPqVcmvwYH13l5tGwPOJGa0IZCR46Ccl+egaCFJkvKnUJTV3tIVAlhsJ+ecMTtbkxkFwtbYVc2ctUush9VJKXkrXxLjmpeSlAv7WjYevQ5A+pbxm2B2BHQZ+gT2qoy18pZT0nX2879kIXdsWH8K5ZAMy1xRsQNjsQxsQxzp/58dvK9PEuRkjTx+e8ybe3K4zTR9pPtfZpoq20IfiP4M6WDeVcquw3Pfv9lJuGJ+WZQMiaAR5wUOAFNhIkFQXJbAkdUx0DYxD5ibzW4+51a8IroIWyT8H5jW/9dCKIClouqEngVIdXRPjbQnmJNchSnlel/S3Tjc4pbx22BwfwA4p8EHskmb9xBMCX8Hi7/QP7IBdsBH5PXE+frsh3Vo327QJ8eTCGh/C+dmAOL+t8WCsjHvOmJdgbq/Tug7zmdsmyPxbeA34UNI/qCevE19Wyq3CYvb1RKW8AIKxG/s1UCBl6ZYETUEmUiY3Aca7BuaB1JjmcSNh3SuCk4AlwEqVr401uF7O0ZpWBFeBVZDMGuhaGMu4ArA5nKt8pI30I0ijibK+xrDuUl477I4PYIfT/uS18T/yW7BbH7i4Qdd3wg7YE5ugvbBWa5FuYS3WRufgutCx8ZAxpXRtzE15nSY2FZ6++MCD39nCmvgyfeWDvHV7nbSVcquw3h/f+aXcKAK2wCxdg8VD6C94TqXuofQSBDXHu4kgAU7dRJASoAQwweqamMvaXS/rmGRegZXMre4SHOd4QTZKeU2jlB17Lvq6Tm4ErL2U1w6746uIPU7Ypnp9ttDOdvPEYRJbYEdULsf1J9d4fY1cY3+Jj8/hr7Zw/fVb2/MakT6l3Cqs5vxIXsobRaAQmN3Qy68B41KMJQDZJEin1JlnFaR0CmO4kfBJpvyKABVdk3lO6xrN5WsFAus5N/OCaYQEVGV545HxpGRcQVmfa2AeTz6MbdxSXjvsjr9ig+xxoo1fkNIWjvPXoqTr8eyhtvB0vD785Nb15cP8NT7pFnwb8XvSSY73+qxtpdwSvFff4eUuEDB8rUl6LHBfgrEiSCMByk1AUnOTvLpTOF5fGxA3HGt/wUkAE6yuiXmiiYBoPl8tcANj/lMIpI7Rl6yT5NWTMVYh6TUwj6c15r3muKU8J25sfQVTOuEX2KZ62oLf8ENtH7jwNStsgWoPl5HXgFb4OP7Gj8/5ni34Rtp6DdT7wERayi3jjumn7/5SbhTBWkAXNAToLQSWNSA8BXOaa6YkT8lbk7XJT7TbfNg4uZlYEexsCq65ZjcsZO6JefzuQ3Bdg6P5rYUEVYFXn5lGyuSYa3DqNVNvPdZs7lLeCuyPHfIJ3uMTddEW+vMnPrzgO1bYAl3TDu8F19Zr49rTCh/pQxqbiGPX1rWPJvqr40e9NqXcMrzatoWUcmMIHAJ6tKJdYBEEkBQzfy3MJ4BZi03GBx98cLhpUBf0ITcSJD9xc51gda01Wgut+OqVwCpAzrnk1fnET/B1s29d1nRt1vNXJnNZx4p1WYubAX1KeSt4X/tggj+gyWyT34Iv8xTE/wRZ+7AV9sA2pOV8XFfXXrp1Xf0ZcL7w2HXVJ35JfqKettpKuTVYT9/l5S4QLAQNN9du9Fe0JbAEQUAgmSldC2uCGwlPOGxC3DBM9PEppg2IfspBoCJB6xrrMrbrY1O0IqjSOo/5bTy+/fbbw1MS7XQtrIm8LtIpmMsaXIMVmzNr0q5fKW8F72/veT6JVvgC9frRFvlztWx67cMe2Ef8WnkY19Brwj/KT1xDvsaHND6s2UIf4o+2/JV66mtS7gEW1Hd5uRsEDZuPBGQKAssM6hAECNIIUoKUkPSxmPfjjz8+/HjUWiY2IG4m1sAniAlYdOm8wbjk2ljLREC0+RBcV2w+tPmrL9ZzCeYlSAnSKUgpmNP5S0OuhRsCsv7UlfJW8D5n87FH5cBH8Fc06yeO9cGGTUjGmLCZqDyMax2t8EH8oyfANnZb8EGuNfFJQT2M4diUS7lleK2+08td4QabBJEZuOUFdW3ytEWCg3RKQJFGk7V8DJsP/zHYzcKc302ETYjN06w357WClnFdE3NTMK7xfapns7HiKwc2H9qs5yHMM1Em115KySPpinWRtQno8kGefPWKSnmrsEUbCXZAQZ6daJenFXWO9WSVX9N/wkbYDh8iX47jWrrWfKT8hN/zQccPP/xw8Edb11Idudb6ywd5cqz2Uu4BVvSjFZRyBwgggvJWQBZYUk/HECxWZp08JdCsOoYbBZsQG405vzVlEzLrjSVgCVzmegrOXYAl1yiYw028DYZP91ZsPnz9yhr03cLYZO3SVWHmsZYn5nLzZN713JVzXaiUtwpbJHa52oMyXxa72kKbp6d8B7+ywlaIvbCp8nNcW9fftaSV+Ecf0riWW7i22vgj+Ymy68+fUSn3AI/1U0so5cYRQAR0N/TygstEm2BD0E76QrAgSGlFHUFKkJJARPITX5XwD8TcMFhHsBY3D9pnPQQsAdB4T8E52ugYP+cK4wquNh8+5Vux+fjmm28O/SbGIONOQUpIGpQjJDU+BectaNPENdXPNdEmX8pbxfufTdpoyNNEW7SF/vwHn0Jb/dgIeyL2U37E9XPNiD9bcc1sPIi/OXb99Ism+pONiTb5Uu4Bnqzv9nJ3CCY2INKtoCLYE7Trl7IAIWBLKfnJWl4RqAQcx06syY/QbULMGeRtDrTJT4zhZlvwegrO0xzGF3SDcX232RzWPXGeNh+04qbHNTMWrax1KVuHfFIyj7mtxflC2TXUNtGunw2TtJS3DltgS1KasA+2xm6hvAXf4gMMH2SsY4CtEPtZbWovjq39JdfjWrm2tOJa8Yv8I3+zRdbu2vJZKQdjEF8mLeVeYO0/tYZS7gCBxc22oC54rwg26qX6CkL6powZSAQO5aSR8hYJRjQxh5sEvwORD+a0Hl/Pkk7MIwgaU/5SnKObE+c4Ma7feXj6IR/Mpe7du3eHr2GtWD9Ze5CfMqd0KiRvHvMmQCtLXTtaUaevtelbyluHLbBLti9dUUexpy208Xk+3DDOVj92xn7YDe2J9TgHKcEayLqke2IN5FpZ14r1uFZ8H1/DJ22hnzbnQCvqjCPVt5R7gZX3HV/uDoElAZmgLsgLOrmBJoGI1CtPBI4pSKcEIYJgQwKPtmBs39X+7W9/e5h7Ym6/EbHeOb/j3XAbK+M/FuO5HjYg0olxBVlzmCuYy9cOtPkrWBPjWT/BmM5NfQRphKTBfOYn10uZUraGoB5uBkhb6kp567AhPoAwbUU+7fK0BRv0AYenIfzICnuJXZHyHliv9VufdGIN7P0l1kPWpLzCx3jq4emHa7aF9dLW+pPXRtpLuSdY1XsrKOUOEYRz070GGWXt2khZgHdTLU8PkSAjuAgybuKhLGgppw+M6ebg888/P8w9EQj9YzHrlQ+ONzYZ8xLMa0xjywdjW6NNhvEn5lJv8+E3IhPXy3VyvSBPxqZzMDeZn+C6kbJ0oi95GkSl3Brs6ZgdKWtje/JbqGfnNiGk7wobYtvsi5SfG+uwLrLGFeuJnhvzWw8dW4/rYuNB1nTsGqnXl7+SnyiTttW3lnIPsKyfWkUpd4QAI2i72RdwVrQL+oRZ3gpMWwgyEGQEGwFJncDlUzT5ibV88cUXP9sMmNvTERsUaw6ON5bx6RKcu3My7pzTuNboK1jyE3P5AbogrM/EWGTNMK7zmmM/hOtkDpKHPK1rgT6uL+lTyq3BTtkUe9qyJe3T7rZwHN/Cl5BjVvgU9kRsTfk5sd5oC/OzaXpOXBtrcE1IecU18YEL+aDD2o7h2lmzY1Ycx1fps9Veyq3Duo5bTyk3jgAjYAvIAo/yRFl9Ar6gpOwYqbpzEYgScAQfQWcrgJnLV7DcHJgjmNvmQ72b+YkxM/4lmMc50TwnY/qaga9amWNirr/85S+HQKxfcLxxjEnKzmld8ylcE/OZQ6pMszxRVu96Sl3bUm4NtsQPsCep8kSZzZE8baHdGJ6oSpVX2BTFnui54C/o2HrB9qefuTauJ7kW1kErroV1eOorVd7CdSPtJD9Rdj2NIVUu5d5gYX3nl7tG0HFzLBDLr4FHneCYwJQyyas7B8GTEpAEHjfM0olxP/3008OfzLSuYC5rVG8jMjGepxAC2iWYk3KOwZg2GDYh6zq1/elPfzq0mT843jqNZc2kTOdgLNeIXC/zpi7liTZ12rauZym3BPuKrbItqAvqSLt62kKf+BJ+RnkL9sT2iK09B87nIf/At7Hx58A1cr3o1HXg8/g7H8gob+EakeulDwX1UKfd+aSulHuDZ+q7v9w9go6nIAIxBKSJdgFSgNJGCZry9BACDgmkgo4gJKBJlYM5/Njcn9z1tCOYw5xuGmjFWHQJzsPY5p4k2FqzdQbrdbP/5Zdf/mxO63QdjSUvzfgPYVwyX4Iz5brNNUAbrIG0p66UW4VdsSeSp4kym+O35I+h3QaEn+H/lLdgVxSbvDbOg46t1ZzmpmtjTnM7d9rCufN3xz6MmVirdv5KfqJMzoPkS7lXWHstoJS/I2BHgtKKG2mBSqpdsFImZTqFoORG2o2ywKMsCKmTD8b1A1GbEF+RCMYnddpXBLyM/VhsGLbO2+aDrHOOa82C8Z///OfDvBNj5GaGXC/XiE5hfNfBXMYnSFO34hhtzluqXMo9ELuSsrkV9cQGsdUHxmD/bJaUt2BbbJCNkvK1yDql6zrNk3ml18I85qSteQO/YvNB8TNbWCeyTlrRR70xpKXcMyzuvdWUcuckEPlEUH4rIAnOlHap4C2lUwg+gpNP0ORJICL1wbjW4H9+2ISs2ICQfhPj2AwYy9jnYhybD+ex4gfmvu9sPAoCsY2Jf0Bo3onr4EZGamzXi1zbU1i3oGxsc5E649NK2t0YaJcv5V5gW2yK7crTina2l7akK+rZvyernoaw3S1ic5EyPRXzm9N65QnGJn4h8z0VY5P5IuUtzOmDFr4ufmmL1Ev5Iutd0UZ8tHb5Uu4ZVlcrKOX/Ixi5eRa0BcMVgUr9DPrK+pPyKQQeN8wCmwCkvAYsYxjTPyP8+OOP/17zU9wkeAKij77BGMYiY5+D48n50MQYNh82IfITQdlfxvrhhx8O8wZjuYZuZqTK8taqfAzjW7fgnGtDysaXX1HvmFzPUu4NNsXvHLMv9qdeH3k6hja2agPCxzjuGOyRzbFBugbmjybmiq6Ba0XOb51r4vxsPPi6U5sPaCP+yHHyK+pdq/Qp5d5hfT+3lFLuFAFJcHIzTso0URbQ9UsQk0+dMm0h8OSGmQQqN9mC0sTxfohuEyI/8XTETYKN0mwznnGMZ9xzcLxzcK7WPxEsbT5oxcbE5kObeYOxXANjyRvfOtXJr1gnmcvapcrGlFenPFEm50n6KZdyb7Apdsbe2BjUTZS16UdQt4V2vsAGxGbEuMf6sjl2uqZPZZ3PuE/FeRl3TbcwH79j02EDwsccOy99oZ22fFHK2oyrX+pKuWdYYC2hlAVBOAEYa7BS1kbyJMgrS5VpRfAR0AQjgkAnMK14+mETYryJdWUTIpAGQc04xjfPOVij8Z2vNBjLOAKwTwBXbD6+++67//s6WbAe14CMrWyt0hXHketgLmtWJudB8pOUtblujivl3mFvFDtjexNl9k3ySLqino/xwQHxDRn3GGyY/VJsNOlL4TwgtX5y/qewfj7Fh0TExxw7j9RLnT/JT1I2Lp9FpZT3sND3FlJK+T8ELQE9N8/KK+oENAFanvR1HCnTREAS4AQiQSllWvnwww8PmxA3A3McY7sxyNewgrGMKXBKz8G4xqM5luONY/MhXXn37t3hnxCuQdcYGcvYUmt1XSaOIdfBuctHyuu4QZ212fg4VrmUe4etsTG+SKq8ok4bm5QqH0ObPsbjZ/ggx52CLRL7jJRfgqw/UqZT8Dk2HJ7q8kEPrV+bPo6TKq+o03bOeKXcGyyyFlHKBgKXAEwJvmsQU9YWKTsuN+Hy6oIAJGAJSFLIk7aJH5r7Ifr6pMO4bgj8mV75iSDn5lx6DsbN+ckHx3v6YSxrm2iz+aB1zc7beM7ZeMa1VvngGGPYQLgG8urkI+VJytqshxxXSnkPm2NvEdRNlNkiHesz0Y/9+hBByrbVnYKtsk3pFKR0TayfIJ2yVukprJU/sfnwYYtU3TGyfr5IP0pdSFmfKHWllPewzFpFKUcQvAReEsygbsWNN+mjnQRrQV4d1AlCApaA5wYcUmX1E9/D9lewbESME4xjbE9IzDkxhiAqNddDWJubC6lxg4Dpdx7Gkg/GtF6bD1/BWrEugjVbHxnfsTAeGcc6IVWmlRynj5sDSl0p5UfYcOyOzUHdij50qs+ETfMTnggb27EPHQN2SmxXGiHppWR+aeR8pPQQ5o8f8kELX8cPn8IxcD6OpZXZx9j6pK6U8iOstJZRygkENUFXAJbfCm7qtOmX4EzypF45gchNdIKdIEUC1cR8Nh+egjh+4oYgGxDjBuMLpIIfPYQ1u6mQTqzl+++/P6zTmMGYxrf58DuQFesiazKm9SnDOMZ1rsZRprVuRZ0286ZfKWUbthefwwaVt9D2UJ+gnYzLL3kq60MZdefAhifKU4/BnFOTtXwMc/Jt+YopH6SOTqGd/znlh2afjFtK+TmstdZRygkENXIjTYIw1E2UBXPtlDIpkzxsPgRACFKCFU3M5SmIH6LLT9w4eDqiPmNCsDO2sQTBU1ifNbmhkA/GcLwNiFQ5WKuvZmnzXemJMayHYGx567MWx0ojqDOH8pwHKevjnEgdlVKOwxbZXwR1K9rYpxRbfVb4HpsPKfsmx59z7CR2nPRcMk/SczHP9CX8Dh8sfQjHwvF8lXRl9olSV0r5OSy4FlLKGQh4Ai8J2lC3ok1wTlAmdcrqlQU9QVCAEtCUSTk4xieNn3322SHIT4zl6YjNg3xwvMBnLOkprMOxzkc+WI+1ecJhnIkxbT78DxBfW5hYr3U6R0gJxnGs9UXmSf2KdujjJoFSV0p5GDbNvtkg24S6FW36SbXTOejPd3iCKjWGY6PXAJ8R8TP8CL8l5VvOwbGkvzGkK9qhLT4tdaWUbXiJWkkpZyLoCuhu/OWPBVr1ArK+UqgjdYKTICVgkbybfvUT8/zud787BPiJuW1OyE3/JOPROt7EWqzNeuSD43wtwW9A5CfW6Pcfnn7IT4xDxoQ1yhvDOghZn0Atv4W++liH9Fi/Uspx2DU75COkyluoZ7v60Lk4Tn92zkeRuYyl7SXhQ/gYfsqGg+JLtJ2L/mSsY8ep18dcUuVSyml4iFpKKY9AwE2QJWwFW3UCMzlGmeQhSEWClptt+Yl5PAGx0chxkBfs1fsEcsV4xqJjWAsZayKI+pTQ96MF7Im2r7766tBmjmAc18K5EtSRftZB8saU0oo+pI+5BP2tfqWU82CDbDKCuhV+INIenYN+xqbpByJjSp8TPoOvkE7xIVLiW85Bv8iY0Yp2GDtKXSnlNLxLraWURyLg2hzYBAiuyrSiTrugLFVG0iC42YBIJ47zGxB/i998wfHa/EaErol12GBI1/Wo+/LLLw/pxHpyLSgkGEuN5WZAqryijgRxmw9SLqU8Hf6C2Gq0Bfu1WZCmT9Jz0d8YfII5I2NCO5I+lviFpHwK3xLlaUfazyX9pcY0hnQLfSJzUinlfFj/e4srpTwKwVOQ9TUpaYLrFukbKU8EOUFTKqAFff0VLL/3mE86HE/qbU6uic2Hr1gJqHMt1ubJiCcg1jqxFtfBNZAPjnecQL6Ot5J+NjfSU31LKY+DXbLPbAToGPryPfqQ8iXMY6XKGTfpJcRXzDT+Qqp8CTmWjKt8DH2IX5Oe6ltK+Tk8Q62mlAsRVAV0ElBJ3RbqBVxKv0gA84n/GvT0s8nwF6/WJx2OsylR7+mI8lMRTP2VK5sQ66CQtq+//vqw1olz8mmnFI4j5zW1RfoZP1JXSrkufAQb5VdImbZQry8lD/lLcSwZK+kl8Bd8RFK6lBybsaQkv4V64qvpVN9SynF4klpOKU9EMLcJyEZEcD2GNn1IAFYWwNx4J6AF7X7n4X9++M/nK+Zz46+P/MS452J+83qy4SmHpxAr6jwZeffu3WGtE+v0BMScGcu5kPIWqdfXeDY10lLK88L3ELulwH5X1Omjvzwh6Vsl/kdKfBVfJL8y6/Qh/amUchk8yI+WVUq5CMGYBGkbApuRh9A/gV26FdT0cWP/8ccfH56CrGh3rM1HhNRL6RgCa+Z1828DIq9+xdMPf5p3/etYxjeXuR2nzZjyx0ibObPxUEellOeFzULKbvkgeTqGNnZO+kPdWyR+Jr6KUreFNtI/vgpJSymPh/eoBZVyJRKcBXVSPhWktZF+EAhpYpxPPvnksAnZwvFkDIJy9BCCqDlJgFXewv/+8D9AfD1L34l5zeXY6BjaHC+QkzmVSyn7w1+x36Ts+BjaKP1IHvKvGX4HfI08zfwxtOkXPyUtpTwdHuO45ZVSHo1ALCh7CmLzIK8OSbfQJthtYQPir2EZ66X47rvvDl+/8sTi2DqPkf5SQdzGwzjy6kopLwffw1fZhMgTkm6hjT+KoC7M/Esw/Ury/E2Uui3SJiWbDj5LvpRyHXiIWlQpV0bwJQGdbEYEaXWX4OtXnoD4epdx9kYA9g8IbUAuCcKOIZsOgdx4ylRKeXn4Jr6F+CypuofQZ8pxJP+S8C02GiQ/9RD6OI6fkpK6Usr14CFqVaU8E4KwYB4JzFJoOxcbD3/xykYmn1TKG4+MlfQpCLSR4GuzEPkNiB+on4uATRlrplRKeV3wH8SXRMrRKbSvgpQgpWvCxxCkBOmqU2iP+KdImUop14UnqGWVsgM2DmTzILATHhOQ9TWGDYkfp8sbj4wn1eexCLBkgxD5QTr561fK2h8ifaQkgNu8kDFKKW8D/oT4FOn0KzN/jPTJsVPXhJ+Z4nMg/xCzj7xj+SkplVKeD57gRwsspTwbAm8kqNs8eIqh/Bj0XwUpGTdB/xwEWkGXIBBv6Rz0IxsOMqbxob6U8nbgQ4g/IX5LmR7LPCb5pI8lviQpZv5cHEPxU6RMpZTnhfXX0krZEUGXBHNBfZW2p2AMOhfBNoH3EnKsNJoBvZTytuGT+JStlC7l0mP5m0txLPFNW2kpZR9Yfy2ulBfERmRKUI7CzL80CdJSErhtOCLlUsptwhfxUzYgpIykmPmXhH8KyUv5KOKvlEsp+8NL1PpKeUESrKUkqCfAJ1X/GhCsSeDe+ooVlVJum/gjKfFRkTK9Bvgj4qMiZULSUsr+8BK1wFJeEYK3QE7yq1Ivhfy1SWAWsEl5Sl2kXEq5T/ifY4I0QtJrEf8jjSA9plLKy8MT1BpLeeUI2mTTkaciUnVh5i9lBmd5TziibjZKKefAF0V8lXTqmvBJU/FTUSnldcIT1EJLeSMkeK/pGuQfi0C9JaxpKaWcw+qLUk76VOKTkoa1XEp5ffACtdRS3jgCeoSk5yJgE6RUSinPwWP90zHqp0p5u/ACteBSSimllFLKLnQDUkoppZRSStmNbkBKKaWUUkopu9ENSCmllFJKKWU3ugEppZRSSiml7EY3IKWUUkoppZTd6AaklFJKKaWUshvdgJRSSimllFJ2oxuQUkoppZRSym50A1JKKaWUUkrZjW5ASimllFJKKbvRDUgppZRSSillN7oBKaWUUkoppexGNyCllFJKKaWU3egGpJRSSimllLIb3YCUUkoppZRSdqMbkFJKKaWUUspudANSSimllFJK2Y1uQEoppZRSSim70Q1IKaWUUkopZTe6ASmllFJKKaXsRjcgpZRSSimllN3oBqSUUkoppZSyG92AlFJKKaWUUnajG5BSSimllFLKbnQDUkoppZRSStmNbkBKKaWUUkopu9ENSCmllFJKKWU3ugEppZRSSiml7EY3IKWUUkoppZTd6AaklFJKKaWUshvdgJRSSimllFJ2oxuQUkoppZRSym50A1JKKaWUUkrZjW5ASimllFJKKbvRDUgppZRSSillN7oBKaWUUkoppexGNyCllFJKKaWU3egGpJRSSimllLIb3YCUUkoppZRSdqMbkFJKKaWUUspudANSSimllFJK2Y1uQEoppZRSSim70Q1IKaWUUkopZTe6ASmllFJKKaXsRjcgpZRSSimllN3oBqSUUkoppZSyG92AlFJKKaWUUnajG5BSSimllFLKbnQDUkoppZRSStmNbkBKKaWUUkopu9ENSCmllFJKKWU3ugEppZRSSiml7EY3IKWUUkoppZTd6AaklFJKKaWUshvdgJRSSimllFJ2oxuQUkoppZRSym50A1JKKaWUUkrZjW5ASimllFJKKbvRDUgppZRSSillN7oBKaWUUkoppexGNyCllFJKKaWU3egGpJRSSimllLIb3YCUUkoppZRSdqMbkFJKKaWUUspudANSSimllFJK2Y1uQEoppZRSSim70Q1IKaWUUkopZTe6ASmllFJKKaXsRjcgpZRSSimllN3oBqSUUkoppZSyG92AlFJKKaWUUnajG5BSSimllFLKbnQDUkoppZRSStmNbkBKKaWUUkopu9ENSCmllFJKKWU3ugEppZRSSiml7EY3IKWUUkoppZTd6AaklFJKKaWUshvdgJRSSimllFJ2oxuQUkoppZRSym50A1JKKaWUUkrZjW5ASimllFJKKbvRDUgppZRSSillN7oBKaWUUkoppexGNyCllFJKKaWU3egGpJRSSimllLIb3YCUUkoppZRSdqMbkFJKKaWUUspudANSSimllFJK2Y1uQEoppZRSSim70Q1IKaWUUkopZTe6ASmllFJKKaXsRjcgpZRSSimllN3oBqSUUkoppZSyG92AlFJKKaWUUnajG5BSSimllFLKbnQDUkoppZRSStmNbkBKKaWUUkopu9ENSCmllFJKKWU3ugEppZRSSiml7Mb/A7Rx7NjZsgzoAAAAAElFTkSuQmCC">
/// </center>
///
/// ### Source
/// ```no_run
/// #![windows_subsystem = "windows"]
///
/// use thindx::*;
/// use thindx::d3d9::*;
///
/// use mmrbi::*;
///
/// use raw_window_handle::*;
///
/// use winapi::shared::d3d9types::*;
/// use winapi::um::objbase::CoInitialize;
///
/// use winit::dpi::*;
/// use winit::event::{Event::*, WindowEvent::*};
/// use winit::event_loop::*;
/// use winit::window::*;
///
/// use std::convert::TryInto;
/// use std::fs::File;
/// use std::io;
/// use std::mem::size_of_val;
/// use std::ptr::null_mut;
///
///
///
/// fn main() {
/// dev::win32::optional_dev_init();
/// unsafe { CoInitialize(null_mut()) };
/// let event_loop = EventLoop::new();
/// let window = WindowBuilder::new()
/// .with_title("d3d9-02-xinput - thindx example")
/// .with_inner_size(Size::Physical(PhysicalSize { width: 800, height: 600 }))
/// .with_visible(!dev::d3d9::hide_for_docs_gen())
/// .build(&event_loop).unwrap();
///
/// let hwnd = match window.raw_window_handle() {
/// RawWindowHandle::Win32(Win32Handle { hwnd, .. }) => hwnd.cast(),
/// other => panic!("Expected RawWindowHandle::Windows(...), got {:?} instead", other),
/// };
///
/// let mut pp = D3DPRESENT_PARAMETERS { // TODO: replace with d3d::PresentParameters
/// Windowed: true.into(),
/// hDeviceWindow: hwnd,
/// SwapEffect: SwapEffect::Discard.into(),
/// PresentationInterval: Present::IntervalOne.into(),
/// .. unsafe { std::mem::zeroed() }
/// };
///
/// let behavior =
/// // Create::DisablePrintScreen | // d3d9ex
/// Create::FpuPreserve |
/// Create::HardwareVertexProcessing |
/// Create::NoWindowChanges;
///
/// let d3d = unsafe { Direct3D::create(SdkVersion::default()) }.unwrap();
/// let mut device = Some(unsafe { d3d.create_device(0, DevType::HAL, null_mut(), behavior, &mut pp) }.unwrap());
/// let mut assets = None;
///
/// event_loop.run(move |event, _, control_flow|{
/// *control_flow = ControlFlow::Poll;
///
/// match event {
/// WindowEvent { event: CloseRequested, window_id } if window_id == window.id() => {
/// std::process::exit(0); // Ensure Device outlasts closing HWND!
/// },
/// WindowEvent { event: Resized(size), window_id } if window_id == window.id() => {
/// let _ = size; // TODO: resize buffers, set viewport
/// },
/// WindowEvent { event: Focused(focus), window_id } if window_id == window.id() => {
/// xinput::enable(focus);
/// },
/// MainEventsCleared => {
/// let present_err;
/// if let Some(device) = device.as_ref() {
/// if assets.is_none() { assets = Some(Assets::new(&device)); }
/// let assets = assets.as_ref().unwrap();
///
/// device.clear(None, Some(Color::argb(0xFF000000)), None, None).unwrap();
///
/// let _ = device.begin_scene();
/// let _ = device.set_stream_source(0, &assets.QuadVB, 0, Vertex::STRIDE);
/// let _ = device.set_indices(&assets.QuadIB);
/// let _ = device.set_vertex_declaration(&assets.VertDecl);
/// let _ = device.set_material(Material { ambient: ColorValue { r: 1.0, g: 1.0, b: 1.0, a: 0.0 }, ..Default::default() });
/// let _ = device.set_render_state_untyped(d3d::RS::Lighting, true as u32 );
/// let _ = device.set_render_state_untyped(d3d::RS::AlphaBlendEnable, true as u32 );
/// let _ = device.set_render_state_untyped(d3d::RS::DestBlend, d3d::Blend::InvSrcAlpha );
/// let _ = device.set_render_state_untyped(d3d::RS::Ambient, 0xFFFFFFFFu32 );
/// unsafe {
/// let _ = device.set_sampler_state_unchecked(0, d3d::Samp::MinFilter, d3d::TexF::Linear);
/// let _ = device.set_sampler_state_unchecked(0, d3d::Samp::MagFilter, d3d::TexF::Linear);
/// let _ = device.set_sampler_state_unchecked(0, d3d::Samp::MipFilter, d3d::TexF::Linear);
/// }
///
/// let sx = 2.0 / 800.0;
/// let sy = 2.0 / 600.0;
///
/// let user = xinput::User::Zero;
/// let state = xinput::get_state(user).ok().filter(|_| !dev::d3d9::hide_for_docs_gen()).unwrap_or(xinput::State::default());
///
/// let _ = xinput::set_state(user, xinput::Vibration {
/// left_motor_speed: 0x101 * (state.left_trigger as u16),
/// right_motor_speed: 0x101 * (state.right_trigger as u16),
/// });
///
/// use xinput::Buttons;
/// let asset_dpad;
/// if state.buttons.any_held(Buttons::DPadUp) { asset_dpad = &assets.Dpad_Up; }
/// else if state.buttons.any_held(Buttons::DPadRight) { asset_dpad = &assets.Dpad_Right; }
/// else if state.buttons.any_held(Buttons::DPadDown) { asset_dpad = &assets.Dpad_Down; }
/// else if state.buttons.any_held(Buttons::DPadLeft) { asset_dpad = &assets.Dpad_Left; }
/// else { asset_dpad = &assets.Dpad; }
///
/// // I intentionally apply no deadzone to these values
/// let lx = state.left_thumb_x as f32 * 50.0 / (i16::MAX as f32);
/// let ly = state.left_thumb_y as f32 * 50.0 / (i16::MAX as f32);
/// let rx = state.right_thumb_x as f32 * 50.0 / (i16::MAX as f32);
/// let ry = state.right_thumb_y as f32 * 50.0 / (i16::MAX as f32);
/// let lt = state.left_trigger as f32 * 50.0 / (u8::MAX as f32);
/// let rt = state.right_trigger as f32 * 50.0 / (u8::MAX as f32);
///
/// for ( dx , dy , texture, scale, bri) in [
/// (-330.0 , 190.0 - lt , &assets.LT, 1.0, 128 + state.left_trigger /2),
/// ( 330.0 , 190.0 - rt , &assets.RT, 1.0, 128 + state.right_trigger/2),
/// (-220.0 , 230.0 , &assets.LB, 1.0, if state.buttons.any_held(Buttons::LeftShoulder ) { 255 } else { 128 }),
/// ( 220.0 , 230.0 , &assets.RB, 1.0, if state.buttons.any_held(Buttons::RightShoulder) { 255 } else { 128 }),
///
/// ( 300.0 , 30.0 - 60.0, &assets.A, 0.7, if state.buttons.any_held(Buttons::A) { 255 } else { 128 }),
/// ( 300.0 + 60.0, 30.0 , &assets.B, 0.7, if state.buttons.any_held(Buttons::B) { 255 } else { 128 }),
/// ( 300.0 - 60.0, 30.0 , &assets.X, 0.7, if state.buttons.any_held(Buttons::X) { 255 } else { 128 }),
/// ( 300.0 , 30.0 + 60.0, &assets.Y, 0.7, if state.buttons.any_held(Buttons::Y) { 255 } else { 128 }),
///
/// ( 100.0 , 30.0 , &assets.Start, 0.7, if state.buttons.any_held(Buttons::Start) { 255 } else { 128 }),
/// // Guide Button?
/// (-100.0 , 30.0 , &assets.Back, 0.7, if state.buttons.any_held(Buttons::Back) { 255 } else { 128 }),
///
/// (-300.0 + lx , 30.0 + ly , &assets.Left_Stick, 1.5, if state.buttons.any_held(Buttons::LeftThumb) { 255 } else { 128 }),
/// (-150.0 ,-130.0 , asset_dpad, 1.5, if state.buttons.any_held(Buttons::DPadDown | Buttons::DPadRight | Buttons::DPadLeft | Buttons::DPadUp) { 255 } else { 128 }),
/// ( 150.0 + rx ,-130.0 + ry , &assets.Right_Stick, 1.5, if state.buttons.any_held(Buttons::RightThumb) { 255 } else { 128 }),
/// ].iter().copied() {
/// // half texel fixups
/// let dx = dx + 0.5;
/// let dy = dy - 0.5;
///
/// let texture_mip0_desc = texture.get_level_desc(0).unwrap();
/// let texw = texture_mip0_desc.width as f32 * scale;
/// let texh = texture_mip0_desc.height as f32 * scale;
/// let _ = device.set_render_state_untyped(d3d::RS::Ambient, (bri as u32) * 0x01010101);
/// let _ = device.set_transform(d3d::TS::World, d3d::Matrix { m: [
/// [texw * sx, 0.0, 0.0, 0.0],
/// [ 0.0, texh * sy, 0.0, 0.0],
/// [ 0.0, 0.0, 1.0, 0.0],
/// [ dx * sx, dy * sy, 0.0, 1.0],
/// ]});
/// let _ = unsafe { device.set_texture(0, texture) };
/// let _ = unsafe { device.draw_indexed_primitive(PT::TriangleList, 0, 0, 4, 0, 2) };
/// }
///
/// let _ = device.end_scene();
///
/// dev::d3d9::screenshot_rt0_for_docs_gen(&device);
/// present_err = device.present(.., .., (), None).err();
/// } else {
/// present_err = None;
/// }
///
/// if let Some(err) = present_err {
/// match err.kind() {
/// D3DERR::DEVICELOST => {
/// assets = None;
/// drop(device.take()); // explicitly release COM device before creating a new one
/// device = Some(unsafe { d3d.create_device(0, DevType::HAL, null_mut(), behavior, &mut pp) }.unwrap());
/// },
/// _other => {},
/// }
/// }
/// },
/// _ => {},
/// }
/// });
/// }
///
/// #[allow(dead_code)]
/// #[allow(non_snake_case)]
/// struct Assets {
/// A: Texture,
/// B: Texture,
/// X: Texture,
/// Y: Texture,
/// Back: Texture,
/// Start: Texture,
/// Dpad_Down: Texture,
/// Dpad_Left: Texture,
/// Dpad_Right: Texture,
/// Dpad_Up: Texture,
/// Dpad: Texture,
/// LB: Texture,
/// RB: Texture,
/// LT: Texture,
/// RT: Texture,
/// Left_Stick_Click: Texture,
/// Left_Stick: Texture,
/// Right_Stick_Click: Texture,
/// Right_Stick: Texture,
/// QuadIB: IndexBuffer,
/// QuadVB: VertexBuffer,
/// VertDecl: VertexDeclaration,
/// }
///
/// impl Assets {
/// pub fn new(device: &Device) -> Self {
/// Self {
/// A: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_A.png"),
/// B: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_B.png"),
/// X: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_X.png"),
/// Y: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Y.png"),
/// Back: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Back.png"),
/// Start: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Start.png"),
/// Dpad_Down: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Dpad_Down.png"),
/// Dpad_Left: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Dpad_Left.png"),
/// Dpad_Right: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Dpad_Right.png"),
/// Dpad_Up: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Dpad_Up.png"),
/// Dpad: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Dpad.png"),
/// LB: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_LB.png"),
/// RB: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_RB.png"),
/// LT: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_LT.png"),
/// RT: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_RT.png"),
/// Left_Stick_Click: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Left_Stick_Click.png"),
/// Left_Stick: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Left_Stick.png"),
/// Right_Stick_Click: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Right_Stick_Click.png"),
/// Right_Stick: png2tex(device, r"thindx\examples\assets\xelu\Others\Xbox 360\360_Right_Stick.png"),
/// QuadIB: index16(device, &[0, 1, 2, 0, 2, 3]).expect("QuadIB"),
/// QuadVB: vert2vb(device, &[
/// Vertex { position: [ 0.5, -0.5, 0.5, 0.0], texcoord: [1.0, 1.0] },
/// Vertex { position: [-0.5, -0.5, 0.5, 0.0], texcoord: [0.0, 1.0] },
/// Vertex { position: [-0.5, 0.5, 0.5, 0.0], texcoord: [0.0, 0.0] },
/// Vertex { position: [ 0.5, 0.5, 0.5, 0.0], texcoord: [1.0, 0.0] },
/// ]).expect("QuadVB"),
///
/// VertDecl: device.create_vertex_declaration(&[
/// VertexElement { offset: 0, ty: DeclType8::Float4, usage: DeclUsage8::Position, usage_index: 0, .. Default::default() },
/// VertexElement { offset: 16, ty: DeclType8::Float2, usage: DeclUsage8::TexCoord, usage_index: 0, .. Default::default() },
/// VertexElement::END
/// ]).unwrap()
/// }
/// }
/// }
///
/// fn png2tex(device: &Device, path: &str) -> Texture { // TODO: replace with dev/utility function
/// return imp(device, path).unwrap_or_else(|err| fatal!("png2tex(device, {:?}): {}", path, err));
///
/// fn imp(device: &Device, path: &str) -> Result<Texture, io::Error> {
/// let cwd = std::env::current_dir()?;
/// let exe_path = cwd.join(std::env::args().next().expect("exe_path"));
/// let root_dir = exe_path.ancestors().nth(4).ok_or(io::ErrorKind::NotFound)?;
/// let mut decoder = png::Decoder::new(File::open(root_dir.join(path))?);
/// decoder.set_transformations(png::Transformations::normalize_to_color8());
/// let mut reader = decoder.read_info()?;
/// let mut pngbuf = vec![0; reader.output_buffer_size()];
/// let info = reader.next_frame(&mut pngbuf)?;
/// let levels = 1;
/// assert_eq!(info.bit_depth, png::BitDepth::Eight);
///
/// let bpp;
/// let format;
/// match info.color_type {
/// png::ColorType::Grayscale => {
/// bpp = 1;
/// format = Format::L8;
/// },
/// png::ColorType::GrayscaleAlpha => {
/// bpp = 2;
/// format = Format::A8L8;
/// },
/// png::ColorType::Rgb => {
/// bpp = 3;
/// format = Format::R8G8B8; // little endian - B,G,R byte order
/// pngbuf.chunks_exact_mut(3).for_each(|w| w.reverse()); // fix RGB => BGR
/// },
/// png::ColorType::Rgba => {
/// bpp = 4;
/// format = Format::A8R8G8B8; // little endian - B,G,R,A byte order
/// let mut pending = &mut pngbuf[..];
/// while let [r, g, b, a, rest @ ..] = pending {
/// // fix RGBA => BGRA
/// std::mem::swap(r, b);
///
/// // premultiply alpha
/// *r = ((*r as usize) * (*a as usize) / 255) as u8;
/// *g = ((*g as usize) * (*a as usize) / 255) as u8;
/// *b = ((*b as usize) * (*a as usize) / 255) as u8;
///
/// pending = rest;
/// }
/// },
/// other => fatal!("unexpected png::ColorType::{:?} for `{}`", other, path),
/// };
///
/// let texture = device.create_texture(info.width, info.height, levels, Usage::AutoGenMipMap, format, Pool::Managed, ())?;
/// let w = info.width as usize;
/// let h = info.height as usize;
/// let src_pitch = bpp * w;
/// unsafe {
/// let lock = texture.lock_rect_unchecked(0, .., Lock::NoOverwrite)?;
/// for y in 0..h {
/// let src = pngbuf[y * src_pitch as usize..].as_ptr();
/// let dst = (lock.pBits as *mut u8).add(y * lock.Pitch as usize);
/// std::ptr::copy_nonoverlapping(src, dst.cast(), 4 * w);
/// }
/// texture.unlock_rect(0)?;
/// }
/// Ok(texture)
/// }
/// }
///
/// fn index16(device: &Device, src: &[u16]) -> Result<IndexBuffer, MethodError> {
/// // TODO: improve safety (explicit `Bytes(...)` tuple?) - previously passed src.len() instead of byte count, resulting in an undersized buffer
/// let ib = device.create_index_buffer(size_of_val(src).try_into().unwrap(), Usage::None, Format::Index16, Pool::Managed, ())?;
/// unsafe { // TODO: replace with safe(r) logic
/// let dst = ib.lock_unchecked(0, 0, Lock::None)?;
/// std::ptr::copy_nonoverlapping(src.as_ptr(), dst.cast(), src.len());
/// ib.unlock()?;
/// }
/// Ok(ib)
/// }
///
/// fn vert2vb(device: &Device, src: &[Vertex]) -> Result<VertexBuffer, MethodError> {
/// let vb = device.create_vertex_buffer(size_of_val(src).try_into().unwrap(), Usage::None, FVF::None, Pool::Managed, ())?;
/// unsafe { // TODO: replace with safe(r) logic
/// let dst = vb.lock_unchecked(0, 0, Lock::None)?;
/// std::ptr::copy_nonoverlapping(src.as_ptr(), dst.cast(), src.len());
/// vb.unlock()?;
/// }
/// Ok(vb)
/// }
///
/// #[repr(C)] struct Vertex {
/// pub position: [f32; 4],
/// pub texcoord: [f32; 2],
/// }
///
/// impl Vertex {
/// pub const STRIDE : u32 = std::mem::size_of::<Self>() as _;
/// }
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3d9-02-xinput
/// ```
pub const d3d9_02_xinput : () = ();
/// [d3d::Compiler] construction / storage
///
/// ### Source
/// ```no_run
/// #![allow(unused_variables)]
/// use thindx::d3d;
///
/// fn main() {
/// // The simplest option is to simply hardcode a specific version
/// let d3dc = d3d::Compiler::load_system(47).unwrap();
/// let d3dc = d3d::Compiler::load_insecure("d3dcompiler_47.dll").unwrap();
///
/// // However, you can potentially allow a range of versions as well
/// let d3dc = (33..=47).rev().find_map(|ver| d3d::Compiler::load_system(ver).ok()).unwrap();
///
/// // TLS is also an option
/// thread_local! { static D3DC : d3d::Compiler = d3d::Compiler::load_system(47).unwrap(); }
///
/// // And lazy_static! should be too
/// lazy_static::lazy_static! { static ref D3DC2 : d3d::Compiler = d3d::Compiler::load_system(47).unwrap(); }
///
/// // Init failures are simple std::io::Error s:
/// let err : std::io::Error = d3d::Compiler::load_system(9001).map(|_d3dc|()).unwrap_err();
/// assert_eq!(err.kind(), std::io::ErrorKind::NotFound);
/// println!("{}", err);
/// }
/// ```
///
/// ### Output
/// ```text
/// Unable to load d3dcompiler_9001.dll: NotFound
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3dcompiler-01-construction
/// ```
pub const d3dcompiler_01_construction : () = ();
/// Use [d3d::Compiler::compile] and friends to compile HLSL to bytecode
///
/// ### Source
/// ```no_run
/// #![allow(unused_variables)]
/// use thindx::*;
/// use thindx::d3d::*;
///
/// fn main() {
/// let d3dc = d3d::Compiler::load_system(47).unwrap();
/// let basic_hlsl : &[u8] = include_bytes!("../test/data/basic.hlsl");
/// let library_hlsl : &[u8] = include_bytes!("../test/data/library.hlsl");
///
/// // Option A: just preprocess instead of fully compiling
/// let pixel_shader = d3dc.preprocess(basic_hlsl, (), None, None, ).unwrap();
/// let vertex_shader = d3dc.preprocess(basic_hlsl, r"thindx\test\data\basic.hlsl", None, StandardFileInclude ).unwrap();
/// let library = d3dc.preprocess(library_hlsl, r"thindx\test\data\library.hlsl", None, None, ).unwrap();
/// println!("pixel_shader\n============\n{}\n", pixel_shader .shader);
/// println!("vertex_shader\n=============\n{}\n", vertex_shader.shader);
/// println!("library\n=======\n{}\n", library .shader);
///
/// // Option B: compile_from_file
/// let pixel_shader = d3dc.compile_from_file(r"thindx\test\data\basic.hlsl", None, None, "ps_main", "ps_4_0", Compile::Debug, CompileEffect::None).unwrap();
/// let vertex_shader = d3dc.compile_from_file(r"thindx\test\data\basic.hlsl", None, StandardFileInclude, "vs_main", "vs_4_0", Compile::Debug, CompileEffect::None).unwrap();
/// let library = d3dc.compile_from_file(r"thindx\test\data\library.hlsl", None, None, (), "lib_5_0", Compile::Debug, CompileEffect::None).unwrap();
/// // resulting blobs are binary data
///
/// // Option C: compile
/// let pixel_shader = d3dc.compile(basic_hlsl, (), None, None, "ps_main", "ps_4_0", Compile::Debug, CompileEffect::None).unwrap();
/// let vertex_shader = d3dc.compile(basic_hlsl, r"thindx\test\data\basic.hlsl", None, StandardFileInclude, "vs_main", "vs_4_0", Compile::Debug, CompileEffect::None).unwrap();
/// let library = d3dc.compile(library_hlsl, r"thindx\test\data\library.hlsl", None, None, (), "lib_5_0", Compile::Debug, CompileEffect::None).unwrap();
/// // resulting blobs are binary data
///
/// // Option D: compile2
/// let pixel_shader = d3dc.compile2(basic_hlsl, (), None, None, "ps_main", "ps_4_0", Compile::Debug, CompileEffect::None, CompileSecdata::None, None).unwrap();
/// let vertex_shader = d3dc.compile2(basic_hlsl, (), None, None, "vs_main", "vs_4_0", Compile::Debug, CompileEffect::None, CompileSecdata::None, None).unwrap();
/// let library = d3dc.compile2(library_hlsl, (), None, None, (), "lib_5_0", Compile::Debug, CompileEffect::None, CompileSecdata::None, None).unwrap();
/// // resulting blobs are binary data
///
/// // TODO: show ID3DInclude usage
/// // TODO: show defines usage
/// // TODO: show effects usage?
/// }
///
/// // TODO: include hlsl in docs (add an xtask directive?)
/// ```
///
/// ### Output
/// ```text
/// pixel_shader
/// ============
/// #line 1 "C:\\local\\thindx0\\target\\pub\\<memory>"
///
///
/// cbuffer ExampleCBuffer {
/// float4 tint ;
/// } ;
///
/// struct Vertex {
/// float4 position : POSITION0 ;
/// float4 color : COLOR0 ;
/// } ;
///
/// struct VsToPs {
/// float4 color : COLOR0 ;
/// float4 position : SV_POSITION ;
/// } ;
///
/// struct Fragment {
/// float4 color : SV_TARGET0 ;
/// } ;
///
/// VsToPs vs_main ( Vertex v ) {
/// VsToPs o ;
/// o . color = v . color * tint ;
/// o . position = v . position ;
/// return o ;
/// }
///
/// Fragment ps_main ( VsToPs i ) {
/// Fragment o ;
/// o . color = i . color ;
/// return o ;
/// }
///
///
/// vertex_shader
/// =============
/// #line 1 "C:\\local\\thindx0\\target\\pub\\thindx\\test\\data\\basic.hlsl"
///
///
/// cbuffer ExampleCBuffer {
/// float4 tint ;
/// } ;
///
/// struct Vertex {
/// float4 position : POSITION0 ;
/// float4 color : COLOR0 ;
/// } ;
///
/// struct VsToPs {
/// float4 color : COLOR0 ;
/// float4 position : SV_POSITION ;
/// } ;
///
/// struct Fragment {
/// float4 color : SV_TARGET0 ;
/// } ;
///
/// VsToPs vs_main ( Vertex v ) {
/// VsToPs o ;
/// o . color = v . color * tint ;
/// o . position = v . position ;
/// return o ;
/// }
///
/// Fragment ps_main ( VsToPs i ) {
/// Fragment o ;
/// o . color = i . color ;
/// return o ;
/// }
///
///
/// library
/// =======
/// #line 1 "C:\\local\\thindx0\\target\\pub\\thindx\\test\\data\\library.hlsl"
///
///
/// cbuffer ExampleCBuffer {
/// float1 scale ;
/// }
///
/// export float4 scale4 ( float4 v ) { return v * scale ; }
///
/// export float4 xyz1 ( float3 v ) { return float4 ( v , 1.0 ) ; }
///
///
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3dcompiler-02-compile
/// ```
pub const d3dcompiler_02_compile : () = ();
/// Use [d3d::Compiler] to create a [d3d11::FunctionLinkingGraph] and create shaders
///
/// ### Source
/// ```no_run
/// use thindx::*;
/// use thindx::d3d::*;
/// use thindx::d3d11::*;
///
/// fn main() {
/// let d3dc = d3d::Compiler::load_system(47).unwrap();
/// let lib_source = b"export float4 xyz1(float3 v) { return float4(v, 1.0); }";
/// let lib_bytecode = d3dc.compile(lib_source, "example.hlsl", None, None, (), "lib_5_0", Compile::OptimizationLevel3, CompileEffect::None).unwrap();
/// let lib = d3dc.load_module(&lib_bytecode).unwrap();
///
///
///
/// // Use FunctionLinkingGraph to create a shader. Note that the fn call order
/// // here is brittle, reordering many of the calls here will cause E::FAIL errors.
///
/// let graph : FunctionLinkingGraph = d3dc.create_function_linking_graph(None).unwrap();
///
/// let input = graph.set_input_signature(&[
/// ParameterDesc::new(cstr!("inputPos"), cstr!("POSITION0"), SVT::Float, SVC::Vector, 1, 3, Interpolation::Linear, PF::In, 0, 0, 0, 0),
/// ParameterDesc::new(cstr!("inputTex"), cstr!("TEXCOORD0"), SVT::Float, SVC::Vector, 1, 2, Interpolation::Linear, PF::In, 0, 0, 0, 0),
/// ParameterDesc::new(cstr!("inputNorm"), cstr!("NORMAL0"), SVT::Float, SVC::Vector, 1, 3, Interpolation::Linear, PF::In, 0, 0, 0, 0),
/// ]).unwrap();
///
/// let xyz1 = graph.call_function("", &lib, "xyz1").unwrap();
///
/// let output = graph.set_output_signature(&[
/// ParameterDesc::new(cstr!("outputTex"), cstr!("TEXCOORD0"), SVT::Float, SVC::Vector, 1, 2, Interpolation::Undefined, PF::Out, 0, 0, 0, 0),
/// ParameterDesc::new(cstr!("outputNorm"), cstr!("NORMAL0"), SVT::Float, SVC::Vector, 1, 3, Interpolation::Undefined, PF::Out, 0, 0, 0, 0),
/// ParameterDesc::new(None, cstr!("SV_POSITION"), SVT::Float, SVC::Vector, 1, 4, Interpolation::Undefined, PF::Out, 0, 0, 0, 0),
/// ]).unwrap();
///
/// // pass input[0] ("inputPos") to "xyz1"s args[0] ("v")
/// // pass xyz1[-1] (return) to output[2] ("outputPos")
/// // pass input[1] ("inputTex") to output[0] ("outputTex")
/// // pass input[2].yx ("inputNorm.yx") to output[1].xy ("outputNorm.xy")
/// graph.pass_value(&input, 0, &xyz1, 0).unwrap();
/// graph.pass_value(&xyz1, -1, &output, 2).unwrap();
/// graph.pass_value(&input, 1, &output, 0).unwrap();
/// graph.pass_value_with_swizzle(&input, 2, "yx", &output, 1, "xy").unwrap();
///
///
/// // Option A: Generate HLSL to process further manually
/// println!("{}", graph.generate_hlsl(()).unwrap().to_utf8_lossy());
///
///
/// // Option B: Link HLSL
/// let (graph_inst, _warnings) = graph.create_module_instance().unwrap();
/// let lib_inst = lib.create_instance("").unwrap();
/// let linker = d3dc.create_linker().unwrap();
/// linker.use_library(&lib_inst).unwrap();
/// let shader = linker.link(&graph_inst, "main", "vs_5_0", None).unwrap();
/// let _shader : &[u8] = shader.as_bytes();
/// }
/// ```
///
/// ### Output
/// ```text
/// float4 xyz1(in float3 v);
///
/// void main(in float3 inputPos : POSITION0, in float2 inputTex : TEXCOORD0, in float3 inputNorm : NORMAL0, out float2 outputTex : TEXCOORD0, out float3 outputNorm : NORMAL0, out float4 __Output_n2_2 : SV_POSITION)
/// {
/// float4 xyz1_n1_0;
/// float3 xyz1_n1_1;
/// xyz1_n1_1 = inputPos;
/// xyz1_n1_0 = ::xyz1(xyz1_n1_1);
/// outputTex = inputTex;
/// outputNorm.xy = inputNorm.yx;
/// __Output_n2_2 = xyz1_n1_0;
/// }
///
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3dcompiler-03-link
/// ```
pub const d3dcompiler_03_link : () = ();
/// Use [d3d::Compiler] to inspect shader bytecode
///
/// ### Source
/// ```no_run
/// use thindx::*;
/// use thindx::d3d::*;
///
/// fn main() {
/// let d3dc = d3d::Compiler::load_system(47).unwrap();
/// let shader = d3dc.compile_from_file(r"thindx\test\data\basic.hlsl", None, None, "vs_main", "vs_4_0", Compile::Debug, CompileEffect::None).unwrap();
/// let _shader = d3dc.reflect::<d3d11::ShaderReflection>(&shader).unwrap();
/// let shader = d3dc.reflect11(&shader).unwrap(); // equivalent shorthand
///
/// let desc = shader.get_desc().unwrap();
/// println!("shader");
/// println!("======");
/// println!(".get_bitwise_instruction_count() == {:?}", shader.get_bitwise_instruction_count());
/// println!(".get_conversion_instruction_count() == {:?}", shader.get_conversion_instruction_count());
/// println!(".get_movc_instruction_count() == {:?}", shader.get_movc_instruction_count());
/// println!(".get_mov_instruction_count() == {:?}", shader.get_mov_instruction_count());
/// println!(".get_gs_input_primitive() == {:?}", shader.get_gs_input_primitive());
/// println!(".get_min_feature_level() == {:?}", shader.get_min_feature_level());
/// println!(".get_num_interface_slots() == {:?}", shader.get_num_interface_slots());
/// println!(".get_requires_flags() == {:?}", shader.get_requires_flags());
/// println!(".get_thread_group_size() == {:?}", shader.get_thread_group_size());
/// println!(".is_sample_frequency_shader() == {:?}", shader.is_sample_frequency_shader());
/// println!(".get_input_parameter_desc(..) = {:#?}", (0..desc.input_parameters ).map(|i| shader.get_input_parameter_desc(i) ).collect::<Vec<_>>());
/// println!(".get_output_parameter_desc(..) = {:#?}", (0..desc.output_parameters ).map(|i| shader.get_output_parameter_desc(i) ).collect::<Vec<_>>());
/// println!(".get_patch_parameter_desc(..) = {:#?}", (0..desc.patch_constant_parameters ).map(|i| shader.get_patch_constant_parameter_desc(i) ).collect::<Vec<_>>());
/// println!(".get_desc() == {:#?}", desc);
///
/// println!();
/// for i in 0..=desc.constant_buffers {
/// println!(".get_constant_buffer_by_index({}).get_desc() = {:?}", i, shader.get_constant_buffer_by_index(i).get_desc());
/// }
///
/// println!();
/// for name in ["ExampleCBuffer", "ExampleCBuffer\0", "NonExistant", ""].iter().copied() {
/// println!(".get_constant_buffer_by_name({:?}).get_desc() = {:?}", name, shader.get_constant_buffer_by_name(name).get_desc());
/// }
///
/// println!();
/// for i in 0..=desc.bound_resources {
/// println!(".get_resource_binding_desc({}) = {:?}", i, shader.get_resource_binding_desc(i));
/// }
///
/// println!();
/// for name in ["ExampleCBuffer", "ExampleCBuffer\0", "NonExistant", ""].iter().copied() {
/// println!(".get_resource_binding_desc_by_name({:?}) = {:?}", name, shader.get_resource_binding_desc_by_name(name));
/// }
///
/// println!();
/// for name in ["tint", "v", "i", "o", "color"].iter().copied() {
/// println!(".get_variable_by_name({:?}) = {:?}", name, shader.get_variable_by_name(name).get_desc());
/// }
/// }
/// ```
///
/// ### Output
/// ```text
/// shader
/// ======
/// .get_bitwise_instruction_count() == 0
/// .get_conversion_instruction_count() == 0
/// .get_movc_instruction_count() == 0
/// .get_mov_instruction_count() == 1
/// .get_gs_input_primitive() == Primitive::Undefined
/// .get_min_feature_level() == Ok(FeatureLevel::_10_0)
/// .get_num_interface_slots() == 0
/// .get_requires_flags() == ShaderRequires::None
/// .get_thread_group_size() == (0, 0, 0)
/// .is_sample_frequency_shader() == false
/// .get_input_parameter_desc(..) = [
/// Ok(
/// SignatureParameterDesc {
/// semantic_name: "POSITION",
/// semantic_index: 0,
/// register: 0,
/// system_value_type: Name::Undefined,
/// component_type: RegisterComponent::Float32,
/// mask: 15,
/// read_write_mask: 15,
/// stream: 0,
/// min_precision: MinPrecision::Default,
/// },
/// ),
/// Ok(
/// SignatureParameterDesc {
/// semantic_name: "COLOR",
/// semantic_index: 0,
/// register: 1,
/// system_value_type: Name::Undefined,
/// component_type: RegisterComponent::Float32,
/// mask: 15,
/// read_write_mask: 15,
/// stream: 0,
/// min_precision: MinPrecision::Default,
/// },
/// ),
/// ]
/// .get_output_parameter_desc(..) = [
/// Ok(
/// SignatureParameterDesc {
/// semantic_name: "COLOR",
/// semantic_index: 0,
/// register: 0,
/// system_value_type: Name::Undefined,
/// component_type: RegisterComponent::Float32,
/// mask: 15,
/// read_write_mask: 0,
/// stream: 0,
/// min_precision: MinPrecision::Default,
/// },
/// ),
/// Ok(
/// SignatureParameterDesc {
/// semantic_name: "SV_POSITION",
/// semantic_index: 0,
/// register: 1,
/// system_value_type: Name::Position,
/// component_type: RegisterComponent::Float32,
/// mask: 15,
/// read_write_mask: 0,
/// stream: 0,
/// min_precision: MinPrecision::Default,
/// },
/// ),
/// ]
/// .get_patch_parameter_desc(..) = []
/// .get_desc() == ShaderDesc {
/// version: vs_4_0,
/// creator: "Microsoft (R) HLSL Shader Compiler 10.1",
/// flags: Compile::{Debug|NoPreshader},
/// constant_buffers: 1,
/// bound_resources: 1,
/// input_parameters: 2,
/// output_parameters: 2,
/// instruction_count: 3,
/// temp_register_count: 0,
/// temp_array_count: 0,
/// def_count: 0,
/// dcl_count: 4,
/// texture_normal_instructions: 0,
/// texture_load_instructions: 0,
/// texture_comp_instructions: 0,
/// texture_bias_instructions: 0,
/// texture_gradient_instructions: 0,
/// float_instruction_count: 1,
/// int_instruction_count: 0,
/// uint_instruction_count: 0,
/// static_flow_control_count: 1,
/// dynamic_flow_control_count: 0,
/// macro_instruction_count: 0,
/// array_instruction_count: 0,
/// cut_instruction_count: 0,
/// emit_instruction_count: 0,
/// gs_output_topology: PrimitiveTopology::Undefined,
/// gs_max_output_vertex_count: 0,
/// input_primitive: Primitive::Undefined,
/// patch_constant_parameters: 0,
/// gs_instance_count: 0,
/// control_points: 0,
/// hs_output_primitive: TessellatorOutput::Undefined,
/// hs_partitioning: TessellatorPartitioning::Undefined,
/// tessellator_domain: TessellatorDomain::Undefined,
/// barrier_instructions: 0,
/// interlocked_instructions: 0,
/// texture_store_instructions: 0,
/// }
///
/// .get_constant_buffer_by_index(0).get_desc() = Ok(ShaderBufferDesc { name: "ExampleCBuffer", ty: CT::CBuffer, variables: 1, size: 16, flags: CBF::None })
/// .get_constant_buffer_by_index(1).get_desc() = Err(MethodError("ID3D11ShaderReflectionConstantBuffer::GetDesc", E_FAIL))
///
/// .get_constant_buffer_by_name("ExampleCBuffer").get_desc() = Ok(ShaderBufferDesc { name: "ExampleCBuffer", ty: CT::CBuffer, variables: 1, size: 16, flags: CBF::None })
/// .get_constant_buffer_by_name("ExampleCBuffer\u{0}").get_desc() = Err(MethodError("ID3D11ShaderReflectionConstantBuffer::GetDesc", E_FAIL))
/// .get_constant_buffer_by_name("NonExistant").get_desc() = Err(MethodError("ID3D11ShaderReflectionConstantBuffer::GetDesc", E_FAIL))
/// .get_constant_buffer_by_name("").get_desc() = Err(MethodError("ID3D11ShaderReflectionConstantBuffer::GetDesc", E_FAIL))
///
/// .get_resource_binding_desc(0) = Ok(ShaderInputBindDesc { name: "ExampleCBuffer", ty: SIT::CBuffer, bind_point: 0, bind_count: 1, flags: SIF::None, return_type: ReturnType(0), dimension: SrvDimension::Unknown, num_samples: 0 })
/// .get_resource_binding_desc(1) = Err(MethodError("ID3D11ShaderReflection::GetResourceBindingDesc", E_INVALIDARG))
///
/// .get_resource_binding_desc_by_name("ExampleCBuffer") = Ok(ShaderInputBindDesc { name: "ExampleCBuffer", ty: SIT::CBuffer, bind_point: 0, bind_count: 1, flags: SIF::None, return_type: ReturnType(0), dimension: SrvDimension::Unknown, num_samples: 0 })
/// .get_resource_binding_desc_by_name("ExampleCBuffer\u{0}") = Err(MethodError("ID3D11ShaderReflection::GetResourceBindingDescByName", E_INVALIDARG))
/// .get_resource_binding_desc_by_name("NonExistant") = Err(MethodError("ID3D11ShaderReflection::GetResourceBindingDescByName", E_INVALIDARG))
/// .get_resource_binding_desc_by_name("") = Err(MethodError("ID3D11ShaderReflection::GetResourceBindingDescByName", E_INVALIDARG))
///
/// .get_variable_by_name("tint") = Ok(ShaderVariableDesc { name: "tint", start_offset: 0, size: 16, flags: SVF::Used, default_value: 0x0, start_texture: 4294967295, texture_size: 0, start_sampler: 4294967295, sampler_size: 0 })
/// .get_variable_by_name("v") = Err(MethodError("ID3D11ShaderReflectionVariable::GetDesc", E_FAIL))
/// .get_variable_by_name("i") = Err(MethodError("ID3D11ShaderReflectionVariable::GetDesc", E_FAIL))
/// .get_variable_by_name("o") = Err(MethodError("ID3D11ShaderReflectionVariable::GetDesc", E_FAIL))
/// .get_variable_by_name("color") = Err(MethodError("ID3D11ShaderReflectionVariable::GetDesc", E_FAIL))
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3dcompiler-04-reflect-shader
/// ```
pub const d3dcompiler_04_reflect_shader : () = ();
/// Use [d3d::Compiler] to inspect shader bytecode
///
/// ### Source
/// ```no_run
/// use thindx::*;
/// use thindx::d3d::*;
///
/// fn main() {
/// let d3dc = d3d::Compiler::load_system(47).unwrap();
/// let library = d3dc.compile_from_file(r"thindx\test\data\library.hlsl", None, None, (), "lib_5_0", Compile::Debug, CompileEffect::None).unwrap();
/// let _library = d3dc.reflect_library::<d3d11::LibraryReflection>(&library).unwrap();
/// let library = d3dc.reflect_library_11(&library).unwrap(); // equivalent shorthand
///
/// println!("library");
/// println!("=======");
/// println!("{:?}\n", library.get_desc().unwrap());
/// for function in library.functions().unwrap() {
/// let desc = function.get_desc().unwrap();
/// println!("{:#?}\n", desc);
/// // TODO: plenty
/// }
/// }
/// ```
///
/// ### Output
/// ```text
/// library
/// =======
/// LibraryDesc { creator: "Microsoft (R) HLSL Shader Compiler 10.1", flags: Compile::None, function_count: 2 }
///
/// FunctionDesc {
/// version: 4293918800,
/// creator: "Microsoft (R) HLSL Shader Compiler 10.1",
/// flags: Compile::{Debug|NoPreshader},
/// constant_buffers: 1,
/// bound_resources: 1,
/// instruction_count: 2,
/// temp_register_count: 0,
/// temp_array_count: 0,
/// def_count: 0,
/// dcl_count: 2,
/// texture_normal_instructions: 0,
/// texture_load_instructions: 0,
/// texture_comp_instructions: 0,
/// texture_bias_instructions: 0,
/// texture_gradient_instructions: 0,
/// float_instruction_count: 1,
/// int_instruction_count: 0,
/// uint_instruction_count: 0,
/// static_flow_control_count: 1,
/// dynamic_flow_control_count: 0,
/// macro_instruction_count: 0,
/// array_instruction_count: 0,
/// mov_instruction_count: 0,
/// movc_instruction_count: 0,
/// conversion_instruction_count: 0,
/// bitwise_instruction_count: 0,
/// min_feature_level: FeatureLevel::_11_0,
/// required_feature_flags: ShaderRequires::None,
/// name: "scale4",
/// function_parameter_count: 1,
/// has_return: true,
/// has_10_level_9_vertex_shader: false,
/// has_10_level_9_pixel_shader: false,
/// }
///
/// FunctionDesc {
/// version: 4293918800,
/// creator: "Microsoft (R) HLSL Shader Compiler 10.1",
/// flags: Compile::{Debug|NoPreshader},
/// constant_buffers: 0,
/// bound_resources: 0,
/// instruction_count: 3,
/// temp_register_count: 0,
/// temp_array_count: 0,
/// def_count: 0,
/// dcl_count: 2,
/// texture_normal_instructions: 0,
/// texture_load_instructions: 0,
/// texture_comp_instructions: 0,
/// texture_bias_instructions: 0,
/// texture_gradient_instructions: 0,
/// float_instruction_count: 0,
/// int_instruction_count: 0,
/// uint_instruction_count: 0,
/// static_flow_control_count: 1,
/// dynamic_flow_control_count: 0,
/// macro_instruction_count: 0,
/// array_instruction_count: 0,
/// mov_instruction_count: 2,
/// movc_instruction_count: 0,
/// conversion_instruction_count: 0,
/// bitwise_instruction_count: 0,
/// min_feature_level: FeatureLevel::_11_0,
/// required_feature_flags: ShaderRequires::None,
/// name: "xyz1",
/// function_parameter_count: 1,
/// has_return: true,
/// has_10_level_9_vertex_shader: false,
/// has_10_level_9_pixel_shader: false,
/// }
///
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example d3dcompiler-05-reflect-library
/// ```
pub const d3dcompiler_05_reflect_library : () = ();
/// Test basic [xinput] APIs
///
/// ### Source
/// ```no_run
/// use std::io::*;
/// use std::ptr::null_mut;
/// use std::time::*;
///
/// use thindx::xinput::{self, *};
/// use winapi::um::objbase::CoInitialize;
///
/// fn main() {
/// unsafe { CoInitialize(null_mut()) };
///
/// 'vks: for vk in [
/// VK::PadA, VK::PadB, VK::PadX, VK::PadY, VK::PadRShoulder, VK::PadLShoulder,
/// VK::PadRTrigger, VK::PadLTrigger, VK::PadDPadUp, VK::PadDPadDown, VK::PadDPadLeft,
/// VK::PadDPadRight, VK::PadStart, VK::PadBack, VK::PadLThumbPress, VK::PadRThumbPress,
/// VK::PadLThumbUp, VK::PadLThumbDown, VK::PadLThumbRight, VK::PadLThumbLeft,
/// VK::PadLThumbUpLeft, VK::PadLThumbUpRight, VK::PadLThumbDownRight,
/// VK::PadLThumbDownLeft, VK::PadRThumbUp, VK::PadRThumbDown, VK::PadRThumbRight,
/// VK::PadRThumbLeft, VK::PadRThumbUpLeft, VK::PadRThumbUpRight, VK::PadRThumbDownRight,
/// VK::PadRThumbDownLeft,
/// ].iter().copied() {
/// print!(" press {:?}... ", vk);
/// let _ = stdout().flush();
///
/// let timeout = Instant::now() + Duration::from_secs(10);
/// while Instant::now() < timeout {
/// match xinput::get_keystroke(User::Any, ()) {
/// Ok(Some(e)) if vk == e.virtual_key => {
/// println!("✔️ pressed");
/// continue 'vks
/// },
/// Ok(Some(_other)) => {},
/// Ok(None) => std::thread::yield_now(),
/// Err(e) => {
/// println!("❌ {:?}", e);
/// continue 'vks
/// },
/// }
/// }
/// println!("⚠️ timeout");
/// }
///
/// 'buttons: for buttons in [
/// Buttons::None,
/// Buttons::A, Buttons::B, Buttons::A | Buttons::B,
/// Buttons::X, Buttons::Y, Buttons::X | Buttons::Y,
/// Buttons::RightShoulder, Buttons::LeftShoulder,
/// Buttons::DPadUp, Buttons::DPadDown, Buttons::DPadLeft, Buttons::DPadRight,
/// Buttons::Start,
/// #[allow(deprecated)] Buttons::Guide,
/// Buttons::Back,
/// Buttons::RightThumb, Buttons::LeftThumb,
/// ].iter().copied() {
/// print!(" press {:?}... ", buttons);
/// let _ = stdout().flush();
///
/// let timeout = Instant::now() + Duration::from_secs(10);
/// while Instant::now() < timeout {
/// for user in xinput::User::iter_valid() {
/// #[allow(deprecated)] match xinput::get_state_ex(user) {
/// Ok(e) if buttons == e.buttons => {
/// println!("✔️ pressed");
/// continue 'buttons
/// },
/// Ok(_other) => {},
/// Err(_err) => {},
/// }
/// }
/// }
/// println!("⚠️ timeout");
/// }
/// }
/// ```
///
/// ### To run this example yourself
/// ```cmd
/// git clone https://github.com/MaulingMonkey/thindx
/// cd thindx
/// cargo run --example xinput-exercise-all
/// ```
pub const xinput_exercise_all : () = ();