Ë
    ©^Çjo%  ã                   óJ  — d 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Zddl	Z	ddl
mZ ddlmZ  ee«      j                  «       j                   Zg d¢Z G d„ dej&                  j(                  «      Zd„ Zd	„ Zdd
„Zedk(  r£ ej4                  «       Zej9                  «       Zej=                  dd¬«       ej=                  dd¬«       ej=                  dd¬«       ej?                  «       Z  ejB                   ee jD                  e jF                  e jH                  «      «       yy)zµActual Three.js / Chromium evidence. Run from the kit directory.

python3 browser_check.py --preflight
python3 browser_check.py                 # final kit; optional test_house.glb
é    N)ÚPath)Úasync_playwright)Údormer_gabledÚdormer_hippedÚdormer_wallÚlouvre_ridgeÚchimney_clusterÚchimney_twinÚ	sign_bootÚsign_pigÚsign_keyÚsign_pretzelÚorielÚdoor_arched_stoneÚdoor_cellarÚwindow_cellarÚwindow_shutteredÚfinialÚthatch_panelÚthatch_ridgeÚpilloryÚ
well_wheelc                   ó   — e Zd Zd„ Zy)ÚQuietHandlerc                  ó   — y ©N© )ÚselfÚ_s     úbrowser_check.pyÚlog_messagezQuietHandler.log_message   s   € Øó    N)Ú__name__Ú
__module__Ú__qualname__r!   r   r"   r    r   r      s   „ ór"   r   c           	      ó˜   — dt        | «      z   }d}t        j                  |d|gdd¬«       t        j                  |d|ddd	d
gdd¬«       y )Nzlocal:z&/home/claude-agent/.claude/coord/coordÚcheckT)r'   Úcapture_outputÚclaimz--ownerÚruntimez--ttlÚ3h)ÚstrÚ
subprocessÚrun)ÚpathÚresourceÚclis      r    r)   r)      sM   € Øœ#˜d›)Ñ#€HØ
2€CÜ‡N�N�C˜ (Ð+°4ÈÕMÜ‡N�N�C˜ (¨I°yÀ'È4ÐPÐX\ÐmqÖrr"   c                 ód   — t        j                  | j                  «       «      j                  «       S r   )ÚhashlibÚsha256Ú
read_bytesÚ	hexdigest©r/   s    r    Úshar8   "   s!   € Ü�>‰>˜$Ÿ/™/Ó+Ó,×6Ñ6Ó8Ð8r"   c              ƒ   ó€  ‡ ‡‡‡‡‡ K  — ‰ r	t         dz  nt         }t        j                  |dz  j                  «       «      }‰ s't	        d„ |d   D «       «      t	        t
        «      k(  sJ ‚t        j                  t        t        t         «      ¬«      }t        j                  j                  d|«      }t        j                  |j                  d¬«      j!                  «        g g g cŠŠŠd	i d
