§
    ZøÁiö$  ã                  ót  — U d dl mZ d dlZd dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dl
mZ d dl
mZ d d	l
mZ d d
l
mZ d dl
mZ d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl'm)Z) ddl'm*Z*  ej+        ¦   «         Z,e, -                    dg¦  «          G d„ de¦  «        Z G d„ d ee¦  «        Ze)rd d!lm.Z. n G d"„ d#¦  «        Z.d$e._/        d0d&„Z0i Z1d'e2d(<   ed)„ ¦   «         Z3ed*„ ¦   «         Z4	 	 	 	 	 d1d-„Z5 G d.„ d/¦  «        Z6dS )2é    )ÚannotationsN)Úcontextmanager)ÚAny)ÚDict)ÚColumn)Úinspect)ÚMetaData)ÚString)ÚTable)Útesting)Útext)Úconfig)Úmock)Úeq_)Ú
TablesTest)ÚTestBaseé   )Ú_get_dialecté   )ÚEnvironmentContext)ÚMigrationContext)Ú
Operations)Úsqla_compat©Úcreate_mock_engine)Úsqla_14)Úsqla_2ztest.cfgc                  ó¢   — e Zd ZeZ ej        ¦   «         d„ ¦   «         Zej        d„ ¦   «         Zej        d„ ¦   «         Z	ej        d„ ¦   «         Z
dS )r   c              #  óŠ   K  — |                      d¬¦  «        5  t          |¦  «        V — d d d ¦  «         d S # 1 swxY w Y   d S )NT)Ú_per_migration)Úbegin_transactionr   )ÚselfÚmigration_contexts     úb/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/alembic/testing/fixtures.pyÚops_contextzTestBase.ops_context)   s–   è è € à×0Ò0ÀÐ0ÑEÔEð 	0ð 	0ÝÐ.Ñ/Ô/Ð/Ð/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   ™8¸<¿<c                óJ   — t          j        |t          d¬¦  «        ¬¦  «        S )NT)Útransaction_per_migration©Úopts©r   Ú	configureÚdict©r"   Ú
connections     r$   r#   zTestBase.migration_context.   s,   € åÔ)Ø�T¸DÐAÑAÔAð
ñ 
ô 
ð 	
ó    c                óL   — t          j        |t          dd¬¦  «        ¬¦  «        S )NT)r'   Úas_sqlr(   r*   r-   s     r$   Úas_sql_migration_contextz!TestBase.as_sql_migration_context4   s.   € åÔ)Ø�T¸DÈÐNÑNÔNð
ñ 
ô 
ð 	
r/   c              #  ó€   K  — t           j                             ¦   «         5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S ©N)r   ÚdbÚconnect)r"   Úconns     r$   r.   zTestBase.connection:   s„   è è € åŒY×ÒÑ Ô ð 	 DØˆJˆJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¡3³7º7N)Ú__name__Ú
__module__Ú__qualname__r   Úis_sqlalchemy_futurer   Úfixturer%   r#   r2   r.   © r/   r$   r   r   &   s•   € € € € € Ø!Ðà€W„_ÑÔð0ð 0ñ Ôð0ð „_ð
ð 
ñ „_ð
ð
 „_ð
ð 
ñ „_ð
ð
 „_ðð ñ „_ðð ð r/   r   c                  ó   — e Zd ZdS )r   N)r8   r9   r:   r=   r/   r$   r   r   @   s   € € € € € Ø€Dr/   r   )ÚFutureEngineMixinc                  ó   — e Zd ZdZdS )r?   )Úsqlalchemy_14N)r8   r9   r:   Ú__requires__r=   r/   r$   r?   r?   H   s   € € € € € Ø)ˆˆˆr/   r?   Túpostgresql://c                ó>   ‡‡— g Šˆˆfd„}t          | |¦  «        Š‰‰fS )Nc                ó~   •— ‰                      t          |                      ‰j        ¬¦  «        ¦  «        ¦  «         d S ©N)Údialect)ÚappendÚstrÚcompilerG   )ÚsqlÚmultiparamsÚparamsÚbufÚengines      €€r$   Údumpzcapture_db.<locals>.dumpR   s3   ø€ Ø�
