o
    Zh                     @   s  d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ g dZG dd	 d	eZG d
d deZG dd deZG dd deZ G dd deZ!dd Z"G dd deZ#G dd deZ$G dd deZ%G dd deZ&G dd deZ'G dd deZ(G d d! d!eZ)G d"d# d#eZ*G d$d% d%eZ+G d&d' d'eZ,G d(d) d)eZ-G d*d+ d+eZ.G d,d- d-eZ/G d.d/ d/eZ0G d0d1 d1eZ1G d2d3 d3eZ2G d4d5 d5eZ3dS )6z
    pygments.lexers.configs
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for configuration file formats.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexer
RegexLexerdefaultwordsbygroupsincludeusingline_re)TextCommentOperatorKeywordNameStringNumberPunctuation
WhitespaceLiteralErrorGeneric)	BashLexer)	JsonLexer)IniLexerSystemdLexerDesktopLexerRegeditLexerPropertiesLexerKconfigLexerCfengine3LexerApacheConfLexerSquidConfLexerNginxConfLexerLighttpdConfLexerDockerLexerTerraformLexerTermcapLexerTerminfoLexerPkgConfigLexerPacmanConfLexerAugeasLexer	TOMLLexerNestedTextLexerSingularityLexerUnixConfigLexerc                   @   s   e Zd ZdZdZg dZg dZddgZdefde	j
fd	eeefd
eejeeeeeedfdeejeeeefdejfgdefdeeeeefdedfgdZdd ZdS )r   z5
    Lexer for configuration files in INI style.
    INI)inicfgdosini)z*.iniz*.cfgz*.infz.editorconfigz
text/x-iniztext/inf\s+[;#].*z(\[.*?\])([ \t]*)$u0   (.*?)([  \t]*)([=:])([ \t]*)([^;#\n]*)(\\)(\s+)valueu8   (.*?)([ \t]*)([=:])([  \t]*)([^ ;#\n]*(?: +[^ ;#\n]+)*)z(.+?)$z(\s*)(.*)(\\)([ \t]*)z.*$#poprootr4   c                 C   s:   |  d}|dk rdS | d dkr| |d  dkrdS dS )	N
   Fr   [   ]g?)find)textZnpos r?   N/var/www/html/lang_env/lib/python3.10/site-packages/pygments/lexers/configs.pyanalyse_text>   s   
zIniLexer.analyse_textN)__name__
__module____qualname____doc__namealiases	filenames	mimetypesr   r   Singler   r   r   	Attributer   r   r
   tokensrA   r?   r?   r?   r@   r      s8    r   c                   @   sn   e Zd ZdZdZdZdgZdgZddefde	e
jefd	e	eefd
e	ejejeeeeefgiZdd ZdS )r   z?
    Lexer for .desktop files.

    .. versionadded:: 2.16
    zDesktop filezXhttps://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.htmldesktopz	*.desktopr7   	^[ \t]*\nz
^(#.*)(\n)(\[[^\]\n]+\])(\n)zG([-A-Za-z0-9]+)(\[[^\] \t=]+\])?([ \t]*)(=)([ \t]*)([^\n]*)([ \t\n]*\n)c                 C   2   |  drdS td| d d tjd urdS dS )Nz[Desktop Entry]      ?z^\[Desktop Entry\][ \t]*$  ?        
startswithresearch	MULTILINEr>   r?   r?   r@   rA   ]   
   
zDesktopLexer.analyse_textN)rB   rC   rD   rE   rF   urlrG   rH   r   r   r   rJ   r   r   rK   	Namespacer   r   rL   rA   r?   r?   r?   r@   r   G   s     
r   c                   @   s   e Zd ZdZdZdZdgZg dZdefde	e
jefde	eefd	e	ejeeeeeed
fde	ejeeeeefgde	e
jefde	eeeefde	eeedfgdZdd ZdS )r   zC
    Lexer for systemd unit files.

    .. versionadded:: 2.16
    SystemdzDhttps://www.freedesktop.org/software/systemd/man/systemd.syntax.htmlsystemd)z	*.servicez*.socketz*.devicez*.mountz*.automountz*.swapz*.targetz*.pathz*.timerz*.slicez*.scoperN   z^([;#].*)(\n)rO   z*([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\\)(\n)r4   z&([^=]+)([ \t]*)(=)([ \t]*)([^\n]*)(\n)z([ \t]*)([^\n]*)(\\)(\n)z([ \t]*)([^\n]*)(\n)r5   r6   c                 C   rP   )Nz[Unit]rQ   z^\[Unit\][ \t]*$rR   rS   rT   rU   rZ   r?   r?   r@   rA      r[   zSystemdLexer.analyse_textN)rB   rC   rD   rE   rF   r\   rG   rH   r   r   r   rJ   r   r   rK   r   r   r
   rL   rA   r?   r?   r?   r@   r   e   s:    r   c                   @   s   e Zd ZdZdZdZdgZdgZdgZde	fde
