From 157770fa2e0d39e3e71e7ff6ce8ab51231a145a6 Mon Sep 17 00:00:00 2001 From: connor rigby Date: Mon, 13 Mar 2017 15:50:01 -0700 Subject: [PATCH] start to bundle arduino firmware with os --- .gitignore | 1 + blah.exs | 35 - .../trackers/configuration_tracker.ex | 17 - lib/celery_script/command.ex | 7 +- lib/configurator/router.ex | 86 +- lib/serial/gcode/parser.ex | 14 +- lib/serial/handler.ex | 21 +- lib/serial/supervisor.ex | 10 +- lib/update_handler.ex | 158 -- priv/configs/default_config.json | 4 +- priv/configs/default_config_rpi.json | 6 +- priv/configs/default_config_rpi2.json | 6 +- priv/configs/default_config_rpi3.json | 6 +- priv/firmware.hex | 2522 +++++++++++++++++ ...428133596421836-disable_ssh_mimgration.exs | 15 + ...4793256888-remove_fw_updates_migration.exs | 7 + ...6999249438-custom_arduino_fw_migration.exs | 7 + test/bot_state/bot_state_test.exs | 4 - web/ts/advanced_settings.tsx | 27 +- web/ts/interfaces.ts | 7 +- web/ts/main.tsx | 18 +- web/ts/state.ts | 12 +- 22 files changed, 2692 insertions(+), 298 deletions(-) delete mode 100644 blah.exs delete mode 100644 lib/update_handler.ex create mode 100644 priv/firmware.hex create mode 100644 priv/migrations/1489428133596421836-disable_ssh_mimgration.exs create mode 100644 priv/migrations/1489428404793256888-remove_fw_updates_migration.exs create mode 100644 priv/migrations/1489430596999249438-custom_arduino_fw_migration.exs diff --git a/.gitignore b/.gitignore index e904e182..95e8e04c 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ _images Makefile release-* dump.rdb +#priv/firmware.hex diff --git a/blah.exs b/blah.exs deleted file mode 100644 index 3bf712a1..00000000 --- a/blah.exs +++ /dev/null @@ -1,35 +0,0 @@ -defmodule F do - require Logger - @path "/tmp/logs.txt" - - def blah(count) when count > 10000 do - print() - end - - def blah(count \\ 0) do - Logger.debug random_number() - blah(count + 1) - end - - def print do - f = case File.stat(@path) do - {:ok, f} -> f - _ -> - seed() - print() - end - if f.size > 52000, do: Logger.warn "File is too big!" - blah = File.read! @path - [rhead | _rest] = String.split(blah, "\r\n") - Logger.debug "File size is: #{f.size}" - Logger.debug "First line is: #{rhead}" - end - - def random_number do - :rand.uniform(:os.system_time) - end - - def seed do - for i <- 0..50, do: Logger.debug "Seeding: #{i}" - end -end diff --git a/lib/bot_state/trackers/configuration_tracker.ex b/lib/bot_state/trackers/configuration_tracker.ex index 8f0407d6..17ec8aa8 100644 --- a/lib/bot_state/trackers/configuration_tracker.ex +++ b/lib/bot_state/trackers/configuration_tracker.ex @@ -14,7 +14,6 @@ defmodule Farmbot.BotState.Configuration do configuration: %{ user_env: %{}, os_auto_update: false, - fw_auto_update: false, steps_per_mm_x: 10, steps_per_mm_y: 10, steps_per_mm_z: 50, @@ -46,7 +45,6 @@ defmodule Farmbot.BotState.Configuration do configuration: %{ user_env: map, os_auto_update: boolean, - fw_auto_update: boolean, steps_per_mm_x: integer, steps_per_mm_y: integer, steps_per_mm_z: integer, @@ -73,7 +71,6 @@ defmodule Farmbot.BotState.Configuration do } {:ok, user_env} = get_config("user_env") {:ok, os_a_u} = get_config("os_auto_update") - {:ok, fw_a_u} = get_config("fw_auto_update") {:ok, spm_x} = get_config("steps_per_mm_x") {:ok, spm_y} = get_config("steps_per_mm_y") {:ok, spm_z} = get_config("steps_per_mm_z") @@ -84,7 +81,6 @@ defmodule Farmbot.BotState.Configuration do %State{initial | configuration: %{ user_env: user_env, os_auto_update: os_a_u, - fw_auto_update: fw_a_u, steps_per_mm_x: spm_x, steps_per_mm_y: spm_y, steps_per_mm_z: spm_z, @@ -110,19 +106,6 @@ defmodule Farmbot.BotState.Configuration do dispatch true, new_state end - def handle_call({:update_config, "fw_auto_update", f_value}, - _from, %State{} = state) do - value = cond do - f_value == 1 -> true - f_value == 0 -> false - is_boolean(f_value) -> f_value - end - new_config = Map.put(state.configuration, :fw_auto_update, value) - new_state = %State{state | configuration: new_config} - put_config("fw_auto_update", value) - dispatch true, new_state - end - def handle_call({:update_config, "steps_per_mm_x", val}, _, state) do config = state.configuration new_config = %{config | steps_per_mm_x: val} diff --git a/lib/celery_script/command.ex b/lib/celery_script/command.ex index 930ccf70..e48645ab 100644 --- a/lib/celery_script/command.ex +++ b/lib/celery_script/command.ex @@ -202,6 +202,9 @@ defmodule Farmbot.CeleryScript.Command do @spec pairs_to_tuples([pair]) :: [tuple] def pairs_to_tuples(config_pairs) do Enum.map(config_pairs, fn(%Ast{} = thing) -> + if thing.args.label == nil do + Logger.error("FINDME: #{inspect config_pairs}") + end {thing.args.label, thing.args.value} end) end @@ -469,8 +472,8 @@ defmodule Farmbot.CeleryScript.Command do def check_updates(%{package: package}, []) do case package do "arduino_firmware" -> - # TODO(Connor): Move this, and its contents somewhere else - Farmbot.Updates.Handler.check_and_download_updates(:fw) + Logger.warn "Arduino Firmware is now coupled to farmbot_os and can't " <> + "updated individually." "farmbot_os" -> Farmbot.System.Updates.check_and_download_updates() diff --git a/lib/configurator/router.ex b/lib/configurator/router.ex index 85943218..d40d77e4 100644 --- a/lib/configurator/router.ex +++ b/lib/configurator/router.ex @@ -11,9 +11,9 @@ defmodule Farmbot.Configurator.Router do # this is so we can serve the bundle.js file. plug Plug.Static, at: "/", from: :farmbot plug Plug.Static, at: "/image", from: "/tmp/images", gzip: false - plug Plug.Parsers, parsers: [:urlencoded, :multipart], length: 111409842 + plug Plug.Parsers, parsers: [:urlencoded, :json], - pass: ["text/*"], + pass: ["*/*"], json_decoder: Poison plug :match plug :dispatch @@ -21,9 +21,7 @@ defmodule Farmbot.Configurator.Router do target = Mix.Project.config[:target] - if Mix.env == :dev do - use Plug.Debugger, otp_app: :farmbot - end + if Mix.env == :dev, do: use Plug.Debugger, otp_app: :farmbot get "/image/latest" do list_images = fn() -> @@ -69,24 +67,23 @@ defmodule Farmbot.Configurator.Router do post "/api/config" do Logger.info ">> router got config json" - {:ok, body, _} = read_body(conn) - rbody = Poison.decode!(body) - # TODO THIS NEEDS SOME HARD CHECKING. PROBABLY IN THE CONFIG STORAGE MODULE - ConfigStorage.replace_config_file(rbody) - conn |> send_resp(200,body) + {:ok, _body, conn} = read_body(conn) + ConfigStorage.replace_config_file(conn.body_params) + conn |> send_resp(200, "OK") end post "/api/config/creds" do Logger.info ">> router got credentials" - {:ok, body, _} = read_body(conn) - %{"email" => email,"pass" => pass,"server" => server} = Poison.decode!(body) + {:ok, _body, conn} = read_body(conn) + + %{"email" => email,"pass" => pass,"server" => server} = conn.body_params Farmbot.Auth.interim(email, pass, server) - conn |> send_resp(200, "ok") + conn |> send_resp(200, "OK") end post "/api/network/scan" do - {:ok, body, _} = read_body(conn) - %{"iface" => iface} = Poison.decode!(body) + {:ok, _body, conn} = read_body(conn) + %{"iface" => iface} = conn.body_params scan = NetMan.scan(iface) case scan do {:error, reason} -> conn |> send_resp(500, "could not scan: #{inspect reason}") @@ -147,6 +144,28 @@ defmodule Farmbot.Configurator.Router do conn |> send_resp(200, json) end + post "/api/flash_firmware" do + "#{:code.priv_dir(:farmbot)}/firmware.hex" |> handle_arduino(conn) + end + + get "/firmware/upload" do + html = ~s""" + + +

+ Upload a FarmbotOS Firmware file (.fw) or a Arduino Firmware file (.hex) +

+
+ + +
+ + + """ + conn |> send_resp(200, html) + end + + plug Plug.Parsers, parsers: [:urlencoded, :multipart], length: 111409842 post "/api/upload_firmware" do {:ok, _body, conn} = Plug.Conn.read_body(conn) upload = conn.body_params["firmware"] @@ -163,13 +182,21 @@ defmodule Farmbot.Configurator.Router do end end + # anything that doesn't match a rest end point gets the index. + match _, do: conn |> send_resp(404, "not found") + + @spec make_html :: binary + defp make_html do + "#{:code.priv_dir(:farmbot)}/static/index.html" |> File.read! + end + defp handle_arduino(file, conn) do errrm = fn(blerp) -> receive do :done -> blerp |> send_resp(200, "OK") {:error, reason} -> - blerp |> send_resp(400, IO.inspect (reason)) + blerp |> send_resp(400, IO.inspect(reason)) end end @@ -191,6 +218,7 @@ defmodule Farmbot.Configurator.Router do errrm.(conn) _ -> Logger.warn "Please only have one serial device when updating firmware" + conn |> send_resp(200, "OK") end end end @@ -209,30 +237,4 @@ defmodule Farmbot.Configurator.Router do else defp handle_os(_file, conn), do: conn |> send_resp(200, "OK") end - - - get "/firmware/upload" do - html = ~s""" - - -

- Upload a FarmbotOS Firmware file (.fw) or a Arduino Firmware file (.hex) -

