
    'h]                       S SK Jr  SSKJrJr  S SKJr  S SKrS SKrSSK	J
r
  SSK	Jr   " S S	\5      r " S
 S\5      r " S S\R                   5      r\ " S S5      5       r " S S\R                   5      r " S S\R                   5      r\ " S S5      5       r " S S\R                   5      r\ " S S5      5       r\ " S S5      5       r " S S\R                   5      r  S7         S8S jjr  S7       S9S jjr S:   S;S  jjr   S<         S=S! jjr S:     S>S" jjrS?S# jrS?S$ jr S?S% jr!S@S& jr"SAS' jr#  S7     SBS( jjr$ S:     SCS) jjr%    SDS* jr& S:   SES+ jjr'      SFS, jr(  S7     SGS- jjr)    SHS. jr*    SIS/ jr+ S:         SJS0 jjr,\" S15      \ " S2 S35      5       5       r-\" S45      \ " S5 S65      5       5       r.g)K    )annotations   )event_classT_JSON_DICT)	dataclassN)page)targetc                  F   ^  \ rS rSrSS jr\SS j5       rU 4S jrSrU =r	$ )BrowserContextID   c                    U $ N selfs    x/var/www/home/psychics-availability/venv/lib/python3.13/site-packages/selenium/webdriver/common/devtools/v138/browser.pyto_jsonBrowserContextID.to_json           c                    U " U5      $ r   r   clsjsons     r   	from_jsonBrowserContextID.from_json       4yr   c                >   > SR                  [        TU ]	  5       5      $ )NzBrowserContextID({})formatsuper__repr__r   	__class__s    r   r"   BrowserContextID.__repr__   s    %,,UW-=-?@@r   r   )returnstr)r   r'   r&   r   