fd	ejfd
eeeejefdeeje
ee
dfdeeje
ee
dfgdedfdeejeedfdedfedgdZdd ZdS )r   zZ
    Lexer for Windows Registry files produced by regedit.

    .. versionadded:: 1.6
    regz8http://en.wikipedia.org/wiki/Windows_Registry#.REG_filesregistryz*.regztext/x-windows-registryzWindows Registry Editor.*r2   r3   z(\[)(-?)(HKEY_[A-Z_]+)(.*?\])$z)("(?:\\"|\\\\|[^"])+")([ \t]*)(=)([ \t]*)r4   z(.*?)([ \t]*)(=)([ \t]*)-r5   z1(dword|hex(?:\([0-9a-fA-F]\))?)(:)([0-9a-fA-F,]+).+r6   c                 C   s
   |  dS )NzWindows Registry Editor)rV   rZ   r?   r?   r@   rA      s   
zRegeditLexer.analyse_textN)rB   rC   rD   rE   rF   r\   rG   rH   rI   r
   r   r   rJ   r   r   r   r   BuiltinrK   Variabler   r   r   r   rL   rA   r?   r?   r?   r@   r      s>    r   c                   @   s   e Zd ZdZdZddgZdgZdgZdej	fde
fd	e
fed
gdejfeddee
ee
dfde
dfde
dfgdefedde
dfgdeeje
fdejfgdZdS )r   z
    Lexer for configuration files in Java's properties format.

    Note: trailing whitespace counts as part of the value as per spec

    .. versionadded:: 1.4
    
Properties
propertiesjpropertiesz*.propertiesztext/x-java-propertiesz[!#].*|/{2}.*\nz	^[^\S\n]+keyz
[^\\:=\s]+escapesz([^\S\n]*)([:=])([^\S\n]*))r5   r4   [^\S\n]+r5   z[^\\\n]+z(\\\n)([^\S\n]*)z\\(.|\n))r7   rj   r4   rk   N)rB   rC   rD   rE   rF   rG   rH   rI   r   rJ   r   r   r   rK   r   r   r   r   EscaperL   r?   r?   r?   r@   r      s8    


r   c                 C   sB   d}|dkr	d}nd|d  }| dkrd}nd|  }d|||f S )	N      +z{1,%d}r;    z{%s}z(?:\t| %s\t| {%s})%s.*\nr?   )levelZ	tab_widthZspace_repeatZlevel_repeatr?   r?   r@   
_rx_indent   s   rs   c                   @   s   e Zd ZdZdZg dZg dZdgZdZdd Z	d	d
 Z
defdejfedddefdedfdejfdefdefdejfdejfdejfdefgdefe	de	de	de	de	de	de	d ed!g	e
de
de
de
de
de
de
d d"	Zd#S )$r   zC
    For Linux-style Kconfig files.

    .. versionadded:: 1.6
    Kconfig)kconfig
menuconfigzlinux-configzkernel-config)zKconfig*z*Config.in*zexternal.in*zstandard-modules.inztext/x-kconfigr   c                 C   s   t | tjd|  fS )Nzindent%s)rs   r   Docrr   r?   r?   r@   call_indent  s   zKconfigLexer.call_indentc                 C   s   t | tjfdtftdgS )N\s*\n#pop:2)rs   r   rw   r
   r   rx   r?   r?   r@   	do_indent  s   zKconfigLexer.do_indentr2   #.*?\n)Zmainmenuconfigrv   choiceZ	endchoicecommentZmenuZendmenuz
visible ififendifsourcepromptselectz
depends onr   rangeoption\bsuffixz(---help---|help)[\t ]*\nhelpz;(bool|tristate|string|hex|int|defconfig_list|modules|env)\bz[!=&|]z[()][0-9]+z'(''|[^'])*'z"(""|[^"])*"\S+rz               r9   ro   r;   r5   )	r7   r   Zindent7Zindent6Zindent5Zindent4Zindent3Zindent2Zindent1N)rB   rC   rD   rE   rF   rG   rH   rI   flagsry   r|   r   r   rJ   r   r   r   rd   r   r   r   Integerr   Doubler
   r   rL   r?   r?   r?   r@   r   	  sZ    
