+
    :i;                   >   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHtHtHtHtHtHtHt ^ RIH t  ^ RIH!t! ^ R	IH"t" ^ R
IH#t#H$t$ ^ RI%H&t& ^ RI'H(t( ^RI)5 ^RI*H+t+ ^RI,H-t- ^RI.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtEHFtFHGtGHHtHHItI ^RIJHKtKHLtLHMtMHNtNHOtOHPtPHQtQHRtRHStSHTtTHUtUHVtVHWtWHXtXHYtYHZtZH[t[H\t\H]t]H^t^H_t_H`t`HataHbtbHctcHdtdHeteHftfHgtgHhthHitiHjtjHktkHltlHmtmHntnHotoHptpHqtqHrtrHstsHtttHutuHvtvHwtwHxtxHytyHztzH{t{H|t|H}t}H~t~HtHtHtHtHtHtHtHtHt ]	EP                  ! ]4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      tR# )    )annotationsN)	MiniRacer)default_backend)Cipher
algorithmsmodes)Image	ImageDrawImageOps	ImageFontImageEnhancePngImagePluginImageFilter)Any)sleep)BytesIO)OptionalTuple)
cmp_to_key)Timer)*)DreameVacuumProtocol)DeviceUpdateFailedException)PIIDDIIDDreameVacuumPropertyDreameVacuumActionDreameVacuumActionMappingObstacleTypePathTypePointObstacleMapDataPartialMapDataMapFrameTypeMapPixelTypePathAreaWallSegmentMapImageDimensionsMapRendererLayerMapRendererColorSchemeMapRendererConfigMAP_COLOR_SCHEME_LISTMAP_ICON_SET_LISTALineCLinePathsAngle)=MAP_PARAMETER_NAMEMAP_PARAMETER_VALUEMAP_PARAMETER_TIMEMAP_PARAMETER_CODEMAP_PARAMETER_OUTMAP_PARAMETER_MAPMAP_PARAMETER_ANGLEMAP_PARAMETER_MAPSTRMAP_PARAMETER_CURR_IDMAP_PARAMETER_VACUUMMAP_PARAMETER_IDMAP_PARAMETER_INFOMAP_PARAMETER_FIRSTMAP_PARAMETER_OBJNAMEMAP_PARAMETER_RESULTMAP_PARAMETER_URLMAP_PARAMETER_EXPIRES_TIMEMAP_PARAMETER_THBMAP_PARAMETER_OBJECT_NAMEMAP_PARAMETER_MD5MAP_REQUEST_PARAMETER_MAP_IDMAP_REQUEST_PARAMETER_FRAME_ID MAP_REQUEST_PARAMETER_FRAME_TYPEMAP_REQUEST_PARAMETER_REQ_TYPE MAP_REQUEST_PARAMETER_FORCE_TYPEMAP_REQUEST_PARAMETER_TYPEMAP_REQUEST_PARAMETER_INDEXMAP_REQUEST_PARAMETER_ROOM_IDMAP_DATA_PARAMETER_CLASSMAP_DATA_PARAMETER_SIZEMAP_DATA_PARAMETER_XMAP_DATA_PARAMETER_YMAP_DATA_PARAMETER_PIXEL_SIZEMAP_DATA_PARAMETER_LAYERSMAP_DATA_PARAMETER_ENTITIESMAP_DATA_PARAMETER_META_DATAMAP_DATA_PARAMETER_VERSIONMAP_DATA_PARAMETER_ROTATIONMAP_DATA_PARAMETER_TYPEMAP_DATA_PARAMETER_POINTSMAP_DATA_PARAMETER_PIXELSMAP_DATA_PARAMETER_SEGMENT_IDMAP_DATA_PARAMETER_ACTIVEMAP_DATA_PARAMETER_NAMEMAP_DATA_PARAMETER_DIMENSIONSMAP_DATA_PARAMETER_MINMAP_DATA_PARAMETER_MAXMAP_DATA_PARAMETER_MIDMAP_DATA_PARAMETER_AVGMAP_DATA_PARAMETER_PIXEL_COUNT$MAP_DATA_PARAMETER_COMPRESSED_PIXELS!MAP_DATA_PARAMETER_ROBOT_POSITION#MAP_DATA_PARAMETER_CHARGER_POSITIONMAP_DATA_PARAMETER_NO_MOP_AREAMAP_DATA_PARAMETER_NO_GO_AREAMAP_DATA_PARAMETER_ACTIVE_ZONEMAP_DATA_PARAMETER_VIRTUAL_WALLMAP_DATA_PARAMETER_PATHMAP_DATA_PARAMETER_FLOORMAP_DATA_PARAMETER_WALLMAP_DATA_PARAMETER_SEGMENTc                     ] tR t^{tR R ltR R ltR R ltR_R R	 lltR_R
 R lltR R lt	R R lt
R R ltR_R R lltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR`R" R# lltR`R$ R% lltRaR& R' lltRbR( R) lltR* R+ ltRbR, R- lltR. R/ ltR0 R1 ltR2 R3 ltRcR4 R5 lltR6 R7 ltR8 R9 ltR_R: R; llt R< R= lt!R> R? lt"R@ RA lt#RB RC lt$RD RE lt%RF RG lt&RH RI lt'RJ RK lt(RL RM lt)RN RO lt*RP RQ lt+RR RS lt,RT RU lt-].RV RW l4       t/].RX RY l4       t0].RZ R[ l4       t1].R\ R] l4       t2R^t3R# )dDreameMapVacuumMapManagerc                    V ^8  d   QhRRRR/# )   	_protocolr   returnNone )formats   "5/config/custom_components/dreame_vacuum/dreame/map.py__annotate__&DreameMapVacuumMapManager.__annotate__|   s     4 4"6 44 4    c                	4   R V n         R V n        R V n        R V n        R V n        R V n        RV n        ^
V n        RV n        RV n	        RV n
        RV n        RV n        RV n        V P                  4        Wn        \!        V 4      V n        \%        4       V n        R # NFT)_map_list_object_name_map_list_md5_recovery_map_list_object_name_update_callback_error_callback_update_timer_update_running_update_interval_device_running_device_docked
_available_ready
_connected
_vslam_map
_init_datarv   DreameMapVacuumMapEditoreditorDreameVacuumMapOptimizer	optimizer)selfrv   s   &&r{   __init__"DreameMapVacuumMapManager.__init__|   s    *.""&37+ $#$(%*')%*$) %! $ %".t413r~   c                   V ^8  d   QhRR/# ru   rw   rx   ry   )rz   s   "r{   r|   r}      s     ! !D !r~   c                	   R V n         R V n        R V n        R V n        / V n        / V n        . V n        / V n        RV n        R V n	        R V n
        / V n        R V n        R V n        / V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n        R V n        ^ V n        R V n        R V n        R # )NF)	_map_data_current_frame_id_current_map_id_current_timestamp_ms
_file_urls_saved_map_data	_map_list_recovery_map_data_need_map_request_need_map_list_request_need_recovery_map_list_request_map_data_queue_updated_frame_id_selected_map_id_request_queue_latest_map_data_time_latest_object_name_time_latest_map_timestamp_ms_latest_map_id_last_p_request_map_id_last_p_request_frame_id_last_p_request_time_last_robot_time_map_request_time_map_request_count_new_map_request_time_aes_ivr   s   &r{   r   $DreameMapVacuumMapManager._init_data   s    "&&*$(*."*,35$&68',,0#59,35&*%)/1*."-1%-1%#'+/#-1%)-!%)&*'(*." r~   c                   V ^8  d   QhRR/# ru   rw   boolry   )rz   s   "r{   r|   r}      s     j? j? j?r~   c                	   V P                   e4   V P                   p\        \        P                  ! VR,          4      4      pMb^ pV P                  e   V P                  pMEV P
                  e   V P
                  pM*V P                  e   \        V P                  R,          4      pV P                  e   V P                  V8  d   W n        V P                  e   V P                  V8  d   W n        V P                  P                  P                  \        \        P                  4      ^V P                  4      pV P                  P                  P                  '       g,   V P                  '       d   RV n        V P!                  4        R# V P                  '       g   RV n        V P!                  4        Vf   \"        P%                  R4       . pV P                  P                  P                  \        \        P&                  4      ^V P                  4      pVf   \"        P%                  R4       . p^p\)        V4      '       d!   V^ ,          \*        ,          ^,           V n        \)        V4      '       d!   V^ ,          \*        ,          ^,           V n        V F  p\,        P.                  ! V\0        ,          4      pV^ ,          pR p	VP3                  \*        4      '       d   V\*        ,          R,          p	V P5                  W4      p
V
'       g   Ky  V
P6                  \8        P:                  P<                  8X  d   V P?                  V
4       K  V PA                  V
4       K  	  V PB                  '       d   V PB                  ^,           pV PE                  V PF                  V4      p
V
'       d   V P?                  V
4       M\)        V4      ^ 8X  d   V PI                  4        V PK                  4       pV^8  d   V PM                  4        MKV^8  d   V PO                  4        M3V^ 8  d-   \)        V4      ^ 8  d   V PQ                  V PF                  V4       \)        V4      ^8X  Ed   \,        P.                  ! V^ ,          \0        ,          4      pV'       Ed`   \"        PS                  RV^ ,          4       R p	V^ ,          P3                  \*        4      '       d   V^ ,          \*        ,          R,          p	V PU                  V^ ,          V	4      w  rV'       d   V P5                  VPW                  4       W4      p
V
'       d   V PX                  e*   V
P6                  \8        P:                  P<                  8X  d   V P?                  V
4      # V PA                  V
4       V P[                  4       pV'       d   V P?                  V4       M5V PI                  4        V PK                  4       ^8  d   V PM                  4        \)        V4      ;'       g    \)        V4      # )N     @@  FTz"Getting map_data from cloud failedz%Getting object_name from cloud failedzNew object name received: %s).r   intmathfloorr   r   r   r   rv   cloudget_device_propertyr   r   MAP_DATA	connectedr   _map_data_changed_LOGGERwarnOBJECT_NAMElenr7   jsonloadsr6   get_decode_map_partial
frame_typer%   Ivalue_add_map_data_queue_partial_mapr   _unqueue_partial_mapr   _delete_invalid_partial_maps_partial_map_queue_sizerequest_new_map_request_missing_p_map_request_next_p_mapinfo_get_object_file_datadecoder   _unqueue_next_partial_map)r   
start_timerequest_start_timemap_data_resultobject_name_resultnext_frame_iddatar   pmap	timestamppartial_maptmpLenobject_nameresponsekeynext_partial_maps   &               r{   _request_map_from_cloud1DreameMapVacuumMapManager._request_map_from_cloud   s   %%133J!$TZZ
V0C%D!E!",,8%)%B%B"''3%)%;%;"&&2%()>)>)E%F"%%-1K1KN`1`);&((0D4Q4QTf4f,>)....BB%../T5O5O
 ~~##---"'&&("DO""$"LL=> O!^^11EE%112At7T7T
 %LL@A!#)8);<N)ORS)SD&!"",>q,ABT,UXY,YD)#DJJt$789E8DIxx*++ !34t;	224CK{))\^^-A-AA&&{3++K8 $ !!! 22Q6M//0C0C]S{+%&!+113557A:((*aZ//1aZC$81$<,,T-@-@-P!"a'**%7%:;N%OPK{;[^L 	%a(,,-?@@ 21 56H ID PI $ : :;q>9 U"&":":8??;Li"]K">>1[5K5K|~~OcOc5c#'#5#5k#BB//<+/+I+I+K(+ ../?@ ==?#;;=A $ 4 4 6?#>>s+='>>r~   Nc                    V ^8  d   QhRRRR/# )ru   
parametersdict[str, Any]rw   dict[str, Any] | Nonery   )rz   s   "r{   r|   r}     s      ~ AV r~   c           
     	   Vf!   \         \        P                  P                  /pR\	        \
        P                  4      \        \        \        P                  ! VR	R7      4      P                  RR4      /.p \        P                  RV4       \        \        P                   ,          pV P"                  P%                  VR,          VR,          V^ 4      #   \&         d"   p\        P)                  RT4        R p?R # R p?ii ; i)
Npiid
separators  zRequest map from device %ssiidaiidzSend request map failed: %s,:)rK   r%   r   namer   r   
FRAME_INFOr6   strr   dumpsreplacer   r   r   r   REQUEST_MAPrv   action	Exceptionwarning)r   r   payloadmappingexs   &&   r{   _request_map&DreameMapVacuumMapManager._request_map  s    0,..2E2EJ 1<<=#SJ:)V%W%_%_`ceg%h
	?LL5w?/0B0N0NOG>>(('&/7TUVV 	?OO92>>	?s   7AC D C;;D c                    V ^8  d   QhRRRR/# )ru   r   r   rw   r   ry   )rz   s   "r{   r|   r}   0  s     8 8 8 8r~   c                	
   V P                   '       g   V P                  4       # \        ^\        \        P
                  P                  \        ^/pV'       d	   W\        &   V P                  V4      pV'       Ed   V\        ,          ^ 8X  Ed   V\        ,          p\        P                  RV4       RpRpRpV EF8  pV\        ,          p	V	R8w  g   K  VR,          p
V
\        \         P"                  4      8X  d   RpT	pKG  V
\        \         P$                  4      8X  d   RpT	pKk  V
\        \         P&                  4      8X  d1   \)        V	4      V n        Vf   V P*                  V n        ^V n        K  K  V
\        \         P0                  4      8X  g   K  V'       d   K  V	P3                  R4      pV^ ,          R8X  d   V^,          pEK  V^,          p\5        V4      ^8X  g   EK*  V RV^,           2pEK;  	  V'       d0   \)        V P*                  R	,          4      ^,           V n        RV n        V'       d   V P9                  W`P*                  4       V'       d   V P;                  WpP*                  4       R# V P=                  4        R# )
   zResponse from device %sFNr   r   Tr   0r   )_request_i_map_availabler   rL   rK   r%   r   r   rM   r7   r  r8   r9   r   r   r6   r   r   r   r   
ROBOT_TIMEr   r   r   r   OLD_MAP_DATAsplitr   r   _add_map_data_file_add_raw_map_datar   )r   r   r   resultouthas_mapr   raw_map_datapropr   r   valuess   &&          r{   _request_i_map(DreameMapVacuumMapManager._request_i_map0  s   ,,,'')) +A,lnn.A.A,a

 -7)*"":.6f/0A5*+CLL2C8GKL01B;<Dt$8$D$DEE"&&+&:&C&C!DD"&',&:&E&E!FF03E
-%-595J5JD267D3 . &:&G&G!HH&w%*[[%5F%ayC//5ay.4Qi#&v;!#35@M6!9+2NK/ 2 03D4I4ID4P0QTU0U-)-&''5J5JK&&|5J5JK$$&r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}   j  s     @ @ @r~   c                	P   V P                   f   R # V P                  4       ^ 8X  d   R # V P                  ^,           pV P                  pV P                  eP   V P
                  V8X  d?   V P                  V8X  d.   \        P                  ! 4       V P                  ,
          ^8  d   R # W n        Wn        \        P                  ! 4       V n        V P                  \        V\        V\        \        P                  P                  /4      p\        T;'       d    V\         ,          ^ 8H  4      # N)r   r   r   r   r   r   r   timer  rI   rJ   rK   r%   Pr   r   r8   )r   frame_idmap_idr  s   &   r{   r   0DreameMapVacuumMapManager._request_missing_p_mapj  s    >>!'')Q.))A-%% %%1++v5--9t888A=&,#(0%$(IIK!"",f.0,..2E2E
 F>>v&89Q>??r~   c               $    V ^8  d   QhRRRRRR/# )ru   r!  r   r   rw   r   ry   )rz   s   "r{   r|   r}     s!     + +# + + +r~   c           
     	   V R V 2pW0P                   9   d   V P                   V,          '       d   R# RV P                   V&   V P                  \        V\        ^\        V\
        \        P                  P                  /4      pV'       EdG   V\        ,          ^ 8X  Ed4   V P                   V RpRpRpV\        ,           F  pV\        ,          p	V	R8w  g   K  VR,          p
V
\        \        P                  4      8X  d   T	pKD  V
\        \        P                  4      8X  d   T	pKf  V
\        \        P                   4      8X  g   K  \#        V	4      pK  	  V'       d   V P%                  WW4       V'       d(   \&        P)                  RW4       V P+                  Wg4       V'       g-   V P,                  '       d   V'       g   V P/                  4        R# R# R# )r   NTr   r   zLost P map received: %s:%sF)r   r  rI   rL   rJ   rK   r%   r  r   r8   r9   r6   r   r   r   r   r  r   r  r   r   r  r   r   )r   r!  r   r   r  r   r  r   r  r   r   s   &&&        r{   r   -DreameMapVacuumMapManager._request_next_p_map  sw   ($%%%$*=*=c*B*B#'C "",f..0,..2E2E	
 6f/0A5##C(KLI01101B;<Dt$8$D$DEE&+&:&C&C!DD',&:&E&E!FF$'J	 2 ''?96L&&|?DOOOK$$&r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     $ $ $r~   c                	    V P                  \        R /4      pV'       d'   V\        ,          ^ 8X  d   V P                  4        R# R# R# )TN)r  rK   r8   request_map_listr   r  s   & r{   _request_t_map(DreameMapVacuumMapManager._request_t_map  s;    ""$Dc#JKf/0A5!!# 66r~   c                    V ^8  d   QhRRRR/# )ru   map_request_timer   rw   r   ry   )rz   s   "r{   r|   r}     s     . .S .D .r~   c                	h    V P                   '       d   V P                  V4      # V P                  4       # r  )r  r  r   )r   r.  s   &&r{   _request_current_map.DreameMapVacuumMapManager._request_current_map  s/    (((&&'788++--r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     $ $4 $r~   c                	    V P                   '       d<   V P                  '       d(   \        P                  R 4       V P                  4        R# R# R# )zUpdate callbackN)r   r   r   debugr   s   &r{   r   +DreameMapVacuumMapManager._map_data_changed  s6    ;;;4000MM+,!!# 1;r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     T Td Tr~   c                	:   V P                   e"   V P                   P                  4        R V n         \        P                  ! 4       pV P                  4        V P	                  \        V P                  \        P                  ! 4       V,
          ,
          ^4      4       R # r  )r   cancelr  updateschedule_updatemaxr   )r   starts   & r{   _update_task&DreameMapVacuumMapManager._update_task  sh    )%%'!%D		S!6!6$))+:M!NPQRSr~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     L Ld Lr~   c                	   VP                   V P                  8w  d   R # ^ pV P                  e/   V P                  V P                  8X  d   V P                  ^,           pVP                   V P                  9  d   / V P                  VP                   &   VP
                  V8  d   R # WP                  VP                   ,          VP
                  &   R # r  )r!  r   r   r   r   r   )r   map_datar   s   && r{   r   ,DreameMapVacuumMapManager._queue_partial_map  s    ??d111+0D0DH[H[0[ 22Q6M??$"6"6646D  1},CKX__-h.?.?@r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     A Ad Ar~   c                	n   V P                   f   R # V P                  f   R # V P                  p\        P                  ! V P                  4      pVP                  4        F$  w  r4W0P                   8w  g   K  V P                  V K&  	  V P                   V P                  9  g$   V P                  V P                   ,          '       g   R # \        P                  ! V P                  V P                   ,          4      pVP                  4        F+  w  r4W18:  g   K  V P                  V P                   ,          V K-  	  R # r  )r   r   copydeepcopyr   items)r   r   map_data_queuekvs   &    r{   r   6DreameMapVacuumMapManager._delete_invalid_partial_maps  s    &!!)))t';';<"((*DA'''((+ + d&:&::$BVBVW[WjWjBkBkt';';D<O<O'PQ"((*DA}(()<)<=a@ +r~   c                   V ^8  d   QhRR/# ru   rw   MapData | Nonery   )rz   s   "r{   r|   r}     s      > r~   c                	   V P                   e*   V P                  e   V P                  V P                   8w  d   R # V P                  ^,           pV P                   V P                  9  gE   V P                  V P                   ,          '       d"   WP                  V P                   ,          9  d   R # V P                  V P                   ,          V,          pV'       d!   V P                  V P                   ,          V V# R # r  )r   r   r   r   )r   r   rA  s   &  r{   r   3DreameMapVacuumMapManager._unqueue_next_partial_map  s    '%%-##t':'::))A-t';';;''(;(;<<33D4G4GHH''(;(;<XF$$T%8%89(CO r~   c               $    V ^8  d   QhRRRRRR/# )ru   r!  r   r   rw   rN  ry   )rz   s   "r{   r|   r}   	  s!      3 # . r~   c                	    WP                   9   de   V P                   V,          '       dJ   W P                   V,          9   d1   V P                   V,          V,          pV P                   V,          V V# R # R # R # r  )r   )r   r!  r   rA  s   &&& r{   r   .DreameMapVacuumMapManager._unqueue_partial_map	  sl    ***$$V,,0088++F3H=H$$V,X6O	 9 - +r~   c                   V ^8  d   QhRR/# )ru   rw   r   ry   )rz   s   "r{   r|   r}     s     > > >r~   c                	    V P                   f   ^ # V P                  V P                  9  g$   V P                  V P                  ,          '       g   ^ # \        V P                  V P                  ,          4      # r  )r   r   r   r   r   s   &r{   r   1DreameMapVacuumMapManager._partial_map_queue_size  s[    ((0d&:&::$BVBVW[WjWjBkBk4''(;(;<==r~   c                    V ^8  d   QhRRRR/# )ru   r   r   rw   zTuple[Any, Optional[str]]ry   )rz   s   "r{   r|   r}     s       Ng r~   c                	    R pV'       d+   RV9   d$   VP                  R4      pV^ ,          pV^,          pV P                  W4      pWS3# )Nr   )r  _get_interim_file_data)r   r   r   r   r  r   s   &&&   r{   r   /DreameMapVacuumMapManager._get_object_file_data  sK    3+- &&s+F )K)C..{F}r~   c                    V ^8  d   QhRRRR/# )ru   r   r   rw   
str | Nonery   )rz   s   "r{   r|   r}   %  s     5 5# 5z 5r~   c                	   V P                   P                  P                  '       Ede   Ve   VR8X  d   \        P	                  R4       V P                   P                  P                  \        \        P                  4      4      pV'       d2   \        P                  ! V^ ,          \        ,          4      pV^ ,          pVe   VR8X  d!   V P                   P                  P                  pV P                  V4      pV'       d   \        P	                  RV4       V P                   P                  P                  V4      pVe   V# \        P                  RV4       V P                   P#                  V4      '       d   V P                   V R # R # R # R # )Nr   zGet object name from cloudzRequest map data from cloud %sz%Request map data from cloud failed %s)rv   r   	logged_inr   r   r   r   r   r   r   r   r6   r   _get_file_urlget_filer  r   r   )r   r   r   r   urlr   s   &&&   r{   rY  0DreameMapVacuumMapManager._get_interim_file_data%  s)   >>)))"kR&79:%)^^%9%9%M%MdSgSsSsNt%u"%)-4Fq4IJ]4^)_&"4Q"7K"kR&7"nn22>>$$[1C=sC>>//88='#O GM??&&{334 4  *r~   c               $    V ^8  d   QhRRRRRR/# )ru   r   r   interimr   rw   r\  ry   )rz   s   "r{   r|   r}   ;  s!       t z r~   c                	   R p\        \        \        P                  ! 4       4      4      pV P                  '       di   V P                  P	                  V4      '       dH   V P                  V,          pV\
        ,          V,
          ^<8  d   V\        ,           R\        V4       2pVf   V'       d&   V P                  P                  P                  V4      M$V P                  P                  P                  V4      pV'       dA   \        V\
        VR,           /V P                  V&   V P                  V,          \        ,          pV# )Nz	&current=i  )r   roundr  r   r   rE   rD   r   rv   r   get_interim_file_urlget_file_url)r   r   rd  ra  nowobjectr   s   &&&    r{   r_  'DreameMapVacuumMapManager._get_file_url;  s    %		$%???t22;??__[1F01C7"< 1239SXJG;  $$99+F^^))66{C 
 %x.w0, ook23DE
r~   c                   V ^8  d   QhRR/# ru   rw   zMapDataPartial | Nonery   )rz   s   "r{   r|   r}   Q  s      H] r~   c                	>   \         P                  WP                  V4      pVey   V'       d&   VP                  e   VP                  R8  d   W$n        V P                  e   VP                  V P                  8  d#   VP                  V n        VP
                  V n        V# )Nl   ;)DreameVacuumMapDecoderdecode_map_partialr   timestamp_msr   r!  r   )r   raw_mapr   r   r   s   &&&& r{   r   -DreameMapVacuumMapManager._decode_map_partialQ  s    ,??WZ[" k66>+BZBZ]jBj+4(,,48P8PSWSpSp8p0;0H0H-&1&8&8#r~   c                    V ^8  d   QhRRRR/# )ru   r   r   rw   rx   ry   )rz   s   "r{   r|   r}   `  s     F Fc F Fr~   c                	x    V P                  W4      w  r4Ve#   V P                  VP                  4       W$4       R # R # r  )r   r  r   )r   r   r   r   r   s   &&&  r{   r  ,DreameMapVacuumMapManager._add_map_data_file`  s6    22;J""8??#4iE  r~   c                    V ^8  d   QhRRRR/# )ru   rr  r   rw   r   ry   )rz   s   "r{   r|   r}   e  s     U U U4 Ur~   c                	D    V P                  V P                  WV4      4      # r  )r   r   )r   rr  r   r   s   &&&&r{   r  +DreameMapVacuumMapManager._add_raw_map_datae  s     !!$":":7s"STTr~   c                    V ^8  d   QhRRRR/# )ru   r   r#   rw   rx   ry   )rz   s   "r{   r|   r}   h  s     I& I& I&D I&r~   c                	   VEe   VP                   e   V P                  e   V P                  e|   V P                  '       dj   V P                  VP                   8  dO   \        P	                  RVP
                  VP                  VP                   V P                  V P                  4       R # V P                  e\   V P                  V P                  8w  dA   \        P                  RV P                  V P                  4       R V n        R V n        R V n
        VP                  V P                  8w  d.   \        P                  RVP                  V P                  4       R # V P                  e   V P                  e   VP                  V P                  8  d   VP
                  \        P                  P                  8w  g   VP                   V P                  8:  dD   \        P                  RVP                  VP                  V P                  V P                  4       R # VP
                  \        P                  P                  8X  Ed   V P                  eU   V P                   eG   V P                   P"                  '       d+   \        P	                  R4       R V n        R V n        R V n        V P                  e   V P                   f2   V P%                  V4       V P&                  f   V P)                  4        R # VP                  V P                  ^,           8w  d   VP                  V P                  8:  d   V P+                  4        R # V P%                  V4       V P-                  4        V P/                  4       ^ 8  d0   V P1                  VP                  V P                  ^,           4       R # V P+                  4        R # V P                   P2                  '       d+   \4        P6                  ! V P                   P2                  4      MR p\8        P;                  VV P                   V P<                  4      pV'       d   W0n        \>        P>                  ! 4       V P                   n         R V n
        VP                  V n        VP                  V n        VP                   V n        \        P                  RVP                  VP                  4       V PB                  '       d   W#P2                  8w  d   V PE                  4        E	MMVP
                  \        P                  P                  8X  E	d$   RV n#        V P-                  4        \8        PI                  WP<                  4      w  ppVf   V P+                  4        R # VPJ                  '       d   V P                   e   V P                   PJ                  '       gZ   V PM                  4        W0n        VP                  V n        VP                  V n        VP                   V n        V PE                  4        V P+                  4        R # VEe   VPN                  '       Ed   VP                  V PP                  9   Ed   RVn)        VP                  V n*        V PP                  VP                  ,          PV                  Vn+        V PP                  VP                  ,          PX                  Vn,        V PP                  VP                  ,          PZ                  Vn-        V PP                  VP                  ,          P\                  Vn.        VP                   Vn         W@PP                  VP                  ,          8w  g7   VP^                  V PP                  VP                  ,          P^                  8w  d^   \>        P>                  ! 4       Vn         W@PP                  VP                  &   \        P	                  RVP                  VPV                  4       MVPR                  '       g   V P`                  '       g   \>        P>                  ! 4       Vn         W@PP                  VP                  &   \        P                  R	VP                  4       V Pc                  4        V P                   '       d   V PE                  4        V PB                  '       d   V Pe                  4        MV Pg                  4        VPN                  '       Eg~   V P<                  '       Ed   VPh                  ^8X  Ed-   V'       Ed$   V Pj                  '       Ed   \4        P6                  ! VP^                  4      Vn/        \4        P6                  ! VPl                  4      Vn6        \4        P6                  ! VPn                  4      Vn7        \4        P6                  ! VPp                  4      Vn8        \4        P6                  ! VPr                  4      Vn9        VPt                  Vn:        VPv                  Vn;        VPx                  Vn<        R Vn        R
Vn=        R Vn>        RVn?        ^Vn4        MqVP2                  fd   VP"                  '       dR   V Pj                  '       g@   V P                   '       d.   VPz                  '       g   V P                   P2                  Vn        V P                  R J ;'       gP    V P                   R J ;'       g:    W0P                   8g  ;'       g$    VP^                  V P                   P^                  8g  pV'       g8   V P                  VP                  8w  g   V P                  VP                   8w  Ed   V P                  Eea   V P                   EeR   V P                  EeC   VP                  V P                  8:  Ed    V P                   PJ                  '       g   V P                   Ph                  ^8X  g.   V P<                  '       d   V P                   Ph                  ^8X  d   V P                   P                  Vn@        V P                   P                  VnA        V P                   P                  VnB        V P                   P|                  Vn>        V P                   P^                  Vn/        V P                   P                  VnC        W0P                   8g  pMRpR
Vn%        MR V n
        V P                   '       d   V'       g   VP~                  '       d   V P                   P~                  '       g   RVn?        \4        P6                  ! V P                   P                  4      VnD        \4        P6                  ! V P                   P                  4      VnE        \4        P6                  ! V P                   P                  4      VnF        W0n        VP                  V n        VP                  V n        VP                   V n        V'       da   \        P                  RVP                  VP                  4       \>        P>                  ! 4       V P                   n         V PE                  4        M+\        P                  RVP                  VP                  4       V P                  f&   V P                   e   R V n        V PE                  4        V P+                  4        R # R # )Nz&Skip frame %s, timestamp %s:%s < %s:%szMap ID Changed: %s -> %szSkip frame, map_id %s != %sz"Skip frame, frame id %s:%s < %s:%szCurrent map data removedzDecode P map %d %dFzDecode saved map %s: %szAdd saved map from new map %sTzDecode I map %d %dzDecode map %d %d not changed)Grq  r   r   r   r4  r   r   r   r   r   r   r!  r%   r   r   r  r   restored_mapr   r   r  _add_next_map_datar   r   r   robot_positionrE  rF  ro  decode_p_map_data_from_partialr   r  last_updatedr   r   r   decode_map_data_from_partial	empty_mapr   	saved_mapr   temporary_mapr   map_namecustom_namerotation	map_indexsegmentsr   _refresh_map_listrequest_next_map_listr)  saved_map_statusr   r   