__name__
__module____qualname____firstlineno__r   classmethodr   r"   __static_attributes____classcell__r$   s   @r   r   r      s(      A Ar   r   c                  F   ^  \ rS rSrSS jr\SS j5       rU 4S jrSrU =r	$ )WindowID   c                    U $ r   r   r   s    r   r   WindowID.to_json   r   r   c                    U " U5      $ r   r   r   s     r   r   WindowID.from_json    r   r   c                >   > SR                  [        TU ]	  5       5      $ )NzWindowID({})r   r#   s    r   r"   WindowID.__repr__$   s    $$UW%5%788r   r   )r&   int)r   r:   r&   r2   r(   r0   s   @r   r2   r2      s&      9 9r   r2   c                  >    \ rS rSrSrSrSrSrSrS r	\
S 5       rS	rg
)WindowState(   z"
The state of the browser window.
normal	minimized	maximized
fullscreenc                    U R                   $ r   valuer   s    r   r   WindowState.to_json1       zzr   c                    U " U5      $ r   r   r   s     r   r   WindowState.from_json4   r   r   r   N)r)   r*   r+   r,   __doc__NORMAL	MINIMIZED	MAXIMIZED
FULLSCREENr   r-   r   r.   r   r   r   r<   r<   (   s6     FIIJ  r   r<   c                  v    \ rS rSr% SrSrS\S'   SrS\S'   SrS\S'   Sr	S\S'   Sr
S	\S
'   S r\S 5       rSrg)Bounds9   z#
Browser window bounds information
Nztyping.Optional[int]lefttopwidthheightztyping.Optional[WindowState]window_statec                N   [        5       nU R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R
                  b  U R
                  R                  5       US'   U$ )NrQ   rR   rS   rT   windowState)dictrQ   rR   rS   rT   rU   r   r   r   s     r   r   Bounds.to_jsonM   s    v99 99DL88((DK::! JJDM;;"![[DN("&"3"3";";"=Dr   c           
         U " SU;   a  [        US   5      OS SU;   a  [        US   5      OS SU;   a  [        US   5      OS SU;   a  [        US   5      OS SU;   a  [        R                  US   5      S9$ S S9$ )NrQ   rR   rS   rT   rW   )rQ   rR   rS   rT   rU   )r:   r<   r   r   s     r   r   Bounds.from_json[   s    &,nT&\"$$)TMDK t(/4#d7m$T*2d*:3tH~&GTX\G\..tM/BC
 	

 cg
 	
r   r   )r)   r*   r+   r,   rI   rQ   __annotations__rR   rS   rT   rU   r   r-   r   r.   r   r   r   rO   rO   9   sa     "&D
% !%C	$ #'E& $(F ' 26L.5 
 
r   rO   c                      \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!S r"S!r#S"r$S#r%S$r&S%r'S&r(S' r)\*S( 5       r+S)r,g*)+PermissionTypef   araudioCaptureautomaticFullscreenbackgroundFetchbackgroundSynccameraPanTiltZoomcapturedSurfaceControlclipboardReadWriteclipboardSanitizedWritedisplayCapturedurableStoragegeolocationhandTrackingidleDetectionkeyboardLock
localFontslocalNetworkAccessmidi	midiSysexnfcnotificationspaymentHandlerperiodicBackgroundSyncpointerLockprotectedMediaIdentifiersensors	smartCardspeakerSelectionstorageAccesstopLevelStorageAccessvideoCapturevrwakeLockScreenwakeLockSystemwebAppInstallationwebPrintingwindowManagementc                    U R                   $ r   rC   r   s    r   r   PermissionType.to_json   rF   r   c                    U " U5      $ r   r   r   s     r   r   PermissionType.from_json   r   r   r   N)-r)   r*   r+   r,   ARAUDIO_CAPTUREAUTOMATIC_FULLSCREENBACKGROUND_FETCHBACKGROUND_SYNCCAMERA_PAN_TILT_ZOOMCAPTURED_SURFACE_CONTROLCLIPBOARD_READ_WRITECLIPBOARD_SANITIZED_WRITEDISPLAY_CAPTUREDURABLE_STORAGEGEOLOCATIONHAND_TRACKINGIDLE_DETECTIONKEYBOARD_LOCKLOCAL_FONTSLOCAL_NETWORK_ACCESSMIDI
MIDI_SYSEXNFCNOTIFICATIONSPAYMENT_HANDLERPERIODIC_BACKGROUND_SYNCPOINTER_LOCKPROTECTED_MEDIA_IDENTIFIERSENSORS
SMART_CARDSPEAKER_SELECTIONSTORAGE_ACCESSTOP_LEVEL_STORAGE_ACCESSVIDEO_CAPTUREVRWAKE_LOCK_SCREENWAKE_LOCK_SYSTEMWEB_APP_INSTALLATIONWEB_PRINTINGWINDOW_MANAGEMENTr   r-   r   r.   r   r   r   r_   r_   f   s    	B"M0(&O.7/ 9&O&OK"M$N"MK/DJ
C#M&O7 L!;GJ*$N6"M	B''/ L*  r   r_   c                  6    \ rS rSrSrSrSrS r\S 5       r	Sr
g)	PermissionSetting   granteddeniedpromptc                    U R                   $ r   rC   r   s    r   r   PermissionSetting.to_json   rF   r   c                    U " U5      $ r   r   r   s     r   r   PermissionSetting.from_json   r   r   r   N)r)   r*   r+   r,   GRANTEDDENIEDPROMPTr   r-   r   r.   r   r   r   r   r      s*    GFF  r   r   c                      \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S	'   Sr	S\S
'   Sr
S\S'   S r\S 5       rSrg)PermissionDescriptor   z
Definition of PermissionDescriptor defined in the Permissions API:
https://w3c.github.io/permissions/#dom-permissiondescriptor.
r'   nameNtyping.Optional[bool]sysexuser_visible_onlyallow_without_sanitizationallow_without_gesturepan_tilt_zoomc                P   [        5       nU R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R                  b  U R                  US'   U R
                  b  U R
                  US'   U R                  b  U R                  US'   U$ )Nr   r   userVisibleOnlyallowWithoutSanitizationallowWithoutGesturepanTiltZoom)rX   r   r   r   r   r   r   rY   s     r   r   PermissionDescriptor.to_json   s    vyyV::! JJDM!!-&*&<&<D"#**6/3/N/ND+,%%1*.*D*DD&')"&"4"4Dr   c                    U " [        US   5      SU;   a  [        US   5      OS SU;   a  [        US   5      OS SU;   a  [        US   5      OS SU;   a  [        US   5      OS SU;   a  [        US   5      S9$ S S9$ )Nr   r   r   r   r   r   )r   r   r   r   r   r   )r'   boolr   s     r   r   PermissionDescriptor.from_json   s    T&\")0D$tG}%d?PTX?Xd4(9#:;^bQkosQstD1K,L'My}G\`dGd$t,A'B"Cjn7D7L$tM23
 	
 SW
 	
