
    )hH                     P   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 ddl
mZmZmZ ddlmZ ddlmZmZmZmZmZmZ  ej.                  e      Zdj5                         Z ej8                  d	      Zd
Zej>                  dk(  sej>                  dk(  ryej@                  dk(  rjejC                  dd      d    Z" ee"      jG                  d      D  ci c]4  } | j>                  jI                  d      r| j>                  | jJ                  6 c} Z&d Z'e'Z( G d de)      Z*yc c} w )    )BytesION)ZipInfo   )	sysconfigdetect_encodingZipFile)finder)FileOperatorget_export_entryconvert_pathget_executableget_platformin_venva  
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="1.0.0.0"
 processorArchitecture="X86"
 name="%s"
 type="win32"/>

 <!-- Identify the application security requirements. -->
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
 <security>
 <requestedPrivileges>
 <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
 </requestedPrivileges>
 </security>
 </trustInfo>
</assembly>s   ^#!.*pythonw?[0-9.]*([ 	].*)?$z# -*- coding: utf-8 -*-
import re
import sys
from %(module)s import %(import_name)s
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(%(func)s())
ntjava. .exec                     d| v r[| j                  d      r4| j                  dd      \  }}d|v r|j                  d      s|d|d} | S | j                  d      sd| z  } | S )N z/usr/bin/env r   "z "z"%s")
startswithsplit)
executableenv_executables      N/var/www/html/venv/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.pyenquote_executabler   G   sx    
j
   1)//Q7Ck!+*@*@*E*-{;
  ((-#j0
    c                   H   e Zd ZdZeZdZddZd Ze	j                  j                  d      rd Zd Zd Zdd	Zd
 ZeZd Zd ZdZd ZddZd Zed        Zej6                  d        Zej:                  dk(  sej:                  dk(  rej<                  dk(  rd ZddZ ddZ!y)ScriptMakerz_
    A class to copy or create scripts from source scripts or callable
    specifications.
    Nc                    || _         || _        || _        d| _        d| _        t
        j                  dk(  xs( t
        j                  dk(  xr t
        j                  dk(  | _        t        d      | _
        |xs t        |      | _        t
        j                  dk(  xs( t
        j                  dk(  xr t
        j                  dk(  | _        t        j                  | _        y )NFposixr   )r   X.Yr   )
source_dir
target_diradd_launchersforceclobberosname_nameset_modesetvariantsr
   _fileop_is_ntsysversion_info)selfr%   r&   r'   dry_runfileops         r   __init__zScriptMaker.__init__d   s    $$*
G+[F1B1ZrxxSZGZK(6g!6ggoQ"''V*;*PD@P,,r   c                     |j                  dd      r`| j                  rTt        j                  j	                  |      \  }}|j                  dd      }t        j                  j                  ||      }|S )NguiFpythonpythonw)getr1   r*   pathr   replacejoin)r4   r   optionsdnfns        r   _get_alternate_executablez%ScriptMaker._get_alternate_executabler   sV    ;;ue$WW]]:.FBHi0Bb"-Jr   r   c                     	 t        |      5 }|j                  d      dk(  cddd       S # 1 sw Y   yxY w# t        t        f$ r t        j                  d|       Y yw xY w)zl
            Determine if the specified executable is a script
            (contains a #! line)
               z#!NzFailed to open %sF)openreadOSErrorIOErrorloggerwarning)r4   r   fps      r   	_is_shellzScriptMaker._is_shell{   s[    
*% .771:-. . .W% 2J?s#   7 +	7 47 7 %AAc                     | j                  |      r3dd l}|j                  j                  j	                  d      dk(  r|S d|z  S |j                         j                  d      r|S d|z  S )Nr   zos.nameLinuxz
jython.exez/usr/bin/env %s)rM   r   langSystemgetPropertylowerendswith)r4   r   r   s      r   _fix_jython_executablez"ScriptMaker._fix_jython_executable   sk    ~~j)99##//	:gE%% %z11 !!#,,\:!!$z11r   c                    t         j                  dk7  rd}nQt        t        dd      rd}n=t	        |      t	        |      z   dz   }t        j
                  dk(  rd}nd}d	|vxr ||k  }|rd
|z   |z   dz   }|S d}|d|z   |z   dz   z  }|dz  }|S )a  
        Build a shebang line. In the simple case (on Windows, or a shebang line
        which is not too long or contains spaces) use a simple formulation for
        the shebang. Otherwise, use /bin/sh as the executable, with a contrived
        shebang which allows the script to run either under Python or sh, using
        suitable quoting. Thanks to Harald Nordgren for his input.

        See also: http://www.in-ulm.de/~mascheck/various/shebang/#length
                  https://hg.mozilla.org/mozilla-central/file/tip/mach
        r#   Tcross_compilingF   darwini          s   #!   
s
   #!/bin/sh
s	   '''exec' s    "$0" "$@"
s   ' '''
)r*   r+   getattrr2   lenplatform)r4   r   post_interpsimple_shebangshebang_lengthmax_shebang_lengthresults          r   _build_shebangzScriptMaker._build_shebang   s     77g!NS+U3
 #N !_s;/??!CN||x'%("%("#:5aNN`<`NZ'+5=F
  $FlZ/+=OOFj Fr   c                    d}| j                   r| j                   }d}n/t        j                         st               }nt	               rJt
        j                  j                  t        j                  d      dt        j                  d      z        }nt
        j                  dk(  rJt
        j                  j                  t        j                  d      dt        j                  d      z        }n^t
        j                  j                  t        j                  d      dt        j                  d	      t        j                  d            }|r| j                  ||      }t        j                  j                  d
      r| j                  |      }|rt!        |      }|j#                  d      }t        j                  dk(  rd|vr	d|vr|dz  }| j%                  ||      }	 |j'                  d       |dk7  r	 |j'                  |       |S |S # t(        $ r t+        d|z        w xY w# t(        $ r t+        d|d|d      w xY w)NTFscriptszpython%sEXEr   BINDIRr:   VERSIONr   utf-8cliz	-X:Framesz-X:FullFramess
    -X:Framesz,The shebang (%r) is not decodable from utf-8zThe shebang (z-) is not decodable from the script encoding ())r   r   is_python_buildr   r   r*   r=   r?   get_pathget_config_varr+   rC   r2   r_   r   rU   r   encodere   decodeUnicodeDecodeError