r   c                   @   sr  e Zd ZdZdZdZddgZdgZg Zde	fde
eeeeefd	e
eeeeejed
fde
eeeeejfde
eejeeejeeefde
ejeeefdedfde
ejefde
ejefde
ejefdejfdefdefdefdejfdejfdejfdefgdejdfdejfdedfdefd efgdejd!fd"ejdfd#ejfgd$edfd%efdejfdefgd&Zd'S )(r   zF
    Lexer for CFEngine3 policy files.

    .. versionadded:: 1.5
    	CFEngine3zhttp://cfengine.org	cfengine3cf3z*.cfr}   z(body)(\s+)(\S+)(\s+)(control)z%(body|bundle)(\s+)(\S+)(\s+)(\w+)(\()arglistz!(body|bundle)(\s+)(\S+)(\s+)(\w+)z7(")([^"]+)(")(\s+)(string|slist|int|real)(\s*)(=>)(\s*)z(\S+)(\s*)(=>)(\s*)"stringz	(\w+)(\()z([\w.!&|()]+)(::)z(\w+)(:)z@[{(][^)}]+[})]z[(){},;]z=>z->z\d+\.\d+\d+\w+r2   z\$[{(]interpol\\.r5   ri   .#pushz[})]z	[^${()}]+z\),)r7   r   r   r   N)rB   rC   rD   rE   rF   r\   rG   rH   rI   r   r   r   r   r   Functionr   re   Typer   Reservedr
   r   ClassDeclarationr   Floatr   Interpolrm   rL   r?   r?   r?   r@   r   V  sn    




r   c                   @   s   e Zd ZdZdZg dZg dZdgZej	ej
B Zdefdefdeejeeejfd	eejejfd
ejdfdefgdefdedfdefdefdefdefdejfdefdejfdefg
dZdS )r   zo
    Lexer for configuration files following the Apache config file
    format.

    .. versionadded:: 0.6
    
ApacheConf)
apacheconfaconfapache)z	.htaccesszapache.confzapache2.confztext/x-apacheconfr2   z#(.*\\\n)+.*$|(#.*?)$z"(<[^\s>/][^\s>]*)(?:(\s+)(.*))?(>)z(</[^\s>]+)(>)z[a-z]\w*r4   z\.+z\\\nz\n+r5   z\\rl   \d+\.\d+\.\d+\.\d+(?:/\d+)?r   z/([*a-z0-9][*\w./-]+)z(on|off|none|any|all|double|email|dns|min|minimal|os|productonly|full|emerg|alert|crit|error|warn|notice|info|debug|registry|script|inetd|standalone|user|group)\bz"([^"\\]*(?:\\(.|\n)[^"\\]*)*)"z	[^\s"\\]+r6   N)rB   rC   rD   rE   rF   rG   rH   rI   rW   rY   
IGNORECASEr   r   r   r   r   Tagr   rd   r
   r   Otherr   r   rL   r?   r?   r?   r@   r     s@    

r   c                   @   s>  e Zd ZdZdZdZg dZdgZdgZe	j
ZdZdZd	Zd
ZdZdZdZde de dZdZde de dZde de dZe de dZdefdedfeedddefeedddejfeedddefeedddefeedddefeedddefeej fd efd!e!fgd"ej"d#fd$ed#fe#d#gd%Z$d&S )'r    zI
    Lexer for squid configuration files.

    .. versionadded:: 0.9
    	SquidConfzhttp://www.squid-cache.org/)	squidconf