pixel_type
dimensionscharger_positionno_go_areasno_mopping_areaswallsdockedpathneed_optimizationactive_segmentsactive_areasactive_pointscleansetoptimized_pixel_typeoptimized_dimensionsoptimized_charger_position)r   r   current_robot_positionrA  saved_map_datachangeds   &&    r{   r   'DreameMapVacuumMapManager._add_map_datah  s
   "((4..:..:***..1I1II<**((,,**.. ##/D4H4HDL_L_4_.(('' *.&'+$)-& !!T%8%881&&''  &&2**6((4+A+AA  **lnn.B.BB"//43M3MMLL<#**#,,,,.. %%)=)==))5$..:TY]YgYgYtYtYtMM"<=%)DN-1D*+/D())1T^^5K++K8--5++-''4+A+AA+EE"++t/E/EE//1++K85573359001C1CTE[E[^_E_`  //1 EINNDaDaDaDMM$.."?"?@gk ' 2PPNNOO
 %-N26))+DNN/-1D*-5->->D*+3??D(191F1FD.LL!5xHYHYZ///3IMdMd3d..0''<>>+?+??).&113
 +GGUdUde"#++-%%%~~-T^^5M5M5M))1191B1B./7,5=5J5J2..0++-!-.2J2J2J%,,0D0DD16.0>0E0E-262F2F~G\G\2]2f2f/595I5I.J_J_5`5l5l2262F2F~G\G\2]2f2f/373G3GH]H]3^3h3h06>6K6K3*.B.B>CXCX.YY-66$:N:N~OdOd:e:n:nn:>))+N7JX001F1FG#MM 9 . 5 5 . 7 7
 &333#~~~:>))+N7JX001F1FG#LL)H.J_J_` 224#~~~ $ 6 6 8/// 668 113)))#449nnQUQdQdQd04n>U>U0VH-,0MM.:M:M,NHM26--@Y@Y2ZH/26--@Y@Y2ZH/8<nFeFe8fH53A3M3MH08F8W8WH5-;-A-AHN6:H3.2HO,0HM9>H689H5$33; ( 5 5 5$($7$7$7 $$,OOO6:nn6S6SH3 ..$6 H H>>T1H H#~~5H H $,,0G0GG	   11X5F5FF559N9NN !22> $ : $ 6 6 B'00D4J4JJ'+~~'?'?'?$(NN$C$Cq$H(,DNN<[<[_`<`?C~~?]?]H$<<@NN<W<WH$9=A^^=Y=YH$:48NN4G4GHM8<8O8OH$58<8O8OH$5.6...HG.3G9=H$69= 6 !NNN$+ ( : : :$(NN$D$D$D9>H6<@MM$..JmJm<nH9<@MM$..JmJm<nH9BF-- $ I ICH? *2191B1B./7,5=5J5J2"#LL)=xPXPaPab:>))+DNN7 224#LL > ( ( 1 1 %%-$..2L!%&&(##%Q #r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}   s  s     1 1D 1r~   c                	~    V P                  4       pVe)   \        P                  R4       V P                  V4       R # R # )NzContinue to next map data)r   r   r4  r   )r   r   s   & r{   r}  ,DreameMapVacuumMapManager._add_next_map_datas  s8    99;'MM56/0 (r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}   y  s     & &4 &r~   c                	   ^p. p\        V P                  P                  4       4       FX  w  r4VP                  V4       VP                  f   R\        V4       2Vn        MVP                  Vn        Wn        V^,           pKZ  	  W n        R# )r  NzMap )	sortedr   rG  appendr  r   r  r  r   )r   indexnew_map_listr!  r  s   &    r{   r  +DreameMapVacuumMapManager._refresh_map_listy  s    &,T-A-A-G-G-I&J"F'))1,0U*='*8*D*D'',$AIE 'K &r~   c                    V ^8  d   QhRRRR/# )ru   r  r   rw   rN  ry   )rz   s   "r{   r|   r}     s       ^ r~   c                	    V'       dH   V\        V P                  4      8:  d,   V P                  V P                  V^,
          ,          ,          # R# V P                  # r  N)r   r   r   r   )r   r  s   &&r{   get_map!DreameMapVacuumMapManager.get_map  sA    C//++DNN9q=,IJJ~~r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     ) )$ )r~   c                	    Wn         R # r  )r   r   callbacks   &&r{   listen DreameMapVacuumMapManager.listen  s     (r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     ( ( (r~   c                	    Wn         R # r  )r   r  s   &&r{   listen_error&DreameMapVacuumMapManager.listen_error  s    'r~   c                    V ^8  d   QhRRRR/# )ru   waitfloatrw   rx   ry   )rz   s   "r{   r|   r}     s     	' 	'E 	'T 	'r~   c                	
   V'       g   V P                   pV P                  e$   V P                  P                  4        V =R V n        V^ 8  d7   \        WP                  4      V n        V P                  P                  4        R # R # r  )r   r   r8  r   r=  r<  )r   r  s   &&r{   r:  )DreameMapVacuumMapManager.schedule_update  sm    ((D)%%'"!%D19!&t->->!?D$$& r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     9% 9% 9%r~   c                	   V P                   '       d   R # RV n         \        P                  RV P                  4        V P                  '       d   V P
                  e%   V P
                  '       d#   V P                  '       g   V P                  4        V P                  f   V P                  '       d^   R V n
        V P                  ^,           V n        V P                  ^8  d   R V n        RV n	        EMV P                  V P                  4       EMV P                  ea   V P                  '       d   \        P                  ! 4       V P                  R,          ,
          ^8  g   V P                  P                   '       d   R V n
        V P                  '       d^   V P                  P                   '       gB   \        P#                  R\        P                  ! 4       V P                  R,          ,
          4       V P$                  P&                  P(                  '       d   V P                  4        MsV P+                  4       '       g^   V P                  '       dL   \        P#                  R4       \-        R4       V P+                  4       '       g   \        P#                  R4       V P.                  '       g   RV n        V P1                  4        RT n        RT n         R #   \2         dy   pT P.                  '       d]   \        P5                  R	\6        P8                  ! 4       4       RT n        T P:                  '       d   T P;                  \=        T4      4        R p?LR p?ii ; i)
NTzMap update: %sFr   zNeed map request: %.2fz"No new map data received, retrying      ?z&No new map data received on second tryzMap update Failed: %s) r   r   r4  r   r   r   r   r)  r   r   r   r   r0  r   r  r   r  r   rv   r   r^  r   r   r   r   r  r  	traceback
format_excr   r   r   )r   r  s   & r{   r9   DreameMapVacuumMapManager.update  s[   #&(=(=>/	J***t/J/J/R+++D4H4H4H%%' %%1T5K5K5K)-&*.*A*AA*E'**b0-1D*-2D*--d.D.DE'$$$YY[D$>$>$GH2MQUQ_Q_QiQiQi)-&>>>$..*B*B*BLL0		t'A'AF'JK >>''111--/11338L8L8LABc
3355LL!IJ???"&&&( $  	J 79M9M9OP"''''(()DR)HI	Jsj   K K /K /K 1A<K .AK <K K 1A&K &K ?K AK .K M AM4MMc                    V ^8  d   QhRRRR/# )ru   aes_ivr   rw   rx   ry   )rz   s   "r{   r|   r}     s     " " " "r~   c                	&    V'       d	   Wn         R # R # r  )r   )r   r  s   &&r{   
set_aes_iv$DreameMapVacuumMapManager.set_aes_iv  s    !L r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s      t r~   c                	    R V n         R# TN)r   r   s   &r{   set_vslam_map'DreameMapVacuumMapManager.set_vslam_map  s	    r~   c                    V ^8  d   QhRRRR/# )ru   update_intervalr  rw   rx   ry   )rz   s   "r{   r|   r}     s     # #5 #T #r~   c                	X    V P                   V8w  d   Wn         V P                  4        R # R # r  )r   r:  )r   r  s   &&r{   set_update_interval-DreameMapVacuumMapManager.set_update_interval  s'      O3$3!  " 4r~   c               $    V ^8  d   QhRRRRRR/# )ru   runningr   r  rw   rx   ry   )rz   s   "r{   r|   r}     s!     $ $$ $ $ $r~   c                	   V P                   V8w  g   V P                  V8w  Edb   Wn         V P                  V8w  Ed7   V P                  '       Ed   V'       Ed   V P                  '       Ed   V P                  P                  ^8X  Ed   V P
                  p\        P                  ! VP                  4      V P                  n        \        P                  ! VP                  4      V P                  n	        \        P                  ! VP                  4      V P                  n
        \        P                  ! VP                  4      V P                  n        \        P                  ! VP                  4      V P                  n        VP                  V P                  n        VP                  V P                  n        VP                  V P                  n        V P                  P                  V P                  n        RV P                  n        RV P                  n        RV P                  n        ^V P                  n        \(        P(                  ! 4       V P                  n        V P-                  4        W n        V P/                  ^4       R# R# )r  TNF)r   r   r   r   r  selected_maprE  rF  r  r   r  r  r  r  r  r  r~  r  r  r  r  r  r   r:  )r   r  r  r  s   &&& r{   set_device_running,DreameMapVacuumMapManager.set_device_running  s   7*d.A.AV.K#* ""f,???vv$...T^^EdEdhiEi%)%6%6N.2mmN<S<S.TDNN+*.--8K8K*LDNN'04n>W>W0XDNN-04n>W>W0XDNN-6:mmNDcDc6dDNN31?1K1KDNN.6D6U6UDNN3+9+?+?DNN(48NN4S4SDNN1,0DNN)*.DNN'7<DNN467DNN326))+DNN/**,&,#  #1 /Lr~   c                    V ^8  d   QhRRRR/# )ru   device_dockedr   rw   rx   ry   )rz   s   "r{   r|   r}      s     , ,t , ,r~   c                	V    V P                   V8w  d   V P                  ^4       Wn         R# ru   N)r   r:  )r   r  s   &&r{   set_device_docked+DreameMapVacuumMapManager.set_device_docked   s$    -/  #+r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     / / /r~   c                	   V P                   '       d   \        P                  ! 4       V P                   ,
          ^
8  dX   \        P                  ! 4       V P                   ,
          ^8  d+   \        P                  ! 4       V n         V P                  4        R# \        P                  ! 4       V n         V P                  f   V P	                  4       # V P                  4       pV'       d'   V\        ,          ^ 8X  d   V P                  4        R# R# R# )
   N)r   r  r   r   r  r  r8   r*  s   & r{   r   )DreameMapVacuumMapManager.request_new_map  s    %%%$))+8R8R*RUW*Wyy{T777!;-1YY[*,,.%)YY[">>!&&((&&(F&!349,,. :vr~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s        $  r~   c                	D    ^ V n         RV n        V P                  ^4       R# )r   TN)r   r   r:  r   s   &r{   request_next_map*DreameMapVacuumMapManager.request_next_map  s     "#!%Qr~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     + +t +r~   c                	    R V n         R# r  )r   r   s   &r{   r  /DreameMapVacuumMapManager.request_next_map_list  s
    &*#r~   c                    V ^8  d   QhRRRR/# ru   map_listzdict[int, str]rw   r   ry   )rz   s   "r{   r|   r}     s       D r~   c                	   V'       d   VR 8w  d   VP                  \        4      pVP                  \        4      pV'       d   V'       dy   VR 8w  dr   V P                  V8w  g   V P                  V8w  dP   W0n        V P
                  '       g0   V P                  e"   V P                  4        V P                  ^4       W n        R# R# r   TF)r   rH   rG   r   r   r   r  r:  )r   r  md5r   s   &&  r{   set_map_list_object_name2DreameMapVacuumMapManager.set_map_list_object_name  s    B,,01C",,'@AKKK2,=--<@R@RVY@Y1<.///D4F4F4R224,,Q/),&r~   c                    V ^8  d   QhRRRR/# r  ry   )rz   s   "r{   r|   r}   *  s      . T r~   c                	    V'       dT   VR 8w  dM   VP                  \        4      pV'       d0   V'       d(   VR 8w  d!   V P                  V8w  d   W n        RV n        R# R# r  )r   rG   r   r   )r   r  r   s   && r{   !set_recovery_map_list_object_name;DreameMapVacuumMapManager.set_recovery_map_list_object_name*  sH    B",,'@AKKK2,=66+E:E7;?D8r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}   4  s     K1 K1$ K1r~   c           	     	P   V P                   '       Ed   V P                  P                  P                  '       Ed   \        P                  R V P                   4        V P                  V P                   4      pT'       EdW   RT n	        TP                  4       p \        P                  ! T4      pT\        ,          pRp\        P                  ! 4       p/ pT'       Ed=   T F  p	T	P                  \         4      '       g   K   \"        P%                  T	\         ,          T P&                  T	P                  \(        4      '       d   \+        T	\(        ,          4      M^ T P,                  4      p
T
f   K  T	P                  \.        4      pT'       d   Yn        Yn        YT
P4                  &   K  	  \7        TP9                  4       4       EFS  w  rYP:                  9   Ed   T P<                  T8X  d/   T P>                  '       d   T P>                  P@                  T
n         M"T P:                  T,          P@                  T
n         T P:                  T,          T
8w  d   \        P                  RT4       RpYzn!        T P>                  e   T P<                  T8w  d   YP:                  T&   K  T
P0                  T P:                  T,          n        T
PD                  T P:                  T,          n"        EK$  EK'  Yzn!        YP:                  T&   \        P                  RT4       RpEKV  	  T P:                  PG                  4       pTPI                  4        F  pY9  g   K  T P:                  T RpK  	  T\J        ,          pYP:                  9   d   T P<                  T8w  d	   Yn        RpTR8X  d7   T PM                  4        T P>                  '       d   T PO                  4        R# R# R# R# R# R#   \         d"   p\        P                  RT4        Rp?R# Rp?ii ; i   \        P                  R4        R# ; i)zGet Map List: %szGet Map List failed: %sNFzGet Map List json parse failedzSaved map changed: %sTzAdd saved map: %s)(r   rv   r   r^  r   r   rY  r  r   r   r   r   r   r<   r  r   r:   ro  decode_saved_mapr   r;   r   r   r5   r  r  r!  r  rG  r   r   r   r  r  r  rE  keysr=   r  r   )r   r   r  rr  map_infosaved_map_listr  ri  r  rJ  r  r   r!  current_map_listselected_map_ids   &              r{   r)  *DreameMapVacuumMapManager.request_map_list4  sK   %%%$..*>*>*H*H*HLL+T-G-GH66t7Q7QR
 x.3+"//+#zz'2H
 "**>!?iik!>+55!233-C-T-T !"3 4 $?@uuEX?Y?YA&9$: ;_` $	.N  .9'(uu-?'@#'AE$>>B$;BP)>)> ? , 399I2J.!%9%99#44>4>>>:>..:Q:Q 7:>:N:Nv:V:_:_ 7#33F;~M '-Df M*.>A ;#'>>#9T=R=RV\=\CQ$8$8$@O]OiOiD$8$8$@$LLZLcLcD$8$8$@$I  N ;>7;I008#LL)<fE&*G) 3K, $(#7#7#<#<#> .335F- 008"& 6
 #++@"A"&:&::t?T?TXg?g,;)"Gd?**,~~~..0 & #  +I%  6;LL!ABs$   O P P'PPP%c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     " "4 "r~   c                	   V P                   '       Ed   \        P                  ! 4       pV P                  V P                   4      pV'       Ed   R V n        VP	                  4       p\
        P                  ! V4      pV EFk  pV\        ,          pW`P                  9   g   K#  V\        ,          pV EF4  pV\        ,          p	V\        ,          p
V\        ,          pVP                  R4      '       d'   V P                  P                  P!                  V4      pM%V P                  P                  P#                  V4      pV'       g   K  VP%                  \&        4      '       g   K  \(        P+                  RV4       V\&        ,          \,        ,          p\.        P1                  V\2        ,          V P4                  V P6                  V,          P8                  V P:                  4      pEK7  	  EKn  	  R# R# R# )Fzmb.tbz2z$Get recovery map file url result: %sN)r   r  rY  r   r   r   r   r?   r   r@   rA   r7   rB   endswithrv   r   rh  rg  r   rC   r   r   rD   ro  r  rF   r   r   r  r   )r   ri  r   rr  recovery_map_listrecovery_mapr!  map_info_listr  firstmap_timer   map_urlrecovery_map_datas   &             r{   request_recovery_map_list3DreameMapVacuumMapManager.request_recovery_map_list  sm   ...))+C2243V3VWHx7<4"//+$(JJw$7!$5L)*:;F/(45G(H(5H$,-@$AE'/0B'CH*23H*IK*33I>>+/>>+?+?+L+L[+Y+/>>+?+?+T+TU`+a'xHLL9M,N,N '-SU] ^*23G*HIZ*[4J4[4[$,->$?$(OO$($8$8$@$I$I$(LL	5" 1 )6	 %6	  /r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r}     s     
 
$ 
r~   c                	|   \        V P                  R J;'       d    V P                  P                  ^ 8H  ;'       d$    V P                  P                  '       * ;'       gV    V P                  P                  ^8H  ;'       g5    V P                  P                  ;'       g    V P                  P
                  '       * 4      # r  )r   r   r  r  r|  r  r   s   &r{   r  2DreameMapVacuumMapManager._request_i_map_available  s    d*  ^^449ZZ$..BZBZ>Z 4 4~~66!;4 4~~224 4 ~~33

 
	
r~   c                   V ^8  d   QhRR/# )ru   rw   list[int] | Nonery   )rz   s   "r{   r|   r}     s     + +* +r~   c                	6    V P                   P                  4       # r  )r   r  r   s   &r{   r  "DreameMapVacuumMapManager.map_list  s    ##((**r~   c                   V ^8  d   QhRR/# )ru   rw   zdict[int, MapData] | Nonery   )rz   s   "r{   r|   r}     s     $ $8 $r~   c                	    V P                   # r  )r   r   s   &r{   map_data_list'DreameMapVacuumMapManager.map_data_list  s    ###r~   c                   V ^8  d   QhRR/# rM  ry   )rz   s   "r{   r|   r}     s     ? ?n ?r~   c                	   V P                   '       d   V P                  e9   V P                  V P                  9   d   V P                  V P                  ,          # V P                  '       de   \	        V P                  4      ^8X  dI   V P                  ^ ,          V P                  9   d%   V P                  V P                  ^ ,          ,          # R # R # R # R # r  )r   r   r   r   r   r   s   &r{   r  &DreameMapVacuumMapManager.selected_map  s    >>>$$0T5J5JdNbNb5b++D,A,ABB~~~#dnn"5":t~~a?PTXThTh?h++DNN1,=>> @i":~	 r~   ),r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  )r   N)TNNr   )4__name__
__module____qualname____firstlineno__r   r   r   r  r  r   r   r+  r0  r   r=  r   r   r   r   r   r   rY  r_  r   r  r  r   r}  r  r  r  r  r:  r9  r  r  r  r  r  r   r  r  r  r  r)  r
  propertyr  r  r  r  __static_attributes__ry   r~   r{   rs   rs   {   s4   4,!:j?X*8t@>+Z$
.$
TLA*,>5,,F
UI&V1&)(	'9%v"#
$6,
/ 
+K1Z"@ 
 
 + + $ $ ? ?r~   rs   c                     ] tR tRtRtR R ltR R ltRER R	 lltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltRER R lltR R ltR  R! ltR" R# ltR$ R% ltRER& R' lltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltR6 R7 ltRER8 R9 lltR: R; lt ]!R< R= l4       t"]!R> R? l4       t#]!R@ RA l4       t$]!RB RC l4       t%RDt&R# )Fr   i  ay  Every map change must be handled on memory before actually requesting it to the device because it takes too much time to get the updated map from the cloud.
This class handles user edits on stored map data like updating customized cleaning settings or setting active segments on segment cleaning.
Original app has a similar class to handle the same issue (Works optimistically)c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   %DreameMapVacuumMapEditor.__annotate__  s     ' 't 'r~   c                	     / V n         Wn        R # r  )_previous_cleaning_sequencemap_manager)r   r'  s   &&r{   r   !DreameMapVacuumMapEditor.__init__  s    AC(&r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r$    s     6 6 6r~   c                	&    WP                   n        R # r  )r'  r   )r   r   s   &&r{   _set_updated_frame_id.DreameMapVacuumMapEditor._set_updated_frame_id  s    -5*r~   Nc                    V ^8  d   QhRRRR/# ru   r!  r   rw   rx   ry   )rz   s   "r{   r|   r$    s     6 6# 6 6r~   c                	   V'       dP   V P                   '       d<   WP                   9   d,   \        P                  ! 4       V P                   V,          n        R # V P                  e'   \        P                  ! 4       V P                  n        R # R # r  )r   r  r  r   r   r!  s   &&r{   refresh_map$DreameMapVacuumMapEditor.refresh_map  sY    ###2F2F(F<@IIK$$V,9>>%*.))+DNN' &r~   c                    V ^8  d   QhRRRR/# )ru   r  list[list[int]]rw   rx   ry   )rz   s   "r{   r|   r$    s      _  r~   c                	   V P                   pVe   . Vn        V F  p\        V^ ,          V^,          .4      p\        V^,          V^,          .4      pVP                  P                  \	        V^ ,          V^ ,          V^,          V^ ,          V^,          V^,          V^ ,          V^,          4      4       K  	  V P                  VP                  4       V P                  4        R # R # r  )r   r  r  r  r(   r+  r   r1  )r   r  rA  areax_coordsy_coordss   &&    r{   set_active_areas)DreameMapVacuumMapEditor.set_active_areas  s    >>$&H!$!47DG"45!47DG"45%%,,        	 % &&x'8'89%  r~   c                    V ^8  d   QhRRRR/# )ru   r  	list[int]rw   rx   ry   )rz   s   "r{   r|   r$    s      9  r~   c                	    V P                   pVe4   Wn        V P                  VP                  4       V P	                  4        R # R # r  )r   r  r+  r   r1  )r   r  rA  s   && r{   set_active_segments,DreameMapVacuumMapEditor.set_active_segments  s<    >>'6$&&x'8'89  r~   c                    V ^8  d   QhRRRR/# )ru   r  r4  rw   rx   ry   )rz   s   "r{   r|   r$    s       4 r~   c                	   V P                   pVeq   . Vn        V F6  pVP                  P                  \        V^ ,          V^,          4      4       K8  	  V P	                  VP
                  4       V P                  4        R # R # r  )r   r  r  r!   r+  r   r1  )r   r  rA  points   &&  r{   set_active_points*DreameMapVacuumMapEditor.set_active_points  st    >>%'H"&&&--aa ' &&x'8'89  r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r$     s      D r~   c                	    V P                   pVe5   R Vn        V P                  VP                  4       V P	                  4        R # R # r  )r   r  r+  r   r1  r   rA  s   & r{   
clear_path#DreameMapVacuumMapEditor.clear_path   s=    >> HM&&x'8'89  r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r$    s     
 
4 
r~   c                	
   V P                   pVes   ^ VP                  n        ^ VP                  n        / Vn        R Vn        RVn        ^ Vn        V P                  VP                  ^,           4       V P                  4        R # R # NT)r   r  widthheightr  r  r  r  r+  r   r1  rG  s   & r{   	reset_map"DreameMapVacuumMapEditor.reset_map  sv    >>()H%)*H& "H HM!%H()H%&&x'8'81'<=  r~   c               $    V ^8  d   QhRRRRRR/# )ru   r!  r   r  rw   rx   ry   )rz   s   "r{   r|   r$    s!     % %3 %# %$ %r~   c                	    WP                   9   di   W P                   V,          n        V P                  e1   WP                  8X  d!   W P                  n        V P	                  4        V P	                  V4       R # R # r  )r   r  r   r   r1  )r   r!  r  s   &&&r{   set_rotation%DreameMapVacuumMapEditor.set_rotation  s]    )))4<  (1~~)f8M8M.M*2'  "V$ *r~   c               $    V ^8  d   QhRRRRRR/# )ru   r!  r   r   r   rw   rx   ry   )rz   s   "r{   r|   r$    s!      3 c d r~   c                	    WP                   9   dR   W P                   V,          n        W P                   V,          n        V P                  V4       V P                  4        R # R # r  )r   r  r  r1  )r   r!  r   s   &&&r{   set_map_name%DreameMapVacuumMapEditor.set_map_name  sO    )))7;  (448  (1V$	 *r~   c                    V ^8  d   QhRRRR/# r.  ry   )rz   s   "r{   r|   r$  "  s     ) ) ) )r~   c                	L    WP                   8w  d   V P                  V4       R # R # r  )r   set_current_mapr0  s   &&r{   
select_map#DreameMapVacuumMapEditor.select_map"  s!    ***  ( +r~   c                    V ^8  d   QhRRRR/# r.  ry   )rz   s   "r{   r|   r$  &  s      c d r~   c                	F   V'       Ed   WP                   9   Ed   \        P                  ! V P                   V,          4      pV P                  P                  Vn        V P
                  Vn        R Vn        R Vn        ^ Vn	        R Vn
        RVn        RVn        RVn        RVn        ^Vn        \         P#                  W"P$                  4       W P&                  n        R V P&                  n        WP&                  n        WP&                  n        V P/                  4        R # R # R # r   )r   rE  rF  r   r  r   rq  r   r  r  r  r  r|  r  r  r  ro  set_segment_cleansetr  r'  r   r   r   r1  )r   r!  r  s   && r{   r[  (DreameMapVacuumMapEditor.set_current_map&  s    6f 4 44!]]4+?+?+GHN$(NN$9$9N!*.*D*DN'&*N#&*N#'(N$)-N&',N$*.N'+0N(',N$./N+"77H_H_`)7&15D./5,06-% 56r~   c                    V ^8  d   QhRRRR/# r.  ry   )rz   s   "r{   r|   r$  ;  s     5 5 5 5r~   c                	x   V P                   pV'       d   VP                  '       d   R # Vf{   R V P                  n         R V P                  n        R V P                  n        / V P                  n        V P                  P                  4        V P                  P                  4        R # V P
                  '       d.   WP
                  9  d   V P                  P                  ^4       R # V'       d   V P                  V8X  dq   \        V P                  P                  4      ^8  d.   V P                  V P                  P                  R,          4       MR V P                  n         R V n        R V n        V P                  P
                  V V P                  P                  4        V P                  P                  4        R # )N)r   r  r'  r   r   r   r  r  r:  r   r   r[  )r   r!  rA  s   && r{   
delete_map#DreameMapVacuumMapEditor.delete_map;  sI   >>...>)-D&04D-15D./1D,..0224###6J6J(J  003D11V;t''112Q6(()9)9)C)CB)GH15D$$.-1D*,0D)  008..0224r~   c               $    V ^8  d   QhRRRRRR/# )ru   r!  r   r  r<  rw   rx   ry   )rz   s   "r{   r|   r$  X  s!     ") ")S ")I ")$ ")r~   c                	t   V P                   pV'       Ed   W9   Ed   \        V4      ^8X  Ed   W1,          pVP                  '       Edj   V^ ,          VP                  9   EdO   V^,          VP                  9   Ed4   V^,          VP                  V^ ,          ,          P                  9  d   \        P                  RV4       R# \        P                  ! VP                  P                  VP                  P                  ,          \        P                  4      p\        VP                  P                  4       F  p\        VP                  P                  4       F  pWdP                  P                  ,          V,           pVP                  V,          ^?,          V^,          8X  d   V^ ,          WX&   MVP                  V,          WX&   \        VP                  Wv3,          4      V^,          8X  g   K  V^ ,          VP                  Wv3&   K  	  K  	  \!        V4      Vn        V P"                  P                   V,          P                  V^,           \$        P'                  W@P"                  P(                  4      p	W^ ,          ,          P*                  VP                  V^ ,          ,          n        W^ ,          ,          P,                  VP                  V^ ,          ,          n        VP                  P/                  4        FR  w  rV^,          VP                  9   g   K  VP                  V
,          P                  P1                  V^,          4       KT  	  \$        P3                  V4       V P4                  '       d"   WP6                  8X  d   V P9                  V4       V P;                  V4       R# R# R# R# R# R# R# )ru   z.Segments are not neighbors with each other: %sN)r   r   r  	neighborsr   errornpzerosr  rM  rN  uint8ranger   r   r  bytesr'  ro  get_segmentsr   xyrG  removeset_segment_color_indexr   r   r[  r1  )r   r!  r  r  rA  r   rr  rq  r  new_segmentsrI  rJ  s   &&&         r{   merge_segments'DreameMapVacuumMapEditor.merge_segmentsX  s   -->f63x=A;M%-H   Xa[H4E4E%E(ST+YaYjYjJjA;h&7&7&D&N&NNMM"RT\]xx!4!4!:!:X=P=P=W=W!WZ\ZbZbcx2299:A"8#6#6#<#<= !$7$7$=$= = A$MM%047HQKG*21+DK*2--*>DKx221489Xa[H8@H//5 > ; !&d$$44V<EEhqkR5BB8M]M]MhMhi3?3L3N3N!!(1+.03?3L3N3N!!(1+.0$--335DA{akk1 ))!,66==hqkJ 6 '>>xH>>>f0E0E&E((0  (= Kk%E  <N6>r~   c               (    V ^8  d   QhRRRRRRRR/# )ru   r!  r   segmentliner<  rw   rx   ry   )rz   s   "r{   r|   r$  |  s(     % %S %3 %i %D %r~   c                	    V P                   '       dY   WP                   9   dG   V P                  '       d"   WP                  8X  d   V P                  V4       V P	                  V4       R # R # R # r  )r   r   r   r[  r1  )r   r!  ry  rz  s   &&&&r{   split_segments'DreameMapVacuumMapEditor.split_segments|  sR    F.B.B$B~~~&,A,A"A$$V,V$ %Cr~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r$    s     5 5D 5r~   c                	    V P                   '       d\   V P                   P                  '       d>   R V P                   n        V P                  4        V P                  P	                  4        R# R# R# )FN)r   r  r1  r'  r  r   s   &r{   save_temporary_map+DreameMapVacuumMapEditor.save_temporary_map  sK    >>>dnn:::+0DNN(224 ;>r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r$    s     5 5t 5r~   c                	    V P                   '       dj   V P                   P                  '       dL   V P                  '       d8   V P                  V P                  4       V P                  P                  4        R # R # R # R # r  )r   r  r   r[  r'  r  r   s   &r{   discard_temporary_map.DreameMapVacuumMapEditor.discard_temporary_map  sW    >>>dnn:::t?T?T?T  !6!67224 @U:>r~   c                    V ^8  d   QhRRRR/# r.  ry   )rz   s   "r{   r|   r$    s     # #C #4 #r~   c                	Z   V P                   pV'       Ed   VP                  '       Ed   V'       g   V P                  '       d   V P                  pWP                  9   EdH   \        P
                  ! V4      pVP                  Vn        R Vn        RVn        RVn	        / Vn
        W0P                  P                  VP                  &   V P                  P                  V V P                  P                  4        VP                  Vn        RVn        RVn	        ^ Vn        RVn        RVn        / Vn
        \        P!                  W"P                  4       W P                  n         VP                  V P                  n        V P                  P#                  4        V P%                  4        R # R # R # R # )NTFrd  )r   r  r   r   rE  rF  saved_map_idr!  r  r  r  r'  r  r|  r  ro  r`  r  r1  )r   r!  rA  new_maps   &&  r{   replace_temporary_map.DreameMapVacuumMapEditor.replace_temporary_map  sQ   >>8...d333..-----1!(!5!5'+$+-($(!#% CJ  00@$$44V<  224(/%).&%*",-)(,%%*"$&!&;;HFWFWX-5  *4;NN  1  668  "- .	 /8r~   c               $    V ^8  d   QhRRRRRR/# )ru   r!  r   r  r   rw   rx   ry   )rz   s   "r{   r|   r$    s!     1 1# 1 1 1r~   c                	:    V P                   P                  4        R # r  )r'  r  )r   r!  r  s   &&&r{   restore_map$DreameMapVacuumMapEditor.restore_map  s    ..0r~   c                    V ^8  d   QhRRRR/# )ru   cleaning_sequencer<  rw   r  ry   )rz   s   "r{   r|   r$    s     #l #ly #lEU #lr~   c                	  a V P                   pV'       EdP   VP                  '       Ed;   VP                  '       Eg&   . pS'       Ed<   ^p\        S4      \        VP                  P	                  4       4      8X  ds   \
        ;QJ d7    V3R lVP                  P                  4        4       F  '       d   K   RM,	  RM(! V3R lVP                  P                  4        4       4      '       d   SM"\        VP                  P                  4       4       Fn  pWBP                  V,          n        VP                  V,          P                  VP                  \        V4      ,          ^&   VP                  V4       V^,           pKp  	  MVP                  P                  4        F|  pVP                  '       g   K  \        VP                  P	                  4       R R7       UUu. uF  w  rVVP                  '       g   K  VNK  	  uppV P                  VP                  &    M	  VP                  P                  4        F:  p^ VP                  V,          n        ^ VP                  \        V4      ,          ^&   K<  	  V P                  '       d\   VP                  V P                  9   dA   \         P"                  ! VP                  4      V P                  VP                  ,          n	        V P%                  VP&                  ^,           4       V P)                  4        \        VP                  P	                  4       R R7       UUu. uF  w  rVVP                  '       g   K  VNK  	  upp# R# R# R# u uppi u uppi )r  c              3  ,   <"   T F	  qS9   x  K  	  R # 5ir  ry   ).0rI  r  s   & r{   	<genexpr>ADreameMapVacuumMapEditor.set_cleaning_sequence.<locals>.<genexpr>  s     Y@X1%6 6@Xs   FTc                (    V ^,          P                   # r  orderss   &r{   <lambda>@DreameMapVacuumMapEditor.set_cleaning_sequence.<locals>.<lambda>      \]^_\`\f\fr~   r   c                (    V ^,          P                   # r  r  r  s   &r{   r  r        TUVWTXT^T^r~   N)r   r  r  r   rG  allr  r  r  r  r   r  r  r&  r!  r   rE  rF  r+  r   r1  )r   r  rA  new_cleaning_sequencer  rI  rJ  s   &f     r{   set_cleaning_sequence.DreameMapVacuumMapEditor.set_cleaning_sequence  s   >>8)))(2H2H2H$&!   -.#h6G6G6M6M6O2PPCY@Q@Q@V@V@XYCCCY@Q@Q@V@V@XYYY &
   1 1 6 6 89:  27%%a(.3;3D3DQ3G3M3MH%%c!f-a0)003!AIE: "**113Awww,283D3D3J3J3LRf,gM,gDAklkrkrQQ,gM88I  4 "**//1A12H%%a(.34H%%c!f-a0 2 ###4;O;O(OAExO`O`Aa$$X__5>&&x'8'81'<=$*8+<+<+B+B+DJ^$_k$_DAcdcjcjQQ$_kkC 3I)8&M ls   M(8M(=M.M.c               $    V ^8  d   QhRRRRRR/# )ru   
segment_idr   r  rw   r  ry   )rz   s   "r{   r|   r$    s'     .l .lC .l .l@P .lr~   c                	F
  a a S P                   oS'       Ed   SP                  '       Ed   VSP                  9   Ed   SP                  '       Eg   V^ 8  Ed   SP                  V,          P                  '       Eg    SP                  S P
                  9   Ed   \        S P
                  SP                  ,          4      \        SP                  P                  4       4      8X  d   \        ;QJ d8    VV 3R lSP                  P                  4        4       F  '       d   K   RM-	  RM)! VV 3R lSP                  P                  4        4       4      '       dF   S P                  S P
                  SP                  ,          4      pS P
                  SP                   V# ^p\        SP                  P                  4       4       F  pSP                  V,          P                  '       gS   VSP                  V,          n        SP                  V,          P                  SP                  \        V4      ,          ^&   V^,           pK  	  SP                  V,          P                  pWb8w  d   VSP                  V,          n        VSP                  \        V4      ,          ^&   SP                  P                  4        Fr  w  rWWQ8w  g   K  VP                  V8X  g   K   VSP                  V,          n        SP                  V,          P                  SP                  \        V4      ,          ^&   Kt  	  MSP                  P                  4        F|  pVP                  '       g   K  \        SP                  P                  4       R R7       UUu. uF  w  rWVP                  '       g   K  VNK  	  uppS P
                  SP                  &    M	  SP                  P                  4        F:  p^ SP                  V,          n        ^ SP                  \        V4      ,          ^&   K<  	  S P                  '       d\   SP                  S P                  9   dA   \         P"                  ! SP                  4      S P                  SP                  ,          n        S P%                  SP&                  ^,           4       S P)                  4        \        SP                  P                  4       R R7       UUu. uF  w  rWVP                  '       g   K  VNK  	  upp# R# R# R# R# u uppi u uppi )r   c              3  b   <"   T F$  qSP                   SP                  ,          9   x  K&  	  R # 5ir  )r&  r!  )r  rI  rA  r   s   & r{   r  =DreameMapVacuumMapEditor.set_segment_order.<locals>.<genexpr>  s&     u\tWX!A!A(//!RR\ts   ,/FTc                (    V ^,          P                   # r  r  r  s   &r{   r  <DreameMapVacuumMapEditor.set_segment_order.<locals>.<lambda>  r  r~   r  c                (    V ^,          P                   # r  r  r  s   &r{   r  r    r  r~   N)r   r  r  r  r!  r&  r   rG  r  r  r  r  r  r   r  r   rE  rF  r+  r   r1  )	r   r  r  r  r  rI  current_orderrJ  rA  s	   f&&     @r{   set_segment_order*DreameMapVacuumMapEditor.set_segment_order  s   >>8)))jH<M<M.MV^VlVlVlqy ))*5;;; 4+K+KKD<<X__MNRUV^VgVgVmVmVoRppu\d\m\m\r\r\tuu\d\m\m\r\r\tuuu(,(B(B4CcCcdldsdsCt(u%88I,, 1 1 6 6 89A#,,Q/5555:))!,27?7H7H7K7Q7Q))#a&1!4!AIE	 : !) 1 1* = C C ):?H%%j17<AH%%c*o6q9 ( 1 1 7 7 9?qww%/?9FH--a06;C;L;LQ;O;U;UH--c!f5a8 !:
 "**113Awww,283D3D3J3J3LRf,gM,gDAklkrkrQQ,gM88I  4 "**//1A12H%%a(.34H%%c!f-a0 2 ###4;O;O(OAExO`O`Aa$$X__5>&&x'8'81'<=$*8+<+<+B+B+DJ^$_k$_DAcdcjcjQQ$_kkY Wm.M)8<M ls   
T%T*TTc                    V ^8  d   QhRRRR/# )ru   rA  r$   rw   list[list[int]] | Nonery   )rz   s   "r{   r|   r$    s       -C r~   c                	   . pVP                   P                  4        F  w  r4VP                  f   ^Vn        VP                  f   ^Vn        VP                  f   ^Vn        VVP                  VP                  ^,           VP                  .pVP
                  e   VP                  VP
                  4       VP                  V4       K  	  V# r  )r  rG  suction_levelwater_volumecleaning_timescleaning_moder  )r   rA  r  rI  rJ  settingss   &&    r{   r  !DreameMapVacuumMapEditor.cleanset  s    %%++-DA&"#~~%!"'#$  "  	H *0OOH%% .& r~   c               $    V ^8  d   QhRRRRRR/# )ru   r  r   r  rw   r  ry   )rz   s   "r{   r|   r$    "     	+ 	+C 	+ 	+Pf 	+r~   c                	p   V P                   pV'       Ed!   VP                  '       Ed   WP                  9   d   VP                  '       g   W#P                  V,          n        W#P                  \        V4      ,          ^ &   V P                  '       d\   VP                  V P                  9   dA   \        P                  ! VP                  4      V P                  VP                  ,          n        V P                  VP                  ^,           4       V P                  4        V P	                  V4      # R# R# R# R# r   N)r   r  r  r  r  r   r   r!  rE  rF  r+  r   r1  )r   r  r  rA  s   &&& r{   set_segment_suction_level2DreameMapVacuumMapEditor.set_segment_suction_level      >>8)))j<M<M.MV^VlVlVl:Gj)74Ac*o.q1###4;O;O(OAExO`O`Aa$$X__5>&&x'8'81'<===** Wm.M)8r~   c               $    V ^8  d   QhRRRRRR/# )ru   r  r   r  rw   r  ry   )rz   s   "r{   r|   r$  %  s"     	+ 	+3 	+c 	+Nd 	+r~   c                	X   V P                   pV'       Ed   VP                  '       Ed    WP                  9   d   W#P                  V,          n        V^,           VP                  \	        V4      ,          ^&   V P
                  '       d\   VP                  V P
                  9   dA   \        P                  ! VP                  4      V P
                  VP                  ,          n        V P                  VP                  ^,           4       V P                  4        V P                  V4      # R# R# R# r  )r   r  r  r  r   r   r!  rE  rF  r+  r   r1  )r   r  r  rA  s   &&& r{   set_segment_water_volume1DreameMapVacuumMapEditor.set_segment_water_volume%  s    >>8)))j<M<M.M9Ej)64@14DHc*o.q1###4;O;O(OAExO`O`Aa$$X__5>&&x'8'81'<===** /N)8r~   c               $    V ^8  d   QhRRRRRR/# )ru   r  r   r  rw   r  ry   )rz   s   "r{   r|   r$  0  s"     	+ 	+S 	+# 	+Rh 	+r~   c                	p   V P                   pV'       Ed!   VP                  '       Ed   WP                  9   d   VP                  '       g   W#P                  V,          n        W#P                  \        V4      ,          ^&   V P                  '       d\   VP                  V P                  9   dA   \        P                  ! VP                  4      V P                  VP                  ,          n        V P                  VP                  ^,           4       V P                  4        V P	                  V4      # R# R# R# R# r  )r   r  r  r  r  r   r   r!  rE  rF  r+  r   r1  )r   r  r  rA  s   &&& r{   set_segment_cleaning_times3DreameMapVacuumMapEditor.set_segment_cleaning_times0  s    >>8)))j<M<M.MV^VlVlVl;Ij)84Bc*o.q1###4;O;O(OAExO`O`Aa$$X__5>&&x'8'81'<===** Wm.M)8r~   c               $    V ^8  d   QhRRRRRR/# )ru   r  r   r  rw   r  ry   )rz   s   "r{   r|   r$  ;  r  r~   c                	p   V P                   pV'       Ed!   VP                  '       Ed   WP                  9   d   VP                  '       g   W#P                  V,          n        W#P                  \        V4      ,          ^&   V P                  '       d\   VP                  V P                  9   dA   \        P                  ! VP                  4      V P                  VP                  ,          n        V P                  VP                  ^,           4       V P                  4        V P	                  V4      # R# R# R# R# )   N)r   r  r  r  r  r   r   r!  rE  rF  r+  r   r1  )r   r  r  rA  s   &&& r{   set_segment_cleaning_mode2DreameMapVacuumMapEditor.set_segment_cleaning_mode;  r  r~   c               (    V ^8  d   QhRRRRRRRR/# )ru   r  r   segment_typer  r   rw   r   ry   )rz   s   "r{   r|   r$  F  s0     @$ @$3 @$c @$PS @$_t @$r~   c                	   V P                   pV'       EdX   VP                  '       EdC   WP                  9   Ed0   V P                  '       Ed   VP                  '       Eg   \	        V4      pVP                  V,          P
                  V8w  g$   VP                  V,          P                  V8w  Ed   / pW$P                  V,          n        V^ 8X  d>   ^ VP                  V,          n        Ve!   VR8X  d   RpW4P                  V,          n        MZRVP                  V,          n        VP                  V,          P                  W$P                  4      VP                  V,          n        VP                  V,          P                  4        VP                  V,          P                  V P                  V P                  ,          P                  V,          n        VP                  V,          P                  V P                  V P                  ,          P                  V,          n        VP                  V,          P
                  V P                  V P                  ,          P                  V,          n        V P                  V P                  ,          P                  V,          P                  4        V P                  V P                  4       VP                  P                  4        EFG  w  rgVP                  V,          P                  ee   \        \        P                  ! VP                  V,          P                  P!                  R4      4      P#                  R4      \$        ^ \&        ^ /WV&   MnVP                  V,          P
                  '       dH   \$        VP                  V,          P
                  \&        VP                  V,          P                  /WV&   M/ WV&   VP                  V,          P(                  '       g   EK  VP                  V,          P(                  WV,          \*        &   EKJ  	  V P-                  VP.                  ^,           4       V P                  4        V# R# R# R# R# R# R# )r   Nr   utf-8)r   r  r   r  r   typer  r  next_type_indexset_namer   r1  rG  r5   base64	b64encodeencoder   rN   rO   	unique_idrP   r+  r   )r   r  r  r  rA  segment_inforI  rJ  s   &&&&    r{   set_segment_name)DreameMapVacuumMapEditor.set_segment_nameF  s~   >>H!!!///%%%***|,L!!*-22lB$$Z0<<K!5A!!*-21$:;H%%j17".&",*.KDO))*5A@DH%%j1=:B:K:KJ:W:g:g$&7&7;H%%j17 !!*-668_g_p_p`+ $$T%:%:;DDZP\ ZbYjYjZ% $$T%:%:;DDZPV YaXiXiY$ $$T%:%:;DDZPU $$T%:%:;DDZPYY[  !6!67$--335DA((+77C.0@0@ ( 1 1! 4 @ @ G G P1$fWo67+ "**1-22268I8I!8L8Q8Q79J9J19M9S9S+
 +-((+555IQIZIZ[\I]IgIg(EF% 6( **8+<+<q+@A  "##i L + & 0 " r~   c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   r$    s     ; ; ;r~   c                	d   V P                   pV'       d   V P                  '       g   R # . Vn        V'       d   V F  p\        V^ ,          V^,          .4      p\        V^,          V^,          .4      pVP                  P	                  \        V^ ,          V^ ,          V^,          V^ ,          V^,          V^,          V^ ,          V^,          4      4       K  	  . Vn        V'       d   V F  p\        V^ ,          V^,          .4      p\        V^,          V^,          .4      pVP                  P	                  \        V^ ,          V^ ,          V^,          V^ ,          V^,          V^,          V^ ,          V^,          4      4       K  	  V'       dA   V Uu. uF-  p\        V^ ,          V^,          V^,          V^,          4      NK/  	  upVn        M. Vn        VP                  V P                  V P                  ,          n        VP                  V P                  V P                  ,          n        VP                  V P                  V P                  ,          n        V P                  VP                  ^,           4       V P                  V P                  4       V P                  4        R # u upi r  )r   r   r  r  r  r(   r  r)   r  r   r+  r   r1  )	r   r  r  r  rA  r6  r7  r8  walls	   &&&&     r{   	set_zones"DreameMapVacuumMapEditor.set_zones  s9   >>t444$&!(!47DG"45!47DG"45))00        	 )   "#!47DG"45!47DG"45$$++        	 $   " "D GGGG	 "HN  HNBJBVBVT223?GOG`G`T223D<DNNT2239""8#4#4q#89../#s   3J-c                   V ^8  d   QhRR/# rM  ry   )rz   s   "r{   r|   r$    s     * *> *r~   c                	.    V P                   P                  # r  )r'  r   r   s   &r{   r   "DreameMapVacuumMapEditor._map_data  s    )))r~   c                   V ^8  d   QhRR/# rM  ry   )rz   s   "r{   r|   r$    s     0 0 0r~   c                	.    V P                   P                  # r  )r'  r   r   s   &r{   r   (DreameMapVacuumMapEditor._saved_map_data  s    ///r~   c                   V ^8  d   QhRR/# ru   rw   
int | Nonery   )rz   s   "r{   r|   r$    s     1 1* 1r~   c                	.    V P                   P                  # r  )r'  r   r   s   &r{   r   )DreameMapVacuumMapEditor._selected_map_id  s    000r~   c                   V ^8  d   QhRR/# r  ry   )rz   s   "r{   r|   r$    s     6 6z 6r~   c                	.    V P                   P                  # r  )r'  r   r   s   &r{   r   .DreameMapVacuumMapEditor._current_timestamp_ms  s    555r~   )r&  r   r   r'  r  )'r  r  r  r  __doc__r   r+  r1  r9  r>  rC  rH  rO  rS  rW  r\  r[  re  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r!  ry   r~   r{   r   r     s    X'66,
%)*5:")H%55
#<1#lJ.l`.	+	+	+	+@$D;z * * 0 0 1 1 6 6r~   r   c                     ] tR tRt^t]R&R R ll4       t]R&R R ll4       t]R&R R ll4       t]R&R R	 ll4       t	]R
 R l4       t
]R R l4       t]R'R R ll4       t]R R l4       t]R(R R ll4       t]R)R R ll4       t]R*R R ll4       t]R&R R ll4       t]R R l4       t]R R l4       t]R R  l4       t]R! R" l4       t]R# R$ l4       tR%tR# )+ro  i  c               $    V ^8  d   QhRRRRRR/# ru   r   ro  offsetr   rw   ry   )rz   s   "r{   r|   #DreameVacuumMapDecoder.__annotate__  s&     W W% W WS Wr~   c                	D    \         P                  WV^,            RRR7      # )r  bigT	byteordersignedr   
from_bytesr   r  s   &&r{   _read_int_8"DreameVacuumMapDecoder._read_int_8  !    ~~dFQJ75QU~VVr~   c               $    V ^8  d   QhRRRRRR/# r  ry   )rz   s   "r{   r|   r    s&     Z ZU ZC Z Zr~   c                	D    \         P                  WV^,            RRR7      # )r  littleTr  r  r  s   &&r{   _read_int_8_le%DreameVacuumMapDecoder._read_int_8_le  !    ~~dFQJ78TX~YYr~   c               $    V ^8  d   QhRRRRRR/# r  ry   )rz   s   "r{   r|   r    s&     W W5 W# Wc Wr~   c                	D    \         P                  WV^,            RRR7      # )ru   r  Tr  r  r  s   &&r{   _read_int_16#DreameVacuumMapDecoder._read_int_16  r   r~   c               $    V ^8  d   QhRRRRRR/# r  ry   )rz   s   "r{   r|   r    s&     Z Ze ZS Z Zr~   c                	D    \         P                  WV^,            RRR7      # )ru   r  Tr  r  r  s   &&r{   _read_int_16_le&DreameVacuumMapDecoder._read_int_16_le  r  r~   c               $    V ^8  d   QhRRRRRR/# )ru   r1r*   r2rw   r   ry   )rz   s   "r{   r|   r    s!      w G  r~   c                	    ^ p^ pV P                   '       d   \        V P                   4      pVP                   '       d   \        VP                   4      pW#8X  d   V P                  VP                  ,
          # W2,
          # r  )ri  r   r  )r  r  alenblens   &&  r{   _compare_segment_neighbors1DreameVacuumMapDecoder._compare_segment_neighbors  sZ    <<<r||$D<<<r||$D<==2==00{r~   c               $    V ^8  d   QhRRRRRR/# )ru   c1r<  c2rw   r   ry   )rz   s   "r{   r|   r    s&     B BI B9 B Br~   c                	    V ^,          V^,          8w  d   V ^,          V^,          ,
          # V ^ ,          V^ ,          ,
          # r  ry   )r  r  s   &&r{   _compare_colors&DreameVacuumMapDecoder._compare_colors  s3     "1Ar!ur!u}ABqEBqEMAr~   c               $    V ^8  d   QhRRRRRR/# )ru   rA  r$   	vslam_mapr   rw   r&   ry   )rz   s   "r{   r|   r    s!     +* +*' +*T +*l +*r~   c                	   V P                   '       d   V^,	          p^ Tu;8  d   ^@8  di   M MeV^?8X  d   \        P                  P                  # V^>8X  d   \        P                  P                  # V^=8X  d   \        P
                  P                  # V# V^?,          pV^8X  g   V^8X  d   \        P                  P                  # V^8X  d   \        P                  P                  #  \        P                  P                  # V'       d   V^,          pV^8X  d   \        P                  P                  # V^8X  d   \        P                  P                  # V^8X  d   \        P                  P                  #  \        P                  P                  # V^,	          '       d   \        P                  P                  # V^?,          pV^ 8  d   V P                  ^8X  g   V P                  ^ 8X  dd   V^8X  g   V^8X  d   \        P                  P                  # V^8X  d   \        P                  P                  # \        P                  P                  # V# \        P                  P                  # )ru   )
	frame_mapr&   WALLr   FLOORUNKNOWNNEW_SEGMENTNEW_SEGMENT_UNKNOWNr  OUTSIDE)rA  pixelr  r  s   &&& r{   _get_pixel_type&DreameVacuumMapDecoder._get_pixel_type  s   !J:""#',,222#'--333#'//555!!JQ*/#//555Q#((... 4 ##)))1 +JQ#//555q#77===q#((... !$ ##))) zz#((...JA~,,1X5N5NRS5S!Q*/+77===!Q+00666'//555!!##)))r~   c               (    V ^8  d   QhRRRRRRRR/# )ru   r  r   centerverticalr   rw   r  ry   )rz   s   "r{   r|   r  *  s)     , ,# ,s ,d ,Wa ,r~   c                	2   . pRp^ pRp\        V'       d   V P                  P                  MV P                  P                  4       F  pV P                  V'       d$   WP                  P                  ,          V,           M"W P                  P                  ,          V,           ,          ^?,          p	W8X  d   Tp^ pVf   V.pK|  K~  V	^ 8X  dH   V^ 8  d?   V^,           pV^8  d-   Ve'   VP                  V4       VP                  V4       RpK  K  K  K  Vf   K  VP                  V4       VP                  V4       RpK  	  Ve%   VP                  V4       VP                  V4       RpV'       d   V^ ,          p
\        V4      ^8  dF   VR,           F8  pV^,          V^ ,          ,
          V
^,          V
^ ,          ,
          8  g   K6  Tp
K:  	  \        \        P                  ! V
^,          V
^ ,          ,
          ^,          V
^ ,          ,           4      4      # R# )r  Nr  NNrd  )
rn  r  rN  rM  r   r  r   r   r   ceil)rA  r  r+  r,  lineszero_pixelssegment_pixelrz  rI  r  maxLineitems   &&&&        r{   _get_segment_center*DreameVacuumMapDecoder._get_segment_center)  s    Xx**118CVCVC\C\]A@HQ,,222V;vXkXkXqXqOqtuOu   ' !<)?D  q!#"-/K"a'D,<M2T*# -=' $ !M*T"- ^0 KK&LLDAhG5zA~!"IIDAwa(71:
+BB"& & tyy'!*wqz"9Q!>!KLMMr~   Nc                   V ^8  d   QhRR/# rm  ry   )rz   s   "r{   r|   r  Y  s     3 3:O 3r~   c                	l   \         P                  R V 4       V P                  RR4      P                  RR4      p RV 9   d(   Vf$   V P                  R4      pV^,          pV^ ,          p \        P
                  ! V P                  R4      4      p Ve   Vf   Rp \        P                  ! VP                  4       4      P                  4       R	,          P                  R4      p\        \        P                  ! V4      \        P                  ! VP                  R4      4      \        4       R
7      pVP!                  4       pVP#                  V 4      VP%                  4       ,           p  \*        P,                  ! V 4      p V '       d   \/        V 4      \0        P2                  8  d   \         P)                  R4       R#  \5        4       p\0        P7                  T 4      Tn        \0        P7                  T ^4      Tn        \0        P=                  T ^4      Tn        Yn         \0        P2                  \0        P7                  T ^4      \0        P7                  T ^4      ,          ,           p\/        T 4      T8  d_    \B        PD                  ! YR PG                  R4      4      p	T	PI                  R4      '       d   \K        T	R,          4      Tn&        Yn'        T# T#   \&         d%   p\         P)                  RT R24        Rp?R# Rp?ii ; i  \&         d"   p\         P)                  RT4        Rp?R# Rp?ii ; i    T# ; i)zraw_map: %s_/-+r   Nutf8r   :r       N)backendzMap data decryption failed: z. Private key might be missing, please report this issue with your device model https://github.com/Tasshack/dreame-vacuum/issues/new?assignees=Tasshack&labels=bug&template=bug_report.md&title=Map%20data%20decryption%20failedzWrong header size for mapz!Map data decompression failed: %srq  )(r   r4  r   r  r  decodebytesr  hashlibsha256	hexdigestr   r   AESr   CBCr   	decryptorr9  finalizer  rj  zlib
decompressr   ro  HEADER_SIZEr#   r  r!  r   r  r   rawr   r   r   r   r   rq  	data_json)
rr  ivr   r  cipherrF  r  r   
image_sizerL  s
   &&&       r{   rp  )DreameVacuumMapDecoder.decode_map_partialX  s   mW-//#s+33C='>ck]]3'F)CQiG$$W^^F%;<?z	nnSZZ\2<<>tDKKFS
s 3UYYryy?P5Q[j[lm",,.	#**73i6H6H6JJ	oog.Gc'l-C-O-OO9: P %&3CCGL5EEgqQ!7!C!CGQ!O!+77"227B?BXBhBhiprtBuu

 w<:% JJw{';'B'B6'JK	==00/29^3L/MK,(1% {A  22$  7W  X 	  	MM=rB	&sD   CK #K? 3K? .AL. K<K77K<?L+
L&&L+.L3c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )ru   rr  r   r  r   r  r   rM  r   rw   z!Tuple[MapData, Optional[MapData]]ry   )rz   s   "r{   r|   r    s<     
 

!%
14
>A
OR
	*
r~   c                	V    \         P                  \         P                  WV4      W4      # r  )ro  r  rp  )rr  r  r  rM  r   s   &&&&&r{   
decode_map!DreameVacuumMapDecoder.decode_map  s)     &BB"55g3G
 	
r~   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
ru   rr  r   r  r   r  r   rM  rw   rN  ry   )rz   s   "r{   r|   r    s7     V V# V$ V# Vs V^l Vr~   c                	<    \         P                  WW#4      ^ ,          # r  )ro  rS  )rr  r  r  rM  s   &&&&r{   r  'DreameVacuumMapDecoder.decode_saved_map  s    %00XRSTUUr~   c               (    V ^8  d   QhRRRRRRRR/# )	ru   r   r#   r  r   r  r   rw   rN  ry   )rz   s   "r{   r|   r    s2     K( K(#K(04K(@CK(	K(r~   c                	2   V f   R # \        4       pV P                  Vn        V P                  Vn        V P                  Vn        V P                  Vn        V P
                  p\        \        P                  V^4      \        P                  V^4      \        P                  V^	4      4      Vn	        \        \        P                  V^4      \        P                  V^4      \        P                  V^4      4      Vn
        \        P                  V^4      p\        P                  V^4      p\        P                  V^4      p\        P                  V^4      p\        P                  V^4      p	\        P                  Wg,          ,           p
\        WWvV4      Vn        V P                  pVf   / p\        P!                  RV4       W#n        RV9   d   \%        VR,          4      Vn        RV9   d   \%        VR,          4      Vn        RV9   d   \%        VR,          4      Vn        RV9   d   \%        VR,          4      Vn        \-        VP/                  R4      ;'       d
    VR,          4      Vn        \-        VP/                  R4      ;'       d
    VR,          4      Vn        \-        VP/                  R4      ;'       d    VR,          ^8H  4      Vn        \-        VP/                  R	4      ;'       d    VR	,          ^8H  4      Vn        R.Vn        R
V9   d   VR
,          Vn        \-        VP/                  R4      ;'       d    VR,          R8H  4      Vn        \-        VP/                  R4      ;'       d    VR,          ^8H  4      Vn        \-        RV9   ;'       d    VR,          ^ 8H  4      Vn        \-        VP/                  R4      ;'       d<    VR,          ^8H  ;'       g    VR,          ^8H  ;'       d    VP/                  R4      R J 4      Vn         \-        VP                  \B        PD                  PF                  8H  ;'       d[    VP6                  '       * ;'       dB    VP4                  '       * ;'       d)    VP8                  R.8H  ;'       d    VP:                  '       * 4      Vn$        VP/                  R4      '       d   VR,          '       g   VP                  PJ                  R8X  d   R Vn
        VP/                  R4      '       d   VR,          '       g   VP                  PJ                  R8X  d   R Vn	        VPH                  '       g   VP<                  '       g   ^ Vn&        VP/                  R4      '       Ed   \N        PP                  ! R4      PS                  VR,          4       Uu. uF  pVPU                  4       NK  	  pp\        ^ ^ 4      p. Vn+        V F  pVR,          p\%        VR,          4      p\%        VR,          4      pVR8X  d?   \Y        VPZ                  V,           VP\                  V,           \^        P`                  4      pMVR8X  d   Rp\Y        VV\_        V4      4      pVPV                  Pc                  V4       K  	  VP/                  R4      '       dC   \e        VR,          \f        4      '       d&   VR,           Uu. uF  pV^ ,          NK  	  upVn4        VP/                  R4      '       d   VR,          P/                  R4      '       d   . Vn5        VR,          R,           F  p\m        V^ ,          V^,          .4      p\m        V^,          V^,          .4      pVPj                  Pc                  \o        V^ ,          V^ ,          V^,          V^ ,          V^,          V^,          V^ ,          V^,          4      4       K  	  VP/                  R4      '       dK   . Vn8        VR,           F6  pVPp                  Pc                  \        V^ ,          V^,          4      4       K8  	  RV9   dT   VR,          Vn9        \e        VPr                  \t        4      '       d&   \v        Px                  ! VPr                  4      Vn9        RV9   Edv   . Vn=        VR,           EF`  p\}        V4      ^8  g   K  \%        V^,          4      pV\~        P                  9   g   K?  \}        V4      ^8  d   \%        V^,          4      R 8  d   VPz                  Pc                  \        \        V^ ,          4      \        V^,          4      \        V4      \%        \        V^,          4      ^d,          4      V^,          V^,          V^,          4      4       K  VPz                  Pc                  \        \        V^ ,          4      \        V^,          4      \        V4      \%        \        V^,          4      ^d,          4      4      4       EKc  	  VP                  \B        PD                  PF                  8H  VnC        Wg,          ^ 8  Ed<   V\        P                  V
 VnD        \-        V^8H  ;'       d    V^8H  4      VnC        VP                  '       dU   \        V4       FE  p\        V4       F3  pVP                  VV,          V,           ,          ^ 8  g   K+  R!VnC         KC  	  KG  	  \        P                  ! Wg3\        P                  PF                  \        P                  R"7      VnK        VP                  '       EgF   VP                  \B        PD                  PF                  8X  Ed   VP4                  '       Ed   \        V4       EF  p\        V4       EFo  pVP                  VV,          V,           ,          pV^ 8  g   K.  R!VnC        V^,	          p^ Tu;8  d   ^@8  d   M MV^?8X  d,   \        P                  PF                  VP                  VV3&   K  V^>8X  d,   \        P                  PF                  VP                  VV3&   K  V^=8X  d,   \        P                  PF                  VP                  VV3&   K  VVP                  VV3&   K  V^?,          pV^8X  g   V^8X  d-   \        P                  PF                  VP                  VV3&   EK<  V^8X  g   EKF  \        P                  PF                  VP                  VV3&   EKr  	  EK  	  EMVP8                  ^8X  g   VP8                  ^ 8X  d   \        V4       F  p\        V4       F  pVP                  VV,          V,           ,          ^?,          pV^8X  g   V^8X  d3   R!VnC        \        P                  PF                  VP                  VV3&   Kk  V^8X  g   Kt  R!VnC        \        P                  PF                  VP                  VV3&   K  	  K  	  EMV'       Ed   VPH                  '       g   \        V4       F  p\        V4       F  pVP                  VV,          V,           ,          ^,          pV^8X  d3   R!VnC        \        P                  PF                  VP                  VV3&   Kd  V^8X  d3   R!VnC        \        P                  PF                  VP                  VV3&   K  V^8X  g   K  R!VnC        \        P                  PF                  VP                  VV3&   K  	  K  	  M\        V4       F  p\        V4       F  pVP                  VV,          V,           ,          pV^ 8  g   K-  R!VnC        V^,	          '       d,   \        P                  PF                  VP                  VV3&   Kn  V^?,          pV^ 8  g   K  VVP                  VV3&   K  	  K  	  \        P                  W14      pV'       Ed   VP/                  R#4      '       Ed   VR#,          pVP                  4        EFj  w  ppVP/                  \u        V4      4      '       g   K)  V\u        V4      ,          p V P/                  R$4      '       d   V R$,          VV,          nS        V P/                  R%4      '       d   \%        V R%,          4      VV,          nT        V P/                  R&4      '       d   V R&,          VV,          n&        V P/                  R'4      '       d   V R',          VV,          nU        V P/                  \        4      '       dE   \        P                  ! V P/                  \        4      4      P                  R(4      VV,          nZ        VV,          P                  4        EKm  	  VVn\        R p!VP6                  p"VP/                  R)4      '       Ed8   \        P                  VR),          VVP"                  4      p!V!Ee   VP                  V!n        V!P                  Vn^        V!P@                  '       d   V!P@                  Vn         V"'       g6   VP<                  '       g$   VP8                  ^8X  d   VP                  '       d}   \        P                  ! V!P                  4      Vn\        V!P                  VnD        V!P                  VnK        V!P                  Vn        VP                  '       d   R!Vn        Rp"R!VnC        EMV!P                  Ee   VP                  f*   VP8                  ^8X  g   VP8                  ^ 8X  d   / Vn\        V!P                  P                  4        EFt  w  ppVP                  '       g   K  VVP                  9   g   K.  VP                  VP                  V,          na        VP                  VP                  V,          nb        VP                  VP                  V,          nZ        VP                  VP                  V,          nT        VPL                  VP                  V,          n&        VP                  VP                  V,          nU        VP                  VP                  V,          nS        VP8                  ^8X  g   EK0  VPZ                  VP                  V,          n-        VP\                  VP                  V,          n.        EKw  	  V!Pr                  '       g&   \        P                  ! VPr                  4      V!n9        VP8                  ^8X  g   VP0                  '       dD   VP                  f6   VPH                  '       g$   V!P                  '       d   V!P                  Vn
        VP8                  ^8X  d   V!P                  Vnc        V!P                  Vnd        V!P                  Vne        V'       dK   \        P                  ! V!P                  4      Vn\        \        P                  ! V!P                  4      Vn
        VPH                  '       gX   VP                  fJ   VP0                  '       d8   VP                  '       d&   \        P                  ! VP                  4      Vn	        VP                  '       d   VPH                  '       g5   \        P                  W3Pr                  4       \        P                  V4       VP8                  ^8X  g   VPH                  '       d   \        P                  V4       VP/                  R*4      '       EdL   VR*,          P/                  R+4      '       d   VP                  '       g   . Vnc        VR*,          R+,           F  p\m        V^ ,          V^,          .4      p\m        V^,          V^,          .4      pVP                  Pc                  \o        V^ ,          V^ ,          V^,          V^ ,          V^,          V^,          V^ ,          V^,          4      4       K  	  VR*,          P/                  R,4      '       d   VP                  '       g   . Vnd        VR*,          R,,           F  p\m        V^ ,          V^,          .4      p\m        V^,          V^,          .4      pVP                  Pc                  \o        V^ ,          V^ ,          V^,          V^ ,          V^,          V^,          V^ ,          V^,          4      4       K  	  VR*,          P/                  R-4      '       d`   VP                  '       gN   VR*,          R-,           U#u. uF-  p#\        V#^ ,          V#^,          V#^,          V#^,          4      NK/  	  up#Vne        V'       d   VPH                  '       g   V"'       * Vnj        VV!3# u upi u upi u up#i )/NzMap Data Json: %smra
robot_modemap_used_timescsocl2rfsmrpurris
iscleanlogTusrispsuwnc  nrtrz.(?P<operator>[MWSLl])(?P<x>-?\d+),(?P<y>-?\d+)operatorrq  rr  Llsada2areasspr  ai_obstacler   Fdtypeseg_infnei_idr  r  roomIDr  rismvwrectmoprz  rd  )kr$   r!  r   r   rq  rK  r!   ro  r  r~  r  rJ  r+   r  rL  r   r4  r  r   r[  
used_timescleaned_arear   r   r  r_  r   r|  r  	clean_logr  r  r  r%   r   r   r  ar  recompilefinditer	groupdictr  r'   rq  rr  r    LINEr  
isinstancelistr  r  r  r(   r  r  r   r   r   	obstaclesr   r   _value2member_map_r"   r  r  r   rn  rk  fullr&   r&  rm  r  r!  r"  r#  r$  r%  rp  rG  ri  r  r  r5   r  	b64decoder   r  r  r  r  r  rE  rF  iconr   r  r  r  r`  set_robot_segmentrt  r)   r  )$r   r  r  rA  rK  	grid_sizerM  rN  lefttoprO  rL  mmatchescurrent_positionmatchrk  rq  rr  rn  r6  r7  r8  rB  obstacleobstacle_typer'  r  r  ru  rI  rJ  r  r  r|  virtual_walls$   &&&                                 r{   r  3DreameVacuumMapDecoder.decode_map_data_from_partial  s    9%,,'00)44 + 8 8oo"'"223:"223:"223:#

 %*"223;"223;"223;%
! +::3C	&66sB?'77R@%55c2>$44S"=+77%.H
0F9U))	I)95$I #Ie$4 5H9$"%i&=">Hy("%i0@&A"BH9$'	$$8H!y}}T2FFyGIMM%0EEYu5EF!)--"6"P"P9U;Kq;PQ $Y]]6%:%U%Uy?PTU?U V$&!I(1%(8H%!)--"="a"a)LBY]aBab $Y]]4%8%Q%QYt_PQ=Q R) 3 N N	&8IQ8NO!%MM% vvi&6!&;&T&Ty?OST?TvvZcZgZghmZnrvZv"
 "<>>#7#77 ' ')))' '&&&' ' ))R/' ' &&&
 MM$IdOO8Q8Q8S8SW\8\(,H%MM$IdOO8O8O8Q8QUZ8Z&*H#!!!(*?*?*?HN== $UV__`ijn`oppA p    %Q{HM  ,c
Oc
Os?'+,<,>,>,BDTDVDVYZDZ\d\i\i'j$  3#&'+Aq(82D'E$$$%56 !  ==:iot#D#D8A$'H"1'HH$==##G,,(*%%e,W55D%tAwQ&89H%tAwQ&89H))00$QK$QK$QK$QK$QK$QK$QK$QK	 6  ==%'H""4&&--eE!HeAh.GH ) " )* 5H(++S11$(JJx/@/@$A!I%!#H%m44x=A%$'$4M$(G(GGx=A-#hqk2Bd2J$..55 ($)(1+$6$)(1+$6$0$?$'hqk(:S(@$A$,QK$,QK$,QK!"
 %..55 ($)(1+$6$)(1+$6$0$?$'hqk(:S(@$A	!"# 54 &00LNN4H4HHNa 6 B BZPHM!%eqj&@&@Vq[!AH!!!vA"5\#==%!)q9A=16H.! * ' #%''5/<;O;O;U;U]_]e]e"fH%%%&&,..*>*>>)))!&vA%*5\(0uqyAo(F#(199>H$616!J'(:':':+5+;HTHYHYH_H_H,?,?1,E-72-=HTHZHZH`H`H,?,?1,E-72-=HTH\H\HbHbH,?,?1,EHRH,?,?1,E5:T\
+5?jAoHTH`H`HfHfH,?,?1,E-71_HTHYHYH_H_H,?,?1,E' &2 "/* "22a78;T;TXY;Y!&vA%*5\-5]]EAI?-Kd-R
#-?jAo9>H$6@L@X@X@^@^H$7$71$=%/1_9>H$6@L@Q@Q@W@WH$7$71$= &2 "/ #8+=+=+=!&vA%*5\-5]]EAI?-Kj-X
#-?9>H$6@L@X@X@^@^H$7$71$=%/1_9>H$6@L@`@`@f@fH$7$71$=%/1_9>H$6@L@Q@Q@W@WH$7$71$= &2 "/ "'vA%*5\(0uqyAo(F#(199>H$6',zzDPDUDUD[D[(;(;AqD(A5:T\
+5>HRH,?,?1,E &2 "/  6BB8WHxIMM)$<$<"+I"6$,NN$4DAq&{{3q622/6s1v#/#3#3H#=#=<H<RHQK$9#/#3#3F#;#;7:<;O7PHQK$4#/#3#3G#<#<8DW8MHQK$5#/#3#3H#=#=<H<RHQK$9#/#3#34F#G#G>D>N>N(4(8(89K(L?&&,fWo %-QK$; !) 4 4 6 %5" )1H%,,==  3DD&!!!N ).6.C.C+(6(=(=%!///-;-I-IH*8#8#8#8X=V=VZ[=[`h`r`r`r(,n6M6M(NH%$2$7$7HM*8*C*CH'*8*C*CH')))05-'+-2*%..:#,,4$55:h>W>W[\>\02H-$2$;$;$A$A$CDAq'000Q(:K:K5K<=FF 1 1! 4 9<=FF 1 1! 4 9CD== 1 1! 4 @<=FF 1 1! 4 9=>WW 1 1! 4 :AB 1 1! 4 >AB 1 1! 4 >#+#<#<#A=>SSH$5$5a$8$:=>SSH$5$5a$8$: %D &....2mmH<M<M.NN+ ..!3x 119$...&7770>0O0OH-,,1+9+E+EH(0>0O0OH-%3%9%9HN ,0MM.:Q:Q,R)48MM.BaBa4b1 """''/)))&*mmH4M4M&NH#%%%&;;HFWFWX&88B((A-1C1C1C&>>xH==""6**83G3G3G')$%dOF33D%tAwQ&89H%tAwQ&89H((//$QK$QK$QK$QK$QK$QK$QK$QK	 4  ""5))(2K2K2K,.)%dOE22D%tAwQ&89H%tAwQ&89H--44$QK$QK$QK$QK$QK$QK$QK$QK	 3  ""6**8>>> )2$(?" )@ $Q$Q$Q$Q	 )@" X///-9)9H&''o	. (If"s   )Ae!Ae&c<3Ae+c               (    V ^8  d   QhRRRRRRRR/# )	ru   r   r#   current_map_datar$   r  r   rw   rN  ry   )rz   s   "r{   r|   r  )	  s2     m  m #m 7>m KOm 	m r~   c           	     	t   V P                   \        P                  P                  8w  d   R # \        P                  V V4      w  r4Vf   R # VP                  Vn        VP                  Vn        VP                  Vn        VP                  Vn	        VP                  Vn
        RVn        RVn        RVn        RVn        RVn        VP                   e+   V'       d   VP"                  ^8w  d   VP                   Vn        VP$                  e   VP$                  Vn        VP&                  '       Ed   VP(                  pVP(                  pVP*                  p\-        VP.                  VP.                  4      p\-        VP0                  VP0                  4      p	\3        VP.                  VP4                  V,          ,           VP.                  VP4                  VP*                  ,          ,           4      p
\3        VP0                  VP6                  V,          ,           VP0                  VP6                  VP*                  ,          ,           4      p\9        W,
          V,          4      p\9        W,
          V,          4      p\:        P<                  ! W,          \:        P>                  4      p\:        P@                  ! W3\B        PD                  P                  \:        P>                  R7      p\9        VP.                  V,
          VP*                  ,          4      p\9        VP0                  V	,
          VP*                  ,          4      p\G        VP6                  4       F  p\G        VP4                  4       Ft  pVP&                  VP4                  V,          V,           ,          WVV,           ,          V,           V,           &   VPH                  VV3,          VVV,           VV,           3&   Kv  	  K  	  \9        VP.                  V,
          V,          4      p\9        VP0                  V	,
          V,          4      p\G        VP6                  4       F  p\G        VP4                  4       F  pVP4                  V,          V,           pVP&                  V,          '       g   K8  VVV,           ,          V,           V,           pVV,          VP&                  V,          ,           VV&   \        PK                  V\9        VV,          4      V4      VVV,           VV,           3&   K  	  K  	  \M        V4      Vn        Wn$        \O        WWV4      Vn        V'       d   RVn(        VPR                  '       dJ   VPR                  '       d'   VPR                  PU                  VPR                  4       MVPR                  Vn)        \        PW                  V4       V# )NFrs  T),r   r%   r  r   ro  r  r   r~  rq  r  r  r  r  r|  r  r~  r  r  r  r   r  r  minr  r  r;  rM  rN  r   rk  rl  rm  r  r&   r&  rn  r  r(  ro  r+   r  r  extendr  )r   r  r  rA  r  current_dimensionsnew_dimensionsr  r  r  max_leftmax_toprM  rN  r   r  left_offset
top_offsetrr  rq  current_index	new_indexs   &&&                   r{   r  5DreameVacuumMapDecoder.decode_p_map_data_from_partial(	  s    !!\^^%9%99#9#V#V$
  $,$5$5!*2*A*A'(0(=(=%"*//)1)?)?&%*"%*"(-%(-%%*"$$0)GWGhGhlmGm080I0I-))1););& ===!1!<!<%00N '00I~**,>,C,CDDn((*<*@*@AC##~';';i'GH"''+=+C+CFXFbFb+bcH ""n&;&;i&GH"&&*<*C*CFXFbFb*bcG I56E'-945F 88U^bhh7D%,2F2F2L2LTVT\T\]J 166=ASA]A]]^K044s:>P>Z>ZZ[J -4451778AIYI^I^+11A5:JD:>2kAAEF CSB]B]^_ab^bBcJ{Q
Q>?	 9 6 ~22T9YFGKn0036)CDJ >001~334A%3%9%9A%=$BM}}]33%*j1n%=$Lq$P	*.y/HMM-<X*XYF\FlFl,Y0%G
;?JN#BC 5 2 %*$K!*4'*<SW`*a'59 2===$$$ %%,,X]];(0 %001AB  r~   c               $    V ^8  d   QhRRRRRR/# )ru   rA  r$   r  r   rw   r   ry   )rz   s   "r{   r|   r  	  s!     < <w <4 <N <r~   c           	     	|
   / p\        V P                  P                  4       EF  p\        V P                  P                  4       F  p\	        V P
                  WC3,          4      pV^ 8  g   K)  V^@8  g   K2  WR9  d   \        WTW4V4      W%&   KI  WBV,          P                  8  d   WBV,          n        M$WBV,          P                  8  d   WBV,          n        W2V,          P                  8  d   W2V,          n	        K  W2V,          P                  8  g   K  W2V,          n
        K  	  EK  	  V'       Ed   VP                  4        EF  w  rg\	        \        P                  ! VP                  VP                  ,
          ^,          VP                  ,           4      4      p\	        \        P                  ! VP                  VP                  ,
          ^,          VP                  ,           4      4      pV P                  '       d   V'       d   V P
                  WC3,          V8w  d   RpRp	\        V P                  P                  4       F\  p
V P
                  W3,          pVR8X  d   W8X  d   T
pK(  K*  W8w  g$   WP                  P                  ^,
          8X  g   KS  V
^,
          p	 M	  VR8w  d   V	R8w  d   W,
          V,           pM:\        P!                  WVR4      pVe    \        P!                  WVR4      pVe   TpTp\	        V P                  P"                  VP                  V P                  P$                  ,          ,           4      W&,          n        \	        V P                  P&                  VP                  V P                  P$                  ,          ,           V P                  P$                  ,
          4      W&,          n	        \	        V P                  P"                  VP                  V P                  P$                  ,          ,           V P                  P$                  ,           4      W&,          n        \	        V P                  P&                  VP                  V P                  P$                  ,          ,           4      W&,          n
        \	        V P                  P"                  W@P                  P$                  ,          ,           4      W&,          n        \	        V P                  P&                  W0P                  P$                  ,          ,           4      W&,          n        W&,          P-                  4        EK  	  V# )r   FTrd  )rn  r  rN  rM  r   r  r*   x0x1y0y1rG  r   r/  r  ro  r5  r  r  r  rq  rr  r  )rA  r  r  rr  rq  r  rI  rJ  startIendIir   center_xcenter_ys   &&            r{   rp  #DreameVacuumMapDecoder.get_segments	  s   x**112A8..445 !4!4QT!:;
>j2o!1/6zaA/N, J/22223,/j144423,/J/22223,/j144423,/ 6 3$ 8 (		144!$$;!"3add":;<		144!$$;!"3add":;<%%% #..qt49%'F#%D%*8+>+>+D+D%E(0(;(;AD(A#)R<',z12 (2%*Z19L9L9R9RUV9V3W+,q5D$) &F  &|
%)]f$<#9#M#Mh[\^c#d#/'='Q'QRZ_gim'nH'3$,$,!$X%8%8%=%=H[H[HeHeAe%f!g!$''++qtth6I6I6S6S/STW_WjWjWtWtt" "%'',,x7J7J7T7T0TUX`XkXkXuXuu" "%X%8%8%<%<xGZGZGdGd@d%e!f #H$7$7$<$<DWDWDaDa@a$b c #H$7$7$;$;qCVCVC`C`?`$a b$$&M )N r~   c                    V ^8  d   QhRRRR/# ru   rA  r$   rw   rx   ry   )rz   s   "r{   r|   r  	  s     	* 	*G 	* 	*r~   c                	D   V P                   '       Ed   V P                  ^8X  d   V P                  e   V P                  \	        V P                  P
                  V P                  P                  ,
          V P                  P                  ,          4      \	        V P                  P                  V P                  P                  ,
          V P                  P                  ,          4      3,          V n        V P                  V P                   9  d
   ^ V n        R# R# RV n        R# r  )r  r  r~  r  r   rq  r  r  r  rr  r  robot_segment)rA  s   &r{   r  (DreameVacuumMapDecoder.set_robot_segment	  s    !:!:a!?HD[D[Dg%-%8%8X,,..1D1D1I1IIXM`M`MjMjjkX,,..1D1D1H1HHHL_L_LiLiijl&H" %%X->->>)*& ? &*H"r~   c               $    V ^8  d   QhRRRRRR/# )ru   rA  r$   r  zdict[str, list[int]]rw   rx   ry   )rz   s   "r{   r|   r  	  s#     > >w >:N >SW >r~   c                	   V Ee   V P                   Ee   V P                   P                  4        EF  w  r#VEe   \        V4      pWA9  d=   . ROW&   V P                   V,          P                  e   W,          P	                  ^4       W,          pV^ ,          V P                   V,          n        V^,          ^,
          V P                   V,          n        V^,          V P                   V,          n        V^,          V P                   V,          n        \        V4      ^8  d
   V^,          MR V P                   V,          n        EK  R V P                   V,          n        R V P                   V,          n        R V P                   V,          n        R V P                   V,          n        R V P                   V,          n        EK  	  R # R # R # )N)r     r  r   )
r  rG  r   r  r  r  r  r  r  r   )rA  r  rI  rJ  r  r4  s   &&    r{   r`  +DreameVacuumMapDecoder.set_segment_cleanset	  sq   H$5$5$A ))//1'!$QJ!10, $,,Q/==I$077:#/D9=aH%%a(6Q! %%a(5 ;?q'H%%a(715aH%%a(.DGIPQMaW[H%%a(69=H%%a(68<H%%a(5:>H%%a(715H%%a(.9=H%%a(67 2 %Br~   c                    V ^8  d   QhRRRR/# r  ry   )rz   s   "r{   r|   r  
  s     $C $C' $Cd $Cr~   c                   / p\        V P                  P                  4       \        \        P
                  4      R7      pV EF  p. pVP                  e3   VP                   F"  pWQ9   g   K  VP                  W,          4       K$  	  / p\        ^4       F	  pV^ .Wg&   K  	  VP                  4        F$  w  rxWh,          ^,          ^,           Wh,          ^&   K&  	  \        VP                  4       \        \        P                  4      R7      pV F"  p	V	^ ,          p
W9  g   K  WVP                  &    M	  VP                  V9  g   EK  ^ WP                  &   EK  	  V F!  pW,          V P                  V,          n        K#  	  R# )z2Find segment color index as implemented on the appr  N)r  r  r  r   ro  r  ri  r  rn  rG  r  r  color_index)rA  area_color_indexsorted_segmentsry  used_idsnidarea_color_numr  j
area_colorcolors   &          r{   rt  .DreameVacuumMapDecoder.set_segment_color_index
  s_     $$&1LLM
 'GH  ,",,C. (8(=> -  N1X%&F!  )..0'5'8';a'?!!$ 1 $%%'5EEFN
 -
"1(;@W%7%78	 - !!)9978 !3!345 '8 "A/?/BHa , "r~   ry   r  )Fr  )r   NNr  )r  r  r  r  rJ  staticmethodr  r  r	  r  r  r  r(  r5  rp  rS  r  r  r  rp  r  r`  rt  r!  ry   r~   r{   ro  ro    sq   KW W Z Z W W Z Z   B B +* +*Z , ,\ 3 3j 
 
 V V K( K(Z m  m ^ < <| 	* 	* > >> $C $Cr~   ro  c                      ] tR tRtRtRt]! ]],           ^
,          4      tR R lt]	R R l4       t
]	R R	 l4       t]	R
 R l4       t]	R R l4       tRR R llt]R R l4       t]R R l4       tRtR# )DreameVacuumMapDataRendereri+
  i   rh  c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   (DreameVacuumMapDataRenderer.__annotate__0
  s     
p 
p$ 
pr~   c                	<   R V n         R V n        ^ V n        ^ V n        ^ V n        RV n        / V n        \        P                  ! \        4      V n
        \        P                  ! \        \        P                  ! \        4      4      4      P                  R4      V n        R # )NTRGBA)r   _map_data_json_left_top
_grid_sizerender_complete_layersr  r  DEFAULT_MAP_DATA_default_map_datar	   openr   DEFAULT_MAP_DATA_IMAGEconvert_default_map_imager   s   &r{   r   $DreameVacuumMapDataRenderer.__init__0
  sw    "&.2
	 %)?A&,&6&67G&H"'**WV5E5EF\5]-^"_"g"ghn"or~   c               $    V ^8  d   QhRRRRRR/# )ru   r  r<  brw   r   ry   )rz   s   "r{   r|   r  =
  s!     
 
) 
	 
d 
r~   c                	n    V ^ ,          pV ^,          pV^ ,          pV^,          pWS8  d   R# WB8  d   ^# ^ # )r   rd  ry   )r  r  xAyAxByBs   &&    r{   _coordinate_tuple_sort2DreameVacuumMapDataRenderer._coordinate_tuple_sort<
  s;    qTqTqTqT7I7r~   c               $    V ^8  d   QhRRRRRR/# )ru   rq  r   rr  rw   ry   )rz   s   "r{   r|   r  J
  s!     
 
 
 
 
r~   c                	    \        V \        P                  ,           ^
,          4      \        P                  \        V\        P                  ,           ^
,          4      ,
          .# )r  )rf  r  
HALF_INT16MAX)rq  rr  s   &&r{   _convert_coordinates0DreameVacuumMapDataRenderer._convert_coordinatesI
  sL     12===CD'++eQ9T9_9_5_ce4e.ff
 	
r~   c                    V ^8  d   QhRRRR/# )ru   angler   rw   ry   )rz   s   "r{   r|   r  Q
  s     W Wc Wc Wr~   c                	^    V ^8  d
   ^V ,
          MRV ,
          ^,           R,           R,          # )   h    ry   )r  s   &r{   _convert_angle*DreameVacuumMapDataRenderer._convert_angleP
  s(    #(3;#+cEkC6GCOSVVVr~   c                    V ^8  d   QhRRRR/# )ru   
extra_datar   rw   ro  ry   )rz   s   "r{   r|   r  U
  s     ! !c !e !r~   c                	    \         P                  ! 4       p\        P                  ! 4       pVP	                  R VRR7       V P                  VRVR7       VP                  4       # )ValetudoMapT)zipPNG)rz   pnginfo)ior   r   PngInfoadd_textsavegetvalue)imager  bufferr   s   &&  r{   
_to_buffer&DreameVacuumMapDataRenderer._to_bufferT
  sL    %%'mZT:

6%
6  r~   c               $    V ^8  d   QhRRRRRR/# ru   rA  r$   robot_statusr   rw   ro  ry   )rz   s   "r{   r|   r  \
  s&     n
 n
7 n
# n
e n
r~   c                	V9   Ve   VP                   '       d   V P                  # V P                  '       d   V P                  V8X  d   V P                  P                  VP                  8X  d   V P                  P                  VP                  8X  dd   V P
                  '       dR   \        P                  R4       V P                  V P                  \        P                  ! V P
                  RR7      4      # \        P                  ! 4       pRV n        V P                  ep   V P                  P                  VP                  8w  gK   V P                  P                  VP                  8w  g&   V P                  P                   VP                   8w  d   R V n        \#        VP                  P$                  \&        P(                  ,           ^
,          4      V n        \#        VP                  P,                  \&        P(                  ,           ^
,          4      V n        \#        VP                  P0                  ^
,          4      V n        \4        R\6        \8        \&        P:                  \<        \&        P:                  /\>        V P2                  \@        . \B        . \D        \F        ^\H        VPJ                  //pVPL                  '       Ed:   V P                  eU   V P                  PL                  VPL                  8w  g0   V PN                  PQ                  \R        PT                  4      '       g   \V        \X        \Z        \&        P]                  VPL                  P^                  VPL                  P`                  4      \D        \b        \&        Pe                  VPL                  Pf                  4      //V PN                  \R        PT                  &   V\B        ,          Pi                  V PN                  \R        PT                  ,          4       VPj                  '       Ed:   V P                  eU   V P                  Pj                  VPj                  8w  g0   V PN                  PQ                  \R        Pl                  4      '       g   \V        \n        \Z        \&        P]                  VPj                  P^                  VPj                  P`                  4      \D        \b        \&        Pe                  VPj                  Pf                  4      //V PN                  \R        Pl                  &   V\B        ,          Pi                  V PN                  \R        Pl                  ,          4       VPp                  '       Ed   V P                  eV   V P                  Pp                  VPp                  8w  g1   V PN                  PQ                  \R        Pr                  4      '       Eg[   . V PN                  \R        Pr                  &   VPp                   EF,  p\&        P]                  VPt                  VPv                  4      p\&        P]                  VPx                  VPz                  4      p\&        P]                  VP|                  VP~                  4      p\&        P]                  VP                  VP                  4      p	V PN                  \R        Pr                  ,          Pi                  \V        \        \Z        V^ ,          V^,          V^ ,          V^,          V^ ,          V^,          V	^ ,          V	^,          ./4       EK/  	  V\B        ,          P                  V PN                  \R        Pr                  ,          4       VP                  '       Ed   V P                  eV   V P                  P                  VP                  8w  g1   V PN                  PQ                  \R        P                  4      '       Eg[   . V PN                  \R        P                  &   VP                   EF,  p\&        P]                  VPt                  VPv                  4      p\&        P]                  VPx                  VPz                  4      p\&        P]                  VP|                  VP~                  4      p\&        P]                  VP                  VP                  4      p	V PN                  \R        P                  ,          Pi                  \V        \        \Z        V^ ,          V^,          V^ ,          V^,          V^ ,          V^,          V	^ ,          V	^,          ./4       EK/  	  V\B        ,          P                  V PN                  \R        P                  ,          4       VP                  '       Ed   V P                  eV   V P                  P                  VP                  8w  g1   V PN                  PQ                  \R        P                  4      '       Eg[   . V PN                  \R        P                  &   VP                   EF,  p\&        P]                  VPt                  VPv                  4      p\&        P]                  VPx                  VPz                  4      p\&        P]                  VP|                  VP~                  4      p\&        P]                  VP                  VP                  4      p	V PN                  \R        P                  ,          Pi                  \V        \        \Z        V^ ,          V^,          V^ ,          V^,          V^ ,          V^,          V	^ ,          V	^,          ./4       EK/  	  V\B        ,          P                  V PN                  \R        P                  ,          4       VP                  '       Ed   V P                  eV   V P                  P                  VP                  8w  g1   V PN                  PQ                  \R        P                  4      '       Eg   . V PN                  \R        P                  &   ^VP                  P0                  ,          p
VP                   EF  p\        VP^                  V
,
          VP`                  V
,
          VP^                  V
,           VP`                  V
,
          VP^                  V
,           VP`                  V
,           VP^                  V
,
          VP`                  V
,           4      p\&        P]                  VPt                  VPv                  4      p\&        P]                  VPx                  VPz                  4      p\&        P]                  VP|                  VP~                  4      p\&        P]                  VP                  VP                  4      p	V PN                  \R        P                  ,          Pi                  \V        \        \Z        V^ ,          V^,          V^ ,          V^,          V^ ,          V^,          V	^ ,          V	^,          ./4       EK  	  V\B        ,          P                  V PN                  \R        P                  ,          4       VP                  '       Ed   V P                  eU   V P                  P                  VP                  8w  g0   V PN                  PQ                  \R        P                  4      '       g   . V PN                  \R        P                  &   VP                   F  p\&        P]                  VPt                  VPv                  4      p\&        P]                  VPx                  VPz                  4      pV PN                  \R        P                  ,          Pi                  \V        \        \Z        V^ ,          V^,          V^ ,          V^,          ./4       K  	  V\B        ,          P                  V PN                  \R        P                  ,          4       V P                  eh   \        V P                  P                  4      \        VP                  4      8w  g1   V PN                  PQ                  \R        P                  4      '       Eg   . p. V PN                  \R        P                  &   VP                  '       Ed4   \        VP                  4      ^8  Ed   VP                  ^ ,          pVP                  R,           F  pVP                  \        P                  8X  d   Tp\&        P]                  VP^                  VP`                  4      p\&        P]                  VP^                  VP`                  4      pVP                  V^ ,          V^,          V^ ,          V^,          .4       MBV PN                  \R        P                  ,          Pi                  \V        \        \Z        V/4       . pTpK  	  V PN                  \R        P                  ,          Pi                  \V        \        \Z        V/4       V\B        ,          P                  V PN                  \R        P                  ,          4       . p. p/ pV P                  e   V P                  P                  VP                  8w  g   V P                  P                  VP                  8w  g{   V P                  P                  VP                  8w  gV   V P                  P                  VP                  8w  g1   V PN                  PQ                  \R        P                  4      '       Eg   . V PN                  \R        P                  &   \        VP                  P                  4       EF  p\        VP                  P                  4       EF  p\        VP                  VV3,          4      pVV P*                  V P2                  ,          ,           VV P.                  V P2                  ,          ,           .p\&        P:                  V P2                  ,          V^,          ,
          V^&   \#        V^ ,          4      V^ &   \#        V^,          4      V^&   V\        P                  P                  8X  d   VPi                  V4       K  V\        P                  P                  8X  g    V\        P                  P                  8X  d   VPi                  V4       EKJ  V^ 8  g   EKT  V^=8  g   EK^  VP                  '       d&   VVP                  9  d   VPi                  V4       EK  VP                  '       g   ^pVV9  d   . VV&   VV,          Pi                  V4       EK  	  EK  	  V'       d~   V PN                  \R        P                  ,          Pi                  \V        \        \        \        V\        \&        P                  4      R7       UUu. uF  pV F  pVNK  	  K  	  upp/4       V'       d~   V PN                  \R        P                  ,          Pi                  \V        \        \        \        V\        \&        P                  4      R7       UUu. uF  pV F  pVNK  	  K  	  upp/4       V'       Ed   VP                  4        EF  w  ppR pVP                  '       d4   RV 2pVVP                  9   d   VP                  V,          P                  pV PN                  \R        P                  ,          Pi                  \V        \        \        \        V\        \&        P                  4      R7       UUu. uF  pV F  pVNK  	  K  	  upp\D        \        T\        VP                  '       d   VVP                  9   d   RMR\        V//4       EK  	  V PN                  \R        P                  ,           EFU  pV\        ,          p\8        \        R	\        R\        R \        R /\<        \        R	\        R\        R \        R /\        \        V4      ^,          /V\        &   ^ p^ p\        ^ \        V4      ^4       EF  pVVV,          ,           pVVV^,           ,          ,           pVV,          V\        ,          \8        ,          \        ,          8  d'   VV,          V\        ,          \8        ,          \        &   VV,          V\        ,          \8        ,          \        ,          8  d'   VV,          V\        ,          \8        ,          \        &   VV^,           ,          V\        ,          \<        ,          \        ,          8  d.   VV^,           ,          V\        ,          \<        ,          \        &   VV^,           ,          V\        ,          \<        ,          \        ,          8  g   EKq  VV^,           ,          V\        ,          \<        ,          \        &   EK  	  \#        V\        ,          \8        ,          \        ,          V\        ,          \8        ,          \        ,          ,           ^,          4      V\        ,          \8        ,          \        &   \#        V\        ,          \<        ,          \        ,          V\        ,          \<        ,          \        ,          ,           ^,          4      V\        ,          \<        ,          \        &   V'       d@   \#        V\        V4      ^,          ,          4      V\        ,          \8        ,          \        &   V'       d@   \#        V\        V4      ^,          ,          4      V\        ,          \<        ,          \        &   Rp Rp!^ p". p#\        ^ \        V4      ^4       F_  pVV,          pVV^,           ,          pVV!8w  g   VV V",           8  d   V#P                  V V!V".4       Tp Tp!^p"KM  VV 8w  g   KV  V"^,           p"Ka  	  V#P                  V V!V".4       V#R
,          V\        &   . V\        &   EKX  	  V\@        ,          P                  V PN                  \R        P                  ,          4       Wn        W@n        \        P                  RVP                  VP                  \        P                  ! 4       V,
          4       RV n        V P                  V P                  \        P                  ! V P
                  RR7      4      # u uppi u uppi u uppi )Nz!Skip render map data, not changedr   Fr  r.  r  zRoom Ti  :r  NNz!Render Map Data: %s:%s took: %.2fr   i )vr  default_map_imager   r  r   r  r   r4  r   r  r   r   r  r  r  r!  r  rf  r  r  r  r  r  r  r  r  rQ   rR   rS   r  rT   rU   rV   rW   rX   rY   rZ   r  r~  r  r   r,   ROBOTr[   rh   r\   r  rq  rr  r;   r  r  r  r  CHARGERri   r  NO_MOPr  r  r  r  x2y2x3y3rj   r  r  NO_GOrk   r  ACTIVE_AREArl   r  ACTIVE_POINTr(   r  r!  rm   r   r  PATH	path_typer    r  rn   r  r   IMAGErn  rN  rM  r   r  r&   r   r"  r#  ro   r]   r  r   r  rp   rG  r   rq   r^   r_   r`   rb   rc   rd   re   rf   ra   rg   )$r   rA  r  ri  map_data_jsonr6  r  r  cdsizerB  r  pointsr  floor_pixelswall_pixelsr  rr  rq  r  coordssublistvalrI  rJ  r   layerspixelssum_xsum_yr  current_x_start	current_ycurrent_countcompressed_pixelss$   &&&                                 r{   
render_map&DreameVacuumMapDataRenderer.render_map\
  s2   x111))) NNN(*''8+<+<<''8+<+<<###MM=>??''

4..:F 
 iik$NN"~~((H,?,??~~$$7~~..(2K2KK!DN 3 3 8 8;V;a;a aegghDJx22669T9_9__ceefDI#H$7$7$A$AB$FGDO %m#$&A&E&E$&A&E&E& *4??%r'(*A+X->->+
 """&>>00H4K4KK||''(8(>(>?? ,-N-/J/_/_ //1183J3J3L3L0 1+-H-W-WX`XoXoXqXq-r38-334 56==dllK[KaKa>bc$$$&>>22h6O6OO||''(8(@(@AA ,-P-/J/_/_ 1133X5N5N5P5P0 1+-H-W-WX`XqXqXsXs-t3:-556 56==dllK[KcKc>de$$$&>>22h6O6OO||''(8(?(?@@8:-445$55D3HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZALL!1!8!89@@35S5!adAaD!A$PQRSPTVWXYVZ\]^_\`bcdebf7g 6 56==dllK[KbKb>cd&>>--1E1EE||''(8(>(>??79-334$00D3HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZALL!1!7!78??35R5!adAaD!A$PQRSPTVWXYVZ\]^_\`bcdebf7g 1 56==dllK[KaKa>bc   &>>..(2G2GG||''(8(D(DEE=?-99:$11D3HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZALL!1!=!=>EE35S5!adAaD!A$PQRSPTVWXYVZ\]^_\`bcdebf7g 2 56==dllK[KgKg>hi!!!&>>//83I3II||''(8(E(EFF>@-::;H//999%33E$$$$$$$$	D 4HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZA3HHRVRYRYZALL!1!>!>?FF35S5!adAaD!A$PQRSPTVWXYVZ\]^_\`bcdebf7g# 4. 56==dllK[KhKh>ij>>>&>>''8>>9||''(8(=(=>>68-223$NND3HHRVRYRYZA3HHRVRYRYZALL!1!6!67>>35T5!adAaD!A$7O	 + 56==dllK[K`K`>ab NN"4>>&&'3x}}+==<<##$4$9$9::F24DLL)../}}}X]]!3a!7MM!$%]]2..E(--7 %7LLQSSRSRURUV7LLUWWV[V]V]^qtQqT1Q41&>?%5%:%:;BB 79P 96 "$A /  LL)../66+-D-v 	1299$,,GWG\G\:]^ NN"~~--1I1II~~**h.C.CC~~&&(*;*;;~~""hmm3<<##$4$:$:;;35DLL)//08..556x22889A!$X%8%8A%>!?Jdjj4??:;dii$//9:F
 "=!@!@4??!RV\]^V_ _F1I %fQi 0F1I %fQi 0F1I!\%6%6%<%<<#**62#|'9'9'?'??:Q]QeQeQkQkCk$++F3#aJO#333
(JbJb8b(//7#+#4#4#4-.
)979 4$Z077?3 : 78 -334;;/1I1+1 ,$./J/a/a$b,4, (/  
 (/  ,4
 -334;;/1H1+1 +$./J/a/a$b,4, (/  
 (/  ,4
 x$NN,DAqD(((!&qc{ 1 11#+#4#4Q#7#<#<DLL!1!7!78??35O5/5$%(23N3e3e(f0"80"G ,3C !$
 ,3 !$0"8 9 =q 9,4,D,D,DhNfNfIfDlq 7; -6 ,,'7'='=>> 9:(....	+ )....	+ 3CK!O945  q#f+q1A!F1I-E!F1q5M1Eay6*G#HI]#^_u#vvntuvnw<=>RSTjkay6*G#HI]#^_u#vvntuvnw<=>RSTjk q1u !>?@TUVlmn ouEo<=>RSTjk
 q1u !>?@TUVlmn ouEo<=>RSTjk- 24 gl<=>RSTjk !>?@TUVlmn 	g456JKLbc gl<=>RSTjk !>?@TUVlmn 	g456JKLbc joVq1kF89:NOPfg joVq1kF89:NOPfg #)"	 !$&!q#f+q1Aq	Aq1uAI~o.M)N)00/9m1\]*+$%	()o-(5(9 2 "((/9m)TU?PQS?T;<4601s ?v 	/077EUE[E[8\]!+/OOIIK#		
  $##JJt**zB
 	
y44*8s   VArXAr[/Ar%c                   V ^8  d   QhRR/# ru   rw   ro  ry   )rz   s   "r{   r|   r    s     P P5 Pr~   c                	N    V P                  V P                  V P                  4      # r  )r   r  r  r   s   &r{   r  -DreameVacuumMapDataRenderer.default_map_image  s    t668N8NOOr~   c                   V ^8  d   QhRR/# r)  ry   )rz   s   "r{   r|   r    s     & & &r~   c                	    V P                   # r  )r  r   s   &r{   disconnected_map_image2DreameVacuumMapDataRenderer.disconnected_map_image  s    %%%r~   )	r  r  r  r  r  r   r  r  r  Nr  )r  r  r  r  r  HALF_INT16_UPPER_HALFrf  r  r   r  r  r  r  r   r&  r   r  r.  r!  ry   r~   r{   r  r  +
  s    J!
*44:
<C
p 
 
 
 
 W W ! !n
` P P & &r~   r  c                  ,   ] tR tRtR"R R llt]R R l4       t]R 4       t]R R	 l4       t]R
 R l4       t	]R R l4       t
R#R R lltR tR tR tR tR tR tR tR tR t]R R l4       t]R R l4       t]R R l4       t]R R  l4       tR!tR# )$DreameVacuumMapRendereri  Nc          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
ru   color_schemer   icon_sethidden_map_objectsz	list[str]robot_shaper   rw   rx   ry   )rz   s   "r{   r|   $DreameVacuumMapRenderer.__annotate__  sJ     eZ eZeZ eZ &	eZ
 eZ 
eZr~   c           
     	   \         P                  ! V\        4       4      V n        \        P                  ! V^ 4      V n        \        4       V n        VeK   V P                  P                  P                  4        F"  pWS9   g   K  \        V P                  VR4       K$  	  RV n        RV n        / V n        RV n        W@n        RV n        \"        \$        ^ \&        ^ /\(        \$        ^ \&        ^ //\"        \$        R\&        ^ /\(        \$        ^ \&        ^ //\"        \$        ^ \&        R/\(        \$        ^ \&        ^ //.V n        RV n        RV n        RV n        RV n        RV n        RV n        RV n        RV n        RV n        RV n        \@        PB                  ! \E        \F        PH                  ! \J        4      4      4      PM                  R4      p\N        PP                  ! VPS                  \U        VPV                  ^ ,          R,          4      \U        VPV                  ^,          R,          4      34      R	R7      V n,        \Z        p\\        p\^        p\`        p	\b        p
/ V n2        V P
                  ^8X  d   \f        pM_V P
                  ^8X  d    \h        p\j        p\l        p\n        p	\p        p
M/V P
                  ^8X  d   \r        p\t        p\v        p\x        p	\z        p
V Uu. uFE  p\@        PB                  ! \E        \F        PH                  ! V4      4      4      PM                  R4      NKG  	  upV n>        V Uu. uFE  p\@        PB                  ! \E        \F        PH                  ! V4      4      4      PM                  R4      NKG  	  upV n?        V	 Uu. uFE  p\@        PB                  ! \E        \F        PH                  ! V4      4      4      PM                  R4      NKG  	  upV n@        V
 Uu. uFE  p\@        PB                  ! \E        \F        PH                  ! V4      4      4      PM                  R4      NKG  	  upV nA        VP                  4        F  w  r\@        PB                  ! \E        \F        PH                  ! V4      4      4      PM                  R4      V Pd                  V&   V P                  P                  '       g   Kr  \        P                  ! V Pd                  V,          4      pVP                  R4      V Pd                  V&   K  	  / V nG        \        P                  4        FT  w  r\@        PB                  ! \E        \F        PH                  ! V4      4      4      PM                  R4      V P                  V&   KV  	  \        P                  ! \F        PH                  ! \        4      \        P                  ^ ,          4      V nM        R# u upi u upi u upi u upi )
r   NFTr   r  g?borderg?)2   K   r<  r=  )Nr/   r   r-   r4  r0   r5  r.   config__dict__r  setattrr   r  r  _robot_status_robot_shape_calibration_pointsr>   rS   rT   r:   _default_calibration_points_image_charger_icon_robot_icon_robot_charging_icon_robot_cleaning_icon_robot_warning_icon_robot_sleeping_icon_robot_washing_icon_robot_cleaning_direction_icon_obstacle_backgroundr	   r  r   r  r  DEFAULT_MAP_IMAGEr  r   expandresizer   r  r  SEGMENT_ICONS_DREAMEMAP_ICON_REPEATS_DREAMEMAP_ICON_SUCTION_LEVEL_DREAMEMAP_ICON_WATER_VOLUME_DREAMEMAP_ICON_CLEANING_MODE_DREAME_segment_iconsSEGMENT_ICONS_DREAME_OLDSEGMENT_ICONS_MIJIAMAP_ICON_REPEATS_MIJIAMAP_ICON_SUCTION_LEVEL_MIJIAMAP_ICON_WATER_VOLUME_MIJIAMAP_ICON_CLEANING_MODE_MIJIASEGMENT_ICONS_MATERIALMAP_ICON_REPEATS_MATERIALMAP_ICON_SUCTION_LEVEL_MATERIALMAP_ICON_WATER_VOLUME_MATERIALMAP_ICON_CLEANING_MODE_MATERIAL_cleaning_times_icon_suction_level_icon_water_volume_icon_cleaning_mode_iconrG  invertr   
Brightnessenhance_obstacle_iconsOBSTACLE_TYPE_TO_ICONrH  rI  MAP_FONT	MAX_WBITS	font_file)r   r4  r5  r6  r7  attrr  repeatsr  r  r  r  rI  rJ  enhancers   &&&&&          r{   r    DreameVacuumMapRenderer.__init__  s    5J4M4Ml\r\t4u.228Q?):)<),,113-DKKu5 4 #'%)46"&!,37  %';Q@TVW&X!$8!=QST#U
 %';TCWYZ&[!$8!=QST#U
 %';Q@TVZ&[!$8!=QST#U<
( !$(!$(!#' $(!#' .2+$(!!JJwv/?/?@Q/R'ST\\]cd"*//$$)..q1C78)..q1C78 $#
 ()535 ==A/H]]a*H,G8M6L8M]]a-H/G;M9L;Mmt$umteiUZZ8H8H8N0O%P%X%XY_%`mt$u!Ta$
TaDEJJwv//567??GTa$
  Ua#
T`DEJJwv//567??GT`#
 Ub$
TaDEJJwv//567??GTa$
  NN$DA%*ZZ8H8H8K0L%M%U%UV\%]D"  ''''2243F3Fq3IJ)1)9)9#)>##A&	 %  ")//1DA&+jj9I9I!9L1M&N&V&VW]&^D  # 2 )9)9()CT^^VXEXY+ %v$
#
$
s   AV:0AV?AWAW	c                   V ^8  d   QhRR/# r)  ry   )rz   s   "r{   r|   r8  ~  s     % %U %r~   c                	    V '       d9   \         P                  ! 4       pV P                  VR R7       VP                  4       # R# )r  )rz   N)r  r   r  r  )r  r  s   & r{   r   "DreameVacuumMapRenderer._to_buffer}  s2    ZZ\FJJveJ,??$$ r~   c                	   V P                  \        V4      \        V4      34      pVP                  4       p\        VP                  ^,          4       F  p\        VP                  ^ ,          4       Fh  pWFV3,          ^ ,          ^P8  g   K  WFV3,          ^,          ^P8  g   K3  WFV3,          ^,          ^P8  g   KK  WFV3,          ^,          ^P8  g   Kc  W$We3&   Kj  	  K  	  V# r  )rQ  r   loadrn  r  )r  r  r  icopixdatayyxxs   &&&    r{   _set_icon_color'DreameVacuumMapRenderer._set_icon_color  s    llCIs4y12((*$BCHHQK(FOA&+B*R/B*R/B*R/&+BFO ) % 
r~   c                   V ^8  d   QhRR/# ru   rw   r<  ry   )rz   s   "r{   r|   r8    s     0 09 0r~   c                	   V'       d   V P                   ^,
          pV P                  ^,
          p^ p^ pVP                  4        F  pVP                  V 4      p\	        VP
                  4      \	        VP                  4      .p\	        VP                  4      \	        VP                  4      .p	\        \        V4      V4      p\        \        V4      V4      p\        \        V	4      V4      p\        \        V	4      V4      pK  	  W#WE.# R# r  )rM  rN  r  to_coordr   r  r  r  r  r  r;  )
r  r  min_xmin_ymax_xmax_yry  pr7  r8  s
   &&        r{   _calculate_bounds)DreameVacuumMapRenderer._calculate_bounds  s    $$q(E%%)EEE#??,$$Z0Is144y1Is144y1CM51CM51CM51CM51 - %// r~   c                   V ^8  d   QhRR/# r  ry   )rz   s   "r{   r|   r8    s     P P	Pr~   c
                	H   ^ p
^ pV P                   pV P                  pV'       d   VP                  4        F  pVP                  V 4      p\	        \        VP                  4      \        VP                  4      .4      p\	        \        VP                  4      \        VP                  4      .4      p\        V^ ,          V
4      p
\        V^,          V4      p\        V^ ,          V4      p\        V^,          V4      pK  	  V'       d   V F  pVP                  V 4      pVP                  VP                  VP                  VP                  .pVP                  VP                  VP                  VP                  .p\        \        V4      V
4      p
\        \        V4      V4      p\        \        V4      V4      p\        \        V4      V4      pK  	  V'       d   V F  pVP                  V 4      pVP                  VP                  VP                  VP                  .pVP                  VP                  VP                  VP                  .p\        \        V4      V
4      p
\        \        V4      V4      p\        \        V4      V4      p\        \        V4      V4      pK  	  V'       d   V F  pVP                  V 4      pVP                  VP                  VP                  VP                  .pVP                  VP                  VP                  VP                  .p\        \        V4      V
4      p
\        \        V4      V4      p\        \        V4      V4      p\        \        V4      V4      pK  	  V'       d   V F  pVP                  V 4      pVP                  VP                  .pVP                  VP                  .p\        \        V4      V
4      p
\        \        V4      V4      p\        \        V4      V4      p\        \        V4      V4      pK  	  V
^ 8  d   V^ ,          \        V
) 4      ,           V^ &   WP                   8  d-   V^,          \        WP                   ,
          4      ,           V^&   V^ 8  d   V^,          \        V) 4      ,           V^&   WP                  8  d-   V^,          \        WP                  ,
          4      ,           V^&   V P                   V^ ,          ,           V^,          ,           V8  de   \        WpP                   ,
          V^ ,          ,           V^,          ,           ^,          4      pV^ ,          V,           V^ &   V^,          V,           V^&   V P                  V^,          ,           V^,          ,           V8  de   \        WP                  ,
          V^,          ,           V^,          ,           ^,          4      pV^,          V,           V^&   V^,          V,           V^&   \!        ^4       F  pVV,          V	,          VV&   K  	  V# r  )rM  rN  r  r  r  r   r  r  r  r  r  r;  r
  r  r  r  rn  )r  r  r  r  r  r  padding	min_width