ValueError)r4   encodingr`   r@   enquoter   shebangs          r   _get_shebangzScriptMaker._get_shebang   s   ??JG**,')JYi&8&8&CZR[RjRjkpRqEqrJww$  WW\\)*B*B8*L*4	8P8PQV8W*XZ
  WW\\,,X6$-$<$<Y$GIaIabgIhik
 77
GLJ<<""6*44Z@J +J7J  &&w/
LLE!k&D{2=(K%%j+>	WNN7# wXx( w " 	WKgUVV	W & X DKX"W X XXs   #H :H* H'*Ic                     | j                   t        |j                  |j                  j	                  d      d   |j                        z  S )Nr   r   )moduleimport_namefunc)script_templatedictprefixsuffixr   )r4   entrys     r   _get_script_textzScriptMaker._get_script_text   sB    ##d<<U\\-?-?-DQ-Gell'\ \ 	\r   c                 ^    t         j                  j                  |      }| j                  |z  S N)r*   r=   basenamemanifest)r4   exenamebases      r   get_manifestzScriptMaker.get_manifest   s%    ww(}}t##r   c                 2   | j                   xr | j                  }|s||z   }n|dk(  r| j                  d      }n| j                  d      }t               }t	        |d      5 }	t
        j                  j                  d      }
|
rAt        j                  t        |
            d d }t        d|      }|	j                  ||       n|	j                  d|       d d d        |j                         }||z   |z   }|D ]E  }t
        j                  j                  | j                   |      }|rXt
        j                  j#                  |      \  }}|j%                  d      r|}d	|z  }	 | j&                  j)                  ||       n| j                  r|j9                  d|z         s|d|}t
        j                  j1                  |      r#| j:                  st,        j/                  d|       | j&                  j)                  ||       | j<                  r| j&                  j?                  |g       |jA                  |       H y # 1 sw Y   nxY w# t*        $ r t,        j/                  d
       d|z  }t
        j                  j1                  |      rt        j2                  |       t        j4                  ||       | j&                  j)                  ||       t,        j7                  d       	 t        j2                  |       n# t*        $ r Y nw xY wY w xY w)NpytwSOURCE_DATE_EPOCH   z__main__.py)filename	date_timez.pyz%s.exez:Failed to write executable - trying to use .deleteme logicz%s.deletemez0Able to replace executable using .deleteme logicr   zSkipping existing file %s)!r'   r1   _get_launcherr   r   r*   environr<   timegmtimeintr   writestrgetvaluer=   r?   r&   splitextr   r0   write_binary_file	ExceptionrJ   rK   existsremoverenamedebugrT   r)   r-   set_executable_modeappend)r4   namesrw   script_bytes	filenamesextuse_launcherlauncherstreamzfsource_date_epochr   zinfozip_datar+   outnamenedfnames                      r   _write_scriptzScriptMaker._write_script  s   ))9dkk"\1Ld{--c2--c2YF% =$&JJNN3F$G!$ $C0A,B CBQ GI#]iPEKK|4KK|<= (H#g-8L !	&Dggll4??D9Gww''01<<&G"W,LL227LI" ;;w'7'7c	'B)0#6G77>>'*4<<NN#>H..wE==LL44gY?W%C!	&= =& ! NN $9 :*W4Fww~~f-		&)IIgv.LL227LILL "3 4		&)$ sD   !A5I#IIBL.LL	LLLLL-c                 P   t               }d| j                  v r|j                  |       d| j                  v r"|j                  || j                  d          d| j                  v r>|j                  || j                  | j                  d   d| j                  d          |S )Nr   Xr   r$   r   r   )r.   r/   addr3   variant_separator)r4   r+   rd   s      r   get_script_filenamesz ScriptMaker.get_script_filenames<  s    JJt$--JJt'8'8';<=DMM!JJdD,B,BDDUDUVWDXZ^ZkZklmZnopr   c                 x   d}|r9|j                  dg       }|r%ddj                  |      z  }|j                  d      }| j                  d||      }| j	                  |      j                  d      }| j                  |j                        }|r|j                  dd      rd	}	nd
}	| j                  |||||	       y )Nr   interpreter_argsz %sr   rk   r@   r9   Fpywr   )r<   r?   rq   rx   r   r   r+   r   )
r4   r   r   r@   r`   argsrw   scriptscriptnamesr   s
             r   _make_scriptzScriptMaker._make_scriptF  s    ;;126Dsxx~-"kk'2##G['#J&&u-44W=//