squid.confsquidr   ztext/x-squidconf)Z
access_logZaclZalways_directZannounce_hostZannounce_periodZannounce_portZannounce_toZanonymize_headersZappend_domainZas_whois_serverZauth_param_basicZauthenticate_childrenZauthenticate_programZauthenticate_ttlZbroken_postsZbuffered_logsZcache_access_logZcache_announce	cache_dirZcache_dns_programZcache_effective_groupZcache_effective_userZ
cache_hostZcache_host_aclZcache_host_domainZ	cache_logZ	cache_memZcache_mem_highZcache_mem_lowZ	cache_mgrZcachemgr_passwdZ
cache_peerZcache_peer_accessZcache_replacement_policyZcache_stoplistZcache_stoplist_patternZcache_store_logZ
cache_swapZcache_swap_highZcache_swap_logZcache_swap_lowZ	client_dbZclient_lifetimeZclient_netmaskconnect_timeoutZcoredump_dirZdead_peer_timeoutZdebug_optionsZdelay_accessZdelay_classZdelay_initial_bucket_levelZdelay_parametersZdelay_poolsZ	deny_infoZdns_childrenZdns_defnamesZdns_nameserversZdns_testnamesZemulate_httpd_logZerr_html_textZfake_user_agentZfirewall_ipZforwarded_forZforward_snmpd_portZfqdncache_sizeZftpget_optionsZftpget_programZftp_list_widthZftp_passiveZftp_userZhalf_closed_clientsZheader_accessZheader_replaceZhierarchy_stoplistZhigh_response_time_warningZhigh_page_fault_warningZ
hosts_fileZ	htcp_portZhttp_accessZhttp_anonymizerZhttpd_accelZhttpd_accel_hostZhttpd_accel_portZhttpd_accel_uses_host_headerZhttpd_accel_with_proxyZ	http_portZhttp_reply_accessZ
icp_accessZicp_hit_staleZicp_portZicp_query_timeoutZident_lookupZident_lookup_accessZident_timeoutZincoming_http_averageZincoming_icp_averageZinside_firewallZipcache_highZipcache_lowZipcache_sizeZlocal_domainZlocal_ipZlogfile_rotateZlog_fqdnZlog_icp_queriesZlog_mime_hdrsZmaximum_object_sizeZmaximum_single_addr_triesZmcast_groupsZmcast_icp_query_timeoutZmcast_miss_addrZmcast_miss_encode_keyZmcast_miss_portZmemory_poolsZmemory_pools_limitZmemory_replacement_policyZ
mime_tableZmin_http_poll_cntZmin_icp_poll_cntZminimum_direct_hopsZminimum_object_sizeZminimum_retry_timeoutZmiss_accessZnegative_dns_ttlZnegative_ttlZneighbor_timeoutZneighbor_type_domainZ
netdb_highZ	netdb_lowZnetdb_ping_periodZnetdb_ping_rateZnever_directno_cacheZpassthrough_proxyZpconn_timeoutZpid_filenameZpinger_programZpositive_dns_ttlZprefer_direct
proxy_authZproxy_auth_realmZ
query_icmpZquick_abortZquick_abort_maxZquick_abort_minZquick_abort_pctZrange_offset_limitread_timeoutZredirect_childrenZredirect_programZredirect_rewrites_host_headerZreference_ageZrefresh_patternZreload_into_imsZrequest_body_max_sizeZrequest_sizerequest_timeoutZshutdown_lifetimeZsingle_parent_bypassZsiteselect_timeoutZsnmp_accessZsnmp_incoming_addressZ	snmp_portZsource_pingZ	ssl_proxyZstore_avg_object_sizeZstore_objects_per_bucketZstrip_query_termsZswap_level1_dirsZswap_level2_dirsZtcp_incoming_addressZtcp_outgoing_addressZtcp_recv_bufsizeZtest_reachabilityZudp_hit_objZudp_hit_obj_sizeZudp_incoming_addressZudp_outgoing_addressZunique_hostnameZunlinkd_programZuri_whitespaceZuseragent_logZvisible_hostnameZ
wais_relayZwais_relay_hostZwais_relay_port)z
proxy-onlyweightttlzno-queryr   zround-robinzmulticast-responderonoffallZdenyZallowZviaparentz	no-digestheapZlrurealmchildrenq1q2ZcredentialsttlnonedisableZoffline_toggleZdiskd)shutdowninfoZ	parameterZserver_listZclient_listr   )objectsZ
vm_objectsZutilizationZipcacheZ	fqdncacheZdnsZ
redirectorioZreply_headersZfiledescriptorsZnetdb)statusenabler   clear)Z	url_regexZurlpath_regexZreferer_regexportprotoZreq_mime_typeZrep_mime_typemethodZbrowserusersrcdsttimeZ	dstdomainidentZsnmp_communityz(\d+|0x[0-9a-f]+)(z(\.z){3})z([0-9a-f]{0,4})z(:z){1,7})|)z(/(z|\d+))?r2   #r   r   prefixr   zstats/zlog/=z(?:\b\d+\b(?:-\b\d+|%)?)r   z	\s*TAG:.*r5   rc   )r7   r   N)%rB   rC   rD   rE   rF   r\   rG   rH   rI   rW   r   r   keywordsoptsactionsZactions_statsZactions_logZaclsZ
ipv4_groupZipv4Z
ipv6_groupZipv6Zbare_ipipr   r   r   r   r   Constantr   r   r   r
   rm   r   rL   r?   r?   r?   r@   r      sJ    ;

r    c                   @   s   e Zd ZdZdZdZdgZdgZdgZde	e
eefde
d	fed
gdedfde
jd	fed
gdedfdedfed
gdejfdejfdejfde	eeejfdefdejfde	eeejfdefdefdefdefdefgdZdS )r!   zJ
    Lexer for Nginx configuration files.

    .. versionadded:: 0.11
    zNginx configuration filezhttp://nginx.net/nginxz