Š
•3�s—{’{¨6¬>�{Ñ:Ô:Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<r/   r   )rG   rP   rN   rO   s     @@r$   Ú
capture_dbrQ   O   sB   øø€ Ø
€Cð=ð =ð =ð =ð =ð =õ   ¨Ñ.Ô.€FØ�3ˆ;Ðr/   zDict[Any, Any]Ú_engsc               +  ób  ‡ ‡K  — ‰                       dd¦  «        rt          j        ¦   «         }nt          j        ¦   «         }‰                      d|dœ¦  «         t
          j        Šˆˆ fd„}t          j         	                    t
          d|¦  «        5  |V — d d d ¦  «         d S # 1 swxY w Y   d S )NÚbytes_ioFÚsqlite)Údialect_nameÚoutput_bufferc                 ó.   •—  |j         di ‰¤Ž  ‰| i |¤ŽS ©Nr=   ©Úupdate©ÚargÚoptÚconfÚkws     €€r$   r+   z)capture_context_buffer.<locals>.configuref   ó0   ø€ ØˆŒ
ÐÐ�RÐÐÐØˆt�SÐ ˜CÐ Ð Ð r/   r+   )
ÚpopÚioÚBytesIOÚStringIOr[   r   r+   r   ÚpatchÚobject)r`   rN   r+   r_   s   `  @r$   Úcapture_context_bufferrh   \   s   øøè è € à	‡v‚vˆj˜%Ñ Ô ð ÝŒj‰lŒlˆˆåŒk‰mŒmˆà‡I‚I˜x¸#Ð>Ð>Ñ?Ô?Ð?ÝÔ'€Dð!ð !ð !ð !ð !ð !õ 
Œ×	Ò	Õ-¨{¸IÑ	FÔ	Fð ð Øˆ	ˆ	ˆ	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB$Â$B(Â+B(c               +  ó¤  ‡ ‡‡K  — ddl m} ddlm} t	          j        ¦   «         Š |¦   «         }|                     ¦   «         }|                     |d¦  «        ˆfd„¦   «         }‰                      d|i¦  «         t          j
        Šˆˆ fd„}t          j                             t          d	|¦  «        5  ‰V — d d d ¦  «         d S # 1 swxY w Y   d S )