;w{{5%0CC;CHr   c                    d}t         j                  j                  | j                  t	        |            }t         j                  j                  | j
                  t         j                  j                  |            }| j                  s3| j                  j                  ||      st        j                  d|       y 	 t        |d      }|j                         }|st        j                  d|       y t        j!                  |j#                  dd            }|rd}|j%                  d      xs d	}	 |sh|r|j+                          | j                  j-                  ||       | j.                  r| j                  j1                  |g       |j3                  |       y t        j5                  d
|| j
                         | j                  j(                  st7        |j                        \  }	}
|j9                  d       | j;                  |	      }dv rd}nd}t         j                  j                  |      }| j=                  |g||j?                         ||       |r|j+                          y y # t&        $ r | j(                  s d }Y Ww xY w)NFznot copying %s (up-to-date)rbz%s is an empty file (skipping)s   
r\   Tr   r   zcopying and adjusting %s -> %sr   s   pythonwr   r   ) r*   r=   r?   r%   r   r&   r   r(   r0   newerrJ   r   rF   readlinerK   FIRST_LINE_REmatchr>   grouprI   r5   close	copy_filer-   r   r   infor   seekrx   r   rG   )r4   r   r   adjustr   f
first_liner   r`   ru   linesrw   r   r   s                 r   _copy_scriptzScriptMaker._copy_scriptV  s   doo|F/CD'',,t0@0@0HIzz$,,"4"4VW"ELL6?
	4VT"A J?H!''
(:(:7E(JKE#kk!n3	LL""673}}00';W%KK8&$//R<<''"1!**"=%q	++HkB+CCGG$$W-""A39cJ	 E  	<<A	s   =I- -J	J	c                 .    | j                   j                  S r   r0   r5   )r4   s    r   r5   zScriptMaker.dry_run  s    ||###r   c                 &    || j                   _        y r   r   )r4   values     r   r5   zScriptMaker.dry_run  s    $r   r   c                     t        j                  d      dk(  rd}nd}t               dk(  rdnd}|||d}|t        vrd	|d
t        }t        |      t        |   S )NP   6432z	win-arm64z-armr   r   zUnable to find resource z in package )structcalcsizer   WRAPPERSDISTLIB_PACKAGErt   )r4   kindbitsplatform_suffixr+   msgs         r   r   zScriptMaker._get_launcher  sa    s#q((4+(Ef2O#'?D8#o/ o%D>!r   c                 t    g }t        |      }|| j                  ||       |S | j                  |||       |S )a  
        Make a script.

        :param specification: The specification, which is either a valid export
                              entry specification (to make a script from a
                              callable) or a filename (to make a script by
                              copying from a source location).
        :param options: A dictionary of options controlling script generation.
        :return: A list of all absolute pathnames written to.
        r   )r   r   r   )r4   specificationr@   r   r   s        r   makezScriptMaker.make  sM     	 /=mY7  eY@r   c                 Z    g }|D ]#  }|j                  | j                  ||             % |S )z
        Take a list of specifications and make scripts from them,
        :param specifications: A list of specifications.
        :return: A list of all absolute pathnames written to,
        )extendr   )r4   specificationsr@   r   r   s        r   make_multiplezScriptMaker.make_multiple  s9     	+ 	@MTYY}g>?	@r   )TFN)r   Nr   )"__name__
__module____qualname____doc__SCRIPT_TEMPLATEr}   r   r7   rC   r2   r_   r   rM   rU   re   rx   r   _DEFAULT_MANIFESTr   r   r   r   r   r   r   propertyr5   setterr*   r+   r,   r   r   r    r   r   r!   r!   [   s     &OJ- ||v&
	
	2"H@D\ !H$5&n I 0d $ $ ^^% % 
ww$277f,T1A	"&	r   r!   )+ior   loggingr*   rer   r2   r   zipfiler   compatr   r   r   	resourcesr	   utilr
   r   r   r   r   r   	getLoggerr   rJ   stripr   compiler   r   r+   r,   rsplitr   iteratorrT   bytesr   r   _enquote_executableobjectr!   )rs   0r   <module>r     s     	 	  
   7 7  g g			8	$  uw! & 

=>" 77d?rww&(RXX-= ooc1-a0O (11"566??6" 	
H" ) d& d7s   9D#