nginx.confztext/x-nginx-confz(include)(\s+)([^\s;]+)z[^\s;#]+stmtbase\}r{   \{block;r5   #.*\nzon|offz\$[^\s;#()]+z([a-z0-9.-]+)(:)([0-9]+)z[a-z-]+/[a-z-+]+z[0-9]+[km]?\bz(~)(\s*)([^\s{]+)z[:=~]z[^\s;#{}$]+z	/[^\s;#]*r2   z[$;])r7   r   r   r   N)rB   rC   rD   rE   rF   r\   rG   rH   rI   r   r   r   r   r   r   r]   r   rJ   r   re   r   r   r   Regexr
   rL   r?   r?   r?   r@   r!   A  sF    

r!   c                   @   sv   e Zd ZdZdZdZddgZdgZdgZdd	e	j
fd
efdefdefdefdefdejfdefdejfdefg
iZdS )r"   zM
    Lexer for Lighttpd configuration files.

    .. versionadded:: 0.11
    zLighttpd configuration filezhttp://lighttpd.net/lighttpdlightyzlighttpd.confztext/x-lighttpd-confr7   r   z/\S*z[a-zA-Z._-]+r   r   z=>|=~|\+=|==|=|\+z\$[A-Z]+z[(){}\[\],]z"([^"\\]*(?:\\.[^"\\]*)*)"r2   N)rB   rC   rD   rE   rF   r\   rG   rH   rI   r   rJ   r   r   r   r   rd   r   r   r   r   rL   r?   r?   r?   r@   r"   p  s(    r"   c                   @   s  e Zd ZdZdZdZddgZddgZdgZd	Z	d
Z
dZejejB Zddefdeeeeeeeefdef eeeeefdeef eeeeefdef eeeeeeefdeef eeeeefde	 eeeefde
f eeefdeefg	iZdS )r#   zJ
    Lexer for Docker configuration files.

    .. versionadded:: 2.0
    Dockerzhttp://docker.iodocker
dockerfile
Dockerfilez*.dockerztext/x-dockerfile-configz-(?:MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)z-(?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY)z(?:\s*\\?\s*)r7   #.*z1(FROM)([ \t]*)(\S*)([ \t]*)(?:(AS)([ \t]*)(\S*))?z(ONBUILD)(\s+)(%s)z$(HEALTHCHECK)(\s+)((%s--\w+=\w+%s)*)z/(VOLUME|ENTRYPOINT|CMD|SHELL)(\s+)(%s)(\[.*?\])z$(LABEL|ENV|ARG)(\s+)((%s\w+=\w+%s)*)z(%s|VOLUME)\b(\s+)(.*)z	(%s)(\s+)z(.*\\\n)*.+N)rB   rC   rD   rE   rF   r\   rG   rH   rI   Z	_keywordsZ_bash_keywordsZ_lbrW   r   rY   r   r   r   r   r   r   r   r   r   rL   r?   r?   r?   r@   r#     s>    


r#   c                   @   s  e Zd ZdZdZdZg dZddgZddgZd	Z	d

de	ZdZdZdZdZdZdZdZdZdZdZee e e e e e e e Zd

deZdd Zededdeejfeddddej feeddde!j"fededd e#fgd!e$j%d"fd#e$j&fedd$ee'ej(e'e)e'e*fd%ee'ej+e'e)e'fd&ee'e,jje'e)e'fed' eej-e*fd(ee*ej(e*fed) ee!j.e'ej/e'ej0e'e*fd*efg
d+eej0fd,eej0fgd-e*fgd.e$j%fd/e$j%d0fd1e$j%d2fd3e$j%fgd4e'fd5e'fd6ee1e'fgd7Z2d8S )9r$   zH
    Lexer for terraformi ``.tf`` files.

    .. versionadded:: 2.1
    	Terraformzhttps://www.terraform.io/)	terraformtfhclz*.tfz*.hclzapplication/x-tfzapplication/x-terraform)backenddatamoduleoutputproviderZprovisionerresourcevariablez({})r   )	r   numberboollisttuplemapsetobjectnull)	absceilfloorlogmaxZmixZparseintpowsignum)ZchompformatZ
