You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(13) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(50) |
Feb
(137) |
Mar
(84) |
Apr
(36) |
May
(100) |
Jun
(5) |
Jul
|
Aug
(4) |
Sep
(13) |
Oct
(1) |
Nov
(4) |
Dec
(22) |
2011 |
Jan
(4) |
Feb
(9) |
Mar
(113) |
Apr
(76) |
May
(31) |
Jun
(19) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(4) |
Feb
|
Mar
(2) |
Apr
(6) |
May
(19) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(2) |
Apr
(22) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jérémie D. <Ba...@us...> - 2010-03-20 15:09:26
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 8dc0a8c11338c9b18afbe9bd3473370afc110dd7 (commit) from f2213bbbf674944c0d841ddb4a7e71d25010bb2e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 8dc0a8c11338c9b18afbe9bd3473370afc110dd7 Author: Jérémie Dimino <je...@di...> Date: Sat Mar 20 16:08:50 2010 +0100 Display errors in the controller ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/controller.ml b/PC_Mainboard/clients/controller.ml index 329f205..8c58876 100644 --- a/PC_Mainboard/clients/controller.ml +++ b/PC_Mainboard/clients/controller.ml @@ -425,6 +425,13 @@ lwt () = notify (Krobot.Card.state (krobot, `Motor)); notify services; + List.iter + (fun card -> + Lwt_event.always_notify + (fun error -> log_add_line [fg lred; textf "error on card %s: %s" (Krobot.Card.name card) error]) + (Krobot.Card.errors (krobot, card))) + [`Interface; `Sensor; `Motor; `Monitoring]; + (* Redraw immedlatly the screen when [signal] changes: *) let urgent signal = Lwt_signal.always_notify_p (fun _ -> refresh krobot) signal in urgent Lwt_term.size; diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 8705b76..41c7c76 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -678,6 +678,7 @@ struct obus : OBus_object.t; name : string; mutable state : unit Lwt.t React.signal; + mutable errors : unit Lwt.t React.event; } module OBus = OBus_object.Make(struct @@ -721,6 +722,7 @@ struct USB_commands.Card.test (get_card dev) OL_signal StateChanged : Krobot_types.card_state + OL_signal Error : string let make name card path = let dev = { @@ -728,17 +730,19 @@ struct obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; name = name; state = React.S.const (return ()); + errors = React.E.never; } in dev.state <- React.S.map (function | None -> state_changed dev `Absent - | Some _ -> + | Some card -> + dev.errors <- React.E.map (error dev) (Krobot_card.errors card); state_changed dev `Present) card; dev end (* +-----------------------------------------------------------------+ - | Krobot_cards management | + | Krobot_cards management | +-----------------------------------------------------------------+ *) (* Continously try to open the card with given parameters *) diff --git a/PC_Mainboard/driver/krobot_card.ml b/PC_Mainboard/driver/krobot_card.ml index d89b116..f12da8b 100644 --- a/PC_Mainboard/driver/krobot_card.ml +++ b/PC_Mainboard/driver/krobot_card.ml @@ -124,6 +124,9 @@ type card = { abort_wakener : int Lwt.u; (* Sleeping thread which is wakeup when the card is closed *) + errors : string React.event; + push_error : string -> unit; + wrapper : wrapper; (* The associated wrapper *) } @@ -148,12 +151,16 @@ let closed wrapper = match wrapper.state with let watch wrapper = wrapper.watch (* Return a running card, if possible. *) -let rec get_card wrapper = match wrapper.state with +let get_card wrapper = match wrapper.state with | Opened card -> return card | Closed exn -> fail exn +let errors wrapper = match wrapper.state with + | Opened card -> card.errors + | Closed exn -> raise exn + (* +-----------------------------------------------------------------+ | Aborting | +-----------------------------------------------------------------+ *) @@ -235,7 +242,10 @@ let rec dispatch card = ignore (Log.exn_f exn "pushing event %d from %s card failed with" msg.command card.wrapper.name)) seq | None -> - ignore (dropped "command" card msg) + if msg.error <> 0 then + card.push_error (error_message msg.error) + else + ignore (dropped "command" card msg) end; dispatch card end @@ -258,6 +268,7 @@ let rec make ~name ~handle = lwt () = USB.set_configuration handle 1 in lwt () = USB.claim_interface handle 0 in let abort_waiter, abort_wakener = wait () in + let errors, push_error = React.E.create () in let rec card = { serial_pool = (let rec loop = function | 256 -> [] @@ -272,6 +283,8 @@ let rec make ~name ~handle = abort_waiter = abort_waiter; abort_wakener = abort_wakener; wrapper = wrapper; + errors = errors; + push_error = push_error; } and wrapper = { state = Opened card; name = name; diff --git a/PC_Mainboard/driver/krobot_card.mli b/PC_Mainboard/driver/krobot_card.mli index 8c65caf..219bf62 100644 --- a/PC_Mainboard/driver/krobot_card.mli +++ b/PC_Mainboard/driver/krobot_card.mli @@ -57,3 +57,7 @@ val send_command : t -> int -> string -> unit Lwt.t val connect : t -> int -> < event : string React.event; stop : unit > (** [connect card command] connects to signals [command] emitted by [card] *) + +val errors : t -> string React.event + (** [errors card] is an event which occurs each time a card send an + error *) diff --git a/PC_Mainboard/lib_krobot/krobot.ml b/PC_Mainboard/lib_krobot/krobot.ml index a866c75..54647ed 100644 --- a/PC_Mainboard/lib_krobot/krobot.ml +++ b/PC_Mainboard/lib_krobot/krobot.ml @@ -21,6 +21,7 @@ type team = Team_red | Team_green type card = { card_state : Krobot_types.card_state React.signal; + card_errors : string React.event; } type t = { @@ -138,10 +139,38 @@ let create ?peer () = range_finders = range_finders; inhibited_forward_until = inhibited_forward_until; inhibited_backward_until = inhibited_backward_until; - interface = { card_state = card_interface }; - sensor = { card_state = card_sensor }; - motor = { card_state = card_motor }; - monitoring = { card_state = card_monitoring }; + interface = { + card_state = card_interface; + card_errors = (OBus_proxy.connect + (OBus_proxy.make peer ["fr"; "krobot"; "Cards"; "Interface"]) + ~interface:"fr.krobot.Card" + ~member:"Error" + <:obus_type< string >>)#event; + }; + sensor = { + card_state = card_sensor; + card_errors = (OBus_proxy.connect + (OBus_proxy.make peer ["fr"; "krobot"; "Cards"; "Sensor"]) + ~interface:"fr.krobot.Card" + ~member:"Error" + <:obus_type< string >>)#event; + }; + motor = { + card_state = card_motor; + card_errors = (OBus_proxy.connect + (OBus_proxy.make peer ["fr"; "krobot"; "Cards"; "Motor"]) + ~interface:"fr.krobot.Card" + ~member:"Error" + <:obus_type< string >>)#event; + }; + monitoring = { + card_state = card_monitoring; + card_errors = (OBus_proxy.connect + (OBus_proxy.make peer ["fr"; "krobot"; "Cards"; "Monitoring"]) + ~interface:"fr.krobot.Card" + ~member:"Error" + <:obus_type< string >>)#event; + }; } (* +-----------------------------------------------------------------+ @@ -230,6 +259,12 @@ struct | `Motor -> krobot.motor.card_state | `Monitoring -> krobot.monitoring.card_state + let errors (krobot, card) = match card with + | `Interface -> krobot.interface.card_errors + | `Sensor -> krobot.sensor.card_errors + | `Motor -> krobot.motor.card_errors + | `Monitoring -> krobot.monitoring.card_errors + module Proxy = OBus_proxy.Make (struct type proxy = t * card diff --git a/PC_Mainboard/lib_krobot/krobot.mli b/PC_Mainboard/lib_krobot/krobot.mli index 26d12d9..3138a02 100644 --- a/PC_Mainboard/lib_krobot/krobot.mli +++ b/PC_Mainboard/lib_krobot/krobot.mli @@ -139,6 +139,8 @@ module Card : sig val bootloader : t * card -> unit Lwt.t (** Put the card into bootloader mode *) + val errors : t * card -> string React.event + val get_firmware_build : t * card -> string Lwt.t val get_board_info : t * card -> string Lwt.t val reset : t * card -> unit Lwt.t hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2010-03-20 14:39:37
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, motor-nurbs has been updated via 9f4b4583c8aa2e1bd14038afcbd19e061060734b (commit) via f2213bbbf674944c0d841ddb4a7e71d25010bb2e (commit) via 6d667aa1190fcbab5bf284bb921129d239df39b9 (commit) via 0f754d34defcbaa0180012827c71847682968dd9 (commit) via 42ee6b34f06bbb6522cda0d5984944c331e8efa1 (commit) via 2a9f596f387f876e0b9b2aceed83511abb9424fc (commit) via b0f2e736cd7b641239b051f3cffd96e827fccfdb (commit) via 629b4193197faaabf9d7805973df102491af678f (commit) via 53a4fc48142731ae7b198ba19c3fb25e5db1f677 (commit) via f1d6828404338c20cc8d364f6d7b91781326c1aa (commit) via ae44815bfc0c54ff4b99e56c1ed95498973bbc49 (commit) via 1a98cc1a882658e4100bc99f990fd972304ed99e (commit) via 634f84d90d057f6820a840877038335e9984c830 (commit) via 93013eb819e3abe48ddd1b9794f2d1178395dc68 (commit) via cfc472d8d590b902b4cd16f2d931f62f5677666d (commit) via edf08efe16e1a8a7154641c1fd3005da2f729eeb (commit) via 6a511b012683824b3ec4a3a6b8efda3ee6a237ae (commit) via 58d387423da6e5090bd789065925eac1bf937c5c (commit) via 6795c8d0a9e01b24e1762dd433acc9c48591d393 (commit) via 1df5dc2b427b81fa86804859729ac50f2bcc4377 (commit) via bef19507734097c59756c638a4e7c3b5c8a93371 (commit) via e19264e5e9597d461f24a930b74a1e5034a3a1e4 (commit) via 0c7d257797c48e7e3c60e1c39832214d3cb6f1a4 (commit) via d86af02d7116d36400cf76eaf1b67ffde1a25691 (commit) via 2b26e9ac62a42f86b2e0f92f45b747077ad115f4 (commit) via 43e3061d573cb3f9d03581fc101dc4da46a6941a (commit) via 40d7e9b7b1788708da82a356bd671dd6dbccf68f (commit) via 973aff6d5670f48ceba7442182bcfbdd46e1cf33 (commit) via 88400b5b6737719639fd1ee69fc4b1a9567ab6f3 (commit) via d1bc3f760c9bcaabdb89b83a2d757777a262448d (commit) via bba0433fac2aeb548186bb883b0016fa3583f8c1 (commit) via 6979c0aaac3d8e3225bde86295cbf178e973dafc (commit) via 241c1227982a011ed5387a18dfeae7386e3e9255 (commit) via 3e1aae398963d2424a80c545b19fb0ce3a336c52 (commit) via c654c37eb3a98e2e6178aea67ede87f45f06e2b5 (commit) via ccf8cfd83333c0cbaa929ed8290b564b9401ec7e (commit) via a35db5cb7075a815e8b9d6b3d82529886dd5b70c (commit) via d329a635dc981f9c3cfc984f950dc8eaa9a1fbce (commit) via 94e87a11b68b9753ed5725e75bec5b8298cbe67b (commit) via 1d5ebfa1823c3bccc8dbd250c9b231aaedaa7887 (commit) via 2a834df76aa8ddbca0617408865686f18f99dbab (commit) via 64de58caa3d4bfea3fb420871ae0f090080b694a (commit) via 61f9eb71c06e9e9f33994eef5a47029db8a07baa (commit) via 898dd1a410781431143f0c21e6158de5c4b7624c (commit) via 8902813f33971db1de012160557c87b34a52e8c7 (commit) via ea6ee177b5f55f2c5c1c62c647962596786000a0 (commit) via 6c4e8c5630ad64620ea8228a0a4c56d50b02571f (commit) via 19398dd4d385b2ce50f474cb573743d6ec7f70a6 (commit) via 34e5436fb905872556fa9d0c2f83be2c5764f9d6 (commit) via c0fdebb20f076b97225e3f4ceeb12a25e8895a12 (commit) via 8cc04bff36432dd8189d7c78585e8dd3bfead7aa (commit) via a6e8536a3b19b3d0de30a97cf8ea60ccfddce72e (commit) via 3f23696522eefa513a92a375459c998e5899df2d (commit) via 47260998a8e90353bc2184ad640df1993da7c630 (commit) via 80fe5918d44c802611d6240b92b308dac6bb229a (commit) via a9944f99ef133be4a4f19cb4855833c1648ef6d3 (commit) via 53198a8d5d1d8f51dc3d817a03443aebc4987cce (commit) via 9958104ae2f54521a51358de5ed2ceda0b9b9ba4 (commit) via cdc425a8c48cc4414de80fd9f8c695c2ad92ef7d (commit) via f210a0e3676c019eec203c614a66a685a24d1f7a (commit) via 605fdc677788b43a9549798ac4e4afc0702e1aee (commit) via ec4edc47e210a512d7cb447fb93b4428a5c93cf3 (commit) via ed8ac2f3d06d5a45df789be0c871e252a08ff60c (commit) via f3121e926476263b9b9a082afdfbbd93643149de (commit) via beb30006c75b3a879ce8bbef232f68675743d55a (commit) via 3d05cb1b4e6b5a7976548aab8e639572d47d57ab (commit) via 2e41773908b10cad366a5395fa1f35b5477a1b6a (commit) via d0d1b4f316d589f5b6fe73acb68a160acda7bc7c (commit) via 59f35c0d7c2f0bd92c9ac23fc6d0c6d347833723 (commit) via 81a5f63a2c90f5b3fa53cbc452e6764619d920fa (commit) via dd313e5ea3e145e3516b4765ab9028d78f8d0dc7 (commit) from 5f1263fc05729c7457e97b0c697a120101edfa93 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9f4b4583c8aa2e1bd14038afcbd19e061060734b Merge: 5f1263fc05729c7457e97b0c697a120101edfa93 f2213bbbf674944c0d841ddb4a7e71d25010bb2e Author: Xavier Lagorce <Xav...@cr...> Date: Sat Mar 20 15:38:24 2010 +0100 Merge branch 'master' into motor-nurbs Binary firmwares were rebuild and are firmwares from the current merged branch ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/META b/PC_Mainboard/META new file mode 100644 index 0000000..3a4d1c1 --- /dev/null +++ b/PC_Mainboard/META @@ -0,0 +1,9 @@ +# -*- conf -*- +name = "krobot" +version = "0.1" +description = "Krobot client library" +requires = "obus" +archive(byte) = "krobot.cma" +archive(native) = "krobot.cmxa" +archive(plugin,byte) = "krobot.cma" +archive(plugin,native) = "krobot.cmxs" diff --git a/PC_Mainboard/Makefile b/PC_Mainboard/Makefile index 96a8d60..026a6a4 100644 --- a/PC_Mainboard/Makefile +++ b/PC_Mainboard/Makefile @@ -24,6 +24,14 @@ clean: .PHONY: install install: + $(OF) install krobot META \ + lib_krobot/krobot.mli \ + $(wildcard _build/lib_krobot/*.cmi) \ + $(wildcard _build/lib_krobot/*.cmx) \ + $(wildcard _build/*.cma) \ + $(wildcard _build/*.cmxa) \ + $(wildcard _build/*.cmxs) \ + $(wildcard _build/*.a) install -m 0755 _build/card_tools/send_firmware.best $(PREFIX)/bin/krobot-send-firmware install -m 0755 _build/card_tools/dump_memory.best $(PREFIX)/bin/krobot-dump-memory install -m 0755 _build/tools/forward_dbus.best $(PREFIX)/bin/krobot-forward-dbus @@ -35,6 +43,7 @@ install: .PHONY: uninstall uninstall: + $(OF) remove krobot rm -vf $(PREFIX)/bin/krobot-* .PHONY: reinstall diff --git a/PC_Mainboard/_tags b/PC_Mainboard/_tags index 2b3245a..0d628c0 100644 --- a/PC_Mainboard/_tags +++ b/PC_Mainboard/_tags @@ -38,8 +38,8 @@ # | Common | # +------------------------------------------------------------------+ -<common/{types,util}.{ml,mli}>: syntax_camlp4o, pkg_obus.syntax, pkg_lwt.syntax -<common/{types,util}.*>: pkg_obus +<common/{krobot_types,util}.{ml,mli}>: syntax_camlp4o, pkg_obus.syntax, pkg_lwt.syntax +<common/{krobot_types,util}.*>: pkg_obus # +------------------------------------------------------------------+ # | Driver | diff --git a/PC_Mainboard/card_tools/boardname.mll b/PC_Mainboard/card_tools/boardname.mll index 30f99cf..08df665 100644 --- a/PC_Mainboard/card_tools/boardname.mll +++ b/PC_Mainboard/card_tools/boardname.mll @@ -8,7 +8,7 @@ *) -let boardname_regex = ("Carte " | "Robot Interface") [^'\n']+ +let boardname_regex = ("Carte " | "Robot Interface" | "Battery Monitoring ") [^'\n']+ rule boardname = parse | (boardname_regex as name) '\n' { Some name } diff --git a/PC_Mainboard/card_tools/send_firmware.ml b/PC_Mainboard/card_tools/send_firmware.ml index 443036a..321edb6 100644 --- a/PC_Mainboard/card_tools/send_firmware.ml +++ b/PC_Mainboard/card_tools/send_firmware.ml @@ -41,7 +41,7 @@ let do_flash force filename = lwt () = printf "Flash erased\n" in lwt () = Bootloader.write_flash k ~address memory address length in lwt () = printf "Flashing completed\n" in - lwt () = Bootloader.close k in + lwt () = Bootloader.reset_board k in return () let _ = diff --git a/PC_Mainboard/clients/controller.ml b/PC_Mainboard/clients/controller.ml index a253a34..329f205 100644 --- a/PC_Mainboard/clients/controller.ml +++ b/PC_Mainboard/clients/controller.ml @@ -191,6 +191,8 @@ let rec draw krobot = fg line_color; text " ]─┬─[ "; fg name_color; text "Services"; fg line_color; text " ]─┬─[ "; + fg name_color; text "Cards"; + fg line_color; text " ]─┬─[ "; fg name_color; text "Status"; fg line_color; text " ]─"]; points.(9).(0) <- { line with char = "├" }; @@ -201,15 +203,16 @@ let rec draw krobot = for i = 1 to 8 do points.(i).(20) <- { line with char = "│" }; points.(i).(40) <- { line with char = "│" }; - points.(i).(55) <- { line with char = "│" } + points.(i).(55) <- { line with char = "│" }; + points.(i).(67) <- { line with char = "│" } done; - Draw.textc screen 1 9 [fg line_color; text "───────────────────┴───────────────────┴──────────────┴"]; + Draw.textc screen 1 9 [fg line_color; text "───────────────────┴───────────────────┴──────────────┴───────────┴"]; let zone = Zone.inner screen in let range_finders = React.S.value (Krobot.range_finders krobot) in for i = 0 to Array.length range_finders - 1 do - Draw.textf zone 0 i "%d : %d" i range_finders.(i) + Draw.textc zone 0 i [textf "%d : " i; text (Text.repeat (range_finders.(i) * 14 / 3146) "=")] done; let logic_sensors = React.S.value (Krobot.logic_sensors krobot) in @@ -231,18 +234,20 @@ let rec draw krobot = loop 0 (TextSet.elements (React.S.value services)); let x = 55 in + let text_of_state name = function + | `Absent -> [fg lred; text name] + | `Present -> [text name] + in + Draw.textc zone x 0 (text_of_state "interface" (React.S.value (Krobot.Card.state (krobot, `Interface)))); + Draw.textc zone x 1 (text_of_state "sensor" (React.S.value (Krobot.Card.state (krobot, `Sensor)))); + Draw.textc zone x 2 (text_of_state "motor" (React.S.value (Krobot.Card.state (krobot, `Motor)))); + Draw.textc zone x 3 (text_of_state "monitoring" (React.S.value (Krobot.Card.state (krobot, `Monitoring)))); + let x = x + 12 in Draw.textf zone x 0 "team = %s" (match React.S.value (Krobot.team krobot) with | Krobot.Team_red -> "red" | Krobot.Team_green -> "green"); Draw.textf zone x 1 "jack = %s" (if React.S.value (Krobot.jack krobot) then "present" else "absent"); Draw.textf zone x 2 "compass = %d" (React.S.value (Krobot.compass krobot)); - let text_of_state name = function - | `Absent -> [fg lred; textf "%s card is absent" name] - | `Present -> [textf "%s card is present" name] - in - Draw.textc zone x 3 (text_of_state "interface" (React.S.value (Krobot.Card.state krobot `Interface))); - Draw.textc zone x 4 (text_of_state "sensor" (React.S.value (Krobot.Card.state krobot `Sensor))); - Draw.textc zone x 5 (text_of_state "motor" (React.S.value (Krobot.Card.state krobot `Motor))); let date = Unix.gettimeofday () in let text_of_motor_state mode until = if date < until then @@ -250,8 +255,8 @@ let rec draw krobot = else [text mode; text "OK"] in - Draw.textc zone x 6 (text_of_motor_state "move forward: " (React.S.value (Krobot.inhibited_forward_until krobot))); - Draw.textc zone x 7 (text_of_motor_state "move backward: " (React.S.value (Krobot.inhibited_backward_until krobot))); + Draw.textc zone x 3 (text_of_motor_state "move forward: " (React.S.value (Krobot.inhibited_forward_until krobot))); + Draw.textc zone x 4 (text_of_motor_state "move backward: " (React.S.value (Krobot.inhibited_backward_until krobot))); (* ===== History ===== *) @@ -361,7 +366,7 @@ let refresh krobot = return () else begin refresh_needed := true; - lwt () = Lwt_main.fast_yield () in + lwt () = Lwt.pause () in refresh_needed := false; draw krobot; return () @@ -415,9 +420,9 @@ lwt () = notify (Krobot.jack krobot); notify (Krobot.inhibited_forward_until krobot); notify (Krobot.inhibited_backward_until krobot); - notify (Krobot.Card.state krobot `Interface); - notify (Krobot.Card.state krobot `Sensor); - notify (Krobot.Card.state krobot `Motor); + notify (Krobot.Card.state (krobot, `Interface)); + notify (Krobot.Card.state (krobot, `Sensor)); + notify (Krobot.Card.state (krobot, `Motor)); notify services; (* Redraw immedlatly the screen when [signal] changes: *) diff --git a/PC_Mainboard/clients/info.ml b/PC_Mainboard/clients/info.ml index 99519db..f2e8501 100644 --- a/PC_Mainboard/clients/info.ml +++ b/PC_Mainboard/clients/info.ml @@ -13,10 +13,10 @@ open Lwt open Lwt_io let print_card krobot card = - match React.S.value (Krobot.Card.state krobot card) with + match React.S.value (Krobot.Card.state (krobot , card)) with | `Present -> - lwt firmware_build = Krobot.Card.get_firmware_build krobot card - and board_info = Krobot.Card.get_board_info krobot card in + lwt firmware_build = Krobot.Card.get_firmware_build (krobot, card) + and board_info = Krobot.Card.get_board_info (krobot, card) in let name = Krobot.Card.name card in lwt () = printl "==========" in lwt () = printlf "card.%s.state = present" name in @@ -32,4 +32,5 @@ lwt () = lwt () = print_card krobot `Interface in lwt () = print_card krobot `Sensor in lwt () = print_card krobot `Motor in + lwt () = print_card krobot `Monitoring in return () diff --git a/PC_Mainboard/clients/init_position.ml b/PC_Mainboard/clients/init_position.ml index 0a4e6d9..4e74d75 100644 --- a/PC_Mainboard/clients/init_position.ml +++ b/PC_Mainboard/clients/init_position.ml @@ -28,7 +28,7 @@ lwt () = lwt () = move_backward_slowly krobot in lwt () = Log.notice "going to initial position on first axis" in - lwt _ = Krobot.move krobot ~distance:Config.initial_position ~velocity:400 ~acceleration:800 in + lwt _ = Krobot.move krobot ~distance:Krobot_config.initial_position ~velocity:400 ~acceleration:800 in lwt () = Log.notice "turning" in lwt _ = Krobot.turn krobot ~angle:(-90) ~velocity:400 ~acceleration:800 in @@ -36,7 +36,7 @@ lwt () = lwt () = move_backward_slowly krobot in lwt () = Log.notice "going to initial position on second axis" in - lwt _ = Krobot.move krobot ~distance:Config.initial_position ~velocity:400 ~acceleration:800 in + lwt _ = Krobot.move krobot ~distance:Krobot_config.initial_position ~velocity:400 ~acceleration:800 in lwt () = Log.notice "turning" in lwt _ = Krobot.turn krobot ~angle:45 ~velocity:400 ~acceleration:800 in diff --git a/PC_Mainboard/clients/script.ml b/PC_Mainboard/clients/script.ml index 614e73c..d38ea46 100644 --- a/PC_Mainboard/clients/script.ml +++ b/PC_Mainboard/clients/script.ml @@ -44,15 +44,20 @@ let args_of_command name = let rec after_prefix prefix path = match prefix, path with - | [], p -> Some p - | e1 :: p1, e2 :: p2 when e1 = e2 -> after_prefix p1 p2 - | _ -> None + | [], path -> + Some path + | e1 :: p1, e2 :: p2 when e1 = e2 -> + after_prefix p1 p2 + | [e1], e2 :: p2 when Text.starts_with e2 e1 -> + Some path + | _ -> + None let complete ~before ~after = try match Script_lexer.partial_command (Lexing.from_string before) with | `Command(before, name) -> begin - let full_path, path, name = + let full_path, path, basename = match Text.rev_split ~sep:"." ~max:2 name with | [] -> ("", [], "") @@ -75,12 +80,15 @@ let complete ~before ~after = (TextSet.add name paths, names)) (TextSet.empty, TextSet.empty) !commands) in - let prefix, words = Lwt_read_line.lookup name names in + let prefix, words = Lwt_read_line.lookup basename (TextSet.union paths names) in match TextSet.cardinal words with | 0 -> - Lwt_read_line.complete ~suffix:"." (before ^ full_path) name after paths + { Lwt_read_line.comp_state = (before ^ name, after); + Lwt_read_line.comp_words = words } | 1 -> - { Lwt_read_line.comp_state = (before ^ full_path ^ prefix ^ " ", after); + { Lwt_read_line.comp_state = (before ^ full_path ^ prefix ^ + (if TextSet.mem (TextSet.choose words) paths then "." else " "), + after); Lwt_read_line.comp_words = words } | _ -> { Lwt_read_line.comp_state = (before ^ full_path ^ prefix, after); @@ -183,12 +191,13 @@ let () = register "right" (f3 angle velocity acceleration) (fun logger krobot angle velocity acceleration -> Krobot.turn krobot (-angle) velocity acceleration >>= move_result logger); - register "goto" (f6 - (int ~default:0 "x") (int ~default:0 "y") velocity acceleration - (keyword ~default:`Straight "mode" [("straight", `Straight); - ("curve-left", `Curve_left); - ("curve-right", `Curve_right)]) - (int ~default:0 "bypass-distance")) + register"goto" + (f6 + (int ~default:0 "x") (int ~default:0 "y") velocity acceleration + (keyword ~default:`Straight "mode" [("straight", `Straight); + ("curve-left", `Curve_left); + ("curve-right", `Curve_right)]) + (int ~default:0 "bypass-distance")) (fun logger krobot x y velocity acceleration mode bypass -> Krobot.goto krobot x y velocity acceleration mode bypass >>= move_result logger); @@ -222,20 +231,21 @@ let () = let card = keyword "card" [("interface", `Interface); ("motor", `Motor); - ("sensor", `Sensor)] in + ("sensor", `Sensor); + ("monitoring", `Monitoring)] in - register "bootloader" (f1 card) - (fun logger -> Krobot.Card.bootloader); - register "reset" (f1 card) - (fun logger -> Krobot.Card.reset); - register "test" (f1 card) - (fun logger -> Krobot.Card.test); + register ~path:["card"] "bootloader" (f1 card) + (fun logger krobot card -> Krobot.Card.bootloader (krobot, card)); + register ~path:["card"] "reset" (f1 card) + (fun logger krobot card -> Krobot.Card.reset (krobot, card)); + register ~path:["card"] "test" (f1 card) + (fun logger krobot card -> Krobot.Card.test (krobot, card)); (* +---------------------------------------------------------------+ | Range finders | +---------------------------------------------------------------+ *) - register "get-calibration" f0 + register ~path:["calibration"] "get" f0 (fun logger krobot -> lwt cals = Lwt_list.map_p (Krobot.get_calibration krobot) [0; 1; 2; 3; 4; 5; 6; 7] in let rec loop i = function @@ -252,11 +262,11 @@ let () = in loop 0 cals); - register "calibration-start" (f2 (int "range-finder") (keyword "skip-meas" [("true", true); ("false", false)])) + register ~path:["calibration"] "start" (f2 (int "range-finder") (keyword "skip-meas" [("true", true); ("false", false)])) (fun logger -> Krobot.calibration_start); - register "calibration-stop" f0 + register ~path:["calibration"] "stop" f0 (fun logger -> Krobot.calibration_stop); - register "calibration-continue" f0 + register ~path:["calibration"] "continue" f0 (fun logger -> Krobot.calibration_continue); (* +---------------------------------------------------------------+ @@ -265,7 +275,7 @@ let () = let id = int "id" and position = int "position" - and velocity = int ~default:50 "velocity" + and velocity = int ~default:Krobot_config.ax12_default_velocity "velocity" and timeout = int ~default:100 "timeout" and goto_mode = keyword ~default:`Now "mode" [("now", `Now); ("action", `Action)] in @@ -292,16 +302,28 @@ let () = register ~path:["ax12"] "get-stats" (f2 id timeout) (fun logger krobot id timeout -> lwt stats = Krobot_unsafe.AX12.get_stats krobot id timeout in - lwt () = logger [textf "ax12[%d] position = %d" id stats.Types.ax12_position] in - lwt () = logger [textf "ax12[%d] velocity = %d" id stats.Types.ax12_velocity] in - lwt () = logger [textf "ax12[%d] torque = %d" id stats.Types.ax12_torque] in - lwt () = logger [textf "ax12[%d] voltage = %d" id stats.Types.ax12_voltage] in - lwt () = logger [textf "ax12[%d] temperature = %d" id stats.Types.ax12_temperature] in - lwt () = logger [textf "ax12[%d] cw-angle-limit = %d" id stats.Types.ax12_cw_angle_limit] in - lwt () = logger [textf "ax12[%d] ccw-angle-limit = %d" id stats.Types.ax12_ccw_angle_limit] in + lwt () = logger [textf "ax12[%d] position = %d" id stats.Krobot_types.ax12_position] in + lwt () = logger [textf "ax12[%d] velocity = %d" id stats.Krobot_types.ax12_velocity] in + lwt () = logger [textf "ax12[%d] torque = %d" id stats.Krobot_types.ax12_torque] in + lwt () = logger [textf "ax12[%d] voltage = %d" id stats.Krobot_types.ax12_voltage] in + lwt () = logger [textf "ax12[%d] temperature = %d" id stats.Krobot_types.ax12_temperature] in + lwt () = logger [textf "ax12[%d] cw-angle-limit = %d" id stats.Krobot_types.ax12_cw_angle_limit] in + lwt () = logger [textf "ax12[%d] ccw-angle-limit = %d" id stats.Krobot_types.ax12_ccw_angle_limit] in return ()); register ~path:["ax12"] "action" (f1 (int ~default:254 "id")) (fun logger krobot id -> - Krobot_unsafe.AX12.action krobot id) + Krobot_unsafe.AX12.action krobot id); + + (* +---------------------------------------------------------------+ + | Grip | + +---------------------------------------------------------------+ *) + + register ~path:["grip"] "up" f0 + (fun logger krobot -> + Krobot.grip_up krobot); + register ~path:["grip"] "down" f0 + (fun logger krobot -> + Krobot.grip_down krobot) + let () = Script_unsafe.register () diff --git a/PC_Mainboard/clients/script_commands.ml b/PC_Mainboard/clients/script_commands.ml index b7369a4..0c92b84 100644 --- a/PC_Mainboard/clients/script_commands.ml +++ b/PC_Mainboard/clients/script_commands.ml @@ -9,7 +9,7 @@ (* +-----------------------------------------------------------------+ - | Types | + | Krobot_types | +-----------------------------------------------------------------+ *) type logger = Lwt_term.styled_text -> unit Lwt.t @@ -18,6 +18,7 @@ type logger = Lwt_term.styled_text -> unit Lwt.t type arg_type = | Int | Float + | String | Keyword of string list type command = { @@ -130,6 +131,13 @@ let int ?default name = { a_default = default; } +let string ?default name = { + a_name = name; + a_type = String; + a_cast = (fun str -> str); + a_default = default; +} + let float ?default name = { a_name = name; a_type = Float; diff --git a/PC_Mainboard/common/PcInterface.h b/PC_Mainboard/common/PcInterface.h index e79e8fa..a24b00c 100644 --- a/PC_Mainboard/common/PcInterface.h +++ b/PC_Mainboard/common/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -79,6 +80,7 @@ typedef struct _UP { #define GET_POWER_STATE 13 ///< Etat de l'alimentation de puissance (On/Off) [Battery Monitoring] #define GET_BATTERY_STATE 14 ///< Etat des batteries (Pleine charge/Charge moyenne/Charge faible) [Battery Monitoring] #define GET_CURRENT_SPEED 15 ///< Demande au PIC la valeur actuelle d'un moteur [Carte d'asservissement] +#define GET_INTEGRATION_SUM 16 ///< Demande au PIC la valeur actuelle du terme integration de l'asservissement [Carte d'asservissement] // CMD_ERR arguments #define ERR_UNKNOWN_CMD 1 ///< Commande inconnue @@ -90,6 +92,9 @@ typedef struct _UP { #define ERR_AX12_CHKSUM 7 #define ERR_CMP03_NOT_RESPONDING 8 #define ERR_ADJD_S371_NOT_RESPONDING 9 +#define ERR_LM_COMMAND_ERROR 10 +#define ERR_LM_POSITION_ERROR 11 +#define ERR_INVALID_AXIS 12 // CMD_SET arguments #define SET_PORTS_CONFIG_INPUTS 0x00 ///< Dnir les entr du PIC @@ -119,16 +124,18 @@ typedef struct _UP { #define RESET_SOURCE_MCLR 0x07 ///< Master Clear Reset // CMD_AX12 -#define AX12_PING 0x01 -#define AX12_READ 0x02 -#define AX12_WRITE 0x03 -#define AX12_GOTO 0x04 -#define AX12_GET_POS 0x05 -#define AX12_GET_SPEED 0x06 -#define AX12_GET_LOAD 0x07 -#define AX12_GET_STATS 0x08 -#define AX12_WRITE_REG 0x09 -#define AX12_ACTION 0x10 +#define AX12_PING 1 +#define AX12_READ 2 +#define AX12_WRITE 3 +#define AX12_GOTO 4 +#define AX12_GET_POS 5 +#define AX12_GET_SPEED 6 +#define AX12_GET_LOAD 7 +#define AX12_GET_STATS 8 +#define AX12_WRITE_REG 9 +#define AX12_ACTION 10 +#define AX12_RESET 11 +#define AX12_CONFIG 12 #define AX12_VALUE8 0x00 #define AX12_VALUE16 0x01 @@ -136,6 +143,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 @@ -153,6 +170,7 @@ typedef struct _UP { #define TRAJ_START 0x0D #define TRAJ_GET_REL_POS 0x0E #define TRAJ_READ_CONFIG 0x0F +#define TRAJ_TURN 0x10 #define TRAJ_NOT_COMPLETED 0x00 #define TRAJ_COMPLETED 0x01 @@ -166,9 +184,9 @@ typedef struct _UP { #define MOTOR_DISABLE 2 #define MOTOR_MOVE 3 -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt // XXX omplr #define READ_VERSION 0x00 diff --git a/PC_Mainboard/common/config.ml b/PC_Mainboard/common/config.ml deleted file mode 100644 index c248d6e..0000000 --- a/PC_Mainboard/common/config.ml +++ /dev/null @@ -1,15 +0,0 @@ -(* - * config.ml - * --------- - * Copyright : (c) 2010, Jeremie Dimino <je...@di...> - * Licence : BSD3 - * - * This file is a part of [kro]bot. - *) - -let back_sensors = [3; 6; 7; 10] -let front_sensors = [0; 1; 2; 4; 5; 8; 9; 11; 12; 13; 14; 15] -let initial_position = 200 -let bus_address = "unix:abstract=krobot" -let update_delay = 0.05 -let reopen_delay = 1.0 diff --git a/PC_Mainboard/common/config.mli b/PC_Mainboard/common/config.mli deleted file mode 100644 index 645ac10..0000000 --- a/PC_Mainboard/common/config.mli +++ /dev/null @@ -1,28 +0,0 @@ -(* - * config.mli - * ---------- - * Copyright : (c) 2010, Jeremie Dimino <je...@di...> - * Licence : BSD3 - * - * This file is a part of [kro]bot. - *) - -(** Krobot parameters *) - -val front_sensors : int list - (** List of front sensors *) - -val back_sensors : int list - (** List of back sensors *) - -val initial_position : int - (** Position to borders at the beginning of the match *) - -val bus_address : string - (** Default address of the krobot dbus daemon *) - -val update_delay : float - (** Time to wait between updates *) - -val reopen_delay : float - (** Time to wait before retrying to open a card *) diff --git a/PC_Mainboard/common/krobot_config.ml b/PC_Mainboard/common/krobot_config.ml new file mode 100644 index 0000000..1895a58 --- /dev/null +++ b/PC_Mainboard/common/krobot_config.ml @@ -0,0 +1,20 @@ +(* + * krobot_config.ml + * ---------------- + * Copyright : (c) 2010, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + *) + +let back_sensors = [3; 6; 7; 10] +let front_sensors = [0; 1; 2; 4; 5; 8; 9; 11; 12; 13; 14; 15] +let initial_position = 200 +let bus_address = "unix:abstract=krobot" +let update_delay = 0.05 +let reopen_delay = 1.0 + +let ax12_grip_up_down = 1 +let grip_up_position = 880 +let grip_down_position = 580 +let ax12_default_velocity = 50 diff --git a/PC_Mainboard/common/krobot_config.mli b/PC_Mainboard/common/krobot_config.mli new file mode 100644 index 0000000..aa34719 --- /dev/null +++ b/PC_Mainboard/common/krobot_config.mli @@ -0,0 +1,33 @@ +(* + * krobot_config.mli + * ----------------- + * Copyright : (c) 2010, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + *) + +(** Krobot parameters *) + +val front_sensors : int list + (** List of front sensors *) + +val back_sensors : int list + (** List of back sensors *) + +val initial_position : int + (** Position to borders at the beginning of the match *) + +val bus_address : string + (** Default address of the krobot dbus daemon *) + +val update_delay : float + (** Time to wait between updates *) + +val reopen_delay : float + (** Time to wait before retrying to open a card *) + +val ax12_grip_up_down : int +val grip_up_position : int +val grip_down_position : int +val ax12_default_velocity : int diff --git a/PC_Mainboard/common/krobot_types.ml b/PC_Mainboard/common/krobot_types.ml new file mode 100644 index 0000000..b10800c --- /dev/null +++ b/PC_Mainboard/common/krobot_types.ml @@ -0,0 +1,75 @@ +(* + * krobot_types.ml + * --------------- + * Copyright : (c) 2010, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + *) + +open OBus_pervasives + +type move_result = [ `OK | `Stopped ] + +let obus_move_result = + OBus_type.mapping obus_int [(`OK, 0); (`Stopped, 1)] + +type motor = [ `Left | `Right | `Both ] + +let obus_motor = OBus_type.mapping obus_int + [(`Left, -1); + (`Both, 0); + (`Right, 1)] + +type stop_mode = [ `Off | `Abrupt | `Smooth ] + +let obus_stop_mode = OBus_type.mapping obus_int + [(`Off, 0); + (`Abrupt, 1); + (`Smooth, 2)] + +type card_state = [ `Present | `Absent ] + +let obus_card_state = OBus_type.mapping obus_int + [(`Present, 0); + (`Absent, 1)] + +type goto_mode = [ `Straight | `Curve_right | `Curve_left ] + +let obus_goto_mode = OBus_type.mapping obus_int + [(`Straight, 0); + (`Curve_right, 1); + (`Curve_left, 2)] + +type ax12_stats = { + ax12_position : int; + ax12_velocity : int; + ax12_torque : int; + ax12_voltage : int; + ax12_temperature : int; + ax12_cw_angle_limit : int; + ax12_ccw_angle_limit : int; +} with obus + +type exec_mode = [ `Now | `Action ] + +let obus_exec_mode = OBus_type.mapping obus_int + [(`Now, 0); (`Action, 1)] + +type direction = [ `Forward | `Backward ] + +let obus_direction = OBus_type.mapping obus_int + [(`Forward, 0); (`Backward, 1)] + +type ax12_action = { + aa_id : int; + aa_position : int; + aa_velocity : int; +} with obus + +type motor_config = { + motor_kp : int; + motor_ki : int; + motor_kd : int; + motor_li : int; +} with obus diff --git a/PC_Mainboard/common/krobot_types.mli b/PC_Mainboard/common/krobot_types.mli new file mode 100644 index 0000000..56d042b --- /dev/null +++ b/PC_Mainboard/common/krobot_types.mli @@ -0,0 +1,62 @@ +(* + * krobot_types.mli + * ---------------- + * Copyright : (c) 2010, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + *) + +(** Common types with their obus type combinators *) + +(** This types are used by the driver and the client-side krobot + library. + + Putting in a module shared by the client and the server prevents + typos in conversions. *) + +type move_result = [ `OK | `Stopped ] with obus(basic) + (** Result of a movement started by [Krobot.move] or + [Krobot.turn] *) + +type motor = [ `Left | `Right | `Both ] with obus(basic) + (** Motors *) + +type stop_mode = [ `Off | `Abrupt | `Smooth ] with obus(basic) + (** Mode for stopping motors *) + +type direction = [ `Forward | `Backward ] with obus(basic) + +type card_state = [ `Present | `Absent ] with obus(basic) + (** State of a card *) + +type goto_mode = [ `Straight | `Curve_right | `Curve_left ] with obus(basic) + (** Form of the trajectory for the goto command *) + +type exec_mode = [ `Now | `Action ] with obus(basic) + (** Mode of execution of the goto command for ax12 *) + +type ax12_stats = { + ax12_position : int; + ax12_velocity : int; + ax12_torque : int; + ax12_voltage : int; + ax12_temperature : int; + ax12_cw_angle_limit : int; + ax12_ccw_angle_limit : int; +} with obus(sequence) + +(** Action on an AX12: *) +type ax12_action = { + aa_id : int; + aa_position : int; + aa_velocity : int; +} with obus(sequence) + +(** Motor configuration *) +type motor_config = { + motor_kp : int; + motor_ki : int; + motor_kd : int; + motor_li : int; +} with obus(sequence) diff --git a/PC_Mainboard/common/types.ml b/PC_Mainboard/common/types.ml deleted file mode 100644 index 3f970ca..0000000 --- a/PC_Mainboard/common/types.ml +++ /dev/null @@ -1,68 +0,0 @@ -(* - * types.ml - * -------- - * Copyright : (c) 2010, Jeremie Dimino <je...@di...> - * Licence : BSD3 - * - * This file is a part of [kro]bot. - *) - -open OBus_pervasives - -type move_result = [ `OK | `Stopped ] - -let obus_move_result = - OBus_type.mapping obus_int [(`OK, 0); (`Stopped, 1)] - -type motor = [ `Left | `Right | `Both ] - -let obus_motor = OBus_type.mapping obus_int - [(`Left, -1); - (`Both, 0); - (`Right, 1)] - -type stop_mode = [ `Off | `Abrupt | `Smooth ] - -let obus_stop_mode = OBus_type.mapping obus_int - [(`Off, 0); - (`Abrupt, 1); - (`Smooth, 2)] - -type card_state = [ `Present | `Absent ] - -let obus_card_state = OBus_type.mapping obus_int - [(`Present, 0); - (`Absent, 1)] - -type goto_mode = [ `Straight | `Curve_right | `Curve_left ] - -let obus_goto_mode = OBus_type.mapping obus_int - [(`Straight, 0); - (`Curve_right, 1); - (`Curve_left, 2)] - -type ax12_stats = { - ax12_position : int; - ax12_velocity : int; - ax12_torque : int; - ax12_voltage : int; - ax12_temperature : int; - ax12_cw_angle_limit : int; - ax12_ccw_angle_limit : int; -} with obus - -type exec_mode = [ `Now | `Action ] - -let obus_exec_mode = OBus_type.mapping obus_int - [(`Now, 0); (`Action, 1)] - -type direction = [ `Forward | `Backward ] - -let obus_direction = OBus_type.mapping obus_int - [(`Forward, 0); (`Backward, 1)] - -type ax12_action = { - aa_id : int; - aa_position : int; - aa_velocity : int; -} with obus diff --git a/PC_Mainboard/common/types.mli b/PC_Mainboard/common/types.mli deleted file mode 100644 index 6fa04c8..0000000 --- a/PC_Mainboard/common/types.mli +++ /dev/null @@ -1,54 +0,0 @@ -(* - * types.mli - * --------- - * Copyright : (c) 2010, Jeremie Dimino <je...@di...> - * Licence : BSD3 - * - * This file is a part of [kro]bot. - *) - -(** Common types with their obus type combinators *) - -(** This types are used by the driver and the client-side krobot - library. - - Putting in a module shared by the client and the server prevents - typos in conversions. *) - -type move_result = [ `OK | `Stopped ] with obus(basic) - (** Result of a movement started by [Krobot.move] or - [Krobot.turn] *) - -type motor = [ `Left | `Right | `Both ] with obus(basic) - (** Motors *) - -type stop_mode = [ `Off | `Abrupt | `Smooth ] with obus(basic) - (** Mode for stopping motors *) - -type direction = [ `Forward | `Backward ] with obus(basic) - -type card_state = [ `Present | `Absent ] with obus(basic) - (** State of a card *) - -type goto_mode = [ `Straight | `Curve_right | `Curve_left ] with obus(basic) - (** Form of the trajectory for the goto command *) - -type exec_mode = [ `Now | `Action ] with obus(basic) - (** Mode of execution of the goto command for ax12 *) - -type ax12_stats = { - ax12_position : int; - ax12_velocity : int; - ax12_torque : int; - ax12_voltage : int; - ax12_temperature : int; - ax12_cw_angle_limit : int; - ax12_ccw_angle_limit : int; -} with obus(sequence) - -(** Action on an AX12: *) -type ax12_action = { - aa_id : int; - aa_position : int; - aa_velocity : int; -} with obus(sequence) diff --git a/PC_Mainboard/common/util.ml b/PC_Mainboard/common/util.ml index 705623f..1f3ca4f 100644 --- a/PC_Mainboard/common/util.ml +++ b/PC_Mainboard/common/util.ml @@ -13,7 +13,7 @@ let front_collide sensors = if Array.length sensors <> 16 then invalid_arg "Until.front_collide"; let rec loop = function | 16 -> false - | n -> (sensors.(n) && List.mem n Config.front_sensors) || loop (n + 1) + | n -> (sensors.(n) && List.mem n Krobot_config.front_sensors) || loop (n + 1) in loop 0 @@ -21,7 +21,7 @@ let back_collide sensors = if Array.length sensors <> 16 then invalid_arg "Until.back_collide"; let rec loop = function | 16 -> false - | n -> (sensors.(n) && List.mem n Config.back_sensors) || loop (n + 1) + | n -> (sensors.(n) && List.mem n Krobot_config.back_sensors) || loop (n + 1) in loop 0 diff --git a/PC_Mainboard/driver/bus.conf b/PC_Mainboard/driver/bus.conf index 9808b8e..0fb7c62 100644 --- a/PC_Mainboard/driver/bus.conf +++ b/PC_Mainboard/driver/bus.conf @@ -1,5 +1,5 @@ -<!-- Configuration for the dbus daemon --> -<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN" +<!-- Krobot_configuration for the dbus daemon --> +<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Krobot_configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"> <busconfig> <keep_umask/> diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index eae08a2..8705b76 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -12,10 +12,35 @@ module Log = Lwt_log.Make(struct let section = "driver" end) open OBus_pervasives -open Types +open Krobot_types open Lwt (* +-----------------------------------------------------------------+ + | Battery monitoring | + +-----------------------------------------------------------------+ *) + +module Power = +struct + type t = { + obus : OBus_object.t; + card : Krobot_card.t; + } + + module OBus = OBus_object.Make(struct + type obj = t + let cast obj = obj.obus + end) + + module Unsafe = DBus_exports.Power(OBus)(struct let get dev = dev.card end) + + let make card path = + return { + obus = OBus.make ~interfaces:[Unsafe.ol_interface] path; + card = card; + } +end + +(* +-----------------------------------------------------------------+ | Compass | +-----------------------------------------------------------------+ *) @@ -29,31 +54,31 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Compass(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Compass(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.Compass" end) + let ol_interface = OBus.make_interface "fr.krobot.Device.Compass" OL_signal Value : int OL_method Get : int = fun dev -> return dev.data let rec loop dev = - lwt data = USB_commands.Compass.get dev.card in + lwt _, data = USB_commands.Compass.get dev.card in if data <> dev.data then begin dev.data <- data; lwt () = value dev data in - lwt () = Lwt_unix.sleep Config.update_delay in + lwt () = Lwt_unix.sleep Krobot_config.update_delay in loop dev end else - lwt () = Lwt_unix.sleep Config.update_delay in + lwt () = Lwt_unix.sleep Krobot_config.update_delay in loop dev let make card path = - lwt data = USB_commands.Compass.get card in + lwt _, data = USB_commands.Compass.get card in let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; data = data; } in @@ -62,6 +87,53 @@ struct end (* +-----------------------------------------------------------------+ + | LCD | + +-----------------------------------------------------------------+ *) + +module LCD = +struct + type t = { + obus : OBus_object.t; + card : Krobot_card.t; + } + + module OBus = OBus_object.Make(struct + type obj = t + let cast obj = obj.obus + end) + + module Unsafe = DBus_exports.LCD(OBus)(struct let get dev = dev.card end) + + let ol_interface = OBus.make_interface "fr.krobot.Device.LCD" + + OL_method SetLCD : string list -> unit = fun dev lines -> + if List.length lines > 4 || List.exists (fun line -> String.length line > 20) lines then + invalid_arg "SetLCD" + else begin + lwt () = Unsafe.clear dev in + lwt () = Unsafe.cursor_off dev in + let rec loop i = function + | [] -> + return () + | line :: lines -> + lwt () = Unsafe.write_line dev i line in + loop (i + 1) lines + in + loop 1 lines + end + + OL_method BacklightOn : unit = Unsafe.backlight_on + OL_method BacklightOff : unit = Unsafe.backlight_off + + let make card path = + let dev = { + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; + card = card; + } in + return dev +end + +(* +-----------------------------------------------------------------+ | AX12 | +-----------------------------------------------------------------+ *) @@ -74,14 +146,14 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.AX12(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.AX12(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.AX12" end) + let ol_interface = OBus.make_interface "fr.krobot.Device.AX12" - OL_method SetAX12 : Types.ax12_action structure list -> unit = fun dev actions -> + OL_method SetAX12 : Krobot_types.ax12_action structure list -> unit = fun dev actions -> lwt () = Lwt_list.iter_p (fun action -> @@ -95,9 +167,15 @@ struct in USB_commands.AX12.action dev.card ~id:0xfe + OL_method GripUp : unit = fun dev -> + set_ax12 dev [{ aa_id = Krobot_config.ax12_grip_up_down; aa_position = Krobot_config.grip_up_position; aa_velocity = Krobot_config.ax12_default_velocity }] + + OL_method GripDown : unit = fun dev -> + set_ax12 dev [{ aa_id = Krobot_config.ax12_grip_up_down; aa_position = Krobot_config.grip_down_position; aa_velocity = Krobot_config.ax12_default_velocity }] + let make card path = return { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; } end @@ -116,12 +194,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Logic_sensors(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Logic_sensors(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.LogicSensors" end) + let ol_interface = OBus.make_interface "fr.krobot.Device.LogicSensors" OL_signal Value : bool array OL_method Get : bool array = fun dev -> return dev.data @@ -131,15 +209,15 @@ struct if data <> dev.data then begin dev.data <- data; lwt () = value dev data in - lwt () = Lwt_unix.sleep Config.update_delay in + lwt () = Lwt_unix.sleep Krobot_config.update_delay in loop dev end else - lwt () = Lwt_unix.sleep Config.update_delay in + lwt () = Lwt_unix.sleep Krobot_config.update_delay in loop dev let make card path = let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; data = Array.create 16 false; } in @@ -161,12 +239,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Range_finders(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Range_finders(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.RangeFinders" end) + let ol_interface = OBus.make_interface "fr.krobot.Device.RangeFinders" OL_signal Value : int array OL_method Get : int array = fun dev -> return dev.data @@ -185,15 +263,15 @@ struct if data <> dev.data then begin dev.data <- data; lwt () = value dev data in - lwt () = Lwt_unix.sleep Config.update_delay in + lwt () = Lwt_unix.sleep Krobot_config.update_delay in loop dev end else - lwt () = Lwt_unix.sleep Config.update_delay in + lwt () = Lwt_unix.sleep Krobot_config.update_delay in loop dev let make card path = let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; data = Array.create 8 0; } in @@ -250,12 +328,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Motors(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Motors(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.Motors" end) + let ol_interface = OBus.make_interface "fr.krobot.Device.Motors" let string_of_direction = function | `Forward -> "forward" @@ -310,14 +388,14 @@ struct dev.state <- Trajectory trajectory; let thread = Lwt_event.next dev.traj_completed >> return () in lwt () = - select [waiter; - (lwt () = - if dist > 0 then - USB_commands.Motors.forward dev.card dist velocity acc - else - USB_commands.Motors.backward dev.card (-dist) velocity acc - in - thread)] + pick [waiter; + (lwt () = + if dist > 0 then + USB_commands.Motors.forward dev.card dist velocity acc + else + USB_commands.Motors.backward dev.card (-dist) velocity acc + in + thread)] in dev.state <- Static; return (if trajectory.stopped then `Stopped else `OK) @@ -346,14 +424,14 @@ struct dev.state <- Trajectory trajectory; let thread = Lwt_event.next dev.traj_completed >> return () in lwt () = - select [waiter; - (lwt () = - if angle > 0 then - USB_commands.Motors.left dev.card angle velocity acc - else - USB_commands.Motors.right dev.card (-angle) velocity acc - in - thread)] + pick [waiter; + (lwt () = + if angle > 0 then + USB_commands.Motors.left dev.card angle velocity acc + else + USB_commands.Motors.right dev.card (-angle) velocity acc + in + thread)] in dev.state <- Static; return (if trajectory.stopped then `Stopped else `OK) @@ -390,24 +468,24 @@ struct dev.state <- Trajectory trajectory; let thread = Lwt_event.next dev.traj_completed >> return () in lwt () = - select [waiter; - (lwt () = - USB_commands.Motors.goto dev.card - ~x ~y - ~velocity:velocity - ~acceleration:acc - ~mode - ~bypass_distance - in - thread)] + pick [waiter; + (lwt () = + USB_commands.Motors.goto dev.card + ~x ~y + ~velocity:velocity + ~acceleration:acc + ~mode + ~bypass_distance + in + thread)] in dev.state <- Static; return (if trajectory.stopped then `Stopped else `OK) end - OL_method Turn : int -> int -> int -> Types.move_result - OL_method Move : int -> int -> int -> Types.move_result - OL_method Goto : int -> int -> int -> int -> Types.goto_mode -> int -> Types.move_result + OL_method Turn : int -> int -> int -> Krobot_types.move_result + OL_method Move : int -> int -> int -> Krobot_types.move_result + OL_method Goto : int -> int -> int -> int -> Krobot_types.goto_mode -> int -> Krobot_types.move_result (* +---------------------------------------------------------------+ | Manually sets the velocity and acceleration of each motor | @@ -485,7 +563,7 @@ struct let static = { velocity = 0; acceleration = 0; direction = `Forward } in _set_velocities dev (return ()) (static, static) velocities accelerations duration - OL_method StopMotors : Types.stop_mode -> unit + OL_method StopMotors : Krobot_types.stop_mode -> unit OL_method SetVelocities : int * int -> int * int -> float -> unit (* +---------------------------------------------------------------+ @@ -534,7 +612,7 @@ struct let make card path = let commands = React.E.map (fun data -> Char.code data.[0]) (Krobot_card.connect card PcInterface.cmd_traj)#event in let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; inhibit_forward_until = 0.0; inhibit_backward_until = 0.0; @@ -551,19 +629,13 @@ end let done_waiter, done_wakener = Lwt.wait () let quit = ref false let card_interface, set_card_interface = React.S.create None +let card_monitoring, set_card_monitoring = React.S.create None let card_sensor, set_card_sensor = React.S.create None let card_motor, set_card_motor = React.S.create None module Manager = struct - let manager = OBus_object.make ["fr"; "krobot"; "Manager"] - - module OBus = OBus_object.Make(struct - type obj = unit - let get _ = manager - end) - - include OBus.MakeInterface(struct let name = "fr.krobot.Manager" end) + let ol_interface = OBus_object.make_interface "fr.krobot.Manager" let close card = match React.S.value card with | None -> @@ -571,24 +643,28 @@ struct | Some card -> Krobot_card.close card - OL_method CardStates : OBus_connection.t -> Types.card_state * Types.card_state * Types.card_state = fun () connection -> + OL_method CardStates : OBus_connection.t -> Krobot_types.card_state * Krobot_types.card_state * Krobot_types.card_state * Krobot_types.card_state = fun manager connection -> let state card = match React.S.value card with | Some _ -> `Present | None -> `Absent in return (state card_interface, state card_sensor, - state card_motor) + state card_motor, + state card_monitoring) - OL_method Shutdown : OBus_connection.t -> unit = fun () connection -> + OL_method Shutdown : OBus_connection.t -> unit = fun manager connection -> lwt () = Log.info "exiting" in quit := true; lwt () = close card_interface and () = close card_sensor - and () = close card_motor in + and () = close card_motor + and () = close card_monitoring in lwt _ = OBus_bus.release_name connection "fr.krobot.Driver" in Lwt.wakeup done_wakener (); return () + + let manager = OBus_object.make ~interfaces:[ol_interface] ["fr"; "krobot"; "Manager"] end (* +-----------------------------------------------------------------+ @@ -606,7 +682,7 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) let get_card dev = match React.S.value dev.card with @@ -615,14 +691,14 @@ struct | Some card -> card - include DBus_exports.Card(OBus)(struct let get = get_card end) + module Unsafe = DBus_exports.Card(OBus)(struct let get = get_card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Card" end) + let ol_interface = OBus.make_interface "fr.krobot.Card" OL_property_r Name : string = fun dev -> return (Krobot_card.name (get_card dev)) - OL_method GetState : Types.card_state = fun dev -> + OL_method GetState : Krobot_types.card_state = fun dev -> match React.S.value dev.card with | None -> return `Absent @@ -644,12 +720,12 @@ struct OL_method Test : unit = fun dev -> USB_commands.Card.test (get_card dev) - OL_signal StateChanged : Types.card_state + OL_signal StateChanged : Krobot_types.card_state let make name card path = let dev = { card = card; - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; name = name; state = React.S.const (return ()); } in @@ -703,7 +779,7 @@ and restart_card ~name ~vendor_id ~product_id ~set on_up on_down = if !quit then return () else begin - lwt () = Lwt_unix.sleep Config.reopen_delay in + lwt () = Lwt_unix.sleep Krobot_config.reopen_delay in monitor_card ~name ~vendor_id ~product_id ~set on_up on_down end @@ -721,7 +797,7 @@ lwt () = Arg.parse args ignore usage_msg; (* Open the krobot message bus *) - lwt bus = OBus_bus.of_addresses (OBus_address.of_string Config.bus_address) in + lwt bus = OBus_bus.of_addresses (OBus_address.of_string Krobot_config.bus_address) in lwt () = try_lwt @@ -757,13 +833,25 @@ lwt () = ignore begin monitor_card ~name:"interace" ~vendor_id:PcInterface.usb_vid ~product_id:PcInterface.usb_pid_robot_interface ~set:set_card_interface (fun card -> - lwt () = USB_commands.Motors.enable card `Both in + lwt () = USB_commands.Servo.enable card `Both in lwt () = Compass.OBus.export bus =|< Compass.make card ["fr"; "krobot"; "Devices"; "Compass"] - and () = AX12.OBus.export bus =|< AX12.make card ["fr"; "krobot"; "Devices"; "AX12"] in + and () = AX12.OBus.export bus =|< AX12.make card ["fr"; "krobot"; "Devices"; "AX12"] + and () = LCD.OBus.export bus =|< LCD.make card ["fr"; "krobot"; "Devices"; "LCD"] in return ()) (fun () -> OBus_object.remove_by_path bus ["fr"; "krobot"; "Devices"; "Compass"]; OBus_object.remove_by_path bus ["fr"; "krobot"; "Devices"; "AX12"]; + OBus_object.remove_by_path bus ["fr"; "krobot"; "Devices"; "LCD"]; + return ()) + end; + + ignore begin + monitor_card ~name:"monitoring" ~vendor_id:PcInterface.usb_vid ~product_id:PcInterface.usb_pid_battery_monitoring ~set:set_card_monitoring + (fun card -> + lwt () = Power.OBus.export bus =|< Power.make card ["fr"; "krobot"; "Devices"; "Power"] in + return ()) + (fun () -> + OBus_object.remove_by_path bus ["fr"; "krobot"; "Devices"; "Power"]; return ()) end; @@ -793,8 +881,9 @@ lwt () = Card.OBus.export bus (Card.make "interface" card_interface ["fr"; "krobot"; "Cards"; "Interface"]); Card.OBus.export bus (Card.make "sensor" card_sensor ["fr"; "krobot"; "Cards"; "Sensor"]); Card.OBus.export bus (Card.make "motor" card_motor ["fr"; "krobot"; "Cards"; "Motor"]); + Card.OBus.export bus (Card.make "monitoring" card_monitoring ["fr"; "krobot"; "Cards"; "Monitoring"]); - Manager.OBus.export bus (); + OBus_object.export bus Manager.manager; lwt () = Log.notice "ready, waiting for requests" in lwt () = done_waiter in diff --git a/PC_Mainboard/driver/krobot_card.ml b/PC_Mainboard/driver/krobot_card.ml index a2ba1be..d89b116 100644 --- a/PC_Mainboard/driver/krobot_card.ml +++ b/PC_Mainboard/driver/krobot_card.ml @@ -11,6 +11,29 @@ module Log = Lwt_log.Make(struct let section = "card" end) open Lwt +let error_messages = [ + PcInterface.err_unknown_cmd, "unknown command"; + PcInterface.err_unknown_get, "unknown get request"; + PcInterface.err_unknown_set, "unknown set request"; + PcInterface.err_invalid_response, "invalid response"; + PcInterface.err_ax12_wrong_packet, "inva... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-03-20 14:12:01
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via f2213bbbf674944c0d841ddb4a7e71d25010bb2e (commit) from 6d667aa1190fcbab5bf284bb921129d239df39b9 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f2213bbbf674944c0d841ddb4a7e71d25010bb2e Author: Jérémie Dimino <je...@di...> Date: Sat Mar 20 15:09:42 2010 +0100 Handle errors as responses ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 804c532..8705b76 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -388,14 +388,14 @@ struct dev.state <- Trajectory trajectory; let thread = Lwt_event.next dev.traj_completed >> return () in lwt () = - select [waiter; - (lwt () = - if dist > 0 then - USB_commands.Motors.forward dev.card dist velocity acc - else - USB_commands.Motors.backward dev.card (-dist) velocity acc - in - thread)] + pick [waiter; + (lwt () = + if dist > 0 then + USB_commands.Motors.forward dev.card dist velocity acc + else + USB_commands.Motors.backward dev.card (-dist) velocity acc + in + thread)] in dev.state <- Static; return (if trajectory.stopped then `Stopped else `OK) @@ -424,14 +424,14 @@ struct dev.state <- Trajectory trajectory; let thread = Lwt_event.next dev.traj_completed >> return () in lwt () = - select [waiter; - (lwt () = - if angle > 0 then - USB_commands.Motors.left dev.card angle velocity acc - else - USB_commands.Motors.right dev.card (-angle) velocity acc - in - thread)] + pick [waiter; + (lwt () = + if angle > 0 then + USB_commands.Motors.left dev.card angle velocity acc + else + USB_commands.Motors.right dev.card (-angle) velocity acc + in + thread)] in dev.state <- Static; return (if trajectory.stopped then `Stopped else `OK) @@ -468,16 +468,16 @@ struct dev.state <- Trajectory trajectory; let thread = Lwt_event.next dev.traj_completed >> return () in lwt () = - select [waiter; - (lwt () = - USB_commands.Motors.goto dev.card - ~x ~y - ~velocity:velocity - ~acceleration:acc - ~mode - ~bypass_distance - in - thread)] + pick [waiter; + (lwt () = + USB_commands.Motors.goto dev.card + ~x ~y + ~velocity:velocity + ~acceleration:acc + ~mode + ~bypass_distance + in + thread)] in dev.state <- Static; return (if trajectory.stopped then `Stopped else `OK) diff --git a/PC_Mainboard/driver/krobot_card.ml b/PC_Mainboard/driver/krobot_card.ml index 3370f59..d89b116 100644 --- a/PC_Mainboard/driver/krobot_card.ml +++ b/PC_Mainboard/driver/krobot_card.ml @@ -11,6 +11,29 @@ module Log = Lwt_log.Make(struct let section = "card" end) open Lwt +let error_messages = [ + PcInterface.err_unknown_cmd, "unknown command"; + PcInterface.err_unknown_get, "unknown get request"; + PcInterface.err_unknown_set, "unknown set request"; + PcInterface.err_invalid_response, "invalid response"; + PcInterface.err_ax12_wrong_packet, "invalid AX12 packet"; + PcInterface.err_ax12_error, "AX12 error"; + PcInterface.err_ax12_chksum, "invalid checksum of AX12 packet"; + PcInterface.err_cmp03_not_responding, "cmp03 not responding"; + PcInterface.err_adjd_s371_not_responding, "adjd_s371 not responding"; + PcInterface.err_lm_command_error, "lm command error"; + PcInterface.err_lm_position_error, "lm position error"; + PcInterface.err_invalid_axis, "invalid axis"; +] + +let error_message error = + try + List.assoc error error_messages + with Not_found -> + Printf.sprintf "unknown error (%d)" error + +exception Error of string + (* +-----------------------------------------------------------------+ | Messages | +-----------------------------------------------------------------+ *) @@ -161,8 +184,8 @@ let dropped typ card msg = host_serial = %d device_serial = %d command = %d -error = %d -data:" msg.host_serial msg.device_serial msg.command msg.error in +error = %s +data:" msg.host_serial msg.device_serial msg.command (if msg.error <> 0 then error_message msg.error else "none") in Lwt_stream.iter_s (fun line -> Log.warning line) (Lwt_stream.hexdump (Lwt_stream.of_string msg.data)) (* Dispatch incomming messages continously *) @@ -170,11 +193,11 @@ let rec dispatch card = let buffer = String.create 64 in begin try_lwt - select [card.abort_waiter; - USB.interrupt_recv - ~handle:card.handle - ~endpoint:1 - buffer 0 64] >|= fun len -> `OK len + pick [card.abort_waiter; + USB.interrupt_recv + ~handle:card.handle + ~endpoint:1 + buffer 0 64] >|= fun len -> `OK len with exn -> return (`Error exn) end >>= function @@ -195,7 +218,10 @@ let rec dispatch card = | Some wakener -> card.reply_waiters <- Int_map.remove msg.host_serial card.reply_waiters; card.serial_pool <- card.serial_pool @ [msg.host_serial]; - Lwt.wakeup wakener msg.data + if msg.error <> 0 then + Lwt.wakeup_exn wakener (Error(error_message msg.error)) + else + Lwt.wakeup wakener msg.data | None -> ignore (dropped "response" card msg) end else begin @@ -267,7 +293,7 @@ let rec make ~name ~handle = +-----------------------------------------------------------------+ *) let send card buffer = - lwt len = select [card.abort_waiter; USB.interrupt_send ~handle:card.handle ~endpoint:1 buffer 0 64] in + lwt len = pick [card.abort_waiter; USB.interrupt_send ~handle:card.handle ~endpoint:1 buffer 0 64] in if len <> 64 then begin let msg = Printf.sprintf "write on %s card returned %d instead of 64" card.wrapper.name len in lwt () = Log.error msg in diff --git a/PC_Mainboard/driver/krobot_card.mli b/PC_Mainboard/driver/krobot_card.mli index 06063a3..8c65caf 100644 --- a/PC_Mainboard/driver/krobot_card.mli +++ b/PC_Mainboard/driver/krobot_card.mli @@ -30,6 +30,9 @@ exception Card_closed exception Card_crashed of string (** Exception raised when a fatal error happen on the card *) +exception Error of string + (** An error returned by a card *) + (** {6 Card opening/closing} *) val make : name : string -> handle : USB.handle -> t Lwt.t hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2010-03-20 13:30:38
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 6d667aa1190fcbab5bf284bb921129d239df39b9 (commit) via 0f754d34defcbaa0180012827c71847682968dd9 (commit) from 42ee6b34f06bbb6522cda0d5984944c331e8efa1 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6d667aa1190fcbab5bf284bb921129d239df39b9 Author: Xavier Lagorce <Xav...@cr...> Date: Sat Mar 20 14:29:39 2010 +0100 Improvement of the error manager. Errors are now reported in the order they were created in the firmware. We need to regroup common files present in different firmwares to allow a better improvement of the manager. commit 0f754d34defcbaa0180012827c71847682968dd9 Author: Xavier Lagorce <Xav...@cr...> Date: Sat Mar 20 14:28:46 2010 +0100 Improvement of AX12 communication ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Robot_Interface/Firmware/ax12.c b/USB_Module/Robot_Interface/Firmware/ax12.c index ba1f9cb..d476995 100644 --- a/USB_Module/Robot_Interface/Firmware/ax12.c +++ b/USB_Module/Robot_Interface/Firmware/ax12.c @@ -86,8 +86,8 @@ void interruptAX12(void) { // Le paquet est valide, on peut tester le renvoi d'erreur par l'AX12 if (glbBuffer[4] != 0) // Il y a une erreur... - error(glbBuffer[len]); error(ERR_AX12_ERROR); + error(glbBuffer[4]); // Un paquet a re glbReceived = 1; } diff --git a/USB_Module/Robot_Interface/Firmware/main.c b/USB_Module/Robot_Interface/Firmware/main.c index 20a34b1..0ea274f 100644 --- a/USB_Module/Robot_Interface/Firmware/main.c +++ b/USB_Module/Robot_Interface/Firmware/main.c @@ -106,6 +106,7 @@ char resetSource; extern volatile BYTE err[32]; extern volatile BYTE errno; +BYTE errnoL = 0; extern volatile BYTE glbServoEnabled; // servo.h @@ -627,19 +628,16 @@ void ProcessIO(void) { traj_engaged = FALSE; } - if (!HIDTxHandleBusy(USBInHandle) && err[errno] > 0) { + if (!HIDTxHandleBusy(USBInHandle) && (err[errnoL] != 0)) { ToSendDataBuffer.HSEQ = 0; // Num sence PC ToSendDataBuffer.DSEQ = (UPClientSeq++); // Num sence PIC ToSendDataBuffer.CMD = CMD_ERR; // Type requ - ToSendDataBuffer.ERR = err[errno]; // Erreur + ToSendDataBuffer.ERR = err[errnoL]; // Erreur USBInHandle = HIDTxPacket(HID_EP, (BYTE*) &ToSendDataBuffer, 64); - err[errno] = 0; + err[errnoL] = 0; - if (errno > 0) - errno--; - else if (err[31] > 0) - errno = 31; + errnoL = (errnoL + 1) % 32; } if(!HIDRxHandleBusy(USBOutHandle)) { @@ -663,7 +661,7 @@ void ProcessIO(void) { ToSendDataBuffer.DSEQ = 0; // Num sence PIC ToSendDataBuffer.CMD = CMD_RESPOND; // Type requ ToSendDataBuffer.ERR = 0; // Erreur - + switch (ReceivedDataBuffer.DATA[0]) { case GET_RESET_SOURCE: ToSendDataBuffer.DATA[0] = resetSource; @@ -699,7 +697,7 @@ void ProcessIO(void) { case GET_CMP03_DATA: OpenI2C(MASTER, SLEW_OFF); - + StartI2C(); // send start bit IdleI2C(); // and wait for it to clear WriteI2C(0xC0); // 11000000 - write command diff --git a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof index 7973b62..cd3f773 100644 Binary files a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof and b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof differ diff --git a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex index 5fc9bda..8af7f83 100644 --- a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex +++ b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex @@ -1,968 +1,972 @@ :020000040000FA -:060000008FEF20F012005A +:060000008BEF20F012005E :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:060800008FEF20F0120052 +:060800008BEF20F0120056 :0608080034EF04F01200C1 :0608180072EF04F0120073 -:06082A000500B4410000CE -:10083000860000002400000093410000CB0000006F -:10084000210000008B41000013010000080000009F -:100850007B410000EC00000010000000724100002D +:06082A000500AD410000D5 +:1008300086000000240000008C410000CB00000076 +:1008400021000000834100001301000009000000A6 +:1008500073410000EC000000100000006A4100003D :080860000A010000090000007C -:0808680021EC0DF000EE22F07E +:0808680017EC0DF000EE22F088 :10087000140EE80403E3EECFE4FFFBD700EE00F034 -:10088000220EE80403E3EECFE4FFFBD749EC0DF0C2 -:10089000A1A203D025EC1AF0A1929EAA03D05BEC92 -:1008A00013F09E9A9EA003D0F9EC18F09E905CEC99 -:1008B0000DF002E2E16AE5525AEC0DF0E55200EE6D +:10088000220EE80403E3EECFE4FFFBD73FEC0DF0CC +:10089000A1A203D021EC1AF0A1929EAA03D051ECA0 +:1008A00013F09E9A9EA003D0F5EC18F09E9052ECA7 +:1008B0000DF002E2E16AE55250EC0DF0E55200EE77 :1008C00021F0220EE80403E3E5CFEDFFFBD700EEB5 -:1008D00035F0140EE80403E3E5CFEDFFFBD736EC6B -:1008E0000DF01100D8CFE4FFE0CFE4FFE46E21EC7F +:1008D00035F0140EE80403E3E5CFEDFFFBD72CEC75 +:1008E0000DF01100D8CFE4FFE0CFE4FFE46E17EC89 :1008F0000DF000EE22F0140EE80403E3EECFE4FF67 :10090000FBD700EE00F0220EE80403E3EECFE4FF95 -:10091000FBD749EC0DF0F2A403D0E0EC18F0F29410 -:100920005CEC0DF002E2E16AE5525AEC0DF0E552A2 +:10091000FBD73FEC0DF0F2A403D0DCEC18F0F2941E +:1009200052EC0DF002E2E16AE55250EC0DF0E552B6 :1009300000EE21F0220EE80403E3E5CFEDFFFBD744 :1009400000EE35F0140EE80403E3E5CFEDFFFBD72E -:1009500036EC0DF0E550E5CFE0FFE5CFD8FF100015 -:1009600004D8E6EC0DF058D8FCD70F0EC11202D80F -:10097000B0EF0DF08BEC0DF0E652A8EC0CF000019E -:10098000FC6F070EFC5D10E1E66A25EC1EF0E552F7 -:10099000DF6E000EDF8064EC0DF0E66A61EC20F0A3 -:1009A000E552DF7064EC0DF093809382948C948E0A -:1009B000D08EF28EF28C770EC86EE66AD5EC1BF004 +:100950002CEC0DF0E550E5CFE0FFE5CFD8FF10001F +:1009600004D8DCEC0DF058D8FCD70F0EC11202D819 +:10097000A6EF0DF081EC0DF0E6529EEC0CF00001BC +:10098000FC6F070EFC5D10E1E66A21EC1EF0E552FB +:10099000DF6E000EDF805AEC0DF0E66A5DEC20F0B1 +:1009A000E552DF705AEC0DF093809382948C948E14 +:1009B000D08EF28EF28C770EC86EE66AD1EC1BF008 :1009C000E5523F0E8A1693160101136B146B156BDB -:1009D000166B010E176F56EC13F0E30E95169292FC -:1009E0009492A082FD0EE66EE9EC1EF0E552000E38 -:1009F000E66EE66A88EC1FF0E552E5528394839632 -:100A0000839880928292E66AA3EC18F0E55241EC5A -:100A10001BF0E5529CEF0DF0D9CFE6FFE1CFD9FFF7 -:100A2000170EE126160EDB6A0101175102E095EC64 +:1009D000166B010E176F4CEC13F0E30E9516929206 +:1009E0009492A082FD0EE66EE5EC1EF0E552000E3C +:1009F000E66EE66A84EC1FF0E552E5528394839636 +:100A0000839880928292E66A9FEC18F0E5523DEC62 +:100A10001BF0E55292EF0DF0D9CFE6FFE1CFD9FF01 +:100A2000170EE126160EDB6A0101175102E08BEC6E :100A30000BF0200E0001605D03E36D50020B02E03D -:100A40008BEF0BF0160EDB5036E08BEC19F0000943 +:100A400081EF0BF0160EDB5036E087EC19F0000951 :100A500032E001011551161102E1000E08D015C156 :100A6000E9FF16C1EAFFEF50800B01E0010E00091B :100A700022E10501406B01011851182B0501416F5E :100A800005010C0E426F0501436B400EE66E400EF1 -:100A9000E66E050EE66E010EE66E010EE66E01ECE8 -:100AA00012F0006E050EE15E0050F3CF15F1F4CFA9 +:100A9000E66E050EE66E010EE66E010EE66EF7ECF2 +:100AA00011F0006E050EE15E0050F3CF15F1F4CFAA :100AB00016F1160EDB6A01011551161102E1000E46 :100AC00008D015C1E9FF16C1EAFFEF50800B01E025 -:100AD000010E000947E10001EB51EA6ACB0FE96E14 -:100AE000000EEA22EF5000083DE20501406B0101D3 -:100AF0001851182B0501416F0501040E426F0001CA -:100B0000EB51EA6ACB0FE96E000EEA22EFCF43F514 -:100B1000400EE66E400EE66E050EE66E010EE66EC7 -:100B2000010EE66E01EC12F0006E050EE15E005063 -:100B3000F3CF15F1F4CF16F10001EB51EA6ACB0FB8 -:100B4000E96E000EEA22EF6A0001EB51000803E2B1 -:100B50000001EB0707D00001EA51000803E20001A1 -:100B60001F0EEB6F01011351141102E1000E08D0AA -:100B700013C1E9FF14C1EAFFEF50800B01E0010E41 -:100B8000000902E08BEF0BF005010251070A02E1B8 -:100B9000F1EF0AF0020A02E1C3EF0AF00E0A02E1E5 -:100BA0006AEF0AF0060A02E1F7EF09F0040A01E130 -:100BB00010D20F0A01E165D1040A1AE0030A07E026 -:100BC000010A02E04AEF0BF0FF008BEF0BF0E66A40 -:100BD00025EC1EF0E552DF6E000EDB80DFCFE6FF76 -:100BE000E66A05EC1EF0E552E552FF008BEF0BF0D4 -:100BF00001011551161102E1000E08D015C1E9FFDF -:100C000016C1EAFFEF50800B01E0010E000901E080 -:100C100036D100C540F50501416B0501030E426F59 -:100C20000501436B050108510A0A01E17ED00E0A55 -:100C300071E0070A64E0010A20E0030A06E0010A05 -:100C400001E0F3D0FCC048F5F3D00501486BEB0E92 -:100C5000006E3E0E016E026A00C0E6FF01C0E6FFB4 -:100C600002C0E6FF480EE66E050EE66EE9EC1DF0EA -:100C7000036E050EE15E0350DBD00501486BDF0E0D -:100C8000006E3E0E016E026A00C0E6FF01C0E6FF84 -:100C900002C0E6FF480EE66E050EE66EE9EC1DF0BA -:100CA000036E050EE15E0350DD0E006E3E0E016E1A -:100CB000026A00C0E6FF01C0E6FF02C0E6FF480E80 -:100CC000E66E050EE66EE9EC1DF0036E050EE15EC4 -:100CD0000350D40E006E3E0E016E026A00C0E6FFA5 -:100CE00001C0E6FF02C0E6FF480EE66E050EE66EA6 -:100CF000E9EC1DF0036E050EE15E035099D092CF32 -:100D000048F593CF49F594CF4AF595CF4BF596CF5B -:100D10004CF58ED080CF48F581CF49F582CF4AF58A -:100D200083CF4BF584CF4CF583D0800EE66E080E52 -:100D3000E66E13EC20F0E552E552C580A8EC20F0F9 -:100D4000C00EE66E4CEC1FF0E552E66A4CEC1FF06C -:100D5000E552C582A8EC20F0C10EE66E4CEC1FF007 -:100D6000E552010EDB6A020EDB6A010EDBCF00F0FA -:100D7000020EDBCF01F0040E005C000E01584FE2C2 -:100D8000010EF36E150EF3CFDBFFC586130EDB6A83 -:100D9000140EDB6A130EDBCF00F0140EDBCF01F074 -:100DA000E80E005C030E015817E2C7A00FD0010E39 -:100DB000DBCFE9FF020EDBCFEAFF480EE926050E86 -:100DC000EA22C9CFEFFF150EDB6A06D0130EDB2A2D -:100DD000140E01E3DB2ADED7150EDB5008E0050117 -:100DE000080E436FC58AC588A8EC20F018D0010E04 -:100DF000DBCF00F0020EDBCF01F0030E005C000E33 -:100E0000015803E2C59AC58802D0C58AC588A8ECF6 -:100E100020F0010EDB2A020E01E3DB2AA6D7C584EF -:100E2000A8EC20F0B6EC20F003D00501020E436FD1 -:100E3000400EE66E400EE66E050EE66E010EE66EA4 -:100E4000010EE66E01EC12F0006E050EE15E005040 -:100E5000F3CF15F1F4CF16F1400EE66E000EE66EFC -:100E6000050EE66EE66A010EE66E01EC12F0006E0B -:100E7000050EE15E0050F3CF13F1F4CF14F18BEFC8 -:100E80000BF005010851050A54E0010A49E0070A80 -:100E900037E0010A25E0030A13E0010A01E080D0EF -:100EA00005010951921205010A51931205010B51D6 -:100EB000941205010C51951205010D51961275D031 -:100EC0000501091D921605010A1D931605010B1D4A -:100ED000941605010C1D951605010D1D961665D07D -:100EE0000501091D891605010A1D8A1605010B1D3C -:100EF0008B1605010C1D8C1605010D1D8D1655D088 -:100F000005010951891205010A518A1205010B5187 -:100F10008B1205010C518C1205010D518D1245D01B -:100F20000501095101010F1B05010A5101010F13B0 -:100F30003CD0050109A107D00AC5E6FFE66ABDEC71 -:100F40001AF0E552E552050109A308D00BC5E6FFEA -:100F5000010EE66EBDEC1AF0E552E552050109A559 -:100F600008D00CC5E6FF020EE66EBDEC1AF0E552A5 -:100F7000E552050109A708D00DC5E6FF030EE66E90 -:100F8000BDEC1AF0E552E552050109A908D00EC5DD -:100F9000E6FF040EE66EBDEC1AF0E552E55205D010 -:100FA000030EE66E2EEC20F0E552400EE66E000ECB -:100FB000E66E050EE66EE66A010EE66E01EC12F0D4 -:100FC000006E050EE15E0050F3CF13F1F4CF14F183 -:100FD000A2D301011551161102E1000E08D015C16E -:100FE000E9FF16C1EAFFEF50800B01E0010E000996 -:100FF00001E0FCD100C540F50501416B0501030E80 -:10100000426F0501436B050108510C0A01E1BED195 -:10101000070A01E1B5D1010A01E1ACD1030A01E1FE -:1010200083D1010A01E1E3D00F0A01E1C5D0010A31 -:1010300001E1AAD0030A01E18FD0010A6AE0070AA0 -:1010400042E0010A11E0030A01E0A6D105010A51BC -:10105000E66EE66A09C5E6FF68EC14F0E552E55273 -:10106000E5520501486F9BD105010B051BE1050108 -:101070000C51E66EE66A0AC5E6FF09C5E6FF25ECF7 -:1010800015F0E552E552E552E5520F0EF3CFDBFFC6 -:10109000100EF4CFDBFF100EDBCF48F50F0EDBCFC9 -:1010A00049F510D005010C51E66EE66A0AC5E6FF67 -:1010B00009C5E6FFC2EC14F0E552E552E552E552EF -:1010C0000501486F6CD105010B0517E1100E0CC529 -:1010D000DBFF0F0E0DC5DBFF0F0EDBCFE6FF100EA3 -:1010E000DBCFE6FF0AC5E6FF09C5E6FFBBEC14F05F -:1010F000E552E552E552E5520BD00CC5E6FF0AC5B4 -:10110000E6FF09C5E6FFB7EC14F0E552E552E552FB -:1011100046D1100E0AC5DBFF0F0E0BC5DBFF120E0A -:101120000CC5DBFF110E0DC5DBFF0EC5E6FF110E72 -:10113000DBCFE6FF120EDBCFE6FF0F0EDBCFE6FFC5 -:10114000100EDBCFE6FF09C5E6FFA6EC15F0006E3A -:10115000060EE15E005023D105010A51E66EE66AF3 -:1011600009C5E6FFC9EC15F0E552E552E5520F0E50 -:10117000F3CFDBFF100EF4CFDBFF100EDBCF48F513 -:101180000F0EDBCF49F50BD105010A51E66EE66A79 -:1011900009C5E6FFCCEC15F0E552E552E5520F0E1D -:1011A000F3CFDBFF100EF4CFDBFF100EDBCF48F5E3 -:1011B0000F0EDBCF49F5F3D005010A51E66EE66A62 -:1011C000280EE66E09C5E6FF25EC15F0E552E5525E -:1011D000E552E5520F0EF3CFDBFF100EF4CFDBFF2D -:1011E000100EDBCF48F50F0EDBCF49F5D8D0050147 -:1011F0000A51E66EE66A09C5E6FFC9EC15F0E5524C -:10120000E552E5520F0EF3CFDBFF100EF4CFDBFFFC -:10121000100EDBCF48F50F0EDBCF49F505010A5163 -:10122000E66EE66A09C5E6FFCCEC15F0E552E5523C -:10123000E5520F0EF3CFDBFF100EF4CFDBFF100EE5 -:10124000DBCF4AF50F0EDBCF4BF505010A51E66EF9 -:10125000E66A280EE66E09C5E6FF25EC15F0E552B4 -:10126000E552E552E5520F0EF3CFDBFF100EF4CF3F -:10127000DBFF100EDBCF4CF50F0EDBCF4DF505017C -:101280000A51E66EE66A2A0EE66E09C5E6FFC2EC72 -:1012900014F0E552E552E552E55205014E6F0501A5 -:1012A0000A51E66EE66A2B0EE66E09C5E6FFC2EC51 -:1012B00014F0E552E552E552E55205014F6F050184 -:1012C0000A51E66EE66A060EE66E09C5E6FF25ECF3 -:1012D00015F0E552E552E552E5520F0EF3CFDBFF74 -:1012E000100EF4CFDBFF100EDBCF50F50F0EDBCF6F -:1012F00051F505010A51E66EE66A080EE66E09C56B -:10130000E6FF25EC15F0E552E552E552E5520F0EE9 -:10131000F3CFDBFF100EF4CFDBFF100EDBCF52F567 -:101320000F0EDBCF53F53BD005010B0517E1100E77 -:101330000CC5DBFF0F0E0DC5DBFF0F0EDBCFE6FF8D -:10134000100EDBCFE6FF0AC5E6FF09C5E6FF99EC04 -:1013500015F0E552E552E552E5520BD00CC5E6FF1B -:101360000AC5E6FF09C5E6FF95EC15F0E552E55222 -:10137000E55215D009C5E6FFA1EC15F0E5520FD0F6 -:1013800009C5E6FFB2EC14F0E55209D009C5E6FF45 -:1013900056EC14F0E55203D00501010E436F400EE8 -:1013A000E66E400EE66E050EE66E010EE66E010E6E -:1013B000E66E01EC12F0006E050EE15E0050F3CF18 -:1013C00015F1F4CF16F1400EE66E000EE66E050E36 -:1013D000E66EE66A010EE66E01EC12F0006E050E96 -:1013E000E15E0050F3CF13F1F4CF14F194D1050175 -:1013F0000851070A48E0010A3BE0030A2EE0010A0F -:1014000025E0070A1BE0010A12E0030A08E0010ACE -:1014100001E047D0E66ADCEC1BF0E55247D0010E54 -:10142000E66EE66ADFEC1BF0E552E5523FD0E66A75 -:10143000E66ADFEC1BF0E552E55238D0010EE66EAD -:10144000E66AE7EC1BF0E552E55230D0E66AE66A60 -:10145000E7EC1BF0E552E55229D00AC5E6FF09C5C5 -:10146000E6FFE66AF2EC1BF0E552E552E5521ED0CB -:10147000090EE66E050EE66EE66AFFEC1BF0E5521D -:10148000E552E55213D00A0EE66E050EE66E09C56A -:10149000E6FFE66A05EC1CF0E552E552E552E5523E -:1014A00005D0010EE66E2EEC20F0E552400EE66E01 -:1014B000000EE66E050EE66EE66A010EE66E01ECC3 -:1014C00012F0006E050EE15E0050F3CF13F1F4CF81 -:1014D00014F121D105010851030A11E0010A09E0C4 -:1014E000030A01E037D009C5E6FF12EC19F0E55216 -:1014F00036D009C5E6FF18EC19F0E55230D00E0ED3 -:101500000CC5DBFF0D0E0DC5DBFF0C0E0EC5DBFFA2 -:101510000B0E0FC5DBFFD9500B0FE96EDACFEAFFD8 -:10152000EECFE6FFEECFE6FFEECFE6FFEFCFE6FF32 -:101530000BC5E6FF0AC5E6FF09C5E6FF1EEC19F07C -:10154000006E070EE15E0050010EF36E160EF3CF33 -:10155000DBFF05D0010EE66E2EEC20F0E552400ECA -:10156000E66E000EE66E050EE66EE66A010EE66EAB -:1015700001EC12F0006E050EE15E0050F3CF13F1A6 -:10158000F4CF14F1C8D0800EE66E080EE66E13ECB0 -:1015900020F0E552E552C580A8EC20F0E66A4CEC5C -:1015A0001FF0E552080EE66E050EE66E94EC1DF097 -:1015B000E552E552C584B6EC20F0400EE66E000E12 -:1015C000E66E050EE66EE66A010EE66E01EC12F0BE -:1015D000006E050EE15E0050F3CF13F1F4CF14F16D -:1015E0009AD04F0EAB16AC9ACF0E9D16020EE66E39 -:1015F000E66A7C0EE66E4FEC1DF0E552E552E552D0 -:10160000040EE66EE66A4AEC14F0E552E552100E5E -:10161000E66E010EE66E4AEC14F0E552E552020E5B -:10162000E66E030EE66E010EE66EC5EC13F0E552B3 -:10163000E552E552040EE66EE66A4AEC14F0E55215 -:10164000E552100EE66E010EE66E4AEC14F0E5521D -:10165000E552020EE66E030EE66E010EE66EC5EC76 -:1016600013F0E552E552E55256EC13F0400EE66EEB -:10167000000EE66E050EE66EE66A010EE66E01EC01 -:1016800012F0006E050EE15E0050F3CF13F1F4CFBF -:1016900014F141D001011551161102E1000E08D0DC -:1016A00015C1E9FF16C1EAFFEF50800B01E0010E02 -:1016B000000931E100C540F50501416B0501030E4C -:1016C000426F0501010E436F400EE66E400EE66E5E -:1016D000050EE66E010EE66E010EE66E01EC12F0EE -:1016E000006E050EE15E0050F3CF15F1F4CF16F158 -:1016F000400EE66E000EE66E050EE66EE66A010E20 -:10170000E66E01EC12F0006E050EE15E0050F3CFC4 -:1017100013F1F4CF14F1170EE15C02E2E16AE55235 -:10172000E16EE552E7CFD9FF1200010119511A11FC -:1017300004E1100E196F270E1A6F1907000E1A5BBD -:101740006DA207D019511A112EE18A7C8ABC13D0E0 -:1017500027D00001605102E18A9C22D0600502E19D -:101760008A8C09D0020E605D02E18A8C19D0040EC9 -:10177000605D03E18A9C8A8E1200100E605D06E1B6 -:10178000010119511A110FE18A7C0AD0200E605D07 -:101790000AE1010119511A1106E18A7C8AAC02D0D2 -:1017A0008A9E12008A8E120016D9210EC1D9500EBF -:1017B000A8D9CFD9630E77D9630EEE6E740EEE6E94 -:1017C000690EEE6E760EEE6E690EEE6E740E8BD9AD -:1017D000A7D92AD92CD9E66ADFEC1BF0E552E552ED -:1017E000E66ADCD802E2E16AE5525AEF0DF0F3D87E -:1017F0002D0E9ED9430E57D9780EEE6E690EEE6E01 -:101800006F0EEE6E6E0EEE6E200E7BD9740E9DD9AD -:10181000620EEE6E6C0EEE6E690E65D9EE6E80D9BC -:10182000EE6E93D9760E6DD9630EEE6E200EEE6ECF -:101830006C0E8BD9200EEE6EFAD8DCEC1BF0E55264 -:10184000E66AE66ADFEC1BF0E552E552010EE66E51 -:10185000A5D802E2E16AE5525AEF0DF0120012003B -:1018600041EF1CF012001E0EE66E010EE66ECFEC8C -:1018700011F0E552E552400EE66E000EE66E050EE2 -:10188000E66EE66A010EE66E01EC12F0006E050EE1 -:10189000E15E0050F3CF13F1F4CF14F112006D8428 -:1018A0000001080EFD6F070EFE6FFD07000EFE5BC8 -:1018B000FD51FE11FAE16D941200D9CFE6FFE1CFA0 -:1018C000D9FFFD0EDBCF2AF0FE0EDBCF2BF0010E91 -:1018D0002A1801E12B5033E0E8682A1802E1E86891 -:1018E0002B182BE0030E2A1801E12B5024E0040EE4 -:1018F0002A1801E12B501DE0020E2A1801E12B509D -:1019000016E0170E2A1801E12B500FE0160E2A18C8 -:1019100001E12B5008E0150E2A1801E12B5001E0DF -:1019200010D0A1DF0FD09EDF0DD09ADF0BD096DF55 -:1019300009D03ADF07D05BDF05D091DF03D000008C -:1019400001D000D0010E00D0E552E7CFD9FF120040 -:10195000E2D8E652D0B202D0010E15D0D0B802D0F3 -:10196000020E11D0D0B002D0030E0DD0D0B602D0EE -:10197000040E09D0FCAE02D0050E05D0FCAC02D09E -:10198000060E01D0070EDF6ED088D086D084D082BC -:10199000D080FC9EFC9CDF50E552CED0E66AE7EC9E -:1019A0001BF0E552E552D9CFE6FFDACFE6FF010E94 -:1019B0009FD8D950150FC4D8020E9AD8D9502A0FE3 -:1019C000BFD8030E95D8D9503F0FBAD8040E90D87F -:1019D000540EE15C12009FD8540EE126D9CFE9FFE6 -:1019E000DACFEAFF5B0EEE6E4B0EEE6E720EEE6E0F -:1019F0006F0EEE6E5D0EEE6E620EEE6E6F0EEE6EA2 -:101A0000740EEE6E200E81D8EE6EEE6E570E9DD8DF -:101A10006C0EEE6EEE6E790EEE6EEE6AD950150F0C -:101A2000E96EDACFEAFF120070D885EF0DF0630E91 -:101A30008CD88FD86D0E65D8720E63D8EE6AE66AC0 -:101A40001200DACFE4FFE2CFDAFFE9CFE4FFEACF1A -:101A5000E4FFF6CFE4FFF7CFE4FFF5CFE4FFF3CFE9 -:101A6000E4FFF4CFE4FFFACFE4FF1200E5CFFAFF82 -:101A7000E5CFF4FFE5CFF3FFE5CFF5FFE5CFF7FFC7 -:101A8000E5CFF6FFE5CFEAFFE5CFE9FFE5CFDAFFE7 -:101A90001200E65240D8020EE126F350DF6E010E2E -:101AA000F4CFDBFF1200EE6E6F0EEE6E6E0EEE6E7A -:101AB00081EF0DF0E16E40D0DF50F36E010EDB5090 -:101AC000F46E020EE15C1200DFCFE6FFE66A05EC81 -:101AD0001EF0E552E5521200EE6AD9502A0FE96E67 -:101AE000DACFEAFF12000DD8200EEE6EEE6E120075 -:101AF000E66EE66A05EC1CF0E552E552E552E55269 -:101B00001200EE6E650EEE6E1200EE6EEE6EEE6E72 -:101B1000EE6EEE6E1200D9CFE6FFE1CFD9FF1200D4 -:101B2000EE6AD9503F0FE96EDACFEAFF200E1200BD -:101B30007BDF7ADF6CEF0DF0E552E7CFD9FF1200C3 -:101B4000E66E000EDA20E66E1200EE6E610EEE6EAC -:101B50001200720EEE6E740ED4DF200EEE6E1200C6 -:101B6000A8EC12F06A6A686ADBEC12F06D8C6E6A9F -:101B70008BEC12F06D9CDF6ABCEC12F010E2DF50CF -:101B8000040DF3CFE9FFF4CFEAFF000EE926040EBF -:101B9000EA22EE6AEE6AEE6AEE6ADF2AEDD7160EE8 -:101BA000706E68A604D0030E51EC12F0FAD7000153 -:101BB000736B786B796B7A6B6D98080E6B6F040E94 -:101BC0006C6F616B606BE55266EF12F0A8EC12F07F -:101BD000000160510BE16D6A696ADBEC12F06DB6D1 -:101BE00002D06D86FCD70001010E606F600508E130 -:101BF0006DBA06D0686A696A69806988020E606F8A -:101C00006850040B07E06950040B04E0020E51EC2D -:101C100012F089D86DB247D06850010B14E06950BA -:101C2000010B11E09DDF0001040E606F0401200E26 -:101C3000026F040E036F080E016F006B8C0E001311 -:101C4000E66A1AEC13F06850100B07E06950100BAD -:101C500004E060D8040E51EC12F06850400B0BE029 -:101C60006950400B08E0E2EC12F0020E59EC12F061 -:101C7000060E51EC12F06850200B04E06950200B66 -:101C800001E035D86850020B0AE06950020B07E00A -:101C9000E2EC12F0E668E6683AEC13F06A6A040EC9 -:101CA0000001605D02E2A19A1FD069A61CD0DF6A24 -:101CB000040EDF5C18E268A616D06CCF80F0030E2D -:101CC00051EC12F0780E0001801502E138D809D0ED -:101CD000000EE66EE66A800EE66E000EE66E010EFF -:101CE000E8DBDF2AE5D7A19AE55266EF12F070A093 -:101CF0000ED074EC12F0EF50800808E1D5DBEF5005 -:101D0000840804E174EC12F08C0EEF6E7090050EF6 -:101D100051EF12F06984040EC4DB6D8294EC12F072 -:101D2000040E59EF12F094EC12F0030EC2DB6D9228 -:101D3000699468A403D0020EB4DBFBD71200A8ECB0 -:101D400012F0FD0E000180153DE17E0E8015E84089 -:101D50007F0B040DF3CF63F0F4CF64F0000E632724 -:101D6000040E642363C065F064C066F06575BCDB77 -:101D7000EF503C0BE842E8420D0822E1B5DB11ECE4 -:101D800013F0EECF00F0EFCF01F0280E001816E1AF -:101D9000040E011813E14BEC13F0DF6AEDDB0EE2E9 -:101DA000DF50C4EC12F0DF50EA6A200FE96E040E37 -:101DB000EA22E552E750EF6EDF2AF0D70AD807D0C3 -:101DC0001AD805D0FD0E8015040801E122D8E5528D -:101DD0007DD36ADBEF50800B02E066DBEF6A000127 -:101DE0006F6B706B746B756B736B64D89DDB170EC8 -:101DF00060DB8FEF10F0020E0001705D02E11CEF5E -:101E000011F034D80001815102E116EF13F0816B1B -:101E100012009EDB49DBEF50400B01E0010EDF6E4C -:101E200000016B75080E605D09E122C46EFF6E5003 -:101E3000000802E2100E01D0040E606F700513E17D -:101E40004FEC13F0A6D9020E00016F5D03E12CDB0D -:101E5000840E07D0DF5003E127DBC80E02D024DB5D -:101E6000880EEF6E01D002D8E55230D32BDB000193 -:101E7000706B1ADBEF6A040E6B19006E6CC001F018 -:101E8000DE6E6CC0DDFF19DBEF6A78AF0CD07B51E2 -:101E90007C1107E005D07CC0FAFF00017B51F96E90 -:101EA000FADF0001789F020EE15C02E2E16AE5528E -:101EB000E16E0CD304012051600BE842E842E84295 -:101EC000E842E842000901E0120021510C0A45E015 -:101ED0000B0A3FE00C0A31E0010A22E00B0A1EE087 -:101EE000020A1CE0030A18E0080A10E0010A0CE0EC -:101EF0000F0A08E0030A01E012000001738F080EC8 -:101F0000606F12000FEF10F078EF11F00001610E1A -:101F1000716F000E726F0CD050EF10F0AEEF0FF03B -:101F200024510001716F726B620E7127000E7223D3 -:101F30007381010E746F738F12000001738F04019F -:101F40002451EA6A620FE96E000EEA2222C4EFFF12 -:101F50001200EADA160E59EF12F012007EDB040EC0 -:101F6000E1260401220510E120511F0B00090CE1BC -:101F70000001738F030E0401215D04E10001010ED5 -:101F80007F6F02D000017F6B0401225141E120519B -:101F90001F0B02083DE124510F0B000939E000013D -:101FA000738F040124BF05D0A4DA670EE926000E62 -:101FB00004D09FDA6B0EE926000ED2DA030E215D03 -:101FC00003E17BDA840E23D024510F0B016A700FDA -:101FD000006E0F0E0122020E00C0DBFF030E01C0D7 -:101FE000DBFF020EDBCFE9FF030EDBCFEAFFEE9053 -:101FF000ED5224AF06D061DAEF6ADF745EDA400E8C -:1020000006D05BDA880EEF6EDF7457DAC80EEF6E1B -:10201000040EE15C02E2E16AE552E16E57D2800E05 -:102020000401205D3CE10001C00E736F04012351E7 -:10203000030A1EE0010A09E0030A2FE10001500E25 -:10204000716F390E726F120E22D0C3DAF80EF626B7 -:10205000390EA2DA020E0001F76A7125F66E72518E -:10206000F7220900F5CF74F00A00F5CF75F01200E1 -:10207000030E225D0FE2ADDAFA0EF626390E8CDA87 -:1020800071C0F6FF72C0F7FF0800F5500001746FD1 -:10209000756B12000001736B12000001736B12006C -:1020A00011DA0401286B296B20511F0B020A11E081 -:1020B000030A0CE0010A22E10001738F0401288168 -:1020C00000017F051BE10401288318D00001738FF4 -:1020D00015D00001738F040124BF05D00ADA670E02 -:1020E000E926000E04D005DA6B0EE926000E38DA78 -:1020F000E4D9EF50040B02E0010E286F000173AF2A -:1021000007D0280E716F040E726F7381020E746F08 -:10211000020EE15C02E2E16AE552E16ED7D16D9810 -:10212000000173BF08D078AF02D061DA2AD07EDA1E -:10213000BBD9840E27D078BF2BD0040120AF24D088 -:10214000000174510401265D0001755104012759F5 -:1021500004E226C474F027C475F01BD80001010EF8 -:10216000706FA1DA800EEF6E816BBED9EE52080E51 -:10217000EF6E91DAB9D9840EEF6E010E816F8FDAAE -:1021800093D9C80EEF6E1200000131DAC80EEF6E5F -:10219000120098D90001080E745D000E75590DE209 -:1021A00074C0DEFF75C0DDFF6F5102E1010E03D088 -:1021B0006F0506E1020E6F6F03D0080EDE6EDD6A5A -:1021C00073D9EF9271D9EF906FD9010EDB50EF12F6 -:1021D0006BD9EE52DFCFEFFF000EDB50745F010EC4 -:1021E000DB50755B280E7D6F040E7E6F73B10FD0D0 -:1021F000F7D91BE071C0F6FF72C0F7FF712B000E1C -:1022000072230800F55096D9F3E2DB06F1D7E8D93E -:102210000CE071C0E9FF72C0EAFF712B000E72235F -:10222000EF5088D9F4E2DB06F2D7020EE15C02E25D -:10223000E16AE552E16E4AD145D956D9EE52EFCF67 -:10224000DFFFDFCF00F000500001795D000E7A590A -:1022500003E279C0DFFF09D0DF50006E016AE85069 -:10226000795D796F01507A597A6F010EDB6ADF5020 -:10227000F36E010EDBCFF4FFF350F45C10E2010EBD -:10228000DB5082D976C0E9FF77C0EAFF762B000EDB -:102290007723E552E750EF6E010EDB2AE8D7000EF8 -:1022A000D8807955000E7A550DE2F4D854D91CD94E -:1022B000EF50400B03E1EAD9C80E02D0E7D9880EEF -:1022C000EF6E0FD0F0D9840EEF6E7B517C1107E0DA -:1022D00005D07CC0FAFF00017B51F96EFADF0001E6 -:1022E000789F020EE15C02E2E16AE552E16EEED017 -:1022F0000001738F10D9010EE66EE66AE66A620E7F -:10230000E66E000EAFD922C461F00401225104E14F -:102310000001100E606F12000001200E606F04D9E2 -:10232000150E59EF12F0CED8000EDE6E040EDD6EE3 -:10233000E8D8040DF350006E016A020E0F0B05E0A1 -:10234000D89001320032E806FBE1D8900036013621 -:10235000D89000360136D9CFE9FFDACFEAFF005036 -:10236000EE260150ED22A9D8EF9EFD0EDB5002E1D2 -:102370006AD901D06DD9EA22DECFEEFFDDCFEDFFC5 -:102380009CD8EF9C9AD8040EE926000EEA22EF8C26 -:10239000020EE15C02E2E16AE552E16E97D092D86A -:1023A000FE0EDB50016A700F006E0F0EDFD885D86D -:1023B000FD0EDBCFEFFFDBA402D0E66AF5D8FD0E01 -:1023C000DBA203D0010EE66EEFD8020EE15C02E262 -:1023D000E16AE552E16E7AD075D8FE0EDB5005E178 -:1023E00025D962D8840EEF6E05D08BD80CD989D848 -:1023F000010F09D9020EE15C02E2E16AE552E16EE9 -:1024000065D060D8FD0EDB5002E022D901D01BD987 -:10241000A7D853D806D9FB0EDBCFEEFFFC0EDBCFDF -:10242000EDFF4BD8EE52FA0EDBCFEFFF400E45D852 -:10243000E850EF16880E41D8E850EF12FD0EDB5041 -:1024400002E006D901D0FFD8EA22EF74DECF00F017 -:10245000DDCF01F000C0F3FF01C0F4FF020EE15C2C -:1024600002E2E16AE552E16E31D0F7D8010EF36E77 -:10247000FC0EDB5004E0D890F336E806FCE1F31CD8 -:10248000006EFD0EDBCFE9FFFE0EDBCFEAFF005052 -:10249000EF161CD0FBD8EE52080EEF6EF7D811EFF6 -:1024A00013F0E66E1AEF13F06BC0E9FF6CC0EAFFA1 -:1024B0001200E66EE66A3AEF13F0DECFE9FFDDCFF9 -:1024C000EAFF1200CAD8020EE1261200E552E7CF59 -:1024D000D9FF1200D6D846EF13F0FE0EEA6ADB34BD -:1024E000FE0BEA36E96E120063C0E9FF64C0EAFF42 -:1024F000120024510F0BE96EEA6AD890E936EA36E9 -:102500001200FD0EDB50E824026EFE0EDB50040DBF -:10251000F35002241200000EE66EE66AE66A710EBF -:10252000E66E0F0E32EF13F0000EE66EE66AE66E10 -:10253000E66A1200E66E7DC0E9FF7EC0EAFF7D2BF1 -:10254000000E7E23E552E750EF6EDF06010E12000B -:1025500084D8E6521200280EEE6E040EED6E1200C4 -:10256000EA22EECFDEFFEDCFDDFF1200012200C038 -:10257000DEFF01C0DDFF1200DF50006E016A080EB1 -:10258000005C000E01581200EA6A280FE96E040E82 -:10259000EA22EF50E66E1200F7220900F5CF71F043 -:1025A0000A00F5CF72F01200FE0EDBCFE6FFBBDEB5 -:1025B000E552E5521200160E6F6E9F0E6B6E7B0E8B -:1025C000696E1200010EE66EE66A000EE66EE66ABD -:1025D00012002251F66EF76AD890F636F7361200DE -:1025E000D9CFE9FFDACFEAFFEE50ED101200020E6C -:1025F000706F5ADFEE52EF6A57DFC80EEF6E4ADF98 -:10260000AADF46EF13F0040DF3CF00F0F4CF01F092 -:10261000000E0026040EAADF840E4FDFE850EF12F2 -:102620001200020EE926000EEA2212003CD88C0E9F -:10263000EF6E1200680EE66E0F0EE66E16DFE552C4 -:10264000E552E552120049DF670EE926000E12003E -:1026500044DF6B0EE926000E1200D9CFE6FFE1CF72 -:10266000D9FF1200E66ECFEC1DF0006E050EE15EA4 -:10267000005012005DEC0CF0006E060EE15E0050A2 -:102680001200200EEE6E040EED6E120065C0E9FF22 -:1026900066C0EAFF120028DFC4DF41EF13F004DF59 -:0C26A000C0DFABEF12F0F6DE6AEF12F0C4 -:0426AC00959A838AEE -:1026B000190EF7EF15F0C9DA030EE126ACA2FED72A -:1026C0002DEC1FF0DF6E0001A85104E1865102E1FC -:1026D000010EA96FA90552E1A851A2DADFCFEFFFE1 -:1026E000020EA85D08E2FF0EDF5C05E0050EA5DA2C -:1026F0000001A96BA86B030EA85D04E1030EDF24A3 -:102700000001CA6F030E0001A85D37E30001CA5142 -:102710000001A85D32E18B5102E0060E8EDA010E57 -:10272000DB6A020EDB6E0001CA51F36E020EDBCFD4 -:10273000F4FFF350F45C0EE2020EDB5071DA010E8E -:10274000DBCFE7FFEF50E726010EE7CFDBFF020EFE -:10275000DB2AE9D7CA5164DAEFCF00F0010EDB1CA7 -:10276000005C05E0070E69DA0001866B03D000010A -:10277000010E866FA96BA86B01D0A82B030EE15C3C -:1027800002E2E16AE552E16E24D25FDA220EE1262E -:10279000010EDB68020EDB68FE0EDB50E76E030EF7 -:1027A000E7CFDBFFFC0EDB50020FE76E040EE7CF36 -:1027B000DBFFFD0EDB50E76E050EE7CFDBFFDF6AC8 -:1027C000FC0EDB50DF5C13E2DF50EA6AAA0FE96E11 -:1027D000000EEA22EF50E66ED950010F006E050E92 -:1027E000DF2410DAE552E750EF6EDF2AE9D7210E39 -:1027F000DB6A020EDF6EFC0EDB50050FDF5C0FE2C2 -:10280000D950010F006EDF50FDD9210EDBCFE7FF5D -:10281000EF50E726210EE7CFDBFFDF2AECD7210EB2 -:10282000DB1CE66ED950010F006EFC0EDB50050F6D -:10283000E9D9E552E750EF6E839ADF6AFC0EDB5070 -:10284000060FDF5C11E2ACA2FED7D950010F006E7B -:10285000DACF01F0DF500F01D5D9EF50E66E78ECFA -:1028600020F0E552DF2AEAD7ACA2FED7838A000126 -:10287000866B220EE15C02E2E16AE552E16EA9D1CB -:102880000001865112000001A7511200000186517B -:10289000FDE01200DAD9FE0EDB50EA6AAA0FE96EFB -:1028A000000EEA22FD0EDBCFEFFF93D1CED9020E50 -:1028B0009ED9A4D9A3D988D987D9190E98D984D9F2 -:1028C00083D987D10001865102E08B511200000CA0 -:1028D000D9CFE6FFE1CFD9FF020EE126E66A010E6D -:1028E000E66EFE0EDBCFE6FF50DFE552E552E55225 -:1028F000DE6ADD6ADECF00F0DDCF01F0FC0EDBCF5B -:1029000002F0FD0EDBCF03F00250005C03500158D3 -:1029100018E20001865104E00001A76B010E16D0F9 +:100AD000010E00093DE101011951EA6ACB0FE96EEF +:100AE000000EEA22EF5034E00501406B010118517D +:100AF000182B0501416F0501040E426F01011951C8 +:100B0000EA6ACB0FE96E000EEA22EFCF43F5400E02 +:100B1000E66E400EE66E050EE66E010EE66E010E06 +:100B2000E66EF7EC11F0006E050EE15E0050F3CFBB +:100B300015F1F4CF16F101011951EA6ACB0FE96EF4 +:100B4000000EEA22EF6A010119291F0B0101196F3A +:100B500001011351141102E1000E08D013C1E9FF85 +:100B600014C1EAFFEF50800B01E0010E000902E022 +:100B700081EF0BF005010251070A02E1E7EF0AF0ED +:100B8000020A02E1B9EF0AF00E0A02E160EF0AF090 +:100B9000060A02E1EDEF09F0040A01E110D20F0AA2 +:100BA00001E165D1040A1AE0030A07E0010A02E044 +:100BB00040EF0BF0FF0081EF0BF0E66A21EC1EF036 +:100BC000E552DF6E000EDB80DFCFE6FFE66A01EC68 +:100BD0001EF0E552E552FF0081EF0BF001011551C7 +:100BE000161102E1000E08D015C1E9FF16C1EAFF97 +:100BF000EF50800B01E0010E000901E036D100C585 +:100C000040F50501416B0501030E426F0501436B81 +:100C1000050108510A0A01E17ED00E0A71E0070AB7 +:100C200064E0010A20E0030A06E0010A01E0F3D0D3 +:100C3000FCC048F5F3D00501486BE30E006E3E0E94 +:100C4000016E026A00C0E6FF01C0E6FF02C0E6FFD7 +:100C5000480EE66E050EE66EE5EC1DF0036E050E21 +:100C6000E15E0350DBD00501486BD70E006E3E0EEF +:100C7000016E026A00C0E6FF01C0E6FF02C0E6FFA7 +:100C8000480EE66E050EE66EE5EC1DF0036E050EF1 +:100C9000E15E0350D50E006E3E0E016E026A00C08A +:100CA000E6FF01C0E6FF02C0E6FF480EE66E050E55 +:100CB000E66EE5EC1DF0036E050EE15E0350CC0E12 +:100CC000006E3E0E016E026A00C0E6FF01C0E6FF44 +:100CD00002C0E6FF480EE66E050EE66EE5EC1DF07E +:100CE000036E050EE15E035099D092CF48F593CF85 +:100CF00049F594CF4AF595CF4BF596CF4CF58ED06C +:100D000080CF48F581CF49F582CF4AF583CF4BF5A7 +:100D100084CF4CF583D0800EE66E080EE66E0FECA5 +:100D200020F0E552E552C580A4EC20F0C00EE66E3E +:100D300048EC1FF0E552E66A48EC1FF0E552C58228 +:100D4000A4EC20F0C10EE66E48EC1FF0E552010E57 +:100D5000DB6A020EDB6A010EDBCF00F0020EDBCF96 +:100D600001F0040E005C000E01584FE2010EF36E1C +:100D7000150EF3CFDBFFC586130EDB6A140EDB6A9C +:100D8000130EDBCF00F0140EDBCF01F0E80E005C99 +:100D9000030E015817E2C7A00FD0010EDBCFE9FF09 +:100DA000020EDBCFEAFF480EE926050EEA22C9CF84 +:100DB000EFFF150EDB6A06D0130EDB2A140E01E3DB +:100DC000DB2ADED7150EDB5008E00501080E436F65 +:100DD000C58AC588A4EC20F018D0010EDBCF00F046 +:100DE000020EDBCF01F0030E005C000E015803E29F +:100DF000C59AC58802D0C58AC588A4EC20F0010E2A +:100E0000DB2A020E01E3DB2AA6D7C584A4EC20F07E +:100E1000B2EC20F003D00501020E436F400EE66EE7 +:100E2000400EE66E050EE66E010EE66E010EE66EF3 +:100E3000F7EC11F0006E050EE15E0050F3CF15F1F6 +:100E4000F4CF16F1400EE66E000EE66E050EE66E6D +:100E5000E66A010EE66EF7EC11F0006E050EE15E3B +:100E60000050F3CF13F1F4CF14F181EF0BF0050133 +:100E70000851050A54E0010A49E0070A37E0010A6F +:100E800025E0030A13E0010A01E080D005010951C1 +:100E9000921205010A51931205010B51941205019A +:100EA0000C51951205010D51961275D00501091DC1 +:100EB000921605010A1D931605010B1D94160501D6 +:100EC0000C1D951605010D1D961665D00501091D11 +:100ED000891605010A1D8A1605010B1D8B160501D1 +:100EE0000C1D8C1605010D1D8D1655D005010951DF +:100EF000891205010A518A1205010B518B12050155 +:100F00000C518C1205010D518D1245D0050109516E +:100F100001010F1B05010A5101010F133CD005010E +:100F200009A107D00AC5E6FFE66AB9EC1AF0E55256 +:100F3000E552050109A308D00BC5E6FF010EE66ED8 +:100F4000B9EC1AF0E552E552050109A508D00CC527 +:100F5000E6FF020EE66EB9EC1AF0E552E552050125 +:100F600009A708D00DC5E6FF030EE66EB9EC1AF02E +:100F7000E552E552050109A908D00EC5E6FF040EA9 +:100F8000E66EB9EC1AF0E552E55205D0030EE66EB6 +:100F90002AEC20F0E552400EE66E000EE66E050EDD +:100FA000E66EE66A010EE66EF7EC11F0006E050ED5 +:100FB000E15E0050F3CF13F1F4CF14F1A2D301019D +:100FC0001551161102E1000E08D015C1E9FF16C136 +:100FD000EAFFEF50800B01E0010E000901E0FCD1B7 +:100FE00000C540F50501416B0501030E426F050187 +:100FF000436B050108510C0A01E1BED1070A01E16A +:10100000B5D1010A01E1ACD1030A01E183D1010AA2 +:1010100001E1E3D00F0A01E1C5D0010A01E1AAD044 +:10102000030A01E18FD0010A6AE0070A42E0010ADF +:1010300011E0030A01E0A6D105010A51E66EE66A55 +:1010400009C5E6FF64EC14F0E552E552E5520501EE +:10105000486F9BD105010B051BE105010C51E66EA4 +:10106000E66A0AC5E6FF09C5E6FF21EC15F0E55280 +:10107000E552E552E5520F0EF3CFDBFF100EF4CF31 +:10108000DBFF100EDBCF48F50F0EDBCF49F510D09C +:1010900005010C51E66EE66A0AC5E6FF09C5E6FFE2 +:1010A000BEEC14F0E552E552E552E5520501486FF9 +:1010B0006CD105010B0517E1100E0CC5DBFF0F0EFF +:1010C0000DC5DBFF0F0EDBCFE6FF100EDBCFE6FF1B +:1010D0000AC5E6FF09C5E6FFB7EC14F0E552E55294 +:1010E000E552E5520BD00CC5E6FF0AC5E6FF09C57F +:1010F000E6FFB3EC14F0E552E552E55246D1100E8E +:101100000AC5DBFF0F0E0BC5DBFF120E0CC5DBFFA4 +:10111000110E0DC5DBFF0EC5E6FF110EDBCFE6FF9E +:10112000120EDBCFE6FF0F0EDBCFE6FF100EDBCF9C +:10113000E6FF09C5E6FFA2EC15F0006E060EE15EC3 +:10114000005023D105010A51E66EE66A09C5E6FFA3 +:10115000C5EC15F0E552E552E5520F0EF3CFDBFF7B +:10116000100EF4CFDBFF100EDBCF48F50F0EDBCFF8 +:1011700049F50BD105010A51E66EE66A09C5E6FF9D +:10118000C8EC15F0E552E552E5520F0EF3CFDBFF48 +:10119000100EF4CFDBFF100EDBCF48F50F0EDBCFC8 +:1011A00049F5F3D005010A51E66EE66A280EE66EAF +:1011B00009C5E6FF21EC15F0E552E552E552E5528E +:1011C0000F0EF3CFDBFF100EF4CFDBFF100EDBCFE3 +:1011D00048F50F0EDBCF49F5D8D005010A51E66E70 +:1011E000E66A09C5E6FFC5EC15F0E552E552E552A1 +:1011F0000F0EF3CFDBFF100EF4CFDBFF100EDBCFB3 +:1012000048F50F0EDBCF49F505010A51E66EE66A97 +:1012100009C5E6FFC8EC15F0E552E552E5520F0EA0 +:10122000F3CFDBFF100EF4CFDBFF100EDBCF4AF560 +:101230000F0EDBCF4BF505010A51E66EE66A280E6C +:10124000E66E09C5E6FF21EC15F0E552E552E552E0 +:10125000E5520F0EF3CFDBFF100EF4CFDBFF100EC5 +:10126000DBCF4CF50F0EDBCF4DF505010A51E66ED5 +:10127000E66A2A0EE66E09C5E6FFBEEC14F0E552FA +:10128000E552E552E55205014E6F05010A51E66E41 +:10129000E66A2B0EE66E09C5E6FFBEEC14F0E552D9 +:1012A000E552E552E55205014F6F05010A51E66E20 +:1012B000E66A060EE66E09C5E6FF21EC15F0E5527A +:1012C000E552E552E5520F0EF3CFDBFF100EF4CFDF +:1012D000DBFF100EDBCF50F50F0EDBCF51F5050114 +:1012E0000A51E66EE66A080EE66E09C5E6FF21ECD5 +:1012F00015F0E552E552E552E5520F0EF3CFDBFF54 +:10130000100EF4CFDBFF100EDBCF52F50F0EDBCF4C +:1013100053F53BD005010B0517E1100E0CC5DBFFA3 +:101320000F0E0DC5DBFF0F0EDBCFE6FF100EDBCF80 +:10133000E6FF0AC5E6FF09C5E6FF95EC15F0E552A4 +:10134000E552E552E5520BD00CC5E6FF0AC5E6FFB3 +:1013500009C5E6FF91EC15F0E552E552E55215D0CE +:1013600009C5E6FF9DEC15F0E5520FD009C5E6FF73 +:10137000AEEC14F0E55209D009C5E6FF52EC14F0CA +:10138000E55203D00501010E436F400EE66E400E9C +:10139000E66E050EE66E010EE66E010EE66EF7ECE9 +:1013A00011F0006E050EE15E0050F3CF15F1F4CFA1 +:1013B00016F1400EE66E000EE66E050EE66EE66A6B +:1013C000010EE66EF7EC11F0006E050EE15E0050C6 +:1013D000F3CF13F1F4CF14F194D105010851070AAA +:1013E00048E0010A3BE0030A2EE0010A25E0070A73 +:1013F0001BE0010A12E0030A08E0010A01E047D0FD +:10140000E66AD8EC1BF0E55247D0010EE66EE66ABC +:10141000DBEC1BF0E552E5523FD0E66AE66ADBEC16 +:101420001BF0E552E55238D0010EE66EE66AE3ECB9 +:101430001BF0E552E55230D0E66AE66AE3EC1BF0B9 +:10144000E552E55229D00AC5E6FF09C5E6FFE66A7E +:10145000EEEC1BF0E552E552E5521ED0090EE66EA9 +:10146000050EE66EE66AFBEC1BF0E552E552E5522E +:1014700013D00A0EE66E050EE66E09C5E6FFE66AB3 +:1014800001EC1CF0E552E552E552E55205D0010EA3 +:10149000E66E2AEC20F0E552400EE66E000EE66E97 +:1014A000050EE66EE66A010EE66EF7EC11F0006ED0 +:1014B000050EE15E0050F3CF13F1F4CF14F121D10A +:1014C00005010851030A11E0010A09E0030A01E0DD +:1014D00037D009C5E6FF0EEC19F0E55236D009C544 +:1014E000E6FF14EC19F0E55230D00E0E0CC5DBFF10 +:1014F0000D0E0DC5DBFF0C0E0EC5DBFF0B0E0FC571 +:10150000DBFFD9500B0FE96EDACFEAFFEECFE6FF33 +:10151000EECFE6FFEECFE6FFEFCFE6FF0BC5E6FF2F +:101520000AC5E6FF09C5E6FF1AEC19F0006E070EC2 +:10153000E15E0050010EF36E160EF3CFDBFF05D017 +:10154000010EE66E2AEC20F0E552400EE66E000E2B +:10155000E66E050EE66EE66A010EE66EF7EC11F039 +:10156000006E050EE15E0050F3CF13F1F4CF14F1DD +:10157000C8D0800EE66E080EE66E0FEC20F0E55245 +:10158000E552C580A4EC20F0E66A48EC1FF0E55275 +:10159000080EE66E050EE66E90EC1DF0E552E55283 +:1015A000C584B2EC20F0400EE66E000EE66E050E2D +:1015B000E66EE66A010EE66EF7EC11F0006E050EBF +:1015C000E15E0050F3CF13F1F4CF14F19AD04F0E37 +:1015D000AB16AC9ACF0E9D16020EE66EE66A7C0E36 +:1015E000E66E4BEC1DF0E552E552E552040EE66E58 +:1015F000E66A46EC14F0E552E552100EE66E010E76 +:10160000E66E46EC14F0E552E552020EE66E030E6D +:10161000E66E010EE66EC1EC13F0E552E552E552BE +:10162000040EE66EE66A46EC14F0E552E552100E42 +:10163000E66E010EE66E46EC14F0E552E552020E3F +:10164000E66E030EE66E010EE66EC1EC13F0E55297 +:10165000E552E5524CEC13F0400EE66E000EE66EDD +:10166000050EE66EE66A010EE66EF7EC11F0006E0E +:10167000050EE15E0050F3CF13F1F4CF14F141D029 +:1016800001011551161102E1000E08D015C1E9FF44 +:1016900016C1EAFFEF50800B01E0010E000931E1B5 +:1016A00000C540F50501416B0501030E426F0501C0 +:1016B000010E436F400EE66E400EE66E050EE66EBE +:1016C000010EE66E010EE66EF7EC11F0006E050EEF +:1016D000E15E0050F3CF15F1F4CF16F1400EE66E47 +:1016E000000EE66E050EE66EE66A010EE66EF7EC9B +:1016F00011F0006E050EE15E0050F3CF13F1F4CF50 +:1017000014F1170EE15C02E2E16AE552E16EE55286 +:10171000E7CFD9FF120001011A511B1104E1100E8D +:101720001A6F270E1B6F1A07000E1B5B6DA207D0E6 +:101730001A511B112EE18A7C8ABC13D027D00001DC +:10174000605102E18A9C22D0600502E18A8C09D0B6 +:10175000020E605D02E18A8C19D0040E605D03E127 +:101760008A9C8A8E1200100E605D06E101011A51FA +:101770001B110FE18A7C0AD0200E605D0AE1010195 +:101780001A511B1106E18A7C8AAC02D08A9E120093 +:101790008A8E120016D9210EC1D9500EA8D9CFD9E0 +:1017A000630E77D9630EEE6E740EEE6E690EEE6EFA +:1017B000760EEE6E690EEE6E740E8BD9A7D92AD90D +:1017C0002CD9E66ADBEC1BF0E552E552E66ADCD880 +:1017D00002E2E16AE55250EF0DF0F3D82D0E9ED9EA +:1017E000430E57D9780EEE6E690EEE6E6F0EEE6EEA +:1017F0006E0EEE6E200E7BD9740E9DD9620EEE6ECB +:101800006C0EEE6E690E65D9EE6E80D9EE6E93D9D0 +:10181000760E6DD9630EEE6E200EEE6E6C0E8BD9C9 +:10182000200EEE6EFAD8D8EC1BF0E552E66AE66AB6 +:10183000DBEC1BF0E552E552010EE66EA5D802E2A4 +:10184000E16AE55250EF0DF0120012003DEF1CF07E +:1018500012001E0EE66E010EE66EC5EC11F0E552AA +:10186000E552400EE66E000EE66E050EE66EE66A86 +:10187000010EE66EF7EC11F0006E050EE15E005011 +:10188000F3CF13F1F4CF14F112006D840001080EB0 +:10189000FD6F070EFE6FFD07000EFE5BFD51FE1192 +:1018A000FAE16D941200D9CFE6FFE1CFD9FFFD0E2A +:1018B000DBCF2AF0FE0EDBCF2BF0010E2A1801E160 +:1018C0002B5033E0E8682A1802E1E8682B182BE077 +:1018D000030E2A1801E12B5024E0040E2A1801E11E +:1018E0002B501DE0020E2A1801E12B5016E0170EB6 +:1018F0002A1801E12B500FE0160E2A1801E12B5097 +:1019000008E0150E2A1801E12B5001E010D0A1DFEC +:101910000FD09EDF0DD09ADF0BD096DF09D03ADFD3 +:1019200007D05BDF05D091DF03D0000001D000D0ED +:10193000010E00D0E552E7CFD9FF1200E2D8E652FF +:10194000D0B202D0010E15D0D0B802D0020E11D004 +:10195000D0B002D0030E0DD0D0B602D0040E09D004 +:10196000FCAE02D0050E05D0FCAC02D0060E01D0B4 +:10197000070EDF6ED088D086D084D082D080FC9EC7 +:10198000FC9CDF50E552CED0E66AE3EC1BF0E5525A +:10199000E552D9CFE6FFDACFE6FF010E9FD8D95046 +:1019A000150FC4D8020E9AD8D9502A0FBFD8030EEB +:1019B00095D8D9503F0FBAD8040E90D8540EE15C98 +:1019C00012009FD8540EE126D9CFE9FFDACFEAFF03 +:1019D0005B0EEE6E4B0EEE6E720EEE6E6F0EEE6ED8 +:1019E0005D0EEE6E620EEE6E6F0EEE6E740EEE6EAD +:1019F000200E81D8EE6EEE6E570E9DD86C0EEE6EF8 +:101A0000EE6E790EEE6EEE6AD950150FE96EDACFF2 +:101A1000EAFF120070D87BEF0DF0630E8CD88FD8E0 +:101A20006D0E65D8720E63D8EE6AE66A1200DACFE0 +:101A3000E4FFE2CFDAFFE9CFE4FFEACFE4FFF6CF3D +:101A4000E4FFF7CFE4FFF5CFE4FFF3CFE4FFF4CFFB +:101A5000E4FFFACFE4FF1200E5CFFAFFE5CFF4FF91 +:101A6000E5CFF3FFE5CFF5FFE5CFF7FFE5CFF6FFD5 +:101A7000E5CFEAFFE5CFE9FFE5CFDAFF1200E65256 +:101A800040D8020EE126F350DF6E010EF4CFDBFFEB +:101A90001200EE6E6F0EEE6E6E0EEE6E77EF0DF0C4 +:101AA000E16E40D0DF50F36E010EDB50F46E020E9B +:101AB000E15C1200DFCFE6FFE66A01EC1EF0E552C2 +:101AC000E5521200EE6AD9502A0FE96EDACFEAFF2A +:101AD00012000DD8200EEE6EEE6E1200E66EE66A73 +:101AE00001EC1CF0E552E552E552E5521200EE6EB3 +:101AF000650EEE6E1200EE6EEE6EEE6EEE6EEE6E39 +:101B00001200D9CFE6FFE1CFD9FF1200EE6AD9501B +:101B10003F0FE96EDACFEAFF200E12007BDF7ADF9B +:101B200062EF0DF0E552E7CFD9FF1200E66E000E2E +:101B3000DA20E66E1200EE6E610EEE6E1200720E8C +:0C1B4000EE6E740ED4DF200EEE6E12006C +:041B4C009EEC12F009 +:101B50006A6A686AD1EC12F06D8C6E6A81EC12F0E0 +:101B60006D9CDF6AB2EC12F010E2DF50040DF3CF8F +:101B7000E9FFF4CFEAFF000EE926040EEA22EE6A3E +:101B8000EE6AEE6AEE6ADF2AEDD7160E706E68A670 +:101B900004D0030E47EC12F0FAD70001736B786B98 +:101BA000796B7A6B6D98080E6B6F040E6C6F616BBE +:101BB000606BE5525CEF12F09EEC12F00001605198 +:101BC0000BE16D6A696AD1EC12F06DB602D06D86D8 +:101BD000FCD70001010E606F600508E16DBA06D008 +:101BE000686A696A69806988020E606F6850040BD0 +:101BF00007E06950040B04E0020E47EC12F089D8AC +:101C00006DB247D06850010B14E06950010B11E030 +:101C10009DDF0001040E606F0401200E026F040EB0 +:101C2000036F080E016F006B8C0E0013E66A10EC58 +:101C300013F06850100B07E06950100B04E060D8F7 +:101C4000040E47EC12F06850400B0BE06950400B5B +:101C500008E0D8EC12F0020E4FEC12F0060E47EC42 +:101C600012F06850200B04E06950200B01E035D8D9 +:101C70006850020B0AE06950020B07E0D8EC12F042 +:101C8000E668E66830EC13F06A6A040E0001605DF5 +:101C900002E2A19A1FD069A61CD0DF6A040EDF5CA5 +:101CA00018E268A616D06CCF80F0030E47EC12F055 +:101CB000780E0001801502E138D809D0000EE66EDA +:101CC000E66A800EE66E000EE66E010EE8DBDF2AA5 +:101CD000E5D7A19AE5525CEF12F070A00ED06AEC45 +:101CE00012F0EF50800808E1D5DBEF50840804E1E2 +:101CF0006AEC12F08C0EEF6E7090050E47EF12F04A +:101D00006984040EC4DB6D828AEC12F0040E4FEF7E +:101D100012F08AEC12F0030EC2DB6D92699468A493 +:101D200003D0020EB4DBFBD712009EEC12F0FD0EC6 +:101D3000000180153DE17E0E8015E8407F0B040D0B +:101D4000F3CF63F0F4CF64F0000E6327040E642336 +:101D500063C065F064C066F06575BCDBEF503C0B9A +:101D6000E842E8420D0822E1B5DB07EC13F0EECFC4 +:101D700000F0EFCF01F0280E001816E1040E011854 +:101D800013E141EC13F0DF6AEDDB0EE2DF50BAEC59 +:101D900012F0DF50EA6A200FE96E040EEA22E552E3 +:101DA000E750EF6EDF2AF0D70AD807D01AD805D04F +:101DB000FD0E8015040801E122D8E5527DD36ADBCF +:101DC000EF50800B02E066DBEF6A00016F6B706B17 +:101DD000746B756B736B64D89DDB170E60DB85EFDE +:101DE00010F0020E0001705D02E112EF11F034D824 +:101DF0000001815102E10CEF13F0816B12009EDBB8 +:101E000049DBEF50400B01E0010EDF6E00016B7506 +:101E1000080E605D09E122C46EFF6E50000802E208 +:101E2000100E01D0040E606F700513E145EC13F045 +:101E3000A6D9020E00016F5D03E12CDB840E07D0F2 +:101E4000DF5003E127DBC80E02D024DB880EEF6EE3 +:101E500001D002D8E55230D32BDB0001706B1ADBC6 +:101E6000EF6A040E6B19006E6CC001F0DE6E6CC080 +:101E7000DDFF19DBEF6A78AF0CD07B517C1107E0F6 +:101E800005D07CC0FAFF00017B51F96EFADF00013A +:101E9000789F020EE15C02E2E16AE552E16E0CD34A +:101EA00004012051600BE842E842E842E842E8427F +:101EB000000901E0120021510C0A45E00B0A3FE045 +:101EC0000C0A31E0010A22E00B0A1EE0020A1CE0C3 +:101ED000030A18E0080A10E0010A0CE00F0A08E003 +:101EE000030A01E012000001738F080E606F1200F8 +:101EF00005EF10F06EEF11F00001610E716F000E32 +:101F0000726F0CD046EF10F0A4EF0FF024510001D7 +:101F1000716F726B620E7127000E72237381010E56 +:101F2000746F738F12000001738F04012451EA6AE9 +:101F3000620FE96E000EEA2222C4EFFF1200EADA15 +:101F4000160E4FEF12F012007EDB040EE1260401A4 +:101F5000220510E120511F0B00090CE10001738FD5 +:101F6000030E0401215D04E10001010E7F6F02D028 +:101F700000017F6B0401225141E120511F0B020837 +:101F80003DE124510F0B000939E00001738F04017A +:101F900024BF05D0A4DA670EE926000E04D09FDA2C +:101FA0006B0EE926000ED2DA030E215D03E17BDA27 +:101FB000840E23D024510F0B016A700F006E0F0E98 +:101FC0000122020E00C0DBFF030E01C0DBFF020E88 +:101FD000DBCFE9FF030EDBCFEAFFEE90ED5224AF3B +:101FE00006D061DAEF6ADF745EDA400E06D05BDAA3 +:101FF000880EEF6EDF7457DAC80EEF6E040EE15CE8 +:1020000002E2E16AE552E16E57D2800E0401205DE2 +:102010003CE10001C00E736F04012351030A1EE06E +:10202000010A09E0030A2FE10001480E716F390E21 +:10203000726F120E22D0C3DAF00EF626390EA2DA33 +:10204000020E0001F76A7125F66E7251F72209003F +:10205000F5CF74F00A00F5CF75F01200030E225D83 +:102060000FE2ADDAF20EF626390E8CDA71C0F6FF09 +:1020700072C0F7FF0800F5500001746F756B120015 +:102080000001736B12000001736B120011DA04017E +:10209000286B296B20511F0B020A11E0030A0CE088 +:1020A000010A22E10001738F0401288100017F05EC +:1020B0001BE10401288318D00001738F15D00001A3 +:1020C000738F040124BF05D00ADA670EE926000EDB +:1020D00004D005DA6B0EE926000E38DAE4D9EF50A9 +:1020E000040B02E0010E286F000173AF07D0280E29 +:1020F000716F040E726F7381020E746F020EE15CD9 +:1021000002E2E16AE552E16ED7D16D98000173BF3A +:1021100008D078AF02D061DA2AD07EDABBD9840E3B +:1021200027D078BF2BD0040120AF24D000017451F8 +:102130000401265D000175510401275904E226C4FB +:1021400074F027C475F01BD80001010E706FA1DA7E +:10215000800EEF6E816BBED9EE52080EEF6E91DAF3 +:10216000B9D9840EEF6E010E816F8FDA93D9C80E44 +:10217000EF6E1200000131DAC80EEF6E120098D92E +:102180000001080E745D000E75590DE274C0DEFF8B +:1021900075C0DDFF6F5102E1010E03D06F0506E14E +:1021A000020E6F6F03D0080EDE6EDD6A73D9EF92F8 +:1021B00071D9EF906FD9010EDB50EF126BD9EE524F +:1021C000DFCFEFFF000EDB50745F010EDB50755B5D +:1021D000280E7D6F040E7E6F73B10FD0F7D91BE010 +:1021E00071C0F6FF72C0F7FF712B000E722308005A +:1021F000F55096D9F3E2DB06F1D7E8D90CE071C0CF +:10220000E9FF72C0EAFF712B000E7223EF5088D9EC +:10221000F4E2DB06F2D7020EE15C02E2E16AE5528B +:10222000E16E4AD145D956D9EE52EFCFDFFFDFCF6D +:1022300000F000500001795D000E7A5903E279C088 +:10224000DFFF09D0DF50006E016AE850795D796FD9 +:1022500001507A597A6F010EDB6ADF50F36E010E7E +:10226000DBCFF4FFF350F45C10E2010EDB5082D9B7 +:1022700076C0E9FF77C0EAFF762B000E7723E552A0 +:10228000E750EF6E010EDB2AE8D7000ED8807955B3 +:10229000000E7A550DE2F4D854D91CD9EF50400BFA +:1022A00003E1EAD9C80E02D0E7D9880EEF6E0FD04D +:1022B000F0D9840EEF6E7B517C1107E005D07CC015 +:1022C000FAFF00017B51F96EFADF0001789F020EE0 +:1022D000E15C02E2E16AE552E16EEED00001738F4B +:1022E00010D9010EE66EE66AE66A620EE66E000E30 +:1022F000AFD922C461F00401225104E10001100EA3 +:10230000606F12000001200E606F04D9150E4FEFB0 +:1023100012F0CED8000EDE6E040EDD6EE8D8040D8D +:10232000F350006E016A020E0F0B05E0D8900132E7 +:102330000032E806FBE1D89000360136D89000362E +:102340000136D9CFE9FFDACFEAFF0050EE2601507F +:10235000ED22A9D8EF9EFD0EDB5002E16AD901D033 +:102360006DD9EA22DECFEEFFDDCFEDFF9CD8EF9CEA +:102370009AD8040EE926000EEA22EF8C020EE15CE8 +:1023800002E2E16AE552E16E97D092D8FE0EDB5090 +:10239000016A700F006E0F0EDFD885D8FD0EDBCFFF +:1023A000EFFFDBA402D0E66AF5D8FD0EDBA203D076 +:1023B000010EE66EEFD8020EE15C02E2E16AE55240 +:1023C000E16E7AD075D8FE0EDB5005E125D962D8D2 +:1023D000840EEF6E05D08BD80CD989D8010F09D99E +:1023E000020EE15C02E2E16AE552E16E65D060D87E +:1023F000FD0EDB5002E022D901D01BD9A7D853D85B +:1024000006D9FB0EDBCFEEFFFC0EDBCFEDFF4BD88A +:10241000EE52FA0EDBCFEFFF400E45D8E850EF1634 +:10242000880E41D8E850EF12FD0EDB5002E006D9CD +:1024300001D0FFD8EA22EF74DECF00F0DDCF01F04B +:1024400000C0F3FF01C0F4FF020EE15C02E2E16AAA +:10245000E552E16E31D0F7D8010EF36EFC0EDB5081 +:1024600004E0D890F336E806FCE1F31C006EFD0EA4 +:10247000DBCFE9FFFE0EDBCFEAFF0050EF161CD0EA +:10248000FBD8EE52080EEF6EF7D807EF13F0E66EAA +:1024900010EF13F06BC0E9FF6CC0EAFF1200E66EAC +:1024A000E66A30EF13F0DECFE9FFDDCFEAFF12007E +:1024B000CAD8020EE1261200E552E7CFD9FF12007A +:1024C000D6D83CEF13F0FE0EEA6ADB34FE0BEA3698 +:1024D000E96E120063C0E9FF64C0EAFF12002451F4 +:1024E0000F0BE96EEA6AD890E936EA361200FD0E63 +:1024F000DB50E824026EFE0EDB50040DF350022484 +:102500001200000EE66EE66AE66A710EE66E0F0EC7 +:1025100028EF13F0000EE66EE66AE66EE66A120039 +:10252000E66E7DC0E9FF7EC0EAFF7D2B000E7E23B4 +:10253000E552E750EF6EDF06010E120084D8E65236 +:102540001200280EEE6E040EED6E1200EA22EECF9F +:10255000DEFFEDCFDDFF1200012200C0DEFF01C073 +:10256000DDFF1200DF50006E016A080E005C000EF5 +:1025700001581200EA6A280FE96E040EEA22EF50B1 +:10258000E66E1200F7220900F5CF71F00A00F5CFD0 +:1025900072F01200FE0EDBCFE6FFBBDEE552E55225 +:1025A0001200160E6F6E9F0E6B6E7B0E696E120020 +:1025B000010EE66EE66A000EE66EE66A1200225131 +:1025C000F66EF76AD890F636F7361200D9CFE9FFE3 +:1025D000DACFEAFFEE50ED101200020E706F5ADFF4 +:1025E000EE52EF6A57DFC80EEF6E4ADFAADF3CEF0C +:1025F00013F0040DF3CF00F0F4CF01F0000E00262D +:10260000040EAADF840E4FDFE850EF121200020E14 +:10261000E926000EEA2212003CD88C0EEF6E120062 +:10262000680EE66E0F0EE66E16DFE552E552E552D5 +:10263000120049DF670EE926000E120044DF6B0E20 +:10264000E926000E1200D9CFE6FFE1CFD9FF120034 +:10265000E66ECBEC1DF0006E050EE15E0050120040 +:1026600053EC0CF0006E060EE15E00501200200EDE +:10267000EE6E040EED6E120065C0E9FF66C0EAFF63 +:10268000120028DFC4DF37EF13F004DFC0DFA1EF53 +:0826900012F0F6DE60EF12F01B +:08269800959A838A190EF3EFF5 +:1026A00015F0CFDA030EE126ACA2FED729EC1FF01D +:1026B000DF6E0001A85104E1865102E1010EA96F0D +:1026C000A90558E1A851A8DADFCFEFFF020EA85DF7 +:1026D00008E2FF0EDF5C05E0050EABDA0001A96B36 +:1026E000A86B030EA85D04E1030EDF240001CA6F8E +:1026F000030E0001A85D3DE30001CA510001A85D81 +:1027000038E1010EDB6A020EDB6E0001CA51F36E86 +:10271000020EDBCFF4FFF350F45C0EE2020EDB504E +:102720007BDA010EDBCFE7FFEF50E726010EE7CFA4 +:10273000DBFF020EDB2AE9D7CA516EDAEFCF00F0D9 +:10274000010EDB1C005C05E0070E73DA0001866BEE +:102750000DD000018B5102E0060E6BDA8BC0E6FF54 +:102760002AEC20F0E5520001010E866FA96BA86BE0 +:1027700001D0A82B030EE15C02E2E16AE552E16EB2 +:1027800024D25FDA220EE126010EDB68020EDB683E +:10279000FE0EDB50E76E030EE7CFDBFFFC0EDB50D7 +:1027A000020FE76E040EE7CFDBFFFD0EDB50E76E96 +:1027B000050EE7CFDBFFDF6AFC0EDB50DF5C13E2C8 +:1027C000DF50EA6AAA0FE96E000EEA22EF50E66EC9 +:1027D000D950010F006E050EDF2410DAE552E750E4 +:1027E000EF6EDF2AE9D7210EDB6A020EDF6EFC0EE8 +:1027F000DB50050FDF5C0FE2D950010F006EDF5098 +:10280000FDD9210EDBCFE7FFEF50E726210EE7CF02 +:10281000DBFFDF2AECD7210EDB1CE66ED950010F5F +:10282000006EFC0EDB50050FE9D9E552E750EF6E64 +:10283000839ADF6AFC0EDB50060FDF5C11E2ACA26C +:10284000FED7D950010F006EDACF01F0DF500F0133 +:10285000D5D9EF50E66E74EC20F0E552DF2AEAD7C6 +:10286000ACA2FED7838A0001866B220EE15C02E2F5 +:10287000E16AE552E16EA9D1000186511200000122 +:10288000A751120000018651FDE01200DAD9FE0EB8 +:10289000DB50EA6AAA0FE96E000EEA22FD0EDBCFDA +:1028A000EFFF93D1CED9020E9ED9A4D9A3D988D94E +:1028B00087D9190E98D984D983D987D10001865137 +:1028C00002E08B511200000CD9CFE6FFE1CFD9FF17 +:1028D000020EE126E66A010EE66EFE0EDBCFE6FF93 +:1028E00050DFE552E552E552DE6ADD6ADECF00F0E8 +:1028F000DDCF01F0FC0EDBCF02F0FD0EDBCF03F0ED +:102900000250005C0350015818E20001865104E0B7 +:102910000001A76B010E16D00000000000000000AF :1029200000000000000000000000000000000000A7 -:102930000000000000000000DF2A010E01E3DB2A96 -:10294000D9D70001010EA76F000E00D0006E020E55 -:10295000E15C02E2E16AE552E16E0050E552E7CF48 -:10296000D9FF120072D9E66A060E19D932D135D9CB -:10297000030E15D92ED119D982D902E2E16AE552A6 -:10298000E16E27D1D9CFE6FFE1CFD9FF020EE126D4 -:10299000FD0EDBCFE6FFE66A7DDFE552E552010E74 -:1029A000E66E010EE66E76DFE552E552020EE66E49 -:1029B000020EE66EFE0EDBCFE6FFE7DEE552E552E5 -:1029C000E552DE6ADD6ADECF00F0DDCF01F00A0EEF -:1029D0002A6E2B6AFB0EDBCF2FF0FC0EDBCF30F024 -:1029E000D0EC17F028C002F029C003F00250005CC0 -:1029F0000350015819E20001865105E00001A76B60 -:102A000000018C5116D00000000000000000000002 -:102A10000000000000000000000000000000DF2AAD -:102A2000010E01E3DB2ACFD70001010EA76F000ED4 -:102A300000D0006E020EE15C02E2E16AE552E16E56 -:102A40000050E552E7CFD9FF1200D9CFE6FFE1CF22 -:102A5000D9FF040EE126FD0EDBCFE6FFE66A1ADFA2 -:102A6000E552E552020EE66E010EE66E13DFE55208 -:102A7000E552020EE66E020EE66EFE0EDBCFE6FFBC -:102A800084DEE552E552E552DE6ADD6ADECF00F013 -:102A9000DDCF01F00A0E2A6E2B6AFB0EDBCF2FF082 -:102AA000FC0EDBCF30F0D0EC17F028C002F029C0CC -:102AB00003F00250005C0350015827E200018651E8 -:102AC00013E00001A76B030E8DC0DBFF020E8CC06C -:102AD000DBFF020EDBCF00F0030EDBCF01F000C006 -:102AE000F3FF01C0F4FF17D0000000000000000059 -:102AF00000000000000000000000000000000000D6 -:102B0000DF2A010E01E3DB2AC1D70001010EA76F06 -:102B1000F36AF46A00D0040EE15C02E2E16AE55275 -:102B2000E16EE552E7CFD9FF120057D8040E37D82F -:102B300050D03BD8040EA3D802E2E16AE552E16E20 -:102B400048D083D8E66A050E2AD843D07ED8020E34 -:102B5000E1261E0EE66EE66A9ED8FC0E67D893D874 -:102B6000FA0E64D8030E6ED8010EDBCFE6FF040E1A -:102B700069D8F90EDB5004E1050EE66E030E03D0B2 -:102B8000050EE66E040E7BD802E2E16AE552E16EC4 -:102B900020D03ED8240E5ED03BD8260E5BD0E66E09 -:102BA000FE0EDBCFE6FFF1DD7AD04FD8020EE12634 -:102BB000FB0EDBCFDEFFDBCFDDFF5BD8DFCFE6FF39 -:102BC00062D8030EE66E1200FE0EDBCFE6FF030EA8 -:102BD0004BD0E552E7CFD9FF120037D84AD8FC0EC8 -:102BE000DBCFE6FF010E2ED8020EE66E1200E66E77 -:102BF000E66A7C0EE66E4FEC1DF051D0100EE66ECC -:102C0000040E32D00024E96E000EDA20EA6E1200C3 -:102C10001CD8FC0EDBCFE6FFFD0EDBCFE6FF12007B -:102C2000EA6A870FE96E000EEA221200DBCFDEFFB0 -:102C3000DBCFDDFFDFCFE6FF1200E66E2EEC20F0EB -:102C4000E5521200E66E4BEF16F0D9CFE6FFE1CF6A -:102C5000D9FF1200E66EFE0EDBCFE6FFF6DEE55290 -:102C6000E552E552E552B5D7E66EFE0EE66E7FDE22 -:102C700016D0FD0EDBCFE6FFE66A4BEF16F08FDFD6 -:102C8000020EE15C1200010EDDDF010EDBCFE6FF7C -:102C9000020E22EF16F0FEDDE552E5521200E5527B -:062CA000E552E5521200AE -:0A2CA600239E05D0239E2BAE02D022 -:102CB0002B6C238E2BC025F0246A356A346A860E6D -:102CC000266E276A39EF18F0239E08D0239E2BAE7C -:102CD00005D02A6C2B1EE86A2B22238E2BC025F0F0 -:102CE0002AC024F0356A346A8E0E266E276A39EFC0 -:102CF00018F0317E236A75EC18F08DEC18F023B6CD -:102D00001DEF18F023A20AD023AA03D023BE1DEF83 -:102D100018F023A429EF18F026EF18F023AA05D005 -:102D200023AC29EF18F026EF18F023A00AD023A82F -:102D300008D023BE04D023A402D032EF18F036EF1F -:102D400018F0346A276A31502C5C336E10E329C0C6 -:102D500035F02AC024F02BC025F02CC032F02EC054 -:102D600029F02FC02AF030C02BF0233A09D02EC012 -:102D700035F02FC024F030C025F031C032F0336C74 -:102D8000239E23BC238E32C026F023B065EF18F0BB -:102D90001A0E336065EF18F0266A2C6A23A408D057 -:102DA000296C2A1E2B1E2C1EE86A2A222B222C227A -:102DB00023AC08D0356C241E251E261EE86A24226A -:102DC00025222622286A335207E02C342B322A325D -:102DD00029322832332EF9D7295035262A50242279 -:102DE0002B5025222C50262228C034F0239E26AEBC -:102DF0000BD0346C351E241E251E261EE86A352293 -:102E0000242225222622238E26A006D0D8802532F1 -:102E1000243235323432322A32C026F039EF18F0FB -:102E2000236A75EC18F08DEC18F023B61DEF18F03E -:102E300023A205D023BA1DEF18F024EF18F023BA0F -:102E400030EF18F023A005D023B81DEF18F030EFB5 -:102E500018F023B824EF18F0276A7F0E2C24266E72 -:102E6000E86A27223150265EE86A275A1A0E326E27 -:102E70002C6A346A356A246A256A2E50295E2F50DE -:102E80002A5A30502B5A000E2C5A09E72E50292668 -:102E90002F502A2230502B22000E2C2201D0348AAF -:102EA000D89029362A362B362C36D89034363536FB -:102EB00024362536322EE1D72B502A102910D8A4DB -:102EC000348A39EF18F0236A75EC18F08DEC18F09D -:102ED00023B61DEF18F023A205D023B81DEF18F07C -:102EE00024EF18F023AA05D023B01DEF18F024EF2B -:102EF00018F023B002D023A802D030EF18F0276AD0 -:102F000031502C24266EE86A27227E0E265EE86A5F -:102F1000275A346A356A246A256A30502B02F4CF66 -:102F200025F0F3CF24F02F502B02F3503526F45028 -:102F30002422000E252230502A02F3503526F45068 -:102F40002422000E25222E502B02F3503426F4505A -:102F50003522000E242225222F502A02F350342637 -:102F6000F4503522000E2422252230502902F3503D -:102F70003426F4503522000E242225222E502A0217 -:102F8000F4503426000E3522242225222F50290207 -:102F9000F4503426000E35222422252239EF18F071 -:102FA0002AC034F02A502F02F4CF29F0F3CF28F0B2 -:102FB0002B503002F4CF2BF0F3CF2AF02F02F35036 -:102FC0002926F4502A22E86A2B2234503002F3508A -:102FD0002926F4502A22E86A2B22000C236A75EC79 -:102FE00018F023B6F8EF17F023A20ED023B405D0C3 -:102FF0007F0E2B6EFF0E2A6E1FD0800E2B6E2A6A5C -:103000001BD02B6A2A6A18D023B0FBD78F0E2C60F6 -:10301000EDD77E0E2C64F5D78E0E2C5C05E0D89093 -:103020002B322A322C2AF8D723A406D02A6C2B1E46 -:10303000E86A2B222BAEE5D712007F0E2C6EFF0E16 -:103040002B6E2A6E296E12007F0E23BEFF0E2C6E91 -:1030500002D07F0E2C6E800E2B6E2A6A296AF3D75F -:1030600023AE04D0800E2C6E2B6AF7D72C6A2B6A05 -:10307000F4D72550241035103410F8E027BEF0D7CF -:1030800025BE0CD026502710EBE0D89034363536CC -:10309000243625362606D8A02706F2D72750D4E1B5 -:1030A0002628D2E034AE11D07F0E341402E135A0D0 -:1030B0000CD0352AE86A2422252207E3D88025325D -:1030C00024323532262A2628BFE02650C9E035C0F2 -:1030D00029F024C02AF025342B6E26302C6E2B329A -:1030E0002C9E23BE2C8E23EF18F02B362C3602E3B9 -:1030F0002384237E06E123802C6A2B6A2A6A296AAC -:1031000012002C2803E0D8802B321200D8902B32EA -:1031100002E123821200238612003036313602E3A8 -:10312000238C237E06E12388316A306A2F6A2E6A57 -:103130001200312803E0D88030321200D8903032AB -:06314000EAE1238A1200FF -:0A314600D9CFE6FFE1CFD9FF929048 -:10315000C30E93169494060EE66EF8EC1FF0E5523B -:10316000FE0EDBA00CD0AF0EE66EDCEC1FF0E552DD -:10317000000EE66EE66AC0EC1FF0E55204D0820E47 -:10318000E66EDCEC1FF0E552F194FE0EDBA20CD0F3 -:10319000C70EE66E0CEC1FF0E552000EE66EE66A16 -:1031A000A4EC1FF0E55204D0F50EE66E0CEC1FF017 -:1031B000E5528194819A809081988294819641D140 -:1031C00028D9D880000E0001F455000EF555000EE8 -:1031D000F655000EF7550CE2F407000EF55BF65BB2 -:1031E000F75BF451F511F611F71102E1BD6A829413 -:1031F000120018D9D880000E0001F855000EF955BC -:10320000000EFA55000EFB550CE2F807000EF95BB4 -:10321000FA5BFB5BF851F911FA11FB1102E1BA6A92 -:103220008196120008D9DBB08184DBB2818A09D192 -:1032300002D9DBB08194DBB2819A03D1FCD8DBA048 -:1032400033D0F80EDBCFF4F0F90EDBCFF5F0FA0E49 -:10325000DBCFF6F0FB0EDBCFF7F0280E2D6E2E6ADB -:103260002F6A306AF4C028F0F5C029F0F6C02AF0C1 -:10327000F7C02BF0C5EC1EF028C0F4F029C0F5F023 -:103280002AC0F6F02BC0F7F0C4D8FD0EDB50E8B032 -:103290008080E8A080904A0EE66E49EC20F050D87D -:1032A0006AEC1EF0E552E552FE0EDBA233D0F80EBA -:1032B000DBCFF8F0F90EDBCFF9F0FA0EDBCFFAF046 -:1032C000FB0EDBCFFBF0280E2D6E2E6A2F6A306AC4 -:1032D000F8C028F0F9C029F0FAC02AF0FBC02BF0A2 -:1032E000C5EC1EF028C0F8F029C0F9F02AC0FAF0A9 -:1032F0002BC0FBF097D8FD0EDB50E8B08188E8A02A -:1033000081984A0EE66E99EC1EF01AD83BEC1EF03E -:10331000E552E55296D08050010B03E08350400BFC -:1033200006E08050010B0BE18350800B08E1BD6A81 -:1033300082940001F46BF56BF66BF76B010C000CDB -:10334000E552FC0EDBCF16F016C02BF053EC16F056 -:1033500029C012F02AC013F02BC014F02CC015F0B5 -:103360002E6A2F6A7F0E306E430E316E10EC17F00E -:1033700029C00EF0... [truncated message content] |
From: Nicolas D. <Ba...@us...> - 2010-03-18 16:42:04
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 42ee6b34f06bbb6522cda0d5984944c331e8efa1 (commit) from 2a9f596f387f876e0b9b2aceed83511abb9424fc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 42ee6b34f06bbb6522cda0d5984944c331e8efa1 Author: Nicolas Dandrimont <Nic...@cr...> Date: Thu Mar 18 17:38:41 2010 +0100 Fix compass command to send the right message ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index 544357b..60fbcab 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -231,7 +231,8 @@ let interfaces = [ Module("compass", [ request ~name:"get" - ~code:PcInterface.get_cmp03_data + ~code:PcInterface.cmd_get + ~args:[Cst(uint8, PcInterface.get_cmp03_data)] ~repl:[Arg("dummy", uint16); Arg("value", uint16)] (); hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-17 21:35:33
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 2a9f596f387f876e0b9b2aceed83511abb9424fc (commit) from b0f2e736cd7b641239b051f3cffd96e827fccfdb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2a9f596f387f876e0b9b2aceed83511abb9424fc Author: Jérémie Dimino <je...@di...> Date: Wed Mar 17 22:35:07 2010 +0100 display the name of the card on message dropped ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/krobot_card.ml b/PC_Mainboard/driver/krobot_card.ml index a2ba1be..3370f59 100644 --- a/PC_Mainboard/driver/krobot_card.ml +++ b/PC_Mainboard/driver/krobot_card.ml @@ -155,8 +155,8 @@ let abort wrapper exn = | Dispatching | +-----------------------------------------------------------------+ *) -let dropped typ msg = - lwt () = Log.warning_f "%s dropped" typ in +let dropped typ card msg = + lwt () = Log.warning_f "%s dropped on card %s" typ card.wrapper.name in lwt () = Log.warning_f "===== host_serial = %d device_serial = %d @@ -197,7 +197,7 @@ let rec dispatch card = card.serial_pool <- card.serial_pool @ [msg.host_serial]; Lwt.wakeup wakener msg.data | None -> - ignore (dropped "response" msg) + ignore (dropped "response" card msg) end else begin match try Some(Int_map.find msg.command card.events) with Not_found -> None with | Some seq -> @@ -209,7 +209,7 @@ let rec dispatch card = ignore (Log.exn_f exn "pushing event %d from %s card failed with" msg.command card.wrapper.name)) seq | None -> - ignore (dropped "command" msg) + ignore (dropped "command" card msg) end; dispatch card end hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-17 21:28:15
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via b0f2e736cd7b641239b051f3cffd96e827fccfdb (commit) from 629b4193197faaabf9d7805973df102491af678f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit b0f2e736cd7b641239b051f3cffd96e827fccfdb Author: Jérémie Dimino <je...@di...> Date: Wed Mar 17 22:27:07 2010 +0100 fix: the compass returns dummy values before the angle ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 9687900..804c532 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -65,7 +65,7 @@ struct OL_method Get : int = fun dev -> return dev.data let rec loop dev = - lwt data = USB_commands.Compass.get dev.card in + lwt _, data = USB_commands.Compass.get dev.card in if data <> dev.data then begin dev.data <- data; lwt () = value dev data in @@ -76,7 +76,7 @@ struct loop dev let make card path = - lwt data = USB_commands.Compass.get card in + lwt _, data = USB_commands.Compass.get card in let dev = { obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index 802cd54..544357b 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -232,7 +232,8 @@ let interfaces = [ request ~name:"get" ~code:PcInterface.get_cmp03_data - ~repl:[Arg("value", uint16)] + ~repl:[Arg("dummy", uint16); + Arg("value", uint16)] (); ]); hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2010-03-17 20:54:30
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 629b4193197faaabf9d7805973df102491af678f (commit) from 53a4fc48142731ae7b198ba19c3fb25e5db1f677 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 629b4193197faaabf9d7805973df102491af678f Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 17 21:54:05 2010 +0100 Change LM interrupt mode to polling (again) ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.h b/USB_Module/Motor_Controller/Firmware/lm629.h index 85aeba3..94a7b96 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.h +++ b/USB_Module/Motor_Controller/Firmware/lm629.h @@ -22,8 +22,8 @@ // Parames graux #define LM_CLOCK 8e6 ///< Frence horloge LM (en Hz) -- forcnt 6 ou 8 MHz selon la rrence du composant -#define LM_INTERRUPT -//#define LM_POLLING +//#define LM_INTERRUPT +#define LM_POLLING #if defined(KROBOT_2010) // Constantes pour [Kro]bot 2010 diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 923c8ab..a74276b 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index f083e5b..f2e25bf 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,14 +1,14 @@ :020000040000FA -:0600000068EF33F012006E +:0600000064EF33F0120072 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000068EF33F0120066 +:0608000064EF33F012006A :060808002CEF13F01200BA -:0608180099EF13F012003D -:06082A00040065670000F8 -:1008300026010000210000005A670000540100005A -:100840000B0000004D670000470100000D00000094 -:0C0850004A6700006C010000030000007B +:0608180094EF13F0120042 +:06082A0004005D67000000 +:100830002601000021000000526700005401000062 +:100840000B00000045670000470100000D0000009C +:0C085000426700006C0100000300000083 :04085C00A4EC0EF00A :10086000030EE126010EE66EE1DAE552DF6E020EBE :10087000E66EDCDAE552E76E010EE7CFDBFF020E33 @@ -79,7 +79,7 @@ :100C8000808600000000020EE15C02E2E16AE552AB :100C9000E16EE552E7CFD9FF1200D9CFE6FFE1CFF1 :100CA000D9FF020EE126FE0EDB040DE0FE0EDB5046 -:100CB000020809E00C0EE66E08EC33F0E552F36A28 +:100CB000020809E00C0EE66E04EC33F0E552F36A2C :100CC000F46AAAD0A9D0FE0EDBCFE6FF47DEE552DC :100CD000010EE66E2EDEE552FE0EDB50020B02E147 :100CE000000E01D0010EE8B0838CE8A0839CFE0EBC @@ -104,7 +104,7 @@ :100E1000F3FF01C0F4FF00D0020EE15C02E2E16AE0 :100E2000E552E16EE552E7CFD9FF1200D9CFE6FFD8 :100E3000E1CFD9FFE652DF6AFE0EDB040CE0FE0EC6 -:100E4000DB50020808E00C0EE66E08EC33F0E552C9 +:100E4000DB50020808E00C0EE66E04EC33F0E552CD :100E5000000E61D060D0FE0EDBCFE6FF7FDDE552F5 :100E6000010EE66E66DDE552FE0EDB50020B02E17E :100E7000000E01D0010EE8B0838CE8A0839CFE0E2A @@ -126,8 +126,8 @@ :100F70000EF0A4EC0EF01D0E5EEC0EF0000EC3ECB5 :100F800011F0A9EF0EF0A4EC0EF067EC0FF084085E :100F90000DE067EC0FF0C40809E0E66AC2EC12F05D -:100FA0006AEC10F03BEC33F0E552EFD71C0E5EEC30 -:100FB0000EF0660EC3EC11F071EC10F067EC0FF060 +:100FA0006AEC10F037EC33F0E552EFD71C0E5EEC34 +:100FB0000EF0000EC3EC11F071EC10F067EC0FF0C6 :100FC000800804E067EC0FF0C008E7E167EC0FF081 :100FD000C00802E171EC10F01E0E5EEC0EF00F0E78 :100FE000C3EC11F0E5EC12F0FA0EDBCFE6FFFB0EDE @@ -202,10 +202,10 @@ :1014300011D052EC10F032E1020E43EC10F0010139 :101440005B512D5C0A6E5C512E580B6E5D512F580E :101450000C6E5E5130580D6E0AC02DF00BC02EF090 -:101460000CC02FF0306E92EC24F030EC0FF04BEC0F -:1014700012F042EC25F02EC002F02FC003F030C075 -:1014800004F031C005F080EC0FF095EC25F002EC93 -:1014900026F02FC0F3FF30C0F4FF02D05EEC10F056 +:101460000CC02FF0306E8EEC24F030EC0FF04BEC13 +:1014700012F03EEC25F02EC002F02FC003F030C079 +:1014800004F031C005F080EC0FF091EC25F0FEEC9B +:1014900025F02FC0F3FF30C0F4FF02D05EEC10F057 :1014A000A9EF0EF0E5EC11F047EC12F0030E5CEC46 :1014B0000FF0A9EF0EF0E5EC11F01FEC0FF0030EAA :1014C0005CEC0FF0A9EF0EF0A4EC0EF095EC10F030 @@ -215,13 +215,13 @@ :101500000FF0020E7BEF11F0A4EC0EF01C0EE126A2 :10151000F60EDB501EE0006A800E016E010E026EB8 :10152000430E036E17EC13F0336A346AC80E356E3F -:10153000420E366E42EC25F058EC12F0A9DB94EC2A -:1015400012F002EC26F0F70E2FC0DBFFF80E30C0D1 +:10153000420E366E3EEC25F058EC12F0A9DB94EC2E +:1015400012F0FEEC25F0F70E2FC0DBFFF80E30C0D6 :10155000DBFF59EC11F0E8DBE9EC11F00C6A800ECE :101560000D6E010E0E6E430E0F6ED4EC12F054ECA5 :1015700012F019EC11F022EC10F08ADB94EC12F06E :101580002EC0DEFF2FC0DEFF30C0DEFF31C0DDFF2A -:10159000DD52DD52A9EC0FF080EC0FF095EC25F058 +:10159000DD52DD52A9EC0FF080EC0FF091EC25F05C :1015A00058EC12F0E9EC11F0106A800E116E010E89 :1015B000126E430E136ED4EC12F027EC11F00BEC0C :1015C00013F094EC12F0040E2EC0DBFF050E2FC0BA @@ -232,10 +232,10 @@ :10161000090E2FC0DBFF0A0E30C0DBFF0B0E31C0FE :10162000DBFF080EDBCF04F0090EDBCF05F00A0E5E :10163000DBCF06F00B0EDBCF07F0336A346A356A76 -:10164000366A4DDB68EC26F0010A03E0D1EC0FF0BE +:10164000366A4DDB64EC26F0010A03E0D1EC0FF0C2 :1016500013D0080EDBCF08F0090EDBCF09F00A0E1D :10166000DBCF0AF00B0EDBCF0BF080EC0FF098EC29 -:1016700012F095EC25F019DB080E00C0DBFF090E17 +:1016700012F091EC25F019DB080E00C0DBFF090E1B :1016800001C0DBFF0A0E02C0DBFF0B0E03C0DBFF55 :1016900097DBACEC0FF08CEC10F0E8EC10F0F8EC11 :1016A0000FF0046A056A066A400E076E5EEC11F0E0 @@ -257,13 +257,13 @@ :1017A00047EC11F086DBF9EC12F0246E0D0EE15ED1 :1017B0002450CEEC12F01C0EE15C02E2E16AE5522C :1017C000E16EC7D2C1DA3C0EE126C3DB22EC13F096 -:1017D00061EC12F098EC12F095EC25F0BDDB7DEC9D +:1017D00061EC12F098EC12F091EC25F0BDDB7DECA1 :1017E00012F05EEC11F054EC12F034EC10F050DA20 -:1017F0002FEC11F04DDA73DAACEC24F056DA336AE0 +:1017F0002FEC11F04DDA73DAA8EC24F056DA336AE4 :10180000346A800E19EC10F0380E2EC0DBFF390E52 :101810002FC0DBFF3A0E30C0DBFF3B0E31C0DBFFD9 :1018200022EC13F042DA58DB5EEC11F07DDA54DB87 -:10183000EDEC2DF0086E080EE15E0850080E2DC08C +:10183000E9EC2DF0086E080EE15E0850080E2DC090 :10184000DBFF090E2EC0DBFF0A0E2FC0DBFF0B0EE5 :1018500030C0DBFFF60EDB5007E0D950F40FC7ECC9 :1018600011F0EE50ED1039E1BCDA080EDBCF0EF0CE @@ -275,9 +275,9 @@ :1018C00005F02DC02EF0EEEC11F08DEC11F0EADDFC :1018D0000A6E060EE15E0A50A3D1380EDBCF04F08B :1018E000390EDBCF05F03A0EDBCF06F03B0EDBCF37 -:1018F00007F0C3DB25EC13F095EC25F08CEC10F031 +:1018F00007F0C3DB25EC13F091EC25F08CEC10F035 :1019000003EC13F0B6DAB0DB08EC12F07DEC12F069 -:10191000BFD9DCD9ACEC24F022DB0BEC12F059EC93 +:10191000BFD9DCD9A8EC24F022DB0BEC12F059EC97 :1019200011F027EC11F094EC12F055DB046A056A13 :101930000BEC12F05EEC11F027EC11F094EC12F0CD :101940001C0E2EC0DBFF1D0E2FC0DBFF1E0E30C095 @@ -295,31 +295,31 @@ :101A000035F0270EF1EC12F02C0E2EC0DBFF2D0E60 :101A10002FC0DBFF2E0E30C0DBFF2F0E31C0DBFFEF :101A20002C0EDBCF04F02D0EDBCF05F02E0EDBCF1E -:101A300006F02F0EDBCF07F063DA51D995EC25F0D5 +:101A300006F02F0EDBCF07F063DA51D991EC25F0D9 :101A40003BEC11F0300E2EC0DBFF310E2FC0DBFF60 :101A5000320E30C0DBFF330E31C0DBFF280EDBCF90 :101A60002EF0290EDBCF2FF02A0EDBCF30F02B0E1D :101A7000DBCF31F03BEC11F0340E2EC0DBFF350E26 :101A80002FC0DBFF360E30C0DBFF370E31C0DBFF6F -:101A9000D950300F87D9D950340F84D9EDEC2DF0BF +:101A9000D950300F87D9D950340F84D9E9EC2DF0C3 :101AA000006E080EE15E00500C0E2DC0DBFF0D0E27 :101AB0002EC0DBFF0E0E2FC0DBFF0F0E30C0DBFF92 :101AC000006A016A026A400E036E00C0E6FF01C0B0 :101AD000E6FF02C0E6FFE66E9CD925EC13F0B2DA11 :101AE000FBD998EC11F02DC014F02EC015F02FC0CA -:101AF00016F030C017F047EC12F0EDEC2DF0186E38 +:101AF00016F030C017F047EC12F0E9EC2DF0186E3C :101B0000080EE15E1850E552E7CF03F0E552E7CF4B :101B100002F0E552E7CF01F0E552E7CF00F02DC02B :101B200004F02EC005F02FC006F030C007F026DA12 :101B300094EC12F043DAF60EDB5002081FE186EC5B -:101B400012F0ABEC24F0C6EC12F0ACEC24F005D9AA +:101B400012F0A7EC24F0C6EC12F0A8EC24F005D9B2 :101B50005CDA060E2FC0DBFF070E30C0DBFF000E85 :101B6000DFCF2FF0010EE0D8020ED3EC11F0D4DA63 :101B700064DB040E2FC0DBFF050E35D021D995D8CC :101B80000C0EDBCF04F00D0EDBCF05F00E0EDBCF1D :101B900006F00F0EDBCF07F004C033F005C034F0C1 -:101BA00006C035F007C036F0ABEC24F021DA86EC45 -:101BB00012F0ACEC24F0C6EC12F0ABEC24F0CDD873 +:101BA00006C035F007C036F0A7EC24F021DA86EC49 +:101BB00012F0A8EC24F0C6EC12F0A7EC24F0CDD87B :101BC00024DA040E2FC0DBFF050E30C0DBFF020E4F :101BD000DBCF2FF0030EA8D8CEDB9EDA2EDB060E6D :101BE0002FC0DBFF070E30C0DBFF2BD881D8040EDF @@ -343,11 +343,11 @@ :101D0000F3CFDEFFF4CFDDFF82EF11F0DBCF0BF07E :101D1000C2DB98EC12F0D2EF10F0DBCF17F0BBDB98 :101D20009EDAD9DB47EF12F0BFDB58EF12F002C0AA -:101D30002EF054DBABEC24F0F0DA64EC0AF0126E17 +:101D30002EF054DBA7EC24F0F0DA64EC0AF0126E1B :101D4000060EE15E12501200D9CFE6FFE1CFD9FFB7 :101D50001200E552E7CFD9FF1200100EDBCF33F0AF :101D6000110EDBCF34F0120EDBCF35F0130EEFDAAD -:101D700002EF26F042DBE76E1200FA0EDBCF00F036 +:101D7000FEEF25F042DBE76E1200FA0EDBCF00F03B :101D8000FB0EDBCF01F0FC0EDBCF02F0FD0EDBCF54 :101D900003F0000E006C011E0122021E0222031E2F :101DA00003221200E96EDACFEAFFABEF11F00CC0AC @@ -380,7 +380,7 @@ :101F5000120078DB8CEF10F0ABDAB0D912D2140E8D :101F60002EC0DBFF150E2FC0DBFF160E30C0DBFFCF :101F7000170E31C0DBFF046A056A12002DC033F072 -:101F80002EC034F02FC035F030C036F0120007EC10 +:101F80002EC034F02FC035F030C036F0120003EC14 :101F90002AF0E5522AD3336A346A356A400E366E27 :101FA0001200080EDBCF00F0090EDBCF01F00A0EA5 :101FB000DBCF02F00B0EDBCF03F01200100E2EC0B1 @@ -391,9 +391,9 @@ :10200000DBFF0F0E31C0DBFF1200020E2FC0DBFF23 :10201000030E30C0DBFFF90EDBCF2FF0FA0EDBCF63 :1020200030F01200356E430E366E1200A7EC07F04A -:10203000DCD2356E400E366E42EF25F0E66E5FD98B -:10204000A2EF11F0ABEC24F08CEF10F00CC033F0E9 -:102050000DC034F00EC035F00FC036F0ABEF24F0F9 +:10203000DCD2356E400E366E3EEF25F0E66E5FD98F +:10204000A2EF11F0A7EC24F08CEF10F00CC033F0ED +:102050000DC034F00EC035F00FC036F0A7EF24F0FD :10206000336A800E346E12002EC018F02FC019F0A3 :1020700030C01AF031C01BF012000C6A0D6A0E6AF3 :10208000400E0F6E1200E66EB3EC09F0E55212003E @@ -404,44 +404,44 @@ :1020D00000181200E1EC04F0E552E552020EE66E43 :1020E000120050DAB9EC07F0E5521200E66E90ECFF :1020F00007F0E552E55200091200080EDBCFE6FFBB -:10210000090EDBCFE6FF1200CFD9F7D9C4D995EC81 +:10210000090EDBCFE6FF1200CFD9F7D9C4D991EC85 :1021100025F017DA6BEF12F02EC008F02FC009F08F :1021200030C00AF031C00BF0120092DD2EC024F056 -:102130002FC025F030C026F031C027F077DE95ECB7 +:102130002FC025F030C026F031C027F077DE91ECBB :1021400025F02EC020F02FC021F030C022F031C089 -:1021500023F086DF810E66DF95EC25F033EF0EF07D +:1021500023F086DF810E66DF91EC25F033EF0EF081 :10216000DBCF11F0336A346A340E5CDF0EC02EF020 -:102170000FC02FF010C030F011C031F095EC25F0F9 +:102170000FC02FF010C030F011C031F091EC25F0FD :102180002EC00AF02FC00BF030C00CF031C00DF0A3 :10219000DB0E336E0F0E346E490E4BDF61DE78DDE1 -:1021A00097EF0EF095EC25F083D9CC0E336EBC0E74 +:1021A00097EF0EF091EC25F083D9CC0E336EBC0E78 :1021B000346E8C0E356E3B0E366E4ADA2DC000F052 :1021C0002EC001F02FC002F030C003F047EF12F034 :1021D000D3D96BDD106A116A800E126E3F0E136E3A :1021E000080EDBCF14F0090EDBCF15F00A0EDBCFA3 :1021F00016F00B0EDBCF17F014C033F015C034F01F -:1022000016C035F017C036F006DA60DD42EF25F073 +:1022000016C035F017C036F006DA60DD3EEF25F077 :10221000140EDBCF00F0150EDBCF01F0160EDBCF76 :1022200002F0170EDBCF03F01BDF010EFBDE66EFC3 :102230000EF087D92DDDD7EF0EF0E5D9F90EDBCF03 -:102240002FF0FA0E31D93DD96FD902EF26F02CD9F3 +:102240002FF0FA0E31D93DD96FD9FEEF25F02CD9F8 :1022500054D948EF0EF0DBCFE6FF51EF0EF014C07B -:102260002EF015C02FF016C030F017C031F095ECED +:102260002EF015C02FF016C030F017C031F091ECF1 :1022700025F0A1EF12F0140EDBCF33F0150EDBCFFB :1022800034F0160EDBCF35F0170EEBEF12F0CEDD8B :1022900020C02EF021C02FF022C030F023C031F03A -:1022A00095EC25F033EF0EF06DD94DEC06F0E552CC +:1022A00091EC25F033EF0EF06DD94DEC06F0E552D0 :1022B0001200FD0EDBCF2FF0FE0E1200FB0EDBCF67 :1022C0002FF0FC0E1200F70EDBCFE6FFF80EDBCF8F :1022D000E6FFF90EDBCFE6FFFA0EDBCFE6FF1200DA :1022E000EA6EEE500026EE500122EE500222EE5031 :1022F0000322F9EF0EF07DD9D0DE50D92AD564EC57 :1023000005F073D1DECF2DF0DECF2EF0DECF2FF033 -:10231000DDCF30F0DD52DD52120002EC26F02FC08E +:10231000DDCF30F0DD52DD521200FEEC25F02FC093 :1023200000F030C001F02FC0E6FF30C0E6FF120021 -:10233000D950380F37DDC7EF0FF0E66E08EC33F0F9 +:10233000D950380F37DDC7EF0FF0E66E04EC33F0FD :10234000E5521200DECFE6FFDDCFE6FF1200DBCF65 -:1023500036F095EF25F0EECFE6FFEECFE6FFEECFBD +:1023500036F091EF25F0EECFE6FFEECFE6FFEECFC1 :10236000E6FFEFCFE6FF1200010EA8DC0101010E2F :10237000556F566BEED4000EDFCF2FF0010E54EFE9 :1023800012F054EF12F0E66EE66A51EF0EF0E96ECD @@ -449,20 +449,20 @@ :1023A000DBCFE6FF1200DBCF2FF0030E54EF12F06D :1023B000E66EE66A030EE66E16EF10F0020EF3CF3D :1023C000DBFF030EF4CFDBFF1200BEDC41DC33EF9A -:1023D0000EF0E1DD95EC25F055EF0EF003C02FF087 -:1023E00004C030F005C031F0120052DC6FDCABEFFE -:1023F00024F0AADCFE0EDB041200E66E5AEC32F08A +:1023D0000EF0E1DD91EC25F055EF0EF003C02FF08B +:1023E00004C030F005C031F0120052DC6FDCA7EF02 +:1023F00024F0AADCFE0EDB041200E66E56EC32F08E :10240000E55212005BDC7DEF0EF04FDC09EF0FF0C0 -:10241000C2DD42EF25F0800E066E3F0E076E2DDE08 +:10241000C2DD3EEF25F0800E066E3F0E076E2DDE0C :1024200004C0E6FF05C0E6FF06C0E6FF07C0E6FF02 :102430000CC0E6FF0DC0E6FF0EC0E6FFE66E78DFDB :10244000E552E7CF0FF0E552E7CF0EF0E552E7CFC8 :102450000DF0E552E7CF0CF0E552E7CF07F0E5527B :10246000E7CF06F0E552E7CF05F0E552E7CF04F0FD :102470002DC010F02EC011F02FC012F030C013F09C -:102480007DDD95DC95EC25F047DE03EF13F02DC0E4 +:102480007DDD95DC91EC25F047DE03EF13F02DC0E8 :10249000E6FF1BEF13F0330E336EE20E346EC20E06 -:1024A000356E420E366E1200DBCF30F07DEF24F039 +:1024A000356E420E366E1200DBCF30F079EF24F03D :1024B0002EC004F02FC005F030C006F031C007F088 :1024C00012002EC00CF02FC00DF030C00EF031C045 :1024D0000FF048EF0EF0BD0E336E370E346E860EE1 @@ -470,1097 +470,1097 @@ :1024F0002FC00EF030C00FF012002EC014F02FC00D :1025000015F030C016F031C017F012006ADC0C0E66 :10251000DBCF0EF00D0EDBCF0FF00E0EDBCF10F089 -:102520000F0E1EDE08EF11F066EC0EF095EF25F0B1 +:102520000F0E1EDE08EF11F066EC0EF091EF25F0B5 :1025300008C02EF009C02FF00AC030F00BC031F0F7 :1025400012002EC010F02FC011F030C012F031C0B8 :1025500013F01200060EDBCFE6FF070E7CDE040E42 :10256000DBCFE6FF050E2BEF11F094EC0EF050DF01 -:102570004CDF6BD8ABEF24F048EC0EF06FEC0EF0B4 -:1025800095EF25F0FE0EDBCFE6FF1200ADEC0EF06E +:102570004CDF6BD8A7EF24F048EC0EF06FEC0EF0B8 +:1025800091EF25F0FE0EDBCFE6FF1200ADEC0EF072 :102590002FC0DEFF30C0DDFF08EF11F0030EE66E46 :1025A00031EC09F0E5521200F70EDBCF2FF0F80EF8 :1025B0001200C8DE51EC0EF00101010E546F120042 :1025C000E66EE66AECDE16EF10F0FC0EDBCFE6FFFF -:1025D000FD0E2BEF11F0DBCF36F042EC25F055EF7E +:1025D000FD0E2BEF11F0DBCF36F03EEC25F055EF82 :1025E0000EF0B5DE99DDF5EF11F0E552E552E5525A :1025F0001200E66E98EF08F0F90EDBCF2FF0FA0E1E -:1026000053DF8CEF10F048EC0EF06FEC0EF042EC64 +:1026000053DF8CEF10F048EC0EF06FEC0EF03EEC68 :1026100025F055EF0EF010C02EF011C02FF012C0B3 -:1026200030F013C031F0ACEC24F061EF12F0BCDFFD +:1026200030F013C031F0A8EC24F061EF12F0BCDF01 :102630003BDF8CEF10F02EC0E6FF2FC0E6FF30C06E :10264000E6FF120036DE54EF12F013DC19EF11F042 -:0826500095EC25F031EF26F0B6 +:0826500091EC25F02DEF26F0BE :08265800DACFE4FFE2CFDAFF64 :10266000E9CFE4FFEACFE4FFF6CFE4FFF7CFE4FFE2 :10267000F5CFE4FFF3CFE4FFF4CFE4FFFACFE4FFBC :1026800000EE29F0140EE80403E3EECFE4FFFBD7DD :1026900000EE00F0290EE80403E3EECFE4FFFBD7E1 -:1026A000ADEC1EF09EA013D0B7EC1EF001014D2B37 +:1026A000A9EC1EF09EA013D0B3EC1EF001014D2B3F :1026B000000E4E23E80E4D5D030E4E5905E34D6BA3 -:1026C0004E6B4F2B000E502328EC2CF09E90F2A066 -:1026D00003D02EEC04F0F290C0EC1EF002E2E16AAE -:1026E000E552E16EE552E7CFD9FFE55200EE28F062 -:1026F000290EE80403E3E5CFEDFFFBD700EE3CF045 -:10270000140EE80403E3E5CFEDFFFBD7E5CFFAFFB6 -:10271000E5CFF4FFE5CFF3FFE5CFF5FFE5CFF7FF1A -:10272000E5CFF6FFE5CFEAFFE5CFE9FFE5CFDAFF3A -:102730001100D8CFE4FFE0CFE4FFE46EDACFE4FF8E -:10274000E2CFDAFFF3CFE4FFF4CFE4FFADEC1EF00D -:10275000C0EC1EF002E2E16AE552E16EE552E7CF1D -:10276000D9FFE552E5CFF4FFE5CFF3FFE5CFDAFF80 -:10277000E550E5CFE0FFE5CFD8FF100004D80BEC23 -:102780001FF063D8FCD70F0EC11202D8D5EF1EF090 -:10279000D0EC1EF0E65284EC1EF00101696F070ECA -:1027A000695D10E1E66A5AEC32F0E552DF6E000E28 -:1027B000DF80C8EC1EF0E66A3BEC33F0E552DF70D8 -:1027C000C8EC1EF01C0E9316D08EF28EF28CF286A0 -:1027D000F30E8C1695160101476B486B496B4A6BDB -:1027E000010E4B6F92948094939881980D0EE66E33 -:1027F0007C0EE66EE10EE66ECDEC31F0E552E55270 -:10280000E552C70E921694943F0E9516010EE66E91 -:1028100099EC04F0E552838C808A82848088838ED0 -:1028200080868294010EE66E76EC33F0E552828467 -:102830009D80C50EE66ECBEC32F0E552B7EC1EF093 -:10284000E552E552E7CFD9FF1200D9CFE6FFE1CF3D -:10285000D9FF0F0EE12601014B5102E0C9EC1DF03A -:10286000200E0101005D03E36D50020B12E025EC28 -:102870000EF000090CE0E66A010EE66E030EE66E4D -:1028800053EC09F0E552E552E55221EC0EF0BFEFB2 -:102890001DF0010149514A1102E1000E08D049C161 -:1028A000E9FF4AC1EAFFEF50800B01E0010E000989 -:1028B00047E101014651EA6A260FE96E010EEA225C -:1028C000EF5000083DE20501406B01014C514C2BDB -:1028D0000501416F0501040E426F01014651EA6A8C -:1028E000260FE96E010EEA22EFCF43F5400EE66EA9 -:1028F000400EE66E050EE66E010EE66E010EE66E09 -:1029000026EC23F0006E050EE15E0050F3CF49F196 -:10291000F4CF4AF101014651EA6A260FE96E010E31 -:10292000EA22EF6A01014651000803E2010146076D -:1029300007D001014551000803E201011F0E466F57 -:10294000010149514A1102E1000E08D049C1E9FFD5 -:102950004AC1EAFFEF50800B01E0010E00092BE1B4 -:1029600025EC0EF0000927E017EC0EF0000923E03B -:102970000501406B01014C514C2B0501416F0501D4 -:102980000A0E426F0501436B0501010E486F400EB0 -:10299000E66E400EE66E050EE66E010EE66E010E68 -:1029A000E66E26EC23F0006E050EE15E0050F3CFDC -:1029B00049F1F4CF4AF101015151020A10E0030A32 -:1029C00001E021D0030EE66E7FEC2DF0E55218EC0D -:1029D00008F0000903E00101020E516F16D0200E2D -:1029E000E66E030EE66EC80EE66EE66AE80EE66E6A -:1029F000030EE66E52EC0AF0006E060EE15E005029 -:102A00000101516B02D00101516B01014751481185 -:102A100002E1000E08D047C1E9FF48C1EAFFEF50CC -:102A2000800B01E0010E000902E0BFEF1DF005017F -:102A30000251070A02E120EF1DF00D0A01E16AD2FE -:102A4000010A01E12AD20D0A01E1C2D1040A1AE009 -:102A5000030A07E0010A02E07EEF1DF0FF00BFEF6E -:102A60001DF0E66A5AEC32F0E552DF6E000EDB80B4 -:102A7000DFCFE6FFE66A3AEC32F0E552E552FF00BE -:102A8000BFEF1DF0010149514A1102E1000E08D0CB -:102A900049C1E9FF4AC1EAFFEF50800B01E0010E96 -:102AA000000901E093D100C540F50501416B050126 -:102AB000030E426F0501436B05010851100A01E145 -:102AC00038D11F0A01E1FAD0080A01E1BCD0010A9D -:102AD00001E17ED0020A71E0070A64E0010A20E009 -:102AE000030A06E0010A01E047D169C148F547D170 -:102AF0000501486B710E006E650E016E026A00C022 -:102B0000E6FF01C0E6FF02C0E6FF480EE66E050ED6 -:102B1000E66E1EEC32F0036E050EE15E03502FD11F -:102B20000501486B650E006E650E016E026A00C0FD -:102B3000E6FF01C0E6FF02C0E6FF480EE66E050EA6 -:102B4000E66E1EEC32F0036E050EE15E0350630E7E -:102B5000006E650E016E026A00C0E6FF01C0E6FF6E -:102B600002C0E6FF480EE66E050EE66E1EEC32F081 -:102B7000036E050EE15E03505A0E006E650E016E87 -:102B8000026A00C0E6FF01C0E6FF02C0E6FF480E91 -:102B9000E66E050EE66E1EEC32F0036E050EE15E8B -:102BA0000350EDD092CF48F593CF49F594CF4AF535 -:102BB00095CF4BF596CF4CF5E2D080CF48F581CF3D -:102BC00049F582CF4AF583CF4BF584CF4CF5D7D06A -:102BD000010EE66ECEEC2CF0E552010E2DC0DBFFAF -:102BE000020E2EC0DBFF030E2FC0DBFF040E30C031 -:102BF000DBFF040EDBCF48F5030EDBCF49F5020EF9 -:102C0000DBCF4AF5010EDBCF4BF5020EE66ECEECC4 -:102C10002CF0E552010E2DC0DBFF020E2EC0DBFFB3 -:102C2000030E2FC0DBFF040E30C0DBFF040EDBCF32 -:102C30004CF5030EDBCF4DF5020EDBCF4EF5010E4A -:102C4000DBCF4FF59CD0010EE66EB3EC09F0E552F8 -:102C5000010E2DC0DBFF020E2EC0DBFF030E2FC0C6 -:102C6000DBFF040E30C0DBFF040EDBCF48F5030EA4 -:102C7000DBCF49F5020EDBCF4AF5010EDBCF4BF57A -:102C8000020EE66EB3EC09F0E552010E2DC0DBFF3B -:102C9000020E2EC0DBFF030E2FC0DBFF040E30C080 -:102CA000DBFF040EDBCF4CF5030EDBCF4DF5020E40 -:102CB000DBCF4EF5010EDBCF4FF561D0010EE66E96 -:102CC000DBEC09F0E552010E2DC0DBFF020E2EC039 -:102CD000DBFF030E2FC0DBFF040E30C0DBFF040E52 -:102CE000DBCF48F5030EDBCF49F5020EDBCF4AF50B -:102CF000010EDBCF4BF5020EE66EDBEC09F0E55280 -:102D0000010E2DC0DBFF020E2EC0DBFF030E2FC015 -:102D1000DBFF040E30C0DBFF040EDBCF4CF5030EEF -:102D2000DBCF4DF5020EDBCF4EF5010EDBCF4FF5BD -:102D300026D0010EE66EF7EC09F0E552050EF3CF52 -:102D4000DBFF060EF4CFDBFF060EDBCF48F5050EEA -:102D5000DBCF49F5020EE66EF7EC09F0E552050E01 -:102D6000F3CFDBFF060EF4CFDBFF060EDBCF4AF519 -:102D7000050EDBCF4BF503D00501020E436F400E6D -:102D8000E66E400EE66E050EE66E010EE66E010E74 -:102D9000E66E26EC23F0006E050EE15E0050F3CFE8 -:102DA00049F1F4CF4AF1400EE66E000EE66E050ED4 -:102DB000E66EE66A010EE66E26EC23F0006E050E66 -:102DC000E15E0050F3CF47F1F4CF48F1BFEF1DF0C3 -:102DD00005010851030A37E0010A25E0030A13E060 -:102DE000010A01E040D005010951921205010A5182 -:102DF000931205010B51941205010C519512050116 -:102E00000D51961235D00501091D921605010A1DB6 -:102E1000931605010B1D941605010C1D9516050151 -:102E20000D1D961625D00501091D891605010A1DDF -:102E30008A1605010B1D8B1605010C1D8C1605014C -:102E40000D1D8D1615D005010951891205010A5174 -:102E50008A1205010B518B1205010C518C120501D0 -:102E60000D518D1205D0030EE66E08EC33F0E552DD -:102E7000400EE66E000EE66E050EE66EE66A010E88 -:102E8000E66E26EC23F0006E050EE15E0050F3CFF7 -:102E900047F1F4CF48F1BFEF1DF005010851020AD8 -:102EA00009E0030A01E01CD009C5E6FF7FEC2DF024 -:102EB000E5521BD009C5E6FF86EC2DF0E55225EC66 -:102EC0000EF000090CE0E66A010EE66E030EE66EF7 -:102ED00053EC09F0E552E552E55221EC0EF005D035 -:102EE000010EE66E08EC33F0E552400EE66E000E81 -:102EF000E66E050EE66EE66A010EE66E26EC23F03F -:102F0000006E050EE15E0050F3CF47F1F4CF48F1BB -:102F1000BFEF1DF005010851060A02E1DFEF1CF0CA -:102F2000080A02E19FEF1CF0030A02E199EF1CF08E -:102F3000070A02E13AEF1CF0030A01E1E8D3010AB3 -:102F400001E1FAD20F0A01E1E3D2020A01E19BD2C8 -:102F5000150A01E15FD2140A01E131D2070A01E149 -:102F600003D2010A01E1D5D1030A01E1A7D1010A87 -:102F700001E1A1D10C0A01E127D1030A01E195D0B9 -:102F8000040A02E007EF1DF00501090504E0030E45 -:102F90000501095D40E10AC5E6FF010EE66E3AEC67 -:102FA00032F0E552E5520BC5E6FF020EE66E3AEC52 -:102FB00032F0E552E5520CC5E6FF030EE66E3AEC40 -:102FC00032F0E552E5520DC5E6FF040EE66E3AEC2E -:102FD00032F0E552E5520EC5E6FF050EE66E3AEC1C -:102FE00032F0E552E5520FC5E6FF060EE66E3AEC0A -:102FF00032F0E552E55210C5E6FF070EE66E3AECF8 -:1030000032F0E552E55211C5E6FF080EE66E3AECE5 -:1030100032F0E552E552020E0501095D04E0030EAF -:103020000501095D40E10AC5E6FF090EE66E3AECCE -:1030300032F0E552E5520BC5E6FF0A0EE66E3AECB9 -:1030400032F0E552E5520CC5E6FF0B0EE66E3AECA7 -:1030500032F0E552E5520DC5E6FF0C0EE66E3AEC95 -:1030600032F0E552E5520EC5E6FF0D0EE66E3AEC83 -:1030700032F0E552E5520FC5E6FF0E0EE66E3AEC71 -:1030800032F0E552E55210C5E6FF0F0EE66E3AEC5F -:1030900032F0E552E55211C5E6FF100EE66E3AEC4D -:1030A00032F0E552E5520CEF1DF000C540F5050188 -:1030B000416B0501030E426F0501436B010EE66E85 -:1030C0005AEC32F0E5520501486F020EE66E5AECFA -:1030D00032F0E5520501496F030EE66E5AEC32F00C -:1030E000E55205014A6F040EE66E5AEC32F0E552E5 -:1030F00005014B6F050EE66E5AEC32F0E552050104 -:103100004C6F060EE66E5AEC32F0E55205014D6F3B -:10311000070EE66E5AEC32F0E55205014E6F080ECE -:10312000E66E5AEC32F0E55205014F6F090EE66E7D -:103130005AEC32F0E5520501506F0A0EE66E5AEC79 -:1031400032F0E5520501516F0B0EE66E5AEC32F08B -:10315000E5520501526F0C0EE66E5AEC32F0E55264 -:103160000501536F0D0EE66E5AEC32F0E552050183 -:10317000546F0E0EE66E5AEC32F0E5520501556FB3 -:103180000F0EE66E5AEC32F0E5520501566F100E46 -:10319000E66E5AEC32F0E5520501576F400EE66ECE -:1031A000400EE66E050EE66E010EE66E010EE66E50 -:1031B00026EC23F0006E050EE15E0050F3CF49F1DE -:1031C000F4CF4AF10CEF1DF0E66A010EE66E3AEC20 -:1031D00032F0E552E552010EE66E020EE66E3AEC72 -:1031E00032F0E552E552E66A030EE66E3AEC32F052 -:1031F000E552E552E66A040EE66E3AEC32F0E5522C -:10320000E552E66A050EE66E3AEC32F0E552E5521A -:10321000E66A060EE66E3AEC32F0E552E552030E2F -:10322000E66E070EE66E3AEC32F0E552E552E80E35 -:10323000E66E080EE66E3AEC32F0E552E552E66ACA -:10324000090EE66E3AEC32F0E552E552010EE66EFA -:103250000A0EE66E3AEC32F0E552E552E66A0B0EE3 -:10326000E66E3AEC32F0E552E552E66A0C0EE66E96 -:103270003AEC32F0E552E552E66A0D0EE66E3AECB3 -:1032800032F0E552E552E66A0E0EE66E3AEC32F0A6 -:10329000E552E552030EE66E0F0EE66E3AEC32F0A2 -:1032A000E552E552E80EE66E100EE66E3AEC32F0AC -:1032B000E552E552B1D318EC08F0AED3060E09C5BD -:1032C000DBFF050E0AC5DBFF080E0BC5DBFF070E93 -:1032D0000CC5DBFF0A0E0DC5DBFF090E0EC5DBFFBB -:1032E000090EDBCFE6FF0A0EDBCFE6FF070EDBCFD2 -:1032F000E6FF080EDBCFE6FF050EDBCFE6FF060E8E -:10330000DBCFE6FF52EC0AF0006E060EE15E0050E5 -:1033100083D3060E09C5DBFF050E0AC5DBFF080EC9 -:103320000BC5DBFF070E0CC5DBFF0A0E0DC5DBFF6F -:10333000090E0EC5DBFF090EDBCFE6FF0A0EDBCF61 -:10334000E6FF070EDBCFE6FF080EDBCFE6FF050E3C -:10335000DBCFE6FF060EDBCFE6FF5BEC0AF0006E8C -:10336000060EE15E005058D3060E09C5DBFF050EC0 -:103370000AC5DBFF080E0BC5DBFF070E0CC5DBFF24 -:103380000A0E0DC5DBFF090E0EC5DBFF090EDBCFF4 -:10339000E6FF0A0EDBCFE6FF070EDBCFE6FF080EE7 -:1033A000DBCFE6FF050EDBCFE6FF060EDBCFE6FF49 -:1033B00064EC0AF0006E060EE15E00502DD3060E9E -:1033C00009C5DBFF050E0AC5DBFF080E0BC5DBFFD9 -:1033D000070E0CC5DBFF0A0E0DC5DBFF090E0EC57F -:1033E000DBFF090EDBCFE6FF0A0EDBCFE6FF070EA1 -:1033F000DBCFE6FF080EDBCFE6FF050EDBCFE6FFF7 -:10340000060EDBCFE6FF75EC0AF0006E060EE15EFD -:10341000005002D3060E09C5DBFF050E0AC5DBFF0F -:10342000080E0BC5DBFF070E0CC5DBFF0A0E0DC532 -:10343000DBFF090E0EC5DBFF0C0E0FC5DBFF0B0E0D -:1034400010C5DBFF11C5E6FF0B0EDBCFE6FF0C0E50 -:10345000DBCFE6FF090EDBCFE6FF0A0EDBCFE6FF90 -:10346000070EDBCFE6FF080EDBCFE6FF050EDBCF56 -:10347000E6FF060EDBCFE6FF84EC0AF0006E090ED5 -:10348000E15E0050C9D2060E09C5DBFF050E0AC574 -:10349000DBFF080E0BC5DBFF070E0CC5DBFF0A0EBA -:1034A0000DC5DBFF090E0EC5DBFF0C0E0FC5DBFFE4 -:1034B0000B0E10C5DBFF0E0E12C5DBFF0D0E13C584 -:1034C000DBFF0D0EDBCFE6FF0E0EDBCFE6FF11C5F7 -:1034D000E6FF0B0EDBCFE6FF0C0EDBCFE6FF090E9F -:1034E000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FF02 -:1034F000080EDBCFE6FF050EDBCFE6FF060EDBCFC7 -:10350000E6FFE2EC0BF0006E0B0EE15E005084D2A1 -:10351000060E0AC5DBFF050E0BC5DBFF050EDBCF74 -:10352000E6FF060EDBCFE6FF09C5E6FF53EC09F028 -:10353000E552E552E55270D2060E0AC5DBFF050ED4 -:103540000BC5DBFF080E0CC5DBFF070E0DC5DBFF4F -:103550000A0E0EC5DBFF090E0FC5DBFF090EDBCF20 -:103560002FF00A0EDBCF30F07BEC24F02EC008F0F9 -:103570002FC009F030C00AF031C00BF0330E336EAB -:10358000E20E346EC20E356E420E366E08C02EF05C -:1035900009C02FF00AC030F00BC031F095EC25F0D7 -:1035A0002EC004F02FC005F030C006F031C007F087 -:1035B000CC0E336EBC0E346E8C0E356E3B0E366EFA -:1035C00004C02EF005C02FF006C030F007C031F067 -:1035D00095EC25F031EC26F02DC000F02EC001F066 -:1035E0002FC002F030C003F000C0E6FF01C0E6FFCC -:1035F00002C0E6FF03C0E6FF070EDBCF2FF0080E88 -:10360000DBCF30F07BEC24F02EC014F02FC015F08F -:1036100030C016F031C017F0330E336EE20E346E48 -:10362000C20E356E420E366E14C02EF015C02FF04D -:1036300016C030F017C031F095EC25F02EC010F018 -:103640002FC011F030C012F031C013F0BD0E336E38 -:10365000370E346E860E356E410E366E10C02EF06B -:1036600011C02FF012C030F013C031F095EC25F0EE -:1036700031EC26F02DC00CF02EC00DF02FC00EF056 -:1036800030C00FF00CC0E6FF0DC0E6FF0EC0E6FF35 -:103690000FC0E6FF050EDBCF2FF0060EDBCF30F0BC -:1036A0007BEC24F02EC01CF02FC01DF030C01EF0AB -:1036B00031C01FF0330E336EE20E346EC20E356E23 -:1036C000420E366E1CC02EF01DC02FF01EC030F012 -:1036D0001FC031F095EC25F031EC26F02DC018F02C -:1036E0002EC019F02FC01AF030C01BF018C0E6FF32 -:1036F00019C0E6FF1AC0E6FF1BC0E6FF09C5E6FFDA -:1037000098EC08F0206E0D0EE15E205085D1060E7B -:103710000AC5DBFF050E0BC5DBFF080E0CC5DBFF82 -:10372000070E0DC5DBFF0EC5E6FF070EDBCF2FF042 -:10373000080EDBCF30F07BEC24F02EC008F02FC059 -:1037400009F030C00AF031C00BF0330E336EE20ED8 -:10375000346EC20E356E420E366E08C02EF009C0B1 -:103760002FF00AC030F00BC031F095EC25F02EC0E0 -:1037700004F02FC005F030C006F031C007F0CC0EC9 -:10378000336EBC0E346E8C0E356E3B0E366E04C03E -:103790002EF005C02FF006C030F007C031F095ECD8 -:1037A00025F031EC26F02DC000F02EC001F02FC026 -:1037B00002F030C003F000C0E6FF01C0E6FF02C027 -:1037C000E6FF03C0E6FF050EDBCF2FF0060EDBCFD2 -:1037D00030F07BEC24F02EC014F02FC015F030C078 -:1037E00016F031C017F0330E336EE20E346EC20E97 -:1037F000356E420E366E14C02EF015C02FF016C076 -:1038000030F017C031F095EC25F02EC010F02FC02D -:1038100011F030C012F031C013F0BD0E336E370E10 -:10382000346E860E356E410E366E10C02EF011C00D -:103830002FF012C030F013C031F095EC25F031ECD0 -:1038400026F02DC00CF02EC00DF02FC00EF030C0B1 -:103850000FF00CC0E6FF0DC0E6FF0EC0E6FF0FC084 -:10386000E6FF09C5E6FFDBEC08F0186E0A0EE15E24 -:103870001850D2D0060E0AC5DBFF050E0BC5DBFFC4 -:103880000CC5E6FF050EDBCF2FF0060EDBCF30F0C8 -:103890007BEC24F02EC008F02FC009F030C00AF0F5 -:1038A00031C00BF0330E336EE20E346EC20E356E45 -:1038B000420E366E08C02EF009C02FF00AC030F05C -:1038C0000BC031F095EC25F02EC004F02FC005F0B0 -:1038D00030C006F031C007F0BD0E336E370E346EC7 -:1038E000860E356E410E366E04C02EF005C02FF0E8 -:1038F00006C030F007C031F095EC25F031EC26F031 -:103900002DC000F02EC001F02FC002F030C003F037 -:1039100000C0E6FF01C0E6FF02C0E6FF03C0E6FF0D -:1039200009C5E6FF19EC09F00C6E060EE15E0C50BD -:1039300073D009C5E6FF31EC09F0E5526DD000C542 -:1039400040F50501416B0501030E426F0501436B14 -:10395000010EE66E07EC0AF0E552050EF3CFDBFF31 -:10396000060EF4CFDBFF060EDBCF48F5050EDBCFEE -:1039700049F5020EE66E07EC0AF0E552050EF3CFAC -:10398000DBFF060EF4CFDBFF080EDBCF4AF5070E98 -:10399000DBCF4BF5400EE66E400EE66E050EE66E92 -:1039A000010EE66E010EE66E26EC23F0006E050EAB -:1039B000E15E0050F3CF49F1F4CF4AF12DD000C5BC -:1039C00040F50501416B0501030E426F0501436B94 -:1039D00017EC0EF0000904E00501010E486F02D05B -:1039E0000501486B400EE66E400EE66E050EE66E73 -:1039F000010EE66E010EE66E26EC23F0006E050E5B -:103A0000E15E0050F3CF49F1F4CF4AF105D0010E49 -:103A1000E66E08EC33F0E552400EE66E000EE66E00 -:103A2000050EE66EE66A010EE66E26EC23F0006EE9 -:103A3000050EE15E0050F3CF47F1F4CF48F19FD07F -:103A4000010149514A1102E1000E08D049C1E9FFC4 -:103A50004AC1EAFFEF50800B01E0010E00094DE181 -:103A60000101010E516F0501406B01014C514C2BBE -:103A70000501416F0501050E426F0501436B05010C -:103A8000486B460E006E650E016E026A00C0E6FFCE -:103A900001C0E6FF02C0E6FF480EE66E050EE66EC8 -:103AA0001EEC32F0036E050EE15E0350400EE66E32 -:103AB000400EE66E050EE66E010EE66E010EE66E37 -:103AC00026EC23F0006E050EE15E0050F3CF49F1C5 -:103AD000F4CF4AF1400EE66E000EE66E050EE66E7D -:103AE000E66A010EE66E26EC23F0006E050EE15E3E -:103AF0000050F3CF47F1F4CF48F141D001014951D3 -:103B00004A1102E1000E08D049C1E9FF4AC1EAFFAB -:103B1000EF50800B01E0010E000931E100C540F5D6 -:103B20000501416B0501030E426F0501010E436F54 -:103B3000400EE66E400EE66E050EE66E010EE66E77 -:103B4000010EE66E26EC23F0006E050EE15E0050DD -:103B5000F3CF49F1F4CF4AF1400EE66E000EE66E67 -:103B6000050EE66EE66A010EE66E26EC23F0006EA8 -:103B7000050EE15E0050F3CF47F1F4CF48F10F0E90 -:103B8000E15C02E2E16AE552E16EE552E7CFD9FF7E -:103B9000120001015251531104E1100E526F270E11 -:103BA000536F5207000E535B6DA207D05251531151 -:103BB0002EE18C748CB413D027D00101005102E1A6 -:103BC0008C9422D0000502E18C8409D0020E005DA5 -:103BD00002E18C8419D0040E005D03E18C948C8684 -:103BE0001200100E005D06E10101525153110FE168 -:103BF0008C740AD0200E005D0AE10101525153116C -:103C000006E18C748CA402D08C9612008C86120073 -:103C10001200120012001200BEEF30F012001E0E51 -:103C2000E66E010EE66EF4EC22F0E552E552400E2F -:103C3000E66E000EE66E050EE66EE66A010EE66EB4 -:103C400026EC23F0006E050EE15E0050F3CF47F145 -:103C5000F4CF48F112006D840101080E6A6F070E5F -:103C60006B6F6A07000E6B5B6A516B11FAE16D9422 -:103C70001200D9CFE6FFE1CFD9FFFD0EDBCF2FF049 -:103C8000FE0EDBCF30F0010E2F1801E1305033E093 -:103C9000E8682F1802E1E86830182BE0030E2F18AF -:103CA00001E1305024E0040E2F1801E130501DE0F6 -:103CB000020E2F1801E1305016E0170E2F1801E107 -:103CC00030500FE0160E2F1801E1305008E0150EAD -:103CD0002F1801E1305001E010D0A1DF0FD09EDF9E -:103CE0000DD09ADF0BD096DF09D092DF07D091DF9D -:103CF00005D091DF03D0000001D000D0010E00D02C -:103D0000E552E7CFD9FF12004BD8E652D0B202D02D -:103D1000010E15D0D0B802D0020E11D0D0B002D012 -:103D2000030E0DD0D0B602D0040E09D0FCAE02D0E6 -:103D3000050E05D0FCAC02D0060E01D0070EDF6EDA -:103D4000D088D086D084D082D080FC9EFC9CDF506E -:103D5000E552E552E7CFD9FF1200E65221D8020E14 -:103D6000E126F350DF6E010EF4CFDBFF1200C00E30 -:103D7000E66EE00EE66EECEC32F0E552E552120033 -:103D8000DF50F36E010EDB50F46E020EE15C1200A8 -:103D9000DFCFE6FFE66A3AEC32F0E552E552120078 -:0A3DA000D9CFE6FFE1CFD9FF1200F2 -:063DAA00CDEC23F06A6A73 -:103DB000686A00EC24F06D8C6E6AB0EC23F06D9CA8 -:103DC000DF6AE1EC23F010E2DF50040DF3CFE9FFEE -:103DD000F4CFEAFF000EE926040EEA22EE6AEE6A4C -:103DE000EE6AEE6ADF2AEDD7160E706E68A604D072 -:103DF000030E76EC23F0FAD70101136B186B196BE5 -:103E00001A6B6D98080E0B6F040E0C6F016B006B34 -:103E1000E5528BEF23F0CDEC23F0010100510BE1D3 -:103E20006D6A696A00EC24F06DB602D06D86FCD72D -:103E30000101010E006F000508E16DBA06D0686A45 -:103E4000696A69806988020E006F6850040B07E098 -:103E50006950040B04E0020E76EC23F089D86DB2B1 -:103E600047D06850010B14E06950010B11E09DDF51 -:103E70000101040E006F0401200E026F040E036F97 -:103E8000080E016F006B8C0E0013E66A3FEC24F005 -:103E90006850100B07E06950100B04E060D8040E66 -:103EA00076EC23F06850400B0BE06950400B08E0C3 -:103EB00007EC24F0020E7EEC23F0060E76EC23F0E5 -:103EC0006850200B04E06950200B01E035D86850A1 -:103ED000020B0AE06950020B07E007EC24F0E668E9 -:103EE000E6685FEC24F06A6A040E0101005D02E2FC -:103EF000A19A1FD069A61CD0DF6A040EDF5C18E20D -:103F000068A616D06CCF20F1030E76EC23F0780E65 -:103F10000101201502E138D809D0000EE66EE66AEC -:103F2000200EE66E010EE66E010EE8DBDF2AE5D715 -:103F3000A19AE5528BEF23F070A00ED099EC23F0FC -:103F4000EF50800808E1D5DBEF50840804E199ECDC -:103F500023F08C0EEF6E7090050E76EF23F06984DF -:103F6000040EC4DB6D82B9EC23F0040E7EEF23F067 -:103F7000B9EC23F0030EC2DB6D92699468A403D000 -:103F8000020EB4DBFBD71200CDEC23F0FD0E0101D5 -:103F900020153DE17E0E2015E8407F0B040DF3CF88 -:103FA00003F1F4CF04F1000E0327040E042303C130 -:103FB00005F104C106F10575BCDBEF503C0BE8428E -:103FC000E8420D0822E1B5DB36EC24F0EECF00F03C -:103FD000EFCF01F0280E001816E1040E011813E1CE -:103FE00070EC24F0DF6AEDDB0EE2DF50E9EC23F049 -:103FF000DF50EA6A200FE96E040EEA22E552E7502C -:10400000EF6EDF2AF0D70AD807D01AD805D0FD0EF8 -:104010002015040801E122D8E5527DD36ADBEF5078 -:10402000800B02E066DBEF6A01010F6B106B146B13 -:10403000156B136B64D89DDB170E60DBB4EF21F0BA -:10404000020E0101105D02E141EF22F034D80101BE -:10405000215102E13BEF24F0216B12009EDB49DB92 -:10406000EF50400B01E0010EDF6E01010B75080EF1 -:10407000005D09E122C46EFF6E50000802E2100EDE -:1040800001D0040E006F100513E174EC24F0A6D9E2 -:10409000020E01010F5D03E12CDB840E07D0DF501F -:1040A00003E127DBC80E02D024DB880EEF6E01D0BF -:1040B00002D8E55230D32BDB0101106B1ADBEF6A1B -:1040C000040E0B19006E0CC101F0DE6E0CC1DDFF99 -:1040D00019DBEF6A18AF0CD01B511C1107E005D09B -:1040E0001CC1FAFF01011B51F96EFADF0101189F93 -:1040F000020EE15C02E2E16AE552E16E0CD30401DA -:104100002051600BE842E842E842E842E8420009F8 -:1041100001E0120021510C0A45E00B0A3FE00C0AB5 -:1041200031E0010A22E00B0A1EE0020A1CE0030A49 -:1041300018E0080A10E0010A0CE00F0A08E0030A80 -:1041400001E012000101138F080E006F120034EF1E -:1041500021F09DEF22F00101010E116F010E126F8F -:104160000CD075EF21F0D3EF20F024510101116F35 -:10417000126B020E1127010E12231381010E146F10 -:10418000138F12000101138F04012451EA6A020FF8 -:10419000E96E010EEA2222C4EFFF1200EADA160EDF -:1041A0007EEF23F012007EDB040EE12604012205DF -:1041B00010E120511F0B00090CE10101138F030EC8 -:1041C0000401215D04E10101010E1F6F02D0010114 -:1041D0001F6B0401225141E120511F0B02083DE1F8 -:1041E00024510F0B000939E00101138F040124BF92 -:1041F00005D0A4DA070EE926010E04D09FDA0B0ED3 -:10420000E926010ED2DA030E215D03E17BDA840E8A -:1042100023D024510F0B016A700F006E0F0E012284 -:10422000020E00C0DBFF030E01C0DBFF020EDBCF7E -:10423000E9FF030EDBCFEAFFEE90ED5224AF06D08C -:1042400061DAEF6ADF745EDA400E06D05BDA880E60 -:10425000EF6EDF7457DAC80EEF6E040EE15C02E217 -:10426000E16AE552E16E57D2800E0401205D3CE127 -:104270000101C00E136F04012351030A1EE0010A5D -:1042800009E0030A2FE101014A0E116F620E126F5D -:10429000120E22D0C3DAF40EF626620EA2DA020E55 -:1042A0000101F76A1125F66E1251F7220900F5CFC8 -:1042B00014F10A00F5CF15F11200030E225D0FE292 -:1042C000ADDAF60EF626620E8CDA11C1F6FF12C1D7 -:1042D000F7FF0800F5500101146F156B1200010182 -:1042E000136B12000101136B120011DA0401286B29 -:1042F000296B20511F0B020A11E0030A0CE0010A8E -:1043000022E10101138F0401288101011F051BE136 -:104310000401288318D00101138F15D00101138FD8 -:10432000040124BF05D00ADA070EE926010E04D0E5 -:1043300005DA0B0EE926010E38DAE4D9EF50040B4A -:1043400002E0010E286F010113AF07D0280E116F94 -:10435000040E126F1381020E146F020EE15C02E272 -:10436000E16AE552E16ED7D16D98010113BF08D023 -:1043700018AF02D061DA2AD07EDABBD9840E27D0FA -:1043800018BF2BD0040120AF24D001011451040127 -:10439000265D010115510401275904E226C414F1D8 -:1043A00027C415F11BD80101010E106FA1DA800E90 -:1043B000EF6E216BBED9EE52080EEF6E91DAB9D9CD -:1043C000840EEF6E010E216F8FDA93D9C80EEF6E57 -:1043D0001200010131DAC80EEF6E120098D9010106 -:1043E000080E145D000E15590DE214C1DEFF15C153 -:1043F000DDFF0F5102E1010E03D00F0506E1020EB1 -:104400000F6F03D0080EDE6EDD6A73D9EF9271D99B -:10441000EF906FD9010EDB50EF126BD9EE52DFCF68 -:10442000EFFF000EDB50145F010EDB50155B280E12 -:104430001D6F040E1E6F13B10FD0F7D91BE011C111 -:10444000F6FF12C1F7FF112B000E12230800F550E2 -:1044500096D9F3E2DB06F1D7E8D90CE011C1E9FF08 -:1044600012C1EAFF112B000E1223EF5088D9F4E29B -:10447000DB06F2D7020EE15C02E2E16AE552E16E90 -:104480004AD145D956D9EE52EFCFDFFFDFCF00F04A -:1044900000500101195D000E1A5903E219C1DFFF36 -:1044A00009D0DF50006E016AE850195D196F0150A4 -:1044B0001A591A6F010EDB6ADF50F36E010EDBCF63 -:1044C000F4FFF350F45C10E2010EDB5082D916C108 -:1044D000E9FF17C1EAFF162B000E1723E552E7503C -:1044E000EF6E010EDB2AE8D7000ED8801955000EBA -:1044F0001A550DE2F4D854D91CD9EF50400B03E102 -:10450000EAD9C80E02D0E7D9880EEF6E0FD0F0D9E5 -:10451000840EEF6E1B511C1107E005D01CC1FAFF81 -:1045200001011B51F96EFADF0101189F020EE15CD7 -:1045300002E2E16AE552E16EEED00101138F10D97B -:10454000010EE66EE66AE66A020EE66E010EAFD96D -:1045500022C401F10401225104E10101100E006F97 -:1045600012000101200E006F04D9150E7EEF23F01A -:10457000CED8000EDE6E040EDD6EE8D8040DF350CA -:10458000006E016A020E0F0B05E0D8900132003276 -:10459000E806FBE1D89000360136D89000360136A7 -:1045A000D9CFE9FFDACFEAFF0050EE260150ED2225 -:1045B000A9D8EF9EFD0EDB5002E16AD901D06DD97A -:1045C000EA22DECFEEFFDDCFEDFF9CD8EF9C9AD83C -:1045D000040EE926000EEA22EF8C020EE15C02E2F4 -:1045E000E16AE552E16E97D092D8FE0EDB50016A87 -:1045F000700F006E0F0EDFD885D8FD0EDBCFEFFFFA -:10460000DBA402D0E66AF5D8FD0EDBA203D0010ED2 -:10461000E66EEFD8020EE15C02E2E16AE552E16E7D -:104620007AD075D8FE0EDB5005E125D962D8840E0C -:10463000EF6E05D08BD80CD989D8010F09D9020E9D -:10464000E15C02E2E16AE552E16E65D060D8FD0E00 -:10465000DB5002E022D901D01BD9A7D853D806D904 -:10466000FB0EDBCFEEFFFC0EDBCFEDFF4BD8EE52A7 -:10467000FA0EDBCFEFFF400E45D8E850EF16880E5C -:1046800041D8E850EF12FD0EDB5002E006D901D010 -:10469000FFD8EA22EF74DECF00F0DDCF01F000C0DA -:1046A000F3FF01C0F4FF020EE15C02E2E16AE552B1 -:1046B000E16E31D0F7D8010EF36EFC0EDB5004E052 -:1046C000D890F336E806FCE1F31C006EFD0EDBCF5C -:1046D000E9FFFE0EDBCFEAFF0050EF161CD0FBD83F -:1046E000EE52080EEF6EF7D836EF24F0E66E3FEF8D -:1046F00024F00BC1E9FF0CC1EAFF1200E66EE66A86 -:104700005FEF24F0DECFE9FFDDCFEAFF1200CAD869 -:10471000020EE1261200E552E7CFD9FF1200D6D8EB -:104720006BEF24F0FE0EEA6ADB34FE0BEA36E96E2C -:10473000120003C1E9FF04C1EAFF120024510F0B6C -:10474000E96EEA6AD890E936EA361200FD0EDB50CF -:10475000E824026EFE0EDB50040DF350022412001A -:10476000000EE66EE66AE66A710EE66E0F0E57EF11 -:1047700024F0000EE66EE66AE66EE66A1200E66E69 -:104780001DC1E9FF1EC1EAFF1D2B000E1E23E552CD -:10479000E750EF6EDF06010E120084D8E6521200D9 -:1047A000280EEE6E040EED6E1200EA22EECFDEFF52 -:1047B000EDCFDDFF1200012200C0DEFF01C0DDFFF2 -:1047C0001200DF50006E016A080E005C000E0158F6 -:1047D0001200EA6A280FE96E040EEA22EF50E66E34 -:1047E0001200F7220900F5CF11F10A00F5CF12F1FE -:1047F0001200FE0EDBCFE6FFBBDEE552E5521200F3 -:10480000160E6F6E9F0E6B6E7B0E696E1200010EA0 -:10481000E66EE66A000EE66EE66A12002251F66E59 -:10482000F76AD890F636F7361200D9CFE9FFDACF1B -:10483000EAFFEE50ED101200020E106F5ADFEE523A -:10484000EF6A57DFC80EEF6E4ADFAADF6BEF24F086 -:10485000040DF3CF00F0F4CF01F0000E0026040E9B -:10486000AADF840E4FDFE850EF121200020EE92695 -:10487000000EEA2212003CD88C0EEF6E1200680E79 -:10488000E66E0F0EE66E16DFE552E552E5521200B7 -:1048900049DF070EE926010E120044DF0B0EE92660 -:1048A000010E1200D9CFE6FFE1CFD9FF1200E66E6C -:1048B00004EC32F0006E050EE15E0050120039EC9F -:1048C0001EF0006E060EE15E00501200200EEE6E2D -:1048D000040EED6E120005C1E9FF06C1EAFF1200E9 -:1048E00028DFC4DF66EF24F004DFC0DFD0EF23F061 -:0648F000F6DE8FEF23F05D -:0A48F600389E08D0389E30AE05D081 -:104900002F6C301EE86A3022388E30C02AF02FC05B -:1049100029F03C6A3B6A8E0E2B6E2C6AE2EF26F081 -:10492000389E0CD0389E30AE09D02D6C2E1E2F1E16 -:10493000301EE86A2E222F223022388E30C02AF014 -:104940002FC029F02EC03CF02DC03BF09E0E2B6EE8 -:104950002C6AE2EF26F0367E386A1EEC27F036EC41 -:1049600027F038B6C6EF26F038A20AD038AA03D00E -:1049700038BEC6EF26F038A4D2EF26F0CFEF26F0EF -:1049800038AA05D038ACD2EF26F0CFEF26F038A009 -:104990000AD038A808D038BE04D038A402D0DBEF43 -:1049A00026F0DFEF26F03B6A2C6A3650315C3A6E17 -:1049B00010E32EC03CF02FC029F030C02AF031C0E7 -:1049C00039F033C02EF034C02FF035C030F0383A13 -:1049D00009D033C03CF034C029F035C02AF036C0CD -:1049E00039F03A6C389E38BC388E39C02BF038B06C -:1049F0000EEF27F01A0E3A600EEF27F02B6A316A9D -:104A000038A408D02E6C2F1E301E311EE86A2F22CB -:104A10003022312238AC08D03C6C291E2A1E2B1EB5 -:104A2000E86A29222A222B222D6A3A5207E03134E1 -:104A300030322F322E322D323A2EF9D72E503C26DC -:104A40002F50292230502A2231502B222DC03BF0EA -:104A5000389E2BAE0BD03B6C3C1E291E2A1E2B1EF3 -:104A6000E86A3C2229222A222B22388E2BA006D04B -:104A7000D8802A3229323C323B32392A39C02BF0D5 -:104A8000E2EF26F0386A1EEC27F036EC27F038B655 -:104A9000C6EF26F038A205D038BAC6EF26F0CDEF23 -:104AA00026F038BAD9EF26F038A005D038B8C6EFCE -:104AB00026F0D9EF26F038B8CDEF26F02C6A7F0E1D -:104AC00031242B6EE86A2C2236502B5EE86A2C5A71 -:104AD0001A0E396E316A3B6A3C6A296A2A6A335077 -:104AE0002E5E34502F5A3550305A000E315A09E795 -:104AF00033502E2634502F2235503022000E3122D2 -:104B000001D03B8AD8902E362F3630363136D890A9 -:104B10003B363C3629362A36392EE1D730502F1015 -:104B20002E10D8A43B8AE2EF26F0386A1EEC27F05C -:104B300036EC27F038B6C6EF26F038A205D038B8E4 -:104B4000C6EF26F0CDEF26F038AA05D038B0C6EF74 -:104B500026F0CDEF26F038B002D038A802D0D9EF39 -:104B600026F02C6A365031242B6EE86A2C227E0EF9 -:104B70002B5EE86A2C5A3B6A3C6A296A2A6A3550DD -:104B80003002F4CF2AF0F3CF29F034503002F35042 -:104B90003C26F4502922000E2A2235502F02F350D1 -:104BA0003C26F4502922000E2A2233503002F350C2 -:104BB0003B26F4503C22000E29222A2234502F0298 -:104BC000F3503B26F4503C22000E29222A22355075 -:104BD0002E02F3503B26F4503C22000E29222A22BA -:104BE00033502F02F4503B26000E3C2229222A2269 -:104BF00034502E02F4503B26000E3C2229222A2259 -:104C0000E2EF26F0386A1EEC27F038B60CEF26F0FB -:104C100038A20ED038B405D07F0E306EFF0E2F6E46 -:104C20001FD0800E306E2F6A1BD0306A2F6A18D0CA -:104C300038B0FBD78F0E3160EDD77E0E3164F5D7DB -:104C40008E0E315C05E0D89030322F32312AF8D701 -:104C500038A406D02F6C301EE86A302230AEE5D77B -:104C60001200386A1EEC27F038B63BEF26F038A267 -:104C70000FD038B407D07F0E306EFF0E2F6E2E6E21 -:104C80002D6E25D0800E306E01D0306A000EF6D722 -:104C900038B0FBD72D6A9F0E3160EBD77E0E3164A2 -:104CA000F4D79E0E315C07E0D89030322F322E328E -:104CB0002D32312AF6D738A40AD02D6C2E1E2F1E85 -:104CC000301EE86A2E222F22302230AEDED71200AC -:104CD00071EC26F038B6000C38B0000C38A4000C8B -:104CE000010C386A1EEC27F036EC27F038B61200BB -:104CF00038AE08D038A004D038A802D038801200CE -:104D0000389012003650315C0BE13550305C08E1D0 -:104D100034502F5C05E133502E5C02E138801200E4 -:104D2000D8A002D0388E10D0315036C031F0366E57 -:104D3000305035C030F0356E2F5034C02FF0346E07 -:104D40002E5033C02EF0336E3650315C10E0FF0F22 -:104D500009E0389038B403D038AE3884120038AE49 -:104D600038941200362AD8903532343233323350E8 -:104D70002E5E34502F5A3550305A30BEEAD7D89074 -:104D80002E362F363036312EF8D7C8D77F0E316EFB -:104D9000FF0E306E2F6E2E6E12007F0E38BEFF0E8D -:104DA000316E02D07F0E316E800E306E2F6A2E6A09 -:104DB000F3D738AE04D0800E316E306AF7D7316A3F -:104DC000306AF4D72A5029103C103B10F8E02CBE72 -:104DD000F0D72ABE0CD02B502C10EBE0D8903B36ED -:104DE0003C3629362A362B06D8A02C06F2D72C5072 -:104DF000D4E12B28D2E03BAE11D07F0E3B1402E170 -:104E00003CA00CD03C2AE86A29222A2207E3D88059 -:104E10002A3229323C322B2A2B28BFE02B50C9E002 -:104E20003CC02EF029C02FF02A34306E2B30316E6A -:104E30003032319E38BE318ECCEF26F030363136EE -:104E400002E33884387E06E13880316A306A2F6A9E -:104E50002E6A1200312803E0D88030321200D89038 -:104E6000303202E13882120038861200353636368A -:104E700002E3388C387E06E13888366A356A346A4F -:104E8000336A1200362803E0D88035321200D890F9 -:104E90003532EAE1388A120071EC26F038B6000C9F -:104EA00038B0000C38B4000C010C376A35AE5EEF38 -:104EB00027F0346C351EE86A3522371E30AE66EFB7 -:104EC00027F02F6C301EE86A3022371E52EC33F088 -:104ED00030BE76EF27F037AE000C2F6C301EE86A3C -:104EE00030222B6C2C1EE86A2C22000C37BE6DEF92 -:064EF00027F03888FF0CDA -:0A4EF600D9CFE6FFDACFE6FFE1CFE7 -:104F0000D9FFE2CFDAFF1D0EE12402E3E168E652A9 -:104F1000E16E67DAFA0EDBCFEEFFFB0EDBCFEEFFC2 -:104F2000FC0EDBCFEEFFFD0EDBCFEEFFD950040F02 -:104F3000E66E000EDA20E66E0BDAA3EC2FF0006EC0 -:104F4000060EE15C02E2E16AE552E16E0050E76EB6 -:104F50000B0EE7CFDBFFDB50800807E10A0EDB6AB0 -:104F6000DE68DE68DE687F0E13D00B0EDB0405E121 -:104F7000DE6ADE6ADE6ADD6AA6D10B0EDB5004084B -:104F800009E1DB0EDE6E0F0EDE6EC90EDE6E3F0E29 -:104F9000DD6E99D1DDD91EDA2DC0DEFF2EC0DEFF19 -:104FA0002FC0DEFF30C0DDFFDD52DD52DBD90DDA70 -:104FB0003F0E20DA23E12E6A2F6A800E306E3F0EFC -:104FC000316EDECF33F0DECF34F0DECF35F0DDCF23 -:104FD00036F0DD52DD5242EC25F02EC0DFFF010E2F -:104FE0002FC0DBFF020E30C0DBFF030E31C0DBFF42 -:104FF000020EF36E0C0EF3CFDBFF02D00C0EDB6A59 -:10500000B1D9A30E336E300E346E890E356E3E0E5E -:10501000F1D96CE1AF0E2E6E670E2F6E3B0E306E27 -:105020003F0E316EB2D92EC008F02FC009F030C04B -:105030000AF031C00BF0C9D93F0E366EABEC24F04C -:105040002EC004F02FC005F030C006F031C007F0CC -:10505000C8D9EECF0CF0EECF0DF0EECF0EF0EFCFC3 -:105060000FF00CC033F00DC034F00EC035F00FC09F -:1050700036F0ACEC24F080D9D70E146EB30E156E5A -:10508000DD0E166E3F0E176EACD9EECF18F0EECFD8 -:1050900019F0EECF1AF0EFCF1BF018C033F019C0A3 -:1050A00034F01AC035F01BC036F014C02EF015C015 -:1050B0002FF016C030F0316EACEC24F02EC010F0A2 -:1050C0002FC011F030C012F031C013F02EC033F0F9 -:1050D0002FC034F030C035F031C036F035D942EC55 -:1050E00025F05FD9DD52DD520C0EDB2A31D972D9A1 -:1050F0002DC000F02EC001F02FC002F030C003F030 -:1051000064D9390E366E2DC02EF07AD968EC26F0AF -:10511000010A01E1B5D04ED938D90D0E2EC0DBFF02 -:105120000E0E2FC0DBFF0F0E30C0DBFF100E31C0A4 -:10513000DBFF910E2E6E860E2F6E500E306EBD0E62 -:10514000316E0D0EDBCF33F00E0EDBCF34F00F0ED1 -:10515000DBCF35F0100E4AD90FD9F60E336E100E94 -:10516000346EF10E356EBE0E366EACEC24F0110EC0 -:105170002EC0DBFF120E2FC0DBFF130E30C0DBFF93 -:10518000140E31C0DBFF0D0EDBCF00F00E0EDBCFB7 -:1051900001F00F0EDBCF02F0100EDBCF03F0D30EC9 -:1051A000336ECC0E346EB40E356E3F0E366ECCD8E8 -:1051B000ACEC24F0150E2EC0DBFF160E2FC0DBFF6B -:1051C000170E30C0DBFF180E31C0DBFF0D0EDBCF3A -:1051D0002EF00E0EDBCF2FF00F0EDBCF30F0100EC7 -:1051E000DBCF31F0110EDBCF33F0120EDBCF34F01A -:1051F000130EDBCF35F0140EF9D8150EDBCF33F0DC -:10520000160EDBCF34F0170EDBCF35F0180EDBCFE8 -:1052100036F042EC25F0B0D8190E2EC0DBFF1A0E86 -:105220002FC0DBFF1B0E30C0DBFF1C0E31C0DBFFCD -:10523000C1D8190EDBCF33F01A0EDBCF34F01B0EC2 -:10524000DBCF35F01C0ED2D897D8CBD8EECF2EF0CE -:10525000EECF2FF0EECF30F0EFCF31F000C033F0D3 -:1052600001C034F002C035F003C036F0ACEC24F0DD -:1052700031C0EDFF30C0EDFF2FC0EDFF2EC0EFFFBE -:105280000C0EDB0409E1920E006E0A0E016E060E92 -:105290003FD8ACEC24F016D00C0EDB50020806E12F -:1052A000DB0E006E0F0E016EC90E09D00C0EDB5026 -:1052B00003080BE1920E006E0A0E016E860E28D8CE -:1052C000ABEC24F06ED8DD52DD520A0EDB500AE062 -:1052D00049D87BD8BF0E366E37D895EC25F061D80B -:1052E000DD52DD52DECF2DF0DECF2EF0DECF2FF0FF -:1052F000DDCF30F0DD52DD521D0EE15C02E2E16AED -:10530000E552E16EE552E5CFDAFFE7CFD9FF1200B3 -:10531000026E3F0E036E65D8EECF04F0EECF05F0BF -:10532000EECF06F0EFCF07F004C033F005C034F045 -:1053300006C035F007C036F000C02EF001C02FF0D7 -:1053400002C030F0316E120000C02EF000EF2AF0E3 -:1053500048D8EECFE6FFEECFE6FFEECFE6FFEFCF89 -:10536000E6FF12003ED8EECF00F0EECF01F0EECF18 -:1053700002F0EFCF03F012002EC000F02FC001F0BA -:1053800030C002F031C003F01200000EDFCF33F066 -:10539000010EDBCF34F0020EDBCF35F0030EF6EF5B -:1053A00029F02EC0DEFF2FC0DEFF30C0DEFF31C08F -:1053B000DDFF1200DECF2EF0DECF2FF0DECF30F09B -:1053C000DDCF31F0DD52DD521200336A346A800ED7 -:1053D000356E120070EC32F0E552E552E552E552BE -:1053E0001200D9CFE9FFDACFEAFF1200DBCF36F0A7 -:1053F00095EF25F0366EA8DF4CEC27F0010A12007D -:0E54000001C02FF002C030F003C031F01200E6 -:02540E00D9CFF4 -:10541000E6FFDACFE6FFE1CFD9FFE2CFDAFF240ED5 -:10542000E12402E3E168E652E16ED950FA0FE96E39 -:10543000FF0EDA20EA6E020EEECFDBFF030EEECF98 -:10544000DBFF040EEECFDBFF050EEECFDBFFE8D96E -:10545000F2D9A3EC2FF0006E060EE15C02E2E16AE5 -:10546000E552E16E0050E76E0D0EE7CFDBFFDB503B -:10547000800815E0A0D9336A346A356A366A00C0FC -:105480002EF001C02FF002C030F003C031F068EC04 -:1054900026F0010A10E1210E0101466F476B020E52 -:1054A000DB68030EDB68040EDB687F0EF36E050E0F -:1054B000F3CFDBFF66D10D0EDB50050B01E061D1B0 -:1054C0000A0EDBCF00F00B0EDBCF01F0830E0026BF -:1054D000FF0E012200C0DEFF01C0DDFFD950060F24 -:1054E00065D976D9DF50010B0FE0DF06010E01E22E -:1054F000DB06D950180F5AD9D890EF36010EEB368B -:10550000020EEB36030EEB36D9CFE9FFDACFEAFF16 -:10551000020E346E356AEECF2FF0EDCF30F055EC41 -:1055200027F02FC0EEFF30C0EDFF140EDB6A150E22 -:10553000DB6A160EDB6A170EDB6A1C0EDB6A1D0EB9 -:10554000DB6A1E0EDB6A010EF36E1F0EF3CFDBFF6C -:10555000010EF36E0E0EF3CFDBFF0F0EDB6A0E0EA5 -:10556000DBCF00F00F0EDBCF01F0D890015004E646 -:105570001A0E005C000E015801E398D0180EDBCF24 -:1055800000F0190EDBCF01F01A0EDBCF02F01B0E7C -:10559000DBCF03F0010E1F0B07E0D8900036013679 -:1055A00002360336E806F9E1180E00C0DBFF190EDB -:1055B00001C0DBFF1A0E02C0DBFF1B0E03C0DBFFC6 -:1055C000140EDBCF08F0150EDBCF09F0160EDBCF83 -:1055D0000AF0170EDBCF0BF0010E1F0B07E0D8907F -:1055E000083609360A360B36E806F9E1D9501C0FA1 -:1055F000DDD80850EE24046E0950EE20056E0A50E6 -:10560000EE20066E0B50EE20076ED950180FCED844 -:105610000450EE5C006E0550EE58016E0650EE58D8 -:10562000026E0750EE58036E200E00C0DBFF210E05 -:1056300001C0DBFF220E02C0DBFF230E03C0DBFF35 -:10564000200EDBCF2EF0210EDBCF2FF0220EDBCF92 -:1056500030F0230EDBCF31F03134000E311809E683 -:10566000D880000E2E54000E2F54000E3054000E21 -:10567000315411E2D950200F99D8AAD8D8D81C0E8D -:10568000DB50EE121D0EDB50EE121E0EDB50EE1242 -:105690001F0EDB50EE12D9501C0F88D8AFD80E0E5B -:1056A000DB2A0F0E01E25BD7DB2A59D7C9D8100ECF -:1056B00000C0DBFF110E01C0DBFF180EDBCF2FF0A7 -:1056C000190EDBCF30F0120E2FC0DBFF130E30C0EF -:1056D000DBFFADD893D8D950100F68D8EE50ED103D -:1056E00012E0D950120F62D8EE50ED1006E1A8D8A2 -:1056F000005001100210031006E099D8EE2A000EA7 -:10570000EE22EE22EE220C0EDB6A91D8060EEECFD0 -:10571000DBFF070EEECFDBFF080EEECFDBFF090E3F -:10572000EECFDBFF7E0EF36E0A0EF3CFDBFF0B0E28 -:10573000DB6AD950020FE66E000EDA20E66E70D8F2 -:1057400031EC30F0E552E552E552E552DECFE6FFAE -:10575000DDCFE6FF70D807EC2FF0006E060EE15C9F -:1057600002E2E16AE552E16E0050020E2DC0DBFF5D -:10577000030E2EC0DBFF040E2FC0DBFF050E30C072 -:10578000DBFF19D800C02DF001C02EF002C02FF0B1 -:1057900003C030F0240EE15C02E2E16AE552E16E02 -:1057A000E552E5CFDAFFE7CFD9FF1200E96E000E30 -:1057B000DA20EA6E1200020EDBCF00F0030EDBCF20 -:1057C00001F0040EDBCF02F0050EDBCF03F0120078 -:1057D000180EEECFDBFF190EEECFDBFF1A0EEECF69 -:1057E000DBFF1B0EEECFDBFF1200EECFE6FFEECFAE -:1057F000E6FFEECFE6FFEFCFE6FF1200D890030EF4 -:10580000EB32020EEB32010EEB32EF321200EE50B1 -:105810000016EE500116EE500216EE50031612005E -:10582000D950060FE66E000EDA20E66E1200D9504F -:10583000140FD6EF2BF0D950020FB8DFF5EF2BF095 -:10584000010E006E016A026A036AF1DF07EF2CF0B5 -:105850009ED9E65201016C51040A45E0070A2DE089 -:10586000010A23E0030A0BE0010A01E094D0870E4D -:10587000E66E23EC33F0E5520101010E32D09FECCD -:1058800033F0000901E088D06BD901AE02D0026884 -:1058900003686DC1E9FFEA6AE9BEEA683ED9B00E65 -:1058A000E926000E4FD9020E1CD08F0EE66E23ECB7 -:1058B00033F0E5520101030E14D09FEC33F00009E0 -:1058C0006BE14ED901AE02D0026803686DC1E9FFF9 -:1058D000EA6AE9BEEA6821D9D80EE926000E32D973 -:1058E000040E6C6F59D06D2B0A0EE76E6D19E8AE81 -:1058F00002D0E73402D0E7506D5D4BE36D6B6EC1B3 -:10590000E9FFEA6AE9BEEA685ED9EA22EE6AEE6A6F -:10591000EE6AEE6A6EC1E9FFEA6AE9BEEA6858D942 -:10592000EA22EE6AEE6AEE6AEE6ADF6A2AD9E8AE29 -:1059300002D0E73402D0E750005C1EE2DFCFE9FF7F -:10594000EA6AE9BEEA68E9D8B00EE926000EF5D8A1 -:10595000E9BEEA6838D901D9DFCFE9FFEA6AE9BED2 -:10596000EA68DBD8D80EE926000EE7D8E9BEEA6877 -:105970002FD9F3D8DF2ADAD701016E2B0A0EE76E92 -:105980006E19E8AE02D0E73402D0E7506E5D01E355 -:105990006E6B6C6B01D06C6BE552FED0F8D8050EC7 -:1059A000E126010EDB6A020EDB6A030EDB6A040EDF -:1059B000DB6AFE0EDB0411E1DF6AE3D8E8AE02D059 -:1059C000E73402D0E750005C27E2DFCFE9FFEA6A64 -:1059D000E9BEEA68F8D8A8D8F0D7FE0EDB50020876 -:1059E00011E1DF6ACED8E8AE02D0E73402D0E7504A -:1059F000005C12E2DFCFE9FFEA6AE9BEEA68E8D8B4 -:105A000093D8F0D70C0EE66E08EC33F0E5522D6A11 -:105A10002E6A2F6A306A6CD0010EDBCF18F0020EAE -:105A2000DBCF19F0030EDBCF1AF0040EDBCF1BF037 -:105A300018C02DF019C02EF01AC02FF01BC030F086 -:105A400092EC24F02EC014F02FC015F030C016F0E8 -:105A500031C017F08ED82EC010F02FC011F030C01A -:105A600012F031C013F085D82EC00CF02FC00DF00D -:105A700030C00EF031C00FF0336A346AA00E356EBC -:105A8000400E366E95EC25F02EC008F02FC009F0C0 -:105A900030C00AF031C00BF0336AC00E346E7F0E96 -:105AA000356E440E366E42EC25F02EC004F02FC049 -:105AB00005F030C006F031C007F0336A346A200EBA -:105AC000356E400E366EABEC24F02EC000F02FC0C9 -:105AD00001F030C002F031C003F0336A500E346E72 -:105AE000430E356E460E366E95EC25F031EC26F001 -:105AF000050EE15C02E2E16AE552E16E4DD047D865 -:105B0000FE0EDBB08084DBB2818846D040D8FE0E2A -:105B1000DBB08094DBB281983FD0D890E936EA368A -:105B2000D890E936EA3612003BD8D950010FE96E19 -:105B3000DACFEAFF3FD8DF2A120032D86EC1E9FF80 -:105B4000EA6A1200EA2200C0EEFF01C0EEFF02C0C6 -:105B5000EEFF03C0EEFF01011200EA22DAEF2DF0A2 -:105B60008FEC33F0F3CF00F0F4CF01F0026A036A58 -:105B70001200336A346A200E356E410E366E42EFE3 -:105B800025F0DFCF00F00A0EE76E00181200D9CF23 -:105B9000E6FFE1CFD9FF1200E552E7CFD9FF1200AF -:105BA000EA22EECF00F0EECF01F0EECF02F0EFCF21 -:105BB00003F012000050EE260150EE220250EE22B9 -:105BC0000350EE221200A9DF600EE926000E12003B -:0A5BD000A4DF880EE926000E120083 -:065BDA00D9CFE6FFDACF8F -:105BE000E6FFE1CFD9FFE2CFDAFF140EE12402E3B2 -:105BF000E168E652E16ED950040FE66E000EDA203D -:105C0000E66ED950F60FDAD802E2E16AE552E16EAB -:105C10000050E76E120EE7CFDBFFD9500B0FE66E98 -:105C2000000EDA20E66ED950FA0FC8D802E2E16A17 -:105C3000E552E16E0050E76E130EE7CFDBFFDBCFDE -:105C4000E6FF120EDB50E552E710800B0EE1120E5C -:105C5000DB50040804E1130EDB50040806E0120ECA -:105C6000DB040DE1130EDB040AE1210E0101466F96 -:105C7000476BDE68DE68DE687F0EDD6E87D0FA0E69 -:105C8000DBCF2EF0FB0EDBCF2FF0FC0EDBCF30F0A6 -:105C9000FD0EDBCF31F0F60EDBCF33F0F70EDBCFAE -:105CA00034F0F80EDBCF35F0F90EDBCF36F042ECF6 -:105CB00025F02EC004F02FC005F030C006F031C032 -:105CC00007F097D831C0E6FF70EC32F0E552E552AC -:105CD000E552E5522DC000F02EC001F02FC002F0B9 -:105CE00030C003F02DC0E6FF84D87BEC27F0E552EE -:105CF000E552E552E5522DC0DEFF2EC0DEFF2FC07B -:105D0000DEFF30C0DDFFDD52DD520A0EDB5023E046 -:105D1000DB0E006E0F0E016E490E026E400E036E1A -:105D2000D9CFE9FFDACFEAFFEECF04F0EECF05F0EE -:105D3000EECF06F0EFCF07F004C033F005C034F02B -:105D400006C035F007C036F05BD8316EABEC24F0FE -:105D500047D8DD52DD52110EDB501AE0D9CFE9FFF2 -:105D6000DACFEAFFEECF00F0EECF01F0EECF02F097 -:105D7000EFCF03F0336A346A800E356EBF0E366E95 -:105D80003FD803C031F095EC25F02AD8DD52DD5222 -:105D9000DECF2DF0DECF2EF0DECF2FF0DDCF30F0D6 -:105DA000DD52DD52140EE15C02E2E16AE552E16E81 -:105DB000E552E5CFDAFFE7CFD9FF1200E96EFF0E1B -:105DC000DA20EA6EEECFE6FFEECFE6FFEECFE6FF9B -:105DD000EFCFE6FFA3EC2FF0006E060EE15C1200A1 -:105DE0002EC0DEFF2FC0DEFF30C0DEFF31C0DDFF82 -:105DF00012002EC0E6FF2FC0E6FF30C0E6FF120003 -:0E5E000000C02EF001C02FF002C030F01200E2 -:025E0E0096D824 -:105E1000E1CFD9FFE2CFDAFF0C0EE12402E3E16823 -:105E2000E652E16ED950FA0FE96EFF0EDA20EA6E03 -:105E3000080EEECFDBFF090EEECFDBFF0A0EEECF32 -:105E4000DBFF0B0EEECFDBFF79D8D950080FE96EE0 -:105E5000000EDA20EA6EEECFE6FFEECFE6FFEECFE1 -:105E6000E6FFEFCFE6FFA3EC2FF0006E060EE15C3D -:105E700002E2E16AE552E16E0050E76E070EE7CFFD -:105E8000DBFFDB50840B3AE1070EDB041AE1060E60 -:105E9000DB5006E0006A016A026A800E036E04D0DD -:105EA000006A016A026A036A080E00C0DBFF090E7D -:105EB00001C0DBFF0A0E02C0DBFF0B0E03C0DBFFDD -:105EC0001DD0F80EDBCF00F0F90EDBCF01F0D9507A -:105ED000040FE96E000EDA20EA6E0050EE26015043 -:105EE000ED22D950080FE66E000EDA20E66E26D8B5 -:105EF00031EC30F0E552E552E552E552080EDBCFC9 -:105F000000F0090EDBCF01F00A0EDBCF02F00B0E22 -:105F1000DBCF03F000C02DF001C02EF002C02FF047 -:105F200003C030F00C0EE15C02E2E16AE552E16E82 -:105F3000E552E5CFDAFFE7CFD9FF1200D9CFE6FF70 -:065F4000DACFE6FF1200BB -:0A5F4600D9CFE6FFDACFE6FFE1CF86 -:105F5000D9FFE2CFDAFFE652006801687F0E026ED9 -:105F6000036AD950FA0FE96EFF0EDA20EA6EEE509E -:105F70000016EE500116EE500216EE5003166AD8C7 -:105F800000C0EEFF01C0EEFF02C0EEFF03C0EEFF57 -:105F9000FD0EDB50800B02E0010E01D0000EE66E1C -:105FA00059D8060EE926000EEA22E552E750EF6EB8 -:105FB000FC0EDBCF00F0FD0EDBCF01F0D8900036F9 -:105FC0000136FC0E00C0DBFFFD0E01C0DBFFDB5025 -:105FD000E66E40D8040EE926000EEA22E552E750AC -:105FE000EE6EED6AFD0EDB50006E016AFF0E0018CA -:105FF00018E1015016E12ED8EECF00F0EECF01F0FF -:10600000EECF02F0EFCF03F00050011002100310AA -:1060100006E0210E0101466F476B800E0BD0040E87 -:1060200009D0FD0EDB5008E115D8EE6AEE6AEE6A83 -:10603000EE6A010EDF6E06D0020EDF6E0BD8EE5256 -:10604000EE52EE8EDF50E552E552E5CFDAFFE7CFB4 -:10605000D9FF1200F80EDBCFE9FFF90EDBCFEAFF24 -:0260600012002C -:0E606200D9CFE6FFDACFE6FFE1CFD9FFE2CFDC -:10607000DAFF5BD8013411E20050FE08000E015433 -:106080000CE276D805E06CD8800EEE6EEE6847D054 -:1060900067D8800EEE6E7F0E0ED047D8D890015094 -:1060A00004E6010E005C000E01580BE261D805E029 -:1060B00057D8EE6A800EEE6E32D052D8EE6AEE6A93 -:1060C0002ED047D8EECF00F0EECF01F0EECF02F0A9 -:1060D000EFCF03F032D800C0EEFF01C0EEFF02C0E8 -:1060E000EEFF03C0EEFF21D80050010B05E025D8DC -:1060F000020E3AD8EF8E04D020D8020E35D8EF9E8B -:1061000014D8D8900132003218D8030E2DD800C010 -:10611000EFFF1AD804E011D8030E26D8EF8EE5520F -:10612000E5CFDAFFE7CFD9FF120013D8040E1CD851 -:10613000EECF00F0EFCF01F01200FA0EDBCFE9FF57 -:10614000FB0EDBCFEAFF120004D8060E0DD8EF508D -:106150001200FC0EDBCFE9FFFD0EDBCFEAFF1200E1 -:10616000ECDFEE6AEE6A1200E926000EEA22120067 -:0C617000220E0101466F476BA4EF30F0D7 -:04617C0004012051A9 -:106180001F0B010801E01200245101E01200060E6D -:10619000215D21E12351230A1BE0010A0CE0030ADF -:1061A0001AE10101010517E101016E0E116F620E86 -:1061B000126F090E09D0010101050DE10101D70E91 -:1061C000116F620E126F1D0E146F156BC00E02D090 -:1061D0000101800E136F04012051600BE842E84278 -:1061E000E842E842E842010801E0120021510B0AAE -:1061F00026E0080A19E0090A11E0080A05E00B0A7E -:1062000023E0080A21E0120001016F0E116F010E58 -:10621000126F010E146F156BC10E0FD00101800EAD -:10622000136F23C46FF112000101700E116F010E84 -:10623000126F010E146F156B810E136F12000101A6 -:0A624000800E136F22C470F11200EB -:06624A0012010002000039 -:106250000008D8040300020001020001090229001D -:10626000010100C0320904000002030000000921FE -:1062700011010001221D00070581034000010705EF -:106280000103400001040309042C034D006F006268 -:106290000069006C006500200052006F0062006F12 -:1062A000007400200050006C006100740066006FF4 -:1062B0000072006D0022034D006F0074006F0072C9 -:1062C00000200043006F006E00740072006F006CCD -:1062D000006C00650072000600FF0901A1011901B0 -:1062E0002940150026FF00750895408100190129F5 -:0C62F000409100C05C6285628962B5626A -:0462FC002A0EF66E02 -:10630000080EF76E000EF86E01010900F550646F7B -:106310000900F550656F03E1646701D03DD00900C5 -:10632000F... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-17 20:51:46
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 53a4fc48142731ae7b198ba19c3fb25e5db1f677 (commit) from f1d6828404338c20cc8d364f6d7b91781326c1aa (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 53a4fc48142731ae7b198ba19c3fb25e5db1f677 Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 17 21:51:21 2010 +0100 Corrected bug related to trajCompleted (again...) ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index a653410..cdf6eba 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -39,7 +39,7 @@ void checkLM629Interrupt(void) { axis|= MOTOR_LEFT; if (axis > 0) { - trajCompleted = axis; + trajCompleted|= axis; resetInterrupt(axis, LM_TRAJECTORY_COMPLETE); } diff --git a/USB_Module/Motor_Controller/Firmware/lm629.h b/USB_Module/Motor_Controller/Firmware/lm629.h index 94a7b96..85aeba3 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.h +++ b/USB_Module/Motor_Controller/Firmware/lm629.h @@ -22,8 +22,8 @@ // Parames graux #define LM_CLOCK 8e6 ///< Frence horloge LM (en Hz) -- forcnt 6 ou 8 MHz selon la rrence du composant -//#define LM_INTERRUPT -#define LM_POLLING +#define LM_INTERRUPT +//#define LM_POLLING #if defined(KROBOT_2010) // Constantes pour [Kro]bot 2010 diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index b17adb9..923c8ab 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 2183b95..f083e5b 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,1564 +1,1566 @@ :020000040000FA -:0600000063EF33F0120073 +:0600000068EF33F012006E :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000063EF33F012006B -:060808002BEF13F01200BB -:0608180093EF13F0120043 -:06082A0004005B67000002 -:100830002601000021000000506700005401000064 -:100840000B00000043670000470100000D0000009E -:0C085000406700006C0100000300000085 -:04085C00A3EC0EF00B -:10086000030EE126010EE66EE0DAE552DF6E020EBF -:10087000E66EDBDAE552E76E010EE7CFDBFF020E34 -:10088000DF1404E1010EDB50020B06E00A0E9CECC3 -:1008900011F0020ED7EC11F0020EDB6ADFB4DB8040 -:1008A000010EDBA402D0020EDB8262EC10F0E8AE97 -:1008B00002D0003403D0E750D880005406E2020E84 -:1008C000DBCF56F1040EDFEC12F0200EDF1404E152 -:1008D000010EDB50200B06E00B0E9CEC11F0200EFD -:1008E000D7EC11F0020EDB6ADFBCDB80010EDBAC63 -:1008F00002D0020EDB8262EC10F0E8AE02D00034CF -:1009000003D0E750D88000540BE20101545105E0B8 -:10091000CEEC11F030EC09F0E552400EDFEC12F0B5 -:10092000030EE15C02E2E16AE552E16EA8EF0EF02F -:10093000A3EC0EF0FE0EDB5006E1F80E96163C0E10 -:100940009416959808D0FE0EDB0405E1070E96126A -:10095000C30E94129588A8EF0EF0D9CFE6FFE1CF31 -:10096000D9FFE652010EE66EE3DFE5528098FE0EF7 -:10097000DBA00FD0839C808A0000839E00000000D3 -:1009800000008450010BDF6E838E00000000DF0446 -:10099000F4E0FE0EDBA20FD0838C809A0000839ED1 -:1009A0000000000000008450010BDF6E838E000009 -:1009B0000000DF04F4E0E552E552E7CFD9FF120072 -:1009C000D9CFE6FFE1CFD9FFE652FD0EDB50DF6E57 -:1009D000FE0EDBCFE6FFC1DFE552E66AA9DFE55296 -:1009E000FE0EDB50010B02E0000E01D0010EE8B05C -:1009F000838CE8A0839CFE0EDB50020B02E0000E0D -:100A000001D0010EE8B0808AE8A0809A80980000AA -:100A10008096D9CFE9FFDACFEAFFEF50010B02E071 -:100A2000848001D08490D9CFE9FFDACFEAFFEF507C -:100A3000020B02E0848201D08492D9CFE9FFDACFA1 -:100A4000EAFFEF50040B02E0848401D08494D9CFF4 -:100A5000E9FFDACFEAFFEF50080B02E0838801D00C -:100A60008398D9CFE9FFDACFEAFFEF50100B02E00D -:100A7000828201D08292D9CFE9FFDACFEAFFEF502C -:100A8000200B02E0828E01D0829ED9CFE9FFDACF1F -:100A9000EAFFEF50400B02E0828001D08290D9CF74 -:100AA000E9FFDACFEAFFEF50800B02E0828C01D041 -:100AB000829C00000000808600000000E552E552A4 -:100AC000E7CFD9FF1200D9CFE6FFE1CFD9FF020E61 -:100AD000E126FC0EDBCFDEFFDBCFDDFFFE0EDBCF42 -:100AE000E6FF3BDFE552E66A23DFE552FE0EDB5010 -:100AF000010B02E0000E01D0010EE8B0838CE8A0EB -:100B0000839CFE0EDB50020B02E0000E01D0010EB2 -:100B1000E8B0808AE8A0809A808800008096D9CFCB -:100B2000E9FFDACFEAFFEE52EF50010B02E08480DA -:100B300001D08490D9CFE9FFDACFEAFFEE52EF502F -:100B4000020B02E0848201D08492D9CFE9FFDACF90 -:100B5000EAFFEE52EF50040B02E0848401D084944B -:100B6000D9CFE9FFDACFEAFFEE52EF50080B02E0EF -:100B7000838801D08398D9CFE9FFDACFEAFFEE521C -:100B8000EF50100B02E0828201D08292D9CFE9FFB0 -:100B9000DACFEAFFEE52EF50200B02E0828E01D056 -:100BA000829ED9CFE9FFDACFEAFFEE52EF50400B39 -:100BB00002E0828001D08290D9CFE9FFDACFEAFF4C -:100BC000EE52EF50800B02E0828C01D0829C00003C -:100BD00000008086000000008096D9CFE9FFDACFC0 -:100BE000EAFFEF50010B02E0848001D08490D9CF5E -:100BF000E9FFDACFEAFFEF50020B02E0848201D076 -:100C00008492D9CFE9FFDACFEAFFEF50040B02E07C -:100C1000848401D08494D9CFE9FFDACFEAFFEF5082 -:100C2000080B02E0838801D08398D9CFE9FFDACF9F -:100C3000EAFFEF50100B02E0828201D08292D9CFFE -:100C4000E9FFDACFEAFFEF50200B02E0828E01D0FD -:100C5000829ED9CFE9FFDACFEAFFEF50400B02E0E6 -:100C6000828001D08290D9CFE9FFDACFEAFFEF503E -:100C7000800B02E0828C01D0829C00000000808604 -:100C800000000000020EE15C02E2E16AE552E16E62 -:100C9000E552E7CFD9FF1200D9CFE6FFE1CFD9FF68 -:100CA000020EE126FE0EDB040DE0FE0EDB50020814 -:100CB00009E00C0EE66E03EC33F0E552F36AF46AD9 -:100CC000AAD0A9D0FE0EDBCFE6FF47DEE552010E2B -:100CD000E66E2EDEE552FE0EDB50020B02E1000E48 -:100CE00001D0010EE8B0838CE8A0839CFE0EDB509F -:100CF000010B02E1000E01D0010EE8B0808AE8A0ED -:100D0000809A80880000839E0000000000008450CC -:100D1000010B066E8450020B01E0010EE824056E03 -:100D20008450040B01E0010E040DF3CF04F0835056 -:100D3000100B01E0010E080DF3CF03F08250020BFF -:100D400001E0010E100DF3CF02F08250800B01E0A4 -:100D5000010E200DF3CF01F08250010B400DF3CFB7 -:100D600000F08250400B01E0010E800DF3500010A6 -:100D7000011002100310041005100610E76E010E9A -:100D8000E7CFDBFF838E00000000839E00000000A1 -:100D900000008450010B066E8450020B01E0010E2E -:100DA000E824056E8450040B01E0010E040DF3CF1E -:100DB00004F08350100B01E0010E080DF3CF03F097 -:100DC0008250020B01E0010E100DF3CF02F08250B1 -:100DD000800B01E0010E200DF3CF01F08250010BDA -:100DE000400DF3CF00F08250400B01E0010E800D6A -:100DF000F35000100110021003100410051006102B -:100E0000DF6E838EDECF00F0DDCF01F000C0F3FF98 -:100E100001C0F4FF00D0020EE15C02E2E16AE5529B -:100E2000E16EE552E7CFD9FF1200D9CFE6FFE1CF5F -:100E3000D9FFE652DF6AFE0EDB040CE0FE0EDB504B -:100E4000020808E00C0EE66E03EC33F0E552000EEB -:100E500061D060D0FE0EDBCFE6FF7FDDE552010EF4 -:100E6000E66E66DDE552FE0EDB50020B02E1000E7F -:100E700001D0010EE8B0838CE8A0839CFE0EDB500D -:100E8000010B02E1000E01D0010EE8B0808AE8A05B -:100E9000809A80980000839E00000000000084502B -:100EA000010B066E8450020B01E0010EE824056E72 -:100EB0008450040B01E0010E040DF3CF04F08350C5 -:100EC000100B01E0010E080DF3CF03F08250020B6E -:100ED00001E0010E100DF3CF02F08250800B01E013 -:100EE000010E200DF3CF01F08250010B400DF3CF26 -:100EF00000F08250400B01E0010E800DF350001015 -:100F0000011002100310041005100610DF6E838E0E -:100F1000DF5000D0E552E552E7CFD9FF1200F8ECE0 -:100F200011F007E051EC10F004E00C0E9CEC11F015 -:100F300008D0FD0EDBCFE6FF66EC0FF0E552E714BC -:100F400002E1000E01D0010EA8EF0EF0A3EC0EF0AE -:100F50001D0E5DEC0EF0FC0EDB1C006EFD0EDB1CAE -:100F6000016E00C0E6FFE66E50EC0EF0A8EF0EF04A -:100F7000A3EC0EF01D0E5DEC0EF0000EC2EC11F0B5 -:100F8000A8EF0EF0A3EC0EF066EC0FF084080DE075 -:100F900066EC0FF0C40809E0E66AC1EC12F069ECF7 -:100FA00010F036EC33F0E552EFD71C0E5DEC0EF08E -:100FB000000EC2EC11F070EC10F066EC0FF080083F -:100FC00004E066EC0FF0C008E7E166EC0FF0C00843 -:100FD00002E170EC10F01E0E5DEC0EF00F0EC2EC94 -:100FE00011F0E4EC12F0FA0EDBCFE6FFFB0E2AEC78 -:100FF00011F0F80EDBCFE6FFF90E2AEC11F0F60E39 -:10100000DBCFE6FFF70E2AEC11F0040E5DEC0EF0DC -:101010001A0E5DEC0EF0100EE66E270EE66E50EC2A -:101020000EF00101546B556B566BA8EF0EF0A3EC5C -:101030000EF0080EE126010EB9EC0EF0010EE7CF1E -:10104000DBFF020EFCEC11F0DF6E030EB9EC0EF0CC -:10105000030EE7CFDBFF040EB9EC0EF0020EE7CF74 -:10106000DBFF050EB9EC0EF0050EE7CFDBFF060E39 -:10107000B9EC0EF0040EE7CFDBFF070EB9EC0EF073 -:10108000070EE7CFDBFF080EB9EC0EF03DEC0FF0DA -:10109000010E55EC10F0090EB9EC0EF0010EE7CF81 -:1010A000DBFF0A0EFCEC11F0DF6E0B0EB9EC0EF05C -:1010B000030EE7CFDBFF0C0EB9EC0EF0020EE7CF0C -:1010C000DBFF0D0EB9EC0EF0050EE7CFDBFF0E0EC9 -:1010D000B9EC0EF0040EE7CFDBFF0F0EB9EC0EF00B -:1010E000070EE7CFDBFF100EB9EC0EF03DEC0FF072 -:1010F000020E55EC10F0020EE66E030EE66E69EC81 -:1011000010F0010E75EC10F005E1020EE66E75ECC4 -:1011100010F002E0000E01D0010E006E080EE15C3E -:1011200002E2E16AE552E16E0050A8EF0EF0A3EC96 -:101130000EF00C0EE1266FEC0FF0D950F20FC6EC5A -:1011400011F0080EEECFDBFF090EEECFDBFF0A0E2B -:10115000EECFDBFF0B0EEECFDBFF1F0E5DEC0EF0D4 -:10116000D0EC0FF000500110021003100CE02B0E19 -:10117000C2EC11F00A0EDBCFE6FF0B0E2AEC11F0E9 -:101180007CEC10F003D00B0EE66EE66A50EC0EF02D -:10119000A9EC12F0BCEC0EF0F8EC0EF050EC0EF0F6 -:1011A000D8EC12F00C0EE15C02E2E16AE552E16E6D -:1011B000A8EF0EF0A3EC0EF00A0EE12697EC0FF06C -:1011C0006FEC0FF0080EF36EDB6E090EF3CFDBFF52 -:1011D0001F0E5DEC0EF086EC0FF007E0D950080F03 -:1011E000E96EDACFEAFFEE8AED52F50EDB50FF082A -:1011F00007E1D950080FE96EDACFEAFFEE52ED8829 -:101200007CEC10F050EC0EF086EC0FF002E0A9EC54 -:1012100012F0CEEC11F0030E2AEC11F0D8EC12F023 -:101220000A0EE15C02E2E16AE552E16EA8EF0EF01F -:10123000A3EC0EF0F90EDBCFE6FFE66AE66AE66A9B -:10124000E66AD950FA0FC6EC11F0AAEC11F0C1EC25 -:1012500012F0B0DF006E0A0EE15E0050A8EF0EF053 -:10126000A3EC0EF0FE0EDBA00BD0010E42EC10F052 -:101270002DC057F12EC058F12FC059F130C05AF18E -:10128000FE0EDBA20BD0020E42EC10F02DC05BF183 -:101290002EC05CF12FC05DF130C05EF10101546BD6 -:1012A000B3EF11F0A3EC0EF01F0E5DEC0EF0E4ECCA -:1012B00012F0B3EF11F0A3EC0EF0040EE126F90EDC -:1012C000DB500FE097EC0FF0210E5DEC0EF0CEEC52 -:1012D00011F0030E2AEC11F0A1EC11F0C1EC12F0A8 -:1012E00023D0200E5DEC0EF0FE0EDBA20ED0BCEC87 -:1012F0000EF05B0EE96E010E6FEC11F0020E1DECAC -:1013000010F0020EE66E7EEC11F0FE0EDBA00ED0A9 -:10131000BCEC0EF0570EE96E010E6FEC11F0010EF1 -:101320001DEC10F0010EE66E7EEC11F0040EE15C97 -:1013300002E2E16AE552E16EA8EF0EF0CBEC11F0AB -:1013400006E051EC10F003E051EC0FF003D0080E72 -:1013500001EC12F0040EE15C02E2E16AE552E16E9A -:10136000A8EF0EF0CBEC11F006E051EC10F003E02A -:1013700051EC0FF003D00A0E01EC12F0040EE15C08 -:1013800002E2E16AE552E16EA8EF0EF0CBEC11F05B -:1013900006E051EC10F003E051EC0FF003D0070E23 -:1013A00001EC12F0040EE15C02E2E16AE552E16E4A -:1013B000A8EF0EF0CBEC11F006E051EC10F003E0DA -:1013C00051EC0FF00BD00B0E5DEC0EF053EC11F066 -:1013D000DDEC11F0DE6ADD6A81EC11F0040EE15CF7 -:1013E00002E2E16AE552E16EA8EF0EF0F8EC11F0CE -:1013F00006E051EC10F003E05DEC10F005D00D0EAE -:101400005DEC0EF053EC11F0A8EF0EF0F8EC11F0DB -:101410000FE1010E42EC10F0010157512D5C0A6EF4 -:1014200058512E580B6E59512F580C6E5A5111D0DD -:1014300051EC10F032E1020E42EC10F001015B5170 -:101440002D5C0A6E5C512E580B6E5D512F580C6E40 -:101450005E5130580D6E0AC02DF00BC02EF00CC03E -:101460002FF0306E8DEC24F02FEC0FF04AEC12F0E0 -:101470003DEC25F02EC002F02FC003F030C004F088 -:1014800031C005F07FEC0FF090EC25F0FDEC25F07D -:101490002FC0F3FF30C0F4FF02D05DEC10F0A8EFD6 -:1014A0000EF0E4EC11F046EC12F0030E5BEC0FF0E2 -:1014B000A8EF0EF0E4EC11F01EEC0FF0030E5BEC65 -:1014C0000FF0A8EF0EF0A3EC0EF094EC10F01EEC71 -:1014D0000FF0010EF8EC12F04CEC10F094EC10F060 -:1014E00058EC0FF07AEF11F0A3EC0EF094EC10F042 -:1014F00062EC0FF04CEC10F094EC10F01EEC0FF0DE -:10150000020E7AEF11F0A3EC0EF01C0EE126F60E9F -:10151000DB501EE0006A800E016E010E026E430E6B -:10152000036E16EC13F0336A346AC80E356E420E41 -:10153000366E3DEC25F057EC12F0A9DB93EC12F07F -:10154000FDEC25F0F70E2FC0DBFFF80E30C0DBFFFF -:1015500058EC11F0E8DBE8EC11F00C6A800E0D6E2F -:10156000010E0E6E430E0F6ED3EC12F053EC12F020 -:1015700018EC11F021EC10F08ADB93EC12F02EC085 -:10158000DEFF2FC0DEFF30C0DEFF31C0DDFFDD52E9 -:10159000DD52A8EC0FF07FEC0FF090EC25F057EC4B -:1015A00012F0E8EC11F0106A800E116E010E126E4E -:1015B000430E136ED3EC12F026EC11F00AEC13F08C -:1015C00093EC12F0040E2EC0DBFF050E2FC0DBFFE4 -:1015D000060E30C0DBFF070E31C0DBFFDECF2EF082 -:1015E000DECF2FF0DECF30F0DDCF31F0DD52DD5237 -:1015F000040EDBCF33F0050EDBCF34F0060EDBCF6D -:1016000035F0070EEAEC12F0080E2EC0DBFF090ED3 -:101610002FC0DBFF0A0E30C0DBFF0B0E31C0DBFF3B -:10162000080EDBCF04F0090EDBCF05F00A0EDBCF8E -:1016300006F00B0EDBCF07F0336A346A356A366A80 -:101640004DDB63EC26F0010A03E0D0EC0FF013D081 -:10165000080EDBCF08F0090EDBCF09F00A0EDBCF56 -:101660000AF00B0EDBCF0BF07FEC0FF097EC12F0D3 -:1016700090EC25F019DB080E00C0DBFF090E01C05D -:10168000DBFF0A0E02C0DBFF0B0E03C0DBFF97DBA4 -:10169000ABEC0FF08BEC10F0E7EC10F0F7EC0FF088 -:1016A000046A056A066A400E076E5DEC11F053ECA1 -:1016B00012F08BEC10F0BBEC12F0F6DA0C0EDBCF74 -:1016C0000CF00D0EDBCF0DF00E0EDBCF0EF00F0E7B -:1016D000DBCF0FF025EC10F0DDEC0FF070DB57ECFA -:1016E00012F0FBEC12F0E7EC10F0AEEC0FF0066A33 -:1016F000400E076EFBEC12F0BBEC12F004EC12F0A3 -:1017000025EC10F0EAEC0FF0140EDBCF08F0150E0C -:10171000DBCF09F0160EDBCF0AF0170EF6DA0C0E4F -:10172000DBCF14F00D0EDBCF15F00E0EDBCF16F075 -:101730000F0EF2DAD9CFE9FFDACFEAFFEECF20F0D1 -:10174000EECF21F0EECF22F0EFCF23F046EC11F0F8 -:10175000B9DB246E0D0EE15E2450180EDBCF08F0CD -:10176000190EDBCF09F01A0EDBCF0AF01B0ECDDA13 -:10177000100EDBCF14F0110EDBCF15F0120EDBCF05 -:1017800016F0130EC9DA040EDBCF20F0050EDBCF06 -:1017900021F0060EDBCF22F0070EDBCF23F046EC64 -:1017A00011F086DBF8EC12F0246E0D0EE15E245091 -:1017B000CDEC12F01C0EE15C02E2E16AE552E16E52 -:1017C000C7D2C1DA3C0EE126C3DB21EC13F060EC9A -:1017D00012F097EC12F090EC25F0BDDB7CEC12F0EF -:1017E0005DEC11F053EC12F033EC10F050DA2EEC0B -:1017F00011F04DDA73DAA7EC24F056DA336A346A62 -:10180000800E18EC10F0380E2EC0DBFF390E2FC002 -:10181000DBFF3A0E30C0DBFF3B0E31C0DBFF21ECBB -:1018200013F042DA58DB5DEC11F07DDA54DBE8ECC2 -:101830002DF0086E080EE15E0850080E2DC0DBFF8B -:10184000090E2EC0DBFF0A0E2FC0DBFF0B0E30C0CF -:10185000DBFFF60EDB5007E0D950F40FC6EC11F0B9 -:10186000EE50ED1039E1BCDA080EDBCF0EF0090EB8 -:10187000DBCF0FF00A0EDBCF10F00B0EAFEC10F049 -:10188000DFD962EC11F02E6A2F6A800E306E400EA6 -:10189000316E380EDBCF33F0390EDBCF34F03A0E39 -:1018A000DBCF35F03B0EA6EC11F0D9DA14DB6EDBA2 -:1018B0002DC002F02EC003F02FC004F030C005F0A0 -:1018C0002DC02EF0EDEC11F08CEC11F0EADD0A6E7B -:1018D000060EE15E0A50A3D1380EDBCF04F0390EBC -:1018E000DBCF05F03A0EDBCF06F03B0EDBCF07F087 -:1018F000C3DB24EC13F090EC25F08BEC10F002EC41 -:1019000013F0B6DAB0DB07EC12F07CEC12F0BFD9C2 -:10191000DCD9A7EC24F022DB0AEC12F058EC11F031 -:1019200026EC11F093EC12F055DB046A056A0AEC20 -:1019300012F05DEC11F026EC11F093EC12F01C0E9D -:101940002EC0DBFF1D0E2FC0DBFF1E0E30C0DBFFE5 -:101950001F0E31C0DBFF1C0EDBCF00F01D0EDBCFF6 -:1019600001F01E0EDBCF02F01F0EDBCF03F0C7DA53 -:1019700093EC12F0200E2EC0DBFF210E2FC0DBFFF8 -:10198000220E30C0DBFF230E31C0DBFFD950180F11 -:10199000E96EDACFEAFF240EEECFDBFF250EEECFA5 -:1019A000DBFF260EEECFDBFF270EEECFDBFF58EC82 -:1019B00011F0B4EC12F0200EDBCF33F0210EDBCFB0 -:1019C00034F0220EDBCF35F0230EF0EC12F0280EAF -:1019D0002EC0DBFF290E2FC0DBFF2A0E30C0DBFF3D -:1019E0002B0E31C0DBFF5DEC11F0B4EC12F0240ED5 -:1019F000DBCF33F0250EDBCF34F0260EDBCF35F016 -:101A0000270EF0EC12F02C0E2EC0DBFF2D0E2FC097 -:101A1000DBFF2E0E30C0DBFF2F0E31C0DBFF2C0EA4 -:101A2000DBCF04F02D0EDBCF05F02E0EDBCF06F062 -:101A30002F0EDBCF07F063DA51D990EC25F03AECAA -:101A400011F0300E2EC0DBFF310E2FC0DBFF320E47 -:101A500030C0DBFF330E31C0DBFF280EDBCF2EF0B2 -:101A6000290EDBCF2FF02A0EDBCF30F02B0EDBCF91 -:101A700031F03AEC11F0340E2EC0DBFF350E2FC0E2 -:101A8000DBFF360E30C0DBFF370E31C0DBFFD95035 -:101A9000300F87D9D950340F84D9E8EC2DF0006E7F -:101AA000080EE15E00500C0E2DC0DBFF0D0E2EC0A7 -:101AB000DBFF0E0E2FC0DBFF0F0E30C0DBFF006A16 -:101AC000016A026A400E036E00C0E6FF01C0E6FF35 -:101AD00002C0E6FFE66E9CD924EC13F0B2DAFBD923 -:101AE00097EC11F02DC014F02EC015F02FC016F099 -:101AF00030C017F046EC12F0E8EC2DF0186E080E2E -:101B0000E15E1850E552E7CF03F0E552E7CF02F06F -:101B1000E552E7CF01F0E552E7CF00F02DC004F029 -:101B20002EC005F02FC006F030C007F026DA93EC87 -:101B300012F043DAF60EDB5002081FE185EC12F0DA -:101B4000A6EC24F0C5EC12F0A7EC24F005D95CDA81 -:101B5000060E2FC0DBFF070E30C0DBFF000EDFCF0D -:101B60002FF0010EE0D8020ED2EC11F0D4DA64DBD3 -:101B7000040E2FC0DBFF050E35D021D995D80C0EF1 -:101B8000DBCF04F00D0EDBCF05F00E0EDBCF06F041 -:101B90000F0EDBCF07F004C033F005C034F006C0F1 -:101BA00035F007C036F0A6EC24F021DA85EC12F00F -:101BB000A7EC24F0C5EC12F0A6EC24F0CDD824DA82 -:101BC000040E2FC0DBFF050E30C0DBFF020EDBCFA3 -:101BD0002FF0030EA8D8CEDB9EDA2EDB060E2FC028 -:101BE000DBFF070E30C0DBFF2BD881D8040EDBCF24 -:101BF0002FF0050E88DA46EC12F0BCDB33D862D940 -:101C0000206E0D0EE15E205072D8060EDBCF2FF055 -:101C1000070E79DA4DD9C6DB25D84AD94CD93C0E06 -:101C2000E15C02E2E16AE552E16E92D0010E01014F -:101C3000561505E0020E561502E0556B010C000C1E -:101C4000F5DF0009FDE01200010155511200FBEC27 -:101C500012F04AEC12F0A5DA30DB55DA46EC12F05D -:101C600027DB8ED32EC01CF02FC01DF030C01EF01D -:101C700031C01FF04AEC12F027EC13F02DC018F021 -:101C80002EC019F02FC01AF030C01BF012002EC069 -:101C900033F02FC034F030C035F031C036F01200D0 -:101CA000C1EC12F07EEF11F02EC000F02FC001F059 -:101CB00030C002F031C003F01200E66EC1EC12F049 -:101CC000E0EC04F0E552E552120000C02EF001C035 -:101CD0002FF002C030F003C031F0120004C02EF02B -:101CE00005C02FF006C030F007C031F0120016EC2E -:101CF00013F0D0DBD1EF10F0D6DA5FDBD4DAF3CF1C -:101D0000DEFFF4CFDDFF81EF11F0DBCF0BF0C2DBA4 -:101D100097EC12F0D1EF10F0DBCF17F0BBDB9EDABF -:101D2000D9DB46EF12F0BFDB57EF12F002C02EF006 -:101D300054DBA6EC24F0F0DA63EC0AF0126E060E27 -:101D4000E15E12501200D9CFE6FFE1CFD9FF1200B9 -:101D5000E552E7CFD9FF1200100EDBCF33F0110EA2 -:101D6000DBCF34F0120EDBCF35F0130EEFDAFDEFE0 -:101D700025F042DBE76E1200FA0EDBCF00F0FB0E1F -:101D8000DBCF01F0FC0EDBCF02F0FD0EDBCF03F06A -:101D9000000E006C011E0122021E0222031E0322FD -:101DA0001200E96EDACFEAFFAAEF11F00CC02EF0B4 -:101DB0000DC02FF00EC030F00FC031F012002E6AAF -:101DC0002F6A306A400E316E080EDBCF33F0090EF9 -:101DD000DBCF34F00A0EDBCF35F00B0EA6EF11F09F -:101DE00071DA026A036AB40E046E420E056E1200C6 -:101DF00000C0DFFF010E01C0DBFF020E02C0DBFFEF -:101E0000030E03C0DBFFCADA030EDBCFE6FF1200CE -:101E1000140EDBCF0CF0150EDBCF0DF0160EDBCF62 -:101E20000EF0170EDBCF0FF01200350E336EFA0EE8 -:101E3000346E0E0E356E3C0E366E1200000E186CAF -:101E4000191E19221A1E1A221B1E1B2218C0E6FF79 -:101E500019C0E6FF1AC0E6FF1BC0E6FF12002EC045 -:101E600006F02FC007F030C008F031C009F01200B2 -:101E7000F40EDBCF2FF0F50E83D2060EE7CFDBFF9B -:101E8000DBCFE6FF070EDBCFE6FF040EDBCFE6FF7E -:101E9000050EDBCFE6FF82DA030EDBCFE6FFA1EF14 -:101EA00011F00C0E49DA2D6A2E6A2F6A306A120080 -:101EB000EDDA020E12009CDB206E0D0EE15E20506A -:101EC000CDEF12F0E3DA010EF8EF12F05ADB15EC69 -:101ED00007F0E5521200AEDB31C0E6FF1200D95028 -:101EE000F60F54DA040EEECFDBFF050EEECFDBFF6C -:101EF000060EEECFDBFF070EEECFDBFF1200336ADC -:101F0000346A800E356EBF0E366E1200040EDBCFC3 -:101F100000F0050EDBCF01F0060EDBCF02F0070E5E -:101F2000DBCF03F000500110021003101200D9CFD4 -:101F3000E9FFDACFEAFFFA0EDBCFEEFFFB0EDBCFD5 -:101F4000EEFFFC0EDBCFEEFFFD0EDBCFEEFF12004F -:101F500078DB8BEF10F0ABDAB0D912D2140E2EC0B2 -:101F6000DBFF150E2FC0DBFF160E30C0DBFF170E98 -:101F700031C0DBFF046A056A12002DC033F02EC0A9 -:101F800034F02FC035F030C036F0120002EC2AF0E9 -:101F9000E5522AD3336A346A356A400E366E12002F -:101FA000080EDBCF00F0090EDBCF01F00A0EDBCF0D -:101FB00002F00B0EDBCF03F01200100E2EC0DBFF81 -:101FC000110E2FC0DBFF120E30C0DBFF130E31C02D -:101FD000DBFF1200180E2EC0DBFF190E2FC0DBFF37 -:101FE0001A0E30C0DBFF1B0E31C0DBFF12000C0EDF -:101FF0002EC0DBFF0D0E2FC0DBFF0E0E30C0DBFF4F -:102000000F0E31C0DBFF1200020E2FC0DBFF030EEC -:1020100030C0DBFFF90EDBCF2FF0FA0EDBCF30F054 -:102020001200356E430E366E1200A6EC07F0DCD2BD -:10203000356E400E366E3DEF25F0E66E5FD9A1EFAE -:1020400011F0A6EC24F08BEF10F00CC033F00DC0B3 -:1020500034F00EC035F00FC036F0A6EF24F0336A2E -:10206000800E346E12002EC018F02FC019F030C050 -:102070001AF031C01BF012000C6A0D6A0E6A400E95 -:102080000F6E1200E66EB2EC09F0E5521200040E7B -:10209000E126FE0EDB041200286E0D0EE15E2850D4 -:1020A0001200FE0EDB5002081200E66EC2EC07F0D2 -:1020B000006E090EE15E005012000C0E3DD9F36A6D -:1020C000F46A1200020EDBCF00F0000EE76E00187B -:1020D0001200E0EC04F0E552E552020EE66E12004A -:1020E00050DAB8EC07F0E5521200E66E8FEC07F01C -:1020F000E552E55200091200080EDBCFE6FF090E9B -:10210000DBCFE6FF1200CFD9F7D9C4D990EC25F088 -:1021100017DA6AEF12F02EC008F02FC009F030C0B5 -:102120000AF031C00BF0120092DD2EC024F02FC057 -:1021300025F030C026F031C027F077DE90EC25F096 -:102140002EC020F02FC021F030C022F031C023F08B -:1021500086DF810E66DF90EC25F032EF0EF0DBCFEC -:1021600011F0336A346A340E5CDF0EC02EF00FC0FB -:102170002FF010C030F011C031F090EC25F02EC0DF -:102180000AF02FC00BF030C00CF031C00DF0DB0EA8 -:10219000336E0F0E346E490E4BDF61DE78DD96EF45 -:1021A0000EF090EC25F083D9CC0E336EBC0E346E5D -:1021B0008C0E356E3B0E366E4ADA2DC000F02EC006 -:1021C00001F02FC002F030C003F046EF12F0D3D977 -:1021D0006BDD106A116A800E126E3F0E136E080ED0 -:1021E000DBCF14F0090EDBCF15F00A0EDBCF16F0B3 -:1021F0000B0EDBCF17F014C033F015C034F016C04F -:1022000035F017C036F006DA60DD3DEF25F0140E2C -:10221000DBCF00F0150EDBCF01F0160EDBCF02F0A6 -:10222000170EDBCF03F01BDF010EFBDE65EF0EF0B8 -:1022300087D92DDDD6EF0EF0E5D9F90EDBCF2FF0E3 -:10224000FA0E31D93DD96FD9FDEF25F02CD954D9EB -:1022500047EF0EF0DBCFE6FF50EF0EF014C02EF08C -:1022600015C02FF016C030F017C031F090EC25F0FB -:10227000A0EF12F0140EDBCF33F0150EDBCF34F0ED -:10228000160EDBCF35F0170EEAEF12F0CEDD20C0D0 -:102290002EF021C02FF022C030F023C031F090EC9E -:1022A00025F032EF0EF06DD94CEC06F0E55212003D -:1022B000FD0EDBCF2FF0FE0E1200FB0EDBCF2FF05A -:1022C000FC0E1200F70EDBCFE6FFF80EDBCFE6FFC9 -:1022D000F90EDBCFE6FFFA0EDBCFE6FF1200EA6E67 -:1022E000EE500026EE500122EE500222EE50032264 -:1022F000F8EF0EF07DD9D0DE50D92AD563EC05F089 -:1023000073D1DECF2DF0DECF2EF0DECF2FF0DDCF7C -:1023100030F0DD52DD521200FDEC25F02FC000F050 -:1023200030C001F02FC0E6FF30C0E6FF1200D950E8 -:10233000380F37DDC6EF0FF0E66E03EC33F0E552F1 -:102340001200DECFE6FFDDCFE6FF1200DBCF36F076 -:1023500090EF25F0EECFE6FFEECFE6FFEECFE6FF03 -:10236000EFCFE6FF1200010EA8DC0101010E556F50 -:10237000566BEED4000EDFCF2FF0010E53EF12F0AC -:1023800053EF12F0E66EE66A50EF0EF0E96EFF0EC4 -:10239000DA20EA6E1200D7DC47EF10F0020EDBCF36 -:1023A000E6FF1200DBCF2FF0030E53EF12F0E66EC4 -:1023B000E66A030EE66E15EF10F0020EF3CFDBFFB8 -:1023C000030EF4CFDBFF1200BEDC41DC32EF0EF077 -:1023D000E1DD90EC25F054EF0EF003C02FF004C0C7 -:1023E00030F005C031F0120052DC6FDCA6EF24F0B3 -:1023F000AADCFE0EDB041200E66E55EC32F0E5526C -:1024000012005BDC7CEF0EF04FDC08EF0FF0C2DD5A -:102410003DEF25F0800E066E3F0E076E2DDE04C0E8 -:10242000E6FF05C0E6FF06C0E6FF07C0E6FF0CC0FA -:10243000E6FF0DC0E6FF0EC0E6FFE66E78DFE55270 -:10244000E7CF0FF0E552E7CF0EF0E552E7CF0DF002 -:10245000E552E7CF0CF0E552E7CF07F0E552E7CFC2 -:1024600006F0E552E7CF05F0E552E7CF04F02DC0C6 -:1024700010F02EC011F02FC012F030C013F07DDD2F -:1024800095DC90EC25F047DE02EF13F02DC0E6FF5F -:102490001AEF13F0330E336EE20E346EC20E356E49 -:1024A000420E366E1200DBCF30F078EF24F02EC0F3 -:1024B00004F02FC005F030C006F031C007F0120064 -:1024C0002EC00CF02FC00DF030C00EF031C00FF058 -:1024D00047EF0EF0BD0E336E370E346E860E356E3E -:1024E000410E366EB4D82DC00CF02EC00DF02FC0AA -:1024F0000EF030C00FF012002EC014F02FC015F0F7 -:1025000030C016F031C017F012006ADC0C0EDBCFC1 -:102510000EF00D0EDBCF0FF00E0EDBCF10F00F0E16 -:102520001EDE07EF11F065EC0EF090EF25F008C00D -:102530002EF009C02FF00AC030F00BC031F01200AD -:102540002EC010F02FC011F030C012F031C013F0C7 -:102550001200060EDBCFE6FF070E7CDE040EDBCF9B -:10256000E6FF050E2AEF11F093EC0EF050DF4CDF82 -:102570006BD8A6EF24F047EC0EF06EEC0EF090EF67 -:1025800025F0FE0EDBCFE6FF1200ACEC0EF02FC004 -:10259000DEFF30C0DDFF07EF11F0030EE66E30EC1A -:1025A00009F0E5521200F70EDBCF2FF0F80E120003 -:1025B000C8DE50EC0EF00101010E546F1200E66E01 -:1025C000E66AECDE15EF10F0FC0EDBCFE6FFFD0E49 -:1025D0002AEF11F0DBCF36F03DEC25F054EF0EF092 -:1025E000B5DE99DDF4EF11F0E552E552E552120047 -:1025F000E66E97EF08F0F90EDBCF2FF0FA0E53DFFF -:102600008BEF10F047EC0EF06EEC0EF03DEC25F089 -:1026100054EF0EF010C02EF011C02FF012C030F0A9 -:1026200013C031F0A7EC24F060EF12F0BCDF3BDF09 -:102630008BEF10F02EC0E6FF2FC0E6FF30C0E6FFA4 -:10264000120036DE53EF12F013DC18EF11F090ECAD -:0626500025F02CEF26F03E -:0A265600DACFE4FFE2CFDAFFE9CFAC -:10266000E4FFEACFE4FFF6CFE4FFF7CFE4FFF5CFD6 -:10267000E4FFF3CFE4FFF4CFE4FFFACFE4FF00EE92 -:1026800029F0140EE80403E3EECFE4FFFBD700EEDD -:1026900000F0290EE80403E3EECFE4FFFBD7A8EC3B -:1026A0001EF09EA013D0B2EC1EF001014D2B000EC7 -:1026B0004E23E80E4D5D030E4E5905E34D6B4E6BF8 -:1026C0004F2B000E502323EC2CF09E90BBEC1EF001 -:1026D00002E2E16AE552E16EE552E7CFD9FFE55249 -:1026E00000EE28F0290EE80403E3E5CFEDFFFBD769 -:1026F00000EE3CF0140EE80403E3E5CFEDFFFBD75A -:10270000E5CFFAFFE5CFF4FFE5CFF3FFE5CFF5FF27 -:10271000E5CFF7FFE5CFF6FFE5CFEAFFE5CFE9FF2D -:10272000E5CFDAFF1100D8CFE4FFE0CFE4FFE46E9D -:10273000DACFE4FFE2CFDAFFF3CFE4FFF4CFE4FF38 -:10274000A8EC1EF0BBEC1EF002E2E16AE552E16E7D -:10275000E552E7CFD9FFE552E5CFF4FFE5CFF3FF30 -:10276000E5CFDAFFE550E5CFE0FFE5CFD8FF100079 -:1027700004D806EC1FF062D8FCD70F0EC11202D8A5 -:10278000D0EF1EF0CBEC1EF0E6527FEC1EF0010104 -:10279000696F070E695D10E1E66A55EC32F0E552AB -:1027A000DF6E000EDF80C3EC1EF0E66A36EC33F01D -:1027B000E552DF70C3EC1EF01C0E9316D08EF28E25 -:1027C000F28CF30E8C1695160101476B486B496B22 -:1027D0004A6B010E4B6F92948094939881980D0EE2 -:1027E000E66E7C0EE66EE10EE66EC8EC31F0E55268 -:1027F000E552E552C70E921694943F0E9516010EBF -:10280000E66E98EC04F0E552838C808A828480889E -:10281000838E80868294010EE66E71EC33F0E55271 -:1028200082849D80C50EE66EC6EC32F0E552B2ECB5 -:102830001EF0E552E552E7CFD9FF1200D9CFE6FFEF -:10284000E1CFD9FF0F0EE12601014B5102E0C4ECAC -:102850001DF0200E0101005D03E36D50020B12E03C -:1028600024EC0EF000090CE0E66A010EE66E030EA1 -:10287000E66E52EC09F0E552E552E55220EC0EF01E -:10288000BAEF1DF02EEC04F0010149514A1102E1AA -:10289000000E08D049C1E9FF4AC1EAFFEF50800BA2 -:1028A00001E0010E000947E101014651EA6A260FE5 -:1028B000E96E010EEA22EF5000083DE20501406B8F -:1028C00001014C514C2B0501416F0501040E426F73 -:1028D00001014651EA6A260FE96E010EEA22EFCFA6 -:1028E00043F5400EE66E400EE66E050EE66E010EF6 -:1028F000E66E010EE66E21EC23F0006E050EE15E41 -:102900000050F3CF49F1F4CF4AF101014651EA6A90 -:10291000260FE96E010EEA22EF6A01014651000816 -:1029200003E20101460707D001014551000803E217 -:1029300001011F0E466F010149514A1102E1000ECB -:1029400008D049C1E9FF4AC1EAFFEF50800B01E01E -:10295000010E00092BE124EC0EF0000927E016EC33 -:102960000EF0000923E00501406B01014C514C2B96 -:102970000501416F05010A0E426F0501436B050118 -:10298000010E486F400EE66E400EE66E050EE66ED6 -:10299000010EE66E010EE66E21EC23F0006E050ED0 -:1029A000E15E0050F3CF49F1F4CF4AF101015151FA -:1029B000020A10E0030A01E021D0030EE66E7AEC71 -:1029C0002DF0E55217EC08F0000903E00101020EBA -:1029D000516F16D0200EE66E030EE66EC80EE66E40 -:1029E000E66AE80EE66E030EE66E51EC0AF0006E43 -:1029F000060EE15E00500101516B02D00101516BE6 -:102A000001014751481102E1000E08D047C1E9FF1A -:102A100048C1EAFFEF50800B01E0010E000902E01F -:102A2000BAEF1DF005010251070A02E11BEF1DF08C -:102A30000D0A01E16AD2010A01E12AD20D0A01E17F -:102A4000C2D1040A1AE0030A07E0010A02E079EFA2 -:102A50001DF0FF00BAEF1DF0E66A55EC32F0E552CA -:102A6000DF6E000EDB80DFCFE6FFE66A35EC32F08A -:102A7000E552E552FF00BAEF1DF0010149514A113C -:102A800002E1000E08D049C1E9FF4AC1EAFFEF5058 -:102A9000800B01E0010E000901E093D100C540F573 -:102AA0000501416B0501030E426F0501436B0501F2 -:102AB0000851100A01E138D11F0A01E1FAD0080AD1 -:102AC00001E1BCD0010A01E17ED0020A71E0070AEF -:102AD00064E0010A20E0030A06E0010A01E047D1B0 -:102AE00069C148F547D10501486B670E006E650E58 -:102AF000016E026A00C0E6FF01C0E6FF02C0E6FF09 -:102B0000480EE66E050EE66E19EC32F0036E050E09 -:102B1000E15E03502FD10501486B5B0E006E650E20 -:102B2000016E026A00C0E6FF01C0E6FF02C0E6FFD8 -:102B3000480EE66E050EE66E19EC32F0036E050ED9 -:102B4000E15E0350590E006E650E016E026A00C010 -:102B5000E6FF01C0E6FF02C0E6FF480EE66E050E86 -:102B6000E66E19EC32F0036E050EE15E0350500E76 -:102B7000006E650E016E026A00C0E6FF01C0E6FF4E -:102B800002C0E6FF480EE66E050EE66E19EC32F066 -:102B9000036E050EE15E0350EDD092CF48F593CF62 -:102BA00049F594CF4AF595CF4BF596CF4CF5E2D049 -:102BB00080CF48F581CF49F582CF4AF583CF4BF5D9 -:102BC00084CF4CF5D7D0010EE66EC9EC2CF0E5525F -:102BD000010E2DC0DBFF020E2EC0DBFF030E2FC047 -:102BE000DBFF040E30C0DBFF040EDBCF48F5030E25 -:102BF000DBCF49F5020EDBCF4AF5010EDBCF4BF5FB -:102C0000020EE66EC9EC2CF0E552010E2DC0DBFF82 -:102C1000020E2EC0DBFF030E2FC0DBFF040E30C000 -:102C2000DBFF040EDBCF4CF5030EDBCF4DF5020EC0 -:102C3000DBCF4EF5010EDBCF4FF59CD0010EE66EDB -:102C4000B2EC09F0E552010E2DC0DBFF020E2EC0E2 -:102C5000DBFF030E2FC0DBFF040E30C0DBFF040ED2 -:102C6000DBCF48F5030EDBCF49F5020EDBCF4AF58B -:102C7000010EDBCF4BF5020EE66EB2EC09F0E55229 -:102C8000010E2DC0DBFF020E2EC0DBFF030E2FC096 -:102C9000DBFF040E30C0DBFF040EDBCF4CF5030E70 -:102CA000DBCF4DF5020EDBCF4EF5010EDBCF4FF53E -:102CB00061D0010EE66EDAEC09F0E552010E2DC08E -:102CC000DBFF020E2EC0DBFF030E2FC0DBFF040E66 -:102CD00030C0DBFF040EDBCF48F5030EDBCF49F538 -:102CE000020EDBCF4AF5010EDBCF4BF5020EE66E8E -:102CF000DAEC09F0E552010E2DC0DBFF020E2EC00A -:102D0000DBFF030E2FC0DBFF040E30C0DBFF040E21 -:102D1000DBCF4CF5030EDBCF4DF5020EDBCF4EF5CE -:102D2000010EDBCF4FF526D0010EE66EF6EC09F072 -:102D3000E552050EF3CFDBFF060EF4CFDBFF060EE8 -:102D4000DBCF48F5050EDBCF49F5020EE66EF6EC5B -:102D500009F0E552050EF3CFDBFF060EF4CFDBFFE3 -:102D6000060EDBCF4AF5050EDBCF4BF503D0050190 -:102D7000020E436F400EE66E400EE66E050EE66EE6 -:102D8000010EE66E010EE66E21EC23F0006E050EDC -:102D9000E15E0050F3CF49F1F4CF4AF1400EE66E08 -:102DA000000EE66E050EE66EE66A010EE66E21EC9A -:102DB00023F0006E050EE15E0050F3CF47F1F4CF33 -:102DC00048F1BAEF1DF005010851030A37E0010A86 -:102DD00025E0030A13E0010A01E040D00501095192 -:102DE000921205010A51931205010B51941205012B -:102DF0000C51951205010D51961235D00501091D92 -:102E0000921605010A1D931605010B1D9416050166 -:102E10000C1D951605010D1D961625D00501091DE1 -:102E2000891605010A1D8A1605010B1D8B16050161 -:102E30000C1D8C1605010D1D8D1615D005010951AF -:102E4000891205010A518A1205010B518B120501E5 -:102E50000C518C1205010D518D1205D0030EE66E3A -:102E600003EC33F0E552400EE66E000EE66E050E02 -:102E7000E66EE66A010EE66E21EC23F0006E050EAA -:102E8000E15E0050F3CF47F1F4CF48F1BAEF1DF007 -:102E900005010851020A09E0030A01E01CD009C536 -:102EA000E6FF7AEC2DF0E5521BD009C5E6FF81EC78 -:102EB0002DF0E55224EC0EF000090CE0E66A010E5C -:102EC000E66E030EE66E52EC09F0E552E552E5526D -:102ED00020EC0EF005D0010EE66E03EC33F0E55267 -:102EE000400EE66E000EE66E050EE66EE66A010E18 -:102EF000E66E21EC23F0006E050EE15E0050F3CF8C -:102F000047F1F4CF48F1BAEF1DF005010851060A68 -:102F100002E1DAEF1CF0080A02E19AEF1CF0030A62 -:102F200002E194EF1CF0070A02E135EF1CF0030AFE -:102F300001E1E8D3010A01E1FAD20F0A01E1E3D28B -:102F4000020A01E19BD2150A01E15FD2140A01E1F4 -:102F500031D2070A01E103D2010A01E1D5D1030A06 -:102F600001E1A7D1010A01E1A1D10C0A01E127D1B8 -:102F7000030A01E195D0040A02E002EF1DF0050109 -:102F8000090504E0030E0501095D40E10AC5E6FFFD -:102F9000010EE66E35EC32F0E552E5520BC5E6FF68 -:102FA000020EE66E35EC32F0E552E5520CC5E6FF56 -:102FB000030EE66E35EC32F0E552E5520DC5E6FF44 -:102FC000040EE66E35EC32F0E552E5520EC5E6FF32 -:102FD000050EE66E35EC32F0E552E5520FC5E6FF20 -:102FE000060EE66E35EC32F0E552E55210C5E6FF0E -:102FF000070EE66E35EC32F0E552E55211C5E6FFFC -:10300000080EE66E35EC32F0E552E552020E05018F -:10301000095D04E0030E0501095D40E10AC5E6FF14 -:10302000090EE66E35EC32F0E552E5520BC5E6FFCF -:103030000A0EE66E35EC32F0E552E5520CC5E6FFBD -:103040000B0EE66E35EC32F0E552E5520DC5E6FFAB -:103050000C0EE66E35EC32F0E552E5520EC5E6FF99 -:103060000D0EE66E35EC32F0E552E5520FC5E6FF87 -:103070000E0EE66E35EC32F0E552E55210C5E6FF75 -:103080000F0EE66E35EC32F0E552E55211C5E6FF63 -:10309000100EE66E35EC32F0E552E55207EF1DF00A -:1030A00000C540F50501416B0501030E426F0501A6 -:1030B000436B010EE66E55EC32F0E5520501486FA8 -:1030C000020EE66E55EC32F0E5520501496F030E33 -:1030D000E66E55EC32F0E55205014A6F040EE66EDD -:1030E00055EC32F0E55205014B6F050EE66E55ECDE -:1030F00032F0E55205014C6F060EE66E55EC32F0EB -:10310000E55205014D6F070EE66E55EC32F0E552C3 -:1031100005014E6F080EE66E55EC32F0E5520501E2 -:103120004F6F090EE66E55EC32F0E5520501506F17 -:103130000A0EE66E55EC32F0E5520501516F0B0EAA -:10314000E66E55EC32F0E5520501526F0C0EE66E5C -:1031500055EC32F0E5520501536F0D0EE66E55EC5D -:1031600032F0E5520501546F0E0EE66E55EC32F06A -:10317000E5520501556F0F0EE66E55EC32F0E55243 -:103180000501566F100EE66E55EC32F0E552050162 -:10319000576F400EE66E400EE66E050EE66E010EAF -:1031A000E66E010EE66E21EC23F0006E050EE15E88 -:1031B0000050F3CF49F1F4CF4AF107EF1DF0E66A72 -:1031C000010EE66E35EC32F0E552E552010EE66E88 -:1031D000020EE66E35EC32F0E552E552E66A030E79 -:1031E000E66E35EC32F0E552E552E66A040EE66E24 -:1031F00035EC32F0E552E552E66A050EE66E35EC46 -:1032000032F0E552E552E66A060EE66E35EC32F033 -:10321000E552E552030EE66E070EE66E35EC32F02F -:10322000E552E552E80EE66E080EE66E35EC32F039 -:10323000E552E552E66A090EE66E35EC32F0E552EB -:10324000E552010EE66E0A0EE66E35EC32F0E552FE -:10325000E552E66A0B0EE66E35EC32F0E552E552C9 -:10326000E66A0C0EE66E35EC32F0E552E552E66A9F -:103270000D0EE66E35EC32F0E552E552E66A0E0EC2 -:10328000E66E35EC32F0E552E552030EE66E0F0EB7 -:10329000E66E35EC32F0E552E552E80EE66E100EC1 -:1032A000E66E35EC32F0E552E552B1D317EC08F09A -:1032B000AED3060E09C5DBFF050E0AC5DBFF080EFF -:1032C0000BC5DBFF070E0CC5DBFF0A0E0DC5DBFFD0 -:1032D000090E0EC5DBFF090EDBCFE6FF0A0EDBCFC2 -:1032E000E6FF070EDBCFE6FF080EDBCFE6FF050E9D -:1032F000DBCFE6FF060EDBCFE6FF51EC0AF0006EF7 -:10330000060EE15E005083D3060E09C5DBFF050EF5 -:103310000AC5DBFF080E0BC5DBFF070E0CC5DBFF84 -:103320000A0E0DC5DBFF090E0EC5DBFF090EDBCF54 -:10333000E6FF0A0EDBCFE6FF070EDBCFE6FF080E47 -:10334000DBCFE6FF050EDBCFE6FF060EDBCFE6FFA9 -:103350005AEC0AF0006E060EE15E005058D3060EDD -:1033600009C5DBFF050E0AC5DBFF080E0BC5DBFF39 -:10337000070E0CC5DBFF0A0E0DC5DBFF090E0EC5DF -:10338000DBFF090EDBCFE6FF0A0EDBCFE6FF070E01 -:10339000DBCFE6FF080EDBCFE6FF050EDBCFE6FF57 -:1033A000060EDBCFE6FF63EC0AF0006E060EE15E70 -:1033B00000502DD3060E09C5DBFF050E0AC5DBFF45 -:1033C000080E0BC5DBFF070E0CC5DBFF0A0E0DC593 -:1033D000DBFF090E0EC5DBFF090EDBCFE6FF0A0E91 -:1033E000DBCFE6FF070EDBCFE6FF080EDBCFE6FF05 -:1033F000050EDBCFE6FF060EDBCFE6FF74EC0AF02E -:10340000006E060EE15E005002D3060E09C5DBFF1A -:10341000050E0AC5DBFF080E0BC5DBFF070E0CC54A -:10342000DBFF0A0E0DC5DBFF090E0EC5DBFF0C0E20 -:103430000FC5DBFF0B0E10C5DBFF11C5E6FF0B0E42 -:10344000DBCFE6FF0C0EDBCFE6FF090EDBCFE6FF9E -:103450000A0EDBCFE6FF070EDBCFE6FF080EDBCF61 -:10346000E6FF050EDBCFE6FF060EDBCFE6FF83ECC3 -:103470000AF0006E090EE15E0050C9D2060E09C5C1 -:10348000DBFF050E0AC5DBFF080E0BC5DBFF070ED1 -:103490000CC5DBFF0A0E0DC5DBFF090E0EC5DBFFF9 -:1034A0000C0E0FC5DBFF0B0E10C5DBFF0E0E12C599 -:1034B000DBFF0D0E13C5DBFF0D0EDBCFE6FF0E0E9F -:1034C000DBCFE6FF11C5E6FF0B0EDBCFE6FF0C0EF0 -:1034D000DBCFE6FF090EDBCFE6FF0A0EDBCFE6FF10 -:1034E000070EDBCFE6FF080EDBCFE6FF050EDBCFD6 -:1034F000E6FF060EDBCFE6FFE1EC0BF0006E0B0EF5 -:10350000E15E005084D2060E0AC5DBFF050E0BC536 -:10351000DBFF050EDBCFE6FF060EDBCFE6FF09C5BE -:10352000E6FF52EC09F0E552E552E55270D2060E84 -:103530000AC5DBFF050E0BC5DBFF080E0CC5DBFF64 -:10354000070E0DC5DBFF0A0E0EC5DBFF090E0FC50A -:10355000DBFF090EDBCF2FF00A0EDBCF30F076EC6D -:1035600024F02EC008F02FC009F030C00AF031C09E -:103570000BF0330E336EE20E346EC20E356E420E19 -:10358000366E08C02EF009C02FF00AC030F00BC014 -:1035900031F090EC25F02EC004F02FC005F030C0C3 -:1035A00006F031C007F0CC0E336EBC0E346E8C0EBC -:1035B000356E3B0E366E04C02EF005C02FF006C0EF -:1035C00030F007C031F090EC25F02CEC26F02DC047 -:1035D00000F02EC001F02FC002F030C003F000C098 -:1035E000E6FF01C0E6FF02C0E6FF03C0E6FF070EEC -:1035F000DBCF2FF0080EDBCF30F076EC24F02EC0BE -:1036000014F02FC015F030C016F031C017F0330E93 -:10361000336EE20E346EC20E356E420E366E14C03C -:103620002EF015C02FF016C030F017C031F090EC1E -:1036300025F02EC010F02FC011F030C012F031C0B4 -:1036400013F0BD0E336E370E346E860E356E410E9E -:10365000366E10C02EF011C02FF012C030F013C023 -:1036600031F090EC25F02CEC26F02DC00CF02EC0A3 -:103670000DF02FC00EF030C00FF00CC0E6FF0DC0F3 -:10368000E6FF0EC0E6FF0FC0E6FF050EDBCF2FF012 -:10369000060EDBCF30F076EC24F02EC01CF02FC0ED -:1036A0001DF030C01EF031C01FF0330E336EE20E3D -:1036B000346EC20E356E420E366E1CC02EF01DC02A -:1036C0002FF01EC030F01FC031F090EC25F02CEC34 -:1036D00026F02DC018F02EC019F02FC01AF030C0FF -:1036E0001BF018C0E6FF19C0E6FF1AC0E6FF1BC0BA -:1036F000E6FF09C5E6FF97EC08F0206E0D0EE15ECF -:10370000205085D1060E0AC5DBFF050E0BC5DBFF79 -:10371000080E0CC5DBFF070E0DC5DBFF0EC5E6FF6F -:10372000070EDBCF2FF0080EDBCF30F076EC24F065 -:103730002EC008F02FC009F030C00AF031C00BF0E5 -:10374000330E336EE20E346EC20E356E420E366E9E -:1037500008C02EF009C02FF00AC030F00BC031F0C5 -:1037600090EC25F02EC004F02FC005F030C006F01C -:1037700031C007F0CC0E336EBC0E346E8C0E356E3D -:103780003B0E366E04C02EF005C02FF006C030F0A0 -:1037900007C031F090EC25F02CEC26F02DC000F0A5 -:1037A0002EC001F02FC002F030C003F000C0E6FFD1 -:1037B00001C0E6FF02C0E6FF03C0E6FF050EDBCF57 -:1037C0002FF0060EDBCF30F076EC24F02EC014F094 -:1037D0002FC015F030C016F031C017F0330E336E25 -:1037E000E20E346EC20E356E420E366E14C02EF0EE -:1037F00015C02FF016C030F017C031F090EC25F056 -:103800002EC010F02FC011F030C012F031C013F0F4 -:10381000BD0E336E370E346E860E356E410E366E2B -:1038200010C02EF011C02FF012C030F013C031F0D4 -:1038300090EC25F02CEC26F02DC00CF02EC00DF0F5 -:103840002FC00EF030C00FF00CC0E6FF0DC0E6FF39 -:103850000EC0E6FF0FC0E6FF09C5E6FFDAEC08F090 -:10386000186E0A0EE15E1850D2D0060E0AC5DBFFB4 -:10387000050E0BC5DBFF0CC5E6FF050EDBCF2FF0F9 -:10388000060EDBCF30F076EC24F02EC008F02FC00F -:1038900009F030C00AF031C00BF0330E336EE20E87 -:1038A000346EC20E356E420E366E08C02EF009C060 -:1038B0002FF00AC030F00BC031F090EC25F02EC094 -:1038C00004F02FC005F030C006F031C007F0BD0E87 -:1038D000336E370E346E860E356E410E366E04C072 -:1038E0002EF005C02FF006C030F007C031F090EC8C -:1038F00025F02CEC26F02DC000F02EC001F02FC0DA -:1039000002F030C003F000C0E6FF01C0E6FF02C0D5 -:10391000E6FF03C0E6FF09C5E6FF18EC09F00C6EF0 -:10392000060EE15E0C5073D009C5E6FF30EC09F0DD -:10393000E5526DD000C540F50501416B0501030E50 -:10394000426F0501436B010EE66E06EC0AF0E5528C -:10395000050EF3CFDBFF060EF4CFDBFF060EDBCF49 -:1039600048F5050EDBCF49F5020EE66E06EC0AF0CF -:10397000E552050EF3CFDBFF060EF4CFDBFF080E9A -:10398000DBCF4AF5070EDBCF4BF5400EE66E400E5F -:10399000E66E050EE66E010EE66E010EE66E21EC99 -:1039A00023F0006E050EE15E0050F3CF49F1F4CF35 -:1039B0004AF12DD000C540F50501416B0501030E0C -:1039C000426F0501436B16EC0EF0000904E005019F -:1039D000010E486F02D00501486B400EE66E400EA6 -:1039E000E66E050EE66E010EE66E010EE66E21EC49 -:1039F00023F0006E050EE15E0050F3CF49F1F4CFE5 -:103A00004AF105D0010EE66E03EC33F0E552400EAC -:103A1000E66E000EE66E050EE66EE66A010EE66ED6 -:103A200021EC23F0006E050EE15E0050F3CF47F16C -:103A3000F4CF48F19FD0010149514A1102E1000E33 -:103A400008D049C1E9FF4AC1EAFFEF50800B01E00D -:103A5000010E00094DE10101010E516F0501406B9E -:103A600001014C514C2B0501416F0501050E426FC0 -:103A70000501436B0501486B3C0E006E650E016E3F -:103A8000026A00C0E6FF01C0E6FF02C0E6FF480E82 -:103A9000E66E050EE66E19EC32F0036E050EE15E81 -:103AA0000350400EE66E400EE66E050EE66E010E09 -:103AB000E66E010EE66E21EC23F0006E050EE15E6F -:103AC0000050F3CF49F1F4CF4AF1400EE66E000EFC -:103AD000E66E050EE66EE66A010EE66E21EC23F058 -:103AE000006E050EE15E0050F3CF47F1F4CF48F1D0 -:103AF00041D0010149514A1102E1000E08D049C1EB -:103B0000E9FF4AC1EAFFEF50800B01E0010E000916 -:103B100031E100C540F50501416B0501030E426F1F -:103B20000501010E436F400EE66E400EE66E050E77 -:103B3000E66E010EE66E010EE66E21EC23F0006EDD -:103B4000050EE15E0050F3CF49F1F4CF4AF1400E8B -:103B5000E66E000EE66E050EE66EE66A010EE66E95 -:103B600021EC23F0006E050EE15E0050F3CF47F12B -:103B7000F4CF48F10F0EE15C02E2E16AE552E16E3A -:103B8000E552E7CFD9FF120001015251531104E170 -:103B9000100E526F270E536F5207000E535B6DA22B -:103BA00007D0525153112EE18C748CB413D027D00E -:103BB0000101005102E18C9422D0000502E18C84C5 -:103BC00009D0020E005D02E18C8419D0040E005D64 -:103BD00003E18C948C861200100E005D06E1010159 -:103BE000525153110FE18C740AD0200E005D0AE18E -:103BF00001015251531106E18C748CA402D08C96B1 -:103C000012008C8612001200120012001200B9EF8E -:103C100030F012001E0EE66E010EE66EEFEC22F0A2 -:103C2000E552E552400EE66E000EE66E050EE66EBB -:103C3000E66A010EE66E21EC23F0006E050EE15EF1 -:103C40000050F3CF47F1F4CF48F112006D84010129 -:103C5000080E6A6F070E6B6F6A07000E6B5B6A5186 -:103C60006B11FAE16D941200D9CFE6FFE1CFD9FFD5 -:103C7000FD0EDBCF2FF0FE0EDBCF30F0010E2F1844 -:103C800001E1305033E0E8682F1802E1E8683018AD -:103C90002BE0030E2F1801E1305024E0040E2F1802 -:103CA00001E130501DE0020E2F1801E1305016E006 -:103CB000170E2F1801E130500FE0160E2F1801E1FA -:103CC000305008E0150E2F1801E1305001E010D0FF -:103CD000A1DF0FD09EDF0DD09ADF0BD096DF09D089 -:103CE00092DF07D091DF05D091DF03D0000001D033 -:103CF00000D0010E00D0E552E7CFD9FF12004BD81B -:103D0000E652D0B202D0010E15D0D0B802D0020EC9 -:103D100011D0D0B002D0030E0DD0D0B602D0040E18 -:103D200009D0FCAE02D0050E05D0FCAC02D0060EC8 -:103D300001D0070EDF6ED088D086D084D082D080AC -:103D4000FC9EFC9CDF50E552E552E7CFD9FF120004 -:103D5000E65221D8020EE126F350DF6E010EF4CFB9 -:103D6000DBFF1200C00EE66EE00EE66EE7EC32F00E -:103D7000E552E5521200DF50F36E010EDB50F46E97 -:103D8000020EE15C1200DFCFE6FFE66A35EC32F0AE -:103D9000E552E5521200D9CFE6FFE1CFD9FF12007C -:103DA000C8EC23F06A6A686AFBEC23F06D8C6E6ADB -:103DB000ABEC23F06D9CDF6ADCEC23F010E2DF500B -:103DC000040DF3CFE9FFF4CFEAFF000EE926040E5D -:103DD000EA22EE6AEE6AEE6AEE6ADF2AEDD7160E86 -:103DE000706E68A604D0030E71EC23F0FAD70101BF -:103DF000136B186B196B1A6B6D98080E0B6F040E12 -:103E00000C6F016B006BE55286EF23F0C8EC23F0DA -:103E1000010100510BE16D6A696AFBEC23F06DB69C -:103E200002D06D86FCD70101010E006F000508E18C -:103E30006DBA06D0686A696A69806988020E006F87 -:103E40006850040B07E06950040B04E0020E71ECAB -:103E500023F089D86DB247D06850010B14E0695047 -:103E6000010B11E09DDF0101040E006F0401200E23 -:103E7000026F040E036F080E016F006B8C0E0013AF -:103E8000E66A3AEC24F06850100B07E06950100B1A -:103E900004E060D8040E71EC23F06850400B0BE096 -:103EA0006950400B08E002EC24F0020E79EC23F09C -:103EB000060E71EC23F06850200B04E06950200BD3 -:103EC00001E035D86850020B0AE06950020B07E0A8 -:103ED00002EC24F0E668E6685AEC24F06A6A040E04 -:103EE0000101005D02E2A19A1FD069A61CD0DF6A21 -:103EF000040EDF5C18E268A616D06CCF20F1030E2A -:103F000071EC23F0780E0101201502E138D809D0B8 -:103F1000000EE66EE66A200EE66E010EE66E010EFB -:103F2000E8DBDF2AE5D7A19AE55286EF23F070A0FF -:103F30000ED094EC23F0EF50800808E1D5DBEF5071 -:103F4000840804E194EC23F08C0EEF6E7090050E63 -:103F500071EF23F06984040EC4DB6D82B4EC23F0AE -:103F6000040E79EF23F0B4EC23F0030EC2DB6D9264 -:103F7000699468A403D0020EB4DBFBD71200C8EC2E -:103F800023F0FD0E010120153DE17E0E2015E840D5 -:103F90007F0B040DF3CF03F1F4CF04F1000E0327E0 -:103FA000040E042303C105F104C106F10575BCDB51 -:103FB000EF503C0BE842E8420D0822E1B5DB31EC62 -:103FC00024F0EECF00F0EFCF01F0280E001816E13C -:103FD000040E011813E16BEC24F0DF6AEDDB0EE256 -:103FE000DF50E4EC23F0DF50EA6A200FE96E040EA4 -:103FF000EA22E552E750EF6EDF2AF0D70AD807D061 -:104000001AD805D0FD0E2015040801E122D8E5528A -:104010007DD36ADBEF50800B02E066DBEF6A0101C3 -:104020000F6B106B146B156B136B64D89DDB170E45 -:1040300060DBAFEF21F0020E0101105D02E13CEF09 -:1040400022F034D80101215102E136EF24F0216B36 -:1040500012009EDB49DBEF50400B01E0010EDF6EEA -:1040600001010B75080E005D09E122C46EFF6E5060 -:10407000000802E2100E01D0040E006F100513E1DB -:104080006FEC24F0A6D9020E01010F5D03E12CDBD9 -:10409000840E07D0DF5003E127DBC80E02D024DBFB -:1040A000880EEF6E01D002D8E55230D32BDB010130 -:1040B000106B1ADBEF6A040E0B19006E0CC101F0D5 -:1040C000DE6E0CC1DDFF19DBEF6A18AF0CD01B519F -:1040D0001C1107E005D01CC1FAFF01011B51F96E4C -:1040E000FADF0101189F020EE15C02E2E16AE5528B -:1040F000E16E0CD304012051600BE842E842E84233 -:10410000E842E842000901E0120021510C0A45E0B2 -:104110000B0A3FE00C0A31E0010A22E00B0A1EE024 -:10412000020A1CE0030A18E0080A10E0010A0CE089 -:104130000F0A08E0030A01E012000101138F080EC4 -:10414000006F12002FEF21F098EF22F00101010E15 -:10415000116F010E126F0CD070EF21F0CEEF20F036 -:1041600024510101116F126B020E1127010E12234F -:104170001381010E146F138F12000101138F0401BC -:104180002451EA6A020FE96E010EEA2222C4EFFF0F -:104190001200EADA160E79EF23F012007EDB040E2D -:1041A000E1260401220510E120511F0B00090CE15A -:1041B0000101138F030E0401215D04E10101010ED1 -:1041C0001F6F02D001011F6B0401225141E12051F8 -:1041D0001F0B02083DE124510F0B000939E00101DA -:1041E000138F040124BF05D0A4DA070EE926010EBF -:1041F00004D09FDA0B0EE926010ED2DA030E215D00 -:1042000003E17BDA840E23D024510F0B016A700F77 -:10421000006E0F0E0122020E00C0DBFF030E01C074 -:10422000DBFF020EDBCFE9FF030EDBCFEAFFEE90F0 -:10423000ED5224AF06D061DAEF6ADF745EDA400E29 -:1042400006D05BDA880EEF6EDF7457DAC80EEF6EB9 -:10425000040EE15C02E2E16AE552E16E57D2800EA3 -:104260000401205D3CE10101C00E136F04012351E4 -:10427000030A1EE0010A09E0030A2FE10101400ED2 -:10428000116F620E126F120E22D0C3DAEA0EF626FA -:10429000620EA2DA020E0101F76A1125F66E1251C2 -:1042A000F7220900F5CF14F10A00F5CF15F112003D -:1042B000030E225D0FE2ADDAEC0EF626620E8CDA0A -:1042C00011C1F6FF12C1F7FF0800F5500101146F8C -:1042D000156B12000101136B12000101136B120028 -:1042E00011DA0401286B296B20511F0B020A11E01F -:1042F000030A0CE0010A22E10101138F0401288165 -:1043000001011F051BE10401288318D00101138F4F -:1043100015D00101138F040124BF05D00ADA070E5E -:10432000E926010E04D005DA0B0EE926010E38DA73 -:10433000E4D9EF50040B02E0010E286F010113AF26 -:1043400007D0280E116F040E126F1381020E146F26 -:10435000020EE15C02E2E16AE552E16ED7D16D98AE -:10436000010113BF08D018AF02D061DA2AD07EDA7B -:10437000BBD9840E27D018BF2BD0040120AF24D086 -:10438000010114510401265D010115510401275951 -:1043900004E226C414F127C415F11BD80101010E53 -:1043A000106FA1DA800EEF6E216BBED9EE52080EAF -:1043B000EF6E91DAB9D9840EEF6E010E216F8FDAAC -:1043C00093D9C80EEF6E1200010131DAC80EEF6EFC -:1043D000120098D90101080E145D000E15590DE266 -:1043E00014C1DEFF15C1DDFF0F5102E1010E03D044 -:1043F0000F0506E1020E0F6F03D0080EDE6EDD6AB8 -:1044000073D9EF9271D9EF906FD9010EDB50EF1293 -:104410006BD9EE52DFCFEFFF000EDB50145F010EC1 -:10442000DB50155B280E1D6F040E1E6F13B10FD0ED -:10443000F7D91BE011C1F6FF12C1F7FF112B000ED7 -:1044400012230800F55096D9F3E2DB06F1D7E8D93C -:104450000CE011C1E9FF12C1EAFF112B000E12237B -:10446000EF5088D9F4E2DB06F2D7020EE15C02E2FB -:10447000E16AE552E16E4AD145D956D9EE52EFCF05 -:10448000DFFFDFCF00F000500101195D000E1A5967 -:1044900003E219C1DFFF09D0DF50006E016AE85066 -:1044A000195D196F01501A591A6F010EDB6ADF503E -:1044B000F36E010EDBCFF4FFF350F45C10E2010E5B -:1044C000DB5082D916C1E9FF17C1EAFF162B000E97 -:1044D0001723E552E750EF6E010EDB2AE8D7000EF6 -:1044E000D8801955000E1A550DE2F4D854D91CD9AC -:1044F000EF50400B03E1EAD9C80E02D0E7D9880E8D -:10450000EF6E0FD0F0D9840EEF6E1B511C1107E037 -:1045100005D01CC1FAFF01011B51F96EFADF010140 -:10452000189F020EE15C02E2E16AE552E16EEED014 -:104530000101138F10D9010EE66EE66AE66A020EDB -:10454000E66E010EAFD922C401F10401225104E14B -:104550000101100E006F12000101200E006F04D93E -:10456000150E79EF23F0CED8000EDE6E040EDD6E50 -:10457000E8D8040DF350006E016A020E0F0B05E03F -:10458000D89001320032E806FBE1D89000360136BF -:10459000D89000360136D9CFE9FFDACFEAFF0050D4 -:1045A000EE260150ED22A9D8EF9EFD0EDB5002E170 -:1045B0006AD901D06DD9EA22DECFEEFFDDCFEDFF63 -:1045C0009CD8EF9C9AD8040EE926000EEA22EF8CC4 -:1045D000020EE15C02E2E16AE552E16E97D092D808 -:1045E000FE0EDB50016A700F006E0F0EDFD885D80B -:1045F000FD0EDBCFEFFFDBA402D0E66AF5D8FD0E9F -:10460000DBA203D0010EE66EEFD8020EE15C02E2FF -:10461000E16AE552E16E7AD075D8FE0EDB5005E115 -:1046200025D962D8840EEF6E05D08BD80CD989D8E5 -:10463000010F09D9020EE15C02E2E16AE552E16E86 -:1046400065D060D8FD0EDB5002E022D901D01BD925 -:10465000A7D853D806D9FB0EDBCFEEFFFC0EDBCF7D -:10466000EDFF4BD8EE52FA0EDBCFEFFF400E45D8F0 -:10467000E850EF16880E41D8E850EF12FD0EDB50DF -:1046800002E006D901D0FFD8EA22EF74DECF00F0B5 -:10469000DDCF01F000C0F3FF01C0F4FF020EE15CCA -:1046A00002E2E16AE552E16E31D0F7D8010EF36E15 -:1046B000FC0EDB5004E0D890F336E806FCE1F31C76 -:1046C000006EFD0EDBCFE9FFFE0EDBCFEAFF0050F0 -:1046D000EF161CD0FBD8EE52080EEF6EF7D831EF74 -:1046E00024F0E66E3AEF24F00BC1E9FF0CC1EAFFBB -:1046F0001200E66EE66A5AEF24F0DECFE9FFDDCF66 -:10470000EAFF1200CAD8020EE1261200E552E7CFF6 -:10471000D9FF1200D6D866EF24F0FE0EEA6ADB3429 -:10472000FE0BEA36E96E120003C1E9FF04C1EAFF9D -:10473000120024510F0BE96EEA6AD890E936EA3686 -:104740001200FD0EDB50E824026EFE0EDB50040D5D -:10475000F35002241200000EE66EE66AE66A710E5D -:10476000E66E0F0E52EF24F0000EE66EE66AE66E7D -:10477000E66A1200E66E1DC1E9FF1EC1EAFF1D2BAD -:10478000000E1E23E552E750EF6EDF06010E120009 -:1047900084D8E6521200280EEE6E040EED6E120062 -:1047A000EA22EECFDEFFEDCFDDFF1200012200C0D6 -:1047B000DEFF01C0DDFF1200DF50006E016A080E4F -:1047C000005C000E01581200EA6A280FE96E040E20 -:1047D000EA22EF50E66E1200F7220900F5CF11F140 -:1047E0000A00F5CF12F11200FE0EDBCFE6FFBBDEB2 -:1047F000E552E5521200160E6F6E9F0E6B6E7B0E29 -:10480000696E1200010EE66EE66A000EE66EE66A5A -:1048100012002251F66EF76AD890F636F73612007B -:10482000D9CFE9FFDACFEAFFEE50ED101200020E09 -:10483000106F5ADFEE52EF6A57DFC80EEF6E4ADF95 -:10484000AADF66EF24F0040DF3CF00F0F4CF01F0FF -:10485000000E0026040EAADF840E4FDFE850EF1290 -:104860001200020EE926000EEA2212003CD88C0E3D -:10487000EF6E1200680EE66E0F0EE66E16DFE55262 -:10488000E552E552120049DF070EE926010E12003B -:1048900044DF0B0EE926010E1200D9CFE6FFE1CF6F -:1048A000D9FF1200E66EFFEC31F0006E050EE15EFE -:1048B0000050120034EC1EF0006E060EE15E005057 -:1048C0001200200EEE6E040EED6E120005C1E9FF1F -:1048D00006C1EAFF120028DFC4DF61EF24F004DF25 -:0C48E000C0DFCBEF23F0F6DE8AEF23F000 -:0448EC00389E08D01A -:1048F000389E30AE05D02F6C301EE86A3022388EDC -:1049000030C02AF02FC029F03C6A3B6A8E0E2B6E15 -:104910002C6ADDEF26F0389E0CD0389E30AE09D0E0 -:104920002D6C2E1E2F1E301EE86A2E222F223022C2 -:10493000388E30C02AF02FC029F02EC03CF02DC098 -:104940003BF09E0E2B6E2C6ADDEF26F0367E386A29 -:1049500019EC27F031EC27F038B6C1EF26F038A279 -:104960000AD038AA03D038BEC1EF26F038A4CDEF64 -:1049700026F0CAEF26F038AA05D038ACCDEF26F0E5 -:10498000CAEF26F038A00AD038A808D038BE04D024 -:1049900038A402D0D6EF26F0DAEF26F03B6A2C6A74 -:1049A0003650315C3A6E10E32EC03CF02FC029F037 -:1049B00030C02AF031C039F033C02EF034C02FF0AF -:1049C00035C030F0383A09D033C03CF034C029F05B -:1049D00035C02AF036C039F03A6C389E38BC388E73 -:1049E00039C02BF038B009EF27F01A0E3A6009EF02 -:1049F00027F02B6A316A38A408D02E6C2F1E301E87 -:104A0000311EE86A2F223022312238AC08D03C6CAB -:104A1000291E2A1E2B1EE86A29222A222B222D6AF1 -:104A20003A5207E0313430322F322E322D323A2EC4 -:104A3000F9D72E503C262F50292230502A223150AF -:104A40002B222DC03BF0389E2BAE0BD03B6C3C1E76 -:104A5000291E2A1E2B1EE86A3C2229222A222B22EA -:104A6000388E2BA006D0D8802A3229323C323B32F5 -:104A7000392A39C02BF0DDEF26F0386A19EC27F01F -:104A800031EC27F038B6C1EF26F038A205D038BA9D -:104A9000C1EF26F0C8EF26F038BAD4EF26F038A0E0 -:104AA00005D038B8C1EF26F0D4EF26F038B8C8EFFB -:104AB00026F02C6A7F0E31242B6EE86A2C223650A9 -:104AC0002B5EE86A2C5A1A0E396E316A3B6A3C6AD0 -:104AD000296A2A6A33502E5E34502F5A3550305A84 -:104AE000000E315A09E733502E2634502F2235500C -:104AF0003022000E312201D03B8AD8902E362F363C -:104B000030363136D8903B363C3629362A36392E67 -:104B1000E1D730502F102E10D8A43B8ADDEF26F0BD -:104B2000386A19EC27F031EC27F038B6C1EF26F0DF -:104B300038A205D038B8C1EF26F0C8EF26F038AA61 -:104B400005D038B0C1EF26F0C8EF26F038B002D05B -:104B500038A802D0D4EF26F02C6A365031242B6EC0 -:104B6000E86A2C227E0E2B5EE86A2C5A3B6A3C6A6D -:104B7000296A2A6A35503002F4CF2AF0F3CF29F09F -:104B800034503002F3503C26F4502922000E2A22E1 -:104B900035502F02F3503C26F4502922000E2A22D1 -:104BA00033503002F3503B26F4503C22000E2922B1 -:104BB0002A2234502F02F3503B26F4503C22000EA0 -:104BC00029222A2235502E02F3503B26F4503C2253 -:104BD000000E29222A2233502F02F4503B26000EC9 -:104BE0003C2229222A2234502E02F4503B26000E69 -:104BF0003C2229222A22DDEF26F0386A19EC27F020 -:104C000038B607EF26F038A20ED038B405D07F0EA4 -:104C1000306EFF0E2F6E1FD0800E306E2F6A1BD0AD -:104C2000306A2F6A18D038B0FBD78F0E3160EDD7BD -:104C30007E0E3164F5D78E0E315C05E0D8903032AF -:104C40002F32312AF8D738A406D02F6C301EE86AEC -:104C5000302230AEE5D71200386A19EC27F038B6AA -:104C600036EF26F038A20FD038B407D07F0E306E62 -:104C7000FF0E2F6E2E6E2D6E25D0800E306E01D061 -:104C8000306A000EF6D738B0FBD72D6A9F0E316020 -:104C9000EBD77E0E3164F4D79E0E315C07E0D890DE -:104CA00030322F322E322D32312AF6D738A40AD0A4 -:104CB0002D6C2E1E2F1E301EE86A2E222F2230222F -:104CC00030AEDED712006CEC26F038B6000C38B0EF -:104CD000000C38A4000C010C386A19EC27F031ECF8 -:104CE00027F038B6120038AE08D038A004D038A863 -:104CF00002D038801200389012003650315C0BE13F -:104D00003550305C08E134502F5C05E133502E5CA7 -:104D100002E138801200D8A002D0388E10D0315075 -:104D200036C031F0366E305035C030F0356E2F5011 -:104D300034C02FF0346E2E5033C02EF0336E365008 -:104D4000315C10E0FF0F09E0389038B403D038AE82 -:104D50003884120038AE38941200362AD890353292 -:104D60003432333233502E5E34502F5A3550305A4D -:104D700030BEEAD7D8902E362F363036312EF8D7BF -:104D8000C8D77F0E316EFF0E306E2F6E2E6E120062 -:104D90007F0E38BEFF0E316E02D07F0E316E800E58 -:104DA000306E2F6A2E6AF3D738AE04D0800E316E83 -:104DB000306AF7D7316A306AF4D72A5029103C108C -:104DC0003B10F8E02CBEF0D72ABE0CD02B502C1094 -:104DD000EBE0D8903B363C3629362A362B06D8A055 -:104DE0002C06F2D72C50D4E12B28D2E03BAE11D0C8 -:104DF0007F0E3B1402E13CA00CD03C2AE86A292239 -:104E00002A2207E3D8802A3229323C322B2A2B2847 -:104E1000BFE02B50C9E03CC02EF029C02FF02A344F -:104E2000306E2B30316E3032319E38BE318EC7EF4E -:104E300026F03036313602E33884387E06E1388099 -:104E4000316A306A2F6A2E6A1200312803E0D88056 -:104E500030321200D890303202E1388212003886A7 -:104E600012003536363602E3388C387E06E1388853 -:104E7000366A356A346A336A1200362803E0D8800D -:104E800035321200D8903532EAE1388A12006CECE3 -:104E900026F038B6000C38B0000C38B4000C010C09 -:104EA000376A35AE59EF27F0346C351EE86A352283 -:104EB000371E30AE61EF27F02F6C301EE86A3022CB -:104EC000371E4DEC33F030BE71EF27F037AE000CDB -:104ED0002F6C301EE86A30222B6C2C1EE86A2C22C4 -:0C4EE000000C37BE68EF27F03888FF0C8C -:044EEC00D9CFE6FF35 -:104EF000DACFE6FFE1CFD9FFE2CFDAFF1D0EE124E2 -:104F000002E3E168E652E16E67DAFA0EDBCFEEFF0C -:104F1000FB0EDBCFEEFFFC0EDBCFEEFFFD0EDBCF9B -:104F2000EEFFD950040FE66E000EDA20E66E0BDAC3 -:104F30009EEC2FF0006E060EE15C02E2E16AE552A3 -:104F4000E16E0050E76E0B0EE7CFDBFFDB50800811 -:104F500007E10A0EDB6ADE68DE68DE687F0E13D0CA -:104F60000B0EDB0405E1DE6ADE6ADE6ADD6AA6D1CD -:104F70000B0EDB50040809E1DB0EDE6E0F0EDE6E59 -:104F8000C90EDE6E3F0EDD6E99D1DDD91EDA2DC061 -:104F9000DEFF2EC0DEFF2FC0DEFF30C0DDFFDD52A2 -:104FA000DD52DBD90DDA3F0E20DA23E12E6A2F6ABB -:104FB000800E306E3F0E316EDECF33F0DECF34F038 -:104FC000DECF35F0DDCF36F0DD52DD523DEC25F0A1 -:104FD0002EC0DFFF010E2FC0DBFF020E30C0DBFF53 -:104FE000030E31C0DBFF020EF36E0C0EF3CFDBFFBE -:104FF00002D00C0EDB6AB1D9A30E336E300E346EC4 -:10500000890E356E3E0EF1D96CE1AF0E2E6E670E35 -:105010002F6E3B0E306E3F0E316EB2D92EC008F0AF -:105020002FC009F030C00AF031C00BF0C9D93F0ED3 -:10503000366EA6EC24F02EC004F02FC005F030C070 -:1050400006F031C007F0C8D9EECF0CF0EECF0DF06E -:10505000EECF0EF0EFCF0FF00CC033F00DC034F0F8 -:105060000EC035F00FC036F0A7EC24F080D9D70E73 -:10507000146EB30E156EDD0E166E3F0E176EACD9A4 -:10508000EECF18F0EECF19F0EECF1AF0EFCF1BF005 -:1050900018C033F019C034F01AC035F01BC036F018 -:1050A00014C02EF015C02FF016C030F0316EA7ECF2 -:1050B00024F02EC010F02FC011F030C012F031C01B -:1050C00013F02EC033F02FC034F030C035F031C0B3 -:1050D00036F035D93DEC25F05FD9DD52DD520C0EAE -:1050E000DB2A31D972D92DC000F02EC001F02FC0BB -:1050F00002F030C003F064D9390E366E2DC02EF0A8 -:105100007AD963EC26F0010A01E1B5D04ED938D93D -:105110000D0E2EC0DBFF0E0E2FC0DBFF0F0E30C0BA -:10512000DBFF100E31C0DBFF910E2E6E860E2F6E50 -:10513000500E306EBD0E316E0D0EDBCF33F00E0E05 -:10514000DBCF34F00F0EDBCF35F0100E4AD90FD97C -:10515000F60E336E100E346EF10E356EBE0E366ED8 -:10516000A7EC24F0110E2EC0DBFF120E2FC0DBFFC8 -:10517000130E30C0DBFF140E31C0DBFF0D0EDBCF92 -:1051800000F00E0EDBCF01F00F0EDBCF02F0100EA1 -:10519000DBCF03F0D30E336ECC0E346EB40E356E0F -:1051A0003F0E366ECCD8A7EC24F0150E2EC0DBFFD8 -:1051B000160E2FC0DBFF170E30C0DBFF180E31C0FC -:1051C000DBFF0D0EDBCF2EF00E0EDBCF2FF00F0E20 -:1051D000DBCF30F0100EDBCF31F0110EDBCF33F030 -:1051E000120EDBCF34F0130EDBCF35F0140EF9D8EE -:1051F000150EDBCF33F0160EDBCF34F0170EDBCFFE -:1052000035F0180EDBCF36F03DEC25F0B0D8190E96 -:105210002EC0DBFF1A0E2FC0DBFF1B0E30C0DBFFE2 -:105220001C0E31C0DBFFC1D8190EDBCF33F01A0ED4 -:10523000DBCF34F01B0EDBCF35F01C0ED2D897D865 -:10524000CBD8EECF2EF0EECF2FF0EECF30F0EFCF69 -:1052500031F000C033F001C034F002C035F003C0BB -:1052600036F0A7EC24F031C0EDFF30C0EDFF2FC0C9 -:10527000EDFF2EC0EFFF0C0EDB0409E1920E006E75 -:105280000A0E016E060E3FD8A7EC24F016D00C0EC5 -:10529000DB50020806E1DB0E006E0F0E016EC90E38 -:1052A00009D00C0EDB5003080BE1920E006E0A0EC3 -:1052B000016E860E28D8A6EC24F06ED8DD52DD52A1 -:1052C0000A0EDB500AE049D87BD8BF0E366E37D8BD -:1052D00090EC25F061D8DD52DD52DECF2DF0DECF2F -:1052E0002EF0DECF2FF0DDCF30F0DD52DD521D0E7F -:1052F000E15C02E2E16AE552E16EE552E5CFDAFFF8 -:10530000E7CFD9FF1200026E3F0E036E65D8EECFD5 -:1053100004F0EECF05F0EECF06F0EFCF07F004C0BB -:1053200033F005C034F006C035F007C036F000C0D9 -:105330002EF001C02FF002C030F0316E120000C01C -:105340002EF0FBEF29F048D8EECFE6FFEECFE6FFD8 -:10535000EECFE6FFEFCFE6FF12003ED8EECF00F033 -:10536000EECF01F0EECF02F0EFCF03F012002EC02F -:1053700000F02FC001F030C002F031C003F0120085 -:10538000000EDFCF33F0010EDBCF34F0020EDBCFA7 -:1053900035F0030EF1EF29F02EC0DEFF2FC0DEFF47 -:1053A00030C0DEFF31C0DDFF1200DECF2EF0DECFD9 -:1053B0002FF0DECF30F0DDCF31F0DD52DD521200C4 -:1053C000336A346A800E356E12006BEC32F0E552AF -:1053D000E552E552E5521200D9CFE9FFDACFEAFFF4 -:1053E0001200DBCF36F090EF25F0366EA8DF47ECE9 -:1053F00027F0010A120001C02FF002C030F003C0F4 -:0454000031F0120075 -:0C540400D9CFE6FFDACFE6FFE1CFD9FFF9 -:10541000E2CFDAFF240EE12402E3E168E652E16E16 -:10542000D950FA0FE96EFF0EDA20EA6E020EEECFC7 -:10543000DBFF030EEECFDBFF040EEECFDBFF050E2E -:10544000EECFDBFFE8D9F2D99EEC2FF0006E060E0E -:10545000E15C02E2E16AE552E16E0050E76E0D0E9A -:10546000E7CFDBFFDB50800815E0A0D9336A346A50 -:10547000356A366A00C02EF001C02FF002C030F04D -:1054800003C031F063EC26F0010A10E1210E0101A6 -:10549000466F476B020EDB68030EDB68040EDB68A9 -:1054A0007F0EF36E050EF3CFDBFF66D10D0EDB50E2 -:1054B000050B01E061D10A0EDBCF00F00B0EDBCF54 -:1054C00001F0830E0026FF0E012200C0DEFF01C0A6 -:1054D000DDFFD950060F65D976D9DF50010B0FE0FB -:1054E000DF06010E01E2DB06D950180F5AD9D89019 -:1054F000EF36010EEB36020EEB36030EEB36D9CF4C -:10550000E9FFDACFEAFF020E346E356AEECF2FF0F4 -:10551000EDCF30F050EC27F02FC0EEFF30C0EDFFA4 -:10552000140EDB6A150EDB6A160EDB6A170EDB6AD9 -:105530001C0EDB6A1D0EDB6A1E0EDB6A010EF36EAB -:105540001F0EF3CFDBFF010EF36E0E0EF3CFDBFF6A -:105550000F0EDB6A0E0EDBCF00F00F0EDBCF01F07B -:10556000D890015004E61A0E005C000E015801E3C9 -:1055700098D0180EDBCF00F0190EDBCF01F01A0E19 -:10558000DBCF02F01B0EDBCF03F0010E1F0B07E099 -:10559000D8900036013602360336E806F9E1180ED7 -:1055A00000C0DBFF190E01C0DBFF1A0E02C0DBFFDB -:1055B0001B0E03C0DBFF140EDBCF08F0150EDBCF94 -:1055C00009F0160EDBCF0AF0170EDBCF0BF0010E41 -:1055D0001F0B07E0D890083609360A360B36E80666 -:1055E000F9E1D9501C0FDDD80850EE24046E0950A3 -:1055F000EE20056E0A50EE20066E0B50EE20076E70 -:10560000D950180FCED80450EE5C006E0550EE58FD -:10561000016E0650EE58026E0750EE58036E200ED3 -:1056200000C0DBFF210E01C0DBFF220E02C0DBFF4A -:10563000230E03C0DBFF200EDBCF2EF0210EDBCFCD -:105640002FF0220EDBCF30F0230EDBCF31F03134E0 -:10565000000E311809E6D880000E2E54000E2F548B -:10566000000E3054000E315411E2D950200F99D859 -:10567000AAD8D8D81C0EDB50EE121D0EDB50EE124D -:105680001E0EDB50EE121F0EDB50EE12D9501C0F17 -:1056900088D8AFD80E0EDB2A0F0E01E25BD7DB2ACB -:1056A00059D7C9D8100E00C0DBFF110E01C0DBFFB7 -:1056B000180EDBCF2FF0190EDBCF30F0120E2FC0FB -:1056C000DBFF130E30C0DBFFADD893D8D950100FDD -:1056D00068D8... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-17 20:48:40
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via f1d6828404338c20cc8d364f6d7b91781326c1aa (commit) from ae44815bfc0c54ff4b99e56c1ed95498973bbc49 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f1d6828404338c20cc8d364f6d7b91781326c1aa Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 17 21:48:06 2010 +0100 Change LM interrupt mode to polling ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.h b/USB_Module/Motor_Controller/Firmware/lm629.h index 85aeba3..94a7b96 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.h +++ b/USB_Module/Motor_Controller/Firmware/lm629.h @@ -22,8 +22,8 @@ // Parames graux #define LM_CLOCK 8e6 ///< Frence horloge LM (en Hz) -- forcnt 6 ou 8 MHz selon la rrence du composant -#define LM_INTERRUPT -//#define LM_POLLING +//#define LM_INTERRUPT +#define LM_POLLING #if defined(KROBOT_2010) // Constantes pour [Kro]bot 2010 diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index cde4e46..b17adb9 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 17911fd..2183b95 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,14 +1,14 @@ :020000040000FA -:0600000067EF33F012006F +:0600000063EF33F0120073 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000067EF33F0120067 +:0608000063EF33F012006B :060808002BEF13F01200BB -:0608180098EF13F012003E -:06082A00040063670000FA -:10083000260100002100000058670000540100005C -:100840000B0000004B670000470100000D00000096 -:0C085000486700006C010000030000007D +:0608180093EF13F0120043 +:06082A0004005B67000002 +:100830002601000021000000506700005401000064 +:100840000B00000043670000470100000D0000009E +:0C085000406700006C0100000300000085 :04085C00A3EC0EF00B :10086000030EE126010EE66EE0DAE552DF6E020EBF :10087000E66EDBDAE552E76E010EE7CFDBFF020E34 @@ -79,7 +79,7 @@ :100C800000000000020EE15C02E2E16AE552E16E62 :100C9000E552E7CFD9FF1200D9CFE6FFE1CFD9FF68 :100CA000020EE126FE0EDB040DE0FE0EDB50020814 -:100CB00009E00C0EE66E07EC33F0E552F36AF46AD5 +:100CB00009E00C0EE66E03EC33F0E552F36AF46AD9 :100CC000AAD0A9D0FE0EDBCFE6FF47DEE552010E2B :100CD000E66E2EDEE552FE0EDB50020B02E1000E48 :100CE00001D0010EE8B0838CE8A0839CFE0EDB509F @@ -104,7 +104,7 @@ :100E100001C0F4FF00D0020EE15C02E2E16AE5529B :100E2000E16EE552E7CFD9FF1200D9CFE6FFE1CF5F :100E3000D9FFE652DF6AFE0EDB040CE0FE0EDB504B -:100E4000020808E00C0EE66E07EC33F0E552000EE7 +:100E4000020808E00C0EE66E03EC33F0E552000EEB :100E500061D060D0FE0EDBCFE6FF7FDDE552010EF4 :100E6000E66E66DDE552FE0EDB50020B02E1000E7F :100E700001D0010EE8B0838CE8A0839CFE0EDB500D @@ -126,8 +126,8 @@ :100F7000A3EC0EF01D0E5DEC0EF0000EC2EC11F0B5 :100F8000A8EF0EF0A3EC0EF066EC0FF084080DE075 :100F900066EC0FF0C40809E0E66AC1EC12F069ECF7 -:100FA00010F03AEC33F0E552EFD71C0E5DEC0EF08A -:100FB000660EC2EC11F070EC10F066EC0FF08008D9 +:100FA00010F036EC33F0E552EFD71C0E5DEC0EF08E +:100FB000000EC2EC11F070EC10F066EC0FF080083F :100FC00004E066EC0FF0C008E7E166EC0FF0C00843 :100FD00002E170EC10F01E0E5DEC0EF00F0EC2EC94 :100FE00011F0E4EC12F0FA0EDBCFE6FFFB0E2AEC78 @@ -202,9 +202,9 @@ :1014300051EC10F032E1020E42EC10F001015B5170 :101440002D5C0A6E5C512E580B6E5D512F580C6E40 :101450005E5130580D6E0AC02DF00BC02EF00CC03E -:101460002FF0306E91EC24F02FEC0FF04AEC12F0DC -:1014700041EC25F02EC002F02FC003F030C004F084 -:1014800031C005F07FEC0FF094EC25F001EC26F074 +:101460002FF0306E8DEC24F02FEC0FF04AEC12F0E0 +:101470003DEC25F02EC002F02FC003F030C004F088 +:1014800031C005F07FEC0FF090EC25F0FDEC25F07D :101490002FC0F3FF30C0F4FF02D05DEC10F0A8EFD6 :1014A0000EF0E4EC11F046EC12F0030E5BEC0FF0E2 :1014B000A8EF0EF0E4EC11F01EEC0FF0030E5BEC65 @@ -215,13 +215,13 @@ :10150000020E7AEF11F0A3EC0EF01C0EE126F60E9F :10151000DB501EE0006A800E016E010E026E430E6B :10152000036E16EC13F0336A346AC80E356E420E41 -:10153000366E41EC25F057EC12F0A9DB93EC12F07B -:1015400001EC26F0F70E2FC0DBFFF80E30C0DBFFFA +:10153000366E3DEC25F057EC12F0A9DB93EC12F07F +:10154000FDEC25F0F70E2FC0DBFFF80E30C0DBFFFF :1015500058EC11F0E8DBE8EC11F00C6A800E0D6E2F :10156000010E0E6E430E0F6ED3EC12F053EC12F020 :1015700018EC11F021EC10F08ADB93EC12F02EC085 :10158000DEFF2FC0DEFF30C0DEFF31C0DDFFDD52E9 -:10159000DD52A8EC0FF07FEC0FF094EC25F057EC47 +:10159000DD52A8EC0FF07FEC0FF090EC25F057EC4B :1015A00012F0E8EC11F0106A800E116E010E126E4E :1015B000430E136ED3EC12F026EC11F00AEC13F08C :1015C00093EC12F0040E2EC0DBFF050E2FC0DBFFE4 @@ -232,10 +232,10 @@ :101610002FC0DBFF0A0E30C0DBFF0B0E31C0DBFF3B :10162000080EDBCF04F0090EDBCF05F00A0EDBCF8E :1016300006F00B0EDBCF07F0336A346A356A366A80 -:101640004DDB67EC26F0010A03E0D0EC0FF013D07D +:101640004DDB63EC26F0010A03E0D0EC0FF013D081 :10165000080EDBCF08F0090EDBCF09F00A0EDBCF56 :101660000AF00B0EDBCF0BF07FEC0FF097EC12F0D3 -:1016700094EC25F019DB080E00C0DBFF090E01C059 +:1016700090EC25F019DB080E00C0DBFF090E01C05D :10168000DBFF0A0E02C0DBFF0B0E03C0DBFF97DBA4 :10169000ABEC0FF08BEC10F0E7EC10F0F7EC0FF088 :1016A000046A056A066A400E076E5DEC11F053ECA1 @@ -257,12 +257,12 @@ :1017A00011F086DBF8EC12F0246E0D0EE15E245091 :1017B000CDEC12F01C0EE15C02E2E16AE552E16E52 :1017C000C7D2C1DA3C0EE126C3DB21EC13F060EC9A -:1017D00012F097EC12F094EC25F0BDDB7CEC12F0EB +:1017D00012F097EC12F090EC25F0BDDB7CEC12F0EF :1017E0005DEC11F053EC12F033EC10F050DA2EEC0B -:1017F00011F04DDA73DAABEC24F056DA336A346A5E +:1017F00011F04DDA73DAA7EC24F056DA336A346A62 :10180000800E18EC10F0380E2EC0DBFF390E2FC002 :10181000DBFF3A0E30C0DBFF3B0E31C0DBFF21ECBB -:1018200013F042DA58DB5DEC11F07DDA54DBECECBE +:1018200013F042DA58DB5DEC11F07DDA54DBE8ECC2 :101830002DF0086E080EE15E0850080E2DC0DBFF8B :10184000090E2EC0DBFF0A0E2FC0DBFF0B0E30C0CF :10185000DBFFF60EDB5007E0D950F40FC6EC11F0B9 @@ -275,9 +275,9 @@ :1018C0002DC02EF0EDEC11F08CEC11F0EADD0A6E7B :1018D000060EE15E0A50A3D1380EDBCF04F0390EBC :1018E000DBCF05F03A0EDBCF06F03B0EDBCF07F087 -:1018F000C3DB24EC13F094EC25F08BEC10F002EC3D +:1018F000C3DB24EC13F090EC25F08BEC10F002EC41 :1019000013F0B6DAB0DB07EC12F07CEC12F0BFD9C2 -:10191000DCD9ABEC24F022DB0AEC12F058EC11F02D +:10191000DCD9A7EC24F022DB0AEC12F058EC11F031 :1019200026EC11F093EC12F055DB046A056A0AEC20 :1019300012F05DEC11F026EC11F093EC12F01C0E9D :101940002EC0DBFF1D0E2FC0DBFF1E0E30C0DBFFE5 @@ -295,31 +295,31 @@ :101A0000270EF0EC12F02C0E2EC0DBFF2D0E2FC097 :101A1000DBFF2E0E30C0DBFF2F0E31C0DBFF2C0EA4 :101A2000DBCF04F02D0EDBCF05F02E0EDBCF06F062 -:101A30002F0EDBCF07F063DA51D994EC25F03AECA6 +:101A30002F0EDBCF07F063DA51D990EC25F03AECAA :101A400011F0300E2EC0DBFF310E2FC0DBFF320E47 :101A500030C0DBFF330E31C0DBFF280EDBCF2EF0B2 :101A6000290EDBCF2FF02A0EDBCF30F02B0EDBCF91 :101A700031F03AEC11F0340E2EC0DBFF350E2FC0E2 :101A8000DBFF360E30C0DBFF370E31C0DBFFD95035 -:101A9000300F87D9D950340F84D9ECEC2DF0006E7B +:101A9000300F87D9D950340F84D9E8EC2DF0006E7F :101AA000080EE15E00500C0E2DC0DBFF0D0E2EC0A7 :101AB000DBFF0E0E2FC0DBFF0F0E30C0DBFF006A16 :101AC000016A026A400E036E00C0E6FF01C0E6FF35 :101AD00002C0E6FFE66E9CD924EC13F0B2DAFBD923 :101AE00097EC11F02DC014F02EC015F02FC016F099 -:101AF00030C017F046EC12F0ECEC2DF0186E080E2A +:101AF00030C017F046EC12F0E8EC2DF0186E080E2E :101B0000E15E1850E552E7CF03F0E552E7CF02F06F :101B1000E552E7CF01F0E552E7CF00F02DC004F029 :101B20002EC005F02FC006F030C007F026DA93EC87 :101B300012F043DAF60EDB5002081FE185EC12F0DA -:101B4000AAEC24F0C5EC12F0ABEC24F005D95CDA79 +:101B4000A6EC24F0C5EC12F0A7EC24F005D95CDA81 :101B5000060E2FC0DBFF070E30C0DBFF000EDFCF0D :101B60002FF0010EE0D8020ED2EC11F0D4DA64DBD3 :101B7000040E2FC0DBFF050E35D021D995D80C0EF1 :101B8000DBCF04F00D0EDBCF05F00E0EDBCF06F041 :101B90000F0EDBCF07F004C033F005C034F006C0F1 -:101BA00035F007C036F0AAEC24F021DA85EC12F00B -:101BB000ABEC24F0C5EC12F0AAEC24F0CDD824DA7A +:101BA00035F007C036F0A6EC24F021DA85EC12F00F +:101BB000A7EC24F0C5EC12F0A6EC24F0CDD824DA82 :101BC000040E2FC0DBFF050E30C0DBFF020EDBCFA3 :101BD0002FF0030EA8D8CEDB9EDA2EDB060E2FC028 :101BE000DBFF070E30C0DBFF2BD881D8040EDBCF24 @@ -343,11 +343,11 @@ :101D0000DEFFF4CFDDFF81EF11F0DBCF0BF0C2DBA4 :101D100097EC12F0D1EF10F0DBCF17F0BBDB9EDABF :101D2000D9DB46EF12F0BFDB57EF12F002C02EF006 -:101D300054DBAAEC24F0F0DA63EC0AF0126E060E23 +:101D300054DBA6EC24F0F0DA63EC0AF0126E060E27 :101D4000E15E12501200D9CFE6FFE1CFD9FF1200B9 :101D5000E552E7CFD9FF1200100EDBCF33F0110EA2 -:101D6000DBCF34F0120EDBCF35F0130EEFDA01EFDC -:101D700026F042DBE76E1200FA0EDBCF00F0FB0E1E +:101D6000DBCF34F0120EDBCF35F0130EEFDAFDEFE0 +:101D700025F042DBE76E1200FA0EDBCF00F0FB0E1F :101D8000DBCF01F0FC0EDBCF02F0FD0EDBCF03F06A :101D9000000E006C011E0122021E0222031E0322FD :101DA0001200E96EDACFEAFFAAEF11F00CC02EF0B4 @@ -380,7 +380,7 @@ :101F500078DB8BEF10F0ABDAB0D912D2140E2EC0B2 :101F6000DBFF150E2FC0DBFF160E30C0DBFF170E98 :101F700031C0DBFF046A056A12002DC033F02EC0A9 -:101F800034F02FC035F030C036F0120006EC2AF0E5 +:101F800034F02FC035F030C036F0120002EC2AF0E9 :101F9000E5522AD3336A346A356A400E366E12002F :101FA000080EDBCF00F0090EDBCF01F00A0EDBCF0D :101FB00002F00B0EDBCF03F01200100E2EC0DBFF81 @@ -391,9 +391,9 @@ :102000000F0E31C0DBFF1200020E2FC0DBFF030EEC :1020100030C0DBFFF90EDBCF2FF0FA0EDBCF30F054 :102020001200356E430E366E1200A6EC07F0DCD2BD -:10203000356E400E366E41EF25F0E66E5FD9A1EFAA -:1020400011F0AAEC24F08BEF10F00CC033F00DC0AF -:1020500034F00EC035F00FC036F0AAEF24F0336A2A +:10203000356E400E366E3DEF25F0E66E5FD9A1EFAE +:1020400011F0A6EC24F08BEF10F00CC033F00DC0B3 +:1020500034F00EC035F00FC036F0A6EF24F0336A2E :10206000800E346E12002EC018F02FC019F030C050 :102070001AF031C01BF012000C6A0D6A0E6A400E95 :102080000F6E1200E66EB2EC09F0E5521200040E7B @@ -404,32 +404,32 @@ :1020D0001200E0EC04F0E552E552020EE66E12004A :1020E00050DAB8EC07F0E5521200E66E8FEC07F01C :1020F000E552E55200091200080EDBCFE6FF090E9B -:10210000DBCFE6FF1200CFD9F7D9C4D994EC25F084 +:10210000DBCFE6FF1200CFD9F7D9C4D990EC25F088 :1021100017DA6AEF12F02EC008F02FC009F030C0B5 :102120000AF031C00BF0120092DD2EC024F02FC057 -:1021300025F030C026F031C027F077DE94EC25F092 +:1021300025F030C026F031C027F077DE90EC25F096 :102140002EC020F02FC021F030C022F031C023F08B -:1021500086DF810E66DF94EC25F032EF0EF0DBCFE8 +:1021500086DF810E66DF90EC25F032EF0EF0DBCFEC :1021600011F0336A346A340E5CDF0EC02EF00FC0FB -:102170002FF010C030F011C031F094EC25F02EC0DB +:102170002FF010C030F011C031F090EC25F02EC0DF :102180000AF02FC00BF030C00CF031C00DF0DB0EA8 :10219000336E0F0E346E490E4BDF61DE78DD96EF45 -:1021A0000EF094EC25F083D9CC0E336EBC0E346E59 +:1021A0000EF090EC25F083D9CC0E336EBC0E346E5D :1021B0008C0E356E3B0E366E4ADA2DC000F02EC006 :1021C00001F02FC002F030C003F046EF12F0D3D977 :1021D0006BDD106A116A800E126E3F0E136E080ED0 :1021E000DBCF14F0090EDBCF15F00A0EDBCF16F0B3 :1021F0000B0EDBCF17F014C033F015C034F016C04F -:1022000035F017C036F006DA60DD41EF25F0140E28 +:1022000035F017C036F006DA60DD3DEF25F0140E2C :10221000DBCF00F0150EDBCF01F0160EDBCF02F0A6 :10222000170EDBCF03F01BDF010EFBDE65EF0EF0B8 :1022300087D92DDDD6EF0EF0E5D9F90EDBCF2FF0E3 -:10224000FA0E31D93DD96FD901EF26F02CD954D9E6 +:10224000FA0E31D93DD96FD9FDEF25F02CD954D9EB :1022500047EF0EF0DBCFE6FF50EF0EF014C02EF08C -:1022600015C02FF016C030F017C031F094EC25F0F7 +:1022600015C02FF016C030F017C031F090EC25F0FB :10227000A0EF12F0140EDBCF33F0150EDBCF34F0ED :10228000160EDBCF35F0170EEAEF12F0CEDD20C0D0 -:102290002EF021C02FF022C030F023C031F094EC9A +:102290002EF021C02FF022C030F023C031F090EC9E :1022A00025F032EF0EF06DD94CEC06F0E55212003D :1022B000FD0EDBCF2FF0FE0E1200FB0EDBCF2FF05A :1022C000FC0E1200F70EDBCFE6FFF80EDBCFE6FFC9 @@ -437,11 +437,11 @@ :1022E000EE500026EE500122EE500222EE50032264 :1022F000F8EF0EF07DD9D0DE50D92AD563EC05F089 :1023000073D1DECF2DF0DECF2EF0DECF2FF0DDCF7C -:1023100030F0DD52DD52120001EC26F02FC000F04B +:1023100030F0DD52DD521200FDEC25F02FC000F050 :1023200030C001F02FC0E6FF30C0E6FF1200D950E8 -:10233000380F37DDC6EF0FF0E66E07EC33F0E552ED +:10233000380F37DDC6EF0FF0E66E03EC33F0E552F1 :102340001200DECFE6FFDDCFE6FF1200DBCF36F076 -:1023500094EF25F0EECFE6FFEECFE6FFEECFE6FFFF +:1023500090EF25F0EECFE6FFEECFE6FFEECFE6FF03 :10236000EFCFE6FF1200010EA8DC0101010E556F50 :10237000566BEED4000EDFCF2FF0010E53EF12F0AC :1023800053EF12F0E66EE66A50EF0EF0E96EFF0EC4 @@ -449,20 +449,20 @@ :1023A000E6FF1200DBCF2FF0030E53EF12F0E66EC4 :1023B000E66A030EE66E15EF10F0020EF3CFDBFFB8 :1023C000030EF4CFDBFF1200BEDC41DC32EF0EF077 -:1023D000E1DD94EC25F054EF0EF003C02FF004C0C3 -:1023E00030F005C031F0120052DC6FDCAAEF24F0AF -:1023F000AADCFE0EDB041200E66E59EC32F0E55268 +:1023D000E1DD90EC25F054EF0EF003C02FF004C0C7 +:1023E00030F005C031F0120052DC6FDCA6EF24F0B3 +:1023F000AADCFE0EDB041200E66E55EC32F0E5526C :1024000012005BDC7CEF0EF04FDC08EF0FF0C2DD5A -:1024100041EF25F0800E066E3F0E076E2DDE04C0E4 +:102410003DEF25F0800E066E3F0E076E2DDE04C0E8 :10242000E6FF05C0E6FF06C0E6FF07C0E6FF0CC0FA :10243000E6FF0DC0E6FF0EC0E6FFE66E78DFE55270 :10244000E7CF0FF0E552E7CF0EF0E552E7CF0DF002 :10245000E552E7CF0CF0E552E7CF07F0E552E7CFC2 :1024600006F0E552E7CF05F0E552E7CF04F02DC0C6 :1024700010F02EC011F02FC012F030C013F07DDD2F -:1024800095DC94EC25F047DE02EF13F02DC0E6FF5B +:1024800095DC90EC25F047DE02EF13F02DC0E6FF5F :102490001AEF13F0330E336EE20E346EC20E356E49 -:1024A000420E366E1200DBCF30F07CEF24F02EC0EF +:1024A000420E366E1200DBCF30F078EF24F02EC0F3 :1024B00004F02FC005F030C006F031C007F0120064 :1024C0002EC00CF02FC00DF030C00EF031C00FF058 :1024D00047EF0EF0BD0E336E370E346E860E356E3E @@ -470,1101 +470,1095 @@ :1024F0000EF030C00FF012002EC014F02FC015F0F7 :1025000030C016F031C017F012006ADC0C0EDBCFC1 :102510000EF00D0EDBCF0FF00E0EDBCF10F00F0E16 -:102520001EDE07EF11F065EC0EF094EF25F008C009 +:102520001EDE07EF11F065EC0EF090EF25F008C00D :102530002EF009C02FF00AC030F00BC031F01200AD :102540002EC010F02FC011F030C012F031C013F0C7 :102550001200060EDBCFE6FF070E7CDE040EDBCF9B :10256000E6FF050E2AEF11F093EC0EF050DF4CDF82 -:102570006BD8AAEF24F047EC0EF06EEC0EF094EF5F +:102570006BD8A6EF24F047EC0EF06EEC0EF090EF67 :1025800025F0FE0EDBCFE6FF1200ACEC0EF02FC004 :10259000DEFF30C0DDFF07EF11F0030EE66E30EC1A :1025A00009F0E5521200F70EDBCF2FF0F80E120003 :1025B000C8DE50EC0EF00101010E546F1200E66E01 :1025C000E66AECDE15EF10F0FC0EDBCFE6FFFD0E49 -:1025D0002AEF11F0DBCF36F041EC25F054EF0EF08E +:1025D0002AEF11F0DBCF36F03DEC25F054EF0EF092 :1025E000B5DE99DDF4EF11F0E552E552E552120047 :1025F000E66E97EF08F0F90EDBCF2FF0FA0E53DFFF -:102600008BEF10F047EC0EF06EEC0EF041EC25F085 +:102600008BEF10F047EC0EF06EEC0EF03DEC25F089 :1026100054EF0EF010C02EF011C02FF012C030F0A9 -:1026200013C031F0ABEC24F060EF12F0BCDF3BDF05 +:1026200013C031F0A7EC24F060EF12F0BCDF3BDF09 :102630008BEF10F02EC0E6FF2FC0E6FF30C0E6FFA4 -:10264000120036DE53EF12F013DC18EF11F094ECA9 -:0626500025F030EF26F03A +:10264000120036DE53EF12F013DC18EF11F090ECAD +:0626500025F02CEF26F03E :0A265600DACFE4FFE2CFDAFFE9CFAC :10266000E4FFEACFE4FFF6CFE4FFF7CFE4FFF5CFD6 :10267000E4FFF3CFE4FFF4CFE4FFFACFE4FF00EE92 :1026800029F0140EE80403E3EECFE4FFFBD700EEDD -:1026900000F0290EE80403E3EECFE4FFFBD7ACEC37 -:1026A0001EF09EA013D0B6EC1EF001014D2B000EC3 +:1026900000F0290EE80403E3EECFE4FFFBD7A8EC3B +:1026A0001EF09EA013D0B2EC1EF001014D2B000EC7 :1026B0004E23E80E4D5D030E4E5905E34D6B4E6BF8 -:1026C0004F2B000E502327EC2CF09E90F2A003D04D -:1026D0002EEC04F0F290BFEC1EF002E2E16AE5524B -:1026E000E16EE552E7CFD9FFE55200EE28F0290E62 -:1026F000E80403E3E5CFEDFFFBD700EE3CF0140E5A -:10270000E80403E3E5CFEDFFFBD7E5CFFAFFE5CF24 -:10271000F4FFE5CFF3FFE5CFF5FFE5CFF7FFE5CF1A -:10272000F6FFE5CFEAFFE5CFE9FFE5CFDAFF1100DD -:10273000D8CFE4FFE0CFE4FFE46EDACFE4FFE2CFEE -:10274000DAFFF3CFE4FFF4CFE4FFACEC1EF0BFEC14 -:102750001EF002E2E16AE552E16EE552E7CFD9FFF1 -:10276000E552E5CFF4FFE5CFF3FFE5CFDAFFE55023 -:10277000E5CFE0FFE5CFD8FF100004D80AEC1FF04A -:1027800063D8FCD70F0EC11202D8D4EF1EF0CFECE5 -:102790001EF0E65283EC1EF00101696F070E695DC1 -:1027A00010E1E66A59EC32F0E552DF6E000EDF8090 -:1027B000C7EC1EF0E66A3AEC33F0E552DF70C7EC86 -:1027C0001EF01C0E9316D08EF28EF28CF286F30E53 -:1027D0008C1695160101476B486B496B4A6B010ECD -:1027E0004B6F92948094939881980D0EE66E7C0EB8 -:1027F000E66EE10EE66ECCEC31F0E552E552E552C4 -:10280000C70E921694943F0E9516010EE66E98EC44 -:1028100004F0E552838C808A82848088838E80864F -:102820008294010EE66E75EC33F0E55282849D8051 -:10283000C50EE66ECAEC32F0E552B6EC1EF0E5527B -:10284000E552E7CFD9FF1200D9CFE6FFE1CFD9FF9C -:102850000F0EE12601014B5102E0C8EC1DF0200EE5 -:102860000101005D03E36D50020B12E024EC0EF059 -:1028700000090CE0E66A010EE66E030EE66E52EC0D -:1028800009F0E552E552E55220EC0EF0BEEF1DF0E6 -:10289000010149514A1102E1000E08D049C1E9FF86 -:1028A0004AC1EAFFEF50800B01E0010E000947E149 -:1028B00001014651EA6A260FE96E010EEA22EF5045 -:1028C00000083DE20501406B01014C514C2B050114 -:1028D000416F0501040E426F01014651EA6A260F5D -:1028E000E96E010EEA22EFCF43F5400EE66E400E90 -:1028F000E66E050EE66E010EE66E010EE66E25EC46 -:1029000023F0006E050EE15E0050F3CF49F1F4CFE5 -:102910004AF101014651EA6A260FE96E010EEA22E8 -:10292000EF6A01014651000803E20101460707D0A2 -:1029300001014551000803E201011F0E466F01012C -:1029400049514A1102E1000E08D049C1E9FF4AC1CC -:10295000EAFFEF50800B01E0010E00092BE124ECAF -:102960000EF0000927E016EC0EF0000923E0050147 -:10297000406B01014C514C2B0501416F05010A0EC2 -:10298000426F0501436B0501010E486F400EE66E74 -:10299000400EE66E050EE66E010EE66E010EE66E68 -:1029A00025EC23F0006E050EE15E0050F3CF49F1F7 -:1029B000F4CF4AF101015151020A10E0030A01E08B -:1029C00021D0030EE66E7EEC2DF0E55217EC08F0F8 -:1029D000000903E00101020E516F16D0200EE66ED1 -:1029E000030EE66EC80EE66EE66AE80EE66E030EAD -:1029F000E66E51EC0AF0006E060EE15E0050010139 -:102A0000516B02D00101516B01014751481102E1A4 -:102A1000000E08D047C1E9FF48C1EAFFEF50800B24 -:102A200001E0010E000902E0BEEF1DF005010251B8 -:102A3000070A02E11FEF1DF00D0A01E16AD2010A47 -:102A400001E12AD20D0A01E1C2D1040A1AE0030A07 -:102A500007E0010A02E07DEF1DF0FF00BEEF1DF070 -:102A6000E66A59EC32F0E552DF6E000EDB80DFCF14 -:102A7000E6FFE66A39EC32F0E552E552FF00BEEFC0 -:102A80001DF0010149514A1102E1000E08D049C16F -:102A9000E9FF4AC1EAFFEF50800B01E0010E000997 -:102AA00001E093D100C540F50501416B0501030E1E -:102AB000426F0501436B05010851100A01E138D14D -:102AC0001F0A01E1FAD0080A01E1BCD0010A01E1C4 -:102AD0007ED0020A71E0070A64E0010A20E0030ADE -:102AE00006E0010A01E047D169C148F547D1050177 -:102AF000486B6F0E006E650E016E026A00C0E6FF45 -:102B000001C0E6FF02C0E6FF480EE66E050EE66E67 -:102B10001DEC32F0036E050EE15E03502FD105016E -:102B2000486B630E006E650E016E026A00C0E6FF20 -:102B300001C0E6FF02C0E6FF480EE66E050EE66E37 -:102B40001DEC32F0036E050EE15E0350610E006E67 -:102B5000650E016E026A00C0E6FF01C0E6FF02C01A -:102B6000E6FF480EE66E050EE66E1DEC32F0036ED3 -:102B7000050EE15E0350580E006E650E016E026A8E -:102B800000C0E6FF01C0E6FF02C0E6FF480EE66EA9 -:102B9000050EE66E1DEC32F0036E050EE15E03508D -:102BA000EDD092CF48F593CF49F594CF4AF595CF24 -:102BB0004BF596CF4CF5E2D080CF48F581CF49F563 -:102BC00082CF4AF583CF4BF584CF4CF5D7D0010E99 -:102BD000E66ECDEC2CF0E552010E2DC0DBFF020EAF -:102BE0002EC0DBFF030E2FC0DBFF040E30C0DBFF67 -:102BF000040EDBCF48F5030EDBCF49F5020EDBCF29 -:102C00004AF5010EDBCF4BF5020EE66ECDEC2CF053 -:102C1000E552010E2DC0DBFF020E2EC0DBFF030EBE -:102C20002FC0DBFF040E30C0DBFF040EDBCF4CF502 -:102C3000030EDBCF4DF5020EDBCF4EF5010EDBCFE1 -:102C40004FF59CD0010EE66EB2EC09F0E552010E94 -:102C50002DC0DBFF020E2EC0DBFF030E2FC0DBFFFB -:102C6000040E30C0DBFF040EDBCF48F5030EDBCFD4 -:102C700049F5020EDBCF4AF5010EDBCF4BF5020E14 -:102C8000E66EB2EC09F0E552010E2DC0DBFF020E3C -:102C90002EC0DBFF030E2FC0DBFF040E30C0DBFFB6 -:102CA000040EDBCF4CF5030EDBCF4DF5020EDBCF70 -:102CB0004EF5010EDBCF4FF561D0010EE66EDAEC7A -:102CC00009F0E552010E2DC0DBFF020E2EC0DBFF26 -:102CD000030E2FC0DBFF040E30C0DBFF040EDBCF82 -:102CE00048F5030EDBCF49F5020EDBCF4AF5010EA6 -:102CF000DBCF4BF5020EE66EDAEC09F0E552010E81 -:102D00002DC0DBFF020E2EC0DBFF030E2FC0DBFF4A -:102D1000040E30C0DBFF040EDBCF4CF5030EDBCF1F -:102D20004DF5020EDBCF4EF5010EDBCF4FF526D071 -:102D3000010EE66EF6EC09F0E552050EF3CFDBFF6F -:102D4000060EF4CFDBFF060EDBCF48F5050EDBCF1A -:102D500049F5020EE66EF6EC09F0E552050EF3CFEA -:102D6000DBFF060EF4CFDBFF060EDBCF4AF5050EC8 -:102D7000DBCF4BF503D00501020E436F400EE66E2C -:102D8000400EE66E050EE66E010EE66E010EE66E74 -:102D900025EC23F0006E050EE15E0050F3CF49F103 -:102DA000F4CF4AF1400EE66E000EE66E050EE66EBA -:102DB000E66A010EE66E25EC23F0006E050EE15E7C -:102DC0000050F3CF47F1F4CF48F1BEEF1DF00501FD -:102DD0000851030A37E0010A25E0030A13E0010A5B -:102DE00001E040D005010951921205010A519312E8 -:102DF00005010B51941205010C51951205010D515D -:102E0000961235D00501091D921605010A1D93166B -:102E100005010B1D941605010C1D951605010D1DD0 -:102E2000961625D00501091D891605010A1D8A1669 -:102E300005010B1D8B1605010C1D8C1605010D1DC2 -:102E40008D1615D005010951891205010A518A1202 -:102E500005010B518B1205010C518C1205010D510E -:102E60008D1205D0030EE66E07EC33F0E552400EEE -:102E7000E66E000EE66E050EE66EE66A010EE66E82 -:102E800025EC23F0006E050EE15E0050F3CF47F114 -:102E9000F4CF48F1BEEF1DF005010851020A09E028 -:102EA000030A01E01CD009C5E6FF7EEC2DF0E552D7 -:102EB0001BD009C5E6FF85EC2DF0E55224EC0EF0A1 -:102EC00000090CE0E66A010EE66E030EE66E52ECB7 -:102ED00009F0E552E552E55220EC0EF005D0010E66 -:102EE000E66E07EC33F0E552400EE66E000EE66E3D -:102EF000050EE66EE66A010EE66E25EC23F0006E26 -:102F0000050EE15E0050F3CF47F1F4CF48F1BEEF7C -:102F10001DF005010851060A02E1DEEF1CF0080A67 -:102F200002E19EEF1CF0030A02E198EF1CF0070A91 -:102F300002E139EF1CF0030A01E1E8D3010A01E1E3 -:102F4000FAD20F0A01E1E3D2020A01E19BD2150A8B -:102F500001E15FD2140A01E131D2070A01E103D293 -:102F6000010A01E1D5D1030A01E1A7D1010A01E17A -:102F7000A1D10C0A01E127D1030A01E195D0040A8D -:102F800002E006EF1DF00501090504E0030E05014E -:102F9000095D40E10AC5E6FF010EE66E39EC32F04C -:102FA000E552E5520BC5E6FF020EE66E39EC32F053 -:102FB000E552E5520CC5E6FF030EE66E39EC32F041 -:102FC000E552E5520DC5E6FF040EE66E39EC32F02F -:102FD000E552E5520EC5E6FF050EE66E39EC32F01D -:102FE000E552E5520FC5E6FF060EE66E39EC32F00B -:102FF000E552E55210C5E6FF070EE66E39EC32F0F9 -:10300000E552E55211C5E6FF080EE66E39EC32F0E6 -:10301000E552E552020E0501095D04E0030E0501CB -:10302000095D40E10AC5E6FF090EE66E39EC32F0B3 -:10303000E552E5520BC5E6FF0A0EE66E39EC32F0BA -:10304000E552E5520CC5E6FF0B0EE66E39EC32F0A8 -:10305000E552E5520DC5E6FF0C0EE66E39EC32F096 -:10306000E552E5520EC5E6FF0D0EE66E39EC32F084 -:10307000E552E5520FC5E6FF0E0EE66E39EC32F072 -:10308000E552E55210C5E6FF0F0EE66E39EC32F060 -:10309000E552E55211C5E6FF100EE66E39EC32F04E -:1030A000E552E5520BEF1DF000C540F50501416BFF -:1030B0000501030E426F0501436B010EE66E59ECEC -:1030C00032F0E5520501486F020EE66E59EC32F01F -:1030D000E5520501496F030EE66E59EC32F0E552F8 -:1030E00005014A6F040EE66E59EC32F0E552050117 -:1030F0004B6F050EE66E59EC32F0E55205014C6F50 -:10310000060EE66E59EC32F0E55205014D6F070EE2 -:10311000E66E59EC32F0E55205014E6F080EE66E90 -:1031200059EC32F0E55205014F6F090EE66E59EC8D -:1031300032F0E5520501506F0A0EE66E59EC32F09E -:10314000E5520501516F0B0EE66E59EC32F0E55277 -:103150000501526F0C0EE66E59EC32F0E552050196 -:10316000536F0D0EE66E59EC32F0E5520501546FC7 -:103170000E0EE66E59EC32F0E5520501556F0F0E5A -:10318000E66E59EC32F0E5520501566F100EE66E10 -:1031900059EC32F0E5520501576F400EE66E400ED5 -:1031A000E66E050EE66E010EE66E010EE66E25EC8D -:1031B00023F0006E050EE15E0050F3CF49F1F4CF2D -:1031C0004AF10BEF1DF0E66A010EE66E39EC32F0C3 -:1031D000E552E552010EE66E020EE66E39EC32F073 -:1031E000E552E552E66A030EE66E39EC32F0E5523E -:1031F000E552E66A040EE66E39EC32F0E552E5522D -:10320000E66A050EE66E39EC32F0E552E552E66A02 -:10321000060EE66E39EC32F0E552E552030EE66E2C -:10322000070EE66E39EC32F0E552E552E80EE66E36 -:10323000080EE66E39EC32F0E552E552E66A090E08 -:10324000E66E39EC32F0E552E552010EE66E0A0EFA -:10325000E66E39EC32F0E552E552E66A0B0EE66EA8 -:1032600039EC32F0E552E552E66A0C0EE66E39ECC6 -:1032700032F0E552E552E66A0D0EE66E39EC32F0B8 -:10328000E552E552E66A0E0EE66E39EC32F0E55292 -:10329000E552030EE66E0F0EE66E39EC32F0E552A3 -:1032A000E552E80EE66E100EE66E39EC32F0E552AD -:1032B000E552B1D317EC08F0AED3060E09C5DBFF1B -:1032C000050E0AC5DBFF080E0BC5DBFF070E0CC59C -:1032D000DBFF0A0E0DC5DBFF090E0EC5DBFF090E75 -:1032E000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FF04 -:1032F000080EDBCFE6FF050EDBCFE6FF060EDBCFC9 -:10330000E6FF51EC0AF0006E060EE15E005083D33A -:10331000060E09C5DBFF050E0AC5DBFF080E0BC54F -:10332000DBFF070E0CC5DBFF0A0E0DC5DBFF090E28 -:103330000EC5DBFF090EDBCFE6FF0A0EDBCFE6FF93 -:10334000070EDBCFE6FF080EDBCFE6FF050EDBCF77 -:10335000E6FF060EDBCFE6FF5AEC0AF0006E060E23 -:10336000E15E005058D3060E09C5DBFF050E0AC505 -:10337000DBFF080E0BC5DBFF070E0CC5DBFF0A0EDB -:103380000DC5DBFF090E0EC5DBFF090EDBCFE6FF27 -:103390000A0EDBCFE6FF070EDBCFE6FF080EDBCF22 -:1033A000E6FF050EDBCFE6FF060EDBCFE6FF63ECA4 -:1033B0000AF0006E060EE15E00502DD3060E09C520 -:1033C000DBFF050E0AC5DBFF080E0BC5DBFF070E92 -:1033D0000CC5DBFF0A0E0DC5DBFF090E0EC5DBFFBA -:1033E000090EDBCFE6FF0A0EDBCFE6FF070EDBCFD1 -:1033F000E6FF080EDBCFE6FF050EDBCFE6FF060E8D -:10340000DBCFE6FF74EC0AF0006E060EE15E0050C2 -:1034100002D3060E09C5DBFF050E0AC5DBFF080E49 -:103420000BC5DBFF070E0CC5DBFF0A0E0DC5DBFF6E -:10343000090E0EC5DBFF0C0E0FC5DBFF0B0E10C512 -:10344000DBFF11C5E6FF0B0EDBCFE6FF0C0EDBCF7B -:10345000E6FF090EDBCFE6FF0A0EDBCFE6FF070E25 -:10346000DBCFE6FF080EDBCFE6FF050EDBCFE6FF86 -:10347000060EDBCFE6FF83EC0AF0006E090EE15E7C -:103480000050C9D2060E09C5DBFF050E0AC5DBFFD9 -:10349000080E0BC5DBFF070E0CC5DBFF0A0E0DC5C2 -:1034A000DBFF090E0EC5DBFF0C0E0FC5DBFF0B0E9D -:1034B00010C5DBFF0E0E12C5DBFF0D0E13C5DBFFC3 -:1034C0000D0EDBCFE6FF0E0EDBCFE6FF11C5E6FFEC -:1034D0000B0EDBCFE6FF0C0EDBCFE6FF090EDBCFDA -:1034E000E6FF0A0EDBCFE6FF070EDBCFE6FF080E96 -:1034F000DBCFE6FF050EDBCFE6FF060EDBCFE6FFF8 -:10350000E1EC0BF0006E0B0EE15E005084D2060E73 -:103510000AC5DBFF050E0BC5DBFF050EDBCFE6FFA3 -:10352000060EDBCFE6FF09C5E6FF52EC09F0E552D7 -:10353000E552E55270D2060E0AC5DBFF050E0BC53B -:10354000DBFF080E0CC5DBFF070E0DC5DBFF0A0E07 -:103550000EC5DBFF090E0FC5DBFF090EDBCF2FF019 -:103560000A0EDBCF30F07AEC24F02EC008F02FC02A -:1035700009F030C00AF031C00BF0330E336EE20EAA -:10358000346EC20E356E420E366E08C02EF009C083 -:103590002FF00AC030F00BC031F094EC25F02EC0B3 -:1035A00004F02FC005F030C006F031C007F0CC0E9B -:1035B000336EBC0E346E8C0E356E3B0E366E04C010 -:1035C0002EF005C02FF006C030F007C031F094ECAB -:1035D00025F030EC26F02DC000F02EC001F02FC0F9 -:1035E00002F030C003F000C0E6FF01C0E6FF02C0F9 -:1035F000E6FF03C0E6FF070EDBCF2FF0080EDBCFA0 -:1036000030F07AEC24F02EC014F02FC015F030C04A -:1036100016F031C017F0330E336EE20E346EC20E68 -:10362000356E420E366E14C02EF015C02FF016C047 -:1036300030F017C031F094EC25F02EC010F02FC000 -:1036400011F030C012F031C013F0BD0E336E370EE2 -:10365000346E860E356E410E366E10C02EF011C0DF -:103660002FF012C030F013C031F094EC25F030ECA4 -:1036700026F02DC00CF02EC00DF02FC00EF030C083 -:103680000FF00CC0E6FF0DC0E6FF0EC0E6FF0FC056 -:10369000E6FF050EDBCF2FF0060EDBCF30F07AEC25 -:1036A00024F02EC01CF02FC01DF030C01EF031C021 -:1036B0001FF0330E336EE20E346EC20E356E420EC4 -:1036C000366E1CC02EF01DC02FF01EC030F01FC083 -:1036D00031F094EC25F030EC26F02DC018F02EC01F -:1036E00019F02FC01AF030C01BF018C0E6FF19C047 -:1036F000E6FF1AC0E6FF1BC0E6FF09C5E6FF97EC30 -:1037000008F0206E0D0EE15E205085D1060E0AC530 -:10371000DBFF050E0BC5DBFF080E0CC5DBFF070E3C -:103720000DC5DBFF0EC5E6FF070EDBCF2FF0080E41 -:10373000DBCF30F07AEC24F02EC008F02FC009F077 -:1037400030C00AF031C00BF0330E336EE20E346E2F -:10375000C20E356E420E366E08C02EF009C02FF034 -:103760000AC030F00BC031F094EC25F02EC004F00C -:103770002FC005F030C006F031C007F0CC0E336E1C -:10378000BC0E346E8C0E356E3B0E366E04C02EF0C1 -:1037900005C02FF006C030F007C031F094EC25F0E2 -:1037A00030EC26F02DC000F02EC001F02FC002F04A -:1037B00030C003F000C0E6FF01C0E6FF02C0E6FF34 -:1037C00003C0E6FF050EDBCF2FF0060EDBCF30F097 -:1037D0007AEC24F02EC014F02FC015F030C016F093 -:1037E00031C017F0330E336EE20E346EC20E356EFA -:1037F000420E366E14C02EF015C02FF016C030F0F9 -:1038000017C031F094EC25F02EC010F02FC011F04D -:1038100030C012F031C013F0BD0E336E370E346E6F -:10382000860E356E410E366E10C02EF011C02FF090 -:1038300012C030F013C031F094EC25F030EC26F0DB -:103840002DC00CF02EC00DF02FC00EF030C00FF0C8 -:103850000CC0E6FF0DC0E6FF0EC0E6FF0FC0E6FF9E -:1038600009C5E6FFDAEC08F0186E0A0EE15E1850A2 -:10387000D2D0060E0AC5DBFF050E0BC5DBFF0CC55B -:10388000E6FF050EDBCF2FF0060EDBCF30F07AEC33 -:1038900024F02EC008F02FC009F030C00AF031C06B -:1038A0000BF0330E336EE20E346EC20E356E420EE6 -:1038B000366E08C02EF009C02FF00AC030F00BC0E1 -:1038C00031F094EC25F02EC004F02FC005F030C08C -:1038D00006F031C007F0BD0E336E370E346E860E23 -:1038E000356E410E366E04C02EF005C02FF006C0B6 -:1038F00030F007C031F094EC25F030EC26F02DC00C -:1039000000F02EC001F02FC002F030C003F000C064 -:10391000E6FF01C0E6FF02C0E6FF03C0E6FF09C5FF -:10392000E6FF18EC09F00C6E060EE15E0C5073D049 -:1039300009C5E6FF30EC09F0E5526DD000C540F551 -:103940000501416B0501030E426F0501436B010E3A -:10395000E66E06EC0AF0E552050EF3CFDBFF060E2D -:10396000F4CFDBFF060EDBCF48F5050EDBCF49F5C4 -:10397000020EE66E06EC0AF0E552050EF3CFDBFF11 -:10398000060EF4CFDBFF080EDBCF4AF5070EDBCFC8 -:103990004BF5400EE66E400EE66E050EE66E010E2D -:1039A000E66E010EE66E25EC23F0006E050EE15E7C -:1039B0000050F3CF49F1F4CF4AF12DD000C540F5C6 -:1039C0000501416B0501030E426F0501436B16ECC7 -:1039D0000EF0000904E00501010E486F02D0050158 -:1039E000486B400EE66E400EE66E050EE66E010E6A -:1039F000E66E010EE66E25EC23F0006E050EE15E2C -:103A00000050F3CF49F1F4CF4AF105D0010EE66E34 -:103A100007EC33F0E552400EE66E000EE66E050E42 -:103A2000E66EE66A010EE66E25EC23F0006E050EEA -:103A3000E15E0050F3CF47F1F4CF48F19FD0010190 -:103A400049514A1102E1000E08D049C1E9FF4AC1BB -:103A5000EAFFEF50800B01E0010E00094DE101018A -:103A6000010E516F0501406B01014C514C2B0501BA -:103A7000416F0501050E426F0501436B0501486B5F -:103A8000440E006E650E016E026A00C0E6FF01C0C2 -:103A9000E6FF02C0E6FF480EE66E050EE66E1DEC80 -:103AA00032F0036E050EE15E0350400EE66E400EEE -:103AB000E66E050EE66E010EE66E010EE66E25EC74 -:103AC00023F0006E050EE15E0050F3CF49F1F4CF14 -:103AD0004AF1400EE66E000EE66E050EE66EE66AF0 -:103AE000010EE66E25EC23F0006E050EE15E00503F -:103AF000F3CF47F1F4CF48F141D0010149514A11C8 -:103B000002E1000E08D049C1E9FF4AC1EAFFEF50C7 -:103B1000800B01E0010E000931E100C540F505010F -:103B2000416B0501030E426F0501010E436F400E0C -:103B3000E66E400EE66E050EE66E010EE66E010EB6 -:103B4000E66E25EC23F0006E050EE15E0050F3CF2B -:103B500049F1F4CF4AF1400EE66E000EE66E050E16 -:103B6000E66EE66A010EE66E25EC23F0006E050EA9 -:103B7000E15E0050F3CF47F1F4CF48F10F0EE15C66 -:103B800002E2E16AE552E16EE552E7CFD9FF1200A9 -:103B900001015251531104E1100E526F270E536F61 -:103BA0005207000E535B6DA207D0525153112EE104 -:103BB0008C748CB413D027D00101005102E18C9495 -:103BC00022D0000502E18C8409D0020E005D02E1E2 -:103BD0008C8419D0040E005D03E18C948C86120055 -:103BE000100E005D06E10101525153110FE18C747A -:103BF0000AD0200E005D0AE101015251531106E185 -:103C00008C748CA402D08C9612008C861200120048 -:103C1000120012001200BDEF30F012001E0EE66E10 -:103C2000010EE66EF3EC22F0E552E552400EE66E30 -:103C3000000EE66E050EE66EE66A010EE66E25ECF7 -:103C400023F0006E050EE15E0050F3CF47F1F4CF94 -:103C500048F112006D840101080E6A6F070E6B6F48 -:103C60006A07000E6B5B6A516B11FAE16D941200EA -:103C7000D9CFE6FFE1CFD9FFFD0EDBCF2FF0FE0E4F -:103C8000DBCF30F0010E2F1801E1305033E0E8684F -:103C90002F1802E1E86830182BE0030E2F1801E11D -:103CA000305024E0040E2F1801E130501DE0020EC8 -:103CB0002F1801E1305016E0170E2F1801E1305097 -:103CC0000FE0160E2F1801E1305008E0150E2F18E6 -:103CD00001E1305001E010D0A1DF0FD09EDF0DD008 -:103CE0009ADF0BD096DF09D092DF07D091DF05D0A5 -:103CF00091DF03D0000001D000D0010E00D0E552CA -:103D0000E7CFD9FF12004BD8E652D0B202D0010E55 -:103D100015D0D0B802D0020E11D0D0B002D0030E10 -:103D20000DD0D0B602D0040E09D0FCAE02D0050EE4 -:103D300005D0FCAC02D0060E01D0070EDF6ED08895 -:103D4000D086D084D082D080FC9EFC9CDF50E5528F -:103D5000E552E7CFD9FF1200E65221D8020EE12644 -:103D6000F350DF6E010EF4CFDBFF1200C00EE66EE3 -:103D7000E00EE66EEBEC32F0E552E5521200DF5059 -:103D8000F36E010EDB50F46E020EE15C1200DFCF29 -:103D9000E6FFE66A39EC32F0E552E5521200D9CF7F -:083DA000E6FFE1CFD9FF12009C -:083DA800CCEC23F06A6A686AA2 -:103DB000FFEC23F06D8C6E6AAFEC23F06D9CDF6A34 -:103DC000E0EC23F010E2DF50040DF3CFE9FFF4CF75 -:103DD000EAFF000EE926040EEA22EE6AEE6AEE6AB7 -:103DE000EE6ADF2AEDD7160E706E68A604D0030EB9 -:103DF00075EC23F0FAD70101136B186B196B1A6B72 -:103E00006D98080E0B6F040E0C6F016B006BE55282 -:103E10008AEF23F0CCEC23F0010100510BE16D6A35 -:103E2000696AFFEC23F06DB602D06D86FCD7010104 -:103E3000010E006F000508E16DBA06D0686A696A74 -:103E400069806988020E006F6850040B07E06950B2 -:103E5000040B04E0020E75EC23F089D86DB247D054 -:103E60006850010B14E06950010B11E09DDF010166 -:103E7000040E006F0401200E026F040E036F080E83 -:103E8000016F006B8C0E0013E66A3EEC24F0685064 -:103E9000100B07E06950100B04E060D8040E75ECBD -:103EA00023F06850400B0BE06950400B08E006EC33 -:103EB00024F0020E7DEC23F0060E75EC23F0685022 -:103EC000200B04E06950200B01E035D86850020B4C -:103ED0000AE06950020B07E006EC24F0E668E668A9 -:103EE0005EEC24F06A6A040E0101005D02E2A19A10 -:103EF0001FD069A61CD0DF6A040EDF5C18E268A63A -:103F000016D06CCF20F1030E75EC23F0780E010172 -:103F1000201502E138D809D0000EE66EE66A200EC0 -:103F2000E66E010EE66E010EE8DBDF2AE5D7A19A08 -:103F3000E5528AEF23F070A00ED098EC23F0EF50FA -:103F4000800808E1D5DBEF50840804E198EC23F009 -:103F50008C0EEF6E7090050E75EF23F06984040EE1 -:103F6000C4DB6D82B8EC23F0040E7DEF23F0B8ECD7 -:103F700023F0030EC2DB6D92699468A403D0020E95 -:103F8000B4DBFBD71200CCEC23F0FD0E01012015B1 -:103F90003DE17E0E2015E8407F0B040DF3CF03F1C9 -:103FA000F4CF04F1000E0327040E042303C105F12E -:103FB00004C106F10575BCDBEF503C0BE842E8425A -:103FC0000D0822E1B5DB35EC24F0EECF00F0EFCFA9 -:103FD00001F0280E001816E1040E011813E16FEC31 -:103FE00024F0DF6AEDDB0EE2DF50E8EC23F0DF5077 -:103FF000EA6A200FE96E040EEA22E552E750EF6EFE -:10400000DF2AF0D70AD807D01AD805D0FD0E201520 -:10401000040801E122D8E5527DD36ADBEF50800B22 -:1040200002E066DBEF6A01010F6B106B146B156B1E -:10403000136B64D89DDB170E60DBB3EF21F0020E2B -:104040000101105D02E140EF22F034D8010121515D -:1040500002E13AEF24F0216B12009EDB49DBEF50C6 -:10406000400B01E0010EDF6E01010B75080E005DD3 -:1040700009E122C46EFF6E50000802E2100E01D06A -:10408000040E006F100513E173EC24F0A6D9020EA4 -:1040900001010F5D03E12CDB840E07D0DF5003E14B -:1040A00027DBC80E02D024DB880EEF6E01D002D8C9 -:1040B000E55230D32BDB0101106B1ADBEF6A040EE3 -:1040C0000B19006E0CC101F0DE6E0CC1DDFF19DBB7 -:1040D000EF6A18AF0CD01B511C1107E005D01CC1B2 -:1040E000FAFF01011B51F96EFADF0101189F020E60 -:1040F000E15C02E2E16AE552E16E0CD30401205179 -:10410000600BE842E842E842E842E842000901E088 -:10411000120021510C0A45E00B0A3FE00C0A31E085 -:10412000010A22E00B0A1EE0020A1CE0030A18E062 -:10413000080A10E0010A0CE00F0A08E0030A01E097 -:1041400012000101138F080E006F120033EF21F0EF -:104150009CEF22F00101010E116F010E126F0CD0C5 -:1041600074EF21F0D2EF20F024510101116F126B96 -:10417000020E1127010E12231381010E146F138FEB -:1041800012000101138F04012451EA6A020FE96E43 -:10419000010EEA2222C4EFFF1200EADA160E7DEFCA -:1041A00023F012007EDB040EE1260401220510E15B -:1041B00020511F0B00090CE10101138F030E0401B4 -:1041C000215D04E10101010E1F6F02D001011F6B8F -:1041D0000401225141E120511F0B02083DE124510D -:1041E0000F0B000939E00101138F040124BF05D032 -:1041F000A4DA070EE926010E04D09FDA0B0EE92699 -:10420000010ED2DA030E215D03E17BDA840E23D0A6 -:1042100024510F0B016A700F006E0F0E0122020E67 -:1042200000C0DBFF030E01C0DBFF020EDBCFE9FFA6 -:10423000030EDBCFEAFFEE90ED5224AF06D061DA39 -:10424000EF6ADF745EDA400E06D05BDA880EEF6E3E -:10425000DF7457DAC80EEF6E040EE15C02E2E16A29 -:10426000E552E16E57D2800E0401205D3CE1010170 -:10427000C00E136F04012351030A1EE0010A09E076 -:10428000030A2FE10101480E116F620E126F120E28 -:1042900022D0C3DAF20EF626620EA2DA020E010175 -:1042A000F76A1125F66E1251F7220900F5CF14F1C5 -:1042B0000A00F5CF15F11200030E225D0FE2ADDA10 -:1042C000F40EF626620E8CDA11C1F6FF12C1F7FF6A -:1042D0000800F5500101146F156B12000101136BFA -:1042E00012000101136B120011DA0401286B296B13 -:1042F00020511F0B020A11E0030A0CE0010A22E11F -:104300000101138F0401288101011F051BE1040134 -:10431000288318D00101138F15D00101138F0401D8 -:1043200024BF05D00ADA070EE926010E04D005DA0B -:104330000B0EE926010E38DAE4D9EF50040B02E047 -:10434000010E286F010113AF07D0280E116F040E64 -:10435000126F1381020E146F020EE15C02E2E16A39 -:10436000E552E16ED7D16D98010113BF08D018AFA7 -:1043700002D061DA2AD07EDABBD9840E27D018BFEA -:104380002BD0040120AF24D0010114510401265D7B -:10439000010115510401275904E226C414F127C470 -:1043A00015F11BD80101010E106FA1DA800EEF6E1E -:1043B000216BBED9EE52080EEF6E91DAB9D9840E98 -:1043C000EF6E010E216F8FDA93D9C80EEF6E1200D7 -:1043D000010131DAC80EEF6E120098D90101080E02 -:1043E000145D000E15590DE214C1DEFF15C1DDFF8D -:1043F0000F5102E1010E03D00F0506E1020E0F6F0F -:1044000003D0080EDE6EDD6A73D9EF9271D9EF909A -:104410006FD9010EDB50EF126BD9EE52DFCFEFFFF9 -:10442000000EDB50145F010EDB50155B280E1D6F74 -:10443000040E1E6F13B10FD0F7D91BE011C1F6FFA8 -:1044400012C1F7FF112B000E12230800F55096D968 -:10445000F3E2DB06F1D7E8D90CE011C1E9FF12C1A4 -:10446000EAFF112B000E1223EF5088D9F4E2DB068D -:10447000F2D7020EE15C02E2E16AE552E16E4AD156 -:1044800045D956D9EE52EFCFDFFFDFCF00F0005015 -:104490000101195D000E1A5903E219C1DFFF09D0AD -:1044A000DF50006E016AE850195D196F01501A590A -:1044B0001A6F010EDB6ADF50F36E010EDBCFF4FFE3 -:1044C000F350F45C10E2010EDB5082D916C1E9FF13 -:1044D00017C1EAFF162B000E1723E552E750EF6EC7 -:1044E000010EDB2AE8D7000ED8801955000E1A55A8 -:1044F0000DE2F4D854D91CD9EF50400B03E1EAD9AE -:10450000C80E02D0E7D9880EEF6E0FD0F0D9840E16 -:10451000EF6E1B511C1107E005D01CC1FAFF010111 -:104520001B51F96EFADF0101189F020EE15C02E2F5 -:10453000E16AE552E16EEED00101138F10D9010E50 -:10454000E66EE66AE66A020EE66E010EAFD922C496 -:1045500001F10401225104E10101100E006F12006B -:104560000101200E006F04D9150E7DEF23F0CED887 -:10457000000EDE6E040EDD6EE8D8040DF350006E02 -:10458000016A020E0F0B05E0D89001320032E806F6 -:10459000FBE1D89000360136D89000360136D9CFED -:1045A000E9FFDACFEAFF0050EE260150ED22A9D84C -:1045B000EF9EFD0EDB5002E16AD901D06DD9EA22EF -:1045C000DECFEEFFDDCFEDFF9CD8EF9C9AD8040E36 -:1045D000E926000EEA22EF8C020EE15C02E2E16ABB -:1045E000E552E16E97D092D8FE0EDB50016A700F53 -:1045F000006E0F0EDFD885D8FD0EDBCFEFFFDBA4FA -:1046000002D0E66AF5D8FD0EDBA203D0010EE66EFD -:10461000EFD8020EE15C02E2E16AE552E16E7AD087 -:1046200075D8FE0EDB5005E125D962D8840EEF6EF9 -:1046300005D08BD80CD989D8010F09D9020EE15CBD -:1046400002E2E16AE552E16E65D060D8FD0EDB5012 -:1046500002E022D901D01BD9A7D853D806D9FB0E26 -:10466000DBCFEEFFFC0EDBCFEDFF4BD8EE52FA0EA8 -:10467000DBCFEFFF400E45D8E850EF16880E41D84B -:10468000E850EF12FD0EDB5002E006D901D0FFD852 -:10469000EA22EF74DECF00F0DDCF01F000C0F3FFBF -:1046A00001C0F4FF020EE15C02E2E16AE552E16E54 -:1046B00031D0F7D8010EF36EFC0EDB5004E0D89039 -:1046C000F336E806FCE1F31C006EFD0EDBCFE9FFDC -:1046D000FE0EDBCFEAFF0050EF161CD0FBD8EE52E7 -:1046E000080EEF6EF7D835EF24F0E66E3EEF24F0BB -:1046F0000BC1E9FF0CC1EAFF1200E66EE66A5EEF4D -:1047000024F0DECFE9FFDDCFEAFF1200CAD8020EA7 -:10471000E1261200E552E7CFD9FF1200D6D86AEFA2 -:1047200024F0FE0EEA6ADB34FE0BEA36E96E120074 -:1047300003C1E9FF04C1EAFF120024510F0BE96E27 -:10474000EA6AD890E936EA361200FD0EDB50E8241A -:10475000026EFE0EDB50040DF35002241200000E18 -:10476000E66EE66AE66A710EE66E0F0E56EF24F00C -:10477000000EE66EE66AE66EE66A1200E66E1DC19F -:10478000E9FF1EC1EAFF1D2B000E1E23E552E75074 -:10479000EF6EDF06010E120084D8E6521200280EDA -:1047A000EE6E040EED6E1200EA22EECFDEFFEDCFCC -:1047B000DDFF1200012200C0DEFF01C0DDFF12009C -:1047C000DF50006E016A080E005C000E01581200F6 -:1047D000EA6A280FE96E040EEA22EF50E66E120034 -:1047E000F7220900F5CF11F10A00F5CF12F11200FE -:1047F000FE0EDBCFE6FFBBDEE552E5521200160EE1 -:104800006F6E9F0E6B6E7B0E696E1200010EE66E70 -:10481000E66A000EE66EE66A12002251F66EF76A4C -:10482000D890F636F7361200D9CFE9FFDACFEAFF93 -:10483000EE50ED101200020E106F5ADFEE52EF6ACA -:1048400057DFC80EEF6E4ADFAADF6AEF24F0040DCF -:10485000F3CF00F0F4CF01F0000E0026040EAADF23 -:10486000840E4FDFE850EF121200020EE926000E10 -:10487000EA2212003CD88C0EEF6E1200680EE66E33 -:104880000F0EE66E16DFE552E552E552120049DFE3 -:10489000070EE926010E120044DF0B0EE926010E79 -:1048A0001200D9CFE6FFE1CFD9FF1200E66E03EC8C -:1048B00032F0006E050EE15E0050120038EC1EF082 -:1048C000006E060EE15E00501200200EEE6E040E29 -:1048D000ED6E120005C1E9FF06C1EAFF120028DFF4 -:1048E000C4DF65EF24F004DFC0DFCFEF23F0F6DE96 -:0448F0008EEF23F034 -:0C48F400389E08D0389E30AE05D02F6CE6 -:10490000301EE86A3022388E30C02AF02FC029F0DD -:104910003C6A3B6A8E0E2B6E2C6AE1EF26F0389EC5 -:104920000CD0389E30AE09D02D6C2E1E2F1E301E9E -:10493000E86A2E222F223022388E30C02AF02FC073 -:1049400029F02EC03CF02DC03BF09E0E2B6E2C6A41 -:10495000E1EF26F0367E386A1DEC27F035EC27F0C3 -:1049600038B6C5EF26F038A20AD038AA03D038BE30 -:10497000C5EF26F038A4D1EF26F0CEEF26F038AA06 -:1049800005D038ACD1EF26F0CEEF26F038A00AD013 -:1049900038A808D038BE04D038A402D0DAEF26F008 -:1049A000DEEF26F03B6A2C6A3650315C3A6E10E33B -:1049B0002EC03CF02FC029F030C02AF031C039F0B1 -:1049C00033C02EF034C02FF035C030F0383A09D063 -:1049D00033C03CF034C029F035C02AF036C039F07D -:1049E0003A6C389E38BC388E39C02BF038B00DEF99 -:1049F00027F01A0E3A600DEF27F02B6A316A38A4BF -:104A000008D02E6C2F1E301E311EE86A2F22302255 -:104A1000312238AC08D03C6C291E2A1E2B1EE86AB5 -:104A200029222A222B222D6A3A5207E031343032D1 -:104A30002F322E322D323A2EF9D72E503C262F50BF -:104A4000292230502A2231502B222DC03BF0389E93 -:104A50002BAE0BD03B6C3C1E291E2A1E2B1EE86A77 -:104A60003C2229222A222B22388E2BA006D0D88045 -:104A70002A3229323C323B32392A39C02BF0E1EF5D -:104A800026F0386A1DEC27F035EC27F038B6C5EF74 -:104A900026F038A205D038BAC5EF26F0CCEF26F0C4 -:104AA00038BAD8EF26F038A005D038B8C5EF26F0D0 -:104AB000D8EF26F038B8CCEF26F02C6A7F0E3124E0 -:104AC0002B6EE86A2C2236502B5EE86A2C5A1A0E9E -:104AD000396E316A3B6A3C6A296A2A6A33502E5E13 -:104AE00034502F5A3550305A000E315A09E733509E -:104AF0002E2634502F2235503022000E312201D084 -:104B00003B8AD8902E362F3630363136D8903B3609 -:104B10003C3629362A36392EE1D730502F102E1048 -:104B2000D8A43B8AE1EF26F0386A1DEC27F035EC7B -:104B300027F038B6C5EF26F038A205D038B8C5EF53 -:104B400026F0CCEF26F038AA05D038B0C5EF26F015 -:104B5000CCEF26F038B002D038A802D0D8EF26F03B -:104B60002C6A365031242B6EE86A2C227E0E2B5E86 -:104B7000E86A2C5A3B6A3C6A296A2A6A3550300234 -:104B8000F4CF2AF0F3CF29F034503002F3503C2612 -:104B9000F4502922000E2A2235502F02F3503C26D1 -:104BA000F4502922000E2A2233503002F3503B26C3 -:104BB000F4503C22000E29222A2234502F02F350B6 -:104BC0003B26F4503C22000E29222A2235502E0288 -:104BD000F3503B26F4503C22000E29222A22335067 -:104BE0002F02F4503B26000E3C2229222A22345068 -:104BF0002E02F4503B26000E3C2229222A22E1EF0D -:104C000026F0386A1DEC27F038B60BEF26F038A2F4 -:104C10000ED038B405D07F0E306EFF0E2F6E1FD031 -:104C2000800E306E2F6A1BD0306A2F6A18D038B0D1 -:104C3000FBD78F0E3160EDD77E0E3164F5D78E0E27 -:104C4000315C05E0D89030322F32312AF8D738A4C1 -:104C500006D02F6C301EE86A302230AEE5D7120045 -:104C6000386A1DEC27F038B63AEF26F038A20FD09C -:104C700038B407D07F0E306EFF0E2F6E2E6E2D6E65 -:104C800025D0800E306E01D0306A000EF6D738B0D5 -:104C9000FBD72D6A9F0E3160EBD77E0E3164F4D7BF -:104CA0009E0E315C07E0D89030322F322E322D32FA -:104CB000312AF6D738A40AD02D6C2E1E2F1E301E96 -:104CC000E86A2E222F22302230AEDED7120070EC9E -:104CD00026F038B6000C38B0000C38A4000C010CDB -:104CE000386A1DEC27F035EC27F038B6120038AEE4 -:104CF00008D038A004D038A802D0388012003890EC -:104D000012003650315C0BE13550305C08E1345014 -:104D10002F5C05E133502E5C02E138801200D8A0F0 -:104D200002D0388E10D0315036C031F0366E30504F -:104D300035C030F0356E2F5034C02FF0346E2E5009 -:104D400033C02EF0336E3650315C10E0FF0F09E0B7 -:104D5000389038B403D038AE3884120038AE389466 -:104D60001200362AD89035323432333233502E5E28 -:104D700034502F5A3550305A30BEEAD7D8902E369C -:104D80002F363036312EF8D7C8D77F0E316EFF0E52 -:104D9000306E2F6E2E6E12007F0E38BEFF0E316EFB -:104DA00002D07F0E316E800E306E2F6A2E6AF3D7DE -:104DB00038AE04D0800E316E306AF7D7316A306A6F -:104DC000F4D72A5029103C103B10F8E02CBEF0D745 -:104DD0002ABE0CD02B502C10EBE0D8903B363C3642 -:104DE00029362A362B06D8A02C06F2D72C50D4E12F -:104DF0002B28D2E03BAE11D07F0E3B1402E13CA049 -:104E00000CD03C2AE86A29222A2207E3D8802A32D9 -:104E100029323C322B2A2B28BFE02B50C9E03CC062 -:104E20002EF029C02FF02A34306E2B30316E303204 -:104E3000319E38BE318ECBEF26F03036313602E36C -:104E40003884387E06E13880316A306A2F6A2E6AEB -:104E50001200312803E0D88030321200D89030326E -:104E600002E138821200388612003536363602E307 -:104E7000388C387E06E13888366A356A346A336A97 -:104E80001200362803E0D88035321200D89035322F -:104E9000EAE1388A120070EC26F038B6000C38B01F -:104EA000000C38B4000C010C376A35AE5DEF27F00A -:104EB000346C351EE86A3522371E30AE65EF27F0B8 -:104EC0002F6C301EE86A3022371E51EC33F030BEB2 -:104ED00075EF27F037AE000C2F6C301EE86A3022D9 -:104EE0002B6C2C1EE86A2C22000C37BE6CEF27F0CE -:044EF0003888FF0CF3 -:0C4EF400D9CFE6FFDACFE6FFE1CFD9FF0F -:104F0000E2CFDAFF1D0EE12402E3E168E652E16E32 -:104F100067DAFA0EDBCFEEFFFB0EDBCFEEFFFC0E07 -:104F2000DBCFEEFFFD0EDBCFEEFFD950040FE66EB8 -:104F3000000EDA20E66E0BDAA2EC2FF0006E060E01 -:104F4000E15C02E2E16AE552E16E0050E76E0B0EB1 -:104F5000E7CFDBFFDB50800807E10A0EDB6ADE6883 -:104F6000DE68DE687F0E13D00B0EDB0405E1DE6A1F -:104F7000DE6ADE6ADD6AA6D10B0EDB50040809E1A9 -:104F8000DB0EDE6E0F0EDE6EC90EDE6E3F0EDD6EC8 -:104F900099D1DDD91EDA2DC0DEFF2EC0DEFF2FC075 -:104FA000DEFF30C0DDFFDD52DD52DBD90DDA3F0E12 -:104FB00020DA23E12E6A2F6A800E306E3F0E316EAA -:104FC000DECF33F0DECF34F0DECF35F0DDCF36F09C -:104FD000DD52DD5241EC25F02EC0DFFF010E2FC067 -:104FE000DBFF020E30C0DBFF030E31C0DBFF020E21 -:104FF000F36E0C0EF3CFDBFF02D00C0EDB6AB1D9DF -:10500000A30E336E300E346E890E356E3E0EF1D91E -:105010006CE1AF0E2E6E670E2F6E3B0E306E3F0EA4 -:10502000316EB2D92EC008F02FC009F030C00AF09E -:1050300031C00BF0C9D93F0E366EAAEC24F02EC059 -:1050400004F02FC005F030C006F031C007F0C8D919 -:10505000EECF0CF0EECF0DF0EECF0EF0EFCF0FF065 -:105060000CC033F00DC034F00EC035F00FC036F078 -:10507000ABEC24F080D9D70E146EB30E156EDD0E96 -:10508000166E3F0E176EACD9EECF18F0EECF19F0BA -:10509000EECF1AF0EFCF1BF018C033F019C034F088 -:1050A0001AC035F01BC036F014C02EF015C02FF01A -:1050B00016C030F0316EABEC24F02EC010F02FC0D3 -:1050C00011F030C012F031C013F02EC033F02FC0F9 -:1050D00034F030C035F031C036F035D941EC25F030 -:1050E0005FD9DD52DD520C0EDB2A31D972D92DC0C9 -:1050F00000F02EC001F02FC002F030C003F064D9E0 -:10510000390E366E2DC02EF07AD967EC26F0010AE2 -:1051100001E1B5D04ED938D90D0E2EC0DBFF0E0EF1 -:105120002FC0DBFF0F0E30C0DBFF100E31C0DBFFE6 -:10513000910E2E6E860E2F6E500E306EBD0E316E9D -:105140000D0EDBCF33F00E0EDBCF34F00F0EDBCFC6 -:1051500035F0100E4AD90FD9F60E336E100E346E9C -:10516000F10E356EBE0E366EABEC24F0110E2EC075 -:10517000DBFF120E2FC0DBFF130E30C0DBFF140E5F -:1051800031C0DBFF0D0EDBCF00F00E0EDBCF01F0E8 -:105190000F0EDBCF02F0100EDBCF03F0D30E336E19 -:1051A000CC0E346EB40E356E3F0E366ECCD8ABECF2 -:1051B00024F0150E2EC0DBFF160E2FC0DBFF170EDE -:1051C00030C0DBFF180E31C0DBFF0D0EDBCF2EF041 -:1051D0000E0EDBCF2FF00F0EDBCF30F0100EDBCF3B -:1051E00031F0110EDBCF33F0120EDBCF34F0130EA3 -:1051F000DBCF35F0140EF9D8150EDBCF33F0160ED9 -:10520000DBCF34F0170EDBCF35F0180EDBCF36F0E6 -:1052100041EC25F0B0D8190E2EC0DBFF1A0E2FC0BE -:10522000DBFF1B0E30C0DBFF1C0E31C0DBFFC1D823 -:10523000190EDBCF33F01A0EDBCF34F01B0EDBCFB1 -:1052400035F01C0ED2D897D8CBD8EECF2EF0EECFBB -:105250002FF0EECF30F0EFCF31F000C033F001C0CF -:1052600034F002C035F003C036F0ABEC24F031C0AE -:10527000EDFF30C0EDFF2FC0EDFF2EC0EFFF0C0E95 -:10528000DB0409E1920E006E0A0E016E060E3FD895 -:10529000ABEC24F016D00C0EDB50020806E1DB0E5E -:1052A000006E0F0E016EC90E09D00C0EDB50030804 -:1052B0000BE1920E006E0A0E016E860E28D8AAEC43 -:1052C00024F06ED8DD52DD520A0EDB500AE049D8D8 -:1052D0007BD8BF0E366E37D894EC25F061D8DD52FE -:1052E000DD52DECF2DF0DECF2EF0DECF2FF0DDCF82 -:1052F00030F0DD52DD521D0EE15C02E2E16AE55262 -:10530000E16EE552E5CFDAFFE7CFD9FF1200026E7A -:105310003F0E036E65D8EECF04F0EECF05F0EECF72 -:1053200006F0EFCF07F004C033F005C034F006C03C -:1053300035F007C036F000C02EF001C02FF002C0DB -:1053400030F0316E120000C02EF0FFEF29F048D887 -:10535000EECFE6FFEECFE6FFEECFE6FFEFCFE6FFC4 -:1053600012003ED8EECF00F0EECF01F0EECF02F00B -:10537000EFCF03F012002EC000F02FC001F030C0BC -:1053800002F031C003F01200000EDFCF33F0010E47 -:10539000DBCF34F0020EDBCF35F0030EF5EF29F052 -:1053A0002EC0DEFF2FC0DEFF30C0DEFF31C0DDFFCC -:1053B0001200DECF2EF0DECF2FF0DECF30F0DDCFCB -:1053C00031F0DD52DD521200336A346A800E356EE0 -:1053D00012006FEC32F0E552E552E552E552120050 -:1053E000D9CFE9FFDACFEAFF1200DBCF36F094EF36 -:1053F00025F0366EA8DF4BEC27F0010A120001C041 -:0C5400002FF002C030F003C031F01200A9 -:04540C00D9CFE6FF0F -:10541000DACFE6FFE1CFD9FFE2CFDAFF240EE124B5 -:1054200002E3E168E652E16ED950FA0FE96EFF0E31 -:10543000DA20EA6E020EEECFDBFF030EEECFDBFFCB -:10544000040EEECFDBFF050EEECFDBFFE8D9F2D97D -:10545000A2EC2FF0006E060EE15C02E2E16AE5527A -:10546000E16E0050E76E0D0EE7CFDBFFDB508008EA -:1054700015E0A0D9336A346A356A366A00C02EF066 -:1054800001C02FF002C030F003C031F067EC26F00D -:10549000010A10E1210E0101466F476B020EDB6825 -:1054A000030EDB68040EDB687F0EF36E050EF3CF90 -:1054B000DBFF66D10D0EDB50050B01E061D10A0E5A -:1054C000DBCF00F00B0EDBCF01F0830E0026FF0ECA -:1054D000012200C0DEFF01C0DDFFD950060F65D9F3 -:1054E00076D9DF50010B0FE0DF06010E01E2DB068B -:1054F000D950180F5AD9D890EF36010EEB36020E5C -:10550000EB36030EEB36D9CFE9FFDACFEAFF020E16 -:10551000346E356AEECF2FF0EDCF30F054EC27F03B -:105520002FC0EEFF30C0EDFF140EDB6A150EDB6AF4 -:10553000160EDB6A170EDB6A1C0EDB6A1D0EDB6AB9 -:105540001E0EDB6A010EF36E1F0EF3CFDBFF010EA2 -:10555000F36E0E0EF3CFDBFF0F0EDB6A0E0EDBCF0A -:1055600000F00F0EDBCF01F0D890015004E61A0EC8 -:10557000005C000E015801E398D0180EDBCF00F05C -:10558000190EDBCF01F01A0EDBCF02F01B0EDBCFC2 -:1055900003F0010E1F0B07E0D890003601360236EB -:1055A0000336E806F9E1180E00C0DBFF190E01C052 -:1055B000DBFF1A0E02C0DBFF1B0E03C0DBFF140E65 -:1055C000DBCF08F0150EDBCF09F0160EDBCF0AF0AB -:1055D000170EDBCF0BF0010E1F0B07E0D89008363B -:1055E00009360A360B36E806F9E1D9501C0FDDD82A -:1055F0000850EE24046E0950EE20056E0A50EE208D -:10560000066E0B50EE20076ED950180FCED80450FE -:10561000EE5C006E0550EE58016E0650EE58026EBC -:105620000750EE58036E200E00C0DBFF210E01C0B4 -:10563000DBFF220E02C0DBFF230E03C0DBFF200EC8 -:10564000DBCF2EF0210EDBCF2FF0220EDBCF30F0A0 -:10565000230EDBCF31F03134000E311809E6D8804B -:10566000000E2E54000E2F54000E3054000E3154F4 -:1056700011E2D950200F99D8AAD8D8D81C0EDB50E7 -:10568000EE121D0EDB50EE121E0EDB50EE121F0E40 -:10569000DB50EE12D9501C0F88D8AFD80E0EDB2A83 -:1056A0000F0E01E25BD7DB2A59D7C9D8100E00C014 -:1056B000DBFF110E01C0DBFF180EDBCF2FF0190E40 -:1056C000DBCF30F0120E2FC0DBFF130E30C0DBFF3C -:1056D000ADD893D8D950100F68D8EE50ED1012E025 -:1056E000D950120F62D8EE50ED1006E1A8D8005044 -:1056F00001100210031006E099D8EE2A000EEE22E7 -:10570000EE22EE220C0EDB6A91D8060EEECFDBFF06 -:10571000070EEECFDBFF080EEECFDBFF090EEECF5C -:10572000DBFF7E0EF36E0A0EF3CFDBFF0B0EDB6AA0 -:10573000D950020FE66E000EDA20E66E70D830EC1B -:1057400030F0E552E552E552E552DECFE6FFDDCF1F -:10575000E6FF70D806EC2FF0006E060EE15C02E268 -:10576000E16AE552E16E0050020E2DC0DBFF030E30 -:105770002EC0DBFF040E2FC0DBFF050E30C0DBFFA9 -:1057800019D800C02DF001C02EF002C02FF003C0C8 -:1057900030F0240EE15C02E2E16AE552E16EE5528E -:1057A000E5CFDAFFE7CFD9FF1200E96E000EDA206D -:1057B000EA6E1200020EDBCF00F0030EDBCF01F029 -:1057C000040EDBCF02F0050EDBCF03F01200180E43 -:1057D000EECFDBFF190EEECFDBFF1A0EEECFDBFFB5 -:1057E0001B0EEECFDBFF1200EECFE6FFEECFE6FFA3 -:1057F000EECFE6FFEFCFE6FF1200D890030EEB32BC -:10580000020EEB32010EEB32EF321200EE500016B8 -:10581000EE500116EE500216EE5003161200D9504B -:10582000060FE66E000EDA20E66E1200D950140F55 -:10583000D5EF2BF0D950020FB8DFF4EF2BF0010EAB -:0E584000006E016A026A036AF1DF06EF2CF0C7 -:02584E009ED9E1 -:10585000E65201016C51040A45E0070A2DE0010AF5 -:1058600023E0030A0BE0010A01E094D0870EE66E04 -:1058700022EC33F0E5520101010E32D09EEC33F000 -:10588000000901E088D06BD901AE02D0026803683C -:105890006DC1E9FFEA6AE9BEEA683ED9B00EE926C1 -:1058A000000E4FD9020E1CD08F0EE66E22EC33F0A4 -:1058B000E5520101030E14D09EEC33F000096BE1B8 -:1058C0004ED901AE02D0026803686DC1E9FFEA6AF1 -:1058D000E9BEEA6821D9D80EE926000E32D9040EB5 -:1058E0006C6F59D06D2B0A0EE76E6D19E8AE02D0C1 -:1058F000E73402D0E7506D5D4BE36D6B6EC1E9FF9D -:10590000EA6AE9BEEA685ED9EA22EE6AEE6AEE6AFF -:10591000EE6A6EC1E9FFEA6AE9BEEA6858D9EA228E -:10592000EE6AEE6AEE6AEE6ADF6A2AD9E8AE02D063 -:10593000E73402D0E750005C1EE2DFCFE9FFEA6AFD -:10594000E9BEEA68E9D8B00EE926000EF5D8E9BE4E -:10595000EA6838D901D9DFCFE9FFEA6AE9BEEA6827 -:10596000DBD8D80EE926000EE7D8E9BEEA682FD9C1 -:10597000F3D8DF2ADAD701016E2B0A0EE76E6E1913 -:10598000E8AE02D0E73402D0E7506E5D01E36E6B03 -:105990006C6B01D06C6BE552FED0F8D8050EE12699 -:1059A000010EDB6A020EDB6A030EDB6A040EDB6AA1 -:1059B000FE0EDB0411E1DF6AE3D8E8AE02D0E73483 -:1059C00002D0E750005C27E2DFCFE9FFEA6AE9BED8 -:1059D000EA68F8D8A8D8F0D7FE0EDB50020811E12B -:1059E000DF6ACED8E8AE02D0E73402D0E750005CE0 -:1059F00012E2DFCFE9FFEA6AE9BEEA68E8D893D8A5 -:105A0000F0D70C0EE66E07EC33F0E5522D6A2E6AE5 -:105A10002F6A306A6CD0010EDBCF18F0020EDBCF9C -:105A200019F0030EDBCF1AF0040EDBCF1BF018C009 -:105A30002DF019C02EF01AC02FF01BC030F091ECE1 -:105A400024F02EC014F02FC015F030C016F031C075 -:105A500017F08ED82EC010F02FC011F030C012F009 -:105A600031C013F085D82EC00CF02FC00DF030C01F -:105A70000EF031C00FF0336A346AA00E356E400E5E -:105A8000366E94EC25F02EC008F02FC009F030C01F -:105A90000AF031C00BF0336AC00E346E7F0E356EE3 -:105AA000440E366E41EC25F02EC004F02FC005F0F8 -:105AB00030C006F031C007F0336A346A200E356E0C -:105AC000400E366EAAEC24F02EC000F02FC001F07C -:105AD00030C002F031C003F0336A500E346E430E12 -:105AE000356E460E366E94EC25F030EC26F0050E41 -:105AF000E15C02E2E16AE552E16E4DD047D8FE0E6C -:105B0000DBB08084DBB2818846D040D8FE0EDBB0AB -:105B10008094DBB281983FD0D890E936EA36D890AD -:105B2000E936EA3612003BD8D950010FE96EDACFD8 -:105B3000EAFF3FD8DF2A120032D86EC1E9FFEA6AD5 -:105B40001200EA2200C0EEFF01C0EEFF02C0EEFF2D -:105B500003C0EEFF01011200EA22D9EF2DF08EEC16 -:105B600033F0F3CF00F0F4CF01F0026A036A1200C1 -:105B7000336A346A200E356E410E366E41EF25F0E1 -:105B8000DFCF00F00A0EE76E00181200D9CFE6FF53 -:105B9000E1CFD9FF1200E552E7CFD9FF1200EA2288 -:105BA000EECF00F0EECF01F0EECF02F0EFCF03F03A -:105BB00012000050EE260150EE220250EE22035059 -:105BC000EE221200A9DF600EE926000E1200A4DF0B -:085BD000880EE926000E120008 -:085BD800D9CFE6FFDACFE6FFAA -:105BE000E1CFD9FFE2CFDAFF140EE12402E3E1684E -:105BF000E652E16ED950040FE66E000EDA20E66E32 -:105C0000D950F60FDAD802E2E16AE552E16E0050AF -:105C1000E76E120EE7CFDBFFD9500B0FE66E000EDA -:105C2000DA20E66ED950FA0FC8D802E2E16AE552EE -:105C3000E16E0050E76E130EE7CFDBFFDBCFE6FF30 -:105C4000120EDB50E552E710800B0EE1120EDB5016 -:105C5000040804E1130EDB50040806E0120EDB0416 -:105C60000DE1130EDB040AE1210E0101466F476BC3 -:105C7000DE68DE68DE687F0EDD6E87D0FA0EDBCF71 -:105C80002EF0FB0EDBCF2FF0FC0EDBCF30F0FD0E45 -:105C9000DBCF31F0F60EDBCF33F0F70EDBCF34F095 -:105CA000F80EDBCF35F0F90EDBCF36F041EC25F006 -:105CB0002EC004F02FC005F030C006F031C007F050 -:105CC00097D831C0E6FF6FEC32F0E552E552E5526D -:105CD000E5522DC000F02EC001F02FC002F030C000 -:105CE00003F02DC0E6FF84D87AEC27F0E552E552A8 -:105CF000E552E5522DC0DEFF2EC0DEFF2FC0DEFFD5 -:105D000030C0DDFFDD52DD520A0EDB5023E0DB0E3A -:105D1000006E0F0E016E490E026E400E036ED9CF5B -:105D2000E9FFDACFEAFFEECF04F0EECF05F0EECFD9 -:105D300006F0EFCF07F004C033F005C034F006C022 -:105D400035F007C036F05BD8316EAAEC24F047D8A6 -:105D5000DD52DD52110EDB501AE0D9CFE9FFDACF68 -:105D6000EAFFEECF00F0EECF01F0EECF02F0EFCF82 -:105D700003F0336A346A800E356EBF0E366E3FD83C -:105D800003C031F094EC25F02AD8DD52DD52DECF8D -:105D90002DF0DECF2EF0DECF2FF0DDCF30F0DD5254 -:105DA000DD52140EE15C02E2E16AE552E16EE55279 -:105DB000E5CFDAFFE7CFD9FF1200E96EFF0EDA2058 -:105DC000EA6EEECFE6FFEECFE6FFEECFE6FFEFCFD7 -:105DD000E6FFA2EC2FF0006E060EE15C12002EC072 -:105DE000DEFF2FC0DEFF30C0DEFF31C0DDFF12005E -:105DF0002EC0E6FF2FC0E6FF30C0E6FF120000C055 -:0C5E00002EF001C02FF002C030F01200A4 -:045E0C0096D8E1CF74 -:105E1000D9FFE2CFDAFF0C0EE12402E3E168E6529B -:105E2000E16ED950FA0FE96EFF0EDA20EA6E080E25 -:105E3000EECFDBFF090EEECFDBFF0A0EEECFDBFF6E -:105E40000B0EEECFDBFF79D8D950080FE96E000EAC -:105E5000DA20EA6EEECFE6FFEECFE6FFEECFE6FF0A -:105E6000EFCFE6FFA2EC2FF0006E060EE15C02E23F -:105E7000E16AE552E16E0050E76E070EE7CFDBFF07 -:105E8000DB50840B3AE1070EDB041AE1060EDB500F -:105E900006E0006A016A026A800E036E04D0006A9E -:105EA000016A026A036A080E00C0DBFF090E01C026 -:105EB000DBFF0A0E02C0DBFF0B0E03C0DBFF1DD0B1 -:105EC000F80EDBCF00F0F90EDBCF01F0D950040F54 -:105ED000E96E000EDA20EA6E0050EE260150ED2247 -:105EE000D950080FE66E000EDA20E66E26D830ECA8 -:105EF00030F0E552E552E552E552080EDBCF00F0F6 -:105F0000090EDBCF01F00A0EDBCF02F00B0EDBCF68 -:105F100003F000C02DF001C02EF002C02FF003C02E -:105F200030F00C0EE15C02E2E16AE552E16EE5520E -:105F3000E5CFDAFFE7CFD9FF1200D9CFE6FFDACFFE -:045F4000E6FF120066 -:0C5F4400D9CFE6FFDACFE6FFE1CFD9FFAE -:105F5000E2CFDAFFE652006801687F0E026E036A44 -:105F6000D950FA0FE96EFF0EDA20EA6EEE500016F5 -:105F7000EE500116EE500216EE5003166AD800C01D -:105F8000EEFF01C0EEFF02C0EEFF03C0EEFFFD0E0C -:105F9000DB50800B02E0010E01D0000EE66E59D8F6 -:105FA000060EE926000EEA22E552E750EF6EFC0EDF -:105FB000DBCF00F0FD0EDBCF01F0D89000360136CC -:105FC000FC0E00C0DBFFFD0E01C0DBFFDB50E66E08 -:105FD00040D8040EE926000EEA22E552E750EE6EA4 -:105FE000ED6AFD0EDB50006E016AFF0E001818E12D -:105FF000015016E12ED8EECF00F0EECF01F0EECF3B -:1060000002F0EFCF03F0005001100210031006E081 -:10601000210E0101466F476B800E0BD0040E09D094 -:10602000FD0EDB5008E115D8EE6AEE6AEE6AEE6A04 -:10603000010EDF6E06D0020EDF6E0BD8EE52EE526E -:10604000EE8EDF50E552E552E5CFDAFFE7CFD9FF1C -:106050001200F80EDBCFE9FFF90EDBCFEAFF1200EA -:10606000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFF03 -:106070005BD8013411E20050FE08000E01540CE21E -:1060800076D805E06CD8800EEE6EEE6847D067D803 -:10609000800EEE6E7F0E0ED047D8D890015004E6E9 -:1060A000010E005C000E01580BE261D805E057D8E4 -:1060B000EE6A800EEE6E32D052D8EE6AEE6A2ED0C4 -:1060C00047D8EECF00F0EECF01F0EECF02F0EFCFE9 -:1060D00003F032D800C0EEFF01C0EEFF02C0EEFFB9 -:1060E00003C0EEFF21D80050010B05E025D8020EB9 -:1060F0003AD8EF8E04D020D8020E35D8EF9E14D8AF -:10610000D8900132003218D8030E2DD800C0EFFF0E -:106110001AD804E011D8030E26D8EF8EE552E5CF49 -:10612000DAFFE7CFD9FF120013D8040E1CD8EECF48 -:1061300000F0EFCF01F01200FA0EDBCFE9FFFB0E0B -:10614000DBCFEAFF120004D8060E0DD8EF50120084 -:10615000FC0EDBCFE9FFFD0EDBCFEAFF1200ECDF28 -:10616000EE6AEE6A1200E926000EEA221200220E02 -:0A6170000101466F476BA3EF30F00A -:06617A00040120511F0B7F -:10618000010801E01200245101E01200060E215D19 -:1061900021E12351230A1BE0010A0CE0030A1AE162 -:1061A0000101010517E101016C0E116F620E126F02 -:1061B000090E09D0010101050DE10101D50E116F94 -:1061C000620E126F1D0E146F156BC00E02D001010E -:1061D000800E136F04012051600BE842E842E84250 -:1061E000E842E842010801E0120021510B0A26E0D2 -:1061F000080A19E0090A11E0080A05E00B0A23E081 -:10620000080A21E0120001016F0E116F010E126FDA -:10621000010E146F156BC10E0FD00101800E136FAC -:1062200023C46FF112000101700E116F010E126F85 -:10623000010E146F156B810E136F12000101800E99 -:08624000136F22C470F112007B -:08624800120100020000000831 -:10625000D804030002000102000109022900010123 -:1062600000C03209040000020300000009211101EE -:106270000001221D000705810340000107050103FD -:10628000400001040309042C034D006F0062006903 -:10629000006C006500200052006F0062006F007407 -:1062A00000200050006C006100740066006F0072F6 -:1062B000006D0022034D006F0074006F007200201B -:1062C0000043006F006E00740072006F006C006C81 -:1062D00000650072000600FF0901A10119012940B3 -:1062E000150026FF0075089540810019012940918D -:0A62F00000C05A6283628762B36245 -:0662FA002A0EF66E080EEC -:10630000F76E000EF86E01010900F550646F090088 -:10631000F550656F03E1646701D03DD00900F55089 -:106320005F6F0900F550606F0900F550616F09005B -:106330000900F550E96E0900F550EA6E0900090000 -:1... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-17 20:46:14
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via ae44815bfc0c54ff4b99e56c1ed95498973bbc49 (commit) from 1a98cc1a882658e4100bc99f990fd972304ed99e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ae44815bfc0c54ff4b99e56c1ed95498973bbc49 Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 17 21:45:50 2010 +0100 Corrected bug on trajCompleted ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index e1266e8..a653410 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -10,7 +10,7 @@ volatile BOOL trajLoaded = 0; volatile BOOL trajEngaged = 0; -volatile BOOL trajCompleted = 0; +volatile BYTE trajCompleted = 0; volatile DWORD posRight = 0; volatile DWORD posLeft = 0; @@ -21,7 +21,7 @@ void checkLM629Interrupt(void) { // Toutes les interruptions non masqu doivent e traitici dans le cas de la mode LM_INTERRUPT. BYTE statusRight = readStatus(MOTOR_RIGHT); BYTE statusLeft = readStatus(MOTOR_LEFT); - char axis = 0; + char axis; // Bit 1: Command-Error Interrupt if ((statusRight & LM_COMMAND_ERROR) || (statusLeft & LM_COMMAND_ERROR)) { @@ -30,9 +30,17 @@ void checkLM629Interrupt(void) { } // Bit 2: Trajectory-Complete Interrupt - if ((statusRight & LM_TRAJECTORY_COMPLETE) && (statusLeft & LM_TRAJECTORY_COMPLETE)) { - trajCompleted = 1; - resetInterrupt(MOTOR_BOTH, LM_TRAJECTORY_COMPLETE); + axis = 0; + + if (statusRight & LM_TRAJECTORY_COMPLETE) + axis|= MOTOR_RIGHT; + + if (statusLeft & LM_TRAJECTORY_COMPLETE) + axis|= MOTOR_LEFT; + + if (axis > 0) { + trajCompleted = axis; + resetInterrupt(axis, LM_TRAJECTORY_COMPLETE); } // Bit 3: Index-Pulse Interrupt -- Not implemented @@ -46,6 +54,8 @@ void checkLM629Interrupt(void) { } // Bit 6: Breakpoint Interrupt + axis = 0; + if (statusRight & LM_BREAKPOINT) axis|= MOTOR_RIGHT; @@ -1081,7 +1091,7 @@ void goTo(short x, short y, short vel, short acc, BYTE mode, short d) { BOOL isTrajComplete(void) { // Delay10KTCYx(12); // attends 120000 cycles, 8 MHz / 4 = 10 ms - if (trajCompleted) { + if ((trajCompleted & MOTOR_RIGHT) && (trajCompleted & MOTOR_LEFT)) { trajEngaged = 0; return TRUE; } diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index ff89231..cde4e46 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index df1a37f..17911fd 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,1562 +1,1570 @@ :020000040000FA -:0600000053EF33F0120083 +:0600000067EF33F012006F :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000053EF33F012007B -:0608080017EF13F01200CF -:0608180084EF13F0120052 -:06082A0004003B67000022 -:100830002601000021000000306700005401000084 -:100840000B00000023670000470100000D000000BE -:0C085000206700006C01000003000000A5 -:04085C009DEC0EF011 -:10086000030EE126010EE66EDFDAE552DF6E020EC0 -:10087000E66EDADAE552E76E010EE7CFDBFF020E35 -:10088000DB6ADF1404E1010EDB50020B06E00A0E06 -:1008900093EC11F0020EA8EC0FF0040EDF140AE046 -:1008A000010EDB50040B06E00101010E566F040E31 -:1008B000A8EC0FF0200EDF1404E1010EDB50200B3A -:1008C00006E00B0E93EC11F0200EA8EC0FF0DFAC5D -:1008D00002D0020EDB80010EDBAC02D0020EDB8206 -:1008E000020EDBCF00F0000EE76E0018E8AE02D07B -:1008F000003403D0E750D880005411E20101545174 -:1009000005E0CAEC11F02FEC09F0E552400EE66E5E -:10091000E66ACAEC11F019DBE552E552E552030E26 -:10092000E15C02E2E16AE552E16EA2EF0EF09DECBD -:100930000EF0FE0EDB5006E1F80E96163C0E9416F5 -:10094000959808D0FE0EDB0405E1070E9612C30E43 -:1009500094129588A2EF0EF0D9CFE6FFE1CFD9FF30 -:10096000E652010EE66EE3DFE5528098FE0EDBA054 -:100970000FD0839C808A0000839E0000000000004E -:100980008450010BDF6E838E00000000DF04F4E072 -:10099000FE0EDBA20FD0838C809A0000839E0000A5 -:1009A000000000008450010BDF6E838E0000000009 -:1009B000DF04F4E0E552E552E7CFD9FF1200D9CFCA -:1009C000E6FFE1CFD9FFE652FD0EDB50DF6EFE0EF3 -:1009D000DBCFE6FFC1DFE552E66AA9DFE552FE0E96 -:1009E000DB50010B02E0000E01D0010EE8B0838C59 -:1009F000E8A0839CFE0EDB50020B02E0000E01D04B -:100A0000010EE8B0808AE8A0809A80980000809665 -:100A1000D9CFE9FFDACFEAFFEF50010B02E0848083 -:100A200001D08490D9CFE9FFDACFEAFFEF50020B73 -:100A300002E0848201D08492D9CFE9FFDACFEAFFC5 -:100A4000EF50040B02E0848401D08494D9CFE9FFF5 -:100A5000DACFEAFFEF50080B02E0838801D08398D9 -:100A6000D9CFE9FFDACFEAFFEF50100B02E0828224 -:100A700001D08292D9CFE9FFDACFEAFFEF50200B05 -:100A800002E0828E01D0829ED9CFE9FFDACFEAFF61 -:100A9000EF50400B02E0828001D08290D9CFE9FF75 -:100AA000DACFEAFFEF50800B02E0828C01D0829C0B -:100AB00000000000808600000000E552E552E7CF0C -:100AC000D9FF1200D9CFE6FFE1CFD9FF020EE12610 -:100AD000FC0EDBCFDEFFDBCFDDFFFE0EDBCFE6FF64 -:100AE0003BDFE552E66A23DFE552FE0EDB50010BE9 -:100AF00002E0000E01D0010EE8B0838CE8A0839CD8 -:100B0000FE0EDB50020B02E0000E01D0010EE8B039 -:100B1000808AE8A0809A808800008096D9CFE9FF7B -:100B2000DACFEAFFEE52EF50010B02E0848001D0F1 -:100B30008490D9CFE9FFDACFEAFFEE52EF50020BF3 -:100B400002E0848201D08492D9CFE9FFDACFEAFFB4 -:100B5000EE52EF50040B02E0848401D08494D9CF8C -:100B6000E9FFDACFEAFFEE52EF50080B02E083888C -:100B700001D08398D9CFE9FFDACFEAFFEE52EF50E8 -:100B8000100B02E0828201D08292D9CFE9FFDACF46 -:100B9000EAFFEE52EF50200B02E0828E01D0829EDF -:100BA000D9CFE9FFDACFEAFFEE52EF50400B02E077 -:100BB000828001D08290D9CFE9FFDACFEAFFEE52EE -:100BC000EF50800B02E0828C01D0829C000000007C -:100BD0008086000000008096D9CFE9FFDACFEAFFD7 -:100BE000EF50010B02E0848001D08490D9CFE9FF5F -:100BF000DACFEAFFEF50020B02E0848201D0849248 -:100C0000D9CFE9FFDACFEAFFEF50040B02E084848A -:100C100001D08494D9CFE9FFDACFEAFFEF50080B77 -:100C200002E0838801D08398D9CFE9FFDACFEAFFC9 -:100C3000EF50100B02E0828201D08292D9CFE9FFFF -:100C4000DACFEAFFEF50200B02E0828E01D0829EC5 -:100C5000D9CFE9FFDACFEAFFEF50400B02E0828004 -:100C600001D08290D9CFE9FFDACFEAFFEF50800BB5 -:100C700002E0828C01D0829C00000000808600008F -:100C80000000020EE15C02E2E16AE552E16EE5522B -:100C9000E7CFD9FF1200D9CFE6FFE1CFD9FF020E8F -:100CA000E126FE0EDB040DE0FE0EDB50020809E03B -:100CB0000C0EE66EF3EC32F0E552F36AF46AAAD059 -:100CC000A9D0FE0EDBCFE6FF47DEE552010EE66E51 -:100CD0002EDEE552FE0EDB50020B02E1000E01D0CB -:100CE000010EE8B0838CE8A0839CFE0EDB50010B64 -:100CF00002E1000E01D0010EE8B0808AE8A0809ADF -:100D000080880000839E0000000000008450010BDA -:100D1000066E8450020B01E0010EE824056E84503B -:100D2000040B01E0010E040DF3CF04F08350100B0F -:100D300001E0010E080DF3CF03F08250020B01E039 -:100D4000010E100DF3CF02F08250800B01E0010E76 -:100D5000200DF3CF01F08250010B400DF3CF00F0D6 -:100D60008250400B01E0010E800DF3500010011085 -:100D700002100310041005100610E76E010EE7CFF5 -:100D8000DBFF838E00000000839E00000000000057 -:100D90008450010B066E8450020B01E0010EE82422 -:100DA000056E8450040B01E0010E040DF3CF04F036 -:100DB0008350100B01E0010E080DF3CF03F08250B9 -:100DC000020B01E0010E100DF3CF02F08250800BF8 -:100DD00001E0010E200DF3CF01F08250010B400D18 -:100DE000F3CF00F08250400B01E0010E800DF35074 -:100DF0000010011002100310041005100610DF6E21 -:100E0000838EDECF00F0DDCF01F000C0F3FF01C024 -:100E1000F4FF00D0020EE15C02E2E16AE552E16E0D -:100E2000E552E7CFD9FF1200D9CFE6FFE1CFD9FFD6 -:100E3000E652DF6AFE0EDB040CE0FE0EDB50020819 -:100E400008E00C0EE66EF3EC32F0E552000E61D0D5 -:100E500060D0FE0EDBCFE6FF7FDDE552010EE66ED1 -:100E600066DDE552FE0EDB50020B02E1000E01D002 -:100E7000010EE8B0838CE8A0839CFE0EDB50010BD2 -:100E800002E1000E01D0010EE8B0808AE8A0809A4D -:100E900080980000839E0000000000008450010B39 -:100EA000066E8450020B01E0010EE824056E8450AA -:100EB000040B01E0010E040DF3CF04F08350100B7E -:100EC00001E0010E080DF3CF03F08250020B01E0A8 -:100ED000010E100DF3CF02F08250800B01E0010EE5 -:100EE000200DF3CF01F08250010B400DF3CF00F045 -:100EF0008250400B01E0010E800DF35000100110F4 -:100F000002100310041005100610DF6E838EDF50F0 -:100F100000D0E552E552E7CFD9FF1200E9EC11F01D -:100F200007E04FEC10F004E00C0E93EC11F008D049 -:100F3000FD0EDBCFE6FF60EC0FF0E552E71402E1B7 -:100F4000000E01D0010EA2EF0EF09DEC0EF01D0E72 -:100F500057EC0EF0FC0EDB1C006EFD0EDB1C016E70 -:100F600000C0E6FFE66E4AEC0EF0A2EF0EF09DEC3C -:100F70000EF01D0E57EC0EF0000EB9EC11F0A2EFC2 -:100F80000EF09DEC0EF060EC0FF084080DE060ECCC -:100F90000FF0C40809E0E66AB2EC12F060EC10F061 -:100FA00026EC33F0E552EFD71C0E57EC0EF0660E30 -:100FB000B9EC11F067EC10F060EC0FF0800804E081 -:100FC00060EC0FF0C008E7E160EC0FF0C00802E150 -:100FD00067EC10F01E0E57EC0EF00F0EB9EC11F08E -:100FE000D0EC12F0FA0EDBCFE6FFFB0E21EC11F095 -:100FF000F80EDBCFE6FFF90E21EC11F0F60EDBCF99 -:10100000E6FFF70E21EC11F0040E57EC0EF01A0E6D -:1010100057EC0EF0100EE66E270EE66E4AEC0EF060 -:101020000101546B556B566BA2EF0EF09DEC0EF068 -:10103000080EE126010EB3EC0EF0010EE7CFDBFF48 -:10104000020EEDEC11F0DF6E030EB3EC0EF0030EAA -:10105000E7CFDBFF040EB3EC0EF0020EE7CFDBFFB1 -:10106000050EB3EC0EF0050EE7CFDBFF060EB3EC7A -:101070000EF0040EE7CFDBFF070EB3EC0EF0070E09 -:10108000E7CFDBFF080EB3EC0EF037EC0FF0010EEC -:1010900053EC10F0090EB3EC0EF0010EE7CFDBFFBE -:1010A0000A0EEDEC11F0DF6E0B0EB3EC0EF0030E3A -:1010B000E7CFDBFF0C0EB3EC0EF0020EE7CFDBFF49 -:1010C0000D0EB3EC0EF0050EE7CFDBFF0E0EB3EC0A -:1010D0000EF0040EE7CFDBFF0F0EB3EC0EF0070EA1 -:1010E000E7CFDBFF100EB3EC0EF037EC0FF0020E83 -:1010F00053EC10F0020EE66E030EE66E60EC10F09C -:10110000010E6CEC10F005E1020EE66E6CEC10F0D6 -:1011100002E0000E01D0010E006E080EE15C02E25A -:10112000E16AE552E16E0050A2EF0EF09DEC0EF088 -:101130000C0EE12669EC0FF0D950F20FBDEC11F066 -:10114000080EEECFDBFF090EEECFDBFF0A0EEECF6F -:10115000DBFF0B0EEECFDBFF1F0E57EC0EF0D1ECDA -:101160000FF000500110021003100CE02B0EB9EC30 -:1011700011F00A0EDBCFE6FF0B0E21EC11F073EC41 -:1011800010F003D00B0EE66EE66A4AEC0EF09AEC15 -:1011900012F0B6EC0EF0F2EC0EF04AEC0EF0C9ECE8 -:1011A00012F00C0EE15C02E2E16AE552E16EA2EFA0 -:1011B0000EF09DEC0EF00A0EE12691EC0FF069ECBA -:1011C0000FF0080EF36EDB6E090EF3CFDBFF1F0E80 -:1011D00057EC0EF080EC0FF007E0D950080FE96EE5 -:1011E000DACFEAFFEE8AED52F50EDB50FF0807E199 -:1011F000D950080FE96EDACFEAFFEE52ED8873ECB2 -:1012000010F04AEC0EF080EC0FF002E09AEC12F0D5 -:10121000CAEC11F0030E21EC11F0C9EC12F00A0E29 -:10122000E15C02E2E16AE552E16EA2EF0EF09DECB4 -:101230000EF0F90EDBCFE6FFE66AE66AE66AE66ADA -:10124000D950FA0FBDEC11F0A1EC11F0B2EC12F094 -:10125000B0DF006E0A0EE15E0050A2EF0EF09DECD2 -:101260000EF0FE0EDBA00BD0010E40EC10F02DC0F6 -:1012700057F12EC058F12FC059F130C05AF1FE0E6F -:10128000DBA20BD0020E40EC10F02DC05BF12EC0A3 -:101290005CF12FC05DF130C05EF10101546BAAEF2B -:1012A00011F09DEC0EF01F0E57EC0EF0D0EC12F08A -:1012B000AAEF11F09DEC0EF0040EE126F90EDB50C2 -:1012C0000FE091EC0FF0210E57EC0EF0CAEC11F08C -:1012D000030E21EC11F098EC11F0B2EC12F023D0D7 -:1012E000200E57EC0EF0FE0EDBA20ED0B6EC0EF088 -:1012F0005B0EE96E010E66EC11F0020E1BEC10F0B5 -:10130000020EE66E75EC11F0FE0EDBA00ED0B6EC10 -:101310000EF0570EE96E010E66EC11F0010E1BEC9B -:1013200010F0010EE66E75EC11F0040EE15C02E2C5 -:10133000E16AE552E16EA2EF0EF0C2EC11F006E0B8 -:101340004FEC10F003E04BEC0FF003D0080EF2EC82 -:1013500011F0040EE15C02E2E16AE552E16EA2EFF7 -:101360000EF0C2EC11F006E04FEC10F003E04BEC95 -:101370000FF003D00A0EF2EC11F0040EE15C02E271 -:10138000E16AE552E16EA2EF0EF0C2EC11F006E068 -:101390004FEC10F003E04BEC0FF003D0070EF2EC33 -:1013A00011F0040EE15C02E2E16AE552E16EA2EFA7 -:1013B0000EF0C2EC11F006E04FEC10F003E04BEC45 -:1013C0000FF00BD00B0E57EC0EF04AEC11F0CEECF8 -:1013D00011F0DE6ADD6A78EC11F0040EE15C02E2E5 -:1013E000E16AE552E16EA2EF0EF0E9EC11F006E0E1 -:1013F0004FEC10F003E05BEC10F005D00D0E57EC55 -:101400000EF04AEC11F0A2EF0EF0E9EC11F00FE152 -:10141000010E40EC10F0010157512D5C0A6E58513D -:101420002E580B6E59512F580C6E5A5111D04FEC4B -:1014300010F032E1020E40EC10F001015B512D5C26 -:101440000A6E5C512E580B6E5D512F580C6E5E511A -:1014500030580D6E0AC02DF00BC02EF00CC02FF0CE -:10146000306E7DEC24F029EC0FF03BEC12F02DEC0B -:1014700025F02EC002F02FC003F030C004F031C0C0 -:1014800005F079EC0FF080EC25F0EDEC25F02FC0A5 -:10149000F3FF30C0F4FF02D05BEC10F0A2EF0EF0CF -:1014A000D5EC11F037EC12F0030E55EC0FF0A2EF73 -:1014B0000EF0D5EC11F018EC0FF0030E55EC0FF018 -:1014C000A2EF0EF09DEC0EF08BEC10F018EC0FF08C -:1014D000010EE4EC12F04AEC10F08BEC10F052EC40 -:1014E0000FF071EF11F09DEC0EF08BEC10F05CEC56 -:1014F0000FF04AEC10F08BEC10F018EC0FF0020E2D -:1015000071EF11F09DEC0EF01C0EE126F60EDB5093 -:101510001EE0006A800E016E010E026E430E036E25 -:1015200002EC13F0336A346AC80E356E420E366E22 -:101530002DEC25F048EC12F0A4DB84EC12F0EDEC7D -:1015400025F0F70E2FC0DBFFF80E30C0DBFF4FECAD -:1015500011F0E3DBD9EC11F00C6A800E0D6E010E78 -:101560000E6E430E0F6EC4EC12F044EC12F00FEC52 -:1015700011F01FEC10F085DB84EC12F02EC0DEFFC2 -:101580002FC0DEFF30C0DEFF31C0DDFFDD52DD5297 -:10159000A2EC0FF079EC0FF080EC25F048EC12F0A3 -:1015A000D9EC11F0106A800E116E010E126E430E0E -:1015B000136EC4EC12F01DEC11F0F6EC12F084EC9A -:1015C00012F0040E2EC0DBFF050E2FC0DBFF060E4F -:1015D00030C0DBFF070E31C0DBFFDECF2EF0DECFE9 -:1015E0002FF0DECF30F0DDCF31F0DD52DD52040ED2 -:1015F000DBCF33F0050EDBCF34F0060EDBCF35F05A -:10160000070ED6EC12F0080E2EC0DBFF090E2FC01D -:10161000DBFF0A0E30C0DBFF0B0E31C0DBFF080E14 -:10162000DBCF04F0090EDBCF05F00A0EDBCF06F0AE -:101630000B0EDBCF07F0336A346A356A366A48DB53 -:1016400053EC26F0010A03E0D1EC0FF013D0080EA2 -:10165000DBCF08F0090EDBCF09F00A0EDBCF0AF072 -:101660000B0EDBCF0BF079EC0FF088EC12F080EC76 -:1016700025F014DB080E00C0DBFF090E01C0DBFF04 -:101680000A0E02C0DBFF0B0E03C0DBFF92DBA5ECF2 -:101690000FF082EC10F0DEEC10F0F8EC0FF0046AC2 -:1016A000056A066A400E076E54EC11F044EC12F025 -:1016B00082EC10F0ACEC12F0F1DA0C0EDBCF0CF097 -:1016C0000D0EDBCF0DF00E0EDBCF0EF00F0EDBCFCD -:1016D0000FF023EC10F0DEEC0FF06BDB48EC12F0B7 -:1016E000E7EC12F0DEEC10F0AFEC0FF0066A400E03 -:1016F000076EE7EC12F0ACEC12F0F5EC11F023EC15 -:1017000010F0EBEC0FF0140EDBCF08F0150EDBCF72 -:1017100009F0160EDBCF0AF0170EF1DA0C0EDBCF54 -:1017200014F00D0EDBCF15F00E0EDBCF16F00F0E02 -:10173000EDDAD9CFE9FFDACFEAFFEECF20F0EECF36 -:1017400021F0EECF22F0EFCF23F03DEC11F0B4DB2F -:10175000246E0D0EE15E2450180EDBCF08F0190E3A -:10176000DBCF09F01A0EDBCF0AF01B0EC8DA100E21 -:10177000DBCF14F0110EDBCF15F0120EDBCF16F01D -:10178000130EC4DA040EDBCF20F0050EDBCF21F000 -:10179000060EDBCF22F0070EDBCF23F03DEC11F07D -:1017A00081DBE4EC12F0246E0D0EE15E2450BEEC01 -:1017B00012F01C0EE15C02E2E16AE552E16EC2D277 -:1017C000BCDA3C0EE126BEDB0DEC13F051EC12F05E -:1017D00088EC12F080EC25F0B8DB6DEC12F054ECE4 -:1017E00011F044EC12F031EC10F04BDA25EC11F072 -:1017F00048DA6EDA97EC24F051DA336A346A800EF4 -:1018000016EC10F0380E2EC0DBFF390E2FC0DBFFB8 -:101810003A0E30C0DBFF3B0E31C0DBFF0DEC13F0A6 -:101820003DDA53DB54EC11F078DA4FDBD8EC2DF0D5 -:10183000086E080EE15E0850080E2DC0DBFF090E91 -:101840002EC0DBFF0A0E2FC0DBFF0B0E30C0DBFF0C -:10185000F60EDB5007E0D950F40FBDEC11F0EE505E -:10186000ED1039E1B7DA080EDBCF0EF0090EDBCF51 -:101870000FF00A0EDBCF10F00B0EA6EC10F0DAD949 -:1018800059EC11F02E6A2F6A800E306E400E316EC8 -:10189000380EDBCF33F0390EDBCF34F03A0EDBCF2E -:1018A00035F03B0E9DEC11F0D4DA0FDB70DB2DC070 -:1018B00002F02EC003F02FC004F030C005F02DC0A0 -:1018C0002EF0DEEC11F083EC11F0EADD0A6E060E6C -:1018D000E15E0A50A2D1380EDBCF04F0390EDBCF27 -:1018E00005F03A0EDBCF06F03B0EDBCF07F0C2DB94 -:1018F00010EC13F080EC25F082EC10F0EEEC12F01E -:10190000B1DAAFDBF8EC11F06DEC12F0BAD9D7D93F -:1019100097EC24F024DBFBEC11F04FEC11F01DEC04 -:1019200011F084EC12F057DB046A056AFBEC11F04D -:1019300054EC11F01DEC11F084EC12F01C0E2EC0D2 -:10194000DBFF1D0E2FC0DBFF1E0E30C0DBFF1F0EA6 -:1019500031C0DBFF1C0EDBCF00F01D0EDBCF01F032 -:101960001E0EDBCF02F01F0EDBCF03F0C2DA84ECD9 -:1019700012F0200E2EC0DBFF210E2FC0DBFF220E47 -:1019800030C0DBFF230E31C0DBFFD950180FE96EEA -:10199000DACFEAFF240EEECFDBFF250EEECFDBFF22 -:1019A000260EEECFDBFF270EEECFDBFF4FEC11F064 -:1019B000A5EC12F0200EDBCF33F0210EDBCF34F09C -:1019C000220EDBCF35F0230EDCEC12F0280E2EC0F9 -:1019D000DBFF290E2FC0DBFF2A0E30C0DBFF2B0EF2 -:1019E00031C0DBFF54EC11F0A5EC12F0240EDBCF7C -:1019F00033F0250EDBCF34F0260EDBCF35F0270E8B -:101A0000DCEC12F02C0E2EC0DBFF2D0E2FC0DBFF06 -:101A10002E0E30C0DBFF2F0E31C0DBFF2C0EDBCFD4 -:101A200004F02D0EDBCF05F02E0EDBCF06F02F0ECF -:101A3000DBCF07F05EDA4CD980EC25F031EC11F009 -:101A4000300E2EC0DBFF310E2FC0DBFF320E30C058 -:101A5000DBFF330E31C0DBFF280EDBCF2EF0290E6B -:101A6000DBCF2FF02A0EDBCF30F02B0EDBCF31F0A7 -:101A7000F8DB340E2EC0DBFF350E2FC0DBFF360E39 -:101A800030C0DBFF370E31C0DBFFD950300F83D9B8 -:101A9000D950340F80D9D8EC2DF0006E080EE15EDD -:101AA00000500C0E2DC0DBFF0D0E2EC0DBFF0E0E06 -:101AB0002FC0DBFF0F0E30C0DBFF006A016A026A35 -:101AC000400E036E00C0E6FF01C0E6FF02C0E6FF65 -:101AD000E66E98D910EC13F0B2DAF7D98EEC11F06B -:101AE0002DC014F02EC015F02FC016F030C017F026 -:101AF00037EC12F0D8EC2DF0186E080EE15E18509D -:101B0000E552E7CF03F0E552E7CF02F0E552E7CF29 -:101B100001F0E552E7CF00F02DC004F02EC005F033 -:101B20002FC006F030C007F029DA84EC12F046DA54 -:101B3000F60EDB5002081FE176EC12F096EC24F072 -:101B4000B6EC12F097EC24F001D95FDA060E2FC044 -:101B5000DBFF070E30C0DBFF000EDFCF2FF0010EE2 -:101B6000DCD8020EC5EC11F0CDDA5DDB040E2FC01F -:101B7000DBFF050E35D01DD991D80C0EDBCF04F05C -:101B80000D0EDBCF05F00E0EDBCF06F00F0EDBCF18 -:101B900007F004C033F005C034F006C035F007C0CC -:101BA00036F096EC24F024DA76EC12F097EC24F080 -:101BB000B6EC12F096EC24F0C9D827DA040E2FC048 -:101BC000DBFF050E30C0DBFF020EDBCF2FF0030E74 -:101BD000A4D8C7DB97DA27DB060E2FC0DBFF070E82 -:101BE00030C0DBFF27D87DD8040EDBCF2FF0050EE9 -:101BF00081DA37EC12F0B5DB2FD85ED9206E0D0EEE -:101C0000E15E20506ED8060EDBCF2FF0070E72DAA1 -:101C100049D9BBDB21D846D948D93C0EE15C02E268 -:101C2000E16AE552E16E8ED00101565102E0556B3A -:101C3000010C000CF9DF0009FDE012000101555113 -:101C40001200E7EC12F03BEC12F0A2DA2DDB52DAD4 -:101C500037EC12F024DB8BD32EC01CF02FC01DF00C -:101C600030C01EF031C01FF03BEC12F013EC13F04B -:101C70002DC018F02EC019F02FC01AF030C01BF084 -:101C800012002EC033F02FC034F030C035F031C018 -:101C900036F01200B2EC12F075EF11F02EC000F029 -:101CA0002FC001F030C002F031C003F01200E66E28 -:101CB000B2EC12F0DFEC04F0E552E552120000C085 -:101CC0002EF001C02FF002C030F003C031F012003E -:101CD00004C02EF005C02FF006C030F007C031F070 -:101CE000120002EC13F0C7DBC8EF10F0D3DA56DBBA -:101CF000D1DAF3CFDEFFF4CFDDFF78EF11F0DBCFE9 -:101D00000BF0B9DB88EC12F0C8EF10F0DBCF17F066 -:101D1000B2DB9BDAD0DB37EF12F0B6DB48EF12F024 -:101D200002C02EF04BDB96EC24F0EDDA62EC0AF008 -:101D3000126E060EE15E12501200D9CFE6FFE1CF1F -:101D4000D9FF1200E552E7CFD9FF1200100EDBCF0A -:101D500033F0110EDBCF34F0120EDBCF35F0130E63 -:101D6000ECDAEDEF25F039DBE76E1200FA0EDBCF8F -:101D700000F0FB0EDBCF01F0FC0EDBCF02F0FD0E1E -:101D8000DBCF03F0000E006C011E0122021E0222B6 -:101D9000031E03221200E96EDACFEAFFA1EF11F071 -:101DA0000CC02EF00DC02FF00EC030F00FC031F07F -:101DB00012002E6A2F6A306A400E316E080EDBCF99 -:101DC00033F0090EDBCF34F00A0EDBCF35F00B0E0B -:101DD0009DEF11F06EDA026A036AB40E046E420ED1 -:101DE000056E120000C0DFFF010E01C0DBFF020E16 -:101DF00002C0DBFF030E03C0DBFFCCDA030EDBCF38 -:101E0000E6FF1200140EDBCF0CF0150EDBCF0DF049 -:101E1000160EDBCF0EF0170EDBCF0FF01200350ED3 -:101E2000336EFA0E346E0E0E356E3C0E366E1200A8 -:101E3000000E186C191E19221A1E1A221B1E1B22B4 -:101E400018C0E6FF19C0E6FF1AC0E6FF1BC0E6FF98 -:101E500012002EC006F02FC007F030C008F031C0CD -:101E600009F01200F40EDBCF2FF0F50E80D2060E33 -:101E7000E7CFDBFFDBCFE6FF070EDBCFE6FF040E8D -:101E8000DBCFE6FF050EDBCFE6FF84DA030EDBCF08 -:101E9000E6FF98EF11F00C0E46DA2D6A2E6A2F6AD3 -:101EA000306A1200E4DA020E12008EDB206E0D0E94 -:101EB000E15E2050BEEF12F0DADA010EE4EF12F02C -:101EC00051DB14EC07F0E5521200A0DB31C0E6FF55 -:101ED0001200D950F60F51DA040EEECFDBFF050EDB -:101EE000EECFDBFF060EEECFDBFF070EEECFDBFF04 -:101EF0001200336A346A800E356EBF0E366E1200E1 -:101F0000040EDBCF00F0050EDBCF01F0060EDBCFB9 -:101F100002F0070EDBCF03F0005001100210031097 -:101F20001200D9CFE9FFDACFEAFFFA0EDBCFEEFFDE -:101F3000FB0EDBCFEEFFFC0EDBCFEEFFFD0EDBCFAB -:101F4000EEFF12006ADB82EF10F0A2DAADD90FD2F9 -:101F5000E66EE66A030EE66EA5EC07F031D3140ECA -:101F60002EC0DBFF150E2FC0DBFF160E30C0DBFFCF -:101F7000170E31C0DBFF046A056A12002DC033F072 -:101F80002EC034F02FC035F030C036F01200F2EC25 -:101F900029F0E55215D3336A346A356A400E366E3D -:101FA0001200080EDBCF00F0090EDBCF01F00A0EA5 -:101FB000DBCF02F00B0EDBCF03F01200100E2EC0B1 -:101FC000DBFF110E2FC0DBFF120E30C0DBFF130E44 -:101FD00031C0DBFF1200180E2EC0DBFF190E2FC020 -:101FE000DBFF1A0E30C0DBFF1B0E31C0DBFF12001F -:101FF0000C0E2EC0DBFF0D0E2FC0DBFF0E0E30C00F -:10200000DBFF0F0E31C0DBFF1200020E2FC0DBFF23 -:10201000030E30C0DBFFF90EDBCF2FF0FA0EDBCF63 -:1020200030F01200356E430E366E1200356E400EE3 -:10203000366E2DEF25F0E66E58D998EF11F096EC3C -:1020400024F082EF10F00CC033F00DC034F00EC05D -:1020500035F00FC036F096EF24F0336A800E346E00 -:1020600012002EC018F02FC019F030C01AF031C085 -:102070001BF012000C6A0D6A0E6A400E0F6E120001 -:10208000E66EB1EC09F0E5521200040EE126FE0EF8 -:10209000DB041200286E0D0EE15E28501200FE0EC9 -:1020A000DB5002081200E66EC1EC07F0006E090E6C -:1020B000E15E005012000C0E36D9F36AF46A120089 -:1020C000DFEC04F0E552E552020EE66E12004ADA49 -:1020D000B7EC07F0E5521200E66E8EEC07F0E55221 -:1020E000E55200091200080EDBCFE6FF090EDBCF38 -:1020F000E6FF1200C9D9F1D9BED980EC25F011DA7A -:102100005BEF12F02EC008F02FC009F030C00AF0CB -:1021100031C00BF0120095DD2EC024F02FC025F049 -:1021200030C026F031C027F07ADE80EC25F02EC0DA -:1021300020F02FC021F030C022F031C023F08DDF1D -:10214000810E70DF80EC25F02CEF0EF0DBCF11F06C -:10215000336A346A340E66DF0EC02EF00FC02FF0E3 -:1021600010C030F011C031F080EC25F02EC00AF024 -:102170002FC00BF030C00CF031C00DF0DB0E336E11 -:102180000F0E346E490E52DF64DE7BDD90EF0EF0F1 -:1021900080EC25F07DD9CC0E336EBC0E346E8C0EE7 -:1021A000356E3B0E366E3FDA2DC000F02EC001F0CA -:1021B0002FC002F030C003F037EF12F0CDD96EDD42 -:1021C000106A116A800E126E3F0E136E080EDBCF7E -:1021D00014F0090EDBCF15F00A0EDBCF16F00B0E54 -:1021E000DBCF17F014C033F015C034F016C035F053 -:1021F00017C036F0FBD963DD2DEF25F0140EDBCFD1 -:1022000000F0150EDBCF01F0160EDBCF02F0170E3B -:10221000DBCF03F022DF010E05DF5FEF0EF081D987 -:1022200030DDD0EF0EF0DAD9F90EDBCF2FF0FA0E59 -:102230002BD937D969D9EDEF25F026D94ED941EF01 -:102240000EF0DBCFE6FF4AEF0EF014C02EF015C003 -:102250002FF016C030F017C031F080EC25F091EF70 -:1022600012F0140EDBCF33F0150EDBCF34F0160E68 -:10227000DBCF35F0170ED6EF12F0D1DD20C02EF0F7 -:1022800021C02FF022C030F023C031F080EC25F0C7 -:102290002CEF0EF067D94BEC06F0E5521200FD0E64 -:1022A000DBCF2FF0FE0E1200FB0EDBCF2FF0FC0E6B -:1022B0001200F70EDBCFE6FFF80EDBCFE6FFF90EDC -:1022C000DBCFE6FFFA0EDBCFE6FF1200EA6EEE5040 -:1022D0000026EE500122EE500222EE500322F2EFD1 -:1022E0000EF072D9D7DE4AD92DD562EC05F068D14F -:1022F000DECF2DF0DECF2EF0DECF2FF0DDCF30F0B1 -:10230000DD52DD521200EDEC25F02FC000F030C0A0 -:1023100001F02FC0E6FF30C0E6FF1200D950380FA1 -:102320003ADDC7EF0FF0E66EF3EC32F0E552120043 -:10233000DECFE6FFDDCFE6FF1200DBCF36F080EF29 -:1023400025F0EECFE6FFEECFE6FFEECFE6FFEFCFD4 -:10235000E6FF1200010EABDC0101010E556F566B5A -:10236000F1D4000EDFCF2FF0010E44EF12F044EF56 -:1023700012F0E66EE66A4AEF0EF0E96EFF0EDA2022 -:10238000EA6E1200DADC45EF10F0DBCF2FF0030E1F -:1023900044EF12F0020EDBCFE6FF1200020EF3CF85 -:1023A000DBFF030EF4CFDBFF1200C7DC4ADC2CEFAF -:1023B0000EF0F1DD80EC25F04EEF0EF003C02FF0B3 -:1023C00004C030F005C031F012005BDC78DC96EF21 -:1023D00024F0B3DCFE0EDB041200E66E45EC32F0B6 -:1023E000E552120064DC76EF0EF058DC02EF0FF0DD -:1023F000D2DD2DEF25F0800E066E3F0E076E3ADE21 -:1024000004C0E6FF05C0E6FF06C0E6FF07C0E6FF22 -:102410000CC0E6FF0DC0E6FF0EC0E6FFE66E7EDFF5 -:10242000E552E7CF0FF0E552E7CF0EF0E552E7CFE8 -:102430000DF0E552E7CF0CF0E552E7CF07F0E5529B -:10244000E7CF06F0E552E7CF05F0E552E7CF04F01D -:102450002DC010F02EC011F02FC012F030C013F0BC -:102460008DDD9EDC80EC25F04DDEEEEF12F02DC010 -:10247000E6FF06EF13F0330E336EE20E346EC20E3B -:10248000356E420E366E1200DBCF30F068EF24F06E -:102490002EC004F02FC005F030C006F031C007F0A8 -:1024A00012002EC00CF02FC00DF030C00EF031C065 -:1024B0000FF041EF0EF0BD0E336E370E346E860E08 -:1024C000356E410E366EAFD82DC00CF02EC00DF01B -:1024D0002FC00EF030C00FF012002EC014F02FC02D -:1024E00015F030C016F031C017F0120073DC0C0E7E -:1024F000DBCF0EF00D0EDBCF0FF00E0EDBCF10F0AA -:102500000F0E24DEFEEF10F05FEC0EF080EF25F0F2 -:1025100008C02EF009C02FF00AC030F00BC031F017 -:1025200012002EC010F02FC011F030C012F031C0D8 -:1025300013F01200060EDBCFE6FF070E82DE040E5C -:10254000DBCFE6FF050E21EF11F08DEC0EF050DF32 -:102550004CDF66D896EF24F041EC0EF068EC0EF0FC -:1025600080EF25F0FE0EDBCFE6FF1200A6EC0EF0AA -:102570002FC0DEFF30C0DDFFFEEF10F0030EE66E71 -:102580002FEC09F0E5521200F70EDBCF2FF0F80E1A -:102590001200CEDE4AEC0EF00101010E546F120063 -:1025A000FC0EDBCFE6FFFD0E21EF11F0DBCF36F0A6 -:1025B0002DEC25F04EEF0EF0C0DEA4DDE5EF11F0BE -:1025C000E552E552E5521200E66E96EF08F0F90E7C -:1025D000DBCF2FF0FA0E58DF82EF10F041EC0EF057 -:1025E00068EC0EF02DEC25F04EEF0EF010C02EF042 -:1025F00011C02FF012C030F013C031F097EC24F06E -:1026000051EF12F0C1DF40DF82EF10F02EC0E6FF85 -:102610002FC0E6FF30C0E6FF120041DE44EF12F0AB -:0E26200021DC0FEF11F080EC25F01CEF26F00E -:02262E00DACF01 -:10263000E4FFE2CFDAFFE9CFE4FFEACFE4FFF6CF31 -:10264000E4FFF7CFE4FFF5CFE4FFF3CFE4FFF4CFEF -:10265000E4FFFACFE4FF00EE29F0140EE80403E3F0 -:10266000EECFE4FFFBD700EE00F0290EE80403E311 -:10267000EECFE4FFFBD798EC1EF09EA013D0A2ECA7 -:102680001EF001014D2B000E4E23E80E4D5D030E92 -:102690004E5905E34D6B4E6B4F2B000E502313EC40 -:1026A0002CF09E90F2A003D02EEC04F0F290ABEC54 -:1026B0001EF002E2E16AE552E16EE552E7CFD9FF92 -:1026C000E55200EE28F0290EE80403E3E5CFEDFF24 -:1026D000FBD700EE3CF0140EE80403E3E5CFEDFF7A -:1026E000FBD7E5CFFAFFE5CFF4FFE5CFF3FFE5CF6A -:1026F000F5FFE5CFF7FFE5CFF6FFE5CFEAFFE5CF42 -:10270000E9FFE5CFDAFF1100D8CFE4FFE0CFE4FF27 -:10271000E46EDACFE4FFE2CFDAFFF3CFE4FFF4CFE9 -:10272000E4FF98EC1EF0ABEC1EF002E2E16AE55229 -:10273000E16EE552E7CFD9FFE552E5CFF4FFE5CFF3 -:10274000F3FFE5CFDAFFE550E5CFE0FFE5CFD8FFB7 -:10275000100004D8F6EC1EF063D8FCD70F0EC1129F -:1027600002D8C0EF1EF0BBEC1EF0E6526FEC1EF07C -:102770000101696F070E695D10E1E66A45EC32F010 -:10278000E552DF6E000EDF80B3EC1EF0E66A26EC49 -:1027900033F0E552DF70B3EC1EF01C0E9316D08EB2 -:1027A000F28EF28CF286F30E8C1695160101476BB1 -:1027B000486B496B4A6B010E4B6F929480949398CF -:1027C00081980D0EE66E7C0EE66EE10EE66EB8ECBC -:1027D00031F0E552E552E552C70E921694943F0E41 -:1027E0009516010EE66E97EC04F0E552838C808A14 -:1027F00082848088838E80868294010EE66E61ECEE -:1028000033F0E55282849D80C50EE66EB6EC32F060 -:10281000E552A2EC1EF0E552E552E7CFD9FF1200D7 -:10282000D9CFE6FFE1CFD9FF0F0EE12601014B51D1 -:1028300002E0B4EC1DF0200E0101005D03E36D50D9 -:10284000020B12E01EEC0EF000090CE0E66A010E2D -:10285000E66E030EE66E51EC09F0E552E552E552E4 -:102860001AEC0EF0AAEF1DF0010149514A1102E1E4 -:10287000000E08D049C1E9FF4AC1EAFFEF50800BC2 -:1028800001E0010E000947E101014651EA6A260F05 -:10289000E96E010EEA22EF5000083DE20501406BAF -:1028A00001014C514C2B0501416F0501040E426F93 -:1028B00001014651EA6A260FE96E010EEA22EFCFC6 -:1028C00043F5400EE66E400EE66E050EE66E010E16 -:1028D000E66E010EE66E11EC23F0006E050EE15E71 -:1028E0000050F3CF49F1F4CF4AF101014651EA6AB1 -:1028F000260FE96E010EEA22EF6A01014651000837 -:1029000003E20101460707D001014551000803E237 -:1029100001011F0E466F010149514A1102E1000EEB -:1029200008D049C1E9FF4AC1EAFFEF50800B01E03E -:10293000010E00092BE11EEC0EF0000927E014EC5B -:102940000EF0000923E00501406B01014C514C2BB6 -:102950000501416F05010A0E426F0501436B050138 -:10296000010E486F400EE66E400EE66E050EE66EF6 -:10297000010EE66E010EE66E11EC23F0006E050E00 -:10298000E15E0050F3CF49F1F4CF4AF1010151511A -:10299000020A10E0030A01E021D0030EE66E6AECA1 -:1029A0002DF0E55216EC08F0000903E00101020EDB -:1029B000516F16D0200EE66E030EE66EC80EE66E60 -:1029C000E66AE80EE66E030EE66E50EC0AF0006E64 -:1029D000060EE15E00500101516B02D00101516B06 -:1029E00001014751481102E1000E08D047C1E9FF3B -:1029F00048C1EAFFEF50800B01E0010E000902E040 -:102A0000AAEF1DF005010251070A02E10BEF1DF0CC -:102A10000D0A01E16AD2010A01E12AD20D0A01E19F -:102A2000C2D1040A1AE0030A07E0010A02E069EFD2 -:102A30001DF0FF00AAEF1DF0E66A45EC32F0E5520A -:102A4000DF6E000EDB80DFCFE6FFE66A25EC32F0BA -:102A5000E552E552FF00AAEF1DF0010149514A116C -:102A600002E1000E08D049C1E9FF4AC1EAFFEF5078 -:102A7000800B01E0010E000901E093D100C540F593 -:102A80000501416B0501030E426F0501436B050112 -:102A90000851100A01E138D11F0A01E1FAD0080AF1 -:102AA00001E1BCD0010A01E17ED0020A71E0070A0F -:102AB00064E0010A20E0030A06E0010A01E047D1D0 -:102AC00069C148F547D10501486B470E006E650E98 -:102AD000016E026A00C0E6FF01C0E6FF02C0E6FF29 -:102AE000480EE66E050EE66E09EC32F0036E050E3A -:102AF000E15E03502FD10501486B3B0E006E650E61 -:102B0000016E026A00C0E6FF01C0E6FF02C0E6FFF8 -:102B1000480EE66E050EE66E09EC32F0036E050E09 -:102B2000E15E0350390E006E650E016E026A00C050 -:102B3000E6FF01C0E6FF02C0E6FF480EE66E050EA6 -:102B4000E66E09EC32F0036E050EE15E0350300EC6 -:102B5000006E650E016E026A00C0E6FF01C0E6FF6E -:102B600002C0E6FF480EE66E050EE66E09EC32F096 -:102B7000036E050EE15E0350EDD092CF48F593CF82 -:102B800049F594CF4AF595CF4BF596CF4CF5E2D069 -:102B900080CF48F581CF49F582CF4AF583CF4BF5F9 -:102BA00084CF4CF5D7D0010EE66EB9EC2CF0E5528F -:102BB000010E2DC0DBFF020E2EC0DBFF030E2FC067 -:102BC000DBFF040E30C0DBFF040EDBCF48F5030E45 -:102BD000DBCF49F5020EDBCF4AF5010EDBCF4BF51B -:102BE000020EE66EB9EC2CF0E552010E2DC0DBFFB3 -:102BF000020E2EC0DBFF030E2FC0DBFF040E30C021 -:102C0000DBFF040EDBCF4CF5030EDBCF4DF5020EE0 -:102C1000DBCF4EF5010EDBCF4FF59CD0010EE66EFB -:102C2000B1EC09F0E552010E2DC0DBFF020E2EC003 -:102C3000DBFF030E2FC0DBFF040E30C0DBFF040EF2 -:102C4000DBCF48F5030EDBCF49F5020EDBCF4AF5AB -:102C5000010EDBCF4BF5020EE66EB1EC09F0E5524A -:102C6000010E2DC0DBFF020E2EC0DBFF030E2FC0B6 -:102C7000DBFF040E30C0DBFF040EDBCF4CF5030E90 -:102C8000DBCF4DF5020EDBCF4EF5010EDBCF4FF55E -:102C900061D0010EE66ED9EC09F0E552010E2DC0AF -:102CA000DBFF020E2EC0DBFF030E2FC0DBFF040E86 -:102CB00030C0DBFF040EDBCF48F5030EDBCF49F558 -:102CC000020EDBCF4AF5010EDBCF4BF5020EE66EAE -:102CD000D9EC09F0E552010E2DC0DBFF020E2EC02B -:102CE000DBFF030E2FC0DBFF040E30C0DBFF040E42 -:102CF000DBCF4CF5030EDBCF4DF5020EDBCF4EF5EF -:102D0000010EDBCF4FF526D0010EE66EF5EC09F093 -:102D1000E552050EF3CFDBFF060EF4CFDBFF060E08 -:102D2000DBCF48F5050EDBCF49F5020EE66EF5EC7C -:102D300009F0E552050EF3CFDBFF060EF4CFDBFF03 -:102D4000060EDBCF4AF5050EDBCF4BF503D00501B0 -:102D5000020E436F400EE66E400EE66E050EE66E06 -:102D6000010EE66E010EE66E11EC23F0006E050E0C -:102D7000E15E0050F3CF49F1F4CF4AF1400EE66E28 -:102D8000000EE66E050EE66EE66A010EE66E11ECCA -:102D900023F0006E050EE15E0050F3CF47F1F4CF53 -:102DA00048F1AAEF1DF005010851030A37E0010AB6 -:102DB00025E0030A13E0010A01E040D005010951B2 -:102DC000921205010A51931205010B51941205014B -:102DD0000C51951205010D51961235D00501091DB2 -:102DE000921605010A1D931605010B1D9416050187 -:102DF0000C1D951605010D1D961625D00501091D02 -:102E0000891605010A1D8A1605010B1D8B16050181 -:102E10000C1D8C1605010D1D8D1615D005010951CF -:102E2000891205010A518A1205010B518B12050105 -:102E30000C518C1205010D518D1205D0030EE66E5A -:102E4000F3EC32F0E552400EE66E000EE66E050E33 -:102E5000E66EE66A010EE66E11EC23F0006E050EDA -:102E6000E15E0050F3CF47F1F4CF48F1AAEF1DF037 -:102E700005010851020A09E0030A01E01CD009C556 -:102E8000E6FF6AEC2DF0E5521BD009C5E6FF71ECB8 -:102E90002DF0E5521EEC0EF000090CE0E66A010E82 -:102EA000E66E030EE66E51EC09F0E552E552E5528E -:102EB0001AEC0EF005D0010EE66EF3EC32F0E5529E -:102EC000400EE66E000EE66E050EE66EE66A010E38 -:102ED000E66E11EC23F0006E050EE15E0050F3CFBC -:102EE00047F1F4CF48F1AAEF1DF005010851060A99 -:102EF00002E1CAEF1CF0080A02E18AEF1CF0030AA3 -:102F000002E184EF1CF0070A02E125EF1CF0030A3E -:102F100001E1E8D3010A01E1FAD20F0A01E1E3D2AB -:102F2000020A01E19BD2150A01E15FD2140A01E114 -:102F300031D2070A01E103D2010A01E1D5D1030A26 -:102F400001E1A7D1010A01E1A1D10C0A01E127D1D8 -:102F5000030A01E195D0040A02E0F2EF1CF005013A -:102F6000090504E0030E0501095D40E10AC5E6FF1D -:102F7000010EE66E25EC32F0E552E5520BC5E6FF98 -:102F8000020EE66E25EC32F0E552E5520CC5E6FF86 -:102F9000030EE66E25EC32F0E552E5520DC5E6FF74 -:102FA000040EE66E25EC32F0E552E5520EC5E6FF62 -:102FB000050EE66E25EC32F0E552E5520FC5E6FF50 -:102FC000060EE66E25EC32F0E552E55210C5E6FF3E -:102FD000070EE66E25EC32F0E552E55211C5E6FF2C -:102FE000080EE66E25EC32F0E552E552020E0501C0 -:102FF000095D04E0030E0501095D40E10AC5E6FF35 -:10300000090EE66E25EC32F0E552E5520BC5E6FFFF -:103010000A0EE66E25EC32F0E552E5520CC5E6FFED -:103020000B0EE66E25EC32F0E552E5520DC5E6FFDB -:103030000C0EE66E25EC32F0E552E5520EC5E6FFC9 -:103040000D0EE66E25EC32F0E552E5520FC5E6FFB7 -:103050000E0EE66E25EC32F0E552E55210C5E6FFA5 -:103060000F0EE66E25EC32F0E552E55211C5E6FF93 -:10307000100EE66E25EC32F0E552E552F7EF1CF04B -:1030800000C540F50501416B0501030E426F0501C6 -:10309000436B010EE66E45EC32F0E5520501486FD8 -:1030A000020EE66E45EC32F0E5520501496F030E63 -:1030B000E66E45EC32F0E55205014A6F040EE66E0D -:1030C00045EC32F0E55205014B6F050EE66E45EC1E -:1030D00032F0E55205014C6F060EE66E45EC32F01B -:1030E000E55205014D6F070EE66E45EC32F0E552F4 -:1030F00005014E6F080EE66E45EC32F0E552050113 -:103100004F6F090EE66E45EC32F0E5520501506F47 -:103110000A0EE66E45EC32F0E5520501516F0B0EDA -:10312000E66E45EC32F0E5520501526F0C0EE66E8C -:1031300045EC32F0E5520501536F0D0EE66E45EC9D -:1031400032F0E5520501546F0E0EE66E45EC32F09A -:10315000E5520501556F0F0EE66E45EC32F0E55273 -:103160000501566F100EE66E45EC32F0E552050192 -:10317000576F400EE66E400EE66E050EE66E010ECF -:10318000E66E010EE66E11EC23F0006E050EE15EB8 -:103190000050F3CF49F1F4CF4AF1F7EF1CF0E66AA3 -:1031A000010EE66E25EC32F0E552E552010EE66EB8 -:1031B000020EE66E25EC32F0E552E552E66A030EA9 -:1031C000E66E25EC32F0E552E552E66A040EE66E54 -:1031D00025EC32F0E552E552E66A050EE66E25EC86 -:1031E00032F0E552E552E66A060EE66E25EC32F064 -:1031F000E552E552030EE66E070EE66E25EC32F060 -:10320000E552E552E80EE66E080EE66E25EC32F069 -:10321000E552E552E66A090EE66E25EC32F0E5521B -:10322000E552010EE66E0A0EE66E25EC32F0E5522E -:10323000E552E66A0B0EE66E25EC32F0E552E552F9 -:10324000E66A0C0EE66E25EC32F0E552E552E66ACF -:103250000D0EE66E25EC32F0E552E552E66A0E0EF2 -:10326000E66E25EC32F0E552E552030EE66E0F0EE7 -:10327000E66E25EC32F0E552E552E80EE66E100EF1 -:10328000E66E25EC32F0E552E552B1D316EC08F0CB -:10329000AED3060E09C5DBFF050E0AC5DBFF080E1F -:1032A0000BC5DBFF070E0CC5DBFF0A0E0DC5DBFFF0 -:1032B000090E0EC5DBFF090EDBCFE6FF0A0EDBCFE2 -:1032C000E6FF070EDBCFE6FF080EDBCFE6FF050EBD -:1032D000DBCFE6FF060EDBCFE6FF50EC0AF0006E18 -:1032E000060EE15E005083D3060E09C5DBFF050E16 -:1032F0000AC5DBFF080E0BC5DBFF070E0CC5DBFFA5 -:103300000A0E0DC5DBFF090E0EC5DBFF090EDBCF74 -:10331000E6FF0A0EDBCFE6FF070EDBCFE6FF080E67 -:10332000DBCFE6FF050EDBCFE6FF060EDBCFE6FFC9 -:1033300059EC0AF0006E060EE15E005058D3060EFE -:1033400009C5DBFF050E0AC5DBFF080E0BC5DBFF59 -:10335000070E0CC5DBFF0A0E0DC5DBFF090E0EC5FF -:10336000DBFF090EDBCFE6FF0A0EDBCFE6FF070E21 -:10337000DBCFE6FF080EDBCFE6FF050EDBCFE6FF77 -:10338000060EDBCFE6FF62EC0AF0006E060EE15E91 -:1033900000502DD3060E09C5DBFF050E0AC5DBFF65 -:1033A000080E0BC5DBFF070E0CC5DBFF0A0E0DC5B3 -:1033B000DBFF090E0EC5DBFF090EDBCFE6FF0A0EB1 -:1033C000DBCFE6FF070EDBCFE6FF080EDBCFE6FF25 -:1033D000050EDBCFE6FF060EDBCFE6FF73EC0AF04F -:1033E000006E060EE15E005002D3060E09C5DBFF3B -:1033F000050E0AC5DBFF080E0BC5DBFF070E0CC56B -:10340000DBFF0A0E0DC5DBFF090E0EC5DBFF0C0E40 -:103410000FC5DBFF0B0E10C5DBFF11C5E6FF0B0E62 -:10342000DBCFE6FF0C0EDBCFE6FF090EDBCFE6FFBE -:103430000A0EDBCFE6FF070EDBCFE6FF080EDBCF81 -:10344000E6FF050EDBCFE6FF060EDBCFE6FF82ECE4 -:103450000AF0006E090EE15E0050C9D2060E09C5E1 -:10346000DBFF050E0AC5DBFF080E0BC5DBFF070EF1 -:103470000CC5DBFF0A0E0DC5DBFF090E0EC5DBFF19 -:103480000C0E0FC5DBFF0B0E10C5DBFF0E0E12C5B9 -:10349000DBFF0D0E13C5DBFF0D0EDBCFE6FF0E0EBF -:1034A000DBCFE6FF11C5E6FF0B0EDBCFE6FF0C0E10 -:1034B000DBCFE6FF090EDBCFE6FF0A0EDBCFE6FF30 -:1034C000070EDBCFE6FF080EDBCFE6FF050EDBCFF6 -:1034D000E6FF060EDBCFE6FFE0EC0BF0006E0B0E16 -:1034E000E15E005084D2060E0AC5DBFF050E0BC557 -:1034F000DBFF050EDBCFE6FF060EDBCFE6FF09C5DF -:10350000E6FF51EC09F0E552E552E55270D2060EA5 -:103510000AC5DBFF050E0BC5DBFF080E0CC5DBFF84 -:10352000070E0DC5DBFF0A0E0EC5DBFF090E0FC52A -:10353000DBFF090EDBCF2FF00A0EDBCF30F066EC9D -:1035400024F02EC008F02FC009F030C00AF031C0BE -:103550000BF0330E336EE20E346EC20E356E420E39 -:10356000366E08C02EF009C02FF00AC030F00BC034 -:1035700031F080EC25F02EC004F02FC005F030C0F3 -:1035800006F031C007F0CC0E336EBC0E346E8C0EDC -:10359000356E3B0E366E04C02EF005C02FF006C00F -:1035A00030F007C031F080EC25F01CEC26F02DC087 -:1035B00000F02EC001F02FC002F030C003F000C0B8 -:1035C000E6FF01C0E6FF02C0E6FF03C0E6FF070E0C -:1035D000DBCF2FF0080EDBCF30F066EC24F02EC0EE -:1035E00014F02FC015F030C016F031C017F0330EB4 -:1035F000336EE20E346EC20E356E420E366E14C05D -:103600002EF015C02FF016C030F017C031F080EC4E -:1036100025F02EC010F02FC011F030C012F031C0D4 -:1036200013F0BD0E336E370E346E860E356E410EBE -:10363000366E10C02EF011C02FF012C030F013C043 -:1036400031F080EC25F01CEC26F02DC00CF02EC0E3 -:103650000DF02FC00EF030C00FF00CC0E6FF0DC013 -:10366000E6FF0EC0E6FF0FC0E6FF050EDBCF2FF032 -:10367000060EDBCF30F066EC24F02EC01CF02FC01D -:103680001DF030C01EF031C01FF0330E336EE20E5D -:10369000346EC20E356E420E366E1CC02EF01DC04A -:1036A0002FF01EC030F01FC031F080EC25F01CEC74 -:1036B00026F02DC018F02EC019F02FC01AF030C01F -:1036C0001BF018C0E6FF19C0E6FF1AC0E6FF1BC0DA -:1036D000E6FF09C5E6FF96EC08F0206E0D0EE15EF0 -:1036E000205085D1060E0AC5DBFF050E0BC5DBFF9A -:1036F000080E0CC5DBFF070E0DC5DBFF0EC5E6FF90 -:10370000070EDBCF2FF0080EDBCF30F066EC24F095 -:103710002EC008F02FC009F030C00AF031C00BF005 -:10372000330E336EE20E346EC20E356E420E366EBE -:1037300008C02EF009C02FF00AC030F00BC031F0E5 -:1037400080EC25F02EC004F02FC005F030C006F04C -:1037500031C007F0CC0E336EBC0E346E8C0E356E5D -:103760003B0E366E04C02EF005C02FF006C030F0C0 -:1037700007C031F080EC25F01CEC26F02DC000F0E5 -:103780002EC001F02FC002F030C003F000C0E6FFF1 -:1037900001C0E6FF02C0E6FF03C0E6FF050EDBCF77 -:1037A0002FF0060EDBCF30F066EC24F02EC014F0C4 -:1037B0002FC015F030C016F031C017F0330E336E45 -:1037C000E20E346EC20E356E420E366E14C02EF00E -:1037D00015C02FF016C030F017C031F080EC25F086 -:1037E0002EC010F02FC011F030C012F031C013F015 -:1037F000BD0E336E370E346E860E356E410E366E4C -:1038000010C02EF011C02FF012C030F013C031F0F4 -:1038100080EC25F01CEC26F02DC00CF02EC00DF035 -:103820002FC00EF030C00FF00CC0E6FF0DC0E6FF59 -:103830000EC0E6FF0FC0E6FF09C5E6FFD9EC08F0B1 -:10384000186E0A0EE15E1850D2D0060E0AC5DBFFD4 -:10385000050E0BC5DBFF0CC5E6FF050EDBCF2FF019 -:10386000060EDBCF30F066EC24F02EC008F02FC03F -:1038700009F030C00AF031C00BF0330E336EE20EA7 -:10388000346EC20E356E420E366E08C02EF009C080 -:103890002FF00AC030F00BC031F080EC25F02EC0C4 -:1038A00004F02FC005F030C006F031C007F0BD0EA7 -:1038B000336E370E346E860E356E410E366E04C092 -:1038C0002EF005C02FF006C030F007C031F080ECBC -:1038D00025F01CEC26F02DC000F02EC001F02FC00A -:1038E00002F030C003F000C0E6FF01C0E6FF02C0F6 -:1038F000E6FF03C0E6FF09C5E6FF17EC09F00C6E12 -:10390000060EE15E0C5073D009C5E6FF2FEC09F0FE -:10391000E5526DD000C540F50501416B0501030E70 -:10392000426F0501436B010EE66E05EC0AF0E552AD -:10393000050EF3CFDBFF060EF4CFDBFF060EDBCF69 -:1039400048F5050EDBCF49F5020EE66E05EC0AF0F0 -:10395000E552050EF3CFDBFF060EF4CFDBFF080EBA -:10396000DBCF4AF5070EDBCF4BF5400EE66E400E7F -:10397000E66E050EE66E010EE66E010EE66E11ECC9 -:1039800023F0006E050EE15E0050F3CF49F1F4CF55 -:103990004AF12DD000C540F50501416B0501030E2C -:1039A000426F0501436B14EC0EF0000904E00501C1 -:1039B000010E486F02D00501486B400EE66E400EC6 -:1039C000E66E050EE66E010EE66E010EE66E11EC79 -:1039D00023F0006E050EE15E0050F3CF49F1F4CF05 -:1039E0004AF105D0010EE66EF3EC32F0E552400EDE -:1039F000E66E000EE66E050EE66EE66A010EE66EF7 -:103A000011EC23F0006E050EE15E0050F3CF47F19C -:103A1000F4CF48F19FD0010149514A1102E1000E53 -:103A200008D049C1E9FF4AC1EAFFEF50800B01E02D -:103A3000010E00094DE10101010E516F0501406BBE -:103A400001014C514C2B0501416F0501050E426FE0 -:103A50000501436B0501486B1C0E006E650E016E7F -:103A6000026A00C0E6FF01C0E6FF02C0E6FF480EA2 -:103A7000E66E050EE66E09EC32F0036E050EE15EB1 -:103A80000350400EE66E400EE66E050EE66E010E29 -:103A9000E66E010EE66E11EC23F0006E050EE15E9F -:103AA0000050F3CF49F1F4CF4AF1400EE66E000E1C -:103AB000E66E050EE66EE66A010EE66E11EC23F088 -:103AC000006E050EE15E0050F3CF47F1F4CF48F1F0 -:103AD00041D0010149514A1102E1000E08D049C10B -:103AE000E9FF4AC1EAFFEF50800B01E0010E000937 -:103AF00031E100C540F50501416B0501030E426F40 -:103B00000501010E436F400EE66E400EE66E050E97 -:103B1000E66E010EE66E010EE66E11EC23F0006E0D -:103B2000050EE15E0050F3CF49F1F4CF4AF1400EAB -:103B3000E66E000EE66E050EE66EE66A010EE66EB5 -:103B400011EC23F0006E050EE15E0050F3CF47F15B -:103B5000F4CF48F10F0EE15C02E2E16AE552E16E5A -:103B6000E552E7CFD9FF120001015251531104E190 -:103B7000100E526F270E536F5207000E535B6DA24B -:103B800007D0525153112EE18C748CB413D027D02E -:103B90000101005102E18C9422D0000502E18C84E5 -:103BA00009D0020E005D02E18C8419D0040E005D84 -:103BB00003E18C948C861200100E005D06E1010179 -:103BC000525153110FE18C740AD0200E005D0AE1AE -:103BD00001015251531106E18C748CA402D08C96D1 -:103BE00012008C8612001200120012001200A9EFBF -:103BF00030F012001E0EE66E010EE66EDFEC22F0D3 -:103C0000E552E552400EE66E000EE66E050EE66EDB -:103C1000E66A010EE66E11EC23F0006E050EE15E21 -:103C20000050F3CF47F1F4CF48F112006D84010149 -:103C3000080E6A6F070E6B6F6A07000E6B5B6A51A6 -:103C40006B11FAE16D941200D9CFE6FFE1CFD9FFF5 -:103C5000FD0EDBCF2FF0FE0EDBCF30F0010E2F1864 -:103C600001E1305033E0E8682F1802E1E8683018CD -:103C70002BE0030E2F1801E1305024E0040E2F1822 -:103C800001E130501DE0020E2F1801E1305016E026 -:103C9000170E2F1801E130500FE0160E2F1801E11A -:103CA000305008E0150E2F1801E1305001E010D01F -:103CB000A1DF0FD09EDF0DD09ADF0BD096DF09D0A9 -:103CC00092DF07D091DF05D091DF03D0000001D053 -:103CD00000D0010E00D0E552E7CFD9FF12004BD83B -:103CE000E652D0B202D0010E15D0D0B802D0020EEA -:103CF00011D0D0B002D0030E0DD0D0B602D0040E39 -:103D000009D0FCAE02D0050E05D0FCAC02D0060EE8 -:103D100001D0070EDF6ED088D086D084D082D080CC -:103D2000FC9EFC9CDF50E552E552E7CFD9FF120024 -:103D3000E65221D8020EE126F350DF6E010EF4CFD9 -:103D4000DBFF1200C00EE66EE00EE66ED7EC32F03E -:103D5000E552E5521200DF50F36E010EDB50F46EB7 -:103D6000020EE15C1200DFCFE6FFE66A25EC32F0DE -:103D7000E552E5521200D9CFE6FFE1CFD9FF12009C -:103D8000B8EC23F06A6A686AEBEC23F06D8C6E6A1B -:103D90009BEC23F06D9CDF6ACCEC23F010E2DF504B -:103DA000040DF3CFE9FFF4CFEAFF000EE926040E7D -:103DB000EA22EE6AEE6AEE6AEE6ADF2AEDD7160EA6 -:103DC000706E68A604D0030E61EC23F0FAD70101EF -:103DD000136B186B196B1A6B6D98080E0B6F040E32 -:103DE0000C6F016B006BE55276EF23F0B8EC23F01B -:103DF000010100510BE16D6A696AEBEC23F06DB6CD -:103E000002D06D86FCD70101010E006F000508E1AC -:103E10006DBA06D0686A696A69806988020E006FA7 -:103E20006850040B07E06950040B04E0020E61ECDB -:103E300023F089D86DB247D06850010B14E0695067 -:103E4000010B11E09DDF0101040E006F0401200E43 -:103E5000026F040E036F080E016F006B8C0E0013CF -:103E6000E66A2AEC24F06850100B07E06950100B4A -:103E700004E060D8040E61EC23F06850400B0BE0C6 -:103E80006950400B08E0F2EC23F0020E69EC23F0DD -:103E9000060E61EC23F06850200B04E06950200B03 -:103EA00001E035D86850020B0AE06950020B07E0C8 -:103EB000F2EC23F0E668E6684AEC24F06A6A040E45 -:103EC0000101005D02E2A19A1FD069A61CD0DF6A41 -:103ED000040EDF5C18E268A616D06CCF20F1030E4A -:103EE00061EC23F0780E0101201502E138D809D0E9 -:103EF000000EE66EE66A200EE66E010EE66E010E1C -:103F0000E8DBDF2AE5D7A19AE55276EF23F070A02F -:103F10000ED084EC23F0EF50800808E1D5DBEF50A1 -:103F2000840804E184EC23F08C0EEF6E7090050E93 -:103F300061EF23F06984040EC4DB6D82A4EC23F0EE -:103F4000040E69EF23F0A4EC23F0030EC2DB6D92A4 -:103F5000699468A403D0020EB4DBFBD71200B8EC5E -:103F600023F0FD0E010120153DE17E0E2015E840F5 -:103F70007F0B040DF3CF03F1F4CF04F1000E032700 -:103F8000040E042303C105F104C106F10575BCDB71 -:103F9000EF503C0BE842E8420D0822E1B5DB21EC92 -:103FA00024F0EECF00F0EFCF01F0280E001816E15C -:103FB000040E011813E15BEC24F0DF6AEDDB0EE286 -:103FC000DF50D4EC23F0DF50EA6A200FE96E040ED4 -:103FD000EA22E552E750EF6EDF2AF0D70AD807D081 -:103FE0001AD805D0FD0E2015040801E122D8E552AB -:103FF0007DD36ADBEF50800B02E066DBEF6A0101E4 -:104000000F6B106B146B156B136B64D89DDB170E65 -:1040100060DB9FEF21F0020E0101105D02E12CEF49 -:1040200022F034D80101215102E126EF24F0216B66 -:1040300012009EDB49DBEF50400B01E0010EDF6E0A -:1040400001010B75080E005D09E122C46EFF6E5080 -:10405000000802E2100E01D0040E006F100513E1FB -:104060005FEC24F0A6D9020E01010F5D03E12CDB09 -:10407000840E07D0DF5003E127DBC80E02D024DB1B -:10408000880EEF6E01D002D8E55230D32BDB010150 -:10409000106B1ADBEF6A040E0B19006E0CC101F0F5 -:1040A000DE6E0CC1DDFF19DBEF6A18AF0CD01B51BF -:1040B0001C1107E005D01CC1FAFF01011B51F96E6C -:1040C000FADF0101189F020EE15C02E2E16AE552AB -:1040D000E16E0CD304012051600BE842E842E84253 -:1040E000E842E842000901E0120021510C0A45E0D3 -:1040F0000B0A3FE00C0A31E0010A22E00B0A1EE045 -:10410000020A1CE0030A18E0080A10E0010A0CE0A9 -:104110000F0A08E0030A01E012000101138F080EE4 -:10412000006F12001FEF21F088EF22F00101010E55 -:10413000116F010E126F0CD060EF21F0BEEF20F076 -:1041400024510101116F126B020E1127010E12236F -:104150001381010E146F138F12000101138F0401DC -:104160002451EA6A020FE96E010EEA2222C4EFFF2F -:104170001200EADA160E69EF23F012007EDB040E5D -:10418000E1260401220510E120511F0B00090CE17A -:104190000101138F030E0401215D04E10101010EF1 -:1041A0001F6F02D001011F6B0401225141E1205118 -:1041B0001F0B02083DE124510F0B000939E00101FA -:1041C000138F040124BF05D0A4DA070EE926010EDF -:1041D00004D09FDA0B0EE926010ED2DA030E215D20 -:1041E00003E17BDA840E23D024510F0B016A700F98 -:1041F000006E0F0E0122020E00C0DBFF030E01C095 -:10420000DBFF020EDBCFE9FF030EDBCFEAFFEE9010 -:10421000ED5224AF06D061DAEF6ADF745EDA400E49 -:1042200006D05BDA880EEF6EDF7457DAC80EEF6ED9 -:10423000040EE15C02E2E16AE552E16E57D2800EC3 -:104240000401205D3CE10101C00E136F0401235104 -:10425000030A1EE0010A09E0030A2FE10101200E12 -:10426000116F620E126F120E22D0C3DACA0EF6263A -:10427000620EA2DA020E0101F76A1125F66E1251E2 -:10428000F7220900F5CF14F10A00F5CF15F112005D -:10429000030E225D0FE2ADDACC0EF626620E8CDA4A -:1042A00011C1F6FF12C1F7FF0800F5500101146FAC -:1042B000156B12000101136B12000101136B120048 -:1042C00011DA0401286B296B20511F0B020A11E03F -:1042D000030A0CE0010A22E10101138F0401288185 -:1042E00001011F051BE10401288318D00101138F70 -:1042F00015D00101138F040124BF05D00ADA070E7F -:10430000E926010E04D005DA0B0EE926010E38DA93 -:10431000E4D9EF50040B02E0010E286F010113AF46 -:1043200007D0280E116F040E126F1381020E146F46 -:10433000020EE15C02E2E16AE552E16ED7D16D98CE -:10434000010113BF08D018AF02D061DA2AD07EDA9B -:10435000BBD9840E27D018BF2BD0040120AF24D0A6 -:10436000010114510401265D010115510401275971 -:1043700004E226C414F127C415F11BD80101010E73 -:10438000106FA1DA800EEF6E216BBED9EE52080ECF -:10439000EF6E91DAB9D9840EEF6E010E216F8FDACC -:1043A00093D9C80EEF6E1200010131DAC80EEF6E1C -:1043B000120098D90101080E145D000E15590DE286 -:1043C00014C1DEFF15C1DDFF0F5102E1010E03D064 -:1043D0000F0506E1020E0F6F03D0080EDE6EDD6AD8 -:1043E00073D9EF9271D9EF906FD9010EDB50EF12B4 -:1043F0006BD9EE52DFCFEFFF000EDB50145F010EE2 -:10440000DB50155B280E1D6F040E1E6F13B10FD00D -:10441000F7D91BE011C1F6FF12C1F7FF112B000EF7 -:1044200012230800F55096D9F3E2DB06F1D7E8D95C -:104430000CE011C1E9FF12C1EAFF112B000E12239B -:10444000EF5088D9F4E2DB06F2D7020EE15C02E21B -:10445000E16AE552E16E4AD145D956D9EE52EFCF25 -:10446000DFFFDFCF00F000500101195D000E1A5987 -:1044700003E219C1DFFF09D0DF50006E016AE85086 -:10448000195D196F01501A591A6F010EDB6ADF505E -:10449000F36E010EDBCFF4FFF350F45C10E2010E7B -:1044A000DB5082D916C1E9FF17C1EAFF162B000EB7 -:1044B0001723E552E750EF6E010EDB2AE8D7000E16 -:1044C000D8801955000E1A550DE2F4D854D91CD9CC -:1044D000EF50400B03E1EAD9C80E02D0E7D9880EAD -:1044E000EF6E0FD0F0D9840EEF6E1B511C1107E058 -:1044F00005D01CC1FAFF01011B51F96EFADF010161 -:10450000189F020EE15C02E2E16AE552E16EEED034 -:104510000101138F10D9010EE66EE66AE66A020EFB -:10452000E66E010EAFD922C401F10401225104E16B -:104530000101100E006F12000101200E006F04D95E -:10454000150E69EF23F0CED8000EDE6E040EDD6E80 -:10455000E8D8040DF350006E016A020E0F0B05E05F -:10456000D89001320032E806FBE1D89000360136DF -:10457000D89000360136D9CFE9FFDACFEAFF0050F4 -:10458000EE260150ED22A9D8EF9EFD0EDB5002E190 -:104590006AD901D06DD9EA22DECFEEFFDDCFEDFF83 -:1045A0009CD8EF9C9AD8040EE926000EEA22EF8CE4 -:1045B000020EE15C02E2E16AE552E16E97D092D828 -:1045C000FE0EDB50016A700F006E0F0EDFD885D82B -:1045D000FD0EDBCFEFFFDBA402D0E66AF5D8FD0EBF -:1045E000DBA203D0010EE66EEFD8020EE15C02E220 -:1045F000E16AE552E16E7AD075D8FE0EDB5005E136 -:1046000025D962D8840EEF6E05D08BD80CD989D805 -:10461000010F09D9020EE15C02E2E16AE552E16EA6 -:1046200065D060D8FD0EDB5002E022D901D01BD945 -:10463000A7D853D806D9FB0EDBCFEEFFFC0EDBCF9D -:10464000EDFF4BD8EE52FA0EDBCFEFFF400E45D810 -:10465000E850EF16880E41D8E850EF12FD0EDB50FF -:1046600002E006D901D0FFD8EA22EF74DECF00F0D5 -:10467000DDCF01F000C0F3FF01C0F4FF020EE15CEA -:1046800002E2E16AE552E16E31D0F7D8010EF36E35 -:10469000FC0EDB5004E0D890F336E806FCE1F31C96 -:1046A000006EFD0EDBCFE9FFFE0EDBCFEAFF005010 -:1046B000EF161CD0FBD8EE52080EEF6EF7D821EFA4 -:1046C00024F0E66E2AEF24F00BC1E9FF0CC1EAFFEB -:1046D0001200E66EE66A4AEF24F0DECFE9FFDDCF96 -:1046E000EAFF1200CAD8020EE1261200E552E7CF17 -:1046F000D9FF1200D6D856EF24F0FE0EEA6ADB345A -:10470000FE0BEA36E96E120003C1E9FF04C1EAFFBD -:10471000120024510F0BE96EEA6AD890E936EA36A6 -:104720001200FD0EDB50E824026EFE0EDB50040D7D -:10473000F35002241200000EE66EE66AE66A710E7D -:10474000E66E0F0E42EF24F0000EE66EE66AE66EAD -:10475000E66A1200E66E1DC1E9FF1EC1EAFF1D2BCD -:10476000000E1E23E552E750EF6EDF06010E120029 -:1047700084D8E6521200280EEE6E040EED6E120082 -:10478000EA22EECFDEFFEDCFDDFF1200012200C0F6 -:10479000DEFF01C0DDFF1200DF50006E016A080E6F -:1047A000005C000E01581200EA6A280FE96E040E40 -:1047B000EA22EF50E66E1200F7220900F5CF11F160 -:1047C0000A00F5CF12F11200FE0EDBCFE6FFBBDED2 -:1047D000E552E5521200160E6F6E9F0E6B6E7B0E49 -:1047E000696E1200010EE66EE66A000EE66EE66A7B -:1047F00012002251F66EF76AD890F636F73612009C -:10480000D9CFE9FFDACFEAFFEE50ED101200020E29 -:10481000106F5ADFEE52EF6A57DFC80EEF6E4ADFB5 -:10482000AADF56EF24F0040DF3CF00F0F4CF01F02F -:10483000000E0026040EAADF840E4FDFE850EF12B0 -:104840001200020EE926000EEA2212003CD88C0E5D -:10485000EF6E1200680EE66E0F0EE66E16DFE55282 -:10486000E552E552120049DF070EE926010E12005B -:1048700044DF0B0EE926010E1200D9CFE6FFE1CF8F -:10488000D9FF1200E66EEFEC31F0006E050EE15E2E -:104890000050120024EC1EF0006E060EE15E005087 -:1048A0001200200EEE6E040EED6E120005C1E9FF3F -:1048B00006C1EAFF120028DFC4DF51EF24F004DF55 -:0C48C000C0DFBBEF23F0F6DE7AEF23F040 -:0448CC00389E08D03A -:1048D000389E30AE05D02F6C301EE86A3022388EFC -:1048E00030C02AF02FC029F03C6A3B6A8E0E2B6E36 -:1048F0002C6ACDEF26F0389E0CD0389E30AE09D011 -:104900002D6C2E1E2F1E301EE86A2E222F223022E2 -:10491000388E30C02AF02FC029F02EC03CF02DC0B8 -:104920003BF09E0E2B6E2C6ACDEF26F0367E386A59 -:1049300009EC27F021EC27F038B6B1EF26F038A2C9 -:104940000AD038AA03D038BEB1EF26F038A4BDEFA4 -:1049500026F0BAEF26F038AA05D038ACBDEF26F025 -:10496000BAEF26F038A00AD038A808D038BE04D054 -:1049700038A402D0C6EF26F0CAEF26F03B6A2C6AB4 -:104980003650315C3A6E10E32EC03CF02FC029F057 -:1049900030C02AF031C039F033C02EF034C02FF0CF -:1049A00035C030F0383A09D033C03CF034C029F07B -:1049B00035C02AF036C039F03A6C389E38BC388E93 -:1049C00039C02BF038B0F9EF26F01A0E3A60F9EF43 -:1049D00026F02B6A316A38A408D02E6C2F1E301EA8 -:1049E000311EE86A2F223022312238AC08D03C6CCC -:1049F000291E2A1E2B1EE86A29222A222B222D6A12 -:104A00003A5207E0313430322F322E322D323A2EE4 -:104A1000F9D72E503C262F50292230502A223150CF -:104A20002B222DC03BF0389E2BAE0BD03B6C3C1E96 -:104A3000291E2A1E2B1EE86A3C2229222A222B220A -:104A4000388E2BA006D0D8802A3229323C323B3215 -:104A5000392A39C02BF0CDEF26F0386A09EC27F05F -:104A600021EC27F038B6B1EF26F038A205D038BADD -:104A7000B1EF26F0B8EF26F038BAC4EF26F038A030 -:104A800005D038B8B1EF26F0C4EF26F038B8B8EF4B -:104A900026F02C6A7F0E31242B6EE86A2C223650C9 -:104AA0002B5EE86A2C5A1A0E396E316A3B6A3C6AF0 -:104AB000296A2A6A33502E5E34502F5A3550305AA4 -:104AC000000E315A09E733502E2634502F2235502C -:104AD0003022000E312201D03B8AD8902E362F365C -:104AE00030363136D8903B363C3629362A36392E88 -:104AF000E1D730502F102E10D8A43B8ACDEF26F0EE -:104B0000386A09EC27F021EC27F038B6B1EF26F02F -:104B100038A205D038B8B1EF26F0B8EF26F038AAA1 -:104B200005D038B0B1EF26F0B8EF26F038B002D09B -:104B300038A802D0C4EF26F02C6A365031242B6EF0 -:104B4000E86A2C227E0E2B5EE86A2C5A3B6A3C6A8D -:104B5000296A2A6A35503002F4CF2AF0F3CF29F0BF -:104B600034503002F3503C26F4502922000E2A2201 -:104B700035502F02F3503C26F4502922000E2A22F1 -:104B800033503002F3503B26F4503C22000E2922D1 -:104B90002A2234502F02F3503B26F4503C22000EC0 -:104BA00029222A2235502E02F3503B26F4503C2273 -:104BB000000E29222A2233502F02F4503B26000EE9 -:104BC0003C2229222A2234502E02F4503B26000E89 -:104BD0003C2229222A22CDEF26F0386A09EC27F060 -:104BE00038B6F7EF25F038A20ED038B405D07F0ED6 -:104BF000306EFF0E2F6E1FD0800E306E2F6A1BD0CE -:104C0000306A2F6A18D038B0FBD78F0E3160EDD7DD -:104C10007E0E3164F5D78E0E315C05E0D8903032CF -:104C20002F32312AF8D738A406D02F6C301EE86A0C -:104C3000302230AEE5D71200386A09EC27F038B6DA -:104C400026EF26F038A20FD038B407D07F0E306E92 -:104C5000FF0E2F6E2E6E2D6E25D0800E306E01D081 -:104C6000306A000EF6D738B0FBD72D6A9F0E316040 -:104C7000EBD77E0E3164F4D79E0E315C07E0D890FE -:104C800030322F322E322D32312AF6D738A40AD0C4 -:104C90002D6C2E1E2F1E301EE86A2E222F2230224F -:104CA00030AEDED712005CEC26F038B6000C38B01F -:104CB000000C38A4000C010C386A09EC27F021EC38 -:104CC00027F038B6120038AE08D038A004D038A883 -:104CD00002D038801200389012003650315C0BE15F -:104CE0003550305C08E134502F5C05E133502E5CC8 -:104CF00002E138801200D8A002D0388E10D0315096 -:104D000036C031F0366E305035C030F0356E2F5031 -:104D100034C02FF0346E2E5033C02EF0336E365028 -:104D2000315C10E0FF0F09E0389038B403D038AEA2 -:104D30003884120038AE38941200362AD8903532B2 -:104D40003432333233502E5E34502F5A3550305A6D -:104D500030BEEAD7D8902E362F363036312EF8D7DF -:104D6000C8D77F0E316EFF0E306E2F6E2E6E120082 -:104D70007F0E38BEFF0E316E02D07F0E316E800E78 -:104D8000306E2F6A2E6AF3D738AE04D0800E316EA3 -:104D9000306AF7D7316A306AF4D72A5029103C10AC -:104DA0003B10F8E02CBEF0D72ABE0CD02B502C10B4 -:104DB000EBE0D8903B363C3629362A362B06D8A075 -:104DC0002C06F2D72C50D4E12B28D2E03BAE11D0E8 -:104DD0007F0E3B1402E13CA00CD03C2AE86A292259 -:104DE0002A2207E3D8802A3229323C322B2A2B2868 -:104DF000BFE02B50C9E03CC02EF029C02FF02A3470 -:104E0000306E2B30316E3032319E38BE318EB7EF7E -:104E100026F03036313602E33884387E06E13880B9 -:104E2000316A306A2F6A2E6A1200312803E0D88076 -:104E300030321200D890303202E1388212003886C7 -:104E400012003536363602E3388C387E06E1388873 -:104E5000366A356A346A336A1200362803E0D8802D -:104E600035321200D8903532EAE1388A12005CEC13 -:104E700026F038B6000C38B0000C38B4000C010C29 -:104E8000376A35AE49EF27F0346C351EE86A3522B3 -:104E9000371E30AE51EF27F02F6C301EE86A3022FB -:104EA000371E3DEC33F030BE61EF27F037AE000C1B -:104EB0002F6C301EE86A30222B6C2C1EE86A2C22E4 -:0C4EC000000C37BE58EF27F03888FF0CBC -:044ECC00D9CFE6FF55 -:104ED000DACFE6FFE1CFD9FFE2CFDAFF1D0EE12402 -:104EE00002E3E168E652E16E67DAFA0EDBCFEEFF2D -:104EF000FB0EDBCFEEFFFC0EDBCFEEFFFD0EDBCFBC -:104F0000EEFFD950040FE66E000EDA20E66E0BDAE3 -:104F10008EEC2FF0006E060EE15C02E2E16AE552D3 -:104F2000E16E0050E76E0B0EE7CFDBFFDB50800831 -:104F300007E10A0EDB6ADE68DE68DE687F0E13D0EA -:104F40000B0EDB0405E1DE6ADE6ADE6ADD6AA6D1ED -:104F50000B0EDB50040809E1DB0EDE6E0F0EDE6E79 -:104F6000C90EDE6E3F0EDD6E99D1DDD91EDA2DC081 -:104F7000DEFF2EC0DEFF2FC0DEFF30C0DDFFDD52C2 -:104F8000DD52DBD90DDA3F0E20DA23E12E6A2F6ADB -:104F9000800E306E3F0E316EDECF33F0DECF34F058 -:104FA000DECF35F0DDCF36F0DD52DD522DEC25F0D1 -:104FB0002EC0DFFF010E2FC0DBFF020E30C0DBFF73 -:104FC000030E31C0DBFF020EF36E0C0EF3CFDBFFDE -:104FD00002D00C0EDB6AB1D9A30E336E300E346EE4 -:104FE000890E356E3E0EF1D96CE1AF0E2E6E670E56 -:104FF0002F6E3B0E306E3F0E316EB2D92EC008F0D0 -:105000002FC009F030C00AF031C00BF0C9D93F0EF3 -:10501000366E96EC24F02EC004F02FC005F030C0A0 -:1050200006F031C007F0C8D9EECF0CF0EECF0DF08E -:10503000EECF0EF0EFCF0FF00CC033F00DC034F018 -:105040000EC035F00FC036F097EC24F080D9D70EA3 -:10505000146EB30E156EDD0E166E3F0E176EACD9C4 -:10506000EECF18F0EECF19F0EECF1AF0EFCF1BF025 -:1050700018C033F019C034F01AC035F01BC036F038 -:1050800014C02EF015C02FF016C030F0316E97EC22 -:1050900024F02EC010F02FC011F030C012F031C03B -:1050A00013F02EC033F02FC034F030C035F031C0D3 -:1050B00036F035D92DEC25F05FD9DD52DD520C0EDE -:1050C000DB2A31D972D92DC000F02EC001F02FC0DB -:1050D00002F030C003F064D9390E366E2DC02EF0C8 -:1050E0007AD953EC26F0010A01E1B5D04ED938D96E -:1050F0000D0E2EC0DBFF0E0E2FC0DBFF0F0E30C0DB -:10510000DBFF100E31C0DBFF910E2E6E860E2F6E70 -:10511000500E306EBD0E316E0D0EDBCF33F00E0E25 -:10512000DBCF34F00F0EDBCF35F0100E4AD90FD99C -:10513000F60E336E100E346EF10E356EBE0E366EF8 -:1051400097EC24F0110E2EC0DBFF120E2FC0DBFFF8 -:10515000130E30C0DBFF140E31C0DBFF0D0EDBCFB2 -:1051600000F00E0EDBCF01F00F0EDBCF02F0100EC1 -:10517000DBCF03F0D30E336ECC0E346EB40E356E2F -:105180003F0E366ECCD897EC24F0150E2EC0DBFF08 -:10519000160E2FC0DBFF170E30C0DBFF180E31C01C -:1051A000DBFF0D0EDBCF2EF00E0EDBCF2FF00F0E40 -:1051B000DBCF30F0100EDBCF31F0110EDBCF33F050 -:1051C000120EDBCF34F0130EDBCF35F0140EF9D80E -:1051D000150EDBCF33F0160EDBCF34F0170EDBCF1E -:1051E00035F0180EDBCF36F02DEC25F0B0D8190EC7 -:1051F0002EC0DBFF1A0E2FC0DBFF1B0E30C0DBFF03 -:105200001C0E31C0DBFFC1D8190EDBCF33F01A0EF4 -:10521000DBCF34F01B0EDBCF35F01C0ED2D897D885 -:10522000CBD8EECF2EF0EECF2FF0EECF30F0EFCF89 -:1052300031F000C033F001C034F002C035F003C0DB -:1052400036F097EC24F031C0EDFF30C0EDFF2FC0F9 -:10525000EDFF2EC0EFFF0C0EDB0409E1920E006E95 -:105260000A0E016E060E3FD897EC24F016D00C0EF5 -:10527000DB50020806E1DB0E006E0F0E016EC90E58 -:1052800009D00C0EDB5003080BE1920E006E0A0EE3 -:10529000016E860E28D896EC24F06ED8DD52DD52D1 -:1052A0000A0EDB500AE049D87BD8BF0E366E37D8DD -:1052B00080EC25F061D8DD52DD52DECF2DF0DECF5F -:1052C0002EF0DECF2FF0DDCF30F0DD52DD521D0E9F -:1052D000E15C02E2E16AE552E16EE552E5CFDAFF18 -:1052E000E7CFD9FF1200026E3F0E036E65D8EECFF6 -:1052F00004F0EECF05F0EECF06F0EFCF07F004C0DC -:1053000033F005C034F006C035F007C036F000C0F9 -:105310002EF001C02FF002C030F0316E120000C03C -:105320002EF0EBEF29F048D8EECFE6FFEECFE6FF08 -:10533000EECFE6FFEFCFE6FF12003ED8EECF00F053 -:10534000EECF01F0EECF02F0EFCF03F012002EC04F -:1053500000F02FC001F030C002F031C003F01200A5 -:10536000000EDFCF33F0010EDBCF34F0020EDBCFC7 -:1053700035F0030EE1EF29F02EC0DEFF2FC0DEFF77 -:1053800030C0DEFF31C0DDFF1200DECF2EF0DECFF9 -:105390002FF0DECF30F0DDCF31F0DD52DD521200E4 -:1053A000336A346A800E356E12005BEC32F0E552DF -:1053B000E552E552E5521200D9CFE9FFDACFEAFF14 -:1053C0001200DBCF36F080EF25F0366EA8DF37EC29 -:1053D00027F0010A120001C02FF002C030F003C014 -:0453E00031F0120096 -:0C53E400D9CFE6FFDACFE6FFE1CFD9FF1A -:1053F000E2CFDAFF240EE12402E3E168E652E16E37 -:10540000D950FA0FE96EFF0EDA20EA6E020EEECFE7 -:10541000DBFF030EEECFDBFF040EEECFDBFF050E4E -:10542000EECFDBFFE8D9F2D98EEC2FF0006E060E3E -:10543000E15C02E2E16AE552E16E0050E76E0D0EBA -:10544000E7CFDBFFDB50800815E0A0D9336A346A70 -:10545000356A366A00C02EF001C02FF002C030F06D -:1054600003C031F053EC26F0010A10E1210E0101D6 -:10547000466F476B020EDB68030EDB68040EDB68C9 -:105480007F0EF36E050EF3CFDBFF66D10D0EDB5002 -:10549000050B01E061D10A0EDBCF00F00B0EDBCF74 -:1054A00001F0830E0026FF0E012200C0DEFF01C0C6 -:1054B000DDFFD950060F65D976D9DF50010B0FE01B -:1054C000DF06010E01E2DB06D950180F5AD9D89039 -:1054D000EF36010EEB36020EEB36030EEB36D9CF6C -:1054E000E9FFDACFEAFF020E346E356AEECF2FF015 -:1054F000EDCF30F040EC27F02FC0EEFF30C0EDFFD5 -:10550000140EDB6A150EDB6A160EDB6A170EDB6AF9 -:105510001C0EDB6A1D0EDB6A1E0EDB6A010EF36ECB -:105520001F0EF3CFDBFF010EF36E0E0EF3CFDBFF8A -:105530000F0EDB6A0E0EDBCF00F00F0EDBCF01F09B -:10554000D890015004E61A0E005C000E015801E3E9 -:1055500098D0180EDBCF00F0190EDBCF01F01A0E39 -:10556000DBCF02F01B0EDBCF03F0010E1F0B07E0B... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-17 20:27:36
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 1a98cc1a882658e4100bc99f990fd972304ed99e (commit) from 634f84d90d057f6820a840877038335e9984c830 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 1a98cc1a882658e4100bc99f990fd972304ed99e Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 17 21:27:11 2010 +0100 Corrected error in resetAllInterrupt() ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index 2db9c4f..e1266e8 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -366,7 +366,8 @@ void resetInterrupt(char axis, WORD type) { * #MOTOR_BOTH les 2 moteurs */ void resetAllInterrupt(char axis) { - resetInterrupt(axis, 0x0000); + writeCommand(axis, LM_CMD_RSTI); + writeDataWord(axis, 0x0000); } /** diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index c302441..ff89231 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 76a96c1..df1a37f 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,1563 +1,1562 @@ :020000040000FA -:0600000054EF33F0120082 +:0600000053EF33F0120083 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000054EF33F012007A -:0608080018EF13F01200CE -:0608180085EF13F0120051 -:06082A0004003D67000020 -:100830002601000021000000326700005401000082 -:100840000B00000025670000470100000D000000BC -:0C085000226700006C01000003000000A3 -:04085C009AEC0EF014 -:10086000030EE126010EE66EDCDAE552DF6E020EC3 -:10087000E66ED7DAE552E76E010EE7CFDBFF020E38 +:0608000053EF33F012007B +:0608080017EF13F01200CF +:0608180084EF13F0120052 +:06082A0004003B67000022 +:100830002601000021000000306700005401000084 +:100840000B00000023670000470100000D000000BE +:0C085000206700006C01000003000000A5 +:04085C009DEC0EF011 +:10086000030EE126010EE66EDFDAE552DF6E020EC0 +:10087000E66EDADAE552E76E010EE7CFDBFF020E35 :10088000DB6ADF1404E1010EDB50020B06E00A0E06 -:1008900091EC11F0020EA5EC0FF0040EDF140AE04B +:1008900093EC11F0020EA8EC0FF0040EDF140AE046 :1008A000010EDB50040B06E00101010E566F040E31 -:1008B000A5EC0FF0200EDF1404E1010EDB50200B3D -:1008C00006E00B0E91EC11F0200EA5EC0FF0DFAC62 +:1008B000A8EC0FF0200EDF1404E1010EDB50200B3A +:1008C00006E00B0E93EC11F0200EA8EC0FF0DFAC5D :1008D00002D0020EDB80010EDBAC02D0020EDB8206 :1008E000020EDBCF00F0000EE76E0018E8AE02D07B -:1008F000003403D0E750D88000540EE20101545177 -:1009000005E0F8EC11F02CEC09F0E552400EE66E33 -:10091000E66A020E4EEC10F0030EE15C02E2E16AC0 -:10092000E552E16E9FEF0EF09AEC0EF0FE0EDB50FA -:1009300006E1F80E96163C0E9416959808D0FE0E19 -:10094000DB0405E1070E9612C30E941295889FEF03 -:100950000EF0D9CFE6FFE1CFD9FFE652010EE66EE9 -:10096000E3DFE5528098FE0EDBA00FD0839C808AE7 -:100970000000839E0000000000008450010BDF6E29 -:10098000838E00000000DF04F4E0FE0EDBA20FD037 -:10099000838C809A0000839E000000000000845039 -:1009A000010BDF6E838E00000000DF04F4E0E552EF -:1009B000E552E7CFD9FF1200D9CFE6FFE1CFD9FF4B -:1009C000E652FD0EDB50DF6EFE0EDBCFE6FFC1DF31 -:1009D000E552E66AA9DFE552FE0EDB50010B02E0AC -:1009E000000E01D0010EE8B0838CE8A0839CFE0EBF -:1009F000DB50020B02E0000E01D0010EE8B0808A4D -:100A0000E8A0809A809800008096D9CFE9FFDACFDD -:100A1000EAFFEF50010B02E0848001D08490D9CF2F -:100A2000E9FFDACFEAFFEF50020B02E0848201D047 -:100A30008492D9CFE9FFDACFEAFFEF50040B02E04E -:100A4000848401D08494D9CFE9FFDACFEAFFEF5054 -:100A5000080B02E0838801D08398D9CFE9FFDACF71 -:100A6000EAFFEF50100B02E0828201D08292D9CFD0 -:100A7000E9FFDACFEAFFEF50200B02E0828E01D0CF -:100A8000829ED9CFE9FFDACFEAFFEF50400B02E0B8 -:100A9000828001D08290D9CFE9FFDACFEAFFEF5010 -:100AA000800B02E0828C01D0829C000000008086D6 -:100AB00000000000E552E552E7CFD9FF1200D9CF80 -:100AC000E6FFE1CFD9FF020EE126FC0EDBCFDEFF11 -:100AD000DBCFDDFFFE0EDBCFE6FF3BDFE552E66A54 -:100AE00023DFE552FE0EDB50010B02E0000E01D0C9 -:100AF000010EE8B0838CE8A0839CFE0EDB50020B55 -:100B000002E0000E01D0010EE8B0808AE8A0809AD1 -:100B1000808800008096D9CFE9FFDACFEAFFEE5255 -:100B2000EF50010B02E0848001D08490D9CFE9FF1F -:100B3000DACFEAFFEE52EF50020B02E0848201D0DE -:100B40008492D9CFE9FFDACFEAFFEE52EF50040BDF -:100B500002E0848401D08494D9CFE9FFDACFEAFFA0 -:100B6000EE52EF50080B02E0838801D08398D9CF72 -:100B7000E9FFDACFEAFFEE52EF50100B02E082827B -:100B800001D08292D9CFE9FFDACFEAFFEE52EF50DF -:100B9000200B02E0828E01D0829ED9CFE9FFDACF0E -:100BA000EAFFEE52EF50400B02E0828001D08290CB -:100BB000D9CFE9FFDACFEAFFEE52EF50800B02E027 -:100BC000828C01D0829C0000000080860000000022 -:100BD0008096D9CFE9FFDACFEAFFEF50010B02E0B0 -:100BE000848001D08490D9CFE9FFDACFEAFFEF50BB -:100BF000020B02E0848201D08492D9CFE9FFDACFE0 -:100C0000EAFFEF50040B02E0848401D08494D9CF32 -:100C1000E9FFDACFEAFFEF50080B02E0838801D04A -:100C20008398D9CFE9FFDACFEAFFEF50100B02E04B -:100C3000828201D08292D9CFE9FFDACFEAFFEF506A -:100C4000200B02E0828E01D0829ED9CFE9FFDACF5D -:100C5000EAFFEF50400B02E0828001D08290D9CFB2 -:100C6000E9FFDACFEAFFEF50800B02E0828C01D07F -:100C7000829C00000000808600000000020EE15C03 -:100C800002E2E16AE552E16EE552E7CFD9FF1200D8 -:100C9000D9CFE6FFE1CFD9FF020EE126FE0EDB043D -:100CA0000DE0FE0EDB50020809E00C0EE66EF4ECDF -:100CB00032F0E552F36AF46AAAD0A9D0FE0EDBCF77 -:100CC000E6FF47DEE552010EE66E2EDEE552FE0E31 -:100CD000DB50020B02E1000E01D0010EE8B0838C64 -:100CE000E8A0839CFE0EDB50010B02E1000E01D058 -:100CF000010EE8B0808AE8A0809A80880000839E78 -:100D00000000000000008450010B066E8450020BAE -:100D100001E0010EE824056E8450040B01E0010E91 -:100D2000040DF3CF04F08350100B01E0010E080D09 -:100D3000F3CF03F08250020B01E0010E100DF3CF50 -:100D400002F08250800B01E0010E200DF3CF01F084 -:100D50008250010B400DF3CF00F08250400B01E0B8 -:100D6000010E800DF350001001100210031004104A -:100D700005100610E76E010EE7CFDBFF838E000043 -:100D80000000839E0000000000008450010B066EEE -:100D90008450020B01E0010EE824056E8450040B20 -:100DA00001E0010E040DF3CF04F08350100B01E0BD -:100DB000010E080DF3CF03F08250020B01E0010E8B -:100DC000100DF3CF02F08250800B01E0010E200DD8 -:100DD000F3CF01F08250010B400DF3CF00F08250B1 -:100DE000400B01E0010E800DF350001001100210C5 -:100DF0000310041005100610DF6E838EDECF00F0A6 -:100E0000DDCF01F000C0F3FF01C0F4FF00D0020EFF -:100E1000E15C02E2E16AE552E16EE552E7CFD9FF1B -:100E20001200D9CFE6FFE1CFD9FFE652DF6AFE0E0E -:100E3000DB040CE0FE0EDB50020808E00C0EE66E50 -:100E4000F4EC32F0E552000E61D060D0FE0EDBCF44 -:100E5000E6FF7FDDE552010EE66E66DDE552FE0E31 -:100E6000DB50020B02E1000E01D0010EE8B0838CD2 -:100E7000E8A0839CFE0EDB50010B02E1000E01D0C6 -:100E8000010EE8B0808AE8A0809A80980000839ED6 -:100E90000000000000008450010B066E8450020B1D -:100EA00001E0010EE824056E8450040B01E0010E00 -:100EB000040DF3CF04F08350100B01E0010E080D78 -:100EC000F3CF03F08250020B01E0010E100DF3CFBF -:100ED00002F08250800B01E0010E200DF3CF01F0F3 -:100EE0008250010B400DF3CF00F08250400B01E027 -:100EF000010E800DF35000100110021003100410B9 -:100F000005100610DF6E838EDF5000D0E552E552EB -:100F1000E7CFD9FF1200E2EC11F007E04AEC10F045 -:100F200004E00C0E91EC11F008D0FD0EDBCFE6FFD3 -:100F30005DEC0FF0E552E71402E1000E01D0010E66 -:100F40009FEF0EF09AEC0EF01D0E5DEC0EF0FC0E15 -:100F5000DB1C006EFD0EDB1C016E00C0E6FFE66EC2 -:100F600047EC0EF09FEF0EF09AEC0EF0000EE66EDE -:100F7000E66AFE0E4EEC10F09FEF0EF09AEC0EF0CB -:100F80005DEC0FF084080DE05DEC0FF0C40809E0A3 -:100F9000E66AB3EC12F05EEC10F027EC33F0E552A9 -:100FA000EFD71C0E5DEC0EF0660EE6EC11F065EC72 -:100FB00010F05DEC0FF0800804E05DEC0FF0C0086D -:100FC000E7E15DEC0FF0C00802E165EC10F01E0EE9 -:100FD0005DEC0EF00F0EE6EC11F0D1EC12F0FA0E13 -:100FE000DBCFE6FFFB0E1FEC11F0F80EDBCFE6FFC8 -:100FF000F90E1FEC11F0F60EDBCFE6FFF70E1FEC3B -:1010000011F0040E5DEC0EF01A0E5DEC0EF0100EF9 -:10101000E66E270EE66E47EC0EF00101546B556B41 -:10102000566B9FEF0EF09AEC0EF0080EE126010EC3 -:10103000B0EC0EF0010EE7CFDBFF020EEAEC11F090 -:10104000DF6E030EB0EC0EF0030EE7CFDBFF040EF5 -:10105000B0EC0EF0020EE7CFDBFF050EB0EC0EF0A9 -:10106000050EE7CFDBFF060EB0EC0EF0040EE7CF67 -:10107000DBFF070EB0EC0EF0070EE7CFDBFF080E2C -:10108000B0EC0EF034EC0FF0010E51EC10F0090E44 -:10109000B0EC0EF0010EE7CFDBFF0A0EEAEC11F028 -:1010A000DF6E0B0EB0EC0EF0030EE7CFDBFF0C0E85 -:1010B000B0EC0EF0020EE7CFDBFF0D0EB0EC0EF041 -:1010C000050EE7CFDBFF0E0EB0EC0EF0040EE7CFFF -:1010D000DBFF0F0EB0EC0EF0070EE7CFDBFF100EBC -:1010E000B0EC0EF034EC0FF0020E51EC10F0020EEA -:1010F000E66E030EE66E5EEC10F0010E6AEC10F088 -:1011000005E1020EE66E6AEC10F002E0000E01D07E -:10111000010E006E080EE15C02E2E16AE552E16E4A -:1011200000509FEF0EF09AEC0EF00C0EE12666ECEC -:101130000FF0D950F20FB7EC11F0080EEECFDBFF35 -:10114000090EEECFDBFF0A0EEECFDBFF0B0EEECF6C -:10115000DBFF1F0E5DEC0EF0CCEC0FF00050011029 -:10116000021003100CE02B0EE6EC11F00A0EDBCFA0 -:10117000E6FF0B0E1FEC11F071EC10F003D00B0E1C -:10118000E66EE66A47EC0EF09BEC12F0B3EC0EF064 -:10119000EFEC0EF047EC0EF0CAEC12F00C0EE15C36 -:1011A00002E2E16AE552E16E9FEF0EF09AEC0EF07A -:1011B0000A0EE1268EEC0FF066EC0FF0080EF36ECF -:1011C000DB6E090EF3CFDBFF1F0E5DEC0EF07DEC46 -:1011D0000FF007E0D950080FE96EDACFEAFFEE8A88 -:1011E000ED52F50EDB50FF0807E1D950080FE96E0C -:1011F000DACFEAFFEE52ED8871EC10F047EC0EF01A -:101200007DEC0FF002E09BEC12F0F8EC11F0030E15 -:101210001FEC11F0CAEC12F00A0EE15C02E2E16A86 -:10122000E552E16E9FEF0EF09AEC0EF0F90EDBCF77 -:10123000E6FFE66AE66AE66AE66AD950FA0FB7ECB4 -:1012400011F09FEC11F0B3EC12F0B0DF006E0A0E5B -:10125000E15E00509FEF0EF09AEC0EF0FE0EDBA068 -:101260000BD0010E3BEC10F02DC057F12EC058F101 -:101270002FC059F130C05AF1FE0EDBA20BD0020E86 -:101280003BEC10F02DC05BF12EC05CF12FC05DF186 -:1012900030C05EF10101546BA8EF11F09AEC0EF032 -:1012A0001F0E5DEC0EF0D1EC12F0A8EF11F09AECED -:1012B0000EF0040EE126F90EDB500FE08EEC0FF07D -:1012C000210E5DEC0EF0F8EC11F0030E1FEC11F0A6 -:1012D00096EC11F0B3EC12F023D0200E5DEC0EF082 -:1012E000FE0EDBA20ED0B3EC0EF05B0EE96E010E2B -:1012F00064EC11F0020E16EC10F0020EE66E73ECC8 -:1013000011F0FE0EDBA00ED0B3EC0EF0570EE96E1E -:10131000010E64EC11F0010E16EC10F0010EE66EF9 -:1013200073EC11F0040EE15C02E2E16AE552E16E59 -:101330009FEF0EF0BCEC11F006E04AEC10F003E079 -:1013400048EC0FF003D0080EEFEC11F0040EE15C56 -:1013500002E2E16AE552E16E9FEF0EF0BCEC11F0A3 -:1013600006E04AEC10F003E048EC0FF003D00A0E60 -:10137000EFEC11F0040EE15C02E2E16AE552E16E8D -:101380009FEF0EF0BCEC11F006E04AEC10F003E029 -:1013900048EC0FF003D0070EEFEC11F0040EE15C07 -:1013A00002E2E16AE552E16E9FEF0EF0BCEC11F053 -:1013B00006E04AEC10F003E048EC0FF00BD00B0E07 -:1013C0005DEC0EF048EC11F0C4EC11F0DE6ADD6A61 -:1013D00076EC11F0040EE15C02E2E16AE552E16EA6 -:1013E0009FEF0EF0E2EC11F006E04AEC10F003E0A3 -:1013F00059EC10F005D00D0E5DEC0EF048EC11F03C -:101400009FEF0EF0E2EC11F00FE1010E3BEC10F05B -:10141000010157512D5C0A6E58512E580B6E5951CF -:101420002F580C6E5A5111D04AEC10F032E1020ED6 -:101430003BEC10F001015B512D5C0A6E5C512E58A3 -:101440000B6E5D512F580C6E5E5130580D6E0AC0F8 -:101450002DF00BC02EF00CC02FF0306E7EEC24F07F -:1014600026EC0FF03CEC12F02EEC25F02EC002F032 -:101470002FC003F030C004F031C005F076EC0FF05F -:1014800081EC25F0EEEC25F02FC0F3FF30C0F4FF27 -:1014900002D059EC10F09FEF0EF0CBEC11F038ECCD -:1014A00012F0030E52EC0FF09FEF0EF0CBEC11F0A8 -:1014B00015EC0FF0030E52EC0FF09FEF0EF09AECCC -:1014C0000EF089EC10F015EC0FF0010EE5EC12F0C7 -:1014D00045EC10F089EC10F04FEC0FF06FEF11F0CD -:1014E0009AEC0EF089EC10F059EC0FF045EC10F08E -:1014F00089EC10F015EC0FF0020E6FEF11F09AEC82 -:101500000EF01C0EE126F60EDB501EE0006A800E87 -:10151000016E010E026E430E036E03EC13F0336A8C -:10152000346AC80E356E420E366E2EEC25F049EC4C -:1015300012F0A4DB85EC12F0EEEC25F0F70E2FC0D4 -:10154000DBFFF80E30C0DBFF4DEC11F0E3DBCFEC3E -:1015500011F00C6A800E0D6E010E0E6E430E0F6EB2 -:10156000C5EC12F045EC12F00DEC11F01AEC10F095 -:1015700085DB85EC12F02EC0DEFF2FC0DEFF30C011 -:10158000DEFF31C0DDFFDD52DD529FEC0FF076EC67 -:101590000FF081EC25F049EC12F0CFEC11F0106A5D -:1015A000800E116E010E126E430E136EC5EC12F01A -:1015B0001BEC11F0F7EC12F085EC12F0040E2EC0CB -:1015C000DBFF050E2FC0DBFF060E30C0DBFF070E72 -:1015D00031C0DBFFDECF2EF0DECF2FF0DECF30F0DC -:1015E000DDCF31F0DD52DD52040EDBCF33F0050EDE -:1015F000DBCF34F0060EDBCF35F0070ED7EC12F060 -:10160000080E2EC0DBFF090E2FC0DBFF0A0E30C014 -:10161000DBFF0B0E31C0DBFF080EDBCF04F0090E41 -:10162000DBCF05F00A0EDBCF06F00B0EDBCF07F0A9 -:10163000336A346A356A366A48DB54EC26F0010AAC -:1016400003E0CCEC0FF013D0080EDBCF08F0090E4E -:10165000DBCF09F00A0EDBCF0AF00B0EDBCF0BF06D -:1016600076EC0FF089EC12F081EC25F014DB080E1B -:1016700000C0DBFF090E01C0DBFF0A0E02C0DBFF6A -:101680000B0E03C0DBFF92DBA2EC0FF080EC10F03E -:10169000DCEC10F0F3EC0FF0046A056A066A400E09 -:1016A000076E52EC11F045EC12F080EC10F0ADEC4E -:1016B00012F0F1DA0C0EDBCF0CF00D0EDBCF0DF0DB -:1016C0000E0EDBCF0EF00F0EDBCF0FF01EEC10F086 -:1016D000D9EC0FF06BDB49EC12F0E8EC12F0DCEC2B -:1016E00010F0AAEC0FF0066A400E076EE8EC12F05C -:1016F000ADEC12F0F2EC11F01EEC10F0E6EC0FF095 -:10170000140EDBCF08F0150EDBCF09F0160EDBCF81 -:101710000AF0170EF1DA0C0EDBCF14F00D0EDBCF52 -:1017200015F00E0EDBCF16F00F0EEDDAD9CFE9FF74 -:10173000DACFEAFFEECF20F0EECF21F0EECF22F0AD -:10174000EFCF23F03BEC11F0B4DB246E0D0EE15E25 -:101750002450180EDBCF08F0190EDBCF09F01A0E5B -:10176000DBCF0AF01B0EC8DA100EDBCF14F0110E1F -:10177000DBCF15F0120EDBCF16F0130EC4DA040E19 -:10178000DBCF20F0050EDBCF21F0060EDBCF22F001 -:10179000070EDBCF23F03BEC11F081DBE5EC12F020 -:1017A000246E0D0EE15E2450BFEC12F01C0EE15CC5 -:1017B00002E2E16AE552E16EC2D2BCDA3C0EE126F9 -:1017C000BEDB0EEC13F052EC12F089EC12F081EC5F -:1017D00025F0B8DB6EEC12F052EC11F045EC12F093 -:1017E0002CEC10F04BDA23EC11F048DA6EDA98ECBE -:1017F00024F051DA336A346A800E11EC10F0380E9E -:101800002EC0DBFF390E2FC0DBFF3A0E30C0DBFFEE -:101810003B0E31C0DBFF0EEC13F03DDA53DB52EC34 -:1018200011F078DA4FDBD9EC2DF0086E080EE15E8E -:101830000850080E2DC0DBFF090E2EC0DBFF0A0E7C -:101840002FC0DBFF0B0E30C0DBFFF60EDB5007E0D6 -:10185000D950F40FB7EC11F0EE50ED1039E1B7DAD2 -:10186000080EDBCF0EF0090EDBCF0FF00A0EDBCF38 -:1018700010F00B0EA4EC10F0DAD957EC11F02E6A30 -:101880002F6A800E306E400E316E380EDBCF33F093 -:10189000390EDBCF34F03A0EDBCF35F03B0E9BEC4C -:1018A00011F0D4DA0FDB6EDB2DC002F02EC003F096 -:1018B0002FC004F030C005F02DC02EF0D4EC11F094 -:1018C00081EC11F0EADD0A6E060EE15E0A50A2D14B -:1018D000380EDBCF04F0390EDBCF05F03A0EDBCF4C -:1018E00006F03B0EDBCF07F0C0DB11EC13F081EC10 -:1018F00025F080EC10F0EFEC12F0B1DAADDBF5EC96 -:1019000011F06EEC12F0BAD9CFD998EC24F022DBAA -:10191000FCEC11F04DEC11F01BEC11F085EC12F029 -:1019200055DB046A056AFCEC11F052EC11F01BEC7B -:1019300011F085EC12F01C0E2EC0DBFF1D0E2FC027 -:10194000DBFF1E0E30C0DBFF1F0E31C0DBFF1C0EA5 -:10195000DBCF00F01D0EDBCF01F01E0EDBCF02F05F -:101960001F0EDBCF03F0C2DA85EC12F0200E2EC082 -:10197000DBFF210E2FC0DBFF220E30C0DBFF230E6A -:1019800031C0DBFFD950180FE96EDACFEAFF240E21 -:10199000EECFDBFF250EEECFDBFF260EEECFDBFF1B -:1019A000270EEECFDBFF4DEC11F0A6EC12F0200E6F -:1019B000DBCF33F0210EDBCF34F0220EDBCF35F05E -:1019C000230EDDEC12F0280E2EC0DBFF290E2FC0F7 -:1019D000DBFF2A0E30C0DBFF2B0E31C0DBFF52ECE9 -:1019E00011F0A6EC12F0240EDBCF33F0250EDBCF86 -:1019F00034F0260EDBCF35F0270EDDEC12F02C0E86 -:101A00002EC0DBFF2D0E2FC0DBFF2E0E30C0DBFF04 -:101A10002F0E31C0DBFF2C0EDBCF04F02D0EDBCF01 -:101A200005F02E0EDBCF06F02F0EDBCF07F05EDACF -:101A30004CD981EC25F02FEC11F0300E2EC0DBFFDD -:101A4000310E2FC0DBFF320E30C0DBFF330E31C052 -:101A5000DBFF280EDBCF2EF0290EDBCF2FF02A0E76 -:101A6000DBCF30F02B0EDBCF31F0F9DB340E2EC0A4 -:101A7000DBFF350E2FC0DBFF360E30C0DBFF370E2D -:101A800031C0DBFFD950300F83D9D950340F80D902 -:101A9000D9EC2DF0006E080EE15E00500C0E2DC04A -:101AA000DBFF0D0E2EC0DBFF0E0E2FC0DBFF0F0E77 -:101AB00030C0DBFF006A016A026A400E036E00C09C -:101AC000E6FF01C0E6FF02C0E6FFE66E98D911EC22 -:101AD00013F0B0DAF7D98CEC11F02DC014F02EC051 -:101AE00015F02FC016F030C017F038EC12F0D9EC1A -:101AF0002DF0186E080EE15E1850E552E7CF03F0A6 -:101B0000E552E7CF02F0E552E7CF01F0E552E7CF2B -:101B100000F02DC004F02EC005F02FC006F030C03C -:101B200007F027DA85EC12F044DAF60EDB500208F3 -:101B30001FE177EC12F097EC24F0B7EC12F098EC80 -:101B400024F001D95DDA060E2FC0DBFF070E30C08E -:101B5000DBFF000EDFCF2FF0010EDCD8020EBFEC52 -:101B600011F0CEDA5EDB040E2FC0DBFF050E35D0A0 -:101B70001DD991D80C0EDBCF04F00D0EDBCF05F094 -:101B80000E0EDBCF06F00F0EDBCF07F004C033F0F4 -:101B900005C034F006C035F007C036F097EC24F0ED -:101BA00022DA77EC12F098EC24F0B7EC12F097EC14 -:101BB00024F0C9D825DA040E2FC0DBFF050E30C093 -:101BC000DBFF020EDBCF2FF0030EA4D8C8DB98DAC0 -:101BD00028DB060E2FC0DBFF070E30C0DBFF27D847 -:101BE0007DD8040EDBCF2FF0050E82DA38EC12F030 -:101BF000B6DB2FD85ED9206E0D0EE15E20506ED878 -:101C0000060EDBCF2FF0070E73DA49D9B8DB21D8E7 -:101C100046D948D93C0EE15C02E2E16AE552E16E48 -:101C20008ED00101565102E0556B010C000CF9DF1A -:101C30000009FDE01200010155511200E8EC12F01C -:101C40003CEC12F0A3DA2EDB53DA38EC12F025DB91 -:101C50008CD32EC01CF02FC01DF030C01EF031C040 -:101C60001FF03CEC12F014EC13F02DC018F02EC055 -:101C700019F02FC01AF030C01BF012002EC033F044 -:101C80002FC034F030C035F031C036F01200B3EC64 -:101C900012F073EF11F02EC000F02FC001F030C031 -:101CA00002F031C003F0120000C02EF001C02FF08E -:101CB00002C030F003C031F01200E66EB3EC12F057 -:101CC000DCEC04F0E552E552120004C02EF005C031 -:101CD0002FF006C030F007C031F0120003EC13F013 -:101CE000CBDBC6EF10F0D4DA4FDBD2DAF3CFDEFF76 -:101CF000F4CFDDFF76EF11F0DBCF0BF0BDDB89EC2D -:101D000012F0C6EF10F0DBCF17F0B6DB9CDAD4DBB5 -:101D100038EF12F0BADB49EF12F002C02EF044DBCC -:101D200097EC24F0EEDA5FEC0AF0126E060EE15E3C -:101D300012501200D9CFE6FFE1CFD9FF1200E552D1 -:101D4000E7CFD9FF1200100EDBCF33F0110EDBCF3F -:101D500034F0120EDBCF35F0130EEDDAEEEF25F096 -:101D600039DBE76E1200FA0EDBCF00F0FB0EDBCFA3 -:101D700001F0FC0EDBCF02F0FD0EDBCF03F0000E16 -:101D8000006C011E0122021E0222031E0322120009 -:101D9000E96EDACFEAFF9FEF11F00CC02EF00DC014 -:101DA0002FF00EC030F00FC031F012002E6A2F6AF3 -:101DB000306A400E316E080EDBCF33F0090EDBCFF8 -:101DC00034F00A0EDBCF35F00B0E9BEF11F06FDA1B -:101DD000026A036AB40E046E420E056E120000C061 -:101DE000DFFF010E01C0DBFF020E02C0DBFF030EAE -:101DF00003C0DBFFFDDA030EDBCFE6FF1200140E9B -:101E0000DBCF0CF0150EDBCF0DF0160EDBCF0EF096 -:101E1000170EDBCF0FF01200350E336EFA0E346E54 -:101E20000E0E356E3C0E366E1200000E186C191E2A -:101E300019221A1E1A221B1E1B2218C0E6FF19C0E7 -:101E4000E6FF1AC0E6FF1BC0E6FF12002EC006F038 -:101E50002FC007F030C008F031C009F01200F40EB6 -:101E6000DBCF2FF0F50E81D2060EE7CFDBFFDBCF05 -:101E7000E6FF070EDBCFE6FF040EDBCFE6FF050E25 -:101E8000DBCFE6FFB5DA030EDBCFE6FF96EF11F00E -:101E90000C0E47DA2D6A2E6A2F6A306A1200E8DAD1 -:101EA000020E120092DB206E0D0EE15E2050BFEF9D -:101EB00012F0DEDA010EE5EF12F055DB11EC07F05F -:101EC000E5521200A4DB31C0E6FF1200D950F60F34 -:101ED0004EDA040EEECFDBFF050EEECFDBFF060E73 -:101EE000EECFDBFF070EEECFDBFF1200336A346A62 -:101EF000800E356EBF0E366E1200040EDBCF00F082 -:101F0000050EDBCF01F0060EDBCF02F0070EDBCFB4 -:101F100003F000500110021003101200D9CFE9FFA6 -:101F2000DACFEAFFFA0EDBCFEEFFFB0EDBCFEEFFE0 -:101F3000FC0EDBCFEEFFFD0EDBCFEEFF12006EDB03 -:101F400080EF10F0A6DAAED910D2E66EE66A030E84 -:101F5000E66E35D2140E2EC0DBFF150E2FC0DBFF50 -:101F6000160E30C0DBFF170E31C0DBFF046A056AB6 -:101F700012002DC033F02EC034F02FC035F030C029 -:101F800036F01200F3EC29F0E5521BD3336A346AC1 -:101F9000356A400E366E1200080EDBCF00F0090ED7 -:101FA000DBCF01F00A0EDBCF02F00B0EDBCF03F02C -:101FB0001200100E2EC0DBFF110E2FC0DBFF120E21 -:101FC00030C0DBFF130E31C0DBFF1200180E2EC035 -:101FD000DBFF190E2FC0DBFF1A0E30C0DBFF1B0E1C -:101FE00031C0DBFF12000C0E2EC0DBFF0D0E2FC028 -:101FF000DBFF0E0E30C0DBFF0F0E31C0DBFF120027 -:10200000020E2FC0DBFF030E30C0DBFFF90EDBCF6B -:102010002FF0FA0EDBCF30F01200356E430E366E25 -:102020001200356E400E366E2EEF25F0E66E5BD94F -:1020300096EF11F097EC24F080EF10F00CC033F025 -:102040000DC034F00EC035F00FC036F097EF24F01D -:10205000336A800E346E12002EC018F02FC019F0B3 -:1020600030C01AF031C01BF012000C6A0D6A0E6A03 -:10207000400E0F6E1200E66EAEEC09F0E552120053 -:10208000040EE126FE0EDB041200286E0D0EE15E4A -:1020900028501200FE0EDB5002081200DBCFE6FFD4 -:1020A0008ED1E66EBEEC07F0006E090EE15E0050C8 -:1020B00012000C0E36D9F36AF46A1200DCEC04F05C -:1020C000E552E552020EE66E12004DDAB4EC07F06E -:1020D000E5521200E66E8BEC07F0E552E55200097E -:1020E0001200080EDBCFE6FF090EDBCFE6FF120081 -:1020F000CCD9F4D9C1D981EC25F014DA5CEF12F017 -:102100002EC008F02FC009F030C00AF031C00BF02B -:10211000120094DD2EC024F02FC025F030C026F030 -:1021200031C027F079DE81EC25F02EC020F02FC0E1 -:1021300021F030C022F031C023F08ADF810E6DDF44 -:1021400081EC25F029EF0EF0DBCF11F0336A346A11 -:10215000340E63DF0EC02EF00FC02FF010C030F031 -:1021600011C031F081EC25F02EC00AF02FC00BF029 -:1021700030C00CF031C00DF0DB0E336E0F0E346E3C -:10218000490E4FDF63DE7ADD8DEF0EF081EC25F036 -:1021900080D9CC0E336EBC0E346E8C0E356E3B0E79 -:1021A000366E42DA2DC000F02EC001F02FC002F0D2 -:1021B00030C003F038EF12F0D0D96DDD106A116A2B -:1021C000800E126E3F0E136E080EDBCF14F0090E58 -:1021D000DBCF15F00A0EDBCF16F00B0EDBCF17F0BE -:1021E00014C033F015C034F016C035F017C036F007 -:1021F000FED95ADD2EEF25F0140EDBCF00F0150EC0 -:10220000DBCF01F0160EDBCF02F0170EDBCF03F0B1 -:102210001FDF010E02DF54EF0EF084D92FDDCDEF6A -:102220000EF0DDD9F90EDBCF2FF0FA0E2ED93AD908 -:102230006CD9EEEF25F029D951D93EEF0EF0DBCF66 -:10224000E6FF47EF0EF014C02EF015C02FF016C0B9 -:1022500030F017C031F081EC25F092EF12F0140E3F -:10226000DBCF33F0150EDBCF34F0160EDBCF35F0BD -:10227000170ED7EF12F0D0DD20C02EF021C02FF0C6 -:1022800022C030F023C031F081EC25F029EF0EF0B0 -:102290006AD948EC06F0E5521200FD0EDBCF2FF0B4 -:1022A000FE0E1200FB0EDBCF2FF0FC0E1200F70E1D -:1022B000DBCFE6FFF80EDBCFE6FFF90EDBCFE6FF64 -:1022C000FA0EDBCFE6FF1200EA6EEE500026EE506B -:1022D0000122EE500222EE500322EFEF0EF075D9EC -:1022E000D4DE4DD92CD55FEC05F06BD1DECF2DF0CF -:1022F000DECF2EF0DECF2FF0DDCF30F0DD52DD521D -:102300001200EEEC25F02FC000F030C001F02FC01D -:10231000E6FF30C0E6FF1200D950380F39DDC2EFBA -:102320000FF0E66EF4EC32F0E5521200DECFE6FF7D -:10233000DDCFE6FF1200DBCF36F081EF25F0EECFE8 -:10234000E6FFEECFE6FFEECFE6FFEFCFE6FF1200AF -:10235000010EB3DC0101010E556F566BF0D4000E77 -:10236000DFCF2FF0010E45EF12F045EF12F0E96ECE -:10237000FF0EDA20EA6E1200DDDC40EF10F0DBCF5A -:102380002FF0030E45EF12F0020EF3CFDBFF030E2A -:10239000F4CFDBFF1200CEDC51DC29EF0EF0F6DDCE -:1023A00081EC25F04BEF0EF003C02FF004C030F0AD -:1023B00005C031F0120062DC77DC97EF24F0A2EC6C -:1023C00007F0FFD0B7DCFE0EDB041200E66EE66A13 -:1023D00047EF0EF0E66E46EC32F0E55212006DDC8F -:1023E00073EF0EF058DCFFEF0EF0D0DD2EEF25F08E -:1023F000020EDBCFE6FF1200800E066E3F0E076E68 -:1024000034DE04C0E6FF05C0E6FF06C0E6FF07C0F5 -:10241000E6FF0CC0E6FF0DC0E6FF0EC0E6FFE66E6D -:102420007BDFE552E7CF0FF0E552E7CF0EF0E55244 -:10243000E7CF0DF0E552E7CF0CF0E552E7CF07F01C -:10244000E552E7CF06F0E552E7CF05F0E552E7CFDA -:1024500004F02DC010F02EC011F02FC012F030C0CB -:1024600013F087DD9ADC81EC25F04ADEEFEF12F005 -:102470002DC0E6FF07EF13F0330E336EE20E346E1D -:10248000C20E356E420E366E1200DBCF30F069EFB1 -:1024900024F02EC004F02FC005F030C006F031C08B -:1024A00007F012002EC00CF02FC00DF030C00EF05F -:1024B00031C00FF03EEF0EF0BD0E336E370E346EAE -:1024C000860E356E410E366EAFD82DC00CF02EC084 -:1024D0000DF02FC00EF030C00FF012002EC014F01F -:1024E0002FC015F030C016F031C017F012006FDCAD -:1024F0000C0EDBCF0EF00D0EDBCF0FF00E0EDBCF90 -:1025000010F00F0E21DEFCEF10F054EC0EF081EF16 -:1025100025F008C02EF009C02FF00AC030F00BC023 -:1025200031F012002EC010F02FC011F030C012F0A8 -:1025300031C013F01200060EDBCFE6FF070E7FDE80 -:10254000040EDBCFE6FF050E1FEF11F08AEC0EF054 -:102550004CDF48DF66D897EF24F03EEC0EF065ECD8 -:102560000EF081EF25F0FE0EDBCFE6FF1200A3ECAC -:102570000EF02FC0DEFF30C0DDFFFCEF10F0030EC9 -:10258000E66E2CEC09F0E5521200F70EDBCF2FF0CF -:10259000F80E1200CBDE47EC0EF00101010E546F75 -:1025A0001200FC0EDBCFE6FFFD0E1FEF11F0DBCFBC -:1025B00036F02EEC25F04BEF0EF0BDDEA1DDDBEFAB -:1025C00011F0E552E552E5521200E66E93EF08F085 -:1025D000F90EDBCF2FF0FA0E58DF80EF10F03EEC53 -:1025E0000EF065EC0EF02EEC25F04BEF0EF010C067 -:1025F0002EF011C02FF012C030F013C031F098EC63 -:1026000024F052EF12F0C1DF40DF80EF10F02EC057 -:10261000E6FF2FC0E6FF30C0E6FF12003EDE45EFCA -:1026200012F01DDC0DEF11F081EC25F01DEF26F00E -:10263000DACFE4FFE2CFDAFFE9CFE4FFEACFE4FF4D -:10264000F6CFE4FFF7CFE4FFF5CFE4FFF3CFE4FFED -:10265000F4CFE4FFFACFE4FF00EE29F0140EE80413 -:1026600003E3EECFE4FFFBD700EE00F0290EE80411 -:1026700003E3EECFE4FFFBD799EC1EF09EA013D04E -:10268000A3EC1EF001014D2B000E4E23E80E4D5D14 -:10269000030E4E5905E34D6B4E6B4F2B000E50232E -:1026A00014EC2CF09E90F2A003D02EEC04F0F290EB -:1026B000ACEC1EF002E2E16AE552E16EE552E7CFD2 -:1026C000D9FFE55200EE28F0290EE80403E3E5CF38 -:1026D000EDFFFBD700EE3CF0140EE80403E3E5CF7A -:1026E000EDFFFBD7E5CFFAFFE5CFF4FFE5CFF3FF32 -:1026F000E5CFF5FFE5CFF7FFE5CFF6FFE5CFEAFF42 -:10270000E5CFE9FFE5CFDAFF1100D8CFE4FFE0CF56 -:10271000E4FFE46EDACFE4FFE2CFDAFFF3CFE4FFC9 -:10272000F4CFE4FF99EC1EF0ACEC1EF002E2E16A9B -:10273000E552E16EE552E7CFD9FFE552E5CFF4FF70 -:10274000E5CFF3FFE5CFDAFFE550E5CFE0FFE5CFDA -:10275000D8FF100004D8F7EC1EF063D8FCD70F0E9A -:10276000C11202D8C1EF1EF0BCEC1EF0E65270ECB4 -:102770001EF00101696F070E695D10E1E66A46EC23 -:1027800032F0E552DF6E000EDF80B4EC1EF0E66A38 -:1027900027EC33F0E552DF70B4EC1EF01C0E9316FC -:1027A000D08EF28EF28CF286F30E8C169516010105 -:1027B000476B486B496B4A6B010E4B6F9294809448 -:1027C000939881980D0EE66E7C0EE66EE10EE66E35 -:1027D000B9EC31F0E552E552E552C70E92169494E9 -:1027E0003F0E9516010EE66E94EC04F0E552838CD4 -:1027F000808A82848088838E80868294010EE66E31 -:1028000062EC33F0E55282849D80C50EE66EB7EC33 -:1028100032F0E552A3EC1EF0E552E552E7CFD9FFC6 -:102820001200D9CFE6FFE1CFD9FF0F0EE12601015B -:102830004B5102E0B5EC1DF0200E0101005D03E3F9 -:102840006D50020B12E01BEC0EF000090CE0E66A82 -:10285000010EE66E030EE66E4EEC09F0E552E5520F -:10286000E55217EC0EF0ABEF1DF0010149514A1192 -:1028700002E1000E08D049C1E9FF4AC1EAFFEF506A -:10288000800B01E0010E000947E101014651EA6AAF -:10289000260FE96E010EEA22EF5000083DE2050125 -:1028A000406B01014C514C2B0501416F0501040E99 -:1028B000426F01014651EA6A260FE96E010EEA22D3 -:1028C000EFCF43F5400EE66E400EE66E050EE66E67 -:1028D000010EE66E010EE66E12EC23F0006E050EA0 -:1028E000E15E0050F3CF49F1F4CF4AF101014651C6 -:1028F000EA6A260FE96E010EEA22EF6A01014651EB -:10290000000803E20101460707D001014551000814 -:1029100003E201011F0E466F010149514A1102E114 -:10292000000E08D049C1E9FF4AC1EAFFEF50800B11 -:1029300001E0010E00092BE11BEC0EF0000927E07D -:1029400011EC0EF0000923E00501406B01014C5130 -:102950004C2B0501416F05010A0E426F0501436BC7 -:102960000501010E486F400EE66E400EE66E050E44 -:10297000E66E010EE66E010EE66E12EC23F0006EBE -:10298000050EE15E0050F3CF49F1F4CF4AF10101A9 -:102990005151020A10E0030A01E021D0030EE66E55 -:1029A0006BEC2DF0E55213EC08F0000903E0010197 -:1029B000020E516F16D0200EE66E030EE66EC80EA4 -:1029C000E66EE66AE80EE66E030EE66E4DEC0AF081 -:1029D000006E060EE15E00500101516B02D0010154 -:1029E000516B01014751481102E1000E08D047C167 -:1029F000E9FF48C1EAFFEF50800B01E0010E00093A -:102A000002E0ABEF1DF005010251070A02E10CEFF5 -:102A10001DF00D0A01E16AD2010A01E12AD20D0A74 -:102A200001E1C2D1040A1AE0030A07E0010A02E048 -:102A30006AEF1DF0FF00ABEF1DF0E66A46EC32F0E6 -:102A4000E552DF6E000EDB80DFCFE6FFE66A26ECA4 -:102A500032F0E552E552FF00ABEF1DF001014951A4 -:102A60004A1102E1000E08D049C1E9FF4AC1EAFF5C -:102A7000EF50800B01E0010E000901E093D100C589 -:102A800040F50501416B0501030E426F0501436BE3 -:102A900005010851100A01E138D11F0A01E1FAD0FD -:102AA000080A01E1BCD0010A01E17ED0020A71E00E -:102AB000070A64E0010A20E0030A06E0010A01E0D7 -:102AC00047D169C148F547D10501486B490E006EF1 -:102AD000650E016E026A00C0E6FF01C0E6FF02C09B -:102AE000E6FF480EE66E050EE66E0AEC32F0036E67 -:102AF000050EE15E03502FD10501486B3D0E006EBF -:102B0000650E016E026A00C0E6FF01C0E6FF02C06A -:102B1000E6FF480EE66E050EE66E0AEC32F0036E36 -:102B2000050EE15E03503B0E006E650E016E026AFB -:102B300000C0E6FF01C0E6FF02C0E6FF480EE66EF9 -:102B4000050EE66E0AEC32F0036E050EE15E0350F0 -:102B5000320E006E650E016E026A00C0E6FF01C013 -:102B6000E6FF02C0E6FF480EE66E050EE66E0AECD2 -:102B700032F0036E050EE15E0350EDD092CF48F5C2 -:102B800093CF49F594CF4AF595CF4BF596CF4CF5B9 -:102B9000E2D080CF48F581CF49F582CF4AF583CF87 -:102BA0004BF584CF4CF5D7D0010EE66EBAEC2CF085 -:102BB000E552010E2DC0DBFF020E2EC0DBFF030E1F -:102BC0002FC0DBFF040E30C0DBFF040EDBCF48F567 -:102BD000030EDBCF49F5020EDBCF4AF5010EDBCF4A -:102BE0004BF5020EE66EBAEC2CF0E552010E2DC04C -:102BF000DBFF020E2EC0DBFF030E2FC0DBFF040E37 -:102C000030C0DBFF040EDBCF4CF5030EDBCF4DF500 -:102C1000020EDBCF4EF5010EDBCF4FF59CD0010E3F -:102C2000E66EAEEC09F0E552010E2DC0DBFF020EA0 -:102C30002EC0DBFF030E2FC0DBFF040E30C0DBFF16 -:102C4000040EDBCF48F5030EDBCF49F5020EDBCFD8 -:102C50004AF5010EDBCF4BF5020EE66EAEEC09F045 -:102C6000E552010E2DC0DBFF020E2EC0DBFF030E6E -:102C70002FC0DBFF040E30C0DBFF040EDBCF4CF5B2 -:102C8000030EDBCF4DF5020EDBCF4EF5010EDBCF91 -:102C90004FF561D0010EE66ED6EC09F0E552010E5B -:102CA0002DC0DBFF020E2EC0DBFF030E2FC0DBFFAB -:102CB000040E30C0DBFF040EDBCF48F5030EDBCF84 -:102CC00049F5020EDBCF4AF5010EDBCF4BF5020EC4 -:102CD000E66ED6EC09F0E552010E2DC0DBFF020EC8 -:102CE0002EC0DBFF030E2FC0DBFF040E30C0DBFF66 -:102CF000040EDBCF4CF5030EDBCF4DF5020EDBCF20 -:102D00004EF5010EDBCF4FF526D0010EE66EF2EC4C -:102D100009F0E552050EF3CFDBFF060EF4CFDBFF23 -:102D2000060EDBCF48F5050EDBCF49F5020EE66E49 -:102D3000F2EC09F0E552050EF3CFDBFF060EF4CFFF -:102D4000DBFF060EDBCF4AF5050EDBCF4BF503D0DC -:102D50000501020E436F400EE66E400EE66E050E54 -:102D6000E66E010EE66E010EE66E12EC23F0006ECA -:102D7000050EE15E0050F3CF49F1F4CF4AF1400E69 -:102D8000E66E000EE66E050EE66EE66A010EE66E73 -:102D900012EC23F0006E050EE15E0050F3CF47F118 -:102DA000F4CF48F1ABEF1DF005010851030A37E0FD -:102DB000010A25E0030A13E0010A01E040D0050101 -:102DC0000951921205010A51931205010B519412F7 -:102DD00005010C51951205010D51961235D00501D2 -:102DE000091D921605010A1D931605010B1D941667 -:102DF00005010C1D951605010D1D961625D0050122 -:102E0000091D891605010A1D8A1605010B1D8B1661 -:102E100005010C1D8C1605010D1D8D1615D0050123 -:102E20000951891205010A518A1205010B518B12B1 -:102E300005010C518C1205010D518D1205D0030EA8 -:102E4000E66EF4EC32F0E552400EE66E000EE66EF1 -:102E5000050EE66EE66A010EE66E12EC23F0006ED9 -:102E6000050EE15E0050F3CF47F1F4CF48F1ABEF30 -:102E70001DF005010851020A09E0030A01E01CD017 -:102E800009C5E6FF6BEC2DF0E5521BD009C5E6FF46 -:102E900072EC2DF0E5521BEC0EF000090CE0E66A36 -:102EA000010EE66E030EE66E4EEC09F0E552E552B9 -:102EB000E55217EC0EF005D0010EE66EF4EC32F0A0 -:102EC000E552400EE66E000EE66E050EE66EE66A10 -:102ED000010EE66E12EC23F0006E050EE15E00506E -:102EE000F3CF47F1F4CF48F1ABEF1DF005010851E6 -:102EF000060A02E1CBEF1CF0080A02E18BEF1CF09E -:102F0000030A02E185EF1CF0070A02E126EF1CF03C -:102F1000030A01E1E8D3010A01E1FAD20F0A01E153 -:102F2000E3D2020A01E19BD2150A01E15FD2140A41 -:102F300001E131D2070A01E103D2010A01E1D5D151 -:102F4000030A01E1A7D1010A01E1A1D10C0A01E1C3 -:102F500027D1030A01E195D0040A02E0F3EF1CF047 -:102F60000501090504E0030E0501095D40E10AC5FC -:102F7000E6FF010EE66E26EC32F0E552E5520BC597 -:102F8000E6FF020EE66E26EC32F0E552E5520CC585 -:102F9000E6FF030EE66E26EC32F0E552E5520DC573 -:102FA000E6FF040EE66E26EC32F0E552E5520EC561 -:102FB000E6FF050EE66E26EC32F0E552E5520FC54F -:102FC000E6FF060EE66E26EC32F0E552E55210C53D -:102FD000E6FF070EE66E26EC32F0E552E55211C52B -:102FE000E6FF080EE66E26EC32F0E552E552020EE0 -:102FF0000501095D04E0030E0501095D40E10AC514 -:10300000E6FF090EE66E26EC32F0E552E5520BC5FE -:10301000E6FF0A0EE66E26EC32F0E552E5520CC5EC -:10302000E6FF0B0EE66E26EC32F0E552E5520DC5DA -:10303000E6FF0C0EE66E26EC32F0E552E5520EC5C8 -:10304000E6FF0D0EE66E26EC32F0E552E5520FC5B6 -:10305000E6FF0E0EE66E26EC32F0E552E55210C5A4 -:10306000E6FF0F0EE66E26EC32F0E552E55211C592 -:10307000E6FF100EE66E26EC32F0E552E552F8EF70 -:103080001CF000C540F50501416B0501030E426FC0 -:103090000501436B010EE66E46EC32F0E552050188 -:1030A000486F020EE66E46EC32F0E5520501496FBC -:1030B000030EE66E46EC32F0E55205014A6F040E4F -:1030C000E66E46EC32F0E55205014B6F050EE66EFA -:1030D00046EC32F0E55205014C6F060EE66E46EC0A -:1030E00032F0E55205014D6F070EE66E46EC32F008 -:1030F000E55205014E6F080EE66E46EC32F0E552E1 -:1031000005014F6F090EE66E46EC32F0E5520501FF -:10311000506F0A0EE66E46EC32F0E5520501516F33 -:103120000B0EE66E46EC32F0E5520501526F0C0EC6 -:10313000E66E46EC32F0E5520501536F0D0EE66E79 -:1031400046EC32F0E5520501546F0E0EE66E46EC89 -:1031500032F0E5520501556F0F0EE66E46EC32F087 -:10316000E5520501566F100EE66E46EC32F0E55260 -:103170000501576F400EE66E400EE66E050EE66ED8 -:10318000010EE66E010EE66E12EC23F0006E050EE7 -:10319000E15E0050F3CF49F1F4CF4AF1F8EF1CF0B3 -:1031A000E66A010EE66E26EC32F0E552E552010EBB -:1031B000E66E020EE66E26EC32F0E552E552E66A65 -:1031C000030EE66E26EC32F0E552E552E66A040E96 -:1031D000E66E26EC32F0E552E552E66A050EE66E42 -:1031E00026EC32F0E552E552E66A060EE66E26EC73 -:1031F00032F0E552E552030EE66E070EE66E26EC5F -:1032000032F0E552E552E80EE66E080EE66E26EC68 -:1032100032F0E552E552E66A090EE66E26EC32F02F -:10322000E552E552010EE66E0A0EE66E26EC32F02D -:10323000E552E552E66A0B0EE66E26EC32F0E552F8 -:10324000E552E66A0C0EE66E26EC32F0E552E552E7 -:10325000E66A0D0EE66E26EC32F0E552E552E66ABD -:103260000E0EE66E26EC32F0E552E552030EE66EE7 -:103270000F0EE66E26EC32F0E552E552E80EE66EF1 -:10328000100EE66E26EC32F0E552E552B1D313ECA7 -:1032900008F0AED3060E09C5DBFF050E0AC5DBFF3D -:1032A000080E0BC5DBFF070E0CC5DBFF0A0E0DC5B4 -:1032B000DBFF090E0EC5DBFF090EDBCFE6FF0A0EB2 -:1032C000DBCFE6FF070EDBCFE6FF080EDBCFE6FF26 -:1032D000050EDBCFE6FF060EDBCFE6FF4DEC0AF076 -:1032E000006E060EE15E005083D3060E09C5DBFFBB -:1032F000050E0AC5DBFF080E0BC5DBFF070E0CC56C -:10330000DBFF0A0E0DC5DBFF090E0EC5DBFF090E44 -:10331000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FFD3 -:10332000080EDBCFE6FF050EDBCFE6FF060EDBCF98 -:10333000E6FF56EC0AF0006E060EE15E005058D330 -:10334000060E09C5DBFF050E0AC5DBFF080E0BC51F -:10335000DBFF070E0CC5DBFF0A0E0DC5DBFF090EF8 -:103360000EC5DBFF090EDBCFE6FF0A0EDBCFE6FF63 -:10337000070EDBCFE6FF080EDBCFE6FF050EDBCF47 -:10338000E6FF060EDBCFE6FF5FEC0AF0006E060EEE -:10339000E15E00502DD3060E09C5DBFF050E0AC500 -:1033A000DBFF080E0BC5DBFF070E0CC5DBFF0A0EAB -:1033B0000DC5DBFF090E0EC5DBFF090EDBCFE6FFF7 -:1033C0000A0EDBCFE6FF070EDBCFE6FF080EDBCFF2 -:1033D000E6FF050EDBCFE6FF060EDBCFE6FF70EC67 -:1033E0000AF0006E060EE15E005002D3060E09C51B -:1033F000DBFF050E0AC5DBFF080E0BC5DBFF070E62 -:103400000CC5DBFF0A0E0DC5DBFF090E0EC5DBFF89 -:103410000C0E0FC5DBFF0B0E10C5DBFF11C5E6FF61 -:103420000B0EDBCFE6FF0C0EDBCFE6FF090EDBCF8A -:10343000E6FF0A0EDBCFE6FF070EDBCFE6FF080E46 -:10344000DBCFE6FF050EDBCFE6FF060EDBCFE6FFA8 -:103450007FEC0AF0006E090EE15E0050C9D2060E44 -:1034600009C5DBFF050E0AC5DBFF080E0BC5DBFF38 -:10347000070E0CC5DBFF0A0E0DC5DBFF090E0EC5DE -:10348000DBFF0C0E0FC5DBFF0B0E10C5DBFF0E0EB6 -:1034900012C5DBFF0D0E13C5DBFF0D0EDBCFE6FF04 -:1034A0000E0EDBCFE6FF11C5E6FF0B0EDBCFE6FF0E -:1034B0000C0EDBCFE6FF090EDBCFE6FF0A0EDBCFFB -:1034C000E6FF070EDBCFE6FF080EDBCFE6FF050EBB -:1034D000DBCFE6FF060EDBCFE6FFDDEC0BF0006E88 -:1034E0000B0EE15E005084D2060E0AC5DBFF050E0E -:1034F0000BC5DBFF050EDBCFE6FF060EDBCFE6FFDD -:1035000009C5E6FF4EEC09F0E552E552E55270D2EE -:10351000060E0AC5DBFF050E0BC5DBFF080E0CC54A -:10352000DBFF070E0DC5DBFF0A0E0EC5DBFF090E24 -:103530000FC5DBFF090EDBCF2FF00A0EDBCF30F01B -:1035400067EC24F02EC008F02FC009F030C00AF05C -:1035500031C00BF0330E336EE20E346EC20E356E98 -:10356000420E366E08C02EF009C02FF00AC030F0AF -:103570000BC031F081EC25F02EC004F02FC005F017 -:1035800030C006F031C007F0CC0E336EBC0E346E86 -:103590008C0E356E3B0E366E04C02EF005C02FF03B -:1035A00006C030F007C031F081EC25F01DEC26F0AC -:1035B0002DC000F02EC001F02FC002F030C003F08B -:1035C00000C0E6FF01C0E6FF02C0E6FF03C0E6FF61 -:1035D000070EDBCF2FF0080EDBCF30F067EC24F0C6 -:1035E0002EC014F02FC015F030C016F031C017F007 -:1035F000330E336EE20E346EC20E356E420E366EF0 -:1036000014C02EF015C02FF016C030F017C031F0E6 -:1036100081EC25F02EC010F02FC011F030C012F058 -:1036200031C013F0BD0E336E370E346E860E356E1C -:10363000410E366E10C02EF011C02FF012C030F0C7 -:1036400013C031F081EC25F01DEC26F02DC00CF0FC -:103650002EC00DF02FC00EF030C00FF00CC0E6FFF2 -:103660000DC0E6FF0EC0E6FF0FC0E6FF050EDBCF84 -:103670002FF0060EDBCF30F067EC24F02EC01CF0EC -:103680002FC01DF030C01EF031C01FF0330E336E5E -:10369000E20E346EC20E356E420E366E1CC02EF037 -:1036A0001DC02FF01EC030F01FC031F081EC25F09E -:1036B0001DEC26F02DC018F02EC019F02FC01AF006 -:1036C00030C01BF018C0E6FF19C0E6FF1AC0E6FFC5 -:1036D0001BC0E6FF09C5E6FF93EC08F0206E0D0E57 -:1036E000E15E205085D1060E0AC5DBFF050E0BC535 -:1036F000DBFF080E0CC5DBFF070E0DC5DBFF0EC59B -:10370000E6FF070EDBCF2FF0080EDBCF30F067ECC3 -:1037100024F02EC008F02FC009F030C00AF031C0EC -:103720000BF0330E336EE20E346EC20E356E420E67 -:10373000366E08C02EF009C02FF00AC030F00BC062 -:1037400031F081EC25F02EC004F02FC005F030C020 -:1037500006F031C007F0CC0E336EBC0E346E8C0E0A -:10376000356E3B0E366E04C02EF005C02FF006C03D -:1037700030F007C031F081EC25F01DEC26F02DC0B3 -:1037800000F02EC001F02FC002F030C003F000C0E6 -:10379000E6FF01C0E6FF02C0E6FF03C0E6FF050E3C -:1037A000DBCF2FF0060EDBCF30F067EC24F02EC01D -:1037B00014F02FC015F030C016F031C017F0330EE2 -:1037C000336EE20E346EC20E356E420E366E14C08B -:1037D0002EF015C02FF016C030F017C031F081EC7C -:1037E00025F02EC010F02FC011F030C012F031C003 -:1037F00013F0BD0E336E370E346E860E356E410EED -:10380000366E10C02EF011C02FF012C030F013C071 -:1038100031F081EC25F01DEC26F02DC00CF02EC00F -:103820000DF02FC00EF030C00FF00CC0E6FF0DC041 -:10383000E6FF0EC0E6FF0FC0E6FF09C5E6FFD6ECC7 -:1038400008F0186E0A0EE15E1850D2D0060E0AC5B6 -:10385000DBFF050E0BC5DBFF0CC5E6FF050EDBCF5E -:103860002FF0060EDBCF30F067EC24F02EC008F00E -:103870002FC009F030C00AF031C00BF0330E336EA8 -:10388000E20E346EC20E356E420E366E08C02EF059 -:1038900009C02FF00AC030F00BC031F081EC25F0E8 -:1038A0002EC004F02FC005F030C006F031C007F084 -:1038B000BD0E336E370E346E860E356E410E366E8B -:1038C00004C02EF005C02FF006C030F007C031F064 -:1038D00081EC25F01DEC26F02DC000F02EC001F08B -:1038E0002FC002F030C003F000C0E6FF01C0E6FFC9 -:1038F00002C0E6FF03C0E6FF09C5E6FF14EC09F0CD -:103900000C6E060EE15E0C5073D009C5E6FF2CEC80 -:1039100009F0E5526DD000C540F50501416B050188 -:10392000030E426F0501436B010EE66E02EC0AF0D6 -:10393000E552050EF3CFDBFF060EF4CFDBFF060EDC -:10394000DBCF48F5050EDBCF49F5020EE66E02EC43 -:103950000AF0E552050EF3CFDBFF060EF4CFDBFFD6 -:10396000080EDBCF4AF5070EDBCF4BF5400EE66EB7 -:10397000400EE66E050EE66E010EE66E010EE66E78 -:1039800012EC23F0006E050EE15E0050F3CF49F11A -:10399000F4CF4AF12DD000C540F50501416B05017A -:1039A000030E426F0501436B11EC0EF0000904E0B9 -:1039B0000501010E486F02D00501486B400EE66E0E -:1039C000400EE66E050EE66E010EE66E010EE66E28 -:1039D00012EC23F0006E050EE15E0050F3CF49F1CA -:1039E000F4CF4AF105D0010EE66EF4EC32F0E55268 -:1039F000400EE66E000EE66E050EE66EE66A010EFD -:103A0000E66E12EC23F0006E050EE15E0050F3CF7F -:103A100047F1F4CF48F19FD0010149514A1102E129 -:103A2000000E08D049C1E9FF4AC1EAFFEF50800B00 -:103A300001E0010E00094DE10101010E516F050188 -:103A4000406B01014C514C2B0501416F0501050EE6 -:103A5000426F0501436B0501486B1E0E006E650E3B -:103A6000016E026A00C0E6FF01C0E6FF02C0E6FF89 -:103A7000480EE66E050EE66E0AEC32F0036E050E99 -:103A8000E15E0350400EE66E400EE66E050EE66EF9 -:103A9000010EE66E010EE66E12EC23F0006E050ECE -:103AA000E15E0050F3CF49F1F4CF4AF1400EE66EEB -:103AB000000EE66E050EE66EE66A010EE66E12EC8C -:103AC00023F0006E050EE15E0050F3CF47F1F4CF16 -:103AD00048F141D0010149514A1102E1000E08D0DC -:103AE00049C1E9FF4AC1EAFFEF50800B01E0010E36 -:103AF000000931E100C540F50501416B0501030EE8 -:103B0000426F0501010E436F400EE66E400EE66EF9 -:103B1000050EE66E010EE66E010EE66E12EC23F067 -:103B2000006E050EE15E0050F3CF49F1F4CF4AF18B -:103B3000400EE66E000EE66E050EE66EE66A010EBB -:103B4000E66E12EC23F0006E050EE15E0050F3CF3E -:103B500047F1F4CF48F10F0EE15C02E2E16AE55271 -:103B6000E16EE552E7CFD9FF120001015251531126 -:103B700004E1100E526F270E536F5207000E535B75 -:103B80006DA207D0525153112EE18C748CB413D016 -:103B900027D00101005102E18C9422D0000502E1FE -:103BA0008C8409D0020E005D02E18C8419D0040ED1 -:103BB000005D03E18C948C861200100E005D06E11E -:103BC0000101525153110FE18C740AD0200E005D97 -:103BD0000AE101015251531106E18C748CA402D008 -:103BE0008C9612008C861200120012001200120035 -:103BF000AAEF30F012001E0EE66E010EE66EE0EC4B -:103C000022F0E552E552400EE66E000EE66E050E1D -:103C1000E66EE66A010EE66E12EC23F0006E050E0B -:103C2000E15E0050F3CF47F1F4CF48F112006D840C -:103C30000101080E6A6F070E6B6F6A07000E6B5B5F -:103C40006A516B11FAE16D941200D9CFE6FFE1CF12 -:103C5000D9FFFD0EDBCF2FF0FE0EDBCF30F0010ED3 -:103C60002F1801E1305033E0E8682F1802E1E868CE -:103C700030182BE0030E2F1801E1305024E0040E21 -:103C80002F1801E130501DE0020E2F1801E13050D5 -:103C900016E0170E2F1801E130500FE0160E2F1806 -:103CA00001E1305008E0150E2F1801E1305001E01D -:103CB00010D0A1DF0FD09EDF0DD09ADF0BD096DFA2 -:103CC00009D092DF07D091DF05D091DF03D000004B -:103CD00001D000D0010E00D0E552E7CFD9FF12008D -:103CE0004BD8E652D0B202D0010E15D0D0B802D0D7 -:103CF000020E11D0D0B002D0030E0DD0D0B602D03B -:103D0000040E09D0FCAE02D0050E05D0FCAC02D0EA -:103D1000060E01D0070EDF6ED088D086D084D08208 -:103D2000D080FC9EFC9CDF50E552E552E7CFD9FFE6 -:103D30001200E65221D8020EE126F350DF6E010E8A -:103D4000F4CFDBFF1200C00EE66EE00EE66ED8EC9C -:103D500032F0E552E5521200DF50F36E010EDB50F7 -:103D6000F46E020EE15C1200DFCFE6FFE66A26EC9D -:103D700032F0E552E5521200D9CFE6FFE1CFD9FF8C -:023D800012002F -:0E3D8200B9EC23F06A6A686AECEC23F06D8CF1 -:103D90006E6A9CEC23F06D9CDF6ACDEC23F010E2A0 -:103DA000DF50040DF3CFE9FFF4CFEAFF000EE92660 -:103DB000040EEA22EE6AEE6AEE6AEE6ADF2AEDD7B8 -:103DC000160E706E68A604D0030E62EC23F0FAD7CC -:103DD0000101136B186B196B1A6B6D98080E0B6F42 -:103DE000040E0C6F016B006BE55277EF23F0B9EC1A -:103DF00023F0010100510BE16D6A696AECEC23F0DC -:103E00006DB602D06D86FCD70101010E006F000572 -:103E100008E16DBA06D0686A696A69806988020E2D -:103E2000006F6850040B07E06950040B04E0020EB9 -:103E300062EC23F089D86DB247D06850010B14E0D2 -:103E40006950010B11E09DDF0101040E006F0401B8 -:103E5000200E026F040E036F080E016F006B8C0EB4 -:103E60000013E66A2BEC24F06850100B07E0695051 -:103E7000100B04E060D8040E62EC23F06850400B95 -:103E80000BE06950400B08E0F3EC23F0020E6AEC03 -:103E900023F0060E62EC23F06850200B04E069501A -:103EA000200B01E035D86850020B0AE06950020B84 -:103EB00007E0F3EC23F0E668E6684BEC24F06A6A6E -:103EC000040E0101005D02E2A19A1FD069A61CD078 -:103ED000DF6A040EDF5C18E268A616D06CCF20F112 -:103EE000030E62EC23F0780E0101201502E138D8B0 -:103EF00009D0000EE66EE66A200EE66E010EE66E52 -:103F0000010EE8DBDF2AE5D7A19AE55277EF23F02F -:103F100070A00ED085EC23F0EF50800808E1D5DBCF -:103F2000EF50840804E185EC23F08C0EEF6E709066 -:103F3000050E62EF23F06984040EC4DB6D82A5ECEC -:103F400023F0040E6AEF23F0A5EC23F0030EC2DB8E -:103F50006D92699468A403D0020EB4DBFBD7120003 -:103F6000B9EC23F0FD0E010120153DE17E0E201578 -:103F7000E8407F0B040DF3CF03F1F4CF04F1000E02 -:103F80000327040E042303C105F104C106F10575DE -:103F9000BCDBEF503C0BE842E8420D0822E1B5DB08 -:103FA00022EC24F0EECF00F0EFCF01F0280E001845 -:103FB00016E1040E011813E15CEC24F0DF6AEDDB7E -:103FC0000EE2DF50D5EC23F0DF50EA6A200FE96EF5 -:103FD000040EEA22E552E750EF6EDF2AF0D70AD846 -:103FE00007D01AD805D0FD0E2015040801E122D80B -:103FF000E5527DD36ADBEF50800B02E066DBEF6AAF -:1040000001010F6B106B146B156B136B64D89DDB88 -:10401000170E60DBA0EF21F0020E0101105D02E13E -:104020002DEF22F034D80101215102E127EF24F0D5 -:10403000216B12009EDB49DBEF50400B01E0010ECB -:10404000DF6E01010B75080E005D09E122C46EFFF1 -:104050006E50000802E2100E01D0040E006F100531 -:1040600013E160EC24F0A6D9020E01010F5D03E11B -:104070002CDB840E07D0DF5003E127DBC80E02D013 -:1040800024DB880EEF6E01D002D8E55230D32BDB53 -:104090000101106B1ADBEF6A040E0B19006E0CC1E4 -:1040A00001F0DE6E0CC1DDFF19DBEF6A18AF0CD03A -:1040B0001B511C1107E005D01CC1FAFF01011B5167 -:1040C000F96EFADF0101189F020EE15C02E2E16A7B -:1040D000E552E16E0CD304012051600BE842E84246 -:1040E000E842E842E842000901E0120021510C0ACE -:1040F00045E00B0A3FE00C0A31E0010A22E00B0A1E -:104100001EE0020A1CE0030A18E0080A10E0010A97 -:104110000CE00F0A08E0030A01E012000101138F0E -:10412000080E006F120020EF21F089EF22F001014C -:10413000010E116F010E126F0CD061EF21F0BFEF75 -:1041400020F024510101116F126B020E1127010E94 -:1041500012231381010E146F138F12000101138FAC -:1041600004012451EA6A020FE96E010EEA2222C418 -:10417000EFFF1200EADA160E6AEF23F012007EDB80 -:10418000040EE1260401220510E120511F0B000955 -:104190000CE10101138F030E0401215D04E1010113 -:1041A000010E1F6F02D001011F6B0401225141E17A -:1041B00020511F0B02083DE124510F0B000939E08B -:1041C0000101138F040124BF05D0A4DA070EE926EC -:1041D000010E04D09FDA0B0EE926010ED2DA030E8F -:1041E000215D03E17BDA840E23D024510F0B016A99 -:1041F000700F006E0F0E0122020E00C0DBFF030ED7 -:1042000001C0DBFF020EDBCFE9FF030EDBCFEAFFCD -:10421000EE90ED5224AF06D061DAEF6ADF745EDA19 -:10422000400E06D05BDA880EEF6EDF7457DAC80EE8 -:10423000EF6E040EE15C02E2E16AE552E16E57D2F4 -:10424000800E0401205D3CE10101C00E136F0401EA -:104250002351030A1EE0010A09E0030A2FE10101CC -:10426000220E116F620E126F120E22D0C3DACC0E24 -:10427000F626620EA2DA020E0101F76A1125F66E29 -:104280001251F7220900F5CF14F10A00F5CF15F10C -:104290001200030E225D0FE2ADDACE0EF626620E9C -:1042A0008CDA11C1F6FF12C1F7FF0800F5500101C9 -:1042B000146F156B12000101136B12000101136BD7 -:1042C000120011DA0401286B296B20511F0B020A1E -:1042D00011E0030A0CE0010A22E10101138F04013D -:1042E000288101011F051BE10401288318D0010169 -:1042F000138F15D00101138F040124BF05D00ADAF2 -:10430000070EE926010E04D005DA0B0EE926010E90 -:1043100038DAE4D9EF50040B02E0010E286F0101F6 -:1043200013AF07D0280E116F040E126F1381020E07 -:10433000146F020EE15C02E2E16AE552E16ED7D150 -:104340006D98010113BF08D018AF02D061DA2AD0EE -:104350007EDABBD9840E27D018BF2BD0040120AF42 -:1043600024D0010114510401265D010115510401FD -:10437000275904E226C414F127C415F11BD8010102 -:10438000010E106FA1DA800EEF6E216BBED9EE52D6 -:10439000080EEF6E91DAB9D9840EEF6E010E216F1F -:1043A0008FDA93D9C80EEF6E1200010131DAC80E10 -:1043B000EF6E120098D90101080E145D000E155918 -:1043C0000DE214C1DEFF15C1DDFF0F5102E1010E48 -:1043D00003D00F0506E1020E0F6F03D0080EDE6E4C -:1043E000DD6A73D9EF9271D9EF906FD9010EDB506E -:1043F000EF126BD9EE52DFCFEFFF000EDB50145FF0 -:10440000010EDB50155B280E1D6F040E1E6F13B1DD -:104410000FD0F7D91BE011C1F6FF12C1F7FF112B26 -:10442000000E12230800F55096D9F3E2DB06F1D70F -:10443000E8D90CE011C1E9FF12C1EAFF112B000E0F -:104440001223EF5088D9F4E2DB06F2D7020EE15CCA -:1044500002E2E16AE552E16E4AD145D956D9EE52FF -:10446000EFCFDFFFDFCF00F000500101195D000E3C -:104470001A5903E219C1DFFF09D0DF50006E016A4B -:10448000E850195D196F01501A591A6F010EDB6A55 -:10449000DF50F36E010EDBCFF4FFF350F45C10E25B -:1044A000010EDB5082D916C1E9FF17C1EAFF162BB6 -:1044B000000E1723E552E750EF6E010EDB2AE8D716 -:1044C000000ED8801955000E1A550DE2F4D854D9B3 -:1044D0001CD9EF50400B03E1EAD9C80E02D0E7D94E -:1044E000880EEF6E0FD0F0D9840EEF6E1B511C11A9 -:1044F00007E005D01CC1FAFF01011B51F96EFADF7C -:104500000101189F020EE15C02E2E16AE552E16EF0 -:10451000EED00101138F10D9010EE66EE66AE66A4D -:10452000020EE66E010EAFD922C401F10401225140 -:1045300004E10101100E006F12000101200E006F56 -:1045400004D9150E6AEF23F0CED8000EDE6E040EED -:10455000DD6EE8D8040DF350006E016A020E0F0BF9 -:1045600005E0D89001320032E806FBE1D890003631 -:104570000136D89000360136D9CFE9FFDACFEAFF0D -:104580000050EE260150ED22A9D8EF9EFD0EDB5023 -:1045900002E16AD901D06DD9EA22DECFEEFFDDCF8C -:1045A000EDFF9CD8EF9C9AD8040EE926000EEA2273 -:1045B000EF8C020EE15C02E2E16AE552E16E97D017 -:1045C00092D8FE0EDB50016A700F006E0F0EDFD81E -:1045D00085D8FD0EDBCFEFFFDBA402D0E66AF5D86D -:1045E000FD0EDBA203D0010EE66EEFD8020EE15CF9 -:1045F00002E2E16AE552E16E7AD075D8FE0EDB5038 -:1046000005E125D962D8840EEF6E05D08BD80CD980 -:1046100089D8010F09D9020EE15C02E2E16AE55294 -:10462000E16E65D060D8FD0EDB5002E022D901D0EA -:104630001BD9A7D853D806D9FB0EDBCFEEFFFC0E53 -:10464000DBCFEDFF4BD8EE52FA0EDBCFEFFF400E83 -:1046500045D8E850EF16880E41D8E850EF12FD0E0D -:10466000DB5002E006D901D0FFD8EA22EF74DECF9A -:1046700000F0DDCF01F000C0F3FF01C0F4FF020E37 -:10468000E15C02E2E16AE552E16E31D0F7D8010E59 -:10469000F36EFC0EDB5004E0D890F336E806FCE144 -:1046A000F31C006EFD0EDBCFE9FFFE0EDBCFEAFF51 -:1046B0000050EF161CD0FBD8EE52080EEF6EF7D864 -:1046C00022EF24F0E66E2BEF24F00BC1E9FF0CC1C2 -:1046D000EAFF1200E66EE66A4BEF24F0DECFE9FF58 -:1046E000DDCFEAFF1200CAD8020EE1261200E55221 -:1046F000E7CFD9FF1200D6D857EF24F0FE0EEA6AB2 -:10470000DB34FE0BEA36E96E120003C1E9FF04C197 -:10471000EAFF120024510F0BE96EEA6AD890E936DD -:10472000EA361200FD0EDB50E824026EFE0EDB506E -:10473000040DF35002241200000EE66EE66AE66AEB -:10474000710EE66E0F0E43EF24F0000EE66EE66A81 -:10475000E66EE66A1200E66E1DC1E9FF1EC1EAFFC1 -:104760001D2B000E1E23E552E750EF6EDF06010EF3 -:10477000120084D8E6521200280EEE6E040EED6E82 -:104780001200EA22EECFDEFFEDCFDDFF12000122A4 -:1047900000C0DEFF01C0DDFF1200DF50006E016AC5 -:1047A000080E005C000E01581200EA6A280FE96E3C -:1047B000040EEA22EF50E66E1200F7220900F5CF50 -:1047C00011F10A00F5CF12F11200FE0EDBCFE6FF69 -:1047D000BBDEE552E5521200160E6F6E9F0E6B6E39 -:1047E0007B0E696E1200010EE66EE66A000EE66E42 -:1047F000E66A12002251F66EF76AD890F636F7365E -:104800001200D9CFE9FFDACFEAFFEE50ED10120027 -:10481000020E106F5ADFEE52EF6A57DFC80EEF6ECE -:104820004ADFAADF57EF24F0040DF3CF00F0F4CFF6 -:1048300001F0000E0026040EAADF840E4FDFE850C0 -:10484000EF121200020EE926000EEA2212003CD8F6 -:104850008C0EEF6E1200680EE66E0F0EE66E16DF1F -:10486000E552E552E552120049DF070EE926010E36 -:10487000120044DF0B0EE926010E1200D9CFE6FF2D -:10488000E1CFD9FF1200E66EF0EC31F0006E050EBC -:10489000E15E0050120025EC1EF0006E060EE15E97 -:1048A00000501200200EEE6E040EED6E120005C1D7 -:1048B000E9FF06C1EAFF120028DFC4DF52EF24F04F -:0E48C00004DFC0DFBCEF23F0F6DE7BEF23F059 -:0248CE00389E12 -:1048D00008D0389E30AE05D02F6C301EE86A3022EA -:1048E000388E30C02AF02FC029F03C6A3B6A8E0E09 -:1048F0002B6E2C6ACEEF26F0389E0CD0389E30AE50 -:1049000009D02D6C2E1E2F1E301EE86A2E222F225B -:104910003022388E30C02AF02FC029F02EC03CF053 -:104920002DC03BF09E0E2B6E2C6ACEEF26F0367E0D -:10493000386A0AEC27F022EC27F038B6B2EF26F0FE -:1049400038A20AD038AA03D038BEB2EF26F038A475 -:10495000BEEF26F0BBEF26F038AA05D038ACBEEF8C -:1049600026F0BBEF26F038A00AD038A808D038BE11 -:1049700004D038A402D0C7EF26F0CBEF26F03B6A74 -:104980002C6A3650315C3A6E10E32EC03CF02FC0DA -:1049900029F030C02AF031C039F033C02EF034C0D5 -:1049A0002FF035C030F0383A09D033C03CF034C075 -:1049B00029F035C02AF036C039F03A6C389E38BC40 -:1049C000388E39C02BF038B0FAEF26F01A0E3A6064 -:1049D000FAEF26F02B6A316A38A408D02E6C2F1E0D -:1049E000301E311EE86A2F223022312238AC08D026 -:1049F0003C6C291E2A1E2B1EE86A29222A222B2201 -:104A00002D6A3A5207E0313430322F322E322D32B5 -:104A10003A2EF9D72E503C262F50292230502A22E8 -:104A200031502B222DC03BF0389E2BAE0BD03B6C6F -:104A30003C1E291E2A1E2B1EE86A3C2229222A22FD -:104A40002B22388E2BA006D0D8802A3229323C3235 -:104A50003B32392A39C02BF0CEEF26F0386A0AEC07 -:104A600027F022EC27F038B6B2EF26F038A205D0B6 -:104A700038BAB2EF26F0B9EF26F038BAC5EF26F013 -:104A800038A005D038B8B2EF26F0C5EF26F038B818 -:104A9000B9EF26F02C6A7F0E31242B6EE86A2C22A7 -:104AA00036502B5EE86A2C5A1A0E396E316A3B6A10 -:104AB0003C6A296A2A6A33502E5E34502F5A355088 -:104AC000305A000E315A09E733502E2634502F2227 -:104AD00035503022000E312201D03B8AD8902E363C -:104AE0002F3630363136D8903B363C3629362A368A -:104AF000392EE1D730502F102E10D8A43B8ACEEF9C -:104B000026F0386A0AEC27F022EC27F038B6B2EF2C -:104B100026F038A205D038B8B2EF26F0B9EF26F06B -:104B200038AA05D038B0B2EF26F0B9EF26F038B089 -:104B300002D038A802D0C5EF26F02C6A36503124B6 -:104B40002B6EE86A2C227E0E2B5EE86A2C5A3B6A9A -:104B50003C6A296A2A6A35503002F4CF2AF0F3CF32 -:104B600029F034503002F3503C26F4502922000E34 -:104B70002A2235502F02F3503C26F4502922000EF1 -:104B80002A2233503002F3503B26F4503C22000ED0 -:104B900029222A2234502F02F3503B26F4503C2283 -:104BA000000E29222A2235502E02F3503B26F450C3 -:104BB0003C22000E29222A2233502F02F4503B2699 -:104BC000000E3C2229222A2234502E02F4503B2689 -:104BD000000E3C2229222A22CEEF26F0386A0AEC67 -:104BE00027F038B6F8EF25F038A20ED038B405D04B -:104BF0007F0E306EFF0E2F6E1FD0800E306E2F6A2C -:104C00001BD0306A2F6A18D038B0FBD78F0E3160B6 -:104C1000EDD77E0E3164F5D78E0E315C05E0D8906D -:104C200030322F32312AF8D738A406D02F6C301EFC -:104C3000E86A302230AEE5D71200386A0AEC27F075 -:104C400038B627EF26F038A20FD038B407D07F0E41 -:104C5000306EFF0E2F6E2E6E2D6E25D0800E306EB4 -:104C600001D0306A000EF6D738B0FBD72D6A9F0E00 -:104C70003160EBD77E0E3164F4D79E0E315C07E0D5 -:104C8000D89030322F322E322D32312AF6D738A436 -:104C90000AD02D6C2E1E2F1E301EE86A2E222F22C7 -:104CA000302230AEDED712005DEC26F038B6000CB4 -:104CB00038B0000C38A4000C010C386A0AEC27F05C -:104CC00022EC27F038B6120038AE08D038A004D055 -:104CD00038A802D038801200389012003650315C6B -:104CE0000BE13550305C08E134502F5C05E1335066 -:104CF0002E5C02E138801200D8A002D0388E10D08D -:104D0000315036C031F0366E305035C030F0356E2F -:104D10002F5034C02FF0346E2E5033C02EF0336E2F -:104D20003650315C10E0FF0F09E0389038B403D002 -:104D300038AE3884120038AE38941200362AD89033 -:104D400035323432333233502E5E34502F5A355090 -:104D5000305A30BEEAD7D8902E362F363036312E24 -:104D6000F8D7C8D77F0E316EFF0E306E2F6E2E6EC5 -:104D700012007F0E38BEFF0E316E02D07F0E316EF4 -:104D8000800E306E2F6A2E6AF3D738AE04D0800EB4 -:104D9000316E306AF7D7316A306AF4D72A50291059 -:104DA0003C103B10F8E02CBEF0D72ABE0CD02B50A4 -:104DB0002C10EBE0D8903B363C3629362A362B06B1 -:104DC000D8A02C06F2D72C50D4E12B28D2E03BAE51 -:104DD00011D07F0E3B1402E13CA00CD03C2AE86AC3 -:104DE00029222A2207E3D8802A3229323C322B2A70 -:104DF0002B28BFE02B50C9E03CC02EF029C02FF07B -:104E00002A34306E2B30316E3032319E38BE318EC6 -:104E1000B8EF26F03036313602E33884387E06E1CA -:104E20003880316A306A2F6A2E6A1200312803E016 -:104E3000D88030321200D890303202E1388212002D -:104E4000388612003536363602E3388C387E06E175 -:104E50003888366A356A346A336A1200362803E0C5 -:104E6000D88035321200D8903532EAE1388A120003 -:104E70005DEC26F038B6000C38B0000C38B4000CED -:104E8000010C376A35AE4AEF27F0346C351EE86AFC -:104E90003522371E30AE52EF27F02F6C301EE86AF5 -:104EA0003022371E3EEC33F030BE62EF27F037AED3 -:104EB000000C2F6C301EE86A30222B6C2C1EE86A26 -:0E4EC0002C22000C37BE59EF27F03888FF0C6B -:024ECE00D9CF3A -:104ED000E6FFDACFE6FFE1CFD9FFE2CFDAFF1D0E22 -:104EE000E12402E3E168E652E16E67DAFA0EDBCF15 -:104EF000EEFFFB0EDBCFEEFFFC0EDBCFEEFFFD0E79 -:104F0000DBCFEEFFD950040FE66E000EDA20E66E1E -:104F10000BDA8FEC2FF0006E060EE15C02E2E16A24 -:104F2000E552E16E0050E76E0B0EE7CFDBFFDB5082 -:104F3000800807E10A0EDB6ADE68DE68DE687F0E45 -:104F400013D00B0EDB0405E1DE6ADE6ADE6ADD6A81 -:104F5000A6D10B0EDB50040809E1DB0EDE6E0F0E4E -:104F6000DE6EC90EDE6E3F0EDD6E99D1DDD91EDA22 -:104F70002DC0DEFF2EC0DEFF2FC0DEFF30C0DDFF04 -:104F8000DD52DD52DBD90DDA3F0E20DA23E12E6A45 -:104F90002F6A800E306E3F0E316EDECF33F0DECFE3 -:104FA00034F0DECF35F0DDCF36F0DD52DD522EECC1 -:104FB00025F02EC0DFFF010E2FC0DBFF020E30C038 -:104FC000DBFF030E31C0DBFF020EF36E0C0EF3CFDE -:104FD000DBFF02D00C0EDB6AB1D9A30E336E300EAC -:104FE000346E890E356E3E0EF1D96CE1AF0E2E6E29 -:104FF000670E2F6E3B0E306E3F0E316EB2D92EC053 -:1050000008F02FC009F030C00AF031C00BF0C9D948 -:105010003F0E366E97EC24F02EC004F02FC005F042 -:1050200030C006F031C007F0C8D9EECF0CF0EECF9B -:105030000DF0EECF0EF0EFCF0FF00CC033F00DC03F -:1050400034F00EC035F00FC036F098EC24F080D963 -:10505000D70E146EB30E156EDD0E166E3F0E176E64 -:10506000ACD9EECF18F0EECF19F0EECF1AF0EFCFAB -:105070001BF018C033F019C034F01AC035F01BC053 -:1050800036F014C02EF015C02FF016C030F0316E7F -:1050900098EC24F02EC010F02FC011F030C012F0A8 -:1050A00031C013F02EC033F02FC034F030C035F0D3 -:1050B00031C036F035D92EEC25F05FD9DD52DD5206 -:1050C0000C0EDB2A31D972D92DC000F02EC001F0B0 -:1050D0002FC002F030C003F064D9390E366E2DC0F7 -:1050E0002EF07AD954EC26F0010A01E1B5D04ED960 -:1050F00038D90D0E2EC0DBFF0E0E2FC0DBFF0F0EBA -:1051000030C0DBFF100E31C0DBFF910E2E6E860E1D -:105110002F6E500E306EBD0E316E0D0EDBCF33F0A4 -:105120000E0EDBCF34F00F0EDBCF35F0100E4AD968 -:105130000FD9F60E336E100E346EF10E356EBE0EB4 -:10514000366E98EC24F0110E2EC0DBFF120E2FC02D -:10515000DBFF130E30C0DBFF140E31C0DBFF0D0E82 -:10516000DBCF00F00E0EDBCF01F00F0EDBCF02F035 -:10517000100EDBCF03F0D30E336ECC0E346EB40EB4 -:10518000356E3F0E366ECCD898EC24F0150E2EC03E -:10519000DBFF160E2FC0DBFF170E30C0DBFF180E33 -:1051A00031C0DBFF0D0EDBCF2EF00E0EDBCF2FF06C -:1051B0000F0EDBCF30F0100EDBCF31F0110EDBCF56 -:1051C00033F0120EDBCF34F0130EDBCF35F0140EBC -:1051D000F9D8150EDBCF33F0160EDBCF34F0170EF7 -:1051E000DBCF35F0180EDBCF36F02EEC25F0B0D843 -:1051F000190E2EC0DBFF1A0E2FC0DBFF1B0E30C0B6 -:10520000DBFF1C0E31C0DBFFC1D8190EDBCF33F042 -:105210001A0EDBCF34F01B0EDBCF35F01C0ED2D8CC -:1052200097D8CBD8EECF2EF0EECF2FF0EECF30F0D8 -:10523000EFCF31F000C033F001C034F002C035F0E0 -:1052400003C036F098EC24F031C0EDFF30C0EDFF24 -:105250002FC0EDFF2EC0EFFF0C0EDB0409E1920E14 -:10526000006E0A0E016E060E3FD898EC24F016D0A0 -:105270000C0EDB50020806E1DB0E006E0F0E016E15 -:10528000C90E09D00C0EDB5003080BE1920E006E24 -:105290000A0E016E860E28D897EC24F06ED8DD52E7 -:1052A000DD520A0EDB500AE049D87BD8BF0E366EBD -:1052B00037D881EC25F061D8DD52DD52DECF2DF0FC -:1052C000DECF2EF0DECF2FF0DDCF30F0DD52DD521D -:1052D0001D0EE15C02E2E16AE552E16EE552E5CFC6 -:1052E000DAFFE7CFD9FF1200026E3F0E036E65D8DA -:1052F000EECF04F0EECF05F0EECF06F0EFCF07F0E3 -:1053000004C033F005C034F006C035F007C036F0F5 -:1053100000C02EF001C02FF002C030F0316E12003C -:1053200000C02EF0ECEF29F048D8EECFE6FFEECF2C -:10533000E6FFEECFE6FFEFCFE6FF12003ED8EECF5E -:1053400000F0EECF01F0EECF02F0EFCF03F012004D -:105350002EC000F02FC001F030C002F031C003F0C9 -:105360001200000EDFCF33F0010EDBCF34F0020E5F -:10537000DBCF35F0030EE2EF29F02EC0DEFF2FC0A9 -:10538000DEFF30C0DEFF31C0DDFF1200DECF2EF0C9 -:10539000DECF2FF0DECF30F0DDCF31F0DD52DD5249 -:1053A0001200336A346A800E356E12005CEC32F003 -:1053B000E552E552E552E5521200D9CFE9FFDACFC6 -:1053C000EAFF1200DBCF36F081EF25F0366EA8DF62 -:1053D00038EC27F0010A120001C02FF002C030F0B3 -:0653E00003C031F01200D1 -:0A53E600D9CFE6FFDACFE6FFE1CFF2 -:1053F000D9FFE2CFDAFF240EE12402E3E168E652AE -:10540000E16ED950FA0FE96EFF0EDA20EA6E020E55 -:10541000EECFDBFF030EEECFDBFF040EEECFDBFFA4 -:10542000050EEECFDBFFE8D9F2D98FEC2FF0006E3E -:10543000060EE15C02E2E16AE552E16E0050E76EC1 -:105440000D0EE7CFDBFFDB50800815E0A0D9336AF3 -:10545000346A356A366A00C02EF001C02FF002C0EF -:1054600030F003C031F054EC26F0010A10E1210EB7 -:105470000101466F476B020EDB68030EDB68040E0A -:10548000DB687F0EF36E050EF3CFDBFF66D10D0EEA -:10549000DB50050B01E061D10A0EDBCF00F00B0EF3 -:1054A000DBCF01F0830E0026FF0E012200C0DEFFDD -:1054B00001C0DDFFD950060F65D976D9DF50010B49 -:1054C0000FE0DF06010E01E2DB06D950180F5AD9B2 -:1054D000D890EF36010EEB36020EEB36030EEB36AC -:1054E000D9CFE9FFDACFEAFF020E346E356AEECF8C -:1054F0002FF0EDCF30F041EC27F02FC0EEFF30C0A1 -:10550000EDFF140EDB6A150EDB6A160EDB6A170E52 -:10551000DB6A1C0EDB6A1D0EDB6A1E0EDB6A010EE7 -:10552000F36E1F0EF3CFDBFF010EF36E0E0EF3CF03 -:10553000DBFF0F0EDB6A0E0EDBCF00F00F0EDBCFB2 -:1055400001F0D890015004E61A0E005C000E0158DC -:1055500001E398D0180EDBCF00F0190EDBCF01F07D -:105560001A0EDBCF02F01B0EDBCF03F0010E1F0B78 -:1055700007E0D8900036013602360336E806F9E136 -:10558000180E00C0DBFF190E01C0DBFF1A0E02C0AF -:10559000DBFF1B0E03C0DBFF140EDBCF08F0150E84 -:1055A000DBCF09F0160EDBCF0AF0170EDBCF0BF0C6 -:1055B000010E1F0B07E0D890083609360A360B3665 -:1055C000E806F9E1D9501C0FDDD80850EE24046E2E -:1055D0000950EE20056E0A50EE20066E0B50EE20AC -:1055E000076ED950180FCED80450EE5C006E0550EF -:1055F000EE58016E0650EE58026E0750EE58036EDC -:10560000200E00C0DBFF210E01C0DBFF220E02C016 -:10561000DBFF230E03C0DBFF200EDBCF2EF0210EBD -:10562000DBCF2FF0220EDBCF30F0230EDBCF31F0BB -:105630003134000E311809E6D880000E2E54000EC9 -:105640002F54000E3054000E315411E2D950200F67 -:1056500099D8AAD8D8D81C0EDB50EE121D0EDB50FC -:10566000EE121E0EDB50EE121F0EDB50EE12D95062 -:105670001C0F88D8AFD80E0EDB2A0F0E01E25BD7C5 -:10568000DB2A59D7C9D8100E00C0DBFF110E01C0AC -:10569000DBFF180EDBCF2FF0190EDBCF30F0120E30 -:1056A0002FC0DBFF130E30C0DBFFADD893D8D9502D -:1056B000100F68D8EE50ED1012E0D950120F62D8DA -:1056C000EE50ED1006E1A8D80050011002100310B2 -:1056D00006E099D8EE2A000EEE22EE22EE220C0E... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-03-17 19:34:51
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 634f84d90d057f6820a840877038335e9984c830 (commit) from 93013eb819e3abe48ddd1b9794f2d1178395dc68 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 634f84d90d057f6820a840877038335e9984c830 Author: Jérémie Dimino <je...@di...> Date: Wed Mar 17 20:34:26 2010 +0100 Lwt_main.fast_yield -> Lwt.pause ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/controller.ml b/PC_Mainboard/clients/controller.ml index 6025ad8..329f205 100644 --- a/PC_Mainboard/clients/controller.ml +++ b/PC_Mainboard/clients/controller.ml @@ -366,7 +366,7 @@ let refresh krobot = return () else begin refresh_needed := true; - lwt () = Lwt_main.fast_yield () in + lwt () = Lwt.pause () in refresh_needed := false; draw krobot; return () hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-17 19:31:28
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 93013eb819e3abe48ddd1b9794f2d1178395dc68 (commit) from cfc472d8d590b902b4cd16f2d931f62f5677666d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 93013eb819e3abe48ddd1b9794f2d1178395dc68 Author: Jérémie Dimino <je...@di...> Date: Wed Mar 17 20:30:58 2010 +0100 add the config ax12 commad ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index 3ca45da..802cd54 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -371,6 +371,12 @@ let interfaces = [ ~args:[Cst(uint8, PcInterface.ax12_reset); Arg("id", uint8)] (); + request + ~name:"config" + ~code:PcInterface.cmd_ax12 + ~args:[Cst(uint8, PcInterface.ax12_config); + Arg("id", uint8)] + (); ]); Module("logic-sensors", [ hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2010-03-16 22:57:53
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via cfc472d8d590b902b4cd16f2d931f62f5677666d (commit) from edf08efe16e1a8a7154641c1fd3005da2f729eeb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit cfc472d8d590b902b4cd16f2d931f62f5677666d Author: Xavier Lagorce <Xav...@cr...> Date: Sat Mar 13 18:22:30 2010 +0100 The packet's checksum should be verified before using informations contained in the packet ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Robot_Interface/Firmware/ax12.c b/USB_Module/Robot_Interface/Firmware/ax12.c index e165cbf..ba1f9cb 100644 --- a/USB_Module/Robot_Interface/Firmware/ax12.c +++ b/USB_Module/Robot_Interface/Firmware/ax12.c @@ -55,7 +55,7 @@ void interruptAX12(void) { // On commence la reception d'un paquet si le buffer de reception est vide if (idx == 0 && !glbReceived) write = 1; - + // Si l'on est en train de recevoir, on traite l'octet en cours if (write == 1) { glbBuffer[idx] = buf; @@ -71,24 +71,28 @@ void interruptAX12(void) { len = buf+3; if (idx >= 3 && idx == len) { - if (glbBuffer[4] != 0) - // Il y a une erreur... - error(ERR_AX12_ERROR); - // Calcul du checksum // Check Sum = ~ (ID + Length + Instruction + Parameter1 + ... Parameter N) chksum = 0; for (i = 2; i < len; i++) - chksum+= glbBuffer[i]; + chksum+= glbBuffer[i]; if (glbBuffer[len] != (~chksum)) { error(ERR_AX12_CHKSUM); glbReceived = 0; } else { + // Le paquet est valide, on peut tester le renvoi d'erreur par l'AX12 + if (glbBuffer[4] != 0) + // Il y a une erreur... + error(glbBuffer[len]); + error(ERR_AX12_ERROR); + // Un paquet a re glbReceived = 1; } + + // On reinitialise les varaibles statiques pour le prochain paquet write = 0; idx = 0; } hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-15 16:20:42
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via edf08efe16e1a8a7154641c1fd3005da2f729eeb (commit) from 6a511b012683824b3ec4a3a6b8efda3ee6a237ae (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit edf08efe16e1a8a7154641c1fd3005da2f729eeb Author: Jérémie Dimino <je...@di...> Date: Mon Mar 15 17:17:10 2010 +0100 OBus update ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 5e2ae19..9687900 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -35,7 +35,7 @@ struct let make card path = return { - obus = OBus.make ~interfaces:[Unsafe.interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface] path; card = card; } end @@ -59,7 +59,7 @@ struct module Unsafe = DBus_exports.Compass(OBus)(struct let get dev = dev.card end) - OL_interface(OBus) "fr.krobot.Device.Compass" as interface + let ol_interface = OBus.make_interface "fr.krobot.Device.Compass" OL_signal Value : int OL_method Get : int = fun dev -> return dev.data @@ -78,7 +78,7 @@ struct let make card path = lwt data = USB_commands.Compass.get card in let dev = { - obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; data = data; } in @@ -104,7 +104,7 @@ struct module Unsafe = DBus_exports.LCD(OBus)(struct let get dev = dev.card end) - OL_interface(OBus) "fr.krobot.Device.LCD" as interface + let ol_interface = OBus.make_interface "fr.krobot.Device.LCD" OL_method SetLCD : string list -> unit = fun dev lines -> if List.length lines > 4 || List.exists (fun line -> String.length line > 20) lines then @@ -127,7 +127,7 @@ struct let make card path = let dev = { - obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; } in return dev @@ -151,7 +151,7 @@ struct module Unsafe = DBus_exports.AX12(OBus)(struct let get dev = dev.card end) - OL_interface(OBus) "fr.krobot.Device.AX12" as interface + let ol_interface = OBus.make_interface "fr.krobot.Device.AX12" OL_method SetAX12 : Krobot_types.ax12_action structure list -> unit = fun dev actions -> lwt () = @@ -175,7 +175,7 @@ struct let make card path = return { - obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; } end @@ -199,7 +199,7 @@ struct module Unsafe = DBus_exports.Logic_sensors(OBus)(struct let get dev = dev.card end) - OL_interface(OBus) "fr.krobot.Device.LogicSensors" as interface + let ol_interface = OBus.make_interface "fr.krobot.Device.LogicSensors" OL_signal Value : bool array OL_method Get : bool array = fun dev -> return dev.data @@ -217,7 +217,7 @@ struct let make card path = let dev = { - obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; data = Array.create 16 false; } in @@ -244,7 +244,7 @@ struct module Unsafe = DBus_exports.Range_finders(OBus)(struct let get dev = dev.card end) - OL_interface(OBus) "fr.krobot.Device.RangeFinders" as interface + let ol_interface = OBus.make_interface "fr.krobot.Device.RangeFinders" OL_signal Value : int array OL_method Get : int array = fun dev -> return dev.data @@ -271,7 +271,7 @@ struct let make card path = let dev = { - obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; data = Array.create 8 0; } in @@ -333,7 +333,7 @@ struct module Unsafe = DBus_exports.Motors(OBus)(struct let get dev = dev.card end) - OL_interface(OBus) "fr.krobot.Device.Motors" as interface + let ol_interface = OBus.make_interface "fr.krobot.Device.Motors" let string_of_direction = function | `Forward -> "forward" @@ -612,7 +612,7 @@ struct let make card path = let commands = React.E.map (fun data -> Char.code data.[0]) (Krobot_card.connect card PcInterface.cmd_traj)#event in let dev = { - obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; card = card; inhibit_forward_until = 0.0; inhibit_backward_until = 0.0; @@ -635,7 +635,7 @@ let card_motor, set_card_motor = React.S.create None module Manager = struct - OL_interface "fr.krobot.Manager" as interface + let ol_interface = OBus_object.make_interface "fr.krobot.Manager" let close card = match React.S.value card with | None -> @@ -664,7 +664,7 @@ struct Lwt.wakeup done_wakener (); return () - let manager = OBus_object.make ~interfaces:[interface] ["fr"; "krobot"; "Manager"] + let manager = OBus_object.make ~interfaces:[ol_interface] ["fr"; "krobot"; "Manager"] end (* +-----------------------------------------------------------------+ @@ -693,7 +693,7 @@ struct module Unsafe = DBus_exports.Card(OBus)(struct let get = get_card end) - OL_interface(OBus) "fr.krobot.Card" as interface + let ol_interface = OBus.make_interface "fr.krobot.Card" OL_property_r Name : string = fun dev -> return (Krobot_card.name (get_card dev)) @@ -725,7 +725,7 @@ struct let make name card path = let dev = { card = card; - obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; + obus = OBus.make ~interfaces:[Unsafe.ol_interface; ol_interface] path; name = name; state = React.S.const (return ()); } in diff --git a/PC_Mainboard/generators/gen_dbus_exports.ml b/PC_Mainboard/generators/gen_dbus_exports.ml index fc99314..f330cf6 100644 --- a/PC_Mainboard/generators/gen_dbus_exports.ml +++ b/PC_Mainboard/generators/gen_dbus_exports.ml @@ -72,7 +72,7 @@ let rec print path indent = function | Module(name, items) -> printf "%smodule %s(M : OBus_object.S)(Get : sig val get : M.obj -> Krobot_card.t end) = struct\n" indent (Name.uid name); - printf "%s OL_interface(M) \"fr.krobot.Device.%s.Unsafe\" as interface\n" + printf "%s let ol_interface = M.make_interface \"fr.krobot.Device.%s.Unsafe\"\n" indent (Name.caml_case name); List.iter (print (path ^ Name.uid name ^ ".") (indent ^ " ")) items; printf "%send\n" indent @@ -87,7 +87,7 @@ let () = printf "open OBus_pervasives\n"; printf "module Card(M : OBus_object.S)(Get : sig val get : M.obj -> Krobot_card.t end) = struct\n"; - printf " OL_interface(M) \"fr.krobot.Card.Unsafe\" as interface\n"; + printf " let ol_interface = M.make_interface \"fr.krobot.Card.Unsafe\"\n"; List.iter (print "Card." " ") card; printf "end\n"; diff --git a/PC_Mainboard/generators/gen_dbus_imports.ml b/PC_Mainboard/generators/gen_dbus_imports.ml index 0e91bd3..738ba36 100644 --- a/PC_Mainboard/generators/gen_dbus_imports.ml +++ b/PC_Mainboard/generators/gen_dbus_imports.ml @@ -55,7 +55,7 @@ let rec print indent = function printf "%s let cast krobot = OBus_proxy.make (Krobot.peer krobot) [\"fr\"; \"krobot\"; \"Devices\"; \"%s\"]\n" indent (Name.caml_case name); printf "%s let make _ = failwith \"not implemented\"\n" indent; printf "%s end)\n" indent; - printf "%s OP_interface(Proxy) \"fr.krobot.Device.%s.Unsafe\"\n" indent (Name.caml_case name); + printf "%s let op_interface = Proxy.make_interface \"fr.krobot.Device.%s.Unsafe\"\n" indent (Name.caml_case name); List.iter (print (indent ^ " ")) items; printf "%send\n" indent @@ -81,7 +81,7 @@ module Card = struct | `Monitoring -> \"Monitoring\")] let make proxy = failwith \"not implemented\" end) - OP_interface(Proxy) \"fr.krobot.Card.Unsafe\" + let op_interface = Proxy.make_interface \"fr.krobot.Card.Unsafe\" "; List.iter (print " ") card; printf "end\n"; diff --git a/PC_Mainboard/lib_krobot/krobot.ml b/PC_Mainboard/lib_krobot/krobot.ml index 2650c1e..a866c75 100644 --- a/PC_Mainboard/lib_krobot/krobot.ml +++ b/PC_Mainboard/lib_krobot/krobot.ml @@ -165,7 +165,7 @@ let jack krobot = +-----------------------------------------------------------------+ *) module LCD = Make_device(struct let name = "LCD" end) -OP_interface(LCD) "fr.krobot.Device.LCD" +let op_interface = LCD.make_interface "fr.krobot.Device.LCD" OP_method SetLCD : string list -> unit OP_method BacklightOn : unit @@ -176,7 +176,7 @@ OP_method BacklightOff : unit +-----------------------------------------------------------------+ *) module RF = Make_device(struct let name = "RangeFinders" end) -OP_interface(RF) "fr.krobot.Device.RangeFinders" +let op_interface = RF.make_interface "fr.krobot.Device.RangeFinders" OP_method GetCalibration : int -> int array OP_method CalibrationStart : int -> bool -> unit @@ -188,7 +188,7 @@ OP_method CalibrationContinue : unit +-----------------------------------------------------------------+ *) module AX12 = Make_device(struct let name = "AX12" end) -OP_interface(AX12) "fr.krobot.Device.AX12" +let op_interface = AX12.make_interface "fr.krobot.Device.AX12" OP_method SetAX12 : Krobot_types.ax12_action structure list -> unit OP_method GripUp : unit @@ -199,7 +199,7 @@ OP_method GripDown : unit +-----------------------------------------------------------------+ *) module Motors = Make_device(struct let name = "Motors" end) -OP_interface(Motors) "fr.krobot.Device.Motors" +let op_interface = Motors.make_interface "fr.krobot.Device.Motors" OP_method Turn : angle : int -> velocity : int -> acceleration : int -> Krobot_types.move_result OP_method Move : distance : int -> velocity : int -> acceleration : int -> Krobot_types.move_result @@ -243,7 +243,7 @@ struct let make proxy = failwith "not implemented" end) - OP_interface(Proxy) "fr.krobot.Card" + let op_interface = Proxy.make_interface "fr.krobot.Card" OP_method GetFirmwareBuild : string OP_method GetBoardInfo : string OP_method Bootloader : unit hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2010-03-14 11:52:13
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 6a511b012683824b3ec4a3a6b8efda3ee6a237ae (commit) from 58d387423da6e5090bd789065925eac1bf937c5c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6a511b012683824b3ec4a3a6b8efda3ee6a237ae Author: Olivier BICHLER <oli...@gm...> Date: Sun Mar 14 12:51:49 2010 +0100 Légère optimisation dans le cas où CON_MOTOR_RIGHT = CON_MOTOR_LEFT ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index 98b3147..2db9c4f 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -518,7 +518,7 @@ void newPosition(char axis, DWORD pos, DWORD vel, DWORD acc) { writeDataWord(axis, velData.word.HW); writeDataWord(axis, velData.word.LW); - if (axis == MOTOR_BOTH && CON_MOTOR_RIGHT == CON_MOTOR_LEFT) { + if (CON_MOTOR_RIGHT == CON_MOTOR_LEFT) { // Dans ce cas, on peut ire simultannt sur les 2 LM pour gagner du temps posData.Val = CON_MOTOR_RIGHT * pos; writeDataWord(axis, posData.word.HW); @@ -568,7 +568,7 @@ void newVelocity(char axis, DWORD vel, DWORD acc, char dir) { if (accData.Val != NULL) arg|= LM_LTRJ_LOAD_ACC; - if (axis == MOTOR_BOTH && CON_MOTOR_RIGHT == CON_MOTOR_LEFT) { + if (CON_MOTOR_RIGHT == CON_MOTOR_LEFT) { // Dans ce cas, on peut ire simultannt sur les 2 LM pour gagner du temps if (dir == CON_MOTOR_RIGHT) arg|= LM_LTRJ_FORWARD_DIR; diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 453ac5d..c302441 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index a50fbfb..76a96c1 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,30 +1,30 @@ :020000040000FA -:0600000098EF33F012003E +:0600000054EF33F0120082 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000098EF33F0120036 -:060808005CEF13F012008A -:06081800C9EF13F012000D -:06082A000400C567000098 -:100830002601000021000000BA67000054010000FA -:100840000B000000AD670000470100000D00000034 -:0C085000AA6700006C010000030000001B -:04085C00EDEC0EF0C1 +:0608000054EF33F012007A +:0608080018EF13F01200CE +:0608180085EF13F0120051 +:06082A0004003D67000020 +:100830002601000021000000326700005401000082 +:100840000B00000025670000470100000D000000BC +:0C085000226700006C01000003000000A3 +:04085C009AEC0EF014 :10086000030EE126010EE66EDCDAE552DF6E020EC3 :10087000E66ED7DAE552E76E010EE7CFDBFF020E38 :10088000DB6ADF1404E1010EDB50020B06E00A0E06 -:10089000CEEC11F0020ED7EC0FF0040EDF140AE0DC +:1008900091EC11F0020EA5EC0FF0040EDF140AE04B :1008A000010EDB50040B06E00101010E566F040E31 -:1008B000D7EC0FF0200EDF1404E1010EDB50200B0B -:1008C00006E00B0ECEEC11F0200ED7EC0FF0DFACF3 +:1008B000A5EC0FF0200EDF1404E1010EDB50200B3D +:1008C00006E00B0E91EC11F0200EA5EC0FF0DFAC62 :1008D00002D0020EDB80010EDBAC02D0020EDB8206 :1008E000020EDBCF00F0000EE76E0018E8AE02D07B :1008F000003403D0E750D88000540EE20101545177 -:1009000005E038EC12F063EC09F0E552400EE66EBB -:10091000E66A020E8BEC10F0030EE15C02E2E16A83 -:10092000E552E16EF2EF0EF0EDEC0EF0FE0EDB5054 +:1009000005E0F8EC11F02CEC09F0E552400EE66E33 +:10091000E66A020E4EEC10F0030EE15C02E2E16AC0 +:10092000E552E16E9FEF0EF09AEC0EF0FE0EDB50FA :1009300006E1F80E96163C0E9416959808D0FE0E19 -:10094000DB0405E1070E9612C30E94129588F2EFB0 +:10094000DB0405E1070E9612C30E941295889FEF03 :100950000EF0D9CFE6FFE1CFD9FFE652010EE66EE9 :10096000E3DFE5528098FE0EDBA00FD0839C808AE7 :100970000000839E0000000000008450010BDF6E29 @@ -78,8 +78,8 @@ :100C7000829C00000000808600000000020EE15C03 :100C800002E2E16AE552E16EE552E7CFD9FF1200D8 :100C9000D9CFE6FFE1CFD9FF020EE126FE0EDB043D -:100CA0000DE0FE0EDB50020809E00C0EE66E38EC9B -:100CB00033F0E552F36AF46AAAD0A9D0FE0EDBCF76 +:100CA0000DE0FE0EDB50020809E00C0EE66EF4ECDF +:100CB00032F0E552F36AF46AAAD0A9D0FE0EDBCF77 :100CC000E6FF47DEE552010EE66E2EDEE552FE0E31 :100CD000DB50020B02E1000E01D0010EE8B0838C64 :100CE000E8A0839CFE0EDB50010B02E1000E01D058 @@ -104,7 +104,7 @@ :100E1000E15C02E2E16AE552E16EE552E7CFD9FF1B :100E20001200D9CFE6FFE1CFD9FFE652DF6AFE0E0E :100E3000DB040CE0FE0EDB50020808E00C0EE66E50 -:100E400038EC33F0E552000E61D060D0FE0EDBCFFF +:100E4000F4EC32F0E552000E61D060D0FE0EDBCF44 :100E5000E6FF7FDDE552010EE66E66DDE552FE0E31 :100E6000DB50020B02E1000E01D0010EE8B0838CD2 :100E7000E8A0839CFE0EDB50010B02E1000E01D0C6 @@ -117,1456 +117,1447 @@ :100EE0008250010B400DF3CF00F08250400B01E027 :100EF000010E800DF35000100110021003100410B9 :100F000005100610DF6E838EDF5000D0E552E552EB -:100F1000E7CFD9FF12001FEC12F007E087EC10F0CA -:100F200004E00C0ECEEC11F008D0FD0EDBCFE6FF96 -:100F30008FEC0FF0E552E71402E1000E01D0010E34 -:100F4000F2EF0EF0EDEC0EF01D0E8CEC0EF0FC0E40 +:100F1000E7CFD9FF1200E2EC11F007E04AEC10F045 +:100F200004E00C0E91EC11F008D0FD0EDBCFE6FFD3 +:100F30005DEC0FF0E552E71402E1000E01D0010E66 +:100F40009FEF0EF09AEC0EF01D0E5DEC0EF0FC0E15 :100F5000DB1C006EFD0EDB1C016E00C0E6FFE66EC2 -:100F600076EC0EF0F2EF0EF0EDEC0EF0000EE66E09 -:100F7000E66AFE0E8BEC10F0F2EF0EF0EDEC0EF0E8 -:100F80008FEC0FF084080DE08FEC0FF0C40809E03F -:100F9000E66AEDEC12F09BEC10F06BEC33F0E552EE -:100FA000EFD71C0E8CEC0EF0660E23EC12F0A2ECC8 -:100FB00010F08FEC0FF0800804E08FEC0FF0C00809 -:100FC000E7E18FEC0FF0C00802E1A2EC10F01E0E7A -:100FD0008CEC0EF00F0E23EC12F015EC13F0FA0E61 -:100FE000DBCFE6FFFB0E5CEC11F0F80EDBCFE6FF8B -:100FF000F90E5CEC11F0F60EDBCFE6FFF70E5CECC1 -:1010000011F0040E8CEC0EF01A0E8CEC0EF0100E9B -:10101000E66E270EE66E76EC0EF00101546B556B12 -:10102000566BF2EF0EF0EDEC0EF0080EE126010E1D -:1010300003EC0FF0010EE7CFDBFF020E27EC12F0FE -:10104000DF6E030E03EC0FF0030EE7CFDBFF040EA1 -:1010500003EC0FF0020EE7CFDBFF050E03EC0FF001 -:10106000050EE7CFDBFF060E03EC0FF0040EE7CF13 -:10107000DBFF070E03EC0FF0070EE7CFDBFF080ED8 -:1010800003EC0FF066EC0FF0010E8EEC10F0090E81 -:1010900003EC0FF0010EE7CFDBFF0A0E27EC12F096 -:1010A000DF6E0B0E03EC0FF0030EE7CFDBFF0C0E31 -:1010B00003EC0FF0020EE7CFDBFF0D0E03EC0FF099 -:1010C000050EE7CFDBFF0E0E03EC0FF0040EE7CFAB -:1010D000DBFF0F0E03EC0FF0070EE7CFDBFF100E68 -:1010E00003EC0FF066EC0FF0020E8EEC10F0020E27 -:1010F000E66E030EE66E9BEC10F0010EA7EC10F00E -:1011000005E1020EE66EA7EC10F002E0000E01D041 +:100F600047EC0EF09FEF0EF09AEC0EF0000EE66EDE +:100F7000E66AFE0E4EEC10F09FEF0EF09AEC0EF0CB +:100F80005DEC0FF084080DE05DEC0FF0C40809E0A3 +:100F9000E66AB3EC12F05EEC10F027EC33F0E552A9 +:100FA000EFD71C0E5DEC0EF0660EE6EC11F065EC72 +:100FB00010F05DEC0FF0800804E05DEC0FF0C0086D +:100FC000E7E15DEC0FF0C00802E165EC10F01E0EE9 +:100FD0005DEC0EF00F0EE6EC11F0D1EC12F0FA0E13 +:100FE000DBCFE6FFFB0E1FEC11F0F80EDBCFE6FFC8 +:100FF000F90E1FEC11F0F60EDBCFE6FFF70E1FEC3B +:1010000011F0040E5DEC0EF01A0E5DEC0EF0100EF9 +:10101000E66E270EE66E47EC0EF00101546B556B41 +:10102000566B9FEF0EF09AEC0EF0080EE126010EC3 +:10103000B0EC0EF0010EE7CFDBFF020EEAEC11F090 +:10104000DF6E030EB0EC0EF0030EE7CFDBFF040EF5 +:10105000B0EC0EF0020EE7CFDBFF050EB0EC0EF0A9 +:10106000050EE7CFDBFF060EB0EC0EF0040EE7CF67 +:10107000DBFF070EB0EC0EF0070EE7CFDBFF080E2C +:10108000B0EC0EF034EC0FF0010E51EC10F0090E44 +:10109000B0EC0EF0010EE7CFDBFF0A0EEAEC11F028 +:1010A000DF6E0B0EB0EC0EF0030EE7CFDBFF0C0E85 +:1010B000B0EC0EF0020EE7CFDBFF0D0EB0EC0EF041 +:1010C000050EE7CFDBFF0E0EB0EC0EF0040EE7CFFF +:1010D000DBFF0F0EB0EC0EF0070EE7CFDBFF100EBC +:1010E000B0EC0EF034EC0FF0020E51EC10F0020EEA +:1010F000E66E030EE66E5EEC10F0010E6AEC10F088 +:1011000005E1020EE66E6AEC10F002E0000E01D07E :10111000010E006E080EE15C02E2E16AE552E16E4A -:101120000050F2EF0EF0EDEC0EF00C0EE12698EC14 -:101130000FF0D950F20FF4EC11F0080EEECFDBFFF8 +:1011200000509FEF0EF09AEC0EF00C0EE12666ECEC +:101130000FF0D950F20FB7EC11F0080EEECFDBFF35 :10114000090EEECFDBFF0A0EEECFDBFF0B0EEECF6C -:10115000DBFF1F0E8CEC0EF005EC10F000500110C0 -:10116000021003100CE02B0E23EC12F00A0EDBCF62 -:10117000E6FF0B0E5CEC11F0F4EC0FF003D00B0E5D -:10118000E66EE66A76EC0EF0DBEC12F0FE0EDB505B -:10119000030809E12CEC12F076EC0EF0D3EC11F020 -:1011A000EDEC12F011D0FE0EDBA204D02CEC12F00C -:1011B0000AEC13F0FE0EDBA009D02CEC12F0010EAD -:1011C00054EC0FF0010EE66E60EC11F00101010E1F -:1011D000546F0C0EE15C02E2E16AE552E16EF2EF5F -:1011E0000EF0EDEC0EF00A0EE126C0EC0FF098ECDC -:1011F0000FF0AEEC10F01F0E8CEC0EF0AFEC0FF019 -:1012000007E0D950080FE96EDACFEAFFEE8AED5217 -:10121000FE0EDB5003080BE1F50EDB50FF0802E188 -:1012200046EC10F0F4EC0FF0EDEC12F01ED0FE0ED8 -:10123000DBA20CD0F50EDB50FF0802E146EC10F00B -:10124000F4EC0FF0020EE66E60EC11F0FE0EDBA087 -:101250000ED0AEEC10F0F50EDB50FF0802E146ECCC -:1012600010F0F4EC0FF0010EE66E60EC11F0AFEC54 -:101270000FF002E0DBEC12F010EC13F076EC0EF065 -:101280000101010E546F0A0EE15C02E2E16AE552CF -:10129000E16EF2EF0EF0EDEC0EF0F90EDBCFE6FFB3 -:1012A000E66AE66AE66AE66AD950FA0FF4EC11F0EB -:1012B000DCEC11F0EDEC12F094DF006E0A0EE15E52 -:1012C0000050F2EF0EF0EDEC0EF0FE0EDBA00BD0B6 -:1012D000010E78EC10F02DC057F12EC058F12FC040 -:1012E00059F130C05AF1FE0EDBA20BD0020E78ECA1 -:1012F00010F02DC05BF12EC05CF12FC05DF130C04D -:101300005EF10101546BE5EF11F0EDEC0EF01F0EF4 -:101310008CEC0EF015EC13F0E5EF11F0EDEC0EF0A7 -:10132000040EE126F90EDB500AE0C0EC0FF0210EAE -:101330008CEC0EF010EC13F0EDEC12F01ED0200E41 -:101340008CEC0EF0FE0EDBA209D094EC0EF05B0EDE -:10135000E96E010EA4EC11F00AEC13F0FE0EDBA016 -:101360000ED094EC0EF0570EE96E010EA4EC11F0C5 -:10137000010E54EC0FF0010EE66E60EC11F0040E5D -:10138000E15C02E2E16AE552E16EF2EF0EF0F9ECA7 -:1013900011F006E087EC10F003E07AEC0FF003D0D8 -:1013A000080E2FEC12F0040EE15C02E2E16AE55255 -:1013B000E16EF2EF0EF0F9EC11F006E087EC10F0C0 -:1013C00003E07AEC0FF003D00A0E2FEC12F0040EBB -:1013D000E15C02E2E16AE552E16EF2EF0EF0F9EC57 -:1013E00011F006E087EC10F003E07AEC0FF003D088 -:1013F000070E2FEC12F0040EE15C02E2E16AE55206 -:10140000E16EF2EF0EF0F9EC11F006E087EC10F06F -:1014100003E07AEC0FF00BD00B0E8CEC0EF088ECA6 -:1014200011F001EC12F0DE6ADD6AB3EC11F0040E8B -:10143000E15C02E2E16AE552E16EF2EF0EF01FECD0 -:1014400012F006E087EC10F003E096EC10F005D007 -:101450000D0E8CEC0EF088EC11F0F2EF0EF01FEC9C -:1014600012F00FE1010E78EC10F0010157512D5CE4 -:101470000A6E58512E580B6E59512F580C6E5A51F6 -:1014800011D087EC10F032E1020E78EC10F001017F -:101490005B512D5C0A6E5C512E580B6E5D512F58BE -:1014A0000C6E5E5130580D6E0AC02DF00BC02EF040 -:1014B0000CC02FF0306EC2EC24F058EC0FF07CEC36 -:1014C00012F072EC25F02EC002F02FC003F030C0F5 -:1014D00004F031C005F0A8EC0FF0C5EC25F032ECBB -:1014E00026F02FC0F3FF30C0F4FF02D096EC10F0CE -:1014F000F2EF0EF008EC12F078EC12F0030E84EC30 -:101500000FF0F2EF0EF008EC12F043EC0FF0030EC8 -:1015100084EC0FF0F2EF0EF0EDEC0EF0C6EC10F0F4 -:1015200043EC0FF0010E29EC13F082EC10F0C6EC46 -:1015300010F081EC0FF0AFEF11F0EDEC0EF0C6EC17 -:1015400010F08BEC0FF082EC10F0C6EC10F043ECD6 -:101550000FF0020EAFEF11F0EDEC0EF01C0EE126D5 -:10156000F60EDB501EE0006A800E016E010E026E68 -:10157000430E036E47EC13F0336A346AC80E356EBF -:10158000420E366E72EC25F089EC12F0A6DBC5EC4B -:1015900012F032EC26F0F70E2FC0DBFFF80E30C051 -:1015A000DBFF8DEC11F0DDEC0EF00CEC12F00C6AB0 -:1015B000800E0D6E010E0E6E430E0F6E05EC13F0D5 -:1015C00085EC12F04AEC11F057EC10F086DBC5EC1C -:1015D00012F02EC0DEFF2FC0DEFF30C0DEFF31C0B4 -:1015E000DDFFDD52DD52D1EC0FF0A8EC0FF0C5ECC1 -:1015F00025F089EC12F00CEC12F0106A800E116EDE -:10160000010E126E430E136E05EC13F058EC11F040 -:101610003BEC13F0C5EC12F0040E2EC0DBFF050E00 -:101620002FC0DBFF060E30C0DBFF070E31C0DBFF33 -:10163000DECF2EF0DECF2FF0DECF30F0DDCF31F079 -:10164000DD52DD52040EDBCF33F0050EDBCF34F07C -:10165000060EDBCF35F0070E1BEC13F0080E2EC084 -:10166000DBFF090E2FC0DBFF0A0E30C0DBFF0B0EC5 -:1016700031C0DBFF080EDBCF04F0090EDBCF05F035 -:101680000A0EDBCF06F00B0EDBCF07F0336A346AAD -:10169000356A366A5EDB98EC26F0010A03E005EC59 -:1016A00010F013D0080EDBCF08F0090EDBCF09F0E5 -:1016B0000A0EDBCF0AF00B0EDBCF0BF0A8EC0FF01D -:1016C000C9EC12F0C5EC25F015DB080E00C0DBFFFD -:1016D000090E01C0DBFF0A0E02C0DBFF0B0E03C0C8 -:1016E000DBFFA2DBD4EC0FF0BDEC10F019EC11F035 -:1016F0002CEC10F0046A056A066A400E076E92EC44 -:1017000011F085EC12F0BDEC10F0F1EC12F0F2DA11 -:101710000C0EDBCF0CF00D0EDBCF0DF00E0EDBCF81 -:101720000EF00F0EDBCF0FF05BEC10F012EC10F0B0 -:101730007BDB89EC12F02CEC13F019EC11F0DCECF3 -:101740000FF0066A400E076E2CEC13F0F1EC12F06D -:1017500032EC12F05BEC10F01FEC10F0140EDBCF4B -:1017600008F0150EDBCF09F0160EDBCF0AF0170ECE -:1017700017DB0C0EDBCF14F00D0EDBCF15F00E0EC9 -:10178000DBCF16F00F0E12DBD9CFE9FFDACFEAFF7D -:10179000EECF20F0EECF21F0EECF22F0EFCF23F00E -:1017A0007BEC11F0B8DB246E0D0EE15E2450180EB8 -:1017B000DBCF08F0190EDBCF09F01A0EDBCF0AF0F1 -:1017C0001B0EEEDA100EDBCF14F0110EDBCF15F08E -:1017D000120EDBCF16F0130EE9DA040EDBCF20F089 -:1017E000050EDBCF21F0060EDBCF22F0070EDBCF9C -:1017F00023F07BEC11F085DB29EC13F0246E0D0E49 -:10180000E15E2450FFEC12F01C0EE15C02E2E16AA2 -:10181000E552E16EE7D2E1DA3C0EE126C2DB52ECA2 -:1018200013F092EC12F0C9EC12F0C5EC25F0BCDB21 -:10183000AEEC12F092EC11F085EC12F069EC10F0C5 -:101840004CDA63EC11F049DA84DADCEC24F052DA99 -:10185000336A346A800E52EC10F0380E2EC0DBFF73 -:10186000390E2FC0DBFF3A0E30C0DBFF3B0E31C01C -:10187000DBFF52EC13F03EDA57DB92EC11F09DDA0D -:1018800053DB1DEC2EF0086E080EE15E0850080ECA -:101890002DC0DBFF090E2EC0DBFF0A0E2FC0DBFFC1 -:1018A0000B0E30C0DBFFF60EDB5007E0D950F40F13 -:1018B000F4EC11F0EE50ED1039E1C7DA080EDBCF91 -:1018C0000EF0090EDBCF0FF00A0EDBCF10F00B0E7F -:1018D000E1EC10F0DBD997EC11F02E6A2F6A800E44 -:1018E000306E400E316E380EDBCF33F0390EDBCF69 -:1018F00034F03A0EDBCF35F03B0ED8EC11F0D8DAED -:1019000013DB79DB2DC002F02EC003F02FC004F0F2 -:1019100030C005F02DC02EF011EC12F0BEEC11F02D -:10192000E9DD0A6E060EE15E0A50A3D1380EDBCF68 -:1019300004F0390EDBCF05F03A0EDBCF06F03B0E9C -:10194000DBCF07F0CFDB55EC13F0C5EC25F0BDEC99 -:1019500010F033EC13F0B5DABCDB35EC12F0AEEC82 -:1019600012F0BBD9D0D9DCEC24F026DB3CEC12F031 -:101970008DEC11F058EC11F0C5EC12F060DB046A4C -:10198000056A3CEC12F092EC11F058EC11F0C5EC49 -:1019900012F01C0E2EC0DBFF1D0E2FC0DBFF1E0E33 -:1019A00030C0DBFF1F0E31C0DBFF1C0EDBCF00F0B1 -:1019B0001D0EDBCF01F01E0EDBCF02F01F0EDBCFC2 -:1019C00003F0C6DAC5EC12F0200E2EC0DBFF210EAC -:1019D0002FC0DBFF220E30C0DBFF230E31C0DBFF48 -:1019E000D950180FE96EDACFEAFF240EEECFDBFFF5 -:1019F000250EEECFDBFF260EEECFDBFF270EEECF60 -:101A0000DBFF8DEC11F0E6EC12F0200EDBCF33F0B3 -:101A1000210EDBCF34F0220EDBCF35F0230E21EC8C -:101A200013F0280E2EC0DBFF290E2FC0DBFF2A0E7D -:101A300030C0DBFF2B0E31C0DBFF92EC11F0E6EC87 -:101A400012F0240EDBCF33F0250EDBCF34F0260E60 -:101A5000DBCF35F0270E21EC13F02C0E2EC0DBFF70 -:101A60002D0E2FC0DBFF2E0E30C0DBFF2F0E31C03E -:101A7000DBFF2C0EDBCF04F02D0EDBCF05F02E0E9E -:101A8000DBCF06F02F0EDBCF07F062DA62D9C5ECB0 -:101A900025F06FEC11F0300E2EC0DBFF310E2FC0A1 -:101AA000DBFF320E30C0DBFF330E31C0DBFF280E10 -:101AB000DBCF2EF0290EDBCF2FF02A0EDBCF30F05C -:101AC0002B0EDBCF31F06FEC11F0340E2EC0DBFFAC -:101AD000350E2FC0DBFF360E30C0DBFF370E31C0B6 -:101AE000DBFFD950300F92D9D950340F8FD91DEC6C -:101AF0002EF0006E080EE15E00500C0E2DC0DBFFD4 -:101B00000D0E2EC0DBFF0E0E2FC0DBFF0F0E30C000 -:101B1000DBFF006A016A026A400E036E00C0E6FF46 -:101B200001C0E6FF02C0E6FFE66E97D955EC13F060 -:101B3000BEDAFAD9C9EC11F02DC014F02EC015F0A0 -:101B40002FC016F030C017F078EC12F01DEC2EF01C -:101B5000186E080EE15E1850E552E7CF03F0E5522B -:101B6000E7CF02F0E552E7CF01F0E552E7CF00F012 -:101B70002DC004F02EC005F02FC006F030C007F0D5 -:101B80002ADAC5EC12F04EDAF60EDB5002081FE13D -:101B9000B7EC12F0DBEC24F0F7EC12F0DCEC24F004 -:101BA00025D967DA060E2FC0DBFF070E30C0DBFF3A -:101BB000000EDFCF2FF0010E00D9020EFCEC11F069 -:101BC000DCDA6CDB040E2FC0DBFF050E35D02CD920 -:101BD00091D80C0EDBCF04F00D0EDBCF05F00E0E0E -:101BE000DBCF06F00F0EDBCF07F004C033F005C0EB -:101BF00034F006C035F007C036F0DBEC24F02CDA08 -:101C0000B7EC12F0DCEC24F0F7EC12F0DBEC24F093 -:101C1000EDD82FDA040E2FC0DBFF050E30C0DBFF3E -:101C2000020EDBCF2FF0030EC8D8D6DBA6DA36DBE8 -:101C3000060E2FC0DBFF070E30C0DBFF27D892D87F -:101C4000040EDBCF2FF0050E90DA78EC12F0C4DB37 -:101C50002FD861D9206E0D0EE15E205083D8060E7C -:101C6000DBCF2FF0070E81DA4CD9C6DB21D849D95A -:101C70004BD93C0EE15C02E2E16AE552E16EB2D082 -:101C80000101565102E0556B010C000CF9DF00090F -:101C9000FDE012000101555112002CEC13F07CEC18 -:101CA00012F0B1DA3FDB61DA78EC12F036DB9AD36E -:101CB0002EC01CF02FC01DF030C01EF031C01FF030 -:101CC0007CEC12F058EC13F02DC018F02EC019F077 -:101CD0002FC01AF030C01BF012002EC033F02FC0FE -:101CE00034F030C035F031C036F01200EDEC12F0B7 -:101CF00060EF11F02EC000F02FC001F030C002F0F4 -:101D000031C003F0120000C02EF001C02FF002C05D -:101D100030F003C031F01200E66EEDEC12F0DCECB6 -:101D200004F0E552E5521200FA0EDBCF00F0FB0E94 -:101D3000DBCF01F0FC0EDBCF02F0FD0EDBCF03F0BA -:101D4000000E006C011E0122021E0222031E03224D -:101D5000120004C02EF005C02FF006C030F007C0FE -:101D600031F0120047EC13F0C7DB03EF11F0D0DACB -:101D700048DBCEDAF3CFDEFFF4CFDDFFB3EF11F0B7 -:101D800000C0DFFF010E01C0DBFF020E02C0DBFF5F -:101D9000030E03C0DBFF6CDB030EDBCFE6FF12009C -:101DA000DBCF0BF0A9DBF5DB03EF11F0DBCF17F096 -:101DB000A3DB89DAC1DB78EF12F0A7DB89EF12F041 -:101DC00002C02EF02EDBDBEC24F0D8DA8CEC0AF02B -:101DD000126E060EE15E12501200D9CFE6FFE1CF7F -:101DE000D9FF1200E552E7CFD9FF1200100EDBCF6A -:101DF00033F0110EDBCF34F0120EDBCF35F0130EC3 -:101E0000D7DA32EF26F023DBE76E1200E96EDACF85 -:101E1000EAFFDCEF11F00CC02EF00DC02FF00EC069 -:101E200030F00FC031F012002E6A2F6A306A400E77 -:101E3000316E080EDBCF33F0090EDBCF34F00A0E23 -:101E4000DBCF35F00B0ED8EF11F071DA026A036ABE -:101E5000B40E046E420E056E1200140EDBCF0CF0B1 -:101E6000150EDBCF0DF0160EDBCF0EF0170EDBCF0D -:101E70000FF01200350E336EFA0E346E0E0E356E04 -:101E80003C0E366E1200000E186C191E19221A1E16 -:101E90001A221B1E1B2218C0E6FF19C0E6FF1AC03B -:101EA000E6FF1BC0E6FF1200E66E0ADAD3EF11F080 -:101EB0002EC006F02FC007F030C008F031C009F086 -:101EC0001200F40EDBCF2FF0F50E8CD2060EE7CF0A -:101ED000DBFFDBCFE6FF070EDBCFE6FF040EDBCF39 -:101EE000E6FF050EDBCFE6FFC3DA030EDBCFE6FF2E -:101EF000D3EF11F00C0E52DA2D6A2E6A2F6A306A77 -:101F00001200F6DA020E1200A4DB206E0D0EE15E66 -:101F10002050FFEF12F0ECDA010E29EF13F05DDB39 -:101F200011EC07F0E5521200B6DB31C0E6FF1200FB -:101F3000D950F60F59DA040EEECFDBFF050EEECFC7 -:101F4000DBFF060EEECFDBFF070EEECFDBFF12004E -:101F5000336A346A800E356EBF0E366E1200040E80 -:101F6000DBCF00F0050EDBCF01F0060EDBCF02F079 -:101F7000070EDBCF03F00050011002100310120017 -:101F8000D9CFE9FFDACFEAFFFA0EDBCFEEFFFB0E87 -:101F9000DBCFEEFFFC0EDBCFEEFFFD0EDBCFEEFF67 -:101FA000120080DBBDEF10F0B4DABCD91BD2E66EB4 -:101FB000E66A030EE66E40D2140E2EC0DBFF150E4D -:101FC0002FC0DBFF160E30C0DBFF170E31C0DBFF6A -:101FD000046A056A12002DC033F02EC034F02FC001 -:101FE00035F030C036F01200080EDBCFE6FF090EE8 -:101FF000DBCFE6FF120037EC2AF0E55226D3336A36 -:10200000346A356A400E366E1200080EDBCF00F0DF -:10201000090EDBCF01F00A0EDBCF02F00B0EDBCF97 -:1020200003F01200100E2EC0DBFF110E2FC0DBFFDD -:10203000120E30C0DBFF130E31C0DBFF1200180E92 -:102040002EC0DBFF190E2FC0DBFF1A0E30C0DBFFE6 -:102050001B0E31C0DBFF12000C0E2EC0DBFF0D0E7D -:102060002FC0DBFF0E0E30C0DBFF0F0E31C0DBFFD9 -:102070001200020E2FC0DBFF030E30C0DBFFF90E93 -:10208000DBCF2FF0FA0EDBCF30F01200D950080F63 -:10209000E96EDACFEAFFEE52ED881200356E430E9C -:1020A000366E1200356E400E366E72EF25F0DBECA8 -:1020B00024F0BDEF10F00CC033F00DC034F00EC0B2 -:1020C00035F00FC036F0DBEF24F0336A800E346E4B -:1020D00012002EC018F02FC019F030C01AF031C015 -:1020E0001BF012000C6A0D6A0E6A400E0F6E120091 -:1020F000E66EDBEC09F0E5521200040EE126FE0E5E -:10210000DB041200286E0D0EE15E28501200FE0E58 -:10211000DB5002081200DBCFE6FF8ED1E66EBEEC8C -:1021200007F0006E090EE15E005012000C0E36D969 -:10213000F36AF46A1200DCEC04F0E552E552020E98 -:10214000E66E12004ADAB4EC07F0E5521200E66ED1 -:102150008BEC07F0E552E55200091200080EF36E11 -:10216000DB6E090EF3CFDBFF1200CFD9F7D9C4D94C -:10217000C5EC25F017DA9CEF12F02EC008F02FC046 -:1021800009F030C00AF031C00BF0120086DD2EC01D -:1021900024F02FC025F030C026F031C027F06ADED1 -:1021A000C5EC25F02EC020F02FC021F030C022F069 -:1021B00031C023F08ADF810E71DFC5EC25F058EFC6 -:1021C0000EF0DBCF11F0336A346A340E67DF0EC0D5 -:1021D0002EF00FC02FF010C030F011C031F0C5EC60 -:1021E00025F02EC00AF02FC00BF030C00CF031C02B -:1021F0000DF0DB0E336E0F0E346E490E53DF58DEDA -:102200006CDDE0EF0EF0C5EC25F083D9CC0E336E1B -:10221000BC0E346E8C0E356E3B0E366E49DA2DC018 -:1022200000F02EC001F02FC002F030C003F078EFB4 -:1022300012F0D7D95FDD106A116A800E126E3F0E60 -:10224000136E080EDBCF14F0090EDBCF15F00A0E6B -:10225000DBCF16F00B0EDBCF17F014C033F015C038 -:1022600034F016C035F017C036F005DA4CDD72EFE9 -:1022700025F0140EDBCF00F0150EDBCF01F0160EAB -:10228000DBCF02F0170EDBCF03F01FDF010E06DFFE -:1022900083EF0EF087D921DD0BEF0FF0E4D9F90EB3 -:1022A000DBCF2FF0FA0E31D93DD96FD932EF26F0BE -:1022B0002CD954D96DEF0EF0DBCFE6FF76EF0EF0A0 -:1022C0005FEC05F0C2D114C02EF015C02FF016C07F -:1022D00030F017C031F0C5EC25F0D2EF12F0140E3B -:1022E000DBCF33F0150EDBCF34F0160EDBCF35F03D -:1022F000170E1BEF13F0BEDD20C02EF021C02FF013 -:1023000022C030F023C031F0C5EC25F058EF0EF0BC -:1023100064D948EC06F0E5521200FD0EDBCF2FF039 -:10232000FE0E1200FB0EDBCF2FF0FC0E1200F70E9C -:10233000DBCFE6FFF80EDBCFE6FFF90EDBCFE6FFE3 -:10234000FA0EDBCFE6FF1200EA6EEE500026EE50EA -:102350000122EE500222EE500322C0EF0EF079D996 -:10236000D1DE4DD93FD5DECF2DF0DECF2EF0DECF42 -:102370002FF0DDCF30F0DD52DD52120032EC26F0CE -:102380002FC000F030C001F02FC0E6FF30C0E6FFE4 -:102390001200D950380F3ADDFBEF0FF0E66E38EC43 -:1023A00033F0E5521200DECFE6FFDDCFE6FF12008C -:1023B000DBCF36F0C5EF25F0EECFE6FFEECFE6FF40 -:1023C000EECFE6FFEFCFE6FF1200010EA5DC010124 -:1023D000010E556F566B06D5000EDFCF2FF0010EA4 -:1023E00085EF12F085EF12F0E96EFF0EDA20EA6E4B -:1023F0001200F3DC7DEF10F0DBCF2FF0030E85EF42 -:1024000012F0020EF3CFDBFF030EF4CFDBFF12005E -:10241000E4DC43DC58EF0EF0F2DDC5EC25F07AEF9A -:102420000EF003C02FF004C030F005C031F01200F0 -:1024300054DC69DCDBEF24F0A2EC07F006D1CDDC44 -:10244000FE0EDB041200E66EE66A76EF0EF0E66E34 -:102450008AEC32F0E552120067DCC0EF0EF05CDC73 -:10246000B7EF0EF047DC2DEF0FF0C9DD72EF25F06E -:10247000020EDBCFE6FF1200800E066E3F0E076EE7 -:1024800031DE04C0E6FF05C0E6FF06C0E6FF07C078 -:10249000E6FF0CC0E6FF0DC0E6FF0EC0E6FFE66EED -:1024A00078DFE552E7CF0FF0E552E7CF0EF0E552C7 -:1024B000E7CF0DF0E552E7CF0CF0E552E7CF07F09C -:1024C000E552E7CF06F0E552E7CF05F0E552E7CF5A -:1024D00004F02DC010F02EC011F02FC012F030C04B -:1024E00013F079DD98DCC5EC25F047DE33EF13F00F -:1024F0002DC0E6FF4BEF13F0330E336EE20E346E59 -:10250000C20E356E420E366E1200DBCF30F0ADEFEC -:1025100024F02EC004F02FC005F030C006F031C00A -:1025200007F012002EC00CF02FC00DF030C00EF0DE -:1025300031C00FF06DEF0EF0BD0E336E370E346EFE -:10254000860E356E410E366EB3D82DC00CF02EC0FF -:102550000DF02FC00EF030C00FF012002EC014F09E -:102560002FC015F030C016F031C017F012006DDC2E -:102570000C0EDBCF0EF00D0EDBCF0FF00E0EDBCF0F -:1025800010F00F0E1EDE39EF11F083EC0EF0C5EFE8 -:1025900025F008C02EF009C02FF00AC030F00BC0A3 -:1025A00031F012002EC010F02FC011F030C012F028 -:1025B00031C013F01200060EDBCFE6FF070E7CDE03 -:1025C000040EDBCFE6FF050E5CEF11F0DDEC0EF044 -:1025D0004CDF48DF6AD8DBEF24F0FE0EDBCFE6FFEE -:1025E00012006DEC0EF0A9EC0EF0C5EF25F0F6EC44 -:1025F0000EF02FC0DEFF30C0DDFF39EF11F0030E0B -:10260000E66E63EC09F0E5521200F70EDBCF2FF017 -:10261000F80E1200020E48DC020EE66E60EF11F0BA -:1026200027DF030E49DED3EF11F0FC0EDBCFE6FF10 -:10263000FD0E5CEF11F0DBCF36F072EC25F07AEF97 -:102640000EF0B6DE9ADD18EF12F0E552E552E552D3 -:102650001200E66E93EF08F0F90EDBCF2FF0FA0EC2 -:1026600054DFBDEF10F06DEC0EF0A9EC0EF072EC43 -:1026700025F07AEF0EF010C02EF011C02FF012C02E -:1026800030F013C031F0DCEC24F092EF12F0BDDF3B -:102690003CDFBDEF10F02EC0E6FF2FC0E6FF30C0DC -:1026A000E6FF12003ADE85EF12F00BDC4AEF11F084 -:0826B000C5EC25F061EF26F0F6 -:0826B800DACFE4FFE2CFDAFF04 -:1026C000E9CFE4FFEACFE4FFF6CFE4FFF7CFE4FF82 -:1026D000F5CFE4FFF3CFE4FFF4CFE4FFFACFE4FF5C -:1026E00000EE29F0140EE80403E3EECFE4FFFBD77D -:1026F00000EE00F0290EE80403E3EECFE4FFFBD781 -:10270000DDEC1EF09EA013D0E7EC1EF001014D2B76 -:10271000000E4E23E80E4D5D030E4E5905E34D6B42 -:102720004E6B4F2B000E502358EC2CF09E90F2A0D5 -:1027300003D02EEC04F0F290F0EC1EF002E2E16A1D -:10274000E552E16EE552E7CFD9FFE55200EE28F001 -:10275000290EE80403E3E5CFEDFFFBD700EE3CF0E4 -:10276000140EE80403E3E5CFEDFFFBD7E5CFFAFF56 -:10277000E5CFF4FFE5CFF3FFE5CFF5FFE5CFF7FFBA -:10278000E5CFF6FFE5CFEAFFE5CFE9FFE5CFDAFFDA -:102790001100D8CFE4FFE0CFE4FFE46EDACFE4FF2E -:1027A000E2CFDAFFF3CFE4FFF4CFE4FFDDEC1EF07D -:1027B000F0EC1EF002E2E16AE552E16EE552E7CF8D -:1027C000D9FFE552E5CFF4FFE5CFF3FFE5CFDAFF20 -:1027D000E550E5CFE0FFE5CFD8FF100004D83BEC93 -:1027E0001FF063D8FCD70F0EC11202D805EF1FF0FF -:1027F00000EC1FF0E652B4EC1EF00101696F070E09 -:10280000695D10E1E66A8AEC32F0E552DF6E000E97 -:10281000DF80F8EC1EF0E66A6BEC33F0E552DF7017 -:10282000F8EC1EF01C0E9316D08EF28EF28CF2860F -:10283000F30E8C1695160101476B486B496B4A6B7A -:10284000010E4B6F92948094939881980D0EE66ED2 -:102850007C0EE66EE10EE66EFDEC31F0E552E552DF -:10286000E552C70E921694943F0E9516010EE66E31 -:1028700094EC04F0E552838C808A82848088838E75 -:1028800080868294010EE66EA6EC33F0E5528284D7 -:102890009D80C50EE66EFBEC32F0E552E7EC1EF0D3 -:1028A000E552E552E7CFD9FF1200D9CFE6FFE1CFDD -:1028B000D9FF0F0EE12601014B5102E0F9EC1DF0AA -:1028C000200E0101005D03E36D50020B12E04AECA3 -:1028D0000EF000090CE0E66A010EE66E030EE66EED -:1028E00085EC09F0E552E552E55246EC0EF0EFEFCB -:1028F0001DF0010149514A1102E1000E08D049C101 -:10290000E9FF4AC1EAFFEF50800B01E0010E000928 -:1029100047E101014651EA6A260FE96E010EEA22FB -:10292000EF5000083DE20501406B01014C514C2B7A -:102930000501416F0501040E426F01014651EA6A2B -:10294000260FE96E010EEA22EFCF43F5400EE66E48 -:10295000400EE66E050EE66E010EE66E010EE66EA8 -:1029600056EC23F0006E050EE15E0050F3CF49F106 -:10297000F4CF4AF101014651EA6A260FE96E010ED1 -:10298000EA22EF6A01014651000803E2010146070D -:1029900007D001014551000803E201011F0E466FF7 -:1029A000010149514A1102E1000E08D049C1E9FF75 -:1029B0004AC1EAFFEF50800B01E0010E00092BE154 -:1029C0004AEC0EF0000927E040EC0EF0000923E08D -:1029D0000501406B01014C514C2B0501416F050174 -:1029E0000A0E426F0501436B0501010E486F400E50 -:1029F000E66E400EE66E050EE66E010EE66E010E08 -:102A0000E66E56EC23F0006E050EE15E0050F3CF4B -:102A100049F1F4CF4AF101015151020A10E0030AD1 -:102A200001E021D0030EE66EAFEC2DF0E55213EC81 -:102A300008F0000903E00101020E516F16D0200ECC -:102A4000E66E030EE66EC80EE66EE66AE80EE66E09 -:102A5000030EE66E7AEC0AF0006E060EE15E0050A0 -:102A60000101516B02D00101516B01014751481125 -:102A700002E1000E08D047C1E9FF48C1EAFFEF506C -:102A8000800B01E0010E000902E0EFEF1DF00501EF -:102A90000251070A02E150EF1DF00D0A01E16AD26E -:102AA000010A01E12AD20D0A01E1C2D1040A1AE0A9 -:102AB000030A07E0010A02E0AEEF1DF0FF00EFEFAE -:102AC0001DF0E66A8AEC32F0E552DF6E000EDB8024 -:102AD000DFCFE6FFE66A6AEC32F0E552E552FF002E -:102AE000EFEF1DF0010149514A1102E1000E08D03B -:102AF00049C1E9FF4AC1EAFFEF50800B01E0010E36 -:102B0000000901E093D100C540F50501416B0501C5 -:102B1000030E426F0501436B05010851100A01E1E4 -:102B200038D11F0A01E1FAD0080A01E1BCD0010A3C -:102B300001E17ED0020A71E0070A64E0010A20E0A8 -:102B4000030A06E0010A01E047D169C148F547D10F -:102B50000501486BD10E006E650E016E026A00C061 -:102B6000E6FF01C0E6FF02C0E6FF480EE66E050E76 -:102B7000E66E4EEC32F0036E050EE15E03502FD18F -:102B80000501486BC50E006E650E016E026A00C03D -:102B9000E6FF01C0E6FF02C0E6FF480EE66E050E46 -:102BA000E66E4EEC32F0036E050EE15E0350C30E8E -:102BB000006E650E016E026A00C0E6FF01C0E6FF0E -:102BC00002C0E6FF480EE66E050EE66E4EEC32F0F1 -:102BD000036E050EE15E0350BA0E006E650E016EC7 -:102BE000026A00C0E6FF01C0E6FF02C0E6FF480E31 -:102BF000E66E050EE66E4EEC32F0036E050EE15EFB -:102C00000350EDD092CF48F593CF49F594CF4AF5D4 -:102C100095CF4BF596CF4CF5E2D080CF48F581CFDC -:102C200049F582CF4AF583CF4BF584CF4CF5D7D009 -:102C3000010EE66EFEEC2CF0E552010E2DC0DBFF1E -:102C4000020E2EC0DBFF030E2FC0DBFF040E30C0D0 -:102C5000DBFF040EDBCF48F5030EDBCF49F5020E98 -:102C6000DBCF4AF5010EDBCF4BF5020EE66EFEEC34 -:102C70002CF0E552010E2DC0DBFF020E2EC0DBFF53 -:102C8000030E2FC0DBFF040E30C0DBFF040EDBCFD2 -:102C90004CF5030EDBCF4DF5020EDBCF4EF5010EEA -:102CA000DBCF4FF59CD0010EE66EDBEC09F0E55270 -:102CB000010E2DC0DBFF020E2EC0DBFF030E2FC066 -:102CC000DBFF040E30C0DBFF040EDBCF48F5030E44 -:102CD000DBCF49F5020EDBCF4AF5010EDBCF4BF51A -:102CE000020EE66EDBEC09F0E552010E2DC0DBFFB3 -:102CF000020E2EC0DBFF030E2FC0DBFF040E30C020 -:102D0000DBFF040EDBCF4CF5030EDBCF4DF5020EDF -:102D1000DBCF4EF5010EDBCF4FF561D0010EE66E35 -:102D200003EC0AF0E552010E2DC0DBFF020E2EC0AF -:102D3000DBFF030E2FC0DBFF040E30C0DBFF040EF1 -:102D4000DBCF48F5030EDBCF49F5020EDBCF4AF5AA -:102D5000010EDBCF4BF5020EE66E03EC0AF0E552F6 -:102D6000010E2DC0DBFF020E2EC0DBFF030E2FC0B5 -:102D7000DBFF040E30C0DBFF040EDBCF4CF5030E8F -:102D8000DBCF4DF5020EDBCF4EF5010EDBCF4FF55D -:102D900026D0010EE66E1FEC0AF0E552050EF3CFC9 -:102DA000DBFF060EF4CFDBFF060EDBCF48F5050E8A -:102DB000DBCF49F5020EE66E1FEC0AF0E552050E78 -:102DC000F3CFDBFF060EF4CFDBFF060EDBCF4AF5B9 -:102DD000050EDBCF4BF503D00501020E436F400E0D -:102DE000E66E400EE66E050EE66E010EE66E010E14 -:102DF000E66E56EC23F0006E050EE15E0050F3CF58 -:102E000049F1F4CF4AF1400EE66E000EE66E050E73 -:102E1000E66EE66A010EE66E56EC23F0006E050ED5 -:102E2000E15E0050F3CF47F1F4CF48F1EFEF1DF032 -:102E300005010851030A37E0010A25E0030A13E0FF -:102E4000010A01E040D005010951921205010A5121 -:102E5000931205010B51941205010C5195120501B5 -:102E60000D51961235D00501091D921605010A1D56 -:102E7000931605010B1D941605010C1D95160501F1 -:102E80000D1D961625D00501091D891605010A1D7F -:102E90008A1605010B1D8B1605010C1D8C160501EC -:102EA0000D1D8D1615D005010951891205010A5114 -:102EB0008A1205010B518B1205010C518C12050170 -:102EC0000D518D1205D0030EE66E38EC33F0E5524D -:102ED000400EE66E000EE66E050EE66EE66A010E28 -:102EE000E66E56EC23F0006E050EE15E0050F3CF67 -:102EF00047F1F4CF48F1EFEF1DF005010851020A48 -:102F000009E0030A01E01CD009C5E6FFAFEC2DF093 -:102F1000E5521BD009C5E6FFB6EC2DF0E5524AECB0 -:102F20000EF000090CE0E66A010EE66E030EE66E96 -:102F300085EC09F0E552E552E55246EC0EF005D07D -:102F4000010EE66E38EC33F0E552400EE66E000EF0 -:102F5000E66E050EE66EE66A010EE66E56EC23F0AE -:102F6000006E050EE15E0050F3CF47F1F4CF48F15B -:102F7000EFEF1DF005010851060A02E10FEF1DF009 -:102F8000080A02E1CFEF1CF0030A02E1C9EF1CF0CE -:102F9000070A02E16AEF1CF0030A01E1E8D3010A23 -:102FA00001E1FAD20F0A01E1E3D2020A01E19BD268 -:102FB000150A01E15FD2140A01E131D2070A01E1E9 -:102FC00003D2010A01E1D5D1030A01E1A7D1010A27 -:102FD00001E1A1D10C0A01E127D1030A01E195D059 -:102FE000040A02E037EF1DF00501090504E0030EB5 -:102FF0000501095D40E10AC5E6FF010EE66E6AECD7 -:1030000032F0E552E5520BC5E6FF020EE66E6AECC1 -:1030100032F0E552E5520CC5E6FF030EE66E6AECAF -:1030200032F0E552E5520DC5E6FF040EE66E6AEC9D -:1030300032F0E552E5520EC5E6FF050EE66E6AEC8B -:1030400032F0E552E5520FC5E6FF060EE66E6AEC79 -:1030500032F0E552E55210C5E6FF070EE66E6AEC67 -:1030600032F0E552E55211C5E6FF080EE66E6AEC55 -:1030700032F0E552E552020E0501095D04E0030E4F -:103080000501095D40E10AC5E6FF090EE66E6AEC3E -:1030900032F0E552E5520BC5E6FF0A0EE66E6AEC29 -:1030A00032F0E552E5520CC5E6FF0B0EE66E6AEC17 -:1030B00032F0E552E5520DC5E6FF0C0EE66E6AEC05 -:1030C00032F0E552E5520EC5E6FF0D0EE66E6AECF3 -:1030D00032F0E552E5520FC5E6FF0E0EE66E6AECE1 -:1030E00032F0E552E55210C5E6FF0F0EE66E6AECCF -:1030F00032F0E552E55211C5E6FF100EE66E6AECBD -:1031000032F0E552E5523CEF1DF000C540F50501F7 -:10311000416B0501030E426F0501436B010EE66E24 -:103120008AEC32F0E5520501486F020EE66E8AEC39 -:1031300032F0E5520501496F030EE66E8AEC32F07B -:10314000E55205014A6F040EE66E8AEC32F0E55254 -:1031500005014B6F050EE66E8AEC32F0E552050173 -:103160004C6F060EE66E8AEC32F0E55205014D6FAB -:10317000070EE66E8AEC32F0E55205014E6F080E3E -:10318000E66E8AEC32F0E55205014F6F090EE66EED -:103190008AEC32F0E5520501506F0A0EE66E8AECB9 -:1031A00032F0E5520501516F0B0EE66E8AEC32F0FB -:1031B000E5520501526F0C0EE66E8AEC32F0E552D4 -:1031C0000501536F0D0EE66E8AEC32F0E5520501F3 -:1031D000546F0E0EE66E8AEC32F0E5520501556F23 -:1031E0000F0EE66E8AEC32F0E5520501566F100EB6 -:1031F000E66E8AEC32F0E5520501576F400EE66E3E -:10320000400EE66E050EE66E010EE66E010EE66EEF -:1032100056EC23F0006E050EE15E0050F3CF49F14D -:10322000F4CF4AF13CEF1DF0E66A010EE66E6AEC5F -:1032300032F0E552E552010EE66E020EE66E6AECE1 -:1032400032F0E552E552E66A030EE66E6AEC32F0C1 -:10325000E552E552E66A040EE66E6AEC32F0E5529B -:10326000E552E66A050EE66E6AEC32F0E552E5528A -:10327000E66A060EE66E6AEC32F0E552E552030E9F -:10328000E66E070EE66E6AEC32F0E552E552E80EA5 -:10329000E66E080EE66E6AEC32F0E552E552E66A3A -:1032A000090EE66E6AEC32F0E552E552010EE66E6A -:1032B0000A0EE66E6AEC32F0E552E552E66A0B0E53 -:1032C000E66E6AEC32F0E552E552E66A0C0EE66E06 -:1032D0006AEC32F0E552E552E66A0D0EE66E6AECF3 -:1032E00032F0E552E552E66A0E0EE66E6AEC32F016 -:1032F000E552E552030EE66E0F0EE66E6AEC32F012 -:10330000E552E552E80EE66E100EE66E6AEC32F01B -:10331000E552E552B1D313EC08F0AED3060E09C561 -:10332000DBFF050E0AC5DBFF080E0BC5DBFF070E32 -:103330000CC5DBFF0A0E0DC5DBFF090E0EC5DBFF5A -:10334000090EDBCFE6FF0A0EDBCFE6FF070EDBCF71 -:10335000E6FF080EDBCFE6FF050EDBCFE6FF060E2D -:10336000DBCFE6FF7AEC0AF0006E060EE15E00505D -:1033700083D3060E09C5DBFF050E0AC5DBFF080E69 -:103380000BC5DBFF070E0CC5DBFF0A0E0DC5DBFF0F -:10339000090E0EC5DBFF090EDBCFE6FF0A0EDBCF01 -:1033A000E6FF070EDBCFE6FF080EDBCFE6FF050EDC -:1033B000DBCFE6FF060EDBCFE6FF83EC0AF0006E04 -:1033C000060EE15E005058D3060E09C5DBFF050E60 -:1033D0000AC5DBFF080E0BC5DBFF070E0CC5DBFFC4 -:1033E0000A0E0DC5DBFF090E0EC5DBFF090EDBCF94 -:1033F000E6FF0A0EDBCFE6FF070EDBCFE6FF080E87 -:10340000DBCFE6FF050EDBCFE6FF060EDBCFE6FFE8 -:103410008CEC0AF0006E060EE15E00502DD3060E15 -:1034200009C5DBFF050E0AC5DBFF080E0BC5DBFF78 -:10343000070E0CC5DBFF0A0E0DC5DBFF090E0EC51E -:10344000DBFF090EDBCFE6FF0A0EDBCFE6FF070E40 -:10345000DBCFE6FF080EDBCFE6FF050EDBCFE6FF96 -:10346000060EDBCFE6FF9DEC0AF0006E060EE15E75 -:10347000005002D3060E09C5DBFF050E0AC5DBFFAF -:10348000080E0BC5DBFF070E0CC5DBFF0A0E0DC5D2 -:10349000DBFF090E0EC5DBFF0C0E0FC5DBFF0B0EAD -:1034A00010C5DBFF11C5E6FF0B0EDBCFE6FF0C0EF0 -:1034B000DBCFE6FF090EDBCFE6FF0A0EDBCFE6FF30 -:1034C000070EDBCFE6FF080EDBCFE6FF050EDBCFF6 -:1034D000E6FF060EDBCFE6FFACEC0AF0006E090E4D -:1034E000E15E0050C9D2060E09C5DBFF050E0AC514 -:1034F000DBFF080E0BC5DBFF070E0CC5DBFF0A0E5A -:103500000DC5DBFF090E0EC5DBFF0C0E0FC5DBFF83 -:103510000B0E10C5DBFF0E0E12C5DBFF0D0E13C523 -:10352000DBFF0D0EDBCFE6FF0E0EDBCFE6FF11C596 -:10353000E6FF0B0EDBCFE6FF0C0EDBCFE6FF090E3E -:10354000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FFA1 -:10355000080EDBCFE6FF050EDBCFE6FF060EDBCF66 -:10356000E6FF0BEC0CF0006E0B0EE15E005084D217 -:10357000060E0AC5DBFF050E0BC5DBFF050EDBCF14 -:10358000E6FF060EDBCFE6FF09C5E6FF85EC09F096 -:10359000E552E552E55270D2060E0AC5DBFF050E74 -:1035A0000BC5DBFF080E0CC5DBFF070E0DC5DBFFEF -:1035B0000A0E0EC5DBFF090E0FC5DBFF090EDBCFC0 -:1035C0002FF00A0EDBCF30F0ABEC24F02EC008F069 -:1035D0002FC009F030C00AF031C00BF0330E336E4B -:1035E000E20E346EC20E356E420E366E08C02EF0FC -:1035F00009C02FF00AC030F00BC031F0C5EC25F047 -:103600002EC004F02FC005F030C006F031C007F026 -:10361000CC0E336EBC0E346E8C0E356E3B0E366E99 -:1036200004C02EF005C02FF006C030F007C031F006 -:10363000C5EC25F061EC26F02DC000F02EC001F0A5 -:103640002FC002F030C003F000C0E6FF01C0E6FF6B -:1036500002C0E6FF03C0E6FF070EDBCF2FF0080E27 -:10366000DBCF30F0ABEC24F02EC014F02FC015F0FF -:1036700030C016F031C017F0330E336EE20E346EE8 -:10368000C20E356E420E366E14C02EF015C02FF0ED -:1036900016C030F017C031F0C5EC25F02EC010F088 -:1036A0002FC011F030C012F031C013F0BD0E336ED8 -:1036B000370E346E860E356E410E366E10C02EF00B -:1036C00011C02FF012C030F013C031F0C5EC25F05E -:1036D00061EC26F02DC00CF02EC00DF02FC00EF0C6 -:1036E00030C00FF00CC0E6FF0DC0E6FF0EC0E6FFD5 -:1036F0000FC0E6FF050EDBCF2FF0060EDBCF30F05C -:10370000ABEC24F02EC01CF02FC01DF030C01EF01A -:1037100031C01FF0330E336EE20E346EC20E356EC2 -:10372000420E366E1CC02EF01DC02FF01EC030F0B1 -:103730001FC031F0C5EC25F061EC26F02DC018F06B -:103740002EC019F02FC01AF030C01BF018C0E6FFD1 -:1037500019C0E6FF1AC0E6FF1BC0E6FF09C5E6FF79 -:1037600093EC08F0206E0D0EE15E205085D1060E20 -:103770000AC5DBFF050E0BC5DBFF080E0CC5DBFF22 -:10378000070E0DC5DBFF0EC5E6FF070EDBCF2FF0E2 -:10379000080EDBCF30F0ABEC24F02EC008F02FC0C9 -:1037A00009F030C00AF031C00BF0330E336EE20E78 -:1037B000346EC20E356E420E366E08C02EF009C051 -:1037C0002FF00AC030F00BC031F0C5EC25F02EC050 -:1037D00004F02FC005F030C006F031C007F0CC0E69 -:1037E000336EBC0E346E8C0E356E3B0E366E04C0DE -:1037F0002EF005C02FF006C030F007C031F0C5EC48 -:1038000025F061EC26F02DC000F02EC001F02FC095 -:1038100002F030C003F000C0E6FF01C0E6FF02C0C6 -:10382000E6FF03C0E6FF050EDBCF2FF0060EDBCF71 -:1038300030F0ABEC24F02EC014F02FC015F030C0E7 -:1038400016F031C017F0330E336EE20E346EC20E36 -:10385000356E420E366E14C02EF015C02FF016C015 -:1038600030F017C031F0C5EC25F02EC010F02FC09D -:1038700011F030C012F031C013F0BD0E336E370EB0 -:10388000346E860E356E410E366E10C02EF011C0AD -:103890002FF012C030F013C031F0C5EC25F061EC10 -:1038A00026F02DC00CF02EC00DF02FC00EF030C051 -:1038B0000FF00CC0E6FF0DC0E6FF0EC0E6FF0FC024 -:1038C000E6FF09C5E6FFF1EC08F0186E0A0EE15EAE -:1038D0001850D2D0060E0AC5DBFF050E0BC5DBFF64 -:1038E0000CC5E6FF050EDBCF2FF0060EDBCF30F068 -:1038F000ABEC24F02EC008F02FC009F030C00AF065 -:1039000031C00BF0330E336EE20E346EC20E356EE4 -:10391000420E366E08C02EF009C02FF00AC030F0FB -:103920000BC031F0C5EC25F02EC004F02FC005F01F -:1039300030C006F031C007F0BD0E336E370E346E66 -:10394000860E356E410E366E04C02EF005C02FF087 -:1039500006C030F007C031F0C5EC25F061EC26F070 -:103960002DC000F02EC001F02FC002F030C003F0D7 -:1039700000C0E6FF01C0E6FF02C0E6FF03C0E6FFAD -:1039800009C5E6FF4BEC09F00C6E060EE15E0C502B -:1039900073D009C5E6FF63EC09F0E5526DD000C5B0 -:1039A00040F50501416B0501030E426F0501436BB4 -:1039B000010EE66E2FEC0AF0E552050EF3CFDBFFA9 -:1039C000060EF4CFDBFF060EDBCF48F5050EDBCF8E -:1039D00049F5020EE66E2FEC0AF0E552050EF3CF24 -:1039E000DBFF060EF4CFDBFF080EDBCF4AF5070E38 -:1039F000DBCF4BF5400EE66E400EE66E050EE66E32 -:103A0000010EE66E010EE66E56EC23F0006E050E1A -:103A1000E15E0050F3CF49F1F4CF4AF12DD000C55B -:103A200040F50501416B0501030E426F0501436B33 -:103A300040EC0EF0000904E00501010E486F02D0D1 -:103A40000501486B400EE66E400EE66E050EE66E12 -:103A5000010EE66E010EE66E56EC23F0006E050ECA -:103A6000E15E0050F3CF49F1F4CF4AF105D0010EE9 -:103A7000E66E38EC33F0E552400EE66E000EE66E70 -:103A8000050EE66EE66A010EE66E56EC23F0006E59 -:103A9000050EE15E0050F3CF47F1F4CF48F19FD01F -:103AA000010149514A1102E1000E08D049C1E9FF64 -:103AB0004AC1EAFFEF50800B01E0010E00094DE121 -:103AC0000101010E516F0501406B01014C514C2B5E -:103AD0000501416F0501050E426F0501436B0501AC -:103AE000486BA60E006E650E016E026A00C0E6FF0E -:103AF00001C0E6FF02C0E6FF480EE66E050EE66E68 -:103B00004EEC32F0036E050EE15E0350400EE66EA1 -:103B1000400EE66E050EE66E010EE66E010EE66ED6 -:103B200056EC23F0006E050EE15E0050F3CF49F134 -:103B3000F4CF4AF1400EE66E000EE66E050EE66E1C -:103B4000E66A010EE66E56EC23F0006E050EE15EAD -:103B50000050F3CF47F1F4CF48F141D00101495172 -:103B60004A1102E1000E08D049C1E9FF4AC1EAFF4B -:103B7000EF50800B01E0010E000931E100C540F576 -:103B80000501416B0501030E426F0501010E436FF4 -:103B9000400EE66E400EE66E050EE66E010EE66E17 -:103BA000010EE66E56EC23F0006E050EE15E00504D -:103BB000F3CF49F1F4CF4AF1400EE66E000EE66E07 -:103BC000050EE66EE66A010EE66E56EC23F0006E18 -:103BD000050EE15E0050F3CF47F1F4CF48F10F0E30 -:103BE000E15C02E2E16AE552E16EE552E7CFD9FF1E -:103BF000120001015251531104E1100E526F270EB1 -:103C0000536F5207000E535B6DA207D052515311F0 -:103C10002EE18C748CB413D027D00101005102E145 -:103C20008C9422D0000502E18C8409D0020E005D44 -:103C300002E18C8419D0040E005D03E18C948C8623 -:103C40001200100E005D06E10101525153110FE107 -:103C50008C740AD0200E005D0AE10101525153110B -:103C600006E18C748CA402D08C9612008C86120013 -:103C70001200120012001200EEEF30F012001E0EC1 -:103C8000E66E010EE66E24EC23F0E552E552400E9E -:103C9000E66E000EE66E050EE66EE66A010EE66E54 -:103CA00056EC23F0006E050EE15E0050F3CF47F1B5 -:103CB000F4CF48F112006D840101080E6A6F070EFF -:103CC0006B6F6A07000E6B5B6A516B11FAE16D94C2 -:103CD0001200D9CFE6FFE1CFD9FFFD0EDBCF2FF0E9 -:103CE000FE0EDBCF30F0010E2F1801E1305033E033 -:103CF000E8682F1802E1E86830182BE0030E2F184F -:103D000001E1305024E0040E2F1801E130501DE095 -:103D1000020E2F1801E1305016E0170E2F1801E1A6 -:103D200030500FE0160E2F1801E1305008E0150E4C -:103D30002F1801E1305001E010D0A1DF0FD09EDF3D -:103D40000DD09ADF0BD096DF09D092DF07D091DF3C -:103D500005D091DF03D0000001D000D0010E00D0CB -:103D6000E552E7CFD9FF12004BD8E652D0B202D0CD -:103D7000010E15D0D0B802D0020E11D0D0B002D0B2 -:103D8000030E0DD0D0B602D0040E09D0FCAE02D086 -:103D9000050E05D0FCAC02D0060E01D0070EDF6E7A -:103DA000D088D086D084D082D080FC9EFC9CDF500E -:103DB000E552E552E7CFD9FF1200E65221D8020EB4 -:103DC000E126F350DF6E010EF4CFDBFF1200C00ED0 -:103DD000E66EE00EE66E1CEC33F0E552E5521200A2 -:103DE000DF50F36E010EDB50F46E020EE15C120048 -:103DF000DFCFE6FFE66A6AEC32F0E552E5521200E8 -:0A3E0000D9CFE6FFE1CFD9FF120091 -:063E0A00FDEC23F06A6AE2 -:103E1000686A30EC24F06D8C6E6AE0EC23F06D9CE7 -:103E2000DF6A11EC24F010E2DF50040DF3CFE9FF5C -:103E3000F4CFEAFF000EE926040EEA22EE6AEE6AEB -:103E4000EE6AEE6ADF2AEDD7160E706E68A604D011 -:103E5000030EA6EC23F0FAD70101136B186B196B54 -:103E60001A6B6D98080E0B6F040E0C6F016B006BD4 -:103E7000E552BBEF23F0FDEC23F0010100510BE113 -:103E80006D6A696A30EC24F06DB602D06D86FCD79D -:103E90000101010E006F000508E16DBA06D0686AE5 -:103EA000696A69806988020E006F6850040B07E038 -:103EB0006950040B04E0020EA6EC23F089D86DB221 -:103EC00047D06850010B14E06950010B11E09DDFF1 -:103ED0000101040E006F0401200E026F040E036F37 -:103EE000080E016F006B8C0E0013E66A6FEC24F075 -:103EF0006850100B07E06950100B04E060D8040E06 -:103F0000A6EC23F06850400B0BE06950400B08E032 -:103F100037EC24F0020EAEEC23F0060EA6EC23F0F4 -:103F20006850200B04E06950200B01E035D8685040 -:103F3000020B0AE06950020B07E037EC24F0E66858 -:103F4000E6688FEC24F06A6A040E0101005D02E26B -:103F5000A19A1FD069A61CD0DF6A040EDF5C18E2AC -:103F600068A616D06CCF20F1030EA6EC23F0780ED5 -:103F70000101201502E138D809D0000EE66EE66A8C -:103F8000200EE66E010EE66E010EE8DBDF2AE5D7B5 -:103F9000A19AE552BBEF23F070A00ED0C9EC23F03C -:103FA000EF50800808E1D5DBEF50840804E1C9EC4C -:103FB00023F08C0EEF6E7090050EA6EF23F069844F -:103FC000040EC4DB6D82E9EC23F0040EAEEF23F0A7 -:103FD000E9EC23F0030EC2DB6D92699468A403D070 -:103FE000020EB4DBFBD71200FDEC23F0FD0E010145 -:103FF00020153DE17E0E2015E8407F0B040DF3CF28 -:1040000003F1F4CF04F1000E0327040E042303C1CF -:1040100005F104C106F10575BCDBEF503C0BE8422D -:10402000E8420D0822E1B5DB66EC24F0EECF00F0AB -:10403000EFCF01F0280E001816E1040E011813E16D -:10404000A0EC24F0DF6AEDDB0EE2DF5019EC24F087 -:10405000DF50EA6A200FE96E040EEA22E552E750CB -:10406000EF6EDF2AF0D70AD807D01AD805D0FD0E98 -:104070002015040801E122D8E5527DD36ADBEF5018 -:10408000800B02E066DBEF6A01010F6B106B146BB3 -:10409000156B136B64D89DDB170E60DBE4EF21F02A -:1040A000020E0101105D02E171EF22F034D801012E -:1040B000215102E16BEF24F0216B12009EDB49DB02 -:1040C000EF50400B01E0010EDF6E01010B75080E91 -:1040D000005D09E122C46EFF6E50000802E2100E7E -:1040E00001D0040E006F100513E1A4EC24F0A6D952 -:1040F000020E01010F5D03E12CDB840E07D0DF50BF -:1041000003E127DBC80E02D024DB880EEF6E01D05E -:1041100002D8E55230D32BDB0101106B1ADBEF6ABA -:10412000040E0B19006E0CC101F0DE6E0CC1DDFF38 -:1041300019DBEF6A18AF0CD01B511C1107E005D03A -:104140001CC1FAFF01011B51F96EFADF0101189F32 -:10415000020EE15C02E2E16AE552E16E0CD3040179 -:104160002051600BE842E842E842E842E842000998 -:1041700001E0120021510C0A45E00B0A3FE00C0A55 -:1041800031E0010A22E00B0A1EE0020A1CE0030AE9 -:1041900018E0080A10E0010A0CE00F0A08E0030A20 -:1041A00001E012000101138F080E006F120064EF8E -:1041B00021F0CDEF22F00101010E116F010E126FFF -:1041C0000CD0A5EF21F003EF21F024510101116F74 -:1041D000126B020E1127010E12231381010E146FB0 -:1041E000138F12000101138F04012451EA6A020F98 -:1041F000E96E010EEA2222C4EFFF1200EADA160E7F -:10420000AEEF23F012007EDB040EE126040122054E -:1042100010E120511F0B00090CE10101138F030E67 -:104220000401215D04E10101010E1F6F02D00101B3 -:104230001F6B0401225141E120511F0B02083DE197 -:1042400024510F0B000939E00101138F040124BF31 -:1042500005D0A4DA070EE926010E04D09FDA0B0E72 -:10426000E926010ED2DA030E215D03E17BDA840E2A -:1042700023D024510F0B016A700F006E0F0E012224 -:10428000020E00C0DBFF030E01C0DBFF020EDBCF1E -:10429000E9FF030EDBCFEAFFEE90ED5224AF06D02C -:1042A00061DAEF6ADF745EDA400E06D05BDA880E00 -:1042B000EF6EDF7457DAC80EEF6E040EE15C02E2B7 -:1042C000E16AE552E16E57D2800E0401205D3CE1C7 -:1042D0000101C00E136F04012351030A1EE0010AFD -:1042E00009E0030A2FE10101AA0E116F620E126F9D -:1042F000120E22D0C3DA540EF626630EA2DA020E94 -:104300000101F76A1125F66E1251F7220900F5CF67 -:1043100014F10A00F5CF15F11200030E225D0FE231 -:10432000ADDA560EF626630E8CDA11C1F6FF12C115 -:10433000F7FF0800F5500101146F156B1200010121 -:10434000136B12000101136B120011DA0401286BC8 -:10435000296B20511F0B020A11E0030A0CE0010A2D -:1043600022E10101138F0401288101011F051BE1D6 -:104370000401288318D00101138F15D00101138F78 -:10438000040124BF05D00ADA070EE926010E04D085 -:1043900005DA0B0EE926010E38DAE4D9EF50040BEA -:1043A00002E0010E286F010113AF07D0280E116F34 -:1043B000040E126F1381020E146F020EE15C02E212 -:1043C000E16AE552E16ED7D16D98010113BF08D0C3 -:1043D00018AF02D061DA2AD07EDABBD9840E27D09A -:1043E00018BF2BD0040120AF24D0010114510401C7 -:1043F000265D010115510401275904E226C414F178 -:1044000027C415F11BD80101010E106FA1DA800E2F -:10441000EF6E216BBED9EE52080EEF6E91DAB9D96C -:10442000840EEF6E010E216F8FDA93D9C80EEF6EF6 -:104430001200010131DAC80EEF6E120098D90101A5 -:10444000080E145D000E15590DE214C1DEFF15C1F2 -:10445000DDFF0F5102E1010E03D00F0506E1020E50 -:104460000F6F03D0080EDE6EDD6A73D9EF9271D93B -:10447000EF906FD9010EDB50EF126BD9EE52DFCF08 -:10448000EFFF000EDB50145F010EDB50155B280EB2 -:104490001D6F040E1E6F13B10FD0F7D91BE011C1B1 -:1044A000F6FF12C1F7FF112B000E12230800F55082 -:1044B00096D9F3E2DB06F1D7E8D90CE011C1E9FFA8 -:1044C00012C1EAFF112B000E1223EF5088D9F4E23B -:1044D000DB06F2D7020EE15C02E2E16AE552E16E30 -:1044E0004AD145D956D9EE52EFCFDFFFDFCF00F0EA -:1044F00000500101195D000E1A5903E219C1DFFFD6 -:1045000009D0DF50006E016AE850195D196F015043 -:104510001A591A6F010EDB6ADF50F36E010EDBCF02 -:10452000F4FFF350F45C10E2010EDB5082D916C1A7 -:10453000E9FF17C1EAFF162B000E1723E552E750DB -:10454000EF6E010EDB2AE8D7000ED8801955000E59 -:104550001A550DE2F4D854D91CD9EF50400B03E1A1 -:10456000EAD9C80E02D0E7D9880EEF6E0FD0F0D985 -:10457000840EEF6E1B511C1107E005D01CC1FAFF21 -:1045800001011B51F96EFADF0101189F020EE15C77 -:1045900002E2E16AE552E16EEED00101138F10D91B -:1045A000010EE66EE66AE66A020EE66E010EAFD90D -:1045B00022C401F10401225104E10101100E006F37 -:1045C00012000101200E006F04D9150EAEEF23F08A -:1045D000CED8000EDE6E040EDD6EE8D8040DF3506A -:1045E000006E016A020E0F0B05E0D8900132003216 -:1045F000E806FBE1D89000360136D8900036013647 -:10460000D9CFE9FFDACFEAFF0050EE260150ED22C4 -:10461000A9D8EF9EFD0EDB5002E16AD901D06DD919 -:10462000EA22DECFEEFFDDCFEDFF9CD8EF9C9AD8DB -:10463000040EE926000EEA22EF8C020EE15C02E293 -:10464000E16AE552E16E97D092D8FE0EDB50016A26 -:10465000700F006E0F0EDFD885D8FD0EDBCFEFFF99 -:10466000DBA402D0E66AF5D8FD0EDBA203D0010E72 -:10467000E66EEFD8020EE15C02E2E16AE552E16E1D -:104680007AD075D8FE0EDB5005E125D962D8840EAC -:10469000EF6E05D08BD80CD989D8010F09D9020E3D -:1046A000E15C02E2E16AE552E16E65D060D8FD0EA0 -:1046B000DB5002E022D901D01BD9A7D853D806D9A4 -:1046C000FB0EDBCFEEFFFC0EDBCFEDFF4BD8EE5247 -:1046D000FA0EDBCFEFFF400E45D8E850EF16880EFC -:1046E00041D8E850EF12FD0EDB5002E006D901D0B0 -:1046F000FFD8EA22EF74DECF00F0DDCF01F000C07A -:10470000F3FF01C0F4FF020EE15C02E2E16AE55250 -:10471000E16E31D0F7D8010EF36EFC0EDB5004E0F1 -:10472000D890F336E806FCE1F31C006EFD0EDBCFFB -:10473000E9FFFE0EDBCFEAFF0050EF161CD0FBD8DE -:10474000EE52080EEF6EF7D866EF24F0E66E6FEFCC -:1047500024F00BC1E9FF0CC1EAFF1200E66EE66A25 -:104760008FEF24F0DECFE9FFDDCFEAFF1200CAD8D9 -:10477000020EE1261200E552E7CFD9FF1200D6D88B -:104780009BEF24F0FE0EEA6ADB34FE0BEA36E96E9C -:10479000120003C1E9FF04C1EAFF120024510F0B0C -:1047A000E96EEA6AD890E936EA361200FD0EDB506F -:1047B000E824026EFE0EDB50040DF35002241200BA -:1047C000000EE66EE66AE66A710EE66E0F0E87EF81 -:1047D00024F0000EE66EE66AE66EE66A1200E66E09 -:1047E0001DC1E9FF1EC1EAFF1D2B000E1E23E5526D -:1047F000E750EF6EDF06010E120084D8E652120079 -:10480000280EEE6E040EED6E1200EA22EECFDEFFF1 -:10481000EDCFDDFF1200012200C0DEFF01C0DDFF91 -:104820001200DF50006E016A080E005C000E015895 -:104830001200EA6A280FE96E040EEA22EF50E66ED3 -:104840001200F7220900F5CF11F10A00F5CF12F19D -:104850001200FE0EDBCFE6FFBBDEE552E552120092 -:10486000160E6F6E9F0E6B6E7B0E696E1200010E40 -:10487000E66EE66A000EE66EE66A12002251F66EF9 -:10488000F76AD890F636F7361200D9CFE9FFDACFBB -:10489000EAFFEE50ED101200020E106F5ADFEE52DA -:1048A000EF6A57DFC80EEF6E4ADFAADF9BEF24F0F6 -:1048B000040DF3CF00F0F4CF01F0000E0026040E3B -:1048C000AADF840E4FDFE850EF121200020EE92635 -:1048D000000EEA2212003CD88C0EEF6E1200680E19 -:1048E000E66E0F0EE66E16DFE552E552E552120057 -:1048F00049DF070EE926010E120044DF0B0EE92600 -:10490000010E1200D9CFE6FFE1CFD9FF1200E66E0B -:1049100034EC32F0006E050EE15E0050120069ECDE -:104920001EF0006E060EE15E00501200200EEE6ECC -:10493000040EED6E120005C1E9FF06C1EAFF120088 -:1049400028DFC4DF96EF24F004DFC0DF00EF24F09F -:06495000F6DEBFEF23F0CC -:0A495600389E08D0389E30AE05D020 -:104960002F6C301EE86A3022388E30C02AF02FC0FB -:1049700029F03C6A3B6A8E0E2B6E2C6A12EF27F0F0 -:10498000389E0CD0389E30AE09D02D6C2E1E2F1EB6 -:10499000301EE86A2E222F223022388E30C02AF0B4 -:1049A0002FC029F02EC03CF02DC03BF09E0E2B6E88 -:1049B0002C6A12EF27F0367E386A4EEC27F066EC50 -:1049C00027F038B6F6EF26F038A20AD038AA03D07E -:1049D00038BEF6EF26F038A402EF27F0FFEF26F0FE -:1049E00038AA05D038AC02EF27F0FFEF26F038A048 -:1049F0000AD038A808D038BE04D038A402D00BEFB3 -:104A000027F00FEF27F03B6A2C6A3650315C3A6E84 -:104A100010E32EC03CF02FC029F030C02AF031C086 -:104A200039F033C02EF034C02FF035C030F0383AB2 -:104A300009D033C03CF034C029F035C02AF036C06C -:104A400039F03A6C389E38BC388E39C02BF038B00B -:104A50003EEF27F01A0E3A603EEF27F02B6A316ADC -:104A600038A408D02E6C2F1E301E311EE86A2F226B -:104A70003022312238AC08D03C6C291E2A1E2B1E55 -:104A8000E86A29222A222B222D6A3A5207E0313481 -:104A900030322F322E322D323A2EF9D72E503C267C -:104AA0002F50292230502A2231502B222DC03BF08A -:104AB000389E2BAE0BD03B6C3C1E291E2A1E2B1E93 -:104AC000E86A3C2229222A222B22388E2BA006D0EB -:104AD000D8802A3229323C323B32392A39C02BF075 -:104AE00012EF27F0386A4EEC27F066EC27F038B664 -:104AF000F6EF26F038A205D038BAF6EF26F0FDEF33 -:104B000026F038BA09EF27F038A005D038B8F6EF0C -:104B100026F009EF27F038B8FDEF26F02C6A7F0E5B -:104B200031242B6EE86A2C2236502B5EE86A2C5A10 -:104B30001A0E396E316A3B6A3C6A296A2A6A335016 -:104B40002E5E34502F5A3550305A000E315A09E734 -:104B500033502E2634502F2235503022000E312271 -:104B600001D03B8AD8902E362F3630363136D89049 -:104B70003B363C3629362A36392EE1D730502F10B5 -:104B80002E10D8A43B8A12EF27F0386A4EEC27F09B -:104B900066EC27F038B6F6EF26F038A205D038B824 -:104BA000F6EF26F0FDEF26F038AA05D038B0F6EF84 -:104BB00026F0FDEF26F038B002D038A802D009EF79 -:104BC00027F02C6A365031242B6EE86A2C227E0E98 -:104BD0002B5EE86A2C5A3B6A3C6A296A2A6A35507D -:104BE0003002F4CF2AF0F3CF29F034503002F350E2 -:104BF0003C26F4502922000E2A2235502F02F35071 -:104C00003C26F4502922000E2A2233503002F35061 -:104C10003B26F4503C22000E29222A2234502F0237 -:104C2000F3503B26F4503C22000E29222A22355014 -:104C30002E02F3503B26F4503C22000E29222A2259 -:104C400033502F02F4503B26000E3C2229222A2208 -:104C500034502E02F4503B26000E3C2229222A22F8 -:104C600012EF27F0386A4EEC27F038B63CEF26F00A -:104C700038A20ED038B405D07F0E306EFF0E2F6EE6 -:104C80001FD0800E306E2F6A1BD0306A2F6A18D06A -:104C900038B0FBD78F0E3160EDD77E0E3164F5D77B -:104CA0008E0E315C05E0D89030322F32312AF8D7A1 -:104CB00038A406D02F6C301EE86A302230AEE5D71B -:104CC0001200386A4EEC27F038B66BEF26F038A2A7 -:104CD0000FD038B407D07F0E306EFF0E2F6E2E6EC1 -:104CE0002D6E25D0800E306E01D0306A000EF6D7C2 -:104CF00038B0FBD72D6A9F0E3160EBD77E0E316442 -:104D0000F4D79E0E315C07E0D89030322F322E322D -:104D10002D32312AF6D738A40AD02D6C2E1E2F1E24 -:104D2000301EE86A2E222F22302230AEDED712004B -:104D3000A1EC26F038B6000C38B0000C38A4000CFA -:104D4000010C386A4EEC27F066EC27F038B61200FA -:104D500038AE08D038A004D038A802D0388012006D -:104D6000389012003650315C0BE13550305C08E170 -:104D700034502F5C05E133502E5C02E13880120084 -:104D8000D8A002D0388E10D0315036C031F0366EF7 -:104D9000305035C030F0356E2F5034C02FF0346EA7 -:104DA0002E5033C02EF0336E3650315C10E0FF0FC2 -:104DB00009E0389038B403D038AE3884120038AEE9 -:104DC00038941200362AD890353234323332335088 -:104DD0002E5E34502F5A3550305A30BEEAD7D89014 -:104DE0002E362F363036312EF8D7C8D77F0E316E9B -:104DF000FF0E306E2F6E2E6E12007F0E38BEFF0E2D -:104E0000316E02D07F0E316E800E306E2F6A2E6AA8 -:104E1000F3D738AE04D0800E316E306AF7D7316ADE -:104E2000306AF4D72A5029103C103B10F8E02CBE11 -:104E3000F0D72ABE0CD02B502C10EBE0D8903B368C -:104E40003C3629362A362B06D8A02C06F2D72C5011 -:104E5000D4E12B28D2E03BAE11D07F0E3B1402E10F -:104E60003CA00CD03C2AE86A29222A2207E3D880F9 -:104E70002A3229323C322B2A2B28BFE02B50C9E0A2 -:104E80003CC02EF029C02FF02A34306E2B30316E0A -:104E90003032319E38BE318EFCEF26F0303631365E -:104EA00002E33884387E06E13880316A306A2F6A3E -:104EB0002E6A1200312803E0D88030321200D890D8 -:104EC000303202E13882120038861200353636362A -:104ED00002E3388C387E06E13888366A356A346AEF -:104EE000336A1200362803E0D88035321200D89099 -:104EF0003532EAE1388A1200A1EC26F038B6000C0F -:104F000038B0000C38B4000C010C376A35AE8EEFA7 -:104F100027F0346C351EE86A3522371E30AE96EF26 -:104F200027F02F6C301EE86A3022371E82EC33F0F7 -:104F300030BEA6EF27F037AE000C2F6C301EE86AAB -:104F400030222B6C2C1EE86A2C22000C37BE9DEF01 -:064F500027F03888FF0C79 -:0A4F5600D9CFE6FFDACFE6FFE1CF86 -:104F6000D9FFE2CFDAFF1D0EE12402E3E168E65249 -:104F7000E16E67DAFA0EDBCFEEFFFB0EDBCFEEFF62 -:104F8000FC0EDBCFEEFFFD0EDBCFEEFFD950040FA2 -:104F9000E66E000EDA20E66E0BDAD3EC2FF0006E30 -:104FA000060EE15C02E2E16AE552E16E0050E76E56 -:104FB0000B0EE7CFDBFFDB50800807E10A0EDB6A50 -:104FC000DE68DE68DE687F0E13D00B0EDB0405E1C1 -:104FD000DE6ADE6ADE6ADD6AA6D10B0EDB500408EB -:104FE00009E1DB0EDE6E0F0EDE6EC90EDE6E3F0EC9 -:104FF000DD6E99D1DDD91EDA2DC0DEFF2EC0DEFFB9 -:105000002FC0DEFF30C0DDFFDD52DD52DBD90DDA0F -:105010003F0E20DA23E12E6A2F6A800E306E3F0E9B -:10502000316EDECF33F0DECF34F0DECF35F0DDCFC2 -:1050300036F0DD52DD5272EC25F02EC0DFFF010E9E -:105040002FC0DBFF020E30C0DBFF030E31C0DBFFE1 -:10505000020EF36E0C0EF3CFDBFF02D00C0EDB6AF8 -:10506000B1D9A30E336E300E346E890E356E3E0EFE -:10507000F1D96CE1AF0E2E6E670E2F6E3B0E306EC7 -:105080003F0E316EB2D92EC008F02FC009F030C0EB -:105090000AF031C00BF0C9D93F0E366EDBEC24F0BC -:1050A0002EC004F02FC005F030C006F031C007F06C -:1050B000C8D9EECF0CF0EECF0DF0EECF0EF0EFCF63 -:1050C0000FF00CC033F00DC034F00EC035F00FC03F -:1050D00036F0DCEC24F080D9D70E146EB30E156ECA -:1050E000DD0E166E3F0E176EACD9EECF18F0EECF78 -:1050F00019F0EECF1AF0EFCF1BF018C033F019C043 -:1051000034F01AC035F01BC036F014C02EF015C0B4 -:105110002FF016C030F0316EDCEC24F02EC010F011 -:105120002FC011F030C012F031C013F02EC033F098 -:105130002FC034F030C035F031C036F035D972ECC4 -:1051400025F05FD9DD52DD520C0EDB2A31D972D940 -:105150002DC000F02EC001F02FC002F030C003F0CF -:1051600064D9390E366E2DC02EF07AD998EC26F01F -:10517000010A01E1B5D04ED938D90D0E2EC0DBFFA2 -:105180000E0E2FC0DBFF0F0E30C0DBFF100E31C044 -:10519000DBFF910E2E6E860E2F6E500E306EBD0E02 -:1051A000316E0D0EDBCF33F00E0EDBCF34F00F0E71 -:1051B000DBCF35F0100E4AD90FD9F60E336E100E34 -:1051C000346EF10E356EBE0E366EDCEC24F0110E30 -:1051D0002EC0DBFF120E2FC0DBFF130E30C0DBFF33 -:1051E000140E31C0DBFF0D0EDBCF00F00E0EDBCF57 -:1051F00001F00F0EDBCF02F0100EDBCF03F0D30E69 -:10520000336ECC0E346EB40E356E3F0E366ECCD887 -:10521000DCEC24F0150E2EC0DBFF160E2FC0DBFFDA -:10522000170E30C0DBFF180E31C0DBFF0D0EDBCFD9 -:105230002EF00E0EDBCF2FF00F0EDBCF30F0100E66 -:10524000DBCF31F0110EDBCF33F0120EDBCF34F0B9 -:10525000130EDBCF35F0140EF9D8150EDBCF33F07B -:10526000160EDBCF34F0170EDBCF35F0180EDBCF88 -:1052700036F072EC25F0B0D8190E2EC0DBFF1A0EF6 -:105280002FC0DBFF1B0E30C0DBFF1C0E31C0DBFF6D -:10529000C1D8190EDBCF33F01A0EDBCF34F01B0E62 -:1052A000DBCF35F01C0ED2D897D8CBD8EECF2EF06E -:1052B000EECF2FF0EECF30F0EFCF31F000C033F073 -:1052C00001C034F002C035F003C036F0DCEC24F04D -:1052D00031C0EDFF30C0EDFF2FC0EDFF2EC0EFFF5E -:1052E0000C0EDB0409E1920E006E0A0E016E060E32 -:1052F0003FD8DCEC24F016D00C0EDB50020806E19F -:10530000DB0E006E0F0E016EC90E09D00C0EDB50C5 -:1053100003080BE1920E006E0A0E016E860E28D86D -:10532000DBEC24F06ED8DD52DD520A0EDB500AE0D1 -:1053300049D87BD8BF0E366E37D8C5EC25F061D87A -:10534000DD52DD52DECF2DF0DECF2EF0DECF2FF09E -:10535000DDCF30F0DD52DD521D0EE15C02E2E16A8C -:10536000E552E16EE552E5CFDAFFE7CFD9FF120053 -:10537000026E3F0E036E65D8EECF04F0EECF05F05F -:10538000EECF06F0EFCF07F004C033F005C034F0E5 -:1053900006C035F007C036F000C02EF001C02FF077 -:1053A00002C030F0316E120000C02EF030EF2AF053 -:1053B00048D8EECFE6FFEECFE6FFEECFE6FFEFCF29 -:1053C000E6FF12003ED8EECF00F0EECF01F0EECFB8 -:1053D00002F0EFCF03F012002EC000F02FC001F05A -:1053E00030C002F031C003F01200000EDFCF33F006 -:1053F000010EDBCF34F0020EDBCF35F0030E26EFCB -:105400002AF02EC0DEFF2FC0DEFF30C0DEFF31C02D -:10541000DDFF1200DECF2EF0DECF2FF0DECF30F03A -:10542000DDCF31F0DD52DD521200336A346A800E76 -:10543000356E1200A0EC32F0E552E552E552E5522D -:105440001200D9CFE9FFDACFEAFF1200DBCF36F046 -:10545000C5EF25F0366EA8DF7CEC27F0010A1200BC -:0E54600001C02FF002C030F003C031F0120086 -:02546E00D9CF94 -:10547000E6FFDACFE6FFE1CFD9FFE2CFDAFF240E75 -:10548000E12402E3E168E652E16ED950FA0FE96ED9 -:10549000FF0EDA20EA6E020EEECFDBFF030EEECF38 -:1054A000DBFF040EEECFDBFF050EEECFDBFFE8D90E -:1054B000F2D9D3EC2FF0006E060EE15C02E2E16A55 -:1054C000E552E16E0050E76E0D0EE7CFDBFFDB50DB -:1054D000800815E0A0D9336A346A356A366A00C09C -:1054E0002EF001C02FF002C030F003C031F098EC74 -:1054F00026F0010A10E1210E0101466F476B020EF2 -:10550000DB68030EDB68040EDB687F0EF36E050EAE -:10551000F3CFDBFF66D10D0EDB50050B01E061D14F -:105520000A0EDBCF00F00B0EDBCF01F0830E00265E -:10553000FF0E012200C0DEFF01C0DDFFD950060FC3 -:1055400065D976D9DF50010B0FE0DF06010E01E2CD -:10555000DB06D950180F5AD9D890EF36010EEB362A -:10556000020EEB36030EEB36D9CFE9FFDACFEAFFB6 -:10557000020E346E356AEECF2FF0EDCF30F085ECB1 -:1055800027F02FC0EEFF30C0EDFF140EDB6A150EC2 -:10559000DB6A160EDB6A170EDB6A1C0EDB6A1D0E59 -:1055A000DB6A1E0EDB6A010EF36E1F0EF3CFDBFF0C -:1055B000010EF36E0E0EF3CFDBFF0F0EDB6A0E0E45 -:1055C000DBCF00F00F0EDBCF01F0D890015004E6E6 -:1055D0001A0E005C000E015801E398D0180EDBCFC4 -:1055E00000F0190EDBCF01F01A0EDBCF02F01B0E1C -:1055F000DBCF03F0010E1F0B07E0D8900036013619 -:1056000002360336E806F9E1180E00C0DBFF190E7A -:1056100001C0DBFF1A0E02C0DBFF1B0E03C0DBFF65 -:10562000140EDBCF08F0150EDBCF09F0160EDBCF22 -:105630000AF0170EDBCF0BF0010E1F0B07E0D8901E -:10564000083609360A360B36E806F9E1D9501C0F40 -:10565000DDD80850EE24046E0950EE20056E0A5085 -:10566000EE20066E0B50EE20076ED950180FCED8E4 -:105670000450EE5C006E0550EE58016E0650EE5878 -:10568000026E0750EE58036E200E00C0DBFF210EA5 -:1056900001C0DBFF220E02C0DBFF230E03C0DBFFD5 -:1056A000200EDBCF2EF0210EDBCF2FF0220EDBCF32 -:1056B00030F0230EDBCF31F03134000E311809E623 -:1056C000D880000E2E54000E2F54000E3054000EC1 -:1056D000315411E2D950200F99D8AAD8D8D81C0E2D -:1056E000DB50EE121D0EDB50EE121E0EDB50EE12E2 -:1056F0001F0EDB50EE12D9501C0F88D8AFD80E0EFB -:10570000DB2A0F0E01E25BD7DB2A59D7C9D8100E6E -:1057100000C0DBFF110E01C0DBFF180EDBCF2FF046 -:10572000190EDBCF30F0120E2FC0DBFF130E30C08E -:10573000DBFFADD893D8D950100F68D8EE50ED10DC -:1057400012E0D950120F62D8EE50ED1006E1A8D841 -:10575000005001100210031006E099D8EE2A000E46 -:10576000EE22EE22EE220C0EDB6A91D8060EEECF70 -:10577000DBFF070EEECFDBFF080EEECFDBFF090EDF -:10578000EECFDBFF7E0EF36E0A0EF3CFDBFF0B0EC8 -:10579000DB6AD950020FE66E000EDA20E66E70D892 -:1057A00061EC30F0E552E552E552E552DECFE6FF1E -:1057B000DDCFE6FF70D837EC2FF0006E060EE15C0F -:1057C00002E2E16AE552E16E0050020E2DC0DBFFFD -:1057D000030E2EC0DBFF040E2FC0DBFF050E30C012 -:1057E000DBFF19D800C02DF001C02EF002C02FF051 -:1057F00003C030F0240EE15C02E... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-14 11:29:09
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 58d387423da6e5090bd789065925eac1bf937c5c (commit) from 6795c8d0a9e01b24e1762dd433acc9c48591d393 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 58d387423da6e5090bd789065925eac1bf937c5c Author: Olivier BICHLER <oli...@gm...> Date: Sun Mar 14 12:28:33 2010 +0100 Quelques modifs : - Changement des valeurs des constantes MOTOR_* pour une implémentation plus simple - Ajout d'une nouvelle erreur, ERR_INVALID_AXIS, lorsque l'on essaie de lire les deux LM simultanément - Correction d'un bug dans newVelocity() (il faut réinitialiser la variable arg) - Les commandes LCD ne renvoient plus de réponse vide - Ajout d'une nouvelle fonction configAX12() pour initialiser automatiquement les nouveaux AX12 ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/common/PcInterface.h b/PC_Mainboard/common/PcInterface.h index cb0e224..a24b00c 100644 --- a/PC_Mainboard/common/PcInterface.h +++ b/PC_Mainboard/common/PcInterface.h @@ -94,6 +94,7 @@ typedef struct _UP { #define ERR_ADJD_S371_NOT_RESPONDING 9 #define ERR_LM_COMMAND_ERROR 10 #define ERR_LM_POSITION_ERROR 11 +#define ERR_INVALID_AXIS 12 // CMD_SET arguments #define SET_PORTS_CONFIG_INPUTS 0x00 ///< Dnir les entr du PIC @@ -123,17 +124,18 @@ typedef struct _UP { #define RESET_SOURCE_MCLR 0x07 ///< Master Clear Reset // CMD_AX12 -#define AX12_PING 0x01 -#define AX12_READ 0x02 -#define AX12_WRITE 0x03 -#define AX12_GOTO 0x04 -#define AX12_GET_POS 0x05 -#define AX12_GET_SPEED 0x06 -#define AX12_GET_LOAD 0x07 -#define AX12_GET_STATS 0x08 -#define AX12_WRITE_REG 0x09 -#define AX12_ACTION 0x10 // <-- ou la loose, bibich sait pas compter en hexa -- dim -#define AX12_RESET 0x11 +#define AX12_PING 1 +#define AX12_READ 2 +#define AX12_WRITE 3 +#define AX12_GOTO 4 +#define AX12_GET_POS 5 +#define AX12_GET_SPEED 6 +#define AX12_GET_LOAD 7 +#define AX12_GET_STATS 8 +#define AX12_WRITE_REG 9 +#define AX12_ACTION 10 +#define AX12_RESET 11 +#define AX12_CONFIG 12 #define AX12_VALUE8 0x00 #define AX12_VALUE16 0x01 @@ -182,9 +184,9 @@ typedef struct _UP { #define MOTOR_DISABLE 2 #define MOTOR_MOVE 3 -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt // XXX omplr #define READ_VERSION 0x00 diff --git a/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h b/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h index cb0e224..a24b00c 100644 --- a/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h +++ b/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h @@ -94,6 +94,7 @@ typedef struct _UP { #define ERR_ADJD_S371_NOT_RESPONDING 9 #define ERR_LM_COMMAND_ERROR 10 #define ERR_LM_POSITION_ERROR 11 +#define ERR_INVALID_AXIS 12 // CMD_SET arguments #define SET_PORTS_CONFIG_INPUTS 0x00 ///< Dnir les entr du PIC @@ -123,17 +124,18 @@ typedef struct _UP { #define RESET_SOURCE_MCLR 0x07 ///< Master Clear Reset // CMD_AX12 -#define AX12_PING 0x01 -#define AX12_READ 0x02 -#define AX12_WRITE 0x03 -#define AX12_GOTO 0x04 -#define AX12_GET_POS 0x05 -#define AX12_GET_SPEED 0x06 -#define AX12_GET_LOAD 0x07 -#define AX12_GET_STATS 0x08 -#define AX12_WRITE_REG 0x09 -#define AX12_ACTION 0x10 // <-- ou la loose, bibich sait pas compter en hexa -- dim -#define AX12_RESET 0x11 +#define AX12_PING 1 +#define AX12_READ 2 +#define AX12_WRITE 3 +#define AX12_GOTO 4 +#define AX12_GET_POS 5 +#define AX12_GET_SPEED 6 +#define AX12_GET_LOAD 7 +#define AX12_GET_STATS 8 +#define AX12_WRITE_REG 9 +#define AX12_ACTION 10 +#define AX12_RESET 11 +#define AX12_CONFIG 12 #define AX12_VALUE8 0x00 #define AX12_VALUE16 0x01 @@ -182,9 +184,9 @@ typedef struct _UP { #define MOTOR_DISABLE 2 #define MOTOR_MOVE 3 -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt // XXX omplr #define READ_VERSION 0x00 diff --git a/PC_Mainboard/python/dev/User_Interface/PcInterface.h b/PC_Mainboard/python/dev/User_Interface/PcInterface.h index cb0e224..a24b00c 100644 --- a/PC_Mainboard/python/dev/User_Interface/PcInterface.h +++ b/PC_Mainboard/python/dev/User_Interface/PcInterface.h @@ -94,6 +94,7 @@ typedef struct _UP { #define ERR_ADJD_S371_NOT_RESPONDING 9 #define ERR_LM_COMMAND_ERROR 10 #define ERR_LM_POSITION_ERROR 11 +#define ERR_INVALID_AXIS 12 // CMD_SET arguments #define SET_PORTS_CONFIG_INPUTS 0x00 ///< Dnir les entr du PIC @@ -123,17 +124,18 @@ typedef struct _UP { #define RESET_SOURCE_MCLR 0x07 ///< Master Clear Reset // CMD_AX12 -#define AX12_PING 0x01 -#define AX12_READ 0x02 -#define AX12_WRITE 0x03 -#define AX12_GOTO 0x04 -#define AX12_GET_POS 0x05 -#define AX12_GET_SPEED 0x06 -#define AX12_GET_LOAD 0x07 -#define AX12_GET_STATS 0x08 -#define AX12_WRITE_REG 0x09 -#define AX12_ACTION 0x10 // <-- ou la loose, bibich sait pas compter en hexa -- dim -#define AX12_RESET 0x11 +#define AX12_PING 1 +#define AX12_READ 2 +#define AX12_WRITE 3 +#define AX12_GOTO 4 +#define AX12_GET_POS 5 +#define AX12_GET_SPEED 6 +#define AX12_GET_LOAD 7 +#define AX12_GET_STATS 8 +#define AX12_WRITE_REG 9 +#define AX12_ACTION 10 +#define AX12_RESET 11 +#define AX12_CONFIG 12 #define AX12_VALUE8 0x00 #define AX12_VALUE16 0x01 @@ -182,9 +184,9 @@ typedef struct _UP { #define MOTOR_DISABLE 2 #define MOTOR_MOVE 3 -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt // XXX omplr #define READ_VERSION 0x00 diff --git a/USB_Dev_Board/Firmware/PcInterface.h b/USB_Dev_Board/Firmware/PcInterface.h index cb0e224..a24b00c 100644 --- a/USB_Dev_Board/Firmware/PcInterface.h +++ b/USB_Dev_Board/Firmware/PcInterface.h @@ -94,6 +94,7 @@ typedef struct _UP { #define ERR_ADJD_S371_NOT_RESPONDING 9 #define ERR_LM_COMMAND_ERROR 10 #define ERR_LM_POSITION_ERROR 11 +#define ERR_INVALID_AXIS 12 // CMD_SET arguments #define SET_PORTS_CONFIG_INPUTS 0x00 ///< Dnir les entr du PIC @@ -123,17 +124,18 @@ typedef struct _UP { #define RESET_SOURCE_MCLR 0x07 ///< Master Clear Reset // CMD_AX12 -#define AX12_PING 0x01 -#define AX12_READ 0x02 -#define AX12_WRITE 0x03 -#define AX12_GOTO 0x04 -#define AX12_GET_POS 0x05 -#define AX12_GET_SPEED 0x06 -#define AX12_GET_LOAD 0x07 -#define AX12_GET_STATS 0x08 -#define AX12_WRITE_REG 0x09 -#define AX12_ACTION 0x10 // <-- ou la loose, bibich sait pas compter en hexa -- dim -#define AX12_RESET 0x11 +#define AX12_PING 1 +#define AX12_READ 2 +#define AX12_WRITE 3 +#define AX12_GOTO 4 +#define AX12_GET_POS 5 +#define AX12_GET_SPEED 6 +#define AX12_GET_LOAD 7 +#define AX12_GET_STATS 8 +#define AX12_WRITE_REG 9 +#define AX12_ACTION 10 +#define AX12_RESET 11 +#define AX12_CONFIG 12 #define AX12_VALUE8 0x00 #define AX12_VALUE16 0x01 @@ -182,9 +184,9 @@ typedef struct _UP { #define MOTOR_DISABLE 2 #define MOTOR_MOVE 3 -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt // XXX omplr #define READ_VERSION 0x00 diff --git a/USB_Module/Battery_Monitoring/Firmware/PcInterface.h b/USB_Module/Battery_Monitoring/Firmware/PcInterface.h index cb0e224..a24b00c 100644 --- a/USB_Module/Battery_Monitoring/Firmware/PcInterface.h +++ b/USB_Module/Battery_Monitoring/Firmware/PcInterface.h @@ -94,6 +94,7 @@ typedef struct _UP { #define ERR_ADJD_S371_NOT_RESPONDING 9 #define ERR_LM_COMMAND_ERROR 10 #define ERR_LM_POSITION_ERROR 11 +#define ERR_INVALID_AXIS 12 // CMD_SET arguments #define SET_PORTS_CONFIG_INPUTS 0x00 ///< Dnir les entr du PIC @@ -123,17 +124,18 @@ typedef struct _UP { #define RESET_SOURCE_MCLR 0x07 ///< Master Clear Reset // CMD_AX12 -#define AX12_PING 0x01 -#define AX12_READ 0x02 -#define AX12_WRITE 0x03 -#define AX12_GOTO 0x04 -#define AX12_GET_POS 0x05 -#define AX12_GET_SPEED 0x06 -#define AX12_GET_LOAD 0x07 -#define AX12_GET_STATS 0x08 -#define AX12_WRITE_REG 0x09 -#define AX12_ACTION 0x10 // <-- ou la loose, bibich sait pas compter en hexa -- dim -#define AX12_RESET 0x11 +#define AX12_PING 1 +#define AX12_READ 2 +#define AX12_WRITE 3 +#define AX12_GOTO 4 +#define AX12_GET_POS 5 +#define AX12_GET_SPEED 6 +#define AX12_GET_LOAD 7 +#define AX12_GET_STATS 8 +#define AX12_WRITE_REG 9 +#define AX12_ACTION 10 +#define AX12_RESET 11 +#define AX12_CONFIG 12 #define AX12_VALUE8 0x00 #define AX12_VALUE16 0x01 @@ -182,9 +184,9 @@ typedef struct _UP { #define MOTOR_DISABLE 2 #define MOTOR_MOVE 3 -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt // XXX omplr #define READ_VERSION 0x00 diff --git a/USB_Module/Motor_Controller/Firmware/PcInterface.h b/USB_Module/Motor_Controller/Firmware/PcInterface.h index cb0e224..a24b00c 100644 --- a/USB_Module/Motor_Controller/Firmware/PcInterface.h +++ b/USB_Module/Motor_Controller/Firmware/PcInterface.h @@ -94,6 +94,7 @@ typedef struct _UP { #define ERR_ADJD_S371_NOT_RESPONDING 9 #define ERR_LM_COMMAND_ERROR 10 #define ERR_LM_POSITION_ERROR 11 +#define ERR_INVALID_AXIS 12 // CMD_SET arguments #define SET_PORTS_CONFIG_INPUTS 0x00 ///< Dnir les entr du PIC @@ -123,17 +124,18 @@ typedef struct _UP { #define RESET_SOURCE_MCLR 0x07 ///< Master Clear Reset // CMD_AX12 -#define AX12_PING 0x01 -#define AX12_READ 0x02 -#define AX12_WRITE 0x03 -#define AX12_GOTO 0x04 -#define AX12_GET_POS 0x05 -#define AX12_GET_SPEED 0x06 -#define AX12_GET_LOAD 0x07 -#define AX12_GET_STATS 0x08 -#define AX12_WRITE_REG 0x09 -#define AX12_ACTION 0x10 // <-- ou la loose, bibich sait pas compter en hexa -- dim -#define AX12_RESET 0x11 +#define AX12_PING 1 +#define AX12_READ 2 +#define AX12_WRITE 3 +#define AX12_GOTO 4 +#define AX12_GET_POS 5 +#define AX12_GET_SPEED 6 +#define AX12_GET_LOAD 7 +#define AX12_GET_STATS 8 +#define AX12_WRITE_REG 9 +#define AX12_ACTION 10 +#define AX12_RESET 11 +#define AX12_CONFIG 12 #define AX12_VALUE8 0x00 #define AX12_VALUE16 0x01 @@ -182,9 +184,9 @@ typedef struct _UP { #define MOTOR_DISABLE 2 #define MOTOR_MOVE 3 -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt // XXX omplr #define READ_VERSION 0x00 diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index 800bf09..98b3147 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -21,6 +21,7 @@ void checkLM629Interrupt(void) { // Toutes les interruptions non masqu doivent e traitici dans le cas de la mode LM_INTERRUPT. BYTE statusRight = readStatus(MOTOR_RIGHT); BYTE statusLeft = readStatus(MOTOR_LEFT); + char axis = 0; // Bit 1: Command-Error Interrupt if ((statusRight & LM_COMMAND_ERROR) || (statusLeft & LM_COMMAND_ERROR)) { @@ -45,18 +46,17 @@ void checkLM629Interrupt(void) { } // Bit 6: Breakpoint Interrupt - if (statusRight & LM_BREAKPOINT) { - if (trajLoaded) - start(MOTOR_RIGHT); - - resetInterrupt(MOTOR_RIGHT, LM_BREAKPOINT); - } + if (statusRight & LM_BREAKPOINT) + axis|= MOTOR_RIGHT; - if (statusLeft & LM_BREAKPOINT) { + if (statusLeft & LM_BREAKPOINT) + axis|= MOTOR_LEFT; + + if (axis > 0) { if (trajLoaded) - start(MOTOR_LEFT); + start(axis); - resetInterrupt(MOTOR_LEFT, LM_BREAKPOINT); + resetInterrupt(axis, LM_BREAKPOINT); } } @@ -99,7 +99,7 @@ void waitBusyLM(char axis) { LM_PS = PS_COMMAND; // attendre au moins 30 ns avant LM_READ = 0 // La durd'attente ne devrait pas excr 100 us - if (axis == MOTOR_RIGHT || axis == MOTOR_BOTH) { + if (axis & MOTOR_RIGHT) { LM_CS1 = 0; LM_CS2 = 1; // attendre au moins 30 ns avant LM_READ = 0 Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) @@ -117,7 +117,7 @@ void waitBusyLM(char axis) { } // La durd'attente ne devrait pas excr 100 us - if (axis == MOTOR_LEFT || axis == MOTOR_BOTH) { + if (axis & MOTOR_LEFT) { LM_CS1 = 1; LM_CS2 = 0; // attendre au moins 30 ns avant LM_READ = 0 Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) @@ -153,18 +153,8 @@ void writeCommand(char axis, BYTE command) { waitBusyLM(axis); dataBusDirection(DATA_OUT); - if (axis == MOTOR_RIGHT) { - LM_CS1 = 0; - LM_CS2 = 1; - } - else if (axis == MOTOR_LEFT) { - LM_CS1 = 1; - LM_CS2 = 0; - } - else if (axis == MOTOR_BOTH) { - LM_CS1 = 0; - LM_CS2 = 0; - } + LM_CS1 = ((axis & MOTOR_RIGHT) == 0); + LM_CS2 = ((axis & MOTOR_LEFT) == 0); LM_PS = PS_COMMAND; // attendre au moins 30 ns avant LM_WRITE = 0 Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) @@ -201,18 +191,8 @@ void writeDataWord(char axis, WORD data) { waitBusyLM(axis); dataBusDirection(DATA_OUT); - if (axis == MOTOR_RIGHT) { - LM_CS1 = 0; - LM_CS2 = 1; - } - else if (axis == MOTOR_LEFT) { - LM_CS1 = 1; - LM_CS2 = 0; - } - else if (axis == MOTOR_BOTH) { - LM_CS1 = 0; - LM_CS2 = 0; - } + LM_CS1 = ((axis & MOTOR_RIGHT) == 0); + LM_CS2 = ((axis & MOTOR_LEFT) == 0); LM_PS = PS_DATA; // attendre au moins 30 ns avant LM_WRITE = 0 Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) @@ -262,35 +242,36 @@ void writeDataWord(char axis, WORD data) { WORD readDataWord(char axis) { WORD_VAL word; - waitBusyLM(axis); - dataBusDirection(DATA_IN); - - if (axis == MOTOR_RIGHT) { - LM_CS1 = 0; - LM_CS2 = 1; - } - else if (axis == MOTOR_LEFT) { - LM_CS1 = 1; - LM_CS2 = 0; - } - - LM_PS = PS_DATA; // attendre au moins 30 ns avant LM_READ = 0 - Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) - LM_READ = 0; // attendre au moins 180 ns avant de lire le bus - Nop(); Nop(); Nop(); // attends 3 cycles, 8 MHz / 4 = 250 ns (> 180 ns) - - word.byte.HB = LM_DATA_BUS; - - LM_READ = 1; // attendre au moins 120 ns avant LM_READ = 0 - Nop(); Nop(); // attends 2 cycles, 8 MHz / 4 = 166 ns (> 120 ns) - LM_READ = 0; // attendre au moins 180 ns avant de lire le bus - Nop(); Nop(); Nop(); // attends 3 cycles, 8 MHz / 4 = 250 ns (> 180 ns) - - word.byte.LB = LM_DATA_BUS; - - LM_READ = 1; // attendre au moins 30 ns avant une autre action - - return word.Val; + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); + return 0; + } + else { + waitBusyLM(axis); + dataBusDirection(DATA_IN); + + // Si axis = MOTOR_BOTH, LM_CS1 = LM_CS2 = 1 : on ne sctionne aucun LM, pour ter un conflit sur le bus + LM_CS1 = ((axis & MOTOR_LEFT) != 0); + LM_CS2 = ((axis & MOTOR_RIGHT) != 0); + + LM_PS = PS_DATA; // attendre au moins 30 ns avant LM_READ = 0 + Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) + LM_READ = 0; // attendre au moins 180 ns avant de lire le bus + Nop(); Nop(); Nop(); // attends 3 cycles, 8 MHz / 4 = 250 ns (> 180 ns) + + word.byte.HB = LM_DATA_BUS; + + LM_READ = 1; // attendre au moins 120 ns avant LM_READ = 0 + Nop(); Nop(); // attends 2 cycles, 8 MHz / 4 = 166 ns (> 120 ns) + LM_READ = 0; // attendre au moins 180 ns avant de lire le bus + Nop(); Nop(); Nop(); // attends 3 cycles, 8 MHz / 4 = 250 ns (> 180 ns) + + word.byte.LB = LM_DATA_BUS; + + LM_READ = 1; // attendre au moins 30 ns avant une autre action + + return word.Val; + } } /** @@ -307,28 +288,29 @@ WORD readDataWord(char axis) { BYTE readStatus(char axis) { BYTE status = 0; - waitBusyLM(axis); - dataBusDirection(DATA_IN); - - if (axis == MOTOR_RIGHT) { - LM_CS1 = 0; - LM_CS2 = 1; - } - else if (axis == MOTOR_LEFT) { - LM_CS1 = 1; - LM_CS2 = 0; - } - - LM_PS = PS_COMMAND; // attendre au moins 30 ns avant LM_READ = 0 - Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) - LM_READ = 0; // attendre au moins 180 ns avant de lire le bus - Nop(); Nop(); Nop(); // attends 3 cycles, 8 MHz / 4 = 250 ns (> 180 ns) - - status = LM_DATA_BUS; - - LM_READ = 1; // attendre au moins 30 ns avant une autre action + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); + return 0; + } + else { + waitBusyLM(axis); + dataBusDirection(DATA_IN); - return status; + // Si axis = MOTOR_BOTH, LM_CS1 = LM_CS2 = 1 : on ne sctionne aucun LM, pour ter un conflit sur le bus + LM_CS1 = ((axis & MOTOR_LEFT) != 0); + LM_CS2 = ((axis & MOTOR_RIGHT) != 0); + + LM_PS = PS_COMMAND; // attendre au moins 30 ns avant LM_READ = 0 + Nop(); // attends 1 cycle, 8 MHz / 4 = 83.3 ns (> 30 ns) + LM_READ = 0; // attendre au moins 180 ns avant de lire le bus + Nop(); Nop(); Nop(); // attends 3 cycles, 8 MHz / 4 = 250 ns (> 180 ns) + + status = LM_DATA_BUS; + + LM_READ = 1; // attendre au moins 30 ns avant une autre action + + return status; + } } /** @@ -353,7 +335,12 @@ BYTE readStatus(char axis) { * @return value la valeur du bit, 0 (#FALSE) ou 1 (#TRUE). */ BOOL readStatusBit(char axis, BYTE type) { - return ((readStatus(axis) & type) != 0); + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); + return 0; + } + else + return ((readStatus(axis) & type) != 0); } /** @@ -532,18 +519,19 @@ void newPosition(char axis, DWORD pos, DWORD vel, DWORD acc) { writeDataWord(axis, velData.word.LW); if (axis == MOTOR_BOTH && CON_MOTOR_RIGHT == CON_MOTOR_LEFT) { + // Dans ce cas, on peut ire simultannt sur les 2 LM pour gagner du temps posData.Val = CON_MOTOR_RIGHT * pos; writeDataWord(axis, posData.word.HW); writeDataWord(axis, posData.word.LW); } else { - if (axis == MOTOR_BOTH || axis == MOTOR_LEFT) { + if (axis & MOTOR_LEFT) { posData.Val = CON_MOTOR_LEFT * pos; writeDataWord(MOTOR_LEFT, posData.word.HW); writeDataWord(MOTOR_LEFT, posData.word.LW); } - if (axis == MOTOR_BOTH || axis == MOTOR_RIGHT) { + if (axis & MOTOR_RIGHT) { posData.Val = CON_MOTOR_RIGHT * pos; writeDataWord(MOTOR_RIGHT, posData.word.HW); writeDataWord(MOTOR_RIGHT, posData.word.LW); @@ -581,20 +569,23 @@ void newVelocity(char axis, DWORD vel, DWORD acc, char dir) { arg|= LM_LTRJ_LOAD_ACC; if (axis == MOTOR_BOTH && CON_MOTOR_RIGHT == CON_MOTOR_LEFT) { + // Dans ce cas, on peut ire simultannt sur les 2 LM pour gagner du temps if (dir == CON_MOTOR_RIGHT) arg|= LM_LTRJ_FORWARD_DIR; writeDataWord(axis, arg); } else { - if (axis == MOTOR_BOTH || axis == MOTOR_LEFT) { + if (axis & MOTOR_LEFT) { if (dir == CON_MOTOR_LEFT) arg|= LM_LTRJ_FORWARD_DIR; writeDataWord(MOTOR_LEFT, arg); } - if (axis == MOTOR_BOTH || axis == MOTOR_RIGHT) { + if (axis & MOTOR_RIGHT) { + arg = LM_LTRJ_LOAD_VEL | LM_LTRJ_VEL_MODE; // Il faut ritialiser arg + if (dir == CON_MOTOR_RIGHT) arg|= LM_LTRJ_FORWARD_DIR; @@ -639,10 +630,10 @@ void changeVelocity(char axis, DWORD vel, char dir) { * #MOTOR_BOTH les 2 moteurs */ void start(char axis) { - if (axis == MOTOR_RIGHT || axis == MOTOR_BOTH) + if (axis & MOTOR_RIGHT) posRight = getRealPosition(MOTOR_RIGHT); - if (axis == MOTOR_LEFT || axis == MOTOR_BOTH) + if (axis & MOTOR_LEFT) posLeft = getRealPosition(MOTOR_LEFT); trajLoaded = 0; @@ -697,13 +688,13 @@ void setBreakpoint(char axis, DWORD pos, BOOL rel) { else { writeCommand(axis, LM_CMD_SBPA); - if (axis == MOTOR_BOTH || axis == MOTOR_LEFT) { + if (axis & MOTOR_LEFT) { posData.Val = posLeft + CON_MOTOR_LEFT * pos; writeDataWord(MOTOR_LEFT, posData.word.HW); writeDataWord(MOTOR_LEFT, posData.word.LW); } - if (axis == MOTOR_BOTH || axis == MOTOR_RIGHT) { + if (axis & MOTOR_RIGHT) { posData.Val = posRight + CON_MOTOR_RIGHT * pos; writeDataWord(MOTOR_RIGHT, posData.word.HW); writeDataWord(MOTOR_RIGHT, posData.word.LW); @@ -726,8 +717,10 @@ void setBreakpoint(char axis, DWORD pos, BOOL rel) { DWORD getDesiredPosition(char axis) { DWORD_VAL posData; - if (axis == MOTOR_BOTH) + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); return 0; + } else { writeCommand(axis, LM_CMD_RDDP); posData.word.HW = readDataWord(axis); @@ -749,8 +742,10 @@ DWORD getDesiredPosition(char axis) { DWORD getRealPosition(char axis) { DWORD_VAL posData; - if (axis == MOTOR_BOTH) + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); return 0; + } else { writeCommand(axis, LM_CMD_RDRP); posData.word.HW = readDataWord(axis); @@ -774,8 +769,10 @@ DWORD getRealPosition(char axis) { DWORD getDesiredVelocity(char axis) { DWORD_VAL velData; - if (axis == MOTOR_BOTH) + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); return 0; + } else { writeCommand(axis, LM_CMD_RDDV); velData.word.HW = readDataWord(axis); @@ -797,8 +794,10 @@ DWORD getDesiredVelocity(char axis) { DWORD getRealVelocity(char axis) { DWORD_VAL velData; - if (axis == MOTOR_BOTH) + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); return 0; + } else { writeCommand(axis, LM_CMD_RDRV); velData.word.HW = readDataWord(axis); @@ -818,8 +817,10 @@ DWORD getRealVelocity(char axis) { * @return WORD la valeur de l'intation, sur 16 bits */ WORD getIntegrationSum(char axis) { - if (axis == MOTOR_BOTH) + if (axis != MOTOR_RIGHT && axis != MOTOR_LEFT) { + error(ERR_INVALID_AXIS); return 0; + } else { writeCommand(axis, LM_CMD_RDSUM); return readDataWord(axis); @@ -841,8 +842,10 @@ short getRelPos(char axis) { return ((float) ((long) getRealPosition(MOTOR_RIGHT) - (long) posRight) / (float) COEF_RIGHT_WHEEL * CON_MOTOR_RIGHT); else if (axis == MOTOR_LEFT) return ((float) ((long) getRealPosition(MOTOR_LEFT) - (long) posLeft) / (float) COEF_LEFT_WHEEL * CON_MOTOR_LEFT); - else + else { + error(ERR_INVALID_AXIS); return 0; + } } /** diff --git a/USB_Module/Motor_Controller/Firmware/motor.c b/USB_Module/Motor_Controller/Firmware/motor.c index e42e0b3..7ac42f9 100644 --- a/USB_Module/Motor_Controller/Firmware/motor.c +++ b/USB_Module/Motor_Controller/Firmware/motor.c @@ -114,6 +114,10 @@ long getIsens(char axis) { for (i = 0; i < ISENS_AVR1; i++) Isens+= Isens2[i]; } + else { + error(ERR_INVALID_AXIS); + return 0; + } return (long) ((((float) Isens / ISENS_AVR0 / ISENS_AVR1) * 5.0 / 1023.0 - 2.5) * ISENS_COEF); } @@ -130,14 +134,11 @@ long getIsens(char axis) { * #MOTOR_BOTH les 2 moteurs */ void enableMotor(char axis) { - if (axis == MOTOR_RIGHT) - EN_MOTOR1 = 1; - else if (axis == MOTOR_LEFT) - EN_MOTOR2 = 1; - else if (axis == MOTOR_BOTH) { + if (axis & MOTOR_RIGHT) EN_MOTOR1 = 1; + + if (axis & MOTOR_LEFT) EN_MOTOR2 = 1; - } } /** @@ -151,14 +152,11 @@ void enableMotor(char axis) { * #MOTOR_BOTH les 2 moteurs */ void disableMotor(char axis) { - if (axis == MOTOR_RIGHT) - EN_MOTOR1 = 0; - else if (axis == MOTOR_LEFT) - EN_MOTOR2 = 0; - else if (axis == MOTOR_BOTH) { + if (axis & MOTOR_RIGHT) EN_MOTOR1 = 0; + + if (axis & MOTOR_LEFT) EN_MOTOR2 = 0; - } } #endif diff --git a/USB_Module/Motor_Controller/Firmware/motor.h b/USB_Module/Motor_Controller/Firmware/motor.h index 82862dc..2b628f6 100644 --- a/USB_Module/Motor_Controller/Firmware/motor.h +++ b/USB_Module/Motor_Controller/Firmware/motor.h @@ -7,8 +7,11 @@ #define MOTOR_H #include <adc.h> +#include "GenericTypeDefs.h" #include "Compiler.h" #include "HardwareProfile.h" +#include "PcInterface.h" +#include "error.h" // Parames graux #define ISENS_R 0.02 ///< Valeur de la rstance de mesure du courant (en ohm) @@ -47,9 +50,9 @@ #endif // Constantes programme -#define MOTOR_RIGHT 0 ///< Sction du moteur de droite (moteur 1) -#define MOTOR_LEFT 1 ///< Sction du moteur de gauche (moteur 2) -#define MOTOR_BOTH 2 ///< Sction des 2 moteurs simultannt +#define MOTOR_RIGHT 1 ///< Sction du moteur de droite (moteur 1) +#define MOTOR_LEFT 2 ///< Sction du moteur de gauche (moteur 2) +#define MOTOR_BOTH 3 ///< Sction des 2 moteurs simultannt #if defined(REV_1_0) // Board revision 1.0 diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index e76d155..453ac5d 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 91a16f9..a50fbfb 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,1563 +1,1572 @@ :020000040000FA -:0600000041EF33F0120095 +:0600000098EF33F012003E :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000041EF33F012008D -:0608080004EF13F01200E2 -:0608180071EF13F0120065 -:06082A0004001767000046 -:1008300026010000210000000C67000054010000A8 -:100840000B000000FF660000470100000D000000E3 -:0C085000FC6600006C01000003000000CA -:04085C00B5EC0EF0F9 -:10086000020EE126E66AC1DAE552DF6E010EE66E9F -:10087000BCDAE552E76E010EE7CFDBFF020EDF14B4 -:1008800004E1010EDB50020B0BE00A0EE66EE1EC18 -:1008900032F0E552020EE66EE66AE66E6CEC0FF0A0 -:1008A000040EDF140AE0010EDB50040B06E0010128 -:1008B000010E566F040EB3EC11F0200EDF1404E1AC -:1008C000010EDB50200B08E00B0EE66EE1EC32F07F -:1008D000E552200EB3EC11F0DFAC0DD00101545104 -:1008E00004E0E66A32EC09F0E552400EE66EE66A94 -:1008F000E66A6CEC0FF0010EDBAC0FD00101545135 -:1009000005E0010EE66E32EC09F0E552400EE66EAF -:10091000E66A010EE66E6CEC0FF0020EE15C02E29C -:10092000E16AE552E16EBAEF0EF0CDEC11F006E1AE -:10093000F80E96163C0E9416959808D0FE0EDB0421 -:1009400005E1070E9612C30E94129588BAEF0EF0C9 -:10095000D9CFE6FFE1CFD9FFE652010EE66EE5DF23 -:10096000E5528098FE0EDB5004E0FE0EDB500208DC -:100970000FE1839C808A0000839E0000000000003D -:100980008450010BDF6E838E00000000DF04F4E072 -:10099000FE0EDB0404E0FE0EDB5002080FE1838C48 -:1009A000809A0000839E0000000000008450010B2C -:1009B000DF6E838E00000000DF04F4E0E552E552B4 -:1009C000E7CFD9FF1200D9CFE6FFE1CFD9FFE6523A -:1009D000FD0EDB50DF6EFE0EDBCFE6FFB9DFE5522A -:1009E000E66AA3DFE552FE0EDB5003E1839C808ABA -:1009F0000CD0FE0EDB0403E1838C809A06D0FE0E41 -:100A0000DB50020802E1839C809A80980000809667 -:100A1000D9CFE9FFDACFEAFFEF50010B02E0848083 -:100A200001D08490D9CFE9FFDACFEAFFEF50020B73 -:100A300002E0848201D08492D9CFE9FFDACFEAFFC5 -:100A4000EF50040B02E0848401D08494D9CFE9FFF5 -:100A5000DACFEAFFEF50080B02E0838801D08398D9 -:100A6000D9CFE9FFDACFEAFFEF50100B02E0828224 -:100A700001D08292D9CFE9FFDACFEAFFEF50200B05 -:100A800002E0828E01D0829ED9CFE9FFDACFEAFF61 -:100A9000EF50400B02E0828001D08290D9CFE9FF75 -:100AA000DACFEAFFEF50800B02E0828C01D0829C0B -:100AB00000000000808600000000E552E552E7CF0C -:100AC000D9FF1200D9CFE6FFE1CFD9FF020EE12610 -:100AD000FC0EDBCFDEFFDBCFDDFFFE0EDBCFE6FF64 -:100AE00037DFE552E66A21DFE552FE0EDB5003E117 -:100AF000839C808A0CD0FE0EDB0403E1838C809AF9 -:100B000006D0FE0EDB50020802E1839C809A8088AA -:100B100000008096D9CFE9FFDACFEAFFEE52EF501E -:100B2000010B02E0848001D08490D9CFE9FFDACFB5 -:100B3000EAFFEE52EF50020B02E0848201D0849271 -:100B4000D9CFE9FFDACFEAFFEE52EF50040B02E013 -:100B5000848401D08494D9CFE9FFDACFEAFFEE5242 -:100B6000EF50080B02E0838801D08398D9CFE9FFCA -:100B7000DACFEAFFEE52EF50100B02E0828201D092 -:100B80008292D9CFE9FFDACFEAFFEE52EF50200B85 -:100B900002E0828E01D0829ED9CFE9FFDACFEAFF50 -:100BA000EE52EF50400B02E0828001D08290D9CF0C -:100BB000E9FFDACFEAFFEE52EF50800B02E0828CC1 -:100BC00001D0829C0000000080860000000080961A -:100BD000D9CFE9FFDACFEAFFEF50010B02E08480C2 -:100BE00001D08490D9CFE9FFDACFEAFFEF50020BB2 -:100BF00002E0848201D08492D9CFE9FFDACFEAFF04 -:100C0000EF50040B02E0848401D08494D9CFE9FF33 -:100C1000DACFEAFFEF50080B02E0838801D0839817 -:100C2000D9CFE9FFDACFEAFFEF50100B02E0828262 -:100C300001D08292D9CFE9FFDACFEAFFEF50200B43 -:100C400002E0828E01D0829ED9CFE9FFDACFEAFF9F -:100C5000EF50400B02E0828001D08290D9CFE9FFB3 -:100C6000DACFEAFFEF50800B02E0828C01D0829C49 -:100C700000000000808600000000020EE15C02E23D -:100C8000E16AE552E16EE552E7CFD9FF1200D9CF14 -:100C9000E6FFE1CFD9FF020EE126FE0EDBCFE6FF35 -:100CA00057DEE552010EE66E40DEE552FE0EDB50E9 -:100CB00003E1839C808A05D0FE0EDB0402E1838C75 -:100CC000809A80880000839E00000000000084500D -:100CD000010B066E8450020B01E0010EE824056E44 -:100CE0008450040B01E0010E040DF3CF04F0835097 -:100CF000100B01E0010E080DF3CF03F08250020B40 -:100D000001E0010E100DF3CF02F08250800B01E0E4 -:100D1000010E200DF3CF01F08250010B400DF3CFF7 -:100D200000F08250400B01E0010E800DF3500010E6 -:100D3000011002100310041005100610E76E010EDA -:100D4000E7CFDBFF838E00000000839E00000000E1 -:100D500000008450010B066E8450020B01E0010E6E -:100D6000E824056E8450040B01E0010E040DF3CF5E -:100D700004F08350100B01E0010E080DF3CF03F0D7 -:100D80008250020B01E0010E100DF3CF02F08250F1 -:100D9000800B01E0010E200DF3CF01F08250010B1A -:100DA000400DF3CF00F08250400B01E0010E800DAA -:100DB000F35000100110021003100410051006106B -:100DC000DF6E838EDECF00F0DDCF01F000C0F3FFD9 -:100DD00001C0F4FF00D0020EE15C02E2E16AE552DC -:100DE000E16EE552E7CFD9FF1200D9CFE6FFE1CFA0 -:100DF000D9FFE652DF6AFE0EDBCFE6FFA9DDE55242 -:100E0000010EE66E92DDE552FE0EDB5003E1839C9F -:100E1000808A05D0FE0EDB0402E1838C809A8098E4 -:100E20000000839E0000000000008450010B066E4D -:100E30008450020B01E0010EE824056E8450040B7F -:100E400001E0010E040DF3CF04F08350100B01E01C -:100E5000010E080DF3CF03F08250020B01E0010EEA -:100E6000100DF3CF02F08250800B01E0010E200D37 -:100E7000F3CF01F08250010B400DF3CF00F0825010 -:100E8000400B01E0010E800DF35000100110021024 -:100E90000310041005100610DF6E838EDF5000D0A3 -:100EA000E552E552E7CFD9FF1200B5EC0EF0FD0E8A -:100EB000DBCFE6FF48EC0FF0E552E71402E1000E4D -:100EC00001D0010EBAEF0EF0B5EC0EF01D0E55EC90 -:100ED0000EF0FC0EDB1C006EFD0EDB1C016E00C074 -:100EE000E6FFE66E40EC0EF0BAEF0EF0B5EC0EF059 -:100EF000000EE66EE66A25EC11F06CEC0FF0BAEF2E -:100F00000EF0B5EC0EF048EC0FF084080DE048EC64 -:100F10000FF0C40809E0E66A25EC11F049EC10F086 -:100F200014EC33F0E552EFD71C0E55EC0EF0660EC4 -:100F3000D1EC11F050EC10F048EC0FF0800804E018 -:100F400048EC0FF0C008E7E148EC0FF0C00802E100 -:100F500050EC10F01E0E55EC0EF00F0ED1EC11F00F -:100F6000B5EC12F0FA0EDBCFE6FFFB0E03EC11F04E -:100F7000F80EDBCFE6FFF90E03EC11F0F60EDBCF37 -:100F8000E6FFF70E03EC11F0040E55EC0EF01A0E0E -:100F900055EC0EF0100EE66E270EE66E40EC0EF0ED -:100FA0000101546B556B566BBAEF0EF0B5EC0EF0B9 -:100FB000080EE126010ECBEC0EF0010EE7CFDBFFB1 -:100FC000020ED5EC11F0DF6E030ECBEC0EF0030E2B -:100FD000E7CFDBFF040ECBEC0EF0020EE7CFDBFF1A -:100FE000050ECBEC0EF0050EE7CFDBFF060ECBECCB -:100FF0000EF0040EE7CFDBFF070ECBEC0EF0070E72 -:10100000E7CFDBFF080ECBEC0EF02AEC0FF0E66A20 -:1010100055EC10F0090ECBEC0EF0010EE7CFDBFF24 -:101020000A0ED5EC11F0DF6E0B0ECBEC0EF0030EBA -:10103000E7CFDBFF0C0ECBEC0EF0020EE7CFDBFFB1 -:101040000D0ECBEC0EF0050EE7CFDBFF0E0ECBEC5A -:101050000EF0040EE7CFDBFF0F0ECBEC0EF0070E09 -:10106000E7CFDBFF100ECBEC0EF02AEC0FF0010EF9 -:10107000E66E55EC10F0020EE66EE66E49EC10F0EE -:10108000E66A13DFE552E552000909E1020EE66E59 -:10109000010EE66E0ADFE552E552000902E0000E9D -:1010A00001D0010E006E080EE15C02E2E16AE55239 -:1010B000E16E0050BAEF0EF0B5EC0EF00C0EE1262A -:1010C00055EC0FF0D950F20FA9EC11F0080EEECF4D -:1010D000DBFF090EEECFDBFF0A0EEECFDBFF0B0EC0 -:1010E000EECFDBFF1F0E55EC0EF0C4EC0FF00050FE -:1010F0000110021003100CE02B0ED1EC11F00A0EBF -:10110000DBCFE6FF0B0E03EC11F0B3EC0FF003D0D6 -:101110000B0EE66EE66A40EC0EF085EC12F097ECF2 -:101120000FF009E1DAEC11F040EC0EF03BEC11F0BD -:1011300025EC11F014D097EC0FF003E0FE0EDB0469 -:1011400004E1DAEC11F0BBEC12F097EC0FF003E0E5 -:10115000FE0EDB5006E1DAEC11F011EC10F013ECAE -:1011600011F00101010E546F0C0EE15C02E2E16A24 -:10117000E552E16EBAEF0EF0B5EC0EF00A0EE12684 -:1011800080EC0FF055EC0FF0080EF36EDB6E090EDD -:10119000F3CFDBFF1F0E55EC0EF06FEC0FF007E006 -:1011A000D950080FE96EDACFEAFFEE8AED5297ECDC -:1011B0000FF00BE1F50EDB50FF0802E105EC10F03B -:1011C000B3EC0FF025EC11F01FD097EC0FF003E01B -:1011D000FE0EDB040AE1F50EDB50FF0802E105EC30 -:1011E00010F0B3EC0FF044EC0FF097EC0FF003E0CD -:1011F000FE0EDB500BE1F50EDB50FF0802E105ECC3 -:1012000010F0B3EC0FF0E66A13EC11F06FEC0FF096 -:1012100002E085EC12F09CEC12F040EC0EF00101C3 -:10122000010E546F0A0EE15C02E2E16AE552E16EE2 -:10123000BAEF0EF0B5EC0EF0F90EDBCFE6FFE66A82 -:10124000E66AE66AE66AD950FA0FA9EC11F091EC69 -:1012500011F025EC11F090DF006E0A0EE15E0050F7 -:10126000BAEF0EF0CDEC11F003E097EC0FF00BE1CC -:10127000E66A75D8E5522DC057F12EC058F12FC03F -:1012800059F130C05AF1FE0EDB0403E097EC0FF089 -:101290000CE1010EE66E63D8E5522DC05BF12EC065 -:1012A0005CF12FC05DF130C05EF10101546B9AEF2B -:1012B00011F0B5EC0EF01F0E55EC0EF0B5EC12F07F -:1012C0009AEF11F0B5EC0EF0040EE126F90EDB50AA -:1012D0000AE080EC0FF0210E55EC0EF09CEC12F0C1 -:1012E00025EC11F021D0200E55EC0EF097EC0FF00C -:1012F00003E0FE0EDB0409E15CEC0EF05B0EE96E30 -:10130000010E57EC11F0BBEC12F097EC0FF003E07C -:10131000FE0EDB500BE15CEC0EF0570EE96E010E99 -:1013200057EC11F011EC10F013EC11F0040EE15C2D -:1013300002E2E16AE552E16EBAEF0EF036EC11F02E -:1013400003E13FEC10F003D0080EDDEC11F0040EC9 -:10135000E15C02E2E16AE552E16EBAEF0EF036ECD2 -:1013600011F003E13FEC10F003D00A0EDDEC11F0B8 -:10137000040EE15C02E2E16AE552E16EBAEF0EF0C2 -:1013800036EC11F003E13FEC10F003D0070EDDEC7A -:1013900011F0040EE15C02E2E16AE552E16EBAEF9F -:1013A0000EF036EC11F003E13FEC10F00BD00B0E19 -:1013B00055EC0EF025EC11F087EC11F0DE6ADD6AD9 -:1013C00068EC11F0040EE15C02E2E16AE552E16EC4 -:1013D000BAEF0EF0B5EC0EF097EC0FF003E1F36A04 -:1013E000F46A07D00D0E55EC0EF025EC11F04FDC31 -:1013F000E552BAEF0EF0CDEC11F00FE1E66AAFDF87 -:10140000E552010157512D5C0A6E58512E580B6E52 -:1014100059512F580C6E5A5112D0FE0EDB0433E195 -:10142000010EE66E9CDFE55201015B512D5C0A6EF8 -:101430005C512E580B6E5D512F580C6E5E5130581A -:101440000D6E0AC02DF00BC02EF00CC02FF0306EC8 -:1014500064EC24F01CEC0FF026EC12F014EC25F0F8 -:101460002EC002F02FC003F030C004F031C005F0F0 -:1014700065EC0FF067EC25F0D4EC25F02FC0F3FFFE -:1014800030C0F4FF02D0F36AF46ABAEF0EF0B9ECA0 -:1014900011F029EC10F03BEC0FF0BAEF0EF0B9ECC4 -:1014A00011F00BEC0FF0020E3BEC0FF0BAEF0EF068 -:1014B000B5EC0EF06DEC10F00BEC0FF0E66AFCDD15 -:1014C00044EC10F06DEC10F022EC11F062EF11F032 -:1014D000B5EC0EF06DEC10F04DEC0FF044EC10F0AC -:1014E0006DEC10F00BEC0FF0010E62EF11F0B5ECAB -:1014F0000EF01C0EE126F60EDB501EE0006A800E98 -:10150000016E010E026E430E036EEFEC12F0336AB1 -:10151000346AC80E356E420E366E14EC25F033EC8C -:1015200012F0A5DB6FEC12F0D4EC25F0F70E2FC013 -:10153000DBFFF80E30C0DBFF40EC11F0A5EC0EF045 -:10154000BDEC11F00C6A800E0D6E010E0E6E430E96 -:101550000F6EB0EC12F02FEC12F0F1EC10F01BEC6F -:1015600010F085DB6FEC12F02EC0DEFF2FC0DEFF27 -:1015700030C0DEFF31C0DDFFDD52DD5291EC0FF0F7 -:1015800065EC0FF067EC25F033EC12F0BDEC11F0D8 -:10159000106A800E116E010E126E430E136EB0ECC7 -:1015A00012F0FFEC10F0E3EC12F06FEC12F0040E0E -:1015B0002EC0DBFF050E2FC0DBFF060E30C0DBFFA9 -:1015C000070E31C0DBFFDECF2EF0DECF2FF0DECFF7 -:1015D00030F0DDCF31F0DD52DD52040EDBCF33F0E1 -:1015E000050EDBCF34F0060EDBCF35F0070EBFEC77 -:1015F00012F0080E2EC0DBFF090E2FC0DBFF0A0E13 -:1016000030C0DBFF0B0E31C0DBFF080EDBCF04F078 -:10161000090EDBCF05F00A0EDBCF06F00B0EDBCF99 -:1016200007F0336A346A356A366A5BDB3AEC26F0D7 -:10163000010A03E0C4EC0FF013D0080EDBCF08F072 -:10164000090EDBCF09F00A0EDBCF0AF00B0EDBCF61 -:101650000BF065EC0FF073EC12F067EC25F013DB88 -:10166000080E00C0DBFF090E01C0DBFF0A0E02C03E -:10167000DBFF0B0E03C0DBFF9FDB94EC0FF064EC91 -:1016800010F0C0EC10F0EBEC0FF0046A056A066A8B -:10169000400E076E45EC11F02FEC12F064EC10F0E8 -:1016A00096EC12F0F0DA0C0EDBCF0CF00D0EDBCF67 -:1016B0000DF00E0EDBCF0EF00F0EDBCF0FF01FEC98 -:1016C00010F0D1EC0FF078DB33EC12F0D4EC12F028 -:1016D000C0EC10F09BEC0FF0066A400E076ED4ECE5 -:1016E00012F096EC12F0E0EC11F01FEC10F0DEECD2 -:1016F0000FF0140EDBCF08F0150EDBCF09F0160E3D -:10170000DBCF0AF0170E14DB0C0EDBCF14F00D0E3E -:10171000DBCF15F00E0EDBCF16F00F0E0FDBD9CF9F -:10172000E9FFDACFEAFFEECF20F0EECF21F0EECFE7 -:1017300022F0EFCF23F029EC11F0AFDB246E0D0E79 -:10174000E15E2450180EDBCF08F0190EDBCF09F054 -:101750001A0EDBCF0AF01B0EEBDA100EDBCF14F003 -:10176000110EDBCF15F0120EDBCF16F0130EE6DAFA -:10177000040EDBCF20F0050EDBCF21F0060EDBCF11 -:1017800022F0070EDBCF23F029EC11F022EC11F050 -:10179000E66E92DC246E0D0EE15E2450AAEC12F08F -:1017A0001C0EE15C02E2E16AE552E16EE3D2DDDAB1 -:1017B0003C0EE126B6DBFAEC12F03CEC12F073ECD6 -:1017C00012F067EC25F0B0DB58EC12F045EC11F0AC -:1017D0002FEC12F030EC10F04ADA07EC11F047DA97 -:1017E00080DA7EEC24F04FDA336A346A800E16EC2D -:1017F00010F0380E2EC0DBFF390E2FC0DBFF3A0E83 -:1018000030C0DBFF3B0E31C0DBFFFAEC12F03BDAFD -:1018100048DB45EC11F099DA44DBC6EC2DF0086E9C -:10182000080EE15E0850080E2DC0DBFF090E2EC029 -:10183000DBFF0A0E2FC0DBFF0B0E30C0DBFFF60E06 -:10184000DB5007E0D950F40FA9EC11F0EE50ED1089 -:1018500039E1C3DA080EDBCF0EF0090EDBCF0FF053 -:101860000A0EDBCF10F00B0E88EC10F0D9D94AEC41 -:1018700011F02E6A2F6A800E306E400E316E380ED7 -:10188000DBCF33F0390EDBCF34F03A0EDBCF35F05F -:101890003B0E83EC11F0D0DA04DB6CDB2DC002F0E0 -:1018A0002EC003F02FC004F030C005F02DC02EF084 -:1018B000C2EC11F073EC11F0EADD0A6E060EE15E87 -:1018C0000A50A1D1380EDBCF04F0390EDBCF05F082 -:1018D0003A0EDBCF06F03B0EDBCF07F0CADBFDECA8 -:1018E00012F067EC25F0F0DBDBEC12F0AEDAB8DBDF -:1018F000E3EC11F058EC12F0BAD9CED97EEC24F01A -:101900001ADBE6EC11F040EC11F0FFEC10F06FEC9C -:1019100012F054DB046A056AE6EC11F045EC11F0B4 -:10192000FFEC10F06FEC12F01C0E2EC0DBFF1D0E52 -:101930002FC0DBFF1E0E30C0DBFF1F0E31C0DBFFF0 -:101940001C0EDBCF00F01D0EDBCF01F01E0EDBCF37 -:1019500002F01F0EDBCF03F0B8DA6FEC12F0200EAE -:101960002EC0DBFF210E2FC0DBFF220E30C0DBFFBD -:10197000230E31C0DBFFD950180FE96EDACFEAFF32 -:10198000240EEECFDBFF250EEECFDBFF260EEECFD3 -:10199000DBFF270EEECFDBFF40EC11F090EC12F0F6 -:1019A000200EDBCF33F0210EDBCF34F0220EDBCF65 -:1019B00035F0230EC5EC12F0280E2EC0DBFF290EE9 -:1019C0002FC0DBFF2A0E30C0DBFF2B0E31C0DBFF48 -:1019D00045EC11F090EC12F0240EDBCF33F0250E25 -:1019E000DBCF34F0260EDBCF35F0270EC5EC12F03E -:1019F0002C0E2EC0DBFF2D0E2FC0DBFF2E0E30C0B5 -:101A0000DBFF2F0E31C0DBFF2C0EDBCF04F02D0EE1 -:101A1000DBCF05F02E0EDBCF06F02F0EDBCF07F06D -:101A200054DA5FD967EC25F016EC11F0300E2EC0B9 -:101A3000DBFF310E2FC0DBFF320E30C0DBFF330E79 -:101A400031C0DBFF280EDBCF2EF0290EDBCF2FF0CD -:101A50002A0EDBCF30F02B0EDBCF31F0E7DB340E7C -:101A60002EC0DBFF350E2FC0DBFF360E30C0DBFF94 -:101A7000370E31C0DBFFD950300F90D9D950340F19 -:101A80008DD9C6EC2DF0006E080EE15E00500C0EF4 -:101A90002DC0DBFF0D0E2EC0DBFF0E0E2FC0DBFFB7 -:101AA0000F0E30C0DBFF006A016A026A400E036E4F -:101AB00000C0E6FF01C0E6FF02C0E6FFE66E95D972 -:101AC000FDEC12F0B8DAEDD97EEC11F02DC014F077 -:101AD0002EC015F02FC016F030C017F022EC12F017 -:101AE000C6EC2DF0186E080EE15E1850E552E7CFF7 -:101AF00003F0E552E7CF02F0E552E7CF01F0E552FF -:101B0000E7CF00F02DC004F02EC005F02FC006F086 -:101B100030C007F01FDA6FEC12F043DAF60EDB503C -:101B200002081FE161EC12F07DEC24F0A3EC12F04E -:101B30007EEC24F023D95CDA060E2FC0DBFF070E03 -:101B400030C0DBFF000EDFCF2FF0010EFED8020EFB -:101B5000AEEC11F0B9DA49DB040E2FC0DBFF050E45 -:101B600035D02AD990D80C0EDBCF04F00D0EDBCF88 -:101B700005F00E0EDBCF06F00F0EDBCF07F004C032 -:101B800033F005C034F006C035F007C036F07DEC08 -:101B900024F021DA61EC12F07EEC24F0A3EC12F0D8 -:101BA0007DEC24F0EBD824DA040E2FC0DBFF050E09 -:101BB00030C0DBFF020EDBCF2FF0030EC6D8C1DB37 -:101BC00083DA13DB060E2FC0DBFF070E30C0DBFF0E -:101BD00027D890D8040EDBCF2FF0050E6DDA22EC5B -:101BE00012F0AFDB2FD859D9206E0D0EE15E2050D8 -:101BF00081D8060EDBCF2FF0070E5EDA2ADAAEDBD5 -:101C000021D820DB38D93C0EE15C02E2E16AE552E2 -:101C1000E16EB0D00101565102E0556B010C000C91 -:101C2000F9DF0009FDE01200010155511200D4EC6A -:101C300012F026EC12F08EDA28DB3EDA22EC12F0FB -:101C40001FDB85D32EC01CF02FC01DF030C01EF04E -:101C500031C01FF026EC12F000EC13F02DC018F08C -:101C60002EC019F02FC01AF030C01BF012002EC089 -:101C700033F02FC034F030C035F031C036F01200F0 -:101C8000E4DA13EF11F02EC000F02FC001F030C0E5 -:101C900002F031C003F0120000C02EF001C02FF09E -:101CA00002C030F003C031F01200E66ECEDAE3EC91 -:101CB00004F0E552E5521200FA0EDBCF00F0FB0E05 -:101CC000DBCF01F0FC0EDBCF02F0FD0EDBCF03F02B -:101CD000000E006C011E0122021E0222031E0322BE -:101CE000120004C02EF005C02FF006C030F007C06F -:101CF00031F01200EFEC12F0A9DBAAEF10F0A5DA38 -:101D000006DBA3DA47EC06F0E552F3CFDEFFF4CFB3 -:101D1000DDFF68EF11F000C0DFFF010E01C0DBFF47 -:101D2000020E02C0DBFF030E03C0DBFFC9EF12F09F -:101D3000DBCF0BF08BDBD7DBAAEF10F0DBCF17F09C -:101D400085DB65DAA3DB22EF12F089DB33EF12F0DB -:101D500002C02EF017DB7DEC24F0C5DA58EC0AF057 -:101D6000126E060EE15E12501200D9CFE6FFE1CFEF -:101D7000D9FF1200E552E7CFD9FF1200100EDBCFDA -:101D800033F0110EDBCF34F0120EDBCF35F0130E33 -:101D9000BADAD4EF25F009DBE76E1200E96EDACF8C -:101DA000EAFF91EF11F00CC02EF00DC02FF00EC025 -:101DB00030F00FC031F012002E6A2F6A306A400EE8 -:101DC000316E080EDBCF33F0090EDBCF34F00A0E94 -:101DD000DBCF35F00B0E83EF11F05CDA026A036A99 -:101DE000B40E046E420E056E1200140EDBCF0CF022 -:101DF000150EDBCF0DF0160EDBCF0EF0170EDBCF7E -:101E00000FF01200350E336EFA0E346E0E0E356E74 -:101E10003C0E366E1200000E186C191E19221A1E86 -:101E20001A221B1E1B2218C0E6FF19C0E6FF1AC0AB -:101E3000E6FF1BC0E6FF12002EC006F02FC007F021 -:101E400030C008F031C009F01200F40EDBCF2FF0E3 -:101E5000F50E7DD2060EE7CFDBFFDBCFE6FF070EE8 -:101E6000DBCFE6FF040EDBCFE6FF050EDBCFE6FFA0 -:101E700090DB3BEF11F0E66E5CEC08F0206E0D0E8F -:101E8000E15E2050AAEF12F0010EE66E13EF11F0A2 -:101E9000DCD9F5EC06F0E5521200D4DAE66A5CEF24 -:101EA00008F0A1DB31C0E6FF1200D950F60F51DA7D -:101EB000040EEECFDBFF050EEECFDBFF060EEECFFE -:101EC000DBFF070EEECFDBFF1200336A346A800EB1 -:101ED000356EBF0E366E120064EC07F061D3040E4F -:101EE000DBCF00F0050EDBCF01F0060EDBCF02F0FA -:101EF000070EDBCF03F00050011002100310120098 -:101F0000D9CFE9FFDACFEAFFFA0EDBCFEEFFFB0E07 -:101F1000DBCFEEFFFC0EDBCFEEFFFD0EDBCFEEFFE7 -:101F2000120068DB64EF10F09EDAAFD910D2FE0E1B -:101F3000DB5002081200140E2EC0DBFF150E2FC05E -:101F4000DBFF160E30C0DBFF170E31C0DBFF046A6B -:101F5000056A12002DC033F02EC034F02FC035F0CA -:101F600030C036F01200080EDBCFE6FF090EDBCFE3 -:101F7000E6FF1200D9EC29F0E55212D3336A346A35 -:101F8000356A400E366E1200080EDBCF00F0090EE7 -:101F9000DBCF01F00A0EDBCF02F00B0EDBCF03F03C -:101FA0001200100E2EC0DBFF110E2FC0DBFF120E31 -:101FB00030C0DBFF130E31C0DBFF1200180E2EC045 -:101FC000DBFF190E2FC0DBFF1A0E30C0DBFF1B0E2C -:101FD00031C0DBFF12000C0E2EC0DBFF0D0E2FC038 -:101FE000DBFF0E0E30C0DBFF0F0E31C0DBFF120037 -:101FF000020E2FC0DBFF030E30C0DBFFF90EDBCF7C -:102000002FF0FA0EDBCF30F01200D950080FE96E36 -:10201000DACFEAFFEE52ED881200356E430E366ECF -:102020001200E66A00D927D9E66A1200356E400E22 -:10203000366E14EF25F07DEC24F064EF10F00CC048 -:1020400033F00DC034F00EC035F00FC036F07DEF28 -:1020500024F0F8D9020E1200336A800E346E12009A -:102060002EC018F02FC019F030C01AF031C01BF08C -:1020700012000C6A0D6A0E6A400E0F6E12002D6A75 -:102080002E6A2F6A306A1200286E0D0EE15E28500B -:102090001200E3EC04F0E552E552020EE66E120087 -:1020A000D4D876EC07F0E552120081EC07F0006E10 -:1020B000090EE15E00501200D2D9FAD9C7D967ECF7 -:1020C00025F01ADA46EF12F02EC008F02FC009F002 -:1020D00030C00AF031C00BF01200A9DD2EC024F090 -:1020E0002FC025F030C026F031C027F08BDE67EC22 -:1020F00025F02EC020F02FC021F030C022F031C0DA -:1021000023F0AADF810E89DF67EC25F022EF0EF0C5 -:10211000DBCF11F0336A346A340E7FDF0EC02EF04D -:102120000FC02FF010C030F011C031F067EC25F077 -:102130002EC00AF02FC00BF030C00CF031C00DF0F3 -:10214000DB0E336E0F0E346E490E70DF75DE8FDDE1 -:10215000A8EF0EF067EC25F086D9CC0E336EBC0EDE -:10216000346E8C0E356E3B0E366E4ADA2DC000F0A2 -:102170002EC001F02FC002F030C003F022EF12F0A9 -:10218000D5D981DD106A116A800E126E3F0E136E72 -:10219000080EDBCF14F0090EDBCF15F00A0EDBCFF3 -:1021A00016F00B0EDBCF17F014C033F015C034F06F -:1021B00016C035F017C036F006DA6EDD14EF25F0E4 -:1021C000140EDBCF00F0150EDBCF01F0160EDBCFC7 -:1021D00002F0170EDBCF03F03FDF010E1EDF4CEFE6 -:1021E0000EF08AD944DDD3EF0EF0E5D9F90EDBCF3E -:1021F0002FF0FA0E34D940D972D9D4EF25F02FD967 -:1022000057D937EF0EF0DBCFE6FF40EF0EF014C0EA -:102210002EF015C02FF016C030F017C031F067EC6B -:1022200025F07CEF12F062EC05F0BAD1140EDBCF92 -:1022300033F0150EDBCF34F0160EDBCF35F0170E72 -:10224000BFEF12F0FFD8010E1200FE0EDBCFE6FF4B -:102250001200D8DD20C02EF021C02FF022C030F0B7 -:1022600023C031F067EC25F022EF0EF07EDD040E86 -:10227000E12697EF0FF0DECFE6FFDDCFE6FF12009D -:10228000FD0EDBCF2FF0FE0E1200FB0EDBCF2FF08A -:10229000FC0E1200F70EDBCFE6FFF80EDBCFE6FFF9 -:1022A000F90EDBCFE6FFFA0EDBCFE6FF1200EA6E97 -:1022B000EE500026EE500122EE500222EE50032294 -:1022C0008BEF0EF0E66E5CEC08F0DEDE43D952D503 -:1022D000DECF2DF0DECF2EF0DECF2FF0DDCF30F0D1 -:1022E000DD52DD521200D4EC25F02FC000F030C0DA -:1022F00001F02FC0E6FF30C0E6FF1200D950380FC2 -:102300004DDDBAEF0FF0DBCF36F067EF25F047EC8D -:1023100006F0E552020EF3CFDBFF030EF4CFDBFF36 -:102320001200EECFE6FFEECFE6FFEECFE6FFEFCFF7 -:10233000E6FF1200010EB9DC0101010E556F566B6C -:1023400019D5000EDFCF2FF0010E2FEF12F02FEF77 -:1023500012F0E96EFF0EDA20EA6E1200DBCF2FF0EA -:10236000030E2FEF12F0E66EE66A020EE66E6CEFD9 -:102370000FF0FBDC5CDC22EF0EF000DE67EC25F0FA -:1023800043EF0EF003C02FF004C030F005C031F071 -:1023900012006DDC81DC7DEF24F0E7DCFE0EDB500B -:1023A0001200E66EE66A40EF0EF0E66E33EC32F0B5 -:1023B000E552120081DC8BEF0EF077DC7FEF0EF040 -:1023C00062DCF5EF0EF0DADD14EF25F0800E066E1C -:1023D0003F0E076E4EDE04C0E6FF05C0E6FF06C0F6 -:1023E000E6FF07C0E6FF0CC0E6FF0DC0E6FF0EC02B -:1023F000E6FFE66E83DFE552E7CF0FF0E552E7CF69 -:102400000EF0E552E7CF0DF0E552E7CF0CF0E552C4 -:10241000E7CF07F0E552E7CF06F0E552E7CF05F04A -:10242000E552E7CF04F02DC010F02EC011F02FC000 -:1024300012F030C013F08EDDB6DC67EC25F044DE20 -:10244000DBEF12F02DC0E6FFF3EF12F0330E336E28 -:10245000E20E346EC20E356E420E366E1200DBCFC7 -:1024600030F04FEF24F02EC004F02FC005F030C044 -:1024700006F031C007F012002EC00CF02FC00DF096 -:1024800030C00EF031C00FF037EF0EF0BD0E336EDE -:10249000370E346E860E356E410E366EB1D82DC0B5 -:1024A0000CF02EC00DF02FC00EF030C00FF0120057 -:1024B0002EC014F02FC015F030C016F031C017F048 -:1024C00012008BDC0C0EDBCF0EF00D0EDBCF0FF00D -:1024D0000E0EDBCF10F00F0E1BDEE0EF10F04CEC19 -:1024E0000EF067EF25F008C02EF009C02FF00AC0EB -:1024F00030F00BC031F012002EC010F02FC011F0E0 -:1025000030C012F031C013F01200060EDBCFE6FF30 -:10251000070E79DE040EDBCFE6FF050E03EF11F0A8 -:1025200014DC51DF4DDF69D87DEF24F037EC0EF07D -:1025300071EC0EF067EF25F0020EDBCFE6FF030E25 -:1025400062DE3BEF11F01ADC2FC0DEFF30C0DDFF92 -:10255000E0EF10F0020EE66E32EC09F0E5521200E8 -:10256000F70EDBCF2FF0F80E1200FC0EDBCFE6FFEC -:10257000FD0E03EF11F088DC7EDE44EF0FF0DBCFC1 -:1025800036F014EC25F043EF0EF0BDDE9DDDC9EF13 -:1025900011F0020EDBCFE6FF030EDBCFE6FF1200E9 -:1025A000E552E552E5521200F90EDBCF2FF0FA0E9C -:1025B00056DF64EF10F037EC0EF071EC0EF014EC17 -:1025C00025F043EF0EF010C02EF011C02FF012C016 -:1025D00030F013C031F07EEC24F03CEF12F0C0DF9D -:1025E0003EDF64EF10F02EC0E6FF2FC0E6FF30C0E4 -:1025F000E6FF120045DE2FEF12F027DCF1EF10F0BE -:0826000067EC25F003EF26F062 -:08260800DACFE4FFE2CFDAFFB4 -:10261000E9CFE4FFEACFE4FFF6CFE4FFF7CFE4FF32 -:10262000F5CFE4FFF3CFE4FFF4CFE4FFFACFE4FF0C -:1026300000EE29F0140EE80403E3EECFE4FFFBD72D -:1026400000EE00F0290EE80403E3EECFE4FFFBD731 -:102650007FEC1EF09EA013D089EC1EF001014D2BE3 -:10266000000E4E23E80E4D5D030E4E5905E34D6BF3 -:102670004E6B4F2B000E5023FAEC2BF09E90F2A0E5 -:1026800003D02EEC04F0F29092EC1EF002E2E16A2C -:10269000E552E16EE552E7CFD9FFE55200EE28F0B2 -:1026A000290EE80403E3E5CFEDFFFBD700EE3CF095 -:1026B000140EE80403E3E5CFEDFFFBD7E5CFFAFF07 -:1026C000E5CFF4FFE5CFF3FFE5CFF5FFE5CFF7FF6B -:1026D000E5CFF6FFE5CFEAFFE5CFE9FFE5CFDAFF8B -:1026E0001100D8CFE4FFE0CFE4FFE46EDACFE4FFDF -:1026F000E2CFDAFFF3CFE4FFF4CFE4FF7FEC1EF08C -:1027000092EC1EF002E2E16AE552E16EE552E7CF9B -:10271000D9FFE552E5CFF4FFE5CFF3FFE5CFDAFFD0 -:10272000E550E5CFE0FFE5CFD8FF100004D8DDECA1 -:102730001EF063D8FCD70F0EC11202D8A7EF1EF00F -:10274000A2EC1EF0E65256EC1EF00101696F070E76 -:10275000695D10E1E66A33EC32F0E552DF6E000E9F -:10276000DF809AEC1EF0E66A14EC33F0E552DF707D -:102770009AEC1EF01C0E9316D08EF28EF28CF2861E -:10278000F30E8C1695160101476B486B496B4A6B2B -:10279000010E4B6F92948094939881980D0EE66E83 -:1027A0007C0EE66EE10EE66EA6EC31F0E552E552E7 -:1027B000E552C70E921694943F0E9516010EE66EE2 -:1027C00095EC04F0E552838C808A82848088838E25 -:1027D00080868294010EE66E4FEC33F0E5528284DF -:1027E0009D80C50EE66EA4EC32F0E55289EC1EF039 -:1027F000E552E552E7CFD9FF1200D9CFE6FFE1CF8E -:10280000D9FF0F0EE12601014B5102E09BEC1DF0B8 -:10281000200E0101005D03E36D50020B12E014EC89 -:102820000EF000090CE0E66A010EE66E020EE66E9E -:1028300059EC09F0E552E552E55210EC0EF091EF3B -:102840001DF0010149514A1102E1000E08D049C1B1 -:10285000E9FF4AC1EAFFEF50800B01E0010E0009D9 -:1028600047E101014651EA6A260FE96E010EEA22AC -:10287000EF5000083DE20501406B01014C514C2B2B -:102880000501416F0501040E426F01014651EA6ADC -:10289000260FE96E010EEA22EFCF43F5400EE66EF9 -:1028A000400EE66E050EE66E010EE66E010EE66E59 -:1028B000F8EC22F0006E050EE15E0050F3CF49F116 -:1028C000F4CF4AF101014651EA6A260FE96E010E82 -:1028D000EA22EF6A01014651000803E201014607BE -:1028E00007D001014551000803E201011F0E466FA8 -:1028F000010149514A1102E1000E08D049C1E9FF26 -:102900004AC1EAFFEF50800B01E0010E00092BE104 -:1029100014EC0EF0000927E00AEC0EF0000923E0A9 -:102920000501406B01014C514C2B0501416F050124 -:102930000A0E426F0501436B0501010E486F400E00 -:10294000E66E400EE66E050EE66E010EE66E010EB8 -:10295000E66EF8EC22F0006E050EE15E0050F3CF5B -:1029600049F1F4CF4AF101015151020A10E0030A82 -:1029700001E021D0020EE66E46EC2DF0E552D6ECD9 -:1029800007F0000903E00101020E516F16D0200E7E -:10299000E66E030EE66EC80EE66EE66AE80EE66EBA -:1029A000030EE66E47EC0AF0006E060EE15E005084 -:1029B0000101516B02D00101516B010147514811D6 -:1029C00002E1000E08D047C1E9FF48C1EAFFEF501D -:1029D000800B01E0010E000902E091EF1DF00501FE -:1029E0000251070A02E1F2EF1CF00D0A01E166D282 -:1029F000010A01E126D20D0A01E1BED1040A1AE062 -:102A0000030A07E0010A02E050EF1DF0FF0091EF1A -:102A10001DF0E66A33EC32F0E552DF6E000EDB802B -:102A2000DFCFE6FFE66A13EC32F0E552E552FF0035 -:102A300091EF1DF0010149514A1102E1000E08D049 -:102A400049C1E9FF4AC1EAFFEF50800B01E0010EE6 -:102A5000000901E08FD100C540F50501416B05017A -:102A6000030E426F0501436B05010851100A01E195 -:102A700035D11F0A01E1F8D0080A01E1BBD0010AF3 -:102A800001E17ED0020A71E0070A64E0010A20E059 -:102A9000030A06E0010A01E043D169C148F543D1C8 -:102AA0000501486B230E006E650E016E026A00C0C0 -:102AB000E6FF01C0E6FF02C0E6FF480EE66E050E27 -:102AC000E66EF7EC31F0036E050EE15E03502BD19C -:102AD0000501486B170E006E650E016E026A00C09C -:102AE000E6FF01C0E6FF02C0E6FF480EE66E050EF7 -:102AF000E66EF7EC31F0036E050EE15E0350150E45 -:102B0000006E650E016E026A00C0E6FF01C0E6FFBE -:102B100002C0E6FF480EE66E050EE66EF7EC31F0F9 -:102B2000036E050EE15E03500C0E006E650E016E25 -:102B3000026A00C0E6FF01C0E6FF02C0E6FF480EE1 -:102B4000E66E050EE66EF7EC31F0036E050EE15E03 -:102B50000350E9D092CF48F593CF49F594CF4AF589 -:102B600095CF4BF596CF4CF5DED080CF48F581CF91 -:102B700049F582CF4AF583CF4B... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-13 17:29:54
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 6795c8d0a9e01b24e1762dd433acc9c48591d393 (commit) from 1df5dc2b427b81fa86804859729ac50f2bcc4377 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 6795c8d0a9e01b24e1762dd433acc9c48591d393 Author: Olivier BICHLER <oli...@gm...> Date: Sat Mar 13 18:29:08 2010 +0100 Pack de modifs sur Motor Controller : - Correction d'un bug dans resetInterrupt (on resettait toutes les interruptions sauf celle désirée !) - Ajout de plusieurs variables d'état sur la trajectoire, qui remplacent la variable traj_engaged du fichier main.c (cela devrait diminuer le risque d'entrer dans un état incohérent suite à un problème) - Ajout de la gestion de breakpoints, avec la fonction setBreakpoint(), avec possibilité de charger une trajectoire et de l'exécuter au moment du breakpoint - Ajout des fonctions getDesiredPosition() et getDesiredVelocity() - La fonction getRelPos() remplace les fonctions getRelPosRight() et getRelPosLeft() (pour deux fonctions alors que toutes les autres ont un paramètre axis ?) et tient compte des coefficients relatifs à la connexion des moteurs - Ajout d'une fonction isTrajEngaged() pour connaitre l'état de la trajectoire - Corrections mineures dans la documentation : arguments annoncées sur 16 bits alors qu'ils sont sur 32 bits en réalité + ajout des valeurs de retour pour les fonctions get...() - Utilisation de la fonction getRealPosition() dans la fonction start() au lieu des commandes de bas niveau - La fonction checkLM629Interrupt() ne lit qu'une seule fois l'état de chaque LM pour de meilleures performances ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index 9f52c7c..800bf09 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -8,23 +8,56 @@ #include "lm629.h" -volatile DWORD_VAL posRight = 0; -volatile DWORD_VAL posLeft = 0; +volatile BOOL trajLoaded = 0; +volatile BOOL trajEngaged = 0; +volatile BOOL trajCompleted = 0; + +volatile DWORD posRight = 0; +volatile DWORD posLeft = 0; void checkLM629Interrupt(void) { // Ne jamais oublier de resetter l'interruption correspondante sous peine de flooder l'USB dans le cas de la mode LM_POLLING // et de ne pas dcter les interruptions suivantes dans le cas de la mode LM_INTERRUPT ! // Toutes les interruptions non masqu doivent e traitici dans le cas de la mode LM_INTERRUPT. + BYTE statusRight = readStatus(MOTOR_RIGHT); + BYTE statusLeft = readStatus(MOTOR_LEFT); - if (readStatusBit(MOTOR_RIGHT, LM_COMMAND_ERROR) || readStatusBit(MOTOR_LEFT, LM_COMMAND_ERROR)) { + // Bit 1: Command-Error Interrupt + if ((statusRight & LM_COMMAND_ERROR) || (statusLeft & LM_COMMAND_ERROR)) { error(ERR_LM_COMMAND_ERROR); resetInterrupt(MOTOR_BOTH, LM_COMMAND_ERROR); } - if (readStatusBit(MOTOR_RIGHT, LM_POSITION_ERROR) || readStatusBit(MOTOR_LEFT, LM_POSITION_ERROR)) { + // Bit 2: Trajectory-Complete Interrupt + if ((statusRight & LM_TRAJECTORY_COMPLETE) && (statusLeft & LM_TRAJECTORY_COMPLETE)) { + trajCompleted = 1; + resetInterrupt(MOTOR_BOTH, LM_TRAJECTORY_COMPLETE); + } + + // Bit 3: Index-Pulse Interrupt -- Not implemented + + // Bit 4: Wrap-Around Interrupt -- Not implemented + + // Bit 5: Position-Error Interrupt + if ((statusRight & LM_POSITION_ERROR) || (statusLeft & LM_POSITION_ERROR)) { error(ERR_LM_POSITION_ERROR); resetInterrupt(MOTOR_BOTH, LM_POSITION_ERROR); } + + // Bit 6: Breakpoint Interrupt + if (statusRight & LM_BREAKPOINT) { + if (trajLoaded) + start(MOTOR_RIGHT); + + resetInterrupt(MOTOR_RIGHT, LM_BREAKPOINT); + } + + if (statusLeft & LM_BREAKPOINT) { + if (trajLoaded) + start(MOTOR_LEFT); + + resetInterrupt(MOTOR_LEFT, LM_BREAKPOINT); + } } /** @@ -330,10 +363,11 @@ BOOL readStatusBit(char axis, BYTE type) { * #MOTOR_RIGHT le moteur de droite uniquement @n * #MOTOR_LEFT le moteur de gauche uniquement @n * #MOTOR_BOTH les 2 moteurs + * @param type type d'interruption esetter */ void resetInterrupt(char axis, WORD type) { writeCommand(axis, LM_CMD_RSTI); - writeDataWord(axis, type); + writeDataWord(axis, ~type); } /** @@ -387,7 +421,7 @@ initLM_RESET: writeCommand(axis, LM_CMD_MSKI); #if defined(LM_INTERRUPT) - writeDataWord(axis, LM_COMMAND_ERROR | LM_POSITION_ERROR); + writeDataWord(axis, LM_COMMAND_ERROR | LM_TRAJECTORY_COMPLETE | LM_POSITION_ERROR | LM_BREAKPOINT); #else writeDataWord(axis, 0); #endif @@ -415,6 +449,10 @@ initLM_RESET: // Srit writeCommand(axis, LM_CMD_LPES); writeDataWord(axis, LM_PES_LIMIT); + + trajLoaded = 0; + trajEngaged = 0; + trajCompleted = 0; } /** @@ -469,9 +507,9 @@ BOOL initLMs(void) { * #MOTOR_LEFT le moteur de gauche uniquement @n * #MOTOR_BOTH les 2 moteurs * - * @param pos position tteindre, sur 16 bits - * @param vel vitesse max., sur 16 bits - * @param acc accration, sur 16 bits @n + * @param pos position tteindre, sur 32 bits + * @param vel vitesse max., sur 32 bits + * @param acc accration, sur 32 bits @n * /!\ uniquement si l'on part d'une position 'arr * l'accration ne peut pas e changen court de trajectoire */ @@ -511,6 +549,8 @@ void newPosition(char axis, DWORD pos, DWORD vel, DWORD acc) { writeDataWord(MOTOR_RIGHT, posData.word.LW); } } + + trajLoaded = 1; } /** @@ -521,8 +561,8 @@ void newPosition(char axis, DWORD pos, DWORD vel, DWORD acc) { * #MOTOR_LEFT le moteur de gauche uniquement @n * #MOTOR_BOTH les 2 moteurs * - * @param vel vitesse, sur 16 bits - * @param acc accration, sur 16 bits @n + * @param vel vitesse, sur 32 bits + * @param acc accration, sur 32 bits @n * /!\ uniquement si l'on part d'une position 'arr * l'accration ne peut pas e changen court de trajectoire * @@ -569,6 +609,8 @@ void newVelocity(char axis, DWORD vel, DWORD acc, char dir) { writeDataWord(axis, velData.word.HW); writeDataWord(axis, velData.word.LW); + + trajLoaded = 1; } /** @@ -579,7 +621,7 @@ void newVelocity(char axis, DWORD vel, DWORD acc, char dir) { * #MOTOR_LEFT le moteur de gauche uniquement @n * #MOTOR_BOTH les 2 moteurs * - * @param vel vitesse, sur 16 bits + * @param vel vitesse, sur 32 bits * @param dir sens de rotation, peut valoir : @n * 1 avance @n * -1 recule @@ -597,19 +639,17 @@ void changeVelocity(char axis, DWORD vel, char dir) { * #MOTOR_BOTH les 2 moteurs */ void start(char axis) { - if (axis == MOTOR_RIGHT || axis == MOTOR_BOTH) { - writeCommand(MOTOR_RIGHT, LM_CMD_RDRP); - posRight.word.HW = readDataWord(MOTOR_RIGHT); - posRight.word.LW = readDataWord(MOTOR_RIGHT); - } + if (axis == MOTOR_RIGHT || axis == MOTOR_BOTH) + posRight = getRealPosition(MOTOR_RIGHT); - if (axis == MOTOR_LEFT || axis == MOTOR_BOTH) { - writeCommand(MOTOR_LEFT, LM_CMD_RDRP); - posLeft.word.HW = readDataWord(MOTOR_LEFT); - posLeft.word.LW = readDataWord(MOTOR_LEFT); - } + if (axis == MOTOR_LEFT || axis == MOTOR_BOTH) + posLeft = getRealPosition(MOTOR_LEFT); + + trajLoaded = 0; writeCommand(axis, LM_CMD_STT); + trajEngaged = 1; + trajCompleted = 0; } /** @@ -628,7 +668,72 @@ void start(char axis) { void stop(char axis, WORD type) { writeCommand(axis, LM_CMD_LTRJ); writeDataWord(axis, type); + writeCommand(axis, LM_CMD_STT); + trajEngaged = 1; + trajCompleted = 0; +} + +/** + * Ajoute un breakpoint pour l'enchainement de trajectoires. + * + * @param axis l'axe moteur correspondant au LM rrer, peut valoir : @n + * #MOTOR_RIGHT le moteur de droite uniquement @n + * #MOTOR_LEFT le moteur de gauche uniquement @n + * #MOTOR_BOTH les 2 moteurs + * @param pos la position du breakpoint, depuis le dt de la trajectoire (rel = 0) + * ou par rapport a position finale dr(rel = 1), sur 16 bits + * @param rel indique si la position du breakpoint est exprimen valeur relative (rel = 1) ou absolue (rel = 0) +*/ +void setBreakpoint(char axis, DWORD pos, BOOL rel) { + DWORD_VAL posData; + + if (rel) { + posData.Val = pos; + writeCommand(axis, LM_CMD_SBPR); + writeDataWord(axis, posData.word.HW); + writeDataWord(axis, posData.word.LW); + } + else { + writeCommand(axis, LM_CMD_SBPA); + + if (axis == MOTOR_BOTH || axis == MOTOR_LEFT) { + posData.Val = posLeft + CON_MOTOR_LEFT * pos; + writeDataWord(MOTOR_LEFT, posData.word.HW); + writeDataWord(MOTOR_LEFT, posData.word.LW); + } + + if (axis == MOTOR_BOTH || axis == MOTOR_RIGHT) { + posData.Val = posRight + CON_MOTOR_RIGHT * pos; + writeDataWord(MOTOR_RIGHT, posData.word.HW); + writeDataWord(MOTOR_RIGHT, posData.word.LW); + } + } +} + +/** + * Rp la position dr(la consigne) des moteurs drminpar les LMs. + * Attention : cela ne correspond pas a position finale tteindre, mais bien + * a consigne 'instant prnt en entrde la boucle d'asservissement. + * + * @param axis l'axe moteur correspondant au LM, peut valoir : @n + * #MOTOR_RIGHT le moteur de droite uniquement @n + * #MOTOR_LEFT le moteur de gauche uniquement @n + * (spfier les #MOTOR_BOTH est bien demment impossible) + * + * @return DWORD la position de consigne, sur 32 bits +*/ +DWORD getDesiredPosition(char axis) { + DWORD_VAL posData; + + if (axis == MOTOR_BOTH) + return 0; + else { + writeCommand(axis, LM_CMD_RDDP); + posData.word.HW = readDataWord(axis); + posData.word.LW = readDataWord(axis); + return posData.Val; + } } /** @@ -638,6 +743,8 @@ void stop(char axis, WORD type) { * #MOTOR_RIGHT le moteur de droite uniquement @n * #MOTOR_LEFT le moteur de gauche uniquement @n * (spfier les #MOTOR_BOTH est bien demment impossible) + * + * @return DWORD la position rle, sur 32 bits */ DWORD getRealPosition(char axis) { DWORD_VAL posData; @@ -653,12 +760,39 @@ DWORD getRealPosition(char axis) { } /** + * Rp la vitesse dr(la consigne) des moteurs drminpar les LMs. + * Attention : cela ne correspond pas a vitesse finale tteindre, mais bien + * a consigne 'instant prnt en entrde la boucle d'asservissement. + * + * @param axis l'axe moteur correspondant au LM, peut valoir : @n + * #MOTOR_RIGHT le moteur de droite uniquement @n + * #MOTOR_LEFT le moteur de gauche uniquement @n + * (spfier les #MOTOR_BOTH est bien demment impossible) + * + * @return DWORD la vitesse de consigne, sur 32 bits +*/ +DWORD getDesiredVelocity(char axis) { + DWORD_VAL velData; + + if (axis == MOTOR_BOTH) + return 0; + else { + writeCommand(axis, LM_CMD_RDDV); + velData.word.HW = readDataWord(axis); + velData.word.LW = readDataWord(axis); + return velData.Val; + } +} + +/** * Rp la vitesse vtable des moteurs drminpar les LMs. * * @param axis l'axe moteur correspondant au LM, peut valoir : @n * #MOTOR_RIGHT le moteur de droite uniquement @n * #MOTOR_LEFT le moteur de gauche uniquement @n * (spfier les #MOTOR_BOTH est bien demment impossible) + * + * @return DWORD la vitesse rle, sur 32 bits */ DWORD getRealVelocity(char axis) { DWORD_VAL velData; @@ -680,6 +814,8 @@ DWORD getRealVelocity(char axis) { * #MOTOR_RIGHT le moteur de droite uniquement @n * #MOTOR_LEFT le moteur de gauche uniquement @n * (spfier les #MOTOR_BOTH est bien demment impossible) + * + * @return WORD la valeur de l'intation, sur 16 bits */ WORD getIntegrationSum(char axis) { if (axis == MOTOR_BOTH) @@ -691,6 +827,25 @@ WORD getIntegrationSum(char axis) { } /** + * Rp la valeur de la distance actuelle relativement au dt de la trajectoire. + * + * @param axis l'axe moteur correspondant au LM, peut valoir : @n + * #MOTOR_RIGHT le moteur de droite uniquement @n + * #MOTOR_LEFT le moteur de gauche uniquement @n + * (spfier les #MOTOR_BOTH est bien demment impossible) + * + * @return short la distance parcourue, en mm, sur 16 bits +*/ +short getRelPos(char axis) { + if (axis == MOTOR_RIGHT) + return ((float) ((long) getRealPosition(MOTOR_RIGHT) - (long) posRight) / (float) COEF_RIGHT_WHEEL * CON_MOTOR_RIGHT); + else if (axis == MOTOR_LEFT) + return ((float) ((long) getRealPosition(MOTOR_LEFT) - (long) posLeft) / (float) COEF_LEFT_WHEEL * CON_MOTOR_LEFT); + else + return 0; +} + +/** * Avance. * * @param pos position tteindre, en mm, sur 16 bits @@ -698,7 +853,6 @@ WORD getIntegrationSum(char axis) { * @param acc accration, en mm/s, sur 16 bits */ void moveForward(short pos, short vel, short acc) { - resetAllInterrupt(MOTOR_BOTH); newPosition(MOTOR_BOTH, (long) ((float) pos * COEF_RIGHT_WHEEL), (long) ((float) vel * COEF_RIGHT_WHEEL * CONST_VEL), @@ -714,7 +868,6 @@ void moveForward(short pos, short vel, short acc) { * @param acc accration, en mm/s, sur 16 bits */ void moveBackward(short pos, short vel, short acc) { - resetAllInterrupt(MOTOR_BOTH); newPosition(MOTOR_BOTH, - (long) ((float) pos * COEF_RIGHT_WHEEL), (long) ((float) vel * COEF_RIGHT_WHEEL * CONST_VEL), @@ -730,7 +883,6 @@ void moveBackward(short pos, short vel, short acc) { * @param acc accration, en mm/s, sur 16 bits */ void turnRight(short angle, short vel, short acc) { - resetAllInterrupt(MOTOR_BOTH); newPosition(MOTOR_RIGHT, - (long) ((float) angle * CONST_POS * WHEELS_DIST * COEF_RIGHT_WHEEL), (long) ((float) vel * COEF_RIGHT_WHEEL * CONST_VEL), @@ -750,7 +902,6 @@ void turnRight(short angle, short vel, short acc) { * @param acc accration, en mm/s, sur 16 bits */ void turnLeft(short angle, short vel, short acc) { - resetAllInterrupt(MOTOR_BOTH); newPosition(MOTOR_RIGHT, (long) ((float) angle * CONST_POS * WHEELS_DIST * COEF_RIGHT_WHEEL), (long) ((float) vel * COEF_RIGHT_WHEEL * CONST_VEL), @@ -770,7 +921,7 @@ void turnLeft(short angle, short vel, short acc) { * @param vel vitesse max., en mm/s, sur 16 bits * @param acc accration, en mm/s, sur 16 bits * @param c position du centre de rotation par rapport au milieu de l'axe des roues, en mm ou en %, sur 16 bits - * @param rel indique si c est exprimn mm (relative = 0) ou en % de la distance du milieu a roue, #WHEELS_DIST/2 (relative = 1) + * @param rel indique si c est exprimn mm (rel = 0) ou en % de la distance du milieu a roue, #WHEELS_DIST/2 (rel = 1) * * -100 0 100 * relative = 1: ||--------.--------|| @@ -797,8 +948,6 @@ void turn(short angle, short vel, short acc, short c, BOOL rel) { acc1 = (2.0 * d1d2 * (float) acc) / (1.0 + d1d2); acc2 = 2.0 * (float) acc - acc1; - resetAllInterrupt(MOTOR_BOTH); - newPosition(MOTOR_RIGHT, (long) (d1 * CONST_POS * COEF_RIGHT_WHEEL), (long) (vel1 * COEF_RIGHT_WHEEL * CONST_VEL), @@ -845,8 +994,6 @@ void goTo(short x, short y, short vel, short acc, BYTE mode, short d) { a = (((float) x)*((float) x) + ((float) y)*((float) y))/4.0; angle1 = atan2((float)y, (float)x); - resetAllInterrupt(MOTOR_BOTH); - if (mode == GOTO_STRAIGHT || d == 0) { turnRight(90.0 - angle1*180.0/PI, vel, acc); waitTrajComplete(); @@ -915,14 +1062,6 @@ void goTo(short x, short y, short vel, short acc, BYTE mode, short d) { } } -WORD getRelPosRight() { - return ((float) ((long) getRealPosition(MOTOR_RIGHT) - (long) posRight.Val) / (float) COEF_RIGHT_WHEEL); -} - -WORD getRelPosLeft() { - return ((float) ((long) getRealPosition(MOTOR_LEFT) - (long) posLeft.Val) / (float) COEF_LEFT_WHEEL); -} - /** * Indique si la derni trajectoire est termin * Attention : cette fonction renvoie 1 dque la trajectoire programm @@ -938,8 +1077,12 @@ WORD getRelPosLeft() { BOOL isTrajComplete(void) { // Delay10KTCYx(12); // attends 120000 cycles, 8 MHz / 4 = 10 ms - return (readStatusBit(MOTOR_RIGHT, LM_TRAJECTORY_COMPLETE) - && readStatusBit(MOTOR_LEFT, LM_TRAJECTORY_COMPLETE)); + if (trajCompleted) { + trajEngaged = 0; + return TRUE; + } + else + return FALSE; } /** @@ -954,4 +1097,15 @@ void waitTrajComplete(void) { while (!isTrajComplete()); } +/** + * Indique si une trajectoire est en cours. + * Si une trajectoire en cours est terminle rltat de cette fonction sera maintenu RUE + * jusqu'e qu'une des fonctions isTrajComplete() ou waitTrajComplete() soit appel + * + * @return done renvoie #TRUE en si une trajectoire est en cours et #FALSE sinon +*/ +BOOL isTrajEngaged(void) { + return trajEngaged; +} + #endif diff --git a/USB_Module/Motor_Controller/Firmware/lm629.h b/USB_Module/Motor_Controller/Firmware/lm629.h index 341794a..85aeba3 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.h +++ b/USB_Module/Motor_Controller/Firmware/lm629.h @@ -223,9 +223,12 @@ void resetAllInterrupt(char axis); void initLM(char axis, WORD kp, WORD ki, WORD kd, WORD il); // Fonctions de rptions des grandeurs actuelles +DWORD getDesiredPosition(char axis); DWORD getRealPosition(char axis); +DWORD getDesiredVelocity(char axis); DWORD getRealVelocity(char axis); WORD getIntegrationSum(char axis); +short getRelPos(char axis); // Fonctions de gration des trajectoires void newPosition(char axis, DWORD pos, DWORD vel, DWORD acc); @@ -233,6 +236,7 @@ void newVelocity(char axis, DWORD vel, DWORD acc, char dir); void changeVelocity(char axis, DWORD vel, char dir); void start(char axis); void stop(char axis, WORD type); +void setBreakpoint(char axis, DWORD pos, BOOL rel); // Fonctions de haut niveau BOOL initLMs(void); @@ -242,9 +246,8 @@ void turnRight(short angle, short vel, short acc); void turnLeft(short angle, short vel, short acc); void turn(short angle, short vel, short acc, short c, BOOL rel); void goTo(short x, short y, short vel, short acc, BYTE mode, short d); -WORD getRelPosRight(void); -WORD getRelPosLeft(void); BOOL isTrajComplete(void); void waitTrajComplete(void); +BOOL isTrajEngaged(void); #endif diff --git a/USB_Module/Motor_Controller/Firmware/main.c b/USB_Module/Motor_Controller/Firmware/main.c index 65ec694..bc5d400 100644 --- a/USB_Module/Motor_Controller/Firmware/main.c +++ b/USB_Module/Motor_Controller/Firmware/main.c @@ -574,7 +574,6 @@ void UserInit(void) void ProcessIO(void) { BYTE eeprom; static char state = 0; - static char traj_engaged = 0; DWORD_VAL dword; WORD_VAL word1, word2, word3, word4, word5; @@ -586,10 +585,9 @@ void ProcessIO(void) { // User Application USB tasks if((USBDeviceState < CONFIGURED_STATE)||(USBSuspendControl==1)) { // Mesure de srit ce n'est pas normal de perdre la liaison USB au milieu d'une trajectoire - if (traj_engaged) { + if (isTrajEngaged()) { stop(MOTOR_BOTH, TRAJ_STOP_MOTOR_OFF); waitTrajComplete(); - traj_engaged = 0; } return; @@ -614,7 +612,7 @@ void ProcessIO(void) { errno = 31; } - if (!HIDTxHandleBusy(USBInHandle) && traj_engaged == 1) { + if (!HIDTxHandleBusy(USBInHandle) && isTrajEngaged()) { if (isTrajComplete()) { ToSendDataBuffer.HSEQ = 0; // Num sence PC ToSendDataBuffer.DSEQ = (UPClientSeq++); // Num sence PIC @@ -622,8 +620,6 @@ void ProcessIO(void) { ToSendDataBuffer.ERR = 0; // Pas Erreur ToSendDataBuffer.DATA[0] = TRAJ_COMPLETED; // On indique que c'est fini USBInHandle = HIDTxPacket(HID_EP, (BYTE*) &ToSendDataBuffer, 64); - - traj_engaged = 0; } } @@ -854,10 +850,9 @@ void ProcessIO(void) { disableMotor(ReceivedDataBuffer.DATA[1]); // Mesure de srit ce n'est pas normal que l'on dctive les moteurs au milieu d'une trajectoire - if (traj_engaged) { + if (isTrajEngaged()) { stop(MOTOR_BOTH, TRAJ_STOP_MOTOR_OFF); waitTrajComplete(); - traj_engaged = 0; } break; @@ -979,7 +974,6 @@ void ProcessIO(void) { word3.byte.HB = ReceivedDataBuffer.DATA[5]; word3.byte.LB = ReceivedDataBuffer.DATA[6]; moveForward(word1.Val, word2.Val, word3.Val); - traj_engaged = 1; break; case TRAJ_BACKWARD: @@ -990,7 +984,6 @@ void ProcessIO(void) { word3.byte.HB = ReceivedDataBuffer.DATA[5]; word3.byte.LB = ReceivedDataBuffer.DATA[6]; moveBackward(word1.Val, word2.Val, word3.Val); - traj_engaged = 1; break; case TRAJ_TR: @@ -1001,7 +994,6 @@ void ProcessIO(void) { word3.byte.HB = ReceivedDataBuffer.DATA[5]; word3.byte.LB = ReceivedDataBuffer.DATA[6]; turnRight(word1.Val, word2.Val, word3.Val); - traj_engaged = 1; break; case TRAJ_TL: @@ -1012,7 +1004,6 @@ void ProcessIO(void) { word3.byte.HB = ReceivedDataBuffer.DATA[5]; word3.byte.LB = ReceivedDataBuffer.DATA[6]; turnLeft(word1.Val, word2.Val, word3.Val); - traj_engaged = 1; break; case TRAJ_TURN: @@ -1025,7 +1016,6 @@ void ProcessIO(void) { word4.byte.HB = ReceivedDataBuffer.DATA[7]; word4.byte.LB = ReceivedDataBuffer.DATA[8]; turn(word1.Val, word2.Val, word3.Val, word4.Val, ReceivedDataBuffer.DATA[9]); - traj_engaged = 1; break; case TRAJ_GOTO: @@ -1040,7 +1030,6 @@ void ProcessIO(void) { word5.byte.HB = ReceivedDataBuffer.DATA[10]; word5.byte.LB = ReceivedDataBuffer.DATA[11]; goTo(word1.Val, word2.Val, word3.Val, word4.Val, ReceivedDataBuffer.DATA[9], word5.Val); - traj_engaged = 1; break; case TRAJ_STOP: @@ -1058,7 +1047,6 @@ void ProcessIO(void) { word3.byte.HB = ReceivedDataBuffer.DATA[6]; word3.byte.LB = ReceivedDataBuffer.DATA[7]; - resetAllInterrupt(ReceivedDataBuffer.DATA[1]); newPosition(ReceivedDataBuffer.DATA[1], (long) ((float) word1.Val * COEF_WHEEL), (long) ((float) word2.Val * COEF_WHEEL * CONST_VEL), @@ -1071,7 +1059,6 @@ void ProcessIO(void) { word2.byte.HB = ReceivedDataBuffer.DATA[4]; word2.byte.LB = ReceivedDataBuffer.DATA[5]; - resetAllInterrupt(ReceivedDataBuffer.DATA[1]); newVelocity(ReceivedDataBuffer.DATA[1], (long) ((float) word1.Val * COEF_WHEEL * CONST_VEL), (long) ((float) word2.Val * COEF_WHEEL * CONST_ACC), @@ -1082,7 +1069,6 @@ void ProcessIO(void) { word1.byte.HB = ReceivedDataBuffer.DATA[2]; word1.byte.LB = ReceivedDataBuffer.DATA[3]; - resetAllInterrupt(ReceivedDataBuffer.DATA[1]); changeVelocity(ReceivedDataBuffer.DATA[1], (long) ((float) word1.Val * COEF_WHEEL * CONST_VEL), ReceivedDataBuffer.DATA[4]); @@ -1090,20 +1076,19 @@ void ProcessIO(void) { case TRAJ_START: start(ReceivedDataBuffer.DATA[1]); - traj_engaged = 1; break; case TRAJ_GET_REL_POS: - word1.Val = getRelPosRight(); - word2.Val = getRelPosLeft(); - ToSendDataBuffer.HSEQ = ReceivedDataBuffer.HSEQ; // Num sence PC ToSendDataBuffer.DSEQ = 0; // Num sence PIC ToSendDataBuffer.CMD = CMD_RESPOND; // Type requ ToSendDataBuffer.ERR = 0; // Erreur + word1.Val = getRelPos(MOTOR_RIGHT); ToSendDataBuffer.DATA[0] = word1.byte.HB; ToSendDataBuffer.DATA[1] = word1.byte.LB; + + word1.Val = getRelPos(MOTOR_LEFT); ToSendDataBuffer.DATA[2] = word2.byte.HB; ToSendDataBuffer.DATA[3] = word2.byte.LB; diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 442d6f5..e76d155 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 12343c1..91a16f9 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,1544 +1,1563 @@ :020000040000FA -:06000000A6EF32F0120031 +:0600000041EF33F0120095 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:06080000A6EF32F0120029 -:0608080046EF12F01200A1 -:06081800B3EF12F0120024 -:06082A000400DF65000080 -:100830002601000021000000D76500005F010000D4 -:1008400008000000C9650000470100000E0000001C -:0C085000C66500006A0100000300000003 -:04085C00020E11EC8B -:1008600011F004E1020EE6EC10F00BE00A0EE66E69 -:1008700046EC32F0E552020EE66EE66AE66E9CEC5D -:100880000FF0200E11EC11F004E1200EE6EC10F058 -:100890000CE00B0EE66E46EC32F0E552200EE66EF2 -:1008A000E66A020EE66E9CEC0FF0120027EC0EF0EA -:1008B000FE0EDB5006E1F80E96163C0E9416959847 -:1008C00008D0FE0EDB0405E1070E9612C30E94124B -:1008D00095882CEF0EF0D9CFE6FFE1CFD9FFE65295 -:1008E000010EE66EE3DFE5528098FE0EDB5004E079 -:1008F000FE0EDB5002080FE1839C808A0000839E7D -:100900000000000000008450010BDF6E838E0000A9 -:100910000000DF04F4E0FE0EDB0404E0FE0EDB501A -:1009200002080FE1838C809A0000839E0000000083 -:1009300000008450010BDF6E838E00000000DF0496 -:10094000F4E0E552E552E7CFD9FF1200D9CFE6FF38 -:10095000E1CFD9FFE652FD0EDB50DF6EFE0EDBCF9E -:10096000E6FFB9DFE552E66AA1DFE552FE0EDB5095 -:1009700003E1839C808A0CD0FE0EDB0403E1838CB0 -:10098000809A06D0FE0EDB50020802E1839C809A1A -:10099000809800008096D9CFE9FFDACFEAFFEF50C8 -:1009A000010B02E0848001D08490D9CFE9FFDACF37 -:1009B000EAFFEF50020B02E0848201D08492D9CF8B -:1009C000E9FFDACFEAFFEF50040B02E0848401D0A4 -:1009D0008494D9CFE9FFDACFEAFFEF50080B02E0A9 -:1009E000838801D08398D9CFE9FFDACFEAFFEF50AF -:1009F000100B02E0828201D08292D9CFE9FFDACFD8 -:100A0000EAFFEF50200B02E0828E01D0829ED9CF08 -:100A1000E9FFDACFEAFFEF50400B02E0828001D01D -:100A20008290D9CFE9FFDACFEAFFEF50800B02E0E6 -:100A3000828C01D0829C00000000808600000000B3 -:100A4000E552E552E7CFD9FF1200D9CFE6FFE1CF5B -:100A5000D9FF020EE126FC0EDBCFDEFFDBCFDDFF90 -:100A6000FE0EDBCFE6FF37DFE552E66A1FDFE55219 -:100A7000FE0EDB5003E1839C808A0CD0FE0EDB046B -:100A800003E1838C809A06D0FE0EDB50020802E15F -:100A9000839C809A808800008096D9CFE9FFDACFC6 -:100AA000EAFFEE52EF50010B02E0848001D0849007 -:100AB000D9CFE9FFDACFEAFFEE52EF50020B02E0A6 -:100AC000848201D08492D9CFE9FFDACFEAFFEE52D7 -:100AD000EF50040B02E0848401D08494D9CFE9FF65 -:100AE000DACFEAFFEE52EF50080B02E0838801D024 -:100AF0008398D9CFE9FFDACFEAFFEE52EF50100B1F -:100B000002E0828201D08292D9CFE9FFDACFEAFFF8 -:100B1000EE52EF50200B02E0828E01D0829ED9CFA0 -:100B2000E9FFDACFEAFFEE52EF50400B02E082809D -:100B300001D08290D9CFE9FFDACFEAFFEE52EF5031 -:100B4000800B02E0828C01D0829C00000000808635 -:100B5000000000008096D9CFE9FFDACFEAFFEF501E -:100B6000010B02E0848001D08490D9CFE9FFDACF75 -:100B7000EAFFEF50020B02E0848201D08492D9CFC9 -:100B8000E9FFDACFEAFFEF50040B02E0848401D0E2 -:100B90008494D9CFE9FFDACFEAFFEF50080B02E0E7 -:100BA000838801D08398D9CFE9FFDACFEAFFEF50ED -:100BB000100B02E0828201D08292D9CFE9FFDACF16 -:100BC000EAFFEF50200B02E0828E01D0829ED9CF47 -:100BD000E9FFDACFEAFFEF50400B02E0828001D05C -:100BE0008290D9CFE9FFDACFEAFFEF50800B02E025 -:100BF000828C01D0829C00000000808600000000F2 -:100C0000020EE15C02E2E16AE552E16EE552E7CFF5 -:100C1000D9FF1200D9CFE6FFE1CFD9FF020EE126BE -:100C2000FE0EDBCFE6FF57DEE552010EE66E3EDE3E -:100C3000E552FE0EDB5003E1839C808A05D0FE0E58 -:100C4000DB0402E1838C809A80880000839E000090 -:100C5000000000008450010B066E8450020B01E07E -:100C6000010EE824056E8450040B01E0010E040D12 -:100C7000F3CF04F08350100B01E0010E080DF3CF09 -:100C800003F08250020B01E0010E100DF3CF02F0D1 -:100C90008250800B01E0010E200DF3CF01F0825055 -:100CA000010B400DF3CF00F08250400B01E0010E2C -:100CB000800DF350001001100210031004100510F5 -:100CC0000610E76E010EE7CFDBFF838E0000000009 -:100CD000839E0000000000008450010B066E8450CB -:100CE000020B01E0010EE824056E8450040B01E0C4 -:100CF000010E040DF3CF04F08350100B01E0010E40 -:100D0000080DF3CF03F08250020B01E0010E100D2D -:100D1000F3CF02F08250800B01E0010E200DF3CFE3 -:100D200001F08250010B400DF3CF00F08250400BD8 -:100D300001E0010E800DF3500010011002100310AD -:100D4000041005100610DF6E838EDECF00F0DDCFBD -:100D500001F000C0F3FF01C0F4FF00D0020EE15C1F -:100D600002E2E16AE552E16EE552E7CFD9FF1200F7 -:100D7000D9CFE6FFE1CFD9FFE652DF6AFE0EDBCF27 -:100D8000E6FFA9DDE552010EE66E90DDE552FE0EAE -:100D9000DB5003E1839C808A05D0FE0EDB0402E178 -:100DA000838C809A80980000839E000000000000E1 -:100DB0008450010B066E8450020B01E0010EE82402 -:100DC000056E8450040B01E0010E040DF3CF04F016 -:100DD0008350100B01E0010E080DF3CF03F0825099 -:100DE000020B01E0010E100DF3CF02F08250800BD8 -:100DF00001E0010E200DF3CF01F08250010B400DF8 -:100E0000F3CF00F08250400B01E0010E800DF35053 -:100E10000010011002100310041005100610DF6E00 -:100E2000838EDF5000D0E552E552E7CFD9FF1200A4 -:100E300027EC0EF0FD0EDBCFE6FFA3EC0EF0E55243 -:100E4000E71402E1000E01D0010E2CEF0EF027ECAA -:100E50000EF01D0EABEC0DF0D8EC11F02CEF0EF0F7 -:100E600027EC0EF0000EE66EE66AB8EC10F09CEC93 -:100E70000FF02CEF0EF027EC0EF0A3EC0EF0840830 -:100E80000DE0A3EC0EF0C40809E0E66AB8EC10F03F -:100E9000AAEC0FF079EC32F0E552EFD71C0EABEC78 -:100EA0000DF0220E15EC11F0AEEC0FF0A3EC0EF0ED -:100EB000800804E0A3EC0EF0C008E7E1A3EC0EF01C -:100EC000C00802E1AEEC0FF01E0EABEC0DF00F0E01 -:100ED00015EC11F0D8EC11F0FA0EDBCFE6FFFB0EAB -:100EE0006CEC10F0F80EDBCFE6FFF90E6CEC10F0B6 -:100EF000F60EDBCFE6FFF70E6CEC10F0040EABEC59 -:100F00000DF01A0EABEC0DF0100EE66E270EE66E2D -:100F10009FEC0DF02CEF0EF027EC0EF0080EE12602 -:100F2000010E08EC0EF0010EE7CFDBFF020E19EC0C -:100F300011F0DF6E030E08EC0EF0030EE7CFDBFFBF -:100F4000040E08EC0EF0020EE7CFDBFF050E08ECF6 -:100F50000EF0050EE7CFDBFF060E08EC0EF0040ED8 -:100F6000E7CFDBFF070E08EC0EF0070EE7CFDBFF45 -:100F7000080E08EC0EF083EC0EF0E66AB3EC0FF00E -:100F8000090E08EC0EF0010EE7CFDBFF0A0E19EC9C -:100F900011F0DF6E0B0E08EC0EF0030EE7CFDBFF57 -:100FA0000C0E08EC0EF0020EE7CFDBFF0D0E08EC86 -:100FB0000EF0050EE7CFDBFF0E0E08EC0EF0040E70 -:100FC000E7CFDBFF0F0E08EC0EF0070EE7CFDBFFDD -:100FD000100E08EC0EF083EC0EF0010EE66EB3EC92 -:100FE0000FF0020EE66EE66EAAEC0FF0E66A94ECE5 -:100FF0000EF004E1020EE6EC10F002E0000E01D06B -:10100000010E006E080EE15C02E2E16AE552E16E5B -:1010100000502CEF0EF027EC0EF00C0EE126B9EC90 -:101020000EF0D950F20FE9EC10F0080EEECFDBFF16 -:10103000090EEECFDBFF0A0EEECFDBFF0B0EEECF7D -:10104000DBFF1F0EABEC0DF019EC0FF000500110A0 -:10105000021003100CE02B0E15EC11F00A0EDBCF82 -:10106000E6FF0B0E6CEC10F0FEEC0EF003D00B0E56 -:10107000E66EE66A9FEC0DF0C7EC11F066EC0FF03F -:1010800009E1AFEC0DF09FEC0DF0C7EC10F0B8ECFF -:1010900010F01CD066EC0FF003E0FE0EDB0408E15C -:1010A000AFEC0DF05AEC0FF0C7EC10F05AEC0FF06B -:1010B00066EC0FF003E0FE0EDB500AE1AFEC0DF042 -:1010C000E66A98EC10F0C7EC10F0E66A98EC10F0C5 -:1010D0000C0EE15C02E2E16AE552E16E2CEF0EF0EB -:1010E00027EC0EF00A0EE126D9CFE9FFDACFEAFFAE -:1010F000FA0EDBCFEEFFFB0EDBCFEEFFFC0EDBCFFD -:10110000EEFFFD0EDBCFEEFFB9EC0EF0080EF36E36 -:10111000DB6E090EF3CFDBFF1F0EABEC0DF0CFEC57 -:101120000EF007E0D950080FE96EDACFEAFFEE8A39 -:10113000ED5266EC0FF00BE1F50EDB50FF0802E11B -:101140005EEC0FF0FEEC0EF0B8EC10F01FD066EC89 -:101150000FF003E0FE0EDB040AE1F50EDB50FF08A2 -:1011600002E15EEC0FF0FEEC0EF05AEC0FF066ECD4 -:101170000FF003E0FE0EDB500BE1F50EDB50FF0835 -:1011800002E15EEC0FF0FEEC0EF0E66A98EC10F077 -:10119000CFEC0EF002E0C7EC11F0020EDBCFE6FF61 -:1011A000030E6CEC10F0C7EC10F09FEC0DF00A0E83 -:1011B000E15C02E2E16AE552E16E2CEF0EF027EC11 -:1011C0000EF0F90EDBCFE6FFE66AE66AE66AE66A4B -:1011D000D950FA0FE9EC10F0D0EC10F0B8EC10F0A8 -:1011E0007FDF006E0A0EE15E00502CEF0EF027EC60 -:1011F0000EF0FE0EDB5003E066EC0FF013E10A0E7A -:10120000E66EE66AEEEC10F0E66A24EC11F0F3CF3D -:1012100061F1F4CF62F1E66A24EC11F0F3CF5FF1F3 -:10122000F4CF60F1FE0EDB0403E066EC0FF015E195 -:101230000A0EC1EC0FF0EEEC10F0010EE66E24EC9D -:1012400011F0F3CF65F1F4CF66F1010EE66E24ECF8 -:1012500011F0F3CF63F1F4CF64F1010EABEC0DF0BC -:101260002CEF0EF027EC0EF01F0EABEC0DF0D8ECCF -:1012700011F0010EABEC0DF02CEF0EF0F8EC10F0CD -:1012800005E12D6A2E6A2F6A306A0BD00A0EFDEC3A -:1012900010F005EC0FF0F3CFDEFFF4CFDDFF73ECC1 -:1012A0000FF0040EE15C02E2E16AE552E16E2CEF20 -:1012B0000EF0F8EC10F005E12D6A2E6A2F6A306A04 -:1012C00007D00B0EFDEC10F0DE6ADD6A73EC0FF058 -:1012D000040EE15C02E2E16AE552E16E2CEF0EF0F1 -:1012E00027EC0EF066EC0FF003E1F36AF46A05D028 -:1012F0000D0EABEC0DF005EC0FF02CEF0EF0D9EC71 -:1013000010F08CEC0FF09AEC0EF02CEF0EF0D9EC04 -:1013100010F06DEC0EF0020E9AEC0EF02CEF0EF0C9 -:10132000F6EC11F06DEC0EF0E66A75DEA5EC0FF050 -:10133000D6EC0FF088EC10F0B2EF10F0F6EC11F0F4 -:10134000A8EC0EF0A5EC0FF0D6EC0FF06DEC0EF063 -:10135000010EB2EF10F027EC0EF01C0EE126F60E97 -:10136000DB501EE0006A800E016E010E026E430E1D -:10137000036E31EC12F0336A346AC80E356E420ED9 -:10138000366E79EC24F075EC11F0C7DBB1EC11F09E -:1013900039EC25F0F70E2FC0DBFFF80E30C0DBFF75 -:1013A0009BEC10F0EBEC0DF001EC11F00C6A800EF0 -:1013B0000D6E010E0E6E430E0F6EF1EC11F071EC1E -:1013C00011F05AEC10F07EEC0FF0A7DBB1EC11F04D -:1013D0002EC0DEFF2FC0DEFF30C0DEFF31C0DDFFDC -:1013E000DD52DD52E0EC0EF008EC0FF0CCEC24F016 -:1013F00075EC11F001EC11F0106A800E116E010E07 -:10140000126E430E136EF1EC11F068EC10F025EC47 -:1014100012F0B1EC11F0040E2EC0DBFF050E2FC050 -:10142000DBFF060E30C0DBFF070E31C0DBFFDECF77 -:101430002EF0DECF2FF0DECF30F0DDCF31F0DD52F9 -:10144000DD52040EDBCF33F0050EDBCF34F0060E99 -:10145000DBCF35F0070EFAEC11F0080E2EC0DBFFE3 -:10146000090E2FC0DBFF0A0E30C0DBFF0B0E31C0B0 -:10147000DBFF080EDBCF04F0090EDBCF05F00A0E10 -:10148000DBCF06F00B0EDBCF07F0336A346A356A28 -:10149000366A86DB9FEC25F0010A03E019EC0FF0B9 -:1014A00013D0080EDBCF08F0090EDBCF09F00A0ECF -:1014B000DBCF0AF00B0EDBCF0BF008EC0FF0B5EC36 -:1014C00011F0CCEC24F032DB080E00C0DBFF090E7B -:1014D00001C0DBFF0A0E02C0DBFF0B0E03C0DBFF07 -:1014E000CDDBE3EC0EF0CDEC0FF029EC10F040EC8E -:1014F0000FF0046A056A066A400E076EA0EC10F051 -:1015000071EC11F0CDEC0FF0DEEC11F00FDB0C0EF6 -:10151000DBCF0CF00D0EDBCF0DF00E0EDBCF0EF09F -:101520000F0EDBCF0FF082EC0FF026EC0FF0A6DBF6 -:1015300075EC11F016EC12F029EC10F0E6EC0EF060 -:10154000066A400E076E16EC12F0DEEC11F01EEC8F -:1015500011F082EC0FF033EC0FF0C9EC0EF0140E2A -:10156000DBCF08F0150EDBCF09F0160EDBCF0AF04B -:10157000170E24DB0C0EDBCF14F00D0EDBCF15F0B5 -:101580000E0EDBCF16F00F0E1FDBD9CFE9FFDACF3F -:10159000EAFFEECF20F0EECF21F0EECF22F0EFCF3A -:1015A00023F08BEC10F0D4DB246E0D0EE15E2450A2 -:1015B000180EDBCF08F0190EDBCF09F01A0EDBCFC7 -:1015C0000AF01B0EFBDA100EDBCF14F0110EDBCF8E -:1015D00015F0120EDBCF16F0130EF6DA040EDBCF89 -:1015E00020F0050EDBCF21F0060EDBCF22F0070E38 -:1015F000DBCF23F08BEC10F088EC10F0E66E0BDD07 -:10160000246E0D0EE15E2450EBEC11F01C0EE15C3B -:1016100002E2E16AE552E16E1FD319DB3C0EE126DE -:10162000CFDB3CEC12F07EEC11F0B5EC11F0CCEC21 -:1016300024F0C9DB9AEC11F0A0EC10F071EC11F081 -:1016400093EC0FF06ADA70EC10F067DAA9DAE3ECE9 -:1016500023F06CDA336A346A800E6EEC0FF0380EC9 -:101660002EC0DBFF390E2FC0DBFF3A0E30C0DBFF90 -:101670003B0E31C0DBFF3CEC12F058DA6DDBA0EC26 -:1016800010F0A9DA69DB2BEC2DF0086E080EE15E94 -:101690000850080E2DC0DBFF090E2EC0DBFF0A0E1E -:1016A0002FC0DBFF0B0E30C0DBFF73DBF60EDB5011 -:1016B00007E0D950F40FE9EC10F0EE50ED1039E1ED -:1016C000EEDA080EDBCF0EF0090EDBCF0FF00A0EBC -:1016D000DBCF10F00B0EF1EC0FF0FED9A5EC10F003 -:1016E0002E6A2F6A800E306E400E316E380EDBCFC0 -:1016F00033F0390EDBCF34F03A0EDBCF35F03B0E52 -:10170000CCEC10F02DDB28DB8ADB2DC002F02EC0E4 -:1017100003F02FC004F030C005F02DC02EF006EC11 -:1017200011F0BCEC10F0EBDD0A6E060EE15E0A5023 -:10173000A3D1380EDBCF04F0390EDBCF05F03A0E23 -:10174000DBCF06F03B0EDBCF07F0F9DB3FEC12F00E -:10175000CCEC24F0CDEC0FF01DEC12F0CFDAE3DB93 -:1017600021EC11F09AEC11F0D8D9ECD9E3EC23F08C -:101770002DDB28EC11F09BEC10F068EC10F0B1ECD4 -:1017800011F071DB046A056A28EC11F0A0EC10F08E -:1017900068EC10F0B1EC11F01C0E2EC0DBFF1D0E3A -:1017A0002FC0DBFF1E0E30C0DBFF1F0E31C0DBFF82 -:1017B0001C0EDBCF00F01D0EDBCF01F01E0EDBCFC9 -:1017C00002F01F0EDBCF03F023DBB1EC11F0200E93 -:1017D0002EC0DBFF210E2FC0DBFF220E30C0DBFF4F -:1017E000230E31C0DBFFD950180FE96EDACFEAFFC4 -:1017F000240EEECFDBFF250EEECFDBFF260EEECF65 -:10180000DBFF270EEECFDBFF9BEC10F0D2EC11F0EC -:10181000200EDBCF33F0210EDBCF34F0220EDBCFF6 -:1018200035F0230E00EC12F0280E2EC0DBFF290E3F -:101830002FC0DBFF2A0E30C0DBFF2B0E31C0DBFFD9 -:10184000A0EC10F0D2EC11F0240EDBCF33F0250E1B -:10185000DBCF34F0260EDBCF35F0270E00EC12F094 -:101860002C0E2EC0DBFF2D0E2FC0DBFF2E0E30C046 -:10187000DBFF2F0E31C0DBFF2C0EDBCF04F02D0E73 -:10188000DBCF05F02E0EDBCF06F02F0EDBCF07F0FF -:10189000BFDA86D9CCEC24F07CEC10F0300E2EC0F0 -:1018A000DBFF310E2FC0DBFF320E30C0DBFF330E0B -:1018B00031C0DBFF280EDBCF2EF0290EDBCF2FF05F -:1018C0002A0EDBCF30F02B0EDBCF31F07CEC10F0AA -:1018D000340E2EC0DBFF350E2FC0DBFF360E30C0BE -:1018E000DBFF370E31C0DBFFD950300FB9D9D950EB -:1018F000340FB6D92BEC2DF0006E080EE15E0050CF -:101900000C0E2DC0DBFF0D0E2EC0DBFF0E0E2FC008 -:10191000DBFF0F0E30C0DBFF006A016A026A400E77 -:10192000036E00C0E6FF01C0E6FF02C0E6FFE66E00 -:10193000BED93FEC12F0E2DA0FDAC2EC10F02DC0A3 -:1019400014F02EC015F02FC016F030C017F064EC64 -:1019500011F02BEC2DF0186E080EE15E1850E552D8 -:10196000E7CF03F0E552E7CF02F0E552E7CF01F011 -:10197000E552E7CF00F02DC004F02EC005F02FC0D7 -:1019800006F030C007F031DAB1EC11F05FDAF60E94 -:10199000DB5002081FE1A3EC11F0E2EC23F0E4ECD1 -:1019A00011F0E3EC23F027D978DA060E2FC0DBFF25 -:1019B000070E30C0DBFF000EDFCF2FF0010E0BD97A -:1019C000020EF3EC10F0E9DA79DB040E2FC0DBFF36 -:1019D000050E35D053D9AAD80C0EDBCF04F00D0E6E -:1019E000DBCF05F00E0EDBCF06F00F0EDBCF07F0DE -:1019F00004C033F005C034F006C035F007C036F03F -:101A0000E2EC23F03DDAA3EC11F0E3EC23F0E4EC9C -:101A100011F0E2EC23F0EFD840DA040E2FC0DBFF28 -:101A2000050E30C0DBFF020EDBCF2FF0030ED3D844 -:101A3000C5DBB3DA43DB060E2FC0DBFF070E30C079 -:101A4000DBFF4AD8B6D8040EDBCF2FF0050E9DDAA7 -:101A500064EC11F0B3DB4DD87BD9206E0D0EE15E46 -:101A60002050A7D8060EDBCF2FF0070E8EDA54DAFF -:101A7000BADB3FD84DDB5ED93C0EE15C02E2E16AA5 -:101A8000E552E16EE9D0E66A3EEC09F0E55201016B -:101A90005F512D5C066E60512E58076E61512F58B4 -:101AA000086E6251B8D0010EE66E3EEC09F0E552C8 -:101AB000010163512D5C066E64512E58076E65510D -:101AC0002F58086E6651A7D0040EABDB03E0040E5E -:101AD0007DDB01E1000C010CF7DF0009FDE01200E5 -:101AE00016EC12F0F5DB9FDA2BDB4FDAEDDB23DBB4 -:101AF0006BD32EC01CF02FC01DF030C01EF031C0C3 -:101B00001FF0E6DB42EC12F02DC018F02EC019F0E9 -:101B10002FC01AF030C01BF012002EC033F02FC0BF -:101B200034F030C035F031C036F012002EC000F075 -:101B30002FC001F030C002F031C003F0120018DBFA -:101B400098EF10F000C02EF001C02FF002C030F06E -:101B500003C031F01200E66E0BDBEEEF10F0FA0E70 -:101B6000DBCF00F0FB0EDBCF01F0FC0EDBCF02F091 -:101B7000FD0EDBCF03F0000E006C011E0122021EE1 -:101B80000222031E032200C0DFFF010E01C0DBFFA3 -:101B9000020E02C0DBFF030E03C0DBFF04EF12F0F6 -:101BA00004C02EF005C02FF006C030F007C031F0A1 -:101BB000120031EC12F08CDB13EF10F0DBCF0BF0E6 -:101BC00087DBD3DB13EF10F0DBCF17F081DB88DA94 -:101BD0009FDB64EF11F085DB75EF11F002C02EF092 -:101BE00015DBE2EC23F0C8DA90EC09F0126E060E79 -:101BF000E15E12501200100EDBCF33F0110EDBCF7E -:101C000034F0120EDBCF35F0130EC6DA39EF25F0C3 -:101C100010DBE76E12003058096E06C02DF007C0C9 -:101C20002EF008C02FF0306EC9EC23F02EC002F069 -:101C30002FC003F030C004F031C005F049DB79EC6F -:101C400024F0E9DB2FC0F3FF30C0F4FF1200D9CF3E -:101C5000E6FFE1CFD9FF1200E552E7CFD9FF12002E -:101C6000E96EDACFEAFFD0EF10F00CC02EF00DC015 -:101C70002FF00EC030F00FC031F012002E6A2F6A24 -:101C8000306A400E316E080EDBCF33F0090EDBCF29 -:101C900034F00A0EDBCF35F00B0ECCEF10F055DA36 -:101CA000026A036AB40E046E420E056E1200140E30 -:101CB000DBCF0CF0150EDBCF0DF0160EDBCF0EF0E8 -:101CC000170EDBCF0FF01200350E336EFA0E346EA6 -:101CD0000E0E356E3C0E366E1200000E186C191E7C -:101CE00019221A1E1A221B1E1B2218C0E6FF19C039 -:101CF000E6FF1AC0E6FF1BC0E6FF1200F40EDBCFC2 -:101D00002FF0F50E61D2060EE7CFDBFFDBCFE6FF4B -:101D1000070EDBCFE6FF040EDBCFE6FF050EDBCFC1 -:101D2000E6FF72DBC7EF10F018EC07F0E552E55262 -:101D300000091200E66E0BEC08F0206E0D0EE15E5D -:101D40002050EBEF11F014DAB8EC06F0E552120077 -:101D5000BBDAE66A0BEF08F088DB31C0E6FF120061 -:101D60002EC006F02FC007F030C008F031C009F0D7 -:101D70001200D950F60F2DDA040EEECFDBFF050E60 -:101D8000EECFDBFF060EEECFDBFF070EEECFDBFF65 -:101D90001200020EE66E30EC07F0E5521200040E5F -:101DA000DBCF00F0050EDBCF01F0060EDBCF02F03B -:101DB000070EDBCF03F000500110021003101200D9 -:101DC0005BDBCDEF0FF091DABBD9FED1140E2EC044 -:101DD000DBFF150E2FC0DBFF160E30C0DBFF170E2A -:101DE00031C0DBFF046A056A12002DC033F02EC03B -:101DF00034F02FC035F030C036F01200080EDBCFC3 -:101E0000E6FF090EDBCFE6FF1200B2D924EF11F096 -:101E1000336A346A800E356EBF0E366E12003EECA9 -:101E200029F0E552FFD2336A346A356A400E366EC5 -:101E30001200080EDBCF00F0090EDBCF01F00A0E16 -:101E4000DBCF02F00B0EDBCF03F01200100E2EC022 -:101E5000DBFF110E2FC0DBFF120E30C0DBFF130EB5 -:101E600031C0DBFF1200180E2EC0DBFF190E2FC091 -:101E7000DBFF1A0E30C0DBFF1B0E31C0DBFF120090 -:101E80000C0E2EC0DBFF0D0E2FC0DBFF0E0E30C080 -:101E9000DBFF0F0E31C0DBFF1200020E2FC0DBFF95 -:101EA000030E30C0DBFFF90EDBCF2FF0FA0EDBCFD5 -:101EB00030F01200010EE66E98EF10F0D950080FC6 -:101EC000E96EDACFEAFFEE52ED881200FE0EDB502B -:101ED00002081200356E430E366E1200356E400E4B -:101EE000366E79EF24F0DECF2DF0DECF2EF0DECF90 -:101EF0002FF0DDCF30F0DD52DD521200E2EC23F0A6 -:101F0000CDEF0FF00CC033F00DC034F00EC035F043 -:101F10000FC036F0E2EF23F0D7D9020E1200336A79 -:101F2000800E346E12002EC018F02FC019F030C091 -:101F30001AF031C01BF0120027EC07F073D20C6AC4 -:101F40000D6A0E6A400E0F6E1200286E0D0EE15ED5 -:101F50002850120043D9020EE66E120009D930EC67 -:101F600007F0E55212003BEC07F0006E090EE15E4F -:101F700000501200020EF3CFDBFF030EF4CFDBFFA5 -:101F80001200E66E010EE66E1200ABD9D3D9A0D9CD -:101F9000CCEC24F0F3D988EF11F02EC008F02FC05C -:101FA00009F030C00AF031C00BF0120099DD2EC0EC -:101FB00024F02FC025F030C026F031C027F084DE99 -:101FC000CCEC24F02EC020F02FC021F030C022F045 -:101FD00031C023F0A4DF810E7DDFCCEC24F079EF5B -:101FE0000DF0DBCF11F0336A346A340E73DF0EC0AC -:101FF0002EF00FC02FF010C030F011C031F0CCEC3B -:1020000024F02EC00AF02FC00BF030C00CF031C00D -:102010000DF0DB0E336E0F0E346E490E5FDFA0DE67 -:102020007CDDEEEF0DF0CCEC24F05FD9CC0E336EFE -:10203000BC0E346E8C0E356E3B0E366E23DA2DC020 -:1020400000F02EC001F02FC002F030C003F064EFAA -:1020500011F0B4D96BDD106A116A800E126E3F0E5A -:10206000136E080EDBCF14F0090EDBCF15F00A0E4D -:10207000DBCF16F00B0EDBCF17F014C033F015C01A -:1020800034F016C035F017C036F0DFD95BDD79EFDC -:1020900024F0140EDBCF00F0150EDBCF01F0160E8E -:1020A000DBCF02F0170EDBCF03F039DF010E12DFBA -:1020B000A2EF0DF063D931DD35EF0EF0BED9F90E88 -:1020C000DBCF2FF0FA0E0DD919D94BD939EF25F006 -:1020D00008D930D98DEF0DF0DBCFE6FF9FEF0DF083 -:1020E00014C02EF015C02FF016C030F017C031F01C -:1020F000CCEC24F0BEEF11F0140EDBCF33F0150E54 -:10210000DBCF34F0160EDBCF35F0170EFAEF11F0FF -:10211000DBD8010E1200D8DD20C02EF021C02FF038 -:1021200022C030F023C031F0CCEC24F079EF0DF078 -:1021300025EC05F077D1FD0EDBCF2FF0FE0E12005F -:10214000FB0EDBCF2FF0FC0E1200F70EDBCFE6FF0D -:10215000F80EDBCFE6FFF90EDBCFE6FFFA0EDBCFA2 -:10216000E6FF1200E66E0BEC08F0EFDE34D974D512 -:10217000FE0EDBCFE6FF12004ED92FC0E6FF30C0C7 -:10218000E6FF1200D950380F6BDD0FEF0FF0DECFF6 -:10219000E6FFDDCFE6FF1200DBCF36F0CCEF24F018 -:1021A000EECFE6FFEECFE6FFEECFE6FFEFCFE6FFA6 -:1021B00012004DDDEEDD94DC79EF0DF0000EDFCF87 -:1021C0002FF0010E71EF11F071EF11F0DADE94EFE4 -:1021D0000EF0E96EFF0EDA20EA6E1200A6EC04F0B3 -:1021E000E552E5521200DBCF2FF0030E71EF11F034 -:1021F0002EDD040EE12666EF0FF0ADDC06DEBAEF51 -:102200000FF011DECCEC24F096EF0DF003C02FF0B0 -:1022100004C030F005C031F012007FDC93DCE2EF47 -:1022200023F0E66EE66A94EF0EF0E66EE66A9FEF44 -:102230000DF0E66E98EC31F0E552120077DC57EFC6 -:102240000EF0F1DD79EF24F00AEC06F0E552120011 -:10225000800E066E3F0E076E72DE04C0E6FF05C0FC -:10226000E6FF06C0E6FF07C0E6FF0CC0E6FF0DC0B4 -:10227000E6FF0EC0E6FFE66E85DFE552E7CF0FF022 -:10228000E552E7CF0EF0E552E7CF0DF0E552E7CF8C -:102290000CF0E552E7CF07F0E552E7CF06F0E55244 -:1022A000E7CF05F0E552E7CF04F02DC010F02EC0C7 -:1022B00011F02FC012F030C013F097DDD6DCCCEC5B -:1022C00024F06BDE1DEF12F02DC0E6FF35EF12F0AB -:1022D000330E336EE20E346EC20E356E420E366E23 -:1022E0001200DBCF30F0B4EF23F02EC004F02FC08B -:1022F00005F030C006F031C007F012002EC00CF01F -:102300002FC00DF030C00EF031C00FF08DEF0DF08A -:10231000BD0E336E370E346E860E356E410E366E40 -:10232000B1D82DC00CF02EC00DF02FC00EF030C073 -:102330000FF012002EC014F02FC015F030C016F0B0 -:1023400031C017F01200ABDC0C0EDBCF0EF00D0E1F -:10235000DBCF0FF00E0EDBCF10F00F0E42DE49EF99 -:1023600010F0A2EC0DF0CCEF24F008C02EF009C064 -:102370002FF00AC030F00BC031F012002EC010F068 -:102380002FC011F030C012F031C013F01200060E51 -:10239000DBCFE6FF070EA0DE040EDBCFE6FF050E67 -:1023A0006CEF10F018DC4DDF49DF69D8E2EF23F065 -:1023B000FC0EDBCFE6FFFD0E6CEF10F08DEC0DF0A8 -:1023C000D0EC0DF0CCEF24F016DC2FC0DEFF30C0D7 -:1023D000DDFF49EF10F0020EE66EF7EC08F0E55273 -:1023E0001200F70EDBCF2FF0F80E120030DCD1DC3C -:1023F000D6EF0FF0DBCF36F079EC24F096EF0DF04E -:10240000CBDECBDD0DEF11F0020EDBCFE6FF030ECE -:10241000DBCFE6FF120039EC25F02FC000F030C012 -:1024200001F01200E552E552E5521200F90EDBCF41 -:102430002FF0FA0E56DFCDEF0FF08DEC0DF0D0EC53 -:102440000DF079EC24F096EF0DF010C02EF011C0D5 -:102450002FF012C030F013C031F0E3EC23F07EEF28 -:1024600011F0BFDF3EDFCDEF0FF02EC0E6FF2FC033 -:10247000E6FF30C0E6FF12005EDE71EF11F03EDCD9 -:0C2480005AEF10F0CCEC24F068EF25F0CF -:04248C00DACFE4FFC0 -:10249000E2CFDAFFE9CFE4FFEACFE4FFF6CFE4FFD3 -:1024A000F7CFE4FFF5CFE4FFF3CFE4FFF4CFE4FF91 -:1024B000FACFE4FF00EE29F0140EE80403E3EECFB8 -:1024C000E4FFFBD700EE00F0290EE80403E3EECFB3 -:1024D000E4FFFBD7E4EC1DF09EA013D0EEEC1DF062 -:1024E00001014D2B000E4E23E80E4D5D030E4E599B -:1024F00005E34D6B4E6B4F2B000E50235FEC2BF022 -:102500009E90F2A003D02EEC04F0F290F7EC1DF0B8 -:1025100002E2E16AE552E16EE552E7CFD9FFE5520A -:1025200000EE28F0290EE80403E3E5CFEDFFFBD72A -:1025300000EE3CF0140EE80403E3E5CFEDFFFBD71B -:10254000E5CFFAFFE5CFF4FFE5CFF3FFE5CFF5FFE9 -:10255000E5CFF7FFE5CFF6FFE5CFEAFFE5CFE9FFEF -:10256000E5CFDAFF1100D8CFE4FFE0CFE4FFE46E5F -:10257000DACFE4FFE2CFDAFFF3CFE4FFF4CFE4FFFA -:10258000E4EC1DF0F7EC1DF002E2E16AE552E16EC9 -:10259000E552E7CFD9FFE552E5CFF4FFE5CFF3FFF2 -:1025A000E5CFDAFFE550E5CFE0FFE5CFD8FF10003B -:1025B00004D842EC1EF063D8FCD70F0EC11202D82B -:1025C0000CEF1EF007EC1EF0E652BBEC1DF0010113 -:1025D000676F070E675D10E1E66A98EC31F0E5522F -:1025E000DF6E000EDF80FFEC1DF0E66A79EC32F062 -:1025F000E552DF70FFEC1DF01C0E9316D08EF28EAC -:10260000F28CF286F30E8C1695160101476B486B1F -:10261000496B4A6B010E4B6F92948094939881980A -:102620000D0EE66E7C0EE66EE10EE66E0BEC31F002 -:10263000E552E552E552C70E921694943F0E951658 -:10264000010EE66E56EC04F0E552838C808A82849B -:102650008088838E80868294010EE66EB4EC32F020 -:10266000E55282849D80C50EE66E09EC32F0E5529B -:10267000EEEC1DF0E552E552E7CFD9FF1200D9CFBD -:10268000E6FFE1CFD9FF0F0EE12601014B5102E039 -:1026900000EC1DF0200E0101005D03E36D50020B04 -:1026A00013E0010152510EE0E66A010EE66E020EE1 -:1026B000E66E32EC09F0E552E552E5526CEC0DF0B5 -:1026C0000101526BF6EF1CF0010149514A1102E180 -:1026D000000E08D049C1E9FF4AC1EAFFEF50800B64 -:1026E00001E0010E000947E101014651EA6A260FA7 -:1026F000E96E010EEA22EF5000083DE20501406B51 -:1027000001014C514C2B0501416F0501040E426F34 -:1027100001014651EA6A260FE96E010EEA22EFCF67 -:1027200043F5400EE66E400EE66E050EE66E010EB7 -:10273000E66E010EE66E5DEC22F0006E050EE15EC7 -:102740000050F3CF49F1F4CF4AF101014651EA6A52 -:10275000260FE96E010EEA22EF6A010146510008D8 -:1027600003E20101460707D001014551000803E2D9 -:1027700001011F0E466F010149514A1102E1000E8D -:1027800008D049C1E9FF4AC1EAFFEF50800B01E0E0 -:10279000010E00092CE10101520529E164EC0DF064 -:1027A000000925E00501406B01014C514C2B05014E -:1027B000416F05010A0E426F0501436B0501010ED1 -:1027C000486F400EE66E400EE66E050EE66E010E98 -:1027D000E66E010EE66E5DEC22F0006E050EE15E27 -:1027E0000050F3CF49F1F4CF4AF10101526B0101DE -:1027F0005151020A10E0030A01E021D0020EE66EF8 -:10280000ABEC2CF0E5528CEC07F0000903E0010181 -:10281000020E516F16D0200EE66E030EE66EC80E45 -:10282000E66EE66AE80EE66E030EE66E7FEC09F0F1 -:10283000006E060EE15E00500101516B02D00101F5 -:10284000516B01014751481102E1000E08D047C108 -:10285000E9FF48C1EAFFEF50800B01E0010E0009DB -:1028600002E0F6EF1CF005010251070A02E157EF02 -:102870001CF00D0A01E167D2010A01E126D20D0A1E -:1028800001E1BED1040A1AE0030A07E0010A02E0EE -:10289000B5EF1CF0FF00F6EF1CF0E66A98EC31F0A3 -:1028A000E552DF6E000EDB80DFCFE6FFE66A78ECF4 -:1028B00031F0E552E552FF00F6EF1CF001014951FD -:1028C0004A1102E1000E08D049C1E9FF4AC1EAFFFE -:1028D000EF50800B01E0010E000901E08FD100C52F -:1028E00040F50501416B0501030E426F0501436B85 -:1028F00005010851100A01E135D11F0A01E1F8D0A4 -:10290000080A01E1BBD0010A01E17ED0020A71E0B0 -:10291000070A64E0010A20E0030A06E0010A01E078 -:1029200043D167C148F543D10501486BED0E006EF8 -:10293000630E016E026A00C0E6FF01C0E6FF02C03E -:10294000E6FF480EE66E050EE66E5CEC31F0036EB7 -:10295000050EE15E03502BD10501486BE10E006EC0 -:10296000630E016E026A00C0E6FF01C0E6FF02C00E -:10297000E6FF480EE66E050EE66E5CEC31F0036E87 -:10298000050EE15E0350DF0E006E630E016E026AFB -:1029900000C0E6FF01C0E6FF02C0E6FF480EE66E9B -:1029A000050EE66E5CEC31F0036E050EE15E035041 -:1029B000D60E006E630E016E026A00C0E6FF01C013 -:1029C000E6FF02C0E6FF480EE66E050EE66E5CEC22 -:1029D00031F0036E050EE15E0350E9D092CF48F569 -:1029E00093CF49F594CF4AF595CF4BF596CF4CF55B -:1029F000DED080CF48F581CF49F582CF4AF583CF2D -:102A00004BF584CF4CF5D3D0E66A05EC2CF0E552BB -:102A1000010E2DC0DBFF020E2EC0DBFF030E2FC008 -:102A2000DBFF040E30C0DBFF040EDBCF48F5030EE6 -:102A3000DBCF49F5020EDBCF4AF5010EDBCF4BF5BC -:102A4000010EE66E05EC2CF0E552010E2DC0DBFF09 -:102A5000020E2EC0DBFF030E2FC0DBFF040E30C0C2 -:102A6000DBFF040EDBCF4CF5030EDBCF4DF5020E82 -:102A7000DBCF4EF5010EDBCF4FF599D0E66A3EEC89 -:102A800009F0E552010E2DC0DBFF020E2EC0DBFF68 -:102A9000030E2FC0DBFF040E30C0DBFF040EDBCFC4 -:102AA00048F5030EDBCF49F5020EDBCF4AF5010EE8 -:102AB000DBCF4BF5010EE66E3EEC09F0E552010E60 -:102AC0002DC0DBFF020E2EC0DBFF030E2FC0DBFF8D -:102AD000040E30C0DBFF040EDBCF4CF5030EDBCF62 -:102AE0004DF5020EDBCF4EF5010EDBCF4FF55FD07B -:102AF000E66A59EC09F0E552010E2DC0DBFF020E2B -:102B00002EC0DBFF030E2FC0DBFF040E30C0DBFF47 -:102B1000040EDBCF48F5030EDBCF49F5020EDBCF09 -:102B20004AF5010EDBCF4BF5010EE66E59EC09F0CC -:102B3000E552010E2DC0DBFF020E2EC0DBFF030E9F -:102B40002FC0DBFF040E30C0DBFF040EDBCF4CF5E3 -:102B5000030EDBCF4DF5020EDBCF4EF5010EDBCFC2 -:102B60004FF525D0E66A70EC09F0E552050EF3CF7B -:102B7000DBFF060EF4CFDBFF060EDBCF48F5050EBC -:102B8000DBCF49F5010EE66E70EC09F0E552050E5B -:102B9000F3CFDBFF060EF4CFDBFF060EDBCF4AF5EB -:102BA000050EDBCF4BF503D00501020E436F400E3F -:102BB000E66E400EE66E050EE66E010EE66E010E46 -:102BC000E66E5DEC22F0006E050EE15E0050F3CF84 -:102BD00049F1F4CF4AF1400EE66E000EE66E050EA6 -:102BE000E66EE66A010EE66E5DEC22F0006E050E02 -:102BF000E15E0050F3CF47F1F4CF48F1F6EF1CF05F -:102C000005010851030A37E0010A25E0030A13E031 -:102C1000010A01E040D005010951921205010A5153 -:102C2000931205010B51941205010C5195120501E7 -:102C30000D51961235D00501091D921605010A1D88 -:102C4000931605010B1D941605010C1D9516050123 -:102C50000D1D961625D00501091D891605010A1DB1 -:102C60008A1605010B1D8B1605010C1D8C1605011E -:102C70000D1D8D1615D005010951891205010A5146 -:102C80008A1205010B518B1205010C518C120501A2 -:102C90000D518D1205D0030EE66E46EC32F0E55272 -:102CA000400EE66E000EE66E050EE66EE66A010E5A -:102CB000E66E5DEC22F0006E050EE15E0050F3CF93 -:102CC00047F1F4CF48F1F6EF1CF005010851020A74 -:102CD00009E0030A01E01DD009C5E6FFABEC2CF0CA -:102CE000E5521CD009C5E6FFBBEC2CF0E552010112 -:102CF00052510EE0E66A010EE66E020EE66E32EC0E -:102D000009F0E552E552E5526CEC0DF00101526B11 -:102D100005D0010EE66E46EC32F0E552400EE66E4E -:102D2000000EE66E050EE66EE66A010EE66E5DECDE -:102D300022F0006E050EE15E0050F3CF47F1F4CFB4 -:102D400048F1F6EF1CF005010851060A02E116EF02 -:102D50001CF0080A02E1DCEF1BF0030A02E1D3EFEA -:102D60001BF0070A02E16FEF1BF0030A02E1B7EF65 -:102D70001AF0010A01E10BD30F0A01E1F4D2020AB1 -:102D800001E1A9D2150A01E16AD2140A01E139D29E -:102D9000070A01E108D2010A01E1D7D1030A01E1E2 -:102DA000A6D1010A01E1A0D10C0A01E126D1030A52 -:102DB00001E194D0040A02E03EEF1CF00501095144 -:102DC00004E0020E0501095D40E10AC5E6FF010EBF -:102DD000E66E78EC31F0E552E5520BC5E6FF020EE7 -:102DE000E66E78EC31F0E552E5520CC5E6FF030ED5 -:102DF000E66E78EC31F0E552E5520DC5E6FF040EC3 -:102E0000E66E78EC31F0E552E5520EC5E6FF050EB0 -:102E1000E66E78EC31F0E552E5520FC5E6FF060E9E -:102E2000E66E78EC31F0E552E55210C5E6FF070E8C -:102E3000E66E78EC31F0E552E55211C5E6FF080E7A -:102E4000E66E78EC31F0E552E5520501090504E043 -:102E5000020E0501095D40E10AC5E6FF090EE66EB6 -:102E600078EC31F0E552E5520BC5E6FF0A0EE66E4E -:102E700078EC31F0E552E5520CC5E6FF0B0EE66E3C -:102E800078EC31F0E552E5520DC5E6FF0C0EE66E2A -:102E900078EC31F0E552E5520EC5E6FF0D0EE66E18 -:102EA00078EC31F0E552E5520FC5E6FF0E0EE66E06 -:102EB00078EC31F0E552E55210C5E6FF0F0EE66EF4 -:102EC00078EC31F0E552E55211C5E6FF100EE66EE2 -:102ED00078EC31F0E552E55243EF1CF000C540F5C7 -:102EE0000501416B0501030E426F0501436B010EA5 -:102EF000E66E98EC31F0E5520501486F020EE66E81 -:102F000098EC31F0E5520501496F030EE66E98EC3E -:102F100031F0E55205014A6F040EE66E98EC31F08F -:102F2000E55205014B6F050EE66E98EC31F0E55267 -:102F300005014C6F060EE66E98EC31F0E552050186 -:102F40004D6F070EE66E98EC31F0E55205014E6FBD -:102F5000080EE66E98EC31F0E55205014F6F090E50 -:102F6000E66E98EC31F0E5520501506F0A0EE66E00 -:102F700098EC31F0E5520501516F0B0EE66E98ECBE -:102F800031F0E5520501526F0C0EE66E98EC31F00F -:102F9000E5520501536F0D0EE66E98EC31F0E552E7 -:102FA0000501546F0E0EE66E98EC31F0E552050106 -:102FB000556F0F0EE66E98EC31F0E5520501566F35 -:102FC000100EE66E98EC31F0E5520501576F400E99 -:102FD000E66E400EE66E050EE66E010EE66E010E22 -:102FE000E66E5DEC22F0006E050EE15E0050F3CF60 -:102FF00049F1F4CF4AF143EF1CF0E66A010EE66EA8 -:1030000078EC31F0E552E552010EE66E020EE66E06 -:1030100078EC31F0E552E552E66A030EE66E78ECA4 -:1030200031F0E552E552E66A040EE66E78EC31F0D6 -:10303000E552E552E66A050EE66E78EC31F0E552AF -:10304000E552E66A060EE66E78EC31F0E552E5529E -:10305000030EE66E070EE66E78EC31F0E552E552AF -:10306000E80EE66E080EE66E78EC31F0E552E552B9 -:10307000E66A090EE66E78EC31F0E552E552010E93 -:10308000E66E0A0EE66E78EC31F0E552E552E66A3D -:103090000B0EE66E78EC31F0E552E552E66A0C0E66 -:1030A000E66E78EC31F0E552E552E66A0D0EE66E1A -:1030B00078EC31F0E552E552E66A0E0EE66E78ECF9 -:1030C00031F0E552E552030EE66E0F0EE66E78EC37 -:1030D00031F0E552E552E80EE66E100EE66E78EC41 -:1030E00031F0E552E552CFD38CEC07F0CCD3060E8D -:1030F00009C5DBFF050E0AC5DBFF080E0BC5DBFFAC -:10310000070E0CC5DBFF0A0E0DC5DBFF090E0EC551 -:10311000DBFF090EDBCFE6FF0A0EDBCFE6FF070E73 -:10312000DBCFE6FF080EDBCFE6FF050EDBCFE6FFC9 -:10313000060EDBCFE6FF7FEC09F0006E060EE15EC7 -:1031400000500101010E526F9ED3060E09C5DBFF30 -:10315000050E0AC5DBFF080E0BC5DBFF070E0CC50D -:10316000DBFF0A0E0DC5DBFF090E0EC5DBFF090EE6 -:10317000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FF75 -:10318000080EDBCFE6FF050EDBCFE6FF060EDBCF3A -:10319000E6FF87EC09F0006E060EE15E00500101CB -:1031A000010E526F70D3060E09C5DBFF050E0AC56E -:1031B000DBFF080E0BC5DBFF070E0CC5DBFF0A0E9D -:1031C0000DC5DBFF090E0EC5DBFF090EDBCFE6FFE9 -:1031D0000A0EDBCFE6FF070EDBCFE6FF080EDBCFE4 -:1031E000E6FF050EDBCFE6FF060EDBCFE6FF90EC39 -:1031F00009F0006E060EE15E00500101010E526FF3 -:1032000042D3060E09C5DBFF050E0AC5DBFF080E1B -:103210000BC5DBFF070E0CC5DBFF0A0E0DC5DBFF80 -:10322000090E0EC5DBFF090EDBCFE6FF0A0EDBCF72 -:10323000E6FF070EDBCFE6FF080EDBCFE6FF050E4D -:10324000DBCFE6FF060EDBCFE6FF9EEC09F0006E5B -:10325000060EE15E00500101010E526F14D3060EFE -:1032600009C5DBFF050E0AC5DBFF080E0BC5DBFF3A -:10327000070E0CC5DBFF0A0E0DC5DBFF090E0EC5E0 -:10328000DBFF0C0E0FC5DBFF0B0E10C5DBFF11C5FE -:10329000E6FF0B0EDBCFE6FF0C0EDBCFE6FF090EE1 -:1032A000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FF44 -:1032B000080EDBCFE6FF050EDBCFE6FF060EDBCF09 -:1032C000E6FFABEC09F0006E090EE15E0050010173 -:1032D000010E526FD8D2060E09C5DBFF050E0AC5D6 -:1032E000DBFF080E0BC5DBFF070E0CC5DBFF0A0E6C -:1032F0000DC5DBFF090E0EC5DBFF0C0E0FC5DBFF96 -:103300000B0E10C5DBFF0E0E12C5DBFF0D0E13C535 -:10331000DBFF0D0EDBCFE6FF0E0EDBCFE6FF11C5A8 -:10332000E6FF0B0EDBCFE6FF0C0EDBCFE6FF090E50 -:10333000DBCFE6FF... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-10 22:01:46
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 1df5dc2b427b81fa86804859729ac50f2bcc4377 (commit) from bef19507734097c59756c638a4e7c3b5c8a93371 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 1df5dc2b427b81fa86804859729ac50f2bcc4377 Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 10 23:01:03 2010 +0100 Corrected turn() function ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index feb3cb4..9f52c7c 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -780,9 +780,7 @@ void turnLeft(short angle, short vel, short acc) { * Lorsqu'exprimn %, c peut e supeur 00 en valeur absolue. */ void turn(short angle, short vel, short acc, short c, BOOL rel) { - float d1, d2, t, vel1, vel2; - - resetAllInterrupt(MOTOR_BOTH); + float d1, d2, d1d2, vel1, vel2, acc1, acc2; if (rel) c = WHEELS_DIST / 2.0 * (c / 100.0); @@ -790,20 +788,26 @@ void turn(short angle, short vel, short acc, short c, BOOL rel) { d1 = (float) angle * 2.0 * (WHEELS_DIST / 2.0 - c); d2 = - (float) angle * 2.0 * (WHEELS_DIST / 2.0 + c); - t = (((d1 >= 0) ? d1 : -d1) + ((d2 >= 0) ? d2 : -d2)) / (2.0 * vel); + d1d2 = (d1 / d2); + d1d2 = (d1d2 >= 0) ? d1d2 : -d1d2; - vel1 = ((d1 >= 0) ? d1 : -d1) / t; - vel2 = ((d2 >= 0) ? d2 : -d2) / t; + vel1 = (2.0 * d1d2 * (float) vel) / (1.0 + d1d2); + vel2 = 2.0 * (float) vel - vel1; + + acc1 = (2.0 * d1d2 * (float) acc) / (1.0 + d1d2); + acc2 = 2.0 * (float) acc - acc1; + + resetAllInterrupt(MOTOR_BOTH); newPosition(MOTOR_RIGHT, (long) (d1 * CONST_POS * COEF_RIGHT_WHEEL), (long) (vel1 * COEF_RIGHT_WHEEL * CONST_VEL), - (long) ((float) acc * COEF_RIGHT_WHEEL * CONST_ACC)); + (long) (acc1 * COEF_RIGHT_WHEEL * CONST_ACC)); newPosition(MOTOR_LEFT, (long) (d2 * CONST_POS * COEF_RIGHT_WHEEL), (long) (vel2 * COEF_RIGHT_WHEEL * CONST_VEL), - (long) ((float) acc * COEF_RIGHT_WHEEL * CONST_ACC)); + (long) (acc2 * COEF_RIGHT_WHEEL * CONST_ACC)); start(MOTOR_BOTH); } diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index ad27b05..442d6f5 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 6e81ea0..12343c1 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,23 +1,23 @@ :020000040000FA -:06000000A7EF32F0120030 +:06000000A6EF32F0120031 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:06080000A7EF32F0120028 -:0608080047EF12F01200A0 -:06081800B4EF12F0120023 -:06082A000400E16500007E -:100830002601000021000000D96500005F010000D2 -:1008400008000000CB650000470100000E0000001A -:0C085000C86500006A0100000300000001 -:04085C00020E37EC65 -:1008600011F004E1020E0CEC11F00BE00A0EE66E42 -:1008700047EC32F0E552020EE66EE66AE66E8BEC6D -:100880000FF0200E37EC11F004E1200E0CEC11F00B -:100890000CE00B0EE66E47EC32F0E552200EE66EF1 -:1008A000E66A020EE66E8BEC0FF012005BEC0EF0C7 +:06080000A6EF32F0120029 +:0608080046EF12F01200A1 +:06081800B3EF12F0120024 +:06082A000400DF65000080 +:100830002601000021000000D76500005F010000D4 +:1008400008000000C9650000470100000E0000001C +:0C085000C66500006A0100000300000003 +:04085C00020E11EC8B +:1008600011F004E1020EE6EC10F00BE00A0EE66E69 +:1008700046EC32F0E552020EE66EE66AE66E9CEC5D +:100880000FF0200E11EC11F004E1200EE6EC10F058 +:100890000CE00B0EE66E46EC32F0E552200EE66EF2 +:1008A000E66A020EE66E9CEC0FF0120027EC0EF0EA :1008B000FE0EDB5006E1F80E96163C0E9416959847 :1008C00008D0FE0EDB0405E1070E9612C30E94124B -:1008D000958860EF0EF0D9CFE6FFE1CFD9FFE65261 +:1008D00095882CEF0EF0D9CFE6FFE1CFD9FFE65295 :1008E000010EE66EE3DFE5528098FE0EDB5004E079 :1008F000FE0EDB5002080FE1839C808A0000839E7D :100900000000000000008450010BDF6E838E0000A9 @@ -103,1443 +103,1442 @@ :100E0000F3CF00F08250400B01E0010E800DF35053 :100E10000010011002100310041005100610DF6E00 :100E2000838EDF5000D0E552E552E7CFD9FF1200A4 -:100E30005BEC0EF0FD0EDBCFE6FFCEEC0EF0E552E4 -:100E4000E71402E1000E01D0010E60EF0EF05BEC42 -:100E50000EF01D0EDEEC0DF0C6EC11F060EF0EF0A2 -:100E60005BEC0EF0000EE66EE66AD6EC10F08BEC52 -:100E70000FF060EF0EF05BEC0EF0CEEC0EF084089D -:100E80000DE0CEEC0EF0C40809E0E66AD6EC10F0F6 -:100E90009EEC0FF07AEC32F0E552EFD71C0EDEEC50 -:100EA0000DF0220E3BEC11F0A2EC0FF0CEEC0EF0A8 -:100EB000800804E0CEEC0EF0C008E7E1CEEC0EF0C6 -:100EC000C00802E1A2EC0FF01E0EDEEC0DF00F0EDA -:100ED0003BEC11F0C6EC11F0FA0EDBCFE6FFFB0E97 -:100EE0008FEC10F0F80EDBCFE6FFF90E8FEC10F070 -:100EF000F60EDBCFE6FFF70E8FEC10F0040EDEEC03 -:100F00000DF01A0EDEEC0DF0100EE66E270EE66EFA -:100F1000C9EC0DF060EF0EF05BEC0EF0080EE12670 -:100F2000010E3CEC0EF0010EE7CFDBFF020E3FECB2 -:100F300011F0DF6E030E3CEC0EF0030EE7CFDBFF8B -:100F4000040E3CEC0EF0020EE7CFDBFF050E3CEC8E -:100F50000EF0050EE7CFDBFF060E3CEC0EF0040EA4 -:100F6000E7CFDBFF070E3CEC0EF0070EE7CFDBFF11 -:100F7000080E3CEC0EF0A1EC0EF0E66AA7EC0FF0C8 -:100F8000090E3CEC0EF0010EE7CFDBFF0A0E3FEC42 -:100F900011F0DF6E0B0E3CEC0EF0030EE7CFDBFF23 -:100FA0000C0E3CEC0EF0020EE7CFDBFF0D0E3CEC1E -:100FB0000EF0050EE7CFDBFF0E0E3CEC0EF0040E3C -:100FC000E7CFDBFF0F0E3CEC0EF0070EE7CFDBFFA9 -:100FD000100E3CEC0EF0A1EC0EF0010EE66EA7EC4C -:100FE0000FF0020EE66EE66E9EEC0FF0E66AB2ECD3 -:100FF0000EF004E1020E0CEC11F002E0000E01D044 +:100E300027EC0EF0FD0EDBCFE6FFA3EC0EF0E55243 +:100E4000E71402E1000E01D0010E2CEF0EF027ECAA +:100E50000EF01D0EABEC0DF0D8EC11F02CEF0EF0F7 +:100E600027EC0EF0000EE66EE66AB8EC10F09CEC93 +:100E70000FF02CEF0EF027EC0EF0A3EC0EF0840830 +:100E80000DE0A3EC0EF0C40809E0E66AB8EC10F03F +:100E9000AAEC0FF079EC32F0E552EFD71C0EABEC78 +:100EA0000DF0220E15EC11F0AEEC0FF0A3EC0EF0ED +:100EB000800804E0A3EC0EF0C008E7E1A3EC0EF01C +:100EC000C00802E1AEEC0FF01E0EABEC0DF00F0E01 +:100ED00015EC11F0D8EC11F0FA0EDBCFE6FFFB0EAB +:100EE0006CEC10F0F80EDBCFE6FFF90E6CEC10F0B6 +:100EF000F60EDBCFE6FFF70E6CEC10F0040EABEC59 +:100F00000DF01A0EABEC0DF0100EE66E270EE66E2D +:100F10009FEC0DF02CEF0EF027EC0EF0080EE12602 +:100F2000010E08EC0EF0010EE7CFDBFF020E19EC0C +:100F300011F0DF6E030E08EC0EF0030EE7CFDBFFBF +:100F4000040E08EC0EF0020EE7CFDBFF050E08ECF6 +:100F50000EF0050EE7CFDBFF060E08EC0EF0040ED8 +:100F6000E7CFDBFF070E08EC0EF0070EE7CFDBFF45 +:100F7000080E08EC0EF083EC0EF0E66AB3EC0FF00E +:100F8000090E08EC0EF0010EE7CFDBFF0A0E19EC9C +:100F900011F0DF6E0B0E08EC0EF0030EE7CFDBFF57 +:100FA0000C0E08EC0EF0020EE7CFDBFF0D0E08EC86 +:100FB0000EF0050EE7CFDBFF0E0E08EC0EF0040E70 +:100FC000E7CFDBFF0F0E08EC0EF0070EE7CFDBFFDD +:100FD000100E08EC0EF083EC0EF0010EE66EB3EC92 +:100FE0000FF0020EE66EE66EAAEC0FF0E66A94ECE5 +:100FF0000EF004E1020EE6EC10F002E0000E01D06B :10100000010E006E080EE15C02E2E16AE552E16E5B -:10101000005060EF0EF05BEC0EF00C0EE126EDECF4 -:101020000EF0D950F20F0FEC11F0080EEECFDBFFEF +:1010100000502CEF0EF027EC0EF00C0EE126B9EC90 +:101020000EF0D950F20FE9EC10F0080EEECFDBFF16 :10103000090EEECFDBFF0A0EEECFDBFF0B0EEECF7D -:10104000DBFF1F0EDEEC0DF0080EDBCF00F0090E0B -:10105000DBCF01F00A0EDBCF02F00B0EDBCF03F08B -:10106000B5EC0FF00CE02B0E3BEC11F00A0EDBCFD1 -:10107000E6FF0B0E8FEC10F013EC0FF003D00B0E0D -:10108000E66EE66AC9EC0DF0B6EC11F057EC0FF025 -:1010900009E1E2EC0DF0C9EC0DF0EAEC10F0D6EC51 -:1010A00010F01CD057EC0FF003E0FE0EDB0408E15B -:1010B000E2EC0DF04BEC0FF0EAEC10F04BEC0FF023 -:1010C00057EC0FF003E0FE0EDB500AE1E2EC0DF00E -:1010D000E66AB6EC10F0EAEC10F0E66AB6EC10F056 -:1010E0000C0EE15C02E2E16AE552E16E60EF0EF0A7 -:1010F0005BEC0EF00A0EE12605EC0FF0FA0EDBCFEA -:10110000EEFFFB0EDBCFEEFFFC0EDBCFEEFFFD0EA6 -:10111000DBCFEEFFEDEC0EF0080EF36EDB6E090E8A -:10112000F3CFDBFF1F0EDEEC0DF0B8EC0EF0B5ECEC -:101130000FF007E0D950080FE96EDACFEAFFEE8A28 -:10114000ED5257EC0FF00BE1F50EDB50FF0802E11A -:101150004FEC0FF013EC0FF0D6EC10F01FD057EC63 -:101160000FF003E0FE0EDB040AE1F50EDB50FF0892 -:1011700002E14FEC0FF013EC0FF04BEC0FF057ECDB -:101180000FF003E0FE0EDB500BE1F50EDB50FF0825 -:1011900002E14FEC0FF013EC0FF0E66AB6EC10F042 -:1011A000B8EC0EF0B5EC0FF002E0B6EC11F0020E68 -:1011B000DBCFE6FF030E8FEC10F0EAEC10F0C9EC89 -:1011C0000DF00A0EE15C02E2E16AE552E16E60EFC9 -:1011D0000EF05BEC0EF0F90EDBCFE6FFE66AE66A96 -:1011E000E66AE66AD950FA0F0FEC11F0F5EC10F050 -:1011F000D6EC10F07DDF006E0A0EE15E005060EF6D -:101200000EF05BEC0EF0FE0EDB5003E057EC0FF03F -:1012100013E10A0EE66EE66A14EC11F0E66A4CEC95 -:1012200011F0F3CF61F1F4CF62F1E66A4CEC11F00A -:10123000F3CF5FF1F4CF60F1FE0EDB0403E057EC77 -:101240000FF015E10A0EBAEC0FF014EC11F0010EDC -:10125000E66E4CEC11F0F3CF65F1F4CF66F1010EC0 -:10126000E66E4CEC11F0F3CF63F1F4CF64F1010EB4 -:10127000DEEC0DF060EF0EF05BEC0EF01F0EDEEC1E -:101280000DF0C6EC11F0010EDEEC0DF060EF0EF08B -:101290001FEC11F005E12D6A2E6A2F6A306A0BD01F -:1012A0000A0E24EC11F01AEC0FF0F3CFDEFFF4CFAE -:1012B000DDFF64EC0FF0040EE15C02E2E16AE5524E -:1012C000E16E60EF0EF01FEC11F005E12D6A2E6A61 -:1012D0002F6A306A07D00B0E24EC11F0DE6ADD6A4B -:1012E00064EC0FF0040EE15C02E2E16AE552E16EAB -:1012F00060EF0EF05BEC0EF057EC0FF003E1F36AD9 -:10130000F46A05D00D0EDEEC0DF01AEC0FF060EF74 -:101310000EF0FEEC10F072EC0FF0C5EC0EF060EF8A -:101320000EF0FEEC10F07AEC0EF0020EC5EC0EF0B2 -:1013300060EF0EF0EAEC11F07AEC0EF0E66A6BDE8C -:1013400094EC0FF039EC10F0B3EC10F0D0EF10F09B -:10135000EAEC11F0D3EC0EF094EC0FF039EC10F055 -:101360007AEC0EF0010ED0EF10F05BEC0EF0140EE4 -:10137000E126FDEC0EF0F60EDB5020E0006A800E58 -:10138000016E010E026E430E036EE5EC11F02CECC3 -:1013900012F0336A346AC80E356E420E366E7AEC3D -:1013A00024F061EC11F0ECDBAFEC11F03AEC25F03D -:1013B000F70E2FC0DBFFF80E30C0DBFFB9EC10F0EA -:1013C00044EC11F0EFEC10F00C6A800E0D6E010E83 -:1013D0000E6E430E0F6EE5EC11F05DEC11F06AEC51 -:1013E00011F009EC12F06FEC0FF0CADBAFEC11F06A -:1013F0002EC0DEFF2FC0DEFF30C0DEFF31C0DDFFBC -:10140000DD52DD5203EC0FF09AEC0EF015EC12F009 -:1014100021EC0FF0EFEC10F0106A800E116E010E4F -:10142000126E430E136EE5EC11F074EC10F010C068 -:101430002EF011C02FF012C030F013C031F0E4ECE8 -:1014400023F097EC11F0AFEC11F0040E2EC0DBFF8F -:10145000050E2FC0DBFF060E30C0DBFF070E31C0CC -:10146000DBFFDAEC10F099EC0FF0D7EC0EF0A0EC0B -:1014700025F0010A05E005EC0FF079EC0FF00FD034 -:1014800005EC0FF0EECF0CF0EECF0DF0EECF0EF03E -:10149000EFCF0FF09AEC0EF0E6DB15EC12F0040E35 -:1014A000DBCF14F0050EDBCF15F0060EDBCF16F008 -:1014B000070EDBCF17F099EC0FF0CFEC11F0A0EC9A -:1014C00025F0010A0DE0040EDBCF10F0050EDBCF96 -:1014D00011F0060EDBCF12F0070EDBCF13F018D0A1 -:1014E000040EDBCF18F0050EDBCF19F0060EDBCFB4 -:1014F0001AF0070EDBCF1BF09AEC0EF018C02EF09E -:1015000019C02FF01AC030F01BC031F02FEC12F0D0 -:1015100010C033F011C034F012C035F013C036F0F3 -:1015200028EC11F0206A216A226A400E236E33EC07 -:1015300012F0F1DB25DB9BEC10F003EC11F036EC44 -:1015400012F07AEC24F0080E2EC0DBFF090E2FC03B -:10155000DBFF0A0E30C0DBFF0B0E31C0DBFF05ECFA -:101560000FF079EC0FF019EC11F00BE005EC0FF037 -:10157000EECF00F0EECF01F0EECF02F0EFCF03F0B0 -:1015800004D0DAEC10F0EEEC11F078EC10F027EC6F -:101590000FF0040EDBCF04F0050EDBCF05F0060ED6 -:1015A000DBCF06F0070EDBCF07F019EC11F002E0FD -:1015B000DFDB0ED0040EDBCF08F0050EDBCF09F029 -:1015C000060EDBCF0AF0070EDBCF0BF0EEEC11F0CE -:1015D00078EC10F034EC0FF0CCEC11F00C0EDBCF0B -:1015E00014F00D0EDBCF15F00E0EDBCF16F00F0E44 -:1015F0000DDB05EC0FF0EECF20F0EECF21F0EECFBB -:1016000022F0EFCF23F0F2EC11F0CDDB246E0D0EC3 -:10161000E15E2450CCEC11F0100EDBCF14F0110E73 -:10162000DBCF15F0120EDBCF16F0130EEFDA040E3F -:10163000DBCF20F0050EDBCF21F0060EDBCF22F052 -:10164000070EDBCF23F0F2EC11F0B3EC10F0E66EF6 -:10165000E2DC246E0D0EE15E2450DFEC11F0140E7E -:10166000E15C02E2E16AE552E16E2AD324DB3C0E42 -:10167000E126C9DB19EC12F097EC11F098DB15ECC0 -:1016800012F033EC12F08EEC11F033EC12F082EC2D -:101690000FF076DA93EC10F073DA28EC11F0336A7D -:1016A000346A800E5FEC0FF0380E2EC0DBFF390E6F -:1016B0002FC0DBFF3A0E30C0DBFF3B0E31C0DBFF3B -:1016C00019EC12F072DA7CDBBEEC10F0AFDA78DBEA -:1016D0002CEC2DF0086E080EE15E0850080E2DC0AF -:1016E000DBFF090E2EC0DBFF0A0E2FC0DBFF0B0E47 -:1016F00030C0DBFF82DBF60EDB5007E0D950F40F81 -:101700000FEC11F0EE50ED1039E1E3DA080EDBCF0B -:101710000EF0090EDBCF0FF00A0EDBCF10F00B0E30 -:1017200017EC10F015DAC3EC10F02E6A2F6A800E59 -:10173000306E400E316E380EDBCF33F0390EDBCF1A -:1017400034F03A0EDBCF35F03B0E0DEC12F03CDB03 -:1017500037DB73DB2DC002F02EC003F02FC004F086 -:1017600030C005F02DC02EF02DEC11F0E4EC10F09F -:10177000D0DD0A6E060EE15E0A50BAD1380EDBCF1C -:1017800004F0390EDBCF05F03A0EDBCF06F03B0E4E -:10179000DBCF07F0C3DB21EC12F01CEC12F0C4DA53 -:1017A000B1DB4FDB7AEC24F08EEC11F036EC12F06A -:1017B000E4EC23F0140E2EC0DBFF150E2FC0DBFF70 -:1017C000160E30C0DBFF170EF5DBB9EC10F074EC31 -:1017D00010F0AFEC11F0180E2EC0DBFF190E2FC069 -:1017E000DBFF1A0E30C0DBFF1B0EE4DBBEEC10F09B -:1017F00074EC10F0AFEC11F01C0E2EC0DBFF1D0ED0 -:101800002FC0DBFF1E0E30C0DBFF1F0E31C0DBFF21 -:101810001C0EDBCF00F01D0EDBCF01F01E0EDBCF68 -:1018200002F01F0EDBCF03F085DAAFEC11F0200ED3 -:101830002EC0DBFF210E2FC0DBFF220E30C0DBFFEE -:10184000230E31C0DBFFD950180FE96EDACFEAFF63 -:10185000240EEECFDBFF250EEECFDBFF260EEECF04 -:10186000DBFF270EEECFDBFFB9EC10F0C1EC11F07F -:10187000200EDBCF33F0210EDBCF34F0220EDBCF96 -:1018800035F0230E96EC10F0280E2EC0DBFF290E4B -:101890002FC0DBFF2A0E30C0DBFF2B0E31C0DBFF79 -:1018A000BEEC10F0C1EC11F0240EDBCF33F0250EAE -:1018B000DBCF34F0260EDBCF35F0270E96EC10F0A0 -:1018C0002C0E2EC0DBFF2D0E2FC0DBFF2E0E30C0E6 -:1018D000DBFF2F0E31C0DBFF2C0EDBCF04F02D0E13 -:1018E000DBCF05F02E0EDBCF06F02F0EDBCF07F09F -:1018F00021DA93D9CDEC24F0A5EC10F0300E2EC0F7 -:10190000DBFF310E2FC0DBFF320E30C0DBFF330EAA -:1019100031C0DBFF280EDBCF2EF0290EDBCF2FF0FE -:101920002A0EDBCF30F02B0EDBCF31F0A5EC10F020 -:10193000340E2EC0DBFF350E2FC0DBFF360E30C05D -:10194000DBFF370E31C0DBFFD950300FBDD9D95086 -:10195000340FBAD92CEC2DF0006E080EE15E005069 -:101960000C0E2DC0DBFF0D0E2EC0DBFF0E0E2FC0A8 -:10197000DBFF0F0E30C0DBFF006A016A026A400E17 -:10198000036E00C0E6FF01C0E6FF02C0E6FFE66EA0 -:1019900095DBA5DA15DAF6EC11F02DC014F02EC0A7 -:1019A00015F02FC016F030C017F050EC11F02CECF1 -:1019B0002DF0186E080EE15E1850E552E7CF03F0E7 -:1019C000E552E7CF02F0E552E7CF01F0E552E7CF6D -:1019D00000F02DC004F02EC005F02FC006F030C07E -:1019E00007F018DAAFEC11F03FDAF60EDB50020820 -:1019F0001DE1A1EC11F0E3EC23F0D8EC11F0E4ECE4 -:101A000023F024D93EDA060E2FC0DBFF070E30C0CC -:101A1000DBFF47EC11F00AD9020EDBCF2FF0030EEB -:101A20005BDB040E2FC0DBFF050E44D02E6A2F6A4D -:101A3000306A400E316E080EDBCF33F0090EDBCF7B -:101A400034F00A0EDBCF35F00B0EDBCF36F0C7DB00 -:101A50000C0EDBCF04F00D0EDBCF05F00E0EDBCF4E -:101A600006F00F0EDBCF07F004C033F005C034F0F2 -:101A700006C035F007C036F0E3EC23F0E8D9A1EC5E -:101A800011F0E4EC23F0D8EC11F0E3EC23F0DED815 -:101A9000F8D9040E2FC0DBFF050E30C0DBFF020EAD -:101AA000DBCF2FF0030EC2D8F2DB16DB060E2FC001 -:101AB000DBFF070E30C0DBFF4BD8A5D8040EDBCF11 -:101AC0002FF0050E71DAECDBE2DBCEDB6CD9206E99 -:101AD0000D0EE15E205097D8060EDBCF2FF0070EDB -:101AE00063DA00DADBCF2FF0030EBEDB3CDB4DD92F -:101AF0003C0EE15C02E2E16AE552E16EE1D0E66AA9 -:101B000048EC09F0E55201015F512D5C066E605111 -:101B10002E58076E61512F58086E6251B0D0010ED9 -:101B2000E66E48EC09F0E552010163512D5C066E4A -:101B300064512E58076E65512F58086E66519FD01C -:101B4000040E95DB03E0040E67DB01E1000C010CE1 -:101B5000F7DF0009FDE01200CCEC11F00FDB24DA16 -:101B60009FDB19EF12F04FDBBEDB3AEC12F02DC019 -:101B700018F02EC019F02FC01AF030C01BF0120060 -:101B80002EC033F02FC034F030C035F031C036F005 -:101B900012000CDBB6EF10F000C02EF001C02FF0E9 -:101BA00002C030F003C031F012002EC000F02FC090 -:101BB00001F030C002F031C003F01200E66EF6DA38 -:101BC00014EF11F0FA0EDBCF00F0FB0EDBCF01F0CB -:101BD000FC0EDBCF02F0FD0EDBCF03F0000E006C3D -:101BE000011E0122021E0222031E032200C0DFFF8B -:101BF000010E01C0DBFF020E02C0DBFF030E03C0BB -:101C0000DBFFFBEF11F0E1DBBEEF0FF0DBCF17F0F6 -:101C10006ADB89DA71DB50EF11F004C02EF005C0E9 -:101C20002FF006C030F007C031F0120046DB61EF44 -:101C300011F002C02EF011DBE3EC23F0C5DA9AECD0 -:101C400009F0126E060EE15E12501200100EDBCF8C -:101C500033F0110EDBCF34F0120EDBCF35F0130E64 -:101C6000DCDB3AEF25F00CC02EF00DC02FF00EC0DB -:101C700030F00FC031F0120002DBE76E1200305876 -:101C8000096E06C02DF007C02EF008C02FF0306E90 -:101C9000CAEC23F02EC002F02FC003F030C004F0D5 -:101CA00031C005F020DB7AEC24F0ACDB2FC0F3FF71 -:101CB00030C0F4FF1200D9CFE6FFE1CFD9FF120008 -:101CC000E552E7CFD9FF1200E96EDACFEAFFF5EF70 -:101CD00010F059DA026A036AB40E046E420E056E01 -:101CE0001200350E336EFA0E346E0E0E356E3C0E4B -:101CF000366E1200000E186C191E19221A1E1A22B6 -:101D00001B1E1B2218C0E6FF19C0E6FF1AC0E6FF23 -:101D10001BC0E6FF12002EC024F02FC025F030C0FB -:101D200026F031C027F01200F40EDBCF2FF0F50EB5 -:101D30005DEF11F0336A346A800E356EBF0E366E79 -:101D40001200060EE7CFDBFFDBCFE6FF070EDBCF8F -:101D5000E6FF040EDBCFE6FF050EDBCFE6FF4BDB35 -:101D6000EAEF10F018EC07F0E552E5520009120016 -:101D7000040EDBCF00F0050EDBCF01F0060EDBCF4B -:101D800002F0070EDBCF03F01200E66E0BEC08F05A -:101D9000206E0D0EE15E2050DFEF11F007DAB8EC97 -:101DA00006F0E55212007CDAE66A0BEF08F008C094 -:101DB0002EF009C02FF00AC030F00BC031F0120035 -:101DC00044DB31C0E6FF12002EC006F02FC007F042 -:101DD00030C008F031C009F01200D950F60F1FDAF8 -:101DE000040EEECFDBFF050EEECFDBFF060EEECFCF -:101DF000DBFF070EEECFDBFF1200020EE66E30ECCB -:101E000007F0E552120015DBEED1D9CFE9FFDACFAA -:101E1000EAFF12002DC033F02EC034F02FC035F091 -:101E200030C036F01200080EDBCFE6FF090EDBCF24 -:101E3000E6FF1200BBD94CEF11F03FEC29F0E55260 -:101E4000F0D2336A346A356A400E366E12000C0ED8 -:101E50002EC0DBFF0D0E2FC0DBFF0E0E30C0DBFFF0 -:101E60000F0E31C0DBFF1200100E2EC0DBFF110E73 -:101E70002FC0DBFF120E30C0DBFF130E31C0DBFFC3 -:101E80001200020E2FC0DBFF030E30C0DBFFF6DABC -:101E9000DBCF30F01200010EE66EB6EF10F0D95035 -:101EA000080FE96EDACFEAFFEE52ED881200FE0E5F -:101EB000DB5002081200356E430E366E1200356E8E -:101EC000400E366E7AEF24F0DECF2DF0DECF2EF00E -:101ED000DECF2FF0DDCF30F0DD52DD521200E3EC2B -:101EE00023F081D1DDD9020E1200336A800E346EE8 -:101EF0001200EECF04F0EECF05F0EECF06F0EFCFFC -:101F000007F012002EC018F02FC019F030C01AF0E0 -:101F100031C01BF0120027EC07F083D20C6A0D6A67 -:101F20000E6A400E0F6E1200286E0D0EE15E2850F4 -:101F30001200336A346A356A366A120075D9020EA5 -:101F4000E66E120033D930EC07F0E55212003BEC9C -:101F500007F0006E090EE15E00501200020EF3CF92 -:101F6000DBFF030EF4CFDBFF120000500110021064 -:101F700003101200E66E010EE66E12006DDAB3D9A0 -:101F800054DACC0E336EBC0E346E8C0E356E3B0EB6 -:101F9000366E70DA2DC000F02EC001F02FC002F0B6 -:101FA00030C003F050EF11F088D9B8D99CD957DA76 -:101FB0007CEF11F031C0DBFF046A056A800E066E0B -:101FC0003F0E076EABDF04C0E6FF05C0E6FF06C0AC -:101FD000E6FF07C0E6FF0CC0E6FF0DC0E6FF0EC03F -:101FE000E6FFE66E03DAE552E7CF0FF0E552E7CF02 -:101FF0000EF0E552E7CF0DF0E552E7CF0CF0E552D9 -:10200000E7CF07F0E552E7CF06F0E552E7CF05F05E -:10201000E552E7CF04F02DC010F02EC011F02FC014 -:1020200012F030C013F0F6DE1EDE1CEF12F0DBCF34 -:1020300011F0336A346A340E3EDF0EC02EF00FC04A -:102040002FF010C030F011C031F0CDEC24F02EC0D4 -:102050000AF02FC00BF030C00CF031C00DF0DB0ED9 -:10206000336E0F0E346E490E2ADFAEDE89DD19EFB6 -:102070000EF072DD50DE35DECDEC24F02EC020F007 -:102080002FC021F030C022F031C023F02EDF810EAE -:1020900012DFCDEC24F0B3EF0DF0140EDBCF00F027 -:1020A000150EDBCF01F0160EDBCF02F0170EDBCFE3 -:1020B00003F01BDF010EFFDECCEF0DF0140EDBCFC3 -:1020C0000CF0150EDBCF0DF0160EDBCF0EF0170E59 -:1020D000DBCF0FF021EF12F0BFD944D9CFD9EDD823 -:1020E00026D93DD93AEF25F0E8D818D9C0EF0DF040 -:1020F000080EDBCF0CF0090EDBCF0DF00A0EDBCFA4 -:102100000EF00B0EDBCF0FF00CC033F00DC034F02F -:102110000EC035F00FC036F03FDD7AEF24F0DBCF94 -:10212000E6FFC9EF0DF03BD92FEF12F076D9BCD8FE -:102130009DD9E3EF23F020C02EF021C02FF022C064 -:1021400030F023C031F0CDEF24F0140EDBCF33F0AC -:10215000150EDBCF34F0160EDBCF35F0170EDBCFCC -:1021600036F043EF12F09CD8010E120025EC05F07A -:1021700058D1FD0EDBCF2FF0FE0E1200FB0EDBCF91 -:102180002FF0FC0E1200F70EDBCFE6FFF80EDBCFD0 -:10219000E6FFF90EDBCFE6FFFA0EDBCFE6FF12001B -:1021A000E66E0BEC08F0C0DE0AD98AD5FE0EDBCF56 -:1021B000E6FF12002ADEEECF08F0EECF09F0EECFF8 -:1021C0000AF0EFCF0BF012001DD92FC0E6FF30C090 -:1021D000E6FF1200DECFE6FFDDCFE6FF1200CDEC1A -:1021E00024F0D5EF0DF054EF11F0EECFE6FFEECF77 -:1021F000E6FFEECFE6FFEFCFE6FF12005CDDFDDD90 -:10220000ABDCB3EF0DF02EC01CF02FC01DF030C0C2 -:102210001EF031C01FF01200ADDEB2EF0EF0E96E1D -:10222000FF0EDA20EA6E1200A6EC04F0E552E55249 -:1022300012007FDEF2DCA0EC25F0010A12003BDD8B -:10224000040EE12657EF0FF0B9DCF4DDAEEF0FF02E -:10225000E4DCE4EC23F0D5EF0DF003C02FF004C074 -:1022600030F005C031F0120028D8B3EF0DF0E66E63 -:10227000E66AB2EF0EF0E66EE66AC9EF0DF0E66EC2 -:1022800099EC31F0E5521200D1DC21EF0FF0000E95 -:10229000DFCF2FF0010E12000AEC06F0E55212001B -:1022A0002DC0E6FF25EF12F02EC008F02FC009F078 -:1022B00030C00AF031C00BF01200DBCF30F0B5EFC8 -:1022C00023F02EC004F02FC005F030C006F031C05E -:1022D00007F012002EC010F02FC011F030C012F025 -:1022E00031C013F01200330E336EE20E346EC20EA4 -:1022F000356E420E366E1200BD0E336E370E346EE2 -:10230000860E356E410E366EB5D82DC00CF02EC03F -:102310000DF02FC00EF030C00FF012002EC014F0E0 -:102320002FC015F030C016F031C017F012002EC0CB -:102330000CF02FC00DF030C00EF031C00FF0C0EF28 -:102340000DF0C7DC0C0EDBCF0EF00D0EDBCF0FF067 -:102350000E0EDBCF10F00F0E6ADE4DEF10F01CDC1E -:10236000CDEF24F00DDC59DC43EF12F0060EDBCF8D -:10237000E6FF070ED4DE040EDBCFE6FF050E8FEF7F -:1023800010F082DF80D89ADEE3EF23F0FC0EDBCF83 -:10239000E6FFFD0E8FEF10F071D8BEEF0FF014C006 -:1023A0002EF015C02FF016C030F017C031F012001B -:1023B0004DDC2FC0DEFF30C0DDFF4DEF10F0020E10 -:1023C000E66E01EC09F0E5521200F70EDBCF2FF0BC -:1023D000F80E120070DC11DD39EF10F0ABDCE7DC39 -:1023E000EFEF10F07EDCA7DEB3EF0DF0D950380F21 -:1023F0006BDC1DEF0FF0020EDBCFE6FF030EDBCF31 -:10240000E6FF12003AEC25F02FC000F030C001F0DA -:102410001200C0EC0DF033EF0EF0DBCF36F0CDEF55 -:1024200024F0E552E552E5521200CDEC24F061EFC4 -:1024300011F09FDE5DEF11F0CDEC24F035DFB2EF4F -:1024400011F072DC47DF09EF12F02EC0E6FF2FC05B -:10245000E6FF30C0E6FF120030DF54EF11F0CDECA4 -:1024600024F06AEF11F08ADE5DEF11F0C0EC0DF0A0 -:10247000CCEF0DF0CDEC24F069EF25F0F90EDBCFB9 -:0E2480002FF0FA0E12007AEC24F0D5EF0DF0DA -:02248E00DACFA3 -:10249000E4FFE2CFDAFFE9CFE4FFEACFE4FFF6CFD3 -:1024A000E4FFF7CFE4FFF5CFE4FFF3CFE4FFF4CF91 -:1024B000E4FFFACFE4FF00EE29F0140EE80403E392 -:1024C000EECFE4FFFBD700EE00F0290EE80403E3B3 -:1024D000EECFE4FFFBD7E5EC1DF09EA013D0EFECB0 -:1024E0001DF001014D2B000E4E23E80E4D5D030E35 -:1024F0004E5905E34D6B4E6B4F2B000E502360EC95 -:102500002BF09E90F2A003D02EEC04F0F290F8ECA9 -:102510001DF002E2E16AE552E16EE552E7CFD9FF34 -:10252000E55200EE28F0290EE80403E3E5CFEDFFC5 -:10253000FBD700EE3CF0140EE80403E3E5CFEDFF1B -:10254000FBD7E5CFFAFFE5CFF4FFE5CFF3FFE5CF0B -:10255000F5FFE5CFF7FFE5CFF6FFE5CFEAFFE5CFE3 -:10256000E9FFE5CFDAFF1100D8CFE4FFE0CFE4FFC9 -:10257000E46EDACFE4FFE2CFDAFFF3CFE4FFF4CF8B -:10258000E4FFE5EC1DF0F8EC1DF002E2E16AE55233 -:10259000E16EE552E7CFD9FFE552E5CFF4FFE5CF95 -:1025A000F3FFE5CFDAFFE550E5CFE0FFE5CFD8FF59 -:1025B000100004D843EC1EF063D8FCD70F0EC112F4 -:1025C00002D80DEF1EF008EC1EF0E652BCEC1DF038 -:1025D0000101676F070E675D10E1E66A99EC31F063 -:1025E000E552DF6E000EDF8000EC1EF0E66A7AEC4A -:1025F00032F0E552DF7000EC1EF01C0E9316D08E08 -:10260000F28EF28CF286F30E8C1695160101476B52 -:10261000486B496B4A6B010E4B6F92948094939870 -:1026200081980D0EE66E7C0EE66EE10EE66E0CEC09 -:1026300031F0E552E552E552C70E921694943F0EE2 -:102640009516010EE66E56EC04F0E552838C808AF6 -:1026500082848088838E80868294010EE66EB5EC3B -:1026600032F0E55282849D80C50EE66E0AEC32F0AF -:10267000E552EFEC1DF0E552E552E7CFD9FF12002D -:10268000D9CFE6FFE1CFD9FF0F0EE12601014B5173 -:1026900002E001EC1DF0200E0101005D03E36D502E -:1026A000020B13E0010152510EE0E66A010EE66EE4 -:1026B000020EE66E3CEC09F0E552E552E552A8EC5C -:1026C0000DF00101526BF7EF1CF0010149514A1165 -:1026D00002E1000E08D049C1E9FF4AC1EAFFEF500C -:1026E000800B01E0010E000947E101014651EA6A51 -:1026F000260FE96E010EEA22EF5000083DE20501C7 -:10270000406B01014C514C2B0501416F0501040E3A -:10271000426F01014651EA6A260FE96E010EEA2274 -:10272000EFCF43F5400EE66E400EE66E050EE66E08 -:10273000010EE66E010EE66E5EEC22F0006E050EF6 -:10274000E15E0050F3CF49F1F4CF4AF10101465167 -:10275000EA6A260FE96E010EEA22EF6A010146518C -:10276000000803E20101460707D0010145510008B6 -:1027700003E201011F0E466F010149514A1102E1B6 -:10278000000E08D049C1E9FF4AC1EAFFEF50800BB3 -:1027900001E0010E00092CE10101520529E1A0EC44 -:1027A0000DF0000925E00501406B01014C514C2B57 -:1027B0000501416F05010A0E426F0501436B0501DA -:1027C000010E486F400EE66E400EE66E050EE66E98 -:1027D000010EE66E010EE66E5EEC22F0006E050E56 -:1027E000E15E0050F3CF49F1F4CF4AF10101526BA1 -:1027F00001015151020A10E0030A01E021D0020E4A -:10280000E66EACEC2CF0E5528CEC07F0000903E02E -:102810000101020E516F16D0200EE66E030EE66E19 -:10282000C80EE66EE66AE80EE66E030EE66E89EC0A -:1028300009F0006E060EE15E00500101516B02D0FE -:102840000101516B01014751481102E1000E08D00E -:1028500047C1E9FF48C1EAFFEF50800B01E0010EDC -:10286000000902E0F7EF1CF005010251070A02E13E -:1028700058EF1CF00D0A01E167D2010A01E126D2EE -:102880000D0A01E1BED1040A1AE0030A07E0010AB9 -:1028900002E0B6EF1CF0FF00F7EF1CF0E66A99ECDF -:1028A00031F0E552DF6E000EDB80DFCFE6FFE66A37 -:1028B00079EC31F0E552E552FF00F7EF1CF0010131 -:1028C00049514A1102E1000E08D049C1E9FF4AC14D -:1028D000EAFFEF50800B01E0010E000901E08FD10B -:1028E00000C540F50501416B0501030E426F05016E -:1028F000436B05010851100A01E135D11F0A01E1BE -:10290000F8D0080A01E1BBD0010A01E17ED0020A39 -:1029100071E0070A64E0010A20E0030A06E0010A08 -:1029200001E043D167C148F543D10501486BEF0E83 -:10293000006E630E016E026A00C0E6FF01C0E6FF92 -:1029400002C0E6FF480EE66E050EE66E5DEC31F065 -:10295000036E050EE15E03502BD10501486BE30EBB -:10296000006E630E016E026A00C0E6FF01C0E6FF62 -:1029700002C0E6FF480EE66E050EE66E5DEC31F035 -:10298000036E050EE15E0350E10E006E630E016EF4 -:10299000026A00C0E6FF01C0E6FF02C0E6FF480E83 -:1029A000E66E050EE66E5DEC31F0036E050EE15E3F -:1029B0000350D80E006E630E016E026A00C0E6FF7F -:1029C00001C0E6FF02C0E6FF480EE66E050EE66EA9 -:1029D0005DEC31F0036E050EE15E0350E9D092CF5D -:1029E00048F593CF49F594CF4AF595CF4BF596CF5F -:1029F0004CF5DED080CF48F581CF49F582CF4AF53E -:102A000083CF4BF584CF4CF5D3D0E66A06EC2CF09F -:102A1000E552010E2DC0DBFF020E2EC0DBFF030EC0 -:102A20002FC0DBFF040E30C0DBFF040EDBCF48F508 -:102A3000030EDBCF49F5020EDBCF4AF5010EDBCFEB -:102A40004BF5010EE66E06EC2CF0E552010E2DC0A2 -:102A5000DBFF020E2EC0DBFF030E2FC0DBFF040ED8 -:102A600030C0DBFF040EDBCF4CF5030EDBCF4DF5A2 -:102A7000020EDBCF4EF5010EDBCF4FF599D0E66AA3 -:102A800048EC09F0E552010E2DC0DBFF020E2EC00E -:102A9000DBFF030E2FC0DBFF040E30C0DBFF040E94 -:102AA000DBCF48F5030EDBCF49F5020EDBCF4AF54D -:102AB000010EDBCF4BF5010EE66E48EC09F0E55256 -:102AC000010E2DC0DBFF020E2EC0DBFF030E2FC058 -:102AD000DBFF040E30C0DBFF040EDBCF4CF5030E32 -:102AE000DBCF4DF5020EDBCF4EF5010EDBCF4FF500 -:102AF0005FD0E66A63EC09F0E552010E2DC0DBFF02 -:102B0000020E2EC0DBFF030E2FC0DBFF040E30C011 -:102B1000DBFF040EDBCF48F5030EDBCF49F5020ED9 -:102B2000DBCF4AF5010EDBCF4BF5010EE66E63EC11 -:102B300009F0E552010E2DC0DBFF020E2EC0DBFFB7 -:102B4000030E2FC0DBFF040E30C0DBFF040EDBCF13 -:102B50004CF5030EDBCF4DF5020EDBCF4EF5010E2B -:102B6000DBCF4FF525D0E66A7AEC09F0E552050E89 -:102B7000F3CFDBFF060EF4CFDBFF060EDBCF48F50D -:102B8000050EDBCF49F5010EE66E7AEC09F0E55251 -:102B9000050EF3CFDBFF060EF4CFDBFF060EDBCF17 -:102BA0004AF5050EDBCF4BF503D00501020E436F4E -:102BB000400EE66E400EE66E050EE66E010EE66E07 -:102BC000010EE66E5EEC22F0006E050EE15E005036 -:102BD000F3CF49F1F4CF4AF1400EE66E000EE66EF7 -:102BE000050EE66EE66A010EE66E5EEC22F0006E01 -:102BF000050EE15E0050F3CF47F1F4CF48F1F7EF57 -:102C00001CF005010851030A37E0010A25E0030A18 -:102C100013E0010A01E040D00501095192120501BB -:102C20000A51931205010B51941205010C51951292 -:102C300005010D51961235D00501091D92160501A9 -:102C40000A1D931605010B1D941605010C1D951602 -:102C500005010D1D961625D00501091D89160501D2 -:102C60000A1D8A1605010B1D8B1605010C1D8C16FD -:102C700005010D1D8D1615D005010951891205019B -:102C80000A518A1205010B518B1205010C518C124D -:102C900005010D518D1205D0030EE66E47EC32F0A2 -:102CA000E552400EE66E000EE66E050EE66EE66A32 -:102CB000010EE66E5EEC22F0006E050EE15E005045 -:102CC000F3CF47F1F4CF48F1F7EF1CF005010851BD -:102CD000020A09E0030A01E01DD009C5E6FFACECD9 -:102CE0002CF0E5521CD009C5E6FFBCEC2CF0E552F7 -:102CF000010152510EE0E66A010EE66E020EE66E2A -:102D00003CEC09F0E552E552E552A8EC0DF001016A -:102D1000526B05D0010EE66E47EC32F0E552400EE4 -:102D2000E66E000EE66E050EE66EE66A010EE66ED3 -:102D30005EEC22F0006E050EE15E0050F3CF47F12D -:102D4000F4CF48F1F7EF1CF005010851060A02E143 -:102D500017EF1CF0080A02E1DDEF1BF0030A02E1A5 -:102D6000D4EF1BF0070A02E170EF1BF0030A02E147 -:102D7000B8EF1AF0010A01E10BD30F0A01E1F4D216 -:102D8000020A01E1A9D2150A01E16AD2140A01E19D -:102D900039D2070A01E108D2010A01E1D7D1030AB9 -:102DA00001E1A6D1010A01E1A0D10C0A01E126D17D -:102DB000030A01E194D0040A02E03FEF1CF0050190 -:102DC000095104E0020E0501095D40E10AC5E6FF74 -:102DD000010EE66E79EC31F0E552E5520BC5E6FFE7 -:102DE000020EE66E79EC31F0E552E5520CC5E6FFD5 -:102DF000030EE66E79EC31F0E552E5520DC5E6FFC3 -:102E0000040EE66E79EC31F0E552E5520EC5E6FFB0 -:102E1000050EE66E79EC31F0E552E5520FC5E6FF9E -:102E2000060EE66E79EC31F0E552E55210C5E6FF8C -:102E3000070EE66E79EC31F0E552E55211C5E6FF7A -:102E4000080EE66E79EC31F0E552E5520501090510 -:102E500004E0020E0501095D40E10AC5E6FF090E26 -:102E6000E66E79EC31F0E552E5520BC5E6FF0A0E4D -:102E7000E66E79EC31F0E552E5520CC5E6FF0B0E3B -:102E8000E66E79EC31F0E552E5520DC5E6FF0C0E29 -:102E9000E66E79EC31F0E552E5520EC5E6FF0D0E17 -:102EA000E66E79EC31F0E552E5520FC5E6FF0E0E05 -:102EB000E66E79EC31F0E552E55210C5E6FF0F0EF3 -:102EC000E66E79EC31F0E552E55211C5E6FF100EE1 -:102ED000E66E79EC31F0E552E55244EF1CF000C5A6 -:102EE00040F50501416B0501030E426F0501436B7F -:102EF000010EE66E99EC31F0E5520501486F020EC5 -:102F0000E66E99EC31F0E5520501496F030EE66E6D -:102F100099EC31F0E55205014A6F040EE66E99EC2A -:102F200031F0E55205014B6F050EE66E99EC31F07C -:102F3000E55205014C6F060EE66E99EC31F0E55254 -:102F400005014D6F070EE66E99EC31F0E552050173 -:102F50004E6F080EE66E99EC31F0E55205014F6FA9 -:102F6000090EE66E99EC31F0E5520501506F0A0E3C -:102F7000E66E99EC31F0E5520501516F0B0EE66EED -:102F800099EC31F0E5520501526F0C0EE66E99ECAA -:102F900031F0E5520501536F0D0EE66E99EC31F0FC -:102FA000E5520501546F0E0EE66E99EC31F0E552D4 -:102FB0000501556F0F0EE66E99EC31F0E5520501F3 -:102FC000566F100EE66E99EC31F0E5520501576F21 -:102FD000400EE66E400EE66E050EE66E010EE66EE3 -:102FE000010EE66E5EEC22F0006E050EE15E005012 -:102FF000F3CF49F1F4CF4AF144EF1CF0E66A010E39 -:10300000E66E79EC31F0E552E552010EE66E020E05 -:10301000E66E79EC31F0E552E552E66A030EE66EB3 -:1030200079EC31F0E552E552E66A040EE66E79EC91 -:1030300031F0E552E552E66A050EE66E79EC31F0C4 -:10304000E552E552E66A060EE66E79EC31F0E5529D -:10305000E552030EE66E070EE66E79EC31F0E552AE -:10306000E552E80EE66E080EE66E79EC31F0E552B8 -:10307000E552E66A090EE66E79EC31F0E552E5526A -:10308000010EE66E0A0EE66E79EC31F0E552E5527D -:10309000E66A0B0EE66E79EC31F0E552E552E66A2F -:1030A0000C0EE66E79EC31F0E552E552E66A0D0E53 -:1030B000E66E79EC31F0E552E552E66A0E0EE66E08 -:1030C00079EC31F0E552E552030EE66E0F0EE66E36 -:1030D00079EC31F0E552E552E80EE66E100EE66E40 -:1030E00079EC31F0E552E552CFD38CEC07F0CCD33C -:1030F000060E09C5DBFF050E0AC5DBFF080E0BC572 -:10310000DBFF070E0CC5DBFF0A0E0DC5DBFF090E4A -:103110000EC5DBFF090EDBCFE6FF0A0EDBCFE6FFB5 -:10312000070EDBCFE6FF080EDBCFE6FF050EDBCF99 -:10313000E6FF060EDBCFE6FF89EC09F0006E060E17 -:10314000E15E00500101010E526F9ED3060E09C5CB -:10315000DBFF050E0AC5DBFF080E0BC5DBFF070E04 -:103160000CC5DBFF0A0E0DC5DBFF090E0EC5DBFF2C -:10317000090EDBCFE6FF0A0EDBCFE6FF070EDBCF43 -:10318000E6FF080EDBCFE6FF050EDBCFE6FF060EFF -:10319000DBCFE6FF91EC09F0006E060EE15E005019 -:1031A0000101010E526F70D3060E09C5DBFF050E3B -:1031B0000AC5DBFF080E0BC5DBFF070E0CC5DBFFE6 -:1031C0000A0E0DC5DBFF090E0EC5DBFF090EDBCFB6 -:1031D000E6FF0A0EDBCFE6FF070EDBCFE6FF080EA9 -:1031E000DBCFE6FF050EDBCFE6FF060EDBCFE6FF0B -:1031F0009AEC09F0006E060EE15E00500101010E2E -:10320000526F42D3060E09C5DBFF050E0AC5DBFF70 -:10321000080E0BC5DBFF070E0CC5DBFF0A0E0DC544 -:10322000DBFF090E0EC5DBFF090EDBCFE6FF0A0E42 -:10323000DBCFE6FF070EDBCFE6FF080EDBCFE6FFB6 -:10324000050EDBCFE6FF060EDBCFE6FFA8EC09F0AC -:10325000006E060EE15E00500101010E526F14D3A4 -:10326000060E09C5DBFF050E0AC5DBFF080E0BC500 -:10327000DBFF070E0CC5DBFF0A0E0DC5DBFF090ED9 -:103280000EC5DBFF0C0E0FC5DBFF0B0E10C5DBFF01 -:1032900011C5E6FF0B0EDBCFE6FF0C0EDBCFE6FF22 -:1032A000090EDBCFE6FF0A0EDBCFE6FF070EDBCF12 -:1032B000E6FF080EDBCFE6FF050EDBCFE6FF060ECE -:1032C000DBCFE6FFB5EC09F0006E090EE15E0050C1 -:1032D0000101010E526FD8D2060E09C5DBFF050EA3 -:1032E0000AC5DBFF080E0BC5DBFF070E0CC5DBFFB5 -:1032F0000A0E0DC5DBFF090E0EC5DBFF0C0E0FC558 -:10330000DBFF0B0E10C5DBFF0E0E12C5DBFF0D0E33 -:1033100013C5DBFF0D0EDBCFE6FF0E0EDBCFE6FFA6 -:1033200011C5E6FF0B0EDBCFE6FF0C0EDBCFE6FF91 -:10333000090EDBCFE6FF0A0EDBCFE6FF070EDBCF81 -:10334000E6FF080EDBCFE6FF050EDBCFE6FF060E3D -:10335000DBCFE6FF36EC0BF0006E0B0EE15E0050AB -:103360000101010E526F90D2060E0AC5DBFF050E59 -:103370000BC5DBFF050EDBCFE6FF060EDBCFE6FF5E -:1033800009C5E6FF3CEC09F0E552E552E5527CD276 -:10339000060E0AC5DBFF050E0BC5DBFF080E0CC5CC -:1033A000DBFF070E0DC5DBFF0A0E0EC5DBFF090EA6 -:1033B0000FC5DBFF09C5E6FF30EC07F0E552090E4B -:1033C000DBCF2FF00A0EDBCF30F0B3EC23F02EC0B2 -:1033D00008F02FC009F030C00AF031C00BF0330EF6 -:1033E000336EE20E346EC20E356E420E366E08C07B -:1033F0002EF009C02FF00AC030F00BC031F0CDEC38 -:1034000024F02EC004F02FC005F030C006F031C00B -:1034100007F0CC0E336EBC0E346E8C0E356E3B0E48 -:10342000366E04C02EF005C02FF006C030F007C085 -:1034300031F0CDEC24F069EC25F02DC000F02EC069 -:1034400001F02FC002F030C003F000C0E6FF01C061 -:10345000E6FF02C0E6FF03C0E6FF070EDBCF2FF05A -:10346000080EDBCF30F0B3EC23F02EC014F02FC0E9 -:1034700015F030C016F031C017F0330E336EE20E87 -:10348000346EC20E356E420E366E14C02EF015C06C -:103490002FF016C030F017C031F0CDEC24F02EC064 -:1034A00010F02FC011F030C012F031C013F0BD0E7B -:1034B000336E370E346E860E356E410E366E10C08A -:1034C0002EF011C02FF012C030F013C031F0CDEC4F -:1034D00024F069EC25F02DC00CF02EC00DF02FC0AB -:1034E0000EF030C00FF00CC0E6FF0DC0E6FF0EC0BE -:1034F000E6FF0FC0E6FF050EDBCF2FF0060EDBCF99 -:1035000030F0B3EC23F02EC01CF02FC01DF030C003 -:103510001EF031C01FF0330E336EE20E346EC20E59 -:10352000356E420E366E1CC02EF01DC02FF01EC030 -:1035300030F01FC031F0CDEC24F069EC25F02DC047 -:1035400018F02EC019F02FC01AF030C01BF018C0B0 -:10355000E6FF19C0E6FF1AC0E6FF1BC0E6FF09C57B -:10356000E6FF0BEC08F0206E0D0EE15E20508CD1D2 -:10357000060E0AC5DBFF050E0BC5DBFF080E0CC5EA -:10358000DBFF070E0DC5DBFF09C5E6FF30EC07F0DA -:10359000E5520EC5E6FF070EDBCF2FF0080EDBCF9E -:1035A00030F0B3EC23F02EC008F02FC009F030C08B -:1035B0000AF031C00BF0330E336EE20E346EC20EE1 -:1035C000356E420E366E08C02EF009C02FF00AC0CC -:1035D00030F00BC031F0CDEC24F02EC004F02FC041 -:1035E00005F030C006F031C007F0CC0E336EBC0ED3 -:1035F000346E8C0E356E3B0E366E04C02EF005C058 -:103600002FF006C030F007C031F0CDEC24F069ECAB -:1036100025F02DC000F02EC001F02FC002F030C008 -:1036200003F000C0E6FF01C0E6FF02C0E6FF03C0F2 -:10363000E6FF050EDBCF2FF0060EDBCF30F0B3EC4C -:1036400023F02EC014F02FC015F030C016F031C09A -:1036500017F0330E336EE20E346EC20E356E420E2C -:10366000366E14C02EF015C02FF016C030F017C003 -:1036700031F0CDEC24F02EC010F02FC011F030C08E -:1036800012F031C013F0BD0E336E370E346E860E5D -:10369000356E410E366E10C02EF011C02FF012C0E4 -:1036A00030F013C031F0CDEC24F069EC25F02DC0E2 -:1036B0000CF02EC00DF02FC00EF030C00FF00CC07B -:1036C000E6FF0DC0E6FF0EC0E6FF0FC0E6FF09C52E -:1036D000E6FF78EC08F0186E0A0EE15E1850D4D0C0 -:1036E000060E0AC5DBFF050E0BC5DBFF09C5E6FFAD -:1036F00030EC07F0E5520CC5E6FF050EDBCF2FF0EE -:10370000060EDBCF30F0B3EC23F02EC008F02FC054 -:1037100009F030C00AF031C00BF0330E336EE20E08 -:10372000346EC20E356E420E366E08C02EF009C0E1 -:103730002FF00AC030F00BC031F0CDEC24F02EC0D9 -:1037400004F02FC005F030C006F031C007F0BD0E08 -:10375000336E370E346E860E356E410E366E04C0F3 -:103760002EF005C02FF006C030F007C031F0CDECD0 -:1037700024F069EC25F02DC000F02EC001F02FC020 -:1037800002F030C003F000C0E6FF01C0E6FF02C057 -:10379000E6FF03C0E6FF09C5E6FFE9EC08F00C6EA2 -:1037A000060EE15E0C5070D009C5E6FF01EC09F091 -:1037B000E5520101010E526F67D07FEC0DF0050E4E -:1037C000F3CFDBFF060EF4CFDBFF8FEC0DF0070E1F -:1037D000F3CFDBFF080EF4CFDBFF00C540F505019A -:1037E000416B0501030E426F0501436B060EDBCFF3 -:1037F00048F5050EDBCF49F5080EDBCF4AF5070E7D -:10380000DBCF4BF5400EE66E400EE66E050EE66E23 -:10381000010EE66E010EE66E5EEC22F0006E050E05 -:10382000E15E0050F3CF49F1F4CF4AF12DD000C54D -:1038300040F50501416B0501030E426F0501436B25 -:10384000A0EC0DF0000904E00501010E486F02D064 -:103850000501486B400EE66E400EE66E050EE66E04 -:10386000010EE66E010EE66E5EEC22F0006E050EB5 -:10387000E15E0050F3CF49F1F4CF4AF105D0010EDB -:10388000E66E47EC32F0E552400EE66E000EE66E54 -:10389000050EE66EE66A010EE66E5EEC22F0006E44 -:1038A000050EE15E0050F3CF47F1F4CF48F19FD011 -:1038B000010149514A1102E1000E08D049C1E9FF56 -:1038C0004AC1EAFFEF50800B01E0010E00094DE113 -:1038D0000101010E516F0501406B01014C514C2B50 -:1038E0000501416F0501050E426F0501436B05019E -:1038F000486BC40E006E630E016E026A00C0E6FFE4 -:1039000001C0E6FF02C0E6FF480EE66E050EE66E59 -:103910005DEC31F0036E050EE15E0350400EE66E85 -:10392000400EE66E050EE66E010EE66E010EE66EC8 -:103930005EEC22F0006E050EE15E0050F3CF49F11F -:10394000F4CF4AF1400EE66E000EE66E050EE66E0E -:10395000E66A010EE66E5EEC22F0006E050EE15E98 -:103960000050F3CF47F1F4CF48F141D00101495164 -:103970004A1102E1000E08D049C1E9FF4AC1EAFF3D -:10398000EF50800B01E0010E000931E100C540F568 -:103990000501416B0501030E426F0501010E436FE6 -:1039A000400EE66E400EE66E050EE66E010EE66E09 -:1039B000010EE66E5EEC22F0006E050EE15E005038 -:1039C000F3CF49F1F4CF4AF1400EE66E000EE66EF9 -:1039D000050EE66EE66A010EE66E5EEC22F0006E03 -:1039E000050EE15E0050F3CF47F1F4CF48F10F0E22 -:1039F000E15C02E2E16AE552E16EE552E7CFD9FF10 -:103A0000120001015351541104E1100E536F270E9F -:103A1000546F5307000E545B6DA207D053515411DD -:103A20002EE18C748CB413D027D00101005102E137 -:103A30008C9422D0000502E18C8409D0020E005D36 -:103A400002E18C8419D0040E005D03E18C948C8615 -:103A50001200100E005D06E10101535154110FE1F7 -:103A60008C740AD0200E005D0AE1010153515411FB -:103A700006E18C748CA402D08C9612008C86120005 -:103A80001200120012001200FDEF2FF012001E0EA5 -:103A9000E66E010EE66E2CEC22F0E552E552400E89 -:103AA000E66E000EE66E050EE66EE66A010EE66E46 -:103AB0005EEC22F0006E050EE15E0050F3CF47F1A0 -:103AC000F4CF48F112006D840101080E686F070EF3 -:103AD000696F6807000E695B68516911FAE16D94BE -:103AE0001200D9CFE6FFE1CFD9FFFD0EDBCF2FF0DB -:103AF000FE0EDBCF30F0010E2F1801E1305033E025 -:103B0000E8682F1802E1E86830182BE0030E2F1840 -:103B100001E1305024E0040E2F1801E130501DE087 -:103B2000020E2F1801E1305016E0170E2F1801E198 -:103B300030500FE0160E2F1801E1305008E0150E3E -:103B40002F1801E1305001E010D0A1DF0FD09EDF2F -:103B50000DD09ADF0BD096DF09D092DF07D091DF2E -:103B600005D091DF03D0000001D000D0010E00D0BD -:103B7000E552E7CFD9FF12004BD8E652D0B202D0BF -:103B8000010E15D0D0B802D0020E11D0D0B002D0A4 -:103B9000030E0DD0D0B602D0040E09D0FCAE02D078 -:103BA000050E05D0FCAC02D0060E01D0070EDF6E6C -:103BB000D088D086D084D082D080FC9EFC9CDF5000 -:103BC000E552E552E7CFD9FF1200E65221D8020EA6 -:103BD000E126F350DF6E010EF4CFDBFF1200C00EC2 -:103BE000E66EE00EE66E2BEC32F0E552E552120086 -:103BF000DF50F36E010EDB50F46E020EE15C12003A -:103C0000DFCFE6FFE66A79EC31F0E552E5521200CB -:0A3C1000D9CFE6FFE1CFD9FF120083 -:063C1A0005EC23F06A6ACC -:103C2000686A38EC23F06D8C6E6AE8EC22F06D9CCB -:103C3000DF6A19EC23F010E2DF50040DF3CFE9FF47 -:103C4000F4CFEAFF000EE926040EEA22EE6AEE6ADD -:103C5000EE6AEE6ADF2AEDD7160E706E68A604D003 -:103C6000030EAEEC22F0FAD70101136B186B196B3F -:103C70001A6B6D98080E0B6F040E0C6F016B006BC6 -:103C8000E552C3EF22F005EC23F0010100510BE1F6 -:103C90006D6A696A38EC23F06DB602D06D86FCD788 -:103CA0000101010E006F000508E16DBA06D0686AD7 -:103CB000696A69806988020E006F6850040B07E02A -:103CC0006950040B04E0020EAEEC22F089D86DB20C -:103CD00047D06850010B14E06950010B11E09DDFE3 -:103CE0000101040E006F0401200E026F040E036F29 -:103CF000080E016F006B8C0E0013E66A77EC23F060 -:103D00006850100B07E06950100B04E060D8040EF7 -:103D1000AEEC22F06850400B0BE06950400B08E01D -:103D20003FEC23F0020EB6EC22F0060EAEEC22F0D1 -:103D30006850200B04E06950200B01E035D8685032 -:103D4000020B0AE06950020B07E03FEC23F0E66843 -:103D5000E66897EC23F06A6A040E0101005D02E256 -:103D6000A19A1FD069A61CD0DF6A040EDF5C18E29E -:103D700068A616D06CCF20F1030EAEEC22F0780EC0 -:103D80000101201502E138D809D0000EE66EE66A7E -:103D9000200EE66E010EE66E010EE8DBDF2AE5D7A7 -:103DA000A19AE552C3EF22F070A00ED0D1EC22F020 -:103DB000EF50800808E1D5DBEF50840804E1D1EC36 -:103DC00022F08C0EEF6E7090050EAEEF22F069843B -:103DD000040EC4DB6D82F1EC22F0040EB6EF22F08B -:103DE000F1EC22F0030EC2DB6D92699468A403D05B -:103DF000020EB4DBFBD7120005EC23F0FD0E01012F -:103E000020153DE17E0E2015E8407F0B040DF3CF19 -:103E100003F1F4CF04F1000E0327040E042303C1C1 -:103E200005F104C106F10575BCDBEF503C0BE8421F -:103E3000E8420D0822E1B5DB6EEC23F0EECF00F096 -:103E4000EFCF01F0280E001816E1040E011813E15F -:103E5000A8EC23F0DF6AEDDB0EE2DF5021EC23F06B -:103E6000DF50EA6A200FE96E040EEA22E552E750BD -:103E7000EF6EDF2AF0D70AD807D01AD805D0FD0E8A -:103E80002015040801E122D8E5527DD36ADBEF500A -:103E9000800B02E066DBEF6A01010F6B106B146BA5 -:103EA000156B136B64D89DDB170E60DBECEF20F015 -:103EB000020E0101105D02E179EF21F034D8010119 -:103EC000215102E173EF23F0216B12009EDB49DBED -:103ED000EF50400B01E0010EDF6E01010B75080E83 -:103EE000005D09E122C46EFF6E50000802E2100E70 -:103EF00001D0040E006F100513E1ACEC23F0A6D93D -:103F0000020E01010F5D03E12CDB840E07D0DF50B0 -:103F100003E127DBC80E02D024DB880EEF6E01D050 -:103F200002D8E55230D32BDB0101106B1ADBEF6AAC -:103F3000040E0B19006E0CC101F0DE6E0CC1DDFF2A -:103F400019DBEF6A18AF0CD01B511C1107E005D02C -:103F50001CC1FAFF01011B51F96EFADF0101189F24 -:103F6000020EE15C02E2E16AE552E16E0CD304016B -:103F70002051600BE842E842E842E842E84200098A -:103F800001E0120021510C0A45E00B0A3FE00C0A47 -:103F900031E0010A22E00B0A1EE0020A1CE0030ADB -:103FA00018E0080A10E0010A0CE00F0A08E0030A12 -:103FB00001E012000101138F080E006F12006CEF78 -:103FC00020F0D5EF21F00101010E116F010E126FEB -:103FD0000CD0ADEF20F00BEF20F024510101116F58 -:103FE000126B020E1127010E12231381010E146FA2 -:103FF000138F12000101138F04012451EA6A020F8A -:10400000E96E010EEA2222C4EFFF1200EADA160E70 -:10401000B6EF22F012007EDB040EE1260401220539 -:1040200010E120511F0B00090CE10101138F030E59 -:104030000401215D04E10101010E1F6F02D00101A5 -:104040001F6B0401225141E120511F0B02083DE189 -:1040500024510F0B000939E00101138F040124BF23 -:1040600005D0A4DA070EE926010E04D09FDA0B0E64 -:10407000E926010ED2DA030E215D03E17BDA840E1C -:1040800023D024510F0B016A700F006E0F0E012216 -:10409000020E00C0DBFF030E01C0DBFF020EDBCF10 -:1040A000E9FF030EDBCFEAFFEE90ED5224AF06D01E -:1040B00061DAEF6ADF745EDA400E06D05BDA880EF2 -:1040C000EF6EDF7457DAC80EEF6E040EE15C02E2A9 -:1040D000E16AE552E16E57D2800E0401205D3CE1B9 -:1040E0000101C00E136F04012351030A1EE0010AEF -:1040F00009E0030A2FE10101C80E116F600E126F73 -:10410000120E22D0C3DA720EF626610EA2DA020E69 -:104110000101F76A1125F66E1251F7220900F5CF59 -:1041200014F10A00F5CF15F11200030E225D0FE223 -:10413000ADDA740EF626610E8CDA11C1F6FF12C1EB -:10414000F7FF0800F5500101146F156B1200010113 -:10415000136B12000101136B120011DA0401286BBA -:10416000296B20511F0B020A11E0030A0CE0010A1F -:1041700022E10101138F0401288101011F051BE1C8 -:104180000401288318D00101138F15D00101138F6A -:10419000040124BF05D00ADA070EE926010E04D077 -:1041A00005DA0B0EE926010E38DAE4D9EF50040BDC -:1041B00002E0010E286F010113AF07D0280E116F26 -:1041C000040E126F1381020E146F020EE15C02E204 -:1041D000E16AE552E16ED7D16D98010113BF08D0B5 -:1041E00018AF02D061DA2AD07EDABBD9840E27D08C -:1041F00018BF2BD0040120AF24D0010114510401B9 -:10420000265D010115510401275904E226C414F169 -:1042100027C415F11BD80101010E106FA1DA800E21 -:10422000EF6E216BBED9EE52080EEF6E91DAB9D95E -:10423000840EEF6E010E216F8FDA93D9C80EEF6EE8 -:104240001200010131DAC80EEF6E120098D9010197 -:10425000080E145D000E15590DE214C1DEFF15C1E4 -:10426000DDFF0F5102E1010E03D00F0506E1020E42 -:104270000F6F03D0080EDE6EDD6A73D9EF9271D92D -:10428000EF906FD9010EDB50EF126BD9EE52DFCFFA -:10429000EFFF000EDB50145F010EDB50155B280EA4 -:1042A0001D6F040E1E6F13B10FD0F7D91BE011C1A3 -:1042B000F6FF12C1F7FF112B000E12230800F55074 -:1042C00096D9F3E2DB06F1D7E8D90CE011C1E9FF9A -:1042D00012C1EAFF112B000E1223EF5088D9F4E22D -:1042E000DB06F2D7020EE15C02E2E16AE552E16E22 -:1042F0004AD145D956D9EE52EFCFDFFFDFCF00F0DC -:1043000000500101195D000E1A5903E219C1DFFFC7 -:1043100009D0DF50006E016AE850195D196F015035 -:104320001A591A6F010EDB6ADF50F36E010EDBCFF4 -:10433000F4FFF350F45C10E2010EDB5082D916C199 -:10434000E9FF17C1EAFF162B000E1723E552E750CD -:10435000EF6E010EDB2AE8D7000ED8801955000E4B -:104360001A550DE2F4D854D91CD9EF50400B03E193 -:10437000EAD9C80E02D0E7D9880EEF6E0FD0F0D977 -:10438000840EEF6E1B511C1107E005D01CC1FAFF13 -:1043900001011B51F96EFADF0101189F020EE15C69 -:1043A00002E2E16AE552E16EEED00101138F10D90D -:1043B000010EE66EE66AE66A020EE66E010EAFD9FF -:1043C00022C401F10401225104E10101100E006F29 -:1043D00012000101200E006F04D9150EB6EF22F075 -:1043E000CED8000EDE6E040EDD6EE8D8040DF3505C -:1043F000006E016A020E0F0B05E0D8900132003208 -:10440000E806FBE1D89000360136D8900036013638 -:10441000D9CFE9FFDACFEAFF0050EE260150ED22B6 -:10442000A9D8EF9EFD0EDB5002E16AD901D06DD90B -:10443000EA22DECFEEFFDDCFEDFF9CD8EF9C9AD8CD -:10444000040EE926000EEA22EF8C020EE15C02E285 -:10445000E16AE552E16E97D092D8FE0EDB50016A18 -:10446000700F006E0F0EDFD885D8FD0EDBCFEFFF8B -:10447000DBA402D0E66AF5D8FD0EDBA203D0010E64 -:10448000E66EEFD8020EE15C02E2E16AE552E16E0F -:104490007AD075D8FE0EDB5005E125D962D8840E9E -:1044A000EF6E05D08BD80CD989D8010F09D9020E2F -:1044B000E15C02E2E16AE552E16E65D060D8FD0E92 -:1044C000DB5002E022D901D01BD9A7D853D806D996 -:1044D000FB0EDBCFEEFFFC0EDBCFEDFF4BD8EE5239 -:1044E000FA0EDBCFEFFF400E45D8E850EF16880EEE -:1044F00041D8E850EF12FD0EDB5002E006D901D0A2 -:10450000FFD8EA22EF74DECF00F0DDCF01F000C06B -:10451000F3FF01C0F4FF020EE15C02E2E16AE55242 -:10452000E16E31D0F7D8010EF36EFC0EDB5004E0E3 -:10453000D890F336E806FCE1F31C006EFD0EDBCFED -:10454000E9FFFE0EDBCFEAFF0050EF161CD0FBD8D0 -:10455000EE52080EEF6EF7D86EEF23F0E66E77EFAF -:1045600023F00BC1E9FF0CC1EAFF1200E66EE66A18 -:1045700097EF23F0DECFE9FFDDCFEAFF1200CAD8C4 -:10458000020EE1261200E552E7CFD9FF1200D6D87D -:10459000A3EF23F0FE0EEA6ADB34FE0BEA36E96E87 -:1045A000120003C1E9FF04C1EAFF120024510F0BFE -:1045B000E96EEA6AD890E936EA361200FD0EDB5061 -:1045C000E824026EFE0EDB50040DF35002241200AC -:1045D000000EE66EE66AE66A710EE66E0F0E8FEF6B -:1045E00023F0000EE66EE66AE66EE66A1200E66EFC -:1045F0001DC1E9FF1EC1EAFF1D2B000E1E23E5525F -:10460000E750EF6EDF06010E120084D8E65212006A -:10461000280EEE6E040EED6E1200EA22EECFDEFFE3 -:10462000EDCFDDFF1200012200C0DEFF01C0DDFF83 -:104630001200DF50006E016A080E005C000E015887 -:104640001200EA6A280FE96E040EEA22EF50E66EC5 -:104650001200F7220900F5CF11F10A00F5CF12F18F -:104660001200FE0EDBCFE6FFBBDEE552E552120084 -:10467000160E6F6E9F0E6B6E7B0E696E1200010E32 -:10468000E66EE66A000EE66EE66A12002251F66EEB -:10469000F76AD890F636F7361200D9CFE9FFDACFAD -:1046A000EAFFEE50ED101200020E106F5ADFEE52CC -:1046B000EF6A57DFC80EEF6E4ADFAADFA3EF23F0E1 -:1046C000040DF3CF00F0F4CF01F0000E0026040E2D -:1046D000AADF840E4FDFE850EF121200020EE92627 -:1046E000000EEA2212003CD88C0EEF6E1200680E0B -:1046F000E66E0F0EE66E16DFE552E552E552120049 -:1047000049DF070EE926010E120044DF0B0EE926F1 -:10471000010E1200D9CFE6FFE1CFD9FF1200E66EFD -:1047200043EC31F0006E050EE15E0050120071ECBA -:104730001DF0006E060EE15E00501200200EEE6EBF -:10474000040EED6E120005C1E9FF06C1EAFF12007A -:1047500028DFC4DF9EEF23F004DFC0DF08EF23F083 -:06476000F6DEC7EF22F0B7 -:0A476600389E08D0389E30AE05D012 -:104770002F6C301EE86A3022388E30C02AF02FC0ED -:1047800029F03C6A3B6A8E0E2B6E2C6A1AEF26F0DB -:10479000389E0CD0389E30AE09D02D6C2E1E2F1EA8 -:1047A000301EE86A2E222F223022388E30C02AF0A6 -:1047B0002FC029F02EC03CF02DC03BF09E0E2B6E7A -:1047C0002C6A1AEF26F0367E386A56EC26F06EEC2C -:1047D00026F038B6FEEF25F038A20AD038AA03D06A -:1047E00038BEFEEF25F038A40AEF26F007EF26F0DA -:1047F00038AA05D038AC0AEF26F007EF26F038A02B -:104800000AD038A808D038BE04D038A402D013EF9C -:1048100026F017EF26F03B6A2C6A3650315C3A6E70 -:1048200010E32EC03CF02FC029F030C02AF031C078 -:1048300039F033C02EF034C02FF035C030F0383AA4 -:1048400009D033C03CF034C029F035C02AF036C05E -:1048500039F03A6C389E38BC388E39C02BF038B0FD -:1048600046EF26F01A0E3A6046EF26F02B6A316AC0 -:1048700038A408D02E6C2F1E301E311EE86A2F225D -:104880003022312238AC08D03C6C291E2A1E2B1E47 -:10489000E86A29222A222B222D6A3A5207E0313473 -:1048A00030322F322E322D323A2EF9D72E503C266E -:1048B0002F50292230502A2231502B222DC03BF07C -:1048C000389E2BAE0BD03B6C3C1E291E2A1E2B1E85 -:1048D000E86A3C2229222A222B22388E2BA006D0DD -:1048E000D8802A3229323C323B32392A39C02BF067 -:1048F0001AEF26F0386A56EC26F06EEC26F038B641 -:10490000FEEF25F038A205D038BAFEEF25F005EF0E -:1049100026F038BA11EF26F038A005D038B8FEEFEF -:1049200025F011EF26F038B805EF26F02C6A7F0E3F -:1049300031242B6EE86A2C2236502B5EE86A2C5A02 -:104940001A0E396E316A3B6A3C6A296A2A6A335008 -:104950002E5E34502F5A3550305A000E315A09E726 -:1049600033502E2634502F2235503022000E312263 -:1049700001D03B8AD8902E362F3630363136D8903B -:104980003B363C3629362A36392EE1D730502F10A7 -:104990002E10D8A43B8A1AEF26F0386A56EC26F07F -:1049A0006EEC26F038B6FEEF25F038A205D038B808 -:1049B000FEEF25F005EF26F038AA05D038B0FEEF5F -:1049C00025F005EF26F038B002D038A802D011EF5C -:1049D00026F02C6A365031242B6EE86A2C227E0E8B -:1049E0002B5EE86A2C5A3B6A3C6A296A2A6A35506F -:1049F0003002F4CF2AF0F3CF29F034503002F350D4 -:104A00003C26F4502922000E2A2235502F02F35062 -:104A10003C26F4502922000E2A2233503002F35053 -:104A20003B26F4503C22000E29222A2234502F0229 -:104A3000F3503B26F4503C22000E29222A22355006 -:104A40002E02F3503B26F4503C22000E29222A224B -:104A500033502F02F4503B26000E3C2229222A22FA -:104A600034502E02F4503B26000E3C2229222A22EA -:104A70001AEF26F0386A56EC26F038B644EF25F0E7 -:104A800038A20ED038B405D07F0E306EFF0E2F6ED8 -:104A90001FD0800E306E2F6A1BD0306A2F6A18D05C -:104AA00038B0FBD78F0E3160EDD77E0E3164F5D76D -:104AB0008E0E315C05E0D89030322F32312AF8D793 -:104AC00038A406D02F6C301EE86A302230AEE5D70D -:104AD0001200386A56EC26F038B673EF25F038A28B -:104AE0000FD038B407D07F0E306EFF0E2F6E2E6EB3 -:104AF0002D6E25D0800E306E01D0306A000EF6D7B4 -:104B000038B0FBD72D6A9F0E3160EBD77E0E316433 -:104B1000F4D79E0E315C07E0D89030322F322E321F -:104B20002D32312AF6D738A40AD02D6C2E1E2F1E16 -:104B3000301EE86A2E222F22302230AEDED712003D -:104B4000A9EC25F038B6000C38B0000C38A4000CE5 -:104B5000010C386A56EC26F06EEC26F038B61200DE -:104B600038AE08D038A004D038A802D0388012005F -:104B7000389012003650315C0BE13550305C08E162 -:104B800034502F5C05E133502E5C02E13880120076 -:104B9000D8A002D0388E10D0315036C031F0366EE9 -:104BA000305035C030F0356E2F5034C02FF0346E99 -:104BB0002E5033C02EF0336E3650315C10E0FF0FB4 -:104BC00009E0389038B403D038AE3884120038AEDB -:104BD00038941200362AD89035323432333233507A -:104BE0002E5E34502F5A3550305A30BEEAD7D89006 -:104BF0002E362F363036312EF8D7C8D77F0E316E8D -:104C0000FF0E306E2F6E2E6E12007F0E38BEFF0E1E -:104C1000316E02D07F0E316E800E306E2F6A2E6A9A -:104C2000F3D738AE04D0800E316E306AF7D7316AD0 -:104C3000306AF4D72A5029103C103B10F8E02CBE03 -:104C4000F0D72ABE0CD02B502C10EBE0D8903B367E -:104C50003C3629362A362B06D8A02C06F2D72C5003 -:104C6000D4E12B28D2E03BAE11D07F0E3B1402E101 -:104C70003CA00CD03C2AE86A29222A2207E3D880EB -:104C80002A3229323C322B2A2B28BFE02B50C9E094 -:104C90003CC02EF029C02FF02A34306E2B30316EFC -:104CA0003032319E38BE318E04EF26F03036313648 -:104CB00002E33884387E06E13880316A306A2F6A30 -:104CC0002E6A1200312803E0D88030321200D890CA -:104CD000303202E13882120038861200353636361C -:104CE00002E3388C387E06E13888366A356A346AE1 -:104CF000336A1200362803E0D88035321200D8908B -:104D00003532EAE1388A1200A9EC25F038B6000CF9 -:104D100038B0000C38B4000C010C376A35AE96EF91 -:104D200026F0346C351EE86A3522371E30AE9EEF11 -:104D300026F02F6C301EE86A3022371E91EC32F0DC -:104D400030BEAEEF26F037AE000C2F6C301EE86A96 -:104D500030222B6C2C1EE86A2C22000C37BEA5EFEB -:064D600026F03888FF0C6C -:0A4D6600D9CFE6FFDACFE6FFE1CF78 -:104D7000D9FFE2CFDAFF1D0EE12402E3E168E6523B -:104D8000E16E67DAFA0EDBCFEEFFFB0EDBCFEEFF54 -:104D9000FC0EDBCFEEFFFD0EDBCFEEFFD950040F94 -:104DA000E66E000EDA20E66E0BDAE2EC2EF0006E14 -:104DB000060EE15C02E2E16AE552E16E0050E76E48 -:104DC0000B0EE7CFDBFFDB50800807E10A0EDB6A42 -:104DD000DE68DE68DE687F0E13D00B0EDB0405E1B3 -:104DE000DE6ADE6ADE6ADD6AA6D10B0EDB500408DD -:104DF00009E1DB0EDE6E0F0EDE6EC90EDE6E3F0EBB -:104E0000DD6E99D1DDD91EDA2DC0DEFF2EC0DEFFAA -:104E10002FC0DEFF30C0DDFFDD52DD52DBD90DDA01 -:104E20003F0E20DA23E12E6A2F6A800E306E3F0E8D -:104E3000316EDECF33F0DECF34F0DECF35F0DDCFB4 -:104E400036F0DD52DD527AEC24F02EC0DFFF010E89 -:104E50002FC0DBFF020E30C0DBFF030E31C0DBFFD3 -:104E6000020EF36E0C0EF3CFDBFF02D00C0EDB6AEA -:104E7000B1D9A30E336E300E346E890E356E3E0EF0 -:104E8000F1D96CE1AF0E2E6E670E2F6E3B0E306EB9 -:104E90003F0E316EB2D92EC008F02FC009F030C0DD -:104EA0000AF031C00BF0C9D93F0E366EE3EC23F0A7 -:104EB0002EC004F02FC005F030C006F031C007F05E -:104EC000C8D9EECF0CF0EECF0DF0EECF0EF0EFCF55 -:104ED0000FF00CC033F00DC034F00EC035F00FC031 -:104EE00036F0E4EC23F080D9D70E146EB30E156EB5 -:104EF000DD0E166E3F0E176EACD9EECF18F0EECF6A -:104F000019F0EECF1AF0EFCF1BF018C033F019C034 -:104F100034F01AC035F01BC036F014C02EF015C0A6 -:104F20002FF016C030F0316EE4EC23F02EC010F0FC -:104F30002FC011F030C012F031C013F02EC033F08A -:104F40002FC034F030C035F031C036F035D97AECAE -:104F500024F05FD9DD52DD520C0EDB2A31D972D933 -:104F60002DC000F02EC001F02FC002F030C003F0C1 -:104F700064D9390E366E2DC02EF07AD9A0EC25F00A -:104F8000010A01E1B5D04ED938D90D0E2EC0DBFF94 -:104F90000E0E2FC0DBFF0F0E30C0DBFF100E31C036 -:104FA000DBFF910E2E6E860E2F6E500E306EBD0EF4 -:104FB000316E0D0EDBCF33F00E0EDBCF34F00F0E63 -:104FC000DBCF35F0100E4AD90FD9F60E336E100E26 -:104FD000346EF10E356EBE0E366EE4EC23F0110E1B -:104FE0002EC0DBFF120E2FC0DBFF130E30C0DBFF25 -:104FF000140E31C0DBFF0D0EDBCF00F00E0EDBCF49 -:1050000001F00F0EDBCF02F0100EDBCF03F0D30E5A -:10501000336ECC0E346EB40E356E3F0E366ECCD879 -:10502000E4EC23F0150E2EC0DBFF160E2FC0DBFFC5 -:10503000170E30C0DBFF180E31C0DBFF0D0EDBCFCB -:105040002EF00E0EDBCF2FF00F0EDBCF30F0100E58 -:10505000DBCF31F0110EDBCF33F0120EDBCF34F0AB -:10506000130EDBCF35F0140EF9D8150EDBCF33F06D -:10507000160EDBCF34F0170EDBCF35F0180EDBCF7A -:1050800036F07AEC24F0B0D8190E2EC0DBFF1A0EE1 -:105090002FC0DBFF1B0E30C0DBFF1C0E31C0DBFF5F -:1050A000C1D8190EDBCF33F01A0EDBCF34F01B0E54 -:1050B000DBCF35F01C0ED2D897D8CBD8EECF2EF060 -:1050C000EECF2FF0EECF30F0EFCF31F000C033F065 -:1050D00001C034F002C035F003C036F0E4EC23F038 -:1050E00031C0EDFF30C0EDFF2FC0EDFF2EC0EFFF50 -:1050F0000C0EDB0409E1920E006E0A0E016E060E24 -:105100003FD8E4EC23F016D00C0EDB50020806E189 -:10511000DB0E006E0F0E016EC90E09D00C0EDB50B7 -:1051200003080BE1920E006E0A0E016E860E28D85F -:10513000E3EC23F06ED8DD52DD520A0EDB500AE0BC -:1051400049D87BD8BF0E366E37D8CDEC24F061D865 -:10515000DD52DD52DECF2DF0DECF2EF0DECF2FF090 -:10516000DDCF30F0DD52DD521D0EE15C02E2E16A7E -:10517000E552E16EE552E5CFDAFFE7CFD9FF120045 -:10518000026E3F0E036E65D8EECF04F0EECF05F051 -:10519000EECF06F0EFCF07F004C033F005C034F0D7 -:1051A00006C035F007C036F000C02EF001C02FF069 -:1051B00002C030F0316E120000C02EF038EF29F03E -:1051C00048D8EECFE6FFEECFE6FFEECFE6FFEFCF1B -:1051D000E6FF12003ED8EECF00F0EECF01F0EECFAA -:1051E00002F0EFCF03F012002EC000F02FC001F04C -:1051F00030C002F031C003F01200000EDFCF33F0F8 -:10520000010EDBCF34F0020EDBCF35F0030E2EEFB4 -:1052100029F02EC0DEFF2FC0DEFF30C0DEFF31C020 -:10522000DDFF1200DECF2EF0DECF2FF0DECF30F02C -:10523000DDCF31F0DD52DD521200336A346A800E68 -:10524000356E1200AFEC31F0E552E552E552E55211 -:105250001200D9CFE9FFDACFEAFF1200DBCF36F038 -:10526000CDEF24F0366EA8DF84EC26F0010A1200A0 -:0E52700001C02FF002C030F003C031F0120078 -:02527E00D9CF86 -:10528000E6FFDACFE6FFE1CFD9FFE2CFDAFF240E67 -:10529000E12402E3E168E652E16ED950FA0FE96ECB -:1052A000FF0EDA20EA6E020EEECFDBFF030EEECF2A -:1052B000DBFF040EEECFDBFF050EEECFDBFFE8D900 -:1052C000F2D9E2EC2EF0006E060EE15C02E2E16A39 -:1052D000E552E16E0050E76E0D0EE7CFDBFFDB50CD -:1052E000800815E0A0D9336A346A356A366A00C08E -:1052F0002EF001C02FF002C030F003C031F0A0EC5E -:1053000025F0010A10E1210E0101466F476B020EE4 -:10531000DB68030EDB68040EDB687F0EF36E050EA0 -:10532000F3CFDBFF66D10D0EDB50050B01E061D141 -:105330000A0EDBCF00F00B0EDBCF01F0830E002650 -:10534000FF0E012200C0DEFF01C0DDFFD950060FB5 -:1053500065D976D9DF50010B0FE0DF06010E01E2BF -:10536000DB06D950180F5AD9D890EF36010EEB361C -:10537000020EEB36030EEB36D9CFE9FFDACFEAFFA8 -:10538000020E346E356AEECF2FF0EDCF30F08DEC9B -:1053900026F02FC0EEFF30C0EDFF140EDB6A150EB5 -:1053A000DB6A160EDB6A170EDB6A1C0EDB6A1D0E4B -:1053B000DB6A1E0EDB6A010EF36E1F0EF3CFDBFFFE -:1053C000010EF36E0E0EF3CFDBFF0F0EDB6A0E0E37 -:1053D000DBCF00F00F0EDBCF01F0D890015004E6D8 -:1053E0001A0E005C000E015801E398D0180EDBCFB6 -:1053F00000F0190EDBCF01F01A0EDBCF02F01B0E0E -:10540000DBCF03F0010E1F0B07E0D890003601360A -:1054100002360336E806F9E1180E00C0DBFF190E6C -:1054200001C0DBFF1A0E02C0DBFF1B0E03C0DBFF57 -:10543000140EDBCF08F0150EDBCF09F0160EDBCF14 -:105440000AF0170EDBCF0BF0010E1F0B07E0D89010 -:10545000083609360A360B36E806F9E1D9501C0F32 -:10546000DDD80850EE24046E0950EE20056E0A5077 -:10547000EE20066E0B50EE20076ED950180FCED8D6 -:105480000450EE5C006E0550EE58016E0650EE586A -:10549000026E0750EE58036E200E00C0DBFF210E97 -:1054A00001C0DBFF220E02C0DBFF230E03C0DBFFC7 -:1054B000200EDBCF2EF0210EDBCF2FF0220EDBCF24 -:1054C00030F0230EDBCF31F03134000E311809E615 -:1054D000D880000E2E54000E2F54000E3054000EB3 -:1054E000315411E2D950200F99D8AAD8D8D81C0E1F -:1054F000DB50EE121D0EDB50EE121E0EDB50EE12D4 -:105500001F0EDB50EE12D9501C0F88D8AFD80E0EEC -:10551000DB2A0F0E01E25BD7DB2A59D7C9D8100E60 -:1055200000C0DBFF110E01C0DBFF180EDBCF2FF038 -:10553000190EDBCF30F0120E2FC0DBFF130E30C080 -:10554000DBFFADD893D8D950100F68D8EE50ED10CE -:1055500012E0D950120F62D8EE50ED1006E1A8D833 -:10556000005001100210031006E099D8EE2A000E38 -:10557000EE22EE22EE220C0EDB6A91D8060EEECF62 -:10558000DBFF070EEECFDBFF080EEECFDBFF090ED1 -:10559000EECFDBFF7E0EF36E0A0EF3CFDBFF0B0EBA -:1055A000DB6AD950020FE66E000EDA20E66E70D884 -:1055B00070EC2FF0E552E552E552E552DECFE6FF02 -:1055C000DDCFE6FF70D846EC2EF0006E060EE15CF3 -:1055D00002E2E16AE552E16E0050020E2DC0DBFFEF -:1055E000030E2EC0DBFF040E2FC0DBFF050E30C004 -:1055F000DBFF19D800C02DF001C02EF002C02FF043 -:1056000003C030F0240EE15C02E2E16AE552E16E93 -:10561000E552E5CFDAFFE7CFD9FF1200E96E000EC1 -:10562000DA20EA6E1200020EDBCF00F0030EDBCFB1 -:1056300001F0040EDBCF02F0050EDBCF03F0120009 -:10564000180EEECFDBFF190EEECFDBFF1A0EEECFFA -:10565000DBFF1B0EEECFDBFF1200EECFE6FFEECF3F -:10566000E6FFEECFE6FFEFCFE6FF1200D890030E85 -:10567000EB32020EEB32010EEB32EF321200EE5043 -:105680000016EE500116EE500216EE5003161200F0 -:10569000D950060FE66E000EDA20E66E1200D950E1 -:1056A000140F0EEF2BF0D950020FB8DF2DEF2BF0B7 -:1056B000010E006E016A026A036AF1DF3FEF2BF010 -:1056C000A5D9E65201016A51040A45E0070A2DE016 -:1056D000010A23E0030A0BE0010A01E094D0870EDF -:1056E000E66E62EC32F0E5520101010E32D0DEECE2 -:1056F00032F0000901E088D072D901AE02D0026810 -:1057000003686BC1E9FFEA6AE9BEEA6845D9B00EF1 -:10571000E926000E56D9020E1CD08F0EE66E62EC02 -:1057200032F0E5520101030E14D0DEEC32F0000934 -:105730006BE155D901AE02D0026803686BC1E9FF85 -:10574000EA6AE9BEEA6828D9D80EE926000E39D9F6 -:10575000040E6A6F59D06B2B0A0EE76E6B19E8AE18 -:1057600002D0E73402D0E7506B5D4BE36B6B6CC14A -:10577000E9FFEA6AE9BEEA6865D9EA22EE6AEE6AFA -:10578000EE6AEE6A6CC1E9FFEA6AE9BEEA685FD9CF -:10579000EA22EE6AEE6AEE6AEE6ADF6A31D9E8AEB4 -:1057A00002D0E73402D0E750005C1EE2DFCFE9FF11 -:1057B000EA6AE9BEEA68F0D8B00EE926000EFCD825 -:1057C000E9BEEA683FD908D9DFCFE9FFEA6AE9BE56 -:1057D000EA68E2D8D80EE926000EEED8E9BEEA68FB -:1057E00036D9FAD8DF2ADAD701016C2B0A0EE76E18 -:1057F0006C19E8AE02D0E7... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-03-10 21:23:33
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via bef19507734097c59756c638a4e7c3b5c8a93371 (commit) via e19264e5e9597d461f24a930b74a1e5034a3a1e4 (commit) from 0c7d257797c48e7e3c60e1c39832214d3cb6f1a4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit bef19507734097c59756c638a4e7c3b5c8a93371 Merge: e19264e5e9597d461f24a930b74a1e5034a3a1e4 0c7d257797c48e7e3c60e1c39832214d3cb6f1a4 Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 10 22:23:10 2010 +0100 Merge branch 'master' of ssh://krobot.git.sourceforge.net/gitroot/krobot/krobot commit e19264e5e9597d461f24a930b74a1e5034a3a1e4 Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 10 22:22:23 2010 +0100 Corrected turn() function and buzzer not biping enough ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Battery_Monitoring/Firmware/main.c b/USB_Module/Battery_Monitoring/Firmware/main.c index a15473f..a143751 100644 --- a/USB_Module/Battery_Monitoring/Firmware/main.c +++ b/USB_Module/Battery_Monitoring/Firmware/main.c @@ -521,11 +521,6 @@ void UserInit(void) WriteEEPROM(0x00, eeprom); } - initMonitor(); // Il faut le faire avant d'utiliser BUZZER (pin en sortie) - - BUZZER = 1; // On allume le buzzer pendant la phase d'initialisation, - // ce qui permet de vfier que celui-ci fonctionne. - // Configuration interruptions RCONbits.IPEN = 1; // Enable priority levels on interrupts INTCONbits.GIE = 1; // Enables all high priority interrupts @@ -559,6 +554,11 @@ void UserInit(void) blinkStatusValid = TRUE; + initMonitor(); // Il faut le faire avant d'utiliser BUZZER (pin en sortie) + + BUZZER = 1; // On allume le buzzer pendant la phase d'initialisation, + // ce qui permet de vfier que celui-ci fonctionne. + Delay10KTCYx(0); BUZZER = 0; // Fin de la phase d'initialisation }//end UserInit diff --git a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof index 1b67016..d9f18e5 100644 Binary files a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof and b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof differ diff --git a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex index 95333e6..63a3419 100644 --- a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex +++ b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex @@ -1,13 +1,13 @@ :020000040000FA -:06000000A4EF14F0120051 +:06000000A8EF14F012004D :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:06080000A4EF14F0120049 +:06080000A8EF14F0120045 :06080800D5EF09F012001B :060818003EEF0AF01200A1 -:06082A000300CC290000D0 -:100830008600000021000000BC290000BD0000006F -:1008400010000000A6290000A7000000160000000C +:06082A000300D4290000C8 +:100830008600000021000000C4290000BD00000067 +:1008400010000000AE290000A70000001600000004 :1008500027EC09F06A6A686A5AEC09F06D8C6E6AD6 :100860000AEC09F06D9CDF6A3BEC09F010E2DF5006 :10087000040DF3CFE9FFF4CFEAFF000EE926040EE2 @@ -86,11 +86,11 @@ :100D00005BDA880EEF6EDF7457DAC80EEF6E040EF2 :100D1000E15C02E2E16AE552E16E57D2800E040125 :100D2000205D3CE10001C00E736F04012351030AF2 -:100D30001EE0010A09E0030A2FE10001620E716F53 -:100D4000250E726F120E22D0C3DA100EF626260E72 +:100D30001EE0010A09E0030A2FE100016A0E716F4B +:100D4000250E726F120E22D0C3DA180EF626260E6A :100D5000A2DA020E0001F76A7125F66E7251F722CF :100D60000900F5CF74F00A00F5CF75F01200030EFC -:100D7000225D0FE2ADDA120EF626260E8CDA71C075 +:100D7000225D0FE2ADDA1A0EF626260E8CDA71C06D :100D8000F6FF72C0F7FF0800F5500001746F756B35 :100D900012000001736B12000001736B120011DA74 :100DA0000401286B296B20511F0B020A11E0030A72 @@ -185,8 +185,8 @@ :101330001200680EE66E0F0EE66E16DFE552E552FD :10134000E552120049DF670EE926000E120044DF65 :101350006B0EE926000E1200D9CFE6FFE1CFD9FFD0 -:101360001200E66E92EC13F0146E050EE15E14505E -:101370001200B9EC0DF0146E060EE15E145012006E +:101360001200E66E96EC13F0146E050EE15E14505A +:101370001200BDEC0DF0146E060EE15E145012006A :10138000200EEE6E040EED6E120065C0E9FF66C021 :10139000EAFF120028DFC4DFC0EF09F004DFC0DF7E :0A13A0002AEF09F0F6DEE9EF08F08D @@ -195,378 +195,378 @@ :1013C000E4FFF5CFE4FFF3CFE4FFF4CFE4FFFACF7F :1013D000E4FF00EE00F0140EE80403E3EECFE4FFB8 :1013E000FBD700EE14F0140EE80403E3EECFE4FFA5 -:1013F000FBD72DEC0EF09EA014D037EC0EF00A0EA9 +:1013F000FBD731EC0EF09EA014D03BEC0EF00A0EA1 :101400000001C327000EC423E80EC35D030EC459B8 -:1014100005E3C36BC46BC52B000EC623DAEC10F0DA -:101420009E9040EC0EF002E2E16AE552E16EE55278 +:1014100005E3C36BC46BC52B000EC623DEEC10F0D6 +:101420009E9044EC0EF002E2E16AE552E16EE55274 :10143000E7CFD9FFE55200EE27F0140EE80403E3EE :10144000E5CFEDFFFBD700EE13F0140EE80403E345 :10145000E5CFEDFFFBD7E5CFFAFFE5CFF4FFE5CF12 :10146000F3FFE5CFF5FFE5CFF7FFE5CFF6FFE5CFDB :10147000EAFFE5CFE9FFE5CFDAFF1100D8CFE4FFBF :10148000E0CFE4FFE46EDACFE4FFE2CFDAFFF3CFA0 -:10149000E4FFF4CFE4FFE1DB40EC0EF002E2E16AAE +:10149000E4FFF4CFE4FFE5DB44EC0EF002E2E16AA6 :1014A000E552E16EE552E7CFD9FFE552E5CFF4FF13 :1014B000E5CFF3FFE5CFDAFFE550E5CFE0FFE5CF7D -:1014C000D8FF100004D85EEC04F03AD8FCD70F0E19 -:1014D000C112958602D828EF04F0E2DBE65294DBD5 -:1014E0000001D76F070ED75D0EE1E66AE8EC13F056 -:1014F000E552DF6E000EDF80CBDBE66A8DEC14F088 -:10150000E552DF70C5DB2FEC11F08284D08EF28EB5 -:10151000F28C9D80F50EE66EFEEC13F0E552A7DB33 -:10152000FC0E8B1694160001BD6BBE6BBF6BC06BBF -:10153000010EC16F8294E552E552E7CFD9FF120048 -:10154000D9CFE6FFE1CFD9FF090EE1260001C15155 -:1015500001E09FDA200E0001605D03E36D50020B95 -:1015600001E076D20001BF51C01102E1000E08D0A7 -:10157000BFC0E9FFC0C0EAFFEF50800B01E0010EE1 -:10158000000947E10001A651EA6A860FE96E000EE4 -:10159000EA22EF5000083DE20501406B0001C25114 -:1015A000C22B0501416F0501040E426F0001A651D7 -:1015B000EA6A860FE96E000EEA22EFCF43F5400E8D -:1015C000E66E400EE66E050EE66E010EE66E010E4C -:1015D000E66E80EC08F0146E050EE15E1450F3CF59 -:1015E000BFF0F4CFC0F00001A651EA6A860FE96EA1 -:1015F000000EEA22EF6A0001A651000803E2000192 -:10160000A60707D00001A551000803E200011F0E44 -:10161000A66F0001BD51BE1102E1000E08D0BDC091 -:10162000E9FFBEC0EAFFEF50800B01E0010E0009A8 -:1016300001E00ED205010251060A01E164D1040A5B -:1016400017E0030A05E0010A01E0C1D1FF0000D262 -:10165000E66AE8EC13F0E552DF6E000EDB80DFCFC8 -:10166000E6FFE66AC8EC13F0E552E552FF00F0D160 -:101670000001BF51C01102E1000E08D0BFC0E9FF58 -:10168000C0C0EAFFEF50800B01E0010E000901E04D -:1016900039D100C540F50501416B0501030E426FCC -:1016A0000501436B050108510E0A01E1FCD0030A54 -:1016B00001E1F4D0010A01E1D6D0070A01E17ED0B0 -:1016C0000F0A71E0070A64E0010A20E0030A06E05D -:1016D000010A01E0EDD0D7C048F5EDD00501486B17 -:1016E000550E146E280E156E166A14C0E6FF15C04E -:1016F000E6FF16C0E6FF480EE66E050EE66EACECA1 -:1017000013F0176E050EE15E1750D5D00501486B3A -:10171000490E146E280E156E166A14C0E6FF15C029 -:10172000E6FF16C0E6FF480EE66E050EE66EACEC70 -:1017300013F0176E050EE15E1750470E146E280E5B -:10174000156E166A14C0E6FF15C0E6FF16C0E6FF68 -:10175000480EE66E050EE66EACEC13F0176E050E45 -:10176000E15E17503E0E146E280E156E166A14C0F8 -:10177000E6FF15C0E6FF16C0E6FF480EE66E050E52 -:10178000E66EACEC13F0176E050EE15E175093D0C9 -:1017900092CF48F593CF49F594CF4AF595CF4BF5C5 -:1017A00096CF4CF588D080CF48F581CF49F582CFD0 -:1017B0004AF583CF4BF584CF4CF57DD0070EDB6A1D -:1017C000080EDB6A070EDBCF14F0080EDBCF15F036 -:1017D000D890155004E6080E145C000E155842E22D -:1017E000070EDBCFE6FF3DEC11F0E552DE52F3CF02 -:1017F000DEFFF4CFDDFFDD52020E086E096A070E30 -:10180000DBCF0DF0080EDBCF0EF0C1EC0FF006C001 -:10181000E9FF07C0EAFF480EE926050EEA22020E9C -:10182000DBCFEFFF020E086E096A070EDBCF0DF06B -:10183000080EDBCF0EF0C1EC0FF006C0E9FF07C0C9 -:10184000EAFF010EE926000EEA22480EE926050EFF -:10185000EA22010EDBCFEFFF070EDB2A080E01E3C1 -:10186000DB2AB0D728D077EC11F0030E06C0DBFFDF -:10187000040E07C0DBFF050E08C0DBFF060E09C023 -:10188000DBFF060EDBCF48F5050EDBCF49F5040E76 -:10189000DBCF4AF5030EDBCF4BF50DD0BAEC11F0E0 -:1018A0000501486F08D0C4EC11F00501486F03D062 -:1018B0000501020E436F400EE66E400EE66E050E09 -:1018C000E66E010EE66E010EE66E80EC08F0146E18 -:1018D000050EE15E1450F3CFBFF0F4CFC0F0400E20 -:1018E000E66E000EE66E050EE66EE66A010EE66E28 -:1018F00080EC08F0146E050EE15E1450F3CFBDF0DD -:10190000F4CFBEF0A5D005010851030A37E0010A63 -:1019100025E0030A13E0010A01E040D00501095166 -:10192000921205010A51931205010B5194120501FF -:101930000C51951205010D51961235D00501091D66 -:10194000921605010A1D931605010B1D941605013B -:101950000C1D951605010D1D961625D00501091DB6 -:10196000891605010A1D8A1605010B1D8B16050136 -:101970000C1D8C1605010D1D8D1615D00501095184 -:10198000891205010A518A1205010B518B120501BA -:101990000C518C1205010D518D1205D0030EE66E0F -:1019A0005AEC14F0E552400EE66E000EE66E050E9F -:1019B000E66EE66A010EE66E80EC08F0146E050E27 -:1019C000E15E1450F3CFBDF0F4CFBEF041D0000182 -:1019D000BF51C01102E1000E08D0BFC0E9FFC0C076 -:1019E000EAFFEF50800B01E0010E000931E100C574 -:1019F00040F50501416B0501030E426F0501010E23 -:101A0000436F400EE66E400EE66E050EE66E010E6A -:101A1000E66E010EE66E80EC08F0146E050EE15ED7 -:101A20001450F3CFBFF0F4CFC0F0400EE66E000EBE -:101A3000E66E050EE66EE66A010EE66E80EC08F0D4 -:101A4000146E050EE15E1450F3CFBDF0F4CFBEF07E -:101A5000090EE15C02E2E16AE552E16EE552E7CF90 -:101A6000D9FF12000001C951CA110FE1C4EC11F0F5 -:101A7000010A04E0010A04E1827403D0828401D0E7 -:101A80008294320E0001C96FCA6BC907000ECA5B8F -:101A900012000001CB51CC1104E1100ECB6F270EC8 -:101AA000CC6FCB07000ECC5B6DA207D0CB51CC1115 -:101AB0002EE18B728BB213D027D00001605102E16E -:101AC0008B9222D0600502E18B8209D0020E605D0C -:101AD00002E18B8219D0040E605D03E18B928B8052 -:101AE0001200100E605D06E10001CB51CC110FE138 -:101AF0008B720AD0200E605D0AE10001CB51CC113F -:101B000006E18B728BA202D08B9012008B801200A8 -:101B100012001200120012004AEF12F012001E0E04 -:101B2000E66E010EE66E4EEC08F0E552E552400E10 -:101B3000E66E000EE66E050EE66EE66A010EE66ED5 -:101B400080EC08F0146E050EE15E1450F3CFBDF08A -:101B5000F4CFBEF012006D840001080ED86F070E9E -:101B6000D96FD807000ED95BD851D911FAE16D941D -:101B70001200D9CFE6FFE1CFD9FFFD0EDBCF08F091 -:101B8000FE0EDBCF09F0010E081801E1095033E029 -:101B9000E868081802E1E86809182BE0030E081845 -:101BA00001E1095024E0040E081801E109501DE08C -:101BB000020E081801E1095016E0170E081801E19D -:101BC00009500FE0160E081801E1095008E0150E43 -:101BD000081801E1095001E010D0A1DF0FD09EDF0D -:101BE0000DD09ADF0BD096DF09D092DF07D091DFBE -:101BF00005D091DF03D0000001D000D0010E00D04D -:101C0000E552E7CFD9FF12004BD8E652D0B202D04E -:101C1000010E15D0D0B802D0020E11D0D0B002D033 -:101C2000030E0DD0D0B602D0040E09D0FCAE02D007 -:101C3000050E05D0FCAC02D0060E01D0070EDF6EFB -:101C4000D088D086D084D082D080FC9EFC9CDF508F -:101C5000E552E552E7CFD9FF1200E65221D8020E35 -:101C6000E126F350DF6E010EF4CFDBFF1200F00E21 -:101C7000E66ED80EE66E3EEC14F0E552E552120028 -:101C8000DF50F36E010EDB50F46E020EE15C1200C9 -:101C9000DFCFE6FFE66AC8EC13F0E552E55212002A -:0A1CA000D9CFE6FFE1CFD9FF120013 -:061CAA00019E08D0019E1E -:101CB00009AE05D0086C091EE86A0922018E09C028 -:101CC00003F008C002F0136A126A8E0E046E056AF1 -:101CD00070EF10F0016AACEC10F0C4EC10F001B63B -:101CE00054EF10F001A205D001BA54EF10F05BEFF1 -:101CF00010F001BA67EF10F001A005D001B854EF61 -:101D000010F067EF10F001B85BEF10F0056A7F0E7E -:101D10000A24046EE86A05220F50045EE86A055A38 -:101D20001A0E106E0A6A126A136A026A036A0C506B -:101D3000075E0D50085A0E50095A000E0A5A09E75C -:101D40000C5007260D5008220E500922000E0A22C0 -:101D500001D0128AD8900736083609360A36D8904C -:101D60001236133602360336102EE1D7095008100A -:101D70000710D8A4128A70EF10F0016AACEC10F0D2 -:101D8000C4EC10F001B654EF10F001A205D001B878 -:101D900054EF10F05BEF10F001AA05D001B054EF42 -:101DA00010F05BEF10F001B002D001A802D067EF95 -:101DB00010F0056A0F500A24046EE86A05227E0EB0 -:101DC000045EE86A055A126A136A026A036A0E50D0 -:101DD0000902F4CF03F0F3CF02F00D500902F350E3 -:101DE0001326F4500222000E03220E500802F35074 -:101DF0001326F4500222000E03220C500902F35065 -:101E00001226F4501322000E022203220D50080263 -:101E1000F3501226F4501322000E022203220E5019 -:101E20000702F3501226F4501322000E022203225E -:101E30000C500802F4501226000E13220222032234 -:101E40000D500702F4501226000E13220222032224 -:101E500070EF10F00F7E016AACEC10F0C4EC10F0E3 -:101E600001B654EF10F001A20AD001AA03D001BEBE -:101E700054EF10F001A460EF10F05DEF10F001AA34 -:101E800005D001AC60EF10F05DEF10F001A00AD0BA -:101E900001A808D001BE04D001A402D069EF10F05F -:101EA0006DEF10F0126A056A0F500A5C116E10E3B4 -:101EB00007C013F008C002F009C003F00AC010F018 -:101EC0000CC007F00DC008F00EC009F0013A09D0AF -:101ED0000CC013F00DC002F00EC003F00FC010F0E4 -:101EE000116C019E01BC018E10C004F001B09CEF8A -:101EF00010F01A0E11609CEF10F0046A0A6A01A437 -:101F000008D0076C081E091E0A1EE86A082209226A -:101F10000A2201AC08D0136C021E031E041EE86ADC -:101F2000022203220422066A115207E00A3409320F -:101F3000083207320632112EF9D7075013260850FF -:101F40000222095003220A50042206C012F0019E08 -:101F500004AE0BD0126C131E021E031E041EE86A90 -:101F60001322022203220422018E04A006D0D8806C -:101F70000332023213321232102A10C004F070EF12 -:101F800010F009C013F008C012F008500D02F4CF91 -:101F900007F0F3CF06F009500E02F4CF09F0F3CFAB -:101FA00008F00D02F3500726F4500822E86A0922CF -:101FB00012500E02F3500726F4500822E86A092254 -:101FC0000EAEE7EF0FF01250085E1350095A13AE31 -:101FD000000C0D50085E0E50095A000C016AACEC62 -:101FE00010F001B6F8EF0FF001A20ED001B405D049 -:101FF0007F0E096EFF0E086E1FD0800E096E086AF4 -:102000001BD0096A086A18D001B0FBD78F0E0A608E -:10201000EDD77E0E0A64F5D78E0E0A5C05E0D890E7 -:10202000093208320A2AF8D701A406D0086C091E22 -:10203000E86A092209AEE5D71200016AACEC10F09B -:1020400001B627EF10F001A20FD001B407D07F0E28 -:10205000096EFF0E086E076E066E25D0800E096EA3 -:1020600001D0096A000EF6D701B0FBD7066A9F0EB1 -:102070000A60EBD77E0E0A64F4D79E0E0A5C07E076 -:10208000D89009320832073206320A2AF6D701A45C -:102090000AD0066C071E081E091EE86A07220822DD -:1020A000092209AEDED712007F0E0A6EFF0E096EFE -:1020B000086E076E12007F0E01BEFF0E0A6E02D080 -:1020C0007F0E0A6E800E096E086A076AF3D701AEAA -:1020D00004D0800E0A6E096AF7D70A6A096AF4D733 -:1020E0000350021013101210F8E005BEF0D703BE23 -:1020F0000CD004500510EBE0D8901236133602369F -:1021000003360406D8A00506F2D70550D4E104280A -:10211000D2E012AE11D07F0E121402E113A00CD047 -:10212000132AE86A0222032207E3D880033202322C -:102130001332042A0428BFE00450C9E013C007F09A -:1021400002C008F00334096E04300A6E09320A9E98 -:1021500001BE0A8E5AEF10F009360A3602E30184F6 -:10216000017E06E101800A6A096A086A076A1200AC -:102170000A2803E0D88009321200D890093202E11F -:1021800001821200018612000E360F3602E3018C26 -:10219000017E06E101880F6A0E6A0D6A0C6A120060 -:1021A0000F2803E0D8800E321200D8900E32EAE1F8 -:0421B000018A12008E -:0C21B4000001BB51010A32E0010A4DE1BC -:1021C000BC51090A24E0010A20E00F0A1CE0010AC0 -:1021D00018E0030A14E0010A10E0070A0CE0010A03 -:1021E00008E0030A04E0010A17E1870E11D08F0E00 -:1021F0000FD0970E0DD09F0E0BD0A70E09D0AF0EAB -:1022000007D0B70E05D0BF0E03D0C70E01D0CF0E3A -:10221000E66E75EC14F0E5520001010EBB6F120082 -:10222000CDEC14F000091AE1BDEC14F0F3CF14F07A -:10223000F4CF15F0BCC0E9FFEA6AE9BEEA681DD92F -:1022400014C0EEFF15C0EDFF090E0001BC5D02E1F8 -:10225000BC6B01D0BC2BBB6B1200BB6B1200949407 -:102260008294050EE66E7C0EE66EEF0EE66E5BEC7B -:1022700013F0E552E552E5521200D9CFE6FFE1CF67 -:10228000D9FFFE0EDBCFE9FFEA6AE9BEEA68F5D8BE -:10229000EECF22F0EFCF23F022C008F023C009F0E8 -:1022A00057EC0EF007C01EF008C01FF009C020F068 -:1022B0000AC021F0D2D807C01AF008C01BF009C02C -:1022C0001CF00AC01DF0C0D807C016F008C017F0F7 -:1022D00009C018F00AC019F0C8D8EEEC0FF008C019 -:1022E000F3FF09C0F4FFE552E7CFD9FF1200B7C0F2 -:1022F00008F0B8C009F057EC0EF007C024F008C091 -:1023000025F009C026F00AC027F0A7D807C020F0A2 -:1023100008C021F009C022F00AC023F095D807C0F8 -:102320001CF008C01DF009C01EF00AC01FF00C6AA6 -:102330000D6A200E0E6E400E0F6E2AEC0FF007C0D5 -:1023400018F008C019F009C01AF00AC01BF08DD8A7 -:1023500007C014F008C015F009C016F00AC017F045 -:10236000550E0C6E0D6E0E6E410E0F6EBDEC0EF026 -:102370001DEF10F00001BA3504E2B9519008010ECA -:10238000BA5501E3000C010CD9CFE6FFE1CFD9FF2C -:10239000050EE126030E79D8DE6ADD6ADECF14F081 -:1023A000DDCF15F0D890155004E6080E145C000E31 -:1023B000155833E2DFCFE6FF60DFE552020EF3CFC0 -:1023C000DBFF030EF4CFDBFF36D804E6E40E145C2B -:1023D0000C0E155806E2040EDB50020802E2020E53 -:1023E00054D829D804E6F00E145C0A0E155806E2FB -:1023F000040EDB50010802E2010E47D81CD804E6A7 -:10240000640E145C000E155803E2040EDB6A05D05E -:10241000DF2A010EC3E3DB2AC1D7040EDB50146EA2 -:10242000050EE15C02E2E16AE552E16E1450E5520C -:10243000E7CFD9FF1200020EDBCF14F0030EDBCF83 -:1024400015F0D890155012000C6AC00E0D6E7F0E5C -:102450000E6E440E0F6E6AEF0EF00C6A0D6AA00E3F -:102460000E6E400E0F6EBDEF0EF00C6A0D6A7A0E06 -:102470000E6E440E0F6EBDEF0EF0D890E936EA36C0 -:10248000A70EE926000EEA221200F36E040EF3CF27 -:04249000DBFF12005C -:0C249400040120511F0B010801E01200A0 -:1024A000245101E01200060E215D21E12351230A8F -:1024B0001BE0010A0CE0030A1AE10001610517E1C3 -:1024C0000001860E716F250E726F090E09D0000192 -:1024D00061050DE10001F30E716F250E726F1D0E87 -:1024E000746F756BC00E02D00001800E736F040113 -:1024F0002051600BE842E842E842E842E842010825 -:1025000001E0120021510B0A26E0080A19E0090A2D -:1025100011E0080A05E00B0A23E0080A21E0120096 -:102520000001DA0E716F000E726F010E746F756B21 -:10253000C10E0FD00001800E736F23C4DAF01200B9 -:102540000001DB0E716F000E726F010E746F756B00 -:10255000810E736F12000001800E736F22C4DBF0D6 -:02256000120067 -:0E2562001201000200000008D804050002006B -:102570000102000109022900010100C03209040022 -:10258000000203000000092111010001221D0007C3 -:102590000581034000010705010340000104030910 -:1025A000042C034D006F00620069006C0065002080 -:1025B0000052006F0062006F007400200050006C39 -:1025C000006100740066006F0072006D0026034217 -:1025D0000061007400740065007200790020004DF5 -:1025E000006F006E00690074006F00720069006E79 -:1025F0000067000600FF0901A1011901294015002B -:1026000026FF00750895408100190129409100C0FE -:0826100074259D25A125CD25AF -:082618002A0EF66E080EF76EA3 -:10262000000EF86E00010900F550D26F0900F55058 -:10263000D36F03E1D26701D03DD00900F550CD6FD3 -:102640000900F550CE6F0900F550CF6F0900090061 -:10265000F550E96E0900F550EA6E0900090009001D -:10266000F550D06F0900F550D16F09000900F6CF81 -:10267000D4F0F7CFD5F0F8CFD6F0CDC0F6FFCEC06E -:10268000F7FFCFC0F8FF0001D05302E1D15307E0BC -:102690000900F550EE6ED007F8E2D107F9D7D4C0A3 -:1026A000F6FFD5C0F7FFD6C0F8FF0001D207000E35 -:0626B000D35BBFD712004E -:0A26B600D9CFE6FFDACFE6FFE1CF4F -:1026C000D9FFE2CFDAFFC26AC06AFC0EDB407F0BA3 -:1026D0003C0BC26EFB0EDBCFE6FFFC0EDB38F00BD3 -:1026E000300BE552E710C16EFD0EDB50040DF350C8 -:1026F000380B156EFD0EDB380F0B070B146EFD0E3D -:10270000DB50800B14101510C06EFC0EDBAE03D036 -:102710009E9C9D8CF28CC280E552E5CFDAFFE7CF1C -:04272000D9FF1200CB -:0C272400FE0EE3CFE9FFFF0EE3CFEAFF5B -:10273000E9CFF3FFEACFF4FFFB0EE35003E1FC0E19 -:10274000E35009E0FB0EE30602E2FC0EE306FD0E99 -:10275000E350EE6EF1D71200FB0EE3CFF6FFFC0E56 -:10276000E3CFF7FFFD0EE3CFF8FFFE0EE3CFE9FF67 -:10277000FF0EE3CFEAFFE9CFF3FFEACFF4FFEE6607 -:10278000FED7ED520900F5CFEFFFEE66FBD7120042 -:102790002DD8FD0EDB50A86EA69EA69CA684F250F6 -:1027A000800B01E0010E0001DC6FF29E550EA76E5A -:1027B000AA0EA76EA682DC51E8B0F28EE8A0F29EC7 -:1027C000A6B2FED7A198A694E552E7CFD9FF120092 -:1027D0000DD8A69EA69CA680020EE66EB2EC14F062 -:1027E000E552A850E552E7CFD9FF1200D9CFE6FF56 -:0C27F000E1CFD9FFFE0EDB50A96E1200F5 -:0427FC00D9CFE6FF4C -:10280000DACFE6FFE1CFD9FFE2CFDAFFFD0EDB50F2 -:102810007E0BCD6EFD0EDBAC02D0CD8E01D0CD9EF9 -:10282000CF6ACE6A9E90DBAE02D09D8001D09D9093 -:0E283000CD80E552E5CFDAFFE7CFD9FF1200E9 -:02283E00323036 -:102840003A35313A34320020004D61722031302067 -:10285000323031300042617474657279204D6F6E90 -:1028600069746F72696E6720312E300A4F6C697619 -:0C28700069657220424943484C45520003 -:04287C00D9CFE6FFCB -:10288000DACFE6FFE1CFD9FFE2CFDAFFE652E65238 -:10289000FC0EDBCFDEFFDBCFDDFF010EDB50CF6EAA -:1028A000DF50CE6EE552E552E552E5CFDAFFE7CFD5 -:0428B000D9FF12003A -:0C28B400D9CFE6FFE1CFD9FF00010ED81C -:1028C000EF50000803E2A6291F0BA66F07D8FE0EE3 -:1028D000DBCFEFFFE552E7CFD9FF1200A651EA6A3E -:0A28E000860FE96E000EEA221200D6 -:0628EA00D9CFE6FFDACFB2 -:1028F000E6FFE1CFD9FFE2CFDAFFFD0EDB407F0B31 -:102900003C0B146EC30EC2141410C26EC282E55288 -:0A291000E5CFDAFFE7CFD9FF120090 -:06291A00FF0EE350296EE0 -:10292000EF0E01D0F30EE76EE72E94EF14F00C0ECD -:10293000286EE76AE72E9AEF14F0282E99EF14F02C -:08294000292E92EF14F01200A1 -:0829480013EE00F023EE00F095 -:10295000F86A019C0CEC13F0D2EC14F062EC0AF073 -:04296000FBD712008F -:0C296400FF0EE350E84E1200000000D00F -:0A29700000D000D0E82EFAD71200C4 -:06297A00C450176E166A3E -:0C298000C3501610F36E17C0F4FF1200D5 -:04298C0000EE00F069 -:0A2990000F0EEE6AEA62FDD7120096 -:06299A00C250020B01E037 -:0429A000010E120012 -:0229A40012001F -:0A29A6000000000000000000000027 -:0C29B0000000000000000000000000001B -:0429BC000000000017 -:0C29C0000100000000000000000000000A -:0429CC000000000007 -:1029D00000000000000000000000000000000000F7 -:0D29E00000000000000000000000000000EA +:1014C000D8FF100004D85EEC04F03ED8FCD70F0E15 +:1014D000C112958602D828EF04F0E6DBE65298DBCD +:1014E0000001D76F070ED75D0EE1E66AECEC13F052 +:1014F000E552DF6E000EDF80CFDBE66A91EC14F080 +:10150000E552DF70C9DBD08EF28EF28C9D80F50E35 +:10151000E66E02EC14F0E552AEDBFC0E8B16941670 +:101520000001BD6BBE6BBF6BC06B010EC16F33ECB6 +:1015300011F08284E66A91EC14F0E5528294E5524F +:10154000E552E7CFD9FF1200D9CFE6FFE1CFD9FFAF +:10155000090EE1260001C15101E09FDA200E0001D1 +:10156000605D03E36D50020B01E076D20001BF51D4 +:10157000C01102E1000E08D0BFC0E9FFC0C0EAFF01 +:10158000EF50800B01E0010E000947E10001A65178 +:10159000EA6A860FE96E000EEA22EF5000083DE28B +:1015A0000501406B0001C251C22B0501416F0501CD +:1015B000040E426F0001A651EA6A860FE96E000E22 +:1015C000EA22EFCF43F5400EE66E400EE66E050EC2 +:1015D000E66E010EE66E010EE66E80EC08F0146E0B +:1015E000050EE15E1450F3CFBFF0F4CFC0F0000160 +:1015F000A651EA6A860FE96E000EEA22EF6A000140 +:10160000A651000803E20001A60707D00001A5517A +:10161000000803E200011F0EA66F0001BD51BE11BC +:1016200002E1000E08D0BDC0E9FFBEC0EAFFEF50E6 +:10163000800B01E0010E000901E00ED2050102510C +:10164000060A01E164D1040A17E0030A05E0010A71 +:1016500001E0C1D1FF0000D2E66AECEC13F0E552E4 +:10166000DF6E000EDB80DFCFE6FFE66ACCEC13F026 +:10167000E552E552FF00F0D10001BF51C01102E177 +:10168000000E08D0BFC0E9FFC0C0EAFFEF50800BDA +:1016900001E0010E000901E039D100C540F5050166 +:1016A000416B0501030E426F0501436B05010851B3 +:1016B0000E0A01E1FCD0030A01E1F4D0010A01E1C4 +:1016C000D6D0070A01E17ED00F0A71E0070A64E074 +:1016D000010A20E0030A06E0010A01E0EDD0D7C0CC +:1016E00048F5EDD00501486B5D0E146E280E156EA1 +:1016F000166A14C0E6FF15C0E6FF16C0E6FF480EE6 +:10170000E66E050EE66EB0EC13F0176E050EE15EA8 +:101710001750D5D00501486B510E146E280E156E6A +:10172000166A14C0E6FF15C0E6FF16C0E6FF480EB5 +:10173000E66E050EE66EB0EC13F0176E050EE15E78 +:1017400017504F0E146E280E156E166A14C0E6FF61 +:1017500015C0E6FF16C0E6FF480EE66E050EE66E03 +:10176000B0EC13F0176E050EE15E1750460E146EC6 +:10177000280E156E166A14C0E6FF15C0E6FF16C0E7 +:10178000E6FF480EE66E050EE66EB0EC13F0176E3F +:10179000050EE15E175093D092CF48F593CF49F5EF +:1017A00094CF4AF595CF4BF596CF4CF588D080CFA6 +:1017B00048F581CF49F582CF4AF583CF4BF584CFE9 +:1017C0004CF57DD0070EDB6A080EDB6A070EDBCF17 +:1017D00014F0080EDBCF15F0D890155004E6080E73 +:1017E000145C000E155842E2070EDBCFE6FF41EC19 +:1017F00011F0E552DE52F3CFDEFFF4CFDDFFDD5214 +:10180000020E086E096A070EDBCF0DF0080EDBCF63 +:101810000EF0C5EC0FF006C0E9FF07C0EAFF480E66 +:10182000E926050EEA22020EDBCFEFFF020E086E5C +:10183000096A070EDBCF0DF0080EDBCF0EF0C5EC0A +:101840000FF006C0E9FF07C0EAFF010EE926000E0F +:10185000EA22480EE926050EEA22010EDBCFEFFF51 +:10186000070EDB2A080E01E3DB2AB0D728D07BEC79 +:1018700011F0030E06C0DBFF040E07C0DBFF050EF0 +:1018800008C0DBFF060E09C0DBFF060EDBCF48F504 +:10189000050EDBCF49F5040EDBCF4AF5030EDBCF97 +:1018A0004BF50DD0BEEC11F00501486F08D0C8EC27 +:1018B00011F00501486F03D00501020E436F400E81 +:1018C000E66E400EE66E050EE66E010EE66E010E49 +:1018D000E66E80EC08F0146E050EE15E1450F3CF56 +:1018E000BFF0F4CFC0F0400EE66E000EE66E050EBF +:1018F000E66EE66A010EE66E80EC08F0146E050EE8 +:10190000E15E1450F3CFBDF0F4CFBEF0A5D00501D9 +:101910000851030A37E0010A25E0030A13E0010A2F +:1019200001E040D005010951921205010A519312BC +:1019300005010B51941205010C51951205010D5131 +:10194000961235D00501091D921605010A1D931640 +:1019500005010B1D941605010C1D951605010D1DA5 +:10196000961625D00501091D891605010A1D8A163E +:1019700005010B1D8B1605010C1D8C1605010D1D97 +:101980008D1615D005010951891205010A518A12D7 +:1019900005010B518B1205010C518C1205010D51E3 +:1019A0008D1205D0030EE66E5EEC14F0E552400E8B +:1019B000E66E000EE66E050EE66EE66A010EE66E57 +:1019C00080EC08F0146E050EE15E1450F3CFBDF00C +:1019D000F4CFBEF041D00001BF51C01102E1000EB2 +:1019E00008D0BFC0E9FFC0C0EAFFEF50800B01E0A4 +:1019F000010E000931E100C540F50501416B05010B +:101A0000030E426F0501010E436F400EE66E400E5D +:101A1000E66E050EE66E010EE66E010EE66E80ECD9 +:101A200008F0146E050EE15E1450F3CFBFF0F4CF52 +:101A3000C0F0400EE66E000EE66E050EE66EE66A3B +:101A4000010EE66E80EC08F0146E050EE15E145097 +:101A5000F3CFBDF0F4CFBEF0090EE15C02E2E16A23 +:101A6000E552E16EE552E7CFD9FF12000001C951FE +:101A7000CA110FE1C8EC11F0010A04E0010A04E107 +:101A8000827403D0828401D08294320E0001C96F27 +:101A9000CA6BC907000ECA5B12000001CB51CC1102 +:101AA00004E1100ECB6F270ECC6FCB07000ECC5B82 +:101AB0006DA207D0CB51CC112EE18B728BB213D01B +:101AC00027D00001605102E18B9222D0600502E133 +:101AD0008B8209D0020E605D02E18B8219D0040E68 +:101AE000605D03E18B928B801200100E605D06E159 +:101AF0000001CB51CC110FE18B720AD0200E605D3A +:101B00000AE10001CB51CC1106E18B728BA202D00D +:101B10008B9012008B801200120012001200120033 +:101B20004EEF12F012001E0EE66E010EE66E4EEC47 +:101B300008F0E552E552400EE66E000EE66E050E28 +:101B4000E66EE66A010EE66E80EC08F0146E050E95 +:101B5000E15E1450F3CFBDF0F4CFBEF012006D84FF +:101B60000001080ED86F070ED96FD807000ED95B99 +:101B7000D851D911FAE16D941200D9CFE6FFE1CF27 +:101B8000D9FFFD0EDBCF08F0FE0EDBCF09F0010E12 +:101B9000081801E1095033E0E868081802E1E86834 +:101BA00009182BE0030E081801E1095024E0040E87 +:101BB000081801E109501DE0020E081801E1095062 +:101BC00016E0170E081801E109500FE0160E08186C +:101BD00001E1095008E0150E081801E1095001E083 +:101BE00010D0A1DF0FD09EDF0DD09ADF0BD096DF93 +:101BF00009D092DF07D091DF05D091DF03D000003C +:101C000001D000D0010E00D0E552E7CFD9FF12007D +:101C10004BD8E652D0B202D0010E15D0D0B802D0C7 +:101C2000020E11D0D0B002D0030E0DD0D0B602D02B +:101C3000040E09D0FCAE02D0050E05D0FCAC02D0DB +:101C4000060E01D0070EDF6ED088D086D084D082F9 +:101C5000D080FC9EFC9CDF50E552E552E7CFD9FFD7 +:101C60001200E65221D8020EE126F350DF6E010E7B +:101C7000F4CFDBFF1200F00EE66ED80EE66E42ECFB +:101C800014F0E552E5521200DF50F36E010EDB5006 +:101C9000F46E020EE15C1200DFCFE6FFE66ACCECE8 +:101CA00013F0E552E5521200D9CFE6FFE1CFD9FF9C +:021CB000120020 +:0E1CB200019E08D0019E09AE05D0086C091EE7 +:101CC000E86A0922018E09C003F008C002F0136A15 +:101CD000126A8E0E046E056A74EF10F0016AB0ECA1 +:101CE00010F0C8EC10F001B658EF10F001A205D0CA +:101CF00001BA58EF10F05FEF10F001BA6BEF10F07F +:101D000001A005D001B858EF10F06BEF10F001B84A +:101D10005FEF10F0056A7F0E0A24046EE86A052260 +:101D20000F50045EE86A055A1A0E106E0A6A126AAB +:101D3000136A026A036A0C50075E0D50085A0E506F +:101D4000095A000E0A5A09E70C5007260D500822BE +:101D50000E500922000E0A2201D0128AD8900736AE +:101D6000083609360A36D89012361336023603364C +:101D7000102EE1D7095008100710D8A4128A74EF6A +:101D800010F0016AB0EC10F0C8EC10F001B658EF9A +:101D900010F001A205D001B858EF10F05FEF10F07D +:101DA00001AA05D001B058EF10F05FEF10F001B0BC +:101DB00002D001A802D06BEF10F0056A0F500A2480 +:101DC000046EE86A05227E0E045EE86A055A126A0D +:101DD000136A026A036A0E500902F4CF03F0F3CFCC +:101DE00002F00D500902F3501326F4500222000EA7 +:101DF00003220E500802F3501326F4500222000E64 +:101E000003220C500902F3501226F4501322000E44 +:101E1000022203220D500802F3501226F45013221E +:101E2000000E022203220E500702F3501226F45035 +:101E30001322000E022203220C500802F450122634 +:101E4000000E1322022203220D500702F450122624 +:101E5000000E13220222032274EF10F00F7E016A9B +:101E6000B0EC10F0C8EC10F001B658EF10F001A281 +:101E70000AD001AA03D001BE58EF10F001A464EF0C +:101E800010F061EF10F001AA05D001AC64EF10F082 +:101E900061EF10F001A00AD001A808D001BE04D063 +:101EA00001A402D06DEF10F071EF10F0126A056A14 +:101EB0000F500A5C116E10E307C013F008C002F067 +:101EC00009C003F00AC010F00CC007F00DC008F004 +:101ED0000EC009F0013A09D00CC013F00DC002F099 +:101EE0000EC003F00FC010F0116C019E01BC018EFA +:101EF00010C004F001B0A0EF10F01A0E1160A0EFB6 +:101F000010F0046A0A6A01A408D0076C081E091EB2 +:101F10000A1EE86A082209220A2201AC08D0136CC2 +:101F2000021E031E041EE86A022203220422066A1D +:101F3000115207E00A340932083207320632112EF4 +:101F4000F9D70750132608500222095003220A50DD +:101F5000042206C012F0019E04AE0BD0126C131EB8 +:101F6000021E031E041EE86A132202220322042218 +:101F7000018E04A006D0D88003320232133212320E +:101F8000102A10C004F074EF10F009C013F008C05C +:101F900012F008500D02F4CF07F0F3CF06F009500D +:101FA0000E02F4CF09F0F3CF08F00D02F35007262C +:101FB000F4500822E86A092212500E02F350072654 +:101FC000F4500822E86A09220EAEEBEF0FF012502F +:101FD000085E1350095A13AE000C0D50085E0E50E7 +:101FE000095A000C016AB0EC10F001B6FCEF0FF0DA +:101FF00001A20ED001B405D07F0E096EFF0E086E4F +:102000001FD0800E096E086A1BD0096A086A18D0B2 +:1020100001B0FBD78F0E0A60EDD77E0E0A64F5D7AC +:102020008E0E0A5C05E0D890093208320A2AF8D7E9 +:1020300001A406D0086C091EE86A092209AEE5D79A +:102040001200016AB0EC10F001B62BEF10F001A203 +:102050000FD001B407D07F0E096EFF0E086E076E19 +:10206000066E25D0800E096E01D0096A000EF6D7E3 +:1020700001B0FBD7066A9F0E0A60EBD77E0E0A649A +:10208000F4D79E0E0A5C07E0D89009320832073276 +:1020900006320A2AF6D701A40AD0066C071E081ECB +:1020A000091EE86A07220822092209AEDED71200BB +:1020B0007F0E0A6EFF0E096E086E076E12007F0E0D +:1020C00001BEFF0E0A6E02D07F0E0A6E800E096EF0 +:1020D000086A076AF3D701AE04D0800E0A6E096A57 +:1020E000F7D70A6A096AF4D70350021013101210C6 +:1020F000F8E005BEF0D703BE0CD004500510EBE0AD +:10210000D89012361336023603360406D8A00506D8 +:10211000F2D70550D4E10428D2E012AE11D07F0EE0 +:10212000121402E113A00CD0132AE86A022203223F +:1021300007E3D880033202321332042A0428BFE0B6 +:102140000450C9E013C007F002C008F00334096E60 +:1021500004300A6E09320A9E01BE0A8E5EEF10F04C +:1021600009360A3602E30184017E06E101800A6A2B +:10217000096A086A076A12000A2803E0D88009324F +:102180001200D890093202E1018212000186120089 +:102190000E360F3602E3018C017E06E101880F6ADC +:1021A0000E6A0D6A0C6A12000F2803E0D8800E3206 +:0C21B0001200D8900E32EAE1018A120001 +:0421BC000001BB5112 +:1021C000010A32E0010A4DE1BC51090A24E0010A8A +:1021D00020E00F0A1CE0010A18E0030A14E0010ADB +:1021E00010E0070A0CE0010A08E0030A04E0010A13 +:1021F00017E1870E11D08F0E0FD0970E0DD09F0EC6 +:102200000BD0A70E09D0AF0E07D0B70E05D0BF0E6A +:1022100003D0C70E01D0CF0EE66E79EC14F0E55274 +:102220000001010EBB6F1200D1EC14F000091AE19D +:10223000C1EC14F0F3CF14F0F4CF15F0BCC0E9FFFB +:10224000EA6AE9BEEA681DD914C0EEFF15C0EDFFC9 +:10225000090E0001BC5D02E1BC6B01D0BC2BBB6B65 +:102260001200BB6B120094948294050EE66E7C0EF5 +:10227000E66EEF0EE66E5FEC13F0E552E552E552C6 +:102280001200D9CFE6FFE1CFD9FFFE0EDBCFE9FF89 +:10229000EA6AE9BEEA68F5D8EECF22F0EFCF23F084 +:1022A00022C008F023C009F05BEC0EF007C01EF05E +:1022B00008C01FF009C020F00AC021F0D2D807C022 +:1022C0001AF008C01BF009C01CF00AC01DF0C0D8ED +:1022D00007C016F008C017F009C018F00AC019F0BE +:1022E000C8D8F2EC0FF008C0F3FF09C0F4FFE552C4 +:1022F000E7CFD9FF1200B7C008F0B8C009F05BEC17 +:102300000EF007C024F008C025F009C026F00AC06E +:1023100027F0A7D807C020F008C021F009C022F09C +:102320000AC023F095D807C01CF008C01DF009C0F2 +:102330001EF00AC01FF00C6A0D6A200E0E6E400ED1 +:102340000F6E2EEC0FF007C018F008C019F009C08E +:102350001AF00AC01BF08DD807C014F008C015F0A1 +:1023600009C016F00AC017F0550E0C6E0D6E0E6EF9 +:10237000410E0F6EC1EC0EF021EF10F00001BA35E6 +:1023800004E2B9519008010EBA5501E3000C010CAA +:10239000D9CFE6FFE1CFD9FF050EE126030E79D8AC +:1023A000DE6ADD6ADECF14F0DDCF15F0D89015506F +:1023B00004E6080E145C000E155833E2DFCFE6FF8A +:1023C00060DFE552020EF3CFDBFF030EF4CFDBFF3D +:1023D00036D804E6E40E145C0C0E155806E2040E22 +:1023E000DB50020802E2020E54D829D804E6F00EAF +:1023F000145C0A0E155806E2040EDB50010802E2D6 +:10240000010E47D81CD804E6640E145C000E155863 +:1024100003E2040EDB6A05D0DF2A010EC3E3DB2AE8 +:10242000C1D7040EDB50146E050EE15C02E2E16AD6 +:10243000E552E16E1450E552E7CFD9FF1200020ECB +:10244000DBCF14F0030EDBCF15F0D890155012003F +:102450000C6AC00E0D6E7F0E0E6E440E0F6E6EEF88 +:102460000EF00C6A0D6AA00E0E6E400E0F6EC1EFDC +:102470000EF00C6A0D6A7A0E0E6E440E0F6EC1EFEE +:102480000EF0D890E936EA36A70EE926000EEA22C9 +:0C2490001200F36E040EF3CFDBFF12000D +:04249C0004012051C6 +:1024A0001F0B010801E01200245101E01200060E8A +:1024B000215D21E12351230A1BE0010A0CE0030AFC +:1024C0001AE10001610517E100018E0E716F250E02 +:1024D000726F090E09D0000161050DE10001FB0ECC +:1024E000716F250E726F1D0E746F756BC00E02D06A +:1024F0000001800E736F04012051600BE842E84236 +:10250000E842E842E842010801E0120021510B0ACA +:1025100026E0080A19E0090A11E0080A05E00B0A9A +:1025200023E0080A21E012000001DA0E716F000EAC +:10253000726F010E746F756BC10E0FD00001800EAB +:10254000736F23C4DAF012000001DB0E716F000E0E +:10255000726F010E746F756B810E736F1200000144 +:0A256000800E736F22C4DBF012003E +:06256A0012010002000056 +:102570000008D80405000200010200010902290038 +:10258000010100C03209040000020300000009211B +:1025900011010001221D000705810340000107050C +:1025A0000103400001040309042C034D006F006285 +:1025B0000069006C006500200052006F0062006F2F +:1025C000007400200050006C006100740066006F11 +:1025D0000072006D00260342006100740074006503 +:1025E000007200790020004D006F006E00690074D9 +:1025F000006F00720069006E0067000600FF0901AD +:10260000A10119012940150026FF00750895408198 +:1026100000190129409100C07C25A525A925D525B3 +:102620002A0EF66E080EF76E000EF86E0001090015 +:10263000F550D26F0900F550D36F03E1D26701D096 +:102640003DD00900F550CD6F0900F550CE6F09005F +:10265000F550CF6F09000900F550E96E0900F550FB +:10266000EA6E090009000900F550D06F0900F55025 +:10267000D16F09000900F6CFD4F0F7CFD5F0F8CF2D +:10268000D6F0CDC0F6FFCEC0F7FFCFC0F8FF0001F7 +:10269000D05302E1D15307E00900F550EE6ED007A8 +:1026A000F8E2D107F9D7D4C0F6FFD5C0F7FFD6C0FE +:0E26B000F8FF0001D207000ED35BBFD7120067 +:0226BE00D9CF72 +:1026C000E6FFDACFE6FFE1CFD9FFE2CFDAFFC26A59 +:1026D000C06AFC0EDB407F0B3C0BC26EFB0EDBCFF7 +:1026E000E6FFFC0EDB38F00B300BE552E710C16E55 +:1026F000FD0EDB50040DF350380B156EFD0EDB386C +:102700000F0B070B146EFD0EDB50800B1410151011 +:10271000C06EFC0EDBAE03D09E9C9D8CF28CC28002 +:0C272000E552E5CFDAFFE7CFD9FF120049 +:04272C00FE0EE3CFEB +:10273000E9FFFF0EE3CFEAFFE9CFF3FFEACFF4FFB3 +:10274000FB0EE35003E1FC0EE35009E0FB0EE30651 +:1027500002E2FC0EE306FD0EE350EE6EF1D712002E +:10276000FB0EE3CFF6FFFC0EE3CFF7FFFD0EE3CF4A +:10277000F8FFFE0EE3CFE9FFFF0EE3CFEAFFE9CF5C +:10278000F3FFEACFF4FFEE66FED7ED520900F5CF76 +:08279000EFFFEE66FBD712001B +:082798002DD8FD0EDB50A86EE8 +:1027A000A69EA69CA684F250800B01E0010E0001BB +:1027B000DC6FF29E550EA76EAA0EA76EA682DC51A4 +:1027C000E8B0F28EE8A0F29EA6B2FED7A198A69439 +:1027D000E552E7CFD9FF12000DD8A69EA69CA68091 +:1027E000020EE66EB6EC14F0E552A850E552E7CFC3 +:1027F000D9FF1200D9CFE6FFE1CFD9FFFE0EDB50A3 +:04280000A96E1200AB +:0C280400D9CFE6FFDACFE6FFE1CFD9FF25 +:10281000E2CFDAFFFD0EDB507E0BCD6EFD0EDBACA2 +:1028200002D0CD8E01D0CD9ECF6ACE6A9E90DBAE17 +:1028300002D09D8001D09D90CD80E552E5CFDAFF9A +:06284000E7CFD9FF1200F2 +:0A28460032313A35353A35380020BA +:10285000004D6172203130203230313000426174DD +:1028600074657279204D6F6E69746F72696E67203E +:10287000312E300A4F6C69766965722042494348AF +:042880004C45520071 +:0C288400D9CFE6FFDACFE6FFE1CFD9FFA5 +:10289000E2CFDAFFE652E652FC0EDBCFDEFFDBCF03 +:1028A000DDFF010EDB50CF6EDF50CE6EE552E552FC +:0C28B000E552E5CFDAFFE7CFD9FF1200B8 +:0428BC00D9CFE6FF8B +:1028C000E1CFD9FF00010ED8EF50000803E2A6299E +:1028D0001F0BA66F07D8FE0EDBCFEFFFE552E7CF49 +:1028E000D9FF1200A651EA6A860FE96E000EEA22AD +:0228F0001200D4 +:0E28F200D9CFE6FFDACFE6FFE1CFD9FFE2CF84 +:10290000DAFFFD0EDB407F0B3C0B146EC30EC214CE +:102910001410C26EC282E552E5CFDAFFE7CFD9FFCD +:022920001200A3 +:0E292200FF0EE350296EEF0E01D0F30EE76EAC +:10293000E72E98EF14F00C0E286EE76AE72E9EEF54 +:1029400014F0282E9DEF14F0292E96EF14F01200AB +:1029500013EE00F023EE00F0F86A019C10EC13F087 +:0C296000D6EC14F062EC0AF0FBD7120079 +:04296C00FF0EE35027 +:10297000E84E1200000000D000D000D0E82EFAD7B8 +:02298000120043 +:0E298200C450176E166AC3501610F36E17C0BD +:04299000F4FF12003E +:0C29940000EE00F00F0EEE6AEA62FDD7C4 +:0229A000120023 +:0A29A200C250020B01E0010E12000A +:0229AC00120017 +:0229AE00000027 +:1029B0000000000000000000000000000000000017 +:0429C0000000000013 +:0C29C40000000000010000000000000006 +:0429D0000000000003 +:0C29D400000000000000000000000000F7 +:1029E00000000000000000000000000000000000E7 +:0529F0000000000000E2 :00000001FF diff --git a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map index fa86762..83510bc 100644 --- a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map +++ b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map @@ -1,5 +1,5 @@ MPLINK 4.21, Linker -Linker Map File - Created Wed Mar 10 20:51:46 2010 +Linker Map File - Created Wed Mar 10 21:56:01 2010 Section Info Section Type Address Location Size(Bytes) @@ -12,58 +12,58 @@ REMAPPED_HIGH_INTERRUPT_VECTOR code 0x000808 program 0x000006 REMAPPED_LOW_INTERRUPT_VECTOR code 0x000818 program 0x000006 .cinit romdata 0x00082a program 0x000026 .code_usb_device.o code 0x000850 program 0x000b5a - .code_main.o code 0x0013aa program 0x000900 - PROG code 0x001caa program 0x00050a - .code_monitor.o code 0x0021b4 program 0x0002e0 - .code_usb_function_hid.o code 0x002494 program 0x0000ce -.romdata_usb_descriptors.o romdata 0x002562 program 0x0000b6 - _cinit_scn code 0x002618 program 0x00009e - .code_adcopen.o code 0x0026b6 program 0x00006e - STRING code 0x002724 program 0x00006c - .code_eeprom.o code 0x002790 program 0x00006c - .code_t1open.o code 0x0027fc program 0x000042 - .stringtable romdata 0x00283e program 0x00003e - .code_t1write.o code 0x00287c program 0x000038 - .code_error.o code 0x0028b4 program 0x000036 - .code_adcselchconv.o code 0x0028ea program 0x000030 - D10KTCYXCODE code 0x00291a program 0x00002e - _startup_scn code 0x002948 program 0x00001c - D10TCYXCODE code 0x002964 program 0x000016 - .code_adcread.o code 0x00297a program 0x000012 - .code code 0x00298c program 0x00000e - .code_adcbusy.o code 0x00299a program 0x00000a - .code___init.o code 0x0029a4 program 0x000002 - .romdata_adcread.o romdata 0x0029a6 program 0x000000 - .romdata_adcselchconv.o romdata 0x0029a6 program 0x000000 - .romdata_t1open.o romdata 0x0029a6 program 0x000000 - .idata_t1write.o_i romdata 0x0029a6 program 0x000000 - .idata_t1open.o_i romdata 0x0029a6 program 0x000000 - .romdata_t1write.o romdata 0x0029a6 program 0x000000 - .romdata___init.o romdata 0x0029a6 program 0x000000 - .romdata_adcopen.o romdata 0x0029a6 program 0x000000 - .romdata_c018i.o romdata 0x0029a6 program 0x000000 -.idata_usb_descriptors.o_i romdata 0x0029a6 program 0x000000 - .romdata_main.o romdata 0x0029a6 program 0x000000 - .romdata_eeprom.o romdata 0x0029a6 program 0x000000 - .idata_usb_device.o_i romdata 0x0029a6 program 0x000000 - .romdata_usb_device.o romdata 0x0029a6 program 0x000000 -.idata_usb_function_hid.o_i romdata 0x0029a6 program 0x000000 -.romdata_usb_function_hid.o romdata 0x0029a6 program 0x000000 - .romdata_error.o romdata 0x0029a6 program 0x000000 - .idata_monitor.o_i romdata 0x0029a6 program 0x000016 - .romdata_monitor.o romdata 0x0029a6 program 0x000000 - .romdata_adcbusy.o romdata 0x0029a6 program 0x000000 - .idata_main.o_i romdata 0x0029bc program 0x000010 - .idata_error.o_i romdata 0x0029cc program 0x000021 - .idata_adcread.o_i romdata 0x0029ed program 0x000000 - .idata_adcselchconv.o_i romdata 0x0029ed program 0x000000 - .idata_adcopen.o_i romdata 0x0029ed program 0x000000 - .idata_eeprom.o_i romdata 0x0029ed program 0x000000 - .idata___init.o_i romdata 0x0029ed program 0x000000 - .idata_adcbusy.o_i romdata 0x0029ed program 0x000000 - .idata_c018i.o_i romdata 0x0029ed program 0x000000 - .code_usb_descriptors.o code 0x0029ee program 0x000000 - .code_c018i.o code 0x0029ee program 0x000000 + .code_main.o code 0x0013aa program 0x000908 + PROG code 0x001cb2 program 0x00050a + .code_monitor.o code 0x0021bc program 0x0002e0 + .code_usb_function_hid.o code 0x00249c program 0x0000ce +.romdata_usb_descriptors.o romdata 0x00256a program 0x0000b6 + _cinit_scn code 0x002620 program 0x00009e + .code_adcopen.o code 0x0026be program 0x00006e + STRING code 0x00272c program 0x00006c + .code_eeprom.o code 0x002798 program 0x00006c + .code_t1open.o code 0x002804 program 0x000042 + .stringtable romdata 0x002846 program 0x00003e + .code_t1write.o code 0x002884 program 0x000038 + .code_error.o code 0x0028bc program 0x000036 + .code_adcselchconv.o code 0x0028f2 program 0x000030 + D10KTCYXCODE code 0x002922 program 0x00002e + _startup_scn code 0x002950 program 0x00001c + D10TCYXCODE code 0x00296c program 0x000016 + .code_adcread.o code 0x002982 program 0x000012 + .code code 0x002994 program 0x00000e + .code_adcbusy.o code 0x0029a2 program 0x00000a + .code___init.o code 0x0029ac program 0x000002 + .romdata_adcread.o romdata 0x0029ae program 0x000000 + .romdata_adcselchconv.o romdata 0x0029ae program 0x000000 + .romdata_t1open.o romdata 0x0029ae program 0x000000 + .idata_t1write.o_i romdata 0x0029ae program 0x000000 + .idata_t1open.o_i romdata 0x0029ae program 0x000000 + .romdata_t1write.o romdata 0x0029ae program 0x000000 + .romdata___init.o romdata 0x0029ae program 0x000000 + .romdata_adcopen.o romdata 0x0029ae program 0x000000 + .romdata_c018i.o romdata 0x0029ae program 0x000000 +.idata_usb_descriptors.o_i romdata 0x0029ae program 0x000000 + .romdata_main.o romdata 0x0029ae program 0x000000 + .romdata_eeprom.o romdata 0x0029ae program 0x000000 + .idata_usb_device.o_i romdata 0x0029ae program 0x000000 + .romdata_usb_device.o romdata 0x0029ae program 0x000000 +.idata_usb_function_hid.o_i romdata 0x0029ae program 0x000000 +.romdata_usb_function_hid.o romdata 0x0029ae program 0x000000 + .romdata_error.o romdata 0x0029ae program 0x000000 + .idata_monitor.o_i romdata 0x0029ae program 0x000016 + .romdata_monitor.o romdata 0x0029ae program 0x000000 + .romdata_adcbusy.o romdata 0x0029ae program 0x000000 + .idata_main.o_i romdata 0x0029c4 program 0x000010 + .idata_error.o_i romdata 0x0029d4 program 0x000021 + .idata_adcread.o_i romdata 0x0029f5 program 0x000000 + .idata_adcselchconv.o_i romdata 0x0029f5 program 0x000000 + .idata_adcopen.o_i romdata 0x0029f5 program 0x000000 + .idata_eeprom.o_i romdata 0x0029f5 program 0x000000 + .idata___init.o_i romdata 0x0029f5 program 0x000000 + .idata_adcbusy.o_i romdata 0x0029f5 program 0x000000 + .idata_c018i.o_i romdata 0x0029f5 program 0x000000 + .code_usb_descriptors.o code 0x0029f6 program 0x000000 + .code_c018i.o code 0x0029f6 program 0x000000 MATH_DATA udata 0x000000 data 0x000014 .tmpdata udata 0x000014 data 0x000014 DELAYDAT2 udata 0x000028 data 0x000001 @@ -114,54 +114,54 @@ REMAPPED_LOW_INTERRUPT_VECTOR code 0x000818 program 0x000006 0x000800 0x000805 0x000808 0x00080d 0x000818 0x00081d - 0x00082a 0x0029ec - 8679 out of 33048 program addresses used, program memory utilization is 26% + 0x00082a 0x0029f4 + 8687 out of 33048 program addresses used, program memory utilization is 26% Symbols - Sorted by Name Name Address Location Storage File --------- --------- --------- --------- --------- - BlinkUSBStatus 0x001a92 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - BusyADC 0x00299a program extern C:\MCC18\src\pmc_common\ADC\adcbusy.c - D10K_1 0x002926 program static C:\MCC18\src\traditional\delays\d10ktcyx.asm - D10Kl 0x002932 program static C:\MCC18\src\traditional\delays\d10ktcyx.asm - D10Kx 0x002924 program static C:\MCC18\src\traditional\delays\d10ktcyx.asm - D10_1 0x002974 program static C:\MCC18\src\traditional\delays\d10tcyx.asm - D10x 0x00296c program static C:\MCC18\src\traditional\delays\d10tcyx.asm - Delay10KTCYx 0x00291a program extern C:\MCC18\src\traditional\delays\d10ktcyx.asm - Delay10TCYx 0x002964 program extern C:\MCC18\src\traditional\delays\d10tcyx.asm - FLO1632S 0x001cae program extern C:\MCC18\src\traditional\math\cast16FP.asm - FLO1632U 0x001caa program extern C:\MCC18\src\traditional\math\cast16FP.asm - FPA32 0x001e56 program extern C:\MCC18\src\traditional\math\addFP.asm - FPD32 0x001cd4 program extern C:\MCC18\src\traditional\math\divFP.asm - FPM32 0x001d7a program extern C:\MCC18\src\traditional\math\mulFP.asm - FPS32 0x001e54 program extern C:\MCC18\src\traditional\math\addFP.asm - FXM1616S 0x001f82 program extern C:\MCC18\src\traditional\math\fxm1616s.asm + BlinkUSBStatus 0x001a9a program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + BusyADC 0x0029a2 program extern C:\MCC18\src\pmc_common\ADC\adcbusy.c + D10K_1 0x00292e program static C:\MCC18\src\traditional\delays\d10ktcyx.asm + D10Kl 0x00293a program static C:\MCC18\src\traditional\delays\d10ktcyx.asm + D10Kx 0x00292c program static C:\MCC18\src\traditional\delays\d10ktcyx.asm + D10_1 0x00297c program static C:\MCC18\src\traditional\delays\d10tcyx.asm + D10x 0x002974 program static C:\MCC18\src\traditional\delays\d10tcyx.asm + Delay10KTCYx 0x002922 program extern C:\MCC18\src\traditional\delays\d10ktcyx.asm + Delay10TCYx 0x00296c program extern C:\MCC18\src\traditional\delays\d10tcyx.asm + FLO1632S 0x001cb6 program extern C:\MCC18\src\traditional\math\cast16FP.asm + FLO1632U 0x001cb2 program extern C:\MCC18\src\traditional\math\cast16FP.asm + FPA32 0x001e5e program extern C:\MCC18\src\traditional\math\addFP.asm + FPD32 0x001cdc program extern C:\MCC18\src\traditional\math\divFP.asm + FPM32 0x001d82 program extern C:\MCC18\src\traditional\math\mulFP.asm + FPS32 0x001e5c program extern C:\MCC18\src\traditional\math\addFP.asm + FXM1616S 0x001f8a program extern C:\MCC18\src\traditional\math\fxm1616s.asm High_ISR 0x000008 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - INT3216 0x001fdc program extern C:\MCC18\src\traditional\math\castFP16.asm - INT3232 0x00203a program extern C:\MCC18\src\traditional\math\castFP32.asm + INT3216 0x001fe4 program extern C:\MCC18\src\traditional\math\castFP16.asm + INT3232 0x002042 program extern C:\MCC18\src\traditional\math\castFP32.asm InitializeSystem 0x0014ce program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c Low_ISR 0x000018 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - OpenADC 0x0026b6 program extern C:\MCC18\src\pmc_common\ADC\adcopen.c - OpenTimer1 0x0027fc program extern C:\MCC18\src\pmc_common\Timers\t1open.c - ProcessIO 0x001540 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - ReadADC 0x00297a program extern C:\MCC18\src\pmc_common\ADC\adcread.c - ReadEEPROM 0x0027d0 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c + OpenADC 0x0026be program extern C:\MCC18\src\pmc_common\ADC\adcopen.c + OpenTimer1 0x002804 program extern C:\MCC18\src\pmc_common\Timers\t1open.c + ProcessIO 0x001548 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + ReadADC 0x002982 program extern C:\MCC18\src\pmc_common\ADC\adcread.c + ReadEEPROM 0x0027d8 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c Remapped_High_ISR 0x000808 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c Remapped_Low_ISR 0x000818 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - ResetSource 0x001c08 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - SelChanConvADC 0x0028ea program extern C:\MCC18\src\pmc_common\ADC\adcselchconv.c - TSIGN1616A 0x001fce program static C:\MCC18\src\traditional\math\fxm1616s.asm - USBCBCheckOtherReq 0x001b18 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBErrorHandler 0x001b16 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBInitEP 0x001b1e program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBSendResume 0x001b56 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBStdSetDscHandler 0x001b1c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBSuspend 0x001b10 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBWakeFromSuspend 0x001b12 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCB_SOF_Handler 0x001b14 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCheckHIDRequest 0x002494 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c + ResetSource 0x001c10 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + SelChanConvADC 0x0028f2 program extern C:\MCC18\src\pmc_common\ADC\adcselchconv.c + TSIGN1616A 0x001fd6 program static C:\MCC18\src\traditional\math\fxm1616s.asm + USBCBCheckOtherReq 0x001b20 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBErrorHandler 0x001b1e program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBInitEP 0x001b26 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBSendResume 0x001b5e program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBStdSetDscHandler 0x001b24 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBSuspend 0x001b18 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBWakeFromSuspend 0x001b1a program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCB_SOF_Handler 0x001b1c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCheckHIDRequest 0x00249c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c USBCheckStdRequest 0x000bb2 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c USBClearInterruptFlag 0x001168 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c USBConfigureEndpoint 0x001024 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c @@ -185,105 +185,105 @@ USBPrepareForNextSetupTrf 0x000b6a program extern C:\krobot\USB_Module\ USBSuspend 0x000a12 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c USBTransferOnePacket 0x001100 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c USBWakeFromSuspend 0x000a24 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USB_CD_Ptr 0x002610 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c - USB_SD_Ptr 0x002612 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c -USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USB_CD_Ptr 0x002618 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + USB_SD_Ptr 0x00261a program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c +USER_USB_CALLBACK_EVENT_HANDLER 0x001b7a program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c UserInit 0x0014da program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - WriteEEPROM 0x002790 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c - WriteTimer1 0x00287c program extern C:\MCC18\src\pmc_common\Timers\t1write.c + WriteEEPROM 0x002798 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c + WriteTimer1 0x002884 program extern C:\MCC18\src\pmc_common\Timers\t1write.c YourHighPriorityISRCode 0x0013aa program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c YourLowPriorityISRCode 0x00147c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - _2jContinue 0x002744 program static C:\MCC18\src\traditional\stdclib\memset.asm - _3jEnd 0x00274e program static C:\MCC18\src\traditional\stdclib\memset.asm - _D10KTCYXCODE_0010 0x00292a program static C:\MCC18\src\traditional\delays\d10ktcyx.asm - _D10KTCYXCODE_001C 0x002936 program static C:\MCC18\src\traditional\delays\d10ktcyx.asm - _D10TCYXCODE_000A 0x00296e program static C:\MCC18\src\traditional\delays\d10tcyx.asm - _D10TCYXCODE_000C 0x002970 program static C:\MCC18\src\traditional\delays\d10tcyx.asm - _D10TCYXCODE_000E 0x002972 program static C:\MCC18\src\traditional\delays\d10tcyx.asm - __FpExit 0x0020b4 program extern C:\MCC18\src\traditional\math\packFP.asm - __FpPack 0x0020e0 program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnNaN 0x0020a8 program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnNegInf 0x0020ba program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnNegZero 0x0020d2 program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnPosInf 0x0020c0 program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnPosZero 0x0020da program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnSignInf 0x0020b6 program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnSignZero 0x0020ce program extern C:\MCC18\src\traditional\math\packFP.asm - __FpReturnW 0x002138 program extern C:\MCC18\src\traditional\math\packFP.asm - __FpUnPackA 0x002158 program extern C:\MCC18\src\traditional\math\UnpackFP.asm - __FpUnPackB 0x002188 program extern C:\MCC18\src\traditional\math\UnpackFP.asm - ___?:_lbl00019 0x001580 program static - ___?:_lbl00020 0x001570 program static - ___?:_lbl00026 0x00162e program static - ___?:_lbl00027 0x00161e program static - ___?:_lbl00031 0x00168c program static - ___?:_lbl00032 0x00167c program static - ___?:_lbl00056 0x0019ea program static - ___?:_lbl00057 0x0019da program static - ___case_-1_lbl00108 0x001bf2 program static - ___case_0_lbl00029 0x00164c program static - ___case_0_lbl00034 0x0016d6 program static - ___case_0_lbl00050 0x00191c program static - ___case_11_lbl00042 0x0017bc program static - ___case_12_lb... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-03-10 21:16:16
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 0c7d257797c48e7e3c60e1c39832214d3cb6f1a4 (commit) from d86af02d7116d36400cf76eaf1b67ffde1a25691 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0c7d257797c48e7e3c60e1c39832214d3cb6f1a4 Author: Kro[bot] <krobot@wally.(none)> Date: Wed Mar 10 21:10:57 2010 +0000 [protocol] add the "turn" command ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index 4fa41ad..3ca45da 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -468,6 +468,16 @@ let interfaces = [ Arg("velocity", sint16); Arg("acceleration", sint16)] (); + command + ~name:"turn" + ~code:PcInterface.cmd_traj + ~args:[Cst(uint8, PcInterface.traj_turn); + Arg("angle", sint16); + Arg("velocity", sint16); + Arg("acceleration", sint16); + Arg("distance", sint16); + Arg("relative", bool)] + (); enum ~name:"goto-mode" ~typ:uint8 hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2010-03-10 20:26:26
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via d86af02d7116d36400cf76eaf1b67ffde1a25691 (commit) via 2b26e9ac62a42f86b2e0f92f45b747077ad115f4 (commit) from 43e3061d573cb3f9d03581fc101dc4da46a6941a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d86af02d7116d36400cf76eaf1b67ffde1a25691 Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 10 20:57:27 2010 +0100 Unused port B pin set to outputs to avoid unexpected interrupt-on-change commit 2b26e9ac62a42f86b2e0f92f45b747077ad115f4 Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 10 20:56:29 2010 +0100 Corrected buzzer not biping during reset ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Battery_Monitoring/Firmware/main.c b/USB_Module/Battery_Monitoring/Firmware/main.c index c44b75a..a15473f 100644 --- a/USB_Module/Battery_Monitoring/Firmware/main.c +++ b/USB_Module/Battery_Monitoring/Firmware/main.c @@ -503,9 +503,6 @@ void UserInit(void) { BYTE eeprom; - BUZZER = 1; // On allume le buzzer pendant la phase d'initialisation, - // ce qui permet de vfier que celui-ci fonctionne. - // ResetSource() permet de connaitre l'origine du dernier reset tout en ritialisant correctement // les registres pour le prochain reset. Si elle n'est pas appelhaque drrage du PIC, les // registres ne seront pas correctement ritialis et l'origine du reset renvoypar cette @@ -524,6 +521,11 @@ void UserInit(void) WriteEEPROM(0x00, eeprom); } + initMonitor(); // Il faut le faire avant d'utiliser BUZZER (pin en sortie) + + BUZZER = 1; // On allume le buzzer pendant la phase d'initialisation, + // ce qui permet de vfier que celui-ci fonctionne. + // Configuration interruptions RCONbits.IPEN = 1; // Enable priority levels on interrupts INTCONbits.GIE = 1; // Enables all high priority interrupts @@ -557,8 +559,6 @@ void UserInit(void) blinkStatusValid = TRUE; - initMonitor(); - BUZZER = 0; // Fin de la phase d'initialisation }//end UserInit diff --git a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof index 8c86a9f..1b67016 100644 Binary files a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof and b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.cof differ diff --git a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex index e123d32..95333e6 100644 --- a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex +++ b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.hex @@ -209,13 +209,13 @@ :1014A000E552E16EE552E7CFD9FFE552E5CFF4FF13 :1014B000E5CFF3FFE5CFDAFFE550E5CFE0FFE5CF7D :1014C000D8FF100004D85EEC04F03AD8FCD70F0E19 -:1014D000C112958602D828EF04F0E2DBE65282843E -:1014E00093DB0001D76F070ED75D0EE1E66AE8ECEB -:1014F00013F0E552DF6E000EDF80CADBE66A8DEC8A -:1015000014F0E552DF70C4DBD08EF28EF28C9D8039 -:10151000F50EE66EFEEC13F0E552A9DBFC0E8B1621 -:1015200094160001BD6BBE6BBF6BC06B010EC16F2B -:101530002FEC11F08294E552E552E7CFD9FF12006B +:1014D000C112958602D828EF04F0E2DBE65294DBD5 +:1014E0000001D76F070ED75D0EE1E66AE8EC13F056 +:1014F000E552DF6E000EDF80CBDBE66A8DEC14F088 +:10150000E552DF70C5DB2FEC11F08284D08EF28EB5 +:10151000F28C9D80F50EE66EFEEC13F0E552A7DB33 +:10152000FC0E8B1694160001BD6BBE6BBF6BC06BBF +:10153000010EC16F8294E552E552E7CFD9FF120048 :10154000D9CFE6FFE1CFD9FF090EE1260001C15155 :1015500001E09FDA200E0001605D03E36D50020B95 :1015600001E076D20001BF51C01102E1000E08D0A7 @@ -528,8 +528,8 @@ :102810007E0BCD6EFD0EDBAC02D0CD8E01D0CD9EF9 :10282000CF6ACE6A9E90DBAE02D09D8001D09D9093 :0E283000CD80E552E5CFDAFFE7CFD9FF1200E9 -:02283E00323333 -:102840003A34313A31370020004D6172203038205F +:02283E00323036 +:102840003A35313A34320020004D61722031302067 :10285000323031300042617474657279204D6F6E90 :1028600069746F72696E6720312E300A4F6C697619 :0C28700069657220424943484C45520003 diff --git a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map index 87416a1..fa86762 100644 --- a/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map +++ b/USB_Module/Battery_Monitoring/Firmware/output/Battery_Monitoring.map @@ -1,5 +1,5 @@ MPLINK 4.21, Linker -Linker Map File - Created Mon Mar 8 23:41:28 2010 +Linker Map File - Created Wed Mar 10 20:51:46 2010 Section Info Section Type Address Location Size(Bytes) @@ -122,7 +122,7 @@ REMAPPED_LOW_INTERRUPT_VECTOR code 0x000818 program 0x000006 Symbols - Sorted by Name Name Address Location Storage File --------- --------- --------- --------- --------- - BlinkUSBStatus 0x001a92 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + BlinkUSBStatus 0x001a92 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c BusyADC 0x00299a program extern C:\MCC18\src\pmc_common\ADC\adcbusy.c D10K_1 0x002926 program static C:\MCC18\src\traditional\delays\d10ktcyx.asm D10Kl 0x002932 program static C:\MCC18\src\traditional\delays\d10ktcyx.asm @@ -138,61 +138,61 @@ REMAPPED_LOW_INTERRUPT_VECTOR code 0x000818 program 0x000006 FPM32 0x001d7a program extern C:\MCC18\src\traditional\math\mulFP.asm FPS32 0x001e54 program extern C:\MCC18\src\traditional\math\addFP.asm FXM1616S 0x001f82 program extern C:\MCC18\src\traditional\math\fxm1616s.asm - High_ISR 0x000008 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + High_ISR 0x000008 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c INT3216 0x001fdc program extern C:\MCC18\src\traditional\math\castFP16.asm INT3232 0x00203a program extern C:\MCC18\src\traditional\math\castFP32.asm - InitializeSystem 0x0014ce program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - Low_ISR 0x000018 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + InitializeSystem 0x0014ce program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + Low_ISR 0x000018 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c OpenADC 0x0026b6 program extern C:\MCC18\src\pmc_common\ADC\adcopen.c OpenTimer1 0x0027fc program extern C:\MCC18\src\pmc_common\Timers\t1open.c - ProcessIO 0x001540 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + ProcessIO 0x001540 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c ReadADC 0x00297a program extern C:\MCC18\src\pmc_common\ADC\adcread.c - ReadEEPROM 0x0027d0 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c - Remapped_High_ISR 0x000808 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - Remapped_Low_ISR 0x000818 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - ResetSource 0x001c08 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + ReadEEPROM 0x0027d0 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c + Remapped_High_ISR 0x000808 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + Remapped_Low_ISR 0x000818 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + ResetSource 0x001c08 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c SelChanConvADC 0x0028ea program extern C:\MCC18\src\pmc_common\ADC\adcselchconv.c TSIGN1616A 0x001fce program static C:\MCC18\src\traditional\math\fxm1616s.asm - USBCBCheckOtherReq 0x001b18 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBErrorHandler 0x001b16 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBInitEP 0x001b1e program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBSendResume 0x001b56 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBStdSetDscHandler 0x001b1c program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBSuspend 0x001b10 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCBWakeFromSuspend 0x001b12 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCB_SOF_Handler 0x001b14 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBCheckHIDRequest 0x002494 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c - USBCheckStdRequest 0x000bb2 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBClearInterruptFlag 0x001168 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBConfigureEndpoint 0x001024 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBCtrlEPService 0x000a3c program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBCtrlEPServiceComplete 0x000e1c program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBCtrlTrfInHandler 0x000b10 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBCtrlTrfOutHandler 0x000af4 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBCtrlTrfRxService 0x000f36 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBCtrlTrfSetupHandler 0x000ad0 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBCtrlTrfTxService 0x000e90 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBDeviceInit 0x000850 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBDeviceTasks 0x0008bc program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBEnableEndpoint 0x00109c program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c -USBPrepareForNextSetupTrf 0x000b6a program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBStallEndpoint 0x0010d6 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBStallHandler 0x0009ec program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBStdFeatureReqHandler 0x000c5a program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBStdGetDscHandler 0x000d1c program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBStdGetStatusHandler 0x000d9e program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBStdSetCfgHandler 0x000fee program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBSuspend 0x000a12 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBTransferOnePacket 0x001100 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBWakeFromSuspend 0x000a24 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USB_CD_Ptr 0x002610 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c - USB_SD_Ptr 0x002612 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c -USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - UserInit 0x0014da program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - WriteEEPROM 0x002790 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c + USBCBCheckOtherReq 0x001b18 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBErrorHandler 0x001b16 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBInitEP 0x001b1e program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBSendResume 0x001b56 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBStdSetDscHandler 0x001b1c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBSuspend 0x001b10 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCBWakeFromSuspend 0x001b12 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCB_SOF_Handler 0x001b14 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBCheckHIDRequest 0x002494 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c + USBCheckStdRequest 0x000bb2 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBClearInterruptFlag 0x001168 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBConfigureEndpoint 0x001024 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBCtrlEPService 0x000a3c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBCtrlEPServiceComplete 0x000e1c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBCtrlTrfInHandler 0x000b10 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBCtrlTrfOutHandler 0x000af4 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBCtrlTrfRxService 0x000f36 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBCtrlTrfSetupHandler 0x000ad0 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBCtrlTrfTxService 0x000e90 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBDeviceInit 0x000850 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBDeviceTasks 0x0008bc program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBEnableEndpoint 0x00109c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c +USBPrepareForNextSetupTrf 0x000b6a program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBStallEndpoint 0x0010d6 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBStallHandler 0x0009ec program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBStdFeatureReqHandler 0x000c5a program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBStdGetDscHandler 0x000d1c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBStdGetStatusHandler 0x000d9e program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBStdSetCfgHandler 0x000fee program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBSuspend 0x000a12 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBTransferOnePacket 0x001100 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBWakeFromSuspend 0x000a24 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USB_CD_Ptr 0x002610 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + USB_SD_Ptr 0x002612 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c +USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + UserInit 0x0014da program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + WriteEEPROM 0x002790 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c WriteTimer1 0x00287c program extern C:\MCC18\src\pmc_common\Timers\t1write.c - YourHighPriorityISRCode 0x0013aa program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - YourLowPriorityISRCode 0x00147c program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + YourHighPriorityISRCode 0x0013aa program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + YourLowPriorityISRCode 0x00147c program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c _2jContinue 0x002744 program static C:\MCC18\src\traditional\stdclib\memset.asm _3jEnd 0x00274e program static C:\MCC18\src\traditional\stdclib\memset.asm _D10KTCYXCODE_0010 0x00292a program static C:\MCC18\src\traditional\delays\d10ktcyx.asm @@ -276,65 +276,65 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas ___switchexit_lbl00049 0x0019a6 program static ___switchexit_lbl00101 0x001bfc program static __init 0x0029a4 program extern C:\MCC18\src\traditional\stdclib\__init.c - __pa_0 0x002436 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - __pa_0 0x0028dc program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\error.c - __pa_0 0x001192 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_0 0x001c5a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __pa_0 0x0027ec program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c - __pa_1 0x002448 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - __pa_1 0x0011a0 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_1 0x001c6e program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __pa_10 0x0011f0 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_11 0x001200 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_12 0x001214 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_13 0x001226 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_14 0x001232 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_15 0x00124e program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_16 0x001254 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_17 0x00125e program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_18 0x00126a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_19 0x001276 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_2 0x001c80 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __pa_2 0x0011a6 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_2 0x00245a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - __pa_20 0x001286 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_21 0x001296 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_22 0x0012a6 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_23 0x0012b4 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_24 0x0012c2 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_25 0x0012d0 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_26 0x0012de program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_27 0x0012ec program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_28 0x001304 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_29 0x001320 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_3 0x00246a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - __pa_3 0x0011b0 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_3 0x001c90 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __pa_30 0x00132a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_31 0x001332 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_32 0x001344 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_33 0x00134e program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_34 0x001358 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_35 0x001362 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_36 0x001372 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_37 0x001380 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_38 0x00138a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_39 0x001394 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_4 0x001ca0 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __pa_4 0x0011b8 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_4 0x00247a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - __pa_40 0x00139c program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_41 0x0013a4 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_5 0x00248a program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - __pa_5 0x0011c2 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_6 0x0011ca program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_7 0x0011d2 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_8 0x0011d8 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __pa_9 0x0011e6 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - __string_0 0x002855 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __string_1 0x002849 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __string_2 0x002847 program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - __string_3 0x00283e program static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __pa_0 0x002436 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + __pa_0 0x0028dc program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\error.c + __pa_0 0x001192 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_0 0x001c5a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __pa_0 0x0027ec program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c + __pa_1 0x002448 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + __pa_1 0x0011a0 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_1 0x001c6e program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __pa_10 0x0011f0 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_11 0x001200 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_12 0x001214 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_13 0x001226 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_14 0x001232 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_15 0x00124e program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_16 0x001254 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_17 0x00125e program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_18 0x00126a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_19 0x001276 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_2 0x001c80 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __pa_2 0x0011a6 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_2 0x00245a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + __pa_20 0x001286 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_21 0x001296 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_22 0x0012a6 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_23 0x0012b4 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_24 0x0012c2 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_25 0x0012d0 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_26 0x0012de program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_27 0x0012ec program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_28 0x001304 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_29 0x001320 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_3 0x00246a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + __pa_3 0x0011b0 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_3 0x001c90 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __pa_30 0x00132a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_31 0x001332 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_32 0x001344 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_33 0x00134e program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_34 0x001358 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_35 0x001362 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_36 0x001372 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_37 0x001380 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_38 0x00138a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_39 0x001394 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_4 0x001ca0 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __pa_4 0x0011b8 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_4 0x00247a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + __pa_40 0x00139c program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_41 0x0013a4 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_5 0x00248a program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + __pa_5 0x0011c2 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_6 0x0011ca program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_7 0x0011d2 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_8 0x0011d8 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __pa_9 0x0011e6 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __string_0 0x002855 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __string_1 0x002849 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __string_2 0x002847 program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __string_3 0x00283e program static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c __tmplbl_0 0x001562 program static __tmplbl_1 0x00155c program static __tmplbl_10 0x001bcc program static @@ -352,24 +352,24 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas __zero_memory 0x00298c program extern C:\MCC18\src\traditional\proc\p18F4550.asm _do_cinit 0x002618 program extern C:\MCC18\src\traditional\startup\c018i.c _entry 0x000000 program extern C:\MCC18\src\traditional\startup\c018i.c - _reset 0x000800 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + _reset 0x000800 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c _startup 0x002948 program extern C:\MCC18\src\traditional\startup\c018i.c clear_loop 0x002992 program static C:\MCC18\src\traditional\proc\p18F4550.asm - configDescriptor1 0x002574 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + configDescriptor1 0x002574 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c copy_loop 0x00268a program static copy_one_byte 0x002690 program static - device_dsc 0x002562 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + device_dsc 0x002562 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c done 0x0026b4 program static done_copying 0x00269e program static - error 0x0028b4 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\error.c - getBatteryState 0x002388 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - getCellVoltage 0x00227a program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - getCurrent 0x0022ee program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - getPowerState 0x002374 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - hid_rpt01 0x0025f3 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c - initMonitor 0x00225e program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - interruptBuzzer 0x001a64 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - interruptMonitor 0x0021b4 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + error 0x0028b4 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\error.c + getBatteryState 0x002388 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + getCellVoltage 0x00227a program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + getCurrent 0x0022ee program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + getPowerState 0x002374 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + hid_rpt01 0x0025f3 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + initMonitor 0x00225e program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + interruptBuzzer 0x001a64 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + interruptMonitor 0x0021b4 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c jANotInf 0x001e7e program static C:\MCC18\src\traditional\math\addFP.asm jANotInf 0x001d98 program static C:\MCC18\src\traditional\math\mulFP.asm jANotInf 0x001cf2 program static C:\MCC18\src\traditional\math\divFP.asm @@ -431,11 +431,11 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas jZero 0x002002 program static C:\MCC18\src\traditional\math\castFP16.asm jZero1and2 0x0020c8 program static C:\MCC18\src\traditional\math\packFP.asm loop 0x002958 program static - main 0x0014c4 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + main 0x0014c4 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c memset 0x002724 program extern C:\MCC18\src\traditional\stdclib\memset.asm - sd000 0x00259d program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c - sd001 0x0025a1 program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c - sd002 0x0025cd program extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + sd000 0x00259d program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + sd001 0x0025a1 program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c + sd002 0x0025cd program extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_descriptors.c strcatpgm2ram 0x002758 program extern C:\MCC18\src\traditional\stdclib\scatp2r.asm test 0x002632 program static ADCON0 0x000fc2 data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -449,9 +449,9 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas ADRESL 0x000fc3 data extern C:\MCC18\src\traditional\proc\p18F4550.asm BAUDCON 0x000fb8 data extern C:\MCC18\src\traditional\proc\p18F4550.asm BAUDCONbits 0x000fb8 data extern C:\MCC18\src\traditional\proc\p18F4550.asm - BDT 0x000400 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + BDT 0x000400 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c BSR 0x000fe0 data extern C:\MCC18\src\traditional\proc\p18F4550.asm - BothEP0OutUOWNsSet 0x000081 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + BothEP0OutUOWNsSet 0x000081 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c CCP1AS 0x000fb6 data extern C:\MCC18\src\traditional\proc\p18F4550.asm CCP1ASbits 0x000fb6 data extern C:\MCC18\src\traditional\proc\p18F4550.asm CCP1CON 0x000fbd data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -470,7 +470,7 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas CMCONbits 0x000fb4 data extern C:\MCC18\src\traditional\proc\p18F4550.asm CVRCON 0x000fb5 data extern C:\MCC18\src\traditional\proc\p18F4550.asm CVRCONbits 0x000fb5 data extern C:\MCC18\src\traditional\proc\p18F4550.asm - CtrlTrfData 0x000428 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + CtrlTrfData 0x000428 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c DDRA 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4550.asm DDRAbits 0x000f92 data extern C:\MCC18\src\traditional\proc\p18F4550.asm DDRB 0x000f93 data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -503,7 +503,7 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas FSR2 0x000fd9 data extern C:\MCC18\src\traditional\proc\p18F4550.asm FSR2H 0x000fda data extern C:\MCC18\src\traditional\proc\p18F4550.asm FSR2L 0x000fd9 data extern C:\MCC18\src\traditional\proc\p18F4550.asm - GIE_Status 0x0000dc data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c + GIE_Status 0x0000dc data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\eeprom.c HLVDCON 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4550.asm HLVDCONbits 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4550.asm INDF0 0x000fef data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -531,7 +531,7 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas LATEbits 0x000f8d data extern C:\MCC18\src\traditional\proc\p18F4550.asm LVDCON 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4550.asm LVDCONbits 0x000fd2 data extern C:\MCC18\src\traditional\proc\p18F4550.asm - Measure 0x0000a7 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + Measure 0x0000a7 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c OSCCON 0x000fd3 data extern C:\MCC18\src\traditional\proc\p18F4550.asm OSCCONbits 0x000fd3 data extern C:\MCC18\src\traditional\proc\p18F4550.asm OSCTUNE 0x000f9b data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -579,8 +579,8 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas RCREG 0x000fae data extern C:\MCC18\src\traditional\proc\p18F4550.asm RCSTA 0x000fab data extern C:\MCC18\src\traditional\proc\p18F4550.asm RCSTAbits 0x000fab data extern C:\MCC18\src\traditional\proc\p18F4550.asm - ReceivedDataBuffer 0x000500 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - RemoteWakeup 0x00007f data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + ReceivedDataBuffer 0x000500 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + RemoteWakeup 0x00007f data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c SIGN 0x000000 data extern C:\MCC18\src\traditional\math\cmath18.asm SPBRG 0x000faf data extern C:\MCC18\src\traditional\proc\p18F4550.asm SPBRGH 0x000fb0 data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -603,7 +603,7 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas STATUSbits 0x000fd8 data extern C:\MCC18\src\traditional\proc\p18F4550.asm STKPTR 0x000ffc data extern C:\MCC18\src\traditional\proc\p18F4550.asm STKPTRbits 0x000ffc data extern C:\MCC18\src\traditional\proc\p18F4550.asm - SetupPkt 0x000420 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + SetupPkt 0x000420 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c T0CON 0x000fd5 data extern C:\MCC18\src\traditional\proc\p18F4550.asm T0CONbits 0x000fd5 data extern C:\MCC18\src\traditional\proc\p18F4550.asm T1CON 0x000fcd data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -641,7 +641,7 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas TXREG 0x000fad data extern C:\MCC18\src\traditional\proc\p18F4550.asm TXSTA 0x000fac data extern C:\MCC18\src\traditional\proc\p18F4550.asm TXSTAbits 0x000fac data extern C:\MCC18\src\traditional\proc\p18F4550.asm - ToSendDataBuffer 0x000540 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + ToSendDataBuffer 0x000540 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c UADDR 0x000f6e data extern C:\MCC18\src\traditional\proc\p18F4550.asm UADDRbits 0x000f6e data extern C:\MCC18\src\traditional\proc\p18F4550.asm UCFG 0x000f6f data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -693,17 +693,17 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas UIEbits 0x000f69 data extern C:\MCC18\src\traditional\proc\p18F4550.asm UIR 0x000f68 data extern C:\MCC18\src\traditional\proc\p18F4550.asm UIRbits 0x000f68 data extern C:\MCC18\src\traditional\proc\p18F4550.asm - UPClientSeq 0x0000c2 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBActiveConfiguration 0x000061 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBAlternateInterface 0x000062 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBDeviceState 0x000060 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBInData 0x000084 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBInHandle 0x0000bf data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - USBInMaxPacketSize 0x000082 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - USBOutHandle 0x0000bd data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + UPClientSeq 0x0000c2 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBActiveConfiguration 0x000061 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBAlternateInterface 0x000062 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBDeviceState 0x000060 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBInData 0x000084 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBInHandle 0x0000bf data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + USBInMaxPacketSize 0x000082 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USBOutHandle 0x0000bd data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c USTAT 0x000f6c data extern C:\MCC18\src\traditional\proc\p18F4550.asm USTATbits 0x000f6c data extern C:\MCC18\src\traditional\proc\p18F4550.asm - USTATcopy 0x000080 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + USTATcopy 0x000080 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c WDTCON 0x000fd1 data extern C:\MCC18\src\traditional\proc\p18F4550.asm WDTCONbits 0x000fd1 data extern C:\MCC18\src\traditional\proc\p18F4550.asm WREG 0x000fe8 data extern C:\MCC18\src\traditional\proc\p18F4550.asm @@ -732,41 +732,41 @@ USER_USB_CALLBACK_EVENT_HANDLER 0x001b72 program extern Z:\home\nicolas __TEMPB1 0x000012 data extern C:\MCC18\src\traditional\math\temparg.asm __TEMPB2 0x000011 data extern C:\MCC18\src\traditional\math\temparg.asm __TEMPB3 0x000010 data extern C:\MCC18\src\traditional\math\temparg.asm - __tmp_0 0x000014 data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - __tmp_0 0x000014 data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + __tmp_0 0x000014 data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + __tmp_0 0x000014 data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c __tmp_0 0x000014 data static C:\MCC18\src\pmc_common\ADC\adcselchconv.c - __tmp_0 0x000014 data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + __tmp_0 0x000014 data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c __tmp_0 0x000014 data static C:\MCC18\src\pmc_common\ADC\adcopen.c __tmp_0 0x000014 data static C:\MCC18\src\pmc_common\ADC\adcread.c - active_protocol 0x0000db data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c - blinkStatusValid 0x0000c1 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - buzzer_count 0x0000c7 data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - buzzer_count 0x0000c9 data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - channel 0x0000bc data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c - controlTransferState 0x000070 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + active_protocol 0x0000db data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c + blinkStatusValid 0x0000c1 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + buzzer_count 0x0000c7 data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + buzzer_count 0x0000c9 data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + channel 0x0000bc data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\monitor.c + controlTransferState 0x000070 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c curr_byte 0x0000d0 data static C:\MCC18\src\traditional\startup\c018i.c curr_entry 0x0000d2 data static C:\MCC18\src\traditional\startup\c018i.c data_ptr 0x0000d4 data static C:\MCC18\src\traditional\startup\c018i.c - delay_count 0x0000d8 data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - err 0x000086 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\error.c - errno 0x0000a6 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\error.c - hid_report_in 0x000433 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - hid_report_out 0x000430 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - idle_rate 0x0000da data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c - inPipes 0x000071 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - led_count 0x0000cb data static Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - ms 0x0000c3 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\main.c - outPipes 0x000076 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - pBDTEntryEP0OutCurrent 0x000063 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - pBDTEntryEP0OutNext 0x000065 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - pBDTEntryIn 0x00006b data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - pBDTEntryOut 0x000067 data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c - pDst 0x00007d data extern Z:\home\nicolasd\code\krobot\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + delay_count 0x0000d8 data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + err 0x000086 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\error.c + errno 0x0000a6 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\error.c + hid_report_in 0x000433 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + hid_report_out 0x000430 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + idle_rate 0x0000da data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_function_hid.c + inPipes 0x000071 data extern C:\krobot\USB_Module\Battery_Monitoring\Firmware\usb_device.c + led_count 0x0000cb data static C:\krobot\USB_Module\Battery_Monitoring\Firmware\main.c + ms 0x0000c3 data exter... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-03-09 00:10:10
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 43e3061d573cb3f9d03581fc101dc4da46a6941a (commit) from 40d7e9b7b1788708da82a356bd671dd6dbccf68f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 43e3061d573cb3f9d03581fc101dc4da46a6941a Author: Jérémie Dimino <je...@di...> Date: Tue Mar 9 01:09:31 2010 +0100 remove the ax12.reset command from safe commands ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/script.ml b/PC_Mainboard/clients/script.ml index a4b6829..d38ea46 100644 --- a/PC_Mainboard/clients/script.ml +++ b/PC_Mainboard/clients/script.ml @@ -313,9 +313,6 @@ let () = register ~path:["ax12"] "action" (f1 (int ~default:254 "id")) (fun logger krobot id -> Krobot_unsafe.AX12.action krobot id); - register ~path:["ax12"] "reset" (f1 (int ~default:254 "id")) - (fun logger krobot id -> - Krobot_unsafe.AX12.reset krobot id); (* +---------------------------------------------------------------+ | Grip | hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-08 23:41:24
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 40d7e9b7b1788708da82a356bd671dd6dbccf68f (commit) from 973aff6d5670f48ceba7442182bcfbdd46e1cf33 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 40d7e9b7b1788708da82a356bd671dd6dbccf68f Author: Jérémie Dimino <je...@di...> Date: Tue Mar 9 00:40:40 2010 +0100 add a command to write motor configurations ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index 9274bec..4fa41ad 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -562,6 +562,16 @@ let interfaces = [ ~repl:[Arg("right", typ "motor-config"); Arg("left", typ "motor-config")] (); + command + ~name:"write-config" + ~code:PcInterface.cmd_traj + ~args:[Cst(uint8, PcInterface.traj_config); + Arg("motor", typ "motor"); + Arg("kp", uint16); + Arg("ki", uint16); + Arg("kd", uint16); + Arg("li", uint16)] + (); ]); Module("servo", [ hooks/post-receive -- krobot |