Nr   )Ú_sqlite_file_dbr   )ÚeventÚbefore_cursor_executec                ó8   •— ‰                      |dz   ¦  «         d S )Nú
)Úwrite)r7   ÚcursorÚ	statementÚ
parametersÚcontextÚexecutemanyrN   s         €r$   Úbcez*capture_engine_context_buffer.<locals>.bcey   s    ø€ à�	Š	�)˜dÑ"Ñ#Ô#Ð#Ð#Ð#r/   r.   c                 ó.   •—  |j         di ‰¤Ž  ‰| i |¤ŽS rY   rZ   r\   s     €€r$   r+   z0capture_engine_context_buffer.<locals>.configure€   ra   r/   r+   )Úenvrj   Ú
sqlalchemyrk   rc   re   r6   Úlistens_forr[   r   r+   r   rf   rg   )	r`   rj   rk   Úengr7   ru   r+   rN   r_   s	   `      @@r$   Úcapture_engine_context_bufferr{   n   sP  øøøè è € à$Ð$Ð$Ð$Ð$Ð$Ø Ð Ð Ð Ð Ð å
Œ+‰-Œ-€Cà
ˆ/Ñ
Ô
€Cà�;Š;‰=Œ=€Dà
×Ò�tÐ4Ñ5Ô5ð$ð $ð $ð $ñ 6Ô5ð$ð ‡I‚Iˆ|˜TÐ"Ñ#Ô#Ð#ÝÔ'€Dð!ð !ð !ð !ð !ð !õ 
Œ×	Ò	Õ-¨{¸IÑ	FÔ	Fð ð Øˆ	ˆ	ˆ	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Â3CÃC	ÃC	ÚdefaultFc                óÚ  ‡‡‡— i }|rt          |¬¦  «        |d<    G ˆfd„d¦  «        } |¦   «         Š G ˆfd„dt          ¦  «        }‰r‰|d<   |r||d<   t          s| d	k    rt          d
¦  «        Šd‰_        nt          | ¦  «        Š|�|‰_        d‰_        ‰sˆˆfd„}t          j        ‰|¬¦  «        }	n‰|d<   d }	 |‰|	|¦  «        }
t          |
¦  «        t          j        _        |
S )N)Únaming_conventionÚtarget_metadatac                  ó&   •— e Zd Zd„ Zˆ fd„Zd„ ZdS )úop_fixture.<locals>.buffer_c                ó   — g | _         d S r4   ©Úlines©r"   s    r$   Ú__init__z$op_fixture.<locals>.buffer_.__init__”   s   € ØˆDŒJˆJˆJr/   c                óì   •— |                      ¦   «         }t          j        dd|¦  «        }‰r,t          j        dd|¦  «        }t          j        dd|¦  «        }| j                             |¦  «         d S )Nú[\n\t]Ú z    z\;\n*$)ÚstripÚreÚsubr„   rH   )r"   Úmsgr1   s     €r$   ro   z!op_fixture.<locals>.buffer_.write—   so   ø€ Ø—)’)‘+”+ˆCÝ”&˜ B¨Ñ,Ô,ˆCØð 1õ ”f˜W b¨#Ñ.Ô.�Ý”f˜Y¨¨CÑ0Ô0�àŒJ×Ò˜cÑ"Ô"Ð"Ð"Ð"r/   c                ó   — d S r4   r=   r…   s    r$   Úflushz!op_fixture.<locals>.buffer_.flush¢   s   € ØˆDr/   N)r8   r9   r:   r†   ro   r�   )r1   s   €r$   Úbuffer_r�   “   sL   ø€ € € € € ð	ð 	ð 	ð		#ð 		#ð 		#ð 		#ð 		#ð	ð 	ð 	ð 	ð 	r/   r�   c                  ó8   •— e Zd Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„ZdS )úop_fixture.<locals>.ctxc                ó   •— ‰S r4   r=   ©r"   rN   s    €r$   Úget_bufzop_fixture.<locals>.ctx.get_buf¨   s   ø€ ØˆJr/   c                ó    •— g ‰j         d d …<   d S r4   rƒ   r”   s    €r$   Úclear_assertionsz(op_fixture.<locals>.ctx.clear_assertions«   s   ø€ ØˆCŒI�a�a�a‰LˆLˆLr/   c                óF   •— t          ‰j        d„ |D ¦   «         ¦  «         d S )Nc                ó:   — g | ]}t          j        d d|¦  «        ‘ŒS )rˆ   r‰   )r‹   rŒ   )Ú.0Úss     r$   ú
<listcomp>z3op_fixture.<locals>.ctx.assert_.<locals>.<listcomp>±   s&   € ÐBÐBÐB¸�BœF 9¨b°!Ñ4Ô4ÐBÐBÐBr/   )r   r„   )r"   rK   rN   s     €r$   Úassert_zop_fixture.<locals>.ctx.assert_®   s,   ø€ õ �”	ÐBÐB¸cÐBÑBÔBÑCÔCÐCÐCÐCr/   c                óx   •— ‰j         D ]}t          j        dd|¦  «        |v r d S ŒJ d|›d‰j         ›�¦   «         ‚)Nrˆ   r‰   FzCould not locate fragment z in )r„   r‹   rŒ   )r"   rK   ÚstmtrN   s      €r$   Úassert_containsz'op_fixture.<locals>.ctx.assert_contains³   sb   ø€ Øœ	ð ð �Ý”6˜) R¨Ñ-Ô-°Ð5Ð5Ø�F�Fð 6ðð Ø�C�CØ”I�Iðñ ô �ur/   N)r8   r9   r:   r•   r—   r�   r    )rN   s   €r$   Úctxr’   §   s~   ø€ € € € € ð	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð	Dð 	Dð 	Dð 	Dð 	Dð
	ð 	ð 	ð 	ð 	ð 	ð 	r/   r¡   r1   Úliteral_bindsÚmariadbÚmysql)é
   é   r   ÚMariaDBTc                óÒ   •— t          | t          ¦  «        rt          | ¦  «        } | j        sJ ‚t          |                      ‰¬¦  «        ¦  «        }‰                     |¦  «         d S rF   )Ú
isinstancerI   r   Úsupports_executionrJ   ro   )rŸ   Ú
multiparamÚparamrK   rN   Úctx_dialects       €€r$   Úexecutezop_fixture.<locals>.executeÎ   s]   ø€ Ý˜$¥Ñ$Ô$ð "Ý˜D‘z”z�ØÔ*Ð*Ð*Ð*Ý�d—l’l¨;�lÑ7Ô7Ñ8Ô8ˆCà�IŠI�c‰NŒNˆNˆNˆNr/   )rG   r®   rW   )r	   r   r   r   Úserver_version_infoÚsupports_native_booleanÚ#non_native_boolean_check_constraintr   ÚMockr   ÚalembicÚopÚ_proxy)rG   r1   r~   r¢   Únative_booleanr)   r�   r¡   r®   r.   rs   rN   r­   s    `         @@r$   Ú
op_fixturer·   ˆ   s�  øøø€ ð €DØð PÝ"*Ð=NÐ"OÑ"OÔ"OˆÐÑðð ð ð ð ð ð ñ ô ð ð$ ˆ'‰)Œ)€Cðð ð ð ð ð ð Õñ ô ð ð, ð  ØˆˆX‰Øð .Ø -ˆˆ_ÑÝð ,�w )Ò+Ð+Ý" 7Ñ+Ô+ˆØ*?ˆÔ'Ð'õ # 7Ñ+Ô+ˆØÐ!Ø.<ˆÔ+ð ;?ˆÔ7Øð ð	ð 	ð 	ð 	ð 	ð 	õ ”Y {¸GÐDÑDÔDˆ
ˆ
à #ˆˆ_ÑØˆ
Øˆc�+˜z¨4Ñ0Ô0€Gå" 7Ñ+Ô+…G„JÔØ€Nr/   c                  ó2   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zdd„ZdS )	ÚAlterColRoundTripFixture)Úalter_columnc                óà   — t           j                             ¦   «         | _        t	          j        | j        ¦  «        | _        t          | j        ¦  «        | _        t          ¦   «         | _
        d S r4   )r   r5   r6   r7   r   r+   r¡   r   r´   r	   Úmetadatar…   s    r$   ÚsetUpzAlterColRoundTripFixture.setUpç   sK   € Ý”I×%Ò%Ñ'Ô'ˆŒ	Ý#Ô-¨d¬iÑ8Ô8ˆŒÝ˜TœXÑ&Ô&ˆŒÝ ™