r   r   )r)   r*   r+   r,   rI   r]   r   r   r   r   r   r   r-   r   r.   r   r   r   r   r      sk     I $(E ' 04,3 9= 5< 4807 ,0M(/ 
 
r   r   c                  :    \ rS rSrSrSrSrSrS r\	S 5       r
Srg	)
BrowserCommandId   z4
Browser command ids used by executeBrowserCommand.
openTabSearchcloseTabSearchopenGlicc                    U R                   $ r   rC   r   s    r   r   BrowserCommandId.to_json   rF   r   c                    U " U5      $ r   r   r   s     r   r   BrowserCommandId.from_json   r   r   r   N)r)   r*   r+   r,   rI   OPEN_TAB_SEARCHCLOSE_TAB_SEARCH	OPEN_GLICr   r-   r   r.   r   r   r   r   r      s2     &O'I  r   r   c                  N    \ rS rSr% SrS\S'   S\S'   S\S'   S r\S 5       rS	r	g
)Bucket   z
Chrome histogram bucket.
r:   lowhighcountc                t    [        5       nU R                  US'   U R                  US'   U R                  US'   U$ )Nr   r   r   )rX   r   r   r   rY   s     r   r   Bucket.to_json   s5    vhhUyyV

Wr   c                Z    U " [        US   5      [        US   5      [        US   5      S9$ )Nr   r   r   )r   r   r   )r:   r   s     r   r   Bucket.from_json   s3    DK T&\"d7m$
 	
r   r   N
r)   r*   r+   r,   rI   r]   r   r-   r   r.   r   r   r   r   r      s5     
H I J 
 
r   r   c                  X    \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
 r\S 5       rSr	g)	Histogrami  z
Chrome histogram.
r'   r   r:   sum_r   ztyping.List[Bucket]bucketsc                    [        5       nU R                  US'   U R                  US'   U R                  US'   U R                   Vs/ s H  o"R                  5       PM     snUS'   U$ s  snf )Nr   sumr   r   )rX   r   r   r   r   r   )r   r   is      r   r   Histogram.to_json  sZ    vyyViiU

W04=199;=Y >s   A'c                    U " [        US   5      [        US   5      [        US   5      US    Vs/ s H  n[        R                  U5      PM     snS9$ s  snf )Nr   r   r   r   )r   r   r   r   )r'   r:   r   r   )r   r   r   s      r   r   Histogram.from_json  sZ    T&\"T%[!d7m$26y/B/QV%%a(/B	
 	
 Cs   Ar   Nr   r   r   r   r   r     s=     I I J !  
 
r   r   c                  2    \ rS rSrSrSrS r\S 5       rSr	g)PrivacySandboxAPIi(  BiddingAndAuctionServicesTrustedKeyValuec                    U R                   $ r   rC   r   s    r   r   PrivacySandboxAPI.to_json,  rF   r   c                    U " U5      $ r   r   r   s     r   r   PrivacySandboxAPI.from_json/  r   r   r   N)
r)   r*   r+   r,   BIDDING_AND_AUCTION_SERVICESTRUSTED_KEY_VALUEr   r-   r   r.   r   r   r   r   r   (  s'    #> )  r   r   c              #     #    [        5       nU R                  5       US'   UR                  5       US'   Ub  X$S'   Ub  UR                  5       US'   SUS.nUv ng7f)aj  
Set permission settings for given origin.

**EXPERIMENTAL**

:param permission: Descriptor of permission to override.
:param setting: Setting of the permission.
:param origin: *(Optional)* Origin the permission applies to, all origins if not specified.
:param browser_context_id: *(Optional)* Context to override. When omitted, default browser context is used.

permissionsettingNoriginbrowserContextIdzBrowser.setPermissionmethodparamsrX   r   )r   r   r   browser_context_idr  cmd_dictr   s          r   set_permissionr  4  sp       &F%--/F<)F9!x%%7%?%?%A!")H >Ds   AAc              #     #    [        5       nU  Vs/ s H  oDR                  5       PM     snUS'   Ub  XS'   Ub  UR                  5       US'   SUS.nUv ngs  snf 7f)aI  
Grant specific permissions to the given origin and reject all others.