formatlistindentjoinlowerregexZregexallreplacesplitZstrrevsubstrtitleZtrimZ
trimprefixZ
trimsuffixZ	trimspaceupper)ZalltrueZanytrueZ	chunklistZcoalesceZcoalescelistcompactconcatcontainsZdistinctelementflattenindexkeyslengthr   lookupr  Z	matchkeysmerger   reverseZsetintersectionZ
setproductZsetsubtractZsetunionslicesortsumZ	transposevaluesZzipmap)Zbase64decodeZbase64encodeZ
base64gzipZ	csvdecodeZ
jsondecodeZ
jsonencodeZtextdecodebase64Ztextencodebase64	urlencodeZ
yamldecodeZ
yamlencode)	abspathdirnameZ
pathexpandbasenamefileZ
fileexistsZfilesetZ
filebase64Ztemplatefile)
formatdateZtimeadd	timestamp)Zbase64sha256Zbase64sha512ZbcryptZfilebase64sha256Zfilebase64sha512Zfilemd5Zfilesha1Z
filesha256Z
filesha512md5Z
rsadecryptsha1sha256sha512uuidZuuidv5)ZcidrhostZcidrnetmaskZ
cidrsubnetZcidrsubnets)	ZcandefaultsZtobooltolistZtomapZtonumberZtosetZtostringtryc           	      c   s:   | d}|t|dfV  | dtj|dfV  | d|_|d|_|jtj|dfV  | |_|d}d}g }t	|j
|jD ]<}|rT|  }n|  }||kr|D ]}|  tj| fV  q`|  tj| fV  | |_ n|| qI|D ]}|  t| fV  qt|j
|_d S )Nr;   ro   r9   T)startr   groupr   	DelimiterposendHeredocr	   finditerr>   striprstripappendr   len)	selfmatchctxr5  ZhdnameZtolerantlinescheckZamatchr?   r?   r@   heredoc_callback  s2   



zTerraformLexer.heredoc_callbackbasic
whitespacez(".*"))truefalser   r   
identifierpunctuationr   z\s*/\*r   z\s*(#|//).*\nz'(\s*)([0-9a-zA-Z-_]+)(\s*)(=?)(\s*)(\{)z"(\s*)([0-9a-zA-Z-_]+)(\s*)(=)(\s*)z(\s*)("\S+")(\s*)([=:])(\s*)z(\()z(\[)([a-z_,\s]+)(\])z8(\s+)("[0-9a-zA-Z-_]+")?(\s*)("[0-9a-zA-Z-_]+")(\s+)(\{)z(<<-?)\s*([a-zA-Z_]\w*)(.*?\n)z\b(var\.[0-9a-zA-Z-_\.\[\]]+)\bz.\b([0-9a-zA-Z-_\[\]]+\.[0-9a-zA-Z-_\.\[\]]+)\bz[\[\]()\{\},.?:!=]z[^*/]z/\*r   z\*/r5   z[*/]ri   r2   (\\)(\n))r7   rF  rJ  rK  r   rG  N)3rB   rC   rD   rE   rF   r\   rG   rH   rI   classesr  r  Z
classes_retypesZnumeric_functionsZstring_functionsZcollection_functionsZencoding_functionsZfilesystem_functionsZdate_time_functionsZhash_crypto_functionsZip_network_functionsZtype_conversion_functionsbuiltinsZbuiltins_rerE  r   r   r   r   r   r   r   r   r   r   r   	MultilinerJ   r   rd   r   r   rK   r   r   r   r   re   r
   rL   r?   r?   r?   r@   r$     s    	'
"


r$   c                	   @   s   e Zd ZdZdZdgZddgZg Zdefde	j
dfdefgd	ed
fdedfdefde	jfgdeeefdedfdeeefdedfdefde	jfgdefded
fdefdefgdZdS )r%   zm
    Lexer for termcap database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    Termcaptermcapztermcap.src^#.*z
^[^\s#:|]+namesr2   ri   r5   :defs\|z[^:|]+z(\\)(\n[ \t]*)z\n[ \t]*r{   (#)([0-9]+)r   r   z	[^\s:=#]+z\\072z[^:\\]+r   r7   rT  rV  r   N)rB   rC   rD   rE   rF   rG   rH   rI   r   r   r   r   r   rK   r   r
   r   r   r   r   rL   r?   r?   r?   r@   r%   [  s8    	
	
r%   c                
   @   s   e Zd ZdZdZdgZddgZg Zdefde	j
dfdefgd	ed
fdeeedfdefde	jfgdefd	edfdeeefdedfdeeefde	jfgdefdeeed
fdefdefgdZdS )r&   zn
    Lexer for terminfo database source.

    This is very simple and minimal.

    .. versionadded:: 2.1
    Terminfoterminfozterminfo.srcz^#.*$z
^[^\s#,|]+rT  r2   ri   r5   z(,)([ \t]*)rV  rW  z[^,|]+z\n[ \t]+r{   rX  r   r   z	[^\s,=#]+z\\[,\\]z[^\\,]+r   rY  N)rB   rC   rD   rE   rF   rG   rH   rI   r   r   r   r   r   r   rK   r   r   r   r   rL   r?   r?   r?   r@   r&     s8    	
	
r&   c                
   @   s   e Zd ZdZdZdZdgZdgZg Zde	j
fdeejefdeejed	fed
defdefdefgdefdejdfgdejdfdejfged
de	j
dfdedfdefdefdefgdZdS )r'   z
    Lexer for pkg-config
    (see also `manual page <http://linux.die.net/man/1/pkg-config>`_).

    .. versionadded:: 2.1
    	PkgConfigz4http://www.freedesktop.org/wiki/Software/pkg-config/	pkgconfigz*.pc#.*$z	^(\w+)(=)z^([\w.]+)(:)spvalueinterpr2   z[^${}#=:\n.]+r   z\$\$z\$\{curlyr   r5   r   ri   z[^${}#\n\s]+)r7   r`  ra  r_  N)rB   rC   rD   rE   rF   r\   rG   rH   rI   r   rJ   r   r   rK   r   r   r   r   r   r
   r   r   rL   r?   r?   r?   r@   r'     s>    