œ
ˆŒˆˆr/   c                ó¨   — t          d|¦  «        }t          d|¦  «        }| j        j                             ||¦  «        rJ d|›d|›d�¦   «         ‚d S )NÚqzType objects ú and ú didn't compare as equivalent)r   r¡   ÚimplÚcompare_type)r"   Út1Út2Úc1Úc2s        r$   Ú_compare_typez&AlterColRoundTripFixture._compare_typeí   sw   € Ý�C˜‰_Œ_ˆÝ�C˜‰_Œ_ˆØ”8”=×-Ò-Ø�ñ
ô 
ð 	Lð 	Lð 	LàDFÀBÀBÈÈÈÐKñ	Lô 	Lð 
ð 	Lð 	Lr/   c                ó´   — t          d||¬¦  «        }t          d||¬¦  «        }| j        j                             ||||¦  «        rJ d|›d|›d�¦   «         ‚d S )Nr¿   )Úserver_defaultzserver defaults rÀ   rÁ   )r   r¡   rÂ   Úcompare_server_default)r"   rÄ   Ús1rÅ   Ús2rÆ   rÇ   s          r$   Ú_compare_server_defaultz0AlterColRoundTripFixture._compare_server_defaultô   s‰   € Ý�C˜¨BÐ/Ñ/Ô/ˆÝ�C˜¨BÐ/Ñ/Ô/ˆØ”8”=×7Ò7Ø��B˜ñ
ô 
ð 	Oð 	Oð 	OàGIÀrÀrÈ2È2È2ÐNñ	Oô 	Oð 
ð 	Oð 	Or/   c                ó
  — t          j        | j        ¦  «         | j                             ¦   «         5  | j                             | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   | j                             ¦   «          d S r4   )r   Ú%_safe_rollback_connection_transactionr7   Úbeginr¼   Údrop_allÚcloser…   s    r$   ÚtearDownz!AlterColRoundTripFixture.tearDownû   s¬   € ÝÔ9¸$¼)ÑDÔDÐDØŒY�_Š_ÑÔð 	.ð 	.ØŒM×"Ò" 4¤9Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.àŒ	�ŠÑÔÐÐÐs   ³ AÁA#Á&A#Nc                ó–  — t          |                     dd¦  «        |                     dt          d¦  «        ¦  «        |                     dd¦  «        |                     dd ¦  «        ¬¦  «        }t          d	| j        |¦  «        }t          j        | j        ¦  «        5  |                     | j        ¦  «         t          | j        ¦  «        }| 
                    d	¦  «        d
         }| j                             d	|j        |j        |j        �|j        nd|j        rdnd|                     dd ¦  «        |                     dd¦  «        |                     dd ¦  «        |                     dd ¦  «        ¬¦	  «	         d d d ¦  «         n# 1 swxY w Y   t          | j        ¦  «        }| 
                    d	¦  «        d
         }|€|}t#          |d         d|v r|d         n|j        ¦  «         |                      |d         |                     d|d         ¦  «        ¦  «         t#          |d         |                     d|j        ¦  «        ¦  «         |                      |d         |                     dd ¦  «        |                     d|d         ¦  «        d|v r|d         j        n|j        �|j        j        j        nd ¦  «         d S )NÚnameÚcolnameÚtyper¥   ÚnullableTrÊ   )rÙ   rÊ   Úxr   F)Úexisting_typeÚexisting_server_defaultÚexisting_nullablerÙ   rÊ   Únew_column_nameÚtype_r|   )r   Úgetr
   r   r¼   r   Ú_ensure_scope_for_ddlr7   Úcreater   Úget_columnsr´   rº   rÖ   rØ   rÊ   rÙ   r   rÈ   rÎ   r   r]   )	r"   Úfrom_Úto_ÚcompareÚcolumnÚtÚinspÚold_colÚnew_cols	            r$   Ú_run_alter_colz'AlterColRoundTripFixture._run_alter_col  sþ  € ÝØ�IŠI�f˜iÑ(Ô(Ø�IŠI�f�f R™jœjÑ)Ô)Ø—Y’Y˜z¨4Ñ0Ô0Ø Ÿ9š9Ð%5°tÑ<Ô<ð	
