
    ͆h4                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJrJrJrJr  S SKrS SK rSr!\RD                  " \!5      r# " S S\RH                  5      r%\%" \RL                  " \'5      0 5      r(SS jr)SS jr* " S	 S
\RV                  \RX                  RZ                  5      r. " S S\RX                  R^                  5      r0SS jr1SS jr2g)    )annotationsN)AnyBinaryIOCallableIterablean  
var livereload = function(epoch, requestId) {
    var req, timeout;

    var poll = function() {
        req = new XMLHttpRequest();
        req.onloadend = function() {
            if (parseFloat(this.responseText) > epoch) {
                location.reload();
            } else {
                timeout = setTimeout(poll, this.status === 200 ? 0 : 3000);
            }
        };
        req.open("GET", "/livereload/" + epoch + "/" + requestId);
        req.send();
    }

    var stop = function() {
        if (req) {
            req.abort();
        }
        if (timeout) {
            clearTimeout(timeout);
        }
        req = timeout = undefined;
    };

    window.addEventListener("load", function() {
        if (document.visibilityState === "visible") {
            poll();
        }
    });
    window.addEventListener("visibilitychange", function() {
        if (document.visibilityState === "visible") {
            poll();
        } else {
            stop();
        }
    });
    window.addEventListener("beforeunload", stop);

    console.log('Enabled live reload');
}
livereload(${epoch}, ${request_id});
c                      \ rS rSrSS jrSrg)_LoggerAdapterM   c                8    [         R                  " S5      U-   U4$ )Nz[%H:%M:%S] )timestrftime)selfmsgkwargss      R/opt/services/DDDS/venv/lib/python3.13/site-packages/mkdocs/livereload/__init__.pyprocess_LoggerAdapter.processN   s    }}]+c1699     N)r   strr   dictreturnztuple[str, dict])__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r	   r	   M   s    :r   r	   c                N    SU R                  S5      -   R                  S5      S-   $ )z3Ensure the mount path starts and ends with a slash./)lstriprstrip)
mount_paths    r   _normalize_mount_pathr#   U   s(    *##C((005;;r   c                (    SU  SU [        U5       3$ )Nzhttp://:)r#   )hostportpaths      r   
_serve_urlr)   Z   s     TF!D6"7"=!>??r   c                     ^  \ rS rSrSrSr   S               SU 4S jjjrSSS.SS jjjrSS jrSS	.S
 jr	S r