-
- - -
- - - """ - conn |> send_resp(200, html) - end - - # anything that doesn't match a rest end point gets the index. - match _, do: conn |> send_resp(404, "not found") - - @spec make_html :: binary - defp make_html do - "#{:code.priv_dir(:farmbot)}/static/index.html" |> File.read! - end end diff --git a/lib/serial/gcode/parser.ex b/lib/serial/gcode/parser.ex index d9439d3b..4df0b07b 100644 --- a/lib/serial/gcode/parser.ex +++ b/lib/serial/gcode/parser.ex @@ -160,10 +160,14 @@ defmodule Farmbot.Serial.Gcode.Parser do def parse_param("21"), do: :movement_invert_endpoints_x def parse_param("22"), do: :movement_invert_endpoints_y def parse_param("23"), do: :movement_invert_endpoints_z + def parse_param("25"), do: :movement_enable_endpoints_x + def parse_param("26"), do: :movement_enable_endpoints_y + def parse_param("27"), do: :movement_enable_endpoints_z def parse_param("31"), do: :movement_invert_motor_x def parse_param("32"), do: :movement_invert_motor_y def parse_param("33"), do: :movement_invert_motor_z def parse_param("36"), do: :moevment_secondary_motor_x + def parse_param("37"), do: :movement_secondary_motor_invert_x def parse_param("41"), do: :movement_steps_acc_dec_x def parse_param("42"), do: :movement_steps_acc_dec_y def parse_param("43"), do: :movement_steps_acc_dec_z @@ -217,7 +221,11 @@ defmodule Farmbot.Serial.Gcode.Parser do def parse_param(:movement_invert_motor_x), do: 31 def parse_param(:movement_invert_motor_y), do: 32 def parse_param(:movement_invert_motor_z), do: 33 + def parse_param(:movement_enable_endpoints_x), do: 25 + def parse_param(:movement_enable_endpoints_y), do: 26 + def parse_param(:movement_enable_endpoints_z), do: 27 def parse_param(:moevment_secondary_motor_x), do: 36 + def parse_param(:movement_secondary_motor_invert_x), do: 37 def parse_param(:movement_steps_acc_dec_x), do: 41 def parse_param(:movement_steps_acc_dec_y), do: 42 def parse_param(:movement_steps_acc_dec_z), do: 43 @@ -260,6 +268,10 @@ defmodule Farmbot.Serial.Gcode.Parser do def parse_param(param_string) when is_bitstring(param_string), do: param_string |> String.to_atom |> parse_param - def parse_param(_), do: nil + def parse_param(uhh) do + require Logger + Logger.error("LOOK AT ME IM IMPORTANT: #{inspect uhh}") + nil + end end diff --git a/lib/serial/handler.ex b/lib/serial/handler.ex index 5432e91a..36f1c555 100644 --- a/lib/serial/handler.ex +++ b/lib/serial/handler.ex @@ -127,6 +127,8 @@ defmodule Farmbot.Serial.Handler do state = %{tty: tty, nerves: nerves, queue: :queue.new(), current: nil} {:ok, state} else + Logger.warn "Handshake failed!" + deregister() # if we cant handshake, kill the previous Nerves GenServer.stop(nerves, :normal) :ignore @@ -166,6 +168,7 @@ defmodule Farmbot.Serial.Handler do # Recieved happens before our actual response, just go to the next one # if it exists {:nerves_uart, ^tty, "R01" <> _} -> do_handshake(nerves, tty, handshake) + {:nerves_uart, ^tty, "Command:" <> _} -> do_handshake(nerves, tty, handshake) # This COULD be our handshake. Check it. {:nerves_uart, ^tty, str} -> @@ -196,6 +199,13 @@ defmodule Farmbot.Serial.Handler do @spec update_default(pid) :: :ok | no_return defp update_default(pid) do + deregister() + # Either way, register this pid as the new one. + Process.register(pid, __MODULE__) + end + + @spec deregister :: no_return + defp deregister do # lookup the old default pid old_pid = Process.whereis(__MODULE__) @@ -204,9 +214,6 @@ defmodule Farmbot.Serial.Handler do Logger.debug "Deregistering #{inspect old_pid} from default Serial Handler" Process.unregister(__MODULE__) end - - # Either way, register this pid as the new one. - Process.register(pid, __MODULE__) end def handle_call(:get_state, _, state), do: {:reply, state, state} @@ -371,12 +378,12 @@ defmodule Farmbot.Serial.Handler do end defp handle_gcode({:unhandled_gcode, code}, state) do - Logger.warn ">> got an unhandled gcode! #{code}" + Logger.warn ">> got an misc gcode #{code}" {:noreply, state} end defp handle_gcode(parsed, state) do - Logger.warn "Unhandled GCODE: #{inspect parsed}" + Logger.warn "Unhandled message: #{inspect parsed}" {:noreply, state} end @@ -395,11 +402,13 @@ defmodule Farmbot.Serial.Handler do "-Uflash:w:#{hex_file}:i"] "avrdude" |> System.cmd(params) |> log(pid) + handler = Process.whereis(__MODULE__) + if handler, do: spawn fn() -> GenServer.stop(handler, :normal) end + Farmbot.Serial.Supervisor.open_ttys(Farmbot.Serial.Supervisor, [tty]) end defp log({_, 0}, pid) do Logger.debug "FLASHED FIRMWARE!" - Farmbot.CeleryScript.Command.reboot(%{}, []) send pid, :done end diff --git a/lib/serial/supervisor.ex b/lib/serial/supervisor.ex index a0c6d7cf..d93bba42 100644 --- a/lib/serial/supervisor.ex +++ b/lib/serial/supervisor.ex @@ -29,12 +29,10 @@ defmodule Farmbot.Serial.Supervisor do supervise(children, strategy: :one_for_all) end - @spec open_ttys(atom | pid) :: :ok | no_return - def open_ttys(supervisor) do - UART.enumerate() - |> Map.drop(["ttyS0","ttyAMA0"]) - |> Map.keys - |> try_open(supervisor) + @spec open_ttys(atom | pid, [binary]) :: :ok | no_return + def open_ttys(supervisor, ttys \\ nil) do + blah = ttys || UART.enumerate() |> Map.drop(["ttyS0","ttyAMA0"]) |> Map.keys + blah |> try_open(supervisor) end @spec try_open([binary], atom | pid) :: :ok | no_return diff --git a/lib/update_handler.ex b/lib/update_handler.ex deleted file mode 100644 index 0ed0a643..00000000 --- a/lib/update_handler.ex +++ /dev/null @@ -1,158 +0,0 @@ -defmodule Farmbot.Updates.Handler do - alias Farmbot.Auth - alias Farmbot.BotState - require Logger - #TODO(connor): please refactor this into a target specific module. - - @moduledoc """ - Bunch of stuff to do updates. - """ - - @type update_output - :: {:update, String.t | nil} - | {:error, String.t | atom} - | :no_updates - - @doc """ - Another shortcut for the shorcut - """ - @spec check_and_download_updates(:os | :fw) - :: :ok | {:error, atom} | :no_updates - def check_and_download_updates(something) do - Logger.info ">> Is checking for updates: #{inspect something}" - case check_updates(something) do - {:error, reason} -> - Logger.info """ - >> encountered an error checking for updates: #{inspect reason}. - """ - {:update, url} -> - install_update(something, url) - :no_updates -> - Logger.info(">> is already on the latest operating system version.", - channels: [:toast], type: :success) - end - end - - @spec install_update(:fw, String.t) :: no_return - defp install_update(:fw, url) do - Logger.info ">> found a firmware update!" - File.rm("/tmp/update.hex") - file = Downloader.run(url, "/tmp/update.hex") - Logger.info """ - >> is installing a firmware update. I may act weird for a moment - """, - channels: [:toast] - if Farmbot.Serial.Handler.available? do - GenServer.cast(Farmbot.Serial.Handler, {:update_fw, file, self()}) - receive do - :done -> - Logger.info ">> is done installing a firmware update!", type: :success, - channels: [:toast] - {:error, reason} -> - Logger.error """ - >> encountered an error installing firmware update!: #{inspect reason} - """, - channels: [:toast] - end - else - Logger.debug "doing some magic..." - herp = Nerves.UART.enumerate() - |> Map.drop(["ttyS0","ttyAMA0"]) - |> Map.keys - case herp do - [tty] -> - Logger.debug "magic complete!" - Farmbot.Serial.Handler.flash_firmware(tty, file, self()) - _ -> - Logger.warn "Please only have one serial device when updating firmware" - end - end - - end - - @spec check_updates(any) :: no_return - def check_updates(:fw) do - with {:ok, token} <- Auth.get_token, - do: check_updates( - token.unencoded.fw_update_server, - BotState.get_fw_version, - ".hex") - end - - @doc """ - Uses Github Release api to check for an update. - If there is an update on URL, it returns the asset with the given extension - for said update. - """ - @spec check_updates(String.t, String.t, String.t) :: update_output - def check_updates(url, current_version, extension) do - resp = HTTPoison.get url, ["User-Agent": "FarmbotOLD"] - with {:assets, new_version, assets} <- parse_resp(resp), - true <- is_updates?(current_version, new_version), - do: get_dl_url(assets, extension) - end - - @spec get_dl_url([any,...] | map, String.t) - :: {:update, String.t} | {:error, atom} - defp get_dl_url(assets, extension) - when is_list(assets) do - Enum.find_value(assets, {:error, :no_assets}, - fn asset -> - url = get_dl_url(asset) - if String.contains?(url, extension) do - {:update, url} - else - nil - end - end) - end - - defp get_dl_url(asset) when is_map(asset) do - Map.get(asset, "browser_download_url") - end - - @doc """ - Checks if two strings are the same lol - """ - @spec is_updates?(String.t, String.t) :: :no_updates | true - def is_updates?(current, new) do - if current == new do - :no_updates - else - true - end - end - @doc """ - Parses the httpotion response. - """ - - @spec parse_resp(HTTPoison.Response.t) - :: {:assets, Strint.t, String.t} | {:error, :bad_resp} - def parse_resp( - {:ok, %HTTPoison.Response{ - body: body, - status_code: 200}}) - do - json = Poison.decode!(body) - "v" <> new_version = Map.get(json, "tag_name") - assets = Map.get(json, "assets") - {:assets, new_version, assets} - end - - def parse_resp(_), do: {:error, :bad_resp} - - def do_update_check do - Logger.info ">> is checking for updates." - - # check configuration. - case BotState.get_config(:os_auto_update) do - true -> Farmbot.System.Updates.check_and_download_updates() - _ -> Logger.warn ">> won't check for operating system updates." - end - - case BotState.get_config(:fw_auto_update) do - true -> check_and_download_updates(:fw) - _ -> Logger.warn ">> won't check for firmware updates." - end - end -end diff --git a/priv/configs/default_config.json b/priv/configs/default_config.json index 7124577f..05903bce 100644 --- a/priv/configs/default_config.json +++ b/priv/configs/default_config.json @@ -6,7 +6,6 @@ "configuration": { "user_env": {}, "os_auto_update": false, - "fw_auto_update": false, "first_party_farmware": true, "steps_per_mm_x": 5, "steps_per_mm_y": 5, @@ -16,6 +15,7 @@ "distance_mm_z": 800 }, "hardware": { - "params": {} + "params": {}, + "custom_firmware": false } } diff --git a/priv/configs/default_config_rpi.json b/priv/configs/default_config_rpi.json index ff932df4..e3b256ee 100644 --- a/priv/configs/default_config_rpi.json +++ b/priv/configs/default_config_rpi.json @@ -7,7 +7,7 @@ } }, "ntp": true, - "ssh": true + "ssh": false }, "authorization": { "server": "https://my.farmbot.io" @@ -15,7 +15,6 @@ "configuration": { "user_env": {}, "os_auto_update": false, - "fw_auto_update": false, "first_party_farmware": true, "steps_per_mm_x": 5, "steps_per_mm_y": 5, @@ -25,6 +24,7 @@ "distance_mm_z": 800 }, "hardware": { - "params": {} + "params": {}, + "custom_firmware": false } } diff --git a/priv/configs/default_config_rpi2.json b/priv/configs/default_config_rpi2.json index ff932df4..e3b256ee 100644 --- a/priv/configs/default_config_rpi2.json +++ b/priv/configs/default_config_rpi2.json @@ -7,7 +7,7 @@ } }, "ntp": true, - "ssh": true + "ssh": false }, "authorization": { "server": "https://my.farmbot.io" @@ -15,7 +15,6 @@ "configuration": { "user_env": {}, "os_auto_update": false, - "fw_auto_update": false, "first_party_farmware": true, "steps_per_mm_x": 5, "steps_per_mm_y": 5, @@ -25,6 +24,7 @@ "distance_mm_z": 800 }, "hardware": { - "params": {} + "params": {}, + "custom_firmware": false } } diff --git a/priv/configs/default_config_rpi3.json b/priv/configs/default_config_rpi3.json index b6dd39ff..46fb0d5f 100644 --- a/priv/configs/default_config_rpi3.json +++ b/priv/configs/default_config_rpi3.json @@ -14,7 +14,7 @@ } }, "ntp": true, - "ssh": true + "ssh": false }, "authorization": { "server": "https://my.farmbot.io" @@ -22,7 +22,6 @@ "configuration": { "user_env": {}, "os_auto_update": false, - "fw_auto_update": false, "first_party_farmware": true, "steps_per_mm_x": 5, "steps_per_mm_y": 5, @@ -32,6 +31,7 @@ "distance_mm_z": 800 }, "hardware": { - "params": {} + "params": {}, + "custom_firmware": false } } diff --git a/priv/firmware.hex b/priv/firmware.hex new file mode 100644 index 00000000..e2dd4e7d --- /dev/null +++ b/priv/firmware.hex @@ -0,0 +1,2522 @@ +:100000000C94CB020C94FC020C94FC020C94FC02A9 +:100010000C94FC020C94FC020C94FC020C94FC0268 +:100020000C94FC020C94FC020C94FC020C94FC0258 +:100030000C94FC020C94FC020C94FC020C94FC0248 +:100040000C94FC020C94663A0C94FC020C94FC0296 +:100050000C9465070C94FC020C94FC020C941E3C5E +:100060000C94FC020C9433420C9423430C94FC0239 +:100070000C94FC020C94FC020C94FC020C94FC0208 +:100080000C94943A0C94FC020C94FC020C94FC0228 +:100090000C9467420C9462430C94FC020C94FC0296 +:1000A0000C94FC020C94FC020C94C23A0C94FC02DA +:1000B0000C94FC020C94FC020C94FC020C94F03A9C +:1000C0000C94FC020C94FC020C94FC020C949B42D9 +:1000D0000C94A1430C94FC020C94CF420C94E0438A +:1000E0000C94FC02883B8D3B923B9C3B153CA63B11 +:1000F000AE3BB63BC03BCA3BD43BE33BED3B153C80 +:10010000F73B013C0B3C6F3E723E653E693EA93EAB +:10011000763E7A3E803E843E883E8E3E923E963EBD +:10012000A93E9C3EA03EA43E0C94BA200C94A63B53 +:100130000C94883E0C940D220C94032F0C940243D3 +:100140000C94AE3B0C941E240C9489130C94542EE6 +:100150000C948D3B0C94B4220C94E33B0C94F60A63 +:100160000C94E32E0C94F0330C949E230C946E2488 +:100170000C9440340C9401330C9479090C94AD2206 +:100180000C949A200C945E310C944E240C946A20AA +:100190000C94DE240C948A2C0C94963E0C94B4356A +:1001A0000C94002C0C949C3E0C948E3E0C949F342A +:1001B0000C94742D0C94D43B0C94BA320C943208E9 +:1001C0000C942E310C9459130C94E3090C947A3E40 +:1001D0000C9426350C94A03E0C94B02B0C94A744A0 +:1001E0000C94AC090C94803E0C94D6410C94F73BD3 +:1001F0000C940B3C0C9408330C946A320C949A3295 +:100200000C9443360C94832E0C94042F0C94CE2320 +:100210000C94B32E0C94342E0C94C42D0C94E42224 +:100220000C94A42D0C94302C0C94E9380C94642379 +:100230000C94CF200C9477240C947F310C94E02BF9 +:100240000C94260B0C94042E0C947E240C94693E82 +:100250000C9411390C9494350C94FE240C94A93E02 +:100260000C940A2D0C94653E0C94CB410C943D2DBE +:100270000C9413360C94AB410C94CA3B0C94D71FCE +:100280000C94D6340C94B63B0C94CB070C94BA2C3B +:100290000C942D220C94DC350C94153C0C941423F6 +:1002A0000C9448390C9497230C946F3E0C9484233F +:1002B0000C9445070C9498340C94072F0C9420341C +:1002C0000C94502C0C94D6200C948C1D0C943F3F15 +:1002D0000C94DD210C94A6340C94832C0C949C3B40 +:1002E0000C94843E0C946E250C94923B0C940E2539 +:1002F0000C9407250C94442D0C9434230C94C03397 +:100300000C94D42D0C94611E0C94B3090C94ED3B09 +:100310000C9406210C9402080C947C2E0C94FE2361 +:100320000C947F410C9433200C9490070C948833E8 +:100330000C9436210C94A61E0C94923E0C94B93366 +:100340000C943E250C943A200C942D350C940635D3 +:100350000C94E3350C94AE240C9478340C948F41B7 +:100360000C9429090C94013C0C94460B0C94D20774 +:100370000C9418390C94760B0C9459090C94CD2DCF +:100380000C9468330C94723E0C9434350C94130A1C +:100390000C94A43E0C94883B0C9438330C9478391C +:1003A0000C94763E0C94EA2C0C9415070C94C03BEC +:1003B0000C9464350C947E310000090A02080B0C81 +:1003C0000D0706030401000000000000000000000B +:1003D000000000000000000000000000000000001D +:1003E0000000000011100F000000000000000000DD +:1003F00000000000000000000000000000000102FA +:100400001020200808102040102040800201020126 +:1004100008040201010204081020408080402010DE +:100420000804020180040201804020100804020137 +:10043000080402010102040810204080010204089F +:100440001020408005050505070508080808020278 +:1004500002020A0A0808040404040101010101015E +:1004600001010303030303030303040707070C0C41 +:100470000C0C0C0C0C0C0202020206060606060608 +:1004800006060B0B0B0B0B0B0B0B000020002300C5 +:10049000260029002C002F0032000001000003017B +:1004A0000601090100002200250028002B002E0073 +:1004B0003100340002010000050108010B010000B9 +:1004C0002100240027002A002D0030003300010104 +:1004D0000000040107010A014E414E494E4954599A +:1004E000494E46CDCCCC3D0AD7233C17B7D13877FF +:1004F000CC2B329595E6241FB14F0A000020410015 +:1005000000C84200401C4620BCBE4CCA1B0E5AAE5E +:10051000C59D7400150702082909E309F60A460B70 +:100520005913611E6A200621DD21E4223423CE23E3 +:100530001E24AE243E25B02B002CBA2C742D042E84 +:10054000B32E2E316A323833F0334034D63464352A +:1005500013364839A744450732085909130A260BB0 +:10056000760B8913A61E9A2036210D2214236423AC +:10057000FE234E24DE246E25E02B302CEA2CA42D05 +:10058000342EE32E5E319A326833203478340635C7 +:1005900094354336783911241FBECFEFD1E2DEBF48 +:1005A000CDBF00E00CBF17E0A0E0B2E0E8E1F8E961 +:1005B00000E00BBF02C007900D92A436B107D9F737 +:1005C00024E1A4E6B7E001C01D92AD3DB207E1F71A +:1005D00012E0CBEAD2E000E006C021970109802FAB +:1005E000FE010E94D849CA38D10780E00807A9F760 +:1005F0000E945E460C94FA4B0C9400000E94F8088E +:100600000C945208FB01EE0FFF1FEA59F84F80814E +:10061000918108951F93CF93DF93EB01CC0FDD1FE2 +:10062000BE0180E991E10E949839182FBE016F5FE9 +:100630007F4F80E991E10E949839482F50E060E0B7 +:1006400070E0762F652F542F4427812F90E0840F80 +:10065000951FDF91CF911F9108950F931F93CF9313 +:10066000DF931F92CDB7DEB78B01000F111FB801CA +:1006700080E991E159830E949B39B8016F5F7F4FF8 +:100680005981452F80E991E10E949B3980E090E0FB +:100690000F90DF91CF911F910F91089567347105ED +:1006A00009F49DC10CF09AC06032710509F460C173 +:1006B0000CF047C06531710509F441C10CF56B3090 +:1006C000710509F42EC16CF46115710509F422C19C +:1006D0006130710509F000C2109269071092680735 +:1006E00008956C30710509F423C16D30710509F06E +:1006F000F3C188E790E09093810780938007089585 +:100700006931710509F425C16CF46631710509F48C +:100710001BC16731710509F0DFC110929507109276 +:10072000940708956B31710509F41DC10CF416C1CD +:100730006F31710509F0D0C11092A5071092A4077E +:1007400008956B32710509F429C11CF565327105F4 +:1007500009F418C17CF46132710509F40EC16432E8 +:10076000710509F0B9C181E090E09093AF078093E3 +:10077000AE0708956932710509F409C16A3271053D +:1007800009F0AAC184EF91E09093BB078093BA0768 +:1007900008956533710509F40DC16CF46333710577 +:1007A00009F403C16433710509F096C11092CF07B3 +:1007B0001092CE0708956E33710509F402C16F33AC +:1007C000710509F405C16D33710509F085C182E336 +:1007D00090E09093E1078093E00708956A3C7105EB +:1007E00009F438C10CF049C06F36710509F40FC126 +:1007F0000CF56536710509F400C17CF468347105A7 +:1008000009F4F4C06934710509F066C18CED95E016 +:100810009093F9078093F80708956636710509F4F7 +:10082000F1C06736710509F057C110923508109272 +:10083000340808956937710509F4F7C07CF460370E +:10084000710509F4EBC06137710509F045C18AE013 +:1008500090E0909349088093480808956B3771059C +:1008600009F4F1C00CF4E8C0693C710509F034C129 +:100870001092F9081092F8080895653D710509F481 +:100880000AC11CF56E3C710509F4F2C06CF46B3CB6 +:10089000710509F4E6C06D3C710509F01DC11092A7 +:1008A0000109109200090895633D710509F4E7C03C +:1008B0000CF0EAC06F3C710509F00EC181E090E0D8 +:1008C00090930509809304090895693D710509F421 +:1008D000EEC07CF4673D710509F4E4C0683D710524 +:1008E00009F0FAC08CE390E0909317098093160901 +:1008F00008956E3D710509F4E1C06F3D710509F47D +:10090000E4C06D3D710509F0E7C010922109109215 +:100910002009089581E090E090936707809366072F +:10092000089588E790E090937D0780937C07089571 +:1009300088E790E090937F0780937E070895109258 +:1009400091071092900708951092930710929207C2 +:1009500008951092990710929807089510929B0796 +:1009600010929A07089510929D0710929C0708957F +:100970001092A7071092A60708951092A907109247 +:10098000A80708951092B1071092B007089584EF58 +:1009900091E09093B9078093B807089584EF91E0B0 +:1009A0009093BD078093BC0708951092CD071092D5 +:1009B000CC07089581E090E09093D1078093D00711 +:1009C000089582E390E09093E3078093E20708950F +:1009D00082E390E09093E5078093E40708958CED1F +:1009E00095E09093F5078093F40708958CED95E0DA +:1009F0009093F7078093F6070895109231081092AC +:100A000030080895109233081092320808958AE051 +:100A100090E0909345088093440808958AE090E020 +:100A2000909347088093460808958AE090E0909359 +:100A300059088093580808958AE090E090935B08E5 +:100A400080935A0808958AE090E090935D0880931F +:100A50005C0808958CE390E09093FB088093FA087B +:100A6000089581E090E09093FD088093FC0808953C +:100A70008CE390E09093030980930209089510920B +:100A80000D0910920C0908958CE390E090930F09E2 +:100A900080930E09089581E090E09093110980936E +:100AA000100908951092150910921409089581E013 +:100AB00090E0909319098093180908958CE390E0D1 +:100AC0009093230980932209089581E090E0909308 +:100AD0002509809324090895660F771FFB01EA59C1 +:100AE000F84F1182108208956A3471059CF56734BD +:100AF00071050CF057C062327105BCF46F3171059D +:100B00000CF050C0683171056CF4653171050CF062 +:100B100049C06115710509F445C077FD41C06B50AE +:100B200071093BC06951710938C06C3271054CF4D0 +:100B300069327105BCF5645271096230710580F546 +:100B400031C06333710564F1663371055CF16D5337 +:100B5000710923C06C3C71057CF4693C710514F586 +:100B60006237710534F46F367105E4F46556710926 +:100B700014C06957710911C0663D710534F4633DB5 +:100B8000710584F46D5C710908C0673D710544F01E +:100B90006A3D71053CF06D5D71096330710510F0BF +:100BA00080E0089581E008950F931F93CF93DF9322 +:100BB000EB010E9474058823C1F1FE01EE0FFF1FB7 +:100BC000EA59F84F0081118169E072E085E992E10C +:100BD0000E94B13F63E375E085E992E10E94B13F75 +:100BE0006DE072E085E992E10E94B13F4AE050E099 +:100BF000BE0185E992E10E94804063E375E085E9EA +:100C000092E10E94B13F6FE072E085E992E10E94BB +:100C1000B13F4AE050E0B80185E992E10E9480408E +:100C20000E94342F0E94EE2F06C061E172E085E938 +:100C300092E10E94B13F80E090E0DF91CF911F915F +:100C40000F910895EF92FF920F931F93CF93DF932D +:100C50001F921F92CDB7DEB77C018B0149835A8367 +:100C60000E94740549815A81882361F0F801EE0FD2 +:100C7000FF1FEA59F84F51834083B801C7010E9412 +:100C80002D0306C061E172E085E992E10E94B13F67 +:100C9000C7010E94FE0280E090E00F900F90DF916C +:100CA000CF911F910F91FF90EF9008950F931F9395 +:100CB000CF93DF938C01C0E0D0E0BE01C8010E9459 +:100CC0007405882321F0BE01C8010E94D405219635 +:100CD000CC3281E0D80789F7DF91CF911F910F9136 +:100CE0000895EF92FF920F931F93CF93DF937C01B0 +:100CF00006E617E0C0E0D0E0BE01C7010E9474051F +:100D00008823A1F0BE01C7010E940A03F801918364 +:100D10008083019659F4BE01C7010E944E03F80179 +:100D200040815181BE01C7010E942D0321960E5FB3 +:100D30001F4FCC32F1E0DF07F9F6DF91CF911F9121 +:100D40000F91FF90EF900895EF92FF920F931F93F2 +:100D5000CF93DF937C0106E617E0C0E0D0E0BE0150 +:100D6000C7010E947405882339F0F8014081518140 +:100D7000BE01C7010E942D0321960E5F1F4FC63989 +:100D8000D10569F7DF91CF911F910F91FF90EF90FF +:100D900008950F931F93CF93DF938C01C0E0D0E0B1 +:100DA000BE01C8010E947405882321F0BE01C8015C +:100DB0000E944E032196CC3281E0D80789F7DF915B +:100DC000CF911F910F910895CF93DF93EC0160E0D5 +:100DD00070E00E940A031816190644F0CE010E9422 +:100DE000C906CE01DF91CF910C94A406CE01DF910C +:100DF000CF910C947106CF93DF938091BE099091AF +:100E0000BF09892B59F482E090E00E947B41EC01FC +:100E10000E94E406D093BF09C093BE098091BE0929 +:100E20009091BF09DF91CF91089563E372E081EF64 +:100E300099E00E94E74567E372E08AEE99E00E943C +:100E4000E7456BE372E083EE99E00E94E7456FE3CC +:100E500072E08CED99E00E94E74563E472E085ED75 +:100E600099E00E94E74567E472E08EEC99E00E9409 +:100E7000E7456BE472E087EC99E00E94E7456FE498 +:100E800072E080EC99E00C94E74580EC99E00E94D8 +:100E9000794587EC99E00E9479458EEC99E00E94B3 +:100EA000794585ED99E00E9479458CED99E00E94A5 +:100EB000794583EE99E00E9479458AEE99E00E9497 +:100EC000794581EF99E00C9479451F920F920FB606 +:100ED0000F9211240BB60F922F933F934F935F9372 +:100EE0006F937F938F939F93AF93BF93EF93FF93F2 +:100EF000E091F809F091F9091995FF91EF91BF91EF +:100F0000AF919F918F917F916F915F914F913F91A1 +:100F10002F910F900BBE0F900FBE0F901F90189542 +:100F20008F929F92AF92BF92CF92DF92EF92FF92F9 +:100F3000CF93DF9300D01F92CDB7DEB77B01CB01FB +:100F40000E94D7389B01AC01C70129833A834B83A8 +:100F50005C830E94BC384B015C01C7010E94B3381E +:100F60006B017C010E94330A29813A81A401B601F8 +:100F70000E944D0A80E090E00F900F900F900F902C +:100F8000DF91CF91FF90EF90DF90CF90BF90AF9027 +:100F90009F908F90089520E732E0FC0131832083F9 +:100FA0000C94032FCF93DF93EC010E94CB07CE016B +:100FB000DF91CF910C947D41CF93DF93EC010E94A0 +:100FC000092F80E792E099838883DF91CF9108957C +:100FD000CF93DF938091FD099091FE09892B59F4FD +:100FE00082E090E00E947B41EC010E94DC07D093FC +:100FF000FE09C093FD098091FD099091FE09DF91E2 +:10100000CF91089563E372E080E39AE00E94E745A0 +:1010100067E372E089E29AE00E94E7456BE372E0E1 +:1010200082E29AE00E94E7456FE372E08BE19AE08A +:101030000E94E74563E472E084E19AE00E94E7459C +:1010400067E472E08DE09AE00E94E7456BE472E0AD +:1010500086E09AE00E94E7456FE472E08FEF99E046 +:101060000C94E7458FEF99E00E94794586E09AE07D +:101070000E9479458DE09AE00E94794584E19AE0EA +:101080000E9479458BE19AE00E94794582E29AE0DC +:101090000E94794589E29AE00E94794580E39AE0CE +:1010A0000C947945CF93DF93EC012AEC30E04BECC4 +:1010B00050E069EC70E00E945A212EEC30E04FECD9 +:1010C00050E06DEC70E0CE010C960E945A2124EDA8 +:1010D00030E045ED50E063ED70E0CE0148960E94AF +:1010E0005A2128ED30E049ED50E067ED70E0CE0187 +:1010F00084960E945A212EED30E04FED50E06DEDC8 +:1011000070E0CE01C096DF91CF910C945A21CF921E +:10111000DF92EF92FF920F931F93CF93DF93CDB7A0 +:10112000DEB72C970FB6F894DEBF0FBECDBF8C0193 +:101130007C016C018CE3C80ED11CC7010E945621B2 +:101140008CE0E80EF11CEC14FD04B9F7CE01019619 +:101150000E9456218CE0FE013196D80101900D923B +:101160008A95E1F7CE0101960E9456218CE0FE019E +:101170003196D8011C9601900D928A95E1F7CE0127 +:1011800001960E9456218CE0FE013196D8015896B6 +:1011900001900D928A95E1F7CE0101960E945621A9 +:1011A0008CE0FE013196D801949601900D928A95BB +:1011B000E1F7CE0101960E9456218CE0FE013196A6 +:1011C000D801D09601900D928A95E1F7C8010E944E +:1011D00052082C960FB6F894DEBF0FBECDBFDF913C +:1011E000CF911F910F91FF90EF90DF90CF900895D6 +:1011F000CF93DF938091370A9091380A892B59F465 +:101200008CE390E00E947B41EC010E948708D09320 +:10121000380AC093370A8091370A9091380ADF91D3 +:10122000CF910895CF93DF93EC010E949C21CE01D2 +:101230000C960E949C21CE0148960E949C21CE01D2 +:1012400084960E949C21CE01C096DF91CF910C9490 +:101250009C2163E372E08AE69AE00E94E74567E337 +:1012600072E083E69AE00E94E7456BE372E08CE56A +:101270009AE00E94E7456FE372E085E59AE00E94FC +:10128000E74563E472E08EE49AE00E94E74567E494 +:1012900072E087E49AE00E94E7456BE472E080E444 +:1012A0009AE00E94E7456FE472E089E39AE00C94CB +:1012B000E74589E39AE00E94794580E49AE00E943C +:1012C000794587E49AE00E9479458EE49AE00E948D +:1012D000794585E59AE00E9479458CE59AE00E947F +:1012E000794583E69AE00E9479458AE69AE00C9473 +:1012F00079458F929F92AF92BF92CF92DF92EF92F9 +:10130000FF920F931F930E94FB1221E02F931F92D5 +:101310001F921F921F92812C912CA12CB12CC12CB9 +:10132000D12C760100E010E0980140E050E0BA01D5 +:101330000E94A9130F900F900F900F900F9080E0D4 +:1013400090E01F910F91FF90EF90DF90CF90BF90B2 +:10135000AF909F908F9008952AE732E0FC0131838F +:1013600020830C94032FCF93DF93EC010E94AC09F0 +:10137000CE01DF91CF910C947D41CF93DF93EC01AF +:101380000E94092F8AE792E099838883DF91CF91A9 +:101390000895CF93DF938091710A9091720A892BFF +:1013A00059F482E090E00E947B41EC010E94BD096B +:1013B000D093720AC093710A8091710A9091720A57 +:1013C000DF91CF91089563E372E084EA9AE00E948E +:1013D000E74567E372E08DE99AE00E94E7456BE339 +:1013E00072E086E99AE00E94E7456FE372E08FE8D9 +:1013F0009AE00E94E74563E472E088E89AE00E9480 +:10140000E74567E472E081E89AE00E94E7456BE413 +:1014100072E08AE79AE00E94E7456FE472E083E7B2 +:101420009AE00C94E74583E79AE00E9479458AE7C1 +:101430009AE00E94794581E89AE00E94794588E81F +:101440009AE00E9479458FE89AE00E94794586E902 +:101450009AE00E9479458DE99AE00E94794584EAF4 +:101460009AE00C9479458091AB0A9091AC0A892B53 +:1014700041F481E090E00E947B419093AC0A80931C +:10148000AB0A8091AB0A9091AC0A0895862F642F25 +:101490000E94AA3E80E090E00895862F642F2115D7 +:1014A000310519F40E94E63E06C02130310531F4C1 +:1014B000752F0E945F3B80E090E0089581E090E00E +:1014C0000895EF92FF920F931F93CF93DF93162F00 +:1014D000072F7A014115510549F4862F0E94163FC6 +:1014E000D1E0C0E0019769F0D0E00BC04130510578 +:1014F00031F4862F0E943A3BD82FC92F02C0D0E08A +:10150000C0E082E0E816F104A8F560E872E085E941 +:1015100092E10E94B13F63E375E085E992E10E94A8 +:10152000B13F6DE072E085E992E10E94B13F4AE08F +:1015300050E0612F702F85E992E10E94804063E3C3 +:1015400075E085E992E10E94B13F6FE072E085E9C4 +:1015500092E10E94B13F4AE050E06D2F7C2F85E977 +:1015600092E10E9480400E94342F0E94EE2F80E082 +:1015700090E002C081E090E0DF91CF911F910F9148 +:10158000FF90EF9008954F925F926F927F928F92AB +:101590009F92AF92BF92CF92DF92EF92FF920F9302 +:1015A0001F93CF93DF93EC015B01490196010E94E9 +:1015B0004D0AC801B7010E94993C9601A401B501EA +:1015C000CE010E944D0A80E090E0DF91CF911F9103 +:1015D0000F91FF90EF90DF90CF90BF90AF909F90D2 +:1015E0008F907F906F905F904F90089563E372E0CB +:1015F0008EED9AE00E94E74567E372E087ED9AE09E +:101600000E94E7456BE372E080ED9AE00E94E745B7 +:101610006FE372E089EC9AE00E94E74563E472E0D0 +:1016200082EC9AE00E94E74567E472E08BEB9AE077 +:101630000E94E7456BE472E084EB9AE00E94E74584 +:101640006FE472E08DEA9AE00C94E7458DEA9AE047 +:101650000E94794584EB9AE00E9479458BEB9AE0F1 +:101660000E94794582EC9AE00E94794589EC9AE0E3 +:101670000E94794580ED9AE00E94794587ED9AE0D5 +:101680000E9479458EED9AE00C94794563E372E00F +:1016900086E19BE00E94E74567E372E08FE09BE014 +:1016A0000E94E7456BE372E088E09BE00E94E7451B +:1016B0006FE372E081E09BE00E94E74563E472E043 +:1016C0008AEF9AE00E94E74567E472E083EF9AE0D0 +:1016D0000E94E7456BE472E08CEE9AE00E94E745D9 +:1016E0006FE472E085EE9AE00C94E74585EE9AE0AF +:1016F0000E9479458CEE9AE00E94794583EF9AE04A +:101700000E9479458AEF9AE00E94794581E09BE04A +:101710000E94794588E09BE00E9479458FE09BE03C +:101720000E94794586E19BE00C9479450F931F93C5 +:10173000CF93DF938B01EA0164E37BE085E992E1DB +:101740000E947C3F63E375E085E992E10E94B13F2E +:10175000F801608185E992E10E94B33F4AE050E0E0 +:10176000BE0185E992E10E9480400E94342FDF9102 +:10177000CF911F910F910C94EE2F0F931F93CF9346 +:10178000DF938B01EA016DE27BE085E992E10E9443 +:101790007C3F63E375E085E992E10E94B13FF80187 +:1017A000608185E992E10E94B33F4AE050E0BE01CA +:1017B00085E992E10E9480400E94342FDF91CF9111 +:1017C0001F910F910C94EE2FCF92DF92EF92FF9228 +:1017D0000F931F93CF93DF937C018B016A01CB01A1 +:1017E0000E949C2B882319F0C2E0D0E002C0C0E028 +:1017F000D0E0C8010E94A62B882311F0C3E0D0E0FE +:10180000C8010E94A12B882311F0C4E0D0E0C801D8 +:101810000E94AB2B882311F0C6E0D0E0F601808156 +:1018200091818C179D0721F091E01C161D060CF08C +:1018300090E0F601D183C083992369F0AE01B7012E +:10184000C701DF91CF911F910F91FF90EF90DF9033 +:10185000CF900C94960BDF91CF911F910F91FF9039 +:10186000EF90DF90CF90089508954F925F926F921E +:101870007F92AF92BF92CF92DF92EF92FF920F933F +:101880001F93CF93DF93F6018081882309F4B9C0B9 +:1018900059016A01EB01CB010E94882B882309F4CE +:1018A000B0C0F501408051806280738020E030E05C +:1018B000A901C301B2010E942049181674F4F7016E +:1018C0002081318142815381C301B2010E9454477A +:1018D000F5016083718382839383CE010E94972BED +:1018E000811106C0CE010E94972B811188C00EC0C5 +:1018F000F8014080518062807380CE010E94762B77 +:1019000046165706680679067CF4ECCFF80140804D +:10191000518062807380CE010E94762B641575051C +:10192000860597050CF46BC0FF24F394CE010E944A +:10193000762B2B013C01C6010E94B830461A570A8B +:10194000680A790A14141504160417049CF4CE01CD +:101950000E94762B2B013C01C6010E94B830461A2A +:10196000570A680A790AF3E04F16510461047104BA +:10197000ACF412C0C6010E94B8302B013C01CE016C +:101980000E94762B461A570A680A790A83E048169D +:1019900051046104710414F4FF20C1F0C6010E94D7 +:1019A000B830AB01BC01CE010E947C2B20E030E0BE +:1019B00040E85FE3F50160817181828193810E943B +:1019C0005547F5016083718382839383CE010E9422 +:1019D000762BF8016083718382839383CE01DF913C +:1019E000CF911F910F91FF90EF90DF90CF90BF901C +:1019F000AF907F906F905F904F900C948D2BF12C57 +:101A000095CFDF91CF911F910F91FF90EF90DF90D5 +:101A1000CF90BF90AF907F906F905F904F90089560 +:101A20002F923F924F925F926F927F928F929F92EE +:101A3000AF92BF92CF92DF92EF92FF920F931F93DC +:101A4000CF93DF93EC011C0186EE281A8EEF380A43 +:101A5000C1010E94E4303E018AED681A8EEF780AD7 +:101A6000C3010E94E4305E018EECA81A8EEFB80A22 +:101A7000C5010E94E430CE010E94342B4E018EE558 +:101A8000880E911CC4010E94342B2E018CEB480E51 +:101A9000511CC2010E94342B6E018DE4C81A8EEFD6 +:101AA000D80A7E0189E5E81A8EEFF80A8E010B56F6 +:101AB0001E4F9E0127573E4FA101BE01CE010E943D +:101AC000350C6E018CE4C81A8EEFD80A7E0185E5CC +:101AD000E81A8EEFF80A0C5F1F4F9E0123573E4F06 +:101AE000A301B401CE010E94350C6E018BE4C81A2B +:101AF0008EEFD80A7E0181E5E81A8EEFF80A0C5FB6 +:101B00001F4F9E012F563E4FA501B201CE010E94EC +:101B1000350CDF91CF911F910F91FF90EF90DF90E7 +:101B2000CF90BF90AF909F908F907F906F905F907D +:101B30004F903F902F9008952F923F924F925F9237 +:101B40006F927F928F929F92AF92BF92CF92DF92CD +:101B5000EF92FF920F931F93CF93DF9300D01F92CA +:101B6000CDB7DEB79C838B830E94FB0663E370E0F6 +:101B70000E9402036B807C8029EB621A2EEF720AAE +:101B800021E0892B09F420E0F30120830E94FB0669 +:101B900064E370E00E9402032B803C80F8EB2F1A74 +:101BA000FEEF3F0A21E0892B09F420E0F1012083B8 +:101BB0000E94FB0665E370E00E940203EB81FC815A +:101BC000E75BFE4F21E0892B09F420E020830E948F +:101BD000FB0667E470E00E940203EB81FC81E65B98 +:101BE000FE4F092E000CAA0BBB0B80839183A283AE +:101BF000B3830E94FB0668E470E00E940203EB815D +:101C0000FC81E25BFE4F092E000CAA0BBB0B80830C +:101C10009183A283B3830E94FB0669E470E00E9473 +:101C20000203EB81FC81EE5AFE4F092E000CAA0B39 +:101C3000BB0B80839183A283B3830E94FB066DE379 +:101C400070E00E940203EB81FC81EA5AFE4F092EEC +:101C5000000CAA0BBB0B80839183A283B3830E94E9 +:101C6000FB066EE370E00E940203EB81FC81E65A02 +:101C7000FE4F092E000CAA0BBB0B80839183A2831D +:101C8000B3830E94FB066FE370E00E940203EB81C6 +:101C9000FC81E25AFE4F092E000CAA0BBB0B80837D +:101CA0009183A283B3830E94FB0669E270E00E94E5 +:101CB0000203EB81FC81EE59FE4F092E000CAA0BAA +:101CC000BB0B80839183A283B3830E94FB066AE2ED +:101CD00070E00E940203EB81FC81EA59FE4F092E5D +:101CE000000CAA0BBB0B80839183A283B3830E9459 +:101CF000FB066BE270E00E940203EB81FC81E65977 +:101D0000FE4F092E000CAA0BBB0B80839183A2838C +:101D1000B3830E94FB066FE170E00E940203EB8137 +:101D2000FC81E259FE4F21E0892B09F420E0208359 +:101D30000E94FB0660E270E00E940203EB81FC81DE +:101D4000E159FE4F21E0892B09F420E020830E9415 +:101D5000FB0661E270E00E940203EB81FC81E05926 +:101D6000FE4F21E0892B09F420E020830E94FB062E +:101D700065E170E00E940203EB81FC81E958FE4FAF +:101D800021E0892B09F420E020830E94FB0666E114 +:101D900070E00E940203EB81FC81E858FE4F21E0D5 +:101DA000892B09F420E020830E94FB0667E170E0A4 +:101DB0000E940203EB81FC81E758FE4F21E0892B52 +:101DC00009F420E020830E94FB0669E170E00E9494 +:101DD0000203EB81FC81E658FE4F21E0019709F0F8 +:101DE00020E020830E94FB066AE170E00E9402036B +:101DF000EB81FC81E558FE4F21E0019709F020E0DE +:101E000020830E94FB066BE170E00E940203EB81DD +:101E1000FC81E458FE4F21E0019709F020E0208387 +:101E20000E94FB066BE070E00E9402030B811C81A4 +:101E300003581E4F092E000CAA0BBB0BF801808320 +:101E40009183A283B3830E94FB066BE070E00E9443 +:101E50000203EB81FC81EF57FE4F092E000CAA0B09 +:101E6000BB0B80839183A283B3830E94FB066BE04C +:101E700070E00E940203EB81FC81EB57FE4F092EBC +:101E8000000CAA0BBB0B80839183A283B3830E94B7 +:101E9000FB0665E270E00E940203EB81FC81EF58D3 +:101EA000FE4F21E0019709F020E02083EB81FC81C7 +:101EB000EE58FE4F1082EB81FC81ED58FE4F1082F0 +:101EC0000E94FB0664E270E00E940203A1E0019719 +:101ED00009F0A0E0EB81FC81EC58FE4FA0834B8021 +:101EE0005C80FBE84F1AFEEF5F0AF20110828B81E3 +:101EF0009C818A589E4F9A838983FC011082F80145 +:101F000080809180A280B380EB81FC81EE59FE4FEE +:101F1000C080D180E280F380EB81FC81EA5AFE4FE1 +:101F20000081118122813381EB81FC81E65BFE4FD0 +:101F30004081518162817381EB81FC81E658FE4FC3 +:101F400080818F93EB81FC81EF58FE4F80818F93CE +:101F5000AF931F921F921F92F4E6FF93EB81FC81D7 +:101F6000E958FE4F80818F93EB81FC81E259FE4F4F +:101F700080818F93F30180818F938B819C810E945C +:101F80008328EB81FC81EF57FE4F80809180A280F7 +:101F9000B380EB81FC81EA59FE4FC080D180E280A2 +:101FA000F380EB81FC81E65AFE4F00811181228192 +:101FB0003381EB81FC81E25BFE4F40815181628184 +:101FC0007381EB81FC81E558FE4F80818F93EB811B +:101FD000FC81EE58FE4F80818F93F20180818F93B8 +:101FE0001F921F921F92F4E6FF93EB81FC81E85849 +:101FF000FE4F80818F93EB81FC81E159FE4F808100 +:102000008F93F10180818F938B819C81825A9F4FA6 +:102010000E948328EB81FC81EB57FE4F80809180EA +:10202000A280B380EB81FC81E659FE4FC080D18055 +:10203000E280F380EB81FC81E25AFE4F0081118146 +:1020400022813381EB81FC81EE5AFE4F4081518128 +:1020500062817381EB81FC81E458FE4F80818F9314 +:10206000EB81FC81ED58FE4F80818F93E981FA81ED +:1020700080818F931F921F921F92F4E6FF93EB8152 +:10208000FC81E758FE4F80818F93EB81FC81E05902 +:10209000FE4F80818F93EB81FC81E75BFE4F808157 +:1020A0008F938B819C8184549F4F0E9483280FB60D +:1020B000F894DEBF0FBECDBF0F900F900F900F9022 +:1020C000DF91CF911F910F91FF90EF90DF90CF9014 +:1020D000BF90AF909F908F907F906F905F904F9048 +:1020E0003F902F9008952F923F924F925F926F9260 +:1020F0007F928F929F92AF92BF92CF92DF92EF9298 +:10210000FF920F931F93CF93DF93EC010E94FB0686 +:102110006FE670E00E940203FE01EF55FE4F9183CF +:1021200080830E94FB0660E770E00E940203FE01CC +:10213000ED55FE4F918380830E94FB0661E770E0BE +:102140000E940203FE01EB55FE4F918380830E94A3 +:10215000FB0669E770E00E9402031E0129E5221ACE +:102160002EEF320ABC01990F880B990B0E94704820 +:10217000F10160837183828393830E94FB066AE787 +:1021800070E00E9402038E0105551E4FBC01990F9D +:10219000880B990B0E947048F801608371838283D9 +:1021A00093830E94FB066BE770E00E9402033C01F0 +:1021B00020E030E048EC52E4F101608171818281DD +:1021C00093810E94C6474B015C0120E030E048EC5F +:1021D00052E4F80160817181828193810E94C64737 +:1021E0006B017C01B301770C880B990B0E9470483E +:1021F00020E030E048EC52E40E94C6472B013C014D +:102200002AE037ED43E25CE3C501B4010E942049B6 +:1022100018168CF420E030E046EC52E4C501B4011D +:102220000E94C14787FD0FC0812C912C46ECA42E43 +:1022300042E4B42E08C05AE0852E57ED952E53E2A5 +:10224000A52E5CE3B52EF10180829182A282B38239 +:102250002AE037ED43E25CE3C701B6010E94204962 +:1022600018168CF420E030E046EC52E4C701B601C9 +:102270000E94C14787FD0FC0C12CD12C26ECE22E55 +:1022800022E4F22E08C03AE0C32E37EDD32E33E21B +:10229000E32E3CE3F32EF801C082D182E282F38286 +:1022A0002AE037ED43E25CE3C301B2010E9420491A +:1022B00018168CF420E030E046EC52E4C301B20181 +:1022C0000E94C14787FD0FC0412C512C86EC682E1F +:1022D00082E4782E08C09AE0492E97ED592E93E2B9 +:1022E000692E9CE3792EFE01E155FE4F408251821A +:1022F000628273820E94FB0665E670E00E94020320 +:10230000FE01ED54FE4F019719F481E0808301C076 +:1023100010820E94FB0666E670E00E940203FE0146 +:10232000EC54FE4F019719F481E0808301C01082C4 +:102330000E94FB0667E670E00E940203CB54DE4F6A +:10234000019719F481E0888301C01882DF91CF9151 +:102350001F910F91FF90EF90DF90CF90BF90AF90C3 +:102360009F908F907F906F905F904F903F902F90B5 +:1023700008952F923F924F925F926F927F928F9229 +:102380009F92AF92BF92CF92DF92EF92FF920F9304 +:102390001F93CF93DF93CDB7DEB7C656D1090FB6E3 +:1023A000F894DEBF0FBECDBF3C010E948E252301F5 +:1023B0008EE5480E511CC2010E948E2513019CEB34 +:1023C000290E311CC1010E948E25F301E65EFE4FED +:1023D000A196FFAFEEAFA197CF010E94A830C30135 +:1023E0008A5D9E4FA3969FAF8EAFA3970E94A830A1 +:1023F000F301EE5CFE4FA596FFAFEEAFA597CF01C0 +:102400000E94A830C3018A549E4FA7969FAF8EAFFB +:10241000A797FC011082BD9710821182128213824D +:1024200034961082118212821382349610821182A5 +:1024300012821382CE0101960E948E258EE5FE0146 +:102440003196D30101900D928A95E1F7CE01019664 +:102450000E948E258EE5FE013196D20101900D92EB +:102460008A95E1F7CE0101960E948E258EE5FE0148 +:102470003196D10101900D928A95E1F788E5F3013B +:10248000808389E5F20180838AE5F101808388E118 +:10249000882E912C9CE1A92EB12C2AE1C22ED12CA0 +:1024A00032E0E32EF12C03E010E026E230E047E3D7 +:1024B00050E066E370E0C3010E945728812C912C04 +:1024C000A12CB12CC12CD12C4FE0E42EF12C0EE02C +:1024D00010E028E330E04DE350E06CE370E0C2012F +:1024E0000E94572853E1E52EF12C02E110E02EE383 +:1024F00030E040E350E06EE270E0C1010E945728F6 +:10250000F301EF5BFE4F118210823296118210822E +:10251000329611821082C3010E949C0DC3010E9459 +:102520007310CE0101960E94A8308CE0FE01319616 +:10253000A196AEADBFADA19701900D928A95E1F73E +:10254000CE0101960E94A8308CE0FE013196A39640 +:10255000AEADBFADA39701900D928A95E1F7CE0184 +:1025600001960E94A8308CE0FE013196A596AEAD92 +:10257000BFADA59701900D928A95E1F741E150E03A +:1025800060E170E0A1968EAD9FADA1970E94D4301E +:1025900049E150E067E170E0A3968EAD9FADA3974F +:1025A0000E94D4304DE150E06BE170E0A5968EAD15 +:1025B0009FADA5970E94D430A796EEADFFADA7972B +:1025C0001082CA59DF4F0FB6F894DEBF0FBECDBFE1 +:1025D000DF91CF911F910F91FF90EF90DF90CF90FF +:1025E000BF90AF909F908F907F906F905F904F9033 +:1025F0003F902F900895CF93DF9380911D0B909182 +:102600001E0B892B59F487EB91E00E947B41EC0172 +:102610000E94B911D0931E0BC0931D0B80911D0B0E +:1026200090911E0BDF91CF910895CF93DF93EC0132 +:10263000FC01EA54FE4F81E08083CE010E94F32822 +:10264000CE01825A9F4F0E94F328CE0184549F4F9F +:102650000E94F32864E670E080E090E0DF91CF9183 +:102660000C94993CCF93DF93EC01FC01EA54FE4FAC +:1026700010820E940829CE01825A9F4F0E94082989 +:10268000CE0184549F4F0E94082964E670E080E0E8 +:1026900090E0DF91CF910C94993C0E94342F0C94E0 +:1026A00052300E94342F0C9408300E94342F0C9426 +:1026B000842F63E372E080E59BE00E94E74567E3D7 +:1026C00072E089E49BE00E94E7456BE372E082E4FC +:1026D0009BE00E94E7456FE372E08BE39BE00E9482 +:1026E000E74563E472E084E39BE00E94E74567E42A +:1026F00072E08DE29BE00E94E7456BE472E086E2C7 +:102700009BE00E94E7456FE472E08FE19BE00C9450 +:10271000E7458FE19BE00E94794586E29BE00E94BD +:1027200079458DE29BE00E94794584E39BE00E941D +:1027300079458BE39BE00E94794582E49BE00E940F +:10274000794589E49BE00E94794580E59BE00C9403 +:1027500079452F923F924F925F926F927F928F9224 +:102760009F92AF92BF92CF92DF92EF92FF920F9320 +:102770001F93CF93DF93CDB7DEB7E4970FB6F894EE +:10278000DEBF0FBECDBF1C014D875E876F87788B84 +:10279000098B1A8B2B8B3C8BCD8ADE8AEF8AF88EC5 +:1027A0002C960EAD1FAD2C970E94683C2B013C016E +:1027B000C1010E949C0DC1010E947310A114B104BB +:1027C00099F0C501A0E0B0E0F101E65BFE4F408169 +:1027D00051816281738184179507A607B70724F496 +:1027E00080839183A283B3838114910491F0A12CFF +:1027F000B12CF101E25BFE4F80819181A281B38116 +:1028000088169906AA06BB0624F480829182A282C9 +:10281000B3820115110591F020E030E0F101EE5A8C +:10282000FE4F80819181A281B381081719072A0781 +:102830003B0724F40083118322833383F101E65B99 +:10284000FE4F4081518162817381C1010E94822BC0 +:1028500041012EE5820E911CF101E25BFE4F4081A9 +:10286000518162817381C4010E94822B51013CEB32 +:10287000A30EB11CF101EE5AFE4F408151816281DD +:102880007381C5010E94822B0E94342F0E944E2F1B +:102890000E94342F0E94572F0E94342F0E94602FD5 +:1028A0000E94342F0E944E2F69837A838B839C83EE +:1028B0000E94342F0E94572F6D837E838F839887C9 +:1028C0000E94342F0E94602F69877A878B879C87AC +:1028D000610187E7C81A8EEFD80AD6011D921D92B2 +:1028E0001D921C921397F101E357FE4FFA8FE98F67 +:1028F0001082118212821382349610821182128207 +:102900001382349689819A81AB81BC8180839183C3 +:10291000A283B38334968D819E81AF81B8858083F5 +:102920009183A283B383349689859A85AB85BC85D0 +:1029300080839183A283B3832D96EFAC2D970D8571 +:102940001E852F85388949815A816B817C81C1011F +:102950000E94C3282E96EFAC2E9709891A892B89DD +:102960003C894D815E816F817885C4010E94C328B6 +:102970002F96EFAC2F970D891E892F89388D4985A9 +:102980005A856B857C85C5010E94C328D1011196AB +:102990001C92F101E15AFF4F1082E25AFF4F108260 +:1029A000C1010E945513C1010E944D13C1010E9433 +:1029B0005029C4010E945029C5010E945029F101EB +:1029C000EF5BFE4FFE83ED8381E090E09183808397 +:1029D0007101FDEBEF1AFEEFFF0AD7018D939C9377 +:1029E00081010B5B1E4FF8019183808341E050E031 +:1029F000B101C1010E94960BD7014D915C91B401C8 +:102A0000C1010E94960BF80140815181B501C101BD +:102A10000E94960BC1010E9415139101225C3E4F4A +:102A20003E872D8781E0D9018C93F101E15CFE4F57 +:102A3000FA8BE98B80832E5F3F4F3E8B2D8BD90124 +:102A40008C93C1010E94E029C4010E94E029C501C4 +:102A50000E94E0291A8219821B8E1C8E1D8E1E8EEA +:102A6000ED85FE85FCA3EBA3FA86E98629893A89E0 +:102A70003EA32DA38D899E8998A78FA39D8199AB95 +:102A8000AE81AAAB0BAB1CABDEA6CDA6F101EF5518 +:102A9000FE4FF8ABEFA70B521109ABA1BCA18C9173 +:102AA000882309F49FC249A95AA9B101C1010E9412 +:102AB000E40B49855A85B401C1010E94E40B4BA97E +:102AC0005CA9B501C1010E94E40B61E070E080E007 +:102AD00090E00E94993CAFA5B8A96D917C91072E1A +:102AE000000C880B990B0E9470489B01AC01EDA56E +:102AF000FEA560817181828193810E942049181610 +:102B0000C4F5C1010E94E72A6BE472E085E992E115 +:102B10000E94B13F68E872E085E992E10E94B13F0E +:102B20006FE376E085E992E10E94B13FC1010E9426 +:102B3000922B8823F1F040E050E0BA01C8010E94D6 +:102B4000B23040E050E0BA01C1010E947C2B6BE43E +:102B500072E085E992E10E94B13F60EB72E085E9A5 +:102B600092E10E94B13F6FE376E085E992E10E9435 +:102B7000B13FF101ED55FE4F60817181072E000CD0 +:102B8000880B990B0E9470489B01AC01A98DBA8DEE +:102B90006D917D918D919C910E9420491816D4F5DC +:102BA000C4010E94E72A6BE472E085E992E10E9489 +:102BB000B13F6CED72E085E992E10E94B13F6FE3B5 +:102BC00076E085E992E10E94B13FC4010E94922B18 +:102BD000882301F140E050E0BA01C1018A5D9E4FB7 +:102BE0000E94B23040E050E0BA01C4010E947C2B48 +:102BF0006BE472E085E992E10E94B13F64E073E02A +:102C000085E992E10E94B13F6FE376E085E992E1C8 +:102C10000E94B13FF101EB55FE4F60817181072E9B +:102C2000000C880B990B0E9470489B01AC01F101CC +:102C3000EF56FE4F60817181828193810E9420490D +:102C40001816D4F5C5010E94E72A6BE472E085E905 +:102C500092E10E94B13F60E373E085E992E10E9456 +:102C6000B13F6FE376E085E992E10E94B13FC50193 +:102C70000E94922B882301F140E050E0BA01C1018B +:102C80008E5C9E4F0E94B23040E050E0BA01C50118 +:102C90000E947C2B6BE472E085E992E10E94B13FD7 +:102CA00068E573E085E992E10E94B13F6FE376E069 +:102CB00085E992E10E94B13F60E0C1010E94BE2916 +:102CC000882361F040E050E0BA01C1010E947C2BF2 +:102CD00040E050E0BA01C8010E94B23060E0C40197 +:102CE0000E94BE29882371F040E050E0BA01C4017F +:102CF0000E947C2B40E050E0BA01C1018A5D9E4FEA +:102D00000E94B23060E0C5010E94BE29882371F0A4 +:102D100040E050E0BA01C5010E947C2B40E050E049 +:102D2000BA01C1018E5C9E4F0E94B230C1010E9467 +:102D3000E22AED85FE858083C4010E94E22AADA1CE +:102D4000BEA18C93C5010E94E22AEFA1F8A5808361 +:102D5000C1010E94762B6B017C01C4010E94762B7D +:102D60006F8F78A389A39AA3C5010E94762B69A7C8 +:102D70007AA78BA79CA70E94342FB701A6010E94B7 +:102D8000692F0E94342F4F8D58A169A17AA10E940A +:102D9000722F0E94342F49A55AA56BA57CA50E94CD +:102DA0007B2FC1010E945513AD85BE858C91882370 +:102DB000F1F10E94683C641575058605970540F49D +:102DC0000E94683C641575058605970580F51AC054 +:102DD0000E94683C6B017C01C418D508E608F7081E +:102DE000F101E358FE4F2081318142815381A8EEE9 +:102DF000B3E00E94E0496C157D058E059F0508F43F +:102E000095C1DECF0E94683C6B017C01F101E35863 +:102E1000FE4F2081318142815381A8EEB3E00E94B0 +:102E2000E0496C157D058E059F0508F47FC1E98991 +:102E3000FA8980818823F1F10E94683C6415750548 +:102E40008605970540F40E94683C64157505860563 +:102E5000970580F51AC00E94683C6B017C01C4187C +:102E6000D508E608F708F101E358FE4F20813181CB +:102E700042815381A8EEB3E00E94E0496C157D05C4 +:102E80008E059F0508F45DC1DECF0E94683C6B0192 +:102E90007C01F101E358FE4F208131814281538151 +:102EA000A8EEB3E00E94E0496C157D058E059F05F4 +:102EB00008F447C1AD89BE898C918823F1F10E9445 +:102EC000683C641575058605970540F40E94683CCA +:102ED000641575058605970580F51AC00E94683C43 +:102EE0006B017C01C418D508E608F708F101E35826 +:102EF000FE4F2081318142815381A8EEB3E00E94D0 +:102F0000E0496C157D058E059F0508F425C1DECFCF +:102F10000E94683C6B017C01F101E358FE4F208167 +:102F2000318142815381A8EEB3E00E94E0496C15E3 +:102F30007D058E059F0508F40FC185E992E10E9489 +:102F40007F41181619063CF0E981FA81319789F022 +:102F50001A82198221C064E873E085E992E10E9437 +:102F6000B13F85E992E10E94AB418F7D85349105A7 +:102F700059F769E973E085E992E10E94B13FABA19D +:102F8000BCA11C92E989FA891082AD89BE891C9284 +:102F9000E1E0F0E0FA83E9838B8D9C8DAD8DBE8DF1 +:102FA0000196A11DB11D8B8F9C8FAD8FBE8FBC0173 +:102FB000CD012EEE32E040E050E00E949749672BB1 +:102FC000682B692B09F069CD6BE37BE085E992E121 +:102FD0000E947C3F0E94342F0E94EE2FC1010E946C +:102FE00051135BCDEDA1FEA1808181115CCDAFA11C +:102FF000B8A58C91811157CD65EA73E085E992E11E +:103000000E94B13F85E090E0ED81FE819183808355 +:10301000A985BA858D939C9381010B5B1E4FF801A6 +:103020009183808345E050E0B101C1010E94960B7D +:10303000A985BA854D915C91B401C1010E94960B9E +:10304000F80140815181B501C1010E94960BC10177 +:103050000E943213C1010E94762B2B013C01C40156 +:103060000E94762B6D877E878F87988BC5010E9483 +:10307000762B6B017C010E94342FB301A2010E94C8 +:10308000692F0E94342F4D855E856F8578890E9457 +:10309000722F0E94342FB701A6010E947B2FC1011D +:1030A0000E945513C1010E944D13C1010E9451138A +:1030B000AD81BE811D921C92E985FA851182108234 +:1030C000D8011D921C9240E050E0B101C1010E9464 +:1030D000960BE985FA8540815181B401C1010E94B6 +:1030E000960BD8014D915C91B501C1010E94960BE0 +:1030F000C1010E94321389819A81E4960FB6F89437 +:10310000DEBF0FBECDBFDF91CF911F910F91FF901A +:10311000EF90DF90CF90BF90AF909F908F907F9077 +:103120006F905F904F903F902F90089563EB73E006 +:1031300085E992E10E94B13FE1E0F0E0FA83E983A2 +:1031400076CE68EC73E085E992E10E94B13F21E020 +:1031500030E03A832983AECE6DED73E085E992E1EC +:103160000E94B13F81E090E09A838983E6CE2F925E +:103170003F924F925F926F927F928F929F92AF9207 +:10318000BF92CF92DF92EF92FF920F931F93CF9354 +:10319000DF93CDB7DEB76B970FB6F894DEBF0FBEE7 +:1031A000CDBF9B8F8A8F1B010E949C0D8A8D9B8DAA +:1031B0000E9473108A8D9B8D0E9455138A8D9B8D62 +:1031C0000E944D1321E02216310481F132E02316D2 +:1031D000310409F45CC02114310409F089C00A8D5E +:1031E0001B8D680146EEC41A4EEFD40AF801E95867 +:1031F000FE4F50815B87C80187579E4F9C838B830E +:10320000D801AF55BE4FBD87AC87FC96FB8BEA8BD0 +:1032100098012F5B3E4F3A8729874DE850E0598B44 +:10322000488B85E190E09E838D8365C00A8D1B8D60 +:10323000025A1F4FCA8CDB8C9AEDC91A9EEFD90A2D +:10324000EA8DFB8DE858FE4FA081AB87EA8DFB8DA0 +:10325000E357FE4FFC83EB832A8D3B8D2D553E4F6C +:103260003D872C874A8D5B8D4C545E4F5B8B4A8B20 +:103270008A8D9B8D8D5B9E4F9A878987AEE8B0E0E3 +:10328000B98BA88BE6E1F0E0FE83ED8334C00A8DB4 +:103290001B8D04541F4FCA8CDB8CFEECCF1AFEEF43 +:1032A000DF0AEA8DFB8DE758FE4F20812B874A8D80 +:1032B0005B8D4F565E4F5C834B838A8D9B8D8B5508 +:1032C0009E4F9D878C87AA8DBB8DAB54BE4FBB8B09 +:1032D000AA8BEA8DFB8DEB5BFE4FFA87E9872FE81F +:1032E00030E0398B288B47E150E05E834D8303C08B +:1032F00062EF73E00CC0C8010E94A229811105C0D1 +:10330000C8010E94B029882349F069EB74E085E97F +:1033100092E10E94B13F81E090E0E5C36BE472E08E +:1033200085E992E10E94B13F65E674E085E992E1AA +:103330000E94B13FD8016C9185E992E10E94B33FB0 +:103340006FEE74E085E992E10E94B13F6FE376E0B1 +:1033500085E992E10E94B13F81E090E0E985FA853C +:1033600091838083EA8CFB8CFFEBEF1AFEEFFF0A60 +:10337000D7014D915C916A8D7B8DCB010E94960B9C +:10338000C8010E94F328C8010E947A29C6010E9440 +:10339000B830AB01BC01C8010E947C2BEB81FC81E1 +:1033A0001082118212821382EA8DFB8DE757FE4F45 +:1033B0001082118212821382EA8DFB8DE357FE4F39 +:1033C0001082118212821382EA8DFB8DEF56FE4F1E +:1033D000108211821282138286E090E0A985BA855C +:1033E0008D939C93F701408151816A8D7B8DCB0138 +:1033F0000E94960B41E050E06A8D7B8DCB010E94CC +:10340000BD0B812C912C54018394C101880F991F0D +:10341000880F991F2A8D3B8D820F931FAC014A5A4A +:103420005E4F58874F8330E5432E33EC532E612C8B +:10343000712C5F874E8785E992E10E947F411816C3 +:10344000190624F01A821982F12C14C085E992E140 +:103450000E94AB418F7D85349105A1F764E873E04C +:1034600085E992E10E94B13F81E090E09A838983EF +:10347000FF24F394C8010E94A22981111DC0C80134 +:103480000E94B029811118C0F11016C0AC85BD850D +:103490006D917C91072E000C880B990B0E9470484F +:1034A0009B01AC01EB81FC81608171818281938100 +:1034B0000E94C14787FD52C267E974E085E992E145 +:1034C0000E94B13FC8010E94B029811144C242E06C +:1034D00050E06A8D7B8DCB010E94BD0B6BE472E0E6 +:1034E00085E992E10E94B13F65E674E085E992E1E9 +:1034F0000E94B13FD8016C9185E992E10E94B33FEF +:103500006CE674E085E992E10E94B13F6FE376E0FA +:1035100085E992E10E94B13FE981FA81EF2BA9F59B +:103520006FE774E085E992E10E94B13F63E375E0E3 +:1035300085E992E10E94B13F6DE072E085E992E198 +:103540000E94B13F4AE050E06D817E8185E992E1C1 +:103550000E94804063E375E085E992E10E94B13FFB +:103560006FE072E085E992E10E94B13FFB856F2F29 +:1035700070E04AE050E085E992E10E9480406FE30C +:1035800076E085E992E10E94B13F8A8D9B8D0E9491 +:1035900055138A8D9B8D0E944D136BE472E085E973 +:1035A00092E10E94B13F65E674E085E992E10E94F4 +:1035B000B13FD8016C9185E992E10E94B33F63E885 +:1035C00074E085E992E10E94B13F6FE376E085E91E +:1035D00092E10E94B13FEB81FC8110821182128244 +:1035E0001382C8010E948E29C6010E94B830AB0127 +:1035F000BC01C8010E947C2BEA8DFB8DE757FE4F72 +:103600001082118212821382EA8DFB8DE357FE4FE6 +:103610001082118212821382EA8DFB8DEF56FE4FCB +:103620001082118212821382C6010E94B8306C8B04 +:103630007D8B8E8B9F8BC6010E94B830812C912C84 +:1036400054018394C101880F991F880F991F2A8DF7 +:103650003B8D820F931FAC014A5A5E4F58874F83B0 +:1036600060E5462E63EC562E612C712C598F488FE5 +:10367000F4013197FE83ED837F0129813A81232B69 +:1036800009F098C085E992E10E947F411816190659 +:1036900014F01E8614C085E992E10E94AB418F7D33 +:1036A00085349105B1F764E873E085E992E10E9401 +:1036B000B13F81E090E09A83898321E02E874D819C +:1036C0005E814A30510538F4AB81BC811D921D9258 +:1036D0001D921C921397BB85C801B111FFC10E94B6 +:1036E000B029811160C02E85222319F0ED80FE8063 +:1036F0005AC0AC85BD856D917C91072E000C880B5E +:10370000990B0E9470489B01AC01EB81FC816081A8 +:103710007181828193810E94C14787FFE7CFC801F1 +:103720000E94002BAF81B8852D913D914D915C9108 +:10373000C301B2010E94B949C9010E94BF3CEF8197 +:10374000F8852081318142815381A3E0B0E00E945D +:10375000E0499B01AC01C501B4010E94B949672B46 +:10376000682B692B51F46BE37BE085E992E10E94C1 +:103770007C3F0E94342F0E94EE2FC8010E941B2B19 +:10378000A88DB98D2D913D914D915C91C301B201F0 +:103790000E94B949C9010E94BF3CBFEF8B1A9B0A26 +:1037A000AB0ABB0A65CF67E974E085E992E10E9444 +:1037B000B13F04C041E050E05A8349836BE472E0BA +:1037C00085E992E10E94B13F65E674E085E992E106 +:1037D0000E94B13FD8016C9185E992E10E94B33F0C +:1037E0006BEA74E085E992E10E94B13F6FE376E015 +:1037F00085E992E10E94B13FC6010E94B830EA8992 +:10380000FB89EF2BA1F0DC01CB012C893D894E898E +:103810005F89821B930BA40BB50BB7FF07C0B09554 +:10382000A095909581959F4FAF4FBF4F7C014981E7 +:103830005A81452B99F56FE774E085E992E10E9482 +:10384000B13F63E375E085E992E10E94B13F6DE02D +:1038500072E085E992E10E94B13F4AE050E0688958 +:10386000798985E992E10E94804063E375E085E90A +:1038700092E10E94B13F6FE072E085E992E10E941F +:10388000B13F4AE050E0B70185E992E10E948040F3 +:103890006FE376E085E992E10E94B13F85E090E038 +:1038A000A985BA858D939C93CA8CDB8CBFEBCB1A10 +:1038B000BEEFDB0AF601408151816A8D7B8DCB0121 +:1038C0000E94960BC8010E9408298A8D9B8D0E9438 +:1038D00055138A8D9B8D0E944D13F1E02F163104F4 +:1038E00079F022E022163104A1F02328D1F40E94BD +:1038F000342FA701FF0C660B770B0E94692F11C0B4 +:103900000E94342FA701FF0C660B770B0E94722FC9 +:1039100008C00E94342FA701FF0C660B770B0E9492 +:103920007B2F8A8D9B8D0E945113A985BA851D928C +:103930001C92F601408151816A8D7B8DCB010E94E2 +:10394000960B40E050E06A8D7B8DCB010E94BD0B51 +:1039500089819A81C8C051E05B87B9CDC8010E94B6 +:10396000002BAF81B8852D913D914D915C91C301A4 +:10397000B2010E94B949C9010E94BF3C7401EF81A4 +:10398000F8852081318142815381A3E0B0E00E941B +:10399000E0499B01AC01C501B4010E94B949672B04 +:1039A000682B692B51F46BE37BE085E992E10E947F +:1039B0007C3F0E94342F0E94EE2FAE85BF856D9113 +:1039C0007D918D919C9126E030E040E050E00E9496 +:1039D000B949C501B4010E94B949672B682B692B0D +:1039E00009F05DC06BE472E085E992E10E94B13FAD +:1039F00061E274E085E992E10E94B13F4AE050E063 +:103A0000B70185E992E10E9480406EE274E085E9A9 +:103A100092E10E94B13FEB81FC8140815181628142 +:103A2000738122E030E085E992E10E9479416DE303 +:103A300074E085E992E10E94B13FAC85BD856D914E +:103A40007C914AE050E085E992E10E94804069E47F +:103A500074E085E992E10E94B13FC8010E94762B93 +:103A6000AB01BC012AE030E085E992E10E943640DA +:103A700067E574E085E992E10E94B13FC6010E94CA +:103A8000B830AB01BC012AE030E085E992E10E9448 +:103A900036406FE376E085E992E10E94B13FC801CC +:103AA0000E941B2BEE85FF8520813181428153814D +:103AB000C301B2010E94B949C9010E94BF3CFFEF96 +:103AC0008F1A9F0AAF0ABF0A29813A81232B09F472 +:103AD000B2CC41E050E05A834983F9CC0E94A2293C +:103AE000811104CE00CE6B960FB6F894DEBF0FBEE8 +:103AF000CDBFDF91CF911F910F91FF90EF90DF909D +:103B0000CF90BF90AF909F908F907F906F905F907D +:103B10004F903F902F9008958091570B9091580BA4 +:103B200001969093580B8093570B8091590B8111FC +:103B300018C081E08093590B0E94FB120E94100D67 +:103B40008091570B9091580B8031974244F010921E +:103B5000580B1092570B0E94F8080E9412091092FD +:103B6000590B089561E086E30E94AA3E61E087E375 +:103B70000E94AA3E61E086E20E94AA3E61E08AE1DC +:103B80000E94AA3E61E08CE10E94AA3E61E088E1C9 +:103B90000E94AA3E62E083E00E94AA3E62E082E0C8 +:103BA0000E94AA3E61E08CE30E94AA3E61E08DE3A0 +:103BB0000E94AA3E61E088E30E94AA3E62E08EE095 +:103BC0000E94AA3E62E08FE00E94AA3E61E08EE27F +:103BD0000E94AA3E61E080E30E94AA3E61E08EE37B +:103BE0000E94AA3E62E082E10E94AA3E62E083E176 +:103BF0000E94AA3E61E08AE00E94AA3E61E088E05D +:103C00000E94AA3E61E089E00E94AA3E61E08DE048 +:103C10000E94AA3E61E086E20E94E63E61E088E101 +:103C20000E94E63E61E088E30E94E63E61E08EE3AA +:103C30000E94E63E40E052EC61E070E085E992E1EE +:103C40000E941F4464E670E080E090E00E94993C8E +:103C50000E94FB060E9456060E94F8080E94520825 +:103C60008CE89DE19093F9098093F80981E08093B5 +:103C70006F00E1E8F0E090E1908310928000809383 +:103C8000FA0980E293E09093FC098093FB099093FA +:103C900087008093860081E18083108210928500E6 +:103CA000109284008091FA09806180830E94683CB0 +:103CB00060939A0B70939B0B80939C0B90939D0B3E +:103CC0000895CF93DF9363E372E081ED9BE00E9460 +:103CD000E74567E372E08AEC9BE00E94E7456BE30F +:103CE00072E083EC9BE00E94E7456FE372E08CEBAF +:103CF0009BE00E94E74563E472E085EB9BE00E9455 +:103D0000E74567E472E08EEA9BE00E94E7456BE4DA +:103D100072E087EA9BE00E94E7456FE472E080EA88 +:103D20009BE00E94E74582E090E00E947B41EC012D +:103D30000E948131D0939F0BC0939E0B61E476E08B +:103D40008FE89BE0DF91CF910C94E7458FE89BE0F3 +:103D50000E94794580EA9BE00E94794587EA9BE0D2 +:103D60000E9479458EEA9BE00E94794585EB9BE0B5 +:103D70000E9479458CEB9BE00E94794583EC9BE0A7 +:103D80000E9479458AEC9BE00E94794581ED9BE099 +:103D90000C947945AF92BF92CF92DF92EF92FF924F +:103DA0000F931F93CF93DF93CDB7DEB727970FB64F +:103DB000F894DEBF0FBECDBF0DB71EB785E992E107 +:103DC0000E947F41892B09F496C00E94683C609351 +:103DD0009A0B70939B0B80939C0B90939D0B85E9A2 +:103DE00092E10E94AB4180938E0B20915A0B30914F +:103DF0005B0BF901E45AF44F8083C901019690935B +:103E00005B0B80935A0B813391056CF04AE0409331 +:103E10008E0BFC01E45AF44F40832E5F3F4F3093EA +:103E20005B0B20935A0B20918E0B80915A0B909133 +:103E30005B0B2A3021F0823391050CF45CC0CDB6C7 +:103E4000DEB69C012F5F3F4F4DB75EB7421B530B51 +:103E50000FB6F8945EBF0FBE4DBF2DB73EB72F5FB4 +:103E60003F4F7901D901ECE5FBE09C01215031097C +:103E7000AF014C555B40421753071CF441914D93E1 +:103E8000F7CFF701E80FF91F10824091930B509183 +:103E9000940B20E030E0B7018FE89BE00E942F46B2 +:103EA0006FE87BE0CE0101960E94144680915A0B88 +:103EB00090915B0B029794F082E090E00E947B412E +:103EC0005C01B7010E944E38B50180919E0B909124 +:103ED0009F0B0E94FF31C5010E94C03D10925B0BF9 +:103EE00010925A0BCE0101960E9479450FB6F894B4 +:103EF000DEBE0FBECDBE0E94683C6093960B7093F1 +:103F0000970B8093980B9093990BC0909A0BD0903D +:103F10009B0BE0909C0BF0909D0B6C157D058E0526 +:103F20009F0528F1DC01CB018C199D09AE09BF0961 +:103F300089389341A105B10520F16EE075E085E96E +:103F400092E10E94B13F0E94342F0E94EE2F0E9406 +:103F5000342F0E9408300E94342F0E94842F0E9428 +:103F6000342F0E9452300E94FB120E94340C0E9497 +:103F7000683C60939A0B70939B0B80939C0B90937F +:103F80009D0B0FB6F8941EBF0FBE0DBF27960FB640 +:103F9000F894DEBF0FBECDBFDF91CF911F910F917F +:103FA000FF90EF90DF90CF90BF90AF9008954F9229 +:103FB0005F926F927F928F929F92AF92BF92CF92B9 +:103FC000DF92EF92FF920F931F93CF93DF93CDB7C2 +:103FD000DEB728970FB6F894DEBF0FBECDBF5B01EA +:103FE000CB010E94D7386B017C01C5010E94CE38FD +:103FF0002B013C01C5010E94C5389B01AC01C501E4 +:104000002D833E834F8358870E94BC3869837A830F +:104010008B839C83C5010E94B3384B015C010E94D5 +:10402000330A830172012D813E8149815A81B40195 +:104030000E94C30A80E090E028960FB6F894DEBF95 +:104040000FBECDBFDF91CF911F910F91FF90EF90E9 +:10405000DF90CF90BF90AF909F908F907F906F90A8 +:104060005F904F90089526E135E0FC013183208375 +:104070000C94032FCF93DF93EC010E943320CE01E9 +:10408000DF91CF910C947D41CF93DF93EC010E949F +:10409000092F86E195E099838883DF91CF91089578 +:1040A000CF93DF938091D80B9091D90B892B59F442 +:1040B00082E090E00E947B41EC010E944420D0937A +:1040C000D90BC093D80B8091D80B9091D90BDF916D +:1040D000CF91089563E372E08BE09CE00E94E74596 +:1040E00067E372E084E09CE00E94E7456BE372E0E6 +:1040F0008DEF9BE00E94E7456FE372E086EF9BE067 +:104100000E94E74563E472E08FEE9BE00E94E74582 +:1041100067E472E088EE9BE00E94E7456BE472E0A2 +:1041200081EE9BE00E94E7456FE472E08AED9BE040 +:104130000C94E7458AED9BE00E94794581EE9BE077 +:104140000E94794588EE9BE00E9479458FEE9BE0C6 +:104150000E94794586EF9BE00E9479458DEF9BE0B8 +:104160000E94794584E09CE00E9479458BE09CE0C8 +:104170000C947945CF92DF92EF92FF92CB010E948F +:10418000B3386B017C010E94FB06B6010E94D40586 +:1041900080E090E0FF90EF90DF90CF90089520E2D4 +:1041A00035E0FC01318320830C94032FCF93DF9300 +:1041B000EC010E94CF20CE01DF91CF910C947D4184 +:1041C000CF93DF93EC010E94092F80E295E0998361 +:1041D0008883DF91CF910895CF93DF938091120C64 +:1041E0009091130C892B59F482E090E00E947B415E +:1041F000EC010E94E020D093130CC093120C80912C +:10420000120C9091130CDF91CF91089563E372E04B +:1042100085E49CE00E94E74567E372E08EE39CE062 +:104220000E94E7456BE372E087E39CE00E94E7456C +:104230006FE372E080E39CE00E94E74563E472E094 +:1042400089E29CE00E94E74567E472E082E29CE03C +:104250000E94E7456BE472E08BE19CE00E94E74539 +:104260006FE472E084E19CE00C94E74584E19CE01B +:104270000E9479458BE19CE00E94794582E29CE0B6 +:104280000E94794589E29CE00E94794580E39CE0A8 +:104290000E94794587E39CE00E9479458EE39CE08B +:1042A0000E94794585E49CE00C947945FC011182DB +:1042B00010820895CF92DF92EF92FF920F931F9397 +:1042C000CF93DF931F921F92CDB7DEB76C017A01B7 +:1042D000890169837A830E94FB0669817A810E9441 +:1042E0000203F601918380830E94FB06B7010E94BE +:1042F000020331E0019709F030E0F60132870E94B5 +:10430000FB06B8010E940203092E000CAA0BBB0B8E +:10431000F60182839383A483B58316821782108665 +:1043200011860F900F90DF91CF911F910F91FF9009 +:10433000EF90DF90CF9008950F931F93CF93DF936B +:10434000FC01208131812115310591F1EC01822F91 +:104350000E94163F21E0892B09F420E02B876A8513 +:10436000261729F01E821F82188619860BC08E819F +:104370009F81A885B9850196A11DB11D8E839F835C +:10438000A887B9870E811F81288539858A819B81FD +:10439000AC81BD81081719072A073B074CF081E063 +:1043A00068278881DF91CF911F910F910C94E63E91 +:1043B000DF91CF911F910F91089563E372E08DE734 +:1043C0009CE00E94E74567E372E086E79CE00E947C +:1043D000E7456BE372E08FE69CE00E94E7456FE300 +:1043E00072E088E69CE00E94E74563E472E081E6C3 +:1043F0009CE00E94E74567E472E08AE59CE00E9449 +:10440000E7456BE472E083E59CE00E94E7456FE4DA +:1044100072E08CE49CE00C94E7458CE49CE00E9404 +:10442000794583E59CE00E9479458AE59CE00E94FD +:10443000794581E69CE00E94794588E69CE00E94EF +:1044400079458FE69CE00E94794586E79CE00E94D2 +:1044500079458DE79CE00C9479452F923F924F92DD +:104460005F926F927F928F929F92AF92BF92CF9204 +:10447000DF92EF92FF920F931F93CF93DF93CDB70D +:10448000DEB728970FB6F894DEBF0FBECDBF1B0175 +:10449000CB010E94AA38162F072FC1010E94A13814 +:1044A0004B015C01C1010E94983869837A838B8338 +:1044B0009C83C1010E948F386B017C01C1010E9465 +:1044C00086382B013C01C1010E947D386D837E83BB +:1044D0008F8398870E94FB121C01C701B6010E94BE +:1044E00038486B017C01C301B2010E9438482B019E +:1044F0003C016D817E818F8198850E943848AB0197 +:10450000BC011F921F921F920F931F93A980BA8024 +:1045100093018201C1010E94A9130F900F900F9087 +:104520000F900F9080E090E028960FB6F894DEBFD1 +:104530000FBECDBFDF91CF911F910F91FF90EF90F4 +:10454000DF90CF90BF90AF909F908F907F906F90B3 +:104550005F904F903F902F9008952AE235E0FC0144 +:10456000318320830C94032FCF93DF93EC010E94BF +:10457000AD22CE01DF91CF910C947D41CF93DF939B +:10458000EC010E94092F8AE295E099838883DF91EC +:10459000CF910895CF93DF938091840C9091850CF7 +:1045A000892B59F482E090E00E947B41EC010E944B +:1045B000BE22D093850CC093840C8091840C909182 +:1045C000850CDF91CF91089563E372E087EB9CE067 +:1045D0000E94E74567E372E080EB9CE00E94E745BC +:1045E0006BE372E089EA9CE00E94E7456FE372E0CA +:1045F00082EA9CE00E94E74563E472E08BE99CE07C +:104600000E94E74567E472E084E99CE00E94E74588 +:104610006BE472E08DE89CE00E94E7456FE472E095 +:1046200086E89CE00C94E74586E89CE00E9479458A +:104630008DE89CE00E94794584E99CE00E947945E0 +:104640008BE99CE00E94794582EA9CE00E947945D2 +:1046500089EA9CE00E94794580EB9CE00E947945C4 +:1046600087EB9CE00C94794563E372E08FEE9CE06D +:104670000E94E74567E372E088EE9CE00E94E74510 +:104680006BE372E081EE9CE00E94E7456FE372E02D +:104690008AED9CE00E94E74563E472E083ED9CE0D4 +:1046A0000E94E74567E472E08CEC9CE00E94E745DD +:1046B0006BE472E085EC9CE00E94E7456FE472E0F9 +:1046C0008EEB9CE00C94E7458EEB9CE00E947945D4 +:1046D00085EC9CE00E9479458CEC9CE00E94794539 +:1046E00083ED9CE00E9479458AED9CE00E9479452B +:1046F00081EE9CE00E94794588EE9CE00E9479451D +:104700008FEE9CE00C94794560E375E085E992E1D9 +:104710000E94B13F68EF7CE085E992E10E947C3F16 +:104720000E94342F0E94EE2F80E090E0089529E34C +:1047300035E0FC01318320830C94032FCF93DF936A +:10474000EC010E949723CE01DF91CF910C947D4123 +:10475000CF93DF93EC010E94092F89E395E09983C1 +:104760008883DF91CF910895CF93DF938091F60CEA +:104770009091F70C892B59F482E090E00E947B41E4 +:10478000EC010E94A823D093F70CC093F60C809103 +:10479000F60C9091F70CDF91CF91089563E372E0EE +:1047A00089E29DE00E94E74567E372E082E29DE0D6 +:1047B0000E94E7456BE372E08BE19DE00E94E745D4 +:1047C0006FE372E084E19DE00E94E74563E472E0FC +:1047D0008DE09DE00E94E74567E472E086E09DE0A1 +:1047E0000E94E7456BE472E08FEF9CE00E94E74592 +:1047F0006FE472E088EF9CE00C94E74588EF9CE062 +:104800000E9479458FEF9CE00E94794586E09DE00B +:104810000E9479458DE09DE00E94794584E19DE00C +:104820000E9479458BE19DE00E94794582E29DE0FE +:104830000E94794589E29DE00C94794563E372E03A +:1048400081E69DE00E94E74567E372E08AE59DE02E +:104850000E94E7456BE372E083E59DE00E94E74537 +:104860006FE372E08CE49DE00E94E74563E472E050 +:1048700085E49DE00E94E74567E472E08EE39DE0F9 +:104880000E94E7456BE472E087E39DE00E94E74504 +:104890006FE472E080E39DE00C94E74580E39DE0E7 +:1048A0000E94794587E39DE00E9479458EE39DE073 +:1048B0000E94794585E49DE00E9479458CE49DE065 +:1048C0000E94794583E59DE00E9479458AE59DE057 +:1048D0000E94794581E69DE00C9479450E94FB1287 +:1048E00060E070E00E94B71880E090E0089523E453 +:1048F00035E0FC01318320830C94032FCF93DF93A9 +:10490000EC010E947724CE01DF91CF910C947D4180 +:10491000CF93DF93EC010E94092F83E495E0998304 +:104920008883DF91CF910895CF93DF938091680DB5 +:104930009091690D892B59F482E090E00E947B41AF +:10494000EC010E948824D093690DC093680D80917A +:10495000680D9091690DDF91CF91089563E372E046 +:104960008BE99DE00E94E74567E372E084E99DE002 +:104970000E94E7456BE372E08DE89DE00E94E74509 +:104980006FE372E086E89DE00E94E74563E472E031 +:104990008FE79DE00E94E74567E472E088E79DE0CD +:1049A0000E94E7456BE472E081E79DE00E94E745E5 +:1049B0006FE472E08AE69DE00C94E7458AE69DE0AC +:1049C0000E94794581E79DE00E94794588E79DE056 +:1049D0000E9479458FE79DE00E94794586E89DE039 +:1049E0000E9479458DE89DE00E94794584E99DE02B +:1049F0000E9479458BE99DE00C9479450E94FB1259 +:104A000061E070E00E94B71880E090E008952DE426 +:104A100035E0FC01318320830C94032FCF93DF9387 +:104A2000EC010E940725CE01DF91CF910C947D41CE +:104A3000CF93DF93EC010E94092F8DE495E09983D9 +:104A40008883DF91CF910895CF93DF938091A20D5A +:104A50009091A30D892B59F482E090E00E947B4154 +:104A6000EC010E941825D093A30DC093A20D809154 +:104A7000A20D9091A30DDF91CF91089563E372E0B1 +:104A800085ED9DE00E94E74567E372E08EEC9DE0D6 +:104A90000E94E7456BE372E087EC9DE00E94E745EA +:104AA0006FE372E080EC9DE00E94E74563E472E012 +:104AB00089EB9DE00E94E74567E472E082EB9DE0B0 +:104AC0000E94E7456BE472E08BEA9DE00E94E745B7 +:104AD0006FE472E084EA9DE00C94E74584EA9DE08F +:104AE0000E9479458BEA9DE00E94794582EB9DE02A +:104AF0000E94794589EB9DE00E94794580EC9DE01C +:104B00000E94794587EC9DE00E9479458EEC9DE0FE +:104B10000E94794585ED9DE00C947945FC01138256 +:104B200012821482168215821086178212861186CE +:104B30001486138616861586108A1786128A118A9D +:104B4000148A138ADC01AC5ABF4F1C9217A610AA14 +:104B500011AA12AA13AA14AA15AA16AA17AA10AE65 +:104B600011AE12AE13AE11961C9211961C921296B3 +:104B70001C9211961C9211961C9211961C921196E1 +:104B80001C92E35AFF4F108208952F923F924F924A +:104B90005F926F927F928F929F92AF92BF92CF92CD +:104BA000DF92EF92FF920F931F93CF93DF93CDB7D6 +:104BB000DEB72C970FB6F894DEBF0FBECDBF1C0139 +:104BC00009831A832B833C8389819A81AB81BC81C1 +:104BD000B7FF0BC0B095A095909581959F4FAF4FB3 +:104BE000BF4F89839A83AB83BC83D101A85ABF4F3F +:104BF0001C9211961C9211961C9211961C92129660 +:104C00001C92CA01DB01B7FF07C0B095A095909533 +:104C100081959F4FAF4FBF4F8D839E83AF83B887E2 +:104C2000A601B70177FF07C0709560955095419533 +:104C30005F4F6F4F7F4F6A017B0184179507A6076F +:104C4000B70734F04D835E836F8378876C017D01F5 +:104C5000C701B6012D813E814F815885621B730BC0 +:104C6000840B950B22E030E040E050E00E94B9490F +:104C70008D819E81AF81B885820F931FA41FB51FC0 +:104C800089879A87AB87BC8729813A814B815C8170 +:104C90008D819E81AF81B885281739074A075B0748 +:104CA0002CF0C216D306E406F5064CF4340181E07C +:104CB000F101E55AFF4F808332968083CDC0810198 +:104CC000035A1F4F29813A814B815C8189859A85DE +:104CD000AB85BC8582179307A407B50708F45DC0B0 +:104CE0008D819E81AF81B8852EA13FA148A559A590 +:104CF000820F931FA41FB51F29813A814B815C81CC +:104D000082179307A407B50734F46AA07BA03FEF8E +:104D1000631A730A5AC069817A818B819C812D81C3 +:104D20003E814F815885621B730B840B950B0E944B +:104D300070482B013C016EA17FA188A599A50E9416 +:104D400070489B01AC01C301B2010E94C6472B0110 +:104D50003C016AA17BA18CA19DA1681979098A09EE +:104D60009B090E9470489B01AC01C301B2010E94E3 +:104D700025492B013C01C501B4010E9470489B01EB +:104D8000AC01C301B2010E9455470E9438483B0163 +:104D900081E0F101E85AFF4F5CC0D701C6012EA1A6 +:104DA0003FA148A559A5821B930BA40BB50B2981E4 +:104DB0003A814B815C81281739074A075B0754F415 +:104DC0006AA07BA032E0630E711C81E0F101E65A1B +:104DD000FF4F3FC0C701B60129813A814B815C81F9 +:104DE000621B730B840B950B0E9470482B013C01D6 +:104DF0006EA17FA188A599A50E9470489B01AC0176 +:104E0000C301B2010E94C6472B013C016AA17BA1EC +:104E10008CA19DA1681979098A099B090E94704893 +:104E20009B01AC01C301B2010E9425492B013C0149 +:104E3000C501B4010E9470489B01AC01C301B201DD +:104E40000E9455470E9438483B0181E0F101E75A32 +:104E5000FF4F8083D8018C93F1018481882309F46A +:104E6000A9C00E94683CD10112960D911C91139724 +:104E7000012E000C220B330BDC01CB01801B910BAC +:104E8000A20BB30B893E9340A105B10508F492C073 +:104E90000E94683CD10113967C936E9312976BE449 +:104EA00072E085E992E10E94B13F6FE575E085E926 +:104EB00092E10E94B13F2AE030E04D815E816F8136 +:104EC000788585E992E10E94364065E675E085E9DE +:104ED00092E10E94B13F2AE030E049815A816B8122 +:104EE0007C8185E992E10E9436406BE675E085E9B8 +:104EF00092E10E94B13F2AE030E0B701A60185E9C6 +:104F000092E10E94364061E775E085E992E10E94F6 +:104F1000B13F2AE030E049855A856B857C8585E97B +:104F200092E10E94874068E775E085E992E10E947E +:104F3000B13F2AE030E04EA15FA168A579A585E9DF +:104F400092E10E9436406EE775E085E992E10E94A9 +:104F5000B13F2AE030E0B501A40185E992E10E9469 +:104F6000364064E875E085E992E10E94B13F2AE0AD +:104F700030E04AA15BA16CA17DA185E992E10E948C +:104F800036406AE875E085E992E10E94B13F63E34B +:104F900075E085E992E10E94B13F4AE050E0B3013B +:104FA00085E992E10E9480406FE376E085E992E135 +:104FB0000E94B13FC3012C960FB6F894DEBF0FBE1E +:104FC000CDBFDF91CF911F910F91FF90EF90DF90B8 +:104FD000CF90BF90AF909F908F907F906F905F9099 +:104FE0004F903F902F900895AF92BF92CF92DF9253 +:104FF000EF92FF921F93CF93DF93FC0183AD9F014C +:105000002B5A3F4FAF014A5A5F4F5A0143A954A947 +:1050100065A976A9882339F087A1D9018C9381E00D +:10502000E50188832AC087A990ADA1ADB2AD11E09A +:10503000481759076A077B070CF010E0E90118834D +:105040006A017B0177FF07C0CC24DD247601C41AF6 +:10505000D50AE60AF70AB7FF07C0B095A095909564 +:1050600081959F4FAF4FBF4F21E0C816D906EA0682 +:10507000FB060CF420E0D5012C93452B462B472B47 +:1050800061F4DF01A05BBF4F438D548D658D768D3C +:105090004D935D936D937C931397DF91CF911F9107 +:1050A000FF90EF90DF90CF90BF90AF9008958F92D8 +:1050B0009F92AF92BF92CF92DF92EF92FF920F93A7 +:1050C0001F93CF93DF93CDB7DEB7FC017683658363 +:1050D0005087478332872187D486C386B686A586C4 +:1050E000908A8786128B018BF48AE38ADF91CF91B5 +:1050F0001F910F91FF90EF90DF90CF90BF90AF90F6 +:105100009F908F9008958F929F92AF92BF92CF926F +:10511000DF92EF92FF920F931F93CF93DF93CDB760 +:10512000DEB7FC01478B508F618F728F038F148F16 +:10513000258F368FC78ED0A2E1A2F2A283A294A2BD +:10514000A5A2B6A2888987A3898980A78A89858B29 +:10515000898D868B8B899C89AD89BE8983A794A70D +:10516000A5A7B6A78F8981A7888D82A7DF91CF9148 +:105170001F910F91FF90EF90DF90CF90BF90AF9075 +:105180009F908F900895EF920F931F93FC0147A774 +:1051900050AB61AB72AB43AB54AB65AB76AB07AB1B +:1051A00010AF21AF32AFE3AE87A1811116C037FF38 +:1051B00004C017AA10AE11AE12AEDF01AC5BBF4F38 +:1051C0001D921D921D921C921397EC5AFF4F81E085 +:1051D00080831F910F91EF9008951016110612060B +:1051E00013063CF3EACFCF93DF93EC0160E08985AF +:1051F0000E94E63E89A5882321F060E08F850E9409 +:10520000E63EC45ADF4F81E08883DF91CF91089555 +:10521000CF93DF93EC0161E089850E94E63E89A58A +:10522000882321F061E08F850E94E63EC45ADF4F5B +:105230001882DF91CF910895CF93DF93EC0188A579 +:10524000882311F060E001C061E08F810E94E63E9A +:1052500089A5882329F08AA5882311F060E001C080 +:1052600061E08D85DF91CF910C94E63ECF93DF9383 +:10527000EC0188A5882311F061E001C060E08F8116 +:105280000E94E63E89A5882329F08AA5882311F08B +:1052900061E001C060E08D85DF91CF910C94E63E26 +:1052A000CF92DF92EF92FF92FC0123AD211110C04B +:1052B00021E0C3A8D4A8E5A8F6A847A950AD61ADE0 +:1052C00072ADC416D506E606F70624F020E002C04B +:1052D000FC0127A1FC0130A5231731F0FF90EF90CE +:1052E000DF90CF900C941C29FF90EF90DF90CF902F +:1052F0000C943629CF93DF93FC0127A1EC01CB5A04 +:10530000DF4F222329F00E941C2981E0888303C0FB +:105310000E9436291882DF91CF910895CF93DF93B1 +:10532000FC0127A1EC01CB5ADF4F222321F00E9480 +:105330003629188204C00E941C2981E08883DF91ED +:10534000CF910895CF93DF93EC0189890E94163F96 +:10535000892B11F08E8901C080E0DF91CF910895F3 +:10536000CF93DF93EC018B890E94163F892B11F0BC +:105370008E8901C080E0DF91CF9108950F931F9334 +:10538000CF93DF938C01D62FFC01858981110BC04F +:10539000C8010E94A229C82FC8010E94B029D111BA +:1053A0000AC08C2F08C0C8010E94B029C82FC801AC +:1053B0000E94A229F4CFDF91CF911F910F91089500 +:1053C0004F925F926F927F928F929F92AF92BF9215 +:1053D000CF92DF92EF92FF920F931F93CF93DF93C1 +:1053E000EC010E94F4278FA998ADA9ADBAAD4FA5E5 +:1053F00058A969A97AA98E010C5A1F4F4817590755 +:105400006A077B0754F44BA95CA96DA97EA94817CC +:1054100059076A077B0794F00EC084179507A60703 +:10542000B7074CF44BA95CA96DA97EA98417950711 +:10543000A607B7071CF08BAD8823E9F0F80180813F +:105440008823C9F08BAD811104C08BAD811113C0CD +:1054500007C060E0CE010E94BE298111F6CF19C0BD +:10546000FE01EA5AFF4F608181E06827CE010E9469 +:10547000BE29882371F0F801108260E0CE010E94FD +:10548000BE29882309F48DC01BAA1CAA1DAA1EAA26 +:1054900088C08B8C9C8CAD8CBE8CCFA8D8ACE9AC72 +:1054A000FAAC0BA91CA92DA93EA94FA558A969A919 +:1054B0007AA98AA18F9389A18F9388A18F938F8DC9 +:1054C0008F938A8D8F93898D8F93888D8F938F89FA +:1054D0008F93CE010E94C5256C01E12CF12CFE01B9 +:1054E000E05BFF4FC082D182E282F3828DB79EB72C +:1054F00008960FB6F8949EBF0FBE8DBFC114D1049D +:10550000E104F10409F4B9CFFE01EC5BFF4F6081C7 +:105510007181828193810E946E484B015C016BA571 +:105520007CA58DA59EA50E9470489B01AC0160E002 +:1055300074E284E799E40E94C6472B013C01C7014D +:10554000B6010E946E489B01AC01C301B2010E94EA +:10555000C6476B017C018E01085B1F4F20E030E0E5 +:1055600040E05FE30E9425499B01AC01C501B40105 +:105570000E9455470E943F48F801608371838283EF +:1055800093830C5F1F4FA7019601C501B4010E94D0 +:1055900055470E943F48F80160837183828393835B +:1055A0006CCFDF91CF911F910F91FF90EF90DF9023 +:1055B000CF90BF90AF909F908F907F906F905F90B3 +:1055C0004F900895FC01EC5AFF4F80810895FC0133 +:1055D000EC5AFF4F10820895CF93DF93EC0161E006 +:1055E0008D810E94E63E8F859889892B31F061E09C +:1055F0008B85DF91CF910C94E63EDF91CF9108959A +:10560000FC01EB5AFF4F2081FC0143A954A965A975 +:1056100076A9222329F04F5F5F4F6F4F7F4F05C060 +:105620004150510961097109FC0143AB54AB65ABB1 +:1056300076AB0C94EC2ACF93DF93EC01FC01E95A92 +:10564000FF4F81E0808360E08D810E94E63E8F8580 +:105650009889892B31F060E08B85DF91CF910C9494 +:10566000E63EDF91CF9108950F931F93CF93DF9381 +:10567000FC01EC5AFF4F2081222399F17097408161 +:105680005181628173814F5F5F4F6F4F7F4F4083C6 +:105690005183628373833896008111812281338123 +:1056A000401751076207730750F0EC010E941B2B53 +:1056B000CE01DF91CF911F910F910C94E029FC0155 +:1056C000E85BFF4F00811181228133814017510730 +:1056D0006207730731F4DF91CF911F910F910C9402 +:1056E000002BDF91CF911F910F910895FC0163A9C9 +:1056F00074A985A996A90895FC0143AB54AB65AB89 +:1057000076AB0895FC01478B508F618F728F08959F +:10571000FC01E95AFF4F80810895FC01E95AFF4FCF +:1057200010820895FC01EA5AFF4F80810895FC0120 +:10573000EB5AFF4F80810895FC01E85AFF4F8081AA +:105740000895FC01E75AFF4F80810895FC01E65A55 +:10575000FF4F80810895FC01E55AFF4F8081089535 +:1057600063E372E08DE09EE00E94E74567E372E04C +:1057700086E09EE00E94E7456BE372E08FEF9DE0DC +:105780000E94E7456FE372E088EF9DE00E94E745E5 +:1057900063E472E081EF9DE00E94E74567E472E018 +:1057A0008AEE9DE00E94E7456BE472E083EE9DE0A7 +:1057B0000E94E7456FE472E08CED9DE00C94E745B4 +:1057C0008CED9DE00E94794583EE9DE00E94794535 +:1057D0008AEE9DE00E94794581EF9DE00E94794527 +:1057E00088EF9DE00E9479458FEF9DE00E9479450A +:1057F00086E09EE00E9479458DE09EE00C9479451C +:1058000063E372E085E49EE00E94E74567E372E0AF +:105810008EE39EE00E94E7456BE372E087E39EE043 +:105820000E94E7456FE372E080E39EE00E94E74557 +:1058300063E472E089E29EE00E94E74567E472E07B +:1058400082E29EE00E94E7456BE472E08BE19EE01D +:105850000E94E7456FE472E084E19EE00C94E74526 +:1058600084E19EE00E9479458BE19EE00E947945AB +:1058700082E29EE00E94794589E29EE00E9479459D +:1058800080E39EE00E94794587E39EE00E9479458F +:105890008EE39EE00E94794585E49EE00C94794574 +:1058A0008F929F92AF92BF92CF92DF92EF92FF9230 +:1058B0000F931F930E94FB121F9221E02F931F92C0 +:1058C0001F921F92812C912CA12CB12CC12CD12C78 +:1058D000760100E010E0980140E050E0BA010E943B +:1058E000A9130F900F900F900F900F9080E090E011 +:1058F0001F910F91FF90EF90DF90CF90BF90AF90EE +:105900009F908F90089524E935E0FC013183208336 +:105910000C94032FCF93DF93EC010E94832CCE01D4 +:10592000DF91CF910C947D41CF93DF93EC010E94E6 +:10593000092F84E995E099838883DF91CF910895B9 +:10594000CF93DF9380914C0E90914D0E892B59F49B +:1059500082E090E00E947B41EC010E94942CD09365 +:105960004D0EC0934C0E80914C0E90914D0EDF91D8 +:10597000CF91089563E372E08FE79EE00E94E745D0 +:1059800067E372E088E79EE00E94E7456BE372E020 +:1059900081E79EE00E94E7456FE372E08AE69EE0C1 +:1059A0000E94E74563E472E083E69EE00E94E745DB +:1059B00067E472E08CE59EE00E94E7456BE472E0EC +:1059C00085E59EE00E94E7456FE472E08EE49EE08C +:1059D0000C94E7458EE49EE00E94794585E59EE0C3 +:1059E0000E9479458CE59EE00E94794583E69EE021 +:1059F0000E9479458AE69EE00E94794581E79EE013 +:105A00000E94794588E79EE00E9479458FE79EE0F5 +:105A10000C9479458F929F92AF92BF92CF92DF9272 +:105A2000EF92FF920F931F930E94FB121F921F92FF +:105A300021E02F931F921F92812C912CA12CB12C2D +:105A4000C12CD12C760100E010E0980140E050E03C +:105A5000BA010E94A9130F900F900F900F900F9012 +:105A600080E090E01F910F91FF90EF90DF90CF903A +:105A7000BF90AF909F908F9008952EE935E0FC0184 +:105A8000318320830C94032FCF93DF93EC010E948A +:105A90003D2DCE01DF91CF910C947D41CF93DF93CB +:105AA000EC010E94092F8EE995E099838883DF91AC +:105AB000CF910895CF93DF938091860E9091870EBA +:105AC000892B59F482E090E00E947B41EC010E9416 +:105AD0004E2DD093870EC093860E8091860E9091A6 +:105AE000870EDF91CF91089563E372E089EB9EE02A +:105AF0000E94E74567E372E082EB9EE00E94E74583 +:105B00006BE372E08BEA9EE00E94E7456FE372E090 +:105B100084EA9EE00E94E74563E472E08DE99EE03E +:105B20000E94E74567E472E086E99EE00E94E7454F +:105B30006BE472E08FE89EE00E94E7456FE472E05C +:105B400088E89EE00C94E74588E89EE00E9479454D +:105B50008FE89EE00E94794586E99EE00E947945A3 +:105B60008DE99EE00E94794584EA9EE00E94794595 +:105B70008BEA9EE00E94794582EB9EE00E94794587 +:105B800089EB9EE00C9479450E94FB1262E070E084 +:105B90000E94B71880E090E0089528EA35E0FC0103 +:105BA000318320830C94032FCF93DF93EC010E9469 +:105BB000CD2DCE01DF91CF910C947D41CF93DF931A +:105BC000EC010E94092F88EA95E099838883DF9190 +:105BD000CF910895CF93DF938091C00E9091C10E25 +:105BE000892B59F482E090E00E947B41EC010E94F5 +:105BF000DE2DD093C10EC093C00E8091C00E909147 +:105C0000C10EDF91CF91089563E372E083EF9EE0D0 +:105C10000E94E74567E372E08CEE9EE00E94E74554 +:105C20006BE372E085EE9EE00E94E7456FE372E071 +:105C30008EED9EE00E94E74563E472E087ED9EE012 +:105C40000E94E74567E472E080ED9EE00E94E74530 +:105C50006BE472E089EC9EE00E94E7456FE472E03D +:105C600082EC9EE00C94E74582EC9EE00E94794530 +:105C700089EC9EE00E94794580ED9EE00E94794586 +:105C800087ED9EE00E9479458EED9EE00E94794569 +:105C900085EE9EE00E9479458CEE9EE00E9479455B +:105CA00083EF9EE00C9479458F929F92AF92BF92C2 +:105CB000CF92DF92EF92FF92CF93DF93EB01CB0174 +:105CC0000E94D7384B015C01CE010E94B3386B01B2 +:105CD0007C010E94330AA401B6010E94610A80E09F +:105CE00090E0DF91CF91FF90EF90DF90CF90BF9049 +:105CF000AF909F908F90089522EB35E0FC013183A7 +:105D000020830C94032FCF93DF93EC010E947C2E11 +:105D1000CE01DF91CF910C947D41CF93DF93EC01C5 +:105D20000E94092F82EB95E099838883DF91CF91C0 +:105D30000895CF93DF938091FA0E9091FB0E892BFB +:105D400059F482E090E00E947B41EC010E948D2E8C +:105D5000D093FB0EC093FA0E8091FA0E9091FB0E39 +:105D6000DF91CF91089563E372E08DE29FE00E949E +:105D7000E74567E372E086E29FE00E94E7456BE358 +:105D800072E08FE19FE00E94E7456FE372E088E1F7 +:105D90009FE00E94E74563E472E081E19FE00E949A +:105DA000E74567E472E08AE09FE00E94E7456BE424 +:105DB00072E083E09FE00E94E7456FE472E08CEFC1 +:105DC0009EE00C94E7458CEF9EE00E94794583E0CD +:105DD0009FE00E9479458AE09FE00E94794581E139 +:105DE0009FE00E94794588E19FE00E9479458FE11C +:105DF0009FE00E94794586E29FE00E9479458DE20E +:105E00009FE00C94794508958FEF9FEF08950C94CF +:105E10007D412CEB35E0FC01318320830895109205 +:105E2000480F1092490F10924A0F10924B0F109288 +:105E3000440F1092450F1092460F1092470F109288 +:105E4000400F1092410F1092420F1092430F109288 +:105E50003F0F10923E0F1092340F1092350F109298 +:105E6000360F1092370F0895CF93DF9380914C0F28 +:105E700090914D0F892B59F481E090E00E947B4175 +:105E8000EC010E940F2FD0934D0FC0934C0F8091C7 +:105E90004C0F90914D0FDF91CF9108956091480F75 +:105EA0007091490F80914A0F90914B0F0895609126 +:105EB000440F7091450F8091460F9091470F0895C0 +:105EC0006091400F7091410F8091420F9091430F6C +:105ED00008954093480F5093490F60934A0F709371 +:105EE0004B0F08954093440F5093450F6093460F16 +:105EF0007093470F08954093400F5093410F609364 +:105F0000420F7093430F0895CF93DF9383E00E9475 +:105F1000163FEC010E94342F91E0CD2B09F490E064 +:105F20009093380F82E00E94163FEC010E94342FBC +:105F300091E0CD2B09F490E09093390F8EE00E9410 +:105F4000163FEC010E94342F91E0CD2B09F490E034 +:105F500090933A0F8FE00E94163FEC010E94342F7D +:105F600091E0CD2B09F490E090933B0F82E10E94E9 +:105F7000163FEC010E94342F91E0CD2B09F490E004 +:105F800090933C0F83E10E94163FEC010E94342F56 +:105F900091E0CD2B09F490E090933D0FDF91CF91EC +:105FA0000895662319F06FE876E002C068E876E0AD +:105FB00085E992E10C94B13F4093340F5093350F33 +:105FC0006093360F7093370F08951092340F10922C +:105FD000350F1092360F1092370F089562EC75E06E +:105FE00085E992E10E94B13F4091340F5091350F05 +:105FF0006091360F7091370F2AE030E085E992E129 +:106000000E9436406FE376E085E992E10C94B13F5F +:10601000CF93DF93EC0165EC75E085E992E10E9496 +:10602000B13F69EC75E085E992E10E94B13F409192 +:10603000480F5091490F60914A0F70914B0F2AE021 +:1060400030E085E992E10E9436406CEC75E085E92C +:1060500092E10E94B13F4091440F5091450F6091F1 +:10606000460F7091470F2AE030E085E992E10E94E7 +:1060700036406FEC75E085E992E10E94B13F4091B6 +:10608000400F5091410F6091420F7091430F2AE0F1 +:1060900030E085E992E10E943640CE01DF91CF9158 +:1060A0000C94EE2F0F931F93CF93DF93EC0162EDCF +:1060B00075E085E992E10E94B13F66ED75E085E902 +:1060C00092E10E94B13F08E31FE0F8016081CE0138 +:1060D0000E94D12F6AED75E085E992E10E94B13FFF +:1060E000F8016181CE010E94D12F6EED75E085E946 +:1060F00092E10E94B13FF8016281CE010E94D12F4E +:1061000062EE75E085E992E10E94B13FF80163819A +:10611000CE010E94D12F66EE75E085E992E10E94E2 +:10612000B13FF8016481CE010E94D12F6AEE75E083 +:1061300085E992E10E94B13FF8016581CE010E949C +:10614000D12FCE01DF91CF911F910F910C94EE2FA3 +:10615000FC0111821082138212821086118612862F +:1061600013860895FC0140875187628773870895DD +:10617000FC0160857185828593850895CF93DF93B7 +:10618000EC0188810E94163F21E0892B09F420E070 +:106190002E838A810E94163F21E0892B09F420E09A +:1061A0002F83DF91CF910895CF93DF93EC01798313 +:1061B00068835B834A830E94BE308E818C838F818B +:1061C0008D83DF91CF910895CF93DF93EC018E8182 +:1061D0008C838F818D83CE010E94BE302C819E8165 +:1061E0008D81222331F0992339F1811127C04F810C +:1061F00007C091112BC0882329F04F8181E04827E7 +:1062000050E007C040E050E08F81882311F04150FA +:106210005109052E000C660B770B88859985AA8598 +:10622000BB85480F591F6A1F7B1F488759876A879C +:106230007B87DF91CF9108958111D9CF40E050E065 +:106240008F818111E6CF4FEF5FEFE3CF8823A9F273 +:1062500040E050E08F818823E1F2F5CF63E372E004 +:106260008FE79FE00E94E74567E372E088E79FE0E1 +:106270000E94E7456BE372E081E79FE00E94E745FB +:106280006FE372E08AE69FE00E94E74563E472E014 +:1062900083E69FE00E94E74567E472E08CE59FE0BB +:1062A0000E94E7456BE472E085E59FE00E94E745C8 +:1062B0006FE472E08EE49FE00C94E7458EE49FE08B +:1062C0000E94794585E59FE00E9479458CE59FE035 +:1062D0000E94794583E69FE00E9479458AE69FE027 +:1062E0000E94794581E79FE00E94794588E79FE019 +:1062F0000E9479458FE79FE00C94794508950C94AE +:106300007D4126E436E0FC01318320830895CF935C +:10631000DF93EB01209719F40E94CA221AC06C3156 +:10632000710519F40E941E3314C06F36710519F4FB +:106330000E945A2D14C06037710519F40E94A02CD8 +:1063400014C080E090E06137710519F40E94C9091A +:1063500018C0C237D10519F40E94942418C0C3375D +:10636000D10519F40E94242518C0C437D10519F4A9 +:106370000E94EA2D18C0C837D10519F40E94BC3418 +:1063800018C0C937D10519F40E94EC2019C0CA37CA +:10639000D10519F40E942E391AC0CD38D10519F44F +:1063A0000E94E8071BC0CE38D10519F40E94992E2F +:1063B0001CC0CF38D10521F4DF91CF910C94F93571 +:1063C000C039D10521F4DF91CF910C945020C53B09 +:1063D000D10521F4DF91CF910C94D633C63BD10582 +:1063E00021F4DF91CF910C944A35C73BD10521F4BC +:1063F000DF91CF910C94B423DF91CF910895EF9268 +:10640000FF920F931F93CF93DF9300D01F92CDB7CE +:10641000DEB78C017B01CB010E94E038AB01BC01EF +:1064200049835A836B837C830E94342F49815A812C +:106430006B817C810E94DC2FE114F104A9F0C7017B +:106440000E947838019681F0C7010E947838BC011B +:10645000C8010E9487318C01892B49F46CE276E0F7 +:1064600085E992E10E94CE3F8FEF9FEF28C067EB56 +:106470007FE085E992E10E947C3F0E94342F0E94D8 +:10648000EE2FD801ED91FC910480F581E02DB7014C +:10649000C80119958C01892B19F460EB7FE002C0CB +:1064A00069EA7FE085E992E10E947C3F0E94342FF7 +:1064B0000E94EE2F0E94342F0E94E52FC8010F90FA +:1064C0000F900F900F90DF91CF911F910F91FF9040 +:1064D000EF90089563E372E087EB9FE00E94E74549 +:1064E00067E372E080EB9FE00E94E7456BE372E0B8 +:1064F00089EA9FE00E94E7456FE372E082EA9FE04D +:106500000E94E74563E472E08BE99FE00E94E74563 +:1065100067E472E084E99FE00E94E7456BE472E083 +:106520008DE89FE00E94E7456FE472E086E89FE017 +:106530000C94E74586E89FE00E9479458DE89FE04E +:106540000E94794584E99FE00E9479458BE99FE0AC +:106550000E94794582EA9FE00E94794589EA9FE09E +:106560000E94794580EB9FE00E94794587EB9FE090 +:106570000C9479458F929F92AF92BF92CF92DF9207 +:10658000EF92FF920F931F93CF930E94FB12C1E0F3 +:10659000CF931F921F921F921F92812C912CA12C9E +:1065A000B12CC12CD12C760100E010E0980140E024 +:1065B00050E0BA010E94A9130E94FB121F92CF93D0 +:1065C000CF931F921F9200E010E0980140E050E04E +:1065D000BA010E94A9138DB79EB70A960FB6F89418 +:1065E0009EBF0FBE8DBF80E090E0CF911F910F91B5 +:1065F000FF90EF90DF90CF90BF90AF909F908F90E3 +:1066000008952EE436E0FC01318320830C94032F9F +:10661000CF93DF93EC010E940133CE01DF91CF9144 +:106620000C947D41CF93DF93EC010E94092F8EE4FF +:1066300096E099838883DF91CF910895CF93DF937C +:106640008091BE0F9091BF0F892B59F482E090E0AA +:106650000E947B41EC010E941233D093BF0FC09384 +:10666000BE0F8091BE0F9091BF0FDF91CF91089523 +:1066700063E372E081EF9FE00E94E74567E372E029 +:106680008AEE9FE00E94E7456BE372E083EE9FE0B5 +:106690000E94E7456FE372E08CED9FE00E94E745C2 +:1066A00063E472E085ED9FE00E94E74567E472E0F5 +:1066B0008EEC9FE00E94E7456BE472E087EC9FE080 +:1066C0000E94E7456FE472E080EC9FE00C94E745A0 +:1066D00080EC9FE00E94794587EC9FE00E9479451D +:1066E0008EEC9FE00E94794585ED9FE00E94794500 +:1066F0008CED9FE00E94794583EE9FE00E947945F2 +:106700008AEE9FE00E94794581EF9FE00C947945E5 +:1067100064E576E085E992E10E94B13F0E94342F62 +:106720000E94842F0E94342F0E9452300E94330A0C +:1067300040E050E068E070E00E94610A0E94330A85 +:1067400040E050E069E070E00E94610A0E94330A74 +:1067500040E050E06AE070E00E94610A0E94330A63 +:1067600040E050E06DE070E00E94610A80E090E05F +:1067700008952FE536E0FC01318320830C94032F2C +:10678000CF93DF93EC010E94B933CE01DF91CF911B +:106790000C947D41CF93DF93EC010E94092F8FE58C +:1067A00096E099838883DF91CF910895CF93DF930B +:1067B0008091F80F9091F90F892B59F482E090E0C5 +:1067C0000E947B41EC010E94CA33D093F90FC09321 +:1067D000F80F8091F80F9091F90FDF91CF91089504 +:1067E00063E372E08BE290E10E94E74567E372E0C9 +:1067F00084E290E10E94E7456BE372E08DE190E175 +:106800000E94E7456FE372E086E190E10E94E74570 +:1068100063E472E08FE090E10E94E74567E472E094 +:1068200088E090E10E94E7456BE472E081E090E14E +:106830000E94E7456FE472E08AEF9FE00C94E74521 +:106840008AEF9FE00E94794581E090E10E947945BE +:1068500088E090E10E9479458FE090E10E947945BF +:1068600086E190E10E9479458DE190E10E947945B1 +:1068700084E290E10E9479458BE290E10C947945A5 +:1068800063E372E089E690E10E94E74567E372E026 +:1068900082E690E10E94E7456BE372E08BE590E1D0 +:1068A0000E94E7456FE372E084E590E10E94E745CE +:1068B00063E472E08DE490E10E94E74567E472E0F2 +:1068C00086E490E10E94E7456BE472E08FE390E19B +:1068D0000E94E7456FE472E088E390E10E94E7459B +:1068E00082E390E10E941E3B85E390E10C941E3B05 +:1068F00088E390E10E9479458FE390E10E94794519 +:1069000086E490E10E9479458DE490E10E9479450A +:1069100084E590E10E9479458BE590E10E947945FC +:1069200082E690E10E94794589E690E10C947945F0 +:106930000E94FB060E94560681E090E0089529E639 +:1069400036E0FC01318320830C94032FCF93DF9337 +:10695000EC010E949F34CE01DF91CF910C947D41D8 +:10696000CF93DF93EC010E94092F89E696E099838B +:106970008883DF91CF910895CF93DF93809170103A +:1069800090917110892B59F482E090E00E947B4134 +:10699000EC010E94B034D0937110C09370108091BC +:1069A000701090917110DF91CF91089563E372E0C0 +:1069B00083EA90E10E94E74567E372E08CE990E1A9 +:1069C0000E94E7456BE372E085E990E10E94E745AC +:1069D0006FE372E08EE890E10E94E74563E472E0C5 +:1069E00087E890E10E94E74567E472E080E890E183 +:1069F0000E94E7456BE472E089E790E10E94E74579 +:106A00006FE472E082E790E10C94E74582E790E161 +:106A10000E94794589E790E10E94794580E890E1FC +:106A20000E94794587E890E10E9479458EE890E1DF +:106A30000E94794585E990E10E9479458CE990E1D1 +:106A40000E94794583EA90E10C9479450E94342FA5 +:106A50000E94083080E090E0089523E736E0FC01D2 +:106A6000318320830C94032FCF93DF93EC010E949A +:106A70002D35CE01DF91CF910C947D41CF93DF93E3 +:106A8000EC010E94092F83E796E099838883DF91C8 +:106A9000CF910895CF93DF938091AA109091AB107E +:106AA000892B59F482E090E00E947B41EC010E9426 +:106AB0003E35D093AB10C093AA108091AA1090914C +:106AC000AB10DF91CF91089563E372E08DED90E11B +:106AD0000E94E74567E372E086ED90E10E94E7459A +:106AE0006BE372E08FEC90E10E94E7456FE372E0A8 +:106AF00088EC90E10E94E74563E472E081EC90E16C +:106B00000E94E74567E472E08AEB90E10E94E74566 +:106B10006BE472E083EB90E10E94E7456FE472E082 +:106B20008CEA90E10C94E7458CEA90E10E9479456B +:106B300083EB90E10E9479458AEB90E10E947945D0 +:106B400081EC90E10E94794588EC90E10E947945C2 +:106B50008FEC90E10E94794586ED90E10E947945A5 +:106B60008DED90E10C9479458F929F92AF92BF92F8 +:106B7000CF92DF92EF92FF92CF93DF93EB01CB01A5 +:106B80000E94D7384B015C01CE010E94B3386B01E3 +:106B90007C010E94330AA401B6010E94460A80E0EB +:106BA00090E0DF91CF91FF90EF90DF90CF90BF907A +:106BB000AF909F908F9008952DE736E0FC013183D0 +:106BC00020830C94032FCF93DF93EC010E94DC35DC +:106BD000CE01DF91CF910C947D41CF93DF93EC01F7 +:106BE0000E94092F8DE796E099838883DF91CF91EA +:106BF0000895CF93DF938091E4109091E510892B55 +:106C000059F482E090E00E947B41EC010E94ED3556 +:106C1000D093E510C093E4108091E4109091E510BA +:106C2000DF91CF91089563E372E087E191E10E94E3 +:106C3000E74567E372E080E191E10E94E7456BE39D +:106C400072E089E091E10E94E7456FE372E082E043 +:106C500091E10E94E74563E472E08BEF90E10E94CE +:106C6000E74567E472E084EF90E10E94E7456BE45A +:106C700072E08DEE90E10E94E7456FE472E086EEEF +:106C800090E10C94E74586EE90E10E9479458DEE07 +:106C900090E10E94794584EF90E10E9479458BEF65 +:106CA00090E10E94794582E091E10E94794589E076 +:106CB00091E10E94794580E191E10E94794587E167 +:106CC00091E10C947945CF93DF93EB0163E876E093 +:106CD000CE010E94144A892B09F4B3C066E876E01D +:106CE000CE010E94144A892B09F4ABC06AE876E011 +:106CF000CE010E94144A892B09F4A6C06DE876E003 +:106D0000CE010E94144A892B09F49EC061E976E005 +:106D1000CE010E94144A892B09F499C065E976E0F6 +:106D2000CE010E94144A892B09F494C069E976E0E7 +:106D3000CE010E94144A892B09F48FC06DE976E0D8 +:106D4000CE010E94144A892B09F48AC061EA76E0D8 +:106D5000CE010E94144A892B09F485C065EA76E0C9 +:106D6000CE010E94144A892B09F480C069EA76E0BA +:106D7000CE010E94144A892B09F47BC06DEA76E0AB +:106D8000CE010E94144A892B09F476C061EB76E0AB +:106D9000CE010E94144A892B09F471C065EB76E09C +:106DA000CE010E94144A892B09F46CC069EB76E08D +:106DB000CE010E94144A892B09F467C06DEB76E07E +:106DC000CE010E94144A892B09F462C061EC76E07E +:106DD000CE010E94144A892B09F45DC065EC76E06F +:106DE000CE010E94144A892B09F458C069EC76E060 +:106DF000CE010E94144A892B09F453C06DEC76E051 +:106E0000CE010E94144A892B09F44EC061ED76E050 +:106E1000CE010E94144A892B09F449C065ED76E041 +:106E2000CE010E94144A892B09F444C069ED76E032 +:106E3000CE010E94144A892B09F43FC08FEF9FEFC7 +:106E40003EC080E090E03BC081E090E038C08FE63B +:106E500090E035C080E790E032C081E790E02FC03D +:106E600082E790E02CC083E790E029C084E790E0BF +:106E700026C088E790E023C089E790E020C08AE739 +:106E800090E01DC083E890E01AC084E890E017C04D +:106E90008DE890E014C08EE890E011C08FE890E09B +:106EA0000EC080E990E00BC081EA90E008C085EB5D +:106EB00090E005C086EB90E002C087EB90E0DF91A8 +:106EC000CF910895CF93DF93EB018881883561F4EA +:106ED000CB0101960E94FA4960934A1170934B11BD +:106EE00080934C1190934D118881893561F4CE01C6 +:106EF00001960E94FA4960934E1170934F1180934E +:106F000050119093511188818A3561F4CE01019618 +:106F10000E94FA4960935211709353118093541157 +:106F2000909355118881813471F4CE0101960E94AD +:106F3000FA490E94384860933E1170933F11809344 +:106F40004011909341118881823471F4CE010196F1 +:106F50000E94FA490E94384860934211709343118D +:106F600080934411909345118881833471F4CE014C +:106F700001960E94FA490E94384860934611709326 +:106F8000471180934811909349118881833561F4AA +:106F9000CE0101960E94FA4960933A1170933B1119 +:106FA00080933C1190933D118881803571F4CE011E +:106FB00001960E94FA490E943848609336117093F6 +:106FC000371180933811909339118881863571F487 +:106FD000CE0101960E94FA490E943848609332110E +:106FE00070933311809334119093351188818735D4 +:106FF00071F4CE0101960E94FA490E9438486093CC +:107000002E1170932F11809330119093311188813C +:10701000853471F4CE0101960E94FA490E943848E5 +:1070200060932A1170932B1180932C1190932D1142 +:107030008881843571F4CE0101960E94FA490E943C +:1070400038486093261170932711809328119093EC +:10705000291188818D3471F4CE0101960E94FA497C +:107060000E94384860932211709323118093241159 +:10707000909325118881813571F4CE0101960E948B +:10708000FA490E94384860931E1170931F11809333 +:10709000201190932111DF91CF9108950F931F93A9 +:1070A000CF93DF938C01CB0163E375E00E94074A25 +:1070B000EC01988196549230B0F4BE01C8010E9450 +:1070C00063369093010280930002209761F0BE0125 +:1070D000C8010E9462376DED76E080E090E00E948A +:1070E000074AEC01F2CFDF91CF911F910F910895E4 +:1070F0008091000290910102089560914A1170916F +:107100004B1180914C1190914D11089560914E1149 +:1071100070914F118091501190915111089560918B +:1071200052117091531180915411909155110895FD +:1071300060913E1170913F118091401190914111E9 +:107140000895609142117091431180914411909182 +:107150004511089560914611709147118091481131 +:107160009091491108956091361170913711809175 +:107170003811909139110895609132117091331145 +:107180008091341190913511089560912E11709174 +:107190002F11809130119091311108956091261135 +:1071A0007091271180912811909129110895609173 +:1071B000221170912311809124119091251108952D +:1071C00060911E1170911F118091201190912111D9 +:1071D00008958F929F92AF92BF92CF92DF92EF92DB +:1071E000FF92CF93DF93EB01CB010E94BC384B01A0 +:1071F0005C01CE010E94B3386B017C010E94FB064A +:10720000A401B6010E94220680E090E0DF91CF91B8 +:10721000FF90EF90DF90CF90BF90AF909F908F90B6 +:1072200008952FE337E0FC01318320830C94032F72 +:10723000CF93DF93EC010E941139CE01DF91CF9102 +:107240000C947D41CF93DF93EC010E94092F8FE3D3 +:1072500097E099838883DF91CF910895CF93DF934F +:107260008091561190915711892B59F482E090E04A +:107270000E947B41EC010E942239D0935711C093A8 +:1072800056118091561190915711DF91CF91089529 +:1072900063E372E089E891E10E94E74567E372E009 +:1072A00082E891E10E94E7456BE372E08BE791E1B0 +:1072B0000E94E7456FE372E084E791E10E94E745B1 +:1072C00063E472E08DE691E10E94E74567E472E0D5 +:1072D00086E691E10E94E7456BE472E08FE591E17B +:1072E0000E94E7456FE472E088E591E10C94E74580 +:1072F00088E591E10E9479458FE591E10E94794509 +:1073000086E691E10E9479458DE691E10E947945FA +:1073100084E791E10E9479458BE791E10E947945EC +:1073200082E891E10E94794589E891E10C947945E0 +:10733000CB010C94E44BCB01642F0C94EC4BCF921B +:10734000DF92EF92FF920F931F93CF93DF936C0125 +:107350008B017A01EC01CE56DE4E888187FF04C096 +:10736000FB011182108224C08CE08C9D90018D9DC8 +:10737000300D11248881A901480F511D87FD5A95B0 +:107380008091911190E04817590794F48881A901E0 +:10739000480F511D87FD5A95CA01FA01EE0FFF1FD4 +:1073A0008E0F9F1FFC01EA56FE4E808186FD19C09C +:1073B00088818F5F88838CE08C9D90018D9D300D3E +:1073C00011248881A901480F511D87FD5A9580918C +:1073D000911190E048175907BCF488818C3044F132 +:1073E00013C08881280F311D87FD3A95F901EE0FF2 +:1073F000FF1F2E0F3F1FF901EA56FE4E808160E00D +:107400008F730E94E63ED4CFF8018081918104966B +:1074100080349C4918F480E49CE904C0F801808120 +:1074200091810496F701918380838FEF888345C013 +:10743000F801408151818881B901680F711D87FD74 +:107440007A95CB01FB01EE0FFF1F8E0F9F1FFC01F2 +:10745000EA56FE4E81819281840F951FF701918338 +:1074600080838881A901480F511D87FD5A95CA0163 +:10747000FA01EE0FFF1F8E0F9F1FFC01EA56FE4E12 +:10748000808186FF1AC08881280F311D87FD3A95BB +:10749000F901EE0FFF1F2E0F3F1FF901EA56FE4EB6 +:1074A000808161E08F73DF91CF911F910F91FF90E9 +:1074B000EF90DF90CF900C94E63EDF91CF911F913B +:1074C0000F91FF90EF90DF90CF9008951F920F9251 +:1074D0000FB60F9211240BB60F922F933F934F9339 +:1074E0005F936F937F938F939F93AF93BF93EF932C +:1074F000FF9348E850E064E870E081E090E00E948B +:107500009F39FF91EF91BF91AF919F918F917F91A3 +:107510006F915F914F913F912F910F900BBE0F9004 +:107520000FBE0F901F9018951F920F920FB60F92DB +:1075300011240BB60F922F933F934F935F936F934A +:107540007F938F939F93AF93BF93EF93FF9348E9FC +:1075500050E064E970E082E090E00E949F39FF9182 +:10756000EF91BF91AF919F918F917F916F915F91BB +:107570004F913F912F910F900BBE0F900FBE0F9028 +:107580001F9018951F920F920FB60F9211240BB6F1 +:107590000F922F933F934F935F936F937F938F93AC +:1075A0009F93AF93BF93EF93FF9348EA50E064EA51 +:1075B00070E083E090E00E949F39FF91EF91BF91CE +:1075C000AF919F918F917F916F915F914F913F917B +:1075D0002F910F900BBE0F900FBE0F901F9018951C +:1075E0001F920F920FB60F9211240BB60F922F938A +:1075F0003F934F935F936F937F938F939F93AF933B +:10760000BF93EF93FF9348E251E064E271E080E0C2 +:1076100090E00E949F39FF91EF91BF91AF919F91B0 +:107620008F917F916F915F914F913F912F910F902B +:107630000BBE0F900FBE0F901F901895FC019091FC +:1076400091119033A0F481E0890F80939111908380 +:10765000892F90E0FC01EE0FFF1F8E0F9F1FFC0192 +:10766000EA56FE4E88EB9BE09283818308958FEF6C +:1076700080830895863308F0865390917B00282FED +:107680002870977F922B90937B0087702091020245 +:1076900090E4299F90011124822B80937C0080919B +:1076A0007A00806480937A0080917A0086FDFCCF16 +:1076B000809178002091790090E0922B08951F939B +:1076C000CF93DF93182FEB0161E00E94AA3E209731 +:1076D00011F460E004C0CF3FD10539F461E0812F9F +:1076E000DF91CF911F910C94E63EE12FF0E0E8543A +:1076F000FC4FE4914E2F50E0FA013197E131F10552 +:1077000008F093C08827EE58FF4F8F4F0C94D8494C +:1077100084B5806884BDC7BD8DC084B5806284BDDA +:10772000C8BD88C080918000806880938000D0931D +:107730008900C09388007EC0809180008062809321 +:107740008000D0938B00C0938A0074C08091B000F9 +:1077500080688093B000C093B3006CC08091B0008B +:1077600080628093B000C093B40064C080919000A8 +:10777000806880939000D0939900C09398005AC07D +:1077800080919000806280939000D0939B00C09382 +:107790009A0050C080919000886080939000D093B0 +:1077A0009D00C0939C0046C08091A000806880939B +:1077B000A0008091A0008F7B8093A000D093A900AF +:1077C000C093A80037C08091A00080628093A00081 +:1077D000D093AB00C093AA002DC08091A000886018 +:1077E0008093A000D093AD00C093AC0023C08091E3 +:1077F0002001806880932001D0932901C093280143 +:1078000019C080912001806280932001D0932B01C8 +:10781000C0932A010FC080912001886080932001CD +:10782000D0932D01C0932C0105C0C038D1050CF0B8 +:1078300055CF4FCFDF91CF911F9108951F920F9297 +:107840000FB60F9211242F933F938F939F93AF9373 +:10785000BF938091271290912812A0912912B09184 +:107860002A123091261223E0230F2D3720F401969F +:10787000A11DB11D05C026E8230F0296A11DB11D53 +:10788000209326128093271290932812A0932912F6 +:10789000B0932A1280912B1290912C12A0912D124C +:1078A000B0912E120196A11DB11D80932B129093C1 +:1078B0002C12A0932D12B0932E12BF91AF919F91D5 +:1078C0008F913F912F910F900FBE0F901F901895A1 +:1078D0002FB7F89460912712709128128091291285 +:1078E00090912A122FBF08953FB7F89480912B12E0 +:1078F00090912C12A0912D12B0912E1226B5A89B1A +:1079000005C02F3F19F00196A11DB11D3FBFBA2F31 +:10791000A92F982F8827820F911DA11DB11DBC0191 +:10792000CD0142E0660F771F881F991F4A95D1F756 +:107930000895CF92DF92EF92FF92CF93DF936B0186 +:107940007C010E94743CEB01C114D104E104F104F8 +:1079500079F00E94743C6C1B7D0B683E7340A0F371 +:1079600081E0C81AD108E108F108C851DC4FECCF1A +:10797000DF91CF91FF90EF90DF90CF900895019726 +:1079800039F0880F991F880F991F02970197F1F717 +:107990000895789484B5826084BD84B5816084BD87 +:1079A00085B5826085BD85B5816085BDEEE6F0E078 +:1079B000808181608083E1E8F0E0108280818260D4 +:1079C0008083808181608083E0E8F0E08081816055 +:1079D0008083E1EBF0E0808184608083E0EBF0E085 +:1079E000808181608083E1E9F0E080818260808332 +:1079F000808181608083E0E9F0E080818160808324 +:107A0000E1EAF0E080818260808380818160808310 +:107A1000E0EAF0E0808181608083E1E2F1E0808152 +:107A200082608083808181608083E0E2F1E08081F8 +:107A300081608083EAE7F0E08081846080838081D8 +:107A40008260808380818160808380818068808380 +:107A50001092C1000895CF93DF938230910510F406 +:107A600082E090E0E091D914F091DA1420E030E067 +:107A7000C0E0D0E0309711F140815181481759079B +:107A8000C0F04817590761F482819381209719F05B +:107A90009B838A832BC09093DA148093D91426C0D9 +:107AA0002115310519F04217530718F49A01BE0148 +:107AB000DF01EF010280F381E02DDCCF21153105DC +:107AC00009F1281B390B2430310590F412968D9161 +:107AD0009C9113976115710521F0FB0193838283BB +:107AE00004C09093DA148093D914FD01329644C0F7 +:107AF000FD01E20FF31F81939193225031092D93E1 +:107B00003C933AC02091D7143091D814232B41F4E0 +:107B100020910502309106023093D8142093D71497 +:107B200020910302309104022115310541F42DB753 +:107B30003EB74091070250910802241B350BE0919B +:107B4000D714F091D814E217F307A0F42E1B3F0BC3 +:107B50002817390778F0AC014E5F5F4F24173507BF +:107B600048F04E0F5F1F5093D8144093D714819361 +:107B7000919302C0E0E0F0E0CF01DF91CF91089552 +:107B80000F931F93CF93DF93009709F48CC0FC01F0 +:107B90003297138212820091D9141091DA140115D0 +:107BA000110581F420813181820F931F2091D71418 +:107BB0003091D8142817390779F5F093D814E09349 +:107BC000D71471C0D80140E050E0AE17BF0750F4A1 +:107BD00012962D913C911397AD012115310509F1B4 +:107BE000D901F3CF9D01DA01338322836081718152 +:107BF000860F971F8217930769F4EC01288139815A +:107C0000260F371F2E5F3F4F318320838A819B8150 +:107C100093838283452B29F4F093DA14E093D914EB +:107C200042C01396FC93EE931297ED01499159913E +:107C30009E01240F351FE217F30771F480819181B3 +:107C4000840F951F029611969C938E938281938147 +:107C500013969C938E931297E0E0F0E0D801129671 +:107C60008D919C911397009719F0F8018C01F6CF34 +:107C70008D919C9198012E5F3F4F820F931F209111 +:107C8000D7143091D8142817390769F4309729F49C +:107C90001092DA141092D91402C013821282109337 +:107CA000D8140093D714DF91CF911F910F910895AD +:107CB00090E0FC013197E131F10508F04AC08827D6 +:107CC000ED57FF4F8F4F0C94D849809180008F77EC +:107CD00003C0809180008F7D80938000089584B5DB +:107CE0008F7702C084B58F7D84BD08958091B000E8 +:107CF0008F7703C08091B0008F7D8093B00008958E +:107D0000809190008F7707C0809190008F7D03C095 +:107D100080919000877F8093900008958091A000CB +:107D20008F7707C08091A0008F7D03C08091A00055 +:107D3000877F8093A0000895809120018F7707C0EE +:107D4000809120018F7D03C080912001877F8093E7 +:107D500020010895CF93DF9390E0FC01E250FC4FA7 +:107D60002491FC01EC5BFB4F8491882361F190E04E +:107D7000880F991FFC01E254FB4FC591D491FC017F +:107D8000EC55FB4FA591B491611109C09FB7F894D0 +:107D90008881209582238883EC912E230BC062304A +:107DA00061F49FB7F8943881822F8095832388836C +:107DB000EC912E2B2C939FBF06C08FB7F894E881CF +:107DC0002E2B28838FBFDF91CF9108951F93CF93E0 +:107DD000DF93282F30E0F901E854FC4F8491F9013A +:107DE000E250FC4FD491F901EC5BFB4FC491CC23E2 +:107DF000C9F0162F81110E94583EEC2FF0E0EE0FD3 +:107E0000FF1FEC55FB4FA591B4918FB7F89411115A +:107E100005C09C91ED2FE095E92302C0EC91ED2B7C +:107E2000EC938FBFDF91CF911F910895CF93DF9394 +:107E3000282F30E0F901E854FC4F8491F901E25019 +:107E4000FC4FD491F901EC5BFB4FC491CC2391F032 +:107E500081110E94583EEC2FF0E0EE0FFF1FE65715 +:107E6000FB4FA591B491EC91ED2381E090E021F4DA +:107E700080E002C080E090E0DF91CF910895CF9242 +:107E8000DF92EF92FF920F931F93CF93DF936C01DA +:107E9000EB017B01E40EF51E00E010E0CE15DF05DE +:107EA00061F06991D601ED91FC910190F081E02D96 +:107EB000C6011995080F191FF1CFC801DF91CF91A5 +:107EC0001F910F91FF90EF90DF90CF900895611573 +:107ED000710579F0FB0101900020E9F73197AF01BE +:107EE000461B570BDC01ED91FC910280F381E02DE4 +:107EF000199480E090E00895AF92BF92CF92DF9204 +:107F0000EF92FF920F931F93CF93DF936C017B014E +:107F1000C0E0D0E000E010E0D70114968D919C9174 +:107F20001597C817D90788F4D601ED91FC91A08068 +:107F3000B180BE01C7010E941E46682FC601F5012F +:107F40001995080F191F2196E7CFC801DF91CF912E +:107F50001F910F91FF90EF90DF90CF90BF90AF9067 +:107F600008950C94673FDC01ED91FC910190F08144 +:107F7000E02D19940F931F93CF93DF93EC016DE0E5 +:107F80000E94B33F8C016AE0CE010E94B33F800F94 +:107F9000911FDF91CF911F910F9108950F931F9320 +:107FA000CF93DF93EC010E94673F8C01CE010E94CA +:107FB000BA3F800F911FDF91CF911F910F910895CC +:107FC0008F929F92AF92BF92CF92DF92EF92FF92E9 +:107FD0000F931F93CF93DF93CDB7DEB7A1970FB663 +:107FE000F894DEBF0FBECDBF6C01142FE52FCB017F +:107FF000022F19A2223008F40AE07E0121E2E20EEB +:10800000F11C802E912CA12CB12C612F7E2FA5016B +:1080100094010E949749029F1019112481E0E81AE7 +:10802000F1081A3014F4105D01C0195CF7011083D7 +:10803000122FE32FCA01232B242B252B31F7B70155 +:10804000C6010E94673FA1960FB6F894DEBF0FBE2F +:10805000CDBFDF91CF911F910F91FF90EF90DF90F7 +:10806000CF90BF90AF909F908F900895CF92DF9266 +:10807000EF92FF920F931F93CF93DF93EC016A016E +:108080007B012115310579F4E881F9810190F081B6 +:10809000E02D642FDF91CF911F910F91FF90EF9012 +:1080A000DF90CF9019942A303105E9F477FF1AC098 +:1080B0006DE20E94B33F8C0144275527BA014C1949 +:1080C0005D096E097F092AE0CE010E94E03F800F22 +:1080D000911FDF91CF911F910F91FF90EF90DF9053 +:1080E000CF9008952AE0B701A601CE01DF91CF918C +:1080F0001F910F91FF90EF90DF90CF900C94E03F95 +:108100009A01AB01770F660B770B0C943640211563 +:10811000310541F4DC01ED91FC910190F081E02DFD +:10812000642F19940C94E03F4F925F926F927F926C +:108130008F929F92AF92BF92CF92DF92EF92FF9277 +:10814000CF93DF93EC016A017B01B22E9A01AB0160 +:10815000C701B6010E949249882319F065E477E0CF +:1081600027C026013701E89477F82FEF3FEF4FE75C +:108170005FE7C301B2010E94924981110DC02FEF48 +:108180003FEF4FE75FE7C301B2010E94C1471816F6 +:108190001CF469E477E00CC02FEF3FEF4FE75FE49A +:1081A000C701B6010E94204918169CF46DE477E0DF +:1081B000CE01DF91CF91FF90EF90DF90CF90BF90F5 +:1081C000AF909F908F907F906F905F904F900C94A6 +:1081D000673F2FEF3FEF4FE75FECC701B6010E940B +:1081E000C14787FDE3CF20E030E0A901C701B60118 +:1081F0000E94C14787FF0AC06DE2CE010E94B33FD3 +:108200004C01F7FAF094F7F8F09402C0812C912C0D +:10821000A12C60E070E080E09FE3AB1441F020E02F +:1082200030E040E251E40E94C647A394F6CF9B01A0 +:10823000AC01C701B6010E9455472B013C010E94C9 +:108240003F486B017C010E946E489B01AC01C30159 +:10825000B2010E9454472B013C012AE0B701A6015C +:10826000CE010E94E03F7C01E80CF91CBB2039F0F4 +:1082700061E577E0CE010E94673FE80EF91EDB2C36 +:10828000DD2039F120E030E040E251E4C301B201E9 +:108290000E9425492B013C010E9438484B01770F71 +:1082A000AA08BB082AE030E0B501A401CE010E9473 +:1082B0003640E80EF91EC501B4010E9470489B01CA +:1082C000AC01C301B2010E9454472B013C01DA9476 +:1082D000D7CFC701DF91CF91FF90EF90DF90CF9084 +:1082E000BF90AF909F908F907F906F905F904F90D6 +:1082F00008950C9494400C942B3D0C94C03DFC01CB +:1083000024853585F901E05CFF4F808191813296AB +:1083100020813181821B930B8F7399270895DC0193 +:108320001C96ED91FC911D97DF01A05CBF4F2D9134 +:108330003C91119712968D919C91119728173907AE +:1083400039F08D919C91E80FF91F808190E008959C +:108350008FEF9FEF0895FC01A485B585FD01E05CDA +:10836000FF4F208131813296808191812817390712 +:1083700079F080819181A80FB91F8C912081318182 +:108380002F5F3F4F2F7333273183208390E0089571 +:108390008FEF9FEF0895FC0181A1882329F0A48924 +:1083A000B5898C9186FFFBCF11A208950F931F937F +:1083B000CF93DF93FC01A685B7858D01005C1F4F2D +:1083C000E8018881998101968F739927AD014E5BF1 +:1083D0005F4FEA012881398182179307D1F3E801C1 +:1083E00028813981A20FB31F6C93A685B785A05C45 +:1083F000BF4F11969C938E93A689B7892C9181E0EB +:1084000090E0078C02C0880F991F0A94E2F7822B34 +:108410008C9381E081A30488F589E02D80818064BC +:10842000808381E090E0DF91CF911F910F910895BB +:10843000FB01E05CFF4F208131812F5F3F4F2F73A5 +:108440003327DB01AE5BBF4F4D915C91241735079D +:1084500041F040815181DB01A40FB51F8C93318322 +:108460002083089508951F920F920FB60F92112442 +:108470000BB60F922F933F934F935F936F937F931E +:108480008F939F93AF93BF93EF93FF938091C0001F +:1084900082FD07C08091C60063E974E10E94184222 +:1084A00002C08091C600FF91EF91BF91AF919F9163 +:1084B0008F917F916F915F914F913F912F910F908D +:1084C0000BBE0F900FBE0F901F90189508951F922E +:1084D0000F920FB60F9211240BB60F922F933F936A +:1084E0004F935F936F937F938F939F93AF93BF93BC +:1084F000EF93FF938091C80082FD07C08091CE006A +:108500006BE074E10E94184202C08091CE00FF919E +:10851000EF91BF91AF919F918F917F916F915F91FB +:108520004F913F912F910F900BBE0F900FBE0F9068 +:108530001F90189508951F920F920FB60F92112455 +:108540000BB60F922F933F934F935F936F937F934D +:108550008F939F93AF93BF93EF93FF938091D0003E +:1085600082FD07C08091D60063E873E10E94184243 +:1085700002C08091D600FF91EF91BF91AF919F9182 +:108580008F917F916F915F914F913F912F910F90BC +:108590000BBE0F900FBE0F901F90189508951F925D +:1085A0000F920FB60F9211240BB60F922F933F9399 +:1085B0004F935F936F937F938F939F93AF93BF93EB +:1085C000EF93FF938091300182FD07C080913601C7 +:1085D0006BEF72E10E94184202C080913601FF9158 +:1085E000EF91BF91AF919F918F917F916F915F912B +:1085F0004F913F912F910F900BBE0F900FBE0F9098 +:108600001F90189585E992E10E947F41892B11F016 +:108610000E94324283E792E10E947F41892B11F050 +:108620000E94664281E592E10E947F41892B11F010 +:108630000E949A428FE292E10E947F41892B11F0C1 +:108640000C94CE4208951F920F920FB60F921124F0 +:108650000BB60F922F933F938F939F93EF93FF93BC +:1086600020918F14309190148091911490919214D4 +:108670002817390731F48091C1008F7D8093C100A4 +:1086800014C0E0919114F0919214E15BFB4E2081B3 +:10869000809191149091921401968F7399279093E1 +:1086A0009214809391142093C600FF91EF919F91B3 +:1086B0008F913F912F910F900BBE0F900FBE0F9097 +:1086C0001F9018951F920F920FB60F9211240BB6A0 +:1086D0000F922F933F938F939F93EF93FF9320914C +:1086E0000714309108148091091490910A142817E6 +:1086F000390731F48091C9008F7D8093C90014C07F +:10870000E0910914F0910A14E953FC4E2081809104 +:10871000091490910A1401968F73992790930A1463 +:10872000809309142093CE00FF91EF919F918F9138 +:108730003F912F910F900BBE0F900FBE0F901F9087 +:1087400018951F920F920FB60F9211240BB60F922D +:108750002F933F938F939F93EF93FF9320917F13DA +:1087600030918013809181139091821328173907DB +:1087700031F48091D1008F7D8093D10014C0E091BD +:108780008113F0918213E15CFC4E20818091811372 +:108790009091821301968F739927909382138093FF +:1087A00081132093D600FF91EF919F918F913F917C +:1087B0002F910F900BBE0F900FBE0F901F9018952A +:1087C0001F920F920FB60F9211240BB60F922F9398 +:1087D0003F938F939F93EF93FF932091F7123091E4 +:1087E000F8128091F9129091FA122817390731F492 +:1087F000809131018F7D8093310114C0E091F91295 +:10880000F091FA12E954FD4E20818091F912909175 +:10881000FA1201968F7399279093FA128093F912A6 +:1088200020933601FF91EF919F918F913F912F916E +:108830000F900BBE0F900FBE0F901F901895CF9208 +:10884000DF92EF92FF920F931F93CF93DF93EC0190 +:108850006A017B014115514E6105710509F1EC89F1 +:10886000FD8981E090E008A002C0880F991F0A945A +:10887000E2F7808360E079E08DE390E0A701960164 +:108880000E94974989019A01015011092109310972 +:108890003695279517950795980101151041A8F071 +:1088A000EC89FD89108260E874E88EE190E0A70110 +:1088B00096010E949749DA01C9010197A109B109FE +:1088C000B695A795979587959C01E889F989308396 +:1088D000EA89FB89208319A2EE89FF89408181E022 +:1088E00090E09C010C8C02C0220F331F0A94E2F727 +:1088F000242B2083EE89FF8940819C010D8C02C0CE +:10890000220F331F0A94E2F7242B2083EE89FF897C +:1089100040819C010E8C02C0220F331F0A94E2F7A3 +:10892000242B2083EE89FF8920810F8C02C0880FC1 +:10893000991F0A94E2F7809582238083DF91CF917B +:108940001F910F91FF90EF90DF90CF900895CF92FD +:10895000DF92EF92FF92E5E9F2E11382128288EE54 +:10896000C82E83E0D82EE12CF12CC482D582E68279 +:10897000F78267E577E07183608383E994E1958707 +:1089800084878FE494E19787868785EC90E0918BCC +:10899000808B84EC90E0938B828B80EC90E0958BC5 +:1089A000848B81EC90E0978B868B82EC90E0918FAA +:1089B000808F86EC90E0938F828F44E0448F33E089 +:1089C000358F27E0268F95E0978F81E080A3E3E73E +:1089D000F2E113821282C482D582E682F782718329 +:1089E0006083ABE0B4E1B587A487A7ECB3E1B787B8 +:1089F000A687ADECB0E0B18BA08BACECB0E0B38B54 +:108A0000A28BA8ECB0E0B58BA48BA9ECB0E0B78B3F +:108A1000A68BAAECB0E0B18FA08FAEECB0E0B38F24 +:108A2000A28F448F358F268F978F80A3E1E5F2E1E7 +:108A300013821282C482D582E682F78271836083B8 +:108A4000A3E8B3E1B587A487AFE3B3E1B787A6870F +:108A5000A5EDB0E0B18BA08BA4EDB0E0B38BA28B01 +:108A6000A0EDB0E0B58BA48BA1EDB0E0B78BA68BE9 +:108A7000A2EDB0E0B18FA08FA6EDB0E0B38FA28FD2 +:108A8000448F358F268F978F80A3EFE2F2E1138218 +:108A90001282C482D582E682F782718360836BEF93 +:108AA00072E17587648767EB72E17787668765E3B4 +:108AB00071E0718B608B64E371E0738B628B60E3B8 +:108AC00071E0758B648B61E371E0778B668B62E399 +:108AD00071E0718F608F66E371E0738F628F448FF6 +:108AE000358F268F978F80A3FF90EF90DF90CF90E8 +:108AF0000895FC01808191810C94C03DCF93DF9358 +:108B0000EC0188819981009711F00E94C03D198283 +:108B100018821D821C821B821A82DF91CF910895D8 +:108B20000F931F93CF93DF93EC018B016F5F7F4F08 +:108B3000888199810E946B46009731F099838883E0 +:108B40001B830A8381E001C080E0DF91CF911F91F8 +:108B50000F910895CF93DF93EC0188819981892B40 +:108B600029F08A819B818617970760F4CE010E94C5 +:108B70009045882341F08C819D81892B19F4E881EF +:108B8000F981108281E0DF91CF910895EF92FF92F9 +:108B90000F931F93CF93DF93EC017B018A01BA01FE +:108BA0000E94AA45811104C0CE010E947E4507C0E3 +:108BB0001D830C83B701888199810E941D4ACE01D3 +:108BC000DF91CF911F910F91FF90EF900895FC01DD +:108BD000118210821382128215821482168261150C +:108BE000710551F0FB0101900020E9F73197AF01C9 +:108BF000461B570B0C94C6450895CF93DF93EC01A9 +:108C0000FB018617970761F060817181611571051D +:108C100029F0448155810E94C64502C00E947E45CC +:108C2000CE01DF91CF910895FC0111821082138251 +:108C300012821582148216820C94FD45FC01248157 +:108C400035816217730748F480819181009729F07C +:108C5000FC01E60FF71F8081089580E008950F93CF +:108C60001F93CF93DF934115510519F161157105DC +:108C700001F1DC011496ED91FC9115972E173F0739 +:108C800018F0FB01108215C0E21BF30BEA012197DB +:108C9000EC17FD0708F4EF018B01FC016081718185 +:108CA000620F731FAE01C8010E94244AC00FD11F7A +:108CB0001882DF91CF911F910F9108950E94C93CB6 +:108CC0000E94B21DC2E0D3E40E94CA1E2097E1F3C5 +:108CD0000E940243F9CF6F927F928F929F92AF9240 +:108CE000BF92CF92DF92EF92FF920F931F93CF9399 +:108CF000DF93EC01009789F4CB01DF91CF911F91B5 +:108D00000F91FF90EF90DF90CF90BF90AF909F902A +:108D10008F907F906F900C942B3DFC01E60FF71F16 +:108D20009C0122503109E217F30708F4ACC0D901C5 +:108D30000D911C91119706171707B0F0053011051A +:108D400008F49FC0C80104978617970708F499C0D4 +:108D500002501109061B170B019311936D937C931D +:108D6000CF010E94C03D8DC05B01A01AB10A4C0129 +:108D7000800E911EA091D914B091DA1440E050E019 +:108D8000E12CF12C109709F44AC0A815B905D1F5CA +:108D90006D907C901197630182E0C80ED11CCA14BB +:108DA000DB0480F1A3014A195B096A0182E0C80E65 +:108DB000D11C1296BC9012971396AC91B5E0CB16CD +:108DC000D10440F0B282A38351834083D9016D93D3 +:108DD0007C930AC00E5F1F4FC301800F911FF901E2 +:108DE00091838083EB2DFA2FE114F10431F0D70148 +:108DF0001396FC93EE93129744C0F093DA14E09329 +:108E0000D9143FC08D919C9111974817590708F4C8 +:108E1000AC017D0112960D90BC91A02DB3CF809135 +:108E2000D7149091D81488159905E1F4461757077F +:108E3000C8F48091030290910402009741F48DB729 +:108E40009EB74091070250910802841B950BE817CA +:108E5000F907C8F4F093D814E093D714F90171839B +:108E600060830FC0CB010E942B3D7C01009759F01D +:108E7000A801BE010E940B4ACE010E94C03DC7015D +:108E800004C0CE0102C080E090E0DF91CF911F913D +:108E90000F91FF90EF90DF90CF90BF90AF909F9099 +:108EA0008F907F906F9008955058BB27AA270E94FB +:108EB0006C470C94E6480E94D84838F00E94DF487E +:108EC00020F039F49F3F19F426F40C94D5480EF4A1 +:108ED000E095E7FB0C94CF48E92F0E94F74858F340 +:108EE000BA17620773078407950720F079F4A6F58F +:108EF0000C9419490EF4E0950B2EBA2FA02D0B01FE +:108F0000B90190010C01CA01A0011124FF27591BCE +:108F100099F0593F50F4503E68F11A16F040A22FD4 +:108F2000232F342F4427585FF3CF46953795279545 +:108F3000A795F0405395C9F77EF41F16BA0B620B44 +:108F4000730B840BBAF09150A1F0FF0FBB1F661F8B +:108F5000771F881FC2F70EC0BA0F621F731F841FCE +:108F600048F4879577956795B795F7959E3F08F0F4 +:108F7000B0CF9395880F08F09927EE0F97958795B6 +:108F800008950E94AB4808F481E008950E94DA47F2 +:108F90000C94E6480E94DF4858F00E94D84840F000 +:108FA00029F45F3F29F00C94CF4851110C941A49D1 +:108FB0000C94D5480E94F74868F39923B1F35523E0 +:108FC00091F3951B550BBB27AA27621773078407DC +:108FD00038F09F5F5F4F220F331F441FAA1FA9F372 +:108FE00035D00E2E3AF0E0E832D091505040E69560 +:108FF000001CCAF72BD0FE2F29D0660F771F881FC1 +:10900000BB1F261737074807AB07B0E809F0BB0BB3 +:10901000802DBF01FF2793585F4F3AF09E3F5105C7 +:1090200078F00C94CF480C941A495F3FE4F3983ED3 +:10903000D4F3869577956795B795F7959F5FC9F7B0 +:10904000880F911D9695879597F90895E1E0660F31 +:10905000771F881FBB1F621773078407BA0720F0AA +:10906000621B730B840BBA0BEE1F88F7E095089513 +:109070000E943F486894B1110C941A4908950E94C7 +:10908000FF4888F09F5798F0B92F9927B751B0F053 +:10909000E1F0660F771F881F991F1AF0BA95C9F77C +:1090A00014C0B13091F00E941949B1E008950C94B8 +:1090B0001949672F782F8827B85F39F0B93FCCF36B +:1090C000869577956795B395D9F73EF490958095F9 +:1090D000709561957F4F8F4F9F4F0895E89409C019 +:1090E00097FB3EF490958095709561957F4F8F4FDB +:1090F0009F4F9923A9F0F92F96E9BB279395F695F1 +:10910000879577956795B795F111F8CFFAF4BB0F6E +:1091100011F460FF1BC06F5F7F4F8F4F9F4F16C0D2 +:10912000882311F096E911C0772321F09EE8872F5C +:10913000762F05C0662371F096E8862F70E060E018 +:109140002AF09A95660F771F881FDAF7880F969591 +:10915000879597F90895990F0008550FAA0BE0E835 +:10916000FEEF16161706E807F907C0F012161306E9 +:10917000E407F50798F0621B730B840B950B39F429 +:109180000A2661F0232B242B252B21F408950A268F +:1091900009F4A140A6958FEF811D811D089597F9CF +:1091A0009F6780E870E060E008959FEF80EC08958D +:1091B00000240A94161617061806090608950024B6 +:1091C0000A9412161306140605060895092E039430 +:1091D000000C11F4882352F0BB0F40F4BF2B11F4A4 +:1091E00060FF04C06F5F7F4F8F4F9F4F089557FD03 +:1091F0009058440F551F59F05F3F71F04795880F05 +:1092000097FB991F61F09F3F79F08795089512169B +:1092100013061406551FF2CF4695F1DF08C0161647 +:1092200017061806991FF1CF8695710561050894F8 +:109230000895E894BB2766277727CB0197F908950F +:109240000E94AB4808F48FEF08950E9438490C94AF +:10925000E6480E94D84838F00E94DF4820F0952365 +:1092600011F00C94CF480C94D54811240C941A4951 +:109270000E94F74870F3959FC1F3950F50E0551F7A +:10928000629FF001729FBB27F00DB11D639FAA275B +:10929000F00DB11DAA1F649F6627B00DA11D661FAA +:1092A000829F2227B00DA11D621F739FB00DA11DCB +:1092B000621F839FA00D611D221F749F3327A00D85 +:1092C000611D231F849F600D211D822F762F6A2F21 +:1092D00011249F5750409AF0F1F088234AF0EE0F86 +:1092E000FF1FBB1F661F771F881F91505040A9F7B3 +:1092F0009E3F510580F00C94CF480C941A495F3F73 +:10930000E4F3983ED4F3869577956795B795F795EE +:10931000E7959F5FC1F7FE2B880F911D9695879566 +:1093200097F908950E94AB48880B990B0895A1E224 +:109330001A2EAA1BBB1BFD010DC0AA1FBB1FEE1FCF +:10934000FF1FA217B307E407F50720F0A21BB30B1A +:10935000E40BF50B661F771F881F991F1A9469F796 +:1093600060957095809590959B01AC01BD01CF01F2 +:109370000895052E97FB1EF400940E94D04957FDD6 +:1093800007D00E94974907FC03D04EF40C94D049B3 +:1093900050954095309521953F4F4F4F5F4F089521 +:1093A00090958095709561957F4F8F4F9F4F089551 +:1093B000EE0FFF1F881F8BBF0790F691E02D1994C9 +:1093C0000E94EB49A59F900DB49F900DA49F800D26 +:1093D000911D11240895A29FB001B39FC001A39FC6 +:1093E000700D811D1124911DB29F700D811D1124DE +:1093F000911D0895662777270C945A4A91110C9471 +:10940000C94B803219F089508550C8F7089544E659 +:1094100057E00C94334AFB01DC0102C001900D922D +:1094200041505040D8F70895FB01DC018D91019027 +:1094300080190110D9F3990B0895FB01DC0101900B +:109440000D920020E1F70895FB01DC0141505040EE +:1094500048F001900D920020C9F701C01D924150C3 +:109460005040E0F70895FA01A191B081009719F4F6 +:109470001097E1F0CD01DC01CD010D90002011F439 +:10948000C00113C0FB012191222319F02015D9F747 +:10949000F3CFFB012191201519F41E92119606C0FD +:1094A0002223C1F70D900020A1F7D001FA01A1936A +:1094B000B08308956F927F928F929F92AF92BF92E6 +:1094C000CF92DF92EF92FF920F931F93CF93DF9390 +:1094D000EC017B016115710519F0DB018D939C9303 +:1094E0008E010F5F1F4F7880872D90E00E94FE490C +:1094F000892B11F0E801F4CFBDE27B1205C00F5FAC +:109500001F4F7980C1E008C0EBE27E1204C08E01DB +:109510000E5F1F4F7980C0E06801F1E0CF1AD108DB +:1095200043E050E060EE74E0C6010E94CC4B892B12 +:10953000F1F4680122E0C20ED11C45E050E06BED71 +:1095400074E0C6010E94CC4B892B21F4680187E0AE +:10955000C80ED11CE114F10419F0D701CD92DC92B0 +:10956000C111FFC060E070E080E89FE703C143E005 +:1095700050E068ED74E0C6010E94CC4B892B51F499 +:10958000E114F10409F4F2C00E5F1F4FF7011183DB +:109590000083ECC0680160E070E0CB0100E010E007 +:1095A000F601D0EDD70DDA3058F52C2F2260622E5F +:1095B0002C2F2870C2FF05C0211128C00F5F1F4F3C +:1095C00025C0222311F001501109A5E0B0E09B0154 +:1095D000AC010E94E0494B015C01880C991CAA1C5B +:1095E000BB1CC501B4016D0F711D811D911D683932 +:1095F000A9E97A078A07A9E19A0740F0C66005C081 +:10960000DE3F51F4C3FD44C0C8606C2EBFEFCB1ADF +:10961000DB0A7080C62DC4CF2D2F2F7D2531C1F5DB +:1096200040814D3211F4C06106C04B3221F03196B9 +:1096300021E030E006C03296D60111964C9122E02E +:1096400030E0A0EDA40FAA3018F0E21BF30B20C00D +:1096500040E050E04038BCE05B075CF49A01220F28 +:10966000331F220F331F420F531F440F551F4A0F42 +:10967000511D3196DF0111972C91A0EDA20FAA3058 +:1096800048F3C4FF03C0519541955109040F151FBC +:10969000C1FF07C0E114F10421F03197D701ED9328 +:1096A000FC930E946E48C370C33019F06B017C01BB +:1096B00006C06B017C01F7FAF094F7F8F09420E013 +:1096C00030E0A901C701B6010E94C147882309F40F +:1096D00045C017FF06C0119501951109C7EFD4E0E9 +:1096E00002C0CFE0D5E05E01B8E1AB1AB108460197 +:1096F000BE2DAF2D90E2E92EF12C0E151F0584F042 +:10970000FE012591359145915491B4018B2F9A2FEB +:109710000E9425494B01B82FA92F0E191F09EDCF23 +:109720002497F594E794CA15DB0539F76401EB2E0D +:10973000FA2E8E2D880F8F2D881F8F3F49F020E045 +:1097400030E0A901C701B6010E94C147811106C0DE +:1097500082E290E09093DC148093DB14C701B601A1 +:1097600009C060E070E080E89FEF04C060E070E056 +:1097700080EC9FE7DF91CF911F910F91FF90EF90C9 +:10978000DF90CF90BF90AF909F908F907F906F9021 +:109790000895992788270895FB01DC014150504026 +:1097A00088F08D9181341CF08B350CF4805E6591CE +:1097B00061341CF06B350CF4605E861B611171F333 +:1097C000990B0895881BFCCFF999FECF92BD81BDFE +:1097D000F89A992780B50895262FF999FECF1FBAD8 +:1097E00092BD81BD20BD0FB6F894FA9AF99A0FBECA +:1097F0000196089512E0CBEAD2E000E006C0802F87 +:10980000FE010E94D8492196011DCB3CD10780E082 +:089810000807A9F7F894FFCF47 +:10981800FFFF010000DD1480005232310050005675 +:1098280000523939204572726F723A20696E76613A +:109838006C696420706172616D6574657220696419 +:109848000D0A00523031005230320052303300528B +:109858003034005230350052303600523939004722 +:10986800454E4553495320562E30312E30372E451C +:1098780058504552494D454E54414C000000000097 +:10988800CB07D207900700000000AC09B30979099B +:109898005234310052333100206465616374697653 +:1098A800617465206D6F746F72205820647565202F +:1098B800746F206D697373656420737465707300C9 +:1098C80020686F6D6520706F736974696F6E2058BA +:1098D80020617869732064657465637465642077B2 +:1098E80069746820656E636F6465720020646561E1 +:1098F80063746976617465206D6F746F7220592086 +:1099080064756520746F206D697373656420737462 +:109918006570730020686F6D6520706F7369746976 +:109928006F6E20592061786973206465746563746B +:109938006564207769746820656E636F646572007A +:109948002064656163746976617465206D6F746FF6 +:1099580072205A2064756520746F206D6973736571 +:10996800642073746570730020686F6D6520706F74 +:10997800736974696F6E205A206178697320646511 +:10998800746563746564207769746820656E636FB5 +:109998006465720052393920656D657267656E635A +:1099A800792073746F700D0A00523939206572720C +:1099B8006F720D0A005239392073746F70706564C4 +:1099C8000D0A005239392074696D656F7574205815 +:1099D80020617869730D0A005239392074696D6500 +:1099E8006F7574205920617869730D0A00523939EE +:1099F8002074696D656F7574205A20617869730DDC +:109A08000A005239392043616C6962726174696F66 +:109A18006E206572726F723A20696E76616C696445 +:109A280020617869732073656C65637465640D0AD9 +:109A380000207374657020636F756E742000206D4C +:109A480069737365642073746570732000206D6199 +:109A58007820737465707320002063757220706FAE +:109A680073206D747220002063757220706F7320EC +:109A7800656E63200020617869732000206174207E +:109A88007374617274696E6720706F696E740052C6 +:109A98003233002063616C6962726174696E672099 +:109AA8006C656E67746800523939206D6F76656D24 +:109AB800656E7420646F6E650D0A00206174206500 +:109AC8006E6420706F696E74005239392043616C7E +:109AD8006962726174696F6E206572726F723A2082 +:109AE800656E642073746F70206163746976652095 +:109AF8006265666F72652073746172740D0A002066 +:109B08006D6F766520746F20737461727420666F50 +:109B1800722063616C6962726174696F6E005230A1 +:109B280030000000000033203A20D71F000000005A +:109B3800CF20D620BA2000000000AD22B4222D226A +:109B480052383320000000000097239E238423000E +:109B580000000077247E246E240000000007250EF4 +:109B680025FE2420637572206C6F63203D20002041 +:109B7800737461200020637572200020656E642074 +:109B8800002068616C662000206C656E2000206DE6 +:109B9800696E2000206D61782000207370642000B9 +:109BA80000000000832C8A2C502C000000003D2D62 +:109BB800442D0A2D00000000CD2DD42DC42D000009 +:109BC80000007C2E832E542E00000000032F072F48 +:109BD800042F20510052383200205800205900200C +:109BE8005A0052383100205841002058420020596C +:109BF800410020594200205A4100205A4200523860 +:109C0800382000706F736974696F6E200020636874 +:109C1800616E6E656C20412000202D3E200020637F +:109C280068616E6E656C20422000636F6D6D616EB9 +:109C380064203D3D204E554C4C3A20005239392085 +:109C480068616E646C6572203D3D204E554C4C0D2C +:109C58000A00000000007E317F310000000001335F +:109C68000833BA32686F6D650D0A0000000000B94C +:109C780033C0338833000000009F34A63498340082 +:109C88000000002D353435263500000000DC35E3B2 +:109C980035B4354730004730300047310047303160 +:109CA8000046313100463132004631330046313406 +:109CB80000463135004631360046323000463231F2 +:109CC80000463232004633310046333200463431E2 +:109CD80000463432004634330046343400463631C8 +:109CE80000463831004638320046383300200A0D25 +:109CF8000052393920436F6D6D616E642077697445 +:109D08006820636F64653A20002C20583A20002CA4 +:109D180020593A20002C205A3A20002C20533A206F +:109D2800002C20503A20002C20563A20002C205796 +:109D38003A20002C20543A20002C20453A20002CB0 +:109D4800204D3A20002C20513A200000000000113C +:109D5800391839E9386E616E00696E66006F76668B +:109D6800002E0000000000D6413F3F7F41AB418FED +:049D780041CB41009A +:00000001FF diff --git a/priv/migrations/1489428133596421836-disable_ssh_mimgration.exs b/priv/migrations/1489428133596421836-disable_ssh_mimgration.exs new file mode 100644 index 00000000..967ddc5e --- /dev/null +++ b/priv/migrations/1489428133596421836-disable_ssh_mimgration.exs @@ -0,0 +1,15 @@ +defmodule DisableSSH do + def run(json) do + network = json["network"] + net_config = + if network do + # if we have a network config, make ssh key false + Map.put(network, "ssh", false) + else + # if no network, just make it false. + false + end + + %{json | "network" => net_config} + end +end diff --git a/priv/migrations/1489428404793256888-remove_fw_updates_migration.exs b/priv/migrations/1489428404793256888-remove_fw_updates_migration.exs new file mode 100644 index 00000000..f4b98ec3 --- /dev/null +++ b/priv/migrations/1489428404793256888-remove_fw_updates_migration.exs @@ -0,0 +1,7 @@ +defmodule RemoveArduinoFwUpdates do + def run(json) do + configuration = json["configuration"] + configuration = Map.delete(configuration, "fw_auto_update") + %{json | "configuration" => configuration} + end +end diff --git a/priv/migrations/1489430596999249438-custom_arduino_fw_migration.exs b/priv/migrations/1489430596999249438-custom_arduino_fw_migration.exs new file mode 100644 index 00000000..67b70a1c --- /dev/null +++ b/priv/migrations/1489430596999249438-custom_arduino_fw_migration.exs @@ -0,0 +1,7 @@ +defmodule RemoveArduinoFwUpdates do + def run(json) do + hardware = json["hardware"] + hardware = Map.put(hardware, "custom_firmware", false) + %{json | "hardware" => hardware} + end +end diff --git a/test/bot_state/bot_state_test.exs b/test/bot_state/bot_state_test.exs index 587e5d5f..c375d2f0 100644 --- a/test/bot_state/bot_state_test.exs +++ b/test/bot_state/bot_state_test.exs @@ -49,10 +49,6 @@ defmodule Farmbot.BotStateTest do os_auto_update = Farmbot.BotState.get_config(:os_auto_update) assert(os_auto_update == false) - true = Farmbot.BotState.update_config("fw_auto_update", false) - fw_auto_update = Farmbot.BotState.get_config(:fw_auto_update) - assert(fw_auto_update == false) - true = Farmbot.BotState.update_config("steps_per_mm_x", 123) true = Farmbot.BotState.update_config("steps_per_mm_y", 456) true = Farmbot.BotState.update_config("steps_per_mm_z", 789) diff --git a/web/ts/advanced_settings.tsx b/web/ts/advanced_settings.tsx index 8c210bdf..f36e8e02 100644 --- a/web/ts/advanced_settings.tsx +++ b/web/ts/advanced_settings.tsx @@ -6,10 +6,11 @@ import { observer } from "mobx-react"; interface Props { mobx: MainState; } -export function AdvancedSettings({mobx}: Props) { +export function AdvancedSettings({ mobx }: Props) { let ssh = false; - let ntp = false + let ntp = false; let hasNetwork = mobx.configuration.network ? true : false; + let customFW = false; if (mobx.configuration.network) { ssh = mobx.configuration.network.ssh; @@ -22,9 +23,20 @@ export function AdvancedSettings({mobx}: Props) { + }}> Factory Reset your bot! + {/* Allow the user to force custom firmware */} +
+ + { + customFW = event.currentTarget.checked; + mobx.CustomFW(customFW); + }} /> +
+ {/* Allow the user to force network to be enabled */}
@@ -33,8 +45,7 @@ export function AdvancedSettings({mobx}: Props) { onChange={(event) => { mobx.toggleNetwork(); hasNetwork = event.currentTarget.checked; - } - } /> + }} />
{/* hide these settings if we dont have network */} @@ -46,7 +57,7 @@ export function AdvancedSettings({mobx}: Props) { onChange={(event) => { let blah = event.currentTarget.checked; mobx.toggleSSH(blah); - } } /> + }} /> {/* NTP */} @@ -56,10 +67,12 @@ export function AdvancedSettings({mobx}: Props) { onChange={(event) => { let blah = event.currentTarget.checked; mobx.toggleNTP(blah); - } } /> + }} /> + + } \ No newline at end of file diff --git a/web/ts/interfaces.ts b/web/ts/interfaces.ts index 6e52e56e..932a270b 100644 --- a/web/ts/interfaces.ts +++ b/web/ts/interfaces.ts @@ -66,11 +66,11 @@ export interface DhcpConfigFileNetIface extends ConfigFileNetIface { default: "dhcp"; } -/** Farmbot's Configuratrion +/** Farmbot's Configuratrion * doing an HTTP get to "/api/config" will give the bots current config. */ export interface BotConfigFile { - /** network false indicates that farmbot will already have network + /** network false indicates that farmbot will already have network * when started. */ network: { @@ -92,8 +92,6 @@ export interface BotConfigFile { configuration: { /** auto update the operating system */ os_auto_update: boolean; - /** auto update the arduino firmware */ - fw_auto_update: boolean; /** steps per milimeter for the arduino firmware */ steps_per_mm: { x: number; @@ -104,6 +102,7 @@ export interface BotConfigFile { /** hardware mcu stuff */ hardware: { params: McuParams; + custom_firmware: boolean; } } export type LogChannel = "toast"; diff --git a/web/ts/main.tsx b/web/ts/main.tsx index 63cc81fc..700341b4 100644 --- a/web/ts/main.tsx +++ b/web/ts/main.tsx @@ -49,12 +49,12 @@ export class Main extends React.Component { showCustomNetworkWidget: false, ssidSelection: {}, customInterface: null, - connecting: false + connecting: false, }; } @action - handleSubmit(event: React.SyntheticEvent) { + async handleSubmit(event: React.SyntheticEvent) { event.preventDefault(); let mainState = this.props.mobx; let fullFile = mainState.configuration; @@ -65,8 +65,19 @@ export class Main extends React.Component { console.log("server: " + server); if ((email && pass && server) && this.state.connecting != true) { - // this.state.connecting = true; this.setState({ connecting: true }); + + // try to flash the arduino + if (!fullFile.hardware.custom_firmware) { + try { + await mainState.flashFW(); + console.log("Firmware Flashed!!!"); + } catch (_error) { + console.error("Firmware failed!"); + return; + } + } + mainState.uploadCreds(email, pass, server) .then((thing) => { console.log("uploaded web app credentials!"); @@ -75,6 +86,7 @@ export class Main extends React.Component { .catch((thing) => { console.error("Error uploading web app credentials!") }); + } else { console.error("Email, Password, or Server is incomplete or already connecting!") return; diff --git a/web/ts/state.ts b/web/ts/state.ts index 225157ac..862b9345 100644 --- a/web/ts/state.ts +++ b/web/ts/state.ts @@ -62,10 +62,9 @@ export class MainState { }, configuration: { os_auto_update: false, - fw_auto_update: false, steps_per_mm: { x: 500, y: 500, z: 500 } }, - hardware: { params: {} } + hardware: { params: {}, custom_firmware: false } }; @observable ssids: string[] = []; @@ -142,6 +141,15 @@ export class MainState { } } + @action + CustomFW(bool: boolean) { + this.configuration.hardware.custom_firmware = bool; + } + + flashFW() { + return Axios.post("/api/flash_firmware"); + } + enumerateInterfaces() { Axios.get("/api/network/interfaces") .then(this.enumerateInterfacesOK.bind(this))