œŠ t         ‰ rdndz  }|r~t        j                  |j                  «       «      Š ‰ d   dk(  sJ d«       ‚i ‰ d   ¥‰ d   ¥j#                  «       D ]*  \  }}	|dk7  sŒt%        t         |z  «      |	k(  rŒ"J d|z   «       ‚ d	‰ d<   t'        |«       	 t)        «       4 ƒd {  –—† }
|
j*                  j-                  dg d¢¬«      ƒ d {  –—† }|j/                  dddœd¬«      ƒ d {  –—† Š‰j1                  dˆfd„«       ‰j1                  dˆfd„«       ‰j1                  dˆfd „«       d!|j2                  › d"�‰ rd#nd$z   }|r|d%z  }‰j5                  |«      ƒ d {  –—†  ‰j7                  d&d'¬(«      ƒ d {  –—†  ‰ j9                  ‰j;                  d)«      ƒ d {  –—† «       ‰ j=                  d*«      sJ ‰ «       ‚t	        ‰ d   «      t	        d+„ |d   D «       «      k(  sJ ‚‰ d,   j#                  «       D ]8  \  }}|d-   |d.   k(  s	J ||f«       ‚|d/   |d0   cxk(  r	|d1   k(  rŒ/n J ||f«       ‚ ‰ d2   d3   d4   d5   ‰ d2   d6   d4   d5   k(  sJ ‚‰ d2   d3   d4   d7   d8z  ‰ d2   d6   d4   d7   k(  sJ ‚t?        d9„ ‰ d:   D «       «      sJ ‚duˆˆ ˆ fd;„	}|s |d<«      ƒ d {  –—†  ‰ d=   d<   ‰ d><   ‰ d>   d4   d7   |d?   k(  sJ ‚‰ �r‰ d,   d@   d-   dAk(  sJ ‚dBdCl m!} dBd l"}|jG                  |jI                  t         dDz  «      jK                  dE«      «      dFdG }|d d …d d …dBf   |d d …d d …dAf   dHz  kD  |d d …d d …dBf   |d d …d d …df   dHz  kD  z  jM                  «       }|d d …d d …dAf   |d d …d d …dBf   dHz  kD  |d d …d d …dAf   |d d …d d …df   dIz  kD  z  jM                  «       }tO        |«      tO        |«      dJœ‰ dK<   |dLkD  r|dLkD  s½J ‰ dK   «       ‚|sGt
        D ]  } ||«      ƒ d {  –—†  Œ dMD ]  } ||dd¬N«      ƒ d {  –—†  Œ  |d<d¬O«      ƒ d {  –—†  |r‰ dP   sJ dQ«       ‚‰ dP   rG |dR«      ƒ d {  –—†   |dRdS¬T«      ƒ d {  –—†   |dRdU¬T«      ƒ d {  –—†   |dRdd¬N«      ƒ d {  –—†  |rdVn‰ dP   rdWndX‰ dY<   ‰‰ dZ<   ‰‰ d[<   ‰‰ d\<   ‰s‰r	J ‰‰f«       ‚t?        d]„ ‰D «       «      sJ ‰«       ‚|d^z  |dz  |d_z  t         d`z  t         daz  t         dbz  t         dcz  t         ddz  t         dez  t         dfz  t         dgz  fD �ci c]*  }t        |jQ                  t         «      «      t%        |«      “Œ, c}‰ d<   t        j                  |d_z  j                  «       «      }t	        |dh   jS                  «       D ��ch c]   }diD ]  }|j=                  |«      sŒ||   ’Œ Œ" c}}«      }|D �ci c]0  }t        ||z  jQ                  t         «      «      t%        ||z  «      “Œ2 c}‰ d<   ‰ dP   rt%        t         dz  «      ‰ d   d<   |jT                  ‰ dj<   dk‰ dl<   dm‰ dn<   do‰ dp<   d‰ d<   |jW                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  |j[                  t        j\                  ‰ dA¬s«      «       |j_                  «        ta        t        j\                  dtD �ci c]  }|‰ j=                  |«      “Œ c}«      «       y 7 �Œ&7 �Œ7 �Œç7 �Œt7 �Œ\7 �Œ;7 �Œ<7 �Œô7 �ŒÝ7 �ŒÌ7 �Œ¬7 �Œ�7 �ŒŽ7 �Œ~c c}w c c}}w c c}w 7 ŒÁ7 Œ³# 1 ƒd {  –—†7  sw Y   ŒÃxY w# tX        $ r$}‰ j9                  dqt        |«      ‰‰¬r«       ‚ d }~ww xY wc c}w # |j[                  t        j\                  ‰ dA¬s«      «       |j_                  «        ta        t        j\                  dtD �ci c]  }|‰ j=                  |«      “Œ nc c}w c}«      «       w xY w­w)vNzviewer/preflightzkit.jsonc              3   ó&   K  — | ]	  }|d    –— Œ y­w©Ú	node_nameNr   )Ú.0Úxs     r    ú	<genexpr>zmain.<locals>.<genexpr>)   s   è ø€ ÒI°!˜q �~ÑIùó   ‚Úatoms)Ú	directory)z	127.0.0.1r   T)ÚtargetÚdaemonÚRUNNING)ÚstatusÚcaptureszpreflight_runtime.jsonzruntime_check.jsonrF   ÚPASSz?Previous kit captures must pass before assembly supplementationÚinputHashesÚtextureHashesútest_house.glbzKit capture input changed: )z--no-sandboxz--use-angle=swiftshaderz--enable-unsafe-swiftshader)ÚheadlessÚargsi   i8  )ÚwidthÚheighté   )ÚviewportÚdevice_scale_factorÚ	pageerrorc                 ó8   •— ‰j                  t        | «      «      S r   )Úappendr,   )ÚeÚerrorss    €r    ú<lambda>zmain.<locals>.<lambda>;   s   ø€  V§]¡]´3°q³6Ó%:€ r"   Úrequestfailedc                 óT   •— ‰j                  | j                  | j                  dœ«      S )N)ÚurlÚerror)rU   r[   Úfailure)ÚrÚfailed_requestss    €r    rX   zmain.<locals>.<lambda><   s"   ø€ ¨×)?Ñ)?ÀqÇuÁuÐUV×U^ÑU^Ñ@_Ó)`€ r"   Úresponsec                 óv   •— | j                   dk\  r(‰j                  | j                  | j                   dœ«      S d S )Ni�  )r[   rF   )rF   rU   r[   )r^   Úhttp_findingss    €r    rX   zmain.<locals>.<lambda>=   s3   ø€ Ð]^×]eÑ]eÐgjÒ]j M×$8Ñ$8ÀÇÁÈqÏxÉxÑ9XÓ$Y€ Ðpt€ r"   zhttp://127.0.0.1:z/viewer/?qa=1z&base=./preflight/Ú z&kit-only=1z4window.__KIT_QA__?.ready || window.__KIT_QA__?.erroriÀÔ )Útimeoutzwindow.__KIT_QA__Úreadyc              3   ó&   K  — | ]	  }|d    –— Œ y­wr;   r   )r=   Úas     r    r?   zmain.<locals>.<genexpr>D   s   è ø€ Ò.YÀ!¨q°­~Ñ.Yùr@   ÚparityÚrawPrimitivesÚruntimePrimitivesÚrawTrianglesÚruntimeTrianglesÚmanifestTrianglesÚ
instancingÚoneÚassetMainPassÚcallsÚthreeÚ	trianglesé   c              3   ó(   K  — | ]
  }|d     –— Œ y­w)ÚflipYNr   )r=   Úts     r    r?   zmain.<locals>.<genexpr>J   s   è ø€ ÒD a�q˜‘z”>ÑDùs   ‚ÚtextureBindingc              “   ó¶  •K  — ‰j                  d| |||g«      ƒ d {  –—†  ‰j                  d«      ƒ d {  –—†  ‰j                  d«      ƒ d {  –—† }|d   | k(  r|d   |k(  r|d   |k(  r|d   d   |k(  sJ |«       ‚|d	   d
   |d   d   k(  sJ |«       ‚|d	   d   |d   d   k(  sJ |«       ‚|d	   d
   dkD  sJ |«       ‚| |dk7  rd|z   ndz   |rdndz   |rdndz   }t        ‰rdnd|z   dz   z  }t        |«       ‰j	                  t        |«      ¬«      ƒ d {  –—†  |j                  |j                  t        |«      dœ«       |‰	d   |<   y 7 �Œ17 �Œ7 �Œ7 Œ=­w)NzX([n,r,c,m])=>{window.kitRear(r);window.kitClay(c);window.kitView(n);window.kitCamera(m)}éÈ   zwindow.kitMetrics()Ú	selectionÚrearÚclayÚcameraÚmoderp   rs   ÚbatchÚtrisrq   Ú	drawCallsr   Úorbitr   rc   Ú_rearÚ_clayÚpreflight_runtime_Úruntime_z.pngr7   )Úfiler4   rG   )	ÚevaluateÚwait_for_timeoutÚROOTr)   Ú
screenshotr,   ÚupdateÚnamer8   )
rŽ   r|   r}   r~   ÚmetricsÚstemrC   ÚpageÚ	preflightÚreports
          €€€r    Úcapturezmain.<locals>.captureK   sÕ  øè ø€ Ø—-‘-Ð zð  }Að  BFð  GKð  LRð  |Só  T÷  Tð  TØ×'Ñ'¨Ó,×,Ð,ØŸ-™-Ð(=Ó>×>ˆGØ˜;Ñ'¨Ò-°'¸&±/À4Ò2GÈGÐTZÉOÐ]aÒLaÐfmÐnvÑfwÐx~Ñfð  BHò  gHð  Pð  IPó  Pð  HØ˜?Ñ+¨KÑ8¸'À'Ñ:JÈ6Ñ:RÒRÐZÐSZÓZÐRØ˜?Ñ+¨GÑ4°g¸gÑ6FÀ{Ñ6SÒSÐ[ÐT[Ó[ÐSØ˜?Ñ+¨KÑ8¸Ò:ÐB¸7ÓBÐ:Ø V¨W¢_�s˜6’z¸"Ñ=É$¹wÐTVÑWÑdhÑY`ÐnpÑqˆDÜ±)Ñ.ÀÈTÑQÐRXÑXÑYˆFÜ�&ŒMØ—/‘/¤s¨6£{�/Ó3×3Ð3Ø�N‰N 6§;¡;¼¸F»ÑDÔEØ%,ˆF�:Ñ˜tÒ$ð TùØ,ùØ>ùð 4úsD   ƒE�EžE¶E·EÁEÁC	EÄEÄ5EÅEÅEÅEÚallrG   Úall_metricsÚtotal_trianglesÚprobeé   r   )ÚImagezpreflight_runtime_all.pngÚRGBé–   iÉÿÿÿg      ô?gš™™™™™ñ?)ÚredÚblueÚprimitivePixelséd   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r|   r}   )r}   ÚassemblyAvailablezFinal assembly missingÚassemblyÚfront)r~   ÚcottagezSKIPPED FOR KIT-ONLY RUNÚMEASUREDzNOT PROVIDEDÚassemblyStatusrW   ÚfailedRequestsÚhttpFindingsc              3   óX   K  — | ]"  }|d    dk(  xr |d   j                  d«      –— Œ$ y­w)rF   i”  r[   )z
style.jsonrK   N)Úendswith)r=   r^   s     r    r?   zmain.<locals>.<genexpr>w   s2   è ø€ ÒrÐ_`�1�X‘; Ñ#ÒZ¨¨%©×(9Ñ(9Ð:YÓ(ZÓZÑrùs   ‚(*zkit.glbzmaterials.jsonzbrowser_check.pyzviewer/index.htmlzviewer/main.mjszviewer/runtime-loader.mjszviewer/shelf-extras.mjszviewer/lib/three.module.jszviewer/lib/three.core.jsz$viewer/lib/jsm/loaders/GLTFLoader.jsÚ	materials)ÚbaseÚnormalÚormrO   ÚbrowserVersiona@  Chromium SwiftShader software WebGL. No device FPS or timing claim. assetMainPass is a measured asset-only render with floor and shadow passes disabled. fullRender is the displayed main-pass renderer.info count including the floor; Three r184 resets renderer.info after its shadow pass, so shadow draws are not included.Úperformance_notezaEstimate from decoded geometry and texture sizes in loader; does not include allocation overhead.ÚsharedBytes_notezïCopied production render.mjs snapshot from medieval-trades; narrow patches compact per-material groups, reject missing shelf materials, and include index bytes in geometry footprint. Shared maps use flipY=false and shelf emissive metadata.Úloader_noteÚFAIL)rF   r]   rW   r§   )Úindent)rF   r]   r–   rŸ   r¦   rW   r§   )FFrƒ   )1r‹   ÚjsonÚloadsÚ	read_textÚsortedÚATOMSÚ	functoolsÚpartialr   r,   ÚhttpÚserverÚThreadingHTTPServerÚ	threadingÚThreadÚserve_foreverÚstartÚitemsr8   r)   r   ÚchromiumÚlaunchÚnew_pageÚonÚserver_portÚgotoÚwait_for_functionr�   r‰   Úgetr•   ÚPILrš   ÚnumpyÚasarrayÚopenÚconvertÚsumÚintÚrelative_toÚvaluesÚversionÚcloseÚ	ExceptionÚ
write_textÚdumpsÚshutdownÚprint)!r’   Úkit_onlyÚassembly_onlyÚdataÚmanifestÚhandlerr½   Úoutputrˆ   ÚdigestÚpÚbrowserr[   rŽ   Úrowr”   rš   ÚnpÚpixelsr�   rž   r/   ÚshelfÚmÚkeyÚtexture_filesrV   ÚkrW   r_   rb   r‘   r“   s!   `                           @@@@@r    Úmainrí   &   s

  ýè ø€ Ù(1Œ4Ð$Ò$´t€DÜ�z‰z˜4 
™?×5Ñ5Ó7Ó8€HÙœÑI°xÀÑ7HÔIÓIÌVÔTYË]ÒZÐZÐZÜ×Ñ¤¼¼D»	ÔB€GÜ�[‰[×,Ñ,Ð-=¸wÓG€FÜ×Ñ˜F×0Ñ0¸Ô>×DÑDÔFØ-/°°RÐ*€FˆO˜]Ø!¨rÑ2€FÜ©yÑ+Ð>RÑS€FÙÜ�z‰z˜&×*Ñ*Ó,Ó-ˆØ�hÑ Ò'ÐjÐ)jÓjÐ'ØN˜f ]Ñ3ÐN°f¸_Ñ6MÐN×TÑTÓVò 	h‰KˆD�ØÐ%Ó%¬S´°d±«^¸VÓ-CÐ&gÐEbÐcgÑEgÓ&gÐ-Cð	hà"ˆˆxÑÜ	ˆ&„MðRVÜ!Ó#÷ Jð J qØ—j‘j×'Ñ'°ò  <DÐ'ó  E÷  EˆØ×#Ñ#°dÀDÑ-IÐ^_Ð#Ó`×`ˆØ�‰�Ó:Ô;Ø�‰�Ó `ÔaØ�‰�
ÓtÔuØ × 2Ñ 2Ð3°=ÐAÑ[dÑCWÐjlÑmˆÙ�C˜Ñ&�CØ�i‰i˜‹n×ÐØ×$Ñ$Ð%[ÐdjÐ$Ók×kÐkØ�‰˜DŸM™MÐ*=Ó>×>Ô?Ø�z‰z˜'Ô"Ð) 6Ó)Ð"Ü�f˜W‘oÓ&¬Ñ.YÀxÐPWÑGXÔ.YÓ(YÒYÐYÐYØ Ñ)×/Ñ/Ó1ò 	e‰IˆD�#Ø�Ñ'¨Ð-@Ñ)AÒAÐLÀ4ÈÀ*ÓLÐAØ�~Ñ&¨Ð,>Ñ(?ÔYÀÐEXÑAYÕYÐdÐ[_Ð`cÐZdÓdÐYð	eð �lÑ# EÑ*¨?Ñ;¸GÑDÀfÈ\ÑFZÐ[bÑFcÐdsÑFtÐu|ÑF}Ò}Ð}Ð}Ø�lÑ# EÑ*¨?Ñ;¸KÑHÈÑJÈFÐS_ÑL`ÐahÑLiÐjyÑLzð  |Gñ  MHò  Hð  	Hð  HÜÑD¨6Ð2BÑ+CÔDÔDÐDÐD÷	-ñ Ù˜%“.× Ð Ø"(¨Ñ"4°UÑ";ˆF�=Ñ!Ø�mÑ$ _Ñ5°kÑBÀHÐM^ÑD_Ò_Ð_Ð_ÚØ˜(Ñ# GÑ,¨_Ñ=¸qÒ@Ð@Ð@å!ÛØ—:‘:˜eŸj™j¬Ð.IÑ)IÓJ×RÑRÐSXÓYÓZÐ[^Ð_bÐcˆFØšš1˜Q˜‘- ¢qª¨1 u¡¨dÑ 2Ñ2°VºAºaÀ¸E±]À6Ê!ÊAÈaÈ%Á=ÐQUÑCUÑ5UÑV×[Ñ[Ó]ˆCØš!šA˜a˜%‘= ªª!¨A¨¡¨tÑ!3Ñ3°fºQºqÀ¸U±mÀFÊ1ÊQÈqÈ5ÁMÐRUÑDUÑ6UÑV×[Ñ[Ó]ˆDÜ-0°«X¼SÀ»YÑ&GˆFÐ$Ñ%Ø�s’7˜t CšxÐA¨Ð/@Ñ(AÓAÐ'á Ü!ò (�DÙ! $›-×'Ñ'ð(ð ]ò <�DÙ! $¨D°dÔ;×;Ñ;ð<á˜e¨Ô.×.Ð.Ù FÐ+>Ò$?ÐXÐ@XÓXÐ$?ØÐ)Ò*Ù˜jÓ)×)Ð)Ù˜j°Ô8×8Ð8Ù˜j°	Ô:×:Ð:Ù˜j¨d¸Ô=×=Ð=ÙCKÑ%?Ð`fÐgzÒ`{ÑR\ð  BPˆFÐ#Ñ$ØˆˆxÑ¸ Ð'7Ñ 8Ð`mÈÐP^ÑI_Ù¡/ÐJ°6¸/Ð2JÓJÐ1ÜÑrÐdqÔrÔrð  	Að  tAó  	AÐrØRVÐW`ÑR`ÐaeÐfpÑapÐquð  wGñ  rGô  HLð  M_ñ  H_ô  `dð  exñ  `xô  y}ð  ~Oñ  yOô  PTð  Upñ  Ppô  quð  vOñ  qOô  PTð  Uqñ  Pqô  rvð  wQñ  rQô  RVð  W}ñ  R}ð  R~ö  Èœs 4×#3Ñ#3´DÓ#9Ó:¼3¸t»9ÑDò  ˆˆ}ÑÜ�j‰j˜$Ð/Ñ/×:Ñ:Ó<Ó=ˆÜ¨e°KÑ.@×.GÑ.GÓ.I÷  E¨ÐUuò  EÈcÐyz×y~Ñy~ð  @Cõ  zD˜a ›fð  E˜fó  Eó  FˆØ_lÖ mÐW[¤ d¨4¡i×%<Ñ%<¼TÓ%BÓ!CÄCÈÈTÉ	ÃNÑ!RÒ mˆˆÑØÐ%Ò&ÌsÔSWÐXhÑShÓOi v¨mÑ'<Ð=MÑ'NØ!(§¡ˆÐÑ ð $fˆÐ!Ñ"ð $GˆÐ!Ñ"ð Pˆˆ}ÑØˆˆxÑØ�m‰m‹o×Ð÷UJ÷ Jð^ 	×Ñœ$Ÿ*™* V°1Ô5Ô6Ø�‰ÔÜŒd�j‰jð  4Sö  T¨a˜!˜FŸJ™J q›M™/ò  Tó  Uõ  	VðcJùð EùØ`ùð 	ùØkùØ>ùð0 !ùð  (ùà;ùØ.ùð *ùØ8ùØ:ùØ=ûò
 ùó EùÚ mð 	øðUJø÷ J÷ Jñ JûôV ò Ø�‰˜V¬C°«F¸&ÐP_ˆÔ`Øûðüò Tøð 	×Ñœ$Ÿ*™* V°1Ô5Ô6Ø�‰ÔÜŒd�j‰jð  4Sö  T¨a˜!˜FŸJ™J q›M™/ñ  Tùô  Tó  Uõ  	VüsÝ  ˆE
b>Åb>Å)b>Æ` Æ^9Æ` Æ#_7Æ:^<Æ;_7Ç^?ÇA5_7É_É_7É)_É*#_7Ê_
ÊB_7ÌA9_7Î_ÎE
_7Ó_Ó_7Ó4_Ó5_7Ô_Ô	"_7Ô+_Ô,_7Ô=_Ô>_7Õ_Õ_7Õ"_ Õ#B_7×</_#Ø+A_7Ù2_(Ú	_(Ú_7Ú#5_.ÛA_7Ü1_3Ü2_7Ü6` Ý_5Ý` ÝAb>Þ`<Þ-b>Þ9` Þ<_7Þ?_7ß_7ß_7ß_7ß_7ß_7ß_7ß_7ß_7ß_7ß_7ß _7ß#_7ß5` ß7`	ß=` ß>`	à` à	`9à`4à4`9à9a à<b>áAb;âb*â)b;â;b>Ú__main__z--preflightÚ
store_true)Úactionz
--kit-onlyz--assembly-only)FFF)%Ú__doc__ÚargparseÚasynciorº   r3   Úhttp.serverr¼   rµ   r-   r¿   Úpathlibr   Úplaywright.async_apir   Ú__file__ÚresolveÚparentr‹   r¹   r½   ÚSimpleHTTPRequestHandlerr   r)   r8   rí   r#   ÚArgumentParserÚparserÚadd_mutually_exclusive_groupÚmodesÚadd_argumentÚ
parse_argsrM   r.   r’   rÜ   rÝ   r   r"   r    ú<module>r     s$  ðñó
 Û Û Û Û Û Û Û Ý å 1áˆHƒ~×ÑÓ×&Ñ&€ò 	d€ô�4—;‘;×7Ñ7ô ò
sò9ócVðL ˆZÒØ"ˆ8×"Ñ"Ó$€F¨6×+NÑ+NÓ+P UØ	×Ñ�}¨LÐÔ9¸%×:LÑ:LÈ\ÐamÐ:LÔ:nÐot÷  pBñ  pBð  CTð  \hð  pBô  piØ	×	Ñ	Ó	€D˜[˜WŸ[™[©¨d¯n©n¸T¿]¹]È4×K]ÑK]Ó)^Õ_ð r"   