**EXPERIMENTAL**

:param permissions:
:param origin: *(Optional)* Origin the permission applies to, all origins if not specified.
:param browser_context_id: *(Optional)* BrowserContext to override permissions. When omitted, default browser context is used.
permissionsNr   r   zBrowser.grantPermissionsr   r  )r  r   r  r  r   r  r   s          r   grant_permissionsr	  R  sn      &F2=>+QYY[+>F=!x%%7%?%?%A!",H >D ?s   AA2Ac              #  ^   #    [        5       nU b  U R                  5       US'   SUS.nUv ng7f)z
Reset all permission management for all origins.

:param browser_context_id: *(Optional)* BrowserContext to reset permissions. When omitted, default browser context is used.
Nr   zBrowser.resetPermissionsr   r  )r  r  r  r   s       r   reset_permissionsr  m  s>      &F%%7%?%?%A!",H >Ds   +-c              #     #    [        5       nXS'   Ub  UR                  5       US'   Ub  X$S'   Ub  X4S'   SUS.nUv ng7f)a  
Set the behavior when downloading a file.

**EXPERIMENTAL**

:param behavior: Whether to allow all or deny all download requests, or use default Chrome behavior if available (otherwise deny). ``allowAndName`` allows download and names files according to their download guids.
:param browser_context_id: *(Optional)* BrowserContext to set download behavior. When omitted, default browser context is used.
:param download_path: *(Optional)* The default path to save downloaded files to. This is required if behavior is set to 'allow' or 'allowAndName'.
:param events_enabled: *(Optional)* Whether to emit download events (defaults to false).
behaviorNr   downloadPatheventsEnabledzBrowser.setDownloadBehaviorr   r  )r  r  download_pathevents_enabledr  r  r   s          r   set_download_behaviorr    sb       &F!:%%7%?%?%A!" !.~!"0/H >Ds   =?c              #  f   #    [        5       nXS'   Ub  UR                  5       US'   SUS.nUv ng7f)z
Cancel a download if in progress

**EXPERIMENTAL**

:param guid: Global unique identifier of the download.
:param browser_context_id: *(Optional)* BrowserContext to perform the action in. When omitted, default browser context is used.
guidNr   zBrowser.cancelDownloadr   r  )r  r  r  r  r   s        r   cancel_downloadr    sE      &F6N%%7%?%?%A!"*H >Ds   /1c               #     #    SS0n U v ng7f)z
Close browser gracefully.
r  zBrowser.closeNr   r  r   s     r   closer    s     
 	/H >D   
c               #     #    SS0n U v ng7f)z7
Crashes browser on the main thread.

**EXPERIMENTAL**
r  zBrowser.crashNr   r  s     r   crashr    s      	/H >Dr  c               #     #    SS0n U v ng7f)z(
Crashes GPU process.

**EXPERIMENTAL**
r  zBrowser.crashGpuProcessNr   r  s     r   crash_gpu_processr    s      	+H >Dr  c               #     #    SS0n U v n[        US   5      [        US   5      [        US   5      [        US   5      [        US   5      4$ 7f)a  
Returns version information.

:returns: A tuple with the following items:

    0. **protocolVersion** - Protocol version.
    1. **product** - Product name.
    2. **revision** - Product revision.
    3. **userAgent** - User-Agent.
    4. **jsVersion** - V8 version.
r  zBrowser.getVersionprotocolVersionproductrevision	userAgent	jsVersionr'   r  s     r   get_versionr%    sh      	&H >DD"#$DODDD s   AAc               #  b   #    SS0n U v nUS    Vs/ s H  n[        U5      PM     sn$ s  snf 7f)z
Returns the command line switches for the browser process if, and only if
--enable-automation is on the commandline.

**EXPERIMENTAL**