ñ 
ô 
ˆõ �#�t”} fÑ-Ô-ˆåÔ.¨t¬yÑ9Ô9ð 	ð 	Ø�HŠH�T”YÑÔÐÝ˜4œ9Ñ%Ô%ˆDØ×&Ò& sÑ+Ô+¨AÔ.ˆGð ŒG× Ò ØØ”Ø$œkð Ô,Ð8ð Ô)Ð)àà*0¬/Ð"D $ $¸uàŸš ¨TÑ2Ô2à"ŸwšwÐ'7¸Ñ?Ô?Ø #§¢¨°Ñ 5Ô 5Ø—g’g˜f dÑ+Ô+ð !ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ0 �t”yÑ!Ô!ˆØ×"Ò" 3Ñ'Ô'¨Ô*ˆàˆ?ØˆGåØ�FŒOØ%¨Ð0Ð0ˆG�FŒOˆO°f´kñ	
ô 	
ð 	
ð 	×ÒØ�FŒO˜WŸ[š[¨°¸´ÑAÔAñ	
ô 	
ð 	
õ 	ˆG�JÔ §¢¨Z¸¼Ñ!IÔ!IÑJÔJÐJØ×$Ò$Ø�FŒOØ�KŠK˜	 4Ñ(Ô(Ø�KŠK˜ ¨¤Ñ0Ô0ð $ wÐ.Ð.ð Ð(Ô)Ô.Ð.ð Ô,Ð8ð Ô)Ô-Ô2Ð2àñ	
ô 	
ð 	
ð 	
ð 	
s   Â CF
Æ
FÆFr4   )	r8   r9   r:   rB   r½   rÈ   rÎ   rÔ   rì   r=   r/   r$   r¹   r¹   à   sq   € € € € € ð
 %€Lð#ð #ð #ðLð Lð LðOð Oð Oðð ð ð=
ð =
ð =
ð =
ð =
ð =
r/   r¹   )rC   )r|   FNFN)7Ú
__future__r   ÚconfigparserÚ
contextlibr   rc   r‹   Útypingr   r   rx   r   r   r	   r
   r   r   r   Úsqlalchemy.testingr   r   Úsqlalchemy.testing.assertionsr   Úsqlalchemy.testing.fixturesr   ÚSQLAlchemyTablesTestr   ÚSQLAlchemyTestBaser³   Ú
assertionsr   Úenvironmentr   Ú	migrationr   Ú
operationsr   Úutilr   Úutil.sqla_compatr   r   r   ÚConfigParserÚtesting_configÚreadr?   r;   rQ   rR   Ú__annotations__rh   r{   r·   r¹   r=   r/   r$   ú<module>r      st  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø #Ð #Ð #Ð #Ð #Ð #Ø -Ð -Ð -Ð -Ð -Ð -Ø JÐ JÐ JÐ JÐ JÐ JØ FÐ FÐ FÐ FÐ FÐ Fà €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø (Ð (Ð (Ð (Ð (Ð (Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø &Ð &Ð &Ð &Ð &Ð &Ø %Ð %Ð %Ð %Ð %Ð %ð +�Ô*Ñ,Ô,€Ø × Ò �Z�LÑ !Ô !Ð !ðð ð ð ð Ð!ñ ô ð ð4	ð 	ð 	ð 	ð 	�Ð/ñ 	ô 	ð 	ð ð *Ø=Ð=Ð=Ð=Ð=Ð=Ð=ð*ð *ð *ð *ð *ñ *ô *ð *ð *.Ð Ô &ðð ð ð ð €Ð Ð Ð Ñ ð ðð ñ „ðð" ðð ñ „ðð4 ØØØØðUð Uð Uð Uðp^
ð ^
ð ^
ð ^
ð ^
ñ ^
ô ^
ð ^
ð ^
ð ^
r/   