r'   c                	   @   s   e Zd ZdZdZdZdgZdgZg Zdde	j
fdeeeefd	eejeefd
eeejefedddejfdefdefgiZdS )r(   a[  
    Lexer for pacman.conf.

    Actually, IniLexer works almost fine for this format,
    but it yield error token. It is because pacman.conf has
    a form without assignment like:

        UseSyslog
        Color
        TotalDownload
        CheckSpace
        VerbosePkgLists

    These are flags to switch on.

    .. versionadded:: 2.1
    
PacmanConfz3https://www.archlinux.org/pacman/pacman.conf.5.html
pacmanconfzpacman.confr7   r^  z^(\s*)(\[.*?\])(\s*)$z(\w+)(\s*)(=)z^(\s*)(\w+)(\s*)$)z$repoz$archz%oz%ur   r   r2   r   N)rB   rC   rD   rE   rF   r\   rG   rH   rI   r   rJ   r   r   r   r   rK   r   r   re   r
   rL   r?   r?   r?   r@   r(     s2    	r(   c                   @   s  e Zd ZdZdZdZdgZdgZdee	j
eej
fdee	jeejfdeejefd	eeejee	jefd
ejdfdefdefdejdfdejdfdeej
eejfdejfdefgdejfdejfdejdfgdejfdejfdejdfgdejfd
ejdfdejdfdejfgdZdS )r)   z6
    Lexer for Augeas.

    .. versionadded:: 2.4
    Augeaszhttp://augeas.netaugeasz*.augz(module)(\s*)([^\s=]+)z(let)(\s*)([^\s=]+)zV(del|store|value|counter|seq|key|label|autoload|incl|excl|transform|test|get|put)(\s+)z8(\()([^:]+)(\:)(unit|string|regexp|lens|tree|filter)(\))z\(\*r   z[*+\-.;=?|]z