:returns: Commandline parameters
r  zBrowser.getBrowserCommandLine	argumentsr$  )r  r   r   s      r   get_browser_command_liner(    s@      	1H >D -.-qCF-...s   /*/c              #     #    [        5       nU b  XS'   Ub  XS'   SUS.nUv nUS    Vs/ s H  n[        R                  U5      PM     sn$ s  snf 7f)aA  
Get Chrome histograms.

**EXPERIMENTAL**

:param query: *(Optional)* Requested substring in name. Only histograms which have query as a substring in their name are extracted. An empty or absent query returns all histograms.
:param delta: *(Optional)* If true, retrieve delta since last delta call.
:returns: Histograms.
querydeltazBrowser.getHistogramsr   
histogramsrX   r   r   )r*  r+  r  r  r   r   s         r   get_histogramsr.     sh      &Fww)H >D,0,>?,>qI",>???s   )AA
Ac              #  v   #    [        5       nXS'   Ub  XS'   SUS.nUv n[        R                  US   5      $ 7f)z
Get a Chrome histogram by name.

**EXPERIMENTAL**

:param name: Requested histogram name.
:param delta: *(Optional)* If true, retrieve delta since last delta call.
:returns: Histogram.
r   r+  zBrowser.getHistogramr   	histogramr-  )r   r+  r  r  r   s        r   get_histogramr1    sN      &F6Nw(H >DtK011s   79c              #     #    [        5       nU R                  5       US'   SUS.nUv n[        R                  US   5      $ 7f)z
Get position and size of the browser window.

**EXPERIMENTAL**

:param window_id: Browser window id.
:returns: Bounds information of the window. When window state is 'minimized', the restored window position and size are returned.
windowIdzBrowser.getWindowBoundsr   bounds)rX   r   rO   r   )	window_idr  r  r   s       r   get_window_boundsr6  3  sL      &F"**,F:+H >DDN++s   ?Ac              #     #    [        5       nU b  U R                  5       US'   SUS.nUv n[        R                  US   5      [        R                  US   5      4$ 7f)a  
Get the browser window that contains the devtools target.

**EXPERIMENTAL**

:param target_id: *(Optional)* Devtools agent host id. If called as a part of the session, associated targetId is used.
:returns: A tuple with the following items:

    0. **windowId** - Browser window id.
    1. **bounds** - Bounds information of the window. When window state is 'minimized', the restored window position and size are returned.
targetIdzBrowser.getWindowForTargetr   r3  r4  )rX   r   r2   r   rO   )	target_idr  r  r   s       r   get_window_for_targetr:  H  sl      &F&..0z.H >D4
+,h( s   AAc              #  ~   #    [        5       nU R                  5       US'   UR                  5       US'   SUS.nUv ng7f)a!  
Set position and/or size of the browser window.

**EXPERIMENTAL**

:param window_id: Browser window id.
:param bounds: New window bounds. The 'minimized', 'maximized' and 'fullscreen' states cannot be combined with 'left', 'top', 'width' or 'height'. Leaves unspecified fields unchanged.
r3  r4  zBrowser.setWindowBoundsr   Nr  )r5  r4  r  r  r   s        r   set_window_boundsr<  d  sH      &F"**,F:~~'F8+H >Ds   ;=c              #  N   #    [        5       nU b  XS'   Ub  XS'   SUS.nUv ng7f)z
Set dock tile details, platform-specific.

**EXPERIMENTAL**

:param badge_label: *(Optional)*
:param image: *(Optional)* Png encoded image.
N
badgeLabelimagezBrowser.setDockTiler   rX   )badge_labelr?  r  r  r   s        r   set_dock_tilerB  z  s?      &F*|w'H >Ds   #%c              #  X   #    [        5       nU R                  5       US'   SUS.nUv ng7f)zY
Invoke custom browser commands used by telemetry.

**EXPERIMENTAL**

:param command_id:
	commandIdzBrowser.executeBrowserCommandr   Nr  )
command_idr  r  r   s       r   execute_browser_commandrF    s7      &F$,,.F;1H >Ds   (*c              #  :   #    [        5       nXS'   SUS.nUv ng7f)z
Allows a site to use privacy sandbox features that require enrollment
without the site actually being enrolled. Only supported on page targets.

:param url:
urlz+Browser.addPrivacySandboxEnrollmentOverrider   Nr@  )rH  r  r  r   s       r   'add_privacy_sandbox_enrollment_overriderI    s+      &F5M?H >Ds   c              #     #    [        5       nU R                  5       US'   XS'   X$S'   Ub  UR                  5       US'   SUS.nUv ng7f)a  
Configures encryption keys used with a given privacy sandbox API to talk
to a trusted coordinator.  Since this is intended for test automation only,
coordinatorOrigin must be a .test domain. No existing coordinator
configuration for the origin may exist.

:param api:
:param coordinator_origin:
:param key_config:
:param browser_context_id: *(Optional)* BrowserContext to perform the action in. When omitted, default browser context is used.
apicoordinatorOrigin	keyConfigNr   z-Browser.addPrivacySandboxCoordinatorKeyConfigr   r  )rK  coordinator_origin
key_configr  r  r  r   s          r   *add_privacy_sandbox_coordinator_key_configrP    s^     " &FKKMF5M"4$;%%7%?%?%A!"AH >Ds   AAzBrowser.downloadWillBeginc                  V    \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   \SS	 j5       rS
rg)DownloadWillBegini  zA
**EXPERIMENTAL**

Fired when page is about to start a download.
zpage.FrameIdframe_idr'   r  rH  suggested_filenamec           	         U " [         R                  R                  US   5      [        US   5      [        US   5      [        US   5      S9$ )NframeIdr  rH  suggestedFilename)rS  r  rH  rT  )r   FrameIdr   r'   r   s     r   r   DownloadWillBegin.from_json  sK    \\++DO<T&\"DK "4(;#<=	
 	
r   r   N)r   r   r&   rR  	r)   r*   r+   r,   rI   r]   r-   r   r.   r   r   r   rR  rR    s1     
I	H
 
r   rR  zBrowser.downloadProgressc                  `    \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   \SS j5       rSrg)DownloadProgressi  zW
**EXPERIMENTAL**

Fired when download makes progress. Last call has ``done`` == true.
r'   r  floattotal_bytesreceived_bytesstatetyping.Optional[str]	file_pathc           
         U " [        US   5      [        US   5      [        US   5      [        US   5      SU;   a  [        US   5      S9$ S S9$ )Nr  
totalBytesreceivedBytesr`  filePath)r  r^  r_  r`  rb  )r'   r]  r   s     r   r   DownloadProgress.from_json  sf    T&\"d<01 o!67d7m$/9T/Ac$z*+
 	

 HL
 	
r   r   N)r   r   r&   r\  rZ  r   r   r   r\  r\    s9     IJ $#
 
r   r\  )NN)
r   r   r   r   r   ra  r  !typing.Optional[BrowserContextID]r&   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])r  ztyping.List[PermissionType]r   ra  r  rh  r&   ri  r   )r  rh  r&   ri  )NNN)
r  r'   r  rh  r  ra  r  r   r&   ri  )r  r'   r  rh  r&   ri  )r&   ri  )r&   zQtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, str, str, str, str]])r&   z<typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[str]])r*  ra  r+  r   r&   zBtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[Histogram]])r   r'   r+  r   r&   z5typing.Generator[T_JSON_DICT, T_JSON_DICT, Histogram])r5  r2   r&   z2typing.Generator[T_JSON_DICT, T_JSON_DICT, Bounds])r9  z typing.Optional[target.TargetID]r&   zJtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[WindowID, Bounds]])r5  r2   r4  rO   r&   ri  )rA  ra  r?  ra  r&   ri  )rE  r   r&   ri  )rH  r'   r&   ri  )
rK  r   rN  r'   rO  r'   r  rh  r&   ri  )/
__future__r   utilr   r   dataclassesr   enumtyping r   r	   r'   r   r:   r2   Enumr<   rO   r_   r   r   r   r   r   r   r  r	  r  r  r  r  r  r  r%  r(  r.  r1  r6  r:  r<  rB  rF  rI  rP  rR  r\  r   r   r   <module>rq     sn   # * !    	As 	A	9s 	9$)) " )
 )
 )
X,TYY ,^
		 
 1
 1
 1
htyy   
 
 
: 
 
 
D			 	 (,@D	(" % >	
 
8@ (,@D0$ > 
8	8 AE=	7( AE.204	= , .	
 
8B AE= 
8.		2/" '+'+@#@$@ 
J@8 (,22$2 
=22,,	9,, 7;3	Q8 
8. -1&*)# 
80$	7&	7, AE	  >	
 
8< ()

 
  *
2 '(

 
  )
r   