min_heightscaler  r  r  r  ry  r  r7  r8  r6  r  r  rI  s   &&&&&&&&&&            r{   _calculate_padding*DreameVacuumMapRenderer._calculate_padding  s      !!#??,$$Z0!3qtt9c!$$i"89!3qtt9c!$$i"89HQK/HQK/HQK/HQK/ - $MM*-DD!$$add3DD!$$add3CM51CM51CM51CM51 % (MM*-DD!$$add3DD!$$add3CM51CM51CM51CM51 ) #MM*-DD!$$add3DD!$$add3CM51CM51CM51CM51 $ MM*-DD!$$<DD!$$<CM51CM51CM51CM51  19 c5&k1GAJ### c%2B2B*B&CCGAJ19 c5&k1GAJ$$$ c%2C2C*C&DDGAJgaj(71:5	A	$4$44wqzAGAJNRSSTD d*GAJ d*GAJwqz)GAJ6C
%6%66CgajPTUUVD d*GAJ d*GAJqA e+GAJ  r~   c                    V ^8  d   QhRRRR/# )ru   rA  r$   rw   zdict[str, int] | Nonery   )rz   s   "r{   r|   r8    s     & & &<Q &r~   c                	*   V P                   P                  V P                   P                  ,          ^ 8  d   . p\        ^ ^ 4      \        R^ 4      \        ^ R4      3 F  pVP	                  V P                   4      P                  V P                   V P                  4      pVP                  \        \        VP                  \        VP                  /\        \        \        VP                  4      \        \        VP                  4      //4       K  	  V# R# )r   r   N)r  rM  rN  r!   to_imgrotatedr  r  r>   rS   rq  rT   rr  r:   r   )rA  calibration_pointsrB  	img_points   &   r{   _calculate_calibration_points5DreameVacuumMapRenderer._calculate_calibration_points  s    %%(;(;(B(BBaG!#1+uT1~uQ~F!LL)<)<=EEhFYFY[c[l[lm	")),/CUWWNbdidkdk.l)0#ikk2B0#ikk2B, G &% Hr~   c               $    V ^8  d   QhRRRRRR/# r  ry   )rz   s   "r{   r|   r8  
  s&     V, V,7 V,# V,e V,r~   c                	   VeI   VP                   '       g7   VP                  P                  VP                  P                  ,          ^8  d   V P                  # RV n        \        P                  ! 4       pVP                  '       d   ^ p V P                  ep   V P                  P                  VP                  8w  gK   V P                  P                  VP                  8w  g&   V P                  P                  VP                  8w  d   R V n        V P                  '       d   V P                  V8X  d   V P                  V8X  d   V P                  P                  VP                  8X  do   V P                  P                  VP                  8X  dJ   V P                  '       d8   RV n        \        P!                  R4       V P#                  V P                  4      # VP                  ^8X  g   VP                  '       d   ^M^pVP                  '       Eg   V P                  eK   V P                  P                  VP                  8w  g&   V P                  P                  VP                  8w  d   \$        P'                  VP                  VP                  4      VP                  n        V P                  '       dA   V P                  P                  P(                  VP                  P(                  8w  d   R V n        M/V P                  P                  P(                  VP                  n        V P                  Ee   V P                  P*                  VP*                  8w  g   V P                  P,                  VP,                  8w  g   V P                  P.                  VP.                  8w  g   V P                  P0                  VP0                  8w  gp   V P                  P                  VP                  8w  gK   V P                  P                  VP                  8w  g&   V P                  P2                  VP2                  8w  d   \$        P5                  VP                  VP*                  VP,                  VP.                  VP0                  VP                  . R
O^x^PV4
      VP                  n        V P                  '       dA   V P                  P                  P6                  VP                  P6                  8w  d   R V n        M/V P                  P                  P6                  VP                  n        WAP                  n        V P                  '       d-   V P                  P                  P8                  V8w  d   R V n        V P                  e&   V P                  P:                  VP:                  8w  dN   R V n        R V n        R V n         V P                  f+   R V n!        R V n"        R V n#        R V n$        R V n%        R V n&        V P                  e   V PN                  PQ                  \R        PT                  4      '       d   V P                  PV                  VPV                  8w  gq   V P                  P*                  VP*                  8w  gL   V P                  P                  VP                  8w  g'   V P                  PX                  VPX                  8w  Ed   / pV PZ                  P\                  V\^        P`                  Pb                  &   V PZ                  Pd                  V\^        Pf                  Pb                  &   V PZ                  Ph                  V\^        Pj                  Pb                  &   V PZ                  Pl                  V\^        Pn                  Pb                  &   V PZ                  Ph                  V\^        Pp                  Pb                  &   V PZ                  Pd                  V\^        Pr                  Pb                  &   V PZ                  Pl                  V\^        Pt                  Pb                  &   VP                  e   VP                  Pw                  4        F  w  rgV Px                  Pz                  '       d   VPV                  '       d+   WaPV                  9  d   V PZ                  P|                  WV&   K]  VP~                  e3   V PZ                  P                  VP~                  ,          ^ ,          WV&   K  K  V\^        Pj                  Pb                  ,          WV&   K  	  \        P                  ! VP                  P                  VP                  P                  ^3V\^        P`                  Pb                  ,          \        P                  R7      pVP                  P                  ^,
          p	VP                  P                  ^,
          p
^ p^ p\        VP                  P                  4       F  p\        VP                  P                  4       F  p\        VP                  WP                  P                  V,
          ^,
          3,          4      pV\^        P`                  Pb                  8w  g   Kc  W9   d	   W_,          M V\^        Pn                  Pb                  ,          WV3&   \        W4      p\        W4      p	\        W4      p\        W4      p
K  	  K  	  VP                  P(                  '       d   \        \        VP                  P(                  ^ ,          V	4      V	4      p	\        \        VP                  P(                  ^,          V4      V4      p\        \        VP                  P(                  ^,          V
4      V
4      p
\        \        VP                  P(                  ^,          V4      V4      pWP                  P                  ^,
          8w  Ed   WP                  P                  ^,
          8w  d   V^ 8w  d   V^ 8w  d   V	^ 8w  gJ   V
^ 8w  gC   WP                  P                  ^,
          8w  g"   WP                  P                  ^,
          8w  d   W,          W,          VP                  P                  V^,           ,
          V,          VP                  P                  V^,           ,
          V,          .VP                  nI        WV^,           1W^,           13,          pV P                  '       dA   V P                  P                  P                  VP                  P                  8w  d   R V n        \        P                  ! \        P                  ! VP                  V^ R7      P                  V^R7      4      \        VP                  P6                  4      R7      V PN                  \R        PT                  &   M/V P                  P                  P                  VP                  nI        V P                  V4      V nQ        V P                  VVV PN                  \R        PT                  ,          ^4      pVP:                  ^Z8X  d!   VP                  \        P                  4      pMaVP:                  ^8X  d!   VP                  \        P                  4      pM0VP:                  R8X  d    VP                  \        P                  4      p\        P!                  RVP                  VP                  \        P                  ! 4       V,
          4       Wn        W n        VV n        RV n        V P#                  V P                  4      #   \         d-    \        P                  R	\        P                  ! 4       4        LXi ; i)NFTz'Skip render frame, map data not changedrs  )axisr:  r  zRender frame: %s:%s took: %.2fzMap render Failed: %s)   r  r  r  )[r  r  rM  rN  r  r  r  r  r   r!  r  rA  r  r   rE  r   r   r   r2  r  boundsr  r  r  r  r|  r  r  r  r  rF  rK  rN  rG  rH  rI  rJ  rL  rM  r  r   r,   r  r  r   r4  outsider&   r&  r   r  r!  r   r"  new_segmentr$  r#  OBSTACLE_WALLr%  rG  r>  r  passive_segmentr  ry  rk  r  rm  rn  r   r  r;  r  cropr   rP  r	   	fromarrayrepeattupler  rC  render_objects	transpose	ROTATE_90
ROTATE_180
ROTATE_270r  rj  r  r  )r   rA  r  ri  r  area_colorsrI  rJ  r  r  r  r  r  rr  rq  px_typer  s   &&&              r{   r&  "DreameVacuumMapRenderer.render_map
  s%   x111h6I6I6O6ORZReReRlRl6lpq5q)))$iikLJ	K&>>,,0C0CC>>((HOO;>>22h6O6OO!% NNh.&&,6NN++x/@/@@NN++x/@/@@KKK'+$FGt{{33!22a78;M;M;MASTE%%%NN*~~..(2C2CC~~00H4G4GG1H1Z1Z ++X->->2H''. ~~~$..*C*C*J*JhNaNaNhNh*h)-151J1J1Q1QH''. &>>..(2G2GG>>22h6O6OO>>--1E1EE>>''8>>9>>**h.?.??>>,,0C0CC>>..(2G2GG.E.X.X''))--((NN%%$/##+ >>>dnn&?&?&G&G8K^K^KfKf&f%)DN.2nn.G.G.O.O##+(-%~~~$..";";"A"AU"J!%~~%)@)@HDUDU)U%)",0),0)>>)'+D$04D-04D-/3D,/3D,:>D7 &||''(8(>(>??>>11X5M5MM>>..(2G2GG>>**h.?.??>>&&(--7 :>:K:K:S:SL006677;7H7H7M7ML--3348<8I8I8O8OL..445>B>O>O>[>[L44::;:>:K:K:Q:QL00667@D@Q@Q@V@VL66<<=FJFWFWFcFcL<<BBC$$0 ( 1 1 7 7 9;;,,,'777AE]E]<]151B1B1R1R!"!:151B1B1J1J1==1YZ[1\ "; .99K9K9Q9Q-RKN !:  ++22 ++11
   4 4 : :;(( !++11A5 ++22Q6x2299:A"8#6#6#<#<="%h&9&9!=P=P=W=WZ[=[^_=_:_&`"a"l&:&:&@&@@ $+#9 !, 4%01I1I1O1O%P #a4L %(ME$'ME$'ME$'ME > ; &&---
  H$7$7$>$>q$A5 I5QEH$7$7$>$>q$A5 I5QEH$7$7$>$>q$A5 I5QEH$7$7$>$>q$A5 I5QE 1177!;<"5"5"<"<q"@A

QJz!4!4!:!:Q!>?!4!4!;!;a!?@ !,,22eai@EI!,,33uqyAUJ	0H'', $UQY$7!)9L$LMF>>>dnn&?&?&D&DH[H[H`H`&`%)DN7?OOFMM%aM$@$G$GTU$G$VW !4!4!<!<=8-334
 ,0>>+D+D+I+I##('+'I'I('SD$''-334	E   B&8""c)(8(89""c)(8(89LL98??HL]L]_c_h_h_jmp_pq%N!-DK  $t{{++	  	KMM193G3G3IJ	Ks]   
B|/  A=|/ 6|/ "|/ 8|/ B"|/ 2M9|/ ,I|/ 5G!|/ B|/ H|/ #H*|/ /4}&%}&c                	,   V P                   e0   V P                  P                  \        P                  4      '       gx   \
        P                  ! R\        VP                  ^ ,          V,          4      \        VP                  ^,          V,          4      .R4      V P                  \        P                  &   V P                  \        P                  ,          pVP                  R^ ^ VP                  ^ ,          VP                  ^,          .4       ^p^pVP                  ^ 8X  g   VP                  ^8X  d   VP                  P                  VP                  P                  ^ ,          VP                  P                  ^,          ,           VP                  P                  ^ ,          ,
          VP                  P                  ^,          ,
          VP                  P                  ,          ,           pVR,          p	VR,          p
MVP                  P                   VP                  P                  ^,          VP                  P                  ^,          ,           VP                  P                  ^,          ,
          VP                  P                  ^,          ,
          VP                  P                  ,          ,           pVR,          p	VR,          p
\#        ^\%        ^V	4      4      p	\#        ^\%        ^
V
4      4      p
VP&                  '       Ed   V P(                  P&                  '       d   V P                   eU   V P                   P&                  VP&                  8w  g0   V P                  P                  \        P*                  4      '       gZ   V P-                  VP&                  V P.                  P&                  VVP                  VV4      V P                  \        P*                  &   \
        P0                  ! WPP                  \        P*                  ,          4      pVP2                  '       Ed#   V P(                  P4                  '       Ed   V P                   eU   V P                   P2                  VP2                  8w  g0   V P                  P                  \        P6                  4      '       go   V P9                  VP2                  V P.                  P:                  V P.                  P4                  VVP                  VV4      V P                  \        P6                  &   \
        P0                  ! WPP                  \        P6                  ,          4      pVP<                  '       Ed#   V P(                  P>                  '       Ed   V P                   eU   V P                   P<                  VP<                  8w  g0   V P                  P                  \        P@                  4      '       go   V P9                  VP<                  V P.                  PB                  V P.                  P>                  VVP                  VV4      V P                  \        P@                  &   \
        P0                  ! WPP                  \        P@                  ,          4      pVPD                  '       Ed   V P(                  PF                  '       d   V P                   eU   V P                   PD                  VPD                  8w  g0   V P                  P                  \        PH                  4      '       gZ   V PK                  VPD                  V P.                  PF                  VVP                  VV4      V P                  \        PH                  &   \
        P0                  ! WPP                  \        PH                  ,          4      pVPL                  '       Ed#   V P(                  PN                  '       Ed   V P                   eU   V P                   PL                  VPL                  8w  g0   V P                  P                  \        PP                  4      '       go   V P9                  VPL                  V P.                  PR                  V P.                  PN                  VVP                  VV4      V P                  \        PP                  &   \
        P0                  ! WPP                  \        PP                  ,          4      pVPT                  '       Ed#   V P(                  PV                  '       Ed   V P                   eU   V P                   PT                  VPT                  8w  g0   V P                  P                  \        PX                  4      '       go   V P[                  VPT                  V P.                  P\                  V P.                  PV                  VVP                  VV4      V P                  \        PX                  &   \
        P0                  ! WPP                  \        PX                  ,          4      pVP^                  '       EdT   V P(                  P`                  '       g   V P(                  Pb                  '       g   V P(                  Pd                  '       gr   V P(                  Pf                  '       gV   V P(                  Ph                  '       g:   V P(                  Pj                  '       g   V P(                  Pl                  '       Ed   V P                   e   V P                   P^                  VP^                  8w  g   V P                   P                  VP                  8w  gh   \o        V P                   Pp                  4      \o        VPp                  4      8w  g1   V P                  P                  \        Pr                  4      '       EgP   \        Pr                  V P                  9  d   / V P                  \        Pr                  &   M\u        V P                  \        Pr                  ,          Pw                  4       4      Py                  4        F7  pWP^                  9  g   K  V P                  \        Pr                  ,          V K9  	  VP^                  P{                  4        EFr  w  rV P                   e   WP                  \        Pr                  ,          9  g   V P                   P^                  '       d   WP                   P^                  9  g   V P                   P^                  V,          V8w  g_   V P                   P                  VP                  8w  g:   \o        V P                   Pp                  4      \o        VPp                  4      8w  g   K  V P}                  V\o        VPp                  4      VVP                  \        WP                  P                  ,          4      VP                  V4      V P                  \        Pr                  ,          V&   EKu  	  V P                  \        Pr                  ,          '       dZ   \        V P                  \        Pr                  ,          P{                  4       RR7       F  w  r\
        P0                  ! W]4      pK  	  VP                  '       Edo   V P(                  P                  '       EdR   V P                   e   V P                   P                  VP                  8w  g   V P                   P                  VP                  8w  gZ   \o        V P                  ^8  4      \o        V^8  4      8w  g1   V P                  P                  \        P                  4      '       Egl   VP                  pV P                  ^8w  d   V P                  ^8X  d   \        V	R,          4      p\        VP                  V\        P                  ! VP                  \        P                  ,          ^,          4      ,          ,
          VP                  V\        P                  ! VP                  \        P                  ,          ^,          4      ,          ,
          VP                  4      pV P                  VVVVP                  \        WP                  P                  ,          R,          4      VP                  V4      V P                  \        P                  &   \
        P0                  ! WPP                  \        P                  ,          4      pVP                  '       Edr   V P(                  P                  '       EdU   V P                   e   V P                   P                  VP                  8w  g   V P                   P                  VP                  8w  g   V P                   P                  VP                  8w  gg   V P                  V8w  gV   V P                   P                  VP                  8w  g1   V P                  P                  \        P                  4      '       Eg=   VP                  pVP                  '       Ed   VP                  P                  pV P                  ^8w  d   \        V	R,          4      pV P                  ^8w  d   VR8  d   V^-8  d   ^ pMVR8  d   V^-8:  g   VR8  d   VR	8:  d   ^ pMoV^-8  d   V^8:  g   VR8  d   VR8:  d   ^ZpMPV^8  d   V^8:  g   VR8  d   VR8:  d   ^pM1V^8  d   VR8:  g   VR8  d
   VR8:  d   R
pM\        V	R,          4      p\        VP                  P                  V\        P                  ! V\        P                  ,          ^,          4      ,          ,           VP                  P                  V\        P                  ! V\        P                  ,          ^,          4      ,          ,           V P                  ^8w  d
   V^,           MT4      pV P                  VVVVP                  \        WP                  P                  ,          4      VP                  V4      V P                  \        P                  &   \
        P0                  ! WPP                  \        P                  ,          4      pVP                  '       EdT   V P(                  P                  '       Ed7   V P                   ez   V P                   P                  VP                  8w  gU   V P                   P                  VP                  8w  g0   V P                  P                  \        P                  4      '       g{   V P                  VP                  VVP                  \        V
^,          VP                  P                  ,          4      VP                  V4      V P                  \        P                  &   \
        P0                  ! WPP                  \        P                  ,          4      pVP                  VP                  8w  d7   VP                  VP                  \
        P                  P                  RR7       \
        P0                  ! VV4      # )Nr  gl?gQ?T)reversegQk5@333333?i;  i  r  g{GA@      ?)reducing_gap   r  r  r   iiiiy)[r   r  r   r,   OBJECTSr	   newr   r  paster  r  rM  r  r  r  rN  r;  r  r  r>  r  render_pathr4  alpha_compositer  no_mopr	  render_areasno_mop_outliner  no_gor  no_go_outliner  r  r!  render_wallsr  active_arear  active_area_outliner  active_pointr  render_pointsactive_point_outliner  r  r   r  r  r  r  r  r   r  SEGMENTSr  r  rE  rG  render_segmentr  r  chargerrA  r  rB  r5  r!   rq  r   cosr  pirr  sinrender_chargerr~  robotr  r  render_vacuumr  r  	OBSTACLESrender_obstacles	thumbnail
ResamplingBOX)r   rA  r  	map_imager  layer
line_widthborder_widthrM  robot_icon_size	icon_sizerN  rI  rJ  r  r  r~  charger_angles   &&&&&             r{   r  &DreameVacuumMapRenderer.render_objects  s    >>!)9)9:J:R:R)S)S5:YYY^^A&./Y^^A5F5N1OP"6DLL)112
 -556&Auzz!}ejjm(LM
!X%6%6#%=((..''//2))11!45))..q12 ))..q12
 %%++,E $emOI))00''//2))11!45))..q12 ))..q12
 %%++,F %unOIaR!9:3r9-.	===T[[---&>>&&(--7||''(8(=(=>>6:6F6FMM%%**''7-223 ))%>N>S>S1TUE$$$);););&>>22h6O6OO||''(8(?(?@@8<8I8I--%%44%%,,'' 9-445 ))%>N>U>U1VWEDKK$5$5$5&>>--1E1EE||''(8(>(>??7;7H7H((%%33%%++'' 8-334 ))%>N>T>T1UVE>>>dkk666&>>''8>>9||''(8(=(=>>6:6G6GNN%%22''7-223 ))%>N>S>S1TUE   T[[%<%<%<&>>..(2G2GG||''(8(D(DEE=A=N=N))%%99%%11'' >-99: ))%>N>Z>Z1[\E!!!dkk&>&>&>&>>//83I3II||''(8(E(EFF>B>P>P**%%::%%22'' ?-::; ))%>N>[>[1\]EKK{{{{   {{((({{'''{{))){{((( &>>**h.?.??>>**h.?.??//0D9J9J4KK||''(8(A(ABB#,,DLL@>@DLL!1!:!:;!$,,/?/H/H"I"N"N"PQVVX$5$55 $-=-F-F G J Y %--335DA.LL1A1J1J$KK#~~666NN$;$;;>>2215:>>22h6G6GG 7 78DARAR<SSEIEXEX !2!23!$//	,?,?,E,E EF$--!F%5%>%>?B 6( ||,5566"4<<0@0I0I#J#P#P#R\`aDA!11%;E b $$$)<)<)<&>>22h6O6OO>>**h.?.??**Q./4q8H3II||''(8(@(@AAp $,#<#< $$)dmmq.@ 5!89F',(**Vdhh?O?Q?QTXT[T[?[^a?a6b-bb(**Vdhh?O?Q?QTXT[T[?[^a?a6b-bb(**($ :>9L9L$ ''+>+>+D+DDKL%%:-556 ))%>N>V>V1WXE"""t{{'8'8'8&>>00H4K4KK>>22h6O6OO>>**h.?.??%%5>>((HOO;||''(8(>(>??!)!8!8???$,$=$=$?$?M((A-!$_u%<!===A-,s2}r7I01 - 3$1R$7#03#6$1S$801 - 2$1S$8#04#7$1T$902 - 3$1S$8#04#7$1T$903 - 3$1S$8#04#7$1S$803!$_u%<!=%* 1133ftxxX\X_X_H_beHe?f6ff 1133ftxxX\X_X_H_beHe?f6ff/3/@/@A/E+=&N 8<7I7I" ''*=*=*C*CCD%%8-334 ))%>N>T>T1UVE$++"6"6"6&>>++x/A/AA>>**h.?.??||''(8(B(BCC;?;P;P&&''Q(*=*=*C*CCD%%<-778 ))%>N>X>X1YZE::'OOINNE,<,<,@,@sOS$$
 	
r~   c           
     	   \         P                  ! R VP                  R4      p\        P                  ! VR 4      p	V F  p
V
P                  V4      pVP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                  V,          .pV	P                  WW&V,          R7       K  	  V# r  )rM  r  )r	   r  r  r
   Drawr  r  r  r  r  r
  r  r  r  polygon)r   rp  r  fillr  r  rM  r  	new_layerdrawr6  r  r  s   &&&&&&&&     r{   r  $DreameVacuumMapRenderer.render_areas  s    IIfejj2DE	~~i0DJ'Auuuuuuuu	F LLuU]LD  r~   c                	b   \         P                  ! R VP                  R4      p\        P                  ! VR 4      p	^VP
                  ,          p
V EF[  p\        VP                  V
,
          VP                  V
,
          VP                  V
,           VP                  V
,
          VP                  V
,           VP                  V
,           VP                  V
,
          VP                  V
,           4      pVP                  V4      pVP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                   V,          VP"                  V,          .pV	P%                  WW&V,          R7       EK^  	  V# r  )r	   r  r  r
   r  r  r(   rq  rr  r  r  r  r  r  r
  r  r  r  r  )r   r  r  r  r  r  rM  r  r  r  r  rB  r6  r  r  s   &&&&&&&&       r{   r  %DreameVacuumMapRenderer.render_points  s2   IIfejj2DE	~~i0J(((E$$$$$$$$	D J'Auuuuuuuu	F LLuU]LD/ 0 r~   c                	p   \         P                  ! R VP                  R4      p\        P                  ! VR 4      pV Fv  p	V	P                  V4      p
VP                  V
P                  V,          V
P                  V,          V
P                  V,          V
P                  V,          .VWV,          R7       Kx  	  V# r  )r	   r  r  r
   r  r  rz  r  r  r  r  )r   r  r  r  r  rM  r  r  r  r  r  s   &&&&&&&    r{   r  $DreameVacuumMapRenderer.render_walls  s    IIfejj2DE	~~i0DJ'AIIqtte|QTTE\144%<H}    r~   c           	     	   \         P                  ! R VP                  R4      p\        P                  ! VR 4      p. p	. p
. p. pRpV EF  pVP                  V4      pVP                  \        P                  8X  d   VP                  V,          VP                  V,          .pV\        P                  8X  g   V\        P                  8X  d   VP                  V4       V\        P                  8X  g   V\        P                  8X  d   VP                  V4       K  K  V'       d   V
P                  V4       V'       d   V	P                  V4       VP                  pV\        P                  8X  g   V\        P                  8X  d(   VP                  V,          VP                  V,          .pM. pV\        P                  8X  g   V\        P                  8X  d*   VP                  V,          VP                  V,          .pEK  . pEK  	  V'       d   V	P                  V4       V'       d   V
P                  V4       V
 FI  pWV,          ^,          pVP!                  V\#        V4      V^ ,          V^,          V^,          ^d3RR7       KK  	  V	 F  pWV,          pVP!                  V\#        V4      VRR7       \#        \$        P&                  ! V^,          4      4      pVP)                  VR,          V,
          VR,          V,
          VR,          V,           VR,          V,           .VR7       VP)                  V^ ,          V,
          V^,          V,
          V^ ,          V,           V^,          V,           .VR7       K  	  V# )r  r   curve)rM  r  jointr  r  rd  )r	   r  r  r
   r  r  r  r    r  rq  rr  SWEEP_AND_MOPSWEEPr  MOPr  rz  r   r   r   ellipse)r   r  r  r  r  rM  r  r  r  sweepr{  
sweep_pathmop_pathr  rB  r  rm  r  s   &&&&&&&           r{   r  #DreameVacuumMapRenderer.render_path  s   IIfejj2DE	~~i0
	EZ(A(--/SS5[!##+. 6 66)x~~:U%%a( 6 66)x||:SOOA& ;T JJx(LL,!OO	 6 66)x~~:U"###+qssU{!;J!#J 6 66)x||:S !eQSS5[9H!H3 6 LL$JJx D=2%DII$iAha%(C8	    D=DII$i	   tzz$(+,DLLHtOHtOHtOHtO	    LLGdNGdNGdNGdN	   % 8 r~   c           	     	B	   \         P                  ! R VP                  R	4      p\        WW,          4      p	V P                  Ef   V P
                  ^8X  d   \        p
\        V	R,          4      p	MZV P
                  ^8X  d   \        p
\        V	R,          4      p	M0V P                  ^8X  d   \        p
\        V	R,          4      p	M\        p
\         P                  ! \        \        P                  ! V
4      4      4      P                  R 4      P!                  W3\         P"                  P$                  R7      V n        V P
                  ^8X  d'   \&        P)                  V P                  V	R
4      V n        V P*                  P,                  '       d7   \.        P0                  ! V P                  4      pVP3                  R4      V n        V P                  P5                  V P                  ^8X  g#   V P
                  ^8X  g   V P
                  ^8X  d   VP6                  MV) ^R7      pVP9                  V4      pVP;                  V\        VP<                  V,          VP                  ^ ,          ^,          ,
          4      \        VP>                  V,          VP                  ^,          ^,          ,
          4      3V4       V^8  Ed   V P@                  f   \         P                  ! \        \        P                  ! \B        4      4      4      P                  R 4      P!                  \        V	R,          4      \        V	R,          4      3\         P"                  P$                  R7      P5                  V) 4      V n         \.        P0                  ! V P@                  4      pV P*                  P,                  '       d   VP3                  R4      V n         V P@                  pVP<                  V,          pVP>                  V,          pV	R,          pV^Z8X  d   VV,           pM+V^8X  d   VV,           pMVR8X  d   VV,
          pM	VV,
          pVP;                  V\        WP                  ^ ,          ^,          ,
          4      \        VVP                  ^,          ^,          ,
          4      3V4       V# )r  r  r  resampleffffff?rP        ?g?r  r  )r   r  ~   )"r	   r  r  r   rF  r5  MAP_CHARGER_IMAGE_MATERIALMAP_CHARGER_IMAGE_MIJIArB  MAP_CHARGER_VSLAM_IMAGE_DREAMEMAP_CHARGER_IMAGE_DREAMEr  r   r  r  r  rQ  r  NEARESTr2  r|  r4  darkr   rh  ri  rotater  r  r  rq  rr  rL  MAP_ROBOT_WASHING_IMAGE)r   r  r  r  r  r  map_rotationr  r  r  charger_imagerq  charger_iconrB  r  icon_xicon_yr  s   &&&&&&&&          r{   r  &DreameVacuumMapRenderer.render_charger"  s   IIfejj2DE	%	%}}! :	C0	!# 7	C0	$$)$BM #IO 4I$<M 

76#3#3M#BCD.9I9I9Q9QR  }}!%<%L%L&&!&"   %%%'2243E3EF%-%5%5c%:"))00 $$)T]]a-?4==TUCU !""#m 1 
 !''
3%''E/l&7&7&:Q&>?@#uwwQV[g[l[lmn[ors[sFtBuv	
 !''/JJwv'7'78O'PQRWV_VST!12C	D8H4IJUZUeUeUmUmVnV\M*	 ( (2243K3KL$$)))/7/?/?/ED,++DWWu_FWWu_F_Fr!&$&$&&OOVyy|a/013v1PQAQ7R3ST
 r~   c           
     	   \         P                  ! R VP                  R4      p\        WW,          4      p	V P                  Ef   T	p
V P
                  ^8X  dJ   \        V	R,          4      p
V P                  ^8X  d   \        pMV P                  ^8X  d   \        pMm\        pMfV P                  ^8X  d   \        pMNV P                  ^8X  d    V P
                  ^8X  d   \        pM%\        pMV P
                  ^8X  d   \        pM\        p\         P                  ! \!        \"        P$                  ! V4      4      4      P'                  R 4      P)                  W3\         P*                  P,                  R7      V n        V P                  ^8w  d   V P
                  ^8w  d{   V P
                  ^8w  dj   \.        P0                  ! V P                  4      pV P2                  P4                  '       d   VP7                  R4      V n        MVP7                  R4      V n        V P                  P9                  VP:                  4      pVP=                  V4      pRpV^8X  Ed   V P>                  f   \         P                  ! \!        \"        P$                  ! \@        4      4      4      P'                  R 4      P)                  \        V	R,          4      \        V	R,          4      3\         P*                  P,                  R7      V n        V P>                  pV PB                  PD                  '       Ed   V PF                  f   \         P                  ! \!        \"        P$                  ! \H        4      4      4      P'                  R 4      P)                  \        V	R,          4      \        V	R,          4      3\         P*                  P,                  R7      V n#        V PF                  P9                  VP:                  ^R7      p\        V	^,          4      pVPJ                  V\L        PN                  ! VP:                  ) \L        PP                  ,          ^,          4      ,          ,           pVPR                  V\L        PT                  ! VP:                  ) \L        PP                  ,          ^,          4      ,          ,           pVPW                  V\        VV,          VP                  ^ ,          ^,          ,
          4      \        VV,          VP                  ^,          ^,          ,
          4      34       EM}V^8X  d   V PX                  f   \         P                  ! \!        \"        P$                  ! \Z        4      4      4      P'                  R 4      P)                  \        V	R,          4      \        V	R,          4      3\         P*                  P,                  R7      V n,        V PX                  pMV^8X  g   V^8X  g   V^8X  d   V P\                  f   \         P                  ! \!        \"        P$                  ! \^        4      4      4      P'                  R 4      P)                  \        V	R,          4      \        V	R,          4      3\         P*                  P,                  R7      V n.        V P\                  pV'       d   \         P                  ! R	VP                  ^ 4      p\`        Pb                  ! V4      pVPe                  ^ ^ VP                  ^ ,          VP                  ^,          3^R
7       VPW                  V\        VPJ                  V,          VP                  ^ ,          ^,          ,
          4      \        VPR                  V,          VP                  ^,          ^,          ,
          4      3V4       VPW                  V\        VPJ                  V,          VP                  ^ ,          ^,          ,
          4      \        VPR                  V,          VP                  ^,          ^,          ,
          4      3V4       V^8X  g	   V^8X  Ed   V Pf                  Ef;   \         P                  ! \!        \"        P$                  ! \h        4      4      4      P'                  R 4      P9                  V) ^R7      p\.        P0                  ! V4      pV P2                  P4                  '       g   VP7                  R4      pVP)                  \        V	R,          4      \        V	R,          4      3\         P*                  P,                  R7      VP)                  \        V	R,          4      \        V	R,          4      3\         P*                  P,                  R7      .V n3        \        V	R,          4      \        V	R,          4      ^ .\        V	R,          4      \        V	R,          4      ^.3 EFy  pV Pf                  V^,          ,          pV^Z8X  d6   VPJ                  V^,          ,           pVPR                  V^ ,          ,           pMV^8X  d6   VPJ                  V^ ,          ,
          pVPR                  V^,          ,           pMpVR8X  d6   VPJ                  V^,          ,
          pVPR                  V^ ,          ,
          pM4VPJ                  V^ ,          ,           pVPR                  V^,          ,
          pVPW                  V\        VV,          VP                  ^ ,          ^,          ,
          4      \        VV,          VP                  ^,          ^,          ,
          4      3V4       EK|  	  V# )r  Ngffffff?r  r  g?r  r  ?rl  r  r  g333333?ffffff?g(\?g
ףp=
?gQ?r  r  )5r	   r  r  r   rG  r5  rB  MAP_ROBOT_MOP_IMAGE_MIJIAMAP_ROBOT_VSLAM_IMAGE_MIJIAMAP_ROBOT_LIDAR_IMAGE_MIJIAMAP_ROBOT_MOP_IMAGE_DREAME"MAP_ROBOT_VSLAM_IMAGE_DREAME_LIGHT!MAP_ROBOT_VSLAM_IMAGE_DREAME_DARK"MAP_ROBOT_LIDAR_IMAGE_DREAME_LIGHT!MAP_ROBOT_LIDAR_IMAGE_DREAME_DARKr  r   r  r  r  rQ  r  r  r   rh  r4  r   ri  r  r  r  rI  MAP_ROBOT_CLEANING_IMAGEr>  cleaning_directionrM  "MAP_ROBOT_CLEANING_DIRECTION_IMAGErq  r   r  r  rr  r  r  rH  MAP_ROBOT_CHARGING_IMAGErJ  MAP_ROBOT_WARNING_IMAGEr
   r  r  rK  MAP_ROBOT_SLEEPING_IMAGE)r   r~  r  r  r  r  r  r  r  r  r  robot_imagerq  r  rB  status_iconrx  r  rq  rr  maskr  sleeping_iconrI  s   &&&&&&&&                r{   r  %DreameVacuumMapRenderer.render_vacuumu  sD   IIfejj2DE	%	#'O}}!"%i#o"6$$)";K&&!+"=K"=K$$)"<K&&!+}})&H&G}})&H&G 

76#3#3K#@AB:UEUEUE]E]^    A%$--1*<RSAS'2243C3CD$$)))'/'7'7'<D$'/'7'7'<D$&&~'7'78%%j11((0JJwv'7'78P'QRSWV_Vc)d"23ST9I5JKW\WgWgWoWoVp )
 33K{{---66>

76+;+;<^+_#`a #i#o"6IO8L!MY^YiYiYqYqr 7 99@@AQAQZ[@\Y]+GGftxx1A1A0ADGG0Kc0Q'RRRGGftxx1A1A0ADGG0Kc0Q'RRRAI!q9:AI!q9: Q((0JJwv'7'78P'QRSWV_Vc)c/2C	C4HIUZUeUeUmUmVn )
 33KQ,!"3|q7H''/JJwv'7'78O'PQRWV_Vc)c/2C	C4HIUZUeUeUmUmVn (
 22K99S+"2"2A6D>>$'DLL!Q 0 0 3[5E5Ea5HIPSLTOO%;+;+;A+>+BCD%;+;+;A+>+BCD  	EGGeOtyy|a'789EGGeOtyy|a'789 	
 1 1((0JJwv'7'78P'QRSWV_V\M!V4 
 (22=A((---$,$4$4S$9M "((i#o.IO0DEQVQaQaQiQi )  "((i$./Y5E1FGSXScScSkSk ) 	-) Y%&I,<(=qAY%&I,<(=qA #77!=2%!A$A!A$A!S(!A$A!A$A!S(!A$A!A$A!A$A!A$AAI)9)9!)<q)@ABAI)9)9!)<q)@AB  %4 r~   c           
     	'   \         P                  ! R VP                  R4      p\        P                  ! VR 4      p	VP
                  Ee   VP                  Ee   Rp
V P                  P                  '       d&   V P                  P                  VP                  4      MRpVP                  ^ 8X  g   VfP   V P                  ^8w  g   Vf   VP                  e   VP                  MV P                  ^8w  d   VP                   MRp
M&VP"                  ^ 8  d   \%        VP"                  4      p
RpRpV
'       d   V P                  P                  '       dc   \&        P(                  ! \+        V P,                  4      VP"                  '       g   Vf   \/        VR,          4      M\/        VR,          4      4      pVP0                  '       dW   V P                  P0                  '       d;   \&        P(                  ! \+        V P,                  4      \/        VR,          4      4      p\3        VP
                  VP                  4      P5                  V4      pVP
                  pVP                  pV P                  P                  '       g   V P                  P                  '       Ed   VP                  '       g&   V'       g   V P                  P                  '       Eg   YPP                  ^8X  d   RMR,          pW,
          pVV,
          pW,           pVV,           pV'       Ed   V	P7                  RW4      w  ppppV^,          pVP"                  ^ 8  g   Vf8   VR,          pV^,          pV^,          ^,           p^p\/        VR,          4      pM6VR	,          pVR
,          pV^,
          pV^,          p\/        VR,          4      pVf   ^ pV^,          ) pV^Z8X  g   VR8X  d   VV,
          V,
          pVV,           V,           pV^Z8X  d@   VV,
          V,           V,          pVV^,          ,
          V,          pVV,
          V,
          pMVV,
          V,
          V,          pVV^,          ,
          V,          pVV,           V,           pMVV,
          V,
          pVV,           V,           pV^ 8X  d@   VV,
          V,           V,          pVV^,          ,
          V,          pVV,
          V,
          pM>VV,
          V,
          V,          pVV^,          ,
          V,          pVV,           V,           pV P                  P                  '       ds   V	P9                  \/        VV,          4      \/        VV,          4      \/        VV,          4      \/        VV,          4      .V P:                  P<                  WW,          R7       \         P                  ! R VV3R4      p \        P                  ! V R 4      p!V P                  P                  '       d0   ^p"V P:                  P>                  p#V P:                  P@                  p$M'^p"V P:                  PB                  '       d   Rp#Rp$MRp#Rp$V!P?                  RV
VV#V"V$R7       V PE                  V) ^R7      p VPG                  V \/        V4      \/        V4      3V 4       MKVeH   V	PI                  VV,          VV,          VV,          VV,          .V P:                  P<                  R7       Ve   VV,          p%VPK                  \/        V%4      \/        V%4      34      PE                  V) ^R7      pVPG                  V\/        W,          VP                  ^ ,          ^,          ,
          4      \/        VV,          VP                  ^,          ^,          ,
          4      3V4       T;'       dq    V P                  PL                  ;'       gS    V P                  PN                  ;'       g5    V P                  PP                  ;'       g    V P                  PR                  p&V'       g
   V&'       Ed   VR,          p'^ p(V') p)V^Z8X  d   ^ p)T'p(MV^8X  d   T'p)MVR8X  d   ^ p)V') p(VP
                  V(,           pVP                  V),           pVPR                  e#   VPR                  ^ 8  g   VPR                  ^8  d   RMVPR                  p*V&'       Ed   V^,          p%V%^,           V,          p+V'       d   ^p,M^p,V P                  PL                  '       d   VPL                  f
   V,^,
          p,V P                  PN                  '       d   VPN                  f
   V,^,
          p,V P                  PP                  '       d   VPP                  f
   V,^,
          p,V P                  PR                  '       d   V*f
   V,^,
          p,V*^ 8X  g   V*^8X  d
   V,^,
          p,M^p,V'       g   V P                  P                  '       g   ^ p+Tp-\/        \U        V-R,          4      4      p+\/        \U        V-R,          4      4      p%V,^8  d   T%M^ p.V&'       d
   V^,
          p-V-V,,          ^,          V,          V+^,          ,           V.^,          ,           p/V-^,          V,          V+^,          ,           p0\         P                  ! R V/V03R4      p\        P                  ! VR 4      p1V+'       dx   VP                  ^ 8w  g	   V'       d_   V/^,          p2V0^,
          p3V1PW                  V2V33V2V+,
          V3V+,
          3V2V+,           V3V+,
          3.V P:                  PX                  R7       V1P9                  V+V+V/V+,
          V0V+,
          .V P:                  PX                  V0V+^,          ,
          ^,          R7       V%V+,           pV0V^,          ,
          p4VV.,           p5V5V4,           p6V'       Ed   V1PI                  V5VV6V0V,
          .V P:                  PZ                  VP\                  ,          ^,          R7       \%        VP0                  4      p
V1P7                  RW4      w  ppppV1P?                  V0V,
          ^,          V.,           V0V,
          \/        \U        V-R,          4      4      ,
          ^,          3V
VV P:                  P0                  ^V P:                  P@                  R7       V6V.^,          ,           p5V5V4,           p6V&'       Edt   VR,          pV P                  PR                  '       Edi   V*Eed   V P                  ^8X  d   VR,          V,          p%MVR,          V,          p%\^        Pa                  V Pb                  VPR                  ,          V%V P:                  PZ                  VP\                  ,          ^,          4      p7V1PI                  V5VV6V0V,
          .V P:                  Pd                  R7       VPG                  V7\/        ^V5,           V6V5,
          ^,          ,           V7P                  ^ ,          ^,          ,
          4      \/        V0^,          V7P                  ^,          ^,          ,
          4      3V74       V6V.^,          ,           p5V5V4,           p6V P                  PL                  '       Ed{   VPL                  Eel   V*^8w  Edd   V P                  ^8X  d   VR,          V,          p%MVR,          V,          p%\^        Pa                  V Pf                  VPL                  ,          V%V P:                  PZ                  VP\                  ,          ^,          4      p7V1PI                  V5VV6V0V,
          .V P:                  Pd                  R7       VPG                  V7\/        ^V5,           V6V5,
          ^,          ,           V7P                  ^ ,          ^,          ,
          4      \/        V0^,          V7P                  ^,          ^,          ,
          4      3V74       V6V.^,          ,           p5V5V4,           p6V P                  PN                  '       Ed   VPN                  Ee   V*^ 8w  Ed   V P                  ^8X  d   VR,          V,          p%M2V P                  ^8X  d   VR,          V,          p%MVR,          V,          p%\^        Pa                  V Ph                  VPN                  ^,
          ,          V%V P:                  PZ                  VP\                  ,          ^,          4      p7V1PI                  V5VV6V0V,
          .V P:                  Pd                  R7       VPG                  V7\/        ^V5,           V6V5,
          ^,          ,           V7P                  ^ ,          ^,          ,
          4      \/        V0^,          V7P                  ^,          ^,          ,
          4      3V74       V6V.^,          ,           p5V5V4,           p6V P                  PP                  '       Edr   VPP                  Eec   V P                  ^8X  g   V P                  ^8X  d   VR,          V,          p%MVR,          V,          p%\^        Pa                  V Pj                  VPP                  ^,
          ,          V%V P:                  PZ                  VP\                  ,          ^,          4      p7V1PI                  V5VV6V0V,
          .V P:                  Pd                  R7       VPG                  V7\/        ^V5,           V6V5,
          ^,          ,           V7P                  ^ ,          ^,          ,
          4      \/        V0^,          V7P                  ^,          ^,          ,
          4      3V74       VPE                  V) ^R7      pVPG                  V\/        W,          VP                  ^ ,          ^,          ,
          4      \/        VV,          VP                  ^,          ^,          ,
          4      3V4       V# )r  Ngffffff?g333333?g @g      ?r
  g?gffffff@gffffff?r  r  )r  radius)fontr  stroke_widthstroke_fillr  r  g@g333333?g      ?g?g333333?r  333333?gffffff?r  )r   r   )   r%  r%  r  )r   r   r      )   r'  r'  r  )r  r  r  r&  )6r	   r  r  r
   r  rq  rr  r>  r  rW  r   r  rB  r  r   r5  letterr  r   r   truetyper   rn  r   r  r!   r  textbboxrounded_rectangler4  icon_backgroundtexttext_stroker   r  r  r  rQ  r  r  r  r  rf  r  settings_backgroundry  r  r2  r|  rf  settings_icon_backgroundrd  re  rc  )8r   ry  r  r  r  r  r  r  r  r  r-  r  	text_font
order_fontr  rq  rr  r  r  r  r  r  r  r  twthwsr  text_offseticon_offsettytx	icon_text	draw_textr"  
text_colorstroke_colorr  customr  x_offsety_offsetr  arrow
icon_countr   marginicon_wicon_h	icon_drawr{  rz  r
ellipse_x1
ellipse_x2rx  s8   &&&&&&&&                                                r{   r  &DreameVacuumMapRenderer.render_segment  sA   IIfejj2DE	~~i099 WYY%:D<@KK<L<L<L4&&**7<<8RVD||q DL ))Q.$2BwGZGZGf LL+/==A+=4 
 "7==)IJ(((%..DNN+)0$,C%CQUX[Q[L]	
 }}}!2!2!2&//0GdUXjIZ[
gii+22:>AAA{{4;;#3#3#3<<<9DKK4D4D4D $0B LIBTBBTB y,0MM&$,R)c2r!V"==1,(,tI&/!mG+4q=A*=K*+K!$TCZB(,tI&/$&6G*1A+K*3a-K!$TCZB<*+K(1A&6G#r>X_!#b7!2B!#b7!2B'2~&'"f{&:e%C&'26le%;$%F[$8&'"f{&:e%C&'26le%;$%F[$8!#b7!2B!#b7!2B'1}&'"f{&:e%C&'26le%;$%F[$8&'"f{&:e%C&'26le%;$%F[$8;;+++ 22$'U
O$'U
O$'U
O$'U
O	!" &*%6%6%F%F)- 3 	 %*IIfr2h@R$S	$-NN9f$E	;;++++,L)-):):)?)?J+/+<+<+H+HL+,L#00555-A
/=->
/C!" !*!+)5(4 '  %.$4$4hYq$4$I	!	CGSW3EyQ)%ZeR%ZeL!%!2!2!B!B % 
 '%-#{{CFCF+;<CCXIVWCX! 3qyDIIaL14D'E#FAPUIY]YbYbcdYehiYiLjHk"lnr   )) - -;;++- -;;--- - ;;,,	  VV"7r> H%H_%H_ H &wHCC(NCC(N ,,48M8MPQ8QU\UjUjmnUn  .. 
 6	AUeOE!%&
%&
;;4448M8M8U%/!^
;;333w7K7K7S%/!^
;;5559O9O9W%/!^
;;4448M%/!^
$)]a-?%/!^
!"JDKK$4$4$4EE&3,/0ftm,-(1n!!AXF!J.2e;	JfWXjY!A:.519=yy&&)9;MN%NN48	glla/9!B!B%%H%Ze4%Ze4
 "..BB &  ++E6E>6E>B**>>#uqy1Q6 ,  e)gk*$v-
'!^
:%%#Wj&7:JK!..66w7J7JKAN &  w}}-D(1(:(:64(T%D#r2NN#b[A-6#b[3uVc\/B+CCqH '!..44%&$($5$5$A$A # 
 ",vz!:J!+aJ6 $tI{{000]5N==A- )C% 7A )D 05 8A5EE 44W5J5JK --55g6I6IJ1M "))'*v?OQ!%!2!2!K!K *  

 #A
NzJ7NRS6S$TWZW_W_`aWbefWf$f g #fqjCHHQK!O%C E   &06A:%>
%/!^
{{000W5J5J5V[hlm[m==A- )C% 7A )D 05 8A5EE 44W5J5JK --55g6I6IJ1M
 "))'*v?OQ!%!2!2!K!K *  

 #A
NzJ7NRS6S$TWZW_W_`aWbefWf$f g #fqjCHHQK!O%C E   &06A:%>
%/!^
{{///G4H4H4TYfjkYk==A- )D 05 8A!]]a/ )C% 7A )D 05 8A5EE 33G4H4H14LM --55g6I6IJ1M "))'*v?OQ!%!2!2!K!K *  

 #A
NzJ7NRS6S$TWZW_W_`aWbefWf$f g #fqjCHHQK!O%C E   &06A:%>
%/!^
{{111g6L6L6X==A-!1C )D 05 8A )D 05 8A5EE 55g6L6Lq6PQ --55g6I6IJ1M "))'*v?OQ!%!2!2!K!K *  

 #A
NzJ7NRS6S$TWZW_W_`aWbefWf$f g #fqjCHHQK!O%C E   {{H9Q{7QYDIIaLA+=>?QYDIIaLA+=>?  r~   c                	
   \         P                  ! R VP                  R4      pWF,          R,          p\        P                  ! VR 4      p	V P
                  f   \         P                  ! \        \        P                  ! \        4      4      4      P                  R 4      P                  V) 4      V n        V P
                  P                  WF,          V,          WF,          V,          3\         P                  P                  4       \!        \#        WF,          R,          ^,          4      4      p
RV,          pV^Z8X  d   ^ pTpMV^8X  d   Tp^ pMVR8X  d   ^ pV) pM^ pV) pV EF  pV P$                  P'                  VP(                  P*                  4      pV'       g   K=  VP-                  V4      pVP.                  pVP0                  pVP3                  V P
                  \!        \#        VV,          V P
                  P                  ^ ,          ^,          ,
          V,           4      4      \!        \#        VV,          V P
                  P                  ^,          ^,          ,
          V,           4      4      34       V	P5                  VV
,
          V,          VV
,
          V,          VV
,           V,          VV
,           V,          .V P6                  P8                  ^ ,          ^ ,          R7       VP;                  \!        V4      \!        V4      34      P                  V) 4      pVP3                  V\!        \#        VV,          V^,          ,
          4      4      \!        \#        VV,          V^,          ,
          4      4      3V4       EK"  	  V# )r  r$  r  r  r  r  i)r	   r  r  r
   r  rN  r  r   r  r  MAP_ICON_OBSTACLE_BG_DREAMEr  r  r  r  LANCZOSr   rf  rj  r   r  r   r  rq  rr  r  r  r4  ry  rQ  )r   r  r  r  r  r  r  r  r  r  bg_sizer  r@  r?  r  r  r  rq  rr  s   &&&&&&&            r{   r  (DreameVacuumMapRenderer.render_obstacles  s   IIfejj2DE	L4'	~~i0$$,

76#3#34O#PQRZZ[abiiksjst % %%//1Et|V[G[0\^c^n^n^v^vweT\C/1456er>HH_HH_HwHHwH!H''++H,B,B,H,HIDtOOJ/CCCC--E!e)t/H/H/M/Ma/PST/T"UX`"`abE!e)t/H/H/M/Ma/PST/T"UX`"`ab 'kU*Q[E,AAKSXCX[\_f[fjoZop**2215a8  
 {{C	NC	N#CDKKXIV3uQY)a-%@ABCaRWi[dgh[hNiHjDklnr+ "2 r~   c                   V ^8  d   QhRR/# ru   rw   zdict[str, int]ry   )rz   s   "r{   r|   r8    s     ( (N (r~   c                	    V P                   # r  )rC  r   s   &r{   r  *DreameVacuumMapRenderer.calibration_points  s    '''r~   c                   V ^8  d   QhRR/# r)  ry   )rz   s   "r{   r|   r8    s     8 85 8r~   c                	8    V P                  V P                  4      # r  )r   r  r   s   &r{   r  )DreameVacuumMapRenderer.default_map_image  s    t6677r~   c                   V ^8  d   QhRR/# r)  ry   )rz   s   "r{   r|   r8    s     & & &r~   c                	    V P                   '       d?   V P                  V P                   P                  \        P                  ! ^4      4      4      # V P
                  # )   )rE  r   filterr   GaussianBlurr  r   s   &r{   r.  .DreameVacuumMapRenderer.disconnected_map_image  s@    ;;;??4;;#5#5k6N6Nr6R#STT%%%r~   c                   V ^8  d   QhRR/# rQ  ry   )rz   s   "r{   r|   r8    s     0 0N 0r~   c                	    V P                   # r  )rD  r   s   &r{   default_calibration_points2DreameVacuumMapRenderer.default_calibration_points  s    ///r~   )rC  rF  rf  rc  rD  r  rE  r  r   rN  rj  rH  rM  rI  rG  rB  rK  rA  rJ  rL  rW  rd  re  r4  r>  rn  r5  r  )NNNr   r  )r  r  r  r  r   r  r   r|  r  r  r  r&  r  r  r  r  r  r  r  r  r  r   r  r  r.  r_  r!  ry   r~   r{   r2  r2    s    eZN % %   0 0" P Pd & & V,pq
f$<
ObQf^@kZ3j ( ( 8 8 & &
 0 0r~   r2  c                      ] tR tRtR R ltR tR tR tR tR t	R	 t
R
 tR tR R ltR R ltR tR R ltR tR tR tR tR tR tR tRR ltRR ltRtR# ) r   i  c                   V ^8  d   QhRR/# r   ry   )rz   s   "r{   r|   %DreameVacuumMapOptimizer.__annotate__  s     " "$ "r~   c                	    R V n         R # r  _js_optimizerr   s   &r{   r   !DreameVacuumMapOptimizer.__init__  s
    !r~   c                	`   \        ^V^,
          4       F  p\        ^V^,
          4       F  pWB,          V,           pW,          ^8X  g   K!  ^ pW^,
          ,          ^8w  d
   V^,           pW^,           ,          ^8w  d
   V^,           pWV,           ,          ^8w  d
   V^,           pWV,
          ,          ^8w  d
   V^,           pV^8  g   K  ^ W&   K  	  K  	  \        ^V^,
          4       F  p\        ^V^,
          4       Fy  pWB,          V,           pW,          ^8X  g   K!  W^,
          ,          ^8X  d   W^,           ,          ^8X  g-   WV,           ,          ^8X  g   K_  WV,
          ,          ^8X  g   Ku  ^W&   K{  	  K  	  \        \        V4      4       F  pW,          ^8X  g   K  ^ W&   K  	  R# r  rn  r   )r   r   rM  rN  r  r  r  nums   &&&&    r{   _clean_wall$DreameVacuumMapOptimizer._clean_wall  sW   q&1*%A1eai(	A;!#CAI!+!AgAI!+!AgEM*a/!AgEM*a/!AgQw&' ) &  q&1*%A1eai(	A;!#QY1,aiA1EU]+q0T%-5HA5M&' ) & s4y!Aw!| "r~   c                	
   \        ^4       F  p\        V4       F  p\        V4       F  pWR,          V,           pW,          pV^8X  g   K#  V^ 8X  d   ^ MW^,
          ,          p	Wb^,
          8X  d   ^ MW^,           ,          p
WS^,
          8X  d   ^ MWV,           ,          pV^ 8X  d   ^ MWV,
          ,          pV	^ 8X  d   V
^8X  g/   V	^8X  d   V
^ 8X  g!   V^ 8X  d   V^8X  g   V^8X  g   K  V^ 8X  g   K  ^ W&   K  	  K  	  K  	  R# r  rn  )r   r   rM  rN  itr  r  r  cValuerm  rG  tr  s   &&&&         r{   _obstacle_data'DreameVacuumMapOptimizer._obstacle_data  s    (B6]uAIME![F{!"aAT!)_!"qy!1AtAI!"z!2AU]8K!"aAT%--@FqAv16a1f!q&UVZ[U[abfgaglmqrlr*+DK & # r~   c                	x   \        V4      p\        V4       FD  pW,          ^ 8X  d   V^ .u # W^,
          V,          V,           ,          ^ 8X  g   K:  WS^,
          .u # 	  \        V4       FL  pWV,          ,          ^ 8X  d   ^ V.u # WV,          V^,
          ,           ,          ^ 8X  g   KA  V^,
          V.u # 	  R# r  r   rn  )r   r   rM  rN  r  r  r  s   &&&&   r{   _find_first_empty_point0DreameVacuumMapOptimizer._find_first_empty_point  s    4yuAw!|1vaZ5(1,-2QJ((  vAI!#1vI+,1Q'' r~   c                	6   . pV^ ,          pV^,          p\        V^,
          V^,           4       Ff  p\        V^,
          V^,           4       FE  p	W8X  g	   W8X  g   K  W,          V	,           p
W,          ^ 8X  g   K/  ^W&   VP                  W.4       KG  	  Kh  	  V# r  )rn  r  )r   r   rM  rN  rB  findsrq  rr  _j_ir  s   &&&&&      r{   _find_zero_point)DreameVacuumMapOptimizer._find_zero_point  s    !H!HAq1u%BAE1q5)7bgJOE{a'&)bX. * & r~   c           
     	>   V P                  WV4       \        V4      p^p\        ^4       EF  p\        V4       EFc  pRp	Rp
\        V4       EFK  pW,          V,           pW,          ^ 8w  Ed   V
'       Ed   V	^ 8  Ed	   W,
          ^,
          V8:  d   \        V	^,           V4       F  p^ pV^ 8  d   V^ 8  d   \        V^,
          V^,           4       F  p\        V^,
          V^,           4       Fl  pW8w  g   K  VV8w  g   K  W8X  g
   VV8X  g   K#  VV,          V,           pV^ 8  g   K<  VV8  g   KE  VVV,          V,           ,          ^ 8w  g   Kc  V^,           pKn  	  K  	  M^pV^8  g   K  WAW,          V,           &   K  	  Rp
Tp	EK?  V	^ 8  g   EKI  Rp
EKN  	  EKf  	  \        V4       EFf  pRpRp
\        V4       EFN  pW,          V,           pW,          ^ 8w  Ed"   V
'       Ed   V^ 8  Ed   VV,
          ^,
          V8:  d   \        V^,           V4       F  p^ pV^ 8  d   V^ 8  d   \        V^,
          V^,           4       F  p\        V^,
          V^,           4       Fn  pVV8w  g   K  VV8w  g   K  VV8X  g
   VV8X  g   K%  VV,          V,           pV^ 8  g   K>  VV8  g   KG  VVV,          V,           ,          ^ 8w  g   Ke  V^,           pKp  	  K  	  M^pV^8  g   K  WAW,          V,           &   K  	  Rp
TpEKB  V^ 8  g   EKL  Rp
EKQ  	  EKi  	  EK  	  R# )r  FTNrd  )_fill_map_data_2r   rn  )r   r   rM  rN  r  r  ssizero  r  startYisEmptyr  r  rz  rj  _DreameVacuumMapOptimizer__i_DreameVacuumMapOptimizer__jindstartXr{  s   &&&&&               r{   _fill_map_data'DreameVacuumMapOptimizer._fill_map_data  s   d624y(B5\vAIME{a'"7v{ !
Q58*/
A*>B*+C'(1ua38QA3FC7<R!VR!V7L368r	7:x3"9>AEkC>O;>!8d
W[\_bg\gjm\mWnrsWsBE'C 8M 4G /0'*ax?CRZ!^(< +?  ',G!"!Q;&*G3 ' "< 6]uAIME{a'"7v{ !F
Q58*/
A*>B*+C')Av!a%38aa3HC7<QUAE7J36"97:byC1H>AEkC>O;>!8d
W[\_bg\gjm\mWnrsWsBE'C 8K 4I /0'*ax?CQY^(< +?  ',G!"!Q;&*G5 & #? r~   c                	J   VP                  4       p^p\        V4       EF0  pRp\        V4       EF  pW,          V,           p	W,          ^ 8w  d   V^ 8  d   TpK+  VR8w  d   W,
          V8:  d   Rp
V^ 8X  g   Wb^,
          8X  g   W,
          ^8:  d   Rp
V
'       g=   V^,
          pRp
\        Wx4       F"  pWLV,          V,           ,          ^8X  g   K   Rp
 M	  V
'       g=   V^,           pRp
\        Wx4       F"  pWLV,          V,           ,          ^8X  g   K   Rp
 M	  V
'       d%   \        Wx4       F  p^ WV,          V,           &   K  	  RpEK  	  EK3  	  \        V4       EF0  pRp\        V4       EF  pW,          V,           p	W,          ^ 8w  d   V^ 8  d   TpK+  VR8w  d   Wm,
          V8:  d   Rp
V^ 8X  g   W^,
          8X  g   Wm,
          ^8:  d   Rp
V
'       g=   V^,
          pRp
\        W4       F"  pWNV,          V,           ,          ^8X  g   K   Rp
 M	  V
'       g=   V^,           pRp
\        W4       F"  pWNV,          V,           ,          ^8X  g   K   Rp
 M	  V
'       d%   \        W4       F  p^ WV,          V,           &   K  	  RpEK  	  EK3  	  ^p\        V4       Fx  pRp\        V4       Fd  pW,          V,           p	W,          ^ 8w  d   V^ 8  d   TpK*  VR8w  d2   W,
          V8:  d%   \        Wx4       F  p^ WV,          V,           &   K  	  RpKf  	  Kz  	  \        V4       Fx  pRp\        V4       Fd  pW,          V,           p	W,          ^ 8w  d   V^ 8  d   TpK*  VR8w  d2   Wm,
          V8:  d%   \        W4       F  p^ WV,          V,           &   K  	  RpKf  	  Kz  	  R# )   FTNrd  )rE  rn  )r   r   rM  rN  
tmpMapInfor  r  r  r  r  isBorderr{  rI  r  rz  s   &&&&           r{   _denoise!DreameVacuumMapOptimizer._denoise\  sM   YY[
uAF6]	A;!#z!"R<QZE$9$HAvqy!1ajQ5F#'#U#'!&v!1A)e)b.9Q>+0 % "2
 $U#'!&v!1A)e)b.9Q>+0 % "2
  !&v!1A23DUQ/ "2 A # H vAF5\	A;!#z!"R<QZE$9$HAvz!2qza6G#'#U#'!&v!1A)u*q.9Q>+0 % "2
 $U#'!&v!1A)u*q.9Q>+0 % "2
  !&v!1A23DUQ/ "2 A " H uAF6]	A;!#z!"R<QZE$9"6-./Y]+ .  #  vAF5\	A;!#z!"R<QZE$9"6-./Y]+ .  " r~   c                	   \        V4       F  p\        V4       F  pWR,          V,           pW,          ^ 8w  g   K!  V^ 8X  g"   WS^,
          8X  g   V^ 8X  g   Wb^,
          8X  d   WAV&   KO  Rp\        V^,
          V^,           4       FM  p	\        V^,
          V^,           4       F"  p
WV,          V	,           ,          ^ 8X  g   K   Rp M	  V'       g   KM   M	  V'       g   K  WAV&   K  	  K  	  R# r   FTNrn  )r   r   rM  rN  stroker  r  r  hasFindr{  rz  s   &&&&&      r{   _update_border_value-DreameVacuumMapOptimizer._update_border_value  s    vA5\	A;!#Avz!2a1fai@P&,U"'"'Aq1u"5B&+AE1q5&9#'U
R#8A#=.2G$) ':  'w % #6 #7*0K! " r~   c                	   \        V4      p\        V4       EF  pRp\        V4       EF  pW,          V,           p	V^,
          p
W,          V8X  d   W^,
          8w  d   V^ 8  d   TpKA  V^ 8  EdQ   W^,
          8X  d   W,          V8X  d   Tp
W8X  d   RpKo  ^ p\        Wz^,           4       F  pV^,
          pV^ 8  d,   W,          V,           pW8  d   W,          V8X  d
   V^,           pV^,           pW8  d,   W,          V,           pW8  d   W,          V8X  d
   V^,           pV^8  g   K   M	  V^8  d   \        Wz^,           4       Ft  pV^,
          pV^ 8  d'   W,          V,           pW8  d   W,          ^ 8X  d   ^W&   V^,           pW8  g   KJ  W,          V,           pW8  g   Ka  W,          ^ 8X  g   Kp  ^W&   Kv  	  RpEK  	  EK  	  \        V4       EF  pRp\        V4       EF  pW,          V,           p	V^,
          pW,          V8X  d   Wb^,
          8w  d   V^ 8  d   TpKA  V^ 8  EdT   W,          V8X  d   Wb^,
          8X  d   TpVV8X  d   RpKp  ^ p\        VV^,           4       F  pV^,
          pV^ 8  d,   W,          V,           pW8  d   W,          V8X  d
   V^,           pV^,           pW8  d,   W,          V,           pW8  d   W,          V8X  d
   V^,           pV^8  g   K   M	  V^8  d   \        VV^,           4       Ft  pV^,
          pV^ 8  d'   W,          V,           pW8  d   W,          ^ 8X  d   ^W&   V^,           pW8  g   KJ  W,          V,           pW8  g   Ka  W,          ^ 8X  g   Kp  ^W&   Kv  	  RpEK  	  EK  	  \        \        V4      4       F  pW,          V8X  g   K  ^W&   K  	  V P                  WW44       R# r  Nrd  )r   rn  r  )r   r   rM  rN  r  r  r  r  r  r  lastYcrossNumrz  r{  cIndexr  lastXs   &&&&&            r{   _fill_cross_line)DreameVacuumMapOptimizer._fill_cross_line  s_   4yuAF6]	AA;&(QA:->z!"Q;aZ(T[F-B !!#  H#FAI6U7%'Z"_F%}1G+3a<U:%'Z"_F%}1G+3a<#a<! 7   !|"'	":B!"QB!Qw)+b#)=T\Q5F34DL!"QB!z)+b#)=T\Q5F34DL #; _ # f vAF5\	AA;&(Q19-=z!"Q;{f,qy1A !!#  H#FEAI6U7%'Z"_F%}1G+3a<U:%'Z"_F%}1G+3a<#a<! 7   !|"'	":B!"QB!Qw)+b#)=T\Q5F34DL!"QB!z)+b#)=T\Q5F34DL #; _ " f s4y!Aw&  " 	!!$v>r~   c                   V ^8  d   QhRR/# r  ry   )rz   s   "r{   r|   rc  H  s     	  	 i 	 r~   c                	    V^ ,          V^,          8  g   V^ ,          V^,          8  d   R# R pW,           pVP                  \        V4      R7       V^,          V^,          .# )r   Nc                    W,
          # r  ry   )r  r  s   &&r{   	sort_data<DreameVacuumMapOptimizer._check_intersect.<locals>.sort_dataL  s	    5Lr~   r  )sortr   )r   arr1arr2r  tmps   &&&  r{   _check_intersect)DreameVacuumMapOptimizer._check_intersectH  sX    7d1gaDG!3	 kZ	*+AAr~   c                   V ^8  d   QhRR/# )ru   rw   r  ry   )rz   s   "r{   r|   rc  S  s      5 r~   c                	:   V^ ,          V^,          8  d   V^ ,          pV^,          V^ &   Wd^&   V^ ,          V^,          8  d   V^ ,          pV^,          V^ &   We^&   ^ p\        V^ ,          V^,          ^,           4       FS  p\        V^ ,          V^,          ^,           4       F+  p	WV,          V,           ,          p
V
^ 8w  g   K"  V^,           pK-  	  KU  	  Wt^,          V^ ,          ,
          ^,           V^,          V^ ,          ,
          ^,           ,          ,          pVR8  dw   \        V4      p\        V^ ,          V^,          ^,           4       FF  p\        V^ ,          V^,          ^,           4       F  p	W,          V,           pW8  g   K  ^W-&   K   	  KH  	  V# )r   r  ri  )r   original_datar   rM  xsysr  rj  r  r  r   weightr  nIndexs   &&&&&&        r{   _find_original_points.DreameVacuumMapOptimizer._find_original_pointsS  sR   a52a5=Q%CqEBqEqEa52a5=Q%CqEBqEqEr!ubeai(A2a5"Q%!),%%i!m4A:'C - ) AA*r!ur!u}q/@ABC<t9D2a5"Q%!),r!ubeai0AY]F}'( 1 -
 r~   c                	   \        4       pVP                  '       Ed   VP                  VP                  n        VP                  VP                  n        VP
                  '       dF   VP                  ^ ,          VP                  n        VP                  ^,          VP                  n        MDVP                  ^,          VP                  n        VP                  ^ ,          VP                  n        \        VP                  ^,          VP                  ^ ,          ,
          4      Vn        EM
VP                  VP                  n        VP                  VP                  n        \        VP                  ^,          VP                  ^ ,          ,
          4      Vn        VP
                  '       dF   VP                  ^ ,          VP                  n        VP                  ^,          VP                  n        MDVP                  ^,          VP                  n        VP                  ^ ,          VP                  n        VP                  V4       VP                  V4       R# r  )
r1   ishorizontalrr  p0p1findEndrq  abslengthr  )r   rz  covertlinesallLinesaLines   &&&& r{   	_add_line"DreameVacuumMapOptimizer._add_lineo  sW   EHHJEHHJ|||!VVAY
!VVAY
!VVAY
!VVAY
tvvay466!945ELEHHJEHHJtvvay466!945EL|||!VVAY
!VVAY
!VVAY
!VVAY
5!r~   c                   V ^8  d   QhRR/# )ru   rw   zlist[Paths]ry   )rz   s   "r{   r|   rc    s     | |; |r~   c                	n   . p\        V4      pV'       Ed   VP                  ^ 4      pRVn        . p. p	V P                  WxV	4        V	\        V	4      ^,
          ,          p
V
P                  '       Ed   RpVP                  4       p\        \        V4      4       EFG  pW,          pV
P                  ^ ,          pV
P                  '       d   V
P                  ^,          pWP                  8X  g   KV  V
P                  VP                  ^ ,          8X  d!   RVn        V P                  WV	4       WM Rp EMV
P                  VP                  ^,          8X  d!   RVn        V P                  WV	4       WM Rp EMrV
P                  VP                  ^ ,          8  g   K  V
P                  VP                  ^,          8  g   EK#  V
P                  '       d   V
P                  ^,           V,          V,           ^,
          pVV8  d0   VV,          ^ 8X  d"   V
P                  VP                  ^&   RVn        MV
P                  VP                  ^ &   RVn        M~V
P                  ^,           V,          V,           ^,           pVV8  d0   VV,          ^ 8X  d"   V
P                  VP                  ^&   RVn        M V
P                  VP                  ^ &   RVn        V P                  WV	4       WM Rp M	  V'       g   EMEK  RpV
P                  ^ ,          pV
P                  '       d   V
P                  ^,          pVVP                  8X  d%   V
P                  VP                  ^ ,          8X  d   EM~VP                  4       p\        \        V4      4       EFI  pW,          pV
P                  ^ ,          pV
P                  '       d   V
P                  ^,          pVVP                  8X  g   KW  V
P                  VP                  ^ ,          8X  d!   RVn        V P                  VW4       W= Rp EMV
P                  VP                  ^,          8X  d!   RVn        V P                  VW4       W= Rp EMsV
P                  VP                  ^ ,          8  g   EK   V
P                  VP                  ^,          8  g   EK%  V
P                  '       d   V^,
          V,          V
P                  ,           ^,
          pVV8  d0   VV,          ^ 8X  d"   V
P                  VP                  ^ &   RVn        MV
P                  VP                  ^&   RVn        M~V^,           V,          V
P                  ,           ^,
          pVV8  d0   VV,          ^ 8X  d"   V
P                  VP                  ^ &   RVn        M V
P                  VP                  ^&   RVn        V P                  VW4       W= Rp M	  V'       d   EK   ^ p\        \        V4      4       F  pW,          pVVP                  ,           pK   	  VP                  \        WVR7      4       EK'  V# )r   TF)clinesalinesr  )r   popr  r  r  rE  rn  rq  rr  r  r  r3   )r   r   rM  horizontalLinesverticalLinespathsr  	startLiner  r  lastLiner  r0  r  vLinerq  r  _yhLinerr  totalLengthr4  s   &&&&&                 r{   _find_bounds%DreameVacuumMapOptimizer._find_bounds  s   4yo'++A.I $IKHNN98<#CMA$56(((#G)..0E"3u:. %$JJqM#+++ (

1A<'zzUWWQZ704 $u8 L$1$4*. %!)uwwqz!905 $u8 L$1$4*. %!)eggaj!8XZZ%''RS*=T#+#3#3#3.6jj1n-E-IA-MF'-}f9J5=ZZ
8=5=ZZ
8<.6jj1n-E-IA-MF'-}f9J5=ZZ
8=5=ZZ
8< $u8 L$1$4*. %S /V # # $G!AB'''%ZZ]Y[[(XZZ9;;q>-I+002E"3u:. %$JJqM#+++ (

1A<'zzUWWQZ704 $uk L$3$6*. %!)uwwqz!905 $uk L$3$6*. %!)eggaj!8XZZ%''RS*=T#+#3#3#3./!eu_xzz-IA-MF'-}f9J5=ZZ
8<5=ZZ
8=./!eu_xzz-IA-MF'-}f9J5=ZZ
8<5=ZZ
8= $uk L$3$6*. %S /V #7K3{+,"~)DKK7 - LLk;WXr~   c           
     	v    V P                  WV4      pVf   M_^W^,          V,          V^ ,          ,           &   V.pV'       g   KE  VP                  V P                  WW5P                  ^ 4      4      4       K<  \	        \        V4      4       F)  pW,          ^ 8X  d   ^W&   K  W,          ^8X  g   K%  ^ W&   K+  	  R# r  )rv  r  r|  r  rn  r   )r   r   rM  rN  first_pointneedFindPointsr  s   &&&&   r{   r  )DreameVacuumMapOptimizer._fill_map_data_2  s    66tFKK"<?DQ%'+a.89)]N .%%d&;&;DQcQcdeQf&ghs4y!Aw!|C	 "r~   c                	   . p. p^p^p	^p
^p\        V4      p\        V4       EF  pRp\        V4       EF  pW,          V,           pV^,
          pVV,          V8X  do   W^,
          8w  db   RpV^ 8w  d   VV^,
          ,          V8X  g#   W^,
          8w  d   VV^,           ,          V8X  d   RpV^ 8  d   V'       d   TpK  V'       g   K  TpV^ 8  Ed   W^,
          8X  d   VV,          V8X  d   TpVV8X  d   RpK  RpTpVV,          V,           pVV^,
          ,          V8X  g   VV^,           ,          V8X  d   RpV^ 8X  d   TpMoW^,
          8X  d   T	pM_VV^,
          ,          V8X  d   VV^,           ,          ^ 8w  d   TpM2T	pM/VV^,           ,          V8X  d   VV^,
          ,          ^ 8w  d   T	pMTpV'       d.   VP                  \        VVV.RVVV,
          R7      4       TpEK  RpEK  	  EK  	  \        V4       EF  pRp\        V4       EF  pW,          V,           pV^,
          pVV,          V8X  d_   W^,
          8w  dR   RpVV,
          pVV,           pVV,          V8X  g   VV,          V8X  d   RpV^ 8  d   V'       d   TpK|  V'       g   K  TpV^ 8  Ed   VV,          V8X  d   W^,
          8X  d   TpVV8X  d   RpK  RpT
pW,          V,           pVV,
          pVV,           pV^ 8  d   VV,          V8X  g   VV8  d   VV,          V8X  d   RpV^ 8X  d   TpMSW^,
          8X  d   T
pMCVV,          V8X  d   VV,          ^ 8w  d   TpM$T
pM!VV,          V8X  d   VV,          ^ 8w  d   T
pMTpV'       d.   VP                  \        VV.VRVVV,
          R7      4       TpEK  RpEK  	  EK  	  V P	                  W#Wg4      p\        V4      ^8  p\        V4      ^8  Ed   VP                  ^ 4      P                  p\        \        V4      4       EF]  pVV,          p\        \        V4      4       EF7  pVV,          P                  p\        \        V4      4       EF  pVV,          pVP                  R8X  Edl   VP                  R8X  EdZ   VP                  VP                  8w  Ed;   VP                  VP                  8  d   VP                  V8X  g-   VP                  VP                  8  d   VP                  V	8X  d   \        VP                  VP                  ,
          4      ^
8:  d   V P                  VP                  VP                  4      p V R8w  d   VP                  ^,           VP                  ^,
          .p!VP                  VP                  8  d'   VP                  ^,           VP                  ^,
          .p!V P                  WVV!V 4      p"EK{  EK~  EK  EK  EK  EK  VP                  R8X  g   EK  VP                  R8X  g   EK  VP                  VP                  8w  g   EK  VP                  VP                  8  d   VP                  V8X  g3   VP                  VP                  8  g   EK  VP                  V
8X  g   EK.  \        VP                  VP                  ,
          4      ^
8:  g   EK\  V P                  VP                  VP                  4      p#V#R8w  g   EK  VP                  ^,           VP                  ^,
          .p$VP                  VP                  8  d'   VP                  ^,           VP                  ^,
          .p$V P                  WVV#V$4      p"EK
  	  EK:  	  EK`  	  EK  V'       dg   \        \        V4      4       F  pW-,          V8X  g   K  ^W-&   K  	  V P                  W#V4       V P                  W#WE4       V P!                  W#WE4       R# R# )r  FT)rq  rr  r  	directionr  Nrd  )r   rn  r  r2   r  r  r  r  r  rq  r  r  rr  r  r  r  r  )%r   r  r   rM  rN  r  r  r  DIR_LEFT	DIR_RIGHTDIR_TOP
DIR_BOTTOMr  r  r  r  r  r  isCrossr  	lastIndexr  r  r  nnIndexr  needFillr0  rm  rz  nLinesnLine_ysr  r  _xsr  s%   &&&&&&                               r{   _link_adjacent_areas-DreameVacuumMapOptimizer._link_adjacent_areas  s   	
4yuAF6]	AA;&(Q1*_#GQ4	?f#<!PQ	BRW[\ade\eWfjpWp"&zg!" " EQ;aZ(T%[F-B !!# #G (I % 1IIM*f4Y]8Kv8U"&Av$,	qy)$-	i!m,6	A.!3(0I(1Ii!m,6	A.!3(1I(0I%,,!"##)5/-2*3(- "' s # z vAF5\	AA;&(Q19-=#G"U]F#emGF|v-g&1H"&zg!" " EQ;E{f,qy1A !!# #G 'I !	E 1I&.F'%/G!V(>GdNW[\cWdhnWn"&Av$.	z*$+	f/=A-(2I(/Ig&0<1,(/I(2I'..!#)5/QTU^hmpvhv
 "' s " z !!$Nu:>%j1nIIaL''E3u:&Qxs5z*A"1X__F"3v;/ &q	,,5%:L:LPU:U#~~@$(FFUWW$489S$(FFUWW$499T'*466EGG+;'<'B.2.C.CDFFEGG.T+.$;26&&1*eggk1JB/3vv/?6;ggk466A:5N595O5OP]ejlnps5tF	 ,7 (C :U$4  A "..$65;M;MQU;U#~~@$(FFUWW$4:9U$(FFUWW$479R'*466EGG+;'<'B.2.C.CDFFEGG.T+.$;26&&1*eggk1JB/3vv/?6;ggk466A:5N595O5OP]ejloqs5tF3 0 + '> 3t9%7f$DG & !!$v6%%d6B!!$v> r~   c                	   ^p^p^p^pVP                   ^ ,          p	VP                   \        VP                   4      ^,
          ,          p
\        VP                   4      ^8X  g   \        VP                   4      ^8  dZ   \        V
.R7      pV
P                  '       d   V
P                  '       d   TMTVn        V# V
P                  '       d   TMTVn        V# RpRpRpRpV	P                  '       Ed?   VP
                  V8X  d   V	P                  ^,          pMV	P                  ^ ,          pVP                  V8X  d   V	P                  pMV	P                  pV
P                  '       df   VP
                  V8X  d   V
P                  ^ ,          pMV
P                  ^,          pVP                  V8X  d   V
P                  pEMV
P                  pEMVP
                  V8X  d   V
P                  pMV
P                  pVP                  V8X  d   V
P                  ^ ,          pEMNV
P                  ^,          pEM9VP                  V8X  d   V	P                  ^,          pMV	P                  ^ ,          pVP
                  V8X  d   V	P                  pMV	P                  pV
P                  '       dd   VP
                  V8X  d   V
P                  ^ ,          pMV
P                  ^,          pVP                  V8X  d   V
P                  pMoV
P                  pMbVP
                  V8X  d   V
P                  pMV
P                  pVP                  V8X  d   V
P                  ^ ,          pMV
P                  ^,          pVe   Ve	   Ve   VfZ   \        V
.R7      pV
P                  '       d   V
P                  '       d   TMTVn        V# V
P                  '       d   TMTVn        V# V	P                  '       d   V
P                  '       dm   W,
          ^8:  d`   VP
                  V8X  d(   V	P                  ^ ,          pV
P                  ^,          pMV
P                  ^ ,          pV	P                  ^,          pMV	P                  '       g~   V
P                  '       gl   W,
          ^8:  d_   VP                  V8X  d(   V	P                  ^ ,          pV
P                  ^,          pM&V
P                  ^ ,          pV	P                  ^,          p^ p\        W^,           4       FE  p\        W^,           4       F,  pVV,          V,           pVV,          ^ 8X  g   K#  V^,           pK.  	  KG  	  V^8  g7   VW,
          ^,           W,
          ^,           ,          ^,          ^,          8  di   \        W^,           4       FR  p\        W^,           4       F9  pVV,          V,           pV\        V4      8  g   K%  VV,          ^ 8X  g   K5  W1V&   K;  	  KT  	  \        V
.R7      pV
P                  '       d   V
P                  '       d   TMTVn        V# V
P                  '       d   TMTVn        V# )   )r0  N)
r0  r   r4   r  r  horizontalDirverticalDirrq  rr  rn  )r   r   rM  r  r  bottomrightr  r  l1l2	nextAngleminxminymaxxmaxyrj  r  r  r  s   &&&&&               r{   _fill_angle$DreameVacuumMapOptimizer._fill_angle  s   [[^[[U[[)A-.u{{q C$4r$9RD)I35:::%4	'  02zzzv	%???""e+ttAwttAw  C'tttt&&%/447D447D$$+44D44D&&%/44D44D$$+447D447D  C'ttAwttAw""e+tttt&&%/447D447D$$+44D44D &&%/44D44D$$+447D447D<4<4<4<RD)I35:::%4	'  02zzzv	%???rT[Q4F""e+ttAwttAwttAwttAwt{q>P  C'ttAwttAwttAwttAwtAX&A4*E	A;!#'C + ' 8saDK!ODqHAMN4*tAX.AIMEs4y(T%[A-=&,U / + %	???/1zzzetI#  ,.:::C6I!r~   c                	   . p. p\        V4      p\        V4       EFG  p	Rp
\        V4       EF1  pW,          V	,           pV^,
          pW,          V8X  dm   W^,
          8w  d`   RpV	^ 8w  d   W^,
          ,          V8X  g"   W^,
          8w  d   W^,           ,          V8X  d   RpV
^ 8  d   V'       d   Tp
K  V'       g   K  TpV
^ 8  d   W^,
          8X  d   W,          V8X  d   TpW8X  d   Rp
K  RpW,          V	,           pW^,
          ,          V8X  g   W^,           ,          V8X  d   RpV'       d+   VP                  \        WV.RW,
          R7      4       Tp
EK/  Rp
EK4  	  EKJ  	  \        V4       EF:  pRp\        V4       EF$  p	W,          V	,           pV	^,
          pW,          V8X  dY   W^,
          8w  dL   RpWV,
          ,          V8X  g   WV,           ,          V8X  d   RpV^ 8  d   V'       d   T	pKu  V'       g   K  T	pV^ 8  d   W,          V8X  d   W^,
          8X  d   T	pVV8X  d   RpK  RpXV,
          pW,           pV^ 8  d   VV,          V8X  g   VV8  d   VV,          V8X  d   RpV'       d-   VP                  \        VV.VRVV,
          R7      4       TpEK"  RpEK'  	  EK=  	  V'       g   R# V P	                  WWg4      pRpRp^ p. p\        \        V4      4       F  p	VV	,          pVP
                  pVV8  d=   V'       d   V^P8  d   VP                  V4       TpVP                  pVP                  pK[  V^P8  g   Kd  VP                  VP                  4       K  	  V'       EdS   V'       EdJ   . p\        \        V4      4       FZ  p	VP                  VV	,          ^ ,          P                  P                  VV	,          ^ ,          P                  P                  .4       K\  	  V'       d   VP                  4       pV^ ,          pV^,          p^ VVV,          V,           &   \        V^,
          V^,           4       Fx  p\        V^,
          V^,           4       FW  p VV8X  g
   V V8X  g   K  V V,          V,           pV\        V4      8  g   K5  W,          ^ 8w  g   KD  VP                  VV .4       KY  	  Kz  	  K  ^p!^p"^p#^p$^ p%\        4       p&\        \        V4      ^,           4       EF  p	TV	\        V4      8X  d   ^ MT	,          p'V	^ 8X  d%   V&P                  P                  V'4       V"V&n        KJ  V'P                  '       d   V'P                   '       d   T"MT$p(V&P                  V%8w  d%   V&P                  V(8w  d   V P#                  WVV&4      p&V&P                  V%8X  d   V(V&n        V&P                  P                  V'4       M~V'P                   '       d   T#MT!p)V&P$                  V%8w  d%   V&P$                  V)8w  d   V P#                  WVV&4      p&V&P$                  V%8X  d   V)V&n        V&P                  P                  V'4       V'P
                  ^8  g   V	\        V4      8X  g   EK}  V P#                  WVV&4      p&EK  	  R# )r  FT)rq  rr  r  r  Nrd  )r   rn  r  r2   r  r  r  r  r  rq  rr  r  r4   r0  r  r  r  r  r  )*r   r   rM  rN  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  totalLenr  r4  plenclearPosposrq  rr  r{  rz  r  r  r  r  dirnoner  rz  r  r  s*   &&&&&&                                    r{   _find_outline&DreameVacuumMapOptimizer._find_outlineD  s   4yuAF6]	AA;&(QA:->#GQ4	?f#<!PQ	BRW[de\eWfjpWp"&zg!" " EQ;aZ(T[F-B !!# #G % 1IM*f4]8Kv8U"&%,,!A%uV[Vdf "' ? # F vAF5\	AA;&(Q19-=#GEM*f4U]8Kv8U"&zg!" " EQ;{f,qy1A !!# #G&.F'/G!V(>GdNW[\cWdhnWn"&'..!VUOqtUZ]cUce "' E " L !!$Ns5z"A8D;;Dh8b=JJ{+"kk;;"9JJt{{+ # 5SSH3s8_QQ @A % llnFF&'QY]#Aq1u-B#AE1q517bAg%'%Z2$5E$s4y0T[A5E (R 9	 2 . s8}q()Ac(m!3A;DAv""4(&+#$$$-1\\\EtM**g5%:M:MQ^:^ $ 0 0fe L**g5.;+KK&&t,)-#6K((G38I8I[8X $ 0 0fe L((G3,7)KK&&t,;;!#qCM'9 ,,T&%HE1 *4 r~   c                	"   \        V4      p\        V4       F  p\        V4       F  pWb,          V,           pW,          V8X  g   K!  V^ 8X  g"   Wc^,
          8X  g   V^ 8X  g   Wr^,
          8X  d   ^W&   KO  Rp	\        V^,
          V^,           4       Fe  p
\        V^,
          V^,           4       F:  pW,          V
,           pW8  g   K  W,          V8w  g   K)  W,          ^8w  g   K8  Rp	 M	  V	'       g   Ke   M	  V	'       g   K  ^W&   K  	  K  	  R# r  ru  )r   r   rM  rN  r  r  r  r  r  r  r{  rz  r  s   &&&&&        r{   _find_obstacle_border.DreameVacuumMapOptimizer._find_obstacle_border  s    4yvA5\	A;&(Avz!2a1fai@P&' #G#AE1q51"'Aq1u"5B%'Z"_F%}1GDL\]L]*. %	 #6
 #7! 2 w&'# " r~   c                	"   \        V4       Fx  pRp\        V4       Fd  pWr,          V,           pW,          V8X  d   V^ 8  d   TpK*  VR8w  d2   Wv,
          ^8:  d%   \        Wg4       F  p	^WV,          V,           &   K  	  RpKf  	  Kz  	  \        V4       Fx  pRp
\        V4       Fd  pWr,          V,           pW,          V8X  d   V
^ 8  d   Tp
K*  V
R8w  d2   WZ,
          ^8:  d%   \        W4       F  p	^WV,          V	,           &   K  	  Rp
Kf  	  Kz  	  R# r  rn  )r   r   rM  rN  r  r  r  r  r  rI  r  s   &&&&&      r{   _clean_small_obstacle.DreameVacuumMapOptimizer._clean_small_obstacle  s    uAF6]	A;&(z!"R<QZA$5"6-./Y]+ . #  vAF5\	A;&(z!"R<QZA$5"6-./Y]+ . " r~   c                	   . p. p\        V4       EF7  pRp	\        V4       EF!  p
W,          V,           pV
^,
          pW,          V8X  dm   W^,
          8w  d`   RpV^ 8w  d   W^,
          ,          V8X  g"   W^,
          8w  d   W^,           ,          V8X  d   RpV	^ 8  d   V'       d   T
p	K  V'       g   K  T
pV	^ 8  d   W^,
          8X  d   W,          V8X  d   T
pW8X  d   Rp	K  RpW,          V,           pW^,
          ,          V8X  g   W^,           ,          V8X  d   RpV'       d   VP                  W.W..4       Tp	EK  Rp	EK$  	  EK:  	  \        V4       EF%  p
Rp\        V4       EF  pW,          V,           pV^,
          pW,          V8X  dY   W^,
          8w  dL   RpWV,
          ,          V8X  g   WV,           ,          V8X  d   RpV^ 8  d   V'       d   TpKu  V'       g   K  TpV^ 8  d   W,          V8X  d   W^,
          8X  d   TpVV8X  d   RpK  RpW,          V,           pWV,
          ,          V8X  g   WV,           ,          V8X  d   RpV'       d   VP                  W.VV
..4       TpEK  RpEK  	  EK(  	  \        P                  ! VP                  4      p\        P                  ! VP
                  4      p\        VP                  ^,
          4      ^8:  Ed   ^Vn        Rp\        \        V4      4       F  pWh,          pV^ ,          ^ ,          pV^ ,          ^,          V^,          ^,          8  d   V^ ,          ^,          MV^,          ^,          pV^ ,          ^,          V^,          ^,          8  d   V^ ,          ^,          MV^,          ^,          pVV8  g   K  VV8  g   K  VV8:  g   K  VR8X  g
   VV8  g   K  TpK  	  VR8w  d$   VV,
          ^8:  d   ^Vn        VR,           Vn        V# \        VP                  R,
          4      ^8:  g   \        VP                  4      ^8:  Ed   RVn        Rp\        \        V4      4       F  pWh,          pV^ ,          ^ ,          pV^ ,          ^,          V^,          ^,          8  d   V^ ,          ^,          MV^,          ^,          pV^ ,          ^,          V^,          ^,          8  d   V^ ,          ^,          MV^,          ^,          pVV8:  g   K  VV8  g   K  VV8:  g   K  VR8X  g
   VV8  g   K  TpK  	  VR8w  d$   VV,
          ^8:  d   RVn        VR,           Vn        V# \        \        VP                  R,
          4      ^8*  4      '       Ed   Rp\        \        V4      4       F  pWx,          pV^ ,          ^,          pV^ ,          ^ ,          V^,          ^ ,          8  d   V^ ,          ^ ,          MV^,          ^ ,          pV^ ,          ^ ,          V^,          ^ ,          8  d   V^ ,          ^ ,          MV^,          ^ ,          pVV8  g   K  VV8  g   K  VV8:  g   K  VR8X  g
   VV8  g   K  TpK  	  VR8w  d$   VV,
          ^8:  d   RVn        VR,           Vn        V# \        \        VP                  ^Z,
          4      ^8*  4      '       Ed   Rp\        \        V4      4       F  pWx,          pV^ ,          ^,          pV^ ,          ^ ,          V^,          ^ ,          8  d   V^ ,          ^ ,          MV^,          ^ ,          pV^ ,          ^ ,          V^,          ^ ,          8  d   V^ ,          ^ ,          MV^,          ^ ,          pVV8:  g   K  VV8  g   K  VV8:  g   K  VR8X  g
   VV8  g   K  TpK  	  VR8w  d$   VV,
          ^8:  d   ^ZVn        VR,           Vn        V# )r  FTNr  r  r  rd  )	rn  r  r   r   rq  rr  r  r  r   )r   r   rM  rN  r  r  vLineshLinesr  r  r  r  r  r  r  r  r  cXcYrz  lxminYmaxYlyminXmaxXs   &&&&&&                    r{   _calculate_charger_position4DreameVacuumMapOptimizer._calculate_charger_position  s   uAF6]	AA;&(QA:->#GQ4	?f#<!qy.UYbcZcUdhnUn"&zg!" " EQ;QJ4;&+@ !!# #G % 1IM*f4]8Kv8U"&{QJ&?@!& 9 # @ vAF5\	AA;&(Q!)^#GEM*f4U]8Kv8U"&zg!" " EQ;{f,ai !!# #G !	E 1I-.&8DUAR<SW]<]"&{UAJ&?@!& = " D ZZ(**+ZZ(**+!!C'(B.!$E3v;'y!WQZ%)!WQZ$q'!*%<tAwqz$q'!*%)!WQZ$q'!*%<tAwqz$q'!*8d
rTz}U
 " ( }2:#),$&).$&Z  Y !##c)*b0C8H8J8J4Kq4P!$E3v;'y!WQZ%)!WQZ$q'!*%<tAwqz$q'!*%)!WQZ$q'!*%<tAwqz$q'!*8d
rTz}U
 " ( }:#),$&).$&<  ; %''#-."455E3v;'y!WQZ%)!WQZ$q'!*%<tAwqz$q'!*%)!WQZ$q'!*%<tAwqz$q'!*8d
rTz}U
 " ( }2:#),$&).$&    %''",-344E3v;'y!WQZ%)!WQZ$q'!*%<tAwqz$q'!*%)!WQZ$q'!*%<tAwqz$q'!*8d
rTz}U
 " ( }:#)+$&).$&r~   Nc                	   V'       Ed   VP                   P                  VP                   P                  VP                   P                  ,          ,           pVP                   P                  VP                   P
                  VP                   P                  ,          ,           pWBP                   P                  VP                   P                  VP                   P                  ,          ,           8  dM   VP                   P                  VP                   P                  VP                   P                  ,          ,           pWRP                   P                  VP                   P
                  VP                   P                  ,          ,           8  dM   VP                   P                  VP                   P
                  VP                   P                  ,          ,           pVP                   P                  pVP                   P                  pVP                   P                  V8  d   VP                   P                  pVP                   P                  V8  d   VP                   P                  p\        WF,
          VP                   P                  ,          4      p\        WW,
          VP                   P                  ,          4      p	\        VP                   P                  V,
          VP                   P                  ,          4      p
\        VP                   P                  V,
          VP                   P                  ,          4      pWP                   P                  ,           pWP                   P
                  ,           p\        VP                   P                  V,
          VP                   P                  ,          4      p\        VP                   P                  V,
          VP                   P                  ,          4      pWP                   P                  ,           pWP                   P
                  ,           p\        P                  ! W3\        P                  4      pVP                  e   VP                  MVP                  p\        V	4       F  p\        V4       F  pVV8  dC   VV
8  d<   VV8  d5   VV8  d.   \        VP                  VV
,
          VV,
          3,          4      pM^ pVV8  d9   VV8  d2   VV8  d+   VV8  d$   \        VVV,
          VV,
          3,          4      pM^ pV^ 8w  d1   V^8w  d
   VVVV3&   K  V^ 8w  d   V^8w  d
   ^VVV3&   K  ^VVV3&   K  V^ 8w  g   K  V^8X  d
   ^VVV3&   K  ^VVV3&   K  	  K  	  VEe<   \        V	4       EF+  p\        V4       EF  pVV8  g   K  VV8  g   K  VV8  g   K  VV8  g   K(  VVV,
          VP                   P                  ,          VV,
          ,           ,          ^8X  g   Kh  VVV3,          ^ 8w  g   Kz  ^pRp\        VV,
          VV,           ^,           4       Fb  p\        VV,
          VV,           4       FA  pV^ 8  g   V^ 8  g   VV	8  g   VV8  d   K!  V'       d    KI  VVV3,          ^8X  g   K>  Rp K`  	  Kd  	  V'       d   EK  ^VVV3&   EK  	  EK.  	  VVn
        \        WvWVP                   P                  4      Vn        R # R # r   )r  r  rM  r  r  rN  r   rk  rl  rm  r  r  rn  r+   r  )r   rA  r  r  r  r  r  r  rM  rN  sisjsimsjmninjnimnjmr  r   r  r  saved_valueclean_valuedis	hasBorderrz  r{  s   &&&&                        r{   _merge_saved_map_data.DreameVacuumMapOptimizer._merge_saved_map_data  sx   >&&++x/B/B/H/H8K^K^KhKh/hiD&&**h.A.A.H.H8K^K^KhKh.hiD//44))//.2K2K2U2UU  &0055"--33n6O6O6Y6YY //33))00>3L3L3V3VV  &0044"--44~7P7P7Z7ZZ &&++D%%))C((--4%0055((,,s2$//33(A(A(K(KKLE$*(A(A(K(KKLFn//44t;~?X?X?b?bbcBn//33c9^=V=V=`=``aB00666C00777Ch))..59L9L9V9VVWBh))--3x7J7J7T7TTUB**000C**111C5/288<J4<4Q4Q4]800ckcvcvD6]uABw17q3w1s7&).*C*CQVqSUvDV*W&X&'Bw17q3w1s7&)$B!b&/A*B&C&'"a'&#-/:Jq!t,*a/K34F36
1a4 036
1a4 0$)&#-/2Jq!t,/2Jq!t,/ & #4 (vA"5\7qBw1s7q3w -q2v9L9L9R9R.RVWZ\V\.] ^bc c$.q!t$4$9&',1	*/CS1*EB.3AGQW.E+-6R!VrV|rUZ{,4+4,1+5b"f+=+D8<I,1 /F +F (1y7:Jq!t$4' * ', -7H),>s&YaYlYlYvYv,wH) r~   c                	   VP                   '       d   V#  \        P                  ! 4       pV'       Ed   V P                  R 8X  dR   \        4       V n        V P                  P	                  \
        P                  ! \        4      P                  R4      4       VP                  P                  4       pVP                  P                  VP                  P                  VP                  P                  VP                  P                  VP                  P                   .pV'       d   VP                  P                  4       MR pV'       dl   VP                  P                  VP                  P                  VP                  P                  VP                  P                  VP                  P                   .MR pR p	VP"                  '       Ed   VP                  P                  p
VP                  P                  pV'       dc   VP                  P                  V
8  d   VP                  P                  p
VP                  P                  V8  d   VP                  P                  pVP"                  P$                  V
,
          VP                  P                   ,          VP"                  P&                  V,
          VP                  P                   ,          VP"                  P(                  .p	V P                  P+                  RWVWxV	4      pV'       d   V^ ,          '       d   \,        P.                  ! V^ ,          \,        P0                  R7      Vn        V^,          p\5        V^,          V^ ,          V^,          V^,          VP                  P                   4      Vn        V^,          '       d   VP"                  '       d
   V^,          pEMVP                  P                  pVP                  P                  p\,        P8                  ! VV,          \,        P0                  4      P                  4       p^^^^^^/p^ p\;        V4       F|  p\;        V4       Fj  pVV,          V,           p\=        VP                  VV3,          4      VV&   VV,          '       g   KE  V^,           pVP?                  VV,          ^ 4      VV&   Kl  	  K~  	  VPA                  4       p\,        P8                  ! VV3\,        P0                  4      pV PC                  VVV4       V PE                  VVV^4       V PG                  VVV4       V PI                  VVV^4       V PK                  VVV^4       V PM                  VVVV^4       V PO                  VVV^R4      pV'       Ed   V PQ                  VVV4       V PI                  VVV^4       VP"                  '       Ed}   VP                  P                  p
VP                  P                  pV'       dc   VP                  P                  V
8  d   VP                  P                  p
VP                  P                  V8  d   VP                  P                  p\@        PR                  ! VP"                  4      p\=        VP$                  V
,
          VP                  P                   ,          4      Vn        \=        VP&                  V,
          VP                  P                   ,          4      Vn        VP&                  ^ 8  Ed=   VP$                  ^ 8  Ed+   VP&                  V8  Ed   VP$                  V8  Ed   V\=        \T        PV                  ! VP&                  4      4      V,          \=        \T        PV                  ! VP$                  4      4      ,           ,          '       d   V PY                  VVV^V4      p\[        \=        VP$                  VP                  P                   ,          4      V
,           \=        VP&                  VP                  P                   ,          4      V,           VP(                  4      Vn.        V PO                  VVV^R4       V PQ                  VVV4       V PI                  VVV^4       V'       d)   V P_                  VVV^4       V Pa                  VVV4       MV Pc                  VVV^4       ^ p^^^^^V'       d   ^ M^/p\;        V4       FU  p\;        V4       FC  pVVV,          V,           ,          pV^ 8w  g   K#  V^,           pVP?                  V^4      VVV3&   KE  	  KW  	  V^d,          V,          ^28  g   VR8  d   VVn        V Pe                  WV4       \f        Pi                  RVPj                  VPl                  \        P                  ! 4       V,
          4       V#   \n         d3   p\f        Pq                  RT4       T Pe                  Y4        R p?T# R p?ii ; i)	Nr  optimizers  TFi  z#Optimize Map Data: %s:%s took: %.2fzOptimize map failed: %s)9r  r  rf  r   evalr  r  MAP_OPTIMIZER_JSr   r  tolistr  r  r  rM  rN  r  r  rq  rr  r  callrk  arrayrm  r  r+   r  rl  rn  r   r   rE  rk  r  r  r  r  r  r  r  rF  r   r   r	  r!   r  r  rr  r  r  r   r   r!  r   r  r  )r   rA  r  js_optimizerri  r   	data_size
saved_datasaved_data_sizer  r  r  r  r  r  rM  rN  
clean_datadata_mappointNumr  r  r  r  r  new_charger_positioncurrentPointNumr  r  s   &&&&                         r{   r  !DreameVacuumMapOptimizer.optimize  s   O[	A))+C|%%-)2D&&&++F,<,<=M,N,U,UV],^_**113'',,''++''--''..''11	 DR^66==?W[
 & '1166&1155&1177&1188&11;;    $( ,,,#..33D"--11C%)4499D@#1#<#<#A#AD)44883>"0";";"?"?C "2244t;x?R?R?\?\\!2244s:h>Q>Q>[>[[ 1133($ ++00N^ fQii46HHVAYbhh4WH1!'J4F"1z!}jmZPQ]T\TgTgTqTq5H1 ayyX%>%>%>"() !++11!,,33XXuv~AHHJ
CC3vA"5\ !E	A,/0C0CAqD0I,J
5)%e,,'/!|H08Z=NPQ0RJu- * ' !+ 1XXuforxx@
  UF;##JvqAj%8))*eVQG%%j%C))-UFTUV++Jvq$O6))*eVD--j%K000'2277&1155)-88==D'5'@'@'E'E-88<<sB&4&?&?&C&C/3}}X=V=V/W,146J6L6Lt6SW_WjWjWtWt5t1u,.146J6L6Ls6RV^ViViVsVs5s1t,.022a7 4 6 6! ; 4 6 6 ? 4 6 6 > * #DJJ/C/E/E$F G% O"%djj1E1G1G&H"I!J! !
 483S3S *E61>R40 CH #$8$:$:X=P=P=Z=Z$Z [^b b #$8$:$:X=P=P=Z=Z$Z [^a a 4 6 6CH? &&z5&!UK))*eVD--j%K%22:ufaP++M5&I22:ufaP&'O !33ASRH"6]!&uA*4QY]*CK*a/2AA2E3;<<S3Q
1a4 0	 ". + -s2h>"DTX8B5**8]SLL5!!		c!	&   	AOO5r:&&x@@ 	Ass   f6 C.f6 ##f6 Bf6 	3f6 =Df6 Bf6 9Cf6 C8f6 9f6 3f6 9Jf6 A
f6 <f6 B#f6 6g3'g..g3re  r  rL  )r  r  r  r  r   rk  rr  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r!  ry   r~   r{   r   r     s    "<,("B+HhT1(l?\	 82||"m?^||Vp(,4B H`xDi ir~   r   )
__future__r   r  r   r  r  r   r  rH  loggingr  rE  numpyrk  rA  py_mini_racerr   cryptography.hazmat.backendsr   &cryptography.hazmat.primitives.ciphersr   r   r   PILr	   r
   r   r   r   r   r   typingr   r   r   r   r   	functoolsr   	threadingr   	resourcesprotocolr   
exceptionsr   typesr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   constr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   	getLoggerr  r   rs   r   ro  r  r2  r   ry   r~   r{   <module>r;     s6   " 	     	       # 8 L L ` ` `    "     * 3       :> > > > > > > > > > > > > > > >@ 

H
%C? C?L"R6 R6jRC RCjg& g&Tr0 r0j5Q Qr~   