[()\[\]{}]r   r   z\/r  z([A-Z]\w*)(\.)(\w+)r   r2   r   z[^"]r5   z[^/]z[^*)]r   z\*\)z[)*])r7   r   r  r   N)rB   rC   rD   rE   rF   r\   rG   rH   r   r   r]   r   r   r   re   rd   r   r   r   rP  r   r   r   r   rm   rL   r?   r?   r?   r@   r)   -  sB    







r)   c                   @   s0  e Zd ZdZdZdgZg dZdgZdZdZ	de	 d	Z
d
efdejfeddeeedfdedfgdefdejdfdejdfdefgdefdejdfdejdfdefdedfdefge
ejdfe	ejdfdejdfdejdfdejdfdejdfdejdfdejdfd ejdfd!ejd"fdejd#fd$ejd%fdejd&fd'ejdfd(ed)fd*ed+fgd
efdejfd,efd-edfedgdefeddeeedfd,efd.edfgdejdfed/d0ejfgd1ejdfgd!ejdfd2eej efed/d0ejfdejfgd$ejdfd3ejfdejfgd4ej fd5ej fgd6Z!d7S )8r*   zX
    Lexer for TOML, a simple language for config files.

    .. versionadded:: 2.4
    TOMLtoml)z*.tomlPipfilezpoetry.lockzapplication/tomlzhttps://toml.ioz\d\d:\d\d:\d\d(\.\d+)?zm(?x)
                  \d\d\d\d-\d\d-\d\d # date, e.g., 1988-10-27
                (
                  [Tt ] z # optional time
                  (
                    [Zz]|[+-]\d\d:\d\d # optional time offset
                  )?
                )?
              r2   r   rj   z(=)(\s*)r4   z\[\[?	table-keyz[A-Za-z0-9_-]+r   basic-string'literal-stringz\.z\]\]?r5   [ \t]+z [+-]?\d[0-9_]*[eE][+-]?\d[0-9_]*z.[+-]?\d[0-9_]*\.\d[0-9_]*([eE][+-]?\d[0-9_]*)?z[+-]?(inf|nan)z
-?0b[01_]+z-?0o[0-7_]+z-?0x[0-9a-fA-F_]+z[+-]?[0-9_]+z""")r5   multiline-basic-string)r5   rj  z''')r5   multiline-literal-string)r5   rl  z
true|false\[)r5   arrayr   )r5   inline-tabler   \]r   rk   z[^"\\]+z.*?'rL  z[^']+z#\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}r   )r7   rj   ri  r4   rq  rr  rj  rl  rn  ro  rk   N)"rB   rC   rD   rE   rF   rG   rH   rI   r\   _time	_datetimer   r   rJ   r   r   r   r   r   r   r   r   r   Dater   r   BinOctHexr   r   r   rm   rL   r?   r?   r?   r@   r*   Z  s    
















&



 
r*   c                   @   sn  e Zd ZdZdZdZddgZdgZdee	e
fdee	ed	fd
ee	edfdee	efdee	ee	ee	fdee	efdee	ee	ee	fdee	efdee	ee	eje	fdee	ejefdee	ejee	ee	fgeddefeddefdedfdedfgeddejfdedfdedfdedfgeddefeddedfdedfgedd ed	fd!edfgd"e	fgd#Zd$S )%r+   z
    Lexer for *NextedText*, a human-friendly data format.

    .. versionadded:: 2.9

    .. versionchanged:: 2.16
        Added support for *NextedText* v3.0.
    
NestedTextzhttps://nestedtext.org
nestedtextntz*.ntz^([ ]*)(#.*)$z^([ ]*)(\{)inline_dictz^([ ]*)(\[)inline_listz^([ ]*)(>)$z^([ ]*)(>)( )(.*?)([ \t]*)$z^([ ]*)(-)$z^([ ]*)(-)( )(.*?)([ \t]*)$z^([ ]*)(:)$z^([ ]*)(:)( )([^\n]*?)([ \t]*)$z^([ ]*)([^\{\[\s].*?)(:)$z)^([ ]*)([^\{\[\s].*?)(:)( )(.*?)([ \t]*)$rG  z[^\{\}\[\],\s]+inline_valuer   rs  r5   ri   z[^\{\}\[\],:\s]+rU  inline_dict_valuer   r{   r   rp  rm  )r7   r~  r}  r  r  rG  N)rB   rC   rD   rE   rF   r\   rG   rH   r   r   r   r   r
   r   r   r   r   rL   r?   r?   r?   r@   r+     sX    	#	
r+   c                   @   s   e Zd ZdZdZdZdgZddgZej	ej
B ejB ZdZdZdZeeejed	feeejed	feeeeefd
efdefdefdefgdeedfgdZdd ZdS )r,   zL
    Lexer for Singularity definition files.

    .. versionadded:: 2.6
    SingularityzAhttps://www.sylabs.io/guides/3.0/user-guide/definition_files.htmlsingularityz*.defzS^(\s*)(bootstrap|from|osversion|mirrorurl|include|registry|namespace|includecmd)(:)zT^(%(?:pre|post|setup|environment|help|labels|test|runscript|files|startscript))(\s*)z6^(%app(?:install|help|run|labels|env|test|files))(\s*)scriptz	\s*#.*?\nz"\b(([0-9]+\.?[0-9]*)|(\.[0-9]+))\brm  z
(?!^\s*%).z(.+?(?=^\s*%))|(.*)r5   )r7   r  c                 C   s>   d}t d| t jr|d7 }t tjdd | r|d7 }|S )zlThis is a quite simple script file, but there are a few keywords
        which seem unique to this language.r   z&\b(?:osversion|includecmd|mirrorurl)\bg      ?r;   Ng\(\?)rW   rX   r   r,   _section)r>   resultr?   r?   r@   rA   v  s   zSingularityLexer.analyse_textN)rB   rC   rD   rE   rF   r\   rG   rH   rW   r   rY   DOTALLr   _headersr  Z_appsectr   r   Headingr   r   r
   r   r   r   r   rL   rA   r?   r?   r?   r@   r,   V  s,    
r,   c                   @   sL   e Zd ZdZdZddgZg Zddefdefde	fd	e
fd
efdefgiZdS )r-   z
    Lexer for Unix/Linux config files using colon-separated values, e.g.

    * ``/etc/group``
    * ``/etc/passwd``
    * ``/etc/shadow``

    .. versionadded:: 2.12
    zUnix/Linux config files
unixconfiglinuxconfigr7   rS  ri   rU  r   z"((?!\n)[a-zA-Z0-9\_\-\s\(\),]){2,}z[^:\n]+N)rB   rC   rD   rE   rF   rG   rH   r   r   r   r   r
   r   rL   r?   r?   r?   r@   r-     s    
r-   )4rE   rW   Zpygments.lexerr   r   r   r   r   r   r   r	   Zpygments.tokenr
   r   r   r   r   r   r   r   r   r   r   r   Zpygments.lexers.shellr   Zpygments.lexers.datar   __all__r   r   r   r   r   rs   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r?   r?   r?   r@   <module>   sB    
(8+-+8M>+ /$ +//::- *S-