SSU 4S jjjrSS jrSS jrS r\\R"                  S 5       5       r\S 5       rSrU =r$ )LiveReloadServer^   T<   c                T  >^ ^ UT l          [        [        R                  " U5      [        R                  5      (       a  [
        R                  T l        [        R                  R                  U5      T l        [        U5      T l        [        X#U5      T l        ST l        TT l        S T l        [(        TT ]U  X#4[,        SS9  T R/                  T R0                  5        [3        5       T l        T R4                  T l        [8        R:                  " 5       T l        ST l        [8        R:                  " 5       T l         ST l!        [8        RD                  " U U4S jS9T l#        [H        RJ                  RL                  RO                  US9T l(        0 T l)        0 T l*        g ! [         a     GNRf = f)Ng?c                    g Nr   )codes    r   <lambda>+LiveReloadServer.__init__.<locals>.<lambda>x   s    r   F)bind_and_activatec                 &   > T R                  T5      $ r0   )serve_forever)r   shutdown_delays   r   r2   r3      s    D<N<N~<^r   )targettimeout)+builder
isinstance	ipaddress
ip_addressIPv6AddresssocketAF_INET6address_family	Exceptionosr(   abspathrootr#   r"   r)   urlbuild_delayr7   error_handlersuper__init___Handlerset_appserve_request
_timestamp_wanted_epoch_visible_epoch	threading	Condition_epoch_cond_want_rebuild_rebuild_cond	_shutdownThreadserve_threadwatchdog	observerspollingPollingObserverobserver_watched_paths_watch_refs)	r   r;   r&   r'   rF   r"   polling_intervalr7   	__class__s	   `      `r   rK   LiveReloadServer.__init__b   sN    	)..t4i6K6KLL&,oo# GGOOD)	/
;d*5,<M$x5IT''('\"00$..0#(&002%,,4^_ **22BBK[B\.0+-3  		s   AF 
F'&F'	recursivec                 ^  [         R                  R                  U5      nUb  UT R                  L d  [	        S5      eUT R
                  ;   a  T R
                  U==   S-  ss'   gST R
                  U'   U 4S jn[        R                  R                  5       nXEl	        [        R                  SU S35        T R                  R                  XQUS9T R                  U'   g)z]Add the 'path' to watched paths, call the function and reload when any file changes under it.Nz9Plugins can no longer pass a 'func' parameter to watch().   c                   > U R                   (       a  g [        R                  [        U 5      5        TR                     STl        TR                  R                  5         S S S 5        g ! , (       d  f       g = fNT)is_directorylogdebugr   rV   rU   
notify_all)eventr   s    r   callback(LiveReloadServer.watch.<locals>.callback   sN    !!IIc%j!##%)"""--/ $##s   "A))
A7z
Watching ''rd   )rD   r(   rE   r;   	TypeErrorr_   rZ   eventsFileSystemEventHandleron_any_eventrk   rl   r^   scheduler`   )r   r(   funcre   ro   handlers   `     r   watchLiveReloadServer.watch   s    wwt$ 4WXX4&&&%*%$%D!	0 //88:'		JtfA&'!%!7!7QZ!7![r   c                6   [         R                  R                  U5      nU R                  U==   S-  ss'   U R                  U   S::  aP  U R                  R	                  U5        U R
                  R                  U R                  R	                  U5      5        gg)zWStop watching file changes for path. Raises if there was no corresponding `watch` call.rg   r   N)rD   r(   rE   r_   popr^   
unscheduler`   )r   r(   s     r   unwatchLiveReloadServer.unwatch   sy    wwt$D!Q&!t$)##D)MM$$T%5%5%9%9$%?@ *r   F)open_in_browserc               J   U R                  5         U R                  5         U R                  (       aT  U R                  R	                  5         SR                  S U R                   5       5      n[        R                  SU 35        U(       a$  [        R                  SU R                   S35        O"[        R                  SU R                   35        U R                  R	                  5         U(       a   [        R                  " U R                  5        U R                  5         g )Nz, c              3  @   #    U  H  nS [        U5       S 3v   M     g7f)rq   N)_try_relativize_path).0r(   s     r   	<genexpr>)LiveReloadServer.serve.<locals>.<genexpr>   s"     !dPcA&:4&@%A"CPcs   zWatching paths for changes: zServing on z and opening it in a browser)server_bindserver_activater_   r^   startjoinrk   inforG   rY   
webbrowseropen_build_loop)r   r   	paths_strs      r   serveLiveReloadServer.serve   s    MM!		!dPTPcPc!ddIHH3I;?@HH{488*,HIJHH{488*-.!OODHH%r   c                <  ^   T R                      T R                   R                  U 4S jT R                  S9(       d0   T R                   R                  U 4S jT R                  S9(       d  M0  T R                  (       a
   S S S 5        g [        R                  S5        T R                   R                  T R                  S9(       a?  [        R                  S5        T R                   R                  T R                  S9(       a  M?  [        5       T l
        ST l        S S S 5         T R                  5         T R,                     [        R                  S5        T R                  T l        T R,                  R1                  5         S S S 5        GM  ! , (       d  f       Nw= f! [         ad  n[        U[        5      (       a  [!        U["        R$                  S9  O[&        R(                  " 5         [        R+                  S5         S nAGM  S nAff = f! , (       d  f       N= f)	Nc                 B   > T R                   =(       d    T R                  $ r0   )rU   rW   r   s   r   r2   .LiveReloadServer._build_loop.<locals>.<lambda>   s    D..@$..@r   r9   zDetected file changesz*Waiting for file changes to stop happeningF)filezcAn error happened during the rebuild. The server will appear stuck until build errors are resolved.zReloading browsers)rV   wait_forr7   rW   rk   r   waitrH   rl   rO   rP   rU   r;   rC   r<   
SystemExitprintsysstderr	traceback	print_excerrorrT   rQ   rm   )r   es   ` r   r   LiveReloadServer._build_loop   s   ##,,55@$J]J] 6 
  ,,55@$J]J] 6   >> $# 01((--d6F6F-GIIJK ((--d6F6F-GG &0\"%*" $ 
 !!-.&*&8&8#  ++- "; ##$  a,,!#**-'')		y  "!sE   AF-FA:FF#F ?AH
F
H
&AHH

Hc                  > U R                   R                  5         U R                     SU l        U R                  R	                  5         S S S 5        U R
                  R                  5       (       a  [        TU ]!  5         U R                  5         U(       a5  U R
                  R                  5         U R                   R                  5         g g ! , (       d  f       N= fri   )r^   stoprV   rW   rm   rY   is_aliverJ   shutdownserver_closer   )r   r   rb   s     r   r   LiveReloadServer.shutdown   s    !DN))+   %%''G""$MM    s   "C
Cc                <    U R                  X5      nUb  U$ SnSnS n U R	                  U5      nUc  UR                  5       nU" US/5        U/$ ! [         a    SnSn[        R                  U5         NYf = f! [         a    [        R                  S5         Njf = f)Ni  z404 Not Foundi  z500 Internal Server Errorz"Failed to render an error message!)Content-Typez	text/html)_serve_requestrC   rk   	exceptionrI   encode)r   environstart_responseresultr1   r   error_contents          r   rN   LiveReloadServer.serve_request   s    
	"((AF !D!C	@ ..t4M  JJLMs:;<'  	D-CMM#	  	@MM>?	@s"   A A9 #A65A69BBc                  ^ ^ US   R                  S5      R                  SS5      nUR                  S5      (       a  [        R                  " SU5      =n(       a  [        US   5      mU" SS	/5        UU 4S
 jnT R                     U" 5       (       dC  T R                  UR                  S5      US9  T R                  R                  UT R                  S9  ST R                  -  /sS S S 5        $ US-   R                  T R                  5      (       a  U[        T R                  5      S  nUR                  S5      (       a  US-  n[        R                   " SU-   5      R#                  S5      n[$        R&                  R)                  T R*                  U5      nO<US:X  a5  U" SS[,        R.                  R1                  T R                  5      4/5        / $ g T R                     T R                  R                  U 4S j5        T R                  mS S S 5         [3        US5      nT R8                  (       ae  UR                  S5      (       aO  U   UR;                  5       n	S S S 5        T R=                  W	T5      n	[>        R@                  " U	5      n[        U	5      n
O[$        R&                  RC                  U5      n
T RE                  U5      nU" SSU4S[G        U
5      4/5        [H        RJ                  RM                  U5      $ ! , (       d  f       GN= f! , (       d  f       GN= f! [4         a    UR                  S5      (       dr  [$        R&                  R7                  [$        R&                  R)                  US5      5      (       a0  U" SS[,        R.                  R1                  U5      S-   4/5        / s $  g f = f! , (       d  f       GNf= f)N	PATH_INFOzlatin-1zutf-8ignorez/livereload/z/livereload/([0-9]+)/[0-9]+rg   z200 OK)r   z
text/plainc                 "   > TR                   T :  $ r0   )rQ   )epochr   s   r   	condition2LiveReloadServer._serve_request.<locals>.condition  s    ..66r   HTTP_REFERER)
request_idr9   s   %dr   z
index.htmlz	302 FoundLocationc                 6   > T R                   T R                  :H  $ r0   )rQ   rP   r   s   r   r2   1LiveReloadServer._serve_request.<locals>.<lambda>-  s    d.A.ATEWEW.Wr   rbz.htmlr   zContent-Length)'r   decode
startswithre	fullmatchintrT   _log_poll_requestgetr   poll_response_timeoutrQ   r"   lenendswith	posixpathnormpathr    rD   r(   r   rF   urllibparsequoter   OSErrorisfiler_   read_inject_js_into_htmlioBytesIOgetsize_guess_typer   wsgirefutilFileWrapper)r   r   r   r(   mr   rel_file_path	file_pathr   contentcontent_lengthcontent_typer   s   `           @r   r   LiveReloadServer._serve_request  s
    {#**95<<WhO??>**LL!?FFqFAaD	x*H)IJ7 %%$;; ..w{{>/JW[.\((11)TE_E_1`!D$7$778 &% 3J""4??33 T__!5!78M}}S!!-%..s]/BCJJ3OMTYY>IS[;*fll6H6H6Y)Z([\I %%&WX''E 	!)T2D 9#5#5g#>#>))+ //?G::g&D \NWW__Y7N''	258H#nJ]7^_	
 ||''--a &%.   	==%%"''..iQ]9^*_*_{j&,,:L:LT:RUX:X-Y,Z[			 s8   AK> ,LL" 
N:>
L
L"BN76N7:
O	c                     UR                  S5      n[        R	                  U[        5       S9nSUS U UR                  5       XS  4-  $ ! [         a    [        U5      n NNf = f)Ns   </body>)r   r   s   %b<script>%b</script>%b)rindex
ValueErrorr   _SCRIPT_TEMPLATE
substituterO   r   )r   r   r   body_endscripts        r   r   %LiveReloadServer._inject_js_into_htmlG  su    	$~~j1H
 ",,5Z\,R)IXMMOI-
 
 	
  	$7|H	$s   A
 
A"!A"c                4    [         R                  SU 35        g )NzBrowser connected: )rk   r   )clsrG   r   s      r   r   "LiveReloadServer._log_poll_requestU  s     	&se,-r   c                    UR                  S5      (       a  gUR                  S5      (       a  g[        R                  " U5      u  p#U(       a  U$ g)N)z.jsz.JSz.mjszapplication/javascriptz.gzzapplication/gzipzapplication/octet-stream)r   	mimetypes
guess_type)r   r(   guess_s       r   r   LiveReloadServer._guess_typeZ  sF     ==/00+==%''-L)r   )rT   rV   rW   rQ   rU   rP   r`   r_   rB   rH   r;   rI   r"   r^   rF   rY   r7   rG   )r   g      ?g      ?)r;   zCallable[[], None]r&   r   r'   r   rF   r   r"   r   ra   floatr7   r   r   Noner0   )r(   r   rw   r   re   boolr   r   )r(   r   r   r   )F)r   r   )r   zIterable[bytes])r   zIterable[bytes] | None)r   r   r   r   daemon_threadsr   rK   ry   r~   r   r   r   rN   r   r   classmethod	functools	lru_cacher   r   r   __classcell__)rb   s   @r   r+   r+   ^   s    N "% $'.#'. '. 	'.
 '. '.  '. '. 
'. '.R\t \ \0A (- (!.F! !0=.~
 .  . * *r   r+   c                  $    \ rS rSrSS jrS rSrg)rL   ii  c                    [        U5      S:X  a  [        R                  O[        R                  n[        R	                  USU R
                   SU 35        g )N200"z" code )r   loggingDEBUGWARNINGrk   requestline)r   r1   sizelevels       r   log_request_Handler.log_requestj  s>    !$Te!34++,GD6:;r   c                2    [         R                  " U/UQ76   g r0   )rk   rl   )r   formatargss      r   log_message_Handler.log_messagen  s    		& 4 r   r   N)-r
  )r   r   r   r   r  r  r   r   r   r   rL   rL   i  s    <!r   rL   c                 D    [        [        R                  " 5       S-  5      $ )Ni  )roundr   	monotonicr   r   r   rO   rO   r  s    !D())r   c                    [         R                  " U 5      n UR                  [        R                  " 5       5      n[        U5      $ ! [
         a     Nf = f)zIMake the path relative to current directory if it's under that directory.)pathlibPathrelative_torD   getcwdr   r   )r(   ps     r   r   r   v  sH    TAMM"))+& q6M  s   $A 
AA)r"   r   r   r   )r&   r   r'   r   r(   r   r   r   )r   r   )r(   r   r   r   )3
__future__r   r   r   r=   r   r   rD   os.pathr  r   r   r@   socketserverstringr   rR   r   r   urllib.parser   r   wsgiref.simple_serverr   wsgiref.utiltypingr   r   r   r   watchdog.eventsrZ   watchdog.observers.polling_SCRIPT_TEMPLATE_STRTemplater   LoggerAdapterr	   	getLoggerr   rk   r#   r)   ThreadingMixInsimple_server
WSGIServerr+   WSGIRequestHandlerrL   rO   r   r   r   r   <module>r&     s    "  	    	    	    
        4 4  !, Z ??#78 :W** :
 W&&x0"5<
@H*|22G4I4I4T4T H*V!w$$77 !*r   