a c8hͮ@s(ddlmZddlZddlZejdddZeedsd?Z:e;d@kr$e:dS)A)geteuidNzrhn-client-toolsT)fallbackugettext)rhnreghardware) up2dateErrors) up2dateUtils)pkgUtils) up2dateLog)config)convert_url_from_puny) up2dateAuth)rpclib)idn_puny_to_unicode)sstr)PM_PLUGIN_NAMEPM_PLUGIN_CONF)*cCs&t|tttd|ttgdSN%s)snackButtonChoiceWindowrERRORBACKscreenerrmsgr6/usr/lib/python3.9/site-packages/up2date_client/tui.py ErrorWindow/srcCs8t|tttd|ttg|tddS)Nr)rrrZ FATAL_ERROROKfinishsysexitrrrrFatalErrorWindow3s r%cCs.t|tttd|ttg|dSr)rrrWARNINGr!r"rrrr WarningWindow9sr'cCstj|ttttdttdttdttdttdtt dtt dtt dtt dtt dttttttgdd}|ttkr|dSdSdS)N  Fwidthr r)rrrZ CONFIRM_QUITZCONFIRM_QUIT_SUREWHY_REGISTER_SECWHY_REGISTER_SEC_TXTWHY_REGISTER_DLDWHY_REGISTER_DLD_TXTWHY_REGISTER_SUPPWHY_REGISTER_SUPP_TXTWHY_REGISTER_COMPWHY_REGISTER_COMP_TXTZCONFIRM_QUIT_WILLNOTWHY_REGISTER_TIPZCONTINUE_REGISTERINGZREGISTER_LATER2lowerr")rbuttonrrrConfirmQuitWindow?s^      r8c Gsz ||}WntjyBt|ttdtdYntjylt||j tdYntj ytd}t ||j dt t t t fYn8tjytd}t||j dt|Yn0|S)Nrr r(r))rCommunicationErrorrZHOSTED_CONNECTION_ERRORr getServerURLr#exc_infoZSSLCertificateVerifyFailedErrorrZNoBaseChannelErrorr%ZBASECHANNELERRORrgetArchZ getOSRelease getVersionZSSLCertificateFileNotFoundZSSL_CERT_FILE_NOT_FOUND_ERRER)rfuncparamsresultserrrtui_call_wrapperVs.        rBc@s eZdZdS)WindowSkipExceptionN)__name__ __module__ __qualname__rrrrrCnsrCc@s(eZdZdZddZddZddZdS)AlreadyRegisteredWindowc Cs:tr|jrt||_||_tj}t j t }|ddd}|ddd}t|jttdd}t|jttdfttdfg|_|j|jddddt|dd |dd ttd td d t|jjdtdd |dtdd |d tddd}|j|dddd||_dS)Nrusername system_idr nextr$growxr)zSpacewalk Location: r(zLogin:z System ID:rrrr padding)rZ registeredtestrCrtuir_snacksizerZ xmlrpclibloadsr Z getSystemIdGridFormrSYSTEM_ALREADY_SETUP ButtonBarYES_CONT NO_CANCELbbaddTextboxZSYSTEM_ALREADY_REGISTERED_r serverURLSYSTEM_ALREADY_REGISTERED_CONTg) selfrrUrWZ systemIdXmlZ oldUsernameZ oldsystemIdtopleveltbrrr__init__tsb    z AlreadyRegisteredWindow.__init__cCsdSNrrerrr saveResultssz#AlreadyRegisteredWindow.saveResultscCs6td|j|j}|j|}|dkr2dS|SN Running %sF12rKlog log_debugnamerdrunOncer^ buttonPressedreresultr7rrrruns   zAlreadyRegisteredWindow.runNrDrErFrrrhrkrwrrrrrGqsrGc@s0eZdZdZddZddZddZddZd S) SatelliteUrlWindowc Cs||_||_d|j_t|jj|_t|j}||jkrR||_t |jt t j }t |ttdd}t}t}t}t j|dddt|ddd} |j| ddddt td} || ddt d d} t t|} | j| ddd dd t d |_|j|j| j|jddddt t|} | j| ddd dd t d |_|j|j| j|jdddd|| dd t |tt d ftt!dftt"dfg|_#|j|j#ddddd||_$dS)Nrr  Zscrollwrap anchorLeftrJrrr rrSZ anchorRight(rKbackcancelrr rrrSrM)%rrUalreadyRegisteredr rbserverrmakeNiceServerUrlr setServerURLcfgsaverrVrWrYrZSATELLITE_URL_WINDOWZSATELLITE_URL_TEXTZSATELLITE_URL_PROMPTZSATELLITE_URL_PROMPT2r`r_LabelGridsetFieldEntryurlEntrysetsslEntry sslCACertr[NEXTrCANCELr^rd) rerrUfixed_server_urlrWrfZ prompt_textZ url_labelZ ssl_labellabelgridrrrrhsb             zSatelliteUrlWindow.__init__cCs|jdkrBtj|jttttttgd|j |jdS|jdddkr|j dkrtj|jtttt ttgd|j |j dSdS)NrZbuttonsrhttpsr ) rvaluerrrrrZSATELLITE_REQUIREDr!rd setCurrentrZ SSL_REQUIREDrjrrrvalidateFieldss" z!SatelliteUrlWindow.validateFieldscCs\|j}t|}||kr |}||j_|j|j_t |t |jt dSri) rrrrrUrbrrr rZ setSSLCACertrr)reZ serverEntryrrrrrks   zSatelliteUrlWindow.saveResultscCshtd|j|jd}|sZ|j}|j|}|dkrDd}|dkrZ| }qqZq|j |SNrmrrnrK rprqrrrrefreshrdrwr^rtr popWindowreZvalidrvr7rrrrws     zSatelliteUrlWindow.runNrDrErFrrrhrrkrwrrrrrys A ryc@s(eZdZdZddZddZddZdS)*AlreadyRegisteredSubscriptionManagerWindowcCstr|jrt||_||_tj}t |jt t dd}t |jt t dft tdfg|_|j|jddddt|dd|ddt td td td dd}|j|ddd d ||_dS) Nr rJrKr$rrLrNrOr)r(rQrR)rZrhsm_registeredrTrCrrUrrVrWrYrrZr[r\r]r^r_r`r&ZRHSM_SYSTEM_ALREADY_REGISTEREDrcrd)rerrUrWrfrgrrrrhs4   z3AlreadyRegisteredSubscriptionManagerWindow.__init__cCsdSrirrjrrrrk2sz6AlreadyRegisteredSubscriptionManagerWindow.saveResultscCs6td|j|j}|j|}|dkr2dS|Srlrorurrrrw5s   z.AlreadyRegisteredSubscriptionManagerWindow.runNrxrrrrrsrc@s(eZdZdZddZddZddZdS) ConnectWindowcCs||_||_tj}t|jj|_td|_ t |jt t dd}t |jd}|j rf|t|j 7}t|dd|ddt |dd}|j|dddd||_dS) NZ httpProxyr r)rrNrOrQrR)rrUrrVrWr rbrrproxyrYrZCONNECT_WINDOWZCONNECT_WINDOW_TEXTZCONNECT_WINDOW_TEXT2r`r_rd)rerrUrWrftextrgrrrrhCs  zConnectWindow.__init__cCsTtd|j|j}|jzt|jtj WnYdS0|j dS)NrmrrK) rprqrrrddrawrrrBrZgetCapsr)rervrrrrw\s   zConnectWindow.runcCsdSrirrjrrrrkqszConnectWindow.saveResultsN)rDrErFrrrhrwrkrrrrr@src@s(eZdZdZddZddZddZdS) StartWindowcCs||_||_tj}t|jttdd}tt}t |dd|dd|dd}|j |ddddt |jtt dftt d fttd fg|_|j |jdddd ||_dS) Nr rJrr{rQrR why_registerrKrrL)rrUrrVrWrYrZSTART_REGISTER_WINDOWZSTART_REGISTER_TEXTr`r_r[Z WHY_REGISTERrrr^rd)rerrUrWrfZstart_register_textrgrrrrhws" "   zStartWindow.__init__cCsdSrirrjrrrrkszStartWindow.saveResultscCsXtd|j|j}|j|}|dkr2dS|dkrTt|j|j }| |S|S)NrmrnrKr) rprqrrrdrsr^rtWhyRegisterWindowrrUrw)rervr7Z why_reg_winrrrrws  zStartWindow.runNrxrrrrrtsrc@s eZdZdZddZddZdS)rcCs||_||_tj}t|jttdd}tdt dt dt dt dt dtdtdtdt}t|dd|ddt|dd}|j|dddd t|jttd fg|_|j|jdddd ||_dS) Nr rJr)r(rr{rrQrRrrL)rrUrrVrWrYrZWHY_REGISTER_WINDOWZWHY_REGISTER_TEXTr-r.r/r0r1r2r3r4r5r`r_r[Z BACK_REGISTERr^rd)rerrUrWrfZwhy_register_textrgrrrrhs`   & zWhyRegisterWindow.__init__cCs*td|j|j}|j|}|S)Nrmrorurrrrws  zWhyRegisterWindow.runN)rDrErFrrrhrwrrrrrsrc@s0eZdZdZddZddZddZddZd S) InfoWindowc Cs||_||_d|j_|jj|_tj}t|t t dd}t |j}|j}||jkrb|d|7}t |}t }t} tj|dddt |ddd} |j| ddddtd d} tt |} | j| ddd dd td |_|j|j| j|jddddtt t} | j| ddd dd ztjd dd |_Wn$tyZtjd dd|_Yn0|j|j| j|jdddd|| ddt|ddt | } |j| dd ddt|t tdft tdft t dfg|_!|j|j!ddddd||_"dS)Nrr rzz (%s)r{r|r}rrJrrrO)password)ZhiddenrKrrrr)#rrUrrbrrrVrWrYrZREGISTER_WINDOWr Z LOGIN_PROMPTZLOGINZ LOGIN_TIPr`r_rrrr userNameEntryruserNameZPASSWORD passwordEntry TypeErrorrTextboxReflowedr[rrrr^rd) rerrUrWrfZdecoded_serverurlZ login_promptZ login_labelZ login_tiprrrrrrhsb            zInfoWindow.__init__c CsJ|jdkrBtj|jttttttgd|j |jdS|j dkrtj|jtttt ttgd|j |j dSz t |j|j |j_Wntjytd}tj|jttdttdt|jttdgd|j |jYdStjyDtd}t|jtd|jYn0dS) Nrrrr ErrorzThe server indicated an error: r!z?There was an error communicating with the registration server: )rrrrrrrZ USER_REQUIREDr!rdrrZPASSWORD_REQUIREDrZ reserveUserrUrrZValidationErrorr#r;rarr9r%)rerArrrr s2  8 zInfoWindow.validateFieldscCs |j|j_|j|j_dSri)rrrUrrrrjrrrrk%szInfoWindow.saveResultscCshtd|j|jd}|sZ|j}|j|}|dkrDd}|dkrZ| }qqZq|j |Srrrrrrrw)s     zInfoWindow.runNrrrrrrs @rc@s0eZdZdZddZddZddZddZd S) OSReleaseWindowcCst||_tstdtt|j|j|_ t |j ddkrRtdt||_ t j |_d|_t |j ttdd}||_t |jddtt|_|j|jdddd tt}|jjrt j|ddd |_nt |d|_|j|jddd dd t tt|_|j|jdd dd t j|jddd|jddd|_||jddt |j d!dddD]4\}}||j dvr|d}|j"d||qrt |jddtt#|_$|j|j$dddd tt%}|jj&rt j||jdd |_&nt ||j|_&|j|j&ddddd t '|tt(dftt)dftt*dfg|_+|j|j+dddd|j ,dS)Nz5Server does not support EUS, skipping OSReleaseWindowchannelsr z3No available EUS channels, skipping OSReleaseWindowFrr{rZisOnrr rr rSrrJr+r|cSs|dS)Nrr)arrrjz*OSReleaseWindow.__init__..)keyZreceiving_updatesrrPrzrrQrKrrrL)-rUrZserver_supports_eusrprqrCZgetAvailableChannelsrravailable_channelslenrrrVrWZ selectChannelrYrZSELECT_OSRELEASErdrZ OS_VERSIONZostextr_ZLIMITED_UPDATESlimited_updates_buttonZSingleRadioButtonrZ MINOR_RELEASEZsublabelZListbox channelListsorteditemsappendZCHANNEL_PAGE_TIPZtipZ ALL_UPDATESall_updates_buttonr[rrrr^r)rerrUrfZ optiontext1rrZ optiontext2rrrrh@sv     "     zOSReleaseWindow.__init__cCsltd|j|jd}|dkr^|j}|j|}|dkrHd}|dkr^| }qq^q|j |S)NrmrrnrKrrrrrrws     zOSReleaseWindow.runcCsd}d}|jr&|j|jdk}tt}|rdtj|j |tt |jtt tt gd}|S|j sr|rtj|j |tttt tt gd}|S|S)NokFZdefault_channelr)rselectedrcurrentrrZCONFIRM_OS_RELEASE_SELECTIONrrrZCONFIRM_OS_WARNINGr!rrZCONFIRM_OS_ALL)reZmsgboxZ later_releasetitlerrrrs&   zOSReleaseWindow.validateFieldscCsz|jjdd|jrVtd|j|j|jjd<|j|j_d|j_ |j rv|j |j_ d|j_dS)NchannelzSelected Channel %sr) rUotherpoprrrprqrrrrjrrrrks  zOSReleaseWindow.saveResultsN)rDrErFrrrhrwrrkrrrrr=s Mrc@s(eZdZdZddZddZddZdS)HardwareWindowcCs||_||_tj}t\}}|durB||jjd<||jjd<t |_t |t t dd}t dt t}|j|ddddtdd}tt td } |j| ddd dd td |_|j|jdddd|j|dddd|jrtjt tdd |_ntt t|_|j|jdddddtt t} |j| dddddtdd}d} | tdt td7} tt td|_|j|jddd ddtt t|_|j|jdddd| td7} |jD]$} | ddkr| | dd7} q| td7} |jD]X} | ddkrt| d} | | d7} |j dkrZ|j!|j n|j!t | q| td7} |jD],} | ddkr| td | d!d7} q| td"7} |jD]J} | ddkr| d#r| | d#d7} n| d$r| | d$d7} q| td%7} |jD](} | dd&kr| td'| d(7} qt d)t | } || ddt |dd*t t"|_#|j|j#dd+dddt$|t t%d,ft t&d-ft t'd.fg|_(|j|j(dd/ddd0||_)dS)1N virt_uuid virt_typer rr*rrrJz Profile name:rrrrrrr|rQ)rrSrzrz Version: z z CPU model: classZCPUZmodelr(z Hostname: ZNETINFOhostnamez CPU speed: z%d MHzZspeedz IP Address: ZipaddrZip6addrzMemory: ZMEMORYz %s megabytesZramPr{rrKrrrr)*rrUrrVrWrZ get_virt_inforrZHardwarerYrZHARDWARE_WINDOWrZHARDWARE_WINDOW_DESC1r_rrrarr profileEntryincludeHardwareCheckboxZHARDWARE_WINDOW_CHECKBOXhardwareButtonZDESELECTrr=Z versionLabelZ versionLabel2r profileNamerZHARDWARE_WINDOW_DESC2ZadditionalHWLabelr[rrrr^rd)rerrUrWrrrfrrrZ hardware_textZhwZunicode_hostnamergrrrrhs                          zHardwareWindow.__init__cCs |j|j_|j|j_dSri)rrrUrrrrrjrrrrk5szHardwareWindow.saveResultscCs6td|j|j}|j|}|dkr2dS|Srlrorurrrrw9s   zHardwareWindow.runNrxrrrrrsnrc@s0eZdZdZddZddZddZddZd S) PackagesWindowc Cs||_||_tj}t|ttdd}||_t |ddtt }|j |ddddt tt d|_|j |jdddddttt}|j |ddddt|dd d|_| |jdd |jgkrJt|ttdd|_td d |_|j |jdd|j|jd}tjd r2d}tj|d|_|j|jD]B}|jjdt|dt|dt|dft|dddqPt|tt dftt!dftt"dfg|_#|j |j#ddddddS)Nr rrr{rrrrJr|rdZsupportsExtendedPackageProfile)r<z%s-%s-%srrversionrelease)itemrrKrrrzrr)$rrUrrVrWrYrZPACKAGES_WINDOWrdrZPACKAGES_WINDOW_DESC1r_rZPACKAGES_WINDOW_DESC2packagesButtonrZPACKAGES_WINDOW_UNCHECKZ CheckboxTree packageListZPACKAGES_WINDOW_PKGLISTpwinScalescalerrrrr ZgetInstalledPackageListrrr[rrrr^) rerrUrWrfrrr<packagerrrrhEsV              zPackagesWindow.__init__cCs4|jt|d|d|j|jdSNg?rrrintrrrrreamounttotalrrrsetScale{s zPackagesWindow.setScalecCsD|j|j_|j}|jjD]}|d|vr |jj|q dS)Nrr)rrrUincludePackagesrZ getSelectionselectedPackagesr)reZ selectionpkgrrrrks    zPackagesWindow.saveResultscCs6td|j|j}|j|}|dkr2dS|Srlrorurrrrws   zPackagesWindow.runN)rDrErFrrrhrrkrwrrrrrBs 6rc@s(eZdZdZddZddZddZdS) SendWindowcCs||_||_tj}t|ttdd}t|ddtt }| |ddt |tt dftt dfttdfg|_|j |jddddd ||_dS) Nr rJrrKrrrr)rrUrrVrWrYrZ SEND_WINDOWrZSEND_WINDOW_DESCr_r[rrrr^rdrerrUrWrfrrrrrhs     zSendWindow.__init__cCsdSrirrjrrrrkszSendWindow.saveResultscCs6td|j|j}|j|}|dkr2dS|Srlrorurrrrws   zSendWindow.runNrxrrrrrsrc@s0eZdZdZddZddZddZddZd S) SendingWindowcCsP||_||_tj}t|ttdd|_t dd|_ |j |j dddS)Nr rrr) rrUrrVrWrYrZSENDING_WINDOWrrrr_)rerrUrWrrrrhs  zSendingWindow.__init__cCstd|j|j|jd}zPtdt|jj t j |jj |jj |jj|jj d}|j}t|d}Wntjytd}t|jtd|jYntjytd}t|jtd|jYntjytd}t|jtd|jYntjyNtd}t|jtd|jYnJtjynt|jtYn*tjtt|jtdYn0t |st|jtd|dd t |_!|d d |jj"rVzt #||jj$Wn`tjy,td}t|jtd |jYn*tjtt|jtd Yn0|d d |jj%rzt &||jj'Wn`tjytd}t|jtd|jYn*tjtt|jtdYn0d}z t()}Wn*tjyt|jtdYn0t *|zt +\|j_,|j_-WnFt.ytd}t/|jtdt0t1f|jd|j_2Yn0t 3|d d |j4||j_5dS)Nrmz other is %s)rrIr zProblem registering system: zProblem registering system.z&Problem writing out system id to disk.rzrJz"Problem sending hardware profile: z!Problem sending hardware profile.r|zProblem sending package list: zProblem sending package list.z%Could not open %s %s is not enabled. rK)6rprqrrrrrrstrrUrrZregisterSystem2rrrZrawDictrrr9r#r;r%rarZRhnUuidUniquenessErrorZInsuffMgmntEntsErrorZRegistrationDeniedErrorZActivationKeyUsageLimitErrorZACT_KEY_USAGE_LIMIT_ERRORZ log_exceptionZ writeSystemIdrZ getOemInfooemInforZ sendHardwarerrZ sendPackagesrr ZupdateLoginInfoZ sendVirtInfoZ pluginEnablepm_plugin_presentpm_plugin_conf_changedIOErrorr'rrpm_plugin_conf_errorZspawnRhnCheckForUIrreg_info)rerZsystemIdrAZlirrrrws                          zSendingWindow.runcCsdSrirrjrrrrk.szSendingWindow.saveResultscCs4|jt|d|d|j|jdSrrrrrrr1s zSendingWindow.setScaleN)rDrErFrrrhrwrkrrrrrrs  krc@s(eZdZdZddZddZddZdS) FinishWindowcCs||_||_tj}t|ttdd}t|ddtt }| |ddt |tt ddfg|_ |j |j ddddd||_dS) Nr rJr ZFinishrKrr)rrUrrVrWrYrZ FINISH_WINDOWrZFINISH_WINDOW_TEXT_TUIr_r[rar^rdrrrrrh:s  zFinishWindow.__init__cCsdSrirrjrrrrkMszFinishWindow.saveResultscCs6td|j|j}|j|}|dkr2dS|SrlrorurrrrwQs   zFinishWindow.runNrxrrrrr7src@s(eZdZdZddZddZddZdS) ReviewWindowc Cs||_||_|j|_tj}t|ttdd}d}|jj sJ|t d7}|jj r^|t d7}|jj rr|td7}|td7}t|jddkrd}|jdD]}||d7}qtdtdd}td |jj|t7}|||d7}t|jd dkrdd} |jd D]B} | d kr,| td7} n$| d krD| td7} n | | d7} q|t| d7}t|jd dkrd} |jd D]} | | 7} q|t| 7}t|dd|ddt|dd|_|j|jddddt|ttdfg|_ |j|j ddddd||_!dS)Nr rJrr)rrr(z%s zserver type is %s Z system_slotsZenterprise_entitledZvirtualization_hostZuniversal_activation_keyr{rrrRrKr)"rrUrrrVrWrYrZ REVIEW_WINDOWrZPM_PLUGIN_WARNINGrZPM_PLUGIN_CONF_ERRORrZPM_PLUGIN_CONF_CHANGEDZREVIEW_WINDOW_PROMPTrZCHANNELS_TITLEZ OK_CHANNELSrprq serverTypeZCHANNELS_SAT_WARNINGZ MANAGEMENTZVIRTZSLOTSZACTIVATION_KEYr`Z review_windowr_r[r!r^rd) rerrUrWrfZreview_window_textZ channel_listrrZ slot_listZslotZ act_key_listZact_keyrrrrh]s`         (zReviewWindow.__init__cCsdS)Nr rrjrrrrkszReviewWindow.saveResultscCsNtd|j|j}|j|}|dkr2d}|jjs>d}|jj rJd}|S)NrmrnrKr$) rprqrrrdrsr^rtrUrrrurrrrws  zReviewWindow.runNrxrrrrrZs?rc@s8eZdZdZddZddZddZdd Zd d Zd S) TuiZRHN_REGISTER_TUIc Cs||_||_tj|_|d|_zt|_ Wn"t j yVt |t dYn0tttttttttttttg |_td|_tdst ddtd|_!dS)NrzBYou specified an invalid protocol.Only https and http are allowed.rz'/usr/share/rhn/CLN-ORG-TRUSTED-SSL-CERT)"rrTrrVrW drawFramerrZ getServerTyperrZInvalidProtocolErrorr%rarrGrryrrrrrrrrrwindowsr r:rbrrr)rerrTrrrrhs6  z Tui.__init__cCs|jdSri)rr"rjrrr__del__sz Tui.__del__cCs4t|_|jddt|j|jttddS)NrzL / between elements | selects | next screen)ZCOPYRIGHT_TEXTZ welcomeTextrZ drawRootTextrZ pushHelpLinerarjrrrrsz Tui.drawFramec Cs~d|_d|_i|_ddddddddddd |_i|_d|jd<d|_d|_d|_d|_d|_ g|_ g|_ d|_ d|_ d|_dS)Nr) Zentitlement_numZregistration_numZ first_name last_nameZcompanyaddressZcitystatezipZcountryZregistration_numberr r)rrrZ productInforrrrrrrrrrrrjrrr initResultss4  zTui.initResultscCsntd|j|d}z>d}|t|jkrPd}z|j||j|}Wn0ty~|dkrn|d}n|d}Yq$Yn0td||}td||dkr|dkr|d}|dkr|j|jt jkr|d8}d}q$|d krW|j dS|d kr2td t |jdkrNW|j dSq$|d kr$|d}| d}q$W|j n |j 0dS) NrmZforwardrr z index is %sz Result %srZbackwardr$rzCaught a cancel requestrK) rprqrrr rrrrCrwrr"r8rk)re directionindexwinrvrrrrwsP       zTui.runN) rDrErFrrrhrrr rwrrrrrs !!rcCs|d}ttjtjttjdkrBtjddks>tjddkrBd}t}tdkrf|sft |t dt ||}| dS)Nrr z-tz--testz2You must run the RHN registration program as root.) signalSIGINTSIG_IGNrr#argvrZ SnackScreenrr%rarrw)rTrrUrrrmain5s r__main__)<osrr#gettext translationthasattrrrarrZup2date_clientrrrrr r r Zup2date_client.configr r ZrhnrZrhn.connectionsrZrhn.i18nrZup2date_client.pmPluginrrZup2date_client.rhnreg_constantsZinitLogrpZinitUp2dateConfigrrr%r'r8rB ExceptionrCrGryrrrrrrrrrrrrrrrDrrrrsd            /w)